gle-graphics-4.2.4c/config.os20000664000000000000000000000777011405446017014640 0ustar rootroot######################################################################## # # # GLE - Graphics Layout Engine # # # # Modified BSD License # # # # Copyright (C) 2009 GLE. # # # # Redistribution and use in source and binary forms, with or without # # modification, are permitted provided that the following conditions # # are met: # # # # 1. Redistributions of source code must retain the above copyright # # notice, this list of conditions and the following disclaimer. # # # # 2. Redistributions in binary form must reproduce the above # # copyright notice, this list of conditions and the following # # disclaimer in the documentation and/or other materials provided with # # the distribution. # # # # 3. The name of the author may not be used to endorse or promote # # products derived from this software without specific prior written # # permission. # # # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR # # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY # # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE # # GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER # # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN # # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # # ######################################################################## # # config file for gcc and make # tested with gcc 3.2.1 # INSTALL_DIR = D:/TOOLS/gle INSTALL_BIN = D:/TOOLS/bin PATH_SEP = / # additional files for the distribution ADD_DLLS = D:/GCC/3.2.1/usr/lib/gcc321m.dll ADD_DOCS = readme ../gle-refman/gle-manual.pdf ZIP = zip.exe # used by default; disable them CFLAGS = CPPFLAGS = LDFLAGS = # # OS/2 didn't like something like "\"..\"" # VERSION_INFO =-DGLEVN=\"$(VERSION_NUMBER).$(BUILD_NUMBER)\" # # latest version of GCC 3.3.5 has its own isnumber() function # HAS_ISNUMBER =-D_EMXGCC_HAS_ISNUMBER_ EXTRA_DEFS =-DHAVE_CONFIG_H -D__OS2__ -D__EMX__ -DOS2 -D__ST_MT_ERRNO__ $(WHICH_TEX) $(HAS_ISNUMBER) EXTRA_LIBS =-lpng -ltiff -lsocket EXTRA_INCS =-IX:/usr/include/ncurses OBJ_SUFF =o CC =g++ EXE_SUFF =.exe AR =ar.exe RM =rm.exe -f RMDIR =rm.exe -rf MKDIR =mkdir.exe CP =cp.exe -f MV =mv.exe CXXFLAGS =-s -O2 -Zmtd -Zcrtdll -Zexe -Zbin-files $(EXTRA_INCS) $(VERSION_INFO) $(EXTRA_DEFS) -DINSTALL_DIR=\"$(INSTALL_DIR)\" LINK_OPTS =-s -O2 -Zmtd -Zcrtdll -Zexe -Zbin-files -D__ST_MT_ERRNO__ # # other global defines # PROJECT_DIR = E:/Work/Projects/GLE/gle4 PROJECT_BINDIR = $(PROJECT_DIR)/build PROJECT_LIBDIR = $(PROJECT_BINDIR)/lib PROJECT_INCDIR = $(PROJECT_BINDIR)/include # # GLE_TOP does not need to be defined anymore during compile # GLE_TOP = $(PROJECT_BINDIR) gle-graphics-4.2.4c/configure0000775000000000000000000061030211726234333014646 0ustar rootroot#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.68 for gle-graphics 4.2.4c. # # Report bugs to . # # # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, # 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software # Foundation, Inc. # # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi " as_required="as_fn_return () { (exit \$1); } as_fn_success () { as_fn_return 0; } as_fn_failure () { as_fn_return 1; } as_fn_ret_success () { return 0; } as_fn_ret_failure () { return 1; } exitcode=0 as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : else exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 test \$(( 1 + 1 )) = 2 || exit 1" if (eval "$as_required") 2>/dev/null; then : as_have_required=yes else as_have_required=no fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. as_shell=$as_dir/$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : CONFIG_SHELL=$as_shell as_have_required=yes if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : break 2 fi fi done;; esac as_found=false done $as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : CONFIG_SHELL=$SHELL as_have_required=yes fi; } IFS=$as_save_IFS if test "x$CONFIG_SHELL" != x; then : # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV export CONFIG_SHELL case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec "$CONFIG_SHELL" $as_opts "$as_myself" ${1+"$@"} fi if test x$as_have_required = xno; then : $as_echo "$0: This script requires a shell more modern than all" $as_echo "$0: the shells that I found on your system." if test x${ZSH_VERSION+set} = xset ; then $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" $as_echo "$0: be upgraded to zsh 4.3.4 or later." else $as_echo "$0: Please tell bug-autoconf@gnu.org and $0: glx-general@lists.sourceforge.net about your system, $0: including any error possibly output before this $0: message. Then install a modern shell, or manually run $0: the script under such a shell if you do have one." fi exit 1 fi fi fi SHELL=${CONFIG_SHELL-/bin/sh} export SHELL # Unset more variables known to interfere with behavior of common tools. CLICOLOR_FORCE= GREP_OPTIONS= unset CLICOLOR_FORCE GREP_OPTIONS ## --------------------- ## ## M4sh Shell Functions. ## ## --------------------- ## # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_lineno_1=$LINENO as_lineno_1a=$LINENO as_lineno_2=$LINENO as_lineno_2a=$LINENO eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -p'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -p' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi else as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi if test -x / >/dev/null 2>&1; then as_test_x='test -x' else if ls -dL / >/dev/null 2>&1; then as_ls_L_option=L else as_ls_L_option= fi as_test_x=' eval sh -c '\'' if test -d "$1"; then test -d "$1/."; else case $1 in #( -*)set "./$1";; esac; case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( ???[sx]*):;;*)false;;esac;fi '\'' sh ' fi as_executable_p=$as_test_x # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" test -n "$DJDIR" || exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= # Identity of this package. PACKAGE_NAME='gle-graphics' PACKAGE_TARNAME='gle-graphics' PACKAGE_VERSION='4.2.4c' PACKAGE_STRING='gle-graphics 4.2.4c' PACKAGE_BUGREPORT='glx-general@lists.sourceforge.net' PACKAGE_URL='' ac_unique_file="src/gle/gle.cpp" # Factoring default headers for most tests. ac_includes_default="\ #include #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_SYS_STAT_H # include #endif #ifdef STDC_HEADERS # include # include #else # ifdef HAVE_STDLIB_H # include # endif #endif #ifdef HAVE_STRING_H # if !defined STDC_HEADERS && defined HAVE_MEMORY_H # include # endif # include #endif #ifdef HAVE_STRINGS_H # include #endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDINT_H # include #endif #ifdef HAVE_UNISTD_H # include #endif" ac_subst_vars='LTLIBOBJS LIBOBJS HAVE_EXTRA_FONTS QT_LDFLAGS QT_CPPFLAGS QT_LIBGLU_LIB QT_RPATH QT_CONFIG MAKE_AUTOPACKAGE GLE_VERSION GLE_INSTALL_BIN GLE_INSTALL_DATA LIBGLE_LDFLAGS LIBGLE_CPPFLAGS MANIP_LDFLAGS MANIP_LIBS SIMPLE_LDFLAGS SIMPLE_LIBS_DL SIMPLE_LIBS GLE_SNAPSHOT AP_CONFIG_ARGS MAKE_MANIP HAVE_RPATH HAVE_MINGW HAVE_CYGWIN HAVE_NOCYGWIN HAVE_WIN32 HAVE_FREEBSD HAVE_MAC HAVE_AUTOPACKAGE HAVE_LIBGLE_STATIC HAVE_LIBGLE_CPPFLAGS HAVE_LIBGLE HAVE_QT HAVE_NOSCRIPTS HAVE_CAIRO HAVE_LIBJPEG HAVE_LIBPNG HAVE_LIBTIFF HAVE_SOCKETS QMAKE_PROG POPPLER_LIBS POPPLER_CFLAGS cairo_LIBS cairo_CFLAGS LIBPNG_CONFIG libpng_LIBS libpng_CFLAGS XMKMF PKG_CONFIG_LIBDIR PKG_CONFIG_PATH PKG_CONFIG EGREP GREP CXXCPP host_os host_vendor host_cpu host build_os build_vendor build_cpu build MKDIR_P INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM OBJEXT EXEEXT ac_ct_CXX CPPFLAGS LDFLAGS CXXFLAGS CXX target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_URL PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL' ac_subst_files='' ac_user_opts=' enable_option_checking with_qt with_jpeg with_png with_tiff with_z with_cairo with_poppler with_manip with_debug with_warn with_win32 with_arch with_scripts with_libgle with_rpath with_extrafonts with_gnuwin32 with_staticlink with_autopackage with_apintern with_x ' ac_precious_vars='build_alias host_alias target_alias CXX CXXFLAGS LDFLAGS LIBS CPPFLAGS CCC CXXCPP PKG_CONFIG PKG_CONFIG_PATH PKG_CONFIG_LIBDIR XMKMF libpng_CFLAGS libpng_LIBS cairo_CFLAGS cairo_LIBS POPPLER_CFLAGS POPPLER_LIBS' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *=) ac_optarg= ;; *) ac_optarg=yes ;; esac # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) as_fn_error $? "unrecognized option: \`$ac_option' Try \`$0 --help' for more information" ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` as_fn_error $? "missing argument to $ac_option" fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe $as_echo "$as_me: WARNING: if you wanted to set the --build type, don't use --host. If a cross compiler is detected then cross compile mode will be used" >&2 elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || as_fn_error $? "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || as_fn_error $? "pwd does not report name of working directory" # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures gle-graphics 4.2.4c to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/gle-graphics] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF X features: --x-includes=DIR X include files are in DIR --x-libraries=DIR X library files are in DIR System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of gle-graphics 4.2.4c:";; esac cat <<\_ACEOF Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-qt=DIR where to find the Qt-4.1.x library (or yes/no) --with-jpeg=DIR where to find the jpeg library (or yes/no) --with-png=DIR where to find the png library (or yes/no) --with-tiff=DIR where to find the tiff library (or yes/no) --with-z=DIR where to find the z library (or yes/no) --with-cairo use the Cairo graphics library (yes/no) --with-poppler use the Poppler PDF library (yes/no) --with-manip build manip utility (yes/no) --with-debug compile in debug information (yes/no) --with-warn compile with all warnings enabled (yes/no) --with-win32 compile Windows binary (yes/no) --with-arch compile for a specific Mac OS architecture (or default/no) --with-scripts install scripts instead of executables (yes/no) --with-libgle build libgle (yes/no/static/both) --with-rpath build with rpath (or yes/no) --with-extrafonts include additional fonts (or yes/no) --with-gnuwin32 build with GnuWin32 libs (yes/no) --with-staticlink statically link bitmap libs (yes/no) --with-autopackage create autopackage package (yes/no) --with-apintern autopackage (internal use) (yes/no) --with-x use the X Window System Some influential environment variables: CXX C++ compiler command CXXFLAGS C++ compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory CXXCPP C++ preprocessor PKG_CONFIG path to pkg-config utility PKG_CONFIG_PATH directories to add to pkg-config's search path PKG_CONFIG_LIBDIR path overriding pkg-config's built-in search path XMKMF Path to xmkmf, Makefile generator for X Window System libpng_CFLAGS C compiler flags for libpng, overriding pkg-config libpng_LIBS linker flags for libpng, overriding pkg-config cairo_CFLAGS C compiler flags for cairo, overriding pkg-config cairo_LIBS linker flags for cairo, overriding pkg-config POPPLER_CFLAGS C compiler flags for POPPLER, overriding pkg-config POPPLER_LIBS linker flags for POPPLER, overriding pkg-config Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to . _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for guested configure. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF gle-graphics configure 4.2.4c generated by GNU Autoconf 2.68 Copyright (C) 2010 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi ## ------------------------ ## ## Autoconf initialization. ## ## ------------------------ ## # ac_fn_cxx_try_compile LINENO # ---------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_cxx_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_cxx_try_compile # ac_fn_cxx_try_cpp LINENO # ------------------------ # Try to preprocess conftest.$ac_ext, and return whether this succeeded. ac_fn_cxx_try_cpp () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || test ! -s conftest.err }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_cxx_try_cpp # ac_fn_cxx_check_header_mongrel LINENO HEADER VAR INCLUDES # --------------------------------------------------------- # Tests whether HEADER exists, giving a warning if it cannot be compiled using # the include files in INCLUDES and setting the cache variable VAR # accordingly. ac_fn_cxx_check_header_mongrel () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if eval \${$3+:} false; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } else # Is the header compilable? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 $as_echo_n "checking $2 usability... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_header_compiler=yes else ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 $as_echo "$ac_header_compiler" >&6; } # Is the header present? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 $as_echo_n "checking $2 presence... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <$2> _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : ac_header_preproc=yes else ac_header_preproc=no fi rm -f conftest.err conftest.i conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 $as_echo "$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_cxx_preproc_warn_flag in #(( yes:no: ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 $as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ;; no:yes:* ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 $as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 $as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 $as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 $as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ( $as_echo "## ------------------------------------------------ ## ## Report this to glx-general@lists.sourceforge.net ## ## ------------------------------------------------ ##" ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=\$ac_header_compiler" fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_cxx_check_header_mongrel # ac_fn_cxx_try_run LINENO # ------------------------ # Try to link conftest.$ac_ext, and return whether this succeeded. Assumes # that executables *can* be run. ac_fn_cxx_try_run () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then : ac_retval=0 else $as_echo "$as_me: program exited with status $ac_status" >&5 $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=$ac_status fi rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_cxx_try_run # ac_fn_cxx_check_header_compile LINENO HEADER VAR INCLUDES # --------------------------------------------------------- # Tests whether HEADER exists and can be compiled using the include files in # INCLUDES, setting the cache variable VAR accordingly. ac_fn_cxx_check_header_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_cxx_check_header_compile # ac_fn_c_find_uintX_t LINENO BITS VAR # ------------------------------------ # Finds an unsigned integer type with width BITS, setting cache variable VAR # accordingly. ac_fn_c_find_uintX_t () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for uint$2_t" >&5 $as_echo_n "checking for uint$2_t... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=no" # Order is important - never check a type that is potentially smaller # than half of the expected target width. for ac_type in uint$2_t 'unsigned int' 'unsigned long int' \ 'unsigned long long int' 'unsigned short int' 'unsigned char'; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default int main () { static int test_array [1 - 2 * !((($ac_type) -1 >> ($2 / 2 - 1)) >> ($2 / 2 - 1) == 3)]; test_array [0] = 0 ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : case $ac_type in #( uint$2_t) : eval "$3=yes" ;; #( *) : eval "$3=\$ac_type" ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if eval test \"x\$"$3"\" = x"no"; then : else break fi done fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_find_uintX_t # ac_fn_cxx_try_link LINENO # ------------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_cxx_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_cxx_try_link cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by gle-graphics $as_me 4.2.4c, which was generated by GNU Autoconf 2.68. Invocation command line was $ $0 $@ _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` 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 || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. $as_echo "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) as_fn_append ac_configure_args1 " '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done { ac_configure_args0=; unset ac_configure_args0;} { ac_configure_args1=; unset ac_configure_args1;} # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo $as_echo "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo $as_echo "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then $as_echo "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then $as_echo "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo cat confdefs.h echo fi test "$ac_signal" != 0 && $as_echo "$as_me: caught signal $ac_signal" $as_echo "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h $as_echo "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF #define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_URL "$PACKAGE_URL" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. ac_site_file1=NONE ac_site_file2=NONE if test -n "$CONFIG_SITE"; then # We do not want a PATH search for config.site. case $CONFIG_SITE in #(( -*) ac_site_file1=./$CONFIG_SITE;; */*) ac_site_file1=$CONFIG_SITE;; *) ac_site_file1=./$CONFIG_SITE;; esac elif test "x$prefix" != xNONE; then ac_site_file1=$prefix/share/config.site ac_site_file2=$prefix/etc/config.site else ac_site_file1=$ac_default_prefix/share/config.site ac_site_file2=$ac_default_prefix/etc/config.site fi for ac_site_file in "$ac_site_file1" "$ac_site_file2" do test "x$ac_site_file" = xNONE && continue if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 $as_echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See \`config.log' for more details" "$LINENO" 5; } fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 $as_echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 $as_echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 $as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 $as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 $as_echo "$as_me: former value: \`$ac_old_val'" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 $as_echo "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## ## -------------------- ## ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_config_headers="$ac_config_headers src/config.h" GLE_VERSION=4.2.4c ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test -z "$CXX"; then if test -n "$CCC"; then CXX=$CCC else if test -n "$ac_tool_prefix"; then for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CXX+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CXX"; then ac_cv_prog_CXX="$CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CXX=$ac_cv_prog_CXX if test -n "$CXX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 $as_echo "$CXX" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CXX" && break done fi if test -z "$CXX"; then ac_ct_CXX=$CXX for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CXX+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CXX"; then ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CXX="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CXX=$ac_cv_prog_ac_ct_CXX if test -n "$ac_ct_CXX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 $as_echo "$ac_ct_CXX" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CXX" && break done if test "x$ac_ct_CXX" = x; then CXX="g++" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CXX=$ac_ct_CXX fi fi fi fi # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C++ compiler works" >&5 $as_echo_n "checking whether the C++ compiler works... " >&6; } ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles if { { ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not # safe: cross compilers may not add the suffix if given an `-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. break;; * ) break;; esac done test "$ac_cv_exeext" = no && ac_cv_exeext= else ac_file='' fi if test -z "$ac_file"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "C++ compiler cannot create executables See \`config.log' for more details" "$LINENO" 5; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler default output file name" >&5 $as_echo_n "checking for C++ compiler default output file name... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 $as_echo "$ac_file" >&6; } ac_exeext=$ac_cv_exeext rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 $as_echo_n "checking for suffix of executables... " >&6; } if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of executables: cannot compile and link See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest conftest$ac_cv_exeext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 $as_echo "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { FILE *f = fopen ("conftest.out", "w"); return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF ac_clean_files="$ac_clean_files conftest.out" # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 $as_echo_n "checking whether we are cross compiling... " >&6; } if test "$cross_compiling" != yes; then { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if { ac_try='./conftest$ac_cv_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run C++ compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details" "$LINENO" 5; } fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 $as_echo "$cross_compiling" >&6; } rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 $as_echo_n "checking for suffix of object files... " >&6; } if ${ac_cv_objext+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of object files: cannot compile See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 $as_echo "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5 $as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } if ${ac_cv_cxx_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_cxx_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 $as_echo "$ac_cv_cxx_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GXX=yes else GXX= fi ac_test_CXXFLAGS=${CXXFLAGS+set} ac_save_CXXFLAGS=$CXXFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 $as_echo_n "checking whether $CXX accepts -g... " >&6; } if ${ac_cv_prog_cxx_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_cxx_werror_flag=$ac_cxx_werror_flag ac_cxx_werror_flag=yes ac_cv_prog_cxx_g=no CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_prog_cxx_g=yes else CXXFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : else ac_cxx_werror_flag=$ac_save_cxx_werror_flag CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_prog_cxx_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cxx_werror_flag=$ac_save_cxx_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 $as_echo "$ac_cv_prog_cxx_g" >&6; } if test "$ac_test_CXXFLAGS" = set; then CXXFLAGS=$ac_save_CXXFLAGS elif test $ac_cv_prog_cxx_g = yes; then if test "$GXX" = yes; then CXXFLAGS="-g -O2" else CXXFLAGS="-g" fi else if test "$GXX" = yes; then CXXFLAGS="-O2" else CXXFLAGS= fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu HAVE_SOCKETS=1 HAVE_LIBTIFF=0 HAVE_LIBPNG=0 HAVE_LIBJPEG=0 HAVE_X11=0 HAVE_CAIRO=0 HAVE_POPPLER=0 HAVE_NCURSES_H=0 HAVE_CURSES_H=0 HAVE_NOSCRIPTS=0 HAVE_QT=0 HAVE_AUTOPACKAGE=0 HAVE_LIBGLE=0 HAVE_LIBGLE_CPPFLAGS=0 HAVE_LIBGLE_STATIC=0 HAVE_MAC=0 HAVE_FREEBSD=0 HAVE_GNU_HURD=0 HAVE_LINUX=0 HAVE_WIN32=0 HAVE_NOCYGWIN=0 HAVE_CYGWIN=0 HAVE_MINGW=0 HAVE_LIBZ=0 HAVE_LIBGLU_H=0 QT_CONFIG="CONFIG += release" QT_RPATH= QT_LIBGLU_LIB= HAVE_STATIC_LIBPNG=0 HAVE_STATIC_LIBTIFF=0 HAVE_STATIC_LIBJPEG=0 HAVE_STATIC_LIBZ=0 HAVE_RPATH=0 QMAKE_PROG=none QMAKE_VERS=none MANIP_LIBS= MANIP_LDFLAGS= AP_CONFIG_ARGS= LIBGLE_CPPFLAGS= LIBGLE_LDFLAGS= EXTRA_LDFLAGS= EXTRA_LIBS= SIMPLE_LIBS_DL= # Check whether --with-qt was given. if test "${with_qt+set}" = set; then : withval=$with_qt; else with_qt=yes fi # Check whether --with-jpeg was given. if test "${with_jpeg+set}" = set; then : withval=$with_jpeg; else with_jpeg=yes fi # Check whether --with-png was given. if test "${with_png+set}" = set; then : withval=$with_png; else with_png=yes fi # Check whether --with-tiff was given. if test "${with_tiff+set}" = set; then : withval=$with_tiff; else with_tiff=yes fi # Check whether --with-z was given. if test "${with_z+set}" = set; then : withval=$with_z; else with_z=yes fi # Check whether --with-cairo was given. if test "${with_cairo+set}" = set; then : withval=$with_cairo; else with_cairo=yes fi # Check whether --with-poppler was given. if test "${with_poppler+set}" = set; then : withval=$with_poppler; else with_poppler=yes fi # Check whether --with-manip was given. if test "${with_manip+set}" = set; then : withval=$with_manip; else with_manip=yes fi # Check whether --with-debug was given. if test "${with_debug+set}" = set; then : withval=$with_debug; else with_debug=no fi # Check whether --with-warn was given. if test "${with_warn+set}" = set; then : withval=$with_warn; else with_warn=no fi # Check whether --with-win32 was given. if test "${with_win32+set}" = set; then : withval=$with_win32; else with_win32=no fi # Check whether --with-arch was given. if test "${with_arch+set}" = set; then : withval=$with_arch; else with_arch=default fi # Check whether --with-scripts was given. if test "${with_scripts+set}" = set; then : withval=$with_scripts; else with_scritps=no fi # Check whether --with-libgle was given. if test "${with_libgle+set}" = set; then : withval=$with_libgle; else with_libgle=no fi # Check whether --with-rpath was given. if test "${with_rpath+set}" = set; then : withval=$with_rpath; else with_rpath=yes fi # Check whether --with-extrafonts was given. if test "${with_extrafonts+set}" = set; then : withval=$with_extrafonts; else extrafonts=no fi # Check whether --with-gnuwin32 was given. if test "${with_gnuwin32+set}" = set; then : withval=$with_gnuwin32; else with_gnuwin32=no fi # Check whether --with-staticlink was given. if test "${with_staticlink+set}" = set; then : withval=$with_staticlink; else with_staticlink=def fi # Check whether --with-autopackage was given. if test "${with_autopackage+set}" = set; then : withval=$with_autopackage; else with_autopackage=no fi # Check whether --with-apintern was given. if test "${with_apintern+set}" = set; then : withval=$with_apintern; else with_apintern=no fi HAVE_EXTRA_FONTS=0 if test "x$extrafonts" != "xno"; then HAVE_EXTRA_FONTS=1 fi if test -f src/fonts/extrafonts.inf; then HAVE_EXTRA_FONTS=1 fi GLE_SNAPSHOT="" QT_CPPFLAGS=$CPPFLAGS QT_LDFLAGS=$LDFLAGS ac_aux_dir= for ac_dir in platform/autoconf "$srcdir"/platform/autoconf; do if test -f "$ac_dir/install-sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break elif test -f "$ac_dir/install.sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break elif test -f "$ac_dir/shtool"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/shtool install -c" break fi done if test -z "$ac_aux_dir"; then as_fn_error $? "cannot find install-sh, install.sh, or shtool in platform/autoconf \"$srcdir\"/platform/autoconf" "$LINENO" 5 fi # These three variables are undocumented and unsupported, # and are intended to be withdrawn in a future Autoconf release. # They can cause serious problems if a builder's source tree is in a directory # whose full name contains unusual characters. ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. # Reject install programs that cannot install multiple files. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 $as_echo_n "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if ${ac_cv_path_install+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. # Account for people who put trailing slashes in PATH elements. case $as_dir/ in #(( ./ | .// | /[cC]/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else rm -rf conftest.one conftest.two conftest.dir echo one > conftest.one echo two > conftest.two mkdir conftest.dir if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi fi done done ;; esac done IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 $as_echo "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 $as_echo_n "checking for a thread-safe mkdir -p... " >&6; } if test -z "$MKDIR_P"; then if ${ac_cv_path_mkdir+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in mkdir gmkdir; do for ac_exec_ext in '' $ac_executable_extensions; do { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( 'mkdir (GNU coreutils) '* | \ 'mkdir (coreutils) '* | \ 'mkdir (fileutils) '4.1*) ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext break 3;; esac done done done IFS=$as_save_IFS fi test -d ./--version && rmdir ./--version if test "${ac_cv_path_mkdir+set}" = set; then MKDIR_P="$ac_cv_path_mkdir -p" else # As a last resort, use the slow shell script. Don't cache a # value for MKDIR_P within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. MKDIR_P="$ac_install_sh -d" fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 $as_echo "$MKDIR_P" >&6; } # Make sure we can run config.sub. $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 $as_echo_n "checking build system type... " >&6; } if ${ac_cv_build+:} false; then : $as_echo_n "(cached) " >&6 else ac_build_alias=$build_alias test "x$ac_build_alias" = x && ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` test "x$ac_build_alias" = x && as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 $as_echo "$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; *) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; esac build=$ac_cv_build ac_save_IFS=$IFS; IFS='-' set x $ac_cv_build shift build_cpu=$1 build_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: build_os=$* IFS=$ac_save_IFS case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 $as_echo_n "checking host system type... " >&6; } if ${ac_cv_host+:} false; then : $as_echo_n "(cached) " >&6 else if test "x$host_alias" = x; then ac_cv_host=$ac_cv_build else ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 $as_echo "$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; *) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; esac host=$ac_cv_host ac_save_IFS=$IFS; IFS='-' set x $ac_cv_host shift host_cpu=$1 host_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: host_os=$* IFS=$ac_save_IFS case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5 $as_echo_n "checking how to run the C++ preprocessor... " >&6; } if test -z "$CXXCPP"; then if ${ac_cv_prog_CXXCPP+:} false; then : $as_echo_n "(cached) " >&6 else # Double quotes because CXXCPP needs to be expanded for CXXCPP in "$CXX -E" "/lib/cpp" do ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : break fi done ac_cv_prog_CXXCPP=$CXXCPP fi CXXCPP=$ac_cv_prog_CXXCPP else ac_cv_prog_CXXCPP=$CXXCPP fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5 $as_echo "$CXXCPP" >&6; } ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C++ preprocessor \"$CXXCPP\" fails sanity check See \`config.log' for more details" "$LINENO" 5; } fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 $as_echo_n "checking for grep that handles long lines and -e... " >&6; } if ${ac_cv_path_GREP+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$GREP"; then ac_path_GREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in grep ggrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in *GNU*) ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'GREP' >> "conftest.nl" "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_GREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_GREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_GREP"; then as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_GREP=$GREP fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 $as_echo "$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 $as_echo_n "checking for egrep... " >&6; } if ${ac_cv_path_EGREP+:} false; then : $as_echo_n "(cached) " >&6 else if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 then ac_cv_path_EGREP="$GREP -E" else if test -z "$EGREP"; then ac_path_EGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in egrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in *GNU*) ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'EGREP' >> "conftest.nl" "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_EGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_EGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_EGREP"; then as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_EGREP=$EGREP fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 $as_echo "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 $as_echo_n "checking for ANSI C header files... " >&6; } if ${ac_cv_header_stdc+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_header_stdc=yes else ac_cv_header_stdc=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : : else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) return 2; return 0; } _ACEOF if ac_fn_cxx_try_run "$LINENO"; then : else ac_cv_header_stdc=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 $as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then $as_echo "#define STDC_HEADERS 1" >>confdefs.h fi # On IRIX 5.3, sys/types and inttypes.h are conflicting. for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ inttypes.h stdint.h unistd.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_cxx_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default " if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in sys/param.h do : ac_fn_cxx_check_header_mongrel "$LINENO" "sys/param.h" "ac_cv_header_sys_param_h" "$ac_includes_default" if test "x$ac_cv_header_sys_param_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_SYS_PARAM_H 1 _ACEOF fi done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5 $as_echo_n "checking whether byte ordering is bigendian... " >&6; } if ${ac_cv_c_bigendian+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_c_bigendian=unknown # See if we're dealing with a universal compiler. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifndef __APPLE_CC__ not a universal capable compiler #endif typedef int dummy; _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : # Check for potential -arch flags. It is not universal unless # there are at least two -arch flags with different values. ac_arch= ac_prev= for ac_word in $CC $CFLAGS $CPPFLAGS $LDFLAGS; do if test -n "$ac_prev"; then case $ac_word in i?86 | x86_64 | ppc | ppc64) if test -z "$ac_arch" || test "$ac_arch" = "$ac_word"; then ac_arch=$ac_word else ac_cv_c_bigendian=universal break fi ;; esac ac_prev= elif test "x$ac_word" = "x-arch"; then ac_prev=arch fi done fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_c_bigendian = unknown; then # See if sys/param.h defines the BYTE_ORDER macro. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { #if ! (defined BYTE_ORDER && defined BIG_ENDIAN \ && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \ && LITTLE_ENDIAN) bogus endian macros #endif ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : # It does; now see whether it defined to BIG_ENDIAN or not. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { #if BYTE_ORDER != BIG_ENDIAN not big endian #endif ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_c_bigendian=yes else ac_cv_c_bigendian=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi if test $ac_cv_c_bigendian = unknown; then # See if defines _LITTLE_ENDIAN or _BIG_ENDIAN (e.g., Solaris). cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { #if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN) bogus endian macros #endif ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : # It does; now see whether it defined to _BIG_ENDIAN or not. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { #ifndef _BIG_ENDIAN not big endian #endif ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_c_bigendian=yes else ac_cv_c_bigendian=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi if test $ac_cv_c_bigendian = unknown; then # Compile a test program. if test "$cross_compiling" = yes; then : # Try to guess by grepping values from an object file. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ short int ascii_mm[] = { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; short int ascii_ii[] = { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 }; int use_ascii (int i) { return ascii_mm[i] + ascii_ii[i]; } short int ebcdic_ii[] = { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 }; short int ebcdic_mm[] = { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 }; int use_ebcdic (int i) { return ebcdic_mm[i] + ebcdic_ii[i]; } extern int foo; int main () { return use_ascii (foo) == use_ebcdic (foo); ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : if grep BIGenDianSyS conftest.$ac_objext >/dev/null; then ac_cv_c_bigendian=yes fi if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then if test "$ac_cv_c_bigendian" = unknown; then ac_cv_c_bigendian=no else # finding both strings is unlikely to happen, but who knows? ac_cv_c_bigendian=unknown fi fi fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default int main () { /* Are we little or big endian? From Harbison&Steele. */ union { long int l; char c[sizeof (long int)]; } u; u.l = 1; return u.c[sizeof (long int) - 1] == 1; ; return 0; } _ACEOF if ac_fn_cxx_try_run "$LINENO"; then : ac_cv_c_bigendian=no else ac_cv_c_bigendian=yes fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian" >&5 $as_echo "$ac_cv_c_bigendian" >&6; } case $ac_cv_c_bigendian in #( yes) $as_echo "#define WORDS_BIGENDIAN 1" >>confdefs.h ;; #( no) ;; #( universal) $as_echo "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h ;; #( *) as_fn_error $? "unknown endianness presetting ac_cv_c_bigendian=no (or yes) will help" "$LINENO" 5 ;; esac ac_fn_c_find_uintX_t "$LINENO" "16" "ac_cv_c_uint16_t" case $ac_cv_c_uint16_t in #( no|yes) ;; #( *) cat >>confdefs.h <<_ACEOF #define uint16_t $ac_cv_c_uint16_t _ACEOF ;; esac if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_PKG_CONFIG+:} false; then : $as_echo_n "(cached) " >&6 else case $PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi PKG_CONFIG=$ac_cv_path_PKG_CONFIG if test -n "$PKG_CONFIG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 $as_echo "$PKG_CONFIG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_path_PKG_CONFIG"; then ac_pt_PKG_CONFIG=$PKG_CONFIG # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_ac_pt_PKG_CONFIG+:} false; then : $as_echo_n "(cached) " >&6 else case $ac_pt_PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG if test -n "$ac_pt_PKG_CONFIG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 $as_echo "$ac_pt_PKG_CONFIG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_pt_PKG_CONFIG" = x; then PKG_CONFIG="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac PKG_CONFIG=$ac_pt_PKG_CONFIG fi else PKG_CONFIG="$ac_cv_path_PKG_CONFIG" fi fi if test -n "$PKG_CONFIG"; then _pkg_min_version=0.9.0 { $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 $as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; } if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } PKG_CONFIG="" fi fi if test "x$with_rpath" != "xno"; then HAVE_RPATH=1 fi if test "x$with_gnuwin32" != "xno"; then with_win32=yes CPPFLAGS="-I$with_gnuwin32/include $CPPFLAGS" CXXFLAGS="-I$with_gnuwin32/include $CXXFLAGS" LDFLAGS="-L$with_gnuwin32/lib $LDFLAGS" CFLAGS="-I$with_gnuwin32/include $CFLAGS" if test "x$with_staticlink" = "xdef"; then with_staticlink=yes fi fi if test "x$with_win32" != "xno"; then HAVE_WIN32=1 fi USE_ARCH=no case $host in *-*-cygwin*) $as_echo "#define __CYGWIN__ 1" >>confdefs.h HAVE_CYGWIN=1 ;; *-*-mingw*) $as_echo "#define __CYGWIN__ 1" >>confdefs.h HAVE_CYGWIN=1 HAVE_MINGW=1 ;; x86_64-apple-*) if test "x$with_arch" = "xdefault"; then USE_ARCH=i386 fi ;; esac if test "x$with_arch" != "xdefault"; then USE_ARCH=$with_arch fi if test "x$USE_ARCH" != "xno"; then CPPFLAGS="-arch $USE_ARCH $CPPFLAGS" CXXFLAGS="-arch $USE_ARCH $CXXFLAGS" LDFLAGS="-arch $USE_ARCH $LDFLAGS" CFLAGS="-arch $USE_ARCH $CFLAGS" fi if test "x$HAVE_CYGWIN" = "x1"; then if test "x$HAVE_WIN32" = "x1"; then HAVE_CYGWIN=0 HAVE_NOCYGWIN=1 fi fi if test "x$HAVE_NOCYGWIN" = "x1"; then if test "x$with_gnuwin32" = "xno"; then with_png=no with_jpeg=no with_tiff=no with_z=no fi fi if test "x$HAVE_WIN32" != "x1"; then $as_echo "#define __UNIX__ 1" >>confdefs.h # MacOS should also define __UNIX__ else $as_echo "#define __WIN32__ 1" >>confdefs.h $as_echo "#define __NOCYGWIN__ 1" >>confdefs.h CPPFLAGS="-mno-cygwin -mthreads -mms-bitfields -march=i386 $CPPFLAGS" CXXFLAGS="-mno-cygwin -mthreads -mms-bitfields -march=i386 $CXXFLAGS" LDFLAGS="-mno-cygwin -mthreads -mms-bitfields -march=i386 $LDFLAGS" CFLAGS="-mno-cygwin -mthreads -mms-bitfields -march=i386 $CFLAGS" with_manip=no with_x=no fi _CPPFLAGS_INI=$CPPFLAGS _CXXFLAGS_INI=$CXXFLAGS _LDFLAGS_INI=$LDFLAGS _LIBS_INI=$LIBS SIMPLE_LDFLAGS=$LDFLAGS SIMPLE_LIBS=$LIBS case $host in *-apple*) HAVE_MAC=1 ;; *-freebsd*) HAVE_FREEBSD=1 ;; *-linux*) HAVE_LINUX=1 ;; *-gnu*) HAVE_GNU_HURD=1 ;; esac if test "x$HAVE_MAC" = "x1"; then $as_echo "#define __MACOS__ 1" >>confdefs.h HAVE_RPATH=0 fi if test "x$HAVE_FREEBSD" = "x1"; then $as_echo "#define __FREEBSD__ 1" >>confdefs.h fi if test "x$HAVE_LINUX" = "x1"; then $as_echo "#define __LINUX__ 1" >>confdefs.h fi if test "x$HAVE_GNU_HURD" = "x1"; then $as_echo "#define __GNU_HURD__ 1" >>confdefs.h fi if test "$with_scripts" != yes; then case $host in *-*-cygwin*|*-*-linux*|*-*-mingw*|*-*-kfreebsd*) HAVE_NOSCRIPTS=1 ;; esac if test "x$HAVE_MAC" = "x1"; then HAVE_NOSCRIPTS=1 fi if test "x$HAVE_FREEBSD" = "x1"; then HAVE_NOSCRIPTS=1 fi if test "x$HAVE_LINUX" = "x1"; then HAVE_NOSCRIPTS=1 fi if test "x$HAVE_GNU_HURD" = "x1"; then HAVE_NOSCRIPTS=1 fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for X" >&5 $as_echo_n "checking for X... " >&6; } # Check whether --with-x was given. if test "${with_x+set}" = set; then : withval=$with_x; fi # $have_x is `yes', `no', `disabled', or empty when we do not yet know. if test "x$with_x" = xno; then # The user explicitly disabled X. have_x=disabled else case $x_includes,$x_libraries in #( *\'*) as_fn_error $? "cannot use X directory names containing '" "$LINENO" 5;; #( *,NONE | NONE,*) if ${ac_cv_have_x+:} false; then : $as_echo_n "(cached) " >&6 else # One or both of the vars are not set, and there is no cached value. ac_x_includes=no ac_x_libraries=no rm -f -r conftest.dir if mkdir conftest.dir; then cd conftest.dir cat >Imakefile <<'_ACEOF' incroot: @echo incroot='${INCROOT}' usrlibdir: @echo usrlibdir='${USRLIBDIR}' libdir: @echo libdir='${LIBDIR}' _ACEOF if (export CC; ${XMKMF-xmkmf}) >/dev/null 2>/dev/null && test -f Makefile; then # GNU make sometimes prints "make[1]: Entering ...", which would confuse us. for ac_var in incroot usrlibdir libdir; do eval "ac_im_$ac_var=\`\${MAKE-make} $ac_var 2>/dev/null | sed -n 's/^$ac_var=//p'\`" done # Open Windows xmkmf reportedly sets LIBDIR instead of USRLIBDIR. for ac_extension in a so sl dylib la dll; do if test ! -f "$ac_im_usrlibdir/libX11.$ac_extension" && test -f "$ac_im_libdir/libX11.$ac_extension"; then ac_im_usrlibdir=$ac_im_libdir; break fi done # Screen out bogus values from the imake configuration. They are # bogus both because they are the default anyway, and because # using them would break gcc on systems where it needs fixed includes. case $ac_im_incroot in /usr/include) ac_x_includes= ;; *) test -f "$ac_im_incroot/X11/Xos.h" && ac_x_includes=$ac_im_incroot;; esac case $ac_im_usrlibdir in /usr/lib | /usr/lib64 | /lib | /lib64) ;; *) test -d "$ac_im_usrlibdir" && ac_x_libraries=$ac_im_usrlibdir ;; esac fi cd .. rm -f -r conftest.dir fi # Standard set of common directories for X headers. # Check X11 before X11Rn because it is often a symlink to the current release. ac_x_header_dirs=' /usr/X11/include /usr/X11R7/include /usr/X11R6/include /usr/X11R5/include /usr/X11R4/include /usr/include/X11 /usr/include/X11R7 /usr/include/X11R6 /usr/include/X11R5 /usr/include/X11R4 /usr/local/X11/include /usr/local/X11R7/include /usr/local/X11R6/include /usr/local/X11R5/include /usr/local/X11R4/include /usr/local/include/X11 /usr/local/include/X11R7 /usr/local/include/X11R6 /usr/local/include/X11R5 /usr/local/include/X11R4 /usr/X386/include /usr/x386/include /usr/XFree86/include/X11 /usr/include /usr/local/include /usr/unsupported/include /usr/athena/include /usr/local/x11r5/include /usr/lpp/Xamples/include /usr/openwin/include /usr/openwin/share/include' if test "$ac_x_includes" = no; then # Guess where to find include files, by looking for Xlib.h. # First, try using that file with no special directory specified. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : # We can compile using X headers with no special include directory. ac_x_includes= else for ac_dir in $ac_x_header_dirs; do if test -r "$ac_dir/X11/Xlib.h"; then ac_x_includes=$ac_dir break fi done fi rm -f conftest.err conftest.i conftest.$ac_ext fi # $ac_x_includes = no if test "$ac_x_libraries" = no; then # Check for the libraries. # See if we find them without any special options. # Don't add to $LIBS permanently. ac_save_LIBS=$LIBS LIBS="-lX11 $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { XrmInitialize () ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : LIBS=$ac_save_LIBS # We can link X programs with no special library path. ac_x_libraries= else LIBS=$ac_save_LIBS for ac_dir in `$as_echo "$ac_x_includes $ac_x_header_dirs" | sed s/include/lib/g` do # Don't even attempt the hair of trying to link an X program! for ac_extension in a so sl dylib la dll; do if test -r "$ac_dir/libX11.$ac_extension"; then ac_x_libraries=$ac_dir break 2 fi done done fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi # $ac_x_libraries = no case $ac_x_includes,$ac_x_libraries in #( no,* | *,no | *\'*) # Didn't find X, or a directory has "'" in its name. ac_cv_have_x="have_x=no";; #( *) # Record where we found X for the cache. ac_cv_have_x="have_x=yes\ ac_x_includes='$ac_x_includes'\ ac_x_libraries='$ac_x_libraries'" esac fi ;; #( *) have_x=yes;; esac eval "$ac_cv_have_x" fi # $with_x != no if test "$have_x" != yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_x" >&5 $as_echo "$have_x" >&6; } no_x=yes else # If each of the values was on the command line, it overrides each guess. test "x$x_includes" = xNONE && x_includes=$ac_x_includes test "x$x_libraries" = xNONE && x_libraries=$ac_x_libraries # Update the cache value to reflect the command line values. ac_cv_have_x="have_x=yes\ ac_x_includes='$x_includes'\ ac_x_libraries='$x_libraries'" { $as_echo "$as_me:${as_lineno-$LINENO}: result: libraries $x_libraries, headers $x_includes" >&5 $as_echo "libraries $x_libraries, headers $x_includes" >&6; } fi if test "$with_x" != no; then if test "x$x_libraries" = "x"; then x_libraries=. fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for XOpenDisplay in -lX11" >&5 $as_echo_n "checking for XOpenDisplay in -lX11... " >&6; } if ${ac_cv_lib_X11_XOpenDisplay+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lX11 -lXt -L$x_libraries $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char XOpenDisplay (); int main () { return XOpenDisplay (); ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_lib_X11_XOpenDisplay=yes else ac_cv_lib_X11_XOpenDisplay=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_X11_XOpenDisplay" >&5 $as_echo "$ac_cv_lib_X11_XOpenDisplay" >&6; } if test "x$ac_cv_lib_X11_XOpenDisplay" = xyes; then : HAVE_X11=1 if test "x$x_libraries" != "x"; then LDFLAGS="$LDFLAGS -L$x_libraries" fi if test "x$x_includes" != "x"; then CPPFLAGS="$CPPFLAGS -I$x_includes" fi LIBS="-lX11 $LIBS" fi fi if test "x$with_staticlink" = "xdef"; then with_staticlink=no fi if test "x$with_staticlink" != "xno"; then HAVE_STATIC_LIBPNG=1 HAVE_STATIC_LIBJPEG=1 HAVE_STATIC_LIBZ=1 HAVE_STATIC_LIBTIFF=1 fi if test "$with_z" != no; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for deflate in -lz" >&5 $as_echo_n "checking for deflate in -lz... " >&6; } if ${ac_cv_lib_z_deflate+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lz $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char deflate (); int main () { return deflate (); ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_lib_z_deflate=yes else ac_cv_lib_z_deflate=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_z_deflate" >&5 $as_echo "$ac_cv_lib_z_deflate" >&6; } if test "x$ac_cv_lib_z_deflate" = xyes; then : HAVE_LIBZ=1 fi if test "x$HAVE_LIBZ" = "x1"; then $as_echo "#define HAVE_LIBZ 1" >>confdefs.h if test "x$HAVE_STATIC_LIBZ" = "x1"; then LIBS="-Wl,-Bstatic -lz -Wl,-Bdynamic $LIBS" else LIBS="-lz $LIBS" fi fi fi SOCKET_LIB=0 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing socket" >&5 $as_echo_n "checking for library containing socket... " >&6; } if ${ac_cv_search_socket+:} false; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char socket (); int main () { return socket (); ; return 0; } _ACEOF for ac_lib in '' socket; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_search_socket=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if ${ac_cv_search_socket+:} false; then : break fi done if ${ac_cv_search_socket+:} false; then : else ac_cv_search_socket=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_socket" >&5 $as_echo "$ac_cv_search_socket" >&6; } ac_res=$ac_cv_search_socket if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing gethostbyname" >&5 $as_echo_n "checking for library containing gethostbyname... " >&6; } if ${ac_cv_search_gethostbyname+:} false; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char gethostbyname (); int main () { return gethostbyname (); ; return 0; } _ACEOF for ac_lib in '' nsl socket; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_search_gethostbyname=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if ${ac_cv_search_gethostbyname+:} false; then : break fi done if ${ac_cv_search_gethostbyname+:} false; then : else ac_cv_search_gethostbyname=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_gethostbyname" >&5 $as_echo "$ac_cv_search_gethostbyname" >&6; } ac_res=$ac_cv_search_gethostbyname if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi if test "$ac_cv_func_socket" = "yes" ; then if test "$ac_cv_func_gethostbyname" = "yes" ; then SOCKET_LIB=1 fi fi case $host in *-*-solaris*) if test "$SOCKET_LIB" = "0" ; then HAVE_SOCKETS=0 fi ;; *) esac if test "$HAVE_SOCKETS" = 1; then $as_echo "#define HAVE_SOCKETS 1" >>confdefs.h fi _CPPFLAGS=$CPPFLAGS _LDFLAGS=$LDFLAGS if test "$with_jpeg" != no; then if test -d "$with_jpeg"; then libjpeg_CPPFLAGS="-I$with_jpeg/include" libjpeg_LDFLAGS="-L$with_jpeg/lib" CPPFLAGS="$CPPFLAGS $libjpeg_CPPFLAGS" LDFLAGS="$LDFLAGS $libjpeg_LDFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for jpeg_destroy_decompress in -ljpeg" >&5 $as_echo_n "checking for jpeg_destroy_decompress in -ljpeg... " >&6; } if ${ac_cv_lib_jpeg_jpeg_destroy_decompress+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ljpeg -lm $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char jpeg_destroy_decompress (); int main () { return jpeg_destroy_decompress (); ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_lib_jpeg_jpeg_destroy_decompress=yes else ac_cv_lib_jpeg_jpeg_destroy_decompress=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_jpeg_jpeg_destroy_decompress" >&5 $as_echo "$ac_cv_lib_jpeg_jpeg_destroy_decompress" >&6; } if test "x$ac_cv_lib_jpeg_jpeg_destroy_decompress" = xyes; then : for ac_header in jpeglib.h do : ac_fn_cxx_check_header_mongrel "$LINENO" "jpeglib.h" "ac_cv_header_jpeglib_h" "$ac_includes_default" if test "x$ac_cv_header_jpeglib_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_JPEGLIB_H 1 _ACEOF HAVE_LIBJPEG=1 $as_echo "#define HAVE_LIBJPEG 1" >>confdefs.h else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: found jpeg library but not jpegio.h: make sure libjpeg development package is installed" >&5 $as_echo "$as_me: WARNING: found jpeg library but not jpegio.h: make sure libjpeg development package is installed" >&2;} fi done else CPPFLAGS=$_CPPFLAGS LDFLAGS=$_LDFLAGS fi fi if test "x$HAVE_LIBJPEG" = "x1"; then if test "x$HAVE_STATIC_LIBJPEG" = "x1"; then LIBS="-Wl,-Bstatic -ljpeg -Wl,-Bdynamic $LIBS" else LIBS="-ljpeg $LIBS" fi fi _CPPFLAGS=$CPPFLAGS _LDFLAGS=$LDFLAGS if test "$with_tiff" != no; then if test -d "$with_tiff"; then libtiff_CPPFLAGS="-I$with_tiff/include" libtiff_LDFLAGS="-L$with_tiff/lib" CPPFLAGS="$CPPFLAGS $libtiff_CPPFLAGS" LDFLAGS="$LDFLAGS $libtiff_LDFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for TIFFReadScanline in -ltiff" >&5 $as_echo_n "checking for TIFFReadScanline in -ltiff... " >&6; } if ${ac_cv_lib_tiff_TIFFReadScanline+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ltiff -lm $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char TIFFReadScanline (); int main () { return TIFFReadScanline (); ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_lib_tiff_TIFFReadScanline=yes else ac_cv_lib_tiff_TIFFReadScanline=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_tiff_TIFFReadScanline" >&5 $as_echo "$ac_cv_lib_tiff_TIFFReadScanline" >&6; } if test "x$ac_cv_lib_tiff_TIFFReadScanline" = xyes; then : for ac_header in tiffio.h do : ac_fn_cxx_check_header_mongrel "$LINENO" "tiffio.h" "ac_cv_header_tiffio_h" "$ac_includes_default" if test "x$ac_cv_header_tiffio_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_TIFFIO_H 1 _ACEOF HAVE_LIBTIFF=1 $as_echo "#define HAVE_LIBTIFF 1" >>confdefs.h else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: found TIFF library but not tiffio.h: make sure libtiff development package is installed" >&5 $as_echo "$as_me: WARNING: found TIFF library but not tiffio.h: make sure libtiff development package is installed" >&2;} CPPFLAGS=$_CPPFLAGS LDFLAGS=$_LDFLAGS fi done else CPPFLAGS=$_CPPFLAGS LDFLAGS=$_LDFLAGS fi fi if test "x$HAVE_LIBTIFF" = "x1"; then if test "x$HAVE_STATIC_LIBTIFF" = "x1"; then LIBS="-Wl,-Bstatic -ltiff -Wl,-Bdynamic $LIBS" else LIBS="-ltiff $LIBS" fi fi if test "$with_png" != no; then if test -d "$with_png"; then HAVE_LIBPNG=1 $as_echo "#define HAVE_LIBPNG 1" >>confdefs.h CPPFLAGS="$CPPFLAGS -I$with_png/include" LDFLAGS="$LDFLAGS -L$with_png/lib" if test "x$with_staticlink" = "xyes"; then LIBS="-Wl,-Bstatic -lpng -Wl,-Bdynamic $LIBS" else LIBS="-lpng $LIBS" fi else pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libpng" >&5 $as_echo_n "checking for libpng... " >&6; } if test -n "$libpng_CFLAGS"; then pkg_cv_libpng_CFLAGS="$libpng_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libpng >= 0\""; } >&5 ($PKG_CONFIG --exists --print-errors "libpng >= 0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_libpng_CFLAGS=`$PKG_CONFIG --cflags "libpng >= 0" 2>/dev/null` else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$libpng_LIBS"; then pkg_cv_libpng_LIBS="$libpng_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libpng >= 0\""; } >&5 ($PKG_CONFIG --exists --print-errors "libpng >= 0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_libpng_LIBS=`$PKG_CONFIG --libs "libpng >= 0" 2>/dev/null` else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then libpng_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "libpng >= 0" 2>&1` else libpng_PKG_ERRORS=`$PKG_CONFIG --print-errors "libpng >= 0" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$libpng_PKG_ERRORS" >&5 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } else libpng_CFLAGS=$pkg_cv_libpng_CFLAGS libpng_LIBS=$pkg_cv_libpng_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } HAVE_LIBPNG=1 $as_echo "#define HAVE_LIBPNG 1" >>confdefs.h if test "x$with_staticlink" = "xyes"; then LIBS="-Wl,-Bstatic $libpng_LIBS -Wl,-Bdynamic $LIBS" else LIBS="$libpng_LIBS $LIBS" fi CPPFLAGS="$libpng_CFLAGS $CPPFLAGS" LDFLAGS="$libpng_LDFLAGS $LDFLAGS" fi if test "x$HAVE_LIBPNG" = "x0"; then # Extract the first word of "libpng-config", so it can be a program name with args. set dummy libpng-config; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_LIBPNG_CONFIG+:} false; then : $as_echo_n "(cached) " >&6 else case $LIBPNG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_LIBPNG_CONFIG="$LIBPNG_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_LIBPNG_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi LIBPNG_CONFIG=$ac_cv_path_LIBPNG_CONFIG if test -n "$LIBPNG_CONFIG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBPNG_CONFIG" >&5 $as_echo "$LIBPNG_CONFIG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test -n "$LIBPNG_CONFIG"; then HAVE_LIBPNG=1 $as_echo "#define HAVE_LIBPNG 1" >>confdefs.h libpng_CPPFLAGS=`libpng-config --cflags` libpng_LDFLAGS=`libpng-config --ldflags` CPPFLAGS="$libpng_CPPFLAGS $CPPFLAGS" LDFLAGS="$libpng_LDFLAGS $LDFLAGS" if test "x$with_staticlink" = "xyes"; then LIBS="-Wl,-Bstatic -lpng -Wl,-Bdynamic $LIBS" else LIBS="-lpng $LIBS" fi fi fi fi fi if test "x$with_cairo" != "xno"; then pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for cairo" >&5 $as_echo_n "checking for cairo... " >&6; } if test -n "$cairo_CFLAGS"; then pkg_cv_cairo_CFLAGS="$cairo_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"cairo >= 1.10.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "cairo >= 1.10.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_cairo_CFLAGS=`$PKG_CONFIG --cflags "cairo >= 1.10.0" 2>/dev/null` else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$cairo_LIBS"; then pkg_cv_cairo_LIBS="$cairo_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"cairo >= 1.10.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "cairo >= 1.10.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_cairo_LIBS=`$PKG_CONFIG --libs "cairo >= 1.10.0" 2>/dev/null` else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then cairo_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "cairo >= 1.10.0" 2>&1` else cairo_PKG_ERRORS=`$PKG_CONFIG --print-errors "cairo >= 1.10.0" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$cairo_PKG_ERRORS" >&5 HAVE_CAIRO=0 elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } HAVE_CAIRO=0 else cairo_CFLAGS=$pkg_cv_cairo_CFLAGS cairo_LIBS=$pkg_cv_cairo_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } HAVE_CAIRO=1 { $as_echo "$as_me:${as_lineno-$LINENO}: result: cairo CFLAGS: $cairo_CFLAGS" >&5 $as_echo " cairo CFLAGS: $cairo_CFLAGS" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: cairo LIBS: $cairo_LIBS" >&5 $as_echo " cairo LIBS: $cairo_LIBS" >&6; } if test "x$with_staticlink" = "xyes"; then LIBS="-Wl,-Bstatic $cairo_LIBS -Wl,-Bdynamic $LIBS" else LIBS="$cairo_LIBS $LIBS" fi CPPFLAGS="$cairo_CFLAGS $CPPFLAGS" LDFLAGS="$cairo_LDFLAGS $LDFLAGS" fi fi if test "x$HAVE_CAIRO" = "x1"; then if test "x$HAVE_WIN32" = "x1"; then if test "x$with_staticlink" = "xyes"; then EXTRA_LDFLAGS="$EXTRA_LDFLAGS -mwindows" EXTRA_LIBS="$EXTRA_LIBS -lmsimg32" fi fi fi if test "x$HAVE_CAIRO" = "x1"; then if test "x$with_poppler" != "xno"; then pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for POPPLER" >&5 $as_echo_n "checking for POPPLER... " >&6; } if test -n "$POPPLER_CFLAGS"; then pkg_cv_POPPLER_CFLAGS="$POPPLER_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"poppler-glib >= 0.10.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "poppler-glib >= 0.10.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_POPPLER_CFLAGS=`$PKG_CONFIG --cflags "poppler-glib >= 0.10.0" 2>/dev/null` else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$POPPLER_LIBS"; then pkg_cv_POPPLER_LIBS="$POPPLER_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"poppler-glib >= 0.10.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "poppler-glib >= 0.10.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_POPPLER_LIBS=`$PKG_CONFIG --libs "poppler-glib >= 0.10.0" 2>/dev/null` else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then POPPLER_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "poppler-glib >= 0.10.0" 2>&1` else POPPLER_PKG_ERRORS=`$PKG_CONFIG --print-errors "poppler-glib >= 0.10.0" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$POPPLER_PKG_ERRORS" >&5 HAVE_POPPLER=0 elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } HAVE_POPPLER=0 else POPPLER_CFLAGS=$pkg_cv_POPPLER_CFLAGS POPPLER_LIBS=$pkg_cv_POPPLER_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } HAVE_POPPLER=1 { $as_echo "$as_me:${as_lineno-$LINENO}: result: poppler CFLAGS: $POPPLER_CFLAGS" >&5 $as_echo " poppler CFLAGS: $POPPLER_CFLAGS" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: poppler LIBS: $POPPLER_LIBS" >&5 $as_echo " poppler LIBS: $POPPLER_LIBS" >&6; } if test "x$with_staticlink" = "xyes"; then LIBS="-Wl,-Bstatic $POPPLER_LIBS -Wl,-Bdynamic $LIBS" else LIBS="$POPPLER_LIBS $LIBS" fi CPPFLAGS="$POPPLER_CFLAGS $CPPFLAGS" LDFLAGS="$POPPLER_LDFLAGS $LDFLAGS" fi fi fi QT4VER="?" QMAKE_PROG="none" if test "x$with_qt" != "xno"; then if test "x$with_qt" = "xyes"; then if test "x$PKG_CONFIG" != "x"; then QT4LOC=`$PKG_CONFIG QtCore --variable=exec_prefix` if test -x $QT4LOC/bin/qmake; then if $PKG_CONFIG QtCore --atleast-version 4.1.1; then with_qt=$QT4LOC QT4VER=`$PKG_CONFIG QtCore --modversion` fi fi fi fi if test "x$with_qt" = "xyes"; then if test -x /opt/qt4/bin/qmake; then with_qt=/opt/qt4 fi if test -x /usr/lib/qt4/bin/qmake; then with_qt=/usr/lib/qt4 fi # Extract the first word of "qmake-qt4", so it can be a program name with args. set dummy qmake-qt4; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_QMAKE_PROG+:} false; then : $as_echo_n "(cached) " >&6 else case $QMAKE_PROG in [\\/]* | ?:[\\/]*) ac_cv_path_QMAKE_PROG="$QMAKE_PROG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_QMAKE_PROG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_QMAKE_PROG" && ac_cv_path_QMAKE_PROG="none" ;; esac fi QMAKE_PROG=$ac_cv_path_QMAKE_PROG if test -n "$QMAKE_PROG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $QMAKE_PROG" >&5 $as_echo "$QMAKE_PROG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test "x$with_qt" != "xyes"; then QTDIR=$with_qt if test -x $with_qt/bin/qmake; then QMAKE_PROG=$with_qt/bin/qmake fi if test -x $with_qt/bin/qmake-qt4; then QMAKE_PROG=$with_qt/bin/qmake-qt4 fi if test -x $with_qt/bin/qmake.exe; then QMAKE_PROG=$with_qt/bin/qmake.exe fi if test "x$QMAKE_PROG" = "xnone"; then for ac_prog in qmake-qt4 qmake do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_QMAKE_PROG+:} false; then : $as_echo_n "(cached) " >&6 else case $QMAKE_PROG in [\\/]* | ?:[\\/]*) ac_cv_path_QMAKE_PROG="$QMAKE_PROG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_dummy="$QTDIR/bin:$PATH" for as_dir in $as_dummy do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_QMAKE_PROG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi QMAKE_PROG=$ac_cv_path_QMAKE_PROG if test -n "$QMAKE_PROG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $QMAKE_PROG" >&5 $as_echo "$QMAKE_PROG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$QMAKE_PROG" && break done test -n "$QMAKE_PROG" || QMAKE_PROG="none" fi fi if test "x$QMAKE_PROG" != "xnone"; then HAVE_QT=1 QMAKE_VERS=`$QMAKE_PROG -v | tail -n 1` fi for ac_header in GL/glu.h do : ac_fn_cxx_check_header_mongrel "$LINENO" "GL/glu.h" "ac_cv_header_GL_glu_h" "$ac_includes_default" if test "x$ac_cv_header_GL_glu_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_GL_GLU_H 1 _ACEOF $as_echo "#define HAVE_LIBGLU_H 1" >>confdefs.h fi done { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gluLookAt in -lGLU" >&5 $as_echo_n "checking for gluLookAt in -lGLU... " >&6; } if ${ac_cv_lib_GLU_gluLookAt+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lGLU $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char gluLookAt (); int main () { return gluLookAt (); ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_lib_GLU_gluLookAt=yes else ac_cv_lib_GLU_gluLookAt=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_GLU_gluLookAt" >&5 $as_echo "$ac_cv_lib_GLU_gluLookAt" >&6; } if test "x$ac_cv_lib_GLU_gluLookAt" = xyes; then : QT_LIBGLU_LIB=-lGLU fi fi if test "x$HAVE_RPATH" != "x0"; then QT_RPATH="-Wl,-rpath,\\\\\\\$\\\$ORIGIN/../lib" fi if test "x$HAVE_QT" != "x0"; then if test "x$with_libgle" != "xstatic"; then if test "x$with_libgle" != "xboth"; then with_libgle=yes fi fi fi if test "x$with_libgle" = "xboth"; then HAVE_LIBGLE_STATIC=1 $as_echo "#define HAVE_LIBGLE_STATIC 1" >>confdefs.h with_libgle=yes fi if test "x$with_libgle" = "xyes"; then HAVE_LIBGLE=1 $as_echo "#define HAVE_LIBGLE 1" >>confdefs.h case $host in *-*-linux*|*-*-kfreebsd*) LIBGLE_CPPFLAGS="-fPIC " LIBGLE_LDFLAGS="-fPIC " HAVE_LIBGLE_CPPFLAGS=1 ;; esac fi if test "x$with_libgle" = "xstatic"; then HAVE_LIBGLE_STATIC=1 $as_echo "#define HAVE_LIBGLE_STATIC 1" >>confdefs.h fi _SAVE_LIBS=$LIBS _SAVE_LDFLAGS=$LDFLAGS LIBS=$SIMPLE_LIBS LDFLAGS=$SIMPLE_LDFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing dlopen" >&5 $as_echo_n "checking for library containing dlopen... " >&6; } if ${ac_cv_search_dlopen+:} false; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF for ac_lib in '' dl; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_search_dlopen=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if ${ac_cv_search_dlopen+:} false; then : break fi done if ${ac_cv_search_dlopen+:} false; then : else ac_cv_search_dlopen=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dlopen" >&5 $as_echo "$ac_cv_search_dlopen" >&6; } ac_res=$ac_cv_search_dlopen if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi SIMPLE_LIBS_DL=$LIBS LIBS=$_SAVE_LIBS LDFLAGS=$_SAVE_LDFLAGS MAKE_MANIP=0 if test "x$with_manip" != "xno"; then _SAVE_LIBS=$LIBS _SAVE_LDFLAGS=$LDFLAGS LIBS=$SIMPLE_LIBS LDFLAGS=$SIMPLE_LDFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking for tgetent in -ltinfo" >&5 $as_echo_n "checking for tgetent in -ltinfo... " >&6; } if ${ac_cv_lib_tinfo_tgetent+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ltinfo $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char tgetent (); int main () { return tgetent (); ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_lib_tinfo_tgetent=yes else ac_cv_lib_tinfo_tgetent=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_tinfo_tgetent" >&5 $as_echo "$ac_cv_lib_tinfo_tgetent" >&6; } if test "x$ac_cv_lib_tinfo_tgetent" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LIBTINFO 1 _ACEOF LIBS="-ltinfo $LIBS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing wbkgdset" >&5 $as_echo_n "checking for library containing wbkgdset... " >&6; } if ${ac_cv_search_wbkgdset+:} false; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char wbkgdset (); int main () { return wbkgdset (); ; return 0; } _ACEOF for ac_lib in '' ncurses curses; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_search_wbkgdset=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if ${ac_cv_search_wbkgdset+:} false; then : break fi done if ${ac_cv_search_wbkgdset+:} false; then : else ac_cv_search_wbkgdset=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_wbkgdset" >&5 $as_echo "$ac_cv_search_wbkgdset" >&6; } ac_res=$ac_cv_search_wbkgdset if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" MAKE_MANIP=1 fi ac_fn_cxx_check_header_mongrel "$LINENO" "ncurses.h" "ac_cv_header_ncurses_h" "$ac_includes_default" if test "x$ac_cv_header_ncurses_h" = xyes; then : HAVE_NCURSES_H=1 else ac_fn_cxx_check_header_mongrel "$LINENO" "curses.h" "ac_cv_header_curses_h" "$ac_includes_default" if test "x$ac_cv_header_curses_h" = xyes; then : HAVE_CURSES_H=1 else MAKE_MANIP=0 fi fi if test "$HAVE_NCURSES_H" = "1"; then $as_echo "#define HAVE_NCURSES_H 1" >>confdefs.h fi if test "$HAVE_CURSES_H" = "1"; then $as_echo "#define HAVE_CURSES_H 1" >>confdefs.h fi MANIP_LIBS=$LIBS MANIP_LDFLAGS=$LDFLAGS if test "x$with_staticlink" = "xyes"; then MANIP_LIBS="$SIMPLE_LIBS -Wl,-Bstatic -lncurses -ltinfo -lm -Wl,-Bdynamic -ldl" #MANIP_LIBS="$SIMPLE_LIBS -Wl,-Bstatic -lncurses -lm -Wl,-Bdynamic -ldl" else MANIP_LIBS="$MANIP_LIBS -lm" fi LIBS=$_SAVE_LIBS LDFLAGS=$_SAVE_LDFLAGS fi if test "x$with_warn" != "xno"; then CPPFLAGS="-Wall $CPPFLAGS" fi CPPFLAGS="-Wno-write-strings $CPPFLAGS" CPPFLAGS="-DHAVE_CONFIG_H \$(VERSION_INFO) $CPPFLAGS" LDFLAGS="$LDFLAGS $EXTRA_LDFLAGS" LIBS="$LIBS $EXTRA_LIBS" MAKE_AUTOPACKAGE=0 if test "x$with_autopackage" != "xno"; then MAKE_AUTOPACKAGE=1 if test "x$HAVE_QT" != "x0"; then AP_CONFIG_ARGS="$AP_CONFIG_ARGS --with-qt=$QTDIR" fi if test "$with_png" != yes; then AP_CONFIG_ARGS="$AP_CONFIG_ARGS --with-png=$with_png" fi CPPFLAGS=$_CPPFLAGS_INI CXXFLAGS=$_CXXFLAGS_INI LDFLAGS=$_LDFLAGS_INI LIBS=$_LIBS_INI fi if test "x$with_apintern" != "xno"; then LDFLAGS="$LDFLAGS -static-libgcc" LIBS="$LIBS -Wl,-Bstatic -lstdc++ -Wl,-Bdynamic" SIMPLE_LDFLAGS="$SIMPLE_LDFLAGS -static-libgcc" SIMPLE_LIBS="$SIMPLE_LIBS -Wl,-Bstatic -lstdc++ -Wl,-Bdynamic" MANIP_LDFLAGS="$MANIP_LDFLAGS -static-libgcc" MANIP_LIBS="$MANIP_LIBS -Wl,-Bstatic -lstdc++ -Wl,-Bdynamic" HAVE_X11=0 HAVE_AUTOPACKAGE=1 fi if test "x$with_debug" != "xno"; then CPPFLAGS="-g $CPPFLAGS" LDFLAGS="-g $LDFLAGS" fi if test "x$with_debug" = "xyes"; then QT_CONFIG="CONFIG += debug" fi if test "x$HAVE_X11" != "x0"; then $as_echo "#define HAVE_X11 1" >>confdefs.h fi if test "x$HAVE_CAIRO" != "x0"; then $as_echo "#define HAVE_CAIRO 1" >>confdefs.h fi if test "x$HAVE_POPPLER" != "x0"; then $as_echo "#define HAVE_POPPLER 1" >>confdefs.h fi if test "$prefix" = "NONE"; then GLE_INSTALL_DATA=/usr/share/$PACKAGE_TARNAME/$GLE_VERSION prefix="/usr" else GLE_INSTALL_DATA=$prefix/share/$PACKAGE_TARNAME/$GLE_VERSION fi if test "$exec_prefix" = "NONE"; then if test "$prefix" = "NONE"; then GLE_INSTALL_BIN=/usr/bin else GLE_INSTALL_BIN=$prefix/bin fi else GLE_INSTALL_BIN=$exec_prefix fi if test "$bindir" != "\${exec_prefix}/bin"; then GLE_INSTALL_BIN=$bindir fi ac_config_files="$ac_config_files Makefile src/gle/Makefile src/gle/bitmap/Makefile src/gle/letzfitz/Makefile src/gle/surface/Makefile src/gle/tokens/Makefile src/fbuild/Makefile src/makefmt/Makefile src/manip/Makefile src/TeX/Makefile src/gui/MakefileAC src/gui/qgle.pro src/doc/gle.1 platform/autoconf/gle-graphics.pc platform/autopackage/gle4.apspec" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 $as_echo "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else case $cache_file in #( */* | ?:*) mv -f confcache "$cache_file"$$ && mv -f "$cache_file"$$ "$cache_file" ;; #( *) mv -f confcache "$cache_file" ;; esac fi fi else { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= U= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`$as_echo "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 $as_echo "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -p'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -p' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi else as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi if test -x / >/dev/null 2>&1; then as_test_x='test -x' else if ls -dL / >/dev/null 2>&1; then as_ls_L_option=L else as_ls_L_option= fi as_test_x=' eval sh -c '\'' if test -d "$1"; then test -d "$1/."; else case $1 in #( -*)set "./$1";; esac; case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( ???[sx]*):;;*)false;;esac;fi '\'' sh ' fi as_executable_p=$as_test_x # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 ## ----------------------------------- ## ## Main body of $CONFIG_STATUS script. ## ## ----------------------------------- ## _ASEOF test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Save the log message, to keep $0 and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by gle-graphics $as_me 4.2.4c, which was generated by GNU Autoconf 2.68. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac case $ac_config_headers in *" "*) set x $ac_config_headers; shift; ac_config_headers=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" config_headers="$ac_config_headers" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit --config print configuration, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: $config_files Configuration headers: $config_headers Report bugs to ." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ gle-graphics config.status 4.2.4c configured by $0, generated by GNU Autoconf 2.68, with options \\"\$ac_cs_config\\" Copyright (C) 2010 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' INSTALL='$INSTALL' MKDIR_P='$MKDIR_P' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=?*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; --*=) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg= ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) $as_echo "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) $as_echo "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append CONFIG_HEADERS " '$ac_optarg'" ac_need_defaults=false;; --he | --h) # Conflict between --help and --header as_fn_error $? "ambiguous option: \`$1' Try \`$0 --help' for more information.";; --help | --hel | -h ) $as_echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) as_fn_error $? "unrecognized option: \`$1' Try \`$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX $as_echo "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "src/config.h") CONFIG_HEADERS="$CONFIG_HEADERS src/config.h" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "src/gle/Makefile") CONFIG_FILES="$CONFIG_FILES src/gle/Makefile" ;; "src/gle/bitmap/Makefile") CONFIG_FILES="$CONFIG_FILES src/gle/bitmap/Makefile" ;; "src/gle/letzfitz/Makefile") CONFIG_FILES="$CONFIG_FILES src/gle/letzfitz/Makefile" ;; "src/gle/surface/Makefile") CONFIG_FILES="$CONFIG_FILES src/gle/surface/Makefile" ;; "src/gle/tokens/Makefile") CONFIG_FILES="$CONFIG_FILES src/gle/tokens/Makefile" ;; "src/fbuild/Makefile") CONFIG_FILES="$CONFIG_FILES src/fbuild/Makefile" ;; "src/makefmt/Makefile") CONFIG_FILES="$CONFIG_FILES src/makefmt/Makefile" ;; "src/manip/Makefile") CONFIG_FILES="$CONFIG_FILES src/manip/Makefile" ;; "src/TeX/Makefile") CONFIG_FILES="$CONFIG_FILES src/TeX/Makefile" ;; "src/gui/MakefileAC") CONFIG_FILES="$CONFIG_FILES src/gui/MakefileAC" ;; "src/gui/qgle.pro") CONFIG_FILES="$CONFIG_FILES src/gui/qgle.pro" ;; "src/doc/gle.1") CONFIG_FILES="$CONFIG_FILES src/doc/gle.1" ;; "platform/autoconf/gle-graphics.pc") CONFIG_FILES="$CONFIG_FILES platform/autoconf/gle-graphics.pc" ;; "platform/autopackage/gle4.apspec") CONFIG_FILES="$CONFIG_FILES platform/autopackage/gle4.apspec" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= ac_tmp= trap 'exit_status=$? : "${ac_tmp:=$tmp}" { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status ' 0 trap 'as_fn_exit 1' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=`echo X | tr X '\015'` # On cygwin, bash can eat \r inside `` if the user requested igncr. # But we know of no other shell where ac_cr would be empty at this # point, so we can use a bashism as a fallback. if test "x$ac_cr" = x; then eval ac_cr=\$\'\\r\' fi ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$ac_tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\)..*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\)..*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' >$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 _ACEOF # VPATH may cause trouble with some makes, so we remove sole $(srcdir), # ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ h s/// s/^/:/ s/[ ]*$/:/ s/:\$(srcdir):/:/g s/:\${srcdir}:/:/g s/:@srcdir@:/:/g s/^:*// s/:*$// x s/\(=[ ]*\).*/\1/ G s/\n// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" # Set up the scripts for CONFIG_HEADERS section. # No need to generate them if there are no CONFIG_HEADERS. # This happens for instance with `./config.status Makefile'. if test -n "$CONFIG_HEADERS"; then cat >"$ac_tmp/defines.awk" <<\_ACAWK || BEGIN { _ACEOF # Transform confdefs.h into an awk script `defines.awk', embedded as # here-document in config.status, that substitutes the proper values into # config.h.in to produce config.h. # Create a delimiter string that does not exist in confdefs.h, to ease # handling of long lines. ac_delim='%!_!# ' for ac_last_try in false false :; do ac_tt=`sed -n "/$ac_delim/p" confdefs.h` if test -z "$ac_tt"; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done # For the awk script, D is an array of macro values keyed by name, # likewise P contains macro parameters if any. Preserve backslash # newline sequences. ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* sed -n ' s/.\{148\}/&'"$ac_delim"'/g t rset :rset s/^[ ]*#[ ]*define[ ][ ]*/ / t def d :def s/\\$// t bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3"/p s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p d :bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3\\\\\\n"\\/p t cont s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p t cont d :cont n s/.\{148\}/&'"$ac_delim"'/g t clear :clear s/\\$// t bsnlc s/["\\]/\\&/g; s/^/"/; s/$/"/p d :bsnlc s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p b cont ' >$CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 for (key in D) D_is_set[key] = 1 FS = "" } /^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { line = \$ 0 split(line, arg, " ") if (arg[1] == "#") { defundef = arg[2] mac1 = arg[3] } else { defundef = substr(arg[1], 2) mac1 = arg[2] } split(mac1, mac2, "(") #) macro = mac2[1] prefix = substr(line, 1, index(line, defundef) - 1) if (D_is_set[macro]) { # Preserve the white space surrounding the "#". print prefix "define", macro P[macro] D[macro] next } else { # Replace #undef with comments. This is necessary, for example, # in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. if (defundef == "undef") { print "/*", prefix defundef, macro, "*/" next } } } { print } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 fi # test -n "$CONFIG_HEADERS" eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS " shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 $as_echo "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`$as_echo "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$ac_tmp/stdin" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; esac ac_MKDIR_P=$MKDIR_P case $MKDIR_P in [\\/$]* | ?:[\\/]* ) ;; */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; esac _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 $as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t s&@MKDIR_P@&$ac_MKDIR_P&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&5 $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" case $ac_file in -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; esac \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; :H) # # CONFIG_HEADER # if test x"$ac_file" != x-; then { $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" } >"$ac_tmp/config.h" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 $as_echo "$as_me: $ac_file is unchanged" >&6;} else rm -f "$ac_file" mv "$ac_tmp/config.h" "$ac_file" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 fi else $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ || as_fn_error $? "could not create -" "$LINENO" 5 fi ;; esac done # for ac_tag as_fn_exit 0 _ACEOF ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: " >&5 $as_echo "" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: CPPFLAGS: $CPPFLAGS" >&5 $as_echo "CPPFLAGS: $CPPFLAGS" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: LDFLAGS: $LDFLAGS" >&5 $as_echo "LDFLAGS: $LDFLAGS" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: LIBS: $LIBS" >&5 $as_echo "LIBS: $LIBS" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: SIMPLE_LIBS: $SIMPLE_LIBS" >&5 $as_echo "SIMPLE_LIBS: $SIMPLE_LIBS" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: SIMPLE_LIBS_DL: $SIMPLE_LIBS_DL" >&5 $as_echo "SIMPLE_LIBS_DL: $SIMPLE_LIBS_DL" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: SIMPLE_LDFLAGS: $SIMPLE_LDFLAGS" >&5 $as_echo "SIMPLE_LDFLAGS: $SIMPLE_LDFLAGS" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: ** Configuration summary for GLE $GLE_VERSION$GLE_SNAPSHOT ($host): " >&5 $as_echo " ** Configuration summary for GLE $GLE_VERSION$GLE_SNAPSHOT ($host): " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: ** Bitmap support:" >&5 $as_echo " ** Bitmap support:" >&6; } if test "$HAVE_LIBPNG" = 1; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: PNG support: yes" >&5 $as_echo " PNG support: yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: PNG support: no" >&5 $as_echo " PNG support: no" >&6; } fi if test "$HAVE_LIBTIFF" = 1; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: TIFF support: yes" >&5 $as_echo " TIFF support: yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: TIFF support: no" >&5 $as_echo " TIFF support: no" >&6; } fi if test "$HAVE_LIBJPEG" = 1; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: JPEG support: yes" >&5 $as_echo " JPEG support: yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: JPEG support: no" >&5 $as_echo " JPEG support: no" >&6; } fi if test "x$with_staticlink" != "xno"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: Statically link: yes" >&5 $as_echo " Statically link: yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: Statically link: no" >&5 $as_echo " Statically link: no" >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: " >&5 $as_echo "" >&6; } if test "$HAVE_X11" = 1; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: ** X11 preview support: yes" >&5 $as_echo " ** X11 preview support: yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: ** X11 preview support: no" >&5 $as_echo " ** X11 preview support: no" >&6; } fi if test "$HAVE_CAIRO" = 1; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: ** Cairo graphics support: yes" >&5 $as_echo " ** Cairo graphics support: yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: ** Cairo graphics support: no" >&5 $as_echo " ** Cairo graphics support: no" >&6; } fi if test "$HAVE_POPPLER" = 1; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: ** Poppler PDF support: yes" >&5 $as_echo " ** Poppler PDF support: yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: ** Poppler PDF support: no" >&5 $as_echo " ** Poppler PDF support: no" >&6; } fi if test "$HAVE_SOCKETS" = 1; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: ** Socket support: yes" >&5 $as_echo " ** Socket support: yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: ** Socket support: no" >&5 $as_echo " ** Socket support: no" >&6; } fi if test "$MAKE_MANIP" = 1; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: ** Include 'manip' utility: yes" >&5 $as_echo " ** Include 'manip' utility: yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: ** Include 'manip' utility: no" >&5 $as_echo " ** Include 'manip' utility: no" >&6; } fi if test "x$with_debug" != "xno"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: ** Debug mode: on" >&5 $as_echo " ** Debug mode: on" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: ** Debug mode: off" >&5 $as_echo " ** Debug mode: off" >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: " >&5 $as_echo "" >&6; } if test "$HAVE_QT" = 1; then if test "x$QT4VER" != "x?"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: ** GLE GUI support: yes (Qt4 version: $QT4VER)" >&5 $as_echo " ** GLE GUI support: yes (Qt4 version: $QT4VER)" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: ** GLE GUI support: yes" >&5 $as_echo " ** GLE GUI support: yes" >&6; } if test "x$QMAKE_VERS" != "xnone"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $QMAKE_VERS" >&5 $as_echo " $QMAKE_VERS" >&6; } fi fi else { $as_echo "$as_me:${as_lineno-$LINENO}: result: ** GLE GUI support: no" >&5 $as_echo " ** GLE GUI support: no" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: (make sure you have Qt >= 4.1.1 devel and use ./configure --with-qt=/path/to/qt.)" >&5 $as_echo " (make sure you have Qt >= 4.1.1 devel and use ./configure --with-qt=/path/to/qt.)" >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: " >&5 $as_echo "" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: ** Install data into: $GLE_INSTALL_DATA" >&5 $as_echo "** Install data into: $GLE_INSTALL_DATA" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: ** Install binary into: $GLE_INSTALL_BIN" >&5 $as_echo "** Install binary into: $GLE_INSTALL_BIN" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: (use ./configure --prefix=dir to change the installation directory.)" >&5 $as_echo " (use ./configure --prefix=dir to change the installation directory.)" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: " >&5 $as_echo "" >&6; } if test "x$with_autopackage" != "xno"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: GLE $GLE_VERSION$GLE_SNAPSHOT has been configured. Run \"make\" to create an autopackage for GLE." >&5 $as_echo "GLE $GLE_VERSION$GLE_SNAPSHOT has been configured. Run \"make\" to create an autopackage for GLE." >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: GLE $GLE_VERSION$GLE_SNAPSHOT has been configured. The next step is to run \"make\". After \"make\" completes, run \"make install\" to install GLE." >&5 $as_echo "GLE $GLE_VERSION$GLE_SNAPSHOT has been configured. The next step is to run \"make\". After \"make\" completes, run \"make install\" to install GLE." >&6; } fi gle-graphics-4.2.4c/README.txt0000664000000000000000000002735411405446017014444 0ustar rootrootGLE Readme ========== This document contains instructions on how to compile, install, and run GLE4. Supported platforms: Windows, Linux, Mac OS/X, Unix, OS/2. Contents -------- 1. What is GLE? 2. Installing a GLE binary 2.1 Installing GLE on Windows 2.2 Installing GLE on OS/2 3. Running GLE 4. Compiling GLE from the source code 4.1 Compiling with GCC (Windows, Linux, Mac OS/X, ...) 4.2 Compiling on Windows (with Microsoft Visual C++) 4.3 Compiling on OS/2 (with GCC 3.2.1) 4.4 Notes for all platforms 5. Source code organization 6. License (BSD) 1. What is GLE? --------------- GLE (Graphics Layout Engine) is a graphics scripting language designed for creating publication quality graphs, plots, diagrams, figures and slides. GLE supports various graph types (function plots, histograms, bar graphs, scatter plots, contour lines, color maps, surface plots, ...) through a simple but flexible set of graphing commands. More complex output can be created by relying on GLE's scripting language, which is full featured with subroutines, variables, and logic control. GLE relies on LaTeX for text output and supports mathematical formulea in graphs and figures. GLE's output formats include EPS, PS, PDF, JPEG, and PNG. More information is available at . 2. Installing a GLE Binary -------------------------- GLE is available as binary installation packages (one for each supported platform) or as source code. The source code must be compiled before it can be installed. To compile GLE from its source code on different platforms, see Section 4. This section describes how a GLE binary can be installed. 2.1 Installing GLE on Windows ----------------------------- The easiest way to install GLE on Windows is to download the self installing executable. The self installing executable is named GLE--exe-win32.exe. By double-clicking this file in Windows Explorer, it will guide you through the installation process. An installation guide illustrating this process (with screenshots) is available here: During installation, GLE will search for installed programs, such as GhostScript and LaTeX. GLE does not require these for its most basic operation, but it does so for more advanced features, such as producing PDF output and processing scripts including LaTeX commands. This search process runs in a black window (Command Prompt) and the output should be similar to the following: Running GLE -finddeps "C:\Program Files" (locate GLE fonts and optionally GhostScript/LaTeX): ................................................................................ ................................................................................ ................................................................................ Found: GLE 4.1.0 in C:\Program Files\Gle4\4.1.0\bin\gle.exe Found: GLE 4.0.12 in C:\Program Files\Gle4\4.0.12\bin\gle.exe (*) Found: latex.exe in '?' Found: pdflatex.exe in '?' Found: dvips.exe in '?' Found: gswin32c.exe in 'C:\Program Files\Tools\gs8.53\gs8.53\bin\gswin32c.exe' Press enter to continue ... In this example, GLE has detected that GhostScript is installed on my computer, but it did not detect LaTeX. More information on using GLE with LaTeX is given below. For now, just focus the window saying "Press enter to contunue..." and press enter. Next click Finish on the installer screen. GLE should now have added a new entry titled GLE to your start menu. Clicking it pops up a menu showing the options "Command Prompt", "Readme", "Uninstall", and "Website". Click on "Command Prompt" to open a command prompt. Now type the command "gle" and press enter. C:\Program Files\Gle4\4.1.0\samples> gle GLE version 4.1.0 Usage: gle [options] filename.gle More information: gle /help GLE should respond as in the example above. If you instead get the message "'gle' is not recognized as an internal or external command, operable program or batch file", then the folder containing "gle.exe" was not correctly added to your system's search path during installation. If the version number printed by GLE is not correct, then a previous version of GLE may be installed on your computer. Either uninstall that version or remove it from your system's search path (you will still be able to run it through the -v option, as discussed in the reference manual). I will now show you how to change the search path. This is a list of folders that Windows searches for executable programs when you try to run a particular program from the command prompt. Note that normally the GLE installer should have done this for you. Only perform the next step if you saw an error message or incorrect GLE version in the previous step. Select "Control Panel" from the start menu and click "System". Navigate to the "Advanced" tab and click the "Environment Variables" button. Select the variable "PATH" and click the "Edit" button. Add to the "Value" field the location of the GLE executable "gle.exe". This location is the installation folder you specified during installation with "\bin" added at the end, for example, C:\Program Files\Gle4\4.1.0\bin. Note that different folders in the PATH are separated with the symbol ";". You might need to change the value of PATH in either the "User" or the "System" variables. If you have LaTeX installed on your computer, you also need to perform the next step. LaTeX may not be installed in "C:\Program Files", and then GLE does not detect it automatically during installation. Open the command prompt and run "gle -finddeps LATEXPATH", with LATEXPATH the location of your LaTeX installation. The following example assumes that the MiKTeX distribution is installed (http://www.miktex.org/). C:>gle -finddeps "C:\MiKTeX" Finding dependencies in: C:\MiKTeX: ........................... Found: gle.exe in 'C:\Program Files\gle4\bin' Found: gswin32c.exe in 'C:\Program Files\Tools\gs\gs\gs8.00\bin' Found: latex.exe in 'C:\MiKTeX\Main\miktex\bin' Found: dvips.exe in 'C:\MiKTeX\Main\miktex\bin' Note that both GhostView and LaTeX are optional. For creating simple EPS graphs, they are not required, i.e., GLE will still work if you see question marks for gswin32c.exe, latex.exe and dvips.exe. You are all set. Information on how to run GLE is available in Section 3 and in the manual. 2.2 Installing GLE on OS/2 -------------------------- Since you are reading this you downloaded the do it yourself .tar.gz package for GLE installation. To install this package: 1) Unzipping gle-graphics-x.y.z-src.tar.gz will create the following files. gle\ gle\doc\readme (you are reading this) gle\doc\gle-manual.pdf gle\gle.exe gle\gcc321m.dll gle\fbuild.exe gle\makefmt.exe gle\inittex.ini gle\glerc gle\font\* 2) Put gle.exe somewhere into your PATH and *.dll into your LIBPATH. 3) Add "SET GLE_TOP=x:/path/gle" to your config.sys. 3. Running GLE -------------- Running GLE is similar on all supported platforms. Note that GLE is a command line application. It takes as input a GLE script file and outputs an EPS, PS, PDF, JPG, or PNG file. GLE cannot be run from inside a file manager such as Windows Explorer. Instead it should be started from a terminal: an X-terminal or console application in Linux or the command prompt in Windows. To start GLE, open a terminal/command prompt and issue the command: gle -d outputtype yourfile.gle where outputtype is one of: eps, teps, ps, pdf, jpg, png and yourfile.gle is the file containing the your GLE script. E.g. (Windows): --------------------------------------------------------- C:\Program Files\Gle4\samples>gle -d eps sample.gle GLE 4.1.0 [sample.gle]-C-R-[sample.eps] --------------------------------------------------------- Preview the output file sample.eps with GhostView (e.g., by browsing with your favorite file manager to in this case C:\Program Files\Gle4\samples and clicking sample.eps). See the GLE manual for more information. Or contact the GLE mailing list (glx-general) if you have any questions. There is also an installation guide / introductory tutorial available for Windows here: and for Linux here: 4. Compiling GLE from the source code ------------------------------------- The GLE source code is distributed as gle-graphics-x.y.z-src.tar.gz. 4.1 Compiling with GCC (Windows, Linux, Mac OS/X, ...) ------------------------------------------------------ To install GLE system-wide: ./configure make make doc su make install To install GLE in your home directory: ./configure --prefix=$HOME/apps make make doc make install A detailed description of the above process can be found here: The "make doc" builds the GLE manual in PDF format. This step is optional and requires that you have "pdflatex" installed. 4.1.1 Installing the additional fonts from "gle-graphics-extrafonts-1.0.tar.gz" ------------------------------------------------------------------------------- GLE has a set of additional fonts that are distributed separately. To include these in your GLE installation, you have to download them and extract them in the gle-graphics-x.y.z directory before compiling GLE. You also have to include the option "--with-extrafonts=yes" while configuring. For example, $ cd gle-graphics-x.y.z $ tar -xvzf $HOME/gle-graphics-extrafonts-1.0.tar.gz $ ./configure --with-extrafonts=yes $ make clean $ make $ make doc $ make install These instructions assume that you downloaded gle-graphics-extrafonts-1.0.tar.gz and saved it into your home directory. 4.2 Compiling on Windows (with Microsoft Visual C++) ---------------------------------------------------- The compilation process uses "Makefiles". Visual Studio project files are not supported. Makefiles and config files ending in .vc are for the Microsoft Visual C++ compiler. To compile GLE with support for including bitmap files libtiff and libpng are required, and HAVE_LIBTIFF = 1 HAVE_LIBPNG = 1 must be enabled in config.i (to disable bitmap support, comment these out with '#') you must have the environment variable GLE_TOP point to the location of C:\Path\To\gle4\bin you must have the environment variable LIBTIFFDIR point to the location of the libtiff.h and .lib files you must have the environment variable LIBPNGDIR point to the location of the png.h and .lib files nmake -f Makefile.vc 4.3 Compiling on OS/2 (with gcc 3.2.1) -------------------------------------- change the values of INSTALL_DIR (D:/UTILS/gle) INSTALL_BIN (D:/UTILS/bin) ADD_DLLS (D:/GCC.321/dll/gcc321m.dll) ADD_DOCS (readme ../gle-refman/gle-manual.pdf) PROJECT_DIR (E:/Works/Projects/CGLE/current/gle4) in config.os2 make -f Makefile.os2 4.4 Notes for all platforms --------------------------- Note: If you get the following error: StringKeyHash.h:8: ext/hash_map: No such file or directory Then add -DGCC2 to EXTRA_DEFS in config.{gcc,os2,nocygwin} (Or upgrade to a newer version of gcc.) The compilation process will built: gle(.exe) : GLE main executable fbuild(.exe) : makes *.fve fron *.gle using fbuild in the src\font directory makefmt(.exe) : makes font files *.fmt from *.afm in the src\font directory It will also run the fbuild and makefmt commands and put the font files in the build/font directory along with the font.dat file. It will also run your newly built gle on the files in the src\samples subdirectory. The clean target is also defined on all makefiles. 5. Source code organization --------------------------- The source code is contained in the src sub directory, where each module has its own directory (and makefiles). Binaries are put in the build/bin sub directory. 6. License ---------- See LICENSE.txt. gle-graphics-4.2.4c/Makefile.os20000664000000000000000000001123711405446017015101 0ustar rootroot######################################################################## # # # GLE - Graphics Layout Engine # # # # Modified BSD License # # # # Copyright (C) 2009 GLE. # # # # Redistribution and use in source and binary forms, with or without # # modification, are permitted provided that the following conditions # # are met: # # # # 1. Redistributions of source code must retain the above copyright # # notice, this list of conditions and the following disclaimer. # # # # 2. Redistributions in binary form must reproduce the above # # copyright notice, this list of conditions and the following # # disclaimer in the documentation and/or other materials provided with # # the distribution. # # # # 3. The name of the author may not be used to endorse or promote # # products derived from this software without specific prior written # # permission. # # # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR # # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY # # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE # # GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER # # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN # # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # # ######################################################################## # # global makefile for gle # for gcc # include config.i include config.os2 all: -$(MKDIR) build -$(MKDIR) build/bin -$(MKDIR) build/lib -$(CP) src/config.h.os2 src/config.h make -C src/gle/bitmap -f Makefile.os2 make -C src/gle/surface -f Makefile.os2 make -C src/gle/letzfitz -f Makefile.os2 make -C src/gle/tokens -f Makefile.os2 make -C src/gle -f Makefile.os2 make -C src/fbuild -f Makefile.os2 make -C src/makefmt -f Makefile.os2 make -C src/fonts -f Makefile.os2 make -C src/lib -f Makefile.os2 make -C src/TeX -f Makefile.os2 clean: make -C src/gle/bitmap -f Makefile.os2 clean make -C src/gle/surface -f Makefile.os2 clean make -C src/gle/letzfitz -f Makefile.os2 clean make -C src/gle/tokens -f Makefile.os2 clean make -C src/gle -f Makefile.os2 clean make -C src/fbuild -f Makefile.os2 clean make -C src/makefmt -f Makefile.os2 clean make -C src/fonts -f Makefile.os2 clean make -C src/TeX -f Makefile.os2 clean make -C src/manip -f Makefile.os2 clean -$(RM) src/config.h -$(RMDIR) include -$(RMDIR) lib -$(RMDIR) build manip: -$(CP) src/config.h.os2 src/config.h make -C src/manip -f Makefile.os2 install: clean_install -$(MKDIR) $(INSTALL_DIR) -$(CP) -R build/* $(INSTALL_DIR)/ -$(CP) $(INSTALL_DIR)/gle.exe $(INSTALL_BIN)/gle.exe @echo Please add "SET GLE_TOP=$(INSTALL_DIR)" to your CONFIG.SYS clean_install: -$(RM) $(INSTALL_BIN)/bin/gle.exe -$(RMDIR) $(INSTALL_DIR)/font -$(RM) $(INSTALL_DIR)/bin/gle.exe -$(RM) $(INSTALL_DIR)/bin/fbuild.exe -$(RM) $(INSTALL_DIR)/bin/makefmt.exe -$(RM) $(INSTALL_DIR)/inittex.ini full: clean all distrib: -$(RM) $(BASE_NAME)-os2-$(VERSION_NUMBER).$(BUILD_NUMBER).zip -$(MKDIR) gle -$(MKDIR) gle/doc -$(CP) -R bin/* gle/. -$(CP) $(ADD_DLLS) gle/. -$(CP) $(ADD_DOCS) gle/doc/. -$(CP) contrib/samplecfg/*.os2 gle/. -$(ZIP) -r $(BASE_NAME)-os2-$(VERSION_NUMBER).$(BUILD_NUMBER).zip gle/* -$(RMDIR) gle lxlite: lxlite bin/*.exe commit: cvs commit -m "commit via make working on version $(TAG)" tagall: cvs rtag $(TAG) $(MODULE_NAME) $(DEPENDANT_MODULES) gle-graphics-4.2.4c/config.aconf0000664000000000000000000000561411405446017015216 0ustar rootroot######################################################################## # # # GLE - Graphics Layout Engine # # # # Modified BSD License # # # # Copyright (C) 2009 GLE. # # # # Redistribution and use in source and binary forms, with or without # # modification, are permitted provided that the following conditions # # are met: # # # # 1. Redistributions of source code must retain the above copyright # # notice, this list of conditions and the following disclaimer. # # # # 2. Redistributions in binary form must reproduce the above # # copyright notice, this list of conditions and the following # # disclaimer in the documentation and/or other materials provided with # # the distribution. # # # # 3. The name of the author may not be used to endorse or promote # # products derived from this software without specific prior written # # permission. # # # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR # # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY # # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE # # GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER # # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN # # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # # ######################################################################## # # config file for gcc and make # OBJ_SUFF = o EXE_SUFF = AR = ar RM = rm -rf RMDIR = rm -rf MKDIR = mkdir PATH_SEP = / # # other global defines # PROJECT_BINDIR = ../../build PROJECT_LIBDIR = ../../lib PROJECT_INCDIR = ../../include gle-graphics-4.2.4c/ChangeLog.txt0000664000000000000000000014220111726234305015324 0ustar rootroot4.2.4c (March, 2012) Bug Fixes Added checks on number of data sets, bar definitions, and fill definitions (QGLE crash reports 02/07/2012 and 02/16/2012) Save .glerc in user's AppData on Windows Added manifest to prevent AUC Virtualization on Windows Vista and above Search "C:\Program Files (x86)" on 64 bit Windows for installed software Fixed type in manual: logfit -> logefit Fixed bug in tokenizer Fixed crash when parsing "let d1 = x.x" (QGLE crash report 02/28/2012) Fix for message "QWidget::setWindowModified: The window title does not contain a '[*]' placeholder" Fixed bug in centering of .inc output (reported by Antonio DiCesare) Bug 3485409: GLE should check for Cairo version >= 1.10.0 Added Python script to generate GLE palette functions (contributed by Brandon Aubie) Fixed "too many open files" when including bitmaps in filled boxes (reported by Alexis Letessier) Fixed issue with filled boxes (reported by Alexis Letessier) Make GLE compile with GCC 4.7.x (issue raised by Terje Røsten) Support other 64bit systems besides x86 Fixed more GLU problems introduced in Qt4.8 4.2.4b (January, 2012) Bug Fixes Added GLU dependency to make GLE compile with Qt4.8 Fixed bug in fallback to "texcmr" when using -cairo Fixed crash due to subroutine argument type mismatch 4.2.4 (January, 2012) New Features "Marker only" 3D plots (patch by Laurence Abbott) Added "discontinuity threshold" option to graph block Added "draw" command to graph block Added "msize" option to box plots (request by Nicolas Lerme) Added GLE-TeX symbols \uparrow, \downarrow, \updownarrow, \Uparrow, \Downarrow, \Updownarrow, and \backslash Added changes by Pascal Buescher to feyn.gle Added functions rgba() and rgba255() Added functions xg3d() and yg3d() Always embed all fonts in PDFs Cairo (www.cairographics.org) rendering now available in QGLE Control constructs (e.g., if-then-else and for-next) can be used in graph and key blocks Feature #3174151: Variable justification GNU/Hurd now officially supported Multiple layers in graph blocks New "begin length" block to compute curve length New CSV file reader with better error handling and wider CSV format support (including Microsoft Excel) Option "-cairo" can now be combined with LaTeX expressions Semi-transparent colors (also known as alpha blending) Support for "key separator" in graph blocks Use Poppler PDF library for rendering in QGLE and for image exports Support GZIP compressed CSV data in graph blocks QGLE export dialog remembers resolution and other settings Better definition of circle style markers (including "dot") Added support for arc arrow heads in QGLE edit mode Bug Fixes Fix for "QGLE does not support bold / italic fonts" (aka "set font rm" insertion problem) Bug #3101026: Fixes for possible buffer overflows Bug #3344819: Marker line width is different in legend Fix for bug in number formatting (part before 10^x missing) Fix for compiler error on std::min/max (suggested by Laurence Abbott) Fixed \leftarrow kerning problem Patch by Michal Vyskocil: Use QMAKE_LIBS_DYNLOAD Subticks are now generated over the entire axis range g_bitmap now also works with "-cairo" Bug #3434175: Turning on sublabels produces wrong width of some subticks Fixed bug in when QGLE edits scripts with filled boxes 4.2.3 (September, 2010) #3058793: y1axis dominates the plot (lin/log) bound to y2axis #2782744: Automatic tick labels with latex Fixed compilation on Mac OS/X The graph block's "data" command now understands column c0, which contains the data set's line numbers #2996854: Missing a few multiple bars Fixed: xend()/yend() do not work in QGLE's edit mode QGLE's about box has been improved and shows license and contributors in separate tabs Graph command 'xsubticks length' now overrides 'xaxis grid' Fixed: key block with 'fill' incorrectly changes the 'set fill' value #2995351: Unwanted vertical space generated in graph module Added "background" command to graph block to set the background color #2949503: Fixed a number of errors in the GLE 4.2.2 manual #2950381: Allow "marker m$" with m$ a string variable in the graph block #2949642: Log axis sub tick font size should be based on the "alabelscale" setting #2949495: Access to environment variables: added getenv() command and allow $ENVVAR in file names Added support for single quoted strings Escaping single and double quote characters in strings now works by doubling them Experimental support for EMF output (the vector format on Windows). New QGLE menu entry "Edit | Copy as EMF" to copy the diagram to the clipboard on Windows. 4.2.2 (January, 2010) New Features Windows installer can now copy settings from a previous GLE install thereby avoiding the long 'find dependencies' process. Support \'' style umlauts in LaTeX expressions (bug #2858424). Additional command line options for GhostScript/PDFLaTeX/LaTeX/DVIPS can now be specified in the "glerc" settings file GLE now expands environment variables in the tool paths specified in the "glerc" settings file. Bug Fixes QGLE now no longer modifies the string argument of "write" if a text string is moved or one of its properties is changed. GLE now compiles with "-Wl,--no-add-needed" and hopefully also with binutils-gold. Fixed GLE crash on illegal font name. Fixed GLE crash on certain scripts with error bars. Fixed regression in key block in 3.5 compatibility mode. Diamond markers are now also centered in 3.5 emulation mode. QGLE now sets the locale such that the decimal point indicator is "." (workaround "export LC_ALL=C"). Fixed crash in certain bar graphs (reported by Massimo Canonico). 4.2.1 (August, 2009) New Features Added "from/to/step" options to "values" command of "contour" block. Number of available datasets increased from 100 to 1000 (patch by Laurence Abbott). Added "reload" button to QGLE. Added "key off" to turn off the key of a graph block (Feature #2781887). Added "ylabels align left" to align all labels left (right is the default). Added support for FreeBSD (Bug #2786222). Added support for --docdir configure option. Changed package name to "gle-graphics" and distribute GLE's source code as .tar.gz. Moved plotter fonts to a separate package (./configure --with-extrafonts=yes to enable these). Added license information to all files where this can be done easily. Replaced font metrics files for core PostScript fonts with a set that is freely available from Adobe. Manual can now be compressed and installed as "gle-manual.pdf.gz". Configure script checks for "qmake-qt4" before checking for "qmake". Bug Fixes Arrowhead not drawn correctly when using dashed line (#2838971). Fixed problem in TeX macro substitution (#2838978). Curve with zero distance control points should be straight line #2838965). Added support for operations on arbitrary length strings. More commands are now allowed to come before the "size" command (e.g., bitmap_info). Improved routine for determining axis tick labels. Fixed QGLE crash on key block error (e.g., entry with no text). QGLE no longer crashes when "Save As" is selected while an EPS (not GLE) file is loaded. QGLE fix for the case that a "recent file" is opened that no longer exists. Fixed crash in "postscript" include command if bounding box is at the end of the EPS. The "clean" target now removes all files generated by "make". A "distclean" target has been added to also remove all files generated by "./configure". Replaced calls to "make" with "$(MAKE)" to handle the case that GNU make is "gmake". Added range checks for "from" "to" and "step" for the "letz" and "fitz" blocks. 4.2.0 (April, 2009) New Features Added "range" and "nsteps" options to the graph block's let command. Added functions file$() and path$() to retrieve the script's name and path (suggested by Jörg Baumgartner). Added function isname() that tests if its argument is a named point or object. Added "set background" to set background color of shade / grid filling patterns. Added "background" to bar command and key block. Added "set fillmethod", which can be "GLE" (more accurate) or "PostScript" (faster). Source distribution now includes syntax highlighting patterns (in contrib/editors/). Source distribution now includes the GLE manual (compile with "make doc"). Adds "ylabels log n1" to enable subticks without labels on a log scale axis (patch by Luca Donetti). Adds option "adist" to "x/ytitle" to set the distance between the title and axis (useful for aligning axis titles of multiple graphs). Support for multi-dimensional let (#2008719). (See: let-multi-dim.gle.) Support for stdin/stdout (#2009125). E.g., cat file.gle | gle -d pdf - > file.pdf E.g., cat file.gle | gle -o file.pdf - Experimental support for objects with named points. (See: transistor.gle, shapes.gle.) Scalable Vector Graphics (SVG) output device (-d svg). Engineering format "eng" for the format$ function and axis format option. (See: axisformat.gle.) Quantile based axis auto-scaling (by Florian Wisser). New axis command: "roundrange on/off" to disable rounding the axis range to the next tick. New key block mode: "compact", which combines "marker" and "line" in one column. New key block setting: "background", which sets the background color. Key box is now transparent (only for keys defined within the graph block). Adds function "atan2" (#1881021). QGLE is now available on MacOS/X (installation instructions). "File | Edit" menu added to QGLE for easy access to files included in GLE script. "Edit | Copy as Bitmap" menu added to copy the diagram to the clipboard. Adds entries to QGLE's help menu to display the GLE manual and website. GUI for detecting GLE's software dependencies (GhostScript and LaTeX). Automatically infer device from extension of "-o" option, which specifies the output name. DSC comments for title and creator added to PostScript/EPS/PDF output. Includes HiResBoundingBox in PostScript output. Better support for UTF8 accents in LaTeX expressions (use \usepackage[utf8]{inputenc}). Command line option "-noligatures" to disable the use of ligatures for "fl" and "fi". Bug Fixes Fix for stack corruption in PSGLEDevice::read_psfont() (bug #2543164). GLE now creates .inc file if -inc is given and script does not contain TeX expressions (bug #2165591). Fix for smooth crash in case of too few data and missing values (reported by Cilliers Kruger). Fix for 3D plot bounding box (reported by Brandon Aubie). Fix for QGLE compilation on MacOS/X: add "-spec macx-g++" to qmake (suggested by Mol Lukas). Fix for "xsubticks lwidth" also affecting the line width of the main ticks. Fix for the "strip" target in Makefile.in (by Michal Vyskocil). Auto-ranging now also works for x2axis/y2axis (#1933925). GLE can't handle filenames with a dot (#2015073). Fix for auto-range function with data sets with no spread (suggested by Florian Wisser). Fix for "nox" option of "data" command of graph block. Fixes for incorrect code points in GLE's Unicode table (o.a., for "ü"). Combining "clip" + "fill" in "begin path/end path" does not perform the requested fill. Command line option "-noctrl-d" and some others are not documented in GLE's man page and "-help" output. Landscape detection PS mode is now more robust. Fixes for all warnings new in GCC 4.3.0. 4.1.2 (March, 2008) GLE fails to read certain JPG files (bitmap command). Colormap command does not work for non-square .z files. Bug "rotate + tex = misplacement of text" (#1881020). Patch to make GLE compile with gcc 4.3 (include limits.h) (by Terje Røsten). QGLE's export fails if path contains a space or '.' character. 4.1.1 (January, 2008) Smooth option of "dn line" fixed for log-scale graphs (Bug #1860761). Patches to make GLE compile with gcc 4.3 (by Michal Vyskocil). Patches to make GLE work on 64 bit machines with "lib64" dir (by Michal Vyskocil). Fix for GhostScript problem in QGLE on 64 bit machines. 4.1.0 (December, 2007) Detailed Changes Added man page (now "man gle" should work on Linux). Added option "-verbosity" to set the amount of console output produced by GLE. Grid is now by default under the bars (use "grid ontop" to get the old behavior). Added "boxcolor" command to key block to set the color of the box indicating the fill. Added "append" and "prepend" commands to format$ strings. Added command "abound x y" to update the current bounding box. Added "scale auto" "hscale auto" "vscale auto" to fit the graph to the page size. Added auto-key based on header in data set. Added auto-xnames based on names in first data set column. Added "let d2 = hist d1 from 0 to 10 bins 10" for computing histograms (step 1 can be used instead of bins). Added "bar" option to "dn line" command for drawing histograms. Data sets can now be just one column. If "nox" is given, the x-values are set to 1...N. Added "compatibility" command (e.g., compatibility "3.5"). Added compatibility range option to include command. Added support for standard SVG/X11 color names (by color, alphabetical). Added HTML notation for color names (e.g., #FF0000 = red). Added "defcolor name color". Added "set fill xxx" and "set pattern xxx". Made "include filename.gle" itempotent. Added "declare sub name args", to allow forward declarations of subroutines. Added "default" to set default values for subroutine arguments. Output of LaTeX is now hidden, only errors are shown if they occur. Option "dticks" now works for log scales + improved log autoscaling. Improved Windows installer: added bitmaps and license screen (by Vincent P LaBella). Added "mdist d" option to "dn marker" to draw a marker every d cm along the given curve. Added "deresolve n" option to "dn line" to subsample the points before drawing (by Laurence Abbott). Added option "average" to "dereslove" to average the points instead of just skipping them. Added functions dataxvalue(di,i), datayvalue(di,i), ndata(di) (by Laurence Abbott). Added options "xmin" "xmax" "ymin" "ymax" to fitting routines of "let" command. Added "-safemode" command line option that prevents GLE scripts from accessing the file system. Added "-allowread" and "-allowwrite" to allow I/O in given paths if "-safemode" is given. Added "comment" option to "data" in graph block (by Vincent P LaBella). Example: "data filename.dat d1=c1,c2 comment //" will make GLE ignore lines starting with "//" in the data file. Better formatting of error messages if script contains long lines. Added support for curved arrows on arcs, elliptical arcs, and bezier curves (experimental). Added "palette" option to colormap command. Added fitting of arbitrary functions (based on fitls code from GLE 3.x). Example: "let d2 = fit d1 with a*sin(b*x)+c*x^2+d". Example: "let d2 = fit d1 with a*sin(b*x)+c*x^2+d eqstr e$ rsq r". These two examples fit dataset d1 with a function of the form "a*sin(b*x)+c*x^2+d" and put this function in d2. The second example in addition stores the resulting equation as a string in variable "e$" and the correlaction coefficient in "r". 4.0.12 (September, 2006) Includes a GUI called QGLE (written by A. S. Budden) - displays the output of GLE and updates automatically after the source file is modified (run "gle -p myfile.gle") - has basic editing tools (add amove/line/circle/...) - QGLE is based on the QT and Ghostscript library Added GNU autoconf support (in addition to the regular makefile.os system) (on Linux, one can now compile with ./configure; make; make install) Added autopackage support UTF8 support (limited to latin characters with accents) LaTeX expressions are scaled to the current font height (set texscale none/fixed/scale) LaTeX expressions are used in key and graph blocks (set texlabels 1) The "begin box / end box" block now fills underneath its contents Added keyword "local" to define local variables (see e.g., Examples | Fractals | Sierpinski on the website) Added "colormap" command (regular and graph block) (see e.g., Examples | 3D plots | Information Gain on the website) Colormap works for functions and for .z files Added option "-v" to run another version of GLE (if more than one version is installed, use "gle -help v" to list installed versions) Added "begin object name" and "end object" to define objects Added "draw name.pos" to draw objects More sensible defaults for graph font sizes (use gle -cmode 3.0 to get the old defaults) Font size in graph now depends on the "hei" setting Added new set subcommands: titlescale, atitlescale, ticksscale, atitledist, alabeldist (to set font sizes and distances relative to the value of the "hei" setting) Distance between axis labels and title are better calculated Added "margins", "dist", "coldist" and "row" options to key block Added "scale h v" command to graph block, which is equivalent to a hscale/vscale pair Added colored fill patterns for the "bar" command and key block bar d1,d2,d3,d4 fill blue,red,blue,purple pattern none,shade,grid,shade2 Added "xnames from di" to retrieve the axis labels from a data set Added "xnoticks p1 p2 ..." to disable ticks at specified positions Added "ftick x0" to "axis" to manually set the position of the first tick Added "offset y0" to "axis" to move the origin of the axis Added "angle a" to "axis" to rotate the axis labels Added "x0axis" and "y0axis" (these are disabled by default) Added option "center" to center a graph block Added option "math" to create a "math mode" graph with the axis crossing at the origin (see e.g., Examples | 2D Simple | Sin on the website) Added option "horiz" to bar command allowing "horizontal" bar plots Added option "style" to bar command allowing user defined bar styles (see e.g., Examples | 2D Complex | Color Bar on the website) Added arrow styles "filled", "empty" and "simple" Added support for user defined arrow styles (see e.g., Examples | Other | Arrow Styles on the website) Added function xbar(xp,i) retrieving the x-coordinate of bar i in a bar plot Added function xy2angle(dx,dy) that computes the angle (polar coords) given dx and dy Added function sdiv(x,y) implementing y == 0.0 ? 0.0 : x / y Added formatting modes "pi" and "frac" to format$ (see e.g., Examples | 2D Simple | Sin on the website) Subroutine definitions and assignments can come before the size command Checks for correct nesting of all block commands While loops are now also supported (besides until ... next loops) Support for single line then/else blocks allowing code such as if a < 1 then print a "is smaller than 1" else if a < 2 then print a "is smaller than 2 but larger than 1" else if a < 3 then print a "is smaller than 3 but larger than 2" else print a "is larger than 3" LaTeX expressions can now also be used in combination with .ps output Axis scales are now computed based on the datasets that are actually used Graph block can include function calls, of which the output is clipped to the graph window (see e.g., Examples | 2D Complex | Labeled Scatter on the website) The manip utility has been integrated back into the GLE distribution (see e.g., this screenshot of manip). 4.0.11 (December, 2005) Adds the contour utility for generating contour plots. Adds the fitz utility for generating 3d plots based on given data. Adds support for command line arguments using nargs() arg(i) and arg$(i). Adds the command line option -o to specify the name of the output file. Fixes a bug with accents (\^, \i, and \j are supported now). The \tex{} escape sequence can now also be used in tables. From and to specifications are now optional for let command. 4.0.10 (November, 2005) Adds landscape support to the full page mode (orientation landscape). Improves the Windows installer (it now shows the readme, etc.). Fixes a bug in the parsing of some floating point numbers (e.g., 1.e5). Fixes a bug in user defined markers. 4.0.9 (August, 2005) Parser has been significantly improved and gives more informative error messages. >> test.gle (22) |x = 64; y = log2(x)| >> ^ >> Error: call to undefined function 'log2' TeX expressions are now included in output by default, use -inc for the "inc way". Added option -fullpage. Added pagesize and margins commands and corresponding config section. Added function eval(expr$) that evaluates expr$ and returns the result. Added option "curve angle1 angle2 d1 d2" to commands rline, aline and join. Fixed grid in log plots. Added escape sequence \expr{some_exp} that can be used in block commands and inserts the result of evaluating some_exp. EOF is stripped from .eps if included with postscript command. Special variables xgmin, xgmax, ygmin, ygmax, xg2min, xg2max, yg2min, yg2max that indicate the graph axis bounds. Fixed bug in return value of user defined functions. Fixed bug in loading of certain .tiff files that include alpha data (EXTRASAMPLE_UNASSALPHA). Angstrom symbol \AA added. Rewrote fopen/fread/fclose code based on new tokenizer. Added "fgetline chan line$" to read an entire line from a line. Added "ftokenizer chan commentchar spacetokens singletokens" to set up the tokenizer. Added command line option -c that turns GLE into a calculator. Added option -gs for fast GhostView previewing (by Axel Rohde) (only on Unix). Added rgb255() and rgb() functions. Added set arrowsize 0.5 arrowangle 30 to control shape of arrows. Local variables can now be used in graph blocks. Slope, Offset and R squared values of regression plots can be stored in global variables. Removed dependency on BOOST library. 4.0.8 (March, 2005) One executable "gle" instead of one for each driver "gle_ps" and "gle_svg". Output to .pdf/.png/.jpeg by linking to GhostScript. Support for LaTeX expressions in GLE scripts using the command "tex" or the macro "\tex{}". (Examples can be found here.) Support for bitmap import (.jpeg/.png/.tiff/.gif) using the commands "bitmap" and "bitmap_info". (An example can be found here.) Options "impulses", "steps", "fsteps", and "hist" for the graph command "dn line". Option "round" for the commands "box" and "begin box" to simplify drawing boxes with rounded corners. Command "separator" in keys to construct keys with multiple columns. Option "absolute" to the offset command to position the key, e.g., at the bottom-center of the output. Function "format$" for formatting numbers (e.g., format$(1/3,"fix 3") = 0.333). Option "format" to the axis graph command to format the labels in a similar way. Functions "pagewidth()", "pageheight()", "width(name)", "height(name)", "pointx(name)", "pointy(name)". Command "print" for writing to the command prompt. Support for config file $GLE_TOP/glerc and $HOME/.glerc (on Unix). 4.0.7 (December, 2003) No more segmentation fault when encountering some types of errors. Unix version can now handle dos text mode files, gle, makefmt and fbuild. 4.0.6 (December, 2003) Includes makefiles for OS/2. Fix for slow rendering of long complex paths in postscript file. Speed now equivalent to 3.3h. Tweak to exe and src release filenames i.e gle_version_[src,exe]_[platform].... Exits gracefully when it cant open a file such as a data file in graph, image file, include file or using fopen. 4.0.5 (November, 2003) Fix unix/linux compile issues with afm files. They now have the proper line endings for Unix. Fix compatability issue with 3.3h: ATN and ATAN now work equivalently. In 3.3h only ATN worked for arctangent? 4.0.4 (November, 2003) Fix unix/linux compile issues. Will search c:\program files\gle (WINDOWS) or \usr\local\bin (UNIX) directories if GLE_TOP environment variable is not set. Proper wildcard/globbing handling on UNIX (assumes shell does the expansion). Minor improvement on file finding and error reporting. Cleanup of unused functions and varibles in gle.cpp. Windows binary now compressed with upx. 4.0.3 (November, 2003) Accepts filenames with wildcards/globbing i.e. "gle_ps *.gle" will compile all gle files in current directory. 4.0.2 Fixed problem with program crashing when it couldn't open the gle file or include file. New zip files of source code and win32 executables. 4.0.1 Fixed problem with PATH and GLE_TOP not being set properly in installer. Fixed problem with loading include files from GLE_USRLIB. 4.0.0 Code cleanup from 3.5. Compiles with latest C++ compilers. Has better error reporting where it prints out the line number and text associated with the line (even if the error was detected in an include file). Removed ncurses dependancy. GLE 3.3g (14-May-1994) Ported to ALPHA OSF/1, some bugs still exist though. Merged changes made for gle32 and solaris and linux. GLE 3.3f (16-April-1993) fixed bug on sun's with axis labelling. dviprint -dsx Sixel graphics driver added to GLE DVIPRINT, thanks to: Evan Wilson, N Z Dairy Group Fixed RETURN statement so that it takes an optional parameter. (It always did, but why it used to work I don't know as the parameter wasn't optional) Added a yaxis option yaxis negate This is reversed the numbering on the y axis. For use with measurements below ground, where you want zero at the top and positive numbers below the zero. GLE 3.3e (1-Jan-1993) Fixed clipping of lines through a log axis. Fixed help display which was loosing two lines on multi page displays. GLE 3.3d Problem with SMOOTH on SUN machines fixed. fixed bug with named objects on postscript driver. added -nops qalifier to dviprint. GLE 3.3c (1-Apr-1992) Fixed problems with large datasets in surface and contour Fixed problem with /kern/lower/movexy and other def's Fixed bug with dviprint -depson -hires -nosquash Fixed bug with smoothing contours which made lines dissappear. (20-Sep-1992) Fixed bug with UNTIL looping. Removed limit of number of 'saved' points. (1-Dec-1992) Fixed tokenizer so "ab\"cdef" would accent the 'c' as expected. GLE 3.3b (25-Mar-1992) Bigfile now accepts variables in place of the file name, e.g. xxx$ = "test.dat,2,3" d1 bigfile xxx$ Added AUTOSCALE option to bigfile e.g.: d1 bifile a.dat line autoscale This pre-reads the file to scale the axis, which is slow but sometimes required. Updated version of inittex.ini which was causing problems with /char /def /movexy UNIX: install.com now copies graph.idx into system area. VMS: dviprint symbol added to CGLE_LOGIN.COM GLE 3.3a (27-Jan-1992) Bug: lowercase xnames labels being mis-aligned is fixed. Gle now writes out gletmp.t1 .t2 .t3 .t4 instead of .bak so you have four backup versions if something crashes. Fixed axis rounding errors for labels, e.g. .1 to .9 step .1 might occasionally stop at .8 Fixed filled boxes on DVIGLE driver, the filled region wasn't being translated if a scale or rotate was being used. Added commands: fopen, fclose, fread, freadln, fwrite, fwriteln E.G.: fopen "file.dat" inchan read fopen "file.out" outchan write until feof(inchan) fread inchan x y z aline x y rline x z fwriteln outchan x*2 "y =" y next fclose inchan fclose outchan The following accents now work. \` \' \v \u \= \^ \. \H \~ \" e.g. text P\'e ter GLE 3.2i (1-Jan-1992) Improvements made to lstyle for dot matrix and laserjet drivers. It now works!, patterns which don't divide into 32 bits and dashlen are both supported. (Thanks to Frank Evans) HPGL driver modified, now supports sizes greater than a3. New symbols HPGL_ADDX, HPGL_ADDY add a margin to the plot. These default to .9cm and 1.5cm Bug in 'E' format numbers, 5e+7 was interpreted as 5+7 = 12 instead of 50,000,000 (5e7 was always interpreted correctly) GLE 3.2g (1-Nov-1991) All bitmap dot matrix drivers have been re-written: dvigle dvilj, dvilj300, dviepson, dviep24 They now perform clipping and filling correctly, funny glitches in filled characters (texcmr) have been fixed. They also support a much wider range of fill styles Print the file DVIFILL.GLE to see the supported fill options. The command syntax has changed, the commands: dvilj, dvilj300, dviepson, dviep24 Have been replaced by: dviprint -dlj dviprint -dlj -hires (was dvilj300) dviprint -depson dviprint -depson -hires (was dviep24) Support for HP-PaintJet printers has been added: dviprint -dpj Usage: dviprint [-depson | -dlj] [-old] [-hires] [-debug] [-output xx.prt] -depson To produce output for epson printers -dwp To add tiff image to wp .eps file -dlj To produce output for HP LaserJet printers -dpj To produce output for HP PaintJet printers -dover Overhead transparency mode for PaintJet -old For old HP Laser Jet printers (no compression) -hires Uses high resolution for that printer (slower) -wide If your printer has a wide carriage -noflip Disable's auto flipping -nosquash Tries to print it full size -compress Force internal bitmap compression (slow,saves memory) -noff No form feed -debug Prints debug messages -out x.x Prints output to file instead of printer port ... 3d Bar graphs are now supported, the commands are: bar d1,d2 3d .5 .3 side red,green notop bar d3,d4 3d .5 .3 side red,green top black,white Take note of comma's. 3d (xoffset yoffset) Specifies the x and y vector used to draw the receding lines, they are defined as fractions of the width of the bar. A negative xoffset will draw the 3d bar on the left side of the bar instead of the right hand side. side (color list) The color of the side of each of the bars in the group. top (color list) The color of the top part of the bar notop Turns off the top part of the bar, use this if you have a stacked bar graph so you only need sides on the lower parts of each stack. Note: You won't see the color of the side or top on the pc screen. GLE 3.2 (6-Mar-1991) File type changed from STREAM_LF to normal vax format. SMOOTHM option added which is identical to SMOOTH but will allow multi-valued functions. (e.g. circles etc) TWIDTH("") and THEIGHT("") functions fixed again. V3.2b DEFINE MARKER myname subnamex MARKER myname Allows you to define a new marker as any subroutine. e.g. to define a character from the postscript ZapDingbats font as a marker you would use. sub subnamex size mdata gsave ! save font and x,y set just left font pszd hei size t$ = "\char{102}" rmove -twidth(t$)/2 -theight(t$)/2 ! Centers marker write t$ grestore ! restores font and x,y end sub The second parameter can be supplied using the MDATA command when drawing a graph, this gives the marker subroutine a value from another dataset to use to draw the marker. For example the marker could vary in size, or angle, with every one plotted. d3 MARKER myname MDATA d4 Encapsulated Postscript option modified so that WordPerfect won't clip the edge of the drawing. On a PC the /EPS qualifier will now create a file using an extension of .EPS instead of .PS DEFMARKER mname fontname char_num scale dx dy This command defines a new marker, from any font, it is automatically centered but can be adjusted using dx,dy. e.g. defmarker hand pszd 43 1 0 0 Bug in set color in PS devices which caused the color to affect a previous line is fixed. Added built in function which returns a string describing the device. e.g. DEVICE$() = "HARDCOPY, PS," on the postscript driver. This can be used to use particular fonts etc on appropriate devices. E.g.: if pos(device$(),"PS,",1)>0 then set font psncsb end if POS(src$,search$,start) string function fixed (surprise surprise) The editor now tolerates lines > 80 characters. Fixed bug which caused incorrect characters to be drawn on pc screen occasionally. V3.2c Pressing ESC repeatedly will now abort a redraw operation. (on PC) Load and Saveas will now default to .GLE Bug with tex macro replacement fixed. Bug with mouse cursor not appearing on HERC screens is fixed. WPGLE.EXE added, this command will produce a special output file which contains EPS for PostScript printers and a crude bitmap for WordPerfect to display on the screen. V3.2e Fixed some colour mapping and added, purple, orange, pink, brown. V3.2f Modified maximum size of dvilj,dvilj300,dviepson,dviep24 so that all can take graphs up to 19cm x 27cm Added command line switches /nod (add ^D to ps file) /addd (Don't add ^D to ps file) /nomaxpath (Don't choke on complex fill paths) /fill (For dvibit, makes bar's filled instead of shaded) Added symbol for PC. GLE_NOCONTROLD TRUE (Stops ^D being added to ps files) (this is the default for unix) The DCL symbol GLE_NOCONTROLD should be set to "TRUE" to kill the ^D on vms systems. If you set the DCL symbol GLE_EDITOR to TPU then you will get TPU instead of EDT when you press ^E You can now tell gle about postscript fonts that you have downloaded into your own printer. Lets pretend we are adding a font called Greek-Bold 1) Download the font into you laser printer 2) Add a line to FONT.DAT psgb 86 psgb.fmt plsr.fve psgb.fmt a b c d a = GLE's name for the font b = The next unused number in font.dat c = The font metric file, this can be created using makefmt from and adobe font metric file (.afm) which you should have been supplied with your font. d = The font vector file, this is just a font that that gle can use to draw your font on non postscript devices. 3) Add a line to psfont.dat psgb Greek-Bold This tells the postscript driver that this is a font that the printer knows how to deal with. GLE 3.1e (1-Mar-1990) Errbars will now work with the bigfile option. x2ticks now come back on again if you turn the xaxis off and x2axis on (The error bars distances cannot also be a bigfile) if you use a let d1 = exp from 1 to 10000 step 1 with a log xaxis it doesn't produce a smooth line. GLE now checks and if the xaxis is a LOG scale then it uses the step option as an approximate required number of intervals which it spreads along the xaxis in increasing steps. In the graph module, if you use '0' as a column for the x data of a bigfile GLE will generate xdata of 1,2,3,4 ... e.g. d1 bigfile a.dat,0,2 Data separated with commas and no spaces was being read incorrectly The data reading routine has been re-written. (introducing new and more interesting bugs in the process) GLE 3.1d (19-Feb-1990) In the past "TEXT a\delta b" would have produced a space between the delta character and the letter b, this action was incorrect and had been fixed. Use "TEXT a\delta\ b" to get a space. "TEXT a(\delta)b" also works now. GLE 3.1c Built in functions twidth("") and theight("") now work. Their is now a BIGFILE command for executing large gle files that won't fit into memory using INCLUDE. (note this should not be confused with the BIGFILE graph command). e.g. BIGFILE NZMAP.GLE As bigfile compiles and executes the gle file one line at a time you cannot use multi line structures (subs, if then else etc) but you can call subroutines if they are defined before the bigfile statement. Lines in bitmap drivers are now the right length (text looks better) There is currently a limitation on the size of text or tables that can be printed (this may be fixed at a later date) The xg() and yg() functions now work if the graph has log axes A bug which stopped the last line of a data file being read had been fixed. Correction to expression passing allows IF A$="ABC" THEN ... to work. Added shading styles RSHADE, RSHADE1, RSHADE2 ...(Lines at right angles) GLE 3.1b Fixed the circle fill command so it uses the right colour. Modified PostScript arrows with wide lines so they look nice. They are now filled triangles rather than two short lines. There is now an example in BOXR.GLE which shows you how to define a subroutine to draw boxes with rounded corners. Horizontal error bars have been added, the commands are HERR, HERRLEFT, HERRRIGHT, HERRWIDTH If you had the same subroutine defined twice in a gle file it would skip the intervening gle commands, this is fixed. Arcto fixed for line devices (hpgl) Stacked bargraphs should not contain missing values, replace missing values with the value from the column on the left. e.g. 1 22 * 45 becomes 1 22 22 45 GLE 3.1a Bug with reading exponential format numbers fixed. Bigfile option added, so that you can extract particular columns of data from a data file, e.g. D1 LINE BIGFILE TEST.DAT,3,2 Will use column 3 for x values and column 2 for y values. e.g. ' data x.dat d3 line becomes d3 line bigfile x.dat,1,4 As dataset three is made from columns 1 and 4. The space codes (\: \; \,) are now proportional to the current font size. text \rule{2}{3} will draw a box, and \glass can be used to offset text. GLE 3.1 Modified default DPOINTS setting so that if DTICKS is not a whole number it will display one decimal point. e.g. (1.0, 1.5, 2.0) instead of (1 1.5 2) the "graph data d2=c3,c1" option now requires no spaces within the "d1=c1,c2" Begin path wasn't issuing a newpath, so multiple paths got added together. Gle files can now begin with a numeric character. Bug with bitmap drivers fixed (dviepson, dvilj300 etc) which resulted in a stray horizontal line on the page. The editor doesn't display long lines correctly, it does store them though. On the PC the PSGLE driver now writes output files to INPUTFILE.PS instead of out.ps e.g. bar.gle --> bar.ps Added \linegap{-1} tex primitive to stop odd spaces lines when using super/subscripts. vscale and hscale were not being reset after each graph. Some of the characters which were missing from the PLOTTER fonts have now been installed (e.g. []{}<>% ) You can no add lines and text to a drawing using the mouse or arrow keys on the PC version of gle. There is now a graph command, FULLSIZE which sets vscale,hscale to 1, and turns the border off. GLE 3.0h Fixed bug with LSTYLE in PSGLE (on the pc only) You can change the size of the default key by setting the hei of text used to draw the key. e.g. begin graph ... key hei 1.2 end graph If the value of an error bar length is a missing value then that particular bar won't be drawn. If you escape out of the idiot graph creation menu it will now correctly put an END GRAPH in your file. Line and Grid shading has been added to the postscript device driver, the following colour names are now accepted. shade,shade1,shade2,shade3,shade4,shade5 grid,grid1,grid2,grid3,grid4,grid5 e.g. BAR 2 3 FILL GRID3 Print the example file SHADE.GLE on a postscript printer and stick it on the wall for reference. ($ cgle shade /print) Bug with changing diskdrives on a PC is fixed. The fonts SSBI and SSI were reversed on the laser printer. There is now an axis qualifier SHIFT for shifting the labelling horizontally (when the label refers to the data between the two ticks) e.g. xaxis shift .4 In order to put a large space between two words you must use these control sequences e.g. TEXT Hello \; world \, = .1cm \: = .2cm \; = .4cm Use \_ to get an underscore character inside text ("_" normally means subscript) Fixed X2AXIS SIDE ON HPGL Plotter pens 1=black, 2=red, 3=green, 4=blue, 5=magenta, 6=white Bug fixed in linestyles caused by the cap being set to ROUND which merges the dashes together for wide lines on the laser printer. GLE 3.0g Fixed bug with smoothing more that 200 points Fixed bug with joining between saved objects. When using the plotter fonts you may find some characters are missing, e.g. %,[ and ] (These have now been put into these fonts V3.1) The following command will replace these characters with latex equivalents. size 24 18 text \chardef{%}{{\setfont{texcmr}\char{37}}} text \chardef{[}{{\setfont{texcmr}\char{91}}} text \chardef{]}{{\setfont{texcmr}\char{93}}} ... rest of gle file GLE 3.0e (17-Sep-1990) Missing values are not used to calculate new dataset values during a let command (e.g. "let d3 = sin(d2)") Fixed bug in LOG data display. (If you have used LOG axis prior to this release you SHOULD replot your graphs) The bigfile option now works with markers as well as lines. (e.g. "d3 bigfile "year.dat" lstyle 1 marker dot ") GLE 3.0d (5-Sep-1990) The default labelling of axes is sometimes not ideal, for example 0 0.333333 0.6666667 1.0 you can now adjust this with the command "XAXIS DPOINTS 3" which sets the decimal places for an axis. e.g. 0.000 0.3330.666 1.000 The MSCALE option now works. Markers have been reduced in size, this will affect existing gle files, they are now approx 60% of there original size. The bigfile option now works on postscript printers, there was a bug caused by sending an entire 10,000 point curve to the printer as one path which it choked on if it was short of memory. You will occasionally get an error message "PATH TOO COMPLEX" this means that GLE decided to split up a line into shorter segments. Normally this WARNING can be ignored. The default axis labelling of 1, 1.5, 2 has been changed to 1.0, 1.5, 2.0 Exponent axis labelling has been fixed 2.00000e4 becomes 2.0e4 *** NEW DEVICE DRIVERS *** GLE now supports the EPSON 8PIN and 24Pin printers, and the HP deskjet/laserjet printers. To support bitmap devices which require a large amount of memory GLE first writes a device independent file OUT.DVI, you then run the bitmap driver for your printer and that prints directly to LPT1: e.g. C:\GLE> dvigle myfile (produces OUT.DVI) C:\GLE> dviepson (creates bitmap and prints to lpt1) The output options are: C:\GLE> DVIEPSON Standard epson printer C:\GLE> DVIEP24 24 Pin epson printers (180 dpi) C:\GLE> DVILJ HP Laser jet, Desk jet (150 dpi) C:\GLE> DVILJ300 HP Laser jet, Desk jet (300 dpi) The hi resolution drivers are significantly slower (2-3 times) than the low resolution drivers so would only be used for final copies. By default the fonts (RM, RMB, SS, TT etc) will all map to PLSR (plotter simplex roman) on both bitmap drivers and the HPGL driver. If you want this to happen on other drivers then put the command "PLOTTER FONTS" right after your SIZE command in your gle file. An lwidth of .00001 on a laser printer will give you 1 pixel width lines. (and won't occasionally round to two pixels) Using Postscript and HP drivers on the PC: C:\GLE\> PSGLE MYFILE.GLE (Writes myfile.ps) C:\GLE\> HPGLE myfile.gle (Writes out.hp) Making a 360K distribution diskette from the 1.2M diskette. (if a: = 1.2Meg disk, b: = 360K disk) a:> copy a:install.exe b: a:> copy a:pkunzip.exe b: a:> copy a:gle1.zip b: a:> copy a:gle2.zip b: a:> copy a:gle3.zip b: a:> copy a:gle4.zip b: To install GLE on a pc type: C:\> a:install GLE 3.0c Bug with LaTeX symbols in graph titles fixed. Extra graph dataset qualifiers "BIGFILE and NOMISS" NOMISS removes missing values from a dataset. (so disjointed lines are re-connected) (e.g. "d3 colour red nomiss") BIGFILE allows a very large dataset to be drawn on a PC, it doesn't read the dataset into memory as usual. (but must be in a file with only one dataset, and no BARS or markers can be drawn. And axis ranges must be specified by hand. (e.g. "d3 bigfile "year.dat" lstyle 1") Fonts: The LaTeX greek font is missing from the small distribution disk. It is now possible to copy on any missing font directly into the c:\gle\font\ directory. Copy both the FMT and FVE files. e.g. "texcmmi.fmt, texcmmi.fve" set join mitre | round | bevel set cap but | round | square Fixed: Superscript, Subscript Symbols on Laser Printer after white fill. Individual dataset scaling fixed. Notes on new Drivers: HPGL, TEK4010, P79. HPGL: With this driver you can define the symbols hpgl_open, hpgl_close to be the escape sequences required for strange hp printers. also HPGL_WIDTH, and HPGL_HEIGHT for non A3 plotters TEK: TEK_OPEN and TEK_CLOSE can be defined to allow non dec tektronix terminals, e.g. TEK_OPEN = "^[?38h" (this is normally done in CGLECMD.COM so that when you specify /DEV=V550, OR /DEV=HPA4 it defines the symbols for you. On the vax the following cgle dev qualifiers are valid: cgle myfile.gle /dev=vdisk,v550,hpgl,tek Plus any P79 supported device, your output file will be MYFILE.HPGL GLE 3.0b 2) Currently supported devices: PC version: HERC, EGA, CGA, etc (any BGI supported display) PostScript VAX version: REGIS(VT125,VT240,VT340 etc) UIS (Workstations running VWS software) PostScript (additions to this list lower down) 3) Fonts: The PC version comes on one 360K floppy, on this disk is a subset of fonts, if you use a font that isn't on this disk it will use a replacement font, and replacement metrics so the size of the text may be misleading. If you have enough disk space (another 1Meg) then you can install the complete font set. 4) PostScript: The PSGLE driver is not on the 360K Floppy, you must install it separately if you have enough disk space (another 400K) (or copy gle and data files to a VAX and use the vax PS driver) 5) Using GLE on a VT100/VT240 If your keyboard doesn't have function keys (f9-f14) then you can use GOLD 1-4 (for 11-14) and GOLD 0 (for f10) and GOLD 9 (for F9) GOLD 5 (show errors) If you run GLE on a vt100 it will work OK but not actually DRAW anything on the screen (as it thinks it's a vt240) 6) Other keyboard features: ^F will toggle between fast and slow (but nicer text) on some devices ^E will call VAX/EDT ^Z Exits from all menu's etc (like ESC on a PC) ALT-X Exits on a PC without asking you for confirmation. 7) There are currently no drivers for Plotters or DotMatrix Printers, these are planned for the next month or two (see update notices below) 8) Additions: The command "SET FONTLWIDTH value" has been added, this allows the line width of stroked fonts to be changed. gle-graphics-4.2.4c/Makefile.vc0000664000000000000000000001305211405446017015003 0ustar rootroot######################################################################## # # # GLE - Graphics Layout Engine # # # # Modified BSD License # # # # Copyright (C) 2009 GLE. # # # # Redistribution and use in source and binary forms, with or without # # modification, are permitted provided that the following conditions # # are met: # # # # 1. Redistributions of source code must retain the above copyright # # notice, this list of conditions and the following disclaimer. # # # # 2. Redistributions in binary form must reproduce the above # # copyright notice, this list of conditions and the following # # disclaimer in the documentation and/or other materials provided with # # the distribution. # # # # 3. The name of the author may not be used to endorse or promote # # products derived from this software without specific prior written # # permission. # # # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR # # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY # # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE # # GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER # # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN # # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # # ######################################################################## # # global makefile for gle # for microsoft visual C++ # !include "config.vc" ZIP_SRC_NAME = $(BASE_NAME)_$(VERSION_NUMBER).$(BUILD_NUMBER)_src.zip TAR_SRC_NAME = $(BASE_NAME)_$(VERSION_NUMBER).$(BUILD_NUMBER)_src.tar ZIP_EXE_NAME = $(BASE_NAME)_$(VERSION_NUMBER).$(BUILD_NUMBER)_exe_win32.zip INSTALL_NAME = GLE-$(VERSION_NUMBER).$(BUILD_NUMBER)-exe-win32.exe RELEASE_DIR = .\release NSIS_SCRIPT_DIR = .\contrib\packagers\nsis SRC_FILES = gle4/Makefile* gle4/config* gle4/README gle4/src/gle/* gle4/src/fonts/* gle4/src/makefmt/* gle4/src/fbuild/* gle4/src/samples/* gle4/src/TeX/* EXE_FILES = gle4/README gle4/bin/*.exe gle4/bin/font.dat gle4/bin/inittex.ini gle4/bin/font/* all: -mkdir build -mkdir build\bin cd src\gle\bitmap & nmake -f makefile.vc /nologo cd src\gle\surface & nmake -f makefile.vc /nologo cd src\gle\letzfitz & nmake -f makefile.vc /nologo cd src\gle\tokens & nmake -f makefile.vc /nologo cd src\gle & nmake -f makefile.vc /nologo cd src\fbuild & nmake -f makefile.vc /nologo cd src\makefmt & nmake -f makefile.vc /nologo cd src\fonts & nmake -f makefile.vc /nologo cd src\tex & nmake -f makefile.vc /nologo cd src\samples & nmake -f makefile.vc /nologo clean: cd src\gle\bitmap & nmake -f makefile.vc /nologo clean cd src\gle\surface & nmake -f makefile.vc /nologo clean cd src\gle\letzfitz & nmake -f makefile.vc /nologo clean cd src\gle\tokens & nmake -f makefile.vc /nologo clean cd src\gle & nmake -f makefile.vc /nologo clean cd src\fbuild & nmake -f makefile.vc /nologo clean cd src\makefmt & nmake -f makefile.vc /nologo clean cd src\fonts & nmake -f makefile.vc /nologo clean cd src\tex & nmake -f makefile.vc /nologo clean cd src\samples & nmake -f makefile.vc /nologo clean -rmdir /S /Q build -rmdir /S /Q build\bin full: clean all zipsrc tarsrc zipexe commit: cvs commit -m "commit via nmake working on version $(TAG)" # # to tag a release # tagall: cvs rtag $(TAG) $(MODULE_NAME) $(DEPENDANT_MODULES) # # for testing not a true install # install: copy bin\gle_ps.exe "c:\program files\gle" # # for building distributions # zipsrc: cd .. & zip $(ZIP_SRC_NAME) -9 $(SRC_FILES) -x *.obj *.cvsignore *.eps */CVS/ *.fve *.fmt */gle4.4D/ move ..\$(ZIP_SRC_NAME) . tarsrc: cd .. & tar -cvf $(TAR_SRC_NAME) $(SRC_FILES) --exclude=*.obj --exclude=*.zip --exclude=*.cvsignore --exclude=*.eps --exclude=*CVS* --exclude=*.fve --exclude=*.fmt --exclude=*gle4.4D* move ..\$(TAR_SRC_NAME) . bzip2 -9k $(TAR_SRC_NAME) gzip -9 $(TAR_SRC_NAME) zipexe: cd .. & zip $(ZIP_EXE_NAME) -9 $(EXE_FILES) move ..\$(ZIP_EXE_NAME) . #compress the executables upx: upx -9 --force build\bin\*.exe NSIS_VERSIONS = /DGLE_VERSION=$(MAJOR_VERSION_NUMBER).$(MINOR_VERSION_NUMBER).$(BUILD_NUMBER) installer: -mkdir $(RELEASE_DIR) -del $(RELEASE_DIR)\$(INSTALL_NAME) -makensis /V1 $(NSIS_VERSIONS) /DOUTPUT_FILENAME=$(INSTALL_NAME) $(NSIS_SCRIPT_DIR)\gle.nsi -move $(NSIS_SCRIPT_DIR)\$(INSTALL_NAME) $(RELEASE_DIR) gle-graphics-4.2.4c/config.gcc0000664000000000000000000001042011405446017014653 0ustar rootroot######################################################################## # # # GLE - Graphics Layout Engine # # # # Modified BSD License # # # # Copyright (C) 2009 GLE. # # # # Redistribution and use in source and binary forms, with or without # # modification, are permitted provided that the following conditions # # are met: # # # # 1. Redistributions of source code must retain the above copyright # # notice, this list of conditions and the following disclaimer. # # # # 2. Redistributions in binary form must reproduce the above # # copyright notice, this list of conditions and the following # # disclaimer in the documentation and/or other materials provided with # # the distribution. # # # # 3. The name of the author may not be used to endorse or promote # # products derived from this software without specific prior written # # permission. # # # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR # # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY # # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE # # GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER # # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN # # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # # ######################################################################## # # config file for gcc and make # HAVE_LIBX11 = 1 # enabling the above will include the X11 driver in gle # -Wunused-variable EXTRA_DEFS := -D __UNIX__ -Wreturn-type OBJ_SUFF =o CC =g++ EXE_SUFF = AR =ar RM =rm -rf RMDIR =rm -rf MKDIR =mkdir PATH_SEP =/ INSTALL_DIR =/usr/share/gle/$(VERSION_NUMBER).$(BUILD_NUMBER) INSTALL_BIN =$(GLE_RPM_ROOT)/usr/bin ROOT_INSTALL_DIR =$(GLE_RPM_ROOT)$(INSTALL_DIR) -include extraconfig.gcc # # other global defines # PROJECT_BINDIR = ../../build PROJECT_LIBDIR = ../../lib PROJECT_INCDIR = ../../include # # GLE_TOP does not need to be defined anymore during compile # GLE_TOP = ../../build EXTRA_INCLUDE_PATHS = EXTRA_LIB_PATHS = # On Solaris, add these to LIBS: # -lsocket -lnsl LIBS = ifeq (HAVE_LIBTIFF,1) EXTRA_DEFS := $(EXTRA_DEFS) -D HAVE_LIBTIFF ifdef LIBTIFFDIR EXTRA_INCLUDE_PATHS := $(EXTRA_INCLUDE_PATHS) -I$(LIBTIFFDIR) EXTRA_LIB_PATHS := $(EXTRA_LIB_PATHS) -L$(LIBTIFFDIR) endif LIBS := $(LIBS) -ltiff endif ifeq (HAVE_LIBPNG,1) EXTRA_DEFS := $(EXTRA_DEFS) -D HAVE_LIBPNG ifdef LIBPNGDIR EXTRA_INCLUDE_PATHS := $(EXTRA_INCLUDE_PATHS) -I$(LIBPNGDIR) -I$(ZLIBDIR) EXTRA_LIB_PATHS := $(EXTRA_LIB_PATHS) -L$(LIBPNGDIR) endif ifdef ZLIBDIR EXTRA_INCLUDE_PATHS := $(EXTRA_INCLUDE_PATHS) -I$(ZLIBDIR) EXTRA_LIB_PATHS := $(EXTRA_LIB_PATHS) -L$(ZLIBDIR) endif LIBS := $(LIBS) -lpng endif ifeq (HAVE_LIBX11,1) EXTRA_DEFS := $(EXTRA_DEFS) -D HAVE_X11 EXTRA_LIB_PATHS := $(EXTRA_LIB_PATHS) -L/usr/X11/lib LIBS := $(LIBS) -lX11 endif CXXFLAGS =$(VERSION_INFO) $(EXTRA_DEFS) $(EXTRA_INCLUDE_PATHS) LINKFLAGS =$(EXTRA_LIB_PATHS) $(LIBS) gle-graphics-4.2.4c/Makefile.in0000664000000000000000000004267411653523054015017 0ustar rootroot######################################################################## # # # GLE - Graphics Layout Engine # # # # Modified BSD License # # # # Copyright (C) 2009 GLE. # # # # Redistribution and use in source and binary forms, with or without # # modification, are permitted provided that the following conditions # # are met: # # # # 1. Redistributions of source code must retain the above copyright # # notice, this list of conditions and the following disclaimer. # # # # 2. Redistributions in binary form must reproduce the above # # copyright notice, this list of conditions and the following # # disclaimer in the documentation and/or other materials provided with # # the distribution. # # # # 3. The name of the author may not be used to endorse or promote # # products derived from this software without specific prior written # # permission. # # # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR # # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY # # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE # # GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER # # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN # # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # # ######################################################################## # global makefile for gle # @configure_input@ .PHONY : all .PHONY : clean .PHONY : distclean .PHONY : cleansrc .PHONY : cleandoc .PHONY : cleanfonts .PHONY : install .PHONY : uninstall .PHONY : bundle .PHONY : glegs .PHONY : qmake .PHONY : gui .PHONY : strip .PHONY : finddeps .PHONY : doc .PHONY : license .PHONY : qgle .PHONY : make_all .PHONY : pre_install .PHONY : post_install .PHONY : install_script .PHONY : install_noscript .PHONY : nsis .PHONY : snapshot .PHONY : nosnapshot .PHONY : zipsrc .PHONY : zipexe .PHONY : tarsrc .PHONY : tarsrcf include config.i include config.aconf export RUNBUILD=1 export GLE_SNAPSHOT=@GLE_SNAPSHOT@ export HAVE_EXTRA_FONTS=@HAVE_EXTRA_FONTS@ export HAVE_CAIRO=@HAVE_CAIRO@ CXX=@CXX@ CXXFLAGS=@CXXFLAGS@ CPPFLAGS=@CPPFLAGS@ LDFLAGS=@LDFLAGS@ LIBS=@LIBS@ PACKAGE_TARNAME=@PACKAGE_TARNAME@ prefix=@prefix@ exec_prefix=@exec_prefix@ datarootdir=@datarootdir@ docdir=@docdir@ INSTALL_LIB=@libdir@ INSTALL_BIN=@GLE_INSTALL_BIN@ INSTALL_DIR=@GLE_INSTALL_DATA@ INSTALL=@INSTALL@ INSTALL_PROGRAM=@INSTALL_PROGRAM@ INSTALL_DATA=@INSTALL_DATA@ MKDIR_P=@MKDIR_P@ PKGCONFIGDIR=$(INSTALL_LIB)/pkgconfig MANDIR=@mandir@ GLE_VERSION=@GLE_VERSION@ INSTALL_METHOD=install_script ifeq (@HAVE_NOSCRIPTS@,1) INSTALL_METHOD=install_noscript endif ifeq (@HAVE_QT@,1) ifeq (@HAVE_MAC@,1) INSTALL_METHOD:=$(INSTALL_METHOD) install_qgle_mac_default RUN_QGLE:=./build/bin/QGLE.app/Contents/MacOS/QGLE else INSTALL_METHOD:=$(INSTALL_METHOD) install_qgle RUN_QGLE:=./build/bin/qgle endif endif ifeq (@HAVE_AUTOPACKAGE@,1) INSTALL_METHOD:=$(INSTALL_METHOD) install_ap endif ifeq (@HAVE_LIBGLE@,1) INSTALL_METHOD:=install_libgle $(INSTALL_METHOD) else ifeq (@HAVE_LIBGLE_STATIC@,1) INSTALL_METHOD:=install_libgle $(INSTALL_METHOD) endif endif GLE_SRC_LIB_DIR:=build/lib ifeq (@HAVE_WIN32@,1) GLE_SRC_LIB_DIR:=build/bin endif DO_ALL=make_all ifeq (@MAKE_AUTOPACKAGE@,1) DO_ALL=autopackage endif WIN32_INSTALL_NAME = gle-graphics-$(GLE_VERSION)$(GLE_SNAPSHOT)-exe-win32.exe RELEASE_DIR = ./release NSIS_SCRIPT_DIR = ./contrib\packagers\nsis all: $(DO_ALL) make_all: configure -$(MKDIR_P) build -$(MKDIR_P) build/bin -$(MKDIR_P) build/lib -$(MKDIR_P) build/doc -$(MKDIR_P) build/gleinc $(MAKE) -C src/gle make_glebtool $(MAKE) -C src/gle/bitmap $(MAKE) -C src/gle/surface $(MAKE) -C src/gle/letzfitz $(MAKE) -C src/gle/tokens $(MAKE) -C src/gle $(MAKE) -C src/fbuild $(MAKE) -C src/makefmt $(MAKE) -C src/manip $(MAKE) -C src/gui -f MakefileAC $(MAKE) -C src/fonts -f Makefile.gcc $(MAKE) -C src/lib -f Makefile.gcc $(MAKE) -C src/TeX @echo "" @echo "********************************************************************" @echo "Type \"make doc\" to build the GLE reference manual (requires LaTeX)" @echo "Type \"make install\" to install GLE $(GLE_VERSION)$(GLE_SNAPSHOT)" @echo "Install data into: $(INSTALL_DIR)" @echo "Install library into: $(INSTALL_LIB)" @echo "Install binary into: $(INSTALL_BIN)" @echo "********************************************************************" @echo "" cleansrc: $(MAKE) -C src/gle/bitmap clean $(MAKE) -C src/gle/surface clean $(MAKE) -C src/gle/letzfitz clean $(MAKE) -C src/gle/tokens clean $(MAKE) -C src/gle clean $(MAKE) -C src/fbuild clean $(MAKE) -C src/makefmt clean $(MAKE) -C src/manip clean $(MAKE) -C src/gui -f MakefileAC clean $(MAKE) -C src/fonts -f Makefile.gcc clean $(MAKE) -C src/TeX clean -@$(RM) config.status -@$(RM) config.log -@$(RMDIR) build/bin -@$(RMDIR) build/lib -@$(RMDIR) build/font -@$(RMDIR) build/gleinc -@$(RM) build/glerc -@$(RM) build/init.tex -@$(RM) build/inittex.ini -@$(RM) build/manip.hlp clean: cleansrc cleandoc cleanfonts clean_dmg -@$(RMDIR) build distclean: clean -@$(RM) platform/autoconf/gle-graphics.pc -@$(RM) platform/autopackage/gle4.apspec -@$(RM) src/config.h -@$(RM) src/doc/gle.1 -@$(RM) src/fbuild/Makefile -@$(RM) src/gle/bitmap/Makefile -@$(RM) src/gle/letzfitz/Makefile -@$(RM) src/gle/Makefile -@$(RM) src/gle/surface/Makefile -@$(RM) src/gle/tokens/Makefile -@$(RM) src/gui/MakefileAC -@$(RM) src/gui/qgle.pro -@$(RM) src/makefmt/Makefile -@$(RM) src/manip/Makefile -@$(RM) src/TeX/Makefile -@$(RM) Makefile install: clean_install pre_install $(INSTALL_METHOD) post_install pre_install: -$(MKDIR_P) $(DESTDIR)$(INSTALL_DIR) -$(MKDIR_P) $(DESTDIR)$(INSTALL_BIN) -$(MKDIR_P) $(DESTDIR)$(MANDIR)/man1 -$(MKDIR_P) $(DESTDIR)$(docdir) -$(MKDIR_P) $(DESTDIR)$(PKGCONFIGDIR) -$(INSTALL_DATA) build/glerc $(DESTDIR)$(INSTALL_DIR) -$(INSTALL_DATA) build/inittex.ini $(DESTDIR)$(INSTALL_DIR) -$(INSTALL_DATA) build/init.tex $(DESTDIR)$(INSTALL_DIR) -$(INSTALL_DATA) build/manip.hlp $(DESTDIR)$(INSTALL_DIR) -$(INSTALL_DATA) src/doc/gle.1 $(DESTDIR)$(MANDIR)/man1/ -$(INSTALL_DATA) platform/autoconf/gle-graphics.pc $(DESTDIR)$(PKGCONFIGDIR)/ -cp -p -r build/font $(DESTDIR)$(INSTALL_DIR) -cp -p -r build/doc/* $(DESTDIR)$(docdir) -cp -p -r build/gleinc $(DESTDIR)$(INSTALL_DIR) -chmod -R a+rX $(DESTDIR)$(INSTALL_DIR)/font -chmod -R a+rX $(DESTDIR)$(INSTALL_DIR)/gleinc -chmod -R a+rX $(DESTDIR)$(docdir) post_install: @echo "" @echo "****************************************************************" @echo "GLE $(GLE_VERSION)$(GLE_SNAPSHOT) has been installed" @echo "You can use GLE now by entering the command \"gle\"" @echo "(Provided that $(DESTDIR)$(INSTALL_BIN) is in your PATH.)" @echo "****************************************************************" @echo "" # noscript version: do not put scripts in bin directory that set up GLE_TOP # gle does not need GLE_TOP anymore on most operating systems install_noscript: -$(INSTALL_PROGRAM) -m 755 build/bin/gle* $(DESTDIR)$(INSTALL_BIN)/ -$(INSTALL_PROGRAM) -m 755 build/bin/manip* $(DESTDIR)$(INSTALL_BIN)/ # script version: put scripts in bin directory that set up GLE_TOP install_script: -$(MKDIR_P) $(DESTDIR)$(INSTALL_DIR)/bin -cp -p build/bin/gle* $(DESTDIR)$(INSTALL_DIR)/bin/ -cp -p build/bin/manip* $(DESTDIR)$(INSTALL_DIR)/bin/ -echo "#!/bin/sh" > $(DESTDIR)$(INSTALL_BIN)/gle -echo "GLE_TOP=$(INSTALL_DIR)" >> $(DESTDIR)$(INSTALL_BIN)/gle -echo "export GLE_TOP" >> $(DESTDIR)$(INSTALL_BIN)/gle -echo "$(INSTALL_DIR)/bin/gle \$$@" >> $(DESTDIR)$(INSTALL_BIN)/gle -chmod 755 $(DESTDIR)$(INSTALL_BIN)/gle -echo "#!/bin/sh" > $(DESTDIR)$(INSTALL_BIN)/manip -echo "GLE_TOP=$(INSTALL_DIR)" >> $(DESTDIR)$(INSTALL_BIN)/manip -echo "export GLE_TOP" >> $(DESTDIR)$(INSTALL_BIN)/manip -echo "$(INSTALL_DIR)/bin/manip \$$@" >> $(DESTDIR)$(INSTALL_BIN)/manip -chmod 755 $(DESTDIR)$(INSTALL_BIN)/manip install_qgle: -$(INSTALL_PROGRAM) -m 755 build/bin/qgle $(DESTDIR)$(INSTALL_BIN)/ -@echo "" -@echo "****************************************************************" -@echo "QGLE has been installed in: $(DESTDIR)$(INSTALL_BIN)" -@echo "****************************************************************" install_libgle: -$(MKDIR_P) $(DESTDIR)$(INSTALL_LIB)/ -$(INSTALL_PROGRAM) -m 755 build/lib/libgle* $(DESTDIR)$(INSTALL_LIB)/ ##################### # Code for Mac OS/X # ##################### install_qgle_mac_default: bash platform/script/install_qgle_mac GLE_BUNDLE_TOP:=build/bin/QGLE.app/Contents/share/gle-graphics/$(GLE_VERSION) bundle: -$(MKDIR_P) build/bin/QGLE.app/Contents/bin -cp -p build/bin/gle build/bin/QGLE.app/Contents/bin/ -cp -p build/bin/glegs build/bin/QGLE.app/Contents/bin/glegs -cp -p -r build/lib build/bin/QGLE.app/Contents/ -$(MKDIR_P) $(GLE_BUNDLE_TOP)/ -cp -p build/glerc $(GLE_BUNDLE_TOP)/ -echo "begin config gle" > $(GLE_BUNDLE_TOP)/glerc -echo " current = $(VERSION_NUMBER).$(BUILD_NUMBER)" >> $(GLE_BUNDLE_TOP)/glerc -echo "end config" >> $(GLE_BUNDLE_TOP)/glerc -echo "begin config tools" >> $(GLE_BUNDLE_TOP)/glerc -echo " ghostscript = \"\$$EXELOC/../bin/glegs\"">> $(GLE_BUNDLE_TOP)/glerc -echo " libgs = \"/Library/Frameworks/Ghostscript.framework\"">> $(GLE_BUNDLE_TOP)/glerc -echo "end config" >> $(GLE_BUNDLE_TOP)/glerc -cp -p build/inittex.ini $(GLE_BUNDLE_TOP)/ -cp -p build/init.tex $(GLE_BUNDLE_TOP)/ -cp -p -r build/font $(GLE_BUNDLE_TOP)/ -cp -p -r build/doc $(GLE_BUNDLE_TOP)/ -cp -p -r build/gleinc $(GLE_BUNDLE_TOP)/ install_name_tool -change $(DESTDIR)$(INSTALL_LIB)/libgle-graphics-@GLE_VERSION@.dylib @executable_path/../lib/libgle-graphics-@GLE_VERSION@.dylib build/bin/QGLE.app/Contents/MacOS/QGLE LIBPNG_PATH=$(HOME)/staticlibs/lib/libpng14.14.dylib bundle_libpng: -cp -p $(LIBPNG_PATH) build/bin/QGLE.app/Contents/lib/libpng.dylib install_name_tool -id @executable_path/../lib/libpng.dylib build/bin/QGLE.app/Contents/lib/libpng.dylib install_name_tool -change $(LIBPNG_PATH) @executable_path/../lib/libpng.dylib build/bin/QGLE.app/Contents/MacOS/QGLE install_name_tool -change $(LIBPNG_PATH) @executable_path/../lib/libpng.dylib build/bin/QGLE.app/Contents/lib/libgle-graphics-@GLE_VERSION@.dylib otool: @echo "GLE" otool -L build/bin/QGLE.app/Contents/bin/gle @echo "GLEGS" otool -L build/bin/QGLE.app/Contents/bin/glegs @echo "MANIP" otool -L build/bin/manip @echo "LIBGLE-GRPAPHICS" otool -L build/bin/QGLE.app/Contents/lib/libgle-graphics-@GLE_VERSION@.dylib @echo "QGLE" otool -L build/bin/QGLE.app/Contents/MacOS/QGLE ##################### # Begin build DMG # ##################### # # Build file for creating DMG files. # # The DMG packager looks for a template.dmg.bz2 for using as its # DMG template. If it doesn't find one, it generates a clean one. # # If you create a DMG template, you should make one containing all # the files listed in $(SOURCE_FILES) below, and arrange everything to suit # your style. The contents of the files themselves does not matter, so # they can be empty (they will be overwritten later). # # Remko Tronçon # http://el-tramo.be/about # Licensed under the MIT License. See LICENSE.txt for details. ################################################################################ # Customizable variables ################################################################################ SOURCE_DIR ?= build/bin SOURCE_FILES ?= QGLE.app TEMPLATE_DMG ?= template.dmg ################################################################################ # DMG building. No editing should be needed beyond this point. ################################################################################ MASTER_DMG=gle-graphics-$(VERSION_NUMBER).$(BUILD_NUMBER)$(GLE_SNAPSHOT)-exe-mac.dmg WC_DMG=wc.dmg WC_DIR=wc .PHONY: dmg dmg: $(MASTER_DMG) $(TEMPLATE_DMG): $(TEMPLATE_DMG).bz2 bunzip2 -k $< $(TEMPLATE_DMG).bz2: @echo @echo --------------------- Generating empty template -------------------- mkdir template hdiutil create -fs HFSX -layout SPUD -size 60m "$(TEMPLATE_DMG)" -srcfolder template -format UDRW -volname "gle-graphics-$(VERSION_NUMBER).$(BUILD_NUMBER)$(GLE_SNAPSHOT)" -quiet rmdir template bzip2 "$(TEMPLATE_DMG)" @echo $(WC_DMG): $(TEMPLATE_DMG) cp $< $@ $(MASTER_DMG): $(WC_DMG) $(addprefix $(SOURCE_DIR)/,$(SOURCE_FILES)) @echo @echo --------------------- Creating Disk Image -------------------- mkdir -p $(WC_DIR) hdiutil attach "$(WC_DMG)" -noautoopen -quiet -mountpoint "$(WC_DIR)" for i in $(SOURCE_FILES); do \ rm -rf "$(WC_DIR)/$$i"; \ ditto -rsrc "$(SOURCE_DIR)/$$i" "$(WC_DIR)/$$i"; \ done #rm -f "$@" #hdiutil create -srcfolder "$(WC_DIR)" -format UDZO -imagekey zlib-level=9 "$@" -volname "gle-graphics-$(VERSION_NUMBER).$(BUILD_NUMBER)$(GLE_SNAPSHOT)" -scrub -quiet WC_DEV=`hdiutil info | grep "$(WC_DIR)" | grep "Apple_HFS" | awk '{print $$1}'` && \ hdiutil detach $$WC_DEV -quiet -force rm -f "$(MASTER_DMG)" hdiutil convert "$(WC_DMG)" -quiet -format UDZO -imagekey zlib-level=9 -o "$@" rm -rf $(WC_DIR) @echo .PHONY: clean_dmg clean_dmg: -rm -rf $(TEMPLATE_DMG) $(MASTER_DMG) $(WC_DMG) ##################### # End build DMG # ##################### ##################### # Make glegs # ##################### glegs: $(MAKE) -C src/gui -f MakefileAC $(PROJECT_BINDIR)/bin/glegs ##################### # Rerun qmake # ##################### qmake: $(MAKE) -C src/gui -f MakefileAC qmake qgle: $(RUN_QGLE) # Code for Autopackage install_ap: -$(INSTALL_DATA) platform/autopackage/gle.desktop $(DESTDIR)$(INSTALL_DIR) -$(INSTALL_DATA) platform/autopackage/gle.xml $(DESTDIR)$(INSTALL_DIR) -$(INSTALL_DATA) platform/autopackage/gle.png $(DESTDIR)$(INSTALL_DIR) uninstall: clean_install clean_install: -@$(RM) $(DESTDIR)$(INSTALL_BIN)/gle* -@$(RM) $(DESTDIR)$(INSTALL_BIN)/manip* -@$(RM) $(DESTDIR)$(INSTALL_BIN)/qgle* -@$(RM) $(DESTDIR)$(INSTALL_DIR)/bin/* -@$(RMDIR) $(DESTDIR)$(INSTALL_DIR)/bin -@$(RM) $(DESTDIR)$(INSTALL_DIR)/font/* -@$(RMDIR) $(DESTDIR)$(INSTALL_DIR)/font -@$(RM) $(DESTDIR)$(INSTALL_DIR)/doc/* -@$(RMDIR) $(DESTDIR)$(INSTALL_DIR)/doc -@$(RM) $(DESTDIR)$(INSTALL_DIR)/gleinc/* -@$(RMDIR) $(DESTDIR)$(INSTALL_DIR)/gleinc -@$(RM) $(DESTDIR)$(INSTALL_DIR)/* configure: configure.ac aclocal autoconf -@echo "" -@echo "****************************************************************" -@echo "Error: configure.ac changed, please reconfigure with ./configure" -@echo "****************************************************************" false gui: $(MAKE) -C src/gui -f MakefileAC zipsrc: $(MAKE) -f Makefile.gcc zipsrc tarsrc: $(MAKE) -f Makefile.gcc tarsrc tarsrcf: $(MAKE) -f Makefile.gcc tarsrcf zipexe: zip -r $(BASE_NAME)-$(VERSION_NUMBER).$(BUILD_NUMBER)$(GLE_SNAPSHOT)-exe.zip build echo "Created: $(BASE_NAME)-$(VERSION_NUMBER).$(BUILD_NUMBER)$(GLE_SNAPSHOT)-exe.zip" license: cat srcfiles.txt | xargs perl platform/script/checklicense.pl # *** WARNING *** # Don't add "strip" to the default install target: # This breaks creating "debug" packages on openSUSE and Fedora. strip: -strip build/bin/gle* -strip build/bin/fbuild* -strip build/bin/makefmt* -strip build/bin/glegs* -strip $(GLE_SRC_LIB_DIR)/libgle* -strip build/bin/qgle* -strip build/bin/manip* finddeps: ./build/bin/gle -finddeps cleandoc: $(MAKE) -C gle-refman -f Makefile.gcc clean cleanfonts: $(MAKE) -C gle-refman -f Makefile.gcc cfonts doc: -$(MKDIR_P) build/doc $(MAKE) -C gle-refman -f Makefile.gcc fig $(MAKE) -C gle-refman -f Makefile.gcc fonts $(MAKE) -C gle-refman -f Makefile.gcc pdf $(MAKE) -C gle-refman -f Makefile.gcc pdf $(MAKE) -C gle-refman -f Makefile.gcc index $(MAKE) -C gle-refman -f Makefile.gcc pdf cp gle-refman/gle-manual.pdf build/doc/ cp README.txt build/doc/ cp LICENSE.txt build/doc/ autopackage: (export APBUILD_STATIC_LIBGCC=1; export APBUILD_STATIC="tiff png12 png jpeg z"; makepackage platform/autopackage/gle4.apspec) mv gle-@GLE_VERSION@.x86.package GLE-@GLE_VERSION@-x86-linux.package nsis: strip -$(MKDIR_P) $(RELEASE_DIR) -@$(RM) $(RELEASE_DIR)/$(WIN32_INSTALL_NAME) -makensis /V1 /DGLE_VERSION=@GLE_VERSION@ /DOUTPUT_FILENAME=$(WIN32_INSTALL_NAME) contrib\\packagers\\nsis\\gle.nsi -mv contrib/packagers/nsis/$(WIN32_INSTALL_NAME) $(RELEASE_DIR) snapshot: perl platform/script/makesnapshot.pl 1 nosnapshot: perl platform/script/makesnapshot.pl 0 unit-test: make -C src/gle $(PROJECT_BINDIR)/bin/gle-unit-test gle-graphics-4.2.4c/LICENSE.txt0000664000000000000000000023006111447671544014573 0ustar rootrootGLE License ----------- GLE is licensed under the Modified BSD license. GLE comes with a user interface QGLE. QGLE is licensed under the GNU General Public License (GPL) as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. Some files distributed with GLE/QGLE are available under a different license. Detailed license information for each file can be found at the bottom of this document. License for GLE (Modified BSD) ------------------------------ Copyright (C) 2009 GLE. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. The name of the author may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. License for QGLE (GPL v2 or later) ---------------------------------- GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 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 Lesser 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 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 Lesser General Public License instead of this License. License for QGS (LGPL v2.1) --------------------------- GNU LESSER GENERAL PUBLIC LICENSE Version 2.1, February 1999 Copyright (C) 1991, 1999 Free Software Foundation, Inc. 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 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! ===================================================================================== == License information for each file ===================================================================================== *** Modified BSD License *** LICENSE.txt Makefile.gcc Makefile.in Makefile.os2 Makefile.vc README.txt config.aconf config.gcc config.i config.os2 config.vc configure configure.ac contrib/editors/highlighting/gle.nedit contrib/editors/highlighting/gle.stx contrib/editors/highlighting/vim/ftplugin/gle.vim contrib/editors/highlighting/vim/indent/gle.vim contrib/editors/highlighting/vim/syntax/gle.vim contrib/packagers/nsis/banner_image.bmp contrib/packagers/nsis/gle.nsi contrib/packagers/nsis/welcome_image.bmp contrib/packagers/nsis/www.ico gle-refman/Makefile.gcc gle-refman/Makefile.os2 gle-refman/advanced/advanced.tex gle-refman/advanced/fig/Makefile.gcc gle-refman/advanced/fig/Makefile.os2 gle-refman/advanced/fig/gc_clip.gle gle-refman/advanced/fig/gc_join.gle gle-refman/advanced/fig/house.gle gle-refman/advanced/fig/join.gle gle-refman/advanced/fig/texgraph.gle gle-refman/advanced/fig/texgraph.tex gle-refman/appendix/appendix.tex gle-refman/appendix/fig/Makefile.gcc gle-refman/appendix/fig/Makefile.os2 gle-refman/appendix/fig/ap_fonts.gle gle-refman/appendix/fig/ap_marker.gle gle-refman/appendix/fig/clip.gle gle-refman/appendix/fig/color_list_svg.gle gle-refman/appendix/fig/color_sample.gle gle-refman/appendix/fig/fonttes2.gle gle-refman/appendix/fig/fonttest.gle gle-refman/appendix/fig/join.gle gle-refman/appendix/fig/loop.gle gle-refman/appendix/fig/nzmap.gle gle-refman/appendix/fig/showfont.gle gle-refman/appendix/fig/single.dat gle-refman/appendix/fig/single.gle gle-refman/appendix/fig/stack1.gle gle-refman/appendix/fig/stack2.gle gle-refman/appendix/fig/stack4b.gle gle-refman/appendix/fig/t.gle gle-refman/appendix/fig/test.dat gle-refman/appendix/fig/test4.dat gle-refman/appendix/fig/title.gle gle-refman/appendix/fig/title32.gle gle-refman/appendix/fig/tut_slide.gle gle-refman/appendix/fig/wall.gle gle-refman/appendix/fig/xend.gle gle-refman/appendix/fig/ziptext.gle gle-refman/appendix/sm_clip.tex gle-refman/appendix/sm_fonttables.tex gle-refman/appendix/sm_join.tex gle-refman/appendix/sm_loop.tex gle-refman/appendix/sm_single.tex gle-refman/appendix/sm_stack1.tex gle-refman/appendix/sm_stack2.tex gle-refman/appendix/sm_stack4b.tex gle-refman/appendix/sym.tex gle-refman/cmd.sty gle-refman/fonttest/Makefile.gcc gle-refman/fonttest/font-table.gle gle-refman/fonttest/fonts.csv gle-refman/fonttest/fonttab.tex gle-refman/fonttest/ncleanfonts.pl gle-refman/fonttest/ndofonts.pl gle-refman/gle-manual.tex gle-refman/graph/fig/Makefile.gcc gle-refman/graph/fig/Makefile.os2 gle-refman/graph/fig/age.csv gle-refman/graph/fig/age.gle gle-refman/graph/fig/fitlin.dat gle-refman/graph/fig/gc_axes.gle gle-refman/graph/fig/gc_axisall.gle gle-refman/graph/fig/gc_bargraph1.gle gle-refman/graph/fig/gc_bargraph2.gle gle-refman/graph/fig/gc_bargraph_3d.gle gle-refman/graph/fig/gc_bean.dat gle-refman/graph/fig/gc_err.gle gle-refman/graph/fig/gc_fill.dat gle-refman/graph/fig/gc_fillgraph.gle gle-refman/graph/fig/gc_fit.gle gle-refman/graph/fig/gc_graphscale.gle gle-refman/graph/fig/gc_horizbar.csv gle-refman/graph/fig/gc_horizbar.gle gle-refman/graph/fig/gc_let.gle gle-refman/graph/fig/gc_loglabels.gle gle-refman/graph/fig/gc_logsubticks.gle gle-refman/graph/fig/gc_mathmode.gle gle-refman/graph/fig/gc_names.gle gle-refman/graph/fig/gc_nomiss.gle gle-refman/graph/fig/linemode.gle gle-refman/graph/fig/noisysine.gle gle-refman/graph/fig/normal.csv gle-refman/graph/fig/normal.gle gle-refman/graph/fig/test.dat gle-refman/graph/graph.tex gle-refman/key/fig/Makefile.gcc gle-refman/key/fig/Makefile.os2 gle-refman/key/fig/grkey.gle gle-refman/key/fig/k_key.gle gle-refman/key/fig/keypos.gle gle-refman/key/fig/multicolkey.gle gle-refman/key/key.tex gle-refman/obsolete/fonts.tex gle-refman/obsolete/gle32.tex gle-refman/obsolete/obsolete.tex gle-refman/obsolete/sm_gle32_prog.tex gle-refman/obsolete/sm_gle32_tut.tex gle-refman/obsolete/symbols.tex gle-refman/primitives/cmds.tex gle-refman/primitives/fig/Makefile.gcc gle-refman/primitives/fig/Makefile.os2 gle-refman/primitives/fig/curve.gle gle-refman/primitives/fig/fullpage.gle gle-refman/primitives/fig/gc_arc.gle gle-refman/primitives/fig/gc_arcto.gle gle-refman/primitives/fig/gc_arrstyle.gle gle-refman/primitives/fig/gc_beginbox.gle gle-refman/primitives/fig/gc_bezier.gle gle-refman/primitives/fig/gc_cap.gle gle-refman/primitives/fig/gc_color.gle gle-refman/primitives/fig/gc_curve.gle gle-refman/primitives/fig/gc_fontlwidth.gle gle-refman/primitives/fig/gc_for.gle gle-refman/primitives/fig/gc_justify.gle gle-refman/primitives/fig/gc_ljoin.gle gle-refman/primitives/fig/gc_lstyle.gle gle-refman/primitives/fig/gc_marker.gle gle-refman/primitives/fig/gc_nonzero.gle gle-refman/primitives/fig/gc_rot1.gle gle-refman/primitives/fig/gc_rot2.gle gle-refman/primitives/fig/gc_table.gle gle-refman/primitives/fig/gc_text.gle gle-refman/primitives/fig/gc_write.gle gle-refman/primitives/fig/gc_xend.gle gle-refman/primitives/fig/grids.gle gle-refman/primitives/fig/setcolor.gle gle-refman/prog/fig/Makefile.gcc gle-refman/prog/fig/axisformat.gle gle-refman/prog/prog.tex gle-refman/script/manual.gle gle-refman/title/Makefile.gcc gle-refman/title/Makefile.os2 gle-refman/title/glelogo.gle gle-refman/title/sm_special.tex gle-refman/title/title.tex gle-refman/tutorial/fig/Makefile.gcc gle-refman/tutorial/fig/Makefile.os2 gle-refman/tutorial/fig/tut.dat gle-refman/tutorial/fig/tut3.dat gle-refman/tutorial/fig/tut_graph.gle gle-refman/tutorial/fig/tut_graph2.gle gle-refman/tutorial/fig/tut_graph3.gle gle-refman/tutorial/fig/tut_simple.gle gle-refman/tutorial/fig/year-2000.csv gle-refman/tutorial/fig/year-2001.csv gle-refman/tutorial/tutorial.tex gle-refman/utilities/contour.tex gle-refman/utilities/fig/Makefile.gcc gle-refman/utilities/fig/Makefile.os2 gle-refman/utilities/fig/fitls.dat gle-refman/utilities/fig/fitls.gle gle-refman/utilities/fig/fitz.dat gle-refman/utilities/fig/fitz1.gle gle-refman/utilities/fig/fitz1/fitz1.big gle-refman/utilities/fig/fitz1/fitz1.dat gle-refman/utilities/fig/fitz1/fitz1.sur gle-refman/utilities/fig/fitz1/fitz1.z gle-refman/utilities/fig/gaussian.gle gle-refman/utilities/fig/jack.gle gle-refman/utilities/fig/jack/jack.big gle-refman/utilities/fig/jack/jack.let gle-refman/utilities/fig/jack/jack.sur gle-refman/utilities/fig/jack/jack.z gle-refman/utilities/fig/saddle-contour.gle gle-refman/utilities/fig/saddle.gle gle-refman/utilities/fig/saddle/saddle.big gle-refman/utilities/fig/saddle/saddle.let gle-refman/utilities/fig/saddle/saddle.sur gle-refman/utilities/fig/saddle/saddle.z gle-refman/utilities/fig/surf/surf1.big gle-refman/utilities/fig/surf/surf1.sur gle-refman/utilities/fig/surf/surf1.z gle-refman/utilities/fig/surf/surf2.big gle-refman/utilities/fig/surf/surf2.sur gle-refman/utilities/fig/surf/surf3.big gle-refman/utilities/fig/surf/surf3.dat gle-refman/utilities/fig/surf/surf3.sur gle-refman/utilities/fig/surf/surf4.big gle-refman/utilities/fig/surf/surf4.sur gle-refman/utilities/fig/surf/surf5.big gle-refman/utilities/fig/surf/surf5.sur gle-refman/utilities/fig/surf/surf5b.big gle-refman/utilities/fig/surf/surf5b.sur gle-refman/utilities/fig/surf1.gle gle-refman/utilities/fig/surf2.gle gle-refman/utilities/fig/surf3.gle gle-refman/utilities/fig/surf4.gle gle-refman/utilities/fig/surf5.gle gle-refman/utilities/fig/surf5b.gle gle-refman/utilities/fig/volcano.gle gle-refman/utilities/fig/volcano.z gle-refman/utilities/fig/xyz.gle gle-refman/utilities/fig/xyz/xyz.big gle-refman/utilities/fig/xyz/xyz.dat gle-refman/utilities/fig/xyz/xyz.key gle-refman/utilities/fig/xyz/xyz.lab gle-refman/utilities/fig/xyz/xyz.sur gle-refman/utilities/fig/xyz/xyz.z gle-refman/utilities/fitls.tex gle-refman/utilities/fitz.tex gle-refman/utilities/letz.tex gle-refman/utilities/manip.tex gle-refman/utilities/surface.tex platform/autoconf/gle-graphics.pc.in platform/autopackage/gle.desktop platform/autopackage/gle.gle platform/autopackage/gle.png platform/autopackage/gle.xml platform/autopackage/gle4.apspec.in platform/autopackage/qt-replace.pl platform/script/checkdos platform/script/checklicense.pl platform/script/collectsrcfiles.pl platform/script/correctfilemodes.pl platform/script/dosperc platform/script/install_qgle_mac platform/script/killspace platform/script/killtrailspace.pl platform/script/licenses.csv platform/script/makesnapshot.pl platform/script/srcfiles.csv src/TeX/Makefile.gcc src/TeX/Makefile.in src/TeX/Makefile.os2 src/TeX/Makefile.vc src/TeX/init.tex src/TeX/makeinittex.cmd src/config.h.in src/config.h.os2 src/config_noauto.h src/doc/gle.1.in src/fbuild/Makefile.gcc src/fbuild/Makefile.in src/fbuild/Makefile.os2 src/fbuild/Makefile.vc src/fbuild/basicconf.h src/fbuild/fbuild.cpp src/fbuild/files.txt src/fbuild/token.cpp src/fbuild/token.h src/fonts/LICENSE-FONTS.txt src/fonts/Makefile.gcc src/fonts/Makefile.os2 src/fonts/Makefile.vc src/fonts/adobestd.enc src/fonts/checkfonts.pl src/fonts/font.dat src/fonts/glemark.afm src/fonts/glemark.gle src/fonts/psfont.dat src/fonts/texstd.enc src/gle/Makefile.gcc src/gle/Makefile.in src/gle/Makefile.os2 src/gle/Makefile.vc src/gle/all.h src/gle/axis.cpp src/gle/axis.h src/gle/b_tab.cpp src/gle/b_text.cpp src/gle/basicconf.h src/gle/begin.cpp src/gle/begin.h src/gle/bitmap/Makefile.gcc src/gle/bitmap/Makefile.in src/gle/bitmap/Makefile.os2 src/gle/bitmap/Makefile.vc src/gle/bitmap/ascii85.cpp src/gle/bitmap/files.txt src/gle/bitmap/glegif.cpp src/gle/bitmap/glegif.h src/gle/bitmap/glejpeg.cpp src/gle/bitmap/glepng.cpp src/gle/bitmap/gletiff.cpp src/gle/bitmap/img2ps.cpp src/gle/bitmap/img2ps.h src/gle/bitmap/lzwencode.h src/gle/cmdline.cpp src/gle/cmdline.h src/gle/color.cpp src/gle/color.h src/gle/config.cpp src/gle/config.h src/gle/core.cpp src/gle/core.h src/gle/curve.cpp src/gle/cutils.cpp src/gle/cutils.h src/gle/d_cairo.cpp src/gle/d_dummy.cpp src/gle/d_interface.h src/gle/d_ps.cpp src/gle/d_svg.cpp src/gle/d_x.cpp src/gle/drawit.cpp src/gle/drawit.h src/gle/eval.cpp src/gle/f2c.h src/gle/file_io.cpp src/gle/file_io.h src/gle/files.txt src/gle/fitbez.cpp src/gle/fitcf.cpp src/gle/fitcf.h src/gle/fn.cpp src/gle/fn.h src/gle/font.cpp src/gle/font.h src/gle/general.cpp src/gle/gle-base.cpp src/gle/gle-datatype.cpp src/gle/gle-interface.cpp src/gle/gle-interface/gle-base.h src/gle/gle-interface/gle-const.h src/gle/gle-interface/gle-datatype.h src/gle/gle-interface/gle-interface.h src/gle/gle-interface/gle-sourcefile.h src/gle/gle-sourcefile.cpp src/gle/gle.cpp src/gle/glearray.cpp src/gle/glearray.h src/gle/glec.cpp src/gle/glepro.h src/gle/gprint.cpp src/gle/gprint.h src/gle/graph.cpp src/gle/graph.h src/gle/graph2.cpp src/gle/justify.h src/gle/key.cpp src/gle/key.h src/gle/keyword.cpp src/gle/keyword.h src/gle/leastsq.cpp src/gle/leastsq.h src/gle/letzfitz/Makefile.gcc src/gle/letzfitz/Makefile.in src/gle/letzfitz/Makefile.os2 src/gle/letzfitz/Makefile.vc src/gle/letzfitz/f2c.h src/gle/letzfitz/ffit.cpp src/gle/letzfitz/files.txt src/gle/letzfitz/fit.cpp src/gle/letzfitz/let.cpp src/gle/mem_limits.h src/gle/memory.cpp src/gle/mychar.cpp src/gle/numberformat.cpp src/gle/numberformat.h src/gle/op_def.cpp src/gle/op_def.h src/gle/pass.cpp src/gle/pass.h src/gle/polish.cpp src/gle/polish.h src/gle/run.cpp src/gle/run.h src/gle/savgol.cpp src/gle/glebtool.cpp src/gle/sub.cpp src/gle/sub.h src/gle/surface/Makefile.gcc src/gle/surface/Makefile.in src/gle/surface/Makefile.os2 src/gle/surface/Makefile.vc src/gle/surface/f2c.h src/gle/surface/fcontour.cpp src/gle/surface/ffitcontour.cpp src/gle/surface/files.txt src/gle/surface/gcontour.cpp src/gle/surface/gsurface.cpp src/gle/surface/gsurface.h src/gle/surface/hide.cpp src/gle/surface/vdevice.cpp src/gle/surface/vdevice.h src/gle/tex.cpp src/gle/tex.h src/gle/texinterface.cpp src/gle/texinterface.h src/gle/token.cpp src/gle/token.h src/gle/tokens/BinIO.cpp src/gle/tokens/BinIO.h src/gle/tokens/CharBitMap.h src/gle/tokens/Makefile.gcc src/gle/tokens/Makefile.in src/gle/tokens/Makefile.os2 src/gle/tokens/Makefile.vc src/gle/tokens/RefCount.h src/gle/tokens/StringKeyHash.cpp src/gle/tokens/StringKeyHash.h src/gle/tokens/Tokenizer.cpp src/gle/tokens/Tokenizer.h src/gle/tokens/Tokenizer.i src/gle/tokens/files.txt src/gle/tokens/stokenizer.h src/gle/var.cpp src/gle/var.h src/lib/Makefile.gcc src/lib/Makefile.os2 src/lib/barstyles.gle src/lib/color.gle src/lib/compat/colors-gle-4.0.12.gle src/lib/compatibility.gle src/lib/contour.gle src/lib/ellipse.gle src/lib/feyn.gle src/lib/graphutil.gle src/lib/piesub.gle src/lib/polarplot.gle src/lib/shape.gle src/lib/simpletree.gle src/lib/stm.gle src/lib/tree.gle src/lib/ziptext.gle src/makefmt/Makefile.gcc src/makefmt/Makefile.in src/makefmt/Makefile.os2 src/makefmt/Makefile.vc src/makefmt/basicconf.h src/makefmt/files.txt src/makefmt/makefmt.cpp src/makefmt/parseAFM.diff src/manip/Makefile.dj src/manip/Makefile.gcc src/manip/Makefile.in src/manip/Makefile.os2 src/manip/all.h src/manip/cell.cpp src/manip/cell.h src/manip/cmd.cpp src/manip/cmd.h src/manip/color.h src/manip/cursesscr.cpp src/manip/edt.h src/manip/eval.cpp src/manip/eval.h src/manip/ffblk_def.h src/manip/filemenu.cpp src/manip/filemenu.h src/manip/files.txt src/manip/fn.cpp src/manip/general.cpp src/manip/keyword.cpp src/manip/keyword.h src/manip/manip.cpp src/manip/manip.h src/manip/manip.hlp src/manip/mjl.cpp src/manip/mjl.h src/manip/mscreen.h src/manip/mygraph.h src/manip/nofnkeys.h src/manip/polish.cpp src/manip/sub.cpp src/manip/test.dat src/manip/token.cpp src/manip/unix_extra.cpp src/manip/unix_extra.h src/manip/unixinkey.cpp src/manip/unixscr.cpp src/manip/var.cpp src/manip/varargs.cpp src/manip/vaxconio.h src/manip/vaxinkey.cpp src/samples/Makefile.gcc src/samples/Makefile.os2 src/samples/Makefile.vc src/samples/qgle_keyboard.gle src/samples/sample.gle src/samples/sample_compare.eps ===================================================================================== *** LGPL v2.1 or later *** src/gui/qgs.cpp src/gui/qgs.h ===================================================================================== *** GPL v2 or later *** contrib/editors/highlighting/gle-emacs.el platform/autoconf/config.guess platform/autoconf/config.sub src/gui/MakefileAC.in src/gui/about.cpp src/gui/about.h src/gui/about.html src/gui/amove.cpp src/gui/amove.h src/gui/arc.cpp src/gui/arc.h src/gui/circle.cpp src/gui/circle.h src/gui/colourbutton.cpp src/gui/colourbutton.h src/gui/colourpicker.cpp src/gui/colourpicker.h src/gui/component.cpp src/gui/component.h src/gui/consolewindow.cpp src/gui/consolewindow.h src/gui/dialogues.cpp src/gui/dialogues.h src/gui/downloader.cpp src/gui/downloader.h src/gui/doxyfile src/gui/drawingobject.cpp src/gui/drawingobject.h src/gui/ellipse.cpp src/gui/ellipse.h src/gui/fileinfo.cpp src/gui/fileinfo.h src/gui/gledrawing.cpp src/gui/gledrawing.h src/gui/glegs.cpp src/gui/gpl.txt src/gui/grid.cpp src/gui/grid.h src/gui/images/amove.png src/gui/images/arc_3p.png src/gui/images/circle.png src/gui/images/edit_mode.png src/gui/images/editor.png src/gui/images/ellipse.png src/gui/images/ellipsis.png src/gui/images/gle.icns src/gui/images/gle.ico src/gui/images/gle.png src/gui/images/gle_shadow.png src/gui/images/gle_icon.png src/gui/images/grid.png src/gui/images/grid_snap.png src/gui/images/line.png src/gui/images/new.png src/gui/images/open.png src/gui/images/orthosnap.png src/gui/images/osnap.png src/gui/images/perp_line.png src/gui/images/pointer.png src/gui/images/polarsnap.png src/gui/images/polartrack.png src/gui/images/preview_mode.png src/gui/images/reload.png src/gui/images/reload_red.png src/gui/images/save.png src/gui/images/tan_line.png src/gui/images/text.png src/gui/images/varyingcolours.png src/gui/images/zoom_in.png src/gui/images/zoom_out.png src/gui/line.cpp src/gui/line.h src/gui/macspecific.cpp src/gui/main.cpp src/gui/mainwindow.cpp src/gui/mainwindow.h src/gui/newfile.cpp src/gui/newfile.h src/gui/objectblocks.cpp src/gui/objectblocks.h src/gui/polararray.cpp src/gui/polararray.h src/gui/propertyeditor.cpp src/gui/propertyeditor.h src/gui/propertymodel.cpp src/gui/propertymodel.h src/gui/qgle.pro.in src/gui/qgle.qrc src/gui/qgle.rc src/gui/qgle_definitions.h src/gui/qgle_statics.cpp src/gui/qgle_statics.h src/gui/qgslibloader.cpp src/gui/readme.txt src/gui/serverthread.cpp src/gui/serverthread.h src/gui/settings.cpp src/gui/settings.h src/gui/settings_dialogue.cpp src/gui/settings_dialogue.h src/gui/snapline.cpp src/gui/snapline.h src/gui/start-qgle.sh src/gui/text.cpp src/gui/text.h src/gui/variantdelegate.cpp src/gui/variantdelegate.h ===================================================================================== *** GPL v2 *** # The files in this directory were taken from GPL GhostScript 8.54 # This is the relevant license information: # # The files in the src, lib, toolbin, examples, doc and man # directories (folders) and any subdirectories (sub-folders) # thereof are part of GPL Ghostscript. # # The files in the Resource directory and any subdirectories thereof # are also part of GPL Ghostscript, with the explicit exception of # the files in the CMap subdirectory. The CMap files are copyright # Adobe Systems Incorporated and covered by a separate license # which permits only verbatim distribution. # # GPL Ghostscript is free software; you can redistribute it and/or # modify it under the terms of version 2 of the GNU General Public # License as published by the Free Software Foundation. # # GPL Ghostscript 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 so you can know your rights and responsibilities. # It should be in a file named doc/COPYING. If not, write to the # Free Software Foundation, Inc., 59 Temple Place Suite 330, Boston, MA # 02111-1307, USA. src/gui/gsinc/LICENSE src/gui/gsinc/gdevdsp.h src/gui/gsinc/gscdefs.h src/gui/gsinc/iapi.h src/gui/gsinc/ierrors.h ===================================================================================== *** ZLIB/LIBPNG License *** ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ;; ;; * All NSIS source code, plug-ins, documentation, examples, header files and graphics, ;; ;; with the exception of the compression modules and where otherwise noted, are licensed ;; ;; under the zlib/libpng license. ;; ;; ;; ;; ZLIB/LIBPNG LICENSE ;; ;; ------------------- ;; ;; ;; ;; This software is provided 'as-is', without any express or implied warranty. In no ;; ;; event will the authors be held liable for any damages arising from the use of this ;; ;; software. ;; ;; ;; ;; Permission is granted to anyone to use this software for any purpose, including ;; ;; commercial applications, and to alter it and redistribute it freely, subject to the ;; ;; following restrictions: ;; ;; ;; ;; 1. The origin of this software must not be misrepresented; you must not claim that you ;; ;; wrote the original software. If you use this software in a product, an acknowledgment ;; ;; in the product documentation would be appreciated but is not required. ;; ;; ;; ;; 2. Altered source versions must be plainly marked as such, and must not be ;; ;; misrepresented as being the original software. ;; ;; ;; ;; 3. This notice may not be removed or altered from any source distribution. ;; ;; ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; contrib/packagers/nsis/AddToPath.nsi ===================================================================================== *** X11 License *** # 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. platform/autoconf/install-sh ===================================================================================== *** Adobe Core 35 AFM Files *** # Adobe Core 35 AFM Files with 314 Glyph Entries - ReadMe # # This file and the 35 PostScript(R) AFM files it # accompanies may be used, copied, and distributed for any purpose and # without charge, with or without modification, provided that all # copyright notices are retained; that the AFM files are not # distributed without this file; that all modifications to this file # or any of the AFM files are prominently noted in the modified # file(s); and that this paragraph is not modified. Adobe Systems has # no responsibility or obligation to support the use of the AFM # files. src/fonts/Adobe-Core35_AFMs-314/Courier-Bold.afm src/fonts/Adobe-Core35_AFMs-314/Courier-BoldOblique.afm src/fonts/Adobe-Core35_AFMs-314/Courier-Oblique.afm src/fonts/Adobe-Core35_AFMs-314/Courier.afm src/fonts/Adobe-Core35_AFMs-314/Helvetica-Bold.afm src/fonts/Adobe-Core35_AFMs-314/Helvetica-BoldOblique.afm src/fonts/Adobe-Core35_AFMs-314/Helvetica-Narrow.afm src/fonts/Adobe-Core35_AFMs-314/Helvetica-NarrowBold.afm src/fonts/Adobe-Core35_AFMs-314/Helvetica-NarrowBoldOblique.afm src/fonts/Adobe-Core35_AFMs-314/Helvetica-NarrowOblique.afm src/fonts/Adobe-Core35_AFMs-314/Helvetica-Oblique.afm src/fonts/Adobe-Core35_AFMs-314/Helvetica.afm src/fonts/Adobe-Core35_AFMs-314/ITCAvantGarde-Book.afm src/fonts/Adobe-Core35_AFMs-314/ITCAvantGarde-BookOblique.afm src/fonts/Adobe-Core35_AFMs-314/ITCAvantGarde-Demi.afm src/fonts/Adobe-Core35_AFMs-314/ITCAvantGarde-DemiOblique.afm src/fonts/Adobe-Core35_AFMs-314/ITCBookman-Demi.afm src/fonts/Adobe-Core35_AFMs-314/ITCBookman-DemiItalic.afm src/fonts/Adobe-Core35_AFMs-314/ITCBookman-Light.afm src/fonts/Adobe-Core35_AFMs-314/ITCBookman-LightItalic.afm src/fonts/Adobe-Core35_AFMs-314/ITCZapfChancery-MediumItalic.afm src/fonts/Adobe-Core35_AFMs-314/MustRead.html src/fonts/Adobe-Core35_AFMs-314/NewCenturySchlbk-Bold.afm src/fonts/Adobe-Core35_AFMs-314/NewCenturySchlbk-BoldItalic.afm src/fonts/Adobe-Core35_AFMs-314/NewCenturySchlbk-Italic.afm src/fonts/Adobe-Core35_AFMs-314/NewCenturySchlbk-Roman.afm src/fonts/Adobe-Core35_AFMs-314/Palatino-Bold.afm src/fonts/Adobe-Core35_AFMs-314/Palatino-BoldItalic.afm src/fonts/Adobe-Core35_AFMs-314/Palatino-Italic.afm src/fonts/Adobe-Core35_AFMs-314/Palatino-Roman.afm src/fonts/Adobe-Core35_AFMs-314/Symbol.afm src/fonts/Adobe-Core35_AFMs-314/Times-Bold.afm src/fonts/Adobe-Core35_AFMs-314/Times-BoldItalic.afm src/fonts/Adobe-Core35_AFMs-314/Times-Italic.afm src/fonts/Adobe-Core35_AFMs-314/Times-Roman.afm src/fonts/Adobe-Core35_AFMs-314/ZapfDingbats.afm ===================================================================================== *** Adobe License for parseAFM.{c,h} *** * (C) 1988, 1989, 1990 by Adobe Systems Incorporated. All rights reserved. * * This file may be freely copied and redistributed as long as: * 1) This entire notice continues to be included in the file, * 2) If the file has been modified in any way, a notice of such * modification is conspicuously indicated. * * PostScript, Display PostScript, and Adobe are registered trademarks of * Adobe Systems Incorporated. * * ************************************************************************ * THE INFORMATION BELOW IS FURNISHED AS IS, IS SUBJECT TO CHANGE WITHOUT * NOTICE, AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY ADOBE SYSTEMS * INCORPORATED. ADOBE SYSTEMS INCORPORATED ASSUMES NO RESPONSIBILITY OR * LIABILITY FOR ANY ERRORS OR INACCURACIES, MAKES NO WARRANTY OF ANY * KIND (EXPRESS, IMPLIED OR STATUTORY) WITH RESPECT TO THIS INFORMATION, * AND EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES OF MERCHANTABILITY, * FITNESS FOR PARTICULAR PURPOSES AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. * ************************************************************************ src/makefmt/parseAFM.cpp src/makefmt/parseAFM.h ===================================================================================== *** MIT *** * Copyright (c) 2006-2009 Remko Tronçon * * 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. Makefile.in The part indicated with (only relevant for Mac OS): ##################### # Begin build DMG # ##################### ##################### # End build DMG # ##################### ===================================================================================== *** BSD *** * Rev 5.0 Lempel-Ziv & Welch Compression Support * Based on the LZW compression code from libtiff * * Copyright (c) 1985, 1986 The Regents of the University of California. * All rights reserved. * * This code is derived from software contributed to Berkeley by * James A. Woods, derived from original work by Spencer Thomas * and Joseph Orost. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * advertising materials, and other materials related to such * distribution and use acknowledge that the software was developed * by the University of California, Berkeley. The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. src/gle/bitmap/lzwencode.cpp ===================================================================================== *** A. S. Budden *** ! Electronic Circuit diagrams with GLE ! Author: A. S. Budden ! ! Date: 17th August 2007 ! Version: 1.3 ! ! Copyright: Copyright (C) 2005 A. S. Budden ! Permission is hereby granted to use and distribute this code, ! with or without modifications, provided that this copyright ! notice is copied with it. Like anything else that's free, ! electronics.gle is provided *as is* and comes with no warranty ! of any kind, either expressed or implied. By using this ! plugin, you agree that in no event will the copyright ! holder be liable for any damages resulting from the use ! of this software. src/lib/electronics.gle ===================================================================================== *** TeX Computer Modern Font AFM and GLE files *** The following files were automatically generated based on the TeX Computer Modern Font files, which were released by Prof. Donald E. Knuth into the public domain. These files are available under the Modified BSD license. src/fonts/texcmb.afm src/fonts/texcmb.gle src/fonts/texcmex.afm src/fonts/texcmex.gle src/fonts/texcmitt.afm src/fonts/texcmitt.gle src/fonts/texcmmi.afm src/fonts/texcmmi.gle src/fonts/texcmr.afm src/fonts/texcmr.gle src/fonts/texcmsl.afm src/fonts/texcmss.afm src/fonts/texcmss.gle src/fonts/texcmssb.afm src/fonts/texcmssb.gle src/fonts/texcmssi.afm src/fonts/texcmssi.gle src/fonts/texcmsy.afm src/fonts/texcmsy.gle src/fonts/texcmti.afm src/fonts/texcmti.gle src/fonts/texcmtt.afm src/fonts/texcmtt.gle ===================================================================================== gle-graphics-4.2.4c/Makefile.gcc0000664000000000000000000001572211405446017015135 0ustar rootroot######################################################################## # # # GLE - Graphics Layout Engine # # # # Modified BSD License # # # # Copyright (C) 2009 GLE. # # # # Redistribution and use in source and binary forms, with or without # # modification, are permitted provided that the following conditions # # are met: # # # # 1. Redistributions of source code must retain the above copyright # # notice, this list of conditions and the following disclaimer. # # # # 2. Redistributions in binary form must reproduce the above # # copyright notice, this list of conditions and the following # # disclaimer in the documentation and/or other materials provided with # # the distribution. # # # # 3. The name of the author may not be used to endorse or promote # # products derived from this software without specific prior written # # permission. # # # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR # # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY # # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE # # GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER # # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN # # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # # ######################################################################## # # global makefile for gle # for gcc # include config.i include config.gcc ZIP_SRC_NAME = $(BASE_NAME)-$(VERSION_NUMBER).$(BUILD_NUMBER)$(GLE_SNAPSHOT)-src.zip TAR_SRC_NAME = gle-graphics-$(VERSION_NUMBER).$(BUILD_NUMBER)$(GLE_SNAPSHOT)-src.tar.gz TAR_SRCF_NAME = gle-graphics-$(VERSION_NUMBER).$(BUILD_NUMBER)f$(GLE_SNAPSHOT)-src.tar.gz TAR_BASE_DIR = gle-graphics-$(VERSION_NUMBER).$(BUILD_NUMBER) FILTER_CVS := grep -P -v "(\.svn|CVS|\.cvsignore)" FILTER_SRC := $(FILTER_CVS) | grep -P -v "\.($(OBJ_SUFF)|e*ps)$$" | grep -v "moc_" FILTER_FNTS := $(FILTER_CVS) | grep -P -v "\.(fve|fmt)$$" all: -mkdir -p build -mkdir -p build/bin -mkdir -p build/lib -mkdir -p build/gleinc $(MAKE) -C src/gle/bitmap -f Makefile.gcc $(MAKE) -C src/gle/surface -f Makefile.gcc $(MAKE) -C src/gle/letzfitz -f Makefile.gcc $(MAKE) -C src/gle/tokens -f Makefile.gcc $(MAKE) -C src/gle -f Makefile.gcc $(MAKE) -C src/fbuild -f Makefile.gcc $(MAKE) -C src/makefmt -f Makefile.gcc $(MAKE) -C src/fonts -f Makefile.gcc $(MAKE) -C src/lib -f Makefile.gcc $(MAKE) -C src/TeX -f Makefile.gcc @echo "" @echo "**********************************************************" @echo "Type \"make install\" to install GLE $(VERSION_NUMBER).$(BUILD_NUMBER)" @echo "Install data into: $(INSTALL_DIR)" @echo "Install binary into: $(INSTALL_BIN)" @echo "**********************************************************" @echo "" clean: $(MAKE) -C src/gle/bitmap -f Makefile.gcc clean $(MAKE) -C src/gle/surface -f Makefile.gcc clean $(MAKE) -C src/gle/letzfitz -f Makefile.gcc clean $(MAKE) -C src/gle/tokens -f Makefile.gcc clean $(MAKE) -C src/gle -f Makefile.gcc clean $(MAKE) -C src/fbuild -f Makefile.gcc clean $(MAKE) -C src/makefmt -f Makefile.gcc clean $(MAKE) -C src/fonts -f Makefile.gcc clean $(MAKE) -C src/TeX -f Makefile.gcc clean $(MAKE) -C src/manip -f Makefile.gcc clean -$(RMDIR) build manip: $(MAKE) -C src/manip -f Makefile.gcc install: clean_install -mkdir -p $(INSTALL_DIR) -mkdir -p $(INSTALL_BIN) -cp -r build/* $(INSTALL_DIR) -strip $(INSTALL_DIR)/bin/gle* -strip $(INSTALL_DIR)/bin/fbuild* -strip $(INSTALL_DIR)/bin/makefmt* -strip $(INSTALL_DIR)/bin/manip* -echo "#!/bin/sh" > $(INSTALL_BIN)/gle -echo "export GLE_TOP=$(INSTALL_DIR)" >> $(INSTALL_BIN)/gle -echo "$(INSTALL_DIR)/bin/gle \$$@" >> $(INSTALL_BIN)/gle -chmod 755 $(INSTALL_BIN)/gle -echo "#!/bin/sh" > $(INSTALL_BIN)/manip -echo "export GLE_TOP=$(INSTALL_DIR)" >> $(INSTALL_BIN)/manip -echo "$(INSTALL_DIR)/bin/manip \$$@" >> $(INSTALL_BIN)/manip -chmod 755 $(INSTALL_BIN)/manip @echo "" @echo "****************************************************************" @echo "GLE $(VERSION_NUMBER).$(BUILD_NUMBER) has been installed" @echo "You can use GLE now by entering the command \"gle\"" @echo "(Provided that $(INSTALL_BIN) is in your PATH.)" @echo "****************************************************************" @echo "" linklib: rm -rf $(INSTALL_DIR)/gleinc ln -s `pwd`/src/lib $(INSTALL_DIR)/gleinc clean_install: -$(RM) $(INSTALL_BIN)/gle -$(RM) $(INSTALL_DIR)/bin/* -$(RMDIR) $(INSTALL_DIR)/bin -$(RM) $(INSTALL_DIR)/font/* -$(RMDIR) $(INSTALL_DIR)/font -$(RM) $(INSTALL_DIR)/*.ini full: clean all coll: perl platform/script/collectsrcfiles.pl platform/script/srcfiles.csv zipsrc: perl platform/script/correctfilemodes.pl -rm -f $(ZIP_SRC_NAME) perl platform/script/collectsrcfiles.pl platform/script/srcfiles.csv > srcfiles.txt (cd ..; cat gle4/srcfiles.txt | sed -e s/^/gle4\\// | xargs zip gle4/$(ZIP_SRC_NAME)) -@echo "$(ZIP_SRC_NAME) has been created!" tarsrc: perl platform/script/correctfilemodes.pl -rm -f $(TAR_SRC_NAME) perl platform/script/collectsrcfiles.pl platform/script/srcfiles.csv > srcfiles.txt tar czfv $(TAR_SRC_NAME) --files-from srcfiles.txt --transform 's|^|$(TAR_BASE_DIR)/|' --group 0 --owner 0 -@echo "$(TAR_SRC_NAME) has been created!" tarsrcf: perl platform/script/correctfilemodes.pl -rm -f $(TAR_SRCF_NAME) -touch src/fonts/extrafonts.inf perl platform/script/collectsrcfiles.pl -all platform/script/srcfiles.csv > srcfiles.txt tar czfv $(TAR_SRCF_NAME) --files-from srcfiles.txt --transform 's|^|$(TAR_BASE_DIR)/|' --group 0 --owner 0 -@rm src/fonts/extrafonts.inf -@echo "$(TAR_SRCF_NAME) has been created!" commit: cvs commit -m "commit via nmake working on version $(TAG)" tagall: cvs rtag $(TAG) $(MODULE_NAME) $(DEPENDANT_MODULES) gle-graphics-4.2.4c/config.i0000664000000000000000000000750611726234305014363 0ustar rootroot######################################################################## # # # GLE - Graphics Layout Engine # # # # Modified BSD License # # # # Copyright (C) 2009 GLE. # # # # Redistribution and use in source and binary forms, with or without # # modification, are permitted provided that the following conditions # # are met: # # # # 1. Redistributions of source code must retain the above copyright # # notice, this list of conditions and the following disclaimer. # # # # 2. Redistributions in binary form must reproduce the above # # copyright notice, this list of conditions and the following # # disclaimer in the documentation and/or other materials provided with # # the distribution. # # # # 3. The name of the author may not be used to endorse or promote # # products derived from this software without specific prior written # # permission. # # # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR # # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY # # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE # # GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER # # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN # # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # # ######################################################################## # # global makefile include config.i for gle # this sets options common to all compilers # # this sets the global version number for all programs # MODULE_NAME =gle40 BASE_NAME =GLE MAJOR_VERSION_NUMBER =4 MINOR_VERSION_NUMBER =2 BUILD_NUMBER =4c VERSION_NUMBER =$(MAJOR_VERSION_NUMBER).$(MINOR_VERSION_NUMBER) VERSION_INFO =-DGLEVN="\"$(VERSION_NUMBER).$(BUILD_NUMBER)\"" TAG =$(MODULE_NAME)_R_$(MAJOR_VERSION_NUMBER)_$(MINOR_VERSION_NUMBER)_$(BUILD_NUMBER) GLE_SRC_DIRS =src/gle src/makefmt src/fbuild src/manip src/gui # # -- optional packages (ignored if one uses ./configure) # HAVE_LIBTIFF = 0 # libtiff at www.libtiff.org is needed for inclusion of # tiff files. if you dont have it comment out the line above # if you have it you must set the environment variable # LIBTIFFDIR to point to the location of libtiff HAVE_LIBPNG = 0 # libpng at www.libpng.org is needed for inclusion of # PNG files. if you dont have it comment out the line above # you will also need zlib # if you have it you must set the environment variable # LIBPNGDIR to point to the location of libpng # ZLIBDIR to point to the location of zlib # For JPEG and GIF images, no extra libs are required! gle-graphics-4.2.4c/configure.ac0000664000000000000000000007301611726234305015231 0ustar rootroot######################################################################## # # # GLE - Graphics Layout Engine # # # # Modified BSD License # # # # Copyright (C) 2009 GLE. # # # # Redistribution and use in source and binary forms, with or without # # modification, are permitted provided that the following conditions # # are met: # # # # 1. Redistributions of source code must retain the above copyright # # notice, this list of conditions and the following disclaimer. # # # # 2. Redistributions in binary form must reproduce the above # # copyright notice, this list of conditions and the following # # disclaimer in the documentation and/or other materials provided with # # the distribution. # # # # 3. The name of the author may not be used to endorse or promote # # products derived from this software without specific prior written # # permission. # # # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR # # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY # # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE # # GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER # # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN # # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # # ######################################################################## m4_define([gle_cr_version], [4.2.4c]) AC_INIT(gle-graphics, [gle_cr_version], glx-general@lists.sourceforge.net) AC_CONFIG_HEADER(src/config.h) AC_CONFIG_SRCDIR(src/gle/gle.cpp) GLE_VERSION=gle_cr_version AC_PROG_CXX AC_LANG_CPLUSPLUS AH_TEMPLATE(__UNIX__, [On Unix]) AH_TEMPLATE(__CYGWIN__,[On Cygwin]) AH_TEMPLATE(__MACOS__, [On Mac]) AH_TEMPLATE(__FREEBSD__, [On FreeBSD]) AH_TEMPLATE(__GNU_HURD__, [On GNU Hurd]) AH_TEMPLATE(__LINUX__, [On Linux]) HAVE_SOCKETS=1 HAVE_LIBTIFF=0 HAVE_LIBPNG=0 HAVE_LIBJPEG=0 HAVE_X11=0 HAVE_CAIRO=0 HAVE_POPPLER=0 HAVE_NCURSES_H=0 HAVE_CURSES_H=0 HAVE_NOSCRIPTS=0 HAVE_QT=0 HAVE_AUTOPACKAGE=0 HAVE_LIBGLE=0 HAVE_LIBGLE_CPPFLAGS=0 HAVE_LIBGLE_STATIC=0 HAVE_MAC=0 HAVE_FREEBSD=0 HAVE_GNU_HURD=0 HAVE_LINUX=0 HAVE_WIN32=0 HAVE_NOCYGWIN=0 HAVE_CYGWIN=0 HAVE_MINGW=0 HAVE_LIBZ=0 HAVE_LIBGLU_H=0 QT_CONFIG="CONFIG += release" QT_RPATH= QT_LIBGLU_LIB= HAVE_STATIC_LIBPNG=0 HAVE_STATIC_LIBTIFF=0 HAVE_STATIC_LIBJPEG=0 HAVE_STATIC_LIBZ=0 HAVE_RPATH=0 QMAKE_PROG=none QMAKE_VERS=none MANIP_LIBS= MANIP_LDFLAGS= AP_CONFIG_ARGS= LIBGLE_CPPFLAGS= LIBGLE_LDFLAGS= EXTRA_LDFLAGS= EXTRA_LIBS= SIMPLE_LIBS_DL= AC_ARG_WITH(qt, [ --with-qt[=DIR] where to find the Qt-4.1.x library (or yes/no)],,with_qt=yes) AC_ARG_WITH(jpeg, [ --with-jpeg[=DIR] where to find the jpeg library (or yes/no)],,with_jpeg=yes) AC_ARG_WITH(png, [ --with-png[=DIR] where to find the png library (or yes/no)],,with_png=yes) AC_ARG_WITH(tiff, [ --with-tiff[=DIR] where to find the tiff library (or yes/no)],,with_tiff=yes) AC_ARG_WITH(z, [ --with-z[=DIR] where to find the z library (or yes/no)],,with_z=yes) AC_ARG_WITH(cairo, [ --with-cairo use the Cairo graphics library (yes/no)],,with_cairo=yes) AC_ARG_WITH(poppler, [ --with-poppler use the Poppler PDF library (yes/no)],,with_poppler=yes) AC_ARG_WITH(manip, [ --with-manip build manip utility (yes/no)],,with_manip=yes) AC_ARG_WITH(debug, [ --with-debug compile in debug information (yes/no)],,with_debug=no) AC_ARG_WITH(warn, [ --with-warn compile with all warnings enabled (yes/no)],,with_warn=no) AC_ARG_WITH(win32, [ --with-win32 compile Windows binary (yes/no)],,with_win32=no) AC_ARG_WITH(arch, [ --with-arch compile for a specific Mac OS architecture (or default/no)],,with_arch=default) AC_ARG_WITH(scripts, [ --with-scripts install scripts instead of executables (yes/no)],,with_scritps=no) AC_ARG_WITH(libgle, [ --with-libgle build libgle (yes/no/static/both)],,with_libgle=no) AC_ARG_WITH(rpath, [ --with-rpath build with rpath (or yes/no)],,with_rpath=yes) AC_ARG_WITH(extrafonts, [ --with-extrafonts include additional fonts (or yes/no)],,extrafonts=no) AC_ARG_WITH(gnuwin32, [ --with-gnuwin32 build with GnuWin32 libs (yes/no)],,with_gnuwin32=no) AC_ARG_WITH(staticlink, [ --with-staticlink statically link bitmap libs (yes/no)],,with_staticlink=def) AC_ARG_WITH(autopackage, [ --with-autopackage create autopackage package (yes/no)],,with_autopackage=no) AC_ARG_WITH(apintern, [ --with-apintern autopackage (internal use) (yes/no)],,with_apintern=no) HAVE_EXTRA_FONTS=0 if test "x$extrafonts" != "xno"; then HAVE_EXTRA_FONTS=1 fi if test -f src/fonts/extrafonts.inf; then HAVE_EXTRA_FONTS=1 fi dnl ******************************************************************************** dnl build snapshot or release? dnl ******************************************************************************** GLE_SNAPSHOT="" dnl ******************************************************************************** dnl remember CPPFLAGS for qmake dnl ******************************************************************************** QT_CPPFLAGS=$CPPFLAGS QT_LDFLAGS=$LDFLAGS dnl ******************************************************************************** dnl check CPU type and OS dnl ******************************************************************************** AC_CONFIG_AUX_DIR(platform/autoconf) AC_PROG_INSTALL AC_PROG_MKDIR_P AC_CANONICAL_HOST AC_CHECK_HEADERS([sys/param.h]) AC_C_BIGENDIAN AC_TYPE_UINT16_T PKG_PROG_PKG_CONFIG if test "x$with_rpath" != "xno"; then HAVE_RPATH=1 fi dnl ******************************************************************************** dnl check for Win32 dnl ******************************************************************************** if test "x$with_gnuwin32" != "xno"; then with_win32=yes CPPFLAGS="-I$with_gnuwin32/include $CPPFLAGS" CXXFLAGS="-I$with_gnuwin32/include $CXXFLAGS" LDFLAGS="-L$with_gnuwin32/lib $LDFLAGS" CFLAGS="-I$with_gnuwin32/include $CFLAGS" if test "x$with_staticlink" = "xdef"; then with_staticlink=yes fi fi if test "x$with_win32" != "xno"; then HAVE_WIN32=1 fi dnl ******************************************************************************** dnl check for host type dnl ******************************************************************************** USE_ARCH=no case $host in *-*-cygwin*) AC_DEFINE(__CYGWIN__) HAVE_CYGWIN=1 ;; *-*-mingw*) AC_DEFINE(__CYGWIN__) HAVE_CYGWIN=1 HAVE_MINGW=1 ;; x86_64-apple-*) if test "x$with_arch" = "xdefault"; then USE_ARCH=i386 fi ;; esac if test "x$with_arch" != "xdefault"; then USE_ARCH=$with_arch fi if test "x$USE_ARCH" != "xno"; then CPPFLAGS="-arch $USE_ARCH $CPPFLAGS" CXXFLAGS="-arch $USE_ARCH $CXXFLAGS" LDFLAGS="-arch $USE_ARCH $LDFLAGS" CFLAGS="-arch $USE_ARCH $CFLAGS" fi if test "x$HAVE_CYGWIN" = "x1"; then if test "x$HAVE_WIN32" = "x1"; then HAVE_CYGWIN=0 HAVE_NOCYGWIN=1 fi fi if test "x$HAVE_NOCYGWIN" = "x1"; then if test "x$with_gnuwin32" = "xno"; then with_png=no with_jpeg=no with_tiff=no with_z=no fi fi dnl ******************************************************************************** dnl check for Win32 dnl ******************************************************************************** if test "x$HAVE_WIN32" != "x1"; then AC_DEFINE(__UNIX__) # MacOS should also define __UNIX__ else AC_DEFINE(__WIN32__) AC_DEFINE(__NOCYGWIN__) CPPFLAGS="-mno-cygwin -mthreads -mms-bitfields -march=i386 $CPPFLAGS" CXXFLAGS="-mno-cygwin -mthreads -mms-bitfields -march=i386 $CXXFLAGS" LDFLAGS="-mno-cygwin -mthreads -mms-bitfields -march=i386 $LDFLAGS" CFLAGS="-mno-cygwin -mthreads -mms-bitfields -march=i386 $CFLAGS" with_manip=no with_x=no fi dnl ******************************************************************************** dnl remember original value of different flags dnl ******************************************************************************** _CPPFLAGS_INI=$CPPFLAGS _CXXFLAGS_INI=$CXXFLAGS _LDFLAGS_INI=$LDFLAGS _LIBS_INI=$LIBS SIMPLE_LDFLAGS=$LDFLAGS SIMPLE_LIBS=$LIBS dnl ******************************************************************************** dnl OS Selection dnl ******************************************************************************** case $host in *-apple*) HAVE_MAC=1 ;; *-freebsd*) HAVE_FREEBSD=1 ;; *-linux*) HAVE_LINUX=1 ;; *-gnu*) HAVE_GNU_HURD=1 ;; esac dnl ******************************************************************************** dnl is Mac OX/X? dnl ******************************************************************************** if test "x$HAVE_MAC" = "x1"; then AC_DEFINE(__MACOS__) HAVE_RPATH=0 fi dnl ******************************************************************************** dnl is Free BSD? dnl ******************************************************************************** if test "x$HAVE_FREEBSD" = "x1"; then AC_DEFINE(__FREEBSD__) fi dnl ******************************************************************************** dnl is Linux? dnl ******************************************************************************** if test "x$HAVE_LINUX" = "x1"; then AC_DEFINE(__LINUX__) fi dnl ******************************************************************************** dnl is GNU / Hurd dnl ******************************************************************************** if test "x$HAVE_GNU_HURD" = "x1"; then AC_DEFINE(__GNU_HURD__) fi dnl ******************************************************************************** dnl install scripts dnl ******************************************************************************** if test "$with_scripts" != yes; then case $host in *-*-cygwin*|*-*-linux*|*-*-mingw*|*-*-kfreebsd*) HAVE_NOSCRIPTS=1 ;; esac if test "x$HAVE_MAC" = "x1"; then HAVE_NOSCRIPTS=1 fi if test "x$HAVE_FREEBSD" = "x1"; then HAVE_NOSCRIPTS=1 fi if test "x$HAVE_LINUX" = "x1"; then HAVE_NOSCRIPTS=1 fi if test "x$HAVE_GNU_HURD" = "x1"; then HAVE_NOSCRIPTS=1 fi fi dnl ******************************************************************************** dnl check presence of X11 dnl ******************************************************************************** AC_PATH_X if test "$with_x" != no; then if test "x$x_libraries" = "x"; then x_libraries=. fi AC_CHECK_LIB([X11], [XOpenDisplay], [HAVE_X11=1 if test "x$x_libraries" != "x"; then LDFLAGS="$LDFLAGS -L$x_libraries" fi if test "x$x_includes" != "x"; then CPPFLAGS="$CPPFLAGS -I$x_includes" fi LIBS="-lX11 $LIBS" ], [], [[-lXt -L$x_libraries]]) fi dnl ******************************************************************************** dnl check for static libs option dnl ******************************************************************************** if test "x$with_staticlink" = "xdef"; then with_staticlink=no fi if test "x$with_staticlink" != "xno"; then HAVE_STATIC_LIBPNG=1 HAVE_STATIC_LIBJPEG=1 HAVE_STATIC_LIBZ=1 HAVE_STATIC_LIBTIFF=1 fi dnl ******************************************************************************** dnl check presence of Z library dnl ******************************************************************************** if test "$with_z" != no; then AC_CHECK_LIB(z,deflate, [HAVE_LIBZ=1], []) if test "x$HAVE_LIBZ" = "x1"; then AC_DEFINE(HAVE_LIBZ) if test "x$HAVE_STATIC_LIBZ" = "x1"; then LIBS="-Wl,-Bstatic -lz -Wl,-Bdynamic $LIBS" else LIBS="-lz $LIBS" fi fi fi dnl ******************************************************************************** dnl check presence of sockets library dnl on Linux, no extra library is required for this dnl ******************************************************************************** SOCKET_LIB=0 AC_SEARCH_LIBS(socket,socket) AC_SEARCH_LIBS(gethostbyname,nsl socket) if test "$ac_cv_func_socket" = "yes" ; then if test "$ac_cv_func_gethostbyname" = "yes" ; then SOCKET_LIB=1 fi fi case $host in *-*-solaris*) if test "$SOCKET_LIB" = "0" ; then HAVE_SOCKETS=0 fi ;; *) esac if test "$HAVE_SOCKETS" = 1; then AC_DEFINE(HAVE_SOCKETS) fi dnl ******************************************************************************** dnl check presence of JPEG library dnl ******************************************************************************** _CPPFLAGS=$CPPFLAGS _LDFLAGS=$LDFLAGS if test "$with_jpeg" != no; then if test -d "$with_jpeg"; then libjpeg_CPPFLAGS="-I$with_jpeg/include" libjpeg_LDFLAGS="-L$with_jpeg/lib" CPPFLAGS="$CPPFLAGS $libjpeg_CPPFLAGS" LDFLAGS="$LDFLAGS $libjpeg_LDFLAGS" fi AC_CHECK_LIB(jpeg,jpeg_destroy_decompress, [AC_CHECK_HEADERS(jpeglib.h, [HAVE_LIBJPEG=1 AC_DEFINE(HAVE_LIBJPEG) ], [AC_MSG_WARN([found jpeg library but not jpegio.h: make sure libjpeg development package is installed]) ])], [CPPFLAGS=$_CPPFLAGS LDFLAGS=$_LDFLAGS], [-lm]) fi if test "x$HAVE_LIBJPEG" = "x1"; then if test "x$HAVE_STATIC_LIBJPEG" = "x1"; then LIBS="-Wl,-Bstatic -ljpeg -Wl,-Bdynamic $LIBS" else LIBS="-ljpeg $LIBS" fi fi dnl ******************************************************************************** dnl check presence of TIFF library dnl ******************************************************************************** _CPPFLAGS=$CPPFLAGS _LDFLAGS=$LDFLAGS if test "$with_tiff" != no; then if test -d "$with_tiff"; then libtiff_CPPFLAGS="-I$with_tiff/include" libtiff_LDFLAGS="-L$with_tiff/lib" CPPFLAGS="$CPPFLAGS $libtiff_CPPFLAGS" LDFLAGS="$LDFLAGS $libtiff_LDFLAGS" fi AC_CHECK_LIB(tiff,TIFFReadScanline, [AC_CHECK_HEADERS(tiffio.h, [HAVE_LIBTIFF=1 AC_DEFINE(HAVE_LIBTIFF) ], [AC_MSG_WARN([found TIFF library but not tiffio.h: make sure libtiff development package is installed]) CPPFLAGS=$_CPPFLAGS LDFLAGS=$_LDFLAGS ])], [CPPFLAGS=$_CPPFLAGS LDFLAGS=$_LDFLAGS], [-lm]) fi if test "x$HAVE_LIBTIFF" = "x1"; then if test "x$HAVE_STATIC_LIBTIFF" = "x1"; then LIBS="-Wl,-Bstatic -ltiff -Wl,-Bdynamic $LIBS" else LIBS="-ltiff $LIBS" fi fi dnl ******************************************************************************** dnl check presence of PNG library dnl ******************************************************************************** if test "$with_png" != no; then if test -d "$with_png"; then HAVE_LIBPNG=1 AC_DEFINE(HAVE_LIBPNG) CPPFLAGS="$CPPFLAGS -I$with_png/include" LDFLAGS="$LDFLAGS -L$with_png/lib" if test "x$with_staticlink" = "xyes"; then LIBS="-Wl,-Bstatic -lpng -Wl,-Bdynamic $LIBS" else LIBS="-lpng $LIBS" fi else PKG_CHECK_MODULES([libpng], [libpng >= 0], [HAVE_LIBPNG=1 AC_DEFINE(HAVE_LIBPNG) if test "x$with_staticlink" = "xyes"; then LIBS="-Wl,-Bstatic $libpng_LIBS -Wl,-Bdynamic $LIBS" else LIBS="$libpng_LIBS $LIBS" fi CPPFLAGS="$libpng_CFLAGS $CPPFLAGS" LDFLAGS="$libpng_LDFLAGS $LDFLAGS" ], [AC_MSG_RESULT([no])] ) if test "x$HAVE_LIBPNG" = "x0"; then AC_PATH_PROG([LIBPNG_CONFIG], [libpng-config]) if test -n "$LIBPNG_CONFIG"; then HAVE_LIBPNG=1 AC_DEFINE(HAVE_LIBPNG) libpng_CPPFLAGS=`libpng-config --cflags` libpng_LDFLAGS=`libpng-config --ldflags` CPPFLAGS="$libpng_CPPFLAGS $CPPFLAGS" LDFLAGS="$libpng_LDFLAGS $LDFLAGS" if test "x$with_staticlink" = "xyes"; then LIBS="-Wl,-Bstatic -lpng -Wl,-Bdynamic $LIBS" else LIBS="-lpng $LIBS" fi fi fi fi fi dnl ******************************************************************************** dnl check Cairo dnl ******************************************************************************** if test "x$with_cairo" != "xno"; then PKG_CHECK_MODULES([cairo], [cairo >= 1.10.0], [ HAVE_CAIRO=1 AC_MSG_RESULT([ cairo CFLAGS: $cairo_CFLAGS]) AC_MSG_RESULT([ cairo LIBS: $cairo_LIBS]) if test "x$with_staticlink" = "xyes"; then LIBS="-Wl,-Bstatic $cairo_LIBS -Wl,-Bdynamic $LIBS" else LIBS="$cairo_LIBS $LIBS" fi CPPFLAGS="$cairo_CFLAGS $CPPFLAGS" LDFLAGS="$cairo_LDFLAGS $LDFLAGS" ], [ HAVE_CAIRO=0 ] ) fi if test "x$HAVE_CAIRO" = "x1"; then if test "x$HAVE_WIN32" = "x1"; then if test "x$with_staticlink" = "xyes"; then EXTRA_LDFLAGS="$EXTRA_LDFLAGS -mwindows" EXTRA_LIBS="$EXTRA_LIBS -lmsimg32" fi fi fi dnl ******************************************************************************** dnl check Poppler dnl ******************************************************************************** if test "x$HAVE_CAIRO" = "x1"; then if test "x$with_poppler" != "xno"; then PKG_CHECK_MODULES(POPPLER, [poppler-glib >= 0.10.0], [ HAVE_POPPLER=1 AC_MSG_RESULT([ poppler CFLAGS: $POPPLER_CFLAGS]) AC_MSG_RESULT([ poppler LIBS: $POPPLER_LIBS]) if test "x$with_staticlink" = "xyes"; then LIBS="-Wl,-Bstatic $POPPLER_LIBS -Wl,-Bdynamic $LIBS" else LIBS="$POPPLER_LIBS $LIBS" fi CPPFLAGS="$POPPLER_CFLAGS $CPPFLAGS" LDFLAGS="$POPPLER_LDFLAGS $LDFLAGS" ], [ HAVE_POPPLER=0 ] ) fi fi dnl ******************************************************************************** dnl check Qt 4.1.x dnl ******************************************************************************** QT4VER="?" QMAKE_PROG="none" if test "x$with_qt" != "xno"; then if test "x$with_qt" = "xyes"; then if test "x$PKG_CONFIG" != "x"; then QT4LOC=`$PKG_CONFIG QtCore --variable=exec_prefix` if test -x $QT4LOC/bin/qmake; then if $PKG_CONFIG QtCore --atleast-version 4.1.1; then with_qt=$QT4LOC QT4VER=`$PKG_CONFIG QtCore --modversion` fi fi fi fi if test "x$with_qt" = "xyes"; then if test -x /opt/qt4/bin/qmake; then with_qt=/opt/qt4 fi if test -x /usr/lib/qt4/bin/qmake; then with_qt=/usr/lib/qt4 fi AC_PATH_PROG([QMAKE_PROG], [qmake-qt4], [none], [$PATH]) fi if test "x$with_qt" != "xyes"; then QTDIR=$with_qt if test -x $with_qt/bin/qmake; then QMAKE_PROG=$with_qt/bin/qmake fi if test -x $with_qt/bin/qmake-qt4; then QMAKE_PROG=$with_qt/bin/qmake-qt4 fi if test -x $with_qt/bin/qmake.exe; then QMAKE_PROG=$with_qt/bin/qmake.exe fi if test "x$QMAKE_PROG" = "xnone"; then AC_PATH_PROGS([QMAKE_PROG], [qmake-qt4 qmake], [none], [$QTDIR/bin:$PATH]) fi fi if test "x$QMAKE_PROG" != "xnone"; then HAVE_QT=1 QMAKE_VERS=`$QMAKE_PROG -v | tail -n 1` fi AC_CHECK_HEADERS(GL/glu.h, [AC_DEFINE(HAVE_LIBGLU_H)], []) AC_CHECK_LIB(GLU,gluLookAt, [QT_LIBGLU_LIB=-lGLU], []) fi if test "x$HAVE_RPATH" != "x0"; then QT_RPATH="-Wl,-rpath,\\\\\\\$\\\$ORIGIN/../lib" fi dnl ******************************************************************************** dnl build libgle stuff dnl ******************************************************************************** if test "x$HAVE_QT" != "x0"; then if test "x$with_libgle" != "xstatic"; then if test "x$with_libgle" != "xboth"; then with_libgle=yes fi fi fi if test "x$with_libgle" = "xboth"; then HAVE_LIBGLE_STATIC=1 AC_DEFINE(HAVE_LIBGLE_STATIC) with_libgle=yes fi if test "x$with_libgle" = "xyes"; then HAVE_LIBGLE=1 AC_DEFINE(HAVE_LIBGLE) case $host in *-*-linux*|*-*-kfreebsd*) LIBGLE_CPPFLAGS="-fPIC " LIBGLE_LDFLAGS="-fPIC " HAVE_LIBGLE_CPPFLAGS=1 ;; esac fi if test "x$with_libgle" = "xstatic"; then HAVE_LIBGLE_STATIC=1 AC_DEFINE(HAVE_LIBGLE_STATIC) fi dnl ******************************************************************************** dnl check for -ldl dnl ******************************************************************************** _SAVE_LIBS=$LIBS _SAVE_LDFLAGS=$LDFLAGS LIBS=$SIMPLE_LIBS LDFLAGS=$SIMPLE_LDFLAGS AC_SEARCH_LIBS(dlopen,dl) SIMPLE_LIBS_DL=$LIBS LIBS=$_SAVE_LIBS LDFLAGS=$_SAVE_LDFLAGS dnl ******************************************************************************** dnl build manip utility dnl ******************************************************************************** MAKE_MANIP=0 if test "x$with_manip" != "xno"; then _SAVE_LIBS=$LIBS _SAVE_LDFLAGS=$LDFLAGS LIBS=$SIMPLE_LIBS LDFLAGS=$SIMPLE_LDFLAGS AC_CHECK_LIB(tinfo,tgetent) AC_SEARCH_LIBS(wbkgdset,ncurses curses, [ MAKE_MANIP=1 ], [],[]) AC_CHECK_HEADER([ncurses.h], [ HAVE_NCURSES_H=1 ], [ AC_CHECK_HEADER([curses.h], [ HAVE_CURSES_H=1 ], [ MAKE_MANIP=0 ]) ]) if test "$HAVE_NCURSES_H" = "1"; then AC_DEFINE(HAVE_NCURSES_H) fi if test "$HAVE_CURSES_H" = "1"; then AC_DEFINE(HAVE_CURSES_H) fi MANIP_LIBS=$LIBS MANIP_LDFLAGS=$LDFLAGS if test "x$with_staticlink" = "xyes"; then MANIP_LIBS="$SIMPLE_LIBS -Wl,-Bstatic -lncurses -ltinfo -lm -Wl,-Bdynamic -ldl" #MANIP_LIBS="$SIMPLE_LIBS -Wl,-Bstatic -lncurses -lm -Wl,-Bdynamic -ldl" else MANIP_LIBS="$MANIP_LIBS -lm" fi LIBS=$_SAVE_LIBS LDFLAGS=$_SAVE_LDFLAGS fi dnl ******************************************************************************** dnl set CPPFLAGS correctly - NO TESTS INVOLVING CALLING gcc BEYOND THIS POINT dnl ******************************************************************************** if test "x$with_warn" != "xno"; then CPPFLAGS="-Wall $CPPFLAGS" fi CPPFLAGS="-Wno-write-strings $CPPFLAGS" CPPFLAGS="-DHAVE_CONFIG_H \$(VERSION_INFO) $CPPFLAGS" LDFLAGS="$LDFLAGS $EXTRA_LDFLAGS" LIBS="$LIBS $EXTRA_LIBS" dnl ******************************************************************************** dnl autopackage support dnl ******************************************************************************** MAKE_AUTOPACKAGE=0 if test "x$with_autopackage" != "xno"; then MAKE_AUTOPACKAGE=1 dnl Qt support compiled in? if test "x$HAVE_QT" != "x0"; then AP_CONFIG_ARGS="$AP_CONFIG_ARGS --with-qt=$QTDIR" fi if test "$with_png" != yes; then AP_CONFIG_ARGS="$AP_CONFIG_ARGS --with-png=$with_png" fi CPPFLAGS=$_CPPFLAGS_INI CXXFLAGS=$_CXXFLAGS_INI LDFLAGS=$_LDFLAGS_INI LIBS=$_LIBS_INI fi if test "x$with_apintern" != "xno"; then LDFLAGS="$LDFLAGS -static-libgcc" LIBS="$LIBS -Wl,-Bstatic -lstdc++ -Wl,-Bdynamic" SIMPLE_LDFLAGS="$SIMPLE_LDFLAGS -static-libgcc" SIMPLE_LIBS="$SIMPLE_LIBS -Wl,-Bstatic -lstdc++ -Wl,-Bdynamic" MANIP_LDFLAGS="$MANIP_LDFLAGS -static-libgcc" MANIP_LIBS="$MANIP_LIBS -Wl,-Bstatic -lstdc++ -Wl,-Bdynamic" HAVE_X11=0 HAVE_AUTOPACKAGE=1 fi dnl ******************************************************************************** dnl debugging version? dnl ******************************************************************************** dnl --with-debug=yes, --with-debug=no, --with-debug=gle if test "x$with_debug" != "xno"; then CPPFLAGS="-g $CPPFLAGS" LDFLAGS="-g $LDFLAGS" fi if test "x$with_debug" = "xyes"; then QT_CONFIG="CONFIG += debug" fi dnl ******************************************************************************** dnl final substitutes dnl ******************************************************************************** if test "x$HAVE_X11" != "x0"; then AC_DEFINE(HAVE_X11) fi if test "x$HAVE_CAIRO" != "x0"; then AC_DEFINE(HAVE_CAIRO) fi if test "x$HAVE_POPPLER" != "x0"; then AC_DEFINE(HAVE_POPPLER) fi AC_SUBST(HAVE_SOCKETS) AC_SUBST(HAVE_LIBTIFF) AC_SUBST(HAVE_LIBPNG) AC_SUBST(HAVE_LIBJPEG) AC_SUBST(HAVE_CAIRO) AC_SUBST(HAVE_NOSCRIPTS) AC_SUBST(HAVE_QT) AC_SUBST(HAVE_LIBGLE) AC_SUBST(HAVE_LIBGLE_CPPFLAGS) AC_SUBST(HAVE_LIBGLE_STATIC) AC_SUBST(HAVE_AUTOPACKAGE) AC_SUBST(HAVE_MAC) AC_SUBST(HAVE_FREEBSD) AC_SUBST(HAVE_WIN32) AC_SUBST(HAVE_NOCYGWIN) AC_SUBST(HAVE_CYGWIN) AC_SUBST(HAVE_MINGW) AC_SUBST(HAVE_RPATH) AC_SUBST(QMAKE_PROG) AC_SUBST(MAKE_MANIP) AC_SUBST(AP_CONFIG_ARGS) AC_SUBST(GLE_SNAPSHOT) if test "$prefix" = "NONE"; then GLE_INSTALL_DATA=/usr/share/$PACKAGE_TARNAME/$GLE_VERSION prefix="/usr" else GLE_INSTALL_DATA=$prefix/share/$PACKAGE_TARNAME/$GLE_VERSION fi if test "$exec_prefix" = "NONE"; then if test "$prefix" = "NONE"; then GLE_INSTALL_BIN=/usr/bin else GLE_INSTALL_BIN=$prefix/bin fi else GLE_INSTALL_BIN=$exec_prefix fi if test "$bindir" != "\${exec_prefix}/bin"; then GLE_INSTALL_BIN=$bindir fi AC_SUBST(SIMPLE_LIBS) AC_SUBST(SIMPLE_LIBS_DL) AC_SUBST(SIMPLE_LDFLAGS) AC_SUBST(MANIP_LIBS) AC_SUBST(MANIP_LDFLAGS) AC_SUBST(LIBGLE_CPPFLAGS) AC_SUBST(LIBGLE_LDFLAGS) AC_SUBST(GLE_INSTALL_DATA) AC_SUBST(GLE_INSTALL_BIN) AC_SUBST(GLE_VERSION) AC_SUBST(MAKE_AUTOPACKAGE) AC_SUBST(QT_CONFIG) AC_SUBST(QT_RPATH) AC_SUBST(QT_LIBGLU_LIB) AC_SUBST(QT_CPPFLAGS) AC_SUBST(QT_LDFLAGS) AC_SUBST(HAVE_EXTRA_FONTS) AC_CONFIG_FILES([Makefile src/gle/Makefile src/gle/bitmap/Makefile src/gle/letzfitz/Makefile src/gle/surface/Makefile src/gle/tokens/Makefile src/fbuild/Makefile src/makefmt/Makefile src/manip/Makefile src/TeX/Makefile src/gui/MakefileAC src/gui/qgle.pro src/doc/gle.1 platform/autoconf/gle-graphics.pc platform/autopackage/gle4.apspec]) AC_OUTPUT AC_MSG_RESULT([]) AC_MSG_RESULT([CPPFLAGS: $CPPFLAGS]) AC_MSG_RESULT([LDFLAGS: $LDFLAGS]) AC_MSG_RESULT([LIBS: $LIBS]) AC_MSG_RESULT([SIMPLE_LIBS: $SIMPLE_LIBS]) AC_MSG_RESULT([SIMPLE_LIBS_DL: $SIMPLE_LIBS_DL]) AC_MSG_RESULT([SIMPLE_LDFLAGS: $SIMPLE_LDFLAGS]) AC_MSG_RESULT([ ** Configuration summary for GLE $GLE_VERSION$GLE_SNAPSHOT ($host): ]) AC_MSG_RESULT([ ** Bitmap support:]) if test "$HAVE_LIBPNG" = 1; then AC_MSG_RESULT([ PNG support: yes]) else AC_MSG_RESULT([ PNG support: no]) fi if test "$HAVE_LIBTIFF" = 1; then AC_MSG_RESULT([ TIFF support: yes]) else AC_MSG_RESULT([ TIFF support: no]) fi if test "$HAVE_LIBJPEG" = 1; then AC_MSG_RESULT([ JPEG support: yes]) else AC_MSG_RESULT([ JPEG support: no]) fi if test "x$with_staticlink" != "xno"; then AC_MSG_RESULT([ Statically link: yes]) else AC_MSG_RESULT([ Statically link: no]) fi AC_MSG_RESULT([]) if test "$HAVE_X11" = 1; then AC_MSG_RESULT([ ** X11 preview support: yes]) else AC_MSG_RESULT([ ** X11 preview support: no]) fi if test "$HAVE_CAIRO" = 1; then AC_MSG_RESULT([ ** Cairo graphics support: yes]) else AC_MSG_RESULT([ ** Cairo graphics support: no]) fi if test "$HAVE_POPPLER" = 1; then AC_MSG_RESULT([ ** Poppler PDF support: yes]) else AC_MSG_RESULT([ ** Poppler PDF support: no]) fi if test "$HAVE_SOCKETS" = 1; then AC_MSG_RESULT([ ** Socket support: yes]) else AC_MSG_RESULT([ ** Socket support: no]) fi if test "$MAKE_MANIP" = 1; then AC_MSG_RESULT([ ** Include 'manip' utility: yes]) else AC_MSG_RESULT([ ** Include 'manip' utility: no]) fi if test "x$with_debug" != "xno"; then AC_MSG_RESULT([ ** Debug mode: on]) else AC_MSG_RESULT([ ** Debug mode: off]) fi AC_MSG_RESULT([]) if test "$HAVE_QT" = 1; then if test "x$QT4VER" != "x?"; then AC_MSG_RESULT([ ** GLE GUI support: yes (Qt4 version: $QT4VER)]) else AC_MSG_RESULT([ ** GLE GUI support: yes]) if test "x$QMAKE_VERS" != "xnone"; then AC_MSG_RESULT([ $QMAKE_VERS]) fi fi else AC_MSG_RESULT([ ** GLE GUI support: no]) AC_MSG_RESULT([ (make sure you have Qt >= 4.1.1 devel and use ./configure --with-qt=/path/to/qt.)]) fi AC_MSG_RESULT([]) AC_MSG_RESULT([** Install data into: $GLE_INSTALL_DATA]) AC_MSG_RESULT([** Install binary into: $GLE_INSTALL_BIN]) AC_MSG_RESULT([ (use ./configure --prefix=dir to change the installation directory.)]) AC_MSG_RESULT([]) if test "x$with_autopackage" != "xno"; then AC_MSG_RESULT([GLE $GLE_VERSION$GLE_SNAPSHOT has been configured. Run "make" to create an autopackage for GLE.]) else AC_MSG_RESULT([GLE $GLE_VERSION$GLE_SNAPSHOT has been configured. The next step is to run "make". After "make" completes, run "make install" to install GLE.]) fi gle-graphics-4.2.4c/config.vc0000664000000000000000000001052411405446017014534 0ustar rootroot######################################################################## # # # GLE - Graphics Layout Engine # # # # Modified BSD License # # # # Copyright (C) 2009 GLE. # # # # Redistribution and use in source and binary forms, with or without # # modification, are permitted provided that the following conditions # # are met: # # # # 1. Redistributions of source code must retain the above copyright # # notice, this list of conditions and the following disclaimer. # # # # 2. Redistributions in binary form must reproduce the above # # copyright notice, this list of conditions and the following # # disclaimer in the documentation and/or other materials provided with # # the distribution. # # # # 3. The name of the author may not be used to endorse or promote # # products derived from this software without specific prior written # # permission. # # # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR # # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY # # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE # # GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER # # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN # # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # # ######################################################################## # # config.vc for windows machines using vs.net and nmake # # include the global config file # !include config.i # # other global defines # PROJECT_BINDIR = ..\..\build PROJECT_LIBDIR = ..\..\lib PROJECT_INCDIR = ..\..\include INSTALL_DIR =c:\\program files\\gle EXE_SUFF =.exe OBJ_SUFF =obj CC =cl AR =link RM =erase RMDIR =rmdir MKDIR =mkdir PATH_SEP =^\ EXTRA_DEFS =-D __WIN32__ EXTRA_INCLUDE_PATHS =-I$(BOOSTDIR) EXTRA_LIB_PATHS = LIBS = WINLIBS = advapi32.lib comctl32.lib comdlg32.lib gdi32.lib kernel32.lib odbc32.lib oldnames.lib ole32.lib oleaut32.lib rpcrt4.lib shell32.lib user32.lib uuid.lib winmm.lib winspool.lib wsock32.lib !ifdef HAVE_LIBTIFF EXTRA_INCLUDE_PATHS = $(EXTRA_INCLUDE_PATHS) -I$(LIBTIFFDIR) EXTRA_DEFS = $(EXTRA_DEFS) -D HAVE_LIBTIFF EXTRA_LIB_PATHS = $(EXTRA_LIB_PATHS) -LIBPATH:$(LIBTIFFDIR) LIBS = $(LIBS) libtiff.lib !endif !ifdef HAVE_LIBPNG EXTRA_DEFS = $(EXTRA_DEFS) -D HAVE_LIBPNG EXTRA_INCLUDE_PATHS = $(EXTRA_INCLUDE_PATHS) -I$(LIBPNGDIR) -I$(ZLIBDIR) EXTRA_LIB_PATHS = $(EXTRA_LIB_PATHS) -LIBPATH:$(LIBPNGDIR) -LIBPATH:$(ZLIBDIR) LIBS = $(LIBS) libpng.lib zlib.lib !endif !ifdef HAVE_LIBJPEG EXTRA_DEFS = $(EXTRA_DEFS) -D __JPEG__ EXTRA_INCLUDE_PATHS = $(EXTRA_INCLUDE_PATHS) -I$(LIBJPEGDIR) EXTRA_LIB_PATHS = $(EXTRA_LIB_PATHS) -LIBPATH:$(LIBJPEGDIR) LIBS = $(LIBS) jpeg.lib !endif # multithreaded dll link to msvcrt.dll # this is the default on all the libs such as zlib, libtiff and lpng # # CPPFLAGS =/nologo /MD /EHsc /Ox -I$(GLOBAL_INCDIR) -I$(PROJECT_INCDIR) $(EXTRA_INCLUDE_PATHS) $(VERSION_INFO) $(EXTRA_DEFS) -DINSTALL_DIR="\"$(INSTALL_DIR)\"" LINKFLAGS =/nologo -LIBPATH:$(GLOBAL_LIBDIR) $(EXTRA_LIB_PATHS) # for win32 LIBS= $(LIBS) $(WINLIBS) gle-graphics-4.2.4c/config.nocygwin0000664000000000000000000000312011405446017015753 0ustar rootroot# # config file for gcc and make # EXTRA_DEFS =-D __WIN32__ -D __NOCYGWIN__ -Wreturn-type OBJ_SUFF =o CC =gcc CXX =gcc EXE_SUFF =.exe AR =ar RM =rm -rf RMDIR =rm -rf MKDIR =mkdir INSTALL_DIR =C:\Program Files\gle4 INSTALL_DIR2 =C:\\\\Program Files\\\\gle4 PATH_SEP =/ ROOT_INSTALL_DIR =$(GLE_RPM_ROOT)$(INSTALL_DIR) # # other global defines # PROJECT_BINDIR = ../../build PROJECT_LIBDIR = ../../lib PROJECT_INCDIR = ../../include # # GLE_TOP does not need to be defined anymore during compile # GLE_TOP = ../../build EXTRA_INCLUDE_PATHS = EXTRA_LIB_PATHS = LIBS =-lstdc++ ifdef GNUWIN32DIR EXTRA_INCLUDE_PATHS := $(EXTRA_INCLUDE_PATHS) -I"$(GNUWIN32DIR)/include" EXTRA_LIB_PATHS := $(EXTRA_LIB_PATHS) -L"$(GNUWIN32DIR)/lib" endif ifdef HAVE_LIBTIFF EXTRA_DEFS := $(EXTRA_DEFS) -D HAVE_LIBTIFF ifdef LIBTIFFDIR EXTRA_INCLUDE_PATHS := $(EXTRA_INCLUDE_PATHS) -I$(LIBTIFFDIR) EXTRA_LIB_PATHS := $(EXTRA_LIB_PATHS) -L$(LIBTIFFDIR) endif LIBS := $(LIBS) -ltiff endif ifdef HAVE_LIBPNG EXTRA_DEFS := $(EXTRA_DEFS) -D HAVE_LIBPNG ifdef LIBPNGDIR EXTRA_INCLUDE_PATHS := $(EXTRA_INCLUDE_PATHS) -I$(LIBPNGDIR) -I$(ZLIBDIR) EXTRA_LIB_PATHS := $(EXTRA_LIB_PATHS) -L$(LIBPNGDIR) endif ifdef ZLIBDIR EXTRA_LIB_PATHS := $(EXTRA_LIB_PATHS) -L$(ZLIBDIR) endif LIBS := $(LIBS) -lpng -lz -ljpeg endif -include extraconfig.nocygwin LINK_OPTS =-mno-cygwin CXXFLAGS =-O2 -I/home/jan/libs/install/include $(VERSION_INFO) $(EXTRA_INCLUDE_PATHS) $(EXTRA_DEFS) -mno-cygwin LINKFLAGS =-L/home/jan/libs/install/lib $(EXTRA_LIB_PATHS) -static $(LIBS) gle-graphics-4.2.4c/platform/autoconf/config.sub0000775000000000000000000010412211436540702020360 0ustar rootroot#! /bin/sh # Configuration validation subroutine script. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, # 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 # Free Software Foundation, Inc. timestamp='2010-05-21' # This file is (in principle) common to ALL GNU software. # The presence of a machine in this file suggests that SOME GNU software # can handle that machine. It does not imply ALL GNU software can. # # 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. # Please send patches to . Submit a context # diff and a properly formatted GNU 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. # You can get the latest version of this script from: # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD # 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, 2009, 2010 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-android* | 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 | -microblaze) 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 \ | rx \ | 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 | tic54x | tic55x | tic6x | tic80 | tron \ | ubicom32 \ | v850 | v850e \ | we32k \ | x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \ | z8k | z80) basic_machine=$basic_machine-unknown ;; c54x) basic_machine=tic54x-unknown ;; c55x) basic_machine=tic55x-unknown ;; c6x) basic_machine=tic6x-unknown ;; m6811 | m68hc11 | m6812 | m68hc12 | picochip) # 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-* \ | 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-* | microblaze-* \ | 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-* | rx-* \ | 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-* | tilegx-* \ | tron-* \ | ubicom32-* \ | 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 ;; c54x-*) basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c55x-*) basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c6x-*) basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; 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 ;; microblaze) basic_machine=microblaze-xilinx ;; 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 ;; # This must be matched before tile*. tilegx*) basic_machine=tilegx-unknown os=-linux-gnu ;; 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. -auroraux) os=-auroraux ;; -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* | -auroraux* | -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-android* \ | -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* | -es*) # 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 ;; -nacl*) ;; -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 ;; tic54x-*) os=-coff ;; tic55x-*) os=-coff ;; tic6x-*) 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: gle-graphics-4.2.4c/platform/autoconf/gle-graphics.pc.in0000664000000000000000000000026311405446017021674 0ustar rootrootprefix=@prefix@ exec_prefix=@exec_prefix@ libdir=@libdir@ includedir=@includedir@ gle_top=@GLE_INSTALL_DATA@ Name: GLE Description: Graphics Layout Engine Version: @GLE_VERSION@ gle-graphics-4.2.4c/platform/autoconf/install-sh0000775000000000000000000003246411405446017020412 0ustar rootroot#!/bin/sh # install - install a program, script, or datafile scriptversion=2006-12-25.00 # 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-end: "$" # End: gle-graphics-4.2.4c/platform/autoconf/config.guess0000775000000000000000000012765511436540702020735 0ustar rootroot#! /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, 2010 # Free Software Foundation, Inc. timestamp='2010-04-03' # 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 (context # diff format) to and include a 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. # # You can get the latest version of this script from: # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD 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, 2009, 2010 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' HUP INT TERM # 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" HUP INT PIPE TERM ; : ${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:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) echo i386-pc-auroraux${UNAME_RELEASE} 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*:*) case ${UNAME_MACHINE} in x86) echo i586-pc-interix${UNAME_RELEASE} exit ;; authenticamd | genuineintel | EM64T) 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 ;; 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 ;; 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 ;; i*86:Linux:*:*) LIBC=gnu eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #ifdef __dietlibc__ LIBC=dietlibc #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'` echo "${UNAME_MACHINE}-pc-linux-${LIBC}" 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 | grep '^CPU'` test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } ;; or32:Linux:*:*) echo or32-unknown-linux-gnu exit ;; padre:Linux:*:*) echo sparc-unknown-linux-gnu exit ;; parisc64:Linux:*:* | hppa64:Linux:*:*) echo hppa64-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 ;; ppc64:Linux:*:*) echo powerpc64-unknown-linux-gnu exit ;; ppc:Linux:*:*) echo powerpc-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: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 i386) eval $set_cc_for_build if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then UNAME_PROCESSOR="x86_64" fi fi ;; 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: gle-graphics-4.2.4c/platform/autopackage/gle.png0000664000000000000000000000344311405446017020324 0ustar rootroot‰PNG  IHDR00Wù‡bKGDùC» pHYs  d_‘ vpAg00ÎîŒWIDAThÞÝš{LSWÇ?·¥´PpP©Š Ë|%s¢Ã™ Ì(¾0‹sêtfÿ¸?æÜœf1™™QÅ-Y|ÄeËœèj¦›f¾V¦13€º©ƒ‰¥oÚ»?n^oK)`+û&'ýÝß9ç×ï÷žsÏ=+ÐBàC H|<[P ÀwÀNàA`æ|¿C$é0®“ü í ÕÃÕÀÀèX÷>``k6}Äu©9+ìªX3è'¼=v ²Rº5¶9EšìRƒ  Õ½{±URÀ4àã9zf˜5]¾†6»ªÝTýîbÛv‘´4˜9Ìfؾ]*³É?¶ëàÝÐ >'˜Y˂滅2\B¥Ì·ôÀRšíÍÁÀ2`+ ˜Ô8;D<^1DÅÆbïÏS‘6ÇÎO§¤:6dgKBöˆ@§ ïù&%™13)É žï²p¨Še>­ZºF;ü¶µ]u³ù‚‹ûí>VOÖòÑTiCTwùî]((€ª*à€`sÃ= ¨®~‹–zŒéöýX j$»ðùF&d_À˜d$whnвÄo Šþt ,AñY[¤½ûõ¢èC¢z¦çLT¼T!óÉÞ»€ë~;Ø_– ¢‹½F ,ô€NéNN~üüOQ«ðx¤î“¨ =‡KIHa_Å>ôñzÙ¢^6jÖGü×%9ö” ¹îá`­‡\ƒŠµE:ÆgH,i[±yãïx Š®†ÊϘ†­d¦-F­–+KO5‘kè´í Ør\^ð’GjÒk,™¼¤kkñàƒ 8 ¬@ÚÜMˆƒEãâYøb<-N]$j|x8|Ö­§L&X¾V¯~b#ºÒŸµUÏð÷ÊP·v“¯¯ÿ†#óúø…ÀŒ.ÿ¸á°»\²B Õ†-£ "aÖ_YEÌz0$Hw½¶ÉËéZ/’ÖÅz=LœçÏÃ=A'(¢½ƒÇgˆ·¥uù¼^;z½™ûÍ79ùWp‚n¡—pZæ»Õܽ¹ÕãÓÐD¼¿?²‰üëzfN¥¬ƒýŒÌ:hf£! Rñ?húX³èŽ,@Úõ§‘¦H¨ ¾d"Ú>P邯ßw>³‰5ÁPɃtú5¥“ø6»©ûMu&d&zTXtcommentxÚóÉLNÍ+NµRðÍOÉLËLMQp vR¸8Ô™n×.zTXtcreate-datexÚ320°Ô50Ñ54 1´´2°°21Õ60²20B5!éP.zTXtmodify-datexÚ320°Ô50Ñ54 1´´2°°21Õ60²20B5CÑv¯IEND®B`‚gle-graphics-4.2.4c/platform/autopackage/gle.desktop0000664000000000000000000000033011405446017021201 0ustar rootroot[Desktop Entry] Version=1.0 Categories=Graphics;2DGraphics;VectorGraphics; Type=Application Name=GLE Comment=A package for creating graphs, plots, and diagrams TryExec=qgle Exec=qgle %F MimeType=text/x-gle; Icon=gle gle-graphics-4.2.4c/platform/autopackage/qt-replace.pl0000664000000000000000000000654511405446017021447 0ustar rootroot######################################################################## # # # GLE - Graphics Layout Engine # # # # Modified BSD License # # # # Copyright (C) 2009 GLE. # # # # Redistribution and use in source and binary forms, with or without # # modification, are permitted provided that the following conditions # # are met: # # # # 1. Redistributions of source code must retain the above copyright # # notice, this list of conditions and the following disclaimer. # # # # 2. Redistributions in binary form must reproduce the above # # copyright notice, this list of conditions and the following # # disclaimer in the documentation and/or other materials provided with # # the distribution. # # # # 3. The name of the author may not be used to endorse or promote # # products derived from this software without specific prior written # # permission. # # # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR # # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY # # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE # # GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER # # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN # # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # # ######################################################################## # Replace entries in makefile # ./configure -prefix /localhost/tmp/jans/qt4.3.2 -nomake examples,tools -release -static -no-qt3support -no-openssl -no-cups -no-opengl -no-xinerama -no-xfixes -no-xrandr -no-tablet -no-glib -no-mmx -no-3dnow -no-sse -no-sse2 $file = $ARGV[0]; open(IN, $file) || die "Can't open $file"; @LINES = ; close(IN); open(OUT, ">$file") || die "Can't create $file"; foreach $line (@LINES) { chomp($line); if ($line =~ /^CXX\s+\=/) { $line = "CXX = apg++"; } if ($line =~ /^LINK\s+\=/) { $line = "LINK = apg++"; } if ($line =~ /^LFLAGS\s+\=\s+(.+)$/) { $flags = $1; $line = "LFLAGS = $flags -static-libgcc -Wl,-Bstatic -lstdc++ -Wl,-Bdynamic"; } print OUT "$line\n"; } close(OUT); gle-graphics-4.2.4c/platform/autopackage/gle4.apspec.in0000664000000000000000000001024411405446017021501 0ustar rootroot# -*-shell-script-*- ######################################################################## # # # GLE - Graphics Layout Engine # # # # Modified BSD License # # # # Copyright (C) 2009 GLE. # # # # Redistribution and use in source and binary forms, with or without # # modification, are permitted provided that the following conditions # # are met: # # # # 1. Redistributions of source code must retain the above copyright # # notice, this list of conditions and the following disclaimer. # # # # 2. Redistributions in binary form must reproduce the above # # copyright notice, this list of conditions and the following # # disclaimer in the documentation and/or other materials provided with # # the distribution. # # # # 3. The name of the author may not be used to endorse or promote # # products derived from this software without specific prior written # # permission. # # # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR # # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY # # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE # # GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER # # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN # # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # # ######################################################################## [Meta] ShortName: gle SoftwareVersion: @GLE_VERSION@ DisplayName: Graphics Layout Engine (GLE) RootName: @glx.sourceforge.net/gle:@GLE_VERSION@ Summary: A high quality package for creating graphs, plots, and diagrams. Maintainer: Jan Struyf Packager: Jan Struyf PackageVersion: 1 CPUArchitectures: x86 AutopackageTarget: 1.0 Type: Application License: BSD [Description] GLE (Graphics Layout Engine) is a high-quality graphics package for scientists, combining a user-friendly scripting language with a full range of facilities for producing publication-quality graphs, diagrams, posters and slides. GLE provides LaTeX quality fonts together with a flexible graphics module which allows the user to specify any feature of a graph. Complex pictures can be drawn with user-defined subroutines and simple looping structures. Current output formats include EPS, PS, PDF, JPEG, and PNG. [BuildPrepare] APBUILD_STATIC_LIBGCC=1 APBUILD_STATIC="tiff png12 png jpeg z" prepareBuild --with-apintern --with-staticlink=yes --with-qt=/localhost/tmp/jans/qt4.3.2 @AP_CONFIG_ARGS@ [BuildUnprepare] unprepareBuild [Globals] [Prepare] recommend @freetype.org/freetype 6 [Imports] echo '*' | import [Install] installExe bin/* installLib lib/* installData share/gle installIcon share/gle/@GLE_VERSION@/gle.png installMime share/gle/@GLE_VERSION@/gle.xml installDesktop "Graphics/Vector Graphics" share/gle/@GLE_VERSION@/gle.desktop installMan man/man1/gle.1 [Uninstall] uninstallFromLog gle-graphics-4.2.4c/platform/autopackage/gle.gle0000664000000000000000000000665011405446017020312 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! Small gle Logo ! size 4 4 !set font psagb dx=4 dy=4 set hei 2 boxw=dx/7 boxh=6 amove -0.05 -0.05 set color BLACK box dx+0.1 dy+0.1 fill BLACK round 0.5 sub draw_box dx dy clr$ gsave set color clr$ box dx dy fill clr$ grestore end sub amove dx/2 dy/2 begin scale 1 2 set just cc begin clip ! Save default clipping region begin path clip ! Set up the clipping region text GLE end path amove 0 0 @draw_box boxw boxh red rmove boxw 0 @draw_box boxw boxh orange rmove boxw 0 @draw_box boxw boxh yellow rmove boxw 0 @draw_box boxw boxh green rmove boxw 0 @draw_box boxw boxh neon_blue rmove boxw 0 @draw_box boxw boxh coral rmove boxw 0 @draw_box boxw boxh violet rmove boxw 0 end clip end scale gle-graphics-4.2.4c/platform/autopackage/gle.xml0000664000000000000000000000033711405446017020337 0ustar rootroot GLE Script File gle-graphics-4.2.4c/platform/script/killspace0000664000000000000000000000557011447671544017777 0ustar rootroot######################################################################## # # # GLE - Graphics Layout Engine # # # # Modified BSD License # # # # Copyright (C) 2009 GLE. # # # # Redistribution and use in source and binary forms, with or without # # modification, are permitted provided that the following conditions # # are met: # # # # 1. Redistributions of source code must retain the above copyright # # notice, this list of conditions and the following disclaimer. # # # # 2. Redistributions in binary form must reproduce the above # # copyright notice, this list of conditions and the following # # disclaimer in the documentation and/or other materials provided with # # the distribution. # # # # 3. The name of the author may not be used to endorse or promote # # products derived from this software without specific prior written # # permission. # # # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR # # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY # # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE # # GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER # # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN # # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # # ######################################################################## #!/bin/sh find src -name "*.cpp" -exec perl platform/script/killtrailspace.pl {} \; find src -name "*.h" -exec perl platform/script/killtrailspace.pl {} \; find . -name "Makefile.in" -exec perl platform/script/killtrailspace.pl {} \; gle-graphics-4.2.4c/platform/script/collectsrcfiles.pl0000664000000000000000000001236011405446017021602 0ustar rootroot######################################################################## # # # GLE - Graphics Layout Engine # # # # Modified BSD License # # # # Copyright (C) 2009 GLE. # # # # Redistribution and use in source and binary forms, with or without # # modification, are permitted provided that the following conditions # # are met: # # # # 1. Redistributions of source code must retain the above copyright # # notice, this list of conditions and the following disclaimer. # # # # 2. Redistributions in binary form must reproduce the above # # copyright notice, this list of conditions and the following # # disclaimer in the documentation and/or other materials provided with # # the distribution. # # # # 3. The name of the author may not be used to endorse or promote # # products derived from this software without specific prior written # # permission. # # # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR # # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY # # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE # # GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER # # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN # # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # # ######################################################################## $distall = 0; sub try_sel { my ($path, $file) = @_; my ($ok, $nok, $pos); if ($file eq ".notdist") { return; } $ok = 0; foreach $pos (@SEL) { if (eval($pos)) { $ok = 1; } } $nok = 0; foreach $pos (@IGN) { if (eval($pos)) { $nok = 1; } } $path =~ s/^\.\///; if (($ok == 1) || ($nok == 1)) { if ($nok != 1) { print "$path\n"; } } else { print STDERR "What about: '$path'\n"; } } sub recursive_search { my ($dir) = @_; print STDERR "Recursive Directory: $dir\n"; my (@FILES, $handle, $file, $path, $ntline, %NOTDIST); opendir($handle, $dir); @FILES = readdir($handle); closedir($handle); if (-f "$dir/.notdist") { open(NOTDIST, "$dir/.notdist"); while ($ntline = ) { chomp($ntline); if ($ntline =~ /^distall\: (.+)$/) { $ntline = $1; if ($distall == 0) { $NOTDIST{$ntline} = 1; } } else { $NOTDIST{$ntline} = 1; } } close(NOTDIST); } foreach $file (@FILES) { if (!($file =~ /^\.svn$/) && !($file =~ /^CVS$/) && !($file =~ /^\.cvsignore$/) && !($file =~ /^\.+$/) && !($file =~ /^\.gle$/)) { $path = $dir . "/" . $file; if (-d $path) { recursive_search($path); } elsif (!defined($NOTDIST{$file})) { try_sel($path, $file); } else { print STDERR "Can't distribute: $path\n"; } } } } sub dir_search { my ($dir) = @_; print STDERR "Directory: $dir\n"; my (@FILES, $handle, $file, $path); opendir($handle, $dir); @FILES = readdir($handle); closedir($handle); foreach $file (@FILES) { if (!($file =~ /^\.svn$/) && !($file =~ /^CVS$/) && !($file =~ /^\.cvsignore$/) && !($file =~ /^\.+$/)) { $path = $dir . "/" . $file; if (!(-d $path)) { try_sel($path, $file); } } } } sub update_regex { my ($re) = @_; $re =~ s/\./\\./g; $re =~ s/\*/\.*/g; return "\$file =~ /^$re\$/"; } if ($ARGV[0] eq "-all") { $distall = 1; $file = $ARGV[1]; } else { $file = $ARGV[0]; } open(IN, $file) || die "Can't open '$file'"; while ($line = ) { chomp($line); if (!($line =~ /^\s*$/) && !($line =~ /^\s*!/)) { ($dir, $select, $ignore) = split(/\s*,\s*/, $line); $select =~ s/\s+$//; $ignore =~ s/\s+$//; @SEL = split(/\s*;\s*/, $select); for ($i = 0; $i <= $#SEL; $i++) { $SEL[$i] = update_regex($SEL[$i]); } @IGN = split(/\s*;\s*/, $ignore); for ($i = 0; $i <= $#IGN; $i++) { $IGN[$i] = update_regex($IGN[$i]); } if ($dir =~ /^\$(.+)$/) { $dir = $1; dir_search($dir); } else { recursive_search($dir); } } } close(IN); gle-graphics-4.2.4c/platform/script/killtrailspace.pl0000664000000000000000000000616011405446017021426 0ustar rootroot######################################################################## # # # GLE - Graphics Layout Engine # # # # Modified BSD License # # # # Copyright (C) 2009 GLE. # # # # Redistribution and use in source and binary forms, with or without # # modification, are permitted provided that the following conditions # # are met: # # # # 1. Redistributions of source code must retain the above copyright # # notice, this list of conditions and the following disclaimer. # # # # 2. Redistributions in binary form must reproduce the above # # copyright notice, this list of conditions and the following # # disclaimer in the documentation and/or other materials provided with # # the distribution. # # # # 3. The name of the author may not be used to endorse or promote # # products derived from this software without specific prior written # # permission. # # # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR # # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY # # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE # # GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER # # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN # # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # # ######################################################################## $file = $ARGV[0]; open(IN,"$file") || die "Can't open '$file'"; @LINES = ; close(IN); $count = 0; for ($i = 0; $i <= $#LINES; $i++) { $line = $LINES[$i]; $line =~ s/[\r\n]+//g; $prev = $line; $line =~ s/\s+$//; if ($line ne $prev) { $count++; } $LINES[$i] = $line; } if ($count > 0) { print "F: $file - $count\n"; open(OUT,">$file") || die "Can't create '$file'"; for ($i = 0; $i <= $#LINES; $i++) { $line = $LINES[$i]; print OUT "$line\n"; } close(OUT); } gle-graphics-4.2.4c/platform/script/install_qgle_mac0000775000000000000000000000617611405446017021321 0ustar rootroot######################################################################## # # # GLE - Graphics Layout Engine # # # # Modified BSD License # # # # Copyright (C) 2009 GLE. # # # # Redistribution and use in source and binary forms, with or without # # modification, are permitted provided that the following conditions # # are met: # # # # 1. Redistributions of source code must retain the above copyright # # notice, this list of conditions and the following disclaimer. # # # # 2. Redistributions in binary form must reproduce the above # # copyright notice, this list of conditions and the following # # disclaimer in the documentation and/or other materials provided with # # the distribution. # # # # 3. The name of the author may not be used to endorse or promote # # products derived from this software without specific prior written # # permission. # # # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR # # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY # # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE # # GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER # # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN # # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # # ######################################################################## #!/bin/sh touch /Applications/qgle.check 2>/dev/null QGLEDIR= if test -f /Applications/qgle.check; then QGLEDIR=/Applications else mkdir -p ~/Applications QGLEDIR=~/Applications fi rm -f /Applications/qgle.check 2>/dev/null rm -rf $QGLEDIR/QGLE.app cp -r ./build/bin/QGLE.app $QGLEDIR/ echo "" echo "****************************************************************" echo "QGLE has been installed in: $QGLEDIR/QGLE.app" echo "****************************************************************" gle-graphics-4.2.4c/platform/script/correctfilemodes.pl0000664000000000000000000001265511405446017021762 0ustar rootroot######################################################################## # # # GLE - Graphics Layout Engine # # # # Modified BSD License # # # # Copyright (C) 2009 GLE. # # # # Redistribution and use in source and binary forms, with or without # # modification, are permitted provided that the following conditions # # are met: # # # # 1. Redistributions of source code must retain the above copyright # # notice, this list of conditions and the following disclaimer. # # # # 2. Redistributions in binary form must reproduce the above # # copyright notice, this list of conditions and the following # # disclaimer in the documentation and/or other materials provided with # # the distribution. # # # # 3. The name of the author may not be used to endorse or promote # # products derived from this software without specific prior written # # permission. # # # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR # # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY # # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE # # GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER # # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN # # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # # ######################################################################## use Fcntl ':mode'; $files = `find .`; @files = split(/[\n\r]+/, $files); @OKEXEEXT_A = ("cmd","sh","pl","exe","so","package"); @NOEXEEXT_A = ("gle","cpp","h","i","gif","png","html","hlp","ico","pdf","tex","dat","csv","bak","let","sur","z","txt","bmp","css","big","key","lab","lis","xpm","ttf","sty","stx","win32","nsi"); @NOEXTFILES_A = ("changelog","surf_batch","surf_regis","surf_tek","surf_vt","surf_x"); foreach $ext (@NOEXEEXT_A) { $NOEXEEXT{$ext} = 1; } foreach $ext (@OKEXEEXT_A) { $OKEXEEXT{$ext} = 1; } foreach $ext (@NOEXTFILES_A) { $NOEXTFILES{$ext} = 1; } foreach $f (@files) { if (!($f =~ /\.svn/)) { ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime,$blksize,$blocks) = stat($f); if (S_ISLNK($mode) || S_ISBLK($mode) || S_ISCHR($mode) || S_ISFIFO($mode) || S_ISSOCK($mode)) { printf "*** FILE: $f has strange mode: %o\n", $mode; } if (($mode & S_ISUID) != 0) { printf "*** FILE: $f has UID bit set: %o\n", $mode; } if ((($mode & S_ISGID) != 0) || (($mode & S_ISVTX) != 0)) { printf "*** FILE: $f has GID/Sticky bit set: %o\n", $mode; } if ((($mode & S_IWGRP) != 0) || (($mode & S_IWOTH) != 0)) { printf "*** FILE: $f is group/other writable: %o\n", $mode; } if ((($mode & S_IRUSR) == 0) || (($mode & S_IRUSR) == 0) || (($mode & S_IRUSR) == 0)) { printf "*** FILE: $f is not world readable: %o\n", $mode; } if (($mode & S_IWUSR) == 0) { printf "*** FILE: $f is read only: %o\n", $mode; } if (($mode & S_IXUSR) != 0) { if ((($mode & S_IXOTH) == 0) || (($mode & S_IXGRP) == 0)) { printf "*** FILE: $f user executable, but not world executable: %o\n", $mode; } if (S_ISREG($mode)) { $ok = 0; if ($f =~ /\.([^\.\/]+)$/) { $ext = lc($1); if ($NOEXEEXT{$ext} == 1) { $ok = 1; printf "*** FILE: $f should *not* be executable, fixing: %o\n", $mode; chmod 0644, $f; } if ($OKEXEEXT{$ext} == 1) { $ok = 1; } } if ($f =~ /\/([^\/]+)$/) { $fname = lc($1); if ($fname =~ /makefile/) { $ok = 1; printf "*** FILE: $f should *not* be executable, fixing: %o\n", $mode; chmod 0644, $f; } if ($NOEXTFILES{$fname} == 1) { $ok = 1; printf "*** FILE: $f should *not* be executable, fixing: %o\n", $mode; chmod 0644, $f; } } if ($ok == 0) { printf "*** FILE: $f is executable: %o\n", $mode; } } } if ((!S_ISREG($mode)) && (!S_ISDIR($mode))) { printf "*** FILE: $f is not a regular file nor a directory: %o\n", $mode; } if (S_ISREG($mode) && S_ISDIR($mode)) { printf "*** FILE: $f both a regular file and a directory: %o\n", $mode; } if (S_ISDIR($mode)) { if (($mode & S_IXUSR) == 0) { printf "*** FILE: $f is a directory and not executable: %o\n", $mode; } } } } gle-graphics-4.2.4c/platform/script/checkdos0000775000000000000000000000542611405446017017603 0ustar rootroot######################################################################## # # # GLE - Graphics Layout Engine # # # # Modified BSD License # # # # Copyright (C) 2009 GLE. # # # # Redistribution and use in source and binary forms, with or without # # modification, are permitted provided that the following conditions # # are met: # # # # 1. Redistributions of source code must retain the above copyright # # notice, this list of conditions and the following disclaimer. # # # # 2. Redistributions in binary form must reproduce the above # # copyright notice, this list of conditions and the following # # disclaimer in the documentation and/or other materials provided with # # the distribution. # # # # 3. The name of the author may not be used to endorse or promote # # products derived from this software without specific prior written # # permission. # # # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR # # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY # # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE # # GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER # # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN # # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # # ######################################################################## #!/bin/sh find src -name "*.cpp" -exec perl platform/script/dosperc {} \; find src -name "*.h" -exec perl platform/script/dosperc {} \; gle-graphics-4.2.4c/platform/script/licenses.csv0000664000000000000000000000674611405446017020422 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! README.txt, Modified BSD LICENSE.txt, Modified BSD configure, Modified BSD contrib/editors/highlighting/vim/ftplugin/gle.vim, Modified BSD contrib/editors/highlighting/vim/indent/gle.vim, Modified BSD contrib/editors/highlighting/vim/syntax/gle.vim, Modified BSD contrib/packagers/nsis/banner_image.bmp, Modified BSD contrib/packagers/nsis/welcome_image.bmp, Modified BSD contrib/packagers/nsis/www.ico, Modified BSD platform/autoconf/gle-graphics.pc.in, Modified BSD platform/autopackage/gle.desktop, Modified BSD platform/autopackage/gle.xml, Modified BSD platform/script/checklicense.pl, Modified BSD src/fonts/font.dat, Modified BSD src/fonts/glemark.afm, Modified BSD src/fonts/psfont.dat, Modified BSD src/gui/images/gle.icns, GPL v2 or later src/gui/images/gle.ico, GPL v2 or later src/gui/qgle.rc, GPL v2 or later src/manip/manip.hlp, Modified BSD gle-graphics-4.2.4c/platform/script/makesnapshot.pl0000664000000000000000000000703711405446017021124 0ustar rootroot######################################################################## # # # GLE - Graphics Layout Engine # # # # Modified BSD License # # # # Copyright (C) 2009 GLE. # # # # Redistribution and use in source and binary forms, with or without # # modification, are permitted provided that the following conditions # # are met: # # # # 1. Redistributions of source code must retain the above copyright # # notice, this list of conditions and the following disclaimer. # # # # 2. Redistributions in binary form must reproduce the above # # copyright notice, this list of conditions and the following # # disclaimer in the documentation and/or other materials provided with # # the distribution. # # # # 3. The name of the author may not be used to endorse or promote # # products derived from this software without specific prior written # # permission. # # # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR # # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY # # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE # # GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER # # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN # # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # # ######################################################################## $make = $ARGV[0]; open(IN, "configure.ac") || die "Can't open configure.ac"; @LINES = ; close(IN); $found = 0; open(OUT, ">configure.ac") || die "Can't write to configure.ac"; for ($i = 0; $i <= $#LINES; $i++) { $line = $LINES[$i]; chomp($line); if ($found == 0) { if ($line =~ /^GLE_SNAPSHOT\=/) { $found = 1; if ($make == 1) { $date = `date +\%m\%d\%y`; $date =~ s/[\n\r]+$//; if ($ARGV[1] eq "") { $snap = "S$date"; } else { $snap = $ARGV[1]; } print OUT "GLE_SNAPSHOT=\"-$snap\"\n"; print OUT "AC_DEFINE_UNQUOTED(GLE_SNAPSHOT, \"\$GLE_SNAPSHOT\")\n"; print "Making snapshot: $snap\n"; } else { print OUT "GLE_SNAPSHOT=\"\"\n"; print "Clearing snapshot\n"; } if ($LINES[$i+1] =~ /AC_DEFINE_UNQUOTED/) { $i++; } } else { print OUT "$line\n"; } } else { print OUT "$line\n"; } } close(OUT); system("autoconf"); gle-graphics-4.2.4c/platform/script/checklicense.pl0000664000000000000000000001327211405446017021045 0ustar rootroot######################################################################## # # # GLE - Graphics Layout Engine # # # # Modified BSD License # # # # Copyright (C) 2009 GLE. # # # # Redistribution and use in source and binary forms, with or without # # modification, are permitted provided that the following conditions # # are met: # # # # 1. Redistributions of source code must retain the above copyright # # notice, this list of conditions and the following disclaimer. # # # # 2. Redistributions in binary form must reproduce the above # # copyright notice, this list of conditions and the following # # disclaimer in the documentation and/or other materials provided with # # the distribution. # # # # 3. The name of the author may not be used to endorse or promote # # products derived from this software without specific prior written # # permission. # # # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR # # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY # # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE # # GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER # # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN # # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # # ######################################################################## # cat srcfiles.txt | xargs perl platform/script/checklicense.pl # identify -verbose *.png | grep Comment # for file in *.png ; do mogrify -comment "License: GPL v.2 or later" "$file" ; done open(IN, "platform/script/licenses.csv") || die "Can't open 'platform/script/licenses.csv'"; while ($line = ) { chomp($line); if (!($line =~ /^\s*\!.*$/) && !($line =~ /^\s*$/)) { if ($line =~ /^([^\,]+)\,\s*(.+)$/) { $file = $1; $lic = $2; if ($lic =~ /Modified BSD/) { $MOD_BSD_LIC{$file} = 1; $HAS_LIC{$file} = 1; } if ($lic =~ /GPL v2 or later/) { $GPL_LIC2L{$file} = 1; $HAS_LIC{$file} = 1; } } } } for ($i = 0; $i <= $#ARGV; $i++) { $file = $ARGV[$i]; $modified_bsd = 0; $gpl = 0; $gpl2 = 0; $gpl21 = 0; $gpl_later = 0; $zlib = 0; if ($file =~ /\.png$/) { $comment = `identify -verbose $file`; if ($comment =~ /GPL v\.2 or later/) { $gpl = 1; $gpl2 = 1; $gpl_later = 1; } if ($comment =~ /Modified BSD/) { $modified_bsd = 1; } } else { @ALL = (); open(IN, $file) || die "Can't open '$file'"; while ($line = ) { if ($line =~ /^[\s\#\%\!\*\;]+ZLIB\/LIBPNG LICENSE/) { $zlib = 1; } if ($line =~ /^[\s\#\%\!\*\;\.\\\"]+Modified BSD License/) { $modified_bsd = 1; } if ($line =~ /^rem[\s\#\%\!\*]+Modified BSD License/) { $modified_bsd = 1; } if ($line =~ /General Public License/) { $gpl = 1; } $line =~ s/[\n\r]+//g; push @ALL, $line; } close(IN); if ($gpl == 1) { $lines = join(" ", @ALL); $lines =~ s/[\*\#\!\%]/ /g; $lines =~ s/\;\;/ /g; $lines =~ s/\s\s+/ /g; # print "$lines\n"; if ($lines =~ /version 2 of the License, or \(at your option\) any later version/) { $gpl2 = 1; $gpl_later = 1; } if ($lines =~ /either version 2, or \(at your option\) any later version/) { $gpl2 = 1; $gpl_later = 1; } if ($lines =~ /version 2\.1 of the License, or \(at your option\) any later version/) { $gpl21 = 1; $gpl_later = 1; } } } if ($HAS_LIC{$file} != 1) { if ($gpl == 1) { if (($gpl21 == 1) && ($gpl_later == 1)) { $GPL_LIC21L{$file} = 1; } elsif (($gpl2 == 1) && ($gpl_later == 1)) { $GPL_LIC2L{$file} = 1; } elsif ($gpl2 == 1) { $GPL_LIC2{$file} = 1; } else { $GPL_LIC{$file} = 1; } } elsif ($modified_bsd == 1) { $MOD_BSD_LIC{$file} = 1; } elsif ($zlib == 1) { $ZLIB_LIC{$file} = 1; } else { $UNKNOWN{$file} = 1; } } } print "*** Modified BSD License ***\n\n"; foreach $f (sort keys(%MOD_BSD_LIC)) { print "$f\n"; } print "\n*** LGPL v2.1 or later ***\n\n"; foreach $f (sort keys %GPL_LIC21L) { print "$f\n"; } print "\n*** GPL v2 or later ***\n\n"; foreach $f (sort keys %GPL_LIC2L) { print "$f\n"; } print "\n*** GPL v2 ***\n\n"; foreach $f (sort keys %GPL_LIC2) { print "$f\n"; } print "\n*** GPL (unknown) ***\n\n"; foreach $f (sort keys %GPL_LIC) { print "$f\n"; } print "\n*** ZLIB/LIBPNG License ***\n\n"; foreach $f (sort keys %ZLIB_LIC) { print "$f\n"; } print "\n*** Unknown ***\n\n"; foreach $f (sort keys %UNKNOWN) { print "$f\n"; } gle-graphics-4.2.4c/platform/script/srcfiles.csv0000664000000000000000000001011411663274370020416 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! $.,Makefile.*;config.*;configure.ac;configure;README.txt;LICENSE.txt;ChangeLog.txt,*.zip;*.gz;*.patch;Makefile;test.*;.*;extraconfig.*;srcfiles.txt;conf.txt*;config.status;config.log;aclocal.m4 platform/autoconf,config.*;install-sh;*.in,gle-graphics.pc platform/autopackage,gle.*;*.in;*.pl,gle4.apspec platform/script,*, platform/mac,*.sh;*.src, contrib/packagers/nsis,*.nsi;*.ico;*.bmp,*.psd contrib/editors/highlighting,*.el;*.nedit;*.vim;*.stx gle-refman,Makefile.*;*.tex;*.gle;*.dat;*.csv;*.big;*.sur;*.z;*.key;*.lab;*.let;*.sty;*.pl;*.lis,*.eps;*.pdf;*.ps;*.inc;*.aux;*.idx;*.ilg;*.ind;*.log;*.out;*.toc;*-cdata.dat;*-clabels.dat;*-cvalues.dat$src,config.h.*;config_noauto.h,config.h gle-refman/qgle/screenshot,*.png, $src,config.h.*;config_noauto.h,config.h src/doc,*.in,gle.1 src/gle,Makefile.*;*.cpp;*.h;*.i;files.txt,Makefile;*.o src/makefmt,Makefile.*;*.cpp;*.h;*.i;files.txt;parseAFM.diff,Makefile;*.o src/fbuild,Makefile.*;*.cpp;*.h;*.i;files.txt,Makefile;*.o $src/gui,Makefile.*;*.cpp;*.h;*.i;*.txt;*.html;*.in;*.sh;*.rc;*.qrc;doxyfile,Makefile;*.o;MakefileAC;qgle.pro;qrc_qgle.cpp;*.Debug;*.Release src/gui/gsinc,*.h;LICENSE src/gui/images,*.png;*.ico;*.icns src/TeX,Makefile.*;*.tex;*.cmd,Makefile src/lib,Makefile.*;*.gle src/fonts,Makefile.*;*.gle;*.afm;*.dat;*.enc;*.txt;*.pl;*.html;*.inf,*.fve;*.fmt;movefonts src/manip,Makefile.*;*.cpp;*.h;*.i;files.txt;*.hlp;*.dat,Makefile;*.o src/samples,Makefile.*;qgle_keyboard.gle;sample.gle;sample_compare.eps gle-graphics-4.2.4c/platform/script/dosperc0000775000000000000000000000573411405446017017461 0ustar rootroot######################################################################## # # # GLE - Graphics Layout Engine # # # # Modified BSD License # # # # Copyright (C) 2009 GLE. # # # # Redistribution and use in source and binary forms, with or without # # modification, are permitted provided that the following conditions # # are met: # # # # 1. Redistributions of source code must retain the above copyright # # notice, this list of conditions and the following disclaimer. # # # # 2. Redistributions in binary form must reproduce the above # # copyright notice, this list of conditions and the following # # disclaimer in the documentation and/or other materials provided with # # the distribution. # # # # 3. The name of the author may not be used to endorse or promote # # products derived from this software without specific prior written # # permission. # # # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR # # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY # # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE # # GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER # # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN # # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # # ######################################################################## #!/usr/local/bin/perl $cnt = 0; $dos = 0; $fname = $ARGV[0]; open(IN, $fname) || die "Can't open '$fname'"; while ($line = ) { $cnt ++; if ($line =~ /\r/) { $dos++; } } close(IN); if ($cnt != 0) { $perc = 100.0*$dos/$cnt; } else { $perc = 0; } if ($dos > 0) { printf "File: $fname DOS: $dos/$cnt = %.1f\%\n", $perc; } gle-graphics-4.2.4c/platform/mac/conf-static.src0000664000000000000000000000073511447671544020262 0ustar rootrootexport PATH=$HOME/staticlibs/bin/:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/opt/local/bin export CPPFLAGS="-I$HOME/staticlibs/include -mmacosx-version-min=10.4 -isysroot /Developer/SDKs/MacOSX10.4u.sdk" export LDFLAGS="-L$HOME/staticlibs/lib -mmacosx-version-min=10.4 -isysroot /Developer/SDKs/MacOSX10.4u.sdk" export CC=gcc-4.0 export CXX=g++-4.0 export MACOSX_DEPLOYMENT_TARGET=10.4 ./configure --with-qt=$HOME/staticlibs --with-extrafonts=yes --with-x=no gle-graphics-4.2.4c/platform/mac/build-path.sh0000664000000000000000000000275611447671544017731 0ustar rootrootexport CPPFLAGS="-I$HOME/staticlibs/include -arch i386 -mmacosx-version-min=10.4 -isysroot /Developer/SDKs/MacOSX10.4u.sdk" export CXXFLAGS="-I$HOME/staticlibs/include -arch i386 -mmacosx-version-min=10.4 -isysroot /Developer/SDKs/MacOSX10.4u.sdk" export CFLAGS="-I$HOME/staticlibs/include -arch i386 -mmacosx-version-min=10.4 -isysroot /Developer/SDKs/MacOSX10.4u.sdk" export LDFLAGS="-L$HOME/staticlibs/lib -arch i386 -mmacosx-version-min=10.4 -isysroot /Developer/SDKs/MacOSX10.4u.sdk" export PATH=/Users/macbook/staticlibs/bin/:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/opt/local/bin export CC=gcc-4.0 export CXX=g++-4.0 export MACOSX_DEPLOYMENT_TARGET=10.4 # Build QT: # # ./configure -prefix $HOME/staticlibs -release -nomake examples -nomake tools -static -system-libpng -no-qt3support -no-xmlpatterns -no-phonon -no-phonon-backend -no-webkit -no-mmx -no-3dnow -no-sse -no-sse2 -qt-zlib -no-gif -no-libtiff -no-libmng -no-libjpeg -no-openssl -no-cups -no-iconv -no-dbus -carbon -arch x86 -nomake demos -no-javascript-jit -no-script -no-scripttools -no-declarative -I /Users/macbook/staticlibs/include -L /Users/macbook/staticlibs/lib # make sub-src # make install # Build libjpeg, libtiff, pixman # # ./configure --prefix=$HOME/staticlibs --enable-static=yes --enable-shared=no # Cairo # # ./configure --prefix=$HOME/staticlibs --enable-static=yes --enable-shared=no --enable-quartz=no --enable-ft=no --enable-xlib=no # libpng should be linked dynamically # (it is used by both Qt and GLE) gle-graphics-4.2.4c/contrib/packagers/nsis/AddToPath.nsi0000644000000000000000000002755611405446017021647 0ustar rootroot!ifndef _AddToPath_nsh !define _AddToPath_nsh ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ;; ;; * All NSIS source code, plug-ins, documentation, examples, header files and graphics, ;; ;; with the exception of the compression modules and where otherwise noted, are licensed ;; ;; under the zlib/libpng license. ;; ;; ;; ;; ZLIB/LIBPNG LICENSE ;; ;; ------------------- ;; ;; ;; ;; This software is provided 'as-is', without any express or implied warranty. In no ;; ;; event will the authors be held liable for any damages arising from the use of this ;; ;; software. ;; ;; ;; ;; Permission is granted to anyone to use this software for any purpose, including ;; ;; commercial applications, and to alter it and redistribute it freely, subject to the ;; ;; following restrictions: ;; ;; ;; ;; 1. The origin of this software must not be misrepresented; you must not claim that you ;; ;; wrote the original software. If you use this software in a product, an acknowledgment ;; ;; in the product documentation would be appreciated but is not required. ;; ;; ;; ;; 2. Altered source versions must be plainly marked as such, and must not be ;; ;; misrepresented as being the original software. ;; ;; ;; ;; 3. This notice may not be removed or altered from any source distribution. ;; ;; ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; !verbose 3 !include "WinMessages.NSH" !verbose 4 !ifndef WriteEnvStr_RegKey !ifdef ALL_USERS !define WriteEnvStr_RegKey \ 'HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment"' !else !define WriteEnvStr_RegKey 'HKCU "Environment"' !endif !endif ; AddToPath - Adds the given dir to the search path. ; Input - head of the stack ; Note - Win9x systems requires reboot Function AddToPath Exch $0 Push $1 Push $2 Push $3 # don't add if the path doesn't exist IfFileExists "$0\*.*" "" AddToPath_done ReadEnvStr $1 PATH Push "$1;" Push "$0;" Call StrStr Pop $2 StrCmp $2 "" "" AddToPath_done Push "$1;" Push "$0\;" Call StrStr Pop $2 StrCmp $2 "" "" AddToPath_done GetFullPathName /SHORT $3 $0 Push "$1;" Push "$3;" Call StrStr Pop $2 StrCmp $2 "" "" AddToPath_done Push "$1;" Push "$3\;" Call StrStr Pop $2 StrCmp $2 "" "" AddToPath_done Call IsNT Pop $1 StrCmp $1 1 AddToPath_NT ; Not on NT StrCpy $1 $WINDIR 2 FileOpen $1 "$1\autoexec.bat" a FileSeek $1 -1 END FileReadByte $1 $2 IntCmp $2 26 0 +2 +2 # DOS EOF FileSeek $1 -1 END # write over EOF FileWrite $1 "$\r$\nSET PATH=%PATH%;$3$\r$\n" FileClose $1 SetRebootFlag true Goto AddToPath_done AddToPath_NT: ReadRegStr $1 ${WriteEnvStr_RegKey} "PATH" StrCpy $2 $1 1 -1 # copy last char StrCmp $2 ";" 0 +2 # if last char == ; StrCpy $1 $1 -1 # remove last char StrCmp $1 "" AddToPath_NTdoIt StrCpy $0 "$1;$0" AddToPath_NTdoIt: WriteRegExpandStr ${WriteEnvStr_RegKey} "PATH" $0 SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0 "STR:Environment" /TIMEOUT=5000 AddToPath_done: Pop $3 Pop $2 Pop $1 Pop $0 FunctionEnd ; RemoveFromPath - Remove a given dir from the path ; Input: head of the stack Function un.RemoveFromPath Exch $0 Push $1 Push $2 Push $3 Push $4 Push $5 Push $6 IntFmt $6 "%c" 26 # DOS EOF Call un.IsNT Pop $1 StrCmp $1 1 unRemoveFromPath_NT ; Not on NT StrCpy $1 $WINDIR 2 FileOpen $1 "$1\autoexec.bat" r GetTempFileName $4 FileOpen $2 $4 w GetFullPathName /SHORT $0 $0 StrCpy $0 "SET PATH=%PATH%;$0" Goto unRemoveFromPath_dosLoop unRemoveFromPath_dosLoop: FileRead $1 $3 StrCpy $5 $3 1 -1 # read last char StrCmp $5 $6 0 +2 # if DOS EOF StrCpy $3 $3 -1 # remove DOS EOF so we can compare StrCmp $3 "$0$\r$\n" unRemoveFromPath_dosLoopRemoveLine StrCmp $3 "$0$\n" unRemoveFromPath_dosLoopRemoveLine StrCmp $3 "$0" unRemoveFromPath_dosLoopRemoveLine StrCmp $3 "" unRemoveFromPath_dosLoopEnd FileWrite $2 $3 Goto unRemoveFromPath_dosLoop unRemoveFromPath_dosLoopRemoveLine: SetRebootFlag true Goto unRemoveFromPath_dosLoop unRemoveFromPath_dosLoopEnd: FileClose $2 FileClose $1 StrCpy $1 $WINDIR 2 Delete "$1\autoexec.bat" CopyFiles /SILENT $4 "$1\autoexec.bat" Delete $4 Goto unRemoveFromPath_done unRemoveFromPath_NT: ReadRegStr $1 ${WriteEnvStr_RegKey} "PATH" StrCpy $5 $1 1 -1 # copy last char StrCmp $5 ";" +2 # if last char != ; StrCpy $1 "$1;" # append ; Push $1 Push "$0;" Call un.StrStr ; Find `$0;` in $1 Pop $2 ; pos of our dir StrCmp $2 "" unRemoveFromPath_done ; else, it is in path # $0 - path to add # $1 - path var StrLen $3 "$0;" StrLen $4 $2 StrCpy $5 $1 -$4 # $5 is now the part before the path to remove StrCpy $6 $2 "" $3 # $6 is now the part after the path to remove StrCpy $3 $5$6 StrCpy $5 $3 1 -1 # copy last char StrCmp $5 ";" 0 +2 # if last char == ; StrCpy $3 $3 -1 # remove last char WriteRegExpandStr ${WriteEnvStr_RegKey} "PATH" $3 SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0 "STR:Environment" /TIMEOUT=5000 unRemoveFromPath_done: Pop $6 Pop $5 Pop $4 Pop $3 Pop $2 Pop $1 Pop $0 FunctionEnd ; AddToEnvVar - Adds the given value to the given environment var ; Input - head of the stack $0 environement variable $1=value to add ; Note - Win9x systems requires reboot Function AddToEnvVar Exch $1 ; $1 has environment variable value Exch Exch $0 ; $0 has environment variable name DetailPrint "Adding $1 to $0" Push $2 Push $3 Push $4 ReadEnvStr $2 $0 Push "$2;" Push "$1;" Call StrStr Pop $3 StrCmp $3 "" "" AddToEnvVar_done Push "$2;" Push "$1\;" Call StrStr Pop $3 StrCmp $3 "" "" AddToEnvVar_done Call IsNT Pop $2 StrCmp $2 1 AddToEnvVar_NT ; Not on NT StrCpy $2 $WINDIR 2 FileOpen $2 "$2\autoexec.bat" a FileSeek $2 -1 END FileReadByte $2 $3 IntCmp $3 26 0 +2 +2 # DOS EOF FileSeek $2 -1 END # write over EOF FileWrite $2 "$\r$\nSET $0=%$0%;$4$\r$\n" FileClose $2 SetRebootFlag true Goto AddToEnvVar_done AddToEnvVar_NT: ReadRegStr $2 ${WriteEnvStr_RegKey} $0 StrCpy $3 $2 1 -1 # copy last char StrCmp $3 ";" 0 +2 # if last char == ; StrCpy $2 $2 -1 # remove last char StrCmp $2 "" AddToEnvVar_NTdoIt StrCpy $1 "$2;$1" AddToEnvVar_NTdoIt: WriteRegExpandStr ${WriteEnvStr_RegKey} $0 $1 SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0 "STR:Environment" /TIMEOUT=5000 AddToEnvVar_done: Pop $4 Pop $3 Pop $2 Pop $1 Pop $0 FunctionEnd ; RemoveFromEnvVar - Remove a given value from a environment var ; Input: head of the stack Function un.RemoveFromEnvVar Exch $1 ; $1 has environment variable value Exch Exch $0 ; $0 has environment variable name DetailPrint "Removing $1 from $0" Push $2 Push $3 Push $4 Push $5 Push $6 Push $7 IntFmt $7 "%c" 26 # DOS EOF Call un.IsNT Pop $2 StrCmp $2 1 unRemoveFromEnvVar_NT ; Not on NT StrCpy $2 $WINDIR 2 FileOpen $2 "$2\autoexec.bat" r GetTempFileName $5 FileOpen $3 $5 w GetFullPathName /SHORT $1 $1 StrCpy $1 "SET $0=%$0%;$1" Goto unRemoveFromEnvVar_dosLoop unRemoveFromEnvVar_dosLoop: FileRead $2 $4 StrCpy $6 $4 1 -1 # read last char StrCmp $6 $7 0 +2 # if DOS EOF StrCpy $4 $4 -1 # remove DOS EOF so we can compare StrCmp $4 "$1$\r$\n" unRemoveFromEnvVar_dosLoopRemoveLine StrCmp $4 "$1$\n" unRemoveFromEnvVar_dosLoopRemoveLine StrCmp $4 "$1" unRemoveFromEnvVar_dosLoopRemoveLine StrCmp $4 "" unRemoveFromEnvVar_dosLoopEnd FileWrite $3 $4 Goto unRemoveFromEnvVar_dosLoop unRemoveFromEnvVar_dosLoopRemoveLine: SetRebootFlag true Goto unRemoveFromEnvVar_dosLoop unRemoveFromEnvVar_dosLoopEnd: FileClose $3 FileClose $2 StrCpy $2 $WINDIR 2 Delete "$2\autoexec.bat" CopyFiles /SILENT $5 "$2\autoexec.bat" Delete $5 Goto unRemoveFromEnvVar_done unRemoveFromEnvVar_NT: ReadRegStr $2 ${WriteEnvStr_RegKey} $0 StrCpy $6 $2 1 -1 # copy last char StrCmp $6 ";" +2 # if last char != ; StrCpy $2 "$2;" # append ; Push $2 Push "$1;" Call un.StrStr ; Find `$1;` in $2 Pop $3 ; pos of our dir StrCmp $3 "" unRemoveFromEnvVar_done ; else, it is in path # $1 - path to add # $2 - path var StrLen $4 "$1;" StrLen $5 $3 StrCpy $6 $2 -$5 # $6 is now the part before the path to remove StrCpy $7 $3 "" $4 # $7 is now the part after the path to remove StrCpy $4 $6$7 StrCpy $6 $4 1 -1 # copy last char StrCmp $6 ";" 0 +2 # if last char == ; StrCpy $4 $4 -1 # remove last char WriteRegExpandStr ${WriteEnvStr_RegKey} $0 $4 SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0 "STR:Environment" /TIMEOUT=5000 unRemoveFromEnvVar_done: Pop $7 Pop $6 Pop $5 Pop $4 Pop $3 Pop $2 Pop $1 Pop $0 FunctionEnd !ifndef IsNT_KiCHiK !define IsNT_KiCHiK ########################################### # Utility Functions # ########################################### ; IsNT ; no input ; output, top of the stack = 1 if NT or 0 if not ; ; Usage: ; Call IsNT ; Pop $R0 ; ($R0 at this point is 1 or 0) !macro IsNT un Function ${un}IsNT Push $0 ReadRegStr $0 HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion" CurrentVersion StrCmp $0 "" 0 IsNT_yes ; we are not NT. Pop $0 Push 0 Return IsNT_yes: ; NT!!! Pop $0 Push 1 FunctionEnd !macroend !insertmacro IsNT "" !insertmacro IsNT "un." !endif ; IsNT_KiCHiK ; StrStr ; input, top of stack = string to search for ; top of stack-1 = string to search in ; output, top of stack (replaces with the portion of the string remaining) ; modifies no other variables. ; ; Usage: ; Push "this is a long ass string" ; Push "ass" ; Call StrStr ; Pop $R0 ; ($R0 at this point is "ass string") !macro StrStr un Function ${un}StrStr Exch $R1 ; st=haystack,old$R1, $R1=needle Exch ; st=old$R1,haystack Exch $R2 ; st=old$R1,old$R2, $R2=haystack Push $R3 Push $R4 Push $R5 StrLen $R3 $R1 StrCpy $R4 0 ; $R1=needle ; $R2=haystack ; $R3=len(needle) ; $R4=cnt ; $R5=tmp loop: StrCpy $R5 $R2 $R3 $R4 StrCmp $R5 $R1 done StrCmp $R5 "" done IntOp $R4 $R4 + 1 Goto loop done: StrCpy $R1 $R2 "" $R4 Pop $R5 Pop $R4 Pop $R3 Pop $R2 Exch $R1 FunctionEnd !macroend !insertmacro StrStr "" !insertmacro StrStr "un." !endif ; _AddToPath_nsh gle-graphics-4.2.4c/contrib/packagers/nsis/banner_image.bmp0000664000000000000000000006233211405446017022424 0ustar rootrootBMÚd6(–9¤d  ÿÿÿÿÿÿÿÿÿÿÿÿôôôêêêéééùùùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿöööòòòÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýôÿÿùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýý÷÷÷ÿÿÿÿÿÿÿÿÿÿÿÿ÷÷÷êêêêêêùùùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷÷÷üüüÿÿÿÿÿÿÿÿÿñññþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüü÷÷÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿúÿÿ¡Ðÿ©Ùÿ©Øÿ©ÕÿªÖÿ©Ðÿ©Öÿ©Úÿ©Øÿ¨Òÿ¨Òÿ©Öÿ£ÎÿÿöÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿËèÿf’ËipxNu¢\×6ƒ>’XÆVÂ|ÿL¬1y<lïhçPµrÿUìÿgàݰ»»ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÍçÍgggxgg¬ggÿgg¶ggâggÿgiÇiÚgh¯ggÿggìgg“gg|ggggöggÇggugg¥ggýggÿggígg†gg…ggŠggãgg·ggkggêêêÿÿÿÿÿÿÿÿÿ÷îî¶gg’gg£gg´gg€ggmgg‚gg‰gg¹gg–ggoggov§Š¨ã«ãÌžÌ|r|zqz©Š©º”ºý¹ýÆ›Æxpx†x†¦‰¦ÉœÉé­é}t§‡§ùñùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿööðY}ð2tÅh¹E£RºJ¢)P Z´ \¹9 Q¢ fÈ9rhÈ \¶ F‹ bÅ=z‚ÿòÿÍÉ ff0››Aââöÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¦Î¦¡È€º†Ëÿš¼t쉪ʗ©“ÄŠ®ÿÑfÍÏÓBGëÙÙÿÿÿÿÿÿÿÿÿðáá|:VK9b<f0SiU*]ƒ?ƒ};}³Y³ÄbÄy9yZ(ZÉeÉk2k°W°´Y´>>£P£ˆAˆ£P£¸\¸{6{ãÝãÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÐÐù‚‚¥[p+a;{vë fË B„ _¾mÙ K–4h V­ >~oÞ„ÿ‰ÿ3f ^¼ D‰ƒÿòÿßÜ,,ººþþÿÿgÿÿÌååÿûûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¬ÿ¬ÿÿÓ€–Óÿ¢Áƒ¿ÿÿÿÿïÁ‚ÍÿÐ…ÿÿÉ?ˆïÜÜÿÿÿÿÿÿÿÿÿñãã…H_7€…|8WS„ª&D£^¬11ÑrÑùˆùö‡öå}ån=n W ˆJˆÿÿþ‹þVyByQ,Qj9jq>q\-\åßåÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎÎÿ””ÎörË:ÿjÔ F L— A€ dÉ Y±;v _½ W­ Q¡ J– ]º‹ÿ€ù4g aÃ7p}ýþÿ¸³PP››ÿÿÿÿììTT†××¾ÊÊÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¬é¬îÿ¶Ž–¿ÿ¤¾ÐôÿÜË”„ÃúÿÑ‚ÿÿÍ;ñÜÜÿÿÿÿÿÿÿÿÿòããG^>nŽn+XU¨&E£^¬I(I©\©ÿŒÿÿŽÿÂjÂf8fª\ª|D|ÿÿüŠüv@vŒMŒm;mé€éÿ•ÿŸRŸàÝàÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÑÑÿº”Ðbr7mmÚ Y³9r?‚ Z·8y5tQ¬P«ví3p4m1nZ¸ j×(SBdnwuàà§§qqss„„VVÄÄ rr¸ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¬×¬xnsåj~ XÛŽû±stbʧq÷ÿÐÿÿðd'äÜÜÿÿÿÿÿÿÿÿÿêãã7?wk6>8:UR€§$C—UŸ˜R˜ŽMŽm:mpÿÿÿÿÿÿÿÿÿÿÿÿÿÿçç™™ÿÿÿÿÁÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¬ÿ¬ÿÿÿÿ¡ Þ öÿöÿÿþÿýþÿþþÿþþÿþþÿþþÿþþÿþþÿþþÿþþÿþþÿþþÿþþÿþþÿþþþþþÿþþÿþþÿþþÿþþÿþþÿÿÿÿÿÿÿÿÿÿÿÿñã。l[âËËÿþþÿýýäââø÷÷þþþÿÿÿÿÿÿÿÿÿùöùóðóÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÞÞÿ;;ÿÿÿÿÿÿÿÿÿ%ÿr³ÿ¼ÜÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÍÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿºÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¬ÿ¬ÿÿÿÿÿ ÿ ÷ÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñãã|„ƒcDGÜÌÌÿÿÿëëë’’’ÑÑÑÿÿÿÿÿÿÿÿÿÿÿÿÒÒÒ³³³ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ··ì}ožýÿ÷ähhâ¶ÁÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÑÿÿ¡ôôoo’’±±ÞÞ¥¥ÿÿÿÿÿÿòò»îîÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¬ã¬‚jŸÿ« Þ ÷ÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñããƒYmo>4ÙÌÌÿÿÿÌḬ̀°°ýýýÈÈȲ²²¾¾¾¤¤¤’’’ïïïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÙÙ÷„ Û œÿaåddèýýøÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüü®ÛÛ««AAÅÅuuÿÿÿÿüü““ ¤¤¿ÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¬Ñ¬¯Úˆ²‰ Ì ÷ÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñãã…E`RKjåÎÎ÷üü¸¸¸ñññ¹¹¹éééÉÉɱ±±ðððÆÆÆ¬¬¬ûûûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÔÔÿâlÿÿÞiÿ44™hhòÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ~  ÉÉ||ÿÿÿÿÚÚ{{úúÄÄÿúúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¬ÿ¬ÿÿÖ– Ô ÷ÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñãã…H_7‚{êÏÏãè躺ºÿÿÿßßß¼¼¼ÿÿÿ´´´éééÖÖÖµµµÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÃÃжótãÿ½{IIÿòòÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÞÞooÿÿÿÿÕÕ‚‚ûû¦¦øøÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¬ä¬æÿ®“– · ÷ÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿòãã‹F_Ai…äÉɽÃÃáááÿÿÿúúú®®®ïïïîîî···ÊÊʵµµÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþ›MŸË``xâššÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿöö‚ÜÜÿÿÿÿÚÚyyÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¬Û¬ubvíŽ n ÷ý÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿêãã0Azo6+ÔÊÊìííÿÿÿÿÿÿþþþîîîõõõÿÿÿÝÝÝ“““¸¸¸ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÕÕÜ ´ïîÿêâñccÿööÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüü˜˜ÙÙÎÎfÐÐóÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¬þ¬íâóÿ| À ÷ÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðããn{‚‚}qäÌÌÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ«««ÃÃÃÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿúúÿ‚‚üûÿÿÿÿÿddÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ/ÿÿÿÿýý©©vvpp¶¶­þÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¬ÿ¬ÿÿÿÿ¬ à ÷ÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñããcPÞÌÌÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿúúÿÿÿÿÿÿÿÿùùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿªÿÿÿÿÿÿÿÿÿÿÿÿÿÿGÿ±ëÿåÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¬ÿ¬ÿÿÿÿÿ ÿ ÷ÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñãã}ƒƒaGMÝÌÌÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿSSÿÿ°Åÿåf””Ñúúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ®ÿÿ÷÷šškkkkš¨ø_ÔÿÌÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¬Þ¬v`“ÿ  Ù ÷ÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñããƒTjq:.ØÌÌÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ""ÿÿ•³ü}{{¯ÿÿùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÞöö„„ŸŸùùûû¨·›4ùûÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¬Õ¬¾ì©Œ Í ÷ÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñãã…F`MRsäÌÌÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂÂÈŸÏ¡¾ðhwwÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýëëL¶¶ùùµµ§§¤«^9àüÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¬ÿ¬ÿÿØ– Ô ÷ÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñãã…H^7ƒyæÌÌÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿPPÆœj“ð++˜ÎÎÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš£­c›ÝkœÕiˆ®j›ÒkžÙiºj”ÅjœÕi¶n¹ÿl¦éh…§k¡àg|•m§òeùÿcµ²c¶¶c««c÷÷cÿÿcÜÜcŒŒcÞÞc°°cÿÿcÿÿgèèN¼¼öö±±££§©ºW÷ ýÿüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¬à¬Ýÿ¦™– ± ÷ÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñããˆE`DdçÌÌÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿúúÿYYÿÿÎ4k’DD÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿR€¶^5~[É+j+kR¶N°sï2w%Z)eWÂb×$[7…R[€~ããµµdd``ƒƒ__ÄÄssÿÿÿÿÙÙnnûûÿÿÿÿûÿ îmÿ òÿñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¬Þ¬u[|ó o ÷ý÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿéãã,D}s7'ÕÌÌÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ˜˜èľûønnÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿb¬ÿrö|ù€ÿ|ø~ønÜ eÊ„ÿ}ûyózö€ÿÿ~üv÷ÞóüüÿÿÿÿõõóóùùýýÛÛnnÿÿÿÿþþ¢¢††ÆÆÃÃ{ ±8ÿ>ÿ=ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¬ÿ¬øóûÿz Ç ÷ÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðããw~}såÌÌÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ––Î}¯ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿb«ÿvÿÿÿÿƒÿjÔ _¿„ÿÿÿÿÿÿÿyÿêÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿìì³³ÿÿÿÿÿÿÿÿ··„„~~ÄÎ ÿƒÿ9ÿ8ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¬ÿ¬ÿÿÿÿ¹ ä ÷ÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñãã}€€‡‚èÌÌÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ––ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ`ªÿtÿ }ÿ }ÿ }ÿ }ÿ €ÿ ‚ÿ }ÿ }ÿ }ÿ }ÿ }ÿ }ÿ }ÿwÿéÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ}ÿ9ÿ8ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¬ÿ¬ÿÿÿÿÿ ÿ ÷ÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñãã}‚|K4ÞÔÔÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ––ÿÿÿÿøúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿn±ÿ€ÿ"ˆÿ"ˆÿ"ˆÿ"ˆÿ"ˆÿ"ˆÿ"ˆÿ"ˆÿ"ˆÿ"ˆÿ"ˆÿ"ˆÿ"ˆÿ#ƒÿëÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿˆÿÿ‘ÿ‘ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¬ý¬ìåôÿõ û ÷ÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñãã~|~^MaoY$$—$$$$$$œqŸWŸ‹L‹ÿÿýŠý£Z£t@tf7fª]ªªSªãÆãÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ––òÝߦItãÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¬Ô¬´Ü‰±• ” ÷ÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïããp@fPNwLOKy£:™Q¡l4lƒAƒÎjÎÕmÕFU(UÂbÂs7sÊgÊÇfÇP$P¥T¥s8s´\´ÓbÓëÉëÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ––ÿÿÿÉP‘žÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¬ì¬Žfžÿ‰ ‚ ÷þ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿêãã1T‚|G4f==…LL‰LLˆLL§LLÂg|·Š½ÆÆÃÃl]lj]j¡{¡“r“ü¬ü¸‡¸q_qubu£{£Ñ•ÑÞœÞxdxcQcÉÅÉÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ––цƒ}äÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¬ÿ¬ÿÿÿÿ{ Ô ÷ÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿòãã……€Œ‡õÜÜÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ““强Úÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¬ÿ¬ÿÿÿÿä ô ÷ÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñãã}‚‚yF1ØÌÌÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¥¥ÿÿÿÿðôÿTTÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¬ú¬ÞÒêÿó ú ÷ÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñãã~x|_NXßÌÌÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ``ÿÿÿ–²ÿEEëÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¬Î¬kosæ… Í ÷ÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñãã…Fco30ØÌÌÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ\\ÿÿÿš·ôKKŠÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¬ê¬îÿµŽ• Ï ÷ÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñãã…H`=l…èÌÌÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿaa¤`Ÿ™¸ói  ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¬ÿ¬ÿÿÓ€— Ð ÷ÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñãã‰H^7}çÌÌÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿøøõ&&î¯@nÓ“dd–ÿÿïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¬Ò¬¦Èº” Š ÷þ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿîããf?iUHaàÌÌÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÅ] ­ò‚mmØ÷÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¬ð¬›u«ÿˆ Œ ÷þ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿêãã8Zƒ~N3ØÌÌÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¤¤ò}íÿÿÿÿÿòòÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¬ÿ¬ÿÿÿÿ} Ö ÷ÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿòãㆅ€ˆƒèÌÌÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþû æÿÿÿÿÿÿAAÿööÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ“ÿÿ+ÿÿ+ÿÿ+ÿÿ+ÿÿ+ÿÿ(ÿÿ)ÿÿ¶ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¬ÿ¬ÿÿÿÿê ÷ ÷ÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñãã}€€zoäÌÌÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÍÍÿÿÿÿÿÿÿÿ\\ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüÿÿXÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¬ÿ¬ÿÿÿÿÿ ÿ ÷ÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñãã|…„m@6ÙÌÌÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‰‰ÊØÿù¦•½..ÿØØÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðð]ÃÃÿÿÿÿÿÿÿÿÆÆ––#¯¯ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¬î¬¨’ÁÿÈ ê ÷ÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñããgthHGÜÌÌÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÙÙÕ00áûš|¬Œµ$$ÿßßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿXÜÜmmÿÿÿÿÿÿ®®~~­­¶ÀÀÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¬Ì¬‹©wȃ Ë ÷ÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñãã†C``=OÝÌÌÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿííÿåjÿÿØkÿ„CCê÷÷ùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüÿÿ[ŽŽÄÄ||ÿÿÿÿààwwîîÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¬û¬ÿÿ˃– Ò ÷ÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñãã…H_8{çÌÌÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿSSèmøÿÍoÿzâEE•ññëÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿ_õõbbÃÃ}}ÿÿÿÿÕÕ‚‚(õõÛõõÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¬ñ¬øÿÁ‡— Å ÷ÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿòããŽG];v„èÌÌÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýUU¯p†zËÇ6¥»GGiˆ‹“ÿÿýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ”œœ[ŠŠŒŒLLÆÆ}}ÿÿÿÿÖÖss™ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¬Ô¬‚‡sØ‘ t ÷þ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿëããD>sd9?ÚÌÌÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûûþYYñÔÿÛH¹ÿ˹D™þËÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ°ÿÿGÿÿ¿¿³³ÑÑÙÙÖÖwwÿÿÿÿöö¸ÚÚâþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¬ú¬Ë²×ÿƒ ¬ ÷þ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿíããVnƒ‚iTãÑÑÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿúúÿTTÿÿÿÿŸˆÿÿ4ÿwÿ€ÿ‡ÿÇáÿâðÿßîÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýþÿßíÿ×üÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿã㉉ÿÿÿÿàÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¬ÿ¬ÿÿÿÿ’ Û ÷ÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿòãツ€‚xn̳³òààðààðààïààóäçþñÿýðýýðýýðýýðýýðýýðýÿòÿìçìÚÝÚÞßÞ÷ì÷ÿóÿüðüýðýýðýýïýÿýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ^^ÿ..ÿÿÿÿÿÿ5ÿ†ÿ~ÿ €ÿ …ÿ ‚ÿxÿƒÄÿ¶ßÿµÜÿµÜÿµÖÿµÝÿ¶àÿ¶ßÿµÙÿµÙÿs¹ÿmÿèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÙÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¬ÿ¬ÿÿÿÿÿ ÿ ÷ÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñãã|…„iAG9a~€Ÿ4ÿŽÿñ€ñô‚ôþˆþþˆþø…øü‡üÔqÔ}A}~B~y?yKê}êó‚óü†üý‡ýø€øýìýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿççÿ44ÿ©øø¦† P ÿ iÓ A‚ T©pÝ?ŒB™]ÍYÈ|ÿP´6‚A—nòjéX¼~ÿíÿãàÆÆññ„„§§ÅÅã㯯Óÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¬ê¬™´ÿ½ å ÷ÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñããbqkEIM7ˆf>]'«_¯ßzßÊnÊ}D}{C{©\©¾h¾ÙvÙ X N‹L‹j:j¬_¬ééŽNŽF¦V¦ùêùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿççÿÀÀÒ û®%¸ N™ ^» P¡ V® P )R U© Z´= P¡ iÍ8o b½ W® H bÅ=z‚ÿòÿÌÈjj““¥¥¾¾˜˜II°ááÜÕÕÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¬Í¬˜½|¿„ Ë ÷ÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñãã†C`[BeE$q:XkT2ZŠKŠ~D~ª]ª»f»v@v[2[ÓsÓt@t¦[¦­^­H'H¨\¨ŽMŽ£Y£¶d¶~@~åßåÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿññÿ¤¤¹((Zw(b ?{vìjÔ B„ [¶râ L˜1a W­ ?mÚ…ÿ‰ÿ3f ^½ DˆƒÿòÿßÛ,,¯¯ ÿÿ(ÿÿ‰þþïïïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¬ÿ¬ÿÿÑ– Ó ÷ÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñãã…H_7‡z7XR…ª%C ]©33ÍpÍúˆúùˆùâ|âmqY,Yäßäÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ ÿH‡Ø6Š@•-o dÈ [µ:t ^¼ W® Q¡ I“ _¾Œÿû3f aÃ:srôìÿ®©YY]ÕÕôÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¥é¥äÿ­‹Œ³öÿöÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðááy6S2_y^JFv¡5›P¥??¥P¥ïxïñzñ»\»Z'Z¨Q¨u6uó{óíwío2oƒ>ƒi/iØlØý€ý•B•áÜáÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿúòè–²Öš²Ï¶à<†Q±6{4wN¨M©rê1o7u2sR²cÖFa˜Ü˜õÿ–ÃÂÎêêÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÝçÝ–à––ÿ––Ê––à––Ó–›Ñ›üÿüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿùôôÌ––²––¿––¸––´––Ï––·––¢––»––¹––Ë––Û¦³×»ÚʳÊÁ®ÁøÌøüÎü˳˺ªºèÂèïÃòÉòñÈñ®£®âÀ⾬¾á¿áýÎý¾ª¾íîíÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÑ×àÒèÿÐÔÙÐÔØÒã÷ÒáòÓëÿÑÙäÏËÇÐÑÓÒèÿÒäùÏÔÞøùùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿgle-graphics-4.2.4c/contrib/packagers/nsis/www.ico0000644000000000000000000000727611405446017020641 0ustar rootroot00¨(0`ÿÿàÿÿÑÿýÈÜùÚÚùÀÆ÷ÀÇö¹óé¿÷ì²åð­òæ»üì«õí¨¬ôµÿꡱï«êæšÇé Þæ¤ì¦–í¨ÿâ’òÝ ‹ê¡`ù“ºå™Ïã•Ûàÿ܇÷ØŽÔÞÂáæ™Zó‹å–¡áŽïÑåÌzä•U܆ãÖz«ÚƒPéƒÜ†wÞŠúÑpl݈ÿÏlLåbÜ…®ÔvîÅyöÊkß¿‰åÍh†Öyo×{FßyÖ¹ŒVØ}ÿÈ]{ÒqAÚtNÕw¡ÍhŒÎlÆÉ`¶ÊaÓÆ[GÓtÿÂQ=ÖpñÂSWÐnGÏl8Ñk<Ïl÷¹Nÿ¼E°ÃSÈ©|jÈ^ÅX3Ìf´ÀN2Ëc1ÊaSÆY²œ‡ÿµ9¥½I-ÆZè¬H޽GJÃT,ÅWå¥Gÿ®*(ÁOYºBÇ™Wüª"ú¨%³jÿ¨ß›C#¼F#¼E3³Mêž3†°2!ºBIµ8q±/ÿ¢·:b°.0´7ðüž#©C³2¥‚^°-ÿšB«$˜¡˜{`Ç ç˜ý—Ùˆ*@©!R¥ ¬&ù“eŸéŒ †rd;¤‚œ$¥º”¨òŒˆš Íí‰Å{*­fVÁcRê„ ££V— ¹Š¡’Œ”™fMä~Æ‚”fJ­†Ït0˜Ùz›Î|eDÞxÇn¸peކ«]D€e?¾Z::Øržf,vf:o[Oy€’];Ôn¢wgf3“]Nƒ8…À\ÎhšX.+„Vf+µbÊd‰€q€V5†g`*ƒIf%9{VtƒMMMfNAª] =fÂ\´Vz±K%[N>3fogyQ{:ožV ¼V!f*g t¥H¶PM] ~XŠM#hg‚F il°JkB)f¤A ©CR;/’@f8 :7’6{4l1ÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕõõõõõõõõõõõõõõõÕõnnnnnnnnnnnnnõÕõõÕõõÕõ"""""""""""""õÕõ(((((((((((((õÕõ,,,,,,,,,,,,,õÕÕÕÕÕÕÕõ2222222222222õÕÕÕÕÕÕÕÕõõõõõõõõ;;;;;;;;;;;;;õõõõõõõõõÕõnnnnnnn@@@@@@@@@@@@@nnnnnnnnõÕõzIIIIIIIIIIIIIIIIIIIIIIIIIIzõõzMMMMMMMMMMMMMMMMMMMMMMMMzõÝÕkõzUUUUUUUUUUUUUUUUUUUUUUzõkøÕÕyÄkõzXXXXXXXXXXXXXXXXXXXXzõköþÕÕÕhÄöükõz]]]]]]]]]]]]]]]]]]zõkµ™öÿÕÕb§üüûûkõzddddddddddddddddzõkܵ—™öúÕÕoüûû÷÷÷kõzmmmmmmmmmmmmmmzõküöÆ¢—³ýÖÕOÚûû÷÷óóêkõzuuuuuuuuuuuuzõkûûý¹¬¢—éÿÕ7oû÷÷óóêêååkõz{{{{{{{{{{zõk÷÷ûù¿¹¬¥³ýÖÕ6®÷÷óêêååÙÊÊkõzˆˆˆˆˆˆˆˆzõkêêó÷÷È¿¹¬¢éôÕO÷÷óêååÙÊÅÅŽkõz‘‘‘‘‘‘zõkÙååêóíØÈ¿¹¬ÆþÕ&k÷óêåÙÊÅŽ½··¾kõz››››zõkÅÊÙååêëÞØÈ¿¹¬öºÕ%–óêåÙÊŽ½··­­­Ãkõz¯¯zõk·½ÅßàïîõïÞØÈ¿¹óÖÕ®êåÙÊŽ··­­£¦¶¨Àkõzzõk­­·ÌâèèòòõïÞÑȹäôÕêåÙÊŽ·­­©²±¯¶”“žkñõk𣩫ÂââèèòòõæÞÑÏäðÕåÙÊŽ·­­¦¯ŸŸœ¨ªŽ”kk••š¤²ÁÔââèèòõñæØÈäðÕåÊŽ·­­Ÿ›‰„Ž~~„„‰’••š©ÇÔââèèòõïÞÑäíÕÙÅŽ­­ ›‘ˆˆˆ}xjgjty~„‰’•š©ÎÔââãßììëØäáէŽ·­ ‘ˆˆ}{{uur[[[ccjy~‰’•šÎÔÒÒããîõñÞ×ÍÕ …Å·­£ˆ}{uqmmll\JHPP[gt~‰’•ËËÎÒàèòòõæ×¬Õb½·­£}{qmld]]]]Y81>P[gy„‰•¤ÂËÔâèèòõïÅŒÕ5½­£šuqlaXUUMNUK1>P[j~‰’¡ÀËÔÔâèòòîÉÕ ©­£Š{qlaWMGA=AAGN />Pct„•ÀÀÃÐÎâèèò̸Õ b­¤{ulaUNA=-33=31P[j~‰œª£ÃÔÒàèñ«Õ œ†{mdXNA3$ ''0 /HPg~‰’žžËÔÛÛèÓ°Õ C}ul]UA=0  +BHPh‚”’š¤ÎÔÛâà«|ÕwqdXNA3' GUQPvˆ‘š£«ÐÔâ»–ÕqdXG=0! AU]es‚•𣭾ÔËZÕdUS:9!  -AU]mw~‰•𣭽ÁƒiÕƒS=0-/ .AU]mu€’•£­­­~fÕLA:!$ / !0=GUamu•𣭣tfÕ??C4$-3ANXdq{Ž•š£xhRÕ*.9-D!-00=GU]lu{‡š‹[^RÕD9:C3=K_`dq{‡pPO<< **BBVgj\TF15& %%&&ÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀÿÿ€ÿÿ€ÿÿ€ÿÿÀÿÿ€ÿÿþ?þ?üüøøøððððððððððøøøüüþ?þ?ÿÿ€ÿÿÀÿÿàÿÿøÿÿþÿÿÿ€ÿÿÿÿðÿÿgle-graphics-4.2.4c/contrib/packagers/nsis/welcome_image.bmp0000664000000000000000000053306211405446017022615 0ustar rootrootBM2¶6(³Iüµ  ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿöööþþþüüüùùùÿÿÿþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÑÑÑÕÕÕäääÒÒÒõõõÿÿÿþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþþþþûûûüüüüüüüüüüüüüüüýýýüüüûûûüüüûûûûûûýýýüüüüüüûûûüüüûûûûûûÿÿÿþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþýýý÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøø÷÷÷÷÷÷÷÷÷øøø÷÷÷øøø÷÷÷÷÷÷÷÷÷øøø÷÷÷÷÷÷üüüþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿââ⪪ªËËËßßßøøøÿÿÿþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþÿÿÿåååàààäääåååâââåååÛÛÛ××׿ææäääàààâââÞÞÞÕÕÕåååäääáááåååãããÞÞÞäääÿÿÿþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿëëëÞÞÞççççççåååååååååâââÕÕÕçççåååäääåååäääÔÔÔçççæææäääçççæææããããããÿÿÿþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþóóóÜÜÜôôôÿÿÿÿÿÿþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþÿÿÿâââûûûùùùóóóàààßßßöööíííëëëÒÒÒÜÜÜÓÓÓùùùéééñññÑÑÑáááÏÏÏýýýøøøÞÞÞÿÿÿþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿèèèôôôüüüòòòïïïÆÆÆÖÖÖþþþéééîîîÍÍÍçççÜÜÜÿÿÿæææôôôÏÏÏÝÝÝÍÍÍúúúÿÿÿâââÿÿÿþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþþþþþþþþþþþþþþþþþþþýýýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿâââøøøðððíííèèèËËËõõõìììßßßÇÇÇãããÉÉÉõõõèèèèèèÄÄÄÝÝÝ´´´øøøõõõßßßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèèèïïïòòòìììâââ¾¾¾ÊÊÊùùùååååååÅÅÅëëëÕÕÕûûûãããìììÆÆÆááá½½½öööúúúâââÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþêêêÚÚÚàààÛÛÛÚÚÚòòòÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþäääÝÝÝ×××ÔÔÔäääúúúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿúúúÝÝÝÞÞÞãããßßßàààþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþõõõÚÚÚæææìììçççëëëÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþîîîàààãããÙÙÙÚÚÚòòòÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÝÝÝßßßççççççàààÝÝÝÙÙÙÐÐÐçççãããáááâââÝÝÝÍÍÍæææââââââáááäääÜÜÜÛÛÛÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿæææÙÙÙåååçççßßßáááßßßßßßÌÌÌæææãããâââäääãããÊÊÊæææäääâââáááãããáááÛÛÛÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþÿÿÿÿÿÿÿÿÿÄÄͶ¶ÈÈȘ˜˜œœœ×××ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüü¶¶¶»»»èèèÆÆÆ²²²ðððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿííí«««ÏÏÏÊÊÊ›››µµµôôôÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿààਨ¨ÜÜÜ×××ÃÃÃÃÃÃÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÜÜÜÑÑÑÏÏÏ•••¡¡¡×××ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿäääýýý×××ìììÿÿÿÿÿÿòòòìììîîîÕÕÕßßßÛÛÛ÷÷÷êêêóóóÓÓÓæææßßßÿÿÿøøøßßßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿéééöööèèèÅÅÅâââÿÿÿÿÿÿûûûéééïïïÑÑÑßßßÏÏÏûûûçççõõõÐÐÐßßßÌÌÌûûûÿÿÿäääÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþûûûöööøøøúúúâââÝÝÝññïßßÞÞßßúúúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèèèîîîñññ×××ØØØÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿáááùùùàààßßßæææÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýàààúúúÚÚÚÖÖÖéééÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿöööóóóööôØØÖØØØòòòÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿãããÿÿÿ×××ÙÙÙÿÿÿÿÿÿñññíííáááÈÈÈ×××ÃÃÃùùùêêêéééÀÀÀêêêÕÕÕÿÿÿ÷÷÷ßßßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿéééõõõÕÕÕ¼¼¼ÒÒÒüüüüüüöööåååää䯯ÆÜÜܺººóóóäääíííÃÃÃæææÆÆÆòòòûûûâââÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÙÙÙ¹¹¹ÈÈÈ´´´«««ÖÖÕïòøÆÈÏÌÊÉÆÇÇÆÆÆÆÆÆÆÆÆÆÆÆÅÅÅÆÆÆÆÆÆÆÆÆÅÅÅÈÈÈÈÈÈÂÂÂÈÈÈÉÉÉÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÅÅÅÉÉÉÇÇÇÄÄÄÉÉÉÉÉÉÆÆÆÆÆÆÆÆÆÆÆÆÅÅÅÆÆÆÆÆÆÆÆÆÅÅÅÇÇÇÊÊÊÅÅÅÅÅÅÉÉÉÇÇÇÆÆÆÆÆÆÆÆÆÆÆÆÅÅÅÆÆÆÆÆÆÆÆÆÆÆÆÇÇÇÉÈÅÇÇÔöøÿÿÿÿþþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÛÛÛÚÚÚ××××××ßßßßßßÓÓÓÌÌÌÞÞÞÜÜÜÝÝÝÛÛÛ×××ÉÉÉßßßÚÚÚÞÞÞÛÛÛààà×××ÙÙÙÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿåååÔÔÔÙÙÙÛÛÛÙÙÙßßßßßßÚÚÚÈÈÈàààßßßßßßÜÜÜÝÝÝÆÆÆàààÝÝÝÞÞÞÙÙÙàààÚÚÚÙÙÙÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÚÚÚ¾¾¾ÚÚÚ·¶¶¬¬¬ÛÝײ¸Ü–¿ÏÌÌÉÌÍÌÌÌÌÌÌÌÌÌÌÌÌËËËÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌ̼¼¼ÉÉÉÍÍÍÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌËËËÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÊÊÊ»»»ÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌËËËËËËÌÌÌÌÌÌÌÌÌÌÌÌÍÍÍÆÆÆ¾¾¾ÍÍÍÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌËËËÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÎÍÊŠŽÊÀÈèÿÿÿüþûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿãããùùùþþþýýýýýýýýýñññêêêôôôÑÑÑéééÿÿÿõõõåååýýýöööòòòÛÛÛÙÙÙùùùàààÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿéééóóóÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿúúúçççúúúÏÏÏâââÿÿÿüüüäääÿÿÿöööóóóÞÞÞÑÑÑþþþäääÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþýýýùùùÿÿÿúúúûûûÿÿþ¥¢Ñ¨©åÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÔº½Õÿÿÿýÿýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿáááüüüÿÿÿÿÿÿÿÿÿÿÿÿòòòêêêýýýµµµóóóÿÿÿ÷÷÷æææýýýçççöööÅÅÅÙÙÙýýýÞÞÞÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèèèñññÿÿÿþþþþþþþþþþþÿøøøãããÿÿÿ¼»»ëëëÿÿÿûûûáááýýýìììöööÓÓÓÏÏÏÿÿÿâââÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¦¥Ä‡†Îÿÿÿÿþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿrp¸ÄÂÍÿÿÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿæææàààãããããããããäääÜÝÝרØää娨ÙãäääääßßßÖÖÖäääååååååÚÚÚàààßßßæååÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿîïïÜÜÜãâããããâãããããäããááà××ÖåååÞßßäåääååããâ××ÖäããåååääåÞßßßààáááçææÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ³»»~Ãüýþþÿýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþõøÿur¿ÏÍÍÿÿÿÿþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿýÿþýÿÿýýüüýýýýüÿþüÿÿÿÿÿýÿÿüþþúÿÿüúúùüúúÿýûÿÿüÿÿüÿÿÿÿÿýÿþüüüüúüýÿÿÿýÿýýÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿüþýüûþýûþüÿüÿÿýÿÿþÿÿýþÿüúúù÷÷öôõõõööùùøÿÿýÿÿþÿÿÿÿÿÿÿþþýþþýþýþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÅÁ¿~ƒÌìîÿþÿüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýüþþþþýÿÿûßãþƒ€·ÐÒÍÿÿÿþÿüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿþýÿþþÿÿÿÿÿÿÿÿÿÿÿïòôÙßèÃÑßµÉÙ­ÃÕ¨ÀÕ¥¾Ø¥¾Ø¨¿×¬ÄÙ¸ÊÛÎ×àßæéöøõÿÿÿýÿÿýÿÿûÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿþþÿüÿÿÿøøøÛäéÇÓÞ¶ÉÙ©ÁÖŸ¾Ù¿Úœ¾Úœ¾Ü½Ü¦À×¸ÈØÍÔßàãéøøöÿÿþÿÿÿúþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÅÂÀ‘•ÈÛØùÿÿýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüþýþþýÿÿþÊÊüŽ”¾ÑÑÇÿÿÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûÿýýþþýýþÿÿÿåêë´ÄÖšºÞ—¿î‘Äö“Èý”Ëÿ“Íÿ’Ìÿ’Êÿ•Ëÿ—Ëÿ–Èü”Ãõ—À硽ֿÍÚõôóÿÿþûÿûüÿüþþþþþþþþþþþþþþþþþþþþþÿþþúþþüÿÿùõ÷ÇÐÛ½Ö•½è–Ãñ•Çû“Êÿ™Ìÿ˜Ëÿ˜Ëÿ–Ëÿ–Ìÿ—Ëÿ–Èû’Àõ“¼èŸ»×ÀÏÛõ÷öÿÿüþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÂÁ¾®­Ïÿúÿÿÿþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿýÿýýûÿüúÿÿý¸µù¦®ÆÑÎÅÿÿÿúþÿþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿýÿþþþÿÿÕÞ㑶ؘÇõÀó…´âŽ¹æ‡³ß…¯Ú„­Ö¹å—Æóºå‡²Ü…¯×ƒ®Ù‚´å•Çù”ÁÔëðòÿÿûüýþþýþþþþþþþþþþþþþþþþþþþþþþþÿýòôö£¼Õ‘¾ë–Éü“Ãö‘Âó޾í¿ëÀ쇸ä™Ê÷˜Ëù’ÃòÀ쌼ì‘Ãô”Êý½ì¦¼Ôòõöÿÿÿþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿ½ÀºÅÄÓ¯«óÿÿúþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿüÿýýúÿûûòøöµ«òÄÅÃËÊÈÿÿÿþýþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüýýüýÿýüù£¼Ó–Ëÿ•Íÿ’Åök“¸wŸÆh¹m“ºk޳«ÖŠºéx£Íl•¿q•ºoŒªl’À‘Áò—ÒÿˆÂñ¾ÍÙÿÿÿÿýþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÌØÞ‹½é”ÏÿÌüw¢Îo•¼r•¹iŒ±r—ÁwŸÍ·æŠµãy¢Ïgޏm”ºj³l‘´’Âï‘Ïÿ”½èÐ×Þÿÿÿþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþýýýÿÿÿþþþÿÿÿ¼À¸×ר¬©öñðöÿÿþûÿ÷üûþþýûþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþýýþþþüþþýààô¸·ýÑÐÈÉÊÊÿÿÿþýþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûýþüýþÿþú¸ÌÜ‹»éšÎÿšÍÿy§Ó™Éö²á‹ºê˜Æö–Êû—Ìþ•Æ÷™Ëû„²àx¡Ë”Èû–Îÿ–Êý’µÙÝãçÿÿÿýþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿäèï•¶×’Ëú“Ïÿx Æ©Ïz¤Ò’Àñж剏èÂó–È÷½ê”ÀìªÕl˜Á½ë–Ìÿ•Êú“µØäèîÿÿÿþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿýýýúúúõõõ÷÷öÿÿÿ½¼½ßßл¿øÖ×òÿÿÿþýüýþüüþûþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþýÿüýýüÿÿþÉÃïÎÒýÐÐÊÊÊÊÿÿÿþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýþÿþþÿÿÿüøüü¿ÑÝž»Ô”¾ê’Åù™ËþœÎÿ›Ïÿ˜Îÿ˜Ïÿ›Ðÿ™Ïÿ˜ÎÿšÌÿ—ÊþŽÅô”½ã¥º×ØÞçÿÿþÿþþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþÿÿÿÞå覽Ғ¸â‰½ñ”Èü–ÈüŸÑÿ ÑÿžÑÿ›Ïÿ›Îÿ›ÏÿšÏÿ”ÉþŽÅúÅø”¼â§½ÒÙãêÿÿýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþÿÿÿçççÁÁÁÙÙÙÇÇÇÔÓÔâäå½¾»ØÕÏÛÞû¶µòÿÿüÿýýþÿúüýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿüüþýÿÿÿ¯ªñïñÿÅÅÂÉÉÉÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿÿüþÿÿÿýÿÿÿïóóÍÙä´ÇÛŸ¼Ýš¼à—½â”½ä’»âŠ´ÛžÇð›Àç¼Þ¨À×½ÌÚÛáæøùøÿÿÿÿÿûüþÿþÿýÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿþÿýÿÿþûúùÜßçÁÍÚ¨ÀØ›½à•¼ãÈó½êŠ·ç’¼ë•½å˜¾à ¾Üª¿Ù¹ËÛÙàäûúùÿÿÿÿÿúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüÖÖÖÔÔÔßßßþþþÿÿÿÛÛÛ¯¯¯èèèÍÍͳ³³ÔÓÓº¾»ÉÊËûúÿ¤¥ê÷ùøÿÿûÿþþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿýÿþïñý©¦êÿÿÿ»»ºÈÈÈÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿÿüþÿþÿþþþþÿÿÿÿÿÿÿÿýþýûõôôíîîçêëâæçœ¡£aehÌÌÌûúøÿÿýÿÿÿÿÿÿþÿþþÿýÿÿþýþÿÿÿýÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿþÿþÿÿÿÿÿÿÿÿþþýöøøèé邆‡w{ÏÓØãæêâæêèìïóõõÿÿüÿÿÿÿÿþÿþþüýÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿøøø¸¸¸¯¯¯ÌÌÌýýýÿÿÿýýýòòòüüüéééïïï÷öö¼¿ÀÔ×Õÿÿÿ°±ïÜßúþÿúýýþÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûýýüÿþÑÓôººôÿÿÿÉÉÉËËËÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿµ´´À¿¿ààßõõõÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþëêêÕÕÔ–••ëêéÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿùùùßßßÞÞÞÔÔÔþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½½½×××ÿÿÿÏÍ÷¿¿ðÿÿüþþþþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýÿÿþ´±òÝÞ÷ÿÿÿÈÈÈÊÊÊÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿííí×××ÝÝÝöööÿÿÿÿÿÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþèèèÕÕÕáááúúúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷÷÷¸¸¸ÍÍÍÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½½½×××ÿÿÿððýª¥ìûÿüüþþýÿýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿýöõý§¦ìûúþÿÿÿÈÈÈÊÊÊÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿìììÕÕÕÝÝÝöööÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþÿÿÿþþþèèèÕÕÕàààùùùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþííí¶¶¶ÐÐÐþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½½½×××ÿÿÿÿÿÿ°¬ìßä÷ÿÿúþýüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÓÕö»¹óÿÿýÿÿÿÈÈÈÊÊÊÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþýýýÿÿÿÿÿÿìììÕÕÖÞÞÞ÷ø÷ÿÿÿÿÿÿÿþÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþééèÕÕÕàààúúúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿåååÂÂÂ×××ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¼¼¼ÕÕÕÿÿÿÿÿþÎÌô¹½óÿÿúÿüýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿýþþÿüþÿþÿÿü®­òàà÷ùÿýÿÿÿÆÆÆÊÊÊÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþêêêÕÖ×ÝÞßö÷÷ÿÿÿþÿþýÿþýþýÿÿÿýþýçéçÔÖÔàáàúúùÿÿÿÿÿÿõõõòòòôôôôôôõõõõõõóóóòòòôôôõõõôôôõõõóóóóóóóóóôôôõõõõõõöööôôôôôôôôôôôôóóóóóóôôôôôôõõõôôôôôôôôôóóóóóóóóóôôôõõõõõõõõõôôôôôôôôôôôôôôôóóóùùùþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿóóó¾¾¾ÖÖÖþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½½½ÖÖÖÿÿÿÿÿýõòù¥¡ðûýúþÿüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿýûþüþýýúþÿþôô÷¥¤ìùüüûþýÿÿÿÈÈÈÊÊÊÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýþþÿÿÿÿÿýíêëØ×ÚâáâüüüÿÿÿÿÿÿíëëØÖÙàßâùùùÿÿÿÿÿÿÿÿÿøøøÜÜÜéééëëëèèèååååååäääÔÔÔêêêåååääääääéééäääÔÔÔêêêæææãããÞÞÞééééééééééééÔÔÔåååçççååååååçççèèèééééééÚÚÚÝÝÝéééåååäääççççççééééééééééééåååÜÜÜÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿõõõÄÄÄàààþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½½½×××ÿÿÿÿþþÿÿü·°îÚÚùÿÿüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿýÿÿûÿûÿÿÿüÆÉóÀÂòÿÿûùûýÿÿÿÈÈÈÊÊÊÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþýÿÿÿþÿÿýÿÿûô÷õØÙÚ¾¿ÁÇÉ̾ÀÃÌÌÎîîíÿÿùÿÿþÿÿÿÿÿÿÿÿÿõöõêêêÿÿÿîîîóóóÐÐÐÑÑÑÿÿÿìììïïïÇÇÇää䨨ØÿÿÿýýýëëëôôôÆÆÆàààÇÇÇÿÿÿÿÿÿÿÿÿÿÿÿçççûûûÉÉÉÖÖÖ½½½ëëëÿÿÿÿÿÿÿÿÿðððõõõ×××ÒÒÒÕÕÕ¹¹¹ÈÈÈÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÞÞÞÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷÷÷ÇÇÇÖÖÖþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½½½×××ÿÿÿÿþÿÿÿûÜÛ÷°°ðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüþþÿÿüÿÿúýÿø¦¥íééûþÿþüþûÿÿÿÈÈÈÊÊÊÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþæçìÆÇܵ´Ùª«ß®¯è­­ç¢¡Ý§¨ä®°ê­®á¯°Ü¾¾ÚÜÛáüüúÿÿÿõõöâââõõõëëëôôôËËËÝÝÝóóóàààçççËËËèèèÖÖÖöööðððßßßëëëÉÉÉæææÇÇÇñññöööööööööÜÜÜïïïÉÉÉàààÆÆÆèèèöööööö÷÷÷äääèèèÖÖÖÙÙÙÓÓÓ´´´ÇÇÇôôôöööööööööóóóÜÜÜÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿòòòµµµ¸¸¸äääÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½½½×××ÿÿÿÿÿÿþÿúúüû¢£îîòúÿÿÿÿþþþÿýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüÿýÿüÿÿÿøßßö­®éÿÿýûÿúüüþÿÿÿÈÈÈÊÊÊÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþüüûÂÆÔ¤£á¬ªõ­ªò§¥í›œäœœâžâŸ ã¤¤ç™šÜ¡ é¯®ù§¥çµ±Ðïðïö÷ôØØØåååäääâââèèèéééáááÐÐÐêêêæææãããæææèèèâââÏÏÏéééåååäääæææççççççççççççÏÏÏäääçççååååååäääççççççèèèÖÖÖÙÙÙéééååååååæææåååççççççççççççããã×××ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿóóó¾¾¾ÔÔÔõõõÿÿÿéééÏÏÏßßßÝÝÝÏÏÏééé¿¿¿ÕÕÕÿÿÿþÿþüýýÿÿùËÅö¾¿ðÿÿüþûüûýøþýþÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿþúþüþüüÿÿþ¶³î×ÙøÿÿÿþÿþþþÿÿÿÿÅÅÅÊÊÊÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþÿÿÿàßæ£ ã¶·ÿ°¶ý±³ùƒ…½ƒ†¼ƒ…¾~€»…„¹ˆˆ¹xy²••×·ºý²µÿª§÷¼¼ÚùùóêêêýýþÄÄÄâââÿÿÿÿÿÿüüüìììïïïÉÉÉÝÝÝÄÄÄüüüþþþëëëôôôÈÈÈÚÚÚÄÄÄýýýÿÿÿÿÿÿÿÿÿèèèúúúÊÊÊàààÍÍÍëëëÿÿÿÿÿÿÿÿÿðððõõõ×××ÑÑÑÐÐÐÍÍÍÝÝÝÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÞÞÞÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþóó󯯯ÌÌÌïïïÿÿÿÏÏϬ¬¬ãã㨨¨¥¥¥ÏÏÏ»»»ÉÉÉÿÿÿÿþþÿüÿÿÿûñôü§žîøûõÿýüüýÿþþüÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿúþüýÿýóñú¦£ëûüþÿÿÿÿÿÿÿÿÿÿÿÿ¶¶¶ÆÆÆÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿîïò¦¨Ô®¨õ´°ÿ¸¸ÿ•–ÕŸŸß››ßµ³ú¬­ó¨«ð©¬ö®²ÿ³³ÿ°®üž¤ÚÑÖâúø÷àààööö½½½èèèõõõõõõîîîßßßåååÊÊÊÝÝݽ½½ññññññÞÞÞêêêÇÇÇàààÁÁÁòòòõõõööööööÜÜÜíííÅÅÅäääÕÕÕåååöööööööööãããèèèÒÒÒÔÔÔÒÒÒÇÇÇØØØõõõõõõõõõöööñññÛÛÛÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿõõõÜÜÜïïïÿÿÿþþþóóóåååøøøÛÛÛäääõõõ¿¿¿×××ÿÿÿÿÿþÿþÿÿüûÿÿù¼¸ðÍÎôÿÿúþüÿÿÿþÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýûÿÿþ½ïÉÉòÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÉÉÉÊÊÊÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿíîí¼خ¬×§©â¨ªò®¯ú¶·ÿ²²ÿ³¶ÿ±³ÿ««ö¨§ê¨©Ýµ´×ÝÝåÿÿùõôôÓÓÓàààáááàààááááááÛÛÛÊÊÊâââàààÞÞÞÜÜÜÞÞÞÛÛÛÊÊÊâââßßßÝÝÝÞÞÞãããßßßÝÝÝàààÊÊÊÝÝÝäääãããàààßßßÙÙÙÞÞÞàààÐÐÐÓÓÓääääääáááàààÛÛÛàààãããßßßÝÝÝÝÝÝÕÕÕÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþýýýÿÿÿÿÿÿþþþÿÿÿÿÿÿÿÿÿ½½½ÖÖÖÿÿÿÿÿþüÿýþýýÿÿøçê÷¤¡ñÿþûÿÿýþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿþþüõøõž ïô÷ûÿÿýÿÿÿÿÿÿÿÿÿÿÿÿÈÈÈÊÊÊÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿóõóááëÑÓ䶸̃„žœœ¹†„Ÿ›²ÍÍÝÜÝçëîðþÿüÿÿÿÿÿÿôóõêêêÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûûûëëëöööÂÂÂÛÛÛÈÈÈÞÞÞýýýêêêùùùÅÅÅÒÒÒõõõòòòØØØÏÏÏþþþéééÿÿÿøøøòòòÙÙÙÅÅÅ×××ÇÇÇöööòòòôôôýýýñññçççÂÂÂÚÚÚöööôôôÎÎÎØØØþþþßßßÿÿÿþþþþþþþþþþþþþþþþþþüüüÖÖÖ½½½ÈÈÈþþþþþþþþþþþþþþþþþþþþþÿÿÿ½½½ÖÖÖÿÿÿþþþýþþþþþþþüÿÿÿ®²îÔ×õÿÿþùÿûýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿüÿÿüÿýþÿÿûÁÅò¾¿öÿÿýýÿûþþÿþþþþþþÿÿÿÈÈÈÊÊÊÿÿÿþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿñòîwyuš›™ùú÷ÑÑÒgfhÍÍÌúûùÿÿÿÿÿÿþþþÿÿÿõõõãããúúúúúúúúúúúúúúúóóóâââììì³³³àààÁÁÁÑÑÑõõõáááðððµµµÖÖÖõõõðððÎÎÎÁÁÁ÷÷÷àààöööñññòòòÎÎμ¼¼ááá···ïïïêêêêêêõõõðððßßß²²²äääòòòòòòÁÁÁÍÍÍõõõÚÚÚÿÿÿþþþþþþþþþþþþþþþÿÿÿööö¿¿¿ÄÄÄØØØýýýþþþþþþþþþþþþþþþþþþÿÿÿ½½½ÖÖÖÿÿÿþþþþþþþþþþþþþÿþèèö¡¡ïûÿúûþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþýÿþüÿýþþþýÿÿûöøü£ŸìóöûûþùýýþþþþþþþþþþÿÿÿÈÈÈÊÊÊÿÿÿþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿëëëÕÕÕàßàñññÿÿÿÿÿþÿÿÿþþüììëר×ÜÜÜôôôÿÿÿÿÿÿüüüäääããããããããããããäääâââÝÝÝãããßßßãããßßßßßßãããÝÝÝãããßßßãããäääåååáááÞÞÞãããÜÜÜãããååååååààààààâââÞÞÞâââßßßàààåååæææâââßßßãããååååååßßßÞÞÞáááéééÿÿÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿùùùÙÙÙÝÝÝàààÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½½½ÖÖÖÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿýÿÿü²²ðËÓóÿÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿýÿþÿüýþÿÿýÀ¿õÄÃìÿÿûüþûÿýÿÿÿÿÿÿÿÿÿÿÿÿÿÇÇÇÊÊÊÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿììì×××ÝÝÝõõõÿÿÿÿÿÿÿþÿÿþÿÿÿþÿÿÿÿÿÿÿþþííí×××ÛÛÛòòòÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿúúúâââáááÝÝÝïïïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½½½ÖÖÖÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿþÿúíîúœ ìøûúÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿüüþÿòòü  é÷÷öþýøúÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÇÇÇÊÊÊÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïØØØÜÜÜõõõÿÿÿÿÿÿþÿþþÿýþÿÿþÿÿÿÿÿÿÿÿÿþÿÿþþÿÿÿÿÿÿîîîØØØÚÚÚñññÿÿÿþÿÿûýþþþþþþþþþþþþþþÿþÿÿþÿÿýþÿýÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýåååÑÑÑÑÑÑýýýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½½½×××ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýþþýþûÿÿû¿¾ðÁÄóÿÿþýþûýýÿÿÿýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýþÿþþûÿÿüµ´ðÌÏôÿÿÿþÿýþÿþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈÈÈÊÊÊÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðððÙÙÙÚÚÚóóóÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðððÙÙÙÙÙÙïððÿÿÿÿÿÿþþþþþþþþýÿþÿÿÿÿýÿÿûþÿýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿõõõÂÂÂÙÙÙÓÓÓþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½½½×××ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿþþýÿÿûõøü¢œìíðøÿþüûýþýÿýÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýþûÿÿýââ÷¡¢ðþÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈÈÈÊÊÊÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþÿÿÿÿÿÿóóóÛÛÛÙÙÙòòòÿÿÿÿÿÿþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþÿÿÿÿÿÿòòòÜÚÙÜÚØñññÿÿÿÿÿÿþÿÿÿÿþÿÿþÿÿþýþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿùùùËËË¿¿¿ìììýýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½½½×××ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿþþþüÿüÿÿÿüÓÒó­ªíÿÿúûýýüþüÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿýþýúûýýŸïãäöÿÿÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈÈÈÊÊÊÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüù÷äâßßÝÛôóòÿÿÿÿÿÿþþþÿþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿìîíÖÔÒÑÎÌééçôôñõöõøúøÿþüÿÿþÿÿÿÿÿÿþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿúúúÖÖÖÓÓÓÜÜÜðððÿÿÿõõõÜÜÜéééíííçççôôô¿¿¿ÖÖÖÿÿÿþþþþþþþþþþþþýÿýþýûÿüûÿüüþÿõ²¨ðÒÔòÿÿþüýþüþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿþýÿÿþ¿Âñ¹½ðÿÿýþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÇÇÇÊÊÊÿÿÿþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþþþþþþþýÿþÿÿÿÿÿÿú÷øçêîÙÞçÍÕàÇÑà¼ÉÙ¬ºµÂÎÍÙåÝãëñîðýûúÿÿÿýÿÿûþýûþþþþýþþþþþþþþþþþþþþþþþþþþþþþþþþþýþþüýýÿÿÿÿÿÿïðñÒÚäºÌÛ­ÃØ«¿ÙŸÁ㎲ղ՚¾áž¼Û¥¿Ø®ÃÙ¼ËÛÐÚåððñÿÿþÿÿÿþþýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿ÷÷÷åååïïïþþþÿÿÿ×××§§§áááÕÕÕÁÁÁÐÐл»»ÉÉÉÿÿÿþþþþþþþþþþþþþþþþýþÿþúÿþþÿþýòóö“šîððøþÿüúþýþþþþþýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿýþýþûýüýÿÿýßäö£žêúûüýþýÿþþþþþþþþþþþþþþþþþþþþþþþÿÿÿ¶¶¶ÆÆÆÿÿÿþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüàåè²ÇØŸ¾Û”½â’Àè“ÄñÅöÆù•Èú—Æö–Âð½ê‘ºá£¿ÙÄÐÙêñïÿÿÿýýþÿÿüüÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿýÿÿýáåë°Â×»Ù–Áé’Çø‘Ëÿ•Ìÿ–ÌÿšÏÿ›ÏÿšÎÿ–Íÿ“Ìÿ“Êÿ”Èø¿ì™»Û°ÃÕàåëÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþñññÔÔÔñññÎÎÎÉÉÉèèèÀÀÀÖÖÖÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿþÓÙô¥¢ïûÿøþÿýÿýÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþýüûüþüÿþùôùü¢ëéæùÿÿüÿýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÅÅÅÊÊÊÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüýý¾Í×’¸ÜÅ÷ŽÆ÷‘Åø–Éþ’Ãõ•Åö~®Ý„µâ•È÷“Æö”Äó½ì“ËÿÂð¶Ø×ÞæÿÿþþÿþûÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÏÙá”¶Ù•ÈøÈøÆô—Äõ”Ãó‘Éù”Æø”ÄôšÇõ­Ù“Àí“Ãó’Äö’Ãô’Æ÷•Ëÿ”Æø“´ÚÒÙâÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¼¼¼×××ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿþùüûÿÿý»¼ì²»ôÿÿÿÿþúÿþþþþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûúüùüýüÿÿú­©òÍÉîÿÿÿÿþúÿüüÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈÈÈÊÊÊÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿãæèŒ¹Þ—Ïÿ›Îÿ…¤Ïv˜¾q–¾i‹²v™Àq•¹uœ½l“¶`ˆ¬~¥ÊtŸÊ‘ÁôœÍÿÌÿ˜ºÑ÷ûöþÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿöøùŸºÔ—ÍÿšÐÿr›À{¥Ñp“½c†¯y¡Ì{¢Ék’¹i‘¸p—¾n‘³o’µj¶b‡«lŒ°‡¨Ò–Ìÿ”Îÿ›ºÒûúøÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½½½×××ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýûüúüþûýÿû«¥îÍÍòÿÿúÿÿùÿýÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýþþýùÿÿþüó»³ðÿÿùþýûÿýýÿþüÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈÈÈÊÊÊÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿíïò—¶Ø–ÈøšÓÿu¥Ðj¶…¬ÒŒ¶à‚¯Ý‹·åy£Ï‚«ØŽ·ä…¯Ü†´á•Åò™Ðÿ‰¿ô¬ÀÙýýùýþþýÿþÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüû­ÁÒŒÅöœÓÿv–¾{¤Ð‹ºä…·á{«Ù~©ÓqœÈ»èˆ¸è…²ß¹çˆµåqœÈŠµáŠ¹ç™Îÿ’Äô¤¿Õýüûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½½½×××ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿûþýûÿüýþüø÷ý£ èØØöÿÿþÿþÿþÿûþÿþþÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýþþÿþþÿÿÿÿüþþÿÿûÌÇñ£¨ðýþÿÿüüÿþúÿüýÿþûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈÈÈÊÊÊÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿæè립ֺ⌺拽í™ÎÿšÐÿ—Ðÿ™Ñÿ‘Éü“Ìÿ—Ñÿ™Îÿ—ÉýŽÁð”¹Ø¶Æ×öööþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþíðñ¥¾Ô’»â½ìŒÂñšÏÿžÑÿÐÿšÌü•Ç÷žÐÿÏÿžÏÿžÎÿÎÿ•ÆûœÏÿ”É÷Žºãª¿Óëòòÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½½½ÖÖÖÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñòý ›éÖÙ÷ÿÿøüýûýýþýþúýþýþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿúþûýüüüýùûþûÿÿûÈÈ÷¦¡êùúúþÿýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÇÇÇÊÊÊÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿþÿÿÿûûæåêÂÓܪÆÜ¡¾Û›¼Ü–»Þ•¹à™¼ä›»áœ»Ý£¿Ü±ÆÚÊÔáîîîÿÿúÿÿÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüÿýÿÿýÿüùÝáå°ÊÙ¿Þ•»à’¾êÀñ’Äö”Æø“Åø’ÅøŽÅöÂïÀè½á›¾Ø³ÈÔØßäþýûÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¼¼¼ÕÕÕÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿûîð÷šœêÉÑôÿÿþÿÿúÿþúÿÿüÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿúþýûþúÿþýÿÿýÃÁö¦£îõùüÿþùÿýûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÇÇÇÊÊÊÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿüÿýÿþÿÿÿÿÿÿÿÿþüüøôöõîñóìðóíðòòòóùööþýùÿÿþÿÿÿÿÿÿûþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿýþþúÿüÿÿÿÿÿÿûø÷ëëî×ÞæÈÔã¾Ïß¼ÍÝ»ÍܼÎÞÃÏÝÎÔáÚÞåêììùøùÿÿÿÿÿÿþÿþúþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½½½×××ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿöþúÿÿüóóü¡¤ìÀ¿òýÿ÷ÿýüÿýüÿþûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüþÿÿù÷üú´±ò°®íûüúÿüþüûûûýüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈÈÈÊÊÊÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüþüäæèãäçåæåæççêêëëêëçååããáêëèëìêêêéëêééééâæääçäÿþüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿþüÿýúþÿüþþö÷ôó÷õ÷ø÷ùúùûûúûú÷üúöûùõüû÷ûúøûüúûüúøù÷õ÷ôûýûûÿÿþþÿÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½½½×××ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýþûùþýÿÿýûüý°´òª¥èìéöÿÿüÿþüþÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýàáù¢ŸìÄÁòÿÿûÿý÷þý÷úýüþýüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈÈÈÊÊÊÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿúûúßÝÞù÷øõööðñðØ××âááïîîâááòðñÜÛÜäãäÝÜÜÞÜÛîïîÙÚÚýýýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿþÿÿÿîîîÖ×ÖèçèèèéãääÜßÞãääÕÖ×ÝÞßãäåáááàààäããæåæÞÝÝãââþÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½½½×××ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿþÿÿÿÿÿøØÓø Ÿê¿¼ñõõùÿÿÿÿÿýÿÿûþüúýþþýÿûýÿüýýþÿþüÿÿüÿÿýéïù³¶ï¤¡çäáõÿÿÿÿþùÿþÿÿÿþÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈÈÈÊÊÊÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûûûåæåÿÿÿêééðð𺺺ÇÇÇûûûïïïèèèÀÀÀÜÜܬ¬¬ÂÃÃöööâââýýýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿëëëìììþþþîîîçççÃÃÃúúúîîîøøø×ÖÖÓÓÓÒÒÒ¼¼¼ÎÎÎ÷÷÷âââÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüíííðððîîîîîîúúú½½½ÜÜÜÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎËú§©ó¿ÁôáâýüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþûþÿÞÝú»¸õ«¬ïÐÑúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÍÍÍÈÈÈÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûûûÕÕÕçççêêêçççÆÆÆÔÔÔàààÒÒÒäääÚÚÚàààÒÒÒÔÔÔæææÑÑÑýýýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿëëëàààñññëëëÝÝݳ³³ëëëáááéééÏÏÏ×××ËË˲²²ÇÇÇêêêáááÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿóóóÄÄÄ××ש©©žžžÔÔÔÅÅÅ›››¸¸¸¶¶¶¶¶¶¶¶¶¶¶¶µµµ´´´¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶···¥¥¥²²²¶¶¶¶¶¶¶¶¶¶·³³·±±·°º»¶±±µ‹°lh®jg½•Ь®â¤¦Ý¬­ãÍbd»nl®•“¯¶¶¶¼º´º´´¹¶³¶¹¯µ´¸¶¶¶¶¶¶°°°¦¦¦···¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶´´´µµµ¶¶¶¶¶¶¶¶¶¶¶¶···–––ÑÑÑÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûûûßßßñññÖÖÖçççúúúùùùìììàààñññâââääääääáááïïïÚÚÚüüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿêêêÐÐÐâââÞÞÞßßßÝÝÝáááÏÏÏ×××äääááááááâââáááØØØÞÞÞÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿõõõÕÕÕííí¼¼¼ÝÝÝúúúáááááááááááááááááááááààààààááááááááááááàààßßßááááááááááááâßáàßÞÛááàÞâåàÜæäáæçâààãßÙìÞÜôàÜôßÝôÛÞêààáäçâßæÞàáÞáßÞàÞâààÜáßÞáàßáááàààßßßßßßááááááááááááááááááààààààááááááááááááàààãããûûûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿúúúççç÷÷÷¯¯¯ÖÖÖÿÿÿÿÿÿùùùîîîêêêÁÁÁÖÖÖ»»»ÃÃÃöööáááüüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿìììñññàààÌÌÌüüüÿÿÿÿÿÿììì÷÷÷ØØØÓÓÓÑÑÑÍÍÍåååûûûâââÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüÙÙÙÞÞÞ¿¿¿ÖÖÖåååæææÞÞÞÔÔÔßßßÒÒÒÜÜÜÍÍÍÊÊÊâââÖÖÖýýýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿëëëèèèÔÔÔ¾¾¾õõõùùùúúúãããîîîÑÑÑ×××ÑÑÑÆÆÆáááðððßßßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýûûûþþþóóóõõõýýýÿÿÿòòò÷÷÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûûûÞÞÞþþþìììîîîýýýÿÿÿþþþÿÿÿÿÿÿïïïääåÏÏÏéééãããÿÿÿèèèòòòþþþÿÿÿÿÿÿþþþôôôñññþþþÿÿÿÿÿÿÿÿÿÿÿÿçççðððøøùçççðððöööÿÿÿÿÿÿþþþÿÿÿýýýêêêáááÐÐÐðððòòòýýýþþþÿÿÿÿÿÿÿÿÿéééíííúúúçççïïïõõõþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿöööñññöööóóóñññðððñññðððòòòóóóòòòôôôôôôðððöööÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷÷÷áááâââßßßääääääåååßßßáááæææææææææååååååáááðððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÖÖÖÊÊÊááá×××ÜÜÜÅÅÅÜÜÜèèèÛÛÛþþþêêêèèèùùùüüüòòòõõõ¼¼¼ËËËÎÎÎØØØûûûøøøèèèÄÄÄÔÔÔ¸¸¸¹¹¹ÆÆÆßßߺººÏÏÏÊÊÊáááýýýóóóóóóþþþÖÖÖìììÈÈÈûûû÷÷÷òòòùùùÜÜܸ¸¸ÒÒÒÐÐÐãããÙÙÙûûûúúúÚÚÚÈÈÈÐÐв²²ÁÁÁÇÇÇËËËîîîÉÉÉùùùøøøòòòùùùâââ···ÑÑÑÐÐÐâââÙÙÙÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿää䪪ªëëëÎÎÎîîîÄÄÄÓÓÓÄÄÄÙÙÙüüüÏÏÏÉÉÉðððøøøáááéééÎÎκººèèèõõõùùùìììäää¶¶¶ÐÐÐÀÀÀÆÆÆíííøøøÇÇǽ½½ìììøøøûûûääääääüüüÏÏÏõõõÃÃÃýýýíííàààòòòíííµµµÖÖÖóóóòòòÒÒÒõõõòòòÓÓÓ¾¾¾ÌÌ̽½½ÏÏÏòòòÎÎÎõõõÃÃÃüüüîîîßßßðððððð¶¶¶ÒÒÒòòòóóóÏÏÏÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿööö¹¹¹ÚÚÚÚÚÚöööÂÂÂÎÎÎÐÐÐìììÿÿÿþþþþþþþþþÿÿÿÿÿÿÿÿÿùùùøøøÿÿÿÿÿÿÿÿÿÿÿÿàààßßßüüüÿÿÿ÷÷÷þþþÿÿÿùùùúúúÿÿÿÿÿÿþþþÿÿÿÿÿÿÿÿÿåååæææÒÒÒýýýÿÿÿÿÿÿÿÿÿýýý÷÷÷þþþÿÿÿíííåååÿÿÿÿÿÿÔÔÔìììüüüýýý÷÷÷ÿÿÿççççççÑÑÑýýýÿÿÿÿÿÿÿÿÿýýý÷÷÷þþþÿÿÿíííäääÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýûûûùùùüüüûûûûûûùùùýýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþûûûþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþúúúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüÿÿÿþþþþþþüüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿúúúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþúúúþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþÿÿÿÿÿÿþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþÿÿÿÿÿÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýÿÿÿòòòðððýýýýýýùùùéééÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýÿÿÿõõõîîîýýýýýýüüüèèèýýýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýÇÇÇíííðððÈÈÈ×××¹¹¹ÀÀÀÚÚÚÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþÉÉÉèèèöööÈÈÈ×××»»»¿¿¿ÕÕÕýýýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýëëëéééêêêêêêêêêêêêçççõööÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÛÛÛæææðððÒÒÒÙÙÙÉÉÉÕÕÕÞÞÞÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÞÞÞãããôôôÒÒÒÙÙÙÊÊÊÖÖÖÜÜÜüüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿóóóÑÑÑçççæèèèêêèééèèèÞÞÞÝÝÜÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþÿÿÿþþþþþþþþþýýýþþþþþþþþþþþþýýýþþþþþþÿÿÿÿÿÿòòòñññÿÿÿÿÿÿþþþêêêþþþþþþþþþþþþþþþþþþþþþýýýþþþþþþþþþÿÿÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþÿÿÿþþþþþþþþþýýþýþÿþþÿüþþþþþÿýýþþþþþþÿÿÿÿÿÿõõõïïïÿÿÿÿÿÿÿÿÿêêêüüüþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿøøøèèèðððþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþ÷÷÷çççñññþþþÿÿÿÿÿÿÿÿÿþþþýýýÿÿÿÿÿÿÿÿÿÿÿÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿòòñåãâÿÿÿúÿÿûúúûýûÿÿÿùùúâààÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿùùùÔÔÔÛÛÛÛÛÛÙÙÙØØØÙÙÙÚÚÚÙÙÙØØØÛÛÛÛÛÛØØØÙÙÙÛÛÛÜÜÜÚÚÚÙÙÙÛÛÛÛÛÛÚÚÚÚÚÚÛÛÛÛÛÛØØØÙÙÙÛÛÛÛÛÛ×××ÚÚÚÛÛÛÚÚÚÖÖÖýýýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüÖÖÖÚÚÚÙÛÛØÚÙØÚÚáááßßÞØÚÙØØØÝÛÛÛÛÛÙÙÙÙÙÙÛÛÛÛÛÛÚÚÚÙÙÙÛÛÛÛÛÛÚÚÚÙÙÙÛÛÛÛÛÛÙÙÙÙÙÙÛÛÛÛÛÛØØØÚÚÚÛÛÛÚÚÚÕÕÕúúúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿîîî³³³ÎÎÎÿÿÿþþþÿÿÿÿÿÿÿÿÿÿÿÿàààÝÝÝááá÷÷÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿêêê²²²ÑÑÑÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþßßßÞÞÞáááùùùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿòòòßááÿÿÿÀ²°_/-_<9ÙÔÔøþþßàáÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþþþþÿÿÿóóóÛÛÛýýýüüüüüüýýýàààñññýýýüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüûûûüüüüüüüüüüüüüüüüüüüüüüüüþþþüüüýýý×××ùùùÿÿÿþþþþþþþþþþþþÿÿÿøøøØØØýýýûýýþÿÿøõô¢•’ÏÇÅÿÿÿüüüüüýüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüûûûýýýüüüýýýÚÚÚöööÿÿÿþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿøøøµµµÐÐÐÿÿÿþþþþþþþþþþþþþþþßßßÎÎν½½ôôôÿÿÿþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿ÷÷÷²²²ÔÔÔÿÿÿþþþþþþþþþþþþÿÿÿÞÞÞÍÍͽ½½÷÷÷ÿÿÿþþþþþþþþþþþþþþþþþþþþþÿÿÿòòòßâáÿÿÿ²ž›AG ÖÉÉýÿÿãßáÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþþþþÿÿÿóóóÝÝÝÿÿÿþþþþþþÿÿÿòóóüþþÿÿÿþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿûûûîîîúúúÿÿÿÙÙÙùùùÿÿÿþþþþþþþþþþþþÿÿÿøøøÙÙÙÿÿÿÿÿÿëçæ¢‡…œyxˆomäÞÝÿÿÿûþÿþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþúúúþþþÿÿÿÛÛÛöööÿÿÿþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿôôôËËËÜÜÜþþþþþþþþþþþþþþþýýýÿÿÿÿÿÿøøøþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿòòòÊÊÊÞÞÞÿÿÿþþþþþþþþþþþþýýýÿÿÿþþþùùùÿÿÿþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿòòñãááÿÿÿÀ·¸b=@iHKÞÖÙûýþàààÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿóôôÛÜÜÿÿÿýÿÿþÿþüüû±š›Ç´²úùøÿÿÿýýþýÿþþÿýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿööö¶¶¶éééÿÿÿØØØùùùÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿøøøÙÙØÿÿÿâÝܵœœ ‚ʲ²¶¡¡wxìíìüÿÿÿþÿúÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþÊÊÊúúúÿÿÿÛÛÛöööÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿòòò±±±ÔÔÔÿÿÿþþþÿÿÿÿÿÿÿÿÿÿÿÿøøøÄÄÄÑÑÑùùùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïﯯ¯ÙÙÙÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþöööÃÃÃÑÑÑüüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿòòñâááÿÿÿýýþÿÿÿÿÿÿþþÿõ÷÷ßààÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿóôôÝßßÿÿÿþÿÿÿÿÿÕÆÇ‘rt”qq¶îêêÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿöööËËËÖÖÖÿÿÿÛÛÛùùùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿùøøâààæßà°–—Ÿzz³““¼­®°™›¶¡ ­‡ŠýþþüÿÿûÿÿÿþÿüÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþüüüÓÓÓèèèÿÿÿÞÞÞ÷÷÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñññ»»»ÐÐÐÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüÒÒÒÁÁÁóóóÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿîîî¹¹¹ÓÓÓÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüÑÑÑÁÁÁöööÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿòòòáááÿÿÿÿÿÿòóóíííÿÿÿ÷÷÷àààÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿùùùÐÐÐÑÑÑ÷÷÷óõõÛÛÛÿÿÿÿÿÿîæç¯’•îéêòîîªˆŠ¥‡‡ÞØØþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷÷÷ÔÔÔêêêÿÿÿØØØùùùÿÿÿÿÿÿýýýÒÒÒÎÎÎóóóýýýÇÁÂÀ°²È®®š{{ͼ»üúúÛÏÑÆ¯®¡‚­¯ÿÿÿýþþÿþÿúÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷÷÷ÅÅÅÞÞÞÿÿÿÚÚÚöööÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿøøø±±±ÒÒÒþþþþþþÿÿÿÿÿÿÿÿÿþþþþþþÑÑÑÑÑÑ÷÷÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿõõõ®®®ÖÖÖÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþÐÐÐÓÓÓùùùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿòòòáááÿÿÿöööÓÓÓÌÌÌòòòùùùàààÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿúúúÚÚÚÎÎÎñññóôõÝÝÝÿÿÿýüý²—™Í¿Àéíìóøù÷ôôµ ¡±˜šÀ³²ôóòÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿÿþÿÿþÿÿþÿÿþÿÿþÿÿþÿÿþÿþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÙÙÙùùùÿÿÿþþþüüüÜÜÜÏÍÍëííúûû¸­¯ÍÀÀο¼À®«çãâçëíñóô¼¦¥Ë¹¶†beëãåÿÿÿþÿÿþÿÿþÿÿÿÿÿÿÿþÿþþÿÿþþÿþþþþþþþÿþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÜÜÜöööÿÿÿþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿ÷÷÷ÝÝÝäääÞÞÞôôôÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿÿØÛÛòööÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþþþþôôôÝÝÝãããÝÝÝöööÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿùüü×ÛÛõøùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿòòòáááÿÿÿöööÓÓÓÏÏÏóóóøøøàààÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿúúúðððííí×ÖÖõõõßÞßÿÿÿäÛÚ­’“òððñòòù÷øúÿÿÿÿÿɹºŸ…„лºéããþÿÿþÿÿûþþþÿÿýÿÿüÿÿûÿÿþÿÿþÿÿþÿÿýÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþÿÿÿÚÚÚùùùÿÿÿÿÿÿüüüîîîðññÔÔÔûùúÐÇÈæÞÝ¥•”ɸ·ÿÿÿïðñõûüäáßÌ´´³žž‰^býÿþÿÿÿýþÿÿþÿÿþÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþÿÿÿÝÝÝöööÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÞÞÞ«««ÄÄÄ­­­ÚÚÚäääÖÖÖÚÚÚÚÚÚÙÚÚÚÛÛËÍÌžˆˆž„ƒš„‚Ÿ…„™€µ¬ªÛÛÜÚÚÛÓÓÒ¥Œƒ‚Ÿ…„Ÿ…„œ€²££ÛÛÛÚÚÚÚÚÚÚÚÚÚÚÚÓÓÓóóóÿÿÿÿÿÿÿÿÿØØØ­­­ÁÁÁ¬¬¬ÞÞÞááá×××ÚÚÚÚÚÚÚÚÚÛÛÛÎÈÇ…„…„¡ƒƒ†„›€»²±ÜÛÛÛÛÛÏÐР‰Š›…ƒ…… …†–ƒ²©¨ÚÛÛÚÚÚÚÚÚÚÚÚÚÚÚÔÔÔ÷÷÷ÿÿÿòòòáááÿÿÿÿÿÿÒÒÒ´´´÷÷÷øøøàààÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿúúúüýýóôóÜÛÜþþþ¹¤£´žžÿÿÿðóóúùúýÿÿÿÿÿÿÿÿ¾±®ª˜•ƶµÜÐÑûûûÿÿÿÿÿÿÿÿÿþÿÿþþÿÿÿÿÿÿÿÿþÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ×××øøøÿÿÿÿÿÿÿÿÿÿÿÿùûûüüüûúú¾»¼öôôïççðèéÿÿÿöôôöùùüýýõ¶ÙÐÏwEH}\]ÕÅÆþÿÿÿÿÿûÿÿûÿÿþÿÿþÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÚÚÚõõõÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿóóóÕÕÕðððÖÖÖòòòÙÙÙöööûûûûûû÷ûûüüü××ÕFHH M ;‘xwüüüüüüæèæT"!HJ J A__üüüúûûùûûûûûüüüàààêêêÿÿÿÿÿÿÿÿÿðððÖÖÖîîîÕÕÕôôôÕÕÕøøøûûûûûûûûûûüüÑÊÉC H T F <˜‰ˆüüüüüüÞßßPIN R A’mnüüüûûûûûûûûûüüüÞÞÞîîîÿÿÿòòòáááÿÿÿøøøËËËÃÃÃîîîùùùàààÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿöööÞÞÞÜÜÜáââîððãâãôòò­’’ÑÀÀÿÿÿßààõòóÿÿÿÿÿÿþÿÿÿÿÿÁ³±¹¤£ØÏË®œ¾®®çââ÷÷÷ÿÿÿÿÿÿÿÿÿÿÿÿþÿÿýÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÚÚÚùùùÿÿÿÿÿÿùùùàààßßßßààòôôÃÁÁóôóõññóðïÿÿÿäããïïðÿÿÿÒÈÉÚÐд—™¬Œ¬”“¡ŒÔÇÈüýýþÿÿÿÿÿÿÿÿüÿÿüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÜÜÜöööÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÚÚÚüüüÿÿÿÿÿÿûÿÿÿÿÿàÜÛY "YX]M ÿÿÿÿÿÿêíë`/.Y[[R ‡iiÿÿÿýÿÿýÿÿÿÿÿÿÿÿåååêêêÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÖÖÖüüüÿÿÿÿÿÿÿÿÿÿÿÿÕÐÐUWXSP ¤‘ÿÿÿÿÿÿâäã]!#UOTK wxÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿâââïïïÿÿÿòòòáááÿÿÿþþþæææ¬¬¬íííùùùàààÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýêêê²²²èèèöõõãáâäßोŠÛÌÌùûûòòòöôö÷÷øö÷÷óø÷øúúþþý¨ŽÅ±²ñôóÕÆÉ˳¶«”–² ¡ÌÁÁæÝÞ÷ñòýüüûÿþøúúø÷÷÷øøøøøøøøøøøùøø×××úùùÿÿÿÿÿÿýýýëë븷·ÝßßüüüÊÀÂïêêÜÓÓëêè÷ùùòôóõõõúúúÚÔÔμ½µ™œÔËËþÿÿÞÓÕ«Ž’¦‘ÑÄÄðìëøôôýüüùþþúúúù÷ø÷øøøøøøøø÷÷÷÷÷÷÷÷÷÷÷÷øøøÙÙÙöööÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÙÙÙûûûÿÿÿÿÿÿûÿÿÿÿÿàÜÛW!VTYI šÿÿÿÿÿÿëíë_/.TWWN ‡iiÿÿÿýÿÿýÿÿÿÿÿÿÿÿäääêêêÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÖÖÖüüüÿÿÿÿÿÿÿÿÿÿÿÿÚÒÏz%%‚%%~(%€(%~¶•–ÿÿÿÿÿÿæäãz/1ƒ# †&#‡%&„¨~~ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿâââïïïÿÿÿòòòáááÿÿÿÿÿÿîîî¿¿¿õõõùùùàààÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïï²²²êìëñíí»§ªæç祋‹ÓÂÃùúúÝÛÜìììð÷öóõõôööõóôóööïëë›vzÛÑÒúÿÿøýüöôôâÛÜǹ»´ž ¤‘¼«¬Ç¸¹îèèø÷÷õóóøøøûüûúûûøúúÕ××÷ùøÿÿÿÿÿÿÿÿÿñññµ´µáââûúúª“”¿¨ªÞÕÕðîíöø÷ÜßÞééêùùùÜØØÀ¬­­”–ÛÎÏôúûøúüýüûÚÐѱ›©”—´¥§ÜÏÑÝÓÕçääððïøúùûþýøûúõø÷ööö÷öö÷ö÷÷ööØØØôööÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÚÚÚûûûÿÿÿÿÿÿüÿþÿÿÿÞÜÛU !VX[K œ€ÿÿÿþÿÿêíì^/.WYYP …jhÿÿÿüÿþýÿÿÿþÿÿÿÿåååêêêÿÿÿÿÿÿøøøìììðððïïïîîîúúúÙÙÙüüüÿÿÿÿÿÿÿÿÿÿÿÿÞÓФ23¹13¸34¸44ª'+Úšÿÿÿýÿÿîâã8=².1ª22«14 ((¸ƒÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿäääïïïÿÿÿòòòáááÿÿÿÿÿÿããã´´´ñññùùùàààÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþøøøÖÖÖàááôõõ‰afáÜܯ‘ʳ¶ÿÿÿïíîøø÷ýÿÿøÿÿÿÿÿÀ¯°ÓÎÏóññ‚VW|YZòõôÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿòððÝÔÔÁ¯°Ã³µÇ¼½Á²³ÓÆÆÙÏÐéâäöòóÔÒÓ÷øøÿÿÿþþþýýýúúúØ×ØÛÜÛûûø‰lj¨‡‰ÙÊÌðöõÿÿÿîðï÷ööÿÿÿäâáɰ³°ž üüûýÿÿÿÿÿÿÿÿÿÿÿþÿÿßÖØÂ°²Á¯°Íº¼ÔÅÆÒÄÅË¿ÀÍÃÃáÛÛîééúøùþÿÿþÿÿþÿÿáààôööþÿÿÿþþþþþþþþþþþÿÿÿüüüÉÉÉ¿¿¿çççÿÿÿùùùøøøðððûûûÜÜÜûûûÿþÿþþþüþüÿÿÿÜÜÜ\PPSC —€ÿÿÿþÿÿëìí\-,OQQI „jfÿÿÿüÿýüþþþþþÿÿÿåååëëëÿÿÿÿÿÿÍÍͲ²²ÃÃó³³²²²ðððÕÕÕúúúþþþþþþþþþÿÿÿáÒÔ¡12³20°24²32§&(Úšÿÿÿþÿÿåê訟›º§£¼¦¦À¥¦µ¡¡¼¹¶þþþþþþþþþþþþÿÿÿÞÞÞìììÿÿÿòòòáááÿÿÿþþþööööööþþþ÷÷÷àààÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿúúúáááÜÜÜóôôöúû±¨©¨ƒ†µ——¥…†ýüýôö÷ùúúþÿÿ÷ûûÚÏÑÍ·ºÜÒÓ¦Ž‘Î¾¿åàà÷ôõþþþþþþþþþþþþüþýýÿþÿÿÿÿÿÿüüüìèèâÛÛÕÈÈÇ·¹ÔÅÈÚÏÑý¾üúúþÿÿÿÿÿüûüãããÝÞÞòòñýþý°Ÿž“ruîåæßØØþþÿôööúøùÿÿÿÝÔÔ­”—ÎÄÄÿÿÿüþþþþþÿþþüþþûþþÿÿÿüýýâÜÜͽ¿É¼½èääôóóâÜÝ×ÎÏʽ½ÊººÁ´³ÒÉÇåáâÊÁÃùö÷ÿÿÿþþþþþþþþþþþþÿÿÿýýýÊÊʳ³³æææêê꺺ºÖÖÖÇÇÇñññÚÚÚúúúÿþÿþþþüÿýÿÿÿáÜ܃-/†&#‡(&‹'({¯††ÿÿÿÿÿÿîëí†::‰#!‰'&‰'&ƒ¡ppÿÿÿýÿýûþþýþþÿÿÿâââêêêÿÿÿÿÿÿàààÍÍÍäääËËËÎÎÎõõõ×××ûûûþþþþþþþþþÿÿÿáÒÔ¡12³20°24²32§&(Úšÿÿÿüÿþøüüîóôïõöð÷øïö÷ñôö÷öøþþþþþþþþþþþþÿÿÿâââîîîÿÿÿòòòáááÿÿÿþþþÿÿÿÿÿÿÿÿÿ÷÷÷àààÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüîîî¹¹¸êêëòôõëé꼦¦rCC…XXèÞÝâææôõõóóóÕÍÎíæçÛÏР‡‰ÞÖ×ÿÿÿÿÿÿùÿþýþþþþþþþþþþþÿýþÿþþþþþþþþüÿÿýÿÿÿÿÿÿÿÿýüýøõöðîïØÚÙ÷ùùÿÿÿþþþýýýñññ¸»ºæããùúúåå妋ް¡¡èÝßøóöÞäãîððþýýʵ·ª–˜úøøþþþüþþþþþÿþþýþþûÿþúÿþûþÿÿÿÿÿÿÿóîððîïþÿÿÿÿÿÿÿÿÿÿÿøþüõõôëääÝÑѶ®¯ø÷÷ÿÿÿþþþþþþþþþþþþþþþÿÿÿøøøÀÀÀêêêæææ´´´éééÈÈÈéééÚÚÚúúúþþÿþþþÿýþÿÿÿçÜÛ©7;²22µ45º25¨'(À‹‹ÿÿÿýÿÿïìì¨DF·01¶45¶45±)+·vyÿÿÿüÿýüþþýþþÿÿÿáááêêêÿÿÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ×××üüüþþþþþþþþþÿÿÿáÒÔ¡12³20°24²32§&(ššÿÿÿÿýþþþÿüÿÿüÿÿÿÿÿýÿÿüÿÿýÿþþþþþþþþþþþþþÿÿÿäääïïïÿÿÿòòòáááÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿöööàààÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷÷÷àààßßßâââïïñßàáþÿÿŒ_`ZÁ­«üûûøòôÞÖÖÿþþÐÀ•uyçààÿÿÿûýÿüþÿûþýþþþþþþþþþþþþýþþüþþýþþýþþþþþýþþýþþýþþýþþýþþÿÿÿÛÙÚùøøÿÿÿÿÿÿùùùàààÛÞÝâÞÞðòóÙßßùõö‹`eÚÊÌûÿÿú÷øýÿÿåàà˜y|áÖØÿÿÿþþýþþþþþþþþþþþþþþþüþþýþþýþþûþýþÿÿÿÿÿýýýüþþûþþúþþûþÿýÿÿÿÿÿÿÿÿßààóõõþÿÿÿþþþþþþþþþþþþþþþþþÛÛÛ¼¼¼éééÿÿÿöööýýýîîîüüüÛÛÛûûûþþþþþþþþþýÿÿãÝÛ§68±00±23µ14£%'»Š‹þÿÿûÿÿííì©CC±./±23±23¬')¶vxúÿÿûÿýüþþýþþÿÿÿåååëëëÿÿÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÕÕÕûûûþþþþþþþþþÿÿÿáÒÔ¡12³20°24²32§&(ššÿÿÿþþþþþþýþüûþýûþþÿýþþýþûþþþþþþþþþþþþþþÿÿÿâââîîîÿÿÿòòòâááÿÿÿððîàÕÕáØØ÷öö÷øøàààÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿôóôÙÛÛÿÿÿòëí{IJŽnmËÀ¿ÓÈÊæØÖ¨‹›ðçêÿÿÿþþþýþþþþþÿþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿØØØùùùÿÿÿþþþþþþÿÿÿÿÿÿÿÿÿùùùØØØÿÿÿâÖÕˆddëâãìññôóò«˜•Á¬®ÿÿÿþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþýþþþþþþþþþþþýþþýþþþþþÿþþþþþþþþÿÿÿÚÚÚõõõÿÿÿþþþþþþþþþþþþþþþþþþæææ···ÞÞÞÿÿÿÿÿÿþþþÿÿÿÿÿÿÛÛÛûûûþþþþþþüþþÿÿÿäÝÛ¥78²01±23®32©#'º‰Œþÿÿÿÿÿììë¥CD°.0¯24¯24«'*´wuüÿÿÿÿýúýþþýþÿÿÿäääêêêÿÿÿþþþùùùööööööõõõëëëúúúØØØüüüþþþþþþþþþÿÿÿáÒÔ¡11³20°24²32§&(ššÿÿÿþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿäääîîîÿÿÿòòòâàáÿÿÿÇ­¨œ'%—13ßÐÑùÿÿÞáßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþþþþÿÿÿôóôÜßßÿÿÿÿÿÿÚÊɉcdÕÌÌíõô껤‹‹øôõýÿÿúýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÚÛÛùùùÿÿÿþþþþþþþþþþþþÿÿÿùùùÜÜÛÿÿÿÿÿÿп¾ŽklæåãÆ³´¢€ƒüúûùþÿþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÝÝÝöööÿÿÿþþþþþþþþþþþþþþþþþþõõõ³³³áááÿÿÿþþþþþþþþþÿÿÿÙÙÙúúúÿþþþþþüþþÿÿÿäÝÛ¥78²01±23®32ª#'¸Š‹ÿÿÿýÿÿæîì©BE±./°23°23¬')ºuvÿÿÿüÿýýýþþýþÿÿÿãããêêêÿÿÿþþþÃÃÿ¿¿Â¹¹¹ÂÂÂôôôÔÔÔûûûþþþþþþþþþÿÿÿáÒÔ¡11³20°24²32§&(ššÿÿÿþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿßßßíííÿÿÿñòòÜááÿÿÿÎ¥¥ž˜$%ßÍÊùÿÿÝáàÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿôóóÛÜÜÿÿÿþÿÿÿÿÿθºÎÀÁ˺¼Â±³ÿÿÿüÿÿýþÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿØØØùùùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿùùùÙÙÙüÿÿþþÿÿÿÿµ²ˆdd †‡òíïúÿÿÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÛÛÛõõõÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþäääÁÁÁçççÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÛÛÛüüüÿÿÿÿÿÿýÿÿÿÿÿäÝÛ¥78²01±23®32ª#'´‹Œÿÿÿþÿÿðêíž:>¤%%¤))¥))¥rsÿÿÿøÿþÿþþÿþÿÿÿÿåååëëëÿÿÿþþþÆÆÆÍÍÍÐÐÐÀÀÀÀÀÀïïïÖÖÖüüüÿÿÿÿÿÿÿÿÿÿÿÿáÒÓ¡12³20°24²32§&(š™ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿáááîîîÿÿÿôòòßááþÿÿØÍͲ|~³…‚åæáøûûßßàÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿòóóÛÛÛÿÿÿÿÿÿýþÿýÿÿ¥œÏÆÇÿÿÿýÿÿüþÿüÿÿüþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ×××ùùùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿøøøØØØÿÿÿþþÿøþÿÿÿÿ»ª©ÜÖÔÿÿÿþþÿûÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÙÙÙõõõÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿåååÄÄÄéééøøøÜÜÜæææàààôôôÝÝÝüüüÿÿÿÿÿÿýÿÿÿÿÿäÝÛ¥78²01±23®32ª#'¹‹ŒÿÿÿúÿÿëêíÀ²¯Ó¿¾ÓÀ¿ÓÀ¿Ñ¼»Ã¼ºúûýùÿþýÿþýÿÿÿÿÿåååëëëÿÿÿþþþüüüüüüþþþùùùôôôþþþ×××ýýýÿÿÿÿÿÿÿÿÿÿÿÿáÒÓ¡12³20°24²32§&(š™ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿãããïïïÿÿÿóòóÝáâþÿÿÿÿÿÿÿÿÿÿÿûÿÿõõöÞáàÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷øøÒÒÒÛÛÛÛÛÛÙØÙ×ÙÙÛÛÛÜÝÝÙÙÙ×רÚÛÛÛÛÛÖØØÙÙÙÛÛÛÛÛÛØØØÙÙÙÛÛÛÛÛÛØØØÙÙÙÚÚÚÛÛÛØØØÙÙÙÚÚÚÛÛÛ×××ÚÚÚÛÛÛÚÚÚÓÓÓüüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüÓÓÓÚÚÚÙÚÚÙÙÚØØØÜÜÜÚÛÛÚÚÚØ×רÛÚÚÚÚÙÙÙØØØÛÛÛÛÛÛØØØÙÙÙÚÚÚÛÛÛØØØÙÙÙÛÛÛÛÛÛØØØØØØÛÛÛÛÛÛ×××ÚÚÚÚÚÚÚÚÚÒÒÒúúúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿõõõÁÁÁñññààà©©©ÔÔÔ¤¤¤ãããÚÚÚùùùÿÿÿÿÿÿýÿÿÿÿÿäÝÛ¦79°01³13®32¨#'½ŠŒÿÿÿþÿÿëííÕÛÚíññíññíññìðñÔÖÖûûüþÿÿþÿÿþÿÿÿÿÿàààéééÿÿÿÿÿÿÿÿÿÿÿÿþþþÿÿÿÿÿÿÿÿÿÕÕÕüüüÿÿÿÿÿÿÿÿÿÿÿÿáÒÓ¡12³20°24²32§&(ššÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿâââïïïÿÿÿòòòàááÿÿÿûûûçéêæèèøùù÷÷øÞààÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýýýýüüüüüüþþþýýýüüüýýýýüüýýýýýýýýýüüüþþþþþþýýýþþþýýýÿÿÿüüüüüüüüüýýýýýýüüüüüüüüüüüüýýýüüüþþþýýýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýýýýüüüüüüüüüüüüýýýýýýüýüüüüüüüüüüýýýýýýüüüýýýþþþýýýýýýýýýÿÿÿýýýýýýüüüýýýüüüýýýüüüüüüüüüüüüüüüþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿóóó···ìììõõõÔÔÔøøøäääóóóÜÜÜûûûÿÿÿÿÿÿýÿÿÿÿÿäÝÛ¦79°01´13®32¨#'½ŠŒÿÿÿÿÿÿüûûìëëìììììììììëëëñðñþþþÿÿÿÿÿÿÿÿÿÿÿÿäääêêêÿÿÿÿÿÿÿÿÿýýýýýýýýýüüüÿÿÿØØØýýýÿÿÿÿÿÿÿÿÿÿÿÿáÒÓ¡12³20°24²32§&(ššÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿãããïïïÿÿÿòòòáááÿÿÿôôô¹¹¹¶µµëëëúúúàààÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþüüüÿÿÿòòòðððýýýýýýûûûêêêÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüþþþõõõïïïþþþýýýüüüêêêþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþúúúêêêúúúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÚÚÚûûûÿÿÿÿÿÿýÿÿÿÿÿäÞÛ¦78°01´13®33©$(¾‹ŒÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿåååëëëÿÿÿÿÿÿÕÕÕÅÅÅÏÏÏÃÃÃÐÐÐìììØØØüüüÿÿÿÿÿÿÿÿÿÿÿÿáÒÓ¡12³20°24²32§&(š™ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿáááïïïÿÿÿòòòáááÿÿÿøøøáááÖÖÖíííùùùàààÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûûûÇÇÇìììðððÈÈÈØØØ»»»ÀÀÀÙÙÙÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýÉÉÉèèèôôôÈÈÈØØØ½½½ÁÁÁÔÔÔýýýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþìììÜÜÜïïïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÚÚÚûûûÿÿÿÿÿÿýÿÿÿÿÿäÞÛ¦78°01´13®33©$(¾‹ŒÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿäääêêêÿÿÿÿÿÿÅÅŽ½½ÎÎεµµ¸¸¸âââÖÖÖûûûÿÿÿÿÿÿÿÿÿÿÿÿáÒÓ¡12³20°24²32§&(š™ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿßßßîîîÿÿÿòòòáááÿÿÿÿÿÿëëë´´´îîîùùùàààÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÚÚÚäääïïïÑÑÑØØØÇÇÇÔÔÔßßßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþÿÿÿÿÿÿþÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÜÜÜáááôôôÑÑÑØØØÈÈÈÓÓÓÛÛÛüüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿêêê²²²ÞÞÞÿÿÿÿÿÿþþþÿÿÿÿÿÿÚÚÚüüüÿÿÿÿÿÿýÿÿÿÿÿäÝÛ¦79°01´13®33©$(¾‹Œÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿåååëëëÿÿÿÿÿÿ÷÷÷ôôôûûûòòòíííúúú×××ÿÿÿþþþÿÿÿÿÿÿÿÿÿàÒÒ 11³00°*.³/0§&'Áššÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþÿÿÿÿÿÿþþþþþþÿÿÿåååîîîÿÿÿòòòáááÿÿÿÿÿÿììì¼¼¼òòòùùùàààÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþþþþþþþÿÿÿþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿññññññÿÿÿÿÿÿþþþéééþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþÿÿÿýýýþþþþþþýþþýÿþýþþþþþþþþþþþþþþþþþÿÿÿÿÿÿôôôðððÿÿÿÿÿÿÿÿÿéééüüüþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿúúú´´´àààÿÿÿøøøùùùøøøþþþÜÜÜüüüÿÿÿÿÿÿýÿÿÿÿÿäÝÛ¦79°01´13®33©$(¾‹ŒÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿæææëëëÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÖÖÖçççýýýÿÿÿÿÿÿþÿÿÛÕТ&'´,/µXY¨=<¤Ƙ—ÿÿÿÿÿÿÿÿÿÿÿÿðððÝÝÝäääùùùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿóóóÖÖÖóóóÿÿÿòòòáááÿÿÿÿÿÿììì¼¼¼öööøøøàààÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿùùùÔÔÔÚÚÚÛÛÛÙÙÙØØØÙÙÙÚÚÚÙÙÙØØØÛÛÛÛÛÛÙÙÙØØØÛÛÛÜÜÜÙÙÙÙÙÙÚÚÚÚÚÚÚÚÚÙÙÙÛÛÛÛÛÛØØØÙÙÙÛÛÛÛÛÛ×××ÚÚÚÛÛÛÚÚÚ×××ýýýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüÖÖÖÛÚÚÚÛÛÖÚÚÕÙØÞÞÞÝÝÝØÚÚØØØÜÛÛÛÛÛÙÙÙØØØÛÛÛÛÛÛÚÚÚÙÙÙÚÚÚÛÛÛÚÚÚØØØÛÛÛÛÛÛØØØÙÙÙÛÛÛÛÛÛØØØÚÚÚÛÛÛÚÚÚÕÕÕûûûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿááá¾¾¾èèèììì»»»ÉÉɲ²²âââÜÜÜúúúÿÿÿÿÿÿýÿÿÿÿÿäÝÛ¦79°01´13®33©#(¾‹ŒÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿâââêêêÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþðððÝÝÝØØØæææüüüÿþÿÓÆÇ«lpäÌËòñïíàÜ€‚¶›œúùúÿÿÿíííÜÜÜÜÜÜààààààÚÚÚâââøøøÿÿÿïïïÜÜÜÛÛÛæææýýýÿÿÿòòòáááÿÿÿÿÿÿëëëÍÍÍ÷÷÷øøøàààÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþþþþÿÿÿóóóÛÛÛýýýýýýüüüýýýàààòññýýýýýýýýýýýýüüüüüüüüüýýýýýýüüüüüüýýýüüüüüüýýýýýýüüüüüüýýýýýýûûûþþþýýýýýý×××ùùùÿÿÿþþþþþþþþþþþþÿÿÿøøøØØØþýýüýýúüüþÿÿÑÅÈß×ÙÿÿÿûüüýüýýýýýýýüüüüýüýýýüüüüüüýýýýýýüüüüüüýýýýýýüüüüüüýýýýýýüüüþþþýýýýýýÚÚÚõõõÿÿÿþþþþþþþþþþþþþþþÿÿÿÙÙÙ¸¸¸éééééé¶¶¶ÚÚÚ´´´ñññÙÙÙøøøÿÿÿþþþüþþÿÿÿãÝÚ¥78°01´23®32¨#'½Š‹ÿÿÿþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿáááéééÿÿÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÐÐÐ×××ßßßÞÞÞÚÙÚÙØÛÝáâðæåËžž²KR¸€€æÙ×áèçÚÙÛÙÙÙÝÝÝßßßÚÚÚÞÞÞÛÛÛÜÜÜßßßÜÜÜÚÚÚÞÞÞßßßÞÞÞËËËðððÿÿÿòòòáááÿÿÿþþþììì¶¶¶îîîùùùàààÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿóóóÞÞÞÿÿÿÿÿÿþÿþÿþþõøøùþþþÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿúúúÿÿÿÿÿÿÙÙÙùùùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿùùùÚÚÚÿÿÿúÿÿÿÿÿðè蟅ˆš}ÒÈÈÿÿÿþÿÿþÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþùùùÿÿÿÿÿÿÜÜÜöööÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷÷÷±±±ÞÞÞÿÿÿöööÿÿÿüüüþþþÜÜÜûûûÿÿÿÿÿÿýÿÿÿÿÿãÝÛ¥78±01³23®32©#'¼ŠŒÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿæææëëëÿÿÿÿÿÿðððåååðððîîîäääôôôÛÛÛúúúèèèÙÙÙßßßãåäÌÁ¾¥ABª&&µ++«(&§-/»š—àçæáááÚÚÚááá÷÷÷ÿÿÿÿÿÿìììÛÛÛÝÝÝàààÛÛÛÞÞÞöööæææïïïÿÿÿòòòáááÿÿÿÿÿÿÜÜܶ¶¶òòòùùùàààÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿóóóÜÜÜÿÿÿÿÿÿýþýÿÿÿÌ¿ÁäÜÝÿÿÿþÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿêêêÄÄÄáááÿÿÿØØØùùùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿùùùØØØÿÿÿüÿÿêææ¶šš¢Œ‹ÚÏͮ˵¶ýþüþÿÿþÿþÿþÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿõõõÊÊÊÔÔÔÿÿÿÚÚÚöööÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷÷÷ÅÅÅèèèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÚÚÚûûûÿÿÿÿÿÿýÿÿÿÿÿäÝÛ¦89²01±23®33ª$(»‹ŒÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿåååëëëÿÿÿÿÿÿÀÀÀ´´´ÎÎΞžž•••ää䨨ØüüüÿÿÿýýýêêêêëëÜÌÏ -.´20¯24³32§$&Á—–ñôôåååúúúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïããã÷÷÷ÿÿÿÿÿÿÞÞÞíííÿÿÿòòòáááÿÿÿûûûÞÞÞÂÂÂïïïùùùàààÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþÿÿÿÿÿÿÿÿÿóóóßßßÿÿÿÿÿÿÿÿÿÙÍÎlEF‹dbäÙÖÿÿÿýÿÿýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÜÜܹ¹¹ÏÏÏÿÿÿÛÛÛúúúÿÿÿÿÿÿþþþÿÿÿÿÿÿÿÿÿøøøÛÛÛþÿÿÿüþ³›ž¶˜š§ëíëñð®“úùùÿÿÿýÿÿýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿøøøÌÌÌßßßÿÿÿÝÝÝöööÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿçççÂÂÂîîîþþþÿÿÿÿÿÿþþþÿÿÿÙÙÙûûûÿÿÿÿÿÿýÿÿÿÿÿäÝÛ¦89²01±23®33ª$(»‹ŒÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿäääêêêÿÿÿÿÿÿÞÞÞÚÚÚàààÈÈÈÈÈÈòòòÚÚÚüüüÿÿÿÿÿÿÿÿÿÿÿÿáÒÓ¡12³20°24²32§&(™™ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþÿÿÿÿÿÿþþþþþþÿÿÿâââïïïÿÿÿòòòáááÿÿÿþþþêê길¸ñññùùùàààÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿúúúÎÎÎÎÎÎöööõôôÜÛÛÿÿÿÿÿÿíéè‚Y[ȳ²«”’ŠeeÏÄÂÿÿþþÿÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿöööÚÚÚòòòÿÿÿÙÙÙúúúÿÿÿÿÿÿüüüÐÐÐÌÌÌòòòúúúÙÙÙþÿÿȸºÍÀÁìéèëèèëàáßÐÑéæå¸¢¤Ç¹·ÿþýÿÿÿýþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿúúúËËËôôôÿÿÿÚÚÚöööÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿäääÂÂÂäääÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÛÛÛüüüÿÿÿÿÿÿýÿÿÿÿÿäÝÛ¥78²01±23®32©#'»‹ŒÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿåååëëëÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿØØØüüüÿÿÿÿÿÿÿÿÿÿÿÿáÒÓ¡12³20°24²32§&(ššÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿãããïïïÿÿÿòòòáááÿÿÿÿÿÿííí»»»òòòùùùàààÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûûûÛÛÛÏÏÏñððóõõÜÝÝÿÿÿûþý‘st¶ššçåäêèé³’” }|µ´ýüûÿÿÿÿÿþýÿþþÿÿÿÿÿÿÿÿÿÿÿþÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÚÚÚúúúÿÿÿÿÿÿüüüÝÝÝÍÍÎëëëøùùÝÞÞëáᵟúùùýÿÿêèèìîîÚÔÕðëìÜÒÒ¼¡¢»²°ø÷÷ÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþÿÿÿþþþÿÿÿÜÜÜöööÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþïïï»»»åååúúúÝÝÝâââØØØðððÝÝÝüüüÿÿÿÿÿÿýÿÿÿÿÿäÝÛ¥78²01±23®32©#'»‹Œÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿåååëëëÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ×××üüüÿÿÿÿÿÿÿÿÿÿÿÿáÒÓ¡12³20°24²32§&(ššÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿâââîîîÿÿÿòòòáááÿÿÿÿÿÿçç窪ªëëëúúúàààÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿùùùðððîîîÖÖÖôóôÙæäÿÿÿ³—™”lpìââóóóüþþõíí …„°••Á¯®íìëþÿÿýÿþúþýûþýþþþÿþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÚÚÚùùùÿÿÿþþþûûûíîîññòÔÓÓôùùÙ××À©©ØÐÏÿÿÿÿÿÿïñðùùùéççãßßúö÷Ó¾À£‚‚ȽºÿÿÿÿþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÝÝÝöööÿÿÿþþþþþþþþþþþþþþþÿÿÿõõõÀÀÀìììæææ«««ÐÐОžžÝÝÝÚÚÚùùùÿÿþþþþüþþÿÿÿäÝÛ¥78²01±23®32©#'»Š‹ÿÿÿþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿàààéééÿÿÿþþþöööðððôôôúúúøøøÿÿÿÙÙÙüüüþþþþþþþþþÿÿÿáÒÔ¡12³20°24²32§&(ššÿÿÿþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿäääïïïÿÿÿòòòáááÿÿÿþþþûûûéééøøøøøøàààÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþÿÿÿúúúûüüñôòº¯®µšš…VXÕÁÂóóñôõõûúúþÿÿáÜÛš~μ»»ªªÐ¼¿óííþÿÿÿÿÿÿÿÿþÿþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿ×××ùùùÿÿÿþþþþþþÿÿÿûûüüüüøýüȾ§¦ðëêÿÿÿÿÿÿôõôùùùüúúãר²¢£ÏÄÂÍ´³KN×ÌËÿÿÿÿÿÿûÿþùÿþýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÙÙÙõõõÿÿÿþþþþþþþþþþþþþþþÿÿÿððð«««ÞÞÞùùù×××ðððÖÖÖñññÜÜÜúúúÿþþþþþüþþÿÿÿäÝÛ¥78²01±23®32©#'»Š‹ÿÿÿþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿäääëëëÿÿÿÿÿÿÁÁÁ¹¹¹ÒÒÒ­­­±±±åå娨ØúúúþþþþþþþþþÿÿÿáÒÔ¡12³20°24²32§&(ššÿÿÿþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿßßßíííÿÿÿòòòáááÿÿÿþþþþþþÿÿÿÿÿÿöööàààÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿõõõßßßàààáââð÷ôšy{„WZØÑÍÓÊÉÿÿÿâââõóóüÿÿÿÿÿÝÍϦ–”ñìëÕÅǹ£¦»£¦ÙÊÌëêéÿÿÿÿÿÿýÿÿþÿÿþþþþþþÿÿÿþþþÿÿÿÿÿÿÿÿÿþþþÿÿÿÿÿÿÛÛÛøøøÿÿÿþþþùùùàáááâããáâöùø±¨©¾§§ùöôÿÿÿÿÿÿäããðïïÿÿÿèÜݵ˜šŠbbƼ¹’[_q:<ÐÆÆôññÿÿÿÿÿÿÿÿÿþÿÿþþþþþþÿÿÿÿÿÿþþþÿÿÿþþþþþþþþþþþþÿÿÿÝÝÝöööÿÿÿþþþþþþþþþþþþþþþþþþÿÿÿîîîóóóþþþÿÿÿÿÿÿÿÿÿÿÿÿÛÛÛûûûþþþþþþüþþÿÿÿäÝÛ¥78²01±23®32ª#'»Š‹ÿÿÿþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿäääëëëÿÿÿÿÿÿÏÏÏÐÐÐÔÔÔ¯¯¯¶¶¶çççÚÚÚûûûþþþþþþþþþÿÿÿáÒÔ¡11³20°24²32§&(ššÿÿÿþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿáááíííÿÿÿòòòáááÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿöööàààÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüééé´´´çççõõöàäãþÿÿäØ×ÔÇÇûúùõòòõõõõöøö÷ù÷øù¦´žžÿÿÿùøøâÚÚ®°›€‚¸£¥ÎÂÃêääù÷÷ûûûúûûøùù÷øø÷÷÷öööööö÷÷÷ö÷÷øøøÖÖÖùùùÿÿÿþþþþþþêë붸¹àßßýþþº¯°µžìçæ÷ùùö÷÷õóóôôôõùùêâã±›šdb–}}©ˆˆwIHš}€¸Ÿ¢Å·¸×ÑÐéååõóóüüüüýýúûû÷øø÷÷÷ö÷÷öööööö÷ö÷÷ö÷øøøÙÙÙöööÿÿÿþþþþþþþþþþþþþþþþþþìììÓÓÓôôôþþþþþþþþþþþþÿÿÿÚÚÚûûûþþþþþþüþþÿÿÿäÝÛ¥78²01±23®32ª#'»Š‹ÿÿÿþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿãããêêêÿÿÿýýýþþþþþþþþþþþþþþþÿÿÿØØØüüüþþþþþþþþþÿÿÿàÒÔ¡11´20°24±32¦&(ššÿÿÿþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿãããîîîÿÿÿòòòáááÿÿÿóóóãããåååøøøøøøàààÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïï­­­èêêñï𶛞åäàÉ»ºâÙÛûúúÞÜÜëììõ÷÷÷ööøùúÛÒÑ€âØÖø÷øùùúúÿþùõõÞÖÖ¸¨©¦¬“–ʹºÛÓÓòððóòòôóô÷÷øöøù÷úú÷ùùø÷÷Ø××ùúúÿÿÿÿÿÿÿÿÿñòò­²±âááûûø³žœ¶™šÞÖÖ÷ùøøøøÝÞÞéééøùùÛ×ÖµœŸâÖÕpo®Žôóóîç貛ű³ÕÑÐÌ»½»¨ªµ©©ÎÁÂ×ÍÍëééõöõúþüúüûùøø÷ö÷öö÷÷÷÷ØÙÙôööÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿäääÁÁÁãããÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÚÚÚûûûÿÿÿÿÿÿûÿýÿÿÿæÜÝ¡99´10±33¶13¦%&Á‹Šÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿäääëëëÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþÿÿÿÿÿÿ×××üüüÿÿÿÿÿÿÿÿÿýÿÿÝÓФ/3µ02­25²33§'&ÁššÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿâââîîîÿÿÿòòòáááÿÿÿÚÚÚäääÞÞÞâââúúúàààÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿùùùØØØáââ÷ö÷rLO­åÚÙíæçÿÿÿíîîö÷÷ÿÿÿÿÿÿÿÿÿøø÷«ŒºŸ ÿÿÿüÿÿþþþùÿÿÿÿÿÿÿÿù÷÷ßÕÖ³´¶§¨ÌÀÁÓÃÄÕÄÅÔÈÈåÜÜåÞÞíèéüùúÜÙÚúùùÿÿÿÿÿÿþþþûûûÙØÙÚÜÜúüù‘uuºœÑÈÈÿÿÿÿÿÿìðïõõöÿÿÿÞ×Ö¹¤¦âÕÖ–vxÿþýýÿÿúÿÿüýü̽¿¼ª«äßßúûúïëëâÚÛ͹¼Â«­¿®°Ä²³ØÌÌïíëúù÷ÿÿÿÿÿÿâááôööÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿëëë¶¶¶ßßßþþþ÷÷÷ùùùùùùÿÿÿÜÜÜþþþÿÿÿÿÿÿþÿÿÿÿÿêßÞ¦76¸/-°20³11¡%$ÂŒŠÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèèèëëëÿÿÿÿÿÿþþþýýý÷÷÷øøøùùùÿÿÿÚÚÚÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿàÕÓ¡/1·/0²11¶2.«%$›šÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿæææïïïÿÿÿòòòáááÿÿÿÜÜÜüüüòòòâââúúúàààÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûûûàààÜÜÜôóôõùúµ ¡‰abéÜÛâÚÛÿÿÿòöõúúúþÿþÿÿÿÿÿÿøõô‹ih¾¥¥ÿÿÿûÿÿÿÿÿýþþþþÿþÿÿÿÿÿÿÿÿÿÿÿ÷ööãÝÞÒÆÆÎÁÀÔÍËëæäÜÙØÍÄÆÉ¿Á¯ª«üüüÿÿÿÿÿÿüüüâââÞÜÜïññúÿþº§©¥ˆ‰´¢¡öóñþÿþóöõ÷ùùÿÿÿʺ»Î¿§ª×ÊÌÿÿÿúþÿýþÿþÿÿÿÿÿëéêÌÃÄ÷ôõÿÿÿüÿÿÿÿÿýÿÿöóòéÞßÙÍͽµ³ÔÉÈ÷¶·ªªº´µøøøÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñññ¶¶¶àààþþþÆÆÆÞÞÞ¹¹¹ãããÙÙÙåååêêêêéêæééíííÔÌÊŒ:9¢22 55 24“&)±‚ëììêêêééééééêêêëëëëëëëëëêêêêêêéééêêêêêêêêêÓÓÓêêêÿÿÿÿÿÿÿÿÿ÷÷÷ÇÇÇÚÚÚ¸¸¸çççÕÕÕæææéééêêêêéêíìíÎÃÂ25¦24¤44œ42—()³ŽëììëëëéééêêêëëëëëëêêêëëëêêêêêêêêêêêêêêêêêêÓÓÓïïïÿÿÿòòòáááÿÿÿáááÕÕÕÔÔÔëëëúúúàààÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüððð»»»íìíñôõãê竳™š×ÌÎÿüýÞááòóóþÿÿþÿÿÿÿÿ¾­®š}}úùøúþþÿÿÿýÿÿÿþÿÿþÿþÿÿýÿÿþÿÿýÿÿÿÿÿÿÿÿÿÿÿûúûóòòúüüÿÿÿÿÿÿÿÿÿÙ××øùøÿÿÿÿÿÿýýýòòò»½½èææöúúßâ㽩©ž€²±ÿÿÿâââîòòòïﺥ§Ï½¾½ª«þÿÿþþÿüÿþüþÿûþÿþýÿýÿÿÿÿÿûýýýÿÿÿÿÿýþþüÿþþÿÿúÿÿüÿÿÿÿÿüûüñìîæàáÀ¹ºøõöÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿööö°°°ßßßýýýÆÆÆîîîµµµáááØØØãããèèèéèèåèçãàâÝàáÛÎÐÜÏÎÚÓÐä×Öæ××äààçèèáááãããäääâââßßßààààààåååèèèèèèèèèèèèéééÓÓÓëëëÿÿÿÿÿÿÿÿÿ÷÷÷ÉÉÉêêê´´´æææÖÖÖäääèèèççççæçááâÙßÝÞÏÍÕÑÏßÒÓÞØ×ä×ÖÚáßâèèáááçççàààÞÞÞÖÖÖàààæææèèèèèèèèèèèèèèèéééÑÑÑïïïÿÿÿòòòáááÿÿÿÿÿÿþþþýýýÿÿÿöööàààÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿööößßßÜÜÜáááðððÞãâùôô”tx¸£¡ôðîøüüûüüûþýÿÿÿÕÈÊ“{}ôððÿÿÿýÿÿÿÿÿþÿÿÿÿÿþÿÿþÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿýÿÿÿÿÿÛÚÚùùùÿÿÿÿÿÿøøøÞÞÞÚÛÛÞÜÜòòóÛÞÞøöö®””¨„ƒà×ÔüþþýþþÁ´µÁ©©·¡¡öôôÿÿÿÿÿÿþÿÿüÿÿÿþÿþÿÿÿÿÿÿþþÿþÿÿÿÿÿÿÿýÿÿýÿÿÿÿþÿþþþþÿüÿÿýÿÿÿÿÿÿÿÿáààöõõÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿôôôÅÅÅîîîÿÿÿùùùÿÿÿøøøÿÿÿÝÝÝþþþÿÿÿÿÿÿÿÿÿÐÍÎ×ÚÛ¸¼½ºÀÀ»ÁÀô÷÷êííßááþþþÖÖÖÏÏÏâââÎÎν½½¼¼¼ºººìììÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèèèìììÿÿÿÿÿÿÿÿÿþþþúúúÿÿÿøøøþþþÜÜÜÿÿÿÿÿÿÿÿÿÿÿÿÎÍÍØÙØ¾º»¾¾¿ÃÃÅõúûæéêãääùùùÎÎÎìììÅÅŹ¹¹ÀÀÀÊÊÊÒÒÒÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿæææïïïÿÿÿòòòáááÿÿÿúúúôôôÿÿÿÿÿÿöööàààÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþÿÿÿÿÿÿÿÿÿôóóÚÛÛÿÿÿâÔØhh͹·ðìîò÷öÿÿÿÛÏѪ™šôññÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ×××ùùùÿÿÿÿÿÿýýýÿÿÿÿÿÿÿÿÿùøøØØØÿÿÿèàßš}{¯–•çßßÔÈʼ¤§µ  îçæÿÿÿÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÙÚÚõõõÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþüüüùùùþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÚÚÚûûûÿÿÿÿÿÿóóóÉÉÉÙÙØêêêñññîíîûûûüüüõõõüüüßßßãããìììðððìììàààèèèúúúþþþÿÿÿÿÿÿÿÿÿÿÿÿåååìììÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÚÚÚüüüÿÿÿÿÿÿòòòÇÇÇÚÚÚéêêñññîîîüûûùùù÷÷÷öööÓÓÓüüüÞÞÞáááïïïìììñññþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿãããîîîÿÿÿòòòáááÿÿÿòòò¿¿¿ÉÉÉïïïùùùàààÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþÿÿÿÿÿÿóôôßßßüÿÿÿÿÿÏÁÁŒ^aŸ¸ûþýÕÂÆº«­úùøÿÿÿýþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÛÛÛùùùÿÿÿÿÿÿÿÿÿþþþþþþþþþùùùÛÛÛÿÿÿÿÿÿÙÓÑž}«‹°™›» £äÝÝýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÝÝÝöööÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÙÙÙûûûÿÿÿÿÿÿôôôàààèèèïïïÛÛÛÑÑÑëëëççç÷÷÷úúúùùùþþþêêêüüüÿÿÿÿÿÿÿÿÿÿÿÿþþþÿÿÿÿÿÿÿÿÿÿÿÿåååëëëÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÚÚÚüüüÿÿÿþþþóóóàààéééíííÚÚÚÒÒÒëëëçççùùùùùù÷÷÷úúúêêêýýýÿÿÿÿÿÿÿÿÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿãããïïïÿÿÿòòòáááÿÿÿöööÌÌÌÇÇÇïïïùùùàààÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñôôàÜÜþÿÿüÿÿÿÿÿªª”yxÀ¯°Ð¼ÀÿÿÿüÿÿþÿÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÙÙÙúúúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿùùùÙÙÙÿÿÿýÿÿÿÿÿÒÄÄ¢…„¦ŒŒäÝÝÿÿÿüþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÛÛÛöööÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÛÛÛüüüÿÿÿÿÿÿää䯯ÆÊÊÊÀÀÀººººººÀÀÀ¹¹¹íííãããÛÛÛùùù¹¹¹öööÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿæææìììÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÛÛÛüüüÿÿÿÿÿÿßßßÉÉÉÉÉɽ½½¿¿¿ºººÀÀÀ¹¹¹ñññßßßáááååå®®®õõõÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿáááïïïÿÿÿòòòáááÿÿÿÿÿÿèèèÄÄÄóóóøøøàààÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñòòÜÚÚÿÿÿþÿÿÿýþÿÿÿ¶¤¤ØÌÍÿÿÿþþÿþþþûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþÿÿÿÿÿÿÿÿÿþþþÿÿÿÿÿÿÿÿÿ×××ùùùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿøøø×××ÿÿÿÿÿÿþþÿÿÿÿ¿´³ÜÕÔÿÿÿûýþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþÿÿÿÿÿÿÿÿÿØØØõõõÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÙÙÙûûûÿÿÿÿÿÿîîîäääþþþ÷÷÷üüü÷÷÷êêêçççþþþþþþþþþÿÿÿèèèüüüþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿäääëëëÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþØØØûûûÿÿÿÿÿÿëëëçççþþþøøøüüü÷÷÷èèèéééÿÿÿþþþþþþøøøáááýýýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÜÜÜìììÿÿÿòòòáááÿÿÿÿÿÿïïï°°°îîîùùùàààÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿø÷÷ÑÑÑÙÙÙÚÚÚØØØØØØÚÜÜÛÝÝÙÙØ×××ÛÛÛÚÚÚØØØØØØÚÚÚÚÚÚØØØØØØÚÚÚÚÚÚÖÖÖØØØÚÚÚÚÚÚ×××ØØØÚÚÚÚÚÚÖÖÖÙÙÙÚÚÚÙÙÙÒÒÒûûûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûûûÒÒÒÙÙÙÚÚÚÙÙÙרØÚÛÛÚÛÛØØØ×××ÚÚÚÚÚÚØØØ×××ÚÚÚÚÚÚ×××ØØØÚÚÚÚÚÚØØØØØØÚÚÚÚÚÚ×××ØØØÚÚÚÚÚÚ×××ÙÙÙÚÚÚÙÙÙÐÐÐùùùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÜÜÜÕÕÕÛÛÛÚÚÚÛÛÛÝÝÝÛÛÛÜÜÜÛÛÛÜÜÜÜÜÜÜÜÜÚÚÚÛÛÛÛÛÛÚÚÚÞÞÞÛÛÛÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÑÑÑñññÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþýýýÚÚÚ×××ÚÚÚÚÚÚÜÜÜÝÝÝÛÛÛÜÜÜÛÛÛÛÛÛÝÝÝÝÝÝÚÚÚÛÛÛÚÚÚÛÛÛÞÞÞÛÛÛÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÑÑÑõõõÿÿÿòòòáááÿÿÿÿÿÿééé°°°ìììúúúàààÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþÿÿÿýýýýýýýýýýýýþþþýýýýýýýýýýýýýýýýýýýýýýýýþþþýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüüüýýýýýýüüüÿÿÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþýýýýýýýýýýýýþþþþþþþþþýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýÿÿÿþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþýýýÿÿÿÿÿÿÿÿÿòòòáááÿÿÿÿÿÿïïï´´´ìììúúúàààÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿòòòáááÿÿÿÿÿÿååå²²²ñññùùùàààÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþûûûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿòòòáááÿÿÿöööÆÆÆÅÅÅïïïùùùàààÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþüüüçççþþþïïïæææéééèèèîîîïïïóóóüüüÂÂÂêêêëëëëëëñññëëëîîîöööþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþýýýÿÿÿíííîîîñññêêêëëëõõõïïïêêêéééíííñññÞÞÞÄÄÄàààôôôêêêìììñññòòòïïïêêêóóóûûûþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿòòòáááÿÿÿüüüÿÿÿùùù÷÷÷÷÷÷ßßßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþüüü­­­óóóÌÌ̲²²¶¶¶¬¬¬°°°¤¤¤ÑÑÑûûûÀÀÀ¹¹¹©©©ÁÁÁ´´´¿¿¿³³³ÚÚÚÿÿÿþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿååå¿¿¿ñññÁÁÁ­­­¹¹¹ÀÀÀÓÓÓ¶¶¶¸¸¸®®®ÅÅÅ´´´³³³¶¶¶ÈÈÈ···«««¼¼¼¹¹¹²²²²²²³³³ôôôÿÿÿþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿòòòãããÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿùùùßßßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþ±±±¾¾¾±±±ÙÙÙéééãããâââàààáááýýýÚÚÚÞÞÞÁÁÁèèèØØØËËËãããòòòÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÝÝÝÂÂÂëëëÛÛÛâââÕÕÕÛÛÛÙÙÙÒÒÒØØØãããäääåååÙÙÙÙÙÙÙÙÙÕÕÕâââÛÛÛÚÚÚÚÚÚÓÓÓßßßûûûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿõõõÏÏÏßßßßßßßßßßßßßßßØØØÝÝÝÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüÛÛÛååååååûûûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþéééÿÿÿÿÿÿýýýÿÿÿÿÿÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþäääÝÝÝøøøÿÿÿÿÿÿÿÿÿüüüòòòÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿùùùõõõÿÿÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþöööóóóõõõõõõõõõôôôóóóûûûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿªªªÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ»»»ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ»»»ÿÿÿÿÿÿªªªˆˆˆ»»»ªªªªªª£££»»»ÝÝݪªª»»»™™™»»»www»»»»»»ÝÝݪªªªªª»»»ÿÿÿ»»»ÿÿÿˆˆˆ™™™wwwîîªˆˆˆÝÝݪªªwww»»»»»»»»»ÿÿÿUUUÝÝÝÿÿÿªªª»»»»»»ÌÌÌ»»»™™™»»»wwwUUU»»»™™™»»»ÿÿÿ»»»£££ªªªªªª»»»ˆˆˆÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ»»»»»»ˆˆˆÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ»»»»»»ˆˆˆÿÿÿÿÿÿÿÿÿÿÿÿ»»»ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ™™™™™™ÝÝÝÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ»»»»»»ªªª»»»»»»»»»ˆˆˆ»»»£££»»»ÝÝÝ»»»»»»™™™»»»fffˆˆˆ£££ÝÝݪªª™™™www»»»ÝÝÝÿÿÿˆˆˆÌÌÌÿÿÿ»»»»»»»»»ÝÝݪªªwww»»»»»»ˆˆˆ£££ÝÝ݈ˆˆÿÿÿ»»»ÌÌÌ»»»ÝÝÝwww™™™»»»fffUUU»»»™™™www»»»ÝÝÝ£££ªªª»»»ÏÏϪªªÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿîîîwwwwwwÝÝÝ»»»ªªªfffÿÿÿwwwªªªªªªÝÝÝÝÝݪªªwww»»»™™™»»»ÝÝÝÿÿÿÝÝݪªªwww»»»ÝÝݪªª™™™ŠŠŠ™™™ªªª£££ÿÿÿ»»»»»»™™™ªªª¿¿¿ˆˆˆÌÌÌÝÝÝ™™™»»»£££ÿÿÿ™™™ªªª»»»ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ»»»»»»ªªªÿÿÿÿÿÿ»»»ÿÿÿÿÿÿ»»»ÌÌÌÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ»»»ÌÌÌÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ»»»»»»™™™ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ»»»ÌÌÌ»»»ÿÿÿÿÿÿÿÿÿÿÿÿªªª»»»ªªªÌÌÌÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ»»»ÿÿÿÿÿÿÌÌÌÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ™™™ÌÌÌÌÌÌ™™™™™™ªªªÝÝÝ}}}ÝÝÝ™™™™™™ÿÿÿÝÝÝ»»»www»»»™™™www™™™ÌÌÌÏÏÏ»»»www»»»±±±ªªªˆˆˆŠŠŠ™™™ªªª£££ªªªªªª»»»™™™»»»ÌÌ̈ˆˆîîîÿÿÿ™™™ªªª£££»»»ªªªªªª»»»ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ»»»ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ»»»ÿÿÿÿÿÿÌÌÌÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿDDDÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ™™™333DDDDDDÌÌÌÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ™™™333DDDDDDÌÌÌÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿDDDÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÝÝÝwwwÿÿÿÿÿÿÌÌÌDDDÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÝÝÝwwwÿÿÿÿÿÿÌÌÌDDDÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿDDDÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿDDDÿÿÿÿÿÿîîîfff333DDDwwwÿÿÿÿÿÿDDDÿÿÿÿÿÿªªªDDDDDDUUUÌÌÌÿÿÿwww333DDDÌÌÌwww333DDDÌÌÌDDDÿÿÿÿÿÿwww333DDDfffîîîÿÿÿDDDÿÿÿÿÿÿÿÿÿDDDÿÿÿîîîfff333333™™™wwwÿÿÿDDDÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÌÌÌUUU333DDDUUUÌÌÌÿÿÿÿÿÿDDDÿÿÿÿÿÿîîîfff333333™™™wwwÿÿÿDDDwwwDDD333fffîîîÿÿÿDDDÿÿÿÿÿÿÿÿÿDDDÿÿÿDDDÿÿÿÿÿÿˆˆˆDDDDDDDDDÌÌÌÌÌÌ333333wwwÿÿÿÿÿÿÿÿÿÿÿÿDDDDDDwwwÿÿÿwww333333wwwwwwÿÿÿDDDÿÿÿÿÿÿÿÿÿDDDÿÿÿÿÿÿwww333333wwwDDDÿÿÿÿÿÿÌÌÌ333DDDwwwwwwÿÿÿwww333333wwwwwwÿÿÿÿÿÿwww333333wwwDDDÿÿÿÿÿÿªªªDDDDDDUUUÌÌÌÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿDDDÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿDDDÿÿÿÿÿÿfff™™™ÿÿÿÿÿÿwww™™™ÿÿÿDDDÿÿÿÝÝÝfffÿÿÿÿÿÿîîîwwwÿÿÿfffÿÿÿîîîDDDfffÿÿÿîîîDDDDDDÿÿÿ™™™fffÿÿÿÿÿÿ»»»fffÿÿÿDDDÿÿÿÿÿÿÿÿÿDDDÿÿÿfff™™™ÿÿÿÿÿÿfffDDDÿÿÿDDDÿÿÿÿÿÿÿÿÿÿÿÿÌÌÌDDDÝÝÝÿÿÿÿÿÿÝÝÝDDDÌÌÌÿÿÿDDDÿÿÿÿÿÿfff™™™ÿÿÿÿÿÿfffDDDÿÿÿDDDˆˆˆÿÿÿÿÿÿ™™™fffÿÿÿDDDÿÿÿÿÿÿÿÿÿDDDÿÿÿDDDÿÿÿªªªfffÿÿÿÿÿÿÌÌÌfff™™™»»»ÿÿÿ333ÿÿÿÿÿÿÿÿÿÿÿÿDDDÿÿÿÿÿÿÿÿÿ™™™fffÿÿÿÿÿÿ™™™ÿÿÿDDDÿÿÿÿÿÿÿÿÿDDDÿÿÿ™™™fffÿÿÿÿÿÿ™™™ÿÿÿÿÿÿDDDîîîÿÿÿˆˆˆDDD™™™fffÿÿÿÿÿÿ™™™ÿÿÿ™™™fffÿÿÿÿÿÿ™™™ÿÿÿÝÝÝfffÿÿÿÿÿÿîîîwwwÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿDDDÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿDDDÿÿÿÿÿÿ333ÿÿÿÿÿÿÿÿÿîîîDDDÿÿÿDDDÿÿÿwww333DDDDDDDDDDDDÌÌÌÿÿÿîîîwwwwwwÿÿÿîîîwwwwwwDDDÿÿÿDDDîîîÿÿÿÿÿÿÿÿÿ333ÿÿÿDDDÿÿÿÿÿÿÿÿÿDDDÿÿÿ333ÿÿÿÿÿÿÿÿÿîîîDDDÿÿÿDDDÿÿÿÿÿÿÿÿÿÿÿÿUUUÝÝÝÿÿÿÿÿÿÿÿÿÿÿÿÝÝÝUUUÿÿÿDDDÿÿÿÿÿÿ333ÿÿÿÿÿÿÿÿÿîîîDDDÿÿÿUUUÿÿÿÿÿÿÿÿÿÿÿÿ333ÿÿÿDDDÿÿÿÿÿÿÿÿÿDDDÿÿÿDDDÿÿÿUUUîîîÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ»»»DDDÿÿÿÿÿÿÿÿÿÿÿÿDDDÿÿÿÿÿÿÿÿÿDDDîîîÿÿÿÿÿÿÿÿÿ333ÿÿÿDDDÿÿÿÿÿÿÿÿÿDDDÿÿÿDDDîîîÿÿÿÿÿÿÿÿÿ333ÿÿÿÿÿÿDDDÿÿÿÿÿÿÿÿÿDDDDDDîîîÿÿÿÿÿÿÿÿÿ333ÿÿÿDDDîîîÿÿÿÿÿÿÿÿÿ333ÿÿÿwww333DDDDDDDDDDDDÌÌÌÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿDDDDDDDDDîîîÿÿÿDDDÿÿÿÿÿÿ333ÿÿÿÿÿÿÿÿÿîîîDDDÿÿÿDDDÿÿÿwwwªªªÿÿÿÿÿÿÿÿÿfffÝÝÝ™™™DDDªªªÿÿÿ™™™DDDªªªÿÿÿDDDÿÿÿDDDîîîÿÿÿÿÿÿÿÿÿ333ÿÿÿDDDÿÿÿÿÿÿÿÿÿDDDÿÿÿ333ÿÿÿÿÿÿÿÿÿîîîDDDÿÿÿDDDÿÿÿÿÿÿÿÿÿÿÿÿDDDÿÿÿÿÿÿDDDDDDDDDDDDDDDÿÿÿDDDÿÿÿÿÿÿ333ÿÿÿÿÿÿÿÿÿîîîDDDÿÿÿfffÿÿÿÿÿÿÿÿÿÿÿÿ333ÿÿÿDDDÿÿÿÿÿÿÿÿÿDDDÿÿÿDDDÿÿÿDDDîîîÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿfffwwwîîîÿÿÿÿÿÿÿÿÿÿÿÿDDDÿÿÿÿÿÿÿÿÿDDDîîîÿÿÿÿÿÿÿÿÿ333ÿÿÿDDDÿÿÿÿÿÿÿÿÿDDDÿÿÿDDDîîîÿÿÿÿÿÿÿÿÿ333ÿÿÿÿÿÿDDDÿÿÿÿÿÿÿÿÿDDDDDDîîîÿÿÿÿÿÿÿÿÿ333ÿÿÿDDDîîîÿÿÿÿÿÿÿÿÿ333ÿÿÿwwwªªªÿÿÿÿÿÿÿÿÿfffÝÝÝÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿDDDÿÿÿÿÿÿ»»»fffÿÿÿîîîÿÿÿfffªªªÿÿÿÿÿÿwww™™™ÿÿÿDDDÿÿÿÌÌÌ333îîîÿÿÿÌÌÌDDDÿÿÿDDDÿÿÿ™™™ÌÌÌDDDÿÿÿ™™™ÌÌÌDDDÿÿÿ™™™wwwÿÿÿÿÿÿªªªfffÿÿÿîîîÿÿÿ»»»wwwÿÿÿfff™™™ÿÿÿÿÿÿwwwDDDÿÿÿDDDÿÿÿÿÿÿÿÿÿÿÿÿDDDÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿîîîÿÿÿfff™™™ÿÿÿÿÿÿwwwDDDÿÿÿDDDˆˆˆÿÿÿÿÿÿ™™™fffÿÿÿDDD»»»ÿÿÿîîîDDDÿÿÿDDDÿÿÿªªªfffÿÿÿÿÿÿ™™™fffÿÿÿDDDÿÿÿwwwÿÿÿÿÿÿÿÿÿÿÿÿDDDÿÿÿÿÿÿÿÿÿ™™™fffÿÿÿÿÿÿ™™™ÿÿÿDDD»»»ÿÿÿîîîDDDÿÿÿ™™™wwwÿÿÿÿÿÿªªªÿÿÿÿÿÿDDDÿÿÿÿÿÿÿÿÿDDD™™™fffÿÿÿÿÿÿ™™™ÿÿÿ™™™wwwÿÿÿÿÿÿªªªÿÿÿÌÌÌ333îîîÿÿÿÌÌÌDDDÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿDDDÿÿÿÿÿÿÿÿÿDDDÿÿÿ333UUUÿÿÿîîîfff333333wwwÿÿÿDDDDDDÿÿÿªªª333DDDUUUîîîÿÿÿªªªDDDUUUÿÿÿªªªDDDUUUÿÿÿ™™™ÿÿÿÿÿÿwww333333fffîîîÿÿÿDDDfffDDDDDDîîîÿÿÿîîîfff333333™™™DDDÿÿÿDDDÿÿÿÿÿÿÿÿÿÿÿÿUUUÝÝÝÿÿÿÿÿÿÿÿÿÿÿÿÌÌÌ»»»ÿÿÿDDDUUUÌÌÌîîîfff333333™™™DDDÿÿÿwww™™™DDD333fffîîîÿÿÿDDDwwwDDD333ÌÌÌÿÿÿ™™™ÿÿÿÿÿÿˆˆˆ333DDDfffîîîÿÿÿwww333ªªªÿÿÿÿÿÿÿÿÿÿÿÿDDDÿÿÿÿÿÿÿÿÿÿÿÿwww333333wwwDDDÿÿÿDDDˆˆˆDDD333ÌÌÌÿÿÿÿÿÿwwwDDD333wwwwwwÿÿÿÿÿÿDDDÿÿÿÿÿÿÿÿÿDDDÿÿÿwww333333wwwDDDÿÿÿÿÿÿwwwDDD333wwwwwwÿÿÿÿÿÿªªª333DDDUUUîîîÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿDDDÿÿÿÿÿÿ»»»fffÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿDDDÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÌÌÌÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿDDDÿÿÿÿÿÿÿÿÿÿÿÿÌÌÌDDDÝÝÝÿÿÿÿÿÿÌÌÌ"""îîîÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿDDDÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÌÌÌÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿDDDÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿDDDDDDDDDîîîÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿwwwDDDÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿDDDÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿDDDÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÌÌÌUUUDDDDDDUUUÝÝÝÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿDDDÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿDDDÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿDDDÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ; ; ; ; Modified BSD License ; ; ; ; Copyright (C) 2009 GLE. ; ; ; ; Redistribution and use in source and binary forms, with or without ; ; modification, are permitted provided that the following conditions ; ; are met: ; ; ; ; 1. Redistributions of source code must retain the above copyright ; ; notice, this list of conditions and the following disclaimer. ; ; ; ; 2. Redistributions in binary form must reproduce the above ; ; copyright notice, this list of conditions and the following ; ; disclaimer in the documentation and/or other materials provided with ; ; the distribution. ; ; ; ; 3. The name of the author may not be used to endorse or promote ; ; products derived from this software without specific prior written ; ; permission. ; ; ; ; THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ; ; IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ; ; WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ; ; ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ; ; DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ; ; DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ; ; GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ; ; INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ; ; IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ; ; OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ; ; IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ; ; ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; HM NIS Edit Wizard helper defines !define PRODUCT_NAME "GLE" !define PRODUCT_VERSION "${GLE_VERSION}" !define PRODUCT_PUBLISHER "GLE" !define PRODUCT_WEB_SITE "http://www.gle-graphics.org/" !define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\gle.exe" !define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" !define PRODUCT_UNINST_ROOT_KEY "HKLM" SetCompressor lzma ; MUI 1.67 compatible ------ !include "MUI.nsh" !include "AddToPath.nsi" ; MUI Settings !define MUI_ABORTWARNING !define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\modern-install.ico" !define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\modern-uninstall.ico" !define MUI_HEADERIMAGE !define MUI_HEADERIMAGE_RIGHT !define MUI_HEADERIMAGE_BITMAP "banner_image.bmp" !define MUI_HEADERIMAGE_BITMAP_NOSTRETCH !define MUI_WELCOMEFINISHPAGE_BITMAP_NOSTRETCH !define MUI_WELCOMEFINISHPAGE_BITMAP "welcome_image.bmp" ; Welcome page !insertmacro MUI_PAGE_WELCOME ; License page !insertmacro MUI_PAGE_LICENSE "..\..\..\LICENSE.txt" ; Directory page !insertmacro MUI_PAGE_DIRECTORY ; Instfiles page !insertmacro MUI_PAGE_INSTFILES ; Finish page !define MUI_FINISHPAGE_SHOWREADME "$INSTDIR\readme-win32.txt" !insertmacro MUI_PAGE_FINISH ; Uninstaller pages !insertmacro MUI_UNPAGE_INSTFILES ; Language files !insertmacro MUI_LANGUAGE "English" ; Reserve files !insertmacro MUI_RESERVEFILE_INSTALLOPTIONS ; MUI end ------ Name "${PRODUCT_NAME} ${PRODUCT_VERSION}" OutFile "${OUTPUT_FILENAME}" InstallDir "$PROGRAMFILES\Gle4" InstallDirRegKey HKLM "${PRODUCT_DIR_REGKEY}" "" ShowInstDetails show ShowUnInstDetails show RequestExecutionLevel admin !define $GLEINST 0 Section "MainSection" SEC01 SetShellVarContext all ; Previous installation of GLE found? ReadRegStr $0 HKLM "${PRODUCT_DIR_REGKEY}" "" StrCmp $0 "" GLENotRegistered CopyFiles /silent "$0/glerc" "$INSTDIR\glerc.old" GLENotRegistered: ; Is previous installation of GLE in same directory as currunt one? Push 0 Pop $0 IfFileExists $INSTDIR\glerc 0 GLENotExists IntOp $0 $0 + 1 ; Start with the installation GLENotExists: SetOutPath "$INSTDIR\bin" SetOverwrite try File "gle.exe.manifest" File /oname=qgle.exe.manifest "gle.exe.manifest" File "..\..\..\build\bin\*.*" File "C:\cygwin\mingw\bin\mingwm10.dll" File "C:\cygwin\mingw\bin\libgcc_s_dw2-1.dll" File "C:\cygwin\mingw\bin\libstdc++-6.dll" File "C:\Program Files\Debugging Tools for Windows (x86)\dbghelp.dll" SetOutPath "$INSTDIR\font" File /r "..\..\..\build\font\*.*" SetOutPath "$INSTDIR\doc" File "..\..\..\build\doc\*.*" SetOutPath "$INSTDIR\gleinc" File /r "..\..\..\build\gleinc\*.*" SetOutPath "$INSTDIR\samples" File "..\..\..\..\gle-www\examples\2dsimple\*.gle" File "..\..\..\..\gle-www\examples\2dsimple\*.dat" File "..\..\..\..\gle-www\examples\2dsimple\*.csv" File "..\..\..\..\gle-www\examples\diagrams\shapes.gle" File "..\..\..\src\samples\qgle_keyboard.gle" SetOutPath "$INSTDIR" File "..\..\..\build\glerc" File "..\..\..\build\inittex.ini" File "..\..\..\build\init.tex" File "..\..\..\README*.*" File "..\..\..\LICENSE*.*" File "www.ico" File /oname=readme-win32.txt "..\..\..\platform\readme.win32" SetShellVarContext current CreateDirectory "$DOCUMENTS\GLE" CopyFiles "$INSTDIR\samples" "$DOCUMENTS\GLE\samples" SetOutPath "$DOCUMENTS\GLE\samples" CreateDirectory "$SMPROGRAMS\GLE" CreateShortCut "$SMPROGRAMS\GLE\Command Prompt.lnk" "%SystemRoot%\system32\cmd.exe" CreateShortCut "$SMPROGRAMS\GLE\GLE Previewer.lnk" "$INSTDIR\bin\qgle.exe" SetShellVarContext all SetOutPath "%SystemRoot%" CreateDirectory "$SMPROGRAMS\GLE" CreateShortCut "$SMPROGRAMS\GLE\Command Prompt.lnk" "%SystemRoot%\system32\cmd.exe" CreateShortCut "$SMPROGRAMS\GLE\GLE Previewer.lnk" "$INSTDIR\bin\qgle.exe" SetOutPath "$INSTDIR" IntCmp $0 0 NotYetInst DoneIsInst DoneIsInst NotYetInst: Push "$INSTDIR\bin" Call AddToPath MessageBox MB_OK "The directory $INSTDIR\bin has been added to your system path." DoneIsInst: Exec "$INSTDIR\bin\qgle.exe -finddeps '$INSTDIR\glerc.old'" !define Index "Line${__LINE__}" ReadRegStr $1 HKCR ".gle" "" StrCmp $1 "" "${Index}-NoBackup" StrCmp $1 "GLEFile" "${Index}-NoBackup" WriteRegStr HKCR ".gle" "backup_val" $1 "${Index}-NoBackup:" WriteRegStr HKCR ".gle" "" "GLEFile" WriteRegStr HKCR "GLEFile" "" "GLE Script" WriteRegStr HKCR "GLEFile\DefaultIcon" "" "$INSTDIR\bin\qgle.exe,0" WriteRegStr HKCR "GLEFile\shell\open\command" "" '$INSTDIR\bin\qgle.exe "%1"' WriteRegStr HKCR "GLEFile\shell\edit" "" "Edit GLE Script" WriteRegStr HKCR "GLEFile\shell\edit\command" "" '$INSTDIR\bin\qgle.exe "%1"' System::Call 'Shell32::SHChangeNotify(i 0x8000000, i 0, i 0, i 0)' !undef Index SectionEnd Section -AdditionalIcons WriteIniStr "$INSTDIR\${PRODUCT_NAME}.url" "InternetShortcut" "URL" "${PRODUCT_WEB_SITE}" WriteIniStr "$INSTDIR\Tutorial.url" "InternetShortcut" "URL" "http://www.gle-graphics.org/tut/windows.html" CreateShortCut "$SMPROGRAMS\GLE\Readme.lnk" "$INSTDIR\readme-win32.txt" CreateShortCut "$SMPROGRAMS\GLE\Website.lnk" "$INSTDIR\${PRODUCT_NAME}.url" "" "$INSTDIR\www.ico" CreateShortCut "$SMPROGRAMS\GLE\Tutorial.lnk" "$INSTDIR\Tutorial.url" "" "$INSTDIR\www.ico" CreateShortCut "$SMPROGRAMS\GLE\Uninstall.lnk" "$INSTDIR\uninst.exe" SectionEnd Section -Post WriteUninstaller "$INSTDIR\uninst.exe" WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "" "$INSTDIR" WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "$(^Name)" WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\uninst.exe" WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}" WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "URLInfoAbout" "${PRODUCT_WEB_SITE}" WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "Publisher" "${PRODUCT_PUBLISHER}" SectionEnd Function un.onUninstSuccess HideWindow MessageBox MB_ICONINFORMATION|MB_OK "$(^Name) was successfully removed from your computer." FunctionEnd Function un.onInit MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "Are you sure you want to completely remove $(^Name) and all of its components?" IDYES +2 Abort FunctionEnd Section Uninstall Delete "$INSTDIR\*.url" Delete "$INSTDIR\*.ico" Delete "$INSTDIR\uninst.exe" Delete "$INSTDIR\glerc" Delete "$INSTDIR\README*.*" Delete "$INSTDIR\LICENSE*.*" Delete "$INSTDIR\inittex.ini" Delete "$INSTDIR\init.tex" Delete "$INSTDIR\font\*.*" Delete "$INSTDIR\samples\*.*" Delete "$INSTDIR\lib\*.*" Delete "$INSTDIR\gleinc\*.*" Delete "$INSTDIR\gleinc\contrib\*.*" Delete "$INSTDIR\bin\*.*" Delete "$SMPROGRAMS\GLE\Uninstall.lnk" Delete "$SMPROGRAMS\GLE\Website.lnk" Delete "$SMPROGRAMS\GLE\Tutorial.lnk" Delete "$SMPROGRAMS\GLE\Readme.lnk" Delete "$SMPROGRAMS\GLE\GLE Previewer.lnk" Delete "$SMPROGRAMS\GLE\Command Prompt.lnk" RMDir "$SMPROGRAMS\GLE" RMDir "$INSTDIR\font" RMDir "$INSTDIR\bin" RMDir "$INSTDIR\samples" RMDir "$INSTDIR\lib" RMDir "$INSTDIR\gleinc\contrib" RMDir "$INSTDIR\gleinc" RMDir "$INSTDIR" DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" DeleteRegKey HKLM "${PRODUCT_DIR_REGKEY}" Push "$INSTDIR\bin" Call un.RemoveFromPath SetAutoClose true SectionEnd gle-graphics-4.2.4c/contrib/editors/highlighting/vim/syntax/gle.vim0000775000000000000000000000515711405446017024131 0ustar rootroot"TITLE=GLE " " This file is provided as a default syntax file for gle syntax clear syntax case ignore "#DELIMITER=,(){}[]-+*%/="'~!&|\<>?:;. "#QUOTATION1=' "#QUOTATION2=" "#CONTINUE_QUOTE=n "#LINECOMMENT=! "#ESCAPE=\ "#KEYWORD=reserved words "syn keyword gleText text contained "syn match gleString /text .*/ms=s+5 contains=gleText syn region gleString matchgroup=gleText start="text " end="$" keepend "contains=Text "/^[ \t]*text .*/ms=s+5 syn match Comment /!.*/ syn keyword gleStatement add aline amove arc arcto asetpos arrow both arrow end arrow start bar begin bevel syn keyword gleStatement bezier bigfile bigfile box butt cap center circle clip closepath color color syn keyword gleStatement col command curve dashlen data define dist dpoints dsubticks dticks ellipse syn keyword gleStatement elliptical_arc elliptical_narc else end if err errdown errright errup errwidth syn keyword gleStatement fill fill font font fontlwidth for from fullsize grestore grid gsave hei syn keyword gleStatement herr herrleft herrwidth hscale if include join just justify left let line syn keyword gleStatement log lstyle lstyle lwidth lwidth marker marker max mdata min mitre msize syn keyword gleStatement name narc next nobox nobox nofirst nolast nomiss nticks off offset origin syn keyword gleStatement path pos postscript psbbtweak pscomment rad radius rbezier restoredefaults return reverse syn keyword gleStatement right rline rmove rotate round save scale sep set shift size smooth syn keyword gleStatement smoothm square step step stroke svg_smooth table then tiff title tl syn keyword gleStatement to to translate vscale width width write xg xmax xmin xpos yg ymax ymin syn keyword gleStatement ypos d1 d2 d3 d4 d5 d6 d7 d8 d9 d10 d11 d12 d13 d14 d15 d16 d17 d18 d19 syn keyword gleStatement d20 d21 d22 d23 d24 d25 d26 d27 d28 d29 d30 d31 d32 d33 d34 d35 d36 d37 syn keyword gleStatement d38 d39 d40 d41 d42 d43 d44 d45 d46 d47 d48 d49 d50 d51 d52 d53 d54 d55 syn keyword gleStatement d56 d57 d58 d59 d60 d61 d62 d63 d64 d65 d66 d67 d68 d69 d70 d71 d72 d73 syn keyword gleStatement d74 d75 d76 d77 d78 d79 d80 d81 d82 d83 d84 d85 d86 d87 d88 d89 d90 d91 syn keyword gleStatement d92 d93 d94 d95 d96 d97 d98 d99 xaxis xlabels xnames xplaces xside syn keyword gleStatement xsubticks xticks xtitle x2axis x2labels x2names x2places x2side x2subticks syn keyword gleStatement x2ticks x2title yaxis ylabels ynames yplaces yside ysubticks yticks ytitle syn keyword gleStatement graph key rotate sub y2axis y2labels y2names y2places y2side y2subticks syn keyword gleStatement y2ticks y2title hi link gleStatement Statement hi link gleString String hi link gleText Statement gle-graphics-4.2.4c/contrib/editors/highlighting/vim/indent/gle.vim0000775000000000000000000000134411405446017024056 0ustar rootrootsetlocal indentexpr=GetGLEIndent() setlocal nolisp setlocal smartindent setlocal autoindent setlocal indentkeys+=end if exists("*GetGLEIndent") | finish endif function GetGLEIndent() " Find a non-blank line above the current line. let lnum = prevnonblank(v:lnum - 1) " At the start of the file use zero indent. if lnum == 0 | return 0 endif let ind = indent(lnum) let line = getline(lnum) " last line let cline = getline(v:lnum) " current line " Add a 'shiftwidth' after beginning of environments. if line =~ 'begin \(.*\)' let ind = ind + &sw endif " Subtract a 'shiftwidth' when an environment ends if cline =~ '\s*end ' let ind = ind - &sw endif return ind endfunction gle-graphics-4.2.4c/contrib/editors/highlighting/vim/ftplugin/gle.vim0000775000000000000000000000025111405446017024421 0ustar rootroot" TITLE=GLE " " File type plugin for GLE: handles % matching with " matchit.vim let b:match_words = '\:\,\:\' gle-graphics-4.2.4c/contrib/editors/highlighting/gle-emacs.el0000664000000000000000000002155311405446017022676 0ustar rootroot;;; gle-mode.el --- major mode for editing .gle files ;; Installation: ;; Put this file somewhere in your load-path (e.g. /usr/share/emacs/site-lisp) ;; Add the following to your ~/.emacs file: ;; (autoload 'gle-mode "gle-mode") ;; (add-to-list 'auto-mode-alist '("\\.gle\\'" . gle-mode)) ;; gle-mode will now be called whenever a .gle file is opened, or by executing ;; M-x gle-mode ;; Copyright: ;; 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, or (at your option) ;; any later version. ;; This file 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 GNU Emacs; see the file COPYING. If not, write to ;; the Free Software Foundation, Inc., 59 Temple Place - Suite 330, ;; Boston, MA 02111-1307, USA. ;; To done (a.k.a. Version History): ;; 0.2.1: Then "adapted" it some more so that it worked! ;; 0.2.0: Shamelessly "adapted" some of Kai Nordlund's code to allow Emacs ;; to call GLE inline :-) ;; 0.1.5: Regexps cleaned up after suggestions by Stefan Monnier, also ;; Installation instructions trimmed a little. ;; 0.1.0: First ever public version! God it's ugly :-( ;; To do: ;; Some more regexps to tidy ;; Create some automatic indentification (require 'lmenu) ;; Begin gle-mode (defvar gle-mode-syntax-table (let ((st (make-syntax-table))) (modify-syntax-entry ?! "<" st) (modify-syntax-entry ?\n ">" st) st) "Syntax table for `gle-mode'.") (defvar gle-font-lock-keywords `((,(concat "\\<" (regexp-opt '("begin" "start" "both" "end" "define" "for" "to" "next" "if" "then" "else" "include" "postscript" "bigfile" "data" "fullsize" "let" "set") t) "\\>") (0 font-lock-keyword-face)) (,(concat "\\<" (regexp-opt '("sub") t) "\\>") (0 font-lock-function-name-face)) (,(concat "\\<" (regexp-opt '("aline" "rline" "line" "amove" "rmove" "arc" "arcto" "bezier" "circle" "closepath" "curve" "ellipse" "ellipse_arc" "ellipse_narc" "grestore" "gsave" "join" "rbezier" "reverse" "save" "text" "write" "bar" "size" "title" "xaxis" "yaxis" "x2axis" "y2axis" "hscale" "vscale" "xlabels" "ylabels" "x2labels" "y2labels" "xnames" "ynames" "x2names" "y2names" "xplaces" "yplaces" "x2places" "y2places" "xside" "yside" "x2side" "y2side" "xticks" "yticks" "xsubticks" "ysubticks" "x2subticks" "y2subticks" "xtitle" "ytitle" "x2title" "y2title") t) "\\>") (0 font-lock-constant-face)) (,(concat "\\<" (regexp-opt '("width" "err" "herr" "errwidth" "herrwidth" "errup" "herrup" "errdown" "herrdown" "hei" "color" "dashlen" "font" "fontlwidth" "just" "add" "nobox" "name" "arrow" "stroke" "fill" "justify" "cap" "lstyle" "lwidth" "from" "dist" "key" "xmin" "ymin" "xmax" "ymax" "nomiss" "smooth" "smoothm" "dsubticks" "dpoints" "nticks" "dticks" "font" "shift" "offset" "position" "marker" "msize" "mscale" "ignore") t) "\\>") (0 font-lock-variable-name-face)) (,(concat "\\<" (regexp-opt '("box" "clip" "origin" "path" "marker" "rotate" "scale" "table" "text" "translate") t) "\\>") (0 font-lock-string-face)) (,(concat "\\<" (regexp-opt '("butt" "round" "square" "mitre" "bevel" "left" "center" "right" "[tcblr]{2}" "on" "off" "grid" "log" "nofirst" "nolast") t) "\\>") (0 font-lock-builtin-face)) (,(concat "\\<" (regexp-opt '("time\\$" "date\\$") t) "\\>") (0 font-lock-string-face)) ("\\s *@\\w+" (0 font-lock-function-name-face)) ("\\b\\(left\\$\\)\\s *(" (1 font-lock-string-face)) ("\\b\\(right\\$\\)\\s *(" (1 font-lock-string-face)) ("\\b\\(seg\\$\\)\\s *(" (1 font-lock-string-face)) ("\\b\\(num1?\\$\\)\\s *(" (1 font-lock-string-face)) ("\\b\\(val\\)\\s *(" (1 font-lock-string-face)) ("\\b\\(pos\\)\\s *(" (1 font-lock-string-face)) ("\\b\\(len\\)\\s *(" (1 font-lock-string-face)) ("\\b\\(abs\\)\\s *(" (1 font-lock-function-name-face)) ("\\b\\(a?cosh\\)\\s *(" (1 font-lock-function-name-face)) ("\\b\\(cos\\)\\s *(" (1 font-lock-function-name-face)) ("\\b\\(a?coth?\\)\\s *(" (1 font-lock-function-name-face)) ("\\b\\(a?csch?\\)\\s *(" (1 font-lock-function-name-face)) ("\\b\\(a?sech?\\)\\s *(" (1 font-lock-function-name-face)) ("\\b\\(a?sinh\\)\\s *(" (1 font-lock-function-name-face)) ("\\b\\(sin\\)\\s *(" (1 font-lock-function-name-face)) ("\\b\\(atn\\)\\s *(" (1 font-lock-function-name-face)) ("\\b\\(a?tanh\\)\\s *(" (1 font-lock-function-name-face)) ("\\b\\(tan\\)\\s *(" (1 font-lock-function-name-face)) ("\\b\\(exp\\)\\s *(" (1 font-lock-function-name-face)) ("\\b\\(fix\\)\\s *(" (1 font-lock-function-name-face)) ("\\b\\(int\\)\\s *(" (1 font-lock-function-name-face)) ("\\b\\(log\\)\\s *(" (1 font-lock-function-name-face)) ("\\b\\(log10\\)\\s *(" (1 font-lock-function-name-face)) ("\\b\\(sgn\\)\\s *(" (1 font-lock-function-name-face)) ("\\b\\(sqrt?\\)\\s *(" (1 font-lock-function-name-face)) ("\\b\\(todeg\\)\\s *(" (1 font-lock-function-name-face)) ("\\b\\(torad\\)\\s *(" (1 font-lock-function-name-face)) ("\\b\\(not\\)\\s *(" (1 font-lock-function-name-face)) ("\\b\\(rnd\\)\\s *(" (1 font-lock-function-name-face)) ("\\b\\([xy]end\\)\\s *(\\s *)" (1 font-lock-function-name-face)) ("\\b\\([xy]pos\\)\\s *(\\s *)" (1 font-lock-function-name-face)) ("\\b\\([xy]g\\)\\s *(" (1 font-lock-function-name-face)) ("\\b\\(twidth\\)\\s *(" (1 font-lock-function-name-face)) ("\\b\\(theight\\)\\s *(" (1 font-lock-function-name-face)) ("\\b\\(tdepth\\)\\s *(" (1 font-lock-function-name-face)) ) "Keyword highlighting specification for `gle-mode'.") (defun gle-create-postscript () "Creates eps file from current gle file" (interactive) (save-buffer) (let ((file (file-name-nondirectory buffer-file-name))) (shell-command (concat "gle -d eps " file ))) ) (defun gle-view-postscript () "Create and view Postscript from current gle file" (interactive) (save-buffer) (let ((file (file-name-nondirectory buffer-file-name))) (shell-command (concat "gle -d eps " file ))) (shell-command (concat "gv " (file-name-sans-extension (buffer-file-name)) ".eps" )) (delete-file (concat (file-name-sans-extension (buffer-file-name)) ".eps")) ) (defun gle-view-png () (interactive) (save-buffer) (let ((file (file-name-nondirectory buffer-file-name))) (shell-command (concat "gle -d eps " file ))) (shell-command "convert emacsgle.eps emacsgle.png") (shell-command "xv emacsgle.png") (shell-command "rm emacsgle.eps emacsgle.png") ) (defun gle-write-standard-graph () "Command writes out gle commands for drawing a simple graph" (interactive) (insert "size 26 19\n") (insert "set lwidth 0.06\nset hei 0.5\nset font psh\n") (insert "begin graph\n nobox\n") (insert " \n") (insert " data file.gle d1\n") (insert " \n") (insert " d1 marker dot msize 0.7\n") (insert " d1 line lstyle 1 key \"\"\n") (insert " \n") (insert " key hei 0.6 nobox\n") (insert " \n") (insert " !yaxis min 0 max 10 ! log\n") (insert " !xaxis min 0 max 10 ! log\n") (insert " \n") (insert " xtitle \"\" dist 0.3 hei 0.6\n") (insert " ytitle \"\" dist 0.3 hei 0.6\n") (insert " ! x2title \"\"\n") (insert " \n") (insert "end graph\n") ) (define-derived-mode gle-mode fundamental-mode "GLE" "A major mode for editing .gle files." (set (make-local-variable 'comment-start) "! ") (set (make-local-variable 'comment-start-skip) "!+\\s-*") (set (make-local-variable 'font-lock-defaults) '(gle-font-lock-keywords)) (run-hooks 'gle-mode-hook) ) (define-key gle-mode-map [menu-bar gle-mode] (cons "GLE" (make-sparse-keymap "GLE"))) (define-key gle-mode-map [menu-bar gle-mode gle-write-standard-graph] '("Write graph" . gle-write-standard-graph)) (define-key gle-mode-map [menu-bar gle-mode separator-gle-mode-2] '("--------------------")) (define-key gle-mode-map [menu-bar gle-mode gle-create-postscript] '("Create ps file" . gle-create-postscript)) (define-key gle-mode-map [menu-bar gle-mode separator-gle-mode-1] '("--------------------")) (define-key gle-mode-map [menu-bar gle-mode gle-view-png] '("View png file" . gle-view-png)) (define-key gle-mode-map [menu-bar gle-mode gle-view-postscript] '("View ps file" . gle-view-postscript)) (define-key gle-mode-map "\C-c\C-p" 'gle-create-postscript) (define-key gle-mode-map "\C-c\C-v" 'gle-view-postscript) (define-key gle-mode-map "\C-c\C-x" 'gle-view-x) (define-key gle-mode-map "\C-c\C-b" 'gle-write-basic-commands) (provide 'gle-mode) ;; End gle-mode gle-graphics-4.2.4c/contrib/editors/highlighting/gle.stx0000644000000000000000000001227311405446017022023 0ustar rootroot#TITLE=GLE ; ; ; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ; ! ! ; ! GLE - Graphics Layout Engine ! ; ! ! ; ! Modified BSD License ! ; ! ! ; ! Copyright (C) 2009 GLE. ! ; ! ! ; ! Redistribution and use in source and binary forms, with or without ! ; ! modification, are permitted provided that the following conditions ! ; ! are met: ! ; ! ! ; ! 1. Redistributions of source code must retain the above copyright ! ; ! notice, this list of conditions and the following disclaimer. ! ; ! ! ; ! 2. Redistributions in binary form must reproduce the above ! ; ! copyright notice, this list of conditions and the following ! ; ! disclaimer in the documentation and/or other materials provided with ! ; ! the distribution. ! ; ! ! ; ! 3. The name of the author may not be used to endorse or promote ! ; ! products derived from this software without specific prior written ! ; ! permission. ! ; ! ! ; ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ; ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ; ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ; ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ; ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ; ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ; ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ; ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ; ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ; ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ; ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ; ! ! ; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ; ; This file is provided as a default syntax file for gle ; origninated by Vincent LaBella -- feel free to modify ; but notify me if you do vlabella@comp.uark.edu ; #DELIMITER=,(){}[]-+*%/="'~!&|\<>?:;. #QUOTATION1=' #QUOTATION2=" #CONTINUE_QUOTE=n #LINECOMMENT=! #LINECOMMENT2= #COMMENTON= #COMMENTOFF= #COMMENTON2= #COMMENTOFF2= #ESCAPE=\ #CASE= #PREFIX1= #PREFIX2= #PREFIX3= #PREFIX4= #PREFIX5= #SUFFIX1= #SUFFIX2= #SUFFIX3= #SUFFIX4= #SUFFIX5= ; Reserved words #KEYWORD=reserved words ;graph commands add aline amove arc arcto arrow both arrow end arrow start bar begin bevel bezier bigfile bigfile box butt cap center circle clip closepath color color col command curve dashlen data define dist dpoints dsubticks dticks ellipse elliptical_arc elliptical_narc else end if err errdown errright errup errwidth fill fill font font fontlwidth for from fullsize grestore grid gsave hei herr herrleft herrwidth hscale if include join just justify left let line log lstyle lstyle lwidth lwidth marker marker max mdata min mitre msize name narc next nobox nobox nofirst nolast nomiss nticks off offset origin path pos postscript psbbtweak pscomment rad radius rbezier return reverse right rline rmove rotate round save scale sep set shift size smooth smoothm square step step stroke svg_smooth table text then tiff title tl to to translate vscale width width write xg xmax xmin xpos yg ymax ymin ypos d1 d2 d3 d4 d5 d6 d7 d8 d9 d10 d11 d12 d13 d14 d15 d16 d17 d18 d19 d20 d21 d22 d23 d24 d25 d26 d27 d28 d29 d30 d31 d32 d33 d34 d35 d36 d37 d38 d39 d40 d41 d42 d43 d44 d45 d46 d47 d48 d49 d50 d51 d52 d53 d54 d55 d56 d57 d58 d59 d60 d61 d62 d63 d64 d65 d66 d67 d68 d69 d70 d71 d72 d73 d74 d75 d76 d77 d78 d79 d80 d81 d82 d83 d84 d85 d86 d87 d88 d89 d90 d91 d92 d93 d94 d95 d96 d97 d98 d99 #KEYWORD=xaxis commands xaxis xlabels xnames xplaces xside xsubticks xticks xtitle #KEYWORD=x2 axis commands x2axis x2labels x2names x2places x2side x2subticks x2ticks x2title #KEYWORD=yaxis commands yaxis ylabels ynames yplaces yside ysubticks yticks ytitle #KEYWORD=y2axis commands graph key rotate sub y2axis y2labels y2names y2places y2side y2subticks y2ticks y2title gle-graphics-4.2.4c/contrib/editors/highlighting/gle.nedit0000664000000000000000000001072211405446017022307 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! Syntax highlighting patterns for GLE ! "The graphics language for creating complex diagrams from simple scripts" ! ! INSTALLATION ! ! Load this pattern by starting nedit with: ! ! nedit -import gle.nedit ! ! Then, check that the patterns were loaded correctly, and choose Save Defaults ! from the Preferences menu. The new patterns will now be incorporated into ! your own .nedit file, so the next time you start NEdit, you will no longer ! need to use -import. ! ! This file is maintained by: Jan Struyf ! ! These comments will not appear in your ~/.nedit ! nedit.highlightPatterns: GLE:1:0{\n\ Linecomment:"!":"$"::Comment::\n\ String:"""":""""::String::\n\ Keywords:"<(?:add|arc|arcto|[ar]line|[ar]move|arrow|bar|begin|bevel|bezier|bigfile|both|box|butt|cap|center|circle|clip|closepath|color|command|curve|dashlen|data|define|dist|dpoints|dsubticks|dticks|ellipse|elliptical_arc|elliptical_narc|else|end|err|errdown|errright|errup|errwidth|fill|font|fontlwidth|for|from|fullsize|graph|grestore|grid|gsave|hei|herr|herrleft|herrwidth|hscale|if|include|join|just|justify|key|left|let|line|log|lstyle|lwidth|marker|max|mdata|min|mitre|msize|name|narc|next|nobox|nofirst|nolast|nomiss|nticks|off|offset|origin|path|pos|postscript|psbbtweak|pscomment|rad|radius|rbezier|return|reverse|right|rline|rmove|rotate|round|save|scale|sep|separator|set|shift|size|smooth|smoothm|square|start|step|stroke|sub|svg_smooth|table|text|then|tiff|title|to|translate|vscale|width|write|[xy]2*axis|[xy]2*g|[xy]2*labels|[xy]2*max|[xy]2*min|[xy]2*names|[xy]2*places|[xy]2*pos|[xy]2*side|[xy]2*subticks|[xy]2*ticks|[xy]2*title)>":::Keyword::\n\ Keywords:"<(?:d[0-9]+)>":::Storage Type::\n\ Float:"<(\\d)*\\.?(\\d)*(\\d[eE][+-]?\\d+)?>":::Numeric Const::\n\ } nedit.languageModes: GLE:.gle::Auto:::3: gle-graphics-4.2.4c/gle-refman/title/title.tex0000644000000000000000000001352011653605577017750 0ustar rootroot%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % GLE - Graphics Layout Engine % % % % Modified BSD License % % % % Copyright (C) 2009 GLE. % % % % Redistribution and use in source and binary forms, with or without % % modification, are permitted provided that the following conditions % % are met: % % % % 1. Redistributions of source code must retain the above copyright % % notice, this list of conditions and the following disclaimer. % % % % 2. Redistributions in binary form must reproduce the above % % copyright notice, this list of conditions and the following % % disclaimer in the documentation and/or other materials provided with % % the distribution. % % % % 3. The name of the author may not be used to endorse or promote % % products derived from this software without specific prior written % % permission. % % % % THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR % % IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED % % WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE % % ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY % % DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL % % DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE % % GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS % % INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER % % IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR % % OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN % % IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \thispagestyle{empty} \begin{center} \includegraphics{title/glelogo} {\Huge Graphics Layout Engine} \vspace{1cm} {\huge GLE \gleversion{}} \vspace{1cm} {\huge User Manual} \vspace{1cm} C. Pugmire, St.M. Mundt, V.P. LaBella, J. Struyf \vspace{1cm} \url{http://www.gle-graphics.org/} \vfill \today{} \end{center} \pagenumbering{roman} \tableofcontents \chapter{Preface} \section*{Abstract} GLE (Graphics Layout Engine) is a graphics scripting language designed for creating publication quality graphs, plots, diagrams, figures and slides. GLE supports various graph types (function plots, histograms, bar graphs, scatter plots, contour lines, color maps, surface plots, ...) through a simple but flexible set of graphing commands. More complex output can be created by relying on GLE's scripting language, which is full featured with subroutines, variables, and logic control. GLE relies on \LaTeX{} for text output and supports mathematical formulea in graphs and figures. GLE's output formats include EPS, PS, PDF, JPEG, and PNG. GLE is licenced under the BSD license. QGLE, the GLE user interface, is licenced under the GPL license. \subsection*{Trademark Acknowledgements} The following trademarks are used in this manual. \begin{tabular}{ll} % {p{7cm}} {Windows} & Microsoft Corporation.\\ {\TeX} & Donald E. Knuth, A Typesetting System.\\ {\LaTeX} & Leslie Lamport, A Document Preparation System.\\ {PostScript} & Page Description Language, Adobe Systems Inc.\\ \end{tabular} \subsection*{Typographic Conventions} The following conventions will be used in command descriptions: \begin{tabular}{lp{10cm}} {\sf [option]} & Specifies an optional keyword or parameter, the brackets should not be typed.\\ {\sf option1 $\mid$ option2} & Pick one of the options listed.\\ {\sf keyword} & Keywords are represented in a bold typewriter font.\\ {\it exp,x,y,x1,y1} & Represent numbers or expressions. E.g. 2.2 or 2*5. Parameters to be entered by the user are given in italics. \end{tabular} \subsection*{Pathways} For those in a hurry: \begin{enumerate} \item Read Chapter~\ref{tut:chap}, The GLE Tutorial (beginners only). \item Examine the examples at \url{http://www.gle-graphics.org/examples/}. \item Browse through Chapter~\ref{graph:chap}, The Graph Module. \end{enumerate} For those with time: \begin{itemize} \item {\bf Chapter~\ref{tut:chap}, GLE Tutorial:}\\ Covers installation and drawing a simple graph, highly recommended if you have never used GLE before. \item {\bf Chapter~\ref{prim:chap}, GLE Primitives:}\\ Describes the commands used for creating diagrams and slides and for annotating graphs. \item {\bf Chapter~\ref{graph:chap}, The Graph Module:}\\ Describes the commands for drawing graphs. \item {\bf Chapter~\ref{key:chap}, The Key Module:}\\ Describes the commands for producing keys for graphs. \item {\bf Chapter~\ref{adv:chap}, Advanced Features of GLE:}\\ Covers advanced features of GLE. This includes programming constructs, the \LaTeX{} interface, $\ldots$ \item {\bf Chapter~\ref{surf:chap}, Surface and Contour Plots:}\\ Describes the commands for drawing three-dimensional graphs. \item {\bf Chapter~\ref{util:chap}, GLE Utilities:}\\ Describes FITLS and MANIP. \end{itemize} gle-graphics-4.2.4c/gle-refman/title/sm_special.tex0000644000000000000000000001137411405447072020740 0ustar rootroot%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % GLE - Graphics Layout Engine % % % % Modified BSD License % % % % Copyright (C) 2009 GLE. % % % % Redistribution and use in source and binary forms, with or without % % modification, are permitted provided that the following conditions % % are met: % % % % 1. Redistributions of source code must retain the above copyright % % notice, this list of conditions and the following disclaimer. % % % % 2. Redistributions in binary form must reproduce the above % % copyright notice, this list of conditions and the following % % disclaimer in the documentation and/or other materials provided with % % the distribution. % % % % 3. The name of the author may not be used to endorse or promote % % products derived from this software without specific prior written % % permission. % % % % THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR % % IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED % % WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE % % ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY % % DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL % % DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE % % GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS % % INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER % % IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR % % OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN % % IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \usepackage{ifpdf} \ifpdf \usepackage[pdftex]{graphics} \usepackage[pdftex]{geometry} \pdfinfo{ /Title (GLE User Manual) /Author (C. Pugmire, St.M. Mundt, V.P. LaBella, J. Struyf) } \else \usepackage[dvips]{graphics} \usepackage[dvips]{geometry} \fi % Put include packages here (before hyperref!!!) \usepackage{makeidx} \usepackage{cmd} \usepackage{supertabular} \usepackage{fancyvrb} \usepackage{rotating} \usepackage{color} \ifpdf \usepackage[ pdfpagelabels=true, plainpages=false, colorlinks=true, breaklinks=true, linktocpage=true, pdfstartview=FitV, linkcolor=black, citecolor=black, urlcolor=black ]{hyperref} \newcommand{\myaddtoc}[1]{\phantomsection{}\addcontentsline{toc}{chapter}{#1}} \else \usepackage{url} \newcommand{\myaddtoc}[1]{} \newcommand{\texorpdfstring}[2]{#1} \fi % Correctly defines pdf bounding box \geometry{% a4paper, left = 2.5cm, right = 2.5cm, top = 2.5cm, bottom = 2.5cm, % Note centering requires recent version of geometry centering } %\pagestyle{headings} \sloppy \setlength{\parindent}{0in} % \setlength{\topmargin}{-2.0cm} % \setlength{\textwidth}{15.0cm} % \setlength{\textheight}{22.6cm} % \setlength{\oddsidemargin}{1.5cm}%{0.0cm}%{1.5cm} % \setlength{\evensidemargin}{-.5cm}%{1.5cm}%{-.5cm} % \setlength{\footskip}{1.0cm} % \setcounter{totalnumber}{5} %vgl. wonneberger s.73 + kopka \renewcommand{\floatpagefraction}{.25} %vgl. wonneberger s.73 figure & table \renewcommand{\dblfloatpagefraction}{.25} % auf einer seite % %\makeglossary % %-------------- sm --------- \psgraphin mit dvips \newcommand{\psgraphin}[4]{ \begin{center} \unitlength1.0cm \begin{picture}(#2,#3) \unitlength1.0cm %%fclipon %%fxsize=#2cm \put(0.0,0.0){ \includegraphics{#1}} %%\put(#2,0.0){\makebox(0,0)[tl]{ {\tt{\small $ \verb+ #1+ $ }} }} \addtocontents{lof}{#4} \end{picture} % %%\begin{figure}[hbt] %%\vspace*{-.5cm} %%\caption[#4]{#4} %%\end{figure} % \end{center} } \fvset{baselinestretch=1} \fvset{fontsize=\small} \fvset{fontshape=n} \newcommand{\preglecode}{} \newcommand{\postglecode}{} \newcommand{\preglegraph}{\vspace{3mm}} \newcommand{\postglegraph}{\vspace{3mm}} gle-graphics-4.2.4c/gle-refman/title/Makefile.os20000664000000000000000000000535611405447072020246 0ustar rootroot######################################################################## # # # GLE - Graphics Layout Engine # # # # Modified BSD License # # # # Copyright (C) 2009 GLE. # # # # Redistribution and use in source and binary forms, with or without # # modification, are permitted provided that the following conditions # # are met: # # # # 1. Redistributions of source code must retain the above copyright # # notice, this list of conditions and the following disclaimer. # # # # 2. Redistributions in binary form must reproduce the above # # copyright notice, this list of conditions and the following # # disclaimer in the documentation and/or other materials provided with # # the distribution. # # # # 3. The name of the author may not be used to endorse or promote # # products derived from this software without specific prior written # # permission. # # # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR # # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY # # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE # # GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER # # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN # # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # # ######################################################################## EPSS = glelogo.eps all: $(EPSS) %.eps: %.gle gle -d eps $< clean: rm -rf *.eps *.pdf *.inc gle-graphics-4.2.4c/gle-refman/title/Makefile.gcc0000664000000000000000000000547011405447072020274 0ustar rootroot######################################################################## # # # GLE - Graphics Layout Engine # # # # Modified BSD License # # # # Copyright (C) 2009 GLE. # # # # Redistribution and use in source and binary forms, with or without # # modification, are permitted provided that the following conditions # # are met: # # # # 1. Redistributions of source code must retain the above copyright # # notice, this list of conditions and the following disclaimer. # # # # 2. Redistributions in binary form must reproduce the above # # copyright notice, this list of conditions and the following # # disclaimer in the documentation and/or other materials provided with # # the distribution. # # # # 3. The name of the author may not be used to endorse or promote # # products derived from this software without specific prior written # # permission. # # # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR # # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY # # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE # # GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER # # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN # # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # # ######################################################################## EPSS = glelogo.pdf ifeq ($(RUNBUILD),1) GLE = ../../build/bin/gle else GLE = gle endif all: $(EPSS) %.pdf: %.gle $(GLE) -d pdf $< clean: rm -rf *.eps *.pdf *.inc gle-graphics-4.2.4c/gle-refman/title/glelogo.gle0000664000000000000000000000717311635410612020217 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! GLE logo for web page ! by: V.P. LaBella vlabella@albany.edu ! psbbtweak size 12 6 set font psagb name$="Professional Graphics Language" dx=12 dy=6 boxw=dx/7 boxh=dy amove 0 0 set color white box dx dy fill white sub draw_box dx dy clr$ gsave set color clr$ box dx dy fill clr$ grestore end sub amove dx/2 dy/2+0.5 set just cc begin clip ! Save default clipping region begin path clip ! Set up the clipping region set hei 6.0 text GLE end path amove 0 0 @draw_box boxw boxh red rmove boxw 0 @draw_box boxw boxh orange rmove boxw 0 @draw_box boxw boxh yellow rmove boxw 0 @draw_box boxw boxh lime rmove boxw 0 @draw_box boxw boxh blue rmove boxw 0 @draw_box boxw boxh navy rmove boxw 0 @draw_box boxw boxh violet rmove boxw 0 gsave set hei 0.67 delta=0.8 amove dx/2 dy-delta set color black for i=1 to 10 write name$ rmove 0.0 -delta next i grestore end clip ! ! version number ! amove 9.4 1.8 gsave set hei 1.0 set just bl set color gray40 text v4.2 grestore gle-graphics-4.2.4c/gle-refman/Makefile.os20000664000000000000000000000675311405447072017127 0ustar rootroot######################################################################## # # # GLE - Graphics Layout Engine # # # # Modified BSD License # # # # Copyright (C) 2009 GLE. # # # # Redistribution and use in source and binary forms, with or without # # modification, are permitted provided that the following conditions # # are met: # # # # 1. Redistributions of source code must retain the above copyright # # notice, this list of conditions and the following disclaimer. # # # # 2. Redistributions in binary form must reproduce the above # # copyright notice, this list of conditions and the following # # disclaimer in the documentation and/or other materials provided with # # the distribution. # # # # 3. The name of the author may not be used to endorse or promote # # products derived from this software without specific prior written # # permission. # # # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR # # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY # # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE # # GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER # # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN # # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # # ######################################################################## all: fig pdf fig: make -C title -f Makefile.os2 make -C tutorial/fig -f Makefile.os2 make -C primitives/fig -f Makefile.os2 make -C graph/fig -f Makefile.os2 make -C key/fig -f Makefile.os2 make -C advanced/fig -f Makefile.os2 make -C utilities/fig -f Makefile.os2 make -C appendix/fig -f Makefile.os2 pdf: vlatex gle-manual.tex index: vmakeindex gle-manual clean: rm -rf *.pdf *.idx *.aux *.dvi *.log *.out *.ilg *.ind *.toc make -C title -f Makefile.os2 clean make -C tutorial/fig -f Makefile.os2 clean make -C primitives/fig -f Makefile.os2 clean make -C graph/fig -f Makefile.os2 clean make -C key/fig -f Makefile.os2 clean make -C advanced/fig -f Makefile.os2 clean make -C utilities/fig -f Makefile.os2 clean make -C appendix/fig -f Makefile.os2 clean # PDFS = $(addsuffix .pdf, $(basename $(EPSS))) # %.pdf: %.eps # epstopdf $< gle-graphics-4.2.4c/gle-refman/primitives/fig/gc_nonzero.gle0000644000000000000000000000771611635412054022554 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! size 12 3 box scale .5 .5 amove 9 9 set just left hei .7 set hei 1.2 set lwidth .1 gsave translate -2 -13.5 begin path fill gray10 amove 5 19 aline 5 14 aline 11 14 aline 11 19 closepath amove 6 18 aline 10 18 aline 10 15 aline 6 15 closepath end path amove 5 19 aline 5 14 arrow end aline 11 14 arrow end aline 11 19 arrow end aline 5 19 arrow end amove 6 18 aline 10 18 arrow end aline 10 15 arrow end aline 6 15 arrow end aline 6 18 arrow end amove 3 16 aline 13 16 arrow end set hei .7 just center amove 4 16.5 text 0 amove 5.5 16.5 text 1 amove 7 16.5 text 0 amove 10.5 16.5 text 1 amove 12 16.5 text 0 grestore ! second one translate 9 -5.5 begin path fill gray10 amove 5 11 aline 5 6 aline 11 6 aline 11 11 aline 5 11 amove 6 10 aline 6 7 aline 10 7 aline 10 10 aline 6 10 end path amove 5 11 aline 5 6 arrow end aline 11 6 arrow end aline 11 11 arrow end aline 5 11 arrow end amove 6 10 aline 6 7 arrow end aline 10 7 arrow end aline 10 10 arrow end aline 6 10 arrow end set lwidth 0 amove 3 8 aline 13 8 arrow end set hei .7 just center amove 4 8.5 text 0 amove 5.5 8.5 text 1 amove 7 8.5 text 2 amove 10.5 8.5 text 1 amove 12 8.5 text 0 gle-graphics-4.2.4c/gle-refman/primitives/fig/gc_arc.gle0000644000000000000000000000542311405447072021623 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! size 7 3 box 6 3 begin origin amove 0.5 0.5 rline 1 0.5 arrow end set lwidth 0.1 arc 1 10 160 arc 0.5 -90 0 end origin gle-graphics-4.2.4c/gle-refman/primitives/fig/Makefile.os20000664000000000000000000000600611405447072022056 0ustar rootroot######################################################################## # # # GLE - Graphics Layout Engine # # # # Modified BSD License # # # # Copyright (C) 2009 GLE. # # # # Redistribution and use in source and binary forms, with or without # # modification, are permitted provided that the following conditions # # are met: # # # # 1. Redistributions of source code must retain the above copyright # # notice, this list of conditions and the following disclaimer. # # # # 2. Redistributions in binary form must reproduce the above # # copyright notice, this list of conditions and the following # # disclaimer in the documentation and/or other materials provided with # # the distribution. # # # # 3. The name of the author may not be used to endorse or promote # # products derived from this software without specific prior written # # permission. # # # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR # # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY # # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE # # GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER # # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN # # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # # ######################################################################## EPSS = gc_arc.eps gc_arcto.eps gc_beginbox.eps gc_bezier.eps gc_cap.eps gc_color.eps \ gc_curve.eps gc_fontlwidth.eps gc_for.eps gc_justify.eps gc_ljoin.eps gc_lstyle.eps \ gc_marker.eps gc_nonzero.eps gc_rot1.eps gc_rot2.eps gc_table.eps gc_text.eps \ gc_write.eps gc_xend.eps all: $(EPSS) %.eps: %.gle gle -d eps $< clean: rm -rf *.eps *.pdf *.inc gle-graphics-4.2.4c/gle-refman/primitives/fig/gc_ljoin.gle0000644000000000000000000000563611405447072022177 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! size 12 3 box set hei .3 set lwidth .4 set join mitre amove 3 2.5 rline -2 -1 rline 2 -1 rmove -1 1 text join mitre set join round amove 6 2.5 rline -2 -1 rline 2 -1 rmove -1 1 text join round set join bevel amove 9 2.5 rline -2 -1 rline 2 -1 rmove -1 1 text join bevel gle-graphics-4.2.4c/gle-refman/primitives/fig/gc_rot1.gle0000644000000000000000000000540111405447072021737 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! size 7 3 set hei 0.4 box 6 3 begin origin amove 1 1 begin rotate 90 text This is end rotate end origin gle-graphics-4.2.4c/gle-refman/primitives/fig/gc_cap.gle0000644000000000000000000000563411405447072021625 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! size 12 3 box scale 3/4 3/4 set hei .4 amove 1 .5 box 4 3 set lwidth .5 set cap butt amove 1 3 rline 4 0 rmove .5 -.1 text set cap butt set cap round amove 1 2 rline 4 0 rmove .5 -.1 text set cap round set cap square amove 1 1 rline 4 0 rmove .5 -.1 text set cap square gle-graphics-4.2.4c/gle-refman/primitives/fig/curve.gle0000644000000000000000000001052411405447072021527 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! size 11 4 include "../../script/manual.gle" manual_graph_mode sub pmove d a amove xpos()+d*cos(torad(a)) ypos()+d*sin(torad(a)) end sub sub dist a$ b$ return sqrt((ptx(a$)-ptx(b$))^2 + (pty(a$)-pty(b$))^2) end sub begin object curve set just lc amove 0.2 1.5 begin box add 0.1 round 0.1 name b1 tex "GLE" end box set just bl amove 2 0.1 begin box add 0.1 round 0.1 name b2 tex "test.gle" end box join b1.rc -> b2.tc curve 0 90 1.2 1 end object amove 0 pageheight() draw curve.tl set just tl amove 0 pty(curve.bc)-0.2 gsave set hei 0.3 tex "\texttt{join b1.rc -> b2.tc curve 0 90 1.2 1}" grestore r = 0.35; hi = 0.2; d = 1.2 set just cc begin object joint begin name c amove 0 0 tex "$c$" ellipse r hi end name begin name a pmove d 100 tex "$a$" ellipse r hi end name begin name b pmove d 220 tex "$b$" ellipse r hi end name join a.c -> b.c join a.c -> c.c join b.c -> c.c end object amove pagewidth() pageheight() draw joint.tr set just tr amove pagewidth() pty(curve.bc)-0.2 gsave set hei 0.3 tex "\texttt{join a.c -> b.c}" grestore begin object hvjoin box 0.3 0.3 name b1 rmove 2 0 box 1 1 name b2 join b1.rc -> b2.h end object amove 0 pty(curve.bc)-0.8 draw hvjoin.tl set just tl amove 0 pty(hvjoin.bc)-0.2 gsave set hei 0.3 tex "\texttt{join b1.rc -> b2.h}" grestore begin object join_ci_box set just cc begin name a amove 0 0 tex "$a$" ellipse r hi end name pmove 1.5 160 begin box add 0.2 name b tex "$b$" end box join a.c -> b.box end object amove pagewidth() pty(curve.bc)-0.8 draw join_ci_box.tr set just tr amove pagewidth() pty(join_ci_box.bc)-0.2 gsave set hei 0.3 tex "\texttt{join a.c -> b.box}" grestore gle-graphics-4.2.4c/gle-refman/primitives/fig/gc_write.gle0000644000000000000000000000547711405447072022221 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! size 7 3 box 6 3 begin origin set hei .35 just center font rm amove 3 .5 a$ = "Hello there " xx = sqrt(10) t$ = time$() c$ = a$+t$ write a$+t$ xx end origin gle-graphics-4.2.4c/gle-refman/primitives/fig/grids.gle0000664000000000000000000000642311405447072021520 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! size 13.25 4.5 include "../../script/manual.gle" manual_graph_mode wd = 1.75; hi = 1; yd = 0.15; del = 0.4 sub dobox x y grid$ amove del+(wd+del)*x pageheight()-del-(hi+del)*y-hi-yd set fill gray50 pattern grid$ box wd hi name "bx" set just bc amove ptx(bx.tc) pty(bx.tc)+0.1 tex grid$ end sub dobox 0 0 "GRID" dobox 1 0 "GRID1" dobox 2 0 "GRID2" dobox 3 0 "GRID3" dobox 4 0 "GRID4" dobox 5 0 "GRID5" dobox 0 1 "SHADE" dobox 1 1 "SHADE1" dobox 2 1 "SHADE2" dobox 3 1 "SHADE3" dobox 4 1 "SHADE4" dobox 5 1 "SHADE5" dobox 0 2 "RSHADE" dobox 1 2 "RSHADE1" dobox 2 2 "RSHADE2" dobox 3 2 "RSHADE3" dobox 4 2 "RSHADE4" dobox 5 2 "RSHADE5" gle-graphics-4.2.4c/gle-refman/primitives/fig/gc_xend.gle0000644000000000000000000000546611405447072022023 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! size 7 3 box 6 3 begin origin set hei 1 font rm set just left amove 1 1 text abc set color gray20 amove xend() yend() text def end origin gle-graphics-4.2.4c/gle-refman/primitives/fig/gc_lstyle.gle0000644000000000000000000000602611405447072022372 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! size 7 3 box 6 3 begin origin set hei .3 just left font rm amove .5 2.5 for z = 0 to 4 set lstyle z rline 2 0 rmove .1 0 write z rmove -2.1 -.4 next z amove 3.5 2.5 for z = 5 to 9 set lstyle z rline 2 0 rmove .1 0 write z rmove -2.1 -.4 next z amove .5 .2 set lstyle 9229 rline 3 0 rmove .1 0 text 9229 end origin gle-graphics-4.2.4c/gle-refman/primitives/fig/gc_table.gle0000644000000000000000000000560511405447072022147 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! size 7 3.5 box 6 3 begin origin amove .5 .5 set font rm set hei 0.3 just bl begin table Here is my table of text see how 22 44 55 33 0.1 999 1 .2 3 33 2 33 it lines up end table end origin gle-graphics-4.2.4c/gle-refman/primitives/fig/gc_arrstyle.gle0000644000000000000000000000650511405447072022725 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! size 7.5 2.25 set arrowsize 0.9 arrowangle 15 sub arrow_circle langle aangle asize circle 0.1 fill red end sub set color blue lstyle 2 amove 3 0 aline 3 2.25 amove 7 0 aline 7 2.25 set lstyle 1 lwidth 0.07 color black set arrowstyle simple amove 0.25 1.5 aline 3 1.5 arrow end set arrowstyle empty amove 0.25 0.5 aline 3 0.5 arrow end set arrowstyle filled amove 4.25 1.5 aline 7 1.5 arrow end set arrowstyle circle amove 4.25 0.5 aline 7 0.5 arrow end set font texcmr just left amove 0.75 1.7 write "simple" amove 0.75 0.7 write "empty" amove 4.75 1.7 write "filled" amove 4.75 0.7 write "circle" gle-graphics-4.2.4c/gle-refman/primitives/fig/curve_length.gle0000664000000000000000000000614111652073536023076 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! size 13 4 include "../../script/manual.gle" manual_graph_mode begin length len amove 0.8 1.4 curve 20 0 0 2 10 0 0 -2 -10 0 0 9 end length amove 9.5 0.25 tex "Length = "+format$(len, "fix 2")+" cm" amove 2.8 2.3 begin tex \begin{tabular}{l} begin length len\\ \mbox{}\hspace{0.5cm}amove 0.8 1.4\\ \mbox{}\hspace{0.5cm}curve 20 0 0 2 10 0 0 -2 -10 0 0 9\\ end length\\ write ``Length = ''+format\$(len, "fix 2")+`` cm''\\ \end{tabular} end tex gle-graphics-4.2.4c/gle-refman/primitives/fig/gc_justify.gle0000644000000000000000000000630111405447072022547 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! size 7 4 box 6 4 !5 4 begin origin set hei .3 amove .5 .5 box 2 2 set lwidth .0001 rmove 1 0 rline 0 2 rmove -1 -1 rline 2 0 set lwidth 0 amove .6 .6 set just bl text bl rmove 1 0 text bc rmove 1 0 text br rmove -2 1 text lc rmove 1 0 text cc rmove 1 0 text rc rmove -2 1 text tl rmove 1 0 text tc rmove 1 0 text tr set hei .4 just center font rm amove .5 3 set just left box 2 .6 !1.5 .6 text Justify left rmove 3 0 !2 0 set just bl box 2 .6 !1.5 .6 text Justify bl end origin gle-graphics-4.2.4c/gle-refman/primitives/fig/setcolor.gle0000644000000000000000000000654211405447072022242 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! size 9.5 2 include "../../script/manual.gle" manual_std_mode bw = 0.8; bh = 0.4; dy = 0.1; dx = 4; ytop = pageheight()-0.3 sub show_color col$ name$ rmove 0 -bh/2 box bw bh fill col$ rmove bw+0.2 bh/2 tex name$ rmove -bw-0.2 -bh-dy end sub set just lc amove 0.25 ytop show_color "black" "set color black" show_color "white" "set color white" show_color "gray50" "set color gray50" show_color "0.3" "set color 0.3" amove 0.25+dx ytop show_color "red" "set color red" show_color "#ADFF2F" "set color \#ADFF2F" show_color "rgb255(255,140,0)" "set color rgb255(255,140,0)" show_color "rgb(0.5,0.2,0.2)" "set color rgb(0.5,0.2,0.2)" gle-graphics-4.2.4c/gle-refman/primitives/fig/gc_marker.gle0000644000000000000000000000734411405447072022343 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! size 12.5 5 include "../../script/manual.gle" manual_graph_mode x0 = 0.25 y0 = pageheight()-0.25 xp = x0; yp = y0 set just lc sub showmarker name$ amove xp yp gsave set hei 0.5 marker name$ grestore amove xp+0.3 yp tex name$ yp = yp -0.6 if yp-0.3 < 0 then yp = y0; xp = xp+2.5 end if end sub showmarker "triangle" showmarker "wtriangle" showmarker "ftriangle" showmarker "square" showmarker "wsquare" showmarker "fsquare" showmarker "circle" showmarker "wcircle" showmarker "fcircle" showmarker "diamond" showmarker "wdiamond" showmarker "fdiamond" showmarker "cross" showmarker "plus" showmarker "minus" showmarker "asterisk" showmarker "odot" showmarker "ominus" showmarker "oplus" showmarker "otimes" showmarker "star" showmarker "star2" showmarker "star3" showmarker "star4" showmarker "flower" showmarker "club" showmarker "heart" showmarker "spade" showmarker "dag" showmarker "ddag" showmarker "snake" showmarker "dot" showmarker "handpen" showmarker "letter" showmarker "phone" showmarker "plane" showmarker "scircle" showmarker "ssquare" showmarker "trianglez" showmarker "diamondz" gle-graphics-4.2.4c/gle-refman/primitives/fig/gc_fontlwidth.gle0000644000000000000000000000555011405447072023241 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! size 7 3 box 6 3 if font("pltr") then set hei 1.5 begin origin set font pltr amove .2 .2 text Tester set fontlwidth .1 cap round rmove 0 1.5 text Tester end origin end if gle-graphics-4.2.4c/gle-refman/primitives/fig/Makefile.gcc0000664000000000000000000000636311652073536022121 0ustar rootroot######################################################################## # # # GLE - Graphics Layout Engine # # # # Modified BSD License # # # # Copyright (C) 2009 GLE. # # # # Redistribution and use in source and binary forms, with or without # # modification, are permitted provided that the following conditions # # are met: # # # # 1. Redistributions of source code must retain the above copyright # # notice, this list of conditions and the following disclaimer. # # # # 2. Redistributions in binary form must reproduce the above # # copyright notice, this list of conditions and the following # # disclaimer in the documentation and/or other materials provided with # # the distribution. # # # # 3. The name of the author may not be used to endorse or promote # # products derived from this software without specific prior written # # permission. # # # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR # # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY # # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE # # GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER # # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN # # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # # ######################################################################## EPSS = gc_arc.pdf gc_arcto.pdf gc_beginbox.pdf gc_bezier.pdf gc_cap.pdf gc_color.pdf \ gc_curve.pdf gc_fontlwidth.pdf gc_for.pdf gc_justify.pdf gc_ljoin.pdf gc_lstyle.pdf \ gc_marker.inc gc_nonzero.pdf gc_rot1.pdf gc_rot2.pdf gc_table.pdf gc_text.pdf \ gc_write.pdf gc_xend.pdf grids.inc setcolor.inc curve.inc fullpage.inc gc_arrstyle.pdf \ curve_length.inc ifeq ($(RUNBUILD),1) GLE = ../../../build/bin/gle else GLE = gle endif all: $(EPSS) %.inc: %.gle $(GLE) -texincprefix primitives/fig/ -inc -d pdf $< %.pdf: %.gle $(GLE) -d pdf $< clean: rm -rf *.pdf *.pdf *.inc .gle gle-graphics-4.2.4c/gle-refman/primitives/fig/gc_rot2.gle0000644000000000000000000000544511405447072021750 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! size 7 3 set hei 0.25 box 6 3 begin origin amove 1 1 begin scale 3 1 begin rotate 30 text This is end rotate end scale end origin gle-graphics-4.2.4c/gle-refman/primitives/fig/gc_color.gle0000644000000000000000000000556011405447072022176 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! size 7 3 box 5 3 begin origin mm$ = "blue" amove .5 .5 for c = 0 to 1 step .05 box .2 2 fill (c) nobox rmove .2 0 next c amove 2 1 box 2 1 fill white nobox rmove -.2 .2 box 2 1 fill mm$ end origin gle-graphics-4.2.4c/gle-refman/primitives/fig/gc_text.gle0000644000000000000000000000600411405447072022036 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! size 7 3 box 6 3 begin origin amove 0.5 2.5 set hei 0.25 just tl font tt marker fcircle begin text width 5 This is my paragraph of text to see if it wraps things at four cm as I have told it to do. end text amove .5 .5 set justify bl marker fcircle begin text Now some text without a width specified end text end origin gle-graphics-4.2.4c/gle-refman/primitives/fig/fullpage.gle0000664000000000000000000001155511405447072022211 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! size 15 6 include "../../script/manual.gle" manual_graph_mode include "shape.gle" sc = 0.13; dx = 3.75 pagew = 21.0; pageh = 29.7 !papersize a4paper !orientation landscape !margins 2 2 2 2 !size 10 10 sub measure_hb x0 x1 y0 del str$ amove x0 y0 rline 0 -del amove x1 y0 rline 0 -del amove x0 y0-0.75*del aline x1 y0-0.75*del arrow both set just tc amove (x0+x1)/2 y0-del tex str$ end sub sub measure_vl y0 y1 x0 del str$ amove x0 y0 rline del 0 amove x0 y1 rline del 0 amove x0+0.75*del y0 aline x0+0.75*del y1 arrow both set just tc amove x0+del (y0+y1)/2 begin rotate 90 tex str$ end rotate end sub !include "../../script/manual.gle" !manual_std_mode sub draw_page pw ph xp = xpos(); yp = ypos() box pw*sc ph*sc measure_hb xp xp+pw*sc yp 0.3 num$(pw)+" cm" measure_vl yp yp+ph*sc xp+pw*sc 0.3 num$(ph)+" cm" amove xp yp end sub sub content pw ph ang xp = xpos(); yp = ypos() box pw*sc ph*sc fill gray20 rmove pw/2*sc ph/2*sc gsave set fill lightsalmon draw big_arrow_both_angle.cc pw/2*sc ph/2*sc ang grestore measure_hb xp xp+pw*sc yp 0.3 num$(pw)+" cm" measure_vl yp yp+ph*sc xp+pw*sc 0.3 num$(ph)+" cm" end sub sub content_m pw ph ang xp = xpos(); yp = ypos() box pw*sc ph*sc fill gray20 rmove pw/2*sc ph/2*sc gsave set fill lightsalmon draw big_arrow_both_angle.cc pw/2*sc ph/2*sc ang grestore end sub amove 0.25 0.7 draw_page pagew pageh rmove sc*(pagew/2-5) sc*(pageh/2-5) content 10 10 0 amove 0.25+dx 0.7 draw_page pagew pageh rmove sc*(pagew/2-5) sc*(pageh/2-5) content 10 10 90 w1 = pagew-4 h1 = pageh-4 amove 0.25+2*dx 0.7 draw_page pagew pageh rmove sc*2 sc*2 content_m w1 h1 0 amove 0.25+3*dx 0.7 draw_page pagew pageh rmove sc*2 sc*2 content_m w1 h1 90 set just tl amove 0.05 pageheight()-0.05 begin tex \begin{tabular}{l} papersize a4paper\\ size 10 10 \\ \end{tabular} end tex amove 0.05+dx pageheight()-0.05 begin tex \begin{tabular}{l} papersize a4paper\\ orientation landscape\\ size 10 10 \\ \end{tabular} end tex amove 0.05+2*dx pageheight()-0.05 begin tex \begin{tabular}{l} papersize a4paper\\ margins 2 2 2 2\\ \end{tabular} end tex amove 0.05+3*dx pageheight()-0.05 begin tex \begin{tabular}{l} papersize a4paper\\ orientation landscape\\ margins 2 2 2 2\\ \end{tabular} end tex gle-graphics-4.2.4c/gle-refman/primitives/fig/gc_curve.gle0000644000000000000000000000575511405447072022212 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! size 7 3 box 5 3 begin origin amove 1 1 set lwidth .09 curve 1 0 0 1 1 0 0 -1 1 0 set lwidth 0 amove 0 1 rline 1 0 rline 0 1 rline 1 0 rline 0 -1 rline 1 0 amove 3.6 1 set lwidth .09 curve 0 1 0 1 1 0 0 -1 0 -1 set lwidth 0 amove 3.6 0 rline 0 1 rline 0 1 rline 1 0 rline 0 -1 rline 0 -1 end origin gle-graphics-4.2.4c/gle-refman/primitives/fig/gc_beginbox.gle0000644000000000000000000000550111405447072022650 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! size 7 3 set hei 0.8 box 6 3!5 3 begin origin amove 1 1 begin box add .2 begin box fill gray10 add .2 round .3 text John end box end box end origin gle-graphics-4.2.4c/gle-refman/primitives/fig/gc_bezier.gle0000644000000000000000000000563711405447072022345 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! size 7 4 box 4 4 begin origin set lstyle 2 lwidth .0001 amove .2 .2 rline 1 1 rline 1 .2 rline -.2 -1.2 amove .5 2.8 rline 1 1 rline 1 -2 rline 1 2 set lstyle 1 lwidth 0 amove .2 .2 rbezier 1 1 2 1.2 1.8 0 amove .5 2.8 rbezier 1 1 2 -1 3 1 end origin gle-graphics-4.2.4c/gle-refman/primitives/fig/gc_arcto.gle0000644000000000000000000000542611405447072022171 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! size 7 3 box 6 3 begin origin amove 1.5 .5 rline 1 0 set lwidth .1 arcto 2 0 -1 1 .5 set lwidth 0 rline -1 1 end origin gle-graphics-4.2.4c/gle-refman/primitives/fig/gc_for.gle0000644000000000000000000000537111405447072021646 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! size 7 3 box 5 3 begin origin for xx = 1 to 4 step .5 amove xx 1 aline 5-xx 2 next xx end origin gle-graphics-4.2.4c/gle-refman/primitives/cmds.tex0000664000000000000000000014231111660563604020622 0ustar rootroot%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % GLE - Graphics Layout Engine % % % % Modified BSD License % % % % Copyright (C) 2009 GLE. % % % % Redistribution and use in source and binary forms, with or without % % modification, are permitted provided that the following conditions % % are met: % % % % 1. Redistributions of source code must retain the above copyright % % notice, this list of conditions and the following disclaimer. % % % % 2. Redistributions in binary form must reproduce the above % % copyright notice, this list of conditions and the following % % disclaimer in the documentation and/or other materials provided with % % the distribution. % % % % 3. The name of the author may not be used to endorse or promote % % products derived from this software without specific prior written % % permission. % % % % THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR % % IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED % % WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE % % ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY % % DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL % % DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE % % GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS % % INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER % % IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR % % OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN % % IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \chapter{Primitives} \label{prim:chap} A GLE command is a sequence of keywords and values separated by white space (one or more spaces or tabs). Each command must begin on a new line. Keywords may not be abbreviated, the case is not significant. All coordinates are expressed in centimeters from the bottom left corner of the page. GLE uses the concept of a {\bf current point} which most commands use. For example, the command {\sf aline 2 3} will draw a line from the {\bf current point} to the coordinates (2,3). The current graphics state also includes other settings like line width, colour, font, 2d transformation matrix. All of these can be set with various GLE commands. \section{Graphics Primitives (a summary)} {\sf ! {\it comment}} \\ {\sf @{\it xxx}} \\ {\sf abound {\it x y}} \\ {\sf aline {\it x y} [arrow start] [arrow end] [arrow both] [curve {\it $\alpha1$} {\it $\alpha2$} {\it d1} {\it d2}]} \\ {\sf amove {\it x y}} \\ {\sf arc {\it radius a1 a2 [arrow end] [arrow start] [arrow both]}} \\ {\sf arcto {\it x1 y1 x2 y2 rad}} \\ {\sf begin box [fill {\it pattern}] [add {\it gap}] [nobox] [name {\it xyz}] [round {\it val}]} \\ {\sf begin clip } \\ {\sf begin length {\it var}} \\ {\sf begin name {\it name}} \\ {\sf begin object {\it name}} \\ {\sf begin origin} \\ {\sf begin path [stroke] [fill {\it pattern}] [clip]} \\ {\sf begin rotate {\it angle}} \\ {\sf begin scale {\it x y}} \\ {\sf begin table } \\ {\sf begin tex } \\ {\sf begin text [width {\it exp}] } \\ {\sf begin translate {\it x y}} \\ {\sf bezier {\it x1 y1 x2 y2 x3 y3}} \\ {\sf bitmap {\it filename width height} [type {\it type}]} \\ {\sf bitmap\_info {\it filename width height} [type {\it type}]} \\ {\sf box {\it x y} [justify {\it jtype}] [fill {\it color}] [name {\it xxx}] [nobox] [round {\it val}]} \\ {\sf circle {\it radius} [fill {\it pattern}]} \\ {\sf closepath } \\ {\sf colormap {\it fct} {\it xmin} {\it xmax} {\it ymin} {\it ymax} {\it pixels-x} {\it pixels-y} {\it width} {\it height} [color] [palette {\it pal}]} \\ {\sf curve {\it ix iy }[{\it x1 y1 x y x y ... xn yn}]{\it ex ey }} \\ {\sf define marker {\it markername subroutine-name}} \\ {\sf draw {\it name.point [{\it arg1} ... {\it argn}] [name {\it name}]}} \\ {\sf ellipse dx dy [options]} \\ {\sf elliptical\_arc dx dy theta1 theta2 [options]} \\ {\sf for {\it var} = {\it exp1} to {\it exp2} [step {\it exp3}] {\it command [...]} next {\it var}} \\ {\sf grestore} \\ {\sf gsave} \\ {\sf if {\it exp} then {\it command [...]} else {\it command [...]} end if} \\ {\sf include {\it filename}} \\ {\sf join {\it object1.just sep object2.just} [curve {\it $\alpha1$} {\it $\alpha2$} {\it d1} {\it d2}]} \\ {\sf local {\it var}$_1$, $\ldots$, {\it var}$_n$} \\ {\sf margins {\it top} {\it bottom} {\it left} {\it right}} \\ {\sf marker {\it marker-name} [{\it scale-factor}]} \\ {\sf orientation {\it o}} \\ {\sf papersize {\it size}} \\ {\sf postscript {\it filename.eps width-exp height-exp}} \\ {\sf print {\it string\$} $\ldots$} \\ {\sf psbbtweak} \\ {\sf pscomment} {\it exp} \\ {\sf rbezier {\it x1 y1 x2 y2 x3 y3}} \\ {\sf return} {\it exp} \\ {\sf reverse } \\ {\sf rline {\it x y} [arrow end] [arrow start] [arrow both] [curve {\it $\alpha1$} {\it $\alpha2$} {\it d1} {\it d2}]} \\ {\sf rmove {\it x y}} \\ {\sf save {\it objectname}} \\ {\sf set alabeldist {\it d}} \\ {\sf set alabelscale {\it s}} \\ {\sf set arrowangle {\sf angle}} \\ {\sf set arrowsize {\sf size}} \\ {\sf set arrowstyle {\sf simple | filled | empty}} \\ {\sf set atitledist {\it s}} \\ {\sf set atitlescale {\it s}} \\ {\sf set background {it c}} \\ {\sf set cap {\sf butt | round | square}} \\ {\sf set color {\it col}} \\ {\sf set dashlen {\it dashlen-exp}} \\ {\sf set fill {\it fill color/pattern}} \\ {\sf set font {\it font-name}} \\ {\sf set fontlwidth {\it line-width}} \\ {\sf set hei {\it character-size}} \\ {\sf set join {\sf mitre | round | bevel }} \\ {\sf set just left $|$ center $|$ right $|$ tl $|$ etc...} \\ {\sf set lstyle {\it line-style}} \\ {\sf set lwidth {\it line-width}} \\ {\sf set pattern {\it fill pattern}} \\ {\sf set texscale {\it scale} $|$ {\it fixed} $|$ {\it none}} \\ {\sf set titlescale {\it s}} \\ {\sf set ticksscale {\it s}} \\ {\sf size {\it w} {\it h}} \\ {\sf sub {\it sub-name parameter1 parameter2 etc}} \\ {\sf tex {\it string} [name {\it xxx}] [add {\it val}]} \\ {\sf text {\it unquoted-text-string}} \\ {\sf write {\it string\$} $\ldots$} \section{Graphics Primitives (in detail)} \begin{commanddescription} \item[{\sf ! {\it comment}}]\index{comment}\index{"!} Indicates the start of a comment. GLE ignores everything from the exclamation point to the end of the line. This works both in GLE scripts and in data files used in, e.g., graph blocks. \item[{\sf @{\it xxx}}] Executes subroutine {\it xxx}. \index{"@} \item[{\sf abound {\it x y}}] \index{abound} Update the current bounding box to include the point $(x,y)$ without drawing anything. This command is useful in combination with `begin box', `begin name', etc., e.g., to add empty space to the box. \item[{\sf aline {\it x y} [arrow start] [arrow end] [arrow both] [curve {\it $\alpha1$} {\it $\alpha2$} {\it d1} {\it d2}]}] \index{aline} \index{arrow} Draws a line from the current point to the absolute coordinates {\it (x,y)}, which then becomes the new current point. The arrow qualifiers are optional, they draw arrows at the start or end of the line, the size of the arrow is proportional to the current font height. If the curve option is given, then a Bezier curve\index{Bezier curve}\index{curve} is drawn instead of a line. The first control point is located at a distance $d1$ and angle $\alpha1$ from the current point and the second control point is located at distance $d2$ and angle $\alpha2$ from {\it (x,y)}. \item[{\sf amove {\it x y}}] \index{amove} Changes the current point to the absolute coordinates {\it (x,y)}. \item[{\sf arc {\it radius a1 a2 [arrow end] [arrow start] [arrow both]}}] \index{arc}\index{narc} Draws an arc of a circle in the anti-clockwise direction, centered at the current point, of radius {\it radius}, starting at angle {\it a1} and finishing at angle {\it a2}. Angles are specified in degrees. Zero degrees is at three o'clock and Ninety degrees is at twelve o'clock. \preglecode{} \begin{Verbatim} arc 1.2 20 45 \end{Verbatim} \postglecode{} The command {\sf narc} is identical but draws the arc in the clockwise direction. This is important when constructing a path. \begin{minipage}[c]{8cm} \begin{Verbatim} amove 0.5 0.5 rline 1 0.5 arrow end set lwidth 0.1 arc 1 10 160 arc 0.5 -90 0 \end{Verbatim} \end{minipage} \hfill \begin{minipage}[c]{7cm} \mbox{\includegraphics{primitives/fig/gc_arc}} \end{minipage} \item[{\sf arcto {\it x1 y1 x2 y2 rad}}] \index{arcto} Draws a line from the current point to {\it (x1,y1)} then to {\it (x2,y2)} but fits an arc of radius {\it rad} joining the two vectors instead of a vertex at the point {\it (x1,y1)}. \begin{minipage}[c]{8cm} \begin{Verbatim} amove 1.5 .5 rline 1 0 set lwidth .1 arcto 2 0 -1 1 .5 set lwidth 0 rline -1 1 \end{Verbatim} \end{minipage} \hfill \begin{minipage}[c]{7cm} \mbox{\includegraphics{primitives/fig/gc_arcto}} \end{minipage} \item[{\sf begin {\it block\_name} ... {\it end block\_name}}] There are several block structured commands in GLE. Each {\sf begin} must have a matching {\sf end}. Blocks which change the current graphics state (e.g. scale, rotate, clip etc) will restore whatever they change at the end of the block. Indentation is optional but should be used to make the GLE program easier to read. \item[{\sf begin box [fill {\it pattern}] [add {\it gap}] [nobox] [name {\it xyz}] [round {\it val}]} ] \index{add} \index{begin!box} \index{nobox} \index{name (box)} \label{cmd:beginbox} Draws a box around everything between {\sf begin box} and {\sf end box}. The option {\sf add} adds a margin of {\sf margin} cm to each side of the box to make the box slightly larger than the area defined by the graphics primitives in the {\sf begin box} \ldots {\sf end box} group (to leave a gap around text for example). The option {\sf nobox} stops the box outline from being drawn. The {\sf name} option saves the coordinates of the box for later use with among others the {\sf join} command. If the {\sf round} option is used, a box with rounded corners will be drawn. \begin{minipage}[c]{8cm} \begin{Verbatim} begin box add 0.2 begin box fill gray10 add 0.2 round .3 text John end box end box \end{Verbatim} \end{minipage} \hfill \begin{minipage}[c]{7cm} \mbox{\includegraphics{primitives/fig/gc_beginbox}} \end{minipage} \item[{\sf begin clip }] \index{clip} \index{begin!clip} This saves the current clipping region. A clipping region is an arbitrary path made from lines and curves which defines the area on which drawing can occur. This is used to undo the effect of a clipping region defined with the begin path command. See the example CLIP.GLE in appendix B at the end of the manual. \item[{\sf begin length {\it var}}] \index{length} \index{begin!length} This block computes the total length of all the elements that are included in it and saves the result in the variable ``{\it var}''. See Fig.~\ref{beginlen:fig} for an example. \begin{figure}[tb] \centering \mbox{\input{primitives/fig/curve_length.inc}} \caption{\label{beginlen:fig}Compute the total length of a shape.} \end{figure} \item[{\sf begin name {\it name}}] \index{begin!name}\label{cmd:beginname} Saves the coordinates of what is inside the block for later use with among others the {\sf join} command. This command is equivalent to `{\sf begin box name} $\ldots$ {\sf nobox}'. \item[{\sf begin object {\it name} [{\it arg1}, \ldots, {\it argn}]}] \index{begin!object}\label{cmd:beginobject} Declares a new object (sub-figure) that can be drawn later with the `{\sf draw}' command. Section~\ref{sec:objblocks} explains in detail how this command works and how it can be used. Object blocks can have arguments if they are not defined inside a subroutine. Such object blocks are called `static objects'; they behave similar to subroutines. Object blocks can also be defined inside a subroutine. In that case, they are called `dynamic objects' and cannot have arguments. They may, however, refer to all arguments and local variables of the surrounding subroutine. \item[{\sf begin origin}] \index{amove (origin)} \index{begin!origin} This makes the current point the origin. This is good for subroutines or something which has been drawn using {\sf amove,aline}. Everything between the {\sf begin origin} and {\sf end origin} can be moved as one unit. The current point is also saved and restored. \item[{\sf begin path [stroke] [fill {\it pattern}] [clip]} ] \index{begin!path} \index{path} \index{end path} \index{stroke} Initialises the drawing of a filled shape. All the lines and curves generated until the next {\sf end path} command will be stored and then used to draw the shape. {\sf stroke} draws the outline of the shape, {\sf fill} paints the inside of the shape in the given colour and {\sf clip} defines the shape as a clipping region for all future drawing. Clipping and filling will only work on PostScript devices. \item[{\sf begin rotate {\it angle}}] \index{rotate} \index{angle} \index{begin!rotate} The coordinate system is rotated anti-clockwise about the current point by the angle {\it angle} (in degrees). For example, to draw a line of text running vertically up the page (as a Y axis label, say), type: \begin{minipage}[c]{8cm} \begin{Verbatim} begin rotate 90 text This is end rotate \end{Verbatim} \end{minipage} \hfill \begin{minipage}[c]{7cm} \mbox{\includegraphics{primitives/fig/gc_rot1}} \end{minipage} \item[{\sf begin scale {\it x y}}] \index{scale} \index{begin!scale} Everything between the {\sf begin} and {\sf end} is scaled by the factors x and y. E.g., {\it scale 2 3} would make the picture twice as wide and three times higher. \begin{minipage}[c]{8cm} \begin{Verbatim} begin scale 3 1 begin rotate 30 text This is end rotate end scale \end{Verbatim} \end{minipage} \hfill \begin{minipage}[c]{7cm} \mbox{\includegraphics{primitives/fig/gc_rot2}} \end{minipage} \pagebreak[2] \item[{\sf begin table }] \index{table} \index{begin!table} This module is an alternative to the TEXT module. It reads the spaces and tabs in the source file and aligns the words accordingly. A single space between two words is treated as a real space, not an alignment space. With a proportionally spaced font columns will line up on the left hand side but not on the right hand side. However with a fixed pitch font, like {\sf tt}, everything will line up. \begin{minipage}[c]{8cm} \begin{Verbatim} begin table Here is my table of text see how 22 44 55 33 0.1 999 1 .2 3 33 2 33 it lines up end table \end{Verbatim} \end{minipage} \hfill \begin{minipage}[c]{7cm} \mbox{\includegraphics{primitives/fig/gc_table}} \end{minipage} \item[{\sf begin text [width {\it exp}] } ] \index{text (width)} \index{text (begin)} \index{justify (text)} \index{begin!text} This module displays multiple lines/paragraphs of text. The block of text is justified according to the current justify setting. See the {\sf set just} command for a description of justification settings. If a width is specified the text is wrapped and justified to the given width. If a width is not given, each line of text is drawn as it appears in the file. Remember that GLE treats text in the same way that \LaTeX \ does, so multiple spaces are ignored and some characters have special meaning. E.g, \verb#\ ^ _ & { }# \index{Greek characters} To include Greek characters in the middle of text use a backslash followed by the name of the character. E.g., \verb+ 3.3\Omega S+ would produce ``3.3$\Omega$S''. To put a space between the Omega and the S add a backslash space at the end. E.g., \verb+ 3.3\Omega\ S+ produces ``3.3$\Omega$ S'' Sometimes the space control characters (e.g. \verb+\:+) are also ignored, this may happen at the beginning of a line of text. In this case use the control sequence \verb+\glass+ which will trick GLE into thinking it isn't at the beginning of a line. E.g., \preglecode{} \begin{Verbatim} text \glass \:\: Indented text \end{Verbatim} \postglecode{} \begin{minipage}[c]{8cm} \begin{Verbatim} set hei 0.25 just tl font tt begin text width 5 This is my paragraph of text to see if it wraps things at four cm as I have told it to do. end text ... begin text Now some text without a width specified end text \end{Verbatim} \end{minipage} \hfill \begin{minipage}[c]{7cm} \mbox{\includegraphics{primitives/fig/gc_text}} \end{minipage} \index{char} \index{chardef} \index{def} \index{movexy} \index{setfont} \index{sethei} \index{baselineskip} \index{setstretch} \index{lineskip} \index{mathchar} \index{mathchardef} \index{mathcode} \index{TeX} \index{\LaTeX} There are several \LaTeX \ like commands which can be used within text. The complete list can be found in Appendix \ref{ltxsym:sec}. A few examples are: \begin{Verbatim} \ \' \v \u \= \^ \. \H \~ \'' Implemented TeX accents ^{} _{} Superscript, subscript \\ \_ Forced Newline, underscore character \, \: \; 0.5em, 1em, 2em space (em = width of the letter `m') \tex{expression} Any LaTeX expression \char{22} Any character in current font \glass Makes move/space work on beginning of line \rule{2}{4} Draws a filled in box, 2cm by 4cm \setfont{rmb} Sets the current text font \sethei{0.3} Sets the font height (in cm) \setstretch{2} Scales the quantity of glue between words \lineskip{0.1} Sets the default distance between lines of text \linegap{-1} Sets the minimum required gap between lines {\rm ...}, {\it ...} Sets roman, and italic font {\bf ...}, {\tt ...} Sets bold, and typewriter (monospaced) font \alpha, \beta, ... Greek symbols \end{Verbatim} \item[{\sf begin translate {\it x y}}] \index{translate} \index{begin!translate} Everything between the {\sf begin} and {\sf end} is moved x units to the right and y units up. \item[{\sf bezier {\it x1 y1 x2 y2 x3 y3}}] \index{bezier} Draws a B\'{e}zier cubic section from the current point to the point {\it (x3,y3)} with B\'{e}zier cubic control points at the coordinates {\it (x1,y1)} and {\it (x2,y2)}. For a full explanation of B\'{e}zier curves see the PostScript Language Reference Manual. % \item[{\sf bigfile {\it filename.gle}}] % \index{bigfile} \index{include (bigfile)} % This command reads the file one line at a time, compiles each line and executes it. This means it can read any sized file. However, complex multi-line commands cannot be used. Subroutines can be used but not defined, inside the bigfile. Note: there is also a bigfile option in the graphing module for large datasets. \item[{\sf bitmap {\it filename width height} [type {\it type}]}] \index{bitmap} Imports the bitmap \textit{filename}. The bitmap is scaled to \textit{width}$\times$\textit{height}. If one of these is zero, it is computed based on the other one and the aspect ratio of the bitmap. GLE supports TIFF, JPEG, PNG and GIF bitmaps (depending on the compilation options). Bitmaps are compressed automatically by GLE using either the LZW or the JPEG compression scheme. \item[{\sf bitmap\_info {\it filename width height} [type {\it type}]}] \index{bitmap\_info} Returns the dimensions in pixels of the bitmap in the output parameters \textit{width} and \textit{height}. \item[{\sf box {\it x y} [justify {\it jtype}] [fill {\it color}] [name {\it xxx}] [nobox] [round {\it val}]} ] \index{box} \index{nobox} \index{justify (box)} \index{name (box)} Draws a box, of width {\it x} and height {\it y}, with its bottom left corner at the current point. If the justify option is used, the box will be positioned relative to the specified point. E.g., TL = top left, CC = center center, BL = bottom left, CENTER = bottom center, RIGHT = bottom right, LEFT = bottom left. See {\sf set just} for a description of justification settings. If a fill pattern is specified, the box will be filled. Remember that white fill is different from no fill pattern - white fill will erase anything that was inside the box. If the {\sf round} option is used, a box with rounded corners will be drawn. \item[{\sf circle {\it radius} [fill {\it pattern}]} ] \index{circle} \index{radius} Draws a circle at the current point, with radius {\it radius}. If a fill pattern is specified the circle will be filled. \item[{\sf closepath }] \index{closepath} \index{aline (closepath)} Joins the beginning of a line to the end of a line. I.e., it does an {\sf aline} to the end of the last {\sf amove}. \item[{\sf colormap {\it fct} {\it xmin} {\it xmax} {\it ymin} {\it ymax} {\it pixels-x} {\it pixels-y} {\it width} {\it height} [color] [palette {\it pal}]}] \index{colormap!command} Draws a colormap of the function {\it fct}$(x,y)$, in which $x$ ranges from {\it xmin} to {\it xmax}, and $y$ ranges from {\it ymin} to {\it ymax}. The size of the colormap is {\it width} by {\it height} centimeter and the resolution is {\it pixels-x} by {\it pixels-y} pixels. A colormap is grayscale by default; it is drawn in color if the option {\it color} is given. In the latter case, it is possible to specify a palette subroutine {\it pal} mapping the range $0 \ldots 1$ to a range of colors. This command is similar to the colormap command in a graph block (Sec.~\ref{colormap}). \item[{\sf curve {\it ix iy }[{\it x1 y1 x y x y ... xn yn}]{\it ex ey }} ] \index{curve} Draws a curve starting at the current point and passing through the points {\it (x1,y1)} \ldots {\it (xn,yn)}, with an initial slope of {\it (ix,iy)} to {\it (x1,y1)} and a final slope of {\it (ex,ey)}. All the vectors are relative movements from the vector before. \begin{minipage}[c]{8cm} \begin{Verbatim} amove 1 1 curve 1 0 0 1 1 0 0 -1 1 0 amove 3.6 1 curve 0 1 0 1 1 0 0 -1 0 -1 \end{Verbatim} \end{minipage} \hfill \begin{minipage}[c]{7cm} \mbox{\includegraphics{primitives/fig/gc_curve}} \end{minipage} \item[{\sf define marker {\it markername subroutine-name}}] \index{define marker} This defines a new marker called {\it markername} which will call the subroutine {\it subroutine-name} whenever it is used. It passes two parameters, the first is the requested size of the marker and the second is a value from a secondary dataset which can be used to vary size or rotation of a marker for each point plotted. To define a character from the postscript ZapDingbats font as a marker you would use, e.g. \begin{Verbatim} sub subnamex size mdata gsave ! save font and x,y set just left font pszd hei size t$ = "\char{102}" rmove -twidth(t$)/2 -theight(t$)/2 ! centers marker write t$ grestore ! restores font and x,y end sub \end{Verbatim} The second parameter can be supplied using the {\it mdata} command when drawing a graph, this gives the marker subroutine a value from another dataset to use to draw the marker. For example the marker could vary in size, or angle, with every one plotted. \begin{Verbatim} d3 marker myname mdata d4 \end{Verbatim} \item[{\sf define {\it markername fontname scale dx dy}}] This command defines a new marker, from any font, it is automatically centered but can be adjusted using dx,dy. e.g. \begin{Verbatim} defmarker hand pszd 43 1 0 0 \end{Verbatim} \item[{\sf draw {\it name.point [{\it arg1} ... {\it argn}] [name {\it name}]}}] \label{cmd:draw} Draws a named object block that has been previously defined using a ``begin/end object'' (p.~\pageref{cmd:beginobject}) construct. The object is drawn such that the point indicated by the first argument of the draw command appears at the current position. The point can be any (hierarchically) named point on the object and may include the justify options defined for the join command (p.~\pageref{cmd:join}). If the object block has parameters (similar to a subroutine) then these parameters can be given as {\it arg1} \ldots {\it argn}. The ``draw'' command names the object using the same name as the name of the object block by default. An alternative name can be supplied using its ``name'' option. See Sec.~\ref{sec:objblocks} for a detailed explanation of this command with examples. \item[{\sf ellipse} {\it dx dy [options]}] \index{ellipse} This command draws an ellipse with the diameters {\it dx} and {\it dy} in the $x$ and $y$ directions, respectively. The {\it options} are the same as the {\sf circle} command. \item[{\sf elliptical\_arc} {\it dx dy theta1 theta2 [options]}] \index{elliptical\_arc}\index{elliptical\_narc} This command is similar to the {\sf arc} command except that it draws an elliptical arc in the clockwise direction with the diameters {\it dx} and {\it dy} in the $x$ and $y$ directions, respectively. {\it theta1} and {\it theta2} are the start and stop angle, respectively. The {\it options} are the same as for the {\sf arc} command. The command {\sf elliptical\_narc} is identical but draws the arc in the clockwise direction. This is important when constructing a path. \item[{\sf for {\it var} = {\it exp1} to {\it exp2} [step {\it exp3}] {\it command [...]} next {\it var}} ] \index{for} \index{next} \index{step} The {\sf for ... next} structure lets you repeat a block of statements a number of times. GLE sets {\sf var} equal to {\it exp1} and then repeats the following steps. \begin{itemize} \item If {\sf var} is greater than {\it exp2} then GLE commands are skipped until the line after the {\sf next} statement. \item The value {\it exp3} is added to {\sf var}. \item The statements between the {\sf for} and {\sf next} statement are executed. \end{itemize} If {\it exp1} is greater than {\it exp2} then the loop is not executed. \begin{minipage}[c]{8cm} \begin{Verbatim} for x = 1 to 4 step 0.5 amove x 1 aline 5-x 2 next x \end{Verbatim} \end{minipage} \hfill \begin{minipage}[c]{7cm} \mbox{\includegraphics{primitives/fig/gc_for}} \end{minipage} \item[{\sf grestore}] \index{grestore} Restores the most recently saved graphics state. This is the simplest way to restore complicated transformations such as rotations and translations. It must be paired with a previous {\sf gsave} command. \item[{\sf gsave}] \index{gsave} Saves the current graphics transformation matrix and the current point and the current colour, font etc. \item[{\sf if {\it expression} then {\it command [...]} else {\it command [...]} end if}] \index{if}\index{else}\index{then}\index{end if} If {\it expression} evaluates to true, then execution continues with the statements up to the corresponding {\sf else}, otherwise the statements following the {\sf else} and up to the corresponding {\sf end if} are executed. \preglecode{} \begin{Verbatim} amove 3 3 if xpos()=3 then text We are at x=3 else text We are elsewhere end if \end{Verbatim} \postglecode{} Note: {\sf end if} is not spelt {\sf endif}. \item[{\sf include {\it filename}}]\label{incl:cmnd} \index{include} Includes the GLE script ``filename'' into the current script. This is useful for including library scripts with subroutines. GLE searches a number of predefined directories for include files. By default, this includes the current directory and the ``lib'' or ``gleinc'' subdirectory of the root directory (GLE\_TOP) of your GLE installation. The latter includes a number of subroutine files that are distributed with GLE (Table~\ref{inc:tab}). Additional include directories can be defined by means of the environment variable GLE\_USRLIB\index{GLE\_USRLIB}. \begin{table}[t] \centering \caption{\label{inc:tab}Include files distributed with GLE.} \begin{tabular}{ll} \hline barstyles.gle & Defines additional styles for bar plots.\\ color.gle & Defines functions for working with colors.\\ colors-gle-4.0.12.gle & Redefines all colors defined in GLE 4.0.12 and before.\\ contour.gle & Subroutines for drawing contour plots\\ electronics.gle & Subroutines for drawing electrical circuits\\ ellipse.gle & Draw text in an ellipse\\ feyn.gle & Subroutines for drawing Feynmann diagrams\\ graphutil.gle & Subroutines for drawing graphs\\ piesub.gle & Pie chart routines\\ polarplot.gle & Polar plotting routines\\ shape.gle & Drawing various shapes\\ simpletree.gle & Draw simple trees\\ stm.gle & Add labels to images\\ ziptext.gle & Draw zipped text\\ \hline \end{tabular} \end{table} % With a large include file GLE may run out of memory. If this happens, use the {\sf bigfile} command instead of {\sf include}. Note: there is also a bigfile option in the graphing module. \item[{\sf join {\it object1.just sep object2.just} [curve {\it $\alpha1$} {\it $\alpha2$} {\it d1} {\it d2}]}] \index{name (join)}\index{join}\label{cmd:join} Draws a line between two named objects. An object is simply a point or a box which was given a name when it was drawn. \index{justify (join)} The justify qualifiers are the standard GLE justification abbreviations: \verb#.br# (bottom right), \verb#.bl# (bottom left), \verb#.bc# (bottom centre), \verb#.tr# (top right), \verb#.tc# (top centre), \verb#.tl# (top left), \verb#.cr# (centre right), \verb#.cc# (centre centre), and \verb#.cl# (centre left). In addition, \verb#.v# and \verb#.h# can be used to draw vertical or horizontal lines connecting to the object, \verb#.c# for drawing a line connecting to e circle or ellipse, and \verb#.box# for drawing a line to a rectangle. Fig.~\ref{joicur:fig} shows examples of the different cases. If {\it sep} is written as {\sf -}, a line is drawn between the named objects e.g. \begin{Verbatim} join fred.tr - mary.tl \end{Verbatim} Arrow heads can be included at both ends of the line by writing {\it sep} as \verb#<->#. Single arrow heads are produced by \verb#<-# and \verb#->#. Note that {\it sep} must be separated from object1.just and object2.just by white space. If the justification qualifiers are omitted, a line will be drawn between the centers of the two objects (clipped at the edges of the rectangles which define the objects). This is the same as using the \verb#.box# qualifier on both objects. The {\sf curve} option is explained with the {\sf aline} command. Fig.~\ref{joicur:fig} shows an example where the ``join'' command is used with the curve option. Sec.~\ref{join:sec} contains several examples of joining objects. \item[{\sf local {\it var}$_1$, $\ldots$, {\it var}$_n$}] \index{local} Defines a local variable inside a subroutine. It is possible to initialize the variable to a particular value with, e.g., `\texttt{local x = 3}', which defines the local variable `x' and assigns it the value 3. You can also define several local variables at once, e.g., `\texttt{local x, y}' defines the local variables `x' and `y'. \item[{\sf margins {\it top} {\it bottom} {\it left} {\it right}}] This command can be used to define the page margins. Margins are only relevant for making full-page figures (using the -fullpage command line option). See also the ``papersize'' command. \index{scale (marker)} \item[{\sf marker {\it marker-name} [{\it scale-factor}]} ] \index{wmarker} \index{marker} Draws marker {\it marker-name} at the current point. The size of the marker is proportional to the current font size, scaled by the value of {\it scale-factor} if present. Markers are referred to by name, eg. {\sf square}, {\sf diamond}, {\sf triangle} and {\sf fcircle}. Markers beginning with the letter {\sf f} are usually filled variants. Markers beginning with {\sf w} are filled with white so lines are not visible through the marker. For a complete list of markers refer to Fig.~\ref{mark:fig}. \begin{Verbatim} set just lc amove 0.5 2.5 marker diamond 1 rmove 0.6 0; text Diamond amove 0.5 2 marker triangle 1 rmove 0.6 0; text Triangle ... \end{Verbatim} \item[{\sf orientation {\it o}}]\index{orientation}\label{orient:cmd} Sets the orientation of the output in full-page mode. Possible values are ``portrait'' and ``landscape''. Fig.~\ref{fullpage:fig} illustrates these two cases. \begin{figure}[tb] \centering \mbox{\input{primitives/fig/gc_marker.inc}} \caption{\label{mark:fig}All markers supported by GLE. (The names that start with ``w'' are white filled.)} \end{figure} \item[{\sf papersize {\it size}}]\index{papersize}\label{papsiz:cmd} \item[{\sf papersize {\it width} {\it height}}] Sets the paper size of the output. This is used only when GLE is run with the option ``-fullpage'' or when the PostScript output device is used (i.e., ``-d ps''). The command either takes one argument, which should be one of the predefined paper size names or two numbers, which give the width and height of the output measured in cm. The following paper sizes are known by GLE: a0paper, a1paper, a2paper, a3paper, a4paper, and letterpaper. If a ``size'' command is given in the script, then the output is drawn centered on the page. If no size command is included in the script, then the output will appear relative to the bottom-left corner of the page, offset by the page margins (see ``margins'' command). Fig.~\ref{fullpage:fig} illustrates these two cases. The paper size can also be set in GLE's configuration file (Sec.~\ref{conffile:sec}). \begin{figure}[tb] \centering \mbox{\input{primitives/fig/fullpage.inc}} \caption{\label{fullpage:fig}Result of different combinations of the commands ``papersize'', ``margins'', ``size'', and ``orientation'' for fullpage graphics (gle -fullpage figure.gle).} \end{figure} \item[{\sf postscript {\it filename.eps width-exp height-exp}} ] \index{postscript} Includes an encapsulated postscript file into a GLE picture, the postscript picture will be scaled up or down to fit the width given. On the screen you will just see a rectangle. Only the {\it width-exp} is used to scale the picture so that the aspect ratio is maintained. The height is only used to display a rectangle of the right size on the screen. \item[{\sf print {\it string\$} $\ldots$}] \index{print} This command prints its argument to the console (terminal). \item[{\sf psbbtweak}] \index{psbbtweak} Changes the default behavior of the bounding box. The default behavior is to have the lower corner at (-1,-1), which for some interpreters (i.e., Photoshop) will leave a black line around the bottom and left borders. If this command is specified then the origin of the bounding box will be set to (0,0). This command must appear before the first {\sf size} command in the GLE file. \begin{figure} \centering \mbox{\input{primitives/fig/curve.inc}} \caption{\label{joicur:fig}Different ways of joining objects.} \end{figure} \item[{\sf pscomment} {\it exp}] \index{pscomment} Allows inclusion of {\it exp} as a comment in the preamble of the postscript file. Multiple {\sf pscomment} commands are allowed. This command must appear before the first {\sf size} command in the GLE file. \item[{\sf rbezier {\it x1 y1 x2 y2 x3 y3}}] \index{bezier (rbezier)} \index{rbezier} This command is identical to the BEZIER command except that the points are all relative to the current point. \begin{minipage}[c]{8cm} \begin{Verbatim} amove 0.5 2.8 rbezier 1 1 2 -1 3 1 amove 0.2 0.2 rbezier 1 1 2 1.2 1.8 0 \end{Verbatim} \end{minipage} \hfill \begin{minipage}[c]{7cm} \mbox{\includegraphics{primitives/fig/gc_bezier}} \end{minipage} \item[{\sf return} {\it exp}] \index{return} The {\sf return} command is used inside subroutines to return a value. \item[{\sf reverse }] \index{reverse} Reverses the direction of the current path. This is used when filling multiple paths in order that the Non-Zero Winding Rule will know which part of the path is `inside'. With the Non-Zero Winding Rule an imaginary line is drawn through the object. Every time a line of the object crosses it from left to right, one is added to the counter; every time a line of the object crosses it from right to left, one is subtracted from the counter. Everywhere the counter is non-zero is considered to be the `inside' of the drawing and is filled. % \graphin{gc_nonzero.eps}{12.0cm}{3.0cm}{1.0} \psgraphin{primitives/fig/gc_nonzero}{12.0}{3.0}{\sf reverse} \item[{\sf rline {\it x y} [arrow end] [arrow start] [arrow both] [curve {\it $\alpha1$} {\it $\alpha2$} {\it d1} {\it d2}]}] \index{rline} \index{arrow} Draws a line from the current point to the relative coordinates {\it (x,y)}, which then become the new current point. If the current point is (5,5) then {\sf rline 3 -2} is equivalent to {\sf aline 8 3}. The optional qualifiers on the end of the command will draw arrows at one or both ends of the line, the size of the arrow head is proportional to the current font size. The {\sf curve} option is explained with the {\sf aline} command. \item[{\sf rmove {\it x y}}] \index{rmove} Changes the current point to the relative coordinate {\it (x,y)}. If the current point is (5,5) then {\sf rmove 3 -2} is equivalent to {\sf amove 8 3}. \item[{\sf save {\it objectname}} ] \index{save} \index{name (point)} This command saves a point for later use with the join command. \item[{\sf set alabeldist {\it d}}] \index{alabeldist} The spacing between the graph axis labels and the axis is set to {\it d}. \item[{\sf set alabelscale {\it s}}] \index{alabelscale} The graph axis label font size is set to `\texttt{alabelscale}' times `\texttt{hei}'. \item[{\sf set arrowangle {\sf angle}}] \index{arrowangle} Sets the opening angle of the arrow tips. (Actually, half of the opening angle.) \item[{\sf set arrowsize {\sf size}}] \index{arrowsize} Sets the length of the arrow tips in centimeter. \item[{\sf set arrowstyle {\sf simple | filled | empty}}] \index{arrowstyle} Sets the style of the arrow tips. There are three pre-defined styles: simple, filled, and empty (See Fig.~\ref{arrsty:fig}). It is also possible to create user-defined arrow tip styles. To do so, create a subroutine `{\sf arrow\_xxxx langle aangle asize}', with {\sf xxxx} the name of the new style. The parameter {\sf langle} is the angle of the line on which the arrow tip is to be drawn and the parameters {\sf aangle} and {\sf asize} are the current values of the settings {\sf arrowangle} and {\sf arrowsize}. The user-defined style can be enabled, in the same way as the built-in ones, with `{\sf set arrowstyle xxxx}'. Fig.~\ref{arrsty:fig} shows the three predefined styles and a user-defined tip style that is defined by the following subroutine: \begin{Verbatim} sub arrow_circle langle aangle asize circle 0.1 fill red end sub \end{Verbatim} \noindent{}More complex examples of user-defined arrow styles can be found in the GLE example repository. \begin{figure} \centering \includegraphics{primitives/fig/gc_arrstyle} \caption{\label{arrsty:fig}Different arrow tip styles.} \end{figure} \item[{\sf set atitledist {\it s}}] \index{atitledist} The spacing between the graph axis title and the axis labels is set to {\it d}. \item[{\sf set atitlescale {\it s}}] \index{atitlescale} The graph axis title font size is set to `\texttt{atitlescale}' times `\texttt{hei}'. \item[{\sf set background {it c}}] Set the background color for a pattern fill to $c$. (See `set fill'.) Note that ``set background'' must come after ``set fill'' because ``set fill'' resets the background color to the specified color. \item[{\sf set cap {\sf butt | round | square}}] \index{round (cap)} \index{cap} Defines what happens at the end of a wide line. \psgraphin{primitives/fig/gc_cap}{12.0}{3.0}{\sf set cap} \item[{\sf set color {\it col}}] \label{scol:cmd} \index{color} \index{rgb()} \index{rgb255()} Sets the current colour for all future drawing operations. GLE supports all SVG/X11 standard color names. These are listed in Appendix~\ref{colors:sec}, and include the following: black, white, red, green, blue, cyan, magenta, yellow, gray10, gray20, $\ldots$, gray90. It is also possible to specify a gray scale as a real number with 0.0 = black and 1.0 = white. Colors can also be set using the HTML notation, e.g., \#FF0000 = red. Finally, the functions rgb(red,green,blue) and rgb255(red,green,blue) may be used to create custom colors. Fig.~\ref{colex:fig} gives some examples. \begin{figure} \centering \mbox{\input{primitives/fig/setcolor.inc}} \caption{\label{colex:fig}Examples of setting the drawing color.} \end{figure} \vspace{0.25cm} \begin{minipage}[c]{8cm} \begin{Verbatim} mm$ = "blue" amove 0.5 0.5 for c = 0 to 1 step 0.05 box 0.2 2 fill (c) nobox rmove 0.2 0 next c amove 2 1 box 2 1 fill white nobox rmove -0.2 0.2 box 2 1 fill mm$ \end{Verbatim} \end{minipage} \hfill \begin{minipage}[c]{7cm} \mbox{\includegraphics{primitives/fig/gc_color}} \end{minipage} \item[{\sf set dashlen {\it dashlen-exp}}] \index{dashlen} Sets the length of the smallest dash used for the line styles. This command MUST come before the {\sf set lstyle} command. This may be needed when scaling a drawing by a large factor. \begin{figure} \centering \mbox{\input{primitives/fig/grids.inc}} \caption{\label{filpat:fig}Patterns for painting shapes.} \end{figure} \item[{\sf set fill {\it fill color/pattern}}] \index{fill} Sets the color or pattern for filling shapes. This command works in combination with shapes such as circles, ellipses, and boxes. If the argument is a color, then shapes are filled with the given color (see ``set color''). If it is a pattern, then the shapes are painted with the given pattern in black ink. Fig.~\ref{filpat:fig} lists a number of pre-defined patterns. To paint a shape in a color different from black, first set the color, then the pattern. That is, \begin{Verbatim} set fill red set pattern shade set background yellow box 2 2 \end{Verbatim} \noindent{}will draw a box and paint is using the shade pattern and red ink on a yellow background. To draw shapes that are not filled, use the command ``set fill clear''. That is, \begin{Verbatim} set fill clear box 2 2 \end{Verbatim} \noindent{}will draw an empty box. \item[{\sf set font {\it font-name}}] \index{font} \index{font} Sets the current font to {\it font-name}. Valid {\it font-name}s are listed in Appendix A.2. There are three types of font: PostScript, \LaTeX \ and Plotter. They will all work on any device, however \LaTeX \ fonts are drawn in outline on a plotter, and so may not look very nice. PostScript fonts will be emulated by \LaTeX \ fonts on non-PostScript printers. \item[{\sf set fontlwidth {\it line-width}}] \index{font (line width)} \index{fontlwidth} \index{fontlwidth} This sets the width of lines to be used to draw the stroked (Plotter fonts) on a PostScript printer. This has a great effect on their appearance. \begin{minipage}[c]{8cm} \begin{Verbatim} set font pltr amove .2 .2 text Tester set fontlwidth .1 set cap round rmove 0 1.5 text Tester \end{Verbatim} \end{minipage} \hfill \begin{minipage}[c]{7cm} \mbox{\includegraphics{primitives/fig/gc_fontlwidth}} \end{minipage} \item[{\sf set hei {\it character-size}}] \label{shei:cmd} \index{hei} \index{character size} Sets the height of text. For historical reasons, concerning lead type and printing conventions, a height of 10cm actually results in capital letters about 6.5cm tall. The default value of ``hei'' is 0.3633 (to mimic the default height of \LaTeX{} expressions). \item[{\sf set join {\sf mitre | round | bevel }}] \index{round (join)} \index{join} \index{join (set join)} \index{bevel} \index{round} \index{mitre} Defines how two wide lines will be joined together. With {\sf mitre}, the outside edges of the join are extended to a point and then chopped off at a certain distance from the intersection of the two lines. With {\bf round}, a curve is drawn between the outside edges. %%\graphin{gc_ljoin.eps}{12.0cm}{3.0cm}{1.0} \psgraphin{primitives/fig/gc_ljoin}{12.0}{3.0}{\sf set join} \item[{\sf set just left $|$ center $|$ right $|$ tl $|$ etc...} ] \label{sjust:cmd} \index{just} \index{justify (set)} Sets the justification which will be used for {\sf text} commands. \begin{minipage}[c]{8cm} \begin{Verbatim} amove 0.5 3 set just left box 1.5 0.6 text Justify left rmove 2 0 set just bl box 1.5 0.6 text Justify bl \end{Verbatim} \end{minipage} \hfill \begin{minipage}[c]{7cm} \mbox{\includegraphics{primitives/fig/gc_justify}} \end{minipage} \item[{\sf set lstyle {\it line-style}}] \label{lstyle:cmd} \index{lstyle (set)} \index{lstyle} Sets the current line style to line style number {\sf line-style}. There are 9 predefined line styles (1--9). When a line style is given with more than one digit the first digit is read as a run length in black, the second a run length in white, the third a run length in black, etc. \begin{minipage}[c]{8cm} \begin{Verbatim} set just left for z = 0 to 4 set lstyle z rline 2 0 rmove 0.1 0 write z rmove -2.1 -0.4 next z \end{Verbatim} \end{minipage} \hfill \begin{minipage}[c]{7cm} \mbox{\includegraphics{primitives/fig/gc_lstyle}} \end{minipage} \item[{\sf set lwidth {\it line-width}}] \index{lwidth} Sets the width of lines to {\it line-width} cm. A value of zero will result in the device default of about 0.02 cm, so a lwidth of .0001 gives a thinner line than an lwidth of 0. \item[{\sf set pattern {\it fill pattern}}] \index{pattern} Specifies the filling pattern. A number of pre-defined patterns is listed in Fig.~\ref{filpat:fig}. See the description of ``set fill'' for more information. Note that ``set pattern'' must come after ``set fill'' because ``set fill'' resets the pattern to solid. \item[{\sf set texscale {\it scale} $|$ {\it fixed} $|$ {\it none}}] \index{texscale} This setting controls the scaling of \LaTeX{} expressions (Sec.~\ref{latexexp:sec}): `\texttt{scale}' scales them to the value of `\texttt{hei}', `\texttt{fixed}' scales them to the closest \LaTeX{} default size to `\texttt{hei}', and `\texttt{none}' does not scale them. With `\texttt{none}', the font size in your graphics will be exactly the same as in your main document. \item[{\sf set titlescale {\it s}}] \index{titlescale} The graph title font size is set to `\texttt{titlescale}' times `\texttt{hei}'. \item[{\sf set ticksscale {\it s}}] \index{ticksscale} The size of the graph axis ticks is set to `\texttt{ticksscale}' times `\texttt{hei}'. \item[{\sf size {\it w} {\it h}}] Sets the size of GLE's output to {\it w} centimeter wide by {\it h} centimeter tall. This command usually appears at the top of a GLE script. That is, only commands that do not generate output can precede the `size' command. For example, the `include' command, subroutine definitions, and assignments to variables can appear before the `size' command. Commands like `aline', on the other hand, should appear after the `size' command. It is possible to omit the size command. In that case, the size of the output is determined by the `pagesize' command (see Fig.~\ref{fullpage:fig}). \item[{\sf sub {\it sub-name parameter1 parameter2 etc.}}] \index{sub} Defines a subroutine. The end of the subroutine is denoted with {\sf end sub}. Subroutines must be defined before they are used. Subroutines can be called inside any GLE expression, and can also return values. The parameters of a subroutine become local variables. Subroutines are re-entrant. \begin{Verbatim} sub tree x y a$ amove x y rline 0 1 write a$ return x/y end sub tree 2 4 "mytree" (Normal call to subroutine) slope = tree(2,4,"mytree") (Using subroutine in an expression) \end{Verbatim} \item[{\sf tex {\it string} [name {\it xxx}] [add {\it val}]}] \index{tex} Draw a \LaTeX{} expression at the current point using the current value of `justify'. See Sec.~\ref{latexexp:sec} for more information. Using the {\sf name} option, the \LaTeX{} expression can be named, just like a box. The size of the virtual named box can be increased with the {\sf add} option. \item[{\sf text {\it unquoted-text-string}}] \index{begin!text (single line)} \index{text} This is the simplest command for drawing text. The current point is unmodified after the text is drawn so following one text command with another will result in the second line of text being drawn on top of the first. To generate multiple lines of text, use the {\sf begin text} \ldots {\sf end text} construct. \preglecode{} \begin{Verbatim} text "Hi, how's tricks", said Jack! \end{Verbatim} \postglecode{} \item[{\sf write {\it string\$} $\ldots$}] \index{write} This command is similar to {\sf text} except that it expects a quoted string, string variable, or string expression as a parameter. If write has more than one parameter, it will concatenate the values of all the parameters. \begin{minipage}[c]{8cm} \begin{Verbatim} a$ = "Hello there " xx = sqrt(10) t$ = time$() c$ = a$+t$ write a$+t$ xx \end{Verbatim} \end{minipage} \hfill \begin{minipage}[c]{7cm} \mbox{\includegraphics{primitives/fig/gc_write}} \end{minipage} The built in functions {\sf sqrt()} and {\sf time\$()} are described in Appendix~\ref{fct:sec}. \end{commanddescription} gle-graphics-4.2.4c/gle-refman/cmd.sty0000664000000000000000000000552711405447072016267 0ustar rootroot%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % GLE - Graphics Layout Engine % % % % Modified BSD License % % % % Copyright (C) 2009 GLE. % % % % Redistribution and use in source and binary forms, with or without % % modification, are permitted provided that the following conditions % % are met: % % % % 1. Redistributions of source code must retain the above copyright % % notice, this list of conditions and the following disclaimer. % % % % 2. Redistributions in binary form must reproduce the above % % copyright notice, this list of conditions and the following % % disclaimer in the documentation and/or other materials provided with % % the distribution. % % % % 3. The name of the author may not be used to endorse or promote % % products derived from this software without specific prior written % % permission. % % % % THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR % % IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED % % WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE % % ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY % % DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL % % DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE % % GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS % % INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER % % IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR % % OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN % % IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \def\commandlabel#1{\makebox[\textwidth][l]{\hspace\labelsep #1}} \def\commanddescription{\list{}{\labelwidth\z@ \itemindent-\leftmargin\let\makelabel\commandlabel}} \let\endcommanddescription\endlist gle-graphics-4.2.4c/gle-refman/obsolete/obsolete.tex0000664000000000000000000005010411405447072021124 0ustar rootroot%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % GLE - Graphics Layout Engine % % % % Modified BSD License % % % % Copyright (C) 2009 GLE. % % % % Redistribution and use in source and binary forms, with or without % % modification, are permitted provided that the following conditions % % are met: % % % % 1. Redistributions of source code must retain the above copyright % % notice, this list of conditions and the following disclaimer. % % % % 2. Redistributions in binary form must reproduce the above % % copyright notice, this list of conditions and the following % % disclaimer in the documentation and/or other materials provided with % % the distribution. % % % % 3. The name of the author may not be used to endorse or promote % % products derived from this software without specific prior written % % permission. % % % % THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR % % IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED % % WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE % % ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY % % DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL % % DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE % % GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS % % INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER % % IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR % % OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN % % IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{GLE Installation on a PC} \index{DOS} To install GLE, put the distribution disk into drive a: and type: \begin{verbatim} a:install \end{verbatim} GLE requires at least 800K of disk space for a minimal installation and 3.3M for a full installation (including all device drivers and fonts). GLE also requires 530K or more of free memory. Use the DOS command CHKDSK to check this figure. If you don't have enough then take copies of your AUTOEXEC.BAT and CONFIG.SYS files and then remove as much as possible from these files. GLE may work with less memory depending on what you are drawing. The installation disk contains a version of CGLE which will make use of epanded memory. This version can run with 70K less memory but if you don't have expanded memory then it has to use your hard disk instead which is a great deal slower. \index{EPS} \index{Encapsulated PostScript} To produce an .eps file for inclusion in WordPerfect you would type: \begin{verbatim} C:> psgle myfile /eps \end{verbatim} This will create a file called myfile.EPS. WordPerfect can also understand a special file format which contains both an EPS file for printing to PostScript printers and a bitmap TIFF image for displaying on the screen. GLE can create this sort of file with the command: \begin{verbatim} C:> wpgle myfile \end{verbatim} This will create a file called MYFILE.EPF which you can include into WordPerfect. If your PC is connected to a VAX computer which has a PostScript printer you may copy MYFILE.PS to the VAX using a standard file transfer program (e.g. FTP, KERMIT, VDISK) The best way to see what GLE can do is to have a play with it, simply start it up and try out some of the examples: \begin{verbatim} Press F3 (Load file) Press (for a menu of GLE files) Use arrow keys to select example, then press Press F10 to draw the picture Press ESC to get back to the GLE editor. ... When you find a graph try pressing F9 and modifying one of the fields (use F1 for an explanation of each field). \end{verbatim} Used symbols for PC: \begin{verbatim} GLE_NOCONTROLD TRUE (Stops ^D being added to ps files) (this is the default for unix) GLE_ADDBGI ... (high resolution BGI-Driver) (see Device Drivers) \end{verbatim} % % \input{sm_gle32_tut} %%\section{32bit DOS Version of GLE} %%\index{DOS!32bit} % \section{Running GLE on a VAX} \index{VAX} The command to run GLE is: \begin{verbatim} $ cgle myfile.gle $ cgle myfile.gle /dev=regis $ cgle myfile.gle /dev=x \end{verbatim} See the directory CGLE\_EXAMPLES: for examples and templates. To get access to these files from the GLE menus use the commands: \begin{verbatim} $ define workarea sys$login:,cgle_examples: $ set default workarea: $ cgle stack4b.gle ! or any other example \end{verbatim} If your keyboard doesn't have the function keys F9 thru F14 you can use GOLD (PF1) followed by the numbers 9,0,1,2,3,4 (on the top of the QWERTYUIOP keypad). Keyboard Mappings:\\ \begin{center} \begin{tabular}{|l|l|l|l|} \hline VT100 & VT200 & PC & Meaning \\ \hline GOLD 1 & F11 & F1 & Help \\ GOLD 2 & F12 & F2 & Save \\ GOLD 3 & F13 & F3 & Load \\ GOLD 4 & F14 & F4 & Save-as \\ GOLD 9 & F9 & F9 & Graph-menu \\ GOLD 0 & F10 & F10 & Draw-it \\ Control+Z & Control+Z & Control+Z & Exit/Escape \\ & & Alt+X & Exit/Escape \\ Control+E & Control+E & & Calls VAX EDT \\ Control+F & Control+F & & Toggle fast/slow text \\ Control+R & Control+R & F5 & Shows errors \\ & & Control+S & Shells to DOS \\ \hline \end{tabular} \end{center} Supported devices: VT100, REGIS (VT125, VT240), TEK4010, VWS, XWindows. Supported output: PostScript, HPGL, Epson, Epson 24pin, HP Deskjet. \index{printing} To create a PostScript output file (.PS) and automatically print it to the LASER queue you would type: \begin{verbatim} $ cgle myfile /print \end{verbatim} \index{EPS} \index{Encapsulated PostScript} To produce an .eps file for inclusion in \LaTeX\ you would type: \begin{verbatim} $ cgle myfile /dev=eps \end{verbatim} To produce a .ps file suitable for printing to a laser writer type: \begin{verbatim} $ cgle myfile /dev=ps \end{verbatim} The DCL symbol GLE\_NOCONTROLD should be set to "TRUE" to kill the \verb#^D# on vms systems. If you set the DCL symbol GLE\_EDITOR to TPU then you will get TPU instead of EDT when you press \verb#^E#. \section{It didn't work, bugs!!!} \index{bugs} \index{errors} If the installation fails, or one of the example GLE files fails to work then the most likely reason is a shortage of memory due to too many memory resident programs/drivers. To fix this remove these utilities from your autoexec.bat and config.sys files temporarily. There may well be a bug in your GLE file, try using the trace option to find the bug.\\ On a PC: \begin{verbatim} C:\GLE> psgle myfile /trace \end{verbatim} On a VAX: \begin{verbatim} $ cgle myfile /dev=ps /trace \end{verbatim} Another reason for a failure is a bug in GLE, {\bf Please} report bugs to Chris Pugmire (Internet srghcxp@grv.dsir.govt.nz, grv::srghcxp) so they can be fixed. If possible, try and find a way of repeating the problem, then send relevant GLE and data files with an outline of what is wrong. \index{device drivers} \index{drivers} \index{EPSON} \index{LaserJet} \index{DeskJet} \index{plotters} \index{printers} \section{Device Drivers} GLE supports the following devices. Interactive: IBM/PC (BGI), VT100, REGIS (VT125, VT240), TEK4010, VWS, XWindows. Output: PostScript, HPGL, EPSON, EPSON 24pin, HP Deskjet. Keyboard Mappings: \begin{center} \begin{tabular}{|l|l|l|l|} \hline VT100 & VT200 & PC & Meaning \\ \hline GOLD 1 & F11 & F1 & Help \\ GOLD 2 & F12 & F2 & Save \\ GOLD 3 & F13 & F3 & Load \\ GOLD 4 & F14 & F4 & Save-as \\ GOLD 9 & F9 & F9 & Graph-menu \\ GOLD 0 & F10 & F10 & Draw-it \\ Control+Z & Control+Z & Control+Z & Exit/Escape \\ & & Alt+X & Exit/Escape \\ Control+E & Control+E & & Calls VAX EDT \\ Control+F & Control+F & & Toggle fast/slow text \\ \hline \end{tabular} \end{center} To find out what drivers are available type in: \begin{verbatim} ls /usr/local/gle/gle_* \end{verbatim} \subsection{PC Screen Drivers} \index{PC screen driver} \index{Device Drivers!PC screen driver} Remember that what you see on the screen isn't always what you will get on the printer. For example filled regions will not be filled, and some characters may not look right. After pressing F10 and drawing the graph it can be annotated by using the mouse (or arrow keys) to draw lines, text and boxes. To draw lines simply click on the points of the line, use the right hand mouse button to `pick up' the pen. To draw text press the letter `t' and then click on where you would like the text to be drawn. All movements are rounded to the grid size settings which are 1.0cm, 0.1cm, 0.01cm etc. The height and colour of the text/lines is determined by the current settings at the end of the GLE file. If there is no mouse driver loaded then a cross-hair will appear and it can be moved around using the arrow keys. Press `c' to click, instead of the mouse button. % sm \subsubsection{SuperVGA} \index{Device Drivers!PC SVGA} % To use a SuperVGA card you first need to get a BGI driver that supports your card. From anonymous FTP you can get svgabgi3.zip: ftp wuarchive.wustl.edu \begin{verbatim} ftp> user anonymous ftp> (mail ident) ftp> cd /mirrors/msdos/borland ftp> binary ftp> get svgabgi3.zip ftp> quit \end{verbatim} Then unzip it, decide which driver will match your SVGA card and copy that driver into \verb?\GLE\EXE?. \begin{verbatim} c:> pkunzip svgabgi3.zip c:> pkunzip svgabgi3.zip c:> type readme. c:> copy svga16.bgi \gle\exe \end{verbatim} Define an environment variable to tell gle about this driver and which mode to use. (put this line in your autoexec.bat) \begin{verbatim} c:> set gle_addbgi=4.svga16 \end{verbatim} % sm %%\subsection{GO32/GRX Screen Driver} %%\include{sm_gle32_prog} \input{sm_gle32_prog} % \subsection{PostScript Driver} \index{PostScript (driver)} \index{printing} To print a GLE file to the laser printer type: \begin{verbatim} $ cgle myfile /print \end{verbatim} or on a PC: \begin{verbatim} C:\GLE> psgle myfile C:\GLE> print myfile.ps \end{verbatim} \index{flipping} The postscript drivers for GLE will automatically flip a picture to best fit onto the page, e.g. a wide graph (as defined by the size command at the top) will be drawn in {\em landscape} mode and a tall thin graph will be drawn in {\em portrait} mode. \index{EPS} \index{Device Drivers!PostScript} \index{PostScript (EPS, WordPerfect)} \index{Encapsulated PostScript} \index{WordPerfect} \index{\LaTeX \ (inserting graphs)} To produce an .eps file on a VAX for inclusion in \LaTeX \ or WordPerfect you would type: \begin{verbatim} $ cgle myfile /dev=eps \end{verbatim} On a PC you would type: \begin{verbatim} C:\GLE> psgle myfile /eps (this creates myfile.eps, not myfile.ps) \end{verbatim} WordPerfect can also understand a special file format which contains both an EPS file for printing to PostScript printers and a bitmap TIFF image for displaying on the screen. GLE can create this sort of file with the command: \begin{verbatim} C:> wpgle myfile \end{verbatim} This will create a file called MYFILE.EPF which you can include into WordPerfect. %Inside your \LaTeX \ document use the \LaTeX \ command: %\begin{verbatim} % \graphin{myfile.eps}{12.0cm}{3.0cm}{1.0} %\end{verbatim} % sm To include Postscript in a \LaTeX \ document use epsf.sty of the {\sf DVIPS}-package. Inside your \LaTeX \ document use {\sf\\epsffile } to put it at the right place in a {\sf picture}-environment, e.g. : \begin{verbatim} \documentstyle[12pt,epsf]{article} ... \begin{picture}(13.0, 5.5) \put(0.0,0.0){ \epsfclipon \epsfxsize=6cm \epsffile[60 170 560 740]{myfile.ps} } % [ bounding-box ] { file_name } \end{picture} \end{verbatim} Advanced features of {\sf epsf.sty} are described in {\tt ../TeX/src/dvips/dvips.tex}. % sm \index{lwidth} \index{line width} The laser printer driver will draw all zero width lines .02cm wide for any line width equal to zero, but if an lwidth is greater than zero and less than or equal to .0001 then it will use a line width of 1 pixel. Without this it would be impossible to specify a line width that didn't occasionally get rounded to 2 pixels. There are also some commandline switches \begin{verbatim} /nod (add ^D to ps file) /addd (Don't add ^D to ps file) /nomaxpath (Don't choke on complex fill paths) /fill (For dvibit, makes bar's filled instead of shaded) \end{verbatim} \index{Device Drivers!TEK4010} \subsection{TEK4010 Driver} This driver allows initialization sequences to be defined with the symbols TEK\_OPEN and TEK\_CLOSE. On a VAX this is normally done by CGLECMD.COM so that when you specify /DEV=V550 the assignments are done for you. (V550 = Visual 550) \index{plotter pens} \index{pens} \index{HPGL} \subsection{HPGL Driver} \index{Device Drivers!HPGL Driver} This driver allows initialization sequences to be defined in the symbols HPGL\_OPEN and HPGL\_CLOSE. On the PC use environment variables and on the VAX use DCL symbols. Also HPGL\_WIDTH and HPGL\_HEIGHT can be defined for non A3 plotters. The HPGL driver supports sizes greater than A3. The symbols HPGL\_ADDX, HPGL\_ADDY add a margin to the plot. These default to .9cm and 1.5cm On a VAX this is normally done by CGLECMD.COM so that when you specify /DEV=HPA4 the assignments are done for you. The HPGL driver assigns the following colours to pen numbers: 1=black, 2=red, 3=green, 4=blue, 5=magenta, 6=white, 7=yellow. To get Gle-Output in a WIN-WORD text, HPGL is a good and easy way to do it. \index{Win-Word} \index{Win-Word!HPGL-Import} The use of the HPGL-Converter HP2XX of Heinz W. Werntges is another way to get various pix-map format output. HP2XX has been ported successfully for Unix, OS/2, DOS, Amiga, Atari, VMS and AXP. \\ HP2XX has many controling options. In the current version it is able to write the following formats: mf, cad, em, epic, eps, pcl, pcx, pic, img, pbm, pre, uis. HP2XX is available via anonymous FTP at ftp.rz.uni-duesseldorf.de. For further information ask Heinz (Internet: werntges@clio.rz.uni-duesseldorf.de). \index{hp2xx} \index{HPGL!converter} % \subsection{PC Bitmap Drivers} \index{PC Bitmap Driver} \index{Device Drivers!PC Bitmap Driver} GLE supports the EPSON 8 and 24 pin and HP deskjet/laserjet printers. To support bitmap devices which require a large amount of memory GLE first writes a device independent file OUT.DVI, then the appropriate bitmap driver for your printer will read the OUT.DVI file and create a bitmap which it then prints to LPT1: \begin{verbatim} C:> dvigle myfile (produces OUT.DVI) C:> dviepson (creates bitmap and prints to LPT1:) \end{verbatim} The output options are: \begin{verbatim} C:> dviepson Standard EPSON printers C:> dviep24 24 Pin EPSON printers (180dpi) C:> dvilj HP Laser jet, Desk jet (150 dpi) C:> dvilj300 HP Laser jet, Desk jet (300 dpi) C:> dviprint -dpj HP PaintJet printers C:> dviprint -dsx Sixel graphics driver \end{verbatim} The high resolution drivers (dviep24, dvilj300) are significantly slower than the low resolution drivers so would only be used for final output. See the file AAREADME.GLE for the latest information on drivers. % sm \clearpage \subsection{DVIPRINT} \index{Bitmap Driver} \index{Device Drivers! DVIPRINT} All available bitmap drivers and options can be use with \begin{verbatim} gle myfile -ddevice [-hires] [...] \end{verbatim} To find out what drivers are available type in: \begin{verbatim} gle_dviprint Usage: dviprint [-depson | -dlj] [-old] [-hires] [-vhires] [-debug] [-output xx.prt] -depson To produce output for epson printers -dwp To add tiff image to wp .eps file -dec Epson color ribbon printers -dlj To produce output for HP LaserJet printers -dpj To produce output for HP PaintJet printers -dsx Sixel graphics, for DEC printers la100's ... -dvt To print bitmap to screen (preview) -over Overhead transparency mode for PaintJet -old For old HP Laser Jet printers (no compression) -hires Uses high resolution for that printer (slower) -vhires Viritcal high resolution for sixel graphics -wide If your printer has a wide carriage -noflip Disable's auto flipping -flip Forces flip -nosquash Tries to print it full size -compress Force internal bitmap compression (slow) -noff No form feed -debug Prints debug messages -out x.x Prints output to file instead of printer port \end{verbatim} % sm % \subsection{Fonts (font mapping)} \index{Device Drivers!fonts} By default the generic fonts (rm, rmb, ss, tt etc) will all map to PLSR (plotter simplex roman) on BITMAP and HPGL drivers. To make this happen on other drivers put the command {\sf plotter fonts} immediately after the {\sf size} command at the top of the GLE file. A typical result of this change in fonts is that something that lines up on the screen will not line up when printed to an EPSON printer. If this happens then use the {\sf plotter fonts} command. If a character is missing from a font, or isn't the particular variation you like, you can define a character to be from a different font in this way: \begin{verbatim} \chardef{%}{{\setfont{texcmr}\char{37}}} \chardef{[}{{\setfont{texcmr}\char{91}}} \chardef{]}{{\setfont{texcmr}\char{93}}} \end{verbatim} On the PC some fonts may not be installed to save disk space. When one of the missing fonts is called for, a replacement font will be displayed, this may look terrible and some special characters may be completely wrong. \clearpage More importantly if you use a font which does not have its font metric file installed (e.g. C:/GLE/FONTS/PLSR.FMT) then the PostScript driver will space the characters incorrectly. This can be fixed by extracting that particular metric file from the distribution file CGLE\_FVE.ZIP using PKUNZIP. \subsection{Printer Fonts} \index{Device Printer!fonts} You can now tell gle about postscript fonts that you have downloaded into your own printer. Lets pretend we are adding a font called Greek-Bold \begin{verbatim} 1) Download the font into you laser printer 2) Add a line to FONT.DAT psgb 86 psgb.fmt plsr.fve psgb.fmt a b c d a = GLE's name for the font b = The next unused number in font.dat c = The font metric file, this can be created using makefmt from and adobe font metric file (.afm) which you should have been supplied with your font. d = The font vector file, this is just a font that that gle can use to draw your font on non postscript devices. 3) Add a line to psfont.dat psgb Greek-Bold \end{verbatim} This tells the postscript driver that this is a font that the printer knows how to deal with. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5 gle-graphics-4.2.4c/gle-refman/obsolete/sm_gle32_prog.tex0000644000000000000000000001357711405447072021765 0ustar rootroot%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % GLE - Graphics Layout Engine % % % % Modified BSD License % % % % Copyright (C) 2009 GLE. % % % % Redistribution and use in source and binary forms, with or without % % modification, are permitted provided that the following conditions % % are met: % % % % 1. Redistributions of source code must retain the above copyright % % notice, this list of conditions and the following disclaimer. % % % % 2. Redistributions in binary form must reproduce the above % % copyright notice, this list of conditions and the following % % disclaimer in the documentation and/or other materials provided with % % the distribution. % % % % 3. The name of the author may not be used to endorse or promote % % products derived from this software without specific prior written % % permission. % % % % THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR % % IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED % % WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE % % ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY % % DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL % % DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE % % GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS % % INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER % % IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR % % OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN % % IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \subsection{GO32/GRX Screen Driver} \index{GLE32!GRX} \index{GO32} \index{GLE32!SVGA} GLE 32 is a 32-bit-Implementation of GLE for MS-DOS. Axel Rohde did this port of the GLE version 3.3b GLE32 was compiled with the free port of the GNU C-compiler DJGPP by D.J. Delorie. The compiler itself and the DJGPP-compiled executables are running with the 32-bit DOS-extender GO32.\\ % GLE32 was compiled using Borland-C compatible libraries for text and graphics-modes and some filesystem calls. There exists for the DJGPP specific graphics-library GRX from Csaba Biegl a emulation-library called BCCGRX from Hartmut Schirmer to replace calls of the Borland-Graphics-Interface (BGI) with GRX-calls. Hartmut has implemented the mouse-functionality, too, with GRX-calls.\\ % In the example on the following lines, the progams are installed in the directory \verb#d:\gle32#, the fonts are in \verb#d:\gle32\fonts#. GLE 32 searches for its vector-fonts in the directory \verb#GLE_TOP#. Don't forget the trailing slash. In addition to this, \verb#GL32FONT# points to the directory where the bitmap-fonts (you can see them in the status-line of the preview) can be found. \\ % The directory with the DOS-Extender GO32 and, if there's no numeric-prozessor installed, the co-prozessor-emulator, must be in the path-environment. \begin{verbatim} set GLE_TOP=d:/gle32/ set gle32font=d:/gle32/grxfont path=..your normal path..;d:\gle; go32=driver d:/gle32/driver/vesa_s3.grn gw 1024 gh 768 tw 80 th 25 nc 256 \end{verbatim} The configuration of graphics-drivers is a little bit more complicated. Please study the documentation of the Libraries GRX und BCCGRX and the README of GO32 in their directories. The environment GO32 sets den path-name and the mode of the driver an. This example installs the driver for an S3 graphics-board with a resolution of 1024 horizontal 768 vertical pixels and 256 colors. There's a second way to install a graphics-mode. If the environment- variables GLE32WIDTH, GLE32HEIGHT and GLE32COLORS are set, the graphics- mode in the GO32 variable is overridden. You still have to specify a driver in the GO32 environment. \begin{verbatim} set GLE32WIDTH=800 set GLE32HEIGHT=600 set GLE32COLORS=16 \end{verbatim} There's a prepared batch-file \verb#setgle32.bat# to set all the environment- variables in the directory gle32. To figure out, which modes are supported, try to run the program modetest in the directory \verb#gle32\driver\doc#.\\ \begin{center} ! WARNING !\end{center} A wrong installed graphics-mode can DESTROY your MONITOR (and/or graphics board) if the refresh rate is too high! \begin{center} USE THIS ON YOUR OWN RISK ! \end{center} You should take a look into the manuals of your monitor and your graphics-adapter to figure out, which horizontal frequencies are supported. If the horizontal frequency of the monitor is 64 kHz or higher, you MAY feel save. (MY Monitor has a horizontal frequency of 64 kHz and supports a resolution of 1024x768 with a refresh rate up to 80Hz.)\\ % If you want to go save, don't set the environment go32 at all! This will use the normal (flickering) VGA-mode on a VGA-compatible adapter.\\ % For more detailed information and instructions how to install GO32 see \verb#gle32.txt#! gle-graphics-4.2.4c/gle-refman/obsolete/symbols.tex0000644000000000000000000004145511405447072021007 0ustar rootroot%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % GLE - Graphics Layout Engine % % % % Modified BSD License % % % % Copyright (C) 2009 GLE. % % % % Redistribution and use in source and binary forms, with or without % % modification, are permitted provided that the following conditions % % are met: % % % % 1. Redistributions of source code must retain the above copyright % % notice, this list of conditions and the following disclaimer. % % % % 2. Redistributions in binary form must reproduce the above % % copyright notice, this list of conditions and the following % % disclaimer in the documentation and/or other materials provided with % % the distribution. % % % % 3. The name of the author may not be used to endorse or promote % % products derived from this software without specific prior written % % permission. % % % % THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR % % IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED % % WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE % % ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY % % DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL % % DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE % % GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS % % INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER % % IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR % % OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN % % IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \chapter{SYMBOLS} The following table lists all the symbols (and the commands for generating them) available in GLE's text module. \begin{tabular}{llllll} \\ \multicolumn{6}{l}{\em Lowercase Greek letters} \\ \hline $\alpha$ & \verb+\alpha+ & $\iota$ & \verb+\iota+ & $\sigma$ & \verb+\sigma+ \\ $\beta$ & \verb+\beta+ & $\kappa$ & \verb+\kappa+ & $\varsigma$ & \verb+\varsigma+ \\ $\gamma$ & \verb+\gamma+ & $\lambda$ & \verb+\lambda+ & $\tau$ & \verb+\tau+ \\ $\delta$ & \verb+\delta+ & $\mu$ & \verb+\mu+ & $\upsilon$ & \verb+\upsilon+ \\ $\epsilon$ & \verb+\epsilon+ & $\nu$ & \verb+\nu+ & $\phi$ & \verb+\phi+ \\ $\varepsilon$ & \verb+\varepsilon+ & $\xi$ & \verb+\xi+ & $\varphi$ & \verb+\varphi+ \\ $\zeta$ & \verb+\zeta+ & $\pi$ & \verb+\pi+ & $\chi$ & \verb+\chi+ \\ $\eta$ & \verb+\eta+ & $\varpi$ & \verb+\varpi+ & $\psi$ & \verb+\psi+ \\ $\theta$ & \verb+\theta+ & $\rho$ & \verb+\rho+ & $\omega$ & \verb+\omega+ \\ $\vartheta$ & \verb+\vartheta+ & $\varrho$ & \verb+\varrho+ \\ \end{tabular} \newpage \begin{tabular}{llllll} \\ \multicolumn{6}{l}{\em Uppercase Greek Letters} \\ \hline $\Gamma$ & \verb+\Gamma+ & $\Xi$ & \verb+\Xi+ & $\Phi$ & \verb+\Phi+ \\ $\Delta$ & \verb+\Delta+ & $\Pi$ & \verb+\Pi+ & $\Psi$ & \verb+\Psi+ \\ $\Theta$ & \verb+\Theta+ & $\Sigma$ & \verb+\Sigma+ & $\Omega$ & \verb+\Omega+ \\ $\Lambda$ & \verb+\Lambda+ & $\Upsilon$ & \verb+\Upsilon+ \\ \\ \multicolumn{6}{l}{\em Accents\dag} \\ \hline \`{o} & \verb+\`{o}+ & \={o} & \verb+\={o}+ & \t{oo} & \verb+\t{oo}+ \\ \'{o} & \verb+\'{o}+ & \.{o} & \verb+\.{o}+ & \c{o} & \verb+\c{o}+ \\ \^{o} & \verb+\^{o}+ & \u{o} & \verb+\u{o}+ & \d{o} & \verb+\d{o}+ \\ \"{o} & \verb+\"{o}+ & \v{o} & \verb+\v{o}+ & \b{o} & \verb+\b{o}+ \\ \~{o} & \verb+\~{o}+ & \H{o} & \verb+\H{o}+ \\ \\ \multicolumn{6}{l}{\em Foreign Symbols\dag} \\ \hline \oe & \verb+\oe+ & \aa & \verb+\aa+ & \l & \verb+\l+ \\ \OE & \verb+\OE+ & \AA & \verb+\AA+ & \L & \verb+\L+ \\ \ae & \verb+\ae+ & \o & \verb+\o+ & \ss & \verb+\ss+ \\ \AE & \verb+\AE+ & \O & \verb+\O+ \\ \\ \multicolumn{6}{l}{\em Ellipsis} \\ \hline $\cdots$ & \verb+\cdots+ & $\ddots$ & \verb+\ddots+ & $\vdots$ & \verb+\vdots+ \\ \end{tabular} \newpage \begin{tabular}{llllll} \\ \multicolumn{6}{l}{\em Arrow symbols} \\ \hline $\leftarrow$ & \verb+\leftarrow+ & $\longleftarrow$ & \verb+\longleftarrow+ & $\uparrow$ & \verb+\uparrow+ \\ $\Leftarrow$ & \verb+\Leftarrow+ & $\Longleftarrow$ & \verb+\Longleftarrow+ & $\Uparrow$ & \verb+\Uparrow+ \\ $\rightarrow$ & \verb+\rightarrow+ & $\longrightarrow$ & \verb+\longrightarrow+ & $\downarrow$ & \verb+\downarrow+ \\ $\Rightarrow$ & \verb+\Rightarrow+ & $\Longrightarrow$ & \verb+\Longrightarrow+ & $\Downarrow$ & \verb+\Downarrow+ \\ $\leftrightarrow$ & \verb+\leftrightarrow+ & $\longleftrightarrow$ & \verb+\longleftrightarrow+ & $\updownarrow$ & \verb+\updownarrow+ \\ $\Leftrightarrow$ & \verb+\Leftrightarrow+ & $\Longleftrightarrow$ & \verb+\Longleftrightarrow+ & $\Updownarrow$ & \verb+\Updownarrow+ \\ $\mapsto$ & \verb+\mapsto+ & $\longmapsto$ & \verb+\longmapsto+ & $\nearrow$ & \verb+\nearrow+ \\ $\hookleftarrow$ & \verb+\hookleftarrow+ & $\hookrightarrow$ & \verb+\hookrightarrow+ & $\searrow$ & \verb+\searrow+ \\ $\leftharpoonup$ & \verb+\leftharpoonup+ & $\rightharpoonup$ & \verb+\rightharpoonup+ & $\swarrow$ & \verb+\swarrow+ \\ $\leftharpoondown$ & \verb+\leftharpoondown+ & $\rightharpoondown$ & \verb+\rightharpoondown+ & $\nwarrow$ & \verb+\nwarrow+ \\ $\rightleftharpoons$ & \verb+\rightleftharpoons+ & $\leadsto$ & \verb+\leadsto+ \\ \\ \multicolumn{6}{l}{\em Binary operation symbols} \\ \hline $\pm$ & \verb+\pm+ & $\sqcap$ & \verb+\sqcap+ & $\rhd$ & \verb+\rhd+ \\ $\mp$ & \verb+\mp+ & $\sqcup$ & \verb+\sqcup+ & $\unlhd$ & \verb+\unlhd+ \\ $\times$ & \verb+\times+ & $\vee$ & \verb+\vee+ & $\unrhd$ & \verb+\unrhd+ \\ $\div$ & \verb+\div+ & $\wedge$ & \verb+\wedge+ & $\oplus$ & \verb+\oplus+ \\ $\ast$ & \verb+\ast+ & $\setminus$ & \verb+\setminus+ & $\ominus$ & \verb+\ominus+ \\ $\star$ & \verb+\star+ & $\wr$ & \verb+\wr+ & $\otimes$ & \verb+\otimes+ \\ $\circ$ & \verb+\circ+ & $\diamond$ & \verb+\diamond+ & $\oslash$ & \verb+\oslash+ \\ $\bullet$ & \verb+\bullet+ & $\bigtriangleup$ & \verb+\bigtriangleup+ & $\odot$ & \verb+\odot+ \\ $\cdot$ & \verb+\cdot+ & $\bigtriangledown$ & \verb+\bigtriangledown+ & $\bigcirc$ & \verb+\bigcirc+ \\ $\cap$ & \verb+\cap+ & $\triangleleft$ & \verb+\triangleleft+ & $\dagger$ & \verb+\dagger+ \\ $\cup$ & \verb+\cup+ & $\triangleright$ & \verb+\triangleright+ & $\ddagger$ & \verb+\ddagger+ \\ $\uplus$ & \verb+\uplus+ & $\lhd$ & \verb+\lhd+ & $\amalg$ & \verb+\amalg+ \\ \end{tabular} \newpage \begin{tabular}{llllll} \\ \multicolumn{6}{l}{\em Relational symbols} \\ \hline $\leq$ & \verb+\leq+ & $\geq$ & \verb+\geq+ & $\equiv$ & \verb+\equiv+ \\ $\prec$ & \verb+\prec+ & $\succ$ & \verb+\succ+ & $\sim$ & \verb+\sim+ \\ $\preceq$ & \verb+\preceq+ & $\succeq$ & \verb+\succeq+ & $\simeq$ & \verb+\simeq+ \\ $\ll$ & \verb+\ll+ & $\gg$ & \verb+\gg+ & $\asymp$ & \verb+\asymp+ \\ $\subset$ & \verb+\subset+ & $\supset$ & \verb+\supset+ & $\approx$ & \verb+\approx+ \\ $\subseteq$ & \verb+\subseteq+ & $\supseteq$ & \verb+\supseteq+ & $\cong$ & \verb+\cong+ \\ $\sqsubset$ & \verb+\sqsubset+ & $\sqsupset$ & \verb+\sqsupset+ & $\neq$ & \verb+\neq+ \\ $\sqsubseteq$ & \verb+\sqsubseteq+ & $\sqsupseteq$ & \verb+\sqsupseteq+ & $\doteq$ & \verb+\doteq+ \\ $\in$ & \verb+\in+ & $\ni$ & \verb+\ni+ & $\propto$ & \verb+\propto+ \\ $\vdash$ & \verb+\vdash+ & $\dashv$ & \verb+\dashv+ & $\perp$ & \verb+\perp+ \\ $\models$ & \verb+\models+ & $\mid$ & \verb+\mid+ & $\parallel$ & \verb+\parallel+ \\ $\bowtie$ & \verb+\bowtie+ & $\Join$ & \verb+\Join+ & $\smile$ & \verb+\smile+ \\ $\frown$ & \verb+\frown+ \\ \\ \multicolumn{6}{l}{\em Delimiter symbols} \\ \hline $($ & \verb+(+ & $)$ & \verb+)+ & $\uparrow$ & \verb+\uparrow+ \\ $[$ & \verb+[+ & $]$ & \verb+]+ & $\downarrow$ & \verb+\downarrow+ \\ $\{$ & \verb+\{+ & $\}$ & \verb+\}+ & $\updownarrow$ & \verb+\updownarrow+ \\ $\lfloor$ & \verb+\lfloor+ & $\rfloor$ & \verb+\rfloor+ & $\Uparrow$ & \verb+\Uparrow+ \\ $\lceil$ & \verb+\lceil+ & $\rceil$ & \verb+\rceil+ & $\Downarrow$ & \verb+\Downarrow+ \\ $\langle$ & \verb+\langle+ & $\rangle$ & \verb+\rangle+ & $\Updownarrow$ & \verb+\Updownarrow+ \\ $/$ & \verb+/+ & $\backslash$ & \verb+\backslash+ \\ $|$ & \verb+|+ & $\|$ & \verb+\|+ \\ \end{tabular} \newpage \begin{tabular}{llllll} \\ \multicolumn{6}{l}{\em Miscellaneous symbols} \\ \hline $\aleph$ & \verb+\aleph+ & $\nabla$ & \verb+\nabla+ & $\sharp$ & \verb+\sharp+ \\ $\hbar$ & \verb+\hbar+ & $\surd$ & \verb+\surd+ & $\backslash$ & \verb+\backslash+ \\ $\imath$ & \verb+\imath+ & $\top$ & \verb+\top+ & $\partial$ & \verb+\partial+ \\ $\jmath$ & \verb+\jmath+ & $\bot$ & \verb+\bot+ & $\infty$ & \verb+\infty+ \\ $\ell$ & \verb+\ell+ & $\|$ & \verb+\|+ & $\Box$ & \verb+\Box+ \\ $\wp$ & \verb+\wp+ & $\angle$ & \verb+\angle+ & $\Diamond$ & \verb+\Diamond+ \\ $\Re$ & \verb+\Re+ & $\forall$ & \verb+\forall+ & $\triangle$ & \verb+\triangle+ \\ $\Im$ & \verb+\Im+ & $\exists$ & \verb+\exists+ & $\clubsuit$ & \verb+\clubsuit+ \\ $\mho$ & \verb+\mho+ & $\neg$ & \verb+\neg+ & $\diamondsuit$ & \verb+\diamondsuit+ \\ $\prime$ & \verb+\prime+ & $\flat$ & \verb+\flat+ & $\heartsuit$ & \verb+\heartsuit+ \\ $\emptyset$ & \verb+\emptyset+ & $\natural$ & \verb+\natural+ & $\spadesuit$ & \verb+\spadesuit+ \\ \\ \multicolumn{6}{l}{\em Trigonometric symbols} \\ \hline $\arccos$ & \verb+\arccos+ & $\dim$ & \verb+\dim+ & $\log$ & \verb+\log+ \\ $\arcsin$ & \verb+\arcsin+ & $\exp$ & \verb+\exp+ & $\max$ & \verb+\max+ \\ $\arctan$ & \verb+\arctan+ & $\gcd$ & \verb+\gcd+ & $\min$ & \verb+\min+ \\ $\arg$ & \verb+\arg+ & $\hom$ & \verb+\hom+ & $\Pr$ & \verb+\Pr+ \\ $\cos$ & \verb+\cos+ & $\inf$ & \verb+\inf+ & $\sec$ & \verb+\sec+ \\ $\cosh$ & \verb+\cosh+ & $\ker$ & \verb+\ker+ & $\sin$ & \verb+\sin+ \\ $\cot$ & \verb+\cot+ & $\lg$ & \verb+\lg+ & $\sinh$ & \verb+\sinh+ \\ $\coth$ & \verb+\coth+ & $\lim$ & \verb+\lim+ & $\sup$ & \verb+\sup+ \\ $\csc$ & \verb+\csc+ & $\liminf$ & \verb+\liminf+ & $\tan$ & \verb+\tan+ \\ $\deg$ & \verb+\deg+ & $\limsup$ & \verb+\limsup+ & $\tanh$ & \verb+\tanh+ \\ $\det$ & \verb+\det+ & $\ln$ & \verb+\ln+ \\ \end{tabular} \newpage \begin{tabular}{llllll} \\ \multicolumn{6}{l}{\em Variable-size symbols} \\ \hline $\sum$ & \verb+\sum+ & $\bigcap$ & \verb+\bigcap+ & $\bigodot$ & \verb+\bigodot+ \\ $\prod$ & \verb+\prod+ & $\bigcup$ & \verb+\bigcup+ & $\bigotimes$ & \verb+\bigotimes+ \\ $\coprod$ & \verb+\coprod+ & $\bigsqcup$ & \verb+\bigsqcup+ & $\bigoplus$ & \verb+\bigoplus+ \\ $\int$ & \verb+\int+ & $\bigvee$ & \verb+\bigvee+ & $\biguplus$ & \verb+\biguplus+ \\ $\oint$ & \verb+\oint+ & $\bigwedge$ & \verb+\bigwedge+ \\ \\ \multicolumn{6}{l}{\em Punctuation symbols\dag} \\ \hline \dag & \verb+\dag+ & \S & \verb+\S+ & \copyright & \verb+\copyright+ \\ \ddag & \verb+\ddag+ & \P & \verb+\P+ & \pounds & \verb+\pounds+ \\ ?` & \verb+?`+ & !` & \verb+!`+ & \ldots & \verb+\ldots+ \\ \end{tabular} \dag\ These symbols may not be used in math mode unless they are enclosed in an \verb+\mbox+. gle-graphics-4.2.4c/gle-refman/obsolete/fonts.tex0000664000000000000000000001261411405447072020445 0ustar rootroot%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % GLE - Graphics Layout Engine % % % % Modified BSD License % % % % Copyright (C) 2009 GLE. % % % % Redistribution and use in source and binary forms, with or without % % modification, are permitted provided that the following conditions % % are met: % % % % 1. Redistributions of source code must retain the above copyright % % notice, this list of conditions and the following disclaimer. % % % % 2. Redistributions in binary form must reproduce the above % % copyright notice, this list of conditions and the following % % disclaimer in the documentation and/or other materials provided with % % the distribution. % % % % 3. The name of the author may not be used to endorse or promote % % products derived from this software without specific prior written % % permission. % % % % THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR % % IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED % % WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE % % ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY % % DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL % % DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE % % GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS % % INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER % % IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR % % OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN % % IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \samepage {\small \begin{tabular}{ll} \hline {\tt font-name} & Description \\ \hline rm & Roman \\ rmb & Roman Bold \\ rmi & Roman Italic \\ ss & San Serif \\ ssb & San Serif Bold \\ ssi & San Serif Italic \\ tt & Typewriter \\ ttb & Typewriter Bold \\ tti & Typewriter Italic \\ \hline \end{tabular} % \\ \samepage \begin{tabular}{ll} \hline {\tt font-name} & Description \\ \hline texcmb & Computer Modern Bold \\ texcmex & Computer Modern Extensible \\ texcmitt & Computer Modern Italic Typewriter \\ texcmmi & Computer Modern Maths Italic \\ texcmr & Computer Modern Roman \\ texcmss & Computer Modern Sans Serif \\ texcmssb & Computer Modern Sans Serif Bold \\ texcmssi & Computer Modern Sans Serif Italic \\ texcmsy & Computer Modern Symbol \\ texcmti & Computer Modern Text Italic \\ texcmtt & Computer Modern Typewriter Text \\ \hline \end{tabular} \begin{tabular}{ll} \hline {\tt font-name} & Description \\ \hline plba & Block Ascii \\ plcc & Complex Cartographic \\ plcg & Complex Gothic \\ plci & Complex Italic \\ plcr & Complex Roman \\ plcs & Complex Script \\ pldr & Duplex Roman \\ plge & Gothic English \\ plgg & Gothic German \\ plgi & Gothic Italian \\ plsa & Simplex Ascii \\ plsg & Simplex German \\ plsr & Simplex Roman \\ plss & Simplex Script \\ plsym1 & Symbols one \\ plsym2 & Symbols two \\ plti & Triplex Italic \\ pltr & Triplex Roman \\ \hline \end{tabular} \begin{tabular}{ll} \\ \hline {\tt font-name} & Description \\ \hline psagb & AvantGarde-Book \\ psagbo & AvantGarde-BookOblique \\ psagd & AvantGarde-Demi \\ psagdo & AvantGarde-DemiOblique \\ psbd & Bookman-Demi \\ psbdi & Bookman-DemiItalic \\ psbl & Bookman-Light \\ psbli & Bookman-LightItalic \\ psc & Courier \\ pscb & Courier-Bold \\ pscbo & Courier-BoldOblique \\ psco & Courier-Oblique \\ psh & Helvetica \\ pshb & Helvetica-Bold \\ pshbo & Helvetica-BoldOblique \\ psho & Helvetica-Oblique \\ pshc & Helvetica-Condensed \\ pshcb & Helvetica-Condensed-Bold \\ pshcdo & Helvetica-Condensed-BoldOblique \\ pshn & Helvetica-Narrow \\ pshnb & Helvetica-Narrow-Bold \\ pshnbo & Helvetica-Narrow-BoldOblique \\ pshno & Helvetica-NarrowOblique \\ psncsb & NewCenturySchlbk-Bold \\ psncsbi & NewCenturySchlbk-BoldItalic \\ psncsi & NewCenturySchlbk-Italic \\ psncsr & NewCenturySchlbk-Roman \\ pspb & Palatino-Bold \\ pspbi & Palatino-BoldItalic \\ pspi & Palatino-Italic \\ pspr & Palatino-Roman \\ pstr & Times-Roman \\ psti & Times-Italic \\ pstb & Times-Bold \\ pstbi & Times-BoldItalic \\ pszcmi & ZapfChancery-MediumItalic \\ pszd & ZapfDingbats \\ pssym & Symbol \\ \hline \end{tabular} } % end small gle-graphics-4.2.4c/gle-refman/obsolete/gle32.tex0000644000000000000000000003360711405447072020233 0ustar rootroot%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % GLE - Graphics Layout Engine % % % % Modified BSD License % % % % Copyright (C) 2009 GLE. % % % % Redistribution and use in source and binary forms, with or without % % modification, are permitted provided that the following conditions % % are met: % % % % 1. Redistributions of source code must retain the above copyright % % notice, this list of conditions and the following disclaimer. % % % % 2. Redistributions in binary form must reproduce the above % % copyright notice, this list of conditions and the following % % disclaimer in the documentation and/or other materials provided with % % the distribution. % % % % 3. The name of the author may not be used to endorse or promote % % products derived from this software without specific prior written % % permission. % % % % THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR % % IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED % % WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE % % ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY % % DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL % % DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE % % GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS % % INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER % % IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR % % OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN % % IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{center} \begin{minipage}[t]{11.0cm} {\scriptsize \begin{verbatim} 32 bit DOS version of GLE by Axel Rohde --------------------------------------- Introduction: (By Chris) For a long time I have been explaining to people that a 32bit dos version of GLE was not possible with currently available compilers and libraries. Clearly Axel has no appreciation for the impossible and has gone ahead and compiled a version anyway (with absolutely no asistance from me). On any 386 or better machine this version of GLE should run without problems, it's main features are these: 1) No 640K memory restrictions. 2) Much faster. Installation Quick guide: (By Chris) 1) FTP the binary distribution ftp tui.marc.cri.nz cd pub/gle/gle32 binary mget gle32bi*.zip 2) Unzip them keeping the directory structure cd c:\ pkunzip gle32bi1.zip -d pkunzip gle32bi2.zip -d pkunzip gle32bi3.zip -d pkunzip gle32bi4.zip -d pkunzip gle32bi5.zip -d pkunzip gle32bi6.zip -d 3) Edit the batch file which tells gle where to find it's fonts and also what sort of graphics card you have. edit setgle32.bat (change the disk and directory as appropriate) 4) Run the batch script setgle32 5) Try out the new version gle_vga 6) Note most of the programs have been renamed to avoid conflicts!!! Below are the more detailed instructions provided by Axel Rohde. Read these carefully if you have any problems. \end{verbatim} } \end{minipage} \end{center} \clearpage \begin{center} \begin{minipage}[t]{11.0cm} {\scriptsize \begin{verbatim} Installation-manual and documentation for the 32-Bit DOS version of GLE 3.3 b by Axel Rohde The source-Code of GLE is free and available from many FTP-sites (e.g. nic.funet.fi, ftp.informatik.uni-stuttgart.de). GLE 32 is a implementation of GLE for MS-DOS. It was compiled with the free port of the GNU C-compiler DJGPP by D.J. Delorie. The compiler itself and the DJGPP-compiled executables are running with the 32-bit DOS-extender GO32 by the same author. Thus, GLE 32 runs only on i386SX and above CPUs. GO32 comes with a co-processor-emulator for those without a i387xx Real-mode co-prozessor-emulators don't work with GO32. GLE was compiled using Borland-C compatible libraries for text and graphics-modes and some filesystem calls. There exists for the DJGPP specific graphics-library GRX from Csaba Biegl a emulation-library called BCCGRX from Hartmut Schirmer to replace calls of the Borland-Graphics-Interface (BGI) with GRX-calls. Hartmut has implemented the mouse-functionality, too, with GRX-calls. Copyright statements are at the end of this file. Properties of GLE 32 - All programs are running in the 386-protected-mode and therefore there is neither a limited 640kB adress-range nor a 64kB segmentation. - 32-bit programs are running faster than their 16-bit-counterparts. - There exists a multitude of GRX-graphics-drivers, e.g. for TSENG ET4000(W32), S3, 8514A, Cirrus Logic GD 542x, Trident 8900, Diamond Viper, ATI Ultra, ATI VGA and EGA. These drivers are highly configureable and can use flicker-free high resolution modes. Installation To understand the next lines, you should have a basic knowledge of the MS-DOS operating system and PC-hardware. Take a look into your DOS-manual and your hardware documentation in case of doubt. The DOS-Extender GO32 1.11 has different modes of operation: 1) VCPI: VCPI is an extension to EMS. EMS can be installed by the driver EMM386.EXE of MS-DOS 5.0 and higher. The (unoptimized) entry in the system-file CONFIG.SYS looks like the follwing lines: DOS=high,umb device=c:\dos\himem.sys device=c:\dos\emm386.exe RAM 2048 This entry installs a) 2 MB EMS in the memory area above 1MB, b) a page-frame with a size of 64kB between the memory area of the graphics-board and the BIOS (upper memory). Programs, that use VCPI-calls, can NOT run under Windows or the DOS-emulation of OS/2 2.x. Other products, such as QEMM386 can also be used. \end{verbatim} } \end{minipage} \end{center} \clearpage \begin{center} \begin{minipage}[t]{11.0cm} {\scriptsize \begin{verbatim} 2) DPMI: DPMI can be installed with special drivers like QDPMI (along with QEMM 6.0 or higher) or 386ToTheMax 7.x. Both the DOS-emulation of OS/2 2.x and Windows 3.x provide DPMI as a default. The DPMI-interface does not allows direct access to (graphics-)hardware. Only those programs, that don't use graphic-mode, can run with DPMI. I had a lot of total system crashes while running some of the text-mode programs of GLE under OS/2 2.1. I recommend to run GLE 32 under plain DOS. To avoid name-conflicts between a 16-bit and a 32-bit version of GLE, all the programs and the environment-variables were renamed. All GLE-programs have now unix-style names like 'gle_ps' (='psgle'- Postscript-output), 'gle_vga' (='cgle' - VGA-Preview) etc. The names of the utilities end with '32' - 'manip32', 'contou32'.... In the example on the following lines, the progams are installed in the directory d:\gle32, the fonts are in d:\gle32\fonts. GLE 32 searches for its vector-fonts in the directory GLE_TOP. Don't forget the trailing slash. In addition to this, GL32FONT points to the directory where the bitmap-fonts (you can see them in the status-line of the preview) can be found. The directory with the DOS-Extender GO32 and, if there's no numeric-prozessor installed, the co-prozessor-emulator, must be in the path-environment. set GLE_TOP=d:/gle32/ set gle32font=d:/gle32/grxfont path=..your normal path..;d:\gle; go32=driver d:/gle32/driver/vesa_s3.grn gw 1024 gh 768 tw 80 th 25 nc 256 The configuration of graphics-drivers is a little bit more complicated. Please study the documentation of the Libraries GRX und BCCGRX and the README of GO32 in their directories. The environment GO32 sets den path-name and the mode of the driver an. This example installs the driver for an S3 graphics-board with a resolution of 1024 horizontal 768 vertical pixels and 256 colors. There's a second way to install a graphics-mode. If the environment- variables GLE32WIDTH, GLE32HEIGHT and GLE32COLORS are set, the graphics- mode in the GO32 variable is overridden. You still have to specify a driver in the GO32 environment. set GLE32WIDTH=800 set GLE32HEIGHT=600 set GLE32COLORS=16 There's a prepared batch-file 'setgle32.bat' to set all the environment- variables in the directory gle32. To figure out, which modes are supported, try to run the program modetest in the directory gle32\driver\doc !!!! WARNING !!!! A wrong installed graphics-mode can DESTROY your MONITOR (and/or graphics board) if the refresh rate is too high! USE THIS ON YOUR OWN RISK!!! You should take a look into the manuals of your monitor and your graphics-adapter to figure out, which horizontal frequencies are supported. If the horizontal frequency of the monitor is 64 kHz or higher, you MAY feel save. (MY Monitor has a horizontal frequency of 64 kHz and supports a resolution of 1024x768 with a refresh rate up to 80Hz.) If you want to go save, don't set the environment go32 at all! This will use the normal (flickering) VGA-mode on a VGA-compatible adapter. \end{verbatim} } \end{minipage} \end{center} %%\clearpage \begin{center} \begin{minipage}[t]{11.0cm} {\scriptsize \begin{verbatim} RESTRICTIONS and BUGS 1) The vector-fonts of the 32-bit-version are NOT compatible to their 16-bit-counterparts. They may be compatible to fonts that were created under other 32-bit operating-systems. 2) The on-line-help of gle_vga is usable but may sometimes look different compared to the original. 3) Makefmt and fbuild are missing. DJGPP's Library lacks ecvt(). Both programs are used to calculate vector-fonts in the Unix-version from the source-distribution. Both programs are NOT included in the 16-bit DOS-version, too. This package includes all (allready calculated) fonts from the Unix-source distribution. They were calculated under Linux, a free Unix-implementation for i386-PC's and higher. Since a few months, there exists an archive with my patches (at the ftp-sites sunsite.unc.edu and nic.funet.fi) to compile GLE 3.3b under Linux. 4) The DVI-drivers are not testet! (I use Ghostscript or HP2XX for printing and converting. Both programs are freely avaiable. Gle_ps and gle_hpgl run properly.) 5) Surface (surf_vga) hanged under unknown circumstances while loading one data-file. surf_vga can be stopped by pressing Control-Pause. If this happens, load the data-file into an editor, save it, and try it again. Access to the DJGPP patches for the Source I'll release them in the near future after contacting Chris Pugmire. You need a fixed version of Hartmut Schirmers BCC2GRX-library to (properly) compile gle_vga and surf_vga. This will be released soon. Postscript Documentation The complete Postscript documentaion is in the directory gle32\postscri.doc. I made diff-files to patch them in a Ghostscript-printable state. For further information, take a look into the file gle32\postscri.doc\readme.pat. The 'patch' utility from the 1.11 release of DJGPP is included in this package. \end{verbatim} } \end{minipage} \end{center} %%\clearpage \begin{center} \begin{minipage}[t]{11.0cm} {\scriptsize \begin{verbatim} LEGAL STUFF Copyright-holders are: GLE: unknown to me, take a look into the original documentation in the directory gle32\gle.doc\ and ask Chris Pugmire DJGPP and GO32: D. J. Delorie, GNU LIBRARY GENERAL PUBLIC LICENSE and GNU PUBLIC LICENSE, see the files in the directory gle32\go32.doc GRX: Csaba Biegl, GNU LIBRARY GENERAL PUBLIC LICENSE, (see gle32\driver\doc\grx.doc) BCC2GRX: Hartmut Schirmer, GNU LIBRARY GENERAL PUBLIC LICENSE, (see gle32\driver\doc\bccgrx.doc) MS-DOS: Microsoft Corporation (if you haven't guessed...) DJGPP, GRX and BCC2GRX are available from many ftp-sites. For examples see the file gle32\driver\doc\bccgrx.doc. LIKE ANYTHING ELSE THAT'S FREE, GLE 32 AND ITS ASSOCIATED UTILITIES ARE PROVIDED AS IS AND COME WITH NO WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED. IN NO EVENT WILL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY DAMAGES RESULTING FROM THE USE OF THIS SOFTWARE. These programs are 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. Bug-reports are wellcome (to me and Chris Pugmire). It can not be guaranteed that they can be fixed. Axel Rohde, 19.1.94, email: rohde@physik.uni-kiel.d400.de Chris Pugmire's email adress: chrisp@marc.cri.nz \end{verbatim} } \hfill {\small gle32b.txt}\\ \end{minipage} \end{center} gle-graphics-4.2.4c/gle-refman/obsolete/sm_gle32_tut.tex0000644000000000000000000001351211405447072021617 0ustar rootroot%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % GLE - Graphics Layout Engine % % % % Modified BSD License % % % % Copyright (C) 2009 GLE. % % % % Redistribution and use in source and binary forms, with or without % % modification, are permitted provided that the following conditions % % are met: % % % % 1. Redistributions of source code must retain the above copyright % % notice, this list of conditions and the following disclaimer. % % % % 2. Redistributions in binary form must reproduce the above % % copyright notice, this list of conditions and the following % % disclaimer in the documentation and/or other materials provided with % % the distribution. % % % % 3. The name of the author may not be used to endorse or promote % % products derived from this software without specific prior written % % permission. % % % % THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR % % IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED % % WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE % % ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY % % DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL % % DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE % % GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS % % INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER % % IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR % % OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN % % IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{32bit DOS Version of GLE} \index{DOS!32bit} Axel Rohde has compiled a 32bit DOS version of GLE in 1994 ( email: rohde@physik.uni-kiel.d400.de)\\ On any 386 or better machine this version of GLE should run without problems, it's main features are these: 1) No 640K memory restrictions. 2) Much faster.\\ \clearpage Properties of GLE 32: \begin{verbatim} - All programs are running in the 386-protected-mode and therefore there is neither a limited 640kB adress-range nor a 64kB segmentation. - 32-bit programs are running faster than their 16-bit-counterparts. - There exists a multitude of GRX-graphics-drivers, e.g. for TSENG ET4000(W32), S3, 8514A, Cirrus Logic GD 542x, Trident 8900, Diamond Viper, ATI Ultra, ATI VGA and EGA. These drivers are highly configureable and can use flicker-free high resolution modes. \end{verbatim} Installation Quick guide: \begin{verbatim} 1) FTP the binary distribution ftp tui.marc.cri.nz cd pub/gle/gle32 binary mget gle32bi*.zip 2) Unzip them keeping the directory structure cd c:\ pkunzip gle32bi1.zip -d pkunzip gle32bi2.zip -d pkunzip gle32bi3.zip -d pkunzip gle32bi4.zip -d pkunzip gle32bi5.zip -d pkunzip gle32bi6.zip -d 3) Edit the batch file which tells gle where to find it's fonts and also what sort of graphics card you have. edit setgle32.bat (change the disk and directory as appropriate) 4) Run the batch script setgle32 5) Try out the new version gle_vga 6) Note most of the programs have been renamed to avoid conflicts!!! \end{verbatim} To avoid name-conflicts between a 16-bit and a 32-bit version of GLE, all the programs and the environment-variables were renamed. All GLE-programs have now unix-style names like \verb#gle_ps# (='psgle'- Postscript-output), \verb#gle_vga# (='cgle' - VGA-Preview) etc. The names of the utilities end with '32' - \verb#manip32#, \verb#contou32# \dots Restrictions and Bugs: \begin{description} \item[1.] The vector-fonts of the 32-bit-version are NOT compatible to their 16-bit-counterparts. They may be compatible to fonts that were created under other 32-bit operating-systems. \item[2.] The on-line-help of \verb#gle_vga# is usable but may sometimes look different compared to the original. \item[3.] Makefmt and fbuild are missing. DJGPP's Library lacks ecvt(). Both programs are used to calculate vector-fonts in the Unix-version from the source-distribution. Both programs are NOT included in the 16-bit DOS-version, too. This package includes all (allready calculated) fonts from the Unix-source distribution. They were calculated under Linux, a free Unix-implementation for i386-PC's and higher. \item[4.] The DVI-drivers are not testet! \item[5.] Surface (\verb#surf_vga#) hanged under unknown circumstances while loading one data-file. \verb#surf_vga# can be stopped by pressing Control-Pause. If this happens, load the data-file into an editor, save it, and try it again. \end{description} In \verb#gle32b.txt# are the more detailed instructions provided by Axel Rohde. Read these carefully if you have any problems. gle-graphics-4.2.4c/gle-refman/appendix/appendix.tex0000644000000000000000000002521311652766627021133 0ustar rootroot%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % GLE - Graphics Layout Engine % % % % Modified BSD License % % % % Copyright (C) 2009 GLE. % % % % Redistribution and use in source and binary forms, with or without % % modification, are permitted provided that the following conditions % % are met: % % % % 1. Redistributions of source code must retain the above copyright % % notice, this list of conditions and the following disclaimer. % % % % 2. Redistributions in binary form must reproduce the above % % copyright notice, this list of conditions and the following % % disclaimer in the documentation and/or other materials provided with % % the distribution. % % % % 3. The name of the author may not be used to endorse or promote % % products derived from this software without specific prior written % % permission. % % % % THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR % % IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED % % WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE % % ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY % % DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL % % DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE % % GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS % % INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER % % IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR % % OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN % % IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \appendix \chapter{Tables} \section{Markers} \index{markers} \mbox{\input{primitives/fig/gc_marker.inc}} \section{Functions and Variables} \index{functions} \label{fct:sec} \begin{supertabular}{ll} \hline Function name & Returns \ldots \\ \hline {\tt abs(exp)} \index{abs()} & absolute value of expression \\ {\tt acos(exp)} \index{acos()} & arccosine \\ {\tt acosh(exp)} \index{acosh()} & inverse hyperbolic cosine \\ {\tt acot(exp)} \index{acot()} & 1/atan(exp) \\ {\tt acoth(exp)} \index{acoth()} & 1/atanh(exp) \\ {\tt acsc(exp)} \index{acsc()} & 1/asin(exp) \\ {\tt acsch(exp)} \index{acsch()} & 1/asinh(exp) \\ {\tt arg(i)} \index{arg()} & i-th command line argument \\ {\tt arg\$(i)} \index{arg()} & i-th command line argument \\ {\tt asec(exp)} \index{asec()} & 1/acos(exp) \\ {\tt asech(exp)} \index{asech()} & 1/acosh(exp) \\ {\tt asin(exp)} \index{asin()} & arcsine \\ {\tt asinh(exp)} \index{asinh()} & inverse hyperbolic sine \\ {\tt atan(exp)} \index{atan()} & arctan \\ {\tt atanh(exp)} \index{atanh()} & inverse hyperbolic tangent \\ {\tt atn(exp)} \index{atn()} & same as ATAN(exp) \\ {\tt cos(exp)} \index{cos()} & cosine \\ {\tt cosh(exp)} \index{cosh()} & hyperbolic cosine \\ {\tt cot(exp)} \index{cot()} & 1/tan(exp) \\ {\tt coth(exp)} \index{coth()} & 1/tanh(exp) \\ {\tt csc()} \index{csc()} & 1/sin(exp) \\ {\tt csch(exp)} \index{csch()} & 1/sinh(exp) \\ {\tt dataxvalue(ds,i)} \index{dataxvalue} & $x$-value of $i$-th point in ds (p.~\pageref{dataxvalue})\\ {\tt datayvalue(ds,i)} \index{datayvalue} & $y$-value of $i$-th point in ds (p.~\pageref{datayvalue})\\ {\tt date\$()} \index{date\$()} & current date e.g. ``Tue Apr 09 1991'' \\ {\tt device\$()} \index{device\$()} & available devices e.g. ``HARDCOPY, PS''\\ {\tt getenv(str)} \index{getenv{}} & returns environment variable ``str''\\ {\tt eval(str)} \index{eval()} & evaluates given GLE expression \\ {\tt exp(exp)} \index{exp()} & exponent \\ {\tt $\backslash{}$expr(exp)} \index{$\backslash{}$expr(exp)} & substitute result of evaluating ``exp'' \\ {\tt file\$()} \index{file\$()} & returns GLE file name (without extension) \\ {\tt fix(exp)} \index{fix()} & {\tt exp} rounded towards 0 \\ {\tt format\$(exp,format)} \index{format\$()} & format {\tt exp} as specified in {\tt format} (p.~\pageref{formatnum:pg})\\ {\tt height(name\$)} \index{height()} & the height of the object {\tt name\$} \\ {\tt int(exp)} \index{int()} & integer part of {\tt exp} \\ {\tt left\$(str\$,exp)} \index{left\$()} & left {\tt exp} characters of {\tt str\$} \\ {\tt len(str\$)} \index{len()} & the length of {\tt str\$} \\ {\tt log(exp)} \index{log()} & log to base $e$ of {\tt exp} \\ {\tt log10(exp)} \index{log10()} & log to base 10 of {\tt exp} \\ {\tt nargs()} \index{nargs()} & number of command line arguments \\ {\tt ndata(ds)} \index{ndata} & number of points in data set ds (p.~\pageref{ndata})\\ {\tt not(exp)} \index{not()} & logical not of {\tt exp} \\ {\tt num1\$(exp)} \index{num1\$()} & as above but with no spaces \\ {\tt num\$(exp)} \index{num\$()} & string representation of {\tt exp} \\ {\tt pageheight()} \index{pageheight()} & the height of the page (from size command) \\ {\tt pagewidth()} \index{pagewidth()} & the width of the page (from size command) \\ {\tt path\$()} \index{path\$()} & returns the directory where the script is located \\ {\tt pointx(pt)} \index{pointx()} & the x value of named point pt \\ {\tt pointy(pt)} \index{pointy()} & the y value of named point pt \\ {\tt pos(str1\$,str2\$,exp)} \index{pos()} & position of {\tt str2\$} in {\tt str1\$} from {\tt exp} \\ {\tt ptx(pt)} \index{ptx()} & the x value of named point pt (abbreviation for pointx) \\ {\tt pty(pt)} \index{pty()} & the y value of named point pt (abbreviation for pointy)\\ {\tt rgb(red,green,blue)} \index{rgb()} & create color given RGB values \\ {\tt rgba(red,green,blue,alpha)} \index{rgba()} & create color given RGB and alpha values \\ {\tt rgb255(red,green,blue)} \index{rgb255()} & create color given RGB values \\ {\tt rgba255(red,green,blue,alpha)} \index{rgba255()} & create color given RGB and alpha values \\ {\tt right\$(str\$,exp)} \index{right\$()} & rest of {\tt str\$} starting at {\tt exp} \\ {\tt rnd(exp)} \index{rnd()} & random number between 0 and {\tt exp} \\ {\tt sdiv(x,y)} \index{sdvi()} & return x/y or 0 if y = 0 \\ {\tt sec(exp)} \index{sec()} & 1/cos(exp) \\ {\tt sech(exp)} \index{sech()} & 1/cosh(exp) \\ {\tt seg\$(str\$,exp1,exp2)} \index{seg\$()} & {\tt str\$} from {\tt exp1} to {\tt exp2} \\ {\tt sgn(exp)} \index{sgn()} & returns 1 if {\tt exp} is positive, -1 if {\tt exp} is negative \\ {\tt sin(exp)} \index{sin()} & sine of {\tt exp} \\ {\tt sinh(exp)} \index{sinh()} & hyperbolic sine \\ {\tt sqr(exp)} \index{sqr()} & {\tt exp} squared \\ {\tt sqrt(exp)} \index{sqrt()} & square root of {\tt exp} \\ {\tt tan(exp)} \index{tan()} & tangent of {\tt exp} \\ {\tt tanh(exp)} \index{tanh()} & hyperbolic tangent \\ {\tt tdepth(str\$)} \index{tdepth()} & the depth of {\tt str\$} assuming current the font, size \\ {\tt theight(str\$)} \index{theight()} & the height of {\tt str\$} assuming current font, size \\ {\tt time\$()} \index{time\$()} & current time e.g. ``11:44:27'' \\ {\tt todeg(exp)} \index{todeg()} & convert from radians to degrees \\ {\tt torad(exp)} \index{torad()} & convert from degrees to radians \\ {\tt twidth(str\$)} \index{twidth()} & the width of {\tt str\$} assuming current font, size \\ {\tt val(str\$)} \index{val()} & value of the string {\tt str\$} \\ {\tt width(name\$)} \index{width()} & the width of the object {\tt name\$} \\ {\tt xbar(x,i)} \index{xbar()} & the absolute x coordinate of the i-th bar at point x on the graph \\ {\tt xend()} \index{xend()} & the x end point of a text string when drawn \\ {\tt xg(xexp)} \index{xg()} & converts units of last graph to abs cm. \\ {\tt xg3d(x,y,z)} \index{xg3d()} & converts units of last 3D graph to abs cm. \\ {\tt xpos()} \index{xpos()} & the current x point \\ {\tt xy2angle(dx,dy)} \index{xy2angle()}& convert rectangular coordinates to polar angle (in degrees)\\ {\tt yend()} \index{yend()} & the y end point of a text string when drawn \\ {\tt yg(yexp)} \index{yg()} & converts units of last graph to abs cm. \\ {\tt yg3d(x,y,z)} \index{yg3d()} & converts units of last 3D graph to abs cm. \\ {\tt ypos()} \index{ypos()} & the current y point \\ \end{supertabular} \begin{supertabular}{ll} \hline Variable name & Returns \ldots \\ \hline {\tt pi} \index{pi} & 3.14... \\ {\tt xgmin} \index{xgmin} & the minimum x-coordinate of the graph \\ {\tt xgmax} \index{xgmax} & the maximum x-coordinate of the graph \\ {\tt xg2min} \index{xg2min} & the minimum x2-coordinate of the graph \\ {\tt xg2max} \index{xg2max} & the maximum x2-coordinate of the graph \\ {\tt ygmin} \index{ygmin} & the minimum y-coordinate of the graph \\ {\tt ygmax} \index{ygmax} & the maximum y-coordinate of the graph \\ {\tt yg2min} \index{yg2min} & the minimum y2-coordinate of the graph \\ {\tt yg2max} \index{yg2max} & the maximum y2-coordinate of the graph \\ \end{supertabular} \input{appendix/sym} \newpage \section{Installing GLE} \label{install:app} \section{Fonts} \index{fonts} \index{font-examples} \resizebox{!}{22cm}{\includegraphics{appendix/fig/ap_fonts}} \newpage %% % \clearpage % \input{appendix/sm_single} %% % \clearpage % \input{appendix/sm_stack2} % % \clearpage % \input{appendix/sm_stack4b} %% % \clearpage % \input{appendix/sm_stack1} %% % \clearpage % \input{appendix/sm_loop} %% % \clearpage % \input{appendix/sm_join} %% % \clearpage % \input{appendix/sm_clip} %% %%\cleardoublepage gle-graphics-4.2.4c/gle-refman/appendix/sm_stack4b.tex0000644000000000000000000001044311405447072021336 0ustar rootroot%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % GLE - Graphics Layout Engine % % % % Modified BSD License % % % % Copyright (C) 2009 GLE. % % % % Redistribution and use in source and binary forms, with or without % % modification, are permitted provided that the following conditions % % are met: % % % % 1. Redistributions of source code must retain the above copyright % % notice, this list of conditions and the following disclaimer. % % % % 2. Redistributions in binary form must reproduce the above % % copyright notice, this list of conditions and the following % % disclaimer in the documentation and/or other materials provided with % % the distribution. % % % % 3. The name of the author may not be used to endorse or promote % % products derived from this software without specific prior written % % permission. % % % % THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR % % IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED % % WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE % % ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY % % DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL % % DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE % % GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS % % INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER % % IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR % % OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN % % IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%\psgraphin{stack4b}{15.0}{25.0}{Stack of 4 Graphs} \graphin{appendix/fig/stack4b}{13.0cm}{25.0cm}{1} \addcontentsline{toc}{section}{Stack of Four Graphs} \clearpage \begin{center} \begin{minipage}[t]{12.0cm} %%\input{stack4b.gle} {\scriptsize %\footnotesize \begin{verbatim} size 17 26 ! box (uncomment box for measuring with ruler) STACK4B.GLE set font ss amove 3.5 19 begin graph size 10 5 data TEST.DAT title "Top graph, stack4b.gle" hei .5 dist 1 fullsize xaxis min -1 max 6 dticks 1 hei .3 nofirst nolast yaxis min 0 max 20 hei .3 dticks 5 x2labels on d1 marker wsquare msize .4 lstyle 1 d2 marker dot msize 1 lstyle 2 fill x1,d1 color grid4 xmax 3 fill x1,d1 color grey20 xmin 3 end graph rmove 0 -5 begin graph size 10 5 data TEST.DAT fullsize xaxis min -1 max 6 dticks 1 hei .3 nofirst nolast yaxis min 0 max 20 hei .3 dticks 5 nolast bar d1,d2 width .2 dist .2 fill grey10,grid3 color black,black end graph rmove 0 -5 begin graph data TEST.DAT fullsize size 10 5 xaxis min -1 max 6 dticks 1 hei .3 nofirst nolast yaxis min 0 max 20 hei .3 dticks 5 nolast xlabels off y2labels on d1 marker dot lstyle 2 err 10% d2 marker dot lstyle 1 err 10% end graph rmove 0 -5 begin graph data TEST.DAT title "Bottom graph" hei .4 dist 0.0 fullsize size 10 5 xaxis min -1 max 6 dticks 1 hei .3 nofirst nolast grid yaxis min 0 max 20 hei .3 dticks 5 nolast grid xticks lstyle 2 lwidth 0.0001 ! sets the grid line style yticks lstyle 2 lwidth 0.0001 d1 marker wsquare msize .4 lstyle 2 key "Age" key hei .5 d2 marker dot msize 1 lstyle 1 key "Width" end graph \end{verbatim} } \hfill {\small stack4b.gle}\\ \end{minipage} \end{center} \vfill gle-graphics-4.2.4c/gle-refman/appendix/sm_loop.tex0000644000000000000000000001003311405447072020747 0ustar rootroot%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % GLE - Graphics Layout Engine % % % % Modified BSD License % % % % Copyright (C) 2009 GLE. % % % % Redistribution and use in source and binary forms, with or without % % modification, are permitted provided that the following conditions % % are met: % % % % 1. Redistributions of source code must retain the above copyright % % notice, this list of conditions and the following disclaimer. % % % % 2. Redistributions in binary form must reproduce the above % % copyright notice, this list of conditions and the following % % disclaimer in the documentation and/or other materials provided with % % the distribution. % % % % 3. The name of the author may not be used to endorse or promote % % products derived from this software without specific prior written % % permission. % % % % THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR % % IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED % % WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE % % ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY % % DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL % % DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE % % GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS % % INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER % % IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR % % OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN % % IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%\psgraphin{loop}{15.0}{25.0}{Loop, Subroutines} \graphin{appendix/fig/loop}{15.0cm}{25.0cm}{1} \addcontentsline{toc}{section}{Loop, Subroutines} \clearpage \begin{center} \begin{minipage}[t]{12.0cm} %%\input{loop.gle} {\scriptsize %\footnotesize \begin{verbatim} size 17 17 box !18 24 box ! This is LOOP.GLE, shows programming examples amove 5 14 set just center hei 1 text Subroutines, Loops set just left hei .7 set hei .9 ! First define a single neuron sub neuron xx yy amove xx yy begin scale .5 .5 curve 0 .4 .4 .4 .4 -.4 .4 .4 .4 -.8 -.4 -.8 -.4 .4 curve -.4 -.8 -.4 .4 -.4 -.4 -.4 .4 0 .4 closepath end scale end sub ! Draw the neurons for xx = 0 to 1 for i = 1 to 6 @neuron xx*6+2 i*2+1.2 next i next xx ! Draw the lines between them for i = 1 to 6 for j = 1 to 6 amove 3 i*2+1 aline 7.5 j*2+1 next j next i !-------------------------------------------------------------------------- include ziptext.gle amove 12 1 @ziptext "Hello" amove 13 4 begin rotate 20 @ziptext "Green trees" end rotate \end{verbatim} } \hfill {\small loop.gle}\\ % %%\input{loop.gle} {\scriptsize %\footnotesize \begin{verbatim} sub ziptext tt$ gsave for i = 1 to 0 step -.05 set color (i) write tt$ rmove -.05 .025 next i set color white write tt$ grestore end sub \end{verbatim} } \hfill {\small ziptext.gle}\\ % \end{minipage} \end{center} \vfill gle-graphics-4.2.4c/gle-refman/appendix/sym.tex0000664000000000000000000001134511663012166020116 0ustar rootroot%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % GLE - Graphics Layout Engine % % % % Modified BSD License % % % % Copyright (C) 2009 GLE. % % % % Redistribution and use in source and binary forms, with or without % % modification, are permitted provided that the following conditions % % are met: % % % % 1. Redistributions of source code must retain the above copyright % % notice, this list of conditions and the following disclaimer. % % % % 2. Redistributions in binary form must reproduce the above % % copyright notice, this list of conditions and the following % % disclaimer in the documentation and/or other materials provided with % % the distribution. % % % % 3. The name of the author may not be used to endorse or promote % % products derived from this software without specific prior written % % permission. % % % % THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR % % IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED % % WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE % % ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY % % DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL % % DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE % % GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS % % INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER % % IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR % % OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN % % IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \newpage \section{\LaTeX\ Macros} \label{ltxsym:sec} \index{\LaTeX!macros} \index{\LaTeX} There are several \LaTeX\ like commands which can be used within text, they are: \vspace{0.5cm} \begin{tabular}{ll} \verb+\` \' \v \u \= \^+ & Implemented TeX accents \\ \verb+\. \H \~ \''+ & Implemented TeX accents \\ \verb+^{}+ & Superscript \\ \verb+_{}+ & Subscript \\ \verb+\\+ & Forced newline \\ \verb+\_+ & Underscore character \\ \verb+\,+ & 0.5em (em = width of the letter `m') \\ \verb+\:+ & 1em space \\ \verb+\;+ & 2em space \\ \verb+\!+ & -0.5em space \\ \verb+\tex{expression}+ & Any LaTeX expression \\ \verb+\char{22}+ & Any character in current font \\ \verb+\chardef{a}{hello}+ & Define a character as a macro \\ \verb+\def\v{hello}+ & Defines a macro \\ \verb+\movexy{2}{3}+ & Moves the current text point \\ \verb+\glass+ & Makes move/space work on beginning of line \\ \verb+\it+ & Switches to italic font \\ \verb+\kern{-0.1em}+ & Change inter character distance \\ \verb+\ldots+ & $\ldots$ \\ \verb+\lineskip{.1}+ & Sets the default distance between lines of text \\ \verb+\linegap{-1}+ & Sets the minimum required gap between lines \\ \verb+\lower{0.1em}{hello}+ & Lower the given text \\ \verb+\parskip{0.1em}+ & Set distance between paragraphs \\ \verb+\raise{0.1em}{hello}+ & Raise the given text \\ \verb+\rm+ & Switches to roman font \\ \verb+\bf+ & Switches to bold font \\ \verb+\rule{2}{4}+ & Draws a filled in box, 2cm by 4cm \\ \verb+\setfont{rmb}+ & Sets the current text font \\ \verb+\sethei{.3}+ & Sets the font height (in cm) \\ \verb+\setstretch{2}+ & Scales the quantity of glue between words \\ \verb+\tt+ & Switches to typewriter (fixed space) font \\ \end{tabular} \newpage \section{\LaTeX\ Symbols} \index{symbols} \mbox{\input{appendix/fig/symbols.inc}} gle-graphics-4.2.4c/gle-refman/appendix/sm_clip.tex0000644000000000000000000000776211405447072020744 0ustar rootroot%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % GLE - Graphics Layout Engine % % % % Modified BSD License % % % % Copyright (C) 2009 GLE. % % % % Redistribution and use in source and binary forms, with or without % % modification, are permitted provided that the following conditions % % are met: % % % % 1. Redistributions of source code must retain the above copyright % % notice, this list of conditions and the following disclaimer. % % % % 2. Redistributions in binary form must reproduce the above % % copyright notice, this list of conditions and the following % % disclaimer in the documentation and/or other materials provided with % % the distribution. % % % % 3. The name of the author may not be used to endorse or promote % % products derived from this software without specific prior written % % permission. % % % % THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR % % IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED % % WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE % % ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY % % DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL % % DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE % % GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS % % INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER % % IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR % % OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN % % IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%\psgraphin{stack1}{15.0}{23.0}{Shadow Graph} \graphin{appendix/fig/clip}{14.0cm}{19.0cm}{1} \addcontentsline{toc}{section}{Clipping} \clearpage \begin{center} \begin{minipage}[t]{12.0cm} %%\input{clip.gle} {\scriptsize %\footnotesize \begin{verbatim} size 18 24 ! This is CLIP.GLE, sets up an arbitrary clipping region. set hei .3 ! NOTE: CLIPPING ONLY WORKS ON POSTSCRIPT DEVICES. amove 2.3 .3 ! So this won't work on the pc-screen. text clip.gle set hei 10 amove 2 2 begin clip ! Save default clipping region begin path clip ! Set up the clipping region text GLE end path gsave amove 2 2 text www ! Draw some text which will be clipped for i = 1 to 90 ! Draw some lines which will be clipped amove 2 2 rotate -1 rline 0 30 next i grestore end clip ! restore default clipping region amove 0 0 rline 10 10 ! draw a line which won't be clipped. !----------------------------------------------------------------------------- !Here's a simple example of how to set up a clipping region which consists !of two squares. Try this out amove 1 11 begin origin begin path clip stroke amove 2 2 box 4 4 amove 7 2 box 4 4 end path amove 2 2 set hei 4 text Here is clipped text end origin \end{verbatim} } \hfill {\small clip.gle}\\ \end{minipage} \end{center} \vfill gle-graphics-4.2.4c/gle-refman/appendix/sm_stack2.tex0000644000000000000000000001244011405447072021171 0ustar rootroot%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % GLE - Graphics Layout Engine % % % % Modified BSD License % % % % Copyright (C) 2009 GLE. % % % % Redistribution and use in source and binary forms, with or without % % modification, are permitted provided that the following conditions % % are met: % % % % 1. Redistributions of source code must retain the above copyright % % notice, this list of conditions and the following disclaimer. % % % % 2. Redistributions in binary form must reproduce the above % % copyright notice, this list of conditions and the following % % disclaimer in the documentation and/or other materials provided with % % the distribution. % % % % 3. The name of the author may not be used to endorse or promote % % products derived from this software without specific prior written % % permission. % % % % THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR % % IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED % % WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE % % ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY % % DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL % % DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE % % GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS % % INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER % % IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR % % OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN % % IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \addcontentsline{toc}{section}{Stack of Two Graphs} \psgraphin{appendix/fig/stack2}{15.0}{25.0}{Stack of 2 Graphs} % \graphin{stack2}{15.0cm}{25.0cm}{Stack of 2 Graphs} \clearpage \vfill \begin{center} \begin{minipage}[t]{12.0cm} %%\input{stack2.gle} {\scriptsize %\footnotesize \begin{verbatim} size 18 27 box ! (uncomment box for debugging) This is STACK2.GLE amove 1.3 14.5 begin graph size 16 12 nobox xaxis min 0 max 20 dticks 4 dsubticks 1 xplaces 4 8 12 16 20 ! these would be set to match the dates xnames "Sep 13" "Sep 23" "Oct 3" "Oct 13" "Oct 23" xticks length .2 yticks length .2 yaxis min 0 max 75 dticks 10 dsubticks 5 nofirst ytitle "Bud burst (%)" xtitle "" data TEST4.DAT d1 lstyle 1 marker wcircle msize .3 d2 lstyle 1 marker wsquare msize .3 d3 lstyle 2 marker wcircle msize .3 d4 lstyle 2 marker wsquare msize .3 end graph set hei .4 begin key offset 8.2 2.3 text "Shelter row" lstyle 1 marker circle mscale .6 text "Shelter row + H " lstyle 1 marker square mscale .6 text "Middle row" lstyle 2 marker circle mscale .6 text "Middle row + H" lstyle 2 marker square mscale .6 end key rmove 12 9 text (a) amove 1.3 4 set font rm hei .5 begin graph size 16 12 nobox xaxis min 0 max 20 dticks 4 dsubticks 1 xplaces 4 8 12 16 20 ! these would be set to match the dates xnames "Nov 10" "Nov 15" "Nov 20" "Nov 25" "Nov 30" xticks length .2 yticks length .2 yaxis min 0 max 110 dticks 10 dsubticks 5 ytitle "Flowers per cane at full bloom " xtitle "" data TEST4.DAT d1 lstyle 1 marker circle msize .3 d2 lstyle 1 marker square msize .3 smooth d3 lstyle 2 marker circle msize .3 smooth d4 lstyle 2 marker square msize .3 end graph rmove 12 9 text (b) set hei .4 amove 9 26 text 22. amove 1.3 3 begin text width 16 Figure 5. Influence of Hicane on the duration and timing of (a) bud burst and (b) flowering of kiwifruit. (Note: this data has been made up) end text set just left amove .5 26 text stack2.gle \end{verbatim} } %% \footnotesize \hfill {\small stack2.gle}\\ \vspace*{-4.0ex} %\vfill %%\input{test4.dat} {\footnotesize \begin{verbatim} 1 10 5 90 12 3 30 15 80 22 5 50 25 70 10 8 80 40 60 15 10 90 45 55 11 14 70 35 50 14 19 80 40 60 6 \end{verbatim} } \hfill {\small test4.dat}\\ \end{minipage} \end{center} \vfill %\psgraphin{stack2}{15.0}{25.0}{Stack of 2 Graphs} %\graphin{stack2}{15.0cm}{25.0cm}{Stack of 2 Graphs} %\clearpage gle-graphics-4.2.4c/gle-refman/appendix/sm_fonttables.tex0000644000000000000000000002021111405447072022136 0ustar rootroot%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % GLE - Graphics Layout Engine % % % % Modified BSD License % % % % Copyright (C) 2009 GLE. % % % % Redistribution and use in source and binary forms, with or without % % modification, are permitted provided that the following conditions % % are met: % % % % 1. Redistributions of source code must retain the above copyright % % notice, this list of conditions and the following disclaimer. % % % % 2. Redistributions in binary form must reproduce the above % % copyright notice, this list of conditions and the following % % disclaimer in the documentation and/or other materials provided with % % the distribution. % % % % 3. The name of the author may not be used to endorse or promote % % products derived from this software without specific prior written % % permission. % % % % THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR % % IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED % % WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE % % ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY % % DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL % % DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE % % GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS % % INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER % % IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR % % OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN % % IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \psgraphin{ft_rm}{12.0}{9.0}{Font: Roman } \vfill \psgraphin{ft_rmb}{12.0}{9.0}{Font: Roman Bold } \clearpage \psgraphin{ft_rmi}{12.0}{9.0}{Font: Roman Italic } \vfill \psgraphin{ft_ss}{12.0}{9.0}{Font: San Serif } \clearpage \psgraphin{ft_ssb}{12.0}{9.0}{Font: San Serif Bold } \vfill \psgraphin{ft_ssi}{12.0}{9.0}{Font: San Serif Italic } \clearpage \psgraphin{ft_tt}{12.0}{9.0}{Font: Typewriter } \vfill \psgraphin{ft_ttb}{12.0}{9.0}{Font: Typewriter Bold } \clearpage \psgraphin{ft_tti}{12.0}{9.0}{Font: Typewriter Italic } \vfill \psgraphin{ft_texcmb}{12.0}{9.0}{Font: \TeX Computer Modern Bold } \clearpage \psgraphin{ft_texcmex}{12.0}{9.0}{Font: \TeX Computer Modern Extensible } \vfill \psgraphin{ft_texcmitt}{12.0}{9.0}{Font: \TeX Computer Modern Italic Typewriter } \clearpage \psgraphin{ft_texcmmi}{12.0}{9.0}{Font: \TeX Computer Modern Maths Italic } \vfill \psgraphin{ft_texcmr}{12.0}{9.0}{Font: \TeX Computer Modern Roman } \clearpage \psgraphin{ft_texcmss}{12.0}{9.0}{Font: \TeX Computer Modern Sans Serif } \vfill \psgraphin{ft_texcmssb}{12.0}{9.0}{Font: \TeX Computer Modern Sans Serif Bold } \clearpage \psgraphin{ft_texcmssi}{12.0}{9.0}{Font: \TeX Computer Modern Sans Serif Italic } \vfill \psgraphin{ft_texcmsy}{12.0}{9.0}{Font: \TeX Computer Modern Symbol } \clearpage \psgraphin{ft_texcmti}{12.0}{9.0}{Font: \TeX Computer Modern Text Italic } \vfill \psgraphin{ft_texcmtt}{12.0}{9.0}{Font: \TeX Computer Modern Typewriter Text } \clearpage \psgraphin{ft_plba}{12.0}{9.0}{Font: Plotter Block Ascii } \vfill \psgraphin{ft_plcc}{12.0}{9.0}{Font: Plotter Complex Cartographic } \clearpage \psgraphin{ft_plcg}{12.0}{9.0}{Font: Plotter Complex Gothic } \vfill \psgraphin{ft_plci}{12.0}{9.0}{Font: Plotter Complex Italic } \clearpage \psgraphin{ft_plcr}{12.0}{9.0}{Font: Plotter Complex Roman } \vfill \psgraphin{ft_plcs}{12.0}{9.0}{Font: Plotter Complex Script } \clearpage \psgraphin{ft_pldr}{12.0}{9.0}{Font: Plotter Duplex Roman } \vfill \psgraphin{ft_plge}{12.0}{9.0}{Font: Plotter Gothic English } \clearpage \psgraphin{ft_plgg}{12.0}{9.0}{Font: Plotter Gothic German } \vfill \psgraphin{ft_plgi}{12.0}{9.0}{Font: Plotter Gothic Italian } \clearpage \psgraphin{ft_plsa}{12.0}{9.0}{Font: Plotter Simplex Ascii } \vfill \psgraphin{ft_plsg}{12.0}{9.0}{Font: Plotter Simplex German } \clearpage \psgraphin{ft_plsr}{12.0}{9.0}{Font: Plotter Simplex Roman } \vfill \psgraphin{ft_plss}{12.0}{9.0}{Font: Plotter Simplex Script } \clearpage \psgraphin{ft_plsym1}{12.0}{9.0}{Font: Plotter Symbols one } \vfill \psgraphin{ft_plsym2}{12.0}{9.0}{Font: Plotter Symbols two } \clearpage \psgraphin{ft_plti}{12.0}{9.0}{Font: Plotter Triplex Italic } \vfill \psgraphin{ft_pltr}{12.0}{9.0}{Font: Plotter Triplex Roman } \clearpage \psgraphin{ft_psagb}{12.0}{9.0}{Font: PostScript AvantGarde-Book } \vfill \psgraphin{ft_psagbo}{12.0}{9.0}{Font: PostScript AvantGarde-BookOblique } \clearpage \psgraphin{ft_psagd}{12.0}{9.0}{Font: PostScript AvantGarde-Demi } \vfill \psgraphin{ft_psagdo}{12.0}{9.0}{Font: PostScript AvantGarde-DemiOblique } \clearpage \psgraphin{ft_psbd}{12.0}{9.0}{Font: PostScript Bookman-Demi } \vfill \psgraphin{ft_psbdi}{12.0}{9.0}{Font: PostScript Bookman-DemiItalic } \clearpage \psgraphin{ft_psbli}{12.0}{9.0}{Font: PostScript Bookman-LightItalic } \vfill \psgraphin{ft_psc}{12.0}{9.0}{Font: PostScript Courier } \clearpage \psgraphin{ft_pscb}{12.0}{9.0}{Font: PostScript Courier-Bold } \vfill \psgraphin{ft_pscbo}{12.0}{9.0}{Font: PostScript Courier-BoldOblique } \clearpage \psgraphin{ft_psco}{12.0}{9.0}{Font: PostScript Courier-Oblique } \vfill \psgraphin{ft_psh}{12.0}{9.0}{Font: PostScript Helvetica } \clearpage \psgraphin{ft_pshb}{12.0}{9.0}{Font: PostScript Helvetica-Bold } \vfill \psgraphin{ft_pshbo}{12.0}{9.0}{Font: PostScript Helvetica-BoldOblique } \clearpage \psgraphin{ft_psho}{12.0}{9.0}{Font: PostScript Helvetica-Oblique } \vfill \psgraphin{ft_pshc}{12.0}{9.0}{Font: PostScript Helvetica-Condensed } \clearpage \psgraphin{ft_pshcb}{12.0}{9.0}{Font: PostScript Helvetica-Condensed-Bold } \vfill \psgraphin{ft_pshcdo}{12.0}{9.0}{Font: PostScript Helvetica-Condensed-BoldOblique } \clearpage \psgraphin{ft_pshn}{12.0}{9.0}{Font: PostScript Helvetica-Narrow } \vfill \psgraphin{ft_pshnb}{12.0}{9.0}{Font: PostScript Helvetica-Narrow-Bold } \clearpage \psgraphin{ft_pshnbo}{12.0}{9.0}{Font: PostScript Helvetica-Narrow-BoldOblique } \vfill \psgraphin{ft_pshno}{12.0}{9.0}{Font: PostScript Helvetica-NarrowOblique } \clearpage \psgraphin{ft_psncsb}{12.0}{9.0}{Font: PostScript NewCenturySchlbk-Bold } \vfill \psgraphin{ft_psncsbi}{12.0}{9.0}{Font: PostScript NewCenturySchlbk-BoldItalic } \clearpage \psgraphin{ft_psncsi}{12.0}{9.0}{Font: PostScript NewCenturySchlbk-Italic } \vfill \psgraphin{ft_psncsr}{12.0}{9.0}{Font: PostScript NewCenturySchlbk-Roman } \clearpage \psgraphin{ft_pspb}{12.0}{9.0}{Font: PostScript Palatino-Bold } \vfill \psgraphin{ft_pspbi}{12.0}{9.0}{Font: PostScript Palatino-BoldItalic } \clearpage \psgraphin{ft_pspi}{12.0}{9.0}{Font: PostScript Palatino-Italic } \vfill \psgraphin{ft_pspr}{12.0}{9.0}{Font: PostScript Palatino-Roman } \clearpage \psgraphin{ft_pssym}{12.0}{9.0}{Font: PostScript Symbol } \vfill \psgraphin{ft_pstb}{12.0}{9.0}{Font: PostScript Times-Bold } \clearpage \psgraphin{ft_pstbi}{12.0}{9.0}{Font: PostScript Times-BoldItalic } \vfill \psgraphin{ft_psti}{12.0}{9.0}{Font: PostScript Times-Italic } \clearpage \psgraphin{ft_pstr}{12.0}{9.0}{Font: PostScript Times-Roman } \vfill \psgraphin{ft_pszcmi}{12.0}{9.0}{Font: PostScript ZapfChancery-MediumItalic } \clearpage \psgraphin{ft_pszd}{12.0}{9.0}{Font: PostScript ZapfDingbats } \vfill gle-graphics-4.2.4c/gle-refman/appendix/sm_join.tex0000644000000000000000000001045211405447072020742 0ustar rootroot%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % GLE - Graphics Layout Engine % % % % Modified BSD License % % % % Copyright (C) 2009 GLE. % % % % Redistribution and use in source and binary forms, with or without % % modification, are permitted provided that the following conditions % % are met: % % % % 1. Redistributions of source code must retain the above copyright % % notice, this list of conditions and the following disclaimer. % % % % 2. Redistributions in binary form must reproduce the above % % copyright notice, this list of conditions and the following % % disclaimer in the documentation and/or other materials provided with % % the distribution. % % % % 3. The name of the author may not be used to endorse or promote % % products derived from this software without specific prior written % % permission. % % % % THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR % % IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED % % WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE % % ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY % % DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL % % DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE % % GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS % % INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER % % IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR % % OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN % % IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%\psgraphin{stack1}{15.0}{23.0}{Shadow Graph} \graphin{appendix/fig/join}{14.0cm}{19.0cm}{1} \addcontentsline{toc}{section}{Joining Objects} \clearpage \begin{center} \begin{minipage}[t]{12.0cm} %%\input{join.gle} {\scriptsize %\footnotesize \begin{verbatim} size 18 24 box ! This is JOIN.GLE, demonstrates the join commands. set hei .3 amove .3 .3 text join.gle set hei 1.3 just center amove 9 21 text Joining named objects set hei .8 lwidth .1 amove 8.8 18.8 begin box name line rline 0 -8.2 end box set lwidth 0 amove 9.67745 8.7603 begin box name cir nobox circle 1 end box circle 1 amove 12.7461 4.59445 begin box name hi add .2 text Hi there end box amove 3.14401 17.0566 begin box name grv add .2 text GRV end box amove 14.9533 12.2986 begin box name chv add .2 text CHV end box amove 12.5179 17.6103 begin box name cheese add .2 text Cheese end box amove 2.7381 11.229 begin box name goats add .2 text Goats end box ! Now draw the lines between objects join chv - goats join grv -> line.h ! Note: ".h" means to join horizontally. join line.h <-> cheese.tl join cheese.tr - chv.tr join cir.ci <- hi ! Note: ".ci" is used for circles join cir.ci <- chv join cir.ci <- goats !----------------------------------------------------------------------------- ! A pie slice (Will only work on PostScript it uses BEGIN PATH FILL). sub pie ang1 ang2 radius color$ begin path fill color$ stroke rmove 0 0 arc radius ang1 ang2 closepath end path end sub amove 3 2 @pie 0 10 2 "grey10" @pie 10 40 2 "grey20" @pie 40 120 2 "blue" \end{verbatim} } \hfill {\small join.gle}\\ \end{minipage} \end{center} \vfill gle-graphics-4.2.4c/gle-refman/appendix/fig/stack2.gle0000644000000000000000000001051111405447072021203 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! size 18 26 box ! (uncomment box for debugging) This is STACK2.GLE amove 1.3 13.5 !14.5 begin graph size 16 12 nobox xaxis min 0 max 20 dticks 4 dsubticks 1 xplaces 4 8 12 16 20 ! these would be set to match the dates xnames "Sep 13" "Sep 23" "Oct 3" "Oct 13" "Oct 23" xticks length .2 yticks length .2 yaxis min 0 max 75 dticks 10 dsubticks 5 nofirst ytitle "Bud burst (%)" xtitle "" data test4.dat d1 lstyle 1 marker wcircle msize .3 d2 lstyle 1 marker wsquare msize .3 d3 lstyle 2 marker wcircle msize .3 d4 lstyle 2 marker wsquare msize .3 end graph set hei .4 begin key offset 8.2 3.3 text "Shelter row" lstyle 1 marker circle mscale .6 text "Shelter row + H " lstyle 1 marker square mscale .6 text "Middle row" lstyle 2 marker circle mscale .6 text "Middle row + H" lstyle 2 marker square mscale .6 end key rmove 12 8 text (a) amove 1.3 4 set font rm hei .5 begin graph size 16 12 nobox xaxis min 0 max 20 dticks 4 dsubticks 1 xplaces 4 8 12 16 20 ! these would be set to match the dates xnames "Nov 10" "Nov 15" "Nov 20" "Nov 25" "Nov 30" xticks length .2 yticks length .2 yaxis min 0 max 110 dticks 10 dsubticks 5 ytitle "Flowers per cane at full bloom " xtitle "" data test4.dat d1 lstyle 1 marker circle msize .3 d2 lstyle 1 marker square msize .3 smooth d3 lstyle 2 marker circle msize .3 smooth d4 lstyle 2 marker square msize .3 end graph rmove 12 9 text (b) set hei .4 amove 9 25 text 22. amove 1.3 3 begin text width 16 Figure 5. Influence of Hicane on the duration and timing of (a) bud burst and (b) flowering of kiwifruit. (Note: this data has been made up) end text set just left amove .5 25 text stack2.gle gle-graphics-4.2.4c/gle-refman/appendix/fig/test.dat0000644000000000000000000000576211405447072021010 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 1 10 5 90 12 3 30 15 80 22 5 50 25 70 10 8 80 40 60 15 10 90 45 55 11 14 70 35 50 14 19 80 40 60 6 gle-graphics-4.2.4c/gle-refman/appendix/fig/stack4b.gle0000644000000000000000000000767411405447072021367 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! size 17 26 ! box (uncomment box for measuring with ruler) STACK4B.GLE set font ss amove 3.5 19 begin graph size 10 5 data test.dat title "Top graph, stack4b.gle" hei .5 dist 1 fullsize xaxis min -1 max 6 dticks 1 hei .3 nofirst nolast yaxis min 0 max 20 hei .3 dticks 5 x2labels on d1 marker wsquare msize .4 lstyle 1 d2 marker dot msize 1 lstyle 2 fill x1,d1 color grid4 xmax 3 fill x1,d1 color gray20 xmin 3 end graph rmove 0 -5 begin graph size 10 5 data test.dat fullsize xaxis min -1 max 6 dticks 1 hei .3 nofirst nolast yaxis min 0 max 20 hei .3 dticks 5 nolast bar d1,d2 width .2 dist .2 fill gray10,grid3 color black,black end graph rmove 0 -5 begin graph data test.dat fullsize size 10 5 xaxis min -1 max 6 dticks 1 hei .3 nofirst nolast yaxis min 0 max 20 hei .3 dticks 5 nolast xlabels off y2labels on d1 marker dot lstyle 2 err 10% d2 marker dot lstyle 1 err 10% end graph rmove 0 -5 begin graph data test.dat title "Bottom graph" hei .4 dist 0.0 fullsize size 10 5 xaxis min -1 max 6 dticks 1 hei .3 nofirst nolast grid yaxis min 0 max 20 hei .3 dticks 5 nolast grid xticks lstyle 2 lwidth 0.0001 ! sets the grid line style yticks lstyle 2 lwidth 0.0001 d1 marker wsquare msize .4 lstyle 2 key "Age" key hei .5 d2 marker dot msize 1 lstyle 1 key "Width" end graph gle-graphics-4.2.4c/gle-refman/appendix/fig/nzmap.gle0000644000000000000000000003523211405447072021150 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! size 18 24 rmove 9.11395 23.0791 rline .393772 .452995E-02 rline .939665E-01 .239124E-01 rline -.846033E-01 -.179815 rline -.135201 .82798E-02 rline .377631 -.425119 rline -.705366E-01 .266457E-02 rline .13873 -.173044 rline .764313E-01 -.852394E-02 rline -.493231E-01 -.179672 rline .140863 .535259E-01 rline .235176E-02 .167721 rline .647993E-01 -.409298E-01 rline .946579E-01 -.179094 rline .387963 -.131607E-01 rline -.496264E-01 -.943489E-01 rline .258481 .363541E-01 rline .106403 -.176115 rline .185359 -.610352E-01 rline -.185243 .286713E-01 rline .174305 -.264103 rline .187638 .127279 rline .499849E-01 -.863075E-02 rline .097641 -.187916 rline -.261517E-01 -.854244E-01 rline .247985 -.322664 rline -.064435 -.649929E-01 rline .891743E-01 -.287985 rline -.091156 .143471E-01 rline -.179571 .904846E-01 rline -.409393E-01 -.590076E-01 rline .214806 -.078577 rline -.316944E-01 -.179613 rline .265935 -.416731 rline .176787 -.131702 rline -.666084E-01 -.629082E-01 rline .501604E-01 -.586681E-01 rline -.615234E-01 -.620537E-01 rline .411034E-03 -.126541 rline -.587435E-01 -.120106E-01 rline -.232401E-01 -.824986E-01 rline .974207E-01 -.132061 rline -.675049E-01 -.326328E-01 rline .891447E-01 -.29689 rline -.205588 -.449848E-01 rline .185198 -.110149E-01 rline .314713 -.664291E-01 rline .359472 -.275194 rline -.549507E-02 -.117743 rline .106373 -.173218 rline .220302 .420933E-01 rline -.151547 .505596 rline .905123E-01 .185787 rline -.186344 .36124 rline -.325203E-03 .100063 rmove .246206 .212896 rline -.509806E-01 .311756 rline -.088748 .176233 rline -.879555E-01 -.680504E-01 rline .915813E-02 -.102961 rline -.467033E-01 -.100262 rline .268155 -.210821 rmove .347346 -.163401 rline -.589466E-02 .291443E-02 rmove .569077E-01 -.323503 rline -.295639E-02 .58651E-02 rmove -.963685 .790751 rline -.292683E-02 -.295639E-02 rmove -.283634 -.454384 rline 0 .293922E-02 rmove -.1701 .788055 rline .58651E-02 .591278E-02 rmove -1.01927 1.61457 rline -.292683E-02 -.295639E-02 rmove 1.57976 -3.15447 rline -.293827E-02 .292778E-02 rmove -.244665 .219744 rline .21485 -.903664E-01 rline -.326366E-01 .094038 rline -.173392 -.658607E-02 rmove -.111887 .613632E-01 rline 0 0 rmove -.111326 -.112284 rline .295258E-02 -.293922E-02 rmove 1.84844 -.81365 rline -.292683E-02 -.295639E-02 rmove .169325 -.549675 rline -.294113E-02 -.114441E-04 rmove 1.00495 .746899E-01 rline .147142E-01 -.287819E-02 rmove -1.35752 -.120264 rline -.203678 .269943 rline .04175 -.18524 rline .15899 -.847034E-01 rmove -1.00261 1.91777 rline .238398 -.990925E-01 rline .156931 -.355476 rline .199607 .773258E-01 rline -.163753 -.259661 rline .152636 .065361 rline .10711 -.399828 rline -.290632E-01 -.103127 rline .267859E-01 -.999451E-01 rline -.468369E-01 -.619965E-01 rline .159987 -.390785 rline -.729589E-01 -.159222 rline .285691 -.184261 rline -.017333 -.913029E-01 rline .405738 -.425034E-01 rline .377029 -.245703 rline .47968 -.183464 rline -.105799 -.632286E-02 rline .388023 -.131435E-01 rline .352123 .178009 rline .11093 .232946 rline .425352 .254822 rline .31749 -.193176E-01 rline .344625 -.225227 rline -.303892 -.548643 rline .385475E-01 -.105785 rline -.673447E-01 -.797348E-01 rline .620461E-02 -.10004 rline -.051981 -.282751 rline .296803E-01 -.881729E-01 rline -.336748 -.386907 rline -.176261 -.301361E-01 rline .179205E-01 -.882206E-01 rline -.116253 -.403679 rline .100464 -.164395 rline -.160795 -.262582 rmove -.273609E-02 -.647612E-01 rline 0 0 rmove .273609E-02 .647612E-01 rline .225506E-01 .297332 rline -.543984 .06845 rline -.501951 -.199223 rline -.236917 -.35413 rline .715046E-01 -.296962 rline .179538 -.787382E-01 rline -.274301 -.607371 rline -.125512 -.268333 rline -.175939 -.1302 rline -.636396E-01 -.312227 rline -.307756 -.266129 rline -.537795 -.926287 rline -.636154 -.505846 rline -.31133 -.718899E-01 rline -.715199E-01 .302852 rline -.1706 .040513 rline -.167397 -.448227E-01 rline .01964 .288499 rline -.261053 -.162924 rline -.270042E-01 .167645 rline .23143 .236385 rline .120002 .153518 rmove -.20228 -.159734 rline 0 .293827E-02 rmove .180801 .436312 rline .152588E-04 -.295067E-02 rmove .214787E-01 -.279504 rline .329926 .678242 rline .331078E-01 .665265 rline -.227493 .361091 rline -.759644 .411898 rline -.256407 .213808 rline -.303009 .870705E-01 rline -.215379 .24929 rline .342073E-01 .326824 rline .466406 .284415 rline .463793 .187284 rline .130836 .436109 rline .974951E-01 .750881 rline .270123 .864391E-01 rline -.126791 .126045 rline -.179796E-01 .105877 rline .228434E-01 .2061 rline .193872 .033165 rline -.30182 .622702 rline .965538E-01 .138718 rmove -.323687E-01 .116405E-01 rline -.438538E-01 -.737495E-01 rline 0 0 rmove -.152588E-04 .587654E-02 rline -.222095 .5112 rline .155812 -.140781E-01 rline .476599E-01 -.19405 rline .278619 .183596 rline -.227049 .228636 rline -.322902 -.124907 rline -.163263 .493776 rline -.254045 .390406 rline .14695 .648499E-02 rline .129777 -.140745 rline -.261812E-01 -.854549E-01 rline .821619E-01 .415325E-01 rline .166035E-02 .394367 rline -.132144 -.358334E-01 rline .232553E-01 .795422E-01 rline .196651 .861473E-01 rline -.267491 .48027E-02 rline .166983 .168425 rline -.167453 -.212669E-01 rline -.308743 .370159E-01 rline .177232 -.270052 rline -.137732 -.124163 rline -.909794 1.39135 rline .639772E-01 .212156 rline .258144 .154079 rline -.240636 -.118692 rline -.167147 -.115459 rline -.106402 .179094 rline -.135774 .176043 rline .201225E-01 .138407 rline .375328E-01 .209118 rline -.425452 .681067 rline -.233123 .287485 rline .280762E-02 .382652E-01 rmove -.340166E-01 -9.93531 rline .440843 -.046629 rline -.329149 .202713E-01 rline -.643578E-01 -.317752 rline .247028 -.188024 rline .149817 .736952E-01 rline .825434E-01 -.27349 rline -.733852E-01 -.942049E-01 rline .443516E-01 -.288218 rline .499964E-01 -.293732E-01 rmove -.356197E-01 .370605 rline .294113E-02 -.293922E-02 rmove .356197E-01 -.367665 rline .085351 -.149929 rline .223214 .135523 rline .292587E-02 .235376E-01 rmove -.270286 -.796795E-01 rline .294113E-02 -.293827E-02 rmove .270284 .796738E-01 rline .302466 .229746 rline .176319 .161171E-03 rline .140861 .206041 rline .208661 -.861263E-02 rline -.276047 -.20324 rline .205705 .314713E-02 rline -.214392 -.138461 rline .911407E-01 -.410919E-01 rline -.105667 -.135422 rline .149843 .236807E-01 rline .276152 .973349E-01 rline -.279135 -.384989E-01 rline .527325E-01 .176538 rline .140992 .677881E-01 rline .116882E-01 .588417E-01 rline .173378 .148773E-01 rline .105831 -.469685E-01 rline -.158561 -.12663 rline .471001E-01 -.911417E-01 rline -.331926 -.156224 rline .452516 .563326E-01 rline -.149727 -.170761 rline -.11456 -.354176E-01 rmove -.20065 .846976 rline .615234E-01 .203032 rline -.182083 -.1149 rline .890827E-02 -.102949 rline -.615807E-01 -.138319 rline .176173 .159019 rmove .42373 -.593776 rline .592422E-02 -.441132E-01 rline .146815 .12663 rline -.940685E-01 .029314 rline .412197E-01 -.764313E-01 rline -.969648E-01 -.892258E-02 rline .295353E-02 -.294151E-01 rmove -.228962 -.256127 rline -.527143E-01 -.197136 rline .235489 -.417471 rline -.211233 -.36496 rline -.4226 -.609308 rline -.284663 -.403267 rline -.763712E-01 -.442095E-01 rline .265064E-01 -.676212E-01 rline -.231713 -.464982 rline -.587362 -.394743 rline -.878363E-01 -.344241 rmove -.586796E-02 -.589466E-02 rline .884266E-01 -.2823 rline -.132132 -.117796 rline .285018 .038516 rline .617409E-01 -.234604E-01 rline .194198 -.255733 rline -.114461 -.15896 rline -.1088 .704885E-01 rline .147915E-01 -.970483E-01 rline -.57312 .759244E-01 rline .202692 .825586E-01 rline -.238135 .105673 rline -.049881 -.882921E-01 rline .892353E-02 -.105894 rline -.161573 -.560522E-01 rmove -.293884E-01 -.147285E-01 rline -.120646 .173438 rline .120646 -.173438 rmove -.323114E-01 -.591278E-02 rline -.78713 -.465536 rmove -.293884E-01 -.591278E-02 rline -.275901 -.344419 rline .302792E-02 -.102949 rline -.120208 -.288397 rline .414433E-01 -.311756 rline -.321507E-01 -.185347 rmove -.292683E-02 -.147166E-01 rline -.346139 -.659233 rline .500264E-01 -.823259E-01 rline -.293368 -.529748 rline .064713 -.646529E-01 rline -.968041E-01 -.176585 rline .176218 .109005 rline -.351934E-01 -.706377E-01 rline -.234933E-01 -.264883E-01 rline -.234973 -.114959 rline -.252557 -.182611 rline -.299349 -.42094 rline -.170323 -.129586 rline .104427E-03 -.114727 rline -.223097 -.259066 rline -.355476 -.103301 rline -.417235 -.680685E-01 rline -.34686 .996888E-01 rline -.217438 -.325799E-01 rline -.596046E-04 .558913E-01 rline -.911145E-01 .175714E-01 rline -.558171E-01 -.177145E-01 rline -.148773E-01 .202954 rline -.352678E-01 -.884533E-02 rline -.144124 .143993 rline -.396669 -.621557E-01 rline -.358841 .334984 rline -.323078 -.19446 rline -.305656 .379384E-01 rmove .855932 -.811034 rline .293851E-02 -.293851E-02 rmove 1.02553 .804305E-01 rline .152588E-04 -.295639E-02 rmove -1.22752 -.907177 rline .293851E-02 -.293851E-02 rmove .516301 .950617 rline -.190947 -.649035E-01 rline .07374 -.291133 rline -.310949 -.576854 rline .214496 .026679 rline -.265033E-01 .588059E-01 rline .34664 .138599 rline .234991 .103182 rline .276279E-02 .188255 rline -.261524 -.208437E-01 rline .211439 .150228 rline -.288266 .282103 rmove -1.18202 .707763 rline -.302729 .408947E-01 rline .161326 .314903 rline -.117779E-01 .02352 rline -.733109E-01 -.17069 rline -.587881E-01 .146568E-01 rline -.764577E-01 .617027E-01 rline .155652 .108987 rline -.305539 -.100315 rline -.531733E-01 .302935 rline .578722 .20647 rline -.267449 .320911E-01 rline .193855 .10314 rline -.208631 -.237284E-01 rline .117415 .144243 rline -.617146E-01 .288486E-02 rline -.117603 .498948E-01 rline .055656 .197131 rline .293776 .914693E-01 rline .558348E-01 .888109E-02 rline .061801 -.881734E-01 rline -.234334E-01 -.941572E-01 rline .351636E-01 .114751 rline -.126514 .158721 rline .188094 -.204024E-01 rline -.247133 .288027 rline .240931 .561299E-01 rline -.108874 .141084 rline .220436 -.350952E-01 rline -.188154 .910163E-01 rline .190786 .232559 rline .105962 -.167554 rline .561476E-02 .267684 rline .149772 .106037 rline .214276 .264948 rline .182319 -.117486 rline -.737815E-01 .335258 rline .278914 .267953 rline -.304294E-02 .105899 rmove -1.59573 -3.07546 rline -.293851E-02 .294447E-02 rmove .853508E-01 -.144053 rline -.587988E-02 -.178814E-04 rmove .263831 .6827 rline -.58651E-02 -.295639E-02 rmove -.129277 -.324726E-01 rline -.294137E-02 .588322E-02 rmove -.30852 -.385466E-01 rline -.294161E-02 0 rmove .175536E-01 .794411E-01 rline .237972 .561118E-01 rline -.120589 .11167 rline -.179038 -.223732 rline .061655 .559506E-01 rmove .507715 .712347 rline -.530839E-01 .202912 rline -.073415 -.055963 rline .941873E-01 -.152874 rline .381916E-01 .298643E-02 rmove 1.17376 1.81608 rline .372839 .397462 rline .475946 .12989 rline .182054 .159019 rmove .146713E-01 .02355 rline .419894 .35339 rline .293764 .10618 rline .733557E-01 .120682 rmove .234752E-01 .323715E-01 rline .352087E-01 .647545E-01 rmove .011745 .883293E-02 rline .279063 .126749 rline .152579 .241358 rline .792849 .636136 rline .346318 .473934 rmove -1.03053 -1.00406 rline -.294161E-02 -.294495E-02 rmove 1.0452 1.02173 rline .360387 1.13579 rline .233145E-01 .200046 rline .469995 .209308 rline .293293 .612116 rline -.015214 .547116 rline .255379 .300288 rline .261334 .235581 rline .149754 .120735 set font texcmr set hei 0.3 amove 18 1 set just right text nzmap.gle gle-graphics-4.2.4c/gle-refman/appendix/fig/test4.dat0000644000000000000000000000576211405447072021074 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 1 10 5 90 12 3 30 15 80 22 5 50 25 70 10 8 80 40 60 15 10 90 45 55 11 14 70 35 50 14 19 80 40 60 6 gle-graphics-4.2.4c/gle-refman/appendix/fig/Makefile.os20000664000000000000000000000552711405447072021502 0ustar rootroot######################################################################## # # # GLE - Graphics Layout Engine # # # # Modified BSD License # # # # Copyright (C) 2009 GLE. # # # # Redistribution and use in source and binary forms, with or without # # modification, are permitted provided that the following conditions # # are met: # # # # 1. Redistributions of source code must retain the above copyright # # notice, this list of conditions and the following disclaimer. # # # # 2. Redistributions in binary form must reproduce the above # # copyright notice, this list of conditions and the following # # disclaimer in the documentation and/or other materials provided with # # the distribution. # # # # 3. The name of the author may not be used to endorse or promote # # products derived from this software without specific prior written # # permission. # # # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR # # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY # # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE # # GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER # # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN # # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # # ######################################################################## EPSS = ap_marker.eps ap_fonts.eps wall.eps join.eps single.eps stack2.eps \ stack1.eps stack4b.eps loop.eps clip.eps all: $(EPSS) %.eps: %.gle gle -d eps $< clean: rm -rf *.eps *.pdf *.inc gle-graphics-4.2.4c/gle-refman/appendix/fig/ap_marker.gle0000644000000000000000000000652211405447072021764 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! size 13 5.5 set hei .99 sub mm name$ gsave mk = mk+1 gsave set lwidth .0001 set lstyle 1212 rmove 0 .8 rline 0 -1.6 rmove 0 .8 grestore marker name$ 1 rmove .8 0 rline 1 0 rmove .5 -.3 write name$ grestore rmove 0 -1.3 end sub mk = 0 amove 0.5 pageheight()-0.75 scale .4 .4 gsave @mm "circle" @mm "triangle" @mm "square" @mm "diamond" @mm "fcircle" @mm "ftriangle" @mm "fsquare" @mm "fdiamond" @mm "dot" grestore rmove 11 0 gsave @mm "cross" @mm "club" @mm "heart" @mm "star" @mm "snake" @mm "dag" @mm "ddag" @mm "asterisk" @mm "oplus" grestore rmove 11 0 @mm "ominus" @mm "otimes" @mm "odot" @mm "trianglez" @mm "diamondz" @mm "wcircle" @mm "wtriangle" @mm "wsquare" @mm "wdiamond" gle-graphics-4.2.4c/gle-refman/appendix/fig/title32.gle0000644000000000000000000001031411405447072021303 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! size 18 27 box 18 27 amove .2 .2 box 18-.4 27-.4 set just center hei 1.3 amove 12.2 23 set hei 2.1 font rmi for i = 0 to 1 step .05 set color (1-i) text GLE rmove -.05 .025 next i set color white text GLE set color black set hei .8 just center amove 9 21.5 amove 11.8 21.6 text A General Purpose rmove 0 -.9 text Graphics Package Rmove 0 -1.2 set hei .6 text Version 3.2 set just left hei .7 set hei .401 ! font cmr10 set font rm sub thetext begin text width 13 There has long been a need for a high quality graphics package for scientists GLE combines a user friendly interface with a full range of facilities needed by scientists for producing publication graphs, diagrams, posters and slides. It provides LaTeX quality text and symbol typesetting in a large variety of styles and sizes. GLE is superior to most other graphics packages in two main areas, firstly the module for producing graphs is extremely flexible allowing the user to specify any feature of the graph (down to the line width of the sub-ticks for example) and secondly in providing publication quality output (with filled in fonts) similar to that expected from a package like LaTeX. GLE is available for both PCs and VAXes giving an almost identical user interface on both platforms. end text end sub amove 2.5 16 begin box fill grey40 noborder add .4 @thetext end box rmove -.5 .5 begin box fill white add .4 @thetext end box @thetext amove 2.5 16 set hei 7 font rmi amove 2 2 begin path clip stroke text GLE end path set lwidth .1 amove 2 1.8 for i = 0 to 40 amove 2 2 aline i 40-i next i gle-graphics-4.2.4c/gle-refman/appendix/fig/clip.gle0000644000000000000000000000731511405447072020753 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !size 18 24 ! This is CLIP.GLE, sets up an arbitrary clipping region. size 14 18 set font texcmr scale .6 .8 set hei .3 ! NOTE: CLIPPING ONLY WORKS ON POSTSCRIPT DEVICES. amove 2.3 .3 ! So this won't work on the pc-screen. text clip.gle set hei 10 amove 2 2 begin clip ! Save default clipping region begin path clip ! Set up the clipping region text GLE end path gsave amove 2 2 text www ! Draw some text which will be clipped for i = 1 to 90 ! Draw some lines which will be clipped amove 2 2 rotate -1 rline 0 30 next i grestore end clip ! restore default clipping region amove 0 0 rline 10 10 ! draw a line which won't be clipped. !----------------------------------------------------------------------------- !Here's a simple example of how to set up a clipping region which consists !of two squares. Try this out amove 1 11 begin origin begin path clip stroke amove 2 2 box 4 4 amove 7 2 box 4 4 end path amove 2 2 set hei 4 text Here is clipped text end origin gle-graphics-4.2.4c/gle-refman/appendix/fig/single.gle0000644000000000000000000000543111405447072021302 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! size 12 9 box begin graph SIZE 12 9 Title "Bar example" data single.dat bar d1,d2 fill green,blue fill x1,d1 color gray10 end graph gle-graphics-4.2.4c/gle-refman/appendix/fig/xend.gle0000644000000000000000000000540511405447072020760 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! \begin{verbatim} text abc set color blue amove xend() yend() text def \end{verbatim} gle-graphics-4.2.4c/gle-refman/appendix/fig/symbols.csv0000664000000000000000000000232511660556302021536 0ustar rootrootAA AE Delta Downarrow Gamma Im L Lambda Leftarrow Leftrightarrow O OE Omega P Phi Pi Psi Re Rightarrow S Sigma Theta Uparrow Updownarrow Upsilon Xi aa ae aleph alpha amalg approx ast asymp backslash beta bigcap bigcirc bigcup bigodot bigoplus bigotimes bigsqcup bigtriangledown bigtriangleup biguplus bigvee bigwedge bot bullet cap cdot chi circ clubsuit coprod cup dag dagger dashv ddag ddagger degree delta diamond diamondsuit div downarrow ell emptyset epsilon equiv eta exists flat forall frown gamma geq gg heartsuit i imath in infty intop iota j jmath kappa l lambda land leftarrow leftharpoondown leftharpoonup leftrightarrow leq lhook ll lor mapsto mapstochar mid minus mp mu nabla natural nearrow neg neq ni not nu nwarrow o odot oe ointop omega ominus oplus oslash otimes owns parallel partial perp phi pi pm prec preceq prime prod propto psi rho rhook rightarrow rightharpoondown rightharpoonup searrow setminus sharp sigma sim simeq smallint smile spadesuit sqcap sqcup sqsubseteq sqsupseteq ss star subset subseteq succ succeq sum supset supseteq swarrow tau theta times top triangle triangleleft triangleright uparrow updownarrow uplus upsilon varepsilon varphi varpi varrho varsigma vartheta vdash vee wedge wp wr xi zeta gle-graphics-4.2.4c/gle-refman/appendix/fig/title.gle0000644000000000000000000000637311405447072021150 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! size 18 27 box set font texcmr set hei 20 amove 0 0 for i = 1 to 100 box 18 27/100 fill (i/100) rmove 0 27/100 next i begin path clip amove 0 0 box 18 27 end path amove 5 0 !5 1 gsave rotate 60 !65 scale .7 .5 !1 .5 begin path clip text GLE rmove 10 -8 set hei 1.5 text A General Purpose rmove 0 -2 text Graphics Package end path amove 5 0 ! 5 1 scale 1.43 2 !1 2 rotate -60 !-65 amove 0 0 for j = 1 to 100 box 18 27/100 fill (1-j/100) noborder rmove 0 27/100 next j grestore amove 5 0!5 1 rotate 60 ! 65 scale .7 .5 !1 .5 begin path stroke text GLE end path amove 5 0 !5 1 scale 1.43 2 rotate -60 !-65 gle-graphics-4.2.4c/gle-refman/appendix/fig/fonttes2.gle0000644000000000000000000000650611405447072021571 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! size 24 18 !fnm$="psbd" !"texcmr" include glename.gle xstart=3 ystart=14 xspace=1 yspace=1.75 !1 set hei 1.0 set font texcmr amove 12 17 set just center write "Font : " fnm$ set hei .5 set color blue amove xstart-xspace ystart+1.5 rmove xspace/2 yspace/2 rline 0 -ystart-1.5 amove xstart ystart+1.5 for x=1 to 20 write x gsave rmove xspace/2 yspace/2 rline 0 -ystart-1.5 grestore rmove xspace 0 next x amove xstart-1 ystart for y=1 to 8 !13 write (y-1)*2 gsave rmove -1*(xspace/2) yspace/2 ! .5 .5 rline 24-xstart 0 grestore rmove 0 -yspace next y rmove -1*(xspace/2) (yspace/2) rline 24-xstart 0 set color black set hei .6 set font fnm$ amove xstart ystart include glefont2.gle gle-graphics-4.2.4c/gle-refman/appendix/fig/stack1.gle0000644000000000000000000000610611405447072021207 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! size 17 23 ! This is STACK1.GLE, a single graph, with shading background set hei .4 amove .3 .3 text stack1.gle amove 1.5 5 box 15 16 fill gray60 rmove -1 1 box 15 16 fill white rmove 2 4 box 11 8 fill gray5 set font ss begin graph fullsize size 11 8 title "Data transfer on 9600 bit/sec line" xtitle "Time (seconds)" ytitle "K Bits" data test.dat d1 line marker wsquare mscale 2 xaxis min -1 max 6 yaxis min 0 max 11 end graph gle-graphics-4.2.4c/gle-refman/appendix/fig/Makefile.gcc0000664000000000000000000000603511660303004021513 0ustar rootroot######################################################################## # # # GLE - Graphics Layout Engine # # # # Modified BSD License # # # # Copyright (C) 2009 GLE. # # # # Redistribution and use in source and binary forms, with or without # # modification, are permitted provided that the following conditions # # are met: # # # # 1. Redistributions of source code must retain the above copyright # # notice, this list of conditions and the following disclaimer. # # # # 2. Redistributions in binary form must reproduce the above # # copyright notice, this list of conditions and the following # # disclaimer in the documentation and/or other materials provided with # # the distribution. # # # # 3. The name of the author may not be used to endorse or promote # # products derived from this software without specific prior written # # permission. # # # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR # # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY # # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE # # GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER # # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN # # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # # ######################################################################## EPSS = ap_marker.pdf ap_fonts.pdf wall.pdf join.pdf single.pdf stack2.pdf \ stack1.pdf stack4b.pdf loop.pdf clip.pdf color_sample.inc \ color_list_svg.inc symbols.inc ifeq ($(RUNBUILD),1) GLE = ../../../build/bin/gle else GLE = gle endif all: $(EPSS) %.inc: %.gle $(GLE) -texincprefix appendix/fig/ -inc -d pdf $< %.pdf: %.gle $(GLE) -d pdf $< clean: rm -rf *.pdf *.inc .gle gle-graphics-4.2.4c/gle-refman/appendix/fig/ap_fonts.gle0000644000000000000000000001317411405447072021635 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! size 18 24 not_avail = 0 sub fnt f$ n$ set font rm set just right write f$ rmove .5 0 if font(f$) then set just left font f$ write n$ else set just left font rm write "Font `"+f$+"' not available" not_avail = 1 end if rmove -.5 -.6 end sub set hei .4 amove 1.6 23 @fnt "rm" "Roman" @fnt "rmb" "Roman Bold" @fnt "rmi" "Roman Italic" @fnt "ss" "Sans Serif" @fnt "ssb" "Sans Serif Bold" @fnt "ssi" "Sans Serif Italic" @fnt "tt" "Typewriter" @fnt "ttb" "Typewriter Bold" @fnt "tti" "Typewriter Italic" amove 1.6 (23-(.6*11)) @fnt "texcmr" "Computer Modern Roman" @fnt "texcmb" "Computer Modern Bold" @fnt "texcmti" "Computer Modern Text Italic" @fnt "texcmmi" "Computer Modern Maths Italic" @fnt "texcmss" "Computer Modern Sans Serif" @fnt "texcmssb" "Computer Modern Sans Serif Bold" @fnt "texcmssi" "Computer Modern Sans Serif Italic" @fnt "texcmtt" "Computer Modern Typewriter Text" @fnt "texcmitt" "Computer Modern Italic Typewriter" !@fnt "texcmex" "Computer Modern Extensible" !@fnt "texcmsl" "Computer Modern Slanted" !@fnt "texcmsy" "Computer Modern Symbol" amove 1.6 (23-(.6*22)) !@fnt "plcc" "Complex Cartographic" !@fnt "plcg" "Complex Gothic" @fnt "plsr" "Simplex Roman" @fnt "pldr" "Duplex Roman" @fnt "pltr" "Triplex Roman" @fnt "plti" "Triplex Italic" @fnt "plcr" "Complex Roman" @fnt "plci" "Complex Italic" @fnt "plss" "Simplex Script" @fnt "plcs" "Complex Script" @fnt "plsa" "Simplex Ascii" @fnt "plba" "Block Ascii" @fnt "plge" "Gothic English" @fnt "plgg" "Gothic German" @fnt "plgi" "Gothic Italian" @fnt "plsg" "Simplex Greek" amove 10.75 23 @fnt "pstr" "Times-Roman" @fnt "pstb" "Times-Bold" @fnt "psti" "Times-Italic" @fnt "pstbi" "Times-BoldItalic" @fnt "psc" "Courier" @fnt "pscb" "Courier-Bold" @fnt "psco" "Courier-Oblique" @fnt "pscbo" "Courier-BoldOblique" @fnt "psh" "Helvetica" @fnt "pshb" "Helvetica-Bold" @fnt "psho" "Helvetica-Oblique" @fnt "pshbo" "Helvetica-BoldOblique" @fnt "pshc" "Helvetica-Condensed" @fnt "pshcb" "Helvetica-Condensed-Bold" @fnt "pshcdo" "Helvetica-Condensed-Oblique" @fnt "pshn" "Helvetica-Narrow" @fnt "pshnb" "Helvetica-Narrow-Bold" @fnt "pshno" "Helvetica-NarrowOblique" @fnt "pshnbo" "Helvetica-Narrow-BoldOblique" @fnt "psagb" "AvantGarde-Book" @fnt "psagd" "AvantGarde-Demi" @fnt "psagbo" "AvantGarde-BookOblique" @fnt "psagdo" "AvantGarde-DemiOblique" @fnt "psbl" "Bookman-Light" @fnt "psbd" "Bookman-Demi" @fnt "psbli" "Bookman-LightItalic" @fnt "psbdi" "Bookman-DemiItalic" @fnt "psncsr" "NewCenturySchlbk-Roman" @fnt "psncsb" "NewCenturySchlbk-Bold" @fnt "psncsi" "NewCenturySchlbk-Italic" @fnt "psncsbi" "NewCenturySchlbk-BoldItalic" @fnt "pspr" "Palatino-Roman" @fnt "pspb" "Palatino-Bold" @fnt "pspi" "Palatino-Italic" @fnt "pspbi" "Palatino-BoldItalic" @fnt "pssym" "PostScript Symbol" @fnt "pszcmi" "ZapfChancery-MediumItalic" @fnt "pszd" "ZapfDingbats" if not_avail = 1 then set just bl font rm amove 0.1 0.2 write "Fonts marked `not available' are not in the standard GLE distribution (install the `extra-fonts' package)" end if gle-graphics-4.2.4c/gle-refman/appendix/fig/color_list_svg.gle0000664000000000000000000001470611405447072023060 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! size 17 21 include "../../script/manual.gle" manual_std_mode set font psh just tl amove 0.25 pageheight()-0.1 tex "GLE supports these SVG/X11 standard colors (alphabetical order)" bw = 0.8; bh = 0.4; dy = 0.1; dx = 4.35; ytop = pageheight()-1.5 sub show_color name$ rmove 0 -bh/2 box bw bh fill name$ rmove bw+0.2 bh/2 tex name$ rmove -bw-0.2 -bh-dy end sub set just lc amove 0.25 ytop show_color "aliceblue" show_color "antiquewhite" show_color "aqua" show_color "aquamarine" show_color "azure" show_color "beige" show_color "bisque" show_color "black" show_color "blanchedalmond" show_color "blue" show_color "blueviolet" show_color "brown" show_color "burlywood" show_color "cadetblue" show_color "chartreuse" show_color "chocolate" show_color "coral" show_color "cornflowerblue" show_color "cornsilk" show_color "crimson" show_color "cyan" show_color "darkblue" show_color "darkcyan" show_color "darkgoldenrod" show_color "darkgray" show_color "darkgreen" show_color "darkkhaki" show_color "darkmagenta" show_color "darkolivegreen" show_color "darkorange" show_color "darkorchid" show_color "darkred" show_color "darksalmon" show_color "darkseagreen" show_color "darkslateblue" show_color "darkslategray" show_color "darkturquoise" show_color "darkviolet" show_color "deeppink" amove 0.25+dx ytop show_color "deepskyblue" show_color "dimgray" show_color "dodgerblue" show_color "firebrick" show_color "floralwhite" show_color "forestgreen" show_color "fuchsia" show_color "gainsboro" show_color "ghostwhite" show_color "gold" show_color "goldenrod" show_color "gray" show_color "green" show_color "greenyellow" show_color "honeydew" show_color "hotpink" show_color "indianred" show_color "indigo" show_color "ivory" show_color "khaki" show_color "lavender" show_color "lavenderblush" show_color "lawngreen" show_color "lemonchiffon" show_color "lightblue" show_color "lightcoral" show_color "lightcyan" show_color "lightgoldenrodyellow" show_color "lightgray" show_color "lightgreen" show_color "lightpink" show_color "lightsalmon" show_color "lightseagreen" show_color "lightskyblue" show_color "lightslategray" show_color "lightsteelblue" show_color "lightyellow" show_color "lime" show_color "limegreen" amove 0.25+2*dx ytop show_color "linen" show_color "magenta" show_color "maroon" show_color "mediumaquamarine" show_color "mediumblue" show_color "mediumorchid" show_color "mediumpurple" show_color "mediumseagreen" show_color "mediumslateblue" show_color "mediumspringgreen" show_color "mediumturquoise" show_color "mediumvioletred" show_color "midnightblue" show_color "mintcream" show_color "mistyrose" show_color "moccasin" show_color "navajowhite" show_color "navy" show_color "oldlace" show_color "olive" show_color "olivedrab" show_color "orange" show_color "orangered" show_color "orchid" show_color "palegoldenrod" show_color "palegreen" show_color "paleturquoise" show_color "palevioletred" show_color "papayawhip" show_color "peachpuff" show_color "peru" show_color "pink" show_color "plum" show_color "powderblue" show_color "purple" show_color "red" show_color "rosybrown" show_color "royalblue" show_color "saddlebrown" amove 0.25+3*dx ytop show_color "salmon" show_color "sandybrown" show_color "seagreen" show_color "seashell" show_color "sienna" show_color "silver" show_color "skyblue" show_color "slateblue" show_color "slategray" show_color "snow" show_color "springgreen" show_color "steelblue" show_color "tan" show_color "teal" show_color "thistle" show_color "tomato" show_color "turquoise" show_color "violet" show_color "wheat" show_color "white" show_color "whitesmoke" show_color "yellow" show_color "yellowgreen" show_color "gray1" show_color "gray5" show_color "gray10" show_color "gray20" show_color "gray30" show_color "gray40" show_color "gray50" show_color "gray60" show_color "gray70" show_color "gray80" show_color "gray90" gle-graphics-4.2.4c/gle-refman/appendix/fig/tut_slide.gle0000644000000000000000000000554211405447072022020 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! size 18 24 amove 9 20 set font rm hei 3 just center text Costs amove 9 18 set just tc hei .8 font ss begin table Sector Cost Result Farming $200 $40 Chickens $45 $60 Grass $150 $70 end table gle-graphics-4.2.4c/gle-refman/appendix/fig/fonttest.gle0000644000000000000000000000645711405447072021700 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! size 24 18 fnm$="pszcmi" !"texcmr" xstart=3 ystart=14 xspace=1 yspace=2 !1 set hei 1.0 set font texcmr amove 12 17 set just center write "Font : " fnm$ set hei .5 set color blue amove xstart-xspace ystart+1.5 rmove xspace/2 yspace/2 rline 0 -ystart-1.5 amove xstart ystart+1.5 for x=1 to 20 write x gsave rmove xspace/2 yspace/2 rline 0 -ystart-1.5 grestore rmove xspace 0 next x amove xstart-1 ystart for y=1 to 7 !13 write (y-1)*2 gsave rmove -1*(xspace/2) yspace/2 ! .5 .5 rline 24-xstart 0 grestore rmove 0 -yspace next y rmove -1*(xspace/2) (yspace/2) rline 24-xstart 0 set color black set hei .8 set font fnm$ amove xstart ystart include glefont.gle gle-graphics-4.2.4c/gle-refman/appendix/fig/join.gle0000644000000000000000000000776311405447072020772 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! size 14 19 box ! This is JOIN.GLE, demonstrates the join commands. begin scale .8 .8 set hei .3 amove .3 .3 text join.gle set hei 1.3 just center amove 9 21 text Joining named objects set hei .8 lwidth .1 amove 8.8 18.8 begin box name line rline 0 -8.2 end box set lwidth 0 amove 9.67745 8.7603 begin box name cir nobox circle 1 end box circle 1 amove 12.7461 4.59445 begin box name hi add .2 text Hi there end box amove 3.14401 17.0566 begin box name grv add .2 text GRV end box amove 14.9533 12.2986 begin box name chv add .2 text CHV end box amove 12.5179 17.6103 begin box name cheese add .2 text Cheese end box amove 2.7381 11.229 begin box name goats add .2 text Goats end box ! Now draw the lines between objects join chv - goats join grv -> line.h ! Note: ".h" means to join horizontally. join line.h <-> cheese.tl join cheese.tr - chv.tr join cir.ci <- hi ! Note: ".ci" is used for circles join cir.ci <- chv join cir.ci <- goats !----------------------------------------------------------------------------- ! A pie slice (Will only work on PostScript it uses BEGIN PATH FILL). sub pie ang1 ang2 radius color$ begin path fill color$ stroke rmove 0 0 arc radius ang1 ang2 closepath end path end sub amove 3 2 @pie 0 10 2 "gray10" @pie 10 40 2 "gray20" @pie 40 120 2 "blue" end scale gle-graphics-4.2.4c/gle-refman/appendix/fig/single.dat0000644000000000000000000000526611405447072021311 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 0 2 6 1 10 16 2 3 6 3 6 3 4 5 4 5 3 7 gle-graphics-4.2.4c/gle-refman/appendix/fig/loop.gle0000644000000000000000000000670111405447072020773 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! size 17 17 box !18 24 box ! This is LOOP.GLE, shows programming examples amove 5 14 set just center hei 1 text Subroutines, Loops set just left hei .7 set hei .9 ! First define a single neuron sub neuron xx yy amove xx yy begin scale .5 .5 curve 0 .4 .4 .4 .4 -.4 .4 .4 .4 -.8 -.4 -.8 -.4 .4 curve -.4 -.8 -.4 .4 -.4 -.4 -.4 .4 0 .4 closepath end scale end sub ! Draw the neurons for xx = 0 to 1 for i = 1 to 6 @neuron xx*6+2 i*2+1.2 next i next xx ! Draw the lines between them for i = 1 to 6 for j = 1 to 6 amove 3 i*2+1 aline 7.5 j*2+1 next j next i !-------------------------------------------------------------------------- include ziptext.gle amove 12 1 @ziptext "Hello" amove 13 4 begin rotate 20 @ziptext "Green trees" end rotate gle-graphics-4.2.4c/gle-refman/appendix/fig/wall.gle0000644000000000000000000001367711405447072020773 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! size 17 26 box ! this is for sticking on your wall ! it has fonts, lstyles, shading, colors, markers on it. set hei 1 just center font psh amove 9 24.5 !25.5 text GLE Wall Reference set just left set hei .3 amove .3 .4 text wall.gle amove 2 4 sub sh f$ set just left box -.5 .5 fill f$ RMOVE .2 .1 write f$ rmove -.2 .4 end sub amove 9.5 10 set hei .3 font ss begin box add .2 begin text width 7 The GRID and SHADE patterns should only be used for filling on PostScript printers, the gray levels and colors will work for both filling and color settings on any device. end text end box set font rm set hei .4 amove 11.5 2 @sh "Shade" @sh "Shade1" @sh "Shade2" @sh "Shade3" @sh "Shade4" @sh "Shade5" @sh "Grid" @sh "Grid1" @sh "Grid2" @sh "Grid3" @sh "Grid4" @sh "Grid5" amove 14.5 2 @sh "Red" @sh "Green" @sh "Blue" @sh "Magenta" @sh "Yellow" @sh "Black" @sh "White" @sh "Gray10" @sh "Gray20" @sh "Gray40" @sh "Gray60" @sh "Gray80" sub mm name$ gsave mk = mk+1 gsave set lwidth .0001 set lstyle 1212 rmove 0 .4 rline 0 -.8 rmove 0 .4 grestore marker name$ 1 rmove .3 0 rline .5 0 rmove .2 -.15 write name$ grestore rmove 0 -.65 end sub amove 9.5 22 @mm "circle" @mm "triangle" @mm "square" @mm "diamond" @mm "fcircle" @mm "ftriangle" @mm "fsquare" @mm "fdiamond" @mm "dot" @mm "cross" @mm "club" @mm "heart" @mm "star" @mm "snake" amove 13.5 22 @mm "dag" @mm "ddag" @mm "asterisk" @mm "oplus" @mm "ominus" @mm "otimes" @mm "odot" @mm "trianglez" @mm "diamondz" @mm "wcircle" @mm "wtriangle" @mm "wsquare" @mm "wdiamond" sub fnt f$ n$ set font rm set just right write f$ rmove .5 0 set just left font f$ write n$ rmove -.5 -.6 end sub set hei .4 amove 2 14 @fnt "rm" "Roman" @fnt "rmi" "Roman Italic" @fnt "rmb" "Roman Bold" @fnt "rmbi" "Roman Bold Italic" @fnt "tt" "Typewriter" @fnt "ttb" "Typewriter Bold" @fnt "ss" "Sans Serif " @fnt "ssb" "Sans Serif Bold" @fnt "ssi" "Sans Serif Italic" @fnt "psc" "PostScript Courier" @fnt "psh" "PostScript Helvetica" @fnt "psbl" "PostScript Bookman" @fnt "psncsr" "PostScript New Century Schlblk Roman" @fnt "pszcmi" "PostScript ZapfChancery-MediumItalic" @fnt "pszd" "PostScript ZapfDingbats" if font("pltr") then @fnt "pltr" "Plotter Triplex Roman" @fnt "pldr" "Plotter Duplex Roman" @fnt "plsr" "Plotter Simplex Roman" @fnt "plge" "Plotter Gothic English" @fnt "plci" "Plotter Complex Italic" @fnt "plss" "Plotter Simplex Script" else @fnt "psagb" "PostScript AvantGarde-Book" @fnt "psagd" "PostScript AvantGarde-Demi" @fnt "pssym" "PostScript Symbol" @fnt "texcmr" "Computer Modern Roman" @fnt "texcmb" "Computer Modern Bold" @fnt "texcmti" "Computer Modern Text Italic" end if amove 2 20 box 6 3 begin origin set hei .3 just left font rm amove .5 2.5 for z = 0 to 4 set lstyle z rline 2 0 rmove .1 0 write z rmove -2.1 -.4 next z amove 3.5 2.5 for z = 5 to 9 set lstyle z rline 2 0 rmove .1 0 write z rmove -2.1 -.4 next z amove .5 .2 set lstyle 9229 rline 3 0 rmove .1 0 text 9229 end origin sub lw ww wn$ set lwidth ww rline 1 0 rmove .2 -.1 write wn$ rmove -1.2 .5 end sub set hei .3 just left font ss amove 3 16 @lw 0 "lwidth 0" @lw .0001 "lwidth 0.0001" @lw .01 "lwidth 0.01" @lw .02 "lwidth 0.02" @lw .05 "lwidth 0.05" @lw .1 "lwidth 0.1" @lw .2 "lwidth 0.2" gle-graphics-4.2.4c/gle-refman/appendix/fig/color_sample.gle0000664000000000000000000001523411405447072022504 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! size 17 21 include "../../script/manual.gle" manual_std_mode set font psh just tl amove 0.25 pageheight()-0.1 tex "GLE supports these SVG/X11 standard colors (sorted by color)" bw = 0.8; bh = 0.4; dy = 0.1; dx = 4.35; ytop = pageheight()-1.5 sub show_color name$ rmove 0 -bh/2 box bw bh fill name$ rmove bw+0.2 bh/2 tex name$ rmove -bw-0.2 -bh-dy end sub set just lc amove 0.25 ytop show_color "indianred" show_color "lightcoral" show_color "salmon" show_color "darksalmon" show_color "lightsalmon" show_color "crimson" show_color "red" show_color "firebrick" show_color "darkred" show_color "pink" show_color "lightpink" show_color "hotpink" show_color "deeppink" show_color "mediumvioletred" show_color "palevioletred" show_color "coral" show_color "tomato" show_color "orangered" show_color "darkorange" show_color "orange" show_color "gold" show_color "yellow" show_color "lightyellow" show_color "lemonchiffon" show_color "lightgoldenrodyellow" show_color "papayawhip" show_color "moccasin" show_color "peachpuff" show_color "palegoldenrod" show_color "khaki" show_color "darkkhaki" show_color "lavender" show_color "thistle" show_color "plum" show_color "violet" show_color "orchid" show_color "fuchsia" show_color "magenta" show_color "mediumorchid" amove 0.25+dx ytop show_color "mediumpurple" show_color "blueviolet" show_color "darkviolet" show_color "darkorchid" show_color "darkmagenta" show_color "purple" show_color "indigo" show_color "slateblue" show_color "darkslateblue" show_color "greenyellow" show_color "chartreuse" show_color "lawngreen" show_color "lime" show_color "limegreen" show_color "palegreen" show_color "lightgreen" show_color "mediumspringgreen" show_color "springgreen" show_color "mediumseagreen" show_color "seagreen" show_color "forestgreen" show_color "green" show_color "darkgreen" show_color "yellowgreen" show_color "olivedrab" show_color "olive" show_color "darkolivegreen" show_color "mediumaquamarine" show_color "darkseagreen" show_color "lightseagreen" show_color "darkcyan" show_color "teal" show_color "aqua" show_color "cyan" show_color "lightcyan" show_color "paleturquoise" show_color "aquamarine" show_color "turquoise" show_color "mediumturquoise" amove 0.25+2*dx ytop show_color "darkturquoise" show_color "cadetblue" show_color "steelblue" show_color "lightsteelblue" show_color "powderblue" show_color "lightblue" show_color "skyblue" show_color "lightskyblue" show_color "deepskyblue" show_color "dodgerblue" show_color "cornflowerblue" show_color "mediumslateblue" show_color "royalblue" show_color "blue" show_color "mediumblue" show_color "darkblue" show_color "navy" show_color "midnightblue" show_color "cornsilk" show_color "blanchedalmond" show_color "bisque" show_color "navajowhite" show_color "wheat" show_color "burlywood" show_color "tan" show_color "rosybrown" show_color "sandybrown" show_color "goldenrod" show_color "darkgoldenrod" show_color "peru" show_color "chocolate" show_color "saddlebrown" show_color "sienna" show_color "brown" show_color "maroon" show_color "white" show_color "snow" show_color "honeydew" show_color "mintcream" amove 0.25+3*dx ytop show_color "azure" show_color "aliceblue" show_color "ghostwhite" show_color "whitesmoke" show_color "seashell" show_color "beige" show_color "oldlace" show_color "floralwhite" show_color "ivory" show_color "antiquewhite" show_color "linen" show_color "lavenderblush" show_color "mistyrose" show_color "gainsboro" show_color "lightgray" show_color "silver" show_color "darkgray" show_color "gray" show_color "dimgray" show_color "lightslategray" show_color "slategray" show_color "darkslategray" show_color "black" show_color "gray1" show_color "gray5" show_color "gray10" show_color "gray20" show_color "gray30" show_color "gray40" show_color "gray50" show_color "gray60" show_color "gray70" show_color "gray80" show_color "gray90" gle-graphics-4.2.4c/gle-refman/appendix/fig/showfont.gle0000644000000000000000000000732111405447072021670 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! size 12 9 !24 18 begin scale .5 .5 !yanz=12 !/14 !fnm$="plsym1" !"texcmr" !nam$="Ganz langer name" include glename.gle xstart=3 ystart=14 xspace=1 yspace=2*(12/yanz) set hei .9 set font texcmr amove 1.5 17 set just bl write "Font : " fnm$ amove 22.5 17 set hei .7 set just br write nam$ set hei 1.0 set hei .5 !set color blue amove xstart-xspace ystart+1.5 rmove xspace/2 yspace/2 rline 0 -ystart-yspace+.5 amove xstart ystart+1.5 set just center for x=1 to 20 write (x-1) gsave rmove xspace/2 yspace/2 rline 0 -ystart-yspace+.5 grestore rmove xspace 0 next x amove xstart-1 ystart !!for y=1 to 7 !13 for y=1 to (yanz/2)+1 write (y-1)*2 gsave rmove -1*(xspace/2) yspace/2 ! .5 .5 rline 24-xstart 0 grestore rmove 0 -yspace next y rmove -1*(xspace/2) (yspace/2) rline 24-xstart 0 set color black set hei .8*(12/yanz) set font fnm$ amove xstart ystart for j = 0 to (yanz/2) for i = 0 to 19 ! note: no spaces in expression below. (exept inside quotes) xx$ = "\char{"+num1$(j*20+i)+"}" write xx$ rmove xspace 0 next i amove xstart ystart-((j+1)*yspace) next j end scale gle-graphics-4.2.4c/gle-refman/appendix/fig/symbols.gle0000664000000000000000000000061311663014705021507 0ustar rootroot size 16 22 symwd = 0.5 wd = 4 hi = 0.45 set font texcmr dx = 0.25 dy = 0.5 x = 0 y = 0 nrows = 48 fopen "symbols.csv" f1 read until feof(f1) fread f1 sym$ amove x*wd+dx pageheight()-y*hi-dy towrite$ = "\"+sym$ ! print towrite$ write towrite$ amove x*wd+dx+symwd pageheight()-y*hi-dy tex "$\backslash{}$"+sym$ y = y + 1 if y = nrows then y = 0 x = x + 1 end if next fclose f1 gle-graphics-4.2.4c/gle-refman/appendix/fig/t.gle0000644000000000000000000001027111405447072020262 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! size 18 27 box 18 27 amove .2 .2 box 18-.4 27-.4 set just center hei 1.3 amove 11.8 23 set hei 2.1 font rmi for i = 0 to 1 step .05 set color (1-i) text GLE 3.2 rmove -.05 .025 next i set color white text GLE 3.2 set color black rmove 6 0 !text V3.2 set hei .8 just center amove 9 21.5 amove 11.8 21.3 text A General Purpose rmove 0 -1 text Graphics Package set just left hei .7 set hei .401 ! font cmr10 set font rm sub thetext begin text width 13 There has long been a need for a high quality graphics package for scientists GLE combines a friendly user interface with a full range of facilities needed by scientists for producing publication graphs, diagrams, posters and slides. It provides LATEX quality text and symbol typsetting in a large variety of styles and sizes. GLE is superior to most other graphics packages in two main areas, firstly the module for producing graphs is extremely flexible allowing the user to specify any feature of the graph (down to the line width of the sub-ticks for example) and secondly in providing publication quality output (with filled in fonts) similar to that expected from a package like LaTeX. GLE is available for both PC's and the VAX giving an identical user interface on both platforms. end text end sub amove 2.5 16 begin box fill grey40 noborder add .4 @thetext end box rmove -.5 .5 begin box fill white add .4 @thetext end box @thetext amove 2.5 16 set hei 7 font rmi amove 2 2 begin path clip stroke text GLE end path set lwidth .1 amove 2 1.8 for i = 0 to 40 amove 2 2 aline i 40-i next i gle-graphics-4.2.4c/gle-refman/appendix/fig/ziptext.gle0000644000000000000000000000543411405447072021533 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! sub ziptext tt$ gsave for i = 1 to 0 step -.05 set color (i) write tt$ rmove -.05 .025 next i set color white write tt$ grestore end sub gle-graphics-4.2.4c/gle-refman/appendix/sm_stack1.tex0000644000000000000000000000663611405447072021202 0ustar rootroot%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % GLE - Graphics Layout Engine % % % % Modified BSD License % % % % Copyright (C) 2009 GLE. % % % % Redistribution and use in source and binary forms, with or without % % modification, are permitted provided that the following conditions % % are met: % % % % 1. Redistributions of source code must retain the above copyright % % notice, this list of conditions and the following disclaimer. % % % % 2. Redistributions in binary form must reproduce the above % % copyright notice, this list of conditions and the following % % disclaimer in the documentation and/or other materials provided with % % the distribution. % % % % 3. The name of the author may not be used to endorse or promote % % products derived from this software without specific prior written % % permission. % % % % THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR % % IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED % % WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE % % ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY % % DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL % % DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE % % GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS % % INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER % % IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR % % OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN % % IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%\psgraphin{stack1}{15.0}{23.0}{Shadow Graph} \graphin{appendix/fig/stack1}{15.0cm}{23.0cm}{1} \addcontentsline{toc}{section}{Shadow Graph} \clearpage \begin{center} \begin{minipage}[t]{12.0cm} %%\input{stack1.gle} {\scriptsize %\footnotesize \begin{verbatim} size 17 23 ! This is STACK1.GLE, a single graph, with shading background set hei .4 amove .3 .3 text stack1.gle amove 1.5 5 box 15 16 fill grey60 rmove -1 1 box 15 16 fill white rmove 2 4 box 11 8 fill grey5 set font ss begin graph fullsize size 11 8 title "Data transfer on 9600 bit/sec line" xtitle "Time (seconds)" ytitle "K Bits" data test.dat d1 line marker wsquare mscale 2 xaxis min -1 max 6 yaxis min 0 max 11 end graph \end{verbatim} } \hfill {\small stack1.gle}\\ \end{minipage} \end{center} \vfill gle-graphics-4.2.4c/gle-refman/appendix/sm_single.tex0000644000000000000000000000632111405447072021264 0ustar rootroot%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % GLE - Graphics Layout Engine % % % % Modified BSD License % % % % Copyright (C) 2009 GLE. % % % % Redistribution and use in source and binary forms, with or without % % modification, are permitted provided that the following conditions % % are met: % % % % 1. Redistributions of source code must retain the above copyright % % notice, this list of conditions and the following disclaimer. % % % % 2. Redistributions in binary form must reproduce the above % % copyright notice, this list of conditions and the following % % disclaimer in the documentation and/or other materials provided with % % the distribution. % % % % 3. The name of the author may not be used to endorse or promote % % products derived from this software without specific prior written % % permission. % % % % THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR % % IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED % % WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE % % ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY % % DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL % % DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE % % GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS % % INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER % % IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR % % OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN % % IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \addcontentsline{toc}{section}{A Single Graph} \psgraphin{appendix/fig/single}{12.0}{9.0}{Single Graph} %%\graphin{single}{12.0cm}{9.0cm}{1} \vfill %%\input{single.gle} \begin{center} \begin{minipage}[t]{9.0cm} \begin{verbatim} size 12 9 box begin graph SIZE 12 9 Title "Bar example" data single.dat bar d1,d2 fill green,blue fill x1,d1 color grey10 end graph \end{verbatim} \hfill {\small single.gle}\\ \vfill %%\input{single.dat} \begin{verbatim} 0 2 6 1 10 16 2 3 6 3 6 3 4 5 4 5 3 7 \end{verbatim} \hfill {\small single.dat}\\ \end{minipage} \end{center} %%\vfill gle-graphics-4.2.4c/gle-refman/graph/fig/sqroot.gle0000664000000000000000000000616011653202232020633 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! size 7 4.5 include "../../script/manual.gle" manual_graph_mode amove 0 0.1 begin graph yaxis dticks 2 title "Square Root Function" xtitle "$x$" ytitle "$y = \sqrt{\alpha x}$" for alpha = 1 to 10 step 2 let d[alpha] = sqrt(alpha*x) from 0 to 10 d[alpha] line color rgb(alpha/10,0,0) next alpha end graph set just lc hei 0.27 for alpha = 1 to 10 step 2 amove xg(xgmax)+0.1 yg(sqrt(alpha*xgmax)) write "$\alpha = "+num$(alpha)+"$" next alpha gle-graphics-4.2.4c/gle-refman/graph/fig/gc_err.gle0000644000000000000000000000603011405447072020547 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! size 7 3.75 include "../../script/manual.gle" manual_graph_mode begin graph title "Error Bars" dist 0.15 yaxis min 0 max 35 dticks 10 xaxis min 0 let d1 = (sin(x)+1)*10+3 from 0.5 to 9 step 1 let d2 = (cos(x)+1)*10+3 from 0.5 to 9.5 step 1 dn lstyle 2 msize .15 d1 marker circle errup 30% errdown 1 color red d2 marker square err 30% errwidth .1 color blue end graph gle-graphics-4.2.4c/gle-refman/graph/fig/test.dat0000644000000000000000000000576211405447072020301 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 1 10 5 90 12 3 30 15 80 22 5 50 25 70 10 8 80 40 60 15 10 90 45 55 11 14 70 35 50 14 19 80 40 60 6 gle-graphics-4.2.4c/gle-refman/graph/fig/normal.gle0000664000000000000000000000570611653603333020610 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! size 8 4 include "../../script/manual.gle" manual_graph_mode begin graph scale auto title "1000 Samples of $N(\mu=0, \sigma=1)$" ytitle "Frequency" xtitle "Value" data "normal.csv" xticks off yaxis min 0 max 100 dticks 20 let d2 = hist d1 step 0.5 d2 line bar color red end graph gle-graphics-4.2.4c/gle-refman/graph/fig/energy_level.gle0000664000000000000000000000226111612246311021763 0ustar rootrootsize 10 8 sub energylevel ds$ factor color$ local hist_prev_x = 0 local hist_x1, hist_x2 local hist_has_prev = 0 set color color$ for i = 1 to ndata(ds$) local hist_valid = 1 if (i < ndata(ds$)) then hist_x2 = (dataxvalue(ds$, i+1) + dataxvalue(ds$, i))/2 if (hist_has_prev = 1) then hist_x1 = (hist_prev_x + dataxvalue(ds$, i))/2 else hist_x1 = 2*dataxvalue(ds$, i) - hist_x2 end if else if (hist_has_prev = 1) then hist_x1 = (hist_prev_x + dataxvalue(ds$, i))/2 hist_x2 = 2*dataxvalue(ds$, i) - hist_x1; else hist_valid = 0 end if end if if (hist_valid = 1) then local xmid = (hist_x1 + hist_x2) / 2 local len = (hist_x2 - hist_x1) / 2 amove xg(xmid - len*factor) yg(datayvalue(ds$, i)) aline xg(xmid + len*factor) yg(datayvalue(ds$, i)) end if hist_has_prev = 1 hist_prev_x = dataxvalue(ds$, i) next i end sub begin graph data "test.dat" title "Energy Levels" xaxis min -1 max 23 yaxis min 0 max 100 dticks 20 end graph energylevel ds "d1" factor 0.9 color "red" gle-graphics-4.2.4c/gle-refman/graph/fig/Makefile.os20000664000000000000000000000567611405447072021000 0ustar rootroot######################################################################## # # # GLE - Graphics Layout Engine # # # # Modified BSD License # # # # Copyright (C) 2009 GLE. # # # # Redistribution and use in source and binary forms, with or without # # modification, are permitted provided that the following conditions # # are met: # # # # 1. Redistributions of source code must retain the above copyright # # notice, this list of conditions and the following disclaimer. # # # # 2. Redistributions in binary form must reproduce the above # # copyright notice, this list of conditions and the following # # disclaimer in the documentation and/or other materials provided with # # the distribution. # # # # 3. The name of the author may not be used to endorse or promote # # products derived from this software without specific prior written # # permission. # # # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR # # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY # # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE # # GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER # # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN # # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # # ######################################################################## EPSS = gc_axes.eps gc_axisall.eps gc_bargraph1.eps gc_bargraph2.eps gc_bargraph_3d.eps \ gc_err.eps gc_fillgraph.eps gc_let.eps gc_names.eps gc_nomiss.eps gc_fit.eps \ linemode.eps all: $(EPSS) %.eps: %.gle gle -texincprefix "graph/fig/" -d eps $< clean: rm -rf *.eps *.pdf *.inc .gle gle-graphics-4.2.4c/gle-refman/graph/fig/gc_fillgraph.gle0000644000000000000000000000602611676347407021747 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! size 7 4 include "../../script/manual.gle" manual_graph_mode begin graph scale auto title "Shading Areas of the Graph" xtitle "Height of stalk" ytitle "Year measured" xaxis min 86 max 90 dticks 1 yaxis min 0 max 6 data "gc_fill.dat" fill d2,x2 color gray40 fill x1,d1 color gray10 xmin 85 xmax 88 fill x1,d1 color gray90 xmin 88 xmax 91 dn line end graph gle-graphics-4.2.4c/gle-refman/graph/fig/gc_bargraph1.gle0000644000000000000000000000572311653603724021641 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! size 7 4 include "../../script/manual.gle" amove 0 0.3 manual_graph_mode begin graph size 7 3.75 title "Bean Stalk Data" dist 0.15 xtitle "Year measured" ytitle "Height of stalk" yaxis min 0 max 5 dticks 1 xaxis dticks 1 data "gc_bean.dat" bar d1 fill gray20 bar d2 from d1 fill white end graph gle-graphics-4.2.4c/gle-refman/graph/fig/gc_fitfct.gle0000664000000000000000000000132611320136074021234 0ustar rootrootsize 7 7 include "../../script/manual.gle" a = 0; b = 0; c = 0; d = 0; r = 0 manual_graph_mode set atitlescale 1 amove 0 1.5 begin graph size 7 5.5 scale auto xtitle "$x$" ytitle "$f(x)$" title "$f(x) = a\sin(bx)+cx^2+d$" xaxis min 0 max 10 yaxis min -4 max 14 data "gc_fitfct.csv" let d2 = fit d1 with a*sin(b*x)+c*x^2+d rsq r eqstr eq$ d1 marker circle msize 0.15 color blue d2 line color red end graph set texscale scale fct$ = "$f(x) = "+format$(a,"fix 2")+ & "\sin("+format$(b,"fix 2")+"x)+"+ & format$(c,"fix 2")+"x^2+"+ & format$(d,"fix 2")+"$" begin key pos br nobox hei 0.3 offset 0.05 0.1 text fct$ text "$r^2$ = "+format$(r,"fix 3") end key gle-graphics-4.2.4c/gle-refman/graph/fig/gc_logsubticks.gle0000664000000000000000000001147511405447105022320 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! size 15.0 3.9 include "../../script/manual.gle" mh = 0.3 manual_graph_mode gw = 4.7 dy = 2.5 begin object g0 begin graph size gw 0.01 yaxis off xaxis log min 1 max 100 x2axis off xticks length -0.3 end graph end object begin object g1 begin graph size gw 0.01 yaxis off xaxis log min 1 max 100 x2axis off xticks length -0.3 xlabels log off end graph end object begin object g2 begin graph size gw 0.01 yaxis off xaxis log min 1 max 100 x2axis off xticks length -0.3 xsubticks off end graph end object amove 0.1 pageheight()-dy draw g1.tl amove ptx(g1.rc)+0.4 pageheight()-dy draw g2.tl amove ptx(g1.rc)+0.3 pageheight()-0.1 draw g0.tc sub arrow_line_label p1$ p2$ dis lab$ dx local x0 = ptx(p1$) local y0 = pty(p1$) local x1 = ptx(p2$) local y1 = pty(p2$) amove (1-dis)*x0+dis*x1 (1-dis)*y0+dis*y1 aline dis*x0+(1-dis)*x1 dis*y0+(1-dis)*y1 arrow end set just center amove (x0+x1)/2+dx (y0+y1)/2 begin box fill white nobox add 0.05 tex lab$ end box end sub arrow_line_label "g0.bc" "g1.tc" 0.1 "add `xlabels log off'" -0.75 arrow_line_label "g0.bc" "g2.tc" 0.1 "add `xsubticks off'" +0.75 amove ptx(g2.bc) pty(g2.bc)-0.5 tex "also turns off sublabels" gw = 4 begin object g0b begin graph size gw 0.01 yaxis off xaxis log min 1 max 100 x2axis off xticks length -0.3 end graph end object begin object g1b begin graph size gw 0.01 yaxis off xaxis log min 1 max 100 x2axis off xticks length -0.3 xsubticks on end graph end object begin object g2b begin graph size gw 0.01 yaxis off xaxis log min 1 max 100 x2axis off xticks length -0.3 xlabels log l25 end graph end object amove ptx(g2.rc)+0.5 pageheight()-dy draw g1b.tl amove ptx(g1b.rc)+0.4 pageheight()-dy draw g2b.tl amove ptx(g1b.rc)+0.3 pageheight()-0.1 draw g0b.tc arrow_line_label "g0b.bc" "g1b.tc" 0.1 "add `xsubticks on'" -0.75 arrow_line_label "g0b.bc" "g2b.tc" 0.1 "add `xlabels log l25'" +0.75 amove ptx(g2b.bc) pty(g2b.bc)-0.5 tex "also turns on subticks" gle-graphics-4.2.4c/gle-refman/graph/fig/semitrans.gle0000644000000000000000000000666311653525675021342 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! size 6.5 5.5 include "../../script/manual.gle" manual_graph_mode begin graph scale auto title "Semi-Transparent Fills" xtitle "Time" ytitle "Output" xaxis min 0 max 9 yaxis min 0 max 6 dticks 1 let d1 = sin(x)*1.5+1.5 from 0 to 10 let d2 = 1/x from 0.01 to 10 let d3 = 10*(1/sqrt(2*pi))*exp(-2*(sqr(x-4)/sqr(2))) from 0 to 10 key background gray5 hei 0.27 begin layer 300 fill x1,d1 color rgba255(255,0,0,80) d1 line color red key "$1.5\sin(x)+1.5$" end layer begin layer 301 fill x1,d2 color rgba255(0,128,0,80) d2 line color green key "$1/x$" end layer begin layer 302 fill x1,d3 color rgba255(0,0,255,80) d3 line color blue key "$\frac{10}{\sqrt{2\pi}}\exp\left(\frac{-2(x-4)^2}{2^2}\right)$" end layer end graph gle-graphics-4.2.4c/gle-refman/graph/fig/gc_graphscale.gle0000664000000000000000000000710111405447072022072 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! size 15 3.6 include "../../script/manual.gle" manual_graph_mode set alabelscale 0.65 amove 0.1 0.1 gsave set color blue circle 0.1 fill blue grestore begin graph box size 4.8 3.5 title "scale 0.7 0.7" dist 0.15 xaxis min 0 max 2*pi dticks pi/2 format "pi" yaxis min -1 max +1 dticks 0.5 let d1 = sin(x) d1 line color red end graph amove 5.2 0.1 gsave set color blue circle 0.1 fill blue grestore begin graph box size 4.8 3.5 scale auto title "scale auto" dist 0.15 xaxis min 0 max 2*pi dticks pi/2 format "pi" yaxis min -1 max +1 dticks 0.5 let d1 = sin(x) d1 line color red end graph amove 10.3+(1-0.7)/2*4.8 0.1+(1-0.7)/2*3.5 gsave set color blue circle 0.1 fill blue grestore begin graph box size 0.7*4.8 0.7*3.5 fullsize title "fullsize" dist 0.15 xaxis min 0 max 2*pi dticks pi/2 format "pi" yaxis min -1 max +1 dticks 0.5 let d1 = sin(x) d1 line color red end graph gle-graphics-4.2.4c/gle-refman/graph/fig/gc_bargraph_3d.gle0000644000000000000000000000604511653604033022136 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! size 7 4 include "../../script/manual.gle" amove 0 0.2 manual_graph_mode begin graph size 7 3.75 title "Bean Stalk Data" dist 0.15 xtitle "Year measured" ytitle "Height of stalk" xaxis min 85.4 max 90.75 dticks 1 yaxis min 0 max 6 dticks 1 format "fix 0" data gc_bean.dat bar d1,d2,d3 dist 0.25 width 0.15 3d 1 0.25 fill red,blue,forestgreen side orange,dodgerblue,green end graph gle-graphics-4.2.4c/gle-refman/graph/fig/gc_fit.gle0000644000000000000000000000634111653603276020553 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! size 7 5.5 include "../../script/manual.gle" slope = 0; offs = 0; rsquare = 0 manual_graph_mode set atitlescale 1 amove 0 1.1 begin graph size 7 4.5 title "Linear Fit" dist 0.15 xaxis min 0 max 10 dticks 2 yaxis min 0 max 11 dticks 2 xtitle "$x$" ytitle "$y = ax + b$" data "fitlin.dat" let d2 = linfit d1 from 0 to 10 slope offset rsquare d1 marker circle msize 0.15 color blue d2 line color red end graph begin key pos br nobox text "$y = "+format$(slope,"fix 2")+"x + "+format$(offset,"fix 2")+"$" text "$r^2 = "+format$(rsquare,"fix 2")+"$" end key gle-graphics-4.2.4c/gle-refman/graph/fig/gc_bean.dat0000644000000000000000000000535511505734471020701 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 86 3 3.1 5.1 2 87 3.2 4 5 2.1 88 3 2.4 5.3 2 89 3 4 5.6 2.2 90 3.1 4.1 5.2 2.3 gle-graphics-4.2.4c/gle-refman/graph/fig/gc_bargraph2.gle0000644000000000000000000000570611653604014021634 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! size 7 4 include "../../script/manual.gle" amove 0 0.2 manual_graph_mode begin graph vscale 0.675 title "Bean Stalk Data" dist 0.15 xtitle "Year measured" ytitle "Height of stalk" xaxis dticks 1 yaxis min 0 max 6 dticks 2 data "gc_bean.dat" bar d1,d2,d3 fill blue,orange,red end graph gle-graphics-4.2.4c/gle-refman/graph/fig/gc_loglabels.gle0000644000000000000000000000754411405447072021736 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! size 15.0 5 gw = pagewidth()/4 include "../../script/manual.gle" mh = 0.3 manual_graph_mode amove 0*gw+0.2 0 begin graph size gw pageheight() scale 0.7 0.8 title "ylabels log off" xaxis min 0 max 5 dticks 1 hei mh yaxis min 1e0 max 1e3 log hei mh format "sci 0 10" ylabels log off let d1 = 1+sqrt(x)*1e2 d1 line color red end graph amove 1*gw+0.2 0 begin graph size gw pageheight() scale 0.7 0.8 title "ylabels log l1" xaxis min 0 max 5 dticks 1 hei mh yaxis min 1e0 max 1e1 log hei mh ylabels log l1 let d1 = 1+sqrt(x)*2.5 d1 line color red end graph amove 2*gw+0.2 0 begin graph size gw pageheight() scale 0.7 0.8 title "ylabels log l25" xaxis min 0 max 5 dticks 1 hei mh yaxis min 1e0 max 1e3 log hei mh format "sci 0 10" ylabels log l25 let d1 = 1+sqrt(x)*1e2 d1 line color red end graph amove 3*gw+0.2 0 begin graph size gw pageheight() scale 0.7 0.8 title "ylabels log l25b" xaxis min 0 max 5 dticks 1 hei mh yaxis min 1e0 max 1e2 log hei mh format "fix 0" ylabels log l25b let d1 = 1+sqrt(x)*10 d1 line color red end graph gle-graphics-4.2.4c/gle-refman/graph/fig/age.csv0000664000000000000000000000536211405447072020077 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Age, John, Mary, Ken 15, 73, 65, 77 20, 80, 68, 77 30, 82, 77, 80 40, 85, 78, 82 gle-graphics-4.2.4c/gle-refman/graph/fig/Makefile.gcc0000664000000000000000000000653211653524323021021 0ustar rootroot######################################################################## # # # GLE - Graphics Layout Engine # # # # Modified BSD License # # # # Copyright (C) 2009 GLE. # # # # Redistribution and use in source and binary forms, with or without # # modification, are permitted provided that the following conditions # # are met: # # # # 1. Redistributions of source code must retain the above copyright # # notice, this list of conditions and the following disclaimer. # # # # 2. Redistributions in binary form must reproduce the above # # copyright notice, this list of conditions and the following # # disclaimer in the documentation and/or other materials provided with # # the distribution. # # # # 3. The name of the author may not be used to endorse or promote # # products derived from this software without specific prior written # # permission. # # # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR # # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY # # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE # # GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER # # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN # # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # # ######################################################################## OPTS = EPSS = gc_axes.inc gc_axisall.inc gc_bargraph1.inc gc_bargraph2.inc gc_bargraph_3d.inc \ gc_err.inc gc_fillgraph.inc gc_let.inc gc_names.inc gc_nomiss.inc gc_fit.inc gc_fitfct.inc \ linemode.inc gc_loglabels.inc gc_graphscale.inc gc_horizbar.inc gc_mathmode.inc gc_logsubticks.inc \ noisysine.inc age.inc normal.inc gridmode.inc y2axis-scale.inc discontinuity.inc \ sqroot.inc cos2t.inc shadow.inc ifeq ($(HAVE_CAIRO),1) EPSS := $(EPSS) semitrans.inc OPTS := $(OPTS) -cairo endif ifeq ($(RUNBUILD),1) GLE = ../../../build/bin/gle else GLE = gle endif all: $(EPSS) %.inc: %.gle $(GLE) $(OPTS) -texincprefix graph/fig/ -inc -d pdf $< clean: rm -rf *.eps *.pdf *.inc .gle gle-graphics-4.2.4c/gle-refman/graph/fig/gc_horizbar.csv0000664000000000000000000000536711405447072021641 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 0,Mercury,0.382 1,Venus,0.949 2,Mars,0.532 3,Jupiter,11.209 4,Saturn,9.449 5,Uranus,4.007 6,Neptune,3.883 gle-graphics-4.2.4c/gle-refman/graph/fig/gc_axes.gle0000644000000000000000000000564311405447072020730 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! size 7 4 include "../../script/manual.gle" amove 0 0.2 manual_graph_mode begin graph xaxis min 0 max 10 yaxis min 0 max 10 dticks 2 xtitle "X-axis" ytitle "Y-axis" x2title "X2-axis" y2title "Y2-axis" x2ticks length 0.6 x2subticks color red end graph gle-graphics-4.2.4c/gle-refman/graph/fig/gc_fill.dat0000644000000000000000000000530411405447072020711 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 86 1 2.1 87 2.2 4 88 1 2.4 89 3 4 90 5.1 5.2 gle-graphics-4.2.4c/gle-refman/graph/fig/gc_fillgraph.tex0000664000000000000000000000251711676347563022006 0ustar rootroot\documentclass{article} \usepackage[dvips]{graphics} \usepackage{color} \usepackage{geometry} \geometry{% paperwidth=7.075cm, paperheight=4.075cm, left=0in, right=0in, top=0in, bottom=0in } \pagestyle{empty} \begin{document} \setlength{\unitlength}{1cm}% \noindent{}\begin{picture}(7.075,4.075)(0,0)% \put(0,0){\includegraphics{gc_fillgraph_inc}} \put(0.508997,0.844655){\makebox(0,0)[lb]{{\footnotesize 0}}} \put(0.508997,1.26602){\makebox(0,0)[lb]{{\footnotesize 1}}} \put(0.508997,1.68739){\makebox(0,0)[lb]{{\footnotesize 2}}} \put(0.508997,2.10876){\makebox(0,0)[lb]{{\footnotesize 3}}} \put(0.508997,2.53013){\makebox(0,0)[lb]{{\footnotesize 4}}} \put(0.508997,2.9515){\makebox(0,0)[lb]{{\footnotesize 5}}} \put(0.508997,3.37286){\makebox(0,0)[lb]{{\footnotesize 6}}} \put(0.327347,1.15095){\rotatebox{90}{\makebox(0,0)[lb]{{\small Year measured}}}} \put(0.690647,0.572288){\makebox(0,0)[lb]{{\footnotesize 86}}} \put(2.18269,0.572288){\makebox(0,0)[lb]{{\footnotesize 87}}} \put(3.67473,0.572288){\makebox(0,0)[lb]{{\footnotesize 88}}} \put(5.16678,0.572288){\makebox(0,0)[lb]{{\footnotesize 89}}} \put(6.65882,0.572288){\makebox(0,0)[lb]{{\footnotesize 90}}} \put(2.78022,0.107938){\makebox(0,0)[lb]{{\small Height of stalk}}} \put(1.67051,3.65038){\makebox(0,0)[lb]{{\normalsize Shading Areas of the Graph}}} \end{picture} \end{document} gle-graphics-4.2.4c/gle-refman/graph/fig/normal.csv0000664000000000000000000002135711405447072020635 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -0.818223401 -1.119418878 0.084141171 -0.047038714 0.755053238 -1.026181084 1.195552265 0.654005970 -0.514538444 -0.123519989 0.386336853 -1.709712761 0.082070029 0.679123543 -1.975601169 -0.803385444 -0.372009018 -0.523353130 -0.747163386 -0.084790052 -0.248395129 -0.081430809 0.320559769 -1.487950931 1.314048815 -0.595636883 -0.010242071 -1.806780906 -1.096131624 1.130666407 -0.961323463 0.670131211 1.417187392 -0.674008277 -0.861007426 0.039069028 -1.529200224 -0.007059310 0.188766060 0.212453808 -0.864885318 -0.921759425 0.475934254 1.415165281 -1.677867935 0.753588466 -1.791268678 -0.024153662 -0.219260291 0.327043854 -2.962131851 0.068600898 -0.475605871 -0.831550419 0.884850575 0.179845524 1.322186551 0.170665626 1.808278129 0.784807084 0.315994023 1.140208784 -1.013554759 1.663905739 -0.060132454 0.602549214 -0.400524472 0.081493084 0.060286057 0.716469092 1.100875196 -0.600408703 -0.564339841 -0.329531682 -1.525064779 0.792573717 -0.070989631 0.688954905 -0.650392310 0.019595204 2.260623984 1.166627775 0.885101822 -0.883342865 -2.268289845 -0.148199011 1.525970775 0.358547312 0.303906026 0.280192575 -0.113270785 0.506262168 0.230896414 0.422153752 -0.492218443 1.556242204 0.645980031 -0.731655260 -0.658767294 0.679348074 -0.613323868 0.527944881 -1.251903172 -0.468709549 -1.840000391 -0.432357315 0.548190141 1.197361239 0.159012081 -0.479289268 0.022591535 -0.954780498 0.631003411 2.391513061 -0.540225091 1.402282464 0.038134119 0.834093148 -0.012844578 0.649722288 -0.193639442 0.902023910 0.774524843 0.884490365 -0.941148061 -1.338777480 -1.710377486 0.612490718 1.897852323 0.647670126 1.192367434 0.026472327 -0.105959420 0.317974718 0.317744290 0.781950773 -0.211768992 0.442636081 -0.354803894 1.634163009 -1.824705684 0.782446206 -1.256877827 0.189021773 0.241909572 0.731827912 1.143131589 -0.666423149 0.064183087 0.656383817 1.780643327 -0.471958506 0.242199205 -0.437596552 0.557856912 -0.089459285 -0.483214861 1.071956316 1.073719592 0.242891415 -0.165022567 0.822662323 -0.064416561 -1.141563346 -1.122918870 -1.907654565 -1.647942646 1.166695274 0.092711465 0.552642937 2.290765017 0.195648267 -0.793116397 -1.898959669 -0.834663136 0.187330850 -1.063574166 -0.144651053 0.237693464 -1.924505749 -0.319668922 1.358350202 0.849861116 0.759096105 0.375337723 1.915548207 -1.375333936 -0.490585659 0.536422644 2.771474801 0.307237522 -1.558009696 0.217097069 0.127986564 -1.090314572 -1.006432753 -0.990620630 -0.221453213 0.480886908 0.531878989 -0.060147768 -0.063235239 1.157241459 -0.140921612 1.751499398 -0.595820282 1.515669346 -0.750223485 -1.961264028 -1.045901599 1.484622896 -1.640015849 1.742482835 0.787190509 -0.011919863 1.737335178 0.570172164 -0.873523687 -0.371818233 -0.687666038 -1.173187109 0.225451636 -0.911408042 -0.769803282 -2.089162178 -0.484782004 -0.433835521 0.395570631 0.438698388 -2.974650219 1.309828531 1.273515302 -0.434508727 0.521854894 0.690708534 -0.824694687 -0.002234318 0.733346415 -0.407726813 0.780266090 0.278113928 1.088301469 0.953393040 0.101010776 -1.499328049 0.134042502 -0.598439871 -1.798021476 -0.817172496 -0.681768161 0.309429030 0.607879292 -1.800084323 0.550414343 1.521553471 -0.176693915 1.110189474 -0.565749547 -1.063345577 -2.145236747 -0.374113305 1.986077660 1.906135360 0.497397768 -1.287680614 -2.791624661 0.454943375 0.384289712 -0.428902100 0.881810068 -1.318662092 0.088824773 1.116879458 0.541041964 0.630423482 0.612189864 0.535997073 -2.148978488 -0.116848097 -0.519806516 -0.096460334 -1.404523199 0.514865531 -1.598051953 -0.873365079 -2.069778256 0.046598717 0.295336773 -1.157163765 -0.164964066 0.162444850 3.104242757 1.532474625 0.494813737 1.374123115 1.346121961 2.075072186 -0.900444592 -0.723239036 -0.598565069 -0.117943435 1.026376595 -0.373615443 2.319341176 0.213674765 1.644901479 2.314284133 -0.881356805 -0.777634468 0.149924779 1.274423020 -0.075110041 0.924279846 2.830223954 -0.632119434 0.426097605 0.750317825 0.792014513 0.255811523 -2.095241809 -1.420528904 -0.173709620 0.263840878 0.052231214 0.056778503 1.073769698 -0.602439807 0.270592431 0.943100024 -0.186282345 -0.658161990 -0.281835259 0.801901475 -1.188101546 -0.372153820 0.088797813 0.869739153 1.593809732 -0.658670408 1.360949548 -0.677055353 -0.677557169 0.095744938 -0.016624974 0.164392885 0.079174689 -0.721634482 -1.580753178 -0.138098679 -1.641471673 -1.221624304 -0.299948451 1.657307714 -0.322201809 -1.494867472 0.052048048 1.694586199 0.080890276 0.338275327 0.230342786 -1.116308175 -1.056702746 1.699764799 0.617501022 1.453524599 -2.196640817 -1.514352871 0.831004861 0.602751482 0.108796726 0.401527669 0.091689338 -0.770064472 -0.907687515 -0.004380539 0.770858727 -1.544640413 1.132025377 1.286558301 0.574239895 -0.403595431 -0.828754034 1.431226601 0.775348477 1.167056873 -1.108034200 -1.889273548 0.561821796 0.708989184 1.189834873 -1.923224322 2.118086887 -0.168955764 -0.617539541 -1.388642172 -0.633946270 0.919069503 0.534091964 0.013756174 -0.547635906 0.126535198 2.186914325 0.544113541 1.956777266 1.822055923 0.283381130 -0.649266339 -1.254131863 2.254878530 -1.211821440 -0.594644718 0.905283880 -0.032559582 -0.675902076 -0.578300081 -0.892346625 -1.298233375 -0.268286372 -1.624803805 -0.607675686 -0.032494634 -0.181490113 -1.573547456 0.381030377 -0.408258696 -1.215830279 -0.191452227 0.353232179 -0.337670670 0.715728402 0.137908735 2.062954931 -1.106522164 -0.605374729 1.043847944 1.118159451 0.946241026 0.241032288 0.202779148 1.596604586 0.781867768 -1.450242579 0.123030561 -0.620028967 0.914349424 -0.134840613 0.966986332 0.301443619 0.405772154 -0.642032485 -0.306363189 0.570526469 0.092824097 -3.054226505 -0.957921829 0.519414196 1.354875095 -1.497154757 -0.297723040 -0.196966650 -0.265354256 -1.295797262 -0.442217526 -0.386417029 0.330771527 -0.528329863 -0.561802136 0.603719280 1.656141573 0.810800707 -0.145781841 1.290284013 -1.565462327 -0.117007060 0.285250874 1.062784912 -0.471335165 0.849083194 0.929782172 -0.507318924 0.459738826 0.641070496 0.612928915 -0.812287470 -0.201969336 0.180692760 -0.932909759 1.359828396 2.809105159 -0.239358315 -0.173974689 -0.536431800 -1.188504929 0.473902795 -0.101848526 -0.162696964 -0.493754413 1.029033729 0.430960801 -1.782413333 gle-graphics-4.2.4c/gle-refman/graph/fig/discontinuity.gle0000664000000000000000000001023211506710276022215 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! size 14 5.4 include "../../script/manual.gle" manual_graph_mode set alabelscale 0.6 wd = 14/3 dy = -0.1 xmin = -4 xmax = 4 sub floor x if x>=0 then return int(x) else if x=int(x) then return int(x) else return int(x)-1 end if end sub amove 0 dy begin graph math size wd wd scale 0.8 0.8 xaxis min xmin max xmax labels dist 0.15 xaxis format "fix 0" yaxis format "fix 0" x2axis off y2axis off discontinuity threshold 5 let d1 = floor(x) step 0.1 d1 line color red end graph begin key pos tc hei 0.25 offset 0 -0.2 text "discontinuity threshold 5" text "let d1 = floor(x)" text "d1 line color red" end key amove wd dy begin graph math size wd wd scale 0.8 0.8 xaxis min xmin max xmax xaxis format "fix 0" yaxis format "fix 0" labels dist 0.15 x2axis off y2axis off discontinuity threshold 5 let d1 = floor(x) step 0.1 d1 line color red nomiss end graph begin key pos tc hei 0.25 offset 0 -0.2 text "discontinuity threshold 5" text "let d1 = floor(x)" text "d1 line color red nomiss" end key amove 2*wd dy begin graph math size wd wd scale 0.8 0.8 xaxis min -2.5 max 3.5 yaxis min -20 xaxis format "fix 0" yaxis format "fix 0" yaxis min 0 max 25 labels dist 0.15 x2axis off y2axis off let d1 = -log(sin(pi*x)) step 0.01 d1 line color red end graph begin key pos tc hei 0.25 offset 0 -0.2 text "let d1 = -log(sin(pi*x))" text "d1 line color red" end key gle-graphics-4.2.4c/gle-refman/graph/fig/gc_horizbar.gle0000664000000000000000000000607211653604121021602 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! size 7 5 include "../../script/manual.gle" manual_graph_mode begin graph scale auto title "Planet Sizes" dist 0.15 xtitle "Size relative to Earth" xaxis min 0 dticks 1 yaxis min -1 max 7 angle 30 ylabels dist 0.05 data "gc_horizbar.csv" ynames from d1 hei 0.3633 bar d2 horiz fill red pattern shade2 background yellow end graph set color blue lstyle 2 amove xg(1) yg(ygmin) aline xg(1) yg(ygmax) gle-graphics-4.2.4c/gle-refman/graph/fig/fitlin.dat0000644000000000000000000000526411405447072020604 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 1 2 2 5 3 5 4 6 5 4 6 5.5 7 6 8 9 9 10 gle-graphics-4.2.4c/gle-refman/graph/fig/gridmode.gle0000664000000000000000000001076511653603447021121 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! size 14 2*3.9 wd = 14/3 hi = 3.8 offs = 0.05 fac = 0.9 include "../../script/manual.gle" manual_graph_mode ytop = 3.9 ybot = -0.1 set dashlen 0.017 amove offs ytop begin graph title "(a) No Subticks" size wd hi hscale fac yticks off ylabels off xticks color red xaxis min 0 max 5 dticks 1 grid end graph begin key pos cc background grey5 margins 0.15 0.15 text "xaxis grid" end key amove offs+wd ytop begin graph title "(b) Subticks Grid Lines" size wd hi hscale fac yticks off ylabels off xticks color red xaxis min 0 max 5 dticks 1 grid xsubticks on end graph begin key pos cc margins 0.15 0.15 background grey5 text "xaxis grid" text "xsubticks on" end key amove offs+2*wd ytop begin graph title "(c) Normal Subticks" size wd hi hscale fac yticks off ylabels off xticks color red xaxis min 0 max 5 dticks 1 grid xsubticks on length 0.12 end graph begin key pos cc margins 0.15 0.15 background grey5 text "xaxis grid" text "xsubticks on" text "xsubticks length 0.12" end key amove offs ybot begin graph title "(d) Various Settings" size wd hi hscale fac xaxis min 0 max 5 dticks 1 yaxis min 0 max 5 dticks 1 axis grid ticks color grey40 subticks on subticks lstyle 2 ylabels off let d1 = 1.7*sin(2*pi*x)+2.5 d1 line color red end graph begin key pos rc offset -0.3 0 margins 0.15 0.15 background grey5 text "axis grid" text "ticks color grey40" text "subticks on" text "subticks lstyle 2" end key amove offs+2*wd ybot begin graph title "(e) Various Settings" size wd hi hscale fac xaxis min 0 max 3 dticks 1 yaxis min 1 max 1000 dticks 1 log format "sci 0 10" axis grid ticks color grey70 subticks on color grey20 let d1 = 40*exp(x)*abs(sin(pi*x))+2 d1 line color red end graph gle-graphics-4.2.4c/gle-refman/graph/fig/cos2t.gle0000664000000000000000000000577011653516405020356 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! size 4.5 4.5 include "../../script/manual.gle" manual_graph_mode include "polarplot.gle" set font texcmr begin graph scale auto title "$r = \cos(2\theta)$" xaxis min -1.1 max 1.1 yaxis min -1.1 max 1.1 begin layer 0 draw polar_grid radius 2 rings 5 sectors 12 draw polar "cos(2*t)" from 0 to 2*pi fill wheat end layer end graph gle-graphics-4.2.4c/gle-refman/graph/fig/shadow.gle0000664000000000000000000000632711653521516020607 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! size 6 4.5 include "../../script/manual.gle" manual_graph_mode sub background amove xg(xgmin) yg(ygmin) local wd = xg(xgmax)-xg(xgmin) local hi = yg(ygmax)-yg(ygmin) colormap y 0 0 0.8 1 1 200 wd hi end sub begin graph scale auto title "Chart 1" xaxis dticks 0.2 yaxis dticks 0.2 yaxis grid yticks color gray let d1 = x^2 let d2 = x^2/2 key pos tl compact d1 line marker wdiamond mdist 1 color steelblue key "$M_1$" d2 line marker wcircle mdist 1 color green key "$M_2$" begin layer 150 draw background end layer end graph gle-graphics-4.2.4c/gle-refman/graph/fig/gc_axisall.gle0000644000000000000000000000617311676174034021431 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! size 7 4 include "../../script/manual.gle" amove 0 0.2 manual_graph_mode begin graph xaxis min 0 max 9 nofirst nolast xaxis hei 0.4 nticks 6 dsubticks 0.3 xaxis lwidth 0.05 color red xticks length 0.2 ytitle "Log Y Axis" yaxis log min 1 max 10 yticks length 0.2 y2axis min 1 max 10000 format "sci 0 10" y2side color blue y2title "Y2 Title Rotated " hei 0.3 rotate x2axis off y2labels on let d1 = sin(x)*4+5 from 0 to 9 dn line color blue end graph gle-graphics-4.2.4c/gle-refman/graph/fig/gc_let.gle0000664000000000000000000000614711652073536020562 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! size 7 3.75 include "../../script/manual.gle" amove 0 0.2 manual_graph_mode begin graph vscale 0.66 title "Calculating Formulas" dist 0.15 xtitle "Time" ytitle "Output" xaxis min 0 max 9 yaxis min 0 max 5 dticks 1 let d1 = 1/x from 0.2 to 10 let d2 = sin(x)*2+2 from 0 to 10 let d3 = 10*(1/sqrt(2*pi))*exp(-2*(sqr(x-4)/sqr(2))) from 0.2 to 10 step .1 dn line d1 color green d2 lstyle 2 color red d3 lstyle 3 color blue end graph gle-graphics-4.2.4c/gle-refman/graph/fig/gc_fillgraph_nocairo.tex0000664000000000000000000000251711676347503023512 0ustar rootroot\documentclass{article} \usepackage[dvips]{graphics} \usepackage{color} \usepackage{geometry} \geometry{% paperwidth=7.075cm, paperheight=4.075cm, left=0in, right=0in, top=0in, bottom=0in } \pagestyle{empty} \begin{document} \setlength{\unitlength}{1cm}% \noindent{}\begin{picture}(7.075,4.075)(0,0)% \put(0,0){\includegraphics{gc_fillgraph_inc}} \put(0.508997,0.844655){\makebox(0,0)[lb]{{\footnotesize 0}}} \put(0.508997,1.26602){\makebox(0,0)[lb]{{\footnotesize 1}}} \put(0.508997,1.68739){\makebox(0,0)[lb]{{\footnotesize 2}}} \put(0.508997,2.10876){\makebox(0,0)[lb]{{\footnotesize 3}}} \put(0.508997,2.53013){\makebox(0,0)[lb]{{\footnotesize 4}}} \put(0.508997,2.9515){\makebox(0,0)[lb]{{\footnotesize 5}}} \put(0.508997,3.37286){\makebox(0,0)[lb]{{\footnotesize 6}}} \put(0.327347,1.15095){\rotatebox{90}{\makebox(0,0)[lb]{{\small Year measured}}}} \put(0.690647,0.572288){\makebox(0,0)[lb]{{\footnotesize 86}}} \put(2.18269,0.572288){\makebox(0,0)[lb]{{\footnotesize 87}}} \put(3.67473,0.572288){\makebox(0,0)[lb]{{\footnotesize 88}}} \put(5.16678,0.572288){\makebox(0,0)[lb]{{\footnotesize 89}}} \put(6.65882,0.572288){\makebox(0,0)[lb]{{\footnotesize 90}}} \put(2.78022,0.107938){\makebox(0,0)[lb]{{\small Height of stalk}}} \put(1.67051,3.65038){\makebox(0,0)[lb]{{\normalsize Shading Areas of the Graph}}} \end{picture} \end{document} gle-graphics-4.2.4c/gle-refman/graph/fig/y2axis-scale.gle0000664000000000000000000000610111653203337021612 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! size 7 5.5 include "../../script/manual.gle" manual_graph_mode amove 0 -0.2 begin graph size 7 5.5 scale 0.8 0.7 title "Scale Graph to x2/y2 Axis" let d1 = x^2 from -2 to 2 let d2 = sin(x) from 0 to 4*pi d1 line color red key "$x^2$" d2 x2axis y2axis line color blue key "$\sin(x)$" key pos bl xaxis dticks 1 yaxis dticks 1 y2axis dticks 0.5 x2axis format pi min 0 max 4*pi dticks pi end graph gle-graphics-4.2.4c/gle-refman/graph/fig/gc_nomiss.gle0000644000000000000000000000577611653603204021303 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! size 7 4 include "../../script/manual.gle" amove 0 0.1 manual_graph_mode begin graph scale auto title "Ignore Missing Values (nomiss)" dist 0.15 xtitle "Time" ytitle "Output" data "../../tutorial/fig/tut3.dat" yaxis min 0 max 10 dticks 2 xaxis dticks 1 d1 lstyle 2 color red d2 nomiss lstyle 1 marker diamond msize .2 color blue end graph gle-graphics-4.2.4c/gle-refman/graph/fig/gc_names.gle0000644000000000000000000000571111405447072021067 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! size 7 4 include "../../script/manual.gle" manual_graph_mode begin graph ytitle "Happyness" title "Names \& Places" dist 0.15 xaxis min 0 max 6 dticks 1 yaxis min 0 max 20 dticks 4 xnames "Mon" "Tue" "Wed" "Thu" xnames "Fri" "Sat" "Sun" let d1 = 3*x+3*sin(x) d1 line color red end graph gle-graphics-4.2.4c/gle-refman/graph/fig/noisysine.gle0000664000000000000000000000703711653203267021341 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! size 15 6 include "../../script/manual.gle" manual_graph_mode sub noisy_sin x if (x = -2*pi) or (x = 2*pi) then return 0 else return sin(x)+0.3*rnd(1) end sub dy = 0 dy2 = -0.1 gw = pagewidth()/3 gh = pageheight()/2 labelsize = 0.30 sub do_graph t$ m$ begin graph size gw gh scale 0.8 0.68 title t$ dist 0.22 hei labelsize yaxis dticks 0.5 hei labelsize xaxis format "pi" min -2*pi max 2*pi dticks pi hei labelsize let d1 = noisy_sin(x) step pi/50 d1 \expr{m$} line color red end graph end sub sub do_graph2 m$ do_graph m$ m$ end sub amove 0.1 gh+dy do_graph "Noisy Sine" "" amove gw+0.1 gh+dy do_graph "svg\_smooth 1" "svg_smooth 1" amove 2*gw+0.1 gh+dy do_graph "svg\_smooth 5" "svg_smooth 5" amove 0.1 dy2 do_graph2 "deresolve 10" amove gw+0.1 dy2 do_graph2 "deresolve 10 average" amove 2*gw+0.1 dy2 do_graph2 "deresolve 10 average smooth" gle-graphics-4.2.4c/gle-refman/graph/fig/age.gle0000664000000000000000000000572411405447072020055 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! size 5.75 4 include "../../script/manual.gle" manual_graph_mode amove 0.4 0.4 begin graph scale 0.8 0.75 data "age.csv" xtitle "Age" ytitle "Weight" key pos br compact dn msize 0.26 d1 line color red marker circle d2 line color blue marker triangle d3 line color green marker square end graph gle-graphics-4.2.4c/gle-refman/graph/fig/Makefile.gcc~0000664000000000000000000000631411467231123021211 0ustar rootroot######################################################################## # # # GLE - Graphics Layout Engine # # # # Modified BSD License # # # # Copyright (C) 2009 GLE. # # # # Redistribution and use in source and binary forms, with or without # # modification, are permitted provided that the following conditions # # are met: # # # # 1. Redistributions of source code must retain the above copyright # # notice, this list of conditions and the following disclaimer. # # # # 2. Redistributions in binary form must reproduce the above # # copyright notice, this list of conditions and the following # # disclaimer in the documentation and/or other materials provided with # # the distribution. # # # # 3. The name of the author may not be used to endorse or promote # # products derived from this software without specific prior written # # permission. # # # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR # # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY # # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE # # GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER # # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN # # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # # ######################################################################## EPSS = gc_axes.inc gc_axisall.inc gc_bargraph1.inc gc_bargraph2.inc gc_bargraph_3d.inc \ gc_err.inc gc_fillgraph.inc gc_let.inc gc_names.inc gc_nomiss.inc gc_fit.inc gc_fitfct.inc \ linemode.inc gc_loglabels.inc gc_graphscale.inc gc_horizbar.inc gc_mathmode.inc gc_logsubticks.inc \ noisysine.inc age.inc normal.inc gridmode.inc y2axis-scale.inc discontinuity.inc ifeq ($(RUNBUILD),1) GLE = ../../../build/bin/gle else GLE = gle endif all: $(EPSS) %.inc: %.gle $(GLE) -texincprefix graph/fig/ -inc -d pdf $< clean: rm -rf *.eps *.pdf *.inc .gle gle-graphics-4.2.4c/gle-refman/graph/fig/gc_mathmode.gle0000664000000000000000000000631311405447072021563 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! size 15 4 include "../../script/manual.gle" manual_graph_mode begin graph math size 7 4 scale auto title "f(x) = sin(x)" xaxis min -2*pi max 2*pi ftick -2*pi dticks pi format "pi" yaxis dticks 0.25 format "frac" let d1 = sin(x) d1 line color red end graph amove 8 0 begin graph size 15-8 4 scale auto title "$f(x) = 1/x+1/(x-1)$" yaxis min -15 max 15 offset 0 symticks ylabels off y2axis offset 1 y0axis off xaxis min -1 max 2 offset 0 x2axis off x0axis off let d1 = 1/x+1/(x-1) d1 line color red end graph gle-graphics-4.2.4c/gle-refman/graph/fig/linemode.gle0000664000000000000000000000620211506707646021115 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! size 14 3.75 include "../../script/manual.gle" manual_graph_mode sub dograph type$ begin graph size 3 4 hscale 0.9 data "test.dat" title "`d1 line "+type$+"'" dist 0.15 xaxis min -1 max 23 yaxis min 0 max 100 dticks 20 d1 line \expr{type$} d1 marker square msize 0.15 color red end graph end sub amove 0.5 -0.2 dograph "impulses" amove 0.5+3.5 -0.2 dograph "steps" amove 0.5+3.5*2 -0.2 dograph "fsteps" amove 0.5+3.5*3 -0.2 dograph "hist" gle-graphics-4.2.4c/gle-refman/graph/fig/gc_fitfct.csv0000664000000000000000000000005611320136074021257 0ustar rootroot1 2 2 5 3 5 4 6 5 4 6 3 7 6 8 9 9 10 gle-graphics-4.2.4c/gle-refman/graph/graph.tex0000664000000000000000000017374211725235167017721 0ustar rootroot%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % GLE - Graphics Layout Engine % % % % Modified BSD License % % % % Copyright (C) 2009 GLE. % % % % Redistribution and use in source and binary forms, with or without % % modification, are permitted provided that the following conditions % % are met: % % % % 1. Redistributions of source code must retain the above copyright % % notice, this list of conditions and the following disclaimer. % % % % 2. Redistributions in binary form must reproduce the above % % copyright notice, this list of conditions and the following % % disclaimer in the documentation and/or other materials provided with % % the distribution. % % % % 3. The name of the author may not be used to endorse or promote % % products derived from this software without specific prior written % % permission. % % % % THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR % % IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED % % WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE % % ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY % % DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL % % DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE % % GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS % % INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER % % IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR % % OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN % % IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \chapter{The Graph Module} \index{graphing}\label{graph:chap} A graph should start with {\sf begin graph} and end with {\sf end graph}. The data to be plotted are organised into datasets. A dataset consists of a series of (X,Y) coordinates, and has a name based on the letter ``d'' and a number between 1 and 1000, e.g. {\sf d1} The name {\sf dn} can be used to define a default for all datasets. Many graph commands described below start with {\sf d}{\it n}. This would normally be replaced by a specific dataset number e.g., \preglecode{} \begin{Verbatim} d3 marker diamond \end{Verbatim} \postglecode{} For each {\sf xaxis} command there is a corresponding {\sf yaxis, y2axis and x2axis} command for setting the top left and right hand axes. These commands are not explicitly mentioned in the following descriptions. \section{Graph Commands (a summary)} {\sf center} \\ {\sf colormap {\it fct} {\it pixels-x} {\it pixels-y} [{\it color}] [{\it invert}] [{\it zmin} $z_1$] [{\it zmax} $z_2$] [{\it palette} {\it pal}]} \\ {\sf data {\it filename {\sf [}d1 d2 d3 ...{\sf ] [}d1=c1,c3 ...{\sf ]} } [ignore {\it n}] [comment {\it char}] } \\ {\sf discontinuity threshold {\it t}} \\ {\sf dn [deresolve m] [average] line} \\ {\sf dn err {\it d5} errwidth {\it width-exp} errup {\it nn\%} errdown {\it d4}} \\ {\sf dn herr {\it d5} herrwidth {\it width-exp} herrleft {\it nn\%} herrright {\it d4}} \\ {\sf dn key {\it "Dataset title"}} \\ {\sf dn line [impulses] [steps] [fsteps] [hist] [bar]}\\ {\sf dn lstyle {\it line-style} lwidth {\it line-width} color {\it col}} \\ {\sf dn marker {\it marker-name} [color {\it c}] [msize {\it marker-size}] [mdata {\it dn}] [mdist {\it dexp}]} \\ {\sf dn nomiss} \\ {\sf dn smooth | smoothm} \\ {\sf dn svg\_smooth [m]} \\ {\sf dn xmin {\it x-low} xmax {\it x-high} ymin {\it y-low} ymax {\it y-high}} \\ {\sf dn [x2axis] [y2axis]} \\ {\sf dn file ``all.dat,xc,yc'' [marker {\sf mname}] [line]} \\ {\sf d$\left[i\right]$ $\ldots$} \\ {\sf draw call} \\ {\sf fullsize } \\ {\sf hscale h} \\ {\sf key pos {\it tl} nobox hei {\it exp} offset {\it xexp yexp} } \\ {\sf let ds = {\it exp {\sf [from} low{\sf] [to} high{\sf] [step} exp{\sf] [where} exp{\sf]}}} \\ {\sf let ds = {\it x-exp, y-exp {\sf [from} low{\sf] [to} high{\sf] [step} exp{\sf] [where} exp{\sf]}}} \\ {\sf let dn = [routine] dm [options]} \\ {\sf let ds = hist dm [from {\it x1}] [to {\it x2}] [bins {\it n}] [step {\it n}]} \\ {\sf let ds = \ldots [nsteps {\it n}]} \\ {\sf let ds = \ldots [range {\it dn}]} \\ {\sf math } \\ {\sf nobox } \\ {\sf scale {\it h v}} \\ {\sf scale auto} \\ {\sf size {\it x y }}\\ {\sf title {\it "title"} [hei {\it ch-hei}] [color {\it col}] [font {\it font}] [dist {\it cm}] } \\ {\sf vscale v} \\ {\sf x2labels on} \\ {\sf xaxis | yaxis | x2axis | y2axis}\\ {\sf xaxis angle $\alpha$} \\ {\sf xaxis base {\it exp-cm}} \\ {\sf xaxis color {\it col} font {\it font-name} hei {\it exp-cm} lwidth {\it exp-cm}} \\ {\sf xaxis dsubticks {\it sub-distance} } \\ {\sf xaxis format {\it format-string} } \\ {\sf xaxis grid } \\ {\sf xaxis log} \\ {\sf xaxis min {\it low} max {\it high}} \\ {\sf xaxis nofirst nolast} \\ {\sf xaxis nticks {\it number} dticks {\it distance} dsubticks {\it distance}} \\ {\sf xaxis ftick {\it x0} dticks {\it distance}} \\ {\sf xaxis {\sf off}} \\ {\sf xaxis shift {\it cm-exp}} \\ {\sf xaxis symticks} \\ {\sf xlabels font {\it font-name} hei {\it char-hei} color {\it col} }\\ {\sf xnames {\it "name" "name" ...}} \\ {\sf xnames from {\it dx}} \\ {\sf xnoticks {\it pos1 pos2 pos3 ...}} \\ {\sf xplaces {\it pos1 pos2 pos3 ...}} \\ {\sf xside color {\it col} lwidth {\it line-width} off } \\ {\sf xsubticks {\it {\sf lstyle} num {\sf lwidth} exp {\sf length} exp {\sf on} {\sf off}}} \\ {\sf xticks {\it {\sf lstyle} num {\sf lwidth} exp {\sf length} exp {\sf off}}} \\ {\sf xtitle {\it "title"} [hei {\it ch-hei}] [color {\it col}] [font {\it font}] [dist {\it cm}] [adist {\it cm}]} \\ {\sf y2title {\it "text-string"} [rotate] } \\ {\sf yaxis negate} \\ {\sf bar {\it dx,...} dist {\it spacing}}\\ {\sf bar {\it dn,...} fill {\it f} pattern {\it p}} \\ {\sf bar {\it dx,...} from {\it dy,...}}\\ {\sf bar {\it dn,...} horiz} \\ {\sf bar {\it dn,...} width {\it xunits,...} fill {\it col,...} color {\it col,...} }\\ {\sf fill x1,{\it d3} color {\it green} xmin {\it val} xmax {\it val}} \\ {\sf fill {\it d4},x2 color {\it blue} ymin {\it val} ymax {\it val}} \\ {\sf fill {\it d3,d4} color {\it green} xmin {\it val} xmax {\it val}} \\ {\sf fill {\it d4} color {\it green} xmin {\it val} xmax {\it val}} \\ \section{Graph Commands (in detail)} \begin{commanddescription} \item[{\sf center}] \index{center} Centers the graph (including the title and axis labels) in the graph box. (The command `{\sf scale auto}' implicitly performs `{\sf center}'.) \item [{\sf colormap {\it fct} {\it pixels-x} {\it pixels-y} [{\it color}] [{\it invert}] [{\it zmin} $z_1$] [{\it zmax} $z_2$] [{\it palette} {\it pal}]}] \index{colormap!graph block} The colormap command is discussed in Section~\ref{colormap}. \item[{\sf data {\it filename {\sf [}d1 d2 d3 ...{\sf ] [}d1=c1,c3 ...{\sf ]}} [ignore {\it n}] [comment {\it char}]}] \index{data}\label{cmd:data} Specifies the name of a file to read data from. By default, the data will be read into the next free datasets unless the optional specific dataset names are specified. A dataset consists of a series of (X,Y) coordinates, and has a name based on the letter {\sf d} and a number between 1 and 1000, e.g. {\sf d1} or {\sf d4}. Up to 1000 datasets may be defined. From a file with 3 columns the command `{\sf data \verb+"+data.csv\verb+"+}' would read the first and second columns as the x and y values for dataset 1 (d1) and the first and third columns as the x and y values for dataset 2 (d2). The next {\sf data} command would use dataset 3 (d3). \index{files} \index{data (example file)} \index{example data file} Such a data file looks like this: \begin{Verbatim} 1, 2.7, 3 2, 5, * 3, 7.8, 7 4, 9, 4 \end{Verbatim} The first point of dataset {\bf d1} would then be ({\bf 1, 2.7}) and the first point of dataset {\bf d2} would be ({\bf 1, 3}). The data values can be space, tab, comma, or semi-colon separated. \index{missing value}\index{?}Missing values can be indicated with ``\verb+*+'', ``\verb+?+'', ``\verb+-+'', or ``\verb+.+''. The option {\sf d3=c2,c3} allows particular columns of data to be read into a dataset. In this example, d3 would read its x-values from column 2 and y-values from column 3. \begin{minipage}[c]{8cm} \begin{Verbatim} size 7 3.5 begin graph size 6 3 title "Simple Graph" xtitle "Time" ytitle "Output" data "data.csv" d1 line marker triangle color red end graph \end{Verbatim} \end{minipage} \hfill \begin{minipage}[c]{7cm} \mbox{\input{tutorial/fig/tut_graph.inc}} \end{minipage} {\bf Comments:}\index{comment}\index{"!} Comments can be included with the symbol ``\verb+!+''. All characters from ``\verb+!+'' until the end of the line of the data file are ignored. It is possible to change the symbol that indicates a comment with the option `comment'. E.g., with `{\sf data \verb+"+data.csv\verb+"+ comment \#}', lines starting with \# will be treated as comments. {\bf Ignore header:}\label{opt:ignore}\index{ignore} The option {\sf ignore {\it n}} makes GLE ignore the first $n$ lines of the data file. This is useful if the first $n$ lines do not contain data. {\bf Auto key:}\index{key!data based} If the first row of a data file does not contain actual data but instead contains column labels, then these labels are used by GLE to create a key for the graph (Chapter~\ref{key:chap}). GLE automatically detects this case by checking if all fields in the first row are valid numbers or not. If not, then GLE assumes that the first row contains column labels. Column labels that include a space or that could be incorrectly interpreted as a number should be double quoted. Fig.~\ref{fig:autokey} illustrates this with an example. \begin{figure}[tb] \begin{minipage}[t]{6.35cm}% \begin{Verbatim} begin graph xtitle "Age" ytitle "Weight" data "age.csv" key pos br compact d1 line color red marker circle d2 line color blue marker triangle d3 line color green marker square end graph \end{Verbatim} \end{minipage} \begin{minipage}[t]{3.5cm}% \begin{Verbatim} Age, John, Mary, Ken 15, 73, 65, 77 20, 80, 68, 77 30, 82, 76, 80 40, 85, 77, 82 \end{Verbatim} \end{minipage} \begin{minipage}[t]{6cm}% \vskip0pt% \mbox{\input{graph/fig/age.inc}} \end{minipage} \caption{\label{fig:autokey}Line graph with key taken from the column labels in the first data row. Left: the graph block; middle: the dataset ``age.csv''; right: the resulting graph.} \end{figure} {\bf Auto x-labels:} If the first column of a data file does not contain numeric data, but instead contains symbolic labels, then these labels are used to label the horizontal axis. For example, if the data file contains \begin{Verbatim} Mon, 1 Tue, 4 Wed, 3.5 Thu, 2 Fri, 1 Sat, 5 Sun, 4 \end{Verbatim} \noindent{}then GLE creates an x-axis with one label for each day of the week, similar to that of the graph in Fig.~\ref{fig:weekday}. See also the `{\sf xnames}' command for more details on how to add labels to an axis. \index{GZIP}\index{compression}GLE can also read GZIP compressed data files. If the data file name ends in ``.gz'', then GLE will assume it is GZIP compressed and read it accordingly. \item[{\sf discontinuity threshold {\it t}}] \index{discontinuity} GLE can automatically detect discontinuities in graphs. To enable this feature, add ``{\sf discontinuity threshold $t$}'' to the graph block. The value of $t$ is the percentage of the axis range that the graph needs to change in one step in order to be detected as a discontinuity. Fig.~\ref{fig:discont} plots the ``floor'' function as an example. The discontinuity detection feature inserts a missing value at the position of each discontinuity. This leads to gaps in the curve (Fig.~\ref{fig:discont}, left). These can be disabled by using the ``nomiss'' keyword (Fig.~\ref{fig:discont}, middle). \begin{figure} \centering \mbox{\input{graph/fig/discontinuity.inc}} \caption{\label{fig:discont}An example of the auto-discontinuity detection feature.} \end{figure} \item[{\sf dn [deresolve m] [average] line}] \index{dn!deresolve}\index{deresolve} The `{\sf deresolve}' option sub-samples a dataset. Given the parameter $m > 1$, it keeps only 1 out of every $m$ points (starting with the first point). If the option `{\sf average}' is given, then it will compute the average of the y-values of every window of $m$ points. This average value will be plotted at the middle (x-value) of the window. The `{\sf deresolve}' option never removes the first and last point in a dataset if it is used in conjunction with `{\sf dn line}'. \item[{\sf dn err {\it d5} errwidth {\it width-exp} dn errup {\it nn\%} errdown {\it d4}} ] \index{dn!err} \index{dn!errwidth} \index{dn!errup} \index{dn!errdown} \index{error bars (see dn err) } For drawing error bars on a graph. The error bars can be specified as an absolute value, as a percentage of the y value, or as a dataset. The up and down error bars can be specified separately e.g., \preglecode{} \begin{Verbatim} d3 err .1 d3 err 10% d3 errup 10% errdown d2 d3 err d1 errwidth .2 \end{Verbatim} \postglecode{} \begin{minipage}[c]{8cm} \begin{Verbatim} begin graph title "Error Bars" dn lstyle 2 msize 1.5 d1 marker circle errup 30% errdown 1 d2 marker square err 30% errwidth .1 end graph \end{Verbatim} \end{minipage} \hfill \begin{minipage}[c]{7cm} \mbox{\input{graph/fig/gc_err.inc}} \end{minipage} \item[{\sf dn herr {\it d5} herrwidth {\it width-exp} dn herrleft {\it nn\%} herrright {\it d4}} ] \index{dn!herr} \index{dn!herrwidth} \index{dn!herrleft} \index{dn!herrright} \index{horizontal error bars} These commands are identical to the error bar commands above except that they will draw bars in the horizontal plane. \item[{\sf dn key {\it "Dataset title"}} ] \index{dn!key} \index{key} If a dataset is given a title like this a key will be drawn. Use the {\sf key} command (below, after hscale) to set the size and position of the key. Use the key module (Chapter~\ref{key:chap}) to draw more complex keys. \item[{\sf dn line [impulses] [steps] [fsteps] [hist] [bar]}] \index{dn} \index{dn!line} \index{line} \index{missing} This tells GLE to draw lines between the points of the dataset. By default GLE will not draw lines or markers, this is often the reason for a blank graph. If a dataset has missing values GLE will not draw a line to the next real value, which leaves a gap in the curve. To avoid this behavior simply use the {\sf nomiss} qualifier on the {\sf dn} command used to define the line. This simply throws away missing values so that lines are drawn from the last real value to the next real value. The options {\sf impulses}, {\sf steps}, {\sf fsteps}, {\sf hist}, and {\sf bar} draw lines as shown in Figure~\ref{linemode:fig}. \begin{itemize} \item {\sf impulses}: connects each point with the xaxis. \item {\sf steps}: connects consecutive points with two line segments: the first from (x1,y1) to (x2,y1) and the second from (x2,y1) to (x2,y2). \item {\sf fsteps}: connects consecutive points with two line segments: the first from (x1,y1) to (x1,y2) and the second from (x1,y2) to (x2,y2). \item {\sf hist}: useful for drawing histograms: assumes that each point is the center of a bin of the histogram. \item {\sf bar}: similar to `{\sf hist}', but now also separates the bins with vertical lines. \end{itemize} \begin{figure}[tb] \centering \input{graph/fig/linemode.inc} \caption{\label{linemode:fig}The {\sf impulses}, {\sf steps}, {\sf fsteps}, and {\sf hist} options of the line command.} \end{figure} \item[{\sf dn lstyle {\it line-style} lwidth {\it line-width} color {\it col}} ] \index{dn!lstyle} \index{dn!lwidth} \index{dn!color} \index{color (graph lines)} \index{lstyle (graph lines)} \index{lwidth (graph lines)} These qualifiers are all fairly self explanatory. See the {\sf lstyle} command in Chapter~\ref{prim:chap} (Page~\pageref{lstyle:cmd}) for details of specifying line styles. \item[{\sf dn marker {\it marker-name} [color {\it c}] [msize {\it marker-size}] [mdata {\it dn}] [mdist {\it dexp}]}] \index{dn!marker} \index{marker} Specifies the marker to be used for the dataset. There is a set of pre-defined markers (refer to Appendix A.1 for a list) which can be specified by name (e.g., {\sf circle, square, triangle, diamond, cross, ...}). The marker's color can be specified with the `{\sf color}' option. Markers can also be drawn using a user-defined subroutine (See the {\sf define marker} command in Chapter 2). The {\sf mdata} option allows a secondary dataset to be defined which will be used to pass another parameter to the marker subroutine, this allows each marker to be drawn at a different and date dependent angle, size or colour. \index{dn!msize} The {\sf msize} qualifier sets the marker size for that dataset. The size is a character height in cm, so that the actual size of the markers will be about 0.7 of this value. \index{dn!mdist} The `{\sf mdist}' option can be used to specify the distance between the markers on a curve. This can be used to add markers to a plot of a continuous function. See Fig.~\ref{grkey:fig} for an example. \item[{\sf dn nomiss} ] \index{dn!nomiss} \index{nomiss} If a dataset has missing values, GLE will not draw a line to the next real value, which leaves a gap in the curve. To avoid this behavior simply use the {\sf nomiss} qualifier on the {\sf dn} command used to define the line. This simply ignores missing values. \begin{minipage}[c]{8cm} \begin{Verbatim} begin graph title "Ignore missing values (nomiss)" xtitle "Time" ytitle "Output" data "tut.dat" d1 lstyle 2 d2 nomiss lstyle 1 marker diamond msize .2 end graph \end{Verbatim} \end{minipage} \hfill \begin{minipage}[c]{7cm} \mbox{\input{graph/fig/gc_nomiss.inc}} \end{minipage} \begin{figure}[tb] \centering \input{graph/fig/noisysine.inc} \caption{\label{smooth:fig}Various smooth options.} \end{figure} \item[{\sf dn [smooth] [smoothm] line}] \index{dn!smooth} \index{smooth} \index{smoothm} This will make GLE draw a smoothed line through the points. A third degree polynomial is fitted piecewise to the given points. The {\sf smoothm} alternative will work for multi valued functions, i.e., functions which have more than one y value for each x value. \item[{\sf dn [svg\_smooth] [m] line}] \index{dn!svg\_smooth}\index{svg\_smooth}\index{Savitsky Golay smoothing} The option {\sf svg\_smooth} performs a quadratic or cubic and 7 point Savitsky Golay smoothing on the data. The parameter $m$ specifies the number of iterations of smoothing, that is, the smoothing algorithm is run $m$ times on the dataset. Fig.~\ref{smooth:fig} shows an example. \item[{\sf dn xmin {\it x-low} xmax {\it x-high} ymin {\it y-low} ymax {\it y-high}} ] \index{dn!xmin} \index{dn!xmax} \index{dn!ymin} \index{dn!ymax} These commands map the dataset onto the graph's boundaries. The data will be drawn as if the X axis was labeled from {\it x-low} to {\it x-high} (regardless of how the axis is actually labeled). A point in the dataset at X = {\it x-low} will appear on the left hand edge of the graph. \item[{\sf dn [x2axis] [y2axis]}] \index{dn!x2axis} \index{dn!y2axis} Sometimes one needs to draw two or more curves on the same graph that have different scales or of which the values are measured in different units. In such cases, some of the curves may be associated to the x2axis and/or the y2axis. The example in Fig.~\ref{fig:y2scale} illustrates this for the parabola $y = x^2$ and the sine function $y = \sin{x}$. The former is scaled to the x/y axis as usual and the latter is scaled to the x2/y2 axis. \begin{figure}[tb] \begin{minipage}[c]{9.2cm} \begin{Verbatim} begin graph let d1 = x^2 from -2 to 2 let d2 = sin(x) from 0 to 4*pi d1 line color red key "$x^2$" d2 x2axis y2axis line color blue key "$\sin(x)$" x2axis format pi min 0 max 4*pi dticks pi end graph \end{Verbatim} \end{minipage} \hfill \begin{minipage}[c]{7cm} \mbox{\input{graph/fig/y2axis-scale.inc}} \end{minipage} \caption{\label{fig:y2scale}A parabola scaled to the x/y axis and the sine function scaled to the x2/y2 axis.} \end{figure} \item[{\sf dn file ``all.dat,xc,yc'' [marker {\sf mname}] [line]} ] \index{file (dataset)} \index{dn!file} The `file' option specifies a file from which the dataset is to be loaded. This option is an alternative to the ``data'' command (p.~\pageref{cmd:data}). By default the first two columns of the data file will be read in, but other columns may be specified. E.g., \verb+"all.dat,3,2"+ would read $x$-values from column 3 and $y$-values from column 2. Or, to read the 4th dataset, specify the file as \verb+"all.dat,1,5"+. If the x column is specified as {\sf '0'} then GLE will generate the x data points. E.g., {\sf 1,2,3,4,5...} The file option also accepts variables in place of the file name, e.g.: \begin{Verbatim} x$ = "test.dat,2,3" d1 file x$ line color red \end{Verbatim} % The {\sf AUTOSCALE} option pre-reads the file to scale the axis, % which is slow but sometimes required, e.g.: % % \begin{Verbatim} % d1 bigfile a.dat line autoscale % \end{Verbatim} % % Many (but not all) of the normal dn commands can be used with the % {\sf bigfile} command. E.g., {\sf marker, lstyle, xmin, xmax, ymin, ymax, % color and lwidth.} You cannot use commands like {\sf let} or {\sf bar} % with the {\sf bigfile} command. \item[{\sf d$\left[i\right]$ $\ldots$}] \index{for-next} A data set identifier ``d$i$'' can also be written using the array notation ``d$\left[i\right]$''. Any valid expression that results in an integer can be used inside d$\left[\ldots\right]$. This is useful if you want to select a data set based on the result of an expression. If-then-else, for-next loops, and other control constructs can be used insdide a graph block. These can be combined with the d$\left[i\right]$ notation to draw many similar functions. See Fig.~\ref{fig:sqroot} for an example that draws the functions $y = \sqrt{\alpha x}$ with $\alpha$ an integer constant. \begin{figure}[tb] \begin{minipage}[c]{9.2cm} \begin{Verbatim} begin graph ... for alpha = 1 to 10 step 2 let d[alpha] = sqrt(alpha*x) from 0 to 10 d[alpha] line color rgb(alpha/10,0,0) next alpha end graph ... for alpha = 1 to 10 step 2 amove xg(xgmax)+0.1 yg(sqrt(alpha*xgmax)) write "$\alpha = "+num$(alpha)+"$" next alpha \end{Verbatim} \end{minipage} \hfill \begin{minipage}[c]{7cm} \mbox{\input{graph/fig/sqroot.inc}} \end{minipage} \caption{\label{fig:sqroot}For-next loops in graph blocks and the use of ``d[i]''.} \end{figure} \item[{\sf draw call}] \index{draw} \label{cmd:gdraw} Executes subroutine `call' while drawing the graph. The call is drawn in the current layer (See ``begin layer''). The output is clipped to the graph window and the subroutine can use the functions `xg()', 'yg()', and variables `xgmin', `ygmin', etc. This is useful for drawing a custom graph background (Fig.~\ref{fig:shadow}) or for defining a custom graph type (Section~\ref{sec:polar}). \begin{figure}[tb] \begin{minipage}[c]{9.2cm} \begin{Verbatim} sub background amove xg(xgmin) yg(ygmin) local wd = xg(xgmax)-xg(xgmin) local hi = yg(ygmax)-yg(ygmin) colormap y 0 0 0.8 1 1 200 wd hi end sub begin graph ... d1 line marker wdiamond color steelblue d2 line marker wcircle color green begin layer 150 draw background end layer end graph \end{Verbatim} \end{minipage} \hfill \begin{minipage}[c]{7cm} \mbox{\input{graph/fig/shadow.inc}} \end{minipage} \caption{\label{fig:shadow}Using the ``draw'' command to draw a graph background.} \end{figure} \item[{\sf fullsize } ] \index{fullsize} This is equivalent to {\sf scale 1 1, noborder}. It makes the graph {\sf size} command specify the size and position of the axes instead of the size of the outside border. See Fig.~\ref{grscale:fig} (right) for an example. \item[{\sf hscale h} ] \index{hscale} Sets the length of the xaxis to $h$ times the size of the graph box (default is 0.7). $h$ can also be set to `{\sf auto}'. See {\sf scale} for more details. \item[{\sf key pos {\it tl} nobox hei {\it exp} offset {\it xexp yexp} } ] \index{key!pos} \index{key!nobox} \index{key!offset} \index{key!hei} This command allows the features of a key to be specified. The {\sf pos} qualifier sets the position of the key. E.g., {\sf tl}=topleft, {\sf br}=bottomright, etc. \item[{\sf let ds = {\it exp {\sf [from} low{\sf] [to} high{\sf] [step} exp{\sf] [where} exp{\sf]}}}] \index{let} \index{graphing functions} This command defines a new dataset as the result of an expression on the variable x over a range of values. For example: \begin{Verbatim} let d1 = sin(x)+log(x) from 1 to 100 step 1 \end{Verbatim} {\bf NOTE: The lack of spaces inside the expression are necessary.} Here are some further examples: \begin{minipage}[c]{8cm} \begin{Verbatim} begin graph ... let d1 = 1/x from 0.2 to 10 let d2 = sin(x)*2+2 from 0 to 10 let d3 = 10*(1/sqrt(2*pi))* & exp(-2*(sqr(x-4)/sqr(2)))) & from 0.2 to 10 step 0.1 dn line d2 lstyle 2 color red d3 lstyle 3 color blue end graph \end{Verbatim} \end{minipage} \hfill \begin{minipage}[c]{7cm} \mbox{\input{graph/fig/gc_let.inc}} \end{minipage} \vspace{0.2cm} The let command also allows the use of other datasets. E.g., to generate an average of two datasets: \begin{Verbatim} data "file.csv" d1 d2 let d3 = (d1+d2)/2 \end{Verbatim} More precisely, this command creates a dataset with as $x$-values the union of the $x$-values from d1 and d2, and as $y$-values the average of the $y$-values of d1 and d2. That is, the let command first computes the set of $x$-values by taking the union of the sets of $x$-values of all datasets that appear in the expression together with the $x$-values generated by the from/to/step construct. Then it iterates over these $x$-values. In each iteration, it assigns the $x$-value to the variable `x', and, for each dataset included in the expression, it assigns its corresponding $y$-value to the dataset identifier. Then it evaluates the given expression {\it exp} and adds the resulting point (x,{\it exp}) to the target dataset. If the let expression includes more than one dataset, and the $x$-ranges of these datasets are different, then linear interpolation is used to compute the missing $y$-values. If the xaxis is a `log' axis then the `step' option is read as the number of steps to produce rather than the size of each step. The ``from'', ``to'', and ``step'' parameters are optional. The values of ``from'' and ``to'' default to the horizontal axis' range. This command can also be used to modify the values in a data set, e.g., `let d1 = 2*d1', will multiply all $y$-values in dataset d1 by 2. The option `where {\it exp}' can be used to select values from a dataset, e.g., `let d1 = d2 where ((x $>$ 10) and (x $<$ 20))' will select all points from d2 for which the $x$-value is between 10 and 20; `let d1 = d2 where d2 $<$ 10' will select all points for which the $y$-value is below 10. \item[{\sf let ds = {\it x-exp, y-exp {\sf [from} low{\sf] [to} high{\sf] [step} exp{\sf] [where} exp{\sf]}}}] This syntax for the `let' command is similar to the previous one, but now two expressions can be given: {\it x-exp} is used to compute the $x$-values of the points in the target dataset `ds' and {\it y-exp} is used to compute the $y$-values. The parameter that is modified by the from/to/step construct is still the variable `x'. This syntax can be used to perform transformations on both the $x$ and the $y$-values of the points in a dataset. For example, \begin{Verbatim} let d1 = 2*x, d1+4 \end{Verbatim} will multiply the $x$-values of d1 by 2 and add 4 to the $y$-values. This syntax can also be used to define datasets that are not functions. The following example defines a circle: \begin{Verbatim} let d1 = sin(x), cos(x) from 0 to 2*pi \end{Verbatim} \item[{\sf let {\it dn} = [routine] {\it dm} [options] [{\it slopevar}] [{\it offsetvar}] [{\it rsqvar}]}] GLE includes several fitting routines that allow an equation to be fit to a data series. These routines can be included in a `let' expression as shown above, where {\it dn} will contain results of fitting {\sf routine} to the data in {\it dm}. The following routines are available : \begin{itemize} \item \texttt{linfit}\index{linfit}: fits the data in \textit{dm} to the straight line equation $y = m \cdot x + b$. \item \texttt{logefit}\index{logefit}: fits the data in \textit{dm} to the equation $y = a \cdot \exp(b \cdot x)$. \item \texttt{log10fit}\index{log10fit}: fits the data in \textit{dm} to the equation $y = a \cdot 10^{b \cdot x}$. \item \texttt{powxfit}\index{powxfit}: fits the data in \textit{dm} to the equation $y = a \cdot x^b$. \end{itemize} The value for $a$ is stored in `{\it slopevar}' and the value for $b$ is stored in `{\it offsetvar}'. The $r^2$ value of the fit is stored in `{\it rsqvar}'. Note that these variables are optional. The following options are available : \begin{itemize} \item \texttt{from {\it xmin} to {\it xmax}} The range of the data in \textit{dn} extends from the \textit{xmin} to \textit{xmax} as specified by the user. \item \texttt{step {\it xstep}} Specifies the x-resolution of the fitted equation. Similar to the \texttt{step} option of the \texttt{let} command. \item \texttt{rsq {\it var}} The $r^2$ value of the fit will be stored in {\it var}. \item \texttt{xmin {\it x1}}, \texttt{xmax {\it x2}}, \texttt{ymin {\it y1}}, \texttt{ymax {\it y2}} Only use data points from dm in the given window to fit the equation. That is, only data points $(x,y)$ from dm are used for which $x_1 \le x \le x_2$ and $y_1 \le y \le y_2$. \item \texttt{limit\_data\_x} The range of the data in \textit{dn} extends from the minimum $x$ value in \textit{dm} to the maximum $x$ value in \textit{dm}. \item \texttt{limit\_data\_y} The range of the data in \texttt{dn} extends from the $x$ value of the minimum $y$ value in \textit{dm} to the $x$ value of the maximum $y$ value in \textit{dm}. \item \texttt{limit\_data} The range of the data in \textit{dn} extends from the greater of the $x$ value of the minimum $y$ value or the minimum $x$ value in \textit{dm} to the greater of the $x$ value of the maximum $y$ value or the maximum $x$ value in \textit{dm}. \end{itemize} \begin{figure}[tb] \begin{minipage}[c]{9.2cm} \begin{Verbatim} slope = 0; offs = 0; rsquare = 0 set texlabels 1 begin graph title "Linear fit" xtitle "$x$" ytitle "$y = ax + b$" data "data.csv" let d2 = linfit d1 from 0 to 10 slope offset rsquare d1 marker circle color blue d2 line color red end graph begin key pos br nobox text "$y = "+format$(slope,"fix 2")+"x + "+format$(offset,"fix 2")+"$" text "$r^2 = "+format$(rsquare,"fix 2")+"$" end key \end{Verbatim} \end{minipage} \hfill \begin{minipage}[c]{7cm} \mbox{\input{graph/fig/gc_fit.inc}} \end{minipage} \caption{\label{fig:fitlin}Fitting linear equations `let d2 = fitlin d1'.} \end{figure} \begin{figure}[tb] \begin{minipage}[c]{8cm} \begin{Verbatim} a = 0; b = 0; c = 0; d = 0; r = 0 set texlabels 1 begin graph xtitle "$x$" ytitle "$f(x)$" title "$f(x) = a\sin(bx)+cx^2+d$" data "data.csv" let d2 = fit d1 with a*sin(b*x)+c*x^2+d rsq r d1 marker circle color blue d2 line color red end graph fct$ = "$f(x) = "+format$(a,"fix 2")+ & "\sin("+format$(b,"fix 2")+"x)+"+ & format$(c,"fix 2")+"x^2+"+ & format$(d,"fix 2")+"$" begin key pos br nobox text fct$ text "$r^2$ = "+format$(r,"fix 3") end key \end{Verbatim} \end{minipage} \hfill \begin{minipage}[c]{7cm} \mbox{\input{graph/fig/gc_fitfct.inc}} \end{minipage} \caption{\label{fig:fitfct}Fitting arbitrary curves `let d2 = fit d1 with $\ldots$'.} \end{figure} \item[{\sf let {\it dn} = fit {\it dm} with {\it eqn} [options]}] Fit the coefficients of a given equation so that it best fits the data in dataset dm. Fig.~\ref{fig:fitfct} shows an example. The equation to fit is given by the `\texttt{with}' option. In this example, it is $a\sin(bx)+cx^2+d$. GLE will search for values for the coefficients $a$, $b$, $c$, and $d$ such that the given equation fits dm best. Note that all used coefficients must be initialized to zero before the graph block (see figure). The fit command has the same options as the linfit command. In addition, it has the following settings. \begin{itemize} \item \texttt{with {\it eqn}} Gives the equation to fit. \item \texttt{eqstr {\it strvar\$}} Sets the string variable in which the string representation of the fitted equation is to be stored. \item \texttt{format {\it fmt\$}} Sets the numeric format to use while converting the fitted equation into its string representation. See the documentation of {\sf format\$} on page~\pageref{formatnum:pg} for a description of the syntax. \end{itemize} \item[{\sf let ds = hist dm [from {\it x1}] [to {\it x2}] [bins {\it n}] [step {\it n}]}] \index{histogram}\index{let!hist} Computes a histogram for the values in `dm' and store the result in `dn'. E.g., if the file `normal.csv' contains a single column with samples from the standard Gaussian distribution, then the graph block \begin{Verbatim} begin graph ... data "normal.csv" let d2 = hist d1 step 0.5 d2 line bar color red end graph \end{Verbatim} \noindent{}will result in the histogram shown in Fig.~\ref{hist:fig}. The option `{\sf bins}' specifies the number of bins in the histogram. Alternatively, the option `{\sf step}' can be used to specify the bin size. \begin{figure}[tb] \centering \mbox{\input{graph/fig/normal.inc}} \caption{\label{hist:fig}An example of `let dn = hist dn'.} \end{figure} \item[{\sf let ds = \ldots [nsteps {\it n}]}] \index{nsteps}\index{let!nsteps} The `nsteps' options is an alternative to the `step' option of the `let' command. It specifies the total number of steps rather than the step width. The default value for `nsteps' is 100. \item[{\sf let ds = \ldots [range {\it dn}]}] \index{range}\index{let!range} Takes the x-values for this `let' expression from dataset `dn'. This is useful if you need to define a function for the same x-values as the ones you have in a given dataset. \item[{\sf math}] Use this option to create a math mode graph, with the axis crossing at point $(0,0)$. Fig.~\ref{grmath:fig} shows an example. The corresponding GLE code is as follows: \begin{Verbatim} begin graph math title "f(x) = sin(x)" xaxis min -2*pi max 2*pi ftick -2*pi dticks pi format "pi" yaxis dticks 0.25 format "frac" let d1 = sin(x) d1 line color red end graph \end{Verbatim} \begin{figure}[tb] \centering \mbox{\input{graph/fig/gc_mathmode.inc}} \caption{\label{grmath:fig}Left: math mode graph. Right: graph illustrating the `{\sf origin}' option of `{\sf xaxis}'.} \end{figure} \item[{\sf nobox}] \index{nobox} \index{noborder} \index{border} This removes the outer border from the graph. \item[{\sf size {\it x y }}] \index{size} Defines the size of the graph in cm. This is the size of the outside box of a graph. The default size of the axes of the graph will be 70\% of this, (see {\sf scale}). If no {\sf size} command is given, then the size of the graph is initialized to the size of the figure ({\sf pagewidth()} by {\sf pageheight()}). \item[{\sf scale {\it h v}}] \index{scale} Sets the length of the xaxis to $h$ times the width of the graph box, and the length of the yaxis to $v$ times the height of the graph box. For example, with `{\sf size 10 10}' and `{\sf scale 0.7 0.7}', the length of the $x$ and $y$ axis will be 7 centimeter. `{\sf scale 1 1}' makes the xaxis (yaxis) the same length as the width (height) of the graph box, which is useful for positioning some graphs (see `{\sf fullscale}'). The default value for $h$ and $v$ is 0.7. If {\it h} or {\it v} is set to the keyword {\sf auto}, then the graph is scaled automatically in that direction to fill the entire box. The command `{\sf scale auto}' automatically scales the graph in both directions. Note that autoscale also moves the graph, similar to the command `{\sf center}'. This {\sf size} command is equivalent to the two commands `{\sf hscale {\it h}}' and `{\sf vscale {\it v}}' and allows one to specify the two scale factors with one command. Fig.~\ref{grscale:fig} shows examples of the different axis scaling options: default, automatic, and `{\sf fullsize}'. \begin{figure}[tb] \centering \mbox{\input{graph/fig/gc_graphscale.inc}} \caption{\label{grscale:fig}Different axis scaling options: default, automatic, and `{\sf fullsize}'. The blue dot indicates the origin $(x,y)$ of the graph, that is, the graph is generated with `{\sf amove $x$ $y$}' followed by `{\sf begin graph}' ... `{\sf end graph}'. The xaxis is labeled using the option `{\sf format pi}'.} \end{figure} \item[{\sf title {\it "title"} [hei {\it ch-hei}] [color {\it col}] [font {\it font}] [dist {\it cm}] } ] \index{title} \index{title!hei} \index{title!font} \index{title!dist} \index{title!color} \index{color (title)} \index{font (title)} This command gives the graph a centered title. The list of optional keywords specifies features of it. The {\sf dist} command is used for moving the title up or down. The default title font size is the value of the `\texttt{hei}' setting multiplied by the setting `\texttt{titlescale}'\index{titlescale} (default 1.16). \item[{\sf vscale v}] \index{vscale} Sets the length of the yaxis to $v$ times the size of the graph box (default is 0.7). $v$ can also be set to `{\sf auto}'. See {\sf scale} for more details. \item[{\sf x2labels on}] \index{x2labels!on} This command `activates' the numbering of the x2axis. There is a corresponding command `{\sf y2axis on}' which will activate y2axis numbering. \item[{\sf xaxis | yaxis | x2axis | y2axis}] \index{xaxis} \index{yaxis (see xaxis)} \index{x2axis (see xaxis)} \index{y2axis (see xaxis)} A graph is considered to have four axes: The normal xaxis and yaxis as well as the top axis (x2axis) and the right axis (y2axis). Any command defining an xaxis setting will also define that setting for the x2axis. The secondary axes x2 and y2 can be modified individually by starting the axis command with the name of that axis. E.g., \begin{minipage}[c]{8cm} \begin{Verbatim} begin graph size 6 3 xtitle "X-axis" ytitle "Y-axis" x2title "X2-axis" y2title "Y2-axis" x2ticks length 0.6 x2subticks color red end graph \end{Verbatim} \end{minipage} \hfill \begin{minipage}[c]{7cm} \mbox{\input{graph/fig/gc_axes.inc}} \end{minipage} \item[{\sf xaxis angle $\alpha$}] Rotate the labels by $\alpha$ degrees. Fig.~\ref{hbar:fig} gives an example. \item[{\sf xaxis base {\it exp-cm}} ] \index{xaxis!base} Scale the axis font and ticks by {\it exp-cm}. The default value of the `{\sf base}' setting is the value of `{\sf hei}'. \item[{\sf xaxis color {\it col} font {\it font-name} hei {\it exp-cm} lwidth {\it exp-cm}} ] \index{xaxis!color} \index{xaxis!font} \index{xaxis!hei} \index{xaxis!lwidth} These axis qualifiers affect the colour, lstyle, lwidth, and font used for drawing the xaxis (and the x2axis). These can be overridden with more specific commands. E.g., `{\sf xticks color blue}' would override the axis colour when drawing the ticks. The subticks would also be blue as they pick up tick settings by default. \item[{\sf xaxis dsubticks {\it sub-distance} } ] \index{xaxis!dsubticks} See {\sf xaxis nticks} below. \item[{\sf xaxis format {\it format-string}} ] Specifies the number format for the labels. See the documentation of {\sf format\$} on page~\pageref{formatnum:pg} for a description of the syntax. Example: \preglecode{} \begin{Verbatim} xaxis format "fix 1" \end{Verbatim} \postglecode{} \item[{\sf xaxis grid } ] \index{grid} \index{xaxis!grid} This command makes the xaxis ticks long enough to reach the x2axis and the yaxis ticks long enough to reach the y2axis. When used with both the x and y axes this produces a grid over the graph. Use the {\sf xticks lstyle} command to create a faint grid. It is possible to have grid lines for subticks or to have normal subticks. Figure~\ref{gridmode:fig} shows the different options. \begin{figure}[tb] \centering \input{graph/fig/gridmode.inc} \caption{\label{gridmode:fig}Different grid options: no subticks, grid lines at each subtick, or grid lines at main ticks with regular subticks. The box on each graph indicates which GLE commands to use for each option.} \end{figure} \item[{\sf xaxis log} ] \index{xaxis!log} \index{log} Draws the axis in logarithmic style, and scales the data logarithmically to match (on the x2axis or y2axis it does not affect the data, only the way the ticks and labeling are drawn) Be aware that a straight line should become curved when drawn on a log graph. This will only happen if you have enough points or have used the {\sf smooth} option. \item[{\sf xaxis min {\it low} max {\it high}} ] \index{xaxis!min} \index{xaxis!max} Sets the minimum and maximum values on the xaxis. This will determine both the labeling of the axis and the default mapping of data onto the graph. To change the mapping see the dataset {\sf dn} commands {\sf xmin}, {\sf ymin}, {\sf xmax}, and {\sf ymax}. \item[{\sf xaxis nofirst nolast} ] \index{nolast} \index{nofirst} \index{xaxis!nolast} \index{xaxis!nofirst} These two switches simply remove the first or last (or both) labels from the graph. This is useful when the first labels on the x and y axis are too close to each other. \index{xaxis!nticks} \index{xaxis!dticks} \index{xaxis!dsubticks} \index{xaxis!nsubticks} \index{dticks} \index{nticks} \index{dsubticks} \index{nsubticks} \item[{\sf xaxis nticks {\it number} dticks {\it distance} dsubticks {\it distance}} ] {\sf nticks} specifies the number of ticks along the axis. {\sf dticks} specifies the distance between ticks and {\sf dsubticks} specifies the distance between subticks. For example, to get one subtick between every main tick with main ticks 3 units apart, simply specify {\sf dsubticks 1.5}. Alternatively, one can also use {\sf nsubticks}. By default ticks are drawn on the inside of the graph. To draw them on the outside use the command: \preglecode{} \begin{Verbatim} xticks length -.2 yticks length -.2 \end{Verbatim} \postglecode{} \item[{\sf xaxis ftick {\it x0} dticks {\it distance} nticks {\it number}}] Labels the xaxis starting from position `{\it x0}', with distance `{\it distance}' between the ticks. This will result in a tick at the positions $\mathit{x0} + i \times \mathit{distance}$, with $i$ ranging from 0 to $(\mathit{number}-1)$. \item[{\sf xaxis off} ] \index{xaxis!off} Turns the whole axis off --- labels, ticks, subticks and line. Often the x2axis and y2axis are not required, they could be turned off with the following commands: \preglecode{} \begin{Verbatim} x2axis off y2axis off \end{Verbatim} \postglecode{} \item[{\sf xaxis shift {\it cm-exp}} ] \index{xaxis!shift} This moves the labeling to the left or right, which is useful when the label refers to the data between the two values. \item[{\sf xaxis symticks}] \index{xaxis!symticks} By default, the axis ticks are drawn on the inside of the graph frame. To make them appear on the outside, use a negative ticks length. E.g., `{\sf xticks length -0.1}' will produce 1mm ticks on the outside of the graph frame. The `symticks' option enables tick on both the inside and outside of the graph frame. This option is the default in `math' mode. (See the `{\sf math}' command.) \item[{\sf xlabels [font {\it font-name}] [hei {\it char-hei}] [color {\it col}] [dist {\it dis}] [on] [off] [log {\it lgmode}]}] \index{xlabels} \index{xlabels!font} \index{xlabels!hei} \index{xlabels!color} \index{xlabels!dist} \index{xlabels!on} \index{xlabels!off} \index{xlabels!log} This command controls the appearance of the axis labels. The default label font size is the value of the `\texttt{hei}' setting multiplied by the setting `\texttt{alabelscale}'\index{alabelscale} (default 0.8). The default value for {\it dist} is controlled by the setting `\texttt{alabeldist}'\index{alabeldist}. The command `\texttt{xlabels off}' turns the labels for the xaxis off. Similarly, `\texttt{xlabels on}' turns them on (the default for the $x$ and $y$ axis, but not for the $x2$ and $y2$ axis). Possible values for {\it lgmode} are: `\texttt{off}', `\texttt{l1}', `\texttt{l25}', and `\texttt{l25b}'. These control the subticks for a log scale axis. The value `\texttt{off}' means no subticks (i.e., only main ticks at $10^k$), `\texttt{l1}' means 10 subticks, and `\texttt{l25}' means two subticks at the positions $2\cdot 10^k$ and $5\cdot 10^k$. The value `\texttt{l25b}' is identical to `\texttt{l25}' except that now the format function (given with the `\texttt{format}' option of the `\texttt{xaxis}' command) is used to label the subticks. In the other case, the subticks are labeled with the values `2' and `5' in a small font (0.7 times the size of the main tick labels). These settings are illustrated in Fig.~\ref{loglab:fig}. \begin{figure}[tb] \centering \mbox{\input{graph/fig/gc_loglabels.inc}} \caption{\label{loglab:fig}Possibilities for the `\texttt{log}' option of `\texttt{ylabels}'.} \end{figure} \begin{figure}[tb] \centering \mbox{\input{graph/fig/gc_logsubticks.inc}} \caption{\label{logsubt:fig}How log subticks and log sublabels interact.} \end{figure} \item[{\sf xnames {\it "name" "name" ...}} ] \index{xnames} \index{ynames (see xnames)} This command replaces the numeric labeling with text labels. Given data consisting of seven measurements, taken from Monday to Sunday, one per day then \begin{Verbatim} xnames "Mon" "Tue" "Wed" "Thu" "Fri" "Sat" "Sun" xaxis min 0 max 6 dticks 1 \end{Verbatim} would give the desired result (Fig.~\ref{fig:weekday}). Note it is essential to define a specific axis minimum, maximum, dticks, etc., otherwise the labels may not correspond to the data. If there isn't enough room on the line for all the names then simply use an extra {\sf xnames} command. \begin{figure}[tb] \begin{minipage}[c]{8cm} \begin{Verbatim} begin graph ytitle "Happyness" title "Names \& Places" xnames "Mon" "Tue" "Wed" "Thu" xnames "Fri" "Sat" "Sun" xaxis min 0 max 6 dticks 1 ... end graph \end{Verbatim} \end{minipage} \hfill \begin{minipage}[c]{7cm} \mbox{\input{graph/fig/gc_names.inc}} \end{minipage} \caption{\label{fig:weekday}Example illustrating the ``xnames'' command.} \end{figure} \item[{\sf xnames from {\it dx}}] Takes the labels for the xaxis from dataset {\it dx}. For example, if the data file contains: \begin{Verbatim} 0, Mercury, 0.382 1, Venus, 0.949 2, Mars, 0.532 3, Jupiter, 11.21 4, Saturn, 9.449 5, Uranus, 4.007 6, Neptune, 3.883 \end{Verbatim} \noindent{}then `{\sf ynames from d1}' uses the data from the second column as labels for the yaxis (Fig.~\ref{hbar:fig}). \item[{\sf xnoticks {\it pos1 pos2 pos3 ...}}] \index{xnoticks} Disables the axis ticks at the given positions. \item[{\sf xplaces {\it pos1 pos2 pos3 ...}} ] \index{xplaces} This is similar to the xnames command but it specifies a list of points which should be labeled. This allows labeling which isn't equally spaced. For example: \begin{Verbatim} xplaces 1 2 5 7 xnames "Mon" "Tue" "Fri" "Sun" \end{Verbatim} If there isn't enough room on the line for all the places then simply use an extra {\sf xplaces} command. \item[{\sf xside color {\it col} lwidth {\it line-width} off } ] \index{xside} \index{yside (see xside)} \index{y2side (see xside)} \index{x2side (see xside)} \index{xside!lwidth} \index{xside!color} This command controls the appearance of the axis line, i.e. the line to which the ticks are attached. \item[{\sf xsubticks {\it {\sf lstyle} num {\sf lwidth} exp {\sf length} exp {\sf on} {\sf off}}} ] \index{xsubticks} \index{xsubticks!lstyle} \index{xsubticks!lwidth} \index{xsubticks!length} \index{xsubticks!on} \index{xsubticks!off} This command gives fine control of the appearance of the axis subticks. GLE uses an algorithm that decides based on the distance between the main ticks if it should draw subticks or not. However, you can override the decision of this algorithm and explicitly turn the subticks on or off by means of the commands ``xsubticks on'' or ``xsubticks off''. \item[{\sf xticks {\it {\sf lstyle} num {\sf lwidth} exp {\sf length} exp {\sf off}}} ] \index{xticks} \index{yticks (see xticks)} \index{xticks!lstyle} \index{xticks!lwidth} \index{xticks!length} \index{xticks!off} This command gives fine control of the appearance of the axis ticks. Note: To get ticks on the outside of the graph, i.e. pointing outwards, specify a negative tick length: \preglecode{} \begin{Verbatim} xticks length -.2 yticks length -.2 \end{Verbatim} \postglecode{} \item[{\sf xtitle {\it "title"} [hei {\it ch-hei}] [color {\it col}] [font {\it font}] [dist {\it cm}] [adist {\it cm}]}] \index{ytitle (see xtitle)} \index{xtitle} \index{xtitle!hei} \index{xtitle!font} \index{xtitle!dist} \index{xtitle!adist} \index{xtitle!color} This command gives the axis a centered title. The list of optional keywords specify features of it. The {\sf dist} option is used for controlling the distance between the title and the axis labels. The default font size is the value of the `\texttt{hei}' setting multiplied by the setting `\texttt{atitlescale}'\index{atitlescale} (default 1.0). The default value for {\it dist} is controlled by the setting `\texttt{atitledist}'\index{atitledist}. The `{\sf adist}' option is an alternative to `{\sf dist}', but specifies the distance between the title and axis itself. This option is useful for perfectly aligning, e.g., the y-axis titles of multiple graphs (if the graphs are in one vertical column, but their y-axis labels have a different width). \item[{\sf xaxis negate} ] \index{negate} \index{xaxis!neagte} This is reversed the numbering on the y axis. For use with measurements below ground, where you want zero at the top and positive numbers below the zero. \item[{\sf y2title {\it "text-string"} [rotate] } ] \index{y2title rotate} \index{rotate (y2title)} By default the y2title is written vertically upwards. The optional {\sf rotate} keyword changes this direction to downwards. The {\sf rotate} option is specific to the {\sf y2title} command. \begin{minipage}[c]{8cm} \begin{Verbatim} begin graph xaxis min 0 max 9 nofirst nolast xaxis hei 0.4 nticks 6 dsubticks 0.3 xaxis lwidth 0.05 color red xticks length 0.2 ytitle "Log Yaxis" yaxis log min 1 max 10 yticks length 0.2 y2axis min 1 max 10000 format "sci 0 10" y2side color blue y2title "Y2title rotated " hei 0.3 rotate x2axis off y2labels on let d1 = sin(x)*4+5 from 0 to 9 dn line color blue end graph \end{Verbatim} \end{minipage} \hfill \begin{minipage}[c]{7cm} \mbox{\input{graph/fig/gc_axisall.inc}} \end{minipage} \end{commanddescription} \section{Bar Graphs} \label{cmd:bar} \index{bar graphs} Drawing a bar graph is a subcommand of the normal graph module. This allows bar and line graphs to be mixed. The bar command is quite complex as it allows a great deal of flexibility. The same command allows stacked, overlapping and grouped bars. For stacked bars use separate bar commands as in the first example below: \preglecode{} \begin{Verbatim} bar d1 fill black bar d2 from d1 fill gray10 \end{Verbatim} \postglecode{} For grouped bars put all the datasets in a list on a single bar command: \preglecode{} \begin{Verbatim} bar d1,d2,d3 fill gray10,gray40,black \end{Verbatim} \postglecode{} \begin{minipage}[c]{8cm} \begin{Verbatim} begin graph title "Bean stalk data" dist 0.1 xtitle "Year measured" ytitle "Height of stalk" xaxis dticks 1 yaxis min 0 max 6 dticks 2 data "gc_bean.dat" bar d1,d2,d3 fill blue,orange,red end graph \end{Verbatim} \end{minipage} \hfill \begin{minipage}[c]{7cm} \mbox{\input{graph/fig/gc_bargraph2.inc}} \end{minipage} \begin{commanddescription} \item[{\sf bar {\it dx,...} dist {\it spacing}}] \index{bar!dist} Specifies the distance between bars in dataset(s) {\sf dx,...}. The distance is measured from the left hand side of one bar to the left hand side of the next bar. A distance of less than the width of a bar results in the bars overlapping. \item[{\sf bar {\it dx,...} from {\it dy,...}}] \index{bar!from} This sets the starting point of each bar in datasets {\sf dx,...} to be at the value in datasets {\sf dy,...}, and is used for creating stacked bar charts. Each layer of the bar chart is created with an additional bar command. \preglecode{} \begin{Verbatim} bar d1,d2 bar d3,d4 from d1,d2 bar d5,d6 from d3,d4 \end{Verbatim} \postglecode{} Note 1: It is important that the values in d3 and d4 are greater than the values in d1 and d2. Note 2: Data files for stacked bar graphs should not have missing values, replace the * character with the number on its left in the data file. \begin{minipage}[c]{8cm} \begin{Verbatim} begin graph ... data "gc_bean.dat" bar d1 fill gray20 bar d2 from d1 fill white end graph \end{Verbatim} \end{minipage} \hfill \begin{minipage}[c]{7cm} \mbox{\input{graph/fig/gc_bargraph1.inc}} \end{minipage} \index{bar!width} \index{bar!fill} \index{bar!color} \item[{\sf bar {\it dn,...} width {\it xunits,...} fill {\it col,...} color {\it col,...} }] The rest of the bar qualifiers are fairly self explanatory. When several datasets are specified, separate them with commas (with no spaces between commas). \preglecode{} \begin{Verbatim} bar d1,d2 width 0.2 dist 0.2 fill gray10,gray20 color red,green \end{Verbatim} \postglecode{} \item[{\sf bar {\it dn,...} fill {\it f} pattern {\it p}}] \index{pattern!bar} The `{\sf pattern}' option specifies the pattern used for filling the bars. Fig.~\ref{filpat:fig} gives an overview of the predefined patterns that can be used here. Fig.~\ref{hbar:fig} shows an example of the command `{\sf bar d2 horiz fill red pattern shade2}'. \item[{\sf bar {\it dn,...} horiz}] \index{horiz} The option `{\sf horiz}' makes the bars horizontal instead of vertical (Fig.~\ref{hbar:fig}). \begin{figure}[tb] \centering \input{graph/fig/gc_horizbar.inc} \caption{\label{hbar:fig}Illustration of the `{\sf horiz}' and `{\sf pattern}' keywords of the `{\sf bar}' command, and of the `{\sf angle}' option of the `{\sf yaxis}' command.} \end{figure} \end{commanddescription} \section{3D Bar Graphs} \index{bar graphs 3d} 3d Bar graphs are now supported, the commands are: \preglecode{} \begin{Verbatim} bar d1,d2 3d .5 .3 side red,green notop bar d3,d4 3d .5 .3 side red,green top black,white \end{Verbatim} \postglecode{} Take note of comma's. \begin{commanddescription} \item[{\sf bar {\it dx,...} 3d {\it xoffset} \ {\it yoffset} side {\it color list}\ top {\it color list} [notop]}] \index{3d bar!offset} \index{3d bar!side} \index{3d bar!top} \index{3d bar!notop} \index{xoffset} \index{yoffset} \item[{\sf 3d {\it xoffset} {\it yoffset} }] Specifies the x and y vector used to draw the receding lines, they are defined as fractions of the width of the bar. A negative xoffset will draw the 3d bar on the left side of the bar instead of the right hand side. \item[{\sf side {\it color list} }] The color of the side of each of the bars in the group. \item[{\sf top {\it color list}}] The color of the top part of the bar \item[{\sf notop}] Turns off the top part of the bar, use this if you have a stacked bar graph so you only need sides on the lower parts of each stack. \begin{minipage}[c]{8cm} \begin{Verbatim} begin graph ... data "gc_bean.dat" bar d1,d2,d3 dist 0.25 width 0.15 3d 1 0.25 & fill red,blue,forestgreen & side orange,dodgerblue,green end graph \end{Verbatim} \end{minipage} \hfill \begin{minipage}[c]{7cm} \mbox{\input{graph/fig/gc_bargraph_3d.inc}} \end{minipage} \end{commanddescription} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Filling Between Lines} \label{cmd:fill} \begin{commanddescription} \index{fill!color} \index{fill!xmin} \index{fill!xmax} \index{fill!ymin} \index{fill!ymax} \item[{\sf fill x1,{\it d3} color {\it green} xmin {\it val} xmax {\it val}} ] \index{filling areas} Fills between the xaxis and a dataset, use the optional {\sf xmin, xmax, ymin, ymax} qualifiers to clip the filling to a smaller region \item[{\sf fill {\it d4},x2 color {\it blue} ymin {\it val} ymax {\it val}} ] This command fills from a dataset to the x2axis. \item[{\sf fill {\it d3,d4} color {\it green} xmin {\it val} xmax {\it val}} ] This command fills between two datasets. \item[{\sf fill {\it d4} color {\it green} xmin {\it val} xmax {\it val}} ] This command treats the dataset as a polygon and fills it. The dataset should be a closed polygon. \begin{minipage}[c]{8cm} \begin{Verbatim} begin graph title "Shading areas of the graph" dist 0.1 xtitle "Height of stalk" ytitle "Year measured" xaxis min 86 max 90 yaxis min 0 max 6 data "gc_fill.dat" fill d2,x2 color gray40 fill x1,d1 color gray10 xmin 85 xmax 88 fill x1,d1 color gray90 xmin 88 xmax 91 dn line end graph \end{Verbatim} \end{minipage} \hfill \begin{minipage}[c]{7cm} \mbox{\input{graph/fig/gc_fillgraph.inc}} \end{minipage} \end{commanddescription} To create semi-transparent fills, use the function ``rgba255'' to specify the fill color. This function allows one to define a semi-transparent color with red, green, blue, and alpha components. The alpha component defines the transparency. Fig.~\ref{fig:semitrans} shows an example. To create output with semi-transparent colors, GLE's command line option ``-cairo'' must be used. \begin{figure}[tb] \begin{minipage}[c]{7.5cm} \begin{Verbatim} begin graph ... begin layer 300 fill x1,d1 color rgba255(255,0,0,80) d1 line color red key "$1.5\sin(x)+1.5$" end layer begin layer 301 fill x1,d2 color rgba255(0,128,0,80) d2 line color green key "$1/x$" end layer ... end graph \end{Verbatim} \end{minipage} \hfill \begin{minipage}[c]{7cm} \hascairo{ \mbox{\input{graph/fig/semitrans.inc}} } \end{minipage} \caption{\label{fig:semitrans}A graph with semi-transparent fills.} \end{figure} \subsection{Polar Plots} \label{sec:polar} GLE supports polar plots by means of the ``polar'' and ``polar\_grid'' functions from the library file ``polarplot.gle''. See Fig~\ref{fig:polar} for an example. This example also illustrates the use of the ``draw'' function (p.~\pageref{cmd:gdraw}) and the ``layer'' block (p.~\pageref{cmd:layer}). The ``layer'' block is used here to make sure that the polar grid is drawn before the axis are drawn. \begin{figure}[tb] \begin{minipage}[c]{10.5cm} \begin{Verbatim} begin graph title "$r = \cos(2\theta)$" xaxis min -1.1 max 1.1 yaxis min -1.1 max 1.1 begin layer 0 draw polar_grid radius 2 rings 5 sectors 12 draw polar "cos(2*t)" from 0 to 2*pi fill wheat end layer end graph \end{Verbatim} \end{minipage} \hfill \begin{minipage}[c]{5cm} \mbox{\input{graph/fig/cos2t.inc}} \end{minipage} \caption{\label{fig:polar}Polar plots using the ``draw'' command and the ``polar'' function from ``polarplot.gle''.} \end{figure} \section{Notes on Drawing Graphs} \subsection{Importance of Order} \index{data (order)} \index{let (order)} Most of the graph commands can appear in any order, but in some cases order is significant. As some {\sf let} commands operate on data which has been read into datasets, the {\sf data} commands should precede the {\sf let} commands. The wildcard {\sf dn} command should appear before specific {\sf d1} commands which it will override. By default xaxis commands also change the x2axis, and xlabels commands also change x2labels, so to specify different settings for the x and x2 axes, put the x2 settings after the x settings. \preglecode{} \begin{Verbatim} begin graph size 10 10 data a.dat let d2 = d1*3 dn marker square lstyle 3 ! sets d1 and d2 d2 marker dot xaxis color green xticks color blue x2axis color black end graph \end{Verbatim} \postglecode{} \subsection{Layers} \label{cmd:layer} GLE draws a graph as a sequence of layers. The following are the default layers. \begin{itemize} \item[200] A grid (e.g., ``yaxis grid'') \item[350] Fill type graphs (p.~\pageref{cmd:fill}) \item[350] Bar type graphs (p.~\pageref{cmd:bar}) \item[500] Graph axis \item[700] Line type graphs \item[700] Error bars \item[700] Marker type graphs \item[700] Draw commands (p.~\pageref{cmd:gdraw}) \end{itemize} There are only 4 default layers. Each layer has a unique number (200, 350, 500, and 700). Layers are drawn from small to large. Within a layer, the elements are drawn in the order indicated above. For example, error bars are drawn after line type graphs. It is possible to define new layers with the ``begin layer / end layer'' block. This is illustrated by the following example. \preglecode{} \begin{Verbatim} begin graph data "file.csv" ... begin layer 400 d1 line color red end layer end graph \end{Verbatim} \postglecode{} This example defines a custom layer with the unique number 400 and one line type graph. The result will be that d1 is drawn after any defined bar type graphs and before the graph x/y axis. More examples of layers can be found in the following figures: \begin{itemize} \item Fig.~\ref{fig:shadow} shows how a layer can be used to draw a custom graph background. \item Fig.~\ref{fig:semitrans} shows how layers can be used to combine fill type and line graphs. \item Fig.~\ref{fig:polar} shows how layers can be used to draw a custom grid. \end{itemize} \subsection{Line Width} \index{line width (graphs)} \index{lwidth (graphs)} When scaling a graph up or down for publication the default line width may need changing. To do this simply specify a {\sf set lwidth} command before beginning the graph. \preglecode{} \begin{Verbatim} size 10 10 set lwidth .1 begin graph ... end graph \end{Verbatim} \postglecode{} gle-graphics-4.2.4c/gle-refman/Makefile.gcc0000664000000000000000000000760511653614243017156 0ustar rootroot######################################################################## # # # GLE - Graphics Layout Engine # # # # Modified BSD License # # # # Copyright (C) 2009 GLE. # # # # Redistribution and use in source and binary forms, with or without # # modification, are permitted provided that the following conditions # # are met: # # # # 1. Redistributions of source code must retain the above copyright # # notice, this list of conditions and the following disclaimer. # # # # 2. Redistributions in binary form must reproduce the above # # copyright notice, this list of conditions and the following # # disclaimer in the documentation and/or other materials provided with # # the distribution. # # # # 3. The name of the author may not be used to endorse or promote # # products derived from this software without specific prior written # # permission. # # # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR # # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY # # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE # # GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER # # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN # # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # # ######################################################################## all: fig fonts pdf defs.tex fig: $(MAKE) -C title -f Makefile.gcc $(MAKE) -C tutorial/fig -f Makefile.gcc $(MAKE) -C primitives/fig -f Makefile.gcc $(MAKE) -C graph/fig -f Makefile.gcc $(MAKE) -C key/fig -f Makefile.gcc $(MAKE) -C advanced/fig -f Makefile.gcc $(MAKE) -C utilities/fig -f Makefile.gcc $(MAKE) -C appendix/fig -f Makefile.gcc $(MAKE) -C prog/fig -f Makefile.gcc pdf: defs.tex pdflatex gle-manual.tex dvi: latex gle-manual.tex index: makeindex gle-manual fonts: $(MAKE) -C fonttest -f Makefile.gcc cfonts: $(MAKE) -C fonttest -f Makefile.gcc clean clean: rm -rf *.pdf *.idx *.aux *.dvi *.log *.out *.ilg *.ind *.toc defs.tex $(MAKE) -C title -f Makefile.gcc clean $(MAKE) -C tutorial/fig -f Makefile.gcc clean $(MAKE) -C primitives/fig -f Makefile.gcc clean $(MAKE) -C graph/fig -f Makefile.gcc clean $(MAKE) -C key/fig -f Makefile.gcc clean $(MAKE) -C advanced/fig -f Makefile.gcc clean $(MAKE) -C utilities/fig -f Makefile.gcc clean $(MAKE) -C appendix/fig -f Makefile.gcc clean $(MAKE) -C prog/fig -f Makefile.gcc clean # PDFS = $(addsuffix .pdf, $(basename $(EPSS))) # %.pdf: %.eps # epstopdf $< defs.tex: ../build/bin/glebtool -latexdef defs.tex hascairo $(HAVE_CAIRO) ../build/bin/glebtool -latexversion defs.tex gle-graphics-4.2.4c/gle-refman/utilities/contour.tex0000644000000000000000000001570011447333241021177 0ustar rootroot%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % GLE - Graphics Layout Engine % % % % Modified BSD License % % % % Copyright (C) 2009 GLE. % % % % Redistribution and use in source and binary forms, with or without % % modification, are permitted provided that the following conditions % % are met: % % % % 1. Redistributions of source code must retain the above copyright % % notice, this list of conditions and the following disclaimer. % % % % 2. Redistributions in binary form must reproduce the above % % copyright notice, this list of conditions and the following % % disclaimer in the documentation and/or other materials provided with % % the distribution. % % % % 3. The name of the author may not be used to endorse or promote % % products derived from this software without specific prior written % % permission. % % % % THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR % % IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED % % WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE % % ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY % % DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL % % DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE % % GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS % % INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER % % IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR % % OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN % % IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Contour} \index{contour} \index{.z file} The contour block produces contour lines of a function $z = f(x,y)$. The function $f(x,y)$ is given by a .z file. The .z file format is discussed on page~\pageref{zfile:pg}. Recall that a .z file can be created from sample data points, that is $(x,y,z)$ tuples, with the {\sf fitz} block (Section~\ref{fitz:sec}), or from an implicit definition of $f(x,y)$ with a {\sf letz} block (Section~\ref{letz:sec}). \begin{minipage}[c]{8cm} \begin{Verbatim} include "contour.gle" begin contour data "saddle.z" values 0.5 1 1.5 2 3 end contour begin graph title "Saddle Plot Contour Lines" data "saddle-cdata.dat" d1 line color blue end graph contour_labels "saddle-clabels.dat" "fix 1" \end{Verbatim} \end{minipage} \hfill \begin{minipage}[c]{7cm} \mbox{\input{utilities/fig/saddle-contour.inc}} \end{minipage} The contour block can contain the following commands: \begin{commanddescription} \item[{\sf data {\it file\$}}]\index{data} Specifies the name of the .z file. \item[{\sf values $v_1,\ldots, v_n$}]\index{values} Specifies the z-values to contour at. \item[{\sf values from $v_1$ to $v_n$ step $s$}] Specifies the z-values to contour at by means of from/to/step. \item[{\sf smooth {\it integer}}]\index{smooth} Specifies the smoothing parameter. \end{commanddescription} The contour block creates the files ``data-clabels.dat'' and ``data-cdata.dat'' with the prefix ``data'' the name of the .z file. The file ``data-clabels.dat'' contains information for drawing labels on the contour plot. This is done by the subroutine {\sf contour\_labels} defined in the library ``contour.gle'' in the example above. The file ``data-cdata.dat'' contains the $(x,y)$ values of the contour lines. This file can be used as input to a graph block and plotted with the ``d1 line'' command as shown in the example above. \section{Color Maps} \label{colormap} \index{colormap} Color maps plot a function $z = f(x,y)$ by mapping $z$ to a color range. The following example combines a color map with a contour plot. \begin{minipage}[c]{8cm} \begin{Verbatim} begin contour data "volcano.z" values from 130 to 190 step 10 end contour begin graph title "Auckland's Maunga Whau Volcano" data "volcano-cdata.dat" xaxis min 0 max 20 yaxis min 0 max 20 d1 line color black colormap "volcano.z" 100 100 end graph \end{Verbatim} \end{minipage} \hfill \begin{minipage}[c]{7cm} \mbox{\input{utilities/fig/volcano.inc}} \end{minipage} The options to the colormap command are as follows: \begin{commanddescription} \item[{\sf colormap {\it fct} {\it pixels-x} {\it pixels-y} [color] [invert] [zmin $z_1$] [zmax $z_2$] [palette {\it pal}]}] \mbox{}\\ \begin{itemize} \item {\it fct} specifies the function to map. This can either be the name of a .z file, or it can be a function definition $f(x,y)$. \item {\it pixels-x}, {\it pixels-x} specify the dimension of the color map. A color map is a stored as a bitmap image and ({\it pixels-x}, {\it pixels-x}) are the resolution of this bitmap. A larger resolution yields more detail, but at the cost of longer computation time and a larger file size. \item {\it color} is an optional argument and indicates that the color map should be drawn in color (as opposed to grayscale). \item {\it invert} is an optional argument that inverts the color map. That is, large function values will be drawn in black and small function values in white. \item {\it zmin}, {\it zmax} are optional arguments that specify the range of the function. \item {\it palette} is an optional argument that specifies the palette to use. A palette is a subroutine that maps $z$ values to colors. A number of example palette subroutines are included in the library ``color.gle''. \end{itemize} \end{commanddescription} The following example is a color map of a two dimensional Gaussian. \preglegraph{} \begin{minipage}[c]{8cm} \begin{Verbatim} include "color.gle" sub gauss x y s = 0.75 return exp(-(x^2+y^2)/(2*s^2)) end sub begin graph title "2D Gaussian" xaxis min -2 max 2 yaxis min -2 max 2 colormap gauss(x,y) 200 200 zmin 0 zmax 1 color end graph amove xg(xgmax)+0.3 yg(ygmin) color_range_vertical zmin 0 zmax 1 zstep 0.1 format "fix 1" \end{Verbatim} \end{minipage} \hfill \begin{minipage}[c]{7cm} \mbox{\input{utilities/fig/gaussian.inc}} \end{minipage} \postglegraph{} gle-graphics-4.2.4c/gle-refman/utilities/fitz.tex0000644000000000000000000000713211405447072020464 0ustar rootroot%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % GLE - Graphics Layout Engine % % % % Modified BSD License % % % % Copyright (C) 2009 GLE. % % % % Redistribution and use in source and binary forms, with or without % % modification, are permitted provided that the following conditions % % are met: % % % % 1. Redistributions of source code must retain the above copyright % % notice, this list of conditions and the following disclaimer. % % % % 2. Redistributions in binary form must reproduce the above % % copyright notice, this list of conditions and the following % % disclaimer in the documentation and/or other materials provided with % % the distribution. % % % % 3. The name of the author may not be used to endorse or promote % % products derived from this software without specific prior written % % permission. % % % % THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR % % IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED % % WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE % % ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY % % DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL % % DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE % % GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS % % INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER % % IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR % % OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN % % IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Fitz} \index{fitz} \label{fitz:sec} {\sf FITZ} fits smooth curves based on a set of 3D data points. E.g., given some data points (note that each line has three values: an x, y, and z coordinate): \begin{verbatim} x y z ---- data file testf.dat ----- 1 1 1 1 2 1 2 2 1 2 1 1 1.5 1.5 2 ------------------------------ \end{verbatim} Fitz creates a ".z" file that can be used in a surface block, a colormap or contour plot. The following example illustrates this. \begin{minipage}[c]{8cm} \begin{Verbatim} begin fitz data "fitz.dat" x from 0 to 5 step 0.2 y from 0 to 5 step 0.2 ncontour 6 end fitz begin surface size 7 7 data "fitz.z" top color blue xaxis min 0 max 5 step 1 yaxis min 0 max 5 step 1 points "fitz.dat" droplines lstyle 1 marker circle view 2.5 3 0.3 harray 5000 end surface \end{Verbatim} \end{minipage} \hfill \begin{minipage}[c]{7cm} \mbox{\includegraphics{utilities/fig/fitz1}} \end{minipage} gle-graphics-4.2.4c/gle-refman/utilities/surface.tex0000644000000000000000000003144111405447072021140 0ustar rootroot%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % GLE - Graphics Layout Engine % % % % Modified BSD License % % % % Copyright (C) 2009 GLE. % % % % Redistribution and use in source and binary forms, with or without % % modification, are permitted provided that the following conditions % % are met: % % % % 1. Redistributions of source code must retain the above copyright % % notice, this list of conditions and the following disclaimer. % % % % 2. Redistributions in binary form must reproduce the above % % copyright notice, this list of conditions and the following % % disclaimer in the documentation and/or other materials provided with % % the distribution. % % % % 3. The name of the author may not be used to endorse or promote % % products derived from this software without specific prior written % % permission. % % % % THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR % % IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED % % WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE % % ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY % % DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL % % DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE % % GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS % % INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER % % IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR % % OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN % % IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \chapter{Surface and Contour Plots} \label{surf:chap} \section{Surface Primitives} \subsection{Overview} \index{Surface} Surface plots three dimensional data using a wire frame with hidden line removal. The simplist surface code would look like this. \preglecode{} \begin{Verbatim} begin surface data "myfile.z" 5 5 end surface \end{Verbatim} \postglecode{} The surface block can contain the following commands:\\ {\sf size {\it x } {\it y }}\\ {\sf cube [off] [xlen {\it v}\ ] [ylen {\it v}\ ] [zlen {\it v}\ ] [nofront] [lstyle {\it l\ }] [color {\it c\ }] }\\ {\sf data {\it myfile.z} [xsample {\it n1}\ ] [ysample {\it n2}\ ] [sample {\it n3}\ ] [nx {\it n1}\ ] [ny {\it n2}\ ] }\\ {\sf harray {\it n} \ }\\ {\sf xlines --- ylines [off]}\\ {\sf xaxis --- yaxis --- zaxis [min {\it v}\ ] [max {\it v}\ ] [step {\it v}\ ] [color {\it c}\ ] [lstyle {\it l}\ ] [hei {\it v}\ ] [off] }\\ {\sf xtitle --- ytitle --- ztitle "{\sf title}" [dist {\it v}\ ] [color {\it c}\ ] [hei {\it v}\ ] }\\ {\sf title "{\it main title}" [dist {\it v}\ ] [color {\it c}\ ] [hei {\it v}\ ] }\\ {\sf rotate $\theta$\ $\phi$\ x}\\ {\sf view x y p}\\ {\sf top --- underneath \ [off]\ [lstyle {\it n} \ ]\ [color {\it c}\ ]}\\ {\sf back [zstep {\it v}\ ] [ystep {\it v}\ ] [lstyle {\it l}\ ] [color {\it c}\ ] [nohidden] }\\ {\sf base [xstep {\it v}\ ] [ystep {\it v}\ ] [lstyle {\it l}\ ] [color {\it c}\ ] [nohidden] }\\ {\sf right [zstep {\it v}\ ] [xstep {\it v}\ ] [lstyle {\it l}\ ] [color {\it c}\ ] [nohidden] }\\ {\sf skirt on}\\ {\sf points {\it myfile.dat} }\\ {\sf marker {\it circle}\ [hei {\it v} \ ] [color {\it c} \ ] }\\ {\sf droplines --- riselines \ [color {\it c}\ ] [lstyle {\it n}\ ]}\\ {\sf zclip [min {\it v1}\ ] [max {\it v2}\ ]}\\ % % \subsection{Surface Commands} \begin{commanddescription} \item[{\sf size {\it x} \ {\it y}}] \index{size} Specifies the size in cm to draw the surface. The 3d cube will fit inside this box. The default is 18cm x 18cm e.g. \verb# size 10 10# \item[{\sf cube [off] [xlen {\it v}\ ] [ylen {\it v}\ ] [zlen {\it v}\ ] [nofront] [lstyle {\it l}\ ] [COLOR {\it c}\ ] }] Surface is drawing a 3d cube. \begin{tabular}{ll} off & Stops GLE from drawing the cube.\\ xlen & The length of the cubes x dimension in cm.\\ nofront & Removes the front three lines of the cube.\\ lstyle & Sets the line style to use drawing the cube.\\ color & Sets the color of lines to use drawing the cube.\\ \end{tabular} \begin{minipage}[c]{8cm} \begin{Verbatim} begin surface size 7 7 data "jack.z" cube zlen 13 top color orange underneath color red end surface \end{Verbatim} \end{minipage} \hfill \begin{minipage}[c]{7cm} \mbox{\includegraphics{utilities/fig/surf5}} \end{minipage} \item[{\sf data {\it myfile.z} [xsample {\it n1}\ ] [ysample {\it n2}\ ] [sample {\it n3}\ ] [nx {\it n1}\ ] [ny {\it n2}\ ]}] \index{data}\label{zfile:pg} Loads a file of Z values in. The NX and NY dimensions are optional, normally the dimensions of the data will be defined on the first line of the data file. e.g. \begin{verbatim} ! nx 10 ny 20 xmin 1 xmax 10 ymin 1 ymax 20 1 2 42 4 5 2 31 4 3 2 4 1 2 42 4 5 2 31 4 3 2 4 etc... y1,x1, y1,x2 ... y1,xn y2,x1, y2,x2 ... y2,xn . . . yn,x1, yn,x2 ... yn,xn \end{verbatim} Data files can be created using LETZ or FITZ. LETZ will create a data file from an x,y function. FITZ will create a data file from a list of x,y,z data points. \begin{tabular}{ll} xsample & Tells surface to only read every n'th data point from\\ & the data file. This speeds things up while you are\\ & messing around.\\[1.5ex] ysample & Tells surface to only read every n'th line from the\\ & data file.\\[1.5ex] sample & Sets both xsample and ysample\\ \end{tabular} (see also POINTS) \begin{minipage}[c]{8cm} \begin{Verbatim} begin surface size 5 5 xtitle "X-axis" ytitle "Y-axis" data "surf1.z" end surface \end{Verbatim} \end{minipage} \hfill \begin{minipage}[c]{7cm} \mbox{\includegraphics{utilities/fig/surf1}} \end{minipage} \item[{\sf harray {\it n}}] \index{harray} The hidden line removal is accomplished with the help of an array of heights which record the current horizon, the quality of the output is proportional to the width of this array. (also the speed of output) To get good quality you may want to increase this from the default of about 900 to 2 or 3 thousand. e.g. \verb# harray 2000# \item[{\sf xlines off}] \index{xlines} Stops SURF from drawing lines of constant X. \item[{\sf ylines off}] \index{ylines} Stops SURF from drawing lines of constant Y. \item[{\sf xaxis [min {\it v}\ ] [max {\it v}\ ] [step {\it v}\ ] [color {\it c}\ ] [lstyle {\it l}\ ] [hei {\it v}\ ] [off] }] \index{xaxis} \item[{\sf zaxis [min {\it v}\ ] [max {\it v}\ ] [step {\it v}\ ] [color {\it c}\ ] [lstyle {\it l}\ ] [hei {\it v}\ ] [off] }] \index{zaxis} \item[{\sf yaxis [min {\it v}\ ] [max {\it v}\ ] [step {\it v}\ ] [color {\it c}\ ] [lstyle {\it l}\ ] [hei {\it v}\ ] [off] }] \index{yaxis} \begin{tabular}{ll} min,max & Set the range used for labelling the axis.\\ step & The distance between labels on the axis.\\ color & The color of the axis ticks and labels.\\ lstyle & The line style used for drawing the ticks.\\ ticklen & The length of the ticks.\\ hei & The height of text used for labelling.\\ off & Stops GLE from drawing the axis.\\ \end{tabular} \begin{minipage}[c]{8cm} \begin{Verbatim} begin surface size 5 5 data "surf1.z" zaxis min -1 max 3 base xstep 0.5 ystep 0.5 back ystep 1 zstep 1 right xstep 0.5 zstep 0.5 lstyle 2 xtitle "X-axis" hei 0.3 ytitle "Y-axis" hei 0.3 end surface \end{Verbatim} \end{minipage} \hfill \begin{minipage}[c]{7cm} \mbox{\includegraphics{utilities/fig/surf2}} \end{minipage} \item[{\sf xtitle "{\sf x title}" [dist {\it v}\ ] [color {\it c}\ ] [hei {\it v}\ ]}] \index{xtitle} \item[{\sf ytitle "{\sf y title}" [dist {\it v}\ ] [color {\it c}\ ] [hei {\it v}\ ]}] \index{ytitle} \item[{\sf ztitle "{\sf z title}" [dist {\it v}\ ] [color {\it c}\ ] [hei {\it v}\ ]}] \index{ztitle} \begin{tabular}{ll} dist & Moves the title further away from the axis.\\ color & Sets the color of the title.\\ hei & Sets the hei in cm of the text used for the title.\\ \end{tabular} \item[{\sf title "{\it main title}" [dist {\it v}\ ] [color {\it c}\ ] [hei {\it v}\ ] }] \index{title} \begin{tabular}{ll} dist & Moves the title further away from the axis.\\ color & Sets the color of the title.\\ hei & Sets the hei in cm of the text used for the title.\\ \end{tabular} \item[{\sf rotate\ $\theta$\ $\phi$\ x }] \index{rotate} \begin{verbatim} rotate 10 20 30 \end{verbatim} Imagine the unit cube is sitting on the front of your terminal screen, x along the bottom, y up the left hand side, and z coming towards you. The first number (10) rotates the cube along the xaxis, ie hold the right hand side of the cube and rotate your hand clockwise 10 degrees. The second number (20) rotates the cube along the yaxis, ie hold the top of the cube and rotate it 20 degrees clockwise. The third number is currently ignored. The default setting is 60 50 0. \item[{\sf view x y p }] \index{view} Sets the perspective, this is where the cube gets smaller as the lines dissappear towards infinity. x and y are the position of infinity on your screen. p is the degree of perspective, 0 = no perspective and with 1 the back edge of the box will be touching infinitiy. Good values are between 0 and 0.6 \begin{minipage}[c]{8cm} \begin{Verbatim} begin surface size 5 5 data "surf1.z" zaxis min -1 rotate 85 85 0 view 0 5 0.7 end surface \end{Verbatim} \end{minipage} \hfill \begin{minipage}[c]{7cm} \mbox{\includegraphics{utilities/fig/surf4}} \end{minipage} \item[{\sf top [off]\ [lstyle {\it n} \ ]\ [color {\it c}\ ] }] \index{top} Sets the features of the top of the surface. By default the top is on. (see also {\sf UNDERNEATH, XLINES, YLINES}) \item[{\sf underneath [off]\ [lstyle {\it n} \ ]\ [color {\it c}\ ] }] \index{underneath} Sets the features of the under side of the surface. By default the underneath is off. (see also TOP, XLINES, YLINES) \item[{\sf back [zstep {\it v}\ ] [ystep {\it v}\ ] [lstyle {\it l}\ ] [color {\it c}\ ] [nohidden] }] \index{back} Draws a grid on the back face of the cube. By default hidden lines are removed but {\sf NOHIDDEN} will stop this from happenning. \item[{\sf base [xstep {\it v}\ ] [ystep {\it v}\ ] [lstyle {\it l}\ ] [color {\it c}\ ] [nohidden] }] \index{base} Draws a grid on the base of the cube. By default hidden lines are removed but {\sf NOHIDDEN} will stop this from happenning. \item[{\sf right [zstep {\it v}\ ] [xstep {\it v}\ ] [lstyle {\it l}\ ] [color {\it c}\ ] [nohidden] }] \index{right} Draws a grid on the right face of the cube. By default hidden lines are removed but {\sf NOHIDDEN} will stop this from happenning. \item[{\sf skirt on}] \index{skirt} Draws a skirt from the edge of the surface to {\sf ZMIN}. \begin{minipage}[c]{8cm} \begin{Verbatim} begin surface size 5 5 data "surf1.z" zaxis min -1 max 3 xtitle "X-axis" ytitle "Y-axis" ztitle "Z-axis" points "surf3.dat" riselines lstyle 2 marker fcircle skirt on rotate 60 35 0 view 2.5 3 0.6 end surface \end{Verbatim} \end{minipage} \hfill \begin{minipage}[c]{7cm} \mbox{\includegraphics{utilities/fig/surf3}} \end{minipage} \item[{\sf points {\it myfile.dat} }] \index{points} Reads in a data file which must have 3 columns (x,y,z) This is then used for plotting markers and rise and drop lines. \item[{\sf marker {\it circle}\ [hei {\it v} \ ] [color {\it c} \ ]}] \index{marker} Draws markers at the co-ordinates read from the {\sf POINTS} file. \item[{\sf droplines [color {\it c}\ ] [lstyle{\it n}\ ] }] \index{droplines} Draws lines from the co-ordinates read from the {\sf POINTS} file down to zmin. \item[{\sf riselines [color {\it c}\ ] [lstyle {\it n}\ ]}] \index{riselines} Draws lines from the co-ordinates read from the {\sf POINTS} file up to zmax. \item[{\sf zclip [min {\it v1}\ ] [max {\it v2}\ ] }] \index{zclip} {\sf ZCLIP} goes through the Z array and sets any Z value smaller than {\sf MIN} to {\it v1} and sets any value greater than {\sf MAX} to {\it v2}. \end{commanddescription} gle-graphics-4.2.4c/gle-refman/utilities/manip.tex0000644000000000000000000003700111405447072020612 0ustar rootroot%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % GLE - Graphics Layout Engine % % % % Modified BSD License % % % % Copyright (C) 2009 GLE. % % % % Redistribution and use in source and binary forms, with or without % % modification, are permitted provided that the following conditions % % are met: % % % % 1. Redistributions of source code must retain the above copyright % % notice, this list of conditions and the following disclaimer. % % % % 2. Redistributions in binary form must reproduce the above % % copyright notice, this list of conditions and the following % % disclaimer in the documentation and/or other materials provided with % % the distribution. % % % % 3. The name of the author may not be used to endorse or promote % % products derived from this software without specific prior written % % permission. % % % % THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR % % IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED % % WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE % % ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY % % DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL % % DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE % % GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS % % INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER % % IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR % % OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN % % IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%\chapter {GLE Utilities} \section{Manip} \index{Manip} % Manip is a data manipulation package. It reads in a text file of numbers and displays them like a spreadsheet. You can then do simple operations on the columns and write them out in any format you like. \subsection{Usage} \index{Manip!usage} \begin{verbatim} MANIP infile.dat -recover -step -commands c.log -single -size x y \end{verbatim} \begin{commanddescription} \item[{\sf --recover}] \index{recover} Manip logs everything you type to a file called \verb#MANIP_.J1# When you use the {\sf -RECOVER} option on the manip command it then reads keys from that file as if they were typed at the keyboard. This will restore you to the point just before your pc crashed. The last three journal files are stored (.j1 .j2 .j3) simply copy the one you want to (.j1) to use it. \item[{\sf --step}] \index{step} Used with recover, press a space for each key you want to read from the journal file, press any other key to stop reading the journal. \item[{\sf --commands {\it filename.man}}] \index{commands} This reads the commands in {\it filename.man} as if they were typed at the keyboard. \item[{\sf --single}] \index{single} This makes {\sf MANIP} use single precision arithmetic and doesn't store strings at all, this enables three times as much data in the same amount of memory \item[{\sf --size {\it x y}}] \index{size {\it x y}} Sets the initial size of the spreadsheet. Use this with large datasets as it prevents the heap from becoming fragmented and thus lets you use much larger datasets. \end{commanddescription} \subsubsection{Range} \index{Manip!Range} Most manip commands accept a range as one or more of there parameters. A range is a rectangular section of your spreadsheet. A range can ether start with a 'c' or an 'r' and this will affect how the command operates. If your spreadsheet has 5 columns and 10 rows then. \begin{verbatim} c1 == c1c1r1r10 == 1,1 1,2 1,3 1,4 1,5 1,6 ... r1 == r1r1c1c5 == 1,1 2,1 3,1 4,1 5,1 c1c2 ==c1c2r1r10 == 1,1 2,1 1,2 2,2 3,1 3,2 ... r1r2c3=r1r2c3c5 == 3,1 3,2 4,1 4,2 5,1 5,2 \end{verbatim} \subsubsection{Arrows} \index{Manip!Arrows} The arrow keys normally move the data cursor, however if you are half way thru typing a command then, the left and right arrow keys allow you to edit the command. Use the {\sf PAGE-UP} and {\sf PAGE-DOWN} keys to recall your last command. {\sf SHIFT} arrow keys will jump 7 cells at a time for fast movement.\\ Further help is available on the following toppics via the HELP command e.g. "HELP COPY" \subsection{Manip Primitives (a summary)} % %%{\sf xplaces {\it pos1 pos2 pos3 ...}} \\ % {\sf @{\it mycmds}}\\ {\sf Arrows}\\ {\sf BLANK}\\ {\sf CLEAR}\\ {\sf CLOSE}\\ {\sf COPY [{\it range}] [{\it range}] IF [{\it exp}]}\\ {\sf DATA [{\it range}]}\\ {\sf DELETE [{\it range}] IF [{\it exp}]}\\ {\sf EXIT {\it filename} [{\it range}] --TAB --SPACE --COMMA}\\ {\sf FIT {\it c3}}\\ {\sf Functions}\\ {\sf GENERATE [{\it pattern}] [{\it destination}]}\\ {\sf GOTO {\it x y}}\\ {\sf INSERT [C{\it n}] or [R{\it n}]}\\ {\sf LOAD {\it filename} [{\it range}] --0}\\ {\sf LOAD {\it filename} [{\it range}]}\\ {\sf LOGGING {\it mycmds.man}}\\ {\sf MOVE [{\it range}] [{\it range}] IF [{\it exp}]}\\ {\sf NEW}\\ {\sf PARSUM [{\it range1}] [{\it range2}]}\\ {\sf PROP [{\it range}] [{\it range}]}\\ {\sf QUIT}\\ {\sf Recover (recovering from power failure or crash)}\\ {\sf SAVE {\it filename} [{\it range}] --TAB --SPACE --COMMA}\\ {\sf SET SIZE {\it ncols nrows} }\\ {\sf SET BETWEEN " "}\\ {\sf SET COLTYPE}\\ {\sf SET COLWIDTH}\\ {\sf SET NCOL {\it n}}\\ {\sf SET DPOINTS {\it n}}\\ {\sf SET DIGITS {\it n}}\\ {\sf SET WIDTH {\it n}}\\ {\sf SHELL}\\ {\sf SORT [{\it range}] on [{\it exp}]}\\ {\sf SUM [{\it range}]}\\ {\sf SWAP C{\it n}C{\it n} | R{\it n}R{\it n}} \subsection{Manip Primitives (in detail)} % \begin{commanddescription} %%\item[{\sf data {\it filename {\sf [}d1 d2 d3 ...{\sf ] [}d1=c1,c3{\sf ]} } %%} ] %% \index{data} \item[{\sf COPY [{\it range1}] [{\it range2}] if [{\it exp}]}] \index{copy} For copying a section to another section. They do not have to be the same shape. The pointers to both rangers are increased even if the number is not coppied e.g. \begin{verbatim} "% COPY r4r2 r1r2" "% COPY c1c3r6r100 c6c8 if c13.and.r2=0 "% DELETE r1" \end{verbatim} Numbers are shuffled in from the right to take the place of the deleted range. \item[{\sf DATA [{\it range}]}] \index{data} Data entry mode is usefull for entering data. After typing in \verb#"% DATA c1c3"# or \verb#"% DATA C2"# you can then enter data and pressing {\sf } will move you to the next valid data position. In this mode text or numbers can be entered. Press {\sf ESC} to get back to command mode. \item[{\sf FIT {\it c3}}] \index{fit} \verb#"FIT C3"# will fit a least squares regression line to the data in columns c3 and c4 (x values taken from c3) and print out the results. \item[{\sf EXIT}] \index{exit} EXIT saves the data in your input file spec and exits to DOS. You can optionally specify an output file as well. eg. \verb#"% EXIT myfile.dat"# The command \verb#"EXIT myfile.dat c3c5r1r3"# will write out that range of numbers to the file. By default manip will write columns seperated by spaces. The command \verb#"EXIT myfile.dat -TAB"# will put a single tab between each column of numbers and \verb#"EXIT myfile.dat -COMMA"# will put a comma and a space between each number. (these two options are usefull if your data file is very big and you don't want to waste diskspace with the space characters.) Note: The settings stay in effect for future saves and exits. You can make it line up the columns on the decimal point by typing in the command. \verb#"SET DPOINTS 3"# You change the width of each column or completely remove the spaces between columns with the command. \verb#"SET WIDTH 10"# (or set width 0) You can change the number of significant digits displayed with the command \verb#"SET DIGITS 4"# \item[{\sf SAVE {\it myfile.dat}}] \index{save} Saves all or part of your data. The command \verb#"SAVE myfile.dat c3c5r1r3"# will write out that range of numbers to the file. By default manip will write columns seperated by spaces. The command \verb#"SAVE myfile.dat -TAB"# will put a single tab between each column of numbers and \verb#"SAVE myfile.dat -COMMA"# will put a comma and a space between each number. (these two options are usefull if your data file is very big and you don't want to waste diskspace with the space characters). Further options are the same like {\sf EXIT} \item[{\sf GOTO}] \index{goto} For moving the cursor directly to a point in your array. e.g. \verb#"% GOTO x y"# \item[{\sf CLEAR}] \index{clear} \verb#"% CLEAR C2C3"# Clears the given range of all values \item[{\sf BLANK}] \index{BLANK} \verb#"% BLANK C2C3"# Clears the given range of all values \item[{\sf NEW}] \index{new} Clears the spread sheet of all data and frees memory. \item[{\sf INSERT}] \index{insert} Inserts a new column or row and shifts all others over. e.g.\verb#"% INSERT c5" or "% INSERT r2"#. \item[{\sf LOAD}] \index{load} Load data into columns. eg. \verb#"% LOAD filename"# loads all data into corresponding columns. \verb#"% LOAD filename c3"# load first column of data into c3 etc. \verb# "LOAD myfile.dat c3 -LIST"# This commmand will load the the data into a single column or range (even if it is several columns wide in the data file) \item[{\sf MOVE [{\it range1}] [{\it range2}] if [{\it exp}]}] \index{move} For copying a section to another section. They do not have to be the same shape. The pointer to the destination is only increased if the line or column is coppied e.g. \begin{verbatim} "% MOVE c1 c2c3" "% MOVE r4r2 r1r2" "% MOVE c1c3r6r100 c6c8 if c1 2.200 234 -> 234.000 \end{verbatim} (See also {\sf SET COLTYPE}) \item[{\sf SET DIGITS {\it n}}] \index{set digits} Sets the number of significat digits to be displayed, e.g. with \verb#DIGITS 3#. \begin{verbatim} 123456 becomes 123000 0.12345 becomes 0.123 \end{verbatim} \item[{\sf SET WIDTH {\it n}}] \index{set width} Sets the width of padding to use for the columns when they are written to a file. The columns usually one space wider than this setting as the {\sf BETWEEN} string is usually set to one space by default. \item[{\sf LOGGING}] \index{logging} For creating command files. e.g. \begin{verbatim} "% LOG sin.man" "% c2=sin(c1) "% c3=c2+2 "% close" \end{verbatim} Then type in \verb#"@sin"# to execute these commands. \item[{\sf PROPAGATE [{\it source}] [{\it destination}]}] \index{propagate} This command has the same format as move. The difference is that the source is coppied as many times as possible to fill up the destination. e.g. \verb#"% PROP c1r1r7 c2"# \item[{\sf SUM [{\it range}]}] \index{sum} Adds up all the numbers in a range and displays the total and average. e.g. \verb#"% SUM C1C3"# \item[{\sf PARSUM [{\it range1}] [{\it range2}]}] \index{parsum} Adds up one coloumn, putting the partial sum's into another coloumn. e.g. \verb# 1,2,3,4# becomes \verb# 1,3,6,10#. \item[{\sf GENERATE [{\it pattern}] [{\it destination}]}] \index{generate} For generating a patter of data e.g. \verb# 1 1 2 2 5 5 1 1 2 2 5 5# etc. \begin{verbatim} "% GEN 2(1,2,5)30 c4" !1 1 2 2 5 5 repeated 30 times "% GEN (1:100:5)5 c1" !1 to 100 step 5, 5 times "% GEN (1,2,*,3:5)5 c1" !missing values included \end{verbatim} \item[Functions] \index{Functions} Calculations can be performed on rows or columns. eg \verb#"% C1=C2*3+R"# where "R" stands for row-number and C1 and C2 are columns. They can also be performed on {\sf ROWS}. eg \begin{verbatim} r1=sin(r2)+log10(c) c1 = cell(c+1,r)+cell(c+2,r) cell(1,3) = 33.3 3+4*COS(PI/180)^(3+1/30)+C1+R \end{verbatim} Valid operators and functions: %%\begin{verbatim} {\tt \begin{center} \begin{tabular}{ccccccc} $,$ & $+$ & $-$ & \verb#^# & $*$ & $/$ & $<=$ \\ $>=$ & $<>$ & $<$ & $>$ & $=$ & )AND(& )OR( \\ ABS( & ATN( & COS( & EXP( & FIX( & INT( & LOG( \\ LOG10( & SGN( & SIN( & SQR( & TAN( & NOT( & RND( \\ SQRT( & .NE. & .EQ. & .LT. & .GT. & .LE. & .GE. \\ .NOT. & .AND.& .OR. & & & & \\ \end{tabular} \end{center} } %%\end{verbatim} \item[{\sf QUIT}] \index{quit} Abandon file. \item[{\sf SHELL}] \index{shell} Gives access to DOS. \end{commanddescription} gle-graphics-4.2.4c/gle-refman/utilities/fig/fitz1/fitz1.dat0000644000000000000000000000546211405447072022323 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 0 0 1 1 1 1.5 1 4 1 4 4 .5 4 1 1 2 2 2 3 3 1 4.5 4.5 1 gle-graphics-4.2.4c/gle-refman/utilities/fig/fitz1/fitz1.z0000644000000000000000000001073411405447072022022 0ustar rootroot! nx 15 ny 15 xmin 0 xmax 4.5 ymin 0 ymax 4.5 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 1 0.943856 0.893036 0.866349 0.873519 0.916502 0.990809 1.08683 1.19115 1.28788 1.35997 1.39051 1.36411 1.26816 1.09418 1.17731 1.14366 1.13457 1.10171 1.08472 1.1155 1.16893 1.23632 1.30576 1.36347 1.39505 1.38684 1.32725 1.20808 1.02594 1.31767 1.28227 1.29064 1.40552 1.48922 1.50502 1.4597 1.39475 1.37764 1.40216 1.39992 1.36044 1.2759 1.14241 0.9625 1.43027 1.419 1.33696 1.44853 1.65317 1.83111 1.93014 1.9328 1.84758 1.70013 1.5245 1.35439 1.21432 1.07505 0.904688 1.52038 1.53375 1.39873 1.4128 1.61088 1.82272 1.96043 1.99984 1.94272 1.80802 1.62309 1.4149 1.20128 1.01232 0.853063 1.59009 1.61103 1.4845 1.38952 1.57858 1.85156 2.04794 2.13525 2.10425 1.9629 1.72754 1.42712 1.14454 0.953027 0.811418 1.63913 1.66237 1.5809 1.39148 1.55565 1.83929 2.01552 2.0957 2.07872 1.93607 1.6648 1.34335 1.1008 0.881495 0.782872 1.66562 1.68608 1.65799 1.41489 1.54303 1.79905 1.92354 1.96802 1.9389 1.7789 1.51507 1.24497 1.05807 0.798603 0.768357 1.66686 1.67998 1.67464 1.44479 1.53045 1.73101 1.79952 1.79277 1.70632 1.54604 1.33535 1.15947 0.976293 0.710258 0.7672 1.64009 1.64218 1.62799 1.46034 1.50183 1.62947 1.64008 1.56667 1.43712 1.29286 1.15907 1.0517 0.871753 0.62548 0.71729 1.58329 1.57189 1.54659 1.44027 1.44057 1.48828 1.4336 1.31854 1.18905 1.08056 1 0.91348 0.761947 0.554489 0.599693 1.49597 1.47014 1.43299 1.36817 1.335 1.30578 1.20947 1.09747 1.00498 0.932012 0.860578 0.778167 0.663657 0.50679 0.476827 1.37991 1.34059 1.29272 1.23788 1.18368 1.10851 1.02124 0.946306 0.8788 0.814257 0.74776 0.674618 0.59104 0.489267 0.408486 1.23997 1.19032 1.13504 1.07533 1.01157 0.946081 0.883998 0.826525 0.773068 0.721907 0.670873 0.618021 0.562308 0.504263 0.449928 1.08485 1.03063 0.97375 0.914375 0.855139 0.80994 0.788222 0.791876 0.81712 0.803 0.722751 0.620971 0.543156 0.536378 0.64996 gle-graphics-4.2.4c/gle-refman/utilities/fig/fitz1/fitz1.sur0000644000000000000000000000553111405447072022361 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! begin surface size 5 5 data fitz1.z xaxis step 1 hei .2 yaxis step 1 hei .2 zaxis step .5 hei .2 zaxis min 0 max 2 points fitz1.dat droplines lstyle 1 marker circle view 2.5 3 .3 end surface gle-graphics-4.2.4c/gle-refman/utilities/fig/fitz1/fitz1.big0000644000000000000000000004537611405447072022324 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! amove 2.5 3 set hei 0.3 set color BLACK set lstyle 1 set color BLACK set lstyle 1 amove 2.38889 2.12305 aline 2.53333 2.08167 amove 2.53333 2.08167 aline 2.67222 2.0471 amove 2.67222 2.0471 aline 2.81111 2.02005 amove 2.81111 2.02005 aline 2.94444 2.00089 amove 2.94444 2.00089 aline 3.07778 1.99375 amove 3.07778 1.99375 aline 3.20556 2.0018 amove 3.20556 2.0018 aline 3.33333 2.02566 amove 3.33333 2.02566 aline 3.46111 2.06415 amove 3.46111 2.06415 aline 3.58333 2.04739 amove 3.58333 2.04739 aline 3.69444 1.9564 amove 3.69444 1.9564 aline 3.81111 1.86209 amove 3.81111 1.86209 aline 3.92222 1.82835 amove 3.92222 1.82835 aline 4.03889 1.91161 amove 4.03889 1.91161 aline 4.16111 2.16261 amove 2.38889 2.12305 aline 2.28333 2.39516 amove 2.53333 2.08167 aline 2.42778 2.36062 amove 2.67222 2.0471 aline 2.57222 2.32016 amove 2.81111 2.02005 aline 2.71111 2.27866 amove 2.94444 2.00089 aline 2.84444 2.2436 amove 3.07778 1.99375 aline 2.97778 2.21336 amove 3.20556 2.0018 aline 3.10556 2.16977 amove 3.33333 2.02566 aline 3.22778 2.11437 amove 3.46111 2.06415 aline 3.35 2.05424 amove 3.58333 2.04739 aline 3.58333 2.04739 amove 3.69444 1.9564 aline 3.69444 1.9564 amove 3.81111 1.86209 aline 3.81111 1.86209 amove 3.92222 1.82835 aline 3.81667 1.96786 amove 4.03889 1.91161 aline 3.93333 2.02144 amove 4.16111 2.16261 aline 4.04444 2.09219 amove 2.28333 2.39516 aline 2.42778 2.36062 amove 2.42778 2.36062 aline 2.56667 2.32171 amove 2.57222 2.32016 aline 2.70556 2.28032 amove 2.71111 2.27866 aline 2.84444 2.2436 amove 2.84444 2.2436 aline 2.97778 2.21336 amove 2.97778 2.21336 aline 3.10556 2.16977 amove 3.10556 2.16977 aline 3.22222 2.11689 amove 3.22778 2.11437 aline 3.34444 2.05697 amove 3.35 2.05424 aline 3.35 2.05424 amove 3.70556 1.94918 aline 3.81111 1.96692 amove 3.81667 1.96786 aline 3.93333 2.02144 amove 3.93333 2.02144 aline 4.04444 2.09219 amove 2.28333 2.39516 aline 2.18333 2.56714 amove 2.42778 2.36062 aline 2.32778 2.55921 amove 2.57222 2.32016 aline 2.46667 2.53395 amove 2.71111 2.27866 aline 2.60556 2.49707 amove 2.84444 2.2436 aline 2.74444 2.51827 amove 2.97778 2.21336 aline 2.87222 2.488 amove 3.10556 2.16977 aline 3.00556 2.47339 amove 3.22778 2.11437 aline 3.13333 2.46025 amove 3.35 2.05424 aline 3.25556 2.4034 amove 3.45 2.0713 aline 3.37222 2.32267 amove 3.55556 2.05338 aline 3.48889 2.23823 amove 3.69444 1.96119 aline 3.60556 2.16827 amove 3.81667 1.96786 aline 3.71667 2.1272 amove 3.93333 2.02144 aline 3.82778 2.13309 amove 4.04444 2.09219 aline 3.93889 2.14885 amove 2.18333 2.56714 aline 2.32778 2.55921 amove 2.32778 2.55921 aline 2.46111 2.53496 amove 2.46667 2.53395 aline 2.6 2.49855 amove 2.60556 2.49707 aline 2.73889 2.51742 amove 2.74444 2.51827 aline 2.87222 2.488 amove 2.87222 2.488 aline 3.00556 2.47339 amove 3.00556 2.47339 aline 3.13333 2.46025 amove 3.13333 2.46025 aline 3.25556 2.4034 amove 3.25556 2.4034 aline 3.37222 2.32267 amove 3.37222 2.32267 aline 3.48333 2.24225 amove 3.48889 2.23823 aline 3.6 2.1716 amove 3.60556 2.16827 aline 3.71667 2.1272 amove 3.71667 2.1272 aline 3.82778 2.13309 amove 3.82778 2.13309 aline 3.93889 2.14885 amove 2.18333 2.56714 aline 2.08333 2.65048 amove 2.32778 2.55921 aline 2.22778 2.68201 amove 2.46667 2.53395 aline 2.36667 2.68557 amove 2.60556 2.49707 aline 2.50556 2.7133 amove 2.74444 2.51827 aline 2.64444 2.81938 amove 2.87222 2.488 aline 2.77778 2.86695 amove 3.00556 2.47339 aline 2.90556 2.80168 amove 3.13333 2.46025 aline 3.03333 2.72125 amove 3.25556 2.4034 aline 3.15556 2.65738 amove 3.37222 2.32267 aline 3.27778 2.57026 amove 3.48889 2.23823 aline 3.39444 2.45207 amove 3.60556 2.16827 aline 3.50556 2.3402 amove 3.71667 2.1272 aline 3.61667 2.26481 amove 3.82778 2.13309 aline 3.72778 2.24022 amove 3.93889 2.14885 aline 3.83889 2.2778 amove 2.08333 2.65048 aline 2.22778 2.68201 amove 2.22778 2.68201 aline 2.36111 2.68543 amove 2.36667 2.68557 aline 2.5 2.71219 amove 2.50556 2.7133 aline 2.63889 2.81514 amove 2.64444 2.81938 aline 2.77222 2.86497 amove 2.77778 2.86695 aline 2.90556 2.80168 amove 2.90556 2.80168 aline 3.03333 2.72125 amove 3.03333 2.72125 aline 3.15 2.66028 amove 3.15556 2.65738 aline 3.27778 2.57026 amove 3.27778 2.57026 aline 3.39444 2.45207 amove 3.39444 2.45207 aline 3.50556 2.3402 amove 3.50556 2.3402 aline 3.61111 2.26858 amove 3.61667 2.26481 aline 3.72778 2.24022 amove 3.72778 2.24022 aline 3.83333 2.27592 amove 2.08333 2.65048 aline 1.98889 2.66287 amove 2.22778 2.68201 aline 2.12778 2.74034 amove 2.36667 2.68557 aline 2.27222 2.78051 amove 2.50556 2.7133 aline 2.40556 2.96232 amove 2.64444 2.81938 aline 2.54444 3.11152 amove 2.77778 2.86695 aline 2.67778 3.26615 amove 2.90556 2.80168 aline 2.81111 3.2208 amove 3.03333 2.72125 aline 2.93333 3.07554 amove 3.15556 2.65738 aline 3.06111 2.9005 amove 3.27778 2.57026 aline 3.17778 2.73464 amove 3.39444 2.45207 aline 3.29444 2.59245 amove 3.50556 2.3402 aline 3.40556 2.47525 amove 3.61667 2.26481 aline 3.51667 2.38913 amove 3.72778 2.24022 aline 3.62778 2.34239 amove 3.83889 2.2778 aline 3.73889 2.42937 amove 1.98889 2.66287 aline 2.12222 2.73724 amove 2.12778 2.74034 aline 2.27222 2.78051 amove 2.27222 2.78051 aline 2.4 2.95475 amove 2.40556 2.96232 aline 2.53889 3.10555 amove 2.54444 3.11152 aline 2.67222 3.25971 amove 2.67778 3.26615 aline 2.80556 3.22269 amove 2.81111 3.2208 aline 2.92778 3.08214 amove 2.93333 3.07554 aline 3.05556 2.90811 amove 3.06111 2.9005 aline 3.17778 2.73464 amove 3.17778 2.73464 aline 3.29444 2.59245 amove 3.29444 2.59245 aline 3.4 2.48111 amove 3.40556 2.47525 aline 3.51667 2.38913 amove 3.51667 2.38913 aline 3.62222 2.34472 amove 3.62778 2.34239 aline 3.73333 2.42502 amove 1.98889 2.66287 aline 1.89444 2.62546 amove 2.12778 2.74034 aline 2.03333 2.74997 amove 2.27222 2.78051 aline 2.17222 2.82935 amove 2.40556 2.96232 aline 2.31111 3.21503 amove 2.54444 3.11152 aline 2.44444 3.37321 amove 2.67778 3.26615 aline 2.57778 3.58631 amove 2.81111 3.2208 aline 2.71111 3.58015 amove 2.93333 3.07554 aline 2.83889 3.4212 amove 3.06111 2.9005 aline 2.96111 3.18057 amove 3.17778 2.73464 aline 3.08333 2.92569 amove 3.29444 2.59245 aline 3.19444 2.724 amove 3.40556 2.47525 aline 3.31111 2.59634 amove 3.51667 2.38913 aline 3.42222 2.50433 amove 3.62778 2.34239 aline 3.52778 2.44077 amove 3.73889 2.42937 aline 3.64444 2.55643 amove 1.89444 2.62546 aline 2.03333 2.74997 amove 2.03333 2.74997 aline 2.17222 2.82935 amove 2.17222 2.82935 aline 2.30556 3.19961 amove 2.31111 3.21503 aline 2.44444 3.37321 amove 2.44444 3.37321 aline 2.57778 3.58631 amove 2.57778 3.58631 aline 2.70556 3.5804 amove 2.71111 3.58015 aline 2.83333 3.42811 amove 2.83889 3.4212 aline 2.96111 3.18057 amove 2.96111 3.18057 aline 3.08333 2.92569 amove 3.08333 2.92569 aline 3.18889 2.73408 amove 3.19444 2.724 aline 3.30556 2.60242 amove 3.31111 2.59634 aline 3.42222 2.50433 amove 3.42222 2.50433 aline 3.52222 2.44412 amove 3.52778 2.44077 aline 3.64444 2.55643 amove 1.89444 2.62546 aline 1.80556 2.56045 amove 2.03333 2.74997 aline 1.94444 2.72881 amove 2.17222 2.82935 aline 2.08333 2.84578 amove 2.31111 3.21503 aline 2.21111 3.43109 amove 2.44444 3.37321 aline 2.35 3.57189 amove 2.57778 3.58631 aline 2.48333 3.79086 amove 2.71111 3.58015 aline 2.61667 3.78425 amove 2.83889 3.4212 aline 2.74444 3.64361 amove 2.96111 3.18057 aline 2.86667 3.40085 amove 3.08333 2.92569 aline 3.08333 2.92569 amove 3.19444 2.724 aline 3.19444 2.724 amove 3.31111 2.59634 aline 3.21111 2.71693 amove 3.42222 2.50433 aline 3.32222 2.61545 amove 3.52778 2.44077 aline 3.43333 2.53746 amove 3.64444 2.55643 aline 3.54444 2.61363 amove 1.80556 2.56045 aline 1.93889 2.72207 amove 1.94444 2.72881 aline 2.07778 2.8411 amove 2.08333 2.84578 aline 2.21111 3.43109 amove 2.21111 3.43109 aline 2.35 3.57189 amove 2.35 3.57189 aline 2.48333 3.79086 amove 2.48333 3.79086 aline 2.61667 3.78425 amove 2.61667 3.78425 aline 2.74444 3.64361 amove 2.74444 3.64361 aline 2.86111 3.41188 amove 2.86667 3.40085 aline 2.86667 3.40085 amove 3.13889 2.82515 aline 3.21111 2.71693 amove 3.21111 2.71693 aline 3.31667 2.62052 amove 3.32222 2.61545 aline 3.43333 2.53746 amove 3.43333 2.53746 aline 3.54444 2.61363 amove 1.80556 2.56045 aline 1.72222 2.48885 amove 1.94444 2.72881 aline 1.85556 2.69478 amove 2.08333 2.84578 aline 1.98889 2.90973 amove 2.21111 3.43109 aline 2.11667 3.56982 amove 2.35 3.57189 aline 2.25556 3.67515 amove 2.48333 3.79086 aline 2.38889 3.86045 amove 2.61667 3.78425 aline 2.51667 3.83669 amove 2.74444 3.64361 aline 2.74444 3.64361 amove 2.86667 3.40085 aline 2.86667 3.40085 amove 3.21111 2.71693 aline 3.12222 2.856 amove 3.32222 2.61545 aline 3.23333 2.72768 amove 3.43333 2.53746 aline 3.33889 2.63472 amove 3.54444 2.61363 aline 3.45 2.6298 amove 1.72222 2.48885 aline 1.85556 2.69478 amove 1.85556 2.69478 aline 1.98333 2.90077 amove 1.98889 2.90973 aline 2.11111 3.54112 amove 2.11667 3.56982 aline 2.25 3.67093 amove 2.25556 3.67515 aline 2.38889 3.86045 amove 2.38889 3.86045 aline 2.51667 3.83669 amove 2.51667 3.83669 aline 2.51667 3.83669 amove 3.1 2.89545 aline 3.12222 2.856 amove 3.12222 2.856 aline 3.22778 2.73409 amove 3.23333 2.72768 aline 3.33889 2.63472 amove 3.33889 2.63472 aline 3.45 2.6298 amove 1.72222 2.48885 aline 1.63889 2.42888 amove 1.85556 2.69478 aline 1.77222 2.66408 amove 1.98889 2.90973 aline 1.9 3.02697 amove 2.11667 3.56982 aline 2.02778 3.60203 amove 2.25556 3.67515 aline 2.16111 3.66269 amove 2.38889 3.86045 aline 2.29444 3.7893 amove 2.51667 3.83669 aline 2.51667 3.83669 amove 3.12222 2.856 aline 3.12222 2.856 amove 3.23333 2.72768 aline 3.13889 2.84562 amove 3.33889 2.63472 aline 3.25 2.73429 amove 3.45 2.6298 aline 3.35556 2.66719 amove 1.63889 2.42888 aline 1.77222 2.66408 amove 1.77222 2.66408 aline 1.9 3.02697 amove 1.9 3.02697 aline 2.02222 3.57703 amove 2.02778 3.60203 aline 2.16111 3.66269 amove 2.16111 3.66269 aline 2.29444 3.7893 amove 2.29444 3.7893 aline 2.29444 3.7893 amove 3.07778 2.9379 aline 3.13889 2.84562 amove 3.13889 2.84562 aline 3.24444 2.73986 amove 3.25 2.73429 aline 3.35 2.67072 amove 1.63889 2.42888 aline 1.56111 2.39477 amove 1.77222 2.66408 aline 1.68889 2.64981 amove 1.9 3.02697 aline 1.81111 3.1196 amove 2.02778 3.60203 aline 1.93889 3.52145 amove 2.16111 3.66269 aline 2.16111 3.66269 amove 2.29444 3.7893 aline 2.29444 3.7893 amove 3.13889 2.84562 aline 3.13889 2.84562 amove 3.25 2.73429 aline 3.15556 2.83676 amove 3.35556 2.66719 aline 3.26111 2.72895 amove 1.56111 2.39477 aline 1.68333 2.63872 amove 1.68889 2.64981 aline 1.81111 3.1196 amove 1.81111 3.1196 aline 1.93333 3.50398 amove 1.93889 3.52145 aline 1.93889 3.52145 amove 3.07778 2.93808 aline 3.15 2.84399 amove 3.15556 2.83676 aline 3.26111 2.72895 amove 1.56111 2.39477 aline 1.47778 2.39579 amove 1.68889 2.64981 aline 1.60556 2.66083 amove 1.81111 3.1196 aline 1.72778 3.14142 amove 1.93889 3.52145 aline 1.85556 3.35393 amove 3.15556 2.83676 aline 3.15556 2.83676 amove 3.26111 2.72895 aline 3.26111 2.72895 amove 1.47778 2.39579 aline 1.6 2.64931 amove 1.60556 2.66083 aline 1.72778 3.14142 amove 1.72778 3.14142 aline 1.85556 3.35393 amove 1.85556 3.35393 aline 1.85556 3.35393 amove 1.47778 2.39579 aline 1.4 2.43539 amove 1.60556 2.66083 aline 1.52778 2.72356 amove 1.72778 3.14142 aline 1.65 3.08737 amove 1.85556 3.35393 aline 1.85556 3.35393 amove 1.4 2.43539 aline 1.52778 2.72356 amove 1.52778 2.72356 aline 1.64444 3.07083 amove 1.65 3.08737 aline 1.65 3.08737 amove 1.4 2.43539 aline 1.32222 2.51026 amove 1.52778 2.72356 aline 1.44444 2.80207 amove 1.65 3.08737 aline 1.57222 3.00099 amove 1.32222 2.51026 aline 1.44444 2.80207 amove 1.44444 2.80207 aline 1.56667 2.99234 amove 1.57222 3.00099 aline 1.57222 3.00099 amove 1.32222 2.51026 aline 1.24444 2.60923 amove 1.44444 2.80207 aline 1.36667 2.85348 amove 1.57222 3.00099 aline 1.49444 3.03129 amove 1.67778 3.11572 aline 1.62222 3.2059 amove 1.78889 3.25872 aline 1.74444 3.35563 amove 1.88889 3.42959 aline 1.87222 3.46376 amove 1.24444 2.60923 aline 1.36667 2.85348 amove 1.36667 2.85348 aline 1.49444 3.03129 amove 1.49444 3.03129 aline 1.62222 3.2059 amove 1.62222 3.2059 aline 1.74444 3.35563 amove 1.74444 3.35563 aline 1.86667 3.45906 amove 1.87222 3.46376 aline 1.92778 3.49973 amove 1.24444 2.60923 aline 1.16667 2.71194 amove 1.36667 2.85348 aline 1.29444 2.92985 amove 1.49444 3.03129 aline 1.41667 3.10749 amove 1.62222 3.2059 aline 1.53889 3.25433 amove 1.74444 3.35563 aline 1.66667 3.37596 amove 1.87222 3.46376 aline 1.78889 3.47467 amove 1.96111 3.54588 aline 1.91111 3.55037 amove 1.16667 2.71194 aline 1.29444 2.92985 amove 1.29444 2.92985 aline 1.41667 3.10749 amove 1.41667 3.10749 aline 1.53333 3.24766 amove 1.53889 3.25433 aline 1.66667 3.37596 amove 1.66667 3.37596 aline 1.78333 3.47019 amove 1.78889 3.47467 aline 1.91111 3.55037 amove 1.91111 3.55037 aline 2.01667 3.59438 set color BLACK set lstyle 1 set color BLACK set lstyle 1 amove 4.12222 1.4826 aline 3.13889 1.9976 amove 2.52778 2.08327 aline 1.21111 1.6906 amove 1.16111 2.81201 aline 1.11667 3.80881 amove 1.21111 1.6906 aline 1.11667 3.80881 amove 1.11667 3.80881 aline 2.84444 4.09087 amove 1.11667 3.80881 aline 1.16111 3.81607 amove 2.84444 4.09087 aline 2.83333 3.46705 amove 2.84444 4.09087 aline 4.24444 3.68445 amove 4.16667 3.70703 aline 4.24444 3.68445 amove 4.24444 3.68445 aline 4.15556 2.15926 amove 4.24444 3.68445 aline 4.16111 2.16261 amove 4.15556 2.1512 aline 4.12222 1.4826 amove 1.21631 1.6906 aline 2.39531 0.829544 amove 2.39531 0.829544 aline 4.12386 1.4826 set just BC set color BLACK set hei 0.2 set just TC amove 1.21631 1.6906 aline 1.21336 1.68656 amove 1.15439 1.6058 rotate -36.1417 text 0 rotate 36.1417 amove 1.44599 1.52286 aline 1.44304 1.51882 amove 1.38407 1.43806 rotate -36.1417 text 1 rotate 36.1417 amove 1.69245 1.34286 aline 1.68951 1.33882 amove 1.63053 1.25807 rotate -36.1417 text 2 rotate 36.1417 amove 1.95761 1.14921 aline 1.95466 1.14517 amove 1.89568 1.06442 rotate -36.1417 text 3 rotate 36.1417 amove 2.24366 0.940299 aline 2.24071 0.936261 amove 2.18173 0.855505 rotate -36.1417 text 4 rotate 36.1417 set just TC set color BLACK set hei 0.2 set just TC amove 2.39531 0.829544 aline 2.39708 0.824866 amove 2.43242 0.73132 rotate 20.697 text 0 rotate -20.697 amove 2.8176 0.989086 aline 2.81936 0.984409 amove 2.8547 0.890863 rotate 20.697 text 1 rotate -20.697 amove 3.21657 1.13982 aline 3.21833 1.13514 amove 3.25368 1.0416 rotate 20.697 text 2 rotate -20.697 amove 3.59411 1.28246 aline 3.59587 1.27778 amove 3.63122 1.18423 rotate 20.697 text 3 rotate -20.697 amove 3.95189 1.41763 aline 3.95366 1.41296 amove 3.989 1.31941 rotate 20.697 text 4 rotate -20.697 set just TC set color BLACK set hei 0.2 set just RC amove 1.21631 1.6906 aline 1.21132 1.69037 amove 1.11142 1.6859 text 0 amove 1.19382 2.19232 aline 1.18883 2.1921 amove 1.08893 2.18762 text 0.5 amove 1.17053 2.71194 aline 1.16554 2.71171 amove 1.06564 2.70723 text 1 amove 1.1464 3.25042 aline 1.1414 3.25019 amove 1.0415 3.24571 text 1.5 amove 1.12137 3.80881 aline 1.11638 3.80859 amove 1.01648 3.80411 text 2 set just BC set color BLACK set lstyle 1 set color BLACK set lstyle 1 set color BLACK set lstyle 1 set color BLACK set hei 0.0833333 amove 1.17053 2.71194 marker CIRCLE amove 1.80496 3.21871 marker CIRCLE amove 2.93054 2.94741 marker CIRCLE amove 3.81176 2.02473 marker CIRCLE amove 2.66861 2.22423 marker CIRCLE amove 2.47626 3.75495 marker CIRCLE amove 3.14986 2.60065 marker CIRCLE amove 4.18439 2.54248 marker CIRCLE set color BLACK set lstyle 1 amove 1.17053 2.71194 aline 1.21631 1.6906 amove 1.80496 3.21871 aline 1.84119 1.6459 amove 2.93054 2.94741 aline 2.91662 1.98071 amove 3.81176 2.02473 aline 3.78831 1.50661 amove 2.66861 2.22423 aline 2.66208 1.0937 amove 2.47626 3.75495 aline 2.47792 1.60035 amove 3.14986 2.60065 aline 3.12684 1.55393 amove 4.18439 2.54248 aline 4.12386 1.4826 gle-graphics-4.2.4c/gle-refman/utilities/fig/xyz.gle0000644000000000000000000000600311405447072021052 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! size 12 13 amove 0 5 begin scale 10.9/24 8.2/18 begin graph size 24 18 nobox xaxis min 0 max 6 yaxis min 0 max 10 data "xyz/xyz.dat" d1 lstyle 1 end graph save theorigin set hei .3 just cc include "xyz/xyz.lab" move theorigin set hei .3 just left include "xyz/xyz.key" end scale amove 6 0 begin origin !box 6 6 translate 0 -.6 include "xyz/xyz.big" end origin gle-graphics-4.2.4c/gle-refman/utilities/fig/jack.gle0000644000000000000000000000531611405447072021136 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! size 7 5 begin origin box 5 5 include jack/jack.big end origin gle-graphics-4.2.4c/gle-refman/utilities/fig/Makefile.os20000664000000000000000000000553011405447072021677 0ustar rootroot######################################################################## # # # GLE - Graphics Layout Engine # # # # Modified BSD License # # # # Copyright (C) 2009 GLE. # # # # Redistribution and use in source and binary forms, with or without # # modification, are permitted provided that the following conditions # # are met: # # # # 1. Redistributions of source code must retain the above copyright # # notice, this list of conditions and the following disclaimer. # # # # 2. Redistributions in binary form must reproduce the above # # copyright notice, this list of conditions and the following # # disclaimer in the documentation and/or other materials provided with # # the distribution. # # # # 3. The name of the author may not be used to endorse or promote # # products derived from this software without specific prior written # # permission. # # # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR # # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY # # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE # # GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER # # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN # # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # # ######################################################################## EPSS = xyz.eps fitls.eps fitz1.eps jack.eps saddle.eps \ surf1.eps surf2.eps surf3.eps surf4.eps surf5.eps surf5b.eps all: $(EPSS) %.eps: %.gle gle -d eps $< clean: rm -rf *.eps *.pdf *.inc gle-graphics-4.2.4c/gle-refman/utilities/fig/surf/surf3.sur0000644000000000000000000000552411405447072022312 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! begin surface size 5 5 data surf1.z zaxis min -1 max 3 xtitle "Xaxis" ztitle "Zaxis" points surf3.dat riselines lstyle 2 marker fcircle skirt on rotate 80 30 0 view 2.5 3 .6 end surface gle-graphics-4.2.4c/gle-refman/utilities/fig/surf/surf3.big0000644000000000000000000002050211405447072022233 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! amove 2.5 3 set hei 0.3 set color BLACK set lstyle 1 set color BLACK set lstyle 1 amove 3.11556 2.3656 aline 2.57778 2.47301 amove 2.57778 2.47301 aline 2.13778 2.56031 amove 2.13778 2.56031 aline 1.77778 2.63267 amove 1.77778 2.63267 aline 1.47111 2.69363 amove 3.11556 2.3656 aline 3.30667 2.57064 amove 2.57778 2.47301 aline 2.84889 2.64132 amove 2.13778 2.56031 aline 2.46222 2.95762 amove 1.77778 2.63267 aline 2.13333 2.75199 amove 1.47111 2.69363 aline 1.84444 2.79612 amove 3.30667 2.57064 aline 2.84889 2.64132 amove 2.84889 2.64132 aline 2.46222 2.95762 amove 2.46222 2.95762 aline 2.13778 2.75477 amove 2.13333 2.75199 aline 1.84889 2.79545 amove 3.30667 2.57064 aline 3.43556 2.70817 amove 2.84889 2.64132 aline 3.05333 3.23736 amove 2.46222 2.95762 aline 2.69333 2.80151 amove 2.13333 2.75199 aline 2.13333 2.75199 amove 1.84444 2.79612 aline 2.12889 2.87283 amove 3.43556 2.70817 aline 3.05778 3.2312 amove 3.05333 3.23736 aline 2.69333 2.80151 amove 2.69333 2.80151 aline 2.69333 2.80151 amove 2.28889 2.85243 aline 2.12889 2.87283 amove 3.43556 2.70817 aline 3.52444 2.80681 amove 3.05333 3.23736 aline 3.05333 3.23736 amove 2.69333 2.80151 aline 2.69333 2.80151 amove 2.56 2.89581 aline 2.59111 2.9062 amove 2.12889 2.87283 aline 2.34667 2.93239 amove 3.52444 2.80681 aline 3.35111 2.82543 amove 2.76444 2.8878 aline 2.59111 2.9062 amove 2.59111 2.9062 aline 2.52889 2.91287 amove 2.40889 2.92573 aline 2.35111 2.93192 set color BLACK set lstyle 1 amove 3.11556 2.3656 aline 3.06667 1.01846 amove 3.30667 2.57064 aline 3.25333 1.45845 amove 3.43556 2.70817 aline 3.38222 1.7615 amove 3.52444 2.80681 aline 3.52 2.80729 amove 3.52444 2.80681 aline 3.47556 1.98293 amove 3.11556 2.3656 aline 3.06667 1.01846 amove 2.57333 2.47301 aline 2.57333 1.2472 amove 2.13778 2.56031 aline 2.16444 1.43594 amove 1.77778 2.63267 aline 1.82222 1.59433 amove 1.47111 2.69363 aline 1.47556 2.69485 amove 1.47111 2.69363 aline 1.52889 1.72915 set color BLACK set lstyle 1 amove 3.47556 1.98293 aline 3.47111 1.97239 amove 1.52889 1.72915 aline 1.52889 1.72915 amove 1.46667 2.7544 aline 1.40444 3.77965 amove 1.52889 1.72915 aline 1.52444 1.73119 amove 1.40444 3.77965 aline 2.33778 3.64923 amove 2.33778 3.64923 aline 2.34667 2.9324 amove 2.33778 3.64923 aline 3.57778 3.71714 amove 3.55111 3.71568 aline 3.57778 3.71714 amove 3.57778 3.71714 aline 3.52 2.80729 amove 3.57778 3.71714 aline 3.55111 3.26474 amove 3.47556 1.98293 aline 3.47556 1.98293 amove 1.53004 1.72915 aline 3.07032 1.01846 amove 3.07032 1.01846 aline 3.47917 1.98293 set just BC set color BLACK set hei 0.0833333 set just TC amove 1.53004 1.72915 aline 1.52795 1.72461 amove 1.48605 1.63381 rotate -24.7687 text 1 rotate 24.7687 amove 1.67049 1.66435 aline 1.66839 1.65981 amove 1.6265 1.56901 rotate -24.7687 text 1.5 rotate 24.7687 amove 1.82223 1.59433 aline 1.82013 1.58979 amove 1.77824 1.49899 rotate -24.7687 text 2 rotate 24.7687 amove 1.98668 1.51846 aline 1.98459 1.51392 amove 1.94269 1.42312 rotate -24.7687 text 2.5 rotate 24.7687 amove 2.16551 1.43594 aline 2.16342 1.4314 amove 2.12152 1.3406 rotate -24.7687 text 3 rotate 24.7687 amove 2.36069 1.34589 aline 2.35859 1.34135 amove 2.3167 1.25055 rotate -24.7687 text 3.5 rotate 24.7687 amove 2.57457 1.2472 aline 2.57247 1.24266 amove 2.53058 1.15186 rotate -24.7687 text 4 rotate 24.7687 amove 2.80997 1.13859 aline 2.80788 1.13405 amove 2.76598 1.04325 rotate -24.7687 text 4.5 rotate 24.7687 amove 3.07032 1.01846 aline 3.06822 1.01392 amove 3.02633 0.923124 rotate -24.7687 text 5 rotate 24.7687 set just TC set color BLACK set hei 0.125 amove 2.04229 1.16888 rotate -24.7687 text Xaxis rotate 24.7687 set color BLACK set hei 0.0833333 set just TC amove 3.07032 1.01846 aline 3.07492 1.01651 amove 3.16699 0.977484 rotate 67.0273 text 1 rotate -67.0273 amove 3.17304 1.26079 aline 3.17764 1.25883 amove 3.26971 1.21981 rotate 67.0273 text 1.5 rotate -67.0273 amove 3.25683 1.45845 aline 3.26144 1.4565 amove 3.35351 1.41747 rotate 67.0273 text 2 rotate -67.0273 amove 3.32649 1.62276 aline 3.33109 1.62081 amove 3.42316 1.58178 rotate 67.0273 text 2.5 rotate -67.0273 amove 3.3853 1.7615 aline 3.3899 1.75955 amove 3.48197 1.72052 rotate 67.0273 text 3 rotate -67.0273 amove 3.43562 1.88021 aline 3.44022 1.87826 amove 3.53229 1.83923 rotate 67.0273 text 3.5 rotate -67.0273 amove 3.47917 1.98293 aline 3.48377 1.98098 amove 3.57584 1.94195 rotate 67.0273 text 4 rotate -67.0273 set just TC set color BLACK set hei 0.0833333 set just RC amove 1.53004 1.72915 aline 1.52505 1.72885 amove 1.42523 1.7229 text -1 amove 1.51628 1.96001 aline 1.51129 1.95971 amove 1.41147 1.95376 text -0.5 amove 1.50212 2.19751 aline 1.49713 2.19721 amove 1.39731 2.19126 text 0 amove 1.48755 2.44195 aline 1.48256 2.44165 amove 1.38274 2.4357 text 0.5 amove 1.47255 2.69363 aline 1.46756 2.69333 amove 1.36773 2.68738 text 1 amove 1.45709 2.95288 aline 1.4521 2.95258 amove 1.35228 2.94663 text 1.5 amove 1.44117 3.22005 aline 1.43618 3.21976 amove 1.33635 3.2138 text 2 amove 1.42475 3.49551 aline 1.41976 3.49521 amove 1.31993 3.48926 text 2.5 amove 1.40781 3.77965 aline 1.40282 3.77935 amove 1.303 3.7734 text 3 set just BC set color BLACK set hei 0.125 amove 1.17895 2.67613 rotate 93.4114 text Zaxis rotate -93.4114 set color BLACK set lstyle 1 set color BLACK set lstyle 1 set color BLACK set lstyle 1 set color BLACK set hei 0.0833333 amove 2.46423 2.95762 marker FCIRCLE amove 3.05446 3.23736 marker FCIRCLE set color BLACK set lstyle 2 amove 2.46423 2.95762 aline 2.46256 3.77555 amove 3.05446 3.23736 aline 3.07025 3.74384 gle-graphics-4.2.4c/gle-refman/utilities/fig/surf/surf5.sur0000644000000000000000000000542711405447072022316 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! begin surface size 5 5 data jack.z underneath on color green !zaxis min -2 max 2 !cube zlen 5 base xstep 1 ystep 1 end surface gle-graphics-4.2.4c/gle-refman/utilities/fig/surf/surf1.z0000644000000000000000000000534611405447072021752 0ustar rootroot! nx 5 ny 4 xmin 1 xmax 5 ymin 1 ymax 4 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 1 1 1 1 1 1 1 1.5 1 1 1 1 1 2 1 1 1 1 1 1 gle-graphics-4.2.4c/gle-refman/utilities/fig/surf/surf1.big0000644000000000000000000001773611405447072022250 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! amove 9 9 set hei 0.3 set color BLACK set lstyle 1 set color BLACK set lstyle 1 amove 2.25333 0.642857 aline 2.85333 0.783363 amove 2.85333 0.783363 aline 3.45333 0.92387 amove 3.45333 0.92387 aline 4.06 1.06438 amove 2.25333 0.642857 aline 1.9 0.79754 amove 2.85333 0.783363 aline 2.50667 0.938046 amove 3.45333 0.92387 aline 3.10667 3.89544 amove 4.06 1.06438 aline 3.70667 1.21906 amove 1.9 0.79754 aline 2.5 0.9365 amove 2.50667 0.938046 aline 3.10667 3.89544 amove 3.10667 3.89544 aline 3.7 1.24879 amove 1.9 0.79754 aline 1.55333 0.952223 amove 2.50667 0.938046 aline 2.15333 2.50117 amove 3.10667 3.89544 aline 3.10667 3.89544 amove 3.70667 1.21906 aline 3.70667 1.21906 amove 1.55333 0.952223 aline 2.14667 2.48396 amove 2.15333 2.50117 aline 2.62 1.515 amove 1.55333 0.952223 aline 1.20667 1.1069 amove 2.15333 2.50117 aline 2.15333 2.50117 amove 1.20667 1.1069 aline 1.65333 1.2115 amove 1.20667 1.1069 aline 0.853333 1.26159 amove 1.68667 1.29994 aline 1.45333 1.40209 amove 0.853333 1.26159 aline 1.45333 1.40209 amove 1.45333 1.40209 aline 1.75333 1.47157 amove 2.55333 1.65813 aline 2.65333 1.68154 set color BLACK set lstyle 1 set color BLACK set lstyle 1 amove 4.06 1.06438 aline 3.7 1.24879 amove 4.06 1.06438 aline 4.05333 1.06283 amove 2.65333 1.68154 aline 2.54667 1.66997 amove 1.75333 1.47157 aline 1.74667 1.47003 amove 1.74 1.46849 aline 1.73333 1.46694 amove 1.72667 1.4654 aline 1.72 1.46385 amove 1.71333 1.46231 aline 1.70667 1.46077 amove 1.7 1.45922 aline 1.69333 1.45768 amove 0.96 1.28657 aline 0.953333 1.28501 amove 0.946667 1.28344 aline 0.94 1.28188 amove 0.933333 1.28032 aline 0.926667 1.27876 amove 0.92 1.2772 aline 0.913333 1.27564 amove 0.906667 1.27408 aline 0.9 1.27252 amove 0.893333 1.27095 aline 0.886667 1.26939 amove 0.88 1.26783 aline 0.873333 1.26627 amove 0.866667 1.26471 aline 0.86 1.26315 amove 0.853333 1.26159 aline 0.853333 1.26159 amove 0.853333 1.26158 aline 0.853333 1.26159 amove 0.853333 1.26159 aline 0.853333 4.07848 amove 0.853333 4.07848 aline 2.66 4.5 amove 2.66 1.69383 aline 2.66 4.5 amove 2.66 4.5 aline 4.06 3.88127 amove 4.06 1.06438 aline 4.06 3.88127 amove 0.857142 1.26159 aline 2.25611 0.642857 amove 2.25611 0.642857 aline 4.06094 1.06438 set just BC set color BLACK set hei 0.0833333 set just TC amove 0.857142 1.26159 aline 0.85512 1.25701 amove 0.814672 1.16556 rotate -23.8587 text 1 rotate 23.8587 amove 1.03201 1.18425 aline 1.02999 1.17967 amove 0.989543 1.08822 rotate -23.8587 text 1.5 rotate 23.8587 amove 1.20689 1.1069 aline 1.20486 1.10233 amove 1.16441 1.01088 rotate -23.8587 text 2 rotate 23.8587 amove 1.38176 1.02956 aline 1.37973 1.02499 amove 1.33929 0.933537 rotate -23.8587 text 2.5 rotate 23.8587 amove 1.55663 0.952223 aline 1.55461 0.94765 amove 1.51416 0.856196 rotate -23.8587 text 3 rotate 23.8587 amove 1.7315 0.874881 aline 1.72948 0.870308 amove 1.68903 0.778853 rotate -23.8587 text 3.5 rotate 23.8587 amove 1.90637 0.79754 aline 1.90435 0.792967 amove 1.8639 0.701512 rotate -23.8587 text 4 rotate 23.8587 amove 2.08124 0.720199 aline 2.07922 0.715626 amove 2.03877 0.624171 rotate -23.8587 text 4.5 rotate 23.8587 amove 2.25611 0.642857 aline 2.25409 0.638284 amove 2.21364 0.546829 rotate -23.8587 text 5 rotate 23.8587 set just TC set color BLACK set hei 0.125 amove 1.43766 0.683239 rotate -23.8587 text Xaxis rotate 23.8587 set color BLACK set hei 0.0833333 set just TC amove 2.25611 0.642857 aline 2.25725 0.637988 amove 2.27999 0.540608 rotate 13.1459 text 1 rotate -13.1459 amove 2.55692 0.71311 aline 2.55805 0.708241 amove 2.5808 0.610862 rotate 13.1459 text 1.5 rotate -13.1459 amove 2.85772 0.783363 aline 2.85886 0.778494 amove 2.8816 0.681115 rotate 13.1459 text 2 rotate -13.1459 amove 3.15853 0.853617 aline 3.15966 0.848748 amove 3.18241 0.751368 rotate 13.1459 text 2.5 rotate -13.1459 amove 3.45933 0.92387 aline 3.46047 0.919001 amove 3.48321 0.821622 rotate 13.1459 text 3 rotate -13.1459 amove 3.76013 0.994123 aline 3.76127 0.989254 amove 3.78401 0.891874 rotate 13.1459 text 3.5 rotate -13.1459 amove 4.06094 1.06438 aline 4.06208 1.05951 amove 4.08482 0.962128 rotate 13.1459 text 4 rotate -13.1459 set just TC set color BLACK set hei 0.125 amove 3.22542 0.567207 rotate 13.1459 text Yaxis rotate -13.1459 set color BLACK set hei 0.0833333 set just RC amove 0.857142 1.26159 aline 0.852142 1.26159 amove 0.752142 1.26159 text 1 amove 0.857142 1.54328 aline 0.852142 1.54328 amove 0.752142 1.54328 text 1.1 amove 0.857142 1.82497 aline 0.852142 1.82497 amove 0.752142 1.82497 text 1.2 amove 0.857142 2.10666 aline 0.852142 2.10666 amove 0.752142 2.10666 text 1.3 amove 0.857142 2.38835 aline 0.852142 2.38835 amove 0.752142 2.38835 text 1.4 amove 0.857143 2.67003 aline 0.852143 2.67003 amove 0.752143 2.67003 text 1.5 amove 0.857143 2.95172 aline 0.852143 2.95172 amove 0.752143 2.95172 text 1.6 amove 0.857143 3.23341 aline 0.852143 3.23341 amove 0.752143 3.23341 text 1.7 amove 0.857143 3.5151 aline 0.852143 3.5151 amove 0.752143 3.5151 text 1.8 amove 0.857143 3.79679 aline 0.852143 3.79679 amove 0.752143 3.79679 text 1.9 amove 0.857143 4.07848 aline 0.852143 4.07848 amove 0.752143 4.07848 text 2 set just BC set color BLACK set lstyle 1 set color BLACK set lstyle 1 set color BLACK set lstyle 1 gle-graphics-4.2.4c/gle-refman/utilities/fig/surf/surf4.sur0000644000000000000000000000535511405447072022315 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! begin surface size 5 5 data surf1.z zaxis min -1 rotate 85 85 0 view 0 5 .7 end surface gle-graphics-4.2.4c/gle-refman/utilities/fig/surf/surf2.sur0000644000000000000000000000552611405447072022313 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! begin surface size 5 5 data surf1.z zaxis min -1 max 3 base xstep .5 ystep .5 back ystep 1 zstep 1 right xstep .5 zstep .5 lstyle 2 xtitle "Xaxis" hei .3 ytitle "Yaxis" hei .3 end surface gle-graphics-4.2.4c/gle-refman/utilities/fig/surf/surf5.big0000644000000000000000000014467611405447072022260 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! amove 9 9 set hei 0.3 set color GREEN set lstyle 1 amove 2.38667 3.21761 aline 2.49333 3.09084 amove 2.49333 3.09084 aline 2.6 2.97999 amove 2.6 2.97999 aline 2.70667 2.88508 amove 2.70667 2.88508 aline 2.81333 2.80611 amove 2.81333 2.80611 aline 2.91333 2.74307 amove 2.91333 2.74307 aline 3.02 2.69597 amove 3.02 2.69597 aline 3.12667 2.6648 amove 3.12667 2.6648 aline 3.23333 2.64956 amove 3.23333 2.64956 aline 3.34 2.65026 amove 3.34 2.65026 aline 3.44 2.6669 amove 3.44 2.6669 aline 3.54667 2.69947 amove 3.54667 2.69947 aline 3.65333 2.74797 amove 3.65333 2.74797 aline 3.76 2.81241 amove 3.76 2.81241 aline 3.86667 2.89278 amove 3.86667 2.89278 aline 3.96667 2.98909 amove 3.96667 2.98909 aline 4.07333 3.10133 amove 4.07333 3.10133 aline 4.18 3.22951 amove 4.18 3.22951 aline 4.28667 3.37362 amove 4.28667 3.37362 aline 4.39333 3.53366 amove 4.39333 3.53366 aline 4.5 3.70964 amove 2.38667 3.21761 aline 2.34 3.00949 amove 2.49333 3.09084 aline 2.44667 2.88272 amove 2.6 2.97999 aline 2.54667 2.77187 amove 2.70667 2.88508 aline 2.65333 2.67697 amove 2.81333 2.80611 aline 2.76 2.59799 amove 2.91333 2.74307 aline 2.86667 2.53495 amove 3.02 2.69597 aline 2.97333 2.48785 amove 3.12667 2.6648 aline 3.07333 2.45668 amove 3.23333 2.64956 aline 3.18 2.44144 amove 3.34 2.65026 aline 3.28667 2.44214 amove 3.44 2.6669 aline 3.39333 2.45878 amove 3.54667 2.69947 aline 3.5 2.49135 amove 3.65333 2.74797 aline 3.6 2.53985 amove 3.76 2.81241 aline 3.70667 2.60429 amove 3.86667 2.89278 aline 3.81333 2.68466 amove 3.96667 2.98909 aline 3.92 2.78097 amove 4.07333 3.10133 aline 4.02667 2.89321 amove 4.18 3.22951 aline 4.12667 3.02139 amove 4.28667 3.37362 aline 4.23333 3.1655 amove 4.39333 3.53366 aline 4.34 3.32554 amove 4.5 3.70964 aline 4.44667 3.50152 amove 2.34 3.00949 aline 2.44667 2.88272 amove 2.44667 2.88272 aline 2.54667 2.77187 amove 2.54667 2.77187 aline 2.65333 2.67697 amove 2.65333 2.67697 aline 2.76 2.59799 amove 2.76 2.59799 aline 2.86667 2.53495 amove 2.86667 2.53495 aline 2.97333 2.48785 amove 2.97333 2.48785 aline 3.07333 2.45668 amove 3.07333 2.45668 aline 3.18 2.44144 amove 3.18 2.44144 aline 3.28667 2.44214 amove 3.28667 2.44214 aline 3.39333 2.45878 amove 3.39333 2.45878 aline 3.5 2.49135 amove 3.5 2.49135 aline 3.6 2.53985 amove 3.6 2.53985 aline 3.70667 2.60429 amove 3.70667 2.60429 aline 3.81333 2.68466 amove 3.81333 2.68466 aline 3.92 2.78097 amove 3.92 2.78097 aline 4.02667 2.89321 amove 4.02667 2.89321 aline 4.12 3.01284 amove 4.12667 3.02139 aline 4.23333 3.1655 amove 4.23333 3.1655 aline 4.34 3.32554 amove 4.34 3.32554 aline 4.44667 3.50152 amove 2.34 3.00949 aline 2.28667 2.81731 amove 2.44667 2.88272 aline 2.39333 2.69053 amove 2.54667 2.77187 aline 2.5 2.57969 amove 2.65333 2.67697 aline 2.6 2.48478 amove 2.76 2.59799 aline 2.70667 2.40581 amove 2.86667 2.53495 aline 2.81333 2.34277 amove 2.97333 2.48785 aline 2.92 2.29567 amove 3.07333 2.45668 aline 3.02667 2.2645 amove 3.18 2.44144 aline 3.12667 2.24926 amove 3.28667 2.44214 aline 3.23333 2.24996 amove 3.39333 2.45878 aline 3.34 2.26659 amove 3.5 2.49135 aline 3.44667 2.29916 amove 3.6 2.53985 aline 3.55333 2.34767 amove 3.70667 2.60429 aline 3.65333 2.4121 amove 3.81333 2.68466 aline 3.76 2.49248 amove 3.92 2.78097 aline 3.86667 2.58878 amove 4.02667 2.89321 aline 3.97333 2.70103 amove 4.12667 3.02139 aline 4.08 2.8292 amove 4.23333 3.1655 aline 4.18 2.97331 amove 4.34 3.32554 aline 4.28667 3.13336 amove 4.44667 3.50152 aline 4.39333 3.30934 amove 2.28667 2.81731 aline 2.39333 2.69053 amove 2.39333 2.69053 aline 2.5 2.57969 amove 2.5 2.57969 aline 2.59333 2.49111 amove 2.6 2.48478 aline 2.70667 2.40581 amove 2.70667 2.40581 aline 2.81333 2.34277 amove 2.81333 2.34277 aline 2.92 2.29567 amove 2.92 2.29567 aline 3.02667 2.2645 amove 3.02667 2.2645 aline 3.12667 2.24926 amove 3.12667 2.24926 aline 3.23333 2.24996 amove 3.23333 2.24996 aline 3.34 2.26659 amove 3.34 2.26659 aline 3.44667 2.29916 amove 3.44667 2.29916 aline 3.55333 2.34767 amove 3.55333 2.34767 aline 3.65333 2.4121 amove 3.65333 2.4121 aline 3.76 2.49248 amove 3.76 2.49248 aline 3.86667 2.58878 amove 3.86667 2.58878 aline 3.97333 2.70103 amove 3.97333 2.70103 aline 4.08 2.8292 amove 4.08 2.8292 aline 4.18 2.97331 amove 4.18 2.97331 aline 4.28667 3.13336 amove 4.28667 3.13336 aline 4.39333 3.30934 amove 2.28667 2.81731 aline 2.23333 2.64106 amove 2.39333 2.69053 aline 2.34 2.51428 amove 2.5 2.57969 aline 2.44667 2.40344 amove 2.6 2.48478 aline 2.55333 2.30853 amove 2.70667 2.40581 aline 2.65333 2.22956 amove 2.81333 2.34277 aline 2.76 2.16652 amove 2.92 2.29567 aline 2.86667 2.11942 amove 3.02667 2.2645 aline 2.97333 2.08825 amove 3.12667 2.24926 aline 3.08 2.07301 amove 3.23333 2.24996 aline 3.18 2.07371 amove 3.34 2.26659 aline 3.28667 2.09035 amove 3.44667 2.29916 aline 3.39333 2.12291 amove 3.55333 2.34767 aline 3.5 2.17142 amove 3.65333 2.4121 aline 3.60667 2.23586 amove 3.76 2.49248 aline 3.70667 2.31623 amove 3.86667 2.58878 aline 3.81333 2.41254 amove 3.97333 2.70103 aline 3.92 2.52478 amove 4.08 2.8292 aline 4.02667 2.65295 amove 4.18 2.97331 aline 4.13333 2.79707 amove 4.28667 3.13336 aline 4.23333 2.95711 amove 4.39333 3.30934 aline 4.34 3.13309 amove 2.23333 2.64106 aline 2.34 2.51428 amove 2.34 2.51428 aline 2.44667 2.40344 amove 2.44667 2.40344 aline 2.55333 2.30853 amove 2.55333 2.30853 aline 2.64667 2.23482 amove 2.65333 2.22956 aline 2.76 2.16652 amove 2.76 2.16652 aline 2.86667 2.11942 amove 2.86667 2.11942 aline 2.97333 2.08825 amove 2.97333 2.08825 aline 3.08 2.07301 amove 3.08 2.07301 aline 3.17333 2.07366 amove 3.18 2.07371 aline 3.28667 2.09035 amove 3.28667 2.09035 aline 3.39333 2.12291 amove 3.39333 2.12291 aline 3.5 2.17142 amove 3.5 2.17142 aline 3.60667 2.23586 amove 3.60667 2.23586 aline 3.7 2.31087 amove 3.70667 2.31623 aline 3.81333 2.41254 amove 3.81333 2.41254 aline 3.92 2.52478 amove 3.92 2.52478 aline 4.02667 2.65295 amove 4.02667 2.65295 aline 4.13333 2.79707 amove 4.13333 2.79707 aline 4.23333 2.95711 amove 4.23333 2.95711 aline 4.34 3.13309 amove 2.23333 2.64106 aline 2.18 2.48075 amove 2.34 2.51428 aline 2.28667 2.35397 amove 2.44667 2.40344 aline 2.39333 2.24313 amove 2.55333 2.30853 aline 2.5 2.14822 amove 2.65333 2.22956 aline 2.60667 2.06925 amove 2.76 2.16652 aline 2.70667 2.00621 amove 2.86667 2.11942 aline 2.81333 1.9591 amove 2.97333 2.08825 aline 2.92 1.92793 amove 3.08 2.07301 aline 3.02667 1.9127 amove 3.18 2.07371 aline 3.13333 1.9134 amove 3.28667 2.09035 aline 3.23333 1.93003 amove 3.39333 2.12291 aline 3.34 1.9626 amove 3.5 2.17142 aline 3.44667 2.0111 amove 3.60667 2.23586 aline 3.55333 2.07554 amove 3.70667 2.31623 aline 3.66 2.15591 amove 3.81333 2.41254 aline 3.76 2.25222 amove 3.92 2.52478 aline 3.86667 2.36446 amove 4.02667 2.65295 aline 3.97333 2.49264 amove 4.13333 2.79707 aline 4.08 2.63675 amove 4.23333 2.95711 aline 4.18667 2.7968 amove 4.34 3.13309 aline 4.28667 2.97278 amove 2.18 2.48075 aline 2.28667 2.35397 amove 2.28667 2.35397 aline 2.39333 2.24313 amove 2.39333 2.24313 aline 2.5 2.14822 amove 2.5 2.14822 aline 2.60667 2.06925 amove 2.60667 2.06925 aline 2.70667 2.00621 amove 2.70667 2.00621 aline 2.81333 1.9591 amove 2.81333 1.9591 aline 2.92 1.92793 amove 2.92 1.92793 aline 3.02667 1.9127 amove 3.02667 1.9127 aline 3.13333 1.9134 amove 3.13333 1.9134 aline 3.23333 1.93003 amove 3.23333 1.93003 aline 3.34 1.9626 amove 3.34 1.9626 aline 3.44667 2.0111 amove 3.44667 2.0111 aline 3.55333 2.07554 amove 3.55333 2.07554 aline 3.66 2.15591 amove 3.66 2.15591 aline 3.75333 2.2458 amove 3.76 2.25222 aline 3.86667 2.36446 amove 3.86667 2.36446 aline 3.97333 2.49264 amove 3.97333 2.49264 aline 4.08 2.63675 amove 4.08 2.63675 aline 4.18667 2.7968 amove 4.18667 2.7968 aline 4.28 2.96105 amove 2.18 2.48075 aline 2.13333 2.33637 amove 2.28667 2.35397 aline 2.23333 2.20959 amove 2.39333 2.24313 aline 2.34 2.09875 amove 2.5 2.14822 aline 2.44667 2.00384 amove 2.60667 2.06925 aline 2.55333 1.92487 amove 2.70667 2.00621 aline 2.66 1.86183 amove 2.81333 1.9591 aline 2.76 1.81472 amove 2.92 1.92793 aline 2.86667 1.78355 amove 3.02667 1.9127 aline 2.97333 1.76832 amove 3.13333 1.9134 aline 3.08 1.76902 amove 3.23333 1.93003 aline 3.18667 1.78565 amove 3.34 1.9626 aline 3.28667 1.81822 amove 3.44667 2.0111 aline 3.39333 1.86672 amove 3.55333 2.07554 aline 3.5 1.93116 amove 3.66 2.15591 aline 3.60667 2.01153 amove 3.76 2.25222 aline 3.71333 2.10784 amove 3.86667 2.36446 aline 3.81333 2.22008 amove 3.97333 2.49264 aline 3.92 2.34826 amove 4.08 2.63675 aline 4.02667 2.49237 amove 4.18667 2.7968 aline 4.13333 2.65242 amove 4.28667 2.97278 aline 4.24 2.8284 amove 2.13333 2.33637 aline 2.23333 2.20959 amove 2.23333 2.20959 aline 2.34 2.09875 amove 2.34 2.09875 aline 2.44667 2.00384 amove 2.44667 2.00384 aline 2.55333 1.92487 amove 2.55333 1.92487 aline 2.66 1.86183 amove 2.66 1.86183 aline 2.75333 1.81786 amove 2.76 1.81472 aline 2.86667 1.78355 amove 2.86667 1.78355 aline 2.97333 1.76832 amove 2.97333 1.76832 aline 3.08 1.76902 amove 3.08 1.76902 aline 3.18667 1.78565 amove 3.18667 1.78565 aline 3.28 1.81605 amove 3.28667 1.81822 aline 3.39333 1.86672 amove 3.39333 1.86672 aline 3.5 1.93116 amove 3.5 1.93116 aline 3.60667 2.01153 amove 3.60667 2.01153 aline 3.71333 2.10784 amove 3.71333 2.10784 aline 3.81333 2.22008 amove 3.81333 2.22008 aline 3.92 2.34826 amove 3.92 2.34826 aline 4.02667 2.49237 amove 4.02667 2.49237 aline 4.13333 2.65242 amove 4.13333 2.65242 aline 4.24 2.8284 amove 2.13333 2.33637 aline 2.08 2.20792 amove 2.23333 2.20959 aline 2.18667 2.08114 amove 2.34 2.09875 aline 2.28667 1.9703 amove 2.44667 2.00384 aline 2.39333 1.87539 amove 2.55333 1.92487 aline 2.5 1.79642 amove 2.66 1.86183 aline 2.60667 1.73338 amove 2.76 1.81472 aline 2.71333 1.68628 amove 2.86667 1.78355 aline 2.81333 1.65511 amove 2.97333 1.76832 aline 2.92 1.63987 amove 3.08 1.76902 aline 3.02667 1.64057 amove 3.18667 1.78565 aline 3.13333 1.65721 amove 3.28667 1.81822 aline 3.24 1.68977 amove 3.39333 1.86672 aline 3.34 1.73828 amove 3.5 1.93116 aline 3.44667 1.80272 amove 3.60667 2.01153 aline 3.55333 1.88309 amove 3.71333 2.10784 aline 3.66 1.9794 amove 3.81333 2.22008 aline 3.76667 2.09164 amove 3.92 2.34826 aline 3.86667 2.21981 amove 4.02667 2.49237 aline 3.97333 2.36393 amove 4.13333 2.65242 aline 4.08 2.52397 amove 4.24 2.8284 aline 4.18667 2.69995 amove 2.08 2.20792 aline 2.18667 2.08114 amove 2.18667 2.08114 aline 2.28667 1.9703 amove 2.28667 1.9703 aline 2.39333 1.87539 amove 2.39333 1.87539 aline 2.5 1.79642 amove 2.5 1.79642 aline 2.60667 1.73338 amove 2.60667 1.73338 aline 2.71333 1.68628 amove 2.71333 1.68628 aline 2.81333 1.65511 amove 2.81333 1.65511 aline 2.92 1.63987 amove 2.92 1.63987 aline 3.02667 1.64057 amove 3.02667 1.64057 aline 3.13333 1.65721 amove 3.13333 1.65721 aline 3.24 1.68977 amove 3.24 1.68977 aline 3.34 1.73828 amove 3.34 1.73828 aline 3.44667 1.80272 amove 3.44667 1.80272 aline 3.55333 1.88309 amove 3.55333 1.88309 aline 3.66 1.9794 amove 3.66 1.9794 aline 3.76667 2.09164 amove 3.76667 2.09164 aline 3.86 2.21127 amove 3.86667 2.21981 aline 3.97333 2.36393 amove 3.97333 2.36393 aline 4.08 2.52397 amove 4.08 2.52397 aline 4.18667 2.69995 amove 2.08 2.20792 aline 2.02667 2.09541 amove 2.18667 2.08114 aline 2.13333 1.96863 amove 2.28667 1.9703 aline 2.24 1.85779 amove 2.39333 1.87539 aline 2.34 1.76288 amove 2.5 1.79642 aline 2.44667 1.68391 amove 2.60667 1.73338 aline 2.55333 1.62087 amove 2.71333 1.68628 aline 2.66 1.57377 amove 2.81333 1.65511 aline 2.76667 1.5426 amove 2.92 1.63987 aline 2.86667 1.52736 amove 3.02667 1.64057 aline 2.97333 1.52806 amove 3.13333 1.65721 aline 3.08 1.5447 amove 3.24 1.68977 aline 3.18667 1.57726 amove 3.34 1.73828 aline 3.29333 1.62577 amove 3.44667 1.80272 aline 3.39333 1.69021 amove 3.55333 1.88309 aline 3.5 1.77058 amove 3.66 1.9794 aline 3.60667 1.86689 amove 3.76667 2.09164 aline 3.71333 1.97913 amove 3.86667 2.21981 aline 3.82 2.1073 amove 3.97333 2.36393 aline 3.92 2.25142 amove 4.08 2.52397 aline 4.02667 2.41146 amove 4.18667 2.69995 aline 4.13333 2.58744 amove 2.02667 2.09541 aline 2.13333 1.96863 amove 2.13333 1.96863 aline 2.24 1.85779 amove 2.24 1.85779 aline 2.33333 1.76921 amove 2.34 1.76288 aline 2.44667 1.68391 amove 2.44667 1.68391 aline 2.55333 1.62087 amove 2.55333 1.62087 aline 2.66 1.57377 amove 2.66 1.57377 aline 2.76667 1.5426 amove 2.76667 1.5426 aline 2.86 1.52838 amove 2.86667 1.52736 aline 2.97333 1.52806 amove 2.97333 1.52806 aline 3.08 1.5447 amove 3.08 1.5447 aline 3.18667 1.57726 amove 3.18667 1.57726 aline 3.29333 1.62577 amove 3.29333 1.62577 aline 3.39333 1.69021 amove 3.39333 1.69021 aline 3.5 1.77058 amove 3.5 1.77058 aline 3.60667 1.86689 amove 3.60667 1.86689 aline 3.71333 1.97913 amove 3.71333 1.97913 aline 3.82 2.1073 amove 3.82 2.1073 aline 3.92 2.25142 amove 3.92 2.25142 aline 4.02667 2.41146 amove 4.02667 2.41146 aline 4.13333 2.58744 amove 2.02667 2.09541 aline 1.97333 1.99884 amove 2.13333 1.96863 aline 2.08 1.87206 amove 2.24 1.85779 aline 2.18667 1.76122 amove 2.34 1.76288 aline 2.29333 1.66631 amove 2.44667 1.68391 aline 2.39333 1.58733 amove 2.55333 1.62087 aline 2.5 1.52429 amove 2.66 1.57377 aline 2.60667 1.47719 amove 2.76667 1.5426 aline 2.71333 1.44602 amove 2.86667 1.52736 aline 2.82 1.43079 amove 2.97333 1.52806 aline 2.92 1.43149 amove 3.08 1.5447 aline 3.02667 1.44812 amove 3.18667 1.57726 aline 3.13333 1.48069 amove 3.29333 1.62577 aline 3.24 1.52919 amove 3.39333 1.69021 aline 3.34667 1.59363 amove 3.5 1.77058 aline 3.44667 1.674 amove 3.60667 1.86689 aline 3.55333 1.77031 amove 3.71333 1.97913 aline 3.66 1.88255 amove 3.82 2.1073 aline 3.76667 2.01073 amove 3.92 2.25142 aline 3.87333 2.15484 amove 4.02667 2.41146 aline 3.97333 2.31489 amove 4.13333 2.58744 aline 4.08 2.49087 amove 1.97333 1.99884 aline 2.08 1.87206 amove 2.08 1.87206 aline 2.18667 1.76122 amove 2.18667 1.76122 aline 2.29333 1.66631 amove 2.29333 1.66631 aline 2.38667 1.5926 amove 2.39333 1.58733 aline 2.5 1.52429 amove 2.5 1.52429 aline 2.60667 1.47719 amove 2.60667 1.47719 aline 2.71333 1.44602 amove 2.71333 1.44602 aline 2.82 1.43079 amove 2.82 1.43079 aline 2.91333 1.43144 amove 2.92 1.43149 aline 3.02667 1.44812 amove 3.02667 1.44812 aline 3.13333 1.48069 amove 3.13333 1.48069 aline 3.24 1.52919 amove 3.24 1.52919 aline 3.34667 1.59363 amove 3.34667 1.59363 aline 3.44 1.66864 amove 3.44667 1.674 aline 3.55333 1.77031 amove 3.55333 1.77031 aline 3.66 1.88255 amove 3.66 1.88255 aline 3.76667 2.01073 amove 3.76667 2.01073 aline 3.87333 2.15484 amove 3.87333 2.15484 aline 3.97333 2.31489 amove 3.97333 2.31489 aline 4.08 2.49087 amove 1.97333 1.99884 aline 1.92 1.91819 amove 2.08 1.87206 aline 2.02667 1.79142 amove 2.18667 1.76122 aline 2.13333 1.68057 amove 2.29333 1.66631 aline 2.24 1.58567 amove 2.39333 1.58733 aline 2.34667 1.50669 amove 2.5 1.52429 aline 2.44667 1.44365 amove 2.60667 1.47719 aline 2.55333 1.39655 amove 2.71333 1.44602 aline 2.66 1.36538 amove 2.82 1.43079 aline 2.76667 1.35014 amove 2.92 1.43149 aline 2.87333 1.35084 amove 3.02667 1.44812 aline 2.97333 1.36748 amove 3.13333 1.48069 aline 3.08 1.40005 amove 3.24 1.52919 aline 3.18667 1.44855 amove 3.34667 1.59363 aline 3.29333 1.51299 amove 3.44667 1.674 aline 3.4 1.59336 amove 3.55333 1.77031 aline 3.5 1.68967 amove 3.66 1.88255 aline 3.60667 1.80191 amove 3.76667 2.01073 aline 3.71333 1.93009 amove 3.87333 2.15484 aline 3.82 2.0742 amove 3.97333 2.31489 aline 3.92667 2.23424 amove 4.08 2.49087 aline 4.08 2.49087 amove 1.92 1.91819 aline 2.02667 1.79142 amove 2.02667 1.79142 aline 2.13333 1.68057 amove 2.13333 1.68057 aline 2.24 1.58567 amove 2.24 1.58567 aline 2.34667 1.50669 amove 2.34667 1.50669 aline 2.44667 1.44365 amove 2.44667 1.44365 aline 2.55333 1.39655 amove 2.55333 1.39655 aline 2.66 1.36538 amove 2.66 1.36538 aline 2.76667 1.35014 amove 2.76667 1.35014 aline 2.87333 1.35084 amove 2.87333 1.35084 aline 2.97333 1.36748 amove 2.97333 1.36748 aline 3.08 1.40005 amove 3.08 1.40005 aline 3.18667 1.44855 amove 3.18667 1.44855 aline 3.29333 1.51299 amove 3.29333 1.51299 aline 3.4 1.59336 amove 3.4 1.59336 aline 3.5 1.68967 amove 3.5 1.68967 aline 3.60667 1.80191 amove 3.60667 1.80191 aline 3.71333 1.93009 amove 3.71333 1.93009 aline 3.82 2.0742 amove 3.82 2.0742 aline 3.92667 2.23424 amove 3.92667 2.23424 aline 3.92667 2.23424 amove 1.92 1.91819 aline 1.87333 1.85349 amove 2.02667 1.79142 aline 1.98 1.72671 amove 2.13333 1.68057 aline 2.08 1.61587 amove 2.24 1.58567 aline 2.18667 1.52096 amove 2.34667 1.50669 aline 2.29333 1.44199 amove 2.44667 1.44365 aline 2.4 1.37895 amove 2.55333 1.39655 aline 2.50667 1.33184 amove 2.66 1.36538 aline 2.60667 1.30067 amove 2.76667 1.35014 aline 2.71333 1.28544 amove 2.87333 1.35084 aline 2.82 1.28614 amove 2.97333 1.36748 aline 2.92667 1.30277 amove 3.08 1.40005 aline 3.03333 1.33534 amove 3.18667 1.44855 aline 3.13333 1.38384 amove 3.29333 1.51299 aline 3.24 1.44828 amove 3.4 1.59336 aline 3.34667 1.52865 amove 3.5 1.68967 aline 3.45333 1.62496 amove 3.60667 1.80191 aline 3.56 1.7372 amove 3.71333 1.93009 aline 3.66 1.86538 amove 3.82 2.0742 aline 3.82 2.0742 amove 3.92667 2.23424 aline 3.92667 2.23424 amove 1.87333 1.85349 aline 1.98 1.72671 amove 1.98 1.72671 aline 2.08 1.61587 amove 2.08 1.61587 aline 2.18667 1.52096 amove 2.18667 1.52096 aline 2.29333 1.44199 amove 2.29333 1.44199 aline 2.4 1.37895 amove 2.4 1.37895 aline 2.50667 1.33184 amove 2.50667 1.33184 aline 2.60667 1.30067 amove 2.60667 1.30067 aline 2.71333 1.28544 amove 2.71333 1.28544 aline 2.82 1.28614 amove 2.82 1.28614 aline 2.92667 1.30277 amove 2.92667 1.30277 aline 3.03333 1.33534 amove 3.03333 1.33534 aline 3.13333 1.38384 amove 3.13333 1.38384 aline 3.24 1.44828 amove 3.24 1.44828 aline 3.34667 1.52865 amove 3.34667 1.52865 aline 3.45333 1.62496 amove 3.45333 1.62496 aline 3.56 1.7372 amove 3.56 1.7372 aline 3.66 1.86538 amove 3.66 1.86538 aline 3.66 1.86538 amove 1.87333 1.85349 aline 1.82 1.80472 amove 1.98 1.72671 aline 1.92667 1.67794 amove 2.08 1.61587 aline 2.03333 1.5671 amove 2.18667 1.52096 aline 2.13333 1.47219 amove 2.29333 1.44199 aline 2.24 1.39321 amove 2.4 1.37895 aline 2.34667 1.33017 amove 2.50667 1.33184 aline 2.45333 1.28307 amove 2.60667 1.30067 aline 2.56 1.2519 amove 2.71333 1.28544 aline 2.66 1.23667 amove 2.82 1.28614 aline 2.76667 1.23737 amove 2.92667 1.30277 aline 2.87333 1.254 amove 3.03333 1.33534 aline 2.98 1.28657 amove 3.13333 1.38384 aline 3.08667 1.33507 amove 3.24 1.44828 aline 3.18667 1.39951 amove 3.34667 1.52865 aline 3.29333 1.47988 amove 3.45333 1.62496 aline 3.4 1.57619 amove 3.56 1.7372 aline 3.56 1.7372 amove 3.66 1.86538 aline 3.66 1.86538 amove 1.82 1.80472 aline 1.92667 1.67794 amove 1.92667 1.67794 aline 2.03333 1.5671 amove 2.03333 1.5671 aline 2.13333 1.47219 amove 2.13333 1.47219 aline 2.24 1.39321 amove 2.24 1.39321 aline 2.34667 1.33017 amove 2.34667 1.33017 aline 2.45333 1.28307 amove 2.45333 1.28307 aline 2.56 1.2519 amove 2.56 1.2519 aline 2.65333 1.23768 amove 2.66 1.23667 aline 2.76667 1.23737 amove 2.76667 1.23737 aline 2.87333 1.254 amove 2.87333 1.254 aline 2.98 1.28657 amove 2.98 1.28657 aline 3.08667 1.33507 amove 3.08667 1.33507 aline 3.18667 1.39951 amove 3.18667 1.39951 aline 3.29333 1.47988 amove 3.29333 1.47988 aline 3.4 1.57619 amove 3.4 1.57619 aline 3.4 1.57619 amove 1.82 1.80472 aline 1.76667 1.77188 amove 1.92667 1.67794 aline 1.87333 1.6451 amove 2.03333 1.5671 aline 1.98 1.53426 amove 2.13333 1.47219 aline 2.08667 1.43935 amove 2.24 1.39321 aline 2.18667 1.36038 amove 2.34667 1.33017 aline 2.29333 1.29734 amove 2.45333 1.28307 aline 2.4 1.25023 amove 2.56 1.2519 aline 2.50667 1.21906 amove 2.66 1.23667 aline 2.61333 1.20383 amove 2.76667 1.23737 aline 2.71333 1.20453 amove 2.87333 1.254 aline 2.82 1.22116 amove 2.98 1.28657 aline 2.92667 1.25373 amove 3.08667 1.33507 aline 3.03333 1.30223 amove 3.18667 1.39951 aline 3.14 1.36667 amove 3.29333 1.47988 aline 3.29333 1.47988 amove 3.4 1.57619 aline 3.4 1.57619 amove 1.76667 1.77188 aline 1.87333 1.6451 amove 1.87333 1.6451 aline 1.98 1.53426 amove 1.98 1.53426 aline 2.08667 1.43935 amove 2.08667 1.43935 aline 2.18 1.36564 amove 2.18667 1.36038 aline 2.29333 1.29734 amove 2.29333 1.29734 aline 2.4 1.25023 amove 2.4 1.25023 aline 2.50667 1.21906 amove 2.50667 1.21906 aline 2.61333 1.20383 amove 2.61333 1.20383 aline 2.70667 1.20448 amove 2.71333 1.20453 aline 2.82 1.22116 amove 2.82 1.22116 aline 2.92667 1.25373 amove 2.92667 1.25373 aline 3.03333 1.30223 amove 3.03333 1.30223 aline 3.14 1.36667 amove 3.14 1.36667 aline 3.14 1.36667 amove 1.76667 1.77188 aline 1.71333 1.75498 amove 1.87333 1.6451 aline 1.82 1.6282 amove 1.98 1.53426 aline 1.92667 1.51736 amove 2.08667 1.43935 aline 2.03333 1.42245 amove 2.18667 1.36038 aline 2.14 1.34347 amove 2.29333 1.29734 aline 2.24 1.28043 amove 2.4 1.25023 aline 2.34667 1.23333 amove 2.50667 1.21906 aline 2.45333 1.20216 amove 2.61333 1.20383 aline 2.56 1.18693 amove 2.71333 1.20453 aline 2.66667 1.18763 amove 2.82 1.22116 aline 2.76667 1.20426 amove 2.92667 1.25373 aline 2.87333 1.23683 amove 3.03333 1.30223 aline 3.03333 1.30223 amove 3.14 1.36667 aline 3.14 1.36667 amove 1.71333 1.75498 aline 1.82 1.6282 amove 1.82 1.6282 aline 1.92667 1.51736 amove 1.92667 1.51736 aline 2.03333 1.42245 amove 2.03333 1.42245 aline 2.14 1.34347 amove 2.14 1.34347 aline 2.24 1.28043 amove 2.24 1.28043 aline 2.34667 1.23333 amove 2.34667 1.23333 aline 2.45333 1.20216 amove 2.45333 1.20216 aline 2.56 1.18693 amove 2.56 1.18693 aline 2.66667 1.18763 amove 2.66667 1.18763 aline 2.76 1.20315 amove 2.76667 1.20426 aline 2.87333 1.23683 amove 2.87333 1.23683 aline 2.87333 1.23683 amove 1.71333 1.75498 aline 1.66667 1.75401 amove 1.82 1.6282 aline 1.76667 1.62723 amove 1.92667 1.51736 aline 1.87333 1.51639 amove 2.03333 1.42245 aline 1.98 1.42148 amove 2.14 1.34347 aline 2.08667 1.34251 amove 2.24 1.28043 aline 2.19333 1.27947 amove 2.34667 1.23333 aline 2.29333 1.23236 amove 2.45333 1.20216 aline 2.4 1.20119 amove 2.56 1.18693 aline 2.50667 1.18596 amove 2.66667 1.18763 aline 2.61333 1.18666 amove 2.76667 1.20426 aline 2.76667 1.20426 amove 2.87333 1.23683 aline 2.87333 1.23683 amove 1.66667 1.75401 aline 1.76667 1.62723 amove 1.76667 1.62723 aline 1.87333 1.51639 amove 1.87333 1.51639 aline 1.98 1.42148 amove 1.98 1.42148 aline 2.08667 1.34251 amove 2.08667 1.34251 aline 2.19333 1.27947 amove 2.19333 1.27947 aline 2.28667 1.2355 amove 2.29333 1.23236 aline 2.4 1.20119 amove 2.4 1.20119 aline 2.50667 1.18596 amove 2.50667 1.18596 aline 2.61333 1.18666 amove 2.61333 1.18666 aline 2.61333 1.18666 amove 1.66667 1.75401 aline 1.61333 1.76897 amove 1.76667 1.62723 aline 1.72 1.6422 amove 1.87333 1.51639 aline 1.82 1.53135 amove 1.98 1.42148 aline 1.92667 1.43645 amove 2.08667 1.34251 aline 2.03333 1.35747 amove 2.19333 1.27947 aline 2.14 1.29443 amove 2.29333 1.23236 aline 2.24667 1.24733 amove 2.4 1.20119 aline 2.34667 1.21616 amove 2.50667 1.18596 aline 2.50667 1.18596 amove 2.61333 1.18666 aline 2.61333 1.18666 amove 1.61333 1.76897 aline 1.72 1.6422 amove 1.72 1.6422 aline 1.82 1.53135 amove 1.82 1.53135 aline 1.92667 1.43645 amove 1.92667 1.43645 aline 2.03333 1.35747 amove 2.03333 1.35747 aline 2.14 1.29443 amove 2.14 1.29443 aline 2.24667 1.24733 amove 2.24667 1.24733 aline 2.24667 1.24733 amove 2.31333 1.22655 aline 2.34667 1.21616 amove 2.34667 1.21616 aline 2.34667 1.21616 amove 1.61333 1.76897 aline 1.56 1.79987 amove 1.72 1.6422 aline 1.66667 1.6731 amove 1.82 1.53135 aline 1.77333 1.56225 amove 1.92667 1.43645 aline 1.87333 1.46735 amove 2.03333 1.35747 aline 1.98 1.38837 amove 2.14 1.29443 aline 2.08667 1.32533 amove 2.24667 1.24733 aline 2.24667 1.24733 amove 2.34667 1.21616 aline 2.34667 1.21616 amove 1.56 1.79987 aline 1.66667 1.6731 amove 1.66667 1.6731 aline 1.77333 1.56225 amove 1.77333 1.56225 aline 1.87333 1.46735 amove 1.87333 1.46735 aline 1.98 1.38837 amove 1.98 1.38837 aline 2.08667 1.32533 amove 2.08667 1.32533 aline 2.08667 1.32533 amove 1.56 1.79987 aline 1.50667 1.84671 amove 1.66667 1.6731 aline 1.61333 1.71993 amove 1.77333 1.56225 aline 1.72 1.60909 amove 1.87333 1.46735 aline 1.87333 1.46735 amove 1.98 1.38837 aline 1.98 1.38837 amove 2.08667 1.32533 aline 2.08667 1.32533 amove 1.50667 1.84671 aline 1.61333 1.71993 amove 1.61333 1.71993 aline 1.72 1.60909 amove 1.72 1.60909 aline 1.78 1.5557 amove 1.50667 1.84671 aline 1.45333 1.90948 amove 1.61333 1.71993 aline 1.56 1.7827 amove 1.72 1.60909 aline 1.72 1.60909 amove 1.45333 1.90948 aline 1.56 1.7827 amove 1.56 1.7827 aline 1.56 1.7827 amove 1.45333 1.90948 aline 1.40667 1.98819 amove 1.56 1.7827 aline 1.56 1.7827 amove 1.40667 1.98819 aline 1.40667 1.98819 amove 1.40667 1.98819 aline 1.35333 2.08282 amove 1.35333 2.08282 aline 1.35333 2.08282 amove 1.35333 2.08282 aline 1.3 2.1934 amove 1.3 2.1934 aline 1.3 2.1934 amove 1.3 2.1934 aline 1.24667 2.31991 amove 1.24667 2.31991 aline 1.24667 2.31991 amove 1.24667 2.31991 aline 1.2 2.46235 amove 1.2 2.46235 aline 1.2 2.46235 amove 1.2 2.46235 aline 1.14667 2.62073 amove 1.14667 2.62073 aline 1.14667 2.62073 amove 1.14667 2.62073 aline 1.09333 2.79504 amove 1.09333 2.79504 aline 1.09333 2.79504 amove 1.09333 2.79504 aline 1.04 2.98529 amove 1.04 2.98529 aline 1.04 2.98529 amove 1.04 2.98529 aline 0.986667 3.19147 amove 0.986667 3.19147 aline 0.986667 3.19147 amove 0.986667 3.19147 aline 0.94 3.41359 amove 0.94 3.41359 aline 0.94 3.41359 amove 0.94 3.41359 aline 0.886667 3.65164 amove 0.886667 3.65164 aline 0.886667 3.65164 amove 0.886667 3.65164 aline 0.833333 3.90562 amove 0.833333 3.90562 aline 0.833333 3.90562 set color BLACK set lstyle 1 amove 2.38667 3.21761 aline 2.49333 3.09084 amove 2.49333 3.09084 aline 2.6 2.97999 amove 2.6 2.97999 aline 2.70667 2.88508 amove 2.70667 2.88508 aline 2.81333 2.80611 amove 2.81333 2.80611 aline 2.91333 2.74307 amove 2.91333 2.74307 aline 3.02 2.69597 amove 3.02 2.69597 aline 3.12667 2.6648 amove 3.12667 2.6648 aline 3.23333 2.64956 amove 3.23333 2.64956 aline 3.34 2.65026 amove 3.34 2.65026 aline 3.44 2.6669 amove 3.44 2.6669 aline 3.54667 2.69947 amove 3.54667 2.69947 aline 3.65333 2.74797 amove 3.65333 2.74797 aline 3.76 2.81241 amove 3.76 2.81241 aline 3.86667 2.89278 amove 3.86667 2.89278 aline 3.96667 2.98909 amove 3.96667 2.98909 aline 4.07333 3.10133 amove 4.07333 3.10133 aline 4.18 3.22951 amove 4.18 3.22951 aline 4.28667 3.37362 amove 4.28667 3.37362 aline 4.39333 3.53366 amove 4.39333 3.53366 aline 4.5 3.70964 amove 2.38667 3.21761 aline 2.34 3.00949 amove 2.49333 3.09084 aline 2.49333 3.09084 amove 2.6 2.97999 aline 2.6 2.97999 amove 2.70667 2.88508 aline 2.70667 2.88508 amove 2.81333 2.80611 aline 2.81333 2.80611 amove 2.91333 2.74307 aline 2.91333 2.74307 amove 3.02 2.69597 aline 3.02 2.69597 amove 3.12667 2.6648 aline 3.12667 2.6648 amove 3.23333 2.64956 aline 3.23333 2.64956 amove 3.34 2.65026 aline 3.34 2.65026 amove 3.44 2.6669 aline 3.44 2.6669 amove 3.54667 2.69947 aline 3.54667 2.69947 amove 3.65333 2.74797 aline 3.65333 2.74797 amove 3.76 2.81241 aline 3.76 2.81241 amove 3.86667 2.89278 aline 3.86667 2.89278 amove 3.96667 2.98909 aline 3.96667 2.98909 amove 4.07333 3.10133 aline 4.07333 3.10133 amove 4.18 3.22951 aline 4.18 3.22951 amove 4.28667 3.37362 aline 4.28667 3.37362 amove 4.39333 3.53366 aline 4.39333 3.53366 amove 4.5 3.70964 aline 4.5 3.70964 amove 2.34 3.00949 aline 2.34 3.00949 amove 2.34 3.00949 aline 2.28667 2.81731 amove 2.28667 2.81731 aline 2.28667 2.81731 amove 2.28667 2.81731 aline 2.23333 2.64106 amove 2.23333 2.64106 aline 2.23333 2.64106 amove 2.23333 2.64106 aline 2.18 2.48075 amove 2.18 2.48075 aline 2.18 2.48075 amove 2.18 2.48075 aline 2.13333 2.33637 amove 2.13333 2.33637 aline 2.13333 2.33637 amove 2.13333 2.33637 aline 2.08 2.20792 amove 2.08 2.20792 aline 2.08 2.20792 amove 2.08 2.20792 aline 2.02667 2.09541 amove 2.02667 2.09541 aline 2.02667 2.09541 amove 2.02667 2.09541 aline 1.97333 1.99884 amove 1.97333 1.99884 aline 1.97333 1.99884 amove 1.97333 1.99884 aline 1.92 1.91819 amove 1.92 1.91819 aline 1.92 1.91819 amove 1.92 1.91819 aline 1.87333 1.85349 amove 1.87333 1.85349 aline 1.87333 1.85349 amove 1.87333 1.85349 aline 1.82 1.80472 amove 1.82 1.80472 aline 1.82 1.80472 amove 1.82 1.80472 aline 1.76667 1.77188 amove 1.76667 1.77188 aline 1.76667 1.77188 amove 1.76667 1.77188 aline 1.71333 1.75498 amove 1.71333 1.75498 aline 1.71333 1.75498 amove 1.71333 1.75498 aline 1.66667 1.75401 amove 1.66667 1.75401 aline 1.66667 1.75401 amove 1.66667 1.75401 aline 1.61333 1.76897 amove 1.61333 1.76897 aline 1.61333 1.76897 amove 1.61333 1.76897 aline 1.56 1.79987 amove 1.56 1.79987 aline 1.56 1.79987 amove 1.56 1.79987 aline 1.50667 1.84671 amove 1.50667 1.84671 aline 1.50667 1.84671 amove 1.50667 1.84671 aline 1.45333 1.90948 amove 1.45333 1.90948 aline 1.45333 1.90948 amove 1.45333 1.90948 aline 1.40667 1.98819 amove 1.53333 1.82768 aline 1.51333 1.86141 amove 1.40667 1.98819 aline 1.51333 1.86141 amove 1.51333 1.86141 aline 1.57333 1.7949 amove 1.40667 1.98819 aline 1.35333 2.08282 amove 1.51333 1.86141 aline 1.46 1.95605 amove 1.6 1.77761 aline 1.56667 1.8452 amove 1.35333 2.08282 aline 1.46 1.95605 amove 1.46 1.95605 aline 1.56667 1.8452 amove 1.56667 1.8452 aline 1.66 1.75662 amove 1.35333 2.08282 aline 1.3 2.1934 amove 1.46 1.95605 aline 1.40667 2.06662 amove 1.56667 1.8452 aline 1.51333 1.95578 amove 1.66 1.76609 aline 1.62 1.86087 amove 1.72667 1.76808 aline 1.72 1.7819 amove 3.41333 2.67161 aline 3.40667 2.68543 amove 1.3 2.1934 aline 1.40667 2.06662 amove 1.40667 2.06662 aline 1.51333 1.95578 amove 1.51333 1.95578 aline 1.62 1.86087 amove 1.62 1.86087 aline 1.72 1.7819 amove 1.72 1.7819 aline 1.74667 1.76614 amove 3.39333 2.66343 aline 3.40667 2.68543 amove 1.3 2.1934 aline 1.24667 2.31991 amove 1.40667 2.06662 aline 1.35333 2.19313 amove 1.51333 1.95578 aline 1.46 2.08229 amove 1.62 1.86087 aline 1.56667 1.98738 amove 1.72 1.7819 aline 1.67333 1.90841 amove 1.79333 1.79793 aline 1.77333 1.84537 amove 3.40667 2.68543 aline 3.35333 2.81194 amove 1.24667 2.31991 aline 1.35333 2.19313 amove 1.35333 2.19313 aline 1.46 2.08229 amove 1.46 2.08229 aline 1.56667 1.98738 amove 1.56667 1.98738 aline 1.67333 1.90841 amove 1.67333 1.90841 aline 1.76667 1.84957 amove 1.77333 1.84537 aline 1.83333 1.81887 amove 3.26667 2.65942 aline 3.35333 2.81194 amove 1.24667 2.31991 aline 1.2 2.46235 amove 1.35333 2.19313 aline 1.3 2.33557 amove 1.46 2.08229 aline 1.40667 2.22473 amove 1.56667 1.98738 aline 1.51333 2.12982 amove 1.67333 1.90841 aline 1.62 2.05085 amove 1.77333 1.84537 aline 1.72667 1.98781 amove 1.86 1.85168 aline 1.82667 1.94071 amove 3.24667 2.65376 aline 3.2 2.7784 amove 3.35333 2.81194 aline 3.30667 2.95438 amove 1.2 2.46235 aline 1.29333 2.34403 amove 1.3 2.33557 aline 1.40667 2.22473 amove 1.40667 2.22473 aline 1.51333 2.12982 amove 1.51333 2.12982 aline 1.62 2.05085 amove 1.62 2.05085 aline 1.72667 1.98781 amove 1.72667 1.98781 aline 1.82667 1.94071 amove 1.82667 1.94071 aline 1.91333 1.91538 amove 3.12667 2.66837 aline 3.2 2.7784 amove 3.2 2.7784 aline 3.30667 2.95438 amove 1.2 2.46235 aline 1.14667 2.62073 amove 1.3 2.33557 aline 1.25333 2.49395 amove 1.40667 2.22473 aline 1.35333 2.38311 amove 1.51333 2.12982 aline 1.46 2.2882 amove 1.62 2.05085 aline 1.56667 2.20923 amove 1.72667 1.98781 aline 1.67333 2.14619 amove 1.82667 1.94071 aline 1.78 2.09908 amove 1.92667 1.92933 aline 1.88 2.06791 amove 1.98667 2.05268 aline 1.98667 2.05268 amove 3.06667 2.69754 aline 3.04 2.77673 amove 3.2 2.7784 aline 3.14667 2.93678 amove 3.30667 2.95438 aline 3.25333 3.11276 amove 1.14667 2.62073 aline 1.25333 2.49395 amove 1.25333 2.49395 aline 1.34667 2.3905 amove 1.35333 2.38311 aline 1.46 2.2882 amove 1.46 2.2882 aline 1.56667 2.20923 amove 1.56667 2.20923 aline 1.67333 2.14619 amove 1.67333 2.14619 aline 1.78 2.09908 amove 1.78 2.09908 aline 1.87333 2.06999 amove 1.88 2.06791 aline 1.98667 2.05268 amove 1.98667 2.05268 aline 2 2.05277 amove 2.99333 2.71368 aline 3.04 2.77673 amove 3.04 2.77673 aline 3.14667 2.93678 amove 3.14667 2.93678 aline 3.25333 3.11276 amove 1.14667 2.62073 aline 1.09333 2.79504 amove 1.25333 2.49395 aline 1.2 2.66826 amove 1.35333 2.38311 aline 1.30667 2.55742 amove 1.46 2.2882 aline 1.40667 2.46251 amove 1.56667 2.20923 aline 1.51333 2.38354 amove 1.67333 2.14619 aline 1.62 2.3205 amove 1.78 2.09908 aline 1.72667 2.2734 amove 1.88 2.06791 aline 1.83333 2.24223 amove 1.98667 2.05268 aline 1.93333 2.22699 amove 2.05333 2.18411 aline 2.04 2.22769 amove 2.9 2.75713 aline 2.88667 2.80693 amove 3.04 2.77673 aline 2.98667 2.95105 amove 3.14667 2.93678 aline 3.09333 3.11109 amove 3.25333 3.11276 aline 3.2 3.28707 amove 1.09333 2.79504 aline 1.2 2.66826 amove 1.2 2.66826 aline 1.30667 2.55742 amove 1.30667 2.55742 aline 1.4 2.46884 amove 1.40667 2.46251 aline 1.51333 2.38354 amove 1.51333 2.38354 aline 1.62 2.3205 amove 1.62 2.3205 aline 1.72667 2.2734 amove 1.72667 2.2734 aline 1.83333 2.24223 amove 1.83333 2.24223 aline 1.92667 2.22801 amove 1.93333 2.22699 aline 2.04 2.22769 amove 2.04 2.22769 aline 2.08667 2.23497 amove 2.86667 2.7829 aline 2.88667 2.80693 amove 2.88667 2.80693 aline 2.98 2.94144 amove 2.98667 2.95105 aline 3.09333 3.11109 amove 3.09333 3.11109 aline 3.2 3.28707 amove 1.09333 2.79504 aline 1.04 2.98529 amove 1.2 2.66826 aline 1.14667 2.85851 amove 1.30667 2.55742 aline 1.25333 2.74767 amove 1.40667 2.46251 aline 1.36 2.65276 amove 1.51333 2.38354 aline 1.46 2.57379 amove 1.62 2.3205 aline 1.56667 2.51075 amove 1.72667 2.2734 aline 1.67333 2.46364 amove 1.83333 2.24223 aline 1.78 2.43247 amove 1.93333 2.22699 aline 1.88667 2.41724 amove 2.04 2.22769 aline 1.98667 2.41794 amove 2.12 2.33945 aline 2.09333 2.43457 amove 2.88667 2.80693 aline 2.83333 2.99718 amove 2.98667 2.95105 aline 2.94 3.14129 amove 3.09333 3.11109 aline 3.04 3.30134 amove 3.2 3.28707 aline 3.14667 3.47732 amove 1.04 2.98529 aline 1.14667 2.85851 amove 1.14667 2.85851 aline 1.25333 2.74767 amove 1.25333 2.74767 aline 1.36 2.65276 amove 1.36 2.65276 aline 1.46 2.57379 amove 1.46 2.57379 aline 1.56667 2.51075 amove 1.56667 2.51075 aline 1.67333 2.46364 amove 1.67333 2.46364 aline 1.78 2.43247 amove 1.78 2.43247 aline 1.88667 2.41724 amove 1.88667 2.41724 aline 1.98667 2.41794 amove 1.98667 2.41794 aline 2.09333 2.43457 amove 2.09333 2.43457 aline 2.16667 2.45696 amove 2.73333 2.87702 aline 2.83333 2.99718 amove 2.83333 2.99718 aline 2.94 3.14129 amove 2.94 3.14129 aline 3.03333 3.29067 amove 3.04 3.30134 aline 3.14667 3.47732 amove 1.04 2.98529 aline 0.986667 3.19147 amove 1.14667 2.85851 aline 1.09333 3.06469 amove 1.25333 2.74767 aline 1.2 2.95385 amove 1.36 2.65276 aline 1.30667 2.85894 amove 1.46 2.57379 aline 1.41333 2.77997 amove 1.56667 2.51075 aline 1.51333 2.71693 amove 1.67333 2.46364 aline 1.62 2.66983 amove 1.78 2.43247 aline 1.72667 2.63866 amove 1.88667 2.41724 aline 1.83333 2.62342 amove 1.98667 2.41794 aline 1.94 2.62412 amove 2.09333 2.43457 aline 2.04 2.64076 amove 2.18667 2.51869 aline 2.14667 2.67332 amove 2.25333 2.72183 aline 2.25333 2.72183 amove 2.72 2.89478 aline 2.67333 3.07519 amove 2.83333 2.99718 aline 2.78 3.20336 amove 2.94 3.14129 aline 2.88667 3.34748 amove 3.04 3.30134 aline 2.99333 3.50752 amove 3.14667 3.47732 aline 3.09333 3.6835 amove 0.986667 3.19147 aline 1.09333 3.06469 amove 1.09333 3.06469 aline 1.2 2.95385 amove 1.2 2.95385 aline 1.30667 2.85894 amove 1.30667 2.85894 aline 1.41333 2.77997 amove 1.41333 2.77997 aline 1.50667 2.72113 amove 1.51333 2.71693 aline 1.62 2.66983 amove 1.62 2.66983 aline 1.72667 2.63866 amove 1.72667 2.63866 aline 1.83333 2.62342 amove 1.83333 2.62342 aline 1.94 2.62412 amove 1.94 2.62412 aline 2.03333 2.63965 amove 2.04 2.64076 aline 2.14667 2.67332 amove 2.14667 2.67332 aline 2.25333 2.72183 amove 2.25333 2.72183 aline 2.25333 2.72183 amove 2.59333 2.99101 aline 2.67333 3.07519 amove 2.67333 3.07519 aline 2.78 3.20336 amove 2.78 3.20336 aline 2.88667 3.34748 amove 2.88667 3.34748 aline 2.99333 3.50752 amove 2.99333 3.50752 aline 3.09333 3.6835 amove 0.986667 3.19147 aline 0.94 3.41359 amove 1.09333 3.06469 aline 1.04667 3.28681 amove 1.2 2.95385 aline 1.14667 3.17597 amove 1.30667 2.85894 aline 1.25333 3.08106 amove 1.41333 2.77997 aline 1.36 3.00209 amove 1.51333 2.71693 aline 1.46667 2.93905 amove 1.62 2.66983 aline 1.57333 2.89194 amove 1.72667 2.63866 aline 1.67333 2.86077 amove 1.83333 2.62342 aline 1.78 2.84554 amove 1.94 2.62412 aline 1.88667 2.84624 amove 2.04 2.64076 aline 1.99333 2.86287 amove 2.14667 2.67332 aline 2.1 2.89544 amove 2.25333 2.72183 aline 2.2 2.94394 amove 2.32 2.95285 aline 2.30667 3.00838 amove 2.54667 3.05814 aline 2.52 3.18506 amove 2.67333 3.07519 aline 2.62667 3.2973 amove 2.78 3.20336 aline 2.72667 3.42548 amove 2.88667 3.34748 aline 2.83333 3.56959 amove 2.99333 3.50752 aline 2.94 3.72964 amove 3.09333 3.6835 aline 3.04667 3.90562 amove 0.94 3.41359 aline 1.04667 3.28681 amove 1.04667 3.28681 aline 1.14 3.18336 amove 1.14667 3.17597 aline 1.25333 3.08106 amove 1.25333 3.08106 aline 1.36 3.00209 amove 1.36 3.00209 aline 1.46667 2.93905 amove 1.46667 2.93905 aline 1.57333 2.89194 amove 1.57333 2.89194 aline 1.66667 2.86285 amove 1.67333 2.86077 aline 1.78 2.84554 amove 1.78 2.84554 aline 1.88667 2.84624 amove 1.88667 2.84624 aline 1.99333 2.86287 amove 1.99333 2.86287 aline 2.1 2.89544 amove 2.1 2.89544 aline 2.19333 2.94071 amove 2.2 2.94394 aline 2.30667 3.00838 amove 2.30667 3.00838 aline 2.34 3.0335 amove 2.46 3.13089 aline 2.52 3.18506 amove 2.52 3.18506 aline 2.62667 3.2973 amove 2.62667 3.2973 aline 2.72667 3.42548 amove 2.72667 3.42548 aline 2.83333 3.56959 amove 2.83333 3.56959 aline 2.94 3.72964 amove 2.94 3.72964 aline 3.04667 3.90562 amove 0.94 3.41359 aline 0.886667 3.65164 amove 1.04667 3.28681 aline 0.993333 3.52486 amove 1.14667 3.17597 aline 1.1 3.41402 amove 1.25333 3.08106 aline 1.2 3.31911 amove 1.36 3.00209 aline 1.30667 3.24014 amove 1.46667 2.93905 aline 1.41333 3.1771 amove 1.57333 2.89194 aline 1.52 3.12999 amove 1.67333 2.86077 aline 1.62667 3.09882 amove 1.78 2.84554 aline 1.72667 3.08359 amove 1.88667 2.84624 aline 1.83333 3.08429 amove 1.99333 2.86287 aline 1.94 3.10092 amove 2.1 2.89544 aline 2.04667 3.13349 amove 2.2 2.94394 aline 2.15333 3.18199 amove 2.30667 3.00838 aline 2.25333 3.24643 amove 2.38 3.23754 aline 2.36 3.32681 amove 2.52 3.18506 aline 2.46667 3.42311 amove 2.62667 3.2973 aline 2.57333 3.53535 amove 2.72667 3.42548 aline 2.68 3.66353 amove 2.83333 3.56959 aline 2.78 3.80764 amove 2.94 3.72964 aline 2.88667 3.96769 amove 3.04667 3.90562 aline 2.99333 4.14367 amove 0.886667 3.65164 aline 0.993333 3.52486 amove 0.993333 3.52486 aline 1.1 3.41402 amove 1.1 3.41402 aline 1.19333 3.32544 amove 1.2 3.31911 aline 1.30667 3.24014 amove 1.30667 3.24014 aline 1.41333 3.1771 amove 1.41333 3.1771 aline 1.52 3.12999 amove 1.52 3.12999 aline 1.62667 3.09882 amove 1.62667 3.09882 aline 1.72667 3.08359 amove 1.72667 3.08359 aline 1.83333 3.08429 amove 1.83333 3.08429 aline 1.94 3.10092 amove 1.94 3.10092 aline 2.04667 3.13349 amove 2.04667 3.13349 aline 2.15333 3.18199 amove 2.15333 3.18199 aline 2.24667 3.24214 amove 2.25333 3.24643 aline 2.36 3.32681 amove 2.36 3.32681 aline 2.46667 3.42311 amove 2.46667 3.42311 aline 2.57333 3.53535 amove 2.57333 3.53535 aline 2.68 3.66353 amove 2.68 3.66353 aline 2.77333 3.79804 amove 2.78 3.80764 aline 2.88667 3.96769 amove 2.88667 3.96769 aline 2.99333 4.14367 amove 0.886667 3.65164 aline 0.833333 3.90562 amove 0.993333 3.52486 aline 0.94 3.77885 amove 1.1 3.41402 aline 1.04667 3.668 amove 1.2 3.31911 aline 1.15333 3.5731 amove 1.30667 3.24014 aline 1.25333 3.49412 amove 1.41333 3.1771 aline 1.36 3.43108 amove 1.52 3.12999 aline 1.46667 3.38398 amove 1.62667 3.09882 aline 1.57333 3.35281 amove 1.72667 3.08359 aline 1.68 3.33757 amove 1.83333 3.08429 aline 1.78 3.33827 amove 1.94 3.10092 aline 1.88667 3.35491 amove 2.04667 3.13349 aline 1.99333 3.38748 amove 2.15333 3.18199 aline 2.1 3.43598 amove 2.25333 3.24643 aline 2.20667 3.50042 amove 2.36 3.32681 aline 2.30667 3.58079 amove 2.46667 3.42311 aline 2.41333 3.6771 amove 2.57333 3.53535 aline 2.52 3.78934 amove 2.68 3.66353 aline 2.62667 3.91752 amove 2.78 3.80764 aline 2.73333 4.06163 amove 2.88667 3.96769 aline 2.83333 4.22167 amove 2.99333 4.14367 aline 2.94 4.39765 amove 0.833333 3.90562 aline 0.94 3.77885 amove 0.94 3.77885 aline 1.04667 3.668 amove 1.04667 3.668 aline 1.15333 3.5731 amove 1.15333 3.5731 aline 1.25333 3.49412 amove 1.25333 3.49412 aline 1.36 3.43108 amove 1.36 3.43108 aline 1.46667 3.38398 amove 1.46667 3.38398 aline 1.57333 3.35281 amove 1.57333 3.35281 aline 1.68 3.33757 amove 1.68 3.33757 aline 1.78 3.33827 amove 1.78 3.33827 aline 1.88667 3.35491 amove 1.88667 3.35491 aline 1.99333 3.38748 amove 1.99333 3.38748 aline 2.1 3.43598 amove 2.1 3.43598 aline 2.20667 3.50042 amove 2.20667 3.50042 aline 2.30667 3.58079 amove 2.30667 3.58079 aline 2.41333 3.6771 amove 2.41333 3.6771 aline 2.52 3.78934 amove 2.52 3.78934 aline 2.62667 3.91752 amove 2.62667 3.91752 aline 2.73333 4.06163 amove 2.73333 4.06163 aline 2.83333 4.22167 amove 2.83333 4.22167 aline 2.94 4.39765 set color BLACK set lstyle 1 set color BLACK set lstyle 1 amove 4.5 1.12027 aline 3.42 1.59448 amove 1.79333 1.54327 aline 0.833333 1.31625 amove 0.833333 3.90562 aline 0.833333 1.31625 amove 0.833333 3.90562 aline 2.94 4.39765 amove 0.833333 3.90562 aline 0.84 3.87388 amove 2.94 4.39765 aline 4.5 3.70964 amove 4.5 3.70964 aline 4.5 3.70964 amove 4.5 3.70964 aline 4.5 1.12027 amove 0.837648 1.31625 aline 2.39327 0.628236 amove 2.39327 0.628236 aline 4.5 1.12027 set just BC set color BLACK set hei 0.0833333 set just TC amove 0.837648 1.31625 aline 0.835626 1.31168 amove 0.795178 1.22022 rotate -23.8587 text 0 rotate 23.8587 amove 1.09692 1.20158 aline 1.0949 1.19701 amove 1.05445 1.10555 rotate -23.8587 text 5 rotate 23.8587 amove 1.35619 1.08691 aline 1.35417 1.08234 amove 1.31372 0.990884 rotate -23.8587 text 10 rotate 23.8587 amove 1.61546 0.972242 aline 1.61343 0.96767 amove 1.57299 0.876215 rotate -23.8587 text 15 rotate 23.8587 amove 1.87473 0.857574 aline 1.8727 0.853001 amove 1.83226 0.761546 rotate -23.8587 text 20 rotate 23.8587 amove 2.134 0.742905 aline 2.13197 0.738332 amove 2.09153 0.646878 rotate -23.8587 text 25 rotate 23.8587 amove 2.39327 0.628236 aline 2.39124 0.623664 amove 2.3508 0.532209 rotate -23.8587 text 30 rotate 23.8587 set just TC set color BLACK set hei 0.0833333 set just TC amove 2.39327 0.628236 aline 2.3944 0.623367 amove 2.41715 0.525988 rotate 13.1458 text 0 rotate -13.1458 amove 2.60394 0.677439 aline 2.60508 0.67257 amove 2.62782 0.575191 rotate 13.1458 text 2 rotate -13.1458 amove 2.81461 0.726642 aline 2.81575 0.721773 amove 2.83849 0.624394 rotate 13.1458 text 4 rotate -13.1458 amove 3.02529 0.775845 aline 3.02642 0.770976 amove 3.04917 0.673597 rotate 13.1458 text 6 rotate -13.1458 amove 3.23596 0.825048 aline 3.2371 0.820179 amove 3.25984 0.7228 rotate 13.1458 text 8 rotate -13.1458 amove 3.44663 0.874251 aline 3.44777 0.869382 amove 3.47051 0.772003 rotate 13.1458 text 10 rotate -13.1458 amove 3.65731 0.923454 aline 3.65844 0.918585 amove 3.68119 0.821206 rotate 13.1458 text 12 rotate -13.1458 amove 3.86798 0.972657 aline 3.86912 0.967788 amove 3.89186 0.870409 rotate 13.1458 text 14 rotate -13.1458 amove 4.07865 1.02186 aline 4.07979 1.01699 amove 4.10253 0.919612 rotate 13.1458 text 16 rotate -13.1458 amove 4.28933 1.07106 aline 4.29046 1.06619 amove 4.31321 0.968815 rotate 13.1458 text 18 rotate -13.1458 amove 4.5 1.12027 aline 4.50114 1.1154 amove 4.52388 1.01802 rotate 13.1458 text 20 rotate -13.1458 set just TC set color BLACK set hei 0.0833333 set just RC amove 0.837648 1.31625 aline 0.832648 1.31625 amove 0.732648 1.31625 text 0 amove 0.837648 1.71461 aline 0.832648 1.71461 amove 0.732648 1.71461 text 50 amove 0.837648 2.11298 aline 0.832648 2.11298 amove 0.732648 2.11298 text 100 amove 0.837648 2.51135 aline 0.832648 2.51135 amove 0.732648 2.51135 text 150 amove 0.837648 2.90971 aline 0.832648 2.90971 amove 0.732648 2.90971 text 200 amove 0.837648 3.30808 aline 0.832648 3.30808 amove 0.732648 3.30808 text 250 amove 0.837648 3.70644 aline 0.832648 3.70644 amove 0.732648 3.70644 text 300 set just BC set color BLACK set lstyle 1 set color BLACK set lstyle 1 set color BLACK set lstyle 1 amove 0.833333 1.31625 aline 1.8 1.53695 amove 0.886667 1.29331 aline 1.82667 1.51164 amove 0.94 1.27038 aline 1.86 1.48 amove 0.986667 1.24745 aline 1.88667 1.45747 amove 1.04 1.22451 aline 1.92667 1.42786 amove 1.09333 1.20158 aline 1.96 1.40318 amove 1.14667 1.17865 aline 2 1.37655 amove 1.2 1.15571 aline 2.04667 1.34897 amove 1.24667 1.13278 aline 2.08667 1.32533 amove 1.3 1.10984 aline 2.12667 1.30216 amove 1.35333 1.08691 aline 2.18 1.27677 amove 3.38667 1.56415 aline 3.46 1.57894 amove 1.40667 1.06398 aline 2.23333 1.25322 amove 3.33333 1.516 aline 3.51333 1.55601 amove 1.45333 1.04104 aline 2.28667 1.2345 amove 3.28 1.46984 aline 3.56 1.53307 amove 1.50667 1.01811 aline 2.35333 1.21429 amove 3.21333 1.4196 aline 3.61333 1.51014 amove 1.56 0.995176 aline 2.42667 1.19738 amove 3.13333 1.36264 aline 3.66667 1.48721 amove 1.61333 0.972242 aline 2.53333 1.18613 amove 3.04 1.30626 aline 3.72 1.46427 amove 1.66667 0.949309 aline 2.74 1.19982 amove 2.79333 1.2124 aline 3.77333 1.44134 amove 1.71333 0.926375 aline 3.82 1.4184 amove 1.76667 0.903441 aline 3.87333 1.39547 amove 1.82 0.880508 aline 3.92667 1.37254 amove 1.87333 0.857574 aline 3.98 1.3496 amove 1.92 0.83464 aline 4.02667 1.32667 amove 1.97333 0.811706 aline 4.08 1.30374 amove 2.02667 0.788773 aline 4.13333 1.2808 amove 2.08 0.765839 aline 4.18667 1.25787 amove 2.13333 0.742905 aline 4.24 1.23494 amove 2.18 0.719971 aline 4.28667 1.212 amove 2.23333 0.697038 aline 4.34 1.18907 amove 2.28667 0.674104 aline 4.39333 1.16613 amove 2.34 0.65117 aline 4.44667 1.1432 amove 2.38667 0.628236 aline 4.5 1.12027 amove 0.833333 1.31625 aline 2.38667 0.628236 amove 0.94 1.34085 aline 2.49333 0.652838 amove 1.04667 1.36545 aline 2.6 0.677439 amove 1.15333 1.39005 aline 2.70667 0.702041 amove 1.25333 1.41465 aline 2.81333 0.726642 amove 1.36 1.43926 aline 2.91333 0.751244 amove 1.46667 1.46386 aline 3.02 0.775845 amove 1.57333 1.48846 aline 3.12667 0.800447 amove 1.68 1.51306 aline 2.04 1.35291 amove 2.36 1.21242 aline 3.23333 0.825048 amove 1.78 1.53766 aline 1.82 1.51796 amove 2.58 1.18644 aline 3.34 0.84965 amove 2.72 1.1965 aline 3.44 0.874251 amove 2.82667 1.22258 aline 3.54667 0.898853 amove 2.92 1.25162 aline 3.65333 0.923454 amove 3 1.28708 aline 3.76 0.948056 amove 3.07333 1.3264 aline 3.86667 0.972657 amove 3.14 1.36667 aline 3.96667 0.997259 amove 3.2 1.40956 aline 4.07333 1.02186 amove 3.26 1.45477 aline 4.18 1.04646 amove 3.32 1.50396 aline 4.28667 1.07106 amove 3.37333 1.55211 aline 4.39333 1.09566 amove 3.42667 1.60058 aline 4.5 1.12027 gle-graphics-4.2.4c/gle-refman/utilities/fig/surf/surf3.dat0000644000000000000000000000523311405447072022246 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 3 2 1.5 4 3 2 gle-graphics-4.2.4c/gle-refman/utilities/fig/surf/surf5b.big0000644000000000000000000016222411405447072022407 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! amove 9 9 set hei 0.3 set color GREEN set lstyle 1 amove 2.38 1.33673 aline 2.48667 1.31919 amove 2.48667 1.31919 aline 2.59333 1.3061 amove 2.59333 1.3061 aline 2.69333 1.29746 amove 2.69333 1.29746 aline 2.8 1.29327 amove 2.8 1.29327 aline 2.90667 1.29352 amove 2.90667 1.29352 aline 3.01333 1.29823 amove 3.01333 1.29823 aline 3.12 1.30739 amove 3.12 1.30739 aline 3.22667 1.321 amove 3.22667 1.321 aline 3.33333 1.33906 amove 3.33333 1.33906 aline 3.44 1.36156 amove 3.44 1.36156 aline 3.54667 1.38852 amove 3.54667 1.38852 aline 3.64667 1.41993 amove 3.64667 1.41993 aline 3.75333 1.45578 amove 3.75333 1.45578 aline 3.86 1.49609 amove 3.86 1.49609 aline 3.96667 1.54085 amove 3.96667 1.54085 aline 4.07333 1.59005 amove 4.07333 1.59005 aline 4.18 1.64371 amove 4.18 1.64371 aline 4.28667 1.70181 amove 4.28667 1.70181 aline 4.39333 1.76437 amove 4.39333 1.76437 aline 4.5 1.83138 amove 2.38 1.33673 aline 2.32667 1.29526 amove 2.48667 1.31919 aline 2.43333 1.27772 amove 2.59333 1.3061 aline 2.54 1.26463 amove 2.69333 1.29746 aline 2.64667 1.25599 amove 2.8 1.29327 aline 2.75333 1.2518 amove 2.90667 1.29352 aline 2.85333 1.25206 amove 3.01333 1.29823 aline 2.96 1.25677 amove 3.12 1.30739 aline 3.06667 1.26592 amove 3.22667 1.321 aline 3.17333 1.27953 amove 3.33333 1.33906 aline 3.28 1.29759 amove 3.44 1.36156 aline 3.38667 1.3201 amove 3.54667 1.38852 aline 3.49333 1.34705 amove 3.64667 1.41993 aline 3.6 1.37846 amove 3.75333 1.45578 aline 3.7 1.41432 amove 3.86 1.49609 aline 3.80667 1.45462 amove 3.96667 1.54085 aline 3.91333 1.49938 amove 4.07333 1.59005 aline 4.02 1.54859 amove 4.18 1.64371 aline 4.12667 1.60224 amove 4.28667 1.70181 aline 4.23333 1.66035 amove 4.39333 1.76437 aline 4.34 1.7229 amove 4.5 1.83138 aline 4.44667 1.78991 amove 2.32667 1.29526 aline 2.43333 1.27772 amove 2.43333 1.27772 aline 2.54 1.26463 amove 2.54 1.26463 aline 2.64667 1.25599 amove 2.64667 1.25599 aline 2.75333 1.2518 amove 2.75333 1.2518 aline 2.85333 1.25206 amove 2.85333 1.25206 aline 2.96 1.25677 amove 2.96 1.25677 aline 3.06667 1.26592 amove 3.06667 1.26592 aline 3.17333 1.27953 amove 3.17333 1.27953 aline 3.28 1.29759 amove 3.28 1.29759 aline 3.38667 1.3201 amove 3.38667 1.3201 aline 3.49333 1.34705 amove 3.49333 1.34705 aline 3.6 1.37846 amove 3.6 1.37846 aline 3.7 1.41432 amove 3.7 1.41432 aline 3.80667 1.45462 amove 3.80667 1.45462 aline 3.91333 1.49938 amove 3.91333 1.49938 aline 4.02 1.54859 amove 4.02 1.54859 aline 4.12667 1.60224 amove 4.12667 1.60224 aline 4.23333 1.66035 amove 4.23333 1.66035 aline 4.34 1.7229 amove 4.34 1.7229 aline 4.44667 1.78991 amove 2.32667 1.29526 aline 2.27333 1.25825 amove 2.43333 1.27772 aline 2.38 1.24071 amove 2.54 1.26463 aline 2.48667 1.22762 amove 2.64667 1.25599 aline 2.59333 1.21897 amove 2.75333 1.2518 aline 2.7 1.21478 amove 2.85333 1.25206 aline 2.80667 1.21504 amove 2.96 1.25677 aline 2.90667 1.21975 amove 3.06667 1.26592 aline 3.01333 1.22891 amove 3.17333 1.27953 aline 3.12 1.24251 amove 3.28 1.29759 aline 3.22667 1.26057 amove 3.38667 1.3201 aline 3.33333 1.28308 amove 3.49333 1.34705 aline 3.44 1.31004 amove 3.6 1.37846 aline 3.54667 1.34144 amove 3.7 1.41432 aline 3.65333 1.3773 amove 3.80667 1.45462 aline 3.76 1.41761 amove 3.91333 1.49938 aline 3.86 1.46236 amove 4.02 1.54859 aline 3.96667 1.51157 amove 4.12667 1.60224 aline 4.07333 1.56523 amove 4.23333 1.66035 aline 4.18 1.62333 amove 4.34 1.7229 aline 4.28667 1.68589 amove 4.44667 1.78991 aline 4.39333 1.75289 amove 2.27333 1.25825 aline 2.38 1.24071 amove 2.38 1.24071 aline 2.48667 1.22762 amove 2.48667 1.22762 aline 2.59333 1.21897 amove 2.59333 1.21897 aline 2.7 1.21478 amove 2.7 1.21478 aline 2.80667 1.21504 amove 2.80667 1.21504 aline 2.90667 1.21975 amove 2.90667 1.21975 aline 3.01333 1.22891 amove 3.01333 1.22891 aline 3.12 1.24251 amove 3.12 1.24251 aline 3.22667 1.26057 amove 3.22667 1.26057 aline 3.33333 1.28308 amove 3.33333 1.28308 aline 3.44 1.31004 amove 3.44 1.31004 aline 3.54667 1.34144 amove 3.54667 1.34144 aline 3.65333 1.3773 amove 3.65333 1.3773 aline 3.76 1.41761 amove 3.76 1.41761 aline 3.86 1.46236 amove 3.86 1.46236 aline 3.96667 1.51157 amove 3.96667 1.51157 aline 4.07333 1.56523 amove 4.07333 1.56523 aline 4.18 1.62333 amove 4.18 1.62333 aline 4.28667 1.68589 amove 4.28667 1.68589 aline 4.39333 1.75289 amove 2.27333 1.25825 aline 2.22 1.22568 amove 2.38 1.24071 aline 2.32667 1.20814 amove 2.48667 1.22762 aline 2.43333 1.19505 amove 2.59333 1.21897 aline 2.54 1.18641 amove 2.7 1.21478 aline 2.64667 1.18222 amove 2.80667 1.21504 aline 2.75333 1.18247 amove 2.90667 1.21975 aline 2.86 1.18718 amove 3.01333 1.22891 aline 2.96667 1.19634 amove 3.12 1.24251 aline 3.06667 1.20995 amove 3.22667 1.26057 aline 3.17333 1.228 amove 3.33333 1.28308 aline 3.28 1.25051 amove 3.44 1.31004 aline 3.38667 1.27747 amove 3.54667 1.34144 aline 3.49333 1.30888 amove 3.65333 1.3773 aline 3.6 1.34473 amove 3.76 1.41761 aline 3.70667 1.38504 amove 3.86 1.46236 aline 3.81333 1.4298 amove 3.96667 1.51157 aline 3.92 1.479 amove 4.07333 1.56523 aline 4.02 1.53266 amove 4.18 1.62333 aline 4.12667 1.59076 amove 4.28667 1.68589 aline 4.23333 1.65332 amove 4.39333 1.75289 aline 4.39333 1.75289 amove 2.22 1.22568 aline 2.32667 1.20814 amove 2.32667 1.20814 aline 2.43333 1.19505 amove 2.43333 1.19505 aline 2.54 1.18641 amove 2.54 1.18641 aline 2.64667 1.18222 amove 2.64667 1.18222 aline 2.75333 1.18247 amove 2.75333 1.18247 aline 2.86 1.18718 amove 2.86 1.18718 aline 2.96667 1.19634 amove 2.96667 1.19634 aline 3.06667 1.20995 amove 3.06667 1.20995 aline 3.17333 1.228 amove 3.17333 1.228 aline 3.28 1.25051 amove 3.28 1.25051 aline 3.38667 1.27747 amove 3.38667 1.27747 aline 3.49333 1.30888 amove 3.49333 1.30888 aline 3.6 1.34473 amove 3.6 1.34473 aline 3.70667 1.38504 amove 3.70667 1.38504 aline 3.81333 1.4298 amove 3.81333 1.4298 aline 3.92 1.479 amove 3.92 1.479 aline 4.02 1.53266 amove 4.02 1.53266 aline 4.12667 1.59076 amove 4.12667 1.59076 aline 4.23333 1.65332 amove 4.23333 1.65332 aline 4.23333 1.65332 amove 2.22 1.22568 aline 2.17333 1.19756 amove 2.32667 1.20814 aline 2.27333 1.18002 amove 2.43333 1.19505 aline 2.38 1.16693 amove 2.54 1.18641 aline 2.48667 1.15829 amove 2.64667 1.18222 aline 2.59333 1.1541 amove 2.75333 1.18247 aline 2.7 1.15436 amove 2.86 1.18718 aline 2.80667 1.15906 amove 2.96667 1.19634 aline 2.91333 1.16822 amove 3.06667 1.20995 aline 3.02 1.18183 amove 3.17333 1.228 aline 3.12 1.19989 amove 3.28 1.25051 aline 3.22667 1.2224 amove 3.38667 1.27747 aline 3.33333 1.24935 amove 3.49333 1.30888 aline 3.44 1.28076 amove 3.6 1.34473 aline 3.54667 1.31662 amove 3.70667 1.38504 aline 3.65333 1.35692 amove 3.81333 1.4298 aline 3.76 1.40168 amove 3.92 1.479 aline 3.86667 1.45089 amove 4.02 1.53266 aline 3.97333 1.50454 amove 4.12667 1.59076 aline 4.12667 1.59076 amove 4.23333 1.65332 aline 4.23333 1.65332 amove 2.17333 1.19756 aline 2.26667 1.18119 amove 2.27333 1.18002 aline 2.38 1.16693 amove 2.38 1.16693 aline 2.48667 1.15829 amove 2.48667 1.15829 aline 2.59333 1.1541 amove 2.59333 1.1541 aline 2.7 1.15436 amove 2.7 1.15436 aline 2.80667 1.15906 amove 2.80667 1.15906 aline 2.91333 1.16822 amove 2.91333 1.16822 aline 3.02 1.18183 amove 3.02 1.18183 aline 3.12 1.19989 amove 3.12 1.19989 aline 3.22667 1.2224 amove 3.22667 1.2224 aline 3.33333 1.24935 amove 3.33333 1.24935 aline 3.44 1.28076 amove 3.44 1.28076 aline 3.54667 1.31662 amove 3.54667 1.31662 aline 3.65333 1.35692 amove 3.65333 1.35692 aline 3.76 1.40168 amove 3.76 1.40168 aline 3.86667 1.45089 amove 3.86667 1.45089 aline 3.97333 1.50454 amove 3.97333 1.50454 aline 4.04667 1.54715 amove 2.17333 1.19756 aline 2.12 1.1739 amove 2.27333 1.18002 aline 2.22667 1.15635 amove 2.38 1.16693 aline 2.32667 1.14326 amove 2.48667 1.15829 aline 2.43333 1.13462 amove 2.59333 1.1541 aline 2.54 1.13043 amove 2.7 1.15436 aline 2.64667 1.13069 amove 2.80667 1.15906 aline 2.75333 1.1354 amove 2.91333 1.16822 aline 2.86 1.14456 amove 3.02 1.18183 aline 2.96667 1.15816 amove 3.12 1.19989 aline 3.07333 1.17622 amove 3.22667 1.2224 aline 3.18 1.19873 amove 3.33333 1.24935 aline 3.28 1.22568 amove 3.44 1.28076 aline 3.38667 1.25709 amove 3.54667 1.31662 aline 3.49333 1.29295 amove 3.65333 1.35692 aline 3.6 1.33326 amove 3.76 1.40168 aline 3.70667 1.37801 amove 3.86667 1.45089 aline 3.86667 1.45089 amove 3.97333 1.50454 aline 3.97333 1.50454 amove 2.12 1.1739 aline 2.22667 1.15635 amove 2.22667 1.15635 aline 2.32667 1.14326 amove 2.32667 1.14326 aline 2.43333 1.13462 amove 2.43333 1.13462 aline 2.54 1.13043 amove 2.54 1.13043 aline 2.64667 1.13069 amove 2.64667 1.13069 aline 2.75333 1.1354 amove 2.75333 1.1354 aline 2.86 1.14456 amove 2.86 1.14456 aline 2.96667 1.15816 amove 2.96667 1.15816 aline 3.07333 1.17622 amove 3.07333 1.17622 aline 3.18 1.19873 amove 3.18 1.19873 aline 3.28 1.22568 amove 3.28 1.22568 aline 3.38667 1.25709 amove 3.38667 1.25709 aline 3.49333 1.29295 amove 3.49333 1.29295 aline 3.6 1.33326 amove 3.6 1.33326 aline 3.70667 1.37801 amove 3.70667 1.37801 aline 3.70667 1.37801 amove 2.12 1.1739 aline 2.06667 1.15468 amove 2.22667 1.15635 aline 2.17333 1.13714 amove 2.32667 1.14326 aline 2.28 1.12405 amove 2.43333 1.13462 aline 2.38667 1.1154 amove 2.54 1.13043 aline 2.48667 1.11121 amove 2.64667 1.13069 aline 2.59333 1.11147 amove 2.75333 1.1354 aline 2.7 1.11618 amove 2.86 1.14456 aline 2.80667 1.12534 amove 2.96667 1.15816 aline 2.91333 1.13895 amove 3.07333 1.17622 aline 3.02 1.157 amove 3.18 1.19873 aline 3.12667 1.17951 amove 3.28 1.22568 aline 3.23333 1.20647 amove 3.38667 1.25709 aline 3.34 1.23787 amove 3.49333 1.29295 aline 3.44 1.27373 amove 3.6 1.33326 aline 3.6 1.33326 amove 3.70667 1.37801 aline 3.70667 1.37801 amove 2.06667 1.15468 aline 2.17333 1.13714 amove 2.17333 1.13714 aline 2.28 1.12405 amove 2.28 1.12405 aline 2.38667 1.1154 amove 2.38667 1.1154 aline 2.48 1.11149 amove 2.48667 1.11121 aline 2.59333 1.11147 amove 2.59333 1.11147 aline 2.7 1.11618 amove 2.7 1.11618 aline 2.80667 1.12534 amove 2.80667 1.12534 aline 2.91333 1.13895 amove 2.91333 1.13895 aline 3.02 1.157 amove 3.02 1.157 aline 3.12667 1.17951 amove 3.12667 1.17951 aline 3.23333 1.20647 amove 3.23333 1.20647 aline 3.34 1.23787 amove 3.34 1.23787 aline 3.44 1.27373 amove 3.44 1.27373 aline 3.44 1.27373 amove 2.06667 1.15468 aline 2.01333 1.13991 amove 2.17333 1.13714 aline 2.12 1.12237 amove 2.28 1.12405 aline 2.22667 1.10928 amove 2.38667 1.1154 aline 2.33333 1.10064 amove 2.48667 1.11121 aline 2.44 1.09645 amove 2.59333 1.11147 aline 2.54 1.0967 amove 2.7 1.11618 aline 2.64667 1.10141 amove 2.80667 1.12534 aline 2.75333 1.11057 amove 2.91333 1.13895 aline 2.86 1.12418 amove 3.02 1.157 aline 2.96667 1.14224 amove 3.12667 1.17951 aline 3.07333 1.16474 amove 3.23333 1.20647 aline 3.18 1.1917 amove 3.34 1.23787 aline 3.34 1.23787 amove 3.44 1.27373 aline 3.44 1.27373 amove 2.01333 1.13991 aline 2.12 1.12237 amove 2.12 1.12237 aline 2.22667 1.10928 amove 2.22667 1.10928 aline 2.33333 1.10064 amove 2.33333 1.10064 aline 2.44 1.09645 amove 2.44 1.09645 aline 2.54 1.0967 amove 2.54 1.0967 aline 2.64667 1.10141 amove 2.64667 1.10141 aline 2.75333 1.11057 amove 2.75333 1.11057 aline 2.86 1.12418 amove 2.86 1.12418 aline 2.96667 1.14224 amove 2.96667 1.14224 aline 3.07333 1.16474 amove 3.07333 1.16474 aline 3.18 1.1917 amove 3.18 1.1917 aline 3.18 1.1917 amove 2.01333 1.13991 aline 1.96 1.12959 amove 2.12 1.12237 aline 2.06667 1.11205 amove 2.22667 1.10928 aline 2.17333 1.09896 amove 2.33333 1.10064 aline 2.28 1.09032 amove 2.44 1.09645 aline 2.38667 1.08613 amove 2.54 1.0967 aline 2.49333 1.08639 amove 2.64667 1.10141 aline 2.6 1.09109 amove 2.75333 1.11057 aline 2.7 1.10025 amove 2.86 1.12418 aline 2.80667 1.11386 amove 2.96667 1.14224 aline 2.91333 1.13192 amove 3.07333 1.16474 aline 3.07333 1.16474 amove 3.18 1.1917 aline 3.18 1.1917 amove 1.96 1.12959 aline 2.06667 1.11205 amove 2.06667 1.11205 aline 2.17333 1.09896 amove 2.17333 1.09896 aline 2.28 1.09032 amove 2.28 1.09032 aline 2.38667 1.08613 amove 2.38667 1.08613 aline 2.49333 1.08639 amove 2.49333 1.08639 aline 2.6 1.09109 amove 2.6 1.09109 aline 2.69333 1.09964 amove 2.7 1.10025 aline 2.80667 1.11386 amove 2.80667 1.11386 aline 2.91333 1.13192 amove 2.91333 1.13192 aline 2.91333 1.13192 amove 1.96 1.12959 aline 1.90667 1.12372 amove 2.06667 1.11205 aline 2.01333 1.10618 amove 2.17333 1.09896 aline 2.12 1.09309 amove 2.28 1.09032 aline 2.22667 1.08445 amove 2.38667 1.08613 aline 2.33333 1.08026 amove 2.49333 1.08639 aline 2.44 1.08052 amove 2.6 1.09109 aline 2.54667 1.08523 amove 2.7 1.10025 aline 2.65333 1.09438 amove 2.80667 1.11386 aline 2.80667 1.11386 amove 2.79333 1.11218 aline 2.79333 1.11218 amove 2.78 1.11051 aline 2.78 1.11051 amove 2.76667 1.10883 aline 2.76667 1.10883 amove 2.91333 1.13192 aline 2.91333 1.13192 amove 1.90667 1.12372 aline 2.01333 1.10618 amove 2.01333 1.10618 aline 2.12 1.09309 amove 2.12 1.09309 aline 2.22667 1.08445 amove 2.22667 1.08445 aline 2.33333 1.08026 amove 2.33333 1.08026 aline 2.44 1.08052 amove 2.44 1.08052 aline 2.54667 1.08523 amove 2.54667 1.08523 aline 2.65333 1.09438 amove 2.65333 1.09438 aline 2.65333 1.09438 amove 2.66667 1.09608 aline 2.66667 1.09608 amove 2.68 1.09779 aline 2.68 1.09779 amove 2.69333 1.09949 aline 2.69333 1.09949 amove 2.70667 1.10119 aline 2.70667 1.10119 amove 2.72 1.10289 aline 2.72 1.10289 amove 2.73333 1.10459 aline 2.73333 1.10459 amove 2.74667 1.10629 aline 2.74667 1.10629 amove 2.76 1.10799 aline 2.76 1.10799 amove 2.76 1.10799 aline 2.76 1.10799 amove 1.90667 1.12372 aline 1.86 1.12231 amove 2.01333 1.10618 aline 1.96667 1.10476 amove 2.12 1.09309 aline 2.06667 1.09167 amove 2.22667 1.08445 aline 2.17333 1.08303 amove 2.33333 1.08026 aline 2.28 1.07884 amove 2.44 1.08052 aline 2.38667 1.0791 amove 2.54667 1.08523 aline 2.54667 1.08523 amove 2.65333 1.09438 aline 2.65333 1.09438 amove 2.76 1.10799 aline 2.76 1.10799 amove 1.86 1.12231 aline 1.96667 1.10476 amove 1.96667 1.10476 aline 2.06667 1.09167 amove 2.06667 1.09167 aline 2.17333 1.08303 amove 2.17333 1.08303 aline 2.28 1.07884 amove 2.28 1.07884 aline 2.38667 1.0791 amove 2.38667 1.0791 aline 2.38667 1.0791 amove 1.86 1.12231 aline 1.80667 1.12534 amove 1.96667 1.10476 aline 1.91333 1.1078 amove 2.06667 1.09167 aline 2.02 1.09471 amove 2.17333 1.08303 aline 2.12 1.08606 amove 2.28 1.07884 aline 2.28 1.07884 amove 2.38667 1.0791 aline 2.38667 1.0791 amove 1.80667 1.12534 aline 1.91333 1.1078 amove 1.91333 1.1078 aline 2.02 1.09471 amove 2.02 1.09471 aline 2.12 1.08606 amove 2.12 1.08606 aline 2.12 1.08606 amove 1.80667 1.12534 aline 1.75333 1.13282 amove 1.91333 1.1078 aline 1.86 1.11528 amove 2.02 1.09471 aline 2.02 1.09471 amove 2.12 1.08606 aline 2.12 1.08606 amove 1.75333 1.13282 aline 1.86 1.11528 amove 1.86 1.11528 aline 1.86 1.11528 amove 1.75333 1.13282 aline 1.7 1.14475 amove 1.86 1.11528 aline 1.86 1.11528 amove 1.7 1.14475 aline 1.7 1.14475 amove 1.7 1.14475 aline 1.64667 1.16113 amove 1.64667 1.16113 aline 1.64667 1.16113 amove 1.64667 1.16113 aline 1.6 1.18196 amove 1.6 1.18196 aline 1.6 1.18196 amove 1.6 1.18196 aline 1.54667 1.20724 amove 1.54667 1.20724 aline 1.54667 1.20724 amove 1.54667 1.20724 aline 1.49333 1.23697 amove 1.49333 1.23697 aline 1.49333 1.23697 amove 1.49333 1.23697 aline 1.44 1.27115 amove 1.44 1.27115 aline 1.44 1.27115 amove 1.44 1.27115 aline 1.38667 1.30978 amove 1.38667 1.30978 aline 1.38667 1.30978 amove 1.38667 1.30978 aline 1.33333 1.35286 amove 1.33333 1.35286 aline 1.33333 1.35286 amove 1.33333 1.35286 aline 1.28667 1.40039 amove 1.28667 1.40039 aline 1.28667 1.40039 amove 1.28667 1.40039 aline 1.23333 1.45237 amove 1.23333 1.45237 aline 1.23333 1.45237 amove 1.23333 1.45237 aline 1.18 1.5088 amove 1.18 1.5088 aline 1.18 1.5088 amove 1.18 1.5088 aline 1.12667 1.56968 amove 1.12667 1.56968 aline 1.12667 1.56968 amove 1.12667 1.56968 aline 1.07333 1.63501 amove 1.07333 1.63501 aline 1.07333 1.63501 amove 1.07333 1.63501 aline 1.02667 1.70479 amove 1.02667 1.70479 aline 1.02667 1.70479 amove 1.02667 1.70479 aline 0.973333 1.77902 amove 0.973333 1.77902 aline 0.973333 1.77902 amove 0.973333 1.77902 aline 0.92 1.85769 amove 0.92 1.85769 aline 0.92 1.85769 amove 0.92 1.85769 aline 0.866667 1.94082 amove 0.866667 1.94082 aline 0.866667 1.94082 amove 0.866667 1.94082 aline 0.813333 2.0284 amove 0.813333 2.0284 aline 0.813333 2.0284 set color BLACK set lstyle 1 amove 2.38 1.33673 aline 2.48667 1.31919 amove 2.48667 1.31919 aline 2.59333 1.3061 amove 2.59333 1.3061 aline 2.69333 1.29746 amove 2.69333 1.29746 aline 2.8 1.29327 amove 2.8 1.29327 aline 2.90667 1.29352 amove 2.90667 1.29352 aline 3.01333 1.29823 amove 3.01333 1.29823 aline 3.12 1.30739 amove 3.12 1.30739 aline 3.22667 1.321 amove 3.22667 1.321 aline 3.33333 1.33906 amove 3.33333 1.33906 aline 3.44 1.36156 amove 3.44 1.36156 aline 3.54667 1.38852 amove 3.54667 1.38852 aline 3.64667 1.41993 amove 3.64667 1.41993 aline 3.75333 1.45578 amove 3.75333 1.45578 aline 3.86 1.49609 amove 3.86 1.49609 aline 3.96667 1.54085 amove 3.96667 1.54085 aline 4.07333 1.59005 amove 4.07333 1.59005 aline 4.18 1.64371 amove 4.18 1.64371 aline 4.28667 1.70181 amove 4.28667 1.70181 aline 4.39333 1.76437 amove 4.39333 1.76437 aline 4.5 1.83138 amove 2.38 1.33673 aline 2.32667 1.29526 amove 2.48667 1.31919 aline 2.48667 1.31919 amove 2.59333 1.3061 aline 2.59333 1.3061 amove 2.69333 1.29746 aline 2.69333 1.29746 amove 2.8 1.29327 aline 2.8 1.29327 amove 2.90667 1.29352 aline 2.90667 1.29352 amove 3.01333 1.29823 aline 3.01333 1.29823 amove 3.12 1.30739 aline 3.12 1.30739 amove 3.22667 1.321 aline 3.22667 1.321 amove 3.33333 1.33906 aline 3.33333 1.33906 amove 3.44 1.36156 aline 3.44 1.36156 amove 3.54667 1.38852 aline 3.54667 1.38852 amove 3.64667 1.41993 aline 3.64667 1.41993 amove 3.75333 1.45578 aline 3.75333 1.45578 amove 3.86 1.49609 aline 3.86 1.49609 amove 3.96667 1.54085 aline 3.96667 1.54085 amove 4.07333 1.59005 aline 4.07333 1.59005 amove 4.18 1.64371 aline 4.18 1.64371 amove 4.28667 1.70181 aline 4.28667 1.70181 amove 4.39333 1.76437 aline 4.39333 1.76437 amove 4.5 1.83138 aline 4.5 1.83138 amove 2.32667 1.29526 aline 2.32667 1.29526 amove 2.32667 1.29526 aline 2.27333 1.25825 amove 2.27333 1.25825 aline 2.27333 1.25825 amove 2.27333 1.25825 aline 2.22 1.22568 amove 2.22 1.22568 aline 2.22 1.22568 amove 2.22 1.22568 aline 2.17333 1.19756 amove 2.17333 1.19756 aline 2.17333 1.19756 amove 2.17333 1.19756 aline 2.12 1.1739 amove 2.12 1.1739 aline 2.12 1.1739 amove 2.12 1.1739 aline 2.06667 1.15468 amove 4.2 1.65481 aline 4.18667 1.64932 amove 2.06667 1.15468 aline 2.06667 1.15468 amove 4.17333 1.64095 aline 4.18667 1.64932 amove 2.06667 1.15468 aline 2.01333 1.13991 amove 4.18667 1.64932 aline 4.13333 1.63456 amove 2.01333 1.13991 aline 2.01333 1.13991 amove 4.03333 1.57174 aline 4.13333 1.63456 amove 2.01333 1.13991 aline 1.96 1.12959 amove 4.02 1.56626 aline 3.97333 1.55723 amove 4.13333 1.63456 aline 4.08 1.62424 amove 1.96 1.12959 aline 1.96 1.12959 amove 3.89333 1.51032 aline 3.97333 1.55723 amove 3.97333 1.55723 aline 4.08 1.62424 amove 1.96 1.12959 aline 1.90667 1.12372 amove 3.84667 1.49248 aline 3.81333 1.48881 amove 3.97333 1.55723 aline 3.92 1.55136 amove 4.08 1.62424 aline 4.02667 1.61837 amove 1.90667 1.12372 aline 1.90667 1.12372 amove 3.75333 1.45612 aline 3.81333 1.48881 amove 3.81333 1.48881 aline 3.92 1.55136 amove 3.92 1.55136 aline 4.02667 1.61837 amove 1.90667 1.12372 aline 1.86 1.12231 amove 3.67333 1.42969 aline 3.66 1.42928 amove 3.81333 1.48881 aline 3.76667 1.48739 amove 3.92 1.55136 aline 3.86667 1.54995 amove 4.02667 1.61837 aline 3.97333 1.61695 amove 1.86 1.12231 aline 1.86 1.12231 amove 3.63333 1.41587 aline 3.66 1.42928 amove 3.66 1.42928 aline 3.76667 1.48739 amove 3.76667 1.48739 aline 3.86667 1.54995 amove 3.86667 1.54995 aline 3.97333 1.61695 amove 1.86 1.12231 aline 1.80667 1.12534 amove 3.5 1.37866 aline 3.5 1.37866 amove 3.66 1.42928 aline 3.60667 1.43232 amove 3.76667 1.48739 aline 3.71333 1.49042 amove 3.86667 1.54995 aline 3.82 1.55298 amove 3.97333 1.61695 aline 3.92 1.61998 amove 1.80667 1.12534 aline 1.80667 1.12534 amove 3.49333 1.37558 aline 3.5 1.37866 amove 3.5 1.37866 aline 3.60667 1.43232 amove 3.60667 1.43232 aline 3.71333 1.49042 amove 3.71333 1.49042 aline 3.82 1.55298 amove 3.82 1.55298 aline 3.91333 1.61552 amove 1.80667 1.12534 aline 1.75333 1.13282 amove 3.5 1.37866 aline 3.44667 1.38614 amove 3.60667 1.43232 aline 3.55333 1.4398 amove 3.71333 1.49042 aline 3.66 1.4979 amove 3.82 1.55298 aline 3.76667 1.56046 amove 3.92 1.61998 aline 3.87333 1.62746 amove 1.75333 1.13282 aline 1.75333 1.13282 amove 3.36 1.34616 aline 3.44667 1.38614 amove 3.44667 1.38614 aline 3.55333 1.4398 amove 3.55333 1.4398 aline 3.66 1.4979 amove 3.66 1.4979 aline 3.76667 1.56046 amove 3.76667 1.56046 aline 3.87333 1.62746 amove 1.75333 1.13282 aline 1.7 1.14475 amove 1.81333 1.12572 aline 1.80667 1.12721 amove 3.32667 1.33992 aline 3.28667 1.34887 amove 3.44667 1.38614 aline 3.39333 1.39807 amove 3.55333 1.4398 aline 3.5 1.45173 amove 3.66 1.4979 aline 3.60667 1.50983 amove 3.76667 1.56046 aline 3.71333 1.57239 amove 3.87333 1.62746 aline 3.82 1.6394 amove 1.7 1.14475 aline 1.80667 1.12721 amove 1.80667 1.12721 aline 1.83333 1.12394 amove 3.22667 1.32201 aline 3.28 1.34588 amove 3.28667 1.34887 aline 3.39333 1.39807 amove 3.39333 1.39807 aline 3.5 1.45173 amove 3.5 1.45173 aline 3.60667 1.50983 amove 3.60667 1.50983 aline 3.71333 1.57239 amove 3.71333 1.57239 aline 3.82 1.6394 amove 1.7 1.14475 aline 1.64667 1.16113 amove 1.80667 1.12721 aline 1.75333 1.14359 amove 1.88 1.12436 aline 1.86 1.1305 amove 3.15333 1.31435 aline 3.13333 1.32049 amove 3.28667 1.34887 aline 3.24 1.36525 amove 3.39333 1.39807 aline 3.34 1.41445 amove 3.5 1.45173 aline 3.44667 1.46811 amove 3.60667 1.50983 aline 3.55333 1.52621 amove 3.71333 1.57239 aline 3.66 1.58877 amove 3.82 1.6394 aline 3.76667 1.65578 amove 1.64667 1.16113 aline 1.75333 1.14359 amove 1.75333 1.14359 aline 1.86 1.1305 amove 1.86 1.1305 aline 1.92 1.12564 amove 3.09333 1.30538 aline 3.13333 1.32049 amove 3.13333 1.32049 aline 3.24 1.36525 amove 3.24 1.36525 aline 3.33333 1.41117 amove 3.34 1.41445 aline 3.44667 1.46811 amove 3.44667 1.46811 aline 3.55333 1.52621 amove 3.55333 1.52621 aline 3.66 1.58877 amove 3.66 1.58877 aline 3.76667 1.65578 amove 1.64667 1.16113 aline 1.6 1.18196 amove 1.75333 1.14359 aline 1.7 1.16442 amove 1.86 1.1305 aline 1.80667 1.15133 amove 1.94667 1.12967 aline 1.91333 1.14269 amove 2.98 1.29841 aline 2.97333 1.30101 amove 3.13333 1.32049 aline 3.08 1.34132 amove 3.24 1.36525 aline 3.18667 1.38608 amove 3.34 1.41445 aline 3.29333 1.43528 amove 3.44667 1.46811 aline 3.4 1.48894 amove 3.55333 1.52621 aline 3.5 1.54705 amove 3.66 1.58877 aline 3.60667 1.6096 amove 3.76667 1.65578 aline 3.71333 1.67661 amove 1.6 1.18196 aline 1.7 1.16442 amove 1.7 1.16442 aline 1.80667 1.15133 amove 1.80667 1.15133 aline 1.91333 1.14269 amove 1.91333 1.14269 aline 2.00667 1.13902 amove 2.96 1.29653 aline 2.97333 1.30101 amove 2.97333 1.30101 aline 3.08 1.34132 amove 3.08 1.34132 aline 3.18667 1.38608 amove 3.18667 1.38608 aline 3.29333 1.43528 amove 3.29333 1.43528 aline 3.4 1.48894 amove 3.4 1.48894 aline 3.49333 1.54317 amove 3.5 1.54705 aline 3.60667 1.6096 amove 3.60667 1.6096 aline 3.71333 1.67661 amove 1.6 1.18196 aline 1.54667 1.20724 amove 1.7 1.16442 aline 1.65333 1.1897 amove 1.80667 1.15133 aline 1.75333 1.17661 amove 1.91333 1.14269 aline 1.86 1.16797 amove 2.01333 1.14166 aline 1.96667 1.16378 amove 2.08 1.16088 aline 2.07333 1.16404 amove 2.97333 1.30101 aline 2.92 1.3263 amove 3.08 1.34132 aline 3.02667 1.3666 amove 3.18667 1.38608 aline 3.13333 1.41136 amove 3.29333 1.43528 aline 3.24 1.46056 amove 3.4 1.48894 aline 3.34667 1.51422 amove 3.5 1.54705 aline 3.45333 1.57233 amove 3.60667 1.6096 aline 3.56 1.63488 amove 3.71333 1.67661 aline 3.66 1.70189 amove 1.54667 1.20724 aline 1.65333 1.1897 amove 1.65333 1.1897 aline 1.75333 1.17661 amove 1.75333 1.17661 aline 1.86 1.16797 amove 1.86 1.16797 aline 1.96667 1.16378 amove 1.96667 1.16378 aline 2.07333 1.16404 amove 2.07333 1.16404 aline 2.09333 1.16492 amove 2.82667 1.29492 aline 2.92 1.3263 amove 2.92 1.3263 aline 3.02667 1.3666 amove 3.02667 1.3666 aline 3.13333 1.41136 amove 3.13333 1.41136 aline 3.24 1.46056 amove 3.24 1.46056 aline 3.34667 1.51422 amove 3.34667 1.51422 aline 3.45333 1.57233 amove 3.45333 1.57233 aline 3.56 1.63488 amove 3.56 1.63488 aline 3.65333 1.69742 amove 1.54667 1.20724 aline 1.49333 1.23697 amove 1.65333 1.1897 aline 1.6 1.21943 amove 1.75333 1.17661 aline 1.70667 1.20634 amove 1.86 1.16797 aline 1.81333 1.1977 amove 1.96667 1.16378 aline 1.91333 1.19351 amove 2.07333 1.16404 aline 2.02 1.19377 amove 2.14667 1.18733 aline 2.12667 1.19847 amove 2.80667 1.29415 aline 2.76 1.32017 amove 2.92 1.3263 aline 2.86667 1.35603 amove 3.02667 1.3666 aline 2.97333 1.39633 amove 3.13333 1.41136 aline 3.08 1.44109 amove 3.24 1.46056 aline 3.18667 1.49029 amove 3.34667 1.51422 aline 3.29333 1.54395 amove 3.45333 1.57233 aline 3.4 1.60206 amove 3.56 1.63488 aline 3.50667 1.66461 amove 3.66 1.70189 aline 3.61333 1.73162 amove 1.49333 1.23697 aline 1.6 1.21943 amove 1.6 1.21943 aline 1.70667 1.20634 amove 1.70667 1.20634 aline 1.81333 1.1977 amove 1.81333 1.1977 aline 1.91333 1.19351 amove 1.91333 1.19351 aline 2.02 1.19377 amove 2.02 1.19377 aline 2.12667 1.19847 amove 2.12667 1.19847 aline 2.18 1.20305 amove 2.69333 1.29923 aline 2.75333 1.31807 amove 2.76 1.32017 aline 2.86667 1.35603 amove 2.86667 1.35603 aline 2.97333 1.39633 amove 2.97333 1.39633 aline 3.08 1.44109 amove 3.08 1.44109 aline 3.18667 1.49029 amove 3.18667 1.49029 aline 3.29333 1.54395 amove 3.29333 1.54395 aline 3.4 1.60206 amove 3.4 1.60206 aline 3.50667 1.66461 amove 3.50667 1.66461 aline 3.61333 1.73162 amove 1.49333 1.23697 aline 1.44 1.27115 amove 1.6 1.21943 aline 1.54667 1.25361 amove 1.70667 1.20634 aline 1.65333 1.24052 amove 1.81333 1.1977 aline 1.76 1.23188 amove 1.91333 1.19351 aline 1.86667 1.22769 amove 2.02 1.19377 aline 1.96667 1.22795 amove 2.12667 1.19847 aline 2.07333 1.23265 amove 2.20667 1.22472 aline 2.18 1.24181 amove 2.63333 1.30585 aline 2.60667 1.32294 amove 2.76 1.32017 aline 2.71333 1.35435 amove 2.86667 1.35603 aline 2.82 1.39021 amove 2.97333 1.39633 aline 2.92 1.43051 amove 3.08 1.44109 aline 3.02667 1.47527 amove 3.18667 1.49029 aline 3.13333 1.52447 amove 3.29333 1.54395 aline 3.24 1.57813 amove 3.4 1.60206 aline 3.34667 1.63624 amove 3.50667 1.66461 aline 3.45333 1.69879 amove 3.61333 1.73162 aline 3.56 1.7658 amove 1.44 1.27115 aline 1.54667 1.25361 amove 1.54667 1.25361 aline 1.65333 1.24052 amove 1.65333 1.24052 aline 1.76 1.23188 amove 1.76 1.23188 aline 1.86667 1.22769 amove 1.86667 1.22769 aline 1.96 1.22793 amove 1.96667 1.22795 aline 2.07333 1.23265 amove 2.07333 1.23265 aline 2.18 1.24181 amove 2.18 1.24181 aline 2.26 1.25202 amove 2.56 1.31115 aline 2.60667 1.32294 amove 2.60667 1.32294 aline 2.71333 1.35435 amove 2.71333 1.35435 aline 2.82 1.39021 amove 2.82 1.39021 aline 2.91333 1.42783 amove 2.92 1.43051 aline 3.02667 1.47527 amove 3.02667 1.47527 aline 3.13333 1.52447 amove 3.13333 1.52447 aline 3.24 1.57813 amove 3.24 1.57813 aline 3.34667 1.63624 amove 3.34667 1.63624 aline 3.45333 1.69879 amove 3.45333 1.69879 aline 3.56 1.7658 amove 1.44 1.27115 aline 1.38667 1.30978 amove 1.54667 1.25361 aline 1.49333 1.29224 amove 1.65333 1.24052 aline 1.6 1.27915 amove 1.76 1.23188 aline 1.70667 1.27051 amove 1.86667 1.22769 aline 1.81333 1.26632 amove 1.96667 1.22795 aline 1.92 1.26658 amove 2.07333 1.23265 aline 2.02667 1.27128 amove 2.18 1.24181 aline 2.12667 1.28044 amove 2.27333 1.26508 aline 2.23333 1.29405 amove 2.34 1.31211 aline 2.34 1.31211 amove 2.46 1.32496 aline 2.44667 1.33461 amove 2.60667 1.32294 aline 2.55333 1.36157 amove 2.71333 1.35435 aline 2.66 1.39298 amove 2.82 1.39021 aline 2.76667 1.42884 amove 2.92 1.43051 aline 2.87333 1.46914 amove 3.02667 1.47527 aline 2.98 1.5139 amove 3.13333 1.52447 aline 3.08 1.5631 amove 3.24 1.57813 aline 3.18667 1.61676 amove 3.34667 1.63624 aline 3.29333 1.67487 amove 3.45333 1.69879 aline 3.4 1.73742 amove 3.56 1.7658 aline 3.50667 1.80443 amove 1.38667 1.30978 aline 1.49333 1.29224 amove 1.49333 1.29224 aline 1.6 1.27915 amove 1.6 1.27915 aline 1.70667 1.27051 amove 1.70667 1.27051 aline 1.81333 1.26632 amove 1.81333 1.26632 aline 1.92 1.26658 amove 1.92 1.26658 aline 2.02667 1.27128 amove 2.02667 1.27128 aline 2.12 1.27983 amove 2.12667 1.28044 aline 2.23333 1.29405 amove 2.23333 1.29405 aline 2.34 1.31211 amove 2.34 1.31211 aline 2.34667 1.31351 amove 2.42667 1.33039 aline 2.44667 1.33461 amove 2.44667 1.33461 aline 2.55333 1.36157 amove 2.55333 1.36157 aline 2.66 1.39298 amove 2.66 1.39298 aline 2.76667 1.42884 amove 2.76667 1.42884 aline 2.87333 1.46914 amove 2.87333 1.46914 aline 2.98 1.5139 amove 2.98 1.5139 aline 3.07333 1.55982 amove 3.08 1.5631 aline 3.18667 1.61676 amove 3.18667 1.61676 aline 3.29333 1.67487 amove 3.29333 1.67487 aline 3.4 1.73742 amove 3.4 1.73742 aline 3.50667 1.80443 amove 1.38667 1.30978 aline 1.33333 1.35286 amove 1.49333 1.29224 aline 1.44 1.33532 amove 1.6 1.27915 aline 1.54667 1.32223 amove 1.70667 1.27051 aline 1.65333 1.31359 amove 1.81333 1.26632 aline 1.76 1.3094 amove 1.92 1.26658 aline 1.86667 1.30966 amove 2.02667 1.27128 aline 1.97333 1.31436 amove 2.12667 1.28044 aline 2.08 1.32352 amove 2.23333 1.29405 aline 2.18 1.33713 amove 2.34 1.31211 aline 2.28667 1.35519 amove 2.44667 1.33461 aline 2.39333 1.37769 amove 2.55333 1.36157 aline 2.5 1.40465 amove 2.66 1.39298 aline 2.60667 1.43606 amove 2.76667 1.42884 aline 2.71333 1.47192 amove 2.87333 1.46914 aline 2.82 1.51222 amove 2.98 1.5139 aline 2.92667 1.55698 amove 3.08 1.5631 aline 3.03333 1.60618 amove 3.18667 1.61676 aline 3.13333 1.65984 amove 3.29333 1.67487 aline 3.24 1.71795 amove 3.4 1.73742 aline 3.34667 1.7805 amove 3.50667 1.80443 aline 3.45333 1.84751 amove 1.33333 1.35286 aline 1.44 1.33532 amove 1.44 1.33532 aline 1.54667 1.32223 amove 1.54667 1.32223 aline 1.65333 1.31359 amove 1.65333 1.31359 aline 1.76 1.3094 amove 1.76 1.3094 aline 1.86667 1.30966 amove 1.86667 1.30966 aline 1.97333 1.31436 amove 1.97333 1.31436 aline 2.08 1.32352 amove 2.08 1.32352 aline 2.18 1.33713 amove 2.18 1.33713 aline 2.28667 1.35519 amove 2.28667 1.35519 aline 2.39333 1.37769 amove 2.39333 1.37769 aline 2.5 1.40465 amove 2.5 1.40465 aline 2.60667 1.43606 amove 2.60667 1.43606 aline 2.71333 1.47192 amove 2.71333 1.47192 aline 2.82 1.51222 amove 2.82 1.51222 aline 2.92667 1.55698 amove 2.92667 1.55698 aline 3.03333 1.60618 amove 3.03333 1.60618 aline 3.12667 1.65626 amove 3.13333 1.65984 aline 3.24 1.71795 amove 3.24 1.71795 aline 3.34667 1.7805 amove 3.34667 1.7805 aline 3.45333 1.84751 amove 1.33333 1.35286 aline 1.28667 1.40039 amove 1.44 1.33532 aline 1.38667 1.38285 amove 1.54667 1.32223 aline 1.49333 1.36976 amove 1.65333 1.31359 aline 1.6 1.36112 amove 1.76 1.3094 aline 1.70667 1.35693 amove 1.86667 1.30966 aline 1.81333 1.35719 amove 1.97333 1.31436 aline 1.92 1.36189 amove 2.08 1.32352 aline 2.02667 1.37105 amove 2.18 1.33713 aline 2.13333 1.38466 amove 2.28667 1.35519 aline 2.24 1.40272 amove 2.39333 1.37769 aline 2.34 1.42522 amove 2.5 1.40465 aline 2.44667 1.45218 amove 2.60667 1.43606 aline 2.55333 1.48359 amove 2.71333 1.47192 aline 2.66 1.51944 amove 2.82 1.51222 aline 2.76667 1.55975 amove 2.92667 1.55698 aline 2.87333 1.60451 amove 3.03333 1.60618 aline 2.98 1.65371 amove 3.13333 1.65984 aline 3.08667 1.70737 amove 3.24 1.71795 aline 3.19333 1.76548 amove 3.34667 1.7805 aline 3.29333 1.82803 amove 3.45333 1.84751 aline 3.4 1.89504 amove 1.28667 1.40039 aline 1.38667 1.38285 amove 1.38667 1.38285 aline 1.49333 1.36976 amove 1.49333 1.36976 aline 1.6 1.36112 amove 1.6 1.36112 aline 1.70667 1.35693 amove 1.70667 1.35693 aline 1.81333 1.35719 amove 1.81333 1.35719 aline 1.92 1.36189 amove 1.92 1.36189 aline 2.02667 1.37105 amove 2.02667 1.37105 aline 2.13333 1.38466 amove 2.13333 1.38466 aline 2.24 1.40272 amove 2.24 1.40272 aline 2.34 1.42522 amove 2.34 1.42522 aline 2.44667 1.45218 amove 2.44667 1.45218 aline 2.55333 1.48359 amove 2.55333 1.48359 aline 2.66 1.51944 amove 2.66 1.51944 aline 2.76667 1.55975 amove 2.76667 1.55975 aline 2.87333 1.60451 amove 2.87333 1.60451 aline 2.98 1.65371 amove 2.98 1.65371 aline 3.08667 1.70737 amove 3.08667 1.70737 aline 3.19333 1.76548 amove 3.19333 1.76548 aline 3.29333 1.82803 amove 3.29333 1.82803 aline 3.4 1.89504 amove 1.28667 1.40039 aline 1.23333 1.45237 amove 1.38667 1.38285 aline 1.34 1.43483 amove 1.49333 1.36976 aline 1.44667 1.42174 amove 1.6 1.36112 aline 1.54667 1.4131 amove 1.70667 1.35693 aline 1.65333 1.40891 amove 1.81333 1.35719 aline 1.76 1.40916 amove 1.92 1.36189 aline 1.86667 1.41387 amove 2.02667 1.37105 aline 1.97333 1.42303 amove 2.13333 1.38466 aline 2.08 1.43664 amove 2.24 1.40272 aline 2.18667 1.4547 amove 2.34 1.42522 aline 2.29333 1.4772 amove 2.44667 1.45218 aline 2.4 1.50416 amove 2.55333 1.48359 aline 2.5 1.53557 amove 2.66 1.51944 aline 2.60667 1.57142 amove 2.76667 1.55975 aline 2.71333 1.61173 amove 2.87333 1.60451 aline 2.82 1.65649 amove 2.98 1.65371 aline 2.92667 1.70569 amove 3.08667 1.70737 aline 3.03333 1.75935 amove 3.19333 1.76548 aline 3.14 1.81746 amove 3.29333 1.82803 aline 3.24667 1.88001 amove 3.4 1.89504 aline 3.34667 1.94702 amove 1.23333 1.45237 aline 1.34 1.43483 amove 1.34 1.43483 aline 1.44667 1.42174 amove 1.44667 1.42174 aline 1.54667 1.4131 amove 1.54667 1.4131 aline 1.65333 1.40891 amove 1.65333 1.40891 aline 1.76 1.40916 amove 1.76 1.40916 aline 1.86667 1.41387 amove 1.86667 1.41387 aline 1.97333 1.42303 amove 1.97333 1.42303 aline 2.08 1.43664 amove 2.08 1.43664 aline 2.18667 1.4547 amove 2.18667 1.4547 aline 2.29333 1.4772 amove 2.29333 1.4772 aline 2.4 1.50416 amove 2.4 1.50416 aline 2.49333 1.53347 amove 2.5 1.53557 aline 2.60667 1.57142 amove 2.60667 1.57142 aline 2.71333 1.61173 amove 2.71333 1.61173 aline 2.82 1.65649 amove 2.82 1.65649 aline 2.92667 1.70569 amove 2.92667 1.70569 aline 3.03333 1.75935 amove 3.03333 1.75935 aline 3.14 1.81746 amove 3.14 1.81746 aline 3.24667 1.88001 amove 3.24667 1.88001 aline 3.34 1.94255 amove 1.23333 1.45237 aline 1.18 1.5088 amove 1.34 1.43483 aline 1.28667 1.49126 amove 1.44667 1.42174 aline 1.39333 1.47817 amove 1.54667 1.4131 aline 1.5 1.46953 amove 1.65333 1.40891 aline 1.60667 1.46534 amove 1.76 1.40916 aline 1.70667 1.46559 amove 1.86667 1.41387 aline 1.81333 1.4703 amove 1.97333 1.42303 aline 1.92 1.47946 amove 2.08 1.43664 aline 2.02667 1.49307 amove 2.18667 1.4547 aline 2.13333 1.51113 amove 2.29333 1.4772 aline 2.24 1.53363 amove 2.4 1.50416 aline 2.34667 1.56059 amove 2.5 1.53557 aline 2.45333 1.592 amove 2.60667 1.57142 aline 2.55333 1.62785 amove 2.71333 1.61173 aline 2.66 1.66816 amove 2.82 1.65649 aline 2.76667 1.71292 amove 2.92667 1.70569 aline 2.87333 1.76212 amove 3.03333 1.75935 aline 2.98 1.81578 amove 3.14 1.81746 aline 3.08667 1.87388 amove 3.24667 1.88001 aline 3.19333 1.93644 amove 3.34667 1.94702 aline 3.3 2.00345 amove 1.18 1.5088 aline 1.28667 1.49126 amove 1.28667 1.49126 aline 1.39333 1.47817 amove 1.39333 1.47817 aline 1.5 1.46953 amove 1.5 1.46953 aline 1.60667 1.46534 amove 1.60667 1.46534 aline 1.7 1.46558 amove 1.70667 1.46559 aline 1.81333 1.4703 amove 1.81333 1.4703 aline 1.92 1.47946 amove 1.92 1.47946 aline 2.02667 1.49307 amove 2.02667 1.49307 aline 2.13333 1.51113 amove 2.13333 1.51113 aline 2.24 1.53363 amove 2.24 1.53363 aline 2.34667 1.56059 amove 2.34667 1.56059 aline 2.45333 1.592 amove 2.45333 1.592 aline 2.54667 1.62546 amove 2.55333 1.62785 aline 2.66 1.66816 amove 2.66 1.66816 aline 2.76667 1.71292 amove 2.76667 1.71292 aline 2.87333 1.76212 amove 2.87333 1.76212 aline 2.98 1.81578 amove 2.98 1.81578 aline 3.08667 1.87388 amove 3.08667 1.87388 aline 3.19333 1.93644 amove 3.19333 1.93644 aline 3.3 2.00345 amove 1.18 1.5088 aline 1.12667 1.56968 amove 1.28667 1.49126 aline 1.23333 1.55214 amove 1.39333 1.47817 aline 1.34 1.53905 amove 1.5 1.46953 aline 1.44667 1.53041 amove 1.60667 1.46534 aline 1.55333 1.52621 amove 1.70667 1.46559 aline 1.66 1.52647 amove 1.81333 1.4703 aline 1.76 1.53118 amove 1.92 1.47946 aline 1.86667 1.54034 amove 2.02667 1.49307 aline 1.97333 1.55395 amove 2.13333 1.51113 aline 2.08 1.572 amove 2.24 1.53363 aline 2.18667 1.59451 amove 2.34667 1.56059 aline 2.29333 1.62147 amove 2.45333 1.592 aline 2.4 1.65288 amove 2.55333 1.62785 aline 2.50667 1.68873 amove 2.66 1.66816 aline 2.61333 1.72904 amove 2.76667 1.71292 aline 2.71333 1.7738 amove 2.87333 1.76212 aline 2.82 1.823 amove 2.98 1.81578 aline 2.92667 1.87666 amove 3.08667 1.87388 aline 3.03333 1.93476 amove 3.19333 1.93644 aline 3.14 1.99732 amove 3.3 2.00345 aline 3.24667 2.06432 amove 1.12667 1.56968 aline 1.23333 1.55214 amove 1.23333 1.55214 aline 1.34 1.53905 amove 1.34 1.53905 aline 1.44667 1.53041 amove 1.44667 1.53041 aline 1.55333 1.52621 amove 1.55333 1.52621 aline 1.66 1.52647 amove 1.66 1.52647 aline 1.76 1.53118 amove 1.76 1.53118 aline 1.86667 1.54034 amove 1.86667 1.54034 aline 1.97333 1.55395 amove 1.97333 1.55395 aline 2.08 1.572 amove 2.08 1.572 aline 2.18667 1.59451 amove 2.18667 1.59451 aline 2.29333 1.62147 amove 2.29333 1.62147 aline 2.4 1.65288 amove 2.4 1.65288 aline 2.50667 1.68873 amove 2.50667 1.68873 aline 2.61333 1.72904 amove 2.61333 1.72904 aline 2.70667 1.77081 amove 2.71333 1.7738 aline 2.82 1.823 amove 2.82 1.823 aline 2.92667 1.87666 amove 2.92667 1.87666 aline 3.03333 1.93476 amove 3.03333 1.93476 aline 3.14 1.99732 amove 3.14 1.99732 aline 3.24667 2.06432 amove 1.12667 1.56968 aline 1.07333 1.63501 amove 1.23333 1.55214 aline 1.18 1.61747 amove 1.34 1.53905 aline 1.28667 1.60438 amove 1.44667 1.53041 aline 1.39333 1.59574 amove 1.55333 1.52621 aline 1.5 1.59154 amove 1.66 1.52647 aline 1.60667 1.5918 amove 1.76 1.53118 aline 1.71333 1.59651 amove 1.86667 1.54034 aline 1.82 1.60567 amove 1.97333 1.55395 aline 1.92 1.61928 amove 2.08 1.572 aline 2.02667 1.63733 amove 2.18667 1.59451 aline 2.13333 1.65984 amove 2.29333 1.62147 aline 2.24 1.6868 amove 2.4 1.65288 aline 2.34667 1.7182 amove 2.50667 1.68873 aline 2.45333 1.75406 amove 2.61333 1.72904 aline 2.56 1.79437 amove 2.71333 1.7738 aline 2.66667 1.83912 amove 2.82 1.823 aline 2.76667 1.88833 amove 2.92667 1.87666 aline 2.87333 1.94199 amove 3.03333 1.93476 aline 2.98 2.00009 amove 3.14 1.99732 aline 3.08667 2.06265 amove 3.24667 2.06432 aline 3.19333 2.12965 amove 1.07333 1.63501 aline 1.18 1.61747 amove 1.18 1.61747 aline 1.28667 1.60438 amove 1.28667 1.60438 aline 1.39333 1.59574 amove 1.39333 1.59574 aline 1.5 1.59154 amove 1.5 1.59154 aline 1.60667 1.5918 amove 1.60667 1.5918 aline 1.71333 1.59651 amove 1.71333 1.59651 aline 1.82 1.60567 amove 1.82 1.60567 aline 1.92 1.61928 amove 1.92 1.61928 aline 2.02667 1.63733 amove 2.02667 1.63733 aline 2.13333 1.65984 amove 2.13333 1.65984 aline 2.24 1.6868 amove 2.24 1.6868 aline 2.34667 1.7182 amove 2.34667 1.7182 aline 2.45333 1.75406 amove 2.45333 1.75406 aline 2.56 1.79437 amove 2.56 1.79437 aline 2.66667 1.83912 amove 2.66667 1.83912 aline 2.76 1.88505 amove 2.76667 1.88833 aline 2.87333 1.94199 amove 2.87333 1.94199 aline 2.98 2.00009 amove 2.98 2.00009 aline 3.08667 2.06265 amove 3.08667 2.06265 aline 3.19333 2.12965 amove 1.07333 1.63501 aline 1.02667 1.70479 amove 1.18 1.61747 aline 1.12667 1.68725 amove 1.28667 1.60438 aline 1.23333 1.67415 amove 1.39333 1.59574 aline 1.34 1.66551 amove 1.5 1.59154 aline 1.44667 1.66132 amove 1.60667 1.5918 aline 1.55333 1.66158 amove 1.71333 1.59651 aline 1.66 1.66629 amove 1.82 1.60567 aline 1.76667 1.67545 amove 1.92 1.61928 aline 1.87333 1.68905 amove 2.02667 1.63733 aline 1.97333 1.70711 amove 2.13333 1.65984 aline 2.08 1.72962 amove 2.24 1.6868 aline 2.18667 1.75658 amove 2.34667 1.7182 aline 2.29333 1.78798 amove 2.45333 1.75406 aline 2.4 1.82384 amove 2.56 1.79437 aline 2.50667 1.86415 amove 2.66667 1.83912 aline 2.61333 1.9089 amove 2.76667 1.88833 aline 2.72 1.95811 amove 2.87333 1.94199 aline 2.82667 2.01177 amove 2.98 2.00009 aline 2.92667 2.06987 amove 3.08667 2.06265 aline 3.03333 2.13243 amove 3.19333 2.12965 aline 3.14 2.19943 amove 1.02667 1.70479 aline 1.12667 1.68725 amove 1.12667 1.68725 aline 1.23333 1.67415 amove 1.23333 1.67415 aline 1.34 1.66551 amove 1.34 1.66551 aline 1.44667 1.66132 amove 1.44667 1.66132 aline 1.55333 1.66158 amove 1.55333 1.66158 aline 1.66 1.66629 amove 1.66 1.66629 aline 1.76667 1.67545 amove 1.76667 1.67545 aline 1.87333 1.68905 amove 1.87333 1.68905 aline 1.96667 1.70591 amove 1.97333 1.70711 aline 2.08 1.72962 amove 2.08 1.72962 aline 2.18667 1.75658 amove 2.18667 1.75658 aline 2.29333 1.78798 amove 2.29333 1.78798 aline 2.4 1.82384 amove 2.4 1.82384 aline 2.50667 1.86415 amove 2.50667 1.86415 aline 2.61333 1.9089 amove 2.61333 1.9089 aline 2.72 1.95811 amove 2.72 1.95811 aline 2.82667 2.01177 amove 2.82667 2.01177 aline 2.92 2.066 amove 2.92667 2.06987 aline 3.03333 2.13243 amove 3.03333 2.13243 aline 3.14 2.19943 amove 1.02667 1.70479 aline 0.973333 1.77902 amove 1.12667 1.68725 aline 1.08 1.76147 amove 1.23333 1.67415 aline 1.18 1.74838 amove 1.34 1.66551 aline 1.28667 1.73974 amove 1.44667 1.66132 aline 1.39333 1.73555 amove 1.55333 1.66158 aline 1.5 1.73581 amove 1.66 1.66629 aline 1.60667 1.74052 amove 1.76667 1.67545 aline 1.71333 1.74968 amove 1.87333 1.68905 aline 1.82 1.76328 amove 1.97333 1.70711 aline 1.92667 1.78134 amove 2.08 1.72962 aline 2.03333 1.80385 amove 2.18667 1.75658 aline 2.13333 1.8308 amove 2.29333 1.78798 aline 2.24 1.86221 amove 2.4 1.82384 aline 2.34667 1.89807 amove 2.50667 1.86415 aline 2.45333 1.93838 amove 2.61333 1.9089 aline 2.56 1.98313 amove 2.72 1.95811 aline 2.66667 2.03234 amove 2.82667 2.01177 aline 2.77333 2.08599 amove 2.92667 2.06987 aline 2.88 2.1441 amove 3.03333 2.13243 aline 2.98 2.20666 amove 3.14 2.19943 aline 3.08667 2.27366 amove 0.973333 1.77902 aline 1.08 1.76147 amove 1.08 1.76147 aline 1.17333 1.74926 amove 1.18 1.74838 aline 1.28667 1.73974 amove 1.28667 1.73974 aline 1.39333 1.73555 amove 1.39333 1.73555 aline 1.5 1.73581 amove 1.5 1.73581 aline 1.60667 1.74052 amove 1.60667 1.74052 aline 1.71333 1.74968 amove 1.71333 1.74968 aline 1.82 1.76328 amove 1.82 1.76328 aline 1.92667 1.78134 amove 1.92667 1.78134 aline 2.03333 1.80385 amove 2.03333 1.80385 aline 2.12667 1.82901 amove 2.13333 1.8308 aline 2.24 1.86221 amove 2.24 1.86221 aline 2.34667 1.89807 amove 2.34667 1.89807 aline 2.45333 1.93838 amove 2.45333 1.93838 aline 2.56 1.98313 amove 2.56 1.98313 aline 2.66667 2.03234 amove 2.66667 2.03234 aline 2.77333 2.08599 amove 2.77333 2.08599 aline 2.88 2.1441 amove 2.88 2.1441 aline 2.98 2.20666 amove 2.98 2.20666 aline 3.08667 2.27366 amove 0.973333 1.77902 aline 0.92 1.85769 amove 1.08 1.76147 aline 1.02667 1.84015 amove 1.18 1.74838 aline 1.13333 1.82706 amove 1.28667 1.73974 aline 1.24 1.81842 amove 1.39333 1.73555 aline 1.34 1.81423 amove 1.5 1.73581 aline 1.44667 1.81449 amove 1.60667 1.74052 aline 1.55333 1.8192 amove 1.71333 1.74968 aline 1.66 1.82835 amove 1.82 1.76328 aline 1.76667 1.84196 amove 1.92667 1.78134 aline 1.87333 1.86002 amove 2.03333 1.80385 aline 1.98 1.88253 amove 2.13333 1.8308 aline 2.08667 1.90948 amove 2.24 1.86221 aline 2.18667 1.94089 amove 2.34667 1.89807 aline 2.29333 1.97675 amove 2.45333 1.93838 aline 2.4 2.01705 amove 2.56 1.98313 aline 2.50667 2.06181 amove 2.66667 2.03234 aline 2.61333 2.11102 amove 2.77333 2.08599 aline 2.72 2.16467 amove 2.88 2.1441 aline 2.82667 2.22278 amove 2.98 2.20666 aline 2.93333 2.28533 amove 3.08667 2.27366 aline 3.04 2.35234 amove 0.92 1.85769 aline 1.02667 1.84015 amove 1.02667 1.84015 aline 1.13333 1.82706 amove 1.13333 1.82706 aline 1.24 1.81842 amove 1.24 1.81842 aline 1.34 1.81423 amove 1.34 1.81423 aline 1.44667 1.81449 amove 1.44667 1.81449 aline 1.55333 1.8192 amove 1.55333 1.8192 aline 1.66 1.82835 amove 1.66 1.82835 aline 1.76667 1.84196 amove 1.76667 1.84196 aline 1.87333 1.86002 amove 1.87333 1.86002 aline 1.98 1.88253 amove 1.98 1.88253 aline 2.08667 1.90948 amove 2.08667 1.90948 aline 2.18 1.9388 amove 2.18667 1.94089 aline 2.29333 1.97675 amove 2.29333 1.97675 aline 2.4 2.01705 amove 2.4 2.01705 aline 2.50667 2.06181 amove 2.50667 2.06181 aline 2.61333 2.11102 amove 2.61333 2.11102 aline 2.72 2.16467 amove 2.72 2.16467 aline 2.82667 2.22278 amove 2.82667 2.22278 aline 2.93333 2.28533 amove 2.93333 2.28533 aline 3.04 2.35234 amove 0.92 1.85769 aline 0.866667 1.94082 amove 1.02667 1.84015 aline 0.973333 1.92328 amove 1.13333 1.82706 aline 1.08 1.91019 amove 1.24 1.81842 aline 1.18667 1.90155 amove 1.34 1.81423 aline 1.29333 1.89736 amove 1.44667 1.81449 aline 1.39333 1.89762 amove 1.55333 1.8192 aline 1.5 1.90232 amove 1.66 1.82835 aline 1.60667 1.91148 amove 1.76667 1.84196 aline 1.71333 1.92509 amove 1.87333 1.86002 aline 1.82 1.94315 amove 1.98 1.88253 aline 1.92667 1.96565 amove 2.08667 1.90948 aline 2.03333 1.99261 amove 2.18667 1.94089 aline 2.14 2.02402 amove 2.29333 1.97675 aline 2.24667 2.05988 amove 2.4 2.01705 aline 2.34667 2.10018 amove 2.50667 2.06181 aline 2.45333 2.14494 amove 2.61333 2.11102 aline 2.56 2.19414 amove 2.72 2.16467 aline 2.66667 2.2478 amove 2.82667 2.22278 aline 2.77333 2.30591 amove 2.93333 2.28533 aline 2.88 2.36846 amove 3.04 2.35234 aline 2.98667 2.43547 amove 0.866667 1.94082 aline 0.973333 1.92328 amove 0.973333 1.92328 aline 1.08 1.91019 amove 1.08 1.91019 aline 1.18667 1.90155 amove 1.18667 1.90155 aline 1.29333 1.89736 amove 1.29333 1.89736 aline 1.38667 1.8976 amove 1.39333 1.89762 aline 1.5 1.90232 amove 1.5 1.90232 aline 1.60667 1.91148 amove 1.60667 1.91148 aline 1.71333 1.92509 amove 1.71333 1.92509 aline 1.82 1.94315 amove 1.82 1.94315 aline 1.92667 1.96565 amove 1.92667 1.96565 aline 2.03333 1.99261 amove 2.03333 1.99261 aline 2.14 2.02402 amove 2.14 2.02402 aline 2.24667 2.05988 amove 2.24667 2.05988 aline 2.34 2.09749 amove 2.34667 2.10018 aline 2.45333 2.14494 amove 2.45333 2.14494 aline 2.56 2.19414 amove 2.56 2.19414 aline 2.66667 2.2478 amove 2.66667 2.2478 aline 2.77333 2.30591 amove 2.77333 2.30591 aline 2.88 2.36846 amove 2.88 2.36846 aline 2.98667 2.43547 amove 0.866667 1.94082 aline 0.813333 2.0284 amove 0.973333 1.92328 aline 0.92 2.01086 amove 1.08 1.91019 aline 1.02667 1.99777 amove 1.18667 1.90155 aline 1.13333 1.98913 amove 1.29333 1.89736 aline 1.24 1.98493 amove 1.39333 1.89762 aline 1.34667 1.98519 amove 1.5 1.90232 aline 1.45333 1.9899 amove 1.60667 1.91148 aline 1.55333 1.99906 amove 1.71333 1.92509 aline 1.66 2.01267 amove 1.82 1.94315 aline 1.76667 2.03072 amove 1.92667 1.96565 aline 1.87333 2.05323 amove 2.03333 1.99261 aline 1.98 2.08019 amove 2.14 2.02402 aline 2.08667 2.1116 amove 2.24667 2.05988 aline 2.19333 2.14745 amove 2.34667 2.10018 aline 2.3 2.18776 amove 2.45333 2.14494 aline 2.4 2.23252 amove 2.56 2.19414 aline 2.50667 2.28172 amove 2.66667 2.2478 aline 2.61333 2.33538 amove 2.77333 2.30591 aline 2.72 2.39348 amove 2.88 2.36846 aline 2.82667 2.45604 amove 2.98667 2.43547 aline 2.93333 2.52305 amove 0.813333 2.0284 aline 0.92 2.01086 amove 0.92 2.01086 aline 1.02667 1.99777 amove 1.02667 1.99777 aline 1.13333 1.98913 amove 1.13333 1.98913 aline 1.24 1.98493 amove 1.24 1.98493 aline 1.34667 1.98519 amove 1.34667 1.98519 aline 1.45333 1.9899 amove 1.45333 1.9899 aline 1.54667 1.99845 amove 1.55333 1.99906 aline 1.66 2.01267 amove 1.66 2.01267 aline 1.76667 2.03072 amove 1.76667 2.03072 aline 1.87333 2.05323 amove 1.87333 2.05323 aline 1.98 2.08019 amove 1.98 2.08019 aline 2.08667 2.1116 amove 2.08667 2.1116 aline 2.19333 2.14745 amove 2.19333 2.14745 aline 2.3 2.18776 amove 2.3 2.18776 aline 2.39333 2.22953 amove 2.4 2.23252 aline 2.50667 2.28172 amove 2.50667 2.28172 aline 2.61333 2.33538 amove 2.61333 2.33538 aline 2.72 2.39348 amove 2.72 2.39348 aline 2.82667 2.45604 amove 2.82667 2.45604 aline 2.93333 2.52305 set color BLACK set lstyle 1 set color BLACK set lstyle 1 amove 4.5 1.10828 aline 3.79333 1.41706 amove 1.27333 1.41339 aline 0.813333 1.30531 amove 0.813333 2.0284 aline 0.813333 1.30531 amove 0.813333 2.0284 aline 2.93333 2.52305 amove 0.813333 2.0284 aline 0.82 2.01745 amove 2.93333 2.52305 aline 4.5 1.83138 amove 4.5 1.83138 aline 4.5 1.83138 amove 4.5 1.83138 aline 4.5 1.10828 amove 0.818182 1.30531 aline 2.38207 0.613636 amove 2.38207 0.613636 aline 4.5 1.10828 set just BC set color BLACK set hei 0.0833333 set just TC amove 0.818182 1.30531 aline 0.816159 1.30073 amove 0.775711 1.20928 rotate -23.8587 text 0 rotate 23.8587 amove 1.07883 1.19003 aline 1.07681 1.18545 amove 1.03636 1.094 rotate -23.8587 text 5 rotate 23.8587 amove 1.33948 1.07475 aline 1.33745 1.07018 amove 1.29701 0.978722 rotate -23.8587 text 10 rotate 23.8587 amove 1.60012 0.959471 aline 1.5981 0.954898 amove 1.55765 0.863444 rotate -23.8587 text 15 rotate 23.8587 amove 1.86077 0.844193 aline 1.85875 0.83962 amove 1.8183 0.748165 rotate -23.8587 text 20 rotate 23.8587 amove 2.12142 0.728914 aline 2.1194 0.724342 amove 2.07895 0.632887 rotate -23.8587 text 25 rotate 23.8587 amove 2.38207 0.613636 aline 2.38005 0.609064 amove 2.3396 0.517609 rotate -23.8587 text 30 rotate 23.8587 set just TC set color BLACK set hei 0.0833333 set just TC amove 2.38207 0.613636 aline 2.3832 0.608767 amove 2.40595 0.511388 rotate 13.1459 text 0 rotate -13.1459 amove 2.59386 0.663101 aline 2.595 0.658232 amove 2.61774 0.560852 rotate 13.1459 text 2 rotate -13.1459 amove 2.80565 0.712565 aline 2.80679 0.707696 amove 2.82953 0.610317 rotate 13.1459 text 4 rotate -13.1459 amove 3.01745 0.76203 aline 3.01858 0.757161 amove 3.04133 0.659782 rotate 13.1459 text 6 rotate -13.1459 amove 3.22924 0.811494 aline 3.23038 0.806625 amove 3.25312 0.709246 rotate 13.1459 text 8 rotate -13.1459 amove 3.44103 0.860959 aline 3.44217 0.85609 amove 3.46491 0.758711 rotate 13.1459 text 10 rotate -13.1459 amove 3.65283 0.910424 aline 3.65396 0.905555 amove 3.67671 0.808175 rotate 13.1459 text 12 rotate -13.1459 amove 3.86462 0.959888 aline 3.86576 0.955019 amove 3.8885 0.85764 rotate 13.1459 text 14 rotate -13.1459 amove 4.07641 1.00935 aline 4.07755 1.00448 amove 4.10029 0.907104 rotate 13.1459 text 16 rotate -13.1459 amove 4.28821 1.05882 aline 4.28934 1.05395 amove 4.31209 0.956569 rotate 13.1459 text 18 rotate -13.1459 amove 4.5 1.10828 aline 4.50114 1.10341 amove 4.52388 1.00603 rotate 13.1459 text 20 rotate -13.1459 set just TC set color BLACK set hei 0.0833333 set just RC amove 0.818182 1.30531 aline 0.813182 1.30531 amove 0.713182 1.30531 text 0 amove 0.818182 1.41655 aline 0.813182 1.41655 amove 0.713182 1.41655 text 50 amove 0.818182 1.5278 aline 0.813182 1.5278 amove 0.713182 1.5278 text 100 amove 0.818182 1.63904 aline 0.813182 1.63904 amove 0.713182 1.63904 text 150 amove 0.818182 1.75029 aline 0.813182 1.75029 amove 0.713182 1.75029 text 200 amove 0.818182 1.86153 aline 0.813182 1.86153 amove 0.713182 1.86153 text 250 amove 0.818182 1.97278 aline 0.813182 1.97278 amove 0.713182 1.97278 text 300 set just BC set color BLACK set lstyle 1 set color BLACK set lstyle 1 set color BLACK set lstyle 1 amove 0.813333 1.30531 aline 1.28 1.40689 amove 0.866667 1.28225 aline 1.30667 1.38002 amove 0.92 1.25919 aline 1.33333 1.35286 amove 0.973333 1.23614 aline 1.36667 1.32594 amove 1.02667 1.21308 aline 1.4 1.30013 amove 1.07333 1.19003 aline 1.44 1.27115 amove 1.12667 1.16697 aline 1.48 1.24552 amove 1.18 1.14392 aline 1.52 1.22211 amove 1.23333 1.12086 aline 1.56667 1.19776 amove 1.28667 1.0978 aline 1.62 1.17303 amove 1.33333 1.07475 aline 1.67333 1.15294 amove 1.38667 1.05169 aline 1.74667 1.13431 amove 1.44 1.02864 aline 1.83333 1.11966 amove 1.49333 1.00558 aline 1.92667 1.10616 amove 1.54667 0.982527 aline 2.02667 1.09413 amove 1.6 0.959471 aline 2.14 1.08493 amove 1.64667 0.936415 aline 2.26667 1.07936 amove 1.7 0.91336 aline 2.42 1.07999 amove 3.72667 1.38689 aline 3.82 1.408 amove 1.75333 0.890304 aline 2.61333 1.09095 amove 3.52 1.30303 aline 3.87333 1.38495 amove 1.80667 0.867248 aline 3.92 1.36189 amove 1.86 0.844193 aline 3.97333 1.33884 amove 1.90667 0.821137 aline 4.02667 1.31578 amove 1.96 0.798081 aline 4.08 1.29273 amove 2.01333 0.775026 aline 4.13333 1.26967 amove 2.06667 0.75197 aline 4.18667 1.24662 amove 2.12 0.728914 aline 4.23333 1.22356 amove 2.17333 0.705859 aline 4.28667 1.2005 amove 2.22 0.682803 aline 4.34 1.17745 amove 2.27333 0.659748 aline 4.39333 1.15439 amove 2.32667 0.636692 aline 4.44667 1.13134 amove 2.38 0.613636 aline 4.5 1.10828 amove 0.813333 1.30531 aline 2.38 0.613636 amove 0.92 1.33004 aline 2.48667 0.638369 amove 1.02667 1.35477 aline 2.59333 0.663101 amove 1.13333 1.3795 aline 2.69333 0.687833 amove 1.24 1.40423 aline 1.32 1.36644 amove 1.90667 1.10873 aline 2.8 0.712565 amove 2.12 1.08606 aline 2.90667 0.737298 amove 2.3 1.07889 aline 3.01333 0.76203 amove 2.45333 1.08111 aline 3.12 0.786762 amove 2.6 1.0898 aline 3.22667 0.811494 amove 2.73333 1.10459 aline 3.33333 0.836227 amove 2.85333 1.12176 aline 3.44 0.860959 amove 2.96667 1.14224 aline 3.54667 0.885691 amove 3.07333 1.16474 aline 3.64667 0.910424 amove 3.18 1.1917 aline 3.75333 0.935156 amove 3.28 1.22021 aline 3.86 0.959888 amove 3.37333 1.24983 aline 3.96667 0.98462 amove 3.46 1.28094 aline 4.07333 1.00935 amove 3.55333 1.31562 aline 4.18 1.03408 amove 3.63333 1.34724 aline 4.28667 1.05882 amove 3.72 1.38393 aline 4.39333 1.08355 amove 3.8 1.42013 aline 4.5 1.10828 gle-graphics-4.2.4c/gle-refman/utilities/fig/surf/surf4.big0000644000000000000000000001653211405447072022244 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! amove 0 5 set hei 0.3 set color BLACK set lstyle 1 set color BLACK set lstyle 1 amove 1.11111 3.20972 aline 0.683333 3.83437 amove 0.683333 3.83437 aline 0.472222 4.13732 amove 0.472222 4.13732 aline 0.35 4.3162 amove 0.35 4.3162 aline 0.272222 4.43427 amove 1.11111 3.20972 aline 1.95 3.30821 amove 0.683333 3.83437 aline 1.25556 3.87721 amove 0.472222 4.13732 aline 0.911111 4.45956 amove 0.35 4.3162 aline 0.7 4.33136 amove 0.272222 4.43427 aline 0.561111 4.44475 amove 1.95 3.30821 aline 1.26111 3.87264 amove 1.25556 3.87721 aline 0.911111 4.45956 amove 0.911111 4.45956 aline 0.705556 4.33474 amove 0.7 4.33136 aline 0.566667 4.44021 amove 1.95 3.30821 aline 2.69444 3.39648 amove 1.25556 3.87721 aline 1.79444 4.68624 amove 0.911111 4.45956 aline 1.32222 4.18373 amove 0.7 4.33136 aline 0.7 4.33136 amove 0.561111 4.44475 aline 0.844444 4.45486 amove 2.69444 3.39648 aline 1.79444 4.68624 amove 1.79444 4.68624 aline 1.32222 4.18373 amove 1.32222 4.18373 aline 1.32222 4.18373 amove 0.872222 4.43884 aline 0.85 4.45166 amove 2.69444 3.39648 aline 3.37222 3.47606 amove 1.79444 4.68624 aline 1.79444 4.68624 amove 1.32222 4.18373 aline 1.32222 4.18373 amove 1.07778 4.34779 aline 1.35556 4.35977 amove 0.844444 4.45486 aline 0.905556 4.45705 amove 0.916667 4.45744 aline 1.11667 4.46461 amove 3.37222 3.47606 aline 2.31667 3.93952 amove 1.44444 4.32111 aline 1.36111 4.35735 amove 1.35556 4.35977 aline 1.11667 4.46461 set color BLACK set lstyle 1 set color BLACK set lstyle 1 amove 3.33333 1.35573 aline 1.52778 3.25864 amove 0.266667 3.62791 aline 0.266667 3.6279 amove 0.788889 3.68024 aline 0.266667 3.6279 amove 0.272222 4.43427 aline 0.272222 4.84007 amove 0.272222 4.43427 aline 0.272222 3.6279 amove 0.272222 4.84007 aline 1.12222 4.84908 amove 1.12222 4.84908 aline 1.11667 4.46461 amove 1.12222 4.84908 aline 3.38889 4.55462 amove 3.37778 4.55597 aline 3.38889 4.55462 amove 3.38889 4.55462 aline 3.36667 3.4785 amove 3.38889 4.55462 aline 3.37222 3.47606 amove 3.36667 3.47541 aline 3.33333 1.35573 amove 0.271366 3.6279 aline 1.10089 0.729884 amove 1.10089 0.729884 aline 3.3358 1.35573 set just BC set color BLACK set hei 0.0833333 set just TC amove 0.271366 3.6279 aline 0.266559 3.62652 amove 0.17042 3.59901 rotate -74.0268 text 1 rotate 74.0268 amove 0.30796 3.50006 aline 0.303153 3.49868 amove 0.207014 3.47116 rotate -74.0268 text 1.5 rotate 74.0268 amove 0.352008 3.34617 aline 0.347201 3.3448 amove 0.251062 3.31728 rotate -74.0268 text 2 rotate 74.0268 amove 0.406047 3.15738 aline 0.40124 3.15601 amove 0.305101 3.12849 rotate -74.0268 text 2.5 rotate 74.0268 amove 0.473911 2.9203 aline 0.469104 2.91892 amove 0.372965 2.8914 rotate -74.0268 text 3 rotate 74.0268 amove 0.561683 2.61366 aline 0.556876 2.61228 amove 0.460737 2.58476 rotate -74.0268 text 3.5 rotate 74.0268 amove 0.679629 2.2016 aline 0.674822 2.20023 amove 0.578683 2.17271 rotate -74.0268 text 4 rotate 74.0268 amove 0.84654 1.61849 aline 0.841733 1.61711 amove 0.745594 1.58959 rotate -74.0268 text 4.5 rotate 74.0268 amove 1.10089 0.729884 aline 1.09609 0.728508 amove 0.999947 0.700989 rotate -74.0268 text 5 rotate 74.0268 set just TC set color BLACK set hei 0.0833333 set just TC amove 1.10089 0.729884 aline 1.10224 0.725069 amove 1.12921 0.628774 rotate 15.6438 text 1 rotate -15.6438 amove 1.52505 0.848661 aline 1.5264 0.843847 amove 1.55337 0.747551 rotate 15.6438 text 1.5 rotate -15.6438 amove 1.92631 0.961025 aline 1.92766 0.95621 amove 1.95462 0.859914 rotate 15.6438 text 2 rotate -15.6438 amove 2.30647 1.06748 aline 2.30782 1.06267 amove 2.33478 0.966371 rotate 15.6438 text 2.5 rotate -15.6438 amove 2.66716 1.16848 aline 2.66851 1.16367 amove 2.69547 1.06737 rotate 15.6438 text 3 rotate -15.6438 amove 3.00983 1.26444 aline 3.01118 1.25963 amove 3.03814 1.16333 rotate 15.6438 text 3.5 rotate -15.6438 amove 3.3358 1.35573 aline 3.33715 1.35091 amove 3.36412 1.25461 rotate 15.6438 text 4 rotate -15.6438 set just TC set color BLACK set hei 0.0833333 set just RC amove 0.271366 3.6279 aline 0.266366 3.62791 amove 0.166366 3.62805 text -1 amove 0.271658 3.82884 aline 0.266658 3.82885 amove 0.166658 3.82899 text -0.5 amove 0.271951 4.03022 aline 0.266951 4.03022 amove 0.166951 4.03037 text 0 amove 0.272245 4.23202 aline 0.267245 4.23203 amove 0.167245 4.23218 text 0.5 amove 0.272539 4.43427 aline 0.267539 4.43428 amove 0.167539 4.43442 text 1 amove 0.272833 4.63695 aline 0.267833 4.63696 amove 0.167833 4.6371 text 1.5 amove 0.273128 4.84007 aline 0.268128 4.84008 amove 0.168129 4.84022 text 2 set just BC set color BLACK set lstyle 1 set color BLACK set lstyle 1 set color BLACK set lstyle 1 gle-graphics-4.2.4c/gle-refman/utilities/fig/surf/surf2.big0000644000000000000000000002476011405447072022244 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! amove 9 9 set hei 0.3 set color BLACK set lstyle 1 set color BLACK set lstyle 1 amove 2.25333 2.0513 aline 2.85333 2.19181 amove 2.85333 2.19181 aline 3.45333 2.33232 amove 3.45333 2.33232 aline 4.06 2.47282 amove 2.25333 2.0513 aline 1.9 2.20599 amove 2.85333 2.19181 aline 2.50667 2.34649 amove 3.45333 2.33232 aline 3.10667 3.19122 amove 4.06 2.47282 aline 3.70667 2.62751 amove 1.9 2.20599 aline 2.5 2.34495 amove 2.50667 2.34649 aline 3.1 3.18183 amove 3.10667 3.19122 aline 3.70667 2.62751 amove 1.9 2.20599 aline 1.55333 2.36067 amove 2.50667 2.34649 aline 2.15333 2.85329 amove 3.10667 3.19122 aline 3.10667 3.19122 amove 3.70667 2.62751 aline 3.70667 2.62751 amove 1.55333 2.36067 aline 2.15333 2.85329 amove 2.15333 2.85329 aline 2.72 2.65343 amove 1.55333 2.36067 aline 1.20667 2.51535 amove 2.15333 2.85329 aline 1.80667 2.65586 amove 2.72 2.65656 aline 2.40667 2.79636 amove 1.20667 2.51535 aline 1.80667 2.65586 amove 1.80667 2.65586 aline 1.80667 2.65586 amove 2.35333 2.78387 aline 2.4 2.7948 amove 2.40667 2.79636 aline 2.90667 2.91345 amove 1.20667 2.51535 aline 0.853333 2.67003 amove 1.80667 2.65586 aline 1.45333 2.81054 amove 2.40667 2.79636 aline 2.06 2.95105 amove 2.94 2.96662 aline 2.66 3.09155 amove 0.853333 2.67003 aline 1.45333 2.81054 amove 1.45333 2.81054 aline 2.05333 2.9495 amove 2.06 2.95105 aline 2.65333 3.08999 set color BLACK set lstyle 1 set color BLACK set lstyle 1 amove 4.06 1.06438 aline 2.66 1.68311 amove 2.66 1.68311 aline 0.853333 1.26159 amove 0.853333 2.67003 aline 0.853333 4.07848 amove 0.853333 2.67003 aline 0.853333 1.26159 amove 0.853333 4.07848 aline 2.66 4.5 amove 2.66 3.09156 aline 2.66 4.5 amove 2.66 2.14653 aline 2.66 1.68311 amove 2.66 4.5 aline 4.06 3.88127 amove 4.06 2.47282 aline 4.06 3.88127 amove 4.06 2.47282 aline 4.06 1.06438 amove 0.857143 1.26159 aline 2.25611 0.642858 amove 2.25611 0.642858 aline 4.06094 1.06438 set just BC set color BLACK set hei 0.0833333 set just TC amove 0.857143 1.26159 aline 0.855121 1.25702 amove 0.814673 1.16556 rotate -23.8587 text 1 rotate 23.8587 amove 1.03201 1.18425 aline 1.02999 1.17967 amove 0.989543 1.08822 rotate -23.8587 text 1.5 rotate 23.8587 amove 1.20689 1.10691 aline 1.20486 1.10233 amove 1.16441 1.01088 rotate -23.8587 text 2 rotate 23.8587 amove 1.38176 1.02956 aline 1.37973 1.02499 amove 1.33929 0.933537 rotate -23.8587 text 2.5 rotate 23.8587 amove 1.55663 0.952223 aline 1.55461 0.94765 amove 1.51416 0.856196 rotate -23.8587 text 3 rotate 23.8587 amove 1.7315 0.874882 aline 1.72948 0.870309 amove 1.68903 0.778854 rotate -23.8587 text 3.5 rotate 23.8587 amove 1.90637 0.79754 aline 1.90435 0.792967 amove 1.8639 0.701512 rotate -23.8587 text 4 rotate 23.8587 amove 2.08124 0.720199 aline 2.07922 0.715626 amove 2.03877 0.624171 rotate -23.8587 text 4.5 rotate 23.8587 amove 2.25611 0.642858 aline 2.25409 0.638285 amove 2.21364 0.54683 rotate -23.8587 text 5 rotate 23.8587 set just TC set color BLACK set hei 0.3 amove 1.43766 0.683239 rotate -23.8587 text Xaxis rotate 23.8587 set color BLACK set hei 0.0833333 set just TC amove 2.25611 0.642858 aline 2.25725 0.637989 amove 2.27999 0.540609 rotate 13.1458 text 1 rotate -13.1458 amove 2.55692 0.71311 aline 2.55805 0.708241 amove 2.5808 0.610862 rotate 13.1458 text 1.5 rotate -13.1458 amove 2.85772 0.783363 aline 2.85886 0.778494 amove 2.8816 0.681115 rotate 13.1458 text 2 rotate -13.1458 amove 3.15853 0.853617 aline 3.15966 0.848748 amove 3.18241 0.751368 rotate 13.1458 text 2.5 rotate -13.1458 amove 3.45933 0.92387 aline 3.46047 0.919001 amove 3.48321 0.821622 rotate 13.1458 text 3 rotate -13.1458 amove 3.76014 0.994123 aline 3.76127 0.989254 amove 3.78402 0.891875 rotate 13.1458 text 3.5 rotate -13.1458 amove 4.06094 1.06438 aline 4.06208 1.05951 amove 4.08482 0.962127 rotate 13.1458 text 4 rotate -13.1458 set just TC set color BLACK set hei 0.3 amove 3.22542 0.567207 rotate 13.1458 text Yaxis rotate -13.1458 set color BLACK set hei 0.0833333 set just RC amove 0.857143 1.26159 aline 0.852143 1.26159 amove 0.752143 1.26159 text -1 amove 0.857143 1.6137 aline 0.852143 1.6137 amove 0.752143 1.6137 text -0.5 amove 0.857143 1.96581 aline 0.852143 1.96581 amove 0.752143 1.96581 text 0 amove 0.857143 2.31792 aline 0.852143 2.31792 amove 0.752143 2.31792 text 0.5 amove 0.857143 2.67003 aline 0.852143 2.67003 amove 0.752143 2.67003 text 1 amove 0.857143 3.02215 aline 0.852143 3.02215 amove 0.752143 3.02215 text 1.5 amove 0.857143 3.37426 aline 0.852143 3.37426 amove 0.752143 3.37426 text 2 amove 0.857143 3.72637 aline 0.852143 3.72637 amove 0.752143 3.72637 text 2.5 amove 0.857143 4.07848 aline 0.852143 4.07848 amove 0.752143 4.07848 text 3 set just BC set color BLACK set lstyle 1 amove 0.853333 2.67003 aline 0.853333 4.07848 amove 0.853333 2.67003 aline 0.853333 1.26159 amove 1.45333 2.81054 aline 1.45333 4.21899 amove 1.45333 2.40529 aline 1.45333 1.40209 amove 2.06 2.95105 aline 2.06 4.35949 amove 2.06 2.13594 aline 2.06 1.5426 amove 2.66 3.09156 aline 2.66 4.5 amove 2.66 2.14653 aline 2.66 1.68311 amove 0.853333 1.26159 aline 2.66 1.68311 amove 0.853333 1.96581 aline 1.9 2.20598 amove 0.853333 2.67003 aline 0.86 2.6716 amove 0.866667 2.67316 aline 0.873333 2.67472 amove 0.88 2.67628 aline 0.886667 2.67784 amove 0.893333 2.6794 aline 0.9 2.68096 amove 0.906667 2.68252 aline 0.913333 2.68408 amove 0.92 2.68565 aline 0.926667 2.68721 amove 0.933333 2.68877 aline 0.94 2.69033 amove 0.946667 2.69189 aline 0.953333 2.69345 amove 0.96 2.69501 aline 0.966667 2.69657 amove 1.7 2.86767 aline 1.70667 2.86921 amove 1.71333 2.87076 aline 1.72 2.8723 amove 1.72667 2.87385 aline 1.73333 2.87539 amove 1.74 2.87693 aline 1.74667 2.87848 amove 1.75333 2.88002 aline 2.66 3.09155 amove 0.853333 2.67003 aline 0.86 2.66711 amove 0.853333 3.37426 aline 2.66 3.79578 amove 0.853333 4.07848 aline 2.66 4.5 set color BLACK set lstyle 2 amove 2.66 3.09156 aline 2.66 4.5 amove 2.66 2.14653 aline 2.66 1.68311 amove 2.83333 3.01421 aline 2.83333 4.42266 amove 2.83333 2.18713 aline 2.83333 1.60577 amove 3.00667 3.05043 aline 3.00667 4.34532 amove 3.00667 2.22772 aline 3.00667 1.52842 amove 3.18 3.12232 aline 3.18 4.26798 amove 3.18 2.26831 aline 3.18 1.45108 amove 3.36 2.95321 aline 3.36 4.19063 amove 3.36 2.31046 aline 3.36 1.37374 amove 3.53333 2.79036 aline 3.53333 4.11329 amove 3.53333 2.35084 aline 3.53333 1.2964 amove 3.70667 2.62751 aline 3.70667 4.03595 amove 3.70667 2.39099 aline 3.70667 1.21906 amove 3.88 2.55162 aline 3.88 3.95861 amove 3.88 2.43113 aline 3.88 1.14172 amove 4.06 2.47282 aline 4.06 3.88127 amove 4.06 2.47282 aline 4.06 1.06438 amove 2.66 1.68311 aline 4.06 1.06438 amove 2.66 2.03522 aline 4.06 1.41649 amove 3.02 2.23084 aline 4.06 1.7686 amove 3.54 2.35239 aline 4.06 2.12071 amove 2.66 3.09155 aline 2.94667 2.96596 amove 3.70667 2.62751 aline 4.06 2.47282 amove 4.06 2.47282 aline 4.06 2.47282 amove 2.66 3.44367 aline 4.06 2.82493 amove 2.66 3.79578 aline 4.06 3.17705 amove 2.66 4.14789 aline 4.06 3.52916 amove 2.66 4.5 aline 4.06 3.88127 set color BLACK set lstyle 1 amove 0.853333 1.26159 aline 2.66 1.68311 amove 1.02667 1.18425 aline 2.83333 1.60577 amove 1.20667 1.10691 aline 3.00667 1.52842 amove 1.38 1.02956 aline 3.18 1.45108 amove 1.55333 0.952223 aline 3.36 1.37374 amove 1.72667 0.874882 aline 3.53333 1.2964 amove 1.9 0.79754 aline 3.70667 1.21906 amove 2.08 0.720199 aline 3.88 1.14172 amove 2.25333 0.642858 aline 4.06 1.06438 amove 0.853333 1.26159 aline 2.25333 0.642858 amove 1.15333 1.33184 aline 2.55333 0.71311 amove 1.45333 1.40209 aline 2.85333 0.783363 amove 1.75333 1.47235 aline 3.15333 0.853617 amove 2.06 1.5426 aline 3.45333 0.92387 amove 2.36 1.61285 aline 3.76 0.994123 amove 2.66 1.68311 aline 4.06 1.06438 gle-graphics-4.2.4c/gle-refman/utilities/fig/surf/surf1.sur0000644000000000000000000000534111405447072022305 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! begin surface size 5 5 xtitle "Xaxis" ytitle "Yaxis" data surf1.z end surface gle-graphics-4.2.4c/gle-refman/utilities/fig/surf/surf5b.sur0000644000000000000000000000544011405447072022453 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! begin surface size 5 5 data jack.z underneath on color green !zaxis min -2 max 2 cube zlen 5 base xstep 1 ystep 1 ! color red end surface gle-graphics-4.2.4c/gle-refman/utilities/fig/volcano.z0000664000000000000000000005620011405447072021371 0ustar rootroot! nx 87 ny 61 xmin 0 xmax 20 ymin 0 ymax 20 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 100 101 102 103 104 105 105 106 107 108 109 110 110 111 114 116 118 120 120 121 122 122 123 124 123 123 120 118 117 115 114 115 113 111 110 109 108 108 107 107 107 108 109 110 111 111 112 113 113 114 115 115 114 113 112 111 111 112 112 112 113 114 114 115 115 116 116 117 117 116 114 112 109 106 104 102 101 100 100 99 99 99 99 98 98 97 97 100 101 102 103 104 105 106 107 108 109 110 110 111 113 115 118 120 121 122 124 125 125 126 127 128 127 124 121 120 118 116 114 113 112 112 110 109 109 108 108 108 109 110 111 112 112 113 114 114 115 116 116 115 114 113 112 112 113 113 114 114 115 115 116 116 117 117 118 118 117 115 113 111 107 105 103 102 101 101 100 100 100 99 99 98 98 97 101 102 103 104 105 105 106 107 108 109 110 111 113 115 117 118 120 122 125 126 127 128 129 130 131 131 128 125 121 120 118 116 114 113 113 111 111 111 111 110 109 110 111 112 113 113 114 115 115 116 117 117 116 115 114 114 113 113 114 114 115 115 116 116 117 118 118 119 119 118 116 114 112 108 105 103 103 102 101 101 100 100 99 99 98 98 97 101 102 103 104 105 106 107 108 109 110 111 113 115 117 117 118 121 123 126 128 130 130 131 132 133 134 131 129 125 122 120 118 116 114 113 112 112 113 112 112 111 112 113 113 114 115 116 116 117 117 118 118 116 116 115 115 115 114 114 115 116 116 117 117 118 118 119 119 120 120 117 115 112 108 106 104 103 102 102 102 101 100 99 99 99 98 98 101 102 103 104 105 106 107 108 109 110 111 112 114 116 117 120 122 124 126 129 130 132 133 135 136 136 134 132 129 126 122 120 118 116 114 114 114 114 114 113 113 114 115 116 116 117 117 117 118 118 119 119 118 117 116 116 115 115 116 116 116 117 117 118 118 119 120 120 120 120 119 116 113 109 106 104 104 103 102 102 101 101 100 99 99 99 98 101 102 103 104 105 106 107 108 109 110 111 111 113 115 118 121 123 125 127 129 131 133 135 137 138 138 137 134 132 130 127 122 120 118 116 116 116 116 115 113 114 115 116 117 117 118 118 119 119 119 120 120 119 118 117 117 116 116 117 117 117 118 119 119 119 120 121 121 121 121 119 116 113 110 107 105 105 103 103 103 102 101 100 100 99 99 99 101 102 103 104 105 106 107 108 109 110 111 113 114 116 119 121 124 126 128 130 133 135 137 138 140 140 139 137 135 133 131 127 122 120 118 118 117 117 116 115 116 116 117 118 118 118 119 119 120 120 121 121 120 119 119 118 117 117 118 119 118 118 118 119 120 122 123 123 123 122 120 117 113 110 108 106 105 104 103 103 102 101 101 100 100 99 99 100 101 102 103 104 105 106 107 108 109 110 112 114 117 119 122 124 127 129 131 134 136 138 140 142 142 142 140 138 136 133 129 125 122 120 119 118 118 117 116 117 117 118 119 119 120 120 120 121 121 121 122 121 120 120 120 119 119 120 120 120 120 120 120 123 123 124 124 124 123 121 119 114 112 108 106 106 104 104 103 102 102 101 101 100 100 99 100 101 102 103 104 105 106 107 108 109 110 112 115 117 120 122 125 127 130 132 135 137 139 142 144 144 144 142 140 138 136 132 129 126 123 120 120 119 119 118 119 119 120 120 120 121 122 122 123 123 123 123 122 123 122 122 121 122 122 122 123 123 123 124 125 125 126 126 125 124 122 120 116 113 109 107 106 105 104 104 103 102 102 101 101 100 100 100 101 102 103 103 104 105 106 107 108 110 114 117 119 121 123 126 128 130 133 136 139 141 144 146 147 146 145 143 141 138 136 133 130 127 124 121 120 120 120 120 120 121 122 123 124 124 125 125 126 126 125 126 126 126 125 126 127 128 128 129 129 128 128 128 128 128 128 126 125 123 122 119 114 109 108 107 106 105 104 103 103 102 102 101 100 100 101 102 103 103 104 104 105 106 108 110 112 116 119 121 124 125 127 130 132 135 137 140 143 147 149 149 149 147 145 143 141 139 136 133 131 128 125 122 121 122 122 122 123 125 125 126 127 127 127 128 128 128 129 129 130 131 131 132 132 133 133 133 132 132 131 131 130 129 128 126 125 124 121 117 111 109 108 106 105 104 103 102 101 101 100 100 100 101 102 103 104 104 105 106 107 108 110 114 119 121 124 126 128 129 132 134 137 140 143 147 149 151 151 151 149 147 145 143 141 138 136 134 131 128 126 124 125 125 126 126 127 128 128 129 129 130 130 131 131 132 132 133 134 135 135 136 136 137 137 136 136 135 134 133 131 129 128 127 126 123 119 115 111 109 107 105 104 103 102 101 100 100 100 99 102 103 104 104 105 105 106 108 110 113 118 121 124 126 128 130 132 134 136 139 143 147 150 154 154 154 153 151 149 148 146 143 141 139 137 136 132 130 128 128 128 129 129 130 130 131 132 132 132 133 134 134 135 135 136 137 138 139 139 140 140 140 139 139 138 137 137 135 132 130 129 127 124 120 116 112 109 106 105 103 102 101 101 100 99 99 99 102 103 104 104 105 106 107 108 111 116 121 124 126 128 131 134 135 137 139 143 147 152 156 157 157 157 156 155 153 151 148 146 143 142 141 140 138 135 133 132 132 133 133 133 134 135 135 135 135 136 136 137 137 138 138 139 140 141 141 142 142 143 142 142 141 141 140 139 137 134 133 129 125 121 114 110 107 106 106 104 103 102 101 100 99 99 99 102 103 104 105 105 106 108 110 113 118 123 127 129 132 137 141 142 142 145 150 154 157 161 161 160 160 160 159 157 154 151 148 146 145 143 142 142 139 137 136 137 137 138 138 139 139 139 139 139 139 139 139 140 140 141 142 142 143 144 144 144 145 145 145 145 145 144 142 140 139 136 129 124 119 113 109 106 106 105 104 103 102 101 101 100 99 99 102 103 104 105 106 107 109 113 116 120 125 129 133 137 143 147 149 151 152 154 158 161 164 165 164 164 163 163 160 157 154 151 149 147 145 145 144 143 141 140 141 141 141 141 141 142 142 142 142 142 142 142 143 143 143 144 144 145 146 146 146 147 148 148 148 148 145 143 142 140 134 128 123 117 112 108 106 105 105 104 104 103 102 101 100 100 99 103 104 105 106 107 109 111 115 118 122 127 133 140 143 150 152 153 155 157 159 162 164 167 168 168 168 167 166 163 160 157 153 150 148 148 147 147 147 145 145 144 143 143 143 144 144 144 144 145 145 145 145 146 146 146 146 146 147 147 148 149 150 150 150 150 149 147 145 143 141 134 127 123 117 111 108 105 105 104 104 103 103 102 101 100 100 100 104 105 106 107 108 110 113 117 120 125 129 138 145 151 156 156 157 158 160 164 166 168 170 171 172 171 171 169 166 163 160 156 153 151 150 150 149 149 149 148 146 146 146 146 146 146 146 147 148 148 149 149 149 148 148 148 148 149 149 150 150 150 150 150 150 150 148 146 143 141 136 129 123 117 110 108 105 104 103 102 102 101 101 100 100 100 100 103 104 105 106 108 110 114 118 123 127 133 143 150 156 160 160 161 162 167 170 171 172 173 175 175 174 174 173 171 168 164 160 156 155 154 153 153 152 152 150 149 148 148 148 148 148 149 149 150 152 152 152 152 151 150 150 150 150 150 150 150 150 150 150 150 150 149 147 144 141 138 132 125 118 111 108 105 103 102 101 101 101 100 100 100 100 100 102 103 104 106 108 112 116 120 125 129 137 146 154 161 163 165 166 169 172 173 174 175 177 178 178 178 178 177 174 171 168 164 160 158 157 157 156 156 156 155 152 151 150 150 151 151 152 154 156 157 157 156 155 153 152 152 151 150 150 150 150 150 150 150 150 150 150 147 144 141 138 133 127 120 113 109 106 103 101 101 101 100 100 100 100 100 100 101 102 104 106 109 113 118 122 127 133 141 149 155 161 165 168 170 172 175 176 177 179 181 181 181 180 180 179 177 174 171 167 165 163 161 160 160 160 160 160 157 155 155 154 154 155 157 159 161 161 161 159 156 154 154 153 151 150 150 150 150 150 150 150 150 150 149 147 144 141 137 133 129 123 116 110 107 104 102 102 101 101 101 100 100 100 100 101 102 105 107 110 115 120 124 129 136 143 149 155 162 168 170 174 176 178 179 181 182 184 184 183 181 180 180 179 177 174 172 170 168 166 165 164 164 164 164 162 160 159 159 158 160 162 164 166 166 163 159 157 156 155 153 151 150 150 150 150 150 150 150 150 150 149 146 143 140 137 133 129 124 119 112 108 105 103 103 102 101 101 101 101 100 100 102 103 106 108 112 116 121 125 130 138 145 151 157 163 170 174 178 181 181 184 186 186 187 186 184 181 180 180 180 179 178 174 173 173 171 170 170 169 168 167 166 164 163 162 161 164 167 169 170 168 164 160 158 157 155 153 151 150 150 150 150 150 150 150 150 150 147 144 141 138 135 133 128 125 122 116 109 107 104 104 103 102 101 101 101 101 101 103 105 107 110 114 118 122 127 132 140 146 153 159 165 171 176 180 183 185 186 189 190 188 187 184 182 180 180 180 179 178 176 176 176 176 174 174 173 172 170 168 167 165 163 164 165 169 170 170 170 166 162 159 157 155 153 151 150 150 150 150 150 150 150 150 150 146 142 139 136 133 131 128 125 122 117 110 108 106 105 104 103 103 101 101 101 101 104 106 108 111 115 119 123 128 134 141 148 154 161 166 172 179 182 184 186 189 190 190 190 187 185 183 180 180 180 179 179 177 176 177 178 178 178 177 176 174 171 168 166 164 166 168 170 170 170 170 168 162 159 157 155 153 151 150 150 150 150 150 150 150 150 148 144 140 137 134 132 129 127 125 122 117 111 110 107 107 106 105 104 103 102 101 100 104 106 110 114 118 121 125 129 135 142 150 157 162 167 173 180 183 186 188 190 190 190 189 184 183 181 180 179 179 176 177 176 176 177 178 179 180 180 179 177 173 169 167 166 167 169 170 170 170 170 167 161 159 157 155 153 151 150 150 150 150 150 150 149 147 145 141 138 135 133 130 127 125 123 121 118 113 111 110 110 109 109 107 106 105 103 100 105 107 111 117 121 124 127 131 137 148 154 159 164 168 174 181 184 187 190 191 191 190 187 184 180 178 175 174 172 171 173 173 173 176 178 179 180 180 180 179 175 170 168 166 168 169 170 170 170 170 166 161 158 156 154 153 151 150 150 150 150 148 147 146 145 143 139 135 133 131 129 126 124 121 120 118 114 111 111 111 110 110 109 107 106 104 100 107 109 113 118 122 126 129 134 139 150 156 160 165 170 175 181 184 188 191 192 192 189 185 181 177 173 171 169 168 167 169 170 172 174 176 178 179 180 180 179 175 170 168 166 166 168 168 170 170 168 164 160 158 155 152 151 150 149 149 148 147 145 144 143 142 141 136 133 130 129 127 125 123 120 119 118 115 112 111 111 111 110 109 109 109 105 100 107 110 114 117 121 126 130 135 142 151 159 163 167 171 177 182 185 189 192 193 191 187 183 179 174 169 167 166 164 164 165 166 169 171 174 178 179 180 180 178 173 169 166 165 165 166 165 168 169 166 163 159 157 154 152 149 148 147 146 145 143 142 141 140 139 138 133 130 128 127 125 124 122 120 118 117 115 112 111 111 111 111 110 109 108 106 100 107 110 115 119 123 129 135 141 146 156 161 165 168 173 179 182 186 189 193 194 191 184 179 175 170 166 162 161 160 160 161 162 165 169 172 176 178 179 179 176 172 168 165 163 163 163 163 165 166 164 161 158 155 152 150 147 146 144 143 142 141 139 139 138 137 135 131 128 127 125 124 122 121 119 118 116 115 113 112 111 111 110 110 109 109 105 100 108 110 114 120 128 134 140 146 152 158 162 166 169 175 180 183 186 189 193 195 190 184 176 171 167 163 160 158 157 156 157 159 163 166 170 174 176 178 178 176 172 167 164 161 161 160 161 163 163 163 160 157 153 150 148 146 144 142 141 140 139 138 136 135 134 133 129 127 126 124 122 121 119 118 117 116 114 113 112 111 110 110 109 109 107 104 100 108 110 115 121 131 137 142 147 152 159 163 167 170 177 182 184 187 189 192 194 189 183 174 169 165 161 158 156 154 153 154 157 160 164 167 171 172 174 174 173 171 168 161 159 158 158 159 161 161 160 158 155 151 149 147 144 142 141 140 138 137 136 135 134 132 130 128 126 125 123 121 119 118 117 116 115 113 112 112 111 110 109 108 107 105 101 100 110 111 116 122 129 137 142 146 151 158 164 168 172 179 183 186 189 190 192 193 188 182 174 168 164 161 157 154 151 149 151 154 158 161 167 170 170 170 170 169 168 166 160 157 156 156 157 158 159 159 156 153 150 148 146 144 141 140 140 138 136 135 134 133 131 129 127 125 123 122 120 118 117 116 115 114 112 111 110 108 107 106 105 104 102 100 100 110 112 118 124 130 136 142 146 151 157 163 168 174 178 183 187 189 190 191 192 189 182 174 168 164 160 157 153 149 148 149 153 157 161 167 170 170 170 168 166 165 163 159 156 154 153 155 155 155 155 152 150 149 147 145 143 141 140 139 138 136 134 133 131 130 128 126 124 122 120 119 117 116 115 114 113 111 110 107 106 105 105 102 101 100 100 100 110 113 119 125 131 136 141 145 150 158 164 168 172 177 183 187 189 191 192 191 190 183 174 168 164 160 157 153 150 149 150 154 158 162 166 170 170 168 166 164 162 160 158 155 152 151 151 151 151 151 149 148 147 146 145 143 142 140 139 137 135 134 132 131 129 127 125 123 121 119 117 116 114 114 113 112 110 108 107 105 103 100 100 100 100 99 99 110 114 119 126 131 135 140 144 149 158 164 168 172 176 183 184 189 190 191 191 190 183 174 169 165 161 158 154 150 151 152 155 159 164 168 168 168 167 165 163 160 158 155 153 150 148 148 148 148 148 147 146 146 145 143 142 141 140 139 138 136 134 132 131 128 126 124 122 120 118 116 114 113 113 112 111 108 107 106 105 104 102 100 99 99 99 99 110 116 121 127 132 136 140 144 148 154 160 166 171 176 180 184 189 190 191 191 191 183 176 170 166 163 159 156 154 155 155 158 161 165 170 167 166 165 163 161 158 155 152 150 146 145 145 145 146 146 144 145 145 144 142 141 140 140 140 140 138 136 134 131 128 125 123 121 119 117 115 113 112 111 111 110 108 106 105 102 100 100 99 99 99 98 98 110 115 121 127 132 136 140 144 148 151 157 162 169 174 178 181 186 188 190 191 190 184 177 172 168 165 162 159 158 158 159 161 166 167 169 166 164 163 161 159 156 153 149 146 142 142 141 142 143 143 143 143 144 142 141 140 140 140 140 140 140 138 134 131 128 125 123 120 117 116 114 112 110 109 108 107 106 105 102 101 100 99 99 99 98 98 97 110 114 120 126 131 136 140 143 146 149 154 159 166 171 177 180 182 186 190 190 190 185 179 174 171 168 166 163 164 163 166 169 170 170 168 164 162 161 158 155 153 150 147 143 139 139 139 139 140 141 141 142 142 141 140 140 140 140 140 140 140 137 134 131 128 125 122 119 116 114 112 110 109 109 108 107 105 100 100 100 99 99 99 98 98 97 97 110 112 118 124 130 135 139 142 145 148 151 157 163 169 172 176 179 183 187 190 190 186 180 177 175 173 170 169 169 170 171 172 170 170 167 163 160 157 154 152 149 147 144 140 137 137 136 137 138 138 139 140 141 140 140 140 140 140 140 140 140 138 134 131 128 124 121 118 115 112 110 109 108 107 106 105 100 100 100 99 99 99 98 98 98 97 97 108 110 116 122 128 133 137 141 143 146 149 154 161 165 168 172 175 180 184 188 189 187 182 178 176 176 175 173 174 173 175 174 173 171 168 161 157 154 150 148 145 143 141 138 135 135 134 135 135 136 136 137 138 139 140 140 140 140 140 140 140 139 135 130 126 123 120 117 114 111 109 108 107 106 105 100 100 100 99 99 98 98 98 98 97 97 96 108 110 114 120 126 129 134 139 142 144 146 152 158 161 164 168 171 175 181 184 186 186 183 179 178 178 177 175 178 177 177 176 175 173 168 162 156 153 149 145 142 140 138 136 133 132 132 132 134 134 134 134 135 136 137 138 140 140 140 140 139 137 133 127 123 120 118 115 112 108 108 106 106 105 100 100 100 98 98 98 98 98 98 97 96 96 96 108 110 112 117 122 126 129 135 139 141 144 149 153 156 160 165 168 171 177 181 184 185 182 180 180 179 178 178 180 179 179 178 176 173 168 163 157 152 148 143 139 137 135 133 131 130 130 131 132 132 132 131 132 132 133 134 136 137 137 137 136 134 131 124 121 118 116 114 111 109 107 106 105 100 100 100 97 97 97 97 97 97 97 96 96 96 96 107 109 111 116 119 122 125 130 135 137 140 144 148 152 156 161 165 168 172 177 181 184 181 181 181 180 180 180 180 180 180 178 178 173 168 163 158 152 146 141 138 136 134 132 130 129 128 128 130 130 130 129 128 129 129 130 132 133 133 134 134 132 128 122 119 116 114 112 108 106 105 105 100 100 100 97 97 97 97 97 97 97 96 96 96 96 95 107 108 110 113 115 118 121 126 131 134 137 140 143 148 152 157 162 165 169 173 177 181 181 181 180 181 181 181 180 180 180 178 176 170 167 163 158 152 145 140 137 134 132 130 129 127 127 126 127 128 128 126 125 125 125 123 126 128 129 130 130 125 124 119 116 114 112 110 107 106 105 100 100 100 96 96 96 96 96 96 96 96 96 96 96 95 95 108 109 110 111 114 116 118 122 127 130 133 136 140 144 148 153 157 161 165 169 173 177 180 180 180 180 181 180 180 180 179 178 173 168 165 161 156 149 143 139 136 133 130 129 128 126 126 125 125 125 125 124 122 121 120 120 120 120 121 122 123 122 120 117 114 111 108 106 105 100 100 100 100 96 96 96 96 96 96 96 96 96 96 96 95 95 95 108 109 110 110 112 115 116 118 122 125 129 133 137 140 144 149 152 157 161 165 169 173 176 179 179 180 180 180 178 178 176 175 171 165 163 160 153 148 143 139 135 132 129 128 127 125 124 124 123 123 122 122 120 118 117 118 115 117 118 118 119 117 116 115 112 109 107 105 100 100 100 100 97 96 96 96 96 96 96 96 96 96 96 95 95 95 95 108 109 110 110 110 113 114 116 119 122 126 131 134 138 141 145 149 152 156 160 164 169 171 174 177 175 178 179 177 175 174 172 168 163 160 157 151 147 143 138 133 130 128 125 125 124 123 122 121 121 120 120 118 116 115 111 110 110 110 110 113 114 113 112 110 107 105 102 100 100 100 98 97 96 96 96 96 96 96 96 96 96 96 95 95 95 94 108 109 109 110 110 111 112 114 117 120 124 128 131 135 138 142 145 149 152 155 158 163 166 167 170 173 175 175 175 173 171 169 164 160 156 153 149 144 140 136 131 129 126 124 123 123 122 121 120 120 120 119 117 115 111 110 110 110 110 110 109 109 110 109 108 106 103 101 100 100 100 98 97 96 96 96 96 96 96 96 96 96 95 95 95 95 94 108 108 109 109 110 110 110 112 115 118 121 125 128 131 134 138 141 145 147 149 152 157 160 161 163 166 169 170 170 171 168 162 158 155 152 148 144 140 136 132 129 127 124 122 121 120 120 120 120 120 119 117 115 113 110 110 110 110 109 108 108 107 107 106 105 104 102 100 100 100 99 98 97 96 96 96 96 96 96 96 96 96 95 95 95 94 94 107 108 109 109 110 110 110 112 115 117 119 122 125 127 130 133 137 141 143 145 148 149 152 155 157 159 160 160 161 162 159 156 153 149 146 142 139 134 130 128 126 125 122 120 120 120 119 119 119 118 117 115 113 111 110 110 109 108 107 106 106 105 104 104 103 102 100 100 100 99 99 98 97 96 96 96 96 96 96 96 96 95 95 95 95 94 94 107 108 109 109 110 110 110 113 115 117 118 119 120 123 126 129 131 134 139 142 144 145 147 148 150 152 154 154 153 154 151 149 146 143 140 136 130 128 126 124 122 121 120 119 118 117 117 117 116 116 115 113 112 110 109 108 107 106 106 105 104 103 102 101 101 100 100 100 100 99 99 98 97 96 96 96 96 96 96 96 96 95 95 95 94 94 94 107 108 108 109 109 110 111 112 114 115 116 117 118 119 121 125 125 127 131 136 140 141 142 144 144 145 148 149 148 147 146 144 140 138 136 130 127 125 123 121 119 118 117 117 116 116 116 115 114 113 113 111 110 109 108 107 106 105 105 103 103 102 102 102 103 101 100 100 100 99 98 98 97 96 96 96 96 96 96 96 96 95 95 95 94 94 94 107 107 108 108 109 109 110 110 112 113 114 115 116 117 117 120 120 121 123 129 134 136 138 139 139 139 140 142 142 141 141 140 137 134 131 127 124 122 120 118 117 115 113 114 113 114 114 113 112 111 110 110 109 108 107 106 105 105 105 104 104 104 103 103 103 101 100 100 99 99 98 97 96 96 96 96 96 96 96 96 96 95 95 94 94 94 94 106 107 107 108 108 108 109 110 110 111 112 113 114 115 114 115 116 116 119 123 125 130 133 134 134 134 134 135 135 136 135 134 132 130 128 124 121 119 118 116 114 112 111 111 111 112 112 111 110 110 110 109 108 108 107 108 107 106 105 104 104 104 103 103 103 102 101 100 99 99 98 97 96 96 96 96 96 96 96 96 95 95 95 94 94 94 94 106 106 107 107 107 108 109 109 110 110 111 111 112 113 112 111 111 112 115 118 118 119 126 128 128 127 128 128 129 130 129 128 127 125 122 120 118 117 115 114 112 110 110 110 110 110 111 110 110 110 109 109 108 107 106 105 105 105 104 104 104 103 103 102 102 102 101 100 99 99 98 97 96 96 96 96 96 96 96 96 95 95 94 94 94 94 94 105 106 106 107 107 108 108 109 109 110 110 110 110 111 110 110 110 110 111 114 115 116 121 121 121 121 121 122 123 124 124 123 121 119 118 117 115 114 112 111 110 110 110 110 110 110 109 109 108 109 107 107 106 106 105 105 104 104 104 104 103 103 102 102 102 101 100 100 99 99 98 97 96 96 96 96 96 96 96 96 95 95 94 94 94 94 94 105 105 106 106 107 107 108 108 109 109 109 109 109 110 110 110 110 110 110 110 111 112 115 115 115 115 115 116 116 117 119 118 117 116 114 113 112 110 110 110 110 110 110 109 109 108 107 106 106 106 106 106 105 105 105 104 104 104 103 103 103 102 102 102 101 100 100 99 99 98 97 97 96 96 96 96 96 96 96 96 95 95 94 94 94 94 94 104 105 105 106 106 107 107 108 108 108 108 108 108 108 108 108 108 108 108 108 110 110 110 110 110 110 110 111 113 115 116 115 113 112 110 110 110 110 110 110 109 108 108 108 108 107 106 105 105 105 105 105 105 104 104 104 104 103 103 103 102 102 102 101 100 100 100 99 99 98 97 97 96 96 96 96 96 96 96 96 95 95 94 94 94 94 94 104 104 105 105 106 106 107 107 107 107 107 107 107 106 106 106 106 106 106 108 108 108 106 106 108 109 110 110 112 112 113 112 111 110 110 110 110 109 109 109 108 107 107 107 107 106 106 105 104 104 104 104 104 104 104 103 103 103 103 102 102 101 101 100 100 100 100 99 99 98 97 97 96 96 96 96 96 96 96 95 95 95 94 94 94 94 94 103 104 104 105 105 106 106 106 107 107 106 106 105 105 104 104 104 104 105 107 107 106 105 105 107 108 109 110 110 110 110 110 110 109 109 109 109 109 109 108 107 107 107 107 106 106 105 104 104 104 104 104 104 104 103 103 103 103 102 102 101 101 100 100 100 100 100 99 98 97 97 96 96 96 96 96 96 96 95 95 95 94 94 94 94 94 94 gle-graphics-4.2.4c/gle-refman/utilities/fig/surf1.gle0000644000000000000000000000564611405447072021274 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! size 7 5 set font psh begin origin box 5 5 begin surface size 5 5 xtitle "X-axis" hei 0.2 ytitle "Y-axis" hei 0.2 data "surf/surf1.z" xaxis hei 0.2 dticks 1 yaxis hei 0.2 dticks 1 nofirst zaxis hei 0.2 dticks 0.2 harray 5000 end surface end origin gle-graphics-4.2.4c/gle-refman/utilities/fig/jack/jack.let0000644000000000000000000000527011405447072022062 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! jack.z 0, 30, 1 0, 20, 1 (x-15)^2+(y-10)^2 gle-graphics-4.2.4c/gle-refman/utilities/fig/jack/jack.z0000644000000000000000000001165411405447072021552 0ustar rootroot! nx 31 ny 21 xmin 0 xmax 30 ymin 0 ymax 20 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 325 296 269 244 221 200 181 164 149 136 125 116 109 104 101 100 101 104 109 116 125 136 149 164 181 200 221 244 269 296 325 306 277 250 225 202 181 162 145 130 117 106 97 90 85 82 81 82 85 90 97 106 117 130 145 162 181 202 225 250 277 306 289 260 233 208 185 164 145 128 113 100 89 80 73 68 65 64 65 68 73 80 89 100 113 128 145 164 185 208 233 260 289 274 245 218 193 170 149 130 113 98 85 74 65 58 53 50 49 50 53 58 65 74 85 98 113 130 149 170 193 218 245 274 261 232 205 180 157 136 117 100 85 72 61 52 45 40 37 36 37 40 45 52 61 72 85 100 117 136 157 180 205 232 261 250 221 194 169 146 125 106 89 74 61 50 41 34 29 26 25 26 29 34 41 50 61 74 89 106 125 146 169 194 221 250 241 212 185 160 137 116 97 80 65 52 41 32 25 20 17 16 17 20 25 32 41 52 65 80 97 116 137 160 185 212 241 234 205 178 153 130 109 90 73 58 45 34 25 18 13 10 9 10 13 18 25 34 45 58 73 90 109 130 153 178 205 234 229 200 173 148 125 104 85 68 53 40 29 20 13 8 5 4 5 8 13 20 29 40 53 68 85 104 125 148 173 200 229 226 197 170 145 122 101 82 65 50 37 26 17 10 5 2 1 2 5 10 17 26 37 50 65 82 101 122 145 170 197 226 225 196 169 144 121 100 81 64 49 36 25 16 9 4 1 0 1 4 9 16 25 36 49 64 81 100 121 144 169 196 225 226 197 170 145 122 101 82 65 50 37 26 17 10 5 2 1 2 5 10 17 26 37 50 65 82 101 122 145 170 197 226 229 200 173 148 125 104 85 68 53 40 29 20 13 8 5 4 5 8 13 20 29 40 53 68 85 104 125 148 173 200 229 234 205 178 153 130 109 90 73 58 45 34 25 18 13 10 9 10 13 18 25 34 45 58 73 90 109 130 153 178 205 234 241 212 185 160 137 116 97 80 65 52 41 32 25 20 17 16 17 20 25 32 41 52 65 80 97 116 137 160 185 212 241 250 221 194 169 146 125 106 89 74 61 50 41 34 29 26 25 26 29 34 41 50 61 74 89 106 125 146 169 194 221 250 261 232 205 180 157 136 117 100 85 72 61 52 45 40 37 36 37 40 45 52 61 72 85 100 117 136 157 180 205 232 261 274 245 218 193 170 149 130 113 98 85 74 65 58 53 50 49 50 53 58 65 74 85 98 113 130 149 170 193 218 245 274 289 260 233 208 185 164 145 128 113 100 89 80 73 68 65 64 65 68 73 80 89 100 113 128 145 164 185 208 233 260 289 306 277 250 225 202 181 162 145 130 117 106 97 90 85 82 81 82 85 90 97 106 117 130 145 162 181 202 225 250 277 306 325 296 269 244 221 200 181 164 149 136 125 116 109 104 101 100 101 104 109 116 125 136 149 164 181 200 221 244 269 296 325 gle-graphics-4.2.4c/gle-refman/utilities/fig/jack/jack.big0000644000000000000000000004550211405447072022041 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! amove 9 9 set hei 0.3 set color BLACK set lstyle 2 amove 2.41333 3.32369 aline 2.62 3.07536 amove 2.62 3.07536 aline 2.83333 2.89302 amove 2.83333 2.89302 aline 3.04 2.77668 amove 3.04 2.77668 aline 3.24667 2.72632 amove 3.24667 2.72632 aline 3.45333 2.74195 amove 3.45333 2.74195 aline 3.66 2.82357 amove 3.66 2.82357 aline 3.87333 2.97118 amove 3.87333 2.97118 aline 4.08 3.18478 amove 4.08 3.18478 aline 4.28667 3.46437 amove 4.28667 3.46437 aline 4.49333 3.80995 amove 2.41333 3.32369 aline 2.31333 2.90777 amove 2.62 3.07536 aline 2.52 2.65944 amove 2.83333 2.89302 aline 2.72667 2.4771 amove 3.04 2.77668 aline 2.93333 2.36075 amove 3.24667 2.72632 aline 3.14 2.31039 amove 3.45333 2.74195 aline 3.35333 2.32602 amove 3.66 2.82357 aline 3.56 2.40764 amove 3.87333 2.97118 aline 3.76667 2.55525 amove 4.08 3.18478 aline 3.97333 2.76885 amove 4.28667 3.46437 aline 4.18667 3.04844 amove 4.49333 3.80995 aline 4.39333 3.39402 amove 2.31333 2.90777 aline 2.51333 2.66745 amove 2.52 2.65944 aline 2.72667 2.4771 amove 2.72667 2.4771 aline 2.92667 2.3645 amove 2.93333 2.36075 aline 3.13333 2.31202 amove 3.14 2.31039 aline 3.35333 2.32602 amove 3.35333 2.32602 aline 3.56 2.40764 amove 3.56 2.40764 aline 3.76 2.55049 amove 3.76667 2.55525 aline 3.97333 2.76885 amove 3.97333 2.76885 aline 4.18667 3.04844 amove 4.18667 3.04844 aline 4.38667 3.38287 amove 2.31333 2.90777 aline 2.20667 2.55783 amove 2.52 2.65944 aline 2.41333 2.3095 amove 2.72667 2.4771 aline 2.62 2.12716 amove 2.93333 2.36075 aline 2.83333 2.01082 amove 3.14 2.31039 aline 3.04 1.96046 amove 3.35333 2.32602 aline 3.24667 1.97609 amove 3.56 2.40764 aline 3.45333 2.05771 amove 3.76667 2.55525 aline 3.66667 2.20532 amove 3.97333 2.76885 aline 3.87333 2.41892 amove 4.18667 3.04844 aline 4.08 2.69851 amove 4.39333 3.39402 aline 4.28667 3.04409 amove 2.20667 2.55783 aline 2.40667 2.31751 amove 2.41333 2.3095 aline 2.62 2.12716 amove 2.62 2.12716 aline 2.83333 2.01082 amove 2.83333 2.01082 aline 3.03333 1.96208 amove 3.04 1.96046 aline 3.24667 1.97609 amove 3.24667 1.97609 aline 3.44667 2.05507 amove 3.45333 2.05771 aline 3.66667 2.20532 amove 3.66667 2.20532 aline 3.86667 2.41203 amove 3.87333 2.41892 aline 4.08 2.69851 amove 4.08 2.69851 aline 4.28667 3.04409 amove 2.20667 2.55783 aline 2.1 2.27389 amove 2.41333 2.3095 aline 2.31333 2.02556 amove 2.62 2.12716 aline 2.52 1.84322 amove 2.83333 2.01082 aline 2.72667 1.75162 amove 3.04 1.96046 aline 2.93333 1.80024 amove 3.24667 1.97609 aline 3.14 1.84887 amove 3.45333 2.05771 aline 3.35333 1.89749 amove 3.66667 2.20532 aline 3.56 1.94612 amove 3.87333 2.41892 aline 3.76667 2.13497 amove 4.08 2.69851 aline 3.97333 2.41456 amove 4.28667 3.04409 aline 4.18667 2.76014 amove 2.1 2.27389 aline 2.31333 2.02556 amove 2.31333 2.02556 aline 2.51333 1.8491 amove 2.52 1.84322 aline 2.72 1.75457 amove 2.72667 1.75162 aline 2.93333 1.80024 amove 2.93333 1.80024 aline 3.14 1.84887 amove 3.14 1.84887 aline 3.35333 1.89749 amove 3.35333 1.89749 aline 3.56 1.94612 amove 3.56 1.94612 aline 3.76 2.12888 amove 3.76667 2.13497 aline 3.97333 2.41456 amove 3.97333 2.41456 aline 4.18667 2.76014 amove 2.1 2.27389 aline 2 2.05593 amove 2.31333 2.02556 aline 2.20667 1.8076 amove 2.52 1.84322 aline 2.41333 1.74899 amove 2.72667 1.75162 aline 2.62 1.79762 amove 2.93333 1.80024 aline 2.93333 1.80024 amove 3.14 1.84887 aline 3.14 1.84887 amove 3.35333 1.89749 aline 3.35333 1.89749 amove 3.56 1.94612 aline 3.56 1.94612 amove 3.76667 2.13497 aline 3.66667 2.04075 amove 3.97333 2.41456 aline 3.87333 2.19661 amove 4.18667 2.76014 aline 4.08 2.54219 amove 2 2.05593 aline 2.2 1.81561 amove 2.20667 1.8076 aline 2.40667 1.75089 amove 2.41333 1.74899 aline 2.62 1.79762 amove 2.62 1.79762 aline 2.62 1.79762 amove 3.66667 2.04075 aline 3.66667 2.04075 amove 3.66667 2.04075 aline 3.87333 2.19661 amove 3.87333 2.19661 aline 4.08 2.54219 amove 2 2.05593 aline 1.89333 1.90397 amove 2.20667 1.8076 aline 2.1 1.74637 amove 2.41333 1.74899 aline 2.41333 1.74899 amove 2.62 1.79762 aline 2.62 1.79762 amove 3.66667 2.04075 aline 3.66667 2.04075 amove 3.87333 2.19661 aline 3.87333 2.19661 amove 4.08 2.54219 aline 4.08 2.54219 amove 1.89333 1.90397 aline 2.1 1.74637 amove 2.1 1.74637 aline 2.27333 1.78588 amove 1.89333 1.90397 aline 1.78667 1.81799 amove 2.1 1.74637 aline 2 1.79238 amove 1.78667 1.81799 aline 2 1.79238 amove 2 1.79238 aline 2 1.79238 amove 1.78667 1.81799 aline 1.68667 1.798 amove 2 1.79238 aline 2 1.79238 amove 1.68667 1.798 aline 1.78667 1.81754 amove 1.68667 1.798 aline 1.58 1.84401 amove 1.58 1.84401 aline 1.58 1.84401 amove 1.58 1.84401 aline 1.48 1.956 amove 1.48 1.956 aline 1.48 1.956 amove 1.48 1.956 aline 1.37333 2.13398 amove 1.37333 2.13398 aline 1.37333 2.13398 amove 1.37333 2.13398 aline 1.26667 2.37796 amove 1.26667 2.37796 aline 1.26667 2.37796 amove 1.26667 2.37796 aline 1.16667 2.68792 amove 1.16667 2.68792 aline 1.16667 2.68792 amove 1.16667 2.68792 aline 1.06 3.06387 amove 1.06 3.06387 aline 1.06 3.06387 amove 1.06 3.06387 aline 0.96 3.50581 amove 0.96 3.50581 aline 0.96 3.50581 amove 0.96 3.50581 aline 0.853333 4.01375 amove 0.853333 4.01375 aline 0.853333 4.01375 set color BLUE set lstyle 1 amove 2.41333 3.32369 aline 2.62 3.07536 amove 2.62 3.07536 aline 2.83333 2.89302 amove 2.83333 2.89302 aline 3.04 2.77668 amove 3.04 2.77668 aline 3.24667 2.72632 amove 3.24667 2.72632 aline 3.45333 2.74195 amove 3.45333 2.74195 aline 3.66 2.82357 amove 3.66 2.82357 aline 3.87333 2.97118 amove 3.87333 2.97118 aline 4.08 3.18478 amove 4.08 3.18478 aline 4.28667 3.46437 amove 4.28667 3.46437 aline 4.49333 3.80995 amove 2.41333 3.32369 aline 2.31333 2.90777 amove 2.62 3.07536 aline 2.62 3.07536 amove 2.83333 2.89302 aline 2.83333 2.89302 amove 3.04 2.77668 aline 3.04 2.77668 amove 3.24667 2.72632 aline 3.24667 2.72632 amove 3.45333 2.74195 aline 3.45333 2.74195 amove 3.66 2.82357 aline 3.66 2.82357 amove 3.87333 2.97118 aline 3.87333 2.97118 amove 4.08 3.18478 aline 4.08 3.18478 amove 4.28667 3.46437 aline 4.28667 3.46437 amove 4.49333 3.80995 aline 4.49333 3.80995 amove 2.31333 2.90777 aline 2.31333 2.90777 amove 2.31333 2.90777 aline 2.20667 2.55783 amove 2.20667 2.55783 aline 2.20667 2.55783 amove 2.20667 2.55783 aline 2.1 2.27389 amove 2.1 2.27389 aline 2.1 2.27389 amove 2.1 2.27389 aline 2 2.05593 amove 2 2.05593 aline 2 2.05593 amove 2 2.05593 aline 1.89333 1.90397 amove 1.89333 1.90397 aline 1.89333 1.90397 amove 1.89333 1.90397 aline 1.78667 1.81799 amove 1.78667 1.81799 aline 1.78667 1.81799 amove 1.78667 1.81799 aline 1.68667 1.798 amove 1.68667 1.798 aline 1.68667 1.798 amove 1.7 1.80061 aline 1.7 1.80061 amove 1.68667 1.798 aline 1.58 1.84401 amove 1.84 1.86292 aline 1.79333 1.88438 amove 1.58 1.84401 aline 1.79333 1.88438 amove 1.79333 1.88438 aline 1.89333 1.90791 amove 1.58 1.84401 aline 1.48 1.956 amove 1.79333 1.88438 aline 1.68667 1.93039 amove 1.93333 1.96176 aline 1.89333 1.97901 amove 1.48 1.956 aline 1.68 1.93121 amove 1.68667 1.93039 aline 1.88667 1.97744 amove 1.89333 1.97901 aline 1.95333 1.99313 amove 1.48 1.956 aline 1.37333 2.13398 amove 1.68667 1.93039 aline 1.58 1.97639 amove 1.89333 1.97901 aline 1.79333 2.02502 amove 2.00667 2.07057 aline 2 2.07364 amove 1.37333 2.13398 aline 1.58 1.97639 amove 1.58 1.97639 aline 1.79333 2.02502 amove 1.79333 2.02502 aline 1.99333 2.07207 amove 2 2.07364 aline 2.00667 2.07521 amove 1.37333 2.13398 aline 1.26667 2.37796 amove 1.58 1.97639 aline 1.48 2.12963 amove 1.79333 2.02502 aline 1.68667 2.07102 amove 2 2.07364 aline 1.89333 2.11965 amove 3.4 2.75036 aline 3.35333 2.86421 amove 1.26667 2.37796 aline 1.48 2.12963 amove 1.48 2.12963 aline 1.68667 2.07102 amove 1.68667 2.07102 aline 1.88667 2.11808 amove 1.89333 2.11965 aline 2.04 2.15415 amove 3.27333 2.73044 aline 3.34667 2.85306 amove 1.26667 2.37796 aline 1.16667 2.68792 amove 1.48 2.12963 aline 1.37333 2.43959 amove 1.68667 2.07102 aline 1.58 2.25725 amove 1.89333 2.11965 aline 1.79333 2.16565 amove 2.06 2.18667 aline 2 2.21427 amove 3.05333 2.78985 aline 3.04 2.82859 amove 3.35333 2.86421 aline 3.24667 3.17417 amove 1.16667 2.68792 aline 1.37333 2.43959 amove 1.37333 2.43959 aline 1.58 2.25725 amove 1.58 2.25725 aline 1.79333 2.16565 amove 1.79333 2.16565 aline 1.99333 2.21271 amove 2 2.21427 aline 2.08 2.2331 amove 3.01333 2.79252 aline 3.03333 2.81957 amove 3.04 2.82859 aline 3.24 3.16303 amove 1.16667 2.68792 aline 1.06 3.06387 amove 1.37333 2.43959 aline 1.27333 2.81554 amove 1.58 2.25725 aline 1.48 2.6332 amove 1.79333 2.16565 aline 1.68667 2.51686 amove 2 2.21427 aline 1.89333 2.4665 amove 2.14 2.39992 aline 2.1 2.48213 amove 3.04 2.82859 aline 2.93333 3.20455 amove 3.24667 3.17417 aline 3.14667 3.55013 amove 1.06 3.06387 aline 1.27333 2.81554 amove 1.27333 2.81554 aline 1.47333 2.63909 amove 1.48 2.6332 aline 1.68667 2.51686 amove 1.68667 2.51686 aline 1.89333 2.4665 amove 1.89333 2.4665 aline 2.09333 2.48162 amove 2.1 2.48213 aline 2.18667 2.51528 amove 2.76 2.97005 aline 2.92667 3.19553 amove 2.93333 3.20455 aline 3.14667 3.55013 amove 1.06 3.06387 aline 0.96 3.50581 amove 1.27333 2.81554 aline 1.16667 3.25749 amove 1.48 2.6332 aline 1.37333 3.07515 amove 1.68667 2.51686 aline 1.58 2.9588 amove 1.89333 2.4665 aline 1.79333 2.90844 amove 2.1 2.48213 aline 2 2.92407 amove 2.26667 2.7571 aline 2.20667 3.00569 amove 2.70667 3.01335 aline 2.62667 3.3669 amove 2.93333 3.20455 aline 2.83333 3.64649 amove 3.14667 3.55013 aline 3.04 3.99207 amove 0.96 3.50581 aline 1.16667 3.25749 amove 1.16667 3.25749 aline 1.36667 3.08103 amove 1.37333 3.07515 aline 1.58 2.9588 amove 1.58 2.9588 aline 1.79333 2.90844 amove 1.79333 2.90844 aline 1.99333 2.92356 amove 2 2.92407 aline 2.2 3.00306 amove 2.20667 3.00569 aline 2.36 3.11521 amove 2.49333 3.2334 aline 2.62667 3.3669 amove 2.62667 3.3669 aline 2.82667 3.63747 amove 2.83333 3.64649 aline 3.04 3.99207 amove 0.96 3.50581 aline 0.853333 4.01375 amove 1.16667 3.25749 aline 1.06 3.76542 amove 1.37333 3.07515 aline 1.27333 3.58308 amove 1.58 2.9588 aline 1.48 3.46673 amove 1.79333 2.90844 aline 1.68667 3.41637 amove 2 2.92407 aline 1.89333 3.432 amove 2.20667 3.00569 aline 2.1 3.51362 amove 2.39333 3.25489 aline 2.31333 3.66123 amove 2.62667 3.3669 aline 2.52 3.87483 amove 2.83333 3.64649 aline 2.72667 4.15442 amove 3.04 3.99207 aline 2.93333 4.5 amove 0.853333 4.01375 aline 1.06 3.76542 amove 1.06 3.76542 aline 1.27333 3.58308 amove 1.27333 3.58308 aline 1.48 3.46673 amove 1.48 3.46673 aline 1.68667 3.41637 amove 1.68667 3.41637 aline 1.88667 3.4315 amove 1.89333 3.432 aline 2.09333 3.51099 amove 2.1 3.51362 aline 2.31333 3.66123 amove 2.31333 3.66123 aline 2.52 3.87483 amove 2.52 3.87483 aline 2.72 4.1454 amove 2.72667 4.15442 aline 2.92667 4.48885 set color BLUE set lstyle 1 set color BLACK set lstyle 1 amove 4.49333 1.12911 aline 2.96 1.80652 amove 2.69333 1.76599 aline 0.853333 1.33291 amove 0.853333 4.01375 aline 0.853333 1.33291 amove 0.853333 4.01375 aline 2.93333 4.5 amove 0.853333 4.01375 aline 0.86 3.982 amove 2.93333 4.5 aline 4.49333 3.80995 amove 4.49333 3.80995 aline 4.49333 3.80995 amove 4.49333 3.80995 aline 4.49333 1.12911 amove 0.857143 1.33291 aline 2.41738 0.642857 amove 2.41738 0.642857 aline 4.49938 1.12911 set just BC set color BLACK set hei 0.0833333 set just TC amove 0.857143 1.33291 aline 0.855121 1.32834 amove 0.814672 1.23688 rotate -23.8587 text 0 rotate 23.8587 amove 1.11718 1.2179 aline 1.11516 1.21333 amove 1.07471 1.12187 rotate -23.8587 text 5 rotate 23.8587 amove 1.37722 1.10289 aline 1.3752 1.09832 amove 1.33475 1.00687 rotate -23.8587 text 10 rotate 23.8587 amove 1.63726 0.987884 aline 1.63524 0.983311 amove 1.59479 0.891857 rotate -23.8587 text 15 rotate 23.8587 amove 1.8973 0.872875 aline 1.89528 0.868302 amove 1.85483 0.776848 rotate -23.8587 text 20 rotate 23.8587 amove 2.15734 0.757866 aline 2.15531 0.753293 amove 2.11487 0.661839 rotate -23.8587 text 25 rotate 23.8587 amove 2.41738 0.642857 aline 2.41535 0.638284 amove 2.37491 0.54683 rotate -23.8587 text 30 rotate 23.8587 set just TC set color BLACK set hei 0.125 amove 1.51829 0.7189 rotate -23.8587 text Xaxis rotate 23.8587 set color BLACK set hei 0.0833333 set just TC amove 2.41738 0.642857 aline 2.41851 0.637988 amove 2.44126 0.540609 rotate 13.1458 text 0 rotate -13.1458 amove 2.62558 0.691483 aline 2.62671 0.686614 amove 2.64946 0.589234 rotate 13.1458 text 2 rotate -13.1458 amove 2.83378 0.740108 aline 2.83491 0.735239 amove 2.85766 0.63786 rotate 13.1458 text 4 rotate -13.1458 amove 3.04198 0.788733 aline 3.04311 0.783864 amove 3.06586 0.686485 rotate 13.1458 text 6 rotate -13.1458 amove 3.25018 0.837359 aline 3.25131 0.83249 amove 3.27406 0.73511 rotate 13.1458 text 8 rotate -13.1458 amove 3.45838 0.885984 aline 3.45951 0.881115 amove 3.48226 0.783736 rotate 13.1458 text 10 rotate -13.1458 amove 3.66658 0.93461 aline 3.66772 0.929741 amove 3.69046 0.832361 rotate 13.1458 text 12 rotate -13.1458 amove 3.87478 0.983235 aline 3.87592 0.978366 amove 3.89866 0.880987 rotate 13.1458 text 14 rotate -13.1458 amove 4.08298 1.03186 aline 4.08412 1.02699 amove 4.10686 0.929612 rotate 13.1458 text 16 rotate -13.1458 amove 4.29118 1.08049 aline 4.29232 1.07562 amove 4.31506 0.978237 rotate 13.1458 text 18 rotate -13.1458 amove 4.49938 1.12911 aline 4.50052 1.12424 amove 4.52326 1.02686 rotate 13.1458 text 20 rotate -13.1458 set just TC set color BLACK set hei 0.125 amove 3.52527 0.599574 rotate 13.1458 text Yaxis rotate -13.1458 set color BLACK set hei 0.0833333 set just RC amove 0.857143 1.33291 aline 0.852143 1.33291 amove 0.752143 1.33291 text 0 amove 0.857143 1.74535 aline 0.852143 1.74535 amove 0.752143 1.74535 text 50 amove 0.857143 2.15778 aline 0.852143 2.15778 amove 0.752143 2.15778 text 100 amove 0.857143 2.57022 aline 0.852143 2.57022 amove 0.752143 2.57022 text 150 amove 0.857143 2.98266 aline 0.852143 2.98266 amove 0.752143 2.98266 text 200 amove 0.857143 3.39509 aline 0.852143 3.39509 amove 0.752143 3.39509 text 250 amove 0.857143 3.80753 aline 0.852143 3.80753 amove 0.752143 3.80753 text 300 set just BC set color GREEN set lstyle 1 amove 0.853333 4.01375 aline 0.853333 1.33291 amove 0.96 3.88558 aline 0.96 4.03806 amove 0.96 3.50581 aline 0.96 1.35722 amove 1.06 3.76542 aline 1.06 4.06237 amove 1.06 3.06387 aline 1.06 1.38154 amove 1.16667 3.67425 aline 1.16667 4.08668 amove 1.16667 2.68792 aline 1.16667 1.40585 amove 1.27333 3.58308 aline 1.27333 4.111 amove 1.27333 2.36271 aline 1.27333 1.43016 amove 1.37333 3.52678 aline 1.37333 4.13531 amove 1.37333 2.13398 aline 1.37333 1.45447 amove 1.48 3.46673 aline 1.48 4.15962 amove 1.48 1.956 aline 1.48 1.47879 amove 1.58 3.44236 aline 1.58 4.18394 amove 1.58 1.84401 aline 1.58 1.5031 amove 1.68667 3.41637 aline 1.68667 4.20825 amove 1.68667 1.798 aline 1.68667 1.52741 amove 1.79333 3.42444 aline 1.79333 4.23256 amove 1.79333 1.81719 aline 1.79333 1.55173 amove 1.89333 3.432 aline 1.89333 4.25687 amove 1.89333 1.80518 aline 1.89333 1.57604 amove 2 3.47413 aline 2 4.28119 amove 2 1.79238 aline 2 1.60035 amove 2.1 3.51362 aline 2.1 4.3055 amove 2.1 1.74637 aline 2.1 1.62466 amove 2.20667 3.58743 aline 2.20667 4.32981 amove 2.20667 1.77069 aline 2.20667 1.64898 amove 2.31333 3.66123 aline 2.31333 4.35412 amove 2.31333 1.77735 aline 2.31333 1.67329 amove 2.41333 3.76459 aline 2.41333 4.37844 amove 2.41333 1.74899 aline 2.41333 1.6976 amove 2.52 3.87483 aline 2.52 4.40275 amove 2.52 1.77409 aline 2.52 1.72191 amove 2.62667 4.01914 aline 2.62667 4.42706 amove 2.62667 1.79474 aline 2.62667 1.74623 amove 2.72667 4.15442 aline 2.72667 4.45137 amove 2.83333 4.33278 aline 2.83333 4.47569 amove 0.853333 1.33291 aline 2.7 1.76312 amove 0.853333 2.15778 aline 1.32 2.25597 amove 0.853333 2.98266 aline 1.07333 3.01688 amove 1 3.83751 aline 2.79333 4.2659 amove 0.853333 3.80753 aline 0.9 3.79153 set color BLACK set lstyle 1 set color BLACK set lstyle 1 gle-graphics-4.2.4c/gle-refman/utilities/fig/jack/jack.sur0000644000000000000000000000552111405447072022106 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! begin surface size 5 5 data jack.z sample 2 back ystep 1 zstep 100 color green xtitle "Xaxis" ytitle "Yaxis" top color blue zclip min 100 zaxis min 0 underneath on lstyle 2 end surface gle-graphics-4.2.4c/gle-refman/utilities/fig/gaussian.gle0000664000000000000000000000611011447333241022031 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! size 7 6 include "color.gle" include "../../script/manual.gle" sub gaussian x y local s = 0.75 return exp(-(x^2+y^2)/(2*s^2)) end sub manual_graph_mode begin graph size 6 6 scale auto title "2D Gaussian" xaxis min -2 max 2 yaxis min -2 max 2 colormap gaussian(x,y) 200 200 zmin 0 zmax 1 color end graph set hei 0.3633*0.75 amove xg(xgmax)+0.3 yg(ygmin) color_range_vertical zmin 0 zmax 1 zstep 0.1 format "fix 1" gle-graphics-4.2.4c/gle-refman/utilities/fig/surf5.gle0000644000000000000000000000566311405447072021277 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! size 7 5 set font psh amove -0.25 -0.45 begin origin begin surface size 7 7 data "jack/jack.z" cube zlen 13 top color orange underneath color red xaxis hei 0.2 yaxis hei 0.2 nofirst zaxis hei 0.2 harray 5000 end surface end origin gle-graphics-4.2.4c/gle-refman/utilities/fig/surf3.gle0000644000000000000000000000615411405447072021271 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! size 7 5 set font psh box 5 5 amove -0.75 -0.75 begin origin begin surface size 8 8 data "surf/surf1.z" zaxis min -1 max 3 xtitle "X-axis" hei 0.25 dist 0.5 ytitle "Y-axis" hei 0.25 dist 0.5 ztitle "Z-axis" hei 0.25 dist 0.6 points "surf/surf3.dat" riselines lstyle 2 color red marker fcircle skirt on rotate 60 35 0 view 2.5 3 0.6 xaxis hei 0.2 dticks 1 yaxis hei 0.2 dticks 1 zaxis hei 0.2 harray 5000 end surface end origin gle-graphics-4.2.4c/gle-refman/utilities/fig/fitz.dat0000644000000000000000000000541311405447072021201 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 0 0 1 1 1 1.5 1 4 1 4 4 1.2 4 1 1 2 2 2 3 3 1 4.5 4.5 1 gle-graphics-4.2.4c/gle-refman/utilities/fig/surf5b.gle0000644000000000000000000000526111405447072021433 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! size 24 18 include surf/surf5b.big gle-graphics-4.2.4c/gle-refman/utilities/fig/volcano.gle0000664000000000000000000000575211405447072021675 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! size 7 6 set font psh include "../../script/manual.gle" begin contour data "volcano.z" values from 130 to 190 step 10 end contour manual_graph_mode begin graph title "Auckland's Maunga Whau Volcano" data "volcano-cdata.dat" xaxis min 0 max 20 yaxis min 0 max 20 d1 line color black colormap "volcano.z" 100 100 end graph gle-graphics-4.2.4c/gle-refman/utilities/fig/surf4.gle0000644000000000000000000000614611405447072021273 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! size 7 5 set font psh amove 2.5 -0.25 begin origin amove -1 4 set just right hei .25 begin box add .1 name start text View point end box amove 0 5 begin box add .0 name end nobox marker fcircle .5 end box join start -> end set just left amove 0 0 begin surface size 5 5 data "surf/surf1.z" zaxis min -1 rotate 85 85 0 view 0 5 0.7 xaxis hei 0.2 dticks 1 nofirst yaxis hei 0.2 dticks 1 zaxis hei 0.2 dticks 1 harray 5000 end surface end origin gle-graphics-4.2.4c/gle-refman/utilities/fig/saddle.gle0000644000000000000000000000576611405447072021473 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! size 12 5 amove 1 4 set hei .28 set font tt begin table LETZ File to store data in ? saddle.z Enter xmin,xmax,xstep (on one line): 0, 20, 1 Enter ymin,ymax,ystep: 0, 20, 1 Enter equation: end table amove 1 1.5 set font rm text 3/2*(cos(3/5*(y-1))+5/4)/(1+(((x-4)/3)^2)) amove 7 0 begin origin box 5 5 include saddle/saddle.big end origin gle-graphics-4.2.4c/gle-refman/utilities/fig/fitls.gle0000644000000000000000000000563711405447072021355 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! size 8 5 begin graph size 8 5 title "y = sin(-0.638262*x)*-2.81719+0.140722*x^2+1.11256, fit = 0.938389" hei .25 data fitls.dat d1=c1,c2 d1 marker dot msize .3 let d2 = sin(-0.638262*x)*-2.81719+0.140722*x^2+1.11256 from 1 to 9 step 8.000000e-02 d2 line end graph gle-graphics-4.2.4c/gle-refman/utilities/fig/Makefile.gcc0000664000000000000000000000611011405447072021723 0ustar rootroot######################################################################## # # # GLE - Graphics Layout Engine # # # # Modified BSD License # # # # Copyright (C) 2009 GLE. # # # # Redistribution and use in source and binary forms, with or without # # modification, are permitted provided that the following conditions # # are met: # # # # 1. Redistributions of source code must retain the above copyright # # notice, this list of conditions and the following disclaimer. # # # # 2. Redistributions in binary form must reproduce the above # # copyright notice, this list of conditions and the following # # disclaimer in the documentation and/or other materials provided with # # the distribution. # # # # 3. The name of the author may not be used to endorse or promote # # products derived from this software without specific prior written # # permission. # # # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR # # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY # # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE # # GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER # # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN # # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # # ######################################################################## EPSS = xyz.pdf fitls.pdf fitz1.pdf jack.pdf saddle.pdf \ surf1.pdf surf2.pdf surf3.pdf surf4.pdf surf5.pdf surf5b.pdf saddle-contour.inc volcano.inc \ gaussian.inc ifeq ($(RUNBUILD),1) GLE = ../../../build/bin/gle else GLE = gle endif all: $(EPSS) %.pdf: %.gle $(GLE) -d pdf $< %.inc: %.gle $(GLE) -texincprefix utilities/fig/ -inc -d pdf $< clean: rm -rf *.pdf *.inc .gle fitz.z saddle.z saddle-c*.dat volcano-c*.dat gle-graphics-4.2.4c/gle-refman/utilities/fig/saddle/saddle.big0000644000000000000000000013251211405447072022707 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! amove 9 9 set hei 0.3 set color BLUE set lstyle 1 amove 2.38 0.722021 aline 2.48 0.754498 amove 2.48 0.754498 aline 2.58667 0.771523 amove 2.58667 0.771523 aline 2.69333 0.775792 amove 2.69333 0.775792 aline 2.8 0.774463 amove 2.8 0.774463 aline 2.90667 0.776644 amove 2.90667 0.776644 aline 3.01333 0.79022 amove 3.01333 0.79022 aline 3.12 0.819095 amove 3.12 0.819095 aline 3.22667 0.861828 amove 3.22667 0.861828 aline 3.33333 0.912137 amove 3.33333 0.912137 aline 3.44 0.961094 amove 3.44 0.961094 aline 3.54 1.00024 amove 3.54 1.00024 aline 3.64667 1.02455 amove 3.64667 1.02455 aline 3.75333 1.03418 amove 3.75333 1.03418 aline 3.86 1.03441 amove 3.86 1.03441 aline 3.96667 1.0338 amove 3.96667 1.0338 aline 4.07333 1.04121 amove 4.07333 1.04121 aline 4.18 1.06271 amove 4.18 1.06271 aline 4.28667 1.09942 amove 4.28667 1.09942 aline 4.39333 1.14718 amove 4.39333 1.14718 aline 4.49333 1.19793 amove 2.38 0.722021 aline 2.3 0.768244 amove 2.48 0.754498 aline 2.48 0.754498 amove 2.58667 0.771523 aline 2.58667 0.771523 amove 2.69333 0.775792 aline 2.69333 0.775792 amove 2.8 0.774463 aline 2.8 0.774463 amove 2.90667 0.776644 aline 2.90667 0.776644 amove 3.01333 0.79022 aline 3.01333 0.79022 amove 3.12 0.819095 aline 3.12 0.819095 amove 3.22667 0.861828 aline 3.22667 0.861828 amove 3.33333 0.912137 aline 3.33333 0.912137 amove 3.44 0.961094 aline 3.44 0.961094 amove 3.54 1.00024 aline 3.54 1.00024 amove 3.64667 1.02455 aline 3.64667 1.02455 amove 3.75333 1.03418 aline 3.75333 1.03418 amove 3.86 1.03441 aline 3.86 1.03441 amove 3.96667 1.0338 aline 3.96667 1.0338 amove 4.07333 1.04121 aline 4.07333 1.04121 amove 4.18 1.06271 aline 4.18 1.06271 amove 4.28667 1.09942 aline 4.28667 1.09942 amove 4.39333 1.14718 aline 4.39333 1.14718 amove 4.49333 1.19793 aline 4.49333 1.19793 amove 2.3 0.768244 aline 2.3 0.768244 amove 2.3 0.768244 aline 2.22 0.817011 amove 2.22 0.817011 aline 2.22 0.817011 amove 2.22 0.817011 aline 2.14667 0.869072 amove 2.14667 0.869072 aline 2.14667 0.869072 amove 2.14667 0.869072 aline 2.06667 0.925466 amove 2.06667 0.925466 aline 2.06667 0.925466 amove 2.06667 0.925466 aline 1.99333 0.987659 amove 1.99333 0.987659 aline 1.99333 0.987659 amove 1.99333 0.987659 aline 1.91333 1.05777 amove 1.91333 1.05777 aline 1.91333 1.05777 amove 1.91333 1.05777 aline 1.84 1.13895 amove 1.84 1.13895 aline 1.84 1.13895 amove 1.84 1.13895 aline 1.76 1.23596 amove 1.76 1.23596 aline 1.76 1.23596 amove 1.76 1.23596 aline 1.68667 1.35622 amove 1.68667 1.35622 aline 1.68667 1.35622 amove 1.68667 1.35622 aline 1.60667 1.51145 amove 1.60667 1.51145 aline 1.60667 1.51145 amove 1.60667 1.51145 aline 1.53333 1.72043 amove 1.53333 1.72043 aline 1.53333 1.72043 amove 1.53333 1.72043 aline 1.45333 2.01208 amove 1.45333 2.01208 aline 1.45333 2.01208 amove 1.45333 2.01208 aline 1.37333 2.42459 amove 1.37333 2.42459 aline 1.37333 2.42459 amove 1.37333 2.42459 aline 1.3 2.9785 amove 1.3 2.9785 aline 1.3 2.9785 amove 1.3 2.9785 aline 1.22 3.57399 amove 1.22 3.57399 aline 1.22 3.57399 amove 1.22 3.57399 aline 1.14667 3.87837 amove 1.14667 3.87837 aline 1.14667 3.87837 amove 1.14667 3.87837 aline 1.06667 3.64211 amove 1.06667 3.64211 aline 1.15333 3.82859 amove 1.06667 3.64211 aline 0.993333 3.11474 amove 1.16 3.76714 aline 1.1 3.297 amove 1.23333 3.38398 aline 1.2 3.16424 amove 1.31333 2.80501 aline 1.30667 2.7715 amove 0.993333 3.11474 aline 1.09333 3.28561 amove 1.1 3.297 aline 1.19333 3.17309 amove 1.2 3.16424 aline 1.3 2.79604 amove 1.30667 2.7715 aline 1.36 2.51805 amove 0.993333 3.11474 aline 0.913333 2.62895 amove 1.1 3.297 aline 1.02 2.76746 amove 1.2 3.16424 aline 1.12667 2.67845 amove 1.30667 2.7715 aline 1.23333 2.40168 amove 1.40667 2.24442 aline 1.34 2.04247 amove 1.50667 1.81214 aline 1.44667 1.73495 amove 1.57333 1.60555 aline 1.54667 1.59519 amove 0.913333 2.62895 aline 1.02 2.76746 amove 1.02 2.76746 aline 1.12667 2.67845 amove 1.12667 2.67845 aline 1.23333 2.40168 amove 1.23333 2.40168 aline 1.34 2.04247 amove 1.34 2.04247 aline 1.44667 1.73495 amove 1.44667 1.73495 aline 1.54 1.60451 amove 1.54667 1.59519 aline 1.54667 1.59519 amove 0.913333 2.62895 aline 0.84 2.28456 amove 1.02 2.76746 aline 0.94 2.39122 amove 1.12667 2.67845 aline 1.04667 2.33406 amove 1.23333 2.40168 aline 1.15333 2.14172 amove 1.34 2.04247 aline 1.26 1.89002 amove 1.44667 1.73495 aline 1.36667 1.67553 amove 1.54667 1.59519 aline 1.47333 1.58184 amove 0.84 2.28456 aline 0.933333 2.38411 amove 0.94 2.39122 aline 1.04667 2.33406 amove 1.04667 2.33406 aline 1.14667 2.15374 amove 1.15333 2.14172 aline 1.26 1.89002 amove 1.26 1.89002 aline 1.36 1.68894 amove 1.36667 1.67553 aline 1.47333 1.58184 amove 1.47333 1.58184 aline 1.47333 1.58184 set color BLACK set lstyle 1 amove 2.38 0.722021 aline 2.48 0.754498 amove 2.48 0.754498 aline 2.58667 0.771523 amove 2.58667 0.771523 aline 2.69333 0.775792 amove 2.69333 0.775792 aline 2.8 0.774463 amove 2.8 0.774463 aline 2.90667 0.776644 amove 2.90667 0.776644 aline 3.01333 0.79022 amove 3.01333 0.79022 aline 3.12 0.819095 amove 3.12 0.819095 aline 3.22667 0.861828 amove 3.22667 0.861828 aline 3.33333 0.912137 amove 3.33333 0.912137 aline 3.44 0.961094 amove 3.44 0.961094 aline 3.54 1.00024 amove 3.54 1.00024 aline 3.64667 1.02455 amove 3.64667 1.02455 aline 3.75333 1.03418 amove 3.75333 1.03418 aline 3.86 1.03441 amove 3.86 1.03441 aline 3.96667 1.0338 amove 3.96667 1.0338 aline 4.07333 1.04121 amove 4.07333 1.04121 aline 4.18 1.06271 amove 4.18 1.06271 aline 4.28667 1.09942 amove 4.28667 1.09942 aline 4.39333 1.14718 amove 4.39333 1.14718 aline 4.49333 1.19793 amove 2.38 0.722021 aline 2.3 0.768244 amove 2.48 0.754498 aline 2.40667 0.801744 amove 2.58667 0.771523 aline 2.51333 0.817744 amove 2.69333 0.775792 aline 2.62 0.819301 amove 2.8 0.774463 aline 2.72667 0.814516 amove 2.90667 0.776644 aline 2.83333 0.813707 amove 3.01333 0.79022 aline 2.93333 0.825804 amove 3.12 0.819095 aline 3.04 0.855225 amove 3.22667 0.861828 aline 3.14667 0.90034 amove 3.33333 0.912137 aline 3.25333 0.954035 amove 3.44 0.961094 aline 3.36 1.0062 amove 3.54 1.00024 aline 3.46667 1.04726 amove 3.64667 1.02455 aline 3.57333 1.07151 amove 3.75333 1.03418 aline 3.68 1.07913 amove 3.86 1.03441 aline 3.78667 1.07611 amove 3.96667 1.0338 aline 3.88667 1.07214 amove 4.07333 1.04121 aline 3.99333 1.07726 amove 4.18 1.06271 aline 4.1 1.09833 amove 4.28667 1.09942 aline 4.20667 1.13662 amove 4.39333 1.14718 aline 4.31333 1.18742 amove 4.49333 1.19793 aline 4.42 1.24162 amove 2.3 0.768244 aline 2.4 0.799651 amove 2.40667 0.801744 aline 2.51333 0.817744 amove 2.51333 0.817744 aline 2.62 0.819301 amove 2.62 0.819301 aline 2.72667 0.814516 amove 2.72667 0.814516 aline 2.83333 0.813707 amove 2.83333 0.813707 aline 2.93333 0.825804 amove 2.93333 0.825804 aline 3.04 0.855225 amove 3.04 0.855225 aline 3.14667 0.90034 amove 3.14667 0.90034 aline 3.25333 0.954035 amove 3.25333 0.954035 aline 3.36 1.0062 amove 3.36 1.0062 aline 3.46667 1.04726 amove 3.46667 1.04726 aline 3.57333 1.07151 amove 3.57333 1.07151 aline 3.67333 1.07865 amove 3.68 1.07913 aline 3.78667 1.07611 amove 3.78667 1.07611 aline 3.88 1.0724 amove 3.88667 1.07214 aline 3.98667 1.07694 amove 3.99333 1.07726 aline 4.1 1.09833 amove 4.1 1.09833 aline 4.20667 1.13662 amove 4.20667 1.13662 aline 4.30667 1.18425 amove 4.31333 1.18742 aline 4.42 1.24162 amove 2.3 0.768244 aline 2.22 0.817011 amove 2.40667 0.801744 aline 2.32667 0.85175 amove 2.51333 0.817744 aline 2.43333 0.866512 amove 2.62 0.819301 aline 2.54 0.864788 amove 2.72667 0.814516 aline 2.64667 0.855824 amove 2.83333 0.813707 aline 2.75333 0.8514 amove 2.93333 0.825804 aline 2.86 0.861706 amove 3.04 0.855225 aline 2.96667 0.891788 amove 3.14667 0.90034 aline 3.07333 0.939784 amove 3.25333 0.954035 aline 3.18 0.997574 amove 3.36 1.0062 aline 3.28 1.05362 amove 3.46667 1.04726 aline 3.38667 1.09698 amove 3.57333 1.07151 aline 3.49333 1.12116 amove 3.68 1.07913 aline 3.6 1.12636 amove 3.78667 1.07611 aline 3.70667 1.11941 amove 3.88667 1.07214 aline 3.81333 1.11138 amove 3.99333 1.07726 aline 3.92 1.11372 amove 4.1 1.09833 aline 4.02667 1.13427 amove 4.20667 1.13662 aline 4.13333 1.17448 amove 4.31333 1.18742 aline 4.24 1.22896 amove 4.42 1.24162 aline 4.34 1.28733 amove 2.22 0.817011 aline 2.32667 0.85175 amove 2.32667 0.85175 aline 2.42667 0.86559 amove 2.43333 0.866512 aline 2.54 0.864788 amove 2.54 0.864788 aline 2.64667 0.855824 amove 2.64667 0.855824 aline 2.74667 0.851677 amove 2.75333 0.8514 aline 2.85333 0.861062 amove 2.86 0.861706 aline 2.96667 0.891788 amove 2.96667 0.891788 aline 3.07333 0.939784 amove 3.07333 0.939784 aline 3.17333 0.993962 amove 3.18 0.997574 aline 3.27333 1.04988 amove 3.28 1.05362 aline 3.38667 1.09698 amove 3.38667 1.09698 aline 3.48667 1.11965 amove 3.49333 1.12116 aline 3.59333 1.12603 amove 3.6 1.12636 aline 3.70667 1.11941 amove 3.70667 1.11941 aline 3.80667 1.11188 amove 3.81333 1.11138 aline 3.92 1.11372 amove 3.92 1.11372 aline 4.02667 1.13427 amove 4.02667 1.13427 aline 4.12667 1.17197 amove 4.13333 1.17448 aline 4.23333 1.22556 amove 4.24 1.22896 aline 4.33333 1.28344 amove 2.22 0.817011 aline 2.14667 0.869072 amove 2.32667 0.85175 aline 2.25333 0.905326 amove 2.43333 0.866512 aline 2.36 0.918573 amove 2.54 0.864788 aline 2.46667 0.912833 amove 2.64667 0.855824 aline 2.57333 0.898756 amove 2.75333 0.8514 aline 2.67333 0.889906 amove 2.86 0.861706 aline 2.78 0.898022 amove 2.96667 0.891788 aline 2.88667 0.928912 amove 3.07333 0.939784 aline 2.99333 0.980434 amove 3.18 0.997574 aline 3.1 1.04324 amove 3.28 1.05362 aline 3.20667 1.10402 amove 3.38667 1.09698 aline 3.31333 1.15021 amove 3.49333 1.12116 aline 3.42 1.17431 amove 3.6 1.12636 aline 3.52667 1.17654 amove 3.70667 1.11941 aline 3.62667 1.16478 amove 3.81333 1.11138 aline 3.73333 1.15178 amove 3.92 1.11372 aline 3.84 1.15072 amove 4.02667 1.13427 aline 3.94667 1.17063 amove 4.13333 1.17448 aline 4.05333 1.21319 amove 4.24 1.22896 aline 4.16 1.27218 amove 4.34 1.28733 aline 4.26667 1.33564 amove 2.14667 0.869072 aline 2.25333 0.905326 amove 2.25333 0.905326 aline 2.35333 0.917745 amove 2.36 0.918573 aline 2.46 0.913192 amove 2.46667 0.912833 aline 2.57333 0.898756 amove 2.57333 0.898756 aline 2.66667 0.890496 amove 2.67333 0.889906 aline 2.78 0.898022 amove 2.78 0.898022 aline 2.88 0.926982 amove 2.88667 0.928912 aline 2.99333 0.980434 amove 2.99333 0.980434 aline 3.1 1.04324 amove 3.1 1.04324 aline 3.2 1.10022 amove 3.20667 1.10402 aline 3.30667 1.14732 amove 3.31333 1.15021 aline 3.42 1.17431 amove 3.42 1.17431 aline 3.52667 1.17654 amove 3.52667 1.17654 aline 3.62667 1.16478 amove 3.62667 1.16478 aline 3.73333 1.15178 amove 3.73333 1.15178 aline 3.84 1.15072 amove 3.84 1.15072 aline 3.94 1.16938 amove 3.94667 1.17063 aline 4.05333 1.21319 amove 4.05333 1.21319 aline 4.15333 1.26849 amove 4.16 1.27218 aline 4.26667 1.33564 amove 2.14667 0.869072 aline 2.06667 0.925466 amove 2.25333 0.905326 aline 2.17333 0.963598 amove 2.36 0.918573 aline 2.28 0.974967 amove 2.46667 0.912833 aline 2.38667 0.964244 amove 2.57333 0.898756 aline 2.49333 0.943823 amove 2.67333 0.889906 aline 2.6 0.929482 amove 2.78 0.898022 aline 2.70667 0.934879 amove 2.88667 0.928912 aline 2.81333 0.966773 amove 2.99333 0.980434 aline 2.92 1.02267 amove 3.1 1.04324 aline 3.02 1.09169 amove 3.20667 1.10402 aline 3.12667 1.15836 amove 3.31333 1.15021 aline 3.23333 1.20805 amove 3.42 1.17431 aline 3.34 1.23204 amove 3.52667 1.17654 aline 3.44667 1.2306 amove 3.62667 1.16478 aline 3.55333 1.21287 amove 3.73333 1.15178 aline 3.66 1.1937 amove 3.84 1.15072 aline 3.76667 1.18843 amove 3.94667 1.17063 aline 3.87333 1.20754 amove 4.05333 1.21319 aline 3.98 1.25301 amove 4.16 1.27218 aline 4.08 1.3176 amove 4.26667 1.33564 aline 4.18667 1.38739 amove 2.06667 0.925466 aline 2.16667 0.961215 amove 2.17333 0.963598 aline 2.28 0.974967 amove 2.28 0.974967 aline 2.38667 0.964244 amove 2.38667 0.964244 aline 2.49333 0.943823 amove 2.49333 0.943823 aline 2.6 0.929482 amove 2.6 0.929482 aline 2.70667 0.934879 amove 2.70667 0.934879 aline 2.81333 0.966773 amove 2.81333 0.966773 aline 2.92 1.02267 amove 2.92 1.02267 aline 3.01333 1.08709 amove 3.02 1.09169 aline 3.12667 1.15836 amove 3.12667 1.15836 aline 3.23333 1.20805 amove 3.23333 1.20805 aline 3.33333 1.23054 amove 3.34 1.23204 aline 3.44667 1.2306 amove 3.44667 1.2306 aline 3.55333 1.21287 amove 3.55333 1.21287 aline 3.65333 1.1949 amove 3.66 1.1937 aline 3.76 1.18876 amove 3.76667 1.18843 aline 3.87333 1.20754 amove 3.87333 1.20754 aline 3.98 1.25301 amove 3.98 1.25301 aline 4.08 1.3176 amove 4.08 1.3176 aline 4.18667 1.38739 amove 2.06667 0.925466 aline 1.99333 0.987659 amove 2.17333 0.963598 aline 2.1 1.02816 amove 2.28 0.974967 aline 2.20667 1.03716 amove 2.38667 0.964244 aline 2.31333 1.02016 amove 2.49333 0.943823 aline 2.41333 0.991748 amove 2.6 0.929482 aline 2.52 0.970491 amove 2.70667 0.934879 aline 2.62667 0.972464 amove 2.81333 0.966773 aline 2.73333 1.00562 amove 2.92 1.02267 aline 2.84 1.06703 amove 3.02 1.09169 aline 2.94667 1.14388 amove 3.12667 1.15836 aline 3.05333 1.21797 amove 3.23333 1.20805 aline 3.16 1.27207 amove 3.34 1.23204 aline 3.26667 1.29593 amove 3.44667 1.2306 aline 3.36667 1.28985 amove 3.55333 1.21287 aline 3.47333 1.26461 amove 3.66 1.1937 aline 3.58 1.23767 amove 3.76667 1.18843 aline 3.68667 1.22708 amove 3.87333 1.20754 aline 3.79333 1.2452 amove 3.98 1.25301 aline 3.9 1.29434 amove 4.08 1.3176 aline 4.00667 1.36597 amove 4.18667 1.38739 aline 4.11333 1.44373 amove 1.99333 0.987659 aline 2.1 1.02816 amove 2.1 1.02816 aline 2.20667 1.03716 amove 2.20667 1.03716 aline 2.31333 1.02016 amove 2.31333 1.02016 aline 2.40667 0.993642 amove 2.41333 0.991748 aline 2.51333 0.97182 amove 2.52 0.970491 aline 2.62 0.97234 amove 2.62667 0.972464 aline 2.72667 1.00355 amove 2.73333 1.00562 aline 2.84 1.06703 amove 2.84 1.06703 aline 2.94667 1.14388 amove 2.94667 1.14388 aline 3.05333 1.21797 amove 3.05333 1.21797 aline 3.15333 1.26869 amove 3.16 1.27207 aline 3.26667 1.29593 amove 3.26667 1.29593 aline 3.36667 1.28985 amove 3.36667 1.28985 aline 3.47333 1.26461 amove 3.47333 1.26461 aline 3.57333 1.23935 amove 3.58 1.23767 aline 3.68 1.22774 amove 3.68667 1.22708 aline 3.79333 1.2452 amove 3.79333 1.2452 aline 3.9 1.29434 amove 3.9 1.29434 aline 4.00667 1.36597 amove 4.00667 1.36597 aline 4.11333 1.44373 amove 1.99333 0.987659 aline 1.91333 1.05777 amove 2.1 1.02816 aline 2.02 1.10131 amove 2.20667 1.03716 aline 2.12667 1.10727 amove 2.31333 1.02016 aline 2.23333 1.08223 amove 2.41333 0.991748 aline 2.34 1.04358 amove 2.52 0.970491 aline 2.44667 1.01346 amove 2.62667 0.972464 aline 2.55333 1.01104 amove 2.73333 1.00562 aline 2.66 1.04582 amove 2.84 1.06703 aline 2.76 1.11429 amove 2.94667 1.14388 aline 2.86667 1.20118 amove 3.05333 1.21797 aline 2.97333 1.28478 amove 3.16 1.27207 aline 3.08 1.34453 amove 3.26667 1.29593 aline 3.18667 1.36821 amove 3.36667 1.28985 aline 3.29333 1.3562 amove 3.47333 1.26461 aline 3.4 1.32132 amove 3.58 1.23767 aline 3.50667 1.28442 amove 3.68667 1.22708 aline 3.61333 1.26703 amove 3.79333 1.2452 aline 3.72 1.28387 amove 3.9 1.29434 aline 3.82 1.3377 amove 4.00667 1.36597 aline 3.92667 1.41837 amove 4.11333 1.44373 aline 4.03333 1.50634 amove 1.91333 1.05777 aline 2.01333 1.09859 amove 2.02 1.10131 aline 2.12667 1.10727 amove 2.12667 1.10727 aline 2.22667 1.0838 amove 2.23333 1.08223 aline 2.33333 1.04599 amove 2.34 1.04358 aline 2.44 1.01534 amove 2.44667 1.01346 aline 2.55333 1.01104 amove 2.55333 1.01104 aline 2.66 1.04582 amove 2.66 1.04582 aline 2.76 1.11429 amove 2.76 1.11429 aline 2.86 1.19574 amove 2.86667 1.20118 aline 2.97333 1.28478 amove 2.97333 1.28478 aline 3.07333 1.3408 amove 3.08 1.34453 aline 3.18 1.36673 amove 3.18667 1.36821 aline 3.28667 1.35695 amove 3.29333 1.3562 aline 3.4 1.32132 amove 3.4 1.32132 aline 3.5 1.28673 amove 3.50667 1.28442 aline 3.61333 1.26703 amove 3.61333 1.26703 aline 3.72 1.28387 amove 3.72 1.28387 aline 3.81333 1.33411 amove 3.82 1.3377 aline 3.92667 1.41837 amove 3.92667 1.41837 aline 4.02667 1.50084 amove 1.91333 1.05777 aline 1.84 1.13895 amove 2.02 1.10131 aline 1.94667 1.18645 amove 2.12667 1.10727 aline 2.05333 1.18845 amove 2.23333 1.08223 aline 2.15333 1.1529 amove 2.34 1.04358 aline 2.26 1.10086 amove 2.44667 1.01346 aline 2.36667 1.05915 amove 2.55333 1.01104 aline 2.47333 1.051 amove 2.66 1.04582 aline 2.58 1.0879 amove 2.76 1.11429 aline 2.68667 1.1656 amove 2.86667 1.20118 aline 2.79333 1.2656 amove 2.97333 1.28478 aline 2.9 1.36163 amove 3.08 1.34453 aline 3.00667 1.42877 amove 3.18667 1.36821 aline 3.10667 1.45223 amove 3.29333 1.3562 aline 3.21333 1.43245 amove 3.4 1.32132 aline 3.32 1.38499 amove 3.50667 1.28442 aline 3.42667 1.33507 amove 3.61333 1.26703 aline 3.53333 1.30878 amove 3.72 1.28387 aline 3.64 1.32395 amove 3.82 1.3377 aline 3.74667 1.38393 amove 3.92667 1.41837 aline 3.85333 1.4764 amove 4.03333 1.50634 aline 3.96 1.57772 amove 1.84 1.13895 aline 1.94 1.18349 amove 1.94667 1.18645 aline 2.04667 1.18833 amove 2.05333 1.18845 aline 2.15333 1.1529 amove 2.15333 1.1529 aline 2.26 1.10086 amove 2.26 1.10086 aline 2.36 1.06176 amove 2.36667 1.05915 aline 2.46667 1.05151 amove 2.47333 1.051 aline 2.57333 1.08559 amove 2.58 1.0879 aline 2.68 1.16074 amove 2.68667 1.1656 aline 2.79333 1.2656 amove 2.79333 1.2656 aline 2.89333 1.35563 amove 2.9 1.36163 aline 3 1.42458 amove 3.00667 1.42877 aline 3.10667 1.45223 amove 3.10667 1.45223 aline 3.20667 1.43368 amove 3.21333 1.43245 aline 3.31333 1.38795 amove 3.32 1.38499 aline 3.42667 1.33507 amove 3.42667 1.33507 aline 3.53333 1.30878 amove 3.53333 1.30878 aline 3.64 1.32395 amove 3.64 1.32395 aline 3.74667 1.38393 amove 3.74667 1.38393 aline 3.84667 1.47062 amove 3.85333 1.4764 aline 3.95333 1.57138 amove 1.84 1.13895 aline 1.76 1.23596 amove 1.94667 1.18645 aline 1.86667 1.28876 amove 2.05333 1.18845 aline 1.97333 1.28547 amove 2.15333 1.1529 aline 2.08 1.23587 amove 2.26 1.10086 aline 2.18667 1.16594 amove 2.36667 1.05915 aline 2.29333 1.10876 amove 2.47333 1.051 aline 2.4 1.09295 amove 2.58 1.0879 aline 2.5 1.13267 amove 2.68667 1.1656 aline 2.60667 1.2227 amove 2.79333 1.2656 aline 2.71333 1.34023 amove 2.9 1.36163 aline 2.82 1.45286 amove 3.00667 1.42877 aline 2.92667 1.52987 amove 3.10667 1.45223 aline 3.03333 1.55303 amove 3.21333 1.43245 aline 3.14 1.52288 amove 3.32 1.38499 aline 3.24667 1.4586 amove 3.42667 1.33507 aline 3.35333 1.3913 amove 3.53333 1.30878 aline 3.46 1.35312 amove 3.64 1.32395 aline 3.56 1.36606 amove 3.74667 1.38393 aline 3.66667 1.43424 amove 3.85333 1.4764 aline 3.77333 1.54248 amove 3.96 1.57772 aline 3.88 1.66163 amove 1.76 1.23596 aline 1.86667 1.28876 amove 1.86667 1.28876 aline 1.97333 1.28547 amove 1.97333 1.28547 aline 2.08 1.23587 amove 2.08 1.23587 aline 2.18667 1.16594 amove 2.18667 1.16594 aline 2.28667 1.11234 amove 2.29333 1.10876 aline 2.4 1.09295 amove 2.4 1.09295 aline 2.5 1.13267 amove 2.5 1.13267 aline 2.60667 1.2227 amove 2.60667 1.2227 aline 2.70667 1.33289 amove 2.71333 1.34023 aline 2.81333 1.44582 amove 2.82 1.45286 aline 2.92667 1.52987 amove 2.92667 1.52987 aline 3.03333 1.55303 amove 3.03333 1.55303 aline 3.13333 1.52476 amove 3.14 1.52288 aline 3.24667 1.4586 amove 3.24667 1.4586 aline 3.34667 1.3955 amove 3.35333 1.3913 aline 3.46 1.35312 amove 3.46 1.35312 aline 3.55333 1.3652 amove 3.56 1.36606 aline 3.66 1.42997 amove 3.66667 1.43424 aline 3.77333 1.54248 amove 3.77333 1.54248 aline 3.87333 1.65418 amove 1.76 1.23596 aline 1.68667 1.35622 amove 1.86667 1.28876 aline 1.79333 1.41627 amove 1.97333 1.28547 aline 1.89333 1.40572 amove 2.08 1.23587 aline 2 1.33689 amove 2.18667 1.16594 aline 2.10667 1.24248 amove 2.29333 1.10876 aline 2.21333 1.16411 amove 2.4 1.09295 aline 2.32 1.13781 amove 2.5 1.13267 aline 2.42667 1.1814 amove 2.60667 1.2227 aline 2.53333 1.28831 amove 2.71333 1.34023 aline 2.64 1.42984 amove 2.82 1.45286 aline 2.74667 1.56519 amove 2.92667 1.52987 aline 2.84667 1.65572 amove 3.03333 1.55303 aline 2.95333 1.67847 amove 3.14 1.52288 aline 3.06 1.63412 amove 3.24667 1.4586 aline 3.16667 1.54681 amove 3.35333 1.3913 aline 3.27333 1.4557 amove 3.46 1.35312 aline 3.38 1.40125 amove 3.56 1.36606 aline 3.48667 1.41114 amove 3.66667 1.43424 aline 3.59333 1.49055 amove 3.77333 1.54248 aline 3.7 1.62038 amove 3.88 1.66163 aline 3.80667 1.76394 amove 1.68667 1.35622 aline 1.79333 1.41627 amove 1.79333 1.41627 aline 1.88667 1.40642 amove 1.89333 1.40572 aline 2 1.33689 amove 2 1.33689 aline 2.1 1.24838 amove 2.10667 1.24248 aline 2.20667 1.16901 amove 2.21333 1.16411 aline 2.32 1.13781 amove 2.32 1.13781 aline 2.42 1.17868 amove 2.42667 1.1814 aline 2.53333 1.28831 amove 2.53333 1.28831 aline 2.63333 1.42099 amove 2.64 1.42984 aline 2.74 1.55673 amove 2.74667 1.56519 aline 2.84667 1.65572 amove 2.84667 1.65572 aline 2.95333 1.67847 amove 2.95333 1.67847 aline 3.05333 1.63689 amove 3.06 1.63412 aline 3.16 1.55227 amove 3.16667 1.54681 aline 3.27333 1.4557 amove 3.27333 1.4557 aline 3.37333 1.40466 amove 3.38 1.40125 aline 3.48667 1.41114 amove 3.48667 1.41114 aline 3.58667 1.48558 amove 3.59333 1.49055 aline 3.7 1.62038 amove 3.7 1.62038 aline 3.80667 1.76394 amove 1.68667 1.35622 aline 1.60667 1.51145 amove 1.79333 1.41627 aline 1.71333 1.58171 amove 1.89333 1.40572 aline 1.82 1.56095 amove 2 1.33689 aline 1.92667 1.4651 amove 2.10667 1.24248 aline 2.03333 1.33626 amove 2.21333 1.16411 aline 2.14 1.2281 amove 2.32 1.13781 aline 2.24 1.18705 amove 2.42667 1.1814 aline 2.34667 1.23609 amove 2.53333 1.28831 aline 2.45333 1.36674 amove 2.64 1.42984 aline 2.56 1.542 amove 2.74667 1.56519 aline 2.66667 1.7093 amove 2.84667 1.65572 aline 2.77333 1.81884 amove 2.95333 1.67847 aline 2.88 1.841 amove 3.06 1.63412 aline 2.98667 1.77668 amove 3.16667 1.54681 aline 3.09333 1.65701 amove 3.27333 1.4557 aline 3.2 1.53243 amove 3.38 1.40125 aline 3.3 1.4551 amove 3.48667 1.41114 aline 3.40667 1.46069 amove 3.59333 1.49055 aline 3.51333 1.55589 amove 3.7 1.62038 aline 3.62 1.71608 amove 3.80667 1.76394 aline 3.72667 1.89397 amove 1.60667 1.51145 aline 1.71333 1.58171 amove 1.71333 1.58171 aline 1.82 1.56095 amove 1.82 1.56095 aline 1.92 1.47109 amove 1.92667 1.4651 aline 2.03333 1.33626 amove 2.03333 1.33626 aline 2.13333 1.23486 amove 2.14 1.2281 aline 2.23333 1.18979 amove 2.24 1.18705 aline 2.34 1.23302 amove 2.34667 1.23609 aline 2.44667 1.35857 amove 2.45333 1.36674 aline 2.56 1.542 amove 2.56 1.542 aline 2.66667 1.7093 amove 2.66667 1.7093 aline 2.77333 1.81884 amove 2.77333 1.81884 aline 2.88 1.841 amove 2.88 1.841 aline 2.98667 1.77668 amove 2.98667 1.77668 aline 3.08667 1.66449 amove 3.09333 1.65701 aline 3.2 1.53243 amove 3.2 1.53243 aline 3.3 1.4551 amove 3.3 1.4551 aline 3.40667 1.46069 amove 3.40667 1.46069 aline 3.50667 1.54994 amove 3.51333 1.55589 aline 3.62 1.71608 amove 3.62 1.71608 aline 3.72667 1.89397 amove 1.60667 1.51145 aline 1.53333 1.72043 amove 1.71333 1.58171 aline 1.63333 1.8054 amove 1.82 1.56095 aline 1.74 1.76993 amove 1.92667 1.4651 aline 1.84667 1.63505 amove 2.03333 1.33626 aline 1.95333 1.45652 amove 2.14 1.2281 aline 2.14 1.2281 amove 2.24 1.18705 aline 2.16667 1.24302 amove 2.34667 1.23609 aline 2.27333 1.29992 amove 2.45333 1.36674 aline 2.38 1.46483 amove 2.56 1.542 aline 2.48667 1.68878 amove 2.66667 1.7093 aline 2.58667 1.9022 amove 2.77333 1.81884 aline 2.69333 2.03917 amove 2.88 1.841 aline 2.8 2.0605 amove 2.98667 1.77668 aline 2.90667 1.96737 amove 3.09333 1.65701 aline 3.01333 1.80097 amove 3.2 1.53243 aline 3.12 1.62807 amove 3.3 1.4551 aline 3.22667 1.51772 amove 3.40667 1.46069 aline 3.33333 1.51711 amove 3.51333 1.55589 aline 3.44 1.6351 amove 3.62 1.71608 aline 3.54667 1.83912 amove 3.72667 1.89397 aline 3.64667 2.06654 amove 1.53333 1.72043 aline 1.63333 1.8054 amove 1.63333 1.8054 aline 1.73333 1.77214 amove 1.74 1.76993 aline 1.84667 1.63505 amove 1.84667 1.63505 aline 1.95333 1.45652 amove 1.95333 1.45652 aline 2.04667 1.32426 amove 2.07333 1.29757 aline 2.16667 1.24302 amove 2.16667 1.24302 aline 2.26667 1.29636 amove 2.27333 1.29992 aline 2.37333 1.45452 amove 2.38 1.46483 aline 2.48667 1.68878 amove 2.48667 1.68878 aline 2.58 1.88797 amove 2.58667 1.9022 aline 2.68667 2.03061 amove 2.69333 2.03917 aline 2.8 2.0605 amove 2.8 2.0605 aline 2.90667 1.96737 amove 2.90667 1.96737 aline 3.00667 1.81137 amove 3.01333 1.80097 aline 3.12 1.62807 amove 3.12 1.62807 aline 3.22667 1.51772 amove 3.22667 1.51772 aline 3.33333 1.51711 amove 3.33333 1.51711 aline 3.43333 1.62772 amove 3.44 1.6351 aline 3.54 1.82637 amove 3.54667 1.83912 aline 3.64667 2.06654 amove 1.53333 1.72043 aline 1.45333 2.01208 amove 1.63333 1.8054 aline 1.56 2.11874 amove 1.74 1.76993 aline 1.66667 2.06159 amove 1.84667 1.63505 aline 1.77333 1.86924 amove 1.95333 1.45652 aline 1.88 1.61754 amove 2.16667 1.24302 aline 2.08667 1.30936 amove 2.27333 1.29992 aline 2.19333 1.37783 amove 2.38 1.46483 aline 2.3 1.59319 amove 2.48667 1.68878 aline 2.40667 1.88886 amove 2.58667 1.9022 aline 2.51333 2.17019 amove 2.69333 2.03917 aline 2.62 2.34757 amove 2.8 2.0605 aline 2.72667 2.36766 amove 2.90667 1.96737 aline 2.83333 2.2321 amove 3.01333 1.80097 aline 2.94 1.99688 amove 3.12 1.62807 aline 3.12 1.62807 amove 3.22667 1.51772 aline 3.22667 1.51772 amove 3.33333 1.51711 aline 3.25333 1.5841 amove 3.44 1.6351 aline 3.36 1.73566 amove 3.54667 1.83912 aline 3.46667 2.00421 amove 3.64667 2.06654 aline 3.57333 2.3046 amove 1.45333 2.01208 aline 1.56 2.11874 amove 1.56 2.11874 aline 1.66667 2.06159 amove 1.66667 2.06159 aline 1.77333 1.86924 amove 1.77333 1.86924 aline 1.88 1.61754 amove 1.88 1.61754 aline 1.95333 1.46025 amove 2.01333 1.37377 aline 2.08667 1.30936 amove 2.08667 1.30936 aline 2.19333 1.37783 amove 2.19333 1.37783 aline 2.3 1.59319 amove 2.3 1.59319 aline 2.4 1.87038 amove 2.40667 1.88886 aline 2.50667 2.15261 amove 2.51333 2.17019 aline 2.61333 2.33648 amove 2.62 2.34757 aline 2.72667 2.36766 amove 2.72667 2.36766 aline 2.82667 2.24057 amove 2.83333 2.2321 aline 2.93333 2.01158 amove 2.94 1.99688 aline 3.03333 1.7691 amove 3.08 1.69321 aline 3.12667 1.62365 amove 3.16 1.59263 aline 3.24667 1.58471 amove 3.25333 1.5841 aline 3.36 1.73566 amove 3.36 1.73566 aline 3.46667 2.00421 amove 3.46667 2.00421 aline 3.57333 2.3046 amove 1.45333 2.01208 aline 1.37333 2.42459 amove 1.56 2.11874 aline 1.48 2.5631 amove 1.66667 2.06159 aline 1.58667 2.47409 amove 1.77333 1.86924 aline 1.69333 2.19732 amove 1.88 1.61754 aline 1.8 1.83811 amove 2.08667 1.30936 aline 2.01333 1.39083 amove 2.19333 1.37783 aline 2.12 1.4763 amove 2.3 1.59319 aline 2.22667 1.76579 amove 2.40667 1.88886 aline 2.32667 2.16682 amove 2.51333 2.17019 aline 2.43333 2.54794 amove 2.62 2.34757 aline 2.54 2.78467 amove 2.72667 2.36766 aline 2.64667 2.80294 amove 2.83333 2.2321 aline 2.75333 2.60503 amove 2.94 1.99688 aline 2.86 2.26873 amove 3.25333 1.5841 aline 3.18 1.66654 amove 3.36 1.73566 aline 3.28667 1.86741 amove 3.46667 2.00421 aline 3.38667 2.23078 amove 3.57333 2.3046 aline 3.49333 2.63836 amove 1.37333 2.42459 aline 1.47333 2.55444 amove 1.48 2.5631 aline 1.58667 2.47409 amove 1.58667 2.47409 aline 1.68667 2.21462 amove 1.69333 2.19732 aline 1.79333 1.86056 amove 1.8 1.83811 aline 1.8 1.83811 amove 1.94667 1.47818 aline 2.01333 1.39083 amove 2.01333 1.39083 aline 2.12 1.4763 amove 2.12 1.4763 aline 2.22 1.7477 amove 2.22667 1.76579 aline 2.32667 2.16682 amove 2.32667 2.16682 aline 2.43333 2.54794 amove 2.43333 2.54794 aline 2.54 2.78467 amove 2.54 2.78467 aline 2.64667 2.80294 amove 2.64667 2.80294 aline 2.74667 2.6174 amove 2.75333 2.60503 aline 2.86 2.26873 amove 2.86 2.26873 aline 2.94667 1.9855 amove 3.01333 1.81932 aline 3.04667 1.74731 amove 3.08667 1.6868 aline 3.18 1.66654 amove 3.18 1.66654 aline 3.28667 1.86741 amove 3.28667 1.86741 aline 3.38 2.20655 amove 3.38667 2.23078 aline 3.48667 2.61289 amove 1.37333 2.42459 aline 1.3 2.9785 amove 1.48 2.5631 aline 1.40667 3.16076 amove 1.58667 2.47409 aline 1.51333 3.028 amove 1.69333 2.19732 aline 1.62 2.63526 amove 1.8 1.83811 aline 1.72 2.12837 amove 2.01333 1.39083 aline 2.01333 1.39083 amove 2.12 1.4763 aline 2.04 1.59884 amove 2.22667 1.76579 aline 2.14667 1.99016 amove 2.32667 2.16682 aline 2.25333 2.53591 amove 2.43333 2.54794 aline 2.36 3.05409 amove 2.54 2.78467 aline 2.46667 3.37235 amove 2.64667 2.80294 aline 2.57333 3.38814 amove 2.75333 2.60503 aline 2.68 3.10459 amove 2.86 2.26873 aline 2.78 2.62941 amove 3.18 1.66654 aline 3.1 1.76706 amove 3.28667 1.86741 aline 3.20667 2.03567 amove 3.38667 2.23078 aline 3.31333 2.52927 amove 3.49333 2.63836 aline 3.42 3.08409 amove 1.3 2.9785 aline 1.40667 3.16076 amove 1.40667 3.16076 aline 1.50667 3.0363 amove 1.51333 3.028 aline 1.62 2.63526 amove 1.62 2.63526 aline 1.72 2.12837 amove 1.72 2.12837 aline 1.72 2.12837 amove 1.94 1.49682 aline 2.04 1.59884 amove 2.04 1.59884 aline 2.14 1.9657 amove 2.14667 1.99016 aline 2.25333 2.53591 amove 2.25333 2.53591 aline 2.36 3.05409 amove 2.36 3.05409 aline 2.46667 3.37235 amove 2.46667 3.37235 aline 2.57333 3.38814 amove 2.57333 3.38814 aline 2.67333 3.12232 amove 2.68 3.10459 aline 2.78 2.62941 amove 2.78 2.62941 aline 2.78 2.62941 amove 3.02667 1.79565 aline 3.1 1.76706 amove 3.1 1.76706 aline 3.2 2.01888 amove 3.20667 2.03567 aline 3.31333 2.52927 amove 3.31333 2.52927 aline 3.42 3.08409 amove 1.3 2.9785 aline 1.22 3.57399 amove 1.40667 3.16076 aline 1.32667 3.8035 amove 1.51333 3.028 aline 1.43333 3.62349 amove 1.62 2.63526 aline 1.54 3.1055 amove 1.72 2.12837 aline 1.72 2.12837 amove 2.04 1.59884 aline 1.96667 1.72847 amove 2.14667 1.99016 aline 2.06667 2.22975 amove 2.25333 2.53591 aline 2.17333 2.93179 amove 2.36 3.05409 aline 2.28 3.59802 amove 2.46667 3.37235 aline 2.38667 4.00432 amove 2.57333 3.38814 aline 2.49333 4.01741 amove 2.68 3.10459 aline 2.6 3.64138 amove 2.78 2.62941 aline 2.70667 3.01623 amove 3.1 1.76706 aline 3.02667 1.87289 amove 3.20667 2.03567 aline 3.12667 2.21466 amove 3.31333 2.52927 aline 3.23333 2.84892 amove 3.42 3.08409 aline 3.34 3.56276 amove 1.22 3.57399 aline 1.32 3.78916 amove 1.32667 3.8035 aline 1.43333 3.62349 amove 1.43333 3.62349 aline 1.54 3.1055 amove 1.54 3.1055 aline 1.54 3.1055 amove 1.88 1.61955 aline 1.96667 1.72847 amove 1.96667 1.72847 aline 2.06667 2.22975 amove 2.06667 2.22975 aline 2.17333 2.93179 amove 2.17333 2.93179 aline 2.28 3.59802 amove 2.28 3.59802 aline 2.38667 4.00432 amove 2.38667 4.00432 aline 2.49333 4.01741 amove 2.49333 4.01741 aline 2.6 3.64138 amove 2.6 3.64138 aline 2.7 3.0553 amove 2.70667 3.01623 aline 2.70667 3.01623 amove 2.98 1.89979 aline 3.02667 1.87289 amove 3.02667 1.87289 aline 3.12 2.19187 amove 3.12667 2.21466 aline 3.23333 2.84892 amove 3.23333 2.84892 aline 3.33333 3.51814 amove 1.22 3.57399 aline 1.14667 3.87837 amove 1.32667 3.8035 aline 1.25333 4.13063 amove 1.43333 3.62349 aline 1.36 3.92787 amove 1.54 3.1055 aline 1.54 3.1055 amove 1.96667 1.72847 aline 1.88667 1.80854 amove 2.06667 2.22975 aline 1.99333 2.36277 amove 2.17333 2.93179 aline 2.1 3.14007 amove 2.28 3.59802 aline 2.20667 3.87756 amove 2.38667 4.00432 aline 2.31333 4.32626 amove 2.49333 4.01741 aline 2.42 4.33807 amove 2.6 3.64138 aline 2.6 3.64138 amove 2.70667 3.01623 aline 2.70667 3.01623 amove 3.02667 1.87289 aline 2.97333 1.91864 amove 3.12667 2.21466 aline 3.05333 2.3185 amove 3.23333 2.84892 aline 3.16 3.02049 amove 3.34 3.56276 aline 3.26667 3.8109 amove 1.14667 3.87837 aline 1.24667 4.11487 amove 1.25333 4.13063 aline 1.36 3.92787 amove 1.36 3.92787 aline 1.36 3.92787 amove 1.84 1.74458 aline 1.88667 1.80854 amove 1.88667 1.80854 aline 1.98667 2.32813 amove 1.99333 2.36277 aline 2.09333 3.09149 amove 2.1 3.14007 aline 2.2 3.83147 amove 2.20667 3.87756 aline 2.31333 4.32626 amove 2.31333 4.32626 aline 2.41333 4.33733 amove 2.42 4.33807 aline 2.50667 3.97358 amove 2.95333 1.96507 aline 3.05333 2.3185 amove 3.05333 2.3185 aline 3.15333 2.97661 amove 3.16 3.02049 aline 3.26667 3.8109 amove 1.14667 3.87837 aline 1.06667 3.64211 amove 1.25333 4.13063 aline 1.25333 4.13063 amove 1.36 3.92787 aline 1.36 3.92787 amove 1.88667 1.80854 aline 1.82 1.79858 amove 1.99333 2.36277 aline 1.91333 2.29787 amove 2.1 3.14007 aline 2.02 2.99991 amove 2.20667 3.87756 aline 2.12667 3.66614 amove 2.31333 4.32626 aline 2.23333 4.07244 amove 2.42 4.33807 aline 2.42 4.33807 amove 3.05333 2.3185 aline 2.97333 2.28278 amove 3.16 3.02049 aline 3.08 2.91703 amove 3.26667 3.8109 aline 3.18667 3.63088 amove 1.06667 3.64211 aline 1.06667 3.64211 amove 1.81333 1.82792 aline 1.91333 2.29787 amove 1.91333 2.29787 aline 2.01333 2.95603 amove 2.02 2.99991 aline 2.12 3.6245 amove 2.12667 3.66614 aline 2.23333 4.07244 amove 2.23333 4.07244 aline 2.23333 4.07244 amove 2.92 2.11189 aline 2.97333 2.28278 amove 2.97333 2.28278 aline 3.08 2.91703 amove 3.08 2.91703 aline 3.18 3.58626 amove 1.06667 3.64211 aline 0.993333 3.11474 amove 1.91333 2.29787 aline 1.84 2.1264 amove 2.02 2.99991 aline 1.94667 2.67214 amove 2.12667 3.66614 aline 2.12667 3.66614 amove 2.23333 4.07244 aline 2.23333 4.07244 amove 2.97333 2.28278 aline 2.9 2.17191 amove 3.08 2.91703 aline 3.00667 2.66551 amove 3.18667 3.63088 aline 3.11333 3.22033 amove 0.993333 3.11474 aline 0.993333 3.11474 amove 1.78667 1.93074 aline 1.84 2.1264 amove 1.84 2.1264 aline 1.94667 2.67214 amove 1.94667 2.67214 aline 2.04 3.12556 amove 2.9 2.17191 aline 2.9 2.17191 amove 2.9 2.17191 aline 3 2.63466 amove 3.00667 2.66551 aline 3.10667 3.18565 amove 0.993333 3.11474 aline 0.913333 2.62895 amove 1.84 2.1264 aline 1.76667 1.98317 amove 1.94667 2.67214 aline 1.86667 2.37117 amove 2.9 2.17191 aline 2.89333 2.16356 amove 3.00667 2.66551 aline 2.92667 2.43514 amove 3.11333 3.22033 aline 3.03333 2.84272 amove 0.913333 2.62895 aline 0.913333 2.62895 amove 1.76667 1.99521 aline 1.86667 2.37117 amove 1.86667 2.37117 aline 1.86667 2.37117 amove 2.87333 2.25345 aline 2.92 2.41243 amove 2.92667 2.43514 aline 3.03333 2.84272 amove 0.913333 2.62895 aline 0.84 2.28456 amove 1.86667 2.37117 aline 1.79333 2.16134 amove 2.92667 2.43514 aline 2.86 2.2911 amove 3.03333 2.84272 aline 2.95333 2.57708 amove 0.84 2.28456 aline 0.84 2.28456 amove 1.74667 2.03198 aline 1.78667 2.14286 amove 1.79333 2.16134 aline 1.79333 2.16134 amove 2.86 2.29672 aline 2.94667 2.55705 set color BLACK set lstyle 1 set color BLACK set lstyle 1 amove 4.49333 1.12523 aline 4.41333 1.15733 amove 1.61333 1.49852 aline 0.84 1.31141 amove 0.84 2.28456 aline 0.84 3.91649 amove 0.84 2.28456 aline 0.84 1.31141 amove 0.84 3.91649 aline 1.2 4.0045 amove 1.31333 4.01658 aline 2.29333 4.26281 amove 2.43333 4.28199 aline 2.95333 4.4115 amove 2.95333 2.57708 aline 2.95333 4.4115 amove 2.95333 4.4115 aline 4.5 3.7303 amove 4.5 3.73028 aline 4.5 3.7303 amove 4.49333 1.19793 aline 4.49333 3.7303 amove 4.49333 1.19793 aline 4.49333 1.12523 amove 0.840285 1.31141 aline 2.38049 0.630214 amove 2.38049 0.630214 aline 4.5 1.12523 set just BC set color BLACK set hei 0.0833333 set just TC amove 0.840285 1.31141 aline 0.838263 1.30684 amove 0.797815 1.21538 rotate -23.8587 text 0 rotate 23.8587 amove 0.994307 1.24329 aline 0.992284 1.23872 amove 0.951836 1.14726 rotate -23.8587 text 2 rotate 23.8587 amove 1.14833 1.17517 aline 1.1463 1.1706 amove 1.10586 1.07914 rotate -23.8587 text 4 rotate 23.8587 amove 1.30235 1.10705 aline 1.30033 1.10248 amove 1.25988 1.01102 rotate -23.8587 text 6 rotate 23.8587 amove 1.45637 1.03893 aline 1.45435 1.03436 amove 1.4139 0.942905 rotate -23.8587 text 8 rotate 23.8587 amove 1.61039 0.970813 aline 1.60837 0.96624 amove 1.56792 0.874785 rotate -23.8587 text 10 rotate 23.8587 amove 1.76441 0.902693 aline 1.76239 0.89812 amove 1.72194 0.806665 rotate -23.8587 text 12 rotate 23.8587 amove 1.91843 0.834573 aline 1.91641 0.83 amove 1.87596 0.738545 rotate -23.8587 text 14 rotate 23.8587 amove 2.07245 0.766454 aline 2.07043 0.761881 amove 2.02998 0.670426 rotate -23.8587 text 16 rotate 23.8587 amove 2.22647 0.698334 aline 2.22445 0.693761 amove 2.184 0.602306 rotate -23.8587 text 18 rotate 23.8587 amove 2.38049 0.630214 aline 2.37847 0.625641 amove 2.33802 0.534186 rotate -23.8587 text 20 rotate 23.8587 set just TC set color BLACK set hei 0.0833333 set just TC amove 2.38049 0.630214 aline 2.38163 0.625345 amove 2.40437 0.527965 rotate 13.1459 text 0 rotate -13.1459 amove 2.59244 0.679715 aline 2.59358 0.674846 amove 2.61632 0.577467 rotate 13.1459 text 2 rotate -13.1459 amove 2.80439 0.729217 aline 2.80553 0.724348 amove 2.82827 0.626968 rotate 13.1459 text 4 rotate -13.1459 amove 3.01634 0.778718 aline 3.01748 0.773849 amove 3.04022 0.67647 rotate 13.1459 text 6 rotate -13.1459 amove 3.2283 0.828219 aline 3.22943 0.82335 amove 3.25218 0.725971 rotate 13.1459 text 8 rotate -13.1459 amove 3.44025 0.877721 aline 3.44138 0.872852 amove 3.46413 0.775472 rotate 13.1459 text 10 rotate -13.1459 amove 3.6522 0.927221 aline 3.65333 0.922352 amove 3.67608 0.824973 rotate 13.1459 text 12 rotate -13.1459 amove 3.86415 0.976723 aline 3.86528 0.971854 amove 3.88803 0.874474 rotate 13.1459 text 14 rotate -13.1459 amove 4.0761 1.02622 aline 4.07724 1.02136 amove 4.09998 0.923976 rotate 13.1459 text 16 rotate -13.1459 amove 4.28805 1.07573 aline 4.28919 1.07086 amove 4.31193 0.973477 rotate 13.1459 text 18 rotate -13.1459 amove 4.5 1.12523 aline 4.50114 1.12036 amove 4.52388 1.02298 rotate 13.1459 text 20 rotate -13.1459 set just TC set color BLACK set hei 0.0833333 set just RC amove 0.840285 1.31141 aline 0.835285 1.31141 amove 0.735285 1.31141 text 0 amove 0.840285 1.74559 aline 0.835285 1.74559 amove 0.735285 1.74559 text 0.5 amove 0.840285 2.17977 aline 0.835285 2.17977 amove 0.735285 2.17977 text 1 amove 0.840285 2.61395 aline 0.835285 2.61395 amove 0.735285 2.61395 text 1.5 amove 0.840285 3.04813 aline 0.835285 3.04813 amove 0.735285 3.04813 text 2 amove 0.840286 3.48231 aline 0.835286 3.48231 amove 0.735286 3.48231 text 2.5 amove 0.840286 3.91649 aline 0.835286 3.91649 amove 0.735286 3.91649 text 3 set just BC set color BLACK set lstyle 1 amove 0.84 2.28456 aline 0.84 3.91649 amove 0.84 2.28456 aline 0.84 1.31141 amove 1.04667 3.49828 aline 1.04667 3.96599 amove 1.04667 2.33406 aline 1.04667 1.36091 amove 1.26 1.89002 aline 1.26 1.41041 amove 1.47333 3.42925 aline 1.47333 4.06499 amove 1.47333 1.58184 aline 1.47333 1.45991 amove 1.68667 2.29733 aline 1.68667 4.11449 amove 1.9 2.49658 aline 1.9 4.16399 amove 2.10667 3.54122 aline 2.10667 4.21349 amove 2.53333 3.8764 aline 2.53333 4.3125 amove 2.74667 2.80524 aline 2.74667 4.362 amove 2.95333 2.57708 aline 2.95333 4.4115 amove 0.84 1.31141 aline 1.62 1.48558 amove 0.84 1.74559 aline 1.28667 1.8364 amove 1.67333 2.36492 aline 1.88667 2.44642 amove 2.78 2.62941 aline 2.95333 2.67478 amove 0.84 2.17977 aline 1.1 2.23789 amove 0.84 2.61395 aline 0.92 2.66944 amove 1.6 2.75282 aline 1.99333 2.89885 amove 2.70667 3.01623 aline 2.95333 3.10896 amove 0.84 3.04813 aline 0.993333 3.11474 amove 1.52 3.20263 aline 2.08 3.37466 amove 2.63333 3.44602 aline 2.95333 3.54314 amove 0.84 3.48231 aline 1.05333 3.54623 amove 1.44 3.59112 aline 2.16 3.79311 amove 2.53333 3.8764 aline 2.95333 3.97732 amove 0.84 3.91649 aline 1.2 4.0045 amove 1.31333 4.01658 aline 2.29333 4.26281 amove 2.43333 4.28199 aline 2.95333 4.4115 set color BLACK set lstyle 1 amove 2.95333 2.57708 aline 2.95333 4.4115 amove 3.11333 3.22033 aline 3.11333 4.34338 amove 3.26667 3.8109 aline 3.26667 4.27526 amove 3.42 3.08409 aline 3.42 4.20714 amove 3.57333 2.3046 aline 3.57333 4.13902 amove 3.72667 1.89397 aline 3.72667 4.0709 amove 3.88 1.66163 aline 3.88 4.00278 amove 4.03333 1.50634 aline 4.03333 3.93466 amove 4.18667 1.38739 aline 4.18667 3.86654 amove 4.34 1.28733 aline 4.34 3.79842 amove 4.5 1.12523 aline 4.5 3.7303 amove 4.5 3.7303 aline 4.5 1.12523 amove 4.42 1.16071 aline 4.49333 1.12523 amove 3.72667 1.89397 aline 4.49333 1.55941 amove 2.95333 2.67478 aline 2.98 2.66563 amove 3.55333 2.38804 aline 4.5 1.99359 amove 4.5 1.9936 aline 4.5 1.99359 amove 2.95333 3.10896 aline 3.08 3.06299 amove 3.45333 2.88149 aline 4.5 2.42776 amove 4.5 2.42778 aline 4.5 2.42776 amove 2.95333 3.54314 aline 3.16 3.48159 amove 3.38 3.32343 aline 4.5 2.86194 amove 4.5 2.86196 aline 4.5 2.86194 amove 2.95333 3.97732 aline 4.5 3.29612 amove 4.5 3.29614 aline 4.5 3.29612 amove 2.95333 4.4115 aline 4.5 3.7303 amove 4.5 3.73028 aline 4.5 3.7303 set color BLACK set lstyle 1 amove 0.84 1.31141 aline 1.62 1.48558 amove 0.913333 1.27735 aline 1.64 1.44677 amove 0.993333 1.24329 aline 1.66667 1.39502 amove 1.06667 1.20923 aline 1.69333 1.34528 amove 1.14667 1.17517 aline 1.72 1.30156 amove 1.22 1.14111 aline 1.74667 1.25783 amove 1.3 1.10705 aline 1.78 1.21171 amove 1.37333 1.07299 aline 1.81333 1.17129 amove 1.45333 1.03893 aline 1.85333 1.12419 amove 1.53333 1.00487 aline 1.88667 1.08729 amove 1.60667 0.970813 aline 1.93333 1.04024 amove 1.68667 0.936752 aline 1.98 0.999344 amove 1.76 0.902693 aline 2.02667 0.959389 amove 1.84 0.868633 aline 2.07333 0.920766 amove 1.91333 0.834573 aline 2.12667 0.88317 amove 1.99333 0.800513 aline 2.18667 0.840675 amove 2.06667 0.766454 aline 2.24 0.804819 amove 2.14667 0.732393 aline 2.30667 0.764392 amove 2.22 0.698334 aline 2.36667 0.729725 amove 2.3 0.664274 aline 2.77333 0.774795 amove 3.30667 0.89956 aline 3.88667 1.03425 amove 4.42 1.16071 aline 4.42 1.15929 amove 2.38 0.630214 aline 4.49333 1.12523 amove 0.84 1.31141 aline 2.38 0.630214 amove 1.04667 1.36091 aline 2.12667 0.88317 amove 2.44667 0.743672 aline 2.58667 0.679715 amove 1.26 1.41041 aline 1.82667 1.15512 amove 2.7 0.775709 aline 2.8 0.729217 amove 1.47333 1.45991 aline 1.68667 1.35622 amove 2.99333 0.787675 aline 3.01333 0.778718 amove 3.19333 0.848474 aline 3.22667 0.828219 amove 3.35333 0.921316 aline 3.44 0.877721 amove 3.51333 0.989804 aline 3.64667 0.927221 amove 3.74 1.03298 aline 3.86 0.976723 amove 4.04667 1.03936 aline 4.07333 1.02622 amove 4.26 1.09025 aline 4.28667 1.07573 amove 4.42 1.16071 aline 4.49333 1.12523 gle-graphics-4.2.4c/gle-refman/utilities/fig/saddle/saddle.sur0000644000000000000000000000547011405447072022761 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! begin surface size 5 5 data saddle.z zaxis min 0 max 3 step .5 underneath color blue back zstep .5 ystep 2 base xstep 1 ystep 2 right zstep .5 xstep 2 end surface gle-graphics-4.2.4c/gle-refman/utilities/fig/saddle/saddle.z0000644000000000000000000001477411405447072022430 0ustar rootroot! nx 21 ny 21 xmin 0 xmax 20 ymin 0 ymax 20 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 1.12068 1.5565 2.15516 2.8017 3.113 2.8017 2.15516 1.5565 1.12068 0.82403 0.622601 0.483052 0.383795 0.3113 0.257037 0.215516 0.183118 0.157399 0.136668 0.119731 0.105725 1.215 1.6875 2.33654 3.0375 3.375 3.0375 2.33654 1.6875 1.215 0.893382 0.675 0.523707 0.416096 0.3375 0.27867 0.233654 0.198529 0.170646 0.148171 0.129808 0.114623 1.12068 1.5565 2.15516 2.8017 3.113 2.8017 2.15516 1.5565 1.12068 0.82403 0.622601 0.483052 0.383795 0.3113 0.257037 0.215516 0.183118 0.157399 0.136668 0.119731 0.105725 0.870673 1.20927 1.67437 2.17668 2.41854 2.17668 1.67437 1.20927 0.870673 0.640201 0.483707 0.37529 0.298176 0.241854 0.199696 0.167437 0.142267 0.122286 0.10618 0.0930206 0.082139 0.552311 0.767098 1.06214 1.38078 1.5342 1.38078 1.06214 0.767098 0.552311 0.406111 0.306839 0.238065 0.189148 0.15342 0.126677 0.106214 0.0902469 0.0775718 0.067355 0.0590076 0.0521048 0.276807 0.384455 0.532322 0.692018 0.768909 0.692018 0.532322 0.384455 0.276807 0.203535 0.153782 0.119314 0.0947971 0.0768909 0.0634879 0.0532322 0.04523 0.0388774 0.033757 0.0295734 0.0261139 0.140404 0.195006 0.270008 0.35101 0.390011 0.35101 0.270008 0.195006 0.140404 0.103238 0.0780023 0.060519 0.0480836 0.0390011 0.0322028 0.0270008 0.0229418 0.0197197 0.0171224 0.0150004 0.0132457 0.19075 0.264931 0.366828 0.476876 0.529862 0.476876 0.366828 0.264931 0.19075 0.140258 0.105972 0.08222 0.0653255 0.0529862 0.0437501 0.0366828 0.0311684 0.0267908 0.0232623 0.0203793 0.0179953 0.410259 0.569804 0.78896 1.02565 1.13961 1.02565 0.78896 0.569804 0.410259 0.301661 0.227922 0.176836 0.1405 0.113961 0.0940961 0.078896 0.0670358 0.0576207 0.0500316 0.0438311 0.0387037 0.722249 1.00312 1.38894 1.80562 2.00625 1.80562 1.38894 1.00312 0.722249 0.531066 0.40125 0.311314 0.247346 0.200625 0.165654 0.138894 0.118015 0.10144 0.0880792 0.0771634 0.0681367 1.01773 1.41352 1.95718 2.54434 2.82704 2.54434 1.95718 1.41352 1.01773 0.748334 0.565408 0.438679 0.348539 0.282704 0.233425 0.195718 0.166296 0.14294 0.124114 0.108732 0.0960127 1.19349 1.65763 2.29518 2.98373 3.31526 2.98373 2.29518 1.65763 1.19349 0.877568 0.663051 0.514436 0.40873 0.331526 0.273737 0.229518 0.195015 0.167625 0.145548 0.12751 0.112594 1.18813 1.65017 2.28486 2.97031 3.30035 2.97031 2.28486 1.65017 1.18813 0.873622 0.66007 0.512123 0.406892 0.330035 0.272506 0.228486 0.194138 0.166872 0.144893 0.126936 0.112087 1.00351 1.39376 1.92983 2.50877 2.78753 2.50877 1.92983 1.39376 1.00351 0.737875 0.557505 0.432547 0.343668 0.278753 0.230163 0.192983 0.163972 0.140942 0.122379 0.107213 0.0946707 0.704136 0.977967 1.35411 1.76034 1.95593 1.76034 1.35411 0.977967 0.704136 0.517747 0.391187 0.303507 0.241142 0.195593 0.161499 0.135411 0.115055 0.0988955 0.0858702 0.0752282 0.0664279 0.394584 0.548034 0.758816 0.98646 1.09607 0.98646 0.758816 0.548034 0.394584 0.290135 0.219213 0.170079 0.135132 0.109607 0.0905009 0.0758816 0.0644745 0.0554191 0.04812 0.0421564 0.0372249 0.18299 0.254152 0.351903 0.457474 0.508305 0.457474 0.351903 0.254152 0.18299 0.134551 0.101661 0.0788749 0.0626677 0.0508305 0.0419701 0.0351903 0.0299003 0.0257008 0.0223158 0.0195502 0.0172632 0.143269 0.198984 0.275516 0.358171 0.397968 0.358171 0.275516 0.198984 0.143269 0.105345 0.0795936 0.0617537 0.0490646 0.0397968 0.0328598 0.0275516 0.0234099 0.020122 0.0174718 0.0153065 0.0135159 0.289297 0.401801 0.55634 0.723241 0.803602 0.723241 0.55634 0.401801 0.289297 0.212718 0.16072 0.124697 0.0990742 0.0803602 0.0663524 0.055634 0.0472707 0.0406315 0.0352801 0.0309078 0.0272921 0.570062 0.791753 1.09627 1.42515 1.58351 1.42515 1.09627 0.791753 0.570062 0.419163 0.316701 0.245716 0.195227 0.158351 0.130748 0.109627 0.0931474 0.0800649 0.0695197 0.060904 0.0537794 0.887485 1.23262 1.7067 2.21871 2.46524 2.21871 1.7067 1.23262 0.887485 0.652563 0.493047 0.382537 0.303933 0.246524 0.203552 0.17067 0.145014 0.124647 0.10823 0.0948168 0.083725 gle-graphics-4.2.4c/gle-refman/utilities/fig/saddle/saddle.let0000644000000000000000000000532311405447072022731 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! saddle.z 0, 20, 1 0, 20, 1 3/2*(cos(3/5*(y-1))+5/4)/(1+(((x-4)/3)^2)) gle-graphics-4.2.4c/gle-refman/utilities/fig/fitls.dat0000644000000000000000000000526211405447072021350 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 1 2 2 5 3 5 4 6 5 4 6 3 7 6 8 9 9 10 gle-graphics-4.2.4c/gle-refman/utilities/fig/xyz/xyz.key0000644000000000000000000000716511405447072021737 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! rmove .2 .2 set lwidth 0 save keystart begin box fill white add .2 text K rmove .6 0 text 3 rmove -.6 .5 text J rmove .6 0 text 2.8 rmove -.6 .5 text I rmove .6 0 text 2.6 rmove -.6 .5 text H rmove .6 0 text 2.4 rmove -.6 .5 text G rmove .6 0 text 2.2 rmove -.6 .5 text F rmove .6 0 text 2 rmove -.6 .5 text E rmove .6 0 text 1.8 rmove -.6 .5 text D rmove .6 0 text 1.6 rmove -.6 .5 text C rmove .6 0 text 1.4 rmove -.6 .5 text B rmove .6 0 text 1.2 rmove -.6 .5 text A rmove .6 0 text 1 rmove -.6 .5 end box move keystart text K rmove .6 0 text 3 rmove -.6 .5 text J rmove .6 0 text 2.8 rmove -.6 .5 text I rmove .6 0 text 2.6 rmove -.6 .5 text H rmove .6 0 text 2.4 rmove -.6 .5 text G rmove .6 0 text 2.2 rmove -.6 .5 text F rmove .6 0 text 2 rmove -.6 .5 text E rmove .6 0 text 1.8 rmove -.6 .5 text D rmove .6 0 text 1.6 rmove -.6 .5 text C rmove .6 0 text 1.4 rmove -.6 .5 text B rmove .6 0 text 1.2 rmove -.6 .5 text A rmove .6 0 text 1 rmove -.6 .5 move keystart gle-graphics-4.2.4c/gle-refman/utilities/fig/xyz/xyz.lab0000644000000000000000000000706611405447072021705 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! set lwidth .0000001 amove xg(1.8) yg(0) begin box fill white add .07 text B end box text B amove xg(1.6) yg(0) begin box fill white add .07 text C end box text C amove xg(1.4) yg(0) begin box fill white add .07 text D end box text D amove xg(1.2) yg(0) begin box fill white add .07 text E end box text E amove xg(1) yg(0) begin box fill white add .07 text F end box text F amove xg(0.8) yg(0) begin box fill white add .07 text G end box text G amove xg(0.6) yg(0) begin box fill white add .07 text H end box text H amove xg(0.4) yg(0) begin box fill white add .07 text I end box text I amove xg(0.2) yg(0) begin box fill white add .07 text J end box text J amove xg(0) yg(0) begin box fill white add .07 text K end box text K amove xg(2) yg(4) begin box fill white add .07 text E end box text E amove xg(2) yg(5) begin box fill white add .07 text F end box text F gle-graphics-4.2.4c/gle-refman/utilities/fig/xyz/xyz.z0000644000000000000000000000531611405447072021414 0ustar rootroot! nx 4 ny 3 xmin 0 xmax 6 ymin 0 ymax 10 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 3 1 1 1 1 2 2 1 1 1 1 1 gle-graphics-4.2.4c/gle-refman/utilities/fig/xyz/xyz.big0000644000000000000000000002347711405447072021714 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! amove 9 9 set hei 0.3 set color BLACK set lstyle 2 amove 3.14667 1.60055 aline 4.34 1.87851 amove 4.34 1.87851 aline 5.52667 2.15647 amove 3.14667 1.60055 aline 2.5 1.88743 amove 4.34 1.87851 aline 4.34 1.87851 amove 5.52667 2.15647 aline 5.52667 2.15647 amove 2.5 1.88743 aline 2.5 1.88743 amove 2.5 1.88743 aline 1.85333 2.17431 amove 1.85333 2.17431 aline 1.85333 2.17431 amove 1.85333 2.17431 aline 1.2 5.2475 amove 1.2 5.2475 aline 1.2 5.2475 set color BLACK set lstyle 1 amove 3.14667 1.60055 aline 4.34 1.87851 amove 4.34 1.87851 aline 5.52667 2.15647 amove 3.14667 1.60055 aline 2.5 1.88743 amove 4.34 1.87851 aline 3.68667 3.55855 amove 5.52667 2.15647 aline 4.88 2.44335 amove 2.5 1.88743 aline 3.68 3.54915 amove 3.68667 3.55855 aline 4.87333 2.44959 amove 2.5 1.88743 aline 1.85333 2.17431 amove 3.68667 3.55855 aline 3.04 3.84543 amove 4.88 2.44335 aline 4.88 2.44335 amove 1.85333 2.17431 aline 3.03333 3.83602 amove 3.04 3.84543 aline 3.04 3.84543 amove 1.85333 2.17431 aline 1.2 5.2475 amove 3.04 3.84543 aline 3.04 3.84543 amove 1.2 5.2475 aline 2.33333 2.86526 set color BLACK set lstyle 1 set color BLACK set lstyle 1 amove 5.52667 1.4599 aline 4.49333 1.91443 amove 2.22667 2.00869 aline 1.2 1.76462 amove 1.2 5.2475 aline 1.2 5.94408 amove 1.2 5.2475 aline 1.2 1.76462 amove 1.2 5.94408 aline 3.58 6.5 amove 3.58 3.60587 aline 3.58 6.5 amove 3.58 6.5 aline 5.52667 5.63936 amove 5.52667 2.15647 aline 5.52667 5.63936 amove 5.52667 2.15647 aline 5.52667 1.4599 amove 1.2053 1.76462 aline 3.15124 0.903974 amove 3.15124 0.903974 aline 5.53155 1.4599 set just BC set color BLACK set hei 0.116667 set just TC amove 1.2053 1.76462 aline 1.20247 1.75821 amove 1.14584 1.63018 rotate -23.8587 text 0 rotate 23.8587 amove 1.52962 1.62118 aline 1.52679 1.61477 amove 1.47016 1.48674 rotate -23.8587 text 1 rotate 23.8587 amove 1.85394 1.47774 aline 1.85111 1.47133 amove 1.79449 1.3433 rotate -23.8587 text 2 rotate 23.8587 amove 2.17827 1.33429 aline 2.17544 1.32789 amove 2.11881 1.19986 rotate -23.8587 text 3 rotate 23.8587 amove 2.50259 1.19085 aline 2.49976 1.18445 amove 2.44313 1.05642 rotate -23.8587 text 4 rotate 23.8587 amove 2.82692 1.04741 aline 2.82408 1.04101 amove 2.76746 0.912976 rotate -23.8587 text 5 rotate 23.8587 amove 3.15124 0.903974 aline 3.14841 0.897572 amove 3.09178 0.769535 rotate -23.8587 text 6 rotate 23.8587 set just TC set color BLACK set hei 0.116667 set just TC amove 3.15124 0.903974 aline 3.15283 0.897157 amove 3.18467 0.760826 rotate 13.1458 text 0 rotate -13.1458 amove 3.38927 0.959566 aline 3.39086 0.95275 amove 3.4227 0.816418 rotate 13.1458 text 1 rotate -13.1458 amove 3.6273 1.01516 aline 3.62889 1.00834 amove 3.66073 0.87201 rotate 13.1458 text 2 rotate -13.1458 amove 3.86533 1.07075 aline 3.86692 1.06393 amove 3.89876 0.927602 rotate 13.1458 text 3 rotate -13.1458 amove 4.10336 1.12634 aline 4.10495 1.11953 amove 4.13679 0.983195 rotate 13.1458 text 4 rotate -13.1458 amove 4.34139 1.18193 aline 4.34298 1.17512 amove 4.37482 1.03879 rotate 13.1458 text 5 rotate -13.1458 amove 4.57942 1.23753 aline 4.58102 1.23071 amove 4.61286 1.09438 rotate 13.1458 text 6 rotate -13.1458 amove 4.81745 1.29312 aline 4.81905 1.2863 amove 4.85089 1.14997 rotate 13.1458 text 7 rotate -13.1458 amove 5.05548 1.34871 aline 5.05708 1.34189 amove 5.08892 1.20556 rotate 13.1458 text 8 rotate -13.1458 amove 5.29351 1.4043 aline 5.29511 1.39749 amove 5.32695 1.26116 rotate 13.1458 text 9 rotate -13.1458 amove 5.53155 1.4599 aline 5.53314 1.45308 amove 5.56498 1.31675 rotate 13.1458 text 10 rotate -13.1458 set just TC set color BLACK set hei 0.116667 set just RC amove 1.2053 1.76462 aline 1.1983 1.76462 amove 1.0583 1.76462 text 0.5 amove 1.2053 2.46119 aline 1.1983 2.46119 amove 1.0583 2.46119 text 1 amove 1.2053 3.15777 aline 1.1983 3.15777 amove 1.0583 3.15777 text 1.5 amove 1.2053 3.85435 aline 1.1983 3.85435 amove 1.0583 3.85435 text 2 amove 1.2053 4.55092 aline 1.1983 4.55092 amove 1.0583 4.55092 text 2.5 amove 1.2053 5.2475 aline 1.1983 5.2475 amove 1.0583 5.2475 text 3 amove 1.2053 5.94408 aline 1.1983 5.94408 amove 1.0583 5.94408 text 3.5 set just BC set color BLACK set lstyle 1 amove 1.2 5.2475 aline 1.2 5.94408 amove 1.2 5.2475 aline 1.2 1.76462 amove 1.44 4.74302 aline 1.44 5.99967 amove 1.44 4.11857 aline 1.44 1.82021 amove 1.68 4.23854 aline 1.68 6.05526 amove 1.68 2.98965 aline 1.68 1.8758 amove 1.91333 3.74808 aline 1.91333 6.11085 amove 1.91333 2.1477 aline 1.91333 1.93139 amove 2.15333 3.24361 aline 2.15333 6.16645 amove 2.15333 2.04123 aline 2.15333 1.98699 amove 2.39333 2.93476 aline 2.39333 6.22204 amove 2.63333 3.27273 aline 2.63333 6.27763 amove 2.86667 3.60132 aline 2.86667 6.33322 amove 3.10667 3.81586 aline 3.10667 6.38882 amove 3.34667 3.70938 aline 3.34667 6.44441 amove 3.58 3.60587 aline 3.58 6.5 amove 1.2 1.76462 aline 2.23333 2.00573 amove 1.2 2.46119 aline 1.76667 2.58198 amove 2.1 3.35572 aline 2.82667 3.54499 amove 3.42667 3.67389 aline 3.58 3.71369 amove 1.2 3.15777 aline 1.62667 3.24052 amove 1.8 3.9863 aline 3.58 4.41027 amove 1.2 3.85435 aline 1.48667 3.89905 amove 1.5 4.6169 aline 3.58 5.10685 amove 1.2 4.55092 aline 1.34667 4.5576 amove 1.2 5.2475 aline 3.58 5.80342 amove 1.2 5.2475 aline 1.20667 5.21614 amove 1.2 5.94408 aline 3.58 6.5 set color BLACK set lstyle 1 amove 3.58 3.60587 aline 3.58 6.5 amove 3.90667 3.35295 aline 3.90667 6.35656 amove 4.23333 3.04768 aline 4.23333 6.21312 amove 4.55333 2.74863 aline 4.55333 6.06968 amove 4.55333 1.92848 aline 4.55333 1.89022 amove 4.88 2.44335 aline 4.88 5.92624 amove 4.88 2.005 aline 4.88 1.74678 amove 5.20667 2.29844 aline 5.20667 5.7828 amove 5.20667 2.08152 aline 5.20667 1.60334 amove 5.52667 2.15647 aline 5.52667 5.63936 amove 5.52667 2.15647 aline 5.52667 1.4599 amove 4.5 1.91599 aline 5.52667 1.4599 amove 5.45333 2.18901 aline 5.46 2.18605 amove 5.46667 2.18309 aline 5.47333 2.18013 amove 5.48 2.17718 aline 5.48667 2.17422 amove 5.49333 2.17126 aline 5.5 2.1683 amove 5.50667 2.16535 aline 5.52667 2.15647 amove 5.52667 2.15647 aline 5.52667 2.15647 amove 3.58 3.71369 aline 5.52667 2.85305 amove 3.58 4.41027 aline 5.52667 3.54963 amove 3.58 5.10685 aline 5.52667 4.2462 amove 3.58 5.80342 aline 5.52667 4.94278 amove 3.58 6.5 aline 5.52667 5.63936 set color BLACK set lstyle 1 amove 1.2 1.76462 aline 2.23333 2.00573 amove 1.52667 1.62118 aline 2.56 1.86082 amove 1.85333 1.47774 aline 2.88667 1.7159 amove 2.17333 1.33429 aline 4.55333 1.89022 amove 2.5 1.19085 aline 4.88 1.74678 amove 2.82667 1.04741 aline 5.20667 1.60334 amove 3.14667 0.903974 aline 5.52667 1.4599 amove 1.2 1.76462 aline 3.14667 0.903974 amove 1.44 1.82021 aline 3.38667 0.959566 amove 1.68 1.8758 aline 3.62667 1.01516 amove 1.91333 1.93139 aline 3.86 1.07075 amove 2.15333 1.98699 aline 4.1 1.12634 amove 3.31333 1.63937 aline 4.34 1.18193 amove 3.54667 1.69372 aline 4.57333 1.23753 amove 3.78667 1.74962 aline 4.81333 1.29312 amove 4.02667 1.80552 aline 5.05333 1.34871 amove 4.26667 1.86142 aline 5.29333 1.4043 amove 4.5 1.91599 aline 5.52667 1.4599 gle-graphics-4.2.4c/gle-refman/utilities/fig/xyz/xyz.dat0000644000000000000000000000577011405447072021717 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! * * 1.8 0 2 1 4 1 5.6 5 4 9 2 9 0.4 5 0 4.5 * * 1.6 0 2 2 4 2 5.2 5 4 8 2 8 0.8 5 0 4 * * 1.4 0 2 3 4 3 4.8 5 4 7 2 7 1.2 5 0 3.5 * * 1.2 0 0 3 * * 1 0 0 2.5 * * 0.8 0 0 2 * * 0.6 0 0 1.5 * * 0.4 0 0 1 * * 0.2 0 0 0.5 * * 0 0 0 0 * * 2 4 1.6 5 2 6 4 6 4.4 5 4 4 2 4 * * 2 5 2 5 2 5 4 5 4 5 4 5 2 5 gle-graphics-4.2.4c/gle-refman/utilities/fig/xyz/xyz.sur0000644000000000000000000000555611405447072021762 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! begin surface size 7 7 data xyz.z back ystep 1 zstep 0.5 !color green base xstep 1 ystep 1 !color green right zstep .5 xstep 1 !color green !top color blue zaxis min 0.5 max 3.5 underneath on lstyle 2 end surface gle-graphics-4.2.4c/gle-refman/utilities/fig/surf2.gle0000644000000000000000000000605611405447072021271 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! size 7 5 ! Run SURFACE to create SURF2.BIG begin origin box 5 5 begin surface size 5 5 zaxis min -1 max 3 base xstep 0.5 ystep 0.5 back ystep 1 zstep 1 right xstep 0.5 zstep 0.5 lstyle 2 xtitle "X-axis" hei 0.2 ytitle "Y-axis" hei 0.2 data "surf/surf1.z" xaxis hei 0.2 dticks 1 yaxis hei 0.2 dticks 1 nofirst zaxis hei 0.2 dticks 0.5 harray 5000 end surface end origin gle-graphics-4.2.4c/gle-refman/utilities/fig/saddle-contour.gle0000664000000000000000000000626411405447072023156 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! size 7 6 include "contour.gle" set font psh include "../../script/manual.gle" begin letz data "saddle.z" z = 3/2*(cos(3/5*(y-1))+5/4)/(1+(((x-4)/3)^2)) x from 0 to 20 step 0.5 y from 0 to 20 step 0.5 end letz begin contour data "saddle.z" values 0.5 1 1.5 2 3 end contour manual_graph_mode begin graph scale 0.85 0.75 center title "Saddle Plot Contour Lines" data "saddle-cdata.dat" xaxis min -0.75 max 11.75 yaxis min -1.5 max 21.5 d1 line color blue end graph contour_labels "saddle-clabels.dat" "fix 1" gle-graphics-4.2.4c/gle-refman/utilities/fig/fitz1.gle0000644000000000000000000000622411405447072021262 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! size 7 5 ! run SURFACE to create FITZ1.BIG begin fitz data "fitz.dat" x from 0 to 5 step 0.2 y from 0 to 5 step 0.2 ncontour 6 end fitz begin translate -0.1 -0.65 begin surface size 7 7 data "fitz.z" top color blue xaxis min 0 max 5 step 1 hei .2 yaxis min 0 max 5 step 1 hei .2 zaxis step 0.5 hei 0.2 zaxis min 0 max 2.5 points "fitz.dat" droplines lstyle 1 marker circle view 2.5 3 .3 harray 5000 end surface end translate gle-graphics-4.2.4c/gle-refman/utilities/fitls.tex0000644000000000000000000001143011405447072020625 0ustar rootroot%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % GLE - Graphics Layout Engine % % % % Modified BSD License % % % % Copyright (C) 2009 GLE. % % % % Redistribution and use in source and binary forms, with or without % % modification, are permitted provided that the following conditions % % are met: % % % % 1. Redistributions of source code must retain the above copyright % % notice, this list of conditions and the following disclaimer. % % % % 2. Redistributions in binary form must reproduce the above % % copyright notice, this list of conditions and the following % % disclaimer in the documentation and/or other materials provided with % % the distribution. % % % % 3. The name of the author may not be used to endorse or promote % % products derived from this software without specific prior written % % permission. % % % % THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR % % IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED % % WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE % % ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY % % DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL % % DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE % % GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS % % INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER % % IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR % % OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN % % IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \chapter {GLE Utilities} \label{util:chap} \section{Fitls} \index{Fitls} The FITLS utility allows an equation with $n$ unknown constants to be fitted to experimental data. For example to fit a simple least squares regression line to a set of points you would give FITLS the equation: \verb# a*x+b# FITLS would then solve the equation to find the {\em best} values for the constants $a$ and $b$. FITLS can work with non linear equations, it will ask for initial values for the parameters so that a solution around those initial guesses will be found. FITLS writes out a GLE file containing commands to draw the data points and the equation it has fitted to them. Here is a sample FITLS session: \begin{verbatim} $ fitls Input data file (x and y columns optional) [test.dat,1,2] ? fitls.dat Loading data from file, fitls.dat, xcolumn=1, ycolumn=2 Valid operators: +, -, *, /, ^ (power) Valid functions: abs(), atn(), cos(), exp(), fix(), int() log(), log10(), not(), rnd(), sgn(), sin() sqr(), sqrt(), tan() Enter a function of 'x' using constants 'a'...'z' e.g. a + b*x (standard linear least squares fit) sin(x)*a+b a + b*x + c*x^2 + d*x^3 log(a*x)+(b+x)*c+a Equation ? sin(a*x)*b+c*x^2+d Output file name to write gle file [fitls.gle] ? Precision of fit required, [1e-4] ? Initial value for constant a [1.0] ? Initial value for constant b [1.0] ? Initial value for constant c [1.0] ? Initial value for constant d [1.0] ? 0 evaluations, 1 1 1 1 , fit = 1355.36 20 evaluations, 1.97005 1 1 1 , fit = 1281.95 40 evaluations, 1.97005 10.228 0.151285 1 , fit = 54.7694 60 evaluations, 2.01053 10.228 0.151285 1.06365 , fit = 54.1771 . . . 440 evaluations, -0.640525 -2.81525 0.13997 1.13871 , fit = 0.940192 460 evaluations, -0.638055 -2.82934 0.140971 1.10502 , fit = 0.93842 480 evaluations, -0.63808 -2.82357 0.140993 1.10452 , fit = 0.938389 a = -0.638262 b = -2.81719 c = 0.140722 d = 1.11256 10 Iterations, sum of squares devided by n = 0.938389 y = sin(-0.638262*x)*-2.81719+0.140722*x^2+1.11256 \end{verbatim} \vspace*{1.0cm} \psgraphin{utilities/fig/fitls}{8.0}{5.0}{\sf fitls} gle-graphics-4.2.4c/gle-refman/utilities/letz.tex0000644000000000000000000000610311405447072020463 0ustar rootroot%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % GLE - Graphics Layout Engine % % % % Modified BSD License % % % % Copyright (C) 2009 GLE. % % % % Redistribution and use in source and binary forms, with or without % % modification, are permitted provided that the following conditions % % are met: % % % % 1. Redistributions of source code must retain the above copyright % % notice, this list of conditions and the following disclaimer. % % % % 2. Redistributions in binary form must reproduce the above % % copyright notice, this list of conditions and the following % % disclaimer in the documentation and/or other materials provided with % % the distribution. % % % % 3. The name of the author may not be used to endorse or promote % % products derived from this software without specific prior written % % permission. % % % % THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR % % IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED % % WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE % % ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY % % DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL % % DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE % % GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS % % INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER % % IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR % % OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN % % IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Letz} \label{letz:sec} LETZ generates a data file of z values given an expression in terms of x and y. \begin{verbatim} begin letz data "jack.z" z = x+sin(y^2)/pi+10.22 x from 0 to 30 step 1 y from 0 to 20 step 1 end letz \end{verbatim} The file jack.z now contains the required data. The resulting file can be used to generate surface plots with the begin/end surface block discussed in the previous section. gle-graphics-4.2.4c/gle-refman/advanced/advanced.tex0000644000000000000000000005046411405447072021015 0ustar rootroot%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % GLE - Graphics Layout Engine % % % % Modified BSD License % % % % Copyright (C) 2009 GLE. % % % % Redistribution and use in source and binary forms, with or without % % modification, are permitted provided that the following conditions % % are met: % % % % 1. Redistributions of source code must retain the above copyright % % notice, this list of conditions and the following disclaimer. % % % % 2. Redistributions in binary form must reproduce the above % % copyright notice, this list of conditions and the following % % disclaimer in the documentation and/or other materials provided with % % the distribution. % % % % 3. The name of the author may not be used to endorse or promote % % products derived from this software without specific prior written % % permission. % % % % THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR % % IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED % % WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE % % ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY % % DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL % % DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE % % GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS % % INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER % % IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR % % OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN % % IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \chapter{Advanced Features} \label{adv:chap} This chapter covers the advanced features of GLE. \section{Diagrams} \index{diagrams} \subsection{Named Boxes and the Join Command} \label{join:sec} \index{joining} GLE can name objects using the ``begin/end name'' (p.~\pageref{cmd:beginname}), ``begin/end box'' (p.~\pageref{cmd:beginbox}), and ``begin/end object'' (p.~\pageref{cmd:beginobject}) constructs, and using the ``name'' option supported by some drawing commands. The name is always associated with the rectangular region on the figure that corresponds to the bounding box of the object (the smallest rectangle that surrounds all points of the object). The following example shows how to create a blue rectangle named ``square'' and a box with the text ``Title'' named ``titlebox''. \begin{verbatim} amove 1 1 box 1 1 fill blue name square amove 5 5 begin box add 0.1 name titlebox write "Title" end box \end{verbatim} The ``join'' command (p.~\pageref{cmd:join}) can now be used to draw lines or curves (optinally with arrows) between designated points of the named objects. The following example shows how to draw an arrow from the top-right (``.tr'') point of the blue square to the bottom-centre point (``.bc'') of the object named ``titlebox''. \begin{verbatim} join square.tr -> titlebox.bc \end{verbatim} The ``\verb+->+'' in the join command indicates that the arrow should go from the first object towards the second. The symbol ``\verb+<-+'' is used to draw the arrow in the opposite direction. A bidirectional arrow is obtained with ``\verb+<->+'' and a line without an arrow is obtained with ``\verb+-+''. The join command can also create Bezier curves instead of straight lines. See the command's description on p.~\pageref{cmd:join} for more information. \begin{verbatim} join square.tr -> titlebox.bc join square.tr <- titlebox.bc join square.tr <-> titlebox.bc join square.tr - titlebox.bc \end{verbatim} The named points (corners, centre points, ...) on each named object are indicated as defined in Table~\ref{tab:justopt}. ``.box'' clipping is the default and can be omitted. \begin{table}[tb] \caption{\label{tab:justopt}Justify options for the join command.} \centering \begin{tabular}{ll}\hline .tr & Top right \\ .tc & Top centre \\ .tl & Top left \\ .bl & Bottom left \\ .bc & Bottom centre \\ .br & Bottom right \\ .rc & Right centre \\ .lc & Left centre \\ .cc & Centre \\ .v & Vertical line \\ .h & Horizontal line \\ .c & Circle/ellipse clipping (for drawing lines to, e.g., a circle) \\ .box & Box clipping \\ \hline \end{tabular} \end{table} It is also possible to name an individual point (instead of an object). To do so, simply move there and save that point as a named object. \begin{verbatim} amove 2 3; save apoint join apoint - square \end{verbatim} The functions ``pointx'' (abbreviated to ``ptx'', see p.~\pageref{fct:pointxy}), ``pointy'' (abbreviated to ``pty''), ``width'', and ``height'' (p.~\pageref{fct:wdhi}) apply to named points and objects. They retrieve the ``x'' respectively ``y'' coordinate of a named point, and the width and height of a named object. For example: \begin{verbatim} print ptx(square.tr) print pty(square.tr) print width(square) print height(square) \end{verbatim} \subsubsection{Complete Example} Below is a complete example that makes use of the constructs described above. The resulting figure is shown in Fig.~\ref{fig:joindiag}. \begin{verbatim} begin name line amove 8 18 rline 0 -6 end name begin name main amove 9.5 6.5 ellipse 2 0.8 write "Main" end name amove 3 16 begin box name grv add 0.3 round 0.3 fill lightcyan write "GRV" end box amove 12.5 16.5 begin box name cheese add 0.3 fill lightcyan write "Cheese" end box amove 15.5 11.5 begin box name chv add 0.3 fill lightcyan write "CHV" end box amove 3 10 begin box name goats add 0.3 fill lightcyan write "Goats" end box amove 13 1.5 begin box name hi add 0.3 fill lightcyan write "Hi there" end box join chv -> goats ! ".box" is default and can be omitted join grv -> line.h ! ".h" means to join horizontally join line.h <-> cheese.tl join cheese.rc -> chv.tc curve 0 90 1.5 1 join main.c <- hi ! ".c" is used for circles join main.c <- chv join main.c <- goats \end{verbatim} \begin{figure}[tb] \centering \scalebox{0.4}{\includegraphics{advanced/fig/join}} \caption{\label{fig:joindiag}Joining named points.} \end{figure} \subsection{Object Blocks and Hierarchically Named Points} \label{sec:objblocks} The ``begin/end name'' (p.~\pageref{cmd:beginname}) construct names the object that results from the drawing commands in this block. The ``begin/end object'' (p.~\pageref{cmd:beginobject}) is similar, but it does not actually draw the object. It rather defines an object that can be drawn later by means of the ``draw'' command (p.~\pageref{cmd:draw}). An object block is therefore very similar to a subroutine. It actually works in the same way as a subroutine, but it is `executed' by the ``draw'' command rather than by a regular subroutine call. An object block can also have parameters. Here is an example of an object block that defines a house. \begin{verbatim} begin object house ! draw a house with a named door and window set join round ! draw the roof begin path stroke fill lightsalmon amove 0 1.625 aline 1.25 2.5 aline 2.5 1.625 closepath end path ! draw the brick wall amove 0 0 box 2.5 1.625 fill cornsilk ! draw the door amove 1.5 0 box 0.75 1.375 fill burlywood name door ! draw the window amove 0.25 0.625 box 1 0.75 fill skyblue name window end object \end{verbatim} To draw the house defined by the above block, one uses the following draw command. The first argument of the command is the name of the object followed by a dot followed by a justify option (Table~\ref{tab:justopt}). The justify option is used to position the object. In this case, the house is drawn such that its bottom-centre point is horizontally in the middle of the figure and at a height of 1.5 cm. \begin{verbatim} amove pagewidth()/2 1.5 draw house.bc \end{verbatim} The ``draw'' command names the object using the same name as the name of the object block by default. An alternative name can be given using its ``name'' option. In this example, the resulting object on the figure will be called ``house''. Note that the object definition for the house also includes names for the sub-objects ``door'' and ``window''. These names can be accessed using the ``dot'' notation as follows: \begin{verbatim} print ptx(house.door.cc) print pty(house.door.cc) \end{verbatim} These so-called hierarchical object names can also be used to position the object. The following example draws the house such that its door's centre point is at position (5, 5). \begin{verbatim} amove 5 5 draw house.door.cc \end{verbatim} By using the ``draw'' command inside an object's definition, names can be arbitrary nested. For example, if ``door'' would be defined as an object block that includes the name ``handle'', and if the object block defining ``house'' would include a draw command to draw the object ``door'', then the global name of the door's handle becomes ``house.door.handle''. The hierarchical object names can be used to refer to points on the object. The following example shows how these can be used with the pointx and pointy function to draw labels on the figure. \begin{verbatim} set just lc amove pointx(house.rc)+0.5 pointy(house.door.cc) begin name doorlabel add 0.05 write "house.door.cc" end name set just rc amove pointx(house.lc)-0.5 pointy(house.window.cc) begin name windowlabel add 0.05 write "house.window.cc" end name join windowlabel.rc -> house.window.cc join doorlabel.lc -> house.door.cc \end{verbatim} The resulting figure is shown in Fig.~\ref{fig:house}. The file ``shape.gle'' that is distributed with GLE contains object block definitions for many useful shapes. \begin{figure}[tb] \centering \includegraphics{advanced/fig/house} \caption{\label{fig:house}Drawing objects and hierarchically named points.} \end{figure} \section{\texorpdfstring{\LaTeX{} Interface}{LaTeX Interface}} \index{\LaTeX{} expression} \index{tex} \label{latexexp:sec} \subsection{Example} \index{} GLE files can include arbitrary \LaTeX{} expressions using the \LaTeX{} interface. There are two ways to include a \LaTeX{} expression. The first one is by using the `\texttt{tex}' primitive. The second one is by using the `\texttt{$\backslash{}$tex\{\}}' macro in a string. \preglegraph{} \begin{minipage}[c]{5cm} \begin{Verbatim}[baselinestretch=1,fontsize=\small,fontshape=n] set texlabels 1 begin graph ... title "Plot of $f(x) = \frac{x-\sqrt{5}}{(x-1)\cdot(x-4)}$" xtitle "$x$" ytitle "$y = f(x)$" ... end graph set just bc amove xg(sqrt(5)) yg(2.5) tex "$\sqrt{5}$" add 0.1 name sq5b amove xg(sqrt(5)) yg(0); save sq50 join sq5b.bc -> sq50 \end{Verbatim} \end{minipage} \hfill \begin{minipage}[c]{7cm} \input{advanced/fig/texgraph.inc} \end{minipage} \postglegraph{} \LaTeX{} expressions are drawn on top of all other graphics and cannot clipped (Sec.~\ref{clip:sec}). \LaTeX{} expressions respect the `\texttt{just}' setting and, depending on the value of `\texttt{texscale}', also the `\texttt{hei}' setting (the font size). If `\texttt{set texscale scale}' is used, then \LaTeX{} expressions are scaled to the value of `\texttt{hei}'. If `\texttt{set texscale none}' is used, then \LaTeX{} expressions are not scaled. As a result, the font sizes in your graphics will be exactly the same as in your main document. To obtain different font sizes, use the font size primitives provided by \LaTeX{} (e.g., \texttt{$\backslash$large}, $\ldots$). Finally, if `\texttt{set texscale fixed}' is used, then the default \LaTeX{} size that most closely matches the value of `\texttt{hei}' is selected. \subsection{Using LaTeX Packages}\index{LaTeX packages} If your \LaTeX{} expressions require special \LaTeX{} packages, these can be loaded using the \texttt{texpreamble} block. E.g., put the following near the beginning of your GLE file: \begin{verbatim} begin texpreamble \documentclass{llncs} \usepackage{amsmath} \usepackage{amssymb} \DeclareMathSymbol{\R}{\mathbin}{AMSb}{"52} end texpreamble \end{verbatim} \subsection{Using UTF-8 Encoding in GLE Scripts with LaTeX Expressions}\index{UTF-8}\index{Unicode} If you save your .gle files in Unicode (UTF-8) encoding, then you can type accented characters (such as \'e, \"u, \v{z}, \ldots) directly into your GLE script. In order to also allow such encoded characters in \LaTeX{} expressions, add the following `texpreamble' to your GLE script: \verb+size 4 4+\\ \verb+begin texpreamble+\\ \verb+ \usepackage[utf8]{inputenc}+\\ \verb+end texpreamble+\\ \texttt{amove 1 2; tex "\'e\"u\v{z}"} \subsection{Import a GLE Figure in a LaTeX Document} There are two methods for importing the output of a GLE file with \TeX{} expressions in your \LaTeX{} document. The most obvious one is by just importing the .eps/.pdf file generated by GLE with \texttt{$\backslash$includegraphics}. E.g., if you have a GLE script `sin.gle' and you run `gle -d eps -d pdf sin.gle' to produce the .eps/.pdf output, then you could include this in a LaTeX document as follows: \begin{verbatim} \documentclass{article} \usepackage{graphics} \begin{document} \begin{figure} \includegraphics{sin} \caption{\label{sin}The sine function.} \end{figure} \end{document} \end{verbatim} An alternative method is by using GLE's command line option `\texttt{-inc}'. If this option is supplied, then GLE will create besides the usual .eps or .pdf file also an .inc file. This .inc file can be imported in a \LaTeX{} document as follows. \begin{verbatim} \input{myfile.inc} \end{verbatim} The .inc file tells \texttt{latex} (or \texttt{pdflatex}) to include the .eps/.pdf output file created by GLE. It also includes \TeX{} draw commands for drawing the \LaTeX{} expressions on top of the GLE output. Note that the .eps/.pdf file created by GLE does not include these if \texttt{-inc} is used (you can check this by viewing it with GhostView). To be able to include .inc files, the following must be included in the preamble of your \LaTeX{} document. \begin{verbatim} \usepackage{graphics} \usepackage{color} \end{verbatim} \begin{sloppypar} If you place your .gle files in a subdirectory of the directory where your \LaTeX{} document resides, the .inc file created by GLE should include the path to this subdirectory in the `\texttt{$\backslash$includegraphics}' primitive it uses for including the .eps/.pdf file generated by GLE. To add this path, use the `\texttt{-texincprefix}' command line option of GLE. For example, if your GLE files are in a subdirectory called `plots' then one should run GLE as follows. \end{sloppypar} \begin{verbatim} gle -texincprefix "plots/" -inc myfile.gle \end{verbatim} GLE can color and rotate \LaTeX{} expressions (use `\texttt{set color}' and `\texttt{begin rotate}'). Note however that `\texttt{xdvi}' does not support these effects, so you will not be able to see them if you use this viewer. In the final PostScript or PDF output, they will of course be displayed correctly. The main advantage of using the \texttt{-inc} method is that the resulting file size will be smaller because the \LaTeX{} fonts are not included in the .eps/.pdf file generated by GLE. \subsection{The .gle Directory} If your source includes \LaTeX{} expressions, then GLE will construct a subdirectory called `.gle' for storing temporary files (e.g., used for measuring the printed size of the \LaTeX{} expressions). After you are finished you can safely delete the .gle directory. GLE will recreate it automatically if required. \section{Filling, Stroking and Clipping Paths} \index{paths} \index{stroking} \index{clip} \index{clipping} \label{clip:sec} It is possible to set up arbitrary clipping regions. To do this draw a shape and make it into a path by putting a {\sf begin path clip} ... {\sf end path}, around it. Then draw the things to be clipped by that region. To clear a clipping path surround the whole section of GLE commands with {\sf begin clip ... end clip} Characters can be used to make up clipping paths, but only the PostScript fonts will currently work for this purpose. \begin{verbatim} size 10 5 begin clip ! Save current clipping path begin path clip stroke ! Define new clipping region amove 2 2 box 3 3 amove 6 2 box 3 3 end path amove 2 2 set hei 3 text Here is clipped text end clip ! Restore original clipping path \end{verbatim} \psgraphin{advanced/fig/gc_clip}{10.0}{5.0}{\sf begin clip} \section{Colour} \index{fill patterns} \index{color (variables)} Internally GLE treats color and fill identically, they are simply an intensity of red, green and blue. Each of the predefined color names (yellow, grey20, orange, red) simply define the ratio of red, green and blue. A sample of the predefined color names is included in Appendix~\ref{colors:sec}. \index{color-variables} There are two ways to use variables to show color, one is for shades of grey: \begin{verbatim} for i = 0 to 10 box 3 .2 fill (i/10) rmove 0 .2 next i \end{verbatim} The other is for passing a color {\bf name} as a variable: \begin{verbatim} sub stick c$ box .2 2 fill c$ end sub stick "green" \end{verbatim} \index{cvtrgb()}\index{rgb255()}\index{RGB} A color can also be defined based on its RGB values with the \texttt{rgb255} primitive. \begin{verbatim} mycolor$ = "rgb255(38,38,134)" \end{verbatim} \index{filling} Remember a fill pattern completely obscures what is behind it, so the following command would produce a box with a shadow: \begin{verbatim} amove 4 4 box 3 2 fill grey10 rmove -.1 .1 box 3 2 fill white rmove .4 .4 text hellow \end{verbatim} \section{GLE's Configuration File} \label{conffile:sec} GLE reads two configuration files during initialization. The first configuration file is the file ``glerc'' located in the root of your GLE installation. This location is usually referred to as \$GLE\_TOP. To find out where your \$GLE\_TOP is, run ``\texttt{gle -info}''. The second configuration file is the file ``.glerc'' located in your home directory (Unix and Mac OS/X only). The commands in this second file override the commands in \$GLE\_TOP/glerc. The configuration files can be used to set various options, such as the paper size and margins. To set the paper size and margins, add the following block to the configuration file. \preglecode{} \begin{verbatim} begin config paper size = letterpaper margins = 2.54 2.54 2.54 2.54 end config \end{verbatim} \postglecode{} The supported paper sizes are listed with the description of the ``\texttt{papersize}'' command on page~\pageref{papsiz:cmd}. The configuration file can also be used to override default locations of external tools such as GhostScript and LaTeX. \preglecode{} \begin{verbatim} begin config tools ghostscript = $HOME/bin/gs pdflatex = /usr/bin/pdflatex latex = /usr/bin/latex dvips = /usr/bin/dvips dvips_options = "-j0" end config \end{verbatim} \postglecode{} Note that GLE expands environment variables in the tool locations. If I'm john, then GLE will search for GhostScript in \verb+/home/john/bin/gs+ in the above example. It is also possible to specify additional command line options to be passed to the tools by means of \verb+ghostscript_options+, \verb+pdflatex_options+, \verb+latex_options+, and \verb+dvips_options+. In the above example, the option ``\verb+-j0+'' will be passed to dvips. As a result, it will not subset fonts. gle-graphics-4.2.4c/gle-refman/advanced/fig/gc_clip.gle0000644000000000000000000000576211405447072021365 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! size 10 5 begin clip ! Save current clipping path begin path clip stroke ! Define new clipping region amove 2 2 box 3 3 amove 6 2 box 3 3 end path amove 2 2 set hei 3 text Here is clipped text end clip ! Restore original clipping path gle-graphics-4.2.4c/gle-refman/advanced/fig/Makefile.os20000664000000000000000000000545211405447072021434 0ustar rootroot######################################################################## # # # GLE - Graphics Layout Engine # # # # Modified BSD License # # # # Copyright (C) 2009 GLE. # # # # Redistribution and use in source and binary forms, with or without # # modification, are permitted provided that the following conditions # # are met: # # # # 1. Redistributions of source code must retain the above copyright # # notice, this list of conditions and the following disclaimer. # # # # 2. Redistributions in binary form must reproduce the above # # copyright notice, this list of conditions and the following # # disclaimer in the documentation and/or other materials provided with # # the distribution. # # # # 3. The name of the author may not be used to endorse or promote # # products derived from this software without specific prior written # # permission. # # # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR # # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY # # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE # # GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER # # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN # # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # # ######################################################################## EPSS = gc_join.eps gc_clip.eps texgraph.eps all: $(EPSS) %.eps: %.gle gle -texincprefix "advanced/fig/" -d eps $< clean: rm -rf *.eps *.pdf *.inc .gle gle-graphics-4.2.4c/gle-refman/advanced/fig/gc_join.gle0000644000000000000000000000634511405447072021373 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! size 12 3.5 !3 amove .5 3 ! 1 2.6 set hei .28 !.27 set font tt begin table set hei .3 font psh amove 1.2 .2 box 1 1 fill blue name square amove 1.9 2 begin box add .1 name titlebox text Title end box join square.tr -> titlebox.br join square <- titlebox join square.tc <-> titlebox.v end table amove 7.4 0.25 !0 box 4.4 3 !4 3 begin origin set hei .6 font psh set hei .3 amove 1.2 .2 box 1 1 fill blue name square amove 1.9 2 begin box add .1 name titlebox text Title end box join square.tr -> titlebox.br join square <- titlebox join square.tc <-> titlebox.v end origin gle-graphics-4.2.4c/gle-refman/advanced/fig/texgraph.gle0000664000000000000000000000637211405447072021607 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! size 7 5 include "../../script/manual.gle" amove 0 -0.1 manual_graph_mode begin graph scale auto title "Plot of $f(x) = \frac{x-\sqrt{5}}{(x-1)\cdot(x-4)}$" xtitle "$x$" ytitle "$y = f(x)$" xplaces 0 1 2 3 4 5 xaxis min 0 max 5 format "fix 0" yaxis min -6 max 6 let d1 = (x-sqrt(5))/((x-1)*(x-4)) from 0 to 5 step 0.025 let d2 = 0 from 0 to 5 step 1 d1 line d2 line color red end graph set just bc amove xg(sqrt(5)) yg(2.5) tex "$\sqrt{5}$" add 0.1 name sq5b amove xg(sqrt(5)) yg(0); save sq50 join sq5b.bc -> sq50 set color blue amove xg(1) yg(-6) aline xg(1) yg(6) amove xg(4) yg(-6) aline xg(4) yg(6) gle-graphics-4.2.4c/gle-refman/advanced/fig/Makefile.gcc0000664000000000000000000000565711405447072021474 0ustar rootroot######################################################################## # # # GLE - Graphics Layout Engine # # # # Modified BSD License # # # # Copyright (C) 2009 GLE. # # # # Redistribution and use in source and binary forms, with or without # # modification, are permitted provided that the following conditions # # are met: # # # # 1. Redistributions of source code must retain the above copyright # # notice, this list of conditions and the following disclaimer. # # # # 2. Redistributions in binary form must reproduce the above # # copyright notice, this list of conditions and the following # # disclaimer in the documentation and/or other materials provided with # # the distribution. # # # # 3. The name of the author may not be used to endorse or promote # # products derived from this software without specific prior written # # permission. # # # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR # # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY # # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE # # GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER # # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN # # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # # ######################################################################## EPSS = gc_join.pdf gc_clip.pdf texgraph.inc join.pdf house.pdf ifeq ($(RUNBUILD),1) GLE = ../../../build/bin/gle else GLE = gle endif all: $(EPSS) %.inc: %.gle $(GLE) -texincprefix "advanced/fig/" -inc -d pdf $< %.pdf: %.gle $(GLE) -d pdf $< clean: rm -rf *.eps *.pdf *.inc .gle gle-graphics-4.2.4c/gle-refman/advanced/fig/texgraph.tex0000664000000000000000000000650211214272161021624 0ustar rootroot%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % GLE - Graphics Layout Engine % % % % Modified BSD License % % % % Copyright (C) 2009 GLE. % % % % Redistribution and use in source and binary forms, with or without % % modification, are permitted provided that the following conditions % % are met: % % % % 1. Redistributions of source code must retain the above copyright % % notice, this list of conditions and the following disclaimer. % % % % 2. Redistributions in binary form must reproduce the above % % copyright notice, this list of conditions and the following % % disclaimer in the documentation and/or other materials provided with % % the distribution. % % % % 3. The name of the author may not be used to endorse or promote % % products derived from this software without specific prior written % % permission. % % % % THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR % % IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED % % WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE % % ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY % % DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL % % DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE % % GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS % % INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER % % IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR % % OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN % % IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \documentclass{article} \usepackage[dvips]{graphics} \usepackage{color} \usepackage{geometry} \geometry{% paperwidth=6.075cm, paperheight=5.075cm, left=0in, right=0in, top=0in, bottom=0in } \pagestyle{empty} \begin{document} \setlength{\unitlength}{1cm}% \noindent{}\begin{picture}(6.075,5.075)(0,0)% \put(0,0){\includegraphics{texgraph_inc}} \put(2.94245,0.149732){\makebox(0,0)[lb]{{\small $x$}}} \put(0.35209,1.91713){\rotatebox{90}{\makebox(0,0)[lb]{{\small $y = f(x)$}}}} \put(1.05637,4.57681){\makebox(0,0)[lb]{{\normalsize Plot of $f(x) = \frac{x-\sqrt{5}}{(x-1)\cdot(x-4)}$}}} \put(2.57729,3.2384){\makebox(0,0)[lb]{{\normalsize $\sqrt{5}$}}} \end{picture} \end{document} gle-graphics-4.2.4c/gle-refman/advanced/fig/join.gle0000664000000000000000000000737711405447072020732 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! size 18 18.5 ! This is JOIN.GLE, demonstrates the join commands. set hei 0.8 just cc font psh arrowsize 0.6 arrowangle 16 set lwidth 0.05 fill lightcyan begin name line amove 8 18 rline 0 -6 end name begin name main amove 9.5 6.5 ellipse 2 0.8 write "Main" end name amove 3 16 begin box name grv add 0.3 round 0.3 fill lightcyan write "GRV" end box amove 12.5 16.5 begin box name cheese add 0.3 fill lightcyan write "Cheese" end box amove 15.5 11.5 begin box name chv add 0.3 fill lightcyan write "CHV" end box amove 3 10 begin box name goats add 0.3 fill lightcyan write "Goats" end box amove 13 1.5 begin box name hi add 0.3 fill lightcyan write "Hi there" end box join chv -> goats ! ".box" is default and can be omitted join grv -> line.h ! ".h" means to join horizontally join line.h <-> cheese.tl join cheese.rc -> chv.tc curve 0 90 1.5 1 join main.c <- hi ! ".c" is used for circles join main.c <- chv join main.c <- goats gle-graphics-4.2.4c/gle-refman/advanced/fig/house.gle0000664000000000000000000000767511405447072021117 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! size 9 4.1 set font psh sub red_bullet ! draw a red bullet gsave set color red fill red circle 0.06 grestore end sub begin object house ! draw a house with a named door and window set join round ! draw the roof begin path stroke fill lightsalmon amove 0 1.625 aline 1.25 2.5 aline 2.5 1.625 closepath end path ! draw the brick wall amove 0 0 box 2.5 1.625 fill cornsilk ! draw the door amove 1.5 0 box 0.75 1.375 fill burlywood name door ! draw the window amove 0.25 0.625 box 1 0.75 fill skyblue name window end object ! draw the house amove pagewidth()/2 1.5 draw house.bc red_bullet ! mark the door and window with a red bullet move house.door.cc red_bullet move house.window.cc red_bullet ! draw the labels set just bc amove pagewidth()/2 0.1 begin name drawcmd add 0.05 begin text amove pagewidth()/2 1.5 draw house.bc end text end name set just lc amove pointx(house.rc)+0.5 pointy(house.door.cc) begin name doorlabel add 0.05 write "house.door.cc" end name set just rc amove pointx(house.lc)-0.5 pointy(house.window.cc) begin name windowlabel add 0.05 write "house.window.cc" end name ! draw the arrows join drawcmd.tc -> house.bc join windowlabel.rc -> house.window.cc join doorlabel.lc -> house.door.cc gle-graphics-4.2.4c/gle-refman/qgle/qgle.tex0000664000000000000000000001024211405436607017355 0ustar rootroot%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % GLE - Graphics Layout Engine % % % % Modified BSD License % % % % Copyright (C) 2009 GLE. % % % % Redistribution and use in source and binary forms, with or without % % modification, are permitted provided that the following conditions % % are met: % % % % 1. Redistributions of source code must retain the above copyright % % notice, this list of conditions and the following disclaimer. % % % % 2. Redistributions in binary form must reproduce the above % % copyright notice, this list of conditions and the following % % disclaimer in the documentation and/or other materials provided with % % the distribution. % % % % 3. The name of the author may not be used to endorse or promote % % products derived from this software without specific prior written % % permission. % % % % THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR % % IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED % % WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE % % ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY % % DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL % % DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE % % GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS % % INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER % % IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR % % OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN % % IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \chapter{QGLE: GLE's Graphical User Interface} \index{QGLE}\label{QGLE:chap} QGLE is the graphical user interface (GUI) to GLE. A screenshot of QGLE with some of its dialogs appears in Fig.~\ref{fig:qgle}. \begin{figure} \resizebox{\textwidth}{!}{\includegraphics{qgle/screenshot/qgle-windows1.png}} \caption{\label{fig:qgle}A screenshot of QGLE.} \end{figure} The current GUI contains a preview window that can receive messages from GLE and display the resulting EPS file. In addition, it can open GLE and EPS files directly (using Ghostscript and GLE). It has the capability to add and edit simple objects, such as, lines, circles, arcs (snapping to a grid if required), and complex object blocks (defined with begin/end object). It can also alter various properties of the objects, such as, line width, and color. The perpendicular line and tangential line commands can be used to produce a line starting perpendicular or tangential to an existing object. OSnap can be used for the end point of a line. \vspace{0.5cm} When drawing objects, hit the escape key to cancel. The pointer tool can be used to select objects and they can be deleted using the 'del' key or moved/scaled. Shift can be used to select multiple objects. \vspace{0.5cm} Keyboard shortcuts include: \begin{tabular}{l|l} F1 & Open the GLE manual \\ F3 & Toggle object snap \\ F6 & Toggle coordinate display \\ F7 & Toggle grid visibility \\ F8 & Toggle orthographic snap \\ F9 & Toggle grid snap \\ F10 & Toggle polar snap \\ '-' & Zoom in \\ '=' & Zoom out \\ \end{tabular} gle-graphics-4.2.4c/gle-refman/fonttest/fonttab.tex0000664000000000000000000001267711405447072021014 0ustar rootroot%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % GLE - Graphics Layout Engine % % % % Modified BSD License % % % % Copyright (C) 2009 GLE. % % % % Redistribution and use in source and binary forms, with or without % % modification, are permitted provided that the following conditions % % are met: % % % % 1. Redistributions of source code must retain the above copyright % % notice, this list of conditions and the following disclaimer. % % % % 2. Redistributions in binary form must reproduce the above % % copyright notice, this list of conditions and the following % % disclaimer in the documentation and/or other materials provided with % % the distribution. % % % % 3. The name of the author may not be used to endorse or promote % % products derived from this software without specific prior written % % permission. % % % % THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR % % IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED % % WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE % % ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY % % DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL % % DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE % % GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS % % INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER % % IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR % % OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN % % IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \input{fonttest/extrafonts.tex} \includegraphics{fonttest/rm}\hfill \includegraphics{fonttest/rmb} \includegraphics{fonttest/rmi}\hfill \includegraphics{fonttest/ss} \includegraphics{fonttest/ssb}\hfill \includegraphics{fonttest/ssi} \includegraphics{fonttest/tt}\hfill \includegraphics{fonttest/ttb} \includegraphics{fonttest/tti}\hfill \includegraphics{fonttest/texcmr} \includegraphics{fonttest/texcmb}\hfill \includegraphics{fonttest/texcmti} \includegraphics{fonttest/texcmss}\hfill \includegraphics{fonttest/texcmssb} \includegraphics{fonttest/texcmssi}\hfill \includegraphics{fonttest/texcmtt} \includegraphics{fonttest/texcmitt}\hfill \includegraphics{fonttest/texcmmi} \includegraphics{fonttest/texcmsy}\hfill \includegraphics{fonttest/texcmex} \includegraphics{fonttest/pssym}\hfill \includegraphics{fonttest/pszd} \extrafonts{% \includegraphics{fonttest/plsym1}\hfill \includegraphics{fonttest/plsym2}} \includegraphics{fonttest/pstr}\hfill \includegraphics{fonttest/pstb} \includegraphics{fonttest/psti}\hfill \includegraphics{fonttest/pstbi} \includegraphics{fonttest/psc}\hfill \includegraphics{fonttest/pscb} \includegraphics{fonttest/psco}\hfill \includegraphics{fonttest/pscbo} \includegraphics{fonttest/psh}\hfill \includegraphics{fonttest/pshb} \includegraphics{fonttest/psho}\hfill \includegraphics{fonttest/pshbo} \extrafonts{% \includegraphics{fonttest/pshc}\hfill \includegraphics{fonttest/pshcb} \includegraphics{fonttest/pshcdo}\hfill \includegraphics{fonttest/pshcbo}} \includegraphics{fonttest/pshn}\hfill \includegraphics{fonttest/pshnb} \includegraphics{fonttest/pshno}\hfill \includegraphics{fonttest/pshnbo} \includegraphics{fonttest/psagb}\hfill \includegraphics{fonttest/psagd} \includegraphics{fonttest/psagbo}\hfill \includegraphics{fonttest/psagdo} \includegraphics{fonttest/psbl}\hfill \includegraphics{fonttest/psbd} \includegraphics{fonttest/psbli}\hfill \includegraphics{fonttest/psbdi} \includegraphics{fonttest/psncsr}\hfill \includegraphics{fonttest/psncsb} \includegraphics{fonttest/psncsi}\hfill \includegraphics{fonttest/psncsbi} \includegraphics{fonttest/pspr}\hfill \includegraphics{fonttest/pspb} \includegraphics{fonttest/pspi}\hfill \includegraphics{fonttest/pspbi} \includegraphics{fonttest/pszcmi} \extrafonts{% \includegraphics{fonttest/plsr}\hfill \includegraphics{fonttest/pldr} \includegraphics{fonttest/pltr}\hfill \includegraphics{fonttest/plti} \includegraphics{fonttest/plcr}\hfill \includegraphics{fonttest/plci} \includegraphics{fonttest/plss}\hfill \includegraphics{fonttest/plcs} \includegraphics{fonttest/plsa}\hfill \includegraphics{fonttest/plba} \includegraphics{fonttest/plge}\hfill \includegraphics{fonttest/plgg} \includegraphics{fonttest/plgi}\hfill \includegraphics{fonttest/plsg} \includegraphics{fonttest/plcg}\hfill \includegraphics{fonttest/plcc}} gle-graphics-4.2.4c/gle-refman/fonttest/font-table.gle0000664000000000000000000000752511573225666021366 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! size 7.75 7 set font rm tlin = 0.6 xdel = 0.1 ydel = 0.1 pagewd = pagewidth()-2*xdel sub show_table f1$ f2$ top = pageheight()-tlin-ydel*2 dx=pagewd/21 dy=top/14 for j = 0 to 12 amove 0.5*dx+xdel (j+1/2)*dy+ydel set just cc hei 0.25 write (12-j)*2 next j for j = 0 to 13 amove 0+xdel (j+1)*dy+ydel aline pagewidth()-xdel (j+1)*dy+ydel next j for i = 0 to 19 amove (i+1)*dx+xdel ydel aline (i+1)*dx+xdel top+ydel amove (i+3/2)*dx+xdel 13.5*dy+ydel set just cc hei 0.25 font rm write i next i idx = 0 for j = 0 to 12 for i = 0 to 19 amove (i+1+0.5)*dx+xdel (12-j+0.5)*dy+ydel if idx <= 256 then set just cc hei 0.27 font f2$ begin text \char{\expr{idx}} end text idx = idx + 1 end if next i next j set just lc hei 0.35 font rm amove xdel pageheight()-tlin/2-ydel+0.1 write f1$+" ("+f2$+")" end sub id$ = arg$(1) name$ = "" fopen "fonts.csv" fi read until feof(fi) fread fi nr mid$ nm$ if mid$ = id$ then name$ = nm$ end if next fclose fi ! print name$+" ("+id$+")" show_table name$ id$ gle-graphics-4.2.4c/gle-refman/fonttest/Makefile.gcc0000664000000000000000000000752711447333220021021 0ustar rootroot######################################################################## # # # GLE - Graphics Layout Engine # # # # Modified BSD License # # # # Copyright (C) 2009 GLE. # # # # Redistribution and use in source and binary forms, with or without # # modification, are permitted provided that the following conditions # # are met: # # # # 1. Redistributions of source code must retain the above copyright # # notice, this list of conditions and the following disclaimer. # # # # 2. Redistributions in binary form must reproduce the above # # copyright notice, this list of conditions and the following # # disclaimer in the documentation and/or other materials provided with # # the distribution. # # # # 3. The name of the author may not be used to endorse or promote # # products derived from this software without specific prior written # # permission. # # # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR # # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY # # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE # # GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER # # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN # # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # # ######################################################################## FONTS = \ psagbo.pdf psagb.pdf psagdo.pdf psagd.pdf psbdi.pdf psbd.pdf psbl.pdf psbli.pdf \ pshbo.pdf pshb.pdf pscbo.pdf pscb.pdf psco.pdf psc.pdf pshnb.pdf pshnbo.pdf \ pshno.pdf pshn.pdf psho.pdf psh.pdf psncsbi.pdf psncsb.pdf psncsi.pdf \ psncsr.pdf pspbi.pdf pspb.pdf pspi.pdf pspr.pdf pssym.pdf pstbi.pdf \ pstb.pdf psti.pdf pstr.pdf pszcmi.pdf pszd.pdf rmb.pdf rmi.pdf rm.pdf \ ssb.pdf ssi.pdf ss.pdf texcmb.pdf texcmex.pdf texcmitt.pdf texcmmi.pdf \ texcmr.pdf texcmssb.pdf texcmssi.pdf texcmss.pdf texcmsy.pdf texcmti.pdf \ texcmtt.pdf ttb.pdf tti.pdf tt.pdf FONTS_EXTRA = \ plba.pdf plcc.pdf plcg.pdf plci.pdf plcr.pdf plcs.pdf pldr.pdf plge.pdf \ plgg.pdf plgi.pdf plsa.pdf plsg.pdf plsr.pdf plss.pdf plsym1.pdf plsym2.pdf \ plti.pdf pltr.pdf pshc.pdf pshcb.pdf pshcdo.pdf pshcbo.pdf COMPILE_EXTRA_FONTS= ifeq ($(HAVE_EXTRA_FONTS),1) COMPILE_EXTRA_FONTS=$(FONTS_EXTRA) endif ifeq ($(RUNBUILD),1) GLE = ../../build/bin/gle else GLE = gle endif all: $(FONTS) $(COMPILE_EXTRA_FONTS) extrafonts.tex %.pdf: font-table.gle $(GLE) -d pdf -o $*.pdf font-table.gle $* extrafonts.tex: ../../build/bin/glebtool -latexdef extrafonts.tex extrafonts $(HAVE_EXTRA_FONTS) clean: rm -f *.pdf extrafonts.tex gle-graphics-4.2.4c/gle-refman/fonttest/ncleanfonts.pl0000664000000000000000000000546511405447072021501 0ustar rootroot######################################################################## # # # GLE - Graphics Layout Engine # # # # Modified BSD License # # # # Copyright (C) 2009 GLE. # # # # Redistribution and use in source and binary forms, with or without # # modification, are permitted provided that the following conditions # # are met: # # # # 1. Redistributions of source code must retain the above copyright # # notice, this list of conditions and the following disclaimer. # # # # 2. Redistributions in binary form must reproduce the above # # copyright notice, this list of conditions and the following # # disclaimer in the documentation and/or other materials provided with # # the distribution. # # # # 3. The name of the author may not be used to endorse or promote # # products derived from this software without specific prior written # # permission. # # # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR # # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY # # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE # # GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER # # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN # # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # # ######################################################################## open(IN, "fonts.csv"); while ($line = ) { chop($line); if ($line =~ /^[0-9]+\,([^\,]+)\,/) { $id = $1; system("rm $id.gle $id.eps $id.pdf"); } } close(IN); gle-graphics-4.2.4c/gle-refman/fonttest/fonts.csv0000644000000000000000000001254611405447072020474 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 12,rm,"Roman" 12,rmb,"Roman Bold" 12,rmi,"Roman Italic" 12,ss,"San Serif" 12,ssb,"San Serif Bold" 12,ssi,"San Serif Italic" 12,tt,"Typewriter" 12,ttb,"Typewriter Bold" 12,tti,"Typewriter Italic" 12,texcmb,"\TeX Computer Modern Bold" 12,texcmex,"\TeX Computer Modern Extensible" 12,texcmitt,"\TeX Computer Modern Italic Typewriter" 12,texcmmi,"\TeX Computer Modern Maths Italic" 12,texcmr,"\TeX Computer Modern Roman" 12,texcmss,"\TeX Computer Modern Sans Serif" 12,texcmssb,"\TeX Computer Modern Sans Serif Bold" 12,texcmssi,"\TeX Computer Modern Sans Serif Italic" 12,texcmsy,"\TeX Computer Modern Symbol" 12,texcmti,"\TeX Computer Modern Text Italic" 12,texcmtt,"\TeX Computer Modern Typewriter Text" 12,plba,"Plotter Block Ascii" 12,plcc,"Plotter Complex Cartographic" 12,plcg,"Plotter Complex Greek" 12,plci,"Plotter Complex Italic" 12,plcr,"Plotter Complex Roman" 12,plcs,"Plotter Complex Script" 12,pldr,"Plotter Duplex Roman" 12,plge,"Plotter Gothic English" 12,plgg,"Plotter Gothic German" 12,plgi,"Plotter Gothic Italian" 12,plsa,"Plotter Simplex Ascii" 12,plsg,"Plotter Simplex Greek" 12,plsr,"Plotter Simplex Roman" 12,plss,"Plotter Simplex Script" 14,plsym1,"Plotter Symbols one" 14,plsym2,"Plotter Symbols two" 12,plti,"Plotter Triplex Italic" 12,pltr,"Plotter Triplex Roman" 12,psagb,"PostScript AvantGarde-Book" 12,psagbo,"PostScript AvantGarde-BookOblique" 12,psagd,"PostScript AvantGarde-Demi" 12,psagdo,"PostScript AvantGarde-DemiOblique" 12,psbd,"PostScript Bookman-Demi" 12,psbdi,"PostScript Bookman-DemiItalic" 12,psbli,"PostScript Bookman-LightItalic" 12,psc,"PostScript Courier" 12,pscb,"PostScript Courier-Bold" 12,pscbo,"PostScript Courier-BoldOblique" 12,psco,"PostScript Courier-Oblique" 12,psh,"PostScript Helvetica" 12,pshb,"PostScript Helvetica-Bold" 12,pshbo,"PostScript Helvetica-BoldOblique" 12,psho,"PostScript Helvetica-Oblique" 12,pshc,"PostScript Helvetica-Condensed" 12,pshcb,"PostScript Helvetica-Condensed-Bold" 12,pshcdo,"PostScript Helvetica-Condensed-BoldOblique" 12,pshn,"PostScript Helvetica-Narrow" 12,pshnb,"PostScript Helvetica-Narrow-Bold" 12,pshnbo,"PostScript Helvetica-Narrow-BoldOblique" 12,pshno,"PostScript Helvetica-NarrowOblique" 12,psncsb,"PostScript NewCenturySchlbk-Bold" 12,psncsbi,"PostScript NewCenturySchlbk-BoldItalic" 12,psncsi,"PostScript NewCenturySchlbk-Italic" 12,psncsr,"PostScript NewCenturySchlbk-Roman" 12,pspb,"PostScript Palatino-Bold" 12,pspbi,"PostScript Palatino-BoldItalic" 12,pspi,"PostScript Palatino-Italic" 12,pspr,"PostScript Palatino-Roman" 14,pssym,"PostScript Symbol" 12,pstb,"PostScript Times-Bold" 12,pstbi,"PostScript Times-BoldItalic" 12,psti,"PostScript Times-Italic" 12,pstr,"PostScript Times-Roman" 12,pszcmi,"PostScript ZapfChancery-MediumItalic" 12,pszd,"PostScript ZapfDingbats" gle-graphics-4.2.4c/gle-refman/fonttest/ndofonts.pl0000664000000000000000000000613011405447072021007 0ustar rootroot######################################################################## # # # GLE - Graphics Layout Engine # # # # Modified BSD License # # # # Copyright (C) 2009 GLE. # # # # Redistribution and use in source and binary forms, with or without # # modification, are permitted provided that the following conditions # # are met: # # # # 1. Redistributions of source code must retain the above copyright # # notice, this list of conditions and the following disclaimer. # # # # 2. Redistributions in binary form must reproduce the above # # copyright notice, this list of conditions and the following # # disclaimer in the documentation and/or other materials provided with # # the distribution. # # # # 3. The name of the author may not be used to endorse or promote # # products derived from this software without specific prior written # # permission. # # # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR # # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY # # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE # # GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER # # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN # # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # # ######################################################################## if ($ENV{"RUNBUILD"} == 1) { $gle = "../../build/bin/gle"; } else { $gle = "gle"; } open(IN, "Fonts.lis"); while ($line = ) { chop($line); if ($line =~ /^[0-9]+\s+(\S+)\s+(.+)$/) { $id = $1; $name = $2; if (!(-f "$id.pdf")) { open(OUT, ">$id.gle"); print OUT "size 7.75 7\n"; print OUT "include \"font-table.gle\"\n"; print OUT "\@show_table \"$name\" \"$id\"\n"; close(OUT); system("$gle -d pdf $id.gle"); } } } close(IN); gle-graphics-4.2.4c/gle-refman/gle-manual.tex0000644000000000000000000000675511653605210017524 0ustar rootroot%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % GLE - Graphics Layout Engine % % % % Modified BSD License % % % % Copyright (C) 2009 GLE. % % % % Redistribution and use in source and binary forms, with or without % % modification, are permitted provided that the following conditions % % are met: % % % % 1. Redistributions of source code must retain the above copyright % % notice, this list of conditions and the following disclaimer. % % % % 2. Redistributions in binary form must reproduce the above % % copyright notice, this list of conditions and the following % % disclaimer in the documentation and/or other materials provided with % % the distribution. % % % % 3. The name of the author may not be used to endorse or promote % % products derived from this software without specific prior written % % permission. % % % % THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR % % IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED % % WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE % % ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY % % DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL % % DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE % % GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS % % INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER % % IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR % % OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN % % IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \documentclass{book} \input{defs} \input{title/sm_special} \makeindex \begin{document} \input{title/title} \pagenumbering{arabic} \cleardoublepage \input{tutorial/tutorial} \input{primitives/cmds} \input{graph/graph} \input{key/key} \input{prog/prog} \input{advanced/advanced} \input{qgle/qgle} \input{utilities/surface} \input{utilities/letz} \input{utilities/fitz} \input{utilities/contour} \input{utilities/fitls} \input{utilities/manip} \input{appendix/appendix} \section{Font Tables} \input{fonttest/fonttab} \newpage \section{Predefined Colors} \label{colors:sec} \mbox{\input{appendix/fig/color_sample.inc}} \newpage \label{sortedcol:sec} \mbox{\input{appendix/fig/color_list_svg.inc}} \newpage \section{Wall Reference} \label{wallref:sec} \resizebox{!}{22cm}{\includegraphics{appendix/fig/wall}} \chapter{Index} \printindex \end{document} gle-graphics-4.2.4c/gle-refman/key/key.tex0000664000000000000000000003012211722434562017054 0ustar rootroot%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % GLE - Graphics Layout Engine % % % % Modified BSD License % % % % Copyright (C) 2009 GLE. % % % % Redistribution and use in source and binary forms, with or without % % modification, are permitted provided that the following conditions % % are met: % % % % 1. Redistributions of source code must retain the above copyright % % notice, this list of conditions and the following disclaimer. % % % % 2. Redistributions in binary form must reproduce the above % % copyright notice, this list of conditions and the following % % disclaimer in the documentation and/or other materials provided with % % the distribution. % % % % 3. The name of the author may not be used to endorse or promote % % products derived from this software without specific prior written % % permission. % % % % THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR % % IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED % % WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE % % ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY % % DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL % % DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE % % GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS % % INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER % % IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR % % OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN % % IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \chapter{The Key Module} \label{key:chap} \index{key (module)} The key module is used for drawing keys. The key can be either specified through a separate key block or directly in the graph block (by prefixing the key commands with the keyword ``key''). This chapter first discusses how to define the key using a key block. Section~\ref{kgrb:sec} shows how to include the key commands directly in a graph block. The key block usually comes directly after the graph block as follows: \preglecode{} \begin{Verbatim} begin graph ... end graph begin key position tr offset 0.2 0.2 text "Blue" marker circle fill blue text "Red" marker triangle fill red lstyle 2 text "Orange" marker square fill orange lstyle 3 end key \end{Verbatim} \postglecode{} \mbox{\input{key/fig/k_key.inc}} The key block consists of two parts: (a) global commands, and (b) the definitions of the entries. Global commands appear at the beginning of the key and define, e.g., the position of the key. In the example, ``position'' and ``offset'' are global commands. Multiple global commands are allowed on a given line. The entry definitions start after the global commands. All commands relevant to a given entry must appear on the same line. In the example, there are three entry definitions and each definition starts with the ``text'' command. Entries can be organized into columns using the ``separator'' command. There are two possible ways to set the position of a key: (a) the key can be positioned relative to the graph, and (b) it can be positioned at given coordinates. To position the key relative to the graph, use the commands ``position'' and (optionally) ``offset''. For example, \preglecode{} \begin{Verbatim} position tr offset 0.2 0.2 \end{Verbatim} \postglecode{} \noindent{}places the key at the top-right corner of the graph 0.2 cm from each side. To position the key at given coordinates use the ``justify'' and ``absolute'' commands. For example, \preglecode{} \begin{Verbatim} justify bc absolute 5 0.1 \end{Verbatim} \postglecode{} \noindent{}places the bottom-center of the key at position (5 cm, 0.1 cm). Fig.~\ref{keypos:fig} gives some examples of positioning the key. \begin{figure}[tb] \centering \mbox{\input{key/fig/keypos.inc}} \caption{\label{keypos:fig}Various positions for the key.} \end{figure} \section{Global Commands} Global commands appear at the start of the key block. They control the position of the key and various other properties of the key. Several global key commands may appear on one line in the script. \begin{commanddescription} \item[{\sf absolute} {\it x} {\it y}] \index{key module!absolute} Places the key at position $(x, y)$ on the figure. The anchor point of the key is specified with the ``justify'' command. \item[{\sf base} {\it h} or {\sf row} {\it h}] \index{key module!row} Sets the base scale of the entries. The sizes of all components are initialized based on this. E.g., to change the size of the filled box in an entry, use this command. \item[{\sf boxcolor} {\it c}] \index{key module!boxcolor} Set the background color of the key to $c$. \item[{\sf coldist} {\it d}] \index{key module!coldist} Sets the distance between columns. (To obtain a key with multiple columns, use the ``separator'' command.) \item[{\sf compact}] \index{key module!compact} Creates a more compact key by combining the ``line'' and ``marker'' fields into one field. The effect of this is shown in Fig.~\ref{grkey:fig}. \item[{\sf dist} {\it d}] \index{key module!dist} Sets the distance between the different components of an entry (the marker, the line, the fill, and the text). \item[{\sf hei} {\it h}] \index{key module!hei} Sets the height of the text in the entries of the key. If this command is not given, then the current height is used. (To set the current height, use ``set hei'', see page~\pageref{shei:cmd}.) \item[{\sf justify} {\it x}] \index{key module!justify} Sets the anchor point of the key. Possible values: tl, bl, tr, br, tc, bc, lc, rc, cc. These stand for top-left, bottom-left, top-right, bottom-right, top-center, bottom-center, left-center, right-center, and center. Use this command in combination with the ``absolute'' command. Fig.~\ref{keypos:fig} gives some examples. \item[{\sf llen} {\it x}] \index{key module!llen} Sets the length of the line in the entries. \item[{\sf lpos} {\it x}] \index{key module!lpos} Sets the vertical position of the line in the entries. (This is normally set automatically.) \item[{\sf margins} {\it x} {\it y}] \index{key module!margins} Sets the margins of the key block. (The space between the border and the entries.) \item[{\sf nobox}] \index{key module!nobox} Do not draw a border around the key. \item[{\sf off}] \index{key module!off} Disable this key. \item[{\sf offset} {\it x y}] \index{key module!offset} Specifies the distance in cm between the position specified with the ``position'' or ``pos'' command and the actual key. A negative offset places the key outside of the graph (Fig.~\ref{keypos:fig}). \item[{\sf position} {\it x} or {\sf pos} {\it x}] \index{key module!position} Specifies the position of the key on the graph. Possible values: tl, bl, tr, br, tc, bc, lc, rc, cc. These stand for top-left, bottom-left, top-right, bottom-right, top-center, bottom-center, left-center, right-center, and center. Optionally, the ``offset'' command can be combined with this command. Fig.~\ref{keypos:fig} gives some examples. \end{commanddescription} \section{Entry Definition Commands} Each entry in the key is represented by one line in the key block, and all commands for a given entry must appear on that line. The following commands can be used to define key entries. \begin{commanddescription} \item[{\sf color} {\it c}] \index{key module!color} Sets the color of the line and marker. The other components of the key are drawn in the default color. (To set the default color, use ``set color'', see page~\pageref{scol:cmd}.) \item[{\sf fill} {\it p}] \index{key module!fill} Sets the fill color or pattern. \item[{\sf line}] \index{key module!line} Shorthand for ``lstyle 1''. \item[{\sf lstyle} {\it s}] \index{key module!lstyle} Sets the line style. \item[{\sf lwidth}] \index{key module!lwidth} Sets the width of the line. \item[{\sf marker} {\it m}] \index{key module!marker} Sets the marker. \item[{\sf mscale} {\it x}] \index{key module!mscale} Sets the scale of the marker. \item[{\sf msize} {\it x}] \index{key module!msize} Sets the size of the marker. \item[{\sf pattern} {\it x}] \index{key module!pattern} Sets the filling pattern. Fig.~\ref{filpat:fig} shows examples of filling patterns. \item[{\sf separator} {\sf [lstyle {\it s}]} ] \index{key module!separator} Use this command to divide the key into multiple columns. If the ``lstyle'' option is given, then a line is drawn between the columns in the given style. Possible values are given with the description of the ``set lstyle'' command on page~\pageref{lstyle:cmd}. The ``separator'' command should be inserted between the key entries that should go in different columns. For example, \vspace{3mm} \preglecode{} \begin{Verbatim} begin key position bl line color red text "Red" line color green text "Green" line color blue text "Blue" separator line color orange text "Orange" line color purple text "Purple" line color black text "Black" end key \end{Verbatim} \postglecode{} \vspace{3mm} \noindent{}will result in the key shown in Fig.~\ref{multicolkey:fig}. \item[{\sf text} {\it s}] \index{key module!text} The text for the entry. \end{commanddescription} \begin{figure}[tb] \centering \mbox{\input{key/fig/multicolkey.inc}} \caption{\label{multicolkey:fig}Defining a key with multiple columns.} \end{figure} \section{Defining the Key in the Graph Block}\label{kgrb:sec} \begin{figure}[tb] \centering \mbox{\input{key/fig/grkey.inc}} \caption{\label{grkey:fig}Defining the key together with the graph block. This figure also illustrates the `mdist' option of the `marker' command.} \end{figure} It is also possible to define the key in the graph block itself. This is accomplished by prefixing global key commands with the keyword ``key''. The entries are in this case defined with the ``dn'' commands and the labels are set with the ``key'' option to these commands. The following presents an example: \preglecode{} \begin{Verbatim} begin graph title "Implicitly defined key" let d1 = sin(x) let d2 = cos(x) xaxis min 0 max 2*pi dticks pi/2 format "pi" key compact pos bl d1 line color red marker triangle mdist 1 key "Sine" d2 line color blue marker circle mdist 1 lstyle 2 key "Cosine" end graph \end{Verbatim} \postglecode{} \noindent{}Fig.~\ref{grkey:fig} shows the result. It is also possible to put a ``key separator'' line in between the ``dn'' lines create a key with multiple columns. For example: \preglecode{} \begin{Verbatim} d1 line color red key "Sine" key separator d2 line color blue key "Cosine" \end{Verbatim} \postglecode{} If you plot data from a data file, and the first row of the file contains column labels, then these labels will be used automatically to construct the key. However, if you prefer to construct the key manually instead by defining a key block, then you can override this behavior by making GLE ignore the row with the labels using the ``ignore'' option of the ``data'' command. E.g., \verb+data "myfile.csv" ignore 1+ (see p.~\pageref{opt:ignore}). Alternatively, you can accomplish the same by adding the command ``key off'' to the graph block to disable the automatically generated key. gle-graphics-4.2.4c/gle-refman/key/fig/Makefile.os20000664000000000000000000000535411405447072020460 0ustar rootroot######################################################################## # # # GLE - Graphics Layout Engine # # # # Modified BSD License # # # # Copyright (C) 2009 GLE. # # # # Redistribution and use in source and binary forms, with or without # # modification, are permitted provided that the following conditions # # are met: # # # # 1. Redistributions of source code must retain the above copyright # # notice, this list of conditions and the following disclaimer. # # # # 2. Redistributions in binary form must reproduce the above # # copyright notice, this list of conditions and the following # # disclaimer in the documentation and/or other materials provided with # # the distribution. # # # # 3. The name of the author may not be used to endorse or promote # # products derived from this software without specific prior written # # permission. # # # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR # # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY # # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE # # GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER # # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN # # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # # ######################################################################## EPSS = k_key.eps all: $(EPSS) %.eps: %.gle gle -d eps $< clean: rm -rf *.eps *.pdf *.inc gle-graphics-4.2.4c/gle-refman/key/fig/grkey.gle0000644000000000000000000000602311652767102020123 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! size 9 5 include "../../script/manual.gle" manual_graph_mode begin graph scale auto title "Implicitly defined key" yaxis dticks 0.5 xaxis min 0 max 2*pi dticks pi/2 format "pi" let d1 = sin(x) let d2 = cos(x) ! key compact pos bl key pos bl compact d1 line color red marker wtriangle mdist 1 key "Sine" d2 line color blue lstyle 2 marker wcircle mdist 1 key "Cosine" end graph gle-graphics-4.2.4c/gle-refman/key/fig/k_key.gle0000644000000000000000000000607311405447072020106 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! size 12 6 include "../../script/manual.gle" manual_graph_mode begin graph xaxis min 0 max 10 dticks 2.5 yaxis min 0 max 10 dticks 2.5 end graph begin key position tr offset 0.2 0.2 text "Blue" marker circle fill blue dist 0.25 llen 0.55 text "Red" marker triangle fill red lstyle 2 dist 0.25 llen 0.55 text "Green" marker square fill green lstyle 3 dist 0.25 llen 0.55 end key gle-graphics-4.2.4c/gle-refman/key/fig/Makefile.gcc0000664000000000000000000000557711405447072020520 0ustar rootroot######################################################################## # # # GLE - Graphics Layout Engine # # # # Modified BSD License # # # # Copyright (C) 2009 GLE. # # # # Redistribution and use in source and binary forms, with or without # # modification, are permitted provided that the following conditions # # are met: # # # # 1. Redistributions of source code must retain the above copyright # # notice, this list of conditions and the following disclaimer. # # # # 2. Redistributions in binary form must reproduce the above # # copyright notice, this list of conditions and the following # # disclaimer in the documentation and/or other materials provided with # # the distribution. # # # # 3. The name of the author may not be used to endorse or promote # # products derived from this software without specific prior written # # permission. # # # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR # # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY # # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE # # GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER # # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN # # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # # ######################################################################## EPSS = k_key.inc keypos.inc grkey.inc multicolkey.inc ifeq ($(RUNBUILD),1) GLE = ../../../build/bin/gle else GLE = gle endif all: $(EPSS) %.inc: %.gle $(GLE) -texincprefix key/fig/ -inc -d pdf $< clean: rm -rf *.eps *.pdf *.inc .gle gle-graphics-4.2.4c/gle-refman/key/fig/keypos.gle0000664000000000000000000000675211405447072020324 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! size 13 7.75 include "../../script/manual.gle" manual_graph_mode amove -0.5 1 begin graph size 11.75 7 title "Various key positions" axis min 0 max 1 let d1 = 0.5*sin(2*pi*x)+0.5 d1 line color red end graph amove xg(0) yg(0.5) aline xg(1) yg(0.5) begin key justify bc absolute (xg(xgmin)+xg(xgmax))/2 0.01 marker triangle color red text "\texttt{justify bc}" marker circle color blue text "\texttt{absolute pagewidth()/2 0.1}" end key begin key position tl marker triangle color red text "\texttt{position tl}" end key begin key position br offset 0.25 0.25 marker triangle color red text "\texttt{position br}" marker circle color blue text "\texttt{offset 0.25 0.25}" end key begin key position tr offset -0.1 0 marker triangle color red text "\texttt{position tr}" marker circle color blue text "\texttt{offset -0.1 0}" end key gle-graphics-4.2.4c/gle-refman/key/fig/multicolkey.gle0000664000000000000000000000571211405447072021346 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! size 4.3 1.5 include "../../script/manual.gle" manual_graph_mode begin key justify bl line color red text "Red" line color green text "Green" line color blue text "Blue" separator line color orange text "Orange" line color purple text "Purple" line color black text "Black" end key gle-graphics-4.2.4c/gle-refman/prog/prog.tex0000664000000000000000000004704011722434562017421 0ustar rootroot%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % GLE - Graphics Layout Engine % % % % Modified BSD License % % % % Copyright (C) 2009 GLE. % % % % Redistribution and use in source and binary forms, with or without % % modification, are permitted provided that the following conditions % % are met: % % % % 1. Redistributions of source code must retain the above copyright % % notice, this list of conditions and the following disclaimer. % % % % 2. Redistributions in binary form must reproduce the above % % copyright notice, this list of conditions and the following % % disclaimer in the documentation and/or other materials provided with % % the distribution. % % % % 3. The name of the author may not be used to endorse or promote % % products derived from this software without specific prior written % % permission. % % % % THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR % % IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED % % WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE % % ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY % % DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL % % DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE % % GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS % % INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER % % IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR % % OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN % % IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \chapter{Programming Facilities} \section{Expressions} \index{variables} \index{expressions} Wherever GLE is expecting a number it can be replaced with an expression. For example \preglecode{} \begin{Verbatim} rline 3 2 \end{Verbatim} \postglecode{} and \preglecode{} \begin{Verbatim} rline 9/3 sqrt(4) \end{Verbatim} \postglecode{} will produce the same result. An expression in GLE is delimited by white space, so it may not contain any spaces - `{\sf rline 3*3 2}' is valid but `{\sf rline 3 * 3 2}' will not work. Or `{\sf let d2 = 3+sin(d1)}' will work and `{\sf let d2= 3 + sin(d1)}' won't. Expressions may contain numbers, arithmetic operators ({\sf +}, {\sf -}, {\sf *}, {\sf /}, \verb+^+ (to the power of)), relational operators ($>$, $<$, $=>$, $<=$, $=$, $<>$) Boolean operators ({\sf and}, {\sf or}), variables and built-in functions. When GLE is expecting a colour or marker name (like `green' or `circle') it can be given a string variable, or an expression enclosed in braces. \section{Functions Inside Expressions} \begin{figure}[tb] \centering \mbox{\includegraphics{prog/fig/axisformat}} \caption{\label{axformat:fig}Examples of number formatting options.} \end{figure} \begin{commanddescription} \item[{\sf eval(str)}] \index{eval()} Evaluates the given string as if it was a GLE expression and returns the result. E.g., \texttt{eval("3+4")} returns 7. \item[{\sf arg(i), arg\$(i), nargs()}] \label{args:cmd} \index{arg()} \index{arg\$()} \index{nargs()} Provide access to the command line arguments that are passed to GLE. This is useful for generating multiple similar plots from a single script. arg(i) returns the i-the argument (as a number), arg\$(i) returns the i-the argument as a string, and nargs() returns the number of arguments. Only arguments that come after the name of the GLE script are counted. For example, if GLE is run as: \begin{Verbatim} gle -o graph-1.eps graph.gle "Title" 0.5 \end{Verbatim} \noindent{}then nargs() returns 2, arg\$(1) returns ``Title'', and arg(2) returns 0.5. The typical use of these functions is to create a script ``graph.gle'' as follows: \begin{Verbatim} size 10 10 begin graph title arg$(1) data arg$(2) d1 line color red end graph \end{Verbatim} \noindent{}and then creating different graphs by running GLE multiple times: \begin{Verbatim} gle -o beans.eps graph.gle "Beans" "beans.csv" gle -o peas.eps graph.gle "Peas" "peas.csv" \end{Verbatim} \noindent{}This will create two graphs: ``beans.eps'' and ``peas.eps''. The arg() functions can be used at all places in the script where an expression is expected. They can even be used in place of GLE commands in a graph block by means of the $\backslash{}$expr() function. For example, \begin{Verbatim} data "file.csv" d\expr{arg(1)} line color red \end{Verbatim} \noindent{}in the graph block will allow one to draw different datasets from a single file on multiple graphs. To do so, run: \begin{Verbatim} gle -o d1.eps graph.gle 1 gle -o d2.eps graph.gle 2 \end{Verbatim} \item[{\sf dataxvalue({\it ds},{\it i}), datayvalue({\it ds},{\it i}), ndata({\it ds})}] \index{dataxvalue}\label{dataxvalue} \index{datayvalue}\label{datayvalue} \index{ndata}\label{ndata} These functions can be used to retrieve the data values from a given dataset. They only work after data has been loaded by means of a graph block (Ch.~\ref{graph:chap}). A dataset is specified with a dataset identifier {\it ds} (a string of the form ``d$i$'', with $i$ an integer). The function `{\sf ndata}' returns the number of points in the dataset, and the functions `{\sf dataxvalue}' and `{\sf datayvalue}' return the $x$ and $y$ values of point {\it i}, where {\it i} ranges from 1 to {\sf ndata({\it ds})}. The following example shows how these functions can be used to compute the maximum of a dataset: \begin{Verbatim} sub dmaxy ds$ local crmax = datayvalue(ds$,1) for i = 2 to ndata(ds$) crmax = max(crmax, datayvalue(ds$,i)) next i return crmax end sub \end{Verbatim} This subroutine together with other subroutines for computing the minimum, mean, area, etc. of a dataset are defined in the include file `graphutil.gle', which is distributed together with GLE. \item[{\sf format\$({\it exp},{\it format})}] \index{format\$()} \label{formatnum:pg} Returns a string representation of {\it exp} formatted as specified in {\it format}. Basic formats: \begin{itemize} \item {\sf append {\it s}}: appends the string $s$ after the formatted number. This can be used to add a unit. \item {\sf dec}, {\sf hex [upper|lower]}, {\sf bin}: format as decimal, hexadecimal (upper-case or lower-case), or binary. \item {\sf fix} {\it places}: format with {\it places} decimal places. \item {\sf sci} {\it sig} {\sf [e,E,10]} {\sf [expdigits {\it num}]} {\sf [expsign]}: format in scientific notation with {\it sig} significant digits. Use `e', `E', or `10' as notation for the exponent. With the option {\sf expdigits} the number of digits in the exponent can be set and {\sf expsign} forces a sign in the exponent. \item {\sf eng} {\it digits} {\sf [e,E,10]} {\sf [expdigits {\it num}]} {\sf [expsign]} {\sf [num]}: format in engineering notation. The options are similar to `sci'. If the option `num' is given, then numeric notation is used instead of, e.g., $\mu$, m, k, M. \item {\sf round} {\it sig}: format a number with {\it sig} significant digits. \item {\sf frac}: format the number as a fraction. \item {\sf pi}: format the number as a fraction times $\pi$ (E.g., xaxis labels of Fig.~\ref{grscale:fig}). \end{itemize} Options for all formats: \begin{itemize} \item {\sf nozeroes}: remove unnecessary zeroes at the end of the number. \item {\sf sign}: also include a sign for positive numbers. \item {\sf pad {\it nb} [left] [right]}: pad the result with spaces from the left or right. \item {\sf prefix {\it nb}}: prefix the number with zeroes so that {\it nb} digits are obtained. \item {\sf prepend {\it s}}: prepends the string $s$ before the formatted number. \item {\sf min {\it val}}: use format for numbers $\ge$ {\it val}. \item {\sf max {\it val}}: use format for numbers $\le$ {\it val}. \end{itemize} Examples: \begin{itemize} \item format\$(3.1415, ``fix 2'') = 3.14 \item format\$(3756, ``round 2'') = 3800 \item format\$(3756, ``sci 2 10 expdigits 2'') = $3.8\cdot10^{03}$ \end{itemize} Several formats can be combined into one string: "sci 2 10 min 1e2 fix 0" uses scientific notations for numbers above $10^2$ and decimal notation for smaller numbers. See Fig.~\ref{axformat:fig} for more examples. \item[{\sf pagewidth(), pageheight()}] \index{pagewidth()} \index{pageheight()} These functions return the width and height of the output. These are the values set with the `\texttt{size}' command. \item[{\sf pointx(), pointy()}]\label{fct:pointxy} These functions return the x and y values of a named point. \preglecode{} \begin{Verbatim} begin box add 0.1 name mybox write "Hello" end box amove pointx(mybox.bc) pointy(mybox.bc) rline 0 -2 arrow end \end{Verbatim} \postglecode{} \item[{\sf twidth(str), theight(str), tdepth(str)}] \index{twidth()} \index{theight()} These functions return the width, depth and height of a string, if it was printed in the current font and size. \item[{\sf width(obj), height(obj)}]\label{fct:wdhi} \index{width()} \index{height()} These functions return the width and height of a named object. \item[{\sf xend(), yend()}] \index{xend()} \index{yend()} These functions return the end point of the last thing drawn. This is of particular interest when drawing text. \preglecode{} \begin{Verbatim} text abc set color blue text def \end{Verbatim} \postglecode{} This would draw the {\sf def} on top of the {\sf abc}. To draw the {\sf def} immediately following the {\sf abc} simply do the following (Note that absolute move is used, not relative move): \begin{minipage}[c]{8cm} \begin{Verbatim} set just left text abc set color gray20 amove xend() yend() text def \end{Verbatim} \end{minipage} \hfill \begin{minipage}[c]{7cm} \mbox{\includegraphics{primitives/fig/gc_xend}} \end{minipage} \item[{\sf xg(), yg()}] \index{xg()} \index{yg()} \index{functions} With these functions it is possible to move to a position on a graph using the graph's axis units. To draw a filled box on a graph, at position x=948, y=.004 measured on the graph axis: \preglecode{} \begin{Verbatim} begin graph xaxis min 100 max 2000 yaxis min -.01 max .01 ... end graph amove xg(948) yg(.004) box 2 2 fill gray10 \end{Verbatim} \postglecode{} \item[{\sf xpos(), ypos()}] \index{xpos()} \index{ypos()} Returns the current x and y points. \end{commanddescription} \noindent{}See Appendix~\ref{fct:sec} for an overview of all functions provided by GLE. \section{Using Variables} \index{variables} \index{string!variables} GLE has two types of variables, floating point and string. String variables always end with a dollar sign. A string variable contains text like ``Hello, this is text'', a floating point variable can only store numbers like 1234.234. \preglecode{} \begin{Verbatim} name$ = "Joe" height = 6.5 ! Height of person shoe = 0.05 ! shoe adds to height of person amove 1 1 box 0.2 height+shoe write name$ \end{Verbatim} \postglecode{} \section{String constants} \index{string!constants} String constants can be double quoted or single quoted. To include a double quote character in a double quoted string it should be doubled. The same holds for a single quoted string. Backslash characters are not interpreted in a special way by GLE's parser. (They are, however, interpreted by the built-in \TeX{} system used in the `{\sf write}' command.) Here are some examples: \preglecode{} \begin{Verbatim} print "Double quoted string" print 'Single quoted string' print "Between ""double quotes""" print "{\it hello}" print "Three double quotes """"""" print """" \end{Verbatim} \postglecode{} The result of these print commands is: \preglecode{} \begin{Verbatim} Double quoted string Single quoted string Between "double quotes" {\it hello} Three double quotes """ " \end{Verbatim} \postglecode{} \section{Programming Loops} \index{loops} \index{for} \index{next} The simple way to draw a 6 $\times$ 8 grid would be to use a whole mass of line commands: \preglecode{} \begin{Verbatim} amove 0 0 rline 0 8 amove 1 0 rline 1 8 ... amove 6 0 rline 6 8 \end{Verbatim} \postglecode{} this would be laborious to type in, and would become impossible to manage with several grids. By using a simple loop this can be avoided: \preglecode{} \begin{Verbatim} for x = 0 to 6 amove x 0 rline x 8 next x for y = 0 to 8 amove 0 y rline 6 y next y \end{Verbatim} \postglecode{} For-next loops, and all other control constructs, can also be used among others inside graph and key blocks. This is useful for drawing many similar functions (Fig.~\ref{fig:sqroot}). Besides for-next loops, GLE also supports while and until loops: \index{while} \preglecode{} \begin{Verbatim} i = 0 while i <= 10 print "Value: " i i = i + 1 next \end{Verbatim} \postglecode{} \index{until} \preglecode{} \begin{Verbatim} i = 0 until i > 10 print "Value: " i i = i + 1 next \end{Verbatim} \postglecode{} \section{If-then-else} \index{if} \index{then} \index{else} GLE supports if-then-else statements as follows: \preglecode{} \begin{Verbatim} if a < 1 then print a "is smaller than 1" else if a < 2 then print a "is smaller than 2 but larger than 1" else if a < 3 then print a "is smaller than 3 but larger than 2" else print a "is larger than 3" \end{Verbatim} \postglecode{} \noindent{}to create blocks of code for the `then' and `else' branches, instead use: \preglecode{} \begin{Verbatim} if a < 1 then print a "is smaller than 1" ... else ... end if \end{Verbatim} \postglecode{} More complex conditions can be created with the logic connectives `{\sf and}', `{\sf or}', and `{\sf not}' (note the parenthesis around the logical expressions): \preglecode{} \begin{Verbatim} if (a >= 1) and (a <= 10) then print "a is between 1 and 10" \end{Verbatim} \postglecode{} \section{Subroutines} \index{subroutines} To draw lots of grids all of different dimensions a subroutine can be defined and then used again and again: \preglecode{} \begin{Verbatim} sub grid nx ny local x, y begin origin for x = 0 to nx amove x 0 aline x ny next x for y = 0 to ny amove 0 y aline nx y next y end origin end sub amove 2 4 grid 6 8 amove 2 2 grid 9 5 \end{Verbatim} \postglecode{} Inside a subroutine, the keyword `\texttt{local}'\index{local} can be used to define local variables. E.g., `\texttt{local x = 3}', defines the local variable `x' and assigns it the value 3. It is also possible to define several local variables at once, as is shown in the `grid' example above. The keyword `\texttt{return}'\index{return} can be used to return a value from a subroutine. E.g., \preglecode{} \begin{Verbatim} sub gaussian x mu sigma return 1/(sigma*sqrt(2*pi))*exp(-((x-mu)^2)/(2*sigma^2)) end sub \end{Verbatim} \postglecode{} The main GLE file will be much easier to manage if subroutine definitions are moved into a separate file: \preglecode{} \begin{Verbatim} include "griddef.gle" amove 2 4 grid 2 4 amove 2 2 grid 9 5 \end{Verbatim} \postglecode{} More information about the ``include''\index{include} command can be found on page~\pageref{incl:cmnd}. \subsection{Default Arguments} Given the following subroutine definition: \preglecode{} \begin{Verbatim} sub mysub x y color$ fill$ default color "black" default fill "clear" print "Color: " color$ print "Fill: " fill$ end sub \end{Verbatim} \postglecode{} \noindent{}the following calls are valid: \preglecode{} \begin{Verbatim} mysub 1 0 mysub 1 0 red mysub 1 0 red green mysub 1 0 fill blue mysub 1 0 color red mysub 1 0 color red fill blue \end{Verbatim} \postglecode{} \section{Forward Declarations} A forward declaration of a subroutine is possible with: \preglecode{} \begin{Verbatim} declare sub mysub x y \end{Verbatim} \postglecode{} \noindent{}Forward declarations are required for declaring mutually recursive subroutines. \section{I/O Functions} \index{I/O-functions} \index{fopen} \index{fread} \index{freadln} \index{fclose} \index{fwrite} \index{fwriteln} \index{fgetline} \index{ftokenizer} The following I/O functions are available: \begin{commanddescription} \item[{\sf fopen {\it name} {\it file} [read$|$write]}] Open the file ``{\it name}'' for reading or for writing. The resulting file handle is stored in variable ``{\it file}'' and must be passed to all other I/O functions. \item[{\sf fclose {\it file}}] Close the given file. \item[{\sf fread {\it file} {\it x1} $\ldots$}] \item[{\sf freadln {\it file} {\it x1} $\ldots$}] Read entries from ``{\it file}'' into given arguments {\it x1} $\ldots$ \item[{\sf fwrite {\it file} {\it x1} $\ldots$}] Write given arguments to ``{\it file}''. \item[{\sf fwriteln {\it file} {\it x1} $\ldots$}] Write given arguments to ``{\it file}'' and start a new line. \item[{\sf fgetline {\it file} {\it line\$}}] Read an entire line from ``{\it file}'' and store it in the string ``{\it line\$}''. \item[{\sf ftokenizer {\it file} {\it commentchar spacetokens singletokens}}] Sets up the parameters of the tokenizer that controls the reading of ``{\it file}''. The {\it commentchar} parameter specifies the characters that are to be interpreted as line comments. It is a string, but each character of the string is assumed to be a separate comment character. The default is ``!''. If one would write ``!\%'', then both ``!'' and ``\%'' would be comment indicators. The {\sf fread} functions skip everything after a comment character to the end of the line. The {\it spacetokens} string represents the set of characters that are interpreted as spaces or delimiters. The default value is `` ,$\backslash$t$\backslash$r$\backslash$n'', i.e., space, comma, tab, carriage return, and newline are delimiters by default. Finally, the {\it singletokens} string identifies characters that should be returned as separate tokens, even if they are glued to other tokens. For example, if ``@'' would be a single char token, then the string ``me@myself.com'' would be returned in three tokens: ``me'', ``@'', and ``myself.com''. \end{commanddescription} For example: \preglecode{} \begin{Verbatim} fopen "file.dat" f1 read fopen "file.out" f2 write until feof(f1) fread f1 x y z aline x y rline x z fwriteln f2 x*2 "y =" y next fclose f1 fclose f2 \end{Verbatim} \postglecode{} \section{Device Dependent Control} \index{device control} A built in function which returns a string describing the device is available. \\e.g. \verb# DEVICE$() = "HARDCOPY, PS,"#\\ on the postscript driver. This can be used to use particular fonts etc on appropriate devices. E.g.: \preglecode{} \begin{Verbatim} if pos(device$(),"PS,",1)>0 then set font psncsb end if \end{Verbatim} \postglecode{} gle-graphics-4.2.4c/gle-refman/prog/fig/Makefile.gcc0000664000000000000000000000560111405447072020663 0ustar rootroot######################################################################## # # # GLE - Graphics Layout Engine # # # # Modified BSD License # # # # Copyright (C) 2009 GLE. # # # # Redistribution and use in source and binary forms, with or without # # modification, are permitted provided that the following conditions # # are met: # # # # 1. Redistributions of source code must retain the above copyright # # notice, this list of conditions and the following disclaimer. # # # # 2. Redistributions in binary form must reproduce the above # # copyright notice, this list of conditions and the following # # disclaimer in the documentation and/or other materials provided with # # the distribution. # # # # 3. The name of the author may not be used to endorse or promote # # products derived from this software without specific prior written # # permission. # # # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR # # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY # # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE # # GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER # # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN # # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # # ######################################################################## EPSS = axisformat.pdf ifeq ($(RUNBUILD),1) GLE = ../../../build/bin/gle else GLE = gle endif all: $(EPSS) %.inc: %.gle $(GLE) -texincprefix graph/fig/ -inc -d pdf $< %.pdf: %.gle $(GLE) -d pdf $< clean: rm -rf *.eps *.pdf *.inc .gle gle-graphics-4.2.4c/gle-refman/prog/fig/axisformat.gle0000664000000000000000000000770211405447105021337 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! size 13.5 7 include "../../script/manual.gle" manual_graph_mode set hei 0.29 sub demo_axis x0 x1 dt fmt1$ fmt2$ opt$ set just lc local xp = xpos() begin box round 0.1 add 0.1 write fmt2$ end box amove xp+4.5 ypos() set alabelscale 0.9 begin graph size 8 1 fullsize yaxis off x2axis off xaxis min x0 max x1 dticks dt \expr{opt$} format "\expr{fmt1$}" end graph end sub dy = 1; oy = 0.5 amove 0.2 0*dy+oy; demo_axis -1 1 1/4 "fix 2" "fix 2" "" amove 0.2 1*dy+oy; demo_axis -1 1 1/4 "frac" "frac" "" amove 0.2 2*dy+oy; demo_axis 0 2*pi pi/2 "pi" "pi" "" amove 0.2 3*dy+oy; demo_axis 1e-6 1e6 2 "sci 0 10 expdigits 2 expsign" "sci 0 10 expdigits 2 expsign" "log" amove 0.2 4*dy+oy; demo_axis 1e-6 1e6 2 "eng 3 append $\Omega$" "eng 3 append $\backslash{}$Omega" "log" amove 0.2 5*dy+oy; demo_axis 1e-6 1e6 2 "eng 3 10 num" "eng 3 10 num" "log" amove 0.2 6*dy+oy; demo_axis 0 2000 500 "eng 3 append g" "eng 3 append g" "" gle-graphics-4.2.4c/gle-refman/tutorial/tutorial.tex0000644000000000000000000003230711652767600021213 0ustar rootroot%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % GLE - Graphics Layout Engine % % % % Modified BSD License % % % % Copyright (C) 2009 GLE. % % % % Redistribution and use in source and binary forms, with or without % % modification, are permitted provided that the following conditions % % are met: % % % % 1. Redistributions of source code must retain the above copyright % % notice, this list of conditions and the following disclaimer. % % % % 2. Redistributions in binary form must reproduce the above % % copyright notice, this list of conditions and the following % % disclaimer in the documentation and/or other materials provided with % % the distribution. % % % % 3. The name of the author may not be used to endorse or promote % % products derived from this software without specific prior written % % permission. % % % % THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR % % IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED % % WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE % % ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY % % DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL % % DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE % % GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS % % INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER % % IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR % % OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN % % IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%\def\tb{\hspace*{1cm}\sf} %% sm \def\tb{\hspace*{0.0cm}\sf} \chapter{Tutorial} \label{tut:chap} \section{Installing GLE} This tutorial assumes that GLE is correctly installed. Information about how to install GLE can be found at the following URLs. The GLE distribution also includes a README with brief installation instructions. \begin{itemize} \item Installation on Windows: \url{http://www.gle-graphics.org/tut/windows.html}. \item Installation on Linux: \url{http://www.gle-graphics.org/tut/linux.html}. \item Installation on Mac OS/X: \url{http://www.gle-graphics.org/tut/mac.html}. \end{itemize} Feel free to post any questions or comments you might have about installing GLE on the GLE mailing list, which is available here: \begin{itemize} \item Mailing list: \url{https://lists.sourceforge.net/lists/listinfo/glx-general}. \end{itemize} \section{Running GLE} GLE is essentially a command line application; this tutorial will show you how to run it from the command prompt. GLE can also be run from your favorite text editor or from QGLE, GLE's graphical user interface. More information about running GLE from a text editor is given in the installation instructions. On Windows, you run GLE from the Windows Command Prompt. Normally the GLE installer should have added an entry labeled ``Command Prompt'' to GLE's folder in the start menu. On Unix-like operating systems, GLE runs from an X-terminal, such as ``konsole'' on Linux / KDE. Once you have opened the command prompt or terminal, try running GLE by entering the following command. \preglecode{} \begin{Verbatim} gle \end{Verbatim} \postglecode{} As a result, GLE displays the following message. \preglecode{} \begin{Verbatim} GLE version x.y.z Usage: gle [options] filename.gle More information: gle -help \end{Verbatim} \postglecode{} If this message does not appear and you see an error message instead, then GLE is not correctly installed. Refer to the installation instructions (Appendix \ref{install:app}) for more information. In the following, we will show how to construct a simple drawing with GLE. \section{Drawing a Line on a Page} Let's start with drawing a line on the page. GLE needs to know the size of the drawing you wish to make. This is accomplished with the {\sf size} command: \preglecode{} \begin{Verbatim} size 8 2 \end{Verbatim} \postglecode{} This specifies that the output will be 8cm wide and 2cm high. Next we define a ``current point'' by moving to somewhere on the page: \preglecode{} \begin{Verbatim} amove 0.25 0.25 \end{Verbatim} \postglecode{} The origin (0,0) is at the bottom left hand corner of the page. Suppose we wish to draw a line from this point 5 cm across and 1 cm up: \preglecode{} \begin{Verbatim} size 8 2 amove 0.25 0.25 rline 5 1 \end{Verbatim} \postglecode{} This is a {\bf relative} movement as the x and y values are given as distances from the current point, alternatively we could have used {\bf absolute} coordinates: \preglecode{} \begin{Verbatim} size 8 2 amove 0.25 0.25 aline 5.25 1.25 \end{Verbatim} \postglecode{} To draw some text on the page at the current point, use the {\sf write} command: \preglecode{} \begin{Verbatim} write "Hi there" \end{Verbatim} \postglecode{} Or, alternatively, you could include arbitrary \LaTeX{} expressions using the {\sf tex} command: \preglecode{} \begin{Verbatim} tex "$(1,\sqrt{2})$" \end{Verbatim} \postglecode{} Now we have constructed complete GLE script, which looks as follows: \preglecode{} \begin{Verbatim} size 8 2 box amove 0.25 0.25 rline 5 1 tex "$(1,\sqrt{2})$" \end{Verbatim} \postglecode{} \begin{figure} \centering \input{tutorial/fig/tut_simple.inc} \caption{\label{firstgle:fig}Result of your first GLE script.} \end{figure} Enter the above GLE script using a text editor and save it to disk (any editor that saves in UTF8 or ASCII format will work). The following assumes that you have saved the file under the name ``\texttt{test.gle}'' in the folder \texttt{C:$\backslash$GLE} on Windows, or \texttt{/home/john/gle} on a Unix-like operating system. Now open a command prompt and go to the folder where you saved the file. Then, run GLE on the file. On Windows, you do this as follows (\texttt{C:$\backslash$>} is the prompt): \preglecode{} \begin{Verbatim} C:\> cd C:\GLE C:\GLE> gle test.gle \end{Verbatim} \postglecode{} Or on Unix: \preglecode{} \begin{Verbatim} cd ~/gle gle test.gle \end{Verbatim} \postglecode{} GLE produces by default an Encapsulated PostScript (.eps) file: \preglecode{} \begin{Verbatim} GLE x.y.z [test.gle]-C-R-[test.eps] \end{Verbatim} \postglecode{} Try viewing the resulting ``\texttt{test.eps}'' with a PostScript viewer such as GhostView, and compare it to the output shown in Fig.~\ref{firstgle:fig}. You can also preview it with QGLE, GLE's graphical user interface. After you've started QGLE, enter the following command at the command prompt. \preglecode{} \begin{Verbatim} gle -p test.gle \end{Verbatim} \postglecode{} This will preview the output in the QGLE previewer window. GLE can also create PDF files. This is accomplished by setting the output device to ``pdf''. \preglecode{} \begin{Verbatim} gle -device pdf test.gle \end{Verbatim} \postglecode{} Try viewing the resulting ``\texttt{test.pdf}'' with Acrobat Reader or similar. Other output formats supported by GLE (eps, ps, pdf, svg, jpg, png, x11) can also be obtained with the -device command line option (which can be abbreviated to -d). For example, to create a JPEG bitmap file, one can use: \preglecode{} \begin{Verbatim} gle -d jpg -r 200 test.gle \end{Verbatim} \postglecode{} Help about the available command line options can be obtained with: \preglecode{} \begin{Verbatim} gle -help \end{Verbatim} \postglecode{} \noindent{}and to obtain more information about a particular option, use: \preglecode{} \begin{Verbatim} gle -help option \end{Verbatim} \postglecode{} The following command line options are supported by GLE: \preglecode{} \begin{Verbatim} -help Shows help about command line options -info Outputs software version, build date, GLE\_TOP, GLE\_BIN, etc. -verbosity Sets the verbosity level of GLE console output -device Selects output device(s) -cairo Use cairo output device -resolution Sets the resolution for bitmap and PDF output -fullpage Selects full page output -landscape Selects full page landscape output -output Specifies the name of the output file -nosave Don't write output file to disk (dry-run) -preview Previews the output with QGLE -gs Previews the output with GhostScript -version Selects a GLE version to run -compatibility Selects a GLE compatibility mode -calc Runs GLE in "calculator" mode -catcsv Pretty print a CSV file to standard output -tex Indicates that the script includes LaTeX expressions -inc Creates an .inc file with LaTeX code -texincprefix Adds the given subdirectory to the path in the .inc file -mkinittex Creates "inittex.ini" from "init.tex" -finddeps Automatically finds dependencies -nocolor Forces grayscale output -transparent Creates transparent output (with -d png) -noctrl-d Excludes CTRL-D from the PostScript output -nomaxpath Disables the upper-bound on the drawing path complexity -noligatures Disable the use of ligatures for 'fl' and 'fi' -gsoptions Specify additional options for GhostScript -safemode Disables reading/writing to the file system -allowread Allows reading from the given path -allowwrite Allows writing to the given path -keep Don't delete temporary files \end{Verbatim} \postglecode{} \section{Drawing a Simple Graph} This section shows how to go about drawing a simple graph. Enter the following data in a new file and save it as ``test.csv''. Note that you can export files in CSV (comma separated values) format with most spread sheet programs. \preglecode{} \begin{Verbatim} 1,2 2,6 3,2 4,5 5,9 \end{Verbatim} \postglecode{} \index{data} \index{files} The data is in two columns with a comma separating each column of numbers. The following commands will draw a simple line graph of the data. \preglegraph{} \begin{minipage}[c]{8cm} \begin{Verbatim} size 7 4 begin graph title "Simple Graph" xtitle "Time" ytitle "Output" data "test.csv" d1 line marker triangle color red end graph \end{Verbatim} \end{minipage} \hfill \begin{minipage}[c]{7cm} \mbox{\input{tutorial/fig/tut_graph.inc}} \end{minipage} \postglegraph{} The commands {\sf title}, {\sf xtitle}, and {\sf ytitle} specify the graph title and the axis titles. The command {\sf data} loads the data file and the {\sf d1} command specifies how the first curve on the graph should look like. These commands are discussed in detail in Chapter~\ref{graph:chap}. Possible values for the {\sf marker} option can be found on the GLE wall reference chart in Appendix~\ref{wallref:sec}. The axis ranges can be specified with ``{\sf xaxis min $v_0$ max $v_1$}'' and ``{\sf yaxis min $v_0$ max $v_1$}''. A smooth line can be drawn through the data points by changing the d1 command to: ``{\sf d1 line smooth}'' as in the following example. \preglegraph{} \begin{minipage}[c]{8cm} \begin{Verbatim} size 7 4 begin graph title "Smooth Graph" xtitle "Time" ytitle "Output" data "test.csv" yaxis min 0 max 10 d1 line smooth color red end graph \end{Verbatim} \end{minipage} \hfill \begin{minipage}[c]{7cm} \mbox{\input{tutorial/fig/tut_graph2.inc}} \end{minipage} \postglegraph{} Note that the order of the commands is not important, except that {\sf circle} is a parameter for the option {\sf marker} and therefore must come right after it. The same holds for line and smooth and color and blue in the example ``d1 marker circle line smooth color blue''. It is simple to change to a bar graph and include last year's measurements: \preglegraph{} \begin{minipage}[c]{8cm} \begin{Verbatim} size 7 4 begin graph title "Bar Graph" xtitle "Measurement" ytitle "Output" data "year-2000.csv" data "year-2001.csv" key pos tl bar d1,d2 fill red,blue end graph \end{Verbatim} \end{minipage} \hfill \begin{minipage}[c]{7cm} \mbox{\input{tutorial/fig/tut_graph3.inc}} \end{minipage} \postglegraph{} Adding min and max values on the axis commands is highly recommended because by default GLE won't start from the origin unless the data happens to be very close to zero. It is also difficult to compare graphs unless they all have the same axis ranges. More information about the graph module is available in Chapter~\ref{graph:chap}. gle-graphics-4.2.4c/gle-refman/tutorial/fig/Makefile.os20000664000000000000000000000543511405447072021533 0ustar rootroot######################################################################## # # # GLE - Graphics Layout Engine # # # # Modified BSD License # # # # Copyright (C) 2009 GLE. # # # # Redistribution and use in source and binary forms, with or without # # modification, are permitted provided that the following conditions # # are met: # # # # 1. Redistributions of source code must retain the above copyright # # notice, this list of conditions and the following disclaimer. # # # # 2. Redistributions in binary form must reproduce the above # # copyright notice, this list of conditions and the following # # disclaimer in the documentation and/or other materials provided with # # the distribution. # # # # 3. The name of the author may not be used to endorse or promote # # products derived from this software without specific prior written # # permission. # # # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR # # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY # # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE # # GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER # # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN # # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # # ######################################################################## EPSS = tut_simple.eps tut_graph.eps tut_graph2.eps tut_graph3.eps all: $(EPSS) %.eps: %.gle gle -d eps $< clean: rm -rf *.eps *.pdf *.inc gle-graphics-4.2.4c/gle-refman/tutorial/fig/tut3.dat0000644000000000000000000000527211405447072020757 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 1 2 1 2 6 5 3 - - 4 5 4 5 9 8 gle-graphics-4.2.4c/gle-refman/tutorial/fig/tut_simple.gle0000644000000000000000000000532011405447072022236 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! size 8 2 box amove 0.25 0.25 rline 5 1 tex "$(1,\sqrt{2})$" gle-graphics-4.2.4c/gle-refman/tutorial/fig/Makefile.gcc0000664000000000000000000000562011405447072021560 0ustar rootroot######################################################################## # # # GLE - Graphics Layout Engine # # # # Modified BSD License # # # # Copyright (C) 2009 GLE. # # # # Redistribution and use in source and binary forms, with or without # # modification, are permitted provided that the following conditions # # are met: # # # # 1. Redistributions of source code must retain the above copyright # # notice, this list of conditions and the following disclaimer. # # # # 2. Redistributions in binary form must reproduce the above # # copyright notice, this list of conditions and the following # # disclaimer in the documentation and/or other materials provided with # # the distribution. # # # # 3. The name of the author may not be used to endorse or promote # # products derived from this software without specific prior written # # permission. # # # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR # # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY # # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE # # GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER # # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN # # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # # ######################################################################## EPSS = tut_simple.inc tut_graph.inc tut_graph2.inc tut_graph3.inc ifeq ($(RUNBUILD),1) GLE = ../../../build/bin/gle else GLE = gle endif all: $(EPSS) %.inc: %.gle $(GLE) -texincprefix tutorial/fig/ -inc -d pdf $< clean: rm -rf *.eps *.pdf *.inc .gle gle-graphics-4.2.4c/gle-refman/tutorial/fig/tut_graph3.gle0000644000000000000000000000576111405447072022142 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! size 7 3.75 include "../../script/manual.gle" amove 0 0.2 manual_graph_mode begin graph vscale 0.66 title "Bar Graph" dist 0.2 xtitle "Measurement" ytitle "Output" data "year-2000.csv" data "year-2001.csv" key pos tl hei 0.3 yaxis dticks 2 xaxis dticks 1 nofirst nolast xticks off bar d1,d2 fill red,blue end graph gle-graphics-4.2.4c/gle-refman/tutorial/fig/year-2000.csv0000664000000000000000000000530711405447072021423 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Time, "Year 2000" 1, 2 2, 5 3, 2 4, 5 5, 9 gle-graphics-4.2.4c/gle-refman/tutorial/fig/tut_graph.gle0000644000000000000000000000564011405447072022053 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! size 7 3.75 include "../../script/manual.gle" amove 0 0.2 manual_graph_mode begin graph vscale 0.66 title "Simple Graph" dist 0.15 xtitle "Time" ytitle "Output" data "tut.dat" yaxis min 0 max 10 dticks 2 d1 line marker triangle color red end graph gle-graphics-4.2.4c/gle-refman/tutorial/fig/tut.dat0000644000000000000000000000524611405447072020675 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 1 2 2 6 3 2 4 5 5 9 gle-graphics-4.2.4c/gle-refman/tutorial/fig/year-2001.csv0000644000000000000000000000530711405447072021422 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Time, "Year 2001" 1, 1 2, 5 3, 6 4, 3 5, 9 gle-graphics-4.2.4c/gle-refman/tutorial/fig/tut_graph2.gle0000644000000000000000000000562711405447072022142 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! size 7 3.75 include "../../script/manual.gle" amove 0 0.2 manual_graph_mode begin graph vscale 0.66 title "Smooth Graph" dist 0.15 xtitle "Time" ytitle "Output" data "tut.dat" yaxis min 0 max 10 dticks 2 d1 line smooth color red end graph gle-graphics-4.2.4c/gle-refman/script/manual.gle0000664000000000000000000000572411405447072020234 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! sub manual_graph_mode set font psh set texlabels 1 titlescale 1 atitlescale 0.9 alabelscale 0.75 ticksscale 0.2 set hei 0.3633 set texscale fixed set lstyle 1 set lwidth 0.02 set color black end sub sub manual_std_mode set font psh set hei 0.3633 set texscale fixed set color black end sub gle-graphics-4.2.4c/gle-refman/qgle/screenshot/qgle-windows1.png0000664000000000000000000045516311447333240023301 0ustar rootroot‰PNG  IHDRÊ—­sRGB®Îé pHYs  šœtIMEÚ /†àÛ†tEXtCommentCreated with GIMPW IDATxÚìÝwxUÛàg¶o6½w PzPª¢‚ØDQ@DDÅ}í ¾ŠÒ è«¢$t)R”^ „Ò{Ý$Û¦| ¬›¾I6!ß}qqÍÎΞsæ™’ó윙eA h{$6@€„ ° a$lPB­£¨°ÀòåŒåÇÛúfÞ]–/]ÝÜ$l#¦jc†ôB(à7e_ó Y¶9.Ø×Åòખ¶6€Fdk÷ÝNDÇ#p‡«4p Í,„cYóÑ$\3–C΀„  )ÙÚˆÈHÕD:#/¡æÇU;¦FDö@΀„  )X¾¾îé-«c6~. wa†‰šúÂèé¯ ¤ÐÎ6®ù [ý‡´kŒ ˆ´‚IKb÷ ­™×&wã8ÖÚ¿a óéÖ«lý^y „ˆþŠÍ?›T‚¦¶5ƒ{úȈmf!ßïŠ ò÷ª9ÿèÙø­ïŽÇ!ÐÞá ´žCŠÙÚ0iO_é×L¼Z𦳠¢8¢|’H>.Îò\ž¼x¦ËÉ´“­<ºráC]kÎüä·64fé‰H[i²m¬Z.öÿ\)8—'“J†öðèè䨖—ëÙK©¥ÅæŠÉƒŸ›zToo•„aJ+MÉ9å»NgÕ3_,ï¹ls›;ùØîîéí¢bˆ²‹õGâò’sÊ-cnª‘åÇåI,²>ã#ý"‚]³´¿N%"™T²àÁP¹L²õŸôËi¥¾nêQ½}Ü”*…ÄÈòYEºƒs³ uUÒ7kµ–W{YQâÂD4¢—׈^^Dôþ/qV®~µmÑ¢û’‰åj݇M,_®gíU2#+#"•BRRa´WÉ* œÞX3acoÉHØàvÓàu€0¢\"-ýuˆúô!bÈò)z‚@Ä¥•¤™8Ó-¹° Ô³w½8Ôß¡{ç1ý|vκ;̃ˆ¶˨ЙÌË êæQ¡guFÎÑN>ª··¶Ò{ýß;µîó0²|a™‘åxŽã§êèmÏñB~©ÁÍQqW˜»³F¾éH*Màê àx!·Dïh'õwÜ~"£žùÕÚÜÙ×á‘aADTVi p·{dXÐOS’²µæ…wóÐêX–4*Ùè¾¾‰YeEZ£•¡¸\ììm/“0×Å×A.“LÜ•´ŽœÔr_Wu‘ÖPR!¸;*ƒ½ì}†©—o‹·LBª•Y×Ëú‹Ê,¨ôs·#¢Ò c¹Ž5ï{Ö¬~µmÑ Ï›ªßæ7°Jãê (ÒídDT¬5:ÚÉr‹õ%ZC-‡‹+lHØZ%a '2ße0бcäqwíK| ñÀ-é§Fõõêë+N¼sðBÅÏèàeäeÿĈŽR s:¡0!£ÔòSÙEºov]#¢cBüÝítu?Ÿôï•«’rãš Ç0äeßÑÛ^ Z»3!§Hçå¢~q|×°@'wGen±ÎI#'¢.çÿy6‹ˆ¼\Ô7˜:æ‹Ì7† éáIDéùëw'ѳ£;xh†ôð´lmn‰~íŽWGå܉¡ Cþnvù%z+C‘”UVVir´“‡ø:\H. p$¢Ë©¥#GDIÙÚ5˜x"r¶W¼2©›J! òÔ\J-©ÙÔú_Ö_ÔÚ ï>ÑK ȱ+ùæ[³ú–Û¢¥Ífâxcm·¥¥äVYÞÍQYPf7nv±¾Ú¥H‹Ã 6€VIØ<ˆÄ$F-£©Ã¥•®ÜÁŒêËL§^~ƒŒÌ¤[•°•”µ7/•”Å6h+üú؈N•¬¤Â¸ãdzµ¶]I-1±œ8áïnçí¢²\àbrQ¥þF™>®j"bˆf«ò`_WUVAEr¶6ÄÏqpÏîœ2 *Ï%eq<Õ5ÿFžsóV.±ð+i¥bcâÓJ<4¾nU²»Ë©%&–Ë/¾‘(d’ºâ\k(.$ ééÕ-ÐébraG":›X(¾%!aâ]ÁÞövJÃÜ(D£”rµ5µþ—ÖUóãÖ¬¾å¶hi,[ËG‘‘åYŽ7±<±,obùº–ä8 6[tOúµ(†H¼¤¡c©C8Ÿ¯'ª‘°ýv™ÖŸ;õPxk l Gâr^Ê­9ßI£'T ©B.©4Tê&0‚ØZþæUËÆ—ëYóKq^2 *-KÐ9–ç7ìOÐÅ£ƒ—&Ðþg°KÏ`—•ÑWÒò+ꚣL^¨«›˜ZSi`-_ò‚PWœk řĂ!=½Bü•rii…ñZV©¸ÒôÐð‚S\iâ„@  Uk¯ÖTAXžWÉ¥ÕÞµ¦¨ZVÜŠÕ·Ü-ÍÄòµ>ø1ØKã¬Qä•\$P^©ÁÙ^n0©Ró*jKØð;lHØl¡Áë%D7§‹õ‚V[Ë2–Ê Æ‰ÈÖOh´_Ûƒ=œT£ûùQvQ¥«ÝäÁAëvÄ[ާ pÞw6‹ˆBˆ(«PW×u¤´Ür"’0ÌŽéIYeD$•0]œ’²´Ç{ºÛº˜MDö*Ù;Oô!"WuJ޶®ùÕÊÏ,¨ ò²õwÞw6‹ õw&¢Œü ë¯q5ŠŒü 1÷GúѹÄB–½±ŒŸ›º³ãdz€‡fÞƒÝë©NoäT ©£œãø çjï6XÏ  £1–…7aõ[6aãx½±ú=lnŽJWEn‰ÎÍA™ž_Áy¹¨òJôîŽÊüR]Íû 1$ @+%l—‰¦Õý®]'¢$q:µ8µƒK‡[ÒOÚëWGWóË/¶Æ1 M,—IN'ÄK]4-"ÄÏ12Ôão‹«O^.ê7§E‘³½‚ˆŽÄf×õh„ô’Ä̲Î~ŽÏ Í-Öñ¼àᤒË$K~8Ãqüœ‰ÝÊu¦âr£XŽ˜"Ö3¿Zù{Og̼?4ÐSóæ´{¥ ОÓÖ<çÚPˆ§ Æ tPˉèÔÕ|óÇs‹u¾nvCý»ø;:Ø)ê¯.)«¬{Ë î^^.ê /ûjï6XTn±ÎÇÍnDoßn\x^ÛÖ„ÕoÙ„åj^aÓ9Žœ5ŠëyåIÙåDd`y?75Ç zc-Wä0$ @+%lg‰:¹Öö®›ÛP s#a³“ÛõèKú©.J¥åJìãäåP®3ýv8¹BÏþ~ôú£#:¿+ðÒõâ²ëøóL†‡“:¢“«VgÚ6óÄ•*Ï‹çù*$\s9ª@Ÿ7O'•‰å3 *.§–”Wš8Ž?v9·££«ša˜Übݑ؜«i%DT×üjåÇ¥­‰¾Õ? ÀCCD)ÙÚݧүX,Y³1Õ^Ö qâT|Þ¸È@†¡¬ÂÊô¼róÿ¼öèˆÎ>nv ìß?ÿ¡žõT·ùp²²K —½³FñÃÞkÏÝjùnƒEm:”rà]>¾~=Ã#>ùäSóüŸ~ú_D¯Þž^ÞÝ{ô\½z ÕúXëÅ´¨ÑcˆÈ×Ï_¼ WWQ­O†@§Õjùõ×°°P‰DBDŸþÅ–ß~ûø£»v횘˜øÊ+ †yõÕ¹¹¹ó_yåí·—Lœ0¡   '7×ÊòùåçiÓ9î¬R©çÔUÔéÓ§£FIK½®Ñh°] ÜÑBúQeeeÇŽ7ýú Æ/–/‰ÞND¾¾¾ÿùÏ; _[ôê« ŠŠŠ8Žåïïïïïo}-.ÎÎDäééiNØê*J¥VwîÜY̰Àm÷®] …|ÿþKÞ~ûêÕ«ÁÁÁ‰‰Iååå÷o^†çy½^o2™ºtéÒ¯_¿û¢F=zÌ許cÇ69³ª«¨Ý»Ÿ8~ Û°PPPFr%þÊ’·ß¹ï¾ûx'¢èm8;;Wù{&“1 ³c{ÌÁ¿þ:pàÀüWlÛýõ×놱\Œçkê•J¥5‹Âæ€Ö‡AÐÌyé¥äääý„tî¬Ñh222ƒ«3™L6jäÈ>ü𫯾ücÛ6žçˆ¨  P,çò•˵¦gDd~r‰9¬V¶ a¨Eç·þíúo•J傯,xuÁ¦Í›ÓÓÓSRR~ÿýÏ>û/?~ݺ¯¯]»–rýú®]»ü%I§N¼¼¼–.[–––~àÀÁ•+WÕ,Üßߟa˜»vÕUÅ]º9ð.N‡-HØþõÜs3÷íߟ––>oîÜ·—¼½rÅÊ‘‡¾jõjooo"²··ß¹k×ÈQ÷Ý}÷ øø«ß}û-I¥Ò¯×­=}útäÀŸþùë¯/ªY²‡‡ÇÛo/Y²äí°°n]ºv­«("Òët‰‰‰¸Ú­†Q€V0iIŒ„‘Ѻ¹‘ˆ@ËyîËDÄ üÖwÇ#í®°´QxJd;Pígþ_4b š´$Ah/>~´“åË.]»!&€„­ýSµ1Cz!Ðí:rAhM·SŸaÊ ¿æ²lsÜkSz´©r‚}]Äé×:OD=Òû- akÇÙÚ}w‡ÇáfwhØíÔg¨4p 5÷É ˶µrÌÛHìæ½ñóŦa×$lí2[Ù©Ü™ ›ÎÈKˆov@¸¶VNµm4"²Çâ_âÞ¸ö^@ÂÖþ°õ>EúÀ–Õ1?„†O ÃDM}aôôWR€;¹óÐ6ÎF‰V*§ÖmdM°AòàÿEîZÿ—d;~Znå±-ž_Wšú2 6ôÊ!DôWlþÙ¤’;³1wN¥ÐŽÜVC"œŒØf„mkåÔÜFƒû„þßæø­=ñÌ@Âv{p9Ž%¢aþÒž¾Ò?®™xµàLgDqDù$‘("|\œå¹•Ph4ÝØ²‚Pg'¾´ÒT¡c›ÿç\.“zÚýu1Ï\B=•¶4ËÆü°/¥%еfyë#0¸»‡˜­ÕüTËUz ‰+…c [s6¹­úËQ+¤žÎÊ"­Q«c[ŽF)u±—‘„¨Pk$"wG¥ƒZÆ0d(æ* 6@ÂvÛbùÎP Ñb¢{®˜´D¯máärŠ#ºJ¤ßçSŠ´©Eô¿‹É'3—JIƒÂ-1 «G€‡ ¿IKÌÒQg_‡©C<ìú†¸üs%Ÿˆúvv³µrÇð‚@D2©¤³½ÞÈš‡Âs_×V>qµàäÕÂæ·¶“§F*aâ3JÍɤ̘þÞaN&–?—w&±èÆ’>öƒ»{z»¨¢ìbý‘¸¼äœrñ­·¦õ ¢£—ò½]TA^ö¹%º?Že„ø: êæ!“JN_+îJ•Bbdù¬"ÝÁ‹¹Y…:ËŽËsuPtõs4VkyÕuŒìêvW˜‡B&¹’^Z¬5÷"¢÷‰û÷OïͰ×ßZw»AÝÜâÓËBkn¬ªÔRßήcúù—WnO ¢ù„jT²Ÿ^OÉ-ÒÝsXOÏŒ‚ÊØë%6Yæû}Éæ•²~ïÚ¾íwœàN0nâƒæéÔë×Ïœ9ŸŸ_ë’R©ÔÕÍ­oŸ¾‚‚lØhGL,×üÕá8¶Ár¼\TF–רdy¥†&”cbùr=k¯’Y©’’ £½JVaàôÆš ‹. a»S¾! #Ê%ÒÑ_‡¨O"†,Ÿ]$D QZIš‰3á뜶©{'"º’^v5½Tœs5½4>½,,Щ{ Ó‘¸\"êÕÑ…ˆ’²µâKór)µÊ]LBÝÃä ëìc_Pj((Õ›ç êæQ¡g9NШd£ûú&f•i}DDe•&A w»G†ýt0%)[kþà]aî¥F C~nv߬VH+ ¬F%ÔÍ#)[›’SNDÓ‡uô¶çx!¿Ôàæ¨¸+ÌÝY#ßt$µ®Æ˜WÓI-÷uUi %‚»£2ØËÞg˜zù¶xË?œƒ»yhu,[µåÕŠíä<ª·¸"Á^öݤ5Os¥õ´V!—Lè¯Õ±ÑÇÓCº×Ü"-Qi5×sˉÈÅ^¡”I”r‰F%#"?7ubV™Ÿ›Z\ÀVˈmWªQ;ØÏÌÄ9no¾ýÚ<•õÏ?GGŒ¸/¨cG©T*ð¼  ¬‰Aør­677矎ʕ __[õÚUÂÆó¦fß3Ær –Ãs¼åå2‰ÞÀ6¶½UÊWE‘Öèh'#¢b­ÑÑN–[¬/Ñj-]2@Âv§$láDæû :vŒ<î®}ÉÁÁƒ$ÀÙ¡mrsPQfA¥åÊ(¨ truPˆ3Ý”D”’s£üÀÝ}:»‰Kî:•yìʯf빯)ª¯oTßì^È9x!§ MeˆB|Î'[Ö’_ª_»#ÁÕQ9wb(ÿ›]~‰~HO"JϯX¿;‘ˆžÝ9ÀC3¤‡gBF©ùƒiyßíMÝÏïînŽvò÷'§ä–¿1µ‡L* ô°KÌ, ö¶ïèm/­Ý™S¤órQ¿8¾kX “»£2·XWkcÌHÊÖ~ük¬ÁÄ‘³½â•IÝT i§Æ2ÅÍ-©¥åÕŠÐÕˆ2 +¿ÞyˆžâëfWíð+­¿µcú;kßÿ™X®3ÕÜX-TiµÍ—SX©3pj¥Ô×U¥TH‰È`âüÝíxŽ÷w·#¢ë9å¶Z†ãxóJá¨Ëž;D éÚ•ã8Žeyžçy^xƒÁ N3 ãéé¼gçΧŸq'&lo4Ú`Hd]å¸:(¼œU CR SÁñ*…4Ø[#”[¢¿Â³²œ”Ü #Ë»9* ÊŒD䤑gëÍÃ:j–ƒ. a»S6"q—ZFS‡K+]¹ƒÕ—™N½ü™IHØÚ¸j·$ ‚xëSëE•‚RCz~E€‡†ˆx‹òuß×TRnÔÞLJʵ.öü¸O²f{-O%ñw·³WË/§–X~ürj‰‰åòo¦ ™„ãxW5]I+5±ŧ•xh|ÝÔ–¼–YÆq|Iùo3ËL_®g5 …ôßB¢Ùãª<7Å×U•UPQkcÌ0ñ®À`o{;¥Œ¹9(O£”6ØòjÅz»¨,WärZi-¹“ ÔßZ';Y¯N®‡.æ$f–ÕljÍÀÚ¤Ò¬‚ŠšôznyX “Ÿ»Z!Õ¹¸ë%=‚œÝ•*…T(%GËr¼M–±Œ$Žn€:³–íÉó¼xίK·îÝ/ÆÆÚ°ÿÐŽ°l-C ß¡bë*ÇÓIe0ñ,Ç—ëX–Ä{ÂeR‰§“ªfºUO9Dddy–ãM,OD,Ë›X¾®%k}J$¶öy’jèwT"ñ¯c©C8Ÿ¯'ª‘°ýv™ÖŸ;õPxº½~˜åvRPfðvQ{¹¨,7›šˆ Êôâ̼b½Ÿ»] —F|¹ÿ|ÖþóYKŸíGDooá­íÒS=^]w²þBœÌ—}ê*Y|™YPäeêï¼ïl êïLDù5—4¯ËÍ·ºy½1-·œˆ$ ³ãDzRVI%L×§¤,-Çñõ7ÆÏÍŽˆ]ÈÙq2=ÀC3ïÁîu5µÚËjÅfê=5¡þNÎeCÝkž|C­u÷&"¥\ZåD,•Ȥ7Êi‰J9ޝ¹AÅe<42)³ÿ\VJvõëâFDÉÙÚ£Im´L­êÇóüÏ?ÿüàƒ´hÿ¡=%l¯7ÖrS™‡“Êß]Í0LÕè •e†Z­:ÊIÍ+OÍ+'¢þ]ÜLWVI§ ëKüj+ÇÍQéê È-ѹ9(Óó+"/U^‰ÞÝQ™_ª«uh%ºd€„íNIØ.M«û];»NDI7ÎGÅ©\:àìÐ6<ŸèìíðÜØ®y%:"òtVQz~ÅsYâV;—ÓÑÇ¡W'·‰wŽìí[¤5ˆOz ªÏ®70`ÜÀsÉóW7OíáÕ«£«ùå[ãÛN'ÂÏÝnßÙÌj;Rµ‡gˆ/÷žÎ˜yh §æÍi .öJA =§3j.)ðU6A|‹8ŽOH/IÌ,ëìçøü¸ÐÜbÏ N*¹L²ä‡3ö*YýÉ-ÖùºÙ ÷îâïè`§¨§©–/k{èböã#;yÛ¿ñH8CŒ9ì5Ë©§µ»N¦ï:ùﯫ}þÂ@"úãïÔC³k ¬M*­õxOÍ-7šx…\"fV9…••ÖN)#¢Ä¬Rñ#6Y¦®½åÖòóóËÌÌÄ9Úr¶öÒœ97n<|äÈgŸ~‚„ˆL,Wë-?75Ç ¦ªkªI|\ÕéUGÐͧ;Ö¥ÎÈò‚@Æz/èÕUŽÞÈq¼à¬Q\Ï+OÊ.'"Ë‹-ÔùÚ®ÔaH$ a»c¶³DˆÜˆjý.ÈÍm¨„¹‘°ÙÉíúôÇÙÐ? IDAT¡Ínè¯~¿4<§owOgµ\&!¢„ŒÒu;â¦ÏòßíºÚ?Ôc`˜—Ÿ‡ÆÏÝNgà’²Ê.§–œŠ¯ó—»,ç»8(]”ÍùsèÄñÂåëEÕ>Ëó|Õ‡aðÇÇ¥­‰¾Õ?@•—’­Ý}*ýJZIÍòæß$àø›ùÚ¿×¾ÖÄ\ŽêÐ'ÄÍÓIebùÌ‚ŠË©%啦È0ú³ñÏkŽèìãfÇ0Ìú]ñóêYWS-_Ö\ÇSñyö*Ùˆ>~¥ìBrQQ™!ª¿¿‰«½œºZ[k´ÍŸjÍJ9ŽRr´]œ¢”¬2–ã¯çh»up!¢k7’1›,S×ÞÒh¯¿N÷ÜCQQ69Ö­AÏÖ^|é¥þùgîÜ911Û,xõ“O–1M*êöº‡­ö;Áâ3Ê‚½ì%’*3 &.%§¢¶ÇèslÝw”‰®ejCü³´úú¶ÚËÉ,¬4˜8^ Â›÷.]/É)ÒQa™A¨­tÉ AL£FBÃ-1iIŒ·»sýˬž7tÑs½äŸ— óg2K¶˜¼Ó®§‰¾¥ž§WUæ%Ïî²¾³SñöÄ.#Cß[slMèÜÿ °m_xG·Y÷w3±ÜÒ_ÏgU¶†ÍžÐ].•,ÿ=¶ 6F£’}òÜ]D´áÏ„ãWrm¸Ž2©D­ŠÏk‘0̼I=Cüœ®çh—m:ßrm…J[så”H ­›Yÿ§¶oû½úcý~ý•¢Ù³©gÏz>k2™–-[¶jÕªeË–]¾|™eY“É´dÉggg"ŠŽŽ>þüÚµk‘³Á-·áۯͿövÍêEo,æ8ŽçùžþÜùóÑÛ¶9;;åääNž<¹gÏžŸ,[*>.òÇ7Îzþ…úK~îËDÄ |ƒý‡v¤S wF^Y3 IŒ>tP›*' ¨SÍù9%[ßcnt‚vÁšo_¢‰Ò³¹¾¾²Y™2µÔÅDt„ˆèzê*cEþš2²—‘@'3?L(HÁ×9íÁ¹kù[$?4´ã̱aý|¶ùODz•„ô’ë¹Ú6ò¥ eczwv7°q¼ŸVÜœÖ\GJöÁ33KËul —½§³Z(úØuÆá–TÚnö†¡iÓèhõjÚ¸‘æÏ'ŸZ”Ëå‹/^µj•R©üàƒˆhóæÍ ,X¿~=M˜0a„ k×®ÅÚ¬¨¨¨÷Þ{ÏÉÉIxçÍ›7=z´åúí…‰ålp™‘´µrp… °Ý) ›T*ã8ö\..÷Æý¬ 7¿£×R]»ñë\EDEÕmÙ®“©»N¦¶µVí<‘Ú6ãë¦ñ÷°/*Óo9œœW\iÛuÔéMWÓK:x9hT2‹K)Úu2õjzI‹¶*mg{‹JE3fÐ;ïÐÚµôöÛÄÔ7Llüøñ扅 â|íÅĉÅ‹iâKggç±cÇ Mz–àmöÃÙ6ÆHÚZ9è’¶;%a‹?ëDÌZŽc,J"•öý4Îp[úýHÒïG’Z¨ð ÿé¯çZynI¥mËÒwßÑ¥K4o7¸xFFF§Nˆ(33ÓÍÍ ñôÚ÷ €ãÉW´ÚZ9è’¶Ûå$ÕÐ÷jLì8`¢ h[öì¡­[éé§iæL+?±zõêW_}U„×^{múôé! ÿЮ™X®ùW´q(c[*]2@Âv›À·/p§“ËiÍšúÇ@V3uêÔ1cÆètºéÓ§Ï›7ˆ V­Z%¾ûî»ïQTTTdd$¢ è?´‡„·Ñ½gm«ôñ ÛmBo4"pG»÷ÞÆ~¢ÿþçÎUPêîî¾dÉ"ÿhS–~ôúõHJͰAÇW©nkå HØn⃰×΀P@û5óËã@­ü|¼{†GÈ ©TZÿ’§N4â8úzî@Ķ}™õÕI"â\v‹D!€Û‰N§ëСùùùýþûï´k¸Â·µZššŠ86hm6¸·Ðs€öC"°¶Û•`Ó§O{xz•——›'„Ö"Ö¨×ë[´êÖ_¯öØÔv%¸sÜ’3gEEE‹.pôà?OB‡{ØÚ½3gÎŒ{¿åœo×{ÑÎήEkñ÷÷?{æt]ˇ‡‡›Û ~6=-U©TZ_ãôGµ³³ûæë¯-g¾óŸw:´wÏn›¯`­<½¼kŸ—›Óú›8%9I£ÑXÎilHÚ5ŽãV¬XQRRÂó|VVÖ³Ï>;p`}Ï+/++ûá‡X–ýâ‹/j>ƒÄ`0ÌŸ?Û¶m™™™ .ïçç7kÖ,"R*•‹-2Ï¿|ùògŸ}æïï_QQñÎ;ïØÛÛc3¶;Z­ß»ˆ3Ož8®V«Å9ÎÎÎ …Âü–M¾°©Y‹T*­Y¬¹F™LæááaY{c›ñðÃÏ™3·¤¤ÔÉÉÑÜ]Ûºuëì^°,¼E{ñ‚8q16öÑG;sú”e`­[37AÍB¬)Ö†[ -`Yö¡‡ò÷÷'¢ìììûî»/66¶žåÕjõ“O>éèèøé§ŸÖ|÷›o¾Y´hѶmÛ¬\¾ÖÚ~饗V¬XÑ­[·¿þúëÓO?}çw°™ ]ô }ÁÈÛ„»»»çM±±±^Þ>5Gõ|ûÝwƒ öìÝ»ÏgŸý—çùæÔâææ&Î,)-}ìñ';Œu_µkâÌ3gΘÛ0öþqDØ!ÈËÛÇËÛÇʺFGE©Tʘ˜óœ#GŽ<ôÐ$ËÂëZ¯;wõ).ðë¦M^Þ>ýuˆˆL&SPpÇÓ§O[Óóʺ8;‘‡‡‡§§§Z­~aö‹Á;…†uûàƒÍaÔjµµÎ7ûßÏ?÷éÛÏ×Ï?¢Wïµk×Ùpë׿eÅpíØ±s@äÀ àޝ-ZÄqhw”J¥˜­±,»oß>ó)¨.r¹ÜÑѱַ’““ …ø[mÖ,_—äääN:Q=,OV6„+lwŠåË—ÿ¶õ÷>ø K×.I‰‰¯.|a˜W^™ßü’-z=33s÷®¥ee/¿\K?ýô£åå)ë;g'NÜ´yÓc=*ÎÙ´yÓ=÷Üãîîn9Z©®õŠŒ–––ããã}üø —ã'Ž>,66V„ˆˆˆ&¯ïk‹^¿råÊö˜èÒÒÒggÌtss{þùYõÌåææ¾úêÂÿ{ë­ Æçäåæ¶ò–]»ní÷ß}[ZV6cÆÌÀÀÀ—^|´Gÿûßÿ.\Ø¡C‡uëšø­‡ 6lX¼xq£>5gΜ˜˜˜^½z-_¾Üœé 8ð›o¾yüñÇ¿ýöÛ¼¼vìØƒ>püø±™3g>|D„cÇ÷éÓG&“5j”ˆ¹F­Vm^ß—^œ½aãÆY³ž+//¯u¾ùƒEEEǺo”¯¯¯¯¯/5~\¥eðÅkhõG Úȯ, #¢—^zqãÆ_œ=´G<òÈ=÷ÜóÃ?5­„èèèqãÆÉåòF}-2`À€Ï>ûlÍš5 ,زe‹8Ù²e/¼ðÂòåË?úè#'''lh/=@·Àö˜ñî2™LZó‹ÞÄÄÄòòò‰Wª}¼gÏæm”’’Âó|cÐ0 ããã3{öì^¾|¹ %9räçŸ6¿œ$$ä­·ÞªµÒG}Û°m¼ôâ‹nnn«W¯™ÿʹ\Þµk—Ǽ±… ¼ënó´T*ÍHO#¢?þè¥9sƌҹóœ9s,xµÚ§<<<ÞZ¼øÝÿ¼›—ŸÏó|vVf£*}xÊÃÿýÏì^hÂz ŒŒÜ¹kWï޽ńã¸ÈÈÍŒäÇôúëoŒ?A©T>öè£3gΨ¾9ÓÛ³gÏÒ¥Ë Cxxϯ׭må-ûì3Ï<ùÔS=ôÐ Ï?# ]À°¨v`Ò’ #!¢¯fõB4 ±Îœ=;~ü„k W›siÀ&^\sV<›­›ÛÀ³¶oûý‰gf"bp{Ûðí×ã&>hÞç{†GÈ ©TZÿ§N8nþT]žûòñ¿òù>ˆsû2gíyqÛm}w<¢"<& ÂÈöÍ×Ï¿æÌ¬ÌŒV¨¥…꺵•6؆V«Úš8Ü’ö6¨]Íñ«™éÖ,ÖLµÖÒBuÝÚJlCë!®'V¶§OïÞb!ÿ €ž´; ÐFá [{‚ïÉ=€; ®°´Q¸ÂÖž\OIB=$lÐ 2A€öë³?c€ZíOÕìOM´nYÍ8ôn_ŸïÛ ¶v¬²²A¸-M%ð'Ïs ¼`0q‚ pü¿s¢ãÇÿAÏ ´-‚ è*+õzÇr6/\*“*•j;Ã05À-¤Õ³/ð<ÏñÏ z#Ëó‚åW%¢€„ Út¯A¸3•–”df¤ÇÆ^ÌÏ˳q¶&•º¹¹õèÚ-T"Á =@¡×éòssOŸ>Ù-¬g=¥›>Ü•at:ýéÓ'ÜÜÝ}ýü8ŽCÀ°€µ*++ÏŸ?×£g¸Z¥’Éd‰C.·ïÛoÀÑÇyìq$lHØ ©0°áŽÄs\~~^XX˜\*“Ëä©Ôö'™"//—aìcè96hêY!¸Sq'‘HHÂ0 #±ýïÝK‰ÄkkØÇZ·%èu:½^ÏãÂ& çHØZ™N§»r%^|¤²&,,T­V7§sO ‚€;È[:Ô­V—¶¬¬¤¤(;+[[VzÇl+5vW$l·¯æõÔ;–’r½Ö·<==FމÛJNNΚµk7oÞ’““c2™ˆH.—{{{O™2ùùY³¼½½›œ³µxÂfÓÂyŽ+(,L¸š‘•YV¦%Apttð÷óïÚÕÍÕÕ&c;[(Ô­P—^¯//+KKMíÞËÕÍ]*•Ü ‡Æ† {q~hG=@Â<ë6ïãÉ)×gÍšUë[‹/VÛiî¾û.¹ù:<{öìôôôˆˆˆéÓéÝ»7;wn÷î=ÿýïç›6m^¹råðáÃZ³IÇqg0ìííëÿ±5þaOKKÛ½kwBB‚Ñh¬ö–B¡èÚµëèÑQí%Ô6¯K§Óef¥GôêíêæÁó˲8v ­õ 4ö¼ÛÌo ‘J¥ûöí9bDû ‰‹ë=  N»º.]:£ÖÅ¢£ÿŒ‰)7¿\ñÕ˜éÓi‘líðáÉ“§¸¹¹nܸaâ„ æùcF~ó7¶EG/Z´hÊ”)›7o>lX#7¾psDdãvƒ¬¬ìÿ¼÷^qqIIqq¿~}˜8qÀ€þ-¶±,ûçŸûöìÙ#¶V¥Ryxz:::2$”–ióóò C\\ܥ˗£î5jÔ(™Lf“PÇÆÅɤ²æ‡ºu6+ÏqÚ2­³‹+DZæ mµçHØ ©ìÛ;zìx£Ñ`žhf#GŽüûï¿cb¶?®™E­^ý©F]e´[ï~£zöèÑq`˜‰$\œ¶·O}ê©§j],5µdÇŽBËä§%B““3{ö‹nn®¿þòKDDDÍ&N˜4uêÔ_|iÿ¾?;ˆNhü=liié/ÍË0Ìã=&a˜Ý{÷Î~i΢×N~hR íi,ËnÞ¼ùøñ‚ ¸8;:´o¿¾ööbVƲ¬¶¼üÌé3‡.))Ù³goIié”É“›³Õê×½.‘Hbb¢›êÖÙ¬<ÏK$Ödº½OVçÏx÷½®çm€& íˆ`ñoôØñTu¢Á 4hP—®]ý[°®Àºþ1Ú_G÷ÝgùïÂ…‹Í,³É+Õ`$üg}¨×¬]—žž¾téÒðˆˆº– _ºtiFFÆšµëµŽ7/°ý{'[ýxž?tøðó³gkì4ë¿^÷Ф|ðÕ+WÌxö™¯V¬,..©¶|]‘iìž¶wïŸb¶:oþË#FŽpvv–Êdâ»R™ÌÙÙyÄÈ/Ï944T„ÇOìýs_c·{]¡æx¾9¡nýÍÚ`H‹‹‹wDÿÁr\ A­ðÏr5ÛýIXxžo~9ÉÉÉÑÑÑ æó¸ô ¶í9à_;:g akÇó?ƒAo0è-'¬ø×p }ûöÕh4G±®À:þÕú'Ch™MþfuV†Z§ÓmÙ²¥W¯^Ư¿À ãÇGDDlÞ¼Y§ÓµÐ: †úß+ 4è»o¿qss»qÀK$L›ªR©<Øà>Ö„=-õúõ½{÷ŠÙÚÌ™3\œëZÒÅÙyæÌ]»våy~ï޽驩Öo‘:C]cêV߬Õ2ð⢢ÑXþÓé*ï½/J"‘í–9ÕiS釟Ÿ_>µ~ýú³gÏ6¿üŸ~úéÞ{ï§sssçÎûòË/¿õÖ[sæÌÉÊÊçŸ9sæ›o¾Áß=°aÏÿÚÇ?$l·ƒûÿT*•–Í‘˜˜øý÷ßÿý÷?üðCJJÊÙsç=jÃÖ^8³ã÷_Xþ‹‹‹»ÍBåJNNNTÔ}Ö”9ztTnnnü•+Î2­píÚµÉOûjÅÊÿ¼³dá«  …xY€ã8A¤R©J©4µöª›³§ñ·gï^Aœ§M›Úà(G™L6mÚT'ggµJ•“c}Z!Ô­XW-ª‡Ý;òÞQ÷‰ÿ<=<• e3ÿü <'ðü-î|4¿#òúë´g­ŽëÌÌÌÆ~$77÷àÁƒýúõkfù999ŽŽŽöööâËéÓ§wêÔé‹/¾xÿý÷§OŸ>sæLq~¿~ýöïߟ››‹¿ww8ÜÃÖ^;®ÚDs¼ÿþûÕæ¬[»Ö†­]øt.Q•nÇÞ‹ž=Zæ®¶[êŠÊJ“É$><°A½zõ2™L•¸«G̪n ‹¬ÇqGŽýôÓÿöêÕkÅWËüý©ê {‚ $%%%§¤8::Zy¹Ãú=­ °ðÚÕA† êââbMá...O<þ˜‹‹‹ù 5Ì¡Ž‹‹[ôúæù±±±Dtÿ¸ñæ9K?þ¨ ¡¶¦®šš\—PcZ¡TJoþæAIqññ¿Œs¿T*5±çÏh샂ã.œ5æ~mY™yËåÅù}ú¸võJ¹¶|øˆQJ•*ízJêõ]e¥\¡ìÐ)¤KýO µ!|iüÑGôë¯ô 4{6õìÙàâ;vìøý÷ß}}}%‰^¯ß³gϹsçˆ(::úüùók×®µÌ©~øá‡7ß|óã?NLLd&--í©§ž:t¨eßÿý„ ˆÈd2-[¶lÕªUË–-»|ù2˲&“iÉ’%ÎÎÎu•oiÆ Ï>û¬ùå?þhÞÿCCCÄi†a&L˜ðý÷ß/Z´ò°Aû`ÙÃÖëõÕ&¬è05¢ËTb`›•¹…×ýS»µ¡ lÔz56õ^ «¨¨\þå—[ÿcâ„ ¯/Z(—Ë«-)‚Ñhüö»ïï¾ë®áÇÕZNÍ™ÖïiñW¯M&•JÕ§woë׫S§NÔÈÇÀXêo7jòþÖÒuU»î$Ô˜i1çRìEƒA?pÐ`–eã.\¸ñnµd9?9ñZž2¹\&“'_KÈÊÌ ëÖÝÁÁ±¼¼üRìE†¨SH—V;èš[ÃдiôÀ´z5mÜHóç“O=‹ÏŸ?ÿèÑ£žžžDtâÄ 1Ÿ'¢ &L˜0amÕ爛|òÉ7ß|300ðñÇ'¢ììì{î¹'>>Þr™Ý»woذˆärùâÅ‹W­Z¥T*?øà"Ú¼yó‚ Ö¯__Wùf%%%<Ï[~Cáss-ŒFãüùó_{í5ó[ƒ zê©§°­z€„ ZÕ_ö3NoЛ'“[j;;;¹\~îÜùÑ£G7Xæùsçår¹­yùÊ•×ßX\VVöÚ« ~xJ­Ë\¹rå㥟äåç¯^µB¡PØ|O¯'xyyÚ;8´è± õö˜ŸÜ0nü"²œCD;vìlN¨ëª«VM¨K±Xí[•Þø§R©zDô»\&“)/'»ß€H{{" ìxåòeóÍ©æLþÆË›óCºtutróɤ¤Ä‘w9:9‘«RÙ54ôò¥¸ŽCÚY¯Q¥¢3èwhíZzûmªû á;ï¼óÆo¸»»GDDÄÄÄ4Xö°›¿Êàãã£Õj«½›””äS5E?~¼ybáÂ…Ö4ãÆ=öX­‰ÜÌ™3GeID¾¾¾ÉÉÉ8  aƒviô˜qÕ&àÖ†:,,ÌÛÛ{ÏÞ½o¼ñzƒeîÞ³ÇËË+,,¬QýÝ›#"«t|9Ž;uúô[ÿ÷vÝ_œýBHçÎ5{Æ+V®:vüÄ]#?Y¶ÔÓÓÃúÞ³õ{š¶LKDŽNæá|-¤¥C}«ê2‹¼{T"%"F 7~v\WY!‚ƒƒ£øÒÁÑÉš¢Ì‹UVTp,{òø?–{ÏóâO ´›£‘eé»ïèÒ%š7‚ƒë_vÊ”)Ó§OgY633óÇüöÛo¿ûî»æT®T*M&“åÍ™â%âÌÌLk†õVVVùûûW›Ÿ’’2cÆŒ¹sçNœ8Ñr¾ÑhT©T8  aƒvÔWaÍÓålyµ‰5êiÔ<Ï[V×'Ξ=™T}.sê½c¯˜_%d¹-ùøà†z`õKKSÊåêxS!‘üÛæ³vV†Z&“Mšôàòå_þþÇãÇÕ—ÛÄlß~áÂ…yóæÊd2ë›ÁóË’ÀóLÕîõê5ë~ذ±K—gŸy*¨C Éd¬¶wïÞóåŠU;»7ßX4|ØP‰DRm™ºö±Æîi¼x…Ghôž#Âé3gt:ÝÐ!C¬:mÕj1 µ¬½i¡nÍÍÊr¬Ñøïæ“M&“›“^ÖT!vÜM&™L&1Õ6™X"2,k?b2oÌ7™ÄhˆakéÕ·¿¼êÃ`lu˜7Èr5›hÏÚº•ž~š,®AÕ£K—.§NrwwïСÃSO=ÕÌú#"",‹oõêÕ¯¾úª ¯½öÚôéÓ,á矞6mZµ™ÇŽ{ýõ×?ùä“Ѿ}ûFŽyãĘ`åm±pûÙºùË—÷DMl~ϰA«:zø¯¨1ã**ÊÍm³ÇO˜ŠÓF ¬oO»–í9eöÆffkD$‘xyßÂPÏœ1ã·ß~{óÍÅA:ô¬ã¡ÿüóÏ›o.V«ÕÓ¦N´G̰ IDATmlVsã¾B‹‹c.ÆþøÓÿ"ÂÃËÊÊf>÷¼¹/?N!—‹ïæçç/ûô¿§N5kÖLggjüÈ4ëWßÑÁˆ´eZŽã¬¿ÈV^^¾cÇÎ3gÏö·îá{­êV­K¨þTªú|ó¥JÍ0ŒV[æìâJDZm™8_ µÑ`P©ÕDT^®µ,Á<¡¶³“J¥zÎÁÓ³ú~Õ*lP‘\NkÖÕOIqvv^¿~½N§ã8.''G|D~AAÁªU«ÄÞ}÷]"ŠŠŠŠŒŒüüóωè£>Z¸p¡L&[³f mذá‰'ž08eÊ”½{÷Z&lS§N3fŒN§›>}ú¼yóê)_L¶SRR,7"š6mÚèÑ£wïÞ½{÷n"²|ZÉŸþ9yòdü½»3Mš2网åyãm󀀄 ZUÔÍñiQmxHä‰3…¦â4÷ú–¹šé9acçÐÛ Ô^^^Ë¿X>í‘G¦?ú؇~Pó‚̶èè¹sçUTTÑû|°jåÊfÞÆ–•™åæêúÑGï«”ªÿýü󺯿9}æìG¼g2™’“Sþóîûnn®~ðþÀÈMöfýêûúøQ^^^¹VëäìlMá)))[¶ü&>¸¼æ-C õ‡¼oÎ lêÖ߬µŸ¬e2w¤k×B»ugY6+#ˆ"µÚN¡T^OI êØ©²¢2=-µŽ¯3$‚;&Ä_æyÎÙÙ…çùrmYe¥®C³¿(i=7¸ÌJâ3!«qww_²d ‰ÿ›ÍŸ?þüùæ—Ï?ÿüóÏ?_½=iÒ£>ª×ëÍÃû÷ï_­–ºÊ'¢˜˜˜x f“RS«l2óõzý™3g,[HØ ­³üŠZüÝrŠÏ7ª²æ~#~âL¡¾0ÅÏCR¶v׃[‚ƒƒmò5¿\~rРªùLV–¯¯/%'¤¥­J«klT¨‡ üóÏÿ{yÞËÏ<ólxxø}÷ŠJ%ÉÉ);vîY9 ù­­_}w7·Î;_½zõèßG#"­¹Èºÿ>"²³³3 <ÇIóÀ’ u«ÖUõ»GÇ¡÷Œ°Üj–sd2Yð©BvV¦J¥srvî7ð.s!ž#j-Šˆ¼||¼ª>ç [£ˆ©šN§ %"??¿+V<øàƒVæ{M¨ îX HØÚ½¶<$òÄ™¢q‘• Ž„0aCçΡ·e¨½¼¼/~sÁ‚Wâãã+++Å„$44TIõÕ—ËM&ãÞ½ ‚-•J–ñEÃÏ‚ï^cþMØ.^¼˜“““óŸwßwqq1 Çñ<ß¹s§¹/ÎîÑ£;Ù¢‹lýêK¤Ò‘£F&$$”””nùmëSO=Yÿl,ËmÙ²¥¤¤T"‘<óÌÓ‰”¨±7[$Ôm ®Z•kµƒÁÞÁ¾²²2-%ÙËÇgÂ[B­VWÇ€„ Ä.»ÅHmYµ k>ߨʚÜÝ>öírA¸Vï·w=0 88¸ùÅØ±]víb¦‘{²ÐˆŸñmR¨‰ˆTJe¯jß‘ iììÖ¬ZµàÕ…Û¢£Y–ýý÷?ŒFÓšU+•JeƒϲÑé‚ H$’à  1c¢:v V)UŽŽÝØµîcMXý÷ ~ààÁ«W¯~ÿý÷“'=ää\ûÓçKJK·lù-!!a˜{ï¹§C``] hýP·êfmÌØcžR’õ••©ÔÃÃ+°CP;ºl…qYb«!‘„C ´jÇbúŸ£‡£ÆŒÓjË̶NרÉçø©S¶yúX—U+çΛ·&:¦q9[£Ö® ¡nF³téÇJ•ò×_7q·cÇŽù ÔŸ,[ZïÃ*ÄØþmø't qppèØ1ØV=c¡Ù«?bäˆÒ²Ò3gÎ^½š°rÕªAƒEDDØÛÛ‹WÛ8Ž+//?áÂ?Gÿ.)-%¢¾ýúÞ;âÞ–ëP4)Ô­T—„aõ|W{û>ý´»,(¸cçÜœlœÀÅVC"‘® aƒ[¦]<%²(ŠåËŸ7±_îÚ%m_¡vttüðƒAØ´i3Çq[¶l‘H˜Ï>ýT¡PÔ÷W×¢ƒ.—É"Â{V›yËW_&“Mš4ÉÉÑéà_—”lß¾cß¾ýžž Q™V›Ÿ—g0Äkƒ÷ÞsϽ#î•ÉZöDÔèP·J]ŒD¢qp¨(×jìpB$l·‹~¹¶¬´Ú„oT]íf…B.ÿfÝ‚_7m„‘ÕÞ ê`žxÄâçj#ô·~íšjëØ©Õ¾ÿ>˲ÛþØf4™6mÚÌóåò/êØ ‚ LK]Z#,MX}™Tu_XXè¾}û“’ôz}zÕG¾Èd²ÎGޏ7@ Ùò{Z£BÝ:uɤ2?_ÿÄÄkÁÁqz³^EE…F£AšvV$lÐ’gÝæ}<°Cક+­]80 }ã~øáÖ ¦Í:÷ͧŸ|âäè´þÛoA8pð Pݶ÷1KO>ùDAQѵkײ³²µååŒ Ø;8øøú„„„¸»ºJ¤R¡­†ºê’ÉeÞ>*;»¤Ä„òxís‹—ºÉŸ,++ûá‡X–ýâ‹/ðÌ€öõǰÝ9çÝfx#û÷ì߿ժ+©”Ê×^[˜——³}{^^^aokž6­B"‘xº»{º»·‘ÌÚP·V]œÉèêêæ;tx£~Ì ]ÛpawÓS=µúÉ'ŸtttüôÓOqÞÀŸr$lÐzœ¿^·¶¿¹$0øËÛ*¡nͺôºJ½®ÛÅr¹¿" HØ MC_ýŽ%‘HèF¶Ö"{D*½Qb €ž aƒ¦žwqâ½1 ãîæn4•*e UÁs‚‡»ÇqØÇÐs€6E‚´qR©,¢w¯ø«ñƒ‘F°)FÂpwqÐСúJ¢ Цà @›?JeÒAÊÿgï¾Ãšºú8€Ÿ,¶H ¢Èn ¡ZÅ:hpk­68[G5XGëNu¶•hë&ZÛZ'y«Rm­M¬Ö­%¸GµDmÅňʒ¬ûþq5MYEEÈø~ŸËÉ½áæ—ùæœ{ŽëéSÇssr_xùÔr1™LžO§Îq=BµØàQØà¨ôº’ÀÀ ÆMš°^Át‚F£ñIñ“G¢Î`ÍrrrÖ¬YCo/X°€2vìX^EsÞ9 °@M*.*,.*DÀañx¼9sæBèÿØÀêdf^GïØÀ5o^+ßwoÚ.ªC”ÀÞ9À‹SB ^Äû#G£ð’vÏÙƒ"<Lë€ÀlëÈoÝÜÜŸwØà•ëÚ½× l€u¤#v¥èÙ:]ϵQëär¹J¥"„ðù|‰DÂår !jµZ¡PÐ;˜ØÀVùí`×î½ŠŠ Ÿk£vÏY¡PhµÚÔÔTBH|||BB‚R©Ôjµ ééé\.W.—K¥Ò””<¿`ß기E™LFŠP&ʅä(Êhú§…B¬ÃÜ9³+ºiþ‚O«ë6;d‹C" …Z­–H$„‘H”˜˜H‘Ëå|>ŸîU‹Å #)) l`¯š9e^Þ¿¦j{¢ZµŸÖ ܬy‹²7]½ryîœÙeØ €ÀfŸlqH¤X,V«Õ¥5@ °lQ«ÕB¡O1Ø+ÉŒY”™ÉDQE(ƒÞ@ý¬Z·nMÕïsÉ’/¦L™Ìd2 ![¶l]¼dÉÝ»wëÕ«7~ܸ?ƒš¿xÀ~½¶lþîÚµ?èí&Mšú^%‡\½ryÛ¶­ælVIŠ@`+" ÍIL.—‹Åâr[%V­Zõ矺¸¸X†@>ŸÚ€m1™L&“‰2=EQ¦’’’RÏu‡;vì`0S§N¹ÿþ¤É“çÎóvŸ>999÷îßGµ«ÅµkX°ÊwÞ¶m+½ÛüŸÒ;[æ76»BQ”^§×éuÔsþâ® “ÉápœkøAI¥RBHRRÒó¸}ûö€€€¼0,ÍŸ?oÚtÉÔ©SòòòŒFc·®]P™—gî[›;gvå}kÿ<Ïrš9Ú!­›Ý*..κý÷Å‹r²³«÷žY,–··wxxd“fMM¦š»¶Y¥R©T*¥RI_¨ö\—«¹ººŽ5 &J'Žyòä‰^¯oÒ¤ILLL—®ÝºuëÖ½[×=zÐã$á…=WßZÙ̆´löL¯Óeß¿¯VÿÞ¼YxDD$«zá2……EéêÓÞ<^ƒ t:] <"µZmNk2™L"‘z¢BˆV«%„`ˆ#8ˆ»w²¼}|X¬§oÒ }^nžÏ ÜÕÑ#‡ !l6›Á`ü¸wÏÁC‡~ýõ×I“§¤¥ý°~½¥®FUÌl–»a®¨"|¸b{JtºsgÏ´ ¬ãéîäÄáTï?ÛËË3:úõc‡sª‘Q‘ô þ„™L&•Jéœ&‰4 Õ …P(D`‘}ÿÞé“Ç =!D¯×Ÿ;“QTXðbwÊ`0èØ/.úüó•+WìNK3½‚«*ÙüŸþgú*Û·Võ®9pdèa³=”É”“›Ó¢eK‹Ías˜,Vµ VNvNvÍ –Éd|>ßJa™­ aø2@ídzâââÿÜÍh4Ð3ˆ€ã@›­¢(êÙˆÈõ°­\µúƒ‘#ÜÜÜP"[§V« ½-‹ù|¾J¥âóù˜4ÀþpØìßOžˆíбòÝ._ºÄaãÍ€cA›Mg¶FEš}¿sçûÃFüþ{:õrP^€Z¤Ñhâããù|¾P(R©T&“%$$h4š; ©TêííM/°¯T×=.]¾xýúƒ¡‚?úÔ½÷nܼѵG” À¡àCÛMk”¹—Ͳ=66v÷î´q>š2ybÿ~ý0i/€ÍQ«Õñññ|>?==ÝÜ(‰*;mÚ¸/p ý¶k×þıc{ø¡Ü‰šY,–OÛØö ý¢\l`Ãb۵ݽ;­°°pÁÂÏ~QªÆ~8&êµ×*?Äd2!×XÄÄDBˆR©,Õž””d!Y3’’’*ZxãUëõö;x%€£   A ¼M·a判BBBœèNž<5løÈïwî*))©dô#ƒÁÀH+¡R©ÔjµH$âr¹¥nâr¹"‘%p(èa³Ù´Fý³›e{“Æy¼zYYYæÝæÍ_pòä©3$^uë¢nÖØ!M+"‰,o’J¥„­V«Õj%‰@ „¨Õj©TªÕj“’’„B¡\.W(&%%…^Œž¾•Ëåj4FC¼47ªÕjF“™™Yö@µZ-—Ëé¹\nRR*¥R©Z­ær¹‰D¡PÐç“’’R6s@ Û›¶ E°5ò lvÚÊö†µkû†âß[¶ü¼zzú‚óÚµm‹²ü':¼ºûOJJ¢ÃUE*º•N4™L¦P(”J%ŸÏ—Édñññ™™™\.W ¤¦¦z{{Ó»‰Åb@C)—Ëé4EF7BèF­VKï,‹¹\nBB‚ù;&&& …Bzd||¼T*¥IJJ’Édr¹\.—Ó-‰‰‰‰‰‰©©©x-Ô®÷GŽFlE^n6 °9ЦM›–mÌÉÍ7þ£wû÷›5sJP9‘Hdª]µÌËoy'‰„™ôi—êÚ²Œ†uI7Òc,--^–º.—kžõD ˜ãý¥F£‘H$æ=kr6K¨ˆNW‚" °Aí°YN[¹‡p8íÇYYw6ôC*Qy÷×+Eg$sô¢ÑaŒvHÇ3±XL§JzÔbÕÃår…B!±Êm,K©TšÇ[j4š²SVb8€j‡IGl•Éd4 z½®ì?ϺžMš4.{Èüys>ÿtA½z>åUê* P+Ì]^–IIIJ¥R,ÓW”‰Åb:Ô………ÑýZUŸË‘Ë妧§ÓwB¯@_V¶±ì±R©4>>^ ¤¤¤Ôb¦€ª£Àvàå lvø+ؼ[)6;88¸ì!·ogÙåo¼¼¼øøxƒAOÀ`Óø|¾D"‘ËåÿÙo–@_Qf9p‘¾­Ëëñ¤R©F£‹ÅIIIééé\.W¡P”ÛXêNT*•L&KII)5S%~îØÊ•~ú$›ÍA «z­ðr6ÇÒö6ôF«V‘­ZEÒÛë7|¥T°¿ëíí­T*)Šª­£ª=%IBBB©ÌVöKóDznIz¤"ÝbyY©ôeuô %ôX6òùü²htê3·›ïü•ÎÎbµÒÓÓ}xõ ñrëOlµö¯ÖOÀ†þT ×°Ùî¯àgsú—÷cþF›Ö<Ÿ÷ÞÒ³GܼÜ#Gétº ?c±X;uDý¬™R©¤'~ …B¡P£Ñ( zÚFó>)))R©”Ž[ôÀH™LfŽpIIIôüæ@•˜˜H_œ¦ÑhD"‘J¥¢§¡§òOLLjµšÏçÓëÐ)Žž R,«Tª„„‰DB_b§V«Åb±T*¥3a|||RR}ÅV«¥¿|áÁ“ééé]»u·l <{&Þ V­Z]¹|ÉÍÍ ¯U°ú¼F9ø ”rúôéNãÜ¿ïá᎗ °Á+Ïkô¬#å6.—»ç‡§3ú»»%/]2e𤠠@§Ó­^³62"ÂÛë#X/z•3:i4@P*­BÄb1¢ø|~ÙÙ>èYIÔjµX,¦=‹ Ý/§ÕjÕjµD"¡¤÷¡…B¡¹‘¾XÎ2FÒK·Ñ½Ùb±˜^ºM$Yöo+•Êj,…ZîæêJo3Y¬—¼7ƒÁÀd2™Ì—]Âáp|}}ñB[x·PYtéÜ9.77ÇÅÅ¥VN Zôë×ßÝÝí»ï¾³lœ9sÖ¯¿þzò䉊·zõ'P0$Ò–SÜ,ÿ1H9Ã"#ÂEýû1 BÈíÛY>ž˜ý ½óÖÛ„B¡X, …-BmÎWNßjžs’þÒò¦ŠËEg?Ëoñª‹PÇó}†çãC¹wï^X£ÆÛ·o§wHI‘·h®ÕjéaŠ{÷îbƒ¦Nf4ɳá‹ûù¥ý›údggB¾úê«6o´õkèÙjÉ’/L&}o[¶lmõZ”oý-Ã#Ö®]WQ£åÈüüüÄÄ1AÁ›4]¸ðSú®è>ܱc'¿†þ]»u¿yë^ÒP oÊ£×ëF#ý§þUO¡ñª¯þ2dðO?í{øð¡¹Å`0¤¦¦2¸VÏ Óüû#"Ë&Š¢Êk=úƒ7Ú´¦Õhn¤íÙ[în>vëÖ Aƒ¤¤E3fκsçΟþ¹`áÂåË“ÍÑqíºu›6mJMݱgïÞÕkÖ˜JN^¾âËå'ŽóòòJN^¾ñëo’}®Nÿ}õª•;vìX¶,™rÿþýI“'‹Å£3Ôé[6Ê­¨ÑÒÔ©Ó._¹¼oßOß|½ñ»Íß­[—b¾iÉ’/’“—9ü‡Íž>}:݈ëß &-Z´Èd4Š:}ú´‡G}ûöµnÝÆÇ‡÷àþý¸¸8BWÏÃ£Ž‡GBQK—.moþè¶ ?ß××÷ÈáÃÖ| [îÝwîÜin9tðPvvö€„„Í›7¿ñF[ooÿ±X\Ÿÿô“nBÌ),( ¢¿|R\L)OI‰ŠŠöööiÚ´™¹†¸† Ø Z>5«ÌÌR>?”õÚ  ø°¬_³æ-ƒ‚é~8–n½ûnÇŽ&|ôñØqãû÷ï×%>Þ¼ÿôiÓZ¶lÑ®mÛ?úhË–­æöÙ³fFGG‡……1Œå_~¹vÍêÎ;7lذC‡óçÏÛøõׄ¼¼<£ÑØ­k×€€€×^{­[×®5šìNK[0~xË–±±±&LøvÓ&ó­sæ|ݨQ£ñãÇ=zŒntqumÔ¨ÑËË¨Š­[·-^¼„z– –,ùbÍêU鿟®[·îÿþ§ „\ºtñÏë×þ¼~¢¨\¼xñÊ•+ô;Ý»wó|x±±±ÖÜÃæììÜ¿¿­[·™[¶nÝ* y<“É\ôùççΞMݱýâÅ‹é s,7žž­Å—K–|±~ÃWK–,>îܺµkÍ5DÔ\Ãf»yíÙWUæÍõúlÁüc'NôíÓÛÕÅŸè€õûyß>7·§×°¹»ÿ3IÀ_|Ѻuww÷ïÿ÷¯90#""èV­"5y¬cxx8½ñ矙={õ6b2™žmÚµk×&L˜–¶›žT‰rñâÅ:BΟ¿ÀçóËŽþ\çÎ !gΞ ÃpG°‡ûb2™ôz!„¢(NGßD·èõzËWl×.]&Mš|ðàÁôtuttTPPyÿó’‡WQB‚hûö“'MÚºmkß¾o3Œ‡¾Ó¯Ÿ>}$Ó§{{sÏ??z´øÉ“'ô£Öétƒ‘Þ cX‰NGWC§+!„¤íÞUê3“ÉT3ÍÎâòعìœóü £^½z„O>™ãííóñÇåççǶS._Ÿ˜øt‚%K¾àñê=~üxÅÊ•æFKÎÎÎS¦Lž2uJñ“â¶o¼a0Ξ=§Ñh¦L™|öìÙÓ§ïܹ›ÃÙ·o_``“É,·Ñ|o}ß~{î¼y¾¾õ>z¸råʉO¬ü]¼téƒF:ø«ë³å ^gïþ5<ë6–ƒnœœœÞéÛwGªB­N5jÔËÇ©™="‘()I–––vôè±3fPuýúõGÍš9ÃÇLJrà×_Ÿ>üguððð „äääÐ *^¾t™n sww¿}ûök¯½V+ÍžòÅ@d{'Ę·Y,Öƒû÷<¸}ÇŽƒ¿`³Ù\.wùòä‘#? ߢ÷=zô%Žß™ IDAT¡C²³sD¢ñãÆ•{Ÿôχ·zÕê?žÈf³›5k6|Ø0:}ý´oßgŸ®Óé"##¿Þ¸±¢FK_|±dêÔiݺwwqqyÿ½÷ÆŒI¬ü=).þóÏ?Í×¹¼R»vïÖh4“'M"TéÀæïßÁ`ü´o_Ç †··7Ý>pà€Þ}ÞfÒ÷í¾¶ØüýcÛµ›}zÿçý 2xÈÁ¥5j´{×Ϊ4ZÞg:u,I–ûM-¿¬èq¼ k×®{ÿý÷ÊαAáñxŸ|2{Þ¼ù<0™L÷ïÝ¥Û£¢¢‚ƒ‚š6kZ·®§­6BH€„£ÇŽýðCú;r¹ÜåÉÉ ?ýtíÚu¯¿þú¬™3Æ|8Ö²L&sÝÚ5S§M{£m»`ú´©æÆçíã½zÍÚ'Nâp8M›6¥kˆ— °AU1˜LžO¯Ó;9;½ªïA1êñêá`›öó¾Ÿè @`ŽdfãÆŽ7vl©F½^Ÿ§ÕHH°­G: !¡Ô9¿ûnÿwßíoþòwÞ)U‡víÚ?v¬Ô´Áƒ 4¯@`ƒäÄqz-*êð‘Ã-š5wrvªÞ|˜,–Éh<ál—®=JJJPmÛõ¼orss·lÙêìäW-o0Ð1€Àæˆ8Nœ`~Ø[Î.§OÏÍÉ5Õxç,ˇçÓ©ó[EÏ.ôÕT*•F£‘J¥yyyæF¹\®Ñh!Z­V, <õP 5xù¼Ô2<¢~}ß/–|Áb±ØØà1 Êd iܤɫ˜<šž¸¶ÆÒ!D­VÓÁÌÜ¢ÑhÔjuJJ Ýž T*ñÔ¼Ò¼d¾@´º‚›ã*))±›!‹‰D¥RY¶h4º{Âår-³X^ å7*{ÕTR+”Ê…Å=Á µZ£V«¥R©X,FMÀ¡‡ ¬—ËU*•111111B¡P"‘T²sqqñ† ,ûèÄb1ŸÏGÀÁaD"À+¡Õj¥RijjªZ­–Édñññô KPuÇBl…°kwØÀfÈår‘…øøx•J% ËÝÙÕÕuÔ¨QÝ à°¿W‹ßýÄñcmÛÅâY¨b­¼}x¨ °ÍP«ÕæëÖ®ap@Eéuz^G™L¨ƒÉäp8ÎÎÎ(@- çÔjµ\.—"‰ Ýi¦ÕjU*Uå—±€ý)..>Ÿù`ß©7î`žXpø·k,f`}ÏmÂÚ¶ 1™pYØ £G †N:½À±»w§5nܸe˵uòR©”"‘Hd2ŸÏ‹Å"‘ˆ’˜˜HÏ韚šJ9pzîúßZÅ¡«}…mêÕóa11§184ezð w‡êT½z>Í‚¼u:j€À6ææÍ[ .øzãÆØØç,þýÎRé yʺZ lIIIeé«×ðÌ8¦.íèuQ÷ØmBQ BiâÍá°¶ü¤–}Ü lÏСC ƈ‘#×®YûÖ[qUxðàÞ½{7nÜ8s挗—×É“'Q@`ƒ—5|Ø0gçFZµjU—øør÷Ù²eë¼ùó×­]‹¾5[áääääätêÔ©S§N1 — ,¯®Ú¹¹¹ü±¹eäÈ‘(‹µÉÈÈèÝ»÷µk×ÜÝÝ+Ùí³Ï>c³Ù•L3[Åû1{ÿý÷ûôéóî»ïâ)€š!‘vhàÀ3f̘\2}úøñã:dÙN„\²XÖ­kWTɶ4lØâââââââááan?~ü8ŠS]Nœ8aÞöôôtqqquue±Xõë×Gq¬ ‡Ãñõõe0•ìóý÷ßÇÄÄðx¼ªßÏ£GΞ=Û±cÇ+W®L›6íèÑ£›6m:wîܤI“èÚ´i£×ë;†§àyUôceÉ`0ôîÝ{êÔ©Uyòä§Ÿ~úäɶZ·}ûöÖ­[EGG¯_¿ž<û˜¼°°Þ8zôh|||HHHïÞ½oݺEµgÏž·Þz‹Þ¦wûé§ŸÚ¶mÛ¨Q#©Tj4-ï‡ÞíàÁƒÑÑÑžžž[·níÙ³g```TTÔŒ3T*Ý«Æ`0âââöîÝ‹'àyUôceiÙ²e£GU9–¢¨­[·Nž<9<<¼C‡C‡ݼy3!$33óÚµk ,hÔ¨Qddä´iÓ¾ýö[Ë{ãñx¾ÏЃ)¬®a³g "‘®D7uê4BQyyZÌ iÓø|¾J¥2¯³×µk×Î;ÿïÿ Å*UÕãÉ“'?:tèÈ‘#wîÜ©R©š5kÖ¬Y3&“‰ÀV»îß¿?}úôY³fõêÕ+''çÁƒe÷INN^¼x±§§ç´iÓfÍšµyóæ’’’óçÏÏ›7Ïr·õë×oܸñÑ£G‰‰‰AAAcÇŽ-u?(;Ï£GêÔ©cžK=""bÆ x^^F©«;6+++'''&&†nÛ·o'„ÐëÔ™“˜³³óÙ³g-ï!...???44tĈ¸$Ø –Ñë³MøècBæ„´i–ó^¼ûî»_}õÕ¶mÛ(ŠÊËËCqª+¸¸¸®Zµ*99¹Y³ftûĉQœÚ¥ÕjFc||<}ÁI¹ûÌœ93**Š2f̘1cÆBîܹ£×ëýüü,w›!¤ÔÜæùcÂÃÃoܸQj8VFFF:u7nlnÑëõcÆŒñóó³Lqô·ÀSðÊý±ªÞc9Κ5k&L˜°mÛ6ww÷9r„¾)88888˜ÞnÖ¬EQ«W¯F`6¨MôêØ_.O~ôèñt‰”¢¨ž={¢,6í‡~8|ø°«««Á` „ †E‹½þúëæ²³³ëÖ­Û£GZ?ÕÝ»wët:ógŸ„›7o¶nÝ:22²ÖÏmÆ õë×wuu5·,]º´¨¨ˆÅb±X,//¯åË—GGG‡……á%WëX,Ö®]»>|èСéÓ§ïÝ»wÍš5¥ö)á(ŠªS§!¤°°ÐÓÓ³ŠßH¥R™¯y#„ÆqãÆåå奦¦r8s{AA³³³““ž€çUÑÕ‹ëããCÉËË£Ìsss½¼¼èßíÛ·W«Õ÷îÝóññÙ³gŸŸ_¹Ã/[µjuçκó Ï °A-(µ:6ƒA&Nšìäì—mYŸ>}úôéCokµÚ®Y³Æ<~rûömg mÞ¼yF£±Aƒæ–‹/Ž9Ò›D"iÒ¤I©ù6-Z4a„*®Ç5ú·ŠÍŽ‹‹‹‹‹{óÍ7GŽi9ywE6lÈf³ïܹc9*òÒ¥KíÛ·§7BCCK½ES©T³gϦ·M&Ó¤I“þüóÏ;w–zIܽ{×ü =T]%?V/vlÆ y<žZ­ !„dddXþ}a2™ôËû÷ïïÔ©S¹w{ñâE___¤5@`ƒÚ±uë¶¹óæY®Ž=pà@gg—±cÇ%/[Ú«W/»y¤z½>##ƒÂçóù|¾C=Ë\.·oß¾aaa–k×®¥ç¬u-[¶ìÙ³çàÁƒÍ-C† iÙ²¥5œ›¿¿¿\.ˆˆ0·DFFöìÙ³*ï!JM]222¢££kø¥Uv–¶ÚrîܹôôôŽ;r8œýû÷TåÝ•³³sddä… ,Hrr2Ç{üøñš5kJ­Ï–••õ×_™çõ‘J¥GŽùî»ït:=͉¯¯/}Óùóç-û´ Š*ú±º|ùò˜1cöïßïêêzéÒ%BˆF£¡Ûœœè¿åË`0œœœÜ´iÓ‡~÷ÝwK—.¥¿—R©ôõõõööÞ¹sç‘#G~ùåº}ýúõ|>ŸùüÛo¿Éd²É“'ã©6¨Û¶m/wNÈwÞé«×ë¤3f¦·ßîc¶¸¸xÇŽJ¥R$‰Åb<ûVH­V[Ï»ÿ—/z×äwT©òjò;jµz.×_©¼b%÷ððØ¿ÿâÅ‹KJJ"""RRRªx`ïÞ½8`yuÊÈ‘#‡ž““Ó¿zn³´oßÞ<ÐqË–-„®KVj4zÒ¹ƒ~ñÅø¹x^ýX=yò$33“¾¦´K—.æ[é—³²²*9vòäÉyyyýúõsqq7nœùº[·nMž<9??¿U«VÛ·o ¢Û fÏž}çÎ&“Ù¨Q£9sæ¼÷Þ{xj jÚ÷;wΙ;wåŠ/Ë] 2!!2uÚ4ggûX>ÛÓÓS"‘1ÎÓŠÅÄÄcc%ÿž`ݦ)•5:9'ƒQ£ßQ¥"2Y±õT;,,,55µTctt4ý6μQªÒ¿ÿää䜜óÚÙ:u*u¯y¥Riù^Ðò>-µs8™L&“ÉJµ5jÔ¨Qe÷Ÿ4iR¹ vX3ŒÙµ7æÕ±ËMkæÌ¶ô‹/&Lø(-íT jÿرøøø_þùÔ©S¨Ô Ÿ!C†|õÕWUÙ¹mÛ¶]«ðÖš5k&OžŒ+^ Æ ‡ÍÞÒZWÇîÓ§w‰®dÖìÙEõíû6Jg»>|xûömË«ª®^½úðáC+9·‹/Òç&"¤;!óò6¬^½W¡Ì›W»ãW‹ŠŠNž|nÜ€¼ €ÀPÓ„„ !²-[¾ýV>^-‘ÉÛSII FÃ6wwŽ“»Gúwn_–ÎXK4hÐÑ#G‘Ùج%¶É32ºwç‡†Š§N­Ý¥Ûj˜§Ž7/ØÙ•WXœ3qJÒ d¶ÇÕîC¨õ@`xµ±-‰‰Á »~]:vlí.ÝPÓïÒØÎîî^u}çÜ+,,¼;fÌÔçÍlmÛÅÖnZ«Ý°!H¶€À`ÿ¤cƨþÙ.—ŽmF£"'G6nœlÖ,ÑÔüÒm5Ì`(Ñëžpœ=ØlgÊ`(Ò=zø(‚±‘lµB£Ñ”P£ÑhµZ@€úü'õï¿ oݲÎJIª)¶ÑkÈsrdK—ÊW¬‹Å’¹sÛÀ^éôù=ÐæéJ M&ÉTBLÔСCéÌvì(Ù\ ƒÁ@¹Ø^…B¡V«e2EQæF­V›˜˜Èçó¹\®\.OIIA¡þ“€G˜šƒŽm ƒA¾zuغu¢±tØ%}IaÎý̼ÜLoŸn]ÞáÃßú5h`¾5*ZpþÜÙ   &“‰À€Àð q¹Ü²}h "‘H,Ëår6(KDˆˆ^qK·Ù/“Ñh0‰ÅG9öŒÁ`±˜,©bA(Šää›òŠŒ:ƒ½„¢(½^ç×è Es3L[õþ³ÿSü¨R‰Žjqûöß.ÎÎÎÎ.®®.>>>Ô3Èll¯ŠP(T©T–-tŸ›R©$„ˆÅb‘H„*Aù/B„ƒšùöíaÛ·‹ºwOžŒ5ìƒ^¯¿ý÷íK—.<ÔjíþÁ2™Ìºžu›µhÌápPÿ,EÈÍ\Ãß÷r/ÿyû^n¾ý6“Ñÿz¨Á ÛµkM“&ú;¹§íþuMÊå¾oÜ¿çæææææîììäääÄb±0$  ¦©Õj@ •Jé/% j•˜—nÛ·/~ß>,ÝfLFcöƒgΨ;wêÌc±XvŸNoÞÈ<üÛol+0(˜Éb¢ •$¯À˜÷èÌå»D5nÀbÙլ慳=Äóá^¾t)::Úßß÷Ò¥ô³gÏåé¼½\]]\\\Øl6ÆCØ=L+VJ¥R …¤¤$.—›PÉž?–H$ñÔj5 è€è¥Û2 dd$tï/Èår”ÅFŒÆsgÏÆÅ ù›Ø}8!„p8œÆMšÅÅ /]ºTR\„‚ügAr Lç®ÜÜMÐŒßÐÎÒÎ`¾¾¾?öðð¸xñâ‡âžÄH}þùŠ·â:FBó6û†6‡¦V«Ÿ””ÐÛáážžžVrbF Ð=$b±X*•Ò}nåîìêêÚ£GèèèÞ¸ãB&ÇŽmO—nËÈŽ‡¥ÛlEiµyA!!õ ‚‚ýôPo4¸¢ ÿU½‘º§- ¬g¯Á`\½zÕÝݽN:l6ûÆo¶1Pºã'NÜ»{ïæÍ[-[º›L&üª@`;wñÒ¥¾}ß!„dee]¸x1¶];kyÏÍçkŸ]¤AOÚ®­øš ‡ño`‰û,¶ÉŸ-Ý&ž:U,c b2™X,å lÐ’Ùl£ÑXÑCFAþ`‰Ñh·¡T@@@II ]‡–-[>zôpÚä‘rùÆâââÀ  ƒÁh2™lëáOŸ>ýêÕ«üñGAAF£qvvÆ/:€ªÀH‡æåå`U'&‰4 ½Moà}vEÆŽëíívìÒ¥÷ #¤>!P—g±MBH¦Á ÉɑϞ 8‘ÿ¾¾¾AAAaÜÝݶӕÇÀ¶0 &“ÉápÜÜÜÜÜÜ\\\\\\®]»6ìýgÏÍ{T¨Õæ1ÄæÂªÁ`èÝ»÷Ô©Sñ °Q©TôUgæ @Àår !D.—‹D"¬]‘Æ÷èÑC©TF7j$#DIÈxB¡.ÿ&&$Ó`H**R¯^æç'8ÑÓÓ3%%Ei!00Ð××µr('Ožd±X(jbm•d2™l6›Ãáp86›Íf³Û´iS\\4úùßyz¿ œÙl¶m]½¶lٲѣGã:TÕ®]»þyÿÆ_mÜøÕÎß»ÔÞÈúŠ5zsÇšR©T«ÕR©”Ë妦¦âùªˆ‹‹‹§§'ŸÏwuvö#„OÔ¥‚ئ4RKJÔ«Wgffn\±‚ÂÆÉÉ©¢éÔ¡¶PÕäÎ;ãÇçóù...õë×ïß¿ÿ‰'̽”5©™‚ØPMj¬ ftвÄçó_øÌ_ò±›çëg2™NNNήîžu½êxzºººÚ\`€ƒkØTZZšD*]·vm\\çÚ]Þ„\.7)) ÏT;zé6>!þ9,,L!äÔ©Sl6ûÇlÕª•»»ûýû÷m÷eãëëÛà™zõêB¾üòˈˆóz½Þ××7--­¢j¼ŠÌÆb±˜L‹Íf±X˜ÍÀq ‡ÍáìØ‘ºðÓOW®\Ñ©S'T0ªÉ‘³Ù…„HgΜ?>jbå^rZ…üüüŸ~úé—_~)u?uëÖ5:£7Æwá…ÇkµÚòx¼‰'Þ½{w̘1‹-êß¿vvöÝ»wéC’’’¶mÛ–œœÜ¼yók×®}øá‡ cÖ¬YÖ_çªI%“Éd~ñÅ7¾uëÖĉ§L™’’’B»hÑ¢õë×{yyyyyÕÀ¬Õþ-,+`ÙÞ¿ÿiÓ¦]¸p!<<œ¢T* C×®])Šª¤UØù¼± kŽ=lŽ%--mÎܹK—~ѵKTÃ>œ>}zË–-–³DÎ!ä4êR††DB¼ QGG§îÛçìêºqãFËY"ÿøã›7o¢PvæÆF£±E‹ÿ™a ÅâÅ‹###;vì8uêÔõë×BòòòŒFc¯^½‚‚‚A¯^½!:nñâÅß|óM|||@@@\\œL&KII±³šTþ0‡ؾ}ûÏ>ûl÷îÝæ.\øúë¯7nÜØÅņ/§ ðzføðá„ÿØØXz6,BˆB¡xûí·é‰é+©ÀËC›IMUÌþäyÊ:ô­Ù“O?ýtüøñ\.÷ý>}/]Š%¤“Ž”‰j2Bä„cc•óæÑKö8pÀÓÓÓr–‘{÷îEFF¢\ú"Ñh CTTý¥@ ˜9s¦ÉdjÖ¬Y›6mbcc{÷îÝ«W¯·ß~›Éd^»v-??¿s熔›L¦ââb½^oOóÖTþ0OŸ>=wîÜóçÏFºÞ­U«Vvðð9b¾†ÍÝÝÞHHHX±bÅüùóKJJ~øá‡Í›7Óí•T,]ºt‰<›]ìòåËNNN-[¶DYØàŸ´¶`áBŒ„´?þþþþþþ„ó,‘`¦"DFˆŠñÀ™Ÿ}ÆçÿSž×_½ÔΖ·‚•ÐëõÃK½ñmØÐÅb;w¶}ûöeoÕét„®D§+¡7JJžBôz!¤¤ä “ÉÜ¿ÿç¨TÆŒ“ššúÍ7_?yRLùé§K­i4L&£•¤ê5©äaæçç÷èÑ£_¿wfΜéãã}öìÙaÆÒÇR”‰.£M¼B*ª€¿CsN£_ „^½zNœ8ñ÷ßOÿõ×ß,«}ûØ’“´ù½ IDAT’'……E•TC§+))©¡÷ZƒÍ¶ê÷u],F÷ÐýÕYYYøE€À„²{÷îÙŸ|²rå Œ„Šjl¶Ê`–9g˜ÍzÙë<<<ºté²bÅÊØØXËöGÕ­[—§W…††²Ùì3gξõV!$##£Q£F ƒ¢(‹Õ¥K—.]ºtîÜiàÀA_}µ¡Q£FîîîÿýwtttÙÓµò‚T½&•<Ìk×®=zôhΜ9<¢Tªž=öWrÕÖ«.HÙû¬èQðx¼:|ÿýοþºÕ§O6›MQ”õTÃÊÓâT#!Á¡È ‘1™ZGÔ&'/Ÿ2e2EQgΜ9uêT\\‡ÃÙ»÷ÇÀÀ@ƒáìì<}úô?žX\\Ü®];½^æÌÙÌÌÌéÓ§ÙDAªX“Jf@€?‡ÃYµjÕˆ#.^¼¸bÅ ËdR“¥º R6u?xðÀÕÕ•na0¾¾¾ôvÿþý/^’››»mÛ6zOë© °­¦5Œ„Šjl¶ÖÉI?þÈÇÇûË/WŒ7žÍf7oÞ|ĈáT Ìì_©zM*z˜Þ\îêU«æÎ»jÕêÖ­[Ï3çƒQ£(ey¬ ½BÊÞ%!$2òŸ+ñX,V^n½Ý»W¯I“&s¹Üö±íèomEÕ6°9iii vž©_Áf//ÉgŸ‰D"D5»a¢ˆ©:z'4h°téÒ¥KKÝ9%ˆhµyô¶»‡‡\./µCX£Fii»K5ÒC† 2dH¹7YAªX“J¦(A$J™ûõïG)u¬ ½B,™E¹O®gݺÜ/Õh%Õ6°1©©ŠOæÌÁHH°û¨&g³¹õêIæÍ‹Å¨‰ÝÁp26°Ó´¶`áÂ+¾DZ»¤yÖ«&ˆŒL‘JE"jb·oÆ1œ AA ì FB:,!*k=·¤jjô¢j©ÏU»~?Žþ6°#»w§M—Hj$¤^¯ÏÈÈ „ðù|Gž½]ôÞ{šÆ­óÜd;v¼|`S"'DAˆxàÀô©S~Þ_‘‚’—W¬RÕrüg2™,Ëq*o4+y¼(ˆ%ƒ°XÌ‚‚B‹éH1±XL¿¥ØÀÖ¨Õê‹—.yyyB~Þ¿ÍšÕ5²¸¸xÇŽJ¥R$9òUL≭öÜd;v¼dT{º¨Z™õ¯áU¸v\¿þ@&‹¯ö{®Óö‡ªîÊ`pëzegçøúÖsœÊçæäp¹Þ ùÏ‚pXŒ\÷ÛÙù¾u§ ·³óp=œXHll`kž””ôíûNhh(!„¢(á[o9ÔÃ÷ôô”H$g—ä„ÈY, ›-3&å£ÕjLóæL¥²ú/ ê7§ª{²˜¬–‘'Okݦ çk÷½(F£)'çAúï§_{-ÚÉÙùÏ‚ø¸3£š‡üpôîo4 òõdÙ{†1©¿<ÞwòÏ7Z5öñp NE@`ëjOU=Z‚õ¯“ÅôkÐ0<<â왌üÇùF£Ñ¾/‹ÅªëåÞ2œÇ㹸¸  ÿYof>×óµæ!‡Îܺ¯-4Mö^f}®{TóP_Ÿº>Ï1,öÄñcµ{æµ~l`-²²² !äáǨØ.-Ý«Æf//ñÔ©b±QÍ11 ޳SXXX€¿¿Áhp„‰%˜L&›ÍqusCAªR&ƒÂãx¸ÔkPÏGo´ÿz0„ÃbpÝ™õ<žï"ƶíbk7­Õî Ø$[@`³sáá.^¤èŒGAÀF£ÚÓEÕ¼½% bQ5 „°Øl7Ô©(ÃԫêW‡…RX;OOÏØvíP°Qšg½j‚ÈȤÄDD56°Š¨ötQµÖ­S?û 3Ç °Ø•mÛ¶8p ±Å lwîÜiРÁŒ3jýÜ>ùä“¢¢"___BˆŒBÈBúÒ›! B䄈T~ðAÍGµ‘#G¸»»›[ÒÓÓ.\جY3¼¨Àz`fXÛvæÌ™ŒŒ ­…«W¯>|ØÎíàÁƒ×¯_×jµ„-!ZB~'d7!ñlvÊÌÌÄë lZFF†¿¿II ½¡R©âââø|~vv6Š`+ÐõO*•ªÕj•JE•– ÕjòòòP%³ØØØ3fœ?žîFc2™V›iW¬XaµeܵkW©–^½zÅÅÅݸqãÆL&s̘1aaax½½"â§P€Zùµ¼téÒºuëzyy¡¶=lPû$‰D")÷&™LF¯âfîîî¿ýö[“&M !ÄÓÓ5©õë×wqq!„°X¬>ø`õêÕ¨ Ø©TÅçóQ [6;´}ûv7wzû?þ˜6uŠ•Ÿ0—Ë-·]¡P…BË«³™J¥ §¯¹ºuëV^^^hhèßÿíããƒâTW`{ò䉻»;ŸÏ¿téÒ£GêÖ­K9zôh```pp0JT-L” E¨--[¶DØÀ* 6Œî~Ù²e³>­V«V«-׃vpÇŽ9räéÓ§óòòâãã—/_Þ»wïN:ÑBðò<== ƨQ£’““Ç×£G}ûö?¾K—.?ÿü3[µØ¹ OŸG™,Z©T£DP‹òrs!{ÓvõzûR7íMÛÕ³O_BÈÕ+—Þh÷&‹Å2ß”‘‘Ñ»wïk×®™×,1·üñÇ¥6,×5ÉÏÏoÙ²åŽ;Ú¶m[öd.]ºÔ¥K— .x{{BŽ?>`À€[·n={–¾«›7o–»Ã¹sçzõêeþ^éééÿzÛÇÆ?Ûƒ!‘v®¸ø‰ž¹T*­hœdé?±yyñññ v9OÉßÿ••õÖ[o%''0ÀÍÍíСC#GŽÄ뼺,[¶lùòå cõêÕ­Zµjß¾}×®]FãƒP¨^uêÔ‰‹‹“Ëå¥Ú?~L f³Ù.\ Ï;Ççó-çu¬hBHnn.Ý~åÊ” ¬Ño¿ývèСC‡8qâúõë6wþô`ÈŠ†J–âíí­T*) B¡Ð.›Édºÿ¾^¯ïر#Ýèææ6|øp¼à«Ë¸qãè ƒ1hР«W¯±X¬{÷î¡8ŽþûR½÷¹`Á‚³gÏŽ5êäÉ“wîܹtéÒ²eËÄb1!ÄÃãwïÞ .¼råʉ'Ö¬Y3dÈËc+ÚÏçûúú.]ºôï¿ÿ>tèPJJ ž;6°:½{÷öª[׫n]W猌ŒÁC†^¾lc°I¥R¹\O‰/û¤£¹yó&ýŽááÇ­[·F„x¥Ž=* õz=!¤¸¸Ør)9@`«.AAAûöíãñx&Lh۶퀮\¹b]²hÑ¢fÍšõéÓgôèу5jT©ÃËÝÅb­^½:##ãÍ7ß\¹råÔ©SñÜØ: e¶CîîîæQò[67|Äȃ¥îØÞ¬Y3[y–ë_1 ¥RéàÏ©^¯¿q㆛›[½zõ|||üýýwíÚõá‡âÕþ*ètº~øáÍ7ßÌÎÎÎÍÍ}ðàÁ®]»0ù ”+:::++«Ü–²e5hР¢«µëÔ©³jÕªJ¾]¹;BÚµkwäÈó—}ûö­ü!mã… l`½4h°yów#†è×ÿÝMß~c…'©R©è«Î ŸÏt»F£Q(„™L&‰ø|¾Ã>çÞ½{ô•åðª999-^¼Øâ=…•€Â›~¨%iŸŠ‹‹³³³oß¾}ûöí’'Od2™›«ë°á#NœQ«‰JEÂÂHJ ‰P6¨q,kûÎïyU›öÏUaOž£zv–Ö ¢Tó•¡B!‘HˆLF !Èl/ˆîa å7ºïnCÿØà9|µa=ïyf±ËÊÊb0„¼<-EQô6Ø:…‚ÈåD©$eçU¥‡D&&€`*€l5ÓúÛƒ€€çø¨/"<\«Í»páü¦MßΟ?ÿÌ™3( €}J‰DB*ZC,&B!Áà¶=lÇÓÓ3¶];BHë×_ß³g+¿ùúk”ÀÖi4D£!bq97iµD­&„fÍȆ ÿŒŠ¬`A (DZÇÌÛ!è§®ªÇ¡lð‚8Î!ƒ¥innže°m*žN©Vµšh4O7´Ú§ûÔ­K="óæ‘»w‰Fó´‘Ë%žÎ'‰É$Ê•0ø=áÒZÛvXFÉ^†D:´Ž:2˜Ìßÿ†RØ:>Ÿ\½J¤RFbbˆBA!B!IM%yy„¢E‘!äèQ’™ù´%=¤¦€h4$1‘x{“˜²oyò—ëü‹^¯3ÿC5 &¡‡Í¡Õ«Ç LOOï÷Î;¨€R«‰\N RXH®]#IID(,¿£L¥*= ’¾àÍܨÑ•ЬZE.\ bbˆHDD"LR@&€Úƒ6‡æâââíͽuë/”À)$>žÄÄBž.³–ŸOD¢òÓšVKd²ÿ¸nÏ'b1:”DG3D"¢P°0’˜øÏøIGlf¨ °AM=ýL&›Å.,,D)l‹\þ4J $3óiZKI!j5‘JËOkôÎI•îŸÍfH$$=¤§Bž~/• …G—~ú$›ÍA &aH¤CÓét……õêñlúQoذA¥R …B!¦½s<ÒrŠýR©Hb"ÑjIRRé9!¹\’šJˆFCRRþégS«Ÿ®ššúÜßN ))O—ÞŽ'B!IIÁ IpDèX6¨÷îÝk‰R€í’ÉdUì5²utï™ZMÄâ§ a—%’ôô§Ó‡ÐkdÓÓEJ$R|þÓØFOjRî½Ñ‹¨ÕOg›°¿Ä†Ô´ë×ÿ|ðàAxD¸M? WW×Q£F¡oÍ‘%%ÕpD¬…Ç(•™ŒˆÅÿÝÁÅç¥òéô! ‰*œƒäb[jêÓ.>…‚$%=]Òo©P<]!@*%\îÓP`?y %6¨ymÚ´ÎÉ~€:X3zÍk•Ф§?GÏ=}È« ’ÌL"•> icÇ’~ýž^JgN’r9‘J‰JERS±°ØK`{ž¶ŒŒŒÞ½{_»vÍÝݽæOµv¿;T;L:`½¤Ò§“@*•Ö5Î0)‰¤§“H\i׎(•ÿê÷‹If&Ñj‰ƒ]`vžØÊ™‘‘áïï_jú®ˆˆˆ3gθ¹¹UËw¾ÿþÌ™3Û´i1jÔ(5ýAT £R¨ °À‹P«Ÿ®­TB¬±ŸŠÏ'¾¾$(ˆüøc9ÁŒË%))D¡xº„7€ÍçµçÉáp|}}«% ܾ}»{÷îwïÞ]¾|ùñãÇ·nÝÚ´iÓ%K–¼êÇk0L&žw6(½Àš@@ÒÓ‰Õ^ž©Õ…‚üú+IO' ‰‰)½\›@@Äb6°›ÄFU}Þs·½qôèÑøøøÞ½{ߺu˼Û7ß|Ó¡C‡˜˜˜ääärÒ'Ÿ|ñõ×_·mÛÖßß?""bÚ´ir¹œ¾5??üøñ7_´hQÙ{(w‡R½‚ô—%%%ô†J¥Š‹‹ãóùÙÙÙxÚØ 4©”$$‰ä_Só[!µšðù„Ï,Sz­6¡«·Ýäµ_2;99yñâÅàp8³fÍ¢W¬X±iÓ¦… ž8qbùòå …bÅŠ¥,((8pàÀ˜1cJµ{zzÒ3f̸råJZZš\.ߺuë† JíùŸ;”µbÅŠ¥K—:tÈËË Ï;€5À¤#Ö‚žnñyç©ÝÀF£@òù$>ž¤¤ü3ß ŸO´Z<±`í%Ž9sfTT!d̘1túÒëõ«W¯þßÿþAñóóûä“OfΜ9qâDËÿúë/£ÑØ´iÓrï¶  `Ïž=›6mjÑ¢!dìØ±›7o[L7ôŸ;”K*•Òg lð†$$BHf¦m̬(–¾tM"!|>IL$j5II)êl<±½xdkÒ¤ ½ÁãñJJJt:æÿìÝyxÕúð7mÓ….’¶ PJÛ”U(K§•y4¹nL-›+dXTÐ Þ+($\Y/ò#qC@ÅFáºÝD¡…b*HmX Rh¡tI³üþ˜CÚ†îKúý\Ÿû$“ÉÌpÒ¦ùæœó“©°°p̘1Ž}l6[IIIYY™X,®æaÏž=k±X„ÈGD}ûö]²d‰ó¨È;îP©^½záÕ@`€Û$—“BQžsZ†!‰„tºÛÖP(H*¥äd’Ë)5•ôz‰àÌfs­Ÿëååu{ô³ ©I¯×» ;ôñ¹íƒYdd¤··÷É“' Tÿ—j(.Îå ÉaÒZ-©TÄq®ƒ…)mÇÝÇÜͿųÃ6@ó‡9lÐ\h4ç»<Ïk4ŽãŒF#Z(¡L?ËÃPj*ÙíåCårzøabÙŸÖ JM¥‚²Û)'§¼Ä¿@«%…‚är¯2´ôýøÜM=lÐô„Tf0cC(üÉ'››å‡]0d_*•‘Édbð)Z¦|!i—´æ¨2âçGM+Z¦Ì‘ÙZÊÊàÎÐÃMsØ€JJJ›Û%©Tª‚‚á¶Á`pô¶´&™L®µ]jBÊdäÔ¯ÜZ2›0ŸÍeé6€ØÙ jéÊ•+Ç~û­úû_¿~}×®ÿ:ÿªËÙ Çq ôO3:Îý1r¹\äÄÐÚ>C³ l s[?’ÑèZÁ_è[km¥8´Zbd6¶ÖäÙçž{챑éÕLk3^|iÏ÷ß?úÈ#ï®]ûîÚµw…„Ôñt:N§«÷Ïó,˪Õj…Û:z¡¡¡iiiv'²Ö3È š+‰ä¶$f4’\Njõm}n­°óØ16™ ZáïKŒ´Ëå?/¡5 jæå—_öòòš8qRfæ!÷{?á믿0`Àûï¿7n\ʸq)>ø@/@H,Ërg2™êëߥÑh”J¥R©4™LõxX€F t¯éõDD&Éå¤PK­S£±õ–ßHK#"j°¾y€† l EG<ÁCÿøÇÒ%oÏzeö¸ñã?ûôÓî«*­¥ŒààÁlüxC@@@½œ]&“9z´ŒF£°œšB¡¨c7Çq …B˜º¦ÓéPÖZ¥’8Ž)9™ rØk2ÇQ«ý¹–H(5•ˆˆÜy@`’’òìsÏ?ýÌ3›7mLLLtÙáúõëãÇO8pðà!C>ûô“ÀÀÀ†¸ ©T*•J…’ ÃýcÕÉfBÇqR©T©TêõzFãXJ["‘#Zµš JL¤^½\3 ÏSr2ÉdÔš¿ˆJ)-ärb×ZšÍPú{·#£ñ#[]2ÒÑlPîÑG]¸ðuµZ3yŠò¿»vFFF:FB }kõžÖ„%Ô …Ó$‰B¡P*• à †ääd…Bá~ZÅ0¦P(0æ<@çΔM×®‘^OŽ_½žX–=KÄ0”šJr9Íš…hî’ÇOB#Ô"­ <í€d u„9lå¥_\¦Ñ\¸p!eÜøÓ§O;ÒÚ¸ñ<èçç÷ÆÂ7¢oM£Ñ$$$ µZ““£Õj…¡Œ2™,555¡uâ8Ú»—~ü‘~˜’“I$"¹œD"bYR©(- k‘Éd¤ÕÒûïÓõëEh hÎÊÊÌŽÿÐИÐÃæi&L_RR¬âæM›>ãÕ¹sýüwîÜ•‘‘1dÈaC‡*YöÓO>éÕëÞú=)Ã0jµºâ¤5¡Ì£pC‚§Ðšèt¤ÑPV1 1 ©Õd4’ÉDj5aMAJ%íÙC[·þŽ7 hÎ0îØ Þ¼ð gÏóóóOHL$¢°°ðàWfÍò÷÷oÛ¶í3Ï<£Óiãããëët‰D©TVUb„çy†að! Z£‘8®|Á1!¹A¥&O¦ï¿–ËåYYYh @`p†!‘žI9eJdddLLLLLLdd¤ìAY›6m¼¼¼¦L™|Ï=÷,|ã ‹ÅR_犋֜Òëõ<Ï Y.-- õB Uáy’ËI©¤jÜ¿õìÙ™ˆ„>y€f+ëÐA1ÚØ ®:uêt×]åËaÛl¶K—.QYYÙë ^ÍÏ_ûŸÿøøÔ[ç*Ïó ŽÌ&‘H8Žã±&.´Jr9Éd„¯)jJ,öÑjµB…X´4CX š †Dz¬“'O~øáD”}B«Õ8p -Íðé'›cbbêñD:NXй5ÞK&“ Åý±x´6,K<òµÄ0Ljjª\.g¦Ž 94DbCÔ§×^}U¸‘óGNQQÑÓÏ<Ó¹sçÍ›6ÆÆÆÖï‰xžW©T.³Ô¤R©Á`@`ƒVE§#½åëD&“©Õêää䬬,)Vgƒf•×ÐÐD0$ÒóÍžýÊ›ÿúWYYÙÅ‹ó®\©÷ãÄüR¯ IDATK$Nç²Ñ`00(°­‰PhE ëN¥RÉd²ääd44¯ÀV“!‘‡Žˆˆ¸yófã\[U§¶—––6‡‹6¨’H$š6mê¸q)¥¥¥ãÇOÈÌßU„${ïš,¯ÕdT¤X,nß¾½H$ªãI pñâÅóçÏ w333;tèpðàAá®ÕjÍÊÊ4hP}®Á?ЬX±oß¾­[·þç?ÿY»víW_}Uý}²³³_}õÕýû÷oܸñ—_~yå•Wð3 lài|||f¾üòÖ¬)..N~ê©ôŒŒz<8Ã0999BÿÔÔÔ‚‚ €ÖƒãÈh¤´4´D}bF­Vsç¼d@“&6;Õ|H¤pcÿþýr¹<:::))éìÙ³ŽÝ6lØ0|øðèèè„„„•+WÚl6—ãôêÕ+88833ÓØX–=tè08óøñã7nÜ8p s/ß_ýõÌ3ÏÄÄÄ<üðÿÿþ»ãPIIID$•J#"""""Û9Réµ5@ûÙ?ýôÓÙ³g÷îÝ{øðá'Nܼysõ÷ùôÓO{ì±ÈÈÈþýûÏ›7Ï`0Tl.6ðII#W®Xîåå5~ü„z?¸L&S©T …‚ˆŒF#¾‡ÖÀ` †RSQh¤þ)•J…BÁ²,Öæ‘×j_Öåʕ˖-Û½{·X,^°`°qÍš57n\¼xñV­Z¥×ë׬YãòDooïÄÄD¡KÍl6ÿüóÏO>ù¤¿¿ÿÉ“'‰èàÁƒ:tˆŠŠr~ʼyórss¿úê«þóŸ«V­rlß´i“ùŽ9räÈ÷×Ö.^¼xõêÕ„„Ç—2G­Å>B( öò‡Xh-P%²u‰D)))AÂ{}}áyÞå[pƒÁ€Ö'L]S©=Ê D«Õ&$$°,›ššŠÖ€&luxîüùóû÷ïODS§N:u*•••½ûî»_|ñE\\uèÐaáÂ…óçÏŸ5k–ËsøÙgŸÑ‘#G¢¢¢$É€233{ôèqèС:ï\XXøÕW_mܸñÞ{ï%¢çž{îÍ7ßjÛ¶-µk×ÎÏÏÏýµ5üü|" …ñœˆ~ûí7—`Ö„…::vìn4£££‰èðáÃ}úô©þ>6›í•W^ùã?¶mÛˆ!hU0_êJ¡PB\RœÉdB〧ÂÔµF&Œ;å8´4÷EGNœ8ñÛ-§OŸ¾ãÑüüüfΜÉqÜÖ­[/\¸pæÌ™;w®^½ºÒ¸mÛ¶N:‘H$JLLܸq£Ë6" zôÑGßzë­ìììÌÌÌ>úÈñPDD„H$úî»ïòóó ¿E"ÑøñãW®\yìØ±ýû÷oÚ´iâĉÂCÇ>|xqq±›}8ŽÛ·oßš5kÌfs^^^^^~&¡õ@Ô‰D"—ˆqlt=€'ÿÌcêZc7¸VK Ä0¤P = i››GGå¸Ý¿ÿE‹Ýñ€3fÌ [¿~ýœ9sÄbq·nÝ&MšTU`{çwär¹cË€ CÅÀFDK—.}饗}ôÑ.]º¼ôÒKsçζ·k×nÁ‚‹-ºråŠÍfËÍÍmü6œ={vAAÁ˜1cüýýg̘ñØc ÛKJJrrr„Þ¿ªöùä“Oˆè¡‡rÍd2¹P@`¨œ^¯zØ\*C6ZÑ€Æ$,Wš…O¨ï"zÁ|Uh>âãã+ ?ÂF—G]¤¤¤¤Üñƒ r9ÅôéÓ§OŸ^éaÛ¶m+TðŒ7Îq{Ú´iÓ¦M«êbªú‡Ô#±X¬Ñh*ŽÊq>uUû4IÂh&0$êþ)ŠQ©TöÛ¥aaðD&Sù¨<†&! CeY´4º¬ÃPèaƒzlË3Vº ¥cY’ÉH¯GK4­–bcI£!…‚ 2Éd"†!™ S ¡ÁšzØ ®$‰D"Ñh4r¹\§Ó˲&“ < Ç‘ÉDZ-Z¢ißpH«%Ž£~ýH§#‰„†L&JN&¹œx-ž=lPWÂÂÙBr*CªÕjŽãT*2x £‘4Ôño.¯…Ÿ…„ÜVåŸç)9™bc)+ V¡A ‡ š zØ ®t:L&ËÊÊrÌ[“H$jµZèmðB@ÿæÀ` †¾ý–üün«ò/‘PZÉd”œŒF‚† lÈl€À-ô³,¯®Pà\"‘ðœžB£AÿæBHÎ#FPj*i4®‹_kµÄóT¡¼´b¶ p5 žAèÒÁÔµæÀh$ž/OÎ C*±ìmóÖ$’òb$õNèa‹‘v¹üç%´4&ÌaódEEEüñÇÑ£Çòòòˆ¨}ûöqq½cccëñ,J¥R.— UFxž×étƒÁ`0äääà%€–Î1ÒiYxhÊðì<*U­&ƒ8î¶8-“†cC64 °A½),,|ï½÷õ_|ñûï¿Ûl6Çv//¯®]»*ž|rÊ”ÉAAAõr.‰D’–––œœì˜´&Li“ 8´|Â2Í Ùliµ$—“LF Ø %°ÛíéééÓg¼xõêÕû‡å•Y‰‰‰;QîÅ‹?ýôÓömÛÿýÎ;~ôÑÿ­{wÈ!"‘¨¾2ÏóF£‘a˜ZD5žç5ó\8¡³Žçy©TªT*ñÊBãÓëÉ`¸­!4-™ì¶B#ä40R&+/ài0 ;Dú{·#£1濺d¤£Øà¶´öÙg[æÍŸ/•Jׯÿ¿÷Ýçíííx4:**:*jÌOúé§ùóL˜8ié’%ãÆ¥ÔKfb›ìÖp%aT¤ºzÇF—ýår¹V«e†ã8ŽãÔèã€ÆÅóIJ¤R¡F|3Â0$‘ÇÝÖç©R‘Á@,K©©Äó¤×¾á†<~¡imÐà!h$[@`ƒ¿¥§§Ï›?Ÿa˜ }Ré>ÞÞÞƒürÇöçžaÞüù;G:´.'²™ËF¡«­šGP«Õ.Ñét‰D8‚J¥ŠE`ƒF& †T©ÐÍKj*Éå¤PÜÖ¦ÕRBBy¨D‚W DY™Ùq[,öEƒÔXaaáô/J¥R7iÍ!$$ä£?ýøÓ¦Ï8‘^—ùl&“I§Ó9Ç3£ÑHDL†% %L„Û ƒA†5° ±`0d³%“‘JEr9©Õ÷¤I¥ôòË4~<ÒáÃh$h(:lPWï½÷þÕ«Wׯÿ¿;¦5Gf[²äí±cŸÔéÞ›=û•ZŸW˜cæÒƲl]òU:èÊÊÊßþ­vóè ÙÌ©ÕÄ0IJ¤Ó•4™È` 6 ¯ °4KEEEú/¾¸øð÷ÝWýgÝ—˜8âþû¿Øº•e•µ®õÏ0LÅ%×´Z-ÇqÓ'V\\üù矧¥¥9}žS3(;µ…ÁÍŸ0$Ò` £‘L&bJM%©´|`$*FBÃÉ:tpààah@`ƒûã?~ÿý÷W^™å\e„ˆ®_¿~ôØ1ávP``ß¾}õöö3vÌ´iÓsrrúôéS»SK$’ŠÝY¼óZ¶ ,$$D¥RaÀ$Ô †l)¤ÒJŠ‹¸TŒ¨Gèa6¨“£GÙl¶ÄÄD×íÇŽµm+éÔ©}¿gK`#¢„„»Ý~ôè±Z6N§×ë]6šL&Uz(†&Â9ÇB¼ÊÐÐ0²¥s® Pï‰ mM MàòòòˆHXoÍE§Nbbbbbb|ýü*>*üðƒ?üà÷߯øÄ‹/9ž^;2™Ì}ZÓétî V«³²²ìv»V«uôË©ÕjaPejj*º× ¡a0¤'Q©ÊËHÔob«tTäáÇ#n÷í·ßÖâðÂqJKKÝï0räÈê?¥Y‰¨B¥;[,¹\þúë¯;¶dffFGG»5-ßÙåË—çÏŸ?`À€¨¨¨¸¸¸É“';þMÔ³gOçV:{öl§N*m:çW³G“&MrŒ÷hBèaóqq½½¼¼²~ú)::Úù/ Ã0îÓÎOY?‰D¢Þ½{5ܵétºÚ ”J¥R||†c2ýÏ8ƒ!=ŠVK±±d0ªA½å5·fdd·Û¶mÛp—qüøñÝ»w?øàƒ-®9"Ü8vìØ¤I“233}}«\ÜÇÇgùòåIII£GNLL,--;wî´iÓz÷îí²ç… FÕ·oßU«Vuîܹ  àÛo¿ý÷¿ÿ½eËÇ>ÁÁÁ_}õÕ˜1c„»Ÿ}öYÇŽsssÝ¿š—/_^¶l˲Îe¨šzØ©©©O=õ”›K^͸¸¸iÓ¦egg —Té €À5¨xòɽ?üpè§Ÿªÿ¬C?ý´÷‡ž;¶Ö‹°‘L&“Éd*•*í­V+•JSSS…»è%ƒf‚ç‰ã(9™†ÒÒÈn§ÔTêÕ‹T*0ƒ!=ZM i4h ¨¯¼f¯Ñ4¶yóæeggùå—:îÓO?}ÿý÷­\¹rÙ²e»wï‹Å ,6nÚ´‰ˆ2339â茪hêÔ©§OŸþî»ï\?Ïyyýë_ÿÊÈÈØ°aCvvö›o¾éxèwÞYºt©Á`‹ÅÓ¦M[ºtéÛo¿½gÏǘÃ5kÖlܸqñâÅXµj•^¯_³fM#´ªûóÎ;×f³½øâ‹ï½÷ÞòåË+öÈîÞ½{êÔ©.ÛCBBœï*ŠŸ~úIH§»wïöññ¹ÿþûïxm7nÜøâ‹/ºwïîåååþ@`ƒêš2erXXØüù ®_¿^ý¯_¿¾`ÁëaaaJ唺œ×`0H$µZ-»E©T¦¦¦šL&᮫ØBóÀqåeEÔêò‘r2ùûSd±Ç¡…>>&&†eÙôôt"*++{÷ÝwW¯^}ÿý÷wèÐaèС .üøãºIïx^ÿ |ýõ×))) pîÜ9«ÕÚ½{w÷' —Ëå ÉO?ýô©§ž2˜ûW³G‡úàƒîø‚44ÌaóAAAëÞ];qÒÓÏ=ÿÂG~àòõRÅ´öÜó/ääälÞ´1((¨.ç5§É1 ãXœ­.$ê‹^Oz=¥¥‘óO«Á@MyeÈ„bÂ× žD˜—Ȳ”“ƒÆ€º'6wÝk;wîæ°y{{ÑÙ³g-K\\œðhß¾}—,YâD×­[7G(--5›ÍnfsU4eÊ”>øà믿îСƒcã‘#G–-[vüøñââb«ÕZRRRVV&<Ô£GáFXX˜ËÝ’’³Ùl2™ S¼ˆÈf³ G‹Å ×¢999w<¯^¯8räˆÅbññ©ý§ÖqãÆ½öÚk“&MÚ»wïÛo¿}ùòe÷¯¦X,þþûï/^|êÔ©èèèª^P÷Á ¾àç̈D"áÆÐ¡C—.Y’••5úñ'Ù¼éêÕ«cÇ>9iÒÓ_lÝzæìÙ²²²²²²³gÏ}±uë¤IOûä•+W6oÚ8~ü8GØ«5™LÆó|ll¬F£1 :ŽeYŽãT¨¸ÍÏ“ÑèÚ{ÆqÄóW†”Éõq0/.4¦¨¨(Ÿ£G wùå©Tê¾7Fx´šÙà…^ÈËËÛ¹s§p7''çúõë*•J똟Ÿ_£« ÌÍ;]Ý?!Ôå¼<Ï/\¸ã¸ž={.Y²dùòågΜq9Bppð|ø† ܼ Ç>|xqq±ó]ÇxT—»µƒ9lž)((höìWXV™““sôè±¼¼<"jß¾}ïÞ½ºtéR—š•’H$YYY&“IX_R†• ™‘J‰ç‰çÿŽgGJåm‹t ‹£b‘v¤R‘NW>, Ö­Fû/]ºtÞ¼y£Fòóó›0aÂäÉ“Ýïß®]» ,Z´èÊ•+6›ÍÍ*a‚çŸ^§Ó K?‡††®X±âí·ßÖjµ Ç͘1£FW;cÆŒ°°°õë×Ï™3G,wëÖmÒ¤IЪUwÏž=»víúßÿþçèÅzë­·FŒñé§ŸºDßÎ;óÍ7«V­z饗òòò‚ƒƒ Té±XZÓ+|á…ž}öÙóçÏWõ‚–””äää8ºFÝߨQM߀ ñyc——È‹ˆt/h’ øï—ÛŸ~Þ]%Ižçu:PR¡Pp§P(˜Æúä+—ËU*Rbë}‰ªó6Kjuù¨H†4ÊÉ!çn`Žtºò$w:#5òg#ŸqÙ2ÚºÕ+3ÓÖ¸gôÎÌ´6Ü)ôzbYÊÊ*ïh5H£‰OKÃ@Iø[AþUáOÞÈÑOìûáû‡YTtS¸‘úÙæGFŽ"¢S'³&T;:‘>hð´CõÛjã‡ïí<Û‘ˆlvÛ¶EIh`H$ÔÏór¹\lÂÙ*•Šã8¡·  ™P(Ê—Q6™\CÒ­%ÚP"Ò³d2 Œ„êzè‘‘.7jº4z½^&“åä䤥¥ [$‰V«E¡HhVÔjbJN¦Ù³]Ë÷ó|ùjÚ/çñ?F#ÝZpÀ¢¢›EE7o °´T&“©â`q©TÊó<š•ÔT2™h×.=ÚùŠ-<›TZ^}oNpGû~ø¾M›@çMEG ®$‰N§sÉlFê\’¯! µŒCCC E¥…¡xž† £7Þ —^"™Œ ’HH©$¬îÞJ¨Tå«¥GEщ'äòF-2Ã0ÃÔêUxZ„J‡D¢Y Z$¥R)—ËM&“B¡ày^¯× ½^Ÿ““Ó8ðè£ÆÇÇ7ZD„J£!©”öî%"2‰çËÇIB«¢VSBMžLÁÁ%*ÕáF;¯ÑˆE#Za¤ó 6@`ƒ–J"‘¤¥¥%''Ëår"Òét Ã4æ:lb±8>>U"Á=¡_ÅQ9­Õ&+¾÷ué"jä· ¶Ä¥J$ØÀ2›°›D"aðYšŽ#• 9 ˆ¨<°?•‘ JU ‰Œ‘v¹ü祎ÐDÐhPtêŠçùääd½^/•Je2Ò4Ï´Æó( å$3†.]²cñ¨JUU"Q+Ø åÑétÂòk.)ë°A3a2‘Nçºð´r]»R»v",ËUA•Hh>0$êJ&“ñ<¯¸}Éa£Ñh0Ô(½ÍË’LF˜ä."#EF£]§#—…Š*‰Lÿqïß?<ѨqU]2ÒÑlÐÄ„â"r¹Üy0$Ïótg@3 ×“ÑHU²ZÔß?‘ZMG z_ÁUÅ*‘Éã'¡Yj‘Ö ‚v@²6hòÄzFCD†Û+ ©0ašÏË’J…ãP9¥’ôzâ8ÒjÑp›ŠU"ËÊÌŽGÅb_44ÌaƒºbF¥RÙo—––†–&Çqå5ܪ¢Õ’N‡‚ûàªÒ*‘(:M=lPÆ`0H$‰DòÈ#(+LaËXCÓ2H§û{á5€JI¥¤RËbÜ,Ü gÔ§-[¶7¼}|F>öX@@@Ã6H¥RmÕ£ˆ„,‡—š^ƒjR«ËF¢L8TµpvÖ¡ƒCûÔL›À gžy†ˆ²²²þúë¯Fl„)jÐìÓ^ƒêÓjI.'¥’02U-œ €Àµ$‰ˆ¨´´ÔÏWLDV«5''gzú¡ÌC¦Ó§ ˆ(44Ts߀û†ëíí]—3:Fœ””têÔ©ÀÀ@¼Fž eý=Ák¯ÎóÄã£G%]ÌÍýú›o4ê¥ÿY³ºW¯{+¦5"òòòêÕëÞµÿY£Q/ݰáã×¼nµZkõ±XopI!»4 IDATÂó¼ávuùñ<¯ÑhÔjµZ­V(,ËâU†êýä`á5¨=¥’†8-•'¶JGE>|8âvß~ûmí¢WDDDiiiU;üöÛocÇŽ‰‰éÚµëc=¶wï^"Š‹‹;räH›6mZD–••©TªîÝ»÷íÛwíÚµw¸qãÆ¸qãú÷ïß¹sçÞ½{Ϙ1ãÏ?ÿt<úõ×_?ðÀQQQ‰‰‰ÂÇŒªöw€=lžcË–Ï7oÞ¼æ?kž;öŽ;{{{'''{y{¿üÒË}ûö8qBMO—œœì²E.—;ß­KU£ÑèèRcÆd2áõ…êÐh°ðÔ‰VK±±¤P`H-TÈknÍÈÈpTüjÛ¶m½ŸÝl6Oœ8qذaK–,ñ÷÷ÿé§ŸnÞ¼IDb±¸}ûö-¥ W¬X±oß¾­[·(•ʘ˜˜Ç{Ìy‘Hôè£Î›7¯]»v¹¹¹jµú¹çžûæ›oˆè‡~X°`Á’%Kúöí{ùòe¡µ«ÚßÍqØ É\»víåïŒ~üñ1O|Øåé˜óÖ aá5¨*–eƒÊóFöŸ7o^vvö—_~yíÚ5–eÃÂÂU”W®\¹lÙ²W_}uÁ‚›7o&¢M›6Mš4)33Ó·²‰åaaaD´gÏžŠÃ[Ž9â¸ÔiÓ¦9¶¯Y³fÇŽ‹/îÖ­[NNÎk¯½&‰fÍšÕÈ xñâÅ«W¯&$$8þR;V‘­Ôõë×?ÿüóx@,ó<ÿË/¿˜Íæ#Fð<ÿðÃ/Z´ÈÏϯªý«³ Á6‘m·Ûûõí[Ó'öë×Wxz=¦5ḎõýM&“J¥’J¥z½Þý¶âââÏ?ÿ\ãC([gZÃÂkP/$ÒjI£!¼‘ÀmÍí¨È~ýúuíÚµk׮Æ #¢ÂÂÂ]»v½ñÆ÷Þ{ïàÁƒ§OŸ.¤2Áüùóû÷ï;uêÔŒŒ a£0²]»víÛ·¯8ʱC‡3gΜ3gÃ0Ó§O¯tš\û[>úè£ .èt:"*++{÷ÝwW¯^}ÿý÷wèÐaèС .üøã¿óóó‰(44ÔAyž·Ùl÷|á…ºtéÒ³gÏ¢¢¢?ünuêõú•+W®]»vÏž=K–,q³¿ûí-zØ<„°›ðÿ€¹S/Fź‘5"ü™b¡F£á8N©TVuÒ•J…a“­™°ðšV‹Z#P?d2R(°,¸$6w=l;wîfU kœž={Öb±ÄÝZ;§oß¾K–,q„“nݺ 7ÂÃÃKKKÍf³o5Ê5¿öÚkãÇÿñÇ322X–}饗æÎ[q·]»v}ðÁÛ·oOæääŽ3ƱƒÍf+))iÎã—,YrãÆ'N¼ýöÛo¿ýö¿þõ/¡{óŸÿügß¾}‰èÕW_]¼xñ›o¾YÕþî· °AÓèÑ£‡H$:òóσ¬Ñþù"êÙ³g³úç GJ¥2™L<ÏãU†ª ¯)h ¨7Bõ,Ëf³ÙÍ£;w®~a}—É ÕlÙ©S§ñãÇ?>!!aéÒ¥Û±cÇfÏž½bÅ až˜ψH¯×»”BññiìO€Â¨Î‚‚‚"ÊÏÏoÛ¶m¥ó8î¾ûî»ï¾»K—.b±˜eÙ…  á3&&FØ!::º  Àjµ ñ¸âþî·´8é!"#;mÚ¸©ÒÑU±Ùl7mŠŒì”xkLy3Á0ŒÑhtÜ5™LŽyØÐpŽ9rðàÁŠÛüñÇ_~ù¥9_¹ÑˆéFPÏ$R©Ê‡ÚÔTTT”ÏÑ£G…»¿üò‹T*u?É\x´šÄccc‹‹‹]v¾zõêóÏ??yòd¡~‰cÏÀÀÀÜÜÜèÛ5Ú‡Ž;†‡‡;þ¸>|¸OŸ>Õy¢H$êСCûöíÏ;'l9wî\XXXU髪Zãÿ“ØÀå³…d;vìØ¶}{õŸµ}ÇŽÛ·Ï™=§¹•èP©T<ϳ,Ëq˲J¥­'%%íÙ³Çyã·ß~;vìØÚ-Öׄ®W•Šð ðF„eÙàov»½ú]aAAAIII‹/ÎÎÎ>pàÀºuë&L¸Ãò9"‘è»ï¾ËÏÏ/((pyô×_;wnFFÆÅ‹:¤Ñh† â’§L™Ò©S§gŸ}6ï"òóó›9s&Çq[·n½pá™3gvîܹzõêÆo@‘H4~üø•+W;vlÿþý›6mš8q¢ðÐñãLJ^\\œ‘‘ñÅ_œ>}úÒ¥K{öìY¼xñ¨Q£„æ3Ï<óÆoœ:uêÈ‘#+V¬P(DTÕþnŽÐaH¤çHIyêçŸ^°àu›Õ:vìX÷ýþV«uë¶m ¾1a„qãRšá?G“F7xðàÏ?ÿü©§ž j imÒ¤IÛ·oož×¬Ñh„Ö óFD X– Ê[ö_ºté¼yóF%”õŸñîºuß|óÍã£GwŒˆØñåN"úóÒ¥3¦£1[¹x@Èl[¶lùóÏ?gΜ¹mÛ¶!C†4Ï«5 B`h Â:ìX– ܈w W‚àààµk׺ßÙåî´iÓœËñ; _¾|¹û³Wz‚”””””¦ÿrVXN­âû¶ã_‘˜˜øßÿþ·ò¬>>o¾ù¦KL­j7Ç@`ƒ¦áøÚÏÏÏoþ¼y#GŽÔh–=þÄ]ºÄ6¬GáaaDt5?ÿĉûöíûãœûî»ïËÛÛ¶•\ûë¯#FÑÖ­[Ñ’àÈl?þø™3güüüî»ï>abw3ýÏqœJ¥Bfƒå²,ϓɄåþZõŸZ6¨«>qq?ÞðÇìOO?”yèûï÷ ó|$‰4&æÉ'Ÿ:dH—.]¼½½ÏŸ?ïxÖÍ›7Ñt (--‰D¡¡¡O>ùdvvvdd¤ŸŸŸ··w³šÀqÏólÐЄeÙärºv²²H¨˜ ‘L†…ÚØØ ¶¼½½»wïÞ½{÷ž¾šO©QyIð`¼µ;vÑgŸ}6nܸcÇŽEEEùûûS…jÔMÅd2ét:­V+ÁÊkÐð¤R’HhãFZµŠd2’JÉ` ŽärR©0…Ø Á„……íߟþÛ±ch pNkÛ·o0`Mœ8‰ˆÆ÷믿ÆÄÄ4ŸÌƲ¬L&S`å5hx}NŸ>]RRbµZ›p­°@ŸJ¥ÂÒ|ÐL&ÒéH«%ªbY6•Šd2ÒéÐT€À ¬OŸ>‰‰‰Î[ľAÁwß¼Ásóþ¯™d6F#•JU˜6Âh$©ôïÊ"j5étd0ܶÔW"Ï&,œ#írùÏKh @`€fÁWå~³øÚ¬9ê&ÏlÂÂkZ¡¿ Q›sHDzl.Í%Â6ZØ Yðññ l{WXW/7ù©Sç6mf^cPI‹TJ&Óm[„Î]ç‘X– öóšªb±”–™KÄ~A>>~v‹¥Èü×ÓÏN¦&ªAâXx ¯ 4™ŒX–xþïB#ŽeÙ”ÊòB#F#Édh*Ï—þã^ÇíÈhÌ¡­®éh6h(æ²×þÊ3ß,0—Þ´ÙÌ6[)Ùì'N2ÛÑ£G…Ì&‰D"Qƒ^‰ÉdÒh4iiiXx “TJ2%'SZÚm)N©$–¥´4ÒëI§#”,m ’ÇOB#Ô"­ <í€d u„!‘P¥²Ò›W/çäŸ ëÔ)’¹{ÁjµZ­ÖqãÆQ—.]Ο?o±XaF˲ …B†Ž ht©©d4º‡T«Éh¤—_&–%µC"[Çûa™ÙñZØj   @.—‹D"Îå#Ô™ÙRt-?ç«/צŒ-ö2ö8qâàÁƒ?ÿüó‰'òòòÚµk׳ðu:ÑhD­hIyOZBÂßÅExž†§ÿü‡ž~šª9J÷ða2‹—\>¯`}AÑ@`¨¥ÐÐд´4»Ý®V«ÑõËb1oß¾®W¯žcG‹Öi?ŒììëëäïïïííÝ C"yžç8N­Vc0$4†¡¬,b’ËI$¢ØXŠ¥ (>ž.^¬Áqd2²Ûï¿´4"*ÆË‡Àlà±2öï “=z´×½±í/^Ì;räçk×®ùúúúûûûøø4è6–e†Q*•x9  µFìvÊÊ"­– (+‹ôz2H¯Gó´"Y‡úøˆÑ€ÀMLÈ`íÛ·¿qãFPPÐÑ£G§)#«}É’5ƒ ²Z­DäuKÃ6ƒÁ`00š†!™¬¼h¤TJJ%qñ<Æó¡o šŠ»*‘ùWïN^}íÕTlv[“¾÷ìxcW³mœàA/¯û±xÝ»Zâ+ûþÌAÎwCÛO`;qâDPPPpp°Éd64Áb7g8pñâ¥ß?ßЋ°ñ<ϲ¬R©”JQAš)µš Òh#²[CbC@³ l.Qí‘aýÐ^ÐÊ)†DÔý ËôÇb:Jœ¹\b[3 l;w.--%"Ÿ¸¸¸¿þºöêìçuº‹‹‹ï¾ûn‹Åb³ÙôûfF#‘H05š9­–H&Ãjlžž×ÐÐlÛäÕþ1¸Y­6´´rE¥VQÿj[-Ço“ðË5yõf•ÙD"‘———X,ööö&"///«Õš••õÌÓO½8ã…£G–––ŠD¢MkF£Q£Ñda}+hö†T*â8¬Ææé­¾ßñ´Zíºuë®^½:{öì9sæ … –mòêè¨ (6Û¼¨®¿V«ÕåwêÁ½›[ff¦ P„",,,äù‚àààððp??¿-7²¬J¥b°¾´*éõÄqéቭÒ͇NJJn'&&¾ùæ›wÈ——÷Ö[o­Y³fðàÁAAAh]¨}`#"‹ i À9°YëØZį•s±~ooo???‘Häççg·Û}|||}}.°qÇ󼪚ë[45¡†¤\N ÑöܼæöÑŒŒŒ€€€Ë—//[¶ŒeÙ´´4÷GËÍ͵Ùl<òˆ¿¿5/Àb±užðZ´6î~í'¯>04¾‡Õjíö¿™I±3“bûF‡Tz·þWd¶–˜-uüÏjµT<òÐø͹®H$òñññ÷÷Ê´iÓÆ××·^êCF–eD"Qll,˲;wîÔh4Z­ ¯A "“•WŒÏMlv7uGÂÃÃÛ·o7mÚ´ììlGM¦ 6 ><:::!!aåÊ•Ží#GŽ$¢ØØØˆˆ7{>|8""Â`0<ðÀR©ôÊ•+î÷Ü¿¿\.ŽŽNJJ:{öì­ ·ëtº!C†DEEõïß_£Ñ8.»ªËk°&¬üJÜ\!Ð{ت3r݇۫y²éÏ?ÑJšõÕ±Ý+nü÷Ö“Mu%{~É3þÁ×âj/”Ñ¢2矛ÍÞjGÉ›m>•õ°øz“ˆŠKÿ~È_ì-Q±ÙZÙ¯•µ%6 H$òööv|¹[/}k†ã8¥R©T*†1™LƒaôèÑ}ûö•¡€´4j5ÅÆ’FCèöмvç9l7nÜøâ‹/ºwï.¼U®Y³fÇŽ‹/îÖ­[NNÎk¯½&‰fÍšED›6mš4iRff¦¯¯¯û=…G—/_~×]wµmÛÖýž+W®\¶lYHHÈ«¯¾º`Á‚Í›7ÑòåË?þøã¥K—ÆÇÇ_½zõøñãŽÃº9TC¨êJªÚõ؈hŒâá;î³Mÿmkû”ÿWQÙÍbKM³^x{‰¬6»óŸ™;ž½Ò«ýØpºÒ?Z­9°‰+¶@?oI˜ˆ¼ˆòo˜‰(<Ä/8ÀG$¢RÞZTjõŒÀV9MÀqœN§KMMU(Â!³]»vã8Ô‡„–Eɲ¤P–¢ðÀÀæöÑ~ýúQQQQLLŒ“ÊÊÊÞ}÷Ý/¾ø"..Žˆ:tè°páÂùóç ‰¨mÛ¶DÔ®];???÷{ ï–ýû÷¿ã1‰hþüùžS§N:u*•––®_¿~ùòåBŸ^ÇŽûôéSCÕ»ª®¤ªíPÝÀf±UwºÎ¿¹ytøà^5:šgÈ¢Ð`ß‚æ6>DÄß0‡´ñ¹Ì—\»QZɯ•ŊʫǩT*—<Ʋ¬L&:ÜT*Çq(ë-ŽV‹‘žÉl6»y´sçÎ]ºt9yòäâÅ‹e2™0L¯× iðòqýèuÇ=7KI7Ã8«yà ­ü=BäE"áv‰D¢ò´VþP æb:>ÄtnÿËŸßÿò'í:x!êî è»ƒž~Pêí%Ê:•êÂ_ÎϺTPüþ7¿ÑäGºv os_÷ðŸs ˆhXïöDtþÊ;ýƒˆ^x¸Kd»Àa½Û;?ýZ¡yýW§Jˬ"Ùí¤ýúÔ¢§ûQÆñ+²¯Ôâjo½­Û+Îa‹¹'HzOHûõ©? Šï–ÌHêÞ³ó]á!~—ùb lV›¹²ii§/ß4[la!~W¯›‰è®@ñ%¾äb~q¿VžØ,KõÿÒ —:Îh4æääw•J¥F£áy¥G e‘HH­&Ž#¥’ðÃÛ M›6mË–-{÷î2dH```nn®0ZÒØØØzßÓA*•¤§§=ºŽ‡ª£ª®¤ªíÐÍK$"‘ˆÈN$Üôò:ØHÔ:ÛµBó[]g× ÍÂ?ÿF‘yGúÙ‰Æúû\»iþêÐy—fÉ>{­Ìbnt osÄ_Ø¡CheŸûKxôĹ¿"Ûv p~ú¯¦‚¢’²ŠWb«Æ¬³J¯¶Ò§ w…ëMy[Í’Ž¡þ¯ÞôÔ×Ôb©dˆ£Àl±Y¬¶2‹ˆ,[™ÅVÕžB•H|7©vZ3D伯Ïó¤5G<“J¥‰Äh4bT$´8JeùÀÈÔT4†ç¨æÂÙ±±±Ã‡ß°aÃ<0sæLŽãJJJ `±X~ýõ×Ó§OÏœ9Óå)~~~õ¾§óS¦L™²páBŸþýû %=RRRjq¨:rs%•nÇ@u[õW‹•ƒÙíÂòM^ô÷:N¢šÍ3ì;vyÿo—+n¿+ÐW¸áïëí+ö**½mˆ]dÊvëoÃmívëQ»¨’G K,•6²Íf¿cãWuµŸ.Ü.Ïf·_¸Zä¼s±ÙêÁ/t™ÅViáǘ»Ûúæ]+•û’òþ*m$.-ó?›w³²ÀfmåË KÊšL&ÇÚ²,Ë2 £T*wãy^ŠÒ Ð2iµ”@z=Ý*©­%°Ñ /¼ðì³Ïž?~ÆŒaaaëׯŸ3gŽX,îÖ­Û¤I“*}JCìéðÚk¯¿õÖ[/^ 7n\­UGU]IUÛ Z­úý"‘Wy<³ÛEå·„ÿºÛjv4ÏPi¿V»»üNˆ ¢KEBÛ<94Z÷Õ ç?=#Û_$¢ï"¢‹ùÅÂAr¯EßÔ£S[Ãá‹d§ÚÑ…+7Ýt… áÊËKäë#ºcã»é…«´‡íÜåB"ò‰¾Ê<Ÿsñ:y{‰ºGÞ•sñ†¿ÐeV[‰Ùu[Xˆ_h°ïåkÅaÁ~ç¯ÜÝ-ñÏ»Vâwå¯â‚抭•Ïa“H$R©Ôh4 yL¯× —éjz½^Ø oÓÐ2¿• •ŠX–d2 Œôpñññ¹¹¹Î[|ðÁóçÏ ·SRR*í,ªø¬J÷¬¸[5÷t¾+‰¦OŸ>}úôŠ—QÕå5ª®ÄÍÕëÈòñÖª¿‚jmR‡÷¾»Ÿ4ÔqwÕ¶c"=5"Fìã•uêê®gU)}»F„ èÑ.Ý©kënIÀü”¾DÔ6È—ˆö½$´Ûÿ².Ly¬GçöóSúÚÉ. ò³Û黬 •–q¸Ìwkó`ÿŽ÷FIl6ûªmUV‰¬iÑ‘Sç¯ý‘{½KDÈÔ‘=.óÅ6›½Ý]þb¯7>6zr`³X+ö°•˜­V›½m ï™¼ÂœK…DTj±E„Xmös%=rž:$²F ÇqÂpG–eU*•s6ãy^£Ñ¸t¸´,* é9ªßÃÐLÛßÉM¨6B"‘P†Dä%j­Mì' ösnLY|DôÝÁ…Åe[4Ý,±lßfƒ]’uþí Ÿ½DØ-Íx¡Ý]}cCo—í>œ›™'l?vº`ýÎã%FF¶ $¢Ó—n|ûÓùìsלÏh³Ù\9õ“â~é=’áYn^‚ŠÏ­ê!ÇÝõ»Ž?”ß5¬ý]þe[îÕ›ÇÏ^+¼}•mc©lfZn~Qi™Õf§üëå5!;síÏ‚b"Ê¿^j¯ä×Ê“{Ø8Ž«æž7oÞ4hÕj æ°9úöÛoÿüóÏ’’’ê  ÂÀH6€lÕ_-*:2öÎv[ÍÚSÓ×ì«tû·Yç¾Í:縛þÛ¥ôß.¹ìS\jÙð¿•>ýè™ü£gòktÆ“ø·>1Öîj+>är×b¶nO7mO7µž_˜2kå¥DÎ_)rÙâ2µÏ%°yðï‚F£©f5óǧ-[._¿NOœ¶m#‰„†L&2™H©$µºÓ~4ü`Bó噀ÆhÙÐÃ-8°ý.Tݳ!‡TçO‚ ­96[=üÅöôÀVM,K‰‰”–FzULyyù;wÖÅÆnÙ’ÄøûEôݶm»wïÎÌü9ëðá”ÔTâLjˆ•7Šo;vtç;ödìÙ¶í_II[’¿Ù’—û«¹¹ùÞ½ÿ€ß /߸^|ãºfÐZèòÇ* ÈK"‹ù|>ñщ Hû †+'³I$Ï÷3ÄõHº1«b†x Ùµó‡÷ßßÞÞ~ôèчþRWW—üí·J7§Nb±Øö}""VÊd2­ŸÛ·oç|0ÔÆÖÎÃsðW_m’ËåÄï …"5õ;öû>}ll¸ŒÛ°ø]ÙMÌ:!~üñÇŸñ²îÝgà ï¾Û†¹Ó™(¥×{¾Xó9ñ÷cÆ­’Ly ¡ÍTUÜÍâ$· í=¾0yÒ¤ï¾K€€3Ž9º,¬¶¶vúôic¹\¥›È•+t€°eËvíÞ½,4´®®î—ƒ÷þû§A@hhè®Ý»/^D¸ÿ!…BQþhll<Þ¼?üIüB4F?«yöé§Ÿ98:, Uó')i˾ýûâ7¼÷Þ{wîÜ _A¡P""V@âÆ;vìøjãWl6«²²òÚµçÍÍ{÷þ{æÌY¿^V~Ò<~üø_áá_|±fê”)•••?Æ z-ܺõ»²sŒdÐ#Á¿ÿýálíºõ„ãÿû'ì[C:[°?v¬{÷çCTÇFnÚ´ÉLJcbb²ŸPÕ½‡‡q0x°gii©\.¿ûÇ---žžƒ‰ß½† Y·.VÙò4hР—‰ž.Ï©Tê ó/äá íƒè[KHH@Á† / ƒsæÀ–-0r$””“I´‰€@ð|Eœ#úºøãÞ=™Læî>Pí÷ÝïÞ½«P(ˆSÍÆhUÇÍÍÍ[¾ù&ëÐAOOO°µµ]»öË•‘Q+ššš¶nMINþfêÔ)`gg7xðó/Í6èêêj™L6~Ü8{{{{{{ÌÎçÇŒ=·nýN°~ýÞ þxv«·(ušRÚ¡ZC^ƒ`srrT›ÃFðûÍ›õõõ---ÕÕ33³vûohhˆy† ] @  srr8íA^±ví‚qãàâÅÿÍdc0ž–ärŸ#]ÍÆhÕñ;wî”ÔÕÕMšì¯üE.—766J¥Ò;wJFŽ¡O(ýúõc³ÙcÇ?~ü„ñã&Nœˆ£„:™6õ­ij6TkˆþtFÙ®¯¯_¹rå„ñãCCC•MPpíÚ5â ¨è*“ɤR©ÎNN4­¨è ñ{áo¿¹¸¸h­ƒˆJ”oú8ÐßsAôþ¸óùü„„Î]CŽ€Çƒ€8~X,õÙX¬ç[l‹Åh§×€“££Á ióׯßpvvV'I‚\!€C9{æ4ñwþÜÙ‚Ki´¶µ¡9œµmÛw=z˜ý+|·3èõ¢§fS›Ã†vC^ƒ`«¨¬|ò7Ï—m\½z……eXز„„ø;%%AºÒýW_mºq£øÂ…üäo¿5k&˜šš~4uê_~yýú_ss¿ýöÛOfkïb¶··§P(G«¬ªªªªÖljç×®_ç|0´¡¡Ÿ ÑåÔµ´‚tD ˆÅÏ=ffBi©úÎlB!šê5`jjúá˜1[SRT›ž¾ß¾ýŸÿüHù‹fc´ª'n®®&&&hiiùí·+¥¥¥+V„ÓéôE‹Fó£i4Ë›Xt$88TÚ GEŠ¥¥Åo¿ývñâ¥üc4ÍÐðرc}ûÚ㈡N¦_¿÷Ú*·fÍ R®2BŒœ5+-‰tž`c³Ùš’ þñ”?| <Ëå>¸_ðá‡c¦LñW»ÅÌÌ,-m›>þ‡.]ºt)I¬4hõœ$þ‚è§®!H‡#‘¼°1±3[` <_}„ø11Mõzpvv刃?žýìÙ³>}ú|4ujDÄ ÕMØ´6F«¶l™•¥UÊÖ”°°å4­ÿþsçÌ!.­ŠŽ633ûrí—–[ZZ~üq0ñ»f´©©éÑcÇâ6lhnnöôôüaÇÌÎäfñ ­«ŒÜ,¾ArKÿpÄ1É-ÒÁ‚ Aw ±XÌãñ233qê‚t L&¨­´bñsÍF@ôÂ!¯ ‡¾©)[µ^R6þj6F·´È@eí´àà ¢ëL …²,4Ts'ÐhƒvuuýåÀ0;^ ª ‡h½Ú!·  6AÚD" ŒŠŠ À=¡¤CñóÄâúÙÒÒ€ËÒÒ„BÀI£oUUÕÇwrt422Bk¼5š­nA×,Øp"‚¼¹2™Lœº† “ !!Àãý¯? àù–Ù\.°XPZ (ØÞ0-^tãFñæÍ›Ð‚¼I‚ A7>Ÿ/‹KJJÐò*HH6!-íû°“Ùx<€œÀy£o™?ÿŒF@¤Ýà‚B‚´¡P˜˜˜ˆ È«ƒÁ€œHÀÅA,†ÒR@(:¬­ç"‚ `CѱÐHZZ.4‚ ¯&rr * D"`³ÁÅ`2áÏ?ÁÓS}7mA‚ Èó…Fplé4¢¢ ' P(  àùI­»i#‚ (Øy× d0iÄ*u‚¼&Í&¨¯þ ‚¼­à¢#‚¼@ii©H$*--e2™,‹ýÈçóKKK T×­Cä5¡\€„ÅÂùlÄáƒÐH[™<õŸÊã{ü!TTh_ ÝÀÀÀÂÒ’åÍrtrB»!¯J°aE† zVÙ]‰DÂçó¡Ó„B!ÇóóóûÇ?þ!p¡é:„„@i)p¹PPL&Ú£3øä³hDvïHW—ÿYž›{þÃÇ:1™ ¹\¡P(@Ñ"mQ( …¼®¶öñãG¹¹ç é¸SòÊVd¢O•Ý•)--år¹ £¤¤„ù÷ 1o-&&fÕªU¸Ð‚t)@"À@\åAº:ÙGúp>p{ï=™L&ki‘Ëår¹\¡755Ç ÅÚº·³“söÑ£h1D œÃ† @`` ŸŸ_AAS¥¹¾´´T,s8œï¾ûN"‘ •¤«i6€ç›³!Òe‘¶´¼ÏáÈår…BAâÌ}à@iK š AÁ† ˆø|¾D"I ¾þþF"‘ðx¼€€€ .°X,>.K‡ ] bÇ6‘|'¸|ù²]}}½ž¿¿¹)ê|O^5 …ÂȈު3¹¢CP°aý…t âââ_ÿŸ|òɾ}ûÐÎjˆD¢¨¨(µ)j\.ˆe!¸&‚tU͆‹F¾ËxxxvïÞýÝQ­MMMozBärùO?ý[.—㌼6ÁF'ww÷ÐÐЧOŸvý©Œ¶½½}ÿþý'Mš”œœüfI¾Ví¦š5Çï:Ñ«®®ÎÈȘ7o^«R«™¥+¥‹/NJJÂ*R‰D"‹ýüüTäñx““Cœ²X,ƒ!‰Ð\ÒÕ`± - x< Ñï"†††ÖÖÖ ¥Ã}niiQ}]ª"/£Ö–††.\´è_á+ФÈkl¹¹¹………?þøcqqqDDDûj‡Î'77÷òåËG 9zôè¤I“Úª6»>DÖŒ3¦ëäËþýûÙl¶•••žR«™¥™R‡#•JýõW,üª‚ T»×ø|¾P(LKKSý—ˆD.K@ÀsÍ&£1ÞrΜ93tèPWWW>Ÿ/“ÉàÅ!EÕÕÕ³gÏf2™&LøùçŸÉI333ýüüœœœ VWW§ôM$3†Édfgg«žVTTÔÖÖ.]ºÔÍÍmРAñññÄ·Á±cdžJx+ íììΜ9R©ÔÕÕULú\j¦´†þþþÀd2‰¦X¥'………\.×ÉÉÉßßÿÞ½{$Á‘¤úüùózzò’jmÉÒ¥¹¹¹Ë–…æåå­Xš y‚ÍÊÊÊÚÚÚËË+**êĉ$%P­v¨¨¨ÐZ µ–1’Ò®ÊÎ;GŽéääÄf³É;Xˆh3™Ì©S§µ1™ÊÎ%âàܹscÇŽ%B)++‹Å&Lpvvž¿¢¢âÈ‘#k׮ݺuk+Ÿ€Tê—_~™››»sçÎâââµk×*/%''oÞ¼ùôéÓ={öT=577ŽŽ...>xð @ øé§Ÿ¾ÿþ{ðññ)++{ôèäçç3Œüü|¸víšB¡ðôôlkŠ´†{öì!‚ šb•ž$%%mܸñĉ†††111íKµþž¼ K—.-**:uòäúØØìãǯ]»…6òÚ›###™LFh]%P­:ÐZ IÊyý•œœ¼{÷îØØØ¼¼¼-[¶…Âääd}bN§ÓçΛM^}lÞ¼ùÛo¿ŽŽÎËËÛµk—££c«>oÚ´)>>^$.Z´(>>>..îäɓݺuûüóÏõ‰¶ÖjEWEÖ*úä Qkës]9E½¦¦¦¢¢"’j]õAj5³Hððð¸xñ"~UX,1EM$ñx¼´´45m&˜L&v²!HW&! 0pI×·˜ððð|ðÁK–,Ù»w¯ê¥ÚÚÚãǯ^½zÀ€>>>sæÌ!÷jÆŒ¾¾¾¶¶¶'::úèÑ£ªÂÏËË‹ÉdvëÖMõT*•fee­Y³ÆÝÝ}ذa‹/ÎÈÈKKKWW× .À… æÏŸO¶üü|///CCÃ6¥¨®®Nk(`nn½zõ"šb•ž¬ZµÊËËËÅÅeáÂ…¹¹¹íKµþž¼ ãÆ;œ•E¼O s¡0s̘àƒC{ÕTWW§¤¤øøøP©T¢îÞ½ÛÝ݈¢Z;¨H:®Zƈ[[Ûèèè¥K—~õÕWª¥–,Y’‘‘±xñbå]R©4%%eß¾}`cc³zõêU«V-_¾\Ÿø»ºº>|øP¡PÔ××k|SSÓ¶mÛ6oÞ}úœ;wNÏ|!F¶s’œ"^yy¹T*µ±±iõAj5³”CùÕRJÛØØ¼º¡oìw^›Íމ‰ùî»ïÒÒÒ”¹O ‹‰>74‚t}ÍÆå— X^ßV ¤<¸{÷®j#fYY™L&#^å0pà@r¯ 7nÜxãÆ††™LÖØØ(•JµÞ«<½wï^KK ñeƒÞ°aƒ\.§R©'??øðá•••sæÌÙºu«T*ÍÏÏçp8mMI(º<éׯq`eeÕÔÔÔÜÜL «iSªõ÷äe˜:u*±÷šòËmâĉ ‰¼.ÁF|+744xyyýòºJàË×,$õWIII]]Ý´iÓ”¿Èårâ^ò&5tE¾´´´¡¡aøðám2Nÿþý‰KKKµÓÆÆÆæææÒÒR]Ñ~ùjåСCÆÆÆ```ÐÖ|i5æFFFZsªUk×ÖÖ€‰‰I«’þ¨¥”ÀÔÔôÕUÄo(L&sÑ¢E6l5j”šZ …</**JmUAº Ä¢‘\.ðù€ö@tò×_ùûû¯\¹’Á`\½zuÑ¢EÊW?öÂ÷¡Ú©V|||RSSóóóÙl6ƒÁprrº|ùò¥K—>ýôÓNHŽš–Óµ8>yªõôAÞ*ÁvèСîÝ»÷ìÙ“èWi=*¤Õy#p# Õ¢¡Oí·oß¶³³kÇâKj·¨EU­RЬ#ZöËT+šºHÏ|i5æíÎ)333¨¯¯ïÑ£Gû$ÍÌÒšÒºº::ŽjM‰D’íçç'‹¹\®ŸŸ‹Å‹Å¥¥¥B¡0**** GØ#È›¤ÙØlxøñrýúu___âÀÙÙYõ-ìàà```P\\}:¤l4hP« Äš)" …h–ÍÎήªªª®®n«õÚ‘ê7nŒ9²¡¡AõT9ÜIíA^´Î LY­­­Ÿ>}šššª«DrĈ ÅÂÂBYÆ‚ƒƒ‹‹‹ÕÊXRR’••UMMMjjªr/:Æçó9NKKKQQÑÝ»wô]YYY______TTôÝwßÉårÂ¥®ÈÓéô ¬^½šF£yyyUVVÞ¸qcæÌ™L&ÓÚÚzóæÍ%%%zV…펶.»ul¾´©6ÔÌ)òèÑétOOÏ«W¯ê¿¡®Ì"§¨¨èý÷ßǯªÖàï ² FBBšAÞtX,ظ–-“µqÎÈÍgŸ}6wîÜÊÊÊéÓ§+§Ž+ILL ›0a‚››Û‚ ¢££uÍG°°°øúë¯ãââÒÒÒØl6ŸÏ_²d‰>ˆŽŽž2e Nž?¾ò‡Ã9vì1³ÃáÈd2Ÿö¥HW(½zõЉ‰Y·n]EE…\.ØÆ~äv¤º±±±¤¤DÙÖL~JBb|>½È›!ØÈ˹*š’¼Œ‘×_K–,±´´Ü¶mÛŠ+ ûõë7{öl]16l…B155uqq™0aÂüùó•Cº"iff¶~ýúòòr ‹Y³f€AJJJTTÔˆ#X,VDD„žUaû¢ý’™žùò’µa«Ñó÷÷?qâÄܹsõ ‹$³H8uêÔ¦M›°ðj-''W€D· 77ðövãñx€ší-ÀÛÛ›xoNš4IëïÄ+˜XöìÙcooO20gúôéÓ§OWž~ôÑGj¾iž€™™™®ùä)))ÊãÞ½{·ú¢+Eä¡,Z´hÑ¢Eºb¨á—L5¹ÿ­G`gÓÇÃs°¡‘‘êŒz­\Ê¿ ÆeÑ ($sŸ¦­É¢R¨ XÖÊ ?‡øä³hMä%©ªªòõõ=wîœÚÞÙÈ… ÂÃÃÏŸ?ßî1Ÿme÷ŽôÉSÿIî&$9ä ùÖùw¦Áy<žX,îXµF¡P:yž6…bDzq#ìßOÍÏ—wnˆùù²·;ÄœœN]¼Q$‚ÄDWj¶V©®ª$>i4+í7å;çêÕ«?vww/)) äóù˜³¯Õ·ÿáƒôl‡îÙ¾–O¤+CC ]KKËàààíÛ·¿ºIS©©©ááá¦Öº2¯B­!ÒÕ tö³½#Èd²¸¸¸ÒÒRÿððppssÓtyûöíÎŒXçÇ¡+¤AP°!o'ÊÝ·_»wïF#_oB¡Õ‚ fCÞ&† rêÔ)µ»Â.šÜ;AÁ† ÈÛ Öô_ßAÔlÈŠ““Ó;‡®jAÁ† ª5AP³!‚ `CÕ‚ ¨ÙAl‚ ZC5‚ ¢×ÊCTk‚¼[š---Çã ´ÆÄåË—íììêëëõü-ƒ (ذxëåSSÓ»f¸¸¸ÄÄÄWÃO>ùdß¾}XhÛŠD"áñx"‘Õ‚ ¨ÙÞ><<< »w@lmþôW…Ãá¼¹¢®cE—ªqÜÝÝCCCŸ>}ÚQq»~ýúôéÓÝÜÜ&Mštúô鎭ñ[5HuuuFFƼyóZ}Hì +‹/NJJ’ËåXnÛ¤Ö¸\®X,.((@µ† H«š­´´T $&&ŠÅb´Ò¡¡¡µµ5…BépŸ[ZZTß¹j§‚¼Ù‚ 77·ðoŽ=жÖ4Î?þX\\Ñ!~677üñÇvvvljDŸ~ú©þÝe---/_ãïß¿ŸÍf[YYéù$hÚ$G*•þúë¯øü´I­î·† ˆVÍ–““Ãçóù|>ˆÅb6›íââ"D"›Í¶°° …h¨.Å™3g†êêêÊçóe2¼8@¦ººzöìÙL&s„ ?ÿü3ykff¦ŸŸŸ““Ó€ÂÂÂêêꔾ‰D¢1cÆ0™ÌììlÕÓŠŠŠÚÚÚ¥K—º¹¹ 4(>>žpÇŽ:t(á­P(´³³;sæ H¥RWWWñO‡óçÏs¹\'''ÿ{÷îîõIàÎ;GŽéääÄf³±AÁÖ VVVÖciiI^ …@ >|¸£££———rLII>zô¨Z{÷îõññqppðööNOO‘~Zûˆ´†þþþÀd2‰Ž Vë‚gϞ͙3ÇÙÙyüøñ·oßnÕ8^^^QQQ'N¾¨}ú IDATœ ~ÔZ jM”ָݺuëÉ“'kÖ¬yï½÷g̘1iÒ$ój­”ëëëIÌ«Ë J²²²>üðÃVŸ;¤‚B¡Œ3æðáÃXnQ­!Ò!øùùåää‚‘#G²Ùl??¿êêê‚‚‚œœ…BÅãñˆJ.BzzúŽ;222Ž;–––¦v•ÏçWTT9rdíÚµ[·nmåJýòË/ssswîÜY\\¼víZå¥äääÍ›7Ÿ>}ºgÏžª§æææÑÑÑÅÅÅ?ýôÓ÷ß>>>eee=€üü|ƒ‘ŸŸ×®]S(žžžíˆCRRÒÆOœ8ahh£g“““wïÞ›——·eË¡P˜œœŒ ‚‚­Íh-›7oþöÛo£££óòòvíÚåèèØjIÖ¬³?~9oÞ¼¼¼¼~øAÿ=u…²gÏ¢ê!z‡Z­ ¢££>|xäÈ‘/¾øbË–-úmdd$“Ém¦µÔ•(͸ZèäÉ“š¡è2¯f¥LþJÐj%MMMEEE$õ²>v Ixxx\¼xËm«-å, Õ‚ ä°X¬¸¸¸sçÎùùù%$$¨ÖQQQ999B¡ðÍLFÚAxxø€>øàƒ%K–ìÝ»WõRmmíñãÇW¯^=`ÀŸ9sæ{5cÆ ___[[[‡­:†Ïç{yy1™Ìnݺ©žJ¥Ò¬¬¬5kÖ¸»»6lñâÅĈ««ë… àÂ… óçÏ'[~~¾———¡¡a;â°jÕ*///—… æææê“@©Tš’’òÍ7ߌ5ÊÆÆÆ××wõêÕ»víÂÇyÓy…Ëú2DyýôSUy©•êêê””*•ZWW—••¥¼¨CBBt%J3n666aaa+V¬HLLäp8S¦L?~<¹y•µ0¨M¥Ó4¯Ö@U)//—J¥666z> Zí +Ê4*{eµÆår4_AÔH$›6m ;þ<›ÍVkåa±XiiiL&ÍõÚ4hòàîÝ»ªãýÊÊÊd2ñ$÷ª°°pãÆ7nÜhhhÉdR©Të½ÊÓ{÷îµ´´Ÿ@0xðà 6Èår*•Êápòóó‡^YY9gΜ­[·J¥Òüü|òU HâЯ_?âÀÊʪ©©©¹¹¹Õ–””ÔÕÕM›6Mù‹\.'ü$òN ¶C‡ǪKYh–ÀÒÒÒ†††áÇ·©$kÖYnnnÞÞÞ“'O;vìØ±cÇO¥êÕ…¨5­e›¤.P«Å”Ñ#Q³ ^^^DŸ¾®J°M‰ŠŒŒ :{ölnn.Ç ˆˆ 1/I…®iÞVY[[ &&&z> Zí +Ä%SSSâ™122ÂÒ«@Àãñ¢¢¢Ð‚èÓÄ#‘H¶lÙBŒ£ær¹™™™ªÚ, @ $$$ ¹Þþú믠  ÿ•+W2Œ«W¯.Z´H)ÿh´¾ÕNµâãã“šššŸŸÏf³ †““ÓåË—/]ºôé§Ÿ¶/j_ …¢Õ8÷ …B¢}¹MñGwT°988h~»·©’—dM 8pöìÙÓ§OGFF>|855Um ÍÛÛJ«už‹v:t¨{÷î={öTóGÏD‘¸··· b³Ùñññ­®hÒµ˜™™Ô××÷èÑCŸ'ĺRQWWG§ÓQ­é"11‘Ïç§¥¥á~¸‚è‰H$òóóƒQPPÀãñˆ~6ÕueY,–H$B[u®_¿îëëK8;;«~S9886 nܸAâOIIIMMMTT1AÏe¥i4ÚÕ«WGW®\a2™D8ÎòåË?Nt©q8œŒŒŒšš’ŠÛ‡VèââbbbòðáCÕ¡=òÐ%öac2™ÆÆÆš«ÿ)K²···³³sUU•Z¥‡R ¶ƒ4HW‹m;âÐjétzXXŸÏß¿ÿƒþøãC‡}óÍ7øØ (ØtRYYùäo***H\Òéô ¬^½úÈ‘#åååEEEÄûlîܹAAAcÇŽ%P%11ÑÊÊj„ 111 , P(ºænYXX|ýõ×™™™#GŽLOOWæu«ÄÇÇ÷ïßÊ”) , š?¾ò‡Ã¡ÑhÄÄx‡#“É|||H¼jGZMà’%Kbbb¶mÛæëëËårÓÒÒz÷î ò¦ó ‡DÖeee$Ž###ÍÌÌÖ¯__^^naa1kÖ,eIŽ‹‹KKKc³Ù|>É’%juVeeåôéÓ‰:ËÔÔ4;;{ãÆMMM„ô200HII‰ŠŠ1b‹ÅŠˆˆPõ„<”^½zÅÄĬ[·®¢¢B.—?|ø¨ ,--·mÛ¶bÅ CCÃ~ýúÍž=[Y‹…††Nœ8ÑÕÕUuæ•þ•`ttô”)Sètzpp0Q jM”Ö¸ÙÚÚ*ŠåË—?zôÈÌÌlôèÑÊUO´šWŸW‚ªyuDÿ'NÌ;·ÝOI*àÔ©S›6mÂr«ŠX, d2™™™™¸ $‚ mÅÏÏÏç‹ÅbÕæž‹ÅårKKK7nÜ( qZìkÇÛÛ›xí*w»Qûø¤!Ös€={öØÛÛ“ÌÔ˜>}úôéÓ•§}ô‘šoš§`ff¦kÀ””åqïÞ½5?^>Z¨æ~æÌ™3gÎÄy› L!›¶&‹J¡€`‡Ü—Ã|òÙ‚N‹ôåË—ýýýoݺEÒÏŽ¼óVUUùúúž;wNmïìáÂ… áááçÏŸ×s-™.Âîé“§þ“ÜMHr>Èòÿ¬ó×*ÉD"‹Åb±Xj’L ðùü®³…BÑcfxdžbDzq#ìßOÍÏ—wnˆùù²·;ÄœÈÉé¼|‰ 1Ñ;'GܪK'‹ Ô~/-- |ðàƒÁМPðöQ]UI|ÒhVÚüÓn®^½úøñcww÷’’’°°°ÀÀ@ý»ÎÞÞ ª¾ý<àá9ØÐÈÈÀÀ€ü®Kùݳ%ù$@ÞM¨h¤±´´ Þ¾}û«ð<555<<üÍRk/ ŸÏ§P(l6[$ZXXJ$åUbAH\º A—!!!A"‘¨V/L&Ó××W"‘<|øP(¢¡º>2™,..nèС<Ë冇‡€›6:9b­ D·\çé`>ÿüóWäóîÝ»ßzëq¹NÄT*¿zµ¢¦¦ÙÛÛÚÂÂà6‹Õ£¡ÁøÄ‰,;»Xþñdz††Ÿ>Bá¡pƒn/srŠñ±D„b}ÈÀÀ@—???ƒ!‰„B¡D"ÉÍÍ%ÚŒ¢¢¢°y¨‹3dÈS§N©ý˜Ó™»:è¨8hM ‚ `ëŠhލFмoQQÏ·KKؾLMŸhHb¸xññС°r%˜š>jM¢QÑK³åääB›I$??¿€€€ƒA É ‹Å8]öÃÉÉ ã€ (Øéüü„B¸z @sU6>òó¡wo4>ú † HG¢k_??¿’’¢.33“غ Aép‚t9 QWk¥¥Àå‚@99pä¨ì„ Ò½pÄ.moÙR‚ (Øi"¨5^ …Àfƒ%%àç,0 ¡©élˆÁ“Ä¢ÿhAlò.¢ÜI"x<ˆŠ‚ÌLPÎa±¿”y-Ã# ›ÍNLLDƒt—/_¶³³«¯¯×ó÷·,áMMMø (ØÞéÊÑ$..îe^ß|òɾ}ûÐŒíƒÉ|Þ{&› b1ää€Ú¦µ"¨lr‹ Ò©0ŒÌÌÌ´´´ÄÄDÍýÎÄÃã°°°{÷îh AÁÖf]DàîîúôéÓvû£Ö¦rýúõéÓ§;;;»¹¹Mš4éôéÓ[©µÚ£L½½}ÿþý'Mš”œœüf‰ÀVÓX]]‘‘1oÞ¼V3TWv,^¼8))I.—ck~~ðãÀç— PP ®Í`0P°!òš (((H$...¸QÛëÂÐÐÐÚÚšB¡t¸Ï---ªïqµSAÞlÁF››[XXøã?GDDtˆŸÍÍÍü±ÝñãÇE"ѧŸ~ª¿Rjii100è¨J-77÷òåËG 9zôè¤I“Ú'J»&û÷ïg³ÙVVVäJ’G*•þúë¯XÆÚÁ!•B!€æ¦G¥¥Àç«w¸!‚¼˜LfNNNTTÇ ÄYm¯š3gÎ :ÔÕÕ•ÏçËd2xqôPuuõìÙ³™Læ„ ~þùgòÆYbµO''§„……ÕÕÕ)}‰DcÆŒa2™ÙÙÙª§µµµK—.uss4hP||}útÏž=UOÍÍÍ£££‹‹‹<(~úé§ï¿ÿ|||ÊÊÊ=zùùù #??®]»¦P(<==ÛšÌèèè‡9rä‹/¾P~_! ¶Wˆ‘‘‘L&#T„ÖrþøñãÈÈÈyóæåååýðÃÊÝ÷ìÙC”üÂÂÂÂÂB°´´€“'Oj†²yóæo¿ý6::://o×®]ŽŽŽºêòZO3ÐV¡ÓésçÎÍÎÎVÖ2ši$¡.6mÚ/‰ -ZwòäÉnݺ}þùçÊÔíÞ½;666//oË–-B¡099YéCRRÒÆOœ8ahh£O›ššŠŠŠHªWe†’dxxx\¼xËX›pqÒR((€Ó§!* x< ¡JKA$>Ølðów4‚ Èk†Éd*gµq¹\]*ÈK>`À€>ø`É’%{÷îU½T[[{üøñÕ«W0ÀÇÇgΜ9ä^͘1Ã×××ÖÖ–ÃáDGG=zTUøyyy1™Ìnݺ©žJ¥Ò¬¬¬5kÖ¸»»6lñâÅÄ癫«ë… àÂ… óçÏ'[~~¾———¡¡a›ÒXWWwäȑիW»»»:ôÓO?Å|GP°½Zª««SRR|||¨Tj]]Ör.‘Hd2—˵³³ÿüs‹Åd2y<Þo¿ýãíííììÌãñˆÑ†R©4%%å›o¾5j”¯¯ïêÕ«wíÚ¥ôaÕªU^^^... .ÌÍÍÕ'åååR©ÔÆÆ¦Õ Õ•666Ê>=DO 'çùä´¨(((ø|pqÀ@(-…ÌLHHøßZ‘‚ ]Š€€€’’&“Éf³ù|>.FÒá 4Hyp÷î]ÕIeeee2™ÌÝÝ88p ¹W………³fÍyòDYçöë×8°²²jjjjnnn5ÐÚÚZ011i5Cue©©©ž!"JBB^8e2!- JJ@¡€êjÈÌ„€4‚ ]ƒ‘––VPP ‹]\\Ú¤ ò×_õíÛ÷‡~ÈÎÎNJJå‡FSu¬vªŸüüüüü|6›Í`0œœœ._¾|éÒ%Á¦¶¦€ÚgØ«XFAÞPh¯ÎëC‡uïÞ½gÏžD 8{öìéÓ§###>œššJâÞÞÞ>(((((ˆÍfÇÇÇ·º¢‰>ÍKrûöm;;»vT.䵕J%9U(„{¡P¨fde’5oi5JfffP__ߣG}2TWvÔÕÕÑét###,f‚ ï,‹Ø_›Ïç ‚„„???Mg@$‰Åb‰DâççÇb±¢p†.)ׯ_÷õõ%œUßòÅÅÅÆ €7nøSRRRSSE´ë¹æ¶££#F»zõê¨Q£àÊ•+L&“ˆ‡ÃY¾|ùñãÇ …Æáp222jjjXºW4655€ªª*¢¸¸¸X-”‘#G)Å|GÞq^a›ƒƒƒ£££êǽ²§ªåœF£3fݺuIIIYYY„!.‘t|¹¸¸444Èår&“illÜÖ5 •U€j­×j š455íÚµküøñ$iÔCemEœ*k+=qqq111yøð¡Ó‹KGò4ÚÚÚÒh´òòòV3TWv§þù§>óôA·•’’???.—ËårU×”H$\.—Ïç3™Ì„„„ÌÌL&“)Øl6.5IBRRÒÍ›7/^¼˜šš¨zÉÌÌlܸq±±±7oÞ¼té1?B×÷€FKOO¿ÿþÿûß4ýæF›ššúûûÇÆÆçå奦¦—úöíÛ§OŸC‡)ÛÁƒ ¤9`G “É´¶¶Þ¼yóýû÷OŸ>­Œƒ©©éĉׯ__\\œŸŸÿÃ?`¾#(Ø:]åüÊ•+Û·o¿sçν{÷²³³ííí EAôYeggWUUUWW@QQQDDDnnnyyùÅ‹‡N¥Rétú‚ V¯^}äÈ‘òòò¢¢"µ™¸ú×zšj¥²²òÉ“'wïÞ=xðàÔ©SåryXXIuÅPWm¥'t:=,,ŒÏçïß¿ÿÁƒüñÇ¡C‡¾ùæò»ÈÓH§Ó===•š“]Ù¡¼úþûïcCy—a0 ÄÄ6WZZ*‘HØl6”””$$$øùù%$$óßP³éâ³Ï>›;wnPPÐØ±c.\¨v511ÑÊÊj„ 111 , P(ºü°°°øúë¯333GŽ™žžÎçóõŒ@|||ÿþý§L™²`Á‚   ùóç+/q8æååEËd2¯ RRR._¾>>::zÊ”)t:=88˜(禦¦ÙÙÙ7nljjòððPŠ–^½zÅÄĬ[·®¢¢B.—?|øÐÖÖV¡P,_¾üÑ£Gfff£GV®Biff¶~ýúòòr ‹Y³féYëUVVNŸ>]YëiªõÞaÆQ(SSS— &ÌŸ?_Ù†¤5ºbHÔVQQQ#FŒ`±XK–,i“I—,Ybii¹mÛ¶+Vöë×oöìÙä·´šFÿ'NÌ;—Ü’ì€S§N©NiCAÞY˜LfZZ±]›‹‹Kÿþý»wïž““£©î233y<žæÕwoooâ}­ÜAGíwB† AÀž={ìííIFÜLŸ>}úôéÊÓ>úHÍ7ÍS033Óµa@JJŠò¸wïÞº¾ Ô¾¦Î;§077W&ôù¨C· ɤ¦ik²¨*–µ²ÂÏáƒ>ùlÁ”ìË—/ûûûߺu‹¤§þ]¦ªªÊ××÷ܹsj{gëÏ… ÂÃÃÏŸ?¯6‰îd÷ŽôÉSÿIî&$9ä ùÖMéàNÑkâb‡†Hé܉4bˆÉư?5?_Þ¹!äçËÞîsr 35ˆH‰‰Þ99]nyýï¾ûnñâÅÅd2ÕH$—´´´€Î]g©ºª’ø¤Ñ¬´ß”W¯>~üØÝݽ¤¤$,,,00Pÿ®3äÕ½ý<àá9ØÐÈÈÀÀ€ü®Kùݳýû“À͈ÐЈ&–––ÁÁÁÛ·oo÷äïÔÔÔððpTk‚ ˆ555~~~QQQ‰‰‰...š²Á`ˆÅâ\·Èd²¸¸¸ÒÒRÿððppssÓtyûöíÎŒXWˆ‚ `CÞ6”s·Ý»w£ »Ø¼Š Hç ‰D"Q«Î~ùåsss‘HÄb±,--Ïœ9#Þ{ï½!C†899nˆ9íúêçç§uýÉw“!C†œ:uJíÇ®0¸¸" ¶6£9&AÞ^Ñ‚tŽ`‹u¯âþsshl€|pr''xú.\øýçŸwt„þýaÈxúºuk½ú‹Ÿk64> JüŽÇAÞ\ÞÑ9lÒit9l[§`ˆo~ˆ]g[uU…êéüoò°JAAÞ¾ªzja©}ñ‰ ‚tu©6aÄ4‚ òºn÷òžl^s¶e¨¾ÝÔd 6AäÍSkc‡y€L&Gk ‚ ¯‹¿šdxÙ/²–åëŒx»Íÿ&\³¡`CAº´Zû3¥‚ òÚih–SáeßG2™Lí¥ö!g¹f뺂­Õ­Òt9À=ÖÚgØŽ²[\\Fk÷~ä|òÉ'S¦L™1cæ#‚¼;´ÈÉÞŽ'÷}—µ'I¡hý J¡PÆýߢñAáhRA¤½‚íe7ð”ÉdäïµNlׯ__³fÍåË—i4Z¿~ýV®\9zôè.kúÙ³gwïÞ=--MõÇØØØ³g϶cZBö”––Òéô—ŒXYYÙ×_}æÌ™êêjƒáããÃãñX­.¿Õ^<<< »wïþ2žTWWgddœ;wŽäIhÕà$ _¼xñŠ+¦M›†;¼!È»Àüoò|½û“w¯ùñ}Ô(ŠìŸ¿ãþßr4,ò&þ‘œ¾Zq¹ä)ZA^ 5ËhÐòÒ‚­Eó½æëÝþ7yºvKïxÁÖÜÜüñÇ1bÆ ݺu»téR}}}W6}```XXXMMM=”Â÷À‹-ê´8´´´P©TURZZ:eÊ”1cÆ|ÿý÷666OŸ>ýõ×_·mÛ–žžN~c»144´¶¶~IOöïßÏf³­¬¬Hžrƒ“'œÃáH¥Ò_ýuĈXk È»@«ƒ!e²eoàakðËm©ÜXÑÇ.\¨*Õh° ÃÜð±zË)ý.–]ÄÑ•HÇ×ÝjèKÔ5Ÿ}Wíª\®xÏðÊéïÀÉ+OÄw$$Î ¨¶£ß¦FP]×|ó~MÁm‰Lþ¬žþöfÎ={›wëfhÐÜ"¯¬iº÷ä¯ 7«drI@Ä%5¾p^· IDATÚÿ;>Hס¡YNÓÖÃfldhhúߥn† 44Ë´½¶dm-Å/ØnݺõäÉ“5kÖ_펎ŽÊK …"==}×®]<°°°˜9s&1p.33S ܹsÇØØxìØ±qqq¦¦¦ª~’88sæLlllEEÅŒ3âââ Ôâ³sçÎ;v”••YYY‡……©É›±cÇÒéô¬¬¬àà`â—óçÏWUUýóŸÿ$¹]WZüýý€Éd^»½ÕÖÖFGGgggÓéôààਨ(*•JôÅíÚµkÆ wîܹtéRïÞ½•±Z½zõèÑ£“““‰S[[[ww÷ùóçÃßxª7»ŽªÙ‡p–žž®Õ>………k×®½}û¶‡‡ÇÖ­[U‡DêJÝÞ½{¿þúëGYYY-Z´hÁõ½²²²¦M›Fþ$œ$á@¡PÆŒsøðal‚‚MÉ?ͨ)dG —îi¦ ˜ 0‘øºm™9ð/;8Zbò~ŸÜ­¾‹‚ éâ pxÞšÉ05²îIÿ³ºAõªB¡xuÏ0¹çTJ€oß¾½º@um3X÷¤[÷ìåÜÛdï™2B³Q(àϱswèRÙ㧆”>Œnv–Æ—nU5Kå­ôì/i}CK›jéLÁf¨!ØLè SC TÕ6€Uº™1B&‰ì¯&YWl–––pòäÉÀÀ@µK›7oÞµkW||¼··weeå7ˆß©Tê—_~Éd2ïß¿¿zõêµk×~õÕWª7’8HOOß±cdzgÏx<žƒƒÃâÅ‹UoLNNþå—_bccûõëWRRI¡P–/a< NŸ2eʾ}û”úaß¾}£G¶²²"¹]WZöìÙ3{öìüü|###eÑÑÑÅÅÅ|úô)dz´´ QÆpóæÍ={ö477Wº¯­­={öìÔ H¡PT“¦¼±öIJJÚ¸qc=V®\“‘‘ÑjN=~ü8222&&fòäÉ•••Ožz~ïç3À ÿ¼ø{•®SøpHï‡ô€õ{¯iÆÍç½^}{uW(?Ÿ+»S^ ®¶fÿ7¡o¯î,7Fnq°\-µvòÊã 7+å Ð ¨®6¦Í-Êy;2…\WIÌÿ½’ˆ‚tA¤-2­®´E^רbÚÖÜB€nFÔ§õͦÝhõM²ÆfMÁÖÒÖ7QÇ 6›°°°+V$&&r8œ)S¦Œ?žøšß¶mÛæÍ›'Ož ¶¶¶žžžÄ-Ê5$lmm£££—.]ª&ØH„‡‡0–,Y’‘‘¡*ؤRiJJʾ}û<<<ˆˆ­^½zÕªUj‚ §NZVVæààP__ìØ±-[¶ÜN’BwõêÕK9‡­®®.++k÷îÝîîî°xñ⌌ ¥`ãóù^^^jñ¹ÿ¾\.wqq!N9¢Œóõë×5ol‡}V­ZEܾpáÂ… ªé.­©“H$2™ŒËåÚÙÙÙÙiÙ†¢¼¼\*•ÚØØ? º Þj lccsïÞ=¬2ä¡ÕfÈjàôðö €ê"^  ìi™T&Å{¤+3ȱ'üñ¸îÚ½§þûŽ=”²‡`ø€^ ͲÆfYî†\¯>µ5_ýã)¡fr€š¿¤ ôµê>k”Ó§î–üYû¿²ðâpJåéÃʿ쬺À³ú溆]ån cO(¾_óûýgÄ/¿ßvó~͇žzž»ö†0Pòg-qª,Å×ï½0ïN¡{`§B®ÀBŠtaÁ&—KÕç°56µÐi 3£êÚæÝi ©mîÑöXÒø´¶IË{­¥ ô°@dddPPÐÙ³gsssy<^hhhDDDiiiCCÃðáÃ5ÝnܸñÆ 2™¬±±Q*•êé`РAʃ»wïÊU])))©««SŽÐ¹\NÜkhh¨ê?‹ÅrrrÚ¿ÿ¿þõ¯£G;–äv’´hrïÞ½––BõÀàÁƒ7lØ ŒçÀ[õaôèÑ999ׯ_ Qü]k«ÞØûôë×8°²²jjjjnnVú¦+unnnÞÞÞ“'O;vìØ±cǯ6¸´¶¶T™Ôú$è2¸ž 755%"¬Ú‡‰ È;+Ø<~ÿ_{äåA¯aÚ]ú:ûž¼s¿‘.‹•âî`WJ%7ÊžN|ß®;æÜÇäÖƒ¥›ÇO¿?væOp³·êîóžÕo%Õ0b5ܯ¨ß~üÌïÚ·—ɈAÖ·yøðáÔÔTUfffP__¯\M„äIÐ4¸ž ¯««£Óé¨ÖA/¢Ž0¦Áÿ6øËBv꺛 Ob7¼™2 Ò•yÏÎܘn “+®Ý­nh–ÝzP3À¡ç`gF±J÷Tñ½§Òq`oÕ½£ñHÛX@qÙ3âêͲg}{™ØZ¿ Ð^œ9&טH&×c‚œÚô3âûB¡hí»«|Öt¿¢¾o/5ÏIzZ×\Û UcEº--Z†84·È[dri‹ZZäÒ¹.—ZW‰|=‚M‰‹‹KCCƒ\.g2™ÆÆÆ¿þúëÔ©SU”””ÔÔÔDEESžNŸ>­æ¹ƒëׯûúúÎÎΪ:ÄÅÅÅÄÄäáÇC† i5žÓ§Oÿꫯ>œ››K,°Ar»®´(…ª^rtt¤ÑhW¯^5j\¹r…Éd’¯ëØ£GáÇïܹ“Ð-ä´Û>º IF3f̘1cFŒñÙgŸmݺUÕC[[[V^^®©õI nÑ4¸ž ÿóÏ?UW²Aä-;¶ÖüD œZÀÑS^Ñ !Øö߀텗¦{öÓÇCy] va•B Ÿ1 iTèïÐÓÀ€Ò$}þå§ (ˆgX9Nò…Gúï« Š–« …¢E.ïfø|ù1¹\¡V4Q¥²¦©ø7£›ªKc¨¬i$~|"i´³êîÐÛ„8=ñ[ù‰ßÊç±Õ<' èܵÇç¯?ƇéšH[äZ~tîmbnbôäiÃÌðäY“¹©a“´Û½'õÚ[؇­¨¨h÷îÝÓ¦MsrrzðàAbbâðáéT*N_°`ÁêÕ«i4š——±”ÅÌ™3íììh4Zzzzpppqq±Úö\@î ))ÉÊʪ¦¦&55uÞ¼yª—ètzXXŸÏolläp8---EEEwïÞ ÓŒ¶½½ýСCW®\éäääííM~»®´±¥P(ÙÙÙ#FŒ P(¦¦¦þþþ±±±ÖÖÖOŸ>MMM mÕŒëÖ­›:uê²eËæÌ™cggW]]™™I¡PT—ßxIûèBWê®\¹RPP0jÔ(CCÃììl¢7LíFOOÏ«W¯{¦ézt\Ï„é£cß2ø|€W¶ Ÿ¸\hû6„⻢X B!$$t¤Ÿ­6C>pøûXÒ¨¨­Õ⦩jššOÞ9 ¸èÒU162èß×(èNÿß癡u CÏK·ž/.2 ¯¹èr9!ä ¼ªA9Í©·i{sÑårP@{sxPQO\ml–u32èÑÝP&“»9=7ôB——\A¥RŒh’rùvÕD{'†‹1Òr€ƒù@Gs(¼SEܘóÉ4_§÷ì{s·þõÚcÕÙwªÁQžO,ý»]†´ßAº`“É›Õç°Yö [˜=~Ú`iF¿_QOèÍèöäi£UzųbIU5Áöú{Ølmm ÅòåË=zdff6zôèµk×—"##ÍÌÌÖ¯__^^naa1kÖ,°°°øúë¯ãââÒÒÒØl6ŸÏ_²d‰ª‡ä>ûì³¹sçVVVNŸ>]mñ X²d‰¥¥å¶mÛV¬Xahhد_¿Ù³gëŠy```nn®êök$·kM ôêÕ+&&fݺur¹œXÖ?>>>::zÊ”)IJþÊEêIèׯ߱cǾþúëyóæI$ƒñÁdeei|ûèBkêLMM³³³7nÜØÔÔäáá¡)­ÀßßÿĉsçÎ%t\Ÿ„Ÿ:ujÓ¦MïZ!ƒŸ_§†(uv1Ä· D‰Äâö³Õ·Ú €™º¯vïîPBß“Üsd8â· Ò5ñp¶¢Pä ÅšâúÆç_„ &öww4÷v³ºPü|eæÞ ãU3€¹©œ»ú'ñHÿ·àÁ‚Iý¬MVͬԮP@vÁâjIyÍ@'Æð½{3Œz?ßIuyÇ’ËîzÙº;2ärÅ–ÿhY%òÔoåz:÷1 ™øÞ“§ `mn ÷+êO–^¿öˆic6ÄÅrêP?/ÛêÚ&“n4Íà&Ðwò}•>ÿë» Ê㑃zaZ(OµÆA^›`k‘iö°56Ëdr…¹‰ÑOêJþ¬€¦¹¥±L®hlÖÒ#׎!‘’ÉKÓÖdQ)T,ãûrøàO>[€¹Ø¥PÝW­Ó­ªªòõõ=wî±÷Z‡sáÂ…ðððóçÏwÈ^áÃîé“§þ“ÜMHr>Èòÿ¬›¢Õ— QQíÑl è1?oÄ_`íZ )×®µùN‘ÛÓ§·v-…Ôk×䯡CöÖ–ä÷¦„¿ 0  `ÙbÔÂñ¨Xз陸{ÿ@ÿgï¼ãšºÚ8þÜ$ì–,…àBp¯ª¡j«µÕBûjµÃ j]u”¸ZѪ µ*ÖA¬Öª]ÐÖ…£­£jq€B]QDYa¬ûþqàzÉ" èóýä£÷žœ{ÎsžsIî/ϰù2XšX¾îûºÛäÏð i†ÌÓÉÇÝönfQÌÞ§¥_«ÿ ñ¡iøbçååÀ¡ éÎv]}äJõñ+™'®>b2û¶±Ö£5™0–‘SzôÒÃÔôªÉo¶f·oÓÊ:·°bÿ¹´°7:ÀgžE2ø¸Û† ¸ò-8 f~{N§‘<.çÕ®ní\ì-ȈÍÛ…âCÿÉOI)€{û¶òp¶23á”Wªç—¥¤ü›ò¤¸\3]Ç¢@¤:o!H3¡­W«¬¼bí¯Z'[35 yE•Ì_£­äUj•¦ÞLnãå£]xFvÞËFéþÓC×# ˆ££ãøñã·oßÎLKkX6oÞ€Nm¬ßtŽ;ûø~v9‡CÍéõë?Y™ù•ƸbßÅ'Œ–fÜ÷ú¹fT½šË6~hg‡ûOÊ.Wí4TTO */Ý-ÐáØW\,´}H²í½­Ó‡®ö¦C:;8Ú˜<)¼œ]Pª$ù×L“+ÕУ­]€ÀÆÎ‚W.W'¥ŸN‘@/›~ím,x¥•ª‹w ‰=l:xX¥<,an÷Œá~1Ð|½Çå<,d—á_;‚ ‚ òò ¶šÃæjŒ¥S©ÕŠ¢(š¦áµnŽÎv¦{Neš›pßêåRV©ºt·dëÓÁîÈ•œJ…ºB¡úíüãwú¸nù3]¥fŠ5ÐÇ“ód% [K^pW§!Ž^Í!oõhkûÇ…Çæ&œ·z¶*,µ»p§€mCŸö~žÖ‰×ss‹Ö&Üh€sÿÉt6áâ‚Ûx¶s³¼“Ujd!ÚÖfäUØYòl,¸ÅåÊÖNæår•§“Ùýì2W;S àqA%mŒ+¬ÍIÑÖæœ÷ú»¥ç–ÿu-—m±ãíbñãéGzMj:¶>ì×ÑþèÕœJ…zDwçஎñç³ÝÒß—ß]`û×µÜGù•–f\;SÚÚœ;<Àéäͼÿ2K-͸Öf\ óx\ÊÕÞôDr+]ï=c _Ìx”Áæ<)¨jk×BÅ‘Édáááqqq‰AAA÷îÝkŒ¥R©H$"5&&&ŠD¢ÀÀ@>ŸOÞ …B¡°A*bž˜˜b±X"‘£¢¢°i5ÆÅÅ ™L&‹e2™L&ãóùQ£P(”ÉdR©466V ŒŽŽ&yBBBHüF‰DrìØ1âI‘H$“ÉH†„„4ì=#‘HÄb1©(""‚Ïç“J$RcDD~×"‚ Èól5#lU)4M[˜r{µ·˜[®VÓ¦®÷—%&åjØlkÉ¥(È+–ÿwð°èBÞZŸð@Û±õðáÉyäò · F÷lUnš¦¹èÙÎþ°$;5£„”™%«sEÁG¥…¥ŠÂR…öÝbmÎãr¨¢2%+¦ûž1Ü/¶V<Í'ú¹¨LioiÒB·'ÏÙl¢££¥RiãÕÈ~úg«µøøø°°°ׇD&Ñ’˜˜ìØ1¢1Äbq#ÕÈh'¢ãâ∠æóù ®.ˆþŒŠŠbÔZpp0¨¡¡¡ñññ (ØØ5ÆÅÅ1jM*•îããÃçóJu“ºBCC/_¾ÌçóAXXXxxxll,ŸÏ—H$AAA ÁU"‚ ‚ `«3*ÅÓå)ÕJ.ÌxÝ LxœÌ¼ò}ÿfª [+sE=Ê)V)T™Sòª¿£Z)'ùå–t¦•B®b 6G‹Aœ]ìÍLxEñ¸­RT]›Suí£Ü’Áž–©RÈí­LLyœñÝ™r(æÚšk„0—ü›šäÓ¶]+³ârIq°65PˆNkÓsJ=ø¦ÒGjK3î¥[¹½;´•ÂÃÁ4=»T¥é rú^·»Jþ”di»]­äTU­PÀÝ å¶ÜRW¾ù˜¾j¥œ¼Ëvl=|ø$¿D¥P@q)—Ç¥ :¿J!··61áR÷³ŠT %Ûª'ùò̼ò‰¯zÜ~Tr'³øVf±†\2T”Wjô¸ö=c¸_ÔJÊ@óIwTTðˆÙ*u Ólñññ€„)Ø"ªñÔZttt`` »ÆØØXr ‹#""ˆäh(¢¢¢4”ƒX,fÔ‹P(‰D +Ø´k$á rÀ7jÑÑÑ|>Ÿ43,,ŒÑÃZ#¤ …b±¸›H$ a"¢D˜HjDÁ† ‚ Ï_°i‰ÜyüB©®«Ê媚yh­Ì4¨Õj}äÈCü{ƒZ§>,:u#»\®r囿ÝÇ“CцË ) `Ïßi,3 º:M +ê ·òvr>té‘q…è°áaNiŸŽNmœ-2rËÊåJY±ÜÝѼµ³åå»ùlójs ÷²J®V¶–¼¢2ÍhUAi%Mƒ£­iFnÈ•*y‰ÊÒŒ£³´úù¦Ù€ª‘t]4 »Ž?¸Z \­_ïáæÛÚvïùÛVT*U`jBU(èÚîCýbLóMM(¥ŠV©[ØÞ»2™,111$$„-Ÿd2 sÅÇÇ7xR©T&“ …B¦Ff| T*•H$ŒxkÀ6’ሌn‘H$l…¦!V£Æ°°0R#icÉdjFÕÄÇLJ„„ˆÅb©TÖ°XgDŽ2 +øÃÂÂÈOÆ«lÑ(“ɼ‚ òRÁi0¹VWæW–U*™ÄüâJ5M·²7'§n|óüâJµšf¯!A¨Š}ÑO¬MÌM¸_ÏÎÈ-Ë+ª´4åk9Vöf丕½Y~I2s‹*äJµ%/¿¸’ý¢uÁ”yáVžµ9ϯ­1…h[KÓtzv©³Y{›ôœRš¦ÓsʺûðÍM89eurüu%ëAvé¸WÛXšq5 ®«d—µåëk»´zûP_±yE •ÚËÙRÛ“*µúΣâ?¯d¸éÛÚVã),•«Õ´¯Ö{Æp¿ÔÚ|š¦m,x¥rúùQ¿?(‘H¤-¢££o:£££|h"PP( "Ú¬ñ‚‡"–HL]DáÅÆÆ6`è‰Ñ3!!! ((ˆ„ï¤Ri||<™Ùš˜˜Ø5òùüàà`&xÈnlÖHzŒ\ …>>>¤"[#4D8‚ ‚ ÏM°UÅ3h­¸ ë%W¨SÒ‹„ÝZ¹Ø™{9[õñuºrO¦3?™øÔÞÃÆÒ”giÊŠJj5Ý«ƒ£½¥I{w›^ª.€þ..væ­,ûø:]—°ËT*énæ¼äÞÙËÞÎÒÄÁÚÔ¯µ]?gmóØfÈêóÿåv÷q0¦mk†‚EQ™Â¿mzvО]æßÆö±¬B®P×ÁÕ§ =‘UŒ{ÕËÜ„«aöŸ’,7ëѽ=<-mÌMZÙ™wyÅžn¾W³Þ>ÔôË·þËèêëikkaâÆ·èö hpã[ôhçèhcÆ·2íànSX*§Õ5lV*é¬ü W{óZïÃýRKói Æ<Ì)Ó]rÓ¼ê¥+„B¡Æ`¹ÄÄD>ŸßHÁ 2hMçð<zjðyVB¡,ûAFÍ1‹p4dbU````` S#ŸÏ »|ù2™5×°5FEE‘9c€½Ðˆ@ é"‘¨1ÚH† ’£¢¢H\Q"‘»¨¡ª#‚Ü9^%†6† FAlõÓk4ë¥Rõ:|)3»°â£àW‡ÿì IDATÞéßúê½ü ·ruæ/©P$^{, pýìísÆt¤.­T¸Ùåû©#Ûõìàø÷õÇÕ—\¼:°õ¸Á^·3ŠÎ§j–y6%çøµÇ½}§l7y¸OÅå ]æÕ0ãâí<¹ReL!ÚÖ’WzN™J ™ye4Ðé9%E¥ç”ÕÑU§jZ½÷|FQ™â½Amx<ŠmvNaÅö¿î@È€Ö3F·7ØË”»ã¯{JµZ£´gñaÍÓ§é'=9Ÿš;´[«éo¶{w`;kèJ¥ªƒ§Í¤×SÞhëlgöÛÙ‡ÚÞNyXØÖÝÚ˜{Æp¿l>Míãn’^¨§ä¦xÕO>‘• % ‰e÷I"4èd62Ò’”É®‘1¦1¸ãããû™PƒØÓW£@ Çd (I iXùDÆ=2§¤ã4ôRÃû$k¨0^%ÇaaaQQQdÙÆ†]”’ü|ÀþÝÞðððˆˆ ¯!‚ È3Ò(«Dfä”.û)Yg¶ ¹ê³5uæ?—’s.%‡’t_–tÿé’É Ø×¦¤(óê½ü«÷ò 7Aã¹Bõõï©ì  Ѷþ8›Î•)4ÚhŒ+ا*ýóÉ:kÏ+ªÜ{îa­-ÒçC¢‰î>*6ìCæT#ýlJÎÙšmÏ-¬Øu¼–ÇîëRÙgK3.Ù;ÛÀ=Sk¿èk>x¹X©Õ´ôqq Z$R&“éšØ¨k£3…kë¥Æ¯@tt´P(Ô(Y(²ï5l81<<œYŽ’‘£AAA$Ö¬H 2®•i#‘jËo4ì¢#5J¥R@@FØ5 ‚}Ä4‡ì.@êÒ9¾·‘ i:¨GÏ´ˆ?öÏfÏ^¼x‘ Wogý~ò¿ôDzfe6—Cy¸Ø}Õ7 ½>E!‚´$Á-sÙtäiß=f5eŠ+wó{¶¯ ô5}}N%=¡[ÔúìU×™½³˜ÙÚ¦1j$œØ…7’`c¶ç"ñ=ò@OVã`,iØ¥™h©‘¬¡È˜øøø†UÅ+šYHVMd|Û°(v‰‰‰dƒ„ððp²Ê? ¸5¬WCBBÈ^²×éG±Xœ˜˜Øà>kÿT)+kÝÆ«ý±¯[¿~÷ž=·þKÕùnjZî÷‡¯÷îÞiè g‡Ó|ÌV«é¬'¹Û®~\ÔW”Ait(‹"Œùâ ‡â€xf/Ã¥$ìß{߬'z³…âéd9iX»U¿&Ë•jôFƒóJåÅ‘£ß®å9;æ¨iõËF1‰"‘H"‘Á{LØD,“åþÙ‰ …΃‚‚"""|Yvfóh2NÑ-d—¹ÆØ8[&“‰D"2P0,,Œ´ˆ˜A™0Tƒ·Q*•†„„0>$£@ƒ×(•JIsØ5J$’øøx"þÉœº†íJ¢ÊÈ£¤Æàà` YïûÇø¯!ptrn‰]ºtùûÄqíô/¾;ùŠ ‹“cóÜF2'/_z÷öò°Áø! òŒè|lÁfÚÝ :›üRý‚ Æ ûΩS§Zh3Oþ}¢sçΉŸ¬Ø7D(ä]ešjš>‘˜¸ò“Þwoß.,,À{U'ÇÆÖ¶m»öÐrÅ´Â¥•+ö)‚<ÁÆC!‚ -–«Ö`ð¡¹9ÙÚšèñýêf½‡¤:õæÍ€  'g—f5h³9H­ÎÍɾ|á‡ÃéÞ£G uiÅÕË—¹<GGGìVizL°}ù~7ô&‚h³kÇ%t‚ Ð9Ô…ÇåÓÞhÎf¿;›¯¿¿¹¹yIqv¢>ÌÍÍMLL:øú¶hG™››ûúûÿ—r³ß€Ø§Ò‚‚ ‚ öõÌZýtŤ¢’ò½Ç¯<|,S=˜—ÃiíÊ[ØÝÖÊ‚m¡­móŽ6 JKK^GÙØÚbo" 6AA¸ЬàÛÁS×=ÝœGéÁå>‡1u*•úJêýC§’ÞÑ“m!è "lˆ‹^Ga_#Èóד+W®xxx”––¢+jeÅŠd­¼&`âĉ¿ýöúA–¯êû™&¯û¹Ý:zq9TÕ,º^ÉIIݺ—•–ÈS¿—Cuïè}ïacÍã‘:/FCyq[Ìc‚ŸŸßŒ3 ØÙØôêõt°ôôôÙ³gxyyuëÖ-,,Œl"TáDòTVV¾ÀÒ‘ÍÑ£G›¸v¾ÍÏÏß³gϤI“šæÞ˜6mÚºuëpˆ‚ ú%&ffÍÒZ.Å~ÎW©Õjè¾mÛwìDš¦Õ Áõë׺——W0)*µšýøÎãRÍGKH®\iÝÆ»¤¤”9hÑ‚­¶‚<Ïo„¦©æÜ¹s™™™óçÏŸ7oÞwß}§ñ9ær¹ä@*•¾ùæ›C† ùî»ïÜÜÜ Îž=»uëÖmÛ¶5¥w”J%‡Ãik:±Ýhooß|Z÷ûï¿9995ͽѫW/…BqöìÙàŸ7‚ àiK%üϺ«(…’ÞqU>óH¹\ЩlÙÌF»v@Ò¿ ù|zÛP-m8s7³»Ðýƒ‘Šòà²Sä?PÑ*}r9 VÓôÓYlÀšÑpà`‚¯ŸßÁ„„>ú¨* 4€ZMk䬤(šÖ,Šm—S˹ììì¿=~âï'OžØÚÚôèÑsJøäîÝ»×Þ«W¯¾õöØÛ·RÍôÈëÎ:]¾tÁÂÂX©¡ v CjO¹yÃÊÊR»9(“&éäääââqüøqí·Ìr±K–,yõÕWcbbÝÝÝýüü&Ož,‹ TAb2ÿüóOpp°··÷¨Q£ÒÒÒÈ[£F@@b5Ì%;wî8p ··wPP–!å$&&2D äääÐ4-‹ûõëçååÀÝwõêUíêâââ„B¡···¯¯ï¬Y³JJJ ›—ŸŸ?aÂ@0bĈ_ý•°Òi¡LMM ¸¸xúôéíÚµëÔ©ÓªU«t¶îÏ?ÿôðð8sæÌk¯½&Fžž.‘HFŒñÊ+¯Œ92==Ý@£ ø–áàÁƒC‡m²{ƒ¢¨!C†$$$àßvS"‘H›¾^²O´áO™L–˜˜¨3>߬hF¶D¢ΰíÚŠ 4€@ &*¼»Yåû©A¦pð °‰SSáÖ-¸u ¬nh¼ Ò£Gü«Cn]f{kè|If¸<ë2óºòÙG+C+¤WÍ«•È>¦ÎzœuõêÕ+¾ÊÏÏO¾‘\‡€/\ýÖ[ý X¥R«È[%¥%‹—,0pàP¡ðÛMߪi5 tòä =JËÊHrZ)¯¤&"°o¿~A=zõè¡Ó.e(p”‘‘1rÔ謬Ç߬]súÔß»~ø¡Cûvk×®kŒ8•B©¤(Šü2X•=¦P*U*Uƒ®m0—Ëešƒ6Aš:vdjjªR© X+..>}úô‡~¨‘N±èºuëV¯^}üøq“E‹‘ÄÝ»wÀ… ®^½zõêU’³k×®åË—Ÿ?~ýúõñññ111L9111k×®=yò¤½½ýÚµk7nܸ`Á‚óçÏÿðÃ^^^†«ãp8K—.=wîÜÎ;SSS### ç‰D999‡ŠŒŒüöÛoÙ6°°V,Xššºÿ~±XüÓO?±#WLëìììà믿^µjUbb¢‰‰ÉÔ©SW­ZµbÅŠ'N˜››/^¼Øp£tú–¡²²2))©K—.MyotîÜùâÅ‹/ó_µH$ ¦(ÊÁÁA&“1éáááE…††J¥ÒTáááÁÁÁM¯p‚ƒƒAxx¸Í&‰BCCE"Q3ï²æo¤NÂÃÃëg¶X,&—˜˜Hšßæíˆ€…šÞ“$_z²âR¦8jØ<Â’–ƒ·7ØÚ>½ÄÜ>ûL»‡j ½œ>ÝûŸ©5j©§/Š¢€b žÚyÜëP:#¯„„„=z¸»{ :ôàÁƒÕéjš¦üñÇÕ«W¯_¿îøñã»wï&o­\¹êÎ;Û¶m‹ŠZµwï¾ü‘ÉOÓjöåddå7ß|CÓôþýûŽ9|äÈa&jWsH¤!9ñåÒH±xkÏž=ÝÜÜüýý>ûlö¦MÉ»ÅÅųf}æçß) {`tô¢|®\¹êýŠÏ?gÏŽx}d»öß36--ä{Ì;С£Ÿ÷+>Þ¯ø0™?þÚ°:øþõ×1ïW|JKK‰_OŸ>=pЫ¾~-^¢T*™ü¥¥Uƒ ÉiEE…Π[ÈTš““ók\\ß~|Ú¶ïÕ»ÏwÛwÔK°hå`[«V«·}·}ЫCÚ¶ëУgﯿ^Ëdûa×î!CƒÛµïØ»O¿ bju£>ku–ƒ‚ AšMºJd~~þ¦M›zöìɆ׭ÛÓ ÜFŒóðáCµZíããC:4{ölr|óæM>ÒÇÂ… `Ê”)S¦L!‰dˆ ³³33ÚA¡PlÚ´é·ß~ëܹ3¸¹¹-Y²dáÂ…LE"‘ˆ”SYY¹uëÖµk׎9ÜÝÝÙòCguï¼ó9pww_°`ÁôéÓ׬Y£/qqñÑ£Gþùg___øàƒ¾üòKc,Ô€q£««ë™3gJJJ<¸k×.???˜6mÚž={ÂÂÂ4ZGæŒ-^¼800<{}øá‡ äÝðððZ¥í[6=R(nnnMyo¸¹¹1ÑË—4¤ÁÁÁDJÅÅÅ‘ôØØX¡P(‘HH††B(FEE5½`‰DaaaB¡0$$„ÜÀ:‰åóùF¯Äb1ógR?Äbq`` { tÙs°Õ£ù$²Z;J*•22[ 0wiòÀøjÕôc’üý½eä,ò¸XQ™smyPõCµõÓ«”JX¿^í0¶:)À¨U“èBÙé1?AâĪóëaè.ÖÛTwK«N®V¿±ÚÓÞ³ö¯gÐ5‡D²:2%<œVÓo¼þÆgsæÌžõ™©©©Z 4 “&}â#ð€ &îÛ»÷ýñJËÊŽK\·n][Ÿ¶ðþûþø}ïÿÞGò«UUµ°Omlliìíøä³©šmOÿÈÒÒÒ¿ÿ>¹g÷. 666$eÑâ%·nÝŽ‹+,*üôÓüI“>&oÅÄl\¹â+› ~ñÅ—ß¿vlßöñ¤ÉgNŸ$ŸóŒ~Ø´iKtÔ*[[›'ÙÙìôíۿߺesQQñ§Ógxzz†‡M¦k•dŸjnØB¦ÒŠŠÊ… G|>ÿõ×GäååegçèsˆµCëÃÉN\¿~Ãî=?._Ð-///5õ?òîæÍ[ö8øåKÚµk+•J.Z5cú§úܘ£ÓZ}åà#2‚¼t‚ÿ…i Qž|>¿¡žõŸ=ð(•JAËui]/¹|ùr½«;vìs¯6øi°³úxO’|ÂÁrö»Ù¥´CTa‘HïtßµßŶ¯ëPïñû@ÂwðõyÈ«Q­,d…Go½9驪‡á¢¸OW‰|úOþKNN–Éd »téÌçóOŸ9#:„dèо9èØ±ÃÃŒ µZ•™ñP¥RuìО¤ûúvÜ´i“Z­bN×ü—®y Ú6 i=c"ÒÒÒT*U»¶>:3”––:txûwâŽÚ@xØ'?ÿüËÇ}HÓjø|ÞÜ.;À'“&Íœ5›”`kk ŽÕRM2ÏóÉLF0é3g|Ú¡=)|ò/¿üöÉ$’N"‰À>Õ.ܰ…L¥·oßQ©TCvsuusu½¡õÑ0L#±¢¼|ÛwÛ£V®1|¸¶jåïçG«Õ …bËÖØŸÜM¾Ð[¹¸,ˆøüË¥‘Ó§MÕçFY~¾¶µÊÁGdyéÛ,--íìì´×ÃhӦƽ§§'‡Ã¹{÷n=È㾕•U~~¾1i,¡¡Oàé¯aÇÓ8¨kueeeãÆ5jÔüùóù|~rròÔ©S¥d¤yÆXX« õzÍB4¬ªk£ `ccC¾›mÙCŽùÞ())133{ÉÕ!""">>><<\(¾HR­‘‹ÅϨµd2™X, …-±ùÑÑÑõЫÏr_5ª£þ¬>(ÐPkU?'É!ì@™x±îË<€§Ã¬ïÖ±îêF¥ÞõD`âÏOL9QË5‡¢¡Æü:&¸uðÐá¢ââƒ^e>¥>>>VVV™™™ìAw:gÏž=z´1uÝ»w¯¨¨(""‚D«Nžé;R,q©L&‰DŒµì1N®õž10Z’¬ؤ3C=ï|€ÕÇýõgÛvM¾¶lìËÕ’sÅ,ÁVÇ]BTj¨ukkI¦„ËáÖ&Ø€¢k¸È'­\.ÿóÏ¿/ZÜÑ·j4D^nîìÏæäåå‘™fÿݺÕ#(RRÿsw÷ ÅÅIMM%û£Ü¼™âáá –j5Ÿ—oîîwnßa&³€ZMëšWlÔHO.—{ûöž={èR/5$JÕr&Õ§E±G-VO´ÓT€ä€ÇãjqÔY8s9V©UÀš8¦U¸! ™J9Î/?ýx柳gþùgÑâ%GŽY÷ÍÚº ¶Z‡Dꔾj• öìþÁÎÖNãGŸMLL´­­µA^"Áf€ÜÜ\f5Š¢œ`Ù²e£Gž9sæ|àáᑟŸGQ”1ëŽhãááAQÔŸþ9`À²ƒ™™Ù¬Y³D"QEEE¯^½”JeRRÒýû÷gÍš¥q­™™ÙäÉ“—,YÂãñrssSRRÞ{ï=uñx¼mÛ¶?>55566Ö°m666Æ [¾|ùºu늋‹øáâSSS#-Ô‰µµõ¨Q£–/_îââRPP°yóæ3fÔ» 4JÛ·ÞëÒ¥Krrr]§ô<˽‘””ÔPRÿ@(FDDh ŒdÞb4yF'Š‹ÑfR©”KD_‘n%¥ÅÆÆ²ÛJb€QQQ2™ÌÁÁ!...$$„™DÇn~xx8#öÄb±vü(Cæ"÷L||<£Kµon"óCCCô§Ï‰D"h5²·=³ýKÀMƒ9§Ï‚~€Z„%ul4pÈV"¯¥Ü*ÕW#ꢀӧOÐÃ^2ŸW¼Û´i}äèÑ.;ÐÛ¿ûÎÁÞ®¸¤tÏžÝï½ ´ÚÒÂ|èÐ!17F:ð‹Š‹wïÙýÁĉ@«[·ötrrÜöxòäÉéÒ~úéG ‹iÒj×V.§NêÙ³EQövv5ÄVµ…Ì€í¯Îú·cG@@·šJ¸ØÆÆÆÍÍ•Ëå^OJê×·/\¿žäíå¥R©”J%( R,sÊápÈ0?¹\Îüò¨/39HN¾Ñ»w/ràÕ¦J¥277€'ÙÙžš’j p#-$ôëÛ§_ß>½zöœ1sVÔª•:Õç(í†h$zzx˜››ÿsöÜë#†×Äžž–––føwÔ(Í€µ­5P~"Hó¡QV‰d~y2&sß¾}ªažWÚ·oäȘ4iR¯^½ÆWPPpðàÁússvv^´hѲe˺uëÆLëúôÓO-Z´uëÖþýû“‡›V­Zé¼üóÏ?Ÿ2eÊW_}Õ§OŸ>ø€Yé^'ß|óM\\ÜÀ·mÛfÌúiÑÑÑNNN#FŒX´hÑäÉ“)Š"sÃŒ·P'«V­êرã›o¾9yòäqãÆ}òÉ'õîPÒé[6£Fb/Öß÷ÆßÿMVˆA˜Çh²”¢v¼BCíhÄ£ˆ`"B‰‰‰D­1€?$$„y+$$„Y÷/44”Y$00P(YHj …àòåËÚ¿n0ôŒ< ‹ n¯X,‹ÅqqqŒÙìè ©šˆ>ŸO"cúŠ"ËÙ–“h!1L&“‘ Ì(¢ŠI„Ñ·¤p}«}ÄÇÇ‹Å∈¦„øøx©TJBm‰„Ý­QQQ€DíØm$šJ êˆ=|>ŸN}ÆK¥Ræ]}æißB$Xªï&a_H$%ùMD8µ ¨ß=ÏÌ>›W[ÎÝ»ŸÛffa¦³•³¡ßS9@S5æ“‘Š ‡÷íÛ—Ãå‘Sò4pСC‡ÉPÆwBBæÌû|æ¬YýûøßÿÆ‘ Ÿþù+¯&}!Z8jä¨ÐwßUÓ@QœÈ¥K““o†„¼»cç“&}BWhÏw˜6mÚ†˜#^ùÚ°O‡S²^$¦‘("9ùÆÌY³/]¾œ•••šúߦÍ[f6—¦iKKËáÆ­ùú›[·n]¼tiûŽï¼3–›ÈZ”ðé©««+EQÇŸÈËÏÏÏ—Ê 4lÞ²õÖíÛÉ•í;¾ë­Ñ4M·ñòrvvÚ´isFfæ?ÿœýþ‡ n¤…7nÜØ½çG©Tšžž~âÄ w77תÛ*‘@À­Û·SSÿ#¯Ò˜ŠLMM?˜8aåÊUþùWVVÖ›7ÿc/IŸ>9rÙ²23¥¥¥>rtËÖXžÑi­¡rp•Hi64J„­  ÀÌÌÌÜܺwïž™™©3›·ÀÛÛÛ˜Uì™B4JÓ8:uêÔ©š3hß{ï=íX™¶UEM›6mÚ´i²±OÇŽ;v,óÀo½õ–áü»«ŸvïÞíééÉ‹tZh¤mll4Öð¨ÕKum”ß>}r;vݺu¹¹¹dK™Æ¾7þý÷_׿üÛf?C3#ë±"[?Ž Æ#Ü也Ñù2™Œý Nžøµ5D"ÑøD.¨š GÔ'¢âããÙã I-ú´–†åÄlfcÿ½{÷ôCF jkB"NŒ™ÄEr2Q,"ÏÈÒ&aaad(cTT±ôN||¼@ Ð×Fv¥†{“„1ããã‰X5~)Hcy²Í ÎÔîY¡Px¡´Î7|/ÖñOµÿ¼™™5V‰l2Rž¤Ð`è ˜Ë©ŠÇX k×®­•@ÂÂÃÂÂÃàüùs0xð`«,--##—‚ViÝ»ÿúë/LbðkÁÌ[ãÇ?~<;³F½\޶!Oñôpûõ§ØØm¢…99966ÖAAA³fN'—|±dѲå_{¢™™é;cÇNxœ®•Nžž:::ÌùlöšµkssóÔjõÍäk2ÀøqïMŸ>3/?ÔÈ7>úp"ÍåPk¢£–F.cä›]»t™>mêüˆú 7ÊBK+Ëÿ³ñ[¹\îçëûÍ7kô;Ä@_Ó0þý‰Ìy—.Eó™ŠfLŸfeeµö›uY;8ðÇŽy›\2éãø|þ÷;w.ùâK×¶¯N]¤ IDAT­OhÈ;ܨÏZýå ò‚ 6…BñèÑ£;wöéÓ§~Ã_B’““Ÿ>žŒ#•J¥ µ!‹Ëv£v<-""bÌëZ83  @nDþᅦg0^&ü<¡–¯g­!‘´ºœøÑ‡kÍÌ 5* L8¸I1b¸¾Â´ÐÛËkû¶XíÖér›^G1ejÀ®èã>øø£´K{û­Ño¿5ÚH7°Vg9øÕ‰ ͇~®MNN8p`qqñŠ+йF¢R©V¬XѧO²ûðœ9s^°.^¼8""¢iî]»v1[Æ!Ͼ€ Ô46L‰™Æ¦!fŒ—|:Ó _h@‘õN CBRD§i[nd‹HTèU¶ø”Éddí0nQ íQ‹¤F°‘icŒa:ÛX×õúItN$‘‹dÀjÞ27ãù¾òtí«7SZ{¸â‡|­d?yìÒÊõÅhH»ö°C¤Á©õ92ð“ɘ/r(ˆgö2\MÂþ½?žŒîFmvíØ6rôÛ†ó„Å\5­þcÙ¨g¯‘™dE¦QiŒ4cÆãiç'ËB’Çw¢pH!̨<ö)3¨O(’Azdw/r¹v4†¬gHÔ¹P"‘ÁàòÌâ%Lc®%yØmaçÔ.“®a¿†å™µÓu.(Â8Y£;1k±èô»9:}«=RT»‰‰‰L¯‘N$>Ôèæ”Ü?ú,g<ÃÜÚ÷ »:m³ÉÀH²Ž¥Î9‰dÅþGF~ 9:9À\€¯«SÌŒ›Ã¦{ ‹ œðTu¸¶r1˜rþ÷ü¢kWɽ&s(Nì¿5"Þy¹šÚî·?ö8ñýÊÊ*ÙX\VqøLJfN¡J­núÏ1.‡ãébÿz?kK&„ ?ÿß+¨~È×ʤëºt}12b䛨¡ÒàÔúˆ‚ A^4Á† / Æ Áv€ÙÓãY–6jTÁ¶éíMIYIµ ¶}ûö?^.¯l¶½ÿ[÷€®x—ÖÊÍä$ÿÎ]^Œ† `Cç"Øl•È];¶¡»Aç3øXÕŒ ðHÊJª5—Í|±eÃËú#5AG!RF°Õ@@AÆÆ­ú ¨9«J_£¾ž9Í}k‡Â…(Œ•kè(Až»`CAçŽEõAIsµ0ft ý[P‡ £AÁ† /ùy¹è©7LL*«³JýŸžr,O»Ûùr9ÜÉá©7oâ]÷R9êHÂìM1‡ckg×¾ƒ¯«››B¡@Á† ‚ uàü$ëŽN\PÌ/“§éï¾ ýÕ`µxÛ³Nh(àºÓTÝÔš©™YeeE³uãø>Æ{ AD'ååîß»‘tÇ3±³·CÁ† ‚ u úlåÌ^¦ƒÛ˜€=0‚íøqHNn´*) (‡ÃUª”uZJdïoqØ_‚ -”Þ}û¥¦$÷îÛ‚ ‚Ô}ÿ)öý§XñªùÂꔣGaĈ®EkY—âþäpgPÊÁ]sAZ"»vl³¶±),(xö¢P°5j•J©RÎ9Ö†¢¸\—‹÷!‚ MÍ곕 «c]+W6E*Z5⻲e2t>‚ ÈËMÓjµ[ @¡Pd≮y3¹@†_Ò5àp8v¶výüÚxy™˜˜ C aÿ^t‚°pm¼¢ 4³JÉíÛMÔ5­Î*ÎÂ~EAP°5Ô*UNvöÕ«’Á¯öøp¹\ô [Ê>¸ïô©S<.·u/—ƒ>Á- „; çëw¡›‘ùªÇ=4åI†{A1|Dn\”*Õõk׆  ÚµGµ¦‰‰I»ö‡ Þ¼y³²¼ ‚¼´œ9õ·¥¥U]mʫ욱‘W3¯bO!‚ (Øš 4-“å·ñöFOèóM›ÂÂ…J‰®@^Z†YDfܹu36ònÞ]…_¾‚ ˆ±àÈFG­Vs¹\úE_qäüÙÓ½û¨ÓrÕU· §R©h\‘y‰)++­Ç¢M€;4ï#÷ÝØ‡=… ‚þȇ òœÁ!‘ Å)Ö1úAAÁöœÙ´ys‡Ž¾ŽNÎÑ«W·ônø÷ß¹\nII Þ‘ò‚C"Š#¬ãnèAä… Á†D^¾|yØðªmGíí탅ÂU«VòùüF²;;;{éÒÈ-[6èßßÚº‰f+6>ÊÌ033«Ó…4M³‡ü]¸p¡_¿~ì qqq–––-}d NûóóóÀÁÁÿÞj%5å:AêÍ%Öñ[g›æ{”gëá1>-mK=®µ·°/(/ÀŽCAšB°$’Ë–>ülΜY³?ÛõÃÎF²;##C­V|ã ssscò+•J‡Ãá4£ˆâíÛ·---É1ŸÏ¯«lm$jmذað矢f«•Þ} ä)Ç×){9€ €,Èû?€ùMb£»û»VVíêq¡«ë¥Y—ZÕûAi:Áæìädeeåââ²páÂ?ú~þù—-[·Ü¹s×ÂÂbøðá«££H@,//Ú§ÓΜù§cÇŽŸLš4cæL&rµ}ûvñ¶ïÒÓÓœœ&N˜0wîmüÚ0ððl y¹9ÅÅÅóæÍ?|䈹¹ùÄ -ZÈápH@ì§Ÿ~\¾ü«Û·o¿cûÄ>üã÷ß¾üréí;wºví²uËÖìì'¢ÿ¥¦vêÜy›XìåÕÆ€Í$„èîáIlÈËÍy_¹¸¸0±As+((°¶¶ÎÍÍýðÃOž<éçç7mÚ´O>ù¤¤¤äúõëL&?“¾ÿþ… þ÷ßÚÍ$j­k×®))))))]»v6lX~~¾¾kAžëxh“Ôhoß½°°>{aOî9÷dCAž`ËËËß³±wïÞ'44tàÀ}z÷^²dIBÂ!(..>tèð²È¥þþ~½{÷šôñÇäB¹\¾~Æ-›7 <ØÝÝ}àÀ‘‘Kw|ÿ½v|{{pqqqqq)))Ù·ÿ²ÈÈNþþýúõ›1cÆ»v19/Zؽ{w¾[úåÒ=zøøøL›6õêÕ«K—~$¦M›zúÌr‰N›5*uqq!‰æmÛ¶­GËÓÓÓÞÞÞÞÞÞÏÏI,**Ú·o_tttçÎûõë7uêTcŠZ¾|y=ÚµkÇápV¯^½sçÎàà`OOÏ!C†DGGÇÆÆ>—{ËÌÌlܸq±±±<ÇãÅÆÆŽ7îÙG~"‚à €ªúxSãWgkÛÊË3êz!—â¶æ·þ7ý_ì2AÄ0 <$²£¯”——ÆÆn‰D²rUÔ7ÊËËU*UEE…B¡x–¦R©üýýÉU:w"wïÞ+))ycä(¦@µZM.111ÑWéý”Je—.]Éi@·nË–-W«ÕU…wêÄÎìççKœÀ×÷éiEEE¥\nfjªÓf}tò÷¿ðïùzøêÌ™3dÇ{üøqU[îßW©T]ºt!§]»v5¦(&ÛíÛ·‹‹‹Ìv`yy¹a6–––³gÏ~úÛ‡Ã>Ei$Vqœr³®nÝvÒ4д¢®†÷ W«Õ×]ÇþBAšT°=rÄÒÊÒÞÎŽ¬YVVúîè7ß\ Šppp¸~=é“É“)¥šVÀýûÈðŧVòêo§†PÑ…iFÆhº®6ƒB¡P*Ÿ~Ëårððp·²ªÚ((==äòJ¹¼’TVV€B!€ÊÊ …BQÎ#)ä_RM«IJEE9>|Hc}N•J©V«šà~"f ‚|¨á@К2×sØJKËbb6ªT*rªR©bb6–––á6A›ªÚÌ 2Õ™Ç×z>~ÜÝàé½­î<\®Õ!ÿ@yùß«\ýßB¿MüâPP¡Ä¹A¦lxxxš˜˜lÙ²5=ýáÑ£G7mÞLÒmll^}Ä_.MII½páâö;(ÊÌÌlîÜ9sçÍ‹øðáýû÷÷îÝ·ví7†k±¶¶~kôè/—.½y3åì¹s7nœ8aBƒÛ žžžE>r$7////Ÿ$Þ¸y³Wï>ååååš±‹ŽX[[ùÆ¢E‹oܸqþüùmÛ¶‘|||\]]W¬X™–––˜˜³t-FbfföùçŸÏš5û—_~IOO¿wïÞo¿ý½ú¹,:RYYñ믿NŸ>C¡P(ŠéÓgüú믕•(Øžëܹø‘¥¡cõñ¿ÿ‹‹‹k3jµ§ùô]3¼‹v\«>^;ÌâÓššÍ„W¦ØãœÈήñî[o³¤œÖºWŽEÛ¶¯¿^LF©Èd™·ZÛsåܾÀÓúŽõâ{]˜yaHÛ!P¨ÖAç/Øbb6üòË/½{÷Þ²5vñâÅÌ[k¿^ëìì$ #""¦NBQ”©‰ Ìš9óË/¾Üôí¦ž½zôêæ-[\]]k­èë¯×øvô>bć~4áý S¦„7†ÍÎÎÎ_~ùÅ_|éëë×¾CÕ(›Šòò»wïÖv£Õ´šý¢@_ʺo¾qvvzõÕÁsçÎûtÚTŠ¢Lx<EmÿnÛ¥K—ºwüzÍ× , ¥j5{ÖÌÈÈ¥6ÄtïÛ·ß·ß~ëêÚªf]òªnèÓ;[Ûýûö&%%uíÚ­K—®IIIû÷íµ³µÕw-Â~ö­¬¬DW4ª´ËéÚµkjÊMfwD̘9cõš¯ÕMrÓcÏ‹q;5’‘EULðíë–÷fÚ<[3p¶¤fõ2+_boÎ¥  4¾d¬­ai$ë|]ã5,䱯o@Õàü|fƒn*a¼)› hŠ/@±*AÅ"xòEjÁò‚ks®µulK2<.~ŒÑ‚ H­4ض   û’…†„„†„0§cÇŒatѯ¿üBŽwþðCë̸֞ÇñãÇ?®NÕÙØØ5N ä1þTŸÍ0cúôÓ§Óp6jÔ¬8R`P L–ð4‘Âwp`~Âÿþû­[·¦hšîۯߥKOÇ3vŒÎ¢`üøñãǯi@E±4*²³·ß»÷·ß{÷þago¯ÆxÚ³¡T*Õjô¡±¾ªÓVò&&&Ìê¯úèÓ»·B¡8sæÌ Aƒšƒ=ˆaìÒȾÔ>÷Øk ª$ÐìÛo‡Ö¸äÑ#ps«¥X±‚‚ ôG+×·| ª§¿Q4ð8ÀãÐ`Ê5!ó´™/»›ob!‚ µÂy^'%%ýù×_™™™§NZ³æë1cƾÐ~®ÃØÂk×®=z4##ãäÉ“«W¯;v ÝÐ×N{{û?þøý?~···7|-B`ögwtrvtr†êøÃŸýÕÀ@wÏœœlÃ%‡‡OiÝÆ«]ûË—Å„ƒhšÞ¼yKPž®nî¾~þ+V®Ô¸077wà A3gÍR«Õ?þøS×n.­\ý;uÞ²e«v-?ÿüËÀAƒÜÜ=>m§}:½¤¤jÝí ‰ý Až­ÛÌ›7_¥zº†ÃöíÛ{õîãæîѹK×5¬à•>kµýÃFËW9úìÔçg2®OŸ)Š  ÷ï?`¤ÛµíÑø\0Ð#l{êÔw†o'­c£ïÐ×_l¶OŸ‘6Ó•+iº†TãÀÅGÊ6ë 5Ôüò ¬_1ëA¾@ç+Òno‘Jד×ýû1¥¥w ?ÿÌýû1›/V®ÿt¼.À–wn=¿•ý_ã'‚ R+¼çU±J¥ŠŒ\&•J­¬¬Þ=úóÏç¿àrÍè1T*¥béÒHÆ3óçÏoAƒušjog§ï-D›_~ùù½÷þwíê=ëÈðvvvÌ&ú`ö‘/,(øèã§M› Ñ«WïØ±cÍê5AA¹¹¹7nÔøuÿÉ“'o½=¦_ß¾kÖ¬ÎÎÎþlΜ/¿übô›oæææ>~òD»²¿¼OúÇ D /Y²~ݺ'Ožè»pËÖ­»ví*,*üè£Ûxµ™9ciÔo¿ÿµje‡îÞ½;gÎ\Š¢æÍ›kÀZ}þÑé+{{{vÖZŽ>@—®]¶n­Ó%l{Ø—îãs²ûNc‰&Í4`*S Î~4Ð_lç7FŸ> ›.É7]’·¶¥ú´æYð¨¤'ªkUú~(š3§öSkìÎ]…Tº" Å̾ÂÏ7A¤% ¶€€€sgÿyYÜ\—8R·nÝÎþsFãêÔPü£zF˜ýÙ5^Éð “É \Nö‘ÿåçŸ:ùûÙG~Ú´©•••ß~»)&fÃèÑo€‡‡{—¿ÌÌÌqãßíµà•+V@~~¾J¥>l˜§§§§§§ÎŠBC«bK–, Ÿ2eýºu.ü|þ|?˜5sæ»vÍœ1C.—¯ß°áàýdãAww÷ÈÈ¥ó?˜7o®kõùG§¯ôÙi¸}>$ﺻ¹?xð N—°ía0Ü#ÆçÔè»Zo'ætö£þb.l¼>}vÑo*ðAAÁ†hÂápJJJÈ–/0:úÉòóêq¡J¥záÓ hl¯}ûÈß½{¯¼¼|à€:¯z{ÌØa¯½Æ<ñ·oß>((èµaÇ>bø°×_]{æ•Îýå \عsgrеk©TJL*))ycä(¦LµZMÊ1lm|¥ÓNÃûÈëó!i‹µµueee¥\nfjZë%úÎø6Ö©ïê}‡°»Xg?è/¶©Ô§‚ ‚‚ i(ŠogŸ““ëââŒÎÐI^n.Ÿï@Qt…a kŒgD(zâï¿=zäîî\.÷PÂÁ¿OžKá%%%ffflµÖ¬ú®AÐyÓ_×§‚ òÒ‚OÉ —ÃõïÒùßóg?ÎR*U4ÂB©T=~œõï¿ç:úúš6æP¨vÏÔvýûÈ·mëcaaqúÌW­øê«ú¿=flnn.ó„,®Z¹rãÆ˜}û÷kØc`y}’ÝÞ ))Y p8œvmÛZYYeddjìóNQ”këäv(GŸÉ飬GÞÞÞuºD'†{ÄøœÚ}gØ]FšªÝú‹¹ª úAA^6ðWÏFÄ\Ž›«{§N¯]½R\TÌ^ár¹vööü;999™››£CÌþìƒ ¢€rtt¨ÓåÌ>ò..­ 6nÜ8{Öl033›:uÊÑ—Ø,ùÀìŸAQÔúuëÂÂÃÇŽ}çÀý÷ïß¿xñÒàÁ¯òLLŽ9Òºµ§Æ=³¿ü'¦¤Üdö—¿víš¾ ׬ùÚÉɹ¨¨(fãÆðð0bÒܹsæÎ›[^QÞ§wo¥RyíÚu©T:wîÖÖÉ?úì4\Ž>®_»Þ«gO#ÝnÃ=b|N¾³³³3|;cªÎ~4Ð_lS»OAÒPebfêãããéá¡T)qMMAËáðx&϶5ð ³?{vv¶Z­®u—?m¾þzͼyó‡ann>qÂÓ}ä.X`cc³4rifæ#GGÇ÷߯¡Ÿ·nÙ2qâï¾÷¿ÕÑQ‡Y±r¥\.ïÒ¥Ë÷;vhTAö—Œ\¶eóæ={.^¼8,,œè}Nž0lmü£ÏÎZËÑçCH<~|Ãúuƻ݆{Äøœì¾ûã÷ߨ{mëlf­¦êëGýÅÐØ}ª;;»ÂÂÂúW?uÊüèCAô bÌ9Ä3{¡§¤ñ‹¹jZýݬ>/^ë._¾ÙpÞȯ¡‚‚Ÿ¶íZä×0EåêÚ\ñHÂñ|¼kǶ‰OÆ;A¤Å±kǶ¡¯ ;y½{çåæ¼ûnh‹ÿY2Q­!‚ µ‚6Aä…bó¦M-tx$‚ ‚hƒ6AAAf FØêMÓ ¹B®ÓÍu¿WŠÃ1111Ã=©AAÛËFyy¹ôÞÝK/dgg7ýŽØ®nn†3p¹\¾ßÏ·SûíÕjÜÿ AAAP°½4(äòÌŒŒÓ§N½6l¸»‡'EQMlÀÏ?íž;_dÈB…âþý{'OwprrmÕJ.—c¯!‚ ‚  ¶—‚J¹üÜÙ^9ª}ûVÖÖM/Øö=çñxíÚuàqxçþ9óî¸ñ(ØAAÛË­V?~œåâÒêùªµZ§Ïyxzææåâ>¿-²Õ=‚ ‚ ‚ð9¾þ¨TÿgïÎãjJ߀?wë–Š´Nû^hÓ2”¥²g ÓX"ÙDm2”%2¶";?$[ÉV(KÖšb&¥¢0E(´¯·Û½¿?g®Û½×EfÏx*@+ IDAT÷ã³¼ç}ßóvîužû¾ç=í åߊÖÞElËÎÎ6îÑ#;;›w#Nÿ矯C!„Bu ìaû†q¸\λ!‘999£Fªªªr9299ÙÒÒÛçÛü›r°B!„з°eeepYVúDZZúKõíàr¹Èɹ;f̘e˖Μ93&&fôèÑçγ´ì-N+W®¢3èKýõ;¹â?ç’øà±S¦Lýé§ñ“&MúäêZåŒßJ‘\ÂÎb# „úÎuÚȬ¬,E%⟎®ÞdW×âââþ^\AQ©µµ•ÜbaaQXp¿K—.ÿ@éOž<™ÊÀÕß%"=oÊ~ýú}? •››îììlff¦­­­­­Ý»wo—uëÖ=xð@œš››Ïœ9³hÑ¢aÆõêÕK[[[GG§W¯^ƒöððˆŽŽÎÊÊê8@é\]<›6mÂë‰öEža«¯¯‹ïÙ³1›|TÔæ'Oþ¶6ÂØØ¸¨¨Èß?€B¡TTT,ò÷_¾¼pᨩ©¥¤¤ð ABè?°õèÙ šššôôôŽÇÇ‘Ìæ-[Î&%𛛀•+W/ ¨ªªjoow1BCCCCCƒÈ¡¡¡áLbbܱ£¦&&àããs06VÌ€­»œðöÿDgjeeÞÞ^³=~!6JJIˆù3CCC…¨¨¨•+W¶¶¶îܹ³ªªŠÃáßJ QQQ þþþ’’’+W®ìœææÂçlååå,KMMXåp8óç/ð_´ÐÀÀ ++‹7¥¢’Rdä&+++•výúuÿ€À††Þ4 'NŒÿ.àŠš8aÂùóç}|ýêëëþÙeø°aëã>}Ƶkך››ÇŒ{Pt•¦ï(8(ÈĤøùúŒå Ø„ULÄK(ðÒ%¨©ª=yò¿YB‰ïäÉ“7–””äääà´Ï„;w»w ´ø$''ß¹s'..ÎÈȈoWUUÕ¬Y³:ÞNôüùóææflvôß Ø.¤¤HH0®\¹¶|ùÇuuu‹ŠŠFù{î;‡ÓÒÒÒÖÖfdddcc3|„“““ÓH§£F¢R©ŸxÐØØÈf³«ªª‰r;RQQQQQ144”`Ìöøe劢«Ô1ý'´jÇŠ‰¸bÉe&ìÒmhh`2™­!„Ó7Þ¼yÃ{OBþ¼˜””´|ùr£W¾+!!!¼ÑÚ AƒvîÜÉ{;áïï?uêTò¶òòòˆˆˆõëד ÂÃÃy£5™uëÖ7Žï®jjj’’’öìÙÓ¹§Ð¥K—qãÆáÕŽ¾Š€äãí}äÈÑ+W¯Ú(--ýìY¹ÀŸˆètú°¡C‡ êàààî>}÷î]º::t:=//wРAs÷®¾¾>o@E|>_¿~Ct ðÞF€Àî¸fÛ)¨T*1ÂðâÅ‹ŽŽŽ ªªª¬¬\VVfjj eee ­¸-ŸÑ_¯®®Î`0ÊËˉ:GnÚÔÐÐ@ìº_P0ožçÅ )ÚÚÚÌÏËWQQám½ '&Lœ ¬ ÆÆFoŸà  Gùøø$&žéøý(02¿J#y½{÷ìíí //_OOï/.°b†"®X—.‘ùóÏuttð›!„˜xÇCR(½{÷«¯_¿¾qãÆ!CÄɧ´´tûöí×®]«¬¬ìÒ¥‹‡‡q7ÒQ}}}BBBjjjaaaUUÈËË2dòäÉ]»víxÏ@.kkkgddˆ³—w»ÀÄ Æ#myyyׯ_'WÕÔÔöìÙÃ÷z•˜˜GGÇ––bK|||PPñ0ÛÓ§O>Ìû?xlllß¾}'''7}úôiÓ¦áKzÐ?`300pttÜ¿oÿ°¡Cüš[šílmÙlöÝ»¹%%%þwïÞýã? r¤3)))ššT*UFFfü¸qËW¬PVV©©­ÙºuëB¿…¼9ëë뫨¨¬[¿>dñ⢢¢íÛw»444(JrJŠƒƒ( ò¼?¥ˆÎVÀ½þýû¿\¿vỦø/_¾¬¬¬,//êÔ©´´´K—.Ûg̘öÛo¿566FFFvœGñ³"¶Ïx†ÉdZXXäåå=cššš¼‘ Qñ®]»õôõŒŒà굫«×¬ "?|ø0ÿÞ½ýû÷ +(44L^^ÁÏÏ·¾¾¾ÿ€{öì7ï½7¿¥§§?þÜÆÆFRRò~AAØòãǧR©Âª$,}Ç¢7lب¨¨TWW½u+_¡Â*Æd2…]±ä/]bWîÝܾ}úà7 B!q444\¼x‘\µ²²š={6°áœ8Û•+W<==›ššˆÕººº«W¯^½zuþüùË–-ãK|áÂ…   "N#UVVVVV¦¥¥mÞ¼yýúõ£GþJš(11‘wuîܹ_¦ª©©9iÒ¤ØØXb•Íf_¸pÁÝÝNœ8AÌM˜:uª°hD¥R;ýg}„¾º€ æÎãæ6­¬ì©Ÿ¯¯¢‚âömÛýüÒéô=zÌœ1ƒ¢’SRÖDD°X,ssóû÷nܸ!00ÈiäHIIÉéîîžžóx³¥Ñh{÷ì^äÐ×ÖÖÆÚ:$dñܹo())-_¶¼²²’Ãá¼yýŠ÷@ÑÙvÔÒÜ\TT$þï+¥¥¥þþþõõõqqqZZZÄvooïêêêqãÆq¹ÜqãÆ-^¼¸SãµÏ:nìØË—S…=$Æû;\HHÈóç/¨Š¡¡axø*â/H8žpÂÊÊJOOOà±×®]‹‹¿võ NïÞ½ûæÍQ³g{ :D__ŸLÃ`Hüoßþ€À ‹¥®®6~ÜøÅ‹ƒEÔGüôsæÌq›æöêÕëI'z{y‰Y1aW,oü/ðÒ€Ô+W¶lŽÂo„BâHNN&;…`ôèÑZZZfffùùùÄ–K—.544ÈȈzÍé›7oæÌ™C¼âˆÏÎ;uuuÝÜÜÈ-gÏž]°`ˆÛ›šššyóæmß¾ý+Â÷çŸò®>\XÊ#FdeeÛï¿ÿΛÌÕÕ/<ôm¡ˆ¸ãw ;K¥P`o_l)þ¦®nkôæEÁêïOøÙ¸~íܹó›šÀuªÛ¸±ÎSÞ}‹‹KL:wô±zøpìBÿÀ:A+½~ó¦OŸ¾ܾõß›¸ö£ÞÊÐY223}}|ÿøãöÇþ,77ú6p¸œS«œñÃ…þ7)ç’ÜfÌŽÝ¿wúì9x%ü‡Mž<9==\½uë–¦¦fttôºuëÈ›7oî8<§ãhÃÁƒ9’ÍfŸœRUUELÇGFF†·oSt $pDhGŸüžô•‹Ý¿wÈðׯ¤Ž3ö3ïéØšß.²‡í×ÅSܦ566ºNž|,.nó–ècG‹Óù¦¨ 0ÝÝ}÷ž=KýÛóómÞ„ƒ(B‰£¢¢‚÷¾ßÜÜœx`ôèѼÛÉ“'?ø<Åĉ7oÞL,»¹¹¹ºº’9××ן>}šèkŠåÖ\\\¶nÝJåããsêÔ)bµ±±166600ðsNÆxÏEœït#Ä4iÂð½å•<°ººšÜ(//Ï7•@QQÑ‚ :榭­-æÓƒ}ixgù-lDÄÆåššš=|xSd”¡qȨÍG655å¾#:“+–c´ÖYŽ;:iÒ$l„Bâ8}ú4ïÐDò±1}}}Þ©Þÿý÷ŠŠ ÑYñ¾b›F£y{{óîÍÌ|ûš¢k×®ñn±Ê—øk ΤeŸ–¡¯ö°}Ëp9ïâ1S“£G,XàµcÇvS—û7Ž ßCŒ!„ÐWåĉ¼«¼ó|Œ5êáÇÄ2‡Ã9}ú´§§§°|äääø¦P&ÞþJ*--%ŠŠŠxâ›ÖXGG§[·ndÇTqqñ×ÐJݺu#‡DŠ~q6oOs]vïÞY]]ÝYoWú("ÞÆl_Fû—§|}¿ÍÔÄäæëïMÉårÿùo%„B‰öàÁƒÂÂBrµgÏžä[[‰à-*êï)¬Nž<)"`ëø‚S¾-ä0HbÊeaGAñ&áKß ï°%«T^^.ìÙ0Þör:42`kmm-((033#“õéÓ‡|ŠĻÎ>¾‡ }ù‰(Tê?¨–?{ú/ÇkŽèÕoªñ]"!„ÐW…÷õkD°¡ÎcèС¼{ È·ŽêëëEo!'™äˆ«ãQPWWG. ›µ‹Ífó®ò¾õûK ^>DJMM–’÷ `mmM,ôïߟwûñãÇñòC°}$ýH½|éAaïË=þÙ€ ¸Âq8œ×¯*oÝΰ0PàT¿!„ú—þçž9sæs<^555ä GÂÝ»wyWÉ“¼ïÔéxÔ“'OxÇò&f2™ƒ:è0í~GŸù,ÙØ±ïͰ·{÷nw5Ïž=ãÄ ƈ#ˆå &ðŽ6:tè_û ô•Ã!‘Ÿˆ!Á06ê!ÁH9wö@ÅÞ>fûAUõÀþ½"Ðh4{G &ñF5 „Bè™™ùüùó:äôéÓK–,ülÞ¼™BÙÞÞ¾}ûvÞ½vvvÄÂàÁƒsssÉí‘‘‘[¶l!WyaÀ AƒÈeeeå§Oߎ*ª¯¯¿wïž©©)°X,ržIa$%%ùÂK999ñO¼wïÞ _~PZZêååÍûú슊Š3fð¾ÑnâĉJJJIJ¦¦¦››ùж¶¶¶©S§nÙ²eذax)" ØþË( ‡Ã122615ûj§qçp8, £5„Bè«Â7ÝÈ‚ ˆø‡OLLÌüA,?þ<33³_¿~3<~üøëׯ‰÷°:uŠ·×KVVvüøñIJ»»ûž={ȇÓNœ8AE¡P.\¸põêUò(iiiâMKKK2`OOO———'úd544á„0`ë­­­8Ú!„BuóœœL®JJJ.\¸PàcmmmdÀ'Ož°IJJ¶µµ]½z•7ââUÈùETTTÖ¯_ïííMÎOvýúuÞ÷e(Êo¿ý¦¢¢Bn™:ujRR¹úìÙ³eË–Ë,KÄù8÷Á³k×®‘/ ˜9s¦8›¶¶vllìôéÓɨìÅ‹|/à&uíÚ566–ïl]ºt‰‹‹›>}:oxyïÞ½{÷î}Â_ðÕ«W_Ý&"úú„C"á3l!„BÿœK—.ñv oGœ@ÒÒÒgϞݹsgjjjiiiSS÷“Þ«­­}ôèÑüüüÄÄĬ¬¬Ç×ÔÔðNYÙ­[·˜˜EEEa9HHHÎ;÷ìÙ³7oÞ,,,|ùòess3ƒÁ‘‘QSSÓÓÓ³´´8p`=ðBE_ŠˆÏŒKØY*… {|ûbK!ôå̾ .çÔ*gl „ð¿!H9—ä6cvìþ½ÓgãÏü UZZ:~üøÊÊJbÕÒÒòĉ|Óœ ô¯ˆÝ¿wÈðׯ¤Ž3ö3ïqH$B!„ú&ikkÇÇÇËËË«999ÞÞÞøúYôƒB!„úV;v¬k×®ÄjJJÊÊ•+±YÐ >ÆB!„¾a¦¦¦qqq¼sQ¾xñBUU[aÀ†B!„пÏÂÂÂÂÂÛý'áH„B!„€ !„B!„ÐÇèÌ!‘¬ÖVïsäE¡Pd»vãrqö„B!„ú'6+??÷÷ô4a h4šm¿þN#G×ÕÖvÜ« ¨$ð¨7¯_}ë­œ••5ÂiäóògL&¯9„B!„:âr¹åå媪ª”w°M:9`ãr¹·23V„¯–´¶´„¯ u9ZàÞ‚ûÄBn^ž«ë”»9Ù¼ù°Ùl*•J¥þ›c8¿†: „B!ô_ ØÊÊÊTUUét:FØ :ý¶öövHLIÉööva{•ßé.'G¬–••õìerñÒ¥íÕÔ5^½zuìXœ½ƒƒªšºž¾Á/ÈÊÊRPTºy󦃃£ªšú§‘OJK‰<9jÑÛRYåS³;w‘‰Ï;gmm£¡©DVIDæ¼u€}ûöõµµSUS73·Ø°a#ñ~FÕá4ÔÔ5•„u$"„B!ô=GkGJJJWW÷ñãÇ---l6_ƒßĤ#QQ›£·lÎÌø]NNŽF£®Ïúó#GÜ¿¿,4”L¶aÃÆ¨¨È´›7tzpp0TTT,ò÷Ÿ;wNö¬#‡éêé’‰wîÚ{üxüÙsç¶ïØAl‘9o¢¢6ï?óÛÚˆ;Ynß¶5>>>22JD5 .îÜÍÉ.,¸Ov$"„B!„HDxvìØ±ž={>yò¤¥¥¥½½c¶oà=lË–þjeeE,Oš4‰XPWW çé¹9êm°J$óööšíñ TUUµ··;¡¡¡¡¡¡Á›gpP‰I/ðóõ=ëëã#:s²,kó–-g“ÍÍÍ@MMmåÊAÁ‹„UÈ>C|† !„B!¦Ms€)S¦äååéêêJJJÀ÷üPÒ7°™šš’Ëwî܉XûÛ½{÷š››ÛÛÛ[ZZÚÚÚˆ]=zô [[[[Y,###›á#œœœœF:5jù—633#,,ÌKJJ8•J‘9Y‡¢¢â†††Ñcœy ] ¦„~ðB!„Ë倄¤ìâhŒÙ¾¥€Á` MMM'M7vì’Åòòò¹¹y¿Ì™Cv’òÿ ¹\vþÜÙkׯ_½zu‘@bbÒÞ½{„•":s².’ÏÈÉɽ׎tº°jàg!„B!1I0ºÈ)h‡,Û…1Û7°‘ŠŠŠjkk—.[ª¨ W¯^ýðéÑéÆ6t¨ƒƒƒ»ûôÝ»wÛïÝ»gooyyùzzzT*UÌÌ ¤¥¥Ÿ=+·´´¿æ4 ÞÊE!„B Ö‘Uyþ¬ dÉNŒÙ¾±€M]]ƒÁ`ìܹkÆôé÷ÉÉB„¹{÷îü9h#ÁHIIÑÔÔ ÿÀ6lTTTª««‹ÞºuÞ¼¹âgÎd2üš[šílmÙlöÝ»¹%%%þ"j¢¡¡A¡P’SR(@QPÇ"B!„BI0dåµ™RŠÍ¯ü†1Û·t¶ òÑÑ[âââlmmwîÚ½lÙ2Ñéedd’SR†Þ¯_ÿØ¿ŸÜ5gηin&NéääíåõQ™ûùú.[¾}Ûö>}míwìÜùÃ?ˆ®‰’’ÒòåaaaË{öìedlŒŸC„B!„¢Ó™ÒÒrÝ ©4©ÆÆjOÏÀcÇŽ™››sý‡óFvrFkmiaJJ ÜÛÚÒB>ë%‚͛ׯxH“&Nœ4q"¹ú³‹KÇdäªÁ™Ó§1dÈà±cù6Š“9ÁÍmª›ÛTaÕ¸êãííãíŸ@„B!„D`³[ÛX- ¦ Îä²ÙM¬Úé3︟­36 …bÛ¯ÿêUal6[H¸L·ë7çá@!„B Äj«¯©­d5V±Z9‡Ó î´iÓˆ˜-??ŸˆÙ( …BÁ€íãÈvíæä4ÊiähQ‰¸ÜÖV^ˆ!„B¡ŽÚZ_WW½)–WÐèÞMñæÍƒª<Ï"SVV®¯¯—‘‘ÉÏÏŸ?w4´s#"¢íììÚÛÛ€úl!„BèßÄd2ÇŽ{âÄ rˉ'£££cccÃÃÃ3337oÞœM&‹ŽŽÞ´iÓõë×[[[ƒƒƒ=<<2338 ££ÃWÄ’%K ÷ìÙsôèÑÿýï䮨¨¨õë×_¹r…Á`,]º”ØÈìñ)//_¹rett´8ïp€ÚÚZYYY3³×ÕÕÅÇÇ<˜Á`tÜ«  W¯^åÛþüùóׯ_ÛØØ«ÖÖÖùùùŸPzuuunn.‹Årtt´°°X¼x1ßhÉO+}0`{ðàF“••íÖ­[CCÃÀ6l.+#3óùó=jkkûÞ^†B!„Ð×kÒ¤IþùgYY466¦¤¤Lœ8±­­mûöí[¶lqppPUU0`@hhèÁƒÉ£BBB,--õôôšššÚÛÛ‡ ¦®®naaÁ÷ð[CCÃÙ³gÃÂÂzõêÕ¯_¿ ðv ýú믖––úúúžžžÄFIII}}ýŽq‡ÃñõõõõõÕ××ç¼###… wôðð000èÙ³gSSÓþýû¦QUUõóó °¶¶^°`Á… ˆíoÞ¼yyy2®«®®æ»Å]:@BBBTTÔ¶mÛ®^½!"½8å"q6---âYµ®]»š™™ÕÖÖùÏVSû¡¹¹YEE…èËýÎ^†B!„ÐWÊÚÚZGGçäÉ“œœ,!!1|øðââↆÃw¼½½+++É¡ƒ&&&Ä‚¡¡¡••Õ˜1c.\˜œœÌ?”––²Ùl333bÕÂÂâñãÇd###bAQQ±µµ•Åb@¯^½nÞ¼)%%ÅWÏ;w2™Ì™3gŠsRmmmžžžªªªÂOFDD\¸pa÷îÝ÷îÝ[³f y.$bKpppfff@@•J7oÞÆ;¥t,_¾ÜÒÒràÀAAA§N òKGkT*•Á`téÒ¥K—.Äœýõ׌é“órokcµ¶¶R(î÷÷Jg:^!„B_­‰'&$$,Z´èĉcÇŽ• bª„„99¹÷îêÞE$h4ÚéÓ§oÞ¼yýúõàààsçÎíØ±CÌrùºÑDß%gdd¤¥¥ikk“[zöì¹|ùr¾”ííí^^^UUUÇ8ÖTTTTTT  ƼyóBCCi4ÚåË—;¦ÔÐИ:uêÔ©SmllÖ®]H •¬ªªêÚµ+¼yóFNNŽ<qJ'ÃTÐÕÕ%VuttªªªÚÛÛi4šÀô¢ËEâ_udHFLikkÛÐÐP]]%++«¨¨Èd2¿«éF0`C!„úÚýüóÏ6l8wî\FFÆâÅ‹@___ZZº¼¼¼wïÞ¾Õ£Ó>>¢+SPPàééyñâE¾Q‘ä”÷ÐÔÔ†††DPÄ{HHHHZZÚ¡C‡X,Vee%(++ó¦ÉÉÉyþü¹µµµ¤¤daaaxxøØ±cÆyyy±±±...:::Ïž=[·n]ÿþý‰”S§NŠŠ266®©©9tèЦM›ˆC„•~ÿþ}())!j"!!AŒ)1cFXXØo¿ýF<ó6qâD"é)аrÑçot:J¥JHHÀ»1“ßÏë×0`C!„ú6Lš4)##cþüùä///…]»v0 ###ww÷ŽÊÈÈ\¼xqýúõ­­­fff»wïæK°víÚ%K–Œ;–Édº¹¹ýòË/¢kÒÒÒR\\üQsiðräÈ1b¹·¤¤„Éd’i FLLÌ’%KX,–ššš³³s@@€ÀlÕÔÔ¸\îÂ… _¾|)++ëèè¸råJb—¿¿UU•‹‹‹¤¤¤——1Ý¿ˆÒ‡Nn3f ¼›qÄÛÛ»ººzܸq\.wܸqD÷&K/¬\ô™1F#ƒöï-T{{Ö"F$»„¥R¨°Ç·/^.}9s£o‡Ë9µÊ[!üoRÎ%¹Í˜»ïôÙsðJ@¡oNìþ½C†¸~%u䘱ŸyˆB"„B!„ÐW 6„B!„ú6Vkk}]è õõÊGš••¥ ¨ÔØØø•·¦èzvâY¬‰ˆÐÐÔRSS'òlmmýVš!„B¡ÎÂf³ÿóçØ™“ްX¬üüÜßÓÓ„% Ñh¶ýú;]W[Ûq¯«ë”.Ò]öïÛÇ»qùòׯ_OM½\Xp¿K—.ßPËfeepù¼ü“É$¶XXXtÊY¼|ù222*ö`LŸ>}äää î“E „B!ôý ß:ˆ›X¸\î­ÌŒák;Æ555gΜ™âê¾2Ôi¤à9s\]]xyÕÖÖvëÖØÒÞÞ~âäIo//ƒAÌ»ú…âr*•ú¼Ù°³Îâùóçààà ##ïf¤E!„Bý÷tr”ÒÞÞÞ1Z+++svv^ºtéììöövaÇŽé$))™˜”Dn¹yóæëׯ'NœÀ7Þoß¾}}míTÕÔÍÌ-6lØHL{þüy+kk"A\\œ‚¢Òµk× ­­MCSëÏ?ÿä-‹Èðâ¥KÚ«©k¼zõJX¶päÈQ‹Þ–Ê*?˜˜šíܹ : n$Ç%ò1Âi$¨©k((*)(*ñE,ܼyÓÁÁQUM}„ÓÈ'¥¥ÄQoÞTMvuUS×>>žÜ|ÈàÁŠŠŠ¼É¢¢6ï?óÛÚˆ;Ynß¶5>>>22 úÚÚ–––½xñ2oÝ’——ϼu òòò¸\®……EÇ£¢6GoÙœ™ñ»œœœ°l+**ùûÏ;'ûN֑ÇtõtÅ<ñ¸¸cp7'»°à~aÁýŽ 6lØ™vóƒN&6VV¾º|éRÄš5›·léxÔ¸±c‰œïÜÉ*,¸O,wË–þjee¥¯¯O¡P„e[UUÕÞÞî4b„††FïÞ½x^¶(Zw99P~§c‚°°P+++oo¯ôô߉/‚óç“W­\abÒËÖ¶¯ÇìÙÃZ"g%EEeeebYÌ&B!„З‘‘‘““sñâÅ®]»~ð†‡xDâû|ÿ/›Ívvv ¸wéҥŽ-,, JOOÍÍÍ]´h±=222--íäÉ“[·nݶmÛùóçE—%,ýëI¡PFuðàÁÛ·oÇÄÄTTTÌš5K`U…!NÑÂ’q¹ÜY³fIII]¾|ùÀñññ©©©øÑÀí:thÈ!OŸ>€ÌÌÌ£G:::z{{‹sì?þ¨««{üøq8{ö,“ÉtéÄ› ¨¨¸¡¡aôgM-mâßÜyžmmm`gk{+óÖ«W¯^½z5{ö¬œ»wY,Vfæ-;;[Å™šš~0[###›á#œ¼¼}Î;׉c {ôèA,(**¶¶¶¶²XOJKÛÛÛMLLÞVÏÌô²ÝD!„êtŠŠŠÊÊʳgÏ.**"îøz¥Èþ.½Uµµµ3fÌÐÕÕurrú믿–",ÍñãLJª££Ó³gO??¿††b»³³3èéé€dú˜˜{{{›¨¨¨º·}RéééÆ ÓÑÑqvv.}÷¸_(2gÎëwϰð:sæLII‰¯¯¯°¢=:zôhMMMKKË%K–¤¦¦r8.—{ôèQSSS{{ûiÓ¦>|XDY"Ò°ž222îîîæææªªª666þþþyyy﯄!fÑÂ’?zôhÕªUæææAAAÄÞwâ‹L«òìÙ³ &$$$¬\¹’ÉdFDDˆ¬ëäÉqññAAñÇ~?žù~χˀ¤Ä3rï÷,óÃØÙÙn‰Þš‘‘Ù§Ïòòòzzºw²³ÿøã9¿xû‰ëƒÙR(”óçÎ^»~ýêÕ«‹ü“öîÝÃ÷«‡Ãý”X™oš.·S_t!„Bè ikkKNN677ÿ„™Ì–,YR^^~þüùÚÚZÿJC¥RW¬X¡§§÷ôéÓÐÐЕ+Wnذ:äîî~ûömÞqFÑÑÑgΜ 722*..¦P( .$¢/ggçGIKKZ DEE­_¿¾k×®AAAK—.T^^¾råÊ'NÔ šH\`ì*++K¥RËËË_¿~mccCl·¶¶Ž‹‹qàóçÏ?*½0uuuñññƒ&n&y›NX"Šçp‹äTL&óîÝ»ø¡ûNt~›»»ûÚµkËËËíììòóó]]]µµµÅ?|Ò¤‰?NLLJOOwuÌ·×ÐÀ@ZZúÙ³rÝ÷”­­ÝÇ“““ûÙÙ«cÖÖÖþøã¢ -N6tèÚˆˆ­[£Ï$&r8YYYxýú qxAaAÇ6}G={öljjÚ¿ǦV„ˆ¢Å9ÜÐÐPAA!**ªµµµ®®nçÎUUU8«Üwâ‹ôº¸»»@HHÌ›7ÕÔÔìß¿ÿ"]]]ò×“É ð hni¶³µe³Ùwïæ–””ø€––¦ªªêé3gfÍJ;[Ûyžžfffü¡HD¶wïÞýã? r¤3)))ššT*U___EEeÝúõ!‹mß¾£cž %9%ÅÁÁùž»¬¬ì¨Q#֯ضuk}}ý>â[à#-ÑM„B¡N—””$%%Åápž|øÒ¥K€F£mß¾}ñâÅ´¶¶ ôò¸¬]»ÖÇÇgÔ¨Q>>>ßT&0¼¼|ddäš5kvïÞmccB–¢¤¤´téÒU«V½zõŠÃá”——€———‚‚®]» †‘‘ñ ´´´ NI n¤R©uR >œ\3f µÇ‘#G€wôVII “Éô÷÷¯ªªrqq‘””ôòò=z´è²„¥ÿ`= FLLÌ’%KX,–ššš³³s@@€À¦V„°íb^ZZêïï___oaa÷ ¡oEÄðb—°³T öøöÅ–BèË™}8\ΩUÎØáCr.ÉmÆìØý{§ÏžƒWú×]¹reΜ9ÅÅÅ8é4BbŠÝ¿wÈðׯ¤Ž3ö3ïñÝ\!„BH°¶¶¶çÏŸÇÄÄØÙÙa´†Ð¿ç–A!„B‚ÓœÔ×ׯY³[¡ö°!„B!Á¬¬¬JKK±úaB!„BaÀ†B!„B6„B!„€ !„B!„l!„B!„B!„B! ØB!„BaÀ†B!„B°‘²²²•Éln„B!„ú6"*ãý÷âŋ‚û]ºtÁVF!„B¡O@ïÜìîÜÉê"%E,w““cJH`#„B!„Чéä!‘JŠŠÊïäçå  ¹oß¾¾¶vªjêfæ6läp8øg@!„B¡/°}PTÔæýb~[q'ëÏíÛ¶ÆÇÇGFF»ðQ7„B!„ú‚[ž½4µ´5µ´ûôµí¸—ÅbmÞ²eçŽíƒ RSS³··_¹rÅþˆ½’RRT*N\‰B!„Bþ Û…””.]¤€F£WVVðí-**nhh=Æ™ÜÂápZZZÚÚÚ †©‰Éí[™ø'A!„B¡/°éèhKKKË6—I‰gäääÞ«Ž „B!„ú²›h†ÒÒÒÏž•[ZZbÓ#„B!„hÿècL&3 À? 0àxBÂÓ§O?~|úô™M›"‰½÷îßïkk×ÜÜŒ„B!„‚¸‡ ü|}·oÛîç·N§÷èÑcæŒÄ®–ææ¢¢"œå!„B!„:9`³±±yóú•À-|»Üܦº¹M'„B!ô•¸u ìì ¾dd¾ÞÊ|U•D¨Sàú!„Bè?ÂÚ^¼€wSà!„B!„BŸ‡Í†Îz&†Á€~ 囩0B°!„B}óNŸ=½·Ë…—.´µ´4dfvB^¯_èQ %66pàP(ÐÒÂ_¥íÛ¡G`2ASV­ÀÌíÖ- PàÜ903II¨¨€˜°°&ºw‡3 ¾Þ&;u ôõAZæÏ‡öö¿s¾}z÷&ìì ¤äïô \.DF‚¡!HH€ª*,[öö¨ýûA[ètPW‡¨(®«77‘EEX²äí©u¬°8­„Ðçà!„B}í €Ç¡¼ÔÕ!-  - †‡ìlàrÁÚjk?7¯ùó¡¢n߆º:ððPŸˆ8z¢£¡W/xøæÍ BCW^Dn°oÈÉA÷î@£Ad$Á“'àë þþ°wïÛdQQpú4ÔÔÀĉ « ÁÁo·¯Z{ö@·n0gxyAJÊ{™¯X;vÀŽ`k ••› ðâÌ ëÖÁĉPY /^®p~>üþ;TWÃĉ ¤þþ*ìîþVB¨S`B!„Ð×NI zô€›7nÞ?¿·Ëiiз/HHtBR]œ> 6€¹9  ðW†Å‚ß~ƒØX>44`Èذvî\sѹ­Y}ú€‘HJ‚»; šš0p ¬] §Nýlùr07{{X¼öïÿ{ûo¿AŸ>`l pýú{9·´Àưu+Lœšš`m ³g¼yííàì ZZ`cÎÎü®¯‡ãÇaãF°°GG†={T˜Åú@+!„B!„Ðwdà@HKƒŠ ¨¨€ + X,HKƒ;-¡¤ÚÛÁÂâíjïÞü5yøêëÁÞddÞþssƒ/ ­ þÞHÌÓ(:7ÞÕÛ·aøpPQYYpqªª·€¥åÛ++øë¯¿‡_š˜¼]PV†–hmý;·G © æ¯|Ïž`k ¶¶0s&œ:%`$gq1°Ù`eõvÕÆæ½É °•€ !„Bèû Øn®¨K! IDATÞ„›7¡_?PP¸}~ÿý½xì3ˆ‰ˆ^®]ƒ»wßþË˃¿þ:þÞx÷b0Þ.46‚“èè@b"dgÃðÞãj‚odß¿“år?\"iipø0tësç‚›ÛÇ;Ya„0`C!„Bïlpæ ØÛ¿]ݽjjÀήÓôô€Fƒ¼¼·«Ä£_¼ŒAFÊÊÀÀà½ÄÜŒ¼[ÄÉðð!ÔÔÀš5`k ††ðêýWó’±_NòÇiA—.põª€]t:Œ[¶Àpü8'›¾>Ðéýv5+ ŒŒ”(æy!„B!„ÐwAGÔÕ!>þm‡ØÀ––¿!ú3äæBÐÔ]»Âøñôvâ;ཉò%%aÙ2ðô„Ç¡´ŠŠ >V¯\íæFÐÒ¢¢àÉHJ‚M›ÞÛ»jäçCz:¬_3gŠÕ\’’°høú‰ðô)ܹóöá·¬,ˆŽ† ¸A[ûm0Fž¾¬,LšAA—7nÀúõ0gΧŸBŸ¯Óf‰är¹m¬6V‹‹¯¥@€B¥2 &“‰MB¨³ §OCŸ>o—ÛÛùG3~N‚æfxøðmwÓ®]0}:üø#ôì ‹ÁüùïÍJ‹ƒ’lÜÀ`€‰ Ì›'´ÚÌ aÿ~X¼"#¡_?ˆˆ€©SÿÞëãcÇBe%L›â6Wx8tí ÁÁðô)()½ÈQVaÙ2hm++HHpú;wÂüùЯHJœ9°pá§ŸB_QÀÖÜÜœW\™rûñãçÕØ¬è{ÿ\Ѩš*]GõÕ·³Ðáp¸Ø !„:ÅÑ£/«© xdësØÚþ½ª¨ÉÉo—wïmm PÞK³g¿wñƒÄÉ ¦MƒiÓþ^2åïe''˜0á½Ä|‡“«¼Û)þûcc¸rE@%yìÚŽ•@Äy!ô•lm,Ö_O«®??´¯’’Š#-ÑwÃåTV¾‰O½­¤¤ÐCKžÅba› „ú†dgÃóç`aªU0cÆW”Ûµ•ú²[+‹•˜þ×Ä‘ýGõÕÅ6EÀHžÁ I¾³Îo l!„>Ó¿Ûu³v-¬]ûoæ&+û üˆóââÀôul\çÉËšîÝ»aƒ"DêÞ]îñ‹j*v8#„úü{- ú^uÚ­$»C¥à)B<Ÿ. •ÝŽsð „B¡¯ `C!„B!ô-lÙÙÙêêêÿÖé}‰ y¶¶¶âÕƒB!„úV6—¤¤¤ëÄ\\\Ξ=kff–““Ó¥K—ÏÌ/„B!„Ð'`«­­½{÷®££ã¿rVDé CYY™ò©3+‘ùà…‚B!„úïl×®]³²²êÚµ+äää 6LGGÇÙÙ¹´´”HP__ïíímhhhjjºvíZ‡ïF¦¥¥ >\OOoܸqeeewîÜ9r¤®®î˜1cÊÊÊÈ"bbbìííuttlll¢¢¢ˆøJçyüøñ¡C‡êèèôìÙÓÏϯ¡¡,1==½c yó©­­1c†®®®““Ó_ýÅ{¦ÂªÁår÷ìÙÓ¿mmmKKËuëÖÛVcÛ¶m#FŒ ólhh000ÈÈÈ V‰J&''ÛÙÙ„„„´··‹®|UU•»»»žžÞÈ‘#ãããq 'B!„B°ýíÊ•+C‡%–£¢¢Ö¯_åʃ±téRbã’%K ÷ìÙsôèÑÿýïä±7n\»vmjj*ƒÁ˜?þÚµk׬YsõêUIIÉeË–i¢££cccÃÃÃ3337oÞœ-°ô¿O•J]±bEFFFLLLaaáÊ•+É]kțϒ%KÊËËÏŸ?¿|ùòÍ›7“ DTcÓ¦M[·n]²dIffæÁƒµµµETc„ ………="Ò$''+((ØÙÙñÖïÞ½û÷ï?|øpJJÊîÝ»EW>$$äÕ«WçÏŸ_¹rå¶mÛðBG!„B¶·ÚÛÛ¯]»6dÈbõ×_µ´´Ô××÷ôô$zΞ=Ö«W¯~ýú-X°àðáÃäáË–-³¶¶ÖÓÓ›7oÞÝ»w—.]jee¥««;oÞ¼ßÿÚÚÚ¶oß¾eËUUÕ„†† çÏŸ íÕ«—ݬY³ˆ"ªÑÚÚºk×®Õ«W3FMMÍÜÜÜÕÕUD5~øá‡ž>ÞÜÜ|áÂ…Û·o—Ÿ[™ ‰uss Â>H@n†‹‹‹¥¥¥——רQ£Bb±X à÷m®X±bùòåÞÞÞ!!!äö'$$˜ššúøøDFFS(ƒé‹î¿ÂöóÏ?ãŸãp8uuuøOò«#FŒP~ÝÐP®1cÆà?~|ܸqp… `†ÜÜÜä§:½Œ|ïÍÍÍ—.]²°°ÐáâRï{ÑÔÔôý÷ßëééyzzv½µòòòúúz{{{@Àãñ–.] ¹0aCÊ×”zùÞ7nÜXUU¥ü~üþéÅ”)SÌÌÌöìÙCò’IÍ‘H$qqqÕÕÕ†††\.wÓ¦Më¶~„üǸû?ò77* pë£&8;;_»v ò4ÝöÒ:*•IAPÀ‘ʤttúxÂF¡R­ÞýòÅ+p^¼xiý®1þžOЖî¹%R¡÷¡‡mÆÅÂöŽN33*®*C©LZÿ¼éüÏwÖ-ÙÖÖ‚}9acè1œ&Ž_¡gpæêýšg/;%pIÚãŠFµ|wôJÿé6æo^¿A€¾œ°Q(™T:õ/ïþÕÑ’J…Ëk€¤Ri{{;ÌÖ€¾Ÿ°a´µµÁÝ_Ý\ € 6˜°0abtç["¥I§D‚d²!¡…B£Qi4Be2Ô(”6¿‘´wʆ€ˆA£ŒN5A£P C4Êè½ [GGÇŸOþ¬¨(ùâÅ WJ¥Ž9j¢½½…¥%ƒÁP1[Cè¦Î'ÿnª|ôç¿›„ƒ^jfl8Ù†õÆÜÔz,2Dm†@ïMؤIÃó祥ÅïÏyß’mC£Ñ·j<\ÿå:6ÞÂ’JS¼³´Y$ih~UZùøSo[Ëwh4ê`¤³êñÓŸ®–3Œ‘£MŒh!ä½7aë”Hîÿú«§ç¿¼¼|ôèÑÙÙÙ¡G=yòäÉ“'=tK$¹ ýÐå'NÌ;ׯÆfÉ’%™™™øí»!!!ëׯøðáO?ýdcc·DÐk|ýõ×NNN|>êÔ©,kÖ¬Y§OŸ‰D)))X…¨¨¨9sæ$''O:•ÉdÚÛÛ§§§kÒ¸©©©Ù[LLL~•¿Rñã?NŸ>Ý‚Ãáðù|妸\.BˆÍfc×.ðòÒÒR///+++.—[SSƒ—gddÌš5ËÊÊjÚ´i<O弫¹¹900ÍfûøøœË–-B¡ðÔ©SÙÙÙS¦LAmÙ²…Ïçùå—Xý˜˜L=„И1cBæææÃ† —qŽ? ò÷÷ß»w¯¾¾~ss³D"ñõõµ°°°°°€½†H$ºzõê?ü !ÅÀÀ`ùòåÇŽÛ¼y³P(¼~ýúÙ³g6ìÞ /õõõaaa‘‘‘¾¾¾ÏŸ?W¹ÿ ¼s玞žž|9ÇKLL9räÖ­[###±Γ““Ï;cgg'ÂÂÂ( ¾ëÆ ohhÈÍÍ …›7o–ÿ)999))iÔ¨Q£G¦R©;wîd³ÙOž<‰ŠŠÚµk×·ß~‹UãóùGŽyõêÕ_|aaa±víZ«p’’’233ããã9NccceeåÎywÔE%É‘w–¨e•© Šæ})lNä>‘\F9""¢ªªêüùó/_¾üâ‹/LLLV¯^M’Q½“ó0Ô'lj¹{÷î×_]VVöæÍ‰DÒÚÚÚÑÑý„OóÌÌÌÄbq[[Ûï¿ÿþæÍ›÷ß_¡‘‡ …Bùr©T*ßT?䯸ÍèòWÿ8`oooddtñâEùúÎÎÎØ‚‹‹Ë£G¤Riuuugg'6GEM:õ«¯¾ÂOV999Ë$555ùùù!„ÜÜÜLMM/\¸°dÉ’‰'ºººº»»s¹\___*Þ¶ @oP[[+‘H&Mš¤PnooÿÇÈd²'OžH¥R¬<77? ®¨¨P8ÒUß©"„|||’““UV{ñâ…D"ñòòR¸P#6—;v¬¾¾¾|ùW_}…í¢CBB°'‘:::{öl„Ðýû÷Ùl6y˜z-ç`LØL*ÓéuºãÇ\ûöÛoW­ ®¯¯ÇÆ^Ôöí2©tŒ±ñÁ¾þúëNŸ>ýë;V®Z%“ÊdRBH&ýOoWe2©4ò«¯ŒŒŒ¢¢¢êêêLMM±:_†n41óÝwÉëÖ­§Óé“&MúÛߖˤR…¦úƒ ˜IS¦8ÉŸÎlnjÄž5ÿ¥à•:zÔ¨äï¾ Z¾|ÞܹXý/Vòɧ Ÿ|òɆõë°®y{“þ¾iÓ¼yó† ôùš•.55ݵkgäW‘õÏŸK¥ÒW/_ôHº Òß\þþûÌŸïM§Ñä öõýàÿøÞkÞ¼œœÜèè˜ööv'§)Ç23dýûû &¢££¹\nppðÚµkßyç@@¥Rׯ_Wð÷÷߸qcPP‹ÅjnnÎÊÊ¢P(òy~ûí7ü}KÇ·¶¶Æ–ñ7R(ìó*ÊÜ¿ÿÞ½{³gÏf0ùùùØ%…:,‹B¡äçç{xxP(ì=O*Ñ×× ‹Å®®®eee? •¯6bĈùóçÇÄÄðx<¡P˜™™‰T½X‚ÅbÑét>Ÿ¿lÙ²ªª*ü-e<;Í—’’²råJM×××ŽŠŠ¢Óé...Ø[4>ýôSòŽ”g}fffIII[¶lxe•Jj(ˆ(E羈Ü'’KÃŽŒŒŒ¸\nLLŒ™™ÙË—/SRR6lØ É èÞœ¯¬¬ ÉÏÏÇO"Àà™°IeHªëu†wÞy')IñËõXk/ýøã¥ã…‹/BM6õÅ‹f¼ŽÂêÆ7nܨÐBhÙ²eË–-SèBaÛþ n’‚©sÞÿÙ³g¸©^Þ^OŸÖ!„îÝ»‡òœ;÷¾ŸŸ‚׆FF o¶%ryÆ ønQÚ3׋Héo.cŸT(ŒŒŒÄ^+zþü9åDèÆŸ———””´råÊÆÆF©T:}úôììì‘#Gbììì.^¼¸wïÞ•+W¾xñÂØØø¯ýë… äaò“Ûsº¸¸äää`ËØÅ+ü¬Ymm­JŒŒŒòóóÛÚÚUÎUÆŽÝÐЀ}‹ĩuëÖ™˜˜¤¦¦nÞ¼™Á`ØÙÙ*WKÙjr! IDATHH õññ±µµ Žˆˆü c̘1{÷î‹‹KKK›6mZxxøºuëð_W¬X±|ùòÆÆÆÅ‹kþéç°°°#FÄÆÆ>}út̘1Ÿ}ö™ÚŽ Ñhܶm›‡‡ÇÔ©S·lÙ‚U&RRCA´EePtë‹Ä}•riÞQ|||DD„ŸŸŸ¾¾þ²eËV­Z¥Ö˜nÏy±X,¤p6è7ÝʵhÇ*…ŠJߨæÓïímmY'\õEöQ‘¡ÃñŒ£\?¿Q£ÊËÿl?“ë›õ>½#Ƚ{÷¼½ç?yRÛç÷aÍ¿ºxþ Çqz=!ýÇeÝ2DÕÉwBR™ô§h.ì•@‡Cƒ‹9ÙË‚V;Âÿ|E0Iµ`oQŸ5kÖÐúÿ{üøÁƒ‹ŠŠ4¬_RRÂår>|,Ð;;Ÿë=¿àÊe_¿.vï3l2¸7¬Oy{_¨´Ÿëß‚ —z”õë×7®¢¢ÂÍÍMùrÓ £¼¼¼¾¾ÞÞÞ^ ðx¼¥K—B0èÞgØdðê…>dêÔ© ÏBý]ÿîdÀ¸ ÐÃ|øá‡CÄS‰DW]]mhhÈår7mÚÑ&lZ@¥RE"F:ÚI$")D£QE¢×4u( "¥Ñ¨DŸ5ƒ º‚³³óµk×tÛ–Ãá?G0Ø'lŠñ¨Ñ ffc‡ŽvMÆÆc(S2òŽ±áŸ Âñf#†Ž 6ß16Ò£Q CÔfôÞ„F¥MžâXt»pº««©©Ù ¿¬$‘HŸßû×]ggŽž¾¾rCªË$«ì›|þ:ÁÂl$Fì‚ÈjŸ·\,zôW'[#*dˆÚ €Þ›°QiÔwßa:88þZZ"lJ$’Á­F5z´ÃdSSSü³òŒ1¢ G:O²*(­©ñZ"‘vA¨æÆ†.“¬ÍLF™Ñ CÔfôÞ„B¡0ôõlllƱX’Ρð*•J§3 †Wý+…beÊ06ö±&’Á¯…‚4б!u¬ 2D“ €Þ›°aÐèôáFF )>‡;‚6v¼s2t^‡6&l0a`Â6&lLØ`ÂÀ„ `0CפÒêä; @/WØú)j®°IeRРßMØ~Šæ‚@}Ü Àˆ‹‹KHHèé^JJJX,Öëׯ5,ºQ¥Ï?ÿüôéÓÝÞlßúÞ·ÆëÖ{·Ø<Ȇ æN[[[?ÔAgÛ`ÂCŽÚÚÚ/¿üÒÅÅÅÒÒÒÙÙyõêÕÅÅÅšÎÊãêêªÜrssó‰'V®\©I_=££ciiéðáÃâ!¬Úã9 £ÐÓ*­]»–ÇãI¥Òž¿¯è[ã5é]9=´à½ b …êêj???OOÏC‡½ûî»/_¾,,,LMMåóùj·½uë–¶L£Ñ”+œ9sfÚ´i¦¦¦ZõÕÙÙI¥R©Ôn8Ì`0ÌÌÌwÕF¡§Uruuíèè(,,ôððè[ñGætvvÒh4z ÙÞk z1á  ¢¢¢æÌ™“œœµ›« %‰_Ú"ÛúôK>ŠÊ^¼#gñŽœ¦Æ†¡öw"ã°L&Ë<œ./HEE“ÉlnnÆVsrr&¼¥­­M&“3™L‘H¤ $V>AŽ 6(Ô©®®f2™OŸ>Õ¤/¬ÁÂÂB•»zõª½½=Þïõë×±ò´´4¼üÞ½{Xy~~¾µµµ¼ýb±ØÆÆæÜ¹s -WUU1™L@@’6D"¨´P&“ìÞ½[^²dÉ7ß|#“É„B¡……EAAVž’’"o9Þ8¶*‹–I SŽ‘---ãÇ¿yó&VÎçó±öqˆ6loo·³³+++ûÎËËsvvÆW¯\¹‚ÕT©›&"‰‰Cn|?Ì•ˆZSðB!"Êf«Lµq$ÒP“lWPR‡ì"2[¡}¢vÔ&!†Â@KKKS»¹ÊHáf“û¥Õ`!²Móa™‡Óÿ|Rs"ã°Ú>öŸî£¨l¢¦à6Ì™3ç矮¨¨X½zµL&S[?;;zJùé|¡Pˆ244Ô¼¯É“'ãJKK+++[[[%‰X,îèèÀ~rppÀ?~Œßndgg‡-˜šš¶µµµ··ã­UWW·¶¶º»»+˜akkËáp|}}½½½½½½,X ùP*-d0K—. öìYQQvÏ[MMMgg§££#¶­““ÓîÝ»UÞÐ¥-DQPV£¶¶V"‘ØÛÛ+«-ò†ÕÕÕ"‘hÑ¢Ex©TŠû‹222Âjêéé)7¨‰ÈDbâÈ£²QkäQ6[“,Õ94Q²ëµOÔŽ@ OB …†KG²9y(ÉýÒj°ÙÖ'À„ ãÆ£R©=zï½÷°É•¡¡ass³†›[XXÍÇB#FŒ@½~ýzäÈ‘öE§ÿç(âÍ›7\.wëÖ­ÆÆÆåååkÖ¬Q;½Q8ŠÕdÎI£ÑΞ={ýúõ‚‚‚°°°œœœ””M|'±pÁ‚ááá·oß...vvvf³Ù$í(Ü}ªÃŽ( :¨A´!fÕ©S§F­2^"‘H___ålM‘u w?ÏR ÷¢[Ð94QRóƉ2\ÛH©MB’NÉ7§P(ºít,ÝrÃy7¤üÿ€ÁÈ‘#ÝÝÝ322z¢q&“I§ÓŸ>}ªC_ ¥¥eÛ¶mÇÚÚº©©Iþ×ŠŠ |ÁÚÚZ“« l6ÛÀÀ °°PåQ²§§gtt4Ç»pႆó õõõýýýOŸ>}æÌ™?þ+´´´¤ÓéåååØêýû÷Ùl6•J522Bá›WUU) vËU8|jG£Ñð.*++5ÜÐÆÆÆÐа®®Îê¿Á=Ÿ={&ÿ,–¶"“‡[+ãûUæ(W i•fëZ%€&AѤq¢ 'jŸ¨µI¨r áÒ‘oNJmG IGD¶õ p…  ÑÑÑþþþ7n b±XÍÍÍYYY Eþ0è·ß~6l¶<|øpkkkl¹±±ù…B;v¬|ËúúúS¦L)//Ÿ:uªæ}a°X,:Îçó—-[VUU%ÿ~„Ç355miiIII‘ÿÈ úúúÁÁÁQQQt:ÝÅÅ¥±±±²²òÓO?½ÿþ½{÷fÏžÍ`0òóó±Ë€*[PÜÂO>ùäÃ?¤P(þþþøa+—ˉ‰133{ùòeJJʆ °ù€™™YRRÒ–-[|;,‹B¡äçç{xxP(”1cƨ4Œ< òŒ1bþüù111<O(fff"ÍÎ÷ëë뇆††‡‡‹ÅbWW×ÎÎβ²²Ç‡††bÊÊʰ §*Q+2¹˜Zß2Ge¢ÖÈmPi¶†é¡shM'Êp¢ö‰ÚÑÓÓ#OB| -\¸066ö»ï¾kii9zô¨Ú&¥¶£†¤#"Ûú¸Â;;»‹/"„V®\éêêðòåË .ÈßÞæçççýlš1cÆ —·à³2y¸\î•+W´ê c̘1{÷îÍÊÊš5kŸÏ—ÿuÅŠË—/ðöö ÑÐÓ°°°ØØX77·   ÚÚZìð.??ÿƒ>˜={öƒHŽJD ·û2¸———üëþâãã'Nœèçç°jÕ*„F;xð`II‰‡‡Çþýû·lÙ‚×;vldddtt´³³3þÜ‹2j£ OBB‚©©©Odddpp0…B‘þ‡„uëÖEFF¦¦¦Îœ9ÓËË+--ÍÜÜÿõÚµk¾¾¾DÛª™\L­Œï?™CTAekä¨4[ÃôÐ94 ŠÚƉ2œ¤}"#É“P~ ™››/\¸pûöíòû+¢ÍÕ†RÛQCb'‘m½EÛ{d wX´ã•BE¥otj¾_ÌÉ^´âØþç+‚{­Ó¦¦¦™3gÞ¸qÿvv)))ár¹>$yv®?ÐÑÑÁáp’’’¼½½û­‘Ç?xð`QQQÛ)**Ú´iÓÍ›7»å‹Õ=dü@ÉœÞ4»» GïQ#œ=ÇŽðçzÏ/¸rÙÇ×¼æêä;!©LúS4We¸%„211Y¶lÙáÇ·mÛ6t¼njjúþûïõôô<==û›måååõõõööö€Çã-]º´ëm¦¤¤lÚ´©fk=aüP£G5ì®Æû[ eâÁ„ €ÿ°}ûö¡æò”)SÌÌÌöìÙÓ½/ýë$I\\\uuµ¡¡!—ËÝ´iS×Ûâ£ØþsLß?Ó@-õõõÉÉÉû÷ï¿{÷.悾¾>$I?^:†ºº:©Têãã3lØ0MêwvvR©T­Þá®Ã&D0 33³þ¦a÷Z5|ì…Tèt‹à½¯çÓ§OBFFF¡è€ƒ¯¯/BÈÆÆ†Åb!„„Báúõëmmmâãã¥R)z{ áòåËžžžl6»¡¡A¾™L–žžîîîniiéââ’@´IFFƬY³¬¬¬¦M›Æãñ°ÆBYYYóæÍ³²²š4iRhh¨H$Âʹ\.BˆÍf³X,Ì<…;ônÞ¼éååeeeÅårkjj°­š››Ùl¶ÏÉ“'•¯~`Ûæåå¹¹¹M˜0!<<\"‘ ¥ûß®œüòË/ õÄ6T©†n>’‡C¥ïò¼zõ*((ÈÚÚzÁ‚¸$>Y¨ì£²Í˜?>^Y$M˜0áÖ­[ &© rª¨´„(j¥¥¥ÊjüøãÓ§O·°°àp8|>Ÿd7Ž¡2*ÕЪk…HýþûïÊ‚…¦ëzÞ¸qÃÛÛ›Ífûûû×ÖÖûøøX[[ûúúÖÖÖjëË™3g°ýÉ_þòÖ[°ì"1U9µÚ{¨5Ä}•ƒHe8p…  Ç ¼s玞žB(""¢ªªêüùó/_¾üâ‹/LLLV¯^ÕLNNNJJ5jÔèÑ£å[HJJÊÌÌŒçp8•••øOò›$''Ÿ;w.&&ÆÎÎN „……Q(”/¿ü!D¥RwîÜÉf³ŸÿÈ‘#¯^½úâ‹/,,,Ö®]K.”†õ‰ÔÐÍG’p¨ô]aÛºººÜÜÜW¯^iòå(" Õæ BhÉ’%‰‰‰>´³³Cåå噘˜¸¹¹)lHùT!±„( ÊjÔ×ׇ……EFFúúú666>þ\­ä!&Š…²Úv­6RD‚t]Ï={öÄÇLJ……­Y³ÆÀÀ ..ÎØØxëÖ­Û·o?vì˜V¾øúúÞºuËÀÀàÿþïÿÕ†žMöš˜Gâ¾ÊA¤íÀ¨È _òQTöâ9‹wä456 µ¿‡e2YæátMŠ‹‹™L¦X,–ÉdB¡Ð¢  û)%%ÅÃïSXX¨,©X,¶±±9wîœÊfñMÚÛÛíììÊÊÊð yyyÎÎÎÊ ^½zÕÞÞ^Ù6ù‘H„-Ü»w+ÏÏÏ·¶¶–Éd---ãÇ¿yó&VÎçóZÀ¹~ý:¶š––&ï¦H$Rè]m}|H Ý|$‡²ïò(l›––&D*ûH´U@@ÀîÝ»±å%K–|óÍ7 m…†$»”-!Š‚²UUUL&S h²gPb¢X¨TC«®5Œ”² Ý¢çÝ»w±òK—.1™Ì’’|•Ífkë‹Â •!7•hÄi²÷ÐÖ<÷•Ó†(ýä_Xæáô?ŸÔœÈ8¬v‡ý§û(*›¨)¸Â’šššÎÎNGGGlÕÉÉi÷îÝø­G“'OVÞ¤ºººµµÕÝÝ]eƒø&@$-Z´ÿI*•ŠÅ⎎ƒQZZš˜˜XYYÙÚÚ*‘Hðrµc×sB¦¦¦mmmíííµµµ‰ÄÞÞžÄf |áñãǸ›]©O¢†>’‡CÙwùkt ÛâÆ“ ÒBÍ“géÒ¥±±±áááÏž=+**ÂïÅ!ü*‰%DQPVÃÖÖ–Ãáøúúz{{{{{/X°@ísP$!&Š…Ê6µêZ“H©¤[ôœ8q"¶`bb¢°*‹u“QÍG¥¶{MÌ#q_9mt8x† !t:]çM°cßS§Nýü–+W®Òéô7oÞŒ?þèÑ£ùùù<¯¯þ˜ã¿Îd2YW¤P(ò«Ú  ]ñ±+¾+xDâc×-\°`H$º}ûö™3gœÙl¶n©¢›%ÊjÐh´³gÏ8p`äÈ‘aaaëׯﵑ¢C×Ê‘êbòh¨§‚n½,#ùˆÓdï¡Ö<­ÜÇI8`Â@_biiI§ÓËË˱Õû÷ï³Ùlòêl6ÛÀÀ °°¼eCCúº:«ÿ†B¡‚–––mÛ¶q8kk릦&…ÃG­¦ 4­ªª [• NŠŠ |ÁÚÚšJ¥bïµÃ À!ª¯¹ºù¨C8ˆ¶Å'ò‘ÄB¢Ù‘‚Íúúúþþþ§OŸ>sæÌǬshÈ-Ñ$ òGüžžžÑÑÑ<ïÂ… j‰¤q’X¨TCó®‰"¥VnÑSù´V2jzò§ÉÞC­yÚº¯60a /122âr¹111UUU·oßNIIY¶lù&úúúÁÁÁQQQ¹¹¹OŸ>-++ûñÇUV ?sæÌŸþùÇdgg÷Ýw!‹E§Óù|þ“'O.]º”––†oÅb±(J~~~SSSss³&.Œ1bþüù111¿ýöÛ¿þõ¯ÌÌLDp¾œÇãýöÛowïÞMIIYºt)6Ý233KJJzòäIAA¼%*ëk®†n>êùm.\UuçΣGâSJ•>’X¨ ‘ÍŸ|òÉ™3gþøãCCn‰&QÀçT‡~ôèQMMM~~þ¸qãÔÎuI'‰…²ZuM)µ‚t‹žjÑAFÍCO>â4Ù{¨5O[÷Õ†&lô1ñññ'Nôóó Xµj•ÚMÂÂÂBBBbccÝÜÜ‚‚‚ð·+°nݺÈÈÈÔÔÔ™3gzyy¥¥¥™››#„ÆŒ³wïÞ¬¬¬Y³fñùüððp|“±cÇFFFFGG;;;ãO•¨%!!ÁÔÔÔÇÇ'22288˜B¡¨|TlÅŠË—/ðööƾN£ÑÔS[_`Tö7`Â@Ÿ!‘Hââ⪫« ¹\î`þômbÊ”)fff{öì!y›hMRRR_IÔí]÷¡žÚú£&lÿÁÙÙùÚµk$8N]]ÝÒ¤\Ö¤}µ¡é+hJtEO0uˆ/€ 6"à/ì&zs7VÞÖÖZ ˆ8‚ÁÝN\\\BB¾š––æääÄb±zô¹Õ§Ä'ߟ  DY 6 8::–––>¼wº«­­ýòË/±oy9;;¯^½º¸¸X“C=y\]ûéz–ÛËáÄJ*ÐÜÜ|âĉ•+Wb«ÏŸ?ݹsgII ù§áºèfŸ´‡”Wëœ!ê à¥#0`0fff½ÓWuuµŸŸŸ§§ç¡C‡Þ}÷Ý—/_¦¦¦òù|µÛÞºuËÀÀ[¦ÑhýMÆÎÎN*•ÚûÒh´^ ‘×½ïx/pæÌ™iÓ¦™ššb«uuuR©ÔÇÇgذaƒf<ÖýÌÀÊÌ5®°À€áÇœ>}º……‡ÃQ˜É_×zõêUPPµµõ‚ ~ÿýwùj³fͲ²²š6mÇ“J¥j[V&**jΜ9ÉÉÉS§Ne2™öööÁÁÁéé隸`jjjöM|T¸d‡ŸÂÇòòòÜÜÜ&L˜.‘Hð Êå!¡P¸~ýz[[[‡øøxÌ}¬þåË—===ÙlvCC—ËE±ÙlìJ &ñùü9sæà«“'Oþç?ÿ‰ÊÊÊš7ož••Õ¤I“BCCE"‘r§ùùù¸$F*‹ Iìš››Ùl¶ÏÉ“'åÕ“÷šÄN•b"„JKK½¼¼¬¬¬¸\nMMr×ÊJ8p`þüùx‘H4a„[·n‘w¤sÞ^¸paîܹøª¯¯/BÈÆÆ†Åb‘çÕÍ›7•]“Édéééîîî–––...ø–ÊnÊ7NP•½( j"MHRZ¥IÚs•ñ•÷Kek*û%2²ë™yãÆ ooo6›íïï_[[[\\ìããcmmíëë[[[«›×¿üò‹²àšŒâ†††ÚóÄ õõõaaa+W®¼}ûöÑ£G­¬¬ˆjFDDÔÕÕåææ~ýõ×ûöíÃË“““;sûöí}ûö:u*99Y«–±c¯ëׯ/_¾\¡¼[>1¬•%øLéÈ‘#'Nœ¸xñbZZyyDDDUUÕùóçÓÓÓ¿ÿþûC‡É‹“””TPP0zôèãÇ#„îܹSZZZZZª‰a\.W üöÛoØê7$ öYj*•ºsçÎ[·neddTUUíÚµK¹ÓQ£FɇÈHÝ ohhÈÍÍݵk×ä’÷šÄN"‘y<^bbâ•+W Fdd¤r×ÊJ.Y²¤ªªêáÇX…¼¼<777’ŽtÎÛ¶¶¶²²²)S¦¨´‡<¯Tº–””´ÿþˆˆˆÛ·ogffZZZ¹©0‰ªV@ɬfë IDATñÉ×!‡5<ñTJAdd×3sÏž=ñññ—/_f0kÖ¬‰‹‹»zõê°aöoßÞ»MFñèÑ£{jï/€~ÉGQÙ‹wä,Þ‘ÓÔØ0ÔþNd–Éd™‡Ó婪ªb2™@¾°¸¸˜ÉdŠD"|A(ZXX`ÒÒÒ˜L¦X,noo·³³+++÷ÍËËsvv&j™ˆŠŠ &“ÙÜÜŒ­æääLxK[[›¼I bå䨰aƒBråWÅb1¶pýúuÜS¼‚r¹‚2)))òõ z‹Åä†)°hÑ¢„„lyãÆ7nT®sõêU{{{åN‰Â§`¤²j kii?~üÍ›7±U>Ÿ/¯ž¼×$v‰|ïÞ=¬ŠÊ&2 ža€­­-‡Ãñõõõööööö^°`Êç%jjj:;;±UlA ˆD¢E‹á5¥R©X,îèèаe•Ì™3ç矮¨¨X½zµL&S[?;;†MùÕ:X‚;èààðøñcün+åreœœœvïÞן!„ššš° UUUòõq+**¬­­ñ#6åreîß¿Ïf³UžnÇ DP+‘©©éŒ3.\¸½páBƒ---Û¶mãp8ÖÖÖ¸DI"¹a4 ¯_YY©²_r;‰DÖðˆ_Á$}}}ÿÓ§OŸ9sæã?&ï¨+yËd2étúÓ§OUÚFžWʰÙlƒÂÂB Ý$¨æ#‚D|’ÆuËá®ïŽ”û%2²[2³»v›ä‚w݆®î០îß¿ïÞ½Ù³g3Œüü|ìJ—ÊÃÐ… ÆÆÆ~÷Ýw---GÅ’CCCÃÃÃÅb±««kgggYYÙãÇCCC‰Z®¬¬ ÉÏÏÇobÄˆŽŽö÷÷߸qcPP‹ÅjnnÎÊÊ¢P(ò—,~ûí7üÍéÇ·¶¶Æ–ñ+ eìØ±j}d³ÙfffIII[¶l ï]àñx¦¦¦---)))øç¶T–q¹Ü˜˜33³—/_¦¤¤lذA¥Ô,‹B¡äçç{xxP(”1cÆh(¾¿¿ÿwß}×ÜÜ|äȼ):Îçó—-[VUU¥üÒåð©4’Hµ†1bþüù111<O(fff"U`Éí$Y-ÊJbåŸ|òɇ~H¡PüýýÉ;Ò!oåg†S¦L)//Ÿ:uªÊ I^)£¯¯E§Ó]\\+++?ýôS7µÊ:"HÄ'i\çîâîH¹_"#»%3»k·I.xmè:p… FFFùùù|ðÁìÙ³ÌÌ>ôZà6€ÁŒD"‰‹‹«®®644är¹›6mê[{¦L™bff¶gÏž^x½Bû€2@DRRÒÌÌ>ô&l 8N]]æåCggçk×®u¯È]¢Ö‡âšÌRÀ-‘0a`€†èöRoP`pKÑo5`¥¥¥999±X¬^~ «ÿ(ÿù矟>}&l}v8ÞÖÖ¦¶°?6ˆ-qtt,-->|8äd¿âùóç±±±;wî,))Ñêƒxƒ)9×®]Ëãñ”¿ 6Cê8Ôè!‰ †™™Ù@yéùPHÌ—ºº:©Têããcnn>d?3èêêÚÑÑQXX6úÍÍÍl6ÛÇÇçäÉ“ØÉlì¬öåË—===ÙlvCCCVVÖ¼y󬬬&Mš*‰ÐÛ“ßyyynnn&L—H$xË¥¥¥^^^VVV\.·¦¦+üñǧOŸnaaÁápø|>¹m*+Ëd²ôôtwwwKKK—„„¬\¥…!.—‹b³Ù,‹Åb‘"„222fÍšeee5mÚ4üŒ»²x}r0„BáúõëmmmâããñÃ}•6h¥‘*{ÄL½yó¦rPTZBÒ~~õƒD"­ð{#UZB‚UFm°Ô&À7¼½½Ùl¶¿¿mmmqq±µµµ¯¯omm-I~’äOGŠæ‘òõõEÙØØ`¡'GD’’„¬Ÿ M P(žžž999Cgϯõ€CxxxCCCnn®P(ܼy³üOÉÉÉIII£F=z4•Jݹs'›Í~òäITTÔ®]»¾ýö[¬ŸÏ?räÈ«W¯¾øâ ‹µk×bå</11qäÈ‘[·nŒŒDRõH•–7"‰6T+‘H$RXP¶„$½  I°Ôzw÷î]lõÒ¥KL&³¤¤_e³Ù:Œ ®Í#¥r€(ØI$)IÈúÉ0Ñœ+W®à#¢ß’y8ýÏ'5'2«Ýácÿé>ŠÊ&j ®°ÀÀ ¶¶V"‘ØÛÛc«“'O–ÿU~µ´´411±²²²µµU"‘ˆÅ⎎ì'|áñãÇø½LvvvØ‚©©i[[[{{»­­-‡Ãñõõõööööö^°`•Jø$…ÊÊÕÕÕ­­­îîîÊõUZÈ`04”B ˆD¢E‹á%R©TÞMqä!R!TSSÓÙÙéè舭:99íÞ½[*•ªt\+}ˆ¤ ê‘((òWÕ4l„‰”Q¶¤ººš(½ ŒÚ $ÞMœ8[011QX‹Å˜ÈZ ®#¥ÒN"IIFòÐë“a¢9FFF$#bð6ÿÑéÿùŸþæÍ›€€.—»uëVccãòòò5kÖ¨=|W8Š’Éd4íìٳׯ_/(( ËÉÉIII!Ú\«ÊºY(VùÔ©S 7¼á"à =‡V.ë†rP´Ú\á•! k%‘²%$! P(=­ŒæÃA­/Ê®i›Ÿ])ºEJ[;ÕŽš4LD"‘¾¾þ™­!xé ,,,h4ZUU¶Š?—¢€@ hiiÙ¶m‡Ã±¶¶njj’ÿµ¢¢_°¶¶&?ÛM§Ó===£££y<Þ… ÈçTÊ•Ùl¶òËÜH,ÄìQèH¹ÐÆÆÆÐа®®Îê¿Ñä­†$ XZZÒéôòòrlõþýûl6« Ò0Íõ!’‚¤Gòù†|_D!„pyñÌéÈCÐ Êè †è0‚º8Rt‹‘D’j5júd˜hγgÏ,--‡Ðù8øÿ‚#FÌŸ??&&†Çã …ÂÌÌL¤t!Äb±èt:ŸÏ_¶lYUUUZZšü¯<ÏÔÔ´¥¥%%%eåÊ•$ÝÝ¿ÿÞ½{³gÏf0ùùùãÆ#9VYY__?888**ŠN§»¸¸`/?øôÓOI,d±X %??ßÃÃB¡Œ3Fe¡¾¾~hhhxx¸X,vuuíìì,++{üøqhh¨ZI022âr¹111fff/_¾LIIÙ°a‘aZéC$ID([BÔ›Í633KJJÚ²e‹@ PÈ„.B‚ÞQFé4DÛÔõ‘¢[¤ˆì$’T«QÓ'Ã;’ŸŸo``@´Œ*++{ï½÷`Â@¿#!!!44ÔÇÇÇÖÖ6888""Bùá“1cÆìÝ»7...--mÚ´iáááëÖ­Ã]±bÅòåË/^Lþá]##£üüüÄÄͶ6GGGüp°¤¤„Ëå>|øPþ3PD•ÃÂÂFŒûôéÓ1cÆ|öÙgäŽ;6222::º¡¡ûêQáºuëLLLRSS7oÞÌ`0ììì5Ñ\øøøˆˆ???}}ýeË–­ZµŠÈ0­ô!’‚¤G"Tª¡²vðàÁmÛ¶yxxL:uË–-ò™ÐuˆBÐkÊh+†h;‚º>Rt‹‰D’j>júj˜ˆÅb@€]…#ZF]»vmÏž=CgÏOÑö~hèí¸@¥PBé]‡šïs²—­8v„ÿùŠ`¢:Ç?xð`QQ‘†m!iKvvöþýû/]º4ྪÜ] V}zš®Œ¶ù3@ýíÿ䨨hÓ¦M7oÞì–;`{ŽcGøs½ç\¹ìãëG^suò„T&ý)š«²\a€Cyyy}}½½½½@ àñxK—.í}~ùå—Í›7ÃlôeÀß>'%%eÓ¦Mý|¶Ö½À„  ‰$..®ººÚÐÐËånÚ´©÷mHJJ‚@€>  øÛWâ`7RÀ„  ÎÎÎ×®]Óm[‡ƒ=ï4dÈps ¯õ€ 6"”””°X¬×¯_‚qmÛé!§:äââ2nÜ8Ö[ÚÚں⑽œÚ’––æääÄb±zá™®*Q¯\Ý2öŸ0aŽºBÈÑѱ´´tøðრÏŸ?ßµkWdddqqqiiéñãÇ´,:'ÞóçÏcccwîÜYRRBþÝ?H­þœê“&M’~MM v&f€0a èììÄ?8ÛŸa0fffƒã5èuuuR©Ô×××ÜÜÜÌÌlôèÑCSLsssm¿ëÕy;˜R«O1bDnn.¾úÃ?0™ÌÁ· ‚ ]…Ëå"„Øl6v‹^^ZZêååeeeÅårkjjÐÛóâ—/_öôôd³Ù B¡pýúõ¶¶¶ñññØñ“ÂAòRš››Ùl¶ÏÉ“'åϦ+w§@VVÖ¼y󬬬&Mš*‰”ëüøãÓ§O·°°àp8|>)ÝûwãÆ ooo6›íïï_[[[\\ìããcmmíëë[[[‹×ÏËËsss›0aBxx¸D"Qî(##cÖ¬YVVVÓ¦MãñxDŽ¿üò‹B;$âÇ××!dcc£òW•&a_Ø;uêV»£òåË— f(Û©ƒ¿Êâ“o«Ö_•ÙE®ƒÊSÎ[•¹Dz¢á€§ÖÍ›7•˜$áqd2Yzzº»»»¥¥¥‹‹KBB‰ûZ¥±ÚjDÊģW¯^Y[[/X°à÷ßW}–.]úÃ?`ˉ$++ë“O>!¾r(5LΞY·}ÑÀìÕ]¿ ú%Ee/Þ‘³xGNScÃPû;‘qX&“eNWÐäÊ•+L&óÉ“'õõõõõõ2™¬¸¸˜Éd.Z´¨¤¤äÑ£G}ôѲeËðr.—[RR"Äbñºuë<==+** ÒÒÒðj"‘k[‹Å2™,88xþüù•••wîÜ™9s&VNÔ§NºqãF]]]QQ‘——×–-[*üûßÿ?~|jjêŸþù믿^ºtIÞlÁÏÏïÞ½{`ñâÅ .\¼xqqqquuõâÅ‹ñú~øaeeåíÛ·§L™rðàA§¾ûî»÷ß¿  àéÓ§7nÜpssãñx ÆhÒŽ‚8Ê ‰”¶$&9sæ/ùËÓ§O=zÄf³/_¾¬,K×ýU)>ù¶jýU™]Ê:ÈC’`òy«2—È¥ ¸†*X¥= 6ûí·.\¨««»ÿþ?ü@â¾Vi¬¶Ѱ"ñhÍš5sçέ¨¨¸uëÖ_ÿúWÌ#¢èµÿÇXZZÖÔÔÈd²üüü÷Þ{ï_ÿú.‰ûò¡Ô$9{TdÇŽÊ©–ÌÃé>©9‘qXíûO÷QT6QS0a`Â6`&lòÇýò%÷îÝÃVóóó­­­ñòÂÂB¬\(ZXX`«)))$s’–––ñãÇß¼y+çóùòÇÓÊÝ‘põêU{{{…ªª*&“)”½ÃªïÞ½‹•_ºt‰Éd–””à«l6¯ýúu¬<--MÁ©ööv;;»²²2¼‹¼¼Øªƒƒ¾ðøñcy§H$Z´h^"•J•QÛN7¢Ö¤o¾ùfæÌ™†††øhšÛ©¡¿*Å×J+ˆ²K9¦&˜üªÊ\"—‚h8$0¹=ÕÕÕ­­­îîU«­¦§§G"…²G VáZi2ôTòÙgŸ………ÄÅÅÕ××kâ>®¤† Ö£"we쨘= LØ`À£pÈ%“Éþóož®æ½Âk4œ¥u‡ñæÍ›€€.—»uëVccãòòò5kÖ(´L£ÑΞ={ýúõ‚‚‚°°°œœœ””ò^È;U Öé©S§Þù¡V–®ˆÓE“<}Û©&¹¤m~ê–KÝ56‰ºV[\ ¢f•ß³¢ÉÐSÉœ9sB7nœ1c‹ÅÂ'l†²G¬ö]˜Ýà ü“€51Óaæ`iiI§ÓËË˱Õû÷ï³Ùl*•jdd„jjjÂÊ«ªª° †¯VVVþ¿öî=®‰3íÿä$jð"VP áPET@ µˆZª(Jð©ö麸.VÅCñQDX¤U@)ÖÅJ…xõÕmew­ÔtÕ¢U‘Va•Ö6°`±U°“üþ˜oóK“ÌdAA>ï—$“É5÷}Ý׌s3É„ù¶äryccãÖ­[===:¸î™œŸŸ_||¼D"ÉÉÉ1z:TZZª~ 4ÏÕù|~MMÃé½[ nªätg è›ôìÙ³M›6mÚ´ÉßߟüäUõW7ùôï¥ï/UuÑäaÑ×M*ºŠI{„Bá Aƒ®]»ÖýîánEÕ*u®ŒÞõØlöŸþô§ëׯÑ}†ÅÙ£I6zßa²cöìŸ0ðŸ@_akkËb±d2™¯¯/‹Å²´´døFsss‘H”`mmÝÐКšNžY[[‹ÅâÈÈH¹\ž––F®?dȹsç&$$H$’¦¦¦ÌÌLBß_ë©Éår¥RéÒ¥KËËËÕ15ݾ}ûæÍ›3gÎäñx2™l̘1FŸàJ$++«ÆÆÆÔÔÔ•+Wj¾dffÝÚÚêííÝÙÙyçÎÊÊʈˆ&q¨’Ó oR||¼¥¥eXXXssó›o¾yäÈ‘U«V™¼¿z“Oÿ^úþRU †F_K4©è*&í133 ‹‹ãr¹uuueeeK–,1¢ûÆíûw+­A™?~bbâþýû;F¿ë•••­]»V&“ 4ˆ*æÆW®\©u Ša÷g&Ùè}‡Éމ AŒ92666>>¾¶¶V©TÖÔÔ0oRRRLLLPP™™ÙÒ¥KɇsðàÁ­[·úúúN™2%222,,Œ\?999""" ÀÙÙ9444&&Æàw™H–––{÷îݹsgZZÚÔ©S£££Õ15Oòd2ÙîÝ»ÛÚÚ&Nœhðì“ÆŠ+–/_^WW·xñbÝŸf 1bÄ¡C‡6oÞÌãñ\\\–-[Æ0Mrº3TMº|ùrVVÖùóç¹\îðáÃ÷ìÙ³fÍ???“÷—*ù4ï5Ø_½ÕEIÑ×}*ºŠI{¢¢¢† ’˜˜øàÁKKË?ÿùÏFw¿«˜ìVºƒ>þ|''§ðððÈÈHšÑomm•ËåôWÛx<žÞ¿M0ì>ñç’lܾCµc …Âçväg=ÿ‹zL,ú ‡Íb‘¾Á»¿õý\nöÒÇJÿº"´7´çĉ¼qãF¯ÊRQQ‘H$ºwï^W‘z›®XO}ï,xè[ÇŠãG¥oùÏÍ¿x! 0ˆ~ÍÕ)…A(UÊÅ‹ô®€+l GII ù‹±r¹\"‘¼ûî»È ¼Ä†‚‡^ 6ÐC¡Pìܹ³¢¢‚Ïç‹D¢M›6!'ð 0a€¾ÄÝÝý믿îÍ-ôôôìÒ—Çà¥)°žúÞ_ðÐo¸­?&l€ ô]EEE¶¶¶Ïž={)ûÕÖÖöü;kp+/kÎ{g­š$ÛýjȨ:k’Âîý™Ä„ à%?ËÑš!¼ Hi/7qâÄâââÁƒ¿ØfTWWoܸÑÃÃÃÞÞÞÝÝ}õêÕ·nÝbrÊ®ÉÛÛû¹…3É›nÍô’l£nûÊpà¦#Ðïtvv²Ùl6›‘x<žµµõ‹íBEEEPPŸŸßáÇGÝÐÐpíÚµC‡I¥Rƒï½~ýú AƒÈÇç¹åœÃá‘·Þí—ƒI2Ùû‡WØúŒ¦¦¦õë×;;;»¹¹%%%)•JBçJ‚æŸóE"AB¡¼ò ~õìÙ³Ó¦MsrrŠŽŽV(]׃S IDAT ¢E¥R¥§§ûøøØÛÛ{xx$''“ËO:5{öl‡ñãÇGDD477«#_½zuΜ9"‘¨ªªJog/_¾¬ÕHRFFÆŒ3¦N*‘HÈ$0i¹é .øùù …ÂÚÚZšhzO“ ª8OŸ> óæÍûñÇ©FV·³Ÿ|òÉܹsÕ+477;99]¿~]ó]]ê‰*¬ºh¨¾¾~Ù²eB¡0 à‹/¾Ð{¥‘¦D z\\ܬY³RRR¦L™bccãêêšžžÎd×°²²²þ݈#´^ýüóϽ¼¼ììì<==õNÿô®À¤Šd2™fÞt÷,šÝ°ûÙVë꾦78ÍA€jw i$“ýTíܹsÓ¦M#geeÙÚÚ^¾|™ ˆŽŽ'''õUÖââb­¾h¶™ê@¤÷ºûÄ`©`ÂtbbbÊËËÏœ9“žžþÙgŸ>|˜~ý'NQXXX\\\\\¬^.•J=zòäÉsçÎ¥¥¥DM,8p &&¦   33ÓÞÞþÿd°ÙÛ·o¿~ýzFFFyyùŽ;Ôo‘H$»wï¾xñ"Njջ]½LII9~üxBBBAAÁ¾}û²²²RRR˜7‰Œ ‹óóó‡Nªñz³A'&&¦¦¦&//ïÃ?Ü·oU’u;ûÎ;ï”——ß»w\áìÙ³#FŒPŸÔjbØ#ðz(::º¶¶6//oÇŽŸ|òIWK”~Лšš®\¹²|ùr­å,«›{ÍÇ£¢¢V®\YPPpìØ1†+0©¢aÆ,Zƒ{ÑÙþÿO軸¯u)8M|ª8 ÷S5//¯êêê_ý•L”……Eaa!Aßÿ½J¥š4i“¢/&&¥ò¨z¥·ã²»øƒÜÇuµýíßÉŒ#*•*óHºfBšššìììòóóɧ©©©¾¾¾*•êÖ­[666ÍÍÍäròikk«ÖcÍW¯\¹B>MKK3"ˆ¦ÖÖVGGÇ/¿ü’~4/]ºäêꪎvóæMr¹L&Z+S5²½½ÝÅÅåÎ;ê5Ïž=ëîîΰIdØk×®‘OFÓl¼ÞlÐÄѲ´´4ÝLRuV¥RïÚµ‹|üÎ;ï|ôÑGF÷Hs|õ†U¯@5@cÇŽ½zõ*¹\*•êö…¾Dé½´´ÔÆÆ¦¾¾ž|š››ëô»¶¶6ÝÕJ‚“†ððpÍÊËËmllär9Uqê]aiåMï8Rí†ÝÌ6UB îkTÁizãSÅa¾giš1cÆéÓ§U*•D"Y´h‘J¥úôÓO/^LÓu›éNjɧ¹¹Ù`©tIæ‘ôŸïWÌ8bð€OþO÷v\6U(|‡  o¨ªªêììœ8q"ùtòäÉ»ví¢ÿ 777õƒÊÊJã‚***ZZZ|||t_*..Þ½{wYYYKK‹B¡hmmíèè _rqq!XYYµµµµ··0À`#åryssó¢E‹Ôë(•J2,ÇcÒ$‚ &L˜@> ¦·ñš[Q£‰£5dê16›ýî»ï&&&FGGÿòË/7nÜÐüˆWW{¤¹>“°ºT]]­P(\]]µ6ʼD™ ºÚ¬Y³þýï—––®^½Z¥R¬ÃììlõwØ´îáìììééèïïïïï?oÞ<­oúé]a1Gƒ7.ÛFïk] NŸ*ÃýT‹··waa¡O]]]HHÈ'Ÿ|ÒÑÑQXXHÞB†ª/ ÷z†µg°T^LØú6­ÏŒ7û2IM¿ýö[pp°H$Ú²e‹……EIIɺuëÔaµNƒ˜œ‘«[•••5|øð?œÍp»p>£^™&}ã»Ú*£?Ô7oÞ¼èèè‚‚‚[·n¹»» …B£{ÔÕ°Æ =ú˜cÆŒa³Ù?ýôÓk¯½FŸÏçóùõõõ ƒÛÙÙñù|½/q8œÓ§O_¹r%???***77755µK+ÐäÜ$º™mSíkT.íFï§^^^©©©………S§Nµ°°ppp(**úî»ïÞ{ï½î'Šá¨„çßaèìíí¹\nII ùôöíÛB¡Íf›››ñøñcryyy¹ÖiŠî©Uii©ú@ 0.I(4èÚµkZËåryccãÖ­[===:2sºtttäóù555¤u¢IÕ$-4Ñh¯› š8ZC¦î“Îaff¶páÂüãÿüç?ÿ÷ÿ×`Ææ§«aÕ3"‡£.Œ²²2æ%Ê$þСC}||222zbßár¹~~~ñññ‰$''G·˜uW`XELÆ‘~2:ÛFïkTÁ©Tñ©â0¬C-ÞÞÞ÷îÝ;þû ‹‹ãr¹uuueeeK–,±µµår¹R©téÒ¥åååom¢K·‘fffÑÑÑ­­­ÞÞÞwîÜ©¬¬Œˆˆ`Ò$­ø4Ñh¯› š8æææóçÏOLLÜ¿ccã±cǘw–ô§?ýéþçX,ÖÂ… fŒa~º–4dȹsç&$$H$’¦¦¦ÌÌLBçš U‰2¿pá 6„„„ØÚÚÖ×ן:uŠÅbinåîÝ»$ûlÀ€~~~½!lIIÉÇ]]]år¹D"y÷Ýw1F=§G³mªàFĹ|ùòæÍ›_úÙšiaÂÐMš4ÉÚÚzÏž=¦½'¡Ña ÅÎ;+**ø|¾H$Ú´iƨçôh¶M܈8b±ƒ‹ Pòôôdøxázh¤Œëîîþõ×_c\žÏžÕ£Ù6Up”ÄóÛú`˜°¼¬ÒÒÒ&OžlkkKõU¢¢"[[ÛgÏž©ä…#ßÖÖfÄ»ôvÙà«F7Ò„{ɶz´T+ô¶ê­@£ÙW†¯ïÖ[ŸË0&l/§G%&&nß¾½¨¨Hó׺žsãfSÏÁĉ‹‹‹Ü›i\†5»Ö›õ•vö“´ôô^P]]½qãFògýÜÝÝW¯^}ëÖ-&3sMÞÞÞ(|xôèÑ ×®];tèT*5øÞëׯ4ˆ|ÌápºßÈ>±ƒ WØúŒÀÀ@‚ mmmµþ€ÍüOéšAÈ%3fÌppp˜:uªD"Q*•äòS§NÍž=ÛÁÁaüøñÍÍÍär‘HD„P($ÿ@Nèü5]ÝòÁ… üüü„Bamm-Íæž>}"æÍ›÷ã?ê¶üܹsÓ¦M#geeÙÚÚ^¾|™ ˆŽŽ''§[·ni6C·‘¤âââ9sæ888ˆD¢ªª*Ý­|þùç^^^vvvžžžä©'}ª/_¾þøcÝ¥¤¤ˆÅâaÆ >œfs111555yyyOŸ>ÕûƒN^^^ÕÕÕ¿þúë+¯¼RXXhaaQXX8sæÌï¿ÿ^¥RMš4©¤¤„ª›j‰d÷îÝC‡ݲeKllìÉ“'5_}øðaTTTlll```]]Ý£G öN*•=zôéÓ§kÖ¬±³³{ÿý÷u{½yóæòòò3gÎ444¬Y³fĈ«W¯f>Fºôö‚*·]ê”H$Š¿{÷î¸qã‚øæ›o ùÛTõ ÙÙ_ýUŠf}ª¤©£u¿#ô Л@ƒ¨)&&Fï˜FGG×ÖÖæåå555mÞ¼Y÷b±8333))ÉÓÓ³®®®¬¬Œù:T¥êU!u§8Õ›+W®œ>}Zk¹ ›áqCﮟ®fø9QôJoÇe/þ wñ¹ëjûÛ¿“GT*Uæ‘t­œÜºuËÆÆ¦µµUý¸¹¹Yë%õr­ôioowqq¹sçŽúÕ³gϺ»»ëÇ¥K—\]]u#h.¡j̵k×Èå4›kjj²³³ËÏÏ'—§¥¥im‚4cƌӧO«T*‰D²hÑ"•Jõé§Ÿ.^¼X«T¼yó&ùT&“ ­øååå666r¹\7cT½»r劺;¾¾êÔ½ÖêZjjªæjºaé3LÕ šÜêíE‹%''“7lذaÚzÐê,UÕi­O•´ææfv„¦º dRêFRiccãØ±c¯^½J.—J¥Z{ekk«££ã—_~IÓTªuè IoaSRW‹SWii©M}}=ù477×éwmmm4ÈåNÂÃÃõ®Ã両{¸ëNý‘a™GÒ¾_u2ãˆÁ>ù?ÝÛqÙT¡p…  ÿ’ËåÍÍÍ‹-R/Q*•­­­<¯¸¸x÷îÝeee--- …B½¼«[™0a‚ÁÍUUUuvvNœ8‘\îææ¦7”··waa¡O]]]HHÈ'Ÿ|ÒÑÑQXXÈü¾...ä++«¶¶¶öövÍ‹ÎÎΞžžþþþþþþóæÍ3øåuSÝÜÜ*++Õ¾R÷Z«k“'OÞµkóž1ìEEEUn»Ú©   Ã‡GEEµ··Ëd²ÔÔTr¹ÞzÐê¬&šõ©’F_$]íMtȰéÇ´ººZ¡P¸ººR¥¥¢¢¢¥¥ÅÇLJ&8Õ:ô…D_ØT»¤©ŠsÖ¬Yÿþ÷¿KKKW¯^­R© ®Ÿ­þÕB˜7ºtL3X?&̰iaÂÐ'i}ôȸ ù®¬¬¬áÇÿáü€Ëýí·ß‚ƒƒE"Ñ–-[,,,JJJÖ­[GµúÆp¹\ƒ›ÓG———WjjjaaáÔ©S-,,ŠŠŠ¾ûî»÷Þ{a—µNÑ´N.9ÎéÓ§¯\¹’ŸŸ•›››ššj\ªÕê‰ÔíMnY,–n§h‚/X° ..®´´ôçŸær¹¾¾¾AÐ׃ng»T? k²K¡oU˜ð}Ï}awµ8 3f ›Íþé§Ÿ^{í5‚ ø|>ŸÏ¯¯¯gøv;;;>ŸÏp2xÜè‰úéf†M<¸ø /277'âñãÇäÓòòr#‚8::òùüšš‡?b±Xr¹¼±±qëÖ­žžž@½!õ‰‹æÉ7ÃÆÐlÎÞÞžË媿„VZZª7‚··÷½{÷Ο?O^Róöö>yòdccã”)Sôž]1år¹~~~ñññ‰$''G©TÒ÷NÝÔÒÒR@ {ÍG«k·oß …l6›&¬§É­ÞNÑ„²²²zã7rrr²³³çÏŸO^S¥©½è×§Iš©:ÒÕ3¬@ú1µ³³ãp8ê¡Ôý~šP(4hеk×h‚S­CµQƒs š,“4tèPŸŒŒŒçp¬£/ îFg£§á @Ÿ$ ­­­Åbqdd¤\.OKK3"ˆ™™YDDDtttkk«··wggç;w*++#""lmm¹\®T*]ºtiyy¹f|[[[‹%“É|}}Y,–¥¥%ÃÆÐlÎÜÜ|þüù‰‰‰û÷ïollgΜ´´´Q£Faii¹wïÞS§N͘1C*•FGG«ß2räÈØØØøøxwwwòûÌCµ9‚ ’’’F5þümÛ¶Ñœ'y{{“'²äc…Báå奻šn#™077—Éd ,˜9sæ?ü@žåÓ÷nÅŠË—/ö÷÷§ú!ò¤¤¤qãÆ…††¯ZµŠ>¬q§Ê­ÞNÔ?mLÄüùóùå—Áƒ«G¦ô¢_Ÿ>i&éHW̼iÆ” ˆääd++«€€€ØØØÐÐP‹¥õµÏ¨¨¨µk×&&&N›6-$$¤ººZ78Õ:T¥Â¤ Ælmm•Ë店é\\\Î;GÄÊ•+½½½ƒƒƒrrr4¿Ùäÿ;Í”¾ñƿӽ<Þ¥ãF÷w„.eã…`=ÏÏ_0·èƒ6‹MDúïþÖ÷s¹ÙKCV?*ýëŠPTôììì|õÕW}÷‹[½¼#'Nœ8xðà7PlýÐñ£Ò·üçæ_¼D¿æê”B‚ ”*å¿âEzWÀG"ú£Ë—/oÞ¼¹¯ÏÖz[GJJJ>|èêê*—Ë%ɻヒJƒn„  ?‹ÅèˆÉ)Š;wVTTðù|‘Hdð¸0axNÜÝÝ¿þúkäL7À„ 0a€ž“––6yòd[[Û—æKP}yÿú¶¶6¤‚>Ez« O4ƒæÏy¿3U&{Èô’ªÀ„ '£`KAïÊsæÌÙ¶m›zIaa¡ƒƒÃ÷߯µæ£G·oß^TTDõ³cÏgÖaòÙ‹IöÛ9Õ éx/ɶn3&NœX\\š^Fìw2™ŒI¿hŠYÕqÃ`/ÔñiŠ\S}}ý²eË„Ba@@À_|¡Y·šõF³é-cªª /QLØÀDÿ³ÙÛ·o¿~ýzFFFyyùŽ;¨ÖLII9~üxBBBAAÁ¾}û²²²RRRÔ¯FFF*•Êõë×K¥R±X¬÷ŠÜ‰'‚(,,$¯àÅÄÄ”——Ÿ9s&==ý³Ï>;|ø°æ¶Äbq~~>9cÔA}ªa£FJLLŒ‹‹ûå—_äryRRÒž={È€zãh¢i›^T¥RéÑ£GOžüðÃ}ûöé|øðaTTÔÊ•+ Ž;æàà`°`¨z¤w9Ã!Öí8ÆíÙ³'))éÂ… <oݺuIII;wî¼téÒÀÕŸÑ¥JU¶õf’¾ø{¢$±X|àÀ˜˜˜‚‚‚ÌÌL{{û®î¶ÆíwÆ cØ/ƒhR×¥^P ¦èèèÚÚÚ¼¼¼;v|òÉ'ZÍP×Ív©Ê[wÓFì;/†  Wz;.{ñ¹‹?È}\WÛßþÌ8¢R©2¤kåäÖ­[666ÍÍÍ4y»té’«««î»Z[[ÛÛÛ]\\îܹ£~éìÙ³îîîš+Ÿ={ÖÆÆfëÖ­TñÕÑT*USS“]~~>ùRjjª¯¯¯zk×®Œ@2ذU«V-Y²dÁ‚›6m¢‰£‰¾mêjÑ H.¹rå ù4--͈ L‹|×Í›7Éå2™L èö"--M7xyy¹\.§)u«è{¤»œùëv\oÃtùí·ß’O¿úê+›¢¢"õS¡PH_áTC¦›Išë¹f477·¶¶:::~ùå—]ªÝ}܈ýŽa¿èK¥¹¹™Éqƒêࣟjh4566Ž;öêÕ«äS©TªÙªCŠVö¨Ê[wÓK´;2¤ÿ|¿êdƃ|òº·ã²©Bá;l}^qqñîÝ»ËÊÊZZZ EkkkGGÇÓZM.—777/Z´H½D©Tj­œ••5hРâââÎÎN.×ÀyBUUUggçĉɧ“'OÞµk—ú³R&L`Ø~ƒ û裦OŸÎçóÿþ÷¿3ŒIß¶.Q‘ÏÍÍ­²²Ò¸ ôƒE¾äââB>°²²jkkkoo×ê…îW ‚pvvöôô ô÷÷÷÷÷Ÿ7ožÁ¯÷PõHwyw†˜aÃÆG>1b„ÖSò¯  `Xájº™¬¨¨ ª±žkA--->>>]ªîwûÕÍݳûC£y%¿ººZ¡P¸ººêí‹æSšìQ•·î¦Øw^LØú¶ß~û-88X$mٲޤ¤dݺuz'䬬,­Ï(ª'fÙÙÙW¯^ÍÉÉYºtiZZZXXX·N2¸LO3 6ì‡~øí·ß Å“'O† ÒV±X,ÝM?· ôƒ¥u²¨R©ônN ‡Ã9}úô•+Wòóó£¢¢rssSSSMÒÍn±Þ†é®¦ÕkÝ$0¯pš k¬'ša’ݶ›ƒb°_K…&u&#ºf\öt7ͰD_8|‡  o“Ëå[·nõôô?¦ZÓÑÑ‘Ïç×ÔÔ8üyÆöäÉ“¸¸¸èèèñãÇïÚµK,ÿ÷¿ÿ¥ß´½½=—Ë-))!ŸÞ¾}[(ü5¹‚æÙ}Þ={¶iÓ¦M›6ùûû“‰¤ŠÃ¤mæææA¨³T^^NÓ0Rii©ú@ 0.HWKo/Ô-Ñ=‘õóó‹—H$999J¥’¦…z{Dµœùëí¸nÃL[áôÙf^ü=× ¡P8hРk×®u³º¿ßQ¡/úÔu§zÙÙÙq8uÊÊʌبʛá¾Ó ò¸ÂÐÇܽ{W}kïÁƒÛÚÚr¹\©TºtéÒòòrš»b˜™™EDDDGG·¶¶z{{w,ÿæ2IDATvvÞ¹s§²²2""‚ ˆ?üÐÁÁaùòåAÌ›7oöìÙ‘‘‘YYY4g´æææ"‘(!!ÁÚÚº¡¡!555<<Ü`ûmmmY,–L&óõõe±X–––ô ‹·´´ knn~óÍ79²jÕ*½q˜´M(Z[[‹ÅâÈÈH¹\®™.ª€‰ÄÊʪ±±155uåÊ•ÆQ¿Êp°Ô½˜?~bbâþýû;¦»ÎíÛ·oÞ¼9sæL'“ÉÆŒÃf³iZ¨·GTË™±nÇõ6̈‚§I}¶™Ï5ÃÌÌ,444..ŽËåzxxÔÕÕ•••-Y²¤«•ÐýýŽ }©Ð§®;½ÐkÈ!sçÎMHHH$MMM™™™„¾+ÌôÛ¥*o†ûN/<æã @äÿ»ððpKK˽{÷ž:ujÆŒR©4::šæ½aaa±±±‡š>}úœ9sÒÒÒFEÄ¥K—rrrÈ»ù“k&&&–••}öÙgôIJJ7n\PPPhhhpp09•¢7räÈØØØøøxwwwõ÷p¨vùò嬬¬}ûöq¹ÜáÇïÙ³ç£>ª¨¨ Šc°mçàÁƒEEE¾¾¾ˆŒŒ¤oA+V¬X¾|ypp°¿¿?ù›ÅF!ui°Ô½5jÔüùó·mÛ¦÷¼ÜÜÜ\&“-X°`æÌ™?üðyòJÓB½=¢YÎpˆu;®·aF IšÁ`Rü=ÝŒ¨¨¨µk×&&&N›6-$$„¼™¾•ÐÍýŽ }©Ð§®›½Ð+99ÙÊÊ* 66644”Åbé~#Ž~»TåÍpßé…X]úä(Às³èƒ6‹MDúïþÖ÷s¹ÙKCV?*ýëŠPT TTT$‰îÝ»Ççó_î½|=…—À‰'û¢Zoû©Š¼—t„›Žôk< Â×××ÜÜœ kkënìììd³Ùêàî¦ŠŠŠ   ??¿Ã‡=º¡¡áÚµk‡’J¥ß{ýúõAƒ‘9ÎË1^555J¥2 `àÀÏ8˜ãñxݯ¥ESäK555[¶l‰ŒŒ<|øp{{û_þò__ß]»v 8ð»ï¾c8íïÑPZ/577—””|úé§ÿú׿¾üòËáÇëí¬ær“lW+‡ÝÙg{n õ¶¿¬¬ìâÅ‹o½õ– ;=WØúŒS§NÍž=ÛÁÁaüøñÍÍÍÄï¾zõêœ9sD"QUU¹þÓ§OCBBÁ¼yó~üñGÝ€ÿüç?É¿1¿úê«ê?E“c®¯¯_¶l™P( øâ‹/ÈåZW¨Ô“&\¸pÁÏÏO(ÖÖÖ‘‘‘1cÆ ‡©S§J$¥RI¾ëóÏ?÷òò²³³óôô4x7kÖ¬”””)S¦ØØØ¸ºº†††¦§§3I—•••õïFŒ¡õªÁf455­_¿ÞÙÙÙÍÍ-))‰l?U‚‰DA…B2êWÏž=;mÚ4''§èèh…BÑÕ ZÈñrtt$_¥i¤z8d2™­­í7ß|ãïï/ .\X]]}ëÖ­€€@X]]MS`T­¢O º4õ©R©ÒÓÓ}||ìíí=<<’““õFÐÍMaSU]—ʃ|ÉÃÃcëÖ­/^$âÞ½{=úàƒ^}õU{{ûwÞygÁ‚Ì‹°‡Bi½Dî™3gØlö¾}û¨:;`À€.v nW+‡Æí³&?¸1iÿ_þò—={ö˜ö°ƒ @¿Æf³·oß~ýúõŒŒŒòòò;v¨_’H$»wï¾xñ"Ç‹%ÆÄÄÔÔÔäåå}øá‡Z'pê³ÿ'Nqýúõââbò1)::º¶¶6//oÇŽŸ|ò “楤¤ˆÅâüüüáǧ¤¤?~Óüü^dö ‹‹‹‹‹‹ÕË¥RéÑ£GOžÿüsã‚è]¾‘êá ?<¹mÛ¶)S¦…Â5kÖüç?ÿ‰õôôkÖ¬¹ví}鶪K㨷>ÛÚÚ:”˜˜hcc3iÒ¤%K–0)3ªÂîèè ª:†å¡¥¾¾þàÁƒ^^^l6{ôèÑ›7ož2eÊûï¿Oÿ5°çŠj''§šš•J¥ÛY___ã>z·«›C£÷Y“ܘ´ذa¡¡¡b±X3WÝ<ìô|‡  Ï(..Þ½{wYYYKK‹B¡hmmíèè _rqq!XYYµµµµ··WUUuvvNœ8‘\îææÆ|CÕÕÕ …ÂÕÕ•|:aÂ&ïR¯&—Ë›››-Z¤~I©T’­uvvöôô ô÷÷÷÷÷Ÿ7oó¯WÍš5ëßÿþwiiéêÕ«5O°¨dgg«¿`£u÷ ƒÍÐÊÞäÉ“wíÚEmŠ:ónnn•••ÆÑ‹¾‘Z£6nÜ8òy…Góikkk{{û€ôÇÓÝtWÇQ·>+**ZZZ|||ºÙkuziªNohÊÃÝÝ ˆ––õå娨¨ààà+W®\¿~}Íš5ááá‘‘‘LþjУ¡RwÖˆ/sÒl—&‡]Ýg{îàFŸ·ÐÐÐ#GŽœ={vôèÑ&9ì`ÂÐýöÛoÁÁÁ"‘hË–-%%%ëÖ­SŸk.«O,Lû1­hZs.—«¹<++Këö\.—Åb>}úÊ•+ùùùQQQ¹¹¹©©©T›3f ›Íþé§Ÿ^{í5‚ ø|>ŸÏ¯¯¯gØZ;;;>Ÿ¯÷%‡Ã¼Ì3`’4šì$û‡Ó<­ Ñ-úëf©êÓè,é6MÕuµ<²³³ Ð7ÈåòÆÆÆ­[·’Ÿd{üø1ýúööö\.·¤¤„|ZZZÊ|[vvv§¼¼œ|ZVVF> ï$©Þ´z-ŽŽŽ|>¿¦¦ÆáÈ,.—ëçç/‘Hrrrh¦+C‡õññÉÈÈè¡ù M3´²wûömò£ž4 O+u»£Î|ii©@ 0.“!V7Ò䦷UÌÇQ/¡P8hÐ õ§1uQe‰ª°é«®KììììííiæEŽŽŽ---LºügΜ´´´Q£F‘çF2™lÁ‚3gÎüá‡Ôgf­­­r¹\÷:ƒ‹‹Ë¹sç‚X¹r¥··wpppCCCNNŽæ­Éƒ‚‚ü§ÙÍ7ÞxÃãwS¦LÑ:EÓÛ ­ì7.(((44488xÕªUAÐd`äÈ‘±±±ñññîîîêo×±bÅŠåË—ûûû“?umDš!Öm¤É L·ULhPTTÔÚµk§M›¢þuM–¨ ›ªêô¢)]666*•jãÆ¯¿þú{ï½gooàÀò¥®þ» CiöÅÓÓ3 === //Ïà1ªm‘8d8Ô›Cú}VïvŸóÁM׊+È+ºLº@u°ê9¬õå9z‹>Èa³ØA¤oðîo}?—›½4dÅñ£Ò¿®í í9qâÄÁƒoܸ²ì’¢¢"‘HtïÞ=£¿>½_vvö¾úê«î_Ô„¡ŒÞÖÅ‹CCCåryµáyöñÅ:~Tú–ÿÜü‹ƒè×\RH„R¥üW¼Hï ¸éèQRRòðáCWWW¹\.‘HÈÏò€–Ë—/oÞ¼Ù$Ó†2b[<ÈÈȘ6mZϵáyöñ¥ è¡P(vîÜYQQÁçóE"ѦM›]b±¸†2b[%%%o¿ý¶‡‡Ãß¡îý}Ä„ ^fîîî_ý5òÐäït#ÐWʵªª yè…pÓLØ6LØ6LØ6À„ 6À„ 6À„ 0aÀ„ 0aÀ„ 0aèSX,&l/'6›ÝÚÒ‚<ôå ›Í6Ál‹‹Tô6Æ[TWý— ˆãG¥È@_ôÛ³gÆÇ„ à%4ÞÕí?E7½^Ÿ6tØ0•J…„ô,‹Åb575ÝùO±»çTLØ^BV#­Ü&M¾÷ÃÝÆ§ J¥ èCØlöÐaÃÝ&M¶iÕÑÑ À˦££c„•Õ4«éH@Ÿ>˜›`ú‡<ôN˜°`˜°`Â=w‰€¤RuMÊúßí/ÿK²XÃ>˜m=„Ãba½y¶Fÿ}Üyÿ×Çe?ýüë㦗¾¿ÛÚ‚?ÁÑö·QV‚‘&˜maÂ=¥¾YQ[ÿ´¸¬r‰¿‡³ý+ÎKþ¬ŽŽÎòÊÿºTÂãñ†>œƒ ôRuÍÊÛåÿ ž7ÅÅá•þÐ_;ÉÅŽËæä~S6|ØÐîOØpÓè) Õ¯Ož9ŽÙ¯zíl?ê×'Í |gWØ §¨T„B¡äp8*•ªÿôšËå(J“ôWØz)LØ o»qã‡ÃinnÆ„  kT&òàÁƒõë× …ÂŽ5jñâÅê[ªzLØ ©ªªòööþùçŸ;öÃ?œ;wÎÍÍíÃ?|¹{ ô7nôðð8}úôŒ3ììì<<<¶oßþÅ_h­ÖØØ¸lÙ²aÆ5*66V©T’Ë;& ÍÌÌìììöíÛ§^?55u„ ƒvppHHHP¯ßKà.‘Ðãºù)Á¦¦¦³gÏ~õÕWZq† ¦þ"ù ,,¬¤¤äÊ•+Ož>>"‘(00páÂ…l6ûÞ½{MMMo¾ù¦úíJ¥²¥¥¥££ƒÇãaÂýBGGGggGw"ØØŒæp8·oÿgúô麯¶··ÑÞÞÖÞÞF>hkk%¢££ ˆ¶¶V6›-“¿xñâ… ×®]{êÔ©ŒŒc­­-Aœ=›gaa¡M¡èT*˜°@?ÑÝ;Ý›››ûûû§¤ðññÑ\þôéÓaÆÄÿû›@ àr¹ÅÅÿyë-?‚ ŠŠŠœœœX,–J¥âp8þþþþþþo¾9kÉ’?9rØÉɉÏçß¿ßÓÓS·¹˜°@?™®™` ´{wòìÙs‚ƒ—¾ÿþ:{{‡úúú¼¼¼7 Μ9£¾éŸÏûí··m‹µ¶–64<‘HömÞ¼I¥Rúùùñx¼Üܼ±cDzX,33³¨¨¨ˆˆ---o¼ñFGGGqñäryTÔ–Þ“:LØ §glJU·o—o7vl~þ×üñªU¡>:t¨Oܶm*¥R¥T¡R*UJ¥d¯øÿ6mš={öÀCBþºníZ•RÉ<877/>>¡½½}òäIÇ33ÈölŒØ0b„åþý)aaë¹\îøñãß{o¹ª7ÝÙ6èYJ¡4Ň _yå±X,kWM™:åÉ“zò1ßÜ<==]kG'§3g¾ÔZH>XºtéÒ¥Kõ¾„ ô*Uošõ!˜°@ÏO×zÓç 1aМ±á &lЛ°X‡Ãnn~Æá°ûO¯ %‡Ãf±0a€^ŒÇa½bÁÿ¹¶i¬õþÓëŸk›^±0À1ÁŒ 6è)#ølñÙWxÝÉÎz(Çs˜ÞL¡PU?jpä+#Gt(^þ;°Xòà³Gšb¶† ôøfäÎÈ!¤Â˜/R€ `€ `€ `˜°`˜°¼Ä¸Hôr«S ‘èŸp…  —Â6è½”*%’ýK¥R! ½> € `€ `€ `˜°`Â&ñÿióŸ¿]§ëIEND®B`‚gle-graphics-4.2.4c/src/config_noauto.h0000664000000000000000000000556711405446017016542 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ #define HAVE_SOCKETS #define HAVE_SYS_TYPES_H 1 #define HAVE_SYS_STAT_H 1 #define STDC_HEADERS 1 #define HAVE_STDLIB_H 1 #define HAVE_STRING_H 1 #define STDC_HEADERS 1 #define HAVE_NCURSES_H 1 gle-graphics-4.2.4c/src/config.h.os20000664000000000000000000000565011405446017015650 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ #define HAVE_SOCKETS #define HAVE_SYS_TYPES_H 1 #define HAVE_SYS_STAT_H 1 #define STDC_HEADERS 1 #define HAVE_STDLIB_H 1 #define HAVE_STRING_H 1 #define STDC_HEADERS 1 #define HAVE_MEMORY_H 1 #define HAVE_UNISTD_H 1 #define HAVE_NCURSES_H 1 gle-graphics-4.2.4c/src/config.h.in0000664000000000000000000000670011704312455015550 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ // Operating system #undef __UNIX__ #undef __WIN32__ #undef __OS2__ #undef __NOCYGWIN__ #undef __CYGWIN__ #undef __MACOS__ #undef __FREEBSD__ #undef __GNU_HURD__ #undef __LINUX__ #undef __VN__ #undef __BN__ #undef HAVE_SOCKETS #undef HAVE_LIBZ #undef HAVE_LIBPNG #undef HAVE_LIBJPEG #undef HAVE_LIBTIFF #undef HAVE_X11 #undef HAVE_CAIRO #undef HAVE_POPPLER #undef WORDS_BIGENDIAN #undef HAVE_SYS_TYPES_H #undef HAVE_SYS_STAT_H #undef STDC_HEADERS #undef HAVE_STDLIB_H #undef HAVE_STRING_H #undef STDC_HEADERS #undef HAVE_MEMORY_H #undef HAVE_STRINGS_H #undef HAVE_UNISTD_H #undef HAVE_STDINT_H #undef HAVE_INTTYPES_H #undef HAVE_SYS_PARAM_H #undef HAVE_LIBGLU_H #undef HAVE_NCURSES_H #undef HAVE_CURSES_H #undef HAVE_LIBGLE #undef HAVE_LIBGLE_STATIC #undef GLE_SNAPSHOT gle-graphics-4.2.4c/src/doc/gle.1.in0000664000000000000000000001314611660563541015537 0ustar rootroot.\" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .\" ! ! .\" ! GLE - Graphics Layout Engine ! .\" ! ! .\" ! Modified BSD License ! .\" ! ! .\" ! Copyright (C) 2009 GLE. ! .\" ! ! .\" ! Redistribution and use in source and binary forms, with or without ! .\" ! modification, are permitted provided that the following conditions ! .\" ! are met: ! .\" ! ! .\" ! 1. Redistributions of source code must retain the above copyright ! .\" ! notice, this list of conditions and the following disclaimer. ! .\" ! ! .\" ! 2. Redistributions in binary form must reproduce the above ! .\" ! copyright notice, this list of conditions and the following ! .\" ! disclaimer in the documentation and/or other materials provided with ! .\" ! the distribution. ! .\" ! ! .\" ! 3. The name of the author may not be used to endorse or promote ! .\" ! products derived from this software without specific prior written ! .\" ! permission. ! .\" ! ! .\" ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! .\" ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! .\" ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! .\" ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! .\" ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! .\" ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! .\" ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! .\" ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! .\" ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! .\" ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! .\" ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! .\" ! ! .\" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .\" .\" Process this file with .\" groff -man -Tascii foo.1 .\" .TH GLE 1 "JULY 2007" @GLE_VERSION@ "User Manuals" .SH NAME gle \- Graphics Layout Engine .SH SYNOPSIS .B gle [options] .I file.gle .B ... .SH DESCRIPTION GLE (Graphics Layout Engine) is a graphics scripting language designed for creating publication quality graphs, plots, diagrams, figures and slides. GLE supports various graph types (function plots, histograms, bar graphs, scatter plots, contour lines, color maps, surface plots, ...) through a simple but flexible set of graphing commands. More complex output can be created by relying on GLE's scripting language, which is full featured with subroutines, variables, and logic control. GLE relies on LaTeX for text output and supports mathematical formulea in graphs and figures. GLE's output formats include EPS, PS, PDF, JPEG, and PNG. .SH DOCUMENTATION GLE's documentation is distrubuted in PDF format and can be found at the GLE website: .P .SH OPTIONS .IP \-help Shows help about command line options. .IP \-info Outputs software version, build date, GLE_TOP, GLE_BIN, etc.. .IP \-verbosity Sets the verbosity level of GLE console output. .IP \-device Selects output device(s). .IP \-cairo Use cairo output device. .IP \-resolution Sets the resolution for bitmap and PDF output. .IP \-fullpage Selects full page output. .IP \-landscape Selects full page landscape output. .IP \-output Specifies the name of the output file. .IP \-nosave Don't write output file to disk (dry-run). .IP \-preview Previews the output with QGLE. .IP \-gs Previews the output with GhostScript. .IP \-version Selects a GLE version to run. .IP \-compatibility Selects a GLE compatibility mode. .IP \-calc Runs GLE in "calculator" mode. .IP \-catcsv Pretty print a CSV file to standard output. .IP \-tex Indicates that the script includes LaTeX expressions. .IP \-inc Creates an .inc file with LaTeX code. .IP \-texincprefix Adds the given subdirectory to the path in the .inc file. .IP \-mkinittex Creates "inittex.ini" from "init.tex". .IP \-nocolor Forces grayscale output. .IP \-transparent Creates transparent output (with \-d png). .IP \-noctrl\-d Excludes CTRL-D from the PostScript output. .IP \-nomaxpath Disables the upper-bound on the drawing path complexity. .IP \-noligatures Disable the use of ligatures for 'fl' and 'fi'. .IP \-gsoptions Specify additional options for GhostScript. .IP \-safemode Disables reading/writing to the file system. .IP \-allowread Allows reading from the given path. .IP \-allowwrite Allows writing to the given path. .IP \-keep Don't delete temporary files. .SH FILES .I @GLE_INSTALL_DATA@/glerc .RS The system wide configuration file. .RE .I ~/.glerc .RS Per user configuration file. .SH ENVIRONMENT .IP GLE_USRLIB The search path for include files. .IP GLE_TOP The location of the fonts and other resources. gle-graphics-4.2.4c/src/gle/config.cpp0000664000000000000000000005722311726234305016254 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ /* * 2004 Jan Struyf * */ #include "all.h" #include "gle-interface/gle-interface.h" #include "tokens/stokenizer.h" #include "mem_limits.h" #include "token.h" #include "core.h" #include "file_io.h" #include "texinterface.h" #include "cutils.h" #include "cmdline.h" #include "gprint.h" #include "config.h" #include "drawit.h" #ifdef __WIN32__ #include #endif #define BEGINDEF extern #include "begin.h" extern string GLE_TOP_DIR; extern string GLE_BIN_DIR; extern ConfigCollection g_Config; extern CmdLineObj g_CmdLine; void doskip(char *s,int *ct); char *un_quote(char *ct); #define skipspace doskip(tk[ct],&ct) void begin_config(const char* block, int *pln, int *pcode, int *cp) throw(ParserError) { string block_name(block); ConfigSection* section = g_Config.getSection(block_name); if (section == NULL) { g_throw_parser_error("unrecognized config section '", block_name.c_str(), "'"); } // Don't do config blocks in safe mode (except in RC file) GLEInterface* iface = GLEGetInterfacePointer(); if (iface->getCmdLine()->hasOption(GLE_OPT_SAFEMODE)) { GLEGlobalConfig* config = iface->getConfig(); if (!config->allowConfigBlocks()) { g_throw_parser_error("safe mode - config blocks not allowed"); } } // Start with pcode from the next line (*pln)++; begin_init(); while (true) { int st = begin_token(&pcode,cp,pln,srclin,tk,&ntk,outbuff); if (!st) { /* exit loop */ break; } int ct = 1; int mode = 0; bool plus_is = false; CmdLineOption* option = NULL; while (ct <= ntk) { skipspace; if (section != NULL) { if (mode == 0) { option = section->getOption(tk[ct]); if (option == NULL) { gprint("Not a valid setting for section '%s': {%s}\n", block_name.c_str(), tk[ct]); } } else if (mode == 1) { if (strcmp(tk[ct], "=") == 0) { plus_is = false; } else if (strcmp(tk[ct], "+=") == 0) { plus_is = true; } else { gprint("Expected '=' or '+=', not {%s}\n", tk[ct]); } } else if (option != NULL) { CmdLineOptionArg* arg = option->getArg(0); if (!plus_is) arg->reset(); arg->appendValue(tk[ct]); } mode++; } ct++; } } } void init_config(ConfigCollection* collection) { ConfigSection* section; CmdLineOption* option; CmdLineArgString* strarg; CmdLineArgSet* setarg; /* GLE */ section = new ConfigSection("gle"); strarg = section->addStringOption("current", GLE_CONFIG_GLE_VERSION); strarg->setDefault(""); section->addSPairListOption("versions", GLE_CONFIG_GLE_INSTALL); collection->addSection(section, GLE_CONFIG_GLE); /* Tools */ section = new ConfigSection("tools"); /* LaTeX */ strarg = section->addStringOption("latex", GLE_TOOL_LATEX_CMD); #ifdef __WIN32__ strarg->setDefault("latex.exe"); #endif #ifdef __UNIX__ strarg->setDefault("latex"); #endif #ifdef __OS2__ strarg->setDefault("vlatexp.cmd"); #endif section->addStringOption("latex_options", GLE_TOOL_LATEX_OPTIONS); /* PdfLaTeX */ strarg = section->addStringOption("pdflatex", GLE_TOOL_PDFTEX_CMD); #ifdef __WIN32__ strarg->setDefault("pdflatex.exe"); #else strarg->setDefault("pdflatex"); #endif section->addStringOption("pdflatex_options", GLE_TOOL_PDFTEX_OPTIONS); /* DVIPS */ strarg = section->addStringOption("dvips", GLE_TOOL_DVIPS_CMD); #ifdef __WIN32__ strarg->setDefault("dvips.exe"); #endif #ifdef __UNIX__ strarg->setDefault("dvips"); #endif #ifdef __OS2__ strarg->setDefault("dvips.exe"); #endif section->addStringOption("dvips_options", GLE_TOOL_DVIPS_OPTIONS); /* GhostScript Program */ strarg = section->addStringOption("ghostscript", GLE_TOOL_GHOSTSCRIPT_CMD); #ifdef __WIN32__ strarg->setDefault("gswin32c.exe"); #endif #ifdef __MACOS__ strarg->setDefault("gs,glegs;$EXELOC/glegs"); #endif #if defined(__UNIX__) && !defined(__MACOS__) strarg->setDefault("gs"); #endif #ifdef __OS2__ strarg->setDefault("gsos2.exe"); #endif section->addStringOption("ghostscript_options", GLE_TOOL_GHOSTSCRIPT_OPTIONS); collection->addSection(section, GLE_CONFIG_TOOLS); /* GhostScript Library */ strarg = section->addStringOption("libgs", GLE_TOOL_GHOSTSCRIPT_LIB); #ifdef __WIN32__ strarg->setDefault("gsdll32.dll"); #endif #ifdef __MACOS__ strarg->setDefault("/Library/Frameworks/Ghostscript.framework,Ghostscript.framework"); #endif #if defined(__UNIX__) && !defined(__MACOS__) strarg->setDefault("/usr/lib/libgs.so"); #endif strarg = section->addStringOption("editor", GLE_TOOL_TEXT_EDITOR); strarg = section->addStringOption("pdfviewer", GLE_TOOL_PDF_VIEWER); /* TeX config */ section = new ConfigSection("tex"); option = new CmdLineOption("system"); setarg = new CmdLineArgSet("device-names"); setarg->setMaxCard(1); setarg->addPossibleValue("latex"); setarg->addPossibleValue("vtex"); #ifdef __OS2__ setarg->addDefaultValue(GLE_TEX_SYSTEM_VTEX); #else setarg->addDefaultValue(GLE_TEX_SYSTEM_LATEX); #endif option->addArg(setarg); section->addOption(option, GLE_TEX_SYSTEM); collection->addSection(section, GLE_CONFIG_TEX); /* Config paper */ section = new ConfigSection("paper"); strarg = section->addStringOption("size", GLE_CONFIG_PAPER_SIZE); strarg->setDefault("a4paper"); strarg = section->addStringOption("margins", GLE_CONFIG_PAPER_MARGINS); strarg->setDefault("2.54 2.54 2.54 2.54"); collection->addSection(section, GLE_CONFIG_PAPER); collection->setDefaultValues(); } const string& gle_config_margins() { ConfigSection* paper = g_Config.getSection(GLE_CONFIG_PAPER); return ((CmdLineArgString*)paper->getOptionValue(GLE_CONFIG_PAPER_MARGINS))->getValue(); } const string& gle_config_papersize() { ConfigSection* paper = g_Config.getSection(GLE_CONFIG_PAPER); return ((CmdLineArgString*)paper->getOptionValue(GLE_CONFIG_PAPER_SIZE))->getValue(); } bool try_load_config(const string& fname) { // FIXME: script as parameter to avoid repeated construction? GLERC script = new GLEScript(); script->getLocation()->fromFileNameCrDir(fname); if (script->getSource()->tryLoad()) { GLEGlobalConfig* conf = GLEGetInterfacePointer()->getConfig(); conf->setAllowConfigBlocks(true); g_select_device(GLE_DEVICE_DUMMY); g_message_first_newline(false); GLEFileLocation output; output.createIllegal(); DrawIt(script.get(), &output, NULL, true); conf->setAllowConfigBlocks(false); return true; } else { return false; } } bool try_save_config(const string& fname, GLEInterface* iface, bool isUser) { ConfigCollection* collection = iface->getConfig()->getRCFile(); if (collection->allDefaults()) { return true; } if (fname == "") { return false; } if (IsAbsPath(fname)) { std::string dirname; GetDirName(fname, dirname); EnsureMkDir(dirname); } ofstream fout(fname.c_str()); if (!fout.is_open()) { return false; } CmdLineOption* versionOption = collection->getSection(GLE_CONFIG_GLE)->getOption(GLE_CONFIG_GLE_VERSION); ostringstream out; out << "Save configuration to: '" << fname << "'"; GLEOutputStream* output = iface->getOutput(); output->println(out.str().c_str()); for (int i = 0; i < collection->getNbSections(); i++) { ConfigSection* sec = collection->getSection(i); if (!sec->allDefaults()) { fout << "begin config " << sec->getName() << endl; for (int j = 0; j < sec->getNbOptions(); j++) { CmdLineOption* option = sec->getOption(j); if (!option->allDefaults() && (!isUser || option != versionOption)) { fout << "\t" << option->getName() << " = "; for (int k = 0; k < option->getMaxNbArgs(); k++) { if (k != 0) fout << " "; CmdLineOptionArg* arg = option->getArg(k); arg->write(fout); } fout << endl; } } fout << "end config" << endl << endl; } } fout.close(); return true; } void get_version_soft(const string& cmdline, string& version) { // Running GLE gives something like: "GLE version 4.0.11" // Parse this string to get version number string gle_output; GLERunCommand(cmdline, gle_output); str_parse_get_next(gle_output, "VERSION", version); str_remove_quote(version); } void get_version_hard(const string& cmdline, string& version) { // If gle_version_soft fails, use this more complex method // Running GLE on some dummy file results in "GLE 4.0.11 [temp1234.gle]-C-R-[temp1234.eps]" // Parse this string to get version number string gle_output; string temp_file = "temp1234"; // Set GLE top GLESetGLETop(cmdline); // Create dummy file string temp_gle_file = temp_file + ".gle"; ofstream file(temp_gle_file.c_str()); file << "size 10 10" << endl; file << "amove 0 0" << endl; file.close(); // Create command line string cmd_line = string("\"") + cmdline + "\" " + temp_gle_file; GLERunCommand(cmd_line, gle_output); // Parse output to find version number str_parse_get_next(gle_output, "GLE", version); // Delete our temp file TryDeleteFile(temp_gle_file); TryDeleteFile(temp_file + ".ps"); } void init_installed_versions(CmdLineObj& cmdline, ConfigCollection* collection) { CmdLineArgSet* versions = (CmdLineArgSet*)cmdline.getOption(GLE_OPT_VERSION)->getArg(0); ConfigSection* gle = collection->getSection(GLE_CONFIG_GLE); CmdLineArgSPairList* installs = (CmdLineArgSPairList*)gle->getOption(GLE_CONFIG_GLE_INSTALL)->getArg(0); if (installs->size() == 0) { versions->addPossibleValue("no older GLE versions found (run \"gle -finddeps\")"); } else { for (int i = 0; i < installs->size(); i++) { versions->addPossibleValue(installs->getValue1(i).c_str()); } } } void wait_for_enter() { char Line[5]; fgets(Line, sizeof(Line), stdin); } void do_wait_for_enter() { if (g_CmdLine.hasOption(GLE_OPT_PAUSE)) { cout << "Press enter to continue ..." << endl; wait_for_enter(); } } void do_wait_for_enter_exit(int exitcode) { do_wait_for_enter(); exit(exitcode); } class GLEProgressIndicatorInterface : public GLEProgressIndicator { protected: GLEInterface* m_Iface; public: GLEProgressIndicatorInterface(GLEInterface* iface); virtual ~GLEProgressIndicatorInterface(); virtual void indicate(); }; GLEProgressIndicatorInterface::GLEProgressIndicatorInterface(GLEInterface* iface) { m_Iface = iface; } GLEProgressIndicatorInterface::~GLEProgressIndicatorInterface() { } void GLEProgressIndicatorInterface::indicate() { m_Iface->getOutput()->printflush("."); } string get_tool_path(int tool, ConfigSection* tools) { string path(tools->getOptionString(tool)); string::size_type pos = path.find(','); if (pos != string::npos) { path.erase(pos); } pos = path.find(';'); if (pos != string::npos) { path.erase(pos); } str_replace_all(path, "$EXELOC", GLE_BIN_DIR.c_str()); return GLEExpandEnvironmentVariables(path); } void find_deps(const string& loc, GLEInterface* iface) { vector tofind; vector result; string gle_paths = ";"; ConfigCollection* collection = iface->getConfig()->getRCFile(); #ifdef __WIN32__ GLEFindEntry* findGLE = new GLEFindEntry(&gle_paths); findGLE->addToFind("gle.exe"); findGLE->addToFind("gle_ps.exe"); tofind.push_back(findGLE); #endif // Create GLEFindEntry for each tool (ghostscript, pdflatex, ...) ConfigSection* tools = collection->getSection(GLE_CONFIG_TOOLS); for (int j = 0; j <= GLE_TOOL_GHOSTSCRIPT_LIB; j++) { CmdLineArgString* strarg = (CmdLineArgString*)tools->getOption(j)->getArg(0); GLEFindEntry* findTool = new GLEFindEntry(strarg->getValuePtr()); char_separator separator(",", ";"); tokenizer tokens(strarg->getDefault(), separator); while (tokens.has_more()) { const string& toolName = tokens.next_token(); if (toolName == ";") { if (tokens.has_more() && strarg->isDefault()) { findTool->setNotFound(tokens.next_token()); } break; } else { if (!IsAbsPath(toolName)) { findTool->addToFind(toolName); } } } if (findTool->getNbFind() != 0) tofind.push_back(findTool); else delete findTool; } // Initialize output and progress indicator GLEOutputStream* output = iface->getOutput(); ostringstream out1; out1 << "Running GLE -finddeps \""; out1 << loc; out1 << ("\" to locate installed software (e.g., Ghostscript and LaTeX): "); output->println(out1.str().c_str()); GLEProgressIndicatorInterface progress(iface); // Perform search at specified location if (loc != "") { if (IsDirectory(loc, true)) { GLEFindFiles(loc, tofind, &progress); for (unsigned int i = 0; i < tofind.size(); i++) { tofind[i]->updateResult(false); } } else { // Name of old GLERC file given if (try_load_config(loc)) { // Override old version number collection->setStringValue(GLE_CONFIG_GLE, GLE_CONFIG_GLE_VERSION, GLEVN); } else { ostringstream err; err << "Can't load configuration from '" << loc << "'" << endl; output->println(err.str().c_str()); } } } #ifdef __UNIX__ // Find programs in search path on Unix GLEFindPrograms(tofind, &progress); #endif #ifdef __MACOS__ // Search for frameworks on Mac GLEFindFiles(string("/Library/Frameworks"), tofind, &progress); string home = GetHomeDir(); if (home != "") { home += "Library/Frameworks"; GLEFindFiles(home, tofind, &progress); } #endif for (unsigned int i = 0; i < tofind.size(); i++) { tofind[i]->updateResult(true); } #ifdef __UNIX__ // Search for libraries in typical directories and in LD_LIBRARY_PATH string gslibloc = GLEFindLibrary("libgs", &progress); if (gslibloc != "") { CmdLineArgString* gslib_stra = (CmdLineArgString*)tools->getOption(GLE_TOOL_GHOSTSCRIPT_LIB)->getArg(0); gslib_stra->setValue(gslibloc.c_str()); } #endif output->println(); // Write installed GLE's to config section ConfigSection* gle = collection->getSection(GLE_CONFIG_GLE); CmdLineArgSPairList* installs = (CmdLineArgSPairList*)gle->getOption(GLE_CONFIG_GLE_INSTALL)->getArg(0); char_separator separator(";", ""); tokenizer tokens(gle_paths, separator); while (tokens.has_more()) { string path = tokens.next_token(); if (path.length() > 0 && !installs->hasValue2(path)) { installs->addPair("?", path); } } // Find versions of installed GLEs and set value of gleexe ostringstream out; string gle_version = GLEVN; if (installs->size() > 1) { // Only need to find out versions if more than one installed // otherwise assume it is "this" version for (int i = 0; i < installs->size(); i++) { const string& cr_gle = installs->getValue2(i); string& version = installs->getValue1(i); if (version == "?") { get_version_soft(cr_gle, version); if (version == "?") { // cout << "Use hard method for: " << cr_gle << endl; get_version_hard(cr_gle, version); } } if (str_i_equals(version, gle_version)) { out << "Found: GLE " << version << " in " << cr_gle << " (*)" << endl; } else { out << "Found: GLE " << version << " in " << cr_gle << endl; } } } else if (installs->size() == 1) { out << "Found: GLE in " << installs->getValue2(0) << endl; // Do not need to remember installed GLEs if there is only one // because then the "-v" option makes no sense installs->reset(); } // Show locations of other tools for (int j = 0; j <= GLE_TOOL_GHOSTSCRIPT_LIB; j++) { CmdLineOption* opt = tools->getOption(j); CmdLineArgString* strarg = (CmdLineArgString*)opt->getArg(0); if (strarg->isDefault()) { out << "Found: " << opt->getName() << " in '?'" << endl; } else { out << "Found: " << opt->getName() << " in '" << strarg->getValue() << "'" << endl; } } output->println(out.str().c_str()); for (unsigned int i = 0; i < tofind.size(); i++) { delete tofind[i]; } } void complain_about_gletop(bool has_top, ostream& out) { if (has_top) { // If the user has GLE_TOP, then it points to the wrong location // Let him first try to remove it, to see if that works out << "GLE_TOP might be pointing to an incorrect location." << endl; out << "Try removing GLE_TOP from your environment." << endl; } else { // The user did not set GLE_TOP and still something is wrong // Ask him to correct this by setting GLE_TOP as a workaround out << "Please set GLE_TOP to the correct location." << endl; } } bool check_correct_version(const string name, bool has_top, bool has_config, const vector& triedLocations, ConfigCollection& coll) { if (has_config) { const string& val = coll.getStringValue(GLE_CONFIG_GLE, GLE_CONFIG_GLE_VERSION); if (!str_i_equals(val.c_str(), GLEVN)) { ostringstream out; out << "Error: GLE's configuration file:" << endl; out << " '" << name << "'" << endl; out << "Is from GLE version '"; if (val == "") { out << "unknown"; } else { out << val; } out << "' (and not '" << GLEVN << "' as espected)." << endl; complain_about_gletop(has_top, out); g_message(out.str().c_str()); return false; } } else { ostringstream out; out << "Error: GLE is unable to locate its configuration file." << endl; out << " GLE searched these locations:" << endl; for (size_t i = 0; i < triedLocations.size(); i++) { out << " '" << triedLocations[i] << "'" << endl; } complain_about_gletop(has_top, out); g_message(out.str().c_str()); return false; } coll.setStringValue(GLE_CONFIG_GLE, GLE_CONFIG_GLE_VERSION, GLEVN); return true; } bool try_load_config_sub(string& conf_name, vector& triedLocations) { StripDirSep(GLE_TOP_DIR); string conf_name2 = GLE_TOP_DIR + DIR_SEP + "glerc"; triedLocations.push_back(conf_name2); bool has_config = try_load_config(conf_name2); if (has_config) { // only update name if configuration file found here conf_name = conf_name2; } return has_config; } bool do_load_config(const char* appname, char **argv, CmdLineObj& cmdline, ConfigCollection& coll) { // Set GLE_TOP // -> prefer environment var GLE_TOP // -> otherwise, locate relative to executable location string conf_name; bool has_top = false; bool has_config = false; const char* top = getenv("GLE_TOP"); vector triedLocations; if (top == NULL || top[0] == 0) { string exe_name; bool has_exe_name = GetExeName(appname, argv, exe_name); if (has_exe_name) { GetDirName(exe_name, GLE_BIN_DIR); StripDirSep(GLE_BIN_DIR); #ifdef GLETOP_CD // Try relative path GLE_TOP_DIR = GLEAddRelPath(exe_name, GLETOP_CD+1, GLETOP_REL); has_config = try_load_config_sub(conf_name, triedLocations); // Try one level higher as executable if (!has_config) { GLE_TOP_DIR = GLEAddRelPath(exe_name, 2, NULL); has_config = try_load_config_sub(conf_name, triedLocations); } // Try with absolute path if (!has_config) { GLE_TOP_DIR = GLETOP_ABS; has_config = try_load_config_sub(conf_name, triedLocations); } #else GLE_TOP_DIR = exe_name; StripPathComponents(&GLE_TOP_DIR, 2); #endif } else { // The user will see as error messege: "$GLE_TOP/some_file" not found. GLE_TOP_DIR = "$GLE_TOP"; } } else { has_top = true; GLE_TOP_DIR = top; } StripDirSep(GLE_TOP_DIR); if (!has_config) { // Try load config file // -> first $GLE_TOP/glerc if (conf_name == "") { // Only update conf_name if it was not yet set // To make error message if glerc not found more interpretable conf_name = GLE_TOP_DIR + DIR_SEP + "glerc"; if (std::find(triedLocations.begin(), triedLocations.end(), conf_name) == triedLocations.end()) { triedLocations.push_back(conf_name); has_config = try_load_config(conf_name); } } } if (!check_correct_version(conf_name, has_top, has_config, triedLocations, coll)) { return false; } GLEInterface* iface = GLEGetInterfacePointer(); string uconf = iface->getUserConfigLocation(); if (uconf != "") { // -> on Unix also $HOME/.glerc try_load_config(uconf); } // Set values for -v option init_installed_versions(cmdline, &coll); return has_config; } void do_find_deps_sub(GLEInterface* iface, const string& loc) { string myloc = loc; #ifdef __WIN32__ if (myloc.length() == 0) { GLEGetEnv("ProgramFiles", myloc); } #endif find_deps(myloc, iface); } void do_save_config() { GLEInterface* iface = GLEGetInterfacePointer(); string conf_name = GLE_TOP_DIR + DIR_SEP + "glerc"; bool is_ok = try_save_config(conf_name, iface, false); if (!is_ok) { string user_conf = iface->getUserConfigLocation(); is_ok = try_save_config(user_conf, iface, true); } if (!is_ok) { ostringstream err; err << ">>> Can't write to config file '" << conf_name << "'" << endl; GLEOutputStream* output = iface->getOutput(); output->println(err.str().c_str()); } } void do_find_deps(CmdLineObj& cmdline) { // Save config if find deps if (cmdline.hasOption(GLE_OPT_FINDDEPS)) { GLEInterface* iface = GLEGetInterfacePointer(); CmdLineArgString* arg = (CmdLineArgString*)cmdline.getOption(GLE_OPT_FINDDEPS)->getArg(0); do_find_deps_sub(iface, arg->getValue()); do_save_config(); do_wait_for_enter(); exit(0); } } GLEGlobalConfig::GLEGlobalConfig() { m_CmdLine = NULL; m_Config = NULL; m_AllowConfigBlocks = false; } GLEGlobalConfig::~GLEGlobalConfig() { } void GLEGlobalConfig::initCmdLine() { m_AllowReadDirs.clear(); if (getCmdLine()->hasOption(GLE_OPT_ALLOWREAD)) { GLEPathToVector(getCmdLine()->getOptionString(GLE_OPT_ALLOWREAD), &m_AllowReadDirs); } m_AllowWriteDirs.clear(); if (getCmdLine()->hasOption(GLE_OPT_ALLOWWRITE)) { GLEPathToVector(getCmdLine()->getOptionString(GLE_OPT_ALLOWWRITE), &m_AllowWriteDirs); } } int g_verbosity() { return g_CmdLine.getIntValue(GLE_OPT_VERBOSITY); } gle-graphics-4.2.4c/src/gle/justify.h0000664000000000000000000000631411405446017016143 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ #define JUST_LEFT 0x100 #define JUST_CENTER 0x110 #define JUST_CENTRE 0x110 #define JUST_RIGHT 0x120 #define JUST_LT 0x02 #define JUST_TL 0x02 #define JUST_CL 0x01 #define JUST_LC 0x01 #define JUST_BL 0x00 #define JUST_LB 0x00 #define JUST_CB 0x10 #define JUST_BC 0x10 #define JUST_RB 0x20 #define JUST_BR 0x20 #define JUST_CR 0x21 #define JUST_RC 0x21 #define JUST_TR 0x22 #define JUST_RT 0x22 #define JUST_TC 0x12 #define JUST_CT 0x12 #define JUST_CC 0x11 #define JUST_C 0x11 gle-graphics-4.2.4c/src/gle/d_x.cpp0000664000000000000000000011427111652073536015563 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ /*--------------------------------------------------------------*/ /* DecWindows Driver 1.0 , for GLE V3.0 */ /*--------------------------------------------------------------*/ /* NOTE: MUST be run from a DECwindow (vt100 window, or curses) */ /* */ /* After 1.5 (float) beers the orphaned 3.3i gle_x code */ /* compiled and was able to draw wallx.gle and adphas.gle */ /* using the gle 4.0.7 code. No core dump, yet! */ /* Axel Rohde, Jan 13. 2005 */ /*--------------------------------------------------------------*/ #include "all.h" #include "core.h" #include "d_interface.h" #include "gprint.h" #ifdef HAVE_X11 extern struct gmodel g; extern int gle_debug; /*---------------------------------------------------------------------------*/ /* XWindows stuff here */ /*-----------------------------------------------*/ /* Usage of backingstore should be *Always* safe now.... */ #ifndef NOBACKINGSTORE #define BACKINGSTORE #endif #define FontName "-ADOBE-NEW CENTURY SCHOOLBOOK-MEDIUM-R-NORMAL--*-140-*-*-P-*" #define WindowName "GLE Output" X11GLEDevice::X11GLEDevice() : GLEDevice() { d_fillstyle = 1; gle_nspeed = 2; maxxsize = 0; maxysize = 0; window1W = 0; window1H = 0; window1 = 0; dpy = NULL; gc = NULL; gcf = NULL; screen = NULL; doesbackingstore = 0; savexsize = 0.0; saveysize = 0.0; i = 0; l = 0; j = 0; ix = 0; iy = 0; f = 0.0; xsizecm = 0.0; ysizecm = 0.0; d_scale = 0.0; d_xscale = 0.0; d_yscale = 0.0; d_graphmode = 0; d_fillstyle = 0; d_fillcolor = 0; d_lstyle = 0; d_lwidth = 0; d_maxy = 0; safnt = 0; npnts = 0; startx = 0; starty = 0; } X11GLEDevice::~X11GLEDevice() { } /******************** openDisplay ******************************************/ void X11GLEDevice::openDisplay() { dpy = XOpenDisplay(0); if (dpy == NULL){ /* gle_abort("Display not opened!\n"); gle_scr_end(); */ perror("Unable to open Display!"); exit(1); } screen = XDefaultScreenOfDisplay(dpy); doesbackingstore = DoesBackingStore(screen); } /***************** doInitialize **************************/ /* int color_table[10]; */ /* a.r. 10 instead of 9 */ void X11GLEDevice::doInitialize() { int i; openDisplay(); doCreateWindows(); for (i=0;ic_class == PseudoColor || vis->c_class == DirectColor || vis->c_class == TrueColor ) if (XAllocNamedColor(dpy, XDefaultColormapOfScreen(screen), colors[i], &screen_color, &exact_color)) return screen_color.pixel; else gprint("Color not allocated! {%s}\n",colors[i]); else switch (i) { case 0: return XWhitePixelOfScreen(screen); break; case 1: return XBlackPixelOfScreen(screen); break; default: return XBlackPixelOfScreen(screen); break; } return 0; } /******** do WMHints *************/ void X11GLEDevice::doWMHints() { XSizeHints xsh; /* Define the size and name of the window1 window */ xsh.x = XWidthOfScreen(screen)-window1W; xsh.y = 1; xsh.width = xsh.min_width = xsh.max_width = window1W; xsh.height = xsh.min_height = xsh.max_height = window1H; xsh.flags = PSize | PMinSize | PMaxSize | PPosition | USPosition; XSetNormalHints(dpy, window1, &xsh); XStoreName(dpy, window1, WindowName); } /******** doMapWindows ***********/ void X11GLEDevice::doMapWindows() { set_expose(); XMapWindow(dpy, window1); } double X11GLEDevice::getmaxx(void) { return XHeightOfScreen( screen ); /* a.r. */ } double X11GLEDevice::getmaxy(void) { return (XHeightOfScreen( screen ) * 0.95 ); /* a.r. */ /* how do I query the height of a titlebar from the Window Manager ? */ } int X11GLEDevice::getmaxcolor(void) { return 10; /* a.r. 10 instead of 9 */ } /*---------------------------------------------------------------------------*/ #define DASHED_LINE 2 #define SOLID_LINE 1 #define BLACKANDWHITE 1 #define false 0 #define true (!false) #define dbg if ((gle_debug & 64)>0) #define sx(v) ( (int) ((v) * d_xscale)) #define sy(v) ( d_maxy - ((int) ((v) * d_yscale))) #define rx(v) ( (int) ((v) * d_xscale)) #define ry(v) ( d_maxy - ((int) ((v) * d_yscale))) void X11GLEDevice::dxy(double x, double y, int *dx, int *dy) { static double fx,fy; g_dev(x,y,&fx,&fy); *dx = sx(fx); *dy = sy(fy); } void X11GLEDevice::rxy(double x, double y, int *dx, int *dy) { static double fx,fy,zx,zy; g_dev(x,y,&fx,&fy); g_dev(0.0,0.0,&zx,&zy); *dx = (int) ( (fx-zx) * d_xscale); *dy = (int) ( (fy-zy) * d_yscale); } /* short for XFillPolygon() */ void X11GLEDevice::dxy_short(double x, double y, short *dx, short *dy) { static double fx,fy; g_dev(x,y,&fx,&fy); *dx = sx(fx); *dy = sy(fy); } void X11GLEDevice::rxy_short(double x, double y, short *dx, short *dy) { static double fx,fy,zx,zy; g_dev(x,y,&fx,&fy); g_dev(0.0,0.0,&zx,&zy); *dx = (int) ( (fx-zx) * d_xscale); *dy = (int) ( (fy-zy) * d_yscale); } void X11GLEDevice::devcmd(const char *s) { } /*---------------------------------------------------------------------------*/ void X11GLEDevice::dfont(char *c) { /* only used for the DFONT driver which builds fonts */ } void X11GLEDevice::resetfont() { } /*---------------------------------------------------------------------------*/ static char lastline[80]; void X11GLEDevice::message(char *s) { /* w_message(s); 4.0 */ printf("%s\n",s); } /*---------------------------------------------------------------------------*/ void X11GLEDevice::source(const char *s) { dbg fprintf(stderr,"drawing %s ....",s); } /*---------------------------------------------------------------------------*/ void X11GLEDevice::get_type(char *t) { strcpy(t,"INTERACTIVE, X, DECWINDOWS, XWINDOWS"); } /*---------------------------------------------------------------------------*/ void X11GLEDevice::set_path(int onoff) {} /*---------------------------------------------------------------------------*/ void X11GLEDevice::newpath() { path_newpath(); } /*---------------------------------------------------------------------------*/ void X11GLEDevice::opendev(double width, double height, GLEFileLocation* outputfile, const string& inputfile) throw(ParserError) { gle_nspeed = 2; /* text mode = slow and fast */ xsizecm = 16; ysizecm = 16*0.95; /* Get largest rectangle we can fit on the screen */ d_scale = xsizecm / width; f = ysizecm / height; if (f= 0 && cx <= window1W && cy >= 0 && cy <= window1H ) { fner("Picture completed, press any key or click mouse in the graphics window "); gle_scr_refresh(); */ fprintf(stderr, "\nDrawing completed, press CTRL-c on commandline to exit...\n"); emask = NoEventMask; XWindowEvent(dpy, window1, emask, &ereturn); /* } else { fner("Picture completed, press RETURN to continue (Press any key)"); gle_scr_refresh(); text_inkey(); } XLowerWindow(dpy, window1); XSync(dpy,True); */ } /*---------------------------------------------------------------------------*/ void X11GLEDevice::set_line_cap(int i) { /* lcap, 0= butt, 1=round, 2=projecting square */ /* if X11 would do the same as Postscript...... XGCValues xgcv; xgcv.cap_style = i+1; XChangeGC(dpy, gc, GCCapStyle , &xgcv); XChangeGC(dpy, gcf, GCCapStyle , &xgcv); */ } /*---------------------------------------------------------------------------*/ void X11GLEDevice::set_line_join(int i) { /* 0= mitre, 1=round, 2=bevel */ /* if X11 would do the same as Postscript...... XGCValues xgcv; xgcv.join_style = i; XChangeGC(dpy, gc, GCJoinStyle, &xgcv); XChangeGC(dpy, gcf, GCJoinStyle, &xgcv); */ } /*---------------------------------------------------------------------------*/ void X11GLEDevice::set_line_miterlimit(double d) { i++; } /*---------------------------------------------------------------------------*/ void X11GLEDevice::set_line_width(double w) { int xa,xb; XGCValues xgcv; rxy(w,w,&xa,&xb); rxy(w,w,&xa,&xb); xa = abs(xa); xgcv.line_width = xa; XChangeGC(dpy, gc, GCLineWidth , &xgcv); } /*---------------------------------------------------------------------------*/ void X11GLEDevice::set_line_styled(double dd) {} void X11GLEDevice::set_line_style(const char *s) { XGCValues xgcv; const char *defline[] = {"", "", "12", "41", "14", "92", "1282", "9229", "4114", "54"}; int i, dashoff=0; char dashlist[64]; if (strlen(s)==1) s = defline[*s-'0']; if (strcmp(s,"")==0) { xgcv.line_style = LineSolid; XChangeGC(dpy, gc, GCLineStyle , &xgcv); } else { xgcv.line_style = LineDoubleDash; XChangeGC(dpy, gc, GCLineStyle , &xgcv); for (i=0; *s!=0; s++,i++) dashlist[i] = *s-'0' ? *s-'0' : 1; XSetDashes(dpy, gc, dashoff, dashlist, i); } } /*---------------------------------------------------------------------------*/ int in_font; void X11GLEDevice::fill() { if (in_font) path_stroke(); else path_fill(); } /*---------------------------------------------------------------------------*/ void X11GLEDevice::fill_ary(int nwk,double *wkx,double *wky) { /* fprintf(psfile,"%g %g moveto \n",wkx[0],wky[0]); for (i=1;i90 && (a4/2)<180 ) neg = -1; if ((a4/2)<0 && (a4/2)>-90 ) neg = -1; r3 = neg*rrr/(tan((GLE_PI/180)*a4/2)); dbg gprint("rrr %g a4/2 %g t=%g a2=%g a1=%g r1=%g r2=%g r3=%g \n",rrr,a4/2,tan(a4/2),a2,a1,r1,r2,r3); polar_xy(-r3,a1,&ssx,&ssy); ssx += x1; ssy += y1; polar_xy(r3,a2,&ex,&ey); ex += x1; ey += y1; g_line(ssx,ssy); dist = sqrt((ex-ssx) * (ex-ssx) + (ey-ssy)*(ey-ssy)); polar_xy(r1+ dist/2.5-r3,a1,&bx1,&by1); bx1 += x0; by1 += y0; polar_xy(-r2+ -dist/2.5+r3,a2,&bx2,&by2); bx2 += x2; by2 += y2; g_bezier(bx1,by1,bx2,by2,ex,ey); g_line(x2,y2); } /*---------------------------------------------------------------------------*/ void X11GLEDevice::arc(dbl r, dbl t1, dbl t2, dbl cx, dbl cy) { static int ixr,iyr,icx,icy,a1,a2; double ux,uy,z; dxy(cx,cy,&icx,&icy); rxy(r,r,&ixr,&iyr); if (t1>t2) {z = t1; t1 = t2; t2 = z;} a1 = t1*64; a2 = t2*64 - a1; XDrawArc(dpy,window1,gc,icx-ixr,icy-iyr,ixr*2,iyr*2,a1,a2); } /*---------------------------------------------------------------------------*/ void X11GLEDevice::narc(dbl r, dbl t1, dbl t2, dbl cx, dbl cy) { static int ixr,iyr,icx,icy,a1,a2; double ux,uy,z; dxy(cx,cy,&icx,&icy); rxy(r,r,&ixr,&iyr); if (t1>t2) {z = t1; t1 = t2; t2 = z;} a1 = t1*64; a2 = t2*64 - a1; XDrawArc(dpy,window1,gc,icx-ixr,icy-iyr,ixr*2,iyr*2,a1,a2); } /*---------------------------------------------------------------------------*/ #else /* arc code from easydev.c */ #define CSTEP (360/6) void df_arcto(dbl x1,dbl y1,dbl x2,dbl y2,dbl rrr) { double x0,y0,r1,a1,r2,a2,r3,a4,sx,sy,ex,ey; double bx1,by1,bx2,by2,dist,neg; g_get_xy(&x0,&y0); xy_polar(x1-x0,y1-y0,&r1,&a1); xy_polar(x2-x1,y2-y1,&r2,&a2); neg = 1; a4 = (180-a2+a1); if ((a4/2)>90 && (a4/2)<180 ) neg = -1; if ((a4/2)<0 && (a4/2)>-90 ) neg = -1; r3 = neg*rrr/(tan((GLE_PI/180)*a4/2)); polar_xy(-r3,a1,&sx,&sy); sx += x1; sy += y1; polar_xy(r3,a2,&ex,&ey); ex += x1; ey += y1; g_line(sx,sy); dist = sqrt((ex-sx)*(ex-sx) + (ey-sy)*(ey-sy)); polar_xy(r1+ dist/2.5-r3,a1,&bx1,&by1); bx1 += x0; by1 += y0; polar_xy(-r2+ -dist/2.5+r3,a2,&bx2,&by2); bx2 += x2; by2 += y2; g_bezier(bx1,by1,bx2,by2,ex,ey); g_line(x2,y2); } void xdf_barc(double r,dbl t1,dbl t2,dbl cx,dbl cy) { double rx1,ry1,rx2,ry2,d,dx1,dy1,dx2,dy2; polar_xy(r,t1,&rx1,&ry1); polar_xy(r,t2,&rx2,&ry2); d = sqrt( (rx2-rx1)*(rx2-rx1) + (ry2-ry1)*(ry2-ry1)); polar_xy(d/3,t1+90,&dx1,&dy1); polar_xy(d/3,t2-90,&dx2,&dy2); if (g.inpath) { g_line(rx1+cx,ry1+cy); g_bezier(rx1+cx+dx1,ry1+cy+dy1 ,rx2+cx+dx2,ry2+cy+dy2,rx2+cx,ry2+cy); } else { g_move(rx1+cx,ry1+cy); g_bezier(rx1+cx+dx1,ry1+cy+dy1 ,rx2+cx+dx2,ry2+cy+dy2,rx2+cx,ry2+cy); g_move(cx,cy); } } void df_arc(dbl r,dbl t1,dbl t2,dbl cx,dbl cy) { /* circle from t1 to t2, lets use 6 bezier's for a circle */ double stz; int nst,i; for (;t2ix2) { ii = ix1; ix1 = ix2; ix2 = ii; } if (iy1>iy2) { ii = iy1; iy1 = iy2; iy2 = ii; } XFillRectangle(dpy,window1,gcf,ix1,iy1,ix2-ix1,iy2-iy1); #else XPoint point[4]; int n = 0; dxy_short(x1,y1,&point[n].x,&point[n].y); n++; dxy_short(x2,y1,&point[n].x,&point[n].y); n++; dxy_short(x2,y2,&point[n].x,&point[n].y); n++; dxy_short(x1,y2,&point[n].x,&point[n].y); XFillPolygon(dpy,window1,gcf,point,4,Convex,CoordModeOrigin); #endif } void X11GLEDevice::box_stroke(dbl x1, dbl y1, dbl x2, dbl y2, bool reverse) { g_move(x1,y1); g_line(x2,y1); g_line(x2,y2); g_line(x1,y2); g_line(x1,y1); } /*---------------------------------------------------------------------------*/ void X11GLEDevice::circle_stroke(double zr) { #ifdef OLDARC static int ixr,iyr; int ux,uy; rxy(zr,zr,&ixr,&iyr); ixr =(fabs(ixr)+fabs(iyr))/2; dxy(g.curx,g.cury,&ux,&uy); XDrawArc(dpy,window1,gc,ux-ixr,uy-ixr,ixr*2,ixr*2,0,64*360); #else arc(zr,0,360,g.curx,g.cury); #endif } void X11GLEDevice::circle_fill(double zr) { #ifdef OLDARC static int ixr,iyr; int rr; int ux,uy; rxy(zr,zr,&ixr,&iyr); rr = (fabs(ixr)+fabs(iyr))/2; dxy(g.curx,g.cury,&ux,&uy); XFillArc(dpy,window1,gcf,ux-rr,uy-rr,rr*2,rr*2,0,64*360); #else if (!g.inpath){ g_set_path(true); g_newpath(); g_arc(zr,0,360,g.curx,g.cury,0); g_closepath(); g_fill(); g_set_path(false); } else g_arc(zr,0,360,g.curx,g.cury,0); #endif } /*---------------------------------------------------------------------------*/ void X11GLEDevice::bezier(dbl x1,dbl y1,dbl x2,dbl y2,dbl x3,dbl y3) { double ax,bx,cx,ay,by,cy,dist; double xxx,yyy,i,t,nstep,x0,y0; g_get_xy(&x0,&y0); dist = fabs(x3-x0) + fabs(y3-y0); nstep = 12; if (dist<1) nstep = 7; if (dist<.5) nstep = 3; if (dist<.1) { g_line(x3,y3); return; } cx = (x1-x0)*3; bx = (x2-x1)*3-cx; ax = x3-x0-cx-bx; cy = (y1-y0)*3; by = (y2-y1)*3-cy; ay = y3-y0-cy-by; for (i=0;i<=nstep;i++) { t = i/nstep; xxx = ax*pow(t,3.0) + bx*t*t + cx*t + x0; yyy = ay*pow(t,3.0) + by*t*t + cy*t + y0; g_line(xxx,yyy); } } /*---------------------------------------------------------------------------*/ void X11GLEDevice::set_color(const GLERC& color) /* colors slightly changed a.r. */ { int f = color->getHexValueGLE(); int i; colortyp cc; cc.l = f; i = 1; /* process grey stuff first */ if (cc.b[B_R] == cc.b[B_G] && cc.b[B_G] == cc.b[B_B]) { if (cc.b[B_R] < 25) i = 1; /* black */ if (cc.b[B_R] >= 25) i = 11; if (cc.b[B_R] >= 50) i = 12; if (cc.b[B_R] >= 75) i = 13; if (cc.b[B_R] >= 100) i = 14; if (cc.b[B_R] >= 125) i = 15; if (cc.b[B_R] >= 150) i = 16; if (cc.b[B_R] >= 175) i = 17; if (cc.b[B_R] >= 200) i = 18; if (cc.b[B_R] >= 225) i = 19; if (cc.b[B_R] >= 250) i = 0; /* white */ } else { if (cc.b[B_R]>=10 && cc.b[B_G]>=10 && cc.b[B_B]>=10) i = 9; if (cc.b[B_R]>60 && cc.b[B_G]>60 && cc.b[B_B]>60) i = 8; if (cc.b[B_R]>80) i = 25; if (cc.b[B_R]>175) i = 2; if (cc.b[B_B]>80) i = 26; if (cc.b[B_B]>175) i = 4; if (cc.b[B_G]>80) i = 27; if (cc.b[B_G]>175) i = 3; if (cc.b[B_R]>100 && cc.b[B_G]>100) i = 5; if (cc.b[B_G]>100 && cc.b[B_B]>100) i = 7; if (cc.b[B_R]>30 && cc.b[B_B]>100) i = 6; if (cc.b[B_R]>100 && cc.b[B_G]>100 && cc.b[B_B]>100) i = 8; if (cc.b[B_R]<10 && cc.b[B_G]<10 && cc.b[B_B]<10) i = 1; if (cc.b[B_R]>250 && cc.b[B_G]>250 && cc.b[B_B]>250) i = 0; /* violet */ if (cc.b[B_R]>230 && cc.b[B_G]>110 && cc.b[B_B]>230) i = 23; /* orange: */ if (cc.b[B_R]>245 && cc.b[B_G]>150 && cc.b[B_G]<180 && cc.b[B_B]<10) i = 21; /* brown */ if (cc.b[B_R]>150 && cc.b[B_G]>35 && cc.b[B_B]>35 && cc.b[B_R]<180 && cc.b[B_G]<50 && cc.b[B_B]<50) i = 22; /* pink */ if (cc.b[B_R]>250 && cc.b[B_G]>175 && cc.b[B_B]>185 && cc.b[B_G]<210 && cc.b[B_B]<225) i = 24; /* darkpink */ if (cc.b[B_R]>129 && cc.b[B_G]>89 && cc.b[B_B]>98 && cc.b[B_R]<149 && cc.b[B_G]<100 && cc.b[B_B]<118 ) i = 32; /* darkcyan */ if ( cc.b[B_G]>120 && cc.b[B_B]>120 && cc.b[B_R]<25 && cc.b[B_G]<160 && cc.b[B_B]<160 ) i = 33; /* khaki */ if (cc.b[B_R]>225 && cc.b[B_G]>215 && cc.b[B_B]>120 && cc.b[B_G]<245 && cc.b[B_B]<160 ) i = 30; /* darkkhaki */ if (cc.b[B_R]>120 && cc.b[B_G]>119 && cc.b[B_B]>50 && cc.b[B_R]<160 && cc.b[B_G]<150 && cc.b[B_B]<100 ) i = 31; /* tan */ if (cc.b[B_R]>190 && cc.b[B_G]>160 && cc.b[B_B]>120 && cc.b[B_R]<230 && cc.b[B_G]<200 && cc.b[B_B]<160 ) i = 28; /* tan4 */ if (cc.b[B_R]>129 && cc.b[B_G]>70 && cc.b[B_B]>23 && cc.b[B_R]<169 && cc.b[B_G]<110 && cc.b[B_B]<63 ) i = 29; /* magenta */ if (cc.b[B_R]>238 && cc.b[B_G]<20 && cc.b[B_B]>238) i = 6; } setcolor(i); } void X11GLEDevice::set_fill(const GLERC& fill) /* colors slightly changed a.r. */ { int f = fill->getHexValueGLE(); int i, j; colortyp cc; cc.l = f; i = 1; j = 0; if (cc.b[B_F] == 1) /* colours */ { /* process grey stuff first */ if (cc.b[B_R] == cc.b[B_G] && cc.b[B_G] == cc.b[B_B]) { if (cc.b[B_R] < 25) i = 1; /* black */ if (cc.b[B_R] >= 25) i = 11; if (cc.b[B_R] >= 50) i = 12; if (cc.b[B_R] >= 75) i = 13; if (cc.b[B_R] >= 100) i = 14; if (cc.b[B_R] >= 125) i = 15; if (cc.b[B_R] >= 150) i = 16; if (cc.b[B_R] >= 175) i = 17; if (cc.b[B_R] >= 200) i = 18; if (cc.b[B_R] >= 225) i = 19; if (cc.b[B_R] >= 250) i = 0; /* white */ } else { if (cc.b[B_R]>=10 && cc.b[B_G]>=10 && cc.b[B_B]>=10) i = 9; if (cc.b[B_R]>60 && cc.b[B_G]>60 && cc.b[B_B]>60) i = 8; if (cc.b[B_R]>60) i = 25; if (cc.b[B_R]>175) i = 2; if (cc.b[B_B]>60) i = 26; if (cc.b[B_B]>175) i = 4; if (cc.b[B_G]>60) i = 27; if (cc.b[B_G]>175) i = 3; if (cc.b[B_R]>100 && cc.b[B_G]>100) i = 5; if (cc.b[B_G]>100 && cc.b[B_B]>100) i = 7; if (cc.b[B_R]>30 && cc.b[B_B]>100) i = 6; if (cc.b[B_R]>100 && cc.b[B_G]>100 && cc.b[B_B]>100) i = 8; if (cc.b[B_R]<10 && cc.b[B_G]<10 && cc.b[B_B]< 10) i = 1; if (cc.b[B_R]>250 && cc.b[B_G]>250 && cc.b[B_B]>250) i = 0; /* violet */ if (cc.b[B_R]>230 && cc.b[B_G]>110 && cc.b[B_B]>230) i = 23; /* orange: */ if (cc.b[B_R]>245 && cc.b[B_G]>150 && cc.b[B_G]<180 && cc.b[B_B]<10) i = 21; /* brown */ if (cc.b[B_R]>150 && cc.b[B_G]>35 && cc.b[B_B]>35 && cc.b[B_R]<180 && cc.b[B_G]<50 && cc.b[B_B]<50) i = 22; /* pink */ if (cc.b[B_R]>250 && cc.b[B_G]>175 && cc.b[B_B]>185 && cc.b[B_G]<210 && cc.b[B_B]<225) i = 24; /* darkpink */ if (cc.b[B_R]>129 && cc.b[B_G]>89 && cc.b[B_B]>98 && cc.b[B_R]<149 && cc.b[B_G]<100 && cc.b[B_B]<118 ) i = 32; /* darkcyan */ if ( cc.b[B_G]>120 && cc.b[B_B]>120 && cc.b[B_R]<25 && cc.b[B_G]<160 && cc.b[B_B]<160 ) i = 33; /* khaki */ if (cc.b[B_R]>225 && cc.b[B_G]>215 && cc.b[B_B]>120 && cc.b[B_G]<245 && cc.b[B_B]<160 ) i = 30; /* darkkhaki */ if (cc.b[B_R]>120 && cc.b[B_G]>119 && cc.b[B_B]>50 && cc.b[B_R]<160 && cc.b[B_G]<150 && cc.b[B_B]<100 ) i = 31; /* tan */ if (cc.b[B_R]>190 && cc.b[B_G]>160 && cc.b[B_B]>120 && cc.b[B_R]<230 && cc.b[B_G]<200 && cc.b[B_B]<160 ) i = 28; /* tan4 */ if (cc.b[B_R]>129 && cc.b[B_G]>70 && cc.b[B_B]>23 && cc.b[B_R]<169 && cc.b[B_G]<110 && cc.b[B_B]<63 ) i = 29; /* magenta */ if (cc.b[B_R]>238 && cc.b[B_G]<20 && cc.b[B_B]>238) i = 6; } XSetFillStyle(dpy, gcf, FillSolid); d_fillcolor = i; setfillcolor(i); } if (cc.b[B_F] == 2) /* grids and shades */ { if (cc.b[B_R]==0x00 && cc.b[B_G]==0x00 && cc.b[B_B]==0x20) j=0; /* SHADE */ if (cc.b[B_R]==0x04 && cc.b[B_G]==0x00 && cc.b[B_B]==0x0C) j=1; /* SHADE1 */ if (cc.b[B_R]==0x00 && cc.b[B_G]==0x00 && cc.b[B_B]==0x10) j=2; /* SHADE2 */ if (cc.b[B_R]==0x05 && cc.b[B_G]==0x00 && cc.b[B_B]==0x20) j=3; /* SHADE3 */ if (cc.b[B_R]==0x10 && cc.b[B_G]==0x00 && cc.b[B_B]==0x40) j=4; /* SHADE4 */ if (cc.b[B_R]==0x20 && cc.b[B_G]==0x00 && cc.b[B_B]==0x60) j=5; /* SHADE5 */ if (cc.b[B_R]==0x00 && cc.b[B_G]==0x20 && cc.b[B_B]==0x20) j=6; /* GRID */ if (cc.b[B_R]==0x04 && cc.b[B_G]==0x0f && cc.b[B_B]==0x0f) j=7; /* GRID1 */ if (cc.b[B_R]==0x00 && cc.b[B_G]==0x10 && cc.b[B_B]==0x10) j=8; /* GRID2 */ if (cc.b[B_R]==0x05 && cc.b[B_G]==0x20 && cc.b[B_B]==0x20) j=9; /* GRID3 */ if (cc.b[B_R]==0x10 && cc.b[B_G]==0x40 && cc.b[B_B]==0x40) j=10;/* GRID4 */ if (cc.b[B_R]==0x20 && cc.b[B_G]==0x60 && cc.b[B_B]==0x60) j=11;/* GRID5 */ setfillcolor(1); /* black */ setfillstyle(j); } else { XSetFillStyle(dpy, gcf, FillSolid); setfillcolor(d_fillcolor); } } /*---------------------------------------------------------------------------*/ void X11GLEDevice::beginclip() { } void X11GLEDevice::endclip() { } struct X11_char_data {float wx,wy,x1,y1,x2,y2; }; void X11GLEDevice::dochar(int font, int cc) { in_font = true; if (safnt==0) safnt = pass_font("PLSR"); if (font_get_encoding(font)>2) { my_char(font,cc); in_font = false; return; } my_char(safnt,cc); in_font = false; } int X11GLEDevice::wait_expose(void) { /* Wait till he presses key or clicks mouse */ XEvent ereturn; int emask; /* for (;;) { XNextEvent(dpy,&ereturn); wprintf("Event %d %d %d %d\n",ereturn.type,Expose,ButtonPress, VisibilityNotify); gle_scr_refresh(); } */ /* XSync(dpy,True); */ emask = ExposureMask | ButtonPressMask | KeyPressMask; XWindowEvent(dpy, window1, emask, &ereturn); return 0; } int X11GLEDevice::set_expose(void) { int emask; emask = ExposureMask | ButtonPressMask | KeyPressMask | VisibilityChangeMask; /* #define X11R5 true for X11R5 and R6 */ #define X11R5 true #ifdef X11R5 XSelectInput(dpy, window1, emask); #else XSelectInput(dpy, window1, emask, &ereturn); #endif return 0; } enum {P_MOVE,P_LINE,P_BEZIER}; void X11GLEDevice::path_move(int x, int y) { startx = x; starty = y; pnts[npnts].type = P_MOVE; pnts[npnts].x = x; pnts[npnts++].y = y; } void X11GLEDevice::path_line(int x, int y) { pnts[npnts].type = P_LINE; pnts[npnts].x = x; pnts[npnts++].y = y; } void X11GLEDevice::path_close(void) { pnts[npnts].type = P_LINE; pnts[npnts].x = startx; pnts[npnts++].y = starty; } void X11GLEDevice::path_fill(void) { XPoint pts[X11_PATH_LENGTH]; int i,npts; for (i=0; i * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ #ifndef INCLUDE_POLISH #define INCLUDE_POLISH #define PCODE_EXPR 1 #define PCODE_DOUBLE 2 #define PCODE_VAR 3 #define PCODE_STRVAR 4 #define PCODE_STRING 5 #define PCODE_MORE 6 #define PCODE_NEXT_CMD 7 class GLESub; class GLEPcodeList : public RefCountObject { protected: RefCountVector m_ConstObjects; }; class GLEPcode : public vector { protected: GLEPcodeList* m_PCodeList; public: GLEPcode(GLEPcodeList* list); inline void addInt(int val) { push_back(val); }; inline int getInt(int idx) { return (*this)[idx]; }; inline void setInt(int idx, int val) { (*this)[idx] = val; }; inline void setLast(int val) { (*this)[size()-1] = val; }; inline GLEPcodeList* getPcodeList() { return m_PCodeList; } void addDoubleExpression(double val); void addStringExpression(const char* val); void addDouble(double val); void addFunction(int idx); void addVar(int var); void addStrVar(int var); void addString(const string& str); void addStringNoID(const string& str); void addStringChar(const char* str); void addStringNoIDChar(const char* str); void show(); void show(int start); }; class GLEPcodeIndexed : public GLEPcode { protected: vector m_Index; public: GLEPcodeIndexed(GLEPcodeList* list); inline int getNbEntries() { return m_Index.size(); } inline void addIndex(int idx) { m_Index.push_back(idx); } inline int getIndex(int idx) { return m_Index[idx]; } inline int getSize(int idx) { return m_Index[idx+1]-m_Index[idx]; } }; class GLEFunctionParserPcode : public GLERefCountObject { protected: GLEPcode m_Pcode; GLEPcodeList m_PcodeList; public: GLEFunctionParserPcode(); ~GLEFunctionParserPcode(); void polish(const char* fct, StringIntHash* vars = NULL) throw(ParserError); void polishPos(const char* fct, int pos, StringIntHash* vars = NULL) throw(ParserError); void polishX() throw(ParserError); double evalDouble(); inline GLEPcode* getCode() { return &m_Pcode; } }; class GLEPolish : public RefCountObject { protected: TokenizerLanguage m_lang; StringTokenizer m_tokens; StringIntHash* m_vars; public: GLEPolish(); ~GLEPolish(); void polish(const char *expr, GLEPcode& pcode, int *rtype) throw(ParserError); void polish(GLEPcode& pcode, int *rtype) throw(ParserError); void eval(const char *exp, double *x) throw(ParserError); void eval_string(const char *exp, string *str, bool allownum = false) throw(ParserError); void internalEval(const char *exp, double *x) throw(ParserError); void internalEvalString(const char* exp, string* str) throw(ParserError); void get_params(GLEPcode& pcode, int np, int* plist, const string& name) throw(ParserError); double evalTokenToDouble() throw(ParserError); Tokenizer* getTokens(const string& str); void initTokenizer(); inline void setExprVars(StringIntHash* vars) { m_vars = vars; } inline ParserError error(int column, const string& src) const { return m_tokens.error(column, src); }; inline ParserError error(const string& src) const { return m_tokens.error(src); }; }; void polish_eval(char *exp, double *x) throw(ParserError); void polish_eval_string(const char *exp, string *str, bool allownum = false) throw(ParserError); void polish(char *expr, char *pcode, int *plen, int *rtype) throw(ParserError); void polish(char *expr, GLEPcode& pcode, int *rtype) throw(ParserError); void eval_pcode(GLEPcode& pcode, double* x); void eval_pcode_str(GLEPcode& pcode, string& x); GLEPolish* get_global_polish(); void stack_op(char *pcode, int *plen, int stk[] , int stkp[], int *nstk, int i, int p); #endif gle-graphics-4.2.4c/src/gle/d_ps.cpp0000664000000000000000000011077711722434562015743 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ /*--------------------------------------------------------------*/ /* Post Script Driver, for GLE */ /*--------------------------------------------------------------*/ #include "all.h" #include "bitmap/img2ps.h" #include "core.h" #include "d_interface.h" #include "gprint.h" #include "cutils.h" #include "op_def.h" #include "cmdline.h" #include "config.h" #include "file_io.h" #ifdef __WIN32__ #include #endif // // -- constants // #define dbg if ((gle_debug & 64)>0) // // elipse function only for PS // static char ellipse_fcn[] = "\ /ellipsedict 8 dict def\n ellipsedict /mtrx matrix put \n\ /ellipse\n\ { ellipsedict begin\n\ /endangle exch def\n\ /startangle exch def\n\ /yrad exch def\n\ /xrad exch def\n\ /y exch def\n\ /x exch def\n\ \n\ /savematrix mtrx currentmatrix def\n\ x y translate\n\ xrad yrad scale\n\ 0 0 1 startangle endangle arc\n\ savematrix setmatrix\n\ end\n\ } def\n\ /ellipsen\n\ { ellipsedict begin\n\ /endangle exch def\n\ /startangle exch def\n\ /yrad exch def\n\ /xrad exch def\n\ /y exch def\n\ /x exch def\n\ \n\ /savematrix mtrx currentmatrix def\n\ x y translate\n\ xrad yrad scale\n\ 0 0 1 startangle endangle arcn\n\ savematrix setmatrix\n\ end\n\ } def\n\ "; // // -- global variables can we get rid of these? // extern int MAX_VECTOR; /* Cant send POSTSCRIPT too complex a path */ extern bool control_d; extern struct gmodel g; extern bool BLACKANDWHITE; extern bool GS_PREVIEW; extern int gle_debug; extern ConfigCollection g_Config; // // -- function prototypes // char *font_getname(int i); void AddExtension(string& fname, const string& ext); void d_tidyup() { } PSGLEDevice::PSGLEDevice(bool eps) : GLEDevice() { m_IsEps = eps; m_IsPageSize = false; first_ellipse = 1; ps_nvec = 0; m_Out = NULL; m_OutputFile = NULL; m_OutputBuffer = NULL; m_FillMethod = GLE_FILL_METHOD_DEFAULT; m_currentFill = g_get_fill_clear(); } PSGLEDevice::~PSGLEDevice() { } void PSGLEDevice::dfont(char *c) { /* only used for the DFONT driver which builds fonts */ } void PSGLEDevice::message(char *s) { printf("%s\n",s); } void PSGLEDevice::devcmd(const char *s) { out() << s; } void PSGLEDevice::source(const char *s) { dbg out() << "%% SOURCE, " << s; } void PSGLEDevice::get_type(char *t) { strcpy(t,"HARDCOPY, PS, FILLPATH"); if (isEps()) strcat(t,", EPS,"); } void PSGLEDevice::set_path(int onoff) { } void PSGLEDevice::newpath() { out() << " newpath "; ps_nvec = 0; } void PSGLEDevice::pscomment(char* ss) { comments.push_back(ss); } FILE* PSGLEDevice::get_file_pointer(void) { return psfile; } void PSGLEDevice::opendev(double width, double height, GLEFileLocation* outputfile, const string& inputfile) throw(ParserError) { first_ellipse = 1; m_OutputName.copy(outputfile); m_OutputName.addExtension(g_device_to_ext(getDeviceType())); #ifdef ENABLE_GS_PREVIEW setRecordingEnabled(true); #endif if (isRecordingEnabled()) { startRecording(); } else { m_Out = m_OutputFile = new ofstream(m_OutputName.getFullPath().c_str(), ios::out | ios::binary); if (!m_OutputFile->is_open()) { g_throw_parser_error("failed to create PostScript file '", m_OutputName.getFullPath().c_str(), "'"); } } if (!isEps()) { if (control_d) out() << (char)4 << endl; out() << "%!PS-Adobe-2.0" << endl; } else { out() << "%!PS-Adobe-2.0 EPSF-2.0" << endl; } time_t t; t = time(0); // Make sure to use proper Adobe DSC comments // Windows Explorer can show these in the document properties of a PDF created by GLE string vers_nosnap = g_get_version_nosnapshot(); out() << "%%Creator: GLE " << vers_nosnap << " " << endl; out() << "%%CreationDate: " << ctime(&t); out() << "%%Title: " << inputfile << endl; for (vector::size_type i = 0; i < comments.size(); i++) { out() << "%% " << comments[i] << endl; } comments.clear(); int int_bb_x = 0, int_bb_y = 0; computeBoundingBox(width, height, &int_bb_x, &int_bb_y); out() << "%%BoundingBox: 0 0 " << int_bb_x << " " << int_bb_y << endl; out() << "%%HiResBoundingBox: 0 0 " << m_boundingBox.getX() << " " << m_boundingBox.getY() << endl; out() << "%%EndComments" << endl; out() << "%%EndProlog" << endl; if (isOutputPageSize()) { // Currently not used out() << "<< /PageSize [" << int_bb_x << " " << int_bb_y << "] >> setpagedevice" << endl; } initialPS(); } void PSGLEDevice::initialPS() { out() << "gsave" << endl; out() << "/f {findfont exch scalefont setfont} bind def" << endl; out() << "/s {show} bind def" << endl; out() << "/ps {true charpath} bind def" << endl; out() << "/l {lineto} bind def" << endl; out() << "/m {newpath moveto} bind def" << endl; out() << "matrix currentmatrix /originmat exch def" << endl; out() << "/umatrix {originmat matrix concatmatrix setmatrix} def" << endl; // Measure distance in cm g_scale(PS_POINTS_PER_INCH/CM_PER_INCH, PS_POINTS_PER_INCH/CM_PER_INCH); if (!g_is_fullpage()) { // Bounding box tweak g_translate(1.0*CM_PER_INCH/72, 1.0*CM_PER_INCH/72); } } void PSGLEDevice::closedev() { g_flush(); out() << "showpage" << endl; out() << "grestore" << endl; out() << "%%Trailer" << endl; if (!isEps() && control_d) out() << (char)4 << endl; #ifdef ENABLE_GS_PREVIEW // GS_PREVIEW a.r. 2005 // - purpose: *FAST* previewing while writing GLE code, // don't write huge eps files to disk, no hassle with resizing ghostview, // gsview or gv windows. // - add to .Xresources: Ghostscript*geometry: -5+0 // to place gs window in upper right corner like gle -d x11 // - may use environment variable or .glerc file for additional gs options // based on $DISPLAY, if you work on multiple sytems if (GS_PREVIEW) { ostringstream GScmd; double width, height; int gsPixelWidth, gsPixelHeight, gsPixelRes; g_get_pagesize(&width, &height); displayGeometry(width, height, &gsPixelWidth, &gsPixelHeight, &gsPixelRes); ConfigSection* tools = g_Config.getSection(GLE_CONFIG_TOOLS); string gs_cmd = ((CmdLineArgString*)tools->getOptionValue(GLE_TOOL_GHOSTSCRIPT_CMD))->getValue(); str_try_add_quote(gs_cmd); GScmd << gs_cmd; GScmd << " -sDEVICE=x11 -dTextAlphaBits=4 -dGraphicsAlphaBits=2 -dMaxBitmap=5000000 "; GScmd << "-dNOPLATFONTS -dTTYPAUSE -g" << gsPixelWidth << "x" << gsPixelHeight << " "; GScmd << "-r" << gsPixelRes << "x" << gsPixelRes << " -dDELAYSAFER "; GScmd << "-c '<< /PermitFileReading [ (/dev/tty)] >> setuserparams .locksafe' -dSAFER -q -_"; // cerr << endl << "Calling " << GScmd.str() << endl; // NOTE: popen may not exist (or may not work as expected) on Windows and OS/2 ! FILE* psfile = popen(GScmd.str().c_str(), "w"); if (psfile == NULL) { cerr << "GLE PS: popen ghostscript failed: " << GScmd.str() << endl; exit(1); } fprintf(psfile, "%s\n", m_OutputBuffer->str().c_str()); pclose(psfile); } #endif if (m_OutputFile != NULL) { m_OutputFile->close(); delete m_OutputFile; m_OutputFile = NULL; } if (g_verbosity() > 0) { string mainname; if (isEps()) { GetMainNameExt(m_OutputName.getName(), ".eps", mainname); cerr << "[" << mainname << "][.eps]"; } else { GetMainNameExt(m_OutputName.getName(), ".ps", mainname); cerr << "[" << mainname << "][.ps]"; } g_set_console_output(false); } } void PSGLEDevice::set_line_cap(int i) { /* lcap, 0= butt, 1=round, 2=projecting square */ if (!g.inpath) g_flush(); out() << i << " setlinecap" << endl; } void PSGLEDevice::set_line_join(int i) { if (!g.inpath) g_flush(); out() << i << " setlinejoin" << endl; } void PSGLEDevice::set_line_miterlimit(double d) { if (!g.inpath) g_flush(); out() << d << " setmiterlimit" << endl; } void PSGLEDevice::set_line_width(double w) { if (w==0) w = 0.02; if (w<.0002) w = 0; if (!g.inpath) g_flush(); out() << w << " setlinewidth" << endl; } void PSGLEDevice::set_line_styled(double dd) { } void PSGLEDevice::set_line_style(const char *s) { /* should deal with [] for solid lines */ static const char *defline[] = {"","","12","41","14","92","1282","9229","4114","54","73","7337","6261","2514"}; char ob[200]; if (!g.inpath) g_flush(); strcpy(ob,"["); if (strlen(s) == 1) { int index = s[0] - '0'; if (index < 0 || index > (int)(sizeof(defline)/sizeof(const char*))) { ostringstream err; err << "illegal line style '" << s << "'"; g_throw_parser_error(err.str()); } s = defline[index]; } int l = strlen(s); for (i=0;igetHexValueGLE(); if (cur_fill.b[B_F] == 255) { return; /* clear fill, do nothing */ } else if (cur_fill.b[B_F] == 2) { shade(bounds); return; } set_fill(); /*because color and fill are the same*/ out() << "fill" << endl; set_color(); } void PSGLEDevice::shadeGLE() { colortyp cur_fill; cur_fill.l = m_currentFill->getHexValueGLE(); double step1 = cur_fill.b[B_B]/160.0; double step2 = cur_fill.b[B_G]/160.0; if (step1 > 0) { out() << -40.0 << " " << step1 << " " << 40.0 << " { /x exch def" << endl; out() << "x 0 moveto 40 x add 40 lineto stroke" << endl; out() << "} for" << endl; } if (step2 > 0) { out() << 0.0 << " " << step2 << " " << 80.0 << " { /x exch def" << endl; out() << "x 0 moveto -40 x add 40 lineto stroke" << endl; out() << "} for" << endl; } } void PSGLEDevice::shadeBoundedIfThenElse1(GLERectangle* bounds, double step1) { // if x1+p*s > y1 then out() << bounds->getXMax() << " p " << step1 << " mul add " << bounds->getYMax() << " gt" << endl; // aline y1-p*s y1 out() << "{" << bounds->getYMax() << " dup p " << step1 << " mul sub exch lineto stroke}" << endl; // aline x1 x1+p*s out() << "{" << bounds->getXMax() << " dup p " << step1 << " mul add lineto stroke} ifelse" << endl; } void PSGLEDevice::shadeBoundedIfThenElse2(GLERectangle* bounds, double step2) { // if p*s-y1 > x0 then out() << "p " << step2 << " mul " << bounds->getYMax() << " sub " << bounds->getXMin() << " gt" << endl; // aline p*s-y1 y1 out() << "{" << bounds->getYMax() << " dup p " << step2 << " mul exch sub exch lineto stroke}" << endl; // aline x0 p*s-x0 out() << "{" << bounds->getXMin() << " dup p " << step2 << " mul exch sub lineto stroke} ifelse" << endl; } void PSGLEDevice::shadeBounded(GLERectangle* bounds) { colortyp cur_fill; cur_fill.l = m_currentFill->getHexValueGLE(); double step1 = cur_fill.b[B_B]/160.0; double step2 = cur_fill.b[B_G]/160.0; out() << "2 setlinecap" << endl; if (step1 > 0) { int p0 = (int)ceil((bounds->getYMax()-bounds->getXMin())/step1-1e-6); if (bounds->getXMin() + p0*step1 > bounds->getYMax()) p0--; int p1 = (int)floor((bounds->getYMin()-bounds->getXMin())/step1+1e-6); if (bounds->getXMin() + p1*step1 < bounds->getYMin()) p1++; int p2 = (int)floor((bounds->getYMin()-bounds->getXMax())/step1+1e-6); if (bounds->getXMax() + p2*step1 < bounds->getYMin()) p2++; // for (int p = p0; p > p1; p--) out() << p0 << " -1 " << (p1+1) << " { /p exch def" << endl; // amove x0 x0+p*s out() << bounds->getXMin() << " dup p " << step1 << " mul add moveto" << endl; shadeBoundedIfThenElse1(bounds, step1); out() << "} for" << endl; // for (int p = p1; p >= p2; p--) out() << p1 << " -1 " << p2 << " { /p exch def" << endl; // amove y0-p*s y0 out() << bounds->getYMin() << " dup p " << step1 << " mul sub exch moveto" << endl; shadeBoundedIfThenElse1(bounds, step1); out() << "} for" << endl; } if (step2 > 0) { int p0 = (int)ceil((bounds->getYMax()+bounds->getXMax())/step2-1e-6); if (p0*step2 - bounds->getXMin() > bounds->getYMax()) p0--; int p1 = (int)floor((bounds->getYMin()+bounds->getXMax())/step2+1e-6); if (p1*step2 - bounds->getXMax() < bounds->getYMin()) p1++; int p2 = (int)floor((bounds->getYMin()+bounds->getXMin())/step2+1e-6); if (p2*step2 - bounds->getXMax() < bounds->getYMin()) p2++; // for (int p = p0; p > p1; p--) out() << p0 << " -1 " << (p1+1) << " { /p exch def" << endl; // amove x0 x0+p*s out() << bounds->getXMax() << " dup p " << step2 << " mul exch sub moveto" << endl; shadeBoundedIfThenElse2(bounds, step2); out() << "} for" << endl; // for (int p = p1; p >= p2; p--) out() << p1 << " -1 " << p2 << " { /p exch def" << endl; // amove y0-p*s y0 out() << bounds->getYMin() << " dup p " << step2 << " mul exch sub exch moveto" << endl; shadeBoundedIfThenElse2(bounds, step2); out() << "} for" << endl; } } void PSGLEDevice::shadePostScript() { colortyp cur_fill; cur_fill.l = m_currentFill->getHexValueGLE(); int step1 = cur_fill.b[B_B]; int step2 = cur_fill.b[B_G]; out() << "<< /PatternType 1" << endl; out() << "/PaintType 1" << endl; out() << "/TilingType 1" << endl; int xstep = max(step1, step2); int ystep = max(step1, step2); out() << "/BBox [0 0 " << xstep << " " << ystep << "]" << endl; out() << "/XStep " << xstep << endl; out() << "/YStep " << ystep << endl; out() << "/PaintProc" << endl; out() << "{ pop" << endl; out() << "0 setlinecap" << endl; out() << "0 setlinejoin" << endl; GLERC background(get_fill_background(m_currentFill.get())); if (!background->isTransparent()) { set_color_impl(background); out() << "-1 -1 " << (xstep+1) << " " << (ystep+1) << " rectfill" << endl; } GLERC foreground(get_fill_foreground(m_currentFill.get())); set_color_impl(foreground); out() << (int)cur_fill.b[B_R] << " setlinewidth" << endl; if (step1 > 0) { out() << "0 0 moveto" << endl; out() << xstep << " " << ystep << " l" << endl; out() << "stroke" << endl; if (step2 == 0) { out() << xstep/2 << " " << -ystep/2 << " moveto" << endl; out() << 3*xstep/2 << " " << ystep/2 << " l" << endl; out() << "stroke" << endl; out() << -xstep/2 << " " << ystep/2 << " moveto" << endl; out() << xstep/2 << " " << 3*ystep/2 << " l" << endl; out() << "stroke" << endl; } } if (step2 > 0) { out() << "0 " << ystep << " moveto" << endl; out() << xstep << " 0 l" << endl; out() << "stroke" << endl; if (step1 == 0) { out() << -xstep/2 << " " << ystep/2 << " moveto" << endl; out() << xstep/2 << " " << -ystep/2 << " l" << endl; out() << "stroke" << endl; out() << xstep/2 << " " << 3*ystep/2 << " moveto" << endl; out() << 3*xstep/2 << " " << ystep/2 << " l" << endl; out() << "stroke" << endl; } } out() << "} bind" << endl; out() << ">>" << endl; out() << "[" << 1.0/160 << " 0 0 " << 1.0/160 << " 1 1]" << endl; out() << "makepattern" << endl; out() << "/Pattern setcolorspace" << endl; out() << "setpattern fill" << endl; set_color(); } void PSGLEDevice::shade(GLERectangle* bounds) { if (m_FillMethod == GLE_FILL_METHOD_GLE || (m_FillMethod == GLE_FILL_METHOD_DEFAULT && bounds != NULL)) { GLERC background(get_fill_background(m_currentFill.get())); if (!background->isTransparent()) { out() << "gsave" << endl; set_color_impl(background); out() << "fill" << endl; out() << "grestore" << endl; } // Implemented by using path as clip and then painting strokes over the clip out() << "gsave" << endl; out() << "clip" << endl; out() << "newpath" << endl; GLERC foreground(get_fill_foreground(m_currentFill.get())); set_color_impl(foreground); colortyp cur_fill; cur_fill.l = m_currentFill->getHexValueGLE(); out() << (double)(cur_fill.b[B_R]/160.0) << " setlinewidth" << endl; if (m_FillMethod == GLE_FILL_METHOD_DEFAULT && bounds != NULL) { shadeBounded(bounds); } else { shadeGLE(); } out() << "grestore" << endl; } else { shadePostScript(); } } void PSGLEDevice::fill_ary(int nwk,double *wkx,double *wky) { out() << "gsave" << endl; out() << "newpath" << endl; out() << wkx[0] << " " << wky[0] << " moveto" << endl; for (int i = 1; i < nwk; i++) { out() << wkx[i] << " " << wky[i] << " l" << endl; } set_fill(); out() << "fill" << endl; set_color(); out() << "grestore" << endl; } void PSGLEDevice::line_ary(int nwk,double *wkx,double *wky) { out() << "gsave" << endl; out() << "newpath" << endl; out() << wkx[0] << " " << wky[0] << " moveto" << endl; for (int i = 1; i < nwk; i++) { out() << wkx[i] << " " << wky[i] << " l" << endl; } out() << "stroke" << endl; out() << "grestore" << endl; } void PSGLEDevice::stroke() { out() << "gsave" << endl; out() << "stroke" << endl; out() << "grestore" << endl; } void PSGLEDevice::clip() { out() << "clip" << endl; } void PSGLEDevice::set_matrix(double newmat[3][3]) { out() << "["; out() << newmat[0][0] << " " << newmat[1][0] << " " << newmat[0][1] << " "; out() << newmat[1][1] << " " << newmat[0][2] << " " << newmat[1][2] << "] umatrix" << endl; } void PSGLEDevice::move(double zx,double zy) { if (g.inpath) { out() << zx << " " << zy << " moveto" << endl; } else { ps_nvec++; out() << zx << " " << zy << " m" << endl; } } void PSGLEDevice::reverse() { out() << "reversepath" << endl; } void PSGLEDevice::closepath() { out() << "closepath" << endl; } void PSGLEDevice::line(double zx,double zy) { dbg gprint("in d_line g.curx,y %g %g ",g.curx,g.cury); if (g.xinline==false) { move(g.curx,g.cury); } ps_nvec++; if (ps_nvec>MAX_VECTOR) { //gprint("Warning, complex path, if filling fails then try /nomaxpath \n"); ps_nvec = 0; g_flush(); move(g.curx,g.cury); } out() << zx << " " << zy << " l" << endl; } void PSGLEDevice::clear() { } void PSGLEDevice::flush() { if (g.inpath) return; if (g.xinline) { out() << "stroke" << endl; ps_nvec = 0; } } void PSGLEDevice::arcto(dbl x1,dbl y1,dbl x2,dbl y2,dbl rrr) { if (g.xinline==false) move(g.curx,g.cury); out() << x1 << " " << y1 << " " << x2 << " " << y2 << " " << rrr << " arcto clear "; out() << x2 << " " << y2 << " l" << endl; g.xinline = true; } void PSGLEDevice::arc(dbl r,dbl t1,dbl t2,dbl cx,dbl cy) { //double dx,dy; double x,y; g_get_xy(&x,&y); //polar_xy(r,t1,&dx,&dy); if (!g.inpath) { if (!g.xinline) out() << "newpath "; } out() << cx << " " << cy << " " << r << " " << t1 << " " << t2 << " arc" << endl; g.xinline = true; if (!g.inpath) g_move(x,y); } void PSGLEDevice::narc(dbl r,dbl t1,dbl t2,dbl cx,dbl cy) { double dx,dy; double x,y; g_get_xy(&x,&y); polar_xy(r,t1,&dx,&dy); if (!g.inpath) { if (!g.xinline) out() << "newpath "; } out() << cx << " " << cy << " " << r << " " << t1 << " " << t2 << " arcn" << endl; g.xinline = true; if (!g.inpath) g_move(x,y); } void PSGLEDevice::elliptical_arc(dbl rx,dbl ry,dbl t1,dbl t2,dbl cx,dbl cy) { double dx,dy; double x,y; if (first_ellipse) { first_ellipse = 0; out() << ellipse_fcn << endl; } g_get_xy(&x,&y); polar_xy(rx,ry,t1,&dx,&dy); if (!g.inpath) g_move(cx+dx,cy+dy); out() << cx << " " << cy << " " << rx << " " << ry << " " << t1 << " " << t2 << " ellipse" << endl; g.xinline = true; if (!g.inpath) g_move(x,y); } void PSGLEDevice::elliptical_narc(dbl rx,dbl ry,dbl t1,dbl t2,dbl cx,dbl cy) { double dx,dy; double x,y; if(first_ellipse) { first_ellipse = 0; out() << ellipse_fcn << endl; } g_get_xy(&x,&y); polar_xy(rx,ry,t1,&dx,&dy); if (!g.inpath) g_move(cx+dx,cy+dy); out() << cx << " " << cy << " " << rx << " " << ry << " " << t1 << " " << t2 << " ellipsen" << endl; g.xinline = true; if (!g.inpath) g_move(x,y); } void PSGLEDevice::box_fill(dbl x1, dbl y1, dbl x2, dbl y2) { if (g.inpath) { xdbox(x1,y1,x2,y2); } else { g_flush(); out() << "newpath "; GLERectangle rect(x1, y1, x2, y2); xdbox(x1,y1,x2,y2); ddfill(&rect); out() << "newpath" << endl; } } void PSGLEDevice::box_stroke(dbl x1, dbl y1, dbl x2, dbl y2, bool reverse) { if (g.inpath) { if (reverse) { out() << x1 << " " << y1 << " moveto " << x1 << " " << y2 << " l " << x2 << " " << y2 << " l " << x2 << " " << y1 << " l closepath" << endl; } else { xdbox(x1,y1,x2,y2); } } else { g_flush(); out() << "newpath "; xdbox(x1,y1,x2,y2); out() << "stroke" << endl; ps_nvec = 0; } } void PSGLEDevice::xdbox(double x1, double y1, double x2, double y2) { out() << x1 << " " << y1 << " moveto " << x2 << " " << y1 << " l " << x2 << " " << y2 << " l " << x1 << " " << y2 << " l closepath" << endl; } void PSGLEDevice::circle_stroke(double zr) { double x,y; g_get_xy(&x,&y); if (g.inpath) { out() << x << " " << y << " " << zr << " 0 360 arc" << endl; } else { g_flush(); out() << "newpath "; out() << x << " " << y << " " << zr << " 0 360 arc" << endl; out() << "closepath stroke" << endl; } } void PSGLEDevice::circle_fill(double zr) { double x=g.curx,y=g.cury; if (g.inpath) { out() << x << " " << y << " " << zr << " 0 360 arc" << endl; } else { g_flush(); out() << "newpath "; out() << x << " " << y << " " << zr << " 0 360 arc" << endl; GLERectangle rect(x-zr, y-zr, x+zr, y+zr); ddfill(&rect); out() << "newpath" << endl; } } void PSGLEDevice::ellipse_stroke(double rx, double ry) { double x,y; if (first_ellipse) { first_ellipse = 0; out() << ellipse_fcn << endl; } g_get_xy(&x,&y); if (g.inpath) { out() << x << " " << y << " " << rx << " " << ry << " 0 360 ellipse" << endl; } else { g_flush(); out() << "newpath "; out() << x << " " << y << " " << rx << " " << ry << " 0 360 ellipse closepath" << endl; out() << "closepath stroke" << endl; } } void PSGLEDevice::ellipse_fill(double rx, double ry) { double x=g.curx,y=g.cury; if (first_ellipse) { first_ellipse = 0; out() << ellipse_fcn << endl; } if (g.inpath) { out() << x << " " << y << " " << rx << " " << ry << " 0 360 ellipse" << endl; } else { g_flush(); out() << "newpath "; out() << x << " " << y << " " << rx << " " << ry << " 0 360 ellipse" << endl; GLERectangle rect(x-rx, y-ry, x+rx, y+ry); ddfill(&rect); out() << "newpath" << endl; } } void PSGLEDevice::bezier(dbl x1,dbl y1,dbl x2,dbl y2,dbl x3,dbl y3) { double x=g.curx,y=g.cury; if (g.inpath) { if (g.xinline==false) move(g.curx,g.cury); out() << x1 << " " << y1 << " " << x2 << " " << y2 << " " << x3 << " " << y3 << " curveto" << endl; } else { g_flush(); if (!g.xinline) out() << x << " " << y << " moveto "; out() << x1 << " " << y1 << " " << x2 << " " << y2 << " " << x3 << " " << y3 << " curveto" << endl; } g.xinline = true; } void PSGLEDevice::set_color_impl(const GLERC& color) { if (color->getHexValueGLE() == (unsigned int)GLE_COLOR_WHITE) { out() << "1 setgray" << endl; } else if (color->getHexValueGLE() == (unsigned int)GLE_COLOR_BLACK) { out() << "0 setgray" << endl; } else { if (BLACKANDWHITE) { out() << color->getGray() << " setgray" << endl; } else { out() << color->getRed() << " " << color->getGreen() << " " << color->getBlue() << " setrgbcolor" << endl; } } if (color->hasAlpha()) { g_throw_parser_error("semi-transparency only supported with command line option '-cairo'"); } } void PSGLEDevice::set_color() { set_color_impl(m_currentColor); } void PSGLEDevice::set_fill() { set_color_impl(m_currentFill); } void PSGLEDevice::set_fill_method(int m) { m_FillMethod = m; } void PSGLEDevice::set_color(const GLERC& color) { g_flush(); m_currentColor = color; set_color(); } void PSGLEDevice::set_fill(const GLERC& fill) { m_currentFill = fill; } void PSGLEDevice::beginclip() { out() << "gsave" << endl; } void PSGLEDevice::endclip() { g_flush(); out() << "grestore" << endl; gmodel* state = new gmodel(); g_get_state(state); g_set_state(state); delete state; } struct psfont_struct {char *sname; char *lname;}; struct psfont_struct psf[70] = { /* leaves room for twenty more from PSFONT.DAT*/ { (char*)"PSTR", (char*)"Times-Roman" }, { (char*)"PSTI", (char*)"Times-Italic" }, { (char*)"PSTB", (char*)"Times-Bold" }, { (char*)"PSTBI", (char*)"Times-BoldItalic" }, { (char*)"RM", (char*)"Times-Roman" }, { (char*)"RMI", (char*)"Times-Italic" }, { (char*)"RMB", (char*)"Times-Bold" }, { (char*)"RMBI", (char*)"Times-BoldItalic" }, { (char*)"SS", (char*)"Helvetica" }, { (char*)"SSB", (char*)"Helvetica-Bold" }, { (char*)"SSI", (char*)"Helvetica-Oblique" }, { (char*)"SSBI", (char*)"Helvetica-BoldOblique" }, { (char*)"PSH", (char*)"Helvetica" }, { (char*)"PSHB", (char*)"Helvetica-Bold" }, { (char*)"PSHBO", (char*)"Helvetica-BoldOblique" }, { (char*)"PSHO", (char*)"Helvetica-Oblique" }, { (char*)"PSAGB", (char*)"AvantGarde-Book" }, { (char*)"PSAGBO", (char*)"AvantGarde-BookOblique" }, { (char*)"PSAGD", (char*)"AvantGarde-Demi" }, { (char*)"PSAGDO", (char*)"AvantGarde-DemiOblique" }, { (char*)"PSBD", (char*)"Bookman-Demi" }, { (char*)"PSBDI", (char*)"Bookman-DemiItalic" }, { (char*)"PSBL", (char*)"Bookman-Light" }, { (char*)"PSBLI", (char*)"Bookman-LightItalic" }, { (char*)"PSC", (char*)"Courier" }, { (char*)"PSCB", (char*)"Courier-Bold" }, { (char*)"PSCBO", (char*)"Courier-BoldOblique" }, { (char*)"PSCO", (char*)"Courier-Oblique" }, { (char*)"TT", (char*)"Courier" }, { (char*)"TTB", (char*)"Courier-Bold" }, { (char*)"TTBI", (char*)"Courier-BoldOblique" }, { (char*)"TTI", (char*)"Courier-Oblique" }, { (char*)"PSNCSB", (char*)"NewCenturySchlbk-Bold" }, { (char*)"PSNCSBI", (char*)"NewCenturySchlbk-BoldItalic" }, { (char*)"PSNCSI", (char*)"NewCenturySchlbk-Italic" }, { (char*)"PSNCSR", (char*)"NewCenturySchlbk-Roman" }, { (char*)"PSPB", (char*)"Palatino-Bold" }, { (char*)"PSPBI", (char*)"Palatino-BoldItalic" }, { (char*)"PSPI", (char*)"Palatino-Italic" }, { (char*)"PSPR", (char*)"Palatino-Roman" }, { (char*)"PSZCMI", (char*)"ZapfChancery-MediumItalic" }, { (char*)"PSZD", (char*)"ZapfDingbats" }, { (char*)"PSSYM", (char*)"Symbol" }, { NULL, NULL } }; static int d_ps_this_font = 0; static double d_ps_this_size = 0; struct ps_glyph_name { const char* name; }; struct ps_glyph_name ps_glyph_name_map[] = { { "Aacute" }, { "Abreve" }, { "Acircumflex" }, { "Adieresis" }, { "Agrave" }, { "Amacron" }, { "Aogonek" }, { "Aring" }, { "Atilde" }, { "Cacute" }, { "Ccaron" }, { "Ccedilla" }, { "Dcaron" }, { "Dcroat" }, { "Delta" }, { "Eacute" }, { "Ecaron" }, { "Ecircumflex" }, { "Edieresis" }, { "Edotaccent" }, { "Egrave" }, { "Emacron" }, { "Eogonek" }, { "Eth" }, { "Gbreve" }, { "Gcommaaccent" }, { "Iacute" }, { "Icircumflex" }, { "Idieresis" }, { "Idotaccent" }, { "Igrave" }, { "Imacron" }, { "Iogonek" }, { "Kcommaaccent" }, { "Lacute" }, { "Lcaron" }, { "Lcommaaccent" }, { "Nacute" }, { "Ncaron" }, { "Ncommaaccent" }, { "Ntilde" }, { "Oacute" }, { "Ocircumflex" }, { "Odieresis" }, { "Ograve" }, { "Ohungarumlaut" }, { "Omacron" }, { "Otilde" }, { "Racute" }, { "Rcaron" }, { "Rcommaaccent" }, { "Sacute" }, { "Scaron" }, { "Scedilla" }, { "Scommaaccent" }, { "Tcaron" }, { "Tcommaaccent" }, { "Thorn" }, { "Uacute" }, { "Ucircumflex" }, { "Udieresis" }, { "Ugrave" }, { "Uhungarumlaut" }, { "Umacron" }, { "Uogonek" }, { "Uring" }, { "Yacute" }, { "Ydieresis" }, { "Zacute" }, { "Zcaron" }, { "Zdotaccent" }, { "aacute" }, { "abreve" }, { "acircumflex" }, { "adieresis" }, { "agrave" }, { "amacron" }, { "aogonek" }, { "aring" }, { "atilde" }, { "brokenbar" }, { "cacute" }, { "ccaron" }, { "ccedilla" }, { "commaaccent" }, { "copyright" }, { "dcaron" }, { "dcroat" }, { "degree" }, { "divide" }, { "eacute" }, { "ecaron" }, { "ecircumflex" }, { "edieresis" }, { "edotaccent" }, { "egrave" }, { "emacron" }, { "eogonek" }, { "eth" }, { "gbreve" }, { "gcommaaccent" }, { "greaterequal" }, { "iacute" }, { "icircumflex" }, { "idieresis" }, { "igrave" }, { "imacron" }, { "iogonek" }, { "kcommaaccent" }, { "lacute" }, { "lcaron" }, { "lcommaaccent" }, { "lessequal" }, { "logicalnot" }, { "lozenge" }, { "minus" }, { "mu" }, { "multiply" }, { "nacute" }, { "ncaron" }, { "ncommaaccent" }, { "notequal" }, { "ntilde" }, { "oacute" }, { "ocircumflex" }, { "odieresis" }, { "ograve" }, { "ohungarumlaut" }, { "omacron" }, { "onehalf" }, { "onequarter" }, { "onesuperior" }, { "otilde" }, { "partialdiff" }, { "plusminus" }, { "racute" }, { "radical" }, { "rcaron" }, { "rcommaaccent" }, { "registered" }, { "sacute" }, { "scaron" }, { "scedilla" }, { "scommaaccent" }, { "summation" }, { "tcaron" }, { "tcommaaccent" }, { "thorn" }, { "threequarters" }, { "threesuperior" }, { "trademark" }, { "twosuperior" }, { "uacute" }, { "ucircumflex" }, { "udieresis" }, { "ugrave" }, { "uhungarumlaut" }, { "umacron" }, { "uogonek" }, { "uring" }, { "yacute" }, { "ydieresis" }, { "zacute" }, { "zcaron" }, { "zdotaccent" } }; void PSGLEDevice::dochar(int font, int cc) { read_psfont(); if (font_get_encoding(font)>2) { my_char(font,cc); return; } if (d_ps_this_font!=font || d_ps_this_size!=g.fontsz) { if (g.fontsz<0.00001) { gprint("Font size is zero, error ********* \n"); return; } char *s = font_getname(font); for (i=0;;i++) { if (psf[i].sname==NULL) break; dbg printf("font match {%s} {%s} \n",s,psf[i].sname); if (str_i_equals(psf[i].sname,s)) break; } if (psf[i].sname==NULL) { my_char(font,cc); return; } d_ps_this_font = font; d_ps_this_size = g.fontsz; out() << g.fontsz << " /" << psf[i].lname << " f" << endl; } if (cc >= 256) { if (cc <= 420) { /* FIXME: support g.inpath for these glyphs */ out() << "/" << ps_glyph_name_map[cc-256].name << " glyphshow" << endl; } } else { if (isalnum(cc) && cc < 127) { out() << "(" << (char)cc << ")"; } else { char temp[50]; sprintf(temp,"(\\%o)",cc); out() << temp; } if (g.inpath) { out() << " ps" << endl; } else { out() << " s" << endl; } } } void PSGLEDevice::resetfont() { d_ps_this_font = 0; d_ps_this_size = 0; } void PSGLEDevice::read_psfont(void) { /* add aditional ps fonts, e.g. pstr = TimesRoman */ static int init_done; FILE *fptr; char *s; char inbuff[200]; if (init_done) return; init_done = true; /* Find last used psf */ for (i=0;;i++) if (psf[i].sname==NULL) break; string fname = fontdir("psfont.dat"); fptr = fopen(fname.c_str(), "r"); if (fptr == 0) return; /* if not exists then don't bother */ for (fgets(inbuff,200,fptr);!feof(fptr);fgets(inbuff,200,fptr)) { s = strchr(inbuff,'!'); if (s!=NULL) *s=0; s = strtok(inbuff," \t,\n"); if (s!=NULL) if (*s!='\n') { psf[i].sname = sdup(s); s = strtok(0," \t,\n"); psf[i].lname = sdup(s); i++; } } psf[i].sname = NULL; psf[i].lname = NULL; } void PSGLEDevice::displayGeometry(double width, double height, int *gsPixelWidth, int *gsPixelHeight, int *gsPixelRes) { #if defined(__UNIX__) && defined(ENABLE_GS_PREVIEW) Display *dpy = XOpenDisplay((char *) NULL); if (dpy == NULL){ perror("Unable to open Display!"); exit(1); } int screenNo = DefaultScreen(dpy); int dpyPixelWidth = DisplayWidth(dpy, screenNo); int dpyPixelHeight = DisplayHeight(dpy, screenNo); XCloseDisplay(dpy); double dpyXbyY = (double) dpyPixelWidth / (double) dpyPixelHeight; double gleXbyY = width / height; if (gleXbyY > dpyXbyY) { *gsPixelWidth = (int) (0.9 * dpyPixelWidth); *gsPixelRes = (int) (*gsPixelWidth/(width/CM_PER_INCH)); *gsPixelHeight = (int) ( *gsPixelWidth / gleXbyY); } else { *gsPixelHeight = (int) (0.9 * dpyPixelHeight); *gsPixelRes = (int) (*gsPixelHeight/(height/CM_PER_INCH)); *gsPixelWidth = (int) (*gsPixelHeight * gleXbyY); } #endif #if defined(__WIN32__) && defined(ENABLE_GS_PREVIEW) // Not yet implemented #endif #if defined(__OS2__) && defined(ENABLE_GS_PREVIEW) // Not yet implemented #endif } int PSGLEDevice::getDeviceType() { return m_IsEps ? GLE_DEVICE_EPS : GLE_DEVICE_PS; } void PSGLEDevice::psFileASCIILine(const char* prefix, int cnt, char ch, bool nl) { out() << prefix; for (int i = 0; i < cnt; i++) { out() << (char)ch; } if (nl) out() << endl; } void PSGLEDevice::bitmap(GLEBitmap* bitmap, GLEPoint* pos, GLEPoint* scale, int type) { /* Store current box */ GLERectangle save_box; g_get_bounds(&save_box); /* Generate header in postrscript output */ if (type != BITMAP_TYPE_USER) { string str = string("%% BEGIN image: ") + bitmap->getFName() + "\n"; psFileASCIILine("%%", str.length()-3, '=', true); g_devcmd((char*)str.c_str()); psFileASCIILine("%%", str.length()-3, '=', true); } g_devcmd("/GLESTATE save def \n"); g_devcmd("gsave\n"); g_devcmd("0 setgray 0 setlinecap 0 setlinewidth 0 setlinejoin\n"); g_devcmd("10 setmiterlimit [] 0 setdash\n"); g_gsave(); /* Set options */ bitmap->setCompress(0.0); bitmap->setASCII85(1); /* Get current position */ g_scale(scale->getX(), scale->getY()); g_translate(pos->getX(), pos->getY()); /* Convert bitmap to postscript */ bitmap->toPS(m_Out); bitmap->close(); /* Footer */ g_devcmd("grestore GLESTATE restore \n"); g_grestore(); if (type != BITMAP_TYPE_USER) { string str = string("%% END image: ") + bitmap->getFName() + "\n"; psFileASCIILine("%%", str.length()-3, '=', true); g_devcmd((char*)str.c_str()); psFileASCIILine("%%", str.length()-3, '=', true); } g_set_bounds(&save_box); } void PSGLEDevice::startRecording() { if (m_OutputFile != NULL) { delete m_OutputFile; m_OutputFile = NULL; } if (m_OutputBuffer != NULL) { delete m_OutputBuffer; } m_OutputBuffer = new ostringstream(); m_Out = m_OutputBuffer; } void PSGLEDevice::getRecordedBytes(string* result) { *result = m_OutputBuffer->str(); } gle-graphics-4.2.4c/src/gle/run.cpp0000664000000000000000000021355411720262226015611 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ #include "all.h" #include "mem_limits.h" #include "token.h" #include "core.h" #include "glearray.h" #include "polish.h" #include "pass.h" #include "op_def.h" #include "var.h" #include "cutils.h" #include "gprint.h" #include "texinterface.h" #include "keyword.h" #include "run.h" #include "fn.h" #include "file_io.h" #include "sub.h" #include "gle-interface/gle-interface.h" void name_get2(char *n,double *x1,double *y1,double *x2,double *y2) throw(ParserError); #define GRAPHDEF extern #include "graph.h" extern OPKEY op_begin; extern GLESubMap g_Subroutines; extern int **gpcode; /* gpcode is a pointer to an array of poiter to int */ extern int *gplen; /* gpcode is a pointer to an array of int */ string get_b_name(int jj) { for (int i=0; op_begin[i].typ!=0; i++) { if( op_begin[i].idx == jj){ return string(op_begin[i].name); } } return "unknown"; } void text_def(uchar *ss); void run_bigfile(char *ss); void begin_config(const char* block, int *pln, int *pcode, int *cp); void begin_tex_preamble(int *pln, int *pcode, int *cp); void begin_tex(GLERun* run, int *pln, int *pcode, int *cp); void begin_surface(int *pln, int *pcode, int *cp) throw(ParserError); void begin_letz(int *pln, int *pcode, int *cp) throw(ParserError); void begin_fitz(int *pln, int *pcode, int *cp) throw(ParserError); void begin_contour(int *pln, int *pcode, int *cp) throw(ParserError); // void begin_fitls(int *pln, int *pcode, int *cp) throw(ParserError); class GLEBox { public: GLEBox(); void setFill(const GLERC& fill); void setRound(double round); void draw(GLERun* run, double x1, double y1, double x2, double y2); inline void setStroke(bool stroke) { m_HasStroke = stroke; } inline bool hasStroke() const { return m_HasStroke; } inline void setReverse(bool reverse) { m_HasReverse = reverse; } inline bool hasReverse() const { return m_HasReverse; } inline bool isFilled() const { return !m_Fill->isTransparent(); } inline GLERC getFill() const { return m_Fill; } inline bool isRound() const { return m_IsRound; } inline double getRound() const { return m_Round; } inline void setNamePtr(const char* name) { m_Name = name; } inline bool hasName() const { return m_Name != NULL; } inline const char* getName() const { return m_Name; } inline void setAdd(double add) { m_Add = add; } inline double getAdd() const { return m_Add; } protected: const char* m_Name; // Should be replaced by string* later on bool m_HasStroke; bool m_HasReverse; double m_Add; bool m_IsRound; double m_Round; GLERC m_Fill; }; class GLEStoredBox : public GLEBox { public: GLEStoredBox(); void setName(const char* name); inline bool hasName() const { return m_HasName; } inline const string& getName() const { return m_Name; } inline bool isSecondPass() const { return m_SecondPass; } inline void setSecondPass(bool second) { m_SecondPass = second; } inline GLEDevice* getDevice() { return m_Device; } inline void setDevice(GLEDevice* dev) { m_Device = dev; } inline GLEObjectRepresention* getObjectRep() const { return m_Object.get(); } inline bool hasObjectRep() { return !m_Object.isNull(); } inline void setObjectRep(GLEObjectRepresention* obj) { m_Object = obj; } inline GLERectangle* getSaveBounds() { return &m_SaveBounds; } void setOrigin(double x0, double y0) { m_Orig.setXY(x0, y0); } const GLEPoint& getOrigin() { return m_Orig; } private: GLERectangle m_SaveBounds; GLEPoint m_Orig; string m_Name; bool m_HasName; bool m_SecondPass; GLEDevice* m_Device; GLERC m_Object; }; class GLEBoxStack { protected: static GLEBoxStack m_Instance; vector m_Boxes; public: static inline GLEBoxStack* getInstance() { return &m_Instance; } inline int size() { return m_Boxes.size(); } inline void removeBox() { m_Boxes.pop_back(); } inline GLEStoredBox* lastBox() { return &m_Boxes.back(); } inline GLEStoredBox* newBox() { m_Boxes.push_back(GLEStoredBox()); return lastBox(); } }; GLEBoxStack GLEBoxStack::m_Instance; GLEStoredBox* box_start(void); extern int this_line; extern int trace_on; static int path_clip[4],path_stroke[4]; static GLERC path_fill[4]; static GLERC path_fill_backup[4]; static double path_x[4],path_y[4]; static int npath; #define true (!false) #define false 0 int done_open = false; class GLEFile { protected: bool m_ReadWrite; FILE* m_Output; StreamTokenizer* m_Input; string m_buffer; string m_FileName; public: GLEFile(); ~GLEFile(); void close(); void open(const char* fname) throw(ParserError); bool eof() throw(ParserError); char* getToken() throw(ParserError); char* readLine() throw(ParserError); void gotoNewLine() throw(ParserError); void resetLang(); void setLangChars(int type, const char* str); inline void setCommentChars(const char* str) { setLangChars(0, str); } inline void setSpaceTokens(const char* str) { setLangChars(1, str); } inline void setSingleCharTokens(const char* str) { setLangChars(2, str); } inline bool isRead() { return m_ReadWrite; } inline void setRdWr(bool rd) { m_ReadWrite = rd; } inline FILE* getOutput() { return m_Output; } }; vector g_Files; int f_getchan(void); void f_readahead(int chn); int f_testchan(int chn) throw(ParserError); void siffree(char **s); void f_getline(int chn); char *f_gettok(int chn); static int chn; int f_eof(int chn) throw(ParserError); char *f_getnext(int chn); void f_create_chan(int var, const char* fname, int rd_wr); void f_close_chan(int idx) throw(ParserError); /*---------------------------------------------------------------------------*/ /* pos= Offset to find the data */ /* idx= For switches, which can only have one value. */ /* The pos is the order the items will be placed in the pcode */ /* */ /* Switches int placed in directly, 1 present, 0 not present */ /* expressions LONG* pointed to, 0 if not present. */ /* color/fill LONG* Pointer to exp 0 if not present. */ /* marker LONG* Pointer to exp 0 if not present. */ /* lstyle LONG* Pointer to exp 0 if not present. */ /* font int* Pointer to string expression. */ /*---------------------------------------------------------------------------*/ extern char *mainkey[]; extern int gle_debug; int can_fillpath = false; vector g_drobj; #define readval(x) eval(pcode,&cp,&x,&ostr,&otyp) #define readxy(x,y) {eval(pcode,&cp,&x,&ostr,&otyp);eval(pcode,&cp,&y,&ostr,&otyp);} #define readstr(s) {eval(pcode,&cp,&x,&ostr,&otyp); s = ostr;} #define readlong(i) i = *(pcode+cp++) #define readvalp(x,p) {zzcp=0; eval(p,&zzcp,&x,&ostr,&otyp);} #define PCODE_UNKNOWN_COMMAND 1 void byte_code_error(int err) throw(ParserError) { char str[50]; TokenizerPos pos; pos.setColumn(-1); sprintf(str, "byte code error (code = %d)", err); ParserError err_exp(str, pos, NULL); throw err_exp; } void clear_run() { char ss[500]; npath = 0; done_open = false; g_get_type(ss); if (strstr(ss,"FILLPATH")!=NULL) can_fillpath = true; else can_fillpath = false; g_drobj.clear(); } int gle_is_open() { return done_open; } void error_before_drawing_cmds(const char* name) throw(ParserError) { // NOTE: this can be broken by GLEGlobalSource::performUpdates(), which puts includes at front string str = name; str += " command must appear before drawing commands"; g_throw_parser_error(str); } bool isSingleInstructionLine(int line, int* opcode) { int cp = 0; int plen = gplen[line]; if (plen <= 2) { // cout << "line: " << line << " opcode comment" << endl; *opcode = GLE_KW_COMMENT; return true; } int cmd_plen = gpcode[line][cp++]; *opcode = gpcode[line][cp++]; // cout << "line: " << line << " opcode: " << *opcode << endl; return cmd_plen >= plen; } bool tryHandleChangedPropertiesPrevSet(GLEGlobalSource* source, vector& changed, int line, GLEPropertyStore* props) { const string& code = source->getLineCode(line-1); GLEParser* parser = get_global_parser(); Tokenizer* tokens = parser->getTokens(); parser->setString(code.c_str()); ostringstream ss; ss << "set"; try { tokens->ensure_next_token_i("SET"); while (tokens->has_more_tokens()) { string set_opt = tokens->next_token(); bool is_changed = false; for (vector::size_type i = 0; i < changed.size(); i++) { GLEProperty* prop = changed[i]; const char* prop_name = prop->getSetCommandName(); if (prop_name != NULL && str_i_equals(set_opt, prop_name)) { is_changed = true; prop->createSetCommandGLECode(ss, props->getPropertyValue(prop)); changed.erase(changed.begin()+i); break; } } const string& set_value = tokens->next_multilevel_token(); if (!is_changed) { ss << " " << set_opt << " " << set_value; } } } catch (ParserError err) { return false; } for (vector::size_type i = 0; i < changed.size(); i++) { GLEProperty* prop = changed[i]; prop->createSetCommandGLECode(ss, props->getPropertyValue(prop)); } source->updateLine(line-1, ss.str()); return true; } void tryDeleteAmove(GLEGlobalSource* source, int line) { // FIXME: inconsistency pcode first line = 1, source file first line = 0 int opcode; int next_line = line + 2; bool has_next_amove = false; /* skip comments and set commands */ while (next_line < source->getNbLines() && isSingleInstructionLine(next_line, &opcode) && (opcode == GLE_KW_COMMENT || opcode == GLE_KW_SET)) { next_line++; } if (next_line < source->getNbLines() && isSingleInstructionLine(next_line, &opcode) && opcode == GLE_KW_AMOVE) { has_next_amove = true; } /* if has subsequent amove, then OK to delete previous one */ if (has_next_amove) { if (line >= 1 && isSingleInstructionLine(line, &opcode) && opcode == GLE_KW_AMOVE) { source->scheduleDeleteLine(line-1); } } } void handleAddAmove(GLEGlobalSource* source, GLEPoint& amove) { // FIXME: inconsistency pcode first line = 1, source file first line = 0 int opcode = -1; int line = g_get_error_line(); int prev_line = line - 1; /* Check if not already at this point */ GLEPoint crpt; g_get_xy(&crpt); if (crpt.approx(amove)) { return; } /* round point if close to zero */ if (fabs(amove.getX()) < 1e-10) { amove.setX(0.0); } if (fabs(amove.getY()) < 1e-10) { amove.setY(0.0); } /* create command */ ostringstream code; code << "amove " << amove.getX() << " " << amove.getY(); /* skip comments and empty lines */ while (prev_line > 1 && isSingleInstructionLine(prev_line, &opcode) && opcode == GLE_KW_COMMENT) { prev_line--; } /* previous command is amove command */ if (prev_line >= 1 && isSingleInstructionLine(prev_line, &opcode) && opcode == GLE_KW_AMOVE) { source->updateLine(prev_line-1, code.str()); } else { source->scheduleInsertLine(line-1, code.str()); } } void handleChangedProperties(GLEGlobalSource* source, GLEPropertyStore* props) { // FIXME: inconsistency pcode first line = 1, source file first line = 0 vector changed; GLEPropertyStoreModel* model = props->getModel(); for (int i = 0; i < model->getNumberOfProperties(); i++) { GLEProperty* prop = model->getProperty(i); if (!prop->isEqualToState(props)) { prop->updateState(props); changed.push_back(prop); } } if (changed.size() != 0) { int opcode = -1; int line = g_get_error_line(); int prev_line = line - 1; /* skip comments and empty lines */ while (prev_line > 1 && isSingleInstructionLine(prev_line, &opcode) && opcode == GLE_KW_AMOVE) { prev_line--; } /* previous command is set command */ bool do_insert = false; if (prev_line >= 1 && isSingleInstructionLine(prev_line, &opcode) && opcode == GLE_KW_SET) { if (!tryHandleChangedPropertiesPrevSet(source, changed, prev_line, props)) { do_insert = true; } } else { do_insert = true; } if (do_insert) { ostringstream ss; ss << "set"; for (vector::size_type i = 0; i < changed.size(); i++) { GLEProperty* prop = changed[i]; prop->createSetCommandGLECode(ss, props->getPropertyValue(prop)); } source->scheduleInsertLine(prev_line, ss.str()); } } } void handleNewDrawObject(GLEDrawObject* obj, bool mkdrobjs, GLEPoint* orig = NULL) { if (!mkdrobjs) { obj->draw(); } else { GLEInterface* iface = GLEGetInterfacePointer(); GLEScript* script = iface->getScript(); GLEGlobalSource* source = script->getSource(); if (iface->isCommitMode()) { GLEDrawObject* mobj = script->nextObject(); if (mobj != NULL && mobj->getType() == obj->getType()) { GLEDrawObject* nobj = mobj->deepClone(); GLEPropertyStore* props = nobj->getProperties(); nobj->applyTransformation(false); handleChangedProperties(source, props); if (!obj->approx(nobj)) { GLEPoint amove; if (nobj->needsAMove(amove)) { handleAddAmove(source, amove); } if (orig != NULL) { orig->set(amove); } if (mobj->modified()) { string code; nobj->createGLECode(code); int line = g_get_error_line()-1; source->updateLine(line, code); } } if (mobj->hasFlag(GDO_FLAG_DELETED)) { string code; int line = g_get_error_line()-1; source->updateLine(line, code); source->scheduleDeleteLine(line); tryDeleteAmove(source, line); } else { nobj->updateBoundingBox(); } delete nobj; } } else { GLEDrawObject* nobj = obj->deepClone(); nobj->initProperties(iface); nobj->applyTransformation(true); script->addObject(nobj); obj->updateBoundingBox(); } } } GLERun::GLERun(GLEScript* script, GLEFileLocation* outfile) { m_Script = script; m_OutFile = outfile; m_Vars = getVarsInstance(); m_CrObj = new GLEObjectRepresention(); m_blockTypes = 0; for (int i = 0; i < GLE_KW_NB; i++) { m_AllowBeforeSize[i] = false; } allowBeforeSize(GLE_KW_ASSIGNMENT); allowBeforeSize(GLE_KW_BITMAP_INFO); allowBeforeSize(GLE_KW_BLANK); allowBeforeSize(GLE_KW_CALL); allowBeforeSize(GLE_KW_COMMENT); allowBeforeSize(GLE_KW_COMPATIBILITY); allowBeforeSize(GLE_KW_DECLARESUB); allowBeforeSize(GLE_KW_DEFAULT); allowBeforeSize(GLE_KW_DEFCOLOR); allowBeforeSize(GLE_KW_DEFINE); allowBeforeSize(GLE_KW_ELSE); allowBeforeSize(GLE_KW_FCLOSE); allowBeforeSize(GLE_KW_FGETLINE); allowBeforeSize(GLE_KW_FOPEN); allowBeforeSize(GLE_KW_FOR); allowBeforeSize(GLE_KW_FREAD); allowBeforeSize(GLE_KW_FREADLN); allowBeforeSize(GLE_KW_FTOKENIZER); allowBeforeSize(GLE_KW_FWRITE); allowBeforeSize(GLE_KW_FWRITELN); allowBeforeSize(GLE_KW_IF); allowBeforeSize(GLE_KW_INCLUDE); allowBeforeSize(GLE_KW_MARGINS); allowBeforeSize(GLE_KW_NEXT); allowBeforeSize(GLE_KW_ORIENTATION); allowBeforeSize(GLE_KW_PAPERSIZE); allowBeforeSize(GLE_KW_PRINT); allowBeforeSize(GLE_KW_PSBBTWEAK); allowBeforeSize(GLE_KW_PSCOMMENT); allowBeforeSize(GLE_KW_RETURN); allowBeforeSize(GLE_KW_SIZE); allowBeforeSize(GLE_KW_SLEEP); allowBeforeSize(GLE_KW_SUB); allowBeforeSize(GLE_KW_UNTIL); allowBeforeSize(GLE_KW_WHILE); } GLERun::~GLERun() { } void GLERun::setDeviceIsOpen(bool open) { done_open = open; } void GLERun::setBlockTypes(GLEBlocks* blocks) { m_blockTypes = blocks; } GLEBlocks* GLERun::getBlockTypes() { return m_blockTypes; } void GLERun::do_pcode(GLESourceLine &sline, int *srclin, int *pcode, int plen, int *pend, bool& mkdrobjs) throw(ParserError) { /* srclin = The source line number */ /* pcode = a pointer to the pcode output buffer */ /* plne = a pointer to the length of the pcode output */ union {double d; int l; int ll[2];} both; int otyp,cp=*pend,i,zzcp; const char* ostr; string temp_str; double x,y,ox,oy,x1,y1,x2,y2,x3,y3,a1,a2,r,z,rx,ry; int t,j,jj,jj2,ptr,ptr_fill,mask_just,mask_nostroke,marrow; static char ss[255],ss2[80],ss1[90]; static bool jump_back = false; GLEPoint orig; GLERC colorBackup; *pend = 0; this_line = *srclin; while (cp < plen) { int cmd_plen = pcode[cp++]; int p = pcode[cp++]; // cout << "pcode = " << p << " cp = " << cp << " cmd_plen = " << cmd_plen << " plen = " << plen << " srclin = " << *srclin << endl; // cout << sline.getCode() << endl; if (!done_open) { // // list here all the commands that can come before SIZE // see keywords.cpp for more numbers // // NOTE: this can be broken by GLEGlobalSource::performUpdates(), which puts includes at front i = *(pcode + cp); if (!isAllowedBeforeSize(p) && !(p == GLE_KW_BEGIN && i == OP_BEGIN_OBJECT) && !(p == GLE_KW_BEGIN && i == 22) // begin config ) { g_open(getOutput(), getSource()->getLocation()->getName()); done_open = true; } } switch (p) { case 53: /* comment */ case 0: /* blank line */ break; case 65: // PSCOMMENT if (done_open) error_before_drawing_cmds("pscomment"); strcpy(ss,(char *) (pcode+cp)); /* readstr(ss); */ g_pscomment(ss); break; case 66: // BBTWEAK g_psbbtweak(); break; case 1: /* ALINE x y ARROW both | start | end */ readval(x); readval(y); dbg gprint("x=%f, y=%f \n",x,y); marrow = *(pcode + (cp++)); ptr = *(pcode + cp); /* curve angle1 angle2 d1 d2 */ if (ptr) { cp += ptr; readxy(x2, y2); readxy(x3, y3); g_arrowcurve(x, y, marrow, x2, y2, x3, y3); } else { g_get_xy(&ox,&oy); GLELineDO drawobj(ox, oy, x, y); drawobj.setArrow((GLEHasArrow)marrow); handleNewDrawObject(&drawobj, mkdrobjs); if (!mkdrobjs) g_arrowline(x,y,marrow,can_fillpath); } break; case 2: /* AMOVE */ readval(x); readval(y); g_move(x,y); break; case GLE_KW_ABOUND: readval(x); readval(y); g_update_bounds(x,y); break; case 73: /* ASETPOS */ readval(x); readval(y); g_set_pos(x,y); break; case 81: /* RSETPOS */ readval(x); readval(y); g_rset_pos(x,y); break; case 3: /* ARC */ readval(r); readxy(a1,a2); g_get_xy(&ox,&oy); // // -- get options center takes two arguments // // arrow is first marrow = *(pcode + (cp++)); // center is a type val 2 ptr = *(pcode + cp); /* cx,cy */ if (ptr) { readvalp(x,pcode + cp + ptr); ox+=x; } ptr = *(pcode + cp + 1); /* cx,cy */ if (ptr) { readvalp(y,pcode + cp + ptr); oy+=y; } if (mkdrobjs) { GLEArcDO drawobj(ox, oy, r, a1, a2); drawobj.setArrow((GLEHasArrow)marrow); handleNewDrawObject(&drawobj, mkdrobjs); } else { g_arc(r, a1, a2, ox, oy, marrow); } break; case 4: /* ARCTO */ readxy(x1,y1); readxy(x2,y2); readval(r); g_get_xy(&ox,&oy); g_arcto(x1+ox,y1+oy,x2+ox+x1,y2+oy+y1,r); break; case 51: /* Assignment var=exp */ readlong(jj); readval(x); if (otyp==1) var_set(jj,x); if (otyp==2) var_setstr(jj, (char*)ostr); break; case 5: /* BEGIN box | path | scale | rotate | EXTERNAL */ g_flush(); i = *(pcode + cp++); switch (i) { case 1: /* PATH stroke fill clip */ npath++; g_get_xy(&path_x[npath],&path_y[npath]); path_stroke[npath] = *(pcode + cp); ptr = *(pcode + ++cp); path_fill_backup[npath] = g_get_fill(); path_clip[npath] = *(pcode + cp + 1); if (!path_clip[npath]) { path_fill[npath] = g_get_fill(); } else { path_fill[npath] = g_get_fill_clear(); } if (ptr) { readvalp(z,pcode+cp+ptr); path_fill[npath] = color_from_double_encoding(z); } cp++; g_set_path(true); g_newpath(); break; case 2: /* BOX add, fill, nobox, name, round */ { g_drobj.push_back(mkdrobjs); GLEStoredBox* box = box_start(); ptr = *(pcode + cp); if (ptr) { readvalp(z, pcode+cp+ptr); box->setAdd(z); } ptr = *(pcode + ++cp); if (ptr) { readvalp(z,pcode+cp+ptr); box->setFill(color_from_double_encoding(z)); } if (*(pcode + ++cp)) { box->setStroke(false); } ptr = *(pcode + ++cp); if (ptr) { readvalp(z,pcode+cp+ptr); box->setRound(z); } ptr = *(pcode + ++cp); if (ptr) { readvalp(z,pcode+cp+ptr); box->setName(ostr); } if (box->isFilled() && !g_is_dummy_device()) { /* Draw over filled box, measure during first pass */ box->setDevice(g_set_dummy_device()); mkdrobjs = false; } } break; case 3: /* SCALE */ readxy(x,y); g_gsave(); g_scale(x,y); g_drobj.push_back(mkdrobjs); if (x != y) mkdrobjs = false; break; case 21: /* shear */ readxy(x,y); g_gsave(); g_shear(x,y); g_drobj.push_back(mkdrobjs); mkdrobjs = false; break; case 4: /* ROTATE */ readval(x); g_gsave(); g_rotate(x); g_drobj.push_back(mkdrobjs); mkdrobjs = false; break; case 5: /* TRANSLATE */ readval(x); readval(y); g_gsave(); g_translate(x,y); g_rmove(0.0,0.0); break; case 8: /* name */ { GLEStoredBox* box = box_start(); box->setStroke(false); readval(z); box->setName(ostr); ptr = *(pcode + cp); if (ptr) { readvalp(z, pcode+cp+ptr); box->setAdd(z); } } break; case 9: /* text */ z = 0; ptr = *(pcode + cp); /* read width of text box */ if (ptr) readvalp(z,pcode+cp+ptr); /* get justify of text box */ t = (int)*(pcode + cp+2); begin_text(srclin,pcode,&cp,z,t); break; case 18: /* tab (tabbing, table) */ begin_tab(srclin,pcode,&cp); break; case GLE_OPBEGIN_KEY: case GLE_OPBEGIN_GRAPH: case GLE_OPBEGIN_SURF: getBlockTypes()->getBlock(i)->beginExecuteBlock(sline, pcode, &cp); break; case 11: /* xaxis */ case 12: /* yaxis */ case 13: /* x2axis */ case 14: /* y2axis */ break; case 19: /* begin clip */ g_beginclip(); break; case 17: /* ORIGIN */ g_gsave(); g_get_xy(&x,&y); g_translate(x,y); g_move(0.0,0.0); break; case 22: /* config */ readval(z); begin_config(ostr,srclin,pcode,&cp); break; case 23: /* tex preamble */ begin_tex_preamble(srclin,pcode,&cp); break; case 25: /* letz */ begin_letz(srclin,pcode,&cp); break; case 26: /* fitz */ begin_fitz(srclin,pcode,&cp); break; case 27: /* fit */ // begin_fitls(srclin,pcode,&cp); break; case 28: /* contour */ begin_contour(srclin,pcode,&cp); break; case 29: /* tex */ begin_tex(this, srclin, pcode, &cp); break; case OP_BEGIN_OBJECT: readlong(jj); if (jj == 0) { /* dynamic object inside sub */ if (!done_open) { g_open(getOutput(), getSource()->getLocation()->getName()); done_open = true; } readlong(jj); readval(z); begin_object(ostr, getSubroutines()->get(jj)); } else { /* statical object - identical to sub */ readlong(jj); sub_get_startend(jj,&i,&j); *srclin = j; /* skip past the subroutine */ } break; case OP_BEGIN_LENGTH: readlong(jj); begin_length(jj); break; default: /* error */ g_throw_parser_error("illegal begin option code: ", i); break; } break; case 6: /* BEZIER */ readxy(x1,y1); readxy(x2,y2); readxy(x3,y3); g_bezier(x1,y1,x2,y2,x3,y3); break; case 7: /* BOX x y justify FILL fexp NAME string ROUND val NOSTROKE */ { GLEBox box; readval(x); readval(y); g_get_xy(&ox,&oy); x += ox; y += oy; mask_just = *(pcode + cp); g_dojust(&ox,&oy,&x,&y,mask_just); if (g_is_filled()) { box.setFill(g_get_fill()); } ptr = *(pcode + ++cp); if (ptr) { readvalp(z,pcode+cp+ptr); box.setFill(color_from_double_encoding(z)); } if (*(pcode + ++cp)) { box.setStroke(false); } if (*(pcode + ++cp)) { box.setReverse(true); } ptr = *(pcode + ++cp); if (ptr) { readvalp(z,pcode+cp+ptr); box.setRound(z); } ptr = *(pcode + ++cp); if (ptr) { readvalp(z,pcode+cp+ptr); box.setNamePtr(ostr); } box.draw(this, ox, oy, x, y); } break; case 52: /* CALL or @ */ readval(r); break; case 8: /* CIRCLE */ readval(r); g_get_xy(&orig); ox = orig.getX(); oy = orig.getY(); mask_just = *(pcode + cp++); x = ox + r; y = oy + r; g_dojust(&ox,&oy,&x,&y,mask_just); g_move(ox,oy); mask_nostroke = *(pcode + cp++); colorBackup = g_get_fill(); ptr_fill = *(pcode + cp); if (ptr_fill) { readvalp(z,pcode + cp + ptr_fill); g_set_fill(color_from_double_encoding(z)); } if (mkdrobjs) { GLEEllipseDO drawobj(ox, oy, r); handleNewDrawObject(&drawobj, mkdrobjs, &orig); } else { if (g_is_filled()) g_circle_fill(r); if (!mask_nostroke) g_circle_stroke(r); } g_set_fill(colorBackup); g_move(orig); break; case 70: /* ELLIPSE */ readval(rx); //x radius readval(ry); //y radius g_get_xy(&orig); ox = orig.getX(); oy = orig.getY(); mask_just = *(pcode + cp++); x = ox + rx; y = oy + ry; g_dojust(&ox,&oy,&x,&y,mask_just); g_move(ox,oy); colorBackup = g_get_fill(); mask_nostroke = *(pcode + cp++); ptr_fill = *(pcode + cp); if (ptr_fill) { readvalp(z,pcode + cp + ptr_fill); g_set_fill(color_from_double_encoding(z)); } if (mkdrobjs) { GLEEllipseDO drawobj(ox, oy, rx, ry); handleNewDrawObject(&drawobj, mkdrobjs, &orig); } else { if (g_is_filled()) g_ellipse_fill(rx,ry); if (!mask_nostroke) g_ellipse_stroke(rx,ry); } g_set_fill(colorBackup); g_move(orig); break; case 71: /* ELLIPTICAL_ARC */ readxy(rx,ry); readxy(a1,a2); g_get_xy(&ox,&oy); // // -- get options center takes two arguments // // arrow is first marrow = *(pcode + (cp++)); // center is a type val 2 ptr = *(pcode + cp); /* cx,cy */ if (ptr) { readvalp(x,pcode + cp + ptr); ox+=x; } ptr = *(pcode + cp + 1); /* cx,cy */ if (ptr) { readvalp(y,pcode + cp + ptr); oy+=y; } g_elliptical_arc(rx, ry, a1, a2, ox, oy, marrow); break; case 72: /* ELLIPTICAL_NARC */ readxy(rx,ry); readxy(a1,a2); g_get_xy(&ox,&oy); // // -- get options center takes two arguments // // arrow is first marrow = *(pcode + (cp++)); // center is a type val 2 ptr = *(pcode + cp); /* cx,cy */ if (ptr) { readvalp(x,pcode + cp + ptr); ox+=x; } ptr = *(pcode + cp + 1); /* cx,cy */ if (ptr) { readvalp(y,pcode + cp + ptr); oy+=y; } g_elliptical_narc(rx, ry, a1, a2, ox, oy, marrow); break; case 9: /* CLOSEPATH */ g_closepath(); break; case 10: /* CURVE x y x y ... change to BEGIN CURVE ... END CURVE */ g_curve(pcode+cp); break; case 11: /* DEFINE MARKER name subname */ break; case 12: /* DFONT */ readval(x); g_dfont(ostr); break; case 14: /* END */ readlong(jj); switch (jj) { case 1: /* end path (stroke,fill,clip) */ if (!path_fill[npath]->isTransparent()) { g_set_fill(path_fill[npath]); g_fill(); } if (path_stroke[npath] == static_cast(true)) g_stroke(); if (path_clip[npath] == static_cast(true)) g_clip(); if (npath==0) { g_throw_parser_error("too many end path's"); break; } g_move(path_x[npath],path_y[npath]); g_set_path(false); g_set_fill(path_fill_backup[npath]); npath--; break; case 2: /* end box */ cp++; readlong(jj); /* jump to line */ if (!last_box()->isSecondPass() && g_drobj.size() != 0) { mkdrobjs = g_drobj.back(); g_drobj.pop_back(); } if (box_end()) { *pend = 0; *srclin = jj; } break; case 3: /* end scale */ case 21: /* end shear */ case 4: /* end rotate */ if (g_drobj.size() != 0) { mkdrobjs = g_drobj.back(); g_drobj.pop_back(); } g_grestore(); break; case 5: /* end translate */ g_grestore(); break; case 6: /* end if */ /* do nothing, all done elsewhere I think?? */ break; case 8: /* end name */ box_end(); break; case 19: /* clip */ g_endclip(); break; case 18: /* tab */ case 9: /* text */ break; case 17: /* end origin */ g_grestore(); break; case OP_BEGIN_OBJECT: cp++; end_object(); break; case GLE_OPBEGIN_KEY: case GLE_OPBEGIN_GRAPH: case GLE_OPBEGIN_SURF: getBlockTypes()->getBlock(jj)->endExecuteBlock(); break; case OP_BEGIN_LENGTH: end_length(); break; default : get_global_parser()->get_block_type(jj, temp_str); g_throw_parser_error("invalid end of block type '", temp_str.c_str(), "'"); } break; case 15: /* FCLOSE */ readval(x); f_close_chan((int) x); break; case 16: /* FILL */ g_fill(); break; case 61 : /* fread CHAN a$ x */ case 62 : /* freadln */ { readlong(t); if (t!=49) gprint("FREAD, PCODE ERROR, %d cp %d plen %d\n",t,cp,plen); readlong(i); readlong(t); var_get(i,&x); chn = (int) x; chn = f_testchan(chn); if (chn == -1) break; GLEFile* file = g_Files[chn]; if (p == 61 && cp >= cmd_plen) { gprint("FREAD requires at least two parameters\n"); break; } while (cp < cmd_plen) { readlong(t); if (t!=49) gprint("FREAD2, PCODE ERROR, %d cp %d plen %d\n",t,cp,plen); readlong(i); /* variable number */ readlong(t); /* type of variable */ if (t==1) { x = atof(file->getToken()); var_set(i,x); } else { var_setstr(i,file->getToken()); } } if (p==62) file->gotoNewLine(); } break; case 63 : /* fwrite */ case 64 : /* fwriteln */ { readlong(t); readlong(t); readval(x); chn = f_testchan((int) x); if (chn == -1) break; GLEFile* file = g_Files[chn]; if (file->isRead()) { g_throw_parser_error("can't write to file opened in read mode"); } temp_str = ""; while (cp < cmd_plen) { readlong(t); if (t!=49) gprint("WRITE, PCODE ERROR, %d cp %d plen %d\n",t,cp,plen); readlong(t); if (t==1) { readval(x); sprintf(ss,"%g ",x); temp_str += ss; } else { readval(x); temp_str += ostr; } } if (p==64) temp_str += "\n"; fprintf(file->getOutput(),"%s",temp_str.c_str()); } break; case 17: /* FOPEN "a.a" inchan read|write */ readstr(temp_str); readlong(i); /* channel variable */ readlong(jj); /* 0 = read, 1 = write */ f_create_chan(i, temp_str.c_str(), jj); break; case 75 : /* fgetline */ { readval(x); chn = f_testchan((int) x); if (chn == -1) break; readlong(i); var_setstr(i, g_Files[chn]->readLine()); } break; case 76 : /* ftokenizer commenttoks spacetoks singlechartoks */ { readval(x); chn = f_testchan((int) x); if (chn == -1) break; GLEFile* file = g_Files[chn]; file->resetLang(); readval(x); file->setCommentChars(ostr); readval(x); file->setSpaceTokens(ostr); readval(x); file->setSingleCharTokens(ostr); } break; case 77: /* papersize */ if (done_open) error_before_drawing_cmds("papersize"); readlong(jj); if (jj == 1) { readlong(jj); g_set_pagesize(jj); } else { readxy(x2, y2); g_set_pagesize(x2, y2); } break; case 78: /* margins */ if (done_open) error_before_drawing_cmds("margins"); readxy(x2, y2); readxy(x3, y3); g_set_margins(x2, y2, x3, y3); break; case 79: /* orientation */ if (done_open) error_before_drawing_cmds("orientation"); readlong(jj); g_set_landscape(jj); break; case 18: /* FOR v,exp,exp,op,exp */ readlong(jj); /* variable name */ readlong(jj2); /* jump address */ readval(x); /* to value */ ptr = *(pcode + cp); /* step value */ if (ptr) { readvalp(z, pcode + cp + ptr); } else { z = 1; } var_get(jj, &y); if (jump_back) { jump_back = false; /* increment loop variable y by step value z */ y += z; var_set(jj, y); } if ((z >= 0 && y > x) || (z < 0 && y < x)) { /* jump to line after next */ *srclin = jj2; } break; case 19: /* GOTO */ case 20: /* GSAVE */ g_gsave(); break; case 54: /* GRESTORE */ g_grestore(); break; case 21: /* ICON */ break; case 22: /* IF EXP */ readval(x); readlong(jj); /* jump to line */ readlong(jj2); /* jump pcode offset */ if (x == 0) { *pend = jj2; *srclin = jj-1; return; } break; case 23: /* INCLUDE (done in pass, already included) */ break; case 24: /* INPUT */ break; case 25: /* JOIN str1,type,str2 */ { readval(z); strcpy(ss1,ostr); readlong(jj); readval(z); strcpy(ss2,ostr); ptr = *(pcode + cp); /* curve angle1 angle2 d1 d2 */ if (ptr) { cp += ptr; readxy(x2, y2); readxy(x3, y3); name_join(ss1, ss2, (int)jj, x2, y2, x3, y3); } else { name_join(ss1, ss2, (int)jj, 0, 0, 0, 0); } } break; case 26: /* MARKER */ readval(x); memcpy(&both.d,&x,sizeof(x)); jj = both.l; g_get_hei(&z); y = 1; if (*(pcode+cp)!=0) readval(y); y = y * z; g_marker((int) both.l,y); break; case 27: /* MOVE name */ { readval(z); GLEPoint pt; name_to_point(ostr, &pt); g_move(pt); break; } case 28: /* NARC */ readval(r); readxy(a1,a2); g_get_xy(&ox,&oy); // // -- get options center takes two arguments // // arrow is first marrow = *(pcode + (cp++)); // center is a type val 2 shifts the center position ptr = *(pcode + cp); /* cx,cy */ if (ptr) { readvalp(x,pcode + cp + ptr); ox+=x; } ptr = *(pcode + cp + 1); /* cx,cy */ if (ptr) { readvalp(y,pcode + cp + ptr); oy+=y; } g_narc(r, a1, a2, ox, oy, marrow); break; case 29: /* NEWPATH */ g_newpath(); break; case 13: /* ELSE */ readlong(jj); /* jump to line */ readlong(jj2); /* jump pcode offset */ *pend = jj2; *srclin = jj-1; // do not execute any further commands on this line: return! return; case 30: /* NEXT */ readlong(jj); /* jump to line */ readlong(jj2); /* jump pcode offset */ *pend = jj2; *srclin = jj-1; jump_back = true; break; case 31: /* PIE ,, not implemented yet */ break; case 58: /* bigfile "filename" */ printf("BIGFILE no longer supported, sorry. use include"); // readstr(ss); // gle_strlwr(ss); /* bit of a kludge but ... */ // run_bigfile(ss); break; case 55: /* Postscript filename x y */ readstr(temp_str); readxy(x1,y1); g_postscript((char*)temp_str.c_str(), x1, y1); break; case 67: /* TIFF filename x y */ readstr(temp_str); readxy(x1,y1); g_bitmap(temp_str, x1, y1, BITMAP_TYPE_TIFF); break; case 68: /* BITMAP file width height [type colors compress dpi greyscale resize] */ { readstr(temp_str); readxy(x1,y1); // The options type, compress, dpi, greyscale, ... // will be implemented in the near future (Jan Struyf 01//05/05). cp += 5; int bm_type = 0; ptr = *(pcode + cp); /* type */ if (ptr) { readvalp(z, pcode + cp + ptr); bm_type = g_bitmap_string_to_type(ostr); } g_bitmap(temp_str, x1, y1, bm_type); } break; case 69: /* BITMAP_INFO file width, height [type] */ { readstr(temp_str); readlong(jj); readlong(jj2); int bm_type = 0; ptr = *(pcode + cp); /* type */ if (ptr) { readvalp(z, pcode + cp + ptr); bm_type = g_bitmap_string_to_type(ostr); } g_bitmap_info(temp_str, jj, jj2, bm_type); } break; case GLE_KW_COLORMAP: { GLEColorMap map; readval(x); map.setFunction(ostr); readxy(x1, y1); map.setXRange(x1, y1); readxy(x1, y1); map.setYRange(x1, y1); readxy(x1, y1); map.setWidth((int)floor(x1+0.5)); map.setHeight((int)floor(y1+0.5)); readxy(x1, y1); ptr = *(pcode + cp); /* color */ if (ptr) { map.setColor(true); } ptr = *(pcode + ++cp); /* palette */ if (ptr) { readvalp(z, pcode + cp + ptr); temp_str = ostr; // because palette can be subroutine name! str_to_uppercase(temp_str); map.setPalette(temp_str.c_str()); } g_get_xy(&ox,&oy); map.draw(ox, oy, x1, y1); } break; case 33: /* RBEZIER */ readxy(x1,y1); readxy(x2,y2); readxy(x3,y3); g_get_xy(&ox,&oy); x1 += ox; x2 += ox; x3 += ox; y1 += oy; y2 += oy; y3 += oy; g_bezier(x1,y1,x2,y2,x3,y3); break; case 34: /* REGION */ break; case 50: /* RETURN exp */ readval(x); if (otyp == 1) { sub_set_return(x); } else { sub_set_return_str(ostr); } readlong(jj); /* jump to line */ *srclin = jj-1; break; case 35: /* REVERSE */ g_reverse(); break; case 36: /* RLINE */ readval(x); readval(y); g_get_xy(&ox,&oy); marrow = *(pcode + (cp++)); ptr = *(pcode + cp); /* curve angle1 angle2 d1 d2 */ if (ptr) { cp += ptr; readxy(x2, y2); readxy(x3, y3); g_arrowcurve(x+ox, y+oy, marrow, x2, y2, x3, y3); } else { GLELineDO drawobj(ox, oy, ox+x, oy+y); drawobj.setArrow((GLEHasArrow)marrow); handleNewDrawObject(&drawobj, mkdrobjs); if (!mkdrobjs) g_arrowline(ox+x, oy+y, marrow, can_fillpath); } break; case 37: /* RMOVE */ readval(x); readval(y); g_get_xy(&ox,&oy); g_move(x+ox,y+oy); break; case 38: /* ROTATE */ readval(x); g_rotate(x); break; case 39: /* SAVE name */ g_get_xy(&x,&y); readval(z); name_set(ostr,x,y,x,y); break; case 40: /* SCALE */ readxy(x,y); g_scale(x,y); break; case GLE_KW_SET: /* SET */ while (cp < cmd_plen) { cp++; int set_cmd = *(pcode+cp-1)-500; dbg gprint("set sub command %d \n",set_cmd); switch (set_cmd) { case 1: /* height */ readval(x); g_set_hei(x); break; case 2: /* font */ readval(x); memcpy(&both.l,&x,4); g_set_font(both.l); break; case 3: /* justify */ readval(x); memcpy(&both.l,&x,4); g_set_just(both.l); break; case 4: /* color */ readval(x); g_set_color(color_from_double_encoding(x)); break; case OP_SET_BACKGROUND: /* background */ readval(x); g_set_background(color_from_double_encoding(x)); break; case OP_SET_FILL: /* fill */ readval(x); g_set_fill(color_from_double_encoding(x)); break; case OP_SET_FILL_PATTERN: /* fill pattern */ readval(x); g_set_fill_pattern(color_from_double_encoding(x)); break; case 5: /* dashlen */ readval(x); g_set_line_styled(x); break; case 6: /* dash */ readval(x); i = (int) x; sprintf(ss,"%d",i); g_set_line_style(ss); break; case 7: /* lwidth */ readval(x); g_set_line_width(x); break; case 10: /* fontlwidth */ readval(x); g_set_font_width(x); break; case 8: /* join */ readlong(jj); g_set_line_join(jj); break; case 9: /* cap */ readlong(jj); g_set_line_cap(jj); break; case OP_SET_FILL_METHOD: readval(x); g_set_fill_method(ostr); break; case OP_SET_ARROW_STYLE: readval(x); g_set_arrow_style(ostr); break; case OP_SET_ARROW_TIP: readval(x); g_set_arrow_tip(ostr); break; case OP_SET_ARROW_SIZE: readval(x); g_set_arrow_size(x); break; case OP_SET_ARROW_ANGLE: readval(x); g_set_arrow_angle(x); break; case OP_SET_IMAGE_FORMAT: readval(x); g_set_pdf_image_format(ostr); break; case OP_SET_TEX_SCALE: readval(x); g_set_tex_scale(ostr); break; case OP_SET_TEX_LABELS: readval(x); g_set_tex_labels((int)floor(x+0.5)); break; case OP_SET_TITLE_SCALE: case OP_SET_ATITLE_SCALE: case OP_SET_ALABEL_SCALE: case OP_SET_TICKS_SCALE: case OP_SET_ATITLE_DIST: case OP_SET_ALABEL_DIST: readval(x); g_set_fconst(set_cmd-OP_SET_TITLE_SCALE+GLEC_TITLESCALE, x); break; default : gprint("Not a valid set sub command {%d} i=%d \n",*(pcode+i),i); } } break; case 42: /* size x y [box]*/ if (done_open) error_before_drawing_cmds("size"); readxy(x,y); g_set_size(x, y, *(pcode + cp++)); break; case 43: /* STROKE */ g_stroke(); break; case 44: /* SUB */ readlong(jj); sub_get_startend(jj,&i,&j); *srclin = j; /* skip past the subroutine */ break; case 45: /* TEXT */ temp_str = (char *) (pcode+cp); if (mkdrobjs) { g_get_xy(&orig); GLETextDO drawobj(orig, temp_str); handleNewDrawObject(&drawobj, mkdrobjs); } else { g_text(temp_str); } break; case 60: /* DEFMARKER */ break; case 56: /* DRAW */ readlong(jj); if (jj == 0) { // draw static object readval(z); string path = ostr; readval(z); string name = ostr; draw_object_static(path, name, pcode, &cp, mkdrobjs); } else { // draw dynamic object (as before?) readval(z); temp_str = ostr; ptr = *(pcode + ++cp); /* name */ if (ptr) { readvalp(z, pcode + cp + ptr); string obj_name = ostr; draw_object(temp_str, obj_name.c_str()); } else { draw_object(temp_str, NULL); } } break; case 59: /* TEXTDEF */ strcpy(ss,(char *) (pcode+cp)); text_def((unsigned char*) ss); break; case 46: /* TRANSLATE */ readxy(x,y); g_translate(x,y); break; case 47: /* UNTIL */ readval(x); readlong(jj); jump_back = false; if (x) *srclin = jj; break; case 48: /* WHILE */ readval(x); readlong(jj); jump_back = false; if (!x) *srclin = jj; break; case 32: /* PRINT */ case 49: /* WRITE */ g_get_xy(&orig); temp_str = ""; while (cp < cmd_plen) { readlong(t); if (t!=49 && t!=32) gprint("WRITE, PCODE ERROR, %d cp %d plen %d\n",t,cp,plen); readlong(t); if (t == 1) { readval(x); sprintf(ss,"%g ",x); temp_str += ss; } else { readval(x); temp_str += ostr; } } if (p == 49) { /* WRITE */ if (g_get_tex_labels()) { TeXInterface::getInstance()->draw(temp_str.c_str()); } else { if (mkdrobjs) { GLETextDO drawobj(orig, temp_str); handleNewDrawObject(&drawobj, mkdrobjs, &orig); } else { g_text(temp_str); } } g_move(orig); } else { /* PRINT */ g_message(temp_str); } break; case 74: /* TeX */ { x = 0.0; readval(z); GLERectangle box; TeXInterface::getInstance()->draw(ostr, &box); ptr = *(pcode + cp); /* add */ if (ptr) { readvalp(x, pcode + cp + ptr); } ptr = *(pcode + ++cp); /* name */ if (ptr) { readvalp(z, pcode + cp + ptr); box.getDimensions(&x1,&y1,&x2,&y2); x1 -= x; x2 += x; y1 -= x; y2 += x; name_set(ostr,x1,y1,x2,y2); } } break; case GLE_KW_RESTOREDEFAULTS: g_restore_defaults(); break; case GLE_KW_SLEEP: readval(x); GLESleep((int)floor(x*1000+0.5)); break; case GLE_KW_BLOCK_COMMAND: readlong(jj); /* block type */ getBlockTypes()->getBlock(jj)->executeLine(sline); break; default : byte_code_error(PCODE_UNKNOWN_COMMAND); } // begin can't be combined with other commands if (p == 5) break; cp = cmd_plen; } } GLEBox::GLEBox(): m_Name(NULL), m_HasStroke(true), m_HasReverse(false), m_Add(0.0), m_IsRound(false), m_Round(0.0), m_Fill(g_get_fill_clear()) { } void GLEBox::setFill(const GLERC& fill) { m_Fill = fill; } void GLEBox::setRound(double round) { if (round == 0.0) { m_IsRound = false; } else { m_IsRound = true; m_Round = round; } } void do_arcto(double x1, double y1, double x2, double y2, double r) { double ox, oy; g_get_xy(&ox,&oy); g_arcto(x1+ox,y1+oy,x2+ox+x1,y2+oy+y1,r); } void GLEBox::draw(GLERun* run, double x1, double y1, double x2, double y2) { double ox, oy; GLERectangle rect(x1, y1, x2, y2); rect.normalize(); rect.grow(getAdd()); g_get_xy(&ox, &oy); GLERC cur_fill(g_get_fill()); if (isRound()) { int oldjoin; g_get_line_join(&oldjoin); g_set_line_join(1); g_set_path(true); g_newpath(); g_move(rect.getXMin()+getRound(), rect.getYMax()); g_arcto(rect.getXMin(), rect.getYMax(), rect.getXMin(), rect.getYMax()-getRound(), getRound()); g_line(rect.getXMin(), rect.getYMin()+getRound()); g_arcto(rect.getXMin(), rect.getYMin(), rect.getXMin()+getRound(), rect.getYMin(), getRound()); g_line(rect.getXMax()-getRound(), rect.getYMin()); g_arcto(rect.getXMax(), rect.getYMin(), rect.getXMax(), rect.getYMin()+getRound(), getRound()); g_line(rect.getXMax(), rect.getYMax()-getRound()); g_arcto(rect.getXMax(), rect.getYMax(), rect.getXMax()-getRound(), rect.getYMax(), getRound()); g_closepath(); if (isFilled()) { g_set_fill(getFill()); g_fill(); } if (hasStroke()) { g_stroke(); } g_set_path(false); g_set_line_join(oldjoin); } else { if (isFilled()) { g_set_fill(getFill()); g_box_fill(&rect); } if (hasStroke()) { g_box_stroke(&rect, hasReverse()); } } g_set_fill(cur_fill); if (hasName()) { run->name_set((char*)getName(), rect.getXMin(), rect.getYMin(), rect.getXMax(), rect.getYMax()); } g_move(ox, oy); } GLEStoredBox::GLEStoredBox(): m_HasName(false), m_SecondPass(false), m_Device(0) { } void GLEStoredBox::setName(const char* name) { m_HasName = true; m_Name = name; } GLEStoredBox* box_start() { double ox, oy; GLEStoredBox* box = GLEBoxStack::getInstance()->newBox(); g_get_xy(&ox, &oy); box->setOrigin(ox, oy); g_get_bounds(box->getSaveBounds()); g_init_bounds(); return box; } GLEStoredBox* GLERun::last_box() throw (ParserError) { GLEBoxStack* stack = GLEBoxStack::getInstance(); if (stack->size() <= 0) { g_throw_parser_error("too many end boxes"); } return stack->lastBox(); } bool GLERun::box_end() throw (ParserError) { double x1, y1, x2, y2; GLEBoxStack* stack = GLEBoxStack::getInstance(); if (stack->size() <= 0) { g_throw_parser_error("too many end boxes"); } g_get_bounds(&x1, &y1, &x2, &y2); if (x1 > (x2+100)) { ostringstream err; err << "empty box (bounds are " << x1 << "," << y1 << " x "<< x2 << "," << y2 << ")?" << endl; g_throw_parser_error(err.str()); } GLEStoredBox* box = stack->lastBox(); if (box->isSecondPass()) { stack->removeBox(); return false; } if (box->getDevice() != NULL) { g_restore_device(box->getDevice()); } box->setNamePtr(box->hasName() ? box->getName().c_str() : NULL); box->draw(this, x1, y1, x2, y2); if (box->getSaveBounds()->isValid()) { g_update_bounds(box->getSaveBounds()); } if (box->getDevice() != NULL) { box->setSecondPass(true); g_move(box->getOrigin()); return true; } else { stack->removeBox(); return false; } } void nm_adjust(GLEJustify jj, double *sx, double *sy, double ex, double ey, GLERectangle* r); void GLERun::name_set(const char *n, double x1, double y1, double x2, double y2) { GLERC name(new GLEString(n)); GLERC obj(new GLEObjectRepresention()); obj->getRectangle()->setDimensions(x1, y1, x2, y2); g_dev(obj->getRectangle()); if (!getCRObjectRep()->setChildObject(name.get(), obj.get())) { char ostr[80]; int idx, type; name->toUTF8(ostr); getVars()->findAdd(ostr, &idx, &type); getVars()->setObject(idx, obj.get()); } } bool GLERun::is_name(GLEObjectRepresention* obj, GLEArrayImpl* path, unsigned int offs) { /* check for just object name */ unsigned int size = path->size(); if (size <= offs) { return true; } /* traverse path */ for (unsigned int i = offs; i < size; i++) { GLEString* elem = (GLEString*)path->getObjectUnsafe(i); GLEObjectRepresention* nextobj = obj->getChildObject(elem); if (nextobj != NULL) { obj = nextobj; } else { return false; } } return true; } GLEObjectRepresention* GLERun::name_to_object(GLEObjectRepresention* obj, GLEArrayImpl* path, GLEJustify* just, unsigned int offs) throw (ParserError) { /* check for just object name */ unsigned int size = path->size(); if (size <= offs) { *just = GLEJusitfyBox; return obj; } /* traverse path */ for (unsigned int i = offs; i < size-1; i++) { GLEString* elem = (GLEString*)path->getObjectUnsafe(i); GLEObjectRepresention* nextobj = obj->getChildObject(elem); if (nextobj != NULL) { obj = nextobj; } else { ostringstream str; GLEStringHash* childs = obj->getChilds(); if (childs == NULL) { str << "object does not contain name '" << *elem << "'"; } else { GLEArrayImpl keys; childs->getKeys(&keys); str << "object does not contain name '" << *elem << "'; "; if (keys.size() == 0) { str << "no available names"; } else { str << "available names:" << endl; keys.enumStrings(str); } } g_throw_parser_error(str.str()); } } /* should now be justify specification? */ GLEString* last_elem = (GLEString*)path->getObjectUnsafe(size-1); GLEObjectRepresention* last_obj = obj->getChildObject(last_elem); if (last_obj == NULL) { char str[80]; last_elem->toUTF8(str); if (!gt_firstval_err(op_justify, str, (int*)just)) { ostringstream str; GLEStringHash* childs = obj->getChilds(); if (childs == NULL) { str << "'" << *last_elem << "' is not a valid justify option (e.g., 'left', 'center', ...)"; } else { GLEArrayImpl keys; childs->getKeys(&keys); str << "'" << *last_elem << "' is not a child object name or justify option" << endl; str << "Available names:" << endl; keys.enumStrings(str); } g_throw_parser_error(str.str()); } } else { obj = last_obj; *just = GLEJusitfyBox; } return obj; } bool GLERun::is_name(const char *name) { char str[80]; int idx, type; GLEString sname(name); GLERC path(sname.split('.')); GLEString* objname = (GLEString*)path->getObjectUnsafe(0); objname->toUTF8(str); getVars()->find(str, &idx, &type); if (idx != -1) { GLEDataObject* obj = getVars()->getObject(idx); if (obj != NULL && obj->getType() == GLEObjectTypeObjectRep) { return is_name((GLEObjectRepresention*)obj, path.get(), 1); } } GLEObjectRepresention* obj = getCRObjectRep(); if (obj->isChildObjectsEnabled()) { return is_name(obj, path.get(), 0); } return false; } GLEObjectRepresention* GLERun::name_to_object(const char *name, GLEJustify* just) throw(ParserError) { char str[80]; int idx, type; GLEString sname(name); GLERC path(sname.split('.')); GLEString* objname = (GLEString*)path->getObjectUnsafe(0); objname->toUTF8(str); getVars()->find(str, &idx, &type); if (idx != -1) { GLEDataObject* obj = getVars()->getObject(idx); if (obj != NULL && obj->getType() == GLEObjectTypeObjectRep) { return name_to_object((GLEObjectRepresention*)obj, path.get(), just, 1); } else { string err = getVars()->typeError(idx, GLEObjectTypeObjectRep); g_throw_parser_error(err); } } else { GLEObjectRepresention* obj = getCRObjectRep(); if (obj->isChildObjectsEnabled()) { return name_to_object(obj, path.get(), just, 0); } else { ostringstream str; str << "name '" << *objname << "' not defined"; g_throw_parser_error(str.str()); } } return NULL; } void GLERun::name_to_point(const char *name, GLEPoint* point) throw(ParserError) { GLEJustify just; GLEObjectRepresention* obj = name_to_object(name, &just); if (obj != NULL) { GLERectangle rect; rect.copy(obj->getRectangle()); g_undev(&rect); rect.toPoint(just, point); } else { point->setXY(0, 0); } } void GLERun::name_to_size(const char *name, double *wd, double *hi) throw(ParserError) { GLEJustify just; GLEObjectRepresention* obj = name_to_object(name, &just); if (obj != NULL) { GLERectangle rect; rect.copy(obj->getRectangle()); g_undev(&rect); *wd = rect.getWidth(); *hi = rect.getHeight(); } else { *wd = 0.0; *hi = 0.0; } } void GLERun::name_join(const char *n1, const char *n2, int marrow, double a1, double a2, double d1, double d2) throw(ParserError) { GLEJustify j1, j2; GLEObjectRepresention* obj1 = name_to_object(n1, &j1); GLEObjectRepresention* obj2 = name_to_object(n2, &j2); if (j1 == GLEJustifyHorz || j1 == GLEJustifyVert) { GLEObjectRepresention* tmpo = obj1; obj1 = obj2; obj2 = tmpo; GLEJustify tmpj = j1; j1 = j2; j2 = tmpj; if (marrow==2) marrow = 1; else if (marrow==1) marrow = 2; } GLERectangle rect1, rect2; rect1.copy(obj1->getRectangle()); rect2.copy(obj2->getRectangle()); g_undev(&rect1); g_undev(&rect2); GLEPoint p1, p2; rect1.toPoint(j1, &p1); p2.set(p1); /* start with location of p1 for .h and .v joining */ rect2.toPoint(j2, &p2); double sx = p1.getX(); double sy = p1.getY(); double ex = p2.getX(); double ey = p2.getY(); nm_adjust(j1, &sx, &sy, p2.getX(), p2.getY(), &rect1); nm_adjust(j2, &ex, &ey, p1.getX(), p1.getY(), &rect2); g_move(sx,sy); if (marrow==2) marrow = 1; else if (marrow==1) marrow = 2; g_arrowcurve(ex, ey, marrow, a1, a2, d1, d2); } void GLERun::draw_object_static(const string& path, const string& name, int* pcode, int* cp, bool mkdrobjs) throw (ParserError) { int otyp; double x; int cp_backup = *cp; GLEPoint orig; g_get_xy(&orig); GLEString s_path(path.c_str()); GLERC a_path(s_path.split('.')); bool hasoffs = (a_path->size() > 1); GLEDevice* olddev = NULL; if (hasoffs && !g_is_dummy_device()) { /* Do not actually draw */ olddev = g_set_dummy_device(); } /* backup old object and create new one */ GLERC crobj(getCRObjectRep()); GLEObjectRepresention* newobj = new GLEObjectRepresention(); newobj->enableChildObjects(); setCRObjectRep(newobj); /* draw to measure */ GLEMeasureBox measure; measure.measureStart(); g_move(0.0, 0.0); if (mkdrobjs) { GLESub* sub = eval_subroutine_call(pcode, cp, &otyp); sub->setScript(getScript()); GLEObjectDOConstructor* cons = sub->getObjectDOConstructor(); GLEObjectDO objdo(cons); objdo.setPosition(orig); GLEString* refpt = new GLEString(); refpt->join('.', a_path.get(), 1); objdo.setRefPointString(refpt); eval_do_object_block_call(sub, &objdo); handleNewDrawObject(&objdo, mkdrobjs, &orig); } else { eval(pcode, cp, &x, NULL, &otyp); } if (hasoffs) measure.measureEndIgnore(); else measure.measureEnd(); newobj->getRectangle()->copy(&measure); /* restore device */ g_restore_device(olddev); /* draw for real */ if (hasoffs) { /* find offset */ GLEJustify just; GLEPoint transl; GLEObjectRepresention* obj = name_to_object(newobj, a_path.get(), &just, 1); GLERectangle rect(obj->getRectangle()); if (obj != newobj) g_undev(&rect); rect.toPoint(just, &transl); transl.subtractFrom(&orig); newobj->getRectangle()->translate(&transl); if (olddev != NULL && !mkdrobjs) { /* draw for real */ g_gsave(); g_translate(transl.getX(), transl.getY()); *cp = cp_backup; g_move(0.0, 0.0); eval(pcode, cp, &x, NULL, &otyp); g_grestore(); } else { /* dummy device, just update bounds */ g_update_bounds(newobj->getRectangle()); /* move child objects */ g_dev_rel(&transl); newobj->translateChildrenRecursive(&transl); } } /* convert rectangle to device coordinates */ g_dev(newobj->getRectangle()); /* store object representation to variable */ GLERC objname = (GLEString*)a_path->getObjectUnsafe(0); if (name != "") { objname = new GLEString(name); } if (!crobj->setChildObject(objname.get(), newobj)) { char ostr[500]; int idx, type; objname->toUTF8(ostr); getVars()->findAdd(ostr, &idx, &type); getVars()->setObject(idx, newobj); } /* restore old object */ setCRObjectRep(crobj.get()); g_move(orig); } void GLERun::draw_object_subbyname(GLESub* sub, GLEObjectRepresention* newobj, GLEArrayImpl* path, GLEPoint* orig) throw (ParserError) { bool hasoffs = (path->size() > 1); GLEDevice* olddev = NULL; if (hasoffs && !g_is_dummy_device()) { /* Do not actually draw */ olddev = g_set_dummy_device(); } /* draw to measure */ GLEMeasureBox measure; measure.measureStart(); g_move(0.0, 0.0); /* call subroutine */ sub_call(sub); if (hasoffs) measure.measureEndIgnore(); else measure.measureEnd(); newobj->getRectangle()->copy(&measure); /* draw for real */ if (hasoffs) { /* find offset */ GLEJustify just; GLEPoint transl; GLEObjectRepresention* obj = name_to_object(newobj, path, &just, 1); GLERectangle rect(obj->getRectangle()); if (obj != newobj) g_undev(&rect); rect.toPoint(just, &transl); transl.subtractFrom(orig); newobj->getRectangle()->translate(&transl); if (olddev != NULL) { /* draw for real */ g_restore_device(olddev); g_gsave(); g_translate(transl.getX(), transl.getY()); g_move(0.0, 0.0); /* call subroutine */ sub_call(sub); g_grestore(); } else { /* dummy device, just update bounds */ g_update_bounds(newobj->getRectangle()); /* move child objects */ g_dev_rel(&transl); GLEObjectRepresention* newobj = getCRObjectRep(); newobj->translateChildrenRecursive(&transl); } } } void GLERun::draw_object_dynamic(int idx, GLEObjectRepresention* newobj, GLEArrayImpl* path, GLEPoint* orig) throw (ParserError) { GLEDataObject* obj = getVars()->getObject(idx); if (obj == NULL || obj->getType() != GLEObjectTypeObjectRep) { string err = getVars()->typeError(idx, GLEObjectTypeObjectRep); g_throw_parser_error(err); } GLEObjectRepresention* drawobj = (GLEObjectRepresention*)obj; GLEDynamicSub* dynsub = drawobj->getSub(); if (dynsub == NULL) { string err = getVars()->typeError(idx, GLEObjectTypeDynamicSub); g_throw_parser_error(err); } /* backup old object and create new one */ gmodel* oldstate = dynsub->getState(); newobj->getRectangle()->copy(drawobj->getRectangle()); g_undev(newobj->getRectangle(), oldstate); /* find out translation offset */ GLEPoint transl; if (path->size() > 1) { /* find offset */ GLEJustify just; GLEObjectRepresention* obj = name_to_object(drawobj, path, &just, 1); GLERectangle rect(obj->getRectangle()); g_undev(&rect, oldstate); rect.toPoint(just, &transl); transl.subtractFrom(orig); newobj->getRectangle()->translate(&transl); } /* draw object */ if (!g_is_dummy_device()) { g_gsave(); g_translate(transl.getX(), transl.getY()); GLESub* sub = dynsub->getSub(); GLEVarMap* save_var_map = NULL; GLELocalVars* local_vars = dynsub->getLocalVars(); if (local_vars != NULL) { var_alloc_local(local_vars->size()); GLELocalVars* new_local_vars = get_local_vars(); new_local_vars->copyFrom(local_vars); GLEVarMap* local_var_map = sub->getParentSub()->getLocalVars(); save_var_map = var_swap_local_map(local_var_map); } g_move(0.0, 0.0); g_set_partial_state(oldstate); int s_start = sub->getStart(); int s_end = sub->getEnd(); int endp = 0; bool mkdrobjs = false; for (int i = s_start + 1; i < s_end; i++) { GLESourceLine* line = getSource()->getLine(i); do_pcode(*line, &i, gpcode[i], gplen[i], &endp, mkdrobjs); } if (local_vars != NULL) { var_free_local(); var_set_local_map(save_var_map); } g_grestore(); } else { /* dummy device, just update bounds */ g_update_bounds(newobj->getRectangle()); /* copy names */ drawobj->copyChildrenRecursive(newobj, oldstate); /* move child objects */ g_dev_rel(&transl); newobj->translateChildrenRecursive(&transl); } } void GLERun::draw_object(const string& path, const char* newname) throw (ParserError) { int idx, type; char ostr[255]; GLEPoint orig; g_get_xy(&orig); GLESub* sub = NULL; GLEString s_path(path.c_str()); GLERC a_path(s_path.split('.')); GLERC objname = (GLEString*)a_path->getObjectUnsafe(0); objname->toUTF8(ostr); getVars()->find(ostr, &idx, &type); if (idx == -1) { gle_strupr(ostr); string myname = ostr; sub = getSubroutines()->get(myname); if (sub != NULL && sub->getNbParam() != 0) sub = NULL; } if (idx == -1 && sub == NULL) { ostringstream err; err << "no object named '" << *objname << "'"; g_throw_parser_error(err.str()); } GLERC crobj(getCRObjectRep()); GLEObjectRepresention* newobj = new GLEObjectRepresention(); newobj->enableChildObjects(); setCRObjectRep(newobj); if (sub != NULL) draw_object_subbyname(sub, newobj, a_path.get(), &orig); else draw_object_dynamic(idx, newobj, a_path.get(), &orig); /* convert rectangle to device coordinates */ g_dev(newobj->getRectangle()); if (newname != NULL) { objname = new GLEString(newname); } if (!crobj->setChildObject(objname.get(), newobj)) { int idx, type; objname->toUTF8(ostr); getVars()->findAdd(ostr, &idx, &type); getVars()->setObject(idx, newobj); } /* restore old object */ setCRObjectRep(crobj.get()); g_move(orig); } void GLERun::begin_object(const char* name, GLESub* sub) throw (ParserError) { GLEStoredBox* box = box_start(); box->setStroke(false); box->setObjectRep(getCRObjectRep()); /* create new object */ GLEObjectRepresention* newobj = new GLEObjectRepresention(); newobj->enableChildObjects(); setCRObjectRep(newobj); /* set name */ int idx, type; getVars()->findAdd(name, &idx, &type); getVars()->setObject(idx, newobj); /* create corresponding dynamic subroutine */ GLEDynamicSub* dynsub = new GLEDynamicSub(sub); newobj->setSub(dynsub); /* store local variables */ GLESub* parent = sub->getParentSub(); if (parent != NULL) { GLEVarMap* local_var_map = parent->getLocalVars(); GLELocalVars* local_vars = get_local_vars(); if (local_vars != NULL && local_var_map != NULL) { dynsub->setLocalVars(local_vars->clone(local_var_map->size())); } } /* store graphics state */ g_move(0.0, 0.0); gmodel* state = new gmodel(); g_get_state(state); dynsub->setState(state); /* Do not actually draw */ if (!g_is_dummy_device()) { box->setDevice(g_set_dummy_device()); } } void GLERun::end_object() throw (ParserError) { GLEBoxStack* stack = GLEBoxStack::getInstance(); if (stack->size() <= 0) { g_throw_parser_error("too many end boxes"); } GLEStoredBox* box = stack->lastBox(); /* Get coords of box */ GLERectangle measure; g_get_bounds(&measure); if (!measure.isValid()) { ostringstream err; err << "empty box: " << measure << endl; g_throw_parser_error(err.str()); } /* Store coordinates of object */ GLEObjectRepresention* newobj = getCRObjectRep(); if (newobj != NULL) { newobj->getRectangle()->copy(&measure); /* convert rectangle to device coordinates */ g_dev(newobj->getRectangle()); } /* restore old object */ setCRObjectRep(box->getObjectRep()); /* Restore out device */ if (box->getDevice() != NULL) { g_restore_device(box->getDevice()); } /* Reset bounds as if nothing happened */ g_set_bounds(box->getSaveBounds()); g_move(box->getOrigin()); /* Remove box from stack */ stack->removeBox(); } void GLERun::begin_length(int var) { GLELengthBlock previous; GLECore* core = g_get_core(); previous.varIndex = var; previous.wasEnabled = core->isComputingLength(); previous.previousValue = core->getTotalLength(); m_lengthBlocks.push_back(previous); core->setComputingLength(true); core->setTotalLength(0.0); } void GLERun::end_length() { GLECore* core = g_get_core(); CUtilsAssert(m_lengthBlocks.size() > 0); CUtilsAssert(core->isComputingLength()); GLELengthBlock block(m_lengthBlocks.back()); m_lengthBlocks.pop_back(); double length = core->getTotalLength(); core->setComputingLength(block.wasEnabled); core->setTotalLength(block.previousValue + length); getVars()->setDouble(block.varIndex, length); } GLESubMap* GLERun::getSubroutines() { return &g_Subroutines; } // What does this accomplish? // What is justify.box? Not in manual? void nm_adjust(GLEJustify jj, double *sx, double *sy, double ex, double ey, GLERectangle* r) { double dr, da, rz, dx, dy; if ((jj & 0xf000) == 0x5000) { double r1 = r->getWidth()/2; double r2 = r->getHeight()/2; xy_polar(*sx - ex, *sy - ey, &dr, &da); double xa = da - 180; while ((xa<0) || (xa> 180)) { if (xa > 180) xa = xa - 180; if (xa < 0) xa = xa + 180; } if (r1==0) return; double ca = atan(r2/r1)*180/GLE_PI; if (xa < 90) { rz = r1/cos(GLE_PI*xa/180); if (xa>ca) rz = r2/sin(GLE_PI*xa/180); } else { xa = xa - 90; rz = r2/cos(GLE_PI*xa/180); if (xa>(90-ca)) rz = r1/sin(GLE_PI*xa/180); } dr = dr - rz ; polar_xy(dr, da, &dx, &dy); *sx = ex + dx; *sy = ey + dy; } if ((jj & 0xff00) == 0x1000) { // .ci -> for circle or ellipse double rx = r->getWidth()/2; double ry = r->getHeight()/2; xy_polar(ex-(*sx), ey-(*sy), &dr, &da); if (fabs(rx-ry) > 1e-18) { double rad_alpha = GLE_PI*da/180; da = atan2(rx*sin(rad_alpha), ry*cos(rad_alpha))/GLE_PI*180; } polar_xy(rx, ry, da, &dx, &dy); *sx += dx; *sy += dy; } } int f_eof(int chn) throw(ParserError) { if (f_testchan(chn) == -1) return 1; else return (int)g_Files[chn]->eof(); } void f_init() { } void siffree(char **s) { if (*s != NULL) myfree(*s); *s = NULL; } int f_testchan(int chn) throw(ParserError) { if (chn < 0 || chn >= (int)g_Files.size() || g_Files[chn] == NULL) { char chn_s[10]; sprintf(chn_s, "%d", chn); g_throw_parser_error("file not open (file id = ",chn_s,")"); return -1; } return chn; } void f_create_chan(int var, const char* fname, int rd_wr) { GLEFile* file = new GLEFile(); int freechn = -1; for (vector::size_type i = 0; i < g_Files.size() && freechn == -1; i++) { if (g_Files[i] == NULL) { freechn = i; } } if (freechn == -1) { freechn = g_Files.size(); g_Files.push_back(file); } else { g_Files[freechn] = file; } file->setRdWr(rd_wr == 0 ? true : false); var_set(var, freechn); file->open(fname); } void f_close_chan(int idx) throw(ParserError) { if (f_testchan(idx) != -1) { GLEFile* file = g_Files[idx]; file->close(); delete file; g_Files[idx] = NULL; } } GLEFile::GLEFile() { m_ReadWrite = true; m_Output = NULL; m_Input = NULL; } GLEFile::~GLEFile() { close(); } void GLEFile::close() { if (m_Output != NULL) { fclose(m_Output); m_Output = NULL; } if (m_Input != NULL) { m_Input->close_tokens(); m_Input->delete_language(); delete m_Input; m_Input = NULL; } } void GLEFile::open(const char* fname) throw(ParserError) { m_FileName = fname; if (isRead()) { validate_file_name(m_FileName, true); m_Input = new StreamTokenizer(); m_Input->open_tokens(m_FileName.c_str()); TokenizerLanguage* lang = m_Input->get_language(); lang->setSpaceTokens(" ,\t\r\n"); lang->setLineCommentTokens("!"); } else { validate_file_name(m_FileName, false); m_Output = fopen(m_FileName.c_str(), "w"); if (m_Output == NULL) { ostringstream err_str; err_str << "can't create: '" << m_FileName << "': "; str_get_system_error(err_str); g_throw_parser_error(err_str.str()); } } } char* GLEFile::readLine() throw(ParserError) { m_buffer = m_Input->read_line(); return (char*)m_buffer.c_str(); } char* GLEFile::getToken() throw(ParserError) { m_buffer = m_Input->next_token(); str_remove_quote(m_buffer); return (char*)m_buffer.c_str(); } void GLEFile::gotoNewLine() throw(ParserError) { m_Input->token_skip_to_end(); } bool GLEFile::eof() throw(ParserError) { return m_Input->has_more_tokens() == 0 ? true : false; } void GLEFile::resetLang() { if (m_Input != NULL) { TokenizerLanguage* lang = m_Input->get_language(); lang->resetCharMaps(); } } void GLEFile::setLangChars(int type, const char* str) { if (m_Input != NULL) { char set[2]; set[1] = 0; char prev_ch = -1; TokenizerLanguage* lang = m_Input->get_language(); while ((*str) != 0) { char ch = str[0]; bool ok = true; // Convert escape sequences in the string ! if (prev_ch == '\\') { if (ch == 'n') ch = '\n'; else if (ch == 't') ch = '\t'; else if (ch == 'r') ch = '\r'; } else if (ch == '\\') { ok = false; } if (ok) { set[0] = ch; switch (type) { case 0: lang->setLineCommentTokens(set); break; case 1: lang->setSpaceTokens(set); break; case 2: lang->setSingleCharTokens(set); break; } } prev_ch = ch; str++; } } } gle-graphics-4.2.4c/src/gle/gle.cpp0000664000000000000000000013043611722434562015557 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ #define GLE_MAIN_CPP #include "all.h" #include "tokens/Tokenizer.h" #include "core.h" #include "mem_limits.h" #include "file_io.h" #include "cutils.h" #include "cmdline.h" #include "texinterface.h" #include "config.h" #include "drawit.h" #include "gle-interface/gle-interface.h" #include "gle-poppler.h" #ifdef __WIN32__ #include #endif #include /*------------ GLOBAL VARIABLES --------------*/ // // -- these globals are needed. they are called in other source files using extern... // int MAX_VECTOR=MAXIMUM_PS_VECTOR; int gle_debug; bool control_d = true; extern int trace_on; bool BLACKANDWHITE = false; bool IS_INSTALL = false; bool GS_PREVIEW = false; void do_find_deps(CmdLineObj& cmdline); void gle_as_a_calculator(vector* exprs); extern string GLE_TOP_DIR; extern string GLE_BIN_DIR; string GLE_WORKING_DIR; class GLEOptions { public: bool ASK_DEBUG; }; /* Better to put all global options in one class? */ GLEOptions g_Options; CmdLineObj g_CmdLine; ConfigCollection g_Config; void load_one_file(const char* name, CmdLineObj& cmdline, size_t* exit_code); void load_one_file_stdin(CmdLineObj& cmdline, size_t* exit_code); void init_option_args(CmdLineObj& cmdline); void do_gen_inittex(CmdLineObj& cmdline, GLEOptions& options) throw(ParserError); void process_option_args(CmdLineObj& cmdline, GLEOptions& options); void do_run_other_version(ConfigCollection& coll, int argc, char **argv); void gle_do_socket(const string& commands); void gle_cleanup(); void tex_term(); void do_show_info(); void get_out_name(const string& name, CmdLineObj& cmdline, GLEFileLocation* outname); #include "glearray.h" void gle_cat_csv(vector* files) { for (unsigned int i = 0; i < files->size(); i++) { string fname(files->at(i)); GLECSVData csvData; csvData.read(fname); GLECSVError* error = csvData.getError(); if (error->errorCode != GLECSVErrorNone) { cout << "error: " << error->errorString << endl; } else { csvData.print(cout); } } } #if defined(HAVE_LIBGLE) && !defined(HAVE_LIBGLE_STATIC) int GLEMain(int argc, char **argv) { #else int main(int argc, char **argv) { #endif try { gle_glib_init(argc, argv); g_init(); /* Init and process command line arguments */ init_config(&g_Config); init_option_args(g_CmdLine); if (!do_load_config("gle", argv, g_CmdLine, g_Config)) { return -1; } do_run_other_version(g_Config, argc, argv); g_CmdLine.parse(argc, argv); /* Error in command line arguments? */ if (g_CmdLine.hasError()) { return -1; } /* Has calculator option? */ if (g_CmdLine.hasOption(GLE_OPT_CALC)) { if (g_CmdLine.getNbMainArgs() == 0) { gle_as_a_calculator(NULL); } else { gle_as_a_calculator(g_CmdLine.getMainArgs()); } return 0; } /* Cat CSV file to stdout? */ if (g_CmdLine.hasOption(GLE_OPT_CATCSV) && g_CmdLine.getNbMainArgs() != 0) { gle_cat_csv(g_CmdLine.getMainArgs()); return 0; } /* Should regenerate inittex.ini? */ do_gen_inittex(g_CmdLine, g_Options); /* Find dependencies */ do_find_deps(g_CmdLine); /* Get working directory */ GLEGetCrDir(&GLE_WORKING_DIR); /* This is used by the GUI */ if (g_CmdLine.hasOption(GLE_OPT_INFO)) { do_show_info(); } if (g_CmdLine.getNbMainArgs() == 0 || g_CmdLine.hasOption(GLE_OPT_HELP)) { string version; g_get_version(&version); cerr << "GLE version " << version << endl; cerr << "Usage: gle [options] filename.gle" << endl; cerr << "More information: gle " << g_CmdLine.getOptionPrefix() << "help" << endl; if (g_CmdLine.hasOption(GLE_OPT_HELP)) { g_CmdLine.showHelp(GLE_OPT_HELP); if (!g_CmdLine.getOption(GLE_OPT_HELP)->hasArgument()) { cerr << "Give more help about a given option: " << g_CmdLine.getOptionPrefix() << "help option" << endl; } } return 0; } /* Process optional arguments */ process_option_args(g_CmdLine, g_Options); } catch (ParserError err) { ostringstream err_str; err_str << "Error: "; err.write(err_str); g_message(err_str.str()); return -1; } /* iterate over "file" arguments */ size_t exit_code = 0; if (g_CmdLine.hasStdin()) { // read file from standard input (in that case there are no other main arguments) load_one_file_stdin(g_CmdLine, &exit_code); } for (int i = 0; i < g_CmdLine.getNbMainArgs(); i++) { // the standard CMD shell didn't expand the wildcards #ifdef __WIN32__ // // -- globbing and wildcards // _finddata_t fileinfo; string file_dir, file_pattern; SplitFileName(g_CmdLine.getMainArg(i), file_dir, file_pattern); intptr_t File = _findfirst((char*)g_CmdLine.getMainArg(i).c_str(), &fileinfo); if (File != -1){ do { string combined_name = file_dir + fileinfo.name; load_one_file(combined_name.c_str(), g_CmdLine, &exit_code); } while(!_findnext(File,&fileinfo)); _findclose(File); } else { exit_code = 1; cout << "Can't open file: " << g_CmdLine.getMainArg(i) << endl; } #else #if defined(__OS2__) && defined(__EMX__) char **list; list = _fnexplode((char*)g_CmdLine.getMainArg(i).c_str()); if ( list == NULL ) { load_one_file( g_CmdLine.getMainArg(i).c_str(), g_CmdLine, &exit_code); } else { for ( int i = 0; list[i] != NULL; i++ ) { load_one_file(list[i], g_CmdLine, &exit_code); } } _fnexplodefree(list); #else // on Unix the shell expands the wildcards for us load_one_file(g_CmdLine.getMainArg(i).c_str(), g_CmdLine, &exit_code); #endif #endif } // will exit with the number of files it could NOT open gle_cleanup(); if (exit_code != 0 || g_has_console_output()) { do_wait_for_enter(); } return exit_code; } void graph_init(); void gle_cleanup() { tex_term(); graph_init(); delete GLEGetColorList(); delete GLEGetInterfacePointer(); } void do_run_other_version(ConfigCollection& coll, int argc, char **argv) { // Scan command line for -v option // Note: can not use cmdline here because older versions might have different options // which would result in an error message string version = ""; for (int i = 1; i < argc-1; i++) { if (cmdline_is_option(argv[i], "v") || cmdline_is_option(argv[i], "version")) { version = argv[i+1]; str_remove_quote(version); } } if (version != "") { ConfigSection* gle = coll.getSection(GLE_CONFIG_GLE); CmdLineArgSPairList* installs = (CmdLineArgSPairList*)gle->getOption(GLE_CONFIG_GLE_INSTALL)->getArg(0); const string* path = installs->lookup(version); if (path != NULL) { GLESetGLETop(*path); ostringstream torun; torun << "\"" << (*path) << "\""; for (int i = 1; i < argc; i++) { string arg = argv[i]; str_remove_quote(arg); if (cmdline_is_option(arg.c_str(), "v")) i++; else torun << " \"" << arg << "\""; } int res = GLESystem(torun.str()); if (res != GLE_SYSTEM_OK) { cerr << "Error while running: " << (*path) << endl; } } else { cerr << "Don't know path for version: '" << version << "'" << endl; } exit(0); } } void do_show_info() { string version, bdate; g_get_version(&version); g_get_build_date(&bdate); cout << "GLE version: " << version << endl; if (!bdate.empty()) { cout << "Build date: " << bdate << endl; } cout << "GLE_TOP: " << GLE_TOP_DIR << endl; cout << "GLE_BIN: " << GLE_BIN_DIR << endl; /* Location of GhostScript */ string gs_dir; ConfigSection* tools = g_Config.getSection(GLE_CONFIG_TOOLS); const string& gs_cmd = ((CmdLineArgString*)tools->getOptionValue(GLE_TOOL_GHOSTSCRIPT_CMD))->getValue(); if (gs_cmd != "") { cout << "GhostScript: " << gs_cmd << endl; } CmdLineArgString* gslib = (CmdLineArgString*)tools->getOptionValue(GLE_TOOL_GHOSTSCRIPT_LIB); if (!gslib->isDefault()) { cout << "GS library: " << gslib->getValue() << endl; } /* Bitmap import */ cout << "Bitmap import: " << g_bitmap_supported_types() << endl; /* Cairo support */ #ifdef HAVE_CAIRO cout << "Cairo rendering support: Yes" << endl; #else cout << "Cairo rendering support: No" << endl; #endif #ifdef HAVE_POPPLER cout << "Poppler PDF support: Yes" << endl; #else cout << "Poppler PDF support: No" << endl; #endif do_wait_for_enter_exit(0); } void do_gen_inittex(CmdLineObj& cmdline, GLEOptions& options) throw(ParserError) { // Generate inittex.ini from init.tex if (cmdline.hasOption(GLE_OPT_MKINITTEX)) { IS_INSTALL = 1; string inittex = GLE_TOP_DIR + DIR_SEP + "init.tex"; GLERC script = new GLEScript(); script->getLocation()->fromFileNameCrDir(inittex); script->getSource()->load(); string inittex_ini = GLE_TOP_DIR + DIR_SEP + "inittex.ini"; TryDeleteFile(inittex_ini); g_select_device(GLE_DEVICE_DUMMY); GLEFileLocation output; output.createIllegal(); DrawIt(script.get(), &output, &cmdline); exit(0); } } void process_option_args(CmdLineObj& cmdline, GLEOptions& options) { if (cmdline.hasOption(GLE_OPT_COMPAT)) { const string& compat = cmdline.getStringValue(GLE_OPT_COMPAT); g_set_compatibility(compat); } else { g_set_compatibility(GLE_COMPAT_MOST_RECENT); } trace_on = cmdline.hasOption(GLE_OPT_TRACE); options.ASK_DEBUG = cmdline.hasOption(GLE_OPT_DEBUG); control_d = !cmdline.hasOption(GLE_OPT_NO_CTRL_D); if (cmdline.hasOption(GLE_OPT_NO_MAXPATH)) { /* Huh - what does this do? */ MAX_VECTOR = 10*MAXIMUM_PS_VECTOR; } BLACKANDWHITE = cmdline.hasOption(GLE_OPT_NO_COLOR); if (cmdline.hasOption(GLE_OPT_BBTWEAK)) g_psbbtweak(); GS_PREVIEW = cmdline.hasOption(GLE_OPT_GSPREVIEW); // .ps output implies full page CmdLineArgSet* device = (CmdLineArgSet*)cmdline.getOption(GLE_OPT_DEVICE)->getArg(0); if (device->hasValue(GLE_DEVICE_PS)) { cmdline.setHasOption(GLE_OPT_FULL_PAGE, true); } if (cmdline.hasOption(GLE_OPT_LANDSCAPE)) { cmdline.setHasOption(GLE_OPT_FULL_PAGE, true); } // remove stdin marker "-" from main arguments cmdline.checkForStdin(); // Auto detect extra arguments (after .GLE / .TEX files) // Note that extra arguments can also be supplied by means of -args if (cmdline.getMainArgSepPos() == -1) { int nargs = cmdline.getNbMainArgs(); for (int i = 0; i < nargs; i++) { const string& arg = cmdline.getMainArg(i); if (!str_i_ends_with(arg, ".GLE")) { if (i != 0) cmdline.setMainArgSepPos(i); break; } } } // Distable TeX interface if (cmdline.hasOption(GLE_OPT_SAFEMODE)) { TeXInterface* interface = TeXInterface::getInstance(); interface->setEnabled(false); } // Process further args into global config object GLEGlobalConfig* conf = GLEGetInterfacePointer()->getConfig(); conf->initCmdLine(); } void init_option_args(CmdLineObj& cmdline) { CmdLineOption* option; CmdLineArgString* strarg; CmdLineArgInt* intarg; CmdLineArgSet* setarg; cmdline.setMainArgType("file name"); option = new CmdLineOption("help", "h", "?"); option->setHelp("Shows help about command line options"); strarg = new CmdLineArgString("option"); strarg->setHelp("show specific help about 'option'"); strarg->setCardLimits(0, 1); option->addArg(strarg); cmdline.addOption(option, GLE_OPT_HELP); option = new CmdLineOption("device", "d"); option->setHelp("Selects output device(s)"); option->setMinNbArgs(1); setarg = new CmdLineArgSet("device-names"); setarg->setHelp("set output device(s)"); setarg->setMinCard(1); /* Order of values is important! (must match GLE_DEVICE_ constants in core.h) */ setarg->addPossibleValue("eps"); setarg->addPossibleValue("ps"); setarg->addPossibleValue("pdf"); setarg->addPossibleValue("svg"); setarg->addPossibleValue("jpg"); setarg->addPossibleValue("png"); setarg->addPossibleValue("x11"); setarg->addPossibleValue("emf"); #ifndef HAVE_X11 setarg->setUnsupportedValue(GLE_DEVICE_X11); #endif #ifndef HAVE_CAIRO setarg->setUnsupportedValue(GLE_DEVICE_SVG); setarg->setUnsupportedValue(GLE_DEVICE_EMF); #endif #ifndef __WIN32__ setarg->setUnsupportedValue(GLE_DEVICE_EMF); #endif setarg->addDefaultValue(GLE_DEVICE_EPS); option->addArg(setarg); cmdline.addOption(option, GLE_OPT_DEVICE); #ifdef HAVE_CAIRO option = new CmdLineOption("cairo"); option->setHelp("Use cairo output device"); cmdline.addOption(option, GLE_OPT_CAIRO); #endif option = new CmdLineOption("fullpage"); option->setHelp("Selects full page output"); cmdline.addOption(option, GLE_OPT_FULL_PAGE); option = new CmdLineOption("landscape"); option->setHelp("Selects full page landscape output"); cmdline.addOption(option, GLE_OPT_LANDSCAPE); option = new CmdLineOption("nocolor", "bw"); option->setHelp("Forces grayscale output"); cmdline.addOption(option, GLE_OPT_NO_COLOR); option = new CmdLineOption("transparent", "tr"); option->setHelp("Creates transparent output (with -d png)"); cmdline.addOption(option, GLE_OPT_TRANSPARENT); option = new CmdLineOption("noctrl-d"); option->setHelp("Excludes CTRL-D from the PostScript output"); cmdline.addOption(option, GLE_OPT_NO_CTRL_D); option = new CmdLineOption("resolution", "r", "dpi"); option->setHelp("Sets the resolution for bitmap and PDF output"); intarg = new CmdLineArgInt("dpi"); intarg->setHelp("set the resolution (measured in dots per inch)"); intarg->setCardLimits(0, 1); intarg->setDefault(72); option->addArg(intarg); cmdline.addOption(option, GLE_OPT_DPI); option = new CmdLineOption("tex"); option->setHelp("Indicates that the script includes LaTeX expressions"); cmdline.addOption(option, GLE_OPT_TEX); option = new CmdLineOption("nopdftex"); option->setHelp("Disable PdfLaTeX for .pdf creation"); option->setExpert(true); cmdline.addOption(option, GLE_OPT_NO_PDFTEX); option = new CmdLineOption("inc"); option->setHelp("Creates an .inc file with LaTeX code"); cmdline.addOption(option, GLE_OPT_CREATE_INC); option = new CmdLineOption("texincprefix"); option->setHelp("Adds the given subdirectory to the path in the .inc file"); strarg = new CmdLineArgString("path"); strarg->setHelp("adds 'path' to path in .inc file"); strarg->setCardLimits(1, 1); option->addArg(strarg); cmdline.addOption(option, GLE_OPT_TEXINCPREF); option = new CmdLineOption("finddeps"); option->setHelp("Automatically finds dependencies"); strarg = new CmdLineArgString("path"); strarg->setHelp("find dependencies in 'path'"); strarg->setCardLimits(0, 1); // Default value should also be set if no value is given? option->addArg(strarg); cmdline.addOption(option, GLE_OPT_FINDDEPS); option = new CmdLineOption("preview", "p"); option->setHelp("Previews the output with QGLE"); cmdline.addOption(option, GLE_OPT_PREVIEW); #ifdef ENABLE_GS_PREVIEW option = new CmdLineOption("gs"); option->setHelp("Previews the output with GhostScript"); cmdline.addOption(option, GLE_OPT_GSPREVIEW); #endif option = new CmdLineOption("calc", "c"); option->setHelp("Runs GLE in \"calculator\" mode"); cmdline.addOption(option, GLE_OPT_CALC); option = new CmdLineOption("catcsv", "csv"); option->setHelp("Pretty print a CSV file to standard output"); cmdline.addOption(option, GLE_OPT_CATCSV); option = new CmdLineOption("output", "o"); option->setHelp("Specifies the name of the output file"); strarg = new CmdLineArgString("name"); strarg->setHelp("writes output to file 'name'"); strarg->setCardLimits(1, 1); option->addArg(strarg); cmdline.addOption(option, GLE_OPT_OUTPUT); option = new CmdLineOption("nosave"); option->setHelp("Don't write output file to disk (dry-run)"); cmdline.addOption(option, GLE_OPT_NOSAVE); #if defined(__WIN32__) and defined(HAVE_CAIRO) option = new CmdLineOption("copy"); option->setHelp("Copy resulting figure to clipboard (only EMF)"); cmdline.addOption(option, GLE_OPT_COPY); #endif option = new CmdLineOption("compatibility", "cm"); option->setHelp("Selects a GLE compatibility mode"); strarg = new CmdLineArgString("version"); strarg->setHelp("specifies GLE version to emulate (can be any existing GLE version)"); option->addArg(strarg); cmdline.addOption(option, GLE_OPT_COMPAT); option = new CmdLineOption("version", "v"); option->setHelp("Selects a GLE version to run"); setarg = new CmdLineArgSet("version"); setarg->setHelp("run GLE version 'version'"); setarg->setMinCard(1); setarg->setMaxCard(1); option->addArg(setarg); cmdline.addOption(option, GLE_OPT_VERSION); option = new CmdLineOption("noligatures"); option->setHelp("Disable the use of ligatures for 'fl' and 'fi'"); cmdline.addOption(option, GLE_OPT_NO_LIGATURES); option = new CmdLineOption("gsoptions"); option->setHelp("Specify additional options for GhostScript"); strarg = new CmdLineArgString("value"); option->addArg(strarg); cmdline.addOption(option, GLE_OPT_GSOPTIONS); option = new CmdLineOption("safemode"); option->setHelp("Disables reading/writing to the file system"); cmdline.addOption(option, GLE_OPT_SAFEMODE); option = new CmdLineOption("allowread"); option->setHelp("Allows reading from the given path"); strarg = new CmdLineArgString("path"); option->addArg(strarg); cmdline.addOption(option, GLE_OPT_ALLOWREAD); option = new CmdLineOption("allowwrite"); option->setHelp("Allows writing to the given path"); strarg = new CmdLineArgString("path"); option->addArg(strarg); cmdline.addOption(option, GLE_OPT_ALLOWWRITE); option = new CmdLineOption("keep"); option->setHelp("Don't delete temporary files"); cmdline.addOption(option, GLE_OPT_KEEP); option = new CmdLineOption("trace"); option->setHelp("Trace GLE"); option->setExpert(true); cmdline.addOption(option, GLE_OPT_TRACE); option = new CmdLineOption("debug"); option->setHelp("Debug GLE"); option->setExpert(true); cmdline.addOption(option, GLE_OPT_DEBUG); option = new CmdLineOption("nomaxpath"); option->setHelp("Disables the upper-bound on the drawing path complexity"); cmdline.addOption(option, GLE_OPT_NO_MAXPATH); option = new CmdLineOption("mkinittex"); option->setHelp("Creates \"inittex.ini\" from \"init.tex\""); cmdline.addOption(option, GLE_OPT_MKINITTEX); option = new CmdLineOption("info"); option->setHelp("Outputs software version, build date, GLE_TOP, GLE_BIN, etc."); cmdline.addOption(option, GLE_OPT_INFO); option = new CmdLineOption("pause"); option->setHelp("Pause if output has been generated"); option->setExpert(true); cmdline.addOption(option, GLE_OPT_PAUSE); option = new CmdLineOption("verbosity", "vb"); option->setHelp("Sets the verbosity level of GLE console output"); intarg = new CmdLineArgInt("verbosity"); intarg->setHelp("sets verbosity level to 'verbosity' (0..20)"); intarg->setCardLimits(0, 1); intarg->setDefault(1); option->addArg(intarg); cmdline.addOption(option, GLE_OPT_VERBOSITY); cmdline.addMainArgSep("args"); cmdline.addMainArgSep("a"); cmdline.initOptions(); } void gle_preview_file(const char* name, CmdLineObj& cmdline) { ostringstream commands; commands << "glefile: \"" << name << "\"" << endl; if (cmdline.hasOption(GLE_OPT_DPI)) { int dpi = ((CmdLineArgInt*)cmdline.getOption(GLE_OPT_DPI)->getArg(0))->getValue(); commands << "dpi: \"" << dpi << "\"" << endl; } commands << "*DONE*" << endl; // cout << "Sending: " << commands.str() << endl; int result = GLESendSocket(commands.str()); if (result == -3) { cerr << "Note: GLE is trying to launch QGLE, the GLE preview application" << endl; #ifdef __WIN32__ string qgle = "\"" + GLE_BIN_DIR + DIR_SEP + "qgle.exe\""; #else string qgle = "\"" + GLE_BIN_DIR + DIR_SEP + "qgle\""; #endif int sysres = GLESystem(qgle, false, false, NULL, NULL); if (sysres == GLE_SYSTEM_OK) { bool done = false; while (!done) { GLESleep(1000); result = GLESendSocket(commands.str()); if (result != -3) { done = true; } } } else { cerr << "Error: failed to start QGLE: '" << qgle << "'" << endl; result = 0; } } if (result != 0) { cerr << "Error: could not connect to GLE preview application, code = " << result << endl; } cerr << endl; } bool has_pdflatex(CmdLineObj* cmdline) { if (cmdline->hasOption(GLE_OPT_NO_PDFTEX)) { return false; } ConfigSection* tex = g_Config.getSection(GLE_CONFIG_TEX); CmdLineArgSet* texsys = (CmdLineArgSet*)tex->getOptionValue(GLE_TEX_SYSTEM); if (texsys->hasValue(GLE_TEX_SYSTEM_VTEX)) { return false; } else { return true; } } bool has_eps_or_pdf_based_device(CmdLineArgSet* device, CmdLineObj& cmdline) { if (cmdline.hasOption(GLE_OPT_TEX)) return true; if (device->hasValue(GLE_DEVICE_EPS)) return true; if (device->hasValue(GLE_DEVICE_PDF)) return true; if (device->hasValue(GLE_DEVICE_JPEG)) return true; if (device->hasValue(GLE_DEVICE_PNG)) return true; return false; } bool requires_tex(CmdLineArgSet* device, CmdLineObj* cmdline) { if (!cmdline->hasOption(GLE_OPT_CREATE_INC)) { if (device->hasValue(GLE_DEVICE_EPS)) return true; if (device->hasValue(GLE_DEVICE_PDF)) return true; } if (device->hasValue(GLE_DEVICE_PS)) return true; if (device->hasValue(GLE_DEVICE_JPEG)) return true; if (device->hasValue(GLE_DEVICE_PNG)) return true; return false; } bool has_bitmap_or_pdf_device(CmdLineArgSet* device) { if (device->hasValue(GLE_DEVICE_JPEG)) return true; if (device->hasValue(GLE_DEVICE_PNG)) return true; if (device->hasValue(GLE_DEVICE_PDF)) return true; return false; } bool is_bitmap_device(int device) { if (device == GLE_DEVICE_JPEG) return true; if (device == GLE_DEVICE_PNG) return true; return false; } void force_device(int dev, CmdLineObj& cmdline) { CmdLineArgSet* device = (CmdLineArgSet*)cmdline.getOption(GLE_OPT_DEVICE)->getArg(0); device->removeValue(GLE_DEVICE_EPS); device->addValue(dev); } void get_out_name(GLEFileLocation* inname, CmdLineObj& cmdline, GLEFileLocation* outname) { if (cmdline.hasOption(GLE_OPT_OUTPUT)) { const string& o_file = cmdline.getOptionString(GLE_OPT_OUTPUT); if (str_i_equals(o_file, "STDOUT")) { outname->createStdout(); } else { if (str_i_ends_with(o_file, ".ps")) force_device(GLE_DEVICE_PS, cmdline); if (str_i_ends_with(o_file, ".pdf")) force_device(GLE_DEVICE_PDF, cmdline); if (str_i_ends_with(o_file, ".svg")) force_device(GLE_DEVICE_SVG, cmdline); if (str_i_ends_with(o_file, ".jpg")) force_device(GLE_DEVICE_JPEG, cmdline); if (str_i_ends_with(o_file, ".png")) force_device(GLE_DEVICE_PNG, cmdline); string main_name; GetMainName(o_file, main_name); outname->fromFileNameDir(main_name, GLE_WORKING_DIR); } } else { if (inname->isStdin()) { outname->createStdout(); } else { string main_name; GetMainNameExt(inname->getFullPath(), ".gle", main_name); outname->fromAbsolutePath(main_name); } } } GLERC load_gle_code_sub(const char* name, CmdLineObj& cmdline) throw(ParserError) { string in_name = name; GLERC script = new GLEScript(); GLEFileLocation* loc = script->getLocation(); loc->fromFileNameDir(in_name, GLE_WORKING_DIR); script->getSource()->load(); return script; } GLERC load_gle_code_sub_stdin(CmdLineObj& cmdline) throw(ParserError) { GLERC script = new GLEScript(); GLEFileLocation* loc = script->getLocation(); loc->createStdin(); loc->setDirectory(GLE_WORKING_DIR); script->getSource()->load(); return script; } void delete_temp_file(const string& file, const char* ext) { int verbosity = g_verbosity(); bool keep = g_CmdLine.hasOption(GLE_OPT_KEEP); if ((verbosity >= 5 && keep) || verbosity > 10) { string fname = file + ext; ostringstream todel; if (keep) { todel << "keep: " << fname; } else { todel << "delete: " << fname; } g_message(todel.str()); } if (!g_CmdLine.hasOption(GLE_OPT_KEEP)) { DeleteFileWithExt(file, ext); } } void writeRecordedOutputFile(const string& fname, int deviceCode, string* buffer) throw (ParserError) { string outf = fname; outf.append(g_device_to_ext(deviceCode)); ofstream out(outf.c_str(), ios::out | ios::binary); if (!out.is_open()) { g_throw_parser_error("failed to create file '", outf.c_str(), "'"); } out.write(buffer->data(), buffer->size()); out.close(); } void writeRecordedOutputFile(const string& fname, int deviceCode, GLEScript* script) throw (ParserError) { string* buffer = script->getRecordedBytesBuffer(deviceCode); writeRecordedOutputFile(fname, deviceCode, buffer); } class GLELoadOneFileManager { protected: GLEScript* m_Script; CmdLineObj* m_CmdLine; GLEFileLocation* m_OutName; GLEDevice* m_Device; GLEFileLocation m_IncName; bool m_HasTeXFile; bool m_HasTempDotDir; bool m_HasTempFile; std::set m_hasGenerated; std::set m_hasFile; std::set m_hasIncFile; public: GLELoadOneFileManager(GLEScript* script, CmdLineObj* cmdline, GLEFileLocation* outname); ~GLELoadOneFileManager(); void update_bounding_box(); void delete_previous_output(int deviceCode); void create_cairo_eps() throw(ParserError); bool process_one_file_tex() throw(ParserError); void do_output_type(const char* type); void cat_stdout(const char* ext); void cat_stdout_and_del(const char* ext); void create_latex_eps_ps_pdf() throw(ParserError); void convert_eps_to_pdf_no_latex() throw(ParserError); istream* get_eps_stream(); bool hasGenerated(int deviceCode); bool hasFile(int deviceCode); bool hasIncFile(int deviceCode); void setHasGenerated(int deviceCode, bool value); void setHasFile(int deviceCode, bool value); void setHasIncFile(int deviceCode, bool value); void write_recorded_data(int deviceCode) throw(ParserError); void clean_tex_temp_files(); void clean_inc_file(int deviceCode); void delete_original_eps_pdf(); void delete_original_eps_pdf_impl(int device); bool requires_tex_eps(CmdLineArgSet* device, CmdLineObj* cmdline); bool requires_tex_pdf(CmdLineArgSet* device, CmdLineObj* cmdline); bool has_cairo_pdf_based_device(CmdLineArgSet* device, CmdLineObj* cmdline); }; GLELoadOneFileManager::GLELoadOneFileManager(GLEScript* script, CmdLineObj* cmdline, GLEFileLocation* outname) { m_Script = script; m_CmdLine = cmdline; m_OutName = outname; m_Device = NULL; m_HasTeXFile = false; m_HasTempDotDir = false; m_HasTempFile = false; } GLELoadOneFileManager::~GLELoadOneFileManager() { } void GLELoadOneFileManager::update_bounding_box() { double size_x, size_y; g_get_usersize(&size_x, &size_y); m_Script->setSize(size_x, size_y); PSGLEDevice* psdev = (PSGLEDevice*)g_get_device_ptr(); m_Script->setBoundingBox(psdev->getBoundingBox()->getX(), psdev->getBoundingBox()->getY()); m_Script->setBoundingBoxOrigin(0.0, 0.0); } void GLELoadOneFileManager::delete_previous_output(int deviceCode) { CmdLineArgSet* device = (CmdLineArgSet*)m_CmdLine->getOption(GLE_OPT_DEVICE)->getArg(0); if (device->hasValue(deviceCode) && !m_OutName->isStdout()) { /* Delete output so that QGLE does not display previous rendering if there are errors */ DeleteFileWithExt(m_OutName->getFullPath(), g_device_to_ext(deviceCode)); } } void GLELoadOneFileManager::create_cairo_eps() throw(ParserError) { CmdLineArgSet* device = (CmdLineArgSet*)m_CmdLine->getOption(GLE_OPT_DEVICE)->getArg(0); if (!hasGenerated(GLE_DEVICE_EPS) && device->hasValue(GLE_DEVICE_EPS)) { setHasGenerated(GLE_DEVICE_EPS, true); m_Device = g_select_device(GLE_DEVICE_CAIRO_EPS); m_Device->setRecordingEnabled(true); if (g_verbosity() > 0) { cerr << endl; } DrawIt(m_Script, m_OutName, m_CmdLine); m_Device->getRecordedBytes(m_Script->getRecordedBytesBuffer(GLE_DEVICE_EPS)); } } bool GLELoadOneFileManager::process_one_file_tex() throw(ParserError) { CmdLineArgSet* device = (CmdLineArgSet*)m_CmdLine->getOption(GLE_OPT_DEVICE)->getArg(0); delete_previous_output(GLE_DEVICE_EPS); delete_previous_output(GLE_DEVICE_PDF); if (m_CmdLine->hasOption(GLE_OPT_CAIRO)) { if (has_cairo_pdf_based_device(device, m_CmdLine)) { setHasGenerated(GLE_DEVICE_PDF, true); m_Device = g_select_device(GLE_DEVICE_CAIRO_PDF); } else { setHasGenerated(GLE_DEVICE_EPS, true); m_Device = g_select_device(GLE_DEVICE_CAIRO_EPS); } } else { setHasGenerated(GLE_DEVICE_EPS, true); m_Device = g_select_device(GLE_DEVICE_EPS); } if (m_CmdLine->hasOption(GLE_OPT_DPI)) { m_Device->setResolution(((CmdLineArgInt*)m_CmdLine->getOption(GLE_OPT_DPI)->getArg(0))->getValue()); } m_Device->setRecordingEnabled(true); /* In some cases two passes are required to measure size of TeX objects */ int done = 1; TeXInterface* interface = TeXInterface::getInstance(); if (m_Script->getLocation()->isStdin()) { interface->initialize(m_OutName, m_OutName); } else { interface->initialize(m_Script->getLocation(), m_OutName); } int iter = 0; do { interface->reset(); if (iter != 0 && g_verbosity() > 0) cerr << endl; DrawIt(m_Script, m_OutName, m_CmdLine); if (get_nb_errors() > 0) { return false; } if (iter == 0 && interface->hasObjects() && m_OutName->isStdout()) { /* this means we need temporary files */ m_HasTempFile = true; m_OutName->setFullPath(GLETempName()); if (m_Script->getLocation()->isStdin()) { m_HasTempDotDir = true; interface->updateNames(m_OutName, m_OutName); } else { interface->updateOutName(m_OutName); } } done = interface->tryCreateHash(); if (done == 2) { inc_nb_errors(); return false; } iter++; } while (done == 1); /* get recorded PostScript code */ if (hasGenerated(GLE_DEVICE_PDF)) { m_Device->getRecordedBytes(m_Script->getRecordedBytesBuffer(GLE_DEVICE_PDF)); } else { m_Device->getRecordedBytes(m_Script->getRecordedBytesBuffer(GLE_DEVICE_EPS)); } update_bounding_box(); interface->checkObjectDimensions(); create_cairo_eps(); if (m_CmdLine->hasOption(GLE_OPT_CREATE_INC)) { interface->createInc(m_CmdLine->getStringValue(GLE_OPT_TEXINCPREF)); } if (interface->hasObjects() && requires_tex(device, m_CmdLine)) { bool use_geom = false; bool has_pdftex = has_pdflatex(m_CmdLine); bool create_inc = m_CmdLine->hasOption(GLE_OPT_CREATE_INC); if (device->hasValue(GLE_DEVICE_PS)) use_geom = true; if (has_pdftex && !create_inc) use_geom = true; interface->createTeX(use_geom); m_HasTeXFile = true; } if (!interface->isEnabled()) { /* No TeX objects in safe mode */ return false; } if (m_CmdLine->hasOption(GLE_OPT_CREATE_INC)) { /* See bug #2165591 */ return true; } return interface->hasObjects(); } void GLELoadOneFileManager::do_output_type(const char* type) { if (g_verbosity() > 0) { cerr << "[" << type << "]"; g_set_console_output(false); } } void GLELoadOneFileManager::cat_stdout(const char* ext) { string outf = m_OutName->getFullPath() + ext; ifstream in(outf.c_str(), ios::in | ios::binary); GLECopyStream(in, cout); in.close(); } void GLELoadOneFileManager::cat_stdout_and_del(const char* ext) { cat_stdout(ext); delete_temp_file(m_OutName->getFullPath(), ext); } void GLELoadOneFileManager::convert_eps_to_pdf_no_latex() throw(ParserError) { CmdLineArgSet* device = (CmdLineArgSet*)m_CmdLine->getOption(GLE_OPT_DEVICE)->getArg(0); if (device->hasValue(GLE_DEVICE_PDF) && !hasGenerated(GLE_DEVICE_PDF)) { setHasFile(GLE_DEVICE_PDF, true); int dpi = m_CmdLine->getIntValue(GLE_OPT_DPI); create_pdf_file_ghostscript(m_OutName, dpi, m_Script); do_output_type(".pdf"); } } bool GLELoadOneFileManager::requires_tex_eps(CmdLineArgSet* device, CmdLineObj* cmdline) { if (!cmdline->hasOption(GLE_OPT_CREATE_INC)) { if (device->hasValue(GLE_DEVICE_EPS)) return true; if (device->hasValue(GLE_DEVICE_PDF) && !has_pdflatex(cmdline)) return true; } if (!hasGenerated(GLE_DEVICE_PDF)) { if (device->hasValue(GLE_DEVICE_JPEG)) return true; if (device->hasValue(GLE_DEVICE_PNG)) return true; } return false; } bool GLELoadOneFileManager::has_cairo_pdf_based_device(CmdLineArgSet* device, CmdLineObj* cmdline) { if (m_CmdLine->hasOption(GLE_OPT_CAIRO)) { if (device->hasValue(GLE_DEVICE_PDF)) return true; if (device->hasValue(GLE_DEVICE_JPEG)) return true; if (device->hasValue(GLE_DEVICE_PNG)) return true; } return false; } bool GLELoadOneFileManager::requires_tex_pdf(CmdLineArgSet* device, CmdLineObj* cmdline) { if (!cmdline->hasOption(GLE_OPT_CREATE_INC)) { if (device->hasValue(GLE_DEVICE_PDF)) return true; } if (hasGenerated(GLE_DEVICE_PDF)) { if (device->hasValue(GLE_DEVICE_JPEG)) return true; if (device->hasValue(GLE_DEVICE_PNG)) return true; } return false; } void GLELoadOneFileManager::create_latex_eps_ps_pdf() throw(ParserError) { /* m_OutName has no path and no extension */ m_IncName.fromAbsolutePath(m_OutName->getFullPath() + "_inc"); /* includegraphics does not handle "." in filenames */ FileNameDotToUnderscore(m_IncName.getFullPathNC()); bool create_inc = m_CmdLine->hasOption(GLE_OPT_CREATE_INC); bool has_pdftex = has_pdflatex(m_CmdLine); int dpi = m_CmdLine->getIntValue(GLE_OPT_DPI); CmdLineArgSet* device = (CmdLineArgSet*)m_CmdLine->getOption(GLE_OPT_DEVICE)->getArg(0); /* Create "_inc.eps" */ if (device->hasOnlyValue(GLE_DEVICE_PDF) && (has_pdftex || create_inc)) { /* "_inc.eps" not required in this case */ } else if (hasGenerated(GLE_DEVICE_EPS)) { setHasIncFile(GLE_DEVICE_EPS, true); writeRecordedOutputFile(m_IncName.getFullPath(), GLE_DEVICE_EPS, m_Script); } /* Create "_inc.pdf" */ if ((device->hasValue(GLE_DEVICE_PDF) || hasGenerated(GLE_DEVICE_PDF)) && (has_pdftex || create_inc)) { setHasIncFile(GLE_DEVICE_PDF, true); if (hasGenerated(GLE_DEVICE_PDF)) { writeRecordedOutputFile(m_IncName.getFullPath(), GLE_DEVICE_PDF, m_Script); } else { create_pdf_file_ghostscript(&m_IncName, dpi, m_Script); do_output_type(".pdf"); } } /* Exit if no EPS/PS/PDF required */ if (!requires_tex_eps(device, m_CmdLine) && !requires_tex_pdf(device, m_CmdLine) && !device->hasValue(GLE_DEVICE_PS)) { return; } /* Create EPS/PS/PDF based on .TeX */ string out_name_dir, out_name_np; SplitFileName(m_OutName->getFullPath(), out_name_dir, out_name_np); /* LaTeX does not like to run with absolute paths */ GLEChDir(out_name_dir); if (requires_tex_eps(device, m_CmdLine)) { create_eps_file_latex_dvips(out_name_np, m_Script); writeRecordedOutputFile(m_OutName->getFullPath(), GLE_DEVICE_EPS, m_Script); setHasFile(GLE_DEVICE_EPS, true); } if ((device->hasValue(GLE_DEVICE_PDF) && !create_inc) || requires_tex_pdf(device, m_CmdLine)) { setHasFile(GLE_DEVICE_PDF, true); if (has_pdftex) { create_pdf_file_pdflatex(out_name_np, m_Script); } else { create_pdf_file_ghostscript(m_OutName, dpi, m_Script); do_output_type(".pdf"); } } if (device->hasValue(GLE_DEVICE_PS)) { create_ps_file_latex_dvips(out_name_np); if (m_OutName->isStdout()) cat_stdout_and_del(".ps"); do_output_type(".ps"); } GLEChDir(m_Script->getLocation()->getDirectory()); } istream* GLELoadOneFileManager::get_eps_stream() { return NULL; } bool GLELoadOneFileManager::hasGenerated(int deviceCode) { return m_hasGenerated.find(deviceCode) != m_hasGenerated.end(); } bool GLELoadOneFileManager::hasFile(int deviceCode) { return m_hasFile.find(deviceCode) != m_hasFile.end(); } bool GLELoadOneFileManager::hasIncFile(int deviceCode) { return m_hasIncFile.find(deviceCode) != m_hasIncFile.end(); } void GLELoadOneFileManager::setHasGenerated(int deviceCode, bool value) { if (value) { m_hasGenerated.insert(deviceCode); } else { m_hasGenerated.erase(deviceCode); } } void GLELoadOneFileManager::setHasFile(int deviceCode, bool value) { if (value) { m_hasFile.insert(deviceCode); } else { m_hasFile.erase(deviceCode); } } void GLELoadOneFileManager::setHasIncFile(int deviceCode, bool value) { if (value) { m_hasIncFile.insert(deviceCode); } else { m_hasIncFile.erase(deviceCode); } } void GLELoadOneFileManager::write_recorded_data(int deviceCode) throw (ParserError) { CmdLineArgSet* device = (CmdLineArgSet*)m_CmdLine->getOption(GLE_OPT_DEVICE)->getArg(0); if (!device->hasValue(deviceCode)) { return; } if (m_CmdLine->hasOption(GLE_OPT_CREATE_INC) || m_CmdLine->hasOption(GLE_OPT_NOSAVE)) { return; } if (m_OutName->isStdout()) { /* Write to stdout */ if (hasFile(deviceCode)) { cat_stdout(g_device_to_ext(deviceCode)); } else { string* buffer = m_Script->getRecordedBytesBuffer(deviceCode); cout.write(buffer->data(), buffer->size()); } } else { if (!hasFile(deviceCode)) { writeRecordedOutputFile(m_OutName->getFullPath(), deviceCode, m_Script); } } } void GLELoadOneFileManager::clean_inc_file(int deviceCode) { /* Remove _inc.* if not required anymore */ bool create_inc = m_CmdLine->hasOption(GLE_OPT_CREATE_INC); CmdLineArgSet* device = (CmdLineArgSet*)m_CmdLine->getOption(GLE_OPT_DEVICE)->getArg(0); if (hasIncFile(deviceCode) && (!create_inc || !device->hasValue(deviceCode))) { delete_temp_file(m_IncName.getFullPath(), g_device_to_ext(deviceCode)); } } void GLELoadOneFileManager::clean_tex_temp_files() { clean_inc_file(GLE_DEVICE_EPS); clean_inc_file(GLE_DEVICE_PDF); /* Remove .tex file */ if (m_HasTeXFile) { delete_temp_file(m_OutName->getFullPath(), ".tex"); } /* Remove files in ".gle" directory */ if (m_HasTempDotDir) { TeXInterface* interface = TeXInterface::getInstance(); interface->removeDotFiles(); } } void GLELoadOneFileManager::delete_original_eps_pdf_impl(int deviceCode) { CmdLineArgSet* device = (CmdLineArgSet*)m_CmdLine->getOption(GLE_OPT_DEVICE)->getArg(0); bool should_del = hasFile(deviceCode); if (device->hasValue(deviceCode)) { /* don't delete .eps/.pdf if we wanted this as output */ /* and we did not wanted this printed to stout */ if (!m_OutName->isStdout() && !m_CmdLine->hasOption(GLE_OPT_CREATE_INC)) { should_del = false; } } if (should_del) { /* delete original .eps/.pdf file */ delete_temp_file(m_OutName->getFullPath(), g_device_to_ext(deviceCode)); } } void GLELoadOneFileManager::delete_original_eps_pdf() { delete_original_eps_pdf_impl(GLE_DEVICE_EPS); delete_original_eps_pdf_impl(GLE_DEVICE_PDF); /* has temporary output file */ if (m_HasTempFile) { #ifdef __WIN32__ delete_temp_file(m_OutName->getFullPath(), ".tmp"); #else delete_temp_file(m_OutName->getFullPath(), ""); #endif } } void complain_latex_not_supported(int device) { if (TeXInterface::getInstance()->hasObjects()) { g_throw_parser_error(">> LaTeX expressions not suppored in '", g_device_to_ext(device), "' output"); } } void load_one_file_sub(GLEScript* script, CmdLineObj& cmdline, size_t* exit_code) throw(ParserError) { GLEFileLocation out_name; /* out_name has no extension */ GLEGetInterfacePointer()->getConfig()->setAllowConfigBlocks(false); GLEChDir(script->getLocation()->getDirectory()); get_out_name(script->getLocation(), cmdline, &out_name); g_set_console_output(false); g_message_first_newline(true); GLEGetColorList()->reset(); if (cmdline.hasOption(GLE_OPT_DEBUG)){ printf("Debug options 16=do_pcode, 8=pass 4=polish, 2=eval "); printf("Debug "); scanf("%d",&gle_debug); printf("Trace "); scanf("%d",&trace_on); } GLELoadOneFileManager manager(script, &cmdline, &out_name); CmdLineArgSet* device = (CmdLineArgSet*)cmdline.getOption(GLE_OPT_DEVICE)->getArg(0); if (has_eps_or_pdf_based_device(device, cmdline)) { bool has_tex = manager.process_one_file_tex(); /* Return if there were errors */ if (get_nb_errors() > 0) { if (g_verbosity() > 0) cerr << endl; (*exit_code)++; return; } /* Get device information */ int dpi = cmdline.getIntValue(GLE_OPT_DPI); /* File has TeX code -> move it and create again */ if (has_tex) { manager.create_latex_eps_ps_pdf(); } else { manager.convert_eps_to_pdf_no_latex(); } /* Create bitmap outputs */ int output_options = 0; if (cmdline.hasOption(GLE_OPT_NO_COLOR)) { output_options |= GLE_OUTPUT_OPTION_GRAYSCALE; } if (cmdline.hasOption(GLE_OPT_TRANSPARENT)) { output_options |= GLE_OUTPUT_OPTION_TRANSPARENT; } for (int i = 0; i < device->getNbValues(); i++) { if (is_bitmap_device(i) && device->hasValue(i)) { create_bitmap_file(&out_name, i, dpi, output_options, script); manager.do_output_type(g_device_to_ext(i)); } } /* Output .eps to stdout? */ manager.write_recorded_data(GLE_DEVICE_EPS); manager.write_recorded_data(GLE_DEVICE_PDF); manager.delete_original_eps_pdf(); if (has_tex) manager.clean_tex_temp_files(); if (g_verbosity() > 0) cerr << endl; } if (device->hasValue(GLE_DEVICE_PS) && !cmdline.hasOption(GLE_OPT_TEX)) { GLEDevice* psdev = g_select_device(GLE_DEVICE_PS); DrawIt(script, &out_name, &cmdline); if (TeXInterface::getInstance()->hasObjects()) { g_message(">> To include LaTeX expressions, use \"gle -tex -d ps file.gle\""); } if (psdev->isRecordingEnabled()) { std::string recorded; psdev->getRecordedBytes(&recorded); writeRecordedOutputFile(out_name.getFullPath(), GLE_DEVICE_PS, &recorded); } if (out_name.isStdout()) { manager.cat_stdout_and_del(".ps"); } cerr << endl; } if (device->hasValue(GLE_DEVICE_SVG)) { g_select_device(GLE_DEVICE_CAIRO_SVG); DrawIt(script, &out_name, &cmdline); complain_latex_not_supported(GLE_DEVICE_SVG); if (out_name.isStdout()) { manager.cat_stdout_and_del(".svg"); } cerr << endl; } if (device->hasValue(GLE_DEVICE_X11)) { g_select_device(GLE_DEVICE_X11); DrawIt(script, &out_name, &cmdline); } #if defined(__WIN32__) && defined(HAVE_CAIRO) if (device->hasValue(GLE_DEVICE_EMF)) { GLECairoDeviceEMF* dev = (GLECairoDeviceEMF*)g_select_device(GLE_DEVICE_EMF); if (cmdline.hasOption(GLE_OPT_COPY)) { dev->setCopyClipboard(true); } if (cmdline.hasOption(GLE_OPT_DPI)) { int dpi = ((CmdLineArgInt*)cmdline.getOption(GLE_OPT_DPI)->getArg(0))->getValue(); dev->setDPI(dpi); } else { dev->setDPI(2000); } DrawIt(script, &out_name, &cmdline); complain_latex_not_supported(GLE_DEVICE_EMF); cerr << endl; } #endif } void load_one_file(const char* name, CmdLineObj& cmdline, size_t* exit_code) { if (cmdline.hasOption(GLE_OPT_PREVIEW)) { GLEFileLocation loc; loc.fromFileNameDir(name, GLE_WORKING_DIR); gle_preview_file(loc.getFullPath().c_str(), cmdline); return; } try { GLERC script = load_gle_code_sub(name, cmdline); load_one_file_sub(script.get(), cmdline, exit_code); } catch (ParserError err) { string err_str; err.toString(err_str); str_uppercase_initial_capital(err_str); g_message(err_str); (*exit_code)++; } } void load_one_file_stdin(CmdLineObj& cmdline, size_t* exit_code) { try { GLERC script = load_gle_code_sub_stdin(cmdline); load_one_file_sub(script.get(), cmdline, exit_code); } catch (ParserError err) { string err_str; err.toString(err_str); str_uppercase_initial_capital(err_str); g_message(err_str); (*exit_code)++; } } gle-graphics-4.2.4c/src/gle/pass.cpp0000664000000000000000000022166111676334322015760 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ #define GRAPHDEF extern #include "all.h" #include "cutils.h" #include "mem_limits.h" #include "token.h" #include "core.h" #include "glearray.h" #include "graph.h" #include "polish.h" #include "pass.h" #include "var.h" #include "sub.h" #include "op_def.h" #include "gprint.h" #include "keyword.h" #include "gle-block.h" #include "key.h" #include "surface/gsurface.h" #include "run.h" GLEParser* g_parser; extern GLESubMap g_Subroutines; extern int **gpcode; /* gpcode is a pointer to an array of poiter to int */ void get_cap(TOKENS tk,int *ntok,int *curtok,int *pcode,int *plen); void get_join(TOKENS tk,int *ntok,int *curtok,int *pcode,int *plen); void g_marker_def(char *s1, char *s2); void font_load(void) throw(ParserError); bool execute_graph(GLESourceLine& sline, bool isCommandCheck); extern int this_line; extern int gle_debug; #define tok(n) tk[n] struct sub_st{ char name[40]; int typ; int np; int ptyp[20]; char *pname[20]; }; struct sub_st *psub; #define skip_space char *mark_name[30]; char *mrk_fname[61]; char *mrk_name[61]; char *mark_sub[30]; int mark_subp[30]; int nmark = 0; int nmrk = 0; /* pos= Offset to find the data */ /* idx= For switches, which can only have one value. */ /* The pos is the order the items will be placed in the pcode */ /*---------------------------------------------------------------------------*/ /* Input is gle command (tokenized) , output is pcode */ static int cur_mode = 0; /* 0 --> normal, 1 or greater ---> external begin...end */ void get_key_info(OPKEY lkey, int* count, int* width) { *width = 0; *count = 0; for (int i = 0; lkey[i].typ != typ_end; i++) { int p = lkey[i].pos; if (p > *width) *width = p; (*count)++; } } void GLEParserInitTokenizer(Tokenizer* tokens) { TokenizerLanguage* lang = tokens->get_language(); lang->setLineCommentTokens("!"); lang->setSpaceTokens(" \t\r\n"); lang->enableCComment(); lang->setSingleCharTokens(",;=@()[]{}"); } GLESubCallAdditParam::GLESubCallAdditParam() { } GLESubCallAdditParam::~GLESubCallAdditParam() { } int GLESubCallAdditParam::isAdditionalParam(const string& str) { return str == "NAME" ? 1 : -1; } void GLESubCallAdditParam::setAdditionalParam(int idx, const string& val, int pos) { m_Val = val; m_Pos = pos; } GLESubCallInfo::GLESubCallInfo(GLESub* sub) : m_ParamVal(sub->getNbParam()), m_ParamPos(sub->getNbParam(), -1) { m_Sub = sub; m_Addit = NULL; } GLESubCallInfo::~GLESubCallInfo() { } void GLESubCallInfo::setParam(int i, const string& val, int pos) { m_ParamVal[i] = val; m_ParamPos[i] = pos; } GLEParser::GLEParser(GLEScript* script, GLEPolish* polish) : m_lang(), m_tokens(&m_lang, false) { m_Script = script; m_polish = polish; m_auto_endif = false; m_CrSub = NULL; m_insub = false; // difference between m_CrSub and m_insub: // m_CrSub still points to last sub also after "end sub" m_blockTypes = new GLEBlocks(); m_blockTypes->addBlock(GLE_OPBEGIN_GRAPH, new GLEGraphBlockBase()); m_blockTypes->addBlock(GLE_OPBEGIN_KEY, new GLEKeyBlockBase()); m_blockTypes->addBlock(GLE_OPBEGIN_SURF, new GLESurfaceBlockBase()); } GLEParser::~GLEParser() { delete m_blockTypes; } GLEBlocks* GLEParser::getBlockTypes() { return m_blockTypes; } void GLEParser::get_block_type(int type, string& result) { char block_type_str[20]; sprintf(block_type_str, "%d", type); const char* block_type = block_type_str; switch (type) { case 1: /* path */ block_type = "path"; break; case 2: /* box */ block_type = "box"; break; case 3: /* scale */ block_type = "scale"; break; case 4: /* rotate */ block_type = "rotate"; break; case 5: /* translate */ block_type = "translate"; break; case 6: /* if */ block_type = "if"; break; case 7: /* sub */ block_type = "sub"; break; case 8: /* name */ block_type = "name"; break; case 9: /* text */ block_type = "text"; break; case 10: /* graph */ block_type = "graph"; break; case 11: /* xaxis */ block_type = "xaxis"; break; case 12: /* yaxis */ block_type = "yaxis"; break; case 13: /* x2axis */ block_type = "x2axis"; break; case 14: /* y2axis */ block_type = "y2axis"; break; case 15: /* curve */ block_type = "curve"; break; case 16: /* KEY */ block_type = "key"; break; case 17: /* origin */ block_type = "origin"; break; case 18: /* table */ block_type = "table"; break; case 19: /* clip */ block_type = "clip"; break; case 20: /* until */ block_type = "until"; break; case 21: /* shear */ block_type = "shear"; break; case 22: /* config */ block_type = "config"; break; case 23: /* tex preamble */ block_type = "tex_preamble"; break; case 24: /* surface */ block_type = "surface"; break; case 25: /* letz */ block_type = "letz"; break; case 26: /* fitz */ block_type = "fitz"; break; case 27: /* fit */ block_type = "fit"; break; case 28: /* contour */ block_type = "contour"; break; case 29: /* tex */ block_type = "tex"; break; case OP_BEGIN_OBJECT: block_type = "object"; break; } result = block_type; } void GLEParser::checkmode() throw(ParserError) { /* Check for text mode block */ if (cur_mode != 0) { string block_type; get_block_type(cur_mode, block_type); g_throw_parser_error("end of file while in block type '", block_type.c_str(), "'"); } cur_mode = 0; /* Check for other type of block */ GLESourceBlock* block = last_block(); if (block != NULL) { stringstream err; err << "end of file while in block type '" << block->getName() << "'"; err << " starting on line " << block->getFirstLine(); g_throw_parser_error(err.str()); } } void GLEParser::initTokenizer() { TokenizerLanguage* lang = getTokens()->get_language(); GLEParserInitTokenizer(getTokens()); // ; -> allows more commands on single line // = -> for variable assignments // @ -> for user defined subroutine calls // (,) -> for calls of the form proc(arg1,...,argn) // never add "." to this - e.g., required for "compatibility" command TokenizerLanguageMultiLevel* multi = new TokenizerLanguageMultiLevel(); multi->setOpenClose('(',')'); multi->setOpenClose('[',']'); multi->setOpenClose('{','}'); multi->setEndToken(' '); multi->setEndToken(';'); multi->setEndToken(','); multi->setEndToken(')'); multi->setEndToken(']'); lang->setMulti(multi); } void GLEParser::setAllowSpace(bool allow) { TokenizerLanguageMultiLevel* multi = getTokens()->get_language()->getMulti(); if (allow) multi->resetEndToken(' '); else multi->setEndToken(' '); } void GLEParser::checkValidName(const string& name, const char* type, int pos) throw(ParserError) { if (name.length() <= 0) { throw getTokens()->error(pos, string("zero length ")+type+" name"); } if (name[0] >= '0' && name[0] <= '9') { throw getTokens()->error(pos, string(type)+" name should not start with a digit"); } for (string::size_type i = 0; i < name.length(); i++) { char ch = name[i]; if (!((ch >= 'A' && ch <= 'Z') || (ch >= 'a' && ch <= 'z') || (ch >= '0' && ch <= '9') || (ch == '$') || (ch == '_'))) { throw getTokens()->error(pos+i, string("invalid character '")+ch+"' in "+type+" name"); } } } double GLEParser::evalTokenToDouble() throw(ParserError) { double x = 0.0; GLEPcodeList pc_list; GLEPcode pcode(&pc_list); Tokenizer* tokens = getTokens(); string& expr = tokens->next_multilevel_token(); int pos = tokens->token_pos_col(); try { m_polish->internalEval(expr.c_str(), &x); } catch (ParserError err) { err.incColumn(pos-1); throw err; } return x; } void GLEParser::evalTokenToString(string* str) throw(ParserError) { GLEPcodeList pc_list; GLEPcode pcode(&pc_list); Tokenizer* tokens = getTokens(); string& expr = tokens->next_multilevel_token(); int pos = tokens->token_pos_col(); try { m_polish->internalEvalString(expr.c_str(), str); } catch (ParserError err) { err.incColumn(pos-1); throw err; } } void GLEParser::evalTokenToFileName(string* str) throw(ParserError) { Tokenizer* tokens = getTokens(); const string& token = tokens->next_continuous_string_excluding("\"$+"); if (token != "") { *str = token; } else { evalTokenToString(str); } } void GLEParser::polish(GLEPcode& pcode, int *rtype) throw(ParserError) { Tokenizer* tokens = getTokens(); string& expr = tokens->next_multilevel_token(); int pos = tokens->token_pos_col(); // cout << "pos = " << pos << endl; try { // cout << "Polish: '" << expr << "'" << endl; m_polish->polish(expr.c_str(), pcode, rtype); } catch (ParserError err) { err.incColumn(pos-1); throw err; } } void GLEParser::polish_eol(GLEPcode& pcode, int *rtype) throw(ParserError) { setAllowSpace(true); polish(pcode, rtype); setAllowSpace(false); } void GLEParser::polish(const char* str, GLEPcode& pcode, int *rtype) throw(ParserError) { try { m_polish->polish(str, pcode, rtype); } catch (ParserError err) { err.setParserString(str); throw err; } } void GLEParser::polish_pos(const string& arg, int pos, GLEPcode& pcode, int* rtype) throw(ParserError) { try { m_polish->polish(arg.c_str(), pcode, rtype); } catch (ParserError err) { err.incColumn(pos-1); throw err; } } void GLEParser::get_xy(GLEPcode& pcode) throw(ParserError) { int vtype = 1; polish(pcode, &vtype); vtype = 1; polish(pcode, &vtype); } void GLEParser::get_exp(GLEPcode& pcode) throw(ParserError) { int vtype = 1; polish(pcode, &vtype); } void GLEParser::get_exp_eol(GLEPcode& pcode) throw(ParserError) { int vtype = 1; polish_eol(pcode, &vtype); } void GLEParser::get_strexp(GLEPcode& pcode) throw(ParserError) { int vtype = 2; polish(pcode, &vtype); } int GLEParser::get_anyexp(GLEPcode& pcode) throw(ParserError) { int vtype = 0; polish(pcode, &vtype); return vtype; } void GLEParser::get_if(GLEPcode& pcode) throw(ParserError) { Tokenizer* tokens = getTokens(); string expr = tokens->next_multilevel_token(); int pos = tokens->token_pos_col(); /* Support spaces between in if expression */ while (true) { string& token = tokens->next_multilevel_token(); if (str_i_equals(token.c_str(), "THEN")) { break; } else if (token == "") { throw error("'THEN' expected after if condition"); } expr += " "; expr += token; } try { int rtype = 1; // cout << "Polish: '" << expr << "'" << endl; m_polish->polish(expr.c_str(), pcode, &rtype); } catch (ParserError err) { err.incColumn(pos-1); throw err; } } void GLEParser::parse_if(int srclin, GLEPcode& pcode) throw(ParserError) { get_if(pcode); GLESourceBlock* block = add_block(GLE_SRCBLK_MAGIC+GLE_OPBEGIN_IF, srclin); block->setOffset2(pcode.size()); pcode.addInt(0); pcode.addInt(0); } void GLEParser::get_subroutine_call(GLEPcode& pcode, string* name, int poscol) throw(ParserError) { string fct_name; if (name != NULL) { fct_name = *name; } else { fct_name = m_tokens.next_token(); str_to_uppercase(fct_name); poscol = m_tokens.token_pos_col(); } GLESub* sub = sub_find((char*)fct_name.c_str()); if (sub == NULL) { throw error(poscol, "function '"+fct_name+"' not defined"); } GLESubCallInfo info(sub); pass_subroutine_call(&info, poscol); gen_subroutine_call_code(&info, pcode); } void GLEParser::pass_subroutine_call(GLESubCallInfo* info, int poscol) throw(ParserError) { GLESub* sub = info->getSub(); int np = sub->getNbParam(); string uc_token; bool mustname = false; int argcnt = 0, maxargpos = -1; // cout << "reading args for: '" << fct_name << "'" << endl; bool has_parenthesis = false; if (m_tokens.is_next_token("(")) { if (m_tokens.has_space_before()) { // in this case, "(" is part of expression in first argument m_tokens.pushback_token(); } else { has_parenthesis = true; } } while (has_parenthesis || not_at_end_command()) { /* check if argument name is given */ int argno = -1; int addidx = -1; string& token = m_tokens.next_multilevel_token(); if (token == "") { /* empty - can happen if, e.g., "," is given instead of token */ break; } str_to_uppercase(token, uc_token); argno = sub->findParameter(uc_token); if (info->getAdditParam() != NULL) { addidx = info->getAdditParam()->isAdditionalParam(uc_token); } if (argno != -1 || addidx != -1) { /* don't assume it is a name if it is also a local variable */ int var_idx, var_type; var_find((char*)uc_token.c_str(), &var_idx, &var_type); if (var_idx != -1) { argno = -1; addidx = -1; } } if (argno == -1 && addidx == -1) { if (mustname) { /* all arguments after the first optional one must be named */ stringstream err; err << "name expected before optional argument, such as: "; sub->listArgNames(err); throw error(err.str()); } /* no argument name given, just assume subsequent argument */ argno = argcnt; argcnt++; } else { /* first named argument found */ /* from now on, all must be named */ mustname = true; /* previous token was just the name, get value */ token = m_tokens.next_multilevel_token(); } if (argno > maxargpos) { /* compute maximum for 'too many arguments error' */ maxargpos = argno; } if (addidx != -1) { info->getAdditParam()->setAdditionalParam(addidx, token, m_tokens.token_pos_col()); } if (argno != -1 && argno < np) { if (info->getParamPos(argno) != -1) { /* make sure not to give the same argument twice */ stringstream err; err << "two values given for argument '" << sub->getParamNameShort(argno); err << "' of '" << sub->getName() << "'"; throw error(err.str()); } info->setParam(argno, token, m_tokens.token_pos_col()); } if (has_parenthesis) { int token = m_tokens.ensure_next_token_in(",)"); if (token == ')') break; } } /* error if too many arguments are given */ if (maxargpos >= np) { stringstream err; err << "too many arguments in call to '" << sub->getName() << "': "; err << (maxargpos+1) << " > " << np; throw error(poscol, err.str()); } /* fill in default values */ bool has_all = true; for (int i = 0; i < np; i++) { if (info->getParamPos(i) == -1) { const string& value = sub->getDefault(i); if (value != "") { info->setParam(i, value, -2); /* 2 indicates default */ } else { has_all = false; } } } /* error if some not given */ if (!has_all) { int count = 0; stringstream err; err << "insufficient arguments in call to '" << sub->getName() << "': no value for: "; for (int i = 0; i < np; i++) { if (info->getParamPos(i) == -1) { if (count != 0) err << ", "; err << sub->getParamNameShort(i); count++; } } throw error(poscol, err.str()); } } void GLEParser::gen_subroutine_call_polish_arg(GLESubCallInfo* info, int i, GLEPcode& pcode) throw(ParserError) { GLESub* sub = info->getSub(); try { int vtype = sub->getParamType(i); m_polish->polish(info->getParamVal(i).c_str(), pcode, &vtype); } catch (ParserError err) { if (info->getParamPos(i) != -2) { /* in place given argument */ err.incColumn(info->getParamPos(i)-1); } else { /* default argument */ err.setParserString(info->getParamVal(i)); } throw err; } } void GLEParser::evaluate_subroutine_arguments(GLESubCallInfo* info, GLEArrayImpl* arguments) { GLESub* sub = info->getSub(); int np = sub->getNbParam(); arguments->resize(np); GLEPcodeList pcodeList; for (int i = 0; i < np; i++) { GLEPcode pcode(&pcodeList); gen_subroutine_call_polish_arg(info, i, pcode); double oval; const char* ostr; int cp = 0; int otyp = sub->getParamType(i); ::eval((int*)&pcode[0], &cp, &oval, &ostr, &otyp); if (sub->getParamType(i) == 2) { if (otyp == 1) { ostringstream str_cnv; str_cnv << oval; arguments->setObject(i, new GLEString(str_cnv.str())); } else { arguments->setObject(i, new GLEString(ostr)); } } else { arguments->setDouble(i, oval); } } } void GLEParser::gen_subroutine_call_code(GLESubCallInfo* info, GLEPcode& pcode) throw(ParserError) { /* pass all arguments */ GLESub* sub = info->getSub(); int np = sub->getNbParam(); pcode.addInt(PCODE_EXPR); /* Expression follows */ int savelen = pcode.size(); /* Used to set acutal length at end */ pcode.addInt(0); /* Length of expression */ for (int i = 0; i < np; i++) { gen_subroutine_call_polish_arg(info, i, pcode); } pcode.addFunction(sub->getIndex()+LOCAL_START_INDEX); pcode.setInt(savelen, pcode.size() - savelen - 1); } GLESub* GLEParser::get_subroutine_declaration(GLEPcode& pcode) throw(ParserError) { string uc_token; string& token = m_tokens.next_token(); str_to_uppercase(token, uc_token); GLESub* sub = sub_find(uc_token); if (sub != NULL) { // Re-declaration: check if number of arguments and argument names are ok vector poss; vector args; while (not_at_end_command()) { token = m_tokens.next_token(); str_to_uppercase(token); args.push_back(token); poss.push_back(m_tokens.token_column()); } if ((int)args.size() != sub->getNbParam()) { stringstream err; err << "subroutine '" << uc_token << "' number of arguments: "; err << args.size() << " <> " << sub->getNbParam(); if (sub->getStart() != -1) { // May be declared from previous run - if QGLE commits changes back to GLE script err << " as declared at: "; getSource()->sourceLineFileAndNumber(sub->getStart()-1, err); } throw error(err.str()); } for (int i = 0; i < sub->getNbParam(); i++) { if (!str_i_equals(args[i], sub->getParamName(i))) { stringstream err; err << "subroutine '" << uc_token << "' argument " << (i+1) << ": '"; err << args[i] << "' <> '" << sub->getParamName(i) << "'"; if (sub->getStart() != -1) { // May be declared from previous run - if QGLE commits changes back to GLE script err << " as declared at: "; getSource()->sourceLineFileAndNumber(sub->getStart()-1, err); } throw error(poss[i], err.str()); } } var_set_local_map(sub->getLocalVars()); } else { sub = getSubroutines()->add(uc_token); var_set_local_map(sub->getLocalVars()); for (int np = 0; not_at_end_command(); np++) { token = m_tokens.next_token(); str_to_uppercase(token, uc_token); sub_param(sub, uc_token); if (!valid_var((char*)uc_token.c_str())) { throw error("invalid subroutine parameter"); } } } return sub; } void GLEParser::get_subroutine_default_param(GLESub* sub) throw(ParserError) { if (sub == NULL) { return; } /* Find parameter */ string uc_token; string& token = m_tokens.next_token(); str_to_uppercase(token, uc_token); int idx = sub->findParameter(uc_token); if (idx == -1) { stringstream err; err << "subroutine '" << sub->getName() << "' has no parameter named '" << token << "'"; throw m_tokens.error(err.str()); } token = m_tokens.next_multilevel_token(); sub->setDefault(idx, token); } int GLEParser::get_optional(OPKEY lkey, GLEPcode& pcode) throw(ParserError) { // find the largest width int count, width; get_key_info(lkey, &count, &width); // the location in the pcode tells what option it is, must remember // zero all the optional parameters. // puts zero in for each option wheather it is there or not int plen = pcode.size(); for (int i = 0; i < width+1; i++) { pcode.addInt(0); } int ret = -1; while (m_tokens.has_more_tokens()) { string& token = m_tokens.next_token(); if (token == ";") { m_tokens.pushback_token(); return ret; } bool found = false; for (int i = 0; i < count && !found; i++) { if (str_i_equals(token.c_str(), lkey[i].name)) { ret = get_one_option(&lkey[i], pcode, plen); found = true; } } if (!found) { throw create_option_error(lkey, count, token); } } return ret; } ParserError GLEParser::create_option_error(OPKEY lkey, int count, const string& token) { stringstream strm; if (count == 1) { strm << "found '" << token << "', but expecting '" << lkey[0].name << "'"; } else { strm << "found '" << token << "', but expecting one of:"; for (int i = 0; i < count; i++) { if (i % 5 == 0) { strm << endl << " "; } else { strm << " "; } strm << lkey[i].name; if (i < count-1) strm << ","; } } return m_tokens.error(strm.str()); } void GLEParser::duplicate_error(GLEPcode& pcode, int pos) throw(ParserError) { if (pcode.getInt(pos) != 0) throw error("duplicate or illegal combination of qualifiers"); } int GLEParser::get_one_option(op_key* lkey, GLEPcode& pcode, int plen) throw(ParserError) { // switches int placed in directly, 1 present, 0 not present // expressions LONG* pointed to, 0 if not present. // color/fill LONG* Pointer to exp 0 if not present. // marker LONG* Pointer to exp 0 if not present. // lstyle LONG* Pointer to exp 0 if not present. // font int* Pointer to string expression. // justify int int pos = plen + lkey->pos - 1; duplicate_error(pcode, pos); switch (lkey->typ) { case typ_val: pcode.setInt(pos, pcode.size() - pos); get_exp(pcode); break; case typ_val2: pcode.setInt(pos, pcode.size() - pos); get_exp(pcode); pos++; duplicate_error(pcode, pos); pcode.setInt(pos, pcode.size() - pos); get_exp(pcode); break; case typ_val4: pcode.setInt(pos, pcode.size() - pos); get_exp(pcode); get_exp(pcode); get_exp(pcode); get_exp(pcode); break; case typ_str: pcode.setInt(pos, pcode.size() - pos); get_strexp(pcode); break; case typ_switch: pcode.setInt(pos, lkey->idx); return lkey->idx; break; case typ_color: case typ_fill: pcode.setInt(pos, pcode.size() - pos); get_fill(pcode); break; case typ_marker: pcode.setInt(pos, pcode.size() - pos); get_marker(pcode); break; case typ_lstyle: pcode.setInt(pos, pcode.size() - pos); get_exp(pcode); break; case typ_justify: pcode.setInt(pos, get_first(op_justify)); break; case typ_arrow: pcode.setInt(pos, get_first(op_arrow)); break; default : gprint("*** error non existent type ***"); break; } return -1; } int GLEParser::get_first(OPKEY lkey) throw(ParserError) { return get_first(m_tokens.next_token(), lkey); } int GLEParser::get_first(const string& token, OPKEY lkey) throw(ParserError) { int count, width; get_key_info(lkey, &count, &width); for (int i = 0; i < count; i++) { if (str_i_equals(token.c_str(), lkey[i].name)) { return lkey[i].idx; } } throw create_option_error(lkey, count, token); } bool GLEParser::try_get_token(const char* token) throw(ParserError) { string& my_token = m_tokens.try_next_token(); if (str_i_equals(token, my_token.c_str())) { return true; } else if (my_token != "") { m_tokens.pushback_token(); } return false; } void GLEParser::get_token(const char* token) throw(ParserError) { string& my_token = m_tokens.next_token(); if (!str_i_equals(token, my_token.c_str())) { throw error(string("expected '")+token+"', but found '"+my_token+"' instead"); } } void GLEParser::get_fill(GLEPcode& pcode) throw (ParserError) { get_color(pcode); } bool pass_color_hash_value(const string& color, int* result, IThrowsError* error) { if (color.length() > 1 && color[0] == '#') { if (color.length() != 7) { throw error->throwError("illegal color specification '", color.c_str(), "'"); } colortyp c; int err = g_hash_string_to_color(color, &c); if (err != 0) { int pos = error->getErrorPosition() + err; throw error->throwError(pos, string("illegal color specification '") + color + "'"); } *result = c.l; return true; } else { return false; } } GLERC pass_color_list_or_fill(const string& color, IThrowsError* error) { GLERC result; string uc_color; str_to_uppercase(color, uc_color); GLEColor* gleColor = GLEGetColorList()->get(uc_color); if (gleColor != NULL) { result = gleColor->clone(); } else { int fillDescr = 0; if (gt_firstval_err(op_fill_typ, uc_color.c_str(), &fillDescr)) { result = new GLEColor(); if (unsigned(fillDescr) == GLE_FILL_CLEAR) { result->setTransparent(true); } else { result->setFill(new GLEPatternFill(fillDescr)); } } else { throw error->throwError("found '", color.c_str(), "', but expecting color or fill specification"); } } return result; } void GLEParser::get_color(GLEPcode& pcode) throw (ParserError) { int vtype = 1; int result = 0; string& token = m_tokens.next_token(); if (pass_color_hash_value(token, &result, &m_tokens)) { GLEColor color; color.setHexValue(result); pcode.addDoubleExpression(color.getDoubleEncoding()); } else if (is_float(token)) { string expr(string("CVTGRAY(") + token + ")"); polish(expr.c_str(), pcode, &vtype); } else if (str_i_str(token.c_str(), "RGB") != NULL) { m_tokens.pushback_token(); get_exp(pcode); } else if (token == "(") { string expr(string("CVTGRAY(") + m_tokens.next_token() + ")"); polish(expr.c_str(), pcode, &vtype); m_tokens.ensure_next_token(")"); } else if (str_starts_with(token, "\"") || str_var_valid_name(token)) { string expr(string("CVTCOLOR(") + token + ")"); polish(expr.c_str(), pcode, &vtype); } else { GLERC color(pass_color_list_or_fill(token, &m_tokens)); pcode.addDoubleExpression(color->getDoubleEncoding()); } } GLERC pass_color_var(const char *s) throw(ParserError) { GLERC color(new GLEColor()); int result = 0; double xx = 0.0; string token(s); if (token.empty()) { g_throw_parser_error("expecting color name, but found empty string"); } else if (pass_color_hash_value(token, &result, g_get_throws_error())) { color->setHexValue(result); } else if (is_float(token)) { string expr(string("CVTGRAY(") + token + ")"); polish_eval((char*)expr.c_str(), &xx); color->setDoubleEncoding(xx); } else if (str_i_str(s, "RGB") != NULL) { polish_eval((char*)s, &xx); color->setDoubleEncoding(xx); } else if (token.length() > 2 && token[0] == '(' && token[token.length() - 1] == ')') { string expr(string("CVTGRAY") + token); polish_eval((char*)expr.c_str(), &xx); color->setDoubleEncoding(xx); } else if (str_starts_with(token, "\"") || str_var_valid_name(token)) { string expr(string("CVTCOLOR(") + token + ")"); polish_eval((char*)expr.c_str(), &xx); color->setDoubleEncoding(xx); } else { color = pass_color_list_or_fill(token, g_get_throws_error()); } return color; } /* int pass_color_var(const char *s) throw(ParserError) { if (strchr(s,'$') != NULL) { int idx, typ; char tmpcol[100]; string var_str = s; str_to_uppercase(var_str); var_find((char*)var_str.c_str(), &idx, &typ); if (idx >= 0) { var_getstr(idx, tmpcol); return pass_color(tmpcol); } else { g_throw_parser_error("color '", s, "' not defined"); return 0; } } else { return pass_color(s); } } */ int get_marker_string(const string& marker, IThrowsError* error) { /* if 0, maybe its a user defined marker, ie a subroutine */ /* Use -ve to signify subroutine instead of normal marker */ int mark_idx = 0; for (int i = 0; i < nmark; i++) { if (str_i_equals(mark_name[i], marker.c_str())) { mark_idx = -(++i); break; } } if (mark_idx == 0) { for (int i = nmrk-1; i >= 0; i--) { if (str_i_equals(mrk_name[i], marker.c_str())) { mark_idx = ++i; break; } } } if (mark_idx == 0) { throw error->throwError("invalid marker name '", marker.c_str(), "'"); } return mark_idx; } void GLEParser::get_marker(GLEPcode& pcode) throw (ParserError) { int vtype = 1; string& token = m_tokens.next_token(); if (token == "(" || is_float(token)) { string expr = string("CVTINT(")+token+")"; polish(expr.c_str(), pcode, &vtype); } else if (str_starts_with(token, "\"") || str_var_valid_name(token)) { string expr = string("CVTMARKER(")+token+")"; polish(expr.c_str(), pcode, &vtype); } else { pcode.addInt(8); pcode.addInt(get_marker_string(token, &m_tokens)); } } int pass_marker(char *name) throw(ParserError) { string marker; polish_eval_string(name, &marker); return get_marker_string(marker, g_get_throws_error()); } void GLEParser::define_marker_1(GLEPcode& pcode) throw (ParserError) { string name; Tokenizer* tokens = getTokens(); str_to_uppercase(tokens->next_token(), name); string font = tokens->next_token(); int ccc = tokens->next_integer(); double sz = tokens->next_double(); double dx = tokens->next_double(); double dy = tokens->next_double(); g_defmarker((char*)name.c_str(), (char*)font.c_str(), ccc, dx, dy, sz, true); } void GLEParser::define_marker_2(GLEPcode& pcode) throw (ParserError) { string name, sub; Tokenizer* tokens = getTokens(); tokens->ensure_next_token_i("marker"); str_to_uppercase(tokens->next_token(), name); str_to_uppercase(tokens->next_token(), sub); g_marker_def((char*)name.c_str(), (char*)sub.c_str()); } /* Data types: - fill - color - marker - font - justify - join - cap */ int get_font_index(const string& token, IThrowsError* error) { if (get_nb_fonts() == 0) font_load(); int count = get_nb_fonts(); // font zero is a dummy! for (int i = 1; i < count; i++) { const char* name = get_font_name(i); if (str_i_equals(name, token.c_str())) { return i; } } stringstream strm; strm << "invalid font name {" << token << "}, expecting one of:"; int idx = 0; for (int i = 1; i < count; i++) { if (idx % 5 == 0) { strm << endl << " "; } else { strm << " "; } if (get_font_name(i) != NULL) { strm << get_font_name(i); bool has_more = false; for (int j = i+1; j < count; j++) { if (get_font_name(j) != NULL) { has_more = true; break; } } if (has_more) strm << ","; idx++; } } throw error->throwError(strm.str()); } void GLEParser::get_font(GLEPcode& pcode) throw (ParserError) { string& token = m_tokens.next_token(); if (str_starts_with(token, "\"") || str_var_valid_name(token)) { int etype = 1; string parse("CVTFONT(" + token + ")"); polish(parse.c_str(), pcode, &etype); return; } pcode.addInt(8); pcode.addInt(get_font_index(token, &m_tokens)); } int pass_font(const char *p) { string token(p); if (str_starts_with(token, "\"") || str_var_valid_name(token)) { int result = 0; double xx = 0.0; string parse("CVTFONT(" + token + ")"); polish_eval((char*)parse.c_str(), &xx); memcpy(&result, &xx, sizeof(int)); return result; } else { return get_font_index(token, g_get_throws_error()); } } void GLEParser::get_papersize(GLEPcode& pcode) throw (ParserError) { const string& token = m_tokens.next_token(); int type = g_papersize_type(token); if (type == GLE_PAPER_UNKNOWN) { m_tokens.pushback_token(); pcode.addInt(0); get_xy(pcode); } else { pcode.addInt(1); pcode.addInt(type); } } void GLEParser::get_justify(GLEPcode& pcode) throw (ParserError) { const string& token = m_tokens.next_token(); if (str_starts_with(token, "\"") || str_var_valid_name(token)) { int etype = 1; string parse("JUSTIFY(" + token + ")"); polish(parse.c_str(), pcode, &etype); return; } pcode.addInt(8); pcode.addInt(get_first(token, op_justify)); } int pass_justify(const char *s) { string token(s); if (str_starts_with(token, "\"") || str_var_valid_name(token)) { int result = 0; double xx = 0.0; string parse("JUSTIFY(" + token + ")"); polish_eval((char*)parse.c_str(), &xx); memcpy(&result, &xx, sizeof(int)); return result; } return gt_firstval(op_justify, s); } void GLEParser::get_join(GLEPcode& pcode) throw (ParserError) { pcode.addInt(get_first(op_join)); } void GLEParser::get_cap(GLEPcode& pcode) throw (ParserError) { pcode.addInt(get_first(op_cap)); } void GLEParser::get_var_add(int *var, int *vtype) throw (ParserError) { string uc_token; string& token = m_tokens.next_token(); str_to_uppercase(token, uc_token); var_findadd((char*)uc_token.c_str(), var, vtype); } void GLEParser::get_var(GLEPcode& pcode) throw (ParserError) { int var; int vtype = 0; get_var_add(&var, &vtype); pcode.addInt(var); } bool GLEParser::not_at_end_command() { string& token = m_tokens.try_next_token(); if (token == "") return false; if (token == ";") { m_tokens.pushback_token(); return false; } m_tokens.pushback_token(); return true; } bool GLEParser::test_not_at_end_command() { string& token = m_tokens.try_next_token(); if (token == "") return false; if (token == ";") return false; m_tokens.pushback_token(); return true; } GLESub* GLEParser::is_draw_sub(const string& str) { string subname; string::size_type i = str.find('.'); if (i != string::npos) { subname = str.substr(0, i); } else { subname = str; } str_to_uppercase(subname); return sub_find((char*)subname.c_str()); } bool GLEParser::pass_block_specific(GLESourceLine& sourceLine, GLEPcode& pcode) { for (int i = m_blocks.size() - 1; i >= 0; i--) { GLESourceBlock* block = &m_blocks[i]; GLEBlockBase* blockType = getBlockTypes()->getBlockIfExists(block->getType() - GLE_SRCBLK_MAGIC); if (blockType != 0) { if (blockType->checkLine(sourceLine)) { int pos_start = pcode.size(); pcode.addInt(0); pcode.addInt(GLE_KW_BLOCK_COMMAND); pcode.addInt(block->getType() - GLE_SRCBLK_MAGIC); pcode.setInt(pos_start, pcode.size()-pos_start); return true; } } } return false; } void GLEParser::passt(GLESourceLine &SLine, GLEPcode& pcode) throw(ParserError) { resetSpecial(); static int i,f,vtyp,v,vidx; int srclin = SLine.getGlobalLineNo(); this_line = srclin; int fctkey; int nbcmd = 0; int position; GLESourceBlock* block = last_block(); string first, temp_str; if (cur_mode != 0) { do_text_mode(SLine, getTokens(), pcode); return; } setAllowSpace(false); bool single_cmd = false; Tokenizer* tokens = getTokens(); if (block != 0) { if (m_auto_endif) { // Allow for "IF test THEN code" blocks without "END IF" if (block->getType() == GLE_SRCBLK_MAGIC+GLE_OPBEGIN_IF) { string& token = tokens->try_next_token(); if (str_i_equals(token, "ELSE")) m_auto_endif = false; if (token != "") tokens->pushback_token(); } else if (block->getType() != GLE_SRCBLK_ELSE) { m_auto_endif = false; } if (m_auto_endif) { m_auto_endif = false; do_endif(srclin, pcode); } } if (pass_block_specific(SLine, pcode)) { return; } } int pos_start = pcode.size(); while (tokens->has_more_tokens()) { int vtype = 0; int etype = 1; bool allow_extra_tokens = false; int pos_endoffs = pcode.size(); pcode.addInt(0); // save space for end offset str_to_uppercase(tokens->next_token(), first); int pos_first = tokens->token_pos_col(); find_mkey((char*)first.c_str(), &fctkey); // cout << "first = " << first << " idx = " << fctkey << endl; if (fctkey == 0) { if (first == "@") { pcode.addInt(52); get_subroutine_call(pcode); } else if (first == "LOCAL") { // Declaration of local variable if (!has_local_var_map()) { throw error("can't define a local variable outside of sub"); } // Get variable name str_to_uppercase(tokens->next_token(), temp_str); checkValidName(temp_str, "variable", tokens->token_pos_col()); pcode.addInt(51); var_add_local((char*)temp_str.c_str(),&vidx,&vtype); pcode.addInt(vidx); // Immediately assign a value to it if (tokens->is_next_token("=")) { polish_eol(pcode, &vtype); } else { // Or assign the value of zero to it if (vtype == 1) pcode.addDoubleExpression(0); else pcode.addStringExpression(""); // And possibly define more local variables in one go while (tokens->is_next_token(",")) { str_to_uppercase(tokens->next_token(), temp_str); checkValidName(temp_str, "variable", tokens->token_pos_col()); pcode.addInt(51); var_add_local((char*)temp_str.c_str(),&vidx,&vtype); pcode.addInt(vidx); if (vtype == 1) pcode.addDoubleExpression(0); else pcode.addStringExpression(""); } } } else if (tokens->is_next_token("=")) { // Variable assignment checkValidName(first, "variable", pos_first); pcode.addInt(51); var_findadd((char*)first.c_str(),&vidx,&vtype); pcode.addInt(vidx); polish_eol(pcode, &vtype); } else { /* call subroutine without @ sign */ pcode.addInt(52); get_subroutine_call(pcode, &first, pos_first); } } else { pcode.addInt(fctkey); switch (fctkey) { case 65: /* PSCOMMENT */ temp_str = m_tokens.read_line(); str_remove_quote(temp_str); pcode.addStringNoID(temp_str); break; case 66: /* BB_TWEAK */ break; case 1: /* ALINE */ get_xy(pcode); get_optional(op_line, pcode); break; case 2: /* AMOVE */ get_xy(pcode); break; case GLE_KW_ABOUND: get_xy(pcode); break; case 73: /* ASETPOS */ case 81: /* RSETPOS */ get_xy(pcode); break; case 3: /* ARC r a1 a2 */ get_exp(pcode); get_xy(pcode); get_optional(op_arc, pcode); break; case 4: /* ARCTO x1 y1 x2 y2 r */ get_xy(pcode); get_xy(pcode); get_exp(pcode); break; case 5: /* BEGIN "PATH" "BOX" "SCALE" "ROTATE" "TRANSLATE" "SHEAR" "GRAPH" ... */ single_cmd = true; f = get_first(op_begin); pcode.addInt(f); /*------------------------------------------*/ /* Check if begin variable matches */ /*------------------------------------------*/ switch (f) { case 1: /* path */ get_optional(op_begin_path, pcode); break; case 2: /* box */ get_optional(op_begin_box, pcode); break; case 3: /* scale */ get_xy(pcode); get_optional(op_begin_scale, pcode); break; case 21: /* shear */ get_xy(pcode); get_optional(op_begin_scale, pcode); break; case 4: /* rotate */ get_exp(pcode); get_optional(op_begin_scale, pcode); break; case 5: /* translate */ get_xy(pcode); get_optional(op_begin_scale, pcode); break; case 19: /* clip */ case 17: /* origin */ break; case 6: /* if */ case 7: /* sub */ throw error("not a valid begin option"); break; case 8: /* name joe */ get_strexp(pcode); get_optional(op_begin_name, pcode); break; case 9: /* text */ cur_mode = 9; get_optional(op_begin_text, pcode); break; case 10: /* graph */ break; case 11: /* xaxis */ cur_mode = 11; break; case 12: /* yaxis */ cur_mode = 12; break; case 13: /* x2axis */ cur_mode = 13; break; case 14: /* y2axis */ cur_mode = 14; break; case 15: /* curve */ break; case 18: /* table */ cur_mode = 18; break; case 22: /* config */ cur_mode = 22; get_strexp(pcode); break; case 23: /* tex preamble */ cur_mode = 23; break; case 25: /* letz */ cur_mode = 25; break; case 26: /* fitz */ cur_mode = 26; break; case 27: /* fit */ cur_mode = 27; break; case 28: /* contour */ cur_mode = 28; break; case 29: /* tex */ cur_mode = 29; get_optional(op_tex, pcode); break; case OP_BEGIN_OBJECT: if (isInSub()) { m_CrSub = getSubroutines()->add(m_CrSub); pcode.addInt(0); pcode.addInt(m_CrSub->getIndex()); get_strexp(pcode); /* name for object */ } else { setInSub(true); m_CrSub = get_subroutine_declaration(pcode); m_CrSub->setIsObject(true); pcode.addInt(1); pcode.addInt(m_CrSub->getIndex()); } break; case OP_BEGIN_LENGTH: get_var(pcode); break; } /* here should copy source line across for "begin width 3 */ if (cur_mode>0) pcode.addInt(0); else add_block(GLE_SRCBLK_MAGIC+f, srclin); break; case 6: /* BEZIER x1 y1 x2 y2 x3 y3 */ get_xy(pcode); get_xy(pcode); get_xy(pcode); break; case 7 : /* box x y [left | center | right] [fill xxx] name*/ get_xy(pcode); get_optional(op_box, pcode); break; case 52: /* call subroutine */ get_subroutine_call(pcode); break; case 8 : /* circle rad fill */ get_exp(pcode); get_optional(op_circle, pcode); break; case 70 : /* ellipse major minor fill */ get_xy(pcode); get_optional(op_circle, pcode); break; case 71 : /* elliptical_arc major minor a1 a2 fill */ get_xy(pcode); get_xy(pcode); get_optional(op_arc, pcode); break; case 72 : /* elliptical_narc major minor a1 a2 fill */ get_xy(pcode); get_xy(pcode); get_optional(op_arc, pcode); break; case 9 : /* closepath */ break; case GLE_KW_COMMENT: /* comment ! or blank line */ break; case 10 : /* curve sx sy x y x y x y ... ex ey */ while (not_at_end_command()) { pcode.addInt(111); get_xy(pcode); } pcode.addInt(999); break; case 60 : /* defmarker xyz rm 33 1 -.4 -.2 */ define_marker_1(pcode); break; case GLE_KW_DEFCOLOR: pcode.setLast(GLE_KW_COMMENT); temp_str = m_tokens.next_token(); str_remove_quote(temp_str); { GLERC color(pass_color_var(m_tokens.next_token().c_str())); GLEGetColorList()->defineColor(temp_str, color.get()); } break; case GLE_KW_COMPATIBILITY: pcode.setLast(GLE_KW_COMMENT); temp_str = m_tokens.next_token(); g_set_compatibility(temp_str); if (g_get_compatibility() < GLE_COMPAT_MOST_RECENT) { setSpecial(GLE_PARSER_INCLUDE); setInclude(string("compatibility.gle")); } break; case 11 : /* define marker jj subname */ define_marker_2(pcode); break; case 12 : pcode.addStringNoID(SLine.getCode()); break; case 13 :/* ELSE ... */ if (nbcmd > 0) { throw error(pos_first, "command must be the first command on the line"); } block = check_block_type(pos_first, GLE_SRCBLK_ELSE, GLE_SRCBLK_MAGIC+GLE_OPBEGIN_IF, -1); if (try_get_token("IF")) { add_else_block_update(srclin, pcode, pos_start, true); pcode.setInt(pos_endoffs, pcode.size()-pos_start); pos_endoffs = pcode.size(); pcode.addInt(0); pcode.addInt(22); parse_if(srclin, pcode); allow_extra_tokens = true; } else if (tokens->has_more_tokens()) { add_else_block_update(srclin, pcode, pos_start, false); m_auto_endif = true; allow_extra_tokens = true; } else { pcode.setInt(block->getOffset2(), srclin+1); add_else_block(srclin, pcode, false); } break; case 14 : /* END if, sub, path, box, scale, translate, rotate */ single_cmd = true; i = get_optional(op_begin, pcode); if (i == 0) throw error("type of 'end' missing, e.g. end if, end sub"); if (i == GLE_OPBEGIN_IF) { check_block_type(pos_first, GLE_SRCBLK_MAGIC+i, GLE_SRCBLK_MAGIC+i, GLE_SRCBLK_ELSE); do_endif(srclin+1, pcode); } else { block = check_block_type(pos_first, GLE_SRCBLK_MAGIC+i, GLE_SRCBLK_MAGIC+i, -1); if (i == GLE_OPBEGIN_SUB || i == OP_BEGIN_OBJECT) { if (!isInSub() || m_CrSub == NULL) { throw error("'end sub' without corresponding 'sub [name]'"); } m_CrSub->setStartEnd(block->getFirstLine(), srclin); do_endsub(srclin, pcode); if (m_CrSub->getParentSub() == NULL) { /* subroutine or static object */ var_clear_local(); setInSub(false); } m_CrSub = m_CrSub->getParentSub(); } else if (i == GLE_OPBEGIN_BOX) { pcode.addInt(block->getFirstLine()); } remove_last_block(); } break; case 16 : /* FILL (fillpath) */ break; case 15 : /* FCLOSE inchan */ get_exp(pcode); break; case 17: /* fopen "a.a" inchan read|write */ get_strexp(pcode); get_var_add(&v,&vtyp); pcode.addInt(v); if (try_get_token("WRITE")) { pcode.addInt(1); } else { get_token("READ"); pcode.addInt(0); } break; case 61 : /* fread CHAN a$ x */ case 62 : /* freadln */ while (not_at_end_command()) { get_var_add(&v, &vtyp); pcode.addInt(49); pcode.addInt(v); pcode.addInt(vtyp); } break; case 63 : /* fwrite */ case 64 : /* fwriteln */ while (not_at_end_command()) { pcode.addInt(49); position = pcode.size(); pcode.addInt(0); pcode.setInt(position, get_anyexp(pcode)); } break; case 75 : /* fgetline */ get_exp(pcode); get_var_add(&v, &vtyp); pcode.addInt(v); break; case 76 : /* ftokenizer chan commenttoks spacetoks singlechartoks */ get_exp(pcode); get_strexp(pcode); get_strexp(pcode); get_strexp(pcode); break; case 77: /* papersize */ get_papersize(pcode); break; case 78: /* margins */ get_xy(pcode); get_xy(pcode); break; case 79: /* orientation */ pcode.addInt(get_first(op_orientation)); break; case 18 : /* for var = exp1 to exp2 [step exp3] */ /* create new for block */ block = add_block(GLE_SRCBLK_FOR, srclin); get_var_add(&v, &vtyp); block->setVariable(v); /* translate first part of FOR into variable assignment */ pcode.setInt(pcode.size()-1, 51); pcode.addInt(v); get_token("="); get_exp(pcode); pcode.setInt(pos_endoffs, pcode.size()-pos_start); /* now add real FOR, jump by next should go to this location */ pos_endoffs = pcode.size(); block->setOffset1(pos_endoffs-pos_start); pcode.addInt(0); pcode.addInt(18); /* opcode FOR */ pcode.addInt(v); block->setOffset2(pcode.size()); pcode.addInt(0); get_token("TO"); get_exp(pcode); get_optional(op_for_step, pcode); break; case 19 :/* goto */ throw error("GOTO is considered bad programming practice :-)"); break; case 20 : /* gsave */ break; case 54 : /* grestore */ break; case 21 : /* icon x y */ get_xy(pcode); break; case 22 : /* IF exp THEN ... */ if (nbcmd > 0) { // Do not move to parse_if (the latter is also used for "else if") throw error(pos_first, "command must be the first command on the line"); } parse_if(srclin, pcode); if (tokens->has_more_tokens()) { m_auto_endif = true; allow_extra_tokens = true; } break; case 55 : /* POSTCRIPT file$ width height */ get_strexp(pcode); get_xy(pcode); break; // // -- no need to ifdef these as // case 67 : /* TIFF file$ width height */ printf("\nWarning: TIFF is deprecated: use BITMAP instead\n"); get_strexp(pcode); get_xy(pcode); get_optional(op_bitmap, pcode); break; case 68 : /* BITMAP file width height [type colors compress dpi greyscale resize] */ get_strexp(pcode); get_xy(pcode); get_optional(op_bitmap, pcode); break; case 69 : /* BITMAP_INFO file width, height [type] */ get_strexp(pcode); get_var(pcode); get_var(pcode); get_optional(op_bitmap_info, pcode); break; case GLE_KW_COLORMAP: get_strexp(pcode); // function get_xy(pcode); // xrange get_xy(pcode); // yrange get_xy(pcode); // bitmap size get_xy(pcode); // screen size get_optional(op_colormap, pcode); break; case 56 : /* draw a previously defined object */ { temp_str = tokens->next_token(); GLESub* sub = is_draw_sub(temp_str); tokens->pushback_token(); if (sub != NULL) { /* name of object = subroutine -> static call */ pcode.addInt(0); get_strexp(pcode); GLESubCallInfo info(sub); GLESubCallAdditParam addit; info.setAdditParam(&addit); pass_subroutine_call(&info, tokens->token_pos_col()); vtyp = 2; if (addit.getVal() == "") polish_pos("\"\"", 0, pcode, &vtyp); else polish_pos(addit.getVal(), addit.getPos(), pcode, &vtyp); gen_subroutine_call_code(&info, pcode); } else { /* call to object defined by variable */ pcode.addInt(1); get_strexp(pcode); get_optional(op_draw, pcode); } } break; case 23 : /* include "string" */ pcode.setLast(GLE_KW_COMMENT); if (m_tokens.is_next_token("[")) { /* include [0-4.0.12] "somefile.gle" */ /* support for compatibility mode */ temp_str = tokens->next_token(); int from = g_parse_compatibility(temp_str); m_tokens.ensure_next_token("-"); temp_str = tokens->next_token(); int to = g_parse_compatibility(temp_str); m_tokens.ensure_next_token("]"); temp_str = tokens->next_token(); if (g_get_compatibility() >= from && g_get_compatibility() <= to) { setSpecial(GLE_PARSER_INCLUDE); str_remove_quote(temp_str); setInclude(temp_str); } } else { setSpecial(GLE_PARSER_INCLUDE); temp_str = tokens->next_token(); str_remove_quote(temp_str); setInclude(temp_str); } break; case 58 : /* bigfile "string" This waits until 'run' to read the file*/ get_strexp(pcode); break; case 24 : /* input 1 a$=20,fill$=10,j=6 prompt "Age and name " */ /* input 1 a$,yval prompt "Age and name " */ case 25 : /* join a.tl->b.br , string, arrows&line, string */ get_strexp(pcode); pcode.addInt(get_first(op_joinname)); get_strexp(pcode); get_optional(op_curve, pcode); break; case 26 : /* marker square [2.2] */ get_marker(pcode); if (not_at_end_command()) { get_exp(pcode); } else { pcode.addInt(0); } break; case 27 : /* MOVE name */ get_strexp(pcode); break; case 28 : /* narc, Arc in clockwise direction */ get_exp(pcode); get_xy(pcode); get_optional(op_arc, pcode); break; case 29 : /* newpath */ break; case 30 : /* next */ single_cmd = true; if (not_at_end_command()) { block = check_block_type(pos_first, GLE_SRCBLK_NEXT, GLE_SRCBLK_FOR, -1); get_var_add(&v, &vtyp); check_loop_variable(v); } else { block = check_block_type(pos_first, GLE_SRCBLK_NEXT, GLE_SRCBLK_WHILE, GLE_SRCBLK_UNTIL); } /* Set jump address */ pcode.addInt(block->getFirstLine()); pcode.addInt(block->getOffset1()); /* Update address in first line @ getOffset2() */ pcode.setInt(block->getOffset2(), srclin); /* And remove block from stack */ remove_last_block(); break; case 31 : /* pie r a1 a2 fill pattern */ get_exp(pcode); get_xy(pcode); get_optional(op_fill, pcode); break; case 33 : get_xy(pcode); get_xy(pcode); get_xy(pcode); break; case 34 : /* region */ throw error("REGION is not yet implemented"); break; case 50 : /* Return EXP */ if (not_at_end_command()) { get_exp_eol(pcode); } else { etype=1; polish("0", pcode, &etype); } if (tokens->has_more_tokens()) { throw error(pos_first, "return should be the last command on a line"); } block = find_block(GLE_SRCBLK_MAGIC+GLE_OPBEGIN_SUB); if (block == NULL) { throw error(pos_first, "return outside of subroutine"); } block = block->addDependendBlock(GLE_SRCBLK_RETURN, srclin); block->setOffset2(pcode.size()); pcode.addInt(0); break; case 35 : /* Reverse the current path */ break; case 36 : /* rline */ get_xy(pcode); get_optional(op_line, pcode); break; case 37 : /* rmove */ get_xy(pcode); break; case 38 : /* rotate */ get_exp(pcode); break; case 39 : /* save joe */ get_strexp(pcode); break; case 40: /* scale x y */ get_xy(pcode); break; case 41: /* SET color font hei just lwidth lstyle ldist */ while (not_at_end_command()) { f = get_first(op_set); pcode.addInt(500+f); switch (f) { case 1: /* height */ get_exp(pcode); break; case 2: /* font */ get_font(pcode); break; case 3: /* justify */ get_justify(pcode); break; case 4: /* color */ case OP_SET_BACKGROUND: case OP_SET_FILL: case OP_SET_FILL_PATTERN: get_color(pcode); break; case 5: /* dashlen */ get_exp(pcode); break; case 6: /* dash */ get_exp(pcode); break; case 7: /* lwidth */ get_exp(pcode); break; case 8: /* join */ /* get_join(); */ get_join(pcode); break; case 9: /* cap */ /* get_cap(); */ get_cap(pcode); break; case 10: /* fontlwidth */ get_exp(pcode); break; case OP_SET_FILL_METHOD: case OP_SET_ARROW_STYLE: case OP_SET_ARROW_TIP: case OP_SET_IMAGE_FORMAT: case OP_SET_TEX_SCALE: get_strexp(pcode); break; case OP_SET_TEX_LABELS: get_exp(pcode); break; case OP_SET_ARROW_SIZE: case OP_SET_ARROW_ANGLE: case OP_SET_TITLE_SCALE: case OP_SET_ATITLE_SCALE: case OP_SET_ALABEL_SCALE: case OP_SET_TICKS_SCALE: case OP_SET_ATITLE_DIST: case OP_SET_ALABEL_DIST: get_exp(pcode); break; } } break; case 42 : /* size */ get_xy(pcode); get_optional(op_size, pcode); break; case 43 : /* STROKE */ break; case 44 : /* SUB JOE X Y$ Z ... END SUB */ single_cmd = true; if (isInSub()) { throw error("can't define a subroutine within a sub "); } setInSub(true); m_CrSub = get_subroutine_declaration(pcode); pcode.addInt(m_CrSub->getIndex()); add_block(GLE_SRCBLK_MAGIC+GLE_OPBEGIN_SUB, srclin); break; case GLE_KW_DECLARESUB: pcode.setLast(GLE_KW_COMMENT); m_tokens.ensure_next_token_i("SUB"); m_CrSub = get_subroutine_declaration(pcode); m_CrSub->setStart(srclin); var_clear_local(); break; case GLE_KW_DEFAULT: pcode.setLast(GLE_KW_COMMENT); get_subroutine_default_param(m_CrSub); break; case 45 : /* text */ temp_str = m_tokens.read_line(); pcode.addStringNoID(temp_str); break; case 59 : /* textdef */ temp_str = m_tokens.read_line(); pcode.addStringNoID(temp_str); break; case 46 : /* translate x y */ get_xy(pcode); break; case 47 : /* until */ single_cmd = true; get_exp_eol(pcode); block = add_block(GLE_SRCBLK_UNTIL, srclin); block->setOffset2(pcode.size()); pcode.addInt(0); break; case 48 : /* while */ single_cmd = true; get_exp_eol(pcode); block = add_block(GLE_SRCBLK_WHILE, srclin); block->setOffset2(pcode.size()); pcode.addInt(0); break; case 32 : /* print numexp,strexp,strexp */ case 49 : /* write numexp,strexp,strexp */ while (not_at_end_command()) { pcode.addInt(fctkey); position = pcode.size(); pcode.addInt(0); pcode.setInt(position, get_anyexp(pcode)); } break; case 74 : /* tex */ get_strexp(pcode); get_optional(op_tex, pcode); break; case GLE_KW_RESTOREDEFAULTS: break; case GLE_KW_SLEEP: get_exp(pcode); break; default: throw error("unrecognised command {"+first+"}"); } } if (!allow_extra_tokens && test_not_at_end_command()) { temp_str = tokens->read_line(); throw error(string("extra tokens after command '")+first+"': '"+temp_str+"'"); } pcode.setInt(pos_endoffs, pcode.size()-pos_start); nbcmd++; if (nbcmd > 1 && single_cmd) { throw error(pos_first, "command must occur on a separate line"); } } } void GLEParser::do_text_mode(GLESourceLine &SLine, Tokenizer* tokens, GLEPcode& pcode) throw (ParserError) { int pos_endoffs = pcode.size(); // Save space for end offset pcode.addInt(0); pcode.addInt(5); string str = tokens->read_line(); // Handle comment symbol '!' at start of line if (str.length() > 0 && str[0] == '!') { str = ""; } str_replace_start(str, "\\!", "!"); // Check for end of block int pos = str_starts_with_trim(str, "END"); if (pos != -1) { int len = str.length(); string second_token = str.substr(pos, len-pos); str_trim_both(second_token); int idx = gt_index(op_begin, (char*)second_token.c_str()); if (idx == cur_mode) { pcode.addInt(0); cur_mode = 0; return; } } // Add string to the block pcode.addInt(cur_mode); pcode.addStringNoID(str); pcode.setInt(pos_endoffs, pcode.size()-pos_endoffs); } GLESourceBlock* GLEParser::add_else_block(int srclin, GLEPcode& pcode, bool dangling) { remove_last_block(); GLESourceBlock* block = add_block(GLE_SRCBLK_ELSE, srclin); block->setOffset2(pcode.size()); block->setDangling(dangling); pcode.addInt(0); pcode.addInt(0); return block; } GLESourceBlock* GLEParser::add_else_block_update(int srclin, GLEPcode& pcode, int start_offs, bool dangling) { GLESourceBlock* if_block = last_block(); int offs = if_block->getOffset2(); GLESourceBlock* else_block = add_else_block(srclin, pcode, dangling); pcode.setInt(offs, srclin); pcode.setInt(offs+1, pcode.size()-start_offs); return else_block; } void GLEParser::do_endif(int srclin, GLEPcode& pcode) { GLESourceBlock* block = last_block(); pcode.setInt(block->getOffset2(), srclin); remove_last_block(); block = last_block(); while (block != NULL && block->isDanglingElse()) { pcode.setInt(block->getOffset2(), srclin); remove_last_block(); block = last_block(); } } void GLEParser::do_endsub(int srclin, GLEPcode& pcode) { GLESourceBlock* block = last_block(); int nb = block->getNbDependendingBlocks(); for (int i = 0; i < nb; i++) { GLESourceBlock* dep = block->getDependingBlock(i); pcode.setInt(dep->getOffset2(), srclin); } } GLESourceBlock* GLEParser::find_block(int type) { int last = m_blocks.size()-1; while (last >= 0 && m_blocks[last].getType() != type) { last--; } return last >= 0 ? &m_blocks[last] : NULL; } GLESourceBlock* GLEParser::add_block(int type, int first_line) { m_blocks.push_back(GLESourceBlock(type, first_line)); return &m_blocks.back(); } GLESourceBlock* GLEParser::last_block() { return m_blocks.size() > 0 ? &m_blocks.back() : NULL; } void GLEParser::remove_last_block() { m_blocks.pop_back(); } void GLEParser::check_loop_variable(int var) throw (ParserError) { GLESourceBlock* block = last_block(); if (block == NULL || var != block->getVariable()) { stringstream err; err << "illegal variable '" << var_get_name(var); err << "': loop variable is '" << var_get_name(block->getVariable()) << "'"; throw error(err.str()); } } GLESourceBlock* GLEParser::check_block_type(int pos, int t0, int t1, int t2) throw (ParserError) { GLESourceBlock* block = last_block(); if (block == NULL) { stringstream err; const char* end_t0 = GLESourceBlockEndName(t0); if (end_t0 != NULL) err << end_t0 << " "; err << "'" << GLESourceBlockName(t0) << "' without corresponding "; const char* begin_t1 = GLESourceBlockBeginName(t1); if (begin_t1 != NULL) err << begin_t1 << " "; err << "'" << GLESourceBlockName(t1) << "'"; if (t2 != -1) { err << " or "; const char* begin_t2 = GLESourceBlockBeginName(t2); if (begin_t2 != NULL) err << begin_t2 << " "; err << "'" << GLESourceBlockName(t2) << "'"; } throw error(pos, err.str()); } if (block->getType() != t1 && block->getType() != t2) { stringstream err; err << "unterminated '" << block->getName() << "'"; err << " " << block->getKindName(); err << " (starting on line " << block->getFirstLine() << ") before "; const char* end_name = GLESourceBlockEndName(t0); if (end_name != NULL) err << end_name << " "; err << "'" << GLESourceBlockName(t0) << "'"; throw error(pos, err.str()); } return block; } GLESubMap* GLEParser::getSubroutines() { return &g_Subroutines; } GLESourceBlock::GLESourceBlock(int type, int first_line) { m_block_type = type; m_first_line = first_line; m_variable = -1; m_pcode_offs1 = 0; m_pcode_offs2 = 0; m_dangling = false; m_deps = NULL; } GLESourceBlock::GLESourceBlock(const GLESourceBlock& block) { m_block_type = block.m_block_type; m_first_line = block.m_first_line; m_variable = block.m_variable; m_pcode_offs1 = block.m_pcode_offs1; m_pcode_offs2 = block.m_pcode_offs2; m_dangling = block.m_dangling; m_deps = NULL; if (block.m_deps != NULL) { int size = block.m_deps->size(); m_deps = new vector(); for (int i = 0; i < size; i++) { m_deps->push_back((*block.m_deps)[i]); } } } GLESourceBlock::~GLESourceBlock() { if (m_deps != NULL) delete m_deps; } GLESourceBlock* GLESourceBlock::addDependendBlock(int type, int first_line) { if (m_deps == NULL) m_deps = new vector(); m_deps->push_back(GLESourceBlock(type, first_line)); return &m_deps->back(); } int GLESourceBlock::getNbDependendingBlocks() { return m_deps != NULL ? m_deps->size() : 0; } const char* GLESourceBlock::getName() { return GLESourceBlockName(m_block_type); } const char* GLESourceBlock::getKindName() { switch (m_block_type) { case GLE_SRCBLK_UNTIL: case GLE_SRCBLK_WHILE: case GLE_SRCBLK_FOR: return "loop"; default: return "block"; } } const char* GLESourceBlockEndName(int type) { switch (type) { case GLE_SRCBLK_NEXT: case GLE_SRCBLK_ELSE: return NULL; default: return "end"; } } const char* GLESourceBlockBeginName(int type) { switch (type) { case GLE_SRCBLK_FOR: case GLE_SRCBLK_UNTIL: case GLE_SRCBLK_WHILE: case GLE_SRCBLK_ELSE: case GLE_SRCBLK_MAGIC+GLE_OPBEGIN_IF: return NULL; default: return "begin"; } } const char* GLESourceBlockName(int type) { if (type > GLE_SRCBLK_MAGIC) { int count, width; get_key_info(op_begin, &count, &width); for (int i = 0; i < count; i++) { if (op_begin[i].idx == type - GLE_SRCBLK_MAGIC) return op_begin[i].name; } } switch (type) { case GLE_SRCBLK_UNTIL: return "until"; case GLE_SRCBLK_WHILE: return "while"; case GLE_SRCBLK_FOR: return "for"; case GLE_SRCBLK_NEXT: return "next"; case GLE_SRCBLK_ELSE: return "else"; default: return "unknown"; } } void gt_xy(int *curtok, TOKENS tk, int *ntok, int *pcode, int *plen) { int etype; etype = 1; if (*ntok < *curtok) { gprint("Expecting x expression on end of line\n"); } polish(tok((*curtok)++),(char *) pcode,plen,&etype); etype = 1; if (*ntok < *curtok) { gprint("Expecting y expression on end of line\n"); } polish(tok((*curtok)++),(char *) pcode,plen,&etype); } void gt_find_error(const char* found, OPKEY lkey, int nk) { stringstream ss; ss << "found '" << found << "', but expecting one of:" << endl; ss << "\t"; for (int i=0; iwidth) width = p ; } nk = i; for (i=0; irx == 0); g_defmarker(p->name,p->font,p->cc,p->rx,p->ry,p->scl,fg); } } else { for (int i = 0; stdmark[i].name !=NULL; i++) { p = &stdmark[i]; g_defmarker(p->name,p->font,p->cc,p->rx,p->ry,p->scl,stdmark[i].center); } } } void pass_file_name(const char* name, string& file) { // Support operations on strings, but make sure it also works with unquoted strings containing "/" chars if (str_contains(name, '"') || str_contains(name, '$') || str_contains(name, '+')) { polish_eval_string(name, &file); } else { file = name; } } void set_global_parser(GLEParser* parser) { g_parser = parser; } GLEParser* get_global_parser() { return g_parser; } GLEPolish* get_global_polish() { return g_parser != NULL ? g_parser->getPolish() : NULL; } gle-graphics-4.2.4c/src/gle/var.h0000664000000000000000000002006511535520066015236 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ #ifndef INCLUDE_VAR #define INCLUDE_VAR #include "gle-interface/gle-datatype.h" #define GLE_VAR_LOCAL_BIT 0x10000000 #define GLE_VAR_IS_LOCAL(a) (a & GLE_VAR_LOCAL_BIT) != 0 class GLEVars; class GLEVarMap; class GLEVarSubMap : public GLERefCountObject { protected: StringIntHash m_Map; vector m_Idxs; GLEVarMap* m_Parent; public: GLEVarSubMap(GLEVarMap* parent); ~GLEVarSubMap(); void clear(); void removeFromParent(); void addToParent(GLEVarMap* parent); void var_add(const string& name, int idx); inline int var_get(const string& name) { return m_Map.try_get(name); } inline int size() { return m_Idxs.size(); } inline int get(int i) { return m_Idxs[i]; } }; class GLEVarBackup : public GLERefCountObject { public: GLEVarBackup(); void backup(GLEVars* vars, const vector& ids); void restore(GLEVars* vars); private: vector m_ids; GLEArrayImpl m_values; }; class GLEVarMap { protected: vector m_Names; vector m_Types; StringIntHash m_Map; vector m_Free; vector m_SubMap; bool m_IsTemp; public: GLEVarMap(); ~GLEVarMap(); /* FIXME: lookup should be based on GLEString */ int var_find_add(const string& name, bool* isnew); int var_find_add_submap(const string& name, bool* isnew); int var_get(const string& name); const string& var_name(int idx); void clear(); void list(); int getFreeID(); int addVarIdx(const string& name); void addVars(const StringIntHash& submap); void addVar(int idx, const string& name); void removeVar(int idx); void clearSubMaps(); GLEVarSubMap* pushSubMap(); void pushSubMap(GLEVarSubMap* submap); void popSubMap(); inline int size() { return m_Names.size(); } inline int getType(int idx) { return m_Types[idx]; } inline void setType(int idx, int type) { m_Types[idx] = type; } inline bool hasSubMap() { return m_SubMap.size() > 0; } inline bool isTemp() { return m_IsTemp; } inline void setTemp(bool temp) { m_IsTemp = temp; } }; class GLELocalVars { public: GLEArrayImpl values; public: GLELocalVars(int num); ~GLELocalVars(); void expand(int num); void copyFrom(GLELocalVars* other); void copyFrom(GLELocalVars* other, int nb); GLELocalVars* clone(int nb); inline int size() { return values.size(); } }; class GLEVars { protected: GLEVarMap m_GlobalMap; GLEVarMap* m_LocalMap; GLEArrayImpl m_Global; GLEArrayImpl m_Stack; GLELocalVars* local_var; vector local_var_stack; int local_var_stack_level; public: GLEVars(); ~GLEVars(); bool check(int *var); char* getName(int var); double getDouble(int var); void setDouble(int var, double v); GLEString* getString(int var); void setString(int var, GLEString* s); GLEDataObject* getObject(int var); void setObject(int var, GLEDataObject* obj); void set(int var, GLEMemoryCell* value); void get(int var, GLEMemoryCell* value); void init(int var, int type); void find(const char *name, int *idx, int *type); void findAdd(const char *name, int *idx, int *type); void clear(); void clearGlobal(); void clearLocal(); int getNbLocal(); void allocLocal(int num); void freeLocal(); void addLocal(const string& name, int *idx, int *type); GLEVarMap* swapLocalMap(GLEVarMap* map); GLEVarSubMap* addLocalSubMap(); void addLocalSubMap(GLEVarSubMap* submap); void removeLocalSubMap(); void findDN(GLEVarSubMap* map, int *idx, int *var, int *nd); int getGlobalType(int var); const char* getObjectTypeName(int type); string typeError(int var, int type); inline void allocLocal(GLEVarMap* map) { allocLocal(map->size()); } inline GLELocalVars* getLocalVars() { return local_var; } inline bool hasLocalMap() { return m_LocalMap != NULL; } inline GLEVarMap* getLocalMap() { return m_LocalMap; } inline GLEVarMap* getGlobalMap() { return &m_GlobalMap; } inline void setLocalMap(GLEVarMap* map) { m_LocalMap = map; } inline void expandGlobalVars(int max) { m_Global.ensure(max+1); } }; GLEVars* getVarsInstance(); void var_init(int idx, int type); int var_type(const string& name); bool str_var(const string& s); bool str_var(const char* s); int valid_var(const char *s); bool has_local_var_map(); GLEVarMap* get_local_var_map(); void var_add_local(const string& name, int *idx, int *type); GLELocalVars* get_local_vars(); void var_alloc_local(int num); void var_alloc_local(GLEVarMap* map); bool var_check(int *j); void var_clear_global(void); void var_clear_local(void); void var_clear(); void var_def(const char *s, double x); void var_find(const char *name,int *idx,int *type); /* Find a variable in the list */ void var_find_dn(GLEVarSubMap* map, int *idx, int *var, int *nd); void var_findadd(const char *name,int *idx,int *type); /* Add a variable to the list */ void var_free_local(void); void var_get(int jj, double *v); void var_getstr(int v, char *s); void var_getstr(int jj, string& s); void var_nlocal(int *l); void var_set(int jj, double v); void var_set(int jj, GLEMemoryCell* value); GLEVarMap* var_swap_local_map(GLEVarMap* map); void var_set_local_map(GLEVarMap* map); void var_setstr(int jj, char *s); char* var_get_name(int jj); bool var_valid_name(const string& name); void var_findadd_set(const char* name, double value); void var_findadd_set(const char* name, const string& value); GLEVarSubMap* var_add_local_submap(); void var_remove_local_submap(); bool str_var_valid_name(const string& name); void ensure_valid_var_name(const string& name) throw(ParserError); void ensure_valid_var_name(Tokenizer* tokens, const string& name) throw(ParserError); #endif gle-graphics-4.2.4c/src/gle/sub.cpp0000664000000000000000000003777611652073235015614 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ #include "all.h" #include "mem_limits.h" #include "gle-interface/gle-interface.h" #include "var.h" #include "sub.h" #include "gprint.h" #include "keyword.h" #include "run.h" #include "cutils.h" extern int **gpcode; /* gpcode is a pointer to an array of poiter to int */ extern int *gplen; /* gpcode is a pointer to an array of int */ extern int ngpcode; extern int gle_debug; #define dbg if ((gle_debug & 128)>0) GLESubMap g_Subroutines; int return_type = 1; double return_value = 0.0; string return_value_str; vector return_str_stack; GLESubArgNames::GLESubArgNames() { } void GLESubArgNames::addArgName(const char* argName) { addArgName(m_ArgNames.size(), argName); } void GLESubArgNames::addArgName(unsigned int argIndex, const char* argName) { GLERC argNameStr(new GLEString(argName)); GLEStringHashData::iterator found(m_ArgNameHash.find(argNameStr)); if (found == m_ArgNameHash.end()) { m_ArgNameHash.insert(make_pair(argNameStr, argIndex)); } m_ArgNames.resize(argIndex + 1); m_ArgNames.setObject(argIndex, argNameStr.get()); } void GLESubArgNames::addArgNameAlias(unsigned int argIndex, const char* argName) { GLERC argNameStr(new GLEString(argName)); GLEStringHashData::iterator found(m_ArgNameHash.find(argNameStr)); if (found == m_ArgNameHash.end()) { m_ArgNameHash.insert(make_pair(argNameStr, argIndex)); } } GLESubRoot::GLESubRoot(GLEString* name, GLESubArgNames* argNames) : m_Name(name), m_ArgNames(argNames), m_IgnoredArgNames(new GLEStringHash()), m_Signatures(new GLEArrayImpl()) { } void GLESubRoot::updateArgNames(GLESubArgNames* argNames) { } GLESubDefinitionHelper::GLESubDefinitionHelper(const std::string& name) { m_Defaults = new GLEArrayImpl(); m_ArgNames = new GLESubArgNames(); m_Name = new GLEString(name); } void GLESubDefinitionHelper::addArgumentAlias(unsigned int argIndex, const std::string& name) { m_ArgNames->addArgNameAlias(argIndex, name.c_str()); } unsigned int GLESubDefinitionHelper::addArgument(const std::string& name, unsigned int type, bool mandatory) { unsigned int nbArguments = m_ArgTypes.size(); m_ArgTypes.push_back(type); m_isMandatory.push_back(mandatory); m_Defaults->resize(nbArguments + 1); m_ArgNames->addArgName(nbArguments, name.c_str()); return nbArguments; } unsigned int GLESubDefinitionHelper::addDoubleArgument(const std::string& name, double defaultValue, bool mandatory) { unsigned int result = addArgument(name, GLEObjectTypeDouble, mandatory); m_Defaults->setDouble(result, defaultValue); return result; } unsigned int GLESubDefinitionHelper::addDoubleArgumentNoDefault(const std::string& name, bool mandatory) { return addArgument(name, GLEObjectTypeDouble, mandatory); } unsigned int GLESubDefinitionHelper::addPointArgument(const std::string& name, GLEPointDataObject* defaultValue, bool mandatory) { unsigned int result = addArgument(name, GLEObjectTypePoint, mandatory); if (defaultValue != 0) { m_Defaults->setObject(result, defaultValue); } return result; } GLESubSignature::GLESubSignature(GLESubRoot* root) : m_Root(root), m_Subroutines(new GLEArrayWithFreeList()), m_Callables(new GLEArrayWithFreeList()) { } void GLECallable::execute(GLEArrayImpl* stack, unsigned int top) { } GLEArgTypeDefaults::GLEArgTypeDefaults(unsigned int arity) : m_Arity(arity), m_ArgTypes(new unsigned int[arity]), m_Defaults(new GLEArrayImpl()) { } GLEArgTypeDefaults::~GLEArgTypeDefaults() { delete m_ArgTypes; } GLEAbstractSub::GLEAbstractSub() : m_Root(0) { } void GLEAbstractSub::setArgTypeDefaults(GLEArgTypeDefaults* defaults) { m_ArgTypeDefaults = defaults; m_ArgTypes = m_ArgTypeDefaults->getArgTypes(); } GLEBuiltInFactory::GLEBuiltInFactory(GLESubMap* map) : m_Map(map) { // default binary argument names (x, y) m_BinaryArgNamesXY = new GLESubArgNames(); m_BinaryArgNamesXY->addArgName("x"); m_BinaryArgNamesXY->addArgName("y"); // binary function with two double arguments m_BinaryDoubleDoubleArgTypeDefaults = new GLEArgTypeDefaults(2); m_BinaryDoubleDoubleArgTypeDefaults->setArgType(0, GLEObjectTypeDouble); m_BinaryDoubleDoubleArgTypeDefaults->setArgType(1, GLEObjectTypeDouble); } GLESubArgNames* GLEBuiltInFactory::getBinaryArgNamesXY() { return m_BinaryArgNamesXY.get(); } GLEArgTypeDefaults* GLEBuiltInFactory::getBinaryDoubleDoubleArgTypeDefaults() { return m_BinaryDoubleDoubleArgTypeDefaults.get(); } GLESubRoot* GLEBuiltInFactory::createRoot(const char* name, GLESubArgNames* argNames) { return m_Map->createRoot(name, argNames); } GLESub::GLESub() { m_ParentSub = NULL; m_Typ = m_Idx = 0; m_Start = m_End = -1; m_IsObject = false; m_Script = NULL; m_Cons = NULL; } GLESub::~GLESub() { } void GLESub::addParam(const string& name, int type) { int len = name.length(); if (len > 1 && name[len-1] == '$') { string shortname = name; shortname.erase(len-1); m_PNameS.push_back(shortname); } else { m_PNameS.push_back(name); } m_PName.push_back(name); m_PType.push_back(type); m_PDefault.push_back(""); } void GLESub::setStartEnd(int start, int end) { m_Start = start; m_End = end; } void GLESub::clear() { m_Start = -1; m_End = -1; m_PName.clear(); m_PType.clear(); m_LocalVars.clear(); } int GLESub::findParameter(const string& name) { for (int i = 0; i < getNbParam(); i++) { if (str_i_equals(name, getParamNameShort(i))) { return i; } } return -1; } void GLESub::listArgNames(ostream& out) { for (int i = 0; i < getNbParam(); i++) { if (i != 0) out << ","; out << getParamNameShort(i); } } GLEObjectDOConstructor* GLESub::getObjectDOConstructor() { if (m_Cons == NULL) m_Cons = new GLEObjectDOConstructor(this); return m_Cons; } GLESubMap::GLESubMap() : m_SubRoots(new GLEStringHash()) { } GLESubMap::~GLESubMap() { clear(); } GLESubRoot* GLESubMap::getRoot(const char* name) { GLERC strName(new GLEString(name)); return (GLESubRoot*)m_SubRoots->getObjectByKey(strName); } GLESubRoot* GLESubMap::createRoot(const char* name, GLESubArgNames* argNames) { GLERC strName(new GLEString(name)); GLESubRoot* root = (GLESubRoot*)m_SubRoots->getObjectByKey(strName); if (root != NULL) { root->updateArgNames(argNames); return root; } else { GLESubRoot* newRoot = new GLESubRoot(strName.get(), argNames); m_SubRoots->setObjectByKey(strName, newRoot); return newRoot; } } void GLESubMap::add(GLEAbstractSub* sub) { } void GLESubMap::clear(int i) { delete m_Subs[i]; m_Subs[i] = NULL; } void GLESubMap::clear() { for (vector::size_type i = 0; i < m_Subs.size(); i++) { clear(i); } m_Subs.clear(); m_Map.clear(); } GLESub* GLESubMap::add() { GLESub* sub = new GLESub(); int idx = size(); sub->setIndex(idx); m_Subs.push_back(sub); sub->clear(); return sub; } GLESub* GLESubMap::add(GLESub* parent) { GLESub* sub = add(); sub->setParentSub(parent); return sub; } GLESub* GLESubMap::add(const string& name) { GLESub* sub = add(); m_Map.add_item(name, sub->getIndex()); sub->setName(name); return sub; } GLESub* GLESubMap::get(const string& name) { int idx = getIndex(name); if (idx < 0) return NULL; else return m_Subs[idx]; } void GLESubMap::list() { cout << "List:" << endl; for (vector::size_type i = 0; i < m_Subs.size(); i++) { GLESub* sub = m_Subs[i]; cout << " NAME = " << sub->getName() << "/" << sub->getNbParam() << endl; } } void sub_param(GLESub* sub, const string& name) { int vi, vt; /* should be set ptype according to num/string variable */ var_add_local(name, &vi, &vt); sub->addParam(name, vt); } GLESub* sub_find(const string& s) { return g_Subroutines.get(s); } void sub_clear(bool undef) { if (undef) { for (int i = 0; i < g_Subroutines.size(); i++) { g_Subroutines.get(i)->setStartEnd(-1, -1); } } else { g_Subroutines.clear(); } } bool sub_is_valid(int idx) { return idx >= 0 && idx < g_Subroutines.size(); } void sub_get_startend(int idx, int *ss, int *ee) { GLESub* sub = g_Subroutines.get(idx); *ss = sub->getStart(); *ee = sub->getEnd(); } GLESub* sub_get(int idx) throw(ParserError) { if (!sub_is_valid(idx)) { g_throw_parser_error("illegal subroutine identifier: ", idx); } return g_Subroutines.get(idx); } extern int this_line; /* Run a user defined function */ void GLERun::sub_call(int idx, double *pval, char **pstr, int *npm, int *otyp) throw(ParserError) { // Save current return value int save_return_type = return_type; double save_return_value = return_value; if (return_type == 2) { // Efficiency of this will be improved if RefCount objects are introduced // see glearray.cpp (Jan Struyf) return_str_stack.push_back(return_value_str); } GLESub* sub = sub_get(idx); // Set local variable map GLEVarMap* sub_map = sub->getLocalVars(); GLEVarMap* save_var_map = var_swap_local_map(sub_map); var_alloc_local(sub_map); // Copy parameters to local variables for (int i = sub->getNbParam()-1; i >= 0; i--) { int var = i | GLE_VAR_LOCAL_BIT; if (sub->getParamType(i) == 1) { var_set(var, *(pval+(*npm)--)); } else { var_setstr(var, *(pstr+(*npm)--)); } } // Run subroutine int s_start = sub->getStart(); int s_end = sub->getEnd(); int endp = 0; bool mkdrobjs = false; int oldline = this_line; // cout << "calling routine: " << sub->getName() << endl; for (int i = s_start + 1; i < s_end; i++) { // cout << "executing line " << i << " of " << getSource()->getNbLines() << endl; GLESourceLine* line = getSource()->getLine(i - 1); do_pcode(*line,&i,gpcode[i],gplen[i],&endp,mkdrobjs); dbg gprint("AFTER DO_PCODE I = %d \n",i); } // FIXME: Find more elegant way to back up current line this_line = oldline; // Return type of subroutine if (return_type == 1) { *(pval + ++(*npm)) = return_value; *otyp = 1; } else { (*npm) = (*npm) + 1; if (pstr[(*npm)] != NULL) myfree(pstr[(*npm)]); pstr[(*npm)] = sdup((char*)return_value_str.c_str()); *otyp = 2; } // Restore var map var_set_local_map(save_var_map); // Get saved return values back return_type = save_return_type; if (return_type == 1) { return_value = save_return_value; } else { return_value_str = return_str_stack.back(); return_str_stack.pop_back(); } var_free_local(); } /* Run a user defined function */ void GLERun::sub_call(GLESub* sub, GLEArrayImpl* arguments) throw(ParserError) { // Save current return value int save_return_type = return_type; double save_return_value = return_value; if (return_type == 2) { // Efficiency of this will be improved if RefCount objects are introduced // see glearray.cpp (Jan Struyf) return_str_stack.push_back(return_value_str); } // Set local variable map GLEVarMap* sub_map = sub->getLocalVars(); GLEVarMap* save_var_map = var_swap_local_map(sub_map); var_alloc_local(sub_map); // Copy parameters to local variables if (arguments != 0) { CUtilsAssert(sub->getNbParam() == (int)arguments->size()); for (int i = sub->getNbParam()-1; i >= 0; i--) { int var = i | GLE_VAR_LOCAL_BIT; getVars()->set(var, arguments->get(i)); } } // Run subroutine int s_start = sub->getStart(); int s_end = sub->getEnd(); int endp = 0; bool mkdrobjs = false; int oldline = this_line; for (int i = s_start + 1; i < s_end; i++) { dbg gprint("=Call do pcode, line %d ",i); GLESourceLine* line = getSource()->getLine(i - 1); do_pcode(*line, &i, gpcode[i], gplen[i], &endp, mkdrobjs); dbg gprint("AFTER DO_PCODE I = %d \n",i); } // FIXME: Find more elegant way to back up current line this_line = oldline; // Restore var map var_set_local_map(save_var_map); // Get saved return values back return_type = save_return_type; if (return_type == 1) { return_value = save_return_value; } else { return_value_str = return_str_stack.back(); return_str_stack.pop_back(); } var_free_local(); } void call_sub_byname(const string& name, double* args, int nb, const char* err_inf) throw(ParserError) { GLESub* sub = sub_find(name); int idx = sub != NULL ? sub->getIndex() : -1; if (idx == -1) { stringstream err; err << "subroutine '" << name << "' not found"; if (err_inf != NULL) err << " " << err_inf; g_throw_parser_error(err.str()); } else if (sub->getNbParam() != nb) { stringstream err; err << "subroutine '" << name << "' should take " << nb << " parameter(s), not " << sub->getNbParam(); if (err_inf != NULL) err << " " << err_inf; g_throw_parser_error(err.str()); } for (int i = 0; i < nb; i++) { if (sub->getParamType(i) != 1) { stringstream err; err << "all parameters of subroutine '" << name << "' should be numeric"; if (err_inf != NULL) err << " " << err_inf; g_throw_parser_error(err.str()); } } int otype; getGLERunInstance()->sub_call(idx, args, NULL, &nb, &otype); } void call_sub_byid(int idx, double* args, int nb, const char* err_inf) throw(ParserError) { GLESub* sub = sub_get(idx); if (sub == NULL) return; if (sub->getNbParam() != nb) { stringstream err; err << "subroutine '" << sub->getName() << "' should take " << nb << " parameter(s), not " << sub->getNbParam(); if (err_inf != NULL) err << " " << err_inf; g_throw_parser_error(err.str()); } for (int i = 0; i < nb; i++) { if (sub->getParamType(i) != 1) { stringstream err; err << "all parameters of subroutine '" << sub->getName() << "' should be numeric"; if (err_inf != NULL) err << " " << err_inf; g_throw_parser_error(err.str()); } } int otype; getGLERunInstance()->sub_call(idx, args, NULL, &nb, &otype); } void sub_set_return(double d) { return_type = 1; return_value = d; } void sub_set_return_str(const char* s) { return_type = 2; return_value_str = s; } gle-graphics-4.2.4c/src/gle/eval.cpp0000664000000000000000000007307711724767740015757 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ #define GRAPHDEF extern #include "all.h" #include "tokens/stokenizer.h" #include "core.h" #include "glearray.h" #include "mem_limits.h" #include "var.h" #include "cutils.h" #include "gprint.h" #include "numberformat.h" #include "keyword.h" #include "run.h" #include "fn.h" #include "polish.h" #include "file_io.h" #include "cmdline.h" #include "graph.h" #include "sub.h" #include "file_io.h" #ifdef __WIN32__ #include #endif colortyp colvar; // // set this to zero if your compiler complains about acosh atanh and asinh // // #define HAVE_INVERSE_HYP <== obsolete should be done in config.i V.L. // #define true (!false) #define false 0 char *eval_str(); void var_getstr(int varnum,char *s); //int pass_marker(char *s); int f_eof(int chn); void gle_as_a_calculator(vector* exprs); void output_error_cerr(ParserError& err); double xg3d(double x, double y, double z); double yg3d(double x, double y, double z); /*---------------------------------------------------------------------------*/ /* bin = 10..29, binstr = 30..49, fn= 60...139, userfn=LOCAL_START_INDEX..nnn */ /* pcode:, 1=exp,len 2=float,val 3=var,int 4,string_var, 5=string,.../0 */ /*---------------------------------------------------------------------------*/ /* Input is exp-pcode, output is number or string */ const char *binop[] = { "", "+", "-", "*", "/", "^", "=", "<", "<=", ">", ">=", "<>", ".AND.", ".OR." }; struct keyw { char *word; int index; int ret,np,p[5]; } ; extern struct keyw keywfn[] ; double stk[60]; int stk_var[100]; char *stk_str[100]; int stk_strlen[100]; char sbuf[512]; char sbuf2[112]; int nstk=0; extern int gle_debug; extern CmdLineObj g_CmdLine; double string_to_number(const char* str) { // FIXME support other numeric formats char* pend; return strtod(str, &pend); } void format_number_to_string(char* out, const char* format, double value); unsigned char float_to_color_comp(double value) { int color = (int)floor(value*255 + 0.5); if (color < 0) color = 0; if (color > 255) color = 255; return (unsigned char)color; } unsigned char float_to_color_comp_255(double value) { int color = (int)floor(value + 0.5); if (color < 0) color = 0; if (color > 255) color = 255; return (unsigned char)color; } void eval_get_extra_arg_test(int i, const char* type) throw(ParserError) { int max_arg = g_CmdLine.getNbExtraArgs(); if (max_arg == 0) { stringstream s; s << "arg" << type << "(" << i << "): no command line arguments given"; g_throw_parser_error(s.str()); } if (i > max_arg || i <= 0) { stringstream s; s << "arg" << type << "(" << i << "): argument out of range (1.." << max_arg << ")"; g_throw_parser_error(s.str()); } } double eval_get_extra_arg_f(int i) throw(ParserError) { eval_get_extra_arg_test(i, ""); const string& arg = g_CmdLine.getExtraArg(i-1); if (!is_float(arg)) { stringstream s; s << "arg(" << i << "): argument not a floating point number: " << arg; g_throw_parser_error(s.str()); } return atof(arg.c_str()); } const char* eval_get_extra_arg_s(int i) throw(ParserError) { eval_get_extra_arg_test(i, "$"); return g_CmdLine.getExtraArg(i-1).c_str(); } void eval_pcode_loop(int *pcode, int plen, int *otyp) throw(ParserError) { if (plen > 1000) { gprint("Expression is suspiciously long %d \n",plen); } union {double d; int l[2];} both; char *ss2, *ss; double x1, y1, x2, y2; double xx, yy; int i, j; for (int c = 0; c < plen; c++) { // cout << "pos: " << c << " pcode: " << pcode[c] << endl; switch (pcode[c]) { /* .. Special commands 1..9 ------------------------------- .. */ case 1: /* Start of another expression (function param) */ c++; /* skip over exp length */ break; case 2: /* Floating point number follows */ *otyp = 1; both.l[0] = *(pcode+(++c)); both.l[1] = *(pcode+(++c)); stk[++nstk] = both.d; dbg gprint("Got float %f %d %f \n",stk[nstk],nstk,*(pcode+(c))); break; case 3: /* Floating_point variable number follows */ *otyp = 1; var_get(*(pcode+(++c)),&xx); dbg gprint("Got variable value %ld %f \n",*(pcode+(c)),xx); stk[++nstk] = xx; break; case 4: /* string variable number follows */ *otyp = 2; { string result; var_getstr(*(pcode+(++c)), result); nstk++; if (stk_str[nstk]!=NULL) myfree(stk_str[nstk]); stk_str[nstk] = sdup(result.c_str()); } break; case 5: /* Null terminated string follows (int alligned) */ *otyp = 2; c++; nstk++; if (stk_str[nstk]!=NULL) myfree(stk_str[nstk]); stk_str[nstk] = sdup(eval_str(pcode,&c)); break; /* Numeric Binary operators 10..29 ----------------------- */ case 11: /* + */ nstk--; stk[nstk] = stk[nstk+1] + stk[nstk]; break; case 12: /* - */ stk[nstk-1] = stk[nstk-1] - stk[nstk]; nstk--; break; case 13: /* * */ stk[nstk-1] = stk[nstk-1] * stk[nstk]; nstk--; break; case 14: /* / */ // do not test on divide by zero, otherwise "let" // cannot plot functions with divide by zero anymore stk[nstk-1] = stk[nstk-1] / stk[nstk]; nstk--; break; case 15: /* ^ */ stk[nstk-1] = pow(stk[nstk-1],stk[nstk]); nstk--; break; case 16: /* = */ nstk--; if (stk[nstk] == stk[nstk+1]) stk[nstk]=true; else stk[nstk]=false; break; case 17: /* < */ nstk--; if (stk[nstk] < stk[nstk+1]) stk[nstk]=true; else stk[nstk]=false; break; case 18: /* <= */ nstk--; if (stk[nstk] <= stk[nstk+1]) stk[nstk]=true; else stk[nstk]=false; break; case 19: /* > */ nstk--; if (stk[nstk] > stk[nstk+1]) stk[nstk]=true; else stk[nstk]=false; break; case 20: /* >= */ nstk--; if (stk[nstk] >= stk[nstk+1]) stk[nstk]=true; else stk[nstk]=false; break; case 21: /* <> */ nstk--; if (stk[nstk] != stk[nstk+1]) stk[nstk]=true; else stk[nstk]=false; break; case 22: /* .AND. */ nstk--; if (stk[nstk] && stk[nstk+1]) stk[nstk]=true; else stk[nstk]=false; break; case 23: /* .OR. */ nstk--; if (stk[nstk] || stk[nstk+1]) stk[nstk]=true; else stk[nstk]=false; break; case 24: /* % */ stk[nstk-1] = (int)stk[nstk-1] % (int)stk[nstk]; nstk--; break; case 25: /* . */ g_throw_parser_error("operator '.' does not apply to a numeric type"); break; /* String Binary operators 30..49 ----------------------- */ case 31: /* + */ *otyp = 2; nstk--; { char* result = NULL; if (stk_str[nstk] != NULL && stk_str[nstk+1] != NULL) { result = (char*)malloc((strlen(stk_str[nstk])+strlen(stk_str[nstk+1])+1)*sizeof(char)); strcpy(result, stk_str[nstk]); strcat(result, stk_str[nstk+1]); } else { result = sdup(""); } if (stk_str[nstk] != NULL) myfree(stk_str[nstk]); stk_str[nstk] = result; } break; case 32: /* - */ g_throw_parser_error("operator '-' does not apply to a string type"); break; case 33: /* * */ g_throw_parser_error("operator '*' does not apply to a string type"); break; case 34: /* / */ g_throw_parser_error("operator '/' does not apply to a string type"); break; case 35: /* ^ */ g_throw_parser_error("operator '^' does not apply to a string type"); break; case 36: /* = */ *otyp = 1; nstk--; stk[nstk] = str_i_equals(stk_str[nstk], stk_str[nstk+1]); break; case 37: /* < */ *otyp = 1; nstk--; stk[nstk] = str_i_cmp(stk_str[nstk], stk_str[nstk+1]) < 0; break; case 38: /* <= */ *otyp = 1; nstk--; stk[nstk] = str_i_cmp(stk_str[nstk], stk_str[nstk+1]) <= 0; break; case 39: /* > */ *otyp = 1; nstk--; stk[nstk] = str_i_cmp(stk_str[nstk], stk_str[nstk+1]) > 0; break; case 40: /* >= */ *otyp = 1; nstk--; stk[nstk] = str_i_cmp(stk_str[nstk], stk_str[nstk+1]) >= 0; break; case 41: /* <> */ *otyp = 1; nstk--; stk[nstk] = !str_i_equals(stk_str[nstk], stk_str[nstk+1]); break; case 42: /* .AND. */ g_throw_parser_error("operator 'AND' does not apply to a string type"); break; case 43: /* .OR. */ g_throw_parser_error("operator 'OR' does not apply to a string type"); break; case 44: /* % */ g_throw_parser_error("operator '%' does not apply to a string type"); break; case 45: /* . */ *otyp = 2; nstk--; { char* result = NULL; if (stk_str[nstk] != NULL && stk_str[nstk+1] != NULL) { result = (char*)malloc((strlen(stk_str[nstk])+strlen(stk_str[nstk+1])+2)*sizeof(char)); strcpy(result, stk_str[nstk]); strcat(result, "."); strcat(result, stk_str[nstk+1]); } else { result = sdup(""); } if (stk_str[nstk] != NULL) myfree(stk_str[nstk]); stk_str[nstk] = result; } break; /* look in fn.c and start indexes with 1 */ /* Built in functions 60..199 ----------------------------- */ /* note add 60 to the index in fn.cpp */ case 61: /* unary plus */ break; case 62: /* unary minus */ stk[nstk] = -stk[nstk]; break; case 63: /* abs */ stk[nstk] = fabs(stk[nstk]); break; case 64: /* atan */ stk[nstk] = atan(stk[nstk]); break; case 113: /* ACOS 53*/ stk[nstk] = acos(stk[nstk]); break; case 114: /* ASIN 54*/ stk[nstk] = asin(stk[nstk]); break; case 65: /* cos 5*/ stk[nstk] = cos(stk[nstk]); break; case 116: /* ACOT 56*/ stk[nstk] = 1.0/atan(stk[nstk]); break; case 117: /*ASEC 57*/ stk[nstk] = 1.0/acos(stk[nstk]); break; case 118: /*ACSC 58*/ stk[nstk] = 1.0/asin(stk[nstk]); break; case 119: /*cot 59*/ stk[nstk] = 1.0/tan(stk[nstk]); break; case 120: /*sec 60*/ stk[nstk] = 1.0/cos(stk[nstk]); break; case 121: /*csc 61*/ stk[nstk] = 1.0/sin(stk[nstk]); break; case 122: /* cosh 62*/ stk[nstk] = cosh(stk[nstk]); break; case 123: /* sinh 63*/ stk[nstk] = sinh(stk[nstk]); break; case 124: /* tanh 64*/ stk[nstk] = tanh(stk[nstk]); break; case 125: /* coth 65*/ stk[nstk] = 1.0/tanh(stk[nstk]); break; case 126: /* sech 66*/ stk[nstk] = 1.0/cosh(stk[nstk]); break; case 127: /* csch 67*/ stk[nstk] = 1.0/sinh(stk[nstk]); break; #ifdef HAVE_INVERSE_HYP case 128: /* acosh 68*/ stk[nstk] = acosh(stk[nstk]); break; case 129: /* asinh 69*/ stk[nstk] = asinh(stk[nstk]); break; case 130: /* atanh 70*/ stk[nstk] = atanh(stk[nstk]); break; case 131: /* acoth 71*/ stk[nstk] = 1.0/atanh(stk[nstk]); break; case 132: /* asech 72*/ stk[nstk] = 1.0/acosh(stk[nstk]); break; case 133: /* acsch 73*/ stk[nstk] = 1.0/asinh(stk[nstk]); break; #endif case 134: /* todeg 74*/ stk[nstk] = stk[nstk]*180.0/GLE_PI; break; case 135: /* torad 75*/ stk[nstk] = stk[nstk]*GLE_PI/180.0; break; case 60+FN_EVAL: /* eval */ *otyp = 1; polish_eval(stk_str[nstk], &xx); stk[nstk] = xx; break; case 60+FN_ARG: /* arg */ *otyp = 1; stk[nstk] = eval_get_extra_arg_f((int)stk[nstk]); break; case 60+FN_ARGS: /* arg$ */ *otyp = 2; stk_str[nstk] = sdup((char*)eval_get_extra_arg_s((int)stk[nstk])); break; case 60+FN_NARGS: /* narg */ *otyp = 1; stk[++nstk] = g_CmdLine.getNbExtraArgs(); break; case 60+FN_MIN: /* min */ *otyp = 1; nstk--; if (stk[nstk+1] < stk[nstk]) stk[nstk] = stk[nstk+1]; break; case 60+FN_MAX: /* max */ *otyp = 1; nstk--; if (stk[nstk+1] > stk[nstk]) stk[nstk] = stk[nstk+1]; break; case 60+FN_SDIV: /* sdiv */ *otyp = 1; nstk--; if (stk[nstk+1] == 0.0) stk[nstk] = 0.0; else stk[nstk] /= stk[nstk+1]; break; case 60+FN_XBAR: /* bar x position */ *otyp = 1; nstk -= 1; stk[nstk] = graph_bar_pos(stk[nstk], gle_round_int(stk[nstk+1]), 1); break; case 60+FN_XY2ANGLE: *otyp = 1; nstk -= 1; xy_polar(stk[nstk], stk[nstk+1], &x1, &y1); stk[nstk] = y1; break; case 60+FN_ATAN2: *otyp = 1; nstk -= 1; stk[nstk] = myatan2(stk[nstk], stk[nstk+1]); break; case 60+FN_ISNAME: *otyp = 1; stk[nstk] = getGLERunInstance()->is_name(stk_str[nstk]) ? 1.0 : 0.0; break; case 137: /* pointx */ *otyp = 1; { GLEPoint pt; getGLERunInstance()->name_to_point(stk_str[nstk], &pt); stk[nstk] = pt.getX(); } break; case 138: /* pointy */ *otyp = 1; { GLEPoint pt; getGLERunInstance()->name_to_point(stk_str[nstk], &pt); stk[nstk] = pt.getY(); } break; case 139: /* format$ */ nstk--; *otyp = 2; format_number_to_string(sbuf, stk_str[nstk+1], stk[nstk]); if (stk_str[nstk] != NULL) myfree(stk_str[nstk]); stk_str[nstk] = sdup(sbuf); break; case 60+FN_GETENV: /* getenv */ *otyp = 2; { string result; GLEGetEnv(string(stk_str[nstk]), result); stk_str[nstk] = sdup(result.c_str()); } break; case 66: /* date$ */ { *otyp = 2; time_t today; time(&today); strcpy(sbuf2,ctime(&today)); strcpy(sbuf,sbuf2); strcpy(sbuf+11,sbuf2+20); sbuf[strlen(sbuf)-1] = 0; setdstr(&stk_str[++nstk],sbuf); } break; case 111: /* device$ */ *otyp = 2; g_get_type(sbuf); setdstr(&stk_str[++nstk],sbuf); break; case 115: /* feof(chan) */ stk[nstk] = f_eof((int) stk[nstk]); break; case 67: /* exp */ stk[nstk] = exp(stk[nstk]); break; case 68: /* fix*/ stk[nstk] = floor(stk[nstk]); break; case 69: /* height of named object */ *otyp = 1; getGLERunInstance()->name_to_size(stk_str[nstk], &x1, &y1); stk[nstk] = y1; break; case 70: /* int (??int) */ stk[nstk] = floor(fabs(stk[nstk])) *( (stk[nstk]>=0)?1:-1 ) ; break; case 112: /* CHR$() */ *otyp = 2; sprintf(sbuf,"%c",(int) stk[nstk]); setdstr(&stk_str[nstk],sbuf); break; case 71: /* left$ */ *otyp = 2; { int i1 = (int)stk[nstk]; int len = strlen(stk_str[nstk-1]); if (i1 < 0) i1 = 0; if (i1 > len) i1 = len; char* result = (char*)malloc((i1+1)*sizeof(char)); ncpy(result, stk_str[nstk-1], i1); setsstr(&stk_str[--nstk], result); } break; case 72: /* len */ *otyp = 1; stk[nstk] = strlen(stk_str[nstk]); break; case 73: /* log */ stk[nstk] = log(stk[nstk]); break; case 74: /* log10 */ stk[nstk] = log10(stk[nstk]); break; case 75: /* not */ stk[nstk] = !(stk[nstk]); break; case 76: /* num$ */ *otyp = 2; sprintf(sbuf,"%g",stk[nstk]); if (stk_str[nstk] != NULL) myfree(stk_str[nstk]); stk_str[nstk] = sdup(sbuf); break; case 77: /* num1$ */ *otyp = 2; sprintf(sbuf,"%g ",stk[nstk]); if (stk_str[nstk] != NULL) myfree(stk_str[nstk]); stk_str[nstk] = sdup(sbuf); break; case 78: /* pageheight */ *otyp = 1; g_get_usersize(&xx, &yy); stk[++nstk] = yy; break; case 79: /* pagewidth */ *otyp = 1; g_get_usersize(&xx, &yy); stk[++nstk] = xx; break; case 80: /* pos */ *otyp = 1; i = (int) stk[nstk]; if (i<=0) i = 1; ss = stk_str[nstk-2]; ss2 = str_i_str(ss+i-1,stk_str[nstk-1]); if (ss2!=NULL) i = ss2-ss+1; else i = 0; nstk -= 2; stk[nstk] = i; break; case 81: /* right$ */ *otyp = 2; { int i1 = (int)stk[nstk]-1; int len = strlen(stk_str[nstk-1]); if (i1 < 0) i1 = 0; if (i1 > len) i1 = len; char* result = (char*)malloc((len-i1+1)*sizeof(char)); strcpy(result, stk_str[nstk-1]+i1); setsstr(&stk_str[--nstk], result); } break; case 82: /* rnd */ stk[nstk] = ((double) rand()/(double)RAND_MAX)*stk[nstk]; break; case 83: /* seg$ */ *otyp = 2; { int i1 = (int)stk[nstk-1]-1; int len = strlen(stk_str[nstk-2]); if (i1 < 0) i1 = 0; if (i1 > len) i1 = len; int n1 = (int)stk[nstk]-i1; if (i1+n1 > len) n1 = len-i1; if (n1 < 0) n1 = 0; char* result = (char*)malloc((n1+1)*sizeof(char)); ncpy(result, stk_str[nstk-2]+i1, n1); nstk -= 2; setsstr(&stk_str[nstk], result); } break; case 84: /* sgn */ if (stk[nstk]>=0) stk[nstk] = 1; else stk[nstk] = -1; break; case 85: /* sin */ stk[nstk] = sin(stk[nstk]); break; case 86: /* sqr */ stk[nstk] = stk[nstk] * stk[nstk]; break; case 87: /* sqrt */ stk[nstk] = sqrt(stk[nstk]); break; case 88: /* tan */ stk[nstk] = tan(stk[nstk]); break; case 89: /* tdepth */ *otyp = 1; g_get_xy(&xx,&yy); g_measure(stk_str[nstk],&x1,&x2,&y2,&y1); stk[nstk] = y1; break; case 90: /* theight */ *otyp = 1; g_get_xy(&xx,&yy); g_measure(stk_str[nstk],&x1,&x2,&y2,&y1); stk[nstk] = y2; break; case 91: /* time$ */ { *otyp = 2; time_t today; time(&today); ncpy(sbuf,ctime(&today)+11,9); setdstr(&stk_str[++nstk],sbuf); } break; case 60+FN_FILE: /* file$ */ *otyp = 2; { string tmp_s = getGLERunInstance()->getScript()->getLocation()->getMainName(); setdstr(&stk_str[++nstk], tmp_s.c_str()); } break; case 60+FN_PATH: /* path$ */ *otyp = 2; setdstr(&stk_str[++nstk], getGLERunInstance()->getScript()->getLocation()->getDirectory().c_str()); break; case 60+FN_FONT: *otyp = 1; stk[nstk] = check_has_font(stk_str[nstk]); break; case 92: /* twidth */ *otyp = 1; g_measure(stk_str[nstk],&x1,&x2,&y1,&y2); stk[nstk] = x2-x1; break; case 93: /* val */ *otyp = 1; stk[nstk] = string_to_number(stk_str[nstk]); break; case 94: /* width of named object */ *otyp = 1; getGLERunInstance()->name_to_size(stk_str[nstk], &x1, &y1); stk[nstk] = x1; break; case 95: /* xend */ *otyp = 1; stk[++nstk] = tex_xend(); break; case 96: /* xgraph */ *otyp = 1; stk[nstk] = graph_xgraph(stk[nstk]); break; case 97: /* xmax */ break; case 98: /* xmin */ break; case 99: /* xpos */ *otyp = 1; g_get_xy(&xx,&yy); stk[++nstk] = xx; break; case 100: /* yend */ stk[++nstk] = tex_yend(); *otyp = 1; break; case 101: /* ygraph */ stk[nstk] = graph_ygraph(stk[nstk]); *otyp = 1; break; case 102: /* ymax */ break; case 103: /* ymin */ break; case 104: /* ypos */ g_get_xy(&xx,&yy); *otyp = 1; stk[++nstk] = yy; break; case 105: /* CVTGRAY(.5) */ { GLERC color(new GLEColor(stk[nstk])); stk[nstk] = color->getDoubleEncoding(); } break; case 106: /* CVTINT(2) */ *otyp = 1; both.l[0] = (int) floor(stk[nstk]); both.l[1] = 0; memcpy(&stk[nstk],&both.d,sizeof(double)); break; case 108: /* CVTMARKER(m$) */ *otyp = 1; /* *** DEBUG *** */ //printf("\nCase 108\n"); both.l[0] = pass_marker(stk_str[nstk]); both.l[1] = 0; memcpy(&stk[nstk],&both.d,sizeof(double)); break; case 110: /* CVTFONT(m$) */ *otyp = 1; /* *** DEBUG *** */ //printf("\nCase 110\n"); both.l[0] = pass_font(stk_str[nstk]); both.l[1] = 0; memcpy(&stk[nstk],&both.d,sizeof(double)); break; case 60+FN_JUSTIFY: /* JUSTIFY(m$) */ *otyp = 1; both.l[0] = pass_justify(stk_str[nstk]); both.l[1] = 0; memcpy(&stk[nstk], &both.d, sizeof(double)); break; case 109: /* CVTCOLOR(c$) */ *otyp = 1; { GLERC color(pass_color_var(stk_str[nstk])); stk[nstk] = color->getDoubleEncoding(); } break; case 107: /* RGB(.4,.4,.2) */ { GLERC color(new GLEColor(stk[nstk-2], stk[nstk-1], stk[nstk])); nstk -= 2; stk[nstk] = color->getDoubleEncoding(); } break; case 140: /* RGB255(.4,.4,.2) */ { GLERC color(new GLEColor()); color->setRGB255(stk[nstk-2], stk[nstk-1], stk[nstk]); nstk -= 2; stk[nstk] = color->getDoubleEncoding(); } break; case 60+FN_RGBA: { GLERC color(new GLEColor(stk[nstk-3], stk[nstk-2], stk[nstk-1], stk[nstk])); nstk -= 3; stk[nstk] = color->getDoubleEncoding(); } break; case 60+FN_RGBA255: { GLERC color(new GLEColor()); color->setRGBA255(stk[nstk-3], stk[nstk-2], stk[nstk-1], stk[nstk]); nstk -= 3; stk[nstk] = color->getDoubleEncoding(); } break; case 60+FN_NDATA: /* Number of datapoints in a dateset */ *otyp = 1; i = atoi(stk_str[nstk]+1); if (i <= 0 || i >= MAX_NB_DATA || dp[i] == NULL) throw g_format_parser_error("dataset d%d not defined", i); else stk[nstk] = dp[i]->np; break; case 60+FN_DATAXVALUE: /* X value in a dateset */ *otyp = 1; nstk -= 1; i = atoi(stk_str[nstk]+1); j = (int) stk[nstk+1]; if (i <= 0 || i >= MAX_NB_DATA || dp[i] == NULL) throw g_format_parser_error("dataset d%d not defined", i); else if (j <= 0 || j > (int)dp[i]->np) { throw g_format_parser_error("index out of range: %d (1 ... %d)", j, dp[i]->np); } else { GLEArrayImpl* array = dp[i]->getDimData(0); if (array != 0) { stk[nstk] = array->getDouble(j-1); } } break; case 60+FN_DATAYVALUE: /* Y value in a dateset */ *otyp = 1; nstk -= 1; i = atoi(stk_str[nstk]+1); j = (int) stk[nstk+1]; if (i <= 0 || i >= MAX_NB_DATA || dp[i] == NULL) throw g_format_parser_error("dataset d%d not defined", i); else if (j <= 0 || j > (int)dp[i]->np) { throw g_format_parser_error("index out of range: %d (1 ... %d)", j, dp[i]->np); } else { GLEArrayImpl* array = dp[i]->getDimData(1); if (array != 0) { stk[nstk] = array->getDouble(j-1); } } break; case 60+FN_XG3D: stk[nstk - 2] = xg3d(stk[nstk - 2], stk[nstk - 1], stk[nstk]); nstk -= 2; break; case 60+FN_YG3D: stk[nstk - 2] = yg3d(stk[nstk - 2], stk[nstk - 1], stk[nstk]); nstk -= 2; break; default: /* User function, LOCAL_START_INDEX..nnn , or error */ /* Is it a user defined function */ if (*(pcode+c) >= LOCAL_START_INDEX) { /* pass the address of some numbers pass address of variables if possible */ getGLERunInstance()->sub_call(*(pcode+c)-LOCAL_START_INDEX,stk,stk_str,&nstk,otyp); } else { g_throw_parser_error("unrecognized byte code expression"); } break; } } } GLESub* eval_subroutine_call(int *pcode, int *cp, int* otyp) throw(ParserError) { if (*(pcode+(*cp)++) != 1) { (*cp)--; gprint("PCODE, Expecting expression, v=%ld cp=%d \n", *(pcode + (*cp)), *cp); return NULL; } int plen = pcode[(*cp)++]; eval_pcode_loop(pcode + (*cp), plen-1, otyp); int sub_code = pcode[(*cp) + plen - 1]; GLESub* result = NULL; if (sub_code >= LOCAL_START_INDEX) { result = sub_get(sub_code - LOCAL_START_INDEX); } *cp = *cp + plen; return result; } void eval_do_object_block_call(GLESub* sub, GLEObjectDO* obj) throw(ParserError) { int otyp = 1; GLEObjectDOConstructor* cons = obj->getConstructor(); obj->makePropertyStore(); GLEArrayImpl* arr = obj->getProperties()->getArray(); int first = 0; int offset = nstk - sub->getNbParam() + 1; if (cons->isSupportScale()) { // First two arguments are width and height arr->setDouble(0, stk[offset+0]); arr->setDouble(1, stk[offset+1]); first += 2; } for (int i = first; i < sub->getNbParam(); i++) { if (sub->getParamType(i) == 1) { ostringstream dstr; dstr << stk[offset+i]; arr->setObject(i, new GLEString(dstr.str())); } else { GLEString* str_i = new GLEString(stk_str[offset+i]); str_i->addQuotes(); arr->setObject(i, str_i); } } getGLERunInstance()->sub_call(sub->getIndex(), stk, stk_str, &nstk, &otyp); nstk--; if (nstk < 0) { nstk = 0; } } void eval(int *pcode, int *cp, double *oval, const char **ostr, int *otyp) throw(ParserError) { /* .. evaluate an expression .. pcode......a pointer to the pcode to execute cp.........Current point in this line of pcode oval.......place to put result number ostr.......place to put result string otyp.......place to put result type, 1=num, 2=str */ if (ostr != NULL) { /* make sure output string is valid */ *ostr = ""; } if (pcode[(*cp)] == 8) { /* Single constant */ union {double d; int l[2];} both; both.l[0] = *(pcode+ ++(*cp)); both.l[1] = 0; dbg gprint("Constant %ld \n",both.l[0]); memcpy(oval,&both.d,sizeof(both.d)); ++(*cp); return; } if (pcode[(*cp)++] != 1) { (*cp)--; gprint("PCODE, Expecting expression, v=%ld cp=%d \n", *(pcode + (*cp)), *cp); return; } int plen = pcode[(*cp)++]; eval_pcode_loop(pcode + (*cp), plen, otyp); dbg gprint("RESULT ISa ==== %d [1] %f [nstk] %f \n",nstk,stk[1],stk[nstk]); *oval = 0; if (*otyp == 1) { /* this is a number */ *oval = stk[nstk]; dbg gprint("Evaluated number = {%f} \n",*oval); } else if (*otyp == 2 && stk_str[nstk] != NULL) { if (ostr != NULL) { *ostr = stk_str[nstk]; dbg gprint("Evaluated string = {%s} \n", *ostr); } } else { /* function call gprint("ERROR in TYPE specification in EVAL otype=%d\n",*otyp); gprint("nstk=%d cde=%d\n",nstk,cde); */ } dbg gprint("RESULT ISb ==== %d [1] %f [nstk] %f \n",nstk,stk[1],stk[nstk]); dbg gprint("oval %g \n",*oval); nstk--; if (nstk < 0) { gprint("Stack stuffed up in EVAL %d \n",nstk); gprint("oval=%f ostr=%s otype=%d\n",*oval,*ostr,*otyp); nstk = 0; } *cp = *cp + plen; } void debug_polish(int *pcode,int *zcp) { int *cp,cpval; int plen,c,cde; cpval = *zcp; cp = &cpval; if (*(pcode+(*cp)++)!=1) { gprint("Expecting expression, v=%d \n",(int) *(pcode+--(*cp)) ); return; } plen = *(pcode+*(cp)); gprint("Expression length %d current point %d \n",plen,(int) *cp); if (plen>1000) gprint("Expession is suspiciously int %d \n",plen); for (c=(*cp)+1;(c-*cp)<=plen;c++) { cde = *(pcode+c); gprint("Code=%d ",cde); if (cde==0) { gprint("# ZERO \n"); } else if (cde==1) { gprint("# Expression, length ??? \n"); c++; } else if (cde==2) { gprint("# Floating point number %8x \n",*(pcode+(++c))); c++; /* because it's a DOUBLE which is a quad word */ } else if (cde==3) { gprint("# Variable \n"); c++; } else if (cde==4) { gprint("# String Variable \n"); c++; } else if (cde==5) { c++; gprint("# String constant {%s} \n",eval_str(pcode,&c)); } else if (cde<29) { gprint("# Binary operator {%s} \n",binop[cde-10]); } else if (cde<49) { gprint("# Binary string op {%s} \n",binop[cde-30]); } else if (cde* exprs) { g_select_device(GLE_DEVICE_DUMMY); g_clear(); sub_clear(false); clear_run(); f_init(); var_def("PI", GLE_PI); GLEPolish polish; polish.initTokenizer(); string line; if (exprs != NULL) { for (vector::size_type i = 0; i < exprs->size(); i++) { cout << "> " << (*exprs)[i] << endl; gle_as_a_calculator_eval(polish, (*exprs)[i]); } } else { while (true) { cout << "> "; fflush(stdout); ReadFileLineAllowEmpty(cin, line); str_trim_both(line); if (line == "") break; gle_as_a_calculator_eval(polish, line); } } } gle-graphics-4.2.4c/src/gle/Makefile.os20000664000000000000000000001037511405446017016441 0ustar rootroot######################################################################## # # # GLE - Graphics Layout Engine # # # # Modified BSD License # # # # Copyright (C) 2009 GLE. # # # # Redistribution and use in source and binary forms, with or without # # modification, are permitted provided that the following conditions # # are met: # # # # 1. Redistributions of source code must retain the above copyright # # notice, this list of conditions and the following disclaimer. # # # # 2. Redistributions in binary form must reproduce the above # # copyright notice, this list of conditions and the following # # disclaimer in the documentation and/or other materials provided with # # the distribution. # # # # 3. The name of the author may not be used to endorse or promote # # products derived from this software without specific prior written # # permission. # # # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR # # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY # # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE # # GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER # # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN # # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # # ######################################################################## # # makefile.os2 for GLE v4.0 # for compilation with gcc # # include ../../config.i include ../../config.os2 # include files.txt all: $(OBJECTS) $(LINKOBJS) $(PROJECT_BINDIR)/glerc $(PROJECT_BINDIR)/bin/gle.exe $(OBJECTS): $(INCLUDES) $(LINKOBJS): $(INCLUDES) $(PROJECT_BINDIR)/bin/gle.exe: $(PSOBJS) $(GLEOBJS) $(OBJECTS) $(LINKOBJS) $(CC) $(LINK_OPTS) -o $(PROJECT_BINDIR)/bin/gle.exe $(OBJECTS) $(LINKOBJS) $(EXTRA_LIBS) dofonts: make -C font $(PROJECT_BINDIR)/glerc: echo "begin config gle" > $(PROJECT_BINDIR)/glerc echo " current = $(VERSION_NUMBER).$(BUILD_NUMBER)" >> $(PROJECT_BINDIR)/glerc echo "end config" >> $(PROJECT_BINDIR)/glerc echo "" >> $(PROJECT_BINDIR)/glerc echo "begin config tools" >> $(PROJECT_BINDIR)/glerc echo " tex = \"vlatexp.cmd\"" >> $(PROJECT_BINDIR)/glerc echo " dvips = \"dvips.exe\"" >> $(PROJECT_BINDIR)/glerc echo " ghostscript = \"gsos2.exe\"" >> $(PROJECT_BINDIR)/glerc echo "end config" >> $(PROJECT_BINDIR)/glerc echo "" >> $(PROJECT_BINDIR)/glerc echo "begin config tex" >> $(PROJECT_BINDIR)/glerc echo " system = vtex" >> $(PROJECT_BINDIR)/glerc echo "end config" >> $(PROJECT_BINDIR)/glerc # # installs files and fonts to GLE_PATH and GLE_PATH/font # and creates the inittex.ini file # # # simple test to make the sample and compare it to # the eps file that is included in the distribution # -- if you get this far chances are it working allready ;-) # you should only get an error on the Creation date # test: # do this after make install! gle sample.gle /eps diff sample.eps sample_compare.eps clean: -$(RM) $(OBJECTS) $(LINKOBJS) $(PROJECT_BINDIR)/bin/gle.exe gle-graphics-4.2.4c/src/gle/glearray.cpp0000664000000000000000000004546311677063531016626 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ /* * 2004 Jan Struyf * */ #include "all.h" #include "core.h" #include "file_io.h" #include "texinterface.h" #include "cutils.h" #include "gprint.h" #include "tokens/RefCount.h" #include "glearray.h" #ifdef HAVE_LIBZ #include #endif RefCountObject::RefCountObject() { owner_count = 0; } RefCountObject::~RefCountObject() { } GLEObject::GLEObject() { } GLEObject::~GLEObject() { } int GLEObject::size() { return 0; } double GLEObject::getDoubleAt(int i) { return 0.0; } void GLEObject::setDoubleAt(double v, int i) { } bool GLEObject::getBoolAt(int i) { return false; } void GLEObject::setBoolAt(bool v, int i) { } GLEObject* GLEObject::getObjectAt(int i) { return NULL; } void GLEObject::setObjectAt(GLEObject* v, int i) { } GLEObjectArray::GLEObjectArray() { } GLEObjectArray::~GLEObjectArray() { } int GLEObjectArray::size() { return m_Elems.size(); } GLEObject* GLEObjectArray::getObjectAt(int i) { if (i > (int)m_Elems.size()) return NULL; else return m_Elems[i].get(); } void GLEObjectArray::setObjectAt(GLEObject* v, int i) { resize(i); m_Elems[i] = v; } void GLEObjectArray::resize(int n) { int add = n - m_Elems.size() + 1; while (add > 0) { m_Elems.push_back(NULL); add--; } } GLEDoubleArray::GLEDoubleArray() { } GLEDoubleArray::~GLEDoubleArray() { } int GLEDoubleArray::size() { return m_Elems.size(); } double GLEDoubleArray::getDoubleAt(int i) { if (i > (int)m_Elems.size()) return 0.0; else return m_Elems[i]; } void GLEDoubleArray::setDoubleAt(double v, int i) { resize(i); m_Elems[i] = v; } double* GLEDoubleArray::toArray() { double* res = (double*)myallocz(sizeof(double) * (m_Elems.size()+1)); for (vector::size_type i = 0; i < m_Elems.size(); i++) { res[i] = m_Elems[i]; } return res; } void GLEDoubleArray::resize(int n) { int add = n - m_Elems.size() + 1; while (add > 0) { m_Elems.push_back(0.0); add--; } } GLEBoolArray::GLEBoolArray() { } GLEBoolArray::~GLEBoolArray() { } int GLEBoolArray::size() { return m_Elems.size(); } bool GLEBoolArray::getBoolAt(int i) { if (i > (int)m_Elems.size()) return false; else return m_Elems[i]; } void GLEBoolArray::setBoolAt(bool v, int i) { resize(i); m_Elems[i] = v; } int* GLEBoolArray::toArray() { int* res = (int*)myallocz(sizeof(int) * (m_Elems.size()+1)); for (vector::size_type i = 0; i < m_Elems.size(); i++) { res[i] = m_Elems[i] ? 1 : 0; } return res; } void GLEBoolArray::resize(int n) { int add = n - m_Elems.size() + 1; while (add > 0) { m_Elems.push_back(false); add--; } } GLEZData::GLEZData() { m_ZMin = 1e300; m_ZMax = -1e300; m_NX = 0; m_NY = 0; m_Data = NULL; } GLEZData::~GLEZData() { if (m_Data != NULL) delete[] m_Data; } void GLEZData::read(const string& fname) throw(ParserError) { TokenizerLanguage lang; StreamTokenizer tokens(&lang); string expanded(GLEExpandEnvironmentVariables(fname)); validate_file_name(expanded, false); tokens.open_tokens(expanded.c_str()); lang.setSpaceTokens(" \t\r,"); lang.setSingleCharTokens("\n!"); // Read the header of the z file GLERectangle* bounds = getBounds(); tokens.ensure_next_token("!"); while (tokens.has_more_tokens()) { string& token = tokens.next_token(); if (token == "\n") { break; } else if (str_i_equals(token, "NX")) { m_NX = tokens.next_integer(); } else if (str_i_equals(token, "NY")) { m_NY = tokens.next_integer(); } else if (str_i_equals(token, "XMIN")) { bounds->setXMin(tokens.next_double()); } else if (str_i_equals(token, "XMAX")) { bounds->setXMax(tokens.next_double()); } else if (str_i_equals(token, "YMIN")) { bounds->setYMin(tokens.next_double()); } else if (str_i_equals(token, "YMAX")) { bounds->setYMax(tokens.next_double()); } else { stringstream str; str << "unknown .z header token '" << token << "'"; throw tokens.error(str.str()); } } lang.setLineCommentTokens("!"); lang.setSingleCharTokens(""); lang.setSpaceTokens(" \t\n\r,"); // Allocate data if (m_NX == 0 || m_NY == 0) { throw tokens.error("data file header should contain valid NX and NY parameters"); } m_Data = new double[m_NX * m_NY]; for (int y = 0; y < m_NY; y++) { for (int x = 0; x < m_NX; x++) { double v = tokens.next_double(); if (v < m_ZMin) m_ZMin = v; if (v > m_ZMax) m_ZMax = v; m_Data[x + y * m_NX] = v; } } } bool GLEReadFileBinaryGZIP(const string& name, std::vector* contents) { #ifdef HAVE_LIBZ gzFile file = gzopen(name.c_str(), "rb"); if (file == 0) { return false; } bool returnCode = true; const int GLE_READ_GZIP_BUFFER_SIZE = 100000; char* buffer = new char[GLE_READ_GZIP_BUFFER_SIZE]; bool done = false; while (!done) { int result = gzread(file, (voidp)buffer, GLE_READ_GZIP_BUFFER_SIZE); if (result == -1) { done = true; returnCode = false; } else if (result == 0) { done = true; } else { contents->reserve(contents->size() + result); for (int i = 0; i < result; ++i) { contents->push_back(buffer[i]); } } } delete[] buffer; gzclose(file); return returnCode; #else return false; #endif } bool GLEReadFileOrGZIP(const std::string& name, vector* lines) { bool res = GLEReadFile(name, lines); if (!res) { std::vector contents; res = GLEReadFileBinaryGZIP(name + ".gz", &contents); if (res) { split_into_lines(&contents, lines); } } return res; } bool GLEReadFileOrGZIPTxt(const std::string& name, std::string* result) { vector lines; bool res = GLEReadFileOrGZIP(name, &lines); result->clear(); if (res) { std::ostringstream strm; for (std::vector::size_type i = 0; i < lines.size(); ++i) { strm << lines[i] << std::endl; } *result = strm.str(); } return res; } GLECSVError::GLECSVError() { } GLECSVError::~GLECSVError() { } GLECSVData::GLECSVData() { initDelims(); m_lines = 0; m_ignoreHeader = 0; m_nextLine = true; m_firstColumn = 0; m_error.errorCode = GLECSVErrorNone; m_error.errorLine = 0; m_error.errorColumn = 0; m_comment = "!"; } GLECSVData::~GLECSVData() { delete[] m_delims; } bool GLECSVData::read(const std::string& file) { bool result = readBlock(file); if (!result) return false; parseBlock(); return true; } void GLECSVData::readBuffer(const char* buffer) { unsigned int size = strlen(buffer); m_buffer.resize(size + 1); memcpy(&m_buffer[0], buffer, size); m_buffer[size] = 0; parseBlock(); } bool GLECSVData::readBlock(const std::string& fileName) { m_fileName = fileName; if (str_i_ends_with(fileName, ".gz")) { if (GLEReadFileBinaryGZIP(fileName, &m_buffer)) { return true; } else { m_error.errorCode = GLECSVErrorFileNotFound; ostringstream errStr; errStr << "can't open: '" << fileName << "'"; m_error.errorString = errStr.str(); return false; } } else { ifstream file(fileName.c_str(), ios::in | ios::binary | ios::ate); if (file.is_open()) { unsigned int size = file.tellg(); m_buffer.resize(size + 1); file.seekg(0, ios::beg); file.read((char*)&m_buffer[0], size); file.close(); return true; } else { m_error.errorCode = GLECSVErrorFileNotFound; ostringstream errStr; errStr << "can't open: '" << fileName << "': "; str_get_system_error(errStr); m_error.errorString = errStr.str(); return false; } } } unsigned int GLECSVData::getNbLines() { return m_firstCell.size(); } unsigned int GLECSVData::getFirstCell(unsigned int line) { return m_firstCell[line]; } unsigned int GLECSVData::getNbColumns(unsigned int line) { unsigned int startCell = m_firstCell[line]; if (line + 1 >= m_firstCell.size()) { return m_cellPos.size() - startCell; } else { return m_firstCell[line + 1] - startCell; } } const char* GLECSVData::getCell(unsigned int row, unsigned int column, unsigned int* size) { unsigned int idx = m_firstCell[row] + column; *size = m_cellSize[idx]; return (const char*)&m_buffer[m_cellPos[idx]]; } string GLECSVData::getCellString(unsigned int row, unsigned int column) { unsigned int size; const char* buffer = getCell(row, column, &size); return string(buffer, size); } void GLECSVData::setCellTrim(unsigned int row, unsigned int column, const char* data) { unsigned int idx = m_firstCell[row] + column; unsigned int size = std::min(m_cellSize[idx], strlen(data)); for (unsigned int i = 0; i < size; i++) { m_buffer[m_cellPos[idx] + i] = data[i]; } m_cellSize[idx] = size; } unsigned int GLECSVData::validateIdenticalNumberOfColumns() { bool found = false; unsigned int dataColumns = 0; for (unsigned int row = 0; row < getNbLines(); ++row) { if (!found) { found = true; dataColumns = getNbColumns(row); } else { if (m_error.errorCode == GLECSVErrorNone && getNbColumns(row) != dataColumns) { m_error.errorCode = GLECSVErrorInconsistentNrColumns; m_error.errorLine = row; m_error.errorColumn = 0; ostringstream err; err << "inconsistent number of columns " << getNbColumns(row) << " <> " << dataColumns; createErrorString(err.str()); return dataColumns; } } } return dataColumns; } void GLECSVData::print(ostream& os) { vector columnWidth; for (unsigned int row = 0; row < getNbLines(); row++) { unsigned int nbColumns = getNbColumns(row); for (unsigned int col = 0; col < nbColumns; col++) { unsigned int size; const char* cell = getCell(row, col, &size); unsigned int chars = getUTF8NumberOfChars(cell, size); while (columnWidth.size() <= col) { columnWidth.push_back(0); } columnWidth[col] = std::max(columnWidth[col], chars + 1); } } for (unsigned int row = 0; row < getNbLines(); row++) { unsigned int nbColumns = getNbColumns(row); for (unsigned int col = 0; col < nbColumns; col++) { unsigned int size; const char* cell = getCell(row, col, &size); unsigned int chars = getUTF8NumberOfChars(cell, size); for (unsigned int idx = 0; idx < size; idx++) { os << cell[idx]; } if (col != nbColumns - 1) { os << ","; for (unsigned int idx = chars; idx < columnWidth[col]; idx++) { os << (char)' '; } } } os << endl; } } void GLECSVData::parseBlock() { m_pos = 0; m_size = m_buffer.size(); m_data = &m_buffer[0]; GLECSVDataStatus status = ignoreHeader(); while (status != GLECSVDataStatusEOF) { status = readCell(); } } void GLECSVData::setDelims(const char* delims) { int pos = 0; unsigned int size = 256; for (unsigned int i = 0; i < size; i++) { m_delims[i] = false; } while (delims[pos] != 0) { m_delims[(int)delims[pos]] = true; pos++; } m_lastDelimWasSpace = isDelim(' ') || isDelim('\t'); } void GLECSVData::setCommentIndicator(const char* comment) { m_comment = comment; } void GLECSVData::setIgnoreHeader(unsigned int ignore) { m_ignoreHeader = ignore; } void GLECSVData::initDelims() { unsigned int size = 256; m_delims = new bool[size]; setDelims(" ,;\t"); } bool GLECSVData::isDelim(GLEBYTE ch) { return m_delims[ch]; } bool GLECSVData::isSpace(GLEBYTE ch) { return ch == ' ' || ch == '\t'; } bool GLECSVData::isEol(GLEBYTE ch) { return ch == '\n' || ch == '\r'; } bool GLECSVData::isComment(GLEBYTE ch) { int currentPos = m_pos; size_t commentPos = 0; while (commentPos < m_comment.size() && ch == m_comment[commentPos]) { ch = readChar(); commentPos++; } if (commentPos == m_comment.size()) { goBack(); return true; } else { m_pos = currentPos; return false; } } GLECSVDataStatus GLECSVData::skipTillEol() { while (true) { GLEBYTE ch = readChar(); if (ch == 0) { return GLECSVDataStatusEOF; } if (isEol(ch)) { return readNewline(ch); } } } GLECSVDataStatus GLECSVData::ignoreHeader() { GLECSVDataStatus result = GLECSVDataStatusOK; for (unsigned int i = 0; i < m_ignoreHeader; i++) { result = skipTillEol(); } return result; } void GLECSVData::createErrorString(const string& str) { ostringstream err; err << str; err << " at " << (m_error.errorLine + 1) << ":" << (m_error.errorColumn + 1); err << " while reading '" << m_fileName << "'"; m_error.errorString = err.str(); } unsigned int GLECSVData::getUTF8Column(unsigned int cellPos) { int size = cellPos - m_firstColumn; if (size < 0) size = 0; return getUTF8NumberOfChars((const char*)&m_buffer[m_firstColumn], size); } GLECSVDataStatus GLECSVData::readCellString(GLEBYTE quote) { unsigned int cellSize = 1; unsigned int cellPos = lastCharPos(); initWritePos(); while (true) { GLEBYTE ch = readChar(); writeChar(ch); cellSize++; if (ch == 0) { m_error.errorCode = GLECSVErrorUnterminatedString; m_error.errorLine = m_lines; m_error.errorColumn = getUTF8Column(cellPos); createErrorString("unterminated string"); return GLECSVDataStatusEOF; } else if (isEol(ch)) { m_error.errorCode = GLECSVErrorUnterminatedString; m_error.errorLine = m_lines; m_error.errorColumn = getUTF8Column(cellPos); createErrorString("unterminated string"); return readNewline(ch); } else if (ch == quote) { GLEBYTE ch = readChar(); if (ch != quote) { writeChar(ch); createCell(cellSize, cellPos); return skipSpacesAndFirstDelim(ch); } } } return GLECSVDataStatusOK; } GLECSVDataStatus GLECSVData::readCell() { GLEBYTE ch = readSignificantChar(); if (ch == '"' || ch == '\'') { return readCellString(ch); } unsigned int cellCount = 0; unsigned int cellSize = 0; unsigned int cellPos = lastCharPos(); while (true) { if (ch == 0) { if (isSizeCheckOKEndOfLine(cellSize)) { createCell(cellSize, cellPos); } return GLECSVDataStatusEOF; } else if (isEol(ch)) { if (isSizeCheckOKEndOfLine(cellSize)) { createCell(cellSize, cellPos); } return readNewline(ch); } else if (isDelim(ch)) { m_lastDelimWasSpace = isSpace(ch); if (isSizeCheckOKAtDelim(ch, cellSize)) { createCell(cellSize, cellPos); } return skipSpacesAndFirstDelim(ch); } else if (isComment(ch)) { if (isSizeCheckOKEndOfLine(cellSize)) { createCell(cellSize, cellPos); } return skipTillEol(); } cellCount++; if (!isSpace(ch)) { cellSize = cellCount; } ch = readChar(); } return GLECSVDataStatusOK; } bool GLECSVData::isSizeCheckOKEndOfLine(unsigned int cellSize) { if (cellSize == 0) { if (m_nextLine) { return false; } if (m_lastDelimWasSpace) { return false; } } return true; } bool GLECSVData::isSizeCheckOKAtDelim(GLEBYTE delim, unsigned int cellSize) { if (cellSize == 0) { if (delim == ' ' || delim == '\t') { return false; } } return true; } void GLECSVData::createCell(unsigned int cellSize, unsigned int cellPos) { if (m_nextLine) { m_firstCell.push_back(m_cellPos.size()); m_nextLine = false; } m_cellSize.push_back(cellSize); m_cellPos.push_back(cellPos); } GLECSVDataStatus GLECSVData::readNewline(GLEBYTE prevCh) { m_lines++; m_nextLine = true; GLEBYTE ch = readChar(); if (ch == 0) { m_firstColumn = m_pos; return GLECSVDataStatusEOF; } if (isEol(ch) && (ch != prevCh)) { // Found, e.g., CR followed by LF (Windows encoding of new line) m_firstColumn = m_pos; return GLECSVDataStatusEOL; } // Found just CR or just LF (Unix / Mac encoding of new line) goBack(); m_firstColumn = m_pos; return GLECSVDataStatusEOL; } void GLECSVData::goBack() { if (m_pos > 0) { m_pos = m_pos - 1; } } unsigned int GLECSVData::lastCharPos() { if (m_pos > 0) { return m_pos - 1; } else { return 0; } } GLEBYTE GLECSVData::readChar() { if (m_pos == m_size) { return 0; } else { GLEBYTE ch = m_data[m_pos]; m_pos = m_pos + 1; return ch; } } void GLECSVData::initWritePos() { m_writePos = m_pos; } void GLECSVData::writeChar(GLEBYTE ch) { m_data[m_writePos++] = ch; } GLEBYTE GLECSVData::readSignificantChar() { GLEBYTE ch; do { ch = readChar(); if (ch == 0) { return 0; } } while (isSpace(ch)); return ch; } GLECSVDataStatus GLECSVData::skipSpacesAndFirstDelim(GLEBYTE ch) { while (true) { if (!isSpace(ch)) { if (ch == 0) { return GLECSVDataStatusEOF; } else if (isEol(ch)) { return readNewline(ch); } else if (isDelim(ch)) { m_lastDelimWasSpace = isSpace(ch); return GLECSVDataStatusOK; } else { goBack(); return GLECSVDataStatusOK; } } ch = readChar(); } return GLECSVDataStatusOK; } GLECSVError* GLECSVData::getError() { return &m_error; } gle-graphics-4.2.4c/src/gle/cutils.h0000664000000000000000000001442411656573125015763 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ #ifndef INCLUDE_CUTILS_H #define INCLUDE_CUTILS_H #include bool gle_onlyspace(const string& s); bool gle_isnumber(const char *s); bool gle_isalphanum(char ch); int gle_isnan(double v); int gle_isinf(double v); #define CUTILS_REL_PREC 1e-6 #define CUTILS_REL_PREC_FINE 1e-13 bool equals_rel(double actual, double value); bool equals_rel_fine(double actual, double value); const char* str_find_char(const char* s, int ch); const char* str_skip_brackets(const char* s, int ch1, int ch2); char* gle_strupr(char* s); char* gle_strlwr(char *s); void gle_strlwr(string& s); int str_skip_brackets(const string& s, int pos, int ch1, int ch2); // for compatibility between different compilers bool str_i_equals(const char* s1, const char* s2); bool str_ni_equals(const char* s1, const char* s2, int max); int str_i_cmp(const char* s1, const char* s2); struct str_i_less { bool operator()(const std::string& s1, const std::string& s2) const; }; char* str_i_str(const char* haystack, const char* needle); int str_i_str(const string& haystack, const char* needle); int str_i_str(const string& haystack, int from, const char* needle); bool str_i_equals(const string& s1, const string& s2); bool str_contains(const char* str, char ch); bool str_contains(const string& str, const char* elems); int str_remove_all(char* str, char ch); void str_prefix(int count, char ch, string* str); void str_to_uppercase(const string& input, string& output); void str_to_uppercase(string& output); void str_uppercase_initial_capital(string& str); bool str_only_space(const string& str); void str_trim_both(string& str); void str_trim_right(string& str); void str_trim_left(string& str); void str_trim_left(string& str, string& prefix); void str_trim_left_bom(string& str); int str_starts_with_trim(const string& str, const char* test); bool str_starts_with(const string& str, const char* find); bool str_i_starts_with(const string& str, const char* find); bool str_i_ends_with(const string& str, const char* find); void str_remove_quote(string& str); void str_try_add_quote(string& str); void str_parse_get_next(const string& strg, const char* find, string& res); void gle_int_to_string_bin(int value, string* binary); void gle_int_to_string(int value, string* str); int gle_double_digits(double value, int prec); int gle_int_digits(int value); char *un_quote(char *cts); int lastchar(char *s, char c); int gle_pow_ii(int x, int n); int f_pow_ii(int* ap, int* bp); double f_r_sign(double* a, double* b); int f_i_sign(int *a, int* b); void str_delete_start(string& str, char ch); void str_replace_start(string& str, const char* find, const char* repl); void str_replace_all(char* str, const char* find, const char* repl); void str_replace_all(string& str, const char* find, const char* repl); void str_get_system_error(ostream& error); int gle_round_int(double val); #if defined(__UNIX__) string str_format(const char* arg_list, ...); #else string str_format(va_list arg_list, ...); #endif void str_format(string* str, const char *format, va_list ap); int gle_pass_hex(const char* str, int from, int digits, int* err); void bool_vector_set_expand(vector* v, unsigned int i, bool value); bool bool_vector_is(vector* v, unsigned int i); void split_into_lines(const std::vector* input, std::vector* output); void CUtilsAssertImpl(const char* expr, const char* file, int line, const char* function); #define CUtilsAssertMessage(msg) \ CUtilsAssertImpl(msg, __FILE__, __LINE__, __FUNCTION__) #define CUtilsAssert(exp) \ if (!(exp)) CUtilsAssertImpl(#exp, __FILE__, __LINE__, __FUNCTION__) #endif gle-graphics-4.2.4c/src/gle/letzfitz/let.cpp0000644000000000000000000001457711405446017017450 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ /* * Trying to add surface support back into GLE * Jan Struyf 2005 */ #include "../all.h" #include "../tokens/Tokenizer.h" #include "../core.h" #include "../file_io.h" #include "../texinterface.h" #include "../cutils.h" #include "../gprint.h" #include "../cmdline.h" #include "../config.h" #include "../mem_limits.h" #include "../token.h" #include "../glearray.h" #include "../polish.h" #include "../var.h" #include "../gprint.h" #include "../keyword.h" #include "../run.h" #define BEGINDEF extern #include "../begin.h" double get_next_exp(TOKENS tk, int ntk, int *curtok); void get_next_exp_file(TOKENS tk, int ntok, int *curtok, string* res); #define kw(ss) if (ct <= ntk && str_i_equals(tk[ct],ss)) #define next_file_eval(s) get_next_exp_file(tk,ntk,&ct,&s) #define next_str(s) ct+=1;s=tk[ct] void get_from_to_step(TOKENS tk, int ntok, int *curtok, double* from, double* to, double* step) throw(ParserError) { (*curtok) = (*curtok) + 1; if ((*curtok) >= ntok) { return; } if (!str_i_equals(tk[(*curtok)], "FROM")) { g_throw_parser_error("expecting 'from' in letz block"); } *from = get_next_exp(tk, ntok, curtok); (*curtok) = (*curtok) + 1; if ((*curtok) >= ntok) { return; } if (!str_i_equals(tk[(*curtok)], "TO")) { g_throw_parser_error("expecting 'to' in letz block"); } *to = get_next_exp(tk, ntok, curtok); (*curtok) = (*curtok) + 1; if ((*curtok) >= ntok) { return; } if (!str_i_equals(tk[(*curtok)], "STEP")) { g_throw_parser_error("expecting 'step' in letz block"); } if (*from >= *to) { ostringstream err; err << "from value (" << *from << ") should be strictly smaller than to value (" << *to << ") in letz block"; g_throw_parser_error(err.str()); } *step = get_next_exp(tk, ntok, curtok); if (*step <= 0.0) { ostringstream err; err << "step value (" << *from << ") should be strictly positive in letz block"; g_throw_parser_error(err.str()); } } void begin_letz(int *pln, int *pcode, int *cp) throw(ParserError) { // Variables double xmin = 10, xmax = 10, xstep = 1; double ymin = 10, ymax = 10, ystep = 1; string equation, data_file; // Start with pcode from the next line (*pln)++; begin_init(); while (true) { int st = begin_token(&pcode,cp,pln,srclin,tk,&ntk,outbuff); if (!st) { /* exit loop */ break; } int ct = 1; kw("DATA") { next_file_eval(data_file); } else kw("Z") { ct++; next_str(equation); } else kw("X") { get_from_to_step(tk, ntk, &ct, &xmin, &xmax, &xstep); } else kw("Y") { get_from_to_step(tk, ntk, &ct, &ymin, &ymax, &ystep); } else if (ct <= ntk) { stringstream err; err << "illegal keyword in letz block: '" << tk[ct] << "'"; g_throw_parser_error(err.str()); } } // Create data file (if modified) /* cout << "Wriging to: " << data_file << endl; cout << "Equation: " << equation << endl; cout << "X from " << xmin << " to " << xmax << " step " << xstep << endl; cout << "Y from " << ymin << " to " << ymax << " step " << ystep << endl; */ int xvar, yvar, vtype = 1; var_findadd("X", &xvar, &vtype); var_findadd("Y", &yvar, &vtype); token_space(); /* Polish our equation */ int evalcode[400], plen = 0; polish((char*)equation.c_str(),(char *)evalcode, &plen, &vtype); if (get_nb_errors()!=0) { return; } FILE* fp = validate_fopen(data_file, "wb", false); int nx = (int)((xmax-xmin)/xstep + 1); int ny = (int)((ymax-ymin)/ystep + 1); fprintf(fp,"! nx %d ny %d xmin %g xmax %g ymin %g ymax %g \n",nx,ny,xmin,xmax,ymin,ymax); for (double y=ymin, yi=0; yi # # # # Modified BSD License # # # # Copyright (C) 2009 GLE. # # # # Redistribution and use in source and binary forms, with or without # # modification, are permitted provided that the following conditions # # are met: # # # # 1. Redistributions of source code must retain the above copyright # # notice, this list of conditions and the following disclaimer. # # # # 2. Redistributions in binary form must reproduce the above # # copyright notice, this list of conditions and the following # # disclaimer in the documentation and/or other materials provided with # # the distribution. # # # # 3. The name of the author may not be used to endorse or promote # # products derived from this software without specific prior written # # permission. # # # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR # # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY # # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE # # GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER # # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN # # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # # ######################################################################## # # makefile.gcc for GLE v4.0 # for compilation with gcc # # include ../../../config.i include ../../../config.os2 # include files.txt all: $(OBJECTS) $(OBJECTS): $(INCLUDES) clean: -$(RM) $(OBJECTS) gle-graphics-4.2.4c/src/gle/letzfitz/f2c.h0000664000000000000000000001504011405446017016767 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ /* f2c.h -- Standard Fortran to C header file */ /** barf [ba:rf] 2. "He suggested using FORTRAN, and everybody barfed." - From The Shogakukan DICTIONARY OF NEW ENGLISH (Second edition) */ #ifndef F2C_INCLUDE #define F2C_INCLUDE typedef int integer; typedef char *address; typedef short int shortint; typedef double real; typedef double doublereal; typedef struct { real r, i; } complex; typedef struct { doublereal r, i; } doublecomplex; typedef int logical; typedef short int shortlogical; #define TRUE_ (1) #define FALSE_ (0) /* Extern is for use with -E */ #ifndef Extern #define Extern extern #endif /* I/O stuff */ #ifdef f2c_i2 /* for -i2 */ typedef short flag; typedef short ftnlen; typedef short ftnint; #else typedef int flag; typedef int ftnlen; typedef int ftnint; #endif /*external read, write*/ typedef struct { flag cierr; ftnint ciunit; flag ciend; char *cifmt; ftnint cirec; } cilist; /*internal read, write*/ typedef struct { flag icierr; char *iciunit; flag iciend; char *icifmt; ftnint icirlen; ftnint icirnum; } icilist; /*open*/ typedef struct { flag oerr; ftnint ounit; char *ofnm; ftnlen ofnmlen; char *osta; char *oacc; char *ofm; ftnint orl; char *oblnk; } olist; /*close*/ typedef struct { flag cerr; ftnint cunit; char *csta; } cllist; /*rewind, backspace, endfile*/ typedef struct { flag aerr; ftnint aunit; } alist; /* inquire */ typedef struct { flag inerr; ftnint inunit; char *infile; ftnlen infilen; ftnint *inex; /*parameters in standard's order*/ ftnint *inopen; ftnint *innum; ftnint *innamed; char *inname; ftnlen innamlen; char *inacc; ftnlen inacclen; char *inseq; ftnlen inseqlen; char *indir; ftnlen indirlen; char *infmt; ftnlen infmtlen; char *inform; ftnint informlen; char *inunf; ftnlen inunflen; ftnint *inrecl; ftnint *innrec; char *inblank; ftnlen inblanklen; } inlist; #define VOID void union Multitype { /* for multiple entry points */ shortint h; integer i; real r; doublereal d; complex c; doublecomplex z; }; typedef union Multitype Multitype; typedef int Long; struct Vardesc { /* for Namelist */ char *name; char *addr; Long *dims; int type; }; typedef struct Vardesc Vardesc; struct Namelist { char *name; Vardesc **vars; int nvars; }; typedef struct Namelist Namelist; #define abs(x) ((x) >= 0 ? (x) : -(x)) #define dabs(x) (doublereal)abs(x) #define min(a,b) ((a) <= (b) ? (a) : (b)) #define max(a,b) ((a) >= (b) ? (a) : (b)) #define dmin(a,b) (doublereal)min(a,b) #define dmax(a,b) (doublereal)max(a,b) /* procedure parameter types for -A and -C++ */ #define F2C_proc_par_types 1 #ifdef __cplusplus typedef int /* Unknown procedure type */ (*U_fp)(...); typedef shortint (*J_fp)(...); typedef integer (*I_fp)(...); typedef real (*R_fp)(...); typedef doublereal (*D_fp)(...), (*E_fp)(...); typedef /* Complex */ VOID (*C_fp)(...); typedef /* Double Complex */ VOID (*Z_fp)(...); typedef logical (*L_fp)(...); typedef shortlogical (*K_fp)(...); typedef /* Character */ VOID (*H_fp)(...); typedef /* Subroutine */ int (*S_fp)(...); #else typedef int /* Unknown procedure type */ (*U_fp)(); typedef shortint (*J_fp)(); typedef integer (*I_fp)(); typedef real (*R_fp)(); typedef doublereal (*D_fp)(), (*E_fp)(); typedef /* Complex */ VOID (*C_fp)(); typedef /* Double Complex */ VOID (*Z_fp)(); typedef logical (*L_fp)(); typedef shortlogical (*K_fp)(); typedef /* Character */ VOID (*H_fp)(); typedef /* Subroutine */ int (*S_fp)(); #endif /* E_fp is for real functions when -R is not specified */ typedef doublereal E_f; /* real function with -R not specified */ /* undef any lower-case symbols that your C compiler predefines, e.g.: */ #ifndef Skip_f2c_Undefs #undef cray #undef gcos #undef mc68010 #undef mc68020 #undef mips #undef pdp11 #undef sgi #undef sparc #undef sun #undef sun2 #undef sun3 #undef sun4 #undef u370 #undef u3b #undef u3b2 #undef u3b5 #undef unix #undef vax #endif #endif gle-graphics-4.2.4c/src/gle/letzfitz/Makefile.vc0000664000000000000000000000551111447671544020230 0ustar rootroot######################################################################## # # # GLE - Graphics Layout Engine # # # # Modified BSD License # # # # Copyright (C) 2009 GLE. # # # # Redistribution and use in source and binary forms, with or without # # modification, are permitted provided that the following conditions # # are met: # # # # 1. Redistributions of source code must retain the above copyright # # notice, this list of conditions and the following disclaimer. # # # # 2. Redistributions in binary form must reproduce the above # # copyright notice, this list of conditions and the following # # disclaimer in the documentation and/or other materials provided with # # the distribution. # # # # 3. The name of the author may not be used to endorse or promote # # products derived from this software without specific prior written # # permission. # # # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR # # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY # # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE # # GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER # # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN # # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # # ######################################################################## # # makefile.vc for GLE v4.0 # for compilation with MS vc++ .net # # !include ..\..\..\config.vc # !include files.txt all: $(OBJECTS) $(OBJECTS): $(INCLUDES) clean: -erase $(OBJECTS) gle-graphics-4.2.4c/src/gle/letzfitz/fit.cpp0000664000000000000000000002622611405446120017435 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ /* * Surface fitting program, creates .z file from data points */ #include "../all.h" #include "../tokens/Tokenizer.h" #include "../core.h" #include "../file_io.h" #include "../texinterface.h" #include "../cutils.h" #include "../gprint.h" #include "../cmdline.h" #include "../config.h" #include "../mem_limits.h" #include "../token.h" #include "../glearray.h" #include "../polish.h" #include "../var.h" #include "../gprint.h" #include "../keyword.h" #include "../run.h" #define BEGINDEF extern #include "../begin.h" double get_next_exp(TOKENS tk, int ntk, int *curtok); void get_next_exp_file(TOKENS tk, int ntok, int *curtok, string* res); #define kw(ss) if (ct <= ntk && str_i_equals(tk[ct],ss)) #define next_file_eval(s) get_next_exp_file(tk,ntk,&ct,&s) #define next_str(s) ct+=1;s=tk[ct] void sort_data(int npnts, double *xd, double *yd, double *zd); int idbvip_(int *md, int *ncp, int *ndp, double *xd, double *yd, double *zd, int *nip, double *xi, double *yi, double *zi, int *iwk, double *wk); class GLEFitZData { public: int ncp; double ymin, xmin, xstep; double xmax, ymax, ystep; vector pntxyz; vector dx, dy, dz; string data_file; public: GLEFitZData(); void loadData() throw(ParserError); void sortData() throw(ParserError); }; GLEFitZData::GLEFitZData() { xmin = ymin = +10e10; xmax = ymax = -10e10; ncp = 3; } // different from the one in let.cpp because fields are optional here void get_from_to_step_fitz(TOKENS tk, int ntok, int *curtok, double* from, double* to, double* step) throw(ParserError) { (*curtok) = (*curtok) + 1; if ((*curtok) >= ntok) { return; } if (str_i_equals(tk[(*curtok)], "FROM")) { *from = get_next_exp(tk, ntok, curtok); (*curtok) = (*curtok) + 1; } if ((*curtok) >= ntok) { return; } if (str_i_equals(tk[(*curtok)], "TO")) { *to = get_next_exp(tk, ntok, curtok); (*curtok) = (*curtok) + 1; } if ((*curtok) >= ntok) { return; } if (str_i_equals(tk[(*curtok)], "STEP")) { *step = get_next_exp(tk, ntok, curtok); (*curtok) = (*curtok) + 1; } if ((*curtok) < ntok) { stringstream err; err << "illegal keyword in range expression '" << tk[(*curtok)] << "'"; g_throw_parser_error(err.str()); } if (*from >= *to) { ostringstream err; err << "from value (" << *from << ") should be strictly smaller than to value (" << *to << ") in letz block"; g_throw_parser_error(err.str()); } if (*step <= 0.0) { ostringstream err; err << "step value (" << *from << ") should be strictly positive in letz block"; g_throw_parser_error(err.str()); } } void begin_fitz(int *pln, int *pcode, int *cp) throw(ParserError) { GLEFitZData data; // Start with pcode from the next line (*pln)++; begin_init(); while (true) { int st = begin_token(&pcode,cp,pln,srclin,tk,&ntk,outbuff); if (!st) { /* exit loop */ break; } int ct = 1; // cout << "ct = " << ct << " tk = " << ntk << " tk = " << tk[ct] << endl; kw("DATA") { next_file_eval(data.data_file); data.loadData(); data.sortData(); } else kw("X") { get_from_to_step_fitz(tk, ntk, &ct, &data.xmin, &data.xmax, &data.xstep); } else kw("Y") { get_from_to_step_fitz(tk, ntk, &ct, &data.ymin, &data.ymax, &data.ystep); } else kw("NCONTOUR") { data.ncp = atoi(tk[++ct]); } else if (ct <= ntk) { stringstream err; err << "illegal keyword in fitz block: '" << tk[ct] << "'"; g_throw_parser_error(err.str()); } } /* char bfile[80],dfile[80],xrange[80]; real *xd, *yd, *zd; real *rx, *ry, *rz; int32 nx,ny; int32 nrp; int32 *iwk; real *wk; int32 i,j,k; */ /* printf("Number of points to use for contouring each point ? [3] "); ncp = getf(); if (ncp==0) ncp = 3; printf("Range of output x values [%g,%g,%g] ? ",xmin,xmax,xstep); getstr(xrange); getrange(xrange,&xmin,&xmax,&xstep); printf("Range of output y values [%g,%g,%g] ? ",ymin,ymax,ystep); getstr(xrange); getrange(xrange,&ymin,&ymax,&ystep); */ double xmax = data.xmax; double xmin = data.xmin; double ymax = data.ymax; double ymin = data.ymin; double xstep = data.xstep; double ystep = data.ystep; int nx = (int)floor((xmax-xmin)/xstep + 1); int ny = (int)floor((ymax-ymin)/ystep + 1); vector rx0, ry0, rz0; double y = ymin; for (int j = 0; j < ny; j++) { double x = xmin; for (int i = 0; i < nx; i++) { rx0.push_back(x); ry0.push_back(y); rz0.push_back(0); x += xstep; } y += ystep; } int ncp = data.ncp; int ndp = data.dx.size(); int md = 1; int nrp = nx*ny; int i = 27+ncp; if (i<31) i = 31; i = (i * ndp + nrp) * sizeof(int); int _j = 8*ndp*sizeof(double); // VL: _j to silence msvc warning about conflicting scope with j in for loop int* iwk = (int*)malloc(i); double* wk = (double*)malloc(_j); if (iwk == NULL || wk == NULL) { stringstream err; err << "unable to allocate enough workspace iwk = " << i << " wk = " << _j; g_throw_parser_error(err.str()); } double* xd = (double*)&data.dx[0]; double* yd = (double*)&data.dy[0]; double* zd = (double*)&data.dz[0]; double* rx = (double*)&rx0[0]; double* ry = (double*)&ry0[0]; double* rz = (double*)&rz0[0]; idbvip_(&md,&ncp,&ndp,xd,yd,zd,&nrp,rx,ry,rz,iwk,wk); string out_file; GetMainName(data.data_file, out_file); out_file += ".z"; /* Save output to file */ FILE* fp = validate_fopen(out_file, "wb", false); if (fp == NULL) { stringstream err; err << "unable to create .z file '" << out_file << "'"; g_throw_parser_error(err.str()); } fprintf(fp,"! nx %d ny %d xmin %g xmax %g ymin %g ymax %g\n",nx,ny,xmin,xmax,ymin,ymax); /* Write data matrix to file */ int k = 0; y = ymin; for (int j = 0; j < ny; j++) { double x = xmin; for (int i = 0; i < nx; i++) { fprintf(fp,"%g ",rz[k++]); x += xstep; } fprintf(fp,"\n"); y += ystep; } fclose(fp); } void setminmax(double v, double *min, double *max) { if (v< *min) *min = v; if (v> *max) *max = v; } void GLEFitZData::loadData() throw(ParserError) { TokenizerLanguage lang; StreamTokenizer tokens(&lang); string expanded(GLEExpandEnvironmentVariables(data_file)); validate_file_name(expanded, false); tokens.open_tokens(expanded.c_str()); lang.setLineCommentTokens("!"); lang.setSpaceTokens(" \t\r,"); lang.setSingleCharTokens("\n"); while (tokens.has_more_tokens()) { if (!tokens.is_next_token("\n")) { for (int i = 0; i < 3; i++) { string& token = tokens.next_token(); if (is_float(token)) { pntxyz.push_back(atof(token.c_str())); } else { stringstream err; err << "not a valid number: '" << token << "'"; throw tokens.error(err.str()); } } string& token = tokens.next_token(); if (token != "\n") { throw tokens.error("more than 3 columns in data file"); } } } } void GLEFitZData::sortData() throw(ParserError) { /* Copy data */ for (vector::size_type i = 0; i < pntxyz.size(); i+=3) { double xp = pntxyz[i]; double yp = pntxyz[i+1]; double zp = pntxyz[i+2]; dx.push_back(xp); dy.push_back(yp); dz.push_back(zp); setminmax(xp,&xmin,&xmax); setminmax(yp,&ymin,&ymax); } pntxyz.clear(); if (dx.empty()) { g_throw_parser_error("empty data file in fitz block"); } sort_data(dx.size(), (double*)&dx[0], (double*)&dy[0], (double*)&dz[0]); for (vector::size_type i = 0; i < dx.size()-1; i++) { if (dx[i] == dx[i+1] && dy[i] == dy[i+1]) { stringstream err; err << "duplicate data point: (" << dx[i] << "," << dy[i] << "," << dz[i] << ")"; g_throw_parser_error(err.str()); } } xstep = (xmax-xmin)/15.0; ystep = (ymax-ymin)/15.0; } double *xxx,*yyy,*zzz; void myswap(int i, int j) { static double a; a = xxx[i]; xxx[i] = xxx[j]; xxx[j] = a; a = yyy[i]; yyy[i] = yyy[j]; yyy[j] = a; a = zzz[i]; zzz[i] = zzz[j]; zzz[j] = a; } int mycmp(int i, double x1, double y1) { if (xxx[i]x1) return 1; if (yyy[i]y1) return 1; return 0; } void (*ffswap) (int i, int j); int (*ffcmp) (int i, double x1, double x2); void qquick_sort(int left, int right) { int i,j,xx; double x1,x2; i = left; j = right; xx = (left+right)/2; x1 = xxx[xx]; x2 = yyy[xx]; do { while((*ffcmp)(i,x1,x2)<0 && i0 && j>left) j--; if (i<=j) { (*ffswap)(i,j); i++; j--; } } while (i<=j); if (left # # # # Modified BSD License # # # # Copyright (C) 2009 GLE. # # # # Redistribution and use in source and binary forms, with or without # # modification, are permitted provided that the following conditions # # are met: # # # # 1. Redistributions of source code must retain the above copyright # # notice, this list of conditions and the following disclaimer. # # # # 2. Redistributions in binary form must reproduce the above # # copyright notice, this list of conditions and the following # # disclaimer in the documentation and/or other materials provided with # # the distribution. # # # # 3. The name of the author may not be used to endorse or promote # # products derived from this software without specific prior written # # permission. # # # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR # # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY # # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE # # GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER # # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN # # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # # ######################################################################## # # makefile.gcc for GLE v4.0 # for compilation with gcc # include ../../../config.i include ../../../config.aconf include files.txt CXX=@CXX@ CPPFLAGS=@LIBGLE_CPPFLAGS@@CPPFLAGS@ CPPFLAGS := $(strip $(CPPFLAGS)) LDFLAGS=@LDFLAGS@ LIBS=@LIBS@ all: $(OBJECTS) $(OBJECTS): %.o: %.cpp $(INCLUDES) $(CXX) $(CPPFLAGS) -c $< -o $@ clean: -$(RM) $(OBJECTS) gle-graphics-4.2.4c/src/gle/letzfitz/ffit.cpp0000664000000000000000000021231511405446017017604 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ /* fit.f -- translated by f2c (version of 26 February 1990 17:38:00). You must link the resulting object file with the libraries: -lF77 -lI77 -lm -lc (in that order) */ #include "math.h" #include "stdio.h" #include "f2c.h" /* Common Block Declarations */ typedef struct { integer nit; } idlc_; idlc_ idlc_1; typedef struct { integer itpv; } idpi_; idpi_ idpi_1; void do_fio(); void e_wsfe(); void s_stop(); void s_wsfe(); void err2090_(); void err2091_(); void err2091b_(); void err2092_(); void err2093_(); void err2094_(); int idcldp_(integer *ndp, real* xd, real* yd, integer* ncp, integer* ipc); int idgrid_(real* xd, real* yd, integer* nt, integer* ipt, integer* nl, integer* ipl, integer* nxi, integer* nyi, real* xi, real* yi, integer* ngp, integer* igp); int idlctn_(integer* ndp, real* xd, real* yd, integer* nt, integer* ipt, integer* nl, integer* ipl, real* xii, real* yii, integer* iti, integer* iwk, real* wk); int idpdrv_(integer* ndp, real* xd, real* yd, real* zd, integer* ncp, integer* ipc, real* pd); int idptip_(real* xd, real* yd, real* zd, integer* nt, integer* ipt, integer* nl, integer* ipl, real* pdd, integer* iti, real* xii, real* yii, real* zii); int idsfft_(integer *md, integer *ncp, integer *ndp, real *xd, real *yd, real *zd, integer *nxi, integer *nyi, real *xi, real *yi, real *zi, integer *iwk, real *wk); int idtang_(integer *ndp, real *xd, real *yd, integer *nt, integer *ipt, integer *nl, integer *ipl, integer *iwl, integer *iwp, real *wk); integer idxchg_(real *x, real *y, integer *i1, integer *i2, integer *i3, integer *i4); int idbvip_(int *md, int *ncp, int *ndp, double *xd, double *yd, double *zd, int *nip, double *xi, double *yi, double *zi, int *iwk, double *wk) { /* System generated locals */ integer i_1, i_2; /* Local variables */ static integer jwit, jwit0; static integer jwipc, jwipl, ncppv, ndppv, jwiwk, nippv, jwipt, jwiwl, jwiwp, nl; static integer nt; static integer md0, iip, ncp0, ndp0, nip0; /* this subroutine performs bivariate interpolation when the pro- */ /* jections of the data points in the x-y plane are irregularly */ /* distributed in the plane. */ /* the input parameters are */ /* md = mode of computation (must be 1, 2, or 3), */ /* = 1 for new ncp and/or new xd-yd, */ /* = 2 for old ncp, old xd-yd, new xi-yi, */ /* = 3 for old ncp, old xd-yd, old xi-yi, */ /* ncp = number of additional data points used for esti- */ /* mating partial derivatives at each data point */ /* (must be 2 or greater, but smaller than ndp), */ /* ndp = number of data points (must be 4 or greater), */ /* xd = array of dimension ndp containing the x */ /* coordinates of the data points, */ /* yd = array of dimension ndp containing the y */ /* coordinates of the data points, */ /* zd = array of dimension ndp containing the z */ /* coordinates of the data points, */ /* nip = number of output points at which interpolation */ /* is to be performed (must be 1 or greater), */ /* xi = array of dimension nip containing the x */ /* coordinates of the output points, */ /* yi = array of dimension nip containing the y */ /* coordinates of the output points. */ /* the output parameter is */ /* zi = array of dimension nip where interpolated z */ /* values are to be stored. */ /* the other parameters are */ /* iwk = integer array of dimension */ /* max0(31,27+ncp)*ndp+nip */ /* used internally as a work area, */ /* wk = array of dimension 8*ndp used internally as a */ /* work area. */ /* the very first call to this subroutine and the call with a new */ /* ncp value, a new ndp value, and/or new contents of the xd and */ /* yd arrays must be made with md=1. the call with md=2 must be */ /* preceded by another call with the same ncp and ndp values and */ /* with the same contents of the xd and yd arrays. the call with */ /* md=3 must be preceded by another call with the same ncp, ndp, */ /* and nip values and with the same contents of the xd, yd, xi, */ /* and yi arrays. between the call with md=2 or md=3 and its */ /* preceding call, the iwk and wk arrays must not be disturbed. */ /* use of a value between 3 and 5 (inclusive) for ncp is recom- */ /* mended unless there are evidences that dictate otherwise. */ /* the lun constant in the data initialization statement is the */ /* logical unit number of the standard output unit and is, */ /* therefore, system dependent. */ /* this subroutine calls the idcldp, idlctn, idpdrv, idptip, and */ /* idtang subroutines. */ /* declaration statements */ /* Parameter adjustments */ --wk; --iwk; --zi; --yi; --xi; --zd; --yd; --xd; /* Function Body */ /* setting of some input parameters to local variables. */ /* (for md=1,2,3) */ /* L10: */ md0 = *md; ncp0 = *ncp; ndp0 = *ndp; nip0 = *nip; /* error check. (for md=1,2,3) */ /* L20: */ if (md0 < 1 || md0 > 3) { goto L90; } if (ncp0 < 2 || ncp0 >= ndp0) { goto L90; } if (ndp0 < 4) { goto L90; } if (nip0 < 1) { goto L90; } if (md0 >= 2) { goto L21; } iwk[1] = ncp0; iwk[2] = ndp0; goto L22; L21: ncppv = iwk[1]; ndppv = iwk[2]; if (ncp0 != ncppv) { goto L90; } if (ndp0 != ndppv) { goto L90; } L22: if (md0 >= 3) { goto L23; } iwk[3] = *nip; goto L30; L23: nippv = iwk[3]; if (nip0 != nippv) { goto L90; } /* allocation of storage areas in the iwk array. (for md=1,2,3) */ L30: jwipt = 16; jwiwl = ndp0 * 6 + 1; jwiwk = jwiwl; jwipl = ndp0 * 24 + 1; jwiwp = ndp0 * 30 + 1; jwipc = ndp0 * 27 + 1; /* Computing MAX */ i_1 = 31, i_2 = ncp0 + 27; jwit0 = max(i_1,i_2) * ndp0; /* triangulates the x-y plane. (for md=1) */ /* L40: */ if (md0 > 1) { goto L50; } idtang_(&ndp0, &xd[1], &yd[1], &nt, &iwk[jwipt], &nl, &iwk[jwipl], &iwk[ jwiwl], &iwk[jwiwp], &wk[1]); iwk[5] = nt; iwk[6] = nl; if (nt == 0) { return 0; } /* determines ncp points closest to each data point. (for md=1) */ L50: if (md0 > 1) { goto L60; } idcldp_(&ndp0, &xd[1], &yd[1], &ncp0, &iwk[jwipc]); if (iwk[jwipc] == 0) { return 0; } /* locates all points at which interpolation is to be performed. */ /* (for md=1,2) */ L60: if (md0 == 3) { goto L70; } idlc_1.nit = 0; jwit = jwit0; i_1 = nip0; for (iip = 1; iip <= i_1; ++iip) { ++jwit; idlctn_(&ndp0, &xd[1], &yd[1], &nt, &iwk[jwipt], &nl, &iwk[jwipl], & xi[iip], &yi[iip], &iwk[jwit], &iwk[jwiwk], &wk[1]); /* L61: */ } /* estimates partial derivatives at all data points. */ /* (for md=1,2,3) */ L70: idpdrv_(&ndp0, &xd[1], &yd[1], &zd[1], &ncp0, &iwk[jwipc], &wk[1]); /* interpolates the zi values. (for md=1,2,3) */ /* L80: */ idpi_1.itpv = 0; jwit = jwit0; i_1 = nip0; for (iip = 1; iip <= i_1; ++iip) { ++jwit; idptip_(&xd[1], &yd[1], &zd[1], &nt, &iwk[jwipt], &nl, &iwk[jwipl], & wk[1], &iwk[jwit], &xi[iip], &yi[iip], &zi[iip]); /* L81: */ } return 0; /* error exit */ L90: err2090_(); return 0; /* format statement for error message */ /* L2090: */ } /* idbvip_ */ int idcldp_(integer *ndp, real* xd, real* yd, integer* ncp, integer* ipc) { /* Initialized data */ static integer ncpmx = 25; /* System generated locals */ integer i_1, i_2, i_3; real r_1, r_2; /* Local variables */ static real dsqi; static integer ip2mn, ip3mn; static integer nclpt; static real dsqmn; static integer j1; static real dsqmx; static integer j3, j4, j2; static real x1, y1; static integer ip1, ip2, ip3; static real dx12, dy12, dx13, dy13; static integer jmx, ipc0[25], ncp0, ndp0; static real dsq0[25]; /* this subroutine selects several data points that are closest */ /* to each of the data point. */ /* the input parameters are */ /* ndp = number of data points, */ /* xd,yd = arrays of dimension ndp containing the x and y */ /* coordinates of the data points, */ /* ncp = number of data points closest to each data */ /* points. */ /* the output parameter is */ /* ipc = integer array of dimension ncp*ndp, where the */ /* point numbers of ncp data points closest to */ /* each of the ndp data points are to be stored. */ /* this subroutine arbitrarily sets a restriction that ncp must */ /* not exceed 25. */ /* the lun constant in the data initialization statement is the */ /* logical unit number of the standard output unit and is, */ /* therefore, system dependent. */ /* declaration statements */ /* Parameter adjustments */ --ipc; --yd; --xd; /* Function Body */ /* statement function */ /* preliminary processing */ /* L10: */ ndp0 = *ndp; ncp0 = *ncp; if (ndp0 < 2) { goto L90; } if (ncp0 < 1 || ncp0 > ncpmx || ncp0 >= ndp0) { goto L90; } /* calculation */ /* L20: */ i_1 = ndp0; for (ip1 = 1; ip1 <= i_1; ++ip1) { /* - selects ncp points. */ x1 = xd[ip1]; y1 = yd[ip1]; j1 = 0; dsqmx = (float)0.; i_2 = ndp0; for (ip2 = 1; ip2 <= i_2; ++ip2) { if (ip2 == ip1) { goto L22; } /* Computing 2nd power */ r_1 = xd[ip2] - x1; /* Computing 2nd power */ r_2 = yd[ip2] - y1; dsqi = r_1 * r_1 + r_2 * r_2; ++j1; dsq0[j1 - 1] = dsqi; ipc0[j1 - 1] = ip2; if (dsqi <= dsqmx) { goto L21; } dsqmx = dsqi; jmx = j1; L21: if (j1 >= ncp0) { goto L23; } L22: ;} L23: ip2mn = ip2 + 1; if (ip2mn > ndp0) { goto L30; } i_2 = ndp0; for (ip2 = ip2mn; ip2 <= i_2; ++ip2) { if (ip2 == ip1) { goto L25; } /* Computing 2nd power */ r_1 = xd[ip2] - x1; /* Computing 2nd power */ r_2 = yd[ip2] - y1; dsqi = r_1 * r_1 + r_2 * r_2; if (dsqi >= dsqmx) { goto L25; } dsq0[jmx - 1] = dsqi; ipc0[jmx - 1] = ip2; dsqmx = (float)0.; i_3 = ncp0; for (j1 = 1; j1 <= i_3; ++j1) { if (dsq0[j1 - 1] <= dsqmx) { goto L24; } dsqmx = dsq0[j1 - 1]; jmx = j1; L24: ;} L25: ;} /* - checks if all the ncp+1 points are collinear. */ L30: ip2 = ipc0[0]; dx12 = xd[ip2] - x1; dy12 = yd[ip2] - y1; i_2 = ncp0; for (j3 = 2; j3 <= i_2; ++j3) { ip3 = ipc0[j3 - 1]; dx13 = xd[ip3] - x1; dy13 = yd[ip3] - y1; if (dy13 * dx12 - dx13 * dy12 != (float)0.) { goto L50; } /* L31: */ } /* - searches for the closest noncollinear point. */ /* L40: */ nclpt = 0; i_2 = ndp0; for (ip3 = 1; ip3 <= i_2; ++ip3) { if (ip3 == ip1) { goto L43; } i_3 = ncp0; for (j4 = 1; j4 <= i_3; ++j4) { if (ip3 == ipc0[j4 - 1]) { goto L43; } /* L41: */ } dx13 = xd[ip3] - x1; dy13 = yd[ip3] - y1; if (dy13 * dx12 - dx13 * dy12 == (float)0.) { goto L43; } /* Computing 2nd power */ r_1 = xd[ip3] - x1; /* Computing 2nd power */ r_2 = yd[ip3] - y1; dsqi = r_1 * r_1 + r_2 * r_2; if (nclpt == 0) { goto L42; } if (dsqi >= dsqmn) { goto L43; } L42: nclpt = 1; dsqmn = dsqi; ip3mn = ip3; L43: ;} if (nclpt == 0) { goto L91; } dsqmx = dsqmn; ipc0[jmx - 1] = ip3mn; /* - replaces the local array for the output array. */ L50: j1 = (ip1 - 1) * ncp0; i_2 = ncp0; for (j2 = 1; j2 <= i_2; ++j2) { ++j1; ipc[j1] = ipc0[j2 - 1]; /* L51: */ } /* L59: */ } return 0; /* error exit */ L90: err2090_(); goto L92; L91: err2091_(); L92: err2092_(); ipc[1] = 0; return 0; /* format statements for error messages */ /* L2090: */ /* L2091: */ /* L2092: */ } /* idcldp_ */ int idgrid_(real* xd, real* yd, integer* nt, integer* ipt, integer* nl, integer* ipl, integer* nxi, integer* nyi, real* xi, real* yi, integer* ngp, integer* igp) { /* System generated locals */ integer i_1, i_2, i_3, i_4; real r_1, r_2; /* Local variables */ static integer il0t3, insd, it0t3; static real ximn, yimn, ximx, yimx; static integer jigp0, jigp1, jngp0, jngp1, l, ilp1t3, iximn, iximx; static real x1, y1, x2, y2, x3, y3; static integer jigp1i, il0, nl0, ip1, ip2, it0, nxinyi, ip3, nt0, ixi, iyi; static real yii, xii; static integer izi; static real xmn, ymn, xmx, ymx; static integer ngp0, ngp1, ilp1, nxi0, nyi0; /* this subroutine organizes grid points for surface fitting by */ /* sorting them in ascending order of triangle numbers and of the */ /* border line segment number. */ /* the input parameters are */ /* xd,yd = arrays of dimension ndp containing the x and y */ /* coordinates of the data points, where ndp is the */ /* number of the data points, */ /* nt = number of triangles, */ /* ipt = integer array of dimension 3*nt containing the */ /* point numbers of the vertexes of the triangles, */ /* nl = number of border line segments, */ /* ipl = integer array of dimension 3*nl containing the */ /* point numbers of the end points of the border */ /* line segments and their respective triangle */ /* numbers, */ /* nxi = number of grid points in the x coordinate, */ /* nyi = number of grid points in the y coordinate, */ /* xi,yi = arrays of dimension nxi and nyi containing */ /* the x and y coordinates of the grid points, */ /* respectively. */ /* the output parameters are */ /* ngp = integer array of dimension 2*(nt+2*nl) where the */ /* number of grid points that belong to each of the */ /* triangles or of the border line segments are to */ /* be stored, */ /* igp = integer array of dimension nxi*nyi where the */ /* grid point numbers are to be stored in ascending */ /* order of the triangle number and the border line */ /* segment number. */ /* declaration statements */ /* statement functions */ /* preliminary processing */ /* Parameter adjustments */ --igp; --ngp; --yi; --xi; --ipl; --ipt; --yd; --xd; /* Function Body */ nt0 = *nt; nl0 = *nl; nxi0 = *nxi; nyi0 = *nyi; nxinyi = nxi0 * nyi0; /* Computing MIN */ r_1 = xi[1], r_2 = xi[nxi0]; ximn = dmin(r_1,r_2); /* Computing MAX */ r_1 = xi[1], r_2 = xi[nxi0]; ximx = dmax(r_1,r_2); /* Computing MIN */ r_1 = yi[1], r_2 = yi[nyi0]; yimn = dmin(r_1,r_2); /* Computing MAX */ r_1 = yi[1], r_2 = yi[nyi0]; yimx = dmax(r_1,r_2); /* determines grid points inside the data area. */ jngp0 = 0; jngp1 = ((nt0 + (nl0 << 1)) << 1) + 1; jigp0 = 0; jigp1 = nxinyi + 1; i_1 = nt0; for (it0 = 1; it0 <= i_1; ++it0) { ngp0 = 0; ngp1 = 0; it0t3 = it0 * 3; ip1 = ipt[it0t3 - 2]; ip2 = ipt[it0t3 - 1]; ip3 = ipt[it0t3]; x1 = xd[ip1]; y1 = yd[ip1]; x2 = xd[ip2]; y2 = yd[ip2]; x3 = xd[ip3]; y3 = yd[ip3]; /* Computing MIN */ r_1 = min(x1,x2); xmn = dmin(r_1,x3); /* Computing MAX */ r_1 = max(x1,x2); xmx = dmax(r_1,x3); /* Computing MIN */ r_1 = min(y1,y2); ymn = dmin(r_1,y3); /* Computing MAX */ r_1 = max(y1,y2); ymx = dmax(r_1,y3); insd = 0; i_2 = nxi0; for (ixi = 1; ixi <= i_2; ++ixi) { if (xi[ixi] >= xmn && xi[ixi] <= xmx) { goto L10; } if (insd == 0) { goto L20; } iximx = ixi - 1; goto L30; L10: if (insd == 1) { goto L20; } insd = 1; iximn = ixi; L20: ;} if (insd == 0) { goto L150; } iximx = nxi0; L30: i_2 = nyi0; for (iyi = 1; iyi <= i_2; ++iyi) { yii = yi[iyi]; if (yii < ymn || yii > ymx) { goto L140; } i_3 = iximx; for (ixi = iximn; ixi <= i_3; ++ixi) { xii = xi[ixi]; l = 0; if ((r_1 = (x1 - xii) * (y2 - yii) - (y1 - yii) * (x2 - xii)) < (float)0.) { goto L130; } else if (r_1 == 0) { goto L40; } else { goto L50; } L40: l = 1; L50: if ((r_1 = (x2 - xii) * (y3 - yii) - (y2 - yii) * (x3 - xii)) < (float)0.) { goto L130; } else if (r_1 == 0) { goto L60; } else { goto L70; } L60: l = 1; L70: if ((r_1 = (x3 - xii) * (y1 - yii) - (y3 - yii) * (x1 - xii)) < (float)0.) { goto L130; } else if (r_1 == 0) { goto L80; } else { goto L90; } L80: l = 1; L90: izi = nxi0 * (iyi - 1) + ixi; if (l == 1) { goto L100; } ++ngp0; ++jigp0; igp[jigp0] = izi; goto L130; L100: if (jigp1 > nxinyi) { goto L120; } i_4 = nxinyi; for (jigp1i = jigp1; jigp1i <= i_4; ++jigp1i) { if (izi == igp[jigp1i]) { goto L130; } /* L110: */ } L120: ++ngp1; --jigp1; igp[jigp1] = izi; L130: ;} L140: ;} L150: ++jngp0; ngp[jngp0] = ngp0; --jngp1; ngp[jngp1] = ngp1; /* L160: */ } /* determines grid points outside the data area. */ /* - in semi-infinite rectangular area. */ i_1 = nl0; for (il0 = 1; il0 <= i_1; ++il0) { ngp0 = 0; ngp1 = 0; il0t3 = il0 * 3; ip1 = ipl[il0t3 - 2]; ip2 = ipl[il0t3 - 1]; x1 = xd[ip1]; y1 = yd[ip1]; x2 = xd[ip2]; y2 = yd[ip2]; xmn = ximn; xmx = ximx; ymn = yimn; ymx = yimx; if (y2 >= y1) { xmn = dmin(x1,x2); } if (y2 <= y1) { xmx = dmax(x1,x2); } if (x2 <= x1) { ymn = dmin(y1,y2); } if (x2 >= x1) { ymx = dmax(y1,y2); } insd = 0; i_2 = nxi0; for (ixi = 1; ixi <= i_2; ++ixi) { if (xi[ixi] >= xmn && xi[ixi] <= xmx) { goto L170; } if (insd == 0) { goto L180; } iximx = ixi - 1; goto L190; L170: if (insd == 1) { goto L180; } insd = 1; iximn = ixi; L180: ;} if (insd == 0) { goto L310; } iximx = nxi0; L190: i_2 = nyi0; for (iyi = 1; iyi <= i_2; ++iyi) { yii = yi[iyi]; if (yii < ymn || yii > ymx) { goto L300; } i_3 = iximx; for (ixi = iximn; ixi <= i_3; ++ixi) { xii = xi[ixi]; l = 0; if ((r_1 = (x1 - xii) * (y2 - yii) - (y1 - yii) * (x2 - xii)) < (float)0.) { goto L210; } else if (r_1 == 0) { goto L200; } else { goto L290; } L200: l = 1; L210: if ((r_1 = (x2 - x1) * (xii - x1) + (y2 - y1) * (yii - y1)) < (float)0.) { goto L290; } else if (r_1 == 0) { goto L220; } else { goto L230; } L220: l = 1; L230: if ((r_1 = (x1 - x2) * (xii - x2) + (y1 - y2) * (yii - y2)) < (float)0.) { goto L290; } else if (r_1 == 0) { goto L240; } else { goto L250; } L240: l = 1; L250: izi = nxi0 * (iyi - 1) + ixi; if (l == 1) { goto L260; } ++ngp0; ++jigp0; igp[jigp0] = izi; goto L290; L260: if (jigp1 > nxinyi) { goto L280; } i_4 = nxinyi; for (jigp1i = jigp1; jigp1i <= i_4; ++jigp1i) { if (izi == igp[jigp1i]) { goto L290; } /* L270: */ } L280: ++ngp1; --jigp1; igp[jigp1] = izi; L290: ;} L300: ;} L310: ++jngp0; ngp[jngp0] = ngp0; --jngp1; ngp[jngp1] = ngp1; /* - in semi-infinite triangular area. */ ngp0 = 0; ngp1 = 0; ilp1 = il0 % nl0 + 1; ilp1t3 = ilp1 * 3; ip3 = ipl[ilp1t3 - 1]; x3 = xd[ip3]; y3 = yd[ip3]; xmn = ximn; xmx = ximx; ymn = yimn; ymx = yimx; if (y3 >= y2 && y2 >= y1) { xmn = x2; } if (y3 <= y2 && y2 <= y1) { xmx = x2; } if (x3 <= x2 && x2 <= x1) { ymn = y2; } if (x3 >= x2 && x2 >= x1) { ymx = y2; } insd = 0; i_2 = nxi0; for (ixi = 1; ixi <= i_2; ++ixi) { if (xi[ixi] >= xmn && xi[ixi] <= xmx) { goto L320; } if (insd == 0) { goto L330; } iximx = ixi - 1; goto L340; L320: if (insd == 1) { goto L330; } insd = 1; iximn = ixi; L330: ;} if (insd == 0) { goto L440; } iximx = nxi0; L340: i_2 = nyi0; for (iyi = 1; iyi <= i_2; ++iyi) { yii = yi[iyi]; if (yii < ymn || yii > ymx) { goto L430; } i_3 = iximx; for (ixi = iximn; ixi <= i_3; ++ixi) { xii = xi[ixi]; l = 0; if ((r_1 = (x1 - x2) * (xii - x2) + (y1 - y2) * (yii - y2)) < (float)0.) { goto L360; } else if (r_1 == 0) { goto L350; } else { goto L420; } L350: l = 1; L360: if ((r_1 = (x3 - x2) * (xii - x2) + (y3 - y2) * (yii - y2)) < (float)0.) { goto L380; } else if (r_1 == 0) { goto L370; } else { goto L420; } L370: l = 1; L380: izi = nxi0 * (iyi - 1) + ixi; if (l == 1) { goto L390; } ++ngp0; ++jigp0; igp[jigp0] = izi; goto L420; L390: if (jigp1 > nxinyi) { goto L410; } i_4 = nxinyi; for (jigp1i = jigp1; jigp1i <= i_4; ++jigp1i) { if (izi == igp[jigp1i]) { goto L420; } /* L400: */ } L410: ++ngp1; --jigp1; igp[jigp1] = izi; L420: ;} L430: ;} L440: ++jngp0; ngp[jngp0] = ngp0; --jngp1; ngp[jngp1] = ngp1; /* L450: */ } return 0; } /* idgrid_ */ int idlctn_(integer* ndp, real* xd, real* yd, integer* nt, integer* ipt, integer* nl, integer* ipl, real* xii, real* yii, integer* iti, integer* iwk, real* wk) { /* System generated locals */ integer i_1; real r_1, r_2; /* Local variables */ static integer idsc[9], il1t3, itsc, it0t3, jiwk, ntsc[9], ntsci, i1, i2, i3, itipv; static real x0, y0, x1, y1, x2, y2, x3, y3, xi, yi; static integer il1, il2, nl0, ip1, ip2, it0, ip3, nt0; static real xs1, xs2, ys1, ys2; static integer idp, isc, ntl, jwk; static real xmn, ymn, xmx, ymx; static integer ndp0; /* this subroutine locates a point, i.e., determines to what tri- */ /* angle a given point (xii,yii) belongs. when the given point */ /* does not lie inside the data area, this subroutine determines */ /* the border line segment when the point lies in an outside */ /* rectangular area, and two border line segments when the point */ /* lies in an outside triangular area. */ /* the input parameters are */ /* ndp = number of data points, */ /* xd,yd = arrays of dimension ndp containing the x and y */ /* coordinates of the data points, */ /* nt = number of triangles, */ /* ipt = integer array of dimension 3*nt containing the */ /* point numbers of the vertexes of the triangles, */ /* nl = number of border line segments, */ /* ipl = integer array of dimension 3*nl containing the */ /* point numbers of the end points of the border */ /* line segments and their respective triangle */ /* numbers, */ /* xii,yii = x and y coordinates of the point to be */ /* located. */ /* the output parameter is */ /* iti = triangle number, when the point is inside the */ /* data area, or */ /* two border line segment numbers, il1 and il2, */ /* coded to il1*(nt+nl)+il2, when the point is */ /* outside the data area. */ /* the other parameters are */ /* iwk = integer array of dimension 18*ndp used inter- */ /* nally as a work area, */ /* wk = array of dimension 8*ndp used internally as a */ /* work area. */ /* declaration statements */ /* statement functions */ /* preliminary processing */ /* Parameter adjustments */ --wk; --iwk; --ipl; --ipt; --yd; --xd; /* Function Body */ ndp0 = *ndp; nt0 = *nt; nl0 = *nl; ntl = nt0 + nl0; x0 = *xii; y0 = *yii; /* processing for a new set of data points */ if (idlc_1.nit != 0) { goto L80; } idlc_1.nit = 1; /* - divides the x-y plane into nine rectangular sections. */ xmn = xd[1]; xmx = xmn; ymn = yd[1]; ymx = ymn; i_1 = ndp0; for (idp = 2; idp <= i_1; ++idp) { xi = xd[idp]; yi = yd[idp]; xmn = dmin(xi,xmn); xmx = dmax(xi,xmx); ymn = dmin(yi,ymn); ymx = dmax(yi,ymx); /* L10: */ } xs1 = (xmn + xmn + xmx) / (float)3.; xs2 = (xmn + xmx + xmx) / (float)3.; ys1 = (ymn + ymn + ymx) / (float)3.; ys2 = (ymn + ymx + ymx) / (float)3.; /* - determines and stores in the iwk array triangle numbers of */ /* - the triangles associated with each of the nine sections. */ for (isc = 1; isc <= 9; ++isc) { ntsc[isc - 1] = 0; idsc[isc - 1] = 0; /* L20: */ } it0t3 = 0; jwk = 0; i_1 = nt0; for (it0 = 1; it0 <= i_1; ++it0) { it0t3 += 3; i1 = ipt[it0t3 - 2]; i2 = ipt[it0t3 - 1]; i3 = ipt[it0t3]; /* Computing MIN */ r_1 = xd[i1], r_2 = xd[i2], r_1 = min(r_1,r_2), r_2 = xd[i3]; xmn = dmin(r_1,r_2); /* Computing MAX */ r_1 = xd[i1], r_2 = xd[i2], r_1 = max(r_1,r_2), r_2 = xd[i3]; xmx = dmax(r_1,r_2); /* Computing MIN */ r_1 = yd[i1], r_2 = yd[i2], r_1 = min(r_1,r_2), r_2 = yd[i3]; ymn = dmin(r_1,r_2); /* Computing MAX */ r_1 = yd[i1], r_2 = yd[i2], r_1 = max(r_1,r_2), r_2 = yd[i3]; ymx = dmax(r_1,r_2); if (ymn > ys1) { goto L30; } if (xmn <= xs1) { idsc[0] = 1; } if (xmx >= xs1 && xmn <= xs2) { idsc[1] = 1; } if (xmx >= xs2) { idsc[2] = 1; } L30: if (ymx < ys1 || ymn > ys2) { goto L40; } if (xmn <= xs1) { idsc[3] = 1; } if (xmx >= xs1 && xmn <= xs2) { idsc[4] = 1; } if (xmx >= xs2) { idsc[5] = 1; } L40: if (ymx < ys2) { goto L50; } if (xmn <= xs1) { idsc[6] = 1; } if (xmx >= xs1 && xmn <= xs2) { idsc[7] = 1; } if (xmx >= xs2) { idsc[8] = 1; } L50: for (isc = 1; isc <= 9; ++isc) { if (idsc[isc - 1] == 0) { goto L60; } jiwk = ntsc[isc - 1] * 9 + isc; iwk[jiwk] = it0; ++ntsc[isc - 1]; idsc[isc - 1] = 0; L60: ;} /* - stores in the wk array the minimum and maximum of the x and */ /* - y coordinate values for each of the triangle. */ jwk += 4; wk[jwk - 3] = xmn; wk[jwk - 2] = xmx; wk[jwk - 1] = ymn; wk[jwk] = ymx; /* L70: */ } goto L110; /* checks if in the same triangle as previous. */ L80: it0 = itipv; if (it0 > nt0) { goto L90; } it0t3 = it0 * 3; ip1 = ipt[it0t3 - 2]; x1 = xd[ip1]; y1 = yd[ip1]; ip2 = ipt[it0t3 - 1]; x2 = xd[ip2]; y2 = yd[ip2]; if ((x1 - x0) * (y2 - y0) - (y1 - y0) * (x2 - x0) < (float)0.) { goto L110; } ip3 = ipt[it0t3]; x3 = xd[ip3]; y3 = yd[ip3]; if ((x2 - x0) * (y3 - y0) - (y2 - y0) * (x3 - x0) < (float)0.) { goto L110; } if ((x3 - x0) * (y1 - y0) - (y3 - y0) * (x1 - x0) < (float)0.) { goto L110; } goto L170; /* checks if on the same border line segment. */ L90: il1 = it0 / ntl; il2 = it0 - il1 * ntl; il1t3 = il1 * 3; ip1 = ipl[il1t3 - 2]; x1 = xd[ip1]; y1 = yd[ip1]; ip2 = ipl[il1t3 - 1]; x2 = xd[ip2]; y2 = yd[ip2]; if (il2 != il1) { goto L100; } if ((x1 - x2) * (x0 - x2) + (y1 - y2) * (y0 - y2) < (float)0.) { goto L110; } if ((x2 - x1) * (x0 - x1) + (y2 - y1) * (y0 - y1) < (float)0.) { goto L110; } if ((x1 - x0) * (y2 - y0) - (y1 - y0) * (x2 - x0) > (float)0.) { goto L110; } goto L170; /* checks if between the same two border line segments. */ L100: if ((x1 - x2) * (x0 - x2) + (y1 - y2) * (y0 - y2) > (float)0.) { goto L110; } ip3 = ipl[il2 * 3 - 1]; x3 = xd[ip3]; y3 = yd[ip3]; if ((x3 - x2) * (x0 - x2) + (y3 - y2) * (y0 - y2) <= (float)0.) { goto L170; } /* locates inside the data area. */ /* - determines the section in which the point in question lies. */ L110: isc = 1; if (x0 >= xs1) { ++isc; } if (x0 >= xs2) { ++isc; } if (y0 >= ys1) { isc += 3; } if (y0 >= ys2) { isc += 3; } /* - searches through the triangles associated with the section. */ ntsci = ntsc[isc - 1]; if (ntsci <= 0) { goto L130; } jiwk = isc - 9; i_1 = ntsci; for (itsc = 1; itsc <= i_1; ++itsc) { jiwk += 9; it0 = iwk[jiwk]; jwk = it0 << 2; if (x0 < wk[jwk - 3]) { goto L120; } if (x0 > wk[jwk - 2]) { goto L120; } if (y0 < wk[jwk - 1]) { goto L120; } if (y0 > wk[jwk]) { goto L120; } it0t3 = it0 * 3; ip1 = ipt[it0t3 - 2]; x1 = xd[ip1]; y1 = yd[ip1]; ip2 = ipt[it0t3 - 1]; x2 = xd[ip2]; y2 = yd[ip2]; if ((x1 - x0) * (y2 - y0) - (y1 - y0) * (x2 - x0) < (float)0.) { goto L120; } ip3 = ipt[it0t3]; x3 = xd[ip3]; y3 = yd[ip3]; if ((x2 - x0) * (y3 - y0) - (y2 - y0) * (x3 - x0) < (float)0.) { goto L120; } if ((x3 - x0) * (y1 - y0) - (y3 - y0) * (x1 - x0) < (float)0.) { goto L120; } goto L170; L120: ;} /* locates outside the data area. */ L130: i_1 = nl0; for (il1 = 1; il1 <= i_1; ++il1) { il1t3 = il1 * 3; ip1 = ipl[il1t3 - 2]; x1 = xd[ip1]; y1 = yd[ip1]; ip2 = ipl[il1t3 - 1]; x2 = xd[ip2]; y2 = yd[ip2]; if ((x2 - x1) * (x0 - x1) + (y2 - y1) * (y0 - y1) < (float)0.) { goto L150; } if ((x1 - x2) * (x0 - x2) + (y1 - y2) * (y0 - y2) < (float)0.) { goto L140; } if ((x1 - x0) * (y2 - y0) - (y1 - y0) * (x2 - x0) > (float)0.) { goto L150; } il2 = il1; goto L160; L140: il2 = il1 % nl0 + 1; ip3 = ipl[il2 * 3 - 1]; x3 = xd[ip3]; y3 = yd[ip3]; if ((x3 - x2) * (x0 - x2) + (y3 - y2) * (y0 - y2) <= (float)0.) { goto L160; } L150: ;} it0 = 1; goto L170; L160: it0 = il1 * ntl + il2; /* normal exit */ L170: *iti = it0; itipv = it0; return 0; } /* idlctn_ */ int idpdrv_(integer* ndp, real* xd, real* yd, real* zd, integer* ncp, integer* ipc, real* pd) { /* System generated locals */ integer i_1, i_2, i_3; /* Local variables */ static integer jipc; static real dnmx, dnmy, dnmz, nmxx, nmxy, nmyx, nmyy; static integer jipc0, ic2mn, ncpm1; static real dnmxx, dnmxy, dnmyx, dnmyy, x0, y0, z0; static integer ic1, ic2, ip0; static real dx1, dy1, dz1, dx2, dy2, dz2, zx0, zy0; static integer jpd, ipi; static real nmx, nmy, nmz; static integer jpd0, ncp0, ndp0; static real dzx1, dzy1, dzx2, dzy2; /* this subroutine estimates partial derivatives of the first and */ /* second order at the data points. */ /* the input parameters are */ /* ndp = number of data points, */ /* xd,yd,zd = arrays of dimension ndp containing the x, */ /* y, and z coordinates of the data points, */ /* ncp = number of additional data points used for esti- */ /* mating partial derivatives at each data point, */ /* ipc = integer array of dimension ncp*ndp containing */ /* the point numbers of ncp data points closest to */ /* each of the ndp data points. */ /* the output parameter is */ /* pd = array of dimension 5*ndp, where the estimated */ /* zx, zy, zxx, zxy, and zyy values at the data */ /* points are to be stored. */ /* declaration statements */ /* preliminary processing */ /* Parameter adjustments */ --pd; --ipc; --zd; --yd; --xd; /* Function Body */ /* L10: */ ndp0 = *ndp; ncp0 = *ncp; ncpm1 = ncp0 - 1; /* estimation of zx and zy */ /* L20: */ i_1 = ndp0; for (ip0 = 1; ip0 <= i_1; ++ip0) { x0 = xd[ip0]; y0 = yd[ip0]; z0 = zd[ip0]; nmx = (float)0.; nmy = (float)0.; nmz = (float)0.; jipc0 = ncp0 * (ip0 - 1); i_2 = ncpm1; for (ic1 = 1; ic1 <= i_2; ++ic1) { jipc = jipc0 + ic1; ipi = ipc[jipc]; dx1 = xd[ipi] - x0; dy1 = yd[ipi] - y0; dz1 = zd[ipi] - z0; ic2mn = ic1 + 1; i_3 = ncp0; for (ic2 = ic2mn; ic2 <= i_3; ++ic2) { jipc = jipc0 + ic2; ipi = ipc[jipc]; dx2 = xd[ipi] - x0; dy2 = yd[ipi] - y0; dnmz = dx1 * dy2 - dy1 * dx2; if (dnmz == (float)0.) { goto L22; } dz2 = zd[ipi] - z0; dnmx = dy1 * dz2 - dz1 * dy2; dnmy = dz1 * dx2 - dx1 * dz2; if (dnmz >= (float)0.) { goto L21; } dnmx = -(doublereal)dnmx; dnmy = -(doublereal)dnmy; dnmz = -(doublereal)dnmz; L21: nmx += dnmx; nmy += dnmy; nmz += dnmz; L22: ;} /* L23: */ } jpd0 = ip0 * 5; pd[jpd0 - 4] = -(doublereal)nmx / nmz; pd[jpd0 - 3] = -(doublereal)nmy / nmz; /* L24: */ } /* estimation of zxx, zxy, and zyy */ /* L30: */ i_1 = ndp0; for (ip0 = 1; ip0 <= i_1; ++ip0) { jpd0 += 5; x0 = xd[ip0]; jpd0 = ip0 * 5; y0 = yd[ip0]; zx0 = pd[jpd0 - 4]; zy0 = pd[jpd0 - 3]; nmxx = (float)0.; nmxy = (float)0.; nmyx = (float)0.; nmyy = (float)0.; nmz = (float)0.; jipc0 = ncp0 * (ip0 - 1); i_2 = ncpm1; for (ic1 = 1; ic1 <= i_2; ++ic1) { jipc = jipc0 + ic1; ipi = ipc[jipc]; dx1 = xd[ipi] - x0; dy1 = yd[ipi] - y0; jpd = ipi * 5; dzx1 = pd[jpd - 4] - zx0; dzy1 = pd[jpd - 3] - zy0; ic2mn = ic1 + 1; i_3 = ncp0; for (ic2 = ic2mn; ic2 <= i_3; ++ic2) { jipc = jipc0 + ic2; ipi = ipc[jipc]; dx2 = xd[ipi] - x0; dy2 = yd[ipi] - y0; dnmz = dx1 * dy2 - dy1 * dx2; if (dnmz == (float)0.) { goto L32; } jpd = ipi * 5; dzx2 = pd[jpd - 4] - zx0; dzy2 = pd[jpd - 3] - zy0; dnmxx = dy1 * dzx2 - dzx1 * dy2; dnmxy = dzx1 * dx2 - dx1 * dzx2; dnmyx = dy1 * dzy2 - dzy1 * dy2; dnmyy = dzy1 * dx2 - dx1 * dzy2; if (dnmz >= (float)0.) { goto L31; } dnmxx = -(doublereal)dnmxx; dnmxy = -(doublereal)dnmxy; dnmyx = -(doublereal)dnmyx; dnmyy = -(doublereal)dnmyy; dnmz = -(doublereal)dnmz; L31: nmxx += dnmxx; nmxy += dnmxy; nmyx += dnmyx; nmyy += dnmyy; nmz += dnmz; L32: ;} /* L33: */ } pd[jpd0 - 2] = -(doublereal)nmxx / nmz; pd[jpd0 - 1] = -(doublereal)(nmxy + nmyx) / (nmz * (float)2.); pd[jpd0] = -(doublereal)nmyy / nmz; /* L34: */ } return 0; } /* idpdrv_ */ int idptip_(real* xd, real* yd, real* zd, integer* nt, integer* ipt, integer* nl, integer* ipl, real* pdd, integer* iti, real* xii, real* yii, real* zii) { /* System generated locals */ static real equiv_0[1]; /* Local variables */ static integer jpdd, jipl, jipt; static real csuv, thus, thsv, thuv, thxu, a, b, c, d; static integer i; static real u, v, x[3], y[3], z[3], g1, h1, h2, h3, g2, p0, p1, p2, p3, p4; #define p5 (equiv_0) static real x0, y0, aa, ab, bb, ad, bc, cc, cd, dd, ac, p00, ap, bp, cp, pd[15]; #define p50 (equiv_0) static real dp, p10, p01, p20, p11, p02, p30, lu, lv, p40, p03, p04, p05, p41, p14, p21, p31, p12, p13, p22, zu[3], zv[3], p32, p23, dx, dy; static integer il1, il2, it0, idp, jpd, kpd; static real dlt; static integer ntl; static real zuu[3], zuv[3], zvv[3], act2, bdt2, adbc; /* this subroutine performs punctual interpolation or extrapola- */ /* tion, i.e., determines the z value at a point. */ /* the input parameters are */ /* xd,yd,zd = arrays of dimension ndp containing the x, */ /* y, and z coordinates of the data points, where */ /* ndp is the number of the data points, */ /* nt = number of triangles, */ /* ipt = integer array of dimension 3*nt containing the */ /* point numbers of the vertexes of the triangles, */ /* nl = number of border line segments, */ /* ipl = integer array of dimension 3*nl containing the */ /* point numbers of the end points of the border */ /* line segments and their respective triangle */ /* numbers, */ /* pdd = array of dimension 5*ndp containing the partial */ /* derivatives at the data points, */ /* iti = triangle number of the triangle in which lies */ /* the point for which interpolation is to be */ /* performed, */ /* xii,yii = x and y coordinates of the point for which */ /* interpolation is to be performed. */ /* the output parameter is */ /* zii = interpolated z value. */ /* declaration statements */ /* preliminary processing */ /* Parameter adjustments */ --pdd; --ipl; --ipt; --zd; --yd; --xd; /* Function Body */ /* L10: */ it0 = *iti; ntl = *nt + *nl; if (it0 <= ntl) { goto L20; } il1 = it0 / ntl; il2 = it0 - il1 * ntl; if (il1 == il2) { goto L40; } goto L60; /* calculation of zii by interpolation. */ /* checks if the necessary coefficients have been calculated. */ L20: if (it0 == idpi_1.itpv) { goto L30; } /* loads coordinate and partial derivative values at the */ /* vertexes. */ /* L21: */ jipt = (it0 - 1) * 3; jpd = 0; for (i = 1; i <= 3; ++i) { ++jipt; idp = ipt[jipt]; x[i - 1] = xd[idp]; y[i - 1] = yd[idp]; z[i - 1] = zd[idp]; jpdd = (idp - 1) * 5; for (kpd = 1; kpd <= 5; ++kpd) { ++jpd; ++jpdd; pd[jpd - 1] = pdd[jpdd]; /* L22: */ } /* L23: */ } /* determines the coefficients for the coordinate system */ /* transformation from the x-y system to the u-v system */ /* and vice versa. */ /* L24: */ x0 = x[0]; y0 = y[0]; a = x[1] - x0; b = x[2] - x0; c = y[1] - y0; d = y[2] - y0; ad = a * d; bc = b * c; dlt = ad - bc; ap = d / dlt; bp = -(doublereal)b / dlt; cp = -(doublereal)c / dlt; dp = a / dlt; /* converts the partial derivatives at the vertexes of the */ /* triangle for the u-v coordinate system. */ /* L25: */ aa = a * a; act2 = a * (float)2. * c; cc = c * c; ab = a * b; adbc = ad + bc; cd = c * d; bb = b * b; bdt2 = b * (float)2. * d; dd = d * d; for (i = 1; i <= 3; ++i) { jpd = i * 5; zu[i - 1] = a * pd[jpd - 5] + c * pd[jpd - 4]; zv[i - 1] = b * pd[jpd - 5] + d * pd[jpd - 4]; zuu[i - 1] = aa * pd[jpd - 3] + act2 * pd[jpd - 2] + cc * pd[jpd - 1]; zuv[i - 1] = ab * pd[jpd - 3] + adbc * pd[jpd - 2] + cd * pd[jpd - 1]; zvv[i - 1] = bb * pd[jpd - 3] + bdt2 * pd[jpd - 2] + dd * pd[jpd - 1]; /* L26: */ } /* calculates the coefficients of the polynomial. */ /* L27: */ p00 = z[0]; p10 = zu[0]; p01 = zv[0]; p20 = zuu[0] * (float).5; p11 = zuv[0]; p02 = zvv[0] * (float).5; h1 = z[1] - p00 - p10 - p20; h2 = zu[1] - p10 - zuu[0]; h3 = zuu[1] - zuu[0]; p30 = h1 * (float)10. - h2 * (float)4. + h3 * (float).5; p40 = h1 * (float)-15. + h2 * (float)7. - h3; *p50 = h1 * (float)6. - h2 * (float)3. + h3 * (float).5; h1 = z[2] - p00 - p01 - p02; h2 = zv[2] - p01 - zvv[0]; h3 = zvv[2] - zvv[0]; p03 = h1 * (float)10. - h2 * (float)4. + h3 * (float).5; p04 = h1 * (float)-15. + h2 * (float)7. - h3; p05 = h1 * (float)6. - h2 * (float)3. + h3 * (float).5; lu = sqrt(aa + cc); lv = sqrt(bb + dd); thxu = atan2(c, a); thuv = atan2(d, b) - thxu; csuv = cos(thuv); p41 = lv * (float)5. * csuv / lu * *p50; p14 = lu * (float)5. * csuv / lv * p05; h1 = zv[1] - p01 - p11 - p41; h2 = zuv[1] - p11 - p41 * (float)4.; p21 = h1 * (float)3. - h2; p31 = h1 * (float)-2. + h2; h1 = zu[2] - p10 - p11 - p14; h2 = zuv[2] - p11 - p14 * (float)4.; p12 = h1 * (float)3. - h2; p13 = h1 * (float)-2. + h2; thus = atan2(d - c, b - a) - thxu; thsv = thuv - thus; aa = sin(thsv) / lu; bb = -(doublereal)cos(thsv) / lu; cc = sin(thus) / lv; dd = cos(thus) / lv; ac = aa * cc; ad = aa * dd; bc = bb * cc; g1 = aa * ac * (bc * (float)3. + ad * (float)2.); g2 = cc * ac * (ad * (float)3. + bc * (float)2.); h1 = -(doublereal)aa * aa * aa * (aa * (float)5. * bb * *p50 + (bc * ( float)4. + ad) * p41) - cc * cc * cc * (cc * (float)5. * dd * p05 + (ad * (float)4. + bc) * p14); h2 = zvv[1] * (float).5 - p02 - p12; h3 = zuu[2] * (float).5 - p20 - p21; p22 = (g1 * h2 + g2 * h3 - h1) / (g1 + g2); p32 = h2 - p22; p23 = h3 - p22; idpi_1.itpv = it0; /* converts xii and yii to u-v system. */ L30: dx = *xii - x0; dy = *yii - y0; u = ap * dx + bp * dy; v = cp * dx + dp * dy; /* evaluates the polynomial. */ /* L31: */ p0 = p00 + v * (p01 + v * (p02 + v * (p03 + v * (p04 + v * p05)))); p1 = p10 + v * (p11 + v * (p12 + v * (p13 + v * p14))); p2 = p20 + v * (p21 + v * (p22 + v * p23)); p3 = p30 + v * (p31 + v * p32); p4 = p40 + v * p41; *zii = p0 + u * (p1 + u * (p2 + u * (p3 + u * (p4 + u * *p5)))); return 0; /* calculation of zii by extrapolation in the rectangle. */ /* checks if the necessary coefficients have been calculated. */ L40: if (it0 == idpi_1.itpv) { goto L50; } /* loads coordinate and partial derivative values at the end */ /* points of the border line segment. */ /* L41: */ jipl = (il1 - 1) * 3; jpd = 0; for (i = 1; i <= 2; ++i) { ++jipl; idp = ipl[jipl]; x[i - 1] = xd[idp]; y[i - 1] = yd[idp]; z[i - 1] = zd[idp]; jpdd = (idp - 1) * 5; for (kpd = 1; kpd <= 5; ++kpd) { ++jpd; ++jpdd; pd[jpd - 1] = pdd[jpdd]; /* L42: */ } /* L43: */ } /* determines the coefficients for the coordinate system */ /* transformation from the x-y system to the u-v system */ /* and vice versa. */ /* L44: */ x0 = x[0]; y0 = y[0]; a = y[1] - y[0]; b = x[1] - x[0]; c = -(doublereal)b; d = a; ad = a * d; bc = b * c; dlt = ad - bc; ap = d / dlt; bp = -(doublereal)b / dlt; cp = -(doublereal)bp; dp = ap; /* converts the partial derivatives at the end points of the */ /* border line segment for the u-v coordinate system. */ /* L45: */ aa = a * a; act2 = a * (float)2. * c; cc = c * c; ab = a * b; adbc = ad + bc; cd = c * d; bb = b * b; bdt2 = b * (float)2. * d; dd = d * d; for (i = 1; i <= 2; ++i) { jpd = i * 5; zu[i - 1] = a * pd[jpd - 5] + c * pd[jpd - 4]; zv[i - 1] = b * pd[jpd - 5] + d * pd[jpd - 4]; zuu[i - 1] = aa * pd[jpd - 3] + act2 * pd[jpd - 2] + cc * pd[jpd - 1]; zuv[i - 1] = ab * pd[jpd - 3] + adbc * pd[jpd - 2] + cd * pd[jpd - 1]; zvv[i - 1] = bb * pd[jpd - 3] + bdt2 * pd[jpd - 2] + dd * pd[jpd - 1]; /* L46: */ } /* calculates the coefficients of the polynomial. */ /* L47: */ p00 = z[0]; p10 = zu[0]; p01 = zv[0]; p20 = zuu[0] * (float).5; p11 = zuv[0]; p02 = zvv[0] * (float).5; h1 = z[1] - p00 - p01 - p02; h2 = zv[1] - p01 - zvv[0]; h3 = zvv[1] - zvv[0]; p03 = h1 * (float)10. - h2 * (float)4. + h3 * (float).5; p04 = h1 * (float)-15. + h2 * (float)7. - h3; p05 = h1 * (float)6. - h2 * (float)3. + h3 * (float).5; h1 = zu[1] - p10 - p11; h2 = zuv[1] - p11; p12 = h1 * (float)3. - h2; p13 = h1 * (float)-2. + h2; p21 = (float)0.; p23 = -(doublereal)zuu[1] + zuu[0]; p22 = p23 * (float)-1.5; idpi_1.itpv = it0; /* converts xii and yii to u-v system. */ L50: dx = *xii - x0; dy = *yii - y0; u = ap * dx + bp * dy; v = cp * dx + dp * dy; /* evaluates the polynomial. */ /* L51: */ p0 = p00 + v * (p01 + v * (p02 + v * (p03 + v * (p04 + v * p05)))); p1 = p10 + v * (p11 + v * (p12 + v * p13)); p2 = p20 + v * (p21 + v * (p22 + v * p23)); *zii = p0 + u * (p1 + u * p2); return 0; /* calculation of zii by extrapolation in the triangle. */ /* checks if the necessary coefficients have been calculated. */ L60: if (it0 == idpi_1.itpv) { goto L70; } /* loads coordinate and partial derivative values at the vertex */ /* of the triangle. */ /* L61: */ jipl = il2 * 3 - 2; idp = ipl[jipl]; x[0] = xd[idp]; y[0] = yd[idp]; z[0] = zd[idp]; jpdd = (idp - 1) * 5; for (kpd = 1; kpd <= 5; ++kpd) { ++jpdd; pd[kpd - 1] = pdd[jpdd]; /* L62: */ } /* calculates the coefficients of the polynomial. */ /* L67: */ p00 = z[0]; p10 = pd[0]; p01 = pd[1]; p20 = pd[2] * (float).5; p11 = pd[3]; p02 = pd[4] * (float).5; idpi_1.itpv = it0; /* converts xii and yii to u-v system. */ L70: u = *xii - x[0]; v = *yii - y[0]; /* evaluates the polynomial. */ /* L71: */ p0 = p00 + v * (p01 + v * p02); p1 = p10 + v * p11; *zii = p0 + u * (p1 + u * p20); return 0; } /* idptip_ */ #undef p50 #undef p5 int idsfft_(integer *md, integer *ncp, integer *ndp, real *xd, real *yd, real *zd, integer *nxi, integer *nyi, real *xi, real *yi, real *zi, integer *iwk, real *wk) { /* System generated locals */ integer i_1, i_2; /* Local variables */ static integer jigp, jngp, nngp; static integer jwipc, jwigp, jwipl, ncppv, ndppv, jwngp, jwiwl, jwipt, jwiwp, nxipv, nyipv, jig0mn, jig1mn, jig0mx, jig1mx, jwigp0, jwngp0, nl; static integer nt; static integer md0, il1, il2, iti, ixi, izi, iyi, ncp0, ndp0, ngp0, ngp1, nxi0, nyi0; /* this subroutine performs smooth surface fitting when the pro- */ /* jections of the data points in the x-y plane are irregularly */ /* distributed in the plane. */ /* the input parameters are */ /* md = mode of computation (must be 1, 2, or 3), */ /* = 1 for new ncp and/or new xd-yd, */ /* = 2 for old ncp, old xd-yd, new xi-yi, */ /* = 3 for old ncp, old xd-yd, old xi-yi, */ /* ncp = number of additional data points used for esti- */ /* mating partial derivatives at each data point */ /* (must be 2 or greater, but smaller than ndp), */ /* ndp = number of data points (must be 4 or greater), */ /* xd = array of dimension ndp containing the x */ /* coordinates of the data points, */ /* yd = array of dimension ndp containing the y */ /* coordinates of the data points, */ /* zd = array of dimension ndp containing the z */ /* coordinates of the data points, */ /* nxi = number of output grid points in the x coordinate */ /* (must be 1 or greater), */ /* nyi = number of output grid points in the y coordinate */ /* (must be 1 or greater), */ /* xi = array of dimension nxi containing the x */ /* coordinates of the output grid points, */ /* yi = array of dimension nyi containing the y */ /* coordinates of the output grid points. */ /* the output parameter is */ /* zi = doubly-dimensioned array of dimension (nxi,nyi), */ /* where the interpolated z values at the output */ /* grid points are to be stored. */ /* the other parameters are */ /* iwk = integer array of dimension */ /* max0(31,27+ncp)*ndp+nxi*nyi */ /* used internally as a work area, */ /* wk = array of dimension 5*ndp used internally as a */ /* work area. */ /* the very first call to this subroutine and the call with a new */ /* ncp value, a new ndp value, and/or new contents of the xd and */ /* yd arrays must be made with md=1. the call with md=2 must be */ /* preceded by another call with the same ncp and ndp values and */ /* with the same contents of the xd and yd arrays. the call with */ /* md=3 must be preceded by another call with the same ncp, ndp, */ /* nxi, and nyi values and with the same contents of the xd, yd, */ /* xi, and yi arrays. between the call with md=2 or md=3 and its */ /* preceding call, the iwk and wk arrays must not be disturbed. */ /* use of a value between 3 and 5 (inclusive) for ncp is recom- */ /* mended unless there are evidences that dictate otherwise. */ /* the lun constant in the data initialization statement is the */ /* logical unit number of the standard output unit and is, */ /* therefore, system dependent. */ /* this subroutine calls the idcldp, idgrid, idpdrv, idptip, and */ /* idtang subroutines. */ /* declaration statements */ /* Parameter adjustments */ --wk; --iwk; --zi; --yi; --xi; --zd; --yd; --xd; /* Function Body */ /* setting of some input parameters to local variables. */ /* (for md=1,2,3) */ /* L10: */ md0 = *md; ncp0 = *ncp; ndp0 = *ndp; nxi0 = *nxi; nyi0 = *nyi; /* error check. (for md=1,2,3) */ /* L20: */ if (md0 < 1 || md0 > 3) { goto L90; } if (ncp0 < 2 || ncp0 >= ndp0) { goto L90; } if (ndp0 < 4) { goto L90; } if (nxi0 < 1 || nyi0 < 1) { goto L90; } if (md0 >= 2) { goto L21; } iwk[1] = ncp0; iwk[2] = ndp0; goto L22; L21: ncppv = iwk[1]; ndppv = iwk[2]; if (ncp0 != ncppv) { goto L90; } if (ndp0 != ndppv) { goto L90; } L22: if (md0 >= 3) { goto L23; } iwk[3] = nxi0; iwk[4] = nyi0; goto L30; L23: nxipv = iwk[3]; nyipv = iwk[4]; if (nxi0 != nxipv) { goto L90; } if (nyi0 != nyipv) { goto L90; } /* allocation of storage areas in the iwk array. (for md=1,2,3) */ L30: jwipt = 16; jwiwl = ndp0 * 6 + 1; jwngp0 = jwiwl - 1; jwipl = ndp0 * 24 + 1; jwiwp = ndp0 * 30 + 1; jwipc = ndp0 * 27 + 1; /* Computing MAX */ i_1 = 31, i_2 = ncp0 + 27; jwigp0 = max(i_1,i_2) * ndp0; /* triangulates the x-y plane. (for md=1) */ /* L40: */ if (md0 > 1) { goto L50; } idtang_(&ndp0, &xd[1], &yd[1], &nt, &iwk[jwipt], &nl, &iwk[jwipl], &iwk[ jwiwl], &iwk[jwiwp], &wk[1]); iwk[5] = nt; iwk[6] = nl; if (nt == 0) { return 0; } /* determines ncp points closest to each data point. (for md=1) */ L50: if (md0 > 1) { goto L60; } idcldp_(&ndp0, &xd[1], &yd[1], &ncp0, &iwk[jwipc]); if (iwk[jwipc] == 0) { return 0; } /* sorts output grid points in ascending order of the triangle */ /* number and the border line segment number. (for md=1,2) */ L60: if (md0 == 3) { goto L70; } idgrid_(&xd[1], &yd[1], &nt, &iwk[jwipt], &nl, &iwk[jwipl], &nxi0, &nyi0, &xi[1], &yi[1], &iwk[jwngp0 + 1], &iwk[jwigp0 + 1]); /* estimates partial derivatives at all data points. */ /* (for md=1,2,3) */ L70: idpdrv_(&ndp0, &xd[1], &yd[1], &zd[1], &ncp0, &iwk[jwipc], &wk[1]); /* interpolates the zi values. (for md=1,2,3) */ /* L80: */ idpi_1.itpv = 0; jig0mx = 0; jig1mn = nxi0 * nyi0 + 1; nngp = nt + (nl << 1); i_1 = nngp; for (jngp = 1; jngp <= i_1; ++jngp) { iti = jngp; if (jngp <= nt) { goto L81; } il1 = (jngp - nt + 1) / 2; il2 = (jngp - nt + 2) / 2; if (il2 > nl) { il2 = 1; } iti = il1 * (nt + nl) + il2; L81: jwngp = jwngp0 + jngp; ngp0 = iwk[jwngp]; if (ngp0 == 0) { goto L86; } jig0mn = jig0mx + 1; jig0mx += ngp0; i_2 = jig0mx; for (jigp = jig0mn; jigp <= i_2; ++jigp) { jwigp = jwigp0 + jigp; izi = iwk[jwigp]; iyi = (izi - 1) / nxi0 + 1; ixi = izi - nxi0 * (iyi - 1); idptip_(&xd[1], &yd[1], &zd[1], &nt, &iwk[jwipt], &nl, &iwk[jwipl] , &wk[1], &iti, &xi[ixi], &yi[iyi], &zi[izi]); /* L82: */ } L86: jwngp = jwngp0 + (nngp << 1) + 1 - jngp; ngp1 = iwk[jwngp]; if (ngp1 == 0) { goto L89; } jig1mx = jig1mn - 1; jig1mn -= ngp1; i_2 = jig1mx; for (jigp = jig1mn; jigp <= i_2; ++jigp) { jwigp = jwigp0 + jigp; izi = iwk[jwigp]; iyi = (izi - 1) / nxi0 + 1; ixi = izi - nxi0 * (iyi - 1); idptip_(&xd[1], &yd[1], &zd[1], &nt, &iwk[jwipt], &nl, &iwk[jwipl] , &wk[1], &iti, &xi[ixi], &yi[iyi], &zi[izi]); /* L87: */ } L89: ;} return 0; /* error exit */ L90: err2090_(); return 0; /* format statement for error message */ /* L2090: */ } /* idsfft_ */ int idtang_(integer *ndp, real *xd, real *yd, integer *nt, integer *ipt, integer *nl, integer *ipl, integer *iwl, integer *iwp, real *wk) { /* Initialized data */ static real ratio = (float)1e-6; static integer nrep = 100; /* System generated locals */ integer i_1, i_2, i_3, i_4; real r_1, r_2; /* Local variables */ static integer nlfc, ip1p1; static real dsq12, armn; static integer irep; static real dsqi; static integer jp2t3, jp3t3, jpmn; static real dxmn, dymn, xdmp, ydmp, armx; static integer ipti, it1t3, it2t3, jpmx; static real dxmx, dymx; static integer ndpm1, ilft2, iplj1, iplj2, ipmn1, ipmn2, ipti1, ipti2, nlft2, nlnt3, nsht3, itt3r; static real dsqmn; static integer ntt3p3; static real dsqmx, x1, y1; static integer jwl1mn; static real ar; static integer ip, jp; static real dx, dy; static integer it; static integer ip1, ip2, jp1, jp2, ip3, nl0, nt0, ilf, jpc; static real dx21, dy21; static integer nlf, itf[2], nln, nsh, ntf, jwl, its, ndp0, ipl1, ipl2, jlt3, ipt1, ipt2, ipt3, nlt3, jwl1, itt3, ntt3; /* this subroutine performs triangulation. it divides the x-y */ /* plane into a number of triangles according to given data */ /* points in the plane, determines line segments that form the */ /* border of data area, and determines the triangle numbers */ /* corresponding to the border line segments. */ /* at completion, point numbers of the vertexes of each triangle */ /* are listed counter-clockwise. point numbers of the end points */ /* of each border line segment are listed counter-clockwise, */ /* listing order of the line segments being counter-clockwise. */ /* the lun constant in the data initialization statement is the */ /* logical unit number of the standard output unit and is, */ /* therefore, system dependent. */ /* this subroutine calls the idxchg function. */ /* the input parameters are */ /* ndp = number of data points, */ /* xd = array of dimension ndp containing the */ /* x coordinates of the data points, */ /* yd = array of dimension ndp containing the */ /* y coordinates of the data points. */ /* the output parameters are */ /* nt = number of triangles, */ /* ipt = integer array of dimension 6*ndp-15, where the */ /* point numbers of the vertexes of the (it)th */ /* triangle are to be stored as the (3*it-2)nd, */ /* (3*it-1)st, and (3*it)th elements, */ /* it=1,2,...,nt, */ /* nl = number of border line segments, */ /* ipl = integer array of dimension 6*ndp, where the */ /* point numbers of the end points of the (il)th */ /* border line segment and its respective triangle */ /* number are to be stored as the (3*il-2)nd, */ /* (3*il-1)st, and (3*il)th elements, */ /* il=1,2,..., nl. */ /* the other parameters are */ /* iwl = integer array of dimension 18*ndp used */ /* internally as a work area, */ /* iwp = integer array of dimension ndp used */ /* internally as a work area, */ /* wk = array of dimension ndp used internally as a */ /* work area. */ /* declaration statements */ /* Parameter adjustments */ --wk; --iwp; --iwl; --ipl; --ipt; --yd; --xd; /* Function Body */ /* statement functions */ /* preliminary processing */ /* L10: */ ndp0 = *ndp; ndpm1 = ndp0 - 1; if (ndp0 < 4) { goto L90; } /* determines the closest pair of data points and their midpoint. */ /* L20: */ /* Computing 2nd power */ r_1 = xd[2] - xd[1]; /* Computing 2nd power */ r_2 = yd[2] - yd[1]; dsqmn = r_1 * r_1 + r_2 * r_2; ipmn1 = 1; ipmn2 = 2; i_1 = ndpm1; for (ip1 = 1; ip1 <= i_1; ++ip1) { x1 = xd[ip1]; y1 = yd[ip1]; ip1p1 = ip1 + 1; i_2 = ndp0; for (ip2 = ip1p1; ip2 <= i_2; ++ip2) { /* Computing 2nd power */ r_1 = xd[ip2] - x1; /* Computing 2nd power */ r_2 = yd[ip2] - y1; dsqi = r_1 * r_1 + r_2 * r_2; if (dsqi == (float)0.) { goto L91; } if (dsqi >= dsqmn) { goto L21; } dsqmn = dsqi; ipmn1 = ip1; ipmn2 = ip2; L21: ;} /* L22: */ } dsq12 = dsqmn; xdmp = (xd[ipmn1] + xd[ipmn2]) / (float)2.; ydmp = (yd[ipmn1] + yd[ipmn2]) / (float)2.; /* sorts the other (ndp-2) data points in ascending order of */ /* distance from the midpoint and stores the sorted data point */ /* numbers in the iwp array. */ /* L30: */ jp1 = 2; i_1 = ndp0; for (ip1 = 1; ip1 <= i_1; ++ip1) { if (ip1 == ipmn1 || ip1 == ipmn2) { goto L31; } ++jp1; iwp[jp1] = ip1; /* Computing 2nd power */ r_1 = xd[ip1] - xdmp; /* Computing 2nd power */ r_2 = yd[ip1] - ydmp; wk[jp1] = r_1 * r_1 + r_2 * r_2; L31: ;} i_1 = ndpm1; for (jp1 = 3; jp1 <= i_1; ++jp1) { dsqmn = wk[jp1]; jpmn = jp1; i_2 = ndp0; for (jp2 = jp1; jp2 <= i_2; ++jp2) { if (wk[jp2] >= dsqmn) { goto L32; } dsqmn = wk[jp2]; jpmn = jp2; L32: ;} its = iwp[jp1]; iwp[jp1] = iwp[jpmn]; iwp[jpmn] = its; wk[jpmn] = wk[jp1]; /* L33: */ } /* if necessary, modifies the ordering in such a way that the */ /* first three data points are not collinear. */ /* L35: */ ar = dsq12 * ratio; x1 = xd[ipmn1]; y1 = yd[ipmn1]; dx21 = xd[ipmn2] - x1; dy21 = yd[ipmn2] - y1; i_1 = ndp0; for (jp = 3; jp <= i_1; ++jp) { ip = iwp[jp]; if ((r_1 = (yd[ip] - y1) * dx21 - (xd[ip] - x1) * dy21, dabs(r_1)) > ar) { goto L37; } /* L36: */ } goto L92; L37: if (jp == 3) { goto L40; } jpmx = jp; jp = jpmx + 1; i_1 = jpmx; for (jpc = 4; jpc <= i_1; ++jpc) { --jp; iwp[jp] = iwp[jp - 1]; /* L38: */ } iwp[3] = ip; /* forms the first triangle. stores point numbers of the ver- */ /* texes of the triangle in the ipt array, and stores point num- */ /* bers of the border line segments and the triangle number in */ /* the ipl array. */ L40: ip1 = ipmn1; ip2 = ipmn2; ip3 = iwp[3]; if ((yd[ip3] - yd[ip1]) * (xd[ip2] - xd[ip1]) - (xd[ip3] - xd[ip1]) * (yd[ ip2] - yd[ip1]) >= (float)0.) { goto L41; } ip1 = ipmn2; ip2 = ipmn1; L41: nt0 = 1; ntt3 = 3; ipt[1] = ip1; ipt[2] = ip2; ipt[3] = ip3; nl0 = 3; nlt3 = 9; ipl[1] = ip1; ipl[2] = ip2; ipl[3] = 1; ipl[4] = ip2; ipl[5] = ip3; ipl[6] = 1; ipl[7] = ip3; ipl[8] = ip1; ipl[9] = 1; /* adds the remaining (ndp-3) data points, one by one. */ /* L50: */ i_1 = ndp0; for (jp1 = 4; jp1 <= i_1; ++jp1) { ip1 = iwp[jp1]; x1 = xd[ip1]; y1 = yd[ip1]; /* - determines the visible border line segments. */ ip2 = ipl[1]; jpmn = 1; dxmn = xd[ip2] - x1; dymn = yd[ip2] - y1; /* Computing 2nd power */ r_1 = dxmn; /* Computing 2nd power */ r_2 = dymn; dsqmn = r_1 * r_1 + r_2 * r_2; armn = dsqmn * ratio; jpmx = 1; dxmx = dxmn; dymx = dymn; dsqmx = dsqmn; armx = armn; i_2 = nl0; for (jp2 = 2; jp2 <= i_2; ++jp2) { ip2 = ipl[jp2 * 3 - 2]; dx = xd[ip2] - x1; dy = yd[ip2] - y1; ar = dy * dxmn - dx * dymn; if (ar > armn) { goto L51; } /* Computing 2nd power */ r_1 = dx; /* Computing 2nd power */ r_2 = dy; dsqi = r_1 * r_1 + r_2 * r_2; if (ar >= -(doublereal)armn && dsqi >= dsqmn) { goto L51; } jpmn = jp2; dxmn = dx; dymn = dy; dsqmn = dsqi; armn = dsqmn * ratio; L51: ar = dy * dxmx - dx * dymx; if (ar < -(doublereal)armx) { goto L52; } /* Computing 2nd power */ r_1 = dx; /* Computing 2nd power */ r_2 = dy; dsqi = r_1 * r_1 + r_2 * r_2; if (ar <= armx && dsqi >= dsqmx) { goto L52; } jpmx = jp2; dxmx = dx; dymx = dy; dsqmx = dsqi; armx = dsqmx * ratio; L52: ;} if (jpmx < jpmn) { jpmx += nl0; } nsh = jpmn - 1; if (nsh <= 0) { goto L60; } /* - shifts (rotates) the ipl array to have the invisible border */ /* - line segments contained in the first part of the ipl array. */ nsht3 = nsh * 3; i_2 = nsht3; for (jp2t3 = 3; jp2t3 <= i_2; jp2t3 += 3) { jp3t3 = jp2t3 + nlt3; ipl[jp3t3 - 2] = ipl[jp2t3 - 2]; ipl[jp3t3 - 1] = ipl[jp2t3 - 1]; ipl[jp3t3] = ipl[jp2t3]; /* L53: */ } i_2 = nlt3; for (jp2t3 = 3; jp2t3 <= i_2; jp2t3 += 3) { jp3t3 = jp2t3 + nsht3; ipl[jp2t3 - 2] = ipl[jp3t3 - 2]; ipl[jp2t3 - 1] = ipl[jp3t3 - 1]; ipl[jp2t3] = ipl[jp3t3]; /* L54: */ } jpmx -= nsh; /* - adds triangles to the ipt array, updates border line */ /* - segments in the ipl array, and sets flags for the border */ /* - line segments to be reexamined in the iwl array. */ L60: jwl = 0; i_2 = nl0; for (jp2 = jpmx; jp2 <= i_2; ++jp2) { jp2t3 = jp2 * 3; ipl1 = ipl[jp2t3 - 2]; ipl2 = ipl[jp2t3 - 1]; it = ipl[jp2t3]; /* - - adds a triangle to the ipt array. */ ++nt0; ntt3 += 3; ipt[ntt3 - 2] = ipl2; ipt[ntt3 - 1] = ipl1; ipt[ntt3] = ip1; /* - - updates border line segments in the ipl array. */ if (jp2 != jpmx) { goto L61; } ipl[jp2t3 - 1] = ip1; ipl[jp2t3] = nt0; L61: if (jp2 != nl0) { goto L62; } nln = jpmx + 1; nlnt3 = nln * 3; ipl[nlnt3 - 2] = ip1; ipl[nlnt3 - 1] = ipl[1]; ipl[nlnt3] = nt0; /* - - determines the vertex that does not lie on the border */ /* - - line segments. */ L62: itt3 = it * 3; ipti = ipt[itt3 - 2]; if (ipti != ipl1 && ipti != ipl2) { goto L63; } ipti = ipt[itt3 - 1]; if (ipti != ipl1 && ipti != ipl2) { goto L63; } ipti = ipt[itt3]; /* - - checks if the exchange is necessary. */ L63: if (idxchg_(&xd[1], &yd[1], &ip1, &ipti, &ipl1, &ipl2) == 0) { goto L64; } /* - - modifies the ipt array when necessary. */ ipt[itt3 - 2] = ipti; ipt[itt3 - 1] = ipl1; ipt[itt3] = ip1; ipt[ntt3 - 1] = ipti; if (jp2 == jpmx) { ipl[jp2t3] = it; } if (jp2 == nl0 && ipl[3] == it) { ipl[3] = nt0; } /* - - sets flags in the iwl array. */ jwl += 4; iwl[jwl - 3] = ipl1; iwl[jwl - 2] = ipti; iwl[jwl - 1] = ipti; iwl[jwl] = ipl2; L64: ;} nl0 = nln; nlt3 = nlnt3; nlf = jwl / 2; if (nlf == 0) { goto L79; } /* - improves triangulation. */ /* L70: */ ntt3p3 = ntt3 + 3; i_2 = nrep; for (irep = 1; irep <= i_2; ++irep) { i_3 = nlf; for (ilf = 1; ilf <= i_3; ++ilf) { ilft2 = ilf << 1; ipl1 = iwl[ilft2 - 1]; ipl2 = iwl[ilft2]; /* - - locates in the ipt array two triangles on both sides of */ /* - - the flagged line segment. */ ntf = 0; i_4 = ntt3; for (itt3r = 3; itt3r <= i_4; itt3r += 3) { itt3 = ntt3p3 - itt3r; ipt1 = ipt[itt3 - 2]; ipt2 = ipt[itt3 - 1]; ipt3 = ipt[itt3]; if (ipl1 != ipt1 && ipl1 != ipt2 && ipl1 != ipt3) { goto L71; } if (ipl2 != ipt1 && ipl2 != ipt2 && ipl2 != ipt3) { goto L71; } ++ntf; itf[ntf - 1] = itt3 / 3; if (ntf == 2) { goto L72; } L71: ;} if (ntf < 2) { goto L76; } /* - - determines the vertexes of the triangles that do not lie */ /* - - on the line segment. */ L72: it1t3 = itf[0] * 3; ipti1 = ipt[it1t3 - 2]; if (ipti1 != ipl1 && ipti1 != ipl2) { goto L73; } ipti1 = ipt[it1t3 - 1]; if (ipti1 != ipl1 && ipti1 != ipl2) { goto L73; } ipti1 = ipt[it1t3]; L73: it2t3 = itf[1] * 3; ipti2 = ipt[it2t3 - 2]; if (ipti2 != ipl1 && ipti2 != ipl2) { goto L74; } ipti2 = ipt[it2t3 - 1]; if (ipti2 != ipl1 && ipti2 != ipl2) { goto L74; } ipti2 = ipt[it2t3]; /* - - checks if the exchange is necessary. */ L74: if (idxchg_(&xd[1], &yd[1], &ipti1, &ipti2, &ipl1, &ipl2) == 0) { goto L76; } /* - - modifies the ipt array when necessary. */ ipt[it1t3 - 2] = ipti1; ipt[it1t3 - 1] = ipti2; ipt[it1t3] = ipl1; ipt[it2t3 - 2] = ipti2; ipt[it2t3 - 1] = ipti1; ipt[it2t3] = ipl2; /* - - sets new flags. */ jwl += 8; iwl[jwl - 7] = ipl1; iwl[jwl - 6] = ipti1; iwl[jwl - 5] = ipti1; iwl[jwl - 4] = ipl2; iwl[jwl - 3] = ipl2; iwl[jwl - 2] = ipti2; iwl[jwl - 1] = ipti2; iwl[jwl] = ipl1; i_4 = nlt3; for (jlt3 = 3; jlt3 <= i_4; jlt3 += 3) { iplj1 = ipl[jlt3 - 2]; iplj2 = ipl[jlt3 - 1]; if ((iplj1 == ipl1 && iplj2 == ipti2) || (iplj2 == ipl1 && iplj1 == ipti2)) { ipl[jlt3] = itf[0]; } if ((iplj1 == ipl2 && iplj2 == ipti1) || (iplj2 == ipl2 && iplj1 == ipti1)) { ipl[jlt3] = itf[1]; } /* L75: */ } L76: ;} nlfc = nlf; nlf = jwl / 2; if (nlf == nlfc) { goto L79; } /* - - resets the iwl array for the next round. */ jwl = 0; jwl1mn = (nlfc + 1) << 1; nlft2 = nlf << 1; i_3 = nlft2; for (jwl1 = jwl1mn; jwl1 <= i_3; jwl1 += 2) { jwl += 2; iwl[jwl - 1] = iwl[jwl1 - 1]; iwl[jwl] = iwl[jwl1]; /* L77: */ } nlf = jwl / 2; /* L78: */ } L79: ;} /* rearranges the ipt array so that the vertexes of each triangle */ /* are listed counter-clockwise. */ /* L80: */ i_1 = ntt3; for (itt3 = 3; itt3 <= i_1; itt3 += 3) { ip1 = ipt[itt3 - 2]; ip2 = ipt[itt3 - 1]; ip3 = ipt[itt3]; if ((yd[ip3] - yd[ip1]) * (xd[ip2] - xd[ip1]) - (xd[ip3] - xd[ip1]) * (yd[ip2] - yd[ip1]) >= (float)0.) { goto L81; } ipt[itt3 - 2] = ip2; ipt[itt3 - 1] = ip1; L81: ;} *nt = nt0; *nl = nl0; return 0; /* error exit */ L90: err2090_(); goto L93; L91: err2091b_(); goto L93; L92: err2092_(); L93: err2093_(); *nt = 0; return 0; /* format statements */ /* L2090: */ /* L2091: */ /* L2092: */ /* L2093: */ } /* idtang_ */ integer idxchg_(real *x, real *y, integer *i1, integer *i2, integer *i3, integer *i4) { /* System generated locals */ integer ret_val; real r_1, r_2; static real equiv_0[1], equiv_1[1], equiv_2[1], equiv_3[1], equiv_4[1], equiv_5[1]; /* Local variables */ static real u1, u2, u3, x1, y1, x2, y2, x3, y3, x4, y4, u4; static integer idx; #define a1sq (equiv_2) #define b1sq (equiv_3) #define c1sq (equiv_0) #define c2sq (equiv_0) #define a3sq (equiv_1) #define b2sq (equiv_1) #define b3sq (equiv_2) #define a4sq (equiv_3) #define b4sq (equiv_4) #define a2sq (equiv_4) #define c4sq (equiv_5) #define c3sq (equiv_5) static real s1sq, s2sq, s3sq, s4sq; /* this function determines whether or not the exchange of two */ /* triangles is necessary on the basis of max-min-angle criterion */ /* by c. l. lawson. */ /* the input parameters are */ /* x,y = arrays containing the coordinates of the data */ /* points, */ /* i1,i2,i3,i4 = point numbers of four points p1, p2, */ /* p3, and p4 that form a quadrilateral with p3 */ /* and p4 connected diagonally. */ /* this function returns an integer value 1 (one) when an ex- */ /* change is necessary, and 0 (zero) otherwise. */ /* declaration statements */ /* preliminary processing */ /* Parameter adjustments */ --y; --x; /* Function Body */ /* L10: */ x1 = x[*i1]; y1 = y[*i1]; x2 = x[*i2]; y2 = y[*i2]; x3 = x[*i3]; y3 = y[*i3]; x4 = x[*i4]; y4 = y[*i4]; /* calculation */ /* L20: */ idx = 0; u3 = (y2 - y3) * (x1 - x3) - (x2 - x3) * (y1 - y3); u4 = (y1 - y4) * (x2 - x4) - (x1 - x4) * (y2 - y4); if (u3 * u4 <= (float)0.) { goto L30; } u1 = (y3 - y1) * (x4 - x1) - (x3 - x1) * (y4 - y1); u2 = (y4 - y2) * (x3 - x2) - (x4 - x2) * (y3 - y2); /* Computing 2nd power */ r_1 = x1 - x3; /* Computing 2nd power */ r_2 = y1 - y3; *a1sq = r_1 * r_1 + r_2 * r_2; /* Computing 2nd power */ r_1 = x4 - x1; /* Computing 2nd power */ r_2 = y4 - y1; *b1sq = r_1 * r_1 + r_2 * r_2; /* Computing 2nd power */ r_1 = x3 - x4; /* Computing 2nd power */ r_2 = y3 - y4; *c1sq = r_1 * r_1 + r_2 * r_2; /* Computing 2nd power */ r_1 = x2 - x4; /* Computing 2nd power */ r_2 = y2 - y4; *a2sq = r_1 * r_1 + r_2 * r_2; /* Computing 2nd power */ r_1 = x3 - x2; /* Computing 2nd power */ r_2 = y3 - y2; *b2sq = r_1 * r_1 + r_2 * r_2; /* Computing 2nd power */ r_1 = x2 - x1; /* Computing 2nd power */ r_2 = y2 - y1; *c3sq = r_1 * r_1 + r_2 * r_2; s1sq = u1 * u1 / (*c1sq * dmax(*a1sq,*b1sq)); s2sq = u2 * u2 / (*c2sq * dmax(*a2sq,*b2sq)); s3sq = u3 * u3 / (*c3sq * dmax(*a3sq,*b3sq)); s4sq = u4 * u4 / (*c4sq * dmax(*a4sq,*b4sq)); if (dmin(s1sq,s2sq) < dmin(s3sq,s4sq)) { idx = 1; } L30: ret_val = idx; return ret_val; } /* idxchg_ */ void do_fio() { printf("do_fio\n"); } void e_wsfe() { printf("e_wsfe\n"); } void s_stop() { printf("s_stop\n"); } void s_wsfe() { printf("s_wsfe\n"); } void err2090_() { printf("err2090 Improper input parameter values\n"); } void err2091_() { printf("err2091 All colinear data points, or identical points\n"); } void err2091b_() { printf("err2091b All colinear data points, or identical points\n"); } void err2092_(){ printf("err2092 error detected in routine idcldp \n"); } void err2093_(){ printf("err2093 error detected in routine idtang \n"); } void err2094_(){ printf("err2094 This error is never called.\n"); } #undef c3sq #undef c4sq #undef a2sq #undef b4sq #undef a4sq #undef b3sq #undef b2sq #undef a3sq #undef c2sq #undef c1sq #undef b1sq #undef a1sq gle-graphics-4.2.4c/src/gle/letzfitz/Makefile.gcc0000644000000000000000000000557511405446017020351 0ustar rootroot######################################################################## # # # GLE - Graphics Layout Engine # # # # Modified BSD License # # # # Copyright (C) 2009 GLE. # # # # Redistribution and use in source and binary forms, with or without # # modification, are permitted provided that the following conditions # # are met: # # # # 1. Redistributions of source code must retain the above copyright # # notice, this list of conditions and the following disclaimer. # # # # 2. Redistributions in binary form must reproduce the above # # copyright notice, this list of conditions and the following # # disclaimer in the documentation and/or other materials provided with # # the distribution. # # # # 3. The name of the author may not be used to endorse or promote # # products derived from this software without specific prior written # # permission. # # # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR # # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY # # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE # # GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER # # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN # # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # # ######################################################################## # # makefile.gcc for GLE v4.0 # for compilation with gcc # # include ../../../config.i include ../../../config.gcc -include ../../../extraconfig.gcc # include files.txt all: $(OBJECTS) $(OBJECTS): $(INCLUDES) clean: -$(RM) $(OBJECTS) gle-graphics-4.2.4c/src/gle/letzfitz/files.txt0000644000000000000000000000542511405446017020013 0ustar rootroot######################################################################## # # # GLE - Graphics Layout Engine # # # # Modified BSD License # # # # Copyright (C) 2009 GLE. # # # # Redistribution and use in source and binary forms, with or without # # modification, are permitted provided that the following conditions # # are met: # # # # 1. Redistributions of source code must retain the above copyright # # notice, this list of conditions and the following disclaimer. # # # # 2. Redistributions in binary form must reproduce the above # # copyright notice, this list of conditions and the following # # disclaimer in the documentation and/or other materials provided with # # the distribution. # # # # 3. The name of the author may not be used to endorse or promote # # products derived from this software without specific prior written # # permission. # # # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR # # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY # # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE # # GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER # # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN # # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # # ######################################################################## # # files list for GLE to be included by the makefiles # INCLUDES = OBJECTS = \ let.$(OBJ_SUFF) \ fit.$(OBJ_SUFF) \ ffit.$(OBJ_SUFF) gle-graphics-4.2.4c/src/gle/f2c.h0000664000000000000000000001525211405446017015121 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ /* f2c.h -- Standard Fortran to C header file */ /** barf [ba:rf] 2. "He suggested using FORTRAN, and everybody barfed." - From The Shogakukan DICTIONARY OF NEW ENGLISH (Second edition) */ #ifndef F2C_INCLUDE #define F2C_INCLUDE typedef int integer; typedef char *address; typedef short int shortint; typedef float real; typedef double doublereal; typedef struct { real r, i; } complex; typedef struct { doublereal r, i; } doublecomplex; typedef int logical; typedef short int shortlogical; #define TRUE_ (1) #define FALSE_ (0) /* Extern is for use with -E */ #ifndef Extern #define Extern extern #endif /* I/O stuff */ #ifdef f2c_i2 /* for -i2 */ typedef short flag; typedef short ftnlen; typedef short ftnint; #else typedef int flag; typedef int ftnlen; typedef int ftnint; #endif /*external read, write*/ typedef struct { flag cierr; ftnint ciunit; flag ciend; char *cifmt; ftnint cirec; } cilist; /*internal read, write*/ typedef struct { flag icierr; char *iciunit; flag iciend; char *icifmt; ftnint icirlen; ftnint icirnum; } icilist; /*open*/ typedef struct { flag oerr; ftnint ounit; char *ofnm; ftnlen ofnmlen; char *osta; char *oacc; char *ofm; ftnint orl; char *oblnk; } olist; /*close*/ typedef struct { flag cerr; ftnint cunit; char *csta; } cllist; /*rewind, backspace, endfile*/ typedef struct { flag aerr; ftnint aunit; } alist; /* inquire */ typedef struct { flag inerr; ftnint inunit; char *infile; ftnlen infilen; ftnint *inex; /*parameters in standard's order*/ ftnint *inopen; ftnint *innum; ftnint *innamed; char *inname; ftnlen innamlen; char *inacc; ftnlen inacclen; char *inseq; ftnlen inseqlen; char *indir; ftnlen indirlen; char *infmt; ftnlen infmtlen; char *inform; ftnint informlen; char *inunf; ftnlen inunflen; ftnint *inrecl; ftnint *innrec; char *inblank; ftnlen inblanklen; } inlist; #define VOID void union Multitype { /* for multiple entry points */ shortint h; integer i; real r; doublereal d; complex c; doublecomplex z; }; typedef union Multitype Multitype; typedef int Long; struct Vardesc { /* for Namelist */ char *name; char *addr; Long *dims; int type; }; typedef struct Vardesc Vardesc; struct Namelist { char *name; Vardesc **vars; int nvars; }; typedef struct Namelist Namelist; #define abs(x) ((x) >= 0 ? (x) : -(x)) #define dabs(x) (doublereal)abs(x) #define min(a,b) ((a) <= (b) ? (a) : (b)) #define max(a,b) ((a) >= (b) ? (a) : (b)) #define dmin(a,b) (doublereal)min(a,b) #define dmax(a,b) (doublereal)max(a,b) /* procedure parameter types for -A and -C++ */ #define F2C_proc_par_types 1 #ifdef __cplusplus typedef int /* Unknown procedure type */ (*U_fp)(...); typedef shortint (*J_fp)(...); typedef integer (*I_fp)(...); typedef real (*R_fp)(...); typedef doublereal (*D_fp)(...), (*E_fp)(...); typedef /* Complex */ VOID (*C_fp)(...); typedef /* Double Complex */ VOID (*Z_fp)(...); typedef logical (*L_fp)(...); typedef shortlogical (*K_fp)(...); typedef /* Character */ VOID (*H_fp)(...); typedef /* Subroutine */ int (*S_fp)(...); #else typedef int /* Unknown procedure type */ (*U_fp)(); typedef shortint (*J_fp)(); typedef integer (*I_fp)(); typedef real (*R_fp)(); typedef doublereal (*D_fp)(), (*E_fp)(); typedef /* Complex */ VOID (*C_fp)(); typedef /* Double Complex */ VOID (*Z_fp)(); typedef logical (*L_fp)(); typedef shortlogical (*K_fp)(); typedef /* Character */ VOID (*H_fp)(); typedef /* Subroutine */ int (*S_fp)(); #endif /* E_fp is for real functions when -R is not specified */ typedef VOID C_f; /* complex function */ typedef VOID H_f; /* character function */ typedef VOID Z_f; /* double complex function */ typedef doublereal E_f; /* real function with -R not specified */ /* undef any lower-case symbols that your C compiler predefines, e.g.: */ #ifndef Skip_f2c_Undefs /* #undef cray */ #undef gcos #undef mc68010 #undef mc68020 #undef mips #undef pdp11 #undef sgi #undef sparc #undef sun #undef sun2 #undef sun3 #undef sun4 #undef u370 #undef u3b #undef u3b2 #undef u3b5 #undef unix #undef vax #endif #endif gle-graphics-4.2.4c/src/gle/axis.h0000664000000000000000000002346411656572360015430 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ #ifndef GLE_HAS_AXIS_H #define GLE_HAS_AXIS_H #define GLE_AXIS_NONE -1 #define GLE_AXIS_MAX 7 #define GLE_AXIS_X 1 #define GLE_AXIS_Y 2 #define GLE_AXIS_X2 3 #define GLE_AXIS_Y2 4 #define GLE_AXIS_X0 5 #define GLE_AXIS_Y0 6 #define GLE_AXIS_T 7 #define GLE_AXIS_ALL 8 #define GLE_AXIS_LOG_DEFAULT 0 #define GLE_AXIS_LOG_OFF 1 #define GLE_AXIS_LOG_25B 2 #define GLE_AXIS_LOG_25 3 #define GLE_AXIS_LOG_1 4 #define GLE_AXIS_LOG_N1 5 bool axis_ticks_neg(int axis); bool axis_is_max(int axis); bool axis_horizontal(int axis); int axis_get_orth(int axis, int which); int axis_type(const char *s); int axis_type_check(const char *s) throw (ParserError); const char* axis_type_name(int type); bool axis_is_pos(double pos, int* cnt, double del, vector& vec); bool axis_is_pos_perc(double pos, int* cnt, double perc, vector& vec); double axis_range_dist_perc(double v1, double v2, GLERange* range, bool log); void roundrange(GLERange* range, bool extend, bool tozero, double dticks); class GLEDataSetDimension; class GLEAxisQuantileScale : public GLERefCountObject { protected: double m_QLower, m_QUpper, m_QLowerFactor, m_QUpperFactor; public: GLEAxisQuantileScale(); ~GLEAxisQuantileScale(); inline double getLowerQuantile() { return m_QLower; } inline double getUpperQuantile() { return m_QUpper; } inline double getLowerQuantileFactor() { return m_QLowerFactor; } inline double getUpperQuantileFactor() { return m_QUpperFactor; } inline void setLowerQuantile(double v) { m_QLower = v; } inline void setUpperQuantile(double v) { m_QUpper = v; } inline void setLowerQuantileFactor(double v) { m_QLowerFactor = v; } inline void setUpperQuantileFactor(double v) { m_QUpperFactor = v; } }; class GLEAxis { public: int type; /* 1=xaxis 2=yaxis 3=x2axis 4=y2axis */ double base; double length; double shift; int label_font; double label_hei; double label_scale; double label_dist; int label_align; bool log; int lgset; int nofirst,nolast; int nticks,nsubticks; bool has_ftick, has_offset, ticks_both; double ftick, dticks, dsubticks, offset; double ticks_length,ticks_scale,ticks_lwidth; char ticks_lstyle[9]; double subticks_length,subticks_scale,subticks_lwidth; char subticks_lstyle[9],label_lstyle[9]; int off; int label_off; int side_off,ticks_off,subticks_off; bool has_subticks_onoff, has_label_onoff; double side_lwidth,label_lwidth; char side_lstyle[9]; int title_font; double title_dist, title_adist; double title_hei, title_scale; int title_rot,title_off; GLERC title_color; /* 0=normal, 1=rotate 180 */ GLERC ticks_color; GLERC side_color; GLERC subticks_color; GLERC label_color; int names_ds; double label_angle; bool grid, gridtop; bool alignBase; bool roundRange; string title; vector names; vector places; vector noticks1; vector noticks2; vector noplaces; int negate; string format; GLERangeSet m_Range; GLERangeSet m_DataRange; vector m_Dims; GLERC m_QuantileScale; public: GLEAxis(); ~GLEAxis(); void init(int i); string* getNamePtr(int i); void setName(int i, const char* name); void setPlace(int i, double place); void clearNoTicks(); void addNoTick(double pos); void insertNoTick(double pos); void insertNoTickOrLabel(double pos); void insertNoTick(double pos, vector& vec); void printNoTicks(); void getLabelsFromDataSet(int ds); int getNbNamedPlaces(); bool isNoPlaceLogOrReg(double pos, int* place_cnt, double delta); void initRange(); void performRoundRange(GLERange* range, bool extend, bool tozero); void roundDataRange(bool extend, bool tozero); void makeUpRange(GLEAxis* copy, GLEAxis* orth, bool extend, bool tozero); void setColor(const GLERC& color); inline bool isPlace(double pos, int* cnt, double delta) { return axis_is_pos(pos, cnt, delta, places); } inline bool isPlaceRel(double pos, int* cnt) { return axis_is_pos_perc(pos, cnt, 1e-6, places); } inline bool isNoPlace(double pos, int* cnt, double delta) { return axis_is_pos(pos, cnt, delta, noplaces); } inline bool isNoTick1(double pos, int* cnt, double delta) { return axis_is_pos(pos, cnt, delta, noticks1); } inline bool isNoTick2(double pos, int* cnt, double delta) { return axis_is_pos(pos, cnt, delta, noticks2); } inline bool isPlacePerc(double pos, int* cnt) { return axis_is_pos_perc(pos, cnt, 0.001, places); } inline bool isNoPlacePerc(double pos, int* cnt) { return axis_is_pos_perc(pos, cnt, 0.001, noplaces); } inline bool isNoTick1Perc(double pos, int* cnt) { return axis_is_pos_perc(pos, cnt, 0.001, noticks1); } inline bool isNoTick2Perc(double pos, int* cnt) { return axis_is_pos_perc(pos, cnt, 0.001, noticks2); } inline double getPlace(unsigned int i) { return places[i]; } inline void addName(const char* name) { names.push_back(string(name)); } inline void addPlace(double place) { places.push_back(place); } inline void addNoTick1(double pos) { noticks1.push_back(pos); } inline void addNoTick2(double pos) { noticks2.push_back(pos); } inline void addNoPlace(double pos) { noplaces.push_back(pos); } inline void insertNoTick1(double pos) { insertNoTick(pos, noticks1); } inline void insertNoTick2(double pos) { insertNoTick(pos, noticks2); } inline void insertNoPlace(double pos) { insertNoTick(pos, noplaces); } inline bool hasPlaces() { return places.size() != 0; } inline bool hasNames() { return names.size() != 0; } inline int getNbPlaces() { return places.size(); } inline int getNbNames() { return names.size(); } inline void setNamesDataSet(int i) { names_ds = i; } inline int getNamesDataSet() { return names_ds; } inline double getLabelAngle() { return label_angle; } inline void setLabelAngle(double angle) { label_angle = angle; } inline bool hasGrid() { return grid; } inline void setGrid(bool gr) { grid = gr; } inline bool hasGridOnTop() { return gridtop; } inline void setGridOnTop(bool ontop) { gridtop = ontop; } inline void setAlignBase(bool align) { alignBase = align; } inline bool isAlignBase() { return alignBase; } inline GLERangeSet* getRange() { return &m_Range; } inline double getMin() { return m_Range.getMin(); } inline double getMax() { return m_Range.getMax(); } inline GLERange* getDataRange() { return &m_DataRange; } inline int getType() { return type; } inline const char* getName() { return axis_type_name(getType()); } inline void removeAllDimensions() { m_Dims.clear(); } inline void addDimension(GLEDataSetDimension* dim) { m_Dims.push_back(dim); } inline int getNbDimensions() { return m_Dims.size(); } inline GLEDataSetDimension* getDim(int i) { return m_Dims[i]; } inline bool shouldPerformQuantileScale() { return !m_QuantileScale.isNull(); } inline GLEAxisQuantileScale* getQuantileScale() { return m_QuantileScale.get(); } inline void setQuantileScale(GLEAxisQuantileScale* scale) { m_QuantileScale = scale; } }; void init_measure_by_axis(GLEAxis* ax, double ox, double oy, double llen); enum DrawAxisPart { DRAW_AXIS_GRID_SUBTICKS, DRAW_AXIS_GRID_TICKS, DRAW_AXIS_ALL }; void draw_axis(GLEAxis *ax, GLERectangle* box, DrawAxisPart drawPart); /* Draws the axis */ #endif // GLE_HAS_AXIS_H gle-graphics-4.2.4c/src/gle/core.h0000664000000000000000000003604111677614271015410 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ #ifndef INC_CORE_H #define INC_CORE_H #include "color.h" #include "gle-interface/gle-interface.h" #include "d_interface.h" #define GLE_PAPER_UNKNOWN 0 #define GLE_PAPER_A0 1 #define GLE_PAPER_A1 2 #define GLE_PAPER_A2 3 #define GLE_PAPER_A3 4 #define GLE_PAPER_A4 5 #define GLE_PAPER_LETTER 6 #define PDF_IMG_COMPR_AUTO 0 #define PDF_IMG_COMPR_ZIP 1 #define PDF_IMG_COMPR_JPEG 2 #define PDF_IMG_COMPR_PS 3 #define GLE_COMPAT_35 0x030500 #define GLE_COMPAT_MOST_RECENT 0x040200 #define GLEC_MAX_INT 1 #define GLEC_COMPATIBILITY 0 #define GLEC_MAX_DOUBLE 6 #define GLEC_TITLESCALE 0 #define GLEC_ATITLESCALE 1 #define GLEC_ALABELSCALE 2 #define GLEC_TICKSSCALE 3 #define GLEC_ATITLEDIST 4 #define GLEC_ALABELDIST 5 #define GLE_ARRSTY_SIMPLE 0 #define GLE_ARRSTY_FILLED 1 #define GLE_ARRSTY_EMPTY 2 #define GLE_ARRSTY_OLD35 3 #define GLE_ARRSTY_SUB 10 #define GLE_ARRTIP_ROUND 0 #define GLE_ARRTIP_SHARP 1 class GLEBitmap; class GLEArrowProps { public: int style; int tip; double size; double angle; }; struct gmodel { double image[3][3]; double fontn,fontsz; /* up to here for font caching */ GLERC color; GLERC fill; double lwidth,lstyled,curx,cury; double endx,endy; double miterlimit; int lcap,ljoin; int just,xinline,npath; /* up to here for STATE */ bool inpath; char lstyle [9]; /* 18*8, 6*int, 2*int */ double xmin,xmax,ymin,ymax; /* bounds in USER coordinates */ double startx,starty; double closex,closey; /* for closepath */ double arrowsize, arrowangle; double userwidth,userheight; /* The user req size */ double pagewidth,pageheight; double topmargin, bottommargin; double leftmargin, rightmargin; int arrowstyle; int arrowtip; bool texlabels; bool fullpage; bool rotate; bool landscape; int papersize; bool hasbox; bool isopen; int devtype; GLEDevice* dev; bool console_output; bool needs_newline; int pdfimgformat; int intconst[GLEC_MAX_INT]; double floatconst[GLEC_MAX_DOUBLE]; }; class GLESaveRestore { protected: gmodel* model; public: GLESaveRestore(); ~GLESaveRestore(); void save(); void restore(); }; class GLEMeasureBox : public GLERectangle { public: GLEMeasureBox(); ~GLEMeasureBox(); void measureStart(); void measureEnd(); void measureEndIgnore(); }; void g_init_arrow_head(GLECurvedArrowHead* head, bool startend); class GLEPolynomial { protected: double* m_Coefs; int m_Degree; public: GLEPolynomial(double* coefs, int degree); ~GLEPolynomial(); double evalPoly(double t); double evalDPoly(double t); double newtonRaphson(double t, double prec = 1e-9); void horner(double v); void print(); inline void setDegree(int deg) { m_Degree = deg; } inline int degree() { return m_Degree; } inline double a(int i) { return m_Coefs[i]; } inline void set(int i, double v) { m_Coefs[i] = v; } }; class GLECore { public: GLECore(); ~GLECore(); void reset(); bool isComputingLength() const; void setComputingLength(bool computingLength); double getTotalLength() const; void setTotalLength(double length); void addToLength(double value); bool isShowNoteAboutFallback() const; void setShowNoteAboutFallback(bool value); private: bool m_isComputingLength; double m_totalLength; bool m_showNoteAboutFallback; }; class GLEWithoutUpdates { public: GLEWithoutUpdates(); ~GLEWithoutUpdates(); private: GLECore* m_core; bool m_isComputingLength; }; unsigned int coreleft(); unsigned int farcoreleft(); #define GLE_FILL_METHOD_DEFAULT 0 #define GLE_FILL_METHOD_GLE 1 #define GLE_FILL_METHOD_POSTSCRIPT 2 #define SIZEOFSTATE sizeof(gmodel) void g_init(); void g_get_version(string* version); void g_get_build_date(string* date); string g_get_version(); string g_get_version_nosnapshot(); void g_open(GLEFileLocation* outputfile, const string& inputfile); void g_get_font(int *f); //void g_close(void); void g_defmarker(const char *mname, const char *font, int ccc, double dx, double dy, double sz, int autodx); void g_get_hei(double *h); //void g_gsave(void); void g_hint(char *s); void g_marker(int i, double sz); void g_marker2(int i, double sz, double dval) throw (ParserError); void g_set_hei(double h); bool gclip(double *x1,double *y1, double *x2, double *y2,double xmin, double ymin, double xmax, double ymax); void g_pscomment(char* ss); void g_psbbtweak(void); void g_message(const string& s); void g_message_first_newline(bool newline); bool g_has_console_output(); void g_set_console_output(bool set); void g_get_usersize(double *x,double *y); void g_get_userbox_undev(GLERectangle* rect); GLECore* g_get_core(); // // -- no need to ifdef these // they will simply print warning message if libraries are not linked // void g_bitmap(string& fname, double wx, double wy, int type) throw(ParserError); void g_bitmap_info(string& fname, int xvar, int yvar, int type) throw(ParserError); int g_bitmap_string_to_type(const char* stype); string g_bitmap_supported_types(); void g_ellipse_stroke(double rx, double ry); void g_ellipse_fill(double rx, double ry); void g_elliptical_arc(double rx, double ry, double t1, double t2, double cx, double cy, int arrow); void g_elliptical_narc(double rx, double ry, double t1, double t2, double cx, double cy, int arrow); void g_arrowsize(GLEArrowProps* arrow); void g_arrowline(double x2, double y2, int flag, int can_fillpath) throw(ParserError); void g_arrowpoints(double cx,double cy,double dx,double dy, double *ax1, double *ay1,double *ax2,double *ay2, double *nnx, double *nny); void g_psarrow(double x1, double y1, double x2, double y2, int flag); double g_arc_normalized_angle2(double a1, double a2); void g_arc(double r, double t1, double t2, double cx, double cy, int arrow); void g_narc(double r, double t1, double t2, double cx, double cy, int arrow); bool g_is_bbtweak(); double g_get_angle_deg(); void g_get_scale(double* sx, double* sy); double g_get_avg_scale(); const char* g_device_to_ext(int device); GLEDevice* g_select_device(int device); GLEDevice* g_get_device_ptr(); GLEDevice* g_set_dummy_device(); void g_restore_device(GLEDevice* device); int g_get_device(); bool g_is_dummy_device(); void g_resetfont(); void g_arrow(double dx, double dy, int can_fillpath) throw(ParserError); void g_arrowcurve(double x, double y, int arrow, double a1, double a2, double d1, double d2); bool g_has_size(); void g_set_size(double width, double height, bool box); int g_papersize_type(const string& papersize); void g_set_pagesize(int type); void g_set_pagesize(double width, double height); void g_set_margins(double top, double bottom, double left, double right); void g_set_fullpage(bool fullpage); void g_set_rotate_fullpage(bool rotfp); bool g_is_rotate_fullpage(); void g_on_open(); bool g_is_fullpage(); void g_set_landscape(bool landscape); bool g_is_landscape(); void g_set_arrow_size(double size); void g_set_arrow_angle(double angle); void g_set_pdf_image_format(const char* format); int g_get_pdf_image_format(); int g_get_compatibility(); void g_set_compatibility(int compat); int g_set_compatibility(const string& compat) throw (ParserError); int g_parse_compatibility(const string& compat) throw (ParserError); void g_compatibility_settings(); void g_set_iconst(int i, int value); void g_set_fconst(int i, double value); int g_get_iconst(int i); double g_get_fconst(int i); void g_update_bounds_box(GLERectangle* box); void g_get_bounds(GLERectangle* rect); void g_set_bounds(GLERectangle* rect); void g_update_bounds(GLERectangle* rect); void g_restore_bounds(double xmin, double xmax, double ymin, double ymax); void g_set_bounds(double x, double y, gmodel* model); void g_debug_bounds(const char* out); void g_check_bounds(const char* after); bool g_has_box(gmodel* model); void g_set_state(gmodel *s); void g_get_state(gmodel *s); void g_rset_pos(double x, double y); void g_undev(double ux, double uy, double *x, double *y, gmodel* model); void g_dev(GLEPoint* pt); void g_dev_rel(GLEPoint* pt); void g_dev(GLERectangle* rect); void g_undev(GLERectangle* rect); void g_undev(GLERectangle* rect, gmodel* g); void g_set_arrow_style(const char* shape) throw (ParserError); void g_set_arrow_tip(const char* tip) throw (ParserError); void g_bitmap(GLEBitmap*, double wx, double wy, int type) throw(ParserError); void g_set_tex_scale(const char* ss); void g_set_tex_labels(bool onoff); bool g_get_tex_labels(); void g_restore_defaults(); int g_arrow_style(); int g_arrow_tip(); GLEPoint g_get_xy(); void g_get_xy(GLEPoint* pt); void g_move(const GLEPoint& pt); void g_clear_matrix(); void g_set_color(const GLERC& color); void g_set_fill(int fill); void g_set_fill(const GLERC& fill); bool g_is_filled(void); void g_set_fill_pattern(const GLERC& pattern); void g_set_partial_state(gmodel* s); unsigned char float_to_color_comp(double value); unsigned char float_to_color_comp_255(double value); int g_hash_string_to_color(const string& str, colortyp* c); int g_verbosity(); int font_get_encoding(int ff); void d_devcmd(char *s); void g_arcto(dbl x1,dbl y1,dbl x2,dbl y2,dbl rrr); void g_beginclip(void); void g_bezier(dbl x1,dbl y1,dbl x2,dbl y2,dbl x3,dbl y3); void g_bitmap(char *bmap); void g_box_fill(GLERectangle* rect); void g_box_fill(dbl x1, dbl y1, dbl x2, dbl y2); void g_box_stroke(dbl x1, dbl y1, dbl x2, dbl y2, bool reverse = false); void g_box_stroke(GLERectangle* rect, bool reverse = false); void g_char(int font, int cc); void g_circle_fill(double zr); void g_circle_stroke(double zr); void g_clear(void); void g_clip(void); void g_close(void); void g_closepath(void); void g_curve(int *pcode); void g_dbezier(dbl x1,dbl y1,dbl x2,dbl y2,dbl x3,dbl y3); void g_dev(double x, double y,double *xd,double *yd); void g_devcmd(const char *s); void g_dfont(const char *s); void g_dline(double x, double y); void g_dmove(double x, double y); void g_dojust(dbl *x1, dbl *y1, dbl *x2, dbl *y2, int jj); void g_dotjust(dbl *x1, dbl *y1, dbl l, dbl r, dbl u, dbl d, int jj); void g_endclip(void); void g_fill(void); void g_fill_ary(int nwk,double *wkx,double *wky); void g_flush(void); void g_get_bounds(dbl *x1,dbl *y1,dbl *x2,dbl *y2); GLERC g_get_color(); GLERC g_get_fill_clear(); GLERC g_get_color_hex(int hexValue); void g_get_devsize(dbl *x,dbl *y); void g_get_end(dbl *x,dbl *y); GLERC g_get_fill(); void g_get_just(int *j); void g_get_line_cap(int *jj); void g_get_line_join(int *jj); void g_get_line_style(char *s); void g_get_line_styled(double *w); void g_get_line_width(double *w); void g_get_path(int *pathonoff); void g_get_type(char *t); void g_get_usersize(dbl *x,dbl *y); void g_get_pagesize(dbl *x,dbl *y,int *type); void g_get_pagesize(dbl *x,dbl *y); void g_get_xy(double *x,double *y); void g_grestore(void); void g_gsave(void); void g_init_bounds(void); void g_jtext(int just); void g_line(const GLEPoint& p); void g_line(double zx,double zy); void g_line_ary(int nwk,double *wkx,double *wky); void g_marker_def(char *name, char *subname); // void g_measure(const char *s, dbl *l, dbl *r, dbl *u, dbl *d); void g_measure(const string& s, dbl *l, dbl *r, dbl *u, dbl *d); void g_message(const char *s); bool g_reset_message(); void g_move(double zx,double zy); void g_set_pos(double zx,double zy); void g_newpath(void); void g_postscript(char *ss,double w,double h) throw (ParserError); bool g_parse_ps_boundingbox(const string& line, int* bx1, int* by1, int* bx2, int* by2); void g_rdev(double x, double y,double *xd,double *yd); void g_reverse(void); void g_rline(double zx,double zy); void g_rmove(double zx,double zy); void g_rotate(double ar); void g_rundev(double x, double y,double *xd,double *yd); void g_scale(double sx,double sy); void g_update_bounds(double x,double y); void g_set_color(int l); void g_set_background(const GLERC& color); void g_set_end(dbl x,dbl y); void g_set_hei(double h); void g_set_fill_method(const char* meth); void g_set_font(int j); void g_set_font_width(double v); void g_set_just(int j); void g_set_line_cap(int i); void g_set_line_join(int i); void g_set_line_miterlimit(double d); void g_set_line_style(const char *s); void g_set_line_styled(double x); void g_set_line_width(double w); void g_set_matrix(double newmat[3][3]); void g_set_path(int onoff); void g_set_xy(double x, double y); void g_stroke(void); void g_text(const string& s); void g_translate(double ztx,double zty); void g_undev(double ux,double uy, double *x,double *y); void my_char(int ff, int cc); int g_device_to_bitmap_type(int device); bool g_bitmap_supports_type(int type); int g_font_fallback(int font); #endif gle-graphics-4.2.4c/src/gle/gle-block.h0000664000000000000000000000321111652073235016300 0ustar rootroot#ifndef GLE_BLOCK_H #define GLE_BLOCK_H class GLEBlockBase; class GLESourceLine; #include #include #include class GLEBlockInstance { public: GLEBlockInstance(GLEBlockBase* parent); virtual ~GLEBlockInstance(); virtual void executeLine(GLESourceLine& sline) = 0; virtual void endExecuteBlock() = 0; GLEBlockBase* getParent(); private: GLEBlockBase* m_parent; }; class GLEBlockBase { public: GLEBlockBase(const std::string& blockName, bool allowRecursiveBlocks); virtual ~GLEBlockBase(); virtual GLEBlockInstance* beginExecuteBlockImpl(GLESourceLine& sline, int *pcode, int *cp) = 0; virtual bool checkLine(GLESourceLine& sline) = 0; void beginExecuteBlock(GLESourceLine& sline, int *pcode, int *cp); void executeLine(GLESourceLine& sline); void endExecuteBlock(); bool allowRecursiveBlocks() const; const std::string getBlockName() const; private: std::string m_blockName; bool m_allowRecursiveBlocks; std::vector m_blockStack; }; class GLEBlockWithSimpleKeywords : public GLEBlockBase { public: GLEBlockWithSimpleKeywords(const std::string& blockName, bool allowRecursiveBlocks); virtual ~GLEBlockWithSimpleKeywords(); virtual bool checkLine(GLESourceLine& sline); void addKeyWord(const char* keyword); void addKeyWord(const std::string& keyword); private: std::set m_keyWords; }; class GLEBlocks { public: GLEBlocks(); ~GLEBlocks(); void addBlock(int blockType, GLEBlockBase* block); GLEBlockBase* getBlock(int blockType); GLEBlockBase* getBlockIfExists(int blockType); private: std::map m_blocks; }; #endif gle-graphics-4.2.4c/src/gle/leastsq.cpp0000664000000000000000000002303211405446017016451 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ #include #include using namespace std; #include "all.h" #include "gprint.h" #include "leastsq.h" GLEPowellFunc::GLEPowellFunc() { } GLEPowellFunc::~GLEPowellFunc() { } void least_square(vector* x,vector* y,double* slope, double* offset, double* rsquared) { // // does a linear least squares fit to the data x and y which have n elements // x,y.... the values // n the size of the x and y arrays // slope... the tresulting slope // offset.. the resulting offset // rsquared.. the goodness of fit 1=ideal 0 = poor // double sum_x=0, sum_y=0, sum_xy=0, sum_xx=0, delta=0, y_avg = 0, n = static_cast(x->size()); for (size_t i = 0; i < x->size(); i++) { // printf("x[%d]=%0.6f y[%d]=%0.6f\n",i,(*x)[i],i,(*y)[i]); sum_x += (*x)[i]; sum_y += (*y)[i]; sum_xy += (*x)[i]*(*y)[i]; sum_xx += (*x)[i]*(*x)[i]; } delta = n*sum_xx - sum_x*sum_x; *slope = (n*sum_xy - sum_x*sum_y)/delta; *offset = (sum_xx*sum_y - sum_x*sum_xy)/delta; y_avg = sum_y / n; // // compute rsquared // *rsquared = 0; double residue = 0.0,syy=0.0; for (int i = 0; i < n; i++) { residue += pow((*y)[i] - (*slope) * (*x)[i] - *offset,2.0); syy += pow((*y)[i] - y_avg,2.0); } *rsquared = 1 - residue/syy; } double *mk_vector(int nl, int nh); void free_vector(double* v, int nl, int nh); void mnbrak(double* ax, double* bx, double* cx, double *fa, double* fb, double* fc, double (*func)(double)); #define ITMAX 100 #define CGOLD 0.3819660 #define ZEPS 1.0e-10 #define SIGN(a,b) ((b) > 0.0 ? fabs(a) : -fabs(a)) #define SHFT(a,b,c,d) (a)=(b);(b)=(c);(c)=(d); double brent(double ax, double bx, double cx, double (*f)(double), double tol, double *xmin) { int iter; double a,b,d = 0.0,etemp,fu,fv,fw,fx,p,q,r,tol1,tol2,u,v,w,x,xm; double e=0.0; a=((ax < cx) ? ax : cx); b=((ax > cx) ? ax : cx); x = w = v = bx; fw = fv = fx = f(x); for (iter=1;iter<=ITMAX;iter++) { xm=0.5*(a+b); tol2=2.0*(tol1=tol*fabs(x)+ZEPS); if (fabs(x-xm) <= (tol2-0.5*(b-a))) { *xmin=x; return fx; } if (fabs(e) > tol1) { r=(x-w)*(fx-fv); q=(x-v)*(fx-fw); p=(x-v)*q-(x-w)*r; q=2.0*(q-r); if (q > 0.0) p = -p; q=fabs(q); etemp=e; e=d; if (fabs(p) >= fabs(0.5*q*etemp) || p <= q*(a-x) || p >= q*(b-x)) { d=CGOLD*(e=(x >= xm ? a-x : b-x)); } else { d=p/q; u=x+d; if (u-a < tol2 || b-u < tol2) d=SIGN(tol1,xm-x); } } else { d=CGOLD*(e=(x >= xm ? a-x : b-x)); } u=(fabs(d) >= tol1 ? x+d : x+SIGN(tol1,d)); fu=f(u); if (fu <= fx) { if (u >= x) a=x; else b=x; SHFT(v,w,x,u) SHFT(fv,fw,fx,fu) } else { if (u < x) a=u; else b=u; if (fu <= fw || w == x) { v=w; w=u; fv=fw; fw=fu; } else if (fu <= fv || v == x || v == w) { v=u; fv=fu; } } } gprint("Too many iterations in BRENT\n"); *xmin=x; return fx; } #undef ITMAX #undef CGOLD #undef ZEPS #undef SIGN int ncom=0; double *pcom=0,*xicom=0; GLEPowellFunc* nrfunc; double f1dim(double x) { int j; double f,*xt; xt=mk_vector(1,ncom); for (j=1;j<=ncom;j++) xt[j]=pcom[j]+x*xicom[j]; f=nrfunc->fitMSE(xt); free_vector(xt,1,ncom); return f; } #define TOL 2.0e-4 void linmin(double* p, double* xi, int n, double* fret, GLEPowellFunc* func) { int j; double xx,xmin,fx,fb,fa,bx,ax; ncom=n; pcom=mk_vector(1,n); xicom=mk_vector(1,n); nrfunc=func; for (j=1;j<=n;j++) { pcom[j]=p[j]; xicom[j]=xi[j]; } ax=0.0; xx=1.0; bx=2.0; mnbrak(&ax,&xx,&bx,&fa,&fx,&fb,f1dim); *fret=brent(ax,xx,bx,f1dim,TOL,&xmin); for (j=1;j<=n;j++) { xi[j] *= xmin; p[j] += xi[j]; } free_vector(xicom,1,n); free_vector(pcom,1,n); } #undef TOL #include #define GOLD 1.618034 #define GLIMIT 100.0 #define TINY 1.0e-20 #define MAX(a,b) ((a) > (b) ? (a) : (b)) #define SIGN(a,b) ((b) > 0.0 ? fabs(a) : -fabs(a)) #define SHFT(a,b,c,d) (a)=(b);(b)=(c);(c)=(d); void mnbrak(double* ax, double* bx, double* cx, double *fa, double* fb, double* fc, double (*func)(double)) { double ulim,u,r,q,fu,dum; *fa=(*func)(*ax); *fb=(*func)(*bx); if (*fb > *fa) { SHFT(dum,*ax,*bx,dum) SHFT(dum,*fb,*fa,dum) } *cx=(*bx)+GOLD*(*bx-*ax); *fc=(*func)(*cx); while (*fb > *fc) { r=(*bx-*ax)*(*fb-*fc); q=(*bx-*cx)*(*fb-*fa); u=(*bx)-((*bx-*cx)*q-(*bx-*ax)*r)/ (2.0*SIGN(MAX(fabs(q-r),TINY),q-r)); ulim=(*bx)+GLIMIT*(*cx-*bx); if ((*bx-u)*(u-*cx) > 0.0) { fu=(*func)(u); if (fu < *fc) { *ax=(*bx); *bx=u; *fa=(*fb); *fb=fu; return; } else if (fu > *fb) { *cx=u; *fc=fu; return; } u=(*cx)+GOLD*(*cx-*bx); fu=(*func)(u); } else if ((*cx-u)*(u-ulim) > 0.0) { fu=(*func)(u); if (fu < *fc) { SHFT(*bx,*cx,u,*cx+GOLD*(*cx-*bx)) SHFT(*fb,*fc,fu,(*func)(u)) } } else if ((u-ulim)*(ulim-*cx) >= 0.0) { u=ulim; fu=(*func)(u); } else { u=(*cx)+GOLD*(*cx-*bx); fu=(*func)(u); } SHFT(*ax,*bx,*cx,u) SHFT(*fa,*fb,*fc,fu) } } #undef GOLD #undef GLIMIT #undef TINY #undef MAX #undef SIGN #undef SHFT #include #define ITMAX 200 static double sqrarg; #define SQR(a) (sqrarg=(a),sqrarg*sqrarg) void powell(double p[],double **xi, int n, double ftol, int *iter, double *fret, GLEPowellFunc* func) { int i,ibig,j; double t,fptt,fp,del; double *pt,*ptt,*xit; pt=mk_vector(1,n); ptt=mk_vector(1,n); xit=mk_vector(1,n); *fret = func->fitMSE(p); for (j=1;j<=n;j++) pt[j]=p[j]; for (*iter=1;;(*iter)++) { fp=(*fret); ibig=0; del=0.0; for (i=1;i<=n;i++) { for (j=1;j<=n;j++) xit[j]=xi[j][i]; fptt=(*fret); linmin(p,xit,n,fret,func); if (fabs(fptt-(*fret)) > del) { del=fabs(fptt-(*fret)); ibig=i; } } if (2.0*fabs(fp-(*fret)) <= ftol*(fabs(fp)+fabs(*fret))) { free_vector(xit,1,n); free_vector(ptt,1,n); free_vector(pt,1,n); return; } if (*iter == ITMAX) { gprint("Too many iterations in routine POWELL\n"); } for (j=1;j<=n;j++) { ptt[j]=2.0*p[j]-pt[j]; xit[j]=p[j]-pt[j]; pt[j]=p[j]; } fptt=func->fitMSE(ptt); if (fptt < fp) { t=2.0*(fp-2.0*(*fret)+fptt)*SQR(fp-(*fret)-del)-del*SQR(fp-fptt); if (t < 0.0) { linmin(p,xit,n,fret,func); for (j=1;j<=n;j++) xi[j][ibig]=xit[j]; } } } } #undef ITMAX #undef SQR #include double *mk_vector(int nl, int nh) { double *v; v=(double *)malloc((unsigned) (nh-nl+1)*sizeof(double)); if (!v) gle_abort("allocation failure in vector()"); return v-nl; } double **matrix(int nrl, int nrh, int ncl, int nch) { int i; double **m; m=(double **) malloc((unsigned) (nrh-nrl+1)*sizeof(double*)); if (!m) gle_abort("allocation failure 1 in matrix()"); m -= nrl; for(i=nrl;i<=nrh;i++) { m[i]=(double *) malloc((unsigned) (nch-ncl+1)*sizeof(double)); if (!m[i]) gle_abort("allocation failure 2 in matrix()"); m[i] -= ncl; } return m; } void free_vector(double* v, int nl, int nh) { free((char*) (v+nl)); } void free_matrix(double** m, int nrl, int nrh, int ncl, int nch) { for(int i=nrh;i>=nrl;i--) free((char*) (m[i]+ncl)); free((char*) (m+nrl)); } gle-graphics-4.2.4c/src/gle/memory.cpp0000664000000000000000000000763111405446017016314 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ #include "all.h" #include "file_io.h" #include "gprint.h" extern char errgle[]; char *sdup(const char *s) { char *v; v = (char*) malloc((strlen(s)+1) * sizeof(char)); strcpy(v,s); return v; } void myfree(void *p) { myfrees(p,"UNKNOWN"); } void myfrees(void *p, const char *s) { free(p); } void *myallocn(int nitems,int size) { return myallocz(nitems*size); } void *myalloc(int size) { if (size == 0) { sprintf(errgle,"\nError, attempt to allocate ZERO memory \n"); gle_abort(errgle); } void* p = malloc(size+sizeof(int)*2); if (p == NULL) { p = malloc(size+sizeof(int)*2); if (p == NULL) { sprintf(errgle,"\nMemory allocation failure (size %d)\n", size); gle_abort(errgle); } } return p; } void *myallocz(int size) { static void *p; if (size==0) { sprintf(errgle,"\nError, attempt to allocate ZERO memory \n"); gle_abort(errgle); } p = calloc(1,size+sizeof(int)*2); if (p == NULL) { p = calloc(1,size+sizeof(int)*2); if (p == NULL) { sprintf(errgle,"\nMemory allocation failure (size %d)\n", size); gle_abort(errgle); } } return p; } int mem_total() { return 0; } int mem_worst() { return 0; } char errgle[90]; int dont_clear; void gle_abort(const char *s) { printf("%s",s); exit(1); } gle-graphics-4.2.4c/src/gle/glec.cpp0000664000000000000000000001327711436540702015721 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ /** * GLE command line version using libGLE.so ***/ #include #include #include #ifdef HAVE_CONFIG_H #include "../config.h" #else #include "../config_noauto.h" #endif #ifdef __WIN32__ #include #endif #ifdef __UNIX__ #include #endif using namespace std; bool GetExeName(const char* appname, char **argv, string& exe_name); void StripPathComponents(string* fname, int nb); string GLEAddRelPath(const string& base, int cd, const char* path); void AddDirSep(string& fname); extern string DIR_SEP; void GLEAddLibName(string* lib) { AddDirSep(*lib); *lib += "libgle-graphics-"; *lib += GLEVN; #ifdef __UNIX__ #ifdef __MACOS__ *lib += ".dylib"; #else *lib += ".so"; #endif #endif #ifdef __WIN32__ *lib += ".dll"; #endif // cout << "Trying: " << (*lib) << endl; } void* tryLoadLib(const string& name, int tryCount, bool verbose) { void* lib = 0; #ifdef __UNIX__ lib = dlopen(name.c_str(), RTLD_NOW); #endif if (verbose) { cout << "Try: " << (tryCount + 1) << " load '" << name << "':" << endl; if (lib == 0) { #ifdef __UNIX__ cout << "error: " << dlerror(); #endif } else { cout << "OK"; } cout << endl; } return lib; } int main(int argc, char** argv) { string exe_name; int (*GLEMain)(int g_argc, char** g_argv); if (!GetExeName("gle", argv, exe_name)) { cerr << "GLE: error getting file name of 'gle' executable" << endl; return -1; } #ifdef __UNIX__ string lib_name; void* lib = NULL; unsigned int tryCount = 0; while (lib == 0 && tryCount < 2) { #ifdef GLELIB_CD if (lib == NULL) { lib_name = GLEAddRelPath(exe_name, GLELIB_CD+1, GLELIB_REL); GLEAddLibName(&lib_name); lib = tryLoadLib(lib_name, tryCount, tryCount == 1); } #endif if (lib == NULL) { // Try "../lib" lib_name = GLEAddRelPath(exe_name, 2, "lib"); GLEAddLibName(&lib_name); lib = tryLoadLib(lib_name, tryCount, tryCount == 1); } #ifdef GLELIB_ABS if (lib == NULL) { lib_name = GLELIB_ABS; GLEAddLibName(&lib_name); lib = tryLoadLib(lib_name, tryCount, tryCount == 1); } #endif tryCount++; } if (lib == NULL) { cerr << "GLE: error loading library" << endl; return -1; } const char* error = NULL; GLEMain = (int (*)(int, char**))dlsym(lib, "GLEMain"); if (GLEMain == NULL && (error = dlerror()) != NULL) { cerr << "GLE: can't find main method in library '" << lib_name << "'" << endl; cerr << "Message: " << error << endl; return -1; } int result = GLEMain(argc, argv); // dlclose(lib); #endif #ifdef __WIN32__ string lib_name = exe_name; StripPathComponents(&lib_name, 1); GLEAddLibName(&lib_name); HMODULE lib = LoadLibraryA(lib_name.c_str()); if (lib < (HINSTANCE)HINSTANCE_ERROR) { cerr << "GLE: error loading library '" << lib_name << "'" << endl; return -1; } GLEMain = (int (*)(int, char**))GetProcAddress(lib, "GLEMain"); if (GLEMain == NULL) { cerr << "GLE: can't find main method in library '" << lib_name << "'" << endl; return -1; } int result = GLEMain(argc, argv); // FreeLibrary(lib); #endif return result; } gle-graphics-4.2.4c/src/gle/fitcf.h0000664000000000000000000001527311405446017015545 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ /* f2c.h -- Standard Fortran to C header file */ /** barf [ba:rf] 2. "He suggested using FORTRAN, and everybody barfed." - From The Shogakukan DICTIONARY OF NEW ENGLISH (Second edition) */ #ifndef F2C_INCLUDE #define F2C_INCLUDE typedef int integer; typedef char *address; typedef short int shortint; typedef float real; typedef double doublereal; typedef struct { real r, i; } complex; typedef struct { doublereal r, i; } doublecomplex; typedef int logical; typedef short int shortlogical; #define TRUE_ (1) #define FALSE_ (0) /* Extern is for use with -E */ #ifndef Extern #define Extern extern #endif /* I/O stuff */ #ifdef f2c_i2 /* for -i2 */ typedef short flag; typedef short ftnlen; typedef short ftnint; #else typedef int flag; typedef int ftnlen; typedef int ftnint; #endif /*external read, write*/ typedef struct { flag cierr; ftnint ciunit; flag ciend; char *cifmt; ftnint cirec; } cilist; /*internal read, write*/ typedef struct { flag icierr; char *iciunit; flag iciend; char *icifmt; ftnint icirlen; ftnint icirnum; } icilist; /*open*/ typedef struct { flag oerr; ftnint ounit; char *ofnm; ftnlen ofnmlen; char *osta; char *oacc; char *ofm; ftnint orl; char *oblnk; } olist; /*close*/ typedef struct { flag cerr; ftnint cunit; char *csta; } cllist; /*rewind, backspace, endfile*/ typedef struct { flag aerr; ftnint aunit; } alist; /* inquire */ typedef struct { flag inerr; ftnint inunit; char *infile; ftnlen infilen; ftnint *inex; /*parameters in standard's order*/ ftnint *inopen; ftnint *innum; ftnint *innamed; char *inname; ftnlen innamlen; char *inacc; ftnlen inacclen; char *inseq; ftnlen inseqlen; char *indir; ftnlen indirlen; char *infmt; ftnlen infmtlen; char *inform; ftnint informlen; char *inunf; ftnlen inunflen; ftnint *inrecl; ftnint *innrec; char *inblank; ftnlen inblanklen; } inlist; #define VOID void union Multitype { /* for multiple entry points */ shortint h; integer i; real r; doublereal d; complex c; doublecomplex z; }; typedef union Multitype Multitype; typedef int Long; struct Vardesc { /* for Namelist */ char *name; char *addr; Long *dims; int type; }; typedef struct Vardesc Vardesc; struct Namelist { char *name; Vardesc **vars; int nvars; }; typedef struct Namelist Namelist; #define abs(x) ((x) >= 0 ? (x) : -(x)) #define dabs(x) (doublereal)abs(x) #define min(a,b) ((a) <= (b) ? (a) : (b)) #define max(a,b) ((a) >= (b) ? (a) : (b)) #define dmin(a,b) (doublereal)min(a,b) #define dmax(a,b) (doublereal)max(a,b) /* procedure parameter types for -A and -C++ */ #define F2C_proc_par_types 1 #ifdef __cplusplus typedef int /* Unknown procedure type */ (*U_fp)(...); typedef shortint (*J_fp)(...); typedef integer (*I_fp)(...); typedef real (*R_fp)(...); typedef doublereal (*D_fp)(...), (*E_fp)(...); typedef /* Complex */ VOID (*C_fp)(...); typedef /* Double Complex */ VOID (*Z_fp)(...); typedef logical (*L_fp)(...); typedef shortlogical (*K_fp)(...); typedef /* Character */ VOID (*H_fp)(...); typedef /* Subroutine */ int (*S_fp)(...); #else typedef int /* Unknown procedure type */ (*U_fp)(); typedef shortint (*J_fp)(); typedef integer (*I_fp)(); typedef real (*R_fp)(); typedef doublereal (*D_fp)(), (*E_fp)(); typedef /* Complex */ VOID (*C_fp)(); typedef /* Double Complex */ VOID (*Z_fp)(); typedef logical (*L_fp)(); typedef shortlogical (*K_fp)(); typedef /* Character */ VOID (*H_fp)(); typedef /* Subroutine */ int (*S_fp)(); #endif /* E_fp is for real functions when -R is not specified */ /* typedef VOID C_f; complex function */ /* typedef VOID H_f; character function */ /* typedef VOID Z_f; double complex function */ typedef doublereal E_f; /* real function with -R not specified */ /* undef any lower-case symbols that your C compiler predefines, e.g.: */ #ifndef Skip_f2c_Undefs /* #undef cray */ #undef gcos #undef mc68010 #undef mc68020 #undef mips #undef pdp11 #undef sgi #undef sparc #undef sun #undef sun2 #undef sun3 #undef sun4 #undef u370 #undef u3b #undef u3b2 #undef u3b5 #undef unix #undef vax #endif #endif gle-graphics-4.2.4c/src/gle/keyword.cpp0000664000000000000000000003131611663012764016471 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ #include "all.h" #include "cutils.h" #include "keyword.h" /*------------------------------------------------------------------*/ /* Find the KEY WORD *cp, and return it's number */ /*------------------------------------------------------------------*/ /* */ /* You can add a function, you MUST place it in alphabetical order */ /* and give it the next unused index number */ /* *** 50 is RESERVED for assignment *** */ /* when adding you need to edit pass.cpp and run.cpp */ /* CURRENT MAX IS 89 next command number is 90 */ /*------------------------------------------------------------------*/ #define NKEYS (sizeof mkeywfn / sizeof(struct mkeyw)) struct mkeyw { const char *word; int index; } mkeywfn[] = { { "!", GLE_KW_COMMENT }, { "ABOUND", GLE_KW_ABOUND }, { "ALINE", GLE_KW_ALINE }, { "AMOVE", GLE_KW_AMOVE }, { "ARC", GLE_KW_ARC }, { "ARCTO", GLE_KW_ARCTO }, { "ASETPOS", GLE_KW_ASETPOS }, { "Assignment", GLE_KW_ASSIGNMENT }, { "BEGIN", GLE_KW_BEGIN }, { "BEZIER", GLE_KW_BEZIER }, { "BIGFILE", GLE_KW_BIGFILE }, { "BITMAP", GLE_KW_BITMAP }, { "BITMAP_INFO", GLE_KW_BITMAP_INFO }, { "BOX", GLE_KW_BOX }, { "CALL", GLE_KW_CALL }, { "CIRCLE", GLE_KW_CIRCLE }, { "CLOSEPATH", GLE_KW_CLOSEPATH }, { "COLORMAP", GLE_KW_COLORMAP }, { "COMPATIBILITY", GLE_KW_COMPATIBILITY }, { "CURVE", GLE_KW_CURVE }, { "DECLARE", GLE_KW_DECLARESUB }, { "DEFAULT", GLE_KW_DEFAULT }, { "DEFCOLOR", GLE_KW_DEFCOLOR }, { "DEFINE", GLE_KW_DEFINE }, { "DEFMARKER", GLE_KW_DEFMARKER }, { "DFONT", GLE_KW_DFONT }, { "DRAW", GLE_KW_DRAW }, { "ELLIPSE", GLE_KW_ELLIPSE }, { "ELLIPTICAL_ARC", GLE_KW_ELLIPTICAL_ARC }, { "ELLIPTICAL_NARC", GLE_KW_ELLIPTICAL_NARC }, { "ELSE", GLE_KW_ELSE }, { "END", GLE_KW_END }, { "FCLOSE", GLE_KW_FCLOSE }, { "FGETLINE", GLE_KW_FGETLINE }, { "FILL", GLE_KW_FILL }, { "FOPEN", GLE_KW_FOPEN }, { "FOR", GLE_KW_FOR }, { "FREAD", GLE_KW_FREAD }, { "FREADLN", GLE_KW_FREADLN }, { "FTOKENIZER", GLE_KW_FTOKENIZER }, { "FWRITE", GLE_KW_FWRITE }, { "FWRITELN", GLE_KW_FWRITELN }, { "GOTO", GLE_KW_GOTO }, { "GRESTORE", GLE_KW_GRESTORE }, { "GSAVE", GLE_KW_GSAVE }, { "ICON", GLE_KW_ICON }, { "IF", GLE_KW_IF }, { "INCLUDE", GLE_KW_INCLUDE }, { "INPUT", GLE_KW_INPUT }, { "JOIN", GLE_KW_JOIN }, { "MARGINS", GLE_KW_MARGINS }, { "MARKER", GLE_KW_MARKER }, { "MOVE", GLE_KW_MOVE }, { "NAME", GLE_KW_NAME }, { "NARC", GLE_KW_NARC }, { "NEWPATH", GLE_KW_NEWPATH }, { "NEXT", GLE_KW_NEXT }, { "ORIENTATION", GLE_KW_ORIENTATION }, { "PAPERSIZE", GLE_KW_PAPERSIZE }, { "PIE", GLE_KW_PIE }, { "POSTSCRIPT", GLE_KW_POSTSCRIPT }, { "PRINT", GLE_KW_PRINT }, { "PSBBTWEAK", GLE_KW_PSBBTWEAK }, { "PSCOMMENT", GLE_KW_PSCOMMENT }, { "RBEZIER", GLE_KW_RBEZIER }, { "REGION", GLE_KW_REGION }, { "RESTOREDEFAULTS", GLE_KW_RESTOREDEFAULTS }, { "RETURN", GLE_KW_RETURN }, { "REVERSE", GLE_KW_REVERSE }, { "RLINE", GLE_KW_RLINE }, { "RMOVE", GLE_KW_RMOVE }, { "ROT", GLE_KW_ROT }, { "ROTATE", GLE_KW_ROTATE }, { "RSETPOS", GLE_KW_RSETPOS }, { "SAVE", GLE_KW_SAVE }, { "SCALE", GLE_KW_SCALE }, { "SET", GLE_KW_SET }, { "SIZE", GLE_KW_SIZE }, { "SLEEP", GLE_KW_SLEEP }, { "STROKE", GLE_KW_STROKE }, { "SUB", GLE_KW_SUB }, { "TEX", GLE_KW_TEX }, { "TEXT", GLE_KW_TEXT }, { "TEXTDEF", GLE_KW_TEXTDEF }, { "TIFF", GLE_KW_TIFF }, { "TRAN", GLE_KW_TRAN }, { "TRANSLATE", GLE_KW_TRANSLATE }, { "UNTIL", GLE_KW_UNTIL }, { "WHILE", GLE_KW_WHILE }, { "WRITE", GLE_KW_WRITE } }; int binsearchk(const char *word, struct mkeyw tab[], int n); void cmd_name(int idx, char **cp) { static char *kp; static char fail[]="Keyword not found"; if (kp==NULL) kp = (char*) myallocz(80); for (unsigned int i=0;i 0) low = mid + 1; else return mid; } return -1; } /*-------------------------------------------------------------------------*/ /* This is for the tex primitives */ #include "tex.h" struct mkeyw tkeywfn[] = { { "^", tp_sup }, { "_", tp_sub }, { "acccmb", tp_acccmb }, { "accent", tp_accent }, { "accentxy", tp_accentxy }, { "char", tp_char }, { "chardef", tp_chardef }, { "def", tp_def }, { "defbegin", tp_defbegin }, { "delcode", tp_delcode }, { "delimiter", tp_delimiter }, { "fontenc", tp_fontenc }, { "frac", tp_frac }, { "hfill", tp_hfill }, { "left", tp_left }, { "linegap", tp_linegap }, { "lineskip", tp_lineskip }, { "mathchar", tp_mathchar }, { "mathchardef", tp_mathchardef }, { "mathcode", tp_mathcode }, { "movexy", tp_movexy }, { "newline", tp_newline }, { "nolimits", tp_nolimits }, { "overbrace", tp_overbrace }, { "overline", tp_overline }, { "parskip", tp_parskip }, { "presave", tp_presave }, { "right", tp_right }, { "rule", tp_rule }, { "setfont", tp_setfont }, { "sethei", tp_sethei }, { "setstretch", tp_setstretch }, { "sfont", tp_sfont }, { "ssfont", tp_ssfont }, { "sub", tp_sub }, { "sup", tp_sup }, { "tex", tp_tex }, { "tfont", tp_tfont }, { "uchr", tp_uchr }, { "underbrace", tp_underbrace }, { "underline", tp_underline }, { "unicode", tp_unicode } }; #define NTKEYS (sizeof tkeywfn / sizeof(struct mkeyw)) int find_primcmd(char *cp) { int i; i = binsearchk(cp,tkeywfn,NTKEYS); if (i==-1) return 0; return tkeywfn[i].index; } gle-graphics-4.2.4c/src/gle/color.cpp0000664000000000000000000004324011652073536016124 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ #include #include "all.h" #include "cutils.h" #include "gle-interface/gle-interface.h" #include "color.h" GLEColorList* g_ColorList = NULL; GLEColorList* GLEGetColorList() { if (g_ColorList == NULL) { g_ColorList = new GLEColorList(); g_ColorList->defineDefaultColors(); } return g_ColorList; } GLEColorList::GLEColorList() { } GLEColorList::~GLEColorList() { } void GLEColorList::reset() { m_Colors.clear(); m_ColorHash.clear(); m_OldColors.clear(); m_OldColorHash.clear(); defineDefaultColors(); } GLEColor* GLEColorList::get(const string& name) { int idx = m_ColorHash.try_get(name); if (idx != -1) { return m_Colors.get(idx); } int old_idx = m_OldColorHash.try_get(name); if (old_idx != -1) { return m_OldColors.get(old_idx); } return NULL; } GLEColor* GLEColorList::getSafeDefaultBlack(const string& name) { GLEColor* res = get(name); if (res == NULL) res = getColor(GLE_COLOR_BLACK); return res; } void GLEColorList::defineColor(const char* name, unsigned int value) { string key = name; defineColor(key, value); } void GLEColorList::defineColor(const string& name, unsigned int value) { GLEColor* color = new GLEColor(); color->setHexValue(value); defineColor(name, color); } void GLEColorList::defineColor(const string& name, GLEColor* color) { color->setName(name); int idx = m_ColorHash.try_get(name); if (idx != -1) { m_Colors[idx] = color; } else { int new_pos = m_Colors.size(); m_Colors.add(color); m_ColorHash.add_item(name, new_pos); } } void GLEColorList::defineOldColor(const char* name, unsigned int value) { string key = name; defineOldColor(key, value); } void GLEColorList::defineOldColor(const string& name, unsigned int value) { GLEColor* color = new GLEColor(); color->setHexValue(value); color->setName(name); int idx = m_OldColorHash.try_get(name); if (idx != -1) { m_OldColors[idx] = color; } else { int new_pos = m_OldColors.size(); m_OldColors.add(color); m_OldColorHash.add_item(name, new_pos); } } void GLEColorList::defineDefaultColors() { defineGrays(); defineSVGColors(); defineOldGLEColors(); } void GLEColorList::defineGrays() { defineColor("GRAY1", GLE_COLOR_GRAY1); defineColor("GRAY5", GLE_COLOR_GRAY5); defineColor("GRAY10", GLE_COLOR_GRAY10); defineColor("GRAY20", GLE_COLOR_GRAY20); defineColor("GRAY30", GLE_COLOR_GRAY30); defineColor("GRAY40", GLE_COLOR_GRAY40); defineColor("GRAY50", GLE_COLOR_GRAY50); defineColor("GRAY60", GLE_COLOR_GRAY60); defineColor("GRAY70", GLE_COLOR_GRAY70); defineColor("GRAY80", GLE_COLOR_GRAY80); defineColor("GRAY90", GLE_COLOR_GRAY90); } void GLEColorList::defineSVGColors() { defineColor("ALICEBLUE", GLE_COLOR_ALICEBLUE); defineColor("ANTIQUEWHITE", GLE_COLOR_ANTIQUEWHITE); defineColor("AQUA", GLE_COLOR_AQUA); defineColor("AQUAMARINE", GLE_COLOR_AQUAMARINE); defineColor("AZURE", GLE_COLOR_AZURE); defineColor("BEIGE", GLE_COLOR_BEIGE); defineColor("BISQUE", GLE_COLOR_BISQUE); defineColor("BLACK", GLE_COLOR_BLACK); defineColor("BLANCHEDALMOND", GLE_COLOR_BLANCHEDALMOND); defineColor("BLUE", GLE_COLOR_BLUE); defineColor("BLUEVIOLET", GLE_COLOR_BLUEVIOLET); defineColor("BROWN", GLE_COLOR_BROWN); defineColor("BURLYWOOD", GLE_COLOR_BURLYWOOD); defineColor("CADETBLUE", GLE_COLOR_CADETBLUE); defineColor("CHARTREUSE", GLE_COLOR_CHARTREUSE); defineColor("CHOCOLATE", GLE_COLOR_CHOCOLATE); defineColor("CORAL", GLE_COLOR_CORAL); defineColor("CORNFLOWERBLUE", GLE_COLOR_CORNFLOWERBLUE); defineColor("CORNSILK", GLE_COLOR_CORNSILK); defineColor("CRIMSON", GLE_COLOR_CRIMSON); defineColor("CYAN", GLE_COLOR_CYAN); defineColor("DARKBLUE", GLE_COLOR_DARKBLUE); defineColor("DARKCYAN", GLE_COLOR_DARKCYAN); defineColor("DARKGOLDENROD", GLE_COLOR_DARKGOLDENROD); defineColor("DARKGRAY", GLE_COLOR_DARKGRAY); defineColor("DARKGREEN", GLE_COLOR_DARKGREEN); defineColor("DARKKHAKI", GLE_COLOR_DARKKHAKI); defineColor("DARKMAGENTA", GLE_COLOR_DARKMAGENTA); defineColor("DARKOLIVEGREEN", GLE_COLOR_DARKOLIVEGREEN); defineColor("DARKORANGE", GLE_COLOR_DARKORANGE); defineColor("DARKORCHID", GLE_COLOR_DARKORCHID); defineColor("DARKRED", GLE_COLOR_DARKRED); defineColor("DARKSALMON", GLE_COLOR_DARKSALMON); defineColor("DARKSEAGREEN", GLE_COLOR_DARKSEAGREEN); defineColor("DARKSLATEBLUE", GLE_COLOR_DARKSLATEBLUE); defineColor("DARKSLATEGRAY", GLE_COLOR_DARKSLATEGRAY); defineColor("DARKTURQUOISE", GLE_COLOR_DARKTURQUOISE); defineColor("DARKVIOLET", GLE_COLOR_DARKVIOLET); defineColor("DEEPPINK", GLE_COLOR_DEEPPINK); defineColor("DEEPSKYBLUE", GLE_COLOR_DEEPSKYBLUE); defineColor("DIMGRAY", GLE_COLOR_DIMGRAY); defineColor("DODGERBLUE", GLE_COLOR_DODGERBLUE); defineColor("FIREBRICK", GLE_COLOR_FIREBRICK); defineColor("FLORALWHITE", GLE_COLOR_FLORALWHITE); defineColor("FORESTGREEN", GLE_COLOR_FORESTGREEN); defineColor("FUCHSIA", GLE_COLOR_FUCHSIA); defineColor("GAINSBORO", GLE_COLOR_GAINSBORO); defineColor("GHOSTWHITE", GLE_COLOR_GHOSTWHITE); defineColor("GOLD", GLE_COLOR_GOLD); defineColor("GOLDENROD", GLE_COLOR_GOLDENROD); defineColor("GRAY", GLE_COLOR_GRAY); defineColor("GREEN", GLE_COLOR_GREEN); defineColor("GREENYELLOW", GLE_COLOR_GREENYELLOW); defineColor("HONEYDEW", GLE_COLOR_HONEYDEW); defineColor("HOTPINK", GLE_COLOR_HOTPINK); defineColor("INDIANRED", GLE_COLOR_INDIANRED); defineColor("INDIGO", GLE_COLOR_INDIGO); defineColor("IVORY", GLE_COLOR_IVORY); defineColor("KHAKI", GLE_COLOR_KHAKI); defineColor("LAVENDER", GLE_COLOR_LAVENDER); defineColor("LAVENDERBLUSH", GLE_COLOR_LAVENDERBLUSH); defineColor("LAWNGREEN", GLE_COLOR_LAWNGREEN); defineColor("LEMONCHIFFON", GLE_COLOR_LEMONCHIFFON); defineColor("LIGHTBLUE", GLE_COLOR_LIGHTBLUE); defineColor("LIGHTCORAL", GLE_COLOR_LIGHTCORAL); defineColor("LIGHTCYAN", GLE_COLOR_LIGHTCYAN); defineColor("LIGHTGOLDENRODYELLOW", GLE_COLOR_LIGHTGOLDENRODYELLOW); defineColor("LIGHTGRAY", GLE_COLOR_LIGHTGRAY); defineColor("LIGHTGREEN", GLE_COLOR_LIGHTGREEN); defineColor("LIGHTPINK", GLE_COLOR_LIGHTPINK); defineColor("LIGHTSALMON", GLE_COLOR_LIGHTSALMON); defineColor("LIGHTSEAGREEN", GLE_COLOR_LIGHTSEAGREEN); defineColor("LIGHTSKYBLUE", GLE_COLOR_LIGHTSKYBLUE); defineColor("LIGHTSLATEGRAY", GLE_COLOR_LIGHTSLATEGRAY); defineColor("LIGHTSTEELBLUE", GLE_COLOR_LIGHTSTEELBLUE); defineColor("LIGHTYELLOW", GLE_COLOR_LIGHTYELLOW); defineColor("LIME", GLE_COLOR_LIME); defineColor("LIMEGREEN", GLE_COLOR_LIMEGREEN); defineColor("LINEN", GLE_COLOR_LINEN); defineColor("MAGENTA", GLE_COLOR_MAGENTA); defineColor("MAROON", GLE_COLOR_MAROON); defineColor("MEDIUMAQUAMARINE", GLE_COLOR_MEDIUMAQUAMARINE); defineColor("MEDIUMBLUE", GLE_COLOR_MEDIUMBLUE); defineColor("MEDIUMORCHID", GLE_COLOR_MEDIUMORCHID); defineColor("MEDIUMPURPLE", GLE_COLOR_MEDIUMPURPLE); defineColor("MEDIUMSEAGREEN", GLE_COLOR_MEDIUMSEAGREEN); defineColor("MEDIUMSLATEBLUE", GLE_COLOR_MEDIUMSLATEBLUE); defineColor("MEDIUMSPRINGGREEN", GLE_COLOR_MEDIUMSPRINGGREEN); defineColor("MEDIUMTURQUOISE", GLE_COLOR_MEDIUMTURQUOISE); defineColor("MEDIUMVIOLETRED", GLE_COLOR_MEDIUMVIOLETRED); defineColor("MIDNIGHTBLUE", GLE_COLOR_MIDNIGHTBLUE); defineColor("MINTCREAM", GLE_COLOR_MINTCREAM); defineColor("MISTYROSE", GLE_COLOR_MISTYROSE); defineColor("MOCCASIN", GLE_COLOR_MOCCASIN); defineColor("NAVAJOWHITE", GLE_COLOR_NAVAJOWHITE); defineColor("NAVY", GLE_COLOR_NAVY); defineColor("OLDLACE", GLE_COLOR_OLDLACE); defineColor("OLIVE", GLE_COLOR_OLIVE); defineColor("OLIVEDRAB", GLE_COLOR_OLIVEDRAB); defineColor("ORANGE", GLE_COLOR_ORANGE); defineColor("ORANGERED", GLE_COLOR_ORANGERED); defineColor("ORCHID", GLE_COLOR_ORCHID); defineColor("PALEGOLDENROD", GLE_COLOR_PALEGOLDENROD); defineColor("PALEGREEN", GLE_COLOR_PALEGREEN); defineColor("PALETURQUOISE", GLE_COLOR_PALETURQUOISE); defineColor("PALEVIOLETRED", GLE_COLOR_PALEVIOLETRED); defineColor("PAPAYAWHIP", GLE_COLOR_PAPAYAWHIP); defineColor("PEACHPUFF", GLE_COLOR_PEACHPUFF); defineColor("PERU", GLE_COLOR_PERU); defineColor("PINK", GLE_COLOR_PINK); defineColor("PLUM", GLE_COLOR_PLUM); defineColor("POWDERBLUE", GLE_COLOR_POWDERBLUE); defineColor("PURPLE", GLE_COLOR_PURPLE); defineColor("RED", GLE_COLOR_RED); defineColor("ROSYBROWN", GLE_COLOR_ROSYBROWN); defineColor("ROYALBLUE", GLE_COLOR_ROYALBLUE); defineColor("SADDLEBROWN", GLE_COLOR_SADDLEBROWN); defineColor("SALMON", GLE_COLOR_SALMON); defineColor("SANDYBROWN", GLE_COLOR_SANDYBROWN); defineColor("SEAGREEN", GLE_COLOR_SEAGREEN); defineColor("SEASHELL", GLE_COLOR_SEASHELL); defineColor("SIENNA", GLE_COLOR_SIENNA); defineColor("SILVER", GLE_COLOR_SILVER); defineColor("SKYBLUE", GLE_COLOR_SKYBLUE); defineColor("SLATEBLUE", GLE_COLOR_SLATEBLUE); defineColor("SLATEGRAY", GLE_COLOR_SLATEGRAY); defineColor("SNOW", GLE_COLOR_SNOW); defineColor("SPRINGGREEN", GLE_COLOR_SPRINGGREEN); defineColor("STEELBLUE", GLE_COLOR_STEELBLUE); defineColor("TAN", GLE_COLOR_TAN); defineColor("TEAL", GLE_COLOR_TEAL); defineColor("THISTLE", GLE_COLOR_THISTLE); defineColor("TOMATO", GLE_COLOR_TOMATO); defineColor("TURQUOISE", GLE_COLOR_TURQUOISE); defineColor("VIOLET", GLE_COLOR_VIOLET); defineColor("WHEAT", GLE_COLOR_WHEAT); defineColor("WHITE", GLE_COLOR_WHITE); defineColor("WHITESMOKE", GLE_COLOR_WHITESMOKE); defineColor("YELLOW", GLE_COLOR_YELLOW); defineColor("YELLOWGREEN", GLE_COLOR_YELLOWGREEN); } void GLEColorList::defineOldGLEColors() { defineOldColor("BAKERS_CHOCOLATE", 0x5C3317); defineOldColor("BLUE_VIOLET", 0x9F5F9F); defineOldColor("BRASS", 0xB5A642); defineOldColor("BRIGHT_GOLD", 0xD9D919); defineOldColor("BRONZE", 0x8C7853); defineOldColor("BRONZE_II", 0xA67D3D); defineOldColor("BROWN_WEB", 0xA62A2A); defineOldColor("CADET_BLUE", 0x5F9F9F); defineOldColor("COOL_COPPER", 0xD98719); defineOldColor("COPPER", 0xB87333); defineOldColor("CORN_FLOWER_BLUE", 0x42426F); defineOldColor("DARK_BROWN", 0x5C4033); defineOldColor("DARK_GREEN", 0x2F4F2F); defineOldColor("DARK_GREEN_COPPER", 0x4A766E); defineOldColor("DARK_OLIVE_GREEN", 0x4F4F2F); defineOldColor("DARK_ORCHID", 0x9932CD); defineOldColor("DARK_PURPLE", 0x871F78); defineOldColor("DARK_SLATE_BLUE", 0x6B238E); defineOldColor("DARK_SLATE_GRAY", 0x2F4F4F); defineOldColor("DARK_SLATE_GREY", 0x2F4F4F); defineOldColor("DARK_TAN", 0x97694F); defineOldColor("DARK_TURQUOISE", 0x7093DB); defineOldColor("DARK_WOOD", 0x855E42); defineOldColor("DIM_GRAY", 0x545454); defineOldColor("DIM_GREY", 0x545454); defineOldColor("DUSTY_ROSE", 0x856363); defineOldColor("FELDSPAR", 0xD19275); defineOldColor("FOREST_GREEN", 0x228B22); defineOldColor("FOREST_GREEN_WEB", 0x238E23); defineOldColor("GRAY_WEB", 0xC0C0C0); defineOldColor("GREEN_COPPER", 0x527F76); defineOldColor("GREEN_YELLOW", 0x93DB70); defineOldColor("GREY", 0x7F7F7F); defineOldColor("GREY1", 0xFDFDFD); defineOldColor("GREY10", 0xC8C8C8); defineOldColor("GREY20", 0xAFAFAF); defineOldColor("GREY30", 0x969696); defineOldColor("GREY40", 0x7D7D7D); defineOldColor("GREY5", 0xF0F0F0); defineOldColor("GREY50", 0x646464); defineOldColor("GREY60", 0x4B4B4B); defineOldColor("GREY70", 0x323232); defineOldColor("GREY80", 0x191919); defineOldColor("GREY90", 0x060606); defineOldColor("GREY_WEB", 0xC0C0C0); defineOldColor("HUNTER_GREEN", 0x215E21); defineOldColor("INDIAN_RED", 0x4E2F2F); defineOldColor("LAWN_GREEN", 0x7CFC00); defineOldColor("LIGHT_BLUE", 0xC0D9D9); defineOldColor("LIGHT_GRAY", 0xA8A8A8); defineOldColor("LIGHT_GREY", 0xA8A8A8); defineOldColor("LIGHT_STEEL_BLUE", 0x8F8FBD); defineOldColor("LIGHT_WOOD", 0xE9C2A6); defineOldColor("LIME_GREEN", 0x32CD32); defineOldColor("MANDARIAN_ORANGE", 0xE47833); defineOldColor("MAROON_WEB", 0x8E236B); defineOldColor("MEDIUM_AQUAMARINE", 0x32CD99); defineOldColor("MEDIUM_BLUE", 0x3232CD); defineOldColor("MEDIUM_FOREST_GREEN", 0x6B8E23); defineOldColor("MEDIUM_GOLDENROD", 0xEAEAAE); defineOldColor("MEDIUM_ORCHID", 0x9370DB); defineOldColor("MEDIUM_SEA_GREEN", 0x426F42); defineOldColor("MEDIUM_SLATE_BLUE", 0x7F00FF); defineOldColor("MEDIUM_SPRING_GREEN", 0x7FFF00); defineOldColor("MEDIUM_TURQUOISE", 0x70DBDB); defineOldColor("MEDIUM_VIOLET_RED", 0xDB7093); defineOldColor("MEDIUM_WOOD", 0xA68064); defineOldColor("MIDNIGHT_BLUE", 0x2F2F4F); defineOldColor("NAVY_BLUE", 0x23238E); defineOldColor("NEON_BLUE", 0x4D4DFF); defineOldColor("NEON_PINK", 0xFF6EC7); defineOldColor("NEW_MIDNIGHT_BLUE", 0x00009C); defineOldColor("NEW_TAN", 0xEBC79E); defineOldColor("OLD_GOLD", 0xCFB53B); defineOldColor("ORANGE_RED", 0xFF2400); defineOldColor("ORANGE_WEB", 0xFF7F00); defineOldColor("PALE_GREEN", 0x8FBC8F); defineOldColor("PINK_WEB", 0xBC8F8F); defineOldColor("QUARTZ", 0xD9D9F3); defineOldColor("RICH_BLUE", 0x5959AB); defineOldColor("SCARLET", 0x8C1717); defineOldColor("SEA_GREEN", 0x238E68); defineOldColor("SEMI_SWEET_CHOCOLATE", 0x6B4226); defineOldColor("SILVER_WEB", 0xE6E8FA); defineOldColor("SKY_BLUE", 0x3299CC); defineOldColor("SLATE_BLUE", 0x007FFF); defineOldColor("SPICY_PINK", 0xFF1CAE); defineOldColor("SPRING_GREEN", 0x00FF7F); defineOldColor("STEEL_BLUE", 0x236B8E); defineOldColor("SUMMER_SKY", 0x38B0DE); defineOldColor("TAN_COLOR", 0x008080); defineOldColor("VERY_DARK_BROWN", 0x5C4033); defineOldColor("VERY_LIGHT_GRAY", 0xCDCDCD); defineOldColor("VERY_LIGHT_GREY", 0xCDCDCD); defineOldColor("VIOLET_RED", 0xCC3299); defineOldColor("VIOLET_WEB", 0x4F2F4F); defineOldColor("YELLOW_GREEN", 0x99CC32); } GLERC color_or_fill_from_int(int hexValue) { GLERC result(new GLEColor()); result->setHexValueGLE(hexValue); return result; } GLERC color_from_double_encoding(double encoding) { GLERC result(new GLEColor()); result->setDoubleEncoding(encoding); return result; } void update_color_foreground(GLEColor* updateMe, GLEColor* color) { updateMe->setRGBA(color->getRed(), color->getGreen(), color->getBlue(), color->getAlpha()); updateMe->setTransparent(color->isTransparent()); updateMe->setName(color->getNameS()); } void update_color_fill_pattern(GLEColor* updateMe, GLEPatternFill* fill) { if (updateMe->isFill() && updateMe->getFill()->getFillType() == GLE_FILL_TYPE_PATTERN) { GLEPatternFill* myFill = static_cast(updateMe->getFill()); myFill->setFillDescription(fill->getFillDescription()); } else { updateMe->setFill(new GLEPatternFill(fill->getFillDescription())); } updateMe->setTransparent(false); } void update_color_fill_background(GLEColor* updateMe, GLEColor* color) { if (updateMe->isFill() && updateMe->getFill()->getFillType() == GLE_FILL_TYPE_PATTERN) { GLEPatternFill* myFill = static_cast(updateMe->getFill()); myFill->setBackground(color); } else { GLEPatternFill* myFill = new GLEPatternFill(0X02010020); myFill->setBackground(color); updateMe->setFill(myFill); } updateMe->setTransparent(false); } GLERC get_fill_background(GLEColor* fill) { if (fill->isFill() && fill->getFill()->getFillType() == GLE_FILL_TYPE_PATTERN) { GLEPatternFill* myFill = static_cast(fill->getFill()); return myFill->getBackground(); } else { return color_or_fill_from_int(GLE_COLOR_WHITE); } } GLERC get_fill_foreground(GLEColor* fill) { GLERC result(new GLEColor()); update_color_foreground(result.get(), fill); return result; } gle-graphics-4.2.4c/src/gle/Makefile.vc0000664000000000000000000000676511405446017016356 0ustar rootroot######################################################################## # # # GLE - Graphics Layout Engine # # # # Modified BSD License # # # # Copyright (C) 2009 GLE. # # # # Redistribution and use in source and binary forms, with or without # # modification, are permitted provided that the following conditions # # are met: # # # # 1. Redistributions of source code must retain the above copyright # # notice, this list of conditions and the following disclaimer. # # # # 2. Redistributions in binary form must reproduce the above # # copyright notice, this list of conditions and the following # # disclaimer in the documentation and/or other materials provided with # # the distribution. # # # # 3. The name of the author may not be used to endorse or promote # # products derived from this software without specific prior written # # permission. # # # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR # # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY # # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE # # GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER # # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN # # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # # ######################################################################## # # makefile.vc for GLE v4.0 # for compilation with MS vc++ .net # # !include ..\..\config.vc # !include files.txt !ifdef HAVE_LIBTIFF OBJECTS = $(OBJECTS) $(TIFFOBJS) !endif !ifdef HAVE_LIBPNG OBJECTS = $(OBJECTS) $(PNGOBJS) !endif !ifdef HAVE_LIBJPEG OBJECTS = $(OBJECTS) $(JPEGOBJS) !endif all: $(OBJECTS) $(PSOBJS) $(SVGOBJS) $(PROJECT_BINDIR)\glerc $(PROJECT_BINDIR)\bin\gle$(EXE_SUFF) $(OBJECTS): $(INCLUDES) $(PROJECT_BINDIR)\bin\gle$(EXE_SUFF): $(GLEOBJS) $(OBJECTS) $(LINKOBJS) $(AR) $(LINKFLAGS) /out:$(PROJECT_BINDIR)\bin\gle$(EXE_SUFF) $(OBJECTS) $(LINKOBJS) $(LIBS) $(PROJECT_BINDIR)\glerc: echo begin config gle > $(PROJECT_BINDIR)\glerc echo current = $(VERSION_NUMBER).$(BUILD_NUMBER) >> $(PROJECT_BINDIR)\glerc echo end config >> $(PROJECT_BINDIR)\glerc clean: -erase $(OBJECTS) $(PSOBJS) $(SVGOBJS) $(PROJECT_BINDIR)\bin\gle$(EXE_SUFF) gle-graphics-4.2.4c/src/gle/file_io.h0000664000000000000000000001637511652073536016072 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ #ifndef INCLUDE_FILE_IO #define INCLUDE_FILE_IO #ifdef __UNIX__ #define READ_BIN "r" #define WRITE_BIN "w" #endif #ifdef __WIN32__ #define READ_BIN "rb" #define WRITE_BIN "wb" #endif #if defined(__OS2__) && defined(__EMX__) #define READ_BIN "rb" #define WRITE_BIN "wb" #endif #ifndef IN_FILE_IO_H extern string PATH_SEP; extern string DIR_SEP; #endif class GLEProgressIndicator { public: GLEProgressIndicator(); virtual ~GLEProgressIndicator(); virtual void indicate(); }; class GLEFindEntry { protected: vector m_ToFind; vector m_Found; string* m_Result; string m_NotFound; bool m_Done; public: GLEFindEntry(string* result); ~GLEFindEntry(); void addToFind(const string& tofind); void updateResult(bool isFinal); void setFound(unsigned int i, const string& found); inline void setNotFound(const string& notfound) { m_NotFound = notfound; } inline unsigned int getNbFind() { return m_ToFind.size(); } inline const string& getFind(unsigned int i) { return m_ToFind[i]; } }; string fontdir(const char *fname); char *line(int i); bool GLEGetEnv(const string& name, string& result); void CopyGLETop(char* buf); string GetActualFilename(ifstream* file, const string& fname, const string* directory); void FillIncludePaths(vector& IP); void GLEPathToVector(const string& path, vector* vec); bool GLEStreamContains(istream& strm, const char* msg); void StripDirSep(string& fname); void StripDirSepButNotRoot(string& fname); void CorrectDirSep(string& fname); void CorrectDirSepStrip(string& fname); void AddDirSep(string& fname); string GLEAddRelPath(const string& base, int cd, const char* path); bool GLEAddRelPathAndFileTry(const string& base, int cd, const char* path, const char* file, string& result); void FileNameDotToUnderscore(string& fname); void GetExtension(const string& fname, string& ext); void GetMainName(const string& fname, string& name); void GetMainNameExt(const string& fname, const char* ext, string& name); void AddExtension(string& fname, const string& ext); void SplitFileName(const string& fname, string& dir, string& name); void SplitFileNameNoDir(const string& fname, string& name); void RemoveDirectoryIfEqual(string* filename, const string& directory); void GetDirName(const string& fname, string& dir); void EnsureMkDir(const string& dir); bool TryDeleteDir(const string& fname); bool TryDeleteFile(const string& fname); bool DeleteFileWithExt(const string& fname, const char* ext); bool DeleteFileWithNewExt(const string& fname, const char* ext); int ReadFileLine(istream& file, string& line); int ReadFileLineAllowEmpty(istream& file, string& line); bool IsDirectory(const string& fname, bool linkok = true); bool IsExecutable(const string& fname); string GLETempName(); string GLETempDirName(); bool GLEMoveFile(const string& from, const string& to); void GLECopyStream(istream& from, ostream& to); int GLECopyFile(const string& from, const string& to, string* err = NULL); bool GLEGetCrDir(string* name); bool GLEGetCrDirWin32(string* name); bool GLEChDir(const string& dir); void GLEFindFiles(const string& dir, vector& tofind, GLEProgressIndicator* progress); string GLEFindLibrary(const char* name, GLEProgressIndicator* progress); void GLEFindPrograms(vector& tofind, GLEProgressIndicator* progress); int GLESystem(const string& cmd, bool wait = true, bool redirout = true, istream* ins = NULL, ostream* outerrs = NULL); int GLERunCommand(const string& cmd, string& result); int GLESendSocket(const string& commands); bool GetExeName(const char* appname, char **argv, string& exe_name); string GetHomeDir(); void GLESetGLETop(const string& cmdline); bool GLEFileExists(const string& fname); void GLESleep(int msec); void StripPathComponents(string* fname, int nb); bool IsAbsPath(const string& path); void GLEGetFullPath(const string& dirname, const string& fname, string& fullpath); string GLEExpandEnvironmentVariables(const string& str); bool GLEReadFile(const string& name, vector* lines); bool GLEReadFileBinary(const string& name, std::vector* contents); #define GLE_SYSTEM_OK 0 #define GLE_SYSTEM_ERROR 1 #define GLE_FILE_OK 0 #define GLE_FILE_WRITE_ERROR 2 #define GLE_FILE_READ_ERROR 3 #define GLE_FILE_NOT_FOUND_ERROR 4 class StreamTokenizerMax { protected: char* m_LastToken; int m_Sep, m_Max, m_IsOK; ifstream m_File; public: StreamTokenizerMax(const string& fname, int sep, int max); ~StreamTokenizerMax(); bool hasMoreTokens(); bool isSepChar(char ch); const char* nextToken(); void readNextToken(); void close(); inline ifstream& getFile() { return m_File; } }; #endif gle-graphics-4.2.4c/src/gle/b_text.cpp0000664000000000000000000000627111405446017016270 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ #include "all.h" #include "justify.h" #include "mem_limits.h" #include "token.h" #include "core.h" #define BEGINDEF extern #include "begin.h" #define dbg if ((gle_debug & 32)>0) extern int gle_debug; void begin_text(int *pln,int *pcode, int *cp, double width, int just) { (*pln)++; int cjust; string text, line; while (begin_line(pln, line)) { text += line; text += "\n"; } g_get_just(&cjust); // cout << "line = '" << text << "'" << endl; text_block(text, width, cjust, just); } gle-graphics-4.2.4c/src/gle/basicconf.h0000664000000000000000000000735111405446017016377 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ #ifndef INCLUDE_BASICCONF_H #define INCLUDE_BASICCONF_H #ifdef HAVE_CONFIG_H #include "../config.h" #else #include "../config_noauto.h" #endif #include #if HAVE_SYS_TYPES_H #include #endif #if HAVE_SYS_STAT_H #include #endif #if STDC_HEADERS #include #include #else #if HAVE_STDLIB_H #include #endif #endif #if HAVE_STRING_H #if !STDC_HEADERS && HAVE_MEMORY_H #include #endif #include #endif #if HAVE_STRINGS_H #include #endif #if HAVE_UNISTD_H #include #endif #include #include #include #include #include #include using namespace std; #if defined(__OS2__) && defined(__EMX__) #define uint unsigned int #endif #ifdef __WIN32__ #define DLLEXPORT __declspec( dllexport ) #define DLLIMPORT __declspec( dllimport ) #else #define DLLEXPORT #define DLLIMPORT #endif #endif #define GLE_INF numeric_limits::infinity() #define GLE_NAN numeric_limits::quiet_NaN() gle-graphics-4.2.4c/src/gle/pass.h0000664000000000000000000002740311652073536015424 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ #ifndef INCLUDE_PASS #define INCLUDE_PASS //typedef struct op_key* OPKEY; typedef struct op_key OPKEY[]; #define GLE_PARSER_NONE 0 #define GLE_PARSER_INCLUDE 1 #define GLE_SRCBLK_UNTIL 0 #define GLE_SRCBLK_WHILE 1 #define GLE_SRCBLK_FOR 2 #define GLE_SRCBLK_NEXT 3 #define GLE_SRCBLK_ELSE 4 #define GLE_SRCBLK_RETURN 5 #define GLE_SRCBLK_MAGIC 100 #define GLE_OPBEGIN_IF 6 #define GLE_OPBEGIN_SUB 7 #define GLE_OPBEGIN_BOX 2 #define GLE_OPBEGIN_GRAPH 10 #define GLE_OPBEGIN_KEY 16 #define GLE_OPBEGIN_SURF 24 class GLESubMap; void GLEParserInitTokenizer(Tokenizer* tokens); class GLESourceBlock { protected: int m_block_type; int m_variable; int m_first_line; int m_pcode_offs1; /* jump address */ int m_pcode_offs2; /* fill in address */ bool m_dangling; vector* m_deps; public: GLESourceBlock(int type, int first_line); GLESourceBlock(const GLESourceBlock& block); ~GLESourceBlock(); const char* getName(); const char* getKindName(); GLESourceBlock* addDependendBlock(int type, int first_line); int getNbDependendingBlocks(); inline int getFirstLine() { return m_first_line; } inline int getType() { return m_block_type; } inline void setVariable(int var) { m_variable = var; } inline int getVariable() { return m_variable; } inline int getOffset1() { return m_pcode_offs1; } inline int getOffset2() { return m_pcode_offs2; } inline void setOffset1(int offs) { m_pcode_offs1 = offs; } inline void setOffset2(int offs) { m_pcode_offs2 = offs; } inline bool isDangling() { return m_dangling; } inline void setDangling(int yes) { m_dangling = yes; } inline bool isDanglingElse() { return m_dangling && m_block_type == GLE_SRCBLK_ELSE; } inline GLESourceBlock* getDependingBlock(int i) { return &(*m_deps)[i]; } }; const char* GLESourceBlockName(int type); const char* GLESourceBlockEndName(int type); const char* GLESourceBlockBeginName(int type); class GLESubCallAdditParam { /* current implementation just for "name" option of draw command */ /* later: implement for all common options, such as color, lwidth, ... */ protected: string m_Val; int m_Pos; public: GLESubCallAdditParam(); ~GLESubCallAdditParam(); int isAdditionalParam(const string& str); void setAdditionalParam(int idx, const string& val, int pos); inline const string& getVal() { return m_Val; } inline int getPos() { return m_Pos; } }; class GLESubCallInfo { protected: vector m_ParamVal; vector m_ParamPos; GLESubCallAdditParam* m_Addit; GLESub* m_Sub; public: GLESubCallInfo(GLESub* sub); ~GLESubCallInfo(); void setParam(int i, const string& val, int pos); inline int getParamPos(int i) { return m_ParamPos[i]; } inline const string& getParamVal(int i) { return m_ParamVal[i]; } inline void setAdditParam(GLESubCallAdditParam* addit) { m_Addit = addit; } inline GLESubCallAdditParam* getAdditParam() { return m_Addit; } inline GLESub* getSub() { return m_Sub; } }; class GLEBlocks; class GLEParser { protected: GLEScript* m_Script; TokenizerLanguage m_lang; StringTokenizer m_tokens; GLEPolish* m_polish; GLESub* m_CrSub; GLEBlocks* m_blockTypes; string m_include; int m_special; bool m_auto_endif; bool m_insub; vector m_blocks; public: GLEParser(GLEScript* script, GLEPolish* polish); ~GLEParser(); GLEBlocks* getBlockTypes(); void initTokenizer(); double evalTokenToDouble() throw(ParserError); void evalTokenToString(string* str) throw(ParserError); void evalTokenToFileName(string* str) throw(ParserError); bool pass_block_specific(GLESourceLine& sourceLine, GLEPcode& pcode); void passt(GLESourceLine &SLine, GLEPcode& pcode) throw(ParserError); void polish_eol(GLEPcode& pcode, int *rtype) throw(ParserError); void polish(GLEPcode& pcode, int *rtype) throw(ParserError); void polish(const char* str, GLEPcode& pcode, int *rtype) throw(ParserError); void polish_pos(const string& arg, int pos, GLEPcode& pcode, int* rtype) throw(ParserError); void get_var(GLEPcode& pcode) throw (ParserError); void get_xy(GLEPcode& pcode) throw(ParserError); void get_exp(GLEPcode& pcode) throw(ParserError); void get_exp_eol(GLEPcode& pcode) throw(ParserError); void get_strexp(GLEPcode& pcode) throw(ParserError); int get_anyexp(GLEPcode& pcode) throw(ParserError); void pass_subroutine_call(GLESubCallInfo* info, int poscol) throw(ParserError); void gen_subroutine_call_code(GLESubCallInfo* info, GLEPcode& pcode) throw(ParserError); void gen_subroutine_call_polish_arg(GLESubCallInfo* info, int i, GLEPcode& pcode) throw(ParserError); void evaluate_subroutine_arguments(GLESubCallInfo* info, GLEArrayImpl* arguments); void get_subroutine_call(GLEPcode& pcode, string* name = NULL, int poscol = 0) throw(ParserError); GLESub* get_subroutine_declaration(GLEPcode& pcode) throw(ParserError); void get_subroutine_default_param(GLESub* sub) throw(ParserError); void get_if(GLEPcode& pcode) throw(ParserError); void parse_if(int srclin, GLEPcode& pcode) throw(ParserError); GLESourceBlock* add_else_block(int srclin, GLEPcode& pcode, bool dangling); GLESourceBlock* add_else_block_update(int srclin, GLEPcode& pcode, int start_offs, bool dangling); void do_endif(int srclin, GLEPcode& pcode); void do_endsub(int srclin, GLEPcode& pcode); int get_optional(OPKEY lkey, GLEPcode& pcode) throw(ParserError); int get_first(OPKEY lkey) throw(ParserError); int get_first(const string& token, OPKEY lkey) throw(ParserError); void get_token(const char* token) throw(ParserError); bool try_get_token(const char* token) throw(ParserError); void get_fill(GLEPcode& pcode) throw (ParserError); void get_marker(GLEPcode& pcode) throw (ParserError); void get_var_add(int *var, int *vtype) throw (ParserError); int pass_marker(const string& marker) throw (ParserError); void define_marker_1(GLEPcode& pcode) throw (ParserError); void define_marker_2(GLEPcode& pcode) throw (ParserError); void get_font(GLEPcode& pcode) throw (ParserError); void get_justify(GLEPcode& pcode) throw (ParserError); void get_color(GLEPcode& pcode) throw (ParserError); void get_join(GLEPcode& pcode) throw (ParserError); void get_cap(GLEPcode& pcode) throw (ParserError); void get_papersize(GLEPcode& pcode) throw (ParserError); void do_text_mode(GLESourceLine &SLine, Tokenizer* tokens, GLEPcode& pcode) throw (ParserError); void checkmode() throw(ParserError); void get_block_type(int type, string& result); ParserError create_option_error(OPKEY lkey, int count, const string& token); int get_one_option(op_key* lkey, GLEPcode& pcode, int plen) throw(ParserError); void duplicate_error(GLEPcode& pcode, int pos) throw(ParserError); void checkValidName(const string& name, const char* type, int pos) throw(ParserError); void setAllowSpace(bool allow); bool not_at_end_command(); bool test_not_at_end_command(); GLESub* is_draw_sub(const string& str); GLESourceBlock* add_block(int type, int first_line); GLESourceBlock* last_block(); GLESourceBlock* find_block(int type); void remove_last_block(); void check_loop_variable(int var) throw (ParserError); GLESourceBlock* check_block_type(int pos, int t0, int t1, int t2) throw (ParserError); GLESubMap* getSubroutines(); inline Tokenizer* getTokens() { return &m_tokens; } inline GLEPolish* getPolish() { return m_polish; } inline void setString(const char* str) { m_tokens.set_string(str); } inline void resetSpecial() { m_special = GLE_PARSER_NONE; } inline bool hasSpecial(int special) { return (m_special & special) != 0; } inline void setSpecial(int special) { m_special |= special; } inline const string& getInclude() { return m_include; } inline void setInclude(const string& name) { m_include = name; } inline bool isInSub() { return m_insub; } inline void setInSub(bool insub) { m_insub = insub; } inline ParserError error(const string& src) const { return m_tokens.error(src); }; inline ParserError error(int column, const string& src) const { return m_tokens.error(column, src); }; inline GLEScript* getScript() { return m_Script; } inline GLEGlobalSource* getSource() { return m_Script->getSource(); } }; int gt_first(OPKEY lkey, int *curtok, TOKENS tk, int *ntok, int *pcode, int *plen); int gt_firstval(OPKEY lkey, const char *s); bool gt_firstval_err(OPKEY lkey, const char *s, int* result); int gt_index(OPKEY lkey,char *s); int gt_optional(OPKEY lkey, int *curtok, TOKENS tk, int *ntok, int *pcode, int *plen); int pass_justify(const char *s); int pass_marker(char *s) throw(ParserError); void get_color(TOKENS tk,int *ntok,int *curtok,int *pcode,int *plen); void get_fill(TOKENS tk,int *ntok,int *curtok,int *pcode,int *plen); void get_font(TOKENS tk,int *ntok,int *curtok,int *pcode,int *plen); void get_justify(TOKENS tk,int *ntok,int *curtok,int *pcode,int *plen); void get_marker(TOKENS tk,int *ntok,int *curtok,int *pcode,int *plen); void gt_xy(int *curtok, TOKENS tk, int *ntok, int *pcode, int *plen); void mark_clear(void); void pass_checkmode(void); //void passt(_itGLESource sc_line_it,TOKENS tk,int *ntok,int *pcode,int *plen); void spop(int v); void spush(int v); void scheck(int v); // // used in utils // int zpolish(TOKENS tk,int *ntok,int *curtok,char *pcode,int *plen,int *rtype); void set_global_parser(GLEParser* parser); GLEParser* get_global_parser(); #endif gle-graphics-4.2.4c/src/gle/texinterface.cpp0000664000000000000000000013322711720262226017464 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ /* * (c) 2004 Jan Struyf * */ #include "all.h" #include "tokens/stokenizer.h" #include "core.h" #include "file_io.h" #include "texinterface.h" #include "cutils.h" #include "gprint.h" #include "cmdline.h" #include "config.h" #include "mem_limits.h" #include "token.h" #include "var.h" #include "keyword.h" #include "run.h" #include "gle-poppler.h" #define BEGINDEF extern #include "begin.h" #include void decode_utf8_basic(string& sc); extern ConfigCollection g_Config; extern CmdLineObj g_CmdLine; class FourDoubleList { protected: double m_List[4]; int m_Pos; public: FourDoubleList(); double get(int idx); void add(double value); }; FourDoubleList::FourDoubleList() { m_Pos = 0; } double FourDoubleList::get(int idx) { return m_List[(m_Pos + idx) % 4]; } void FourDoubleList::add(double value) { m_List[m_Pos] = value; m_Pos = (m_Pos + 1) % 4; } TeXInterface TeXInterface::m_Instance; TeXInterface::TeXInterface() { m_Enabled = true; } TeXInterface::~TeXInterface() { cleanUpObjects(); cleanUpHash(); for (int i = 0; i < getNbFontSizes(); i++) { delete getFontSize(i); } } TeXObject* TeXInterface::draw(const char* str) throw(ParserError) { TeXObjectInfo info; return draw(str, info, 1); } TeXObject* TeXInterface::draw(const char* str, GLERectangle* box) throw(ParserError) { TeXObjectInfo info; return draw(str, info, 1, box); } TeXObject* TeXInterface::drawUTF8(const char* str, GLERectangle* box) throw(ParserError) { TeXObjectInfo info; string utf8 = str; decode_utf8_basic(utf8); return draw(utf8.c_str(), info, 1, box); } TeXObject* TeXInterface::draw(const char* str, int nblines, GLERectangle* box) throw(ParserError) { TeXObjectInfo info; return draw(str, info, nblines, box); } TeXObject* TeXInterface::draw(const char* str, TeXObjectInfo& info, int nblines, GLERectangle* box) throw(ParserError) { /* Load hash */ tryLoadHash(); /* Get object from hash */ string obj_str = str; /* replace \'' by \" so that umlauts work in LaTeX expressions */ str_replace_all(obj_str, "\\''", "\\\""); scaleObject(obj_str, 0.0); TeXHashObject* hobj = getHashObject(obj_str); hobj->setNbLines(nblines); hobj->setUsed(true); /* Construct object and add to list */ return drawObj(hobj, info, box); } void TeXInterface::scaleObject(string& obj_str, double hei) { int scaleMode = getScaleMode(); if (scaleMode != TEX_SCALE_MODE_NONE) { TeXPreambleInfo* preamble = getCurrentPreamble(); if (!preamble->hasFontSizes()) checkTeXFontSizes(); if (hei == 0) g_get_hei(&hei); if (scaleMode == TEX_SCALE_MODE_FIXED) { int best_size = preamble->getBestSizeFixed(hei); if (best_size != -1) { string prefix = "{\\" + getFontSize(best_size)->getName() + " "; obj_str = prefix + obj_str + "}"; } } else { int best_size = preamble->getBestSizeScaled(hei); if (best_size != -1) { double scale = hei / preamble->getFontSize(best_size); stringstream sstr; sstr << "\\scalebox{" << scale << "}{{\\"; sstr << getFontSize(best_size)->getName(); sstr << " " << obj_str << "}}"; obj_str = sstr.str(); } } } } TeXObject* TeXInterface::drawObj(TeXHashObject* hobj, TeXObjectInfo& info, GLERectangle* box) throw(ParserError) { /* Throw exception if disabled*/ if (!isEnabled()) { g_throw_parser_error("safe mode - TeX subsystem has been disabled"); } /* Update unknown fields of info structure */ info.initializeAll(); /* Check if dimensions available */ double width = 1.0, height = 0.5, baseline = 0.1; if (hobj->hasDimensions()) { width = hobj->getWidth(); height = hobj->getHeight(); baseline = hobj->getBaseline(); // cout << "OBJ: " << width << "x" << height << " + " << baseline << endl; } /* Handle justify */ double xp = info.getXp(); double yp = info.getYp(); int just = info.getJustify(); g_dotjust(&xp, &yp, 0.0, width, height, 0.0, just); if ((just & 0x100) != 0) { yp -= baseline; } /* Update bounding box */ g_update_bounds(xp, yp+height); g_update_bounds(xp+width, yp); if (box != NULL) { box->setXMin(xp); box->setXMax(xp+width); box->setYMin(yp); box->setYMax(yp+height); } /* Create object */ if ((info.getFlags() & TEX_OBJ_INF_DONT_PRINT) == 0 && !g_is_dummy_device()) { TeXObject* obj = new TeXObject(); obj->setObject(hobj); obj->setXY(xp, yp); m_TeXObjects.push_back(obj); obj->setColor(info.getColor()); /* Apply input transformation */ double devx, devy; g_dev(xp, yp, &devx, &devy); obj->setDeviceXY(devx/PS_POINTS_PER_INCH*CM_PER_INCH, devy/PS_POINTS_PER_INCH*CM_PER_INCH); /* Find out if text should be rotated */ double angle = g_get_angle_deg(); if (fabs(angle) > 1e-6) { obj->setAngle(angle); } /* Return object */ return obj; } else { return NULL; } } void TeXInterface::checkObjectDimensions() { GLEDevice* psdev = g_get_device_ptr(); double x0 = 0.0; double y0 = 0.0; double x1 = (double)psdev->getBoundingBox()->getX()/PS_POINTS_PER_INCH*CM_PER_INCH; double y1 = (double)psdev->getBoundingBox()->getY()/PS_POINTS_PER_INCH*CM_PER_INCH; for (vector::size_type i = 0; i < m_TeXObjects.size(); i++) { TeXObject* obj = m_TeXObjects[i]; TeXHashObject* hobj = obj->getObject(); if (hobj != NULL && hobj->hasDimensions()) { double cos_alpha = cos(obj->getAngle()*GLE_PI/180.0); double sin_alpha = sin(obj->getAngle()*GLE_PI/180.0); double ox0 = obj->getDXp(); double oy0 = obj->getDYp(); double ox1 = ox0 + hobj->getWidth()*cos_alpha; double oy1 = oy0 + hobj->getWidth()*sin_alpha; double ox2 = ox1 - hobj->getHeight()*sin_alpha; double oy2 = oy1 + hobj->getHeight()*cos_alpha; double ox3 = ox0 - hobj->getHeight()*sin_alpha; double oy3 = oy0 + hobj->getHeight()*cos_alpha; if (ox0 < x0 || ox0 > x1 || oy0 < y0 || oy0 > y1 || ox1 < x0 || ox1 > x1 || oy1 < y0 || oy1 > y1 || ox2 < x0 || ox2 > x1 || oy2 < y0 || oy2 > y1 || ox3 < x0 || ox3 > x1 || oy3 < y0 || oy3 > y1) { string error = "TeX object '"; hobj->addFirstLine(&error); error += "' outside bounding box"; g_message(error); } } } } int TeXInterface::createObj(const char* str, double hei) { /* Load hash */ tryLoadHash(); /* Create object given string */ string obj_str = str; /* replace \'' by \" so that umlauts work in LaTeX expressions */ str_replace_all(obj_str, "\\''", "\\\""); scaleObject(obj_str, hei); int result = getHashObjectIndex(obj_str); m_TeXHash[result]->setUsed(true); return result; } void TeXInterface::addHashObject(TeXHashObject* obj) { m_TeXHash.push_back(obj); } int TeXInterface::getHashObjectIndex(const string& line) { for (vector::size_type i = 0; i < m_TeXHash.size(); i++) { if (m_TeXHash[i]->getLine() == line) { return i; } } TeXHashObject* hobj = new TeXHashObject(line); addHashObject(hobj); m_HashModified = 1; return m_TeXHash.size()-1; } TeXHashObject* TeXInterface::getHashObject(const string& line) { return m_TeXHash[getHashObjectIndex(line)]; } TeXHashObject* TeXInterface::getHashObject(int idx) { return m_TeXHash.getHashObject(idx); } void TeXInterface::initialize(GLEFileLocation* dotfile, GLEFileLocation* oname) { //cout << "TeXInterface::initialize('" << dotfile << "', '" << oname << "')" << endl; /* cleanUp */ cleanUpObjects(); cleanUpHash(); /* Initialize flags */ m_HashLoaded = TEX_INTERFACE_HASH_LOADED_NONE; m_HashModified = 0; updateNames(dotfile, oname); /* Get font sizes */ initTeXFontScales(); } void TeXInterface::updateNames(GLEFileLocation* dotfile, GLEFileLocation* oname) { m_MainOutputName.copy(oname); /* File name without extension */ if (dotfile->getFullPath() == "") { m_HashName = ""; m_DotDir = GLETempDirName(); m_DotDir += ".gle"; } else { string infile, file; GetMainNameExt(dotfile->getFullPath(), ".gle", infile); SplitFileName(infile, m_DotDir, file); m_DotDir += ".gle"; m_HashName = m_DotDir; m_HashName += DIR_SEP; m_HashName += file; m_HashName += DIR_SEP; m_HashName += file; m_HashName += "_tex"; } } void TeXInterface::updateOutName(GLEFileLocation* oname) { m_MainOutputName.copy(oname); } void TeXInterface::reset() { resetPreamble(); cleanUpObjects(); setScaleMode(TEX_SCALE_MODE_FIXED); m_HashModified = 0; /* Remove unused objects */ for (int i = m_TeXHash.size()-1; i >= 0; i--) { TeXHashObject* hobj = m_TeXHash[i]; if (!hobj->isUsed()) { delete hobj; m_TeXHash.erase(m_TeXHash.begin() + i); } } } void TeXInterface::resetPreamble() { m_Preambles.selectDefault(); } void TeXInterface::cleanUpObjects() { for (vector::size_type i = 0; i < m_TeXObjects.size(); i++) { delete m_TeXObjects[i]; } m_TeXObjects.clear(); } void TeXInterface::cleanUpHash() { m_TeXHash.cleanUp(); } void TeXInterface::tryLoadHash() { if (m_HashLoaded != TEX_INTERFACE_HASH_LOADED_FULL && m_HashName != "") { if (m_HashLoaded != TEX_INTERFACE_HASH_LOADED_PARTIAL) { loadTeXLines(); } m_TeXHash.loadTeXPS(m_HashName); m_HashModified = 0; m_HashLoaded = TEX_INTERFACE_HASH_LOADED_FULL; } } void TeXInterface::loadTeXLines() { string strfile = m_HashName; strfile += ".texlines"; ifstream str_file(strfile.c_str()); if (str_file.is_open()) { string line; while (!str_file.eof()) { int len = ReadFileLine(str_file, line); if (len != 0) { if (strncmp("tex", line.c_str(), 3) == 0) { line.erase(0, 4); TeXHashObject* hobj = new TeXHashObject(line); addHashObject(hobj); } else { line.erase(0, 9); string object_string; int nblines = atoi(line.c_str()); for (int i = 0; i < nblines; i++) { ReadFileLine(str_file, line); if (object_string.length() == 0) { object_string = line; } else { object_string += "\7"; object_string += line; } } TeXHashObject* hobj = new TeXHashObject(object_string); addHashObject(hobj); } } } str_file.close(); } } void TeXInterface::writeInc(ostream& out, const char* prefix) { /* First output include for GLE .eps/.pdf file */ out << "\\setlength{\\unitlength}{1cm}%" << endl; // out << "\\begingroup\\makeatletter\\ifx\\SetFigFont\\undefined%" << endl; // out << "\\gdef\\SetFigFont#1#2#3#4#5{%" << endl; // out << " \\reset@font\\fontsize{#1}{#2pt}%" << endl; // out << " \\fontfamily{#3}\\fontseries{#4}\\fontshape{#5}%" << endl; // out << " \\selectfont}%" << endl; // out << "\\fi\\endgroup%" << endl; /* Get page size */ double width, height, pic_a, pic_b; if (g_is_fullpage()) { g_get_pagesize(&width, &height); pic_a = width; pic_b = height; } else { g_get_usersize(&width, &height); pic_a = width + 0.075; pic_b = height + 0.075; } double pic_c = 0; double pic_d = 0; /* Output picture commands */ out << "\\noindent{}\\begin{picture}(" << pic_a << "," << pic_b << ")"; out << "(" << pic_c << "," << pic_d << ")%" << endl; out << "\\put(0,0)"; // double offs = -CM_PER_INCH/72; // out << "\\put(" << offs << "," << offs << ")"; string incname; SplitFileNameNoDir(m_MainOutputName.getFullPath(), incname); FileNameDotToUnderscore(incname); /* includegraphics does not handle "." in filenames */ out << "{\\includegraphics{" << prefix << incname << "_inc}}" << endl; for (vector::size_type i = 0; i < m_TeXObjects.size(); i++) { TeXObject* obj = m_TeXObjects[i]; obj->output(out); } out << "\\end{picture}%" << endl; } void TeXInterface::createInc(const string& prefix) { // .inc files can also be created if there are no TeX objects // this is for (a.o. Makefile) consistency - see bug #2165591 string inc_name = m_MainOutputName.getFullPath(); inc_name += ".inc"; ofstream inc_file(inc_name.c_str()); writeInc(inc_file, prefix.c_str()); inc_file.close(); } void TeXInterface::createPreamble(ostream& tex_file) { ConfigSection* tex = g_Config.getSection(GLE_CONFIG_TEX); CmdLineArgSet* texsys = (CmdLineArgSet*)tex->getOptionValue(GLE_TEX_SYSTEM); tex_file << getDocumentClass() << endl; if (texsys->hasValue(GLE_TEX_SYSTEM_VTEX)) { tex_file << "\\usepackage{graphics}" << endl; } else { tex_file << "\\usepackage[dvips]{graphics}" << endl; } for (int i = 0; i < getNbPreamble(); i++) { tex_file << getPreamble(i) << endl; } } void TeXInterface::createTeX(bool usegeom) { if (m_TeXObjects.size() != 0) { int m_type; double m_width, m_height, pic_a, pic_b; if (g_is_fullpage()) { g_get_pagesize(&m_width, &m_height, &m_type); pic_a = m_width; pic_b = m_height; } else { g_get_usersize(&m_width, &m_height); pic_a = m_width + 0.075; pic_b = m_height + 0.075; m_type = GLE_PAPER_UNKNOWN; } string tex_name = m_MainOutputName.getFullPath(); tex_name += ".tex"; ofstream tex_file(tex_name.c_str()); createPreamble(tex_file); tex_file << "\\usepackage{color}" << endl; if (usegeom) { tex_file << "\\usepackage{geometry}" << endl; tex_file << "\\geometry{%" << endl; tex_file << " paperwidth=" << pic_a << "cm," << endl; tex_file << " paperheight=" << pic_b << "cm," << endl; tex_file << " left=0in," << endl; tex_file << " right=0in," << endl; tex_file << " top=0in," << endl; tex_file << " bottom=0in" << endl; tex_file << "}" << endl; } tex_file << "\\pagestyle{empty}" << endl; tex_file << "\\begin{document}" << endl; writeInc(tex_file, ""); tex_file << "\\end{document}" << endl; tex_file.close(); } } int TeXInterface::tryCreateHash() { if (m_HashModified != 0 && m_TeXObjects.size() != 0) { createHiddenDir(); saveTeXLines(); m_TeXHash.saveTeXPS(m_HashName, this); if (!createTeXPS()) { /* error! */ return 2; } m_HashLoaded = TEX_INTERFACE_HASH_LOADED_PARTIAL; return 1; } else { return 0; } } void TeXInterface::removeDotFiles() { string dir; GetDirName(m_HashName, dir); DeleteFileWithExt(m_HashName, ".aux"); DeleteFileWithExt(m_HashName, ".log"); DeleteFileWithExt(m_HashName, ".tex"); DeleteFileWithExt(m_HashName, ".dvi"); DeleteFileWithExt(m_HashName, ".ps"); DeleteFileWithExt(m_HashName, ".texlines"); TryDeleteDir(dir); } void TeXInterface::createHiddenDir() { string dir; GetDirName(m_HashName, dir); EnsureMkDir(dir); } void TeXInterface::saveTeXLines() { string strfile = m_HashName; strfile += ".texlines"; ofstream str_file(strfile.c_str()); for (vector::size_type i = 0; i < m_TeXHash.size(); i++) { TeXHashObject* obj = m_TeXHash[i]; if (obj->isUsed()) obj->outputLog(str_file); } str_file.close(); } bool TeXInterface::createTeXPS() { return createTeXPS(m_HashName); } bool TeXInterface::createTeXPS(const string& filestem) { string dir, file; SplitFileName(filestem, dir, file); if (!run_latex(dir, file)) return false; return run_dvips(filestem, false); } void TeXInterface::initTeXFontScales() { addSize(new TeXSize("tiny")); addSize(new TeXSize("scriptsize")); addSize(new TeXSize("footnotesize")); addSize(new TeXSize("small")); addSize(new TeXSize("normalsize")); addSize(new TeXSize("large")); addSize(new TeXSize("Large")); addSize(new TeXSize("LARGE")); addSize(new TeXSize("huge")); addSize(new TeXSize("Huge")); } void TeXInterface::checkTeXFontSizes() { TeXPreambleInfo* preamble = getCurrentPreamble(); if (preamble->hasFontSizes()) return; /* Create .gle subdirectory */ string dir = m_DotDir; EnsureMkDir(dir); dir += DIR_SEP; dir += "texpreamble"; /* Try to load from file */ m_Preambles.load(dir, this); if (preamble->hasFontSizes()) return; /* Font sizes not found, recompute */ TeXHash tex_hash; for (int i = 0; i < getNbFontSizes(); i++) { string obj_name; TeXSize* size = getFontSize(i); size->createObject(&obj_name); TeXHashObject* obj = new TeXHashObject(obj_name); tex_hash.push_back(obj); obj->setUsed(true); } /* Get sizes of these fonts */ tex_hash.saveTeXPS(dir, this); createTeXPS(dir); tex_hash.loadTeXPS(dir); /* Save this info in the current preamble */ retrieveTeXFontSizes(tex_hash, preamble); /* Save font sizes */ m_Preambles.save(dir); } void TeXInterface::retrieveTeXFontSizes(TeXHash& tex_hash, TeXPreambleInfo* preamble) { for (int i = 0; i < getNbFontSizes(); i++) { string obj_name; TeXSize* size = getFontSize(i); size->createObject(&obj_name); TeXHashObject* obj = tex_hash.getHashObjectOrNULL(obj_name); if (obj == NULL || !obj->hasDimensions()) { cout << ">>> error: did not get size for TeX font!" << endl; } else { // Round values by converting them to a string // -> Results in same rounding as if values are read from .pinfo file! stringstream str_value; double size_value = obj->getHeight() * FONT_HEI_FACTOR; str_value << size_value; str_value >> size_value; preamble->setFontSize(i, size_value); // cout << "font: " << size->getName() << " size: " << size_value << endl; } } preamble->setHasFontSizes(true); } bool TeXPreambleKey::equals(const TeXPreambleKey* key) const { if (getDocumentClass() != key->getDocumentClass()) return false; int nb = getNbPreamble(); if (nb != key->getNbPreamble()) return false; for (int i = 0; i < nb; i++) { if (getPreamble(i) != key->getPreamble(i)) return false; } return true; } void TeXPreambleKey::copyFrom(const TeXPreambleKey* other) { setDocumentClass(other->getDocumentClass()); int nb = other->getNbPreamble(); for (int i = 0; i < nb; i++) { addPreamble(other->getPreamble(i)); } } TeXPreambleInfo::TeXPreambleInfo() { m_HasFontSizes = false; } void TeXPreambleInfo::setFontSize(int font, double size) { while ((int)m_FontSizes.size() <= font) { m_FontSizes.push_back(0.0); } m_FontSizes[font] = size; } double TeXPreambleInfo::getFontSize(int font) { return font >= (int)m_FontSizes.size() ? 1.0 : m_FontSizes[font]; } void TeXPreambleInfo::save(ostream& os) { int nb = getNbPreamble(); os << "preamble: " << nb << endl; os << getDocumentClass() << endl; for (int i = 0; i < nb; i++) { os << getPreamble(i) << endl; } for (int i = 0; i < getNbFonts(); i++) { if (i != 0) os << " "; os << getFontSize(i); } os << endl; } void TeXPreambleInfo::load(istream& is, TeXInterface* iface) { for (int i = 0; i < iface->getNbFontSizes(); i++) { double size = 0.0; is >> size; setFontSize(i, size); } setHasFontSizes(true); } int TeXPreambleInfo::getBestSizeFixed(double hei) { int best_size = -1; double best_dist = GLE_INF; for (int i = 0; i < getNbFonts(); i++) { double dist = fabs(hei - getFontSize(i)); if (dist < best_dist) { best_dist = dist; best_size = i; } } return best_size; } int TeXPreambleInfo::getBestSizeScaled(double hei) { for (int i = 0; i < getNbFonts(); i++) { double size_i = getFontSize(i); if (size_i >= hei) { return i; } } return getNbFonts()-1; } TeXPreambleInfoList::TeXPreambleInfoList() { m_Current = new TeXPreambleInfo(); m_Current->setDocumentClass("\\documentclass{article}"); addPreamble(m_Current); } TeXPreambleInfoList::~TeXPreambleInfoList() { for (int i = 0; i < getNbPreambles(); i++) { delete getPreamble(i); } } TeXPreambleInfo* TeXPreambleInfoList::findOrAddPreamble(const TeXPreambleKey* pre_key) { for (int i = 0; i < getNbPreambles(); i++) { TeXPreambleInfo* info = getPreamble(i); if (pre_key->equals(info)) return info; } TeXPreambleInfo* info = new TeXPreambleInfo(); info->copyFrom(pre_key); addPreamble(info); return info; } void TeXPreambleInfoList::save(const string& filestem) { string file = filestem + ".pinfo"; ofstream pream_file(file.c_str()); for (int i = 0; i < getNbPreambles(); i++) { if (getPreamble(i)->hasFontSizes()) { getPreamble(i)->save(pream_file); } } pream_file.close(); } void TeXPreambleInfoList::load(const string& filestem, TeXInterface* iface) { string file = filestem + ".pinfo"; ifstream pream_file(file.c_str()); if (pream_file.is_open()) { string line; TeXPreambleKey pre_key; while (pream_file.good()) { int len = ReadFileLine(pream_file, line); if (len != 0) { if (strncmp("preamble:", line.c_str(), 9) == 0) { line.erase(0, 10); int nblines = atoi(line.c_str()); ReadFileLine(pream_file, line); pre_key.clear(); pre_key.setDocumentClass(line); for (int i = 0; i < nblines; i++) { ReadFileLine(pream_file, line); pre_key.addPreamble(line); } TeXPreambleInfo* info = findOrAddPreamble(&pre_key); info->load(pream_file, iface); } else { /* error in file format? */ return; } } } } pream_file.close(); } TeXHash::TeXHash() { } TeXHash::~TeXHash() { cleanUp(); } void TeXHash::cleanUp() { for (unsigned int i = 0; i < size(); i++) { delete get(i); } clear(); } TeXHashObject* TeXHash::getHashObject(int idx) { if (idx >= (int)size()) return NULL; return get(idx); } TeXHashObject* TeXHash::getHashObjectOrNULL(const string& line) { for (vector::size_type i = 0; i < size(); i++) { if (get(i)->getLine() == line) { return get(i); } } return NULL; } void TeXHash::saveTeXPS(const string& filestem, TeXInterface* iface) { string tex = filestem; tex += ".tex"; ofstream hash_file(tex.c_str()); /* Output preamble */ iface->createPreamble(hash_file); hash_file << "\\pagestyle{empty}" << endl; hash_file << "\\begin{document}" << endl; /* First object is for calibrating */ hash_file << "\\newpage" << endl; hash_file << "\\noindent{}\\rule{1cm}{0.025cm}\\framebox{\\rule{1cm}{1cm}}" << endl << endl; /* Output other objects */ for (vector::size_type i = 0; i < size(); i++) { TeXHashObject* obj = get(i); if (obj->isUsed()) obj->outputMeasure(hash_file); } hash_file << "\\end{document}" << endl; hash_file.close(); } void TeXHash::loadTeXPS(const string& filestem) { int objindex = -1; double adjWidth = 0.0, adjHeight = 0.0, adjBaseline = 0.0; string ps_name = filestem; ps_name += ".ps"; StreamTokenizerMax tokens(ps_name,' ', 50); while (tokens.hasMoreTokens()) { const char* token = tokens.nextToken(); if (str_i_equals(token, "%%PAGE:")) { int found = 0; FourDoubleList list; double unitsPerCm = 0.0, width = 0.0, height = 0.0, baseline = 0.0, adjustY = 0.0; while (found < 3 && tokens.hasMoreTokens()) { token = tokens.nextToken(); if (str_i_equals(token, "v")) { double d2 = list.get(1); double d3 = list.get(2); double d4 = list.get(3); switch (found) { case 0: /* Units/cm and baseline */ unitsPerCm = d3; adjustY = d2; break; case 1: /* Width */ width = d3; break; case 2: /* Height and baseline */ height = d4; baseline = d2-adjustY; break; } // cout << "v = " << d1 << " " << d2 << " " << d3 << " " << d4 << endl; found++; } else { char* pos; double value = strtod(token, &pos); list.add(value); } } if (found == 3 && unitsPerCm != 0.0) { width /= unitsPerCm; height /= unitsPerCm; baseline /= unitsPerCm; if (objindex == -1) { /* Reference object is 1cm x 1cm square, no baseline */ adjWidth = width-1.0; adjHeight = height-1.0; adjBaseline = baseline; } else { width -= adjWidth; height -= adjHeight; baseline -= adjBaseline; TeXHashObject* hobj = getHashObject(objindex); if (hobj != NULL) { // cout << width << "x" << height << " + " << baseline << " " << hobj->getLine() << endl; hobj->setDimension(width, height, baseline); } } // cout << "width = " << width << " height = " << height << endl; } objindex++; } } tokens.close(); } TeXSize::TeXSize(const char* name) { m_Name = name; } void TeXSize::createObject(string* name) { *name = "{\\"; *name += getName(); *name += " H}"; } TeXObject::TeXObject() { m_Xp = 0.0; m_Yp = 0.0; m_DXp = 0.0; m_DYp = 0.0; m_Angle = 0.0; m_Object = NULL; } void TeXObject::output(ostream& os) { if (!hasObject()) { return; } int closeb = 1; double angle = m_Angle; double pic_x = m_DXp; double pic_y = m_DYp; os << "\\put(" << pic_x << "," << pic_y << "){"; if (angle != 0.0) { os << "\\rotatebox{" << angle << "}{"; closeb++; } os << "\\makebox(0,0)[lb]{"; if (!isBlack()) { GLERC color(getColor()); os << "\\color[rgb]{" << color->getRed() << "," << color->getGreen() << "," << color->getBlue() << "}"; } getObject()->outputLines(os); for (int i = 0; i < closeb; i++) { os << "}"; } os << "}" << endl; } void TeXObject::getDimensions(double* x1, double *y1, double *x2, double *y2) { *x1 = m_Xp; *y1 = m_Yp; *x2 = m_Xp + getWidth(); *y2 = m_Yp + getHeight(); } int TeXObject::isBlack() { GLEColor* color = getColor(); return color == 0 || color->getHexValueGLE() == GLE_COLOR_BLACK; } TeXHashObject::TeXHashObject(const string& line) : m_Line(line) { m_Width = 10.0; m_Height = 10.0; m_Baseline = 0.0; m_HasDimensions = 0; m_Used = 0; m_NbLines = 0; } void TeXHashObject::outputLines(ostream& os) { if (getNbLines() <= 1) { os << getLine(); } else { char_separator sep("\7"); tokenizer tok(getLine(), sep); os << "%" << endl; int cnt = 0; while (tok.has_more()) { if (cnt != 0) os << endl; os << tok.next_token(); cnt++; } } } void TeXHashObject::addFirstLine(string* str) { if (getNbLines() <= 1) { (*str) += getLine(); } else { char_separator sep("\7"); tokenizer tok(getLine(), sep); if (tok.has_more()) (*str) += tok.next_token(); } } void TeXHashObject::outputMeasure(ostream& os) { os << "\\newpage" << endl; os << "\\noindent{}\\rule{1cm}{0.025cm}\\framebox{"; outputLines(os); os << "}" << endl << endl; } void TeXHashObject::outputLog(ostream& os) { if (getNbLines() <= 1) { os << "tex " << getLine() << endl; } else { char_separator sep("\7"); tokenizer tok(getLine(), sep); os << "multitex " << getNbLines() << endl; while (tok.has_more()) { os << tok.next_token() << endl; } } } void TeXHashObject::setDimension(double width, double height, double baseline) { m_Width = width; m_Height = height; m_Baseline = baseline; m_HasDimensions = 1; } TeXObjectInfo::TeXObjectInfo() { m_Status = 0; } void TeXObjectInfo::setJustify(int just) { m_Just = just; m_Status |= TEX_OBJ_INF_HAS_JUSTIFY; } void TeXObjectInfo::setColor(const GLERC& color) { m_Color = color; m_Status |= TEX_OBJ_INF_HAS_COLOR; } void TeXObjectInfo::setPosition(double xp, double yp) { m_Xp = xp; m_Yp = yp; m_Status |= TEX_OBJ_INF_HAS_POSITION; } void TeXObjectInfo::initializeAll() { if ((m_Status & TEX_OBJ_INF_HAS_POSITION) == 0) { g_get_xy(&m_Xp, &m_Yp); } if ((m_Status & TEX_OBJ_INF_HAS_JUSTIFY) == 0) { g_get_just(&m_Just); } if ((m_Status & TEX_OBJ_INF_HAS_COLOR) == 0) { m_Color = g_get_color(); } } bool read_eps_and_adjust_bounding_box(const string& name, GLEScript* script) { int b1 = 0, b2 = 0, b3 = 0, b4 = 0; string fileName(name + ".eps"); vector lines; if (!GLEReadFile(fileName, &lines)) { return false; } unsigned int pos = 0; ostringstream out; while (pos < lines.size()) { string line(lines[pos++]); if (g_parse_ps_boundingbox(line, &b1, &b2, &b3, &b4)) { time_t t; t = time(0); GLEPoint bb(script->getBoundingBox()); // Make sure to use proper Adobe DSC comments // Windows Explorer can show these in the document properties of a PDF created by GLE string vers_nosnap = g_get_version_nosnapshot(); out << "%%Creator: GLE " << vers_nosnap << " " << endl; out << "%%CreationDate: " << ctime(&t); out << "%%Title: " << script->getLocation()->getName() << endl; int b3New = (int)ceil(b1 + bb.getX() + 1e-6); int b4New = (int)ceil(b2 + bb.getY() + 1e-6); out << "%%BoundingBox: " << b1 << " " << b2 << " " << b3New << " " << b4New << endl; script->setBoundingBoxOrigin(b1, b2); script->setBoundingBox(b3New - b1 + 1, b4New - b2 + 1); } else if (str_starts_with_trim(line, "%%HiResBoundingBox") != -1 || str_starts_with_trim(line, "%%Creator") != -1 || str_starts_with_trim(line, "%%CreationDate") != -1 || str_starts_with_trim(line, "%%Title") != -1) { // Forget about these } else if (str_starts_with_trim(line, "%%EndComments") != -1) { out << line << endl; break; } else { out << line << endl; } } while (pos < lines.size()) { string line(lines[pos++]); out << line << endl; } string* buffer = script->getRecordedBytesBuffer(GLE_DEVICE_EPS); *buffer = out.str(); return true; } bool create_bitmap_file_ghostscript(GLEFileLocation* fname, int device, int dpi, int options, GLEScript* script) { ostringstream gsargs; gsargs << "-q -DNOPLATFONTS -dTextAlphaBits=4 -dGraphicsAlphaBits=4 -dBATCH -dNOPAUSE -r"; gsargs << dpi; string* bytesPDF = script->getRecordedBytesBuffer(GLE_DEVICE_PDF); if (bytesPDF->empty()) { GLEPoint bb(script->getBoundingBox()); int img_wd = GLEBBoxToPixels(dpi, bb.getX()); int img_hi = GLEBBoxToPixels(dpi, bb.getY()); gsargs << " -g" << img_wd << "x" << img_hi; } string gs_opts = g_CmdLine.getOptionString(GLE_OPT_GSOPTIONS); if (gs_opts != "") { str_replace_all(gs_opts, "\\", ""); gsargs << " " << gs_opts; } bool bw = (options & GLE_OUTPUT_OPTION_GRAYSCALE) != 0; bool transp = (options & GLE_OUTPUT_OPTION_TRANSPARENT) != 0; gsargs << " -sDEVICE="; switch (device) { case GLE_DEVICE_PNG: if (bw) { gsargs << "pnggray"; } else { gsargs << (transp ? "pngalpha" : "png16m"); } break; case GLE_DEVICE_JPEG: gsargs << (bw ? "jpeggray" : "jpeg"); break; } string outputfile; if (fname->isStdout()) { gsargs << " -sOutputFile=-"; } else { outputfile = fname->getFullPath(); switch (device) { case GLE_DEVICE_PNG: outputfile += ".png"; break; case GLE_DEVICE_JPEG: outputfile += ".jpg"; break; } gsargs << " -sOutputFile=\"" << outputfile << "\""; } gsargs << " -"; string* bytesEPS = script->getRecordedBytesBuffer(GLE_DEVICE_EPS); if (!bytesPDF->empty()) { stringstream pdfCode; pdfCode.write(bytesPDF->data(), bytesPDF->size()); return run_ghostscript(gsargs.str(), outputfile, !fname->isStdout(), &pdfCode); } else { stringstream postscript; GLEPoint origin(script->getBoundingBoxOrigin()); postscript << (-origin.getX()) << " " << (-origin.getY()) << " translate" << endl; postscript.write(bytesEPS->data(), bytesEPS->size()); return run_ghostscript(gsargs.str(), outputfile, !fname->isStdout(), &postscript); } } bool create_bitmap_file(GLEFileLocation* fname, int device, int dpi, int options, GLEScript* script) { #ifdef HAVE_POPPLER bool supportsBitmapType = g_bitmap_supports_type(g_device_to_bitmap_type(device)); string* bytesPDF = script->getRecordedBytesBuffer(GLE_DEVICE_PDF); if (supportsBitmapType && !bytesPDF->empty()) { std::string myFName = fname->getFullPath(); myFName += g_device_to_ext(device); if (g_verbosity() >= 5) { g_message(std::string("[Poppler PDF conversion: ") + myFName + "]"); } gle_convert_pdf_to_image_file((char*)bytesPDF->c_str(), (int)bytesPDF->size(), dpi, device, options, myFName.c_str()); return true; } #endif // HAVE_POPPLER return create_bitmap_file_ghostscript(fname, device, dpi, options, script); } bool create_pdf_file_ghostscript(GLEFileLocation* fname, int dpi, GLEScript* script) { ostringstream gsargs; gsargs << "-q"; int compr_mode = g_get_pdf_image_format(); switch (compr_mode) { case PDF_IMG_COMPR_AUTO: gsargs << " -dAutoFilterColorImages=true"; gsargs << " -dAutoFilterGrayImages=true"; gsargs << " -dEncodeColorImages=true"; gsargs << " -dEncodeGrayImages=true"; gsargs << " -dEncodeMonoImages=false"; break; case PDF_IMG_COMPR_ZIP: gsargs << " -dAutoFilterColorImages=false"; gsargs << " -dAutoFilterGrayImages=false"; gsargs << " -dEncodeColorImages=true"; gsargs << " -dEncodeGrayImages=true"; gsargs << " -dEncodeMonoImages=true"; gsargs << " -dColorImageFilter=/FlateEncode"; gsargs << " -dGrayImageFilter=/FlateEncode"; gsargs << " -dMonoImageFilter=/FlateEncode"; break; case PDF_IMG_COMPR_JPEG: gsargs << " -dAutoFilterColorImages=false"; gsargs << " -dAutoFilterGrayImages=false"; gsargs << " -dEncodeColorImages=true"; gsargs << " -dEncodeGrayImages=true"; gsargs << " -dEncodeMonoImages=true"; gsargs << " -dColorImageFilter=/DCTEncode"; gsargs << " -dGrayImageFilter=/DCTEncode"; gsargs << " -dMonoImageFilter=/FlateEncode"; break; case PDF_IMG_COMPR_PS: gsargs << " -dAutoFilterColorImages=false"; gsargs << " -dAutoFilterGrayImages=false"; gsargs << " -dEncodeColorImages=false"; gsargs << " -dEncodeGrayImages=false"; gsargs << " -dEncodeMonoImages=false"; break; } gsargs << " -dBATCH -dNOPAUSE -r" << dpi; GLEPoint bb(script->getBoundingBox()); GLEPoint origin(script->getBoundingBoxOrigin()); int img_wd = GLEBBoxToPixels(dpi, bb.getX()); int img_hi = GLEBBoxToPixels(dpi, bb.getY()); gsargs << " -g" << img_wd << "x" << img_hi; gsargs << " -sDEVICE=pdfwrite"; gsargs << " -dPDFSETTINGS=/prepress -dMaxSubsetPct=100 -dSubsetFonts=true"; gsargs << " -dEmbedAllFonts=true -dAutoRotatePages=/None"; string outputfile; if (fname->isStdout()) { gsargs << " -sOutputFile=-"; } else { outputfile = fname->getFullPath() + ".pdf"; gsargs << " -sOutputFile=\"" << outputfile << "\""; } gsargs << " -"; stringstream postscript; string* bytes = script->getRecordedBytesBuffer(GLE_DEVICE_EPS); postscript << (-origin.getX()) << " " << (-origin.getY()) << " translate" << endl; postscript.write(bytes->data(), bytes->size()); return run_ghostscript(gsargs.str(), outputfile, !fname->isStdout(), &postscript); } void report_latex_errors_parse_error(istream& strm, string* result) { string line; stringstream err; int state = 0; while (state != 2 && !strm.eof()) { getline(strm, line); str_trim_right(line); if (state == 1 && line == "") { state = 2; } else if (state == 0 && line.length() > 2 && line[0] == 'l' && line[1] == '.') { state = 1; err << line << endl; } else if (line != "") { err << line << endl; } } *result = err.str(); } bool report_latex_errors(istream& strm, const string& cmdline) { bool has_error = false; bool has_cmdline = false; if (g_verbosity() >= 5) { has_cmdline = true; } string line, next, prev; while (!strm.eof()) { getline(strm, line); if (line.length() > 1 && line[0] == '!') { if (!has_cmdline) { ostringstream msg; msg << "Error running: " << cmdline; g_message(msg.str()); has_cmdline = true; } stringstream err; err << ">> LaTeX error:" << endl; err << line << endl; report_latex_errors_parse_error(strm, &next); if (!(str_i_equals(line, "! Emergency stop.") && str_i_equals(next, prev))) { err << next; g_message(err.str()); inc_nb_errors(); } prev = next; has_error = true; } } return has_error; } bool post_run_latex(bool result_ok, stringstream& output, const string& cmdline) { if (g_verbosity() >= 10) { g_message(output.str()); return result_ok; } else { if (result_ok) { return !report_latex_errors(output, cmdline); } else { bool has_err = report_latex_errors(output, cmdline); if (!has_err) { ostringstream msg; msg << "Error running: " << cmdline << endl; msg << output.str(); g_message(msg.str()); } return false; } } } bool create_pdf_file_pdflatex(const string& fname, GLEScript* script) { string file, dir; SplitFileName(fname, dir, file); ConfigSection* tools = g_Config.getSection(GLE_CONFIG_TOOLS); string cmdline(get_tool_path(GLE_TOOL_PDFTEX_CMD, tools)); str_try_add_quote(cmdline); const string pdftex_opts(tools->getOptionString(GLE_TOOL_PDFTEX_OPTIONS)); if (!pdftex_opts.empty()) { cmdline += " "; cmdline += pdftex_opts; } cmdline += string(" \"") + file + ".tex\""; string outfile = file + ".pdf"; if (g_verbosity() >= 5) { ostringstream msg; msg << "[Running: " << cmdline << "]"; g_message(msg.str()); } stringstream output; TryDeleteFile(outfile); int result = GLESystem(cmdline, true, true, NULL, &output); bool result_ok = (result == GLE_SYSTEM_OK) && GLEFileExists(outfile); post_run_latex(result_ok, output, cmdline); DeleteFileWithExt(fname, ".aux"); DeleteFileWithExt(fname, ".log"); if (result_ok) { std::vector pdfData; if (GLEReadFileBinary(outfile, &pdfData) && !pdfData.empty()) { string* buffer = script->getRecordedBytesBuffer(GLE_DEVICE_PDF); *buffer = std::string(&pdfData[0], pdfData.size()); } } return result_ok; } bool run_latex(const string& dir, const string& file) { string crdir; if (dir != "") { GLEGetCrDir(&crdir); if (!GLEChDir(dir)) { gprint("Can't find directory: {%s}", dir.c_str()); return false; } } ConfigSection* tools = g_Config.getSection(GLE_CONFIG_TOOLS); string cmdline(get_tool_path(GLE_TOOL_LATEX_CMD, tools)); str_try_add_quote(cmdline); const string latex_opts(tools->getOptionString(GLE_TOOL_LATEX_OPTIONS)); if (!latex_opts.empty()) { cmdline += " "; cmdline += latex_opts; } cmdline += string(" \"") + file + ".tex\""; string outfile = file + ".dvi"; if (g_verbosity() >= 5) { ostringstream msg; msg << "[Running: " << cmdline << "]"; g_message(msg.str()); } stringstream output; TryDeleteFile(outfile); int result = GLESystem(cmdline, true, true, NULL, &output); bool result_ok = (result == GLE_SYSTEM_OK) && GLEFileExists(outfile); result_ok = post_run_latex(result_ok, output, cmdline); if (crdir.length() != 0) GLEChDir(crdir); return result_ok; } bool create_eps_file_latex_dvips(const string& fname, GLEScript* script) { string file, dir; ConfigSection* tex = g_Config.getSection(GLE_CONFIG_TEX); CmdLineArgSet* texsys = (CmdLineArgSet*)tex->getOptionValue(GLE_TEX_SYSTEM); SplitFileName(fname, dir, file); if (!run_latex(dir, file)) return false; if (!run_dvips(fname, true)) return false; bool result = read_eps_and_adjust_bounding_box(fname, script); DeleteFileWithExt(fname, ".aux"); if (texsys->hasValue(GLE_TEX_SYSTEM_VTEX)) { DeleteFileWithExt(fname, ".ps"); } else { DeleteFileWithExt(fname, ".dvi"); } DeleteFileWithExt(fname, ".log"); return result; } bool create_ps_file_latex_dvips(const string& fname) { string file, dir; ConfigSection* tex = g_Config.getSection(GLE_CONFIG_TEX); CmdLineArgSet* texsys = (CmdLineArgSet*)tex->getOptionValue(GLE_TEX_SYSTEM); SplitFileName(fname, dir, file); if (!run_latex(dir, file)) return false; if (!run_dvips(fname, false)) return false; DeleteFileWithExt(fname, ".aux"); if (!texsys->hasValue(GLE_TEX_SYSTEM_VTEX)) { DeleteFileWithExt(fname, ".dvi"); } DeleteFileWithExt(fname, ".log"); return true; } void post_run_process(bool result_ok, const char* procname, const string& cmdline, const string& output) { if (!result_ok || g_verbosity() >= 5) { ostringstream msg; if (!result_ok) { if (procname != NULL) { msg << "Error running " << procname << ":" << endl; if (g_verbosity() < 5) { // If verbosity higher, then we already printed this msg << "Running: " << cmdline << endl; } } else { msg << "Error running: " << cmdline << endl; } } msg << output; g_message(msg.str()); } } bool run_ghostscript(const string& args, const string& outfile, bool redirout, istream* is) { ConfigSection* tools = g_Config.getSection(GLE_CONFIG_TOOLS); string cmdline(get_tool_path(GLE_TOOL_GHOSTSCRIPT_CMD, tools)); str_try_add_quote(cmdline); const string gs_opts(tools->getOptionString(GLE_TOOL_GHOSTSCRIPT_OPTIONS)); if (!gs_opts.empty()) { cmdline += " "; cmdline += gs_opts; } cmdline += " "; cmdline += args; if (g_verbosity() >= 5) { ostringstream msg; msg << "[Running: " << cmdline << "]"; g_message(msg.str()); } ostringstream output; bool outfile_ok = true; int result = GLE_SYSTEM_OK; if (outfile != "" && IsAbsPath(outfile)) { // Checking if the output file is present is the best way to double check that Ghostscript worked TryDeleteFile(outfile); result = GLESystem(cmdline, true, redirout, is, &output); if (!GLEFileExists(outfile)) { outfile_ok = false; } } else { result = GLESystem(cmdline, true, redirout, is, &output); } string output_s = output.str(); bool result_ok = (outfile_ok && result == GLE_SYSTEM_OK && str_i_str(output_s, "error:") == -1); post_run_process(result_ok, "Ghostscript", cmdline, output_s); return (result == GLE_SYSTEM_OK) && outfile_ok; } bool run_dvips(const string& file, bool eps) { ConfigSection* tex = g_Config.getSection(GLE_CONFIG_TEX); CmdLineArgSet* texsys = (CmdLineArgSet*)tex->getOptionValue(GLE_TEX_SYSTEM); if (texsys->hasValue(GLE_TEX_SYSTEM_VTEX)) { // VTeX creates directly PS or PDF, no DVI! // use ghostscript to convert PS to EPS if (eps) { string gsargs; string outputfile(file + ".eps"); gsargs += "-dNOPAUSE -sDEVICE=epswrite -sOutputFile="; gsargs += outputfile; gsargs += " -q -sBATCH \""; gsargs += file; gsargs += ".ps\""; return run_ghostscript(gsargs, outputfile); } else { return true; } } else { // get dvips command ConfigSection* tools = g_Config.getSection(GLE_CONFIG_TOOLS); string dvips_cmd(get_tool_path(GLE_TOOL_DVIPS_CMD, tools)); str_try_add_quote(dvips_cmd); // construct dvips arguments ostringstream dvipsargs; dvipsargs << dvips_cmd; const string dvips_opts(tools->getOptionString(GLE_TOOL_DVIPS_OPTIONS)); if (!dvips_opts.empty()) dvipsargs << " " << dvips_opts; if (eps) dvipsargs << " -E"; const string outfile(file + (eps ? ".eps" : ".ps")); dvipsargs << " -o \"" << outfile << "\" \"" << file << ".dvi\""; string cmdline = dvipsargs.str(); if (g_verbosity() >= 5) { ostringstream msg; msg << "[Running: " << cmdline << "]"; g_message(msg.str()); } ostringstream output; TryDeleteFile(outfile); int result = GLESystem(cmdline, true, true, NULL, &output); bool result_ok = (result == GLE_SYSTEM_OK) && GLEFileExists(outfile); post_run_process(result_ok, NULL, cmdline, output.str()); return result_ok; } } void begin_tex_preamble(int *pln, int *pcode, int *cp) { TeXInterface* iface = TeXInterface::getInstance(); iface->resetPreamble(); // Start with pcode from the next line (*pln)++; begin_init(); TeXPreambleKey pre_key; pre_key.setDocumentClass(iface->getDocumentClass()); while (true) { int st = begin_token(&pcode,cp,pln,srclin,tk,&ntk,outbuff); if (!st) { /* exit loop */ break; } string mline = srclin; str_trim_both(mline); if (str_i_str(mline.c_str(), "\\documentclass") != NULL) { pre_key.setDocumentClass(mline); } else { pre_key.addPreamble(mline); } } TeXPreambleInfo* info = iface->getPreambles()->findOrAddPreamble(&pre_key); iface->getPreambles()->select(info); } void begin_tex(GLERun* run, int *pln, int *pcode, int *cp) { // Get optional params string name; double add = 0.0, x; int ptr = *(pcode + (*cp)); /* add */ if (ptr) { int zzcp = 0, otyp; eval(pcode + (*cp) + ptr, &zzcp, &add, NULL, &otyp); } (*cp) = (*cp) + 1; ptr = *(pcode + (*cp)); /* name */ if (ptr) { int zzcp = 0, otyp; const char* ostr = NULL; eval(pcode + (*cp) + ptr, &zzcp, &x, &ostr, &otyp); name = ostr; } // Start with pcode from the next line (*pln)++; begin_init(); string text_block; int nblines = 0; while (true) { int st = begin_token(&pcode,cp,pln,srclin,tk,&ntk,outbuff); if (!st) { /* exit loop */ break; } string mline = srclin; str_trim_left(mline); if (text_block.length() == 0) { text_block = mline; } else { text_block += "\7"; text_block += mline; } nblines++; } GLERectangle box; decode_utf8_basic(text_block); TeXInterface::getInstance()->draw(text_block.c_str(), nblines, &box); // Name object if (name.length() != 0) { double x1, x2, y1, y2; box.getDimensions(&x1,&y1,&x2,&y2); x1 -= add; x2 += add; y1 -= add; y2 += add; run->name_set(name.c_str(),x1,y1,x2,y2); } } gle-graphics-4.2.4c/src/gle/savgol.cpp0000664000000000000000000001353011405446017016272 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ #include #include #include using namespace std; /* Savitski Golay Smoothing routine */ int do_svg_smooth(double* xold, double* xnew, int size, int poly, int points, int num) { /* xold....the old data xnew....the new data size....the size of the array poly....the type of polynomial to fit to 3,4,5,6,... points...the number of points for smoothing 3,5,7,9,..... num.....the number of times to do the smoothing */ /* test for bad input */ if( xold == NULL || xnew == NULL || size == 0 || size <= points || num <= 0 ) { return 0; } /* for now this is a quadratic or cubic and 7 point smoothing only */ int i; xnew = (double*)calloc(size,sizeof(double)); for (i =0 ;i <= size ;i++ ) { if(i == 0 || i == 1 || i == size-2 || i == size-1) { /* can't do it*/ xnew[i]=xold[i]; } else if(i == 2 || i == size-3) { /* do five point */ xnew[i] = (-3*xold[i-2]+12*xold[i-1]+17*xold[i]+12*xold[i+1]-3*xold[i+2])/35; } else if (i == 3 || i == size - 4) { /* do seven point */ xnew[i] = (-2*xold[i-3]+3*xold[i-2]+6*xold[i-1]+7*xold[i]+6*xold[i+1]+3*xold[i+2]-2*xold[i+3])/21; } else if (i >= 4 && i <= size - 5) { /* do nine point */ xnew[i] = (-21*xold[i-4]+14*xold[i-3]+39*xold[i-2]+54*xold[i-1]+59*xold[i]+54*xold[i+1]+39*xold[i+2]+14*xold[i+3]-21*xold[i+4])/231; } } memcpy(xold,xnew,size*sizeof(double)); free(xnew); return 0; } /* #include #define NRANSI #include "nrutil.h" #define TINY 1.0e-20; void ludcmp(float **a, int n, int *indx, float *d) { int i,imax,j,k; float big,dum,sum,temp; float *vv; vv=vector(1,n); *d=1.0; for (i=1;i<=n;i++) { big=0.0; for (j=1;j<=n;j++) if ((temp=fabs(a[i][j])) > big) big=temp; if (big == 0.0) nrerror("Singular matrix in routine ludcmp"); vv[i]=1.0/big; } for (j=1;j<=n;j++) { for (i=1;i= big) { big=dum; imax=i; } } if (j != imax) { for (k=1;k<=n;k++) { dum=a[imax][k]; a[imax][k]=a[j][k]; a[j][k]=dum; } *d = -(*d); vv[imax]=vv[j]; } indx[j]=imax; if (a[j][j] == 0.0) a[j][j]=TINY; if (j != n) { dum=1.0/(a[j][j]); for (i=j+1;i<=n;i++) a[i][j] *= dum; } } free_vector(vv,1,n); } #undef TINY #undef NRANSI */ gle-graphics-4.2.4c/src/gle/drawit.h0000664000000000000000000000564711405446017015750 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ void CompileGLE(const string& output_file, GLEGlobalSource &glecode, CmdLineObj* cmdline, bool silent) throw(ParserError); void DrawIt(GLEScript* script, GLEFileLocation* outfile, CmdLineObj* cmdline, bool silent = false) throw (ParserError); gle-graphics-4.2.4c/src/gle/gle-poppler.cpp0000664000000000000000000003356011656572360017243 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ #include "all.h" #include "gle-poppler.h" #include "cutils.h" #include "gle-interface/gle-const.h" #include "core.h" void gle_write_ostream(void* closure, char* data, int length) { std::ostream* file = (std::ostream*)closure; file->write(data, length); } struct GLEWriteFuncAndClosure { gle_write_func writeFunc; void* closure; }; #ifdef HAVE_CAIRO #ifdef HAVE_LIBPNG #include void gle_png_write_data_fn(png_structp png_ptr, png_bytep data, png_size_t length) { GLEWriteFuncAndClosure* writeCallback = (GLEWriteFuncAndClosure*)png_get_io_ptr(png_ptr); writeCallback->writeFunc(writeCallback->closure, (char*)data, (int)length); } void gle_png_flush_fn(png_structp /* png_ptr */) { } void gle_write_cairo_surface_png(cairo_surface_t* surface, int options, gle_write_func writeFunc, void* closure) { png_structp png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL); if (!png_ptr) { CUtilsAssertMessage("png_create_write_struct failed"); } png_infop info_ptr = png_create_info_struct(png_ptr); if (!info_ptr) { CUtilsAssertMessage("png_create_info_struct failed"); } if (setjmp(png_jmpbuf(png_ptr))) { CUtilsAssertMessage("png_set_write_fn failed"); } GLEWriteFuncAndClosure writeCallback; writeCallback.writeFunc = writeFunc; writeCallback.closure = closure; png_set_write_fn(png_ptr, (void*)&writeCallback, gle_png_write_data_fn, gle_png_flush_fn); if (setjmp(png_jmpbuf(png_ptr))) { CUtilsAssertMessage("png_set_IHDR failed"); } int width = cairo_image_surface_get_width(surface); int height = cairo_image_surface_get_height(surface); int channels = 3; int color_type = PNG_COLOR_TYPE_RGB; if ((options & GLE_OUTPUT_OPTION_TRANSPARENT) != 0) { color_type = PNG_COLOR_TYPE_RGBA; channels = 4; } bool grayScale = false; if ((options & GLE_OUTPUT_OPTION_GRAYSCALE) != 0) { grayScale = true; if (color_type != PNG_COLOR_TYPE_RGBA) { color_type = PNG_COLOR_TYPE_GRAY; channels = 1; } } png_set_IHDR(png_ptr, info_ptr, width, height, 8, color_type, PNG_INTERLACE_NONE, PNG_COMPRESSION_TYPE_BASE, PNG_FILTER_TYPE_BASE); png_write_info(png_ptr, info_ptr); if (setjmp(png_jmpbuf(png_ptr))) { CUtilsAssertMessage("png_write_image failed"); } int rowBytes = png_get_rowbytes(png_ptr, info_ptr); unsigned char* imageData = cairo_image_surface_get_data(surface); int stride = cairo_image_surface_get_stride(surface); CUtilsAssert(imageData != 0); png_bytep* row_pointers = (png_bytep*)malloc(sizeof(png_bytep) * height); for (int y = 0; y < height; y++) { png_byte* row = (png_byte*)malloc(rowBytes); row_pointers[y] = row; for (int x = 0; x < width; x++) { png_byte* ptr = &(row[x * channels]); unsigned int value = *(unsigned int*)(&imageData[x*4 + y*stride]); if (grayScale == 1) { int blue = value & 0xFF; /* blue */ value >>= 8; int green = value & 0xFF; /* green */ value >>= 8; int red = value & 0xFF; /* red */ double gray = (3.0 * red / 255.0 + 2.0 * green / 255.0 + 1.0 * blue / 255.0) / 6.0 * 255.0; int gray_i = std::min(gle_round_int(gray), 0xFF); if (channels == 1) { *ptr = (png_byte)gray_i; } else { ptr[2] = (png_byte)gray_i; ptr[1] = (png_byte)gray_i; ptr[0] = (png_byte)gray_i; value >>= 8; ptr[3] = value & 0xFF; /* alpha */ } } else { ptr[2] = value & 0xFF; /* blue */ value >>= 8; ptr[1] = value & 0xFF; /* green */ value >>= 8; ptr[0] = value & 0xFF; /* red */ if (channels == 4) { value >>= 8; ptr[3] = value & 0xFF; /* alpha */ } } } } png_write_image(png_ptr, row_pointers); if (setjmp(png_jmpbuf(png_ptr))) { CUtilsAssertMessage("png_write_end failed"); } png_write_end(png_ptr, NULL); for (int y = 0; y < height; y++) { free(row_pointers[y]); } free(row_pointers); } #endif // HAVE_LIBPNG #ifdef HAVE_LIBJPEG extern "C" { #include } #define GLE_JPEG_BUFFER_SIZE 50000 struct gle_jpeg_destination_mgr { struct jpeg_destination_mgr pub; JOCTET* buffer; GLEWriteFuncAndClosure writeCallback; }; void gle_jpeg_init_destination(j_compress_ptr cinfo) { gle_jpeg_destination_mgr* dest = (gle_jpeg_destination_mgr*)cinfo->dest; dest->pub.next_output_byte = dest->buffer; dest->pub.free_in_buffer = GLE_JPEG_BUFFER_SIZE; } void gle_jpeg_term_destination(j_compress_ptr cinfo) { gle_jpeg_destination_mgr* dest = (gle_jpeg_destination_mgr*)cinfo->dest; int size = GLE_JPEG_BUFFER_SIZE - dest->pub.free_in_buffer; dest->writeCallback.writeFunc(dest->writeCallback.closure, (char*)dest->buffer, size); } boolean gle_jpeg_empty_output_buffer(j_compress_ptr cinfo) { gle_jpeg_term_destination(cinfo); gle_jpeg_init_destination(cinfo); return true; } void gle_jpeg_memory_dest(j_compress_ptr cinfo, JOCTET* buffer, GLEWriteFuncAndClosure writeCallback) { if (cinfo->dest == 0) { cinfo->dest = (struct jpeg_destination_mgr*)(*cinfo->mem->alloc_small)((j_common_ptr) cinfo, JPOOL_PERMANENT, sizeof(gle_jpeg_destination_mgr)); } gle_jpeg_destination_mgr* dest = (gle_jpeg_destination_mgr*)cinfo->dest; dest->buffer = buffer; dest->writeCallback = writeCallback; dest->pub.init_destination = gle_jpeg_init_destination; dest->pub.empty_output_buffer = gle_jpeg_empty_output_buffer; dest->pub.term_destination = gle_jpeg_term_destination; } void gle_write_cairo_surface_jpeg(cairo_surface_t* surface, int options, gle_write_func writeFunc, void* closure) { struct jpeg_compress_struct cinfo; struct jpeg_error_mgr jerr; cinfo.err = jpeg_std_error(&jerr); jpeg_create_compress(&cinfo); GLEWriteFuncAndClosure writeCallback; writeCallback.writeFunc = writeFunc; writeCallback.closure = closure; JOCTET buffer[GLE_JPEG_BUFFER_SIZE]; gle_jpeg_memory_dest(&cinfo, buffer, writeCallback); int width = cairo_image_surface_get_width(surface); int height = cairo_image_surface_get_height(surface); cinfo.image_width = width; cinfo.image_height = height; if ((options & GLE_OUTPUT_OPTION_GRAYSCALE) != 0) { cinfo.input_components = 1; cinfo.in_color_space = JCS_GRAYSCALE; } else { cinfo.input_components = 3; cinfo.in_color_space = JCS_RGB; } jpeg_set_defaults(&cinfo); jpeg_start_compress(&cinfo, true); JSAMPROW row = new JSAMPLE[cinfo.input_components * width]; JSAMPROW row_pointer[1]; row_pointer[0] = row; unsigned char* imageData = cairo_image_surface_get_data(surface); int stride = cairo_image_surface_get_stride(surface); CUtilsAssert(imageData != 0); for (int y = 0; y < height; y++) { for (int x = 0; x < width; x++) { JSAMPLE* ptr = &(row[x * cinfo.input_components]); unsigned int value = *(unsigned int*)(&imageData[x*4 + y*stride]); if (cinfo.input_components == 1) { int blue = value & 0xFF; /* blue */ value >>= 8; int green = value & 0xFF; /* green */ value >>= 8; int red = value & 0xFF; /* red */ double gray = (3.0 * red / 255.0 + 2.0 * green / 255.0 + 1.0 * blue / 255.0) / 6.0 * 255.0; int gray_i = std::min(gle_round_int(gray), 0xFF); *ptr = (JSAMPLE)gray_i; } else { ptr[2] = value & 0xFF; /* blue */ value >>= 8; ptr[1] = value & 0xFF; /* green */ value >>= 8; ptr[0] = value & 0xFF; /* red */ } } jpeg_write_scanlines(&cinfo, row_pointer, 1); } delete[] row; jpeg_finish_compress(&cinfo); jpeg_destroy_compress(&cinfo); } #endif // HAVE_LIBJPEG void gle_write_cairo_surface_bitmap(cairo_surface_t* surface, int device, int options, gle_write_func writeFunc, void* closure) { #ifdef HAVE_LIBPNG if (device == GLE_DEVICE_PNG) { gle_write_cairo_surface_png(surface, options, writeFunc, closure); return; } #endif // HAVE_LIBPNG #ifdef HAVE_LIBJPEG if (device == GLE_DEVICE_JPEG) { gle_write_cairo_surface_jpeg(surface, options, writeFunc, closure); return; } #endif // HAVE_LIBJPEG g_throw_parser_error(">> unsupported bitmap output type '", g_device_to_ext(device), "'"); } #ifdef HAVE_POPPLER #include #include void gle_glib_init(int /* argc */, char** /* argv */) { g_type_init(); } void gle_convert_pdf_to_image(char* pdfData, int pdfLength, double resolution, int device, int options, gle_write_func writeFunc, void* closure) { GError* err = 0; PopplerDocument* doc = poppler_document_new_from_data(pdfData, pdfLength, 0, &err); if (doc == 0) { std::ostringstream errMsg; errMsg << ">> error opening PDF: " << err->message; g_object_unref(err); g_throw_parser_error(errMsg.str()); } PopplerPage* page = poppler_document_get_page(doc, 0); if (page == 0) { g_object_unref(doc); g_throw_parser_error(">> error opening PDF: can't read first page"); } double width, height; poppler_page_get_size(page, &width, &height); int i_width = gle_round_int(width / PS_POINTS_PER_INCH * resolution); int i_height = gle_round_int(height / PS_POINTS_PER_INCH * resolution); cairo_format_t format = CAIRO_FORMAT_RGB24; if ((options & GLE_OUTPUT_OPTION_TRANSPARENT) != 0 && device == GLE_DEVICE_PNG) { format = CAIRO_FORMAT_ARGB32; } cairo_surface_t* surface = cairo_image_surface_create(format, i_width, i_height); cairo_t* cr = cairo_create(surface); if (format == CAIRO_FORMAT_RGB24) { cairo_set_source_rgb (cr, 1.0, 1.0, 1.0); cairo_paint(cr); } cairo_scale(cr, resolution / PS_POINTS_PER_INCH, resolution / PS_POINTS_PER_INCH); poppler_page_render(page, cr); gle_write_cairo_surface_bitmap(surface, device, options, writeFunc, closure); cairo_destroy(cr); cairo_surface_destroy(surface); g_object_unref(page); g_object_unref(doc); } void gle_convert_pdf_to_image_file(char* pdfData, int pdfLength, double resolution, int device, int options, const char* fname) { std::ofstream file(fname, ios_base::out | ios_base::binary); if (!file.is_open()) { g_throw_parser_error(">> error creating '", fname, "'"); } gle_convert_pdf_to_image(pdfData, pdfLength, resolution, device, options, gle_write_ostream, static_cast(&file)); file.close(); } #endif // HAVE_POPPLER #endif // HAVE_CAIRO #ifndef HAVE_POPPLER // stubs void gle_glib_init(int /* argc */, char** /* argv */) { } void gle_convert_pdf_to_image(char* /* pdfData */, int /* pdfLength */, double /* resolution */, int /* device */, int /* options */, gle_write_func /* writeFunc */, void* /* closure */) { } #endif // !HAVE_POPPLER gle-graphics-4.2.4c/src/gle/polish.cpp0000664000000000000000000004635511724766201016314 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ char *un_quote(); const char *ns[3] = {"nothing", "number", "string"}; extern int gle_debug; /*---------------------------------------------------------------------------*/ #include "all.h" #include "mem_limits.h" #include "token.h" #include "gle-interface/gle-interface.h" #include "glearray.h" #include "polish.h" #include "pass.h" #include "var.h" #include "sub.h" #include "gprint.h" #include "cutils.h" #include "keyword.h" #include "run.h" /*---------------------------------------------------------------------------*/ /* bin = 10..29, binstr = 30..49, fn= 60...139, userfn=LOCAL_START_INDEX..nnn */ #define stack_bin(i,p) stack_op(pcode,stk,stkp,&nstk,i-10+(last_typ*20),p+curpri) #define stack_fn(i) stack_op(pcode,stk,stkp,&nstk,i+60,10+curpri) #define dbg if ((gle_debug & 4)>0) // #define dbg /*---------------------------------------------------------------------------*/ /* Input is token array, and pointer to current point, output is pcode */ void stack_op(GLEPcode& pcode, int stk[], int stkp[], int *nstk, int i, int p); bool valid_unquoted_string(const string& str); GLEPolish::GLEPolish() : m_lang(), m_tokens(&m_lang, false) { m_vars = NULL; } GLEPolish::~GLEPolish() { } void GLEPolish::initTokenizer() { TokenizerLanguage* lang = m_tokens.get_language(); lang->setSpaceTokens(" \t\r\n"); lang->setLineCommentTokens("!"); lang->setSingleCharTokens(",.:;[]{}()+-*/=<>|^%\\"); lang->setDecimalDot('.'); lang->addSubLanguages(1); lang->addLanguageElem(0, "<="); lang->addLanguageElem(0, ">="); lang->addLanguageElem(0, "<>"); lang->addLanguageElem(0, "**"); m_tokens.select_language(0); } void GLEPolish::get_params(GLEPcode& pcode, int np, int* plist, const string& name) throw(ParserError) { int nb_param = 0; if (!m_tokens.is_next_token(")")) { while (true) { if (nb_param >= np) { char err_str[100]; sprintf(err_str, "': found >= %d, expected %d", nb_param+1, np); throw error(string("too many parameters in call to '")+name+err_str); } int vtype = *(plist + nb_param); polish(pcode, &vtype); int next_token = m_tokens.is_next_token_in(",)"); if (next_token == -1) { throw error(string("expecting ',' or ')' in parameter list of function '")+name+"'"); } nb_param++; if (next_token == ')') break; } } if (nb_param != np) { char err_str[100]; sprintf(err_str, "': found %d, expected %d", nb_param, np); throw error(string("incorrect number of parameters in call to '")+name+err_str); } } void GLEPolish::polish(const char *expr, GLEPcode& pcode, int *rtype) throw(ParserError) { #ifdef DEBUG_POLISH gprint("==== Start of expression {%s} \n",expr); #endif m_tokens.set_string(expr); polish(pcode, rtype); } void GLEPolish::polish(GLEPcode& pcode, int *rtype) throw(ParserError) { GLESub* sub; string uc_token; int idx, ret, np, *plist, term_bracket = false; int curpri = 0; int nstk = 0, stk[50], stkp[50]; /* stack for operators */ int unary = 1; /* binary or unary operation expected */ /* last_typ, 1=number,2=string */ bool isa_string = false; bool not_string = false; if (*rtype==1) not_string = true; if (*rtype>0) term_bracket = true; int last_typ = *rtype; pcode.addInt(PCODE_EXPR); /* Expression follows */ int savelen = pcode.size(); /* Used to set acutal length at end */ pcode.addInt(0); /* Length of expression */ while (true) { string token = m_tokens.try_next_token(); int token_col = m_tokens.token_pos_col(); int token_len = token.length(); char first_char = token_len > 0 ? token[0] : ' '; // cout << "Token: '" << token << "'" << endl; // end of stream, or found ',' or ')' if (token_len == 0 || (token_len == 1 && (first_char == ',' || (first_char == ')' && curpri == 0)))) { if (token_len != 0) { m_tokens.pushback_token(); } *rtype = last_typ; dbg gprint("Found END OF EXPRESSION \n"); if (curpri != 0) { throw error("unexpected end of expression, missing closing ')'"); } /* Pop everything off the stack */ for (int i = nstk; i > 0; i--) { dbg gprint("Adding left over operators I = %d op=%d \n",i,stk[i]); pcode.addInt(stk[i]); } if (unary == 1) { throw error("constant, function, or unary operator expected"); } pcode.setInt(savelen, pcode.size() - savelen - 1); #ifdef DEBUG_POLISH pcode.show(savelen); #endif return; } dbg gprint("First word token via (1=unary %d) cts {%s}\n ", unary, token.c_str()); switch (unary) { case 1: /* a unary operator, or function, or number or variable */ if (is_float(token)) { dbg gprint("Found number {%s}\n",token.c_str()); double value = atof(token.c_str()); pcode.addDouble(value); if (last_typ == 2) { throw error(token_col, "expecting string, but found number"); } last_typ = 1; unary = 2; break; } str_to_uppercase(token, uc_token); /* NOT a number, is it a built in function? */ find_un((char*)uc_token.c_str(), &idx, &ret, &np, &plist); /* 1,2 = +,- */ if (idx > 3 && m_tokens.is_next_token("(")) { // // it is a built in function // dbg gprint("Found built in function \n"); get_params(pcode, np, plist, uc_token); if (last_typ == (3-ret)) { throw error(token_col, string("illegal function return type: ")+ns[ret]); } last_typ = ret; pcode.addFunction(idx+60); unary = 2; break; } else if (idx > 0 && idx <= 3) { stack_fn(idx); unary = 1; break; } /* Is it a user-defined function, identical code too above. */ sub = sub_find((char*)uc_token.c_str()); if (sub != NULL && m_tokens.is_next_token("(")) { // // it is a user defined function // // printf("User cts=%s idx=%d ret=%d np=%d plist=%d\n",cts,idx,ret,np,plist); dbg gprint("Found user function \n"); get_params(pcode, sub->getNbParam(), sub->getParamTypes(), uc_token); if (ret > 0 && ret < 3) last_typ = ret; pcode.addFunction(sub->getIndex()+LOCAL_START_INDEX); unary = 2; break; } /* Is it a 'known' variable */ int v; var_find((char*)uc_token.c_str(), &v, &ret); if (v >= 0) { // cout << "found var: '" << uc_token << "' -> " << v << endl; last_typ = ret; if (ret == 2) pcode.addStrVar(v); else pcode.addVar(v); unary = 2; if (m_vars != NULL && m_vars->try_get(uc_token) == -1) { /* Add it to list of vars */ m_vars->add_item(uc_token, v); } break; } /* Is it a string */ if (first_char == '"' || first_char == '\'') { dbg gprint("Found string \n"); last_typ = 2; string str_no_quote = token; str_remove_quote(str_no_quote); pcode.addString(str_no_quote); unary = 2; break; } if (first_char == '(' && token_len == 1) { curpri = curpri + 100; break; } if (first_char == ')' && token_len == 1) { throw error("constant, function, or unary operator expected"); } if (m_tokens.is_next_token("(")) { throw error(token_col, string("call to undefined function '"+token+"'")); } /* must be unquoted string, unless a binary operator was found, in which case it is an undelcared variable */ if (not_string || str_var(token)) { /* name that includes '$' is also assumed to be a variable */ dbg gprint("Found un-initialized variable {%s} /n",token.c_str()); if (!var_valid_name(uc_token)) { throw error(token_col, "illegal variable name '"+uc_token+"'"); } var_findadd((char*)uc_token.c_str(), &v, &ret); last_typ = ret; if (ret == 2) pcode.addStrVar(v); else pcode.addVar(v); not_string = true; unary = 2; if (m_vars != NULL && m_vars->try_get(uc_token) == -1) { /* Add it to list of vars */ m_vars->add_item(uc_token, v); } break; } last_typ = 2; dbg printf("Unquoted string (%s) \n",token.c_str()); pcode.addString(token); if (!valid_unquoted_string(token)) { throw error(token_col, "invalid unquoted string '"+token+"'"); } isa_string = true; unary = 2; break; case 2: /* a binary operator, or space, or end of line */ /* MIGHT (gives error with a$ = b$+c$) */ if (first_char != '.') { if (isa_string) { throw error("left hand side contains unquoted string"); } not_string = true; } else { not_string = false; } /* Binary operators, +,-,*,/,^,<,>,<=,>=,.and.,.or. */ int priority = 0; if (token_len == 1) { switch (first_char) { case '+' : v = 1; priority = 2; break; case '-' : v = 2; priority = 2; break; case '*' : v = 3; priority = 3; break; case '/' : v = 4; priority = 3; break; case '%' : v = 14; priority = 3; break; case '^' : v = 5; priority = 4; break; case '=' : v = 6; priority = 1; break; case '&' : v = 12; priority = 1; break; case '|' : v = 13; priority = 1; break; case '<' : v = 7; priority = 1; break; case '>' : v = 9; priority = 1; break; case '.' : v = 15; priority = 2; break; default : v = 0; } } else { str_to_uppercase(token, uc_token); if (token == "<=") { v = 8; priority = 1; } else if (token == "<>") { v = 11; priority = 1; } else if (token == ">=") { v = 10; priority = 1; } else if (token == "**") { v = 5; priority = 4; } else if (uc_token == "AND") { v = 12; priority = 1; } else if (uc_token == "OR") { v = 13; priority = 1; } else { v = 0; } } if (v > 0) { if (last_typ < 1 || last_typ > 3) { last_typ = 1; } dbg gprint("stack, i %d, type %d \n",v,last_typ); stack_bin(v, priority); dbg gprint("Found binary operator \n"); unary = 1; } else if (first_char == ')' && token_len == 1) { if (curpri > 0) { curpri = curpri - 100; unary = 2; break; } if (!term_bracket) { throw error("too many closing ')', expecting binary operator"); } } else { throw error(string("unknown binary operator '")+token+"'"); } } // end switch } // end for } Tokenizer* GLEPolish::getTokens(const string& str) { m_tokens.set_string(str.c_str()); return &m_tokens; } void GLEPolish::eval(const char *exp, double *x) throw(ParserError) { int rtype = 1, otyp = 0, cp = 0; GLEPcodeList pc_list; GLEPcode pcode(&pc_list); // cout << "eval '" << exp << "'" << endl; try { polish(exp, pcode, &rtype); } catch (ParserError err) { err.setParserString(exp); throw err; } ::eval((int*)&pcode[0], &cp, x, NULL, &otyp); } void GLEPolish::internalEval(const char *exp, double *x) throw(ParserError) { int rtype = 1, otyp = 0, cp = 0; GLEPcodeList pc_list; GLEPcode pcode(&pc_list); polish(exp, pcode, &rtype); ::eval((int*)&pcode[0], &cp, x, NULL, &otyp); } void GLEPolish::internalEvalString(const char* exp, string* str) throw(ParserError) { double oval; const char* ostr; int rtype = 2, otyp = 0, cp = 0; GLEPcodeList pc_list; GLEPcode pcode(&pc_list); polish(exp, pcode, &rtype); ::eval((int*)&pcode[0], &cp, &oval, &ostr, &otyp); if (otyp == 1) { stringstream str_cnv; str_cnv << oval; *str = str_cnv.str(); } else { *str = ostr; } } void GLEPolish::eval_string(const char *exp, string *str, bool allownum) throw(ParserError) { const char* ostr; double oval = 0.0; int rtype = allownum ? 0 : 2; int otyp = 0, cp = 0; GLEPcodeList pc_list; GLEPcode pcode(&pc_list); try { polish(exp, pcode, &rtype); } catch (ParserError err) { err.setParserString(exp); throw err; } ::eval((int*)&pcode[0], &cp, &oval, &ostr, &otyp); if (otyp == 1) { if (allownum) { stringstream str_cnv; str_cnv << oval; *str = str_cnv.str(); } else { throw error(string("expression does not evaluate to string '")+exp+"'"); } } else { *str = ostr; } } bool valid_unquoted_string(const string& str) { if (str.length() == 0) { return false; } else { int ch = str[0]; if (!((ch >= 'A' && ch <= 'Z') || (ch >= 'a' && ch <= 'z'))) { return false; } else { return true; } } } void stack_op(GLEPcode& pcode, int stk[], int stkp[], int *nstk, int i, int p) { dbg gprint("Stack oper %d priority %d \n",i,p); while ((*nstk)>0 && p<=stkp[*nstk]) { dbg gprint("ADDING oper stack = %d oper=%d \n",*nstk,stk[(*nstk)]); pcode.addInt(stk[(*nstk)--]); } stk[++(*nstk)] = i; stkp[*nstk] = p; } void polish(char *expr, GLEPcode& pcode, int *rtype) throw(ParserError) { GLEPolish* polish = get_global_polish(); if (polish != NULL) { try { polish->polish(expr, pcode, rtype); } catch (ParserError err) { err.setParserString(expr); throw err; } } } void eval_pcode(GLEPcode& pcode, double* x) { int otyp = 0, cp = 0; ::eval((int*)&pcode[0], &cp, x, NULL, &otyp); } void eval_pcode_str(GLEPcode& pcode, string& x) { const char* ostr; int otyp = 1, cp = 0; double value; ::eval((int*)&pcode[0], &cp, &value, &ostr, &otyp); x = ostr; } void polish(char *expr, char *pcode, int *plen, int *rtype) throw(ParserError) { GLEPolish* polish = get_global_polish(); if (polish != NULL) { GLEPcodeList pc_list; GLEPcode my_pcode(&pc_list); try { polish->polish(expr, my_pcode, rtype); } catch (ParserError err) { err.setParserString(expr); throw err; } *plen = my_pcode.size(); memcpy(pcode,&my_pcode[0],my_pcode.size()*sizeof(int)); } } void polish_eval(char *exp, double *x) throw(ParserError) { GLEPolish* polish = get_global_polish(); if (polish != NULL) polish->eval(exp, x); } void polish_eval_string(const char *exp, string *str, bool allownum) throw(ParserError) { GLEPolish* polish = get_global_polish(); if (polish != NULL) polish->eval_string(exp, str, allownum); } GLEPcode::GLEPcode(GLEPcodeList* list) { m_PCodeList = list; } void GLEPcode::addDoubleExpression(double val) { addInt(PCODE_EXPR); int savelen = size(); addInt(0); addDouble(val); setInt(savelen, size() - savelen - 1); } void GLEPcode::addStringExpression(const char* val) { addInt(PCODE_EXPR); int savelen = size(); addInt(0); addStringChar(val); setInt(savelen, size() - savelen - 1); } void GLEPcode::addDouble(double val) { union { double d ; int l[2]; short s[4]; } both; both.d = val; addInt(PCODE_DOUBLE); addInt(both.l[0]); addInt(both.l[1]); } void GLEPcode::addFunction(int idx) { addInt(idx); } void GLEPcode::addVar(int var) { addInt(PCODE_VAR); addInt(var); } void GLEPcode::addStrVar(int var) { addInt(PCODE_STRVAR); addInt(var); } void GLEPcode::addString(const string& str) { addInt(PCODE_STRING); addStringNoID(str); } void GLEPcode::addStringNoID(const string& str) { int slen = str.length() + 1; slen = ((slen + 3) & 0xfffc) / 4; int pos = size(); for (int i = 0; i < slen; i++) { addInt(0); } char* str_target = (char*)&(*this)[pos]; strcpy(str_target, str.c_str()); } void GLEPcode::addStringChar(const char* str) { addInt(PCODE_STRING); addStringNoIDChar(str); } void GLEPcode::addStringNoIDChar(const char* str) { int slen = strlen(str) + 1; slen = ((slen + 3) & 0xfffc) / 4; int pos = size(); for (int i = 0; i < slen; i++) { addInt(0); } char* str_target = (char*)&(*this)[pos]; strcpy(str_target, str); } void GLEPcode::show() { show(0); } void GLEPcode::show(int start) { cout << "PCode:" << endl; union { double d ; int l[2]; short s[4]; } both; int size = getInt(start); int pos = start+1; while (pos <= start+size) { int varid = 0; int stpos = pos; int opcode = getInt(pos++); switch (opcode) { case PCODE_VAR: varid = getInt(pos++); cout << "VAR " << varid << " (" << stpos << ")" << endl; break; case PCODE_DOUBLE: both.l[0] = getInt(pos++); both.l[1] = getInt(pos++); cout << "DOUBLE " << both.d << endl; break; default: cout << "PCODE " << opcode << " (" << stpos << ")" << endl; } } } GLEPcodeIndexed::GLEPcodeIndexed(GLEPcodeList* list) : GLEPcode(list) { } GLEFunctionParserPcode::GLEFunctionParserPcode() : m_Pcode(&m_PcodeList) { } GLEFunctionParserPcode::~GLEFunctionParserPcode() { } void GLEFunctionParserPcode::polish(const char* fct, StringIntHash* vars) throw(ParserError) { GLEPolish* polish = get_global_polish(); if (polish != NULL) { try { int rtype = 1; polish->setExprVars(vars); polish->polish(fct, m_Pcode, &rtype); polish->setExprVars(NULL); } catch (ParserError err) { err.setParserString(fct); throw err; } } } void GLEFunctionParserPcode::polishPos(const char* fct, int pos, StringIntHash* vars) throw(ParserError) { GLEPolish* polish = get_global_polish(); if (polish != NULL) { try { int rtype = 1; polish->setExprVars(vars); polish->polish(fct, m_Pcode, &rtype); polish->setExprVars(NULL); } catch (ParserError err) { err.incColumn(pos-1); throw err; } } } void GLEFunctionParserPcode::polishX() throw(ParserError) { polish("x", NULL); } double GLEFunctionParserPcode::evalDouble() { double value; eval_pcode(m_Pcode, &value); return value; } gle-graphics-4.2.4c/src/gle/all.h0000664000000000000000000000665711652073536015236 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ #ifndef INCLUDE_ALL #define INCLUDE_ALL #include "basicconf.h" #include "gle-interface/gle-base.h" #include #include #ifdef M_PI #define GLE_PI M_PI #else #define GLE_PI 3.14159265358979323846 #endif #if defined(__UNIX__) && defined(HAVE_X11) #define ENABLE_GS_PREVIEW #endif // // -- containers // typedef vector< vector > _GlobalPCode; typedef vector< vector >::iterator _itGlobalPCode; typedef vector< vector >::const_iterator _citGlobalPCode; typedef vector _PCode; typedef vector::iterator _itPCode; typedef vector::const_iterator _citPCode; typedef vector _Tokens; typedef vector::iterator _itTokens; typedef vector::const_iterator _citTokens; #include "glepro.h" #endif gle-graphics-4.2.4c/src/gle/mychar.cpp0000664000000000000000000002113011676337232016265 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ /*----------------------------------------------------------------------*/ /* This routine prints a char from one of my fonts, it has cacheing */ /* for the char data, which could be extended to bitmap cacheing */ /*----------------------------------------------------------------------*/ #include "all.h" #include "core.h" #include "color.h" extern struct gmodel g; #include "gprint.h" #include "file_io.h" #ifdef BIGINDIAN #define BYTE0 1 #define BYTE1 0 #else #define BYTE0 0 #define BYTE1 1 #endif void font_file_vector(int ff,char *filename); int draw_char_pcode(char *s); void my_load_font(int ff); int char_plen(char *s); void get_char_pcode(int ff, int cc, char **pp); double frx(char **s); unsigned char my_name[80]; char *my_code[80]; int my_ref[80]; char *my_buff; int my_font[80]; int my_pnt[257]; int my_curfont; extern double font_lwidth; void my_char(int ff, int cc) { char *pp; GLEWithoutUpdates noUpdates; get_char_pcode(ff, cc, &pp); draw_char_pcode(pp); } void get_char_pcode(int ff, int cc, char **pp) { int i,plen,mi,minref; /* y: Is char in font cache, if so draw it, inc ref */ /* should use *memchr(s,c,n) */ for (i=1;i<80;i++) { if (my_name[i]==cc) { if (my_font[i]==ff) { my_ref[i]++; *pp = my_code[i]; return; } } } /* x: Is that font currently loaded, if so put in cache at least used, goto y */ minref = 30000; mi = 0; if (my_curfont!=ff) my_load_font(ff); /* Find least used cache character */ for (i=1;i<80;i++) { if (my_ref[i] old_color(g_get_color()); GLERC old_fill(g_get_fill()); g_set_fill(old_color); g_get_line_width(&old_lwidth); g_set_line_width(font_lwidth); g_get_line_join(&old_join); g_set_line_join(1); /* use rounded lines to avoid ucky peeks */ g_get_xy(&ox,&oy); savelen = s; if (!old_path) { g_set_path(true); g_newpath(); } while (*s!=15) { switch (*s++) { case 1: cx = ox + frx(&s); cy = oy + frx(&s); g_move(cx,cy); break; case 2: cx = cx + frx(&s); cy = cy + frx(&s); g_line(cx,cy); break; case 3: cx = cx + frx(&s); cy = cy + frx(&s); x1 = cx; y1 = cy; cx = cx + frx(&s); cy = cy + frx(&s); x2 = cx; y2 = cy; cx = cx + frx(&s); cy = cy + frx(&s); g_bezier(x1,y1,x2,y2,cx,cy); break; case 4: g_closepath(); break; case 5: if (!old_path) g_fill(); break; case 6: g_stroke(); break; case 7: g_gsave(); g_set_fill(GLE_COLOR_WHITE); g_fill(); g_grestore(); break; case 8: g_set_line_width(frx(&s)); break; case 9: cx = ox + frx(&s); cy = oy + frx(&s); g_set_pos(cx,cy); break; case 10: g_circle_stroke(frx(&s)); break; case 0: /* no such char in this font */ goto abort; default: gprint("Error in mychar pcode %d \n",*s++); goto abort; } } abort: if (!old_path) g_set_path(old_path); g_set_line_join(old_join); g_set_line_width(old_lwidth); g_set_color(old_color); g_set_fill(old_fill); return s-savelen; } double frx(char **s) { static union {char a[2];short b;} both; static int i; if (g.fontsz==0) { gprint("Font size is zero ***\n"); g.fontsz = 1; } i = *(*s)++; if (i==127) { both.a[0] = (*(*s)++); both.a[1] = (*(*s)++); if (1==2) printf("bothb %d \n",both.b); return (g.fontsz*both.b)/1000.0; } else { if (i>127) i = -(256-i); if (1==2) printf("ii %d \n",i); return (g.fontsz*i)/1000.0; } } int frxi(char **s) { static union {char a[2];short b;} both; static int i; i = *(*s)++; if (i==127) { both.a[0] = (*(*s)++); both.a[1] = (*(*s)++); if (1==2) printf("both %d \n",both.b); return (both.b); } else { if (i>127) i = -(256-i); if (1==2) printf("i %d \n",i); return i; } } gle-graphics-4.2.4c/src/gle/gle-block.cpp0000664000000000000000000000624611652073235016646 0ustar rootroot #include "basicconf.h" #include "cutils.h" #include "gle-block.h" #include "tokens/Tokenizer.h" #include "gle-interface/gle-interface.h" void GLEParserInitTokenizer(Tokenizer* tokens); GLEBlockInstance::GLEBlockInstance(GLEBlockBase* parent): m_parent(parent) { } GLEBlockInstance::~GLEBlockInstance() { } GLEBlockBase* GLEBlockInstance::getParent() { return m_parent; } GLEBlockBase::GLEBlockBase(const std::string& blockName, bool allowRecursiveBlocks): m_blockName(blockName), m_allowRecursiveBlocks(allowRecursiveBlocks) { } GLEBlockBase::~GLEBlockBase() { for (std::vector::iterator i(m_blockStack.begin()); i != m_blockStack.end(); ++i) { delete *i; } } void GLEBlockBase::beginExecuteBlock(GLESourceLine& sline, int *pcode, int *cp) { if (!allowRecursiveBlocks() && !m_blockStack.empty()) { g_throw_parser_error("recursive calls to '", getBlockName().c_str(), "' blocks not allowed"); } GLEBlockInstance* block = beginExecuteBlockImpl(sline, pcode, cp); m_blockStack.push_back(block); } void GLEBlockBase::executeLine(GLESourceLine& sline) { if (m_blockStack.empty()) { g_throw_parser_error("not in block '", getBlockName().c_str(), "'"); } else { m_blockStack.back()->executeLine(sline); } } void GLEBlockBase::endExecuteBlock() { if (m_blockStack.empty()) { g_throw_parser_error("not in block '", getBlockName().c_str(), "'"); } else { GLEBlockInstance* block = m_blockStack.back(); block->endExecuteBlock(); delete block; m_blockStack.pop_back(); } } bool GLEBlockBase::allowRecursiveBlocks() const { return m_allowRecursiveBlocks; } const std::string GLEBlockBase::getBlockName() const { return m_blockName; } GLEBlockWithSimpleKeywords::GLEBlockWithSimpleKeywords(const std::string& blockName, bool allowRecursiveBlocks): GLEBlockBase(blockName, allowRecursiveBlocks) { } GLEBlockWithSimpleKeywords::~GLEBlockWithSimpleKeywords() { } bool GLEBlockWithSimpleKeywords::checkLine(GLESourceLine& sline) { StringTokenizer tokens(sline.getCodeCStr()); GLEParserInitTokenizer(&tokens); if (tokens.has_more_tokens()) { const std::string token = tokens.next_token(); return m_keyWords.find(token) != m_keyWords.end(); } else { return false; } } void GLEBlockWithSimpleKeywords::addKeyWord(const char* keyword) { m_keyWords.insert(keyword); } void GLEBlockWithSimpleKeywords::addKeyWord(const std::string& keyword) { m_keyWords.insert(keyword); } GLEBlocks::GLEBlocks() { } GLEBlocks::~GLEBlocks() { for (std::map::iterator i(m_blocks.begin()); i != m_blocks.end(); ++i) { delete i->second; } } void GLEBlocks::addBlock(int blockType, GLEBlockBase* block) { std::map::iterator i(m_blocks.find(blockType)); CUtilsAssert(i == m_blocks.end()); m_blocks.insert(std::make_pair(blockType, block)); } GLEBlockBase* GLEBlocks::getBlock(int blockType) { std::map::iterator i(m_blocks.find(blockType)); CUtilsAssert(i != m_blocks.end()); return i->second; } GLEBlockBase* GLEBlocks::getBlockIfExists(int blockType) { std::map::iterator i(m_blocks.find(blockType)); if (i != m_blocks.end()) { return i->second; } else { return 0; } } gle-graphics-4.2.4c/src/gle/numberformat.cpp0000664000000000000000000005153511722434562017513 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ #include "all.h" #include "tokens/stokenizer.h" #include "cutils.h" #include "core.h" #include "gprint.h" #include "numberformat.h" /* dec, hex [upper|lower], bin 01 fix 3 + effect van nozeros 12.000 sig 2 [e,E,10,10+] expdigits 2 expsign round 3 round number to 3 significant digits pad with zeros if number too large (don't use exponential represenations) nozeros sign always include sign in output (also for positive numbers) pad 7 [left|right] numbers less than 7 chars are padded from left with spaces prefix 3 (add zeros from left) append '%' prepend 'EUR ' */ class GLENumberFormatterFix : public GLENumberFormatter { protected: int m_NbDecPlaces; public: virtual ~GLENumberFormatterFix(); virtual void parseOptions(GLENumberFormat* format); virtual void format(double number, string* output); }; class GLENumberFormatterRound : public GLENumberFormatter { protected: int m_Sig; public: virtual ~GLENumberFormatterRound(); virtual void parseOptions(GLENumberFormat* format); virtual void format(double number, string* output); }; class GLENumberFormatterSci : public GLENumberFormatter { protected: int m_Sig; int m_Mode; int m_ExpDigits; bool m_HasExpDigits; bool m_ExpSign; public: GLENumberFormatterSci(); virtual ~GLENumberFormatterSci(); void doAllSci(string* output); virtual void parseOptions(GLENumberFormat* format); void formatExpPart(int exp, string* output); virtual void format(double number, string* output); inline bool hasExpDigits() { return m_HasExpDigits; } inline int getExpDigits() { return m_ExpDigits; } void setExpDigits(int digits); inline bool hasExpSign() { return m_ExpSign; } inline void setExpSign(bool ExpSign) { m_ExpSign = ExpSign; } }; class GLENumberFormatterEng : public GLENumberFormatterSci { protected: int m_Digits; bool m_Numeric; public: GLENumberFormatterEng(); virtual ~GLENumberFormatterEng(); virtual void parseOptions(GLENumberFormat* format); virtual void format(double number, string* output); void myDoAll(string* output); }; class GLENumberFormatterInt : public GLENumberFormatter { protected: int m_Mode; bool m_Upper; public: GLENumberFormatterInt(int mode); virtual ~GLENumberFormatterInt(); virtual void format(double number, string* output); virtual void parseOptions(GLENumberFormat* format); inline bool hasUpper() { return m_Upper; } inline void setUpper(bool Upper) { m_Upper = Upper; } }; class GLENumberFormatterFrac: public GLENumberFormatter { protected: int m_Mode; public: GLENumberFormatterFrac(int mode); virtual ~GLENumberFormatterFrac(); virtual void format(double number, string* output); virtual void parseOptions(GLENumberFormat* format); }; #define GLE_NF_INT_DEC 0 #define GLE_NF_INT_HEX 1 #define GLE_NF_INT_BIN 2 #define GLE_NF_SCI_SMALL_E 0 #define GLE_NF_SCI_BIG_E 1 #define GLE_NF_SCI_10 2 #define GLE_NF_FRAC_ONE 0 #define GLE_NF_FRAC_PI 1 GLENumberFormatter::GLENumberFormatter() { m_Prefix = -1; m_NoZeroes = false; m_Sign = false; m_PadLeft = -1; m_PadRight = -1; m_HasMin = false; m_HasMax = false; } GLENumberFormatter::~GLENumberFormatter() { } void GLENumberFormatter::parseOptions(GLENumberFormat* format) { } void GLENumberFormatter::format(double number, string* output) { } bool GLENumberFormatter::appliesTo(double number) { if (hasMin() && number < getMin()) return false; if (hasMax() && number > getMax()) return false; return true; } void GLENumberFormatter::doAll(string* output) { doNoZeroes(output); doPrefix(output); doSign(output); doPadLeft(output); doPadRight(output); } void GLENumberFormatter::doPrefix(string* output) { if (hasPrefix()) { bool has_sign = false; int prefix = getPrefix(); int length = output->length(); string::size_type pos = output->rfind('.'); if (pos == string::npos) pos = length; if (length > 0 && output->at(0) == '-') { prefix++; has_sign = true; } if (pos < (unsigned int)prefix) { string zeros = has_sign ? "-" : ""; for (unsigned int i = 0; i < prefix-pos; i++) { zeros += "0"; } if (has_sign) { zeros += output->substr(1, length-1); } else { zeros += *output; } *output = zeros; } } } void GLENumberFormatter::doNoZeroes(string* output) { if (hasNoZeroes() && output->rfind('.') != string::npos) { int nbzero = 0; int length = output->length(); int pos = length-1; while (pos >= 0 && output->at(pos) == '0') { pos--; nbzero++; } // also eat '.', e.g., if number was 3.0 (not for 3.10) if (pos >= 0 && output->at(pos) == '.') { pos--; nbzero++; } *output = output->substr(0, length-nbzero); } } void GLENumberFormatter::doSign(string* output) { if (hasSign()) { if (output->length() > 0 && output->at(0) != '-') { output->insert(0, "+"); } } } void GLENumberFormatter::doPadLeft(string* output) { if (getPrepend() != "") { output->insert(0, getPrepend()); } if (hasPadLeft()) { int count = getPadLeft() - output->length(); str_prefix(count, ' ', output); } } void GLENumberFormatter::doPadRight(string* output) { if (getAppend() != "") { output->append(getAppend()); } if (hasPadRight()) { int count = getPadRight() - output->length(); if (count > 0) { for (int i = 0; i < count; i++) { *output += " "; } } } } void GLENumberFormatter::setMin(double min) { m_Min = min; m_HasMin = true; } void GLENumberFormatter::setMax(double max) { m_Max = max; m_HasMax = true; } void GLENumberFormatter::setDefaults(GLENumberFormatter* def) { if (def->hasPrefix()) setPrefix(def->getPrefix()); if (def->hasNoZeroes()) setNoZeroes(true); if (def->hasSign()) setSign(true); if (def->hasPadLeft()) setPadLeft(def->getPadLeft()); if (def->hasPadRight()) setPadRight(def->getPadRight()); } void GLENumberFormatter::formatSimple(double value, string* output, int prec, int* exp) { char format[20], result[100]; double pos_num = fabs(value); *exp = gle_double_digits(pos_num, prec); if (prec > 0) { sprintf(format, "%%.%df", prec-1); sprintf(result, format, pos_num / pow(10.0, *exp)); } else { result[0] = 0; } *output = result; } GLENumberFormatterFix::~GLENumberFormatterFix() { } void GLENumberFormatterFix::parseOptions(GLENumberFormat* format) { m_NbDecPlaces = format->nextInt(); } void GLENumberFormatterFix::format(double number, string* output) { char format[20], result[100]; sprintf(format, "%%.%df", m_NbDecPlaces); sprintf(result, format, number); *output = result; doAll(output); } GLENumberFormatterSci::GLENumberFormatterSci() { m_Mode = GLE_NF_SCI_SMALL_E; m_HasExpDigits = false; m_ExpSign = false; } GLENumberFormatterSci::~GLENumberFormatterSci() { } void GLENumberFormatterSci::setExpDigits(int digits) { m_ExpDigits = digits; m_HasExpDigits = true; } void GLENumberFormatterSci::parseOptions(GLENumberFormat* format) { m_Sig = format->nextInt(); while (format->hasMoreTokens()) { const string& tpe = format->nextToken(); if (tpe == "e") { m_Mode = GLE_NF_SCI_SMALL_E; format->incTokens(); } else if (tpe == "E") { m_Mode = GLE_NF_SCI_BIG_E; format->incTokens(); } else if (tpe == "10") { m_Mode = GLE_NF_SCI_10; format->incTokens(); } else if (tpe == "expdigits") { format->incTokens(); setExpDigits(format->nextInt()); } else if (tpe == "expsign") { format->incTokens(); setExpSign(true); } else { break; } } } void GLENumberFormatterSci::formatExpPart(int exp, string* output) { string exp_str; int abs_exp = exp > 0 ? exp : -exp; gle_int_to_string(abs_exp, &exp_str); if (hasExpDigits()) { int nb_digits = exp_str.length(); str_prefix(getExpDigits()-nb_digits, '0', &exp_str); } if (exp < 0) exp_str.insert(0, "-"); else if (hasExpSign()) exp_str.insert(0, "+"); doNoZeroes(output); switch (m_Mode) { case GLE_NF_SCI_SMALL_E: *output += "e"; *output += exp_str; break; case GLE_NF_SCI_BIG_E: *output += "E"; *output += exp_str; break; case GLE_NF_SCI_10: { ostringstream toAdd; if (g_get_tex_labels()) toAdd << "$"; if (output->length() != 0) toAdd << "\\cdot "; toAdd << "10^{" << exp_str << "}"; if (g_get_tex_labels()) toAdd << "$"; *output += toAdd.str(); } break; } } void GLENumberFormatterSci::format(double number, string* output) { int exp; formatSimple(number, output, m_Sig, &exp); formatExpPart(exp, output); if (number < 0.0) output->insert(0, "-"); doAllSci(output); } void GLENumberFormatterSci::doAllSci(string* output) { // no doNoZeroes() here! -> this is done before adding the "Exp" part doPrefix(output); doSign(output); doPadLeft(output); doPadRight(output); } GLENumberFormatterEng::GLENumberFormatterEng() : GLENumberFormatterSci() { m_Numeric = false; m_Digits = 0; } GLENumberFormatterEng::~GLENumberFormatterEng() { } void GLENumberFormatterEng::parseOptions(GLENumberFormat* format) { m_Numeric = false; m_Digits = format->nextInt(); if (m_Digits < 0) m_Digits = 0; while (format->hasMoreTokens()) { const string& tpe = format->nextToken(); if (tpe == "e") { m_Mode = GLE_NF_SCI_SMALL_E; format->incTokens(); } else if (tpe == "E") { m_Mode = GLE_NF_SCI_BIG_E; format->incTokens(); } else if (tpe == "10") { m_Mode = GLE_NF_SCI_10; format->incTokens(); } else if (tpe == "expdigits") { format->incTokens(); setExpDigits(format->nextInt()); } else if (tpe == "expsign") { format->incTokens(); setExpSign(true); } else if (tpe == "num") { m_Numeric = true; format->incTokens(); } else { break; } } } #define GLE_FMT_ENG_PREFIX_START (-24) #define GLE_FMT_ENG_PREFIX_END (GLE_FMT_ENG_PREFIX_START+(int)((sizeof(prefix)/sizeof(char *)-1)*3)) void GLENumberFormatterEng::format(double number, string* output) { static const char *prefix[] = { "y", "z", "a", "f", "p", "n", "\\mu{}", "m", "", "k", "M", "G", "T", "P", "E", "Z", "Y" }; int expof10; char result[100]; char *res = result; int digits = m_Digits; result[0] = 0; if (number == 0.0) { // take special care of the number zero if (digits != 0) { sprintf(res, "%.*f", digits-1, number); *output = result; doNoZeroes(output); if (!m_Numeric) { *output += " "; } } myDoAll(output); return; } if (number < 0.0) { *res++ = '-'; number = -number; } expof10 = (int) log10(number); if (expof10 > 0) expof10 = (expof10/3)*3; else expof10 = (-expof10+3)/3*(-3); number *= pow(10.0, -expof10); if (number >= 1000.) { number /= 1000.0; expof10 += 3; } else if (number >= 100.0) { digits -= 2; } else if (number >= 10.0) { digits -= 1; } if (m_Digits == 0) { // no significant digits? if (m_Numeric || (expof10 < GLE_FMT_ENG_PREFIX_START) || (expof10 > GLE_FMT_ENG_PREFIX_END)) { res[0] = 0; *output = result; formatExpPart(expof10, output); } else { const char* fmt = g_get_tex_labels() ? "$\\mathrm{%s}$" : "%s"; sprintf(res, fmt, prefix[(expof10-GLE_FMT_ENG_PREFIX_START)/3]); *output = result; } myDoAll(output); return; } while (digits <= 0) { // too few significant digits (happens with eng 2) number /= 1000.0; expof10 += 3; digits = m_Digits; if (number >= 100.0) { digits -= 2; } else if (number >= 10.0) { digits -= 1; } } if (m_Numeric || (expof10 < GLE_FMT_ENG_PREFIX_START) || (expof10 > GLE_FMT_ENG_PREFIX_END)) { sprintf(res, "%.*f", digits-1, number); *output = result; formatExpPart(expof10, output); } else { sprintf(res, "%.*f", digits-1, number); *output = result; doNoZeroes(output); *output += " "; if (g_get_tex_labels()) *output += "$\\mathrm{"; *output += prefix[(expof10-GLE_FMT_ENG_PREFIX_START)/3]; if (g_get_tex_labels()) *output += "}$"; } myDoAll(output); } void GLENumberFormatterEng::myDoAll(string* output) { if (getAppend() == "") { // no append, then remove trailing space intruduced if "eng" prefix is empty str_trim_right(*output); } doAllSci(output); } GLENumberFormatterRound::~GLENumberFormatterRound() { } void GLENumberFormatterRound::parseOptions(GLENumberFormat* format) { m_Sig = format->nextInt(); } void GLENumberFormatterRound::format(double number, string* output) { int exp; formatSimple(number, output, m_Sig, &exp); string::size_type pos = output->find('.'); if (exp < 0) { if (pos != string::npos) output->erase(pos, 1); string prefix = "0."; for (int i = 0; i < -exp-1; i++) { prefix += "0"; } *output = prefix + (*output); } else { if (pos != string::npos) { exp -= output->length() - pos - 1; output->erase(pos, 1); if (exp < 0) output->insert(output->length()+exp, "."); } for (int i = 0; i < exp; i++) { (*output) += "0"; } } if (number < 0.0) output->insert(0, "-"); doAll(output); } GLENumberFormatterInt::GLENumberFormatterInt(int mode) : GLENumberFormatter() { m_Mode = mode; m_Upper = true; } GLENumberFormatterInt::~GLENumberFormatterInt() { } void GLENumberFormatterInt::parseOptions(GLENumberFormat* format) { if (m_Mode == GLE_NF_INT_HEX) { const string& up = format->nextToken(); if (up == "upper") { format->incTokens(); } else if (up == "lower") { setUpper(false); format->incTokens(); } } } void GLENumberFormatterInt::format(double number, string* output) { char result[100]; int number_int = (int)floor(number + 0.5); switch (m_Mode) { case GLE_NF_INT_DEC: sprintf(result, "%d", number_int); *output = result; break; case GLE_NF_INT_HEX: if (hasUpper()) sprintf(result, "%X", number_int); else sprintf(result, "%x", number_int); *output = result; break; case GLE_NF_INT_BIN: gle_int_to_string_bin(number_int, output); break; } doAll(output); } GLENumberFormatterFrac::GLENumberFormatterFrac(int mode) { m_Mode = mode; } GLENumberFormatterFrac::~GLENumberFormatterFrac() { } void GLENumberFormatterFrac::format(double number, string* output) { bool sign = false; double num = number; if (num < 0.0) { sign = true; num = fabs(num); } if (m_Mode == GLE_NF_FRAC_PI) num /= GLE_PI; double int_part = floor(num); num = num - int_part; bool found = false; float denom = 0.0; while (!found && denom <= 100.0) { denom = denom + 1.0; if (fabs(floor(num*denom+1e-7) - num*denom) < 1e-6) { found = true; } } if (found) { string str; num *= denom; num += int_part * denom; if (sign) *output += "-"; if (m_Mode == GLE_NF_FRAC_PI) { if (floor(num+1e-7) != 1.0) { gle_int_to_string((int)floor(num+1e-7), &str); *output += str; } if (number != 0.0) { *output += g_get_tex_labels() ? "$\\pi$" : "\\pi"; } } else { gle_int_to_string((int)floor(num+1e-7), &str); *output += str; } if (denom != 1.0) { *output += "/"; gle_int_to_string((int)floor(denom+1e-7), &str); *output += str; } } else { char result[100]; sprintf(result, "%f", number); *output = result; } doAll(output); } void GLENumberFormatterFrac::parseOptions(GLENumberFormat* format) { } GLENumberFormat::GLENumberFormat(const string& formats) : m_Separator(" \"", "", "\'", "\'"), m_Tokens(formats, m_Separator) { GLENumberFormatter* previous = &m_Default; while (hasMoreTokens()) { const string& name = nextToken(); GLENumberFormatter* format = NULL; if (name == "fix") { incTokens(); format = new GLENumberFormatterFix(); } else if (name == "dec") { incTokens(); format = new GLENumberFormatterInt(GLE_NF_INT_DEC); } else if (name == "hex") { incTokens(); format = new GLENumberFormatterInt(GLE_NF_INT_HEX); } else if (name == "bin") { incTokens(); format = new GLENumberFormatterInt(GLE_NF_INT_BIN); } else if (name == "round") { incTokens(); format = new GLENumberFormatterRound(); } else if (name == "sci") { incTokens(); format = new GLENumberFormatterSci(); } else if (name == "eng") { incTokens(); format = new GLENumberFormatterEng(); } else if (name == "frac") { incTokens(); format = new GLENumberFormatterFrac(GLE_NF_FRAC_ONE); } else if (name == "pi") { incTokens(); format = new GLENumberFormatterFrac(GLE_NF_FRAC_PI); } else if (name == "prefix") { incTokens(); previous->setPrefix(nextInt()); } else if (name == "nozeroes") { incTokens(); previous->setNoZeroes(true); } else if (name == "nozero") { incTokens(); previous->setNoZeroes(true); } else if (name == "sign") { incTokens(); previous->setSign(true); } else if (name == "pad") { incTokens(); int padvalue = nextInt(); const string& lr = nextToken(); if (lr == "left") { previous->setPadLeft(padvalue); incTokens(); } else if (lr == "right") { previous->setPadRight(padvalue); incTokens(); } } else if (name == "min") { incTokens(); previous->setMin(nextDouble()); } else if (name == "max") { incTokens(); previous->setMax(nextDouble()); } else if (name == "append") { incTokens(); nextString(previous->getAppend()); } else if (name == "add") { incTokens(); nextString(previous->getAppend()); } else if (name == "prepend") { incTokens(); nextString(previous->getPrepend()); } else if (name == "otherwise") { incTokens(); } else { gprint("Unknown specifier in number format string: '%s'", name.c_str()); incTokens(); } if (format != NULL) { format->setDefaults(&m_Default); format->parseOptions(this); addFormat(format); previous = format; } } } GLENumberFormat::~GLENumberFormat() { for (vector::size_type i = 0; i < m_Format.size(); i++) { delete m_Format[i]; } } void GLENumberFormat::format(double number, string* output) { for (vector::size_type i = 0; i < m_Format.size(); i++) { if (m_Format[i]->appliesTo(number)) { m_Format[i]->format(number, output); return; } } *output = "ERR"; } void GLENumberFormat::incTokens() { if (hasMoreTokens()) m_Tokens.next_token(); } int GLENumberFormat::nextInt() { if (hasMoreTokens()) { const string& token = nextToken(); int result = atoi(token.c_str()); incTokens(); return result; } else { return 0; } } double GLENumberFormat::nextDouble() { char* err = NULL; const string& token = nextToken(); double result = strtod(token.c_str(), &err); incTokens(); return result; } void GLENumberFormat::nextString(string& value) { value = nextToken(); str_remove_quote(value); incTokens(); } void format_number_to_string(char* out, const char* format, double value) { string result; GLENumberFormat fmt(format); fmt.format(value, &result); strcpy(out, result.c_str()); } gle-graphics-4.2.4c/src/gle/glearray.h0000664000000000000000000001551111656572360016264 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ #ifndef _GLE_ARRAY_H_ #define _GLE_ARRAY_H_ class GLEObject : public RefCountObject { public: GLEObject(); virtual ~GLEObject(); virtual int size(); virtual double getDoubleAt(int i); virtual void setDoubleAt(double v, int i); virtual bool getBoolAt(int i); virtual void setBoolAt(bool v, int i); virtual GLEObject* getObjectAt(int i); virtual void setObjectAt(GLEObject* v, int i); }; class GLEObjectArray : public GLEObject { protected: RefCountVector m_Elems; public: GLEObjectArray(); virtual ~GLEObjectArray(); virtual int size(); virtual GLEObject* getObjectAt(int i); virtual void setObjectAt(GLEObject* v, int i); protected: void resize(int n); }; class GLEDoubleArray : public GLEObject { protected: vector m_Elems; public: GLEDoubleArray(); virtual ~GLEDoubleArray(); virtual int size(); virtual double getDoubleAt(int i); virtual void setDoubleAt(double v, int i); double* toArray(); protected: void resize(int n); }; class GLEBoolArray : public GLEObject { protected: vector m_Elems; public: GLEBoolArray(); virtual ~GLEBoolArray(); virtual int size(); virtual bool getBoolAt(int i); virtual void setBoolAt(bool v, int i); int* toArray(); protected: void resize(int n); }; class GLEZData { protected: GLERectangle m_XYBounds; double m_ZMin, m_ZMax; int m_NX, m_NY; double* m_Data; public: GLEZData(); ~GLEZData(); void read(const string& fname) throw(ParserError); inline double getZMin() { return m_ZMin; } inline double getZMax() { return m_ZMax; } inline GLERectangle* getBounds() { return &m_XYBounds; } inline int getNX() { return m_NX; } inline int getNY() { return m_NY; } inline double* getData() { return m_Data; } }; bool GLEReadFileOrGZIPTxt(const std::string& name, std::string* result); typedef unsigned char GLEBYTE; enum GLECSVDataStatus { GLECSVDataStatusOK, GLECSVDataStatusEOL, GLECSVDataStatusEOF }; enum GLECSVErrorCode { GLECSVErrorNone, GLECSVErrorFileNotFound, GLECSVErrorUnterminatedString, GLECSVErrorInconsistentNrColumns }; class GLECSVError { public: GLECSVError(); ~GLECSVError(); GLECSVErrorCode errorCode; unsigned int errorLine; unsigned int errorColumn; string errorString; }; class GLECSVData { protected: vector m_buffer; vector m_cellPos; vector m_cellSize; vector m_firstCell; GLEBYTE* m_data; bool* m_delims; unsigned int m_size; unsigned int m_pos; unsigned int m_writePos; unsigned int m_lines; unsigned int m_firstColumn; unsigned int m_nextLine; unsigned int m_ignoreHeader; GLECSVError m_error; string m_fileName; string m_comment; bool m_lastDelimWasSpace; public: GLECSVData(); ~GLECSVData(); bool read(const std::string& file); void readBuffer(const char* buffer); void print(ostream& os); void setDelims(const char* delims); void setCommentIndicator(const char* comment); void setIgnoreHeader(unsigned int ignore); GLECSVError* getError(); unsigned int getNbLines(); unsigned int getNbColumns(unsigned int line); const char* getCell(unsigned int row, unsigned int column, unsigned int* size); string getCellString(unsigned int row, unsigned int column); void setCellTrim(unsigned int row, unsigned int column, const char* data); unsigned int validateIdenticalNumberOfColumns(); private: bool readBlock(const std::string& file); void parseBlock(); void initDelims(); bool isDelim(GLEBYTE ch); bool isSpace(GLEBYTE ch); bool isEol(GLEBYTE ch); bool isComment(GLEBYTE ch); GLECSVDataStatus skipTillEol(); GLECSVDataStatus ignoreHeader(); GLECSVDataStatus readCellString(GLEBYTE quote); GLECSVDataStatus readCell(); void createCell(unsigned int cellSize, unsigned int cellPos); GLECSVDataStatus readNewline(GLEBYTE prevCh); bool isSizeCheckOKEndOfLine(unsigned int cellSize); bool isSizeCheckOKAtDelim(GLEBYTE delim, unsigned int cellSize); void goBack(); unsigned int lastCharPos(); GLEBYTE readChar(); GLEBYTE readSignificantChar(); void initWritePos(); void writeChar(GLEBYTE ch); GLECSVDataStatus skipSpacesAndFirstDelim(GLEBYTE ch); void createErrorString(const string& str); unsigned int getUTF8Column(unsigned int cellPos); unsigned int getFirstCell(unsigned int line); }; #endif gle-graphics-4.2.4c/src/gle/core.cpp0000664000000000000000000030437211722434562015742 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ #define FONTDEF extern #include "all.h" #include "bitmap/img2ps.h" #include "core.h" #include "d_interface.h" #include "justify.h" #include "gprint.h" #include "var.h" #include "sub.h" #include "file_io.h" #include "cutils.h" #include "keyword.h" #include "run.h" #include "color.h" #include "texinterface.h" #include "tokens/stokenizer.h" #include "gle-interface/gle-interface.h" #include "font.h" #include "cmdline.h" #include "config.h" void g_graph_init(); void dis_mat(char *s,double m[3][3]); int mystrncmp(char *a, char *b, int n); gmodel g; double tmpimg[3][3]; double tmpimg2[3][3]; double font_lwidth; static int ngsave; static gmodel *gsave[100]; int g_compatibility = GLE_COMPAT_MOST_RECENT; /*---------------------------------------------------------------------------*/ #define dbg if ((gle_debug & 32)>0) extern int gle_debug; /*-----------------------------------------------*/ /* The global variables that CORE keeps track of */ /*-----------------------------------------------*/ void test_unit(void); void clean_surface(); void g_arrowsize_actual(GLEArrowProps* arrow, double* lwd, bool sz_az); void g_arrowsize_transform(GLEArrowProps* arrow, double lwd, bool sz_az); int gunit=false; GLERectangle g_UserBoxDev; GLECore g_core; unsigned int coreleft() { return 4000000; } unsigned int farcoreleft() { return 1200000; } GLECore::GLECore() { } GLECore::~GLECore() { } void GLECore::reset() { m_isComputingLength = false; m_totalLength = 0.0; m_showNoteAboutFallback = true; } bool GLECore::isComputingLength() const { return m_isComputingLength; } void GLECore::setComputingLength(bool computingLength) { m_isComputingLength = computingLength; } double GLECore::getTotalLength() const { return m_totalLength; } void GLECore::setTotalLength(double length) { m_totalLength = length; } void GLECore::addToLength(double value) { m_totalLength += value; } bool GLECore::isShowNoteAboutFallback() const { return m_showNoteAboutFallback; } void GLECore::setShowNoteAboutFallback(bool value) { m_showNoteAboutFallback = value; } GLEWithoutUpdates::GLEWithoutUpdates() { m_core = g_get_core(); m_isComputingLength = m_core->isComputingLength(); m_core->setComputingLength(false); } GLEWithoutUpdates::~GLEWithoutUpdates() { m_core->setComputingLength(m_isComputingLength); } GLECore* g_get_core() { return &g_core; } // Called only once g_clear is called for each script. void g_init() { clean_surface(); g.devtype = GLE_DEVICE_NONE; g.dev = NULL; g.console_output = false; g.needs_newline = true; g_graph_init(); } void g_get_version(string* version) { *version = GLEVN; #ifdef GLE_SNAPSHOT *version += GLE_SNAPSHOT; #endif } void g_get_build_date(string* date) { date->resize(0); #if defined(__TIME__) && defined(__DATE__) string bdate(__DATE__); bdate += " "; bdate += __TIME__; str_replace_all(bdate, " ", " "); *date = bdate; #endif } string g_get_version() { string version; g_get_version(&version); return version; } string g_get_version_nosnapshot() { return string(GLEVN); } const char* g_device_to_ext(int device) { switch (device) { case GLE_DEVICE_EPS: case GLE_DEVICE_CAIRO_EPS: return ".eps"; case GLE_DEVICE_PS: case GLE_DEVICE_CAIRO_PS: return ".ps"; case GLE_DEVICE_PDF: case GLE_DEVICE_CAIRO_PDF: return ".pdf"; case GLE_DEVICE_SVG: case GLE_DEVICE_CAIRO_SVG: return ".svg"; case GLE_DEVICE_JPEG: return ".jpg"; case GLE_DEVICE_PNG: return ".png"; default: return ""; } } GLEDevice* g_select_device(int device) { g.devtype = device; if (g.dev != NULL) { delete g.dev; g.dev = NULL; } switch (device) { case GLE_DEVICE_PS: g.dev = new PSGLEDevice(false); break; case GLE_DEVICE_EPS: g.dev = new PSGLEDevice(true); break; case GLE_DEVICE_DUMMY: g.dev = new GLEDummyDevice(false); break; #ifdef HAVE_CAIRO case GLE_DEVICE_CAIRO_PDF: g.dev = new GLECairoDevicePDF(false); break; case GLE_DEVICE_CAIRO_EPS: g.dev = new GLECairoDeviceEPS(false); break; case GLE_DEVICE_CAIRO_SVG: g.dev = new GLECairoDeviceSVG(false); break; #ifdef __WIN32__ case GLE_DEVICE_EMF: g.dev = new GLECairoDeviceEMF(false); break; #endif #endif #ifdef HAVE_X11 case GLE_DEVICE_X11: g.dev = new X11GLEDevice(); break; #endif } return g.dev; } GLEDevice* g_set_dummy_device() { g_flush(); GLEDevice* previous = g.dev; g.dev = new GLEDummyDevice(false); g.devtype = GLE_DEVICE_DUMMY; return previous; } void g_restore_device(GLEDevice* device) { if (device != NULL) { g_flush(); delete g.dev; g.dev = device; g.devtype = device->getDeviceType(); } } GLEDevice* g_get_device_ptr() { return g.dev; } int g_get_device() { return g.devtype; } bool g_is_dummy_device() { return g.devtype == GLE_DEVICE_DUMMY; } void g_devcmd(const char *s) { g.dev->devcmd(s); } void g_resetfont() { g.dev->resetfont(); } void g_dfont(const char *s) { g.dev->dfont((char*)s); } GLERC g_get_fill_clear() { GLERC color(new GLEColor()); color->setTransparent(true); return color; } GLERC g_get_color_hex(int hexValue) { GLERC color(new GLEColor()); color->setHexValue(hexValue); return color; } void g_hint(char *s) { gprint("%s\n",s); } void g_message(const string& s) { g_message(s.c_str()); } void g_message(const char *s) { GLEInterface* iface = GLEGetInterfacePointer(); if (!g.console_output) { g.console_output = true; if (g.needs_newline) iface->getOutput()->println(); } iface->getOutput()->println(s); } bool g_has_console_output() { return g.console_output; } void g_set_console_output(bool set) { g.console_output = set; } bool g_reset_message() { bool res = g.console_output; if (g.console_output) { cerr << endl; } g.console_output = false; return res; } void g_message_first_newline(bool newline) { g.needs_newline = newline; } void g_get_end(dbl *x,dbl *y) { *x = tex_xend(); *y = tex_yend(); } void g_set_end(dbl x,dbl y) { gprint("What is setting end \n"); } void g_get_usersize(dbl *x,dbl *y) { *x = g.userwidth; *y = g.userheight; } void g_get_pagesize(dbl *x,dbl *y) { *x = g.pagewidth; *y = g.pageheight; } void g_get_pagesize(dbl *x, dbl *y, int *type) { *x = g.pagewidth; *y = g.pageheight; *type = g.papersize; } void g_get_bounds(dbl *x1,dbl *y1,dbl *x2,dbl *y2) { *x1 = g.xmin; *y1 = g.ymin; *x2 = g.xmax; *y2 = g.ymax; } void g_init_bounds() { g.xmin = 1e30; g.ymin = 1e30; g.xmax = -1e30; g.ymax = -1e30; } void g_get_type(char *t) { g.dev->get_type(t); } void g_set_path(int onoff) { if (static_cast(onoff)==g.inpath) return; g_flush(); if (static_cast(onoff) == true) { g.inpath=true; g.npath = 0; g.xinline=false; } else { g.inpath = false; g.xinline = false; } g.dev->set_path(onoff); } void g_get_path(int *onoff) { *onoff = g.inpath; } void g_newpath() { g.npath = 0; g.dev->newpath(); } void g_set_size(double width, double height, bool box) { g.userwidth = width; g.userheight = height; g.hasbox = box; } bool g_has_size() { return g.userwidth > 0 && g.userheight > 0; } void g_set_pagesize(double width, double height) { g.pagewidth = width; g.pageheight = height; g.papersize = GLE_PAPER_UNKNOWN; } void g_set_margins(double top, double bottom, double left, double right) { g.topmargin = top; g.bottommargin = bottom; g.leftmargin = left; g.rightmargin = right; } int g_papersize_type(const string& papersize) { if (papersize == "a0paper") { return GLE_PAPER_A0; } else if (papersize == "a1paper") { return GLE_PAPER_A1; } else if (papersize == "a2paper") { return GLE_PAPER_A2; } else if (papersize == "a3paper") { return GLE_PAPER_A3; } else if (papersize == "a4paper") { return GLE_PAPER_A4; } else if (papersize == "letterpaper") { return GLE_PAPER_LETTER; } else { return GLE_PAPER_UNKNOWN; } } /* 4A0 1682 � 2378 ? ? ? ? 2A0 1189 � 1682 ? ? ? ? A0 841 � 1189 B0 1000 � 1414 C0 917 � 1297 A1 594 � 841 B1 707 � 1000 C1 648 � 917 A2 420 � 594 B2 500 � 707 C2 458 � 648 A3 297 � 420 B3 353 � 500 C3 324 � 458 A4 210 � 297 B4 250 � 353 C4 229 � 324 A5 148 � 210 B5 176 � 250 C5 162 � 229 A6 105 � 148 B6 125 � 176 C6 114 � 162 A7 74 � 105 B7 88 � 125 C7 81 � 114 A8 52 � 74 B8 62 � 88 C8 57 � 81 A9 37 � 52 B9 44 � 62 C9 40 � 57 A10 26 � 37 B10 31 � 44 C10 28 � 40 */ void g_set_pagesize(int type) { g.papersize = type; switch (type) { case GLE_PAPER_A0: g.pagewidth = 84.1; g.pageheight = 118.9; break; case GLE_PAPER_A1: g.pagewidth = 59.4; g.pageheight = 84.1; break; case GLE_PAPER_A2: g.pagewidth = 42.0; g.pageheight = 59.4; break; case GLE_PAPER_A3: g.pagewidth = 29.7; g.pageheight = 42.0; break; case GLE_PAPER_A4: g.pagewidth = 21.0; g.pageheight = 29.7; break; case GLE_PAPER_LETTER: g.pagewidth = 21.6; g.pageheight = 27.9; break; } } void g_set_pagesize(const string& papersize) throw (ParserError) { SpaceStringTokenizer tokens(papersize.c_str()); const string& token = tokens.next_token(); int type = g_papersize_type(token); if (type != GLE_PAPER_UNKNOWN) { g_set_pagesize(type); } else { tokens.pushback_token(); g.pagewidth = tokens.next_double(); g.pageheight = tokens.next_double(); g.papersize = GLE_PAPER_UNKNOWN; } } void g_set_margins(const string& margins) throw (ParserError) { SpaceStringTokenizer tokens(margins.c_str()); g.topmargin = tokens.next_double(); g.bottommargin = tokens.next_double(); g.leftmargin = tokens.next_double(); g.rightmargin = tokens.next_double(); } void g_set_rotate_fullpage(bool rotfp) { g.rotate = rotfp; } bool g_is_rotate_fullpage() { return g.rotate; } void g_set_fullpage(bool fullpage) { g.fullpage = fullpage; } bool g_is_fullpage() { return g.fullpage; } void g_set_landscape(bool landscape) { g.landscape = landscape; } bool g_is_landscape() { return g.landscape; } double g_draw_width() { if (g_is_landscape()) { return g.pageheight - g.leftmargin - g.rightmargin; } else { return g.pagewidth - g.leftmargin - g.rightmargin; } } double g_draw_height() { if (g_is_landscape()) { return g.pagewidth - g.topmargin - g.bottommargin; } else { return g.pageheight - g.topmargin - g.bottommargin; } } void g_open(GLEFileLocation* outputfile, const string& inputfile) { if (g.isopen) return; g.isopen = true; g_reset_message(); bool centerfig = false; double scalefac = 1.0; if (g.userwidth < 0 || g.userheight < 0) { // No size command given: full page + all available space g.userwidth = g_draw_width(); g.userheight = g_draw_height(); g.fullpage = true; } else { // Center figure if full page mode centerfig = true; if (g.fullpage) { // how much area is outside the page in landscape / portrait mode? double area_horiz_norm = max(0.0, g.userwidth - g.pagewidth) * g.userheight; double area_vert_norm = max(0.0, g.userheight - g.pageheight) * g.userwidth; double area_horiz_land = max(0.0, g.userheight - g.pagewidth) * g.userwidth; double area_vert_land = max(0.0, g.userwidth - g.pageheight) * g.userheight; if (area_horiz_land + area_vert_land < area_horiz_norm + area_vert_norm) { g_set_landscape(true); } double userWidth = g.userwidth; double userHeight = g.userheight; if (g_is_landscape()) { userWidth = g.userheight; userHeight = g.userwidth; } if (userWidth > g.pagewidth) { scalefac = g.pagewidth / userWidth; } if (userHeight > g.pageheight) { scalefac = min(scalefac, g.pageheight / userHeight); } // cout << endl << "scale = " << scalefac << endl; } } if (g.fullpage) { if (g_get_compatibility() <= GLE_COMPAT_35) { if (!g_is_rotate_fullpage()) { // No real fullpage mode in 3.5 g.dev->opendev(g.pagewidth, g.pageheight, outputfile, inputfile); g_on_open(); // This is rather arbitrary, but this is how it was in 3.x g_translate(1.5, 1.01); if (g.userwidth > g.userheight) { // Rotate page in landscape mode (not just the figure) g_move(0.0,0.0); g_rotate(90.0); g_translate(0.0,-g.userheight); g_move(0.0,0.0); } } else { // Rotate page into landscape mode g.dev->opendev(g.pageheight, g.pagewidth, outputfile, inputfile); g_on_open(); if (g.userwidth > g.userheight) { // Rotates cancel out g_translate(1.01, -1.5+g.pagewidth-g.userheight); } else { g_translate(0, g.pagewidth); g_rotate(-90.0); g_translate(1.5, 1.01); } } } else { if (!g_is_rotate_fullpage()) { g.dev->opendev(g.pagewidth, g.pageheight, outputfile, inputfile); g_on_open(); if (g_is_landscape()) { // Note: landscape only rotates the figure, not the full page // -> this is how it was intended (don't change this) g_translate(g.pagewidth, 0); g_rotate(90.0); } } else { g.dev->opendev(g.pageheight, g.pagewidth, outputfile, inputfile); g_on_open(); if (!g_is_landscape()) { // This rotation together with landscape cancels out g_translate(0, g.pagewidth); g_rotate(-90.0); } } if (centerfig) { double left = g.leftmargin + (g_draw_width() - g.userwidth)/2; double bottom = g.bottommargin + (g_draw_height() - g.userheight)/2; g_translate(left, bottom); } else { g_translate(g.leftmargin, g.bottommargin); } } } else { g.dev->opendev(g.userwidth, g.userheight, outputfile, inputfile); g_on_open(); } g_UserBoxDev.setDimensions(0.0, 0.0, g.userwidth, g.userheight); g_dev(&g_UserBoxDev); if (g.hasbox) { g_box_stroke(0.0, 0.0, g.userwidth, g.userheight, false); } } void g_get_userbox_undev(GLERectangle* rect) { rect->copy(&g_UserBoxDev); g_undev(rect); } void g_close() { g.isopen = false; g_flush(); g.dev->closedev(); } void g_pscomment(char* ss) { if(g.isopen) { gprint("Can't call PSCOMMENT before SIZE command. Ignoring\n"); } else { g.dev->pscomment(ss); } } void g_psbbtweak(void) { } bool g_is_bbtweak() { // return g.bbtweak; return true; } void g_set_line_cap(int i) { /* lcap, 0= butt, 1=round, 2=projecting square */ if (i<0 || i>2) { gprint("Invalid line cap, {%d}, valid numbers are \n",i); gprint(" 0= butt, 1=round, 2=projecting square \n"); } g.dev->set_line_cap(i); g.lcap = i; } void g_set_line_join(int i) { if (i<0 || i>2) { gprint("Invalid line join, {%d}, valid numbers are \n",i); gprint(" 0= mitre, 1=round, 2=bevel \n"); } g.dev->set_line_join(i); g.ljoin = i; } void g_get_line_join(int *i) { *i = g.ljoin; } void g_get_line_cap(int *i) { *i = g.lcap; } void g_set_line_miterlimit(double d) { g.dev->set_line_miterlimit(d); g.miterlimit = d; } void g_get_line_width(double *w) { *w = g.lwidth; } void g_set_line_width(double w) { if (w < 0) return; g.dev->set_line_width(w); g.lwidth = w; } void g_set_font_width(double w) { font_lwidth = w; } void g_get_line_styled(double *w) { *w = g.lstyled; } void g_set_line_styled(double w) { if (w==0) return; g.dev->set_line_styled(w); g.lstyled = w; } void g_set_line_style(const char *s) { g.dev->set_line_style(s); strncpy(g.lstyle,s,8); } void g_get_line_style(char *s) { strncpy(s, (char *)&g.lstyle, 8); } double g_get_angle_deg() { if (fabs(g.image[0][0]) <= 1e-6) { return g.image[1][0] > 0.0 ? 90.0 : -90.0; } else { return myatan2(g.image[1][0], g.image[0][0])*180/GLE_PI; } } void g_get_scale(double* sx, double* sy) { double x0, y0, x1, y1; g_dev(0.0, 0.0, &x0, &y0); g_dev(1.0, 1.0, &x1, &y1); *sx = (x1-x0)/PS_POINTS_PER_INCH*CM_PER_INCH; *sy = (y1-y0)/PS_POINTS_PER_INCH*CM_PER_INCH; } double g_get_avg_scale() { double sx, sy; g_get_scale(&sx, &sy); return (sx + sy)/2.0; } void g_dev(double x, double y, double *xd, double *yd) { if (static_cast(gunit)==true) { *xd = x; *yd = y; } else { *xd = g.image[0][0]*x + g.image[0][1]*y + g.image[0][2]; *yd = g.image[1][0]*x + g.image[1][1]*y + g.image[1][2]; } } void g_dev(GLEPoint* pt) { g_dev(pt->m_X, pt->m_Y, &pt->m_X, &pt->m_Y); } void g_dev_rel(GLEPoint* pt) { pt->m_X = g.image[0][0]*pt->m_X + g.image[0][1]*pt->m_Y; pt->m_Y = g.image[1][0]*pt->m_X + g.image[1][1]*pt->m_Y; } void g_dev(GLERectangle* rect) { double x1, x2, y1, y2; g_dev(rect->getXMin(), rect->getYMin(), &x1, &y1); g_dev(rect->getXMax(), rect->getYMax(), &x2, &y2); rect->setDimensions(x1, y1, x2, y2); rect->normalize(); } void g_undev(double ux, double uy, double *x, double *y, gmodel* model) { static double xx,yy,cdiv,xd,yd; if (static_cast(gunit) == true) { *x = ux; *y = uy; } else { cdiv = ( model->image[0][1]*model->image[1][0] - model->image[0][0]*model->image[1][1] ); if (cdiv == 0) { gprint("Image matrix FLAT, a 1D world, giving up \n"); return; } xd = ux - model->image[0][2]; yd = uy - model->image[1][2]; xx = -xd*model->image[1][1] + yd*model->image[0][1]; *x = xx/cdiv; yy = xd*model->image[1][0]-yd*model->image[0][0]; *y = yy/cdiv; } } void g_undev(double ux, double uy, double *x, double *y) { g_undev(ux, uy, x, y, &g); } void g_undev(GLERectangle* rect, gmodel* g) { double x1, x2, y1, y2; g_undev(rect->getXMin(), rect->getYMin(), &x1, &y1, g); g_undev(rect->getXMax(), rect->getYMax(), &x2, &y2, g); rect->setDimensions(x1, y1, x2, y2); rect->normalize(); } void g_undev(GLERectangle* rect) { double x1, x2, y1, y2; g_undev(rect->getXMin(), rect->getYMin(), &x1, &y1); g_undev(rect->getXMax(), rect->getYMax(), &x2, &y2); rect->setDimensions(x1, y1, x2, y2); rect->normalize(); } void g_rundev(double x, double y,double *xd,double *yd) { static double zx,zy; g_undev(0,0,&zx,&zy); g_undev(x,y,xd,yd); *xd -= zx; *yd -= zy; } void g_rdev(double x, double y,double *xd,double *yd) { static double zx,zy; g_dev(0,0,&zx,&zy); g_dev(x,y,xd,yd); *xd -= zx; *yd -= zy; } void g_fill() { g.dev->fill(); } void g_fill_ary(int nwk,double *wkx,double *wky) { g.dev->fill_ary(nwk,wkx,wky); } void g_line_ary(int nwk,double *wkx,double *wky) { g.dev->line_ary(nwk,wkx,wky); } void g_stroke() { g.dev->stroke(); } void g_clip() { /* Find the intersection of the current path with the clipping path */ /* and thus define a new clipping path */ g.dev->clip(); } void g_set_matrix(double newmat[3][3], gmodel* old_g, gmodel* new_g) { double x1, y1, x2, y2, x3, y3, x4, y4; double a1, b1, a2, b2, a3, b3, a4, b4; bool modified = false; bool has_box = g_has_box(old_g); // Check if transformation matrix is different from old one if (memcmp(newmat, old_g->image, GLE_TRNS_MATRIX_SIZE) != 0) { if (has_box) { g_dev(old_g->xmin, old_g->ymin, &x1, &y1); g_dev(old_g->xmax, old_g->ymin, &x2, &y2); g_dev(old_g->xmax, old_g->ymax, &x3, &y3); g_dev(old_g->xmin, old_g->ymax, &x4, &y4); #ifdef CORE_MATRIX_DEBUG cout << "c1 : " << old_g->xmin << ", " << old_g->ymin << endl; cout << "c2 : " << old_g->xmax << ", " << old_g->ymin << endl; cout << "c3 : " << old_g->xmax << ", " << old_g->ymax << endl; cout << "c4 : " << old_g->xmin << ", " << old_g->ymax << endl; #endif } new_g->dev->set_matrix(newmat); if (newmat != new_g->image) memcpy(&new_g->image, newmat, GLE_TRNS_MATRIX_SIZE); modified = true; } #ifdef CORE_MATRIX_DEBUG cout << "modified: " << modified << " has box: " << has_box << " min " << old_g->xmin << " max " << old_g->xmax << endl; #endif if (has_box) { if (modified) { g_undev(x1, y1, &a1, &b1, new_g); g_undev(x2, y2, &a2, &b2, new_g); g_undev(x3, y3, &a3, &b3, new_g); g_undev(x4, y4, &a4, &b4, new_g); g_set_bounds(a1, b1, new_g); g_set_bounds(a2, b2, new_g); g_set_bounds(a3, b3, new_g); g_set_bounds(a4, b4, new_g); #ifdef CORE_MATRIX_DEBUG cout << "c1 : " << a1 << ", " << b1 << endl; cout << "c2 : " << a2 << ", " << b2 << endl; cout << "c3 : " << a3 << ", " << b3 << endl; cout << "c4 : " << a4 << ", " << b4 << endl; #endif } else { g_set_bounds(old_g->xmin, old_g->ymin, new_g); g_set_bounds(old_g->xmax, old_g->ymax, new_g); #ifdef CORE_MATRIX_DEBUG cout << "update : " << old_g->xmin << ", " << old_g->ymin << endl; cout << "update : " << old_g->xmax << ", " << old_g->ymax << endl; cout << "yields : " << new_g->xmin << ", " << new_g->ymin << endl; cout << "yields : " << new_g->xmax << ", " << new_g->ymax << endl; #endif } } } void g_set_matrix(double newmat[3][3]) { g_set_matrix(newmat, &g, &g); } void g_clear_matrix() { /* Clear transformation matrix */ for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { g.image[i][j] = 0.0; } g.image[i][i] = 1.0; } } void mat_mult(double a[3][3],double b[3][3]) { static double c[3][3],tot; int y,xb,x; for (y=0;y<3;y++) { for (xb=0;xb<3;xb++) { tot = 0; for (x=0;x<3;x++) tot += a[x][y] * b[xb][x]; c[xb][y] = tot; } } memcpy(a,&c,GLE_TRNS_MATRIX_SIZE); /* maybe sizeof(*a) would be better? */ } void g_rotate(double ar) { static double r[3][3],unx,uny,cx,cy; if (ar == 0.0) { /* Do not have to do anything if arrow is zero */ return; } ar = GLE_PI*ar/180; r[0][0] = cos(ar); r[0][1] = -sin(ar); r[1][0] = sin(ar); r[1][1] = cos(ar); r[2][2] = 1; g_dev(g.curx,g.cury,&cx,&cy); g_rundev(-cx,-cy,&unx,&uny); g_translate(unx,uny); memcpy(tmpimg,g.image,GLE_TRNS_MATRIX_SIZE); mat_mult(tmpimg,r); g_set_matrix(tmpimg); g_rundev(cx,cy,&unx,&uny); g_translate(unx,uny); /* not shore about this ORIGIN stuff */ test_unit(); } void gg_unrotate(void); void gg_rerotate(void); void g_scale(double sx,double sy) { /* The idea is to rotate or scale about the CURRENT POINT */ static double r[3][3],unx,uny,cx,cy; r[0][0] = sx; r[1][1] = sy; r[2][2] = 1; gg_unrotate(); g_dev(g.curx,g.cury,&cx,&cy); g_rundev(-cx,-cy,&unx,&uny); g_translate(unx,uny); memcpy(tmpimg,g.image,GLE_TRNS_MATRIX_SIZE); mat_mult(tmpimg,r); g_set_matrix(tmpimg); g_rundev(cx,cy,&unx,&uny); g_translate(unx,uny); /* not shore about this ORIGIN stuff */ gg_rerotate(); test_unit(); } void g_shear(double sx,double sy) { /* The idea is to rotate or scale about the CURRENT POINT */ static double r[3][3],unx,uny,cx,cy; r[0][0] = 1; r[1][0] = sy; r[1][1] = 1; r[0][1] = sx; r[2][2] = 1; gg_unrotate(); g_dev(g.curx,g.cury,&cx,&cy); g_rundev(-cx,-cy,&unx,&uny); g_translate(unx,uny); memcpy(tmpimg,g.image,GLE_TRNS_MATRIX_SIZE); mat_mult(tmpimg,r); g_set_matrix(tmpimg); g_rundev(cx,cy,&unx,&uny); g_translate(unx,uny); /* not shore about this ORIGIN stuff */ gg_rerotate(); test_unit(); } static double ggra; void gg_rerotate() { g_rotate(ggra); } void gg_unrotate() { double ox,oy,x1,y0,dx,dy,tt; g_dev(0.0,0.0,&ox,&oy); g_dev(1.0,0.0,&x1,&y0); dx = x1-ox; dy = y0-oy; tt = myatan2(dy,dx); ggra = tt * 180.0 / GLE_PI; g_rotate(-ggra); } void dis_mat(char *s,double m[3][3]) { gprint("\n Matrix {%s} \n",s); for (int i = 0; i < 3; i++) { gprint(" %f %f %f \n",m[0][i],m[1][i],m[2][i]); } } void g_translate(double ztx,double zty) { static double tx,ty,r[3][3]; g_rdev(ztx,zty,&tx,&ty); r[0][0] = 1; r[1][1] = 1; r[2][2] = 1; r[0][2] = tx; r[1][2] = ty; memcpy(tmpimg,g.image,GLE_TRNS_MATRIX_SIZE); mat_mult(tmpimg,r); g_set_matrix(tmpimg); test_unit(); } void g_move(const GLEPoint& pt) { g_move(pt.getX(), pt.getY()); } void g_move(double zx, double zy) { if (static_cast(g.xinline)==true) g_flush(); g.dev->move(zx,zy); g.curx = zx; g.cury = zy; g.closex = zx; g.closey = zy; } void g_set_pos(double zx,double zy) { g.curx = zx; g.cury = zy; g_update_bounds(zx,zy); } void g_set_pos(const GLEPoint& p) { g.curx = p.getX(); g.cury = p.getY(); g_update_bounds(p.getX(), p.getY()); } void g_rset_pos(double x, double y) { g.curx += x; g.cury += y; g_update_bounds(g.curx,g.cury); } void g_rmove(double zx,double zy) { g_move(g.curx+zx,g.cury+zy); } void g_rline(double zx,double zy) { g_line(g.curx+zx,g.cury+zy); } void g_reverse() { g.dev->reverse(); } void g_closepath() { if (g.inpath) g.dev->closepath(); else g_line(g.closex,g.closey); g.curx = g.closex; g.cury = g.closey; if (!g.inpath) g_flush(); } void g_line(const GLEPoint& p) { g_line(p.getX(), p.getY()); } void g_line(double zx, double zy) { GLEPoint origin; g_get_xy(&origin); g.dev->line(zx,zy); if (g.xinline == false) { g.xinline = true; g_update_bounds(g.curx, g.cury); } g.curx = zx; g.cury = zy; g_update_bounds(zx, zy); GLECore* core = g_get_core(); if (core->isComputingLength()) { GLEPoint endPoint(zx, zy); core->addToLength(origin.distance(endPoint)); } } void g_update_bounds(double x, double y) { if (x < g.xmin) g.xmin = x; if (x > g.xmax) g.xmax = x; if (y < g.ymin) g.ymin = y; if (y > g.ymax) g.ymax = y; //g_check_bounds("after g_set_bounds"); } void g_set_bounds(double x, double y, gmodel* model) { if (x < model->xmin) model->xmin = x; if (x > model->xmax) model->xmax = x; if (y < model->ymin) model->ymin = y; if (y > model->ymax) model->ymax = y; } bool g_has_box(gmodel* model) { return model->xmin <= model->xmax && model->ymin <= model->ymax; } void g_update_bounds_box(GLERectangle* box) { // cout << "update " << g.xmin << " " << g.xmax << " " << g.ymin << " " << g.ymax << endl; if (g_has_box(&g)) { if (g.xmin < box->getXMin()) box->setXMin(g.xmin); if (g.xmax > box->getXMax()) box->setXMax(g.xmax); if (g.ymin < box->getYMin()) box->setYMin(g.ymin); if (g.ymax > box->getYMax()) box->setYMax(g.ymax); } } void g_restore_bounds(double xmin, double xmax, double ymin, double ymax) { g.xmin = xmin; g.xmax = xmax; g.ymin = ymin; g.ymax = ymax; } void g_get_bounds(GLERectangle* rect) { rect->setXMin(g.xmin); rect->setYMin(g.ymin); rect->setXMax(g.xmax); rect->setYMax(g.ymax); } void g_set_bounds(GLERectangle* rect) { g.xmin = rect->getXMin(); g.ymin = rect->getYMin(); g.xmax = rect->getXMax(); g.ymax = rect->getYMax(); } void g_update_bounds(GLERectangle* rect) { g_update_bounds(rect->getXMin(), rect->getYMin()); g_update_bounds(rect->getXMax(), rect->getYMax()); } void g_debug_bounds(const char* out) { cout << out << ": bounds: (" << g.xmin << ", " << g.ymin << ") - (" << g.xmax << ", " << g.ymax << ")" << endl; } void g_check_bounds(const char* after) { if (g.xmin == -1e30 || g.xmax == 1e30 || g.ymin == -1e30 || g.ymax == 1e30) { ostringstream ostr; ostr << "bounds error: " << after << endl; ostr << "yields : " << g.xmin << ", " << g.ymin << endl; ostr << "yields : " << g.xmax << ", " << g.ymax; g_throw_parser_error(ostr.str().c_str()); } } void test_unit() { int i,j; gunit = true; for (i=0;i<3;i++) for (j=0;j<3;j++) if (i!=j) if(g.image[i][j]!=0.0) gunit = false; for (i=0;i<3;i++) if (g.image[i][i]!=1.0) gunit = false; } void tex_clear(void); void g_clear() { /* Reset all params */ // cout << "calling g_clear()" << endl; ngsave = 0; g.fontn = 0.0; g.fontsz = 0.0; /* up to here for font caching */ g.color = color_or_fill_from_int(GLE_COLOR_BLACK); g.fill = g_get_fill_clear(); g.lwidth = 0.0; g.lstyled = 0.0; g.curx = 0.0; g.cury = 0.0; g.endx = 0.0; g.endy = 0.0; g.miterlimit = 0.0; g.lcap = 0; g.ljoin = 0; g.just = 0; g.xinline = 0; g.npath = 0; /* up to here for STATE */ g.inpath = 0; g.xmin = 0.0; g.xmax = 0.0; g.ymin = 0.0; g.ymax = 0.0; /* bounds in USER coordinates */ g.startx = 0.0; g.starty = 0.0; g.closex = 0.0; g.closey = 0.0; /* for closepath */ g.arrowsize = 0.0; g.arrowangle = 0.0; g.arrowstyle = GLE_ARRSTY_FILLED; g.arrowtip = GLE_ARRTIP_SHARP; g.pdfimgformat = PDF_IMG_COMPR_ZIP; g.userheight = -1.0; g.userwidth = -1.0; g.pagewidth = -1.0; g.pageheight = -1.0; g.papersize = GLE_PAPER_UNKNOWN; g.topmargin = 0.0; g.bottommargin = 0.0; g.leftmargin = 0.0; g.rightmargin = 0.0; g.fullpage = false; g.landscape = false; g.rotate = false; g.hasbox = false; g.isopen = false; g.texlabels = false; /* Reset line style */ for (unsigned int i = 0; i < sizeof(g.lstyle); i++) { g.lstyle[i] = 0; } g.lstyle[0] = '1'; /* Clear transformation matrix */ g_clear_matrix(); /* set other constants */ g_set_fconst(GLEC_ATITLEDIST, 0.5); g_set_fconst(GLEC_ALABELDIST, 0.5); g_compatibility_settings(); g_get_core()->reset(); } void g_compatibility_settings() { if (g_get_compatibility() <= GLE_COMPAT_35) { g_set_fconst(GLEC_TITLESCALE, 1.5); g_set_fconst(GLEC_ATITLESCALE, 1.3); g_set_fconst(GLEC_ALABELSCALE, 1.0); g_set_fconst(GLEC_TICKSSCALE, 0.2); g.arrowstyle = GLE_ARRSTY_OLD35; } else { // Make sure GLEC_ATITLESCALE = 1 g_set_fconst(GLEC_TITLESCALE, 1.16); g_set_fconst(GLEC_ATITLESCALE, 1.0); g_set_fconst(GLEC_ALABELSCALE, 0.8); g_set_fconst(GLEC_TICKSSCALE, 0.3); } } void g_on_open() { /* Clear device dependent stuff */ g.dev->clear(); g_resetfont(); tex_clear(); g_set_just(JUST_LEFT); g_set_line_styled(0.04); g_set_line_style("1"); g_set_line_width(0.02); g_set_color(GLE_COLOR_BLACK); g_set_fill(GLE_FILL_CLEAR); g_set_font(1); /* Load and set default font */ g_set_font_width(-1); /* Load and set default font */ if (g_get_compatibility() <= GLE_COMPAT_35) { g_set_hei(1); } else { // Same default height as TeX fonts, don't change this. g_set_hei(0.3633); } g_move(0.0,0.0); test_unit(); } void g_restore_defaults() { /* FIXME - improve code sharing with above methods */ /* after 4.0.12 is out */ g.curx = 0.0; g.cury = 0.0; g.endx = 0.0; g.endy = 0.0; g.arrowsize = 0.0; g.arrowangle = 0.0; g.arrowstyle = GLE_ARRSTY_FILLED; g.arrowtip = GLE_ARRTIP_SHARP; if (g_get_compatibility() <= GLE_COMPAT_35) { g_set_fconst(GLEC_TITLESCALE, 1.5); g_set_fconst(GLEC_ATITLESCALE, 1.3); g_set_fconst(GLEC_ALABELSCALE, 1.0); g_set_fconst(GLEC_TICKSSCALE, 0.2); g.arrowstyle = GLE_ARRSTY_OLD35; } else { g_set_fconst(GLEC_TITLESCALE, 1.16); g_set_fconst(GLEC_ATITLESCALE, 1.0); g_set_fconst(GLEC_ALABELSCALE, 0.8); g_set_fconst(GLEC_TICKSSCALE, 0.3); } g_set_fconst(GLEC_ATITLEDIST, 0.5); g_set_fconst(GLEC_ALABELDIST, 0.5); g_set_just(JUST_LEFT); g_set_line_styled(0.04); g_set_line_style("1"); g_set_line_width(0.02); g_set_color(GLE_COLOR_BLACK); g_set_fill(GLE_FILL_CLEAR); g_set_font(1); /* Load and set default font */ g_set_font_width(-1); /* Load and set default font */ if (g_get_compatibility() <= GLE_COMPAT_35) { g_set_hei(1); } else { // Same default height as TeX fonts, don't change this. g_set_hei(0.3633); } g_move(0.0,0.0); test_unit(); } void g_get_xy(double *x,double *y) { *x = g.curx; *y = g.cury; } GLEPoint g_get_xy() { GLEPoint result; g_get_xy(&result); return result; } void g_get_xy(GLEPoint* pt) { pt->setX(g.curx); pt->setY(g.cury); } void g_set_xy(double x, double y) { g_move(x,y); } void g_flush() { if (g.inpath) return; g.dev->flush(); g.xinline = false; } void g_arcto(dbl x1,dbl y1,dbl x2,dbl y2,dbl rrr) { g.dev->arcto(x1,y1,x2,y2,rrr); g.curx = x2; g.cury = y2; g.xinline = true; /* should do MASSES of calc to find bounds of arc */ g_update_bounds(x1,y1); g_update_bounds(x2,y2); } void g_dojust(dbl *x1, dbl *y1, dbl *x2, dbl *y2, int jj) { double d; int jx,jy; jx = (jj & 0xf0) / 16; jy = jj & 0x0f; d = jx * (*x2-*x1)/2; *x1 -= d; *x2 -= d; d = jy * (*y2-*y1)/2; *y1 -= d; *y2 -= d; } void g_dotjust(dbl *x1, dbl *y1, dbl l, dbl r, dbl u, dbl d, int jj) { static int jx,jy,t; static double ddd; jx = (jj & 0xf0) / 16; jy = jj & 0x0f; t = (jj & 0xf00) / 256 ; ddd = jx * (-l+r)/2; *x1 = *x1 + -l - ddd; ddd = jy * (u-d)/2; if (t==0) *y1 = *y1 - d - ddd; } void g_box_stroke(GLERectangle* rect, bool reverse) { g_box_stroke(rect->getXMin(), rect->getYMin(), rect->getXMax(), rect->getYMax(), reverse); } void g_box_stroke(dbl x1, dbl y1, dbl x2, dbl y2, bool reverse) { double x,y; g_get_xy(&x,&y); g.dev->box_stroke(x1,y1,x2,y2,reverse); g_update_bounds(x1,y1); g_update_bounds(x2,y2); g_move(x,y); } void g_box_fill(GLERectangle* rect) { g_box_fill(rect->getXMin(), rect->getYMin(), rect->getXMax(), rect->getYMax()); } void g_box_fill(dbl x1, dbl y1, dbl x2, dbl y2) { double x,y; g_get_xy(&x,&y); g.dev->box_fill(x1,y1,x2,y2); g_update_bounds(x1,y1); g_update_bounds(x2,y2); g_move(x,y); } enum arrow_direction{CW,CCW}; void g_circle_stroke(dbl zr) { GLEPoint orig(g_get_xy()); g.dev->circle_stroke(zr); g_update_bounds(g.curx-zr,g.cury-zr); g_update_bounds(g.curx+zr,g.cury+zr); GLECore* core = g_get_core(); if (core->isComputingLength()) { GLECircleArc curve(orig, zr, 0.0, 2.0 * GLE_PI); core->addToLength(curve.getDist(curve.getT0(), curve.getT1())); } } void g_circle_fill(dbl zr) { g.dev->circle_fill(zr); g_update_bounds(g.curx-zr,g.cury-zr); g_update_bounds(g.curx+zr,g.cury+zr); } void g_update_arc_bounds_for_arrow_heads(GLECurvedArrowHead* head_start, GLECurvedArrowHead* head_end, double* t1, double* t2) { if (head_start->getStyle() != GLE_ARRSTY_SIMPLE) { if (head_start->isEnabled()) *t1 = head_start->getParamValueEnd()*180/GLE_PI; if (head_end->isEnabled()) *t2 = head_end->getParamValueEnd()*180/GLE_PI; } } double g_arc_normalized_angle2(double a1, double a2) { if (a2 < a1) { // Correctly normalize a2 return a2 + 360 * ceil((a1 - a2)/360.0); } else { return a2; } } void g_arc(double r, double t1, double t2, double cx, double cy, int arrow) { g_flush(); GLEPoint orig(cx, cy); GLECore* core = g_get_core(); if (core->isComputingLength()) { GLECircleArc circle(orig, r, t1*GLE_PI/180, t2*GLE_PI/180); core->addToLength(fabs(circle.getDist(circle.getT0(), circle.getT1()))); } GLEWithoutUpdates noUpdates; if (arrow != 0) { GLECircleArc circle(orig, r, t1*GLE_PI/180, t2*GLE_PI/180); GLECurvedArrowHead head_start(&circle); GLECurvedArrowHead head_end(&circle); if (arrow == 1 || arrow == 3) g_init_arrow_head(&head_start, true); if (arrow == 2 || arrow == 3) g_init_arrow_head(&head_end, false); g_update_arc_bounds_for_arrow_heads(&head_start, &head_end, &t1, &t2); g.dev->arc(r,t1,t2,cx,cy); head_start.computeAndDraw(); head_end.computeAndDraw(); } else { g.dev->arc(r,t1,t2,cx,cy); } g.curx = cx; g.cury = cy; } void g_narc(double r, double t1, double t2, double cx, double cy, int arrow) { g_flush(); GLEPoint orig(cx, cy); GLECore* core = g_get_core(); if (core->isComputingLength()) { GLECircleArc circle(orig, r, t1*GLE_PI/180, t2*GLE_PI/180); core->addToLength(fabs(circle.getDist(circle.getT0(), circle.getT1()))); } GLEWithoutUpdates noUpdates; if (arrow != 0) { GLECircleArc circle(orig, r, t2*GLE_PI/180, t1*GLE_PI/180); GLECurvedArrowHead head_start(&circle); GLECurvedArrowHead head_end(&circle); if (arrow == 1 || arrow == 3) g_init_arrow_head(&head_start, false); if (arrow == 2 || arrow == 3) g_init_arrow_head(&head_end, true); g_update_arc_bounds_for_arrow_heads(&head_start, &head_end, &t1, &t2); g.dev->narc(r,t1,t2,cx,cy); head_start.computeAndDraw(); head_end.computeAndDraw(); } else { g.dev->narc(r,t1,t2,cx,cy); } g.curx = cx; g.cury = cy; } void g_ellipse_stroke(dbl rx, dbl ry) { GLEPoint orig(g_get_xy()); g.dev->ellipse_stroke(rx,ry); g_update_bounds(g.curx-rx,g.cury-ry); g_update_bounds(g.curx+rx,g.cury+ry); GLECore* core = g_get_core(); if (core->isComputingLength()) { GLEEllipseArc curve(orig, rx, ry, 0.0, 2.0 * GLE_PI); core->addToLength(curve.getDist(curve.getT0(), curve.getT1())); } } void g_ellipse_fill(dbl rx, dbl ry) { g.dev->ellipse_fill(rx,ry); g_update_bounds(g.curx-rx,g.cury-ry); g_update_bounds(g.curx+rx,g.cury+ry); } void g_elliptical_arc(double rx, double ry, double t1, double t2, double cx, double cy, int arrow) { g_flush(); GLEPoint orig(cx, cy); GLECore* core = g_get_core(); if (core->isComputingLength()) { GLEEllipseArc arc(orig, rx, ry, t1*GLE_PI/180, t2*GLE_PI/180); core->addToLength(fabs(arc.getDist(arc.getT0(), arc.getT1()))); } GLEWithoutUpdates noUpdates; if (arrow != 0) { GLEEllipseArc ellipse(orig, rx, ry, t1*GLE_PI/180, t2*GLE_PI/180); GLECurvedArrowHead head_start(&ellipse); GLECurvedArrowHead head_end(&ellipse); if (arrow == 1 || arrow == 3) g_init_arrow_head(&head_start, true); if (arrow == 2 || arrow == 3) g_init_arrow_head(&head_end, false); g_update_arc_bounds_for_arrow_heads(&head_start, &head_end, &t1, &t2); g.dev->elliptical_arc(rx, ry, t1, t2, cx, cy); head_start.computeAndDraw(); head_end.computeAndDraw(); } else { g.dev->elliptical_arc(rx, ry, t1, t2, cx, cy); } g.curx = cx; g.cury = cy; } void g_elliptical_narc(double rx, double ry, double t1, double t2, double cx, double cy, int arrow) { g_flush(); GLEPoint orig(cx, cy); GLECore* core = g_get_core(); if (core->isComputingLength()) { GLEEllipseArc arc(orig, rx, ry, t1*GLE_PI/180, t2*GLE_PI/180); core->addToLength(fabs(arc.getDist(arc.getT0(), arc.getT1()))); } GLEWithoutUpdates noUpdates; if (arrow != 0) { GLEEllipseArc ellipse(orig, rx, ry, t2*GLE_PI/180, t1*GLE_PI/180); GLECurvedArrowHead head_start(&ellipse); GLECurvedArrowHead head_end(&ellipse); if (arrow == 1 || arrow == 3) g_init_arrow_head(&head_start, false); if (arrow == 2 || arrow == 3) g_init_arrow_head(&head_end, true); g_update_arc_bounds_for_arrow_heads(&head_start, &head_end, &t1, &t2); g.dev->elliptical_narc(rx, ry, t1, t2, cx, cy); head_start.computeAndDraw(); head_end.computeAndDraw(); } else { g.dev->elliptical_narc(rx, ry, t1, t2, cx, cy); } g.curx = cx; g.cury = cy; } void g_arrowcurve(double x, double y, int arrow, double a1, double a2, double d1, double d2) { if (d1 == 0.0 && d2 == 0.0) { g_arrowline(x, y, arrow, true); return; } double cx, cy, x1, y1, x2, y2; polar_xy(d1, a1, &x1, &y1); polar_xy(d2, a2, &x2, &y2); g_get_xy(&cx, &cy); GLEBezier bezier(cx, cy, cx+x1, cy+y1, x+x2, y+y2, x, y); GLECore* core = g_get_core(); if (core->isComputingLength()) { core->addToLength(bezier.getDist(0.0, 1.0)); } GLEWithoutUpdates noUpdates; if (arrow != 0) { GLECurvedArrowHead head_start(&bezier); GLECurvedArrowHead head_end(&bezier); if (arrow == 1 || arrow == 3) g_init_arrow_head(&head_start, true); if (arrow == 2 || arrow == 3) g_init_arrow_head(&head_end, false); GLEBezier todraw(bezier); if (head_start.getStyle() != GLE_ARRSTY_SIMPLE) { if (arrow == 1) todraw.cutFromParamValue(head_start.getParamValueEnd()); if (arrow == 2) todraw.cutAtParamValue(head_end.getParamValueEnd()); if (arrow == 3) { todraw.cutAtParamValue(head_end.getParamValueEnd()); double t0 = todraw.distToParamValue(0.0, head_start.getArrowCurveDist()*0.75); todraw.cutFromParamValue(t0); } } todraw.draw(); head_start.computeAndDraw(); head_end.computeAndDraw(); } else { bezier.draw(); } } void g_bezier(dbl x1, dbl y1, dbl x2, dbl y2, dbl x3, dbl y3) { GLEPoint origin; g_get_xy(&origin); g.dev->bezier(x1, y1, x2, y2, x3, y3); if (g.xinline == false) { g.xinline = true; g_update_bounds(g.curx, g.cury); } g.curx = x3; g.cury = y3; g_update_bounds(x3,y3); GLECore* core = g_get_core(); if (core->isComputingLength()) { GLEBezier bezierCurve(origin.getX(), origin.getY(), x1, y1, x2, y2, x3, y3); core->addToLength(bezierCurve.getDist(0.0, 1.0)); } } void g_bezier(const GLEPoint& p1, const GLEPoint& p2, const GLEPoint& p3) { g_bezier(p1.getX(), p1.getY(), p2.getX(), p2.getY(), p3.getX(), p3.getY()); } void g_dmove(double x, double y) { double ux,uy; g_undev(x,y,&ux,&uy); g.dev->move(ux,uy); g.curx = ux; g.cury = uy; } void g_dline(double x, double y) { double ux,uy; g_undev(x,y,&ux,&uy); g.dev->line(ux,uy); g.curx = ux; g.cury = uy; } void g_dbezier(dbl x1,dbl y1,dbl x2,dbl y2,dbl x3,dbl y3) { double a1,b1,a2,b2,a3,b3; g_undev(x1,y1,&a1,&b1); g_undev(x2,y2,&a2,&b2); g_undev(x3,y3,&a3,&b3); g_bezier(a1,b1,a2,b2,a3,b3); g.curx = a3; g.cury = b3; } int g_hash_string_to_color(const string& str, colortyp* c) { int err = 0; const char* color_str = str.c_str(); c->b[B_F] = (unsigned char)1; c->b[B_R] = (unsigned char)gle_pass_hex(color_str, 1, 2, &err); c->b[B_G] = (unsigned char)gle_pass_hex(color_str, 3, 2, &err); c->b[B_B] = (unsigned char)gle_pass_hex(color_str, 5, 2, &err); return err; } void g_set_fill(int fill) { g_set_fill(color_or_fill_from_int(fill)); } void g_set_fill(GLEColor* fill) { // Note: g_set_fill resets "pattern", so "set pattern" should come after "set fill" if (fill == 0) { g.fill = g_get_fill_clear(); } else { g.fill = fill->clone(); } g.dev->set_fill(g.fill); } void g_set_fill(const GLERC& fill) { g_set_fill(fill.get()); } void g_set_background(const GLERC& color) { update_color_fill_background(g.fill.get(), color.get()); g.dev->set_fill(g.fill); } void g_set_fill_pattern(const GLERC& pattern) { if (pattern->isFill() && pattern->getFill()->getFillType() == GLE_FILL_TYPE_PATTERN) { update_color_fill_pattern(g.fill.get(), static_cast(pattern->getFill())); g.dev->set_fill(g.fill); } else { g_throw_parser_error("expected fill pattern"); } } void g_set_color(GLEColor* color) { g.color = color->clone(); g.dev->set_color(g.color); } void g_set_color(const GLERC& color) { if (!color.isNull()) { g_set_color(color.get()); } } void g_set_color(int l) { if (l==0) return; g.color->setHexValueGLE(l); g.dev->set_color(g.color); } GLERC g_get_color() { return g.color->clone(); } void g_set_fill_method(const char* meth) { if (str_i_equals(meth, "DEFAULT")) g.dev->set_fill_method(GLE_FILL_METHOD_DEFAULT); else if (str_i_equals(meth, "GLE")) g.dev->set_fill_method(GLE_FILL_METHOD_GLE); else g.dev->set_fill_method(GLE_FILL_METHOD_POSTSCRIPT); } bool g_is_filled(void) { return !g.fill->isTransparent(); } GLERC g_get_fill() { return g.fill->clone(); } void g_beginclip() { g.dev->beginclip(); } void g_endclip() { g.dev->endclip(); } void g_gsave() { ngsave++; if (ngsave>=99) { gprint("Over 99 GSAVE's, probably a loop in your code\n"); return; } gsave[ngsave] = new gmodel(); g_get_state(gsave[ngsave]); g_init_bounds(); } void g_grestore() { static double a,b; g_flush(); if (ngsave==0) { gprint("Attempt to GRESTORE at top of stack\n"); if (gle_debug>0) a = a/b; return; } g_set_state(gsave[ngsave]); delete gsave[ngsave]; ngsave--; } void g_get_state(gmodel *s) { *s = g; s->fill = g.fill->clone(); s->color = g.color->clone(); } void g_set_state(gmodel* s) { g_set_matrix(s->image, &g, s); g = *s; g.dev->set_color(g.color); g.dev->set_fill(g.fill); g.dev->set_line_width(g.lwidth); g.dev->set_line_style(g.lstyle); g.dev->set_line_styled(g.lstyled); test_unit(); } void g_set_partial_state(gmodel* s) { g_set_color(s->color); g_set_fill(s->fill); g_set_line_width(s->lwidth); g_set_line_style(s->lstyle); g_set_line_styled(s->lstyled); } /* 12,4,-.5,-.5,0.35, original dot */ struct mark_struct { int ff; int cc; double rx; double ry; double scl; double x1; double x2; double y1; double y2; }; struct mark_struct minf[61]; extern char *mrk_name[]; extern char *mrk_fname[]; /* struct mark_struct { int ff, int cc, double rx, double ry, double scl;}; */ extern char *mark_name[]; extern char *mark_sub[]; extern int mark_subp[]; extern int nmark; extern int nmrk; void g_marker(int i, double sz) { g_marker2(i,sz,1.0); } void g_marker2(int i, double sz, double dval) throw(ParserError) { static double cx,cy,h,scale; static double x1,y1,x2,y2; int otype; if (i<0) { char *stk_str[6]; double stk[6]; int nstk=2; ++i; i = -i; if (mark_subp[i] == -1) { GLESub* sub = sub_find(mark_sub[i]); mark_subp[i] = sub != NULL ? sub->getIndex() : -1; if (mark_subp[i] == -1) { stringstream err; err << "subroutine '" << mark_sub[i] << "', which defines marker '" << mark_name[i] << "' not found"; g_throw_parser_error(err.str()); } else if (sub->getNbParam() != 2) { stringstream err; err << "subroutine '" << mark_sub[i] << "', which defines marker '" << mark_name[i] << "' should take two parameters (size and data), not " << sub->getNbParam(); g_throw_parser_error(err.str()); } } stk[1] = sz; stk[2] = dval; g_get_xy(&cx,&cy); getGLERunInstance()->sub_call(mark_subp[i], (double *)&stk, (char **)&stk_str, &nstk, &otype); g_move(cx,cy); return; } if (i<1 || i>nmrk) {gprint("Invalid marker number %d \n",i); return;} g_get_xy(&cx,&cy); g_get_hei(&h); i--; scale = minf[i].scl*sz; g_set_hei(scale); if (minf[i].ff == 0) { minf[i].ff = g_font_fallback(pass_font(mrk_fname[i])); char_bbox(minf[i].ff,minf[i].cc,&x1,&y1,&x2,&y2); minf[i].x1 = x1; minf[i].x2 = x2; minf[i].y1 = y1; minf[i].y2 = y2; } else if (minf[i].ff == -1) { minf[i].ff = g_font_fallback(pass_font(mrk_fname[i])); char_bbox(minf[i].ff,minf[i].cc,&x1,&y1,&x2,&y2); minf[i].ry = (minf[i].ry + -y1-(y2-y1)/2.0); minf[i].rx = (minf[i].rx + -x1-(x2-x1)/2.0); minf[i].x1 = x1; minf[i].x2 = x2; minf[i].y1 = y1; minf[i].y2 = y2; } double xpos = cx+minf[i].rx*scale; double ypos = cy+minf[i].ry*scale; g_move(xpos, ypos); g_char(minf[i].ff,minf[i].cc); g_update_bounds(xpos+minf[i].x1*scale, ypos+minf[i].y1*scale); g_update_bounds(xpos+minf[i].x2*scale, ypos+minf[i].y2*scale); g_move(cx,cy); g_set_hei(h); } void g_defmarker(const char *mname, const char *font, int ccc, double dx, double dy, double sz, int autodx) { int i; for (i=0; i61-1) { gprint("Too many markers defined \n"); return; } mrk_name[i] = sdup(mname); mrk_fname[i] = sdup(font); minf[i].ff = 0; if (autodx) minf[i].ff = -1; minf[i].cc = ccc; minf[i].rx = dx; minf[i].ry = dy; minf[i].scl = sz; minf[i].x1 = 0.0; minf[i].x2 = 0.0; minf[i].y1 = 0.0; minf[i].y2 = 0.0; } void g_marker_def(char *mname,char *subname) { int i; for (i=0; idochar(font,cc); } void g_text(const string& s) { string str(s); text_block(str, 0.0, g.just); } void g_set_just(int jj) { g.just = jj; } void g_set_font(int jj) { if (jj==0) return; font_load_metric(jj); g.fontn = jj; } void g_set_hei(double h) { if (h <= 0.0) { cerr << "font size zero or negative: " << h << endl; return; } g.fontsz = h; } void g_get_just(int *jj) { *jj = g.just; } void g_get_font(int *jj) { *jj = (int) g.fontn; } void g_get_hei(double *h) { *h = g.fontsz; } bool g_parse_ps_boundingbox(const string& line, int* bx1, int* by1, int* bx2, int* by2) { if (str_ni_equals(line.c_str(), "%%BoundingBox:", 14) && str_i_str(line, "(atend)") == -1) { char_separator sep(" :\t"); tokenizer tokens(line, sep); if (tokens.has_more()) tokens.next_token(); if (tokens.has_more()) { *bx1 = atoi(tokens.next_token().c_str()); } if (tokens.has_more()) { *by1 = atoi(tokens.next_token().c_str()); } if (tokens.has_more()) { *bx2 = atoi(tokens.next_token().c_str()); } if (tokens.has_more()) { *by2 = atoi(tokens.next_token().c_str()); } return true; } return false; } void g_postscript(char *fname, double wx, double wy) throw(ParserError) { /* fname ... the filename wx .... the users desired width in GLE units wy .... the users desired height in GLE units */ int bx1 = 0, by1 = 0, bx2 = 0, by2 = 0; double cx, cy; /* Open PostScript file */ ifstream input; validate_open_input_stream(input, fname); while (input.good()) { string line; getline(input, line); if (g_parse_ps_boundingbox(line, &bx1, &by1, &bx2, &by2)) { // do not get confused by second bounding box break; } } /* compute size if only height or width is given */ bx2 -= bx1; by2 -= by1; if (bx2 == 0 || by2 == 0) { gprint("Invalid bounding box in EPS file\n"); return; } if (fabs(wy) < 1e-18) { if (fabs(wx) < 1e-18) { // if with and hight is zero, then use default size wx = bx2/PS_POINTS_PER_INCH*CM_PER_INCH; wy = by2/PS_POINTS_PER_INCH*CM_PER_INCH; } else { wy = wx*by2/bx2; } } else if (fabs(wx) < 1e-18) { wx = wy*bx2/by2; } /* non-Postscript device? */ char inbuff[500]; g_get_type(inbuff); if (str_i_str(inbuff, "PS") == NULL) { input.close(); g_get_xy(&cx,&cy); g_box_stroke(cx,cy,cx+wx,cy+wy); return; } /* Output PostScript */ GLERectangle save_box; g_get_bounds(&save_box); g_devcmd("/GLESTATE save def\n"); g_devcmd("gsave\n"); g_devcmd("/a4small {} def /legal {} def\n"); g_devcmd("/letter {} def /note {} def /copypage {} def\n"); g_devcmd("/erasepage {} def /showpage {} def\n"); g_gsave(); g_get_xy(&cx,&cy); g_translate(cx, cy); g_set_pos(0, 0); g_scale(wx/bx2, wy/by2); g_translate(-bx1, -by1); g_devcmd("0 setgray 0 setlinecap 1 setlinewidth 0 setlinejoin\n"); g_devcmd("10 setmiterlimit [] 0 setdash newpath\n"); /* Copy Poscrscript file over */ string begin_doc("%%BeginDocument: "); begin_doc += fname; begin_doc += "\n"; g_devcmd(begin_doc.c_str()); input.seekg(0, ios_base::beg); while (input.good()) { string line; getline(input, line); if (!str_ni_equals(line.c_str(), "%%BoundingBox:", strlen("%%BoundingBox:")) && !str_ni_equals(line.c_str(), "%%HiResBoundingBox:", strlen("%%HiResBoundingBox:")) && !str_ni_equals(line.c_str(), "%%EOF", strlen("%%EOF"))) { str_trim_right(line); line += "\n"; g_devcmd(line.c_str()); } } input.close(); g_devcmd("%%EndDocument\n"); /* Done copy */ g_devcmd("grestore GLESTATE restore\n"); g_grestore(); /* Adjust bounds */ g_set_bounds(&save_box); g_update_bounds(cx, cy); g_update_bounds(cx+wx, cy+wy); } int check_dev_type_ps(double wx, double wy) { char devtype[200]; g_get_type(devtype); if (str_i_str(devtype,"PS")== NULL) { gprint("Output device does not support BITMAPS\n"); double cx, cy; g_get_xy(&cx,&cy); g_box_stroke(cx,cy,cx+wx,cy+wy); return 0; } else { return 1; } } int g_bitmap_string_to_type(const char* stype) { if (str_i_equals(stype, "tiff")) { return BITMAP_TYPE_TIFF; } else if (str_i_equals(stype, "tif")) { return BITMAP_TYPE_TIFF; } else if (str_i_equals(stype, "gif")) { return BITMAP_TYPE_GIF; } else if (str_i_equals(stype, "png")) { return BITMAP_TYPE_PNG; } else if (str_i_equals(stype, "jpg")) { return BITMAP_TYPE_JPEG; } else if (str_i_equals(stype, "jpeg")) { return BITMAP_TYPE_JPEG; } else { return BITMAP_TYPE_UNK; } } void g_update_bitmap_type(const string& fname, int* type) throw(ParserError) { if (*type == 0) { string ext; GetExtension(fname, ext); *type = g_bitmap_string_to_type(ext.c_str()); if (*type == BITMAP_TYPE_UNK) { g_throw_parser_error("unsupported bitmap type: '", ext.c_str(), "'"); } } } void g_bitmap_type_to_string(int type, string &typestr) { switch (type) { case BITMAP_TYPE_TIFF: typestr = "TIFF"; break; case BITMAP_TYPE_GIF: typestr = "GIF"; break; case BITMAP_TYPE_PNG: typestr = "PNG"; break; case BITMAP_TYPE_JPEG: typestr = "JPEG"; break; } } int g_device_to_bitmap_type(int device) { switch (device) { case GLE_DEVICE_PNG: return BITMAP_TYPE_PNG; case GLE_DEVICE_JPEG: return BITMAP_TYPE_JPEG; default: return BITMAP_TYPE_UNK; } } bool g_bitmap_supports_type(int type) { switch (type) { case BITMAP_TYPE_TIFF: #ifdef HAVE_LIBTIFF return true; #else return false; #endif case BITMAP_TYPE_GIF: return true; case BITMAP_TYPE_PNG: #ifdef HAVE_LIBPNG return true; #else return false; #endif case BITMAP_TYPE_JPEG: #ifdef HAVE_LIBJPEG return true; #else return false; #endif default: return false; } } void g_bitmap_add_supported_type(int type, ostream& out, int* i) { if (g_bitmap_supports_type(type)) { string str; if ((*i) != 0) out << ", "; g_bitmap_type_to_string(type, str); out << str; (*i)++; } } string g_bitmap_supported_types() { int i = 0; stringstream out; g_bitmap_add_supported_type(BITMAP_TYPE_JPEG, out, &i); g_bitmap_add_supported_type(BITMAP_TYPE_PNG, out, &i); g_bitmap_add_supported_type(BITMAP_TYPE_TIFF, out, &i); g_bitmap_add_supported_type(BITMAP_TYPE_GIF, out, &i); if (i == 0) out << "None"; return out.str(); } GLEBitmap* g_bitmap_type_to_object(int type) { switch (type) { case BITMAP_TYPE_TIFF: #ifdef HAVE_LIBTIFF return new GLETIFF(); #else return NULL; #endif case BITMAP_TYPE_GIF: return new GLEGIF(); case BITMAP_TYPE_PNG: #ifdef HAVE_LIBPNG return new GLEPNG(); #else return NULL; #endif case BITMAP_TYPE_JPEG: return new GLEJPEG(); default: return NULL; } } void g_bitmap(string& fname, double wx, double wy, int type) throw(ParserError) { fname = GLEExpandEnvironmentVariables(fname); validate_file_name(fname, true); g_update_bitmap_type(fname, &type); if (type == 0) { // Unknown bitmap type return; } /* Get bitmap type string */ string typestr; g_bitmap_type_to_string(type, typestr); /* Get bitmap writer object */ GLEBitmap* bitmap = g_bitmap_type_to_object(type); if (bitmap == NULL) { g_throw_parser_error("support for ", typestr.c_str(), " bitmaps not enabled"); } /* Open file */ if (bitmap->open(fname) == 0) { g_throw_parser_error("can't open bitmap file: '", fname.c_str(), "'"); } g_bitmap(bitmap, wx, wy, type); bitmap->close(); delete bitmap; } void g_bitmap(GLEBitmap* bitmap, double wx, double wy, int type) throw(ParserError) { /* Read header */ int result = bitmap->readHeader(); if (result != GLE_IMAGE_ERROR_NONE) { stringstream str; str << "error reading bitmap header '" << bitmap->getFName() << "': "; if (bitmap->getError() == "") str << "unknown"; else str << bitmap->getError(); g_throw_parser_error(str.str()); } /* Get current point */ double cx, cy; g_get_xy(&cx,&cy); /* Update scale */ if (wx == 0.0 || wy == 0.0) { double bw = bitmap->getWidth(); double bh = bitmap->getHeight(); if (wx == 0.0 && bh != 0.0) { wx = wy*bw/bh; } if (wy == 0.0 && bw != 0.0) { wy = wx*bh/bw; } } /* Actually draw the bitmap */ GLEPoint pos(cx, cy); GLEPoint scale(wx, wy); g.dev->bitmap(bitmap, &pos, &scale, type); /* Output info */ if (!g_is_dummy_device() && type != BITMAP_TYPE_USER && g_verbosity() >= 2) { cerr << "{" << bitmap->getFName() << "-"; bitmap->printInfo(cerr); cerr << "}"; } /* Adjust bounds */ g_update_bounds(cx, cy); g_update_bounds(cx+wx, cy+wy); } void g_bitmap_info(string& fname, int xvar, int yvar, int type) throw(ParserError) { fname = GLEExpandEnvironmentVariables(fname); validate_file_name(fname, true); g_update_bitmap_type(fname, &type); if (type == 0) { // Unknown bitmap type return; } /* Get bitmap type string */ string typestr; g_bitmap_type_to_string(type, typestr); /* Get bitmap writer object */ GLEBitmap* bitmap = g_bitmap_type_to_object(type); if (bitmap == NULL) { g_throw_parser_error("support for ", typestr.c_str(), " bitmaps not enabled"); } /* Open file */ if (bitmap->open(fname) == 0) { g_throw_parser_error("can't open bitmap file: '", fname.c_str(), "'"); } /* Read header */ int result = bitmap->readHeader(); if (result != GLE_IMAGE_ERROR_NONE) { stringstream str; str << "error reading bitmap header '" << bitmap->getFName() << "': "; if (bitmap->getError() == "") str << "unknown"; else str << bitmap->getError(); g_throw_parser_error(str.str()); } var_set(xvar, (double)bitmap->getWidth()); var_set(yvar, (double)bitmap->getHeight()); bitmap->close(); delete bitmap; } void g_arrowpoints(double cx, double cy, double dx, double dy, GLEArrowPoints* pts); void g_arrowline(double x2, double y2, int flag, int can_fillpath) throw(ParserError) { double x1,y1; GLECore* core = g_get_core(); if (core->isComputingLength()) { core->addToLength(g_get_xy().distance(GLEPoint(x2, y2))); } GLEWithoutUpdates noUpdates; if ((flag & 3) == 0) { g_line(x2,y2); return; } g_get_xy(&x1,&y1); if (can_fillpath && g.arrowstyle < GLE_ARRSTY_SUB) { g_psarrow(x1, y1, x2, y2, flag); } else { if ((flag & 1) != 0) g_arrow(x2-x1, y2-y1, can_fillpath); g_line(x2, y2); if ((flag & 2) != 0) g_arrow(x1-x2, y1-y2, can_fillpath); } } int g_arrow_style() { return g.arrowstyle; } int g_arrow_tip() { return g.arrowtip; } void g_arrowpoints(GLEPoint& pt, double dx, double dy, GLEArrowProps* arrow, double lwd, GLEArrowPoints* pts) { double radius, angle, dx1, dy1; double arrow_angle = arrow->angle*GLE_PI/180; xy_polar(dx, dy, &radius, &angle); if (arrow->tip == GLE_ARRTIP_SHARP && arrow->style != GLE_ARRSTY_OLD35) { double dist = lwd/(2*sin(arrow_angle)); polar_xy(dist, angle, &dx1, &dy1); } else { dx1 = dy1 = 0.0; } pts->xt = pt.getX() + dx1; pts->yt = pt.getY() + dy1; polar_xy(arrow->size, angle+arrow->angle, &dx, &dy); pts->xa = pt.getX() + dx1 + dx; pts->ya = pt.getY() + dy1 + dy; polar_xy(arrow->size, angle-arrow->angle, &dx, &dy); pts->xb = pt.getX() + dx1 + dx; pts->yb = pt.getY() + dy1 + dy; // How far should the line stick into the arrow? if (arrow->style == GLE_ARRSTY_OLD35 || arrow->tip == GLE_ARRTIP_SHARP) { double dist = 1.1*lwd/(2*tan(arrow_angle)); polar_xy(dist, angle, &dx1, &dy1); pts->xl = pt.getX() + dx1; pts->yl = pt.getY() + dy1; } else { pts->xl = pt.getX(); pts->yl = pt.getY(); } } void g_arrowpoints(double cx, double cy, double dx, double dy, GLEArrowPoints* pts) { double lwd; GLEArrowProps arrow; GLEPoint pt(cx, cy); g_arrowsize_actual(&arrow, &lwd, true); g_arrowpoints(pt, dx, dy, &arrow, lwd, pts); } void g_arrowsize(GLEArrowProps* arrow) { double width; double arrow_len = g.arrowsize; double arrow_angle = g.arrowangle; arrow->tip = g.arrowtip; arrow->style = g.arrowstyle; g_get_line_width(&width); if (width == 0) width = 0.02; if (arrow_angle <= 0.0) { if (arrow->style == GLE_ARRSTY_OLD35) { arrow_angle = 10; } else { arrow_angle = 15; } if (width > 0.1) arrow_angle = 20; if (width > 0.3) arrow_angle = 30; } if (arrow_len <= 0.0) { double ang_rad = arrow_angle*GLE_PI/180; if (arrow->style == GLE_ARRSTY_OLD35) { g_get_hei(&arrow_len); arrow_len = arrow_len/2 * cos(ang_rad); if (arrow_len*tan(ang_rad) < width/1.5) { arrow_len = width / (1.5*tan(ang_rad)); } } else { arrow_len = 0.2; double fac = (20*width+2.5)/(20*width+1); if (arrow_len*tan(ang_rad) < width*fac) { arrow_len = width*fac / tan(ang_rad); } if (arrow->style == GLE_ARRSTY_EMPTY || arrow->style == GLE_ARRSTY_FILLED) { arrow->size += width/2; } } } //cout << "size: " << arrow_len << endl; arrow->size = arrow_len; arrow->angle = arrow_angle; } void g_arrowsize_actual(GLEArrowProps* arrow, double* lwd, bool sz_az) { g_get_line_width(lwd); g_arrowsize(arrow); g_arrowsize_transform(arrow, *lwd, sz_az); } void g_arrowsize_transform(GLEArrowProps* arrow, double lwd, bool sz_az) { double ang_rad = arrow->angle*GLE_PI/180; if (arrow->style != GLE_ARRSTY_OLD35) { if (arrow->style == GLE_ARRSTY_EMPTY || arrow->style == GLE_ARRSTY_FILLED) { arrow->size -= lwd/2; } if (arrow->tip == GLE_ARRTIP_SHARP) { double dist = lwd/(2*sin(ang_rad)); arrow->size -= dist; } if (arrow->size < lwd*0.1) { arrow->size = lwd*0.1; } } if (sz_az) { arrow->size /= cos(ang_rad); } } void g_init_arrow_head(GLECurvedArrowHead* head, bool startend) { double lwidth; GLEArrowProps arrow; g_arrowsize_actual(&arrow, &lwidth, false); head->setLineWidth(lwidth); head->setSharp(arrow.tip == GLE_ARRTIP_SHARP); head->setArrowAngleSizeSharp(arrow.style, arrow.size, arrow.angle); head->setStartEnd(startend); } void g_init_arrow_head_from_properties(GLECurvedArrowHead* head, GLEPropertyStore* props, double fac, bool startend) { GLEArrowProps arrow; double lwd = props->getRealProperty(GLEDOPropertyLineWidth) * fac; arrow.size = props->getRealProperty(GLEDOPropertyArrowSize) * fac; arrow.angle = props->getRealProperty(GLEDOPropertyArrowAngle); arrow.tip = (GLEArrowTip)props->getIntProperty(GLEDOPropertyArrowTip); arrow.style = GLE_ARRSTY_FILLED; g_arrowsize_transform(&arrow, lwd, false); head->setLineWidth(lwd); head->setSharp(arrow.tip == GLE_ARRTIP_SHARP); head->setArrowAngleSizeSharp(arrow.style, arrow.size, arrow.angle); head->setStartEnd(startend); } double GLEArcNormalizedAngle2(double a1, double a2) { return g_arc_normalized_angle2(a1, a2); } void GLEArcUpdateCurvedArrowHeads(GLECurvedArrowHead* head_start, GLECurvedArrowHead* head_end, double* t1, double* t2, GLEPropertyStore* props, double fac, int arrow) { if (arrow == 1 || arrow == 3) g_init_arrow_head_from_properties(head_start, props, fac, true); if (arrow == 2 || arrow == 3) g_init_arrow_head_from_properties(head_end, props, fac, false); g_update_arc_bounds_for_arrow_heads(head_start, head_end, t1, t2); } void GLEGetArrowPoints(GLEPoint& pt, double dx, double dy, GLEPropertyStore* props, double fac, GLEArrowPoints* pts) { GLEArrowProps arrow; double lwd = props->getRealProperty(GLEDOPropertyLineWidth) * fac; arrow.size = props->getRealProperty(GLEDOPropertyArrowSize) * fac; arrow.angle = props->getRealProperty(GLEDOPropertyArrowAngle); arrow.tip = (GLEArrowTip)props->getIntProperty(GLEDOPropertyArrowTip); arrow.style = GLE_ARRSTY_FILLED; g_arrowsize_transform(&arrow, lwd, true); g_arrowpoints(pt, dx, dy, &arrow, lwd, pts); } void GLEGetArrowPointsNoProps(GLEPoint& pt, double dx, double dy, double lwd, double size, double angle, GLEArrowPoints* pts) { GLEArrowProps arrow; arrow.size = size; arrow.angle = angle; arrow.tip = GLE_ARRTIP_SHARP; arrow.style = GLE_ARRSTY_FILLED; g_arrowsize_transform(&arrow, lwd, true); g_arrowpoints(pt, dx, dy, &arrow, lwd, pts); } void g_set_arrow_size(double size) { g.arrowsize = size; } void g_set_arrow_angle(double angle) { g.arrowangle = angle; } void g_set_arrow_style(int shape) { g.arrowstyle = shape; } void g_set_arrow_style(const char* shape) throw(ParserError) { if (str_i_equals(shape, "SIMPLE")) { g_set_arrow_style(GLE_ARRSTY_SIMPLE); } else if (str_i_equals(shape, "FILLED")) { g_set_arrow_style(GLE_ARRSTY_FILLED); } else if (str_i_equals(shape, "EMPTY")) { g_set_arrow_style(GLE_ARRSTY_EMPTY); } else { string name = "ARROW_"; name += shape; str_to_uppercase(name); GLESub* sub = sub_find(name.c_str()); if (sub == NULL || sub->getIndex() == -1) { g_throw_parser_error("subroutine defining arrow style '", name.c_str(), "' not defined"); } g_set_arrow_style(GLE_ARRSTY_SUB + sub->getIndex()); } } void g_set_arrow_tip(int tip) { g.arrowtip = tip; } void g_set_arrow_tip(const char* tip) throw (ParserError) { if (str_i_equals(tip, "SHARP")) { g_set_arrow_tip(GLE_ARRTIP_SHARP); } else if (str_i_equals(tip, "ROUND")) { g_set_arrow_tip(GLE_ARRTIP_ROUND); } else { g_throw_parser_error("unsupported arrow tip style '", tip, "'"); } } void g_arrow(double dx, double dy, int can_fillpath) throw(ParserError) { int old_join; char old_lstyle[15]; g_get_line_style(old_lstyle); if (!(old_lstyle[0] == '1' && old_lstyle[1] == 0)) { g_set_line_style("1"); } int desired_join = g.arrowtip == GLE_ARRTIP_ROUND ? 1 : 0; g_get_line_join(&old_join); if (old_join != desired_join) { g_set_line_join(desired_join); } double x1, y1; g_get_xy(&x1, &y1); if (g.arrowstyle >= GLE_ARRSTY_SUB) { double radius, angle, lwd; xy_polar(dx, dy, &radius, &angle); GLEArrowProps arrow; g_arrowsize_actual(&arrow, &lwd, true); double args[4]; args[0] = 0; args[1] = angle; args[2] = arrow.angle; args[3] = arrow.size; call_sub_byid(arrow.style-GLE_ARRSTY_SUB, args, 3, "(used for defining arrow style)"); } else { GLEArrowPoints pts; g_arrowpoints(x1, y1, dx, dy, &pts); g_set_path(true); g_newpath(); g_move(pts.xa, pts.ya); g_line(pts.xt, pts.yt); g_line(pts.xb, pts.yb); if (g.arrowstyle != GLE_ARRSTY_SIMPLE) { g_closepath(); GLERC curr_color(g_get_color()); GLERC curr_fill(g_get_fill()); if (g.arrowstyle == GLE_ARRSTY_EMPTY) g_set_fill(GLE_COLOR_WHITE); else g_set_fill(curr_color); g_fill(); g_set_fill(curr_fill); } if (g.arrowstyle != GLE_ARRSTY_OLD35) { g_stroke(); } g_set_path(false); } if (old_join != desired_join) { g_set_line_join(old_join); } if (!(old_lstyle[0] == '1' && old_lstyle[1] == 0)) { g_set_line_style(old_lstyle); } g_move(x1, y1); } void g_psarrow(double x1, double y1, double x2, double y2, int flag) { double dx = x2-x1; double dy = y2-y1; int old_join; char old_lstyle[15]; GLEArrowPoints pts1, pts2; g_arrowpoints(x1, y1, dx, dy, &pts1); g_arrowpoints(x2, y2, -dx, -dy, &pts2); g_get_line_style(old_lstyle); int desired_join = g.arrowtip == GLE_ARRTIP_ROUND ? 1 : 0; g_get_line_join(&old_join); if (old_join != desired_join) { g_set_line_join(desired_join); } /* draw line */ if ((flag & 1)>0) g_move(pts1.xl, pts1.yl); else g_move(x1, y1); if ((flag & 2)>0) g_line(pts2.xl, pts2.yl); else g_line(x2, y2); /* draw arrow heads */ if (!(old_lstyle[0] == '1' && old_lstyle[1] == 0)) { g_set_line_style("1"); } g_set_path(true); g_newpath(); if ((flag & 1)>0) { g_move(pts1.xa, pts1.ya); g_line(pts1.xt, pts1.yt); g_line(pts1.xb, pts1.yb); if (g.arrowstyle != GLE_ARRSTY_SIMPLE) g_closepath(); } if ((flag & 2)>0) { g_move(pts2.xa, pts2.ya); g_line(pts2.xt, pts2.yt); g_line(pts2.xb, pts2.yb); if (g.arrowstyle != GLE_ARRSTY_SIMPLE) g_closepath(); } if (g.arrowstyle != GLE_ARRSTY_SIMPLE) { GLERC cur_color(g_get_color()); GLERC cur_fill(g_get_fill()); if (g.arrowstyle == GLE_ARRSTY_EMPTY) g_set_fill(GLE_COLOR_WHITE); else g_set_fill(cur_color); g_fill(); g_set_fill(cur_fill); } if (g.arrowstyle != GLE_ARRSTY_OLD35) { g_stroke(); } g_set_path(false); if (old_join != desired_join) { g_set_line_join(old_join); } if (!(old_lstyle[0] == '1' && old_lstyle[1] == 0)) { g_set_line_style(old_lstyle); } g_move(x2, y2); } void g_set_pdf_image_format(const char* format) { if (str_i_equals(format, "AUTO")) { g.pdfimgformat = PDF_IMG_COMPR_AUTO; } else if (str_i_equals(format, "ZIP")) { g.pdfimgformat = PDF_IMG_COMPR_ZIP; } else if (str_i_equals(format, "JPEG")) { g.pdfimgformat = PDF_IMG_COMPR_JPEG; } else if (str_i_equals(format, "PS")) { g.pdfimgformat = PDF_IMG_COMPR_PS; } } void g_set_tex_scale(const char* ss) { TeXInterface* iface = TeXInterface::getInstance(); if (str_i_equals(ss, "NONE")) { iface->setScaleMode(TEX_SCALE_MODE_NONE); } else if (str_i_equals(ss, "FIXED")) { iface->setScaleMode(TEX_SCALE_MODE_FIXED); } else if (str_i_equals(ss, "SCALE")) { iface->setScaleMode(TEX_SCALE_MODE_SCALE); } } void g_set_tex_labels(bool onoff) { g.texlabels = onoff; } bool g_get_tex_labels() { return g.texlabels; } int g_get_pdf_image_format() { return g.pdfimgformat; } int g_get_compatibility() { return g_compatibility; } int g_parse_compatibility(const string& compat) throw (ParserError) { TokenizerLanguage lang; lang.setSpaceTokens(" "); lang.setSingleCharTokens("."); StringTokenizer tokens(&lang, true); string compat_noquote = compat; str_remove_quote(compat_noquote); tokens.set_string(compat_noquote); int minor = 0; int micro = 0; int major = tokens.next_integer(); if (tokens.has_more_tokens()) { tokens.ensure_next_token("."); minor = tokens.next_integer(); } if (tokens.has_more_tokens()) { tokens.ensure_next_token("."); micro = tokens.next_integer(); } int value = (major << 16) | (minor << 8) | micro; if (value > GLE_COMPAT_MOST_RECENT) { stringstream err; int cr_major = (GLE_COMPAT_MOST_RECENT >> 16) & 0xFF; int cr_minor = (GLE_COMPAT_MOST_RECENT >> 8) & 0xFF; int cr_micro = GLE_COMPAT_MOST_RECENT & 0xFF; err << "can't set compatibility beyond " << cr_major << "." << cr_minor << "." << cr_micro; throw tokens.error(err.str()); } return value; } int g_set_compatibility(const string& compat) throw (ParserError) { int value = g_parse_compatibility(compat); g_set_compatibility(value); return value; } void g_set_compatibility(int compat) { g_compatibility = compat; } void g_set_iconst(int i, int value) { g.intconst[i] = value; } void g_set_fconst(int i, double value) { g.floatconst[i] = value; } int g_get_iconst(int i) { return g.intconst[i]; } double g_get_fconst(int i) { return g.floatconst[i]; } GLEDevice::GLEDevice(): m_recording(false), m_resolution(300.0) { } GLEDevice::~GLEDevice() { } void GLEDevice::bitmap(GLEBitmap* bitmap, GLEPoint* pos, GLEPoint* scale, int type) { } void GLEDevice::getRecordedBytes(string* output) { *output = ""; } void GLEDevice::set_fill_method(int m) { } void GLEDevice::computeBoundingBox(double width, double height) { if (g_is_fullpage()) { m_boundingBox.setX(72*width/CM_PER_INCH); m_boundingBox.setY(72*height/CM_PER_INCH); } else { // Make bounding box a little larger (bounding box tweak) m_boundingBox.setX(72*width/CM_PER_INCH+2); m_boundingBox.setY(72*height/CM_PER_INCH+2); } } void GLEDevice::computeBoundingBox(double width, double height, int* int_bb_x, int* int_bb_y) { computeBoundingBox(width, height); if (g_is_fullpage()) { // Just round the bounding box to make sure papersize detection works in GhostView *int_bb_x = (int)floor(m_boundingBox.getX()+0.5); *int_bb_y = (int)floor(m_boundingBox.getY()+0.5); } else { // Make sure approximate bounding box is large enough for ImageMagick and GhostView *int_bb_x = (int)ceil(m_boundingBox.getX()+1e-6); *int_bb_y = (int)ceil(m_boundingBox.getY()+1e-6); } } GLEMeasureBox::GLEMeasureBox() : GLERectangle() { } GLEMeasureBox::~GLEMeasureBox() { } void GLEMeasureBox::measureStart() { g_get_bounds(&m_XMin, &m_YMin, &m_XMax, &m_YMax); g_init_bounds(); } void GLEMeasureBox::measureEnd() { double x1, y1, x2, y2; g_get_bounds(&x1, &y1, &x2, &y2); if (m_XMin <= m_XMax && m_YMin <= m_YMax) { g_update_bounds(m_XMin, m_YMin); g_update_bounds(m_XMax, m_YMax); } m_XMin = x1; m_YMin = y1; m_XMax = x2; m_YMax = y2; } void GLEMeasureBox::measureEndIgnore() { double x1, y1, x2, y2; g_get_bounds(&x1, &y1, &x2, &y2); g_restore_bounds(m_XMin, m_XMax, m_YMin, m_YMax); m_XMin = x1; m_YMin = y1; m_XMax = x2; m_YMax = y2; } GLEPolynomial::GLEPolynomial(double* coefs, int degree) { m_Coefs = coefs; m_Degree = degree; } GLEPolynomial::~GLEPolynomial() { } void GLEPolynomial::print() { int d = degree(); cout << "Polynomial: "; for (int i = d; i >= 0; i--) { double c = a(i); if (c >= 0.0 && i != d) { cout << "+"; } cout << c; if (i != 0) { cout << "*x^" << i; } } cout << endl; } void GLEPolynomial::horner(double v) { int d = degree(); for (int i = d-1; i >= 0; i--) { set(i, a(i) + a(i+1)*v); } for (int i = 0; i < d; i++) { set(i, a(i+1)); } setDegree(d-1); } double GLEPolynomial::evalPoly(double t) { double r = 0.0; for (int i = degree(); i >= 0; i--) { r *= t; r += a(i); } return r; } double GLEPolynomial::evalDPoly(double t) { double r = 0.0; for (int i = degree(); i > 0; i--) { r *= t; r += i * a(i); } return r; } double GLEPolynomial::newtonRaphson(double t, double prec) { while (true) { double v = evalPoly(t); if (fabs(v) < 1e-9) break; t = t - evalPoly(t)/evalDPoly(t); } return t; } GLERange::GLERange() { m_Min = GLE_INF; m_Max = -GLE_INF; } GLERange::~GLERange() { } void GLERange::setMinMax(double min, double max) { setMin(min); setMax(max); } void GLERange::copy(GLERange* other) { m_Min = other->getMin(); m_Max = other->getMax(); } void GLERange::copyHas(GLERangeSet* other) { if (other->hasMin()) m_Min = other->getMin(); if (other->hasMax()) m_Max = other->getMax(); } void GLERange::initRange() { setMin(GLE_INF); setMax(-GLE_INF); } bool GLERange::isMinValid() const { return !gle_isinf(m_Min); } bool GLERange::isMaxValid() const { return !gle_isinf(m_Max); } void GLERange::updateRange(double value) { if (value < m_Min) m_Min = value; if (value > m_Max) m_Max = value; } void GLERange::clip(double* value) { if (*value < m_Min) *value = m_Min; if (*value > m_Max) *value = m_Max; } bool GLERange::contains(double value) { return value >= m_Min && value <= m_Max; } ostream& GLERange::printRange(ostream& out) const { out << "min = "; if (isMinValid()) out << m_Min; else out << "?"; out << " max = "; if (isMaxValid()) out << m_Max; else out << "?"; return out; } GLERangeSet::GLERangeSet() : GLERange() { m_MinSet = m_MaxSet = false; } GLERangeSet::~GLERangeSet() { } void GLERangeSet::setMinSet(double min) { setMin(min); m_MinSet = true; } void GLERangeSet::setMaxSet(double max) { setMax(max); m_MaxSet = true; } void GLERangeSet::setMinMaxSet(double min, double max) { setMinSet(min); setMaxSet(max); } void GLERangeSet::resetSet() { m_MinSet = m_MaxSet = false; } void GLERangeSet::setMinIfNotSet(double min) { if (!hasMin()) setMin(min); } void GLERangeSet::setMaxIfNotSet(double max) { if (!hasMax()) setMax(max); } void GLERangeSet::copyIfNotSet(GLERange* other) { if (!hasMin()) setMin(other->getMin()); if (!hasMax()) setMax(other->getMax()); } void GLERangeSet::initRangeIfNotSet() { if (!hasMin()) setMin(GLE_INF); if (!hasMax()) setMax(-GLE_INF); } void GLERangeSet::copySet(GLERangeSet* other) { GLERange::copy(other); m_MinSet = other->hasMin(); m_MaxSet = other->hasMax(); } GLERectangle::GLERectangle() { m_XMin = m_YMin = m_XMax = m_YMax = 0.0; } GLERectangle::GLERectangle(double xmin, double ymin, double xmax, double ymax) { m_XMin = xmin; m_YMin = ymin; m_XMax = xmax; m_YMax = ymax; } GLERectangle::GLERectangle(GLERectangle* other) { m_XMin = other->m_XMin; m_YMin = other->m_YMin; m_XMax = other->m_XMax; m_YMax = other->m_YMax; } GLERectangle::~GLERectangle() { } void GLERectangle::reset() { m_XMin = m_YMin = m_XMax = m_YMax = 0.0; } void GLERectangle::normalize() { if (m_XMin > m_XMax) { double a = m_XMin; m_XMin = m_XMax; m_XMax = a; } if (m_YMin > m_YMax) { double a = m_YMin; m_YMin = m_YMax; m_YMax = a; } } void GLERectangle::copy(GLERectangle* other) { m_XMin = other->m_XMin; m_YMin = other->m_YMin; m_XMax = other->m_XMax; m_YMax = other->m_YMax; } void GLERectangle::copy(GLEPoint* point) { m_XMin = point->getX(); m_YMin = point->getY(); m_XMax = point->getX(); m_YMax = point->getY(); } void GLERectangle::getDimensions(double* xmin, double* ymin, double* xmax, double* ymax) { *xmin = m_XMin; *ymin = m_YMin; *xmax = m_XMax; *ymax = m_YMax; } void GLERectangle::setDimensions(double xmin, double ymin, double xmax, double ymax) { m_XMin = xmin; m_YMin = ymin; m_XMax = xmax; m_YMax = ymax; } void GLERectangle::translate(double x, double y) { m_XMin += x; m_YMin += y; m_XMax += x; m_YMax += y; } void GLERectangle::translate(GLEPoint* p) { m_XMin += p->getX(); m_YMin += p->getY(); m_XMax += p->getX(); m_YMax += p->getY(); } void GLERectangle::scale(double s) { m_XMin *= s; m_YMin *= s; m_XMax *= s; m_YMax *= s; } void GLERectangle::subtractXFrom(double x) { m_XMin = x - m_XMin; m_XMax = x - m_XMax; } void GLERectangle::subtractYFrom(double y) { m_YMin = y - m_YMin; m_YMax = y - m_YMax; } void GLERectangle::grow(double d) { m_XMin -= d; m_XMax += d; m_YMin -= d; m_YMax += d; } bool GLERectangle::contains(double x, double y) { return x >= m_XMin && x <= m_XMax && y >= m_YMin && y <= m_YMax; } void GLERectangle::initRange() { m_XMin = m_YMin = GLE_INF; m_XMax = m_YMax = -GLE_INF; } void GLERectangle::updateRange(double x, double y) { if (x < m_XMin) m_XMin = x; if (y < m_YMin) m_YMin = y; if (x > m_XMax) m_XMax = x; if (y > m_YMax) m_YMax = y; } void GLERectangle::updateRange(GLEPoint* pt) { if (pt->getX() < m_XMin) m_XMin = pt->getX(); if (pt->getY() < m_YMin) m_YMin = pt->getY(); if (pt->getX() > m_XMax) m_XMax = pt->getX(); if (pt->getY() > m_YMax) m_YMax = pt->getY(); } void GLERectangle::addToRangeX(GLERange* range) { if (m_XMin <= m_XMax) { range->updateRange(m_XMin); range->updateRange(m_XMax); } } void GLERectangle::addToRangeY(GLERange* range) { if (m_YMin <= m_YMax) { range->updateRange(m_YMin); range->updateRange(m_YMax); } } ostream& GLERectangle::print(ostream& out) const { out << "(" << m_XMin << "," << m_YMin << ") x (" << m_XMax << "," << m_YMax << ")"; return out; } void GLERectangle::toPoint(GLEJustify just, GLEPoint* point) { if (just == GLEJustifyVert) { /* vertical box */ if (fabs(m_YMax - point->getY()) < fabs(m_YMin - point->getY())) point->setY(m_YMax); else point->setY(m_YMin); return; } if (just == GLEJustifyHorz) { /* horizontal box */ if (fabs(m_XMax - point->getX()) < fabs(m_XMin - point->getX())) point->setX(m_XMax); else point->setX(m_XMin); return; } /* jx and jy value 0..2 */ int jx = (just & 0xf0) >> 4; int jy = just & 0x0f; double dx = jx * (m_XMax-m_XMin)/2; point->setX(m_XMin + dx); double dy = jy * (m_YMax-m_YMin)/2; point->setY(m_YMin + dy); } GLEPoint::GLEPoint(double x, double y) { m_X = x; m_Y = y; } GLEPoint::GLEPoint() { m_X = 0.0; m_Y = 0.0; } GLEPoint::GLEPoint(const GLEPoint& p) { m_X = p.m_X; m_Y = p.m_Y; } GLEPoint::~GLEPoint() { } void GLEPoint::add(double s, const GLEPoint& p) { m_X += s*p.m_X; m_Y += s*p.m_Y; } double GLEPoint::distance(const GLEPoint& p) const { double dx = m_X - p.m_X; double dy = m_Y - p.m_Y; return sqrt(dx*dx + dy*dy); } double GLEPoint::norm() const { return sqrt(m_X*m_X + m_Y*m_Y); } double GLEPoint::normSq() const { return m_X*m_X + m_Y*m_Y; } void GLEPoint::normalize() { double n = norm(); m_X /= n; m_Y /= n; } bool GLEPoint::approx(double x, double y) { return fabs(x - m_X) < 1e-6 && fabs(y - m_Y) < 1e-6; } void GLEPoint::swap(GLEPoint& other) { double backup_x = m_X; double backup_y = m_Y; m_X = other.m_X; m_Y = other.m_Y; other.m_X = backup_x; other.m_Y = backup_y; } ostream& GLEPoint::write(ostream& os) const { os << m_X << ":" << m_Y; return os; } GLEPoint3D::GLEPoint3D() { m_C[0] = m_C[1] = m_C[2] = 0.0; } GLEPoint3D::GLEPoint3D(double x, double y, double z) { m_C[0] = x; m_C[1] = y; m_C[2] = z; } GLEPoint3D::GLEPoint3D(const GLEPoint3D& p) { m_C[0] = p.m_C[0]; m_C[1] = p.m_C[1]; m_C[2] = p.m_C[2]; } void GLEPoint3D::dotScalar(double s) { m_C[0] *= s; m_C[1] *= s; m_C[2] *= s; } void GLEPoint3D::add(const GLEPoint3D& p) { m_C[0] += p.m_C[0]; m_C[1] += p.m_C[1]; m_C[2] += p.m_C[2]; } void GLEPoint3D::subtract(const GLEPoint3D& p) { m_C[0] -= p.m_C[0]; m_C[1] -= p.m_C[1]; m_C[2] -= p.m_C[2]; } void GLEPoint3D::addScalar(double s1, double s2, const GLEPoint3D& p) { m_C[0] = s1*m_C[0] + s2*p.m_C[0]; m_C[1] = s1*m_C[1] + s2*p.m_C[1]; m_C[2] = s1*m_C[2] + s2*p.m_C[2]; } double GLEPoint3D::norm() const { return sqrt(m_C[0]*m_C[0]+m_C[1]*m_C[1]+m_C[2]*m_C[2]); } void GLEPoint3D::normalize() { double n = norm(); m_C[0] /= n; m_C[1] /= n; m_C[2] /= n; } /** * Operator ortho3DUnit * Description : Compute a unit vector that is orthogonal to this vector and p. * Parameters : p - Other vector. * r - Result vector. */ void GLEPoint3D::ortho3DUnit(const GLEPoint3D& p, GLEPoint3D* r) { double ax = m_C[0]; double ay = m_C[1]; double az = m_C[2]; double bx = p.m_C[0]; double by = p.m_C[1]; double bz = p.m_C[2]; double cx = ay*bz - by*az; double cy = bx*az - ax*bz; double cz = ax*by - bx*ay; double div = sqrt(cx*cx+cy*cy+cz*cz); r->set(cx/div, cy/div, cz/div); } ostream& GLEPoint3D::write(ostream& os) const { os << m_C[0] << ", " << m_C[1] << ", " << m_C[2]; return os; } GLEMatrix::GLEMatrix(int rows, int cols) { m_Rows = rows; m_Cols = cols; m_C = new double[m_Rows*m_Cols]; } GLEMatrix::GLEMatrix(const GLEMatrix& p) { m_Rows = p.m_Rows; m_Cols = p.m_Cols; int size = m_Rows*m_Cols; m_C = new double[size]; for (int i = 0; i < size; i++) { m_C[i] = p.m_C[i]; } } GLEMatrix::~GLEMatrix() { delete[] m_C; } /** * Operator dot * Description : Compute the dot product with a given vector. * Parameters : p - The given vector * r - The result vector */ void GLEMatrix::dot(const GLEPoint3D& p, GLEPoint3D* r) const { int idx = 0; for (int row = 0; row < 3; row++) { double result = 0.0; for (int col = 0; col < 3; col++) { result += m_C[idx++]*p.m_C[col]; } r->m_C[row] = result; } } /** * Method setVertVector * Description : Copy vector to matrix row. * Parameters : row - Destination row. * col - Destination column. * p - Vector to copy. */ void GLEMatrix::setVertVector(int row, int col, const GLEPoint3D& p) { int idx = row*m_Cols+col; for (int pos = 0; pos < 3; pos++) { m_C[idx] = p.m_C[pos]; idx += m_Cols; } } ostream& GLEMatrix::write(ostream& os) const { int offs = 0; for (int i = 0; i < m_Rows; i++) { for (int j = 0; j < m_Cols; j++) { if (j != 0) os << ", "; os << m_C[offs++]; } os << endl; } return os; } GLEProjection::GLEProjection() { } void GLEProjection::zoom(double factor) { GLEPoint3D dir(m_Eye); dir.subtract(m_Reference); dir.dotScalar(factor); m_Eye.add(dir); } void GLEProjection::rotate(double angle, bool horiz) { GLEPoint3D dir(m_Eye); dir.subtract(m_Reference); double len = dir.norm(); double v_cos = cos(angle*GLE_PI/180); double v_sin = sin(angle*GLE_PI/180); GLEPoint3D n_eye, n_vvec; if (horiz) { n_eye.set(len*v_sin, 0.0, len*v_cos); n_vvec.set(0.0, v_cos, -v_sin); } else { n_eye.set(0.0, len*v_sin, len*v_cos); n_vvec.set(0.0, 1.0, 0.0); } GLEMatrix axis_rotate(3, 3); invToReference(&axis_rotate); axis_rotate.dot(n_eye, &m_Eye); m_Eye.add(m_Reference); axis_rotate.dot(n_vvec, &m_VVector); } /** * Inspector invToReference * Explanation : Returns the inverse viewing transformation * Z-axis parrallel to eye-ref. * X-axis orthogonal to vvec and z-axis. * Y-axis orthogonal to previous two axis. */ void GLEProjection::invToReference(GLEMatrix* mtrx) { GLEPoint3D z_axis(m_Eye); z_axis.subtract(m_Reference); z_axis.normalize(); GLEPoint3D x_axis, y_axis; m_VVector.ortho3DUnit(z_axis, &x_axis); z_axis.ortho3DUnit(x_axis, &y_axis); mtrx->setVertVector(0,0,x_axis); mtrx->setVertVector(0,1,y_axis); mtrx->setVertVector(0,2,z_axis); } void GLEProjection::reference(const GLEPoint3D& ref) { GLEPoint3D delta; GLEMatrix axis_rotate(3, 3); invToReference(&axis_rotate); axis_rotate.dot(ref, &delta); m_Reference.add(delta); } void GLEProjection::adjustV(double angle) { GLEMatrix axis_rotate(3, 3); invToReference(&axis_rotate); double v_cos = cos(angle*GLE_PI/180); double v_sin = sin(angle*GLE_PI/180); GLEPoint3D y_vect(v_sin, v_cos, 0.0); axis_rotate.dot(y_vect, &m_VVector); } GLELinearEquation::GLELinearEquation() { m_A = 1.0; m_B = 0.0; } GLELinearEquation::~GLELinearEquation() { } void GLELinearEquation::fit(double x0, double y0, double x1, double y1) { double det = x0 - x1; if (det != 0.0) { m_A = (y0 - y1) / det; m_B = (x0*y1 - x1*y0) / det; } } GLECurve::GLECurve() { } GLECurve::~GLECurve() { } double GLECurve::getT0() { return 0.0; } double GLECurve::getT1() { return 1.0; } double GLECurve::computeDistRecursive(double t1, GLEPoint& p1, double t2, GLEPoint& p2) { GLEPoint pm, pm1, pm2; /* Check for trivial case */ if (t1 == t2) { return 0.0; } /* Rough approximation */ double tm = (t1 + t2) / 2.0; getC(tm, pm); double dist1 = p1.distance(pm) + p2.distance(pm); /* Finer approximation */ getC((t1+tm)/2.0, pm1); getC((t2+tm)/2.0, pm2); double dist2 = p1.distance(pm1) + pm1.distance(pm) + pm2.distance(pm) + p2.distance(pm2); if (fabs(dist1-dist2)/(t2-t1) < 1e-9) { return dist2; } else { return computeDistRecursive(t1, p1, tm, pm) + computeDistRecursive(tm, pm, t2, p2); } } double GLECurve::getDist(double t1, double t2) { GLEPoint p1, p2; getC(t1, p1); getC(t2, p2); if (t2 < t1) { return -1.0*computeDistRecursive(t2, p2, t1, p1); } else { return computeDistRecursive(t1, p1, t2, p2); } } double GLECurve::distToParamValue(double t1, double dist) { GLEPoint T; getCp(t1, T); double dist_corr = dist * 1.05; /* add 5% */ double t = t1 + dist_corr / T.norm(); return distToParamValue(t1, dist, t); } class GLECurveDistToParamValue { protected: GLECurve* m_Curve; double m_Dist, m_CrDist, m_BestErr, m_BestParam; public: GLECurveDistToParamValue(GLECurve* curve); ~GLECurveDistToParamValue(); void update(double dist, double param); void distToParamValueRecursive(double t1, GLEPoint& p1, double t2, GLEPoint& p2); double distToParamValue(double t1, double dist, double t2); }; GLECurveDistToParamValue::GLECurveDistToParamValue(GLECurve* curve) { m_Curve = curve; } GLECurveDistToParamValue::~GLECurveDistToParamValue() { } void GLECurveDistToParamValue::update(double dist, double param) { m_CrDist += dist; double err = fabs(m_Dist - m_CrDist); if (err < m_BestErr) { m_BestErr = err; m_BestParam = param; } } void GLECurveDistToParamValue::distToParamValueRecursive(double t1, GLEPoint& p1, double t2, GLEPoint& p2) { GLEPoint pm, pm1, pm2; /* Check for trivial case */ if (t1 == t2) { return; } /* Rough approximation */ double tm = (t1 + t2) / 2.0; m_Curve->getC(tm, pm); double dist1 = p1.distance(pm) + p2.distance(pm); /* Finer approximation */ m_Curve->getC((t1+tm)/2.0, pm1); m_Curve->getC((t2+tm)/2.0, pm2); double dist2 = p1.distance(pm1) + pm1.distance(pm) + pm2.distance(pm) + p2.distance(pm2); if (fabs(dist1-dist2)/(t2-t1) < 1e-9) { update(p1.distance(pm1), (t1+tm)/2.0); update(pm1.distance(pm), tm); update(pm2.distance(pm), (t2+tm)/2.0); update(p2.distance(pm2), t2); } else { distToParamValueRecursive(t1, p1, tm, pm); distToParamValueRecursive(tm, pm, t2, p2); } } double GLECurveDistToParamValue::distToParamValue(double t1, double dist, double t2) { GLEPoint p1, p2; m_Curve->getC(t1, p1); m_Curve->getC(t2, p2); m_Dist = dist; m_BestErr = 1e16; m_BestParam = t2; m_CrDist = 0.0; distToParamValueRecursive(t1, p1, t2, p2); return m_BestParam; } double GLECurve::distToParamValue(double t1, double dist, double t2) { GLEPoint T, p0, p; getC(t1, p0); double dist_abs = fabs(dist); double dist_corr = dist_abs * 1.05; /* add 5% */ /* Newton-Raphson on line distance between c(t1) and c(t) */ /* Make this distance 5% longer than desired, just to be sure */ double froot = 0.0; do { getC(t2, p); getCp(t2, T); p.add(-1.0, p0); froot = p.norm(); double ft = froot - dist_corr; double fpt = 1/froot * (p.getX()*T.getX() + p.getY()*T.getY()); t2 = t2 - ft/fpt; } while (fabs(froot - dist_corr)/dist_corr > 1e-4); /* Line distance should be upper bound on true distance */ /* Now do iterative refinement to obtain true distance */ GLECurveDistToParamValue dtp(this); double res = dtp.distToParamValue(t1, dist_abs, t2); return res; } double GLECurve::getDistp(double t) { GLEPoint T; getCp(t, T); return T.norm(); } GLECurveT0T1::GLECurveT0T1() { } GLECurveT0T1::~GLECurveT0T1() { } double GLECurveT0T1::getT0() { return m_T0; } double GLECurveT0T1::getT1() { return m_T1; } GLECircleArc::GLECircleArc(const GLEPoint& orig, double r, double t0, double t1) { m_Orig.set(orig); m_T0 = t0; m_T1 = t1; m_R = r; } GLECircleArc::~GLECircleArc() { } void GLECircleArc::getC(double t, GLEPoint& p) { p.setX(m_Orig.getX() + m_R * cos(t)); p.setY(m_Orig.getY() + m_R * sin(t)); } void GLECircleArc::getCp(double t, GLEPoint& p) { p.setX(-sin(t) * m_R); p.setY(cos(t) * m_R); } void GLECircleArc::getCpp(double t, GLEPoint& p) { p.setX(-cos(t) * m_R); p.setY(-sin(t) * m_R); } double GLECircleArc::getDist(double t1, double t2) { return m_R * (t2 - t1); } double GLECircleArc::distToParamValue(double t1, double dist, double t2) { return distToParamValue(t1, dist); } double GLECircleArc::distToParamValue(double t1, double dist) { return t1 + dist/m_R; } GLEEllipseArc::GLEEllipseArc(const GLEPoint& orig, double rx, double ry, double t0, double t1) { m_Orig.set(orig); m_T0 = t0; m_T1 = t1; m_Rx = rx; m_Ry = ry; } GLEEllipseArc::~GLEEllipseArc() { } void GLEEllipseArc::getC(double t, GLEPoint& p) { p.setX(m_Orig.getX() + m_Rx * cos(t)); p.setY(m_Orig.getY() + m_Ry * sin(t)); } void GLEEllipseArc::getCp(double t, GLEPoint& p) { p.setX(-sin(t) * m_Rx); p.setY(cos(t) * m_Ry); } void GLEEllipseArc::getCpp(double t, GLEPoint& p) { p.setX(-cos(t) * m_Rx); p.setY(-sin(t) * m_Ry); } /* x(t) = axt^3 + bxt^2 + cxt + x0 x1 = x0 + cx / 3 x2 = x1 + (cx + bx) / 3 x3 = x0 + cx + bx + ax y(t) = ayt^3 + byt^2 + cyt + y0 y1 = y0 + cy / 3 y2 = y1 + (cy + by) / 3 y3 = y0 + cy + by + ay cx = 3 (x1 - x0) bx = 3 (x2 - x1) - cx ax = x3 - x0 - cx - bx cy = 3 (y1 - y0) by = 3 (y2 - y1) - cy ay = y3 - y0 - cy - by */ GLEBezier::GLEBezier() { } GLEBezier::GLEBezier(double x0, double y0, double x1, double y1, double x2, double y2, double x3, double y3) : m_P0(x0, y0), m_P1(x1, y1), m_P2(x2, y2), m_P3(x3, y3) { updateEquation(); } GLEBezier::GLEBezier(const GLEBezier& other) : m_P0(other.getP0()), m_P1(other.getP1()), m_P2(other.getP2()), m_P3(other.getP3()) { updateEquation(); } GLEBezier::~GLEBezier() { } void GLEBezier::updateEquation() { m_Cx = 3*(m_P1.getX() - m_P0.getX()); m_Bx = 3*(m_P2.getX() - m_P1.getX()) - m_Cx; m_Ax = m_P3.getX() - m_P0.getX() - m_Cx - m_Bx; m_Cy = 3*(m_P1.getY() - m_P0.getY()); m_By = 3*(m_P2.getY() - m_P1.getY()) - m_Cy; m_Ay = m_P3.getY() - m_P0.getY() - m_Cy - m_By; } void GLEBezier::getC(double t, GLEPoint& p) { p.setX(((m_Ax*t + m_Bx)*t + m_Cx)*t + m_P0.getX()); p.setY(((m_Ay*t + m_By)*t + m_Cy)*t + m_P0.getY()); } void GLEBezier::getCp(double t, GLEPoint& p) { p.setX((3.0*m_Ax*t + 2.0*m_Bx)*t + m_Cx); p.setY((3.0*m_Ay*t + 2.0*m_By)*t + m_Cy); } void GLEBezier::getCpp(double t, GLEPoint& p) { p.setX(6.0*m_Ax*t + 2.0*m_Bx); p.setY(6.0*m_Ay*t + 2.0*m_By); } void GLEBezier::draw() { g_set_pos(getP0()); g_bezier(getP1(), getP2(), getP3()); } void GLEBezier::cutAtParamValue(double t) { double ot = 1.0 - t; GLEPoint p_1_1(m_P2); p_1_1.dotScalar(t); p_1_1.addScalar(m_P1, ot); GLEPoint p_2_1(m_P3); p_2_1.dotScalar(t); p_2_1.addScalar(m_P2, ot); GLEPoint p_1_2(p_2_1); p_1_2.dotScalar(t); p_1_2.addScalar(p_1_1, ot); m_P1.dotScalar(t); m_P1.addScalar(m_P0, ot); m_P2.set(m_P1); m_P2.dotScalar(ot); m_P2.addScalar(p_1_1, t); m_P3.set(m_P2); m_P3.dotScalar(ot); m_P3.addScalar(p_1_2, t); updateEquation(); } void GLEBezier::cutFromParamValue(double t) { double ot = 1.0 - t; GLEPoint p_1_1(m_P2); p_1_1.dotScalar(t); p_1_1.addScalar(m_P1, ot); GLEPoint p_0_1(m_P1); p_0_1.dotScalar(t); p_0_1.addScalar(m_P0, ot); GLEPoint p_0_2(p_1_1); p_0_2.dotScalar(t); p_0_2.addScalar(p_0_1, ot); m_P2.dotScalar(ot); m_P2.addScalar(m_P3, t); m_P1.set(m_P2); m_P1.dotScalar(t); m_P1.addScalar(p_1_1, ot); m_P0.set(m_P1); m_P0.dotScalar(t); m_P0.addScalar(p_0_2, ot); updateEquation(); } void GLEBezier::throughPoint(GLEPoint& p, GLEPoint& dir1, GLEPoint& dir2) { double poly[6]; double a = p.getX() - m_P0.getX(); double b = 3*(m_P0.getX()-m_P3.getX()); double c = 2*(m_P3.getX()-m_P0.getX()); double d = dir1.getX(); double e = dir2.getX() - 2*dir1.getX(); double f = dir1.getX() - dir2.getX(); double g = p.getY() - m_P0.getY(); double h = 3*(m_P0.getY()-m_P3.getY()); double i = 2*(m_P3.getY()-m_P0.getY()); double j = dir1.getY(); double k = dir2.getY() - 2*dir1.getY(); double l = dir1.getY() - dir2.getY(); poly[5] = c*l - i*f; poly[4] = c*k + b*l - i*e - h*f; poly[3] = c*j + b*k - i*d - h*e; poly[2] = b*j + a*l - h*d - g*f; poly[1] = a*k - g*e; poly[0] = a*j - g*d; GLEPolynomial polynomial(poly, 5); polynomial.horner(1); // polynomial.print(); double t = polynomial.newtonRaphson(0.5); double scale = (a + b*t*t + c*t*t*t)/(d + e*t + f*t*t)/(3*t); m_P1.set(m_P0); m_P1.add(scale, dir1); m_P2.set(m_P3); m_P2.add(scale, dir2); } GLECurvedArrowHead::GLECurvedArrowHead(GLECurve* curve) { m_Curve = curve; m_T0 = m_TM = m_T1 = m_ArrAlpha = m_ArrSize = m_LWidth = 0.0; m_Sharp = m_Enable = false; m_ArrStyle = GLE_ARRSTY_FILLED; } GLECurvedArrowHead::~GLECurvedArrowHead() { } void GLECurvedArrowHead::setArrowAngleSize(int style, double size, double angle) { m_ArrStyle = style; m_ArrSize = size; m_ArrAlpha = angle*GLE_PI/180.0; } void GLECurvedArrowHead::setArrowAngleSizeSharp(int style, double size, double angle) { m_ArrStyle = style; m_ArrAlpha = angle*GLE_PI/180.0; if (style != GLE_ARRSTY_FILLED) setSharp(false); if (isSharp() && style == GLE_ARRSTY_FILLED) { m_ArrSize = size + m_LWidth*(1+1/sin(m_ArrAlpha))/2; } else { m_ArrSize = size; } if (style == GLE_ARRSTY_OLD35) { setSharp(true); m_ArrStyle = GLE_ARRSTY_FILLED; } } void GLECurvedArrowHead::getA(double t, double pm, GLEPoint& p) { GLEPoint N, T; // get curve tangent m_Curve->getCp(t, T); T.normalize(); // compute curve normal N.setXY(T.getY(), -T.getX()); // multiply by height double h = pm * m_Curve->getDist(m_T0, t) * tan(m_ArrAlpha); N.dotScalar(h); // add to point on curve m_Curve->getC(t, p); p.add(N); } void GLECurvedArrowHead::getAp(double t, double pm1, double pm2, GLEPoint& p) { GLEPoint T, Tp, N, Np, c; m_Curve->getC(t, c); m_Curve->getCp(t, T); m_Curve->getCpp(t, Tp); /* the normal vector */ N.setXY(T.getY(), -T.getX()); N.normalize(); /* derivative of the normal vector */ double norm_sq = T.normSq(); double norm = sqrt(norm_sq); double dnorm = (T.getX()*Tp.getX() + T.getY()*Tp.getY())/norm; Np.setX((Tp.getY()*norm - T.getY()*dnorm)/norm_sq); Np.setY((T.getX()*dnorm - Tp.getX()*norm)/norm_sq); /* result = T +- (h'*N + h*N') */ double h = m_Curve->getDist(m_T0, t) * tan(m_ArrAlpha); double hp = m_Curve->getDistp(t) * tan(m_ArrAlpha); N.dotScalar(hp); Np.dotScalar(h); N.add(Np); N.dotScalar(pm1); /* compute result in p */ p.set(T); p.add(N); p.normalize(); p.dotScalar(pm2); } void GLECurvedArrowHead::computeArrowHead() { // compute P0 and P3 for both sides GLEPoint r1, r2, p; getA(m_T1, +1, m_Side1.P0()); m_Curve->getC(m_T0, m_Side1.P3()); getA(m_TM, +1, p); getAp(m_T1, +1, -1, r1); getAp(m_T0, +1, +1, r2); m_Side1.throughPoint(p, r1, r2); m_Curve->getC(m_T0, m_Side2.P0()); getA(m_T1, -1, m_Side2.P3()); getA(m_TM, -1, p); getAp(m_T0, -1, +1, r1); getAp(m_T1, -1, -1, r2); m_Side2.throughPoint(p, r1, r2); } void GLECurvedArrowHead::draw() { char old_lstyle[15]; int old_join; double x, y; g_get_xy(&x, &y); g_get_line_style(old_lstyle); if (!(old_lstyle[0] == '1' && old_lstyle[1] == 0)) { g_set_line_style("1"); } g_get_line_join(&old_join); if (old_join != 1) { g_set_line_join(1); } g_set_path(true); g_newpath(); m_Side1.draw(); m_Side2.draw(); if (getStyle() != GLE_ARRSTY_SIMPLE) { g_closepath(); GLERC cur_color(g_get_color()); GLERC cur_full(g_get_fill()); if (getStyle() == GLE_ARRSTY_EMPTY) g_set_fill(GLE_COLOR_WHITE); else g_set_fill(cur_color); g_fill(); g_set_fill(cur_full); } if (!isSharp()) { g_stroke(); } g_set_path(false); g_move(x, y); if (old_join != 1) { g_set_line_join(old_join); } if (!(old_lstyle[0] == '1' && old_lstyle[1] == 0)) { g_set_line_style(old_lstyle); } } double GLECurvedArrowHead::getArrowCurveDist() { return m_ArrSize; } void GLECurvedArrowHead::setStartEnd(bool dir) { setEnabled(true); double dist = getArrowCurveDist(); if (dir) { m_T0 = m_Curve->getT0(); m_T1 = m_Curve->distToParamValue(m_T0, dist); m_TM = m_Curve->distToParamValue(m_T0, dist/2.0, (m_T0 + m_T1)/2.0); } else { m_T0 = m_Curve->getT1(); m_T1 = m_Curve->distToParamValue(m_T0, -dist); m_TM = m_Curve->distToParamValue(m_T0, -dist/2.0, (m_T0 + m_T1)/2.0); } } double GLECurvedArrowHead::getParamValueEnd() { return (m_T1 + m_TM) / 2; } void GLECurvedArrowHead::drawDirection(bool dir) { setStartEnd(dir); computeArrowHead(); draw(); } void GLECurvedArrowHead::computeAndDraw() { if (isEnabled()) { computeArrowHead(); draw(); } } int GLEBBoxToPixels(double dpi, double bbox) { // this has been tested with bbox.gle in gle-testsuite/plain return (int)floor((double)dpi/PS_POINTS_PER_INCH*bbox+1); } GLESaveRestore::GLESaveRestore() { model = NULL; } GLESaveRestore::~GLESaveRestore() { if (model != NULL) { delete model; } } void GLESaveRestore::save() { if (model == NULL) model = new gmodel(); g_get_state(model); } void GLESaveRestore::restore() { g_set_state(model); } int g_font_fallback(int font) { GLECoreFont* coreFont = get_core_font_ensure_loaded(font); if (coreFont->info.encoding <= 2) { CmdLineObj* cmdLine = GLEGetInterfacePointer()->getCmdLine(); if (cmdLine->hasOption(GLE_OPT_CAIRO)) { GLECore* core = g_get_core(); if (core->isShowNoteAboutFallback()) { core->setShowNoteAboutFallback(false); g_message(">> PostScript fonts not supported with '-cairo'; using 'texcmr' instead"); } return 17; } } return font; } gle-graphics-4.2.4c/src/gle/graph.cpp0000664000000000000000000017065411726234305016114 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ #define GRAPHDEF #include "all.h" #include "tokens/stokenizer.h" #include "cutils.h" #include "mem_limits.h" #include "token.h" #include "core.h" #include "glearray.h" #include "polish.h" #include "pass.h" #include "var.h" #include "graph.h" #include "begin.h" #include "axis.h" #include "gprint.h" #include "key.h" #include "justify.h" #include "file_io.h" #include "keyword.h" #include "run.h" #define GLEG_CMD_AXIS 1 #define GLEG_CMD_LABELS 2 #define GLEG_CMD_SIDE 3 #define GLEG_CMD_SUBTICKS 4 #define GLEG_CMD_TICKS 5 #define BAR_SET_COLOR 0 #define BAR_SET_FILL 1 #define BAR_SET_TOP 2 #define BAR_SET_SIDE 3 #define BAR_SET_PATTERN 4 #define BAR_SET_BACKGROUND 5 extern int trace_on; static int xxgrid[GLE_AXIS_MAX+1]; KeyInfo* g_keyInfo = 0; GLEGraphBlockData* g_graphBlockData = 0; vector g_letCmds; int g_nbar = 0; GLERC g_graph_background; int freedataset(int i); void free_temp(void); void set_sizelength(void); void draw_graph(KeyInfo* keyinfo, GLEGraphBlockInstance* graphBlock) throw (ParserError); void do_set_bar_color(const char* tk, bar_struct* bar, int type); void do_set_bar_style(const char* tk, bar_struct* bar); void do_axis_part_all(int xset) throw (ParserError); bool do_remaining_entries(int ct, bool isCommandCheck); void graph_freebars(); double get_next_exp(TOKENS tk,int ntk,int *curtok); void data_command(GLESourceLine& sline); void do_discontinuity(); void do_bar(int& ct, GLEGraphBlockInstance* graphBlock); void do_fill(int& ct, GLEGraphBlockInstance* graphBlock); void do_hscale(int& ct); void do_letsave(GLESourceLine& sline); void do_size(int& ct); void do_key(int& ct); void do_vscale(int& ct); void do_scale(int& ct); void do_colormap(int& ct); void do_main_title(int& ct); void do_noticks(int& ct); void do_names(int& ct); void do_places(int& ct); void do_title(int& ct); void do_datasets(int& ct, GLEGraphBlockInstance* graphBlock); bool is_dataset_identifier(const char* ds); GLESub* sub_find(const string& s); GLEAxis xx[GLE_AXIS_MAX+1]; GLEColorMap* g_colormap; bool check_axis_command_name(const char* name, const char* cmp) { int type = axis_type(name); if (type != GLE_AXIS_ALL) { int len = strlen(name); if (len > 2 && name[1] >= '0' && name[1] <= '9') { return str_i_equals(name+2, cmp); } else if (len > 1) { return str_i_equals(name+1, cmp); } } return false; } void ensureDataSetCreated(int d) { if (dp[d] == NULL) { dp[d] = new GLEDataSet(d); copy_default(d); if (ndata < d) ndata = d; } } void ensureDataSetCreatedAndSetUsed(int d) { ensureDataSetCreated(d); dp[d]->axisscale = true; g_graphBlockData->getOrder()->addDataSet(d); } void replace_exp(string& exp); fill_data::fill_data(): layer(0), da(0), db(0), type(0), xmin(GLE_INF), ymin(GLE_INF), xmax(-GLE_INF), ymax(-GLE_INF) { } GLEInternalClassDefinitions::GLEInternalClassDefinitions() { m_keySeparator = new GLEClassDefinition("key_separator"); m_keySeparator->addField("lstyle"); m_drawCommand = new GLEClassDefinition("draw_command"); m_drawCommand->addField("index"); m_fill = new GLEClassDefinition("fill"); m_fill->addField("index"); m_bar = new GLEClassDefinition("bar"); m_bar->addField("index"); } GLEGraphDataSetOrder::GLEGraphDataSetOrder(GLEGraphBlockData* data): m_data(data), m_order(new GLEArrayImpl()) { } void GLEGraphDataSetOrder::addDataSet(int dataSetID) { std::set::iterator found(m_isIn.find(dataSetID)); if (found == m_isIn.end()) { m_isIn.insert(dataSetID); m_order->addInt(dataSetID); } } void GLEGraphDataSetOrder::addObject(GLEDataObject* object) { m_order->addObject(object); } GLEGraphBlockData::GLEGraphBlockData(GLEGraphBlockBase* graphBlockBase): m_graphBlockBase(graphBlockBase), m_order(new GLEGraphDataSetOrder(this)) { } class GLEGraphDrawCommand { public: GLEGraphDrawCommand(int layer); virtual ~GLEGraphDrawCommand(); void createGraphDrawCommand(GLESourceLine& sline); void draw(); int getLayer() const; private: GLESub* m_sub; GLEArrayImpl m_arguments; int m_layer; }; GLEGraphDrawCommand::GLEGraphDrawCommand(int layer): m_sub(0), m_layer(layer) { } GLEGraphDrawCommand::~GLEGraphDrawCommand() { } void GLEGraphDrawCommand::createGraphDrawCommand(GLESourceLine& sline) { GLEParser* parser = get_global_parser(); parser->setString(sline.getCodeCStr()); Tokenizer* tokens = parser->getTokens(); tokens->ensure_next_token_i("DRAW"); std::string subName(tokens->next_token()); str_to_uppercase(subName); m_sub = sub_find((char*)subName.c_str()); if (m_sub != NULL) { GLESubCallInfo info(m_sub); parser->pass_subroutine_call(&info, tokens->token_pos_col()); parser->evaluate_subroutine_arguments(&info, &m_arguments); } else { g_throw_parser_error("function '", subName.c_str(), "' not defined"); } } void GLEGraphDrawCommand::draw() { getGLERunInstance()->sub_call(m_sub, &m_arguments); } int GLEGraphDrawCommand::getLayer() const { return m_layer; } GLEGraphPart::GLEGraphPart() { } GLEGraphPart::~GLEGraphPart() { } void GLEGraphPart::drawLayer(int /* layer */) { } void GLEGraphPart::addToOrder(GLEGraphDataSetOrder* /* order */) { } void GLEGraphPart::drawLayerObject(int /* layer */, GLEMemoryCell* /* object */) { } GLEGraphDrawCommands::GLEGraphDrawCommands() { } GLEGraphDrawCommands::~GLEGraphDrawCommands() { } std::set GLEGraphDrawCommands::getLayers() { std::set result; for (int i = 0; i < int(m_drawCommands.size()); ++i) { result.insert(m_drawCommands[i]->getLayer()); } return result; } void GLEGraphDrawCommands::drawLayerObject(int layer, GLEMemoryCell* object) { GLEClassInstance* classObj = getGLEClassInstance(object, g_graphBlockData->getGraphBlockBase()->getClassDefinitions()->getDrawCommand()); if (classObj != 0) { int index = classObj->getArray()->getInt(0); if (m_drawCommands[index]->getLayer() == layer) { g_gsave(); g_beginclip(); g_set_path(true); g_newpath(); g_box_stroke(xbl, ybl, xbl+xlength, ybl+ylength, false); g_clip(); g_set_path(false); g_set_hei(g_fontsz); m_drawCommands[index]->draw(); g_endclip(); g_grestore(); } } } void GLEGraphDrawCommands::doDrawCommand(GLESourceLine& sline, GLEGraphBlockInstance* graphBlock) { int index = m_drawCommands.size(); GLEGraphDrawCommand* cmd = new GLEGraphDrawCommand(graphBlock->getLayerWithDefault(GLE_GRAPH_LAYER_DRAW_COMMAND)); m_drawCommands.push_back(cmd); GLEGraphDataSetOrder* order = graphBlock->getData()->getOrder(); GLEClassDefinition* classDef = graphBlock->getGraphBlockBase()->getClassDefinitions()->getDrawCommand(); GLEClassInstance* classObj = new GLEClassInstance(classDef); order->addObject(classObj); classObj->getArray()->addInt(index); cmd->createGraphDrawCommand(sline); } GLEGraphBlockInstance::GLEGraphBlockInstance(GLEGraphBlockBase* parent): GLEBlockInstance(parent), m_graphBlockBase(parent), m_layer(GLE_GRAPH_LAYER_UNDEFINED), m_data(0) { m_drawCommands = new GLEGraphDrawCommands(); m_axis = new GLEGraphPartAxis(); m_graphParts.push_back(new GLEGraphPartGrid()); m_graphParts.push_back(new GLEGraphPartFills()); m_graphParts.push_back(new GLEGraphPartBars()); m_graphParts.push_back(m_axis); m_graphParts.push_back(new GLEGraphPartLines()); m_graphParts.push_back(new GLEGraphPartErrorBars()); m_graphParts.push_back(new GLEGraphPartMarkers()); m_graphParts.push_back(m_drawCommands); } GLEGraphBlockInstance::~GLEGraphBlockInstance() { } void GLEGraphBlockInstance::executeLine(GLESourceLine& sline) { execute_graph(sline, false, this); } void GLEGraphBlockInstance::endExecuteBlock() { draw_graph(g_keyInfo, this); } void GLEGraphBlockInstance::doDrawCommand(GLESourceLine& sline) { m_drawCommands->doDrawCommand(sline, this); } int GLEGraphBlockInstance::getLayer() const { return m_layer; } int GLEGraphBlockInstance::getLayerWithDefault(int defaultLayer) const { if (m_layer == GLE_GRAPH_LAYER_UNDEFINED) { return defaultLayer; } else { return m_layer; } } void GLEGraphBlockInstance::setLayer(int layer) { m_layer = layer; } void GLEGraphBlockInstance::drawParts() { typedef std::set LayerSet; LayerSet allLayers; GLEVectorAutoDelete partLayers; GLEGraphDataSetOrder* order = getData()->getOrder(); for (int i = 0; i < int(m_graphParts.size()); ++i) { m_graphParts[i]->addToOrder(order); } for (int i = 0; i < int(m_graphParts.size()); ++i) { LayerSet layers(m_graphParts[i]->getLayers()); allLayers.insert(layers.begin(), layers.end()); partLayers.push_back(new LayerSet(layers.begin(), layers.end())); } for (LayerSet::const_iterator layer(allLayers.begin()); layer != allLayers.end(); ++layer) { for (int i = 0; i < int(m_graphParts.size()); ++i) { if (partLayers[i]->count(*layer) != 0) { m_graphParts[i]->drawLayer(*layer); } } GLEArrayImpl* orderArray = order->getArray(); for (unsigned int j = 0; j < orderArray->size(); ++j) { for (int i = 0; i < int(m_graphParts.size()); ++i) { if (partLayers[i]->count(*layer) != 0) { m_graphParts[i]->drawLayerObject(*layer, orderArray->get(j)); } } } } } GLEGraphPartAxis* GLEGraphBlockInstance::getAxis() { return m_axis; } void GLEGraphBlockInstance::setData(GLEGraphBlockData* data) { m_data = data; } GLEGraphBlockData* GLEGraphBlockInstance::getData() { return m_data; } GLEGraphBlockBase* GLEGraphBlockInstance::getGraphBlockBase() { return m_graphBlockBase; } GLEGraphBlockBase::GLEGraphBlockBase(): GLEBlockBase("graph", false), m_classDefinitions(new GLEInternalClassDefinitions()) { } GLEGraphBlockBase::~GLEGraphBlockBase() { } GLEBlockInstance* GLEGraphBlockBase::beginExecuteBlockImpl(GLESourceLine& sline, int *pcode, int *cp) { GLEGraphBlockInstance* graphBlock = new GLEGraphBlockInstance(this); begin_graph(this, graphBlock); return graphBlock; } bool GLEGraphBlockBase::checkLine(GLESourceLine& sline) { return execute_graph(sline, true, 0); } // Font sizes in a graph are based in g_fontsz, but this was set in the original // GLE to a fixed proportion of the largest dimension of a graph. The size of an // axis is defined in terms of its base size, which is equal to g_fontsz. // A useful value for base is 0.25 void begin_graph(GLEGraphBlockBase* graphBlockBase, GLEGraphBlockInstance* graphBlock) throw (ParserError) { g_colormap = NULL; for (unsigned int i = 0; i < g_letCmds.size(); i++) { deleteLet(g_letCmds[i]); } g_letCmds.clear(); delete g_keyInfo; g_keyInfo = new KeyInfo(); delete g_graphBlockData; g_graphBlockData = new GLEGraphBlockData(graphBlockBase); graphBlock->setData(g_graphBlockData); g_hscale = .7; g_vscale = .7; g_discontinuityThreshold = GLE_INF; if (g_get_compatibility() == GLE_COMPAT_35) { g_nobox = false; } else { g_nobox = true; } g_center = false; g_auto_s_h = false; g_auto_s_v = false; g_math = false; for (int i = 1; i <= GLE_AXIS_MAX; i++) { xxgrid[i] = 0; vinit_axis(i); } graph_init(); g_get_usersize(&g_xsize,&g_ysize); g_get_hei(&g_fontsz); set_sizelength(); dp[0] = new GLEDataSet(0); /* dataset for default settings */ } bool execute_graph(GLESourceLine& sline, bool isCommandCheck, GLEGraphBlockInstance* graphBlock) { begin_init(); int st = begin_token(sline, srclin, tk, &ntk, outbuff, !isCommandCheck); if (!st) { return false; } int ct = 1; if (str_i_equals(tk[ct],"BAR")) { if (isCommandCheck) return true; do_bar(ct, graphBlock); } else if (str_i_equals(tk[ct],"DATA")) { if (isCommandCheck) return true; data_command(sline); } else kw("FILL") { if (isCommandCheck) return true; do_fill(ct, graphBlock); } else kw("HSCALE") { if (isCommandCheck) return true; do_hscale(ct); } else kw("LET") { if (isCommandCheck) return true; do_letsave(sline); } else kw("SIZE") { if (isCommandCheck) return true; do_size(ct); } else kw("KEY") { if (isCommandCheck) return true; do_key(ct); } else kw("VSCALE") { if (isCommandCheck) return true; do_vscale(ct); } else kw("SCALE") { if (isCommandCheck) return true; do_scale(ct); } else kw("COLORMAP") { if (isCommandCheck) return true; do_colormap(ct); } else kw("TITLE") { if (isCommandCheck) return true; do_main_title(ct); } else kw("DISCONTINUITY") { if (isCommandCheck) return true; do_discontinuity(); } else kw("BACKGROUND") { if (isCommandCheck) return true; g_graph_background = next_color; } else kw("BEGIN") { ct++; kw("LAYER") { if (isCommandCheck) return true; graphBlock->setLayer(int(floor(next_exp + 0.5))); } } else kw("END") { ct++; kw("LAYER") { if (isCommandCheck) return true; graphBlock->setLayer(GLE_GRAPH_LAYER_UNDEFINED); } } else if (check_axis_command_name(tk[ct],"NOTICKS")) { if (isCommandCheck) return true; do_noticks(ct); } else if (str_i_str(tk[ct],"AXIS") != NULL) { if (isCommandCheck) return true; do_axis_part_all(GLEG_CMD_AXIS); } else if (str_i_str(tk[ct],"LABELS") != NULL) { if (isCommandCheck) return true; do_axis_part_all(GLEG_CMD_LABELS); } else if (str_i_str(tk[ct],"SIDE") != NULL) { if (isCommandCheck) return true; do_axis_part_all(GLEG_CMD_SIDE); } else if (str_i_str(tk[ct],"SUBTICKS") != NULL) { if (isCommandCheck) return true; do_axis_part_all(GLEG_CMD_SUBTICKS); } else if (str_i_str(tk[ct],"TICKS") != NULL) { if (isCommandCheck) return true; do_axis_part_all(GLEG_CMD_TICKS); } else if (str_i_str(tk[ct],"DRAW") != NULL) { if (isCommandCheck) return true; graphBlock->doDrawCommand(sline); } else if (check_axis_command_name(tk[ct],"NAMES")) { if (isCommandCheck) return true; do_names(ct); } else if (check_axis_command_name(tk[ct],"PLACES")) { if (isCommandCheck) return true; do_places(ct); } else if (check_axis_command_name(tk[ct],"TITLE")) { if (isCommandCheck) return true; do_title(ct); } else if (is_dataset_identifier(tk[ct])) { if (isCommandCheck) return true; do_datasets(ct, graphBlock); } else if (do_remaining_entries(ct, isCommandCheck)) { if (isCommandCheck) return true; } return false; } void do_bar(int& ct, GLEGraphBlockInstance* graphBlock) { /* bar d1,d2,d3 from d4,d5,d6 color red,green,blue fill grey,blue,green dist exp, width exp, LSTYLE 3,445,1 3dbar .5 .5 top black,black,black side red,green,blue notop */ int ng = 0,fi; char *ss; if (g_nbar + 1 >= MAX_NB_BAR) { g_throw_parser_error("too many bar commands in graph block"); } g_nbar++; br[g_nbar] = new bar_struct(); br[g_nbar]->ngrp = 0; GLEGraphDataSetOrder* order = graphBlock->getData()->getOrder(); GLEClassDefinition* classDef = graphBlock->getGraphBlockBase()->getClassDefinitions()->getBar(); GLEClassInstance* classObj = new GLEClassInstance(classDef); order->addObject(classObj); classObj->getArray()->addInt(g_nbar); br[g_nbar]->layer = graphBlock->getLayerWithDefault(GLE_GRAPH_LAYER_FILL); ct = 2; ss = strtok(tk[ct],","); while (ss!=NULL) { if (toupper(*ss)=='D') { ng = (br[g_nbar]->ngrp)++; int d = get_dataset_identifier(ss); ensureDataSetCreatedAndSetUsed(d); br[g_nbar]->to[ng] = d; } ss = strtok(0,","); } br[g_nbar]->horiz = false; for (int i = 0; i <= ng; i++) { br[g_nbar]->color[i] = new GLEColor(0.0); br[g_nbar]->fill[i] = new GLEColor(i == 0 ? 0.0 : 1.0 - ng/i); br[g_nbar]->from[i] = 0; g_get_line_width(&br[g_nbar]->lwidth[i]); strcpy(br[g_nbar]->lstyle[i] ,"1\0"); } ct++; while (ct<=ntk) { kw("DIST") { br[g_nbar]->dist = next_exp; } else kw("WIDTH") { br[g_nbar]->width = next_exp; } else kw("3D") { br[g_nbar]->x3d = next_exp; br[g_nbar]->y3d = next_exp; } else kw("NOTOP") { br[g_nbar]->notop = true; } else kw("HORIZ") { br[g_nbar]->horiz = true; } else kw("LSTYLE") { next_str((char *) br[g_nbar]->lstyle); } else kw("STYLE") { ct += 1; do_set_bar_style(tk[ct], br[g_nbar]); } else kw("LWIDTH") { br[g_nbar]->lwidth[0] = next_exp; } else kw("FROM") { fi = 0; ct +=1; ss = strtok(tk[ct],","); while (ss!=NULL) { if (toupper(*ss)=='D') { int di = get_dataset_identifier(ss); ensureDataSetCreatedAndSetUsed(di); br[g_nbar]->from[fi++] = di; } ss = strtok(0,","); } } else kw("COLOR") { ct += 1; do_set_bar_color(tk[ct], br[g_nbar], BAR_SET_COLOR); } else kw("SIDE") { ct += 1; do_set_bar_color(tk[ct], br[g_nbar], BAR_SET_SIDE); } else kw("TOP") { ct += 1; do_set_bar_color(tk[ct], br[g_nbar], BAR_SET_TOP); } else kw("FILL") { ct++; do_set_bar_color(tk[ct], br[g_nbar], BAR_SET_FILL); } else kw("PATTERN") { ct++; do_set_bar_color(tk[ct], br[g_nbar], BAR_SET_PATTERN); } else kw("BACKGROUND") { ct++; do_set_bar_color(tk[ct], br[g_nbar], BAR_SET_BACKGROUND); } else { g_throw_parser_error("unrecognised bar sub command '", tk[ct], "'"); } ct++; } } /* fill x1,d2 color green xmin 1 xmax 2 ymin 1 ymax 2 */ /* fill d1,x2 color green xmin 1 xmax 2 ymin 1 ymax 2 */ /* fill d1,d2 color green xmin 1 xmax 2 ymin 1 ymax 2 */ /* fill d1 color green xmin 1 xmax 2 ymin 1 ymax 2 */ void do_fill(int& ct, GLEGraphBlockInstance* graphBlock) { if (nfd + 1 >= MAX_NB_FILL) { g_throw_parser_error("too many fill commands in graph block"); } fd[++nfd] = new fill_data(); GLEGraphDataSetOrder* order = graphBlock->getData()->getOrder(); GLEClassDefinition* classDef = graphBlock->getGraphBlockBase()->getClassDefinitions()->getFill(); GLEClassInstance* classObj = new GLEClassInstance(classDef); order->addObject(classObj); classObj->getArray()->addInt(nfd); fd[nfd]->layer = graphBlock->getLayerWithDefault(GLE_GRAPH_LAYER_FILL); char s1[40],s2[40]; ct = 2; strcpy(s1,strtok(tk[ct],",")); char *ss = strtok(0,","); if (ss == NULL) { strcpy(s2,""); } else { strcpy(s2,ss); strtok(0,","); } if (str_i_equals(s1,"X1")) { fd[nfd]->type = 1; int d = get_dataset_identifier(s2); fd[nfd]->da = d; } else if (str_i_equals(s2,"X2")) { fd[nfd]->type = 2; int d = get_dataset_identifier(s1); fd[nfd]->da = d; } else if (!str_i_equals(s2,"")) { fd[nfd]->type = 3; int d = get_dataset_identifier(s1); int d2 = get_dataset_identifier(s2); fd[nfd]->da = d; fd[nfd]->db = d2; } else if (toupper(*s1)=='D') { fd[nfd]->type = 4; int d = get_dataset_identifier(s1); fd[nfd]->da = d; } else { g_throw_parser_error("invalid fill option, wanted d1,d2 or x1,d1 or d1,x2 or d1"); } if (fd[nfd]->da != 0) { ensureDataSetCreatedAndSetUsed(fd[nfd]->da); } if (fd[nfd]->db != 0) { ensureDataSetCreatedAndSetUsed(fd[nfd]->db); } ct++; fd[nfd]->color = new GLEColor(1.0 - nfd * 0.1); fd[nfd]->xmin = -GLE_INF; fd[nfd]->xmax = GLE_INF; fd[nfd]->ymin = -GLE_INF; fd[nfd]->ymax = GLE_INF; while (ct<=ntk) { kw("COLOR") { ct++; fd[nfd]->color = pass_color_var(tk[ct]); } else kw("XMIN") { fd[nfd]->xmin = next_exp; } else kw("XMAX") { fd[nfd]->xmax = next_exp; } else kw("YMIN") { fd[nfd]->ymin = next_exp; } else kw("YMAX") { fd[nfd]->ymax = next_exp; } else { g_throw_parser_error("unrecognised fill sub command: '", tk[ct], "'"); } ct++; } } void do_key(int& ct) { ct = 2; while (ct<=ntk) { kw("OFFSET") { g_keyInfo->setOffsetX(next_exp); g_keyInfo->setOffsetY(next_exp); } else kw("MARGINS") { double mx = next_exp; double my = next_exp; g_keyInfo->setMarginXY(mx, my); } else kw("ABSOLUTE") { if (g_xsize*g_ysize==0) { g_xsize = 10; g_ysize = 10; g_get_usersize(&g_xsize,&g_ysize); } window_set(false); store_window_bounds_to_vars(); set_sizelength(); g_keyInfo->setOffsetX(next_exp); g_keyInfo->setOffsetY(next_exp); g_keyInfo->setAbsolute(true); } else kw("BACKGROUND") g_keyInfo->setBackgroundColor(next_color); else kw("BOXCOLOR") g_keyInfo->setBoxColor(next_color); else kw("ROW") g_keyInfo->setBase(next_exp); else kw("LPOS") g_keyInfo->setLinePos(next_exp); else kw("LLEN") g_keyInfo->setLineLen(next_exp); else kw("NOBOX") g_keyInfo->setNoBox(true); else kw("NOLINE") g_keyInfo->setNoLines(true); else kw("COMPACT") g_keyInfo->setCompact(true); else kw("HEI") g_keyInfo->setHei(next_exp); else kw("POSITION") next_str(g_keyInfo->getJustify()); else kw("POS") next_str(g_keyInfo->getJustify()); else kw("JUSTIFY") { next_str(g_keyInfo->getJustify()); g_keyInfo->setPosOrJust(false); } else kw("JUST") { next_str(g_keyInfo->getJustify()); g_keyInfo->setPosOrJust(false); } else kw("DIST") g_keyInfo->setDist(next_exp); else kw("COLDIST") g_keyInfo->setColDist(next_exp); else kw("OFF") g_keyInfo->setDisabled(true); else kw("SEPARATOR") { GLEClassDefinition* keySeparatorDefinition = g_graphBlockData->getGraphBlockBase()->getClassDefinitions()->getKeySeparator(); GLEClassInstance* keySeparator = new GLEClassInstance(keySeparatorDefinition); g_graphBlockData->getOrder()->addObject(keySeparator); ct++; kw("LSTYLE") { keySeparator->getArray()->addInt((int)floor(next_exp + 0.5)); } } else g_throw_parser_error("unrecognised KEY sub command: '",tk[ct],"'"); ct++; } } void do_hscale(int& ct) { if (str_i_equals(tk[ct+1], "AUTO")) g_auto_s_h = true; else g_hscale = next_exp; } void do_letsave(GLESourceLine& sline) { GLELet* let = parseLet(sline); g_letCmds.push_back(let); } void do_size(int& ct) { g_xsize = next_exp; g_ysize = next_exp; /* ! set up some more constants */ set_sizelength(); do_remaining_entries(ct+1, false); } void do_scale(int& ct) { if (str_i_equals(tk[ct+1], "AUTO")) { g_auto_s_v = true; g_auto_s_h = true; ct++; } else { g_hscale = next_exp; g_vscale = next_exp; } do_remaining_entries(ct+1, false); } void do_vscale(int& ct) { if (str_i_equals(tk[ct+1], "AUTO")) g_auto_s_v = true; else g_vscale = next_exp; } void do_colormap(int& ct) { g_colormap = new GLEColorMap(); g_colormap->setFunction(tk[++ct]); g_colormap->setWidth((int)floor(next_exp+0.5)); g_colormap->setHeight((int)floor(next_exp+0.5)); ct++; while (ct <= ntk) { kw("COLOR") g_colormap->setColor(true); kw("INVERT") g_colormap->setInvert(true); kw("ZMIN") g_colormap->setZMin(next_exp); kw("ZMAX") g_colormap->setZMax(next_exp); kw("PALETTE") { string tmp; next_str_cpp(tmp); str_to_uppercase(tmp); g_colormap->setPalette(tmp); } ct++; } g_colormap->readData(); } void do_names(int& ct) { int t = axis_type_check(tk[1]); xx[t].label_off = false; if (ntk >= 3 && str_i_equals(tk[2], "FROM") && toupper(tk[3][0]) == 'D') { // Support syntax "xnames from d1" to retrieve names from the data set xx[t].setNamesDataSet(get_dataset_identifier(tk[3])); } else { ct = 1; while (ct 0; } void do_axis(int axis, bool craxis) throw (ParserError) { int ct = 2; while (ct <= ntk) { kw("BASE") xx[axis].base = next_exp; else kw("COLOR") xx[axis].setColor(next_color); else kw("DSUBTICKS") xx[axis].dsubticks = next_exp; else kw("DTICKS") { xx[axis].dticks = next_exp; if (craxis) xx[axis].label_off = false; } else kw("FTICK") { xx[axis].ftick = next_exp; xx[axis].has_ftick = true; } else kw("SYMTICKS") xx[axis].ticks_both = get_on_off(tk, &ct); else kw("SHIFT") xx[axis].shift = next_exp; else kw("ANGLE") xx[axis].label_angle = next_exp; else kw("GRID") { xxgrid[axis] = true; if (str_i_equals(tk[ct+1],"ONTOP")) { xx[axis].setGridOnTop(true); ct++; } } else kw("NEGATE") { xx[axis].negate = true; } else kw("FONT") xx[axis].label_font = next_font; else kw("LOG") xx[axis].log = true; /* don't make log depend on craxis, otherwise grid may not line up */ else kw("LIN") xx[axis].log = false; else kw("LSTYLE") next_str(xx[axis].side_lstyle); else kw("LWIDTH") xx[axis].side_lwidth = next_exp; else kw("MIN") { double value = next_exp; if (craxis) xx[axis].getRange()->setMinSet(value); } else kw("MAX") { double value = next_exp; if (craxis) xx[axis].getRange()->setMaxSet(value); } else kw("OFFSET") { double offs = next_exp; if (craxis) { xx[axis].offset = offs; xx[axis].has_offset = true; if (!g_math) { if (axis == GLE_AXIS_X) xx[GLE_AXIS_X0].off = false; if (axis == GLE_AXIS_Y) xx[GLE_AXIS_Y0].off = false; } } } else kw("ROUNDRANGE") xx[axis].roundRange = get_on_off(tk, &ct); else kw("HEI") xx[axis].label_hei = next_exp; else kw("NOLAST") xx[axis].nolast = true; else kw("LAST") xx[axis].nolast = !get_on_off(tk, &ct); else kw("FIRST") xx[axis].nofirst = !get_on_off(tk, &ct); else kw("NOFIRST") xx[axis].nofirst = true; else kw("NSUBTICKS") xx[axis].nsubticks = (int) next_exp; else kw("NTICKS") { xx[axis].nticks = (int) next_exp; if (craxis) xx[axis].label_off = false; } else kw("ON") xx[axis].off = false; else kw("OFF") xx[axis].off = true; else kw("FORMAT") next_str_cpp(xx[axis].format); else kw("SCALE") { if (str_i_equals(tk[ct+1],"QUANTILE")) { ct++; GLERC q_scale = new GLEAxisQuantileScale(); while (true) { if (str_i_equals(tk[ct+1], "LOWER")) { ct++; q_scale->setLowerQuantile(next_exp); } else if (str_i_equals(tk[ct+1], "UPPER")) { ct++; q_scale->setUpperQuantile(next_exp); } else if (str_i_equals(tk[ct+1], "FACTOR")) { ct++; double factor = next_exp; q_scale->setLowerQuantileFactor(factor); q_scale->setUpperQuantileFactor(factor); } else if (str_i_equals(tk[ct+1], "LFACTOR")) { ct++; q_scale->setLowerQuantileFactor(next_exp); } else if (str_i_equals(tk[ct+1], "UFACTOR")) { ct++; q_scale->setUpperQuantileFactor(next_exp); } else { break; } } xx[axis].setQuantileScale(q_scale.get()); } } else { g_throw_parser_error("expecting axis sub command, found '", tk[ct], "'"); } ct++; } } void do_labels(int axis, bool showerr) throw (ParserError) { int ct = 2; while (ct <= ntk) { if (*tk[ct]==' ') ct++; kw("HEI") xx[axis].label_hei = next_exp; else kw("OFF") { if (showerr) { xx[axis].label_off = true; xx[axis].has_label_onoff = true; } } else kw("ON") { if (showerr) { xx[axis].label_off = false; xx[axis].has_label_onoff = true; xx[axis].off = false; } } else kw("COLOR") xx[axis].label_color = next_color; else kw("FONT") xx[axis].label_font = next_font; else kw("DIST") xx[axis].label_dist = next_exp; else kw("ALIGN") { ct++; kw("LEFT") xx[axis].label_align = JUST_LEFT; else kw("RIGHT") xx[axis].label_align = JUST_RIGHT; } else kw("LOG") { ct++; kw("OFF") xx[axis].lgset = GLE_AXIS_LOG_OFF; else kw("L25B") xx[axis].lgset = GLE_AXIS_LOG_25B; else kw("L25") xx[axis].lgset = GLE_AXIS_LOG_25; else kw("L1") xx[axis].lgset = GLE_AXIS_LOG_1; else kw("N1") xx[axis].lgset = GLE_AXIS_LOG_N1; else if (showerr) g_throw_parser_error("Expecting OFF, L25, L25B, L1, or N1, found '", tk[ct], "'"); } else if (showerr) { g_throw_parser_error("Expecting LABELS sub command, found '", tk[ct], "'"); } ct++; } } void do_side(int axis, bool showerr) throw (ParserError) { int ct = 2; while (ct <= ntk) { if (*tk[ct]==' ') ct++; kw("OFF") { if (showerr) xx[axis].side_off = true; } else kw("ON") { if (showerr) xx[axis].side_off = false; } else kw("COLOR") xx[axis].side_color = next_color; else kw("LWIDTH") xx[axis].side_lwidth = next_exp; else kw("LSTYLE") next_str(xx[axis].side_lstyle); else if (showerr) { g_throw_parser_error("Expecting SIDE sub command, found '", tk[ct], "'"); } ct++; } } void do_ticks(int axis, bool showerr) throw (ParserError) { int ct = 2; while (ct <= ntk) { if (*tk[ct]==' ') ct++; kw("LENGTH") xx[axis].ticks_length = next_exp; else kw("OFF") { if (showerr) { xx[axis].ticks_off = true; xx[axis].subticks_off = true; } } else kw("ON") { if (showerr) { xx[axis].ticks_off = false; xx[axis].subticks_off = false; } } else kw("COLOR") { xx[axis].ticks_color = next_color; xx[axis].subticks_color = xx[axis].ticks_color; } else kw("LWIDTH") { xx[axis].ticks_lwidth = next_exp; } else kw("LSTYLE") { next_str(xx[axis].ticks_lstyle); } else if (showerr) { g_throw_parser_error("Expecting TICKS sub command, found '", tk[ct], "'"); } ct++; } } void do_subticks(int axis, bool showerr) throw (ParserError) { int ct = 2; while (ct <= ntk) { if (*tk[ct]==' ') ct++; kw("LENGTH") xx[axis].subticks_length = next_exp; else kw("OFF") { if (showerr) { xx[axis].subticks_off = true; xx[axis].has_subticks_onoff = true; } } else kw("ON") { if (showerr) { xx[axis].subticks_off = false; xx[axis].has_subticks_onoff = true; } } else kw("COLOR") xx[axis].subticks_color = next_color; else kw("LWIDTH") xx[axis].subticks_lwidth = next_exp; else kw("LSTYLE") next_str(xx[axis].subticks_lstyle); else { g_throw_parser_error("Expecting SUBTICKS sub command, found '", tk[ct], "'"); } ct++; } } void do_axis_part(int axis, bool craxis, int xset) throw (ParserError) { // craxis = command is for current axis // showerr = passing options for axis command to labels/side/ticks commands switch (xset) { case GLEG_CMD_AXIS: do_axis(axis, craxis); do_labels(axis, false); do_side(axis, false); do_ticks(axis, false); break; case GLEG_CMD_LABELS: do_labels(axis, true); break; case GLEG_CMD_SIDE: do_side(axis, true); break; case GLEG_CMD_TICKS: do_ticks(axis, true); break; case GLEG_CMD_SUBTICKS: do_subticks(axis, true); break; } } void do_axis_part_all(int xset) throw (ParserError) { int axis = axis_type(tk[1]); if (axis == GLE_AXIS_ALL) { do_axis_part(GLE_AXIS_X, false, xset); do_axis_part(GLE_AXIS_X0, false, xset); do_axis_part(GLE_AXIS_X2, false, xset); do_axis_part(GLE_AXIS_Y, false, xset); do_axis_part(GLE_AXIS_Y0, false, xset); do_axis_part(GLE_AXIS_Y2, false, xset); } else { do_axis_part(axis, true, xset); } if (axis == GLE_AXIS_X) { do_axis_part(GLE_AXIS_X2, false, xset); do_axis_part(GLE_AXIS_X0, false, xset); do_axis_part(GLE_AXIS_T, false, xset); } if (axis == GLE_AXIS_Y) { do_axis_part(GLE_AXIS_Y2, false, xset); do_axis_part(GLE_AXIS_Y0, false, xset); } } void do_discontinuity() { int ct = 2; while (ct <= ntk) { kw("THRESHOLD") { g_discontinuityThreshold = next_exp; } else { g_throw_parser_error("Expecting discontinuity option, but found '", tk[ct], "'"); } ct++; } } void ensure_fill_created(bar_struct* bar, int fi) { if (bar->fill[fi].isNull()) { bar->fill[fi] = new GLEColor(); bar->fill[fi]->setTransparent(true); } } void update_key_fill(bar_struct* bar, int fi) { int dataset = bar->to[fi]; if (dp[dataset] != NULL) { dp[dataset]->key_fill = bar->fill[fi]; } } void do_set_bar_color(const char* tk, bar_struct* bar, int type) { /* Use tokenizer that jumps over () pairs to be able to parse CVTRGB(...) */ int fi = 0; string tokstr = (const char*)tk; level_char_separator separator(",", "", "(", ")"); tokenizer tokens(tokstr, separator); while (tokens.has_more()) { GLERC color(pass_color_var(tokens.next_token().c_str())); switch (type) { case BAR_SET_COLOR: bar->color[fi] = color; break; case BAR_SET_FILL: ensure_fill_created(bar, fi); update_color_foreground(bar->fill[fi].get(), color.get()); update_key_fill(bar, fi); break; case BAR_SET_TOP: bar->top[fi] = color; break; case BAR_SET_SIDE: bar->side[fi] = color; break; case BAR_SET_PATTERN: if (color->isFill() && color->getFill()->getFillType() == GLE_FILL_TYPE_PATTERN) { ensure_fill_created(bar, fi); update_color_fill_pattern(bar->fill[fi].get(), static_cast(color->getFill())); update_key_fill(bar, fi); } else { g_throw_parser_error("expected fill pattern"); } break; case BAR_SET_BACKGROUND: ensure_fill_created(bar, fi); update_color_fill_background(bar->fill[fi].get(), color.get()); update_key_fill(bar, fi); break; } fi++; } } void do_set_bar_style(const char* tk, bar_struct* bar) { int fi = 0; string tokstr = (const char*)tk; level_char_separator separator(",", "", "(", ")"); tokenizer tokens(tokstr, separator); while (tokens.has_more()) { pass_file_name(tokens.next_token().c_str(), bar->style[fi]); str_to_uppercase(bar->style[fi]); fi++; } } void set_sizelength() { double ox, oy; /* get the origin x,y */ g_get_xy(&ox,&oy); if (g_hscale==0) g_hscale = .7; if (g_vscale==0) g_vscale = .7; xbl = ox + (g_xsize/2)-(g_xsize*g_hscale/2); ybl = oy + (g_ysize/2)-(g_ysize*g_vscale/2); xlength = g_xsize*g_hscale; ylength = g_ysize*g_vscale; // In more recent versions, the size of a graph font depends on the hei parameter if (g_get_compatibility() == GLE_COMPAT_35) { if (xlength GLEGraphPartGrid::getLayers() { std::set result; result.insert(GLE_GRAPH_LAYER_GRID); return result; } void GLEGraphPartGrid::drawLayerPart(DrawAxisPart axisPart) { GLERectangle box; box.initRange(); draw_axis_pos(GLE_AXIS_Y0, xbl, ybl, true, axisPart, &box); draw_axis_pos(GLE_AXIS_Y, xbl, ybl, true, axisPart, &box); draw_axis_pos(GLE_AXIS_Y2, xbl+xlength, ybl, true, axisPart, &box); draw_axis_pos(GLE_AXIS_X, xbl, ybl, false, axisPart, &box); draw_axis_pos(GLE_AXIS_X0, xbl, ybl, false, axisPart, &box); draw_axis_pos(GLE_AXIS_X2, xbl, ybl+ylength, false, axisPart, &box); } void GLEGraphPartGrid::drawLayer(int layer) { drawLayerPart(DRAW_AXIS_GRID_SUBTICKS); drawLayerPart(DRAW_AXIS_GRID_TICKS); } GLEGraphPartAxis::GLEGraphPartAxis(): m_box(0) { } GLEGraphPartAxis::~GLEGraphPartAxis() { } std::set GLEGraphPartAxis::getLayers() { std::set result; result.insert(GLE_GRAPH_LAYER_AXIS); return result; } void GLEGraphPartAxis::drawLayer(int layer) { g_init_bounds(); // y-axis should *not* influence position of title! draw_axis_pos(GLE_AXIS_Y0, xbl, ybl, true, DRAW_AXIS_ALL, m_box); draw_axis_pos(GLE_AXIS_Y, xbl, ybl, true, DRAW_AXIS_ALL, m_box); draw_axis_pos(GLE_AXIS_Y2, xbl+xlength, ybl, true, DRAW_AXIS_ALL, m_box); GLEMeasureBox measure; measure.measureStart(); draw_axis_pos(GLE_AXIS_X, xbl, ybl, false, DRAW_AXIS_ALL, m_box); draw_axis_pos(GLE_AXIS_X0, xbl, ybl, false, DRAW_AXIS_ALL, m_box); draw_axis_pos(GLE_AXIS_X2, xbl, ybl+ylength, false, DRAW_AXIS_ALL, m_box); g_update_bounds(xbl+xlength/2, ybl+ylength); measure.measureEnd(); draw_axis_pos(GLE_AXIS_T, xbl, measure.getYMax(), true, DRAW_AXIS_ALL, m_box); // otherwise it does not work if all axis are disabled! g_update_bounds_box(m_box); } void GLEGraphPartAxis::setBox(GLERectangle* box) { m_box = box; } void prepare_graph_key_and_clip(double ox, double oy, KeyInfo* keyinfo) { if (!keyinfo->hasHei()) keyinfo->setHei(g_fontsz); measure_key(keyinfo); if (keyinfo->getNbEntries() > 0 && !keyinfo->isDisabled() && !keyinfo->getNoBox() && keyinfo->getBackgroundColor()->isTransparent()) { g_gsave(); g_beginclip(); g_set_path(true); g_newpath(); GLERectangle fullFig; g_get_userbox_undev(&fullFig); g_box_stroke(&fullFig, true); g_box_stroke(keyinfo->getRect(), false); g_clip(); g_set_path(false); } } void draw_graph(KeyInfo* keyinfo, GLEGraphBlockInstance* graphBlock) throw (ParserError) { GLERectangle box; double ox,oy; do_bigfile_compatibility(); g_get_bounds(&box); /* if no size given, take entire drawing */ if (g_xsize*g_ysize==0) { g_xsize = 10; g_ysize = 10; g_get_usersize(&g_xsize,&g_ysize); } /* get scales from data sets */ do_each_dataset_settings(); set_bar_axis_places(); get_dataset_ranges(); /* this window set is there to initialize ranges based on data */ /* in case there is no ranges given in let commands */ window_set(false); /* update scale based on let commands if not explicit scale given */ if (should_autorange_based_on_lets()) { /* if min max not set, do_let in approximate way first */ for (unsigned int i = 0; i < g_letCmds.size(); i++) { doLet(g_letCmds[i], false); } get_dataset_ranges(); for (int i = 1; i <= ndata; i++) { if (dp[i] != NULL) { dp[i]->restore(); } } } else { /* otherwise window_set will round ranges found by previous window_set! */ reset_axis_ranges(); } window_set(true); store_window_bounds_to_vars(); /* get the origin x,y */ g_get_xy(&ox,&oy); g_gsave(); set_sizelength(); g_set_hei(g_fontsz); /* draw the box */ if (!g_nobox) { g_box_stroke(ox, oy, ox+g_xsize, oy+g_ysize); } /* init axis things */ vinit_title_axis(); axis_add_noticks(); axis_init_length(); /* center? */ if (g_center || g_auto_s_v || g_auto_s_h) { GLERectangle dummy; dummy.initRange(); GLEMeasureBox measure; GLEDevice* old_device = g_set_dummy_device(); measure.measureStart(); graphBlock->getAxis()->setBox(&dummy); graphBlock->getAxis()->drawLayer(GLE_GRAPH_LAYER_UNDEFINED); measure.measureEnd(); g_restore_device(old_device); if (g_auto_s_h) { double d1 = measure.getXMin() - ox - g_fontsz/5; double d2 = ox + g_xsize - measure.getXMax() - g_fontsz/5; double l1 = ox + g_xsize/2 - xlength/2 - measure.getXMin(); double new_xlen = xlength + d1 + d2; g_hscale = new_xlen/g_xsize; ox += new_xlen/2 - g_xsize/2 + l1 + g_fontsz/5; } else if (g_center) { ox += ox+g_xsize/2.0 - measure.getXMid(); } if (g_auto_s_v) { double d1 = measure.getYMin() - oy - g_fontsz/5; double d2 = oy + g_ysize - measure.getYMax() - g_fontsz/5; double l1 = oy + g_ysize/2 - ylength/2 - measure.getYMin(); double new_ylen = ylength + d1 + d2; g_vscale = new_ylen/g_ysize; oy += new_ylen/2 - g_ysize/2 + l1 + g_fontsz/5; } else if (g_center) { oy += oy+g_ysize/2.0 - measure.getYMid(); } g_move(ox,oy); set_sizelength(); axis_init_length(); } /* Measure key */ g_move(ox,oy); prepare_graph_key_and_clip(ox, oy, keyinfo); /* must come after auto scale */ axis_add_grid(); /* do LETS now */ for (unsigned int i = 0; i < g_letCmds.size(); i++) { doLet(g_letCmds[i], true); } /* Throw away missing values if NOMISS on datasets */ gr_thrownomiss(); /* Draw graph background */ if (!g_graph_background->isTransparent()) { GLERC old_fill(g_get_fill()); g_set_fill(g_graph_background); g_box_fill(graph_x1, graph_y1, graph_x2, graph_y2); g_set_fill(old_fill); } if (g_colormap != NULL) { g_colormap->setXRange(xx[1].getMin(), xx[1].getMax()); g_colormap->setYRange(xx[2].getMin(), xx[2].getMax()); g_colormap->draw(graph_x1, graph_y1, xlength, ylength); delete g_colormap; g_colormap = NULL; } graphBlock->getAxis()->setBox(&box); graphBlock->drawParts(); /* Draw the key */ if (keyinfo->getNbEntries() > 0 && !keyinfo->isDisabled() && !keyinfo->getNoBox() && keyinfo->getBackgroundColor()->isTransparent()) { g_endclip(); g_grestore(); } draw_key_after_measure(keyinfo); g_move(ox,oy); g_grestore(); g_init_bounds(); g_set_bounds(&box); return; } void g_graph_init() { for (int i = 0; i < MAX_NB_FILL; i++) { fd[i] = NULL; } for (int i = 0; i < MAX_NB_DATA; i++) { dp[i] = NULL; } } void graph_free() { for (int i = 0; i < MAX_NB_FILL; i++) { if (fd[i] != NULL) { delete fd[i]; fd[i] = NULL; } } for (int i = 0; i < MAX_NB_DATA; i++) { if (dp[i] != NULL) { delete dp[i]; } dp[i] = NULL; } } void graph_freebars() { for (int i = 1; i <= g_nbar; i++) { delete br[i]; br[i] = NULL; } g_nbar = 0; } void graph_init() { g_graph_background = g_get_fill_clear(); ndata = 0; nfd = 0; g_nbar = 0; xx[GLE_AXIS_X0].off = true; xx[GLE_AXIS_Y0].off = true; xx[GLE_AXIS_T].off = true; graph_freebars(); graph_free(); } void iffree(void *p, const char *s) { if (p!=NULL) myfrees(p,s); } int freedataset(int d) { int i,c=0; for (i=1;i<=ndata;i++) { if (dp[i] == NULL) c++; else if (dp[i]->undefined()) c++; if (c==d) return i; } return ndata + d - c; } void copy_default(int dn) { dp[dn]->copy(dp[0]); dp[dn]->key_name = ""; dp[dn]->axisscale = false; } bool is_dataset_identifier(const char* ds) { int len = strlen(ds); if (len <= 1 || toupper(ds[0]) != 'D') { return false; } if (str_i_starts_with(ds, "d\\expr")) { return true; } if (str_i_equals(ds, "dn")) { return true; } if (len > 3 && ds[1] == '[' && ds[len - 1] == ']') { return true; } char* ptr = NULL; strtol(ds+1, &ptr, 10); return ptr != NULL && *ptr == 0; } int get_dataset_identifier(const char* ds, bool def) throw(ParserError) { int len = strlen(ds); if (len <= 1 || toupper(ds[0]) != 'D') { g_throw_parser_error("illegal data set identifier '", ds, "'"); } if (str_i_equals(ds, "dn")) { return 0; } if (len > 3 && ds[1] == '[' && ds[len - 1] == ']') { double id; string str(ds + 2, len - 3); polish_eval((char*)str.c_str(), &id); int result = (int)floor(id + 0.5); if (result < 0 || result >= MAX_NB_DATA) { ostringstream err; err << "data set identifier out of range: '" << result << "'"; g_throw_parser_error(err.str()); } return result; } else { char* ptr = NULL; int result = strtol(ds+1, &ptr, 10); if (*ptr != 0) { g_throw_parser_error("illegal data set identifier '", ds, "'"); } if (result < 0 || result >= MAX_NB_DATA) { g_throw_parser_error("data set identifier out of range '", ds, "'"); } if (def && dp[result] == NULL) { g_throw_parser_error("data set '", ds, "' not defined"); } return result; } } int get_dataset_identifier(const string& ds, GLEParser* parser, bool def) throw(ParserError) { Tokenizer* tokens = parser->getTokens(); if (str_i_equals(ds, "d")) { tokens->ensure_next_token("["); int result = (int)floor(parser->evalTokenToDouble() + 0.5); if (result < 0 || result >= MAX_NB_DATA) { ostringstream err; err << "data set identifier out of range: '" << result << "'"; throw tokens->error(err.str()); } tokens->ensure_next_token("]"); if (def && dp[result] == NULL) { ostringstream err; err << "data set d" << result << " not defined"; throw tokens->error(err.str()); } return result; } else if (str_i_equals(ds, "dn")) { return 0; } else { if (ds.size() <= 1 || toupper(ds[0]) != 'D') { throw tokens->error("illegal data set identifier"); } char* ptr = NULL; int result = strtol(ds.c_str() + 1, &ptr, 10); if (*ptr != 0) { throw tokens->error("data set identifier should be integer"); } if (result < 0 || result >= MAX_NB_DATA) { throw tokens->error("data set identifier out of range"); } if (def && dp[result] == NULL) { throw tokens->error("data set '", ds.c_str(), "' not defined"); } return result; } } int get_column_number(GLEParser* parser) throw(ParserError) { Tokenizer* tokens = parser->getTokens(); const string& token = tokens->next_token(); if (str_i_equals(token, "c")) { tokens->ensure_next_token("["); int result = (int)floor(parser->evalTokenToDouble() + 0.5); if (result < 0) { ostringstream err; err << "column index out of range: '" << result << "'"; throw tokens->error(err.str()); } tokens->ensure_next_token("]"); return result; } else { if (token.size() <= 1 || toupper(token[0]) != 'C') { throw tokens->error("illegal column index '", token.c_str(), "'"); } char* ptr = NULL; int result = strtol(token.c_str()+1, &ptr, 10); if (*ptr != 0) { throw tokens->error("column index should be integer, not '", token.c_str(), "'"); } if (result < 0) { throw tokens->error("column index out of range '", token.c_str(), "'"); } return result; } } class GLEDataSetDescription { public: GLEDataSetDescription(); void setColumnIdx(unsigned int dimension, int column); int getColumnIdx(unsigned int dimension) const; unsigned int getNrDimensions() const; int ds; bool xygiven; private: vector m_columnIdx; }; class GLEDataDescription { public: GLEDataDescription(); inline int getNbDataSets() { return m_description.size(); } inline GLEDataSetDescription* getDataSet(int i) { return &m_description[i]; } inline void addDataSet(const GLEDataSetDescription& description) { m_description.push_back(description); } private: vector m_description; public: string fileName; string comment; string delimiters; unsigned int ignore; bool nox; }; GLEDataSetDescription::GLEDataSetDescription() { ds = 0; xygiven = false; } void GLEDataSetDescription::setColumnIdx(unsigned int dimension, int column) { m_columnIdx.resize(std::max(m_columnIdx.size(), dimension + 1), -1); m_columnIdx[dimension] = column; } int GLEDataSetDescription::getColumnIdx(unsigned int dimension) const { return m_columnIdx[dimension]; } unsigned int GLEDataSetDescription::getNrDimensions() const { return m_columnIdx.size(); } GLEDataDescription::GLEDataDescription() : comment("!"), delimiters(" ,;\t"), ignore(0), nox(false) { } /* data a.dat */ /* data a.dat d2 d5 */ /* data a.dat d1=c1,c3 d2=c5,c1 */ /* data a.dat IGNORE n d2 d5 */ /* data a.dat IGNORE n d1=c1,c3 d2=c5,c1 */ /* data a.dat COMMENT # d1=c1,c3 d2=c5,c1 */ /* data a.dat COMMENT # IGNORE n d1=c1,c3 d2=c5,c1 */ void read_data_description(GLEDataDescription* description, GLESourceLine& sline) { // Get data command string datacmd(sline.getCode()); // Initialize parser for this line GLEParser* parser = get_global_parser(); parser->setString(datacmd.c_str()); Tokenizer* tokens = parser->getTokens(); tokens->ensure_next_token_i("DATA"); // Read file name parser->evalTokenToFileName(&description->fileName); // Parse rest of the line while (true) { // read next token from the data description const string& token = tokens->try_next_token(); if (token == "") { // no further tokens break; } // check if it is one of the options if (str_i_equals(token, "IGNORE")) { description->ignore = tokens->next_integer(); } else if (str_i_equals(token, "COMMENT")) { parser->evalTokenToFileName(&description->comment); } else if (str_i_equals(token, "DELIMITERS")) { parser->evalTokenToString(&description->delimiters); } else if(str_i_equals(token,"NOX")) { description->nox = true; } else { // check if it is a data set identifier GLEDataSetDescription datasetDescription; datasetDescription.ds = get_dataset_identifier(token, parser, false); if (tokens->is_next_token("=")) { datasetDescription.xygiven = true; datasetDescription.setColumnIdx(0, get_column_number(parser)); tokens->ensure_next_token(","); datasetDescription.setColumnIdx(1, get_column_number(parser)); } description->addDataSet(datasetDescription); } } } bool isMissingValue(const char* content, unsigned int size) { if (size == 0) { return true; } else if (size == 1) { char ch = content[0]; return ch == '*' || ch == '?' || ch == '-' || ch == '.'; } else { return false; } } void get_data_value(GLECSVData* csvData, int dn, GLEArrayImpl* array, int arrayIdx, int row, int col, unsigned int dimension) { unsigned int size; const char* buffer = csvData->getCell(row, col, &size); if (isMissingValue(buffer, size)) { array->setUnknown(arrayIdx); } else { char *ptr = NULL; string strValue(buffer, size); double doubleValue = strtod(strValue.c_str(), &ptr); if (ptr == NULL || *ptr != 0) { str_remove_quote(strValue); array->setObject(arrayIdx, new GLEString(strValue)); } else { array->setDouble(arrayIdx, doubleValue); } } } void createDataSet(int dn) { if (dn < 0 || dn >= MAX_NB_DATA) { g_throw_parser_error("too many data sets"); } if (dn > ndata) ndata = dn; if (dp[dn] == NULL) { dp[dn] = new GLEDataSet(dn); copy_default(dn); } } string dimension2String(unsigned int dimension) { if (dimension == 0) { return "x"; } else if (dimension == 1) { return "y"; } else if (dimension == 2) { return "z"; } else { ostringstream dim; dim << (dimension + 1); return dim.str(); } } bool isFloatMiss(GLECSVData* csvData, unsigned int row, unsigned int col) { unsigned int size; const char* buffer = csvData->getCell(row, col, &size); if (isMissingValue(buffer, size)) { return true; } else if (is_float(string(buffer, size))) { return true; } else { return false; } } bool auto_has_header(GLECSVData* csvData, unsigned int dataColumns) { if (csvData->getNbLines() == 0) { return false; } else { for (unsigned int col = 0; col < dataColumns; col++) { if (isFloatMiss(csvData, 0, col)) { return false; } } return true; } } bool auto_all_labels_column(GLECSVData* csvData, unsigned int first_row) { if (first_row >= csvData->getNbLines()) { return false; } else { for (unsigned int row = first_row; row < csvData->getNbLines(); row++) { if (isFloatMiss(csvData, row, 0)) { return false; } } return true; } } void data_command(GLESourceLine& sline) { // Read data set description GLEDataDescription description; read_data_description(&description, sline); // Open file string expandedName(GLEExpandEnvironmentVariables(description.fileName)); validate_file_name(expandedName, true); GLECSVData csvData; csvData.setDelims(description.delimiters.c_str()); csvData.setCommentIndicator(description.comment.c_str()); csvData.setIgnoreHeader(description.ignore); csvData.read(expandedName); unsigned int dataColumns = csvData.validateIdenticalNumberOfColumns(); GLECSVError* error = csvData.getError(); if (error->errorCode != GLECSVErrorNone) { g_throw_parser_error(error->errorString); } // Auto-detect header bool has_header = auto_has_header(&csvData, dataColumns); unsigned int first_row = has_header ? 1 : 0; bool all_str_col = auto_all_labels_column(&csvData, first_row); bool nox = description.nox || dataColumns == 1 || all_str_col; // Auto-assign columns int cx = nox ? 0 : 1; int cyOffs = nox && !all_str_col ? 0 : 1; int nbDataSetsGiven = description.getNbDataSets(); for (int i = 0; i < nbDataSetsGiven; ++i) { GLEDataSetDescription* dataset = description.getDataSet(i); if (!dataset->xygiven) { dataset->setColumnIdx(0, cx); dataset->setColumnIdx(1, i + cyOffs + 1); } } if (nbDataSetsGiven == 0) { int nbDataSetsMax = dataColumns - cyOffs; for (int i = 0; i < nbDataSetsMax; ++i) { GLEDataSetDescription dataset; dataset.ds = freedataset(i + 1); dataset.setColumnIdx(0, cx); dataset.setColumnIdx(1, i + cyOffs + 1); description.addDataSet(dataset); } } // Construct names data set if (all_str_col) { int ds = 0; GLEDataSetDescription dataset; dataset.ds = ds; dataset.setColumnIdx(0, 0); dataset.setColumnIdx(1, 1); description.addDataSet(dataset); xx[GLE_AXIS_X].setNamesDataSet(ds); } // Validate column indices for (int i = 0; i < description.getNbDataSets(); i++) { GLEDataSetDescription* dataset = description.getDataSet(i); if (dataset->getNrDimensions() <= 0) { ostringstream err; err << "no columns defined for d" << dataset->ds; g_throw_parser_error(err.str()); } for (unsigned int dimension = 0; dimension < dataset->getNrDimensions(); dimension++) { int column = dataset->getColumnIdx(dimension); if (column < 0 || column > (int)dataColumns) { ostringstream err; err << "dimension " << dimension2String(dimension) << " column index out of range for d" << dataset->ds << ": " << column << " not in [0,...," << dataColumns << "]"; g_throw_parser_error(err.str()); } } } // Read header and copy to key if (has_header && csvData.getNbLines() > 0) { for (int i = 0; i < description.getNbDataSets(); i++) { GLEDataSetDescription* dataset = description.getDataSet(i); int dn = dataset->ds; int targetColumn = dataset->getColumnIdx(dataset->getNrDimensions() - 1); if (targetColumn > 0) { createDataSet(dn); string tmp(csvData.getCellString(0, targetColumn - 1)); str_remove_quote(tmp); dp[dn]->key_name = sdup(tmp.c_str()); } } } // Copy all data to the data sets for (int i = 0; i < description.getNbDataSets(); i++) { GLEDataSetDescription* datasetDescr = description.getDataSet(i); int dn = datasetDescr->ds; createDataSet(dn); GLEDataSet* dataset = dp[dn]; unsigned int np = csvData.getNbLines() - first_row; dataset->clearAll(); dataset->np = np; GLEArrayImpl* dataDimensions = dataset->getData(); dataDimensions->ensure(datasetDescr->getNrDimensions()); for (unsigned int dimension = 0; dimension < datasetDescr->getNrDimensions(); dimension++) { int column = datasetDescr->getColumnIdx(dimension); GLEArrayImpl* dataColumn = new GLEArrayImpl(); dataDimensions->setObject(dimension, dataColumn); dataColumn->ensure(np); for (unsigned int j = 0; j < np ; j++) { if (column == 0) { dataColumn->setDouble(j, j + 1); } else { unsigned int row = first_row + j; get_data_value(&csvData, dn, dataColumn, j, row, column - 1, dimension); } } } } } gle-graphics-4.2.4c/src/gle/keyword.h0000664000000000000000000001633211506607572016142 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ #define GLE_KW_NB 90 #define GLE_KW_BLANK 0 #define GLE_KW_ABOUND 87 #define GLE_KW_ALINE 1 #define GLE_KW_AMOVE 2 #define GLE_KW_ARC 3 #define GLE_KW_ARCTO 4 #define GLE_KW_ASETPOS 73 #define GLE_KW_ASSIGNMENT 51 #define GLE_KW_BEGIN 5 #define GLE_KW_BEZIER 6 #define GLE_KW_BIGFILE 58 #define GLE_KW_BITMAP 68 #define GLE_KW_BITMAP_INFO 69 #define GLE_KW_BOX 7 #define GLE_KW_CALL 52 #define GLE_KW_CIRCLE 8 #define GLE_KW_CLOSEPATH 9 #define GLE_KW_COLORMAP 80 #define GLE_KW_COMMENT 53 #define GLE_KW_COMPATIBILITY 86 #define GLE_KW_CURVE 10 #define GLE_KW_DECLARESUB 83 #define GLE_KW_DEFAULT 84 #define GLE_KW_DEFCOLOR 85 #define GLE_KW_DEFINE 11 #define GLE_KW_DEFMARKER 60 #define GLE_KW_DFONT 12 #define GLE_KW_DRAW 56 #define GLE_KW_ELLIPSE 70 #define GLE_KW_ELLIPTICAL_ARC 71 #define GLE_KW_ELLIPTICAL_NARC 72 #define GLE_KW_ELSE 13 #define GLE_KW_END 14 #define GLE_KW_FCLOSE 15 #define GLE_KW_FGETLINE 75 #define GLE_KW_FILL 16 #define GLE_KW_FOPEN 17 #define GLE_KW_FOR 18 #define GLE_KW_FREAD 61 #define GLE_KW_FREADLN 62 #define GLE_KW_FTOKENIZER 76 #define GLE_KW_FWRITE 63 #define GLE_KW_FWRITELN 64 #define GLE_KW_COMMENT 53 #define GLE_KW_GOTO 19 #define GLE_KW_GRESTORE 54 #define GLE_KW_GSAVE 20 #define GLE_KW_ICON 21 #define GLE_KW_IF 22 #define GLE_KW_INCLUDE 23 #define GLE_KW_INPUT 24 #define GLE_KW_JOIN 25 #define GLE_KW_MARGINS 78 #define GLE_KW_MARKER 26 #define GLE_KW_MOVE 27 #define GLE_KW_NAME 39 #define GLE_KW_NARC 28 #define GLE_KW_NEWPATH 29 #define GLE_KW_NEXT 30 #define GLE_KW_ORIENTATION 79 #define GLE_KW_PAPERSIZE 77 #define GLE_KW_PIE 31 #define GLE_KW_POSTSCRIPT 55 #define GLE_KW_PRINT 32 #define GLE_KW_PSBBTWEAK 66 #define GLE_KW_PSCOMMENT 65 #define GLE_KW_RBEZIER 33 #define GLE_KW_REGION 34 #define GLE_KW_RESTOREDEFAULTS 82 #define GLE_KW_RETURN 50 #define GLE_KW_REVERSE 35 #define GLE_KW_RLINE 36 #define GLE_KW_RMOVE 37 #define GLE_KW_ROT 38 #define GLE_KW_ROTATE 38 #define GLE_KW_RSETPOS 81 #define GLE_KW_SAVE 39 #define GLE_KW_SCALE 40 #define GLE_KW_SET 41 #define GLE_KW_SET 41 #define GLE_KW_SIZE 42 #define GLE_KW_SLEEP 88 #define GLE_KW_STROKE 43 #define GLE_KW_SUB 44 #define GLE_KW_TEX 74 #define GLE_KW_TEXT 45 #define GLE_KW_TEXTDEF 59 #define GLE_KW_TIFF 67 #define GLE_KW_TRAN 46 #define GLE_KW_TRANSLATE 46 #define GLE_KW_UNTIL 47 #define GLE_KW_WHILE 48 #define GLE_KW_WRITE 49 #define GLE_KW_BLOCK_COMMAND 89 gle-graphics-4.2.4c/src/gle/gle-interface.cpp0000664000000000000000000017733311726234305017521 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ #include #include #include "all.h" #include "cutils.h" #include "file_io.h" #include "core.h" #include "cmdline.h" #include "config.h" #include "core.h" #include "gle-interface/gle-interface.h" #include "tokens/stokenizer.h" #include "texinterface.h" #include "drawit.h" #include "justify.h" #include "var.h" #include "sub.h" #include "mem_limits.h" #include "token.h" #include "glearray.h" #include "polish.h" #include "pass.h" #include "keyword.h" #include "run.h" #include "gle-poppler.h" // TODO make these available through the interface extern CmdLineObj g_CmdLine; extern ConfigCollection g_Config; extern string GLE_WORKING_DIR; extern string GLE_TOP_DIR; void init_option_args(CmdLineObj& cmdline); void load_one_file_sub(GLEScript* script, CmdLineObj& cmdline, size_t* exit_code) throw(ParserError); GLERC load_gle_code_sub(const char* name, CmdLineObj& cmdline) throw(ParserError); void GLEScaleSimpleLineProperties(double scale, bool dir, GLEPropertyStore* prop); void GLEScaleArrowProperties(double scale, bool dir, GLEPropertyStore* prop); GLEInterface* g_GLEInterface = NULL; GLEInterface* GLEGetInterfacePointer() { if (g_GLEInterface == NULL) { GLEGlobalConfig* config = new GLEGlobalConfig(); config->setCmdLine(&g_CmdLine); config->setRCFile(&g_Config); g_GLEInterface = new GLEInterface(); g_GLEInterface->setConfig(config); } return g_GLEInterface; } struct GLEFileLocationCompare { bool operator()(const GLEFileLocation& s1, const GLEFileLocation& s2) const { if (s1.getExt() == s2.getExt()) { if (s1.getName() == s2.getName()) { return s1.getFullPath() < s2.getFullPath(); } else { return s1.getName() < s2.getName(); } } else { if (str_i_equals(s1.getExt(), "GLE")) return true; if (str_i_equals(s2.getExt(), "GLE")) return false; return s1.getExt() < s2.getExt(); } } }; typedef set GLEFileLocationMapData; class GLEFileLocationMap { protected: GLEFileLocationMapData m_Data; public: GLEFileLocationMap(); ~GLEFileLocationMap(); vector getFiles(); inline void addFile(const GLEFileLocation& f1) { m_Data.insert(f1); } inline void clear() { m_Data.clear(); } }; GLEFileLocationMap::GLEFileLocationMap() { } GLEFileLocationMap::~GLEFileLocationMap() { } vector GLEFileLocationMap::getFiles() { vector res; for (GLEFileLocationMapData::iterator it = m_Data.begin(); it != m_Data.end(); it++) { res.push_back(*it); } return res; } GLEInterface::GLEInterface() { m_Output = new GLEOutputStream(); m_MakeDrawObjs = false; m_CommitMode = false; m_FontHash = new StringIntHash(); m_FontIndexHash = new IntIntHash(); m_FileInfoMap = new GLEFileLocationMap(); // Initialize text property store model m_TextModel = new GLEPropertyStoreModel(); m_TextModel->add(new GLEPropertyFont("Font")); m_TextModel->add(new GLEPropertyHei("Font size")); m_TextModel->add(new GLEPropertyColor("Text color")); m_TextModel->add(new GLEPropertyJustify("Text justify")); m_LineModel = new GLEPropertyStoreModel(); m_LineModel->add(new GLEPropertyLWidth("Line width")); m_LineModel->add(new GLEPropertyColor("Line color")); m_LineModel->add(new GLEPropertyLStyle("Line style")); GLEPropertyNominal* linecap = new GLEPropertyNominal("Line cap", GLEPropertyTypeInt, GLEDOPropertyLineCap); linecap->addValue("butt", GLELineCapButt); linecap->addValue("round", GLELineCapRound); linecap->addValue("square", GLELineCapSquare); m_LineModel->add(linecap); m_LineModel->add(new GLEPropertyArrowSize("Arrow size")); m_LineModel->add(new GLEPropertyArrowAngle("Arrow angle")); GLEPropertyNominal* arrowstyle = new GLEPropertyNominal("Arrow style", GLEPropertyTypeInt, GLEDOPropertyArrowStyle); arrowstyle->addValue("simple", GLEArrowStyleSimple); arrowstyle->addValue("filled", GLEArrowStyleFilled); arrowstyle->addValue("empty", GLEArrowStyleEmpty); m_LineModel->add(arrowstyle); GLEPropertyNominal* arrowtip = new GLEPropertyNominal("Arrow tip", GLEPropertyTypeInt, GLEDOPropertyArrowTip); arrowtip->addValue("round", GLEArrowTipRound); arrowtip->addValue("sharp", GLEArrowTipSharp); m_LineModel->add(arrowtip); m_ShapeModel = new GLEPropertyStoreModel(); m_ShapeModel->add(new GLEPropertyLWidth("Line width")); m_ShapeModel->add(new GLEPropertyColor("Line color")); m_ShapeModel->add(new GLEPropertyLStyle("Line style")); m_ShapeModel->add(new GLEPropertyFillColor("Fill color")); m_InitialPS = NULL; m_Config = NULL; } GLEInterface::~GLEInterface() { delete m_FontHash; delete m_FontIndexHash; delete m_Output; if (m_Config != NULL) delete m_Config; if (m_FileInfoMap != NULL) delete m_FileInfoMap; } bool GLEInterface::initializeGLE(const char* appname, int argc, char **argv) { try { gle_glib_init(argc, argv); // Initialize code in core.cpp g_init(); // Load configuration file init_config(&g_Config); init_option_args(g_CmdLine); return do_load_config(appname, argv, g_CmdLine, g_Config); } catch (ParserError err) { string err_str; err.toString(err_str); str_uppercase_initial_capital(err_str); g_message(err_str); } return false; } string GLEInterface::getGLEVersion() { string version; g_get_version(&version); return version; } string GLEInterface::getGLEBuildDate() { string date; g_get_build_date(&date); return date; } const char* GLEInterface::getGLETop() { return GLE_TOP_DIR.c_str(); } void GLEInterface::setOutputStream(GLEOutputStream* output) { m_Output = output; } GLERC GLEInterface::newGLEFile(const char* glecode, const char* tmpfile) { GLERC script; try { string in_name = tmpfile; script = new GLEScript(); GLEFileLocation* loc = script->getLocation(); loc->fromFileNameDir(in_name, GLE_WORKING_DIR); GLESourceFile* file = script->getSource()->getMainFile(); char_separator sep("\n"); tokenizer tokens(glecode, sep); while (tokens.has_more()) { string line = tokens.next_token(); str_trim_both(line); GLESourceLine* sline = file->addLine(); sline->setCode(line); } file->trim(1); script->getSource()->initFromMain(); } catch (ParserError err) { string err_str; err.toString(err_str); str_uppercase_initial_capital(err_str); g_message(err_str); } return script; } GLERC GLEInterface::loadGLEFile(const char* glefile) { try { if (m_FileInfoMap != NULL) m_FileInfoMap->clear(); g_set_compatibility(GLE_COMPAT_MOST_RECENT); return load_gle_code_sub(glefile, g_CmdLine); } catch (ParserError err) { string err_str; err.toString(err_str); str_uppercase_initial_capital(err_str); g_message(err_str); return NULL; } } void GLEInterface::saveGLEFile(GLEScript* script, const char* glefile) { ofstream file(glefile); GLESourceFile* main = script->getSource()->getMainFile(); // save all code lines for (int i = 0; i < main->getNbLines(); i++) { GLESourceLine* line = main->getLine(i); file << line->getPrefix() << line->getCode() << endl; } file << endl; file.close(); // update location main->getLocation()->fromFileNameCrDir(glefile); } void GLEInterface::showGLEFile(GLEScript* script) { cout << "Script:" << endl; GLESourceFile* file = script->getSource()->getMainFile(); for (int i = 0; i < file->getNbLines(); i++) { GLESourceLine* line = file->getLine(i); cout << line->getCode() << endl; } } void GLEInterface::setCompatibilityMode(const char* version) { CmdLineArgString* arg = (CmdLineArgString*)g_CmdLine.createOption(GLE_OPT_COMPAT)->getArg(0); arg->setValue(version); g_set_compatibility(version); } void GLEInterface::renderGLE(GLEScript* script, const char* outfile, int device, bool toMemory) { m_Script = script; if (script == NULL) { cerr << "GLEInterface::renderGLE(): script == NULL" << endl; return; } script->cleanUp(); try { size_t exit_code; // Select dry-run (and output to memory) CmdLineOption* noSave = g_CmdLine.createOption(GLE_OPT_NOSAVE); noSave->setHasOption(toMemory); // Set the device CmdLineArgSet* dev = (CmdLineArgSet*)g_CmdLine.createOption(GLE_OPT_DEVICE)->getArg(0); dev->reset(); dev->addValue(device); // Set the output file name CmdLineArgString* o_file = (CmdLineArgString*)g_CmdLine.createOption(GLE_OPT_OUTPUT)->getArg(0); o_file->setValue(outfile); if (isMakeDrawObjects()) script->clear(); load_one_file_sub(script, g_CmdLine, &exit_code); m_Output->setExitCode(get_nb_errors()); } catch (ParserError err) { string err_str; err.toString(err_str); str_uppercase_initial_capital(err_str); g_message(err_str); m_Output->setExitCode(1); } } void handleNewProperties(GLEGlobalSource* source, GLEPropertyStore* props) { vector changed; GLEPropertyStoreModel* model = props->getModel(); for (int i = 0; i < model->getNumberOfProperties(); i++) { GLEProperty* prop = model->getProperty(i); if (!prop->isEqualToState(props)) { prop->updateState(props); changed.push_back(prop); } } if (changed.size() != 0) { ostringstream ss; ss << "set"; for (vector::size_type i = 0; i < changed.size(); i++) { GLEProperty* prop = changed[i]; prop->createSetCommandGLECode(ss, props->getPropertyValue(prop)); } source->addLine(ss.str()); } } void GLEInterface::commitChangesGLE(GLEScript* script) { m_Script = script; if (script == NULL) { cerr << "GLEInterface::commitChangesGLE(): script == NULL" << endl; return; } try { setCommitMode(true); setMakeDrawObjects(true); GLEDevice* old_device = g_set_dummy_device(); TeXInterface* interface = TeXInterface::getInstance(); GLEFileLocation output; output.createIllegal(); interface->initialize(script->getLocation(), &output); interface->reset(); script->resetObjectIterator(); DrawIt(m_Script, &output, &g_CmdLine); for (int i = 0; i < script->getNumberNewObjects(); i++) { string code; GLEDrawObject* obj = script->getNewObject(i); if (!obj->hasFlag(GDO_FLAG_DELETED)) { obj->createGLECode(code); /* check if needs amove? */ GLEPoint amove; bool needs_amove = false; if (obj->needsAMove(amove)) { /* Check if not already at this point */ GLEPoint crpt; g_get_xy(&crpt); if (!crpt.approx(amove)) { needs_amove = true; script->getSource()->addLine(""); } } /* add line to code */ handleNewProperties(script->getSource(), obj->getProperties()); /* amove command in front of object? */ if (needs_amove) { ostringstream amovec; amovec << "amove " << amove.getX() << " " << amove.getY(); script->getSource()->addLine(amovec.str()); } script->getSource()->addLine(code); /* compile and execute line of code */ obj->updateBoundingBox(); script->addObject(obj); } } script->getSource()->performUpdates(); script->clearNewObjects(); script->removeDeletedObjects(); interface->tryCreateHash(); g_restore_device(old_device); setMakeDrawObjects(false); setCommitMode(false); } catch (ParserError err) { string err_str; err.toString(err_str); str_uppercase_initial_capital(err_str); g_message(err_str); m_Output->setExitCode(1); } } CmdLineObj* GLEInterface::getCmdLine() { return m_Config->getCmdLine(); } int GLEInterface::getNumberOfColors() { return GLEGetColorList()->getNbColors(); } GLEColor* GLEInterface::getColor(int i) { return GLEGetColorList()->getColor(i); } void GLEInterface::addFont(GLEFont* font) { font->setNumber(m_Fonts.size()); m_Fonts.add(font); addSubFont(font); } void GLEInterface::addSubFont(GLEFont* font) { m_FontHash->add_item(font->getName(), m_AllFonts.size()); m_FontIndexHash->add_item(font->getIndex(), m_AllFonts.size()); m_AllFonts.add(font); } // Return the number of available fonts int GLEInterface::getNumberOfFonts() { return m_Fonts.size(); } // Return the i-the font GLEFont* GLEInterface::getFont(int i) { if (i < 0 || i >= (int)m_Fonts.size()) return m_Fonts.get(0); return m_Fonts.get(i); } // Return the font matching a given name GLEFont* GLEInterface::getFont(const string& name) { int idx = m_FontHash->try_get(name); if (idx == -1) return NULL; else return m_AllFonts.get(idx); } GLEFont* GLEInterface::getFont(const char* name) { return getFont(string(name)); } GLEFont* GLEInterface::getFontIndex(int font) { int index = m_FontIndexHash->try_get(font); if (index == -1) { return 0; } else { return m_AllFonts.get(index); } } const char* GLEInterface::getInitialPostScript() { if (m_InitialPS == NULL) { GLESaveRestore saved_state; g_select_device(GLE_DEVICE_EPS); PSGLEDevice* dev = (PSGLEDevice*)g_get_device_ptr(); dev->startRecording(); saved_state.save(); g_clear(); dev->startRecording(); dev->initialPS(); m_InitialPS = new string(); dev->getRecordedBytes(m_InitialPS); saved_state.restore(); } return m_InitialPS->c_str(); } const char* GLEInterface::getTerminatePostScript() { return "showpage\ngrestore\n"; } void GLEInterface::renderText(GLETextDO* text, GLEPropertyStore* prop) { GLESaveRestore saved_state; g_select_device(GLE_DEVICE_EPS); PSGLEDevice* dev = (PSGLEDevice*)g_get_device_ptr(); dev->startRecording(); saved_state.save(); g_clear(); g_resetfont(); g_scale(PS_POINTS_PER_INCH/CM_PER_INCH, PS_POINTS_PER_INCH/CM_PER_INCH); g_translate(1.0*CM_PER_INCH/72, 1.0*CM_PER_INCH/72); dev->startRecording(); // Select the right color GLEColor* color = prop->getColorProperty(GLEDOPropertyColor); g_set_color(color); // Select the right size double hei = prop->getRealProperty(GLEDOPropertyFontSize); g_set_hei(hei); g_set_font_width(-1); g_set_line_style("1"); g_set_line_width(0.02); // Select the font GLEFont* font = prop->getFontProperty(GLEDOPropertyFont); if (font == NULL) { font = getFont("rm"); } g_set_font(font->getIndex()); char* str = (char*)text->getTextC(); // Calculate the text's size double x1, x2, y1, y2; g_measure(str, &x1, &x2, &y2, &y1); text->initBB(x2-x1, y2-y1, -y1); // DRAW BOUNDING BOX /* g_set_color(0X01FF0000); g_set_line_width(0.005); g_move(0.0,0.0); g_line(x2-x1, 0.0); g_line(x2-x1, y2-y1); g_line(0.0, y2-y1); g_line(0.0, 0.0); dev->flush(); g_set_color(0X01000000);*/ // Draw the string g_move(0.0, 0.0); g_jtext(JUST_BL); // Return the resulting PostScript code dev->getRecordedBytes(text->getPostScriptPtr()); /* string code; code += getInitialPostScript(); code += (*text->getPostScriptPtr()); code += getTerminatePostScript(); cout << "PS:" << endl << code << endl; */ saved_state.restore(); } GLETextDO* GLEInterface::renderText(const char* str, GLEPropertyStore* prop) { GLEPoint orig; GLETextDO* text = new GLETextDO(orig, str); renderText(text, prop); return text; } bool GLEInterface::isDeviceSupported(int device) { switch (device) { case GLE_DEVICE_PS: case GLE_DEVICE_EPS: case GLE_DEVICE_DUMMY: return true; #ifdef HAVE_CAIRO case GLE_DEVICE_CAIRO_PDF: case GLE_DEVICE_SVG: case GLE_DEVICE_CAIRO_SVG: return true; #ifdef __WIN32__ case GLE_DEVICE_EMF: return true; #endif #endif #ifdef HAVE_X11 case GLE_DEVICE_X11: return true; #endif default: return false; } } const char* GLEInterface::getDeviceFilenameExtension(int device) { switch (device) { case GLE_DEVICE_PDF: return "pdf"; case GLE_DEVICE_PS: return "ps"; case GLE_DEVICE_EPS: return "eps"; case GLE_DEVICE_SVG: return "svg"; case GLE_DEVICE_EMF: return "emf"; case GLE_DEVICE_PNG: return "png"; case GLE_DEVICE_JPEG: return "jpg"; } return "unk"; } void GLEInterface::clearAllCmdLine() { getCmdLine()->clearAll(); } void GLEInterface::setCmdLineOption(const char* name) { getCmdLine()->setHasOption(string(name)); } void GLEInterface::setCmdLineOptionString(const char* name, const char* value, int arg) { getCmdLine()->setOptionString(string(name), string(value), arg); } bool GLEInterface::hasCmdLineOptionString(const char* name) { return getCmdLine()->hasOption(string(name)); } string GLEInterface::getGhostScriptLocation() { ConfigSection* tools = g_Config.getSection(GLE_CONFIG_TOOLS); #ifdef __WIN32__ string name = "gsdll32.dll"; string result = ((CmdLineArgString*)tools->getOptionValue(GLE_TOOL_GHOSTSCRIPT_CMD))->getValue(); if (IsAbsPath(result)) { StripPathComponents(&result, 1); AddDirSep(result); } else { result = ""; } result += name; return result; #else return get_tool_path(GLE_TOOL_GHOSTSCRIPT_LIB, tools); #endif } string GLEInterface::getToolLocation(const char* name) { ConfigSection* tools = g_Config.getSection(GLE_CONFIG_TOOLS); for (int j = 0; j < tools->getNbOptions(); j++) { CmdLineOption* opt = tools->getOption(j); if (str_i_equals(opt->getName(), name)) { return get_tool_path(j, tools); } } return string(""); } string GLEInterface::getUserConfigLocation() { string location; #if defined(__UNIX__) || defined (__OS2__) GLEGetEnv("HOME", location); #endif #ifdef __WIN32__ GLEGetEnv("APPDATA", location); if (location != "") { AddDirSep(location); location += "gle-graphics.org"; } #endif if (location != "") { AddDirSep(location); location += ".glerc"; } return location; } string GLEInterface::getManualLocation() { string loc; #ifdef GLEDOC_CD if (GLEAddRelPathAndFileTry(GLE_TOP_DIR, GLEDOC_CD, GLEDOC_REL, "gle-manual.pdf", loc)) { return loc; } if (GLEAddRelPathAndFileTry(GLE_TOP_DIR, GLEDOC_CD, GLEDOC_REL, "gle-manual.pdf.gz", loc)) { return loc; } #endif if (GLEAddRelPathAndFileTry(GLE_TOP_DIR, 0, "doc", "gle-manual.pdf", loc)) { return loc; } if (GLEAddRelPathAndFileTry(GLE_TOP_DIR, 0, "doc", "gle-manual.pdf.gz", loc)) { return loc; } #ifdef GLEDOC_ABS if (GLEAddRelPathAndFileTry(GLEDOC_ABS, 0, NULL, "gle-manual.pdf", loc)) { return loc; } if (GLEAddRelPathAndFileTry(GLEDOC_ABS, 0, NULL, "gle-manual.pdf.gz", loc)) { return loc; } #endif return loc; } void GLEInterface::findDependencies(const char* root) { string loc = root; do_find_deps_sub(this, loc); } void GLEInterface::saveRCFile() { do_save_config(); } void GLEInterface::addFileInfo(const GLEFileLocation& f1) { if (m_FileInfoMap != NULL) m_FileInfoMap->addFile(f1); } vector GLEInterface::getFileInfos() { if (m_FileInfoMap != NULL) { return m_FileInfoMap->getFiles(); } else { return vector(); } } void GLEInterface::initTextProperties(GLEPropertyStore* prop) { int font; double fontsize; g_get_hei(&fontsize); prop->setRealProperty(GLEDOPropertyFontSize, fontsize); g_get_font(&font); prop->setFontProperty(GLEDOPropertyFont, getFontIndex(font)); } extern GLEGlobalSource* g_Source; void output_error(ParserError& err); void g_set_error_line(int lin); void GLEInterface::evalString(const char* str, GLEScript* script) { try { g_set_error_line(-1); g_select_device(GLE_DEVICE_DUMMY); if (script == NULL) { g_Source = NULL; g_clear(); sub_clear(false); clear_run(); f_init(); var_def("PI", GLE_PI); } GLEPolish polish; polish.initTokenizer(); string value; polish.eval_string(str, &value, true); g_message_first_newline(false); g_message(value); } catch (ParserError err) { output_error(err); } } string GLEInterface::getTempFile() { return GLETempName(); } int GLEInterface::copyFile(const string& from, const string& to, string* err) { return GLECopyFile(from, to, err); } void GLEInterface::convertPDFToImage(char* pdfData, int pdfLength, double resolution, int device, int options, gle_write_func writeFunc, void* closure) { gle_convert_pdf_to_image(pdfData, pdfLength, resolution, device, options, writeFunc, closure); } bool GLEReadFileOrGZIPTxt(const std::string& name, std::string* result); bool GLEInterface::readFileOrGZIPTxt(const char* name, std::string* result) { return GLEReadFileOrGZIPTxt(std::string(name), result); } GLEFileLocation::GLEFileLocation() { m_Flags = 0; } GLEFileLocation::GLEFileLocation(const GLEFileLocation& other) { m_Flags = other.getFlags(); m_Name = other.getName(); m_Ext = other.getExt(); m_Directory = other.getDirectory(); m_FullPath = other.getFullPath(); } GLEFileLocation::GLEFileLocation(const char* file) { m_Name = file; m_FullPath = file; m_Flags = GLE_FILELOCATION_IS_LOCAL; GetExtension(m_Name, m_Ext); } GLEFileLocation::~GLEFileLocation() { } void GLEFileLocation::fromAbsolutePath(const string& path) { SplitFileName(path, m_Directory, m_Name); GetExtension(m_Name, m_Ext); setFullPath(path); } void GLEFileLocation::fromRelativePath(const string& dirname, const string& fname) { // don't modify fname, store it with setName(), also if it is a relative path [this is intentional] GLEGetFullPath(dirname, fname, m_FullPath); // note that fname can also contain part of the path GetDirName(m_FullPath, m_Directory); GetExtension(fname, m_Ext); setName(fname); } void GLEFileLocation::fromFileNameCrDir(const string& fname) { if (IsAbsPath(fname)) { fromAbsolutePath(fname); } else { string dirname; GLEGetCrDir(&dirname); fromRelativePath(dirname, fname); } } void GLEFileLocation::fromFileNameDir(const string& fname, const string& dirname) { if (IsAbsPath(fname)) { fromAbsolutePath(fname); } else { fromRelativePath(dirname, fname); } } void GLEFileLocation::createStdin() { m_Name = "stdin"; m_Flags = GLE_FILELOCATION_IS_STDIN; } void GLEFileLocation::createStdout() { m_Name = "stdout"; m_Flags = GLE_FILELOCATION_IS_STDOUT; } void GLEFileLocation::createIllegal() { m_Name = "illegal"; m_Flags = GLE_FILELOCATION_IS_ILLEGAL; } void GLEFileLocation::initDirectory() { GetDirName(m_FullPath, m_Directory); } void GLEFileLocation::copy(const GLEFileLocation* other) { m_Flags = other->getFlags(); m_Name = other->getName(); m_Ext = other->getExt(); m_Directory = other->getDirectory(); m_FullPath = other->getFullPath(); } void GLEFileLocation::addExtension(const char* ext) { const char* myExt = ext[0] == '.' ? (ext + 1) : ext; m_Ext = myExt; m_FullPath += "."; m_FullPath += myExt; if ((m_Flags & (GLE_FILELOCATION_IS_STDIN | GLE_FILELOCATION_IS_STDOUT | GLE_FILELOCATION_IS_ILLEGAL)) == 0) { m_Name += "."; m_Name += myExt; } } bool GLEFileLocation::isStream() { return (m_Flags & (GLE_FILELOCATION_IS_STDIN | GLE_FILELOCATION_IS_STDOUT)) != 0; } string GLEFileLocation::getFileName() { string result; SplitFileNameNoDir(m_FullPath, result); return result; } string GLEFileLocation::getMainName() { string result; SplitFileNameNoDir(m_FullPath, result); GetMainName(result, result); return result; } GLEErrorMessage::GLEErrorMessage() { m_Line = m_Column = -1; m_Delta = 0; } GLEErrorMessage::~GLEErrorMessage() { } GLEOutputStream::GLEOutputStream() { m_ExitCode = 0; } GLEOutputStream::~GLEOutputStream() { } void GLEOutputStream::println() { println(""); } void GLEOutputStream::println(const char* str) { cerr << str << endl; } void GLEOutputStream::printflush(const char* str) { cerr << str; cerr.flush(); } void GLEOutputStream::error(GLEErrorMessage* msg) { const char* file = msg->getFile(); const char* abbrev = msg->getLineAbbrev(); ostringstream output; output << endl; output << ">> " << file << " (" << msg->getLine() << ")"; if (abbrev[0] != 0) { output << " |" << abbrev << "|"; } if (msg->getColumn() != -1) { char number[50]; output << endl; output << ">> "; sprintf(number, "%d", msg->getLine()); int nbspc = strlen(file) + strlen(number) + 4 + msg->getColumn() - msg->getDelta(); for (int i = 0; i < nbspc; i++) { output << " "; } output << "^"; } output << msg->getErrorMsg(); g_message(output.str().c_str()); } GLEDrawObject::GLEDrawObject() { m_Flag = 0; m_Properties = NULL; } GLEDrawObject::~GLEDrawObject() { if (m_Properties != NULL) delete m_Properties; } void GLEDrawObject::initProperties(GLEInterface* iface) { } bool GLEDrawObject::needsAMove(GLEPoint& pt) { return false; } void GLEDrawObject::createGLECode(string& code) { code = ""; } void GLEDrawObject::getPSBoundingBox(GLERectangle* box) { } const char* GLEDrawObject::getPostScriptCode() { return ""; } void GLEDrawObject::updateBoundingBox() { } void GLEDrawObject::applyTransformation(bool dir) { } void GLEDrawObject::applyTransformationPt(GLEPoint* pt, bool dir) { if (dir) { double devx, devy; g_dev(pt->getX(), pt->getY(), &devx, &devy); pt->setXY((devx-1.0)/PS_POINTS_PER_INCH*CM_PER_INCH, (devy-1.0)/PS_POINTS_PER_INCH*CM_PER_INCH); } else { double xp, yp; g_undev(pt->getX()*PS_POINTS_PER_INCH/CM_PER_INCH+1.0, pt->getY()*PS_POINTS_PER_INCH/CM_PER_INCH+1.0, &xp, &yp); pt->setXY(xp, yp); } } GLEDrawObject* GLEDrawObject::clone() { return NULL; } GLEDrawObject* GLEDrawObject::deepClone() { GLEDrawObject* res = clone(); GLEPropertyStore* store = getProperties(); if (store != NULL) { res->setProperties(store->clone()); } return res; } bool GLEDrawObject::approx(GLEDrawObject* other) { return false; } void GLEDrawObject::draw() { } bool GLEDrawObject::modified() { return true; } void GLEDrawObject::setProperties(GLEPropertyStore* store) { if (m_Properties != NULL) delete m_Properties; m_Properties = store; } GLEObjectDOConstructor::GLEObjectDOConstructor(GLESub* sub) { m_Sub = sub; m_NbExtra = sub->getNbParam(); int first = 0; if (sub->getNbParam() >= 2 && str_i_equals(sub->getParamNameShort(0), "width") && str_i_equals(sub->getParamNameShort(1), "height")) { // First two arguments are width and height m_CanScale = true; add(new GLEProperty(sub->getParamNameShort(0).c_str(), GLEPropertyTypeReal, GLEDOPropertyUserArg)); add(new GLEProperty(sub->getParamNameShort(1).c_str(), GLEPropertyTypeReal, GLEDOPropertyUserArg)); first += 2; } for (int i = first; i < sub->getNbParam(); i++) { string arg = sub->getParamNameShort(i); add(new GLEProperty(arg.c_str(), GLEPropertyTypeString, GLEDOPropertyUserArg)); } add(new GLEPropertyColor("Color")); add(new GLEPropertyFillColor("Fill color")); add(new GLEPropertyLWidth("Line width")); add(new GLEPropertyLStyle("Line style")); GLEPropertyNominal* linecap = new GLEPropertyNominal("Line cap", GLEPropertyTypeInt, GLEDOPropertyLineCap); linecap->addValue("butt", GLELineCapButt); linecap->addValue("round", GLELineCapRound); linecap->addValue("square", GLELineCapSquare); add(linecap); add(new GLEPropertyFont("Font")); add(new GLEPropertyHei("Font size")); } GLEObjectDOConstructor::~GLEObjectDOConstructor() { } void GLEObjectDOConstructor::scale(GLEDrawObject* obj, double sx, double sy) { GLEArrayImpl* props = obj->getProperties()->getArray(); props->setDouble(0, sx); props->setDouble(1, sy); } const string& GLEObjectDOConstructor::getName() { return m_Sub->getName(); } GLEScript* GLEObjectDOConstructor::getScript() { return m_Sub->getScript(); } void output_error(ParserError& err); void eval(int *pcode,int *cp,double *oval,const char **ostr,int *otyp) throw(ParserError); GLEObjectDO* GLEObjectDOConstructor::constructObject() { GLEObjectDO* obj = new GLEObjectDO(this); obj->initProperties(m_Sub->getScript()->getGLEInterface()); GLEArrayImpl* arr = obj->getProperties()->getArray(); int first = 0; if (isSupportScale()) { // First two arguments are width and height arr->setDouble(0, atof(m_Sub->getDefault(0).c_str())); arr->setDouble(1, atof(m_Sub->getDefault(1).c_str())); first += 2; } for (int i = first; i < m_Sub->getNbParam(); i++) { string arg = m_Sub->getDefault(i); arr->setObject(i, new GLEString(arg)); } obj->render(); return obj; } GLEScript::GLEScript() { m_Run = NULL; m_Parser = NULL; m_Polish = NULL; m_Pcode = NULL; } GLEScript::~GLEScript() { cleanUp(); } void GLEScript::cleanUp() { if (m_Run != NULL) delete m_Run; if (m_Parser != NULL) delete m_Parser; if (m_Polish != NULL) delete m_Polish; if (m_Pcode != NULL) { delete m_Pcode->getPcodeList(); delete m_Pcode; } m_Run = NULL; m_Parser = NULL; m_Polish = NULL; m_Pcode = NULL; m_PostScriptCode.resize(0); } GLEDrawObject* GLEScript::newGLEObject(GLEDrawObjectType type) { GLEDrawObject* obj = NULL; switch (type) { case GDOLine: obj = new GLELineDO(); obj->initProperties(GLEGetInterfacePointer()); break; case GDOEllipse: obj = new GLEEllipseDO(); obj->initProperties(GLEGetInterfacePointer()); break; case GDOArc: obj = new GLEArcDO(); obj->initProperties(GLEGetInterfacePointer()); break; case GDOText: obj = new GLETextDO(); ((GLETextDO*)obj)->setModified(true); obj->initProperties(GLEGetInterfacePointer()); break; default: break; } m_NewObjs.add(obj); return obj; } void GLEScript::cancelObject(GLEDrawObject* obj) { int pos = m_NewObjs.size()-1; while (pos > 0) { if (m_NewObjs[pos].get() == obj) { m_NewObjs.erase(m_NewObjs.begin()+pos); break; } pos--; } } GLEDrawObject* GLEScript::nextObject() { if (m_CurrObject < getNumberObjects()) { return getObject(m_CurrObject++); } else { return NULL; } } void GLEScript::clearNewObjects() { m_NewObjs.clear(); } GLEDrawObjectType GLEScript::getType() { return GDOScript; } void GLEScript::updateObjectDOConstructors() { m_File.clearObjectDOConstructors(); // update all GLESubMap* subs = getParser()->getSubroutines(); for (int i = 0; i < subs->size(); i++) { GLESub* sub = subs->get(i); sub->setScript(this); bool okSub = true; if (!sub->isObject()) { okSub = false; } else { for (int j = 0; j < sub->getNbParam(); j++) { // Should have default value for each parameter if (sub->getDefault(j).length() == 0) okSub = false; } } if (okSub) { int line = sub->getStart(); GLESourceFile* file = m_File.getLine(line)->getSource(); GLEObjectDOConstructor* cons = sub->getObjectDOConstructor(); file->addObjectDOConstructor(cons); } } } const char* GLEScript::getPostScriptCode() { return m_PostScriptCode.c_str(); } string* GLEScript::getRecordedBytesBuffer(int device) { if (device == GLE_DEVICE_EPS) { return &m_PostScriptCode; } else if (device == GLE_DEVICE_PDF) { return &m_PDFCode; } else { CUtilsAssert(false); return 0; } } GLEHasArrowBase::GLEHasArrowBase(): m_Arrow(GLEHasArrowNone) { } GLELineDO::GLELineDO() { } GLELineDO::GLELineDO(const GLEPoint& p1, const GLEPoint& p2) : m_P1(p1), m_P2(p2) { } GLELineDO::GLELineDO(double x1, double y1, double x2, double y2) : m_P1(x1,y1), m_P2(x2,y2) { } GLELineDO::~GLELineDO() { } GLEDrawObjectType GLELineDO::getType() { return GDOLine; } void GLELineDO::initProperties(GLEInterface* iface) { m_Properties = new GLEPropertyStore(iface->getLinePropertyStoreModel()); GLEInitLineProperties(m_Properties); GLEInitArrowProperties(m_Properties); } bool GLELineDO::needsAMove(GLEPoint& pt) { pt.set(getP1()); return true; } namespace { void addArrowToCode(ostream& str, GLEHasArrow arrow) { if (arrow == (GLEHasArrowStart | GLEHasArrowEnd)) { str << " arrow both"; } else if (arrow == GLEHasArrowStart) { str << " arrow start"; } else if (arrow == GLEHasArrowEnd) { str << " arrow end"; } } } void GLELineDO::createGLECode(string& code) { ostringstream str; str << "aline " << getP2().getX() << " " << getP2().getY(); addArrowToCode(str, getArrow()); code = str.str(); } void GLELineDO::updateBoundingBox() { g_update_bounds(getP1().getX(), getP1().getY()); g_update_bounds(getP2().getX(), getP2().getY()); g_move(getP2().getX(), getP2().getY()); } void GLELineDO::applyTransformation(bool dir) { applyTransformationPt(&m_P1, dir); applyTransformationPt(&m_P2, dir); double scale = g_get_avg_scale(); GLEScaleSimpleLineProperties(scale, dir, getProperties()); GLEScaleArrowProperties(scale, dir, getProperties()); } GLEDrawObject* GLELineDO::clone() { GLELineDO* cl = new GLELineDO(getP1(), getP2()); cl->setArrow(getArrow()); return cl; } bool GLELineDO::approx(GLEDrawObject* other) { GLELineDO* otherc = (GLELineDO*)other; return getP1().approx(otherc->getP1()) && getP2().approx(otherc->getP2()) && getArrow() == otherc->getArrow(); } GLEEllipseDO::GLEEllipseDO() { m_Rx = m_Ry = 0.0; } GLEEllipseDO::GLEEllipseDO(double x0, double y0, double rx, double ry) : m_Center(x0, y0) { m_Rx = rx; m_Ry = ry; } GLEEllipseDO::GLEEllipseDO(const GLEPoint& c, double rx, double ry) : m_Center(c) { m_Rx = rx; m_Ry = ry; } GLEEllipseDO::GLEEllipseDO(double x0, double y0, double r) : m_Center(x0, y0) { m_Rx = m_Ry = r; } GLEEllipseDO::~GLEEllipseDO() { } GLEDrawObjectType GLEEllipseDO::getType() { return GDOEllipse; } void GLEEllipseDO::setRadius(double r) { m_Rx = m_Ry = r; } GLEPoint GLEEllipseDO::getPoint(GLEJustify just) { switch (just) { case GLEJustifyRC: return GLEPoint(m_Center.getX()+m_Rx, m_Center.getY()); case GLEJustifyTL: return GLEPoint(m_Center.getX()-m_Rx, m_Center.getY()+m_Ry); case GLEJustifyBR: return GLEPoint(m_Center.getX()+m_Rx, m_Center.getY()-m_Ry); default: break; } return GLEPoint(); } void GLEEllipseDO::initProperties(GLEInterface* iface) { m_Properties = new GLEPropertyStore(iface->getShapePropertyStoreModel()); GLEInitSimpleLineProperties(m_Properties); GLEInitShapeFillColor(m_Properties); } bool GLEEllipseDO::needsAMove(GLEPoint& pt) { pt.set(getCenter()); return true; } void GLEEllipseDO::createGLECode(string& code) { ostringstream str; if (isCircle()) { str << "circle " << m_Rx; } else { str << "ellipse " << m_Rx << " " << m_Ry; } code = str.str(); } void GLEEllipseDO::updateBoundingBox() { g_move(getCenter().getX(), getCenter().getY()); g_update_bounds(getCenter().getX()-m_Rx,getCenter().getY()-m_Ry); g_update_bounds(getCenter().getX()+m_Rx,getCenter().getY()+m_Ry); } void GLEEllipseDO::applyTransformation(bool dir) { applyTransformationPt(&m_Center, dir); double sx, sy; g_get_scale(&sx, &sy); if (dir) { m_Rx *= sx; m_Ry *= sy; } else { m_Rx /= sx; m_Ry /= sy; } double scale = (sx+sy)/2.0; GLEScaleSimpleLineProperties(scale, dir, getProperties()); } GLEDrawObject* GLEEllipseDO::clone() { return new GLEEllipseDO(m_Center, m_Rx, m_Ry); } bool GLEEllipseDO::approx(GLEDrawObject* other) { GLEEllipseDO* otherc = (GLEEllipseDO*)other; return m_Center.approx(otherc->getCenter()) && fabs(m_Rx - otherc->getRadiusX()) < 1e-6 && fabs(m_Ry - otherc->getRadiusY()) < 1e-6; } GLEArcDO::GLEArcDO() { m_Angle1 = m_Angle2 = 0.0; } GLEArcDO::GLEArcDO(double x0, double y0, double r, double a1, double a2) : GLEEllipseDO(x0, y0, r) { m_Angle1 = a1; m_Angle2 = a2; } GLEArcDO::GLEArcDO(double x0, double y0, double rx, double ry, double a1, double a2) : GLEEllipseDO(x0, y0, rx, ry) { m_Angle1 = a1; m_Angle2 = a2; } GLEArcDO::~GLEArcDO() { } GLEDrawObjectType GLEArcDO::getType() { return GDOArc; } void GLEArcDO::initProperties(GLEInterface* iface) { m_Properties = new GLEPropertyStore(iface->getLinePropertyStoreModel()); GLEInitLineProperties(m_Properties); GLEInitArrowProperties(m_Properties); } bool GLEArcDO::needsAMove(GLEPoint& pt) { pt.set(getCenter()); return true; } void GLEArcDO::createGLECode(string& code) { ostringstream str; double angle2 = g_arc_normalized_angle2(m_Angle1, m_Angle2); if (isCircle()) { str << "arc " << m_Rx << " " << m_Angle1 << " " << angle2; } else { str << "elliptical_arc " << m_Rx << " " << m_Ry << " " << m_Angle1 << " " << angle2; } addArrowToCode(str, getArrow()); code = str.str(); } void GLEArcDO::updateBoundingBox() { g_move(m_Center.getX(), m_Center.getY()); } GLEDrawObject* GLEArcDO::clone() { GLEArcDO* result = new GLEArcDO(m_Center.getX(), m_Center.getY(), m_Rx, m_Ry, m_Angle1, m_Angle2); result->setArrow(getArrow()); return result; } bool GLEArcDO::approx(GLEDrawObject* other) { GLEArcDO* otherc = (GLEArcDO*)other; return GLEEllipseDO::approx(other) && fabs(m_Angle1 - otherc->getAngle1()) < 1e-6 && fabs(m_Angle2 - otherc->getAngle2()) < 1e-6 && getArrow() == otherc->getArrow(); } void GLEArcDO::normalize() { m_Angle2 = g_arc_normalized_angle2(m_Angle1, m_Angle2); } GLEPoint& GLEArcDO::getPoint1(GLEPoint& pt) { pt.set(m_Center); pt.add(m_Rx*cos(m_Angle1*GLE_PI/180.0), m_Ry*sin(m_Angle1*GLE_PI/180.0)); return pt; } GLEPoint& GLEArcDO::getPoint2(GLEPoint& pt) { pt.set(m_Center); pt.add(m_Rx*cos(m_Angle2*GLE_PI/180.0), m_Ry*sin(m_Angle2*GLE_PI/180.0)); return pt; } GLEPoint& GLEArcDO::getPointMid(GLEPoint& pt) { pt.set(m_Center); double angle2 = g_arc_normalized_angle2(m_Angle1, m_Angle2); double angleMid = (m_Angle1 + angle2)/2; pt.add(m_Rx*cos(angleMid*GLE_PI/180.0), m_Ry*sin(angleMid*GLE_PI/180.0)); return pt; } GLETextDO::GLETextDO() : m_Modified(false) { } GLETextDO::GLETextDO(GLEPoint& position, const string& text) : m_Position(position), m_Text(text), m_Modified(false) { } GLETextDO::~GLETextDO() { } GLEDrawObjectType GLETextDO::getType() { return GDOText; } const char* GLETextDO::getPostScriptCode() { return m_PostScript.c_str(); } void GLETextDO::getPSBoundingBox(GLERectangle* box) { box->copy(&m_PSBoundingBox); } void GLETextDO::initBB(double width, double height, double baseline) { m_PSBoundingBox.setXMin(0.0); m_PSBoundingBox.setXMax(width); m_PSBoundingBox.setYMin(0.0); m_PSBoundingBox.setYMax(height); m_BaseLine = baseline; } bool GLETextDO::needsAMove(GLEPoint& pt) { pt.set(getPosition()); return true; } void GLETextDO::createGLECode(string& code) { ostringstream str; str << "write \"" << getText() << "\""; code = str.str(); } void GLETextDO::updateBoundingBox() { GLEDevice* oldDevice = g_set_dummy_device(); g_move(getPosition()); g_text(getText()); g_restore_device(oldDevice); g_move(getPosition()); } void GLETextDO::applyTransformation(bool dir) { applyTransformationPt(&m_Position, dir); GLEPropertyStore* props = getProperties(); if (props != NULL) { double scale = g_get_avg_scale(); if (scale > 0) { double hei = props->getRealProperty(GLEDOPropertyFontSize); if (dir) { hei *= scale; } else { hei /= scale; } props->setRealProperty(GLEDOPropertyFontSize, hei); } } } GLEDrawObject* GLETextDO::clone() { return new GLETextDO(getPosition(), getText()); } bool GLETextDO::approx(GLEDrawObject* other) { GLETextDO* othert = (GLETextDO*)other; return m_Position.approx(othert->getPosition()) && m_Text == othert->getText(); } bool GLETextDO::modified() { return m_Modified; } void GLETextDO::setModified(bool modified) { m_Modified = modified; } void GLETextDO::initProperties(GLEInterface* iface) { int justify; m_Properties = new GLEPropertyStore(iface->getTextPropertyStoreModel()); GLEInitColorProperty(m_Properties); iface->initTextProperties(m_Properties); g_get_just(&justify); m_Properties->setIntProperty(GLEDOPropertyJustify, justify); } void GLETextDO::render(GLEInterface* iface) { iface->renderText(this, getProperties()); } GLEObjectDO::GLEObjectDO(GLEObjectDOConstructor* cons) { m_Cons = cons; setRefPointString(GLEString::getEmptyString()); } GLEObjectDO::~GLEObjectDO() { } GLEDrawObjectType GLEObjectDO::getType() { return GDOObject; } const char* GLEObjectDO::getPostScriptCode() { return m_PostScript.c_str(); } void GLEObjectDO::makePropertyStore() { if (m_Properties == NULL) { m_Properties = new GLEPropertyStore(m_Cons); } } void GLEObjectDO::getPSBoundingBox(GLERectangle* box) { box->copy(m_ObjRep->getRectangle()); // Convert from points to cm box->translate(-1.0, -1.0); box->scale(CM_PER_INCH/PS_POINTS_PER_INCH); } bool GLEObjectDO::needsAMove(GLEPoint& pt) { pt.set(m_Position); return true; } void GLEObjectDO::createGLECode(string& code) { ostringstream str; GLESub* sub = getConstructor()->getSubroutine(); string subname = sub->getName(); gle_strlwr(subname); if (m_RefPoint.isNull()) { str << "draw " << subname; } else { str << "draw " << subname << "." << *m_RefPoint.get(); } GLEArrayImpl* args = getProperties()->getArray(); for (int i = 0; i < sub->getNbParam(); i++) { str << " "; gle_memory_cell_print(args->get(i), str); } code = str.str(); } void GLEObjectDO::updateBoundingBox() { g_move(getPosition()); } void GLEObjectDO::applyTransformation(bool dir) { applyTransformationPt(&m_Position, dir); } GLEDrawObject* GLEObjectDO::clone() { GLEObjectDO* res = new GLEObjectDO(m_Cons); res->setPosition(m_Position); res->setRefPointString(m_RefPoint.get()); return res; } bool GLEObjectDO::approx(GLEDrawObject* other) { GLEObjectDO* otherc = (GLEObjectDO*)other; if (!otherc->getRefPointString()->equals(getRefPointString())) return false; GLEArrayImpl* my_args = getProperties()->getArray(); GLEArrayImpl* other_args = otherc->getProperties()->getArray(); GLESub* sub = getConstructor()->getSubroutine(); for (int i = 0; i < sub->getNbParam(); i++) { GLEMemoryCell* a1 = my_args->get(i); GLEMemoryCell* a2 = other_args->get(i); if (!gle_memory_cell_equals(a1, a2)) return false; } return getPosition().approx(otherc->getPosition()); } void GLEObjectDO::initProperties(GLEInterface* iface) { makePropertyStore(); GLEInitLineProperties(m_Properties); GLEInitShapeFillColor(m_Properties); iface->initTextProperties(m_Properties); } void GLEObjectDO::render() { GLEObjectRepresention* newobj = new GLEObjectRepresention(); setObjectRepresentation(newobj); GLESub* sub = m_Cons->getSubroutine(); GLEScript* script = sub->getScript(); if (script == NULL && sub->getStart() == -1) { // Subroutine does not have script attached properly newobj->getRectangle()->setXMin(-1.0); return; } GLEInterface* iface = script->getGLEInterface(); GLESaveRestore saved_state; try { g_select_device(GLE_DEVICE_EPS); PSGLEDevice* dev = (PSGLEDevice*)g_get_device_ptr(); dev->startRecording(); saved_state.save(); g_clear(); g_resetfont(); g_scale(PS_POINTS_PER_INCH/CM_PER_INCH, PS_POINTS_PER_INCH/CM_PER_INCH); g_translate(1.0*CM_PER_INCH/72, 1.0*CM_PER_INCH/72); dev->startRecording(); GLEPropertyStore* prop = getProperties(); // Select the right color GLEColor* color = prop->getColorProperty(GLEDOPropertyColor); g_set_color(color); GLEColor* fill = prop->getColorProperty(GLEDOPropertyFillColor); g_set_fill(fill); // Select the right size double hei = prop->getRealProperty(GLEDOPropertyFontSize); if (hei == 0.0) g_set_hei(0.3633); else g_set_hei(hei); g_set_font_width(-1); g_set_line_style("1"); g_set_line_width(prop->getRealProperty(GLEDOPropertyLineWidth)); // Select the font GLEFont* font = prop->getFontProperty(GLEDOPropertyFont); if (font == NULL) { font = iface->getFont("rm"); } g_set_font(font->getIndex()); newobj->enableChildObjects(); GLERun* run = script->getRun(); run->setDeviceIsOpen(true); run->setCRObjectRep(newobj); /* draw to measure */ GLEMeasureBox measure; measure.measureStart(); g_move(0.0, 0.0); double oval = 0.0; int otyp = 0, cp = 0; GLEPcodeList pc_list; GLEPcode pcode(&pc_list); pcode.addInt(PCODE_EXPR); /* Expression follows */ int savelen = pcode.size(); /* Used to set acutal length at end */ pcode.addInt(0); /* Length of expression */ GLEPolish* polish = script->getPolish(); if (polish != NULL) { string argi; GLEArrayImpl* arr = prop->getArray(); for (int i = 0; i < sub->getNbParam(); i++) { int rtype = sub->getParamTypes()[i]; if (arr->getType(i) == GLEObjectTypeDouble) { pcode.addDoubleExpression(arr->getDouble(i)); } else { GLEString* args = (GLEString*)arr->getObject(i); args->toUTF8(argi); try { polish->polish(argi.c_str(), pcode, &rtype); } catch (ParserError err) { err.setParserString(argi); throw err; } } } } pcode.addFunction(sub->getIndex() + LOCAL_START_INDEX); pcode.setInt(savelen, pcode.size() - savelen - 1); eval((int*)&pcode[0], &cp, &oval, NULL, &otyp); // g_flush() required to make sure that all line segments are output g_flush(); measure.measureEnd(); newobj->getRectangle()->copy(&measure); // cout << "Rectangle: " << *newobj->getRectangle() << endl; g_dev(newobj->getRectangle()); // cout << "Dev. Rectangle: " << *newobj->getRectangle() << endl; run->setCRObjectRep(NULL); // Return the resulting PostScript code dev->getRecordedBytes(getPostScriptPtr()); saved_state.restore(); } catch (ParserError err) { newobj->getRectangle()->setXMin(-1.0); output_error(err); } } void GLEObjectDO::computeReferencePoint(GLEPoint* pt) { if (m_RefPoint.isNull()) return; try { GLEJustify just; GLEObjectRepresention* myobj = getObjectRepresentation(); GLERC path(m_RefPoint->split('.')); GLEObjectRepresention* obj = GLERun::name_to_object(myobj, path.get(), &just, 0); if (obj != NULL) { GLERectangle rect; rect.copy(obj->getRectangle()); rect.translate(1.0-myobj->getRectangle()->getXMin(), 1.0-myobj->getRectangle()->getYMin()); g_undev(&rect); rect.toPoint(just, pt); } else { pt->setXY(0, 0); } } catch (ParserError err) { output_error(err); } } GLEComposedObject::GLEComposedObject() { } GLEComposedObject::~GLEComposedObject() { } void GLEComposedObject::clear() { m_Objs.clear(); } void GLEComposedObject::removeDeletedObjects() { int nbDeleted = 0; int nbTotal = getNumberObjects(); for (int i = 0; i < nbTotal; i++) { GLEDrawObject* obj = getObject(i); if (obj->hasFlag(GDO_FLAG_DELETED)) { nbDeleted++; } if (i+nbDeleted < nbTotal) { setObject(i, getObject(i+nbDeleted)); } } setNumberObjects(nbTotal - nbDeleted); } GLEFont::GLEFont() { m_Bold = m_Italic = m_BoldItalic = NULL; m_Index = m_Number = 0; m_Parent = 0; } GLEFont::~GLEFont() { } GLEFontStyle GLEFont::checkStyle(GLEFont* child) { if (m_Bold.get() == child) { return GLEFontStyleBold; } else if (m_Italic.get() == child) { return GLEFontStyleItalic; } else if (m_BoldItalic.get() == child) { return GLEFontStyleBoldItalic; } else { return GLEFontStyleRoman; } } GLEFont* GLEFont::getStyle(GLEFontStyle style) { switch (style) { case GLEFontStyleRoman: return this; case GLEFontStyleBold: return m_Bold.get(); case GLEFontStyleItalic: return m_Italic.get(); case GLEFontStyleBoldItalic: return m_BoldItalic.get(); default: return NULL; } } void GLEFont::setStyle(GLEFontStyle style, GLEFont* font) { switch (style) { case GLEFontStyleBold: m_Bold = font; break; case GLEFontStyleItalic: m_Italic = font; break; case GLEFontStyleBoldItalic: m_BoldItalic = font; break; default: break; } } GLEFillBase::GLEFillBase() { } GLEFillBase::~GLEFillBase() { } GLEPatternFill::GLEPatternFill(int fillDescr) : m_fillDescription(fillDescr), m_background(new GLEColor()) { m_background->setHexValueGLE(GLE_COLOR_WHITE); } GLEPatternFill::~GLEPatternFill() { } GLEFillType GLEPatternFill::getFillType() { return GLE_FILL_TYPE_PATTERN; } GLEFillBase* GLEPatternFill::clone() { GLEPatternFill* result = new GLEPatternFill(m_fillDescription); result->setBackground(m_background->clone()); return result; } GLEColor::GLEColor() : m_Name(0) { setGray(0); } GLEColor::GLEColor(double r, double g, double b) : m_Name(0) { setRGB(r, g, b); } GLEColor::GLEColor(double r, double g, double b, double a) : m_Name(0) { setRGBA(r, g, b, a); } GLEColor::GLEColor(double gray) : m_Name(0) { setGray(gray); } GLEColor::~GLEColor() { if (m_Name != NULL) delete m_Name; } GLEColor* GLEColor::clone() { GLEColor* result = new GLEColor(m_Red, m_Green, m_Blue, m_Alpha); result->setTransparent(isTransparent()); result->setName(m_Name); if (isFill()) { result->setFill(getFill()->clone()); } return result; } int GLEColor::getType() { return GLEObjectTypeColor; } bool GLEColor::equalsApprox(GLEColor* other) { return equals_rel_fine(m_Red, other->m_Red) && equals_rel_fine(m_Green, other->m_Green) && equals_rel_fine(m_Blue, other->m_Blue) && equals_rel_fine(m_Alpha, other->m_Alpha) && m_Transparent == other->m_Transparent; } bool GLEColor::equals(GLEDataObject* obj) { if (obj->getType() != GLEObjectTypeColor) return false; GLEColor* other = (GLEColor*)obj; return m_Red == other->m_Red && m_Green == other->m_Green && m_Blue == other->m_Blue && m_Alpha == other->m_Alpha && m_Transparent == other->m_Transparent; } void GLEColor::toString(ostream& out) { if (isTransparent()) { out << "clear"; } else { bool found = false; // FIXME: don't do this look-up here - do it some place else (in QGLE?) // FIXME: AFTER4.2 GLEColorList* list = GLEGetColorList(); for (int i = 0; i < list->getNbColors(); i++) { GLEColor* def = list->getColor(i); if (equals(def)) { string name = def->getName(); if (name != "") { gle_strlwr(name); out << name; found = true; } } } if (!found) { if (hasAlpha()) { out << "rgba255(" << (int)getRedI() << "," << (int)getGreenI() << "," << (int)getBlueI() << "," << (int)getAlphaI() << ")"; } else { out << "rgb255(" << (int)getRedI() << "," << (int)getGreenI() << "," << (int)getBlueI() << ")"; } } } } const char* GLEColor::getName() { return m_Name != NULL ? m_Name->c_str() : ""; } void GLEColor::setName(const string& name) { delete m_Name; m_Name = new string(name); } void GLEColor::setName(const string* name) { delete m_Name; if (name != 0) { m_Name = new std::string(*name); } else { m_Name = 0; } } void GLEColor::setRGB(double r, double g, double b) { m_Red = r; m_Green = g; m_Blue = b; m_Alpha = 1.0; m_Transparent = false; } void GLEColor::setRGBA(double r, double g, double b, double a) { m_Red = r; m_Green = g; m_Blue = b; m_Alpha = a; m_Transparent = false; } void GLEColor::setRGB255(int r, int g, int b) { setRGB(((double)r) / 255.0, ((double)g) / 255.0, ((double)b) / 255.0); } void GLEColor::setRGB255(double r, double g, double b) { setRGB(r / 255.0, g / 255.0, b / 255.0); } void GLEColor::setRGBA255(double r, double g, double b, double a) { setRGBA(r / 255.0, g / 255.0, b / 255.0, a / 255.0); } void GLEColor::setGray(double gray) { setRGB(gray, gray, gray); } void GLEColor::setHexValue(unsigned int v) { unsigned int red = (v >> 16) & 0xFF; unsigned int green = (v >> 8) & 0xFF; unsigned int blue = v & 0xFF; setRGB(((double)red) / 255.0, ((double)green) / 255.0, ((double)blue) / 255.0); } void GLEColor::setDoubleEncoding(double v) { union { double d; int l[2]; } both; both.d = v; setHexValueGLE(both.l[0]); m_Alpha = double(both.l[1]) / 255.0; } double GLEColor::getDoubleEncoding() { union { double d; int l[2]; } both; both.l[0] = getHexValueGLE(); both.l[1] = getAlphaI(); return both.d; } void GLEColor::setHexValueGLE(unsigned int hexValue) { if (hexValue == GLE_FILL_CLEAR) { setGray(0); m_Fill = 0; setTransparent(true); } else if ((hexValue & 0X02000000) != 0) { setGray(0); setFill(new GLEPatternFill(hexValue)); } else { setHexValue(hexValue); } } unsigned int GLEColor::getHexValueGLE() { if (isTransparent()) { return GLE_FILL_CLEAR; } else if (isFill() && getFill()->getFillType() == GLE_FILL_TYPE_PATTERN) { GLEPatternFill* myFill = static_cast(getFill()); return myFill->getFillDescription(); } else { unsigned int red = float_to_color_comp(m_Red); unsigned int green = float_to_color_comp(m_Green); unsigned int blue = float_to_color_comp(m_Blue); return 0x01000000 | (red << 16) | (green << 8) | blue; } } double GLEColor::getGray() { return (getRed() * 3.0 + getGreen() * 2.0 + getBlue()) / 6.0; } GLEPropertyStore::GLEPropertyStore(GLEPropertyStoreModel* model) { m_Model = model; m_Values.ensure(model->getNumberOfProperties()); } GLEPropertyStore::~GLEPropertyStore() { } GLEPropertyStore* GLEPropertyStore::clone() { GLEPropertyStore* result = new GLEPropertyStore(getModel()); for (size_t i = 0; i < m_Values.size(); i++) { result->setPropertyValue(i, m_Values.get(i)); } return result; } void GLEPropertyStore::getPropertyAsString(GLEPropertyID id, string* result) { int idx = m_Model->find(id); GLEProperty* prop = m_Model->getProperty(idx); prop->getPropertyAsString(result, m_Values.get(idx)); } GLEPropertyStoreModel::GLEPropertyStoreModel() { m_Hash = new IntIntHash(); m_CanScale = false; m_NbExtra = 0; } GLEPropertyStoreModel::~GLEPropertyStoreModel() { delete m_Hash; } int GLEPropertyStoreModel::find(GLEPropertyID id) { return m_Hash->try_get(id); } void GLEPropertyStoreModel::add(GLEProperty* prop) { int id = m_Properties.size(); m_Properties.push_back(prop); prop->setIndex(id); m_Hash->add_item(prop->getID(), id); } void GLEPropertyStoreModel::scale(GLEDrawObject* obj, double sx, double sy) { } GLEProperty::GLEProperty(const char* name, const char* cmdname, GLEPropertyType type, GLEPropertyID id) { m_Name = name; m_Type = type; m_ID = id; m_SetCmdName = cmdname; m_Index = -1; } GLEProperty::GLEProperty(const char* name, GLEPropertyType type, GLEPropertyID id) { m_Name = name; m_Type = type; m_ID = id; m_SetCmdName = NULL; m_Index = -1; } GLEProperty::~GLEProperty() { } void GLEProperty::getPropertyAsString(string* result, GLEMemoryCell* value) { GLEColor* color = NULL; GLEFont* font = NULL; GLEString* gstr = NULL; ostringstream str; switch (m_Type) { case GLEPropertyTypeInt: str << value->Entry.IntVal; break; case GLEPropertyTypeBool: if (value->Entry.BoolVal) str << "yes"; else str << "no"; break; case GLEPropertyTypeReal: str << value->Entry.DoubleVal; break; case GLEPropertyTypeString: gstr = (GLEString*)value->Entry.ObjectVal; str << *gstr; break; case GLEPropertyTypeColor: color = (GLEColor*)value->Entry.ObjectVal; color->toString(str); break; case GLEPropertyTypeFont: font = (GLEFont*)value->Entry.ObjectVal; str << font->getName(); break; } *result = str.str(); } void GLEProperty::createSetCommandGLECode(ostream& os, GLEMemoryCell* value) { if (getSetCommandName() != NULL) { string str; getPropertyAsString(&str, value); os << " " << getSetCommandName() << " " << str; } } bool GLEProperty::isEqualToState(GLEPropertyStore* store) { return true; } void GLEProperty::updateState(GLEPropertyStore* store) { } GLEPropertyNominal::GLEPropertyNominal(const char* name, GLEPropertyType type, GLEPropertyID id) : GLEProperty(name, type, id) { m_Value2Name = new IntIntHash(); m_Name2Value = new StringIntHash(); } GLEPropertyNominal::~GLEPropertyNominal() { delete m_Value2Name; delete m_Name2Value; } void GLEPropertyNominal::addValue(const char* name, int value) { int pos = m_NomValues.size(); m_NomValues.push_back(name); m_Value2Name->add_item(value, pos); m_Name2Value->add_item(name, value); } void GLEPropertyNominal::getPropertyAsString(string* result, GLEMemoryCell* value) { int pos = m_Value2Name->try_get(value->Entry.IntVal); if (pos == -1) { ostringstream res; res << value->Entry.IntVal; *result = res.str(); } else { *result = m_NomValues[pos]; } } GLEPropertyLWidth::GLEPropertyLWidth(const char* name) : GLEProperty(name, "lwidth", GLEPropertyTypeReal, GLEDOPropertyLineWidth) { } GLEPropertyLWidth::~GLEPropertyLWidth() { } bool GLEPropertyLWidth::isEqualToState(GLEPropertyStore* store) { double lwidth; g_get_line_width(&lwidth); return equals_rel_fine(lwidth, store->getRealProperty(this)); } void GLEPropertyLWidth::updateState(GLEPropertyStore* store) { g_set_line_width(store->getRealProperty(this)); } GLEPropertyLStyle::GLEPropertyLStyle(const char* name) : GLEProperty(name, "lstyle", GLEPropertyTypeString, GLEDOPropertyLineStyle) { } GLEPropertyLStyle::~GLEPropertyLStyle() { } bool GLEPropertyLStyle::isEqualToState(GLEPropertyStore* store) { char lstyle[15]; g_get_line_style(lstyle); GLEString* str = store->getStringProperty(this); return str->length() == 0 || str->equalsI(lstyle); } void GLEPropertyLStyle::updateState(GLEPropertyStore* store) { char lstyle[15]; store->getStringProperty(this)->toUTF8(lstyle); g_set_line_style(lstyle); } GLEPropertyColor::GLEPropertyColor(const char* name) : GLEProperty(name, "color", GLEPropertyTypeColor, GLEDOPropertyColor) { } GLEPropertyColor::~GLEPropertyColor() { } bool GLEPropertyColor::isEqualToState(GLEPropertyStore* store) { GLERC color(g_get_color()); GLEColor* gle_color = store->getColorProperty(this); return color->equalsApprox(gle_color); } void GLEPropertyColor::updateState(GLEPropertyStore* store) { g_set_color(store->getColorProperty(this)); } GLEPropertyFillColor::GLEPropertyFillColor(const char* name) : GLEProperty(name, "fill", GLEPropertyTypeColor, GLEDOPropertyFillColor) { } GLEPropertyFillColor::~GLEPropertyFillColor() { } bool GLEPropertyFillColor::isEqualToState(GLEPropertyStore* store) { GLERC curr_fill(g_get_fill()); return curr_fill->equalsApprox(store->getColorProperty(this)); } void GLEPropertyFillColor::updateState(GLEPropertyStore* store) { g_set_fill(store->getColorProperty(this)); } GLEPropertyHei::GLEPropertyHei(const char* name) : GLEProperty(name, "hei", GLEPropertyTypeReal, GLEDOPropertyFontSize) { } GLEPropertyHei::~GLEPropertyHei() { } bool GLEPropertyHei::isEqualToState(GLEPropertyStore* store) { double fontsize; g_get_hei(&fontsize); return equals_rel_fine(fontsize, store->getRealProperty(this)); } void GLEPropertyHei::updateState(GLEPropertyStore* store) { g_set_hei(store->getRealProperty(this)); } GLEPropertyFont::GLEPropertyFont(const char* name) : GLEProperty(name, "font", GLEPropertyTypeFont, GLEDOPropertyFont) { } GLEPropertyFont::~GLEPropertyFont() { } bool GLEPropertyFont::isEqualToState(GLEPropertyStore* store) { int font; g_get_font(&font); GLEFont* gle_font = store->getFontProperty(this); return font == gle_font->getIndex(); } void GLEPropertyFont::updateState(GLEPropertyStore* store) { g_set_font(store->getFontProperty(this)->getIndex()); } GLEPropertyJustify::GLEPropertyJustify(const char* name) : GLEProperty(name, "just", GLEPropertyTypeInt, GLEDOPropertyJustify) { } GLEPropertyJustify::~GLEPropertyJustify() { } bool GLEPropertyJustify::isEqualToState(GLEPropertyStore* store) { int just; g_get_just(&just); return just == store->getIntProperty(this); } void GLEPropertyJustify::updateState(GLEPropertyStore* store) { g_set_just(store->getIntProperty(this)); } void GLEPropertyJustify::getPropertyAsString(string* result, GLEMemoryCell* value) { int ival = value->Entry.IntVal; switch (ival) { case GLEJustifyCC: *result = "cc"; break; case GLEJustifyTL: *result = "tl"; break; case GLEJustifyTC: *result = "tc"; break; case GLEJustifyTR: *result = "tr"; break; case GLEJustifyBL: *result = "bl"; break; case GLEJustifyBC: *result = "bc"; break; case GLEJustifyBR: *result = "br"; break; case GLEJustifyLC: *result = "lc"; break; case GLEJustifyRC: *result = "rc"; break; case GLEJustifyLeft: *result = "left"; break; case GLEJustifyCenter: *result = "center"; break; case GLEJustifyRight: *result = "right"; break; default: *result = "?"; break; } } GLEPropertyArrowSize::GLEPropertyArrowSize(const char* name) : GLEProperty(name, "arrowsize", GLEPropertyTypeReal, GLEDOPropertyArrowSize) { } GLEPropertyArrowSize::~GLEPropertyArrowSize() { } bool GLEPropertyArrowSize::isEqualToState(GLEPropertyStore* store) { GLEArrowProps arrow; g_arrowsize(&arrow); return equals_rel_fine(arrow.size, store->getRealProperty(this)); } void GLEPropertyArrowSize::updateState(GLEPropertyStore* store) { g_set_arrow_size(store->getRealProperty(this)); } GLEPropertyArrowAngle::GLEPropertyArrowAngle(const char* name) : GLEProperty(name, "arrowangle", GLEPropertyTypeReal, GLEDOPropertyArrowAngle) { } GLEPropertyArrowAngle::~GLEPropertyArrowAngle() { } bool GLEPropertyArrowAngle::isEqualToState(GLEPropertyStore* store) { GLEArrowProps arrow; g_arrowsize(&arrow); return equals_rel_fine(arrow.angle, store->getRealProperty(this)); } void GLEPropertyArrowAngle::updateState(GLEPropertyStore* store) { g_set_arrow_angle(store->getRealProperty(this)); } void GLEInitColorProperty(GLEPropertyStore* prop) { prop->setColorProperty(GLEDOPropertyColor, g_get_color()->clone()); } void GLEInitSimpleLineProperties(GLEPropertyStore* prop) { // line width property double lwidth; g_get_line_width(&lwidth); prop->setRealProperty(GLEDOPropertyLineWidth, lwidth); // line style char lstyle[15]; g_get_line_style(lstyle); prop->setStringProperty(GLEDOPropertyLineStyle, new GLEString(lstyle)); GLEInitColorProperty(prop); } void GLEScaleSimpleLineProperties(double scale, bool dir, GLEPropertyStore* prop) { if (prop != NULL && scale > 0) { double wd = prop->getRealProperty(GLEDOPropertyLineWidth); if (dir) { wd *= scale; } else { wd /= scale; } prop->setRealProperty(GLEDOPropertyLineWidth, wd); } } void GLEScaleArrowProperties(double scale, bool dir, GLEPropertyStore* prop) { if (prop != NULL && scale > 0) { double size = prop->getRealProperty(GLEDOPropertyArrowSize); if (dir) { size *= scale; } else { size /= scale; } prop->setRealProperty(GLEDOPropertyArrowSize, size); } } void GLEInitLineProperties(GLEPropertyStore* prop) { GLEInitSimpleLineProperties(prop); // cap int cap; g_get_line_cap(&cap); prop->setIntProperty(GLEDOPropertyLineCap, cap); } void GLESetDefaultArrowProperties(double lwd, GLEPropertyStore* prop) { if (!g_is_dummy_device()) { g_set_dummy_device(); } g_set_line_width(lwd); g_set_hei(0.3633); GLEInitArrowProperties(prop); } void GLEInitArrowProperties(GLEPropertyStore* prop) { GLEArrowProps arrow; g_arrowsize(&arrow); prop->setRealProperty(GLEDOPropertyArrowSize, arrow.size); prop->setRealProperty(GLEDOPropertyArrowAngle, arrow.angle); prop->setIntProperty(GLEDOPropertyArrowStyle, arrow.style); prop->setIntProperty(GLEDOPropertyArrowTip, arrow.tip); } void GLEInitShapeFillColor(GLEPropertyStore* prop) { GLERC gcolor(g_get_fill()); prop->setColorProperty(GLEDOPropertyFillColor, gcolor->clone()); } gle-graphics-4.2.4c/src/gle/Makefile.in0000664000000000000000000001740511467475264016363 0ustar rootroot######################################################################## # # # GLE - Graphics Layout Engine # # # # Modified BSD License # # # # Copyright (C) 2009 GLE. # # # # Redistribution and use in source and binary forms, with or without # # modification, are permitted provided that the following conditions # # are met: # # # # 1. Redistributions of source code must retain the above copyright # # notice, this list of conditions and the following disclaimer. # # # # 2. Redistributions in binary form must reproduce the above # # copyright notice, this list of conditions and the following # # disclaimer in the documentation and/or other materials provided with # # the distribution. # # # # 3. The name of the author may not be used to endorse or promote # # products derived from this software without specific prior written # # permission. # # # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR # # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY # # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE # # GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER # # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN # # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # # ######################################################################## # # makefile.gcc for GLE v4.0 # for compilation with gcc # include ../../config.i include ../../config.aconf include files.txt PACKAGE_TARNAME=@PACKAGE_TARNAME@ prefix=@prefix@ exec_prefix=@exec_prefix@ datarootdir=@datarootdir@ docdir=@docdir@ TOMAKE= GLE_ELIBS= LIBGLE_ELIBS= CXX=@CXX@ LIBS=@LIBS@ CPPFLAGS=@CPPFLAGS@ LDFLAGS=@LDFLAGS@ LIBGLE_CPPFLAGS=@LIBGLE_CPPFLAGS@@CPPFLAGS@ LIBGLE_LDFLAGS=@LIBGLE_LDFLAGS@@LDFLAGS@ SIMPLE_LDFLAGS=@SIMPLE_LDFLAGS@ SIMPLE_LIBS=@SIMPLE_LIBS@ SIMPLE_LIBS_DL=@SIMPLE_LIBS_DL@ INSTALL_LIB=@libdir@ INSTALL_BIN=@GLE_INSTALL_BIN@ INSTALL_DIR=@GLE_INSTALL_DATA@ ifeq (@HAVE_LIBTIFF@,1) OBJECTS := $(OBJECTS) $(TIFFOBJS) endif ifeq (@HAVE_LIBPNG@,1) OBJECTS := $(OBJECTS) $(PNGOBJS) endif ifeq (@HAVE_LIBJPEG@,1) OBJECTS := $(OBJECTS) $(JPEGOBJS) endif MAKESCRIPTS := ifeq (@HAVE_NOSCRIPTS@,0) MAKESCRIPTS := $(PROJECT_BINDIR)/bin/rungle endif ifeq (@HAVE_WIN32@,1) GLE_ELIBS := -lwsock32 ifeq (@HAVE_LIBGLE@,1) LIBGLE_ELIBS := -lwsock32 endif endif UTILOBJS=cutils.$(OBJ_SUFF) file_io.$(OBJ_SUFF) ifeq (@HAVE_LIBGLE_CPPFLAGS@,1) UTILOBJS=cutils.static.$(OBJ_SUFF) file_io.static.$(OBJ_SUFF) endif ifeq (@HAVE_LIBGLE@,1) TOMAKE := $(PROJECT_BINDIR)/lib/libgle-graphics-@GLE_VERSION@.so GLEOBJ := glec.cpp $(UTILOBJS) $(SIMPLE_LIBS_DL) ifeq (@HAVE_WIN32@,1) TOMAKE := $(PROJECT_BINDIR)/bin/libgle-graphics-@GLE_VERSION@.dll GLEOBJ := glec.cpp $(UTILOBJS) endif ifeq (@HAVE_MAC@,1) TOMAKE := $(PROJECT_BINDIR)/lib/libgle-graphics-@GLE_VERSION@.dylib endif GLEIN := glec.cpp $(UTILOBJS) GLEOPT := $(CPPFLAGS) else GLEIN := $(GLEOBJS) $(OBJECTS) $(LINKOBJS) GLEOBJ := $(OBJECTS) $(LINKOBJS) $(LIBS) GLEOPT := $(LINK_OPTS) $(LDFLAGS) endif TOMAKE := $(TOMAKE) $(PROJECT_BINDIR)/bin/gle ifeq (@HAVE_LIBGLE_STATIC@,1) TOMAKE := $(TOMAKE) $(PROJECT_BINDIR)/lib/libgle-graphics-@GLE_VERSION@.a GLEIN := $(GLEOBJS) $(OBJECTS) $(LINKOBJS) GLEOBJ := $(OBJECTS) $(LINKOBJS) $(LIBS) GLEOPT := $(LINK_OPTS) $(LDFLAGS) endif LIBGLE_CPPFLAGS := $(strip $(LIBGLE_CPPFLAGS)) CPPFLAGS := $(strip $(CPPFLAGS)) all: $(OBJECTS) $(TOMAKE) make_glebtool: $(PROJECT_BINDIR)/bin/glebtool $(PROJECT_BINDIR)/glerc $(MAKESCRIPTS) $(filter %.static.$(OBJ_SUFF),$(UTILOBJS)): %.static.$(OBJ_SUFF): %.cpp $(INCLUDES) $(CXX) $(CPPFLAGS) -c $< -o $@ $(OBJECTS): %.$(OBJ_SUFF): %.cpp $(INCLUDES) $(CXX) $(LIBGLE_CPPFLAGS) -c $< -o $@ $(PROJECT_BINDIR)/lib/libgle-graphics-@GLE_VERSION@.dylib: $(GLEOBJS) $(OBJECTS) $(LINKOBJS) $(CXX) -dynamiclib -install_name libgle-graphics-@GLE_VERSION@.dylib $(LINK_OPTS) $(LIBGLE_LDFLAGS) -o $(PROJECT_BINDIR)/lib/libgle-graphics-@GLE_VERSION@.dylib $(OBJECTS) $(LINKOBJS) $(LIBS) $(LIBGLE_ELIBS) $(PROJECT_BINDIR)/lib/libgle-graphics-@GLE_VERSION@.so: $(GLEOBJS) $(OBJECTS) $(LINKOBJS) $(CXX) -shared -Wl,-soname,libgle-graphics-@GLE_VERSION@.so $(LINK_OPTS) $(LIBGLE_LDFLAGS) -o $(PROJECT_BINDIR)/lib/libgle-graphics-@GLE_VERSION@.so $(OBJECTS) $(LINKOBJS) $(LIBS) $(LIBGLE_ELIBS) $(PROJECT_BINDIR)/bin/libgle-graphics-@GLE_VERSION@.dll: $(GLEOBJS) $(OBJECTS) $(LINKOBJS) $(CXX) -shared $(LINK_OPTS) $(LIBGLE_LDFLAGS) -o $(PROJECT_BINDIR)/bin/libgle-graphics-@GLE_VERSION@.dll $(OBJECTS) $(LINKOBJS) $(LIBS) $(LIBGLE_ELIBS) $(PROJECT_BINDIR)/lib/libgle-graphics-@GLE_VERSION@.a: $(GLEOBJS) $(OBJECTS) $(LINKOBJS) rm -f $(PROJECT_BINDIR)/lib/libgle-graphics-@GLE_VERSION@.a ar rvu $(PROJECT_BINDIR)/lib/libgle-graphics-@GLE_VERSION@.a $(OBJECTS) $(LINKOBJS) ranlib $(PROJECT_BINDIR)/lib/libgle-graphics-@GLE_VERSION@.a $(PROJECT_BINDIR)/bin/gle-unit-test: unit-tests/part1.cpp $(PROJECT_BINDIR)/lib/libgle-graphics-@GLE_VERSION@.a $(CXX) $(GLEOPT) $(LIBGLE_LDFLAGS) -o $(PROJECT_BINDIR)/bin/gle-unit-test unit-tests/part1.cpp $(PROJECT_BINDIR)/lib/libgle-graphics-@GLE_VERSION@.a $(LIBS) $(LIBGLE_ELIBS) $(PROJECT_BINDIR)/bin/gle-unit-test $(PROJECT_BINDIR)/bin/gle: $(GLEIN) $(CXX) $(GLEOPT) $(SIMPLE_LDFLAGS) -o $(PROJECT_BINDIR)/bin/gle $(GLEOBJ) $(GLE_ELIBS) $(SIMPLE_LIBS) $(PROJECT_BINDIR)/glerc: echo "begin config gle" > $(PROJECT_BINDIR)/glerc echo " current = $(VERSION_NUMBER).$(BUILD_NUMBER)" >> $(PROJECT_BINDIR)/glerc echo "end config" >> $(PROJECT_BINDIR)/glerc $(PROJECT_BINDIR)/bin/glebtool: glebtool.cpp $(UTILOBJS) Makefile $(CXX) $(CPPFLAGS) $(SIMPLE_LDFLAGS) glebtool.cpp $(UTILOBJS) $(GLE_ELIBS) $(SIMPLE_LIBS) -o $(PROJECT_BINDIR)/bin/glebtool $(PROJECT_BINDIR)/bin/glebtool -setrelpath $(INSTALL_BIN) $(INSTALL_LIB) $(INSTALL_DIR) $(docdir) ../config.h $(PROJECT_BINDIR)/bin/rungle: echo "#!/bin/sh" > $(PROJECT_BINDIR)/bin/rungle echo "GLE_TOP=../../build" >> $(PROJECT_BINDIR)/bin/rungle echo "export GLE_TOP" >> $(PROJECT_BINDIR)/bin/rungle echo "../../build/bin/gle \$$@" >> $(PROJECT_BINDIR)/bin/rungle chmod a+x $(PROJECT_BINDIR)/bin/rungle dofonts: $(MAKE) -C font # simple test to make the sample and compare it to # the eps file that is included in the distribution # -- if you get this far chances are it working allready ;-) # you should only get an error on the Creation date test: # do this after make install! gle sample.gle /eps diff sample.eps sample_compare.eps clean: -$(RM) $(OBJECTS) $(PROJECT_BINDIR)/bin/gle* $(PROJECT_BINDIR)/bin/glebtool* *.static.$(OBJ_SUFF) gle-graphics-4.2.4c/src/gle/color.h0000664000000000000000000002140211405446017015557 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ #ifndef INC_COLOR_H #define INC_COLOR_H typedef union { int l; unsigned char b[4]; } colortyp; typedef struct { double red, green, blue; } rgb01; #ifdef WORDS_BIGENDIAN #define B_F 0 #define B_R 1 #define B_G 2 #define B_B 3 #else #define B_F 3 #define B_R 2 #define B_G 1 #define B_B 0 #endif #define GLE_FILL_CLEAR 0XFF000000 // SVG colors #define GLE_COLOR_ALICEBLUE 0x01F0F8FF #define GLE_COLOR_ANTIQUEWHITE 0x01FAEBD7 #define GLE_COLOR_AQUA 0x0100FFFF #define GLE_COLOR_AQUAMARINE 0x017FFFD4 #define GLE_COLOR_AZURE 0x01F0FFFF #define GLE_COLOR_BEIGE 0x01F5F5DC #define GLE_COLOR_BISQUE 0x01FFE4C4 #define GLE_COLOR_BLACK 0x01000000 #define GLE_COLOR_BLANCHEDALMOND 0x01FFEBCD #define GLE_COLOR_BLUE 0x010000FF #define GLE_COLOR_BLUEVIOLET 0x018A2BE2 #define GLE_COLOR_BROWN 0x01A52A2A #define GLE_COLOR_BURLYWOOD 0x01DEB887 #define GLE_COLOR_CADETBLUE 0x015F9EA0 #define GLE_COLOR_CHARTREUSE 0x017FFF00 #define GLE_COLOR_CHOCOLATE 0x01D2691E #define GLE_COLOR_CORAL 0x01FF7F50 #define GLE_COLOR_CORNFLOWERBLUE 0x016495ED #define GLE_COLOR_CORNSILK 0x01FFF8DC #define GLE_COLOR_CRIMSON 0x01DC143C #define GLE_COLOR_CYAN 0x0100FFFF #define GLE_COLOR_DARKBLUE 0x0100008B #define GLE_COLOR_DARKCYAN 0x01008B8B #define GLE_COLOR_DARKGOLDENROD 0x01B8860B #define GLE_COLOR_DARKGRAY 0x01A9A9A9 #define GLE_COLOR_DARKGREEN 0x01006400 #define GLE_COLOR_DARKKHAKI 0x01BDB76B #define GLE_COLOR_DARKMAGENTA 0x018B008B #define GLE_COLOR_DARKOLIVEGREEN 0x01556B2F #define GLE_COLOR_DARKORANGE 0x01FF8C00 #define GLE_COLOR_DARKORCHID 0x019932CC #define GLE_COLOR_DARKRED 0x018B0000 #define GLE_COLOR_DARKSALMON 0x01E9967A #define GLE_COLOR_DARKSEAGREEN 0x018FBC8F #define GLE_COLOR_DARKSLATEBLUE 0x01483D8B #define GLE_COLOR_DARKSLATEGRAY 0x012F4F4F #define GLE_COLOR_DARKTURQUOISE 0x0100CED1 #define GLE_COLOR_DARKVIOLET 0x019400D3 #define GLE_COLOR_DEEPPINK 0x01FF1493 #define GLE_COLOR_DEEPSKYBLUE 0x0100BFFF #define GLE_COLOR_DIMGRAY 0x01696969 #define GLE_COLOR_DODGERBLUE 0x011E90FF #define GLE_COLOR_FIREBRICK 0x01B22222 #define GLE_COLOR_FLORALWHITE 0x01FFFAF0 #define GLE_COLOR_FORESTGREEN 0x01228B22 #define GLE_COLOR_FUCHSIA 0x01FF00FF #define GLE_COLOR_GAINSBORO 0x01DCDCDC #define GLE_COLOR_GHOSTWHITE 0x01F8F8FF #define GLE_COLOR_GOLD 0x01FFD700 #define GLE_COLOR_GOLDENROD 0x01DAA520 #define GLE_COLOR_GRAY 0x01808080 #define GLE_COLOR_GREEN 0x01008000 #define GLE_COLOR_GREENYELLOW 0x01ADFF2F #define GLE_COLOR_HONEYDEW 0x01F0FFF0 #define GLE_COLOR_HOTPINK 0x01FF69B4 #define GLE_COLOR_INDIANRED 0x01CD5C5C #define GLE_COLOR_INDIGO 0x014B0082 #define GLE_COLOR_IVORY 0x01FFFFF0 #define GLE_COLOR_KHAKI 0x01F0E68C #define GLE_COLOR_LAVENDER 0x01E6E6FA #define GLE_COLOR_LAVENDERBLUSH 0x01FFF0F5 #define GLE_COLOR_LAWNGREEN 0x017CFC00 #define GLE_COLOR_LEMONCHIFFON 0x01FFFACD #define GLE_COLOR_LIGHTBLUE 0x01ADD8E6 #define GLE_COLOR_LIGHTCORAL 0x01F08080 #define GLE_COLOR_LIGHTCYAN 0x01E0FFFF #define GLE_COLOR_LIGHTGOLDENRODYELLOW 0x01FAFAD2 #define GLE_COLOR_LIGHTGRAY 0x01D3D3D3 #define GLE_COLOR_LIGHTGREEN 0x0190EE90 #define GLE_COLOR_LIGHTPINK 0x01FFB6C1 #define GLE_COLOR_LIGHTSALMON 0x01FFA07A #define GLE_COLOR_LIGHTSEAGREEN 0x0120B2AA #define GLE_COLOR_LIGHTSKYBLUE 0x0187CEFA #define GLE_COLOR_LIGHTSLATEGRAY 0x01778899 #define GLE_COLOR_LIGHTSTEELBLUE 0x01B0C4DE #define GLE_COLOR_LIGHTYELLOW 0x01FFFFE0 #define GLE_COLOR_LIME 0x0100FF00 #define GLE_COLOR_LIMEGREEN 0x0132CD32 #define GLE_COLOR_LINEN 0x01FAF0E6 #define GLE_COLOR_MAGENTA 0x01FF00FF #define GLE_COLOR_MAROON 0x01800000 #define GLE_COLOR_MEDIUMAQUAMARINE 0x0166CDAA #define GLE_COLOR_MEDIUMBLUE 0x010000CD #define GLE_COLOR_MEDIUMORCHID 0x01BA55D3 #define GLE_COLOR_MEDIUMPURPLE 0x019370DB #define GLE_COLOR_MEDIUMSEAGREEN 0x013CB371 #define GLE_COLOR_MEDIUMSLATEBLUE 0x017B68EE #define GLE_COLOR_MEDIUMSPRINGGREEN 0x0100FA9A #define GLE_COLOR_MEDIUMTURQUOISE 0x0148D1CC #define GLE_COLOR_MEDIUMVIOLETRED 0x01C71585 #define GLE_COLOR_MIDNIGHTBLUE 0x01191970 #define GLE_COLOR_MINTCREAM 0x01F5FFFA #define GLE_COLOR_MISTYROSE 0x01FFE4E1 #define GLE_COLOR_MOCCASIN 0x01FFE4B5 #define GLE_COLOR_NAVAJOWHITE 0x01FFDEAD #define GLE_COLOR_NAVY 0x01000080 #define GLE_COLOR_OLDLACE 0x01FDF5E6 #define GLE_COLOR_OLIVE 0x01808000 #define GLE_COLOR_OLIVEDRAB 0x016B8E23 #define GLE_COLOR_ORANGE 0x01FFA500 #define GLE_COLOR_ORANGERED 0x01FF4500 #define GLE_COLOR_ORCHID 0x01DA70D6 #define GLE_COLOR_PALEGOLDENROD 0x01EEE8AA #define GLE_COLOR_PALEGREEN 0x0198FB98 #define GLE_COLOR_PALETURQUOISE 0x01AFEEEE #define GLE_COLOR_PALEVIOLETRED 0x01DB7093 #define GLE_COLOR_PAPAYAWHIP 0x01FFEFD5 #define GLE_COLOR_PEACHPUFF 0x01FFDAB9 #define GLE_COLOR_PERU 0x01CD853F #define GLE_COLOR_PINK 0x01FFC0CB #define GLE_COLOR_PLUM 0x01DDA0DD #define GLE_COLOR_POWDERBLUE 0x01B0E0E6 #define GLE_COLOR_PURPLE 0x01800080 #define GLE_COLOR_RED 0x01FF0000 #define GLE_COLOR_ROSYBROWN 0x01BC8F8F #define GLE_COLOR_ROYALBLUE 0x014169E1 #define GLE_COLOR_SADDLEBROWN 0x018B4513 #define GLE_COLOR_SALMON 0x01FA8072 #define GLE_COLOR_SANDYBROWN 0x01F4A460 #define GLE_COLOR_SEAGREEN 0x012E8B57 #define GLE_COLOR_SEASHELL 0x01FFF5EE #define GLE_COLOR_SIENNA 0x01A0522D #define GLE_COLOR_SILVER 0x01C0C0C0 #define GLE_COLOR_SKYBLUE 0x0187CEEB #define GLE_COLOR_SLATEBLUE 0x016A5ACD #define GLE_COLOR_SLATEGRAY 0x01708090 #define GLE_COLOR_SNOW 0x01FFFAFA #define GLE_COLOR_SPRINGGREEN 0x0100FF7F #define GLE_COLOR_STEELBLUE 0x014682B4 #define GLE_COLOR_TAN 0x01D2B48C #define GLE_COLOR_TEAL 0x01008080 #define GLE_COLOR_THISTLE 0x01D8BFD8 #define GLE_COLOR_TOMATO 0x01FF6347 #define GLE_COLOR_TURQUOISE 0x0140E0D0 #define GLE_COLOR_VIOLET 0x01EE82EE #define GLE_COLOR_WHEAT 0x01F5DEB3 #define GLE_COLOR_WHITE 0x01FFFFFF #define GLE_COLOR_WHITESMOKE 0x01F5F5F5 #define GLE_COLOR_YELLOW 0x01FFFF00 #define GLE_COLOR_YELLOWGREEN 0x019ACD32 // Gray values #define GLE_COLOR_GRAY1 0x01FDFDFD #define GLE_COLOR_GRAY5 0x01F0F0F0 #define GLE_COLOR_GRAY10 0x01C8C8C8 #define GLE_COLOR_GRAY20 0x01AFAFAF #define GLE_COLOR_GRAY30 0x01969696 #define GLE_COLOR_GRAY40 0x017D7D7D #define GLE_COLOR_GRAY50 0x01646464 #define GLE_COLOR_GRAY60 0x014B4B4B #define GLE_COLOR_GRAY70 0x01323232 #define GLE_COLOR_GRAY80 0x01191919 #define GLE_COLOR_GRAY90 0x01060606 #endif gle-graphics-4.2.4c/src/gle/gprint.cpp0000664000000000000000000001301211447333240016274 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ #include "all.h" #include "file_io.h" #include "gle-interface/gle-interface.h" #include "core.h" typedef double dbl; //#ifndef unix #include //#endif #include "gprint.h" #include "cutils.h" char *line(int i); #define false 0 #define true (!false) int this_line = -1; int g_error_col = -1; int last_line = -1; extern int trace_on; bool new_error = true; extern int ngerror; void gprint_send(const char* ss); void gprint_send(const string& output); void check_new_error(); extern GLEGlobalSource* g_Source; #ifdef __UNIX__ void gprint(const char* arg_list, ...) #else void gprint(va_list arg_list, ...) #endif /* Prints an error message */ { va_list arg_ptr; char *format; char output[1024]; va_start(arg_ptr, arg_list); format = (char*)arg_list; vsprintf(output, format, arg_ptr); output[1023] = 0; check_new_error(); gprint_send(output); g_set_error_column(-1); } void gprint(const string& output) { check_new_error(); gprint_send(output); g_set_error_column(-1); } void check_new_error() { if (new_error) { ngerror++; if (last_line != this_line && this_line != -1 && !trace_on && g_Source != NULL) { GLEErrorMessage err; int errorLine = this_line-1; if (errorLine >= 0 && errorLine < g_Source->getNbLines()) { GLESourceLine* line = g_Source->getLine(errorLine); err.setLine(line->getLineNo()); err.setColumn(g_error_col); err.setFile(line->getFileName()); ostringstream ss; err.setDelta(line->showLineAbbrev(ss, g_error_col)); err.setLineAbbrev(ss.str()); } else { // to prevent crash in case of incorrect line number err.setLine(this_line); err.setColumn(g_error_col); ostringstream ss; ss << "can't derive source file for internal line #" << this_line; err.setLineAbbrev(ss.str()); } GLEInterface* iface = GLEGetInterfacePointer(); iface->getOutput()->error(&err); } last_line = this_line; new_error = false; } } void gprint_send(const char *ss) { string output = ss; gprint_send(output); } /* No new error if does not end in \n */ void gprint_send(const string& output) { string strg = output; string::size_type pos = strg.find('\n'); while (pos != string::npos) { string part = strg.substr(0, pos); g_message((char*)part.c_str()); string::size_type len = strg.length(); strg = strg.substr(pos+1, len-pos); pos = strg.find('\n'); } if (gle_onlyspace(strg)) { new_error = true; } else { g_message((char*)strg.c_str()); } } void reset_new_error(bool val) { new_error = val; } int get_nb_errors() { return ngerror; } void inc_nb_errors() { ngerror++; } void g_set_error_column(int col) { g_error_col = col; } void g_set_error_line(int lin) { this_line = lin; } int g_get_error_line() { return this_line; } gle-graphics-4.2.4c/src/gle/gle-poppler.h0000664000000000000000000000755611652073536016713 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ #ifndef INCLUDE_GLE_POPPLER_H #define INCLUDE_GLE_POPPLER_H #define GLE_OUTPUT_OPTION_TRANSPARENT 1 #define GLE_OUTPUT_OPTION_GRAYSCALE 2 typedef void (*gle_write_func)(void* closure, char* data, int length); void gle_glib_init(int argc, char** argv); void gle_convert_pdf_to_image(char* pdfData, int pdfLength, double resolution, int device, int options, gle_write_func writeFunc, void* closure); #ifdef HAVE_CAIRO #include void gle_write_cairo_surface_bitmap(cairo_surface_t* surface, int device, int options, gle_write_func writeFunc, void* closure); #ifdef HAVE_POPPLER void gle_convert_pdf_to_image_file(char* pdfData, int pdfLength, double resolution, int device, int options, const char* fname); #endif // HAVE_POPPLER #endif // HAVE_CAIRO #endif // INCLUDE_GLE_POPPLER_H gle-graphics-4.2.4c/src/gle/key.cpp0000664000000000000000000006654111722434562015605 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ #include "all.h" #include "mem_limits.h" #include "token.h" #include "cutils.h" #include "core.h" #include "glearray.h" #include "polish.h" #include "pass.h" #include "gle-block.h" #include "key.h" #include "justify.h" #include "color.h" #include "gprint.h" #include "op_def.h" #include "var.h" #include "sub.h" /* for key command and gx(), gy() */ extern double graph_x1,graph_y1,graph_x2,graph_y2; /* in cm */ extern double graph_xmin,graph_ymin,graph_xmax,graph_ymax; /* graph units */ #define BEGINDEF extern #include "begin.h" #include #define dbg if ((gle_debug & 64)>0) #define LARGE_NUM 1E30 char *un_quote(char *ct); extern int gle_debug; void doskip(char *s,int *ct); double get_next_exp(TOKENS tk,int ntk,int *curtok); #define kw(ss) if (str_i_equals(tk[ct],ss)) #define true (!false) #define false 0 #define skipspace doskip(tk[ct],&ct) #define tok(n) (*tk)[n] #define next_exp (get_next_exp(tk,ntk,&ct)) #define next_font ((ct+=1),pass_font(tk[ct])) #define next_marker ((ct+=1),pass_marker(tk[ct])) #define next_color ((ct+=1),pass_color_var(tk[ct])) #define next_fill ((ct+=1),pass_color_var(tk[ct])) #define next_str(s) (ct+=1,strcpy(s,tk[ct])) #define next_vstr(s) (ct+=1,mystrcpy(&s,tk[ct])) #define next_quote(s) (ct+=1,strcpy(&s,un_quote(tk[ct]))) #define next_vquote_cpp(s) (ct+=1,skipspace,pass_file_name(tk[ct],s)) #define KEY_FILL_HEI_FY 0.66 #define KEY_FILL_HEI_FX 0.7 class ParseGeneralKeyInfo { public: ParseGeneralKeyInfo() { GLESubDefinitionHelper passKeyInfo("key"); offset = passKeyInfo.addPointArgument("offset", new GLEPointDataObject(0.0, 0.0), false); margins = passKeyInfo.addPointArgument("margins", new GLEPointDataObject(0.0, 0.0), false); absolute = passKeyInfo.addPointArgument("absolute", 0, false); // background = passKeyInfo.addPointArgument("background", GLE_FILL_CLEAR, false); base = passKeyInfo.addDoubleArgumentNoDefault("base", false); passKeyInfo.addArgumentAlias(base, "row"); linepos = passKeyInfo.addDoubleArgumentNoDefault("lpos", false); linelen = passKeyInfo.addDoubleArgumentNoDefault("llen", false); /* else kw("NOBOX") info.setNoBox(true); else kw("NOLINE") info.setNoLines(true); else kw("COMPACT") info.setCompact(true); else kw("OFF") info.setDisabled(true); else kw("HEI") khei = next_exp; else kw("POSITION") next_str(info.getJustify()); else kw("POS") next_str(info.getJustify()); else kw("BOXCOLOR") info.setBoxColor(next_color); else kw("SEPARATOR") { */ } public: unsigned int offset; unsigned int margins; unsigned int absolute; unsigned int background; unsigned int base; unsigned int linepos; unsigned int linelen; }; class GLEKeyBlockInstance : public GLEBlockInstance { public: GLEKeyBlockInstance(GLEKeyBlockBase* parent); virtual ~GLEKeyBlockInstance(); virtual void executeLine(GLESourceLine& sline); virtual void endExecuteBlock(); private: KeyInfo m_info; bool m_hasPattern; }; GLEKeyBlockInstance::GLEKeyBlockInstance(GLEKeyBlockBase* parent): GLEBlockInstance(parent), m_hasPattern(false) { } GLEKeyBlockInstance::~GLEKeyBlockInstance() { } void GLEKeyBlockInstance::executeLine(GLESourceLine& sline) { double zzhei; g_get_hei(&zzhei); begin_init(); int st = begin_token(sline, srclin, tk, &ntk, outbuff, true); if (!st) { /* exit loop */ return; } /* line count variable*/ int ct = 1; KeyEntry* entry = m_info.lastEntry(); while (ct <= ntk) { skipspace; kw("OFFSET") { m_info.setOffsetX(next_exp); m_info.setOffsetY(next_exp); } else kw("MARGINS") { double mx = next_exp; double my = next_exp; m_info.setMarginXY(mx, my); } else kw("ABSOLUTE") { if (ct <= ntk-1) { m_info.setOffsetX(next_exp); m_info.setOffsetY(next_exp); } m_info.setAbsolute(true); } else if (!m_hasPattern && str_i_equals(tk[ct],"BACKGROUND")) m_info.setBackgroundColor(next_color); else kw("ROW") m_info.setBase(next_exp); else kw("BASE") m_info.setBase(next_exp); else kw("LPOS") m_info.setLinePos(next_exp); else kw("LLEN") m_info.setLineLen(next_exp); else kw("NOBOX") m_info.setNoBox(true); else kw("NOLINE") m_info.setNoLines(true); else kw("COMPACT") m_info.setCompact(true); else kw("OFF") m_info.setDisabled(true); else kw("HEI") m_info.setHei(next_exp); else kw("POSITION") next_str(m_info.getJustify()); else kw("POS") next_str(m_info.getJustify()); else kw("BOXCOLOR") m_info.setBoxColor(next_color); else kw("SEPARATOR") { if (entry == 0) { g_throw_parser_error("key: 'separator' should come after a valid key entry"); } else { ct++; kw("LSTYLE") { entry->sepstyle = (int)floor(next_exp + 0.5); } else { ct--; } m_info.addColumn(); } } else kw("JUSTIFY") { next_str(m_info.getJustify()); m_info.setPosOrJust(false); } else kw("JUST") { next_str(m_info.getJustify()); m_info.setPosOrJust(false); } else kw("DIST") m_info.setDist(next_exp); else kw("COLDIST") m_info.setColDist(next_exp); else { if (ct == 1) { entry = m_info.createEntry(); } if (entry == 0) { return; } kw("TEXT") { next_vquote_cpp(entry->descrip); if (g_get_tex_labels()) { entry->descrip.insert(0, "\\tex{"); entry->descrip.append("}"); } } else kw("MARKER") { entry->marker = next_marker; } else kw("MSIZE") entry->msize = next_exp; else kw("MSCALE") entry->msize = (next_exp) * zzhei; else kw("COLOR") entry->color = next_color; else kw("FILL") { GLERC fillColor(next_fill); update_color_foreground(entry->fill.get(), fillColor.get()); } else kw("PATTERN") { GLERC fillPattern(next_fill); if (fillPattern->isFill() && fillPattern->getFill()->getFillType() == GLE_FILL_TYPE_PATTERN) { update_color_fill_pattern(entry->fill.get(), static_cast(fillPattern->getFill())); } else { g_throw_parser_error("expected fill pattern"); } } else kw("BACKGROUND") { GLERC backColor(next_fill); update_color_fill_background(entry->fill.get(), backColor.get()); } else kw("LSTYLE") next_str(entry->lstyle); else kw("LINE") strcpy(entry->lstyle, "1"); else kw("LWIDTH") entry->lwidth = next_exp; else g_throw_parser_error("unrecognised KEY sub command: '", tk[ct], "'"); } ct++; } } void GLEKeyBlockInstance::endExecuteBlock() { draw_key(&m_info); } GLEKeyBlockBase::GLEKeyBlockBase(): GLEBlockWithSimpleKeywords("key", false) { const char* commands[] = { "OFFSET", "MARGINS", "ABSOLUTE", "BACKGROUND", "ROW", "BASE", "LPOS", "LLEN", "NOBOX", "NOLINE", "COMPACT", "OFF", "HEI", "POSITION", "POS", "BOXCOLOR", "SEPARATOR", "LSTYLE", "JUSTIFY", "JUST", "DIST", "COLDIST", "TEXT", "MARKER", "MSIZE", "MSCALE", "COLOR", "FILL", "PATTERN", "LINE", "LWIDTH", ""}; for (int i = 0; commands[i][0] != 0; ++i) { addKeyWord(commands[i]); } } GLEKeyBlockBase::~GLEKeyBlockBase() { } GLEBlockInstance* GLEKeyBlockBase::beginExecuteBlockImpl(GLESourceLine& /* sline */, int* /* pcode */, int* /* cp */) { return new GLEKeyBlockInstance(this); } KeyRCInfo::KeyRCInfo() { size = 0.0; offs = 0.0; descent = 0.0; elems = 0; mleft = 0.0; mright = 0.0; m_Line = false; m_Marker = false; m_Fill = false; } KeyRCInfo::KeyRCInfo(const KeyRCInfo& other) { size = other.size; offs = other.offs; descent = other.descent; elems = other.elems; mleft = other.mleft; mright = other.mright; m_Line = other.m_Line; m_Marker = other.m_Marker; m_Fill = other.m_Fill; } KeyInfo::KeyInfo() { m_MaxRow = 0; m_NoBox = false; m_Fill = false; m_MarginX = -1e30; m_MarginY = -1e30; m_Hei = 0.0; m_Base = 0.0; m_TotHei = 0.0; m_ColDist = -1e30; m_Dist = -1e30; m_LinePos = -1e30; m_LineLen = -1e30; m_OffsX = 0.0; m_OffsY = 0.0; m_PosOrJust = true; m_Absolute = false; m_HasOffset = false; m_HasBoxColor = false; m_Compact = false; m_NoLines = false; m_Disabled = false; m_BoxColor = 0; m_ExtraY = 0.0; m_BackgroundColor = g_get_fill_clear(); m_col = 0; strcpy(m_Justify, ""); } KeyInfo::~KeyInfo() { for (size_t i = 0; i < m_entries.size(); ++i) { delete m_entries[i]; } } void KeyInfo::setOffsetX(double x) { m_OffsX = x; m_HasOffset = true; } void KeyInfo::setOffsetY(double y) { m_OffsY = y; m_HasOffset = true; } void KeyInfo::setBoxColor(const GLERC& col) { m_BoxColor = col; m_HasBoxColor = true; } void KeyInfo::initPosition() { if (m_Justify[0] == 0) { // no justify or position given if (hasOffset()) { strcpy(m_Justify, "BL"); setPosOrJust(false); } else { strcpy(m_Justify, "TR"); setPosOrJust(true); } } } KeyRCInfo* KeyInfo::expandToCol(int col) { while ((int)m_ColInfo.size() <= col) { m_ColInfo.push_back(KeyRCInfo()); } return &m_ColInfo[col]; } void KeyInfo::expandToRow(int row) { while ((int)m_RowInfo.size() <= row) { m_RowInfo.push_back(KeyRCInfo()); } } KeyEntry* KeyInfo::createEntry() { KeyEntry* entry = new KeyEntry(m_col); m_entries.push_back(entry); return entry; } KeyEntry* KeyInfo::lastEntry() { if (m_entries.empty()) { return 0; } else { return m_entries.back(); } } void draw_key(KeyInfo* info) { if (info->getNbEntries() == 0) { return; } GLEPoint savept; g_get_xy(&savept); if (info->getBackgroundColor()->isTransparent()) { info->setBackgroundColor(g_get_color_hex(GLE_COLOR_WHITE)); } measure_key(info); draw_key_after_measure(info); g_move(savept); } void measure_key_v_recent(KeyInfo* info, GLEPoint* orig) { /* Add separator dist */ for (int i = 0; i < info->getNbEntries(); i++) { info->getCol(info->getEntry(i)->column)->size += info->getEntry(i)->sepdist; } /* Compute sum of column widths and max number of rows */ int maxrow = 0; double sumwid = 0.0; for (int i = 0; i < info->getNbCols(); i++) { sumwid += info->getCol(i)->size; if (info->getCol(i)->elems > maxrow) maxrow = info->getCol(i)->elems; } info->setMaxRow(maxrow); /* Initialize offsets for each column */ double rowhi = info->getBase(); info->getCol(0)->offs = 0.0; for (int i = 1; i < info->getNbCols(); i++) { double entry_wd = 0.0; KeyRCInfo* prev_col = info->getCol(i-1); if (prev_col->hasLine() && !info->isCompact() && !info->isNoLines()) { entry_wd += info->getLineLen() + info->getDist(); } if (prev_col->hasMarker()) entry_wd += info->getDist(); if (prev_col->hasFill()) entry_wd += KEY_FILL_HEI_FX*rowhi + info->getDist(); info->getCol(i)->offs = prev_col->offs + prev_col->size + entry_wd + info->getColDist() + prev_col->mleft + prev_col->mright; } /* Initialize offsets for each row */ double rowoffs = 0.0; for (int i = info->getNbRows()-2; i >= 0; i--) { double prev_rowhi = info->getRow(i)->descent * 1.3 + info->getRow(i+1)->size * 1.1; if (rowhi > prev_rowhi) prev_rowhi = rowhi; rowoffs += prev_rowhi; info->getRow(i)->offs = rowoffs; } /* Measure entire key */ GLEMeasureBox measure; measure.measureStart(); do_draw_key(0.0, 0.0, true, info); measure.measureEnd(); double sx = measure.getWidth()+2*info->getMarginX(); double sy = measure.getHeight()+2*info->getMarginY(); info->setTotalHei(sy); info->setExtraY(0.0); // Make sure text does not go out of box double b_descent = info->getRow(info->getNbRows()-1)->descent; if (b_descent * 1.3 > info->getMarginY()) { info->setExtraY(b_descent * 1.3 - info->getMarginY()); sy += info->getExtraY(); } double ox, oy; double dx = info->getOffsetX(); double dy = info->getOffsetY(); if (info->isPosOrJust()) { /* Relative to graph */ double midx = graph_x1 + (graph_x2-graph_x1)/2; double midy = graph_y1 + (graph_y2-graph_y1)/2; if (dx < 0.0) dx = dx-sx; if (dy < 0.0) dy = dy-sy; if (str_i_equals(info->getJustify(),"TL")) { ox = graph_x1+dx; oy = graph_y2-sy-dy; } else if (str_i_equals(info->getJustify(),"BL")) { ox = graph_x1+dx; oy = graph_y1+dy; } else if (str_i_equals(info->getJustify(),"BR")) { ox = graph_x2-sx-dx; oy = graph_y1+dy; } else if (str_i_equals(info->getJustify(),"TR")) { ox = graph_x2-sx-dx; oy = graph_y2-sy-dy; } else if (str_i_equals(info->getJustify(),"TC")) { ox = midx-sx/2+dx; oy = graph_y2-sy-dy; } else if (str_i_equals(info->getJustify(),"BC")) { ox = midx-sx/2+dx; oy = graph_y1+dy; } else if (str_i_equals(info->getJustify(),"RC")) { ox = graph_x2-sx-dx; oy = midy-sy/2+dy; } else if (str_i_equals(info->getJustify(),"LC")) { ox = graph_x1+dx; oy = midy-sy/2+dy; } else if (str_i_equals(info->getJustify(),"CC")) { ox = midx-sx/2+dx; oy = midy-sy/2+dy; } else { if (strlen(info->getJustify())>0) gprint("Expecting POS BL,BR,TR or TL\n"); ox = graph_x2-sx; oy = graph_y2-sy; } } else { ox = dx; oy = dy; if (!info->isAbsolute()) { ox += orig->getX(); oy += orig->getY(); } /* Support different relative positions for offset command */ if (str_i_equals(info->getJustify(),"TL")) { oy -= sy; } else if (str_i_equals(info->getJustify(),"BR")) { ox -= sx; } else if (str_i_equals(info->getJustify(),"TR")) { ox -= sx; oy -= sy; } else if (str_i_equals(info->getJustify(),"TC")) { ox -= sx/2; oy -= sy; } else if (str_i_equals(info->getJustify(),"BC")) { ox -= sx/2; } else if (str_i_equals(info->getJustify(),"RC")) { ox -= sx; oy -= sy/2; } else if (str_i_equals(info->getJustify(),"LC")) { oy -= sy/2; } else if (str_i_equals(info->getJustify(),"CC")) { ox -= sx/2; oy -= sy/2; } } info->getRect()->setDimensions(ox, oy, ox+sx, oy+sy); info->getComputedMargins()->setXY(info->getMarginX()-measure.getXMin(), info->getMarginY()-measure.getYMin()); } void measure_key_v35(KeyInfo* info, GLEPoint* orig) { double sx = 0; double cr = info->getBase(); KeyRCInfo* col_info = info->getCol(0); if (col_info->hasLine()) sx = sx + 2*cr; if (col_info->hasMarker()) sx = sx + 1.5*cr; if (col_info->hasFill()) sx = sx + 1.3*cr; sx = sx + col_info->size; sx = sx + 1.2*cr; double sy = info->getNbEntries()*cr + 1.2*cr-0.3*info->getHei(); double ox, oy; if (!info->hasOffset()) { double midx = graph_x1 + (graph_x2-graph_x1)/2; double midy = graph_y1 + (graph_y2-graph_y1)/2; if (str_i_equals(info->getJustify(),"TL")) {ox = graph_x1;oy = graph_y2-sy;} else if (str_i_equals(info->getJustify(),"BL")) {ox = graph_x1; oy = graph_y1;} else if (str_i_equals(info->getJustify(),"BR")) {ox = graph_x2-sx;oy = graph_y1;} else if (str_i_equals(info->getJustify(),"TR")) {ox = graph_x2-sx; oy = graph_y2-sy;} else if (str_i_equals(info->getJustify(),"TC")) {ox = midx-sx/2; oy = graph_y2-sy;} else if (str_i_equals(info->getJustify(),"BC")) {ox = midx-sx/2; oy = graph_y1;} else if (str_i_equals(info->getJustify(),"RC")) {ox = graph_x2-sx; oy = midy-sy/2;} else if (str_i_equals(info->getJustify(),"LC")) {ox = graph_x1; oy = midy-sy/2;} else if (str_i_equals(info->getJustify(),"CC")) {ox = midx-sx/2; oy = midy-sy/2;} else { if (strlen(info->getJustify())>0) gprint("Expecting POS BL,BR,TR or TL\n"); ox = graph_x2-sx; oy = graph_y2-sy; } } else { ox = orig->getX() + info->getOffsetX(); oy = orig->getY() + info->getOffsetY(); } info->getRect()->setDimensions(ox, oy, ox+sx, oy+sy); } void do_draw_key_v35(double ox, double oy, KeyInfo* info){ double cr = info->getBase(); KeyRCInfo* col_info = info->getCol(0); g_set_hei(info->getHei()); for (int i = info->getNbEntries() - 1; i >= 0; i--) { KeyEntry* entry = info->getEntry(i); g_move(ox+0.6*cr, oy+0.6*cr+cr*(info->getNbEntries()-i-1)); if (!entry->color.isNull()) { g_set_color(entry->color); } if (col_info->hasMarker()) { g_rmove(cr/2, info->getHei()*.35); double z = entry->msize; if (z==0) z = info->getHei(); if (entry->marker!=0) g_marker(entry->marker, z); g_rmove(cr, -info->getHei()*.35); } if (col_info->hasLine()) { double savelw; g_set_line_style(entry->lstyle); g_get_line_width(&savelw); g_set_line_width(entry->lwidth); g_rmove(0.0, cr*.3); if (entry->lstyle[0] == 0) g_rmove(1.5*cr, 0.0); else g_rline(1.5*cr, 0.0); g_rmove(cr/2, -cr*.3); g_set_line_style("1"); g_set_line_width(savelw); } if (col_info->hasFill()) { if (entry->hasFill()) { g_set_fill(entry->fill); double cx, cy; g_get_xy(&cx,&cy); g_box_fill(cx,cy,cx+cr*.7, cy+cr*.66); g_box_stroke(cx,cy,cx+cr*.7, cy+cr*.66); } g_rmove(1.3*cr, 0.0); } if (!entry->color.isNull()) { g_set_color(info->getDefaultColor()); } g_set_just(JUST_LEFT); if (entry->descrip != "") g_text((char*)entry->descrip.c_str()); } } void measure_key(KeyInfo* info) { GLEPoint orig; double save_hei; GLERectangle save_bounds; /* Initialize */ info->initPosition(); g_get_xy(&orig); GLERC old_color(g_get_color()); GLERC old_fill(g_get_fill()); g_get_hei(&save_hei); g_get_bounds(&save_bounds); if (!info->hasHei()) { info->setHei(save_hei); } double khei = info->getHei(); if (!info->hasBase()) { info->setBase(1.2*khei); } double rowhi = info->getBase(); info->setDefaultColor(old_color); /* Init margins */ double margin_x = 0.45*rowhi; double margin_y = 0.45*rowhi; if (info->hasMargins()) { margin_x = info->getMarginX(); margin_y = info->getMarginY(); } else { info->setMarginXY(margin_x, margin_y); } if (!info->hasColDist()) { info->setColDist(margin_x); } if (!info->hasDist()) { info->setDist(margin_x * 0.85); } if (!info->hasLineLen()) { info->setLineLen(1.5*rowhi); } /* Use fill somewhere? */ for (int i = 0; i < info->getNbEntries(); i++) { if (info->getEntry(i)->hasFill()) { info->setHasFill(true); } } /* Empty key? */ if (info->getNbEntries() == 0) { return; } /* Use dummy device for measurements */ GLEDevice* old_device = g_set_dummy_device(); /* Measure all labels and count rows in each column */ g_set_hei(khei); // cout << "key height: " << khei << endl; double linePos = GLE_INF; for (int i = 0; i < info->getNbEntries(); i++) { KeyEntry* entry = info->getEntry(i); int col = entry->column; KeyRCInfo* colinfo = info->expandToCol(col); int row = colinfo->elems; info->expandToRow(row); if (!str_only_space(entry->descrip)) { double bl, br, bu, bd; g_measure(entry->descrip,&bl,&br,&bu,&bd); if (colinfo->size < br) colinfo->size = br; if (-bd > info->getRow(row)->descent) info->getRow(row)->descent = -bd; // size should not include descent, only ascent of the text if (bu > info->getRow(row)->size) info->getRow(row)->size = bu; // cout << "key = " << entry->descrip << " bl = " << bl << " br = " << br << " bu = " << bu << " bd = " << bd << endl; if (bu/2 < linePos) linePos = bu/2; } /* Set booleans: kl = lstyle, km = marker, kf = fill */ if (entry->lstyle[0] == 0 && entry->lwidth > 0) { strcpy(entry->lstyle, "1"); } if (entry->lstyle[0] != 0) colinfo->setHasLine(true); if (entry->lwidth > 0) colinfo->setHasLine(true); if (entry->marker != 0) colinfo->setHasMarker(true); if (entry->hasFill()) { colinfo->setHasFill(true); } /* Adjust row height in case of fill */ if (info->hasFill()) { if (rowhi*KEY_FILL_HEI_FY > info->getRow(row)->size) { // Row should have at least the height of the fill box info->getRow(row)->size = rowhi*KEY_FILL_HEI_FY; } } if (entry->marker != 0) { double z = entry->msize; if (z == 0) z = khei; GLEMeasureBox marksize; marksize.measureStart(); g_move(0.0, 0.0); g_marker(entry->marker,z); marksize.measureEnd(); if (info->isCompact() && !info->isNoLines()) { double yval = marksize.getYMin(); double llen = info->getLineLen(); marksize.updateRange(-llen/2, yval); marksize.updateRange(+llen/2, yval); } if (info->getCol(col)->mleft < -marksize.getXMin()) info->getCol(col)->mleft = -marksize.getXMin(); if (info->getCol(col)->mright < marksize.getXMax()) info->getCol(col)->mright = marksize.getXMax(); } else if (info->isCompact() && colinfo->hasLine() && !info->isNoLines()) { // compact mode, but no marker in this column! double llen = info->getLineLen(); if (info->getCol(col)->mleft < llen/2) info->getCol(col)->mleft = llen/2; if (info->getCol(col)->mright < llen/2) info->getCol(col)->mright = llen/2; colinfo->setHasMarker(true); } info->getCol(col)->elems++; } /* Set linePos based to half of the fill block */ if (info->hasFill()) { linePos = rowhi*KEY_FILL_HEI_FY/2; } if (!info->hasLinePos()) { // Baseline for text info->setLinePos(linePos); } if (g_get_compatibility() <= GLE_COMPAT_35) { g_restore_device(old_device); measure_key_v35(info, &orig); } else { measure_key_v_recent(info, &orig); g_restore_device(old_device); } g_set_bounds(&save_bounds); g_set_color(old_color); g_set_fill(old_fill); g_set_hei(save_hei); } void draw_key_after_measure(KeyInfo* info) { if (info->getNbEntries() == 0 || info->isDisabled()) { return; } double save_hei; g_get_hei(&save_hei); GLERC old_color(g_get_color()); GLERC old_fill(g_get_fill()); double ox = info->getRect()->getXMin(); double oy = info->getRect()->getYMin(); if (!info->getNoBox() && !info->getBackgroundColor()->isTransparent()) { g_set_fill(info->getBackgroundColor()); g_box_fill(info->getRect()); } if (g_get_compatibility() <= GLE_COMPAT_35) { do_draw_key_v35(ox, oy, info); } else { do_draw_key(ox+info->getComputedMargins()->getX(), oy+info->getComputedMargins()->getY()+info->getExtraY(), false, info); int prev_col = 0; for (int i = 0; i < info->getNbEntries(); i++) { if (prev_col != info->getEntry(i)->column) { prev_col = info->getEntry(i)->column; if (i >= 1 && info->getEntry(i - 1)->sepstyle != -1) { char msep[9]; // should implement g_set_line_style that takes int sprintf(msep, "%d", info->getEntry(i - 1)->sepstyle); g_set_line_style(msep); double xsep = ox+info->getComputedMargins()->getX()+info->getCol(prev_col)->offs-info->getColDist()/2; g_move(xsep, oy); g_line(xsep, info->getRect()->getYMax()); g_set_line_style("1"); } } } } if (!info->getNoBox()) g_box_stroke(info->getRect()); g_set_fill(old_fill); g_set_color(old_color); g_set_hei(save_hei); } void do_draw_key(double ox, double oy, bool notxt, KeyInfo* info) { double savelw; double cx, cy; /* Draw all labels */ int row = 0; int prev_col = 0; double khei = info->getHei(); double rowhi = info->getBase(); g_set_hei(khei); for (int i = 0; i < info->getNbEntries(); i++) { KeyEntry* entry = info->getEntry(i); if (prev_col != entry->column) { row = 0; prev_col = entry->column; } KeyRCInfo* col_info = info->getCol(prev_col); cx = ox+col_info->offs; cy = oy+info->getRow(row)->offs; g_move(cx, cy); g_update_bounds(cx, cy); if (!entry->color.isNull()) { g_set_color(entry->color); } if (col_info->hasMarker()) { g_rmove(col_info->mleft, info->getLinePos()); g_get_line_width(&savelw); g_set_line_width(entry->lwidth); if (col_info->hasLine() && info->isCompact() && !info->isNoLines() && entry->lstyle[0] != 0) { g_set_line_style(entry->lstyle); g_rmove(-info->getLineLen()/2, 0.0); g_rline(info->getLineLen(), 0.0); g_rmove(-info->getLineLen()/2, 0.0); g_set_line_style("1"); } if (entry->marker != 0) { double z = entry->msize; if (z == 0) z = khei; g_marker(entry->marker, z); } g_set_line_width(savelw); g_rmove(col_info->mright+info->getDist(),-info->getLinePos()); } if (col_info->hasLine() && !info->isCompact() && !info->isNoLines()) { g_set_line_style(entry->lstyle); g_get_line_width(&savelw); g_set_line_width(entry->lwidth); g_rmove(0.0,info->getLinePos()); if (entry->lstyle[0]==0) g_rmove(info->getLineLen(),0.0); else g_rline(info->getLineLen(),0.0); g_rmove(info->getDist(),-info->getLinePos()); g_set_line_style("1"); g_set_line_width(savelw); } if (!entry->color.isNull()) { g_set_color(info->getDefaultColor()); } if (col_info->hasFill()) { if (entry->hasFill()) { g_set_fill(entry->fill); g_get_xy(&cx,&cy); g_box_fill(cx,cy,cx+rowhi*KEY_FILL_HEI_FX, cy+rowhi*KEY_FILL_HEI_FY); GLERC save_color(g_get_color()); if (info->hasBoxColor()) { GLERC boxcolor = info->getBoxColor(); if (!boxcolor->isTransparent()) { g_set_color(boxcolor); g_box_stroke(cx,cy,cx+rowhi*KEY_FILL_HEI_FX, cy+rowhi*KEY_FILL_HEI_FY); g_set_color(save_color); } } else { g_box_stroke(cx,cy,cx+rowhi*KEY_FILL_HEI_FX, cy+rowhi*KEY_FILL_HEI_FY); } } g_rmove(KEY_FILL_HEI_FX*rowhi + info->getDist(), 0.0); } g_get_xy(&cx,&cy); if (!notxt) { g_set_just(JUST_LEFT); if (entry->descrip != "") g_text((char*)entry->descrip.c_str()); } else { g_update_bounds(cx+col_info->size, cy+info->getRow(row)->size); } row++; } } KeyEntry::KeyEntry(int col) { column = col; sepstyle = -1; sepdist = 0.0; lstyle[0] = 0; lwidth = 0.0; color = 0; marker = 0; msize = 0.0; fill = new GLEColor(); fill->setTransparent(true); } KeyEntry::~KeyEntry() { } bool KeyEntry::hasFill() const { return !fill.isNull() && !fill->isTransparent(); } gle-graphics-4.2.4c/src/gle/file_io.cpp0000664000000000000000000011534411656572360016424 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ #include "basicconf.h" #include #include #include #include #include #include #include #ifdef HAVE_SYS_PARAM_H #include #endif #ifdef __WIN32__ #include #include #include #include #include #include #endif #ifdef __CYGWIN__ #include #include #endif #ifdef __MACOS__ #include #endif #ifdef __UNIX__ #include #include #include #include #include #include #ifdef HAVE_SOCKETS #include #include #include typedef int SOCKET; #define SOCKET_ERROR -1 #endif #endif #if defined(__OS2__) && defined(__EMX__) #include #include #ifdef HAVE_SOCKETS #include #include #include typedef int SOCKET; #define SOCKET_ERROR -1 #endif #endif /* PATH_MAX is not defined on gnu-hurd */ #ifndef PATH_MAX #define PATH_MAX 8192 #endif using namespace std; #include "tokens/stokenizer.h" #include "file_io.h" #include "cutils.h" #ifdef __UNIX__ /* Cygwin too */ string PATH_SEP = ":"; string DIR_SEP = "/"; #endif #ifdef __WIN32__ string PATH_SEP = ";"; string DIR_SEP = "\\"; #endif #if defined(__OS2__) && defined(__EMX__) string PATH_SEP = ";"; string DIR_SEP = "/"; #endif string GLE_TOP_DIR; string GLE_BIN_DIR; bool GLEGetEnv(const string& name, string& result) { const char* env = getenv(name.c_str()); if (env == NULL) { result = ""; return false; } else { result = env; return true; } } // // -- directory finding routines // void FillIncludePaths(vector &IP) { // fills containor with paths to search for // file. This is called if it can't find file // in current directory // // Paths searched are: // %GLE_TOP% // %GLE_TOP%/gleinc // %GLE_USRLIB% // note that GLE_USERLIB can contain multiple // directories separated by ; (PC) or : (unix) // as defined in PATH_SEP // //printf("string paths for GLE_PATH\n"); string paths = GLE_TOP_DIR + DIR_SEP + "gleinc"; IP.push_back(paths); //printf("paths for GLE_USRLIB\n"); const char* usr_lib = getenv("GLE_USRLIB"); if (usr_lib != NULL) { paths = getenv("GLE_USRLIB"); GLEPathToVector(paths, &IP); } } void GLEPathToVector(const string& path, vector* vec) { char_separator sep(PATH_SEP.c_str()); tokenizer tokens(path, sep); while (tokens.has_more()) { string dir = tokens.next_token(); CorrectDirSepStrip(dir); vec->push_back(dir); } } bool GLEStreamContains(istream& strm, const char* msg) { string line; while (!strm.eof()) { getline(strm, line); if (str_i_str(line, msg) != -1) return true; } return false; } void StripDirSep(string& fname) { if (str_i_ends_with(fname, DIR_SEP.c_str())) { int nb = DIR_SEP.length(); fname.erase(fname.length()-nb, nb); } } void StripDirSepButNotRoot(string& fname) { if (str_i_ends_with(fname, DIR_SEP.c_str())) { if (fname == "/") { // don't strip unix root dir return; } int nb = DIR_SEP.length(); fname.erase(fname.length()-nb, nb); } } void CorrectDirSep(string& fname) { int len = fname.length(); char dirsep = DIR_SEP[0]; for (int i = 0; i < len; i++) { if (fname[i] == '/' || fname[i] == '\\') { fname[i] = dirsep; } } } void CorrectDirSepStrip(string& fname) { CorrectDirSep(fname); StripDirSepButNotRoot(fname); } void AddDirSep(string& fname) { string::size_type pos = fname.length(); if (pos >= 1) { if (fname[pos-1] != '/' && fname[pos-1] != '\\') { // only add if not already has one! fname += DIR_SEP; } } else { fname += DIR_SEP; } } string GLEAddRelPath(const string& base, int cd, const char* path) { string result = base; StripPathComponents(&result, cd); if (path != NULL && path[0] != 0) { AddDirSep(result); result += path; } return result; } bool GLEAddRelPathAndFileTry(const string& base, int cd, const char* path, const char* file, string& result) { result = GLEAddRelPath(base, cd, path); AddDirSep(result); result += file; return GLEFileExists(result); } bool IsAbsPath(const string& path) { if (path.length() >= 1) { if (path[0] == '/') { // Unix style absolute path return true; } if (path.length() >= 3) { if (path[1] == ':' && (path[2] == '/' || path[2] == '\\')) { // Windows style absolute path return true; } } } return false; } void GLENormalizePath(string& path) { char dir_sep = DIR_SEP[0]; string::size_type len = path.length(); string::size_type orig = 0; string::size_type dest = 0; while (orig < len) { if (path[orig] == '/' || path[orig] == '\\') { if (orig + 1 < len && (path[orig+1] == '/' || path[orig+1] == '\\')) { // found "//" -> skip orig++; } else if (orig + 2 < len && path[orig+1] == '.' && (path[orig+2] == '/' || path[orig+2] == '\\')) { // found "/./" -> skip orig += 2; } else if (orig + 3 < len && path[orig+1] == '.' && path[orig+2] == '.' && (path[orig+3] == '/' || path[orig+3] == '\\')) { // found "/../" -> skip + remove last directory orig += 3; if (dest > 0) dest--; // backup to last written character while (dest > 0 && path[dest] != '/' && path[dest] != '\\') { // as long as this is not path separator, go back dest--; } } else { orig++; path[dest++] = dir_sep; } } else { path[dest++] = path[orig++]; } } path.resize(dest); } void GLEGetFullPath(const string& dirname, const string& fname, string& fullpath) { if (IsAbsPath(fname)) { fullpath = fname; } else { fullpath = dirname; AddDirSep(fullpath); fullpath += fname; } GLENormalizePath(fullpath); } void FileNameDotToUnderscore(string& fname) { string::size_type pos = fname.length(); while (pos >= 1 && fname[pos-1] != '/' && fname[pos-1] != '\\') { if (fname[pos-1] == '.') fname[pos-1] = '_'; if (fname[pos-1] == ' ') fname[pos-1] = '_'; pos--; } } // Get extension of filename and convert it to lower case void GetExtension(const string& fname, string& ext) { string::size_type pos = fname.length(); // Never search to before "/" or "\\": file may not have extension // And don't find "." in path before file name while (pos >= 1 && fname[pos-1] != '/' && fname[pos-1] != '\\' && fname[pos-1] != '.' ) { pos--; } if (pos >= 1 && fname[pos-1] == '.') { ext = fname.substr(pos); gle_strlwr(ext); } else { ext = ""; } } // Get file name without extension void GetMainName(const string& fname, string& name) { string::size_type pos = fname.length(); // Never search to before "/" or "\\": file may not have extension // And don't find "." in path before file name while (pos >= 1 && fname[pos-1] != '/' && fname[pos-1] != '\\' && fname[pos-1] != '.' ) { pos--; } if (pos >= 1 && fname[pos-1] == '.') { name = fname.substr(0, pos-1); } else { name = fname; } } void GetMainNameExt(const string& fname, const char* ext, string& name) { if (str_i_ends_with(fname, ext)) { string::size_type pos = fname.length() - strlen(ext); name = fname.substr(0, pos); } else { name = fname; } } // Add extension to filename void AddExtension(string& fname, const string& ext) { string::size_type pos = fname.length(); // Never search to before "/" or "\\": file may not have extension // And don't find "." in path before file name while (pos >= 1 && fname[pos-1] != '/' && fname[pos-1] != '\\' && fname[pos-1] != '.' ) { pos--; } if (pos >= 1 && fname[pos-1] == '.') { fname.erase(pos); fname += ext; } else { fname += "."; fname += ext; } } // Get path of file name (assume last part after DIR_SEP is file name) void GetDirName(const string& path, string& dir) { string::size_type pos = path.length(); while (pos >= 1 && path[pos-1] != '/' && path[pos-1] != '\\') { pos--; } // position pos-1 is where the slash is, so if pos = 1 then the slash is the first // character of the path and the file is in the root of the system if (pos >= 1 && (path[pos-1] == '/' || path[pos-1] == '\\')) { dir = path.substr(0, pos); AddDirSep(dir); } else { dir = ""; } } // Split file name in path (dir) and file name (name) void SplitFileName(const string& path, string& dir, string& name) { string::size_type pos = path.length(); while (pos >= 1 && path[pos-1] != '/' && path[pos-1] != '\\') { pos--; } // position pos-1 is where the slash is, so if pos = 1 then the slash is the first // character of the path and the file is in the root of the system if (pos >= 1 && (path[pos-1] == '/' || path[pos-1] == '\\')) { dir = path.substr(0, pos); // second argument to substr = number of characters to copy name = path.substr(pos); AddDirSep(dir); } else { name = path; dir = ""; } } // Split file name in path (dir) and file name (name) and return only file name void SplitFileNameNoDir(const string& path, string& name) { string::size_type pos = path.length(); while (pos >= 1 && path[pos-1] != '/' && path[pos-1] != '\\') { pos--; } // position pos-1 is where the slash is, so if pos = 1 then the slash is the first // character of the path and the file is in the root of the system if (pos >= 1 && (path[pos-1] == '/' || path[pos-1] == '\\')) { name = path.substr(pos); } else { name = path; } } // Remove given absolute path from filename void RemoveDirectoryIfEqual(string* filename, const string& directory) { if (IsAbsPath(directory)) { // Ignore trailing path separator on directory int pos = directory.length()-1; while (pos > 0 && (directory[pos] == '/' || directory[pos] == '\\')) pos--; // Check if directory is a prefix of the given filename if (strncmp(directory.c_str(), filename->c_str(), pos+1) == 0) { // Skip the path separator character pos++; // And erase the absolute path prefix if (pos < (int)filename->length() && ((*filename)[pos] == '/' || (*filename)[pos] == '\\')) { filename->erase(0, pos+1); } } } } void StripPathComponents(string* fname, int nb) { while (nb > 0) { string::size_type i = fname->rfind(DIR_SEP); if (i != string::npos) { *fname = fname->substr(0, i); } else { break; } nb--; } } string GLETempDirName() { string result; #ifdef __WIN32__ #define WIN32_TMPNAM_BUFSIZE 1024 TCHAR lpPathBuffer[WIN32_TMPNAM_BUFSIZE+1]; DWORD dwRetVal = GetTempPath(WIN32_TMPNAM_BUFSIZE, lpPathBuffer); if (dwRetVal > WIN32_TMPNAM_BUFSIZE || (dwRetVal == 0)) { return string("C:\\"); } else { result = lpPathBuffer; } #else result = "/tmp"; #endif AddDirSep(result); return result; } string GLETempName() { string result; #ifdef __WIN32__ #define WIN32_TMPNAM_BUFSIZE 1024 result = "C:\\gle.tmp"; TCHAR szTempName[WIN32_TMPNAM_BUFSIZE+1]; TCHAR lpPathBuffer[WIN32_TMPNAM_BUFSIZE+1]; DWORD dwRetVal = GetTempPath(WIN32_TMPNAM_BUFSIZE, lpPathBuffer); if (dwRetVal <= WIN32_TMPNAM_BUFSIZE && dwRetVal != 0) { UINT uRetVal = GetTempFileName(lpPathBuffer, TEXT("gle"), 0, szTempName); if (uRetVal != 0) { result = szTempName; } } #else const char* base = "/tmp/gle-XXXXXX"; char* temp = (char*)malloc(strlen(base)+1); strcpy(temp, base); int fd = mkstemp(temp); if (fd != -1) close(fd); result = temp; free(temp); #endif GetMainNameExt(result, ".tmp", result); return result; } bool GLEMoveFile(const string& from, const string& to) { #ifdef __WIN32__ #else if (rename(from.c_str(), to.c_str()) == -1) return false; #endif return true; } void GLECopyStream(istream& from, ostream& to) { to << from.rdbuf(); } int GLECopyFile(const string& from, const string& to, string* err) { ifstream strm(from.c_str()); if (!strm.is_open()) { if (err != NULL) { *err = string("file '") + from + "' not found"; } return GLE_FILE_NOT_FOUND_ERROR; } ofstream out(to.c_str()); if (!out.is_open()) { strm.close(); if (err != NULL) { *err = string("can't create '") + to + "'"; } return GLE_FILE_WRITE_ERROR; } GLECopyStream(strm, out); out.close(); strm.close(); if (out.fail()) { if (err != NULL) { *err = string("error while writing to '") + to + "'"; } return GLE_FILE_WRITE_ERROR; } return GLE_FILE_OK; } // Return current directory bool GLEGetCrDir(string* name) { #ifdef __WIN32__ TCHAR buffer[1024]; if (GetCurrentDirectory(1024, buffer) != 0) { *name = buffer; return true; } #else #ifdef _GNU_SOURCE char* res = get_current_dir_name(); if (res != NULL) { *name = res; free(res); return true; } #else char buffer[1024]; if (getcwd(buffer, 1024) != NULL) { *name = buffer; return true; } #endif #endif return false; } // Return current directory // -> Used for compatibility with QGLE.EXE bool GLEGetCrDirWin32(string* name) { #if defined(__WIN32__) || defined(__CYGWIN__) TCHAR buffer[1024]; if (GetCurrentDirectory(1024, buffer) != 0) { *name = buffer; return true; } else { return false; } #else char buffer[1024]; if (getcwd(buffer, 1024) == NULL) { return false; } else { *name = buffer; return true; } #endif } // Change directory bool GLEChDir(const string& dir) { #ifdef __WIN32__ return SetCurrentDirectory(dir.c_str()); #else return chdir(dir.c_str()) == 0; #endif } void GLESetGLETop(const string& cmdline) { string gle_top = cmdline; StripPathComponents(&gle_top, 1); // Newer versions have the executable in the "bin" subdir if (!GLEFileExists(gle_top + DIR_SEP + "inittex.ini")) { StripPathComponents(&gle_top, 1); } gle_top = "GLE_TOP="+gle_top; #ifdef __WIN32__ _putenv(gle_top.c_str()); #endif } #define GLEREAD_BUF 10000 int GLERunCommand(const string& cmd, string& result) { ostringstream strm; int res = GLESystem(cmd, true, true, NULL, &strm); result = strm.str(); return res; } #define GLESYS_PIPE_RD 0 #define GLESYS_PIPE_WR 1 #ifdef __WIN32__ void GLEReadFileWin32(HANDLE input, ostream* strm) { char buffer[GLEREAD_BUF+1]; while(true) { DWORD nbytes = 0; BOOL fSuccess = ReadFile(input, buffer, GLEREAD_BUF, &nbytes, NULL); if (!fSuccess || nbytes == 0) { CloseHandle(input); return; } else if (strm != NULL) { buffer[nbytes] = 0; nbytes = str_remove_all(buffer, '\r'); strm->write(buffer, nbytes); } } } typedef struct { HANDLE handle; istream* strm; } GLESystemWriterData; DWORD WINAPI GLESystemWriter(LPVOID lpParam) { GLESystemWriterData* data = (GLESystemWriterData*)lpParam; char write_buffer[GLEREAD_BUF+1]; while(data->strm->good()) { data->strm->read(write_buffer, GLEREAD_BUF); int to_write = data->strm->gcount(); DWORD nbWritten; BOOL fSuccess = WriteFile(data->handle, write_buffer, to_write, &nbWritten, NULL); if (!fSuccess) { break; } } CloseHandle(data->handle); ExitThread(0); return 0; } int GLESystem(const string& cmd, bool wait, bool redirout, istream* ins, ostream* outerrs) { SECURITY_ATTRIBUTES saAttr; saAttr.nLength = sizeof(SECURITY_ATTRIBUTES); saAttr.bInheritHandle = TRUE; saAttr.lpSecurityDescriptor = NULL; HANDLE hChildStdinRd, hChildStdinWr, hChildStdoutRd, hChildStdoutWr; if (wait) { // Create pipe for standard out if (!CreatePipe(&hChildStdoutRd, &hChildStdoutWr, &saAttr, 0)) { cerr << "stdout pipe creation failed" << endl; return GLE_SYSTEM_ERROR; } SetHandleInformation(hChildStdoutRd, HANDLE_FLAG_INHERIT, 0); // Create pipe for standard in if (!CreatePipe(&hChildStdinRd, &hChildStdinWr, &saAttr, 0)) { cerr << "stdin pipe creation failed" << endl; return GLE_SYSTEM_ERROR; } SetHandleInformation(hChildStdinWr, HANDLE_FLAG_INHERIT, 0); } PROCESS_INFORMATION piProcInfo; STARTUPINFO siStartInfo; ZeroMemory(&piProcInfo, sizeof(PROCESS_INFORMATION)); ZeroMemory(&siStartInfo, sizeof(STARTUPINFO)); siStartInfo.cb = sizeof(STARTUPINFO); if (wait) { siStartInfo.hStdError = hChildStdoutWr; if (redirout) { siStartInfo.hStdOutput = hChildStdoutWr; } else { siStartInfo.hStdOutput = GetStdHandle(STD_OUTPUT_HANDLE); } siStartInfo.hStdInput = hChildStdinRd; siStartInfo.dwFlags |= STARTF_USESTDHANDLES; } BOOL bFuncRetn = CreateProcess(NULL, (CHAR*)cmd.c_str(), // command line NULL, // process security attributes NULL, // primary thread security attributes wait, // handles are inherited NORMAL_PRIORITY_CLASS | CREATE_NO_WINDOW, // creation flags NULL, // use parent's environment NULL, // use parent's current directory &siStartInfo, // STARTUPINFO pointer &piProcInfo); // receives PROCESS_INFORMATION if (bFuncRetn == 0) { if (wait) { CloseHandle(hChildStdinRd); CloseHandle(hChildStdinWr); CloseHandle(hChildStdoutRd); CloseHandle(hChildStdoutWr); } return GLE_SYSTEM_ERROR; } if (wait) { HANDLE hWrThread = NULL; GLESystemWriterData writerData; CloseHandle(hChildStdinRd); CloseHandle(hChildStdoutWr); if (ins == NULL) { CloseHandle(hChildStdinWr); } else { DWORD dwThreadID; writerData.strm = ins; writerData.handle = hChildStdinWr; hWrThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)GLESystemWriter, (LPVOID)&writerData, 0, &dwThreadID); } GLEReadFileWin32(hChildStdoutRd, outerrs); if (hWrThread != NULL) { WaitForSingleObject(hWrThread, INFINITE); CloseHandle(hWrThread); } WaitForSingleObject(piProcInfo.hProcess, INFINITE); } CloseHandle(piProcInfo.hProcess); CloseHandle(piProcInfo.hThread); return GLE_SYSTEM_OK; } #else void GLECloseFD(int* fd, int i) { if (fd[i] != -1) { close(fd[i]); fd[i] = -1; } } void GLECloseFDArray(int* fd) { for (int i = 0; i < 4; i++) { GLECloseFD(fd, i); } } void GLEDupFD(int* fd, int dup, int to) { if (*fd >= 0) { close(fd[1-dup]); dup2(fd[dup], to); close(fd[dup]); } } int GLESystem(const string& cmd, bool wait, bool redirout, istream* ins, ostream* outerrs) { int fd[] = { -1, -1, -1, -1 }; int* const pin = fd; int* const pout = fd+2; if (wait) { pipe(pin); pipe(pout); fcntl(pin[GLESYS_PIPE_WR], F_SETFL, O_NONBLOCK); fcntl(pout[GLESYS_PIPE_RD], F_SETFL, O_NONBLOCK); } pid_t pid = fork(); if (pid == 0) { /* here, we're in the child process */ GLEDupFD(pin, GLESYS_PIPE_RD, STDIN_FILENO); if (redirout && *pout >= 0) { /* redirect both stdout and stderr */ close(pout[GLESYS_PIPE_RD]); dup2(pout[GLESYS_PIPE_WR], STDOUT_FILENO); dup2(pout[GLESYS_PIPE_WR], STDERR_FILENO); close(pout[GLESYS_PIPE_WR]); } else { /* redirect just stderr */ GLEDupFD(pout, GLESYS_PIPE_WR, STDERR_FILENO); } execl("/bin/sh", "/bin/sh", "-c", cmd.c_str(), NULL); _exit(0); } else if (pid < 0) { GLECloseFDArray(fd); return GLE_SYSTEM_ERROR; } else if (wait) { int status; /* first close unused pipe ends */ GLECloseFD(pin, GLESYS_PIPE_RD); if (ins == NULL) { GLECloseFD(pin, GLESYS_PIPE_WR); } GLECloseFD(pout, GLESYS_PIPE_WR); if (pin[GLESYS_PIPE_WR] >= 0) { /* don't crash with broken pipe signal */ signal(SIGPIPE, SIG_IGN); } /* then read/write to used ones (these functions close when done) */ fd_set read_set, write_set; char read_buffer[GLEREAD_BUF+1], write_buffer[GLEREAD_BUF+1]; int to_write = 0, offs_write = 0; while (true) { /* write data until EAGAIN error (this means pipe full) */ while (pin[GLESYS_PIPE_WR] >= 0) { if (to_write == 0) { offs_write = 0; if (ins->good()) { ins->read(write_buffer, GLEREAD_BUF); to_write = ins->gcount(); if (to_write == 0) { GLECloseFD(pin, GLESYS_PIPE_WR); break; } } else { GLECloseFD(pin, GLESYS_PIPE_WR); break; } } int nbytes = write(pin[GLESYS_PIPE_WR], write_buffer+offs_write, to_write); if (nbytes < 0) { /* an error occured */ if (errno != EAGAIN) { GLECloseFD(pin, GLESYS_PIPE_WR); } break; } else { offs_write += nbytes; to_write -= nbytes; } } /* read data until EAGAIN error (this means pipe empty) */ while (pout[GLESYS_PIPE_RD] >= 0) { int nbytes = read(pout[GLESYS_PIPE_RD], read_buffer, GLEREAD_BUF); if (nbytes < 0) { /* an error occured */ if (errno != EAGAIN) { GLECloseFD(pout, GLESYS_PIPE_RD); } break; } else if (nbytes == 0) { /* end of file reached */ GLECloseFD(pout, GLESYS_PIPE_RD); break; } else if (outerrs != NULL) { read_buffer[nbytes] = 0; nbytes = str_remove_all(read_buffer, '\r'); outerrs->write(read_buffer, nbytes); } } /* initialize descriptor sets */ int cnt = 0; FD_ZERO(&read_set); FD_ZERO(&write_set); if (pout[GLESYS_PIPE_RD] >= 0) { FD_SET(pout[GLESYS_PIPE_RD], &read_set); cnt++; } if (pin[GLESYS_PIPE_WR] >= 0) { FD_SET(pin[GLESYS_PIPE_WR], &write_set); cnt++; } if (cnt == 0) { /* everyting error or end of stream */ break; } /* wait for data to become available or flushed */ int res = select(FD_SETSIZE, &read_set, &write_set, NULL, NULL); if (res < 1) { /* no stream ready */ break; } } GLECloseFDArray(fd); waitpid(pid, &status, 0); } return GLE_SYSTEM_OK; } #endif void GLESleep(int msec) { #ifdef __WIN32__ Sleep(msec); #else sleep(msec/1000); #endif } bool GLEFileExists(const string& fname) { FILE* f = fopen(fname.c_str(), "rb"); if (f != NULL) { fclose(f); return true; } else { return false; } } // Create new directory void MakeDirectory(const string& dir) { /* Create directory user read/write/exec, group & others read/exec */ #ifdef __WIN32__ SECURITY_ATTRIBUTES sec_attr; sec_attr.nLength = sizeof(SECURITY_ATTRIBUTES); sec_attr.lpSecurityDescriptor = NULL; sec_attr.bInheritHandle = FALSE; CreateDirectory(dir.c_str(), &sec_attr); #else mkdir(dir.c_str(), S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH); #endif } // Recursively create directory if it does not yet exist void EnsureMkDir(const string& dir) { if (!IsDirectory(dir)) { int done = 0; string temp = dir; vector comps; do { string::size_type i = temp.rfind(DIR_SEP); if (i != string::npos) { comps.push_back(temp.substr(i+1)); temp = temp.substr(0, i); } else { comps.push_back(temp); done = 1; } } while (done == 0 && (!IsDirectory(temp))); if (done == 0) { temp += DIR_SEP; } else { temp = ""; } for (int i = comps.size()-1; i >= 0; i--) { temp += comps[i]; MakeDirectory(temp); if (i > 0) temp += DIR_SEP; } } } bool TryDeleteDir(const string& fname) { // cout << "Delete: '" << fname << "'" << endl; #ifdef __WIN32__ RemoveDirectory(fname.c_str()); #else if (rmdir(fname.c_str()) != 0) { return false; } #endif return true; } bool TryDeleteFile(const string& fname) { // cout << "Delete: '" << fname << "'" << endl; #ifdef __WIN32__ DeleteFile(fname.c_str()); #else if (unlink(fname.c_str()) != 0) { return false; } #endif return true; } // Delete file with extension replaced by given one bool DeleteFileWithNewExt(const string& fname, const char* ext) { string main_name; GetMainName(fname, main_name); main_name += ext; return TryDeleteFile(main_name); } // Delete file with extension replaced by given one bool DeleteFileWithExt(const string& fname, const char* ext) { string name(fname); name += ext; return TryDeleteFile(name); } // Read line from file int ReadFileLine(istream& file, string& line) { line = ""; int count = 0; char ch = '\n'; while ((ch == '\n' || ch == '\r') && file.good()) { file.read(&ch, 1); } while (ch != '\n' && ch != '\r' && file.good()) { count++; line += ch; file.read(&ch, 1); } return count; } int ReadFileLineAllowEmpty(istream& file, string& line) { line = ""; char ch; int count = 0; file.read(&ch, 1); while (ch != '\n' && ch != '\r' && !file.eof()) { count++; line += ch; file.read(&ch, 1); } return count; } bool IsExecutable(const string& fname) { #if defined(__UNIX__) || ( defined(__OS2__) && defined(__EMX__) ) struct stat stat_buf; if (stat((const char *)fname.c_str(), &stat_buf) == 0) { return (stat_buf.st_mode & S_IXOTH) != 0; } else { return false; } #else return true; #endif } bool IsDirectory(const string& fname, bool linkok) { #if defined(__UNIX__) || ( defined(__OS2__) && defined(__EMX__) ) struct stat stat_buf; if (linkok) { if (stat((const char *)fname.c_str(), &stat_buf) == 0) { return S_ISDIR(stat_buf.st_mode); } } else { if (lstat((const char *)fname.c_str(), &stat_buf) == 0) { return S_ISDIR(stat_buf.st_mode); } } #else struct _stat stat_buf; if (_stat((const char *)fname.c_str(), &stat_buf) == 0) { return (stat_buf.st_mode & _S_IFDIR); } #endif return false; } GLEProgressIndicator::GLEProgressIndicator() { } GLEProgressIndicator::~GLEProgressIndicator() { } void GLEProgressIndicator::indicate() { } GLEFindEntry::GLEFindEntry(string* result) { m_Result = result; m_Done = false; } GLEFindEntry::~GLEFindEntry() { } void GLEFindEntry::addToFind(const string& tofind) { m_ToFind.push_back(tofind); m_Found.push_back(string()); } void GLEFindEntry::updateResult(bool isFinal) { for (unsigned int i = 0; i < getNbFind(); i++) { if (!m_Done && m_Found[i] != "") { // The first one is to be preferred *m_Result = m_Found[i]; m_Done = true; break; } } if (!m_Done && isFinal && m_NotFound != "") { *m_Result = m_NotFound; } } void GLEFindEntry::setFound(unsigned int i, const string& found) { unsigned int len = m_Result->length(); if (len >= 1 && (*m_Result)[len-1] == ';') { // If result ends with ";", then find all results if (len == 1) *m_Result = found + ";"; else *m_Result += found + ";"; } else { // Only update if not yet found if (!m_Done && m_Found[i] == "") m_Found[i] = found; } } void GLEFindFilesUpdate(const char* fname, const string& dir, vector& tofind) { for (vector::size_type i = 0; i < tofind.size(); i++) { GLEFindEntry* entry = tofind[i]; for (unsigned int j = 0; j < entry->getNbFind(); j++) { if (str_i_equals(fname, entry->getFind(j).c_str())) { string place = dir + DIR_SEP + fname; if (IsExecutable(place)) { entry->setFound(j, place); } } } } } void GLEFindFiles(const string& dirname, vector& tofind, GLEProgressIndicator* progress) { static int find_files_progress = 0; vector subdirs; if (find_files_progress++ == 10) { progress->indicate(); find_files_progress = 0; } // cout << "Dir: " << dirname << endl; #ifdef __WIN32__ WIN32_FIND_DATA FindFileData; string findpattern = dirname + DIR_SEP + "*.*"; HANDLE hFind = FindFirstFile(findpattern.c_str(), &FindFileData); if (hFind == INVALID_HANDLE_VALUE) { return; } do { const char* name = FindFileData.cFileName; if ((FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) != 0) { if (!str_i_equals(name, ".") && !str_i_equals(name, "..")) { subdirs.push_back(name); } } else { GLEFindFilesUpdate(name, dirname, tofind); } } while (FindNextFile(hFind, &FindFileData) != 0); FindClose(hFind); #endif #ifdef __UNIX__ DIR* dir = opendir(dirname.c_str()); if (dir != NULL) { struct dirent* entry = readdir(dir); while (entry != NULL) { string path = dirname + DIR_SEP + entry->d_name; if (IsDirectory(path, false)) { if (!str_i_equals(entry->d_name, ".") && !str_i_equals(entry->d_name, "..")) { subdirs.push_back(entry->d_name); } if (str_i_str(entry->d_name, ".framework") != NULL) { GLEFindFilesUpdate(entry->d_name, dirname, tofind); } } else { GLEFindFilesUpdate(entry->d_name, dirname, tofind); } entry = readdir(dir); } closedir(dir); } #endif for (vector::size_type i = 0; i < subdirs.size(); i++) { string nextdir = dirname + DIR_SEP + subdirs[i]; GLEFindFiles(nextdir, tofind, progress); } } string GLEFindLibrary(const char* name, GLEProgressIndicator* progress) { #ifdef __UNIX__ string libpath; const char* ldlibpath = getenv("LD_LIBRARY_PATH"); if (ldlibpath != NULL && ldlibpath[0] != 0) { libpath = ldlibpath; libpath += ":"; } #ifdef __x86_64__ libpath += "/usr/lib64:/usr/local/lib64:"; #endif libpath += "/usr/lib:/usr/local/lib"; string tofind = name; tofind += "."; char_separator separator(":", ""); tokenizer tokens(libpath, separator); while (tokens.has_more()) { progress->indicate(); const string& dirname = tokens.next_token(); DIR* dir = opendir(dirname.c_str()); if (dir != NULL) { struct dirent* entry = readdir(dir); while (entry != NULL) { string fname = entry->d_name; if (str_starts_with(fname, tofind.c_str()) && str_i_str(fname, ".so") != -1) { string result = dirname + DIR_SEP + fname; return result; } #ifdef __MACOS__ if (str_starts_with(fname, tofind.c_str()) && str_i_str(fname, ".dylib") != -1) { string result = dirname + DIR_SEP + fname; return result; } #endif entry = readdir(dir); } closedir(dir); } } #endif return string(""); } void GLEFindPrograms(vector& tofind, GLEProgressIndicator* progress) { #ifdef __UNIX__ const char* path = getenv("PATH"); if (path == NULL) { return; } char_separator separator(":", ""); tokenizer tokens(path, separator); while (tokens.has_more()) { progress->indicate(); const string& dirname = tokens.next_token(); DIR* dir = opendir(dirname.c_str()); if (dir != NULL) { struct dirent* entry = readdir(dir); while (entry != NULL) { GLEFindFilesUpdate(entry->d_name, dirname, tofind); entry = readdir(dir); } closedir(dir); } } #endif } string GetActualFilename(ifstream* file, const string& fname, const string* directory) { // will return the filename // if found in ./ or in any of the include // paths, will return empty string if // file not found if (directory == NULL) { file->open(fname.c_str()); if (file->is_open()) return fname; } else { string fullpath; GLEGetFullPath(*directory, fname, fullpath); file->open(fullpath.c_str()); if (file->is_open()) return fullpath; } // -- try the IncludePaths vector IncludePaths; FillIncludePaths(IncludePaths); vector::iterator vsi = IncludePaths.begin(); while(vsi != IncludePaths.end()) { file->clear(); const string path = *vsi + DIR_SEP + fname; file->open(path.c_str()); if (file->is_open()) return path; vsi++; } return ""; } #ifdef HAVE_SOCKETS void GLECloseSocket(SOCKET sock) { #ifdef __WIN32__ closesocket(sock); WSACleanup(); #endif #ifdef __UNIX__ close(sock); #endif } #endif int GLESendSocket(const string& commands) { #ifdef HAVE_SOCKETS #ifdef __WIN32__ struct WSAData wsaData; int nCode = WSAStartup(MAKEWORD(1, 1), &wsaData); if (nCode != 0) { return -1; } #endif struct sockaddr_in name; SOCKET sock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP); if (sock < 0) { #ifdef __WIN32__ WSACleanup(); #endif return -2; } name.sin_family = AF_INET; name.sin_port = htons(6667); name.sin_addr.s_addr = inet_addr("127.0.0.1"); if (connect(sock, (struct sockaddr *) &name, sizeof (name)) < 0) { GLECloseSocket(sock); return -3; } int nbsend = send(sock, commands.c_str(), commands.length(), 0); if (nbsend != (int)commands.length()) { GLECloseSocket(sock); return -4; } char ch = 0; while (true) { #ifdef __WIN32__ int res1 = recv(sock, &ch, 1, 0); if (res1 <= 0) { if (res1 == SOCKET_ERROR && WSAGetLastError() == WSAEWOULDBLOCK) { #else int res1 = read(sock, &ch, 1); if (res1 <= 0) { if (res1 == -1 && errno == EAGAIN) { #endif fd_set read_set; FD_ZERO(&read_set); FD_SET(sock, &read_set); int res2 = select(FD_SETSIZE, &read_set, NULL, NULL, NULL); if (res2 < 1) break; } else { break; } } else { cerr << ch; } } GLECloseSocket(sock); return 0; #else return -1; #endif } bool GetExeName(const char* appname, char **argv, string& exe_name) { #ifdef __WIN32__ char name[1024]; DWORD res = GetModuleFileName(NULL, name, 1023); if (res > 0) { name[res] = 0; exe_name = name; return true; } #endif #ifdef __MACOS__ char name[1024]; uint32_t path_len = 1023; if (_NSGetExecutablePath(name, &path_len) == 0) { exe_name = name; str_replace_all(exe_name, "/./", "/"); return true; } #endif #if defined(__UNIX__) && !defined(__MACOS__) && !defined(__FREEBSD__) /* try to read location from the /proc/self/exe file */ char path[PATH_MAX]; struct stat stat_buf; string path2 = "/proc/self/exe"; while (true) { int size = readlink(path2.c_str(), path, PATH_MAX - 1); if (size == -1) { break; } path[size] = '\0'; int i = stat(path, &stat_buf); if (i == -1) { break; } if (!S_ISLNK(stat_buf.st_mode)) { exe_name = path; return true; } path2 = path; } /* try to read location from the /proc/self/maps file */ ifstream maps("/proc/self/maps"); if (maps.is_open()) { string f1 = DIR_SEP + appname; string f2 = f1 + ".exe"; while (!maps.eof()) { string line; ReadFileLine(maps, line); char_separator separator(" ", ""); tokenizer tokens(line, separator); while (tokens.has_more()) { exe_name = tokens.next_token(); if (str_i_ends_with(exe_name, f1.c_str()) || str_i_ends_with(exe_name, f2.c_str())) { return true; } } } maps.close(); } #endif string arg0 = argv[0]; if (IsAbsPath(arg0)) { exe_name = arg0; return true; } if (GLEGetCrDir(&exe_name)) { AddDirSep(exe_name); exe_name += arg0; GLENormalizePath(exe_name); return true; } return false; } string GetHomeDir() { #if defined(__UNIX__) || defined (__OS2__) const char* home = getenv("HOME"); if (home != NULL && home[0] != 0) { string home_str(home); AddDirSep(home_str); return home_str; } #endif return string(); } StreamTokenizerMax::StreamTokenizerMax(const string& fname, int sep, int max) : m_File(fname.c_str()) { m_Sep = sep; m_Max = max; m_IsOK = 1; m_LastToken = new char[m_Max+1]; if (!m_File.is_open()) { m_IsOK = 0; } } StreamTokenizerMax::~StreamTokenizerMax() { delete[] m_LastToken; } bool StreamTokenizerMax::hasMoreTokens() { if (m_IsOK == 1) readNextToken(); return m_IsOK == 1; } const char* StreamTokenizerMax::nextToken() { return m_LastToken; } void StreamTokenizerMax::close() { m_File.close(); } bool StreamTokenizerMax::isSepChar(char ch) { return ch == m_Sep || ch == '\n' || ch == '\r' || ch == 0; } void StreamTokenizerMax::readNextToken() { char ch = m_Sep; while (isSepChar(ch) && !m_File.eof()) { m_File.read(&ch, 1); } int count = 0; while (count < m_Max && !isSepChar(ch) && !m_File.eof()) { if (ch != m_Sep) m_LastToken[count++] = ch; m_File.read(&ch, 1); } m_LastToken[count] = 0; while (!isSepChar(ch) && !m_File.eof()) { m_File.read(&ch, 1); } if (m_File.eof()) { m_IsOK = 0; } } void CopyGLETop(char* buf) { strcpy(buf, GLE_TOP_DIR.c_str()); } string fontdir(const char *fname) { // simply returns %GLE_TOP%/font string result = GLE_TOP_DIR; result += DIR_SEP; result += "font"; result += DIR_SEP; result += fname; return result; } string gledir(const char *fname) { // simply returns %GLE_TOP% string result = GLE_TOP_DIR; result += DIR_SEP; result += fname; return result; } string GLEExpandEnvironmentVariables(const string& str) { ostringstream result; for (unsigned int i = 0; i < str.size(); i++) { if (str[i] == '$') { string envVar; for (unsigned int j = i+1; j < str.size(); j++) { if (toupper(str[j]) >= 'A' && toupper(str[j]) <= 'Z') { envVar += str[j]; } else { break; } } bool replaced = false; if (!envVar.empty()) { char* var = getenv(envVar.c_str()); if (var != NULL) { replaced = true; result << var; } } if (!replaced) { result << "$"; result << envVar; } i += envVar.size(); } else { result << str[i]; } } return result.str(); } bool GLEReadFile(const string& name, vector* lines) { ifstream inFile(name.c_str()); if (!inFile.is_open()) { return false; } while (inFile.good()) { string line; getline(inFile, line); lines->push_back(line); } inFile.close(); return true; } bool GLEReadFileBinary(const string& name, std::vector* contents) { ifstream inFile(name.c_str(), ios::in | ios::binary | ios::ate); if (!inFile.is_open()) { return false; } int length = inFile.tellg(); inFile.seekg(0, ios::beg); contents->resize(length, 0); inFile.read(&(*contents)[0], length); inFile.close(); return true; } gle-graphics-4.2.4c/src/gle/builtin-double.cpp0000664000000000000000000000144511405446017017717 0ustar rootroot #include "all.h" #include "gle-interface/gle-base.h" #include "gle-interface/gle-interface.h" #include "gle-interface/gle-datatype.h" #include "var.h" #include "sub.h" #include "builtin-double.h" GLEBuiltInBinaryDoubleDouble::GLEBuiltInBinaryDoubleDouble(const char* name, GLEBuiltInFactory* factory) { setRoot(factory->createRoot(name, factory->getBinaryArgNamesXY())); setArgTypeDefaults(factory->getBinaryDoubleDoubleArgTypeDefaults()); } GLEBuiltInOpPlusDouble::GLEBuiltInOpPlusDouble(GLEBuiltInFactory* factory) : GLEBuiltInBinaryDoubleDouble("+", factory) {} void GLEBuiltInOpPlusDouble::execute(GLEArrayImpl* stack, unsigned int top) { } void initializeBuiltInDouble(GLESubMap* submap, GLEBuiltInFactory* factory) { submap->add(new GLEBuiltInOpPlusDouble(factory)); /* +/2 operator */ } gle-graphics-4.2.4c/src/gle/gle-interface/gle-shapemath.h0000664000000000000000000001646311677614440021710 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ #ifndef __GLE_SHAPEMATH__ #define __GLE_SHAPEMATH__ class DLLCLASS GLECurve { public: GLECurve(); virtual ~GLECurve(); virtual void getC(double t, GLEPoint& p) = 0; virtual void getCp(double t, GLEPoint& p) = 0; virtual void getCpp(double t, GLEPoint& p) = 0; virtual double getT0(); virtual double getT1(); virtual double getDist(double t1, double t2); virtual double distToParamValue(double t1, double dist, double t2); virtual double distToParamValue(double t1, double dist); double getDistp(double t); protected: double computeDistRecursive(double t1, GLEPoint& p1, double t2, GLEPoint& p2); }; class DLLCLASS GLECurveT0T1 : public GLECurve { protected: double m_T0, m_T1; public: GLECurveT0T1(); ~GLECurveT0T1(); virtual double getT0(); virtual double getT1(); }; class DLLCLASS GLECircleArc : public GLECurveT0T1 { protected: GLEPoint m_Orig; double m_R; public: GLECircleArc(const GLEPoint& orig, double r, double t0, double t1); virtual ~GLECircleArc(); virtual void getC(double t, GLEPoint& p); virtual void getCp(double t, GLEPoint& p); virtual void getCpp(double t, GLEPoint& p); virtual double getDist(double t1, double t2); virtual double distToParamValue(double t1, double dist, double t2); virtual double distToParamValue(double t1, double dist); }; class DLLCLASS GLEEllipseArc : public GLECurveT0T1 { protected: GLEPoint m_Orig; double m_Rx, m_Ry; public: GLEEllipseArc(const GLEPoint& orig, double rx, double ry, double t0, double t1); virtual ~GLEEllipseArc(); virtual void getC(double t, GLEPoint& p); virtual void getCp(double t, GLEPoint& p); virtual void getCpp(double t, GLEPoint& p); }; class DLLCLASS GLEBezier : public GLECurve { protected: GLEPoint m_P0, m_P1, m_P2, m_P3; double m_Ax, m_Bx, m_Cx, m_Ay, m_By, m_Cy; public: GLEBezier(); GLEBezier(double x0, double y0, double x1, double y1, double x2, double y2, double x3, double y3); GLEBezier(const GLEBezier& other); ~GLEBezier(); inline void setP0(const GLEPoint& p) { m_P0.set(p); } inline void setP1(const GLEPoint& p) { m_P1.set(p); } inline void setP2(const GLEPoint& p) { m_P2.set(p); } inline void setP3(const GLEPoint& p) { m_P3.set(p); } inline void setP0(double x, double y) { m_P0.setXY(x, y); } inline void setP1(double x, double y) { m_P1.setXY(x, y); } inline void setP2(double x, double y) { m_P2.setXY(x, y); } inline void setP3(double x, double y) { m_P3.setXY(x, y); } inline const GLEPoint& getP0() const { return m_P0; } inline const GLEPoint& getP1() const { return m_P1; } inline const GLEPoint& getP2() const { return m_P2; } inline const GLEPoint& getP3() const { return m_P3; } inline GLEPoint& P0() { return m_P0; } inline GLEPoint& P1() { return m_P1; } inline GLEPoint& P2() { return m_P2; } inline GLEPoint& P3() { return m_P3; } virtual void getC(double t, GLEPoint& p); virtual void getCp(double t, GLEPoint& p); virtual void getCpp(double t, GLEPoint& p); void throughPoint(GLEPoint& p, GLEPoint& dir1, GLEPoint& dir2); void updateEquation(); void draw(); void cutAtParamValue(double t); void cutFromParamValue(double t); }; class DLLCLASS GLECurvedArrowHead { protected: GLECurve* m_Curve; GLEBezier m_Side1, m_Side2; double m_T0, m_TM, m_T1; double m_ArrAlpha, m_ArrSize, m_LWidth; bool m_Enable, m_Sharp; int m_ArrStyle; public: GLECurvedArrowHead(GLECurve* curve); virtual ~GLECurvedArrowHead(); void getA(double t, double pm, GLEPoint& p); void getAp(double t, double pm1, double pm2, GLEPoint& p); void setArrowAngleSize(int style, double size, double angle); void setArrowAngleSizeSharp(int style, double size, double angle); void drawDirection(bool dir); void setStartEnd(bool dir); double getParamValueEnd(); double getArrowCurveDist(); void computeAndDraw(); DLLFCT void computeArrowHead(); void draw(); GLEBezier* getSide1() { return &m_Side1; } GLEBezier* getSide2() { return &m_Side2; } inline int getStyle() { return m_ArrStyle; } inline bool isSharp() { return m_Sharp; } inline void setSharp(bool sharp) { m_Sharp = sharp; } inline void setLineWidth(double lwidth) { m_LWidth = lwidth; } inline bool isEnabled() { return m_Enable; } inline void setEnabled(bool enable) { m_Enable = enable; } }; DLLFCT void GLEArcUpdateCurvedArrowHeads(GLECurvedArrowHead* head_start, GLECurvedArrowHead* head_end, double* t1, double* t2, GLEPropertyStore* props, double fac, int arrow); DLLFCT double GLEArcNormalizedAngle2(double a1, double a2); #endif // __GLE_SHAPEMATH__ gle-graphics-4.2.4c/src/gle/gle-interface/gle-base.h0000664000000000000000000001307611720262226020633 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ #ifndef __GLE_BASE__ #define __GLE_BASE__ // #include // #include // #include using namespace std; class GLERefCountObject { private: int m_OwnerCount; public: GLERefCountObject(); virtual ~GLERefCountObject(); inline int getOwnerCount() const { return m_OwnerCount; } inline void use() { m_OwnerCount++; } inline int release() { return (--m_OwnerCount) == 0; } inline int unused() const { return m_OwnerCount == 0; } }; template class GLERC { private: T* m_Object; public: GLERC() { m_Object = NULL; } GLERC(T* obj) { m_Object = obj; if (m_Object != NULL) m_Object->use(); } GLERC(const GLERC& obj) { m_Object = obj.m_Object; if (m_Object != NULL) m_Object->use(); } ~GLERC() { if (m_Object != NULL && m_Object->release()) { delete m_Object; } } inline GLERC& operator=(GLERC src) { set(src.m_Object); return *this; } inline GLERC& operator=(T *src) { set(src); return *this; } inline bool isNull() const { return m_Object == NULL; } inline T& operator*() const { return *m_Object; } inline T* operator->() const { return m_Object; } inline T* get() const { return m_Object; } void set(T* obj) { if (obj != NULL) obj->use(); if (m_Object != NULL && m_Object->release()) { delete m_Object; } m_Object = obj; } void clear() { if (m_Object != NULL && m_Object->release()) { delete m_Object; } m_Object = NULL; } }; inline void GLE_DEL_RC(GLERefCountObject* rc) { if (rc == NULL) return; rc->release(); if (rc->unused()) delete rc; } inline void GLE_DEL_RC_INTERN(GLERefCountObject* rc) { if (rc->release()) { delete rc; } } inline GLERefCountObject* GLE_INIT_RC(GLERefCountObject* value) { value->use(); return value; } inline GLERefCountObject* GLE_SET_RC(GLERefCountObject* rc, GLERefCountObject* value) { value->use(); GLE_DEL_RC_INTERN(rc); return value; } template class GLERCVector : public vector< GLERC > { public: inline void add(T* elem) { this->push_back(GLERC(elem)); } inline T* get(int i) { return (*this)[i].get(); } }; template class GLEVectorAutoDelete : public vector { public: GLEVectorAutoDelete() : vector() { } ~GLEVectorAutoDelete() { this->deleteAll(); } void clear() { this->deleteAll(); vector::clear(); } void deleteAll() { for (typename vector::size_type i = 0; i < vector::size(); i++) { T* elem = this->at(i); if (elem != NULL) delete elem; } } }; template class GLEAutoDelete { protected: T* m_Object; public: GLEAutoDelete() { m_Object = NULL; } GLEAutoDelete(T* data) { m_Object = data; } ~GLEAutoDelete() { if (m_Object != NULL) delete m_Object; } inline GLEAutoDelete& operator=(T* data) { if (m_Object != NULL) delete m_Object; m_Object = data; return *this; } inline T* get() { return m_Object; } inline T* operator->() const { return m_Object; } }; #endif gle-graphics-4.2.4c/src/gle/gle-interface/gle-sourcefile.h0000664000000000000000000001407311405446017022061 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ #ifndef __GLE_SOURCEFILE__ #define __GLE_SOURCEFILE__ class GLESourceFile; class GLESourceLine { protected: bool m_Delete; int m_GlobalLineNo; int m_LineNo; string m_Code; string m_Prefix; GLESourceFile* m_File; public: GLESourceLine(); ~GLESourceLine(); inline void setCode(const string& code) { m_Code = code; } inline const string& getCode() { return m_Code; } inline const char* getCodeCStr() { return m_Code.c_str(); } inline void setPrefix(const string& prefix) { m_Prefix = prefix; } inline const string& getPrefix() { return m_Prefix; } inline int getLineNo() { return m_LineNo; } inline void setLineNo(int no) { m_LineNo = no; } inline int getGlobalLineNo() { return m_GlobalLineNo; } inline void setGlobalLineNo(int no) { m_GlobalLineNo = no; } inline void setSource(GLESourceFile* file) { m_File = file; } inline GLESourceFile* getSource() { return m_File; } inline void setDelete(bool del) { m_Delete = del; } inline bool isDelete() { return m_Delete; } bool isEmpty(); const string& getFileName(); int showLineAbbrev(ostream& out, int focuscol); }; class GLESourceFile { protected: GLEFileLocation m_File; vector m_Code; vector m_ToInsertIdx; vector m_ToInsertLine; GLERCVector m_Cons; public: GLESourceFile(); ~GLESourceFile(); inline int getNbLines() { return m_Code.size(); } inline GLESourceLine* getLine(int i) { return m_Code[i]; } inline GLEFileLocation* getLocation() { return &m_File; } void trim(int add = 0); void clear(); void reNumber(); GLESourceLine* addLine(); void scheduleInsertLine(int i, const string& str); void performUpdates(); int getNextInsertIndex(int line, int pos); void load(istream& input); void load() throw(ParserError); bool tryLoad(); inline void addObjectDOConstructor(GLEObjectDOConstructor* cons) { m_Cons.add(cons); } inline int getNbObjectDOConstructors() { return m_Cons.size(); } inline GLEObjectDOConstructor* getObjectDOConstructor(int i) { return m_Cons.get(i); } inline void clearObjectDOConstructors() { m_Cons.clear(); } }; class GLEGlobalSource { protected: GLESourceFile m_Main; vector m_Files; vector m_Code; public: GLEGlobalSource(); ~GLEGlobalSource(); inline GLESourceFile* getMainFile() { return &m_Main; } inline GLEFileLocation* getLocation() { return m_Main.getLocation(); } inline int getNbLines() { return m_Code.size(); } inline GLESourceLine* getLine(int i) { return m_Code[i]; } inline const string& getLineCode(int i) { return m_Code[i]->getCode(); } inline void addLine(GLESourceLine* line) { m_Code.push_back(line); } inline int getNbFiles() { return m_Files.size(); } inline GLESourceFile* getFile(int i) { return m_Files[i]; } void clear(); GLESourceFile* createNew(); bool includes(const string& file); void initFromMain(); void insertInclude(int offs, GLESourceFile* file); void insertIncludeNoOverwrite(int offs, GLESourceFile* file); void reNumber(); void addLine(const string& code); void updateLine(int i, const string& code); void scheduleDeleteLine(int i); void scheduleInsertLine(int i, const string& str); void performUpdates(); void sourceLineFileAndNumber(int line, ostream& err); void load() throw(ParserError); bool tryLoad(); void clearObjectDOConstructors(); }; int showLineAbbrev(const string& text, int focuscol, ostream& out); void sourceLineFileAndNumber(int globalLine, ostream& out); #endif gle-graphics-4.2.4c/src/gle/gle-interface/gle-const.h0000664000000000000000000000665311652073536021062 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ #ifndef INCLUDE_GLECONST #define INCLUDE_GLECONST #define GLE_DEVICE_NONE -1 #define GLE_DEVICE_EPS 0 #define GLE_DEVICE_PS 1 #define GLE_DEVICE_PDF 2 #define GLE_DEVICE_SVG 3 #define GLE_DEVICE_JPEG 4 #define GLE_DEVICE_PNG 5 #define GLE_DEVICE_X11 6 #define GLE_DEVICE_EMF 7 #define GLE_DEVICE_DUMMY 8 #define GLE_DEVICE_CAIRO_PDF 9 #define GLE_DEVICE_CAIRO_EPS 10 #define GLE_DEVICE_CAIRO_PS 11 #define GLE_DEVICE_CAIRO_SVG 12 #define BITMAP_TYPE_USER 0 #define BITMAP_TYPE_TIFF 1 #define BITMAP_TYPE_GIF 2 #define BITMAP_TYPE_PNG 3 #define BITMAP_TYPE_JPEG 4 #define BITMAP_TYPE_UNK 5 #define CM_PER_INCH 2.54 #define PS_POINTS_PER_INCH 72.0 #endif gle-graphics-4.2.4c/src/gle/gle-interface/gle-interface.h0000664000000000000000000013434011714567554021676 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ #ifndef __GLE_INTERFACE__ #define __GLE_INTERFACE__ #undef DLLEXPORT #undef DLLIMPORT #ifndef __WIN32__ #ifdef Q_WS_WIN #define __WIN32__ #endif #endif #ifdef Q_WS_WIN #define INCLUDE_GLE_DLL #endif #if defined(__WIN32__) && (defined(HAVE_LIBGLE) || defined(INCLUDE_GLE_DLL)) #define DLLEXPORT __declspec( dllexport ) #define DLLIMPORT __declspec( dllimport ) #define DLLCLASSEXPORT __attribute__ ((dllexport)) #define DLLCLASSIMPORT __attribute__ ((dllimport)) #else #define DLLEXPORT #define DLLIMPORT #define DLLCLASSEXPORT #define DLLCLASSIMPORT #endif #ifdef INCLUDE_GLE_DLL #define DLLFCT DLLIMPORT #define DLLCLASS DLLCLASSIMPORT #else #define DLLFCT DLLEXPORT #define DLLCLASS DLLCLASSEXPORT #endif #include #include using namespace std; #include "gle-base.h" #include "gle-const.h" // what do we do with these? #include "../tokens/RefCount.h" #include "../tokens/StringKeyHash.h" #include "../tokens/Tokenizer.h" #define GDO_FLAG_DELETED 1 #define GDO_FLAG_MODIFIED 2 typedef void (*gle_write_func)(void* closure, char* data, int length); class GLEInterface; class GLEScript; class GLEFont; class GLEColor; class GLEDrawObject; class GLETextDO; class GLEStringSettings; class GLEOutputStream; class GLEProperty; class GLEPropertyStore; class GLEPropertyStoreModel; class GLEGlobalConfig; class CmdLineObj; class StringIntHash; class IntIntHash; class GLEPoint; class GLESub; class GLERun; class GLEParser; class GLEPolish; class GLEPcodeIndexed; class GLERangeSet; unsigned char float_to_color_comp(double value); extern "C" { // Note: (currently) GLEInterface is a singleton class there is at most one instance DLLFCT GLEInterface* GLEGetInterfacePointer(); // GLEInterface* iface = GLEGetInterfacePointer(); // GLEGlobalConfig* conf = GLEGetInterfacePointer()->getConfig(); DLLEXPORT int GLEMain(int argc, char **argv); }; enum GLEJustify { GLEJustifyCC = 0x011, GLEJustifyTL = 0x002, GLEJustifyTC = 0x012, GLEJustifyTR = 0x022, GLEJustifyBL = 0x000, GLEJustifyBC = 0x010, GLEJustifyBR = 0x020, GLEJustifyLC = 0x001, GLEJustifyRC = 0x021, GLEJustifyLeft = 0x100, GLEJustifyCenter = 0x110, GLEJustifyRight = 0x120, GLEJustifyCirc = 0x1011, GLEJusitfyBox = 0x5011, GLEJustifyVert = 0x2000, GLEJustifyHorz = 0x3000 // add LH CH RH BV CV TV }; class GLERange { protected: double m_Min, m_Max; public: GLERange(); ~GLERange(); void setMinMax(double min, double max); void copy(GLERange* other); void copyHas(GLERangeSet* other); void initRange(); bool isMinValid() const; bool isMaxValid() const; void updateRange(double value); void clip(double* value); bool contains(double value); ostream& printRange(ostream& out) const; inline double getMin() { return m_Min; } inline double getMax() { return m_Max; } inline double getWidth() { return m_Max - m_Min; } inline void setMin(double min) { m_Min = min; } inline void setMax(double max) { m_Max = max; } inline bool valid() { return m_Min <= m_Max; } inline bool validNotEmpty() { return m_Min < m_Max; } inline bool invalid() { return m_Min > m_Max; } inline bool invalidOrEmpty() { return m_Min >= m_Max; } inline void updateRange(double value, bool miss) { if (!miss) updateRange(value); } }; inline ostream& operator<<(ostream& os, const GLERange& range) { return range.printRange(os); } class GLERangeSet : public GLERange { protected: bool m_MinSet, m_MaxSet; public: GLERangeSet(); ~GLERangeSet(); void setMinSet(double min); void setMaxSet(double max); void setMinMaxSet(double min, double max); void setMinIfNotSet(double min); void setMaxIfNotSet(double max); void resetSet(); void copySet(GLERangeSet* other); void copyIfNotSet(GLERange* other); void initRangeIfNotSet(); inline bool hasMin() { return m_MinSet; } inline bool hasMax() { return m_MaxSet; } inline bool hasBoth() { return m_MinSet && m_MaxSet; } inline bool hasOne() { return m_MinSet || m_MaxSet; } }; class DLLCLASS GLERectangle { protected: double m_XMin, m_YMin, m_XMax, m_YMax; public: GLERectangle(); GLERectangle(double xmin, double ymin, double xmax, double ymax); GLERectangle(GLERectangle* other); ~GLERectangle(); inline double getXMin() const { return m_XMin; } inline double getXMax() const { return m_XMax; } inline double getYMin() const { return m_YMin; } inline double getYMax() const { return m_YMax; } inline void setXMin(double v) { m_XMin = v; } inline void setXMax(double v) { m_XMax = v; } inline void setYMin(double v) { m_YMin = v; } inline void setYMax(double v) { m_YMax = v; } inline double getWidth() const { return m_XMax - m_XMin; } inline double getHeight() const { return m_YMax - m_YMin; } inline double getXMid() const { return (m_XMin+m_XMax)/2; } inline double getYMid() const { return (m_YMin+m_YMax)/2; } inline bool isValid() const { return m_XMin <= m_XMax; } inline bool isPoint() const { return m_XMin == m_XMax && m_YMin == m_YMax; } void reset(); void normalize(); void copy(GLERectangle* other); void copy(GLEPoint* point); void getDimensions(double* xmin, double* ymin, double* xmax, double* ymax); void setDimensions(double xmin, double ymin, double xmax, double ymax); void translate(double x, double y); void translate(GLEPoint* p); void scale(double s); void subtractXFrom(double x); void subtractYFrom(double y); void grow(double d); bool contains(double x, double y); void initRange(); void updateRange(double x, double y); void updateRange(GLEPoint* pt); void addToRangeX(GLERange* range); void addToRangeY(GLERange* range); ostream& print(ostream& out) const; void toPoint(GLEJustify just, GLEPoint* pt); }; inline ostream& operator<<(ostream& os, const GLERectangle& rect) { return rect.print(os); } class DLLCLASS GLEPoint { public: double m_X, m_Y; public: GLEPoint(); GLEPoint(double x, double y); GLEPoint(const GLEPoint& p); ~GLEPoint(); inline double getX() const { return m_X; } inline double getY() const { return m_Y; } inline void setXY(double x, double y) { m_X = x; m_Y = y; } inline void setX(double x) { m_X = x; } inline void setY(double y) { m_Y = y; } inline void set(const GLEPoint& p) { m_X = p.m_X; m_Y = p.m_Y; } inline void dotScalar(double s) { m_X *= s; m_Y *= s; } inline void addScalar(const GLEPoint& p, double s) { m_X += s*p.m_X; m_Y += s*p.m_Y; } inline void subtractFrom(const GLEPoint* p) { m_X = p->m_X - m_X; m_Y = p->m_Y - m_Y; } inline void add(const GLEPoint& p) { m_X += p.m_X; m_Y += p.m_Y; } inline void add(double x, double y) { m_X += x; m_Y += y; } inline void invert() { m_X *= -1; m_Y *= -1; } inline bool approx(const GLEPoint& p) { return approx(p.getX(), p.getY()); } DLLFCT void add(double s, const GLEPoint& p); DLLFCT double distance(const GLEPoint& p) const; DLLFCT double norm() const; DLLFCT double normSq() const; DLLFCT void normalize(); DLLFCT bool approx(double x, double y); DLLFCT void swap(GLEPoint& other); DLLFCT ostream& write(ostream& os) const; }; inline ostream& operator<<(ostream& os, const GLEPoint& pt) { return pt.write(os); } #include "gle-shapemath.h" class DLLCLASS GLEPoint3D { public: double m_C[3]; public: GLEPoint3D(); GLEPoint3D(double x, double y, double z); GLEPoint3D(const GLEPoint3D& p); inline double get(int i) const { return m_C[i]; } inline void set(int i, double v) { m_C[i] = v; } inline void set(double x, double y, double z) { m_C[0] = x; m_C[1] = y; m_C[2] = z; } DLLFCT void dotScalar(double s); DLLFCT void add(const GLEPoint3D& p); DLLFCT void subtract(const GLEPoint3D& p); DLLFCT void addScalar(double s1, double s2, const GLEPoint3D& p); DLLFCT double norm() const; DLLFCT void normalize(); void ortho3DUnit(const GLEPoint3D& p, GLEPoint3D* r); DLLFCT ostream& write(ostream& os) const; }; class DLLCLASS GLEMatrix { public: double* m_C; int m_Rows, m_Cols; public: GLEMatrix(int rows, int cols); GLEMatrix(const GLEMatrix& p); ~GLEMatrix(); void dot(const GLEPoint3D& p, GLEPoint3D* r) const; void setVertVector(int row, int col, const GLEPoint3D& p); DLLFCT ostream& write(ostream& os) const; }; class DLLCLASS GLEProjection { public: GLEPoint3D m_Eye, m_Reference, m_VVector; public: GLEProjection(); inline GLEPoint3D* getEye() { return &m_Eye; } inline GLEPoint3D* getReference() { return &m_Reference; } inline GLEPoint3D* getV() { return &m_VVector; } void invToReference(GLEMatrix* mtrx); DLLFCT void zoom(double factor); DLLFCT void rotate(double angle, bool horiz); DLLFCT void reference(const GLEPoint3D& ref); DLLFCT void adjustV(double angle); }; class DLLCLASS GLELinearEquation { protected: double m_A, m_B; public: GLELinearEquation(); ~GLELinearEquation(); void DLLFCT fit(double x0, double y0, double x1, double y1); inline double intersect(GLELinearEquation* o) { return (o->m_B - m_B)/(m_A - o->m_A); } inline void fitB(double x0, double y0) { m_B = y0 - m_A*x0; } inline void setA(double a) { m_A = a; } inline void setB(double b) { m_B = b; } inline double apply(double x) const { return m_A*x + m_B; } inline double getA() const { return m_A; } inline double getB() const { return m_B; } }; #include "gle-datatype.h" enum GLEFontStyle { GLEFontStyleRoman, GLEFontStyleBold, GLEFontStyleItalic, GLEFontStyleBoldItalic }; class GLEFont : public GLEDataObject { protected: string m_Name; string m_FullName; GLERC m_Bold; GLERC m_Italic; GLERC m_BoldItalic; GLEFont* m_Parent; int m_Index; int m_Number; public: GLEFont(); ~GLEFont(); // Return the name of the font inline const string& getName() { return m_Name; } inline const string& getFullName() { return m_FullName; } inline const char* getNameC() { return m_Name.c_str(); } inline const char* getFullNameC() { return m_FullName.c_str(); } inline void setName(const string& name) { m_Name = name; } inline void setFullName(const string& name) { m_FullName = name; } inline bool hasStyle(GLEFontStyle style) { return getStyle(style) != NULL; } DLLFCT GLEFontStyle checkStyle(GLEFont* child); DLLFCT GLEFont* getStyle(GLEFontStyle style); void setStyle(GLEFontStyle style, GLEFont* font); inline int getIndex() { return m_Index; } inline void setIndex(int value) { m_Index = value; } inline int getNumber() { return m_Number; } inline void setNumber(int value) { m_Number = value; } inline GLEFont* getBaseFont() { return m_Parent != 0 ? m_Parent : this; } inline void setParent(GLEFont* parent) { m_Parent = parent; } }; enum GLEFillType { GLE_FILL_TYPE_PATTERN }; class GLEFillBase : public GLERefCountObject { public: GLEFillBase(); virtual ~GLEFillBase(); virtual GLEFillType getFillType() = 0; virtual GLEFillBase* clone() = 0; }; class GLEPatternFill : public GLEFillBase { public: GLEPatternFill(int fillDescr); virtual ~GLEPatternFill(); virtual GLEFillType getFillType(); virtual GLEFillBase* clone(); inline void setFillDescription(int fillDescription) { m_fillDescription = fillDescription; } inline int getFillDescription() const { return m_fillDescription; } inline void setBackground(GLEColor* color) { m_background = color; } inline GLEColor* getBackground() const { return m_background.get(); } private: int m_fillDescription; GLERC m_background; }; class DLLCLASS GLEColor : public GLEDataObject { protected: bool m_Transparent; double m_Red, m_Green, m_Blue, m_Alpha; string* m_Name; GLERC m_Fill; public: GLEColor(); GLEColor(double r, double g, double b); GLEColor(double r, double g, double b, double a); explicit GLEColor(double gray); ~GLEColor(); virtual int getType(); virtual bool equals(GLEDataObject* obj); bool equalsApprox(GLEColor* other); DLLFCT void setRGB(double r, double g, double b); DLLFCT void setRGBA(double r, double g, double b, double a); DLLFCT void setRGB255(int r, int g, int b); DLLFCT void setRGB255(double r, double g, double b); void setRGBA255(double r, double g, double b, double a); void setGray(double gray); DLLFCT const char* getName(); void setName(const string& name); void setName(const string* name); void setHexValue(unsigned int v); void setDoubleEncoding(double v); double getDoubleEncoding(); void setHexValueGLE(unsigned int hexValue); unsigned int getHexValueGLE(); double getGray(); GLEColor* clone(); inline double getRed() { return m_Red; } inline double getGreen() { return m_Green; } inline double getBlue() { return m_Blue; } inline double getAlpha() { return m_Alpha; } inline bool hasAlpha() { return float_to_color_comp(m_Alpha) != 255; } inline unsigned char getRedI() { return float_to_color_comp(m_Red); } inline unsigned char getGreenI() { return float_to_color_comp(m_Green); } inline unsigned char getBlueI() { return float_to_color_comp(m_Blue); } inline unsigned char getAlphaI() { return float_to_color_comp(m_Alpha); } inline void setRed(double v) { m_Red = v; } inline void setGreen(double v) { m_Green = v; } inline void setBlue(double v) { m_Blue = v; } inline bool isTransparent() const { return m_Transparent; } inline void setTransparent(bool transp) { m_Transparent = transp; } inline bool isFill() const { return !m_Fill.isNull(); } inline GLEFillBase* getFill() { return m_Fill.get(); } inline void setFill(GLEFillBase* fill) { m_Fill = fill; } DLLFCT void toString(ostream& out); inline std::string* getNameS() { return m_Name; } }; GLERC color_from_double_encoding(double encoding); GLERC color_or_fill_from_int(int hexValue); void update_color_foreground(GLEColor* updateMe, GLEColor* color); void update_color_fill_pattern(GLEColor* updateMe, GLEPatternFill* fill); void update_color_fill_background(GLEColor* updateMe, GLEColor* color); GLERC get_fill_background(GLEColor* fill); GLERC get_fill_foreground(GLEColor* fill); // Each drawable object has a reference to a property store // To, e.g., get the line width of a given object, call: // // double lwidth = obj->getProperties()->getRealProperty(GDOPLineWidth); // // It is also possible to enumerate all properties of an object: // // GLEPropertyStoreModel* model = obj->getProperties()->getModel(); // for (int i = 0; i < model->getNumberOfProperties(); i++) { // GLEProperty* prop = model->getProperty(i); // // do something with prop, e.g., get name, type, ... // } // // All objects of the same type share the same model // // Should two objects with the same properties share the same GLEPropertyStore object? // (For efficiency reasons?) Then we have to decide how to set property values. // // Or should there be a kind of invisible "set property object" // Similar to the "set" command in GLE scripts ? enum GLEPropertyType { GLEPropertyTypeInt, GLEPropertyTypeBool, GLEPropertyTypeReal, GLEPropertyTypeString, GLEPropertyTypeColor, GLEPropertyTypeFont }; enum GLEPropertyID { GLEDOPropertyColor, GLEDOPropertyFillColor, GLEDOPropertyJustify, GLEDOPropertyLineWidth, GLEDOPropertyLineStyle, GLEDOPropertyLineCap, GLEDOPropertyFont, GLEDOPropertyFontSize, GLEDOPropertyArrowSize, GLEDOPropertyArrowAngle, GLEDOPropertyArrowStyle, GLEDOPropertyArrowTip, GLEDOPropertyUserArg }; enum GLELineCap { GLELineCapButt = 0, GLELineCapRound = 1, GLELineCapSquare = 2 }; enum GLEArrowStyle { GLEArrowStyleSimple = 0, GLEArrowStyleFilled = 1, GLEArrowStyleEmpty = 2, GLEArrowStyleSub = 10 }; enum GLEArrowTip { GLEArrowTipRound = 0, GLEArrowTipSharp = 1 }; class GLEProperty { private: string m_Name; const char* m_SetCmdName; GLEPropertyType m_Type; GLEPropertyID m_ID; int m_Index; public: GLEProperty(const char* name, GLEPropertyType type, GLEPropertyID id); GLEProperty(const char* name, const char* cmdname, GLEPropertyType type, GLEPropertyID id); virtual ~GLEProperty(); inline GLEPropertyType getType() { return m_Type; } inline GLEPropertyID getID() { return m_ID; } inline const string& getName() { return m_Name; } inline const char* getNameC() { return m_Name.c_str(); } inline void setSetCommandName(const char* cmdname) { m_SetCmdName = cmdname; } inline const char* getSetCommandName() { return m_SetCmdName; } inline void setIndex(int idx) { m_Index = idx; } inline int getIndex() { return m_Index; } virtual void getPropertyAsString(string* result, GLEMemoryCell* value); virtual void createSetCommandGLECode(ostream& os, GLEMemoryCell* value); virtual bool isEqualToState(GLEPropertyStore* store); virtual void updateState(GLEPropertyStore* store); }; class GLEPropertyNominal : public GLEProperty { private: IntIntHash* m_Value2Name; StringIntHash* m_Name2Value; vector m_NomValues; public: GLEPropertyNominal(const char* name, GLEPropertyType type, GLEPropertyID id); virtual ~GLEPropertyNominal(); void addValue(const char* name, int value); virtual void getPropertyAsString(string* result, GLEMemoryCell* value); }; class GLEPropertyLWidth : public GLEProperty { public: GLEPropertyLWidth(const char* name); virtual ~GLEPropertyLWidth(); virtual bool isEqualToState(GLEPropertyStore* store); virtual void updateState(GLEPropertyStore* store); }; class GLEPropertyLStyle : public GLEProperty { public: GLEPropertyLStyle(const char* name); virtual ~GLEPropertyLStyle(); virtual bool isEqualToState(GLEPropertyStore* store); virtual void updateState(GLEPropertyStore* store); }; class GLEPropertyColor : public GLEProperty { public: GLEPropertyColor(const char* name); virtual ~GLEPropertyColor(); virtual bool isEqualToState(GLEPropertyStore* store); virtual void updateState(GLEPropertyStore* store); }; class GLEPropertyHei : public GLEProperty { public: GLEPropertyHei(const char* name); virtual ~GLEPropertyHei(); virtual bool isEqualToState(GLEPropertyStore* store); virtual void updateState(GLEPropertyStore* store); }; class GLEPropertyFont : public GLEProperty { public: GLEPropertyFont(const char* name); virtual ~GLEPropertyFont(); virtual bool isEqualToState(GLEPropertyStore* store); virtual void updateState(GLEPropertyStore* store); }; class GLEPropertyJustify : public GLEProperty { public: GLEPropertyJustify(const char* name); virtual ~GLEPropertyJustify(); virtual bool isEqualToState(GLEPropertyStore* store); virtual void updateState(GLEPropertyStore* store); virtual void getPropertyAsString(string* result, GLEMemoryCell* value); }; class GLEPropertyFillColor : public GLEProperty { public: GLEPropertyFillColor(const char* name); virtual ~GLEPropertyFillColor(); virtual bool isEqualToState(GLEPropertyStore* store); virtual void updateState(GLEPropertyStore* store); }; class GLEPropertyArrowSize : public GLEProperty { public: GLEPropertyArrowSize(const char* name); virtual ~GLEPropertyArrowSize(); virtual bool isEqualToState(GLEPropertyStore* store); virtual void updateState(GLEPropertyStore* store); }; class GLEPropertyArrowAngle : public GLEProperty { public: GLEPropertyArrowAngle(const char* name); virtual ~GLEPropertyArrowAngle(); virtual bool isEqualToState(GLEPropertyStore* store); virtual void updateState(GLEPropertyStore* store); }; class DLLCLASS GLEPropertyStoreModel : public GLERefCountObject { protected: GLEVectorAutoDelete m_Properties; IntIntHash* m_Hash; bool m_CanScale; int m_NbExtra; public: GLEPropertyStoreModel(); virtual ~GLEPropertyStoreModel(); inline bool isSupportScale() { return m_CanScale; } inline int getNumberOfExtraProperties() { return m_NbExtra; } inline int getNumberOfProperties() { return m_Properties.size(); } inline GLEProperty* getProperty(int idx) { return m_Properties[idx]; } inline bool hasProperty(GLEPropertyID id) { return find(id) != -1; } DLLFCT int find(GLEPropertyID id); void add(GLEProperty* prop); virtual void scale(GLEDrawObject* obj, double sx, double sy); }; class DLLCLASS GLEPropertyStore { protected: GLEArrayImpl m_Values; GLERC m_Model; public: GLEPropertyStore(GLEPropertyStoreModel* model); ~GLEPropertyStore(); inline GLEPropertyStoreModel* getModel() { return m_Model.get(); } inline int getIntProperty(GLEPropertyID id) { return m_Values.getInt(m_Model->find(id)); } inline bool getBoolProperty(GLEPropertyID id) { return m_Values.getBool(m_Model->find(id)); } inline double getRealProperty(GLEPropertyID id) { return m_Values.getDouble(m_Model->find(id)); } inline GLEFont* getFontProperty(GLEPropertyID id) { return (GLEFont*)m_Values.getObject(m_Model->find(id)); } inline GLEColor* getColorProperty(GLEPropertyID id) { return (GLEColor*)m_Values.getObject(m_Model->find(id)); } inline GLEString* getStringProperty(GLEPropertyID id) { return (GLEString*)m_Values.getObject(m_Model->find(id)); } inline void setIntProperty(GLEPropertyID id, int value) { m_Values.setInt(m_Model->find(id), value); } inline void setBoolProperty(GLEPropertyID id, bool value) { m_Values.setBool(m_Model->find(id), value); } inline void setRealProperty(GLEPropertyID id, double value) { m_Values.setDouble(m_Model->find(id), value); } inline void setFontProperty(GLEPropertyID id, GLEFont* value) { m_Values.setObject(m_Model->find(id), value); } inline void setColorProperty(GLEPropertyID id, GLEColor* value) { m_Values.setObject(m_Model->find(id), value); } inline void setStringProperty(GLEPropertyID id, GLEString* value) { m_Values.setObject(m_Model->find(id), value); } inline int getNumberOfProperties() { return m_Model->getNumberOfProperties(); } inline GLEProperty* getProperty(int idx) { return m_Model->getProperty(idx); } inline GLEMemoryCell* getPropertyValue(int idx) { return m_Values.get(idx); } inline void setPropertyValue(int idx, const GLEMemoryCell* value) { m_Values.set(idx, value); } inline GLEMemoryCell* getPropertyValue(GLEProperty* prop) { return m_Values.get(prop->getIndex()); } inline int getIntProperty(GLEProperty* prop) { return m_Values.getInt(prop->getIndex()); } inline double getRealProperty(GLEProperty* prop) { return m_Values.getDouble(prop->getIndex()); } inline void setRealProperty(GLEProperty* prop, double value) { m_Values.setDouble(prop->getIndex(), value); } inline GLEColor* getColorProperty(GLEProperty* prop) { return (GLEColor*)m_Values.getObject(prop->getIndex()); } inline GLEFont* getFontProperty(GLEProperty* prop) { return (GLEFont*)m_Values.getObject(prop->getIndex()); } inline GLEString* getStringProperty(GLEProperty* prop) { return (GLEString*)m_Values.getObject(prop->getIndex()); } inline GLEArrayImpl* getArray() { return &m_Values; } void getPropertyAsString(GLEPropertyID id, string* result); GLEPropertyStore* clone(); }; class GLEFileLocationMap; #define GLE_FILELOCATION_IS_STDIN 1 #define GLE_FILELOCATION_IS_STDOUT 2 #define GLE_FILELOCATION_IS_LOCAL 4 #define GLE_FILELOCATION_IS_ILLEGAL 8 class DLLCLASS GLEFileLocation { protected: unsigned int m_Flags; string m_Name; string m_Ext; string m_Directory; string m_FullPath; public: GLEFileLocation(); GLEFileLocation(const char* file); GLEFileLocation(const GLEFileLocation& other); ~GLEFileLocation(); void fromAbsolutePath(const string& path); void fromRelativePath(const string& dirname, const string& fname); void fromFileNameCrDir(const string& fname); void fromFileNameDir(const string& fname, const string& dirname); void createStdin(); void createStdout(); void createIllegal(); void initDirectory(); void copy(const GLEFileLocation* other); void addExtension(const char* ext); bool isStream(); string getFileName(); string getMainName(); inline unsigned int getFlags() const { return m_Flags; } inline const string& getName() const { return m_Name; } inline const string& getExt() const { return m_Ext; } inline const string& getDirectory() const { return m_Directory; } inline const string& getFullPath() const { return m_FullPath; } inline string& getFullPathNC() { return m_FullPath; } inline bool isStdin() { return (m_Flags & GLE_FILELOCATION_IS_STDIN) != 0; } inline bool isStdout() { return (m_Flags & GLE_FILELOCATION_IS_STDOUT) != 0; } inline void setName(const string& v) { m_Name = v; } inline void setExt(const string& v) { m_Ext = v; } inline void setDirectory(const string& v) { m_Directory = v; } inline void setFullPath(const string& v) { m_FullPath = v; } }; struct surface_struct; class DLLCLASS GLEInterface { protected: GLEScript* m_Script; GLEOutputStream* m_Output; GLEGlobalConfig* m_Config; bool m_MakeDrawObjs; bool m_CommitMode; GLERCVector m_Fonts; GLERCVector m_AllFonts; StringIntHash* m_FontHash; IntIntHash* m_FontIndexHash; GLERC m_TextModel; GLERC m_LineModel; GLERC m_ShapeModel; string* m_InitialPS; GLEFileLocationMap* m_FileInfoMap; public: GLEInterface(); ~GLEInterface(); // Initialize GLE - call once before calling any of the other functions DLLFCT bool initializeGLE(const char* appname, int argc, char **argv); // Returns the version of GLE DLLFCT string getGLEVersion(); DLLFCT string getGLEBuildDate(); // Returns the location of GLE_TOP DLLFCT const char* getGLETop(); // ****************************** Methods for changing settings // Sets the port used by the QGLE server void setSetting(const char* section, const char* name, const char* value); // Write settings to "glerc" file ($HOME/.glerc) void saveSettings(); // ****************************** Methods for rendering a GLE file // The provided function is called for each block of PostScript code created by GLE void setPostScriptCallbackFunction(void* callback); // Should GLE make GLEDrawObjects or just regular output inline void setMakeDrawObjects(bool make) { m_MakeDrawObjs = make; } inline bool isMakeDrawObjects() { return m_MakeDrawObjs; } inline GLEScript* getScript() { return m_Script; } // Set the output stream for error messages, etc.. DLLFCT void setOutputStream(GLEOutputStream* output); DLLFCT GLERC newGLEFile(const char* glecode, const char* tmpfile); DLLFCT GLERC loadGLEFile(const char* glefile); DLLFCT void saveGLEFile(GLEScript* script, const char* glefile); DLLFCT void showGLEFile(GLEScript* script); DLLFCT void setCompatibilityMode(const char* version); DLLFCT void renderGLE(GLEScript* script, const char* outfile, int device, bool toMemory = false); DLLFCT void commitChangesGLE(GLEScript* script); // Create a new GLE script "in memory" GLEScript* createGLEScript(); // ****************************** Methods for working with text int getNumberOfColors(); GLEColor* getColor(int i); // Return the number of available fonts int getNumberOfFonts(); // Return the i-the font GLEFont* getFont(int i); // Return the font matching a given name GLEFont* getFont(const string& name); // Return the font matching a given name GLEFont* getFont(const char* name); GLEFont* getFontIndex(int font); // Return the property store model for a text string inline GLEPropertyStoreModel* getTextPropertyStoreModel() { return m_TextModel.get(); } DLLFCT const char* getInitialPostScript(); DLLFCT const char* getTerminatePostScript(); // Render a given string DLLFCT GLETextDO* renderText(const char* strUTF8, GLEPropertyStore* prop); void renderText(GLETextDO* text, GLEPropertyStore* prop); // Deletes a given object that is no longer required void deleteGLEObject(GLEDrawObject* object); inline GLEOutputStream* getOutput() { return m_Output; } DLLFCT bool isDeviceSupported(int device); DLLFCT const char* getDeviceFilenameExtension(int device); // Return the property store model for a line inline GLEPropertyStoreModel* getLinePropertyStoreModel() { return m_LineModel.get(); } inline GLEPropertyStoreModel* getShapePropertyStoreModel() { return m_ShapeModel.get(); } DLLFCT void clearAllCmdLine(); DLLFCT void setCmdLineOption(const char* name); DLLFCT void setCmdLineOptionString(const char* name, const char* value, int arg = 0); DLLFCT bool hasCmdLineOptionString(const char* name); DLLFCT string getGhostScriptLocation(); DLLFCT string getToolLocation(const char* name); DLLFCT string getUserConfigLocation(); // Returns the location of gle-manual.pdf DLLFCT string getManualLocation(); DLLFCT void findDependencies(const char* root); DLLFCT void saveRCFile(); DLLFCT void addFileInfo(const GLEFileLocation& f1); DLLFCT vector getFileInfos(); inline bool hasFileInfos() { return m_FileInfoMap != NULL; } DLLFCT void evalString(const char* str, GLEScript* script = NULL); DLLFCT string getTempFile(); DLLFCT int copyFile(const string& from, const string& to, string* err = NULL); void initTextProperties(GLEPropertyStore* prop); // Get information about 3D surface plots DLLFCT surface_struct* getSurface(); DLLFCT void convertPDFToImage(char* pdfData, int pdfLength, double resolution, int device, int options, gle_write_func writeFunc, void* closure); DLLFCT bool readFileOrGZIPTxt(const char* name, std::string* result); public: inline void setCommitMode(bool commit) { m_CommitMode = commit; } inline bool isCommitMode() { return m_CommitMode; } inline GLEGlobalConfig* getConfig() { return m_Config; } inline void setConfig(GLEGlobalConfig* config) { m_Config = config; } CmdLineObj* getCmdLine(); public: // For GLE internal use only void addFont(GLEFont* font); void addSubFont(GLEFont* font); }; class DLLCLASS GLEErrorMessage { private: int m_Line, m_Column, m_Delta; string m_File; string m_LineAbbrev; string m_ErrorMsg; public: GLEErrorMessage(); ~GLEErrorMessage(); inline int getLine() { return m_Line; } inline void setLine(int line) { m_Line = line; } inline int getColumn() { return m_Column; } inline void setColumn(int col) { m_Column = col; } inline int getDelta() { return m_Delta; } inline void setDelta(int delta) { m_Delta = delta; } inline const char* getFile() { return m_File.c_str(); } inline void setFile(const string& val) { m_File = val; } inline const char* getLineAbbrev() { return m_LineAbbrev.c_str(); } inline void setLineAbbrev(const string& val) { m_LineAbbrev = val; } inline const char* getErrorMsg() { return m_ErrorMsg.c_str(); } inline void setErrorMsg(const string& val) { m_ErrorMsg = val; } }; class DLLCLASS GLEOutputStream { private: int m_ExitCode; public: GLEOutputStream(); virtual ~GLEOutputStream(); virtual void println(); virtual void println(const char* str); virtual void printflush(const char* str); virtual void error(GLEErrorMessage* msg); inline int getExitCode() { return m_ExitCode; } inline void setExitCode(int code) { m_ExitCode = code; } }; enum GLEDrawObjectType { // Only implement a few to start GDOScript, GDOText, GDOLine, GDOEllipse, GDOArc, GDOObject }; enum GLEHasArrow { GLEHasArrowNone = 0, GLEHasArrowStart = 1, GLEHasArrowEnd = 2, GLEHasArrowBoth = 3 }; class DLLCLASS GLEDrawObject : public GLERefCountObject { protected: int m_Flag; GLEPropertyStore* m_Properties; public: GLEDrawObject(); virtual ~GLEDrawObject(); // Get the exact bounding box of this object (in cm) virtual void getPSBoundingBox(GLERectangle* box); // Return the PostScript code generated for this object (if any) virtual const char* getPostScriptCode(); // Position of the object in the originating script (if any) // This can be used to delete or move the object int getSourceLine1(); int getSourceLine2(); // What type of object are we dealing with? DLLFCT virtual GLEDrawObjectType getType() = 0; inline void setFlag(int flag) { m_Flag |= flag; } inline bool hasFlag(int flag) { return (m_Flag & flag) != 0; } // Return the list of properties associated with this object inline GLEPropertyStore* getProperties() { return m_Properties; } void setProperties(GLEPropertyStore* store); virtual void initProperties(GLEInterface* iface); virtual bool needsAMove(GLEPoint& pt); virtual void createGLECode(string& code); virtual void updateBoundingBox(); virtual void applyTransformation(bool dir); virtual GLEDrawObject* clone(); virtual bool approx(GLEDrawObject* other); virtual bool modified(); virtual void draw(); GLEDrawObject* deepClone(); void applyTransformationPt(GLEPoint* point, bool dir); inline int getIntProperty(GLEPropertyID id) { return m_Properties->getIntProperty(id); } inline bool getBoolProperty(GLEPropertyID id) { return m_Properties->getBoolProperty(id); } inline double getRealProperty(GLEPropertyID id) { return m_Properties->getRealProperty(id); } inline GLEFont* getFontProperty(GLEPropertyID id) { return m_Properties->getFontProperty(id); } inline GLEColor* getColorProperty(GLEPropertyID id) { return m_Properties->getColorProperty(id); } inline void setIntProperty(GLEPropertyID id, int value) { m_Properties->setIntProperty(id, value); } inline void setBoolProperty(GLEPropertyID id, bool value) { m_Properties->setBoolProperty(id, value); } inline void setRealProperty(GLEPropertyID id, double value) { m_Properties->setRealProperty(id, value); } inline void setFontProperty(GLEPropertyID id, GLEFont* value) { m_Properties->setFontProperty(id, value); } inline void setColorProperty(GLEPropertyID id, GLEColor* value) { m_Properties->setColorProperty(id, value); } void getPropertyAsString(GLEPropertyID id, string* result) { m_Properties->getPropertyAsString(id, result); } }; class GLEHasArrowBase { public: GLEHasArrowBase(); inline GLEHasArrow getArrow() { return m_Arrow; } inline void setArrow(GLEHasArrow arrow) { m_Arrow = arrow; } protected: GLEHasArrow m_Arrow; }; class GLELineDO : public GLEDrawObject, public GLEHasArrowBase { protected: GLEPoint m_P1, m_P2; public: GLELineDO(); GLELineDO(double x1, double y1, double x2, double y2); GLELineDO(const GLEPoint& p1, const GLEPoint& p2); virtual ~GLELineDO(); virtual GLEDrawObjectType getType(); inline GLEPoint& getP1() { return m_P1; } inline GLEPoint& getP2() { return m_P2; } inline void setP1(const GLEPoint& p1) { m_P1 = p1; } inline void setP2(const GLEPoint& p2) { m_P2 = p2; } virtual void initProperties(GLEInterface* iface); virtual bool needsAMove(GLEPoint& pt); virtual void createGLECode(string& code); virtual void updateBoundingBox(); virtual void applyTransformation(bool dir); virtual GLEDrawObject* clone(); virtual bool approx(GLEDrawObject* other); }; class GLEEllipseDO : public GLEDrawObject { protected: GLEPoint m_Center; double m_Rx, m_Ry; public: GLEEllipseDO(); GLEEllipseDO(double x0, double y0, double r); GLEEllipseDO(const GLEPoint& c, double rx, double ry); GLEEllipseDO(double x0, double y0, double rx, double ry); virtual ~GLEEllipseDO(); virtual GLEDrawObjectType getType(); inline GLEPoint& getCenter() { return m_Center; } inline void setCenter(const GLEPoint& c) { m_Center = c; } inline double getRadiusX() { return m_Rx; } inline double getRadiusY() { return m_Ry; } inline void setRadiusX(double r) { m_Rx = r; } inline void setRadiusY(double r) { m_Ry = r; } DLLFCT void setRadius(double r); inline bool isCircle() { return m_Rx == m_Ry; } DLLFCT GLEPoint getPoint(GLEJustify just); virtual bool needsAMove(GLEPoint& pt); virtual void createGLECode(string& code); virtual void updateBoundingBox(); virtual void applyTransformation(bool dir); virtual GLEDrawObject* clone(); virtual bool approx(GLEDrawObject* other); virtual void initProperties(GLEInterface* iface); }; class GLEArcDO : public GLEEllipseDO, public GLEHasArrowBase { protected: double m_Angle1, m_Angle2; public: GLEArcDO(); GLEArcDO(double x0, double y0, double r, double a1, double a2); GLEArcDO(double x0, double y0, double rx, double ry, double a1, double a2); virtual ~GLEArcDO(); virtual GLEDrawObjectType getType(); inline double getAngle1() { return m_Angle1; } inline double getAngle2() { return m_Angle2; } inline void setAngle1(double a1) { m_Angle1 = a1; } inline void setAngle2(double a2) { m_Angle2 = a2; } virtual bool needsAMove(GLEPoint& pt); virtual void createGLECode(string& code); virtual void updateBoundingBox(); virtual GLEDrawObject* clone(); virtual bool approx(GLEDrawObject* other); virtual void initProperties(GLEInterface* iface); DLLFCT GLEPoint& getPoint1(GLEPoint& pt); DLLFCT GLEPoint& getPoint2(GLEPoint& pt); DLLFCT GLEPoint& getPointMid(GLEPoint& pt); DLLFCT void normalize(); }; class GLETextDO : public GLEDrawObject { protected: GLEPoint m_Position; string m_Text; string m_PostScript; GLERectangle m_PSBoundingBox; double m_BaseLine; bool m_Modified; public: GLETextDO(); GLETextDO(GLEPoint& position, const string& text); virtual ~GLETextDO(); virtual const char* getPostScriptCode(); virtual void getPSBoundingBox(GLERectangle* box); GLEDrawObjectType getType(); inline double getBaseLine() { return m_BaseLine; } void initBB(double width, double height, double baseline); inline string* getPostScriptPtr() { return &m_PostScript; } inline const string& getText() { return m_Text; } inline const char* getTextC() { return m_Text.c_str(); } inline void setText(const string& text) { m_Text = text; } inline void setText(const char* text) { m_Text = text; } inline GLEPoint& getPosition() { return m_Position; } inline void setPosition(const GLEPoint& pos) { m_Position = pos; } virtual bool needsAMove(GLEPoint& pt); virtual void createGLECode(string& code); virtual void updateBoundingBox(); virtual void applyTransformation(bool dir); virtual void initProperties(GLEInterface* iface); virtual GLEDrawObject* clone(); virtual bool approx(GLEDrawObject* other); virtual bool modified(); DLLFCT void setModified(bool modified); DLLFCT void render(GLEInterface* iface); }; // ... class DLLCLASS GLEComposedObject : public GLEDrawObject { private: GLERCVector m_Objs; public: GLEComposedObject(); virtual ~GLEComposedObject(); // Return the number of objects defined by this object inline int getNumberObjects() { return m_Objs.size(); } inline void setNumberObjects(int nb) { m_Objs.resize(nb); } // Return given object defined by the script inline GLEDrawObject* getObject(int i) { return m_Objs.get(i); } inline void setObject(int i, GLEDrawObject* obj) { m_Objs[i] = obj; } // Add a new object to this composed object inline void addObject(GLEDrawObject* obj) { m_Objs.add(obj); } void DLLFCT clear(); void removeDeletedObjects(); }; class GLEObjectDO; class DLLCLASS GLEObjectDOConstructor : public GLEPropertyStoreModel { protected: GLESub* m_Sub; public: GLEObjectDOConstructor(GLESub* sub); virtual ~GLEObjectDOConstructor(); DLLFCT const string& getName(); DLLFCT GLEObjectDO* constructObject(); DLLFCT GLEScript* getScript(); inline GLESub* getSubroutine() { return m_Sub; } virtual void scale(GLEDrawObject* obj, double sx, double sy); }; class GLEObjectDO : public GLEDrawObject { protected: GLEPoint m_Position; string m_PostScript; GLERC m_ObjRep; GLERC m_RefPoint; GLEObjectDOConstructor* m_Cons; public: GLEObjectDO(GLEObjectDOConstructor* cons); virtual ~GLEObjectDO(); virtual const char* getPostScriptCode(); virtual void getPSBoundingBox(GLERectangle* box); GLEDrawObjectType getType(); inline string* getPostScriptPtr() { return &m_PostScript; } inline GLEPoint& getPosition() { return m_Position; } inline void setPosition(const GLEPoint& pos) { m_Position = pos; } virtual bool needsAMove(GLEPoint& pt); virtual void createGLECode(string& code); virtual void updateBoundingBox(); virtual void applyTransformation(bool dir); virtual void initProperties(GLEInterface* iface); virtual GLEDrawObject* clone(); virtual bool approx(GLEDrawObject* other); void makePropertyStore(); DLLFCT void render(); DLLFCT void computeReferencePoint(GLEPoint* pt); inline void setObjectRepresentation(GLEObjectRepresention* rep) { m_ObjRep = rep; } inline GLEObjectRepresention* getObjectRepresentation() { return m_ObjRep.get(); } inline GLEObjectDOConstructor* getConstructor() { return m_Cons; } inline void setRefPointString(GLEString* str) { m_RefPoint = str; } inline GLEString* getRefPointString() { return m_RefPoint.get(); } }; // must come after definition GLEFileLocation and of GLEObjectDOConstructor #include "gle-sourcefile.h" class DLLCLASS GLEScript : public GLEComposedObject { protected: GLEPcodeIndexed* m_Pcode; GLERun* m_Run; GLEParser* m_Parser; GLEPolish* m_Polish; GLEGlobalSource m_File; GLEPoint m_Size, m_BoundingBox, m_BoundingBoxOrigin; GLERCVector m_NewObjs; string m_PostScriptCode; string m_PDFCode; int m_CurrObject; public: GLEScript(); virtual ~GLEScript(); void cleanUp(); // What type of object are we dealing with? virtual GLEDrawObjectType getType(); DLLFCT void updateObjectDOConstructors(); GLEDrawObject* DLLFCT newGLEObject(GLEDrawObjectType type); void DLLFCT cancelObject(GLEDrawObject* obj); inline GLEGlobalSource* getSource() { return &m_File; } inline GLEFileLocation* getLocation() { return m_File.getLocation(); } inline const GLEPoint& getSize() { return m_Size; } inline const GLEPoint& getBoundingBox() { return m_BoundingBox; } inline const GLEPoint& getBoundingBoxOrigin() { return m_BoundingBoxOrigin; } inline void setSize(double wd, double hi) { m_Size.setXY(wd, hi); } inline void setBoundingBox(double wd, double hi) { m_BoundingBox.setXY(wd, hi); } inline void setBoundingBoxOrigin(double x, double y) { m_BoundingBoxOrigin.setXY(x, y); } inline void resetObjectIterator() { m_CurrObject = 0; } GLEDrawObject* nextObject(); inline GLEInterface* getGLEInterface() { return GLEGetInterfacePointer(); } inline GLERun* getRun() { return m_Run; } inline GLEParser* getParser() { return m_Parser; } inline GLEPolish* getPolish() { return m_Polish; } inline GLEPcodeIndexed* getPcode() { return m_Pcode; } inline void setRun(GLERun* run) { m_Run = run; } inline void setParser(GLEParser* parser) { m_Parser = parser; } inline void setPolish(GLEPolish* polish) { m_Polish = polish; } inline void setPcode(GLEPcodeIndexed* code) { m_Pcode = code; } inline int getNumberNewObjects() { return m_NewObjs.size(); } inline GLEDrawObject* getNewObject(int i) { return m_NewObjs.get(i); } inline void addNewObject(GLEDrawObject* obj) { m_NewObjs.add(obj); } void clearNewObjects(); virtual const char* getPostScriptCode(); virtual string* getRecordedBytesBuffer(int device); }; class DLLCLASS GLEColorList { protected: GLERCVector m_Colors; StringIntHash m_ColorHash; GLERCVector m_OldColors; StringIntHash m_OldColorHash; public: GLEColorList(); ~GLEColorList(); void reset(); void defineColor(const char* name, unsigned int value); void defineColor(const string& name, unsigned int value); void defineColor(const string& name, GLEColor* color); void defineOldColor(const char* name, unsigned int value); void defineOldColor(const string& name, unsigned int value); GLEColor* get(const string& name); DLLFCT GLEColor* getSafeDefaultBlack(const string& name); inline int getNbColors() { return m_Colors.size(); } inline GLEColor* getColor(int i) { return m_Colors.get(i); } void defineDefaultColors(); private: void defineGrays(); void defineSVGColors(); void defineOldGLEColors(); }; GLEColorList* DLLFCT GLEGetColorList(); class GLEStringSettings { public: void setHeight(double hei); void setFontLWidth(double lwidht); // ... }; typedef struct { double xt, yt; double xa, ya; double xb, yb; double xl, yl; } GLEArrowPoints; DLLFCT void GLESetDefaultArrowProperties(double lwd, GLEPropertyStore* prop); DLLFCT void GLEGetArrowPoints(GLEPoint& pt, double dx, double dy, GLEPropertyStore* props, double fac, GLEArrowPoints* pts); DLLFCT void GLEGetArrowPointsNoProps(GLEPoint& pt, double dx, double dy, double lwd, double size, double angle, GLEArrowPoints* pts); void GLEInitColorProperty(GLEPropertyStore* prop); void GLEInitSimpleLineProperties(GLEPropertyStore* prop); void GLEInitLineProperties(GLEPropertyStore* prop); void GLEInitArrowProperties(GLEPropertyStore* prop); void GLEInitShapeFillColor(GLEPropertyStore* prop); void GLEInitTextProperties(GLEPropertyStore* prop); // Implements: (int)floor((double)dpi/72.0*bbox+1); // Not inline because math.h may not be included in some cpp files, which is required by floor() DLLFCT int GLEBBoxToPixels(double dpi, double bbox); #endif gle-graphics-4.2.4c/src/gle/gle-interface/gle-datatype.h0000664000000000000000000002601311652073536021537 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ #ifndef __GLE_DATATYPE__ #define __GLE_DATATYPE__ class GLEArrayImpl; class GLESub; class GLELocalVars; class gmodel; typedef enum { GLEObjectTypeUnknown, GLEObjectTypeBool, GLEObjectTypeInt, GLEObjectTypeDouble, GLEObjectTypeString, GLEObjectTypeArray, GLEObjectTypeColor, GLEObjectTypeDynamicSub, GLEObjectTypeObjectRep, GLEObjectTypePoint, GLEObjectTypeClassDefinition, GLEObjectTypeClassInstance } GLEObjectType; class GLEDataObject : public GLERefCountObject { public: GLEDataObject(); virtual ~GLEDataObject(); virtual int getType(); virtual bool equals(GLEDataObject* obj); virtual void print(ostream& out) const; }; typedef union { bool BoolVal; int IntVal; double DoubleVal; GLEDataObject *ObjectVal; } GLEMemoryCellEntry; typedef enum { GLE_MC_UNKNOWN, GLE_MC_BOOL, GLE_MC_INT, GLE_MC_DOUBLE, GLE_MC_OBJECT } GLEMemoryCellType; typedef struct { GLEMemoryCellType Type; GLEMemoryCellEntry Entry; } GLEMemoryCell; #define GLE_MC_ISA(a,b) (a->Type == b) #define GLE_MC_INIT(a) a.Type = GLE_MC_UNKNOWN inline void GLE_MC_DEL_INTERN(GLEMemoryCell* a) { if (a->Type == GLE_MC_OBJECT) { GLE_DEL_RC_INTERN(a->Entry.ObjectVal); } } inline void GLE_MC_SET_DOUBLE(GLEMemoryCell* a, double v) { GLE_MC_DEL_INTERN(a); a->Entry.DoubleVal = v; a->Type = GLE_MC_DOUBLE; } inline void GLE_MC_SET_INT(GLEMemoryCell* a, int v) { GLE_MC_DEL_INTERN(a); a->Entry.IntVal = v; a->Type = GLE_MC_INT; } inline void GLE_MC_SET_BOOL(GLEMemoryCell* a, bool v) { GLE_MC_DEL_INTERN(a); a->Entry.BoolVal = v; a->Type = GLE_MC_BOOL; } inline void GLE_MC_SET_UNKNOWN(GLEMemoryCell* a) { GLE_MC_DEL_INTERN(a); a->Type = GLE_MC_UNKNOWN; } inline void GLE_MC_SET_OBJECT(GLEMemoryCell* a, GLEDataObject* v) { if (a->Type == GLE_MC_OBJECT) { a->Entry.ObjectVal = (GLEDataObject*)GLE_SET_RC(a->Entry.ObjectVal, v); } else { a->Entry.ObjectVal = (GLEDataObject*)GLE_INIT_RC(v); } a->Type = GLE_MC_OBJECT; } inline void GLE_MC_COPY(GLEMemoryCell* a, GLEMemoryCell* b) { if (b->Type == GLE_MC_OBJECT) { GLE_MC_SET_OBJECT(a, b->Entry.ObjectVal); } else { GLE_MC_DEL_INTERN(a); a->Entry = b->Entry; a->Type = b->Type; } } bool gle_memory_cell_equals(GLEMemoryCell* a, GLEMemoryCell* b); void gle_memory_cell_print(GLEMemoryCell* a, ostream& out); bool gle_memory_cell_to_double(GLEMemoryCell* a, double* result); unsigned int getUTF8NumberOfChars(const char* str, unsigned int len); class DLLCLASS GLEPointDataObject : public GLEDataObject { protected: GLEPoint m_point; public: GLEPointDataObject(double x, double y); virtual ~GLEPointDataObject(); virtual int getType(); virtual bool equals(GLEDataObject* obj); virtual void print(ostream& out) const; }; class DLLCLASS GLEString : public GLEDataObject { protected: unsigned int* m_Data; unsigned int m_Length; unsigned int m_Alloc; unsigned int m_Intern; public: GLEString(); GLEString(const char* utf8); GLEString(const string& utf8); virtual ~GLEString(); inline unsigned int length() const { return m_Length; } inline unsigned int get(unsigned int i) const { return m_Data[i]; } inline void set(unsigned int i, unsigned int v) { m_Data[i] = v; } unsigned int getI(unsigned int i) const; bool isSmallerThanI(const GLEString* s2) const; bool equalsI(const char* str); virtual bool equals(GLEDataObject* obj); virtual void print(ostream& out) const; void fromUTF8(const char* str); void fromUTF8(const string& str); void fromUTF8(const char* str, unsigned int len); ostream& toUTF8(ostream& out) const; void toUTF8(string& out) const; void toUTF8(char* out) const; string toUTF8() const; GLEString* substring(unsigned int from, unsigned int to) const; GLEArrayImpl* split(char bych) const; void addQuotes(); void join(char bych, GLEArrayImpl* arr, int from = 0, int to = -1); void resize(unsigned int size); void DLLFCT setSize(unsigned int size); virtual int getType(); static GLEString* getEmptyString(); }; inline ostream& operator<<(ostream& os, const GLEString& pos) { return pos.toUTF8(os); } typedef GLERC GLEStringKey; struct GLEStringCompare { bool operator()(const GLEStringKey& s1, const GLEStringKey& s2) const { return s1->isSmallerThanI(s2.get()); } }; class GLEArray : public GLEDataObject { public: GLEArray(); virtual ~GLEArray(); }; class DLLCLASS GLEArrayImpl : public GLEArray { protected: GLEMemoryCell* m_Data; unsigned int m_Length; unsigned int m_Alloc; public: GLEArrayImpl(); virtual ~GLEArrayImpl(); void clear(); void set(unsigned int i, const GLEMemoryCell* cell); inline GLEMemoryCell* get(unsigned int i) { return &m_Data[i]; } inline GLEDataObject* getObjectUnsafe(unsigned int i) { return m_Data[i].Entry.ObjectVal; } inline unsigned int size() { return m_Length; } void init(unsigned int i); int getType(unsigned int i); double DLLFCT getDouble(unsigned int i); void DLLFCT setDouble(unsigned int i, double v); int DLLFCT getInt(unsigned int i); void DLLFCT setInt(unsigned int i, int v); bool DLLFCT getBool(unsigned int i); void DLLFCT setBool(unsigned int i, bool v); void DLLFCT setUnknown(unsigned int i); bool DLLFCT isUnknown(unsigned int i); void DLLFCT setObject(unsigned int i, GLEDataObject* v); DLLFCT GLEDataObject* getObject(unsigned int i); DLLFCT GLERC getString(unsigned int i); void addObject(GLEDataObject* v); void addInt(int v); void ensure(unsigned int size); void resize(unsigned int size); void extend(unsigned int size); void enumStrings(ostream& out); virtual int getType(); private: void resizeMemory(unsigned int size); }; class DLLCLASS GLEArrayWithFreeList : public GLEArrayImpl { }; typedef map GLEStringHashData; class GLEStringHash : public GLEArrayImpl { protected: GLEStringHashData m_Map; // FIXME: add freelist public: GLEStringHash(); virtual ~GLEStringHash(); void setObjectByKey(const GLEStringKey& key, GLEDataObject* v); GLEDataObject* getObjectByKey(const GLEStringKey& key); void getKeys(GLEArrayImpl* keys); inline GLEStringHashData* getHash() { return &m_Map; } }; class GLEDynamicSub : public GLEDataObject { protected: GLESub* m_Sub; GLELocalVars* m_VarValues; // FIXME: replace by GLEArrayImpl // to store values of local variables gmodel* m_State; public: GLEDynamicSub(); GLEDynamicSub(GLESub* sub); virtual ~GLEDynamicSub(); virtual int getType(); inline GLESub* getSub() { return m_Sub; } inline void setSub(GLESub* sub) { m_Sub = sub; } inline GLELocalVars* getLocalVars() { return m_VarValues; } inline void setLocalVars(GLELocalVars* vars) { m_VarValues = vars; } inline void setState(gmodel* state) { m_State = state; } inline gmodel* getState() { return m_State; } }; class GLEObjectRepresention : public GLEDataObject { protected: GLERectangle m_Rect; GLERC m_SubObjs; GLERC m_DynSub; public: GLEObjectRepresention(); virtual ~GLEObjectRepresention(); inline GLERectangle* getRectangle() { return &m_Rect; } GLEObjectRepresention* getChildObject(GLEString* elem); bool setChildObject(GLEString* elem, GLEObjectRepresention* obj); void enableChildObjects(); void translateChildrenRecursive(GLEPoint* trans); void copyChildrenRecursive(GLEObjectRepresention* newobj, gmodel* oldstate); void printNames(); virtual int getType(); inline bool isChildObjectsEnabled() { return !m_SubObjs.isNull(); } inline GLEStringHash* getChilds() { return m_SubObjs.get(); } inline bool hasSub() { return !m_DynSub.isNull(); } inline GLEDynamicSub* getSub() { return m_DynSub.get(); } inline void setSub(GLEDynamicSub* sub) { m_DynSub = sub; } }; class GLEClassDefinition : public GLEDataObject { protected: GLERC m_Name; GLERC m_FieldNames; public: GLEClassDefinition(const char* name); void addField(const char* fieldName); virtual int getType(); virtual bool equals(GLEDataObject* obj); virtual void print(ostream& out) const; }; class GLEClassInstance : public GLEDataObject { protected: GLERC m_Definition; GLEArrayImpl m_Data; public: GLEClassInstance(GLEClassDefinition* definition); virtual int getType(); virtual bool equals(GLEDataObject* obj); virtual void print(ostream& out) const; inline GLEClassDefinition* getDefinition() { return m_Definition.get(); } inline GLEArrayImpl* getArray() { return &m_Data; } }; GLEClassInstance* getGLEClassInstance(GLEMemoryCell* object, GLEClassDefinition* def); #endif gle-graphics-4.2.4c/src/gle/graph.h0000664000000000000000000004602011726234305015546 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ #include "gle-block.h" #include "axis.h" class GLEGraphBlockBase; class GLEGraphDrawCommand; class GLEGraphBlockData; class GLEGraphBlockInstance; const int GLE_GRAPH_LAYER_UNDEFINED = -1; const int GLE_GRAPH_LAYER_GRID = 200; const int GLE_GRAPH_LAYER_FILL = 350; const int GLE_GRAPH_LAYER_BAR = 350; const int GLE_GRAPH_LAYER_AXIS = 500; const int GLE_GRAPH_LAYER_LINE = 700; const int GLE_GRAPH_LAYER_ERROR_BAR = 700; const int GLE_GRAPH_LAYER_MARKER = 700; const int GLE_GRAPH_LAYER_DRAW_COMMAND = 700; class GLEInternalClassDefinitions : public GLERefCountObject { public: GLEInternalClassDefinitions(); inline GLEClassDefinition* getKeySeparator() { return m_keySeparator.get(); } inline GLEClassDefinition* getDrawCommand() { return m_drawCommand.get(); } inline GLEClassDefinition* getFill() { return m_fill.get(); } inline GLEClassDefinition* getBar() { return m_bar.get(); } public: GLERC m_keySeparator; GLERC m_drawCommand; GLERC m_fill; GLERC m_bar; }; class GLEGraphDataSetOrder : public GLERefCountObject { public: GLEGraphDataSetOrder(GLEGraphBlockData* data); void addDataSet(int dataSetID); void addObject(GLEDataObject* object); inline GLEArrayImpl* getArray() { return m_order.get(); } inline GLEGraphBlockData* getData() { return m_data; } private: GLEGraphBlockData* m_data; GLERC m_order; std::set m_isIn; }; class GLEGraphBlockData { public: GLEGraphBlockData(GLEGraphBlockBase* graphBlockBase); inline GLEGraphBlockBase* getGraphBlockBase() { return m_graphBlockBase; } inline GLEGraphDataSetOrder* getOrder() { return m_order.get(); } private: GLEGraphBlockBase* m_graphBlockBase; GLERC m_order; }; class GLEGraphPart { public: GLEGraphPart(); virtual ~GLEGraphPart(); virtual std::set getLayers() = 0; virtual void drawLayer(int layer); virtual void addToOrder(GLEGraphDataSetOrder* order); virtual void drawLayerObject(int layer, GLEMemoryCell* object); }; class GLEGraphPartGrid : public GLEGraphPart { public: GLEGraphPartGrid(); virtual ~GLEGraphPartGrid(); virtual std::set getLayers(); virtual void drawLayer(int layer); void drawLayerPart(DrawAxisPart axisPart); }; class GLEGraphPartFills : public GLEGraphPart { public: GLEGraphPartFills(); virtual ~GLEGraphPartFills(); virtual std::set getLayers(); virtual void drawLayerObject(int layer, GLEMemoryCell* object); bool shouldDraw(int n); void drawFill(int n); }; class GLEGraphPartBars : public GLEGraphPart { public: GLEGraphPartBars(); virtual ~GLEGraphPartBars(); virtual std::set getLayers(); virtual void drawLayerObject(int layer, GLEMemoryCell* object); bool shouldDraw(int n); void drawBar(int b); }; class GLEGraphPartAxis : public GLEGraphPart { public: GLEGraphPartAxis(); virtual ~GLEGraphPartAxis(); virtual std::set getLayers(); virtual void drawLayer(int layer); void setBox(GLERectangle* box); private: GLERectangle* m_box; }; class GLEGraphPartLines : public GLEGraphPart { public: GLEGraphPartLines(); virtual ~GLEGraphPartLines(); virtual std::set getLayers(); virtual void addToOrder(GLEGraphDataSetOrder* order); virtual void drawLayerObject(int layer, GLEMemoryCell* object); bool shouldDraw(int dn); void drawLine(int dn); }; class GLEGraphPartErrorBars : public GLEGraphPart { public: GLEGraphPartErrorBars(); virtual ~GLEGraphPartErrorBars(); virtual std::set getLayers(); virtual void addToOrder(GLEGraphDataSetOrder* order); virtual void drawLayerObject(int layer, GLEMemoryCell* object); bool shouldDraw(int dn); void drawErrorBars(int dn); }; class GLEGraphPartMarkers : public GLEGraphPart { public: GLEGraphPartMarkers(); virtual ~GLEGraphPartMarkers(); virtual std::set getLayers(); virtual void addToOrder(GLEGraphDataSetOrder* order); virtual void drawLayerObject(int layer, GLEMemoryCell* object); bool shouldDraw(int dn); void drawMarkers(int dn); }; class GLEGraphDrawCommands : public GLEGraphPart { public: GLEGraphDrawCommands(); virtual ~GLEGraphDrawCommands(); virtual std::set getLayers(); virtual void drawLayerObject(int layer, GLEMemoryCell* object); void doDrawCommand(GLESourceLine& sline, GLEGraphBlockInstance* graphBlock); private: GLEVectorAutoDelete m_drawCommands; }; class GLEGraphBlockInstance : public GLEBlockInstance { public: GLEGraphBlockInstance(GLEGraphBlockBase* parent); virtual ~GLEGraphBlockInstance(); virtual void executeLine(GLESourceLine& sline); virtual void endExecuteBlock(); void doDrawCommand(GLESourceLine& sline); int getLayer() const; int getLayerWithDefault(int defaultLayer) const; void setLayer(int layer); void drawParts(); GLEGraphPartAxis* getAxis(); void setData(GLEGraphBlockData* data); GLEGraphBlockData* getData(); GLEGraphBlockBase* getGraphBlockBase(); private: GLEGraphBlockBase* m_graphBlockBase; int m_layer; GLEGraphBlockData* m_data; GLEGraphDrawCommands* m_drawCommands; GLEGraphPartAxis* m_axis; GLEVectorAutoDelete m_graphParts; }; class GLEGraphBlockBase : public GLEBlockBase { public: GLEGraphBlockBase(); virtual ~GLEGraphBlockBase(); virtual GLEBlockInstance* beginExecuteBlockImpl(GLESourceLine& sline, int *pcode, int *cp); virtual bool checkLine(GLESourceLine& sline); inline GLEInternalClassDefinitions* getClassDefinitions() { return m_classDefinitions.get(); } private: GLERC m_classDefinitions; }; #define BEGINDEF extern #define GLE_GRAPH_LM_PLAIN 0 #define GLE_GRAPH_LM_STEPS 1 #define GLE_GRAPH_LM_FSTEPS 2 #define GLE_GRAPH_LM_HIST 3 #define GLE_GRAPH_LM_IMPULSES 4 #define GLE_GRAPH_LM_BAR 5 /* for key command and gx(), gy() */ #define dbg if ((gle_debug & 64)>0) extern int gle_debug; class KeyInfo; class GLELet; void graph_init(void); void graph_free(void); void iffree(void *p, const char *s); void setrange(double x, double y, int m); void gdraw_key(KeyInfo* info); void copy_default(int d); void do_dataset(int d, GLEGraphBlockInstance* graphBlock) throw(ParserError); void do_each_dataset_settings(); void fill_vec(double x1, double y1, double x2, double y2, vector* vec); void do_smooth(void); void window_set(bool showError) throw(ParserError); void reset_axis_ranges(); bool should_autorange_based_on_lets(); void deleteLet(GLELet* let); GLELet* parseLet(GLESourceLine& sline) throw(ParserError); GLELet* parseLet(const string& letFct, int codeLine) throw(ParserError); void doLet(GLELet* let, bool nofirst) throw(ParserError); void request(void); /*int draw_axis(void *axis);*/ void bar_reset(); void doskip(char *s,int *ct); void store_window_bounds_to_vars(); void do_dataset_key(int d); void do_bigfile_compatibility() throw(ParserError); void ensureDataSetCreated(int d); #define kw(ss) if (str_i_equals(tk[ct],ss)) #define true (!false) #define false 0 void var_find_dn(int *idx, int *vara, int *nd); char *un_quote(char *ct); #define skipspace doskip(tk[ct],&ct) //#define tok(n) (*tk)[n] #define tok(n) tk[n] #define next_exp (get_next_exp(tk,ntk,&ct)) #define next_font ((ct+=1),pass_font(tk[ct])) #define next_marker ((ct+=1),pass_marker(tk[ct])) #define next_color ((ct+=1),pass_color_var(tk[ct])) #define next_fill ((ct+=1),pass_color_var(tk[ct])) #define next_str(s) (ct+=1,skipspace,strcpy(s,tk[ct])) #define next_str_cpp(s) (ct+=1,skipspace,s=tk[ct]) #define next_vstr(s) (ct+=1,skipspace,mystrcpy(&s,tk[ct])) #define next_vquote(s) (ct+=1,skipspace,mystrcpy(&s,un_quote(tk[ct]))) #define next_vquote_cpp(s) (ct+=1,skipspace,pass_file_name(tk[ct],s)) #define next_quote(s) (ct+=1,skipspace,strcpy(s,un_quote(tk[ct]))) class fill_data { public: fill_data(); public: int layer; int da, db; /* fill from, too */ int type; /* 1= x1,d1, 2=d1,x2, 3=d1,d2, 4=d1 */ GLERC color; double xmin, ymin, xmax, ymax; }; class GLEDataSet; void draw_vec(double x1, double y1, double x2, double y2, GLEDataSet* ds); void draw_mark(double x1, double y1, int i, double sz, double dval, GLEDataSet* ds) throw (ParserError); /* range of dataset dimension is initialized in window_set */ /* can be different from axis range because "xmin" / "xmax" / "ymin" / "ymax" settings of dn */ class GLEDataSetDimension { protected: int m_Axis, m_Index; GLERangeSet m_Range; GLEDataSet* m_Data; public: GLEDataSetDimension(); ~GLEDataSetDimension(); void copy(GLEDataSetDimension* other); int getDataDimensionIndex(); inline GLERangeSet* getRange() { return &m_Range; } inline int getAxis() { return m_Axis; } inline void setAxis(int axis) { m_Axis = axis; } inline int getIndex() { return m_Index; } inline void setIndex(int idx) { m_Index = idx; } inline void setDataSet(GLEDataSet* set) { m_Data = set; } inline GLEDataSet* getDataSet() { return m_Data; } }; class GLEDataPairs : public GLERefCountObject { protected: vector m_X; vector m_Y; vector m_M; public: GLEDataPairs(); GLEDataPairs(double* x, double* y, int* m, int np); GLEDataPairs(GLEDataSet* dataSet); virtual ~GLEDataPairs(); void copy(GLEDataSet* dataSet); void copyDimension(GLEDataSet* dataSet, unsigned int dim); void resize(int np); void set(double* x, double* y, int* m, int np); void set(unsigned int i, double x, double y, int m); void add(double x, double y, int m); void noMissing(); void noNaN(); void transformLog(bool xlog, bool ylog); void untransformLog(bool xlog, bool ylog); void noLogZero(bool xlog, bool ylog); vector* getDimension(unsigned int i); double getMinXInterval(); inline unsigned int size() { return m_X.size(); } inline double getX(int i) { return m_X[i]; } inline double getY(int i) { return m_Y[i]; } inline int getM(int i) { return m_M[i]; } inline double* getX() { return &m_X[0]; } inline double* getY() { return &m_Y[0]; } inline int* getM() { return &m_M[0]; } public: static void validate(GLEDataSet* data, unsigned int minDim); static double getDataPoint(GLEMemoryCell* element, int datasetID, unsigned int dimension, unsigned int arrayIdx); private: void copyDimensionImpl(GLEArrayImpl* data, unsigned int np, int datasetID, unsigned int dim); }; class GLEAxis; class GLEDataSet { public: int id; int nomiss; unsigned int np; /* NUMBER OF POINTS */ int autoscale; bool axisscale; bool inverted; char lstyle[9]; string key_name; char *bigfile; GLERC key_fill; GLERC color; double errwidth; string errup; string errdown; double herrwidth; string herrup; string herrdown; double msize,mdist,lwidth; vector* yv_str; int marker; int smooth; int smoothm; int svg_smooth; /* Savitski Golay filtering true=on */ int svg_poly; /* the type of polynomial 2,3,4,5...*/ int svg_points; /* the number of points 5,7,9,11.... */ int svg_iter; /* numb or time to do svg smoothing */ int deresolve; /* Only plot every N points: true = on */ bool deresolve_avg; /* dresolve + average points */ int line_mode; int mdata; double mscale; bool line; double rx1,ry1,rx2,ry2; int layer_line; int layer_marker; int layer_error; GLEDataSetDimension dims[2]; GLEArrayImpl m_data; GLEArrayImpl m_dataBackup; public: GLEDataSet(int identifier); ~GLEDataSet(); void copy(GLEDataSet* other); void backup(); void restore(); void initBackup(); void clearAll(); bool undefined(); GLEDataSetDimension* getDimXInv(); GLEDataSetDimension* getDimYInv(); GLEAxis* getAxis(int i); void clip(double *x, double *y); bool contains(double x, double y); void checkRanges() throw(ParserError); void copyRangeIfRequired(int dimension); vector getMissingValues(); void validateDimensions(); void validateNbPoints(unsigned int expectedNb, const char* descr = NULL); GLEArrayImpl* getDimData(unsigned int dim); void fromData(const vector& xp, const vector& yp, const vector& miss); inline GLEDataSetDimension* getDim(int i) { return &dims[i]; } inline GLEArrayImpl* getData() { return &m_data; } inline GLEArrayImpl* getDataBackup() { return &m_dataBackup; } }; #define GLE_DIM_X 0 #define GLE_DIM_Y 1 class bar_struct { public: int ngrp; int from[20]; int to[20]; double width,dist; double lwidth[20]; char lstyle[20][9]; GLERC fill[20]; GLERC color[20]; GLERC side[20]; GLERC top[20]; int notop; double x3d,y3d; bool horiz; string style[20]; int layer; bar_struct(); }; #ifdef __TURBOC__ #define MAXTEMP 2000 #else #define MAXTEMP 10000 #endif #ifdef GRAPHDEF #else #define GRAPHDEF #endif #define MAX_NB_FILL 100 #define MAX_NB_BAR 100 GRAPHDEF double graph_x1,graph_y1,graph_x2,graph_y2; /* in cm */ GRAPHDEF double graph_xmin,graph_ymin,graph_xmax,graph_ymax; /* graph units */ GRAPHDEF char ebuff[400]; GRAPHDEF int etype,eplen; GRAPHDEF double xbl,ybl; GRAPHDEF double xlength,ylength; GRAPHDEF double g_xsize,g_ysize,g_hscale,g_vscale,g_fontsz; GRAPHDEF double last_vecx,last_vecy; GRAPHDEF int ndata,g_nobox,g_center; GRAPHDEF bool g_auto_s_h, g_auto_s_v; GRAPHDEF bool g_math; GRAPHDEF double sizex,sizey; GRAPHDEF double vscale,hscale; GRAPHDEF double g_discontinuityThreshold; GRAPHDEF struct fill_data *fd[MAX_NB_FILL]; GRAPHDEF int nfd; GRAPHDEF int gntmp; GRAPHDEF GLEDataSet *dp[MAX_NB_DATA]; GRAPHDEF bar_struct *br[MAX_NB_BAR]; void vinit_axis(int i); void vinit_title_axis(); void draw_bar(double x, double yf, double yt, double wd, bar_struct* barset, int di, GLEDataSet* toDataSet) throw(ParserError); void get_dataset_ranges(); void set_bar_axis_places(); int get_dataset_identifier(const char* ds, bool def = false) throw(ParserError); int get_dataset_identifier(const string& ds, GLEParser* parser, bool def) throw(ParserError); double graph_bar_pos(double xpos, int bar, int set) throw(ParserError); void begin_graph(GLEGraphBlockBase* graphBlockBase, GLEGraphBlockInstance* graphBlock) throw (ParserError); bool execute_graph(GLESourceLine& sline, bool isCommandCheck, GLEGraphBlockInstance* graphBlock); void begin_key(int *pln, int *pcode, int *cp) throw (ParserError); void begin_tab(int *pln, int *pcode, int *cp); void begin_text(int *pln, int *pcode, int *cp, double w, int just); void draw_key(int nkd, struct offset_struct* koffset, char *kpos,double khei, int knobox); string dimension2String(unsigned int dimension); #define DP_CAST (struct data_struct*) #define BR_CAST (struct bar_struct*) #define AX_CAST (GLEAxis*) #define FD_CAST (struct fill_data*) class GLEZData; class GLEColorMap { public: string m_function; string m_palette; int m_wd, m_hi; bool m_color; double m_xmin, m_xmax; double m_ymin, m_ymax; double m_zmin, m_zmax; bool m_has_zmin; bool m_has_zmax; bool m_invert; bool m_haspal; GLEZData* m_Data; public: GLEColorMap(); ~GLEColorMap(); void draw(double x0, double y0, double wd, double hi); void setXRange(double min, double max); void setYRange(double min, double max); void setZMin(double val); void setZMax(double val); void setPalette(const string& pal); void readData(); inline bool hasZMin() { return m_has_zmin; } inline bool hasZMax() { return m_has_zmax; } inline double getZMin() { return m_zmin; } inline double getZMax() { return m_zmax; } inline void setFunction(const char* f) { m_function = f; } inline void setWidth(int wd) { m_wd = wd; } inline void setHeight(int hi) { m_hi = hi; } inline const string& getFunction() { return m_function; } inline int getWidth() { return m_wd; } inline int getHeight() { return m_hi; } inline double getXMin() { return m_xmin; } inline double getXMax() { return m_xmax; } inline double getYMin() { return m_ymin; } inline double getYMax() { return m_ymax; } inline bool isColor() { return m_color; } inline void setColor(bool color) { m_color = color; } inline void setInvert(bool inv) { m_invert = inv; } inline bool isInverted() { return m_invert; } inline bool hasPalette() { return m_haspal; } inline const string& getPaletteFunction() { return m_palette; } inline GLEZData* getData() { return m_Data; } }; /** * Layers: * * - background (fill) * - color map * - grid * - fills (e.g., fill x1,d1 color gray50) * struct fill_data { * int da,db; * int type; * int color; * double xmin,ymin,xmax,ymax; * }; * - bars (e.g., bar d3 from d1 width 0.6 fill gray30) * class bar_struct { * int ngrp; * int from[20]; * int to[20]; * double width,dist; * ... * - axis * - lines * - error bars * - markers * - key */ gle-graphics-4.2.4c/src/gle/Makefile.gcc0000664000000000000000000001041011405446017016460 0ustar rootroot######################################################################## # # # GLE - Graphics Layout Engine # # # # Modified BSD License # # # # Copyright (C) 2009 GLE. # # # # Redistribution and use in source and binary forms, with or without # # modification, are permitted provided that the following conditions # # are met: # # # # 1. Redistributions of source code must retain the above copyright # # notice, this list of conditions and the following disclaimer. # # # # 2. Redistributions in binary form must reproduce the above # # copyright notice, this list of conditions and the following # # disclaimer in the documentation and/or other materials provided with # # the distribution. # # # # 3. The name of the author may not be used to endorse or promote # # products derived from this software without specific prior written # # permission. # # # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR # # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY # # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE # # GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER # # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN # # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # # ######################################################################## # # makefile.gcc for GLE v4.0 # for compilation with gcc # # include ../../config.i include ../../config.gcc -include ../../extraconfig.gcc # include files.txt ifdef HAVE_LIBTIFF OBJECTS := $(OBJECTS) $(TIFFOBJS) endif ifdef HAVE_LIBPNG OBJECTS := $(OBJECTS) $(PNGOBJS) endif ifdef HAVE_LIBJPEG OBJECTS := $(OBJECTS) $(JPEGOBJS) endif all: $(OBJECTS) $(PSOBJS) $(SVGOBJS) $(PROJECT_BINDIR)/glerc $(PROJECT_BINDIR)/bin/gle $(PROJECT_BINDIR)/bin/rungle $(OBJECTS): $(INCLUDES) $(PROJECT_BINDIR)/bin/gle: $(PSOBJS) $(GLEOBJS) $(OBJECTS) $(LINKOBJS) $(CC) $(LINK_OPTS) -o $(PROJECT_BINDIR)/bin/gle $(OBJECTS) $(LINKOBJS) $(LINKFLAGS) $(PROJECT_BINDIR)/glerc: echo "begin config gle" > $(PROJECT_BINDIR)/glerc echo " current = $(VERSION_NUMBER).$(BUILD_NUMBER)" >> $(PROJECT_BINDIR)/glerc echo "end config" >> $(PROJECT_BINDIR)/glerc $(PROJECT_BINDIR)/bin/rungle: echo "#!/bin/sh" > $(PROJECT_BINDIR)/bin/rungle echo "GLE_TOP=../../build" >> $(PROJECT_BINDIR)/bin/rungle echo "export GLE_TOP" >> $(PROJECT_BINDIR)/bin/rungle echo "../../build/bin/gle \$$@" >> $(PROJECT_BINDIR)/bin/rungle chmod a+x $(PROJECT_BINDIR)/bin/rungle dofonts: $(MAKE) -C font # # installs files and fonts to GLE_PATH and GLE_PATH/font # and creates the inittex.ini file # # # simple test to make the sample and compare it to # the eps file that is included in the distribution # -- if you get this far chances are it working allready ;-) # you should only get an error on the Creation date # test: # do this after make install! gle sample.gle /eps diff sample.eps sample_compare.eps clean: -$(RM) $(OBJECTS) $(PSOBJS) $(SVGOBJS) $(PROJECT_BINDIR)/bin/gle gle-graphics-4.2.4c/src/gle/begin.h0000664000000000000000000000762411506703057015541 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ #ifndef INCLUDE_BEGIN #define INCLUDE_BEGIN extern int **gpcode; /* gpcode is a pointer to an array of poiter to int */ extern int *gplen; /* gpcode is a pointer to an array of int */ extern int ngpcode; //#define TOKEN_LENGTH 500 //#define TOKEN_WIDTH 500 #define STRBUF_LENGTH 200 #define SRCLIN_LENGTH 1000 #define OUTBUFF_LENGTH 300 #define INBUFF_LENGTH 300 #define TKBUFF_LENGTH 9600 BEGINDEF char tk[TOKEN_LENGTH][TOKEN_WIDTH]; BEGINDEF char strbuf[STRBUF_LENGTH]; BEGINDEF char srclin[SRCLIN_LENGTH]; BEGINDEF char outbuff[OUTBUFF_LENGTH]; BEGINDEF char inbuff[OUTBUFF_LENGTH]; BEGINDEF char tkbuff[TKBUFF_LENGTH]; BEGINDEF char space_str[3]; BEGINDEF int ntk; class GLESourceLine; int begin_token(GLESourceLine& sline, char *srclin, TOKENS tk, int *ntk, char *outbuff, bool replaceExpr); int begin_token(int **pcode,int *cp,int *pln,char *srclin,TOKENS tk,int *ntk,char *outbuff); void begin_init(void); int begin_next_line(int *pcode, int *cp); bool begin_line(int *pln, char *srclin, int *len); bool begin_line(int *pln, string& srclin); bool begin_line_norep(int *pln, string& srclin); void replace_exp(string& exp); double token_next_double(int i) throw(ParserError); bool get_block_line(int pln, string& srclin); #endif gle-graphics-4.2.4c/src/gle/gle-datatype.cpp0000664000000000000000000005440011704312456017361 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ #include "all.h" #include "gle-interface/gle-interface.h" #include "var.h" #include "core.h" bool gle_memory_cell_equals(GLEMemoryCell* a, GLEMemoryCell* b) { if (a->Type != b->Type) return false; switch (a->Type) { case GLE_MC_UNKNOWN: return true; case GLE_MC_BOOL: return a->Entry.BoolVal == b->Entry.BoolVal; case GLE_MC_INT: return a->Entry.IntVal == b->Entry.IntVal; case GLE_MC_DOUBLE: return a->Entry.DoubleVal == b->Entry.DoubleVal; case GLE_MC_OBJECT: return a->Entry.ObjectVal->equals(b->Entry.ObjectVal); } return false; } void gle_memory_cell_print(GLEMemoryCell* a, ostream& out) { switch (a->Type) { case GLE_MC_UNKNOWN: out << "?"; break; case GLE_MC_BOOL: out << (a->Entry.BoolVal ? "true" : "false"); break; case GLE_MC_INT: out << a->Entry.IntVal; break; case GLE_MC_DOUBLE: out << a->Entry.DoubleVal; break; case GLE_MC_OBJECT: a->Entry.ObjectVal->print(out); break; } } bool gle_memory_cell_to_double(GLEMemoryCell* a, double* result) { switch (a->Type) { case GLE_MC_BOOL: *result = a->Entry.BoolVal ? 1.0 : 0.0; return true; case GLE_MC_INT: *result = a->Entry.IntVal; return true; case GLE_MC_DOUBLE: *result = a->Entry.DoubleVal; return true; default: *result = 0.0; return false; } } GLEDataObject::GLEDataObject() { } GLEDataObject::~GLEDataObject() { } int GLEDataObject::getType() { return GLEObjectTypeUnknown; } bool GLEDataObject::equals(GLEDataObject* obj) { return false; } void GLEDataObject::print(ostream& out) const { } GLEPointDataObject::GLEPointDataObject(double x, double y) : m_point(x, y) { } GLEPointDataObject::~GLEPointDataObject() { } int GLEPointDataObject::getType() { return GLEObjectTypePoint; } bool GLEPointDataObject::equals(GLEDataObject* obj) { if (obj->getType() != GLEObjectTypePoint) return false; GLEPointDataObject* other = (GLEPointDataObject*)obj; return m_point.getX() == other->m_point.getX() && m_point.getY() == other->m_point.getY(); } void GLEPointDataObject::print(ostream& out) const { m_point.write(out); } GLEString::GLEString() { m_Data = NULL; m_Length = 0; m_Alloc = 0; m_Intern = 0; } GLEString::GLEString(const char* utf8) { m_Data = NULL; m_Length = 0; m_Alloc = 0; m_Intern = 0; fromUTF8(utf8); } GLEString::GLEString(const string& utf8) { m_Data = NULL; m_Length = 0; m_Alloc = 0; m_Intern = 0; fromUTF8(utf8); } GLEString::~GLEString() { if (m_Data != NULL) { free(m_Data); } } void GLEString::fromUTF8(const char* str) { if (str != 0) { fromUTF8(str, strlen(str)); } } void GLEString::fromUTF8(const string& str) { fromUTF8(str.c_str(), str.length()); } /* 0 0000 1 0001 2 0010 3 0011 4 0100 5 0101 6 0110 7 0111 8 1000 9 1001 a 1010 b 1011 c 1100 d 1101 e 1110 f 1111 Char. number range | UTF-8 octet sequence (hexadecimal) | (binary) --------------------+--------------------------------------------- 0000 0000-0000 007F | 0xxxxxxx 0000 0080-0000 07FF | 110xxxxx 10xxxxxx 0000 0800-0000 FFFF | 1110xxxx 10xxxxxx 10xxxxxx 0001 0000-0010 FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx */ unsigned int getUTF8NumberOfChars(const char* str, unsigned int len) { unsigned int i = 0; unsigned int dest = 0; while (i < len) { unsigned char ch = str[i++]; if ((ch & 0x80) != 0) { /* highest bit is one - 3 possibilities */ int remain = 0; if ((ch & 0xE0) == 0xC0) { /* 110x -> two byte unicode */ remain = 1; } else if ((ch & 0xF0) == 0xE0) { /* 1110x -> three byte unicode */ remain = 2; } else if ((ch & 0xF8) == 0xF0) { /* 1111x -> four byte unicode */ remain = 3; } else if ((ch & 0xFC) == 0xF8) { remain = 4; } else if ((ch & 0xFE) == 0xFC) { remain = 5; } while ((remain > 0) && (i < len)) { remain--; ch = str[i++]; if ((ch & 0xC0) != 0x80) { remain = 0; i--; /* try processing this byte separately */ } } dest++; } else { dest++; } } return dest; } void GLEString::fromUTF8(const char* str, unsigned int len) { resize(len); unsigned int i = 0; unsigned int dest = 0; while (i < len) { unsigned char ch = str[i++]; if ((ch & 0x80) != 0) { /* highest bit is one - 3 possibilities */ int remain = 0; unsigned int unicode = 0; if ((ch & 0xE0) == 0xC0) { /* 110x -> two byte unicode */ unicode = ch & 0x1F; remain = 1; } else if ((ch & 0xF0) == 0xE0) { /* 1110x -> three byte unicode */ unicode = ch & 0x0F; remain = 2; } else if ((ch & 0xF8) == 0xF0) { /* 1111x -> four byte unicode */ unicode = ch & 0x07; remain = 3; } else if ((ch & 0xFC) == 0xF8) { unicode = ch & 0x03; remain = 4; } else if ((ch & 0xFE) == 0xFC) { unicode = ch & 0x01; remain = 5; } else { unicode = (unsigned int)'?'; } while ((remain > 0) && (i < len)) { remain--; ch = str[i++]; if ((ch & 0xC0) != 0x80) { unicode = (unsigned int)'?'; remain = 0; i--; /* try processing this byte separately */ } else { unicode <<= 6; unicode |= ch & 0x3F; } } m_Data[dest++] = unicode; } else { m_Data[dest++] = ch; } } m_Length = dest; } class GLEStringToUTF8 { protected: const GLEString* m_Str; char m_Unicode[5]; unsigned int m_Pos, m_Sub, m_Max; public: GLEStringToUTF8(const GLEString* s); char get(); }; GLEStringToUTF8::GLEStringToUTF8(const GLEString* s) { m_Str = s; m_Pos = 0; m_Sub = 0; m_Max = 0; } char GLEStringToUTF8::get() { if (m_Sub < m_Max) { return m_Unicode[m_Sub++]; } else if (m_Pos >= m_Str->length()) { return 0; } else { m_Sub = 0; unsigned int unicode = m_Str->get(m_Pos++); if (unicode < 0x80) { m_Max = 0; return (char)unicode; } else if (unicode < 0x800) { m_Max = 1; m_Unicode[0] = 0x80 | (unicode & 0x3F); return 0xC0 | ((unicode >> 6) & 0x1F); } else if (unicode < 0x10000) { m_Max = 2; m_Unicode[0] = 0x80 | ((unicode >> 6) & 0x3F); m_Unicode[1] = 0x80 | (unicode & 0x3F); return 0xE0 | ((unicode >> 12) & 0xF); } else if (unicode < 0x200000) { m_Max = 3; m_Unicode[0] = 0x80 | ((unicode >> 12) & 0x3F); m_Unicode[1] = 0x80 | ((unicode >> 6) & 0x3F); m_Unicode[2] = 0x80 | (unicode & 0x3F); return 0xF0 | ((unicode >> 18) & 0x7); } else if (unicode < 0x4000000) { m_Max = 4; m_Unicode[0] = 0x80 | ((unicode >> 18) & 0x3F); m_Unicode[1] = 0x80 | ((unicode >> 12) & 0x3F); m_Unicode[2] = 0x80 | ((unicode >> 6) & 0x3F); m_Unicode[3] = 0x80 | (unicode & 0x3F); return 0xF8 | ((unicode >> 24) & 0x3); } else { m_Max = 5; m_Unicode[0] = 0x80 | ((unicode >> 24) & 0x3F); m_Unicode[1] = 0x80 | ((unicode >> 18) & 0x3F); m_Unicode[2] = 0x80 | ((unicode >> 12) & 0x3F); m_Unicode[3] = 0x80 | ((unicode >> 6) & 0x3F); m_Unicode[4] = 0x80 | (unicode & 0x3F); return 0xFC | ((unicode >> 30) & 0x1); } return 0; } } ostream& GLEString::toUTF8(ostream& out) const { GLEStringToUTF8 conv(this); while (1) { char ch = conv.get(); if (ch == 0) break; out << ch; } return out; } void GLEString::print(ostream& out) const { GLEStringToUTF8 conv(this); while (1) { char ch = conv.get(); if (ch == 0) break; out << ch; } } void GLEString::toUTF8(string& out) const { out.resize(0); GLEStringToUTF8 conv(this); while (1) { char ch = conv.get(); if (ch == 0) break; out.push_back(ch); } } string GLEString::toUTF8() const { string out; GLEStringToUTF8 conv(this); while (1) { char ch = conv.get(); if (ch == 0) break; out.push_back(ch); } return out; } void GLEString::toUTF8(char* out) const { int len = 0; GLEStringToUTF8 conv(this); while (1) { char ch = conv.get(); if (ch == 0) break; out[len++] = ch; } out[len] = 0; } unsigned int GLEString::getI(unsigned int i) const { unsigned int ch = get(i); if (ch >= 'a' && ch <= 'z') ch -= ('a' - 'A'); return ch; } bool GLEString::isSmallerThanI(const GLEString* s2) const { unsigned int l1 = length(); unsigned int l2 = s2->length(); unsigned int minlen = l1 < l2 ? l1 : l2; unsigned int pos = 0; /* as long as ch equal */ while (pos < minlen && getI(pos) == s2->getI(pos)) pos++; if (pos >= minlen) { /* at end of shortest string */ return l1 < l2; } else { /* at first character that differs */ return getI(pos) < s2->getI(pos); } } bool GLEString::equalsI(const char* str) { unsigned int s_len = strlen(str); if (s_len != length()) return false; for (unsigned int i = 0; i < s_len; i++) { if ((unsigned int)toupper(str[i]) != getI(i)) return false; } return true; } bool GLEString::equals(GLEDataObject* obj) { if (obj->getType() != GLEObjectTypeString) return false; GLEString* other = (GLEString*)obj; if (m_Length != other->length()) return false; for (unsigned int i = 0; i < m_Length; i++) { if (get(i) != other->get(i)) return false; } return true; } GLEString* GLEString::substring(unsigned int from, unsigned int to) const { if (m_Length == 0) { return new GLEString(); } else { if (to >= m_Length-1) to = m_Length-1; if (from > to) { return new GLEString(); } else { unsigned int size = to - from + 1; GLEString* res = new GLEString(); res->resize(size); res->m_Length = size; unsigned int idx = 0; for (unsigned int pos = from; pos <= to; pos++) { res->set(idx++, get(pos)); } return res; } } } GLEArrayImpl* GLEString::split(char bych) const { GLEArrayImpl* res = new GLEArrayImpl(); unsigned int pos = 0; unsigned int prevpos = 0; while (true) { while (pos < m_Length && m_Data[pos] != (unsigned int)bych) pos++; if (pos >= m_Length) { /* not found */ res->addObject(substring(prevpos, pos)); break; } else { /* found - add previous string and skip */ res->addObject(substring(prevpos, pos-1)); prevpos = ++pos; } } return res; } void GLEString::join(char bych, GLEArrayImpl* arr, int from, int to) { int cnt = 0; int totlen = 0; if (arr->size() == 0) { setSize(0); return; } if (to == -1 || to > (int)arr->size()-1) { /* make value of to legal */ to = arr->size()-1; } if (from > to) { /* result is empty */ setSize(0); return; } for (int i = from; i <= to; i++) { GLEString* s_i = (GLEString*)arr->getObjectUnsafe(i); totlen += s_i->length(); cnt++; } totlen += cnt-1; setSize(totlen); int pos = 0; for (int i = from; i <= to; i++) { GLEString* s_i = (GLEString*)arr->getObjectUnsafe(i); if (pos != 0) m_Data[pos++] = (unsigned int)bych; for (unsigned int j = 0; j < s_i->length(); j++) { m_Data[pos++] = s_i->get(j); } } } void GLEString::addQuotes() { resize(m_Length+2); for (unsigned int i = m_Length; i > 0; i--) { m_Data[i] = m_Data[i-1]; } m_Data[0] = '\"'; m_Data[m_Length+1] = '\"'; m_Length += 2; } void GLEString::setSize(unsigned int size) { resize(size); m_Length = size; } void GLEString::resize(unsigned int size) { if (m_Alloc < size) { m_Data = (unsigned int*)realloc(m_Data, size*sizeof(unsigned int)); m_Alloc = size; } } int GLEString::getType() { return GLEObjectTypeString; } GLEString* GLEString::getEmptyString() { static GLERC g_EmptyString = new GLEString(); return g_EmptyString.get(); } GLEArray::GLEArray() { } GLEArray::~GLEArray() { } GLEArrayImpl::GLEArrayImpl() { m_Data = NULL; m_Length = 0; m_Alloc = 0; } GLEArrayImpl::~GLEArrayImpl() { clear(); } void GLEArrayImpl::clear() { if (m_Data != NULL) { for (unsigned int i = 0; i < m_Length; i++) { GLE_MC_DEL_INTERN(&m_Data[i]); } free(m_Data); } m_Data = NULL; m_Length = 0; m_Alloc = 0; } int GLEArrayImpl::getType(unsigned int i) { switch (m_Data[i].Type) { case GLE_MC_UNKNOWN: return GLEObjectTypeUnknown; case GLE_MC_BOOL: return GLEObjectTypeBool; case GLE_MC_INT: return GLEObjectTypeInt; case GLE_MC_DOUBLE: return GLEObjectTypeDouble; case GLE_MC_OBJECT: return m_Data[i].Entry.ObjectVal->getType(); } return GLEObjectTypeUnknown; } void GLEArrayImpl::init(unsigned int i) { GLE_MC_DEL_INTERN(&m_Data[i]); GLE_MC_INIT(m_Data[i]); } void GLEArrayImpl::setObject(unsigned int i, GLEDataObject* v) { GLE_MC_SET_OBJECT(&m_Data[i], v); } void GLEArrayImpl::addObject(GLEDataObject* v) { unsigned int len = m_Length; ensure(len+1); GLE_MC_SET_OBJECT(&m_Data[len], v); } void GLEArrayImpl::addInt(int v) { unsigned int len = m_Length; ensure(len+1); GLE_MC_SET_INT(&m_Data[len], v); } void GLEArrayImpl::set(unsigned int i, const GLEMemoryCell* cell) { if (cell->Type == GLE_MC_OBJECT) { setObject(i, cell->Entry.ObjectVal); } else { GLE_MC_DEL_INTERN(&m_Data[i]); m_Data[i].Entry = cell->Entry; m_Data[i].Type = cell->Type; } } void GLEArrayImpl::setDouble(unsigned int i, double v) { GLE_MC_SET_DOUBLE(&m_Data[i], v); } double GLEArrayImpl::getDouble(unsigned int i) { if (m_Data[i].Type == GLE_MC_DOUBLE) return m_Data[i].Entry.DoubleVal; else return 0.0; } int GLEArrayImpl::getInt(unsigned int i) { if (m_Data[i].Type == GLE_MC_INT) return m_Data[i].Entry.IntVal; else return 0; } void GLEArrayImpl::setInt(unsigned int i, int v) { GLE_MC_SET_INT(&m_Data[i], v); } bool GLEArrayImpl::getBool(unsigned int i) { if (m_Data[i].Type == GLE_MC_BOOL) return m_Data[i].Entry.BoolVal; else return false; } void GLEArrayImpl::setBool(unsigned int i, bool v) { GLE_MC_SET_BOOL(&m_Data[i], v); } void GLEArrayImpl::setUnknown(unsigned int i) { GLE_MC_SET_UNKNOWN(&m_Data[i]); } bool GLEArrayImpl::isUnknown(unsigned int i) { return m_Data[i].Type == GLE_MC_UNKNOWN; } GLEDataObject* GLEArrayImpl::getObject(unsigned int i) { if (m_Data[i].Type == GLE_MC_OBJECT) return m_Data[i].Entry.ObjectVal; else return NULL; } GLERC GLEArrayImpl::getString(unsigned int i) { GLERC result; GLEMemoryCell* cell = &m_Data[i]; if (cell->Type == GLE_MC_OBJECT && cell->Entry.ObjectVal->getType() == GLEObjectTypeString) { result = static_cast(cell->Entry.ObjectVal); } else { ostringstream out; gle_memory_cell_print(cell, out); result = new GLEString(out.str()); } return result; } void GLEArrayImpl::ensure(unsigned int size) { if (m_Alloc < size) extend(size); while (m_Length < size) { GLE_MC_INIT(m_Data[m_Length]); m_Length++; } } void GLEArrayImpl::resize(unsigned int size) { ensure(size); if (size < m_Length) { for (unsigned int i = size; i < m_Length; i++) { init(i); } m_Length = size; } } void GLEArrayImpl::resizeMemory(unsigned int size) { if (m_Alloc < size) { m_Data = (GLEMemoryCell*)realloc(m_Data, size*sizeof(GLEMemoryCell)); m_Alloc = size; } } void GLEArrayImpl::extend(unsigned int size) { unsigned int newSize = m_Alloc; while (newSize < size) { newSize = 2*newSize + 5; } resizeMemory(newSize); } void GLEArrayImpl::enumStrings(ostream& out) { out << " "; for (unsigned int i = 0; i < size(); i++) { GLEString* key = (GLEString*)getObjectUnsafe(i); out << *key; if (i != size()-1) { out << ", "; if ((i+1) % 3 == 0) out << endl << " "; } } } int GLEArrayImpl::getType() { return GLEObjectTypeArray; } GLEStringHash::GLEStringHash() : GLEArrayImpl() { } GLEStringHash::~GLEStringHash() { } void GLEStringHash::setObjectByKey(const GLEStringKey& key, GLEDataObject* v) { GLEStringHashData::const_iterator i = m_Map.find(key); if (i != m_Map.end()) { GLEArrayImpl::setObject(i->second, v); } else { int len = size(); ensure(len+1); GLEArrayImpl::setObject(len, v); m_Map.insert(pair(key, len)); } } GLEDataObject* GLEStringHash::getObjectByKey(const GLEStringKey& key) { GLEStringHashData::const_iterator i = m_Map.find(key); if (i != m_Map.end()) { return GLEArrayImpl::getObject(i->second); } else { return NULL; } } void GLEStringHash::getKeys(GLEArrayImpl* keys) { for (GLEStringHashData::const_iterator i = m_Map.begin(); i != m_Map.end(); i++) { keys->addObject(i->first.get()); } } GLEDynamicSub::GLEDynamicSub() { m_Sub = NULL; m_VarValues = NULL; m_State = NULL; } GLEDynamicSub::GLEDynamicSub(GLESub* sub) { m_Sub = sub; m_VarValues = NULL; m_State = NULL; } GLEDynamicSub::~GLEDynamicSub() { if (m_VarValues != NULL) delete m_VarValues; if (m_State != NULL) delete m_State; } int GLEDynamicSub::getType() { return GLEObjectTypeDynamicSub; } GLEObjectRepresention::GLEObjectRepresention() { } GLEObjectRepresention::~GLEObjectRepresention() { } GLEObjectRepresention* GLEObjectRepresention::getChildObject(GLEString* elem) { if (m_SubObjs.isNull()) { return NULL; } else { GLERC key(elem); return (GLEObjectRepresention*)m_SubObjs->getObjectByKey(key); } } bool GLEObjectRepresention::setChildObject(GLEString* elem, GLEObjectRepresention* obj) { if (!m_SubObjs.isNull()) { GLERC key(elem); m_SubObjs->setObjectByKey(key, obj); return true; } else { return false; } } void GLEObjectRepresention::enableChildObjects() { if (m_SubObjs.isNull()) m_SubObjs = new GLEStringHash(); } int GLEObjectRepresention::getType() { return GLEObjectTypeObjectRep; } void GLEObjectRepresention::printNames() { GLEStringHash* children = getChilds(); if (children != NULL) { GLEStringHashData* hash = children->getHash(); for (GLEStringHashData::const_iterator i = hash->begin(); i != hash->end(); i++) { GLEString* child_name = i->first.get(); GLEObjectRepresention* child = (GLEObjectRepresention*)children->getObject(i->second); cout << *child_name << ": " << *child->getRectangle() << endl; child->printNames(); } } } void GLEObjectRepresention::translateChildrenRecursive(GLEPoint* trans) { GLEStringHash* children = getChilds(); if (children != NULL) { GLEStringHashData* hash = children->getHash(); for (GLEStringHashData::const_iterator i = hash->begin(); i != hash->end(); i++) { GLEObjectRepresention* child = (GLEObjectRepresention*)children->getObject(i->second); child->getRectangle()->translate(trans); child->translateChildrenRecursive(trans); } } } void GLEObjectRepresention::copyChildrenRecursive(GLEObjectRepresention* newobj, gmodel* oldstate) { GLEStringHash* children = getChilds(); if (children != NULL) { GLEStringHashData* hash = children->getHash(); for (GLEStringHashData::const_iterator i = hash->begin(); i != hash->end(); i++) { GLEString* child_name = i->first.get(); GLEObjectRepresention* child = (GLEObjectRepresention*)children->getObject(i->second); newobj->enableChildObjects(); GLERC new_child = new GLEObjectRepresention(); newobj->setChildObject(child_name, new_child.get()); new_child->getRectangle()->copy(child->getRectangle()); g_undev(new_child->getRectangle(), oldstate); g_dev(new_child->getRectangle()); child->copyChildrenRecursive(new_child.get(), oldstate); } } } GLEClassDefinition::GLEClassDefinition(const char* name): m_Name(new GLEString(name)), m_FieldNames(new GLEArrayImpl()) { } void GLEClassDefinition::addField(const char* fieldName) { m_FieldNames->addObject(new GLEString(fieldName)); } int GLEClassDefinition::getType() { return GLEObjectTypeClassDefinition; } bool GLEClassDefinition::equals(GLEDataObject* obj) { return false; } void GLEClassDefinition::print(ostream& out) const { } GLEClassInstance::GLEClassInstance(GLEClassDefinition* definition): m_Definition(definition) { } int GLEClassInstance::getType() { return GLEObjectTypeClassInstance; } bool GLEClassInstance::equals(GLEDataObject* obj) { return false; } void GLEClassInstance::print(ostream& out) const { } GLEClassInstance* getGLEClassInstance(GLEMemoryCell* object, GLEClassDefinition* def) { if (object->Type == GLE_MC_OBJECT) { GLEDataObject* dataObject = object->Entry.ObjectVal; if (dataObject->getType() == GLEObjectTypeClassInstance) { GLEClassInstance* classInstance = static_cast(dataObject); if (classInstance->getDefinition() == def) { return classInstance; } } } return 0; } gle-graphics-4.2.4c/src/gle/font.cpp0000664000000000000000000003331311704312455015746 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ #include "all.h" #include "tokens/Tokenizer.h" #include "core.h" #include "file_io.h" #include "gprint.h" #include "cutils.h" #include "gle-interface/gle-interface.h" int text_gprint(int *in,int ilen); int fftext_block(uchar *s,double width,int justify); void font_load(void) throw (ParserError); void font_init(void); int do_prim(uchar **in,int *out,int *lout); /* \frac{text}{text} */ #define true (!false) #define false 0 #define dbg if ((gle_debug & 32)>0) extern int gle_debug; /* typedef char unsigned uchar; */ /* FONT.DAT contains names of fonts, and indexes for each font, and names of metric, vector and bitmap files This enables fonts to be referred to by number, as their index will not change */ #include "font.h" class GLEFontUnicodeMap : public map { }; GLECoreFont* init_core_font(int n) { while ((unsigned int)n >= fnt.size()) { fnt.push_back(new GLECoreFont()); } return fnt[n]; } GLECoreFont* get_core_font(int n) { if (n < 0 || (unsigned int)n >= fnt.size()) { gprint("no font number: %d", n); return fnt[1]; } return fnt[n]; } GLECoreFont* get_core_font_ensure_loaded(int font) { if (fnt.size() == 0) { /* load font.dat */ /* FIXME: move loading of font.dat to GLE's mandatory init code? */ font_load(); } if (font < 0 || (unsigned int)font >= fnt.size()) { gprint("no font number: %d", font); font = 1; } GLECoreFont* cfont = fnt[font]; if (!cfont->metric_loaded) { /* load font metric */ font_load_metric(font); } return cfont; } char *font_getname(int i) { GLECoreFont* cfont = get_core_font(i); return cfont->name; } void char_bbox(int ff, int cc, double *xx1, double *yy1, double *xx2, double *yy2) { GLECoreFont* cfont = get_core_font_ensure_loaded(ff); GLEFontCharData* cdata = cfont->getCharData(cc); if (cdata != 0) { *xx1 = cdata->x1; *yy1 = cdata->y1; *xx2 = cdata->x2; *yy2 = cdata->y2; } else { *xx1 = 0; *xx2 = 0; *yy1 = 0; *yy2 = 0; } } void font_get_chardata(struct char_data *cd, int ff, int cc) { GLECoreFont* cfont = get_core_font(ff); GLEFontCharData* cdata = cfont->getCharData(cc); if (cdata != 0) { cd->x1 = cdata->x1; cd->y1 = cdata->y1; cd->x2 = cdata->x2; cd->y2 = cdata->y2; } else { cd->x1 = 0; cd->y1 = 0; cd->x2 = 0; cd->y2 = 0; } } void font_load(void) throw(ParserError) { /* load font.dat */ char inbuff[200]; string fname = fontdir("font.dat"); FILE *fptr = fopen(fname.c_str(), READ_BIN); if (fptr == NULL) { TokenizerPos pos; pos.setColumn(-1); stringstream err_str; err_str << "unable to open 'font.dat' file '" << fname << "': "; str_get_system_error(err_str); err_str << endl; err_str << "set GLE_TOP to the directory containing the file \"inittex.ini\" and the fonts"; ParserError err_exp(err_str.str(), pos, NULL); throw err_exp; } /* font_load() */ GLEInterface* iface = GLEGetInterfacePointer(); TokenizerLanguage lang; lang.setSpaceTokens(" ,\t\r\n"); lang.setSingleCharTokens("()"); lang.setLineCommentTokens("!"); StringTokenizer tokens(&lang); while(fgets(SC inbuff, 200, fptr) != NULL) { tokens.set_string(inbuff); if (tokens.has_more_tokens()) { GLEFont* font = new GLEFont(); string name = tokens.next_token(); // font zero is a dummy; font 1 is the first valid font int n = tokens.next_integer(); font->setIndex(n); font->setName(name); GLECoreFont* cfont = init_core_font(n); mystrcpy(&cfont->name, (char*)name.c_str()); const string& metric = tokens.next_token(); mystrcpy(&cfont->file_metric, (char*)metric.c_str()); const string& vec = tokens.next_token(); mystrcpy(&cfont->file_vector, (char*)vec.c_str()); const string& bitmap = tokens.next_token(); mystrcpy(&cfont->file_bitmap, (char*)bitmap.c_str()); if (tokens.is_next_token("%")) { const string& full = tokens.read_line(); font->setFullName(full); iface->addFont(font); } else if (tokens.is_next_token("-")) { string type = tokens.next_token(); tokens.ensure_next_token("("); string parent = tokens.next_token(); tokens.ensure_next_token(")"); GLEFont* pfont = iface->getFont(parent); if (pfont == NULL) { g_throw_parser_error("parent font '", parent.c_str(), "' not found"); } else { iface->addSubFont(font); font->setParent(pfont); if (type == "B") pfont->setStyle(GLEFontStyleBold, font); else if (type == "I") pfont->setStyle(GLEFontStyleItalic, font); else if (type == "BI") pfont->setStyle(GLEFontStyleBoldItalic, font); else g_throw_parser_error("font style '", type.c_str(), "' not defined"); } } } } fclose(fptr); } void font_file_vector(int ff, char *s) { if (fnt.size() == 0) { /* load font.dat */ font_load(); } GLECoreFont* cfont = get_core_font(ff); strcpy(s, cfont->file_vector); } void font_replace_vector(int ff) { if (fnt.size() == 0) { /* load font.dat */ font_load(); } GLECoreFont* cfont = get_core_font(ff); myfree(cfont->file_vector); cfont->file_vector = sdup(fnt[17]->file_vector); } int font_get_encoding(int ff) { GLECoreFont* cfont = get_core_font_ensure_loaded(ff); return cfont->info.encoding; } int check_has_font(const char* name) { if (fnt.size() == 0) { /* load font.dat */ font_load(); } int ff = 0; // font zero is a dummy! for (unsigned int i = 1; i < fnt.size(); i++) { if (fnt[i]->name != NULL && str_i_equals(name, fnt[i]->name)) { ff = i; break; } } if (ff == 0) { /* don't know about font */ return 0; } GLECoreFont* cfont = fnt[ff]; if (cfont->metric_loaded) { return 1; } if (cfont->error) { return 0; } string fname = fontdir(cfont->file_metric); if (GLEFileExists(fname)) { font_load_metric(ff); } else { cfont->error = true; } return cfont->error ? 0 : 1; } void font_load_metric(int ff) { if (ff == 0) { gprint("There is no zero font, error loading font \n"); return; } if (fnt.size() == 0) { /* load font.dat */ font_load(); } GLECoreFont* cfont = get_core_font(ff); if (cfont->metric_loaded) { /* font metric file already loaded */ return; } /* don't do multiple tries */ cfont->metric_loaded = true; /* try to open font metric file */ string fname = fontdir(cfont->file_metric); FILE *fmt = fopen(fname.c_str(), READ_BIN); if (fmt == NULL) { cfont->error = true; ostringstream err; err << "font metric file not found: '" << fname << "'; spacing will be incorrect"; g_message(err.str().c_str()); myfree(cfont->file_metric); cfont->file_metric = sdup(fnt[1]->file_metric); fname = fontdir(cfont->file_metric); fmt = fopen(fname.c_str(), READ_BIN); if (fmt == NULL) { gprint("can't open metric file: '%s'\n", fname.c_str()); return; } } /* reads in font data */ fread(&cfont->info, sizeof(GLEFontTable), 1, fmt); dbg printf("Encoding %d slant %f, box %f %f %f %f \n", cfont->info.encoding,cfont->info.slant,cfont->info.fx1, cfont->info.fy1,cfont->info.fx2,cfont->info.fy2); /* read number of characters */ int nb_chars; fread(&nb_chars, sizeof(int), 1, fmt); /* read unicode map */ int uni_map_size; fread(&uni_map_size, sizeof(int), 1, fmt); if (uni_map_size != 0) { unsigned int* encoding_unicode = new unsigned int[uni_map_size]; unsigned int* encoding_code = new unsigned int[uni_map_size]; fread(encoding_unicode, sizeof(unsigned int), uni_map_size, fmt); fread(encoding_code, sizeof(unsigned int), uni_map_size, fmt); for (int i = 0; i < uni_map_size; i++) { if (encoding_code[i] < (unsigned int)nb_chars) { (*cfont->unimap)[encoding_unicode[i]] = encoding_code[i]; } } delete[] encoding_unicode; delete[] encoding_code; } /* read character data */ for (int i = 0; i < nb_chars; i++) { GLEFontCharData* cdata = cfont->addCharData(); if (fgetc(fmt) == 1) { fread(&cdata->wx, sizeof(float), 1, fmt); fread(&cdata->wy, sizeof(float), 1, fmt); fread(&cdata->x1, sizeof(float), 1, fmt); fread(&cdata->y1, sizeof(float), 1, fmt); fread(&cdata->x2, sizeof(float), 1, fmt); fread(&cdata->y2, sizeof(float), 1, fmt); unsigned int ksize; fread(&ksize, sizeof(unsigned int), 1, fmt); if (ksize > 0) { cdata->Kern.resize(ksize); fread(&cdata->Kern[0], sizeof(GLEFontKernInfo), ksize, fmt); } unsigned int lsize; fread(&lsize, sizeof(unsigned int), 1, fmt); if (lsize > 0) { cdata->Lig.resize(lsize); fread(&cdata->Lig[0], sizeof(GLEFontLigatureInfo), lsize, fmt); } } } /* add some dummy characters */ for (int i = nb_chars; i <= 256; i++) { /* some routines in tex.cpp assume fonts have at least this number of characters */ cfont->addCharData(); } /* Also do the composites to support accents in GLE (new 070506) */ int char_code = 0; fread(&char_code, sizeof(int), 1, fmt); while (char_code != 0) { int accent_idx; fread(&accent_idx, sizeof(int), 1, fmt); int hash_key = (char_code << 7) | accent_idx; FontCompositeInfo* info = new FontCompositeInfo(); cfont->composites.add_item(hash_key, info); fread(&info->c1, sizeof(int), 1, fmt); fread(&info->dx1, sizeof(double), 1, fmt); fread(&info->dy1, sizeof(double), 1, fmt); fread(&info->c2, sizeof(int), 1, fmt); fread(&info->dx2, sizeof(double), 1, fmt); fread(&info->dy2, sizeof(double), 1, fmt); /* another character in the file? */ fread(&char_code, sizeof(int), 1, fmt); } fclose(fmt); } GLEFontCharData::GLEFontCharData() { wx = 0.0; wy = 0.0; x1 = 0.0; y1 = 0.0; x2 = 0.0; y2 = 0.0; } GLEFontCharData::~GLEFontCharData() { } GLECoreFont::GLECoreFont() { name = NULL; full_name = NULL; file_metric = NULL; file_vector = NULL; file_bitmap = NULL; metric_loaded = false; error = false; unimap = new GLEFontUnicodeMap(); } GLECoreFont::~GLECoreFont() { } int GLECoreFont::char_lig(int *c1, int c2) { GLEFontCharData* ch_data = getCharData(*c1); if (ch_data != 0) { for (unsigned int i = 0; i < ch_data->Lig.size(); i++) { if (ch_data->Lig[i].NextChar == (unsigned int)c2) { *c1 = ch_data->Lig[i].RepChar; return *c1; } } } return 0; } void GLECoreFont::char_kern(int c1, int c2, float *w) { GLEFontCharData* ch_data = getCharData(c1); if (ch_data != 0) { for (unsigned int i = 0; i < ch_data->Kern.size(); i++) { if (ch_data->Kern[i].CharCode == (unsigned int)c2) { *w = ch_data->Kern[i].X; return; } } } *w = 0; } FontCompositeInfo* GLECoreFont::get_composite_char(int ch, int accent) { int hash_key = (ch << 7) | accent; return composites.try_get(hash_key); } int GLECoreFont::unicode_map(unsigned int ucode) { GLEFontUnicodeMap::iterator i = unimap->find(ucode); if (i == unimap->end()) { return -1; } else { return i->second; } } GLEFontCharData* GLECoreFont::getCharData(int cc) { if (cc >= 0 && (unsigned int)cc < cdata.size()) { return cdata[cc]; } else { return 0; } } GLEFontCharData* GLECoreFont::addCharData() { cdata.push_back(new GLEFontCharData()); return cdata[cdata.size() - 1]; } GLEFontCharData* GLECoreFont::getCharDataThrow(int cc) { GLEFontCharData* result = getCharData(cc); if (result == 0) { std::ostringstream msg; msg << "font '" << name << "' does not contain a character with id = " << cc; g_throw_parser_error(msg.str()); } return result; } gle-graphics-4.2.4c/src/gle/d_cairo.cpp0000664000000000000000000010050311722434562016400 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ #include "all.h" #include "core.h" #include "file_io.h" #include "texinterface.h" #include "cutils.h" #include "gprint.h" #include "bitmap/img2ps.h" #ifdef HAVE_CAIRO #include #include #include /************************************************************************************ * Fonts in Cairo: * ************************************************************************************/ extern struct gmodel g; char *font_getname(int i); GLECairoDevice::GLECairoDevice(bool showerror): m_ShowError(showerror), m_width(0.0), m_height(0.0), m_surface(0), m_cr(0), m_FillMethod(GLE_FILL_METHOD_DEFAULT), m_currentFill(g_get_fill_clear()) { } GLECairoDevice::~GLECairoDevice() { } void GLECairoDevice::arc(dbl r,dbl t1,dbl t2,dbl cx,dbl cy) { //double dx,dy; double x,y; g_get_xy(&x,&y); //polar_xy(r,t1,&dx,&dy); if (!g.inpath) { if (!g.xinline) cairo_new_path(m_cr); } cairo_arc(m_cr, cx, cy, r, t1*GLE_PI/180.0, t2*GLE_PI/180.0); g.xinline = true; if (!g.inpath) g_move(x,y); } void GLECairoDevice::arcto(dbl x1,dbl y1,dbl x2,dbl y2,dbl rrr) { if (g.xinline==false) move(g.curx,g.cury); cairo_curve_to(m_cr, x1, y1, x2, y2, x2, y2); g.xinline = true; } void GLECairoDevice::beginclip(void) { cairo_save(m_cr); } void GLECairoDevice::bezier(dbl x1,dbl y1,dbl x2,dbl y2,dbl x3,dbl y3) { double x=g.curx,y=g.cury; if (g.inpath) { if (g.xinline==false) move(g.curx,g.cury); cairo_curve_to(m_cr, x1, y1, x2, y2, x3, y3); } else { g_flush(); if (!g.xinline) cairo_move_to(m_cr, x, y); cairo_curve_to(m_cr, x1, y1, x2, y2, x3, y3); } g.xinline = true; } void GLECairoDevice::box_fill(dbl x1, dbl y1, dbl x2, dbl y2) { if (g.inpath) { xdbox(x1,y1,x2,y2); } else { g_flush(); cairo_new_path(m_cr); GLERectangle rect(x1, y1, x2, y2); xdbox(x1,y1,x2,y2); ddfill(&rect); cairo_new_path(m_cr); } } void GLECairoDevice::box_stroke(dbl x1, dbl y1, dbl x2, dbl y2, bool reverse) { if (g.inpath) { if (reverse) { cairo_move_to(m_cr, x1, y1); cairo_line_to(m_cr, x1, y2); cairo_line_to(m_cr, x2, y2); cairo_line_to(m_cr, x2, y1); cairo_close_path(m_cr); } else { xdbox(x1,y1,x2,y2); } } else { g_flush(); cairo_new_path(m_cr); xdbox(x1,y1,x2,y2); cairo_stroke(m_cr); //ps_nvec = 0; } } void GLECairoDevice::dochar(int font, int cc) { if (font_get_encoding(font) > 2) { my_char(font, cc); } else { g_throw_parser_error("PostScript fonts not supported with '-cairo'"); } } void GLECairoDevice::resetfont() { } void GLECairoDevice::circle_fill(double zr) { double x=g.curx,y=g.cury; if (g.inpath) { cairo_arc(m_cr, x, y, zr, 0, 2*GLE_PI); } else { g_flush(); cairo_new_path(m_cr); cairo_arc(m_cr, x, y, zr, 0, 2*GLE_PI); GLERectangle rect(x-zr, y-zr, x+zr, y+zr); ddfill(&rect); cairo_new_path(m_cr); } } void GLECairoDevice::circle_stroke(double zr) { double x,y; g_get_xy(&x,&y); if (g.inpath) { cairo_arc(m_cr, x, y, zr, 0, 2*GLE_PI); } else { g_flush(); cairo_new_path(m_cr); cairo_arc(m_cr, x, y, zr, 0, 2*GLE_PI); cairo_close_path(m_cr); cairo_stroke(m_cr); } } void GLECairoDevice::clear(void) { } void GLECairoDevice::clip(void) { cairo_clip(m_cr); } void GLECairoDevice::closedev(void) { cairo_destroy(m_cr); cairo_surface_destroy(m_surface); if (g_verbosity() > 0) { string mainname; string extension(g_device_to_ext(getDeviceType())); GetMainNameExt(m_OutputName.getName(), extension.c_str(), mainname); cerr << "[" << mainname << "][" << extension << "]"; g_set_console_output(false); } } void GLECairoDevice::closepath(void) { cairo_close_path(m_cr); } void GLECairoDevice::dfont(char *c) { } void GLECairoDevice::ellipse_fill(double rx, double ry) { double x=g.curx,y=g.cury; if (g.inpath) { cairo_save (m_cr); cairo_translate (m_cr, x, y); cairo_scale (m_cr, rx, ry); cairo_arc (m_cr, 0, 0, 1, 0, 2*GLE_PI); cairo_restore (m_cr); } else { g_flush(); cairo_new_path(m_cr); cairo_save (m_cr); cairo_translate (m_cr, x, y); cairo_scale (m_cr, rx, ry); cairo_arc (m_cr, 0, 0, 1, 0, 2*GLE_PI); cairo_restore (m_cr); GLERectangle rect(x-rx, y-ry, x+rx, y+ry); ddfill(&rect); cairo_new_path(m_cr); } } void GLECairoDevice::ellipse_stroke(double rx, double ry) { double x,y; g_get_xy(&x,&y); if (!g.inpath) { if (!g.xinline) cairo_new_path(m_cr); } cairo_save (m_cr); cairo_translate (m_cr, x, y); cairo_scale (m_cr, rx, ry); cairo_arc (m_cr, 0, 0, 1, 0, 2*GLE_PI); cairo_restore (m_cr); g.xinline = true; if (!g.inpath) g_move(x,y); } void GLECairoDevice::elliptical_arc(double rx,double ry,double t1,double t2,double cx,double cy) { double x,y; g_get_xy(&x,&y); if (!g.inpath) { if (!g.xinline) cairo_new_path(m_cr); } cairo_save (m_cr); cairo_translate (m_cr, cx, cy); cairo_scale (m_cr, rx, ry); cairo_arc (m_cr, 0, 0, 1, t1*GLE_PI/180.0, t2*GLE_PI/180.0); cairo_restore (m_cr); g.xinline = true; if (!g.inpath) g_move(x,y); } void GLECairoDevice::elliptical_narc(double rx,double ry,double t1,double t2,double cx,double cy) { double x,y; g_get_xy(&x,&y); if (!g.inpath) { if (!g.xinline) cairo_new_path(m_cr); } cairo_save (m_cr); cairo_translate (m_cr, cx, cy); cairo_scale (m_cr, rx, ry); cairo_arc_negative (m_cr, 0, 0, 1, t1*GLE_PI/180.0, t2*GLE_PI/180.0); cairo_restore (m_cr); g.xinline = true; if (!g.inpath) g_move(x,y); } void GLECairoDevice::endclip(void) { g_flush(); cairo_restore(m_cr); gmodel* state = new gmodel(); g_get_state(state); g_set_state(state); delete state; } void GLECairoDevice::fill(void) { //cairo_save(cr); ddfill(); //cairo_restore(cr); } void GLECairoDevice::ddfill(GLERectangle* bounds) { colortyp cur_fill; cur_fill.l = m_currentFill->getHexValueGLE(); if (cur_fill.b[B_F] == 255) { return; /* clear fill, do nothing */ } else if (cur_fill.b[B_F] == 2) { shade(bounds); return; } set_fill(); /*because color and fill are the same*/ //cairo_fill(cr); cairo_fill_preserve(m_cr); set_color(); } void GLECairoDevice::shadePattern(void) { colortyp cur_fill; cur_fill.l = m_currentFill->getHexValueGLE(); int step1 = cur_fill.b[B_B]; int step2 = cur_fill.b[B_G]; int xstep = max(step1, step2); int ystep = max(step1, step2); cairo_save(m_cr); cairo_matrix_t matrix; cairo_get_matrix(m_cr, &matrix); cairo_surface_t *isurface = cairo_surface_create_similar(m_surface, CAIRO_CONTENT_COLOR_ALPHA, xstep, ystep); cairo_t *icr = cairo_create(isurface); GLERC background(get_fill_background(m_currentFill.get())); if (!background->isTransparent()) { if (background->getHexValueGLE() == (unsigned int)GLE_COLOR_WHITE) { cairo_set_source_rgb(icr, 1.0, 1.0, 1.0); } else { cairo_set_source_rgb(icr, background->getRed(), background->getGreen(), background->getBlue()); } cairo_rectangle(icr, -1, -1, (xstep+1), (ystep+1)); cairo_fill(icr); } GLERC foreground(get_fill_foreground(m_currentFill.get())); if (foreground->getHexValueGLE() == GLE_COLOR_BLACK) { cairo_set_source_rgb(icr, 0, 0, 0); } else { cairo_set_source_rgb(icr, foreground->getRed(), foreground->getGreen(), foreground->getBlue()); } cairo_set_line_width(icr, cur_fill.b[B_R]); if (step1 > 0) { cairo_move_to(icr, 0, 0); cairo_line_to(icr, xstep, ystep); cairo_stroke(icr); if (step2 == 0) { cairo_move_to(icr, xstep/2, -ystep/2); cairo_line_to(icr, 3*xstep/2, ystep/2); cairo_stroke(icr); cairo_move_to(icr, -xstep/2, ystep/2); cairo_line_to(icr, xstep/2, 3*ystep/2); cairo_stroke(icr); } } if (step2 > 0) { cairo_move_to(icr, 0, ystep); cairo_line_to(icr, xstep, 0); cairo_stroke(icr); if (step1 == 0) { cairo_move_to(icr, -xstep/2, ystep/2); cairo_line_to(icr, xstep/2, -ystep/2); cairo_stroke(icr); cairo_move_to(icr, xstep/2, 3*ystep/2); cairo_line_to(icr, 3*xstep/2, ystep/2); cairo_stroke(icr); } } cairo_pattern_t *pattern = cairo_pattern_create_for_surface(isurface); cairo_pattern_set_extend(pattern, CAIRO_EXTEND_REPEAT); cairo_matrix_init_scale(&matrix, 160.0, 160.0); cairo_pattern_set_matrix(pattern, &matrix); cairo_set_source(m_cr, pattern); cairo_fill(m_cr); cairo_restore(m_cr); cairo_pattern_destroy(pattern); cairo_destroy(icr); cairo_surface_destroy(isurface); } void GLECairoDevice::shadeGLE() { colortyp cur_fill; cur_fill.l = m_currentFill->getHexValueGLE(); double step1 = cur_fill.b[B_B]/160.0; double step2 = cur_fill.b[B_G]/160.0; if (step1 > 0) { for (double x = -40.0; x < 40.0; x += step1) { cairo_move_to(m_cr, x, 0.0); cairo_line_to(m_cr, 40.0+x, 40); cairo_stroke(m_cr); } } if (step2 > 0) { for (double x = 0.0; x < 80; x += step2) { cairo_move_to(m_cr, x, 0.0); cairo_line_to(m_cr, x-40.0, 40); cairo_stroke(m_cr); } } } void GLECairoDevice::shadeBoundedIfThenElse1(GLERectangle* bounds, double p, double step1) { // if x1+p*s > y1 then if (bounds->getXMax()+p*step1 > bounds->getYMax()) { // aline y1-p*s y1 cairo_line_to(m_cr, bounds->getYMax()-p*step1, bounds->getYMax()); } else { // aline x1 x1+p*s cairo_line_to(m_cr, bounds->getXMax(), bounds->getXMax()+p*step1); } cairo_stroke(m_cr); } void GLECairoDevice::shadeBoundedIfThenElse2(GLERectangle* bounds, double p, double step2) { // if p*s-y1 > x0 then if (p*step2-bounds->getYMax() > bounds->getXMin()) { // aline p*s-y1 y1 cairo_line_to(m_cr, p*step2-bounds->getYMax(), bounds->getYMax()); } else { // aline x0 p*s-x0 cairo_line_to(m_cr, bounds->getXMin(), p*step2-bounds->getXMin()); } cairo_stroke(m_cr); } void GLECairoDevice::shadeBounded(GLERectangle* bounds) { colortyp cur_fill; cur_fill.l = m_currentFill->getHexValueGLE(); double step1 = cur_fill.b[B_B]/160.0; double step2 = cur_fill.b[B_G]/160.0; cairo_set_line_cap(m_cr, CAIRO_LINE_CAP_SQUARE); if (step1 > 0) { int p0 = (int)ceil((bounds->getYMax()-bounds->getXMin())/step1-1e-6); if (bounds->getXMin() + p0*step1 > bounds->getYMax()) p0--; int p1 = (int)floor((bounds->getYMin()-bounds->getXMin())/step1+1e-6); if (bounds->getXMin() + p1*step1 < bounds->getYMin()) p1++; int p2 = (int)floor((bounds->getYMin()-bounds->getXMax())/step1+1e-6); if (bounds->getXMax() + p2*step1 < bounds->getYMin()) p2++; for (int p = p0; p > p1; p--) { // amove x0 x0+p*s cairo_move_to(m_cr, bounds->getXMin(), bounds->getXMin()+p*step1); shadeBoundedIfThenElse1(bounds, p, step1); } for (int p = p1; p >= p2; p--) { // amove y0-p*s y0 cairo_move_to(m_cr, bounds->getYMin()-p*step1, bounds->getYMin()); shadeBoundedIfThenElse1(bounds, p, step1); } } if (step2 > 0) { int p0 = (int)ceil((bounds->getYMax()+bounds->getXMax())/step2-1e-6); if (p0*step2 - bounds->getXMin() > bounds->getYMax()) p0--; int p1 = (int)floor((bounds->getYMin()+bounds->getXMax())/step2+1e-6); if (p1*step2 - bounds->getXMax() < bounds->getYMin()) p1++; int p2 = (int)floor((bounds->getYMin()+bounds->getXMin())/step2+1e-6); if (p2*step2 - bounds->getXMax() < bounds->getYMin()) p2++; for (int p = p0; p > p1; p--) { // amove x0 x0+p*s cairo_move_to(m_cr, bounds->getXMax(), p*step2-bounds->getXMax()); shadeBoundedIfThenElse2(bounds, p, step2); } for (int p = p1; p >= p2; p--) { // amove y0-p*s y0 cairo_move_to(m_cr, p*step2-bounds->getYMin(), bounds->getYMin()); shadeBoundedIfThenElse2(bounds, p, step2); } } } void GLECairoDevice::shade(GLERectangle* bounds) { if (m_FillMethod == GLE_FILL_METHOD_GLE || (m_FillMethod == GLE_FILL_METHOD_DEFAULT && bounds != NULL)) { cairo_save(m_cr); GLERC background(get_fill_background(m_currentFill.get())); if (!background->isTransparent()) { cairo_set_source_rgb(m_cr, background->getRed(), background->getGreen(), background->getBlue()); cairo_fill_preserve(m_cr); } // Implemented by using path as clip and then painting strokes over the clip cairo_clip(m_cr); cairo_new_path(m_cr); GLERC foreground(get_fill_foreground(m_currentFill.get())); cairo_set_source_rgb(m_cr, foreground->getRed(), foreground->getGreen(), foreground->getBlue()); colortyp cur_fill; cur_fill.l = m_currentFill->getHexValueGLE(); cairo_set_line_width(m_cr, (double)(cur_fill.b[B_R]/160.0)); if (m_FillMethod == GLE_FILL_METHOD_DEFAULT && bounds != NULL) { shadeBounded(bounds); } else { shadeGLE(); } cairo_restore(m_cr); } else { shadePattern(); } } void GLECairoDevice::fill_ary(int nwk,double *wkx,double *wky) { cout << "fill_ary not yet implemented" << endl; } void GLECairoDevice::flush(void) { if (g.inpath) return; if (g.xinline) { cairo_stroke(m_cr); //ps_nvec = 0; } } void GLECairoDevice::get_type(char *t) { strcpy(t,"CAIRO FILLPATH"); } void GLECairoDevice::line(double zx,double zy) { if (g.xinline==false) { move(g.curx,g.cury); } cairo_line_to(m_cr, zx, zy); } void GLECairoDevice::line_ary(int nwk,double *wkx,double *wky) { cout << "line_ary not yet implemented" << endl; } void GLECairoDevice::message(char *s) { printf("%s\n",s); } void GLECairoDevice::move(double zx,double zy) { if (g.inpath) { cairo_move_to(m_cr, zx, zy); } else { //ps_nvec++; cairo_new_path(m_cr); cairo_move_to(m_cr, zx, zy); } } void GLECairoDevice::narc(dbl r,dbl t1,dbl t2,dbl cx,dbl cy) { //double dx,dy; double x,y; g_get_xy(&x,&y); //polar_xy(r,t1,&dx,&dy); if (!g.inpath) { if (!g.xinline) cairo_new_path(m_cr); } cairo_arc_negative(m_cr, cx, cy, r, t1*GLE_PI/180.0, t2*GLE_PI/180.0); g.xinline = true; if (!g.inpath) g_move(x,y); } void GLECairoDevice::newpath(void) { cairo_new_path(m_cr); } void GLECairoDevice::opendev(double width, double height, GLEFileLocation* outputfile, const string& inputfile) throw(ParserError) { } void GLECairoDevice::pscomment(char* ss) { cout << "pscomment not yet implemented" << endl; } void GLECairoDevice::reverse(void) /* reverse the order of stuff in the current path */ { cout << "reverse not yet implemented" << endl; } void GLECairoDevice::set_color_impl(const GLERC& color) { if (color->hasAlpha()) { cairo_set_source_rgba(m_cr, color->getRed(), color->getGreen(), color->getBlue(), color->getAlpha()); } else { cairo_set_source_rgb(m_cr, color->getRed(), color->getGreen(), color->getBlue()); } } void GLECairoDevice::set_color() { set_color_impl(m_currentColor); } void GLECairoDevice::set_color(const GLERC& color) { g_flush(); m_currentColor = color; set_color(); } void GLECairoDevice::set_fill(const GLERC& fill) { m_currentFill = fill; } void GLECairoDevice::set_fill_method(int m) { m_FillMethod = m; } void GLECairoDevice::set_line_cap(int i) { /* lcap, 0= butt, 1=round, 2=projecting square */ if (!g.inpath) g_flush(); cairo_set_line_cap(m_cr, (cairo_line_cap_t)i); } void GLECairoDevice::set_line_join(int i) { /* 0=miter, 1=round, 2=bevel */ if (!g.inpath) g_flush(); cairo_set_line_join(m_cr, (cairo_line_join_t)i); } void GLECairoDevice::set_line_miterlimit(double d) { if (!g.inpath) g_flush(); cairo_set_miter_limit(m_cr, d); } void GLECairoDevice::set_line_style(const char *s) { /* should deal with [] for solid lines */ static const char *defline[] = {"","","12","41","14","92","1282", "9229","4114","54","73","7337","6261","2514"}; if (!g.inpath) g_flush(); if (strlen(s) == 1) { s = defline[*s-'0']; } int nb_dashes = strlen(s); double *dashes = new double[nb_dashes]; for (int i = 0; i < nb_dashes; i++) { dashes[i] = (s[i]-'0')*g.lstyled; } cairo_set_dash(m_cr, dashes, nb_dashes, 0); delete[] dashes; } void GLECairoDevice::set_line_styled(double dd) { // no need to implement: set_line_style gets this from context // FIXME: rather: should call set_line_style again? } void GLECairoDevice::set_line_width(double w) { if (w == 0) w = 0.02; if (w < .0002) w = 0; if (!g.inpath) g_flush(); cairo_set_line_width(m_cr, w); } void GLECairoDevice::set_matrix(double newmat[3][3]) { cairo_matrix_t matrix; matrix.xx = newmat[0][0]; matrix.xy = newmat[0][1]; matrix.yx = - newmat[1][0]; matrix.yy = - newmat[1][1]; matrix.x0 = newmat[0][2]; double offset = 0.0; if (!g_is_fullpage()) { offset = 2.0 * CM_PER_INCH / 72; } matrix.y0 = (m_height + offset) * 72 / CM_PER_INCH - newmat[1][2]; cairo_set_matrix(m_cr, &matrix); } void GLECairoDevice::set_path(int onoff) { //cout << "set_path not yet implemented" << endl; } void GLECairoDevice::source(const char *s) { //cout << "source not yet implemented" << endl; } void GLECairoDevice::stroke(void) { cairo_stroke_preserve(m_cr); } void GLECairoDevice::set_fill(void) { set_color_impl(m_currentFill); } void GLECairoDevice::xdbox(double x1, double y1, double x2, double y2) { //cout << "xdbox" << endl; //cairo_rectangle_t(cr, x1, y1, x2 - x1, y2 - y1); cairo_move_to(m_cr, x1, y1); cairo_line_to(m_cr, x2, y1); cairo_line_to(m_cr, x2, y2); cairo_line_to(m_cr, x1, y2); cairo_close_path(m_cr); } void GLECairoDevice::devcmd(const char *s) { cout << "devcmd not yet implemented" << endl; } FILE* GLECairoDevice::get_file_pointer(void) { return NULL; } int GLECairoDevice::getDeviceType() { return GLE_DEVICE_NONE; } void delete_gle_recorded_byte_stream(void* todelete) { GLERecordedByteStream* stream = (GLERecordedByteStream*)todelete; delete stream; } class GLECairoImageByteStream: public GLEByteStream { public: GLECairoImageByteStream(cairo_surface_t *image) { m_buffer = cairo_image_surface_get_data(image); m_stride = cairo_image_surface_get_stride(image); m_pos = 0; m_scanLine = 0; } virtual int sendByte(GLEBYTE byte) { m_buffer[m_pos++] = byte; return GLE_IMAGE_ERROR_NONE; } virtual int endScanLine() { m_scanLine++; m_pos = m_scanLine * m_stride; return GLE_IMAGE_ERROR_NONE; } protected: unsigned char* m_buffer; int m_stride; int m_pos; int m_scanLine; }; void GLECairoDevice::bitmap(GLEBitmap* bitmap, GLEPoint* pos, GLEPoint* scale, int type) { /* Store current box */ GLERectangle save_box; g_get_bounds(&save_box); /* Generate header in postrscript output */ g_gsave(); /* Set options */ bitmap->setCompress(0.0); bitmap->setASCII85(1); /* Get current position */ g_scale(scale->getX() / bitmap->getWidth(), scale->getY() / bitmap->getHeight()); g_translate(pos->getX(), pos->getY()); /* Flip image so that it is not upside down */ cairo_matrix_t mirror, current, result; cairo_matrix_init(&mirror, 1, 0, 0, -1, 0, bitmap->getHeight()); cairo_get_matrix(m_cr, ¤t); cairo_matrix_multiply(&result, &mirror, ¤t); cairo_set_matrix(m_cr, &result); /* Convert bitmap to postscript */ bitmap->prepare(GLE_BITMAP_PREPARE_SCANLINE); cairo_format_t imageFormat = CAIRO_FORMAT_RGB24; if (bitmap->isAlpha()) { imageFormat = CAIRO_FORMAT_ARGB32; } if (bitmap->isGrayScale()) { imageFormat = CAIRO_FORMAT_A8; if (bitmap->getBitsPerComponent() == 1) { imageFormat = CAIRO_FORMAT_A1; } } cairo_surface_t* image = cairo_image_surface_create(imageFormat, bitmap->getWidth(), bitmap->getHeight()); GLECairoImageByteStream stream(image); GLEByteStream* toDecode = &stream; GLERGBATo32BitByteStream rgbTo32Bit(toDecode, bitmap->isAlpha()); if (bitmap->isIndexed() || bitmap->getColorComponents() >= 3) { toDecode = &rgbTo32Bit; } int extra = bitmap->getExtraComponents(); int color_alpha = bitmap->getColorComponents(); if (bitmap->isAlpha()) { // Do not count alpha as extra component extra--; color_alpha++; } GLEComponentRemovalByteStream crem(toDecode, color_alpha, extra); if (extra != 0) { toDecode = &crem; } GLEPNegateByteStream negated(&stream); if (bitmap->isGrayScale()) { toDecode = &negated; } GLEIndexedToRGBByteStream indexedToRGB(toDecode, bitmap->getPalette()); if (bitmap->isIndexed()) { toDecode = &indexedToRGB; } GLEBitsTo32BitByteStream combine(toDecode); if (bitmap->isGrayScale() && bitmap->getBitsPerComponent() == 1) { toDecode = &combine; } bitmap->decode(toDecode); cairo_surface_mark_dirty(image); if (bitmap->getEncoding() == GLE_BITMAP_JPEG) { GLERecordedByteStream* stream = new GLERecordedByteStream(); bitmap->coded(stream); cairo_status_t status = cairo_surface_set_mime_data(image, CAIRO_MIME_TYPE_JPEG, stream->getBytes(), stream->getNbBytes(), delete_gle_recorded_byte_stream, (void*)stream); CUtilsAssert(status == CAIRO_STATUS_SUCCESS); } bitmap->close(); cairo_set_source_surface(m_cr, image, 0, 0); cairo_paint(m_cr); cairo_surface_destroy(image); /* Footer */ g_grestore(); g_set_bounds(&save_box); } void GLECairoDevice::getRecordedBytes(string* output) { if (!m_recorded.empty()) { *output = std::string(&m_recorded[0], m_recorded.size()); } else { output->clear(); } } void GLECairoDevice::recordData(const unsigned char *data, unsigned int length) { m_recorded.reserve(m_recorded.size() + length); for (unsigned int i = 0; i < length; ++i) { m_recorded.push_back((char)data[i]); } } void GLECairoDevice::clearRecordedData() { m_recorded.clear(); } cairo_status_t gle_cairo_device_write(void* closure, const unsigned char *data, unsigned int length) { GLECairoDevice* cairoDevice = (GLECairoDevice*)closure; cairoDevice->recordData(data, length); return CAIRO_STATUS_SUCCESS; } GLECairoDeviceSVG::GLECairoDeviceSVG(bool showerror) : GLECairoDevice(showerror) { } GLECairoDeviceSVG::~GLECairoDeviceSVG() { } void GLECairoDeviceSVG::opendev(double width, double height, GLEFileLocation* outputfile, const string& inputfile) throw(ParserError) { m_width = width; m_height = height; m_OutputName.copy(outputfile); m_OutputName.addExtension(g_device_to_ext(getDeviceType())); m_surface = cairo_svg_surface_create(m_OutputName.getFullPath().c_str(), 72*width/CM_PER_INCH+2, 72*height/CM_PER_INCH+2); cairo_surface_set_fallback_resolution(m_surface, m_resolution, m_resolution); m_cr = cairo_create(m_surface); computeBoundingBox(width, height); g_scale(PS_POINTS_PER_INCH/CM_PER_INCH, PS_POINTS_PER_INCH/CM_PER_INCH); if (!g_is_fullpage()) { g_translate(1.0*CM_PER_INCH/72, 1.0*CM_PER_INCH/72); } } int GLECairoDeviceSVG::getDeviceType() { return GLE_DEVICE_CAIRO_SVG; } GLECairoDevicePDF::GLECairoDevicePDF(bool showerror) : GLECairoDevice(showerror) { } GLECairoDevicePDF::~GLECairoDevicePDF() { } void GLECairoDevicePDF::opendev(double width, double height, GLEFileLocation* outputfile, const string& inputfile) throw(ParserError) { clearRecordedData(); m_width = width; m_height = height; m_OutputName.copy(outputfile); m_OutputName.addExtension(g_device_to_ext(getDeviceType())); if (isRecordingEnabled()) { m_surface = cairo_pdf_surface_create_for_stream(gle_cairo_device_write, (void*)this, 72*width/CM_PER_INCH+2, 72*height/CM_PER_INCH+2); } else { m_surface = cairo_pdf_surface_create(m_OutputName.getFullPath().c_str(), 72*width/CM_PER_INCH+2, 72*height/CM_PER_INCH+2); } cairo_surface_set_fallback_resolution(m_surface, m_resolution, m_resolution); m_cr = cairo_create(m_surface); computeBoundingBox(width, height); g_scale(PS_POINTS_PER_INCH/CM_PER_INCH, PS_POINTS_PER_INCH/CM_PER_INCH); if (!g_is_fullpage()) { g_translate(1.0*CM_PER_INCH/72, 1.0*CM_PER_INCH/72); } } int GLECairoDevicePDF::getDeviceType() { return GLE_DEVICE_CAIRO_PDF; } GLECairoDeviceEPS::GLECairoDeviceEPS(bool showerror) : GLECairoDevice(showerror) { } GLECairoDeviceEPS::~GLECairoDeviceEPS() { } void GLECairoDeviceEPS::opendev(double width, double height, GLEFileLocation* outputfile, const string& inputfile) throw(ParserError) { clearRecordedData(); m_width = width; m_height = height; m_OutputName.copy(outputfile); m_OutputName.addExtension(g_device_to_ext(getDeviceType())); if (isRecordingEnabled()) { m_surface = cairo_ps_surface_create_for_stream(gle_cairo_device_write, (void*)this, 72*width/CM_PER_INCH+2, 72*height/CM_PER_INCH+2); } else { m_surface = cairo_ps_surface_create(m_OutputName.getFullPath().c_str(), 72*width/CM_PER_INCH+2, 72*height/CM_PER_INCH+2); } cairo_surface_set_fallback_resolution(m_surface, m_resolution, m_resolution); cairo_ps_surface_set_eps(m_surface, true); int int_bb_x = 0, int_bb_y = 0; computeBoundingBox(width, height, &int_bb_x, &int_bb_y); std::ostringstream bbLoRes; std::ostringstream bbHiRes; bbLoRes << "%%BoundingBox: 0 0 " << int_bb_x << " " << int_bb_y; bbHiRes << "%%HiResBoundingBox: 0 0 " << m_boundingBox.getX() << " " << m_boundingBox.getY(); cairo_ps_surface_dsc_comment(m_surface, bbLoRes.str().c_str()); cairo_ps_surface_dsc_comment(m_surface, bbHiRes.str().c_str()); m_cr = cairo_create(m_surface); g_scale(PS_POINTS_PER_INCH/CM_PER_INCH, PS_POINTS_PER_INCH/CM_PER_INCH); if (!g_is_fullpage()) { g_translate(1.0*CM_PER_INCH/72, 1.0*CM_PER_INCH/72); } } void GLECairoDeviceEPS::getRecordedBytes(string* output) { // work-around for bug in Cairo 1.10.x int int_bb_x = 0, int_bb_y = 0; computeBoundingBox(m_width, m_height, &int_bb_x, &int_bb_y); std::ostringstream bbLoRes; std::ostringstream bbHiRes; bbLoRes << "%%BoundingBox: 0 0 " << int_bb_x << " " << int_bb_y; bbHiRes << "%%HiResBoundingBox: 0 0 " << m_boundingBox.getX() << " " << m_boundingBox.getY(); // do conversion std::stringstream inp; std::ostringstream outp; inp.write(&m_recorded[0], m_recorded.size()); while (inp.good()) { string line; getline(inp, line); if (str_starts_with(line, "%%BoundingBox:")) { outp << bbLoRes.str() << std::endl; } else if (str_starts_with(line, "%%HiResBoundingBox:")) { outp << bbHiRes.str() << std::endl; } else { outp << line << std::endl; } } *output = outp.str(); } int GLECairoDeviceEPS::getDeviceType() { return GLE_DEVICE_CAIRO_EPS; } #ifdef __WIN32__ #include class GLECairoDeviceEMFWinInfo { public: HDC hdc; bool shouldClose; GLECairoDeviceEMFWinInfo(); ~GLECairoDeviceEMFWinInfo(); }; GLECairoDeviceEMFWinInfo::GLECairoDeviceEMFWinInfo() : shouldClose(false) { } GLECairoDeviceEMFWinInfo::~GLECairoDeviceEMFWinInfo() { if (shouldClose) { HENHMETAFILE meta = CloseEnhMetaFile(hdc); DeleteEnhMetaFile(meta); } } GLECairoDeviceEMF::GLECairoDeviceEMF(bool showerror) : GLECairoDevice(showerror) { m_WinInfo = new GLECairoDeviceEMFWinInfo(); m_DPI = 1000; m_CopyClipboard = false; } GLECairoDeviceEMF::~GLECairoDeviceEMF() { delete m_WinInfo; } void GLECairoDeviceEMF::set_matrix(double newmat[3][3]) { cairo_matrix_t matrix; matrix.xx = newmat[0][0]; matrix.xy = newmat[0][1]; matrix.yx = - newmat[1][0]; matrix.yy = - newmat[1][1]; matrix.x0 = newmat[0][2]; double offset = 0.0; if (!g_is_fullpage()) { offset = 2.0 * CM_PER_INCH / 72; } matrix.y0 = (m_height + offset) * m_DPI/CM_PER_INCH - newmat[1][2]; cairo_set_matrix(m_cr, &matrix); } void GLECairoDeviceEMF::opendev(double width, double height, GLEFileLocation* outputfile, const string& inputfile) throw(ParserError) { m_width = width; m_height = height; m_OutputName.copy(outputfile); m_OutputName.addExtension("emf"); double myWidth = width + 2.0/PS_POINTS_PER_INCH*CM_PER_INCH; double myHeight = height + 2.0/PS_POINTS_PER_INCH*CM_PER_INCH; HDC hdcRef = GetDC(NULL); int iWidthMM = GetDeviceCaps(hdcRef, HORZSIZE); // iWidthMM is the display width in millimeters. int iHeightMM = GetDeviceCaps(hdcRef, VERTSIZE); // iHeightMM is the display height in millimeters. int iWidthPels = GetDeviceCaps(hdcRef, HORZRES); // iWidthPels is the display width in pixels. int iHeightPels = GetDeviceCaps(hdcRef, VERTRES); // iHeightPels is the display height in pixels. RECT dim; dim.left = 0; dim.top = 0; dim.right = (int)floor(1000.0 * myWidth + 0.5); dim.bottom = (int)floor(1000.0 * myHeight + 0.5); // cout << "dim.right = " << dim.right << endl; // cout << "dim.bottom = " << dim.bottom << endl; if (m_CopyClipboard) { m_WinInfo->hdc = CreateEnhMetaFile(hdcRef, NULL, &dim, NULL); } else { m_WinInfo->hdc = CreateEnhMetaFile(hdcRef, m_OutputName.getFullPath().c_str(), &dim, NULL); } ReleaseDC(NULL, hdcRef); if (m_WinInfo->hdc != NULL) { m_WinInfo->shouldClose = true; } else { g_throw_parser_error("error creating EMF file: '", m_OutputName.getFullPath().c_str(), "'"); } // cout << "Width = " << iWidthMM << " mm = " << iWidthPels << " pixels" << endl; // cout << "Height = " << iHeightMM << " mm = " << iHeightPels << " pixels" << endl; int viewportWidth = (int)floor(10.0 * myWidth * iWidthPels / iWidthMM + 0.5); int viewportHeight = (int)floor(10.0 * myHeight * iHeightPels / iHeightMM + 0.5); // cout << "Viewport width in pixels = " << viewportWidth << endl; // cout << "Viewport height in pixels = " << viewportHeight << endl; int windowWidth = (int)floor(myWidth * m_DPI / CM_PER_INCH + 0.5); int windowHeight = (int)floor(myHeight * m_DPI / CM_PER_INCH + 0.5); // cout << "Window width in pixels = " << windowWidth << endl; // cout << "Window height in pixels = " << windowHeight << endl; SetMapMode(m_WinInfo->hdc, MM_ANISOTROPIC); SetWindowOrgEx(m_WinInfo->hdc, 0, 0, NULL); SetWindowExtEx(m_WinInfo->hdc, windowWidth, windowHeight, NULL); SetViewportExtEx(m_WinInfo->hdc, viewportWidth, viewportHeight, NULL); m_surface = cairo_win32_printing_surface_create(m_WinInfo->hdc); cairo_surface_set_fallback_resolution(m_surface, m_resolution, m_resolution); m_cr = cairo_create(m_surface); computeBoundingBox(width, height); g_scale(m_DPI/CM_PER_INCH, m_DPI/CM_PER_INCH); if (!g_is_fullpage()) { g_translate(1.0*CM_PER_INCH/72, 1.0*CM_PER_INCH/72); } } BOOL PutEnhMetafileOnClipboard(HWND hWnd, HENHMETAFILE hEMF) { BOOL bResult = false; HENHMETAFILE hEMF2 = CopyEnhMetaFile(hEMF, NULL); if (hEMF2 != NULL) { if (OpenClipboard(hWnd)) { if (EmptyClipboard()) { HANDLE hRes = (HENHMETAFILE)SetClipboardData(CF_ENHMETAFILE, hEMF2); bResult = (hRes != NULL); } CloseClipboard(); } } return bResult; } void GLECairoDeviceEMF::closedev(void) { GLECairoDevice::closedev(); HENHMETAFILE meta = CloseEnhMetaFile(m_WinInfo->hdc); if (meta == NULL) { return; } if (m_CopyClipboard) { PutEnhMetafileOnClipboard(NULL, meta); } DeleteEnhMetaFile(meta); m_WinInfo->shouldClose = false; } int GLECairoDeviceEMF::getDeviceType() { return GLE_DEVICE_EMF; } #endif #endif gle-graphics-4.2.4c/src/gle/files.txt0000664000000000000000000001165711677053316016155 0ustar rootroot######################################################################## # # # GLE - Graphics Layout Engine # # # # Modified BSD License # # # # Copyright (C) 2009 GLE. # # # # Redistribution and use in source and binary forms, with or without # # modification, are permitted provided that the following conditions # # are met: # # # # 1. Redistributions of source code must retain the above copyright # # notice, this list of conditions and the following disclaimer. # # # # 2. Redistributions in binary form must reproduce the above # # copyright notice, this list of conditions and the following # # disclaimer in the documentation and/or other materials provided with # # the distribution. # # # # 3. The name of the author may not be used to endorse or promote # # products derived from this software without specific prior written # # permission. # # # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR # # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY # # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE # # GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER # # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN # # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # # ######################################################################## # # files list for GLE to be included by the makefiles # INCLUDES = \ all.h \ axis.h \ begin.h \ color.h \ core.h \ font.h \ glepro.h \ op_def.h \ graph.h \ justify.h \ key.h \ d_interface.h \ pass.h \ polish.h \ tex.h \ gprint.h \ token.h \ cutils.h \ var.h \ config.h \ cmdline.h \ glearray.h \ gle-block.h \ numberformat.h \ builtin-double.h \ gle-poppler.h \ gle-interface$(PATH_SEP)gle-shapemath.h \ gle-interface$(PATH_SEP)gle-base.h \ gle-interface$(PATH_SEP)gle-datatype.h OBJECTS = \ gle.$(OBJ_SUFF) \ axis.$(OBJ_SUFF) \ b_tab.$(OBJ_SUFF) \ b_text.$(OBJ_SUFF) \ begin.$(OBJ_SUFF) \ core.$(OBJ_SUFF) \ curve.$(OBJ_SUFF) \ color.$(OBJ_SUFF) \ drawit.$(OBJ_SUFF) \ eval.$(OBJ_SUFF) \ file_io.$(OBJ_SUFF) \ fitbez.$(OBJ_SUFF) \ fitcf.$(OBJ_SUFF) \ fn.$(OBJ_SUFF) \ font.$(OBJ_SUFF) \ general.$(OBJ_SUFF) \ op_def.$(OBJ_SUFF) \ gprint.$(OBJ_SUFF) \ graph.$(OBJ_SUFF) \ graph2.$(OBJ_SUFF) \ key.$(OBJ_SUFF) \ keyword.$(OBJ_SUFF) \ leastsq.$(OBJ_SUFF) \ memory.$(OBJ_SUFF) \ mychar.$(OBJ_SUFF) \ pass.$(OBJ_SUFF) \ polish.$(OBJ_SUFF) \ run.$(OBJ_SUFF) \ savgol.$(OBJ_SUFF) \ sub.$(OBJ_SUFF) \ tex.$(OBJ_SUFF) \ token.$(OBJ_SUFF) \ var.$(OBJ_SUFF) \ cutils.$(OBJ_SUFF) \ texinterface.$(OBJ_SUFF) \ d_ps.$(OBJ_SUFF) \ d_svg.$(OBJ_SUFF) \ d_x.$(OBJ_SUFF) \ d_dummy.$(OBJ_SUFF) \ d_cairo.$(OBJ_SUFF) \ config.$(OBJ_SUFF) \ numberformat.$(OBJ_SUFF) \ glearray.$(OBJ_SUFF) \ cmdline.$(OBJ_SUFF) \ gle-block.$(OBJ_SUFF) \ gle-sourcefile.$(OBJ_SUFF) \ gle-interface.$(OBJ_SUFF) \ gle-base.$(OBJ_SUFF) \ gle-datatype.$(OBJ_SUFF) \ gle-poppler.$(OBJ_SUFF) \ builtin-double.$(OBJ_SUFF) LINKOBJS = \ bitmap$(PATH_SEP)img2ps.$(OBJ_SUFF) \ bitmap$(PATH_SEP)lzwencode.$(OBJ_SUFF) \ bitmap$(PATH_SEP)glegif.$(OBJ_SUFF) \ bitmap$(PATH_SEP)glejpeg.$(OBJ_SUFF) \ bitmap$(PATH_SEP)gletiff.$(OBJ_SUFF) \ bitmap$(PATH_SEP)glepng.$(OBJ_SUFF) \ bitmap$(PATH_SEP)ascii85.$(OBJ_SUFF) \ surface$(PATH_SEP)gsurface.$(OBJ_SUFF) \ surface$(PATH_SEP)hide.$(OBJ_SUFF) \ surface$(PATH_SEP)fcontour.$(OBJ_SUFF) \ surface$(PATH_SEP)ffitcontour.$(OBJ_SUFF) \ surface$(PATH_SEP)gcontour.$(OBJ_SUFF) \ letzfitz$(PATH_SEP)let.$(OBJ_SUFF) \ letzfitz$(PATH_SEP)fit.$(OBJ_SUFF) \ letzfitz$(PATH_SEP)ffit.$(OBJ_SUFF) \ tokens$(PATH_SEP)Tokenizer.$(OBJ_SUFF) \ tokens$(PATH_SEP)StringKeyHash.$(OBJ_SUFF) \ tokens$(PATH_SEP)BinIO.$(OBJ_SUFF) SVGOBJS = PNGOBJS = JPEGOBJS = gle-graphics-4.2.4c/src/gle/unit-tests/part1.cpp0000664000000000000000000001660411573225201020146 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ /* * 2004 Jan Struyf * */ #include "../all.h" #include "../core.h" #include "../file_io.h" #include "../texinterface.h" #include "../cutils.h" #include "../gprint.h" #include "../tokens/RefCount.h" #include "../glearray.h" #define unit_test(a) unit_test_impl(a, #a, __FILE__, __LINE__) void unit_test_impl(bool expr, const char* exprStr, const char* file, int line) { if (!expr) { cout << "unit test failed (" << file << ":" << line << "): " << exprStr << std::endl; exit(1); } } void test_csv_reader1() { const unsigned int columns[] = { 3, 2, 3, 3, 3, 3, 3, 3, 3 }; const char* tokens[] = { "\"0.123\"", "5.5", "23", "België", "25", "\"Tussen \"dubbele quotes\"\"", "36", "40", "Tussen 'enkele quotes'", "20", "10", "\\textbf{hello}", "1", "23.5", "\"Comma: ,\"", "你好", "10", "\"Drie dubbele quotes \"\"\"\"", "1", "23", "\"\"\"", "", "32", "A", "B", "" }; const char* input1 = "REM Line with comments\n" " REM Line with comments\n" "\"0.123\",5.5 ,23\n" "België,25 REM Hello\n" "\"Tussen \"\"dubbele quotes\"\"\",36,40\r\n" "Tussen 'enkele quotes',20,10\n" "\\textbf{hello},1,23.5\n" "\"Comma: ,\",你好, 10\n\r" "\"Drie dubbele quotes \"\"\"\"\"\"\",1,23\n" "\"\"\"\",,32\n" "A,B,"; GLECSVData reader; reader.setDelims(",;\t"); reader.setCommentIndicator("REM"); reader.readBuffer(input1); GLECSVError* error = reader.getError(); unit_test(error->errorCode == GLECSVErrorNone); unit_test(reader.getNbLines() == 9); for (unsigned int i = 0; i < reader.getNbLines(); i++) { unit_test(reader.getNbColumns(i) == columns[i]); } unsigned int pos = 0; for (unsigned int i = 0; i < reader.getNbLines(); i++) { for (unsigned int j = 0; j < reader.getNbColumns(i); j++) { string cellValue = reader.getCellString(i, j); unit_test(cellValue == tokens[pos++]); } } } void test_csv_reader2() { unsigned int columns = 12; const char* tokens[] = { "17", "16", "2", "16", "16", "1", "17", "161947.9820", "161947.9381", "0.0439", "*", "*", "100", "16", "85", "99", "16", "84", "100", "946121.8397", "946046.8191", "75.0206", "*", "23", "101", "16", "86", "100", "16", "85", "101", "955521.9934", "955371.2682", "150.7252", "*", "*", "119", "16", "104", "118", "16", "103", "119", "1122496.4662", "1122497.7256", "-1.2594", "*", "*" }; const char* input1 = "!\n" "! Some comments\n" "!\n" " 17 16 2 16 16 1 17 161947.9820 161947.9381 0.0439 * * \n" "100 16 85 99 16 84 100 946121.8397 946046.8191 75.0206 * 23\n" "101 16 86 100 16 85 101 955521.9934 955371.2682 150.7252 * * !\n" "119 16 104 118 16 103 119 1122496.4662 1122497.7256 -1.2594 * * !\n" "!120 16 105 119 16 104 120 1131738.8987 1131740.7524 -1.8537 * * \n"; GLECSVData reader; reader.readBuffer(input1); GLECSVError* error = reader.getError(); unit_test(error->errorCode == GLECSVErrorNone); unit_test(reader.getNbLines() == 4); for (unsigned int i = 0; i < reader.getNbLines(); i++) { unit_test(reader.getNbColumns(i) == columns); } unsigned int pos = 0; for (unsigned int i = 0; i < reader.getNbLines(); i++) { for (unsigned int j = 0; j < columns; j++) { string cellValue = reader.getCellString(i, j); unit_test(cellValue == tokens[pos++]); } } } void test_csv_reader3() { unsigned int columns = 7; const char* tokens[] = { "Sample_Number", "V_Ne", "V_Ar", "V_Kr", "V_Xe", "NGT", "err_NGT", "MI-1", "3.68", "4.72", "10.7", "1.59", "6.78", "0.89", "MI-2a", "3.76", "5.07", "*", "1.71", "*", "0.82" }; const char* input1 = " Sample_Number , V_Ne , V_Ar , V_Kr , V_Xe , NGT , err_NGT \n" " MI-1 ,3.68,4.72,10.7,1.59,6.78,0.89\n" " MI-2a ,3.76,5.07, * ,1.71, *,0.82 \n" " \n"; GLECSVData reader; reader.readBuffer(input1); GLECSVError* error = reader.getError(); unit_test(error->errorCode == GLECSVErrorNone); unit_test(reader.getNbLines() == 3); for (unsigned int i = 0; i < reader.getNbLines(); i++) { unit_test(reader.getNbColumns(i) == columns); } unsigned int pos = 0; for (unsigned int i = 0; i < reader.getNbLines(); i++) { for (unsigned int j = 0; j < columns; j++) { string cellValue = reader.getCellString(i, j); unit_test(cellValue == tokens[pos++]); } } } int main(void) { test_csv_reader1(); test_csv_reader2(); test_csv_reader3(); return 0; } gle-graphics-4.2.4c/src/gle/glepro.h0000664000000000000000000001507511652073536015750 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ #ifndef INCLUDE_GLEPRO #define INCLUDE_GLEPRO #include "tokens/Tokenizer.h" class GLEColor; #define SC (char *) #define UC (unsigned char *) #define GLE_TRNS_MATRIX_SIZE 3*3*sizeof(double) typedef double dbl; typedef unsigned char uchar; //int do_pcode(int *srclin, int *pcode, int plen, int *pend); char *eval_str(int *pcode,int *plen); string gledir(const char *filename); const char *gle_top(void); char *sdup(const char *s); double graph_xgraph(double v); double graph_ygraph(double v); double myatan2(double y, double x); double tex_xend(void); double tex_yend(void); void df_arc(dbl r,dbl t1,dbl t2,dbl cx,dbl cy); void df_arcto(dbl x1, dbl y1, dbl x2, dbl y2, dbl r); int df_box_fill(dbl x1, dbl y1, dbl x2, dbl y2); int df_box_stroke(dbl x1, dbl y1, dbl x2, dbl y2); int df_circle_fill(dbl r); int df_circle_stroke(dbl r); int df_narc(dbl r,dbl t1,dbl t2,dbl cx,dbl cy); int mem_total(void); int mem_worst(void); GLERC pass_color_var(const char *s) throw(ParserError); int pass_font(const char *s); int pass_justify(const char *s); int pass_marker(char *s) throw(ParserError); int testfree(int i); int text_printf(int *in,int ilen); int w_message(char *s); void init_memory(void); void *myalloc(int size); void *myallocn(int nitems,int size); void *myallocz(int size); void add_svga(void); void alloc_temp(int n); void big_close(void); void box_clip(double *x1, double *y1, double xmin, double ymin, double xmax, double ymax); void char_bbox(int ff,int cc,double *xx1, double *yy1, double *xx2, double *yy2); void cmd_name(int idx, char **cp); void d_tidyup(void); void debug_polish(int *pcode,int *zcp); void dr_init(void); void f_init(void); void find_mkey(string cp, int *idx); void find_un(char *cp, int *idx,int *ret,int *np,int **plist); void font_get_lineskip(double *ls,double *gap); void font_get_parskip(double *ls,double *gap); void font_init(void); void font_load_metric(int ff); void font_replace_vector(int ff); void freefont(int i); void g_shear(double sx,double sy); void gle_include(char *s); void gprint_do(char *output); void gr_nomiss(int i); void gr_thrownomiss(void); void graph_freedata(void); void myfree(void *p); void myfrees(void *p, const char *s); void mystrcpy(char **d, const char *s); void ncpy(char *d, const char *s, int n); void polar_xy(double r, double angle, double *dx, double *dy); void polar_xy(double rx, double ry, double angle, double *dx, double *dy); void scheck(int v); void set_glue(int *in,int ilen,double actual,double width,double stretch,double shrink,double *setlen); void setdstr(char **s, const char *in); void setsstr(char **s, const char *in); void showpcode(int *p); void spop(int v); void spush(int v); void sub_clear(bool undef); void sub_get_startend(int idx, int *ss, int *ee); void sub_set_return(double d); void sub_set_return_str(const char* s); void subscript(); void text_block(const string& s,double width,int justify); void text_block(const string& s,double width,int justify, int innerjust); void text_draw(int *in,int ilen); void text_tomacro(const string& in, uchar *out); void text_topcode(uchar *in, int *out, int *lout) /* passed a paragraph */; void text_wrapcode(int *in,int ilen,double width); void wprintf_do(char *s); void xy_polar(double dx,double dy,double *radius,double *angle); void reset_new_error(bool val); int get_nb_errors(); void inc_nb_errors(); const char* get_font_name(int idx); int get_nb_fonts(); void pass_file_name(const char* name, string& file); int get_nb_extra_args(); const string& get_extra_arg(int i); void gle_abort(const char *s); void do_wait_for_enter(); void do_wait_for_enter_exit(int exitcode); void validate_open_input_stream(ifstream& input, const string& fname) throw(ParserError); FILE* validate_fopen(const string& fname, const char *mode, bool isread) throw(ParserError); void validate_file_name(const string& fname, bool isread) throw(ParserError); string fontdir(const char *s); int check_has_font(const char* name); #endif gle-graphics-4.2.4c/src/gle/gle-sourcefile.cpp0000664000000000000000000002616611455663670017730 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ // #define DEBUG_UPDATE #include "all.h" #include "gle-interface/gle-interface.h" #include "stdio.h" #include "cutils.h" int showLineAbbrev(const string& text, int focuscol, ostream& out) { int delta = 0; int show_max = 60; if (focuscol < 0) focuscol = 0; int first = focuscol-show_max/2; if (first < 0) first = 0; int last = first+show_max; if (last > (int)text.length()-1) { last = text.length()-1; first = last-show_max; if (first < 0) first = 0; } if (first != 0) { out << "..."; delta = first - 3; } for (int i = first; i <= last; i++) { out << (char)text[i]; } if (last != (int)text.length()-1) { out << "..."; } return delta; } GLESourceLine::GLESourceLine() { m_GlobalLineNo = 0; m_LineNo = 0; m_File = NULL; m_Delete = false; } GLESourceLine::~GLESourceLine() { } const string& GLESourceLine::getFileName() { return m_File->getLocation()->getName(); } int GLESourceLine::showLineAbbrev(ostream& out, int focuscol) { return ::showLineAbbrev(getCode(), focuscol, out); } bool GLESourceLine::isEmpty() { return gle_onlyspace(m_Code); } GLESourceFile::GLESourceFile() { } GLESourceFile::~GLESourceFile() { for (unsigned int i = 0; i < m_Code.size(); i++) { delete m_Code[i]; } } GLESourceLine* GLESourceFile::addLine() { int line_no = getNbLines() + 1; GLESourceLine* line = new GLESourceLine(); line->setLineNo(line_no); line->setSource(this); m_Code.push_back(line); return line; } void GLESourceFile::scheduleInsertLine(int i, const string& str) { m_ToInsertIdx.push_back(i); m_ToInsertLine.push_back(str); } int GLESourceFile::getNextInsertIndex(int line, int pos) { while (pos < (int)m_ToInsertIdx.size() && m_ToInsertIdx[pos] < line) { pos++; } if (pos < (int)m_ToInsertIdx.size()) { return m_ToInsertIdx[pos]; } else { return -1; } } void GLESourceFile::performUpdates() { /* copy to tmp */ int nb_old = getNbLines(); vector tmp; tmp.resize(nb_old); for (int i = 0; i < nb_old; i++) { tmp[i] = getLine(i); } m_Code.clear(); /* copy back one by one */ unsigned int ins_pos = 0; #ifdef DEBUG_UPDATE cout << "Performing updates: " << m_ToInsertIdx.size() << endl; #endif for (int i = 0; i < nb_old; i++) { GLESourceLine* line = tmp[i]; int nxt = getNextInsertIndex(i, ins_pos); if (nxt == i) { /* may insert multiple lines */ while (ins_pos < m_ToInsertIdx.size() && m_ToInsertIdx[ins_pos] == i) { #ifdef DEBUG_UPDATE cout << "Inserting line at: " << i << endl; cout << "Inserting line code: '" << m_ToInsertLine[ins_pos] << "'" << endl; #endif GLESourceLine* new_line = new GLESourceLine(); new_line->setSource(this); new_line->setCode(m_ToInsertLine[ins_pos]); m_Code.push_back(new_line); ins_pos++; } } if (line->isDelete()) { /* should delete a line? */ delete line; } else { /* just copy old line */ #ifdef DEBUG_UPDATE cout << "Copy line: '" << line->getCode() << "'" << endl; #endif m_Code.push_back(line); } } /* renumber and clear update stacks */ reNumber(); m_ToInsertIdx.clear(); m_ToInsertLine.clear(); } void GLESourceFile::trim(int add) { int pos = getNbLines()-1; while (pos >= 0 && getLine(pos)->isEmpty()) { delete getLine(pos); pos--; } pos++; if (pos < getNbLines()) { m_Code.erase(m_Code.begin()+pos, m_Code.end()); } for (int i = 0; i < add; i++) { addLine(); } } void GLESourceFile::clear() { m_Code.clear(); m_ToInsertIdx.clear(); m_ToInsertLine.clear(); } void GLESourceFile::reNumber() { for (int i = 0; i < getNbLines(); i++) { GLESourceLine* sline = getLine(i); sline->setLineNo(i + 1); } } void GLESourceFile::load(istream& input) { // load the input and rememeber to look for continuation character const char CONT_CHAR = '&'; // should be a global define somewhere?? bool cont = false; string inbuff; while (input.good()) { string linbuff; getline(input, linbuff); // trim is required to make position indicator in error messages appear correctly str_trim_right(linbuff); if (cont) { // -- splice this string into inbuff at location of '&' str_trim_left(linbuff); inbuff.replace(inbuff.rfind(CONT_CHAR),linbuff.length(),linbuff); cont = false; } else { // -- ignore BOM in Unicode input str_trim_left_bom(linbuff); inbuff = linbuff; } // -- search for continuation character '&' if found if (inbuff.length() > 0 && inbuff.at(inbuff.length()-1) == CONT_CHAR) { // -- continuation cont = true; } if (!cont || input.eof()){ string prefix; GLESourceLine* sline = addLine(); str_trim_left(inbuff, prefix); sline->setPrefix(prefix); sline->setCode(inbuff); } } } void GLESourceFile::load() throw(ParserError) { // called to load the main script or an include file if (getLocation()->isStdin()) { load(cin); } else { ifstream input; input.open(getLocation()->getFullPath().c_str()); if (!input.is_open()) { g_throw_parser_error("file not found: '", getLocation()->getName().c_str(), "'"); } load(input); input.close(); } } bool GLESourceFile::tryLoad() { // called to read configuration file ifstream input; input.open(getLocation()->getFullPath().c_str()); if (!input.is_open()) { return false; } load(input); input.close(); return true; } GLEGlobalSource::GLEGlobalSource() { } GLEGlobalSource::~GLEGlobalSource() { } void GLEGlobalSource::clear() { m_Code.clear(); m_Files.clear(); m_Main.clear(); } GLESourceFile* GLEGlobalSource::createNew() { clear(); return &m_Main; } void GLEGlobalSource::addLine(const string& code) { GLESourceLine* sline = getMainFile()->addLine(); sline->setCode(code); addLine(sline); } void GLEGlobalSource::updateLine(int i, const string& code) { getLine(i)->setCode(code); } void GLEGlobalSource::scheduleDeleteLine(int i) { getLine(i)->setDelete(true); } void GLEGlobalSource::scheduleInsertLine(int i, const string& str) { GLESourceLine* sline = getLine(i); GLESourceFile* src = sline->getSource(); src->scheduleInsertLine(sline->getLineNo() - 1, str); } void GLEGlobalSource::performUpdates() { m_Main.performUpdates(); for (int i = 0; i < getNbFiles(); i++) { getFile(i)->performUpdates(); } /* Note: this compiles as if all include files came up front */ m_Code.clear(); for (int i = 0; i < getNbFiles(); i++) { GLESourceFile* file = getFile(i); for (int i = 0; i < file->getNbLines(); i++) { m_Code.push_back(file->getLine(i)); } } GLESourceFile* main = getMainFile(); for (int i = 0; i < main->getNbLines(); i++) { m_Code.push_back(main->getLine(i)); } reNumber(); } void GLEGlobalSource::reNumber() { for (int i = 0; i < getNbLines(); i++) { GLESourceLine* sline = getLine(i); sline->setGlobalLineNo(i + 1); } } void GLEGlobalSource::initFromMain() { m_Code.clear(); GLESourceFile* main = getMainFile(); for (int i = 0; i < main->getNbLines(); i++) { m_Code.push_back(main->getLine(i)); } reNumber(); } void GLEGlobalSource::insertInclude(int offs, GLESourceFile* file) { m_Files.push_back(file); if (file->getNbLines() > 0) { m_Code.insert(m_Code.begin()+offs+1, file->getNbLines()-1, (GLESourceLine*)NULL); for (int i = 0; i < file->getNbLines(); i++) { m_Code[offs+i] = file->getLine(i); } reNumber(); } } void GLEGlobalSource::insertIncludeNoOverwrite(int offs, GLESourceFile* file) { m_Files.push_back(file); if (file->getNbLines() > 0) { m_Code.insert(m_Code.begin()+offs, file->getNbLines(), (GLESourceLine*)NULL); for (int i = 0; i < file->getNbLines(); i++) { m_Code[offs+i] = file->getLine(i); } reNumber(); } } bool GLEGlobalSource::includes(const string& file) { for (vector::size_type i = 0; i < m_Files.size(); i++) { if (str_i_equals(m_Files[i]->getLocation()->getName(), file)) return true; } return false; } void GLEGlobalSource::sourceLineFileAndNumber(int line, ostream& err) { int max = getNbLines(); if (line < 0 || line >= max) { err << "[OUT OF RANGE: " << line << "]"; } else { GLESourceLine* srclin = getLine(line); err << srclin->getFileName() << ":" << srclin->getLineNo(); } } void GLEGlobalSource::load() throw(ParserError) { GLESourceFile* main = getMainFile(); main->load(); main->trim(0); initFromMain(); } bool GLEGlobalSource::tryLoad() { // called to read configuration file GLESourceFile* main = getMainFile(); bool res = main->tryLoad(); main->trim(0); initFromMain(); return res; } void GLEGlobalSource::clearObjectDOConstructors() { getMainFile()->clearObjectDOConstructors(); for (int i = 0; i < getNbFiles(); i++) { getFile(i)->clearObjectDOConstructors(); } } gle-graphics-4.2.4c/src/gle/fn.h0000664000000000000000000000631411652073536015057 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ #define FN_EVAL 76 #define FN_NARGS 81 #define FN_ARG 82 #define FN_ARGS 83 #define FN_MIN 84 #define FN_MAX 85 #define FN_SDIV 86 #define FN_XBAR 87 #define FN_XY2ANGLE 88 #define FN_DATAXVALUE 89 #define FN_DATAYVALUE 90 #define FN_NDATA 91 #define FN_ATAN2 92 #define FN_ISNAME 93 #define FN_FILE 94 #define FN_PATH 95 #define FN_FONT 96 #define FN_GETENV 97 #define FN_XG3D 98 #define FN_YG3D 99 #define FN_JUSTIFY 100 #define FN_RGBA 101 #define FN_RGBA255 102 gle-graphics-4.2.4c/src/gle/d_dummy.cpp0000664000000000000000000001367011652073536016450 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ /* * 2004 Jan Struyf * */ #include "all.h" #include "core.h" #include "file_io.h" #include "texinterface.h" #include "cutils.h" #include "gprint.h" GLEDummyDevice::GLEDummyDevice(bool showerror) { m_ShowError = showerror; } GLEDummyDevice::~GLEDummyDevice() { } void GLEDummyDevice::arc(dbl r,dbl t1,dbl t2,dbl cx,dbl cy) { } void GLEDummyDevice::arcto(dbl x1,dbl y1,dbl x2,dbl y2,dbl rrr) { } void GLEDummyDevice::beginclip(void) { } void GLEDummyDevice::bezier(dbl x1,dbl y1,dbl x2,dbl y2,dbl x3,dbl y3) { } void GLEDummyDevice::box_fill(dbl x1, dbl y1, dbl x2, dbl y2) { } void GLEDummyDevice::box_stroke(dbl x1, dbl y1, dbl x2, dbl y2, bool reverse) { } void GLEDummyDevice::dochar(int font, int cc) { } void GLEDummyDevice::resetfont() { } void GLEDummyDevice::circle_fill(double zr) { } void GLEDummyDevice::circle_stroke(double zr) { } void GLEDummyDevice::clear(void) { } void GLEDummyDevice::clip(void) { } void GLEDummyDevice::closedev(void) { } void GLEDummyDevice::closepath(void) { } void GLEDummyDevice::dfont(char *c) { } void GLEDummyDevice::ellipse_fill(double rx, double ry) { } void GLEDummyDevice::ellipse_stroke(double rx, double ry) { } void GLEDummyDevice::elliptical_arc(double rx,double ry,double t1,double t2,double cx,double cy) { } void GLEDummyDevice::elliptical_narc(double rx,double ry,double t1,double t2,double cx,double cy) { } void GLEDummyDevice::endclip(void) { } void GLEDummyDevice::fill(void) { } void GLEDummyDevice::fill_ary(int nwk,double *wkx,double *wky) { } void GLEDummyDevice::flush(void) { } void GLEDummyDevice::get_type(char *t) { strcpy(t,"DUMMY"); } void GLEDummyDevice::line(double zx,double zy) { } void GLEDummyDevice::line_ary(int nwk,double *wkx,double *wky) { } void GLEDummyDevice::message(char *s) { } void GLEDummyDevice::move(double zx,double zy) { } void GLEDummyDevice::narc(dbl r,dbl t1,dbl t2,dbl cx,dbl cy) { } void GLEDummyDevice::newpath(void) { } void GLEDummyDevice::opendev(double width, double height, GLEFileLocation* outputfile, const string& inputfile) throw(ParserError) { g_scale(PS_POINTS_PER_INCH/CM_PER_INCH, PS_POINTS_PER_INCH/CM_PER_INCH); g_translate(1.0*CM_PER_INCH/72, 1.0*CM_PER_INCH/72); } void GLEDummyDevice::pscomment(char* ss) { } void GLEDummyDevice::reverse(void) /* reverse the order of stuff in the current path */ { } void GLEDummyDevice::set_color(const GLERC& color) { } void GLEDummyDevice::set_fill(const GLERC& fill) { } void GLEDummyDevice::set_line_cap(int i) { } void GLEDummyDevice::set_line_join(int i) { } void GLEDummyDevice::set_line_miterlimit(double d) { } void GLEDummyDevice::set_line_style(const char *s) { } void GLEDummyDevice::set_line_styled(double dd) { } void GLEDummyDevice::set_line_width(double w) { } void GLEDummyDevice::set_matrix(double newmat[3][3]) { } void GLEDummyDevice::set_path(int onoff) { } void GLEDummyDevice::source(const char *s) { } void GLEDummyDevice::stroke(void) { } void GLEDummyDevice::set_color(void) { } void GLEDummyDevice::set_fill(void) { } void GLEDummyDevice::xdbox(double x1, double y1, double x2, double y2) { } void GLEDummyDevice::devcmd(const char *s) { } FILE* GLEDummyDevice::get_file_pointer(void) { return NULL; } int GLEDummyDevice::getDeviceType() { return GLE_DEVICE_DUMMY; } gle-graphics-4.2.4c/src/gle/cmdline.cpp0000664000000000000000000005532311652073536016426 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ /* * 2004 Jan Struyf * */ #include #include #include #include #include using namespace std; #include "tokens/stokenizer.h" #include "cmdline.h" #include "cutils.h" CmdLineOptionArg::CmdLineOptionArg(const char* name) { m_Name = name; m_MinCard = -1; m_MaxCard = -1; m_Card = 0; } CmdLineOptionArg::~CmdLineOptionArg() { } void CmdLineOptionArg::showExtraHelp() { } void CmdLineOptionArg::initArg() { } void CmdLineOptionArg::setDefaultValue() { } void CmdLineOptionArg::initShowError() { cerr << ">> Option " << getObject()->getOptionPrefix() << getOption()->getName(); if (getOption()->getMaxNbArgs() != 1) { cerr << " argument '" << getName() << "'"; } } bool CmdLineOptionArg::appendValue(const string& value) { return addValue(value); } CmdLineOptionList* CmdLineOptionArg::getObject() { return m_Option->getObject(); } bool CmdLineOptionArg::needsComma() { return false; } CmdLineArgString::CmdLineArgString(const char* name, bool unquote) : CmdLineOptionArg(name) { m_Unquote = unquote; setMaxCard(1); } CmdLineArgString::~CmdLineArgString() { } void CmdLineArgString::write(ostream& os) { os << "\"" << m_Value << "\""; } void CmdLineArgString::reset() { m_Value = ""; m_Card = 0; } bool CmdLineArgString::addValue(const string& value) { m_Value = value; if (m_Unquote) str_remove_quote(m_Value); m_Card++; return true; } void CmdLineArgString::setValue(const char* value) { m_Value = value; if (m_Unquote) str_remove_quote(m_Value); m_Card = 1; } bool CmdLineArgString::appendValue(const string& value) { if (m_Value == "") { m_Value = value; if (m_Unquote) str_remove_quote(m_Value); } else { string temp = value; if (m_Unquote) str_remove_quote(temp); m_Value += string(" ") + temp; } m_Card++; return true; } void CmdLineArgString::setDefaultValue() { m_Value = m_Default; m_Card++; } bool CmdLineArgString::isDefault() { return m_Value == m_Default; } bool CmdLineArgString::needsComma() { return true; } CmdLineArgSPairList::CmdLineArgSPairList(const char* name) : CmdLineOptionArg(name) { setMaxCard(1); } CmdLineArgSPairList::~CmdLineArgSPairList() { } void CmdLineArgSPairList::write(ostream& os) { if (size() != 0) { os << "\"" << getValue1(0) << "\",\"" << getValue2(0) << "\"" << endl; for (int i = 1; i < size(); i++) { os << "\t" << getName() << " += \"" << getValue1(i) << "\",\"" << getValue2(i) << "\""; if (i != size()-1) os << endl; } } } void CmdLineArgSPairList::reset() { m_Card = 0; m_Value1.clear(); m_Value2.clear(); } bool CmdLineArgSPairList::addValue(const string& value) { m_Card++; return true; } bool CmdLineArgSPairList::appendValue(const string& value) { level_char_separator separator(" ,", "", "\"", "\""); tokenizer tokens(value, separator); string s1 = tokens.has_more() ? tokens.next_token() : "?"; string s2 = tokens.has_more() ? tokens.next_token() : "?"; str_remove_quote(s1); str_remove_quote(s2); addPair(s1, s2); m_Card++; return true; } void CmdLineArgSPairList::setDefaultValue() { reset(); m_Card++; } bool CmdLineArgSPairList::isDefault() { return m_Value1.size() == 0 && m_Value2.size() == 0; } void CmdLineArgSPairList::addPair(const string& s1, const string& s2) { m_Value1.push_back(s1); m_Value2.push_back(s2); } void CmdLineArgSPairList::addPairValue2(const string& s2) { m_Value1.push_back(""); m_Value2.push_back(s2); } bool CmdLineArgSPairList::hasValue2(const string& s2) { for (vector::size_type i = 0; i < m_Value2.size(); i++) { if (m_Value2[i] == s2) return true; } return false; } const string* CmdLineArgSPairList::lookup(const string& s1) { for (vector::size_type i = 0; i < m_Value1.size(); i++) { if (m_Value1[i] == s1) return &m_Value2[i]; } return NULL; } CmdLineArgInt::CmdLineArgInt(const char* name) : CmdLineOptionArg(name) { setMaxCard(1); } CmdLineArgInt::~CmdLineArgInt() { } void CmdLineArgInt::write(ostream& os) { os << m_Value; } void CmdLineArgInt::reset() { m_Value = 0; m_Card = 0; } bool CmdLineArgInt::addValue(const string& value) { for (string::size_type i = 0; i < value.length(); i++) { if (value[i] < '0' || value[i] > '9') { initShowError(); cerr << " illegal value '" << value << "'" << endl; return false; } } m_Value = atoi(value.c_str()); m_Card++; return true; } void CmdLineArgInt::setValue(int value) { m_Value = value; m_Card++; } void CmdLineArgInt::setDefaultValue() { m_Value = m_Default; m_Card++; } bool CmdLineArgInt::isDefault() { return m_Value == m_Default; } CmdLineArgSet::CmdLineArgSet(const char* name) : CmdLineOptionArg(name) { } CmdLineArgSet::~CmdLineArgSet() { } bool CmdLineArgSet::addValue(const string& value) { for (vector::size_type i = 0; i < m_Values.size(); i++) { if (str_i_equals(m_Values[i], value)) { if (m_HasValue[i] == CMDLINE_NO) { m_HasValue[i] = CMDLINE_YES; m_Card++; return true; } } } initShowError(); cerr << " illegal value '" << value << "'" << endl; return false; } void CmdLineArgSet::removeValue(int i) { if (m_HasValue[i] == CMDLINE_YES) { m_HasValue[i] = CMDLINE_NO; m_Card--; } } void CmdLineArgSet::addValue(int i) { if (m_HasValue[i] == CMDLINE_NO) { m_HasValue[i] = CMDLINE_YES; m_Card++; } } int CmdLineArgSet::getFirstValue() { for (vector::size_type i = 0; i < m_Values.size(); i++) { if (m_HasValue[i] == CMDLINE_YES) { return i; } } return -1; } void CmdLineArgSet::write(ostream& os) { bool prev = false; for (vector::size_type i = 0; i < m_Values.size(); i++) { if (m_HasValue[i] == CMDLINE_YES) { if (prev) { os << " "; } else { prev = true; } os << m_Values[i]; } } } void CmdLineArgSet::reset() { for (vector::size_type i = 0; i < m_Values.size(); i++) { if (m_HasValue[i] != CMDLINE_UNSUPPORTED) { m_HasValue[i] = CMDLINE_NO; } } m_Card = 0; } void CmdLineArgSet::setDefaultValue() { for (vector::size_type i = 0; i < m_Defaults.size(); i++) { m_HasValue[m_Defaults[i]] = CMDLINE_YES; m_Card++; } } bool CmdLineArgSet::isDefault() { for (vector::size_type i = 0; i < m_Values.size(); i++) { if (m_HasValue[i] != CMDLINE_UNSUPPORTED) { bool yes = m_HasValue[i] == CMDLINE_YES; bool default_yes = false; for (vector::size_type j = 0; j < m_Defaults.size(); j++) { if (m_Defaults[j] == (int)i) { default_yes = true; } } if (yes != default_yes) return false; } } return true; } void CmdLineArgSet::showExtraHelp() { cerr << " Possible values: "; for (vector::size_type i = 0; i < m_Values.size(); i++) { if (m_HasValue[i] != CMDLINE_UNSUPPORTED) { if (i != 0) cerr << ", "; cerr << m_Values[i]; } } cerr << endl; } void CmdLineArgSet::addPossibleValue(const char* value) { m_Values.push_back(string(value)); m_HasValue.push_back(CMDLINE_NO); } bool CmdLineArgSet::hasOnlyValue(int id) { if (!hasValue(id)) return false; for (vector::size_type i = 0; i < m_Values.size(); i++) { if (i != (unsigned int)id && m_HasValue[i] == CMDLINE_YES) { return false; } } return true; } CmdLineOption::CmdLineOption(const char* name) { addAlias(name); initialize(); } CmdLineOption::CmdLineOption(const char* name, const char* alias) { addAlias(name); addAlias(alias); initialize(); } CmdLineOption::CmdLineOption(const char* name, const char* alias1, const char* alias2) { addAlias(name); addAlias(alias1); addAlias(alias2); initialize(); } CmdLineOption::~CmdLineOption() { deleteArgs(); } void CmdLineOption::initialize() { m_HasOption = false; m_Expert = false; m_MinNbArgs = 0; m_NbArgs = 0; } void CmdLineOption::deleteArgs() { for (vector::size_type i = 0; i < m_Args.size(); i++) { if (m_Args[i] != NULL) { delete m_Args[i]; m_Args[i] = NULL; } } } void CmdLineOption::initOption() { for (vector::size_type i = 0; i < m_Args.size(); i++) { if (m_Args[i] != NULL) { m_Args[i]->initArg(); } } } void CmdLineOption::setDefaultValues() { for (vector::size_type i = 0; i < m_Args.size(); i++) { if (m_Args[i] != NULL) { m_Args[i]->setDefaultValue(); } } } bool CmdLineOption::allDefaults() { for (vector::size_type i = 0; i < m_Args.size(); i++) { if (m_Args[i] != NULL) { if (!m_Args[i]->isDefault()) return false; } } return true; } void CmdLineOption::addArg(CmdLineOptionArg* arg) { m_Args.push_back(arg); arg->setOption(this); int nb = m_Args.size(); if (m_MinNbArgs < nb) m_MinNbArgs = nb; } void CmdLineOption::addAlias(const char* alias) { m_Names.push_back(string(alias)); } void CmdLineOption::showHelp() { cerr << "Option: " << getObject()->getOptionPrefix() << getName() << endl; if (getNbNames() > 1) { cerr << "Abbreviation(s): "; for (int i = 1; i < getNbNames(); i++) { if (i != 1) cerr << ", "; cerr << getObject()->getOptionPrefix() << getName(i); } cerr << endl; } cerr << getHelp() << endl; for (int i = 0; i < getMaxNbArgs(); i++) { CmdLineOptionArg* argi = getArg(i); cerr << " Argument '" << argi->getName() << "': " << argi->getHelp() << endl; argi->showExtraHelp(); } } CmdLineOptionList::CmdLineOptionList() { m_Error = 0; } CmdLineOptionList::~CmdLineOptionList() { deleteOptions(); } void CmdLineOptionList::deleteOptions() { for (vector::size_type i = 0; i < m_Options.size(); i++) { if (m_Options[i] != NULL) { delete m_Options[i]; m_Options[i] = NULL; } } } void CmdLineOptionList::initOptions() { for (vector::size_type i = 0; i < m_Options.size(); i++) { if (m_Options[i] != NULL) { m_Options[i]->initOption(); } } } void CmdLineOptionList::setDefaultValues() { for (vector::size_type i = 0; i < m_Options.size(); i++) { CmdLineOption* opt = m_Options[i]; if (opt != NULL && !opt->hasOption()) { opt->setDefaultValues(); } } } void CmdLineOptionList::clearAll() { for (vector::size_type i = 0; i < m_Options.size(); i++) { CmdLineOption* opt = m_Options[i]; if (opt != NULL) opt->setHasOption(false); } setDefaultValues(); } bool CmdLineOptionList::allDefaults() { for (vector::size_type i = 0; i < m_Options.size(); i++) { if (m_Options[i] != NULL) { if (!m_Options[i]->allDefaults()) return false; } } return true; } CmdLineOption* CmdLineOptionList::getOption(const string& name) { for (vector::size_type i = 0; i < m_Options.size(); i++) { CmdLineOption* opt = m_Options[i]; if (opt != NULL) { for (int j = 0; j < opt->getNbNames(); j++) { if (str_i_equals(opt->getName(j), name)) { return opt; } } } } return NULL; } void CmdLineOptionList::setHasOption(const string& name) { CmdLineOption* opt = getOption(name); if (opt != NULL) opt->setHasOption(true); } void CmdLineOptionList::setOptionString(const string& name, const string& value, int arg) { CmdLineOption* opt = getOption(name); if (opt != NULL) { opt->setHasOption(true); CmdLineOptionArg* carg = opt->getArg(arg); carg->addValue(value); } } CmdLineOption* CmdLineOptionList::createOption(int id) { CmdLineOption* opt = getOption(id); if (opt != NULL) opt->setHasOption(true); return opt; } void CmdLineOptionList::showHelp(int helpid) { bool expert = false; CmdLineOption* help = getOption(helpid); CmdLineArgString* item = (CmdLineArgString*)help->getArg(0); if (item->getCard() == 1) { const string& value = item->getValue(); if (value == "expert") { expert = true; } else { CmdLineOption* opt = getOption(value); if (opt == NULL) { cerr << ">> Unknown option '" << getOptionPrefix() << value << "'" << endl; } else { cerr << endl; opt->showHelp(); } return; } } cerr << endl << "Options:" << endl; for (vector::size_type i = 0; i < m_Options.size(); i++) { CmdLineOption* opt = m_Options[i]; if (opt != NULL && (!opt->isExpert() || expert)) { string str = " "; str += getOptionPrefix(); str += opt->getName(); cerr << str; for (int i = str.length(); i < 17; i++) cerr << ' '; cerr << opt->getHelp() << endl; } } if (!expert) cerr << endl << "Show expert options: " << getOptionPrefix() << "help expert" << endl; } bool CmdLineOptionList::hasOption(const string& name) { CmdLineOption* option = getOption(name); return option != 0 && option->hasOption(); } bool CmdLineOptionList::hasOption(int id) { if (id >= (int)m_Options.size()) return false; if (m_Options[id] == NULL) return false; return m_Options[id]->hasOption(); } void CmdLineOptionList::setHasOption(int id, bool set) { return m_Options[id]->setHasOption(set); } char CmdLineOptionList::getOptionPrefix() { #ifdef __WIN32__ return '/'; #else return '-'; #endif } void CmdLineOptionList::addOption(CmdLineOption* option, int id) { int size = m_Options.size(); if (id >= size) { m_Options.reserve(id+1); for (int i = size; i <= id; i++) m_Options.push_back(NULL); } option->setObject(this); m_Options[id] = option; } CmdLineArgString* CmdLineOptionList::addStringOption(const char* name, int id) { CmdLineOption* opt = new CmdLineOption(name); CmdLineArgString* arg = new CmdLineArgString(""); opt->addArg(arg); addOption(opt, id); return arg; } CmdLineArgSPairList* CmdLineOptionList::addSPairListOption(const char* name, int id) { CmdLineOption* opt = new CmdLineOption(name); CmdLineArgSPairList* arg = new CmdLineArgSPairList(name); opt->addArg(arg); addOption(opt, id); return arg; } ConfigSection::ConfigSection(const char* name) { m_Name = name; } ConfigSection::~ConfigSection() { } ConfigCollection::ConfigCollection() { } ConfigCollection::~ConfigCollection() { deleteSections(); } void ConfigCollection::deleteSections() { for (vector::size_type i = 0; i < m_Sections.size(); i++) { if (m_Sections[i] != NULL) { delete m_Sections[i]; m_Sections[i] = NULL; } } } void ConfigCollection::setDefaultValues() { for (vector::size_type i = 0; i < m_Sections.size(); i++) { if (m_Sections[i] != NULL) { m_Sections[i]->setDefaultValues(); } } } bool ConfigCollection::allDefaults() { for (vector::size_type i = 0; i < m_Sections.size(); i++) { if (m_Sections[i] != NULL) { if (!m_Sections[i]->allDefaults()) return false; } } return true; } void ConfigCollection::addSection(ConfigSection* section, int id) { int size = m_Sections.size(); if (id >= size) { m_Sections.reserve(id+1); for (int i = size; i <= id; i++) m_Sections.push_back(NULL); } m_Sections[id] = section; } ConfigSection* ConfigCollection::getSection(const string& name) { for (vector::size_type i = 0; i < m_Sections.size(); i++) { ConfigSection* sec = m_Sections[i]; if (sec != NULL && str_i_equals(sec->getName(), name)) { return sec; } } return NULL; } void ConfigCollection::setStringValue(int section, int value, const char* str) { ConfigSection* sec = getSection(section); ((CmdLineArgString*)sec->getOptionValue(value))->setValue(str); } const string& ConfigCollection::getStringValue(int section, int value) { ConfigSection* sec = getSection(section); return ((CmdLineArgString*)sec->getOptionValue(value))->getValue(); } CmdLineObj::CmdLineObj() { m_ArgC = 0; m_ArgIdx = 0; m_ArgV = NULL; m_MArgSepPos = -1; m_HasStdin = false; } CmdLineObj::~CmdLineObj() { } const char* CmdLineObj::getNextArg() { return m_ArgIdx >= m_ArgC ? NULL : m_ArgV[m_ArgIdx++]; } bool CmdLineObj::parseOptionArg(bool inmainargs, const string& optionname, int argidx, CmdLineOption** cropt_p) { if (inmainargs) { cerr << ">> Options should come before " << m_MainArgType << " arguments" << endl; m_Error = 1; return false; } CmdLineOption* cropt = *cropt_p; if (cropt != NULL) { if (argidx < cropt->getMinNbArgs()) { cerr << ">> Option '" << cropt->getName() << "' requires " << cropt->getMinNbArgs() << " arguments" << endl; m_Error = 1; return false; } // Set default values for all arguments not given for (int i = argidx; i < cropt->getMaxNbArgs(); i++) { cropt->getArg(i)->setDefaultValue(); } } cropt = *cropt_p = getOption(optionname); if (cropt == NULL) { cerr << ">> Unknown option '" << getOptionPrefix() << optionname << "'" << endl; m_Error = 1; return false; } else { cropt->setHasOption(true); } return true; } bool CmdLineObj::isMainArgSeparator(const string& arg) { for (vector::size_type i = 0; i < m_MArgSep.size(); i++) { // cout << "Sep = " << m_MArgSep[i] << " Arg = " << arg << endl; if (str_i_equals(m_MArgSep[i], arg)) { return true; } } return false; } int CmdLineObj::getIntValue(int option, int arg) { CmdLineArgInt* intval = (CmdLineArgInt*)getOption(option)->getArg(arg); return intval->getValue(); } void CmdLineObj::setIntValue(int option, int value, int arg) { CmdLineArgInt* intval = (CmdLineArgInt*)getOption(option)->getArg(arg); intval->setValue(value); } const string& CmdLineObj::getStringValue(int option, int arg) { CmdLineArgString* strval = (CmdLineArgString*)getOption(option)->getArg(arg); return strval->getValue(); } int CmdLineObj::getNbMainArgs() { return m_MArgSepPos == -1 ? m_MainArgs.size() : m_MArgSepPos; } const string& CmdLineObj::getMainArg(int i) { return m_MainArgs[i]; } int CmdLineObj::getNbExtraArgs() { return m_MArgSepPos == -1 ? 0 : m_MainArgs.size() - m_MArgSepPos; } const string& CmdLineObj::getExtraArg(int i) { return m_MainArgs[i + m_MArgSepPos]; } bool CmdLineObj::checkForStdin() { for (int i = 0; i < getNbMainArgs(); i++) { const string& arg = getMainArg(i); if (arg == "-") { m_HasStdin = true; m_MainArgs.erase(m_MainArgs.begin()+i); if (i < getNbMainArgs()) { /* after stdin marker, assume only extra args */ setMainArgSepPos(i); } return true; } } return false; } void CmdLineObj::parse(int argc, char** argv) { const char* crarg; m_ArgC = argc; m_ArgV = argv; m_ArgIdx = 1; int argidx = 0; bool inmainargs = false; CmdLineOption* cropt = NULL; while ((crarg = getNextArg()) != NULL) { int len = strlen(crarg); #ifdef __WIN32__ /* Also allow options with prefix '/' on Windows */ /* On Unix, '/' might be the start of an absolute path !! */ if (len >= 2 && (crarg[0] == '-' || crarg[0] == '/')) { #else if (len >= 2 && crarg[0] == '-') { #endif string optionname; if (crarg[1] == '-') { optionname = crarg+2; } else { optionname = crarg+1; } if (inmainargs && isMainArgSeparator(optionname)) { if (getMainArgSepPos() != -1) { cerr << ">> Only one extra argument separator allowed" << endl; m_Error = 1; return; } setMainArgSepPos(getNbMainArgs()); } else { if (parseOptionArg(inmainargs, optionname, argidx, &cropt)) { argidx = 0; } else { return; } } } else { if (cropt != NULL && argidx < cropt->getMaxNbArgs()) { /* Assume extra argument for current option */ addOptionArg(cropt, argidx, string(crarg)); if (hasError()) return; argidx++; } else { /* Assume main argument */ inmainargs = true; m_MainArgs.push_back(string(crarg)); } } } setDefaultValues(); } void CmdLineObj::addOptionArg(CmdLineOption* cropt, int argidx, const string& crarg) { CmdLineOptionArg* arg = cropt->getArg(argidx); if (arg->needsComma()) { if (arg->getMaxCard() == -1 || arg->getCard() < arg->getMaxCard()) { if (!arg->addValue(crarg)) { m_Error = 1; } } return; } char_separator separator(",", "", drop_empty_tokens); tokenizer tokens(crarg, separator); while (tokens.has_more()) { if (arg->getMaxCard() == -1 || arg->getCard() < arg->getMaxCard()) { if (!arg->addValue(tokens.next_token())) { m_Error = 1; } } else { cerr << ">> Option '" << getOptionPrefix() << cropt->getName() << "'"; if (cropt->getMaxNbArgs() > 1) { cerr << " argument " << argidx << " (" << arg->getName() << ")"; } cerr << " takes at most " << arg->getMaxCard() << " value(s)" << endl; m_Error = 1; return; } } } bool cmdline_is_option(const char* opt, const char* val) { bool is_option = false; if (opt != NULL && opt[0] == '-') is_option = true; #ifdef __WIN32__ if (opt != NULL && opt[0] == '/') is_option = true; #endif return is_option && str_i_equals(opt+1, val); } gle-graphics-4.2.4c/src/gle/gprint.h0000664000000000000000000000573211405446017015754 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ #if defined(__NOCYGWIN__) #include #endif #if defined(__UNIX__) void gprint(const char* arg_list, ...); #else void gprint(va_list arg_list, ...); #endif void gprint(const string& output); void g_set_error_column(int col); void g_set_error_line(int lin); int g_get_error_line(); gle-graphics-4.2.4c/src/gle/tex.h0000664000000000000000000000637011663012733015250 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ enum { tp_parskip=1, tp_char, tp_def, tp_defbegin, tp_delcode, tp_delimiter, tp_frac, tp_left, tp_lineskip, tp_mathchar, tp_mathchardef, tp_mathcode, tp_movexy, tp_nolimits, tp_overbrace, tp_overline, tp_right, tp_setfont, tp_sethei, tp_sfont, tp_ssfont, tp_sub, tp_sup, tp_tfont, tp_underbrace, tp_underline, tp_presave, tp_chardef, tp_newline, tp_hfill, tp_setstretch, tp_linegap, tp_rule, tp_accent, tp_tex, tp_accentxy, tp_unicode, tp_uchr, tp_acccmb, tp_fontenc }; void tex_term(); void decode_utf8_notex(string& sc); gle-graphics-4.2.4c/src/gle/d_interface.h0000664000000000000000000005156711722434562016727 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ #ifndef INCLUDE_D_INTERFACE #define INCLUDE_D_INTERFACE // all device files (d_*) should define these functions // core.cpp calls them class GLEBitmap; class GLEPoint; class GLEDevice { protected: bool m_recording; GLEPoint m_boundingBox; double m_resolution; public: GLEDevice(); virtual ~GLEDevice(); virtual void arc(dbl r,dbl t1,dbl t2,dbl cx,dbl cy) = 0; virtual void arcto(dbl x1,dbl y1,dbl x2,dbl y2,dbl rrr) = 0; virtual void beginclip(void) = 0; virtual void bezier(dbl x1,dbl y1,dbl x2,dbl y2,dbl x3,dbl y3) = 0; virtual void box_fill(dbl x1, dbl y1, dbl x2, dbl y2) = 0; virtual void box_stroke(dbl x1, dbl y1, dbl x2, dbl y2, bool reverse) = 0; virtual void dochar(int font, int cc) = 0; virtual void resetfont() = 0; virtual void circle_fill(double zr) = 0; virtual void circle_stroke(double zr) = 0; virtual void clear(void) = 0; virtual void clip(void) = 0; virtual void closedev(void) = 0; virtual void closepath(void) = 0; virtual void dfont(char *c) = 0; virtual void ellipse_fill(double rx, double ry) = 0; virtual void ellipse_stroke(double rx, double ry) = 0; virtual void elliptical_arc(double rx,double ry,double t1,double t2,double cx,double cy) = 0; virtual void elliptical_narc(double rx,double ry,double t1,double t2,double cx,double cy) = 0; virtual void endclip(void) = 0; virtual void fill(void) = 0; virtual void fill_ary(int nwk,double *wkx,double *wky) = 0; virtual void flush(void) = 0; // virtual void get_line_cap(int *i) = 0; virtual void get_type(char *t) = 0; virtual void line(double zx,double zy) = 0; virtual void line_ary(int nwk,double *wkx,double *wky) = 0; virtual void message(char *s) = 0; virtual void move(double zx,double zy) = 0; virtual void narc(dbl r,dbl t1,dbl t2,dbl cx,dbl cy) = 0; virtual void newpath(void) = 0; virtual void opendev(double width, double height, GLEFileLocation* outputfile, const string& inputfile) throw(ParserError) = 0; virtual void pscomment(char* ss) = 0; virtual void reverse(void) /* reverse the order of stuff in the current path */ = 0; virtual void set_color(const GLERC& color) = 0; virtual void set_fill(const GLERC& fill) = 0; virtual void set_line_cap(int i) = 0; virtual void set_line_join(int i) = 0; virtual void set_line_miterlimit(double d) = 0; virtual void set_line_style(const char *s) = 0; virtual void set_line_styled(double dd) = 0; virtual void set_line_width(double w) = 0; virtual void set_matrix(double newmat[3][3]) = 0; virtual void set_path(int onoff) = 0; virtual void source(const char *s) = 0; virtual void stroke(void) = 0; virtual void set_color(void) = 0; virtual void set_fill(void) = 0; virtual void set_fill_method(int m); virtual void xdbox(double x1, double y1, double x2, double y2) = 0; virtual void devcmd(const char *s) = 0; virtual FILE* get_file_pointer(void) = 0; virtual int getDeviceType() = 0; virtual void bitmap(GLEBitmap* bitmap, GLEPoint* pos, GLEPoint* scale, int type); virtual void getRecordedBytes(string* output); void computeBoundingBox(double width, double height, int* int_bb_x, int* int_bb_y); void computeBoundingBox(double width, double height); inline GLEPoint* getBoundingBox() { return &m_boundingBox; } void setResolution(double resolution) { m_resolution = resolution; } public: inline void setRecordingEnabled(bool rec) { m_recording = rec; } inline bool isRecordingEnabled() { return m_recording; } }; class PSGLEDevice : public GLEDevice { protected: GLEFileLocation m_OutputName; ostringstream* m_OutputBuffer; ofstream* m_OutputFile; ostream* m_Out; bool m_IsEps; bool m_IsPageSize; int ps_nvec; int first_ellipse; vector comments; FILE *psfile; int i,l,j; int m_FillMethod; GLERC m_currentColor; GLERC m_currentFill; public: PSGLEDevice(bool eps); virtual ~PSGLEDevice(); virtual void arc(dbl r,dbl t1,dbl t2,dbl cx,dbl cy); virtual void arcto(dbl x1,dbl y1,dbl x2,dbl y2,dbl rrr); virtual void beginclip(void) ; virtual void bezier(dbl x1,dbl y1,dbl x2,dbl y2,dbl x3,dbl y3); virtual void box_fill(dbl x1, dbl y1, dbl x2, dbl y2); virtual void box_stroke(dbl x1, dbl y1, dbl x2, dbl y2, bool reverse); virtual void dochar(int font, int cc); virtual void resetfont(); virtual void circle_fill(double zr); virtual void circle_stroke(double zr); virtual void clear(void); virtual void clip(void); virtual void closedev(void); virtual void closepath(void); virtual void dfont(char *c); virtual void ellipse_fill(double rx, double ry); virtual void ellipse_stroke(double rx, double ry); virtual void elliptical_arc(double rx,double ry,double t1,double t2,double cx,double cy); virtual void elliptical_narc(double rx,double ry,double t1,double t2,double cx,double cy); virtual void endclip(void) ; virtual void fill(void); virtual void fill_ary(int nwk,double *wkx,double *wky); virtual void flush(void); // virtual void get_line_cap(int *i); virtual void get_type(char *t); virtual void line(double zx,double zy); virtual void line_ary(int nwk,double *wkx,double *wky); virtual void message(char *s); virtual void move(double zx,double zy); virtual void narc(dbl r,dbl t1,dbl t2,dbl cx,dbl cy); virtual void newpath(void); virtual void opendev(double width, double height, GLEFileLocation* outputfile, const string& inputfile) throw(ParserError); virtual void pscomment(char* ss); virtual void reverse(void) /* reverse the order of stuff in the current path */; virtual void set_color(const GLERC& color); virtual void set_fill(const GLERC& fill); virtual void set_line_cap(int i); virtual void set_line_join(int i); virtual void set_line_miterlimit(double d); virtual void set_line_style(const char *s); virtual void set_line_styled(double dd); virtual void set_line_width(double w); virtual void set_matrix(double newmat[3][3]); virtual void set_path(int onoff); virtual void source(const char *s); virtual void stroke(void); virtual void set_color(void); virtual void set_fill(void); virtual void set_fill_method(int m); virtual void xdbox(double x1, double y1, double x2, double y2); virtual void devcmd(const char *s); virtual FILE* get_file_pointer(void); virtual int getDeviceType(); virtual void bitmap(GLEBitmap* bitmap, GLEPoint* pos, GLEPoint* scale, int type); virtual void getRecordedBytes(string* output); protected: void set_color_impl(const GLERC& color); void ddfill(GLERectangle* bounds = NULL); void shadeGLE(); void shadeBoundedIfThenElse1(GLERectangle* bounds, double step1); void shadeBoundedIfThenElse2(GLERectangle* bounds, double step2); void shadeBounded(GLERectangle* bounds); void shadePostScript(); void shade(GLERectangle* bounds); void read_psfont(void); void displayGeometry(double width, double height, int *gsPixelWidth, int *gsPixelHeight, int *gsPixelRes); void psFileASCIILine(const char* prefix, int cnt, char ch, bool nl); public: inline bool isEps() { return m_IsEps; } inline bool isOutputPageSize() { return m_IsPageSize; } inline void setOutputPageSize(bool out) { m_IsPageSize = out; } inline ostream& out() { return *m_Out; } void startRecording(); void initialPS(); }; #ifdef HAVE_CAIRO #include class GLECairoDevice : public GLEDevice { protected: GLEFileLocation m_OutputName; bool m_ShowError; double m_width; double m_height; cairo_surface_t *m_surface; cairo_t *m_cr; int m_FillMethod; GLERC m_currentColor; GLERC m_currentFill; std::vector m_recorded; public: GLECairoDevice(bool showerror); virtual ~GLECairoDevice(); virtual void arc(dbl r,dbl t1,dbl t2,dbl cx,dbl cy); virtual void arcto(dbl x1,dbl y1,dbl x2,dbl y2,dbl rrr); virtual void beginclip(void) ; virtual void bezier(dbl x1,dbl y1,dbl x2,dbl y2,dbl x3,dbl y3); virtual void box_fill(dbl x1, dbl y1, dbl x2, dbl y2); virtual void box_stroke(dbl x1, dbl y1, dbl x2, dbl y2, bool reverse); virtual void dochar(int font, int cc); virtual void resetfont(); virtual void circle_fill(double zr); virtual void circle_stroke(double zr); virtual void clear(void); virtual void clip(void); virtual void closedev(void); virtual void closepath(void); virtual void dfont(char *c); virtual void ellipse_fill(double rx, double ry); virtual void ellipse_stroke(double rx, double ry); virtual void elliptical_arc(double rx,double ry,double t1,double t2,double cx,double cy); virtual void elliptical_narc(double rx,double ry,double t1,double t2,double cx,double cy); virtual void endclip(void) ; virtual void fill(void); virtual void fill_ary(int nwk,double *wkx,double *wky); virtual void flush(void); virtual void get_type(char *t); virtual void line(double zx,double zy); virtual void line_ary(int nwk,double *wkx,double *wky); virtual void message(char *s); virtual void move(double zx,double zy); virtual void narc(dbl r,dbl t1,dbl t2,dbl cx,dbl cy); virtual void newpath(void); virtual void opendev(double width, double height, GLEFileLocation* outputfile, const string& inputfile) throw(ParserError); virtual void pscomment(char* ss); virtual void reverse(void) /* reverse the order of stuff in the current path */; virtual void set_color(const GLERC& color); virtual void set_fill(const GLERC& fill); virtual void set_fill_method(int m); virtual void set_line_cap(int i); virtual void set_line_join(int i); virtual void set_line_miterlimit(double d); virtual void set_line_style(const char *s); virtual void set_line_styled(double dd); virtual void set_line_width(double w); virtual void set_matrix(double newmat[3][3]); virtual void set_path(int onoff); virtual void source(const char *s); virtual void stroke(void); virtual void set_color(void); virtual void set_fill(void); virtual void xdbox(double x1, double y1, double x2, double y2); virtual void devcmd(const char *s); virtual FILE* get_file_pointer(void); virtual int getDeviceType(); virtual void bitmap(GLEBitmap* bitmap, GLEPoint* pos, GLEPoint* scale, int type); virtual void getRecordedBytes(string* output); void recordData(const unsigned char *data, unsigned int length); protected: void set_color_impl(const GLERC& color); void ddfill(GLERectangle* bounds = NULL); void shadePattern(); void shadeGLE(); void shadeBoundedIfThenElse1(GLERectangle* bounds, double p, double step1); void shadeBoundedIfThenElse2(GLERectangle* bounds, double p, double step2); void shadeBounded(GLERectangle* bounds); void shade(GLERectangle* bounds); void clearRecordedData(); }; class GLECairoDevicePDF : public GLECairoDevice { public: GLECairoDevicePDF(bool showerror); virtual ~GLECairoDevicePDF(); virtual void opendev(double width, double height, GLEFileLocation* outputfile, const string& inputfile) throw(ParserError); virtual int getDeviceType(); }; class GLECairoDeviceEPS : public GLECairoDevice { public: GLECairoDeviceEPS(bool showerror); virtual ~GLECairoDeviceEPS(); virtual void opendev(double width, double height, GLEFileLocation* outputfile, const string& inputfile) throw(ParserError); virtual int getDeviceType(); virtual void getRecordedBytes(string* output); }; class GLECairoDeviceSVG : public GLECairoDevice { public: GLECairoDeviceSVG(bool showerror); virtual ~GLECairoDeviceSVG(); virtual void opendev(double width, double height, GLEFileLocation* outputfile, const string& inputfile) throw(ParserError); virtual int getDeviceType(); }; #ifdef __WIN32__ class GLECairoDeviceEMFWinInfo; class GLECairoDeviceEMF : public GLECairoDevice { protected: GLECairoDeviceEMFWinInfo* m_WinInfo; double m_DPI; bool m_CopyClipboard; public: GLECairoDeviceEMF(bool showerror); virtual ~GLECairoDeviceEMF(); virtual void set_matrix(double newmat[3][3]); virtual void opendev(double width, double height, GLEFileLocation* outputfile, const string& inputfile) throw(ParserError); virtual int getDeviceType(); virtual void closedev(void); inline void setDPI(double d) { m_DPI = d; } inline void setCopyClipboard(bool c) { m_CopyClipboard = true; } }; #endif #endif class GLEDummyDevice : public GLEDevice { protected: bool m_ShowError; public: GLEDummyDevice(bool showerror); virtual ~GLEDummyDevice(); virtual void arc(dbl r,dbl t1,dbl t2,dbl cx,dbl cy); virtual void arcto(dbl x1,dbl y1,dbl x2,dbl y2,dbl rrr); virtual void beginclip(void) ; virtual void bezier(dbl x1,dbl y1,dbl x2,dbl y2,dbl x3,dbl y3); virtual void box_fill(dbl x1, dbl y1, dbl x2, dbl y2); virtual void box_stroke(dbl x1, dbl y1, dbl x2, dbl y2, bool reverse); virtual void dochar(int font, int cc); virtual void resetfont(); virtual void circle_fill(double zr); virtual void circle_stroke(double zr); virtual void clear(void); virtual void clip(void); virtual void closedev(void); virtual void closepath(void); virtual void dfont(char *c); virtual void ellipse_fill(double rx, double ry); virtual void ellipse_stroke(double rx, double ry); virtual void elliptical_arc(double rx,double ry,double t1,double t2,double cx,double cy); virtual void elliptical_narc(double rx,double ry,double t1,double t2,double cx,double cy); virtual void endclip(void) ; virtual void fill(void); virtual void fill_ary(int nwk,double *wkx,double *wky); virtual void flush(void); virtual void get_type(char *t); virtual void line(double zx,double zy); virtual void line_ary(int nwk,double *wkx,double *wky); virtual void message(char *s); virtual void move(double zx,double zy); virtual void narc(dbl r,dbl t1,dbl t2,dbl cx,dbl cy); virtual void newpath(void); virtual void opendev(double width, double height, GLEFileLocation* outputfile, const string& inputfile) throw(ParserError); virtual void pscomment(char* ss); virtual void reverse(void) /* reverse the order of stuff in the current path */; virtual void set_color(const GLERC& color); virtual void set_fill(const GLERC& fill); virtual void set_line_cap(int i); virtual void set_line_join(int i); virtual void set_line_miterlimit(double d); virtual void set_line_style(const char *s); virtual void set_line_styled(double dd); virtual void set_line_width(double w); virtual void set_matrix(double newmat[3][3]); virtual void set_path(int onoff); virtual void source(const char *s); virtual void stroke(void); virtual void set_color(void); virtual void set_fill(void); virtual void xdbox(double x1, double y1, double x2, double y2); virtual void devcmd(const char *s); virtual FILE* get_file_pointer(void); virtual int getDeviceType(); }; #ifdef HAVE_X11 #ifdef VMS #include #include #else #ifdef aix #define NeedFunctionPrototypes 0 #endif #include #include #endif #define NUM_COLTABLE_ENTRIES 34 #define X11_PATH_LENGTH 500 struct X11Pnt {int type,x,y;} ; class X11GLEDevice : public GLEDevice { protected: int color_table[NUM_COLTABLE_ENTRIES]; int maxxsize; int maxysize; int window1W; int window1H; Display *dpy; Window window1; GC gc,gcf; Screen *screen; int doesbackingstore; double savexsize,saveysize; int gle_nspeed; /* text mode = slow and fast */ int i,l,j,ix,iy; double f; double xsizecm,ysizecm; double d_scale, d_xscale, d_yscale; int d_graphmode; int d_fillstyle,d_fillcolor; int d_lstyle,d_lwidth; int d_maxy; int safnt; struct X11Pnt pnts[X11_PATH_LENGTH]; int npnts; int startx,starty; public: X11GLEDevice(); virtual ~X11GLEDevice(); virtual void arc(dbl r,dbl t1,dbl t2,dbl cx,dbl cy); virtual void arcto(dbl x1,dbl y1,dbl x2,dbl y2,dbl rrr); virtual void beginclip(void) ; virtual void bezier(dbl x1,dbl y1,dbl x2,dbl y2,dbl x3,dbl y3); virtual void box_fill(dbl x1, dbl y1, dbl x2, dbl y2); virtual void box_stroke(dbl x1, dbl y1, dbl x2, dbl y2, bool reverse); virtual void dochar(int font, int cc); virtual void resetfont(); virtual void circle_fill(double zr); virtual void circle_stroke(double zr); virtual void clear(void); virtual void clip(void); virtual void closedev(void); virtual void closepath(void); virtual void dfont(char *c); virtual void ellipse_fill(double rx, double ry); virtual void ellipse_stroke(double rx, double ry); virtual void elliptical_arc(double rx,double ry,double t1,double t2,double cx,double cy); virtual void elliptical_narc(double rx,double ry,double t1,double t2,double cx,double cy); virtual void endclip(void) ; virtual void fill(void); virtual void fill_ary(int nwk,double *wkx,double *wky); virtual void flush(void); // virtual void get_line_cap(int *i); virtual void get_type(char *t); virtual void line(double zx,double zy); virtual void line_ary(int nwk,double *wkx,double *wky); virtual void message(char *s); virtual void move(double zx,double zy); virtual void narc(dbl r,dbl t1,dbl t2,dbl cx,dbl cy); virtual void newpath(void); virtual void opendev(double width, double height, GLEFileLocation* outputfile, const string& inputfile) throw(ParserError); virtual void pscomment(char* ss); virtual void reverse(void) /* reverse the order of stuff in the current path */; virtual void set_color(const GLERC& color); virtual void set_fill(const GLERC& fill); virtual void set_line_cap(int i); virtual void set_line_join(int i); virtual void set_line_miterlimit(double d); virtual void set_line_style(const char *s); virtual void set_line_styled(double dd); virtual void set_line_width(double w); virtual void set_matrix(double newmat[3][3]); virtual void set_path(int onoff); virtual void source(const char *s); virtual void stroke(void); virtual void set_color(void); virtual void set_fill(void); virtual void xdbox(double x1, double y1, double x2, double y2); virtual void devcmd(const char *s); virtual FILE* get_file_pointer(void); virtual int getDeviceType(); protected: void setcolor(int); void setfillcolor(int); void setfillstyle(int); double getmaxx(); double getmaxy(); int getmaxcolor(); void doInitialize(); int doDefineColor(int n); void doCreateWindows(); void doCreateGraphicsContext(); void doLoadFont(); void doExpose(); void doWMHints(); void doMapWindows(); void openDisplay(); void path_move(int x, int y); void path_line(int x, int y); void path_close(void); void path_fill(void); void path_newpath(void); void path_stroke(void); int set_expose(void); int wait_expose(void); void dxy(double x, double y, int *dx, int *dy); void rxy(double x, double y, int *dx, int *dy); void dxy_short(double x, double y, short *dx, short *dy); void rxy_short(double x, double y, short *dx, short *dy); }; #endif #endif gle-graphics-4.2.4c/src/gle/fitbez.cpp0000664000000000000000000000733711575331737016304 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ #define GRAPHDEF extern #include "all.h" #include "gle-interface/gle-interface.h" #include "mem_limits.h" #include "cutils.h" #include "graph.h" int glefitcf_(int *mode,float *x, float *y, int *l, int *m, float *u, float *v, int *n); void fitbez(GLEDataPairs* data, bool multi) { if (data->size() > 200 || data->size() <= 2) { return; } int np = data->size(); vector xin(np); vector yin(np); for (int i = 0; i < np; i++) { xin[i] = (float)data->getX(i); yin[i] = (float)data->getY(i); } int mode = (multi ? 2 : 1); int nsub = 300/(np-1); if (nsub <= 1) nsub = 2; int np_out = (np-1)*nsub+1; vector xout(np_out); vector yout(np_out); glefitcf_(&mode, &xin[0], &yin[0], &np, &nsub, &xout[0], &yout[0], &np_out); data->resize(np_out); for (int i = 0; i < np_out; i++) { data->set(i, xout[i], yout[i], 0); } } void transform_log(double* v, int np) { for (int i = 0; i < np; i++) { v[i] = log10(v[i]); } } void untransform_log(double* v, int np) { for (int i = 0; i < np; i++) { v[i] = pow(10.0, v[i]); } } gle-graphics-4.2.4c/src/gle/general.cpp0000664000000000000000000001114011405446017016407 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ #include "all.h" #include "gprint.h" #ifdef VAXC double myatan2(double y, double x); #endif void showpcode(int *p) { union {int l; short s[2];} bth; int i; gprint("GP> "); for (i=0;i<12;i++) { bth.l = *(p++); gprint("%x %x ",bth.s[0],bth.s[1]); } gprint("\n"); } void polar_xy(double r, double angle, double *dx, double *dy) { *dx = r*cos(angle*GLE_PI/180); *dy = r*sin(angle*GLE_PI/180); } void polar_xy(double rx, double ry, double angle, double *dx, double *dy) { *dx = rx*cos(angle*GLE_PI/180); *dy = ry*sin(angle*GLE_PI/180); } void xy_polar(double dx,double dy,double *radius,double *angle) { if (dx==0 && dy==0) { *angle = 0; gprint("Cannot work out angle of zero length vector\n"); return; } if (dx==0) { *angle = 90; if (dy<0) *angle = -90; } else { *angle = myatan2(dy,dx)*180/GLE_PI; } *radius = sqrt(dx*dx + dy*dy); } void fpolar_xy(float r, float angle, float *dx, float *dy) { *dx = r*cos(angle*GLE_PI/180); *dy = r*sin(angle*GLE_PI/180); } void fxy_polar(float dx,float dy,float *radius,float *angle) { if (dx==0 && dy==0) { gprint("Cannot work out angle of zero length vector\n"); return; } if (dx==0) { *angle = 90; if (dy<0) *angle = -90; } else { *angle = myatan2(dy,dx)*180/GLE_PI; } *radius = sqrt(dx*dx+dy*dy); } void ncpy(char *d, const char *s, int n) { strncpy(d,s,n); *(d+n) = 0; } void ncat(char *d, char *s, int n) { int i; i = strlen(d); strncat(d,s,n); *(d+i+n) = 0; } #ifdef VAXC double myatan2(double y, double x) { static double one,test,xx,yy,zero,at2; zero = 0; one = 1; xx = fabs(x); yy = fabs(y); if (x==0) { at2 = GLE_PI/2; } else { if (yy<=xx) { at2 = fabs(atan(yy/xx)); } else { test = one + (xx/yy); if (test!=one) { at2 = fabs(atan(yy/xx)); } else { at2 = GLE_PI/2; } } if (x * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ #include "all.h" #include "cutils.h" #include "fn.h" /*-------------------------------------------------------------------*/ /* Find the function called *cp, and return it's number */ /*-------------------------------------------------------------------*/ /* You can add a function, you MUST place it in alphabetical order */ /* and give it the next unused index number */ /* ret = Type of returned value, 1=number, 2=string */ /* np = number of parameters expected */ /* Parameters p0...p4 == 1=number, 2=string, 0=none (e.g. height()).*/ // current max is 97 ==> FN_GETENV #define NKEYS (sizeof keywfn / sizeof(struct keyw)) struct keyw { const char *word; int index; int ret,np,p[5]; } keywfn[] = { { " ", 0, 1,0, { 0,0,0,0,0 } }, { "+", 1, 1,0, { 0,0,0,0,0 } }, { "-", 2, 1,0, { 0,0,0,0,0 } }, { "ABS", 3, 1,1, { 1,0,0,0,0 } }, { "ACOS", 53, 1,1, { 1,0,0,0,0 } }, { "ACOSH", 68, 1,1, { 1,0,0,0,0 } }, { "ACOT", 56, 1,1, { 1,0,0,0,0 } }, { "ACOTH", 71, 1,1, { 1,0,0,0,0 } }, { "ACSC", 58, 1,1, { 1,0,0,0,0 } }, { "ACSCH", 73, 1,1, { 1,0,0,0,0 } }, { "ARG", FN_ARG, 1,1, { 1,0,0,0,0 } }, { "ARG$", FN_ARGS, 2,1, { 1,0,0,0,0 } }, { "ASEC", 57, 1,1, { 1,0,0,0,0 } }, { "ASECH", 72, 1,1, { 1,0,0,0,0 } }, { "ASIN", 54, 1,1, { 1,0,0,0,0 } }, { "ASINH", 69, 1,1, { 1,0,0,0,0 } }, { "ATAN", 4, 1,1, { 1,0,0,0,0 } }, { "ATAN2", FN_ATAN2, 1,2, { 1,1,0,0,0 } }, { "ATANH", 70, 1,1, { 1,0,0,0,0 } }, { "ATN", 4, 1,1, { 1,0,0,0,0 } }, // for backward coompatability same as ATAN { "CHR$", 52, 2,1, { 1,0,0,0,0 } }, { "COS", 5, 1,1, { 1,0,0,0,0 } }, { "COSH", 62, 1,1, { 1,0,0,0,0 } }, { "COT", 59, 1,1, { 1,0,0,0,0 } }, { "COTH", 65, 1,1, { 1,0,0,0,0 } }, { "CSC", 61, 1,1, { 1,0,0,0,0 } }, { "CSCH", 67, 1,1, { 1,0,0,0,0 } }, { "CVTCOLOR", 49, 1,1, { 2,0,0,0,0 } }, { "CVTFONT", 50, 1,1, { 2,0,0,0,0 } }, { "CVTGRAY", 45, 1,1, { 1,0,0,0,0 } }, { "CVTINT", 46, 1,1, { 1,0,0,0,0 } }, { "CVTMARKER", 48, 1,1, { 2,0,0,0,0 } }, { "CVTRGB", 47, 1,3, { 1,1,1,0,0 } }, { "DATAXVALUE", FN_DATAXVALUE, 1,2, { 2,1,0,0,0 } }, { "DATAYVALUE", FN_DATAYVALUE, 1,2, { 2,1,0,0,0 } }, { "DATE$", 6, 2,0, { 0,0,0,0,0 } }, { "DEVICE$", 51, 2,0, { 0,0,0,0,0 } }, { "EOF", 55, 1,1, { 1,0,0,0,0 } }, { "EVAL", FN_EVAL, 1,1, { 2,0,0,0,0 } }, { "EXP", 7, 1,1, { 1,0,0,0,0 } }, { "FEOF", 55, 1,1, { 1,0,0,0,0 } }, { "FILE$", FN_FILE, 2,0, { 0,0,0,0,0 } }, { "FIX", 8, 1,1, { 1,0,0,0,0 } }, { "FONT", FN_FONT, 1,1, { 2,0,0,0,0 } }, { "FORMAT$", 79, 2,2, { 1,2,0,0,0 } }, { "GETENV", FN_GETENV, 2,1, { 2,0,0,0,0 } }, { "HEIGHT", 9, 1,1, { 0,0,0,0,0 } }, { "INT", 10, 1,1, { 1,0,0,0,0 } }, { "ISNAME", FN_ISNAME, 1,1, { 2,0,0,0,0 } }, { "JUSTIFY", FN_JUSTIFY, 1,1, { 2,0,0,0,0 } }, { "LEFT$", 11, 2,2, { 2,1,0,0,0 } }, { "LEN", 12, 1,1, { 2,0,0,0,0 } }, { "LOG", 13, 1,1, { 1,0,0,0,0 } }, { "LOG10", 14, 1,1, { 1,0,0,0,0 } }, { "MAX", FN_MAX, 1,2, { 1,1,0,0,0 } }, { "MIN", FN_MIN, 1,2, { 1,1,0,0,0 } }, { "NARGS", FN_NARGS, 1,0, { 0,0,0,0,0 } }, { "NDATA", FN_NDATA, 1,1, { 2,0,0,0,0 } }, { "NOT", 15, 1,1, { 1,0,0,0,0 } }, { "NUM$", 16, 2,1, { 1,0,0,0,0 } }, { "NUM1$", 17, 2,1, { 1,0,0,0,0 } }, { "PAGEHEIGHT", 18, 1,0, { 0,0,0,0,0 } }, { "PAGEWIDTH", 19, 1,0, { 0,0,0,0,0 } }, { "PATH$", FN_PATH, 2,0, { 0,0,0,0,0 } }, { "POINTX", 77, 1,1, { 2,0,0,0,0 } }, { "POINTY", 78, 1,1, { 2,0,0,0,0 } }, { "POS", 20, 1,3, { 2,2,1,0,0 } }, { "PTX", 77, 1,1, { 2,0,0,0,0 } }, { "PTY", 78, 1,1, { 2,0,0,0,0 } }, { "RGB", 47, 1,3, { 1,1,1,0,0 } }, { "RGB255", 80, 1,3, { 1,1,1,0,0 } }, { "RGBA", FN_RGBA, 1,4, { 1,1,1,1,0 } }, { "RGBA255", FN_RGBA255, 1,4, { 1,1,1,1,0 } }, { "RIGHT$", 21, 2,2, { 2,1,0,0,0 } }, { "RND", 22, 1,1, { 1,0,0,0,0 } }, { "SDIV", FN_SDIV, 1,2, { 1,1,0,0,0 } }, { "SEC", 60, 1,1, { 1,0,0,0,0 } }, { "SECH", 66, 1,1, { 1,0,0,0,0 } }, { "SEG$", 23, 2,3, { 2,1,1,0,0 } }, { "SGN", 24, 1,1, { 1,0,0,0,0 } }, { "SIN", 25, 1,1, { 1,0,0,0,0 } }, { "SINH", 63, 1,1, { 1,0,0,0,0 } }, { "SQR", 26, 1,1, { 1,0,0,0,0 } }, { "SQRT", 27, 1,1, { 1,0,0,0,0 } }, { "TAN", 28, 1,1, { 1,0,0,0,0 } }, { "TANH", 64, 1,1, { 1,0,0,0,0 } }, { "TDEPTH", 29, 1,1, { 2,0,0,0,0 } }, { "THEIGHT", 30, 1,1, { 2,0,0,0,0 } }, { "TIME$", 31, 2,0, { 0,0,0,0,0 } }, { "TODEG", 74, 1,1, { 1,0,0,0,0 } }, { "TORAD", 75, 1,1, { 1,0,0,0,0 } }, { "TWIDTH", 32, 1,1, { 2,0,0,0,0 } }, { "VAL", 33, 1,1, { 2,0,0,0,0 } }, { "WIDTH", 34, 1,1, { 0,0,0,0,0 } }, { "XBAR", FN_XBAR, 1,2, { 1,1,0,0,0 } }, { "XEND", 35, 1,0, { 0,0,0,0,0 } }, { "XG", 36, 1,1, { 1,0,0,0,0 } }, { "XG3D", FN_XG3D, 1,3, { 1,1,1,0,0 } }, { "XGRAPH", 36, 1,1, { 1,0,0,0,0 } }, { "XMAX", 37, 1,1, { 0,0,0,0,0 } }, { "XMIN", 38, 1,1, { 0,0,0,0,0 } }, { "XPOS", 39, 1,0, { 0,0,0,0,0 } }, { "XY2ANGLE", FN_XY2ANGLE, 1,2, { 1,1,0,0,0 } }, { "YEND", 40, 1,0, { 0,0,0,0,0 } }, { "YG", 41, 1,1, { 1,0,0,0,0 } }, { "YG3D", FN_YG3D, 1,3, { 1,1,1,0,0 } }, { "YGRAPH", 41, 1,1, { 1,0,0,0,0 } }, { "YMAX", 42, 1,1, { 0,0,0,0,0 } }, { "YMIN", 43, 1,1, { 0,0,0,0,0 } }, { "YPOS", 44, 1,0, { 0,0,0,0,0 } } }; int binsearch(char *word, struct keyw tab[], int n); void find_un(char *cp, int *idx,int *ret,int *np,int **plist) { int i; i = binsearch(cp,keywfn,NKEYS); *idx = keywfn[i].index; *ret = keywfn[i].ret; *np = keywfn[i].np; *plist = &keywfn[i].p[0]; } /*------------------------------------------------------------------*/ /* Simple binary search */ /*------------------------------------------------------------------*/ int binsearch(char *word, struct keyw tab[], int n) { int cond,low,high,mid; low = 0; high = n-1; while (low <= high) { mid = (low+high) / 2; if ((cond = str_i_cmp(word,tab[mid].word)) < 0) high = mid - 1; else if (cond > 0) low = mid + 1; else return mid; } return 0; } gle-graphics-4.2.4c/src/gle/gle-base.cpp0000644000000000000000000000553411563723604016466 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ #include "basicconf.h" #include "gle-interface/gle-base.h" GLERefCountObject::GLERefCountObject() { m_OwnerCount = 0; } GLERefCountObject::~GLERefCountObject() { } gle-graphics-4.2.4c/src/gle/begin.cpp0000664000000000000000000001416311506703077016072 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ #define BEGINDEF #include "all.h" #include "mem_limits.h" #include "gle-interface/gle-interface.h" #include "glearray.h" #include "token.h" #include "begin.h" #include "gprint.h" #include "cutils.h" #include "polish.h" void replace_exp(char* exp); void replace_exp(string& exp); double token_next_double(int i) throw(ParserError) { char* tok = tk[i]; if (!is_float(tok)) { stringstream err; err << "floating point number expected, but found: '" << tok << "'"; g_throw_parser_error(err.str()); } return atof(tok); } int begin_token(int **pcode,int *cp,int *pln,char *srclin,TOKENS tk,int *ntk,char *outbuff) { g_set_error_line(*pln); (*pcode) = gpcode[(*pln)++]; if ((*pcode)[1] != 5 || (*pcode)[2] == 0) { (*pln)--; return false; } strcpy(srclin,(char *) ((*pcode)+3)); replace_exp(srclin); for (int i = 0; i < TOKEN_LENGTH; i++) { strcpy(tk[i], " "); } token(srclin,tk,ntk,outbuff); return true; } int begin_token(GLESourceLine& sline, char *srclin, TOKENS tk, int *ntk, char *outbuff, bool replaceExpr) { g_set_error_line(sline.getGlobalLineNo()); strcpy(srclin, sline.getCodeCStr()); if (replaceExpr) { replace_exp(srclin); } for (int i = 0; i < TOKEN_LENGTH; i++) { strcpy(tk[i], " "); } token(srclin,tk,ntk,outbuff); return true; } bool begin_line(int *pln, string& srclin) { g_set_error_line(*pln); int *pcode = gpcode[(*pln)++]; if (pcode[1] != 5 || pcode[2] == 0) { (*pln)--; return false; } srclin = (char *)(pcode+3); replace_exp(srclin); return true; } bool get_block_line(int pln, string& srclin) { g_set_error_line(pln); int *pcode = gpcode[pln]; if (pcode[1] != 5 || pcode[2] == 0) { srclin = ""; return false; } srclin = (char *)(pcode+3); replace_exp(srclin); return true; } bool begin_line_norep(int *pln, string& srclin) { int *pcode = gpcode[(*pln)++]; if (pcode[1] != 5 || pcode[2] == 0) { (*pln)--; return false; } srclin = (char *)(pcode+3); return true; } void begin_init() { strcpy(space_str," \0"); for (int i = 0; i < TOKEN_LENGTH; i++) { strcpy(tk[i], " "); } } int begin_next_line(int *pcode, int *cp) { return true; } // replaces \expr{some_exp} by the result of evaluating some_exp void replace_exp(char* exp) { char *ptr = str_i_str(exp, "\\EXPR{"); while (ptr != NULL) { int depth = 0; int first = ptr-exp; int pos = first+6; // 6 = strlen("\\EXPR{") char ch = exp[pos]; string to_eval = "", eval_res; while (ch != 0 && (ch != '}' || depth > 0)) { if (ch == '{') depth++; else if (ch == '}') depth--; if (ch != 0 && (ch != '}' || depth > 0)) { to_eval += ch; ch = exp[++pos]; } } polish_eval_string(to_eval.c_str(), &eval_res, true); string at_end = exp+pos+1; exp[first] = 0; strcat(exp, eval_res.c_str()); strcat(exp, at_end.c_str()); ptr = str_i_str(exp, "\\EXPR{"); } } // replaces \expr{some_exp} by the result of evaluating some_exp void replace_exp(string& exp) { int ptr = str_i_str(exp, "\\EXPR{"); while (ptr != -1) { int depth = 0; int pos = ptr+6; // 6 = strlen("\\EXPR{") char ch = exp[pos]; int len = exp.length(); string to_eval = "", eval_res; while (pos < len && (ch != '}' || depth > 0)) { if (ch == '{') depth++; else if (ch == '}') depth--; if (ch != 0 && (ch != '}' || depth > 0)) { to_eval += ch; pos++; ch = pos < len ? exp[pos] : 0; } } polish_eval_string(to_eval.c_str(), &eval_res, true); exp.erase(ptr, pos-ptr+1); exp.insert(ptr, eval_res); ptr = str_i_str(exp, "\\EXPR{"); } } gle-graphics-4.2.4c/src/gle/run.h0000664000000000000000000001420411676361261015256 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ #ifndef __GLE_RUN__ #define __GLE_RUN__ void sub_call(int idx,double *pval,char **pstr,int *npm, int *otyp) throw(ParserError); void eval(int *pcode,int *cp,double *oval,const char **ostr,int *otyp) throw(ParserError); GLESub* eval_subroutine_call(int *pcode, int *cp, int* otyp) throw(ParserError); void eval_do_object_block_call(GLESub* sub, GLEObjectDO* obj) throw(ParserError); void clear_run(); void g_set_pagesize(const string& papersize) throw (ParserError); void g_set_margins(const string& margins) throw (ParserError); GLEFileLocation* get_output_file(); const string& get_input_file(); class GLESub; class GLESubMap; class GLEBlocks; class GLEStoredBox; // or replace by GLEObject sub class on global stack? struct GLELengthBlock { int varIndex; bool wasEnabled; double previousValue; }; class GLERun { protected: GLEScript* m_Script; GLEFileLocation* m_OutFile; GLEVars* m_Vars; GLEBlocks* m_blockTypes; GLERC m_CrObj; vector m_lengthBlocks; bool m_AllowBeforeSize[GLE_KW_NB]; public: GLERun(GLEScript* script, GLEFileLocation* outfile); ~GLERun(); void setBlockTypes(GLEBlocks* blocks); GLEBlocks* getBlockTypes(); void setDeviceIsOpen(bool open); void do_pcode(GLESourceLine &SLine,int *srclin, int *pcode, int plen, int *pend, bool& mkdrobjs) throw(ParserError); void begin_object(const char* name, GLESub* sub) throw (ParserError); void end_object() throw (ParserError); void draw_object_static(const string& path, const string& name, int* pcode, int* cp, bool mkdrobjs) throw (ParserError); void draw_object_subbyname(GLESub* sub, GLEObjectRepresention* newobj, GLEArrayImpl* path, GLEPoint* orig) throw (ParserError); void draw_object_dynamic(int idx, GLEObjectRepresention* newobj, GLEArrayImpl* path, GLEPoint* orig) throw (ParserError); void draw_object(const string& name, const char* newname) throw (ParserError); void sub_call(GLESub* sub, GLEArrayImpl* arguments = 0) throw(ParserError); void sub_call(int idx, double *pval, char **pstr, int *npm, int *otyp) throw(ParserError); void name_set(const char *n, double x1, double y1, double x2, double y2); static GLEObjectRepresention* name_to_object(GLEObjectRepresention* obj, GLEArrayImpl* path, GLEJustify* just, unsigned int offs) throw (ParserError); GLEObjectRepresention* name_to_object(const char *name, GLEJustify* just) throw(ParserError); bool is_name(GLEObjectRepresention* obj, GLEArrayImpl* path, unsigned int offs); bool is_name(const char *name); void name_to_point(const char *name, GLEPoint* point) throw(ParserError); void name_to_size(const char *name, double *wd, double *hi) throw(ParserError); void name_join(const char *n1, const char *n2, int marrow, double a1, double a2, double d1, double d2) throw(ParserError); GLEStoredBox* last_box() throw (ParserError); bool box_end() throw (ParserError); void begin_length(int var); void end_length(); GLESubMap* getSubroutines(); inline GLEObjectRepresention* getCRObjectRep() { return m_CrObj.get(); }; inline void setCRObjectRep(GLEObjectRepresention* obj) { m_CrObj.set(obj); } inline GLEVars* getVars() { return m_Vars; } inline GLEScript* getScript() { return m_Script; } inline GLEGlobalSource* getSource() { return m_Script->getSource(); } inline GLEFileLocation* getOutput() { return m_OutFile; } inline void allowBeforeSize(int which) { m_AllowBeforeSize[which] = true; } inline bool isAllowedBeforeSize(int which) { return m_AllowBeforeSize[which]; } }; GLERun* getGLERunInstance(); #endif gle-graphics-4.2.4c/src/gle/config.h0000664000000000000000000001266411722434562015724 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ #ifndef GLE_CONFIG_H #define GLE_CONFIG_H typedef enum { GLE_OPT_HELP, GLE_OPT_INFO, GLE_OPT_VERBOSITY, GLE_OPT_DEVICE, GLE_OPT_CAIRO, GLE_OPT_DPI, GLE_OPT_FULL_PAGE, GLE_OPT_LANDSCAPE, GLE_OPT_OUTPUT, GLE_OPT_NOSAVE, GLE_OPT_COPY, GLE_OPT_PREVIEW, GLE_OPT_GSPREVIEW, GLE_OPT_VERSION, GLE_OPT_COMPAT, GLE_OPT_CALC, GLE_OPT_CATCSV, GLE_OPT_TEX, GLE_OPT_NO_PDFTEX, GLE_OPT_CREATE_INC, GLE_OPT_TEXINCPREF, GLE_OPT_PAUSE, GLE_OPT_MKINITTEX, GLE_OPT_FINDDEPS, GLE_OPT_NO_COLOR, GLE_OPT_TRANSPARENT, GLE_OPT_BBTWEAK, GLE_OPT_NO_CTRL_D, GLE_OPT_NO_MAXPATH, GLE_OPT_NO_LIGATURES, GLE_OPT_GSOPTIONS, GLE_OPT_SAFEMODE, GLE_OPT_ALLOWREAD, GLE_OPT_ALLOWWRITE, GLE_OPT_KEEP, GLE_OPT_TRACE, GLE_OPT_DEBUG } GLECmdLineOption; #define GLE_CONFIG_GLE 0 #define GLE_CONFIG_TOOLS 1 #define GLE_CONFIG_TEX 2 #define GLE_CONFIG_PAPER 3 #define GLE_CONFIG_GLE_VERSION 0 #define GLE_CONFIG_GLE_INSTALL 1 #define GLE_CONFIG_PAPER_SIZE 0 #define GLE_CONFIG_PAPER_MARGINS 1 typedef enum { GLE_TOOL_PDFTEX_CMD, GLE_TOOL_PDFTEX_OPTIONS, GLE_TOOL_LATEX_CMD, GLE_TOOL_LATEX_OPTIONS, GLE_TOOL_DVIPS_CMD, GLE_TOOL_DVIPS_OPTIONS, GLE_TOOL_GHOSTSCRIPT_CMD, GLE_TOOL_GHOSTSCRIPT_LIB, GLE_TOOL_GHOSTSCRIPT_OPTIONS, GLE_TOOL_TEXT_EDITOR, GLE_TOOL_PDF_VIEWER } GLEConfigTool; #define GLE_TEX_SYSTEM 0 #define GLE_TEX_SYSTEM_LATEX 0 #define GLE_TEX_SYSTEM_VTEX 1 class GLEGlobalConfig { protected: CmdLineObj* m_CmdLine; ConfigCollection* m_Config; bool m_AllowConfigBlocks; vector m_AllowReadDirs; vector m_AllowWriteDirs; public: GLEGlobalConfig(); ~GLEGlobalConfig(); void initCmdLine(); inline CmdLineObj* getCmdLine() { return m_CmdLine; } inline void setCmdLine(CmdLineObj* cmd) { m_CmdLine = cmd; } inline ConfigCollection* getRCFile() { return m_Config; } inline void setRCFile(ConfigCollection* config) { m_Config = config; } inline bool allowConfigBlocks() { return m_AllowConfigBlocks; } inline void setAllowConfigBlocks(bool allow) { m_AllowConfigBlocks = allow; } inline int getNumberAllowReadDirs() { return m_AllowReadDirs.size(); } inline const string& getAllowReadDir(int i) { return m_AllowReadDirs[i]; } inline int getNumberAllowWriteDirs() { return m_AllowWriteDirs.size(); } inline const string& getAllowWriteDir(int i) { return m_AllowWriteDirs[i]; } }; bool try_load_config(const string& fname); void do_find_deps(CmdLineObj& cmdline); void do_find_deps_sub(GLEInterface* iface, const string& loc); void do_save_config(); bool do_load_config(const char* appname, char **argv, CmdLineObj& cmdline, ConfigCollection& coll); void init_config(ConfigCollection* collection); string get_tool_path(int tool, ConfigSection* tools); const string& gle_config_margins(); const string& gle_config_papersize(); #endif gle-graphics-4.2.4c/src/gle/key.h0000664000000000000000000001755211722434562015250 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ #ifndef INC_KEY_H #define INC_KEY_H class GLEKeyBlockBase : public GLEBlockWithSimpleKeywords { public: GLEKeyBlockBase(); virtual ~GLEKeyBlockBase(); virtual GLEBlockInstance* beginExecuteBlockImpl(GLESourceLine& sline, int *pcode, int *cp); }; class KeyEntry { public: char lstyle[9]; GLERC color; GLERC fill; int marker; int column; double msize,lwidth; string descrip; int sepstyle; double sepdist; public: KeyEntry(int col); ~KeyEntry(); bool hasFill() const; }; class KeyRCInfo { public: double size; double offs; double descent; double mleft; double mright; int elems; bool m_Line, m_Marker, m_Fill; public: KeyRCInfo(); KeyRCInfo(const KeyRCInfo& other); inline bool hasLine() { return m_Line; } inline bool hasMarker() { return m_Marker; } inline bool hasFill() { return m_Fill; } inline void setHasLine(bool val) { m_Line = val; } inline void setHasMarker(bool val) { m_Marker = val; } inline void setHasFill(bool val) { m_Fill = val; } }; class KeyInfo { protected: int m_MaxRow; GLERC m_Color; GLERC m_BoxColor; GLERC m_BackgroundColor; vector m_ColInfo; vector m_RowInfo; vector m_entries; double m_Hei, m_Base, m_LinePos, m_LineLen, m_ExtraY; double m_MarginX, m_MarginY, m_TotHei, m_ColDist, m_Dist; double m_OffsX, m_OffsY; bool m_PosOrJust, m_Absolute, m_HasOffset, m_HasBoxColor, m_NoBox, m_Fill; bool m_Compact, m_NoLines, m_Disabled; char m_Justify[34]; GLEPoint m_ComputedMargins; GLERectangle m_Rect; int m_col; public: KeyInfo(); ~KeyInfo(); KeyRCInfo* expandToCol(int col); void expandToRow(int row); void setOffsetX(double x); void setOffsetY(double y); void setBoxColor(const GLERC& col); void initPosition(); KeyEntry* createEntry(); KeyEntry* lastEntry(); inline void addColumn() { m_col++; } inline GLERC getBackgroundColor() { return m_BackgroundColor; } inline void setBackgroundColor(const GLERC& col) { m_BackgroundColor = col; } inline bool hasFill() { return m_Fill; } inline void setHasFill(bool val) { m_Fill = val; } inline double getOffsetX() { return m_OffsX; } inline double getOffsetY() { return m_OffsY; } inline bool isPosOrJust() { return m_PosOrJust; } inline void setPosOrJust(bool pj) { m_PosOrJust = pj; } inline bool isAbsolute() { return m_Absolute; } inline void setAbsolute(bool abs) { m_Absolute = abs; } inline bool hasOffset() { return m_HasOffset; } inline char* getJustify() { return m_Justify; } inline int getMaxRow() { return m_MaxRow; } inline void setMaxRow(int row) { m_MaxRow = row; } inline KeyRCInfo* getCol(int i) { return &m_ColInfo[i]; } inline int getNbCols() { return m_ColInfo.size(); } inline KeyRCInfo* getRow(int i) { return &m_RowInfo[i]; } inline int getNbRows() { return m_RowInfo.size(); } inline GLERC getDefaultColor() { return m_Color; } inline void setDefaultColor(const GLERC& col) { m_Color = col; } inline double getHei() { return m_Hei; } inline bool hasHei() { return m_Hei != 0.0; } inline void setHei(double hei) { m_Hei = hei; } inline double getBase() { return m_Base; } inline bool hasBase() { return m_Base != 0.0; } inline void setBase(double base) { m_Base = base; } inline bool getNoBox() { return m_NoBox; } inline void setNoBox(bool nb) { m_NoBox = nb; } inline double getMarginX() { return m_MarginX; } inline double getMarginY() { return m_MarginY; } inline void setMarginXY(double mx, double my) { m_MarginX = mx; m_MarginY = my; } inline bool hasMargins() { return m_MarginX > -1e20; } inline double getTotalHei() { return m_TotHei; } inline void setTotalHei(double hei) { m_TotHei = hei; } inline double getColDist() { return m_ColDist; } inline void setColDist(double dist) { m_ColDist = dist; } inline bool hasColDist() { return m_ColDist > -1e20; } inline double getDist() { return m_Dist; } inline void setDist(double dist) { m_Dist = dist; } inline bool hasDist() { return m_Dist >= 0; } inline bool hasLinePos() { return m_LinePos >= 0; } inline double getLinePos() { return m_LinePos; } inline void setLinePos(double pos) { m_LinePos = pos; } inline bool hasLineLen() { return m_LineLen >= 0; } inline double getLineLen() { return m_LineLen; } inline void setLineLen(double Len) { m_LineLen = Len; } inline GLERC getBoxColor() { return m_BoxColor; } inline bool hasBoxColor() { return m_HasBoxColor; } inline bool isCompact() { return m_Compact; } inline bool isNoLines() { return m_NoLines; } inline void setCompact(bool val) { m_Compact = val; } inline void setNoLines(bool val) { m_NoLines = val; } inline GLERectangle* getRect() { return &m_Rect; } inline GLEPoint* getComputedMargins() { return &m_ComputedMargins; } inline int getNbEntries() { return m_entries.size(); } inline double getExtraY() { return m_ExtraY; } inline void setExtraY(double v) { m_ExtraY = v; } inline void setDisabled(bool dis) { m_Disabled = dis; } inline bool isDisabled() { return m_Disabled; } inline KeyEntry* getEntry(int i) { return m_entries[i]; } }; void draw_key(KeyInfo* info); void measure_key(KeyInfo* info); void draw_key_after_measure(KeyInfo* info); void do_draw_key(double ox, double oy, bool notxt, KeyInfo* info); #endif gle-graphics-4.2.4c/src/gle/fitcf.cpp0000664000000000000000000003220711575346206016103 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ /* fitcf.f -- translated by f2c (version of 26 February 1990 17:38:00). You must link the resulting object file with the libraries: -lF77 -lI77 -lm -lc (in that order) */ #include "all.h" #include "fitcf.h" #include "gprint.h" void gd_message__(const char *s,int l) { gprint("%s %ld \n",s,l); } /* -- GUTRE2 */ doublereal gutre2_(real* a,real* b) /*real *a, *b;*/ { /* Initialized data */ static real zero = (float)0.; static real two = (float)2.; static real four = (float)4.; /* System generated locals */ real ret_val, r_1; /* Local variables */ static real aabs, babs, r, s; /* (Euclidean Norm of 2-Vector) */ /* Return SQRT(A**2+B**2) without doing a square root, and */ /* without destructive underflow or overflow. */ /* (Cleve Moler, University of New Mexico) */ /* (09-APR-82) */ aabs = dabs(*a); babs = dabs(*b); /* --- IF (BABS .GT. AABS) THEN -- SWAP A AND B */ if (babs <= aabs) { goto L10; } r = babs; babs = aabs; aabs = r; /* --- END IF */ /* --- IF (BABS .EQ. ZERO) THEN -- Special case sudden exit */ L10: if (babs != zero) { goto L20; } ret_val = aabs; goto L40; /* --- END IF */ /* --- DO FOREVER */ L20: /* Computing 2nd power */ r_1 = babs / aabs; r = r_1 * r_1; /* --- IF ((TWO+R) .EQ. TWO) THEN -- Converged */ if (two + r != two) { goto L30; } ret_val = aabs; goto L40; /* --- END IF */ L30: s = r / (four + r); aabs += two * s * aabs; babs = s * babs; /* --- END FOREVER */ goto L20; L40: return ret_val; } /* gutre2_ */ /* -- FITCF */ /* Subroutine */ int glefitcf_(integer* mode,real* x,real* y,integer* l,integer* m,real* u,real* v,integer* n) /* integer *mode; real *x, *y; integer *l, *m; real *u, *v; integer *n; */ { /* System generated locals */ integer i_1, i_2; real r_1; static real equiv_1[1], equiv_2[1], equiv_3[1], equiv_4[1], equiv_5[1], equiv_6[1], equiv_7[1], equiv_8[1], equiv_9[1], equiv_10[1], equiv_11[1], equiv_12[1]; /* Builtin functions */ // double sqrt(); /* Local variables */ static integer mode0, i, j, k; #define r (equiv_10) #define z (equiv_10) #define a1 (equiv_7) #define a2 (equiv_8) static real a3, a4; #define b1 (equiv_9) #define b2 (equiv_1) #define b3 (equiv_2) #define b4 (equiv_3) static integer l0, m0, n0; #define m1 (equiv_9) static integer k5; #define m2 (equiv_1) #define m3 (equiv_2) #define m4 (equiv_3) #define p0 (equiv_5) static real p1; #define p2 (equiv_7) #define p3 (equiv_9) #define q0 (equiv_6) #define q1 (equiv_4) #define q2 (equiv_11) #define q3 (equiv_12) #define t2 (equiv_4) static real t3; #define w2 (equiv_11) #define w3 (equiv_12) #define x2 (equiv_5) static real x3; static integer modem1; static real x4, x5; #define y2 (equiv_6) static real y3, y4, y5; // extern doublereal gutre2_(); #define dz (equiv_8) static real rm; #define sw (equiv_10) // extern /* Subroutine */ int gd_message__(); static integer lm1, mm1; static real cos2, cos3, sin2, sin3; /* (Smooth Curve Fitting) */ /* This subroutine fits a smooth curve to a given set of input */ /* data points in an X-Y plane. It interpolates points in */ /* each interval between a pair of data points and generates a */ /* set of output points consisting of the input data points */ /* and the interpolated points. It can process either a */ /* single-valued function or a multiple-valued function. */ /* The input arguments are: */ /* MODE = mode of the curve (must be 1 or 2) */ /* = 1 for a single-valued function */ /* = 2 for multiple-valued function */ /* X = Array of dimension L storing the abscissas of input */ /* data points (in ascending or descending order for mode */ /* = 1) */ /* Y = Array of dimension L storing the ordinates of input */ /* data points */ /* L = Number of input data points (must be 2 or greater) */ /* M = Number of subintervals between each pair of input data */ /* points (must be 2 or greater). */ /* N = Number of output points */ /* = (L-1)*M+1 */ /* The output arguments are: */ /* U = Array of dimension N where the abscissas of output */ /* points are to be displayed */ /* V = Array of dimension N where the ordinates of output */ /* points are to be displayed */ /* Author: Hiroshi Akima, "Interpolation and Smooth Curve */ /* Fitting Based on Local Procedures", COMM. ACM 15, */ /* 914-918 (1972), and "A New Method of Interpolation */ /* and Smooth Curve Fitting Based on Local */ /* Procedures", J. ACM 17, 589-602 (1970). */ /* Corrections: M.R. Andersen, "Remark on Algorithm 433", ACM */ /* Trans. on Math. Software, 2, 208 (1976). */ /* (30-JAN-82) */ /* Preliminary processing */ /* Parameter adjustments */ --v; --u; --y; --x; /* Function Body */ mode0 = *mode; modem1 = mode0 - 1; l0 = *l; lm1 = l0 - 1; m0 = *m; mm1 = m0 - 1; n0 = *n; if (mode0 <= 0) { goto L320; } if (mode0 >= 3) { goto L320; } if (lm1 <= 0) { goto L330; } if (mm1 <= 0) { goto L340; } if (n0 != lm1 * m0 + 1) { gprint("Improper n value %ld, wanted %ld \n",n0,lm1 * m0 + 1); gprint("n0 %ld, lm1 %ld, m0 %ld l0 %ld \n",n0,lm1,m0,l0); goto L350; } switch (mode0) { case 1: goto L10; case 2: goto L60; } L10: i = 2; if ((r_1 = x[1] - x[2]) < (float)0.) { goto L20; } else if (r_1 == 0) { gprint("Identical x values 1, %g %g \n",(double) x[1], (double) x[2]); goto L360; } else { goto L40; } L20: if (l0 <= 2) { goto L80; } i_1 = l0; for (i = 3; i <= i_1; ++i) { if ((r_1 = x[i - 1] - x[i]) < (float)0.) { goto L30; } else if (r_1 == 0) { gprint("Identical x values i, %g %g \n",(int) i,(double) x[i-1], (double) x[i]); goto L360; } else { goto L370; } L30: ;} goto L80; L40: if (l0 <= 2) { goto L80; } i_1 = l0; for (i = 3; i <= i_1; ++i) { if ((r_1 = x[i - 1] - x[i]) < (float)0.) { goto L370; } else if (r_1 == 0) { gprint("Identical x aavalues i, %g %g \n",(int) i,(double) x[i-1], (double) x[i]); goto L360; } else { goto L50; } L50: ;} goto L80; L60: i_1 = l0; for (i = 2; i <= i_1; ++i) { if (x[i - 1] != x[i]) { goto L70; } if (y[i - 1] == y[i]) { goto L380; } L70: ;} L80: k = n0 + m0; i = l0 + 1; i_1 = l0; for (j = 1; j <= i_1; ++j) { k -= m0; --i; u[k] = x[i]; /* L90: */ v[k] = y[i]; } rm = (real) m0; rm = (float)1. / rm; /* Main DO-loop */ k5 = m0 + 1; i_1 = l0; for (i = 1; i <= i_1; ++i) { /* Routines to pick up necessary X and Y values and to */ /* estimate them if necessary */ if (i > 1) { goto L130; } x3 = u[1]; y3 = v[1]; x4 = u[m0 + 1]; y4 = v[m0 + 1]; a3 = x4 - x3; *b3 = y4 - y3; if (modem1 == 0) { *m3 = *b3 / a3; } if (l0 != 2) { goto L140; } a4 = a3; *b4 = *b3; L100: switch (mode0) { case 1: goto L120; case 2: goto L110; } L110: *a2 = a3 + a3 - a4; *a1 = *a2 + *a2 - a3; L120: *b2 = *b3 + *b3 - *b4; *b1 = *b2 + *b2 - *b3; switch (mode0) { case 1: goto L180; case 2: goto L210; } L130: *x2 = x3; *y2 = y3; x3 = x4; y3 = y4; x4 = x5; y4 = y5; *a1 = *a2; *b1 = *b2; *a2 = a3; *b2 = *b3; a3 = a4; *b3 = *b4; if (i >= lm1) { goto L150; } L140: k5 += m0; x5 = u[k5]; y5 = v[k5]; a4 = x5 - x4; *b4 = y5 - y4; if (modem1 == 0) { *m4 = *b4 / a4; } goto L160; L150: if (modem1 != 0) { a4 = a3 + a3 - *a2; } *b4 = *b3 + *b3 - *b2; L160: if (i == 1) { goto L100; } switch (mode0) { case 1: goto L170; case 2: goto L200; } /* Numerical differentiation */ L170: *t2 = t3; L180: *w2 = (r_1 = *m4 - *m3, dabs(r_1)); *w3 = (r_1 = *m2 - *m1, dabs(r_1)); *sw = *w2 + *w3; if (*sw != (float)0.) { goto L190; } *w2 = (float).5; *w3 = (float).5; *sw = (float)1.; L190: t3 = (*w2 * *m2 + *w3 * *m3) / *sw; if (i - 1 <= 0) { goto L310; } else { goto L240; } L200: cos2 = cos3; sin2 = sin3; L210: *w2 = (r_1 = a3 * *b4 - a4 * *b3, dabs(r_1)); *w3 = (r_1 = *a1 * *b2 - *a2 * *b1, dabs(r_1)); if (*w2 + *w3 != (float)0.) { goto L220; } *w2 = gutre2_(&a3, b3); *w3 = gutre2_(a2, b2); L220: cos3 = *w2 * *a2 + *w3 * a3; sin3 = *w2 * *b2 + *w3 * *b3; *r = cos3 * cos3 + sin3 * sin3; if (*r == (float)0.) { goto L230; } *r = sqrt(*r); cos3 /= *r; sin3 /= *r; L230: if (i - 1 <= 0) { goto L310; } else { goto L250; } /* Determination of the coefficients */ L240: *q2 = ((*m2 - *t2) * (float)2. + *m2 - t3) / *a2; *q3 = (-(doublereal)(*m2) - *m2 + *t2 + t3) / (*a2 * *a2); goto L260; L250: *r = gutre2_(a2, b2); p1 = *r * cos2; *p2 = *a2 * (float)3. - *r * (cos2 + cos2 + cos3); *p3 = *a2 - p1 - *p2; *q1 = *r * sin2; *q2 = *b2 * (float)3. - *r * (sin2 + sin2 + sin3); *q3 = *b2 - *q1 - *q2; goto L280; /* Computation of the polynomials */ L260: *dz = *a2 * rm; *z = (float)0.; i_2 = mm1; for (j = 1; j <= i_2; ++j) { ++k; *z += *dz; u[k] = *p0 + *z; /* L270: */ v[k] = *q0 + *z * (*q1 + *z * (*q2 + *z * *q3)); } goto L300; L280: *z = (float)0.; i_2 = mm1; for (j = 1; j <= i_2; ++j) { ++k; *z += rm; u[k] = *p0 + *z * (p1 + *z * (*p2 + *z * *p3)); /* L290: */ v[k] = *q0 + *z * (*q1 + *z * (*q2 + *z * *q3)); } L300: ++k; L310: ;} goto L410; /* Error exit */ L320: gd_message__("Cannot SMOOTH: Mode out of proper range 1..2", 29L); goto L400; L330: gd_message__("Cannot SMOOTH: L = 1 or less", 13L); goto L400; L340: gd_message__("Cannot SMOOTH: M = 1 or less", 13L); goto L400; L350: gd_message__("Cannot SMOOTH: Improper N value", 16L); goto L400; L360: gd_message__("Cannot SMOOTH: Identical X values", 18L); goto L390; L370: gd_message__("Cannot SMOOTH: X values out of sequence", 24L); goto L390; L380: gd_message__("Cannot SMOOTH: Identical X and Y values", 24L); L390: L400: L410: return 0; } /* glefitcf_ */ #undef sw #undef dz #undef y2 #undef x2 #undef w3 #undef w2 #undef t2 #undef q3 #undef q2 #undef q1 #undef q0 #undef p3 #undef p2 #undef p0 #undef m4 #undef m3 #undef m2 #undef m1 #undef b4 #undef b3 #undef b2 #undef b1 #undef a2 #undef a1 #undef z #undef r gle-graphics-4.2.4c/src/gle/leastsq.h0000664000000000000000000000630411405446017016121 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ // // leastsq.h // #ifndef INCLUDE_LEAST_SQUARES #define INCLUDE_LEAST_SQUARES class GLEPowellFunc { public: GLEPowellFunc(); virtual ~GLEPowellFunc(); virtual double fitMSE(double* vals) = 0; }; double **matrix(int a, int b, int c, int d); void free_matrix(double** m, int nrl, int nrh, int ncl, int nch); void powell(double *p, double **xi, int n, double ftol, int *iter, double *fret, GLEPowellFunc* func); void least_square(vector* x,vector* y,double* slope, double* offset, double* rsquared); #endif gle-graphics-4.2.4c/src/gle/curve.cpp0000664000000000000000000001021111652073536016122 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ #include "all.h" #include "gprint.h" #include "core.h" #include "var.h" #include "keyword.h" #include "run.h" int ncvec=0; void cvec_list(int *pcode); double cvecx[30],cvecy[30]; double dcvecx[30],dcvecy[30]; void rbezier(double x1, double y1, double x2, double y2, double x3, double y3); void g_curve(int *pcode) { double dx1,dy1; ncvec = 0; cvec_list(pcode); dx1 = cvecx[1] - cvecx[0]; dy1 = cvecy[1] - cvecy[0]; dcvecx[0] = cvecx[ncvec] - cvecx[ncvec-1]; dcvecy[0] = cvecy[ncvec] - cvecy[ncvec-1]; for (int i = 0; i <= ncvec; i++) { cvecx[i] = cvecx[i] - dx1; cvecy[i] = cvecy[i] - dy1; } for (int i = 1; i < ncvec; i++) { dcvecx[i] = (cvecx[i+1] - cvecx[i-1]) * .25; dcvecy[i] = (cvecy[i+1] - cvecy[i-1]) * .25; } for (int i = 1; i < ncvec-1; i++) { rbezier(dcvecx[i], dcvecy[i], dcvecx[i+1], dcvecy[i+1], cvecx[i+1], cvecy[i+1]); } } void rbezier(double x1, double y1, double x2, double y2, double x3, double y3) { double cx,cy; g_get_xy(&cx, &cy); g_bezier(x1+cx, y1+cy, x3-x2, y3-y2, x3, y3); } void cvec_list(int *pcode) { int cp=0,otyp; double cx,cy,x1,y1; g_get_xy(&cx,&cy); ncvec = 0; cvecx[0] = cx; cvecy[0] = cy; while ( *(pcode + cp++)==111) { if (ncvec>27) {gprint("Too many param in curve\n"); return; } eval(pcode,&cp,&x1,NULL,&otyp); eval(pcode,&cp,&y1,NULL,&otyp); cvecx[++ncvec] = x1; cvecx[ncvec] = cvecx[ncvec] + cvecx[ncvec-1]; cvecy[ncvec] = y1; cvecy[ncvec] = cvecy[ncvec] + cvecy[ncvec-1]; } } gle-graphics-4.2.4c/src/gle/numberformat.h0000664000000000000000000001206411405446017017146 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ #ifndef NUMBER_FORMAT_H #define NUMBER_FORMAT_H class GLENumberFormat; class GLENumberFormatter { protected: int m_Prefix; bool m_NoZeroes; bool m_Sign; int m_PadLeft; int m_PadRight; double m_Min; double m_Max; bool m_HasMin; bool m_HasMax; string m_Prepend; string m_Append; public: GLENumberFormatter(); virtual ~GLENumberFormatter(); virtual void parseOptions(GLENumberFormat* format); virtual void format(double number, string* output); virtual bool appliesTo(double number); inline bool hasPrefix() { return m_Prefix != -1; } inline int getPrefix() { return m_Prefix; } inline void setPrefix(int prefix) { m_Prefix = prefix; } inline bool hasNoZeroes() { return m_NoZeroes; } inline void setNoZeroes(bool noz) { m_NoZeroes = noz; } inline bool hasSign() { return m_Sign; } inline void setSign(bool sign) { m_Sign = sign; } void doPrefix(string* output); void doNoZeroes(string* output); void doSign(string* output); void doPadLeft(string* output); void doPadRight(string* output); void doAll(string* output); inline bool hasPadRight() { return m_PadRight != -1; } inline int getPadRight() { return m_PadRight; } inline void setPadRight(int PadRight) { m_PadRight = PadRight; } inline bool hasPadLeft() { return m_PadLeft != -1; } inline int getPadLeft() { return m_PadLeft; } inline void setPadLeft(int PadLeft) { m_PadLeft = PadLeft; } inline string& getPrepend() { return m_Prepend; } inline string& getAppend() { return m_Append; } void setMin(double min); void setMax(double max); inline bool hasMax() { return m_HasMax; } inline bool hasMin() { return m_HasMin; } inline double getMax() { return m_Max; } inline double getMin() { return m_Min; } void setDefaults(GLENumberFormatter* def); void formatSimple(double value, string* output, int prec, int* exp); }; class GLENumberFormat { protected: level_char_separator m_Separator; tokenizer m_Tokens; vector m_Format; GLENumberFormatter m_Default; public: GLENumberFormat(const string& format); ~GLENumberFormat(); inline bool hasMoreTokens() { return m_Tokens.has_more(); } inline const string& nextToken() { return m_Tokens.cr_token(); } inline void addFormat(GLENumberFormatter* format) { m_Format.push_back(format); } void format(double number, string* output); void incTokens(); int nextInt(); double nextDouble(); void nextString(string& value); }; #endif gle-graphics-4.2.4c/src/gle/tokens/BinIO.cpp0000644000000000000000000001623111575344376017256 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ #include #include #include #include #include #include "BinIO.h" using namespace std; void write_3byte(ostream* f, int val) { unsigned char ch[3]; for (int i = 0; i < 3; i++) { int res = (val % 256); ch[i] = (unsigned char)res; val /= 256; } f->write((char*)ch, 3); } int read_3byte(istream* f) { int val = 0; unsigned char ch[3]; if (!f->good()) return -1; f->read((char*)ch, 3); for (int i = 2; i >= 0; i--) { val *= 256; val += ch[i]; } return val; } BinIOError::BinIOError(const string& txt, BinIO& io) { m_txt = txt; m_pos = io.getPosition(); } ostream& BinIOError::write(ostream& os) const { char buf[20]; sprintf(buf, "0x%x", m_pos); os << "Binary file corrupt: " << m_txt << " at pos: " << buf << endl; return os; } BinIO::BinIO(filebuf& fb, int rdwr) : m_fb(fb) { m_os = NULL; m_is = NULL; m_rdwr = rdwr; if (rdwr == BINIO_READ) m_is = new istream(&fb); else m_os = new ostream(&fb); } BinIO::~BinIO() { if (m_is != NULL) delete m_is; if (m_os != NULL) delete m_os; } long BinIO::getPosition() { return m_is->tellg(); } void BinIO::ensure(char val, const char* errmsg) { char valr; m_is->read(&valr, sizeof(valr)); if (valr != val) throw BinIOError(errmsg, *this); } int BinIO::check_version(int version, int exOnError) { int fver = read_int(); if (fver != version) { if (exOnError == 1) { char buf[32]; sprintf(buf, "%d <> %d", fver, version); throw BinIOError(string("Incorrect binary file version ") + buf, *this); } return 0; } else { return 1; } } int BinIO::check(char yes, char no, const char* errmsg) { char valr; m_is->read(&valr, sizeof(valr)); if (valr == yes) return 1; if (valr == no) return 0; throw BinIOError(errmsg, *this); } int BinIO::read_int() { return read_3byte(m_is); } char BinIO::read_char() { char valr; m_is->read(&valr, sizeof(valr)); return valr; } void BinIO::read_str(string& str) { int len = read_3byte(m_is); char *buf = new char[len+1]; m_is->read(buf,len); char *buff_end = buf + len; *buff_end = 0; str = *buf; delete []buf; } void BinIO::read(void* bytes, int size) { m_is->read((char*)bytes, size); } void BinIO::write(size_t val) { write_3byte(m_os, val); } #ifdef __APPLE__ void BinIO::write(unsigned int val) { write_3byte(m_os, val); } #endif void BinIO::write(int val) { write_3byte(m_os, val); } void BinIO::write(char val) { m_os->write((char*)&val, sizeof(val)); } void BinIO::write_char(char val) { m_os->write((char*)&val, sizeof(val)); } void BinIO::write(const string& val) { int len = val.length(); write_3byte(m_os, len); m_os->write(val.c_str(), len); } void BinIO::write(const void* bytes, int size) { m_os->write((char*)bytes, size); } void BinIO::write(BinIOSerializable* ser) { if (ser == NULL) { write('N'); } else { write('P'); ser->bin_write(*this); } } int BinIO::hasSerializable() { return check('P', 'N', "Serializable expected"); } int BinIO::addSerializable(BinIOSerializable* ser) { int res = m_ser.size(); m_ser.push_back(ser); return res; } void BinIO::cleanSIndices() { for (unsigned int i = 0; i < m_ser.size(); i++) { m_ser[i]->setSIndex(-1); } } void BinIO::close() { if (m_os != NULL) m_os->flush(); m_fb.close(); cleanSIndices(); } BinIOSerializable::BinIOSerializable() { m_sindex = -1; } BinIOSerializable::~BinIOSerializable() { } void BinIOSerializable::bin_write(BinIO& io) { if (m_sindex == -1) { m_sindex = io.addSerializable(this); io.write('W'); bin_write_impl(io); } else { io.write('S'); io.write(m_sindex); } } BinIOSerializable* bin_read_serializable(BinIO& io) { return NULL; } BinIOSerializable* bin_read_serializable(BinIO& io, const string& key) { if (io.check('W', 'S', "Serializable expected")) { /* specific read here? */ return NULL; } else { int idx = io.read_int(); return io.getSerializable(idx); } } BinIOSerializable* try_bin_read_serializable(BinIO& io) { if (io.check('W', 'S', "Serializable expected")) { return NULL; } else { int idx = io.read_int(); return io.getSerializable(idx); } } BinIOSerializable* ptr_bin_read_serializable(BinIO& io) { if (io.hasSerializable()) { if (io.check('W', 'S', "Serializable expected")) { throw BinIOError("Serializable is no pointer", io); } else { int idx = io.read_int(); return io.getSerializable(idx); } } else { return NULL; } } gle-graphics-4.2.4c/src/gle/tokens/Makefile.os20000644000000000000000000000553311405446017017742 0ustar rootroot######################################################################## # # # GLE - Graphics Layout Engine # # # # Modified BSD License # # # # Copyright (C) 2009 GLE. # # # # Redistribution and use in source and binary forms, with or without # # modification, are permitted provided that the following conditions # # are met: # # # # 1. Redistributions of source code must retain the above copyright # # notice, this list of conditions and the following disclaimer. # # # # 2. Redistributions in binary form must reproduce the above # # copyright notice, this list of conditions and the following # # disclaimer in the documentation and/or other materials provided with # # the distribution. # # # # 3. The name of the author may not be used to endorse or promote # # products derived from this software without specific prior written # # permission. # # # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR # # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY # # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE # # GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER # # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN # # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # # ######################################################################## # # makefile.gcc for GLE v4.0 # for compilation with gcc # # include ../../../config.i include ../../../config.os2 # include files.txt all: $(OBJECTS) $(OBJECTS): $(INCLUDES) clean: -$(RM) $(OBJECTS) gle-graphics-4.2.4c/src/gle/tokens/Makefile.vc0000644000000000000000000000551111447671544017656 0ustar rootroot######################################################################## # # # GLE - Graphics Layout Engine # # # # Modified BSD License # # # # Copyright (C) 2009 GLE. # # # # Redistribution and use in source and binary forms, with or without # # modification, are permitted provided that the following conditions # # are met: # # # # 1. Redistributions of source code must retain the above copyright # # notice, this list of conditions and the following disclaimer. # # # # 2. Redistributions in binary form must reproduce the above # # copyright notice, this list of conditions and the following # # disclaimer in the documentation and/or other materials provided with # # the distribution. # # # # 3. The name of the author may not be used to endorse or promote # # products derived from this software without specific prior written # # permission. # # # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR # # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY # # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE # # GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER # # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN # # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # # ######################################################################## # # makefile.vc for GLE v4.0 # for compilation with MS vc++ .net # # !include ..\..\..\config.vc # !include files.txt all: $(OBJECTS) $(OBJECTS): $(INCLUDES) clean: -erase $(OBJECTS) gle-graphics-4.2.4c/src/gle/tokens/Makefile.in0000664000000000000000000000576611405446017017657 0ustar rootroot######################################################################## # # # GLE - Graphics Layout Engine # # # # Modified BSD License # # # # Copyright (C) 2009 GLE. # # # # Redistribution and use in source and binary forms, with or without # # modification, are permitted provided that the following conditions # # are met: # # # # 1. Redistributions of source code must retain the above copyright # # notice, this list of conditions and the following disclaimer. # # # # 2. Redistributions in binary form must reproduce the above # # copyright notice, this list of conditions and the following # # disclaimer in the documentation and/or other materials provided with # # the distribution. # # # # 3. The name of the author may not be used to endorse or promote # # products derived from this software without specific prior written # # permission. # # # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR # # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY # # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE # # GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER # # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN # # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # # ######################################################################## # # makefile.gcc for GLE v4.0 # for compilation with gcc # include ../../../config.i include ../../../config.aconf include files.txt CXX=@CXX@ CPPFLAGS=@LIBGLE_CPPFLAGS@@CPPFLAGS@ CPPFLAGS := $(strip $(CPPFLAGS)) LDFLAGS=@LDFLAGS@ LIBS=@LIBS@ all: $(OBJECTS) $(OBJECTS): %.o: %.cpp $(INCLUDES) $(CXX) $(CPPFLAGS) -c $< -o $@ clean: -$(RM) $(OBJECTS) gle-graphics-4.2.4c/src/gle/tokens/RefCount.h0000664000000000000000000001207511720262226017475 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ #ifndef __REFCOUNT_H__ #define __REFCOUNT_H__ class RefCountObject { private: int owner_count; public: RefCountObject(); ~RefCountObject(); inline int getOwnerCount() const { return owner_count; } inline void use() { owner_count++; } inline int release() { return (--owner_count) == 0; } inline int unused() const { return owner_count == 0; } }; // a safe RefCount object is a pointer to a RefCount object // that implements safe behaviour for use by classes that // only see the public section template class RefCountPtr { protected: T* unsafe_ptr; void setUnsafePtr(T* ptr) { unsafe_ptr = ptr; if (unsafe_ptr != NULL) unsafe_ptr->use(); } void initPtr() { unsafe_ptr=NULL; } public: inline bool isNull() const { return unsafe_ptr == NULL; } inline bool notNull() const { return unsafe_ptr != NULL; } void clearPtr() { if (unsafe_ptr == NULL) return; unsafe_ptr->release(); if (unsafe_ptr->unused()) { delete unsafe_ptr; }; unsafe_ptr = NULL; } inline RefCountPtr& operator =(RefCountPtr src) { setPtr(src.unsafe_ptr); return *this; } inline RefCountPtr& operator =(T *src) { setPtr(src); return *this; } void setPtr(T *ptr) { // first use() the new pointer, then delete unsafe_ptr if necessary // order is important if ptr and unsafe_ptr point to the same object if (ptr != NULL) ptr->use(); if (unsafe_ptr != NULL && unsafe_ptr->release()) { delete unsafe_ptr; } unsafe_ptr = ptr; } inline void SetPtr(T *ptr) { setPtr(ptr); } inline T& operator*() const { return *unsafe_ptr; } inline T* operator->() const { return unsafe_ptr; } inline T* get() const {return unsafe_ptr;} inline T* GetPtr() const {return unsafe_ptr;} inline RefCountPtr() { initPtr(); }; inline RefCountPtr(const RefCountPtr& src) { setUnsafePtr(src.unsafe_ptr); }; inline RefCountPtr(T* src) { setUnsafePtr(src); }; inline ~RefCountPtr() { clearPtr(); }; }; template class RefCountVector : public vector< RefCountPtr > { public: inline void add(T* elem) { push_back(RefCountPtr(elem)); } inline T* get(int i) { return (*this)[i].get(); } void createNew(int n) { for (int i = 0; i < n; i++) push_back(RefCountPtr(new T())); } }; template class MutableRefCountPtr : public RefCountPtr { public: inline RefCountPtr& operator =(RefCountPtr src) { this->setPtr(src.get()); return *this; }; }; #endif gle-graphics-4.2.4c/src/gle/tokens/Tokenizer.h0000664000000000000000000004266011725327542017735 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ #ifndef TOKENIZER_H #define TOKENIZER_H #include #include #include #include #include #include "RefCount.h" #include "CharBitMap.h" #include "StringKeyHash.h" #define TOKENIZER_LANG_NONE -1 int strcontains(const char* str, char ch); int strposition(const char* str, char ch); bool is_float(const string& strg); void strip_string_markers(string& strg); ostream& mtab(ostream &os, int nb); class TokenizerPos { private: int m_col; int m_line; public: TokenizerPos(); TokenizerPos(const TokenizerPos& pos); void set(int line, int column); void set_line(int line); void set_col(int column); bool isValid() const; inline int getColumn() const { return m_col; }; inline void setColumn(int col) { m_col = col; }; inline int getLine() const { return m_line; }; inline void incCol(int nb) { m_col += nb; }; inline void incCol() { m_col ++; }; inline void incTab() { m_col = (m_col/8 + 1)*8; }; void incRow(); string getString(int tab1, int tab2) const; ostream& write(ostream &os) const; int equals(TokenizerPos& pos) const; }; inline ostream& operator<<(ostream& os, const TokenizerPos& pos) { return pos.write(os); } #define TOK_PARSER_ERROR_PSTRING 1 #define TOK_PARSER_ERROR_ATEND 2 class ParserError { private: int m_flag; string m_txt; string m_fname; string m_parsestr; TokenizerPos m_pos; public: ParserError(const string& txt, const TokenizerPos& pos, const char* fname); ParserError(const ParserError& err); ostream& write(ostream& os) const; void toString(string& str) const; void setParserString(const char* str); void setParserString(const string& str); int equals(ParserError* err) const; inline const string& msg() const { return m_txt; } inline const string& file() const { return m_fname; } inline int getColumn() { return m_pos.getColumn(); }; inline void setColumn(int col) { m_pos.setColumn(col); }; inline void incColumn(int nb) { m_pos.incCol(nb); }; inline void setMessage(const string& msg) { m_txt = msg; }; inline bool hasFlag(int flag) { return (m_flag & flag) != 0; }; inline void setFlag(int flag) { m_flag |= flag; } inline const string& getParserString() { return m_parsestr; } }; inline ostream& operator<<(ostream& os,const ParserError& err) { return err.write(os); } class IThrowsError { public: IThrowsError(); virtual ~IThrowsError(); virtual ParserError throwError(int pos, const string& error); virtual ParserError throwError(const char* s1, const char* s2, const char* s3); virtual ParserError throwError(const string& error); virtual int getErrorPosition() const; }; IThrowsError* g_get_throws_error(); double tokenizer_string_to_double(const char* value) throw(ParserError); #if defined(__UNIX__) ParserError g_format_parser_error(const char* format, ...); #else ParserError g_format_parser_error(va_list format, ...); #endif void g_throw_parser_error(const string& err) throw(ParserError); void g_throw_parser_error(const char* err, int idx) throw(ParserError); void g_throw_parser_error(const char* str1, const char* str2, const char* str3) throw(ParserError); void g_throw_parser_error_sys(const char* str1, const char* str2 = NULL, const char* str3 = NULL) throw(ParserError); #define MAX_PUSHBACK_CH 2 class Tokenizer; class TokenizerLangElem : public RefCountObject { protected: string m_name; public: inline void addName(string& add) { m_name += add; }; inline const string& getName() const { return m_name; }; inline int length() const { return m_name.length(); }; }; class TokenizerLangHash; class TokenizerLangHashPtr : public RefCountPtr { public: inline ostream& write(ostream &os, int tab) const; inline void addLangElem(Tokenizer* tokens, TokenizerLangElem* elem); inline void addLangElem(const vector& toks, TokenizerLangElem* elem, unsigned int pos); inline TokenizerLangHashPtr(const string& name); inline TokenizerLangHashPtr(TokenizerLangHash* src); inline TokenizerLangHashPtr(); }; class TokenizerLangHash : public StringKeyHash, public RefCountObject { private: MutableRefCountPtr m_default; public: TokenizerLangHash(); TokenizerLangHash(const string& name); ~TokenizerLangHash(); ostream& write(ostream &os, int depth) const; void addLangElem(Tokenizer* tokens, TokenizerLangElem* elem); void addLangElem(const vector& toks, TokenizerLangElem* elem, unsigned int pos); inline int hasDefault() const { return !m_default.isNull(); }; inline TokenizerLangElem* getDefault() const { return m_default.get(); }; }; typedef TokenizerLangElem* TokLangElemPtr; typedef TokenizerLangHash* TokLangHashPtr; class TokenizerLanguageMultiLevel : public RefCountObject { private: char m_open_tokens[255]; CharBitMap m_close_tokens; CharBitMap m_end_tokens; public: TokenizerLanguageMultiLevel(); void setOpenClose(char open, char close); inline void setEndToken(char end) { m_end_tokens.set(end); }; inline void resetEndToken(char end) { m_end_tokens.reset(end); }; inline bool isOpenToken(char tok) { return m_open_tokens[(int)tok] != 0; } inline char getCloseToken(char tok) { return m_open_tokens[(int)tok]; } inline bool isCloseToken(char tok) { return m_close_tokens.get(tok); } inline bool isEndToken(char tok) { return m_end_tokens.get(tok); } }; class TokenizerLanguage : public RefCountObject { private: char m_decimal_dot; int m_enable_c_comm; int m_enable_cpp_comm; int m_parse_strings; CharBitMap m_one_char_tokens; CharBitMap m_space_tokens; CharBitMap m_line_comment_tokens; vector m_sublanguage; TokLangElemPtr* m_index; RefCountPtr m_multi; public: TokenizerLanguage(); ~TokenizerLanguage(); void addSubLanguages(int nb); void addLanguageElem(int sublang, const char* elem); void addLanguageElem(int sublang, const vector& toks, TokenizerLangElem* elem); void addElementIndex(int size); void setElement(int i, TokenizerLangElem* elem); void resetCharMaps(); inline int getParseStrings() const {return m_parse_strings;} inline void setParseStrings(int ps) {m_parse_strings=ps;} inline TokenizerLangElem* getElement(int i) { return m_index[i]; }; inline int isDecimalDot(char ch) const {return m_decimal_dot && (ch==m_decimal_dot);} inline char getDecimalDot() const {return m_decimal_dot;} inline void setDecimalDot(char ch) {m_decimal_dot=ch;} inline int isSingleCharToken(char ch) const { return m_one_char_tokens.get(ch); }; inline void setSingleCharTokens(const char* sct) { m_one_char_tokens.set(sct); }; inline int isSpaceToken(char ch) const { return m_space_tokens.get(ch); }; inline void setSpaceTokens(const char* sct) { m_space_tokens.set(sct); }; inline int isLineCommentToken(char ch) const { return m_line_comment_tokens.get(ch); }; inline void setLineCommentTokens(const char* sct) { m_line_comment_tokens.set(sct); }; inline int isEnableCComment() const { return m_enable_c_comm; }; inline int isEnableCPPComment() const { return m_enable_cpp_comm; }; inline void enableCComment() { m_enable_c_comm = 1; }; inline void enableCPPComment() { m_enable_cpp_comm = 1; }; inline TokenizerLangHashPtr getLanguage(int i) const { return m_sublanguage[i];}; inline void setMulti(TokenizerLanguageMultiLevel* multi) { m_multi = multi; }; inline TokenizerLanguageMultiLevel* getMulti() { return m_multi.get(); } void initDefault(); void initDefaultSingleCharTokens(); void initDefaultSpaceTokens(); }; typedef MutableRefCountPtr TokenizerLanguagePtr; class TokenAndPos { protected: bool m_space; string m_token; TokenizerPos m_pos; public: TokenAndPos(); TokenAndPos(const TokenAndPos& copy); TokenAndPos(const string& token, const TokenizerPos& pos, char space); ~TokenAndPos(); inline const string& getToken() const { return m_token; }; inline const TokenizerPos& getPos() const { return m_pos; }; inline bool getSpace() const { return m_space; }; inline void setSpace(bool space) { m_space = space; }; inline void setToken(const string& token) { m_token = token; }; inline void setPos(const TokenizerPos& pos) { m_pos = pos; }; }; class Tokenizer : public IThrowsError { protected: const char* m_fname; string m_token; int m_token_at_end; int m_token_has_pushback; int m_token_has_pushback_ch; bool m_space_before; bool m_space_after; TokenizerPos m_token_start; TokenizerPos m_token_count; TokenizerLangHashPtr m_langhash; TokenizerLanguage* m_language; vector m_pushback_tokens; char m_token_pushback_ch[MAX_PUSHBACK_CH]; public: Tokenizer(); Tokenizer(TokenizerLanguage* lang); virtual ~Tokenizer(); int has_more_tokens() throw(ParserError); // end of stream not reached string& next_token() throw(ParserError); // returns next token. throws exception if no more tokens. string& next_continuous_string_excluding(const char* forbidden) throw(ParserError); string& try_next_token() throw(ParserError); string& read_line() throw(ParserError); double next_double() throw(ParserError); int next_integer() throw(ParserError); // reads an integer token. throws exception if token is not // an integer int try_next_integer(int *i); // gets an integer token in [*i] and returns 1 or returns 0 if // next token is not an integer TokenizerLanguage* get_language(); void delete_language(); void select_language(int i); TokenizerLangElem* try_find_lang_elem(int i); void next_token_and_pos(TokenAndPos& tkpos) throw(ParserError); void pushback_token(); void pushback_token(const TokenAndPos& tkpos); void pushback_token(const string& token, const TokenizerPos& pos); void pushback_token(const string& token); void pushback_token(const char* token); void peek_token(string* token) throw(ParserError); // look at next token without moving the current token pointer bool has_space_before() const { return m_space_before; }; int token_line() const; // current line number int token_column() const; // current column number void set_line(int line); void inc_line(); inline const TokenizerPos& token_pos() const { return m_token_start; }; inline int token_pos_col() const { return m_token_start.getColumn(); }; inline const TokenizerPos& token_stream_pos() const { return m_token_count; }; int is_next_token(const char* token) throw(ParserError); int is_next_token_i(const char* token) throw(ParserError); int is_next_token(const string& token) throw(ParserError) { return is_next_token(token.c_str()); } // checks wether next token is [token]. if so, the token is // consumed (current token pointer moved). Otherwise, // the next token is not consumed. int is_next_token_in(const char* charlist) throw(ParserError); void ensure_next_token(const char* token) throw(ParserError); // ensures the next token is [token] and moves current token pointer // raises exception if next token is not [token] void ensure_next_token_i(const char* token) throw(ParserError); int ensure_next_token_in(const char* charlist) throw(ParserError); // reads a one-character token occurring in charlist. // raises exception when the next token is not as expected. void ensure_next_token_list(const char* charlist) throw(ParserError); // reads a list of one-character tokens void token_skip_to_end(); // skips to end of line void read_till_close_comment() throw(ParserError); string& next_multilevel_token() throw(ParserError); virtual char token_read_sig_char() throw(ParserError); virtual void on_trailing_space(); char token_read_char(); char token_read_char_no_comment(); void read_number_term(char token_ch, bool has_e, bool sure_num); virtual int stream_ok() = 0; virtual int stream_get() = 0; virtual void goto_position(const TokenizerPos& pos); inline void set_fname(const char* fname) { m_fname = fname; }; inline void set_fname(const string& fname) { m_fname = fname.c_str(); }; inline const char* get_fname() { return m_fname; }; inline void token_pushback_ch(char ch) { m_token_pushback_ch[m_token_has_pushback_ch++] = ch; } virtual ParserError throwError(const char* s1, const char* s2, const char* s3); virtual ParserError throwError(int pos, const string& error); virtual ParserError throwError(const string& error); virtual int getErrorPosition() const; ParserError error(const string& src) const; ParserError error(const char* s1, const char* s2, const char* s3) const; ParserError error(const TokenizerPos& pos, const string& src) const; ParserError error(int column, const string& src) const; ParserError eof_error() const; virtual const char* parse_string_in_error() const; protected: void init(); void reset_position(); void reset_nopos(); void reset_all(); void undo_pushback_token(); void copy_string(char endch) throw(ParserError); void multi_level_do_multi(char open) throw(ParserError); void get_token() throw(ParserError); // consumes one token (and forgets it?) // raises exception when e.g. a string constant is not terminated. void get_token_2() throw(ParserError); void get_check_token() throw(ParserError); TokenizerLangElem* findLangElem(const TokenizerLangHash* hash); TokenizerLangElem* findLangElem2(const TokenizerLangHash* hash); }; class StreamTokenizer : public Tokenizer { protected: filebuf* m_fb; istream* m_is; public: StreamTokenizer(); StreamTokenizer(TokenizerLanguage* lang); StreamTokenizer(istream* _is); StreamTokenizer(istream* _is, TokenizerLanguage* lang); virtual ~StreamTokenizer(); void open_tokens(const char* fname) throw(ParserError); void open_tokens(const string& fname) throw(ParserError); void open_tokens(istream* strm, const char* fname); void close_tokens(); virtual int stream_ok(); virtual int stream_get(); inline istream* getStream() { return m_is; }; }; class StringTokenizer : public Tokenizer { protected: const char* m_tokens; int m_len; int m_pos; bool m_show_str_err; protected: void init_st(); void init_st(const char* tokens); public: StringTokenizer(bool show_str_err = true); StringTokenizer(TokenizerLanguage* lang, bool show_str_err = true); StringTokenizer(const char* tokens); StringTokenizer(const char* tokens, TokenizerLanguage* lang); virtual ~StringTokenizer(); void set_string(const char* tokens); void set_string(const string& tokens); virtual int stream_ok(); virtual int stream_get(); virtual void goto_position(const TokenizerPos& pos); virtual const char* parse_string_in_error() const; inline void setShowStringInError(bool show) { m_show_str_err = show; } }; class SpaceStringTokenizer : public StringTokenizer { public: SpaceStringTokenizer(const char* tokens); virtual ~SpaceStringTokenizer(); }; class MyOutputFile { protected: filebuf m_FB; ostream* m_OS; public: MyOutputFile(); ~MyOutputFile(); void open(const char* fname); void open(const string& fname); void close(); inline ostream& get() { return *m_OS; } inline int isOpen() { return m_OS != NULL; } }; #include "Tokenizer.i" #endif gle-graphics-4.2.4c/src/gle/tokens/Makefile.gcc0000644000000000000000000000557511405446017020001 0ustar rootroot######################################################################## # # # GLE - Graphics Layout Engine # # # # Modified BSD License # # # # Copyright (C) 2009 GLE. # # # # Redistribution and use in source and binary forms, with or without # # modification, are permitted provided that the following conditions # # are met: # # # # 1. Redistributions of source code must retain the above copyright # # notice, this list of conditions and the following disclaimer. # # # # 2. Redistributions in binary form must reproduce the above # # copyright notice, this list of conditions and the following # # disclaimer in the documentation and/or other materials provided with # # the distribution. # # # # 3. The name of the author may not be used to endorse or promote # # products derived from this software without specific prior written # # permission. # # # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR # # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY # # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE # # GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER # # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN # # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # # ######################################################################## # # makefile.gcc for GLE v4.0 # for compilation with gcc # # include ../../../config.i include ../../../config.gcc -include ../../../extraconfig.gcc # include files.txt all: $(OBJECTS) $(OBJECTS): $(INCLUDES) clean: -$(RM) $(OBJECTS) gle-graphics-4.2.4c/src/gle/tokens/stokenizer.h0000664000000000000000000001745711405446017020160 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ #include /* * A simple tokenizer */ enum empty_token_policy { drop_empty_tokens, keep_empty_tokens }; class char_separator { public: explicit char_separator(const char* dropped_delims, const char* kept_delims = 0, empty_token_policy empty_tokens = drop_empty_tokens) : m_dropped_delims(dropped_delims), m_use_ispunct(false), m_use_isspace(false), m_empty_tokens(empty_tokens), m_output_done(false) { if (kept_delims) m_kept_delims = kept_delims; } explicit char_separator() : m_use_ispunct(true), m_use_isspace(true), m_empty_tokens(drop_empty_tokens) { } bool next(string::const_iterator& next, string::const_iterator& end, string& tok) { tok = ""; // skip past all dropped_delims if (m_empty_tokens == drop_empty_tokens) { for (; next != end && is_dropped(*next); ++next) { } } if (m_empty_tokens == drop_empty_tokens) { if (next == end) return false; // if we are on a kept_delims move past it and stop if (is_kept(*next)) { tok += *next; ++next; } else { // append all the non delim characters for (; next != end && !is_dropped(*next) && !is_kept(*next); ++next) tok += *next; } } else { // m_empty_tokens == keep_empty_tokens // Handle empty token at the end if (next == end) { if (m_output_done == false) { m_output_done = true; return true; } else { return false; } } if (is_kept(*next)) { if (m_output_done == false) { m_output_done = true; } else { tok += *next; ++next; m_output_done = false; } } else if (m_output_done == false && is_dropped(*next)) { m_output_done = true; } else { if (is_dropped(*next)) ++next; for (; next != end && !is_dropped(*next) && !is_kept(*next); ++next) tok += *next; m_output_done = true; } } return true; } private: string m_kept_delims; string m_dropped_delims; bool m_use_ispunct; bool m_use_isspace; empty_token_policy m_empty_tokens; bool m_output_done; bool is_kept(char E) const { if (m_kept_delims.length()) { return m_kept_delims.find(E) != string::npos; } else if (m_use_ispunct) { return ispunct(E) != 0; } else { return false; } } bool is_dropped(char E) const { if (m_dropped_delims.length()) { return m_dropped_delims.find(E) != string::npos; } else if (m_use_isspace) { return isspace(E) != 0; } else { return false; } } }; class level_char_separator { public: explicit level_char_separator(const char* dropped_delims, const char* kept_delims, const char* level_up, const char* level_down) : m_dropped_delims(dropped_delims), m_kept_delims(kept_delims), m_level_up_delims(level_up), m_level_down_delims(level_down) { } bool next(string::const_iterator& next, string::const_iterator& end, string& tok) { tok = ""; while (next != end && is_dropped(*next)) { ++next; } if (next == end) return false; if (is_kept(*next)) { tok += *next; ++next; } else { // append all the non delim characters int level = 0; while (next != end) { if (level == 0) { if (is_dropped(*next) || is_kept(*next)) break; if (is_level_up(*next)) level++; tok += *next; } else { if (is_level_down(*next)) level--; else if (is_level_up(*next)) level++; tok += *next; } ++next; } } return true; } private: string m_dropped_delims; string m_kept_delims; string m_level_up_delims; string m_level_down_delims; bool is_level_up(char E) const { return m_level_up_delims.find(E) != string::npos; } bool is_level_down(char E) const { return m_level_down_delims.find(E) != string::npos; } bool is_kept(char E) const { if (m_kept_delims.length()) { return m_kept_delims.find(E) != string::npos; } else { return false; } } bool is_dropped(char E) const { if (m_dropped_delims.length()) { return m_dropped_delims.find(E) != string::npos; } else { return false; } } }; // A view of a tokenized "sequence" template < typename TokenizerFunc = char_separator > class tokenizer { public: tokenizer(const string& input, TokenizerFunc& token_func) : m_token_func(token_func) { m_input = input; m_current = m_input.begin(); m_end = m_input.end(); m_more = m_token_func.next(m_current, m_end, m_next_token); } tokenizer(TokenizerFunc& token_func) : m_token_func(token_func) { } void set_input(const char* input) { m_input = input; m_current = m_input.begin(); m_end = m_input.end(); m_more = m_token_func.next(m_current, m_end, m_next_token); } void set_input(const string& input) { m_input = input; m_current = m_input.begin(); m_end = m_input.end(); m_more = m_token_func.next(m_current, m_end, m_next_token); } bool has_more() { return m_more; } const string& next_token() { m_cr_token = m_next_token; m_more = m_token_func.next(m_current, m_end, m_next_token); return m_cr_token; } const string& cr_token() { return m_next_token; } private: bool m_more; string m_cr_token, m_next_token, m_input; string::const_iterator m_current, m_end; TokenizerFunc& m_token_func; }; gle-graphics-4.2.4c/src/gle/tokens/files.txt0000644000000000000000000000556011405446017017443 0ustar rootroot######################################################################## # # # GLE - Graphics Layout Engine # # # # Modified BSD License # # # # Copyright (C) 2009 GLE. # # # # Redistribution and use in source and binary forms, with or without # # modification, are permitted provided that the following conditions # # are met: # # # # 1. Redistributions of source code must retain the above copyright # # notice, this list of conditions and the following disclaimer. # # # # 2. Redistributions in binary form must reproduce the above # # copyright notice, this list of conditions and the following # # disclaimer in the documentation and/or other materials provided with # # the distribution. # # # # 3. The name of the author may not be used to endorse or promote # # products derived from this software without specific prior written # # permission. # # # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR # # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY # # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE # # GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER # # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN # # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # # ######################################################################## # # files list for GLE to be included by the makefiles # INCLUDES = \ RefCount.h \ StringKeyHash.h \ CharBitMap.h \ Tokenizer.h \ Tokenizer.i OBJECTS = \ Tokenizer.$(OBJ_SUFF) \ StringKeyHash.$(OBJ_SUFF) \ BinIO.$(OBJ_SUFF) gle-graphics-4.2.4c/src/gle/tokens/StringKeyHash.cpp0000644000000000000000000001025311405446017021022 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ #include "StringKeyHash.h" //#ifdef GLE_USE_HASHTABLE int StringIntHash::try_get(const name_hash_key& key) const { StringBasicHash::const_iterator i = find(key); if (i != end()) { return i->second; } else { return -1; } } void StringIntHash::add_item(const name_hash_key& key, int elem) { insert(StringKeyPair(key, elem)); } void* StringVoidPtrHash::try_get(const name_hash_key& key) const { StringBasicHash::const_iterator i = find(key); if (i != end()) { return i->second; } else { return NULL; } } void StringVoidPtrHash::add_item(const name_hash_key& key, void* elem) { insert(StringKeyPair(key, elem)); } void StringVoidPtrHash::deleteRecursive(int depth) { if (depth <= 0) return; for (StringVoidPtrHash::iterator iter = begin(); iter != end(); iter++) { void* elem = iter->second; if (elem != NULL) { StringVoidPtrHash* hash = (StringVoidPtrHash*)elem; hash->deleteRecursive(depth - 1); delete hash; } } } //#endif int IntIntHash::try_get(int key) const { IntBasicHash::const_iterator i = find(key); if (i != end()) { return i->second; } else { return -1; } } void IntIntHash::add_item(int key, int elem) { insert(IntKeyPair(key, elem)); } int IntStringHash::try_get(int key, string* res) const { IntBasicHash::const_iterator i = find(key); if (i != end()) { *res = i->second; return 1; } else { return 0; } } void IntStringHash::add_item(int key, const string& elem) { insert(IntKeyPair(key, elem)); } gle-graphics-4.2.4c/src/gle/tokens/CharBitMap.h0000644000000000000000000001014111405446017017712 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ #ifndef CHARBITMAP #define CHARBITMAP #define CharBitMapSize 8 #define CharBitMapIntIndexSize 5 #define CharBitMapIntIndexMask 31 class CharBitMap { private: typedef unsigned char uchar; int map[CharBitMapSize]; inline int thebit(char c) const; inline int index(char c) const; public: inline void reset(char c); inline void set(char c); inline int get(char c) const; inline void set(const char *cset); inline void reset(const char *cset); inline void clear(); inline void setall(); inline CharBitMap(); inline CharBitMap(const char *cset); }; inline int CharBitMap::index(char c) const { return ((uchar)c)>>CharBitMapIntIndexSize; } inline int CharBitMap::thebit(char c) const { return 1<<(c&CharBitMapIntIndexMask); } inline void CharBitMap::set(char c) { map[index(c)]|=thebit(c); } inline void CharBitMap::reset(char c) { map[index(c)]&=~thebit(c); } inline int CharBitMap::get(char c) const { return (map[index(c)]&thebit(c))!=0; } inline void CharBitMap::set(const char *cset) { while(*cset!=0) set(*(cset++)); } inline void CharBitMap::reset(const char *cset) { while(*cset!=0) reset(*(cset++)); } inline void CharBitMap::clear() { for(int i=0;i * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ #include #include #include using namespace std; #include "../basicconf.h" #include "../cutils.h" #include "Tokenizer.h" #include #include #define SPACE_CHAR ' ' // #define debug_tok_lang(x) cerr << x << endl #define debug_tok_lang(x) // GNU version of index not defined in MingW, ... // Replaces by calls to strcontains int strcontains(const char* str, char ch) { char cr = *str; while (cr != 0) { if (cr == ch) return 1; cr = *(++str); } return 0; } int strposition(const char* str, char ch) { int pos = 0; char cr = *str; while (cr != 0) { if (cr == ch) return pos; cr = str[++pos]; } return -1; } bool is_integer(const string& strg) { int len = strg.length(); if (len == 0) return false; for (int i = 0; i < len; i++) { char ch = strg[i]; if (ch < '0' || ch > '9') { if (i != 0) return false; if (ch != '+' && ch != '-') return false; } } return true; } bool is_integer_e(const string& strg) { int len = strg.length(); if (len <= 1) return false; char ch = strg[len-1]; if (ch != 'e' && ch != 'E') return false; for (int i = 0; i < len-1; i++) { char ch = strg[i]; if (ch < '0' || ch > '9') { if (i != 0) return false; if (ch != '+' && ch != '-') return false; } } return true; } bool is_float(const string& strg) { int len = strg.length(); if (len == 0) return 0; int pos = 0; char ch = strg[pos]; // cout << "is_float(" << strg << ")" << endl; if (ch == '+' || ch == '-') { pos++; ch = pos < len ? strg[pos] : 0; } bool has_dot = false; if (ch == '.') { pos++; has_dot = true; ch = pos < len ? strg[pos] : 0; } int count1 = 0, count2 = 0; while (ch >= '0' && ch <= '9') { pos++; count1++; ch = pos < len ? strg[pos] : 0; } if (!has_dot) { if (ch == '.') { pos++; has_dot = true; ch = pos < len ? strg[pos] : 0; while (ch >= '0' && ch <= '9') { pos++; count2++; ch = pos < len ? strg[pos] : 0; } } } else { count2 = count1; count1 = 0; } if (count1 > 0 || count2 > 0) { if (ch == 'e' || ch == 'E') { pos++; ch = pos < len ? strg[pos] : 0; if (ch == '+' || ch == '-') { pos++; ch = pos < len ? strg[pos] : 0; } int counte = 0; while (ch >= '0' && ch <= '9') { pos++; counte++; ch = pos < len ? strg[pos] : 0; } return counte > 0; } else { return pos == len; } } else { return false; } } void strip_string_markers(string& strg) { int len = strg.length(); if (len >= 2) { char ch0 = strg[0]; if (ch0 == '"' || ch0 == '\'') { strg.erase(strg.begin()); strg.resize(len-2); } } } ostream& mtab(ostream &os, int nb) { for (int i = 0; i < nb; i++) os << '\t'; return os; } double tokenizer_string_to_double(const char* value) throw(ParserError) { char *endp; double dvalue = strtod(value, &endp); if (value != endp && *endp == 0) { return dvalue; } else { ostringstream err; err << "illegal double value '" << value << "'" << endl; g_throw_parser_error(err.str()); return 0.0; } } TokenizerPos::TokenizerPos() { m_col = -10; m_line = -10; } TokenizerPos::TokenizerPos(const TokenizerPos& pos) { m_col = pos.m_col; m_line = pos.m_line; } void TokenizerPos::set(int line, int column) { m_line = line; m_col = column; } void TokenizerPos::set_line(int line) { m_line = line; } void TokenizerPos::set_col(int column) { m_col = column; } void TokenizerPos::incRow() { m_line++; m_col = 0; } bool TokenizerPos::isValid() const { return m_col >= 0 || m_line > 0; } ostream& TokenizerPos::write(ostream &os) const { if (m_col >= 0 && m_line > 0) { os << m_line << ":" << (m_col-1); } else if (m_line > 0) { os << "line " << m_line; } else if (m_col >= 0) { os << "column " << (m_col-1); } return os; } int TokenizerPos::equals(TokenizerPos& pos) const { return (m_col == pos.m_col && m_line == pos.m_line); } string TokenizerPos::getString(int tab1, int tab2) const { int i, pos = 0; char lines[15], cols[15], res[50]; if (m_line < 0) strcpy(lines, "?"); else sprintf(lines, "%d", m_line); if (m_col < 0) strcpy(cols, "?"); else sprintf(cols, "%d", m_col-1); for (i = tab1-strlen(lines); i > 0; i--) { res[pos++] = ' '; } i = 0; while (lines[i] != 0) { res[pos++] = lines[i++]; } i = 0; res[pos++] = ':'; while (cols[i] != 0) { res[pos++] = cols[i++]; } for (i = tab2-strlen(cols); i > 0; i--) { res[pos++] = ' '; } res[pos] = 0; return string(res); } #if defined(__UNIX__) ParserError g_format_parser_error(const char* format, ...) { #else ParserError g_format_parser_error(va_list format, ...) { #endif string str; va_list ap; va_start(ap, format); str_format(&str, (const char*)format, ap); va_end(ap); TokenizerPos pos; pos.setColumn(-1); return ParserError(str, pos, NULL); } void g_throw_parser_error(const string& err) throw(ParserError) { TokenizerPos pos; pos.setColumn(-1); ParserError err_exp(err, pos, NULL); throw err_exp; } void g_throw_parser_error(const char* str1, const char* str2, const char* str3) throw(ParserError) { TokenizerPos pos; pos.setColumn(-1); string err = str1; if (str2 != NULL) err += str2; if (str3 != NULL) err += str3; ParserError err_exp(err, pos, NULL); throw err_exp; } void g_throw_parser_error_sys(const char* str1, const char* str2, const char* str3) throw(ParserError) { TokenizerPos pos; pos.setColumn(-1); ostringstream err_str; err_str << str1; if (str2 != NULL) err_str << str2; if (str3 != NULL) err_str << str3; err_str << ": "; str_get_system_error(err_str); ParserError err_exp(err_str.str(), pos, NULL); throw err_exp; } void g_throw_parser_error(const char* err, int idx) throw(ParserError) { char str[30]; sprintf(str, "%d", idx); TokenizerPos pos; pos.setColumn(-1); ParserError err_exp(string(err)+str, pos, NULL); throw err_exp; } IThrowsError::IThrowsError() { } IThrowsError::~IThrowsError() { } ParserError IThrowsError::throwError(const char* s1, const char* s2, const char* s3) { TokenizerPos pos; pos.setColumn(-1); string err(s1); if (s2 != NULL) err += s2; if (s3 != NULL) err += s3; return ParserError(err, pos, NULL); } ParserError IThrowsError::throwError(int /* pos */, const string& error) { return throwError(error); } ParserError IThrowsError::throwError(const string& error) { TokenizerPos pos; pos.setColumn(-1); return ParserError(error, pos, NULL); } int IThrowsError::getErrorPosition() const { return 0; } IThrowsError* g_get_throws_error() { static IThrowsError instance; return &instance; } ParserError::ParserError(const string& txt, const TokenizerPos& pos, const char* fname) { m_txt = txt; str_replace_all(m_txt, "\n", "\n>> "); m_pos = pos; m_flag = 0; if (fname == NULL) m_fname = ""; else m_fname = fname; } ParserError::ParserError(const ParserError& err) { m_flag = err.m_flag; m_txt = err.m_txt; m_fname = err.m_fname; m_parsestr = err.m_parsestr; m_pos = err.m_pos; } void ParserError::setParserString(const string& str) { m_parsestr = str; m_flag |= TOK_PARSER_ERROR_PSTRING; } void ParserError::setParserString(const char* str) { m_parsestr = str; m_flag |= TOK_PARSER_ERROR_PSTRING; } ostream& ParserError::write(ostream& os) const { os << m_txt; if (m_fname != "") { if (m_pos.isValid()) { os << " at " << m_pos; } os << ", while processing '" << m_fname << "'"; } return os; } void ParserError::toString(string& str) const { if (m_fname == "") { str = m_txt; } else { ostringstream err_str; write(err_str); str = err_str.str(); } } int ParserError::equals(ParserError* err) const { return (m_txt == err->m_txt && m_fname == err->m_fname && m_pos.equals(err->m_pos)); } TokenizerLangHash::TokenizerLangHash() { } TokenizerLangHash::TokenizerLangHash(const string& name) { } TokenizerLangHash::~TokenizerLangHash() { } ostream& TokenizerLangHash::write(ostream &os, int depth) const { if (!m_default.isNull()) { mtab(os, depth); os << m_default->getName() << endl; } for (const_iterator i = begin(); i != end(); i++ ) { const name_hash_key& key = i->first; const TokenizerLangHash* hash = i->second.get(); mtab(os, depth); os << key << endl; hash->write(os, depth + 1); } return os; } TokenAndPos::TokenAndPos() { }; TokenAndPos::~TokenAndPos() { }; TokenAndPos::TokenAndPos(const TokenAndPos& copy) { m_token = copy.m_token; m_pos = copy.m_pos; m_space = copy.m_space; } TokenAndPos::TokenAndPos(const string& token, const TokenizerPos& pos, char space) { m_token = token; m_pos = pos; m_space = space; }; TokenizerLangElem* Tokenizer::findLangElem(const TokenizerLangHash* hash) { string backup_token = m_token; TokenizerPos backup_pos = m_token_start; get_token_2(); if (m_token.length() != 0) { debug_tok_lang("Tokenizer::first part of token '" << m_token << "'"); if (m_space_before) { pushback_token(); } else { TokenizerLangElem* result = findLangElem2(hash); if (result != NULL) { debug_tok_lang("Tokenizer::recursive call returns NULL"); m_token_start = backup_pos; return result; } } } TokenizerLangElem* elem = hash->getDefault(); debug_tok_lang("Tokenizer::default elem " << elem); if (elem != NULL) { return elem; } else { m_token = backup_token; m_token_start = backup_pos; return NULL; } } TokenizerLangElem* Tokenizer::findLangElem2(const TokenizerLangHash* hash) { TokenAndPos my_tkpos(m_token, m_token_start, m_space_before); TokenizerLangHash::const_iterator i = hash->find(my_tkpos.getToken()); if (i != hash->end()) { get_token_2(); const TokenizerLangHash* child = i->second.get(); if (m_token.length() != 0) { if (m_space_before) { pushback_token(); } else { TokenizerLangElem* result = findLangElem2(child); if (result != NULL) return result; } } TokenizerLangElem* elem = child->getDefault(); if (elem != NULL) return elem; pushback_token(my_tkpos); return NULL; } else { pushback_token(my_tkpos); return NULL; } } void TokenizerLangHash::addLangElem(Tokenizer* tokens, TokenizerLangElem* elem) { string& token = tokens->try_next_token(); if (token.length() == 0) { m_default = elem; } else { elem->addName(token); TokenizerLangHashPtr hash = try_add(token); hash.addLangElem(tokens, elem); } } void TokenizerLangHash::addLangElem(const vector& toks, TokenizerLangElem* elem, unsigned int pos) { if (pos >= toks.size()) { m_default = elem; } else { TokenizerLangHashPtr hash = try_add(toks[pos]); hash.addLangElem(toks, elem, pos+1); } } TokenizerLanguage::TokenizerLanguage() { m_index = NULL; m_enable_c_comm = 0; m_enable_cpp_comm = 0; m_parse_strings = 1; m_decimal_dot = 0; } TokenizerLanguage::~TokenizerLanguage() { if (m_index != NULL) delete[] m_index; } void TokenizerLanguage::addElementIndex(int size) { if (m_index != NULL) delete[] m_index; m_index = new TokLangElemPtr[size]; } void TokenizerLanguage::setElement(int i, TokenizerLangElem* elem) { m_index[i] = elem; } void TokenizerLanguage::addSubLanguages(int nb) { for (int i = 0; i < nb; i++) { m_sublanguage.push_back(new TokenizerLangHash()); } } void TokenizerLanguage::addLanguageElem(int sublang, const char* elem) { StringTokenizer parser(elem, this); TokenizerLangElem* le = new TokenizerLangElem(); m_sublanguage[sublang].addLangElem(&parser, le); } void TokenizerLanguage::addLanguageElem(int sublang, const vector& toks, TokenizerLangElem* elem) { m_sublanguage[sublang].addLangElem(toks, elem, 0); } void TokenizerLanguage::resetCharMaps() { m_one_char_tokens.clear(); m_space_tokens.clear(); m_line_comment_tokens.clear(); } void TokenizerLanguage::initDefault() { initDefaultSingleCharTokens(); initDefaultSpaceTokens(); } void TokenizerLanguage::initDefaultSingleCharTokens() { setSingleCharTokens(",.:;[]{}()+-*/=#<>|^@"); } void TokenizerLanguage::initDefaultSpaceTokens() { setSpaceTokens(" \t\n\r"); } TokenizerLanguageMultiLevel::TokenizerLanguageMultiLevel() { for (int i = 0; i < 255; i++) { m_open_tokens[i] = 0; } } void TokenizerLanguageMultiLevel::setOpenClose(char open, char close) { m_open_tokens[(int)open] = close; m_close_tokens.set(close); } Tokenizer::Tokenizer() { m_language = new TokenizerLanguage(); init(); } Tokenizer::Tokenizer(TokenizerLanguage* language) { m_language = language; init(); } Tokenizer::~Tokenizer() { } void Tokenizer::select_language(int i) { if (i == TOKENIZER_LANG_NONE) m_langhash = NULL; else m_langhash = m_language->getLanguage(i); } void Tokenizer::init() { m_fname = NULL; m_langhash = NULL; reset_all(); } void Tokenizer::reset_nopos() { m_token_at_end = 0; m_token_has_pushback = 0; m_token_has_pushback_ch = 0; m_token_start.set(0, 0); m_space_before = false; m_space_after = false; m_pushback_tokens.clear(); } void Tokenizer::reset_all() { reset_nopos(); m_token_count.set(1, 0); } TokenizerLanguage* Tokenizer::get_language() { return m_language; } void Tokenizer::delete_language() { if (m_language != NULL) { delete m_language; m_language = NULL; } } void Tokenizer::reset_position() { m_token_count.set(1, 0); m_token_start.set(0, 0); } int Tokenizer::has_more_tokens() throw(ParserError) { if (m_token_has_pushback > 0) { return 1; } if (m_token_at_end == 1) { return 0; } char token_ch = token_read_sig_char(); if (m_token_at_end == 1) { return 0; } else { token_pushback_ch(token_ch); return 1; } } string& Tokenizer::next_token() throw(ParserError) { get_check_token(); // cerr << m_token_start << "\t" << m_token << endl; return m_token; } string& Tokenizer::try_next_token() throw(ParserError) { get_token(); return m_token; } double Tokenizer::next_double() throw(ParserError) { char *ptr; get_check_token(); double result = strtod(m_token.c_str(), &ptr); if (*ptr != 0) throw error("expected floating point number, not '" + m_token + "'"); return result; } int Tokenizer::next_integer() throw(ParserError) { char* ptr; get_check_token(); int result = strtol(m_token.c_str(), &ptr, 10); if (*ptr != 0) throw error("expected integer, not '" + m_token + "'"); return result; } int Tokenizer::try_next_integer(int *i) { char* ptr; get_check_token(); *i = strtol(m_token.c_str(), &ptr, 10); return *ptr != 0 ? 0 : 1; } void Tokenizer::get_token() throw(ParserError) { get_token_2(); if ((!m_langhash.isNull()) && m_token.length() > 0) { TokenizerLangHash::const_iterator i = m_langhash->find(m_token); if (i != m_langhash->end()) { const TokenizerLangElem* elem = findLangElem(i->second.get()); if (elem != NULL) m_token = elem->getName(); } } } TokenizerLangElem* Tokenizer::try_find_lang_elem(int i) { get_token_2(); if (m_token.length() > 0) { const TokenizerLangHash* hash = m_language->getLanguage(i).get(); TokenizerLangHash::const_iterator i = hash->find(m_token); if (i != hash->end()) { debug_tok_lang("Tokenizer::find first part " << m_token); TokenizerLangElem* elem = findLangElem(i->second.get()); if (elem != NULL) { debug_tok_lang("Tokenizer::found elem " << elem->getName()); return elem; } else { debug_tok_lang("Tokenizer::call returns NULL, pushback " << m_token); pushback_token(); } } else { pushback_token(); } } return NULL; } void Tokenizer::get_token_2() throw(ParserError) { if (m_token_has_pushback > 0) { const TokenAndPos& tkpos = m_pushback_tokens.back(); m_token = tkpos.getToken(); m_token_start = tkpos.getPos(); m_space_before = tkpos.getSpace(); m_pushback_tokens.pop_back(); m_token_has_pushback--; return; } m_space_before = m_space_after; m_space_after = false; char token_ch = token_read_sig_char(); m_token_start = m_token_count; if (m_token_at_end == 1) { m_token = ""; return; } // String with \" or \' marks if ((token_ch == '\"' || token_ch == '\'') && m_language->getParseStrings()) { char string_delim = token_ch; m_token = token_ch; do { token_ch = token_read_char_no_comment(); m_token += token_ch; if (token_ch == string_delim) { token_ch = token_read_char_no_comment(); if (token_ch != string_delim) { token_pushback_ch(token_ch); return; } } } while (m_token_at_end == 0); throw error("unterminated string constant"); } // No string found if (m_language->isSingleCharToken(token_ch)) { if (m_language->isDecimalDot(token_ch)) { // Number starting with decimal dot m_token = ""; read_number_term(token_ch, false, false); } else { m_token = token_ch; } } else { // Support the possibility not to token on space bool token_on_space = m_language->isSpaceToken(SPACE_CHAR); m_token = token_ch; do { token_ch = token_read_char(); if (m_language->isDecimalDot(token_ch)) { if (is_integer(m_token)) { // Number starting with "123." read_number_term(token_ch, false, true); return; } else { token_pushback_ch(token_ch); return; } } else { if (m_language->isSingleCharToken(token_ch)) { // Support numbers of the form 1e-9 if ((token_ch == '+' || token_ch == '-') && is_integer_e(m_token)) { read_number_term(token_ch, true, true); return; } token_pushback_ch(token_ch); return; } } if (token_ch == SPACE_CHAR && token_on_space) { m_space_after = true; on_trailing_space(); return; } m_token += token_ch; } while (m_token_at_end == 0); } } void Tokenizer::copy_string(char string_delim) throw(ParserError) { TokenizerPos pos = token_stream_pos(); while (m_token_at_end == 0) { char token_ch = token_read_char_no_comment(); m_token += token_ch; if (token_ch == string_delim) { token_ch = token_read_char_no_comment(); if (token_ch != string_delim) { token_pushback_ch(token_ch); return; } } } throw error(pos, "unterminated string constant"); } void Tokenizer::multi_level_do_multi(char open) throw(ParserError) { vector m_open_token; m_open_token.push_back(open); TokenizerLanguageMultiLevel* multi = m_language->getMulti(); char token_ch = token_read_char(); while (m_token_at_end == 0) { if (m_open_token.size() == 0 && multi->isEndToken(token_ch)) { if (token_ch != SPACE_CHAR) { token_pushback_ch(token_ch); } return; } else { m_token += token_ch; if ((token_ch == '\"' || token_ch == '\'') && m_language->getParseStrings()) { copy_string(token_ch); } else if (multi->isOpenToken(token_ch)) { m_open_token.push_back(open); } else if (multi->isCloseToken(token_ch)) { if (m_open_token.size() == 0) { throw error(token_stream_pos(), string("illegal closing '")+token_ch+"'"); } else { char expected = multi->getCloseToken(m_open_token.back()); if (expected == token_ch) { m_open_token.pop_back(); } else { throw error(token_stream_pos(), string("illegal closing '")+token_ch+"', expected a closing '"+expected+"' first"); } } } token_ch = token_read_char(); } } if (m_open_token.size() != 0) { char expected = multi->getCloseToken(m_open_token.back()); throw error(token_stream_pos(), string("expected closing '")+expected+"'"); } } string& Tokenizer::next_continuous_string_excluding(const char* forbidden) throw(ParserError) { undo_pushback_token(); m_token = ""; char token_ch = token_read_sig_char(); m_token_start = m_token_count; if (m_token_at_end == 1) { return m_token; } do { if (token_ch == SPACE_CHAR) { break; } else { if (str_contains(forbidden, token_ch)) { m_token = ""; goto_position(m_token_start); break; } else { m_token += token_ch; token_ch = token_read_char(); } } } while (m_token_at_end == 0); return m_token; } void Tokenizer::undo_pushback_token() { if (m_token_has_pushback > 0) { TokenAndPos& tkpos = m_pushback_tokens.back(); // cout << "goto position = " << tkpos.getPos() << endl; goto_position(tkpos.getPos()); m_pushback_tokens.clear(); m_token_has_pushback = 0; } } string& Tokenizer::next_multilevel_token() throw(ParserError) { undo_pushback_token(); m_token = ""; char token_ch = token_read_sig_char(); m_token_start = m_token_count; if (m_token_at_end == 1) { return m_token; } TokenizerLanguageMultiLevel* multi = m_language->getMulti(); do { if (multi->isEndToken(token_ch)) { if (token_ch != SPACE_CHAR) { token_pushback_ch(token_ch); } break; } else { m_token += token_ch; if ((token_ch == '\"' || token_ch == '\'') && m_language->getParseStrings()) { copy_string(token_ch); // cout << "token: '" << m_token << "'" << endl; } else if (multi->isOpenToken(token_ch)) { /* Use subroutine for efficiency: */ /* no vector constructed if not multi-level */ multi_level_do_multi(token_ch); break; } else if (multi->isCloseToken(token_ch)) { throw error(token_stream_pos(), string("illegal closing '")+token_ch+"'"); } token_ch = token_read_char(); } } while (m_token_at_end == 0); return m_token; } void Tokenizer::on_trailing_space() { } void Tokenizer::goto_position(const TokenizerPos& pos) { m_token_count = pos; m_token_count.incCol(-1); m_token_has_pushback_ch = 0; } string& Tokenizer::read_line() throw(ParserError) { m_token = ""; while (m_token_has_pushback > 0) { TokenAndPos& tkpos = m_pushback_tokens.back(); m_token += tkpos.getToken(); m_pushback_tokens.pop_back(); m_token_has_pushback--; } while (m_token_has_pushback_ch > 0) { m_token += m_token_pushback_ch[--m_token_has_pushback_ch]; } while (1) { char ch = stream_get(); if (!stream_ok()) break; if (ch == '\n') break; m_token += ch; } return m_token; } void Tokenizer::read_number_term(char token_ch, bool has_e, bool sure_num) { // token_ch is "decimal dot" or integer+e+"+/-", always add! m_token += token_ch; int count_exp = 0; int count_num = 0; if (!has_e) { // token_ch is "decimal dot" bool busy_main = true; while (busy_main) { token_ch = token_read_char(); // keep on reading numbers or "e/E" if (token_ch == 'e' || token_ch == 'E') { // should be number or "+/-" char next_ch = token_read_char(); if ((next_ch < '0' || next_ch > '9') && next_ch != '+' && next_ch != '-') { if (sure_num) { throw error(token_stream_pos(), string("illegal character '")+next_ch+"' while reading exponent of floating point number"); } else { token_pushback_ch(next_ch); token_pushback_ch(token_ch); return; } } else { m_token += token_ch; busy_main = false; m_token += next_ch; if (next_ch >= '0' && next_ch <= '9') { count_exp = 1; } } } else { if (token_ch < '0' || token_ch > '9') { if (token_ch == SPACE_CHAR) { on_trailing_space(); return; } if (m_language->isSingleCharToken(token_ch)) { token_pushback_ch(token_ch); return; } if (count_num > 0) { throw error(token_stream_pos(), string("illegal character '")+token_ch+"' while reading floating point number"); } else { token_pushback_ch(token_ch); return; } } m_token += token_ch; count_num++; } } } // read regular number, after the e+"+/-" while (1) { token_ch = token_read_char(); if (token_ch < '0' || token_ch > '9') { if (count_exp == 0) { throw error(token_stream_pos(), string("illegal character '")+token_ch+"' while reading exponent of floating point number"); } if (token_ch == SPACE_CHAR) { on_trailing_space(); return; } if (m_language->isSingleCharToken(token_ch)) { token_pushback_ch(token_ch); return; } throw error(token_stream_pos(), string("illegal character '")+token_ch+"' while in exponent of floating point number"); } count_exp++; m_token += token_ch; } } void Tokenizer::next_token_and_pos(TokenAndPos& tkpos) throw(ParserError) { get_check_token(); tkpos.setToken(m_token); tkpos.setPos(m_token_start); tkpos.setSpace(m_space_before); } void Tokenizer::pushback_token() { m_pushback_tokens.push_back(TokenAndPos(m_token, m_token_start, m_space_before)); m_token_has_pushback++; } void Tokenizer::pushback_token(const TokenAndPos& tkpos) { m_pushback_tokens.push_back(tkpos); m_token_has_pushback++; } void Tokenizer::pushback_token(const string& token, const TokenizerPos& pos) { m_pushback_tokens.push_back(TokenAndPos(token, pos, 0)); m_token_has_pushback++; } void Tokenizer::pushback_token(const string& token) { pushback_token(token, m_token_start); } void Tokenizer::pushback_token(const char* token) { pushback_token(string(token), m_token_start); } void Tokenizer::get_check_token() throw(ParserError) { get_token(); if (m_token.length() == 0) { throw eof_error(); } } void Tokenizer::peek_token(string* token) throw(ParserError) { get_check_token(); pushback_token(); *token = m_token; } int Tokenizer::token_line() const { return m_token_start.getLine(); } int Tokenizer::token_column() const { return m_token_start.getColumn(); } void Tokenizer::set_line(int line) { m_token_count.set_line(line); } void Tokenizer::inc_line() { m_token_count.set_line(m_token_count.getLine()+1); } int Tokenizer::is_next_token(const char* token) throw(ParserError) { get_token(); if (m_token.length() == 0) { return m_token == token; } else { if (m_token == token) { return 1; } pushback_token(); return 0; } } int Tokenizer::is_next_token_i(const char* token) throw(ParserError) { get_token(); if (m_token.length() == 0) { return m_token == token; } else { if (str_i_equals(m_token.c_str(), token)) { return 1; } pushback_token(); return 0; } } int Tokenizer::is_next_token_in(const char* charlist) throw(ParserError) { get_check_token(); if (m_token.length() == 1) { char ch = m_token[0]; if (strcontains(charlist, ch)) return ch; } pushback_token(); return -1; } int Tokenizer::ensure_next_token_in(const char* charlist) throw(ParserError) { get_check_token(); if (m_token.length() == 1) { char ch = m_token[0]; if (strcontains(charlist, ch)) return ch; } throw error(string("expected one of '") + charlist + "', found '" + m_token + "'"); } void Tokenizer::ensure_next_token(const char* token) throw(ParserError) { get_check_token(); if (m_token != token) { throw error(string("expected '") + token + "', found '" + m_token + "'"); } } void Tokenizer::ensure_next_token_i(const char* token) throw(ParserError) { get_check_token(); if (!str_i_equals(m_token.c_str(), token)) { throw error(string("expected '") + token + "', found '" + m_token + "'"); } } void Tokenizer::ensure_next_token_list(const char* charlist) throw(ParserError) { char err = 0; int len = strlen(charlist); TokenizerPos start = m_token_start; for (int i = 0; i < len; i++) { get_check_token(); if (m_token.length() != 1) { err = 1; break; } else { char ch = m_token[0]; if (ch != charlist[i]) { err = 1; break; } } } if (err == 1) { throw error(start, string("expected ") + charlist); } } char Tokenizer::token_read_sig_char() throw(ParserError) { char token_ch; while (1) { do { token_ch = token_read_char(); if (m_token_at_end == true) { return SPACE_CHAR; } if (token_ch == SPACE_CHAR) { m_space_before = true; } } while (token_ch == SPACE_CHAR); if (m_language->isLineCommentToken(token_ch)) { m_space_before = true; token_skip_to_end(); } else if (token_ch == '/') { char next_token_ch = token_read_char(); if (next_token_ch == '/' && m_language->isEnableCPPComment()) { m_space_before = true; token_skip_to_end(); } else if (next_token_ch == '*' && m_language->isEnableCComment()) { m_space_before = true; read_till_close_comment(); } else { token_pushback_ch(next_token_ch); return token_ch; } } else { return token_ch; } } } char Tokenizer::token_read_char() { if (m_token_has_pushback_ch > 0) { return m_token_pushback_ch[--m_token_has_pushback_ch]; } while (1) { char ch = stream_get(); if (stream_ok()) { if (ch == '\t') m_token_count.incTab(); else m_token_count.incCol(); if (ch == '\n') m_token_count.incRow(); if (m_language->isLineCommentToken(ch)) { token_skip_to_end(); return SPACE_CHAR; } if (m_language->isSpaceToken(ch)) { return SPACE_CHAR; } else { return ch; } } else { if (m_token_at_end == 0) { m_token_count.incCol(); } m_token_at_end = 1; return SPACE_CHAR; } } } char Tokenizer::token_read_char_no_comment() { if (m_token_has_pushback_ch > 0) { return m_token_pushback_ch[--m_token_has_pushback_ch]; } while (1) { char ch = stream_get(); if (stream_ok()) { if (ch == '\t') m_token_count.incTab(); else m_token_count.incCol(); if (ch == '\n') m_token_count.incRow(); if (m_language->isSpaceToken(ch)) { return SPACE_CHAR; } else { return ch; } } else { if (m_token_at_end == 0) { m_token_count.incCol(); } m_token_at_end = 1; return SPACE_CHAR; } } } void Tokenizer::token_skip_to_end() { while (1) { char ch = stream_get(); if (stream_ok()) { m_token_count.incCol(); if (ch == '\n') { m_token_count.incRow(); if (!m_language->isSpaceToken('\n')) token_pushback_ch('\n'); return; } } else { m_token_at_end = 1; return; } } } void Tokenizer::read_till_close_comment() throw(ParserError) { TokenizerPos start = m_token_count; int prev_ch = 0; while (1) { int token_ch = token_read_char(); if (prev_ch == '*' && token_ch == '/') { return; } if (m_token_at_end == 1) { start.incCol(-1); throw error(start, "comment block '/*' not terminated"); } prev_ch = token_ch; } } ParserError Tokenizer::throwError(const char* s1, const char* s2, const char* s3) { return error(s1, s2, s3); } ParserError Tokenizer::throwError(int pos, const string& msg) { return error(pos, msg); } ParserError Tokenizer::throwError(const string& msg) { return error(msg); } int Tokenizer::getErrorPosition() const { return token_pos_col(); } ParserError Tokenizer::error(const char* s1, const char* s2, const char* s3) const { ostringstream err; err << s1 << s2 << s3; return error(err.str()); } ParserError Tokenizer::error(const string& src) const { ParserError err(src, token_pos(), m_fname); const char* parse_str = parse_string_in_error(); if (parse_str != NULL) err.setParserString(parse_str); return err; } ParserError Tokenizer::error(const TokenizerPos& pos, const string& src) const { ParserError err(src, pos, m_fname); const char* parse_str = parse_string_in_error(); if (parse_str != NULL) err.setParserString(parse_str); return err; } ParserError Tokenizer::eof_error() const { ParserError err("unexpected end of file", token_pos(), m_fname); err.setFlag(TOK_PARSER_ERROR_ATEND); const char* parse_str = parse_string_in_error(); if (parse_str != NULL) err.setParserString(parse_str); return err; } const char* Tokenizer::parse_string_in_error() const { return NULL; } ParserError Tokenizer::error(int column, const string& src) const { TokenizerPos pos; pos.set(-1, column); return ParserError(src, pos, m_fname); } StreamTokenizer::StreamTokenizer() : Tokenizer() { m_fb = NULL; m_is = NULL; } StreamTokenizer::StreamTokenizer(TokenizerLanguage* lang) : Tokenizer(lang) { m_fb = NULL; m_is = NULL; } StreamTokenizer::StreamTokenizer(istream* _is) : Tokenizer(), m_is(_is) { m_fb = NULL; } StreamTokenizer::StreamTokenizer(istream* _is, TokenizerLanguage* lang) : Tokenizer(lang), m_is(_is) { m_fb = NULL; } StreamTokenizer::~StreamTokenizer() { close_tokens(); } void StreamTokenizer::open_tokens(const char* fname) throw(ParserError) { m_fb = new filebuf(); m_fb->open(fname, ios::in); if (!m_fb->is_open()) { ostringstream err_str; err_str << "can't open: '" << fname << "': "; str_get_system_error(err_str); throw error(err_str.str()); } m_fname = fname; m_is = new istream(m_fb); } void StreamTokenizer::open_tokens(const string& fname) throw(ParserError) { open_tokens(fname.c_str()); } void StreamTokenizer::open_tokens(istream* strm, const char* fname) { m_fb = NULL; m_is = strm; m_fname = fname; } void StreamTokenizer::close_tokens() { if (m_fb != NULL) { m_fb->close(); delete m_fb; m_fb = NULL; delete m_is; m_is = NULL; } } int StreamTokenizer::stream_ok() { return m_is->good(); } int StreamTokenizer::stream_get() { return m_is->get(); } StringTokenizer::StringTokenizer(bool show_str_err) : Tokenizer() { init_st(); m_token_count.set_line(0); m_show_str_err = show_str_err; } StringTokenizer::StringTokenizer(TokenizerLanguage* lang, bool show_str_err) : Tokenizer(lang) { init_st(); m_token_count.set_line(0); m_show_str_err = show_str_err; } StringTokenizer::StringTokenizer(const char* tokens) { init_st(tokens); m_token_count.set_line(0); m_show_str_err = true; } StringTokenizer::StringTokenizer(const char* tokens, TokenizerLanguage* lang) : Tokenizer(lang) { init_st(tokens); m_token_count.set_line(0); m_show_str_err = true; } StringTokenizer::~StringTokenizer() { } void StringTokenizer::init_st() { m_tokens = NULL; m_len = 0; m_pos = -1; } void StringTokenizer::init_st(const char* tokens) { m_tokens = tokens; m_len = strlen(tokens); m_pos = -1; } void StringTokenizer::set_string(const char* tokens) { init_st(tokens); reset_nopos(); m_token_count.set_col(0); } void StringTokenizer::set_string(const string& tokens) { init_st(tokens.c_str()); reset_nopos(); m_token_count.set_col(0); } int StringTokenizer::stream_ok() { return (int)(m_pos < m_len); } int StringTokenizer::stream_get() { m_pos++; return m_pos < m_len ? m_tokens[m_pos] : ' '; } const char* StringTokenizer::parse_string_in_error() const { if (m_show_str_err) return m_tokens; else return NULL; } void StringTokenizer::goto_position(const TokenizerPos& pos) { Tokenizer::goto_position(pos); int offs = 0; for (int idx = 0; idx < m_len; idx++) { char ch = m_tokens[idx]; if (ch == '\t') { offs = (offs/8 + 1)*8; } else { offs++; } if (offs == pos.getColumn() - 1) { m_pos = idx; if (m_pos < m_len) { m_token_at_end = 0; } break; } } } TokenizerLanguagePtr g_SpaceLang; TokenizerLanguage* createSpaceLanguage() { if (g_SpaceLang.isNull()) { g_SpaceLang = new TokenizerLanguage(); g_SpaceLang->setSpaceTokens(" ,\t\r\n"); } return g_SpaceLang.get(); } SpaceStringTokenizer::SpaceStringTokenizer(const char* tokens) : StringTokenizer(tokens, createSpaceLanguage()) { } SpaceStringTokenizer::~SpaceStringTokenizer() { } MyOutputFile::MyOutputFile() { m_OS = NULL; } MyOutputFile::~MyOutputFile() { close(); } void MyOutputFile::open(const char* fname) { close(); m_FB.open(fname, ios::out); m_OS = new ostream(&m_FB); } void MyOutputFile::open(const string& fname) { close(); m_FB.open(fname.c_str(), ios::out); m_OS = new ostream(&m_FB); } void MyOutputFile::close() { if (m_OS != NULL) { m_FB.close(); delete m_OS; m_OS = NULL; } } gle-graphics-4.2.4c/src/gle/tokens/Tokenizer.i0000644000000000000000000000654711405446017017732 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ inline ostream& TokenizerLangHashPtr::write(ostream &os, int tab) const { return get()->write(os,tab); } inline void TokenizerLangHashPtr::addLangElem(Tokenizer* tokens, TokenizerLangElem* elem) { GetPtr()->addLangElem(tokens,elem); } inline void TokenizerLangHashPtr::addLangElem(const vector& toks, TokenizerLangElem* elem, unsigned int pos) { GetPtr()->addLangElem(toks,elem,pos); } inline TokenizerLangHashPtr::TokenizerLangHashPtr(TokenizerLangHash* src) : RefCountPtr(src) {} inline TokenizerLangHashPtr::TokenizerLangHashPtr() {} inline TokenizerLangHashPtr::TokenizerLangHashPtr(const string& name) { SetPtr(new TokenizerLangHash(name)); } gle-graphics-4.2.4c/src/gle/tokens/BinIO.h0000644000000000000000000001204311405446017016703 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ #ifndef BINIO_H #define BINIO_H #include // This class contains stuff for serializing graphs #define BINIO_READ 0 #define BINIO_WRITE 1 using namespace std; class BinIO; class BinIOSerializable; class BinIOError { private: string m_txt; int m_pos; public: BinIOError(const string& txt, BinIO& io); ostream& write(ostream& os) const; }; inline ostream& operator<<(ostream& os, const BinIOError& err) { return err.write(os); } class BinIO { protected: int m_rdwr; ostream* m_os; istream* m_is; filebuf& m_fb; vector m_ser; public: BinIO(filebuf& fb, int rdwr); ~BinIO(); inline ostream& os() { return *m_os; } long getPosition(); void write(size_t val); #ifdef __APPLE__ void write(unsigned int val); #endif void write(int val); void write(char val); void write_char(char val); void write(const string& val); void write(const void* bytes, int size); void write(BinIOSerializable* ser); void ensure(char val, const char* errmsg); int check_version(int version, int exOnError); int check(char yes, char no, const char* errmsg); int read_int(); char read_char(); void read_str(string& str); void read(void* bytes, int size); int hasSerializable(); int addSerializable(BinIOSerializable* ser); inline BinIOSerializable* getSerializable(int idx) { return m_ser[idx]; } void cleanSIndices(); void close(); }; template class BinIOVector : public vector { public: void bin_write(BinIO& io) const { io.write('V'); io.write(this->size()); for (typename BinIOVector::const_iterator iter = this->begin(); iter != this->end(); iter++) { iter->bin_write(io); } } void bin_read(BinIO& io) { io.ensure('V', "Expected vector"); int size = io.read_int(); for (int i = 0; i < size; i++) { push_back(bin_read_elem(io)); } } ElemType bin_read_elem(BinIO& io); }; class BinIOSerializable { protected: int m_sindex; public: BinIOSerializable(); virtual ~BinIOSerializable(); inline int getSIndex() { return m_sindex; } inline void setSIndex(int idx) { m_sindex = idx; } void bin_write(BinIO& io); virtual void bin_write_impl(BinIO& io) = 0; }; BinIOSerializable* bin_read_serializable(BinIO& io, const string& key); BinIOSerializable* bin_read_serializable(BinIO& io); BinIOSerializable* try_bin_read_serializable(BinIO& io); BinIOSerializable* ptr_bin_read_serializable(BinIO& io); #endif gle-graphics-4.2.4c/src/gle/tokens/StringKeyHash.h0000664000000000000000000002507711720262226020501 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ #ifndef STRINGKEYHASH_H #define STRINGKEYHASH_H #ifndef _MSC_VER // Use hash table except when compiling with MSVC //#define GLE_USE_HASHTABLE #else #pragma warning( disable : 4996 ) #endif #define EXT_HASH #ifdef _MSC_VER #undef EXT_HASH #endif #ifdef GCC2 #undef EXT_HASH #endif #ifdef EXT_HASH // #include #else #ifdef _MSC_VER #include using namespace stdext; // typedef hash _Hash; #else #include #endif #endif #include #include #include #include #include #include #include using namespace std; #ifndef GCC2 #ifndef _MSC_VER using namespace __gnu_cxx; // using gnu extensions such as "hash" #endif #endif #include "RefCount.h" #include "BinIO.h" /************************************************************************************************** * Hash functions on strings * **************************************************************************************************/ #define SKEYHASH_DELETE 1 #define SKEYHASH_KEEP 0 typedef string name_hash_key; template class StringKeyPair : public pair { public: StringKeyPair(const name_hash_key key, ElemType value) : pair(key, value) { } }; template class IntKeyPair : public pair { public: IntKeyPair(int key, ElemType value) : pair(key, value) { } }; #ifdef GLE_USE_HASHTABLE struct eq_name_hash_key { inline bool operator() (const name_hash_key& s1, const name_hash_key& s2) const { return s1 == s2; } }; struct hash_name_hash_key { inline size_t operator() (const name_hash_key& s) const { #ifdef _MSC_VER return stdext::hash_value(s.c_str()); #else return hash()(s.c_str()); #endif } }; template class StringKeyIterator : public hash_map::iterator { }; struct eq_int_key { inline bool operator() (int s1, int s2) const { return s1 == s2; } }; struct hash_int_key { inline size_t operator() (int s) const { #ifdef _MSC_VER return stdext::hash_value(s); #else return hash()(s); #endif } }; template class IntKeyIterator : public hash_map::iterator { }; #else struct lt_name_hash_key { bool operator()(const name_hash_key& s1, const name_hash_key& s2) const { return s1 < s2; } }; struct lt_int_key { bool operator()(int s1, int s2) const { return s1 < s2; } }; #endif /************************************************************************************************** * Hashtable string -> ElemType * **************************************************************************************************/ template class StringBasicHash : #ifdef GLE_USE_HASHTABLE public hash_map { #else public map { #endif }; /************************************************************************************************** * Hashtable int -> ElemType * **************************************************************************************************/ template class IntBasicHash : #ifdef GLE_USE_HASHTABLE public hash_map { #else public map { #endif }; /************************************************************************************************** * Hashtable string -> int (currently not used, might be used for variables?) * **************************************************************************************************/ //#ifdef GLE_USE_HASHTABLE class StringIntHash : public StringBasicHash { public: int try_get(const name_hash_key& key) const; void add_item(const name_hash_key& key, int elem); }; //#endif /************************************************************************************************** * Hashtable string -> void* * **************************************************************************************************/ //#ifdef GLE_USE_HASHTABLE class StringVoidPtrHash : public StringBasicHash { public: void* try_get(const name_hash_key& key) const; void add_item(const name_hash_key& key, void* elem); void deleteRecursive(int depth); }; //#endif /************************************************************************************************** * Hashtable int -> int * **************************************************************************************************/ class IntIntHash : public IntBasicHash { public: int try_get(int key) const; void add_item(int key, int elem); }; /************************************************************************************************** * Hashtable int -> string * **************************************************************************************************/ class IntStringHash : public IntBasicHash { public: int try_get(int key, string* res) const; void add_item(int key, const string& elem); }; /************************************************************************************************** * Hashtable string -> ElemType (used by the GLE parser) * **************************************************************************************************/ template class StringKeyHash : #ifdef GLE_USE_HASHTABLE #ifdef _MSC_VER public hash_map > { #else public hash_map { #endif #else public map { #endif public: ElemType try_add(const name_hash_key& key) { typename StringKeyHash::iterator i = this->find(key); if (i != this->end()) { return i->second; } else { ElemType nelem(key); this->insert(StringKeyPair(key, nelem)); return nelem; } } ElemType try_get(const name_hash_key& key) { typename StringKeyHash::const_iterator i = this->find(key); if (i != this->end()) { return i->second; } else { return NULL; } } void add_item(const name_hash_key& key, const ElemType& elem) { insert(StringKeyPair(key, elem)); } ostream& write(ostream &os, int tab) const { for (typename StringKeyHash::const_iterator i = this->begin(); i != this->end(); i++ ) { cerr << i->first << endl; i->second.write(os, tab); } return os; } ostream& writeKeys(ostream &os) const { for (typename StringKeyHash::const_iterator i = this->begin(); i != this->end(); i++ ) { cerr << i->first << endl; } return os; } }; /************************************************************************************************** * Hashtable int -> ElemType * **************************************************************************************************/ template class IntKeyHash : #ifdef GLE_USE_HASHTABLE public hash_map { #else public map { #endif public: ElemType try_get(int key) { typename IntKeyHash::const_iterator i = this->find(key); if (i != this->end()) { return i->second; } else { return NULL; } } void add_item(int key, ElemType elem) { this->insert(IntKeyPair(key, elem)); } }; #endif // of #ifndef STRINGKEYHASH_H gle-graphics-4.2.4c/src/gle/bitmap/ascii85.cpp0000664000000000000000000001063311405446017017521 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ /* * 2004 Jan Struyf * * ASCII85 Encoding Support. * */ #include "../basicconf.h" #include "img2ps.h" #define PS_MAXLINE 36 static char* Ascii85Encode(unsigned char* raw) { static char encoded[6]; unsigned int word = (((raw[0]<<8)+raw[1])<<16) + (raw[2]<<8) + raw[3]; if (word != 0L) { unsigned int q; unsigned int w1; q = word / (85L*85*85*85); /* actually only a byte */ encoded[0] = q + '!'; word -= q * (85L*85*85*85); q = word / (85L*85*85); encoded[1] = q + '!'; word -= q * (85L*85*85); q = word / (85*85); encoded[2] = q + '!'; w1 = (unsigned int) ((word - q*(85L*85)) & 0xFFFF); encoded[3] = (w1 / 85) + '!'; encoded[4] = (w1 % 85) + '!'; encoded[5] = '\0'; } else { encoded[0] = 'z', encoded[1] = '\0'; } return encoded; } GLEASCII85ByteStream::GLEASCII85ByteStream(ostream* file) { m_File = file; m_BreakLength = 2*PS_MAXLINE; m_Count = 0; } int GLEASCII85ByteStream::sendByte(unsigned char code) { m_Buffer[m_Count++] = code; if (m_Count >= 4) { int n; unsigned char* p; for (n = m_Count, p = m_Buffer; n >= 4; n -= 4, p += 4) { char* cp; for (cp = Ascii85Encode(p); *cp; cp++) { m_File->put(*cp); if (--m_BreakLength == 0) { m_File->put('\n'); m_BreakLength = 2*PS_MAXLINE; } } } for (int i = 0; i < n; i++) { m_Buffer[i] = p[i]; } m_Count = n; } return GLE_IMAGE_ERROR_NONE; } int GLEASCII85ByteStream::term() { if (!isTerminated()) { if (m_Count > 0) { char* res; for (int i = 0; i < 3; i++) { m_Buffer[m_Count+i] = 0; } res = Ascii85Encode(m_Buffer); m_File->write(res[0] == 'z' ? "!!!!" : res, m_Count + 1); } *m_File << "~>" << endl; } return GLEByteStream::term(); } GLEASCII85ByteStream::~GLEASCII85ByteStream() { } gle-graphics-4.2.4c/src/gle/bitmap/glepng.cpp0000664000000000000000000001310211652073536017530 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ /* * 2004 Jan Struyf * */ #include "../basicconf.h" #include "img2ps.h" #ifdef HAVE_LIBPNG #include GLEPNG::GLEPNG() { m_PNGPtr = NULL; m_InfoPtr = NULL; m_EndInfo = NULL; } GLEPNG::~GLEPNG() { png_destroy_read_struct(&m_PNGPtr, &m_InfoPtr, &m_EndInfo); } #define GLEPNG_SIG_SIZE 8 int GLEPNG::readHeader() { GLEBYTE sig[GLEPNG_SIG_SIZE]; fread(sig, 1, GLEPNG_SIG_SIZE, m_In); if (png_sig_cmp(sig, 0, GLEPNG_SIG_SIZE)) { setError("invalid PNG file"); return GLE_IMAGE_ERROR_TYPE; } m_PNGPtr = png_create_read_struct(PNG_LIBPNG_VER_STRING, (png_voidp)NULL, NULL, NULL); if (!m_PNGPtr) { return GLE_IMAGE_ERROR_INTERN; } m_InfoPtr = png_create_info_struct(m_PNGPtr); if (!m_InfoPtr) { png_destroy_read_struct(&m_PNGPtr, (png_infopp)NULL, (png_infopp)NULL); return GLE_IMAGE_ERROR_INTERN; } m_EndInfo = png_create_info_struct(m_PNGPtr); if (!m_EndInfo) { png_destroy_read_struct(&m_PNGPtr, &m_InfoPtr, (png_infopp)NULL); return GLE_IMAGE_ERROR_INTERN; } png_init_io(m_PNGPtr, m_In); png_set_sig_bytes(m_PNGPtr, GLEPNG_SIG_SIZE); png_read_info(m_PNGPtr, m_InfoPtr); // Get most important parts from header m_Width = png_get_image_width(m_PNGPtr, m_InfoPtr); m_Height = png_get_image_height(m_PNGPtr, m_InfoPtr); m_BitsPerComponent = png_get_bit_depth(m_PNGPtr, m_InfoPtr); // Check if interlaced int interlace_type = png_get_interlace_type(m_PNGPtr, m_InfoPtr); if (interlace_type != PNG_INTERLACE_NONE) { setError("interlaced PNGs not yet supported"); return GLE_IMAGE_ERROR_DATA; } return GLE_IMAGE_ERROR_NONE; } int GLEPNG::prepare(int mode) { int color_type = png_get_color_type(m_PNGPtr, m_InfoPtr); if (color_type == PNG_COLOR_TYPE_PALETTE) { /* Palette image */ int num_palette; png_colorp palette; png_get_PLTE(m_PNGPtr, m_InfoPtr, &palette, &num_palette); rgb* pal = allocPalette(num_palette); for (int i = 0; i < num_palette; i++) { pal[i].red = palette[i].red; pal[i].green = palette[i].green; pal[i].blue = palette[i].blue; } setNbColors(num_palette); setMode(GLE_BITMAP_INDEXED); setComponents(1); if (m_BitsPerComponent < 8) { png_set_packing(m_PNGPtr); } checkGrayScalePalette(); } else if (color_type == PNG_COLOR_TYPE_GRAY || color_type == PNG_COLOR_TYPE_GRAY_ALPHA) { /* Grayscale image */ setMode(GLE_BITMAP_GRAYSCALE); setComponents(1); } else { /* RGB image */ setMode(GLE_BITMAP_RGB); setComponents(3); } if (color_type & PNG_COLOR_MASK_ALPHA) { setAlpha(true); setComponents(getComponents() + 1); setExtraComponents(1); } return GLE_IMAGE_ERROR_NONE; } int GLEPNG::decode(GLEByteStream* output) { int size = getScanlineSize(); GLEBYTE* scanline = new GLEBYTE[size]; for (int i = 0; i < getHeight(); i++) { png_read_row(m_PNGPtr, scanline, NULL); output->send(scanline, size); output->endScanLine(); } delete[] scanline; png_read_end(m_PNGPtr, m_EndInfo); return GLE_IMAGE_ERROR_NONE; } #endif gle-graphics-4.2.4c/src/gle/bitmap/lzwencode.h0000664000000000000000000000541211405446017017712 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ /* * 2004 Jan Struyf * */ #ifndef INC_LZWENCODE_H #define INC_LZWENCODE_H #endif gle-graphics-4.2.4c/src/gle/bitmap/Makefile.os20000664000000000000000000000553311405446017017715 0ustar rootroot######################################################################## # # # GLE - Graphics Layout Engine # # # # Modified BSD License # # # # Copyright (C) 2009 GLE. # # # # Redistribution and use in source and binary forms, with or without # # modification, are permitted provided that the following conditions # # are met: # # # # 1. Redistributions of source code must retain the above copyright # # notice, this list of conditions and the following disclaimer. # # # # 2. Redistributions in binary form must reproduce the above # # copyright notice, this list of conditions and the following # # disclaimer in the documentation and/or other materials provided with # # the distribution. # # # # 3. The name of the author may not be used to endorse or promote # # products derived from this software without specific prior written # # permission. # # # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR # # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY # # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE # # GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER # # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN # # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # # ######################################################################## # # makefile.gcc for GLE v4.0 # for compilation with gcc # # include ../../../config.i include ../../../config.os2 # include files.txt all: $(OBJECTS) $(OBJECTS): $(INCLUDES) clean: -$(RM) $(OBJECTS) gle-graphics-4.2.4c/src/gle/bitmap/glejpeg.cpp0000664000000000000000000001337111652073536017701 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ /* * 2004 Jan Struyf * */ #include "../basicconf.h" #include "img2ps.h" /* * JPEG */ #define M_SOF0 0xC0 #define M_SOF1 0xC1 #define M_SOF2 0xC2 #define M_SOF3 0xC3 #define M_SOF5 0xC5 #define M_SOF6 0xC6 #define M_SOF7 0xC7 #define M_SOF9 0xC9 #define M_SOF10 0xCA #define M_SOF11 0xCB #define M_SOF13 0xCD #define M_SOF14 0xCE #define M_SOF15 0xCF #define M_SOI 0xD8 #define M_EOI 0xD9 #define M_SOS 0xDA #define M_EXIF 0xE1 #define M_COM 0xFE #define M_TEM 0x01 #define M_RST0 0xD0 #define M_RST7 0xD7 GLEJPEG::GLEJPEG() : GLEFileBitmap() { m_Encoding = GLE_BITMAP_JPEG; } GLEJPEG::~GLEJPEG() { } int GLEJPEG::readImageSize() { m_BitsPerComponent = fgetc(m_In); m_Height = read16BE(); m_Width = read16BE(); m_Components = fgetc(m_In); if (m_Components == 1) { setMode(GLE_BITMAP_GRAYSCALE); } else { setMode(GLE_BITMAP_RGB); } return GLE_IMAGE_ERROR_NONE; } int GLEJPEG::checkJPG() { if (m_BitsPerComponent != 8) { stringstream str; str << "unsupported number of bits/component: " << m_BitsPerComponent << " <> 8"; setError(str.str()); return GLE_IMAGE_ERROR_DATA; } if (m_Components != 1 && m_Components != 3 && m_Components != 4) { stringstream str; str << "unsupported number of components: " << m_BitsPerComponent << " (should be 1, 3, or 4)"; setError(str.str()); return GLE_IMAGE_ERROR_DATA; } return GLE_IMAGE_ERROR_NONE; } int GLEJPEG::readHeader() { char markstr[20]; while (!feof(m_In)) { /* Skip padding at start of section */ int marker = 0; int nbpadding = 0; while (true) { marker = fgetc(m_In); if (feof(m_In)) { setError("SOF marker not found"); return GLE_IMAGE_ERROR_DATA; } if (marker != 0xff) { break; } else { nbpadding++; } } if (nbpadding == 0) { sprintf(markstr, "0x%X", marker); setError(string("no 0xFF before marker: ") +markstr); return GLE_IMAGE_ERROR_DATA; } /* Just before section */ if (marker == M_SOI || marker == M_EOI || marker == M_TEM || (marker >= M_RST0 && marker <= M_RST7)) { continue; } /* Start of scan found */ if (marker == M_SOS) { setError("start of scan comes before SOF marker"); return GLE_IMAGE_ERROR_DATA; } /* Read section length */ int crpos = ftell(m_In); int size = read16BE(); if (size < 2) { sprintf(markstr, "0x%X", marker); setError(string("size error for block with marker: ") +markstr); return GLE_IMAGE_ERROR_DATA; } /* Size info? */ switch (marker) { case M_SOF0: case M_SOF1: case M_SOF2: case M_SOF3: case M_SOF5: case M_SOF6: case M_SOF7: case M_SOF9: case M_SOF10: case M_SOF11: case M_SOF13: case M_SOF14: case M_SOF15: readImageSize(); return checkJPG(); } /* Skip till after section */ fseek(m_In, crpos+size, SEEK_SET); } setError("SOF marker not found"); return GLE_IMAGE_ERROR_DATA; } int GLEJPEG::coded(GLEByteStream* output) { fseek(m_In, 0, SEEK_SET); while (true) { int nextByte = fgetc(m_In); if (nextByte == EOF) { break; } else { output->sendByte((GLEBYTE)nextByte); } } return GLE_IMAGE_ERROR_NONE; } gle-graphics-4.2.4c/src/gle/bitmap/lzwencode.cpp0000664000000000000000000002541511405446017020252 0ustar rootroot /* * Rev 5.0 Lempel-Ziv & Welch Compression Support * Based on the LZW compression code from libtiff * * Copyright (c) 1985, 1986 The Regents of the University of California. * All rights reserved. * * This code is derived from software contributed to Berkeley by * James A. Woods, derived from original work by Spencer Thomas * and Joseph Orost. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * advertising materials, and other materials related to such * distribution and use acknowledge that the software was developed * by the University of California, Berkeley. The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ #include "../basicconf.h" #include "img2ps.h" GLELZWByteStream::GLELZWByteStream(GLEByteStream* pipe) : GLEPipedByteStream(pipe) { m_RawDatasize = 4096; m_RawData = (GLEBYTE*)malloc(m_RawDatasize); m_RawCP = m_RawData; m_RawCC = 0; if (init() && setupEncode() && preEncode()) { m_State = GLE_IMAGE_ERROR_NONE; } else { cleanUp(); } } GLELZWByteStream::~GLELZWByteStream() { cleanUp(); if (m_RawData != NULL) { free(m_RawData); } } int GLELZWByteStream::send(GLEBYTE* bytes, GLEDWORD count) { if (encode(bytes, count)) { return GLE_IMAGE_ERROR_NONE; } else { return GLE_IMAGE_ERROR_DATA; } } int GLELZWByteStream::sendByte(GLEBYTE byte) { if (encode(&byte, 1)) { return GLE_IMAGE_ERROR_NONE; } else { return GLE_IMAGE_ERROR_DATA; } } int GLELZWByteStream::term() { if (!postEncode()) return GLE_IMAGE_ERROR_DATA; cleanUp(); if (!flushData()) return GLE_IMAGE_ERROR_DATA; return GLEPipedByteStream::term(); } int GLELZWByteStream::flushData() { if (m_RawCC > 0) { m_Pipe->send(m_RawData, m_RawCC); // FIXME return 0 depending on error code of send m_RawCC = 0; m_RawCP = m_RawData; } return 1; } #define MAXCODE(n) ((1L<<(n))-1) #define BITS_MIN 9 /* start with 9 bits */ #define BITS_MAX 12 /* max of 12 bit strings */ #define CODE_CLEAR 256 /* code to clear string table */ #define CODE_EOI 257 /* end-of-information code */ #define CODE_FIRST 258 /* first free code entry */ #define CODE_MAX MAXCODE(BITS_MAX) #define HSIZE 9001L /* 91% occupancy */ #define HSHIFT (13-8) /* NB: +1024 is for compatibility with old files */ #define CSIZE (MAXCODE(BITS_MAX)+1024L) typedef struct { unsigned short nbits; /* # of bits/code */ unsigned short maxcode; /* maximum code for lzw_nbits */ unsigned short free_ent; /* next free entry in hash table */ long nextdata; /* next bits of i/o */ long nextbits; /* # of valid bits in lzw_nextdata */ } LZWBaseState; #define lzw_nbits base.nbits #define lzw_maxcode base.maxcode #define lzw_free_ent base.free_ent #define lzw_nextdata base.nextdata #define lzw_nextbits base.nextbits typedef unsigned short hcode_t; /* codes fit in 16 bits */ typedef struct { long hash; hcode_t code; } hash_t; typedef struct { LZWBaseState base; int enc_oldcode; /* last code encountered */ long enc_checkpoint; /* point at which to clear table */ #define CHECK_GAP 10000 /* enc_ratio check interval */ long enc_ratio; /* current compression ratio */ long enc_incount; /* (input) data bytes encoded */ long enc_outcount; /* encoded (output) bytes */ GLEBYTE* enc_rawlimit; /* bound on m_RawData buffer */ hash_t* enc_hashtab; /* kept separate for small machines */ } encodeState; static void GLELZWEncoderClearHash(encodeState* sp) { register hash_t *hp = &sp->enc_hashtab[HSIZE-1]; register long i = HSIZE-8; do { i -= 8; hp[-7].hash = -1; hp[-6].hash = -1; hp[-5].hash = -1; hp[-4].hash = -1; hp[-3].hash = -1; hp[-2].hash = -1; hp[-1].hash = -1; hp[ 0].hash = -1; hp -= 8; } while (i >= 0); for (i += 8; i > 0; i--, hp--) { hp->hash = -1; } } int GLELZWByteStream::setupEncode() { encodeState* sp = (encodeState*)m_Data; sp->enc_hashtab = (hash_t*) malloc(HSIZE*sizeof (hash_t)); if (sp->enc_hashtab == NULL) { return 0; } return 1; } int GLELZWByteStream::preEncode() { encodeState *sp = (encodeState*)m_Data; sp->lzw_nbits = BITS_MIN; sp->lzw_maxcode = MAXCODE(BITS_MIN); sp->lzw_free_ent = CODE_FIRST; sp->lzw_nextbits = 0; sp->lzw_nextdata = 0; sp->enc_checkpoint = CHECK_GAP; sp->enc_ratio = 0; sp->enc_incount = 0; sp->enc_outcount = 0; /* * The 4 here insures there is space for 2 max-sized * codes in encode and LZWPostDecode. */ sp->enc_rawlimit = m_RawData + m_RawDatasize-1 - 4; GLELZWEncoderClearHash(sp); sp->enc_oldcode = (hcode_t) -1; /* generates CODE_CLEAR in encode */ return 1; } #define CALCRATIO(sp, rat) { \ if (incount > 0x007fffff) { /* NB: shift will overflow */ \ rat = outcount >> 8; \ rat = (rat == 0 ? 0x7fffffff : incount/rat); \ } else \ rat = (incount<<8) / outcount; \ } #define PutNextCode(op, c) { \ nextdata = (nextdata << nbits) | c; \ nextbits += nbits; \ *op++ = (unsigned char)(nextdata >> (nextbits-8)); \ nextbits -= 8; \ if (nextbits >= 8) { \ *op++ = (unsigned char)(nextdata >> (nextbits-8)); \ nextbits -= 8; \ } \ outcount += nbits; \ } /* * Encode a chunk of pixels. * * Uses an open addressing double hashing (no chaining) on the * prefix code/next character combination. We do a variant of * Knuth's algorithm D (vol. 3, sec. 6.4) along with G. Knott's * relatively-prime secondary probe. Here, the modular division * first probe is gives way to a faster exclusive-or manipulation. * Also do block compression with an adaptive reset, whereby the * code table is cleared when the compression ratio decreases, * but after the table fills. The variable-length output codes * are re-sized at this point, and a CODE_CLEAR is generated * for the decoder. */ int GLELZWByteStream::encode(GLEBYTE* bp, GLEDWORD cc) { register encodeState *sp = (encodeState*)m_Data; register long fcode; register hash_t *hp; register int h, c; hcode_t ent; long disp; long incount, outcount, checkpoint; long nextdata, nextbits; int free_ent, maxcode, nbits; GLEBYTE* op, *limit; if (sp == NULL) return 0; /* * Load local state. */ incount = sp->enc_incount; outcount = sp->enc_outcount; checkpoint = sp->enc_checkpoint; nextdata = sp->lzw_nextdata; nextbits = sp->lzw_nextbits; free_ent = sp->lzw_free_ent; maxcode = sp->lzw_maxcode; nbits = sp->lzw_nbits; op = m_RawCP; limit = sp->enc_rawlimit; ent = sp->enc_oldcode; if (ent == (hcode_t) -1 && cc > 0) { /* * NB: This is safe because it can only happen * at the start of a strip where we know there * is space in the data buffer. */ PutNextCode(op, CODE_CLEAR); ent = *bp++; cc--; incount++; } while (cc > 0) { c = *bp++; cc--; incount++; fcode = ((long)c << BITS_MAX) + ent; h = (c << HSHIFT) ^ ent; /* xor hashing */ // #ifdef _WINDOWS // /* // * Check hash index for an overflow. // */ // if (h >= HSIZE) // h -= HSIZE; // #endif hp = &sp->enc_hashtab[h]; if (hp->hash == fcode) { ent = hp->code; continue; } if (hp->hash >= 0) { /* * Primary hash failed, check secondary hash. */ disp = HSIZE - h; if (h == 0) disp = 1; do { /* * Avoid pointer arithmetic 'cuz of * wraparound problems with segments. */ if ((h -= disp) < 0) h += HSIZE; hp = &sp->enc_hashtab[h]; if (hp->hash == fcode) { ent = hp->code; goto hit; } } while (hp->hash >= 0); } /* * New entry, emit code and add to table. */ /* * Verify there is space in the buffer for the code * and any potential Clear code that might be emitted * below. The value of limit is setup so that there * are at least 4 bytes free--room for 2 codes. */ if (op > limit) { m_RawCC = (GLEDWORD)(op - m_RawData); flushData(); op = m_RawData; } PutNextCode(op, ent); ent = c; hp->code = free_ent++; hp->hash = fcode; if (free_ent == CODE_MAX-1) { /* table is full, emit clear code and reset */ GLELZWEncoderClearHash(sp); sp->enc_ratio = 0; incount = 0; outcount = 0; free_ent = CODE_FIRST; PutNextCode(op, CODE_CLEAR); nbits = BITS_MIN; maxcode = MAXCODE(BITS_MIN); } else { /* * If the next entry is going to be too big for * the code size, then increase it, if possible. */ if (free_ent > maxcode) { nbits++; // assert(nbits <= BITS_MAX); maxcode = (int) MAXCODE(nbits); } else if (incount >= checkpoint) { long rat; /* * Check compression ratio and, if things seem * to be slipping, clear the hash table and * reset state. The compression ratio is a * 24+8-bit fractional number. */ checkpoint = incount+CHECK_GAP; CALCRATIO(sp, rat); if (rat <= sp->enc_ratio) { GLELZWEncoderClearHash(sp); sp->enc_ratio = 0; incount = 0; outcount = 0; free_ent = CODE_FIRST; PutNextCode(op, CODE_CLEAR); nbits = BITS_MIN; maxcode = MAXCODE(BITS_MIN); } else { sp->enc_ratio = rat; } } } hit: ; } /* * Restore global state. */ sp->enc_incount = incount; sp->enc_outcount = outcount; sp->enc_checkpoint = checkpoint; sp->enc_oldcode = ent; sp->lzw_nextdata = nextdata; sp->lzw_nextbits = nextbits; sp->lzw_free_ent = free_ent; sp->lzw_maxcode = maxcode; sp->lzw_nbits = nbits; m_RawCP = op; return 1; } /* * Finish off an encoded strip by flushing the last * string and tacking on an End Of Information code. */ int GLELZWByteStream::postEncode() { register encodeState *sp = (encodeState*)m_Data; GLEBYTE* op = m_RawCP; long nextbits = sp->lzw_nextbits; long nextdata = sp->lzw_nextdata; long outcount = sp->enc_outcount; int nbits = sp->lzw_nbits; if (op > sp->enc_rawlimit) { m_RawCC = (GLEDWORD)(op - m_RawData); flushData(); op = m_RawData; } if (sp->enc_oldcode != (hcode_t) -1) { PutNextCode(op, sp->enc_oldcode); sp->enc_oldcode = (hcode_t) -1; } PutNextCode(op, CODE_EOI); if (nextbits > 0) { *op++ = (unsigned char)(nextdata << (8-nextbits)); } m_RawCC = (GLEDWORD)(op - m_RawData); return 1; } void GLELZWByteStream::cleanUp() { if (m_Data != NULL) { if (((encodeState*)m_Data)->enc_hashtab != NULL) { free(((encodeState*)m_Data)->enc_hashtab); } free(m_Data); m_Data = NULL; } } int GLELZWByteStream::init() { m_Data = (GLEBYTE*) malloc(sizeof (encodeState)); if (m_Data == NULL) { return 0; } ((encodeState*)m_Data)->enc_hashtab = NULL; return 1; } gle-graphics-4.2.4c/src/gle/bitmap/Makefile.vc0000664000000000000000000000551111447671544017631 0ustar rootroot######################################################################## # # # GLE - Graphics Layout Engine # # # # Modified BSD License # # # # Copyright (C) 2009 GLE. # # # # Redistribution and use in source and binary forms, with or without # # modification, are permitted provided that the following conditions # # are met: # # # # 1. Redistributions of source code must retain the above copyright # # notice, this list of conditions and the following disclaimer. # # # # 2. Redistributions in binary form must reproduce the above # # copyright notice, this list of conditions and the following # # disclaimer in the documentation and/or other materials provided with # # the distribution. # # # # 3. The name of the author may not be used to endorse or promote # # products derived from this software without specific prior written # # permission. # # # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR # # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY # # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE # # GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER # # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN # # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # # ######################################################################## # # makefile.vc for GLE v4.0 # for compilation with MS vc++ .net # # !include ..\..\..\config.vc # !include files.txt all: $(OBJECTS) $(OBJECTS): $(INCLUDES) clean: -erase $(OBJECTS) gle-graphics-4.2.4c/src/gle/bitmap/img2ps.cpp0000664000000000000000000004252411720262226017457 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ /* * 2004 Jan Struyf * */ #include "../basicconf.h" #include "../gprint.h" #include "img2ps.h" GLEBitmap::GLEBitmap() { m_Height = 0; m_Width = 0; m_Mode = GLE_BITMAP_NONE; m_Components = 1; m_ExtraComponents = 0; m_Colors = 0; m_Interlaced = 0; m_Palette = NULL; m_ASCII85 = 0; m_Compress = 0; m_Alpha = 0; m_Encoding = GLE_BITMAP_LZW; m_BitsPerComponent = 8; } GLEBitmap::~GLEBitmap() { close(); if (m_Palette != NULL) { delete[] m_Palette; } } int GLEBitmap::open(const string& fname) { return 0; } int GLEBitmap::readHeader() { return 0; } int GLEBitmap::toPS(ostream* fp) { // Init image, set transformations, possibly load palette prepare(GLE_BITMAP_PREPARE_SCANLINE); // Variables const char* coder = "/ASCII85Decode filter"; const char* encoder; int width = m_Width; int height = m_Height; int colors = getNbColors(); int bits = getBitsPerComponent(); if (getEncoding() == GLE_BITMAP_LZW) { encoder = "/LZWDecode"; } else { encoder = "/DCTDecode"; } *fp << "save 9 dict begin" << endl; *fp << "{/T currentfile" << coder << " def" << endl; if (isIndexed()) { *fp << "[/Indexed/DeviceRGB " << (colors-1) << " T " << (colors*3) << " string readstring pop]"; } else if (isGrayScale()) { *fp << "/DeviceGray"; } else { *fp << "/DeviceRGB"; } *fp << " setcolorspace" << endl; *fp << "/F T" << encoder << " filter def" << endl; *fp << "<> image" << endl; *fp << "F closefile T closefile}" << endl; *fp << "exec" << endl; GLEASCII85ByteStream ascii85(fp); // Store palette for indexed image if (isIndexed()) { rgb* pal = getPalette(); for (int i = 0; i < colors; i++) { ascii85.sendByte(pal[i].red); ascii85.sendByte(pal[i].green); ascii85.sendByte(pal[i].blue); } } // Encode image GLEByteStream* stream = NULL; if (getEncoding() == GLE_BITMAP_LZW) { GLELZWByteStream lzw(&ascii85); // Remove extra components? int extra = getExtraComponents(); int color_alpha = getColorComponents(); if (isAlpha()) { // Do not count alpha as extra component extra--; color_alpha++; } GLEComponentRemovalByteStream crem(&lzw, color_alpha, extra); if (extra != 0) { stream = &crem; } else { stream = &lzw; } // Remove alpha? GLEAlphaRemovalByteStream alpha(stream, color_alpha); if (isAlpha()) stream = α // Combine more than one pixel in each byte? GLEPixelCombineByteStream combine(stream, bits); if (bits < 8) stream = &combine; // Decode decode(stream); stream->term(); } else { coded(&ascii85); } // End ascii85.term(); *fp << "end restore" << endl; return 0; } int GLEBitmap::decode(GLEByteStream* output) { return GLE_IMAGE_ERROR_NOT_IMPL; } int GLEBitmap::coded(GLEByteStream* output) { return GLE_IMAGE_ERROR_NOT_IMPL; } void GLEBitmap::loadImageData() { } int GLEBitmap::prepare(int mode) { return GLE_IMAGE_ERROR_NONE; } rgb* GLEBitmap::allocPalette(int ncolors) { if (m_Palette != NULL) { delete[] m_Palette; } m_Palette = new rgb[ncolors]; return m_Palette; } int GLEBitmap::getScanlineSize() { int bytespc = getBitsPerComponent()/8; if (bytespc < 1) bytespc = 1; return getWidth()*getComponents()*bytespc; } int GLEBitmap::getColorComponents() { return getComponents() - getExtraComponents(); } int GLEBitmap::getMaxBits() { if (isIndexed()) { if (m_Colors > 16) { /* More than 16 colors -> 8 bits (5,6,7 bits are not supported by postscript!) */ return 8; } else if (m_Colors >= 5) { /* At most 16 colors */ return 4; } else if (m_Colors >= 3) { /* At most 4 colors */ return 2; } else { /* Monochrome bitmap */ return 1; } } else { return 8; } } void GLEBitmap::checkGrayScalePalette() { rgb* pal = getPalette(); if (getNbColors() == 256) { int nogray = 0; for (int i = 0; i < 256; i++) { if (pal[i].red != i || pal[i].green != i || pal[i].blue != i) { nogray = 1; } } if (nogray == 0) { setMode(GLE_BITMAP_GRAYSCALE); setBitsPerComponent(8); } } else if (getNbColors() == 2) { if (pal[0].red == 0 && pal[0].green == 0 && pal[0].blue == 0 && pal[1].red == 255 && pal[1].green == 255 && pal[1].blue == 255) { setMode(GLE_BITMAP_GRAYSCALE); setBitsPerComponent(1); } } } void GLEBitmap::printInfo(ostream& os) { os << getWidth(); os << "x"; os << getHeight(); os << "x"; os << getBitsPerComponent() * getComponents(); switch (getMode()) { case GLE_BITMAP_GRAYSCALE: os << "-GRAY"; break; case GLE_BITMAP_RGB: os << "-RGB"; break; case GLE_BITMAP_INDEXED: os << "-PAL:" << getNbColors(); break; } } void GLEBitmap::close() { } GLEFileBitmap::GLEFileBitmap() { m_In = NULL; m_Palette = NULL; } GLEFileBitmap::~GLEFileBitmap() { close(); } int GLEFileBitmap::open(const string& fname) { setFName(fname); m_In = fopen(fname.c_str(), "rb"); if (m_In == NULL) { return 0; } else { return 1; } } int GLEFileBitmap::read16BE() { int lh = fgetc(m_In); int ll = fgetc(m_In); return (lh << 8) | ll; } int GLEFileBitmap::read16LE() { int lh = fgetc(m_In); int ll = fgetc(m_In); return (ll << 8) | lh; } void GLEFileBitmap::close() { if (m_In != NULL) { fclose(m_In); m_In = NULL; } } GLEByteStream::GLEByteStream() { m_Terminated = 0; } GLEByteStream::~GLEByteStream() { } int GLEByteStream::send(GLEBYTE* bytes, GLEDWORD count) { for (unsigned int i = 0; i < count; i++) { sendByte(bytes[i]); } return GLE_IMAGE_ERROR_NONE; } int GLEByteStream::term() { m_Terminated = 1; return GLE_IMAGE_ERROR_NONE; } int GLEByteStream::endScanLine() { return GLE_IMAGE_ERROR_NONE; } GLERecordedByteStream::GLERecordedByteStream() { } GLERecordedByteStream::~GLERecordedByteStream() { } int GLERecordedByteStream::sendByte(GLEBYTE byte) { m_bytes.push_back(byte); return GLE_IMAGE_ERROR_NONE; } unsigned long GLERecordedByteStream::getNbBytes() const { return (unsigned long)m_bytes.size(); } GLEBYTE* GLERecordedByteStream::getBytes() { if (m_bytes.empty()) { return 0; } else { return &m_bytes[0]; } } GLEPipedByteStream::GLEPipedByteStream(GLEByteStream* pipe): GLEByteStream() { m_Pipe = pipe; } GLEPipedByteStream::~GLEPipedByteStream() { } int GLEPipedByteStream::endScanLine() { m_Pipe->endScanLine(); return GLEByteStream::endScanLine(); } int GLEPipedByteStream::term() { m_Pipe->term(); return GLEByteStream::term(); } GLEPNegateByteStream::GLEPNegateByteStream(GLEByteStream* pipe): GLEPipedByteStream(pipe) { } GLEPNegateByteStream::~GLEPNegateByteStream() { } int GLEPNegateByteStream::sendByte(GLEBYTE byte) { m_Pipe->sendByte(~byte); return GLE_IMAGE_ERROR_NONE; } GLEIndexedToRGBByteStream::GLEIndexedToRGBByteStream(GLEByteStream* pipe, rgb* palette): GLEPipedByteStream(pipe), m_palette(palette) { } GLEIndexedToRGBByteStream::~GLEIndexedToRGBByteStream() { } int GLEIndexedToRGBByteStream::sendByte(GLEBYTE byte) { rgb values(m_palette[byte]); m_Pipe->sendByte(values.red); m_Pipe->sendByte(values.green); m_Pipe->sendByte(values.blue); return GLE_IMAGE_ERROR_NONE; } GLERGBATo32BitByteStream::GLERGBATo32BitByteStream(GLEByteStream* pipe, bool isAlpha): GLEPipedByteStream(pipe), m_index(0), m_nbComponents(isAlpha ? 4 : 3) { } GLERGBATo32BitByteStream::~GLERGBATo32BitByteStream() { } int GLERGBATo32BitByteStream::sendByte(GLEBYTE byte) { m_components[m_index++] = byte; if (m_index == m_nbComponents) { unsigned int value = ((unsigned int)m_components[0]) << 16 | ((unsigned int)m_components[1]) << 8 | ((unsigned int)m_components[2]); if (m_nbComponents == 4) { value |= ((unsigned int)m_components[3]) << 24; } const char* valueAsBytes = (const char*)&value; for (unsigned int i = 0; i < sizeof(unsigned int); ++i) { m_Pipe->sendByte(valueAsBytes[i]); } m_index = 0; } return GLE_IMAGE_ERROR_NONE; } int GLERGBATo32BitByteStream::endScanLine() { m_index = 0; return GLEPipedByteStream::endScanLine(); } GLEPixelCombineByteStream::GLEPixelCombineByteStream(GLEByteStream* pipe, int bpc) : GLEPipedByteStream(pipe) { m_BitsPerComponent = bpc; m_BitsLeft = 8; m_Combined = 0; } GLEPixelCombineByteStream::~GLEPixelCombineByteStream() { } int GLEPixelCombineByteStream::flushBufferByte() { m_Pipe->sendByte(m_Combined); m_BitsLeft = 8; m_Combined = 0; return GLE_IMAGE_ERROR_NONE; } int GLEPixelCombineByteStream::sendByte(GLEBYTE byte) { if (m_BitsLeft >= m_BitsPerComponent) { /* Still fits in */ m_Combined |= byte << (m_BitsLeft - m_BitsPerComponent); m_BitsLeft -= m_BitsPerComponent; } else { /* Does not fit in */ int left = m_BitsPerComponent - m_BitsLeft; m_Combined |= byte >> left; flushBufferByte(); m_Combined |= byte << (m_BitsLeft - left); m_BitsLeft -= left; } if (m_BitsLeft == 0) flushBufferByte(); return GLE_IMAGE_ERROR_NONE; } int GLEPixelCombineByteStream::endScanLine() { if (m_BitsLeft != 8) flushBufferByte(); return GLEPipedByteStream::endScanLine(); } int GLEPixelCombineByteStream::term() { if (m_BitsLeft != 8) flushBufferByte(); return GLEPipedByteStream::term(); } GLEBitsTo32BitByteStream::GLEBitsTo32BitByteStream(GLEByteStream* pipe) : GLEPipedByteStream(pipe) { m_bitsLeft = 32; m_combined = 0; } GLEBitsTo32BitByteStream::~GLEBitsTo32BitByteStream() { } int GLEBitsTo32BitByteStream::flushBufferByte() { const char* valueAsBytes = (const char*)&m_combined; for (unsigned int i = 0; i < sizeof(unsigned int); ++i) { m_Pipe->sendByte(valueAsBytes[i]); } m_bitsLeft = 32; m_combined = 0; return GLE_IMAGE_ERROR_NONE; } int GLEBitsTo32BitByteStream::sendByte(GLEBYTE byte) { if (m_bitsLeft > 0) { m_combined |= ((unsigned int)byte) << (32 - m_bitsLeft); m_bitsLeft--; } if (m_bitsLeft == 0) { flushBufferByte(); } return GLE_IMAGE_ERROR_NONE; } int GLEBitsTo32BitByteStream::endScanLine() { if (m_bitsLeft != 32) flushBufferByte(); return GLEPipedByteStream::endScanLine(); } int GLEBitsTo32BitByteStream::term() { if (m_bitsLeft != 32) flushBufferByte(); return GLEPipedByteStream::term(); } GLEComponentRemovalByteStream::GLEComponentRemovalByteStream(GLEByteStream* pipe, int main, int remove) : GLEPipedByteStream(pipe) { m_Index = 0; m_Removed = 0; m_Main = main; m_Total = main+remove; } GLEComponentRemovalByteStream::~GLEComponentRemovalByteStream() { } int GLEComponentRemovalByteStream::sendByte(GLEBYTE byte) { if (m_Index < m_Main) { m_Pipe->sendByte(byte); } else { m_Removed++; } m_Index++; if (m_Index >= m_Total) { m_Index = 0; } return GLE_IMAGE_ERROR_NONE; } int GLEComponentRemovalByteStream::endScanLine() { m_Index = 0; return GLEPipedByteStream::endScanLine(); } GLEAlphaRemovalByteStream::GLEAlphaRemovalByteStream(GLEByteStream* pipe, int components) : GLEPipedByteStream(pipe) { m_Components = components-1; m_Index = 0; // Do not support images with more channels if (m_Components > GLE_BITMAP_MAX_COMPONENTS) { m_Components = GLE_BITMAP_MAX_COMPONENTS; } } GLEAlphaRemovalByteStream::~GLEAlphaRemovalByteStream() { } int GLEAlphaRemovalByteStream::sendByte(GLEBYTE byte) { if (m_Index >= m_Components) { unsigned int adjust = 255-byte; for (int i = 0; i < m_Components; i++) { unsigned int output = (unsigned int)m_Buffer[i] + adjust; if (output >= 0xFF) m_Pipe->sendByte(0xFF); else m_Pipe->sendByte((GLEBYTE)output); } m_Index = 0; } else { m_Buffer[m_Index++] = byte; } return GLE_IMAGE_ERROR_NONE; } int GLEAlphaRemovalByteStream::endScanLine() { m_Index = 0; return GLEPipedByteStream::endScanLine(); } BicubicIpolData::BicubicIpolData() { } BicubicIpolData::~BicubicIpolData() { } BicubicIpolDoubleMatrix::BicubicIpolDoubleMatrix(double* data, int wd, int hi) { m_X0 = m_Y0 = 0; m_DW = m_Width = wd; m_DH = m_Height = hi; m_Data = data; } BicubicIpolDoubleMatrix::~BicubicIpolDoubleMatrix() { } void BicubicIpolDoubleMatrix::setWindow(int x0, int y0, int x1, int y1) { m_X0 = x0; m_Y0 = y0; m_Width = x1 - x0 + 1; m_Height = y1 - y0 + 1; } double BicubicIpolDoubleMatrix::getValue(int x, int y) { x += m_X0; y += m_Y0; if (x < 0) x = 0; if (x >= m_DW) x = m_DW-1; if (y < 0) y = 0; if (y >= m_DH) y = m_DH-1; return m_Data[y*m_DW + x]; } BicubicIpol::BicubicIpol(BicubicIpolData* data, int sw, int sh) { m_Data = data; m_SWidth = sw; m_SHeight = sh; m_Width = data->getWidth(); m_Height = data->getHeight(); m_SX = (double)m_Width / m_SWidth; m_SY = (double)m_Height / m_SHeight; } double BicubicIpol::R(double x) { double v; double sum = 0.0; v = x + 2; if (v > 0) sum += v*v*v; v = x + 1; if (v > 0) sum -= 4*v*v*v; if (x > 0) sum += 6*x*x*x; v = x - 1; if (v > 0) sum -= 4*v*v*v; return sum/6.0; } double BicubicIpol::ipol(int xp, int yp) { double x = xp * m_SX; double y = yp * m_SY; int i = (int)floor(x); int j = (int)floor(y); double dx = x - i; double dy = y - j; double value = 0; for (int m = -1; m <= 2; m++) { int xo = i + m; double rx = R(m-dx); for (int n = -1; n <= 2; n++) { int yo = j + n; value += m_Data->getValue(xo, yo) * rx * R(dy-n); } } return value; } void GLEBitmapSetPalette(GLEBYTE* pal, int offs, double red, double green, double blue) { int i_red = (int)floor(red*255+0.5); int i_green = (int)floor(green*255+0.5); int i_blue = (int)floor(blue*255+0.5); if (i_red > 255) i_red = 255; if (i_green > 255) i_green = 255; if (i_blue > 255) i_blue = 255; if (i_red < 0) i_red = 0; if (i_green < 0) i_green = 0; if (i_blue < 0) i_blue = 0; pal[offs*3] = i_red; pal[offs*3+1] = i_green; pal[offs*3+2] = i_blue; } GLEBYTE* GLEBitmapCreateColorPalette(int nc) { int offset = 1; int nintervals = 6; int divisor = 3; int num = nc-offset; int n = (num / (nintervals*divisor))*divisor; nc = n*nintervals+offset; GLEBYTE* result = new GLEBYTE[nc*3]; double ninv = 1.0/n; int n3 = n/3; int n23 = 2*n3; double third = n3*ninv; double twothirds = n23*ninv; for (int i = 0; i < n3; ++i) { double ininv = i*ninv; GLEBitmapSetPalette(result, i, ininv, 0.0, ininv); GLEBitmapSetPalette(result, n3+i, third, 0.0, third+ininv); GLEBitmapSetPalette(result, n23+i, third-ininv, 0.0, twothirds+ininv); } for (int i = 0; i < n; ++i) { double ininv = i*ninv; double ininv1 = 1.0-ininv; GLEBitmapSetPalette(result, n+i, 0.0, ininv, 1.0); GLEBitmapSetPalette(result, 2*n+i, 0.0, 1.0, ininv1); GLEBitmapSetPalette(result, 3*n+i, ininv, 1.0, 0.0); GLEBitmapSetPalette(result, 4*n+i, 1.0, ininv1, 0.0); GLEBitmapSetPalette(result, 5*n+i, 1.0, ininv, ininv); } GLEBitmapSetPalette(result, 6*n, 1.0, 1.0, 1.0); return result; } gle-graphics-4.2.4c/src/gle/bitmap/img2ps.h0000664000000000000000000003076711720262226017132 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ #ifndef INC_IMG2PS_H #define INC_IMG2PS_H /* * 2004 Jan Struyf * * Still busy implementing - import of JPEG, GIF and TIFF should work to some extend * If you encounter problems, please contact the GLE list */ #ifdef HAVE_LIBTIFF #include #endif #ifdef HAVE_LIBPNG #include #endif #define GLE_BITMAP_INDEXED 1 #define GLE_BITMAP_GRAYSCALE 2 #define GLE_BITMAP_RGB 3 #define GLE_IMAGE_ERROR_NONE 0 #define GLE_IMAGE_ERROR_DATA 1 #define GLE_IMAGE_ERROR_FILE 2 #define GLE_IMAGE_ERROR_TYPE 3 #define GLE_IMAGE_ERROR_INTERN 4 #define GLE_IMAGE_ERROR_NOT_IMPL 10 #define GLE_BITMAP_NONE 0 #define GLE_BITMAP_LZW 1 #define GLE_BITMAP_JPEG 2 #define GLE_BITMAP_PREPARE_SCANLINE 0 #define GLE_BITMAP_MAX_COMPONENTS 3 #define CVT16TO8(x) (((x) * 255) / ((1L<<16)-1)) typedef unsigned char GLEBYTE; typedef unsigned int GLEDWORD; typedef struct { unsigned char red; unsigned char green; unsigned char blue; } rgb; class GLEByteStream; class GLEBitmap { protected: string m_FName; string m_Error; int m_Height; int m_Width; char m_Mode; int m_Components; int m_ExtraComponents; int m_Colors; char m_Encoding; char m_Interlaced; char m_Alpha; int m_BitsPerComponent; rgb* m_Palette; int m_ASCII85; double m_Compress; public: GLEBitmap(); virtual ~GLEBitmap(); inline int getWidth() { return m_Width; } inline int getHeight() { return m_Height; } inline int getNbColors() { return m_Colors; } inline void setNbColors(int colors) { m_Colors = colors; } inline int getComponents() { return m_Components; } inline void setComponents(int components) { m_Components = components; } inline void setMode(char mode) { m_Mode = mode; } inline char getMode() { return m_Mode; } inline char isIndexed() { return m_Mode == GLE_BITMAP_INDEXED; } inline char isGrayScale() { return m_Mode == GLE_BITMAP_GRAYSCALE; } inline char isInterlaced() { return m_Interlaced; } inline void setInterlaced(char interlaced) { m_Interlaced = interlaced; } inline char isAlpha() { return m_Alpha; } inline void setAlpha(char alpha) { m_Alpha = alpha; } inline char getEncoding() { return m_Encoding; } inline void setEncoding(char encoding) { m_Encoding = encoding; } inline int getBitsPerComponent() { return m_BitsPerComponent; } inline void setBitsPerComponent(int bits) { m_BitsPerComponent = bits; } inline const string& getFName() { return m_FName; } inline void setFName(const string& fname) { m_FName = fname; } inline int isASCII85() { return m_ASCII85; } inline void setASCII85(int val) { m_ASCII85 = val; } inline double getCompress() { return m_Compress; } inline void setCompress(double val) { m_Compress = val; } inline rgb* getPalette() { return m_Palette; } inline int getExtraComponents() { return m_ExtraComponents; } inline void setExtraComponents(int extra) { m_ExtraComponents = extra; } inline const string& getError() { return m_Error; } inline void setError(const string& err) { m_Error = err; } inline void setError(const char* err) { m_Error = err; } rgb* allocPalette(int ncolors); int getScanlineSize(); int getColorComponents(); int getMaxBits(); void checkGrayScalePalette(); virtual int open(const string& fname); virtual int readHeader(); virtual int toPS(ostream* fp); virtual void loadImageData(); virtual int prepare(int mode); virtual int decode(GLEByteStream* output); virtual int coded(GLEByteStream* output); virtual void close(); void printInfo(ostream& os); }; class GLEFileBitmap : public GLEBitmap { protected: FILE* m_In; public: GLEFileBitmap(); virtual ~GLEFileBitmap(); virtual int open(const string& fname); virtual void close(); int read16BE(); int read16LE(); inline int read8() { return fgetc(m_In); } }; class GLEJPEG : public GLEFileBitmap { public: GLEJPEG(); virtual ~GLEJPEG(); virtual int readHeader(); virtual int coded(GLEByteStream* output); int checkJPG(); int readImageSize(); }; class GLEGIFDecoder; class GLEGIF : public GLEFileBitmap { protected: long m_ImageOffs; public: GLEGIF(); virtual ~GLEGIF(); virtual int readHeader(); virtual int decode(GLEByteStream* output); void updateImageType(); int headerExtension(); int headerImage(); void headerCOMExt(); void skipBlocks(); }; #ifdef HAVE_LIBTIFF class GLETIFF : public GLEBitmap { protected: TIFF* m_Tiff; uint16 m_TIFFCompress; public: GLETIFF(); virtual ~GLETIFF(); virtual int open(const string& fname); virtual int readHeader(); virtual int prepare(int mode); virtual int decode(GLEByteStream* output); virtual void close(); int isCCITTCompression(); uint16 getTIFFCompression() { return m_TIFFCompress; } }; #endif #ifdef HAVE_LIBPNG class GLEPNG : public GLEFileBitmap { protected: png_structp m_PNGPtr; png_infop m_InfoPtr; png_infop m_EndInfo; public: GLEPNG(); virtual ~GLEPNG(); virtual int readHeader(); virtual int prepare(int mode); virtual int decode(GLEByteStream* output); }; #endif class GLEByteStream { protected: char m_Terminated; public: GLEByteStream(); virtual ~GLEByteStream(); virtual int send(GLEBYTE* bytes, GLEDWORD count); virtual int sendByte(GLEBYTE byte) = 0; virtual int endScanLine(); virtual int term(); inline int isTerminated() { return m_Terminated; } }; class GLERecordedByteStream : public GLEByteStream { protected: std::vector m_bytes; public: GLERecordedByteStream(); virtual ~GLERecordedByteStream(); virtual int sendByte(GLEBYTE byte); unsigned long getNbBytes() const; GLEBYTE* getBytes(); }; class GLEPipedByteStream : public GLEByteStream { protected: GLEByteStream* m_Pipe; public: GLEPipedByteStream(GLEByteStream* pipe); virtual ~GLEPipedByteStream(); virtual int endScanLine(); virtual int term(); }; class GLEPNegateByteStream : public GLEPipedByteStream { public: GLEPNegateByteStream(GLEByteStream* pipe); virtual ~GLEPNegateByteStream(); virtual int sendByte(GLEBYTE byte); }; class GLEIndexedToRGBByteStream : public GLEPipedByteStream { protected: rgb* m_palette; public: GLEIndexedToRGBByteStream(GLEByteStream* pipe, rgb* palette); virtual ~GLEIndexedToRGBByteStream(); virtual int sendByte(GLEBYTE byte); }; class GLERGBATo32BitByteStream : public GLEPipedByteStream { protected: GLEBYTE m_components[4]; int m_index; int m_nbComponents; public: GLERGBATo32BitByteStream(GLEByteStream* pipe, bool isAlpha); virtual ~GLERGBATo32BitByteStream(); virtual int sendByte(GLEBYTE byte); virtual int endScanLine(); }; class GLEPixelCombineByteStream : public GLEPipedByteStream { protected: GLEBYTE m_Combined; int m_BitsPerComponent; int m_BitsLeft; public: GLEPixelCombineByteStream(GLEByteStream* pipe, int bpc); virtual ~GLEPixelCombineByteStream(); virtual int sendByte(GLEBYTE byte); virtual int endScanLine(); virtual int term(); private: int flushBufferByte(); }; class GLEBitsTo32BitByteStream : public GLEPipedByteStream { protected: unsigned int m_combined; int m_bitsLeft; public: GLEBitsTo32BitByteStream(GLEByteStream* pipe); virtual ~GLEBitsTo32BitByteStream(); virtual int sendByte(GLEBYTE byte); virtual int endScanLine(); virtual int term(); private: int flushBufferByte(); }; class GLEAlphaRemovalByteStream : public GLEPipedByteStream { protected: GLEBYTE m_Buffer[GLE_BITMAP_MAX_COMPONENTS]; int m_Components; int m_Index; public: GLEAlphaRemovalByteStream(GLEByteStream* pipe, int components); virtual ~GLEAlphaRemovalByteStream(); virtual int sendByte(GLEBYTE byte); virtual int endScanLine(); }; class GLEComponentRemovalByteStream : public GLEPipedByteStream { protected: int m_Index, m_Main, m_Total, m_Removed; public: GLEComponentRemovalByteStream(GLEByteStream* pipe, int main, int remove); virtual ~GLEComponentRemovalByteStream(); virtual int sendByte(GLEBYTE byte); virtual int endScanLine(); }; class GLEASCII85ByteStream : public GLEByteStream { private: ostream* m_File; unsigned char m_Buffer[10]; int m_Count; int m_BreakLength; public: GLEASCII85ByteStream(ostream* file); virtual ~GLEASCII85ByteStream(); virtual int sendByte(GLEBYTE byte); virtual int term(); inline void decBreakLength(int cnt) { m_BreakLength -= cnt; } }; class GLELZWByteStream : public GLEPipedByteStream { private: GLEBYTE* m_Data; /* compression scheme private data */ GLEBYTE* m_RawData; /* raw data buffer */ GLEDWORD m_RawDatasize; /* # of bytes in raw data buffer */ GLEBYTE* m_RawCP; /* current spot in raw buffer */ GLEDWORD m_RawCC; /* bytes unread from raw buffer */ GLEBYTE m_State; public: GLELZWByteStream(GLEByteStream* pipe); virtual ~GLELZWByteStream(); virtual int send(GLEBYTE* bytes, GLEDWORD count); virtual int sendByte(GLEBYTE byte); virtual int term(); private: int setupEncode(); int preEncode(); int encode(GLEBYTE* bp, GLEDWORD cc); int postEncode(); int flushData(); int init(); void cleanUp(); }; class BicubicIpolData { protected: int m_Width; int m_Height; public: BicubicIpolData(); virtual ~BicubicIpolData(); inline int getWidth() { return m_Width; } inline int getHeight() { return m_Height; } virtual double getValue(int x, int y) = 0; }; class BicubicIpolDoubleMatrix : public BicubicIpolData { protected: double* m_Data; int m_X0, m_Y0, m_DW, m_DH; public: BicubicIpolDoubleMatrix(double* data, int wd, int hi); void setWindow(int x0, int y0, int x1, int y1); virtual ~BicubicIpolDoubleMatrix(); virtual double getValue(int x, int y); }; class BicubicIpol { protected: BicubicIpolData* m_Data; int m_SWidth; int m_SHeight; int m_Width; int m_Height; double m_SX, m_SY; public: BicubicIpol(BicubicIpolData* data, int sw, int sh); double ipol(int xp, int yp); double R(double x); inline int getScaleW() { return m_SWidth; } inline int getScaleH() { return m_SHeight; } inline int getWidth() { return m_Width; } inline int getHeight() { return m_Height; } }; void GLEBitmapSetPalette(GLEBYTE* pal, int offs, double red, double green, double blue); GLEBYTE* GLEBitmapCreateColorPalette(int nc); #endif gle-graphics-4.2.4c/src/gle/bitmap/Makefile.in0000664000000000000000000000576611405446017017630 0ustar rootroot######################################################################## # # # GLE - Graphics Layout Engine # # # # Modified BSD License # # # # Copyright (C) 2009 GLE. # # # # Redistribution and use in source and binary forms, with or without # # modification, are permitted provided that the following conditions # # are met: # # # # 1. Redistributions of source code must retain the above copyright # # notice, this list of conditions and the following disclaimer. # # # # 2. Redistributions in binary form must reproduce the above # # copyright notice, this list of conditions and the following # # disclaimer in the documentation and/or other materials provided with # # the distribution. # # # # 3. The name of the author may not be used to endorse or promote # # products derived from this software without specific prior written # # permission. # # # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR # # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY # # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE # # GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER # # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN # # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # # ######################################################################## # # makefile.gcc for GLE v4.0 # for compilation with gcc # include ../../../config.i include ../../../config.aconf include files.txt CXX=@CXX@ CPPFLAGS=@LIBGLE_CPPFLAGS@@CPPFLAGS@ CPPFLAGS := $(strip $(CPPFLAGS)) LDFLAGS=@LDFLAGS@ LIBS=@LIBS@ all: $(OBJECTS) $(OBJECTS): %.o: %.cpp $(INCLUDES) $(CXX) $(CPPFLAGS) -c $< -o $@ clean: -$(RM) $(OBJECTS) gle-graphics-4.2.4c/src/gle/bitmap/Makefile.gcc0000664000000000000000000000553311405446017017746 0ustar rootroot######################################################################## # # # GLE - Graphics Layout Engine # # # # Modified BSD License # # # # Copyright (C) 2009 GLE. # # # # Redistribution and use in source and binary forms, with or without # # modification, are permitted provided that the following conditions # # are met: # # # # 1. Redistributions of source code must retain the above copyright # # notice, this list of conditions and the following disclaimer. # # # # 2. Redistributions in binary form must reproduce the above # # copyright notice, this list of conditions and the following # # disclaimer in the documentation and/or other materials provided with # # the distribution. # # # # 3. The name of the author may not be used to endorse or promote # # products derived from this software without specific prior written # # permission. # # # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR # # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY # # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE # # GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER # # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN # # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # # ######################################################################## # # makefile.gcc for GLE v4.0 # for compilation with gcc # # include ../../../config.i include ../../../config.gcc # include files.txt all: $(OBJECTS) $(OBJECTS): $(INCLUDES) clean: -$(RM) $(OBJECTS) gle-graphics-4.2.4c/src/gle/bitmap/files.txt0000664000000000000000000000563311405446017017417 0ustar rootroot######################################################################## # # # GLE - Graphics Layout Engine # # # # Modified BSD License # # # # Copyright (C) 2009 GLE. # # # # Redistribution and use in source and binary forms, with or without # # modification, are permitted provided that the following conditions # # are met: # # # # 1. Redistributions of source code must retain the above copyright # # notice, this list of conditions and the following disclaimer. # # # # 2. Redistributions in binary form must reproduce the above # # copyright notice, this list of conditions and the following # # disclaimer in the documentation and/or other materials provided with # # the distribution. # # # # 3. The name of the author may not be used to endorse or promote # # products derived from this software without specific prior written # # permission. # # # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR # # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY # # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE # # GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER # # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN # # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # # ######################################################################## # # files list for GLE to be included by the makefiles # INCLUDES = \ img2ps.h \ lzwencode.h \ glegif.h OBJECTS = \ img2ps.$(OBJ_SUFF) \ lzwencode.$(OBJ_SUFF) \ glegif.$(OBJ_SUFF) \ glejpeg.$(OBJ_SUFF) \ gletiff.$(OBJ_SUFF) \ glepng.$(OBJ_SUFF) \ ascii85.$(OBJ_SUFF) gle-graphics-4.2.4c/src/gle/bitmap/gletiff.cpp0000664000000000000000000001564011405446017017677 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ /* * 2004 Jan Struyf * */ #include "../basicconf.h" #ifdef HAVE_LIBTIFF #include "tiffio.h" #include "img2ps.h" /* * TIFF */ GLETIFF::GLETIFF() : GLEBitmap() { } GLETIFF::~GLETIFF() { } int GLETIFF::open(const string& fname) { setFName(fname); /* leave as "r" for WINDOWS VL */ m_Tiff = TIFFOpen(fname.c_str(), "r"); if (m_Tiff == NULL) { return 0; } return 1; } int GLETIFF::readHeader() { uint16 samplesperpixel, bitspersample, planarconfiguration; uint16 photometric, extrasamples, *sampleinfo; /* Get fields */ TIFFGetField(m_Tiff, TIFFTAG_IMAGEWIDTH, &m_Width); TIFFGetField(m_Tiff, TIFFTAG_IMAGELENGTH, &m_Height); TIFFGetFieldDefaulted(m_Tiff, TIFFTAG_BITSPERSAMPLE, &bitspersample); TIFFGetFieldDefaulted(m_Tiff, TIFFTAG_SAMPLESPERPIXEL, &samplesperpixel); TIFFGetFieldDefaulted(m_Tiff, TIFFTAG_PLANARCONFIG, &planarconfiguration); TIFFGetField(m_Tiff, TIFFTAG_COMPRESSION, &m_TIFFCompress); TIFFGetFieldDefaulted(m_Tiff, TIFFTAG_EXTRASAMPLES, &extrasamples, &sampleinfo); /* Set fields */ setComponents(samplesperpixel); setBitsPerComponent(bitspersample); /* Detect alpha channel */ if (extrasamples == 1) { if (sampleinfo[0] == EXTRASAMPLE_ASSOCALPHA || sampleinfo[0] == EXTRASAMPLE_UNSPECIFIED) { setAlpha(1); } setExtraComponents(1); } else if (extrasamples != 0) { printf("\nTIFF: Unsupported number of extra samples: %d\n", extrasamples); } /* Detect photometric */ if (!TIFFGetField(m_Tiff, TIFFTAG_PHOTOMETRIC, &photometric)) { switch (samplesperpixel - extrasamples) { case 1: if (isCCITTCompression()) photometric = PHOTOMETRIC_MINISWHITE; else photometric = PHOTOMETRIC_MINISBLACK; break; case 3: photometric = PHOTOMETRIC_RGB; break; } } /* Detect mode based on photometric */ switch (photometric) { case PHOTOMETRIC_MINISWHITE: case PHOTOMETRIC_MINISBLACK: /* Should invert if MINISWHITE? */ setMode(GLE_BITMAP_GRAYSCALE); break; case PHOTOMETRIC_RGB: setMode(GLE_BITMAP_RGB); break; case PHOTOMETRIC_PALETTE: setMode(GLE_BITMAP_INDEXED); setNbColors(1 << bitspersample); break; /* case PHOTOMETRIC_MASK: case PHOTOMETRIC_SEPARATED: case PHOTOMETRIC_YCBCR: case PHOTOMETRIC_CIELAB: case PHOTOMETRIC_ICCLAB: case PHOTOMETRIC_ITULAB: case PHOTOMETRIC_LOGL: case PHOTOMETRIC_LOGLUV: */ default: printf("\nTIFF: Unsupported photometric: %d\n", photometric); return GLE_IMAGE_ERROR_NOT_IMPL; } /* Determine organization */ int tiled_image = TIFFIsTiled(m_Tiff); if (tiled_image) { printf("\nTIFF: Tiled images not yet supported\n"); return GLE_IMAGE_ERROR_NOT_IMPL; } /* Determine planar configuration */ if (planarconfiguration != PLANARCONFIG_CONTIG) { printf("\nTIFF: Only planar images supported\n"); return GLE_IMAGE_ERROR_NOT_IMPL; } return GLE_IMAGE_ERROR_NONE; } int GLETIFF::prepare(int mode) { /* Load palette */ if (isIndexed()) { uint16 *rmap, *gmap, *bmap; if (!TIFFGetField(m_Tiff, TIFFTAG_COLORMAP, &rmap, &gmap, &bmap)) { printf("\nTIFF: Indexed image without palette\n"); return GLE_IMAGE_ERROR_DATA; } /* Check if palette is 8 or 16 bit */ int is8bit = 1; for (int i = 0; i < getNbColors(); i++) { if (rmap[i] >= 256 || gmap[i] >= 256 || bmap[i] >= 256) { is8bit = 0; } } /* Convert palette */ rgb* pal = allocPalette(getNbColors()); for (int i = 0; i < getNbColors(); i++) { if (is8bit == 1) { pal[i].red = rmap[i]; pal[i].green = gmap[i]; pal[i].blue = bmap[i]; } else { pal[i].red = CVT16TO8(rmap[i]); pal[i].green = CVT16TO8(gmap[i]); pal[i].blue = CVT16TO8(bmap[i]); } } } return GLE_IMAGE_ERROR_NONE; } int GLETIFF::decode(GLEByteStream* output) { int size = TIFFScanlineSize(m_Tiff); GLEBYTE* scanline = (GLEBYTE*)_TIFFmalloc(size); for (int i = 0; i < getHeight(); i++) { TIFFReadScanline(m_Tiff, scanline, i); output->send(scanline, size); output->endScanLine(); } _TIFFfree(scanline); return GLE_IMAGE_ERROR_NONE; } void GLETIFF::close() { if (m_Tiff != NULL) { TIFFClose(m_Tiff); m_Tiff = NULL; } } int GLETIFF::isCCITTCompression() { return (m_TIFFCompress == COMPRESSION_CCITTFAX3 || m_TIFFCompress == COMPRESSION_CCITTFAX4 || m_TIFFCompress == COMPRESSION_CCITTRLE || m_TIFFCompress == COMPRESSION_CCITTRLEW); } #endif gle-graphics-4.2.4c/src/gle/bitmap/glegif.cpp0000664000000000000000000002256411652073536017525 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ /* * 2004 Jan Struyf * */ #include "../basicconf.h" #include "img2ps.h" #include "glegif.h" /* * GIF */ GLEGIF::GLEGIF () : GLEFileBitmap() { m_ImageOffs = 0; } GLEGIF::~GLEGIF () { } int GLEGIF::readHeader() { GIFHEADER hdr; if (hdr.get(m_In)) { return GLE_IMAGE_ERROR_INTERN; } if (! hdr.isvalid()) { return GLE_IMAGE_ERROR_TYPE; } GIFSCDESC scd; if (scd.get(this)) { return GLE_IMAGE_ERROR_INTERN; } rgb* pal = allocPalette(256); if (scd.isgct()) { // Skip global color table - should remember position? m_Colors = scd.ncolors(); for (int i = 0; i < m_Colors; i++) { pal[i].red = fgetc(m_In); pal[i].green = fgetc(m_In); pal[i].blue = fgetc(m_In); } } int type; while ((type = fgetc(m_In)) > 0) { // printf("GIF Block Ox%X\n", type); if (type == 0x2C) { // image descriptor headerImage(); break; } else if (type == 0x21) { // extension headerExtension(); } else if (type == 0x3B) { // trailer return GLE_IMAGE_ERROR_DATA; } else { return GLE_IMAGE_ERROR_DATA; } } return GLE_IMAGE_ERROR_NONE; } int GLEGIF::headerImage() { GIFIMDESC imd; if (imd.get(this) == 0) { return GLE_IMAGE_ERROR_DATA; } if (imd.islct()) { rgb* pal = getPalette(); m_Colors = imd.ncolors(); for (int i = 0; i < m_Colors; i++) { pal[i].red = fgetc(m_In); pal[i].green = fgetc(m_In); pal[i].blue = fgetc(m_In); } } m_ImageOffs = ftell(m_In); updateImageType(); m_Width = imd.getWidth(); m_Height = imd.getHeight(); return GLE_IMAGE_ERROR_NONE; } void GLEGIF::updateImageType() { if (getNbColors() == 0) { setMode(GLE_BITMAP_GRAYSCALE); } else { setMode(GLE_BITMAP_INDEXED); setBitsPerComponent(getMaxBits()); checkGrayScalePalette(); } } int GLEGIF::headerExtension() { int label = fgetc(m_In); switch (label) { case 0xFE : // comment extension headerCOMExt(); break; case 0xF9 : // control extension case 0x01 : // text extension case 0xFF : // application extension skipBlocks(); break; default : // unknown or invalid return 0; } return 1; } void GLEGIF::skipBlocks() { int nbytes; while ((nbytes = fgetc(m_In)) > 0) { fseek(m_In, nbytes, SEEK_CUR); } } void GLEGIF::headerCOMExt() { skipBlocks(); /* int nbytes; while ((nbytes = fgetc(m_In)) > 0) { char* comment = new char[nbytes+1]; fread(comment, nbytes, 1, m_In); comment[nbytes] = 0; printf("Comment: '%s'\n", comment); delete comment; }*/ } int GLEGIF::decode(GLEByteStream* out) { fseek(m_In, m_ImageOffs, SEEK_SET); GLEGIFDecoder decoder(this, out); int result = decoder.decode(m_In); return result; } int GIFHEADER::get(FILE *f) { return (fread(sig, 6, 1, f) == 1) ? 0 : -1; } int GIFHEADER::isvalid(void) { if (strncmp( sig, "GIF", 3 ) != 0 ) { return 0; } if ((strncmp( ver, "87a", 3 ) != 0) && (strncmp( ver, "89a", 3 ) != 0)) { return 0; } return 1; } GIFSCDESC::GIFSCDESC() { scwidth = scheight = 0; flags = bgclr = pixasp = 0; } int GIFSCDESC::get(GLEGIF *gif) { scwidth = gif->read16LE(); scheight = gif->read16LE(); flags = gif->read8(); bgclr = gif->read8(); pixasp = gif->read8(); return 0; } int GIFIMDESC::ncolors() { if (islct()) { return 1 << ((flags & imdLCTSIZE) + 1); } else { return 0; } } int GIFIMDESC::get(GLEGIF* gif) { xleft = gif->read16LE(); // x origin ytop = gif->read16LE(); // y origin imwidth = gif->read16LE(); // image width imheight = gif->read16LE(); // image height flags = gif->read8(); // various flags return 1; } GLEGIFDecoder::GLEGIFDecoder(GLEGIF* gif, GLEByteStream* out) { m_Gif = gif; m_Output = out; m_First = new GLEDWORD[LZW_MAXVAL]; m_Last = new GLEBYTE[LZW_MAXVAL]; m_Buffer = new GLEBYTE[LZW_MAXVAL]; m_ScanLine = new GLEBYTE[gif->getWidth()]; } GLEGIFDecoder::~GLEGIFDecoder() { delete[] m_First; delete[] m_Last; delete[] m_Buffer; delete[] m_ScanLine; } void GLEGIFDecoder::clearTable() { int maxi = 1 << m_RootCodeSize; m_Expected = maxi + 2; m_Old = LZW_MAXVAL; m_CodeSize = m_RootCodeSize + 1; m_Mask = (1 << m_CodeSize) - 1; for (int i = 0; i < maxi; i++) { m_First[i] = LZW_MAXVAL; m_Last[i] = i & 0xFF; } m_TopBuffer = m_Buffer; } int GLEGIFDecoder::deInterlace(int nrows) { static int gif_delta[] = { 8, 8, 4, 2 }; static int gif_origin[] = { 0, 4, 2, 1 }; m_CrLine += gif_delta[m_CrPass]; if (m_CrLine >= nrows) { m_CrPass++; m_CrLine = gif_origin[m_CrPass]; } return m_CrLine; } void GLEGIFDecoder::storeBytes(int bytes, GLEBYTE* source) { int wd = (int)m_Gif->getWidth(); int i = bytes - 1; while (i >= 0) { int j = i-wd+m_CrPos+1; if (j < 0) j = 0; while (i >= j) m_ScanLine[m_CrPos++] = source[i--]; if (m_CrPos >= wd) { m_CrPos = 0; if (isInterlaced()) { // reader->put(scanLine, Deinterlace(descr->gfHeight)); printf("HELP, can't handle interlaced gifs\n"); } else { m_Output->send(m_ScanLine, wd); m_Output->endScanLine(); } } } } int GLEGIFDecoder::decode(FILE* input) { int need = 0; GLEDWORD bits = 0, code = 0, codeFeched; GLEBYTE *chPos, m_FirstCodeOut = 0, charBuff[256]; // Read data block header m_RootCodeSize = fgetc(input); GLEDWORD CLEAR = 1 << m_RootCodeSize; GLEDWORD EOI = CLEAR + 1; clearTable(); // Read image data m_CrPass = m_CrPos = 0; m_CrLine = isInterlaced() ? -8 : 0; GLEDWORD buffCount = fgetc(input); if (buffCount == 0) return GLE_IMAGE_ERROR_DATA; while(buffCount > 0) { if ((GLEDWORD)fread(charBuff, 1, buffCount, input) != buffCount) return GLE_IMAGE_ERROR_FILE; for(chPos = charBuff; buffCount-- > 0; chPos++) { need += (int) *chPos << bits; bits += 8; while (bits >= m_CodeSize) { code = need & m_Mask; need >>= m_CodeSize; bits -= m_CodeSize; if (code > m_Expected) return GLE_IMAGE_ERROR_DATA; // Neither LZW nor RunLength if (code == EOI) return GLE_IMAGE_ERROR_NONE; if (code == CLEAR) { clearTable(); continue; } if (m_Old == LZW_MAXVAL) { // m_First code after clear table storeBytes(1, &m_Last[code]); m_FirstCodeOut = m_Last[code]; m_Old = code; continue; } codeFeched = code; if (code == m_Expected) { *m_TopBuffer++ = m_FirstCodeOut; code = m_Old; } while (code > CLEAR) { *m_TopBuffer++ = m_Last[code]; code = m_First[code]; } *m_TopBuffer++ = m_FirstCodeOut = m_Last[code]; m_First[m_Expected] = m_Old; m_Last[m_Expected] = m_FirstCodeOut; if (m_Expected < LZW_MAXVAL) m_Expected++; if (((m_Expected & m_Mask) == 0) && (m_Expected < LZW_MAXVAL)) { m_CodeSize++; m_Mask += m_Expected; } m_Old = codeFeched; storeBytes(m_TopBuffer - m_Buffer, m_Buffer); m_TopBuffer = m_Buffer; } } buffCount = fgetc(input); if (buffCount == 0) return GLE_IMAGE_ERROR_DATA; } return GLE_IMAGE_ERROR_NONE; } gle-graphics-4.2.4c/src/gle/bitmap/glegif.h0000664000000000000000000001224211405446017017154 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ /* * 2004 Jan Struyf * */ #ifndef INC_GIF_H #define INC_GIF_H class GIFHEADER { protected: char sig[3]; // "GIF" char ver[3]; // "87a" or "89a" public: int isvalid(void); int get(FILE *f); }; #define scdGCT 0x80 // global color table #define scdGCTCRES 0x70 // color res : nbits-1 #define scdGCTSORT 0x08 // sort flag #define scdGCTSIZE 0x07 // color cnt as 2^(sss+1) class GIFSCDESC { // Screen Descriptor protected: unsigned short scwidth; // width in pixels unsigned short scheight; // height in pixels unsigned char flags; // various flags unsigned char bgclr; // background color unsigned char pixasp; // pixel aspect ratio public: GIFSCDESC(); int get(GLEGIF *gif); inline int isgct() { return (flags & scdGCT) ? 1 : 0; } inline int issorted() { return (flags & scdGCTSORT) ? 1 : 0; } // bits per pixel inline int depth() { return ((flags & scdGCTCRES) >> 4) + 1; } // # entries in GCT inline int ncolors() { return 1 << ((flags & scdGCTSIZE) + 1); } }; #define imdLCT 0x80 // local color table #define imdINTRLACE 0x40 // interlace flag #define imdLCTSORT 0x20 // sort flag #define imdRESV 0x18 // reserved #define imdLCTSIZE 0x07 // color cnt as 2^(sss+1) class GIFIMDESC { // Image Descriptor protected: unsigned char id; // 0x2C unsigned short xleft; // x origin unsigned short ytop; // y origin unsigned short imwidth; // image width unsigned short imheight; // image height unsigned char flags; // various flags public: int get(GLEGIF* gif); inline int islct() { return (flags & imdLCT) ? 1 : 0; } inline int issorted() { return (flags & imdLCTSORT) ? 1 : 0; } inline int isinterlaced() { return (flags & imdINTRLACE) ? 1 : 0; } inline int getWidth() { return imwidth; } inline int getHeight() { return imheight; } int ncolors(); }; #define LZW_MAXVAL 4096 class PGImageReader; class GLEGIFDecoder { public: GLEGIF* m_Gif; GLEByteStream* m_Output; int m_CrLine, m_CrPos, m_CrPass; GLEBYTE *m_Last, *m_TopBuffer, *m_Buffer, *m_ScanLine; GLEDWORD *m_First, m_RootCodeSize, m_CodeSize, m_Expected, m_Mask, m_Old; public: GLEGIFDecoder(GLEGIF* gif, GLEByteStream* out); virtual ~GLEGIFDecoder(); void clearTable(); int deInterlace(int nbrows); int decode(FILE* input); void storeBytes(int bytes, GLEBYTE* source); inline int isInterlaced() { return m_Gif->isInterlaced(); } inline int getWidth() { return m_Gif->getWidth(); } }; #endif gle-graphics-4.2.4c/src/gle/tex.cpp0000664000000000000000000015736111704312456015613 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ #include "all.h" #include "mem_limits.h" #include "token.h" #include "tokens/StringKeyHash.h" #include "core.h" #include "glearray.h" #include "polish.h" #include "pass.h" #include "cutils.h" #include "gprint.h" #include "justify.h" #include "file_io.h" #include "texinterface.h" #include "cmdline.h" #include "config.h" // uncomment this if you want to store the // tex font information to the decode.tex file. // this will create the file decode.tex in your directory //#define DO_TEX_DECODE // there is no reason to read decode.tex except for // debug purposes (I think). At least GLE doesn't read // decode.tex anywhere /************************************************************************************ * Explanation of the code: * * Main procedure for drawing text: * void text_block(const string& s, double width, int justify, int innerjust) * * This calls: * fftext_block * text_tomacro * text_topcode * uses: do_prim * text_wrapcode * uses: set_glue * text_draw * * text_tomacro * -> expands macro's (starting with "\") * -> expands special characters (such as '^' and '_') unless they are escaped * * text_topcode * -> convert result to op-codes * -> does characters, ligatures, and kerning * -> calls do_prim to handle primitive commands * * text_wrapcode * -> introduce additional space (justify) * -> handle newlines * * text_draw * -> draw op-codes * * \accent{texcmr}{95} * -> texcmr = font in which accent is defined * ************************************************************************************/ class TexArgStrs { public: string str1; string str2; string str3; string str4; public: void cmdParam1(uchar **in); void cmdParam2(uchar **in); void cmdParam3(uchar **in); void cmdParam4(uchar **in); void cmdParam12(uchar **in); void cmdParam4_swap34(uchar **in); inline const char* getCStr1() { return str1.c_str(); } inline const char* getCStr2() { return str2.c_str(); } inline const char* getCStr3() { return str3.c_str(); } inline const char* getCStr4() { return str4.c_str(); } }; #define NORET (int) 0 double emtof(char *s); double emtof(const string& s); void font_reset_parskip(void); void set_parskip(double v); void set_lineskip(double v); int ncat(char *a,char *b,int n); void pp_fntchar(int f, int c,int *out, int *lout); void cmd_token(uchar **in,char *cmdstr); void set_base_size(void); int find_primcmd(char *cmd); void text_box(const string& s,double width,int *tbuff, int *rplen); uchar* cmdParam(uchar **inp, char** pm, int* pmlen, int npm); void text_tomacro(const string& in, uchar *out); void texint(char *s, int *i); void texint(const string& s, int *i); void tex_presave(void); void tex_preload(void); void fsendstr(char *s, FILE *fout); void text_gprint(int *in,int ilen); void fftext_block(const string& s,double width,int justify); void font_load(void); void tex_init(void); int g_font_fallback(int font); void decode_utf8_basic(string& sc); void do_prim(uchar **in, int *out, int *lout, TexArgStrs* params); #define dbg if ((gle_debug & 1024)>0) extern int gle_debug; double text_endx,text_endy; /*----------------------------------------------------------------------*/ /* TeX Emulation routines */ /*----------------------------------------------------------------------*/ #define FONTDEF extern #include "font.h" #include "tex.h" double linegap; /*----------------------------------------------------------------------*/ struct def_table_struct { struct def_table_struct *next; char *name; char *defn; int npm; }; typedef struct def_table_struct deftable; /*----------------------------------------------------------------------*/ bool tex_def(const char *name, const char *defn,int npm); int tex_mathdef(const char *name, int defn); int *tex_findmathdef(const char *s); void tex_chardef(int c, const char *defn); char *tex_findchardef(int c); deftable *tex_finddef(const char *s) ; /*----------------------------------------------------------------------*/ /* Global variables for TEX emulation */ int fontfam[16][4]; double fontfamsz[16][4]; /* 1=text, 2=script, 3=scriptscript */ int famdef = -1; /* dont use unless/until it is defined */ char *cdeftable[256]; /* Character macro's */ uchar chr_code[256]; /* Character codes 1..9 */ int chr_mathcode[256]; /* Character codes 1..9 */ int chr_init; /* Flag to initialize chr variables */ #define dp if (dont_print==false) int dont_print=0; int gt_plen; double gt_l,gt_r,gt_u,gt_d; #define TEX_MAX_CHARS 100000 int gt_pbuff[TEX_MAX_CHARS]; uchar tbuff[TEX_MAX_CHARS]; int tofont[9] = {0,2,2,1,1,0,0,0,0}; int p_fnt; double p_hei; double grphei[10]; int grpfnt[10]; int p_ngrp; double base_size; int curstyle=6; double stretch_factor=1; double accent_x = 0.0; double accent_y = 0.0; IntStringHash m_Unicode; union both {float f;int l;} bth; #define outlong(v) *(out+((*lout)++)) = v #define outfloat(v) bth.f = v; *(out+((*lout)++)) = bth.l #define tolong(fff) ((bth.f = fff),bth.l ) float tofloat(int input) { union both { float f; int l; } bth; bth.l = input; return bth.f; } extern bool IS_INSTALL; extern CmdLineObj g_CmdLine; void set_stretch(double v) { stretch_factor = v; } void set_base_size() { g_get_hei(&base_size); } GLECoreFont* set_tex_font(int fnt) { p_fnt = g_font_fallback(fnt); return get_core_font_ensure_loaded(p_fnt); } void try_get_next_char(uchar **in, int *c1) { *c1 = 0; if (**in != 0) { /* char code */ uchar code = chr_code[**in]; if (code == 1 || code == 10) { *c1 = **in; (*in)++; } } } uchar try_get_next_two_chars(uchar **in, int *c1, int *c2) { if (**in == 0) { /* end of stream */ return 0; } /* possibility that there is no second character */ *c2 = 0; /* char code */ *c1 = **in; uchar code = chr_code[**in]; (*in)++; if (code == 6) { /* check for unicode character */ if (str_ni_equals((const char*)*in, "UCHR{", 5)) { char *ptr; unsigned int unicode = strtol((const char*)(*in)+5, &ptr, 16); GLECoreFont* cfont = set_tex_font(p_fnt); int font_code = cfont->unicode_map(unicode); if (font_code != -1) { code = 1; *c1 = font_code; (*in) += 10; } } } if (code == 1 || code == 10) { /* normal character, also check second one */ *c2 = **in; if (chr_code[**in] == 6) { /* check for unicode character */ if (str_ni_equals((const char*)(*in)+1, "UCHR{", 5)) { char *ptr; unsigned int unicode = strtol((const char*)(*in)+6, &ptr, 16); GLECoreFont* cfont = set_tex_font(p_fnt); int font_code = cfont->unicode_map(unicode); if (font_code != -1) { *c2 = font_code; } } } } return code; } void text_topcode(uchar *in, int *out, int *lout) { int skip_space = false; float w; uchar c; int c1, c2; GLECoreFont* cfont; outlong(8); /* set font size */ outfloat(p_hei); TexArgStrs params; while ((c = try_get_next_two_chars(&in, &c1, &c2)) != 0) { switch (c) { case 10: case 1: /* Normal character */ /* if next char is normal, then check for ligature and kern */ norm_again: w = 0; cfont = set_tex_font(p_fnt); if (c2 != 0) { if (!g_CmdLine.hasOption(GLE_OPT_NO_LIGATURES)) { if (cfont->char_lig(&c1, c2)) { try_get_next_char(&in, &c2); goto norm_again; } } cfont->char_kern(c1, c2, &w); // cout << "kern(" << c1 << "," << c2 << ") = " << w << endl; } outlong(1); outlong(c1 | p_fnt*1024); dbg gprint("==char width %d %f %f \n", c1, cfont->getCharDataThrow(c1)->wx, w); outfloat((cfont->getCharDataThrow(c1)->wx + w)*p_hei); skip_space = false; break; case 2: /* Single space */ if (skip_space) break; skip_space = true; outlong(2); cfont = set_tex_font(p_fnt); outfloat(cfont->info.space*p_hei); outfloat(cfont->info.space_stretch*p_hei*10*stretch_factor); outfloat(cfont->info.space_shrink*p_hei*10); break; case 3: /* Tab (for tabular) */ break; case 4: /* 8Tab (verbatim) */ break; case 5: /* \\ End of line */ skip_space = false; outlong(5); outlong(0); /* space for x,y to be put */ outlong(0); break; case 6: /* \ Primitive Command (macro's already done) */ skip_space = false; do_prim(&in,out,lout,¶ms); break; case 7: /* { begin group */ skip_space = false; grphei[++p_ngrp] = p_hei; grpfnt[p_ngrp] = p_fnt; break; case 8: /* } end group */ skip_space = false; if (p_ngrp<1) { gprint("%s\n",in); gprint("Too many end group brackets \n"); return; } p_hei = grphei[p_ngrp]; p_fnt = grpfnt[p_ngrp--]; font_load_metric(p_fnt); outlong(8); outfloat(p_hei); break; case 9: /* $^_ Macro (Done in macro expansion) */ skip_space = false; break; case 11: /* flag for end of paragraph */ skip_space = false; outlong(10); outlong(0); /* space for x,y to be put */ outlong(0); break; default: gprint("error, not valid character \n"); } } } uchar* cmdParam(uchar **inp, char** pm, int* pmlen, int npm) { int gcnt=0,i; uchar *save_inp = *inp; /* need this to look ahead but not move ahaead */ char *in = (char*)*inp; gcnt = 0; for (i=0;i *r) {*l=0; *r=0; *u=0; *d=0;} } #define p_sethei(hh) pp_sethei(hh,out,lout) #define p_hfill(hh) pp_hfill(hh,out,lout) #define p_move(x,y) pp_move(x,y,out,lout) #define p_fntchar(ff,cc) pp_fntchar(ff,cc,out,lout) #define p_mathchar(m) pp_mathchar(m,out,lout) #define p_pcode(pbuff,plen) pp_pcode(pbuff,plen,out,lout) void pp_move(double x, double y, int *out,int *lout) { outlong(4); outfloat(x); outfloat(y); } void pp_sethei(double h, int *out,int *lout) { outlong(8); outfloat(h); p_hei = h; } void pp_hfill(double h, int *out,int *lout) { outlong(2); outfloat(0.0); outfloat(h*p_hei); outfloat(h*p_hei); } void char_bbox_user(int p_fnt,int ix, double *x1,double *y1,double *x2,double *y2) { char_bbox(p_fnt,ix,x1,y1,x2,y2); *x1 *= p_hei; *x2 *= p_hei; *y1 *= p_hei; *y2 *= p_hei; } void pp_mathchar(int m, int *out, int *lout) { int mchar,mfam,mtyp; int ix; double x1,y1,x2,y2,reqhi,yc; double oldhei; oldhei = p_hei; mchar = m & 0xff; mfam = (m & 0xf00) / 0x100; mtyp = (m & 0xf000) / 0x1000; if (mtyp == 7 && famdef>=0) mfam = famdef; if (mtyp == 7) mtyp = 0; ix = 'b'; /* center on letter b */ char_bbox_user(p_fnt,ix,&x1,&y1,&x2,&y2); reqhi = y2/2; p_sethei(fontfamsz[mfam][tofont[curstyle]] * p_hei); char_bbox_user(fontfam[mfam][tofont[curstyle]],mchar,&x1,&y1,&x2,&y2); yc = (y2-y1)/2; if (mtyp==1) pp_move(0,reqhi+yc-y2,out,lout); p_fntchar(fontfam[mfam][tofont[curstyle]],mchar); if (mtyp==1) pp_move(0,-(reqhi+yc-y2),out,lout); p_sethei(oldhei); } void mathchar_bbox(int m, double* x1, double* y1, double* x2, double* y2, double *cw) { int mchar,mfam,mtyp; mchar = m & 0xff; mfam = (m & 0xf00) / 0x100; mtyp = (m & 0xf000) / 0x1000; if (mtyp == 7 && famdef >= 0) mfam = famdef; if (mtyp == 7) mtyp = 0; int font = fontfam[mfam][tofont[curstyle]]; char_bbox(font, mchar, x1, y1, x2, y2); *cw = fnt[font]->getCharDataThrow(mchar)->wx; } void pp_fntchar(int ff, int ch, int *out,int *lout) { ff = g_font_fallback(ff); outlong(1); if (ch == 0) ch = 254; outlong(ch | ff*1024); GLECoreFont* cfont = get_core_font_ensure_loaded(ff); outfloat(cfont->getCharDataThrow(ch)->wx * p_hei); } void pp_pcode(int *pbuff, int plen, int *out,int *lout) { int i; out += *lout; for (i=0;igetCharDataThrow(ch)->wx * p_hei; switch (i) { case 0: case 1: case 3: break; case 2: pp_move(-crxpos, -0.4*savehei, out, lout); break; } pp_fntchar(myfnt, ch, out, lout); crxpos += wid; i++; } p_sethei(savehei); } } void TexArgStrs::cmdParam1(uchar **in) { char *s[2]; int pmlen[2]; cmdParam(in, s, pmlen, 1); str1.assign(s[0], pmlen[0]); } void TexArgStrs::cmdParam12(uchar **in) { char *s[2]; int pmlen[2]; cmdParam(in, s, pmlen, 1); str2.assign(s[0],pmlen[0]); } void TexArgStrs::cmdParam2(uchar **in) { char *s[3]; int pmlen[3]; cmdParam(in, s, pmlen, 2); str1.assign(s[0],pmlen[0]); str2.assign(s[1],pmlen[1]); } void TexArgStrs::cmdParam3(uchar **in) { char *s[4]; int pmlen[4]; cmdParam(in, s, pmlen, 3); str1.assign(s[0],pmlen[0]); str2.assign(s[1],pmlen[1]); str3.assign(s[2],pmlen[2]); } void TexArgStrs::cmdParam4(uchar **in) { char *s[5]; int pmlen[5]; cmdParam(in, s, pmlen, 4); str1.assign(s[0],pmlen[0]); str2.assign(s[1],pmlen[1]); str3.assign(s[2],pmlen[2]); str4.assign(s[3],pmlen[3]); } void TexArgStrs::cmdParam4_swap34(uchar **in) { char *s[5]; int pmlen[5]; cmdParam(in, s, pmlen, 4); str1.assign(s[0],pmlen[0]); str2.assign(s[1],pmlen[1]); str4.assign(s[2],pmlen[2]); str3.assign(s[3],pmlen[3]); } void tex_get_char_code(uchar** in, int* code) { // parse the string "{number}" // and make in point to after the "}" string res; while (*(*in) != '}' && *(*in) != 0) { res += *(*in); (*in)++; } if (*(*in) == '}') { (*in)++; } texint((char*)(res.c_str()+1), code); } void tex_draw_accent(uchar **in, TexArgStrs* params, int *out, int *lout) { double lef,dep,wid,hei; double wid2,hei2,lef2,dep2,h=0,cwid,cwid2; int ix,ix2; int savefnt = p_fnt; int newfnt = pass_font(params->getCStr1()); texint(params->str2,&ix); int *m = NULL; if (params->str3[0] != 0 && params->str3[1] != 0) { if (str_i_equals(params->str3, "CHAR")) { tex_get_char_code(in, &ix2); } else { m = tex_findmathdef(params->getCStr3()); if (m == NULL) { gprint("Can't put accent on '%s'", params->getCStr3()); } else { if (*(*in) == ' ') (*in)++; } } } else { ix2 = params->str3[0]; } // cout << "'" << params->str1 << "' '" << params->str2 << "' '" << params->str3 << "'" << endl; // cout << *in << endl; char_bbox(newfnt, ix, &lef, &dep, &wid, &hei); cwid = p_hei * fnt[newfnt]->getCharDataThrow(ix)->wx; if (m == NULL) { char_bbox(p_fnt, ix2, &lef2, &dep2, &wid2, &hei2); cwid2 = p_hei * fnt[p_fnt]->getCharDataThrow(ix2)->wx; } else { mathchar_bbox(*m, &lef2, &dep2, &wid2, &hei2, &cwid2); cwid2 *= p_hei; } // Print regular character wid *= p_hei; wid2 *= p_hei; hei *= p_hei; hei2 *= p_hei; lef *= p_hei; dep *= p_hei; lef2 *= p_hei; dep2 *= p_hei; if (hei2>p_hei*(3.6/8.0)) h = hei2-p_hei*(3.6/8.0); if (m == NULL) { p_fntchar(p_fnt,ix2); } else { p_mathchar(*m); } // Print accent on top of it p_move(-cwid2+lef2+wid2/2-wid/2+accent_x,h+accent_y); /* cwid2/2 - cwid/2 */ p_fntchar(newfnt,ix); /* cwid2/2 + cwid/2 */ p_move(-cwid+cwid2-lef2-wid2/2+wid/2-accent_x,-h-accent_y); set_tex_font(savefnt); } void tex_draw_accent_cmb(uchar **in, TexArgStrs* params, int *out, int *lout) { if (params->str4.length() != 0 && params->str3.length() != 0) { if (params->str3.length() == 1) { int accent; int ch = params->str3[0]; texint(params->str4, &accent); GLECoreFont* cfont = set_tex_font(p_fnt); FontCompositeInfo* info = cfont->get_composite_char(ch, accent); if (info != NULL) { double w1 = cfont->getCharDataThrow(info->c1)->wx * p_hei; double w2 = cfont->getCharDataThrow(info->c2)->wx * p_hei; double dx1 = info->dx1 * p_hei; double dx2 = info->dx2 * p_hei; double dy1 = info->dy1 * p_hei; double dy2 = info->dy2 * p_hei; p_move(dx1, dy1); p_fntchar(p_fnt, info->c1); p_move(dx2-dx1-w1, dy2-dy1); p_fntchar(p_fnt, info->c2); p_move(w1-w2-dx2, -dy2); } else { if (ch == 'i') params->str3[0] = 0x10; if (ch == 'j') params->str3[0] = 0x11; tex_draw_accent(in, params, out, lout); } } else { tex_draw_accent(in, params, out, lout); } } } int select_font_encoding(int font, int encoding, const char* defaultFont) { GLECoreFont* crfont = get_core_font_ensure_loaded(font); if (crfont->info.encoding == encoding) { return font; } else { return pass_font(defaultFont); } } void do_prim(uchar **in, int *out, int *lout, TexArgStrs* params) { int ci; int ix; char cmdstr[20]; double lef,wid,hei,dep,savehei; int *pbuff=0; int plen; char *pmu[10]; int pmlen[10]; int *m,i,k,n,npm; k = 0; cmd_token(in,cmdstr); /* finds command name and parameters */ ci = find_primcmd(cmdstr); if (ci==0) { /* then maybe its a mathchar */ m = tex_findmathdef(cmdstr); if (m!=0) { p_mathchar(*m); } else { gprint("Unrecognised control sequence {%s} \n",cmdstr); } return; } switch (ci) { case tp_sup: /* \superscript{exp} */ /*printf("l=%g r=%g u=%g d=%g\n",gt_l,gt_r,gt_u,gt_d);*/ cmdParam(in,pmu,pmlen,1); savehei = p_hei; p_hei = p_hei * .7; topcode(pmu[0],pmlen[0],0.0,&pbuff,&plen,&lef,&wid,&hei,&dep); /*g_measure(pm.s[0],&lef,&wid,&hei,&dep); fftext_block(UC pm.s[0],0.0,0); g_get_bounds(&lef,&wid,&hei,&dep);*/ p_move(0,0.8*p_hei); p_pcode(pbuff,plen); /*printf("this P=[%s]\n",pm.s[0]);*/ p_move(0,-0.8*p_hei); find_primcmd(cmdstr); /* do a look ahead to see if there is a superscript */ /* but keep in pointing to current spot */ *in = cmdParam(in,pmu,pmlen,1); /* check to see if subscript is next */ if(strncmp(pmu[0],"sub ",4)==0) { /* move back to starting point */ /*p_move(-wid,0); printf("subscript next P=[%s]\n",pm.s[0]); */ } myfree(pbuff); p_sethei(savehei); break; case tp_sub: /* \subscript{exp} */ /*printf("l=%g r=%g u=%g d=%g\n",gt_l,gt_r,gt_u,gt_d);*/ cmdParam(in,pmu,pmlen,1); savehei = p_hei; p_hei = p_hei * .7; topcode(pmu[0],pmlen[0],0.0,&pbuff,&plen,&lef,&wid,&hei,&dep); /*printf("lef=%g wid=%g hei=%g dep=%g\n",lef,wid,hei,dep);*/ p_move(0.0,-0.3*p_hei); p_pcode(pbuff,plen); /*printf("this B=[%s]\n",pm.s[0]);*/ p_move(0,0.3*p_hei); /* do a look ahead to see if there is a superscript */ /* but keep in pointing to current spot */ *in = cmdParam(in,pmu,pmlen,1); /* check to see if superscript is next */ if(strncmp(pmu[0],"sup ",4)==0) { /* move back to starting point */ /*p_move(-wid,0);*/ /*printf("supescript next B=[%s]\n",pm.s[0]);*/ } myfree(pbuff); p_sethei(savehei); break; case tp_sethei: /* \sethei{exp} */ params->cmdParam1(in); p_sethei(emtof(params->str1)); break; case tp_hfill: /* \sethei{exp} */ p_hfill(10.0); break; case tp_char: params->cmdParam1(in); texint(params->str1,&ix); p_fntchar(p_fnt,ix); break; case tp_chardef: /* \chardef{a}{xxxxx} */ params->cmdParam2(in); tex_chardef(params->str1[0],params->getCStr2()); break; case tp_ssfont: k++; case tp_sfont: k++; case tp_tfont: /* \tfont{0}{cmr10}{.5} */ params->cmdParam3(in); i = atoi(params->getCStr1()); if (i>15) i = 1; fontfam[i][k] = pass_font(params->getCStr2()); fontfamsz[i][k] = emtof(params->str3); break; case tp_fontenc: params->cmdParam2(in); set_tex_font(select_font_encoding(p_fnt, atoi(params->getCStr1()), params->getCStr2())); break; case tp_acccmb: params->cmdParam4_swap34(in); tex_draw_accent_cmb(in, params, out, lout); break; case tp_accent: /* accent{texcmr}{123}{a} */ params->cmdParam3(in); tex_draw_accent(in, params, out, lout); break; case tp_accentxy: params->cmdParam2(in); accent_x = emtof(params->str1); accent_y = emtof(params->str2); break; case tp_unicode: params->cmdParam2(in); texint(params->str1,&ix); m_Unicode.add_item(ix, params->str2); break; case tp_uchr: params->cmdParam1(in); p_unichar(params->str1, out, lout); break; case tp_def: params->cmdParam1(in); /* finds everything up to the #1#2 */ npm = 0; while (**in == '#') { (*in)++; n = (*(*in)++) - '0'; if (n>0 && n<9) if (npmcmdParam12(in); // cout << "def: '" << params->getCStr1() << "' -> '" << params->getCStr2() << "'" << endl; tex_def(params->getCStr1(),params->getCStr2(),npm); break; case tp_mathchardef: /* /mathchardef */ params->cmdParam2(in); texint(params->str2,&ix); tex_mathdef(params->getCStr1()+1,ix); break; case tp_movexy: params->cmdParam2(in); p_move(emtof(params->str1),emtof(params->str2)); break; case tp_rule: params->cmdParam2(in); outlong(6); outfloat(emtof(params->str1)); outfloat(emtof(params->str2)); break; case tp_mathchar: params->cmdParam1(in); texint(params->str1,&ix); p_mathchar(ix); break; case tp_mathcode: params->cmdParam2(in); texint(params->str2,&ix); chr_mathcode[(unsigned int)params->str1[0]] = ix; break; case tp_delcode: params->cmdParam2(in); texint(params->str2,&ix); chr_mathcode[(unsigned int)params->str1[0]] = ix; break; case tp_setfont: params->cmdParam1(in); set_tex_font(pass_font(params->getCStr1())); break; case tp_presave: gprint("Saving definitions\n"); tex_presave(); break; case tp_newline: outlong(5); outlong(0); /* space for x,y to be put */ outlong(0); break; case tp_parskip: params->cmdParam1(in); set_parskip(emtof(params->str1)); break; case tp_setstretch: params->cmdParam1(in); set_stretch(emtof(params->str1)); break; case tp_lineskip: params->cmdParam1(in); set_lineskip(emtof(params->str1)); break; case tp_linegap: params->cmdParam1(in); linegap = emtof(params->str1); break; case tp_tex: params->cmdParam1(in); outlong(11); outlong(TeXInterface::getInstance()->createObj(params->getCStr1(), p_hei)); break; case tp_frac: case tp_delimiter: case tp_left: case tp_right: case tp_defbegin: case tp_nolimits: case tp_overbrace: case tp_overline: case tp_underbrace: case tp_underline: gprint("A valid GLE-TEX primitive which isn't implemented yet %d \n",ci); break; default: gprint("An invalid GLE-TEX primitive %d \n",ci); break; } } double emtof(char *s) { /* same as ATOF but if it sees EM then it multiplies by FONT HEI */ if (strstr(s,"sp")!=NULL) { GLECoreFont* cfont = set_tex_font(p_fnt); return atof(s) * cfont->info.space*p_hei; } if (strstr(s,"em")!=NULL) { return atof(s)*p_hei*0.75; } return atof(s); } double emtof(const string& s) { if (str_i_str(s, "sp") != -1) { GLECoreFont* cfont = set_tex_font(p_fnt); return atof(s.c_str()) * cfont->info.space*p_hei; } if (str_i_str(s, "em") != -1) { return atof(s.c_str())*p_hei*0.75; } return atof(s.c_str()); } void texint(char *s, int *i) { int j; if (*s=='$') { sscanf(s+1,"%x",&j); *i = j; } else { *i = atoi(s); } } void texint(const string& s, int *i) { if (s[0] == '$') { sscanf(s.c_str()+1, "%x", i); } else { *i = atoi(s.c_str()); } } /* Character Codes a..z 1 normal character space 2 single space ,& 3 Tab (as in tabular) <8TAB> 4 TAB (as in verbatim) ,\\ 5 End of line \ 6 Macro or command { 7 Begin group } 8 end group $_^ 9 Macro call 10 null 255 11 end of paragraph (crcr) end of command, = first non alpha character */ /* Bounding Box ?? 1=char font+char,x 2=move x,stret,shrink throw away after cr 3=MOVE x,0,0 glue which has been set 4=MOVE x,y solid move 5=newline,x,y 6=rule x,y 10=color color 8=fontsz fontsz 9=font i 15=null */ #define infloat(fff) ((bth.l = fff),bth.f) void text_wrapcode(int *in,int ilen,double width) { double cx=0,cy=0,p_hei,ax=0,y,cdep=0,chei=0; int i,c,crFont,si,skline,saveii; double totstretch=0,totshrink=0,ls=0,gap=0,last_y,last_x,lastdep,last_stret,last_shrink; int *pcr=0,last_space=0; double setlen; bool eat_glue = false; dbg text_gprint(in,ilen); ls = 0; last_x = 0; gap = 0; last_y = 0; lastdep = 0; last_stret = 0; last_shrink = 0; GLECoreFont* cfont; dbg gprint("==wrap pcode, ilen = %d \n",ilen); dbg gprint("wrap pcode ilen=%d \n",ilen); p_hei = 1; si = 0; for (i=0;igetCharDataThrow(c); if (cdep > cy + p_hei * charData->y1) cdep = cy + p_hei * charData->y1; if (chei < cy + p_hei * charData->y2) chei = cy + p_hei * charData->y2; } /* gprint("chei=%f, cdep=%f \n",chei,cdep); */ cx += tofloat(*(in+ ++i)); ax = cx; if (cx>width) { if (last_space>si) { dbg gprint("Call SET_GLUE from %d, to %d \n",si,last_space); set_glue(in+si,last_space-si,last_x,width,last_stret,last_shrink,&setlen); i = last_space; *(in+i++) = 4; *(in+i++) = tolong(-setlen); if (pcr!=NULL) { /* put in last line feed now */ y = last_y-ls; if ((y+chei+gap)>lastdep) y = lastdep-chei-gap; cy = y; *pcr = tolong(y); } font_get_lineskip(&ls,&gap); pcr = (in+i++); /* place to put line feed */ *(in+i) = 20; /* null */ last_stret = 0; last_shrink = 0; totstretch = 0; totshrink = 0; lastdep = cdep; last_y = cy; cx = 0; cy = 0; si = i; eat_glue = true; } } break; case 2: /* move x,stretch,shrink */ last_space = i; last_x = ax; last_y = cy; last_stret = totstretch; last_shrink = totshrink; if (eat_glue) {*(in+i)=3; *(in+ ++i)=tolong(0);i+=2;break;} cx += tofloat(*(in+ ++i)); totstretch += tofloat(*(in+ ++i)); totshrink += tofloat(*(in+ ++i)); dbg gprint("total stretch %f, shrink %f \n",totstretch,totshrink); break; case 3: /* move x,0,0 SOLID */ cx += tofloat(*(in+ ++i)); i += 2; ax = cx; eat_glue = false; break; case 4: /* move x,y SOLID */ eat_glue = false; cx += tofloat(*(in+ ++i)); cy += tofloat(*(in+ ++i)); ax = cx; break; case 5: /* Newline x,y (0,0 at moment) */ case 10: if (*(in+i)==5) skline = true; else skline = false; *(in+i) = 0; /* last_space = i; last_x = ax; last_y = cy; last_stret = totstretch; last_shrink = totshrink; */ if (last_space<=si || ax==cx) { last_x = ax; last_y = cy; last_stret = totstretch; last_shrink = totshrink; last_space = i; } dbg gprint("Call SET_GLUE from %d, to %d \n",si,last_space); set_glue(in+si,last_space-si,last_x,width,last_stret,last_shrink,&setlen); saveii = i; i = last_space; while (i < saveii) *(in+i++) = 20; /* nop */ *(in+i++) = 4; *(in+i++) = tolong(-setlen); if (pcr!=NULL) { /* put in last line feed now */ y = last_y-ls; if ((y+chei+gap)>lastdep) y = lastdep-chei-gap; cy = y; *pcr = tolong(y); } if (skline) font_get_lineskip(&ls,&gap); else font_get_parskip(&ls,&gap); pcr = (in+i); /* place to put line feed */ last_stret = 0; last_shrink = 0; totstretch = 0; totshrink = 0; lastdep = cdep; last_y = cy; cx = 0; cy = 0; si = i+1; eat_glue = true; break; /* eat_glue = true; i += 2; break; */ case 11: /* TeX */ { TeXInterface* iface = TeXInterface::getInstance(); TeXHashObject* hobj = iface->getHashObject(*(in+ ++i)); cx += hobj->getWidth(); } break; case 6: /* rule x,y */ i += 2; eat_glue = false; break; case 7: /* color color */ g_set_color((int) tofloat(*(in+ ++i))); break; case 8: /* fontsz sz */ p_hei = tofloat(*(in+ ++i)); g_set_hei(p_hei); break; case 9: /* font p_fnt */ crFont = g_font_fallback(*(in+ ++i)); font_load_metric(crFont); break; case 20: /* nop */ break; default: gprint("dud pcode in wrap pcode %d i=%d \n",*(in+i),i); break; } } if (last_space==0) last_space = ilen; dbg gprint("Exiting call to SET_GLUE from %d, to %d \n",si,last_space); set_glue(in+si,last_space-si,last_x,width,last_stret,last_shrink,&setlen); if (pcr!=NULL) { /* put in last line feed now */ y = last_y-ls; if ((y+chei+gap)>lastdep) y = lastdep-chei-gap; cy = y; *pcr = tolong(y); } dbg text_gprint(in,ilen); } void set_glue(int *in,int ilen,double actual,double width,double stretch,double shrink,double *setlen) { double mst=0,msh=0; float s1,s2,x; int i=0; dbg gprint("===set glue \n"); dbg text_gprint(in,ilen); dbg gprint("set glue ilen=%d actual=%f, width=%f, stretch=%f shrink=%f \n" ,ilen,actual,width,stretch,shrink); /* if (actual<0) get_natural(in,ilen,&actual); */ if (actual0.0000001) mst = (width-actual)/stretch; msh = 0; if (mst>1) mst=0; } else { mst = 0; if (shrink>0) msh = (actual-width)/shrink; if (msh>1) msh=0; } *setlen = actual+stretch*mst+shrink*msh; dbg gprint("SETTing glue to %f %f actual %f, setto %f\n",mst,msh,actual,*setlen); for (i=0;igetCharDataThrow(c); g_update_bounds(cx+p_hei*(cdata->x1), cy+p_hei*(cdata->y1)); g_update_bounds(cx+p_hei*(cdata->x2), cy+p_hei*(cdata->y2)); } dp { g_move(cx,cy); g_char(crFont,c); } cx += tofloat(*(in+ ++i)); break; case 2: /* move x,stretch,shrink */ cx += tofloat(*(in+ ++i)); i += 2; /* glue is already set */ break; case 3: /* move x,0,0 SOLID */ cx += tofloat(*(in+ ++i)); i += 2; break; case 4: /* move x,y SOLID */ cx += tofloat(*(in+ ++i)); cy += tofloat(*(in+ ++i)); break; case 5: /* Newline x,y (turned into a move) */ i += 2; break; case 6: /* rule x,y */ x = tofloat(*(in+ ++i)); y = tofloat(*(in+ ++i)); g_update_bounds(cx,cy); g_update_bounds(cx+x,cy+y); if (x>0) g_box_fill(cx,cy,cx+x,cy+y); break; case 7: /* color color */ /* dp g_set_color(tofloat(*(in+ ++i)));*/ break; case 8: /* fontsz sz */ p_hei = tofloat(*(in+ ++i)); g_set_hei(p_hei); break; case 9: /* font p_fnt */ crFont = g_font_fallback(*(in+ ++i)); font_load_metric(crFont); break; case 10: /* Newline x,y (turned into a move) */ i += 2; break; case 11: /* TeX */ { TeXObjectInfo info; info.setPosition(cx, cy); info.setJustify(JUST_LEFT); if (dont_print) info.setFlag(TEX_OBJ_INF_DONT_PRINT); TeXInterface* iface = TeXInterface::getInstance(); TeXHashObject* hobj = iface->getHashObject(*(in+ ++i)); iface->drawObj(hobj, info); cx += hobj->getWidth(); } case 20: /* nop */ break; case 0: dbg gprint("zero"); break; default: gprint("dud3 pcode in text pcode %d %d \n",*(in+i),i); break; } } text_endx = cx; text_endy = cy; dbg gprint("---TEXT DRAW, DONE. %g %g \n",cx,cy); } double tex_xend(void) { return text_endx; } double tex_yend(void) { return text_endy; } void text_gprint(int *in,int ilen) { int i,c,crFont; for (i=0;iname != NULL && str_i_equals(fnt[i]->name,p)) { *(pcode+(*plen)++) = i; /* font number */ return; } } ostringstream err; err << "invalid font name: '" << p << "', expecting one of:"; for (unsigned int i = 1; i < fnt.size(); i++) { if ((i-1) % 5 == 0) { err << endl << " "; } else { err << " "; } err << fnt[i]->name; } gprint(err.str().c_str()); /* default font number */ *(pcode+(*plen)++) = 1; } const char* get_font_name(int idx) { GLECoreFont* cfont = get_core_font(idx); return cfont->name; } int get_nb_fonts() { return fnt.size(); } void text_block(const string& s,double width,int justify) { text_block(s, width, justify, 0); } void text_block(const string& s, double width, int justify, int innerjust) { double ox,oy,x,y,ll,rr,uu,dd; double a,b,c,d; set_base_size(); g_get_bounds(&a,&b,&c,&d); g_init_bounds(); dont_print = true; fftext_block(s,width,justify); dont_print = false; g_get_bounds(&ll,&dd,&rr,&uu); if (ll > rr) {ll=0; rr=0; uu=0; dd=0;} g_get_xy(&ox,&oy); x = ox; y = oy; g_dotjust(&x,&y,ll,rr,uu,dd,justify); g_move(x,y); g_init_bounds(); if (a<=c) { g_update_bounds(a,b); g_update_bounds(c,d); } g_get_bounds(&a,&b,&c,&d); text_draw(gt_pbuff,gt_plen); g_get_bounds(&a,&b,&c,&d); g_move(ox,oy); } /* Searches CMD and replaces #n's with parameters */ char *tex_replace(char *cmd,char *pm[],int pmlen[],int npm) { char *r,*s,*o; int n; /* printf("replace {%s} \n",cmd); for (i=0;i0 && n<=npm) { strncpy(o,pm[n-1],pmlen[n-1]); o += pmlen[n-1]; } } else *o++ = *s; } *o++ = 0; return r; } /*----------------------------------------------------------------------*/ /* tex_chardef */ /*----------------------------------------------------------------------*/ void tex_chardef(int c, const char *defn) { if (c < 0 || c > 255) return; if (cdeftable[c] != NULL) myfree(cdeftable[c]); cdeftable[c] = sdup(defn); } char *tex_findchardef(int c) { return cdeftable[c]; } /*----------------------------------------------------------------------*/ /* Hashing table code for \def */ /*----------------------------------------------------------------------*/ #define HASHSIZE 101 static deftable *def_hashtab[HASHSIZE]; unsigned hash_str(const char *s) { unsigned hashval; for (hashval=0; *s != 0; s++) hashval = *s + 31*hashval; return hashval % HASHSIZE ; } deftable *tex_finddef(const char *s) { deftable *np; for (np = def_hashtab[hash_str(s)]; np != NULL; np = np->next) if (strcmp(s, np->name)==0) { return np; } return NULL; } bool tex_def(const char *name, const char *defn, int npm) { deftable *np; unsigned hashval; // cout << "define '" << name << "' -> '" << defn << "'" << endl; if ((np = tex_finddef(name)) == NULL) { /* not found */ np = (deftable *) myalloc(sizeof(*np)); if ((np == NULL) || (np->name = sdup(name)) == NULL) return false; hashval = hash_str(name); np->next = def_hashtab[hashval]; def_hashtab[hashval] = np; np->npm = npm; if ((np->defn = sdup(defn)) == NULL) return false; } else { myfree(np->defn); if ((np->defn = sdup(defn)) == NULL) return false; } return true; } /*----------------------------------------------------------------------*/ /* Hashing table code for \mathchardef */ /*----------------------------------------------------------------------*/ struct mdef_table_struct { struct mdef_table_struct *next; char *name; int defn; }; typedef struct mdef_table_struct mdeftable; static mdeftable *mdef_hashtab[HASHSIZE]; int *tex_findmathdef(const char *s) { mdeftable *np; for (np = mdef_hashtab[hash_str(s)]; np != NULL; np = np->next) if (strcmp(s, np->name)==0) { return &np->defn; } return NULL; } int tex_mathdef(const char *name, int defn) { mdeftable *np; int *d; unsigned hashval; if ((d = tex_findmathdef(name)) == NULL ) { /* not found */ np = (mdeftable *) myalloc(sizeof(*np)); if ((np == NULL) || (np->name = sdup(name)) == NULL) return 0; hashval = hash_str(name); np->next = mdef_hashtab[hashval]; mdef_hashtab[hashval] = np; np->defn = defn; } else { *d = defn; } return true; } void tex_init() { for (int i = 0; i<256; i++) chr_code[i]=10; /* other */ for (int i = 65; i<91; i++) chr_code[i]=1; /* alpha */ for (int i = 97; i<123; i++) chr_code[i]=1; for (int i = 0; i < HASHSIZE; i++) mdef_hashtab[i] = NULL; chr_code[0] = 2; /* maybe should be 0, this is only tested in lig*/ chr_code[(unsigned int)' '] = 2; chr_code[9] = 2; chr_code[(unsigned int)'\n'] = 2; chr_code[(unsigned int)'\\'] = 6; chr_code[(unsigned int)'{'] = 7; chr_code[(unsigned int)'}'] = 8; chr_code[255] = 11; /* flag for end of paragraph, unless verbatim */ chr_init = true; tex_preload(); tex_def(" ","\\movexy{1sp}{}",0); tex_def("\\","\\newline{}",0); tex_def("{","\\char{123}",0); tex_def("}","\\char{125}",0); tex_def("_","\\char{95}",0); tex_def("^","\\acccmb{texcmr}{94}{4}",0); tex_def("$","\\char{36}",0); } void tex_clear() { /* clear CHARDEF table before each redraw */ tex_term(); tex_chardef('^',"\\sup "); tex_chardef('_',"\\sub "); } void tex_term() { for (int c = 0; c < 256; c++) { if (cdeftable[c] != NULL) { myfree(cdeftable[c]); cdeftable[c] = NULL; } } } void g_measure(const string& s, double *l, double *r, double *u, double *d) { double sa,sb,sc,sd; g_get_bounds(&sa,&sb,&sc,&sd); set_base_size(); g_init_bounds(); dont_print = true; fftext_block(s,0.0,0); dont_print = false; g_get_bounds(l,d,r,u); if (*l > *r) {*l=0; *r=0; *u=0; *d=0;} gt_l = *l; gt_r = *r; gt_u = *u; gt_d = *d; g_init_bounds(); if (sa>sc) return; g_update_bounds(sa,sb); g_update_bounds(sc,sd); } void g_textfindend(const string& s, double *cx, double *cy) { double sa,sb,sc,sd; set_base_size(); g_get_bounds(&sa,&sb,&sc,&sd); dont_print = true; fftext_block(s,0.0,0); *cx = text_endx; *cy = text_endy; dont_print = false; g_init_bounds(); if (sa>sc) return; g_update_bounds(sa,sb); g_update_bounds(sc,sd); } void g_jtext(int just) { double ox,oy,x,y; g_get_xy(&ox,&oy); x = ox; y = oy; g_dotjust(&x,&y,gt_l,gt_r,gt_u,gt_d,just); g_move(x,y); text_draw(gt_pbuff,gt_plen); g_move(ox,oy); } void text_def(uchar *s) { gt_plen = 0; if (chr_init==false) tex_init(); text_topcode(s,gt_pbuff,>_plen); } void fftext_block(const string& s,double width,int justify) { g_get_font(&p_fnt); font_load_metric(p_fnt); g_get_hei(&p_hei); font_reset_parskip(); gt_plen = 0; if (s.length() == 0) { /* gprint("TEXT_BLOCK, Passed empty string \n"); */ return; } if (chr_init == false) { tex_init(); } string sc = s; // flag end of paragraph with 255 (octal 377) decode_utf8_notex(sc); str_replace_all(sc, "\n\n", "\n\377"); text_tomacro(sc, tbuff); gt_plen = 0; if (width == 0.0) { width = 400; chr_code[(unsigned int)'\n'] = 5; } else { chr_code[(unsigned int)'\n'] = 2; } text_topcode(tbuff,gt_pbuff,>_plen); text_wrapcode(gt_pbuff,gt_plen,width); text_draw(gt_pbuff,gt_plen); g_set_font(p_fnt); g_set_hei(p_hei); } void cmd_token(uchar **in,char *cmdstr) { int i = 0; if ( (!isalpha(**in)) && (**in != 0)) { if ((*in)[0] == '\'' && (*in)[1] == '\'') { // special case for two subsequent single quotes *cmdstr++ = *(*in)++; *cmdstr++ = *(*in)++; } else { *cmdstr++ = *(*in)++; } } else { for (; chr_code[**in]==1 && **in != 0 && i<20;(*in)++,i++) { *cmdstr++ = **in; } } *cmdstr = 0; cmdstr -= 1; if (chr_code[(unsigned int)*cmdstr]==1) { // if last character is alpha, then eat all subsequent space // (chr_code alpha = 1, space = 2) for (;(**in != 0) && (chr_code[**in]==2);) (*in)++; } } void text_tomacro(const string& in, uchar *out) { /* find /cmdname or defined characters */ char macroname[30]; uchar *s,*dfn,*r,*saves; int dlen; int nrep; deftable *np; char *pmu[10]; int pmlen[10]; nrep = 0; strcpy(SC out,SC in.c_str()); // Replace macros for (s=out; *s != 0;s++) { // cout << "current: '" << s << "'" << endl; if (nrep>300) gle_abort("Loop in text macros\n"); if (chr_code[*s]==6) { /* backslash, begining of macro? */ saves = s; s++; cmd_token(&s,macroname); // cout << "macro: " << macroname << endl; np = tex_finddef(macroname); if (np != NULL) { // cout << "found!" << endl; nrep++; dfn = UC np->defn; dbg printf("Found macro {%s} = {%s} \n",macroname,dfn); cmdParam(&s,pmu,pmlen,np->npm); dlen = s-saves; r = UC tex_replace(SC dfn,pmu,pmlen,np->npm); s = saves; memmove(SC s+strlen(SC r),SC s+dlen,strlen(SC s)+1); strncpy(SC s,SC r,strlen(SC r)); myfree(r); s--; } s = saves; if (strcmp(macroname, "tex")==0) { // do not expand macros inside \tex{} expression s = UC str_skip_brackets((char*)s, '{', '}'); } if (strcmp(macroname, "unicode")==0) { // do not expand macros inside \unicode{}{} expression s = UC str_skip_brackets((char*)s, '{', '}'); if (s[0] == '}') s++; s = UC str_skip_brackets((char*)s, '{', '}'); } if (strcmp(macroname, "def")==0) { // make sure not to expand macro's in macro name // otherwise, during a second pass, the name will be replaced by the value // e.g., \def\a{b} will trun into: \defb{b{} s = UC str_find_char((const char*)s, '{'); } } if (cdeftable[*s]!=0) { dbg printf("Found char definition %d {%s} \n",*s,s); nrep++; dfn = UC tex_findchardef(*s); memmove(s+strlen(SC dfn)-1,s,strlen(SC s)+1); strncpy(SC s,SC dfn,strlen(SC dfn)); s--; } } // cout << "result of macros: '" << out << "'" << endl; } void tex_presave() { int i; deftable *dt; FILE *fout; mdeftable *mdt; /* Save all defined features possible */ string fname = gledir("inittex.ini"); fout = fopen(fname.c_str(), "wb"); if (fout==NULL) gprint("Could not create inittex.ini file \n"); fwrite(fontfam,sizeof(int),16*4,fout); fwrite(fontfamsz,sizeof(double),16*4,fout); fwrite(chr_mathcode,sizeof(char),256,fout); for (i=0;inext) { fwrite(&i,sizeof(i),1,fout); fwrite(&dt->npm,sizeof(i),1,fout); fsendstr(dt->name,fout); fsendstr(dt->defn,fout); } } i = 0x0fff; fwrite(&i,sizeof(i),1,fout); for (i=0;inext) { fwrite(&i,sizeof(i),1,fout); fwrite(&mdt->defn,sizeof(i),1,fout); fsendstr(mdt->name,fout); } } i = 0x0fff; fwrite(&i,sizeof(i),1,fout); for (i=0;i<256;i++) fsendstr(cdeftable[i],fout); /* write unicode definitions */ for (IntStringHash::const_iterator it = m_Unicode.begin(); it != m_Unicode.end(); it++ ) { int key = it->first; const string& data = it->second; int len = data.size(); fwrite(&key,sizeof(int),1,fout); fwrite(&len,sizeof(int),1,fout); fwrite(data.c_str(),sizeof(char),len,fout); } i = 0; fwrite(&i,sizeof(int),1,fout); fclose(fout); } void fgetvstr(char **s,FILE *fmt) { int i = fgetc(fmt); if (i == 0) return; if (*s != NULL) myfree(*s); *s = (char*) myalloc(i+1); fread(*s, 1, i, fmt); *(*s+i) = 0; } void fgetcstr(char s[],FILE *fmt) { int i = fgetc(fmt); if (i == 0) return; fread(s, 1, i, fmt); s[i] = 0; } void fsendstr(char *s, FILE *fout) { if (s == NULL) { fputc(0, fout); return; } fputc(strlen(s), fout); fwrite(s, 1, strlen(s), fout); } void tex_preload() { int i,j; FILE *fout; char str1[80],str2[80]; /* reload all defined features */ #ifdef DO_TEX_DECODE FILE* fhv; fhv = fopen("decode.tex","w"); #endif string fname = gledir("inittex.ini"); fout = fopen(fname.c_str(), "rb"); if (fout == NULL) { if (!IS_INSTALL) gprint("Could not open inittex.ini file \n"); return; } fread(fontfam,sizeof(int),16*4,fout); fread(fontfamsz,sizeof(double),16*4,fout); fread(chr_mathcode,sizeof(char),256,fout); #ifdef DO_TEX_DECODE for(k=0;k<=16;k++){ fprintf(fhv,"*fontfam[%d]=%s fontfamsz[%d]=%s\n",k,fontfam[k],k,fontfamsz[k]); } fprintf(fhv,"chr_mathcode=%s\n",chr_mathcode); #endif for (; (fread(&i,sizeof(i),1,fout)), i != 0x0fff;) { fread(&j,sizeof(j),1,fout); fgetcstr(str1,fout); fgetcstr(str2,fout); tex_def(str1,str2,j); #ifdef DO_TEX_DECODE fprintf(fhv,"str1=%s str2=%s j=%d\n",str1,str2,j); #endif } i=0; for (; (fread(&i,sizeof(i),1,fout)), i != 0x0fff;) { fread(&j,sizeof(j),1,fout); fgetcstr(str1,fout); tex_mathdef(str1,j); #ifdef DO_TEX_DECODE fprintf(fhv,"str1=%s i=%d\n",str1,i); #endif } i=0; for (i=0;i<256;i++){ fgetvstr(&cdeftable[i],fout); #ifdef DO_TEX_DECODE fprintf(fhv,"cdeftable[%d]=%s\n",i,cdeftable[i]); #endif } /* load unicode definitions */ m_Unicode.clear(); int key; fread(&key,sizeof(int),1,fout); char* read_ptr = NULL; int read_ptr_len = 0; while (key != 0) { int len; fread(&len,sizeof(int),1,fout); if (len >= read_ptr_len) { read_ptr_len = 2*read_ptr_len + len + 1; read_ptr = (char*)realloc(read_ptr, read_ptr_len); } fread(read_ptr,sizeof(char),len,fout); read_ptr[len] = 0; m_Unicode.add_item(key, read_ptr); fread(&key,sizeof(int),1,fout); } if (read_ptr != NULL) free(read_ptr); fclose(fout); #ifdef DO_TEX_DECODE fclose(fhv); #endif } /* 0 0000 1 0001 2 0010 3 0011 4 0100 5 0101 6 0110 7 0111 8 1000 9 1001 a 1010 b 1011 c 1100 d 1101 e 1110 f 1111 Char. number range | UTF-8 octet sequence (hexadecimal) | (binary) --------------------+--------------------------------------------- 0000 0000-0000 007F | 0xxxxxxx 0000 0080-0000 07FF | 110xxxxx 10xxxxxx 0000 0800-0000 FFFF | 1110xxxx 10xxxxxx 10xxxxxx 0001 0000-0010 FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx */ int decode_utf8_byte(const string& sc, int len, int pos) { if (pos >= len) return -1; unsigned char ch = sc[pos]; if ((ch & 0xC0) != 0x80) return -1; ch &= 0x3F; return ch; } void decode_utf8_remove(string& sc, int* len, int pos, int nb) { if (pos+nb <= *len) { sc.erase(pos, nb); (*len) = (*len) - nb; } } void decode_utf8_add_unicode(int unicode, string& sc, int* len, int pos, int nb) { string code; char hexcode[10]; sprintf(hexcode, "%.4X", unicode); code = "\\uchr{"; code += hexcode; code += "}"; decode_utf8_remove(sc, len, pos, nb+1); sc.insert(pos, code); (*len) += code.length(); } void decode_utf8_notex(string& sc) { int prev = 0; int ps = str_i_str(sc, 0, "\\TEX{"); if (ps != -1) { string buffer; while (ps != -1) { int end_ps = str_skip_brackets(sc, ps, '{', '}') + 1; string first_part(sc, prev, ps - prev); decode_utf8_basic(first_part); buffer += first_part; buffer += string(sc, ps, end_ps - ps); ps = str_i_str(sc, end_ps, "\\TEX{"); prev = end_ps; } if (prev+1 <= (int)sc.length()) { string first_part(sc, prev); decode_utf8_basic(first_part); buffer += first_part; } sc = buffer; } else { decode_utf8_basic(sc); } } void decode_utf8_basic(string& sc) { int i = 0; int len = sc.length(); while (i < len) { unsigned char ch = sc[i]; if ((ch & 0x80) != 0) { /* highest bit is one - 3 possibilities */ if ((ch & 0xE0) == 0xC0) { /* 110x -> two byte unicode */ ch &= 0x1F; int val = decode_utf8_byte(sc, len, i+1); if (val == -1) { sc[i] = '?'; } else { int unicode = ch; unicode = unicode << 6; unicode += val; decode_utf8_add_unicode(unicode, sc, &len, i, 1); } i++; } else if ((ch & 0xF0) == 0xE0) { /* 1110x -> three byte unicode */ ch &= 0x0F; int val1 = decode_utf8_byte(sc, len, i+1); int val2 = decode_utf8_byte(sc, len, i+2); if (val1 == -1 || val2 == -1) { sc[i] = '?'; } else { int unicode = ch; unicode = unicode << 6; unicode += val1; unicode = unicode << 6; unicode += val2; decode_utf8_add_unicode(unicode, sc, &len, i, 2); } i += 2; } else if ((ch & 0xF8) == 0xF0) { /* 1111x -> four byte unicode */ ch &= 0x07; int val1 = decode_utf8_byte(sc, len, i+1); int val2 = decode_utf8_byte(sc, len, i+2); int val3 = decode_utf8_byte(sc, len, i+3); if (val1 == -1 || val2 == -1 || val3 == -1) { sc[i] = '?'; } else { int unicode = ch; unicode = unicode << 6; unicode += val1; unicode = unicode << 6; unicode += val2; unicode = unicode << 6; unicode += val3; decode_utf8_add_unicode(unicode, sc, &len, i, 3); } i += 3; } else { sc[i] = '?'; i++; } } else { /* regular ascii 7 bit character */ i++; } } } gle-graphics-4.2.4c/src/gle/cutils.cpp0000664000000000000000000004457111724767076016332 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ #include #include #include #include #include #include #ifdef HAVE_CONFIG_H #include "../config.h" #else #include "../config_noauto.h" #endif // For visual C++ -- should use numeric limits? #if defined(__WIN32__) && !defined(__NOCYGWIN__) #include #define isnan _isnan #define isinf _isnan #endif #ifndef isnan #define isnan(x) \ (sizeof (x) == sizeof (long double) ? isnan_ld (x) \ : sizeof (x) == sizeof (double) ? isnan_d (x) \ : isnan_f (x)) static inline int isnan_f (float x) { return x != x; } static inline int isnan_d (double x) { return x != x; } static inline int isnan_ld (long double x) { return x != x; } #endif #ifndef isinf #define isinf(x) \ (sizeof (x) == sizeof (long double) ? isinf_ld (x) \ : sizeof (x) == sizeof (double) ? isinf_d (x) \ : isinf_f (x)) static inline int isinf_f (float x) { return isnan (x - x); } static inline int isinf_d (double x) { return isnan (x - x); } static inline int isinf_ld (long double x) { return isnan (x - x); } #endif int gle_isnan(double v) { // Do not include or before gle_isnan // otherwise gle_isnan wil break on Mac OS/X and OS/2 return isnan(v); } int gle_isinf(double v) { // Do not include or before gle_isinf // otherwise gle_isinf wil break on Mac OS/X and OS/2 return isinf(v); } #include #include #include #include using namespace std; #include "cutils.h" #include "tokens/stokenizer.h" bool equals_rel(double v1, double v2) { if (v1 != 0.0) { return fabs(v1 - v2)/v1 < CUTILS_REL_PREC; } else { return fabs(v1 - v2) < CUTILS_REL_PREC; } } bool equals_rel_fine(double v1, double v2) { if (v1 != 0.0) { return fabs(v1 - v2)/v1 < CUTILS_REL_PREC_FINE; } else { return fabs(v1 - v2) < CUTILS_REL_PREC_FINE; } } char* gle_strupr(char *s) { char *tmp = s; while (*s != 0) { *s = toupper(*s); s++; } return tmp; } char* gle_strlwr(char *s) { char *tmp = s; while (*s != 0) { *s = tolower(*s); s++; } return tmp; } void gle_strlwr(string& s) { string::size_type len = s.length(); for (string::size_type i = 0; i < len; i++) { int ch = s[i]; if (ch >= 'A' && ch <= 'Z') { ch += 'a' - 'A'; s[i] = ch; } } } bool gle_onlyspace(const string& s) { string::size_type len = s.length(); for (string::size_type i = 0; i < len; i++) { if (s[i] != ' ' && s[i] != '\t') return false; } return true; } bool gle_isnumber(const char *s) { while (*s!='\0') { if (isdigit(*s) || *s=='.' || toupper(*s)=='E' ) s++; else return false; } return true; } bool gle_isalphanum(char ch) { if (ch >= 'A' && ch <= 'Z') return true; if (ch >= 'a' && ch <= 'z') return true; if (ch >= '0' && ch <= '9') return true; return false; } const char* str_find_char(const char* s, int ch1) { while (*s != 0) { if (*s == ch1) return s; s++; } return s; } const char* str_skip_brackets(const char* s, int ch1, int ch2) { int depth = 0; while (*s != 0) { if (*s == ch1) { depth++; } else if (*s == ch2) { depth--; if (depth <= 0) break; } s++; } return s; } int str_skip_brackets(const string& s, int pos, int ch1, int ch2) { int depth = 0; int len = s.length(); while (pos < len) { if (s[pos] == ch1) { depth++; } else if (s[pos] == ch2) { depth--; if (depth <= 0) break; } pos++; } return pos; } bool str_i_equals(const char* s1, const char* s2) { int i = 0; while (s1[i] != 0 && s2[i] != 0) { if (toupper(s1[i]) != toupper(s2[i])) return false; i++; } return s1[i] == 0 && s2[i] == 0; } bool str_ni_equals(const char* s1, const char* s2, int max) { int i = 0; while (s1[i] != 0 && s2[i] != 0 && i < max) { if (toupper(s1[i]) != toupper(s2[i])) return false; i++; } if (i == max) return true; return s1[i] == 0 && s2[i] == 0; } int str_i_cmp(const char* s1, const char* s2) { while (true) { int c1 = tolower((unsigned char)*(s1++)); int c2 = tolower((unsigned char)*(s2++)); if (c1 == 0 || c1 != c2) return c1 - c2; } } bool str_i_less::operator()(const std::string& s1, const std::string& s2) const { return str_i_cmp(s1.c_str(), s2.c_str()) < 0; } int str_i_str(const string& haystack, int from, const char* needle) { int endIndex = haystack.length(); int patternLength = strlen(needle); int endPattern = endIndex - patternLength + 1; if (endPattern < 0) { return -1; } if (patternLength <= 0) { return 0; } char patternChar0 = toupper(needle[0]); for (int ctrSrc = from; ctrSrc <= endPattern; ctrSrc++) { if (toupper(haystack[ctrSrc]) != patternChar0) { continue; } int ctrPat; for (ctrPat = 1; (ctrPat < patternLength) && (toupper(haystack[ctrSrc + ctrPat]) == toupper(needle[ctrPat])); ctrPat++) { ; // just loop } if (ctrPat == patternLength) { return ctrSrc; } } return -1; } int str_i_str(const string& haystack, const char* needle) { return str_i_str(haystack, 0, needle); } char* str_i_str(const char* haystack, const char* needle) { int endIndex = strlen(haystack); int patternLength = strlen(needle); int endPattern = endIndex - patternLength + 1; if (endPattern < 0) { return NULL; } if (patternLength <= 0) { return (char*)haystack; } char patternChar0 = toupper(needle[0]); for (int ctrSrc = 0; ctrSrc <= endPattern; ctrSrc++) { if (toupper(haystack[ctrSrc]) != patternChar0) { continue; } int ctrPat; for (ctrPat = 1; (ctrPat < patternLength) && (toupper(haystack[ctrSrc + ctrPat]) == toupper(needle[ctrPat])); ctrPat++) { ; // just loop } if (ctrPat == patternLength) { return (char*)haystack+ctrSrc; } } return NULL; } bool str_i_equals(const string& s1, const char* s2) { int l1 = s1.length(); for (int i = 0; i < l1; i++) { if (toupper(s1[i]) != toupper(s2[i])) return false; } return true; } bool str_i_equals(const string& s1, const string& s2) { int l1 = s1.length(); int l2 = s2.length(); if (l1 != l2) return false; for (int i = 0; i < l1; i++) { if (toupper(s1[i]) != toupper(s2[i])) return false; } return true; } int str_starts_with_trim(const string& str, const char* test) { int len = str.length(); int pos = 0; while (pos < len && (str[pos] == ' ' || str[pos] == '\t')) { pos++; } int idx = 0; while (pos < len && toupper(test[idx]) == toupper(str[pos])) { idx++; pos++; } if (test[idx] == 0) return pos; else return -1; } bool str_starts_with(const string& str, const char* find) { int idx = 0; int len = str.length(); while (idx < len && find[idx] == str[idx]) { idx++; } return find[idx] == 0; } bool str_i_starts_with(const string& str, const char* find) { int idx = 0; int len = str.length(); while (idx < len && toupper(find[idx]) == toupper(str[idx])) { idx++; } return find[idx] == 0; } bool str_i_ends_with(const string& str, const char* find) { int f_len = strlen(find); int s_len = str.length(); if (f_len > s_len) { return false; } else { int pos = 0; for (int i = s_len-f_len; i < s_len; i++) { if (toupper(str[i]) != toupper(find[pos++])) { return false; } } return true; } } void str_delete_start(string& str, char ch) { if (str.length() > 0 && str[0] == ch) { str.erase(0, 1); } } void str_replace_start(string& str, const char* find, const char* repl) { if (str_starts_with(str, find)) { str.erase(0, strlen(find)); str.insert(0, repl); } } int str_remove_all(char* str, char ch) { int pos = 0; int from = 0; while (str[from] != 0) { while (str[from] == ch) { from++; } str[pos++] = str[from++]; } str[pos] = 0; return pos; } bool str_contains(const char* str, char ch) { int i = 0; while (str[i] != 0 && str[i] != ch) { i++; } return str[i] == ch; } bool str_contains(const string& str, const char* elems) { int len = str.length(); for (int i = 0; i < len; i++) { if (str_contains(elems, str[i])) return true; } return false; } void str_prefix(int count, char ch, string* str) { if (count > 0) { stringstream prefix; for (int i = 0; i < count; i++) { prefix << ch; } prefix << (*str); *str = prefix.str(); } } void str_to_uppercase(const string& input, string& output) { output = input; int len = input.length(); for (int i = 0; i < len; i++) { output[i] = toupper(output[i]); } } void str_to_uppercase(string& output) { int len = output.length(); for (int i = 0; i < len; i++) { output[i] = toupper(output[i]); } } void str_uppercase_initial_capital(string& str) { if (str.length() >= 1) str[0] = toupper(str[0]); } void str_remove_quote(string& str) { int len = str.length(); if (len >= 2) { if ((str[0] == '\"' && str[len-1] == '\"') || (str[0] == '\'' && str[len-1] == '\'')) { str.erase(len-1); str.erase(0, 1); } } } void str_try_add_quote(string& str) { if (str.find(' ') == string::npos) return; str.insert(0, "\""); str += "\""; } bool str_only_space(const string& str) { unsigned int len = str.length(); for (unsigned int i = 0; i < len; i++) { if (str[i] != ' ') return false; } return true; } void str_trim_right(string& str) { int len = str.length(); if (len > 0) { bool is_space; int pos = len; do { pos--; char ch = str.at(pos); is_space = (ch == ' ' || ch == '\t' || ch == '\r' || ch == '\n'); } while (pos > 0 && is_space); if (pos == 0 && is_space) { str = ""; } else if (pos < len-1) { str.erase(pos+1); } } } void str_trim_left(string& str) { int len = str.length(); if (len > 0) { bool is_space; int pos = -1; do { pos++; char ch = str.at(pos); is_space = (ch == ' ' || ch == '\t' || ch == '\r' || ch == '\n'); } while (pos < len-1 && is_space); if (pos >= len-1 && is_space) { str = ""; } else if (pos > 0) { str.erase(0,pos); } } } void str_trim_left(string& str, string& prefix) { int len = str.length(); if (len > 0) { char ch; bool is_space; int pos = -1; do { pos++; ch = str.at(pos); is_space = (ch == ' ' || ch == '\t' || ch == '\r' || ch == '\n'); } while (pos < len-1 && is_space); if (pos >= len-1 && is_space) { prefix = str; str = ""; } else if (pos > 0) { prefix = str.substr(0,pos); str.erase(0,pos); } } } void str_trim_left_bom(string& str) { int len = str.length(); if (len >= 3 && ((unsigned char)str[0]) == 0xEF && ((unsigned char)str[1]) == 0xBB && ((unsigned char)str[2]) == 0xBF) { str.erase(0, 3); } } void str_trim_both(string& str) { str_trim_right(str); str_trim_left(str); } void str_replace_all(char* str, const char* find, const char* repl) { char* find_res = str_i_str((const char*)str, find); int len_repl = strlen(repl); int len_find = strlen(find); while (find_res != NULL) { int pos = (find_res - (char*)str); int len = strlen((const char*)str); for (int k = len; k > pos; k--) { str[k+len_repl-len_find] = str[k]; } strncpy((char*)str+pos, repl, len_repl); find_res = str_i_str((const char*)str, find); } } void str_replace_all(string& str, const char* find, const char* repl) { int find_res = str_i_str(str, find); int len_find = strlen(find); int len_repl = strlen(repl); while (find_res != -1) { str.erase(find_res, len_find); str.insert(find_res, repl); find_res = str_i_str(str, find_res+len_repl, find); } } void str_parse_get_next(const string& strg, const char* find, string& res) { char_separator sep(" \n\r", ""); tokenizer tok(strg, sep); while (tok.has_more()) { string token = tok.next_token(); if (str_i_equals(token, find) && tok.has_more()) { res = tok.next_token(); break; } } } void gle_int_to_string(int value, string* str) { char str_value[80]; sprintf(str_value, "%d", value); *str = str_value; } int gle_double_digits(double value, int prec) { if (value == 0.0) { return 0; } else { int digits = (int)floor(log10(value)); // Round value to desired precision, and check if overflows, i.e., > 10 value = floor(value / pow(10.0, digits-prec+1)+0.5+1e-6) / pow(10.0, prec-1); return value >= 10.0 ? digits+1 : digits; } } int gle_int_digits(int value) { return (int)floor(log10((double)value)); } void gle_int_to_string_bin(int value, string* binary) { vector values; while (value > 0) { values.push_back((unsigned char)(value % 2)); value /= 2; } stringstream out; for (int i = values.size()-1; i >= 0; i--) { out << (int)values[i]; } *binary = out.str(); } int lastchar(char *s, char c) { while (*s != '\0') { s++; } return *(--s) == c; } char *un_quote(char *cts) { int i = strlen(cts); if (*cts == '"') { *(cts+i-1) = 0; cts = cts + 1; } return cts; } int gle_pow_ii(int x, int n) { int pow = 1; if(n > 0) { while (true) { if ((n & 1) != 0) { pow *= x; } if ((n >>= 1) != 0) { x *= x; } else { break; } } } return pow; } int f_pow_ii(int* ap, int* bp) { return gle_pow_ii(*ap, *bp); } double f_r_sign(double* a, double* b) { double x = *a >= 0 ? *a : - *a; return *b >= 0 ? x : -x; } int f_i_sign(int *a, int* b) { int x = *a >= 0 ? *a : - *a; return *b >= 0 ? x : -x; } int gle_round_int(double val) { return (int)floor(val+0.5); } void str_get_system_error(ostream& error) { int error_id = errno; char* error_str = strerror(error_id); if (error_str == NULL || error_str[0] == 0) { error << "error #" << error_id; } else { error << error_str; } } #if defined(__UNIX__) string str_format(const char* format, ...) { #else string str_format(va_list format, ...) { #endif va_list ap; va_start(ap, format); string result; str_format(&result, (const char*)format, ap); va_end(ap); return result; } void str_format(string* str, const char *format, va_list ap) { /* this could be implemented with vsnprintf, but this does not seem to */ /* be compatible with many different OSes */ int pos = 0; stringstream sstr; while (format[pos] != 0) { if (format[pos] == '%') { if (format[pos+1] == '%') { sstr << (char)'%'; pos++; } else if (format[pos+1] == 'd') { int val = va_arg(ap, int); sstr << val; pos++; } else if (format[pos+1] == 's') { char* val = va_arg(ap, char*); sstr << val; pos++; } else { sstr << (char)format[pos]; } } else { sstr << (char)format[pos]; } pos++; } *str = sstr.str(); } int gle_pass_hex(const char* str, int from, int digits, int* err) { int value = 0; for (int i = 0; i < digits; i++) { value *= 16; int digit = str[from + i]; if (digit >= '0' && digit <= '9') { value += digit - '0'; } else if (digit >= 'a' && digit <= 'f') { value += digit - 'a' + 10; } else if (digit >= 'A' && digit <= 'F') { value += digit - 'A' + 10; } else { *err = from + i; } } return value; } void bool_vector_set_expand(vector* v, unsigned int i, bool value) { while (v->size() <= i) { v->push_back(false); } (*v)[i] = value; } bool bool_vector_is(vector* v, unsigned int i) { if (i >= v->size()) return false; else return (*v)[i]; } void split_into_lines(const std::vector* input, std::vector* output) { bool done = false; unsigned int pos = 0; while (!done) { std::ostringstream crLine; bool lineDone = false; while (!lineDone) { if (pos >= input->size()) { done = true; lineDone = true; } else { char ch = (char)input->at(pos++); if (ch == '\n' || ch == '\r') { if (pos < input->size() && input->at(pos) != ch && (input->at(pos) == '\n' || input->at(pos) == '\r')) { pos++; } lineDone = true; } else { crLine << ch; } } } output->push_back(crLine.str()); } } void CUtilsAssertImpl(const char* expr, const char* file, int line, const char* function) { cerr << "Internal error: '" << expr << "' in file '" << file << "' function: '" << function << "' line: " << line << endl; exit(1); } gle-graphics-4.2.4c/src/gle/var.cpp0000664000000000000000000004463711701413165015600 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ #include "all.h" #include "mem_limits.h" #include "token.h" #include "tokens/StringKeyHash.h" #include "gle-interface/gle-interface.h" #include "glearray.h" #include "polish.h" #include "pass.h" #include "var.h" #include "gprint.h" #include "cutils.h" #include #define true (!false) #define false 0 GLEVars* g_VarsInstance = NULL; GLEVars* getVarsInstance() { if (g_VarsInstance == NULL) g_VarsInstance = new GLEVars(); return g_VarsInstance; } GLELocalVars::GLELocalVars(int num) { values.resize(num); } GLELocalVars::~GLELocalVars() { } void GLELocalVars::expand(int num) { values.ensure(num + 1); } void GLELocalVars::copyFrom(GLELocalVars* other, int nb) { expand(nb); for (int i = 0; i < nb; i++) { values.set(i, other->values.get(i)); } } GLELocalVars* GLELocalVars::clone(int nb) { GLELocalVars* res = new GLELocalVars(nb); res->copyFrom(this, nb); return res; } void GLELocalVars::copyFrom(GLELocalVars* other) { copyFrom(other, other->size()); } GLEVarSubMap::GLEVarSubMap(GLEVarMap* parent) { m_Parent = parent; } GLEVarSubMap::~GLEVarSubMap() { } void GLEVarSubMap::clear() { m_Map.clear(); m_Idxs.clear(); } void GLEVarSubMap::var_add(const string& name, int idx) { m_Map.add_item(name, idx); m_Idxs.push_back(idx); } void GLEVarSubMap::removeFromParent() { // remove indices and names from varlist (indicate them as empty) for (vector::size_type i = 0; i < m_Idxs.size(); i++) { m_Parent->removeVar(m_Idxs[i]); } } void GLEVarSubMap::addToParent(GLEVarMap* parent) { m_Parent = parent; m_Parent->addVars(m_Map); } GLEVarBackup::GLEVarBackup() { } void GLEVarBackup::backup(GLEVars* vars, const vector& ids) { GLEMemoryCell data; GLE_MC_INIT(data); m_ids.assign(ids.begin(), ids.end()); m_values.resize(ids.size()); for (size_t i = 0; i < ids.size(); ++i) { vars->get(ids[i], &data); m_values.set(i, &data); } } void GLEVarBackup::restore(GLEVars* vars) { for (size_t i = 0; i < m_ids.size(); ++i) { vars->set(m_ids[i], m_values.get(i)); } } GLEVarMap::GLEVarMap() { m_IsTemp = false; } GLEVarMap::~GLEVarMap() { clear(); } int GLEVarMap::getFreeID() { if (m_Free.size() > 0) { int id = m_Free.back(); m_Free.pop_back(); return id; } else { return -1; } } int GLEVarMap::addVarIdx(const string& name) { int idx = getFreeID(); int type = str_var(name) ? 2 : 1; if (idx != -1) { m_Names[idx] = name; m_Types[idx] = type; } else { idx = m_Names.size(); m_Names.push_back(name); m_Types.push_back(type); } return idx; } void GLEVarMap::addVars(const StringIntHash& submap) { set free(m_Free.begin(), m_Free.end()); for (StringIntHash::const_iterator i(submap.begin()); i != submap.end(); ++i) { int idx = i->second; set::const_iterator found(free.find(idx)); if (found == free.end()) { unsigned int origSize = m_Names.size(); if (idx >= (int)origSize) { unsigned int newSize = idx + 1; m_Names.resize(newSize, "?"); m_Types.resize(newSize, 0); for (unsigned int j = origSize; j < newSize - 1; j++) { free.insert(j); } string name(i->first); int type = str_var(name) ? 2 : 1; m_Names[idx] = name; m_Types[idx] = type; } else { ostringstream err; err << "GLE internal error: variable not free when adding submap (name = " << i->first << ", id = " << idx << ")"; g_throw_parser_error(err.str()); } } else { free.erase(found); string name(i->first); int type = str_var(name) ? 2 : 1; m_Names[idx] = name; m_Types[idx] = type; } } m_Free.assign(free.begin(), free.end()); } int GLEVarMap::var_find_add(const string& name, bool* isnew) { *isnew = false; int idx = m_Map.try_get(name); if (idx == -1) { idx = addVarIdx(name); m_Map.add_item(name, idx); *isnew = true; } return idx; } int GLEVarMap::var_find_add_submap(const string& name, bool* isnew) { *isnew = false; GLEVarSubMap* sub = m_SubMap.back(); int idx = sub->var_get(name); if (idx == -1) { idx = addVarIdx(name); sub->var_add(name, idx); *isnew = true; } return idx; } int GLEVarMap::var_get(const string& name) { int idx = -1; int submap = m_SubMap.size()-1; while (submap >= 0 && (idx = m_SubMap[submap]->var_get(name)) == -1) { submap--; } if (idx != -1) return idx; else return m_Map.try_get(name); } const string& GLEVarMap::var_name(int idx) { return m_Names[idx]; } void GLEVarMap::list() { for (vector::size_type i = 0; i < m_Names.size(); i++) { if (m_Types[i] != -1) { cout << m_Names[i] << " (" << i << ")" << endl; } } } void GLEVarMap::removeVar(int idx) { m_Free.push_back(idx); m_Names[idx] = "?"; m_Types[idx] = -1; } GLEVarSubMap* GLEVarMap::pushSubMap() { GLEVarSubMap* sub = new GLEVarSubMap(this); m_SubMap.push_back(sub); return sub; } void GLEVarMap::pushSubMap(GLEVarSubMap* submap) { submap->addToParent(this); m_SubMap.push_back(submap); } void GLEVarMap::popSubMap() { GLEVarSubMap* sub = m_SubMap.back(); sub->removeFromParent(); m_SubMap.pop_back(); } void GLEVarMap::clearSubMaps() { m_SubMap.clear(); } void GLEVarMap::clear() { m_Names.clear(); m_Types.clear(); m_Map.clear(); m_Free.clear(); clearSubMaps(); } GLEVars::GLEVars() { m_LocalMap = NULL; local_var = NULL; local_var_stack_level = 0; } GLEVars::~GLEVars() { } bool GLEVars::check(int *j) { int var = *j; /* convert var index and return true if var is local */ if (GLE_VAR_IS_LOCAL(var)) { var &= ~GLE_VAR_LOCAL_BIT; if (m_LocalMap == NULL) { gprint("No local variables assigned"); *j = 0; } else if (var < 0 || var >= m_LocalMap->size() || var >= NUM_LOCAL) { gprint("Local variable index out of range: %d is not in 0-%d", var, m_LocalMap->size()); *j = 0; } else { *j = var; return true; } } else { if (var < 0 || var >= m_GlobalMap.size()) { gprint("Global variable index out of range: %d is not in 0-%d", var, m_GlobalMap.size()); *j = 0; } } return false; } char* GLEVars::getName(int var) { if (check(&var)) { return (char*)m_LocalMap->var_name(var).c_str(); } else { return (char*)m_GlobalMap.var_name(var).c_str(); } } double GLEVars::getDouble(int var) { if (check(&var)) { return local_var->values.getDouble(var); } else { return m_Global.getDouble(var); } } void GLEVars::setDouble(int var, double v) { if (check(&var)) { local_var->values.setDouble(var, v); } else { m_Global.setDouble(var, v); } } void GLEVars::set(int var, GLEMemoryCell* value) { if (check(&var)) { local_var->values.set(var, value); } else { m_Global.set(var, value); } } void GLEVars::get(int var, GLEMemoryCell* value) { if (check(&var)) { GLE_MC_COPY(value, local_var->values.get(var)); } else { GLE_MC_COPY(value, m_Global.get(var)); } } GLEString* GLEVars::getString(int var) { GLEDataObject* object = 0; if (check(&var)) { object = local_var->values.getObject(var); } else { object = m_Global.getObject(var); } if (object != 0 && object->getType() == GLEObjectTypeString) { return (GLEString*)object; } else { return new GLEString(); } } GLEDataObject* GLEVars::getObject(int var) { if (check(&var)) { return NULL; } else { return (GLEDataObject*)m_Global.getObject(var); } } void GLEVars::setString(int var, GLEString* s) { if (check(&var)) { local_var->values.setObject(var, s); } else { m_Global.setObject(var, s); } } void GLEVars::setObject(int var, GLEDataObject* obj) { if (check(&var)) { // FIXME: no support for objects in local vars } else { m_Global.setObject(var, obj); } } void GLEVars::init(int var, int type) { if (check(&var)) { if (type == 2) local_var->values.setObject(var, new GLEString()); else local_var->values.setDouble(var, 0.0); } else { if (type == 2) m_Global.setObject(var, new GLEString()); else m_Global.setDouble(var, 0.0); } } // First search in local vars, then in global vars void GLEVars::find(const char *name, int *idx, int *type) { *idx = -1; if (m_LocalMap != NULL) { int l_idx = m_LocalMap->var_get(name); if (l_idx != -1) { *type = m_LocalMap->getType(l_idx); *idx = l_idx | GLE_VAR_LOCAL_BIT; return; } } int g_idx = m_GlobalMap.var_get(name); if (g_idx != -1) { *type = m_GlobalMap.getType(g_idx); *idx = g_idx; } } void GLEVars::findAdd(const char *name, int *idx, int *type) { bool isnew; if (m_LocalMap != NULL && m_LocalMap->hasSubMap()) { // cout << "adding to submap: " << name << endl; int l_idx = m_LocalMap->var_find_add_submap(name, &isnew); *type = m_LocalMap->getType(l_idx); *idx = l_idx | GLE_VAR_LOCAL_BIT; local_var->expand(l_idx); if (isnew) init(*idx, *type); } else { if (m_LocalMap != NULL) { // cout << "adding to local: " << name << endl; int l_idx = m_LocalMap->var_get(name); if (l_idx != -1) { *type = m_LocalMap->getType(l_idx); *idx = l_idx | GLE_VAR_LOCAL_BIT; return; } } string name_s = name; *idx = m_GlobalMap.var_find_add(name_s, &isnew); *type = m_GlobalMap.getType(*idx); // cout << "adding to global: " << name << " idx = " << *idx << " type = " << *type << " new = " << isnew << endl; if (isnew) { expandGlobalVars(*idx); init(*idx, *type); } } } void GLEVars::clear() { clearGlobal(); clearLocal(); } void GLEVars::clearGlobal() { m_GlobalMap.clear(); } void GLEVars::clearLocal() { m_LocalMap = NULL; } int GLEVars::getNbLocal() { return m_LocalMap == NULL ? 0 : m_LocalMap->size(); } void GLEVars::allocLocal(int num) { local_var_stack_level++; if (local_var_stack_level >= (int)local_var_stack.size()) { if (local_var_stack_level == 1) { // Initialize first level local_var_stack.push_back(NULL); } local_var = new GLELocalVars(num); local_var_stack.push_back(local_var); } else { local_var = local_var_stack[local_var_stack_level]; local_var->expand(num); } } void GLEVars::freeLocal() { if (local_var_stack_level == 0) { cerr << "GLE internal error: too many pops of local variable stack" << endl; exit(1); } local_var_stack_level--; local_var = local_var_stack[local_var_stack_level]; } GLEVarMap* GLEVars::swapLocalMap(GLEVarMap* map) { GLEVarMap* old = m_LocalMap; m_LocalMap = map; return old; } void GLEVars::addLocal(const string& name, int *idx, int *type) { bool isnew; int l_idx = m_LocalMap->var_find_add(name, &isnew); *type = m_LocalMap->getType(l_idx); *idx = l_idx | GLE_VAR_LOCAL_BIT; } GLEVarSubMap* GLEVars::addLocalSubMap() { if (m_LocalMap == NULL) { m_LocalMap = new GLEVarMap(); m_LocalMap->setTemp(true); var_alloc_local(0); } return m_LocalMap->pushSubMap(); } void GLEVars::addLocalSubMap(GLEVarSubMap* submap) { if (m_LocalMap == NULL) { m_LocalMap = new GLEVarMap(); m_LocalMap->setTemp(true); var_alloc_local(0); } m_LocalMap->pushSubMap(submap); } void GLEVars::removeLocalSubMap() { if (m_LocalMap != NULL) { if (m_LocalMap->isTemp()) { delete m_LocalMap; m_LocalMap = NULL; var_free_local(); } else { m_LocalMap->popSubMap(); } } } void GLEVars::findDN(GLEVarSubMap* map, int *idx, int *var, int *nd) { *nd = 0; for (int i = 0; i < map->size(); i++) { int lidx = map->get(i); const string& name = m_LocalMap->var_name(lidx); if (str_ni_equals(name.c_str(), "D", 1)) { int d = atoi(name.c_str()+1); // cout << "name = " << name << " idx = " << d << endl; // FIXME: calling code supports at most 10 data sets if (d > 0 && d < MAX_NB_DATA && (*nd) < 10) { *idx = lidx | GLE_VAR_LOCAL_BIT; *var = d; (*nd)++; idx++; var++; } } } // cout << "res = " << *nd << endl; } const char* GLEVars::getObjectTypeName(int type) { switch (type) { case GLEObjectTypeBool: return "boolean"; case GLEObjectTypeInt: return "int"; case GLEObjectTypeDouble: return "double"; case GLEObjectTypeString: return "string"; case GLEObjectTypeArray: return "array"; case GLEObjectTypeObjectRep: return "object"; case GLEObjectTypeDynamicSub: return "subroutine"; } return "unknown"; } string GLEVars::typeError(int var, int type) { stringstream str; if (check(&var)) { str << "local variable '" << m_LocalMap->var_name(var) << "' has unknown type"; } else { str << "global variable '" << m_GlobalMap.var_name(var); str << "' of incorrect type: " << getObjectTypeName(m_Global.getType(var)); str << " <> " << getObjectTypeName(type); } return str.str(); } int var_type(const string& name) { return str_var(name) ? 2 : 1; } bool str_var(const char* s) { int i = strlen(s); if (*(s+i-1)=='$') return true; else return false; } bool str_var(const string& s) { if (s[s.length()-1] == '$') return true; else return false; } int valid_var(const char* s) { return true; } bool str_var_valid_name(const string& name) { return str_var(name) && var_valid_name(name); } bool var_valid_name(const string& name) { if (name.length() <= 0) { return false; } if (name[0] >= '0' && name[0] <= '9') { return false; } for (string::size_type i = 0; i < name.length(); i++) { char ch = name[i]; if (!((ch >= 'A' && ch <= 'Z') || (ch >= 'a' && ch <= 'z') || (ch >= '0' && ch <= '9') || (ch == '$') || (ch == '_'))) { return false; } } return true; } void ensure_valid_var_name(const string& name) throw(ParserError) { if (!var_valid_name(name)) { g_throw_parser_error("illegal variable name '", name.c_str(), "'"); } } void ensure_valid_var_name(Tokenizer* tokens, const string& name) throw(ParserError) { if (!var_valid_name(name)) { throw tokens->error(string("illegal variable name '")+name+"'"); } } /* * DEPRECATED CODE */ bool var_check(int *j) { return getVarsInstance()->check(j); } GLELocalVars* get_local_vars() { return getVarsInstance()->getLocalVars(); } void var_alloc_local(int num) { getVarsInstance()->allocLocal(num); } void var_alloc_local(GLEVarMap* map) { getVarsInstance()->allocLocal(map); } void var_free_local() { getVarsInstance()->freeLocal(); } void var_set(int var, GLEMemoryCell* value) { getVarsInstance()->set(var, value); } void var_set(int var, double v) { getVarsInstance()->setDouble(var, v); } void var_get(int var, double *v) { *v = getVarsInstance()->getDouble(var); } void var_setstr(int var, char *s) { GLERC str = new GLEString(s); getVarsInstance()->setString(var, str.get()); } void var_getstr(int var, char *s) { GLERC str = getVarsInstance()->getString(var); str->toUTF8(s); } void var_getstr(int var, string& s) { GLERC str = getVarsInstance()->getString(var); str->toUTF8(s); } char* var_get_name(int var) { return getVarsInstance()->getName(var); } void var_nlocal(int *l) { *l = getVarsInstance()->getNbLocal(); } void var_clear_global() { getVarsInstance()->clearGlobal(); } void var_clear() { getVarsInstance()->clear(); } GLEVarMap* var_swap_local_map(GLEVarMap* map) { return getVarsInstance()->swapLocalMap(map); } void var_set_local_map(GLEVarMap* map) { getVarsInstance()->setLocalMap(map); } void var_clear_local() { getVarsInstance()->clearLocal(); } bool has_local_var_map() { return getVarsInstance()->hasLocalMap(); } GLEVarMap* get_local_var_map() { return getVarsInstance()->getLocalMap(); } void var_def(const char *s, double x) { int idx, type=1; var_findadd(s, &idx, &type); var_set(idx, x); } void var_findadd_set(const char* name, double value) { int idx, type = 1; var_findadd(name, &idx, &type); var_set(idx, value); } void var_findadd_set(const char* name, const string& value) { int idx, type = 2; var_findadd((char*)name, &idx, &type); var_setstr(idx, (char*)value.c_str()); } void var_add_local(const string& name, int *idx, int *type) { getVarsInstance()->addLocal(name, idx, type); } void var_findadd(const char *name, int *idx, int *type) { getVarsInstance()->findAdd(name, idx, type); } // First search in local vars, then in global vars void var_find(const char *name, int *idx, int *type) { getVarsInstance()->find(name, idx, type); } void var_find_dn(GLEVarSubMap* map, int *idx, int *var, int *nd) { return getVarsInstance()->findDN(map, idx, var, nd); } gle-graphics-4.2.4c/src/gle/glebtool.cpp0000664000000000000000000001555511653605120016614 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ #include #include #include #include #include #include using namespace std; #include "basicconf.h" #include "cutils.h" #include "file_io.h" #include "tokens/stokenizer.h" void GLEFindRelPath(const string& p1, const string& p2, string* result, int* nb) { char path = '/'; #ifdef __WIN32__ path = '\\'; #endif char spliton[2]; spliton[0] = path; spliton[1] = 0; string nxt1; string nxt2; char_separator separator(spliton, ""); tokenizer tok1(p1, separator); tokenizer tok2(p2, separator); bool more1 = tok1.has_more(); bool more2 = tok2.has_more(); while (more1 && more2) { nxt1 = tok1.next_token(); nxt2 = tok2.next_token(); if (!str_i_equals(nxt1, nxt2)) break; more1 = tok1.has_more(); more2 = tok2.has_more(); } string rpath; int nb_back = 0; if (str_i_equals(nxt1, nxt2)) { int pos = 0; while (tok2.has_more()) { if (pos != 0) rpath += spliton; rpath += tok2.next_token(); pos++; } } else { rpath = nxt2; while (tok2.has_more()) { rpath += spliton; rpath += tok2.next_token(); } if (more1) { nb_back++; while (tok1.has_more()) { tok1.next_token(); nb_back++; } } } *result = rpath; *nb = nb_back; } int do_setrelpath(char** argv) { string bin = argv[0]; string lib = argv[1]; string data = argv[2]; string doc = argv[3]; string config = argv[4]; cout << "GLE will be installed as follows:" << endl; cout << "Binary: \"" << bin << "\"" << endl; cout << "Library: \"" << lib << "\"" << endl; /* LIB dir */ string rel_lib; int rel_lib_nb; GLEFindRelPath(bin, lib, &rel_lib, &rel_lib_nb); cout << " (Up: " << rel_lib_nb << ", Relative: \"" << rel_lib << "\")" << endl; /* GLE_TOP */ string rel_data; int rel_data_nb; GLEFindRelPath(bin, data, &rel_data, &rel_data_nb); cout << "GLE_TOP: \"" << data << "\"" << endl; cout << " (Up: " << rel_data_nb << ", Relative: \"" << rel_data << "\")" << endl; /* DOC dir */ string rel_doc; int rel_doc_nb; GLEFindRelPath(data, doc, &rel_doc, &rel_doc_nb); cout << "DOC: \"" << doc << "\"" << endl; cout << " (Up: " << rel_doc_nb << ", Relative: \"" << rel_doc << "\")" << endl; /* Create config.h */ vector lines; ifstream ifile(config.c_str()); if (!ifile.good()) { cout << "Can't open: '" << config << "'" << endl; return -1; } while (!ifile.eof()) { string line; ReadFileLine(ifile, line); if (str_i_str(line.c_str(), "[SETRELPATH]")) { break; } lines.push_back(line); } ifile.close(); ofstream ofile(config.c_str()); for (vector::size_type i = 0; i < lines.size(); i++) { ofile << lines[i] << endl; } ofile << endl; ofile << "/* [SETRELPATH]: The following lines have been added by 'build/bin/setrelpath' */" << endl; ofile << "#define GLETOP_CD " << rel_data_nb << endl; ofile << "#define GLETOP_REL \"" << rel_data << "\"" << endl; ofile << "#define GLETOP_ABS \"" << data << "\"" << endl; ofile << endl; ofile << "#define GLELIB_CD " << rel_lib_nb << endl; ofile << "#define GLELIB_REL \"" << rel_lib << "\"" << endl; ofile << "#define GLELIB_ABS \"" << lib << "\"" << endl; ofile << endl; ofile << "#define GLEDOC_CD " << rel_doc_nb << endl; ofile << "#define GLEDOC_REL \"" << rel_doc << "\"" << endl; ofile << "#define GLEDOC_ABS \"" << doc << "\"" << endl; ofile << endl; ofile.close(); return 0; } int do_latexdef(char** argv) { string fname = argv[0]; string def = argv[1]; string value = argv[2]; ofstream ofile(fname.c_str()); ofile << "\\newcommand{\\" << def << "}[1]{"; if (value == "1") { ofile << "#1"; } ofile << "}" << endl; ofile.close(); return 0; } int do_latex_gle_version(char** argv) { string fname = argv[0]; ofstream ofile(fname.c_str(), ios::app); ofile << "\\newcommand{\\gleversion}{" << GLEVN << "}" << std::endl; ofile.close(); return 0; } int main(int argc, char** argv) { string option = argv[1]; if (option == "-setrelpath") { #ifndef __WIN32__ return do_setrelpath(argv + 2); #else return 0; #endif } else if (option == "-latexdef") { return do_latexdef(argv + 2); } else if (option == "-latexversion") { return do_latex_gle_version(argv + 2); } return -1; } gle-graphics-4.2.4c/src/gle/graph2.cpp0000664000000000000000000037051511725234201016166 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ #define GRAPHDEF extern #include #include "all.h" #include "tokens/stokenizer.h" #include "cutils.h" #include "bitmap/img2ps.h" #include "op_def.h" #include "mem_limits.h" #include "token.h" #include "gle-interface/gle-interface.h" #include "glearray.h" #include "polish.h" #include "pass.h" #include "var.h" #include "graph.h" #include "begin.h" #include "color.h" #include "leastsq.h" #include "core.h" #include "axis.h" #include "file_io.h" #include "gprint.h" #include "key.h" #include "glearray.h" #include "keyword.h" #include "run.h" #include "sub.h" #include "numberformat.h" #define DEFAULT_STEPS 100 extern int g_nbar; extern GLEAxis xx[]; extern vector g_fcalls; extern vector g_funder; extern GLEColorMap* g_colormap; extern GLEGlobalSource* g_Source; extern GLEGraphBlockData* g_graphBlockData; void box3d(double x1, double y1, double x2, double y2,double x3d, double y3d, const GLERC& sidecolor, const GLERC& topcolor, int notop); void var_clear_local(void); void do_svg_smooth(double* , int); void draw_errbar(double x, double y, double eup, double ewid, GLEDataSet* ds); void draw_herrbar(double x, double y, double eup, double ewid, GLEDataSet* ds); void do_draw_lines(double* xt, double* yt, int* m, int npts, GLEDataSet* ds); void do_draw_steps(double* xt, double* yt, int* m, int npts, GLEDataSet* ds); void do_draw_fsteps(double* xt, double* yt, int* m, int npts, GLEDataSet* ds); void do_draw_hist(double* xt, double* yt, int* m, int npts, GLEDataSet* ds); void do_draw_bar(double* xt, double* yt, int* m, int npts, GLEDataSet* ds); void do_draw_impulses(double* xt, double* yt, int* m, int npts, GLEDataSet* ds); void do_dataset_key_entries(); bool hasDataset(int di) { return di > 0 && di <= ndata && dp[di] != NULL && !dp[di]->undefined(); } GLEDataSet* getDataset(int di, const char* descr = 0) { if (hasDataset(di)) { return dp[di]; } else { ostringstream err; if (descr != 0) { err << descr << " "; } err << "dataset d" << di << " not defined"; g_throw_parser_error(err.str()); return 0; } } double fnx(double value, GLEDataSet* dataSet) { GLEAxis* axis = dataSet->getAxis(GLE_DIM_X); GLERange* range = dataSet->getDim(GLE_DIM_X)->getRange(); double wmin = range->getMin(); double wmax = range->getMax(); if (axis->negate) { value = wmax - (value - wmin); } if (axis->log) { return (log10(value) - log10(wmin))/(log10(wmax) - log10(wmin)) * xlength + xbl; } else { return (value - wmin)/(wmax - wmin) * xlength + xbl; } } double fny(double value, GLEDataSet* dataSet) { GLEAxis* axis = dataSet->getAxis(GLE_DIM_Y); GLERange* range = dataSet->getDim(GLE_DIM_Y)->getRange(); double wmin = range->getMin(); double wmax = range->getMax(); if (axis->negate) { value = wmax - (value - wmin); } if (axis->log) { return (log10(value) - log10(wmin))/(log10(wmax) - log10(wmin)) * ylength + ybl; } else { return (((value - wmin)/(wmax - wmin)) * ylength + ybl); } } GLEPoint fnXY(double x, double y, GLEDataSet* dataSet) { return GLEPoint(fnx(x, dataSet), fny(y, dataSet)); } double graph_xgraph(double v) { // cout << "graph_xmin: " << graph_xmin << " graph_xmax: " << graph_xmax << endl; // cout << "graph_x1: " << graph_x1 << " graph_x2: " << graph_x2 << endl; if (graph_xmax == graph_xmin) return 0.0; if (xx[GLE_AXIS_X].negate) { v = (graph_xmax - v) + graph_xmin; } if (xx[GLE_AXIS_X].log) { return graph_x1 + (log10(v)-log10(graph_xmin))/(log10(graph_xmax)-log10(graph_xmin))*(graph_x2-graph_x1); } else { return graph_x1 + (v-graph_xmin)/(graph_xmax-graph_xmin)*(graph_x2-graph_x1); } } double graph_ygraph(double v) { if (graph_ymax == graph_ymin) return 0.0; if (xx[GLE_AXIS_Y].negate) { v = (graph_ymax - v) + graph_ymin; } if (xx[GLE_AXIS_Y].log) { return graph_y1 + (log10(v)-log10(graph_ymin))/(log10(graph_ymax)-log10(graph_ymin))*(graph_y2-graph_y1); } else { return graph_y1 + (v-graph_ymin)/(graph_ymax-graph_ymin)*(graph_y2-graph_y1); } } double bar_get_min_interval_bars(int bar) { double min = GLE_INF; for (int idx = 0; idx < br[bar]->ngrp; idx++) { int di = br[bar]->to[idx]; if (hasDataset(di)) { GLEDataPairs data(dp[di]); min = std::min(min, data.getMinXInterval()); } } return min; } bool bar_has_type(bool horiz) { for (int bar = 1; bar <= g_nbar; bar++) { if (horiz == br[bar]->horiz) return true; } return false; } bar_struct::bar_struct() { ngrp = 0; width = 0.0; dist = 0.0; x3d = 0.0; y3d = 0.0; notop = false; horiz = false; layer = 0; for (int i = 0; i < 20; i++) { from[i] = 0; to[i] = 0; lwidth[i] = 0.0; lstyle[i][0] = 0; fill[i] = g_get_color_hex(GLE_COLOR_BLACK); color[i] = g_get_color_hex(GLE_COLOR_BLACK); side[i] = g_get_color_hex(GLE_COLOR_BLACK); top[i] = g_get_color_hex(GLE_COLOR_BLACK); } } GLEGraphPartBars::GLEGraphPartBars() { } GLEGraphPartBars::~GLEGraphPartBars() { } bool GLEGraphPartBars::shouldDraw(int /* b */) { return true; } std::set GLEGraphPartBars::getLayers() { std::set result; for (int b = 1; b <= g_nbar; b++) { if (shouldDraw(b)) { result.insert(br[b]->layer); } } return result; } void GLEGraphPartBars::drawLayerObject(int layer, GLEMemoryCell* object) { GLEClassInstance* classObj = getGLEClassInstance(object, g_graphBlockData->getGraphBlockBase()->getClassDefinitions()->getBar()); if (classObj != 0) { int index = classObj->getArray()->getInt(0); if (shouldDraw(index) && br[index]->layer == layer) { g_gsave(); drawBar(index); g_grestore(); } } } void GLEGraphPartBars::drawBar(int b) { if (br[b] == 0 || br[b]->ngrp == 0) { ostringstream err; err << "bar set " << b << " not properly defined"; g_throw_parser_error(err.str()); } int nbars = br[b]->ngrp; double min_int = bar_get_min_interval_bars(b); if (br[b]->width == 0) br[b]->width = min_int/(nbars * 2); if (br[b]->dist == 0) br[b]->dist = br[b]->width * 1.4; for (int bi = 0; bi < nbars; bi++) { int df = br[b]->from[bi]; int dt = br[b]->to[bi]; // validate "to" dataset if (!hasDataset(dt)) { ostringstream err; err << "bar dataset d" << dt << " not defined"; g_throw_parser_error(err.str()); } // set bar style g_set_line_width(br[b]->lwidth[bi]); g_set_line_style(&br[b]->lstyle[bi][0]); if (br[b]->color[bi].isNull()) { br[b]->color[bi] = g_get_color_hex(GLE_COLOR_BLACK); } g_set_color(br[b]->color[bi]); g_set_fill(br[b]->fill[bi]); // compute sizes double bwid = br[b]->width; double bdis = br[b]->dist; double whole_wid = (nbars-1) * bdis + bwid; // get data GLEDataSet* toDataSet = dp[dt]; toDataSet->checkRanges(); GLEDataPairs toData(toDataSet); // check if has "from" dataset bool hasfrom = hasDataset(df); if (hasfrom) { if (dp[df]->np != dp[dt]->np) { ostringstream err; err << "bar 'from' dataset d" << df << " and 'to' dataset d" << dt << " "; err << "have a different number of points (" << dp[df]->np << " <> " << dp[dt]->np << ")"; g_throw_parser_error(err.str()); } GLEDataPairs fromData(dp[df]); for (unsigned int i = 0; i < dp[dt]->np; i++) { if (fromData.getM(i) != toData.getM(i)) { ostringstream err; err << "bar 'from' dataset d" << df << " and 'to' dataset d" << dt << " "; err << "have inconsistent missing values at point " << (i + 1); g_throw_parser_error(err.str()); } if (!equals_rel(fromData.getX(i), toData.getX(i))) { ostringstream err; err << "bar 'from' dataset d" << df << " and 'to' dataset d" << dt << " "; err << "have different x-values at point " << (i + 1) << " ("; err << fromData.getX(i) << " <> " << toData.getX(i) << ")"; g_throw_parser_error(err.str()); } if (!toData.getM(i)) { draw_bar(toData.getX(i) - whole_wid/2 + bi*bdis, fromData.getY(i), toData.getY(i), bwid, br[b], bi, toDataSet); } } } else { for (unsigned int i = 0; i < dp[dt]->np; i++) { if (!toData.getM(i)) { draw_bar(toData.getX(i) - whole_wid/2 + bi*bdis, 0.0, toData.getY(i), bwid, br[b], bi, toDataSet); } } } } } double graph_bar_pos(double xpos, int bar, int set) throw(ParserError) { if (set < 1 || set > g_nbar) { g_throw_parser_error("illegal bar set: ", set); } int nb = br[set]->ngrp; if (bar < 1 || bar > nb) { g_throw_parser_error("illegal bar number: ", bar); } double bwid = br[set]->width; double bdis = br[set]->dist; double whole_wid = (nb-1)*bdis+bwid; // cout << "bwid: " << bwid << endl; // cout << "bdis: " << bdis << endl; // cout << "nb: " << nb << endl; // cout << "whole: " << whole_wid << endl; if (br[set]->horiz) { return graph_ygraph(xpos-whole_wid/2+(bar-1)*bdis+bwid/2); } else { return graph_xgraph(xpos-whole_wid/2+(bar-1)*bdis+bwid/2); } } void draw_bar(double x, double yf, double yt, double wd, bar_struct* barset, int di, GLEDataSet* toDataSet) throw(ParserError) { /* draw a bar, wd wide, centere at x , from yf, to yt */ x = x + wd/2; double x1 = x - wd/2; double y1 = yf; double x2 = x + wd/2; double y2 = yt; double x3d = barset->x3d; double y3d = barset->y3d; GLERC topcolor = barset->top[di]; GLERC sidecolor = barset->side[di]; int notop = barset->notop; if (barset->horiz) { toDataSet->clip(&y1, &x1); toDataSet->clip(&y2, &x2); double bx1 = x1; double bx2 = x2; x1 = fnx(y1, toDataSet); x2 = fnx(y2, toDataSet); y1 = fny(bx1, toDataSet); y2 = fny(bx2, toDataSet); } else { toDataSet->clip(&x1, &y1); toDataSet->clip(&x2, &y2); x1 = fnx(x1, toDataSet); x2 = fnx(x2, toDataSet); y1 = fny(y1, toDataSet); y2 = fny(y2, toDataSet); } if (x1 == x2 || y1 == y2) { // zero size bar return; } if (barset->style[di] == "") { if (x3d != 0.0) { box3d(x1, y1, x2, y2, x3d, y3d, sidecolor, topcolor, notop); } g_box_fill(x1, y1, x2, y2); g_box_stroke(x1, y1, x2, y2); } else { double args[7]; args[0] = 0; args[1] = x1; args[2] = y1; args[3] = x2; args[4] = y2; args[5] = yt; args[6] = di; string name = string("BAR_") + barset->style[di]; call_sub_byname(name, args, 6, "(used for defining bar style)"); } } void box3d(double x1, double y1, double x2, double y2, double x3d, double y3d, const GLERC& sidecolor, const GLERC& topcolor, int notop) { /* assuming x3d is positive for the moment */ double xx; if (x1>x2) { xx = x1; x1 = x2; x2 = xx;} if (y1>y2) { xx = y1; y1 = y2; y2 = xx;} x3d = x3d*(x2-x1); y3d = y3d*(x2-x1); if (x3d<0) { xx = x1; x1 = x2; x2 = xx; } g_gsave(); g_set_path(true); g_set_line_join(1); /* use rounded lines to avoid ucky peeks */ g_newpath(); g_move(x2,y1); g_line(x2+x3d,y1+y3d); g_line(x2+x3d,y2+y3d); g_line(x2,y2); g_line(x2,y1); if (!topcolor.isNull()) { g_set_fill(sidecolor); g_fill(); } g_stroke(); g_newpath(); if (!notop) { /* now draw top of bar */ g_move(x2,y2); g_line(x2+x3d,y2+y3d); g_line(x1+x3d,y2+y3d); g_line(x1,y2); g_line(x2,y2); if (!topcolor.isNull()) { g_set_fill(topcolor); g_fill(); } g_stroke(); } g_newpath(); g_set_path(false); g_newpath(); g_grestore(); } void gr_thrownomiss(void) { for (int i=1;i<=ndata;i++) { if (dp[i]!=NULL) if (dp[i]->nomiss && dp[i]->np>0) { gr_nomiss(i); /* throw away missing points */ } } } void gr_nomiss(int i) { if (!hasDataset(i)) { return; } unsigned int nbPoints = 0; GLEDataSet* dataSet = dp[i]; dataSet->validateDimensions(); GLEArrayImpl* dimensions = dataSet->getData(); vector miss(dataSet->getMissingValues()); for (unsigned int dim = 0; dim < dimensions->size(); dim++) { GLEDataObject* data = dimensions->getObject(dim); if (data != 0 && data->getType() == GLEObjectTypeArray) { GLEArrayImpl* array = static_cast(data); unsigned int target = 0; for (unsigned int j = 0; j < array->size(); j++) { if (!miss[j]) { array->set(target++, array->get(j)); } } array->resize(target); nbPoints = max(nbPoints, target); } } dataSet->np = nbPoints; } void reset_axis_ranges() { for (int axis = GLE_AXIS_X; axis <= GLE_AXIS_Y0; axis++) { xx[axis].initRange(); } } bool should_autorange_based_on_lets() { for (int axis = GLE_AXIS_X; axis <= GLE_AXIS_Y0; axis++) { GLEAxis* ax = &xx[axis]; if (!ax->getRange()->hasBoth()) { if (ax->getNbDimensions() > 0) return true; if (g_colormap != NULL && g_colormap->getData() != NULL) return true; } } return false; } void window_set(bool showError) throw(ParserError) { // Called twice: // - Before processing "let" commands - then "showError = false" // - After processing "let" commands - then "showError = true" for (int axis = GLE_AXIS_X; axis <= GLE_AXIS_Y0; axis++) { bool is_horiz = axis_horizontal(axis); bool has_bar = bar_has_type(is_horiz); xx[axis].roundDataRange(has_bar, !is_horiz); } for (int axis = GLE_AXIS_X; axis <= GLE_AXIS_Y0; axis++) { bool is_horiz = axis_horizontal(axis); bool has_bar = bar_has_type(is_horiz); int ortho = is_horiz ? GLE_AXIS_Y : GLE_AXIS_X; int clone = is_horiz ? GLE_AXIS_X : GLE_AXIS_Y; xx[axis].makeUpRange(&xx[clone], &xx[ortho], has_bar, !is_horiz); if (showError && xx[axis].getRange()->invalidOrEmpty()) { stringstream err; err << "illegal range for " << axis_type_name(axis) << ": "; xx[axis].getRange()->printRange(err); g_throw_parser_error(err.str()); } } for (int axis = GLE_AXIS_X; axis <= GLE_AXIS_Y0; axis++) { GLEAxis* ax = &xx[axis]; for (int dim = 0; dim < ax->getNbDimensions(); dim++) { ax->getDim(dim)->getRange()->copyIfNotSet(ax->getRange()); } } } void store_window_bounds_to_vars() { var_findadd_set("XGMIN", xx[GLE_AXIS_X].getMin()); var_findadd_set("XGMAX", xx[GLE_AXIS_X].getMax()); var_findadd_set("YGMIN", xx[GLE_AXIS_Y].getMin()); var_findadd_set("YGMAX", xx[GLE_AXIS_Y].getMax()); var_findadd_set("X2GMIN", xx[GLE_AXIS_X2].getMin()); var_findadd_set("X2GMAX", xx[GLE_AXIS_X2].getMax()); var_findadd_set("Y2GMIN", xx[GLE_AXIS_Y2].getMin()); var_findadd_set("Y2GMAX", xx[GLE_AXIS_Y2].getMax()); } void fitbez(GLEDataPairs* data, bool multi); GLERC transform_data(GLEDataSet* ds, bool isline = true) { /* isline = false for marker plots */ GLERC data = new GLEDataPairs(); data->copy(ds); data->noNaN(); bool xlog = xx[ds->getDim(GLE_DIM_X)->getAxis()].log; bool ylog = xx[ds->getDim(GLE_DIM_Y)->getAxis()].log; data->noLogZero(xlog, ylog); if (ds->deresolve > 1) { data->noMissing(); if (data->size() >= 1) { int pos = 0; if (!ds->deresolve_avg) { /* deresolve by just skipping some of the original points */ for (unsigned int j = 0; j < data->size(); j += ds->deresolve) { data->set(pos++, data->getX(j), data->getY(j), 0); } data->set(pos++, data->getX(data->size()-1), data->getY(data->size()-1), 0); } else { /* deresolve by averaging points */ /* d1 deresolve 5 average plots points something like */ /* X = (X[5]+X[0])/2, Y = mean(Y[0]...Y[5]), etc. */ if (isline) data->set(pos++, data->getX(0), data->getY(0), 0); for (unsigned int i = 0; (i+1)*ds->deresolve-1 < data->size(); i++) { double yavg = 0.0; for (int j = 0; j < ds->deresolve; j++) { yavg += data->getY(i*ds->deresolve + j); } yavg /= ds->deresolve; double x = (data->getX(i*ds->deresolve)+ data->getX((i+1)*ds->deresolve-1))/2.0; data->set(pos++, x, yavg, 0); } if (isline) data->set(pos++, data->getX(data->size()-1), data->getY(data->size()-1), 0); } data->resize(pos); } } if (ds->smooth && isline) { data->noMissing(); data->transformLog(xlog, ylog); fitbez(data.get(), ds->smoothm); data->untransformLog(xlog, ylog); /* maybe use real bezier curves for drawing a smoothed graph? */ /* instead of a huge number of line segments? */ } if (ds->svg_smooth) { data->noMissing(); if (data->size() > 3) { if (ds->svg_iter == 0) ds->svg_iter = 1; for(int j = 0; j < ds->svg_iter; j++) { do_svg_smooth(data->getY(), data->size()); } } } return data; } GLEGraphPartFills::GLEGraphPartFills() { } GLEGraphPartFills::~GLEGraphPartFills() { } bool GLEGraphPartFills::shouldDraw(int n) { return fd[n]->type != 0; } std::set GLEGraphPartFills::getLayers() { std::set result; for (int n = 1; n <= nfd; n++) { if (shouldDraw(n)) { result.insert(fd[n]->layer); } } return result; } void GLEGraphPartFills::drawLayerObject(int layer, GLEMemoryCell* object) { GLEClassInstance* classObj = getGLEClassInstance(object, g_graphBlockData->getGraphBlockBase()->getClassDefinitions()->getFill()); if (classObj != 0) { int index = classObj->getArray()->getInt(0); if (shouldDraw(index) && fd[index]->layer == layer) { g_gsave(); drawFill(index); g_grestore(); } } } void GLEGraphPartFills::drawFill(int n) { struct fill_data *ff = fd[n]; int dn = ff->da; if (!hasDataset(dn)) { gprint("no data in fill dataset"); return; } GLEDataSet* daDS = dp[dn]; daDS->checkRanges(); /* set clipping region */ daDS->clip(&ff->xmin, &ff->ymin); daDS->clip(&ff->xmax, &ff->ymax); g_beginclip(); /* saves current clipping */ g_set_path(true); g_newpath(); GLERectangle clipBox; clipBox.initRange(); GLEPoint pMin(fnXY(ff->xmin, ff->ymin, daDS)); GLEPoint pMax(fnXY(ff->xmax, ff->ymax, daDS)); clipBox.updateRange(&pMin); clipBox.updateRange(&pMax); g_box_stroke(&clipBox); g_clip(); /* sets current path to be clipping */ vector fvec; GLERC data1 = transform_data(dp[dn]); GLERC data2; data1->noMissing(); if (data1->size() < 1) { return; } double *xt = data1->getX(); double *yt = data1->getY(); double x2 = 0.0, y2 = 0.0; double ymx = ff->ymax; switch(ff->type) { case 1: /* x1,d1 */ ymx = ff->ymin; case 2: /* d1,x2 */ fill_vec(*xt, ymx, *xt, *yt, &fvec); for (unsigned int i = 0; i < data1->size()-1; i++, xt++, yt++) { fill_vec(*xt, *yt, *(xt+1), *(yt+1), &fvec); } fill_vec(*xt, *yt, *xt, ymx, &fvec); fill_vec(*xt, ymx, data1->getX(0), ymx, &fvec); break; case 3: /* d1,d2 */ for (unsigned int i = 0; i < data1->size()-1; i++, xt++, yt++) { fill_vec(*xt, *yt, *(xt+1), *(yt+1), &fvec); x2 = *(xt+1); y2 = *(yt+1); } data2 = transform_data(dp[ff->db]); data2->noMissing(); if (data2->size() < 1) { break; } xt = data2->getX() + data2->size() - 1; yt = data2->getY() + data2->size() - 1; fill_vec(x2, y2, *xt, *yt, &fvec); for (unsigned int i = 0; i < data2->size()-1; i++, xt--, yt--) { fill_vec(*xt, *yt, *(xt-1), *(yt-1), &fvec); } fill_vec(*xt, *yt, data1->getX(0), data1->getY(0), &fvec); break; case 4: /* d1 */ for (unsigned int i = 0; i < data1->size()-1; i++, xt++, yt++) { fill_vec(*xt, *yt, *(xt+1), *(yt+1), &fvec); } fill_vec(*xt, *yt, data1->getX(0), data1->getY(0), &fvec); break; } /* Paint the region defined */ g_set_fill(ff->color); g_newpath(); if (fvec.size() >= 4) { g_move(fnXY(fvec[0], fvec[1], daDS)); double lastx = fvec[0]; double lasty = fvec[1]; for (int i = 0; i <= (int)fvec.size()-4; i += 4) { if (lastx != fvec[i] || lasty != fvec[i+1]) { g_closepath(); g_move(fnXY(fvec[i], fvec[i+1], daDS)); } g_line(fnXY(fvec[i+2], fvec[i+3], daDS)); lastx = fvec[i+2]; lasty = fvec[i+3]; } } g_closepath(); g_fill(); g_set_path(false); g_endclip(); } void fill_vec(double x1, double y1, double x2, double y2, vector* vec) { vec->push_back(x1); vec->push_back(y1); vec->push_back(x2); vec->push_back(y2); } void setupdown(const string& s, bool *enable, int *dataset, bool *percentage, double *upval) { *dataset = 0; *enable = true; *percentage = false; *upval = 0.0; unsigned int len = s.size(); if (len == 0) { *enable = false; } else if (len >= 1 && toupper(s[0]) == 'D') { // dataset identifier *dataset = get_dataset_identifier(s.c_str(), false); } else if (str_i_str(s, "%") != -1) { // percentage *percentage = true; *upval = atof(s.c_str()); } else { // absolute value *upval = atof(s.c_str()); } } /*------------------------------------------------------------------*/ /* d3 err .1 */ /* d3 err 10% */ /* d3 errup 10% errdown d2 */ /* d3 err d1 errwidth .2 */ void draw_errbar(double x, double y, double eup, double ewid, GLEDataSet* ds) { if (ds->contains(x, y)) { g_move(fnXY(x, y, ds)); g_line(fnXY(x, y + eup, ds)); g_move(fnx(x, ds) - ewid/2, fny(y + eup, ds)); g_line(fnx(x, ds) + ewid/2, fny(y + eup, ds)); } } void draw_herrbar(double x, double y, double eup, double ewid, GLEDataSet* ds) { if (ds->contains(x, y)) { g_move(fnXY(x, y, ds)); g_line(fnXY(x - eup, y, ds)); g_move(fnx(x - eup, ds), -ewid/2 + fny(y, ds)); g_line(fnx(x - eup, ds), ewid/2 + fny(y, ds)); } } void draw_err(GLEDataSet* dataSet, const string& errdescr, bool isUp, bool isHoriz, double errwd, const char* descr) { dataSet->checkRanges(); if (errwd == 0) { double hei; g_get_hei(&hei); errwd = hei/3; } int errID; double value; bool enable, percentage; setupdown(errdescr, &enable, &errID, &percentage, &value); g_set_color(dataSet->color); g_set_line_width(dataSet->lwidth); GLEDataPairs pairs(dataSet); GLEDataPairs errPairs; if (errID != 0) { GLEDataSet* errDataset = getDataset(errID, descr); errPairs.copyDimension(errDataset, 1); errDataset->validateNbPoints(dataSet->np, descr); } vector* errDimension = pairs.getDimension(isHoriz ? 0 : 1); for (unsigned int i = 0; i < dataSet->np; i++) { int miss = false; double error = 0.0; if (errID != 0) { miss = errPairs.getM(i); error = errPairs.getY(i); } else { error = value; if (percentage) error *= fabs(errDimension->at(i)) / 100.0; } if (enable && !pairs.getM(i) && !miss) { if (!isUp) { error = error * -1; } if (isHoriz) { draw_herrbar(pairs.getX(i), pairs.getY(i), error, errwd, dataSet); } else { draw_errbar(pairs.getX(i), pairs.getY(i), error, errwd, dataSet); } } } } GLEGraphPartErrorBars::GLEGraphPartErrorBars() { } GLEGraphPartErrorBars::~GLEGraphPartErrorBars() { } bool GLEGraphPartErrorBars::shouldDraw(int dn) { if (hasDataset(dn)) { GLEDataSet* dataSet = dp[dn]; if (!dataSet->errup.empty() || !dataSet->errdown.empty() || !dataSet->herrup.empty() || !dataSet->herrdown.empty()) { return true; } } return false; } std::set GLEGraphPartErrorBars::getLayers() { std::set result; for (int dn = 1; dn <= ndata; dn++) { if (shouldDraw(dn)) { result.insert(dp[dn]->layer_error); } } return result; } void GLEGraphPartErrorBars::addToOrder(GLEGraphDataSetOrder* order) { for (int dn = 1; dn <= ndata; dn++) { if (shouldDraw(dn)) { order->addDataSet(dn); } } } void GLEGraphPartErrorBars::drawLayerObject(int layer, GLEMemoryCell* object) { if (object->Type == GLE_MC_INT) { int dn = object->Entry.IntVal; if (shouldDraw(dn) && dp[dn]->layer_error == layer) { g_gsave(); drawErrorBars(dn); g_grestore(); } } } void GLEGraphPartErrorBars::drawErrorBars(int dn) { GLEDataSet* dataSet = dp[dn]; if (dataSet->errup.size() != 0) { draw_err(dataSet, dataSet->errup, true, false, dataSet->errwidth, "error up"); } if (dataSet->errdown.size() != 0) { draw_err(dataSet, dataSet->errdown, false, false, dataSet->errwidth, "error down"); } if (dataSet->herrup.size() != 0) { draw_err(dataSet, dataSet->herrup, true, true, dataSet->herrwidth, "error right"); } if (dataSet->herrdown.size() != 0) { draw_err(dataSet, dataSet->herrdown, false, true, dataSet->herrwidth, "error left"); } } GLEGraphPartLines::GLEGraphPartLines() { } GLEGraphPartLines::~GLEGraphPartLines() { } bool GLEGraphPartLines::shouldDraw(int dn) { return hasDataset(dn) && (dp[dn]->line || dp[dn]->lstyle[0] != 0); } std::set GLEGraphPartLines::getLayers() { std::set result; for (int dn = 1; dn <= ndata; dn++) { if (shouldDraw(dn)) { result.insert(dp[dn]->layer_line); } } return result; } void GLEGraphPartLines::addToOrder(GLEGraphDataSetOrder* order) { for (int dn = 1; dn <= ndata; dn++) { if (shouldDraw(dn)) { order->addDataSet(dn); } } } void GLEGraphPartLines::drawLayerObject(int layer, GLEMemoryCell* object) { if (object->Type == GLE_MC_INT) { int dn = object->Entry.IntVal; if (shouldDraw(dn) && dp[dn]->layer_line == layer) { g_gsave(); drawLine(dn); g_grestore(); } } } void GLEGraphPartLines::drawLine(int dn) { GLEDataSet* dataSet = dp[dn]; dataSet->checkRanges(); GLERC data = transform_data(dataSet); g_set_line_style(dp[dn]->lstyle); g_set_color(dp[dn]->color); g_set_line_width(dp[dn]->lwidth); /* does nothing if arg = 0 */ last_vecx = GLE_INF; last_vecy = GLE_INF; switch (dp[dn]->line_mode) { case GLE_GRAPH_LM_PLAIN: do_draw_lines(data->getX(), data->getY(), data->getM(), data->size(), dataSet); break; case GLE_GRAPH_LM_STEPS: do_draw_steps(data->getX(), data->getY(), data->getM(), data->size(), dataSet); break; case GLE_GRAPH_LM_FSTEPS: do_draw_fsteps(data->getX(), data->getY(), data->getM(), data->size(), dataSet); break; case GLE_GRAPH_LM_HIST: do_draw_hist(data->getX(), data->getY(), data->getM(), data->size(), dataSet); break; case GLE_GRAPH_LM_IMPULSES: do_draw_impulses(data->getX(), data->getY(), data->getM(), data->size(), dataSet); break; case GLE_GRAPH_LM_BAR: do_draw_bar(data->getX(), data->getY(), data->getM(), data->size(), dataSet); break; } } void do_draw_lines(double* xt, double* yt, int* m, int npnts, GLEDataSet* ds) { for (int i = 0; i < (npnts-1); i++, m++, xt++, yt++) { if (!*m && !*(m+1)) draw_vec(*xt, *yt, *(xt+1), *(yt+1), ds); } } void do_draw_steps(double* xt, double* yt, int* m, int npnts, GLEDataSet* ds) { // STEPS: (x1,y1) to (x2,y1) and the second from (x2,y1) to (x2,y2). See demo. for (int i = 0; i < (npnts-1); i++, m++, xt++, yt++) { if (!*m && !*(m+1)) { draw_vec(*xt, *yt, *(xt+1), *yt, ds); draw_vec(*(xt+1), *yt, *(xt+1), *(yt+1), ds); } } } void do_draw_fsteps(double* xt, double* yt, int* m, int npnts, GLEDataSet* ds) { // FSTEPS: (x1,y1) to (x1,y2) and the second from (x1,y2) to (x2,y2) for (int i = 0; i < (npnts-1); i++, m++, xt++, yt++) { if (!*m && !*(m+1)) { draw_vec(*xt, *yt, *xt, *(yt+1), ds); draw_vec(*xt, *(yt+1), *(xt+1), *(yt+1), ds); } } } void do_draw_hist(double* xt, double* yt, int* m, int npnts, GLEDataSet* ds) { double hist_prev_x = 0, hist_prev_y = 0, hist_x1, hist_x2; bool hist_has_prev = false; for (int i = 0; i < npnts; i++, m++, xt++, yt++) { if (!*m) { bool hist_valid = true; if (i < npnts-1 && !*(m+1)) { hist_x2 = (*(xt+1) + (*xt))/2; if (hist_has_prev) { hist_x1 = (hist_prev_x + (*xt))/2; } else { hist_x1 = 2*(*xt) - hist_x2; } } else { if (hist_has_prev) { hist_x1 = (hist_prev_x + (*xt))/2; hist_x2 = 2*(*xt) - hist_x1; } else { hist_valid = false; } } if (hist_valid) { if (hist_has_prev) { draw_vec(hist_x1, hist_prev_y, hist_x1, *yt, ds); } draw_vec(hist_x1, *yt, hist_x2, *yt, ds); } hist_has_prev = true; hist_prev_x = *xt; hist_prev_y = *yt; } else { hist_has_prev = false; } } } double impulsesOrig(GLEDataSet* ds) { GLERange* range = ds->getDim(GLE_DIM_Y)->getRange(); if (range->getMin() > 0.0) return range->getMin(); if (range->getMax() < 0.0) return range->getMax(); return 0.0; } void do_draw_impulses(double* xt, double* yt, int* m, int npnts, GLEDataSet* ds) { double impulses_orig = impulsesOrig(ds); for (int i = 0; i < npnts; i++, m++, xt++, yt++) { if (!*m) draw_vec(*xt, impulses_orig, *xt, *yt, ds); } } void do_draw_bar(double* xt, double* yt, int* m, int npts, GLEDataSet* ds) { do_draw_hist(xt, yt, m, npts, ds); double hist_prev_x = 0, hist_prev_y = 0, hist_x1, hist_x2; bool hist_has_prev = false; double impulses_orig = impulsesOrig(ds); for (int i = 0; i < npts; i++, m++, xt++, yt++) { if (!*m) { bool hist_valid = true; if (i < npts-1 && !*(m+1)) { hist_x2 = (*(xt+1) + (*xt))/2; if (hist_has_prev) { hist_x1 = (hist_prev_x + (*xt))/2; } else { hist_x1 = 2*(*xt) - hist_x2; } } else { if (hist_has_prev) { hist_x1 = (hist_prev_x + (*xt))/2; hist_x2 = 2*(*xt) - hist_x1; } else { hist_valid = false; } } if (hist_valid && hist_has_prev) { // g_set_color(GLE_COLOR_BLACK); double yval = hist_prev_y; if (fabs(hist_prev_y-impulses_orig) > fabs(*yt-impulses_orig)) { yval = *yt; } draw_vec(hist_x1, impulses_orig, hist_x1, yval, ds); } hist_has_prev = true; hist_prev_x = *xt; hist_prev_y = *yt; } else { hist_has_prev = false; } } } void do_svg_smooth(double* xold, int size) { /* for now this is a quadratic or cubic and 7 point smoothing only */ int i; double* xnew; xnew = (double*) calloc(size,sizeof(double)); for (i =0 ;i <= size ;i++ ) { if (i == 0 || i == 1 || i == size-2 || i == size-1) { /* can't do it*/ xnew[i]=xold[i]; } else if (i == 2 || i == size-3) { /* do five point */ xnew[i] = (-3*xold[i-2]+12*xold[i-1]+17*xold[i]+12*xold[i+1]-3*xold[i+2])/35; } else if (i == 3 || i == size - 4) { /* do seven point */ xnew[i] = (-2*xold[i-3]+3*xold[i-2]+6*xold[i-1]+7*xold[i]+6*xold[i+1]+3*xold[i+2]-2*xold[i+3])/21; } else if (i >= 4 && i <= size - 5) { /* do nine point */ xnew[i] = (-21*xold[i-4]+14*xold[i-3]+39*xold[i-2]+54*xold[i-1]+59*xold[i]+54*xold[i+1]+39*xold[i+2]+14*xold[i+3]-21*xold[i+4])/231; } } memcpy(xold,xnew,size*sizeof(double)); free(xnew); } void g_move_safe(const GLEPoint& p) { if (gle_isnan(p.getX())) return; if (gle_isnan(p.getY())) return; g_move(p); } void g_line_safe(const GLEPoint& p) { if (gle_isnan(p.getX())) return; if (gle_isnan(p.getY())) return; g_line(p); } void draw_vec(double x1, double y1, double x2, double y2, GLEDataSet* ds) { if (!ds->contains(x1, y1) || !ds->contains(x2, y2)) { /* ok one or both are outside our box */ GLERange* xrange = ds->getDim(GLE_DIM_X)->getRange(); GLERange* yrange = ds->getDim(GLE_DIM_Y)->getRange(); double txmin = xrange->getMin(), tymin = yrange->getMin(); double txmax = xrange->getMax(), tymax = yrange->getMax(); if (ds->getAxis(GLE_DIM_X)->log) { x1 = log10(x1); x2 = log10(x2); txmin = log10(txmin); txmax = log10(txmax); } if (ds->getAxis(GLE_DIM_Y)->log) { y1 = log10(y1); y2 = log10(y2); tymin = log10(tymin); tymax = log10(tymax); } bool invis = gclip(&x1, &y1, &x2, &y2, txmin, tymin, txmax, tymax); if (invis) return; if (ds->getAxis(GLE_DIM_X)->log) { x1 = pow(10.0,x1); x2 = pow(10.0,x2); } if (ds->getAxis(GLE_DIM_Y)->log) { y1 = pow(10.0,y1); y2 = pow(10.0,y2); } } if (x1 != last_vecx || y1 != last_vecy) { g_move_safe(fnXY(x1, y1, ds)); } g_line_safe(fnXY(x2, y2, ds)); last_vecx = x2; last_vecy = y2; } GLEGraphPartMarkers::GLEGraphPartMarkers() { } GLEGraphPartMarkers::~GLEGraphPartMarkers() { } bool GLEGraphPartMarkers::shouldDraw(int dn) { return hasDataset(dn) && dp[dn]->marker != 0; } std::set GLEGraphPartMarkers::getLayers() { std::set result; for (int dn = 1; dn <= ndata; dn++) { if (shouldDraw(dn)) { result.insert(dp[dn]->layer_marker); } } return result; } void GLEGraphPartMarkers::addToOrder(GLEGraphDataSetOrder* order) { for (int dn = 1; dn <= ndata; dn++) { if (shouldDraw(dn)) { order->addDataSet(dn); } } } void GLEGraphPartMarkers::drawLayerObject(int layer, GLEMemoryCell* object) { if (object->Type == GLE_MC_INT) { int dn = object->Entry.IntVal; if (shouldDraw(dn) && dp[dn]->layer_marker == layer) { g_gsave(); drawMarkers(dn); g_grestore(); } } } void GLEGraphPartMarkers::drawMarkers(int dn) { GLEDataSet* dataSet = dp[dn]; dataSet->checkRanges(); GLERC data = transform_data(dataSet, false); g_set_color(dataSet->color); g_set_line_width(dataSet->lwidth); g_set_line_style("1"); double msize = dataSet->msize; if (msize == 0) msize = g_fontsz; if (dataSet->mscale != 0) msize = msize * dataSet->mscale; double mdist = dataSet->mdist; if (mdist == 0) { GLEDataPairs mdataPairs; if (dataSet->mdata != 0) { GLEDataSet* mdataSet = getDataset(dataSet->mdata, "marker mdata"); mdataPairs.copyDimension(mdataSet, 1); mdataSet->validateNbPoints(data->size(), "marker mdata"); } for (unsigned int i = 0; i < data->size(); i++) { if (!data->getM(i)) { double dval = 1.0; if (dataSet->mdata != 0) { dval = mdataPairs.getY(i); } draw_mark(data->getX(i), data->getY(i), dataSet->marker, msize, dval, dataSet); } } } else { data->noMissing(); double* xt = data->getX(); double* yt = data->getY(); if (data->size() >= 1) { double len = 0.0; double x0 = fnx(xt[0], dataSet); double y0 = fny(yt[0], dataSet); for (unsigned int i = 1; i < data->size(); i++) { double x = fnx(xt[i], dataSet); double y = fny(yt[i], dataSet); len += sqrt((x-x0)*(x-x0)+(y-y0)*(y-y0)); x0 = x; y0 = y; } x0 = fnx(xt[0], dataSet); y0 = fny(yt[0], dataSet); double prev_dist = mdist - fmod(len, mdist)/2.0; for (unsigned int i = 1; i < data->size(); i++) { double x = fnx(xt[i], dataSet); double y = fny(yt[i], dataSet); double dist = sqrt((x-x0)*(x-x0)+(y-y0)*(y-y0)); while (prev_dist + dist > mdist) { double offs = mdist - prev_dist; double xp = (offs*x + (dist-offs)*x0)/dist; double yp = (offs*y + (dist-offs)*y0)/dist; if (xp >= xbl && xp <= xbl+xlength && yp >= ybl && yp <= ybl+ylength) { g_move(xp, yp); g_marker2(dataSet->marker,msize,1); } x0 = xp; y0 = yp; dist = sqrt((x-x0)*(x-x0)+(y-y0)*(y-y0)); prev_dist = 0.0; } prev_dist += dist; x0 = x; y0 = y; } } } } void draw_mark(double x, double y, int mrk, double msize, double dval, GLEDataSet* ds) throw (ParserError) { if (ds->contains(x, y)) { g_move(fnXY(x, y, ds)); g_marker2(mrk, msize, dval); } } void gclip_simple(double *v, double vmin, double vmax) { if (*v < vmin) { *v = vmin; } if (*v > vmax) { *v = vmax; } } bool gclip(double *x1, double *y1, double *x2, double *y2, double xmin, double ymin, double xmax, double ymax) { // Take care of infinite values if (gle_isinf(*y1)) { gclip_simple(y1, ymin, ymax); if (gle_isinf(*y2)) { if (*y1 == *y2) return true; else gclip_simple(y2, ymin, ymax); } else { *x1 = *x2; } } else if (gle_isinf(*y2)) { gclip_simple(y2, ymin, ymax); *x2 = *x1; } if (gle_isinf(*x1)) { gclip_simple(x1, xmin, xmax); if (gle_isinf(*x2)) { if (*x1 == *x2) return true; else gclip_simple(x2, xmin, xmax); } else { *y1 = *y2; } } else if (gle_isinf(*x2)) { gclip_simple(x2, xmin, xmax); *y2 = *y1; } // Check upper bound for all variables // Check X if (*x2 > xmax) { if (*x1 > xmax) return true; double dx = *x2 - *x1; if (dx == 0) return true; double dy = *y2 - *y1; *y2 = *y1 + dy*(xmax-*x1)/dx; *x2 = xmax; } if (*x1 > xmax) { double dx = *x1 - *x2; if (dx == 0) return true; double dy = *y1 - *y2; *y1 = *y2 + dy*(xmax-*x2)/dx; *x1 = xmax; } // Check Y if (*y2 > ymax) { if (*y1 > ymax) return true; double dy = *y2 - *y1; if (dy == 0) return true; double dx = *x2 - *x1; *x2 = *x1 + dx*(ymax-*y1)/dy; *y2 = ymax; } if (*y1 > ymax) { double dy = *y1 - *y2; if (dy == 0) return true; double dx = *x1 - *x2; *x1 = *x2 + dx*(ymax-*y2)/dy; *y1 = ymax ; } // Check lower bound for all variables // Check X if (*x2 < xmin) { if (*x1 < xmin) return true; double dx = *x2 - *x1; if (dx == 0) return true; double dy = *y2 - *y1; *y2 = *y1 + dy*(xmin-*x1)/dx; *x2 = xmin; } if (*x1 < xmin) { double dx = *x1 - *x2 ; if (dx == 0) return true; double dy = *y1 - *y2 ; *y1 = *y2 + dy*(xmin-*x2)/dx; *x1 = xmin; } // Check Y if (*y2 < ymin) { if (*y1 < ymin) return true; double dy = *y2 - *y1; if (dy == 0) return true; double dx = *x2 - *x1; *x2 = *x1 + dx*(ymin-*y1)/dy; *y2 = ymin; } if (*y1 < ymin) { double dy = *y1 - *y2; if (dy == 0) return true; double dx = *x1 - *x2; *x1 = *x2 + dx*(ymin-*y2)/dy; *y1 = ymin; } return false; } void vinit_axis(int i) { xx[i].init(i); } void vinit_title_axis() { xx[GLE_AXIS_T].log = 0; xx[GLE_AXIS_T].getRange()->setMinMaxSet(0, 1); xx[GLE_AXIS_T].label_off = 1; xx[GLE_AXIS_T].side_off = 1; xx[GLE_AXIS_T].ticks_off = 1; xx[GLE_AXIS_T].subticks_off = 1; xx[GLE_AXIS_T].title_off = 0; } void doskip(char *s,int *ct) { if (*s==' ') (*ct)++; } double get_next_exp(TOKENS tk,int ntok,int *curtok) { static int i; static double x; (*curtok)++; dbg for (i=1;i<=ntok;i++) gprint("{%s} ",(*tk)[i]); dbg gprint("\n"); dbg gprint("**get exp token ct %d {%s} \n",*curtok,(*tk)[*curtok]); if (strlen(tk[*curtok])==0){ /* this is added for optional parameters on smoothing. They must be at end for this to work*/ dbg gprint("zero length expression in get expression no polish called\n"); x=0; }else{ polish_eval(tk[*curtok],&x); } return x; } void get_next_exp_string(TOKENS tk, int ntok, int *curtok, string* res) { (*curtok)++; if ((*curtok) <= ntok) { polish_eval_string(tk[*curtok],res); } else { *res = ""; } } void get_next_exp_file(TOKENS tk, int ntok, int *curtok, string* res) { (*curtok)++; if ((*curtok) <= ntok) { pass_file_name(tk[*curtok], *res); } else { *res = ""; } } bool checktok(char *t, char *want) { if (str_i_equals(t,want)) return true; else { gprint("Found token {%s} Wanted {%s} \n",t,want); return false; } } #define GLE_DS_L 0 #define GLE_DS_R 1 typedef struct { double x, y[2]; } DataSetVal; bool DataSetValCMP(const DataSetVal& e1, const DataSetVal& e2) { return e1.x < e2.x; } class GLELetDataSet { protected: int m_DN; int m_Var; int m_CrP; bool m_IsFunction; bool m_IsXRangeDS; vector m_Vals; vector m_MissX; public: GLELetDataSet(); ~GLELetDataSet(); void initializeFrom(int dn, int var); void complainNoFunction() throw (ParserError); bool interpolateTo(double x, int lr); inline int getNbValues() { return m_Vals.size(); } inline double getXValue(int i) { return m_Vals[i].x; } inline int getNbMissing() { return m_MissX.size(); } inline double getMissing(int i) { return m_MissX[i]; } inline bool isFunction() { return m_IsFunction; } inline int getDatasetID() { return m_DN; } inline int getVar() { return m_Var; } inline void setIsXRangeDS(bool value) { m_IsXRangeDS = value; } inline bool isXRangeDS() { return m_IsXRangeDS; } }; GLELetDataSet::GLELetDataSet() { m_DN = -1; m_Var = -1; m_CrP = 0; m_IsFunction = true; m_IsXRangeDS = false; } GLELetDataSet::~GLELetDataSet() { } void GLELetDataSet::initializeFrom(int dn, int var) { m_DN = dn; m_Var = var; /* points */ GLEDataSet* dataSet = dp[dn]; GLEDataPairs pairs(dataSet); double* xv = pairs.getX(); double* yv = pairs.getY(); int* mm = pairs.getM(); /* get data from datasets */ /* record x-values for which y-value is missing separately */ int nbvals = 0; double xprev = GLE_INF; for (unsigned int i = 0; i < dataSet->np; i++) { if (!mm[i]) { if (xv[i] == xprev && nbvals > 0) { /* same x-value, but different y-value */ /* support for datasets with discontinuities */ m_Vals[nbvals-1].y[GLE_DS_R] = yv[i]; } else { DataSetVal val; val.x = xv[i]; val.y[GLE_DS_L] = yv[i]; val.y[GLE_DS_R] = yv[i]; m_Vals.push_back(val); xprev = val.x; nbvals++; } } else { m_MissX.push_back(xv[i]); } } // Sort data if required bool sorted = true; for (unsigned int i = 1; i < m_Vals.size(); i++) { if (m_Vals[i].x <= m_Vals[i-1].x) sorted = false; } if (!sorted) { std::sort(m_Vals.begin(), m_Vals.end(), DataSetValCMP); } // Check if dataset represents a function m_IsFunction = true; for (unsigned int i = 1; i < m_Vals.size(); i++) { if (m_Vals[i].x == m_Vals[i-1].x) { // Note: GLE can't combine different datasets if they don't represent functions in one let command m_IsFunction = false; } } } void GLELetDataSet::complainNoFunction() throw (ParserError) { for (unsigned int i = 1; i < m_Vals.size(); i++) { if (m_Vals[i].x == m_Vals[i-1].x) { ostringstream errs; errs << "dataset d" << m_DN << " not a function - duplicate range value: '" << m_Vals[i].x << "'"; g_throw_parser_error(errs.str()); } } } bool GLELetDataSet::interpolateTo(double x, int lr) { /* returns true if dataset has discontinuity at point x */ if (m_Var == -1) { /* dataset not used in let expression, only in 'range" part */ return false; } int mx = m_Vals.size(); if (mx == 0) { var_set(m_Var, GLE_NAN); } else if (mx == 1) { double x_val = m_Vals[0].x; if (x < x_val) { var_set(m_Var, m_Vals[0].y[GLE_DS_L]); } else if (x > x_val) { var_set(m_Var, m_Vals[0].y[GLE_DS_R]); } else { DataSetVal* v = &m_Vals[0]; var_set(m_Var, v->y[lr]); if (lr == GLE_DS_L && v->y[GLE_DS_L] != v->y[GLE_DS_R]) { return true; } } } else { while (x < m_Vals[m_CrP].x || x > m_Vals[m_CrP+1].x) { /* x too small or too large for current interval -> move interval */ if (x < m_Vals[m_CrP].x) { if (m_CrP <= 0) { var_set(m_Var, m_Vals[0].y[GLE_DS_L]); return false; } m_CrP--; } if (x > m_Vals[m_CrP+1].x) { if (m_CrP+2 >= mx) { var_set(m_Var, m_Vals[mx-1].y[GLE_DS_R]); return false; } m_CrP++; } } if (x == m_Vals[m_CrP].x) { DataSetVal* v = &m_Vals[m_CrP]; var_set(m_Var, v->y[lr]); if (lr == GLE_DS_L && v->y[GLE_DS_L] != v->y[GLE_DS_R]) { return true; } } else if (x == m_Vals[m_CrP+1].x) { DataSetVal* v = &m_Vals[m_CrP+1]; var_set(m_Var, v->y[lr]); if (lr == GLE_DS_L && v->y[GLE_DS_L] != v->y[GLE_DS_R]) { return true; } } else { double y1 = m_Vals[m_CrP].y[GLE_DS_R]; double y2 = m_Vals[m_CrP+1].y[GLE_DS_L]; double x1 = m_Vals[m_CrP].x; double x2 = m_Vals[m_CrP+1].x; var_set(m_Var, (x-x1)/(x2-x1)*(y2-y1)+y1); } } return false; } class DataFillDimension { protected: bool m_Log; GLERange m_Range; double m_Value; GLEFunctionParserPcode* m_Fct; RefCountPtr m_Values; public: DataFillDimension(GLEFunctionParserPcode* fct); ~DataFillDimension(); void setRange(GLERange* range, bool log); bool isYValid(); inline bool isLog() { return m_Log; } inline GLERange* getRange() { return &m_Range; } inline void setDoubleAt(double v, int i) { m_Values->setDoubleAt(v, i); } inline GLEDoubleArray* getValues() { return m_Values.get(); } inline double getValue() { return m_Value; } inline void computeValue() { m_Value = m_Fct->evalDouble(); } inline bool isYNan() { return gle_isnan(m_Value); } }; DataFillDimension::DataFillDimension(GLEFunctionParserPcode* fct) { m_Log = false; m_Fct = fct; m_Values = new GLEDoubleArray(); } DataFillDimension::~DataFillDimension() { } void DataFillDimension::setRange(GLERange* range, bool log) { m_Log = log; if (range->invalid()) { range->initRange(); } else { m_Range.setMin(range->getMin() - range->getWidth()/100.0); m_Range.setMax(range->getMax() + range->getWidth()/100.0); } } bool DataFillDimension::isYValid() { if (gle_isnan(m_Value)) return false; if (m_Value < m_Range.getMin() || m_Value > m_Range.getMax()) return false; return true; } class DataFill { protected: int m_Size; int m_VarX; bool m_PrevInvalid; bool m_PrevPoint; bool m_FineTune; bool m_CrEnable; double m_PrevXValue; bool m_detectDiscontinuity; double m_discontinuityThreshold; bool m_tuneDistance; int m_tuneIterationsMin; int m_tuneIterationsMax; set m_MissX; GLEVectorAutoDelete* m_DataSets; GLEVectorAutoDelete m_Dim; RefCountPtr m_Missing; GLEFunctionParserPcode* m_Where; public: DataFill(bool finetune); ~DataFill(); void addPointFineTune(double x, int lr); void addPointIPol(double x); void addPoint(); void addPointLR(double x, int lr); void addPoint(double x); void addPoint(double x, double y); void addMissing(); void addMissingLR(double x, int lr); bool isYValid(); bool isYNotNan(); bool isRangeValid(); bool selectXValue(double x, int lr); void selectXValueNoIPol(double x); double maxDistanceTo(double x); void minMaxDistanceTo(double x, GLERange* distanceRange); void tryIPol(double other, double nanval); void checkDiscontinuity(double xPrev, double xNext, int lr); void tryAddMissing(double x, int lr); void setInfo(GLEFunctionParserPcode* expr, int varx); void setYMinYMax(double ymin, double ymax); void setDetectDiscontinuity(bool detect, double threshold); void toDataset(GLEDataSet* dataset); inline int size() { return m_Size; } inline double* getX() { return m_Dim[0]->getValues()->toArray(); } inline double* getY() { return m_Dim[1]->getValues()->toArray(); } inline int* getM() { return m_Missing->toArray(); } inline void addDataDimension(DataFillDimension* fill) { m_Dim.push_back(fill); } inline void setDataSets(GLEVectorAutoDelete* sets) { m_DataSets = sets; } inline void setVarX(int varx) { m_VarX = varx; } inline bool isFineTune() { return m_FineTune; } inline void setMissingValue(double x) { m_MissX.insert(x); } inline void setWhere(GLEFunctionParserPcode* where) { m_Where = where; } }; DataFill::DataFill(bool finetune) { m_Size = 0; m_VarX = -1; m_PrevInvalid = false; m_PrevPoint = false; m_FineTune = finetune; m_PrevXValue = GLE_INF; m_CrEnable = true; m_Missing = new GLEBoolArray(); m_Where = NULL; m_detectDiscontinuity = false; m_discontinuityThreshold = GLE_INF; m_tuneDistance = 1e-6; m_tuneIterationsMin = 50; m_tuneIterationsMax = 10000; } DataFill::~DataFill() { } bool DataFill::isYValid() { for (unsigned int i = 0; i < m_Dim.size(); i++) { DataFillDimension* dim = m_Dim[i]; if (!dim->isYValid()) return false; } return true; } bool DataFill::isYNotNan() { for (unsigned int i = 0; i < m_Dim.size(); i++) { DataFillDimension* dim = m_Dim[i]; if (dim->isYNan()) return false; } return true; } bool DataFill::isRangeValid() { for (unsigned int i = 0; i < m_Dim.size(); i++) { DataFillDimension* dim = m_Dim[i]; if (dim->getRange()->invalid()) return false; } return true; } void DataFill::selectXValueNoIPol(double x) { /* set parameter variable */ if (m_VarX >= 0) var_set(m_VarX, x); for (unsigned int i = 0; i < m_Dim.size(); i++) { DataFillDimension* dim = m_Dim[i]; dim->computeValue(); } } bool DataFill::selectXValue(double x, int lr) { /* set parameter variable */ if (m_VarX >= 0) var_set(m_VarX, x); /* set dataset variables */ bool onceMore = false; for (unsigned int i = 0; i < m_DataSets->size(); i++) { onceMore |= (*m_DataSets)[i]->interpolateTo(x, lr); } for (unsigned int i = 0; i < m_Dim.size(); i++) { DataFillDimension* dim = m_Dim[i]; dim->computeValue(); } return onceMore; } double DataFill::maxDistanceTo(double x) { GLERange range; minMaxDistanceTo(x, &range); return range.getMax(); } void DataFill::minMaxDistanceTo(double x, GLERange* distanceRange) { /* set parameter variable */ if (m_VarX >= 0) var_set(m_VarX, x); /* set dataset variables */ for (unsigned int i = 0; i < m_DataSets->size(); i++) { (*m_DataSets)[i]->interpolateTo(x, GLE_DS_L); } double maxValue = 0.0; double minValue = GLE_INF; for (unsigned int i = 0; i < m_Dim.size(); i++) { DataFillDimension* dim = m_Dim[i]; if (dim->isYValid()) { double v1 = dim->getValue(); dim->computeValue(); if (dim->isYValid()) { double v2 = dim->getValue(); double d = axis_range_dist_perc(v1, v2, dim->getRange(), dim->isLog()); maxValue = max(maxValue, d); minValue = min(minValue, d); } } } distanceRange->setMinMax(minValue, maxValue); } void DataFill::tryIPol(double other, double nanval) { int iter = 0; double not_xmid = 0.0; while (true) { double xmid = (other + nanval)/2; selectXValue(xmid, GLE_DS_L); if (!isYValid()) { nanval = xmid; not_xmid = other; } else { other = xmid; not_xmid = nanval; } if (iter > m_tuneIterationsMax || (iter > m_tuneIterationsMin && maxDistanceTo(not_xmid) < m_tuneDistance)) { addPointLR(xmid, GLE_DS_L); return; } iter++; } } void DataFill::tryAddMissing(double x, int lr) { if (m_MissX.find(x) != m_MissX.end()) { addMissingLR(x, lr); } } void DataFill::addPoint(double x, double y) { m_Dim[0]->setDoubleAt(x, m_Size); m_Dim[1]->setDoubleAt(y, m_Size); m_Missing->setBoolAt(false, m_Size); m_Size++; } void DataFill::addMissing() { m_Missing->setBoolAt(true, m_Size); m_Size++; } void DataFill::addPoint(double x) { int lr = GLE_DS_L; while (true) { bool more = selectXValue(x, lr); if (!more && m_MissX.find(x) != m_MissX.end()) { addMissingLR(x, lr); return; } if (m_Where != NULL) { double wval = m_Where->evalDouble(); if (m_CrEnable && wval == 0.0) { // disable from now on -> emit missing value addMissingLR(x, lr); } m_CrEnable = (wval != 0.0); } if (m_CrEnable) addPoint(); if (more) { tryAddMissing(x, lr); lr++; } else { break; } } } void DataFill::addPoint() { for (unsigned int i = 0; i < m_Dim.size(); i++) { DataFillDimension* dim = m_Dim[i]; dim->setDoubleAt(dim->getValue(), m_Size); } m_Missing->setBoolAt(false, m_Size); m_Size++; } void DataFill::addPointLR(double x, int lr) { selectXValue(x, lr); addPoint(); } void DataFill::addMissingLR(double x, int lr) { selectXValue(x, lr); for (unsigned int i = 0; i < m_Dim.size(); i++) { DataFillDimension* dim = m_Dim[i]; if (dim->isYNan()) dim->setDoubleAt(GLE_NAN, m_Size); else dim->setDoubleAt(dim->getValue(), m_Size); } m_Missing->setBoolAt(true, m_Size); m_Size++; } void DataFill::checkDiscontinuity(double xPrev, double xNext, int lr) { if (!m_detectDiscontinuity) { return; } double leftX = xPrev; double rightX = xNext; selectXValue(leftX, lr); double distance = maxDistanceTo(rightX); if (distance > m_discontinuityThreshold) { int iter = 0; GLERange leftDistance; GLERange rightDistance; while (true) { double xMid = (leftX + rightX) / 2; selectXValue(xMid, lr); minMaxDistanceTo(leftX, &leftDistance); selectXValue(xMid, lr); minMaxDistanceTo(rightX, &rightDistance); double minDistance = leftDistance.getMin() + rightDistance.getMin(); if (leftDistance.getMax() > m_discontinuityThreshold) { rightX = xMid; distance = leftDistance.getMax(); } else if (rightDistance.getMax() > m_discontinuityThreshold) { leftX = xMid; distance = rightDistance.getMax(); } else { return; } iter++; if (iter > m_tuneIterationsMax || (iter > m_tuneIterationsMin && minDistance < m_tuneDistance)) { if (leftX != xPrev) { addPointLR(leftX, lr); } addMissingLR(xMid, lr); if (rightX != xNext) { addPointLR(rightX, lr); } return; } } } } void DataFill::addPointFineTune(double x, int lr) { if (!isYValid()) { bool yNotNan = isYNotNan(); if (!m_PrevInvalid && m_PrevPoint) { tryIPol(m_PrevXValue, x); } m_PrevInvalid = true; addMissingLR(x, lr); if (yNotNan) addPointLR(x, lr); } else { if (m_PrevInvalid) { tryIPol(x, m_PrevXValue); m_PrevInvalid = false; } else { checkDiscontinuity(m_PrevXValue, x, lr); } addPointLR(x, lr); } } void DataFill::addPointIPol(double x) { int lr = GLE_DS_L; while (true) { bool more = selectXValue(x, lr); if (!more && m_MissX.find(x) != m_MissX.end()) { // if more, then missing value is emitted in-between left and right limit addMissingLR(x, lr); return; } if (m_Where != NULL) { double wval = m_Where->evalDouble(); if (m_CrEnable && wval == 0.0) { // disable from now on -> emit missing value addMissingLR(x, lr); m_PrevPoint = false; m_PrevInvalid = false; } m_CrEnable = (wval != 0.0); } if (m_CrEnable) { if (m_FineTune) { addPointFineTune(x, lr); } else { addPoint(); } m_PrevPoint = true; m_PrevXValue = x; } if (more) { tryAddMissing(x, lr); lr++; } else { break; } } } void DataFill::setDetectDiscontinuity(bool detect, double threshold) { m_detectDiscontinuity = detect; m_discontinuityThreshold = threshold; } void DataFill::toDataset(GLEDataSet* dataset) { dataset->np = size(); GLEArrayImpl* dimensions = dataset->getData(); dimensions->ensure(m_Dim.size()); for (unsigned int dim = 0; dim < m_Dim.size(); dim++) { GLEArrayImpl* newArray = new GLEArrayImpl(); newArray->ensure(dataset->np); dimensions->setObject(dim, newArray); GLEDoubleArray* values = m_Dim[dim]->getValues(); for (unsigned int i = 0; i < dataset->np; i++) { if (m_Missing->getBoolAt(i)) { newArray->setUnknown(i); } else { newArray->setDouble(i, values->getDoubleAt(i)); } } } } class GLECheckWindow { protected: bool m_HasXMin, m_HasXMax, m_HasYMin, m_HasYMax; double m_XMin, m_XMax, m_YMin, m_YMax; public: GLECheckWindow(); ~GLECheckWindow(); void setXMin(double v); void setXMax(double v); void setYMin(double v); void setYMax(double v); bool valid(double x, double y); }; GLECheckWindow::GLECheckWindow() { m_HasXMin = m_HasXMax = m_HasYMin = m_HasYMax = false; m_XMin = m_XMax = m_YMin = m_YMax = 0.0; } GLECheckWindow::~GLECheckWindow() { } void GLECheckWindow::setXMin(double v) { m_XMin = v; m_HasXMin = true; } void GLECheckWindow::setXMax(double v) { m_XMax = v; m_HasXMax = true; } void GLECheckWindow::setYMin(double v) { m_YMin = v; m_HasYMin = true; } void GLECheckWindow::setYMax(double v) { m_YMax = v; m_HasYMax = true; } bool GLECheckWindow::valid(double x, double y) { if (m_HasXMin && x < m_XMin) return false; if (m_HasXMax && x > m_XMax) return false; if (m_HasYMin && y < m_YMin) return false; if (m_HasYMax && y < m_YMax) return false; return true; } class GLEFitLS : public GLEPowellFunc { protected: int m_IdxX, m_NIter; double m_RSquare; vector m_Vars; vector* m_X; vector* m_Y; StringIntHash m_VarMap; string m_FunctionStr; GLERC m_Function; public: GLEFitLS(); virtual ~GLEFitLS(); void polish(const string& str) throw(ParserError); void setXY(vector* x, vector* y); void fit(); void testFit(); void setVarsVals(double* vals); void toFunctionStr(const string& format, string* str) throw(ParserError); virtual double fitMSE(double* vals); inline GLEFunctionParserPcode* getFunction() { return m_Function.get(); } inline double getRSquare() { return m_RSquare; } }; GLEFitLS::GLEFitLS() { m_IdxX = -1; m_NIter = 0; m_RSquare = 0.0; m_Function = new GLEFunctionParserPcode(); } GLEFitLS::~GLEFitLS() { } void GLEFitLS::polish(const string& str) throw(ParserError) { m_FunctionStr = str; m_Function->polish(str.c_str(), &m_VarMap); /* Iterate over variables in expression */ for (StringIntHash::const_iterator i = m_VarMap.begin(); i != m_VarMap.end(); i++ ) { if (i->first != "X") { m_Vars.push_back(i->second); } } } void GLEFitLS::setXY(vector* x, vector* y) { m_X = x; m_Y = y; } void GLEFitLS::fit() { int naz = m_Vars.size(); double** xi = matrix(1,naz,1,naz); for (int i = 1; i <= naz; i++) { for (int j = 1; j <= naz; j++) { xi[i][j] = 0; } xi[i][i] = 1; } double* pms = new double[naz+1]; for (int i = 1; i <= naz; i++) { int v_idx = m_Vars[i-1]; var_get(v_idx, &pms[i]); } int vtype; double fret = 0; double anstol = 1e-4; var_findadd("X", &m_IdxX, &vtype); powell(pms, xi, naz, anstol, &m_NIter, &fret, this); free_matrix(xi,1,naz,1,naz); setVarsVals(pms); } void GLEFitLS::testFit() { int nxy = m_X->size(); double sumy = 0.0; for (int i = 0; i < nxy; i++) { sumy = sumy + (*m_Y)[i]; } double meany = sumy/nxy; double sum1 = 0.0, sum2 = 0.0; for (int i = 0; i < nxy; i++) { var_set(m_IdxX, (*m_X)[i]); double value = m_Function->evalDouble(); double y = (*m_Y)[i]; double r1 = value - y; double r2 = meany - y; sum1 = sum1 + r1*r1; sum2 = sum2 + r2*r2; } m_RSquare = 1 - sum1/sum2; } void GLEFitLS::setVarsVals(double* vals) { /* Set all variables to given values */ int naz = m_Vars.size(); for (int i = 1; i <= naz; i++) { int v_idx = m_Vars[i-1]; if (v_idx >= 0) var_set(v_idx, vals[i]); } } double GLEFitLS::fitMSE(double* vals) { /* Set all variables to given values */ setVarsVals(vals); /* Compute MSE */ double tot = 0.0; for (vector::size_type i = 0; i < m_X->size(); i++) { var_set(m_IdxX, (*m_X)[i]); double value = m_Function->evalDouble(); double residue = (*m_Y)[i] - value; tot += residue*residue; } /* Return error */ return tot / m_X->size(); } void GLEFitLS::toFunctionStr(const string& format, string* str) throw(ParserError) { *str = ""; string fmt_str = format; if (fmt_str == "") fmt_str = "fix 3"; GLENumberFormat fmt(fmt_str); GLEPolish* polish = get_global_polish(); Tokenizer* tokens = polish->getTokens(m_FunctionStr); string uc_token, v_str; bool has_plus = false; while (tokens->has_more_tokens()) { const string& token = tokens->next_token(); str_to_uppercase(token, uc_token); int v_idx = m_VarMap.try_get(uc_token); if (uc_token != "X" && v_idx != -1) { double value; var_get(v_idx, &value); fmt.format(value, &v_str); if (has_plus && value >= 0) *str = *str + "+"; *str = *str + v_str; has_plus = false; } else { if (has_plus) *str = *str + "+"; has_plus = token == "+"; if (!has_plus) *str = *str + token; } } } class GLELet { protected: GLERC m_SubMap; GLERCVector m_Fcts; GLERC m_Where; GLEVarBackup m_varBackup; set m_XRangeDS; double m_LetFrom, m_LetTo, m_LetStep, m_LogStep; bool m_FineTune, m_NoFirst, m_HasSteps, m_HasStepOption, m_HasFrom, m_HasTo; int m_VarX, m_Ds, m_LetNSteps; int m_codeLine; // For histogram routine int m_nrBins; int m_HistDS; // For fitting routines int m_FitDS; bool m_limitDataX; bool m_limitDataY; bool m_limitData; string m_fitType; string m_fitFct; string m_eqStr; string m_format; string m_rsq; string m_varSlope; string m_varIntercept; string m_varR; GLECheckWindow m_window; public: GLELet(); ~GLELet(); void initVars(); void initStep(); void doLet() throw(ParserError); void parseFitFunction(const string& fct, GLEParser* parser) throw(ParserError); void parseHistogram(GLEParser* parser) throw(ParserError); void doFitFunction() throw(ParserError); void doHistogram() throw(ParserError); void complainAboutNoFunctions(GLEVectorAutoDelete& datasets) throw(ParserError); bool checkIdenticalRanges(GLEVectorAutoDelete& datasets); void transformIdenticalRangeDatasets(GLEVectorAutoDelete& datasets, DataFill* fill); void combineFunctions(GLEVectorAutoDelete& datasets, DataFill* fill, double logstep); void setStep(double value); void createVarBackup(GLEVars* vars, StringIntHash* varHash); void restoreVarBackup(GLEVars* vars); GLEFunctionParserPcode* insertFunction(); GLEFunctionParserPcode* addFunction(); GLEFunctionParserPcode* addWhere(); inline void setVarSubMap(GLEVarSubMap* map) { m_SubMap = map; } inline GLEVarSubMap* getVarSubMap() { return m_SubMap.get(); } inline void setFrom(double value) { m_LetFrom = value; } inline void setTo(double value) { m_LetTo = value; } inline void setNSteps(int value) { m_LetNSteps = value; } inline void setFineTune(bool value) { m_FineTune = value; } inline void setNoFirst(bool value) { m_NoFirst = value; } inline double getFrom() { return m_LetFrom; } inline double getTo() { return m_LetTo; } inline double getStep() { return m_LetStep; } inline bool hasSteps() { return m_HasSteps; } inline bool hasFrom() { return m_HasFrom; } inline bool hasTo() { return m_HasTo; } inline void setHasStepOption(bool has) { m_HasStepOption = has; } inline void setHasSteps(bool has) { m_HasSteps = has; } inline void setHasFrom(bool has) { m_HasFrom = has; } inline void setHasTo(bool has) { m_HasTo = has; } inline void setDataSet(int ds) { m_Ds = ds; } inline int getDataSet() { return m_Ds; } inline int getDimension() { return m_Fcts.size(); } inline void addFunction(GLEFunctionParserPcode* fct) { m_Fcts.add(fct); } inline void addXRangeDS(int ds) { m_XRangeDS.insert(ds); } inline set& getXRangeDS() { return m_XRangeDS; } inline bool isHistogram() const { return m_HistDS != -1; } inline bool isFit() const { return m_FitDS != -1; } inline void setCodeLine(int line) { m_codeLine = line; } inline int getCodeLine() const { return m_codeLine; } }; GLELet::GLELet() { m_SubMap = NULL; m_LetFrom = 0.0; m_LetTo = 0.0; m_LetStep = 0.0; m_LetNSteps = 0; m_VarX = -1; m_NoFirst = false; m_FineTune = false; m_HasSteps = false; m_HasStepOption = false; m_HasFrom = false; m_HasTo = false; m_Ds = -1; m_codeLine = -1; m_fitType = "none"; m_HistDS = -1; m_nrBins = -1; m_FitDS = -1; m_limitDataX = false; m_limitDataY = false; m_limitData = false; } GLELet::~GLELet() { } void GLELet::createVarBackup(GLEVars* vars, StringIntHash* varHash) { vector ids; for (StringIntHash::iterator i(varHash->begin()); i != varHash->end(); ++i) { ids.push_back(i->second); } m_varBackup.backup(vars, ids); } void GLELet::restoreVarBackup(GLEVars* vars) { m_varBackup.restore(vars); } void GLELet::setStep(double value) { m_LetStep = value; setHasSteps(true); } void GLELet::initVars() { int vartype = 1; var_findadd("X", &m_VarX, &vartype); } void GLELet::initStep() { if (hasSteps()) return; int nstep = m_LetNSteps; if (nstep == 0) nstep = DEFAULT_STEPS; if (xx[1].log) { setStep(nstep); } else { setStep((getTo() - getFrom())/(nstep-1)); } } GLEFunctionParserPcode* GLELet::insertFunction() { GLERC fct = new GLEFunctionParserPcode(); m_Fcts.insert(m_Fcts.begin(), fct); return fct.get(); } GLEFunctionParserPcode* GLELet::addFunction() { GLEFunctionParserPcode* fct = new GLEFunctionParserPcode(); m_Fcts.add(fct); return fct; } GLEFunctionParserPcode* GLELet::addWhere() { m_Where = new GLEFunctionParserPcode(); return m_Where.get(); } bool GLELet::checkIdenticalRanges(GLEVectorAutoDelete& datasets) { if (datasets.size() == 0) return false; if (datasets.size() == 1) return true; GLELetDataSet* ds0 = datasets[0]; unsigned int nbX = dp[ds0->getDatasetID()]->np; for (unsigned int i = 1; i < datasets.size(); i++) { if (dp[datasets[i]->getDatasetID()]->np != nbX) return false; } GLEArrayImpl* rangeX0 = dp[ds0->getDatasetID()]->getDimData(0); if (rangeX0 == 0) { return false; } for (unsigned int i = 1; i < datasets.size(); i++) { GLEArrayImpl* rangeXi = dp[datasets[i]->getDatasetID()]->getDimData(0); if (rangeXi == 0 || rangeX0->size() != rangeXi->size()) { return false; } for (unsigned int j = 0; j < rangeX0->size(); j++) { if (!gle_memory_cell_equals(rangeX0->get(j), rangeXi->get(j))) { return false; } } } return true; } void GLELet::transformIdenticalRangeDatasets(GLEVectorAutoDelete& datasets, DataFill* fill) { // transform single dataset - advantage: dataset does not need to represent a function and is not sorted GLELetDataSet* ds0 = datasets[0]; GLEDataSet* ds0Data = dp[ds0->getDatasetID()]; unsigned int nbX = ds0Data->np; GLEDataPairs ds0Pairs; ds0Pairs.copyDimension(ds0Data, 0); for (unsigned int j = 0; j < nbX; j++) { if (m_HasFrom && ds0Pairs.getX(j) < m_LetFrom) { continue; } if (m_HasTo && ds0Pairs.getX(j) > m_LetTo) { continue; } bool miss = false; if (ds0Pairs.getM(j)) { miss = true; } else { for (unsigned int i = 0; i < datasets.size(); i++) { GLELetDataSet* dsi = datasets[i]; GLEArrayImpl* dsiArray = dp[dsi->getDatasetID()]->getDimData(1); if (dsiArray != 0 && dsiArray->size() == nbX) { if (dsiArray->isUnknown(j)) { miss = true; } else if (dsi->getVar() != -1) { /* dsi->getVar() can be -1 if dataset is only used in "range" expression */ var_set(dsi->getVar(), dsiArray->get(j)); } } } } if (!miss) { // this method sets the x value and computes the values for all dimensions fill->selectXValueNoIPol(ds0Pairs.getX(j)); if (!m_Where.isNull()) { if (m_Where->evalDouble() != 0.0) { fill->addPoint(); } else { fill->addMissing(); } } else { fill->addPoint(); } } else { fill->addMissing(); } } } void GLELet::combineFunctions(GLEVectorAutoDelete& datasets, DataFill* fill, double logstep) { /* initialize x-range */ set xvalues; for (unsigned int i = 0; i < datasets.size(); i++) { if (datasets[i]->isXRangeDS()) { for (int j = 0; j < datasets[i]->getNbValues(); j++) { double xv = datasets[i]->getXValue(j); if ((!m_HasFrom || xv >= m_LetFrom) && (!m_HasTo || xv <= m_LetTo)) { xvalues.insert(xv); } } for (int j = 0; j < datasets[i]->getNbMissing(); j++) { fill->setMissingValue(datasets[i]->getMissing(j)); } } } /* get x-values from step option to let command */ if (datasets.size() == 0 || m_HasStepOption) { for (double xv = m_LetFrom; xv < m_LetTo; ) { xvalues.insert(xv); if (xx[1].log) { xv *= logstep; } else { xv += m_LetStep; } } /* make sure "to" value is in there */ xvalues.insert(m_LetTo); } /* iterate over x-values and compute target values */ fill->setDataSets(&datasets); fill->setWhere(m_Where.get()); bool shouldIPol = fill->isFineTune() && fill->isRangeValid(); for (set::iterator i = xvalues.begin(); i != xvalues.end(); i++) { if (shouldIPol) { fill->addPointIPol(*i); } else { fill->addPoint(*i); } } } void GLELet::complainAboutNoFunctions(GLEVectorAutoDelete& datasets) throw(ParserError) { for (unsigned int i = 0; i < datasets.size(); i++) { if (!datasets[i]->isFunction()) { datasets[i]->complainNoFunction(); } } } void GLELet::doLet() throw(ParserError) { double logstep = 1.0; int ndn = 0; int dn_idx[11], dn_var[11]; if (!m_SubMap.isNull()) { var_find_dn(m_SubMap.get(), dn_idx, dn_var, &ndn); } if (m_LetTo <= m_LetFrom) { stringstream ss; ss << "illegal range for let expression: "; GLERange letRange; letRange.setMinMax(m_LetFrom, m_LetTo); letRange.printRange(ss); g_throw_parser_error(ss.str()); } if (ndn == 0 && xx[1].log) { if (m_LetStep < 2) { stringstream ss; ss << "with a LOG xaxis scale STEP is taken as the number of steps n," << endl; ss << "which should be at least 2, but found: " << m_LetStep; g_throw_parser_error(ss.str()); } logstep = pow(m_LetTo/m_LetFrom, 1.0/(m_LetStep-1)); } int dset_id = getDataSet(); if (ndata < dset_id) ndata = dset_id; if (dp[dset_id] == NULL) { dp[dset_id] = new GLEDataSet(dset_id); copy_default(dset_id); } /* copy default dataset settings */ DataFill fill(m_FineTune); if (g_discontinuityThreshold < 100.0) { fill.setDetectDiscontinuity(true, g_discontinuityThreshold / 100.0); } fill.setVarX(m_VarX); for (int dim = GLE_DIM_X; dim <= GLE_DIM_Y; dim++) { DataFillDimension* dim_f = new DataFillDimension(m_Fcts[dim].get()); fill.addDataDimension(dim_f); bool log = xx[dp[dset_id]->getDim(dim)->getAxis()].log; dim_f->setRange(dp[dset_id]->getDim(dim)->getRange(), log); } /* was "range" option given? */ set& rangeDS = getXRangeDS(); bool allRangeDS = rangeDS.empty(); /* initialize input datasets */ bool allFunctions = true; GLEVectorAutoDelete datasets; for (int i = 0; i < ndn; i++) { GLELetDataSet* ds = new GLELetDataSet(); datasets.push_back(ds); if (dp[dn_var[i]] == NULL) { ostringstream errs; errs << "dataset not defined: d" << (dn_var[i]); g_throw_parser_error(errs.str()); } ds->initializeFrom(dn_var[i], dn_idx[i]); if (!ds->isFunction()) allFunctions = false; /* should the x-range include the x-range of this dataset? */ if (allRangeDS) { ds->setIsXRangeDS(true); } else { set::iterator iter = rangeDS.find(ds->getDatasetID()); if (iter != rangeDS.end()) { ds->setIsXRangeDS(true); rangeDS.erase(iter); } } } /* add datasets that supply x-range values */ for (set::iterator iter = rangeDS.begin(); iter != rangeDS.end(); iter++) { GLELetDataSet* ds = new GLELetDataSet(); datasets.push_back(ds); if (dp[*iter] == NULL) { ostringstream errs; errs << "dataset not defined: d" << (*iter); g_throw_parser_error(errs.str()); } ds->initializeFrom(*iter, -1); if (!ds->isFunction()) allFunctions = false; ds->setIsXRangeDS(true); } /* ok, ready to generate points */ if (checkIdenticalRanges(datasets) && !m_HasStepOption) { // transform datasets with identical x-ranges and no "step" option given // in this case, the datasets do not need to be a function! transformIdenticalRangeDatasets(datasets, &fill); } else { if (!allFunctions) { // code below assumes all given datasets represent functions complainAboutNoFunctions(datasets); } combineFunctions(datasets, &fill, logstep); } if (!m_NoFirst) { dp[dset_id]->backup(); } else { dp[dset_id]->clearAll(); } /* done, transfer to target dataset */ fill.toDataset(dp[dset_id]); } void GLELet::parseFitFunction(const string& fct, GLEParser* parser) throw(ParserError) { Tokenizer* tokens = parser->getTokens(); string& token = tokens->next_token(); m_FitDS = get_dataset_identifier(token, parser, true); m_fitType = fct; m_limitDataX = false; m_limitDataY = false; m_limitData = false; while (true) { string& token = tokens->try_next_token(); if (str_i_equals(token, "WITH")) { m_fitFct = tokens->next_multilevel_token(); } else if (str_i_equals(token, "EQSTR")) { parser->evalTokenToString(&m_eqStr); } else if (str_i_equals(token, "FORMAT")) { parser->evalTokenToString(&m_format); } else if (str_i_equals(token, "RSQ")) { m_rsq = tokens->next_token(); } else if (str_i_equals(token, "FROM")) { setHasFrom(true); setFrom(parser->evalTokenToDouble()); } else if (str_i_equals(token,"TO")) { setHasTo(true); setTo(parser->evalTokenToDouble()); } else if (str_i_equals(token, "STEP")) { setHasStepOption(true); setStep(parser->evalTokenToDouble()); } else if (str_i_equals(token, "LIMIT_DATA_X")) { // user wants the data ploted from dd xmax to dd xmin m_limitDataX = true; } else if (str_i_equals(token, "LIMIT_DATA_Y")) { // get x values from evaluation of slope m_limitDataY = true; } else if (str_i_equals(token, "LIMIT_DATA")) { m_limitData = true; } else if (str_i_equals(token, "XMIN")) { double xm = parser->evalTokenToDouble(); m_window.setXMin(xm); setFrom(xm); } else if (str_i_equals(token, "XMAX")) { double xm = parser->evalTokenToDouble(); m_window.setXMax(xm); setTo(xm); } else if (str_i_equals(token, "YMIN")) { m_window.setYMin(parser->evalTokenToDouble()); } else if (str_i_equals(token, "YMAX")) { m_window.setYMax(parser->evalTokenToDouble()); } else { if (token != "") tokens->pushback_token(); break; } } // user can supply three variables to get the fit: SLOPE OFFSET R_SQUARED if (tokens->has_more_tokens()) { m_varSlope = tokens->next_token(); ensure_valid_var_name(tokens, m_varSlope); } if (tokens->has_more_tokens()) { m_varIntercept = tokens->next_token(); ensure_valid_var_name(tokens, m_varIntercept); } if (tokens->has_more_tokens()) { m_varR = tokens->next_token(); ensure_valid_var_name(tokens, m_varR); } if (tokens->has_more_tokens()) { throw tokens->error("extra tokens at end of let command"); } } void GLELet::doFitFunction() throw(ParserError) { bool linfit = false, logefit = false, log10fit = false, powxfit = false, genfit = false; // doing fitting routines if (str_i_equals(m_fitType, "LINFIT")) linfit = true; if (str_i_equals(m_fitType, "LOGEFIT")) logefit = true; if (str_i_equals(m_fitType, "LOG10FIT")) log10fit = true; if (str_i_equals(m_fitType, "POWXFIT")) powxfit = true; if (str_i_equals(m_fitType, "FIT")) genfit = true; // copy to vectors but ignore miss vector x, y; double xmax = -GLE_INF; double ymax = -GLE_INF; double xmin = +GLE_INF; double ymin = +GLE_INF; GLEDataPairs fitPairs(getDataset(m_FitDS)); for (unsigned int i = 0; i < fitPairs.size(); i++) { if (!fitPairs.getM(i)) { if (m_window.valid(fitPairs.getX(i), fitPairs.getY(i))) { xmax = max(xmax, fitPairs.getX(i)); xmin = min(xmin, fitPairs.getX(i)); ymax = max(ymax, fitPairs.getY(i)); ymin = min(ymin, fitPairs.getY(i)); x.push_back(fitPairs.getX(i)); y.push_back(fitPairs.getY(i)); } } } if (m_limitDataX) { setFrom(xmin); setTo(xmax); } int fitds = getDataSet(); double slope = 0, offset = 0, rsquared = 0; char* new_let = new char[1000]; if (linfit) { least_square(&x, &y, &slope, &offset, &rsquared); if (m_limitDataY || m_limitData) { // find x values from ymax and min // y=slope*x+offset // x=(y-offset)/slope double temp_xmax = max((ymax-offset)/slope, (ymin-offset)/slope); double temp_xmin = min((ymax-offset)/slope, (ymin-offset)/slope); if (m_limitDataY) { setTo(temp_xmax); setFrom(temp_xmin); } else if (m_limitData) { setTo(max(temp_xmax, xmax)); setFrom(min(temp_xmin, xmin)); } } sprintf(new_let, "let d%d = %0.10e*x+%0.10e FROM %0.10e TO %0.10e", fitds, slope, offset, getFrom(), getTo()); } else if (logefit) { //take loge of y values for (vector::iterator vdi = y.begin(); vdi != y.end(); ++vdi) { (*vdi) = log(*vdi); } least_square(&x, &y, &slope, &offset, &rsquared); if (m_limitDataY || m_limitData) { // find x values from ymax and min // y=exp(offset)*exp(slope*x) // x=(log(y)-offset)/slope double temp_xmax = max((log(ymax)-offset)/slope, (log(ymin)-offset)/slope); double temp_xmin = min((log(ymax)-offset)/slope, (log(ymin)-offset)/slope); if (m_limitDataY) { setTo(temp_xmax); setFrom(temp_xmin); } else if (m_limitData) { setTo(max(temp_xmax, xmax)); setFrom(min(temp_xmin, xmin)); } } offset = exp(offset); sprintf(new_let, "let d%d = %0.10e*exp(%0.10e*x) FROM %0.10e TO %0.10e", fitds, offset, slope, getFrom(), getTo()); } else if (log10fit) { //take log10 of y values for (vector::iterator vdi = y.begin(); vdi != y.end(); ++vdi) { (*vdi) = log10(*vdi); } least_square(&x,&y,&slope,&offset,&rsquared); if (m_limitDataY || m_limitData) { // find x values from ymax and min // y=exp(offset)*exp(slope*x) // x=(log10(y)-offset)/slope double temp_xmax = max((log10(ymax)-offset)/slope, (log10(ymin)-offset)/slope); double temp_xmin = min((log10(ymax)-offset)/slope, (log10(ymin)-offset)/slope); if (m_limitDataY) { setTo(temp_xmax); setFrom(temp_xmin); } else if (m_limitData) { setTo(max(temp_xmax, xmax)); setFrom(min(temp_xmin, xmin)); } } offset = pow(10.0,offset); sprintf(new_let, "let d%d = %0.10e*10^(%0.10e*x) FROM %0.10e TO %0.10e", fitds, offset, slope, getFrom(), getTo()); } else if (powxfit) { //take loge of both axis for (vector::iterator vdi = y.begin(); vdi != y.end(); ++vdi) { (*vdi) = log(*vdi); } for (vector::iterator vdi = x.begin(); vdi != x.end(); ++vdi) { (*vdi) = log(*vdi); } least_square(&x, &y, &slope, &offset, &rsquared); if (m_limitDataY || m_limitData) { // find x values from ymax and min // y=exp(offset)*x^(slope) // x = ( y / exp(offset) ) ^ (1/slope) double temp_xmax = max(pow(ymax/exp(offset),1.0/slope), pow(ymin/exp(offset),1.0/slope) ); double temp_xmin = min(pow(ymax/exp(offset),1.0/slope), pow(ymin/exp(offset),1.0/slope) ); if (m_limitDataY) { setTo(temp_xmax); setFrom(temp_xmin); } else if (m_limitData) { setTo(max(temp_xmax, xmax)); setFrom(min(temp_xmin, xmin)); } } offset = exp(offset); sprintf(new_let, "let d%d = %0.10e*x^(%0.10e) FROM %0.10e TO %0.10e", fitds, offset, slope, getFrom(), getTo()); } else if (genfit) { GLEFitLS fitls; fitls.polish(m_fitFct); fitls.setXY(&x,&y); fitls.fit(); fitls.testFit(); initVars(); initStep(); addFunction()->polishX(); addFunction(fitls.getFunction()); doLet(); if (m_eqStr != "") { string eqstr_v; str_to_uppercase(m_eqStr); fitls.toFunctionStr(m_format, &eqstr_v); var_findadd_set(m_eqStr.c_str(), eqstr_v); } if (m_rsq != "") { str_to_uppercase(m_rsq); var_findadd_set((char*)m_rsq.c_str(), fitls.getRSquare()); } delete []new_let; return; } // add the variables -- they will be globals? if (m_varSlope != "") { str_to_uppercase(m_varSlope); var_findadd_set((char*)m_varSlope.c_str(), slope); } if (m_varIntercept != "") { str_to_uppercase(m_varIntercept); var_findadd_set((char*)m_varIntercept.c_str(), offset); } if (m_varR != "") { str_to_uppercase(m_varR); var_findadd_set((char*)m_varR.c_str(), rsquared); } string letFct(new_let); delete []new_let; GLELet* let = parseLet(letFct, getCodeLine()); ::doLet(let, m_FineTune); delete let; } void GLELet::parseHistogram(GLEParser* parser) throw(ParserError) { Tokenizer* tokens = parser->getTokens(); string& token = tokens->next_token(); m_nrBins = -1; m_HistDS = get_dataset_identifier(token, parser, true); while (tokens->has_more_tokens()) { string& token = tokens->next_token(); if (str_i_equals(token, "FROM")) { setHasFrom(true); setFrom(parser->evalTokenToDouble()); } else if (str_i_equals(token,"TO")) { setHasTo(true); setTo(parser->evalTokenToDouble()); } else if (str_i_equals(token, "STEP")) { setHasStepOption(true); setStep(parser->evalTokenToDouble()); } else if (str_i_equals(token, "BINS")) { m_nrBins = (int)floor(parser->evalTokenToDouble()+0.5); } else { stringstream errstr; errstr << "unknown token in 'let' expression: '" << token << "'"; throw tokens->error(errstr.str()); } } } void GLELet::doHistogram() throw(ParserError) { int bins = m_nrBins; GLEDataPairs histData(getDataset(m_HistDS)); if (!hasFrom() || !hasTo()) { // Take from axis range if explicitly given GLEAxis* ax = &xx[GLE_AXIS_X]; if (!hasFrom() && ax->getRange()->hasMin()) { setHasFrom(true); setFrom(ax->getMin()); } if (!hasTo() && ax->getRange()->hasMax()) { setHasTo(true); setTo(ax->getMax()); } // Take from data range GLERange range; for (unsigned int i = 0; i < histData.size(); i++) { range.updateRange(histData.getY(i), histData.getM(i)); } roundrange(&range, false, false, 0.0); if (range.validNotEmpty()) { if (!hasFrom()) { setHasFrom(true); setFrom(range.getMin()); } if (!hasTo()) { setHasTo(true); setTo(range.getMax()); } } } if (bins == -1 && !hasSteps()) { bins = 10; } vector from; vector counts; if (bins != -1) { for (int i = 0; i < bins; i++) { from.push_back(getFrom() + (getTo()-getFrom())*i/bins); counts.push_back(0.0); } from.push_back(getTo()); } else { int i = 0; double value = getFrom(); while (value < getTo()) { from.push_back(value); counts.push_back(0.0); i++; // avoids rounding errors value = getFrom()+i*getStep(); } from.push_back(value); } for (unsigned int i = 0; i < dp[m_HistDS]->np; i++) { if (!histData.getM(i)) { int found = -1; double yv = histData.getY(i); for (vector::size_type j = 0; j < counts.size(); j++) { if (yv >= from[j] && yv < from[j+1]) { found = j; break; } } if (found != -1) counts[found]++; else if (yv == getTo()) counts[counts.size()-1]++; } } DataFill fill(false); for (int dim = GLE_DIM_X; dim <= GLE_DIM_Y; dim++) { DataFillDimension* dim_f = new DataFillDimension(NULL); fill.addDataDimension(dim_f); } for (vector::size_type i = 0; i < from.size()-1; i++) { fill.addPoint((from[i]+from[i+1])/2.0, counts[i]); } int resds = getDataSet(); dp[resds]->clearAll(); fill.toDataset(dp[resds]); } void deleteLet(GLELet* let) { delete let; } /* LET d2 = exp(x) [ FROM exp TO exp [ STEP exp ] ] */ /* LET d3 = exp(dn,d...) */ // added by V.L. // LET d3 = LINFIT(dn) [FROM exp TO exp] or [DATA] [SLOPE] [OFFSET] [R_SQUARED] // [SLOPE] [OFFSET] [R_SQUARED] are user defined variables // no option after linfit results in line being drawn over the whole graph // DATA results in the line being drawn from the minimum to the maximum of the data series GLELet* parseLet(GLEParser* parser, int codeLine) throw(ParserError) { GLELet* let = new GLELet(); let->setCodeLine(codeLine); Tokenizer* tokens = parser->getTokens(); tokens->ensure_next_token_i("LET"); // read the target data set identifier string& token = tokens->next_token(); let->setDataSet(get_dataset_identifier(token, parser, false)); ensureDataSetCreated(let->getDataSet()); // next token should be an equal sign tokens->ensure_next_token("="); string let_fct = tokens->next_multilevel_token(); if (str_i_equals(let_fct,"LINFIT") || str_i_equals(let_fct,"LOGEFIT") || str_i_equals(let_fct,"LOG10FIT") || str_i_equals(let_fct,"POWXFIT") || str_i_equals(let_fct,"FIT")) { let->parseFitFunction(let_fct, parser); return let; } if (str_i_equals(let_fct,"HIST")) { let->parseHistogram(parser); return let; } GLEVars* vars = getVarsInstance(); let->setVarSubMap(vars->addLocalSubMap()); let->initVars(); // read in multi-dimensional let StringIntHash varHash; GLEFunctionParserPcode* dim_1 = let->addFunction(); dim_1->polishPos(let_fct.c_str(), tokens->token_pos_col(), &varHash); while (tokens->is_next_token(",")) { const string& let_fct_n = tokens->next_multilevel_token(); GLEFunctionParserPcode* dim_n = let->addFunction(); dim_n->polishPos(let_fct_n.c_str(), tokens->token_pos_col(), &varHash); } // if one dimensional, then first dimension is just "x" if (let->getDimension() == 1) { GLEFunctionParserPcode* dim_0 = let->insertFunction(); dim_0->polishX(); } // check for too high dimension if (let->getDimension() > 2) { ostringstream errstr; errstr << "let dimension > 2 not supported (found dimension " << let->getDimension() << ")"; throw tokens->error(errstr.str()); } let->createVarBackup(vars, &varHash); // iterate over all tokens while (tokens->has_more_tokens()) { token = tokens->next_token(); if (str_i_equals(token,"FROM")) { let->setHasFrom(true); let->setFrom(parser->evalTokenToDouble()); } else if (str_i_equals(token,"TO")) { let->setHasTo(true); let->setTo(parser->evalTokenToDouble()); } else if (str_i_equals(token,"STEP")) { let->setHasStepOption(true); let->setStep(parser->evalTokenToDouble()); } else if (str_i_equals(token,"NSTEPS")) { let->setNSteps((int)floor(parser->evalTokenToDouble()+0.5)); } else if (str_i_equals(token,"NOTUNE")) { let->setFineTune(false); } else if (str_i_equals(token,"WHERE")) { const string& where_s = tokens->next_multilevel_token(); GLEFunctionParserPcode* where = let->addWhere(); where->polishPos(where_s.c_str(), tokens->token_pos_col()); } else if (str_i_equals(token,"RANGE")) { token = tokens->next_token(); let->addXRangeDS(get_dataset_identifier(token.c_str())); while (tokens->is_next_token(",")) { token = tokens->next_token(); let->addXRangeDS(get_dataset_identifier(token.c_str())); } } else { ostringstream errstr; errstr << "unknown token in 'let' expression: '" << token << "'"; throw tokens->error(errstr.str()); } } vars->removeLocalSubMap(); return let; } GLELet* parseLet(GLESourceLine& sline) throw(ParserError) { GLEParser* parser = get_global_parser(); parser->setString(sline.getCodeCStr()); return parseLet(parser, sline.getGlobalLineNo()); } GLELet* parseLet(const string& letFct, int codeLine) throw(ParserError) { GLEParser* parser = get_global_parser(); parser->setString(letFct.c_str()); return parseLet(parser, codeLine); } void doLet(GLELet* let, bool nofirst) throw(ParserError) { g_set_error_line(let->getCodeLine()); let->setNoFirst(nofirst); let->setFineTune(nofirst); GLEAxis* ax = &xx[GLE_AXIS_X]; if (!let->hasFrom()) { let->setFrom(ax->getMin()); } if (!let->hasTo()) { let->setTo(ax->getMax()); } if (let->isHistogram()) { let->doHistogram(); } else if (let->isFit()) { let->doFitFunction(); } else { GLEVars* vars = getVarsInstance(); vars->addLocalSubMap(let->getVarSubMap()); let->restoreVarBackup(vars); let->initStep(); let->doLet(); vars->removeLocalSubMap(); } } void next_lstyle(char* s,int* ct) { char next[200]; double temp; int is_alpha; int i,len; is_alpha=false; (*ct)++; doskip(tk[*ct],ct); strcpy(next,tk[*ct]); len = strlen(next); for(i=0 ; i < len ; i++) { is_alpha=isalpha((int)next[i]); if (is_alpha) i = len; } if (is_alpha) { /* this is a variable so evaluate it */ polish_eval(next,&temp); sprintf(s,"%g",temp); } else { /* it is a number so just copy over*/ if (len < 9) { strcpy(s,next); } else { gprint("ERROR line style string too long %s\n",next); } } } void next_svg_iter(int* s, int* ct) { char next[200]; double temp; int is_alpha; int i,len,idx,type; is_alpha=false; (*ct)++; doskip(tk[*ct],ct); strcpy(next,tk[*ct]); len = strlen(next); printf("len=%d next=%s\n",len,next); // check to see if number or alphanumeric if ( len > 0 ) { for(i=0 ; i < len ; i++) { is_alpha=isalpha((int)next[i]); if (is_alpha) i = len; } if (is_alpha) { // it is alphanumeric so see if it is a variable // if not set it to zero var_find(next,&idx,&type); if (idx != -1 ) { /* this is a variable so evaluate it */ polish_eval(next,&temp); *s = (int) temp; } else { // its not a variable must be another keyword // set iter to 1 (*ct)--; *s = 1; } //sprintf(s,"%g\0",temp); } else { /* it is a number so just copy over*/ *s = atoi(next); } } else { //len == 0 so there isnothing there set to 1 *s = 1; (*ct)--; } } #define next_dn (ct+=1,skipspace,atoi(tk[ct]+1)) void fixup_err(string& err) { if (err.size() >= 1 && toupper(err[0]) == 'D') { // If d[i] is used, then this should be converted now int dataset = get_dataset_identifier(err.c_str(), false); std::ostringstream fixupName; fixupName << "d" << dataset; err = fixupName.str(); } } void do_dataset(int d, GLEGraphBlockInstance* graphBlock) throw(ParserError) { int ct = 2; while (ct <= ntk) { kw("LINE") { dp[d]->line = true; dp[d]->layer_line = graphBlock->getLayerWithDefault(GLE_GRAPH_LAYER_LINE); } else kw("LSTYLE") { next_lstyle(dp[d]->lstyle,&ct); dp[d]->layer_line = graphBlock->getLayerWithDefault(GLE_GRAPH_LAYER_LINE); } else kw("LWIDTH") { dp[d]->lwidth = next_exp; } else kw("MARKER") { dp[d]->marker = next_marker; dp[d]->layer_marker = graphBlock->getLayerWithDefault(GLE_GRAPH_LAYER_MARKER); } else kw("MDATA") { dp[d]->mdata = next_dn; } else kw("COLOR") { dp[d]->color = next_color; } else kw("KEYFILL") { dp[d]->key_fill = next_color; } else kw("MSIZE") { dp[d]->msize = next_exp; } else kw("MDIST") { dp[d]->mdist = next_exp; } else kw("MSCALE") { dp[d]->mscale = next_exp; } else kw("KEY") { next_vquote_cpp(dp[d]->key_name); } else kw("AUTOSCALE") { dp[d]->autoscale = true; } else kw("AUTO") { dp[d]->autoscale = true; } else kw("NOMISS") { dp[d]->nomiss = true; } else kw("NOMISSING") { dp[d]->nomiss = true; } else kw("FILE") { next_vquote(dp[d]->bigfile); } else kw("BIGFILE") { next_vquote(dp[d]->bigfile); } else kw("STEPS") { dp[d]->line_mode = GLE_GRAPH_LM_STEPS; dp[d]->layer_line = graphBlock->getLayerWithDefault(GLE_GRAPH_LAYER_LINE); } else kw("FSTEPS") { dp[d]->line_mode = GLE_GRAPH_LM_FSTEPS; dp[d]->layer_line = graphBlock->getLayerWithDefault(GLE_GRAPH_LAYER_LINE); } else kw("HIST") { dp[d]->line_mode = GLE_GRAPH_LM_HIST; dp[d]->layer_line = graphBlock->getLayerWithDefault(GLE_GRAPH_LAYER_LINE); } else kw("BAR") { dp[d]->line_mode = GLE_GRAPH_LM_BAR; dp[d]->layer_line = graphBlock->getLayerWithDefault(GLE_GRAPH_LAYER_LINE); } else kw("IMPULSES") { dp[d]->line_mode = GLE_GRAPH_LM_IMPULSES; dp[d]->layer_line = graphBlock->getLayerWithDefault(GLE_GRAPH_LAYER_LINE); } else kw("XAXIS") { dp[d]->getDim(GLE_DIM_X)->setAxis(GLE_AXIS_X); } else kw("YAXIS") { dp[d]->getDim(GLE_DIM_Y)->setAxis(GLE_AXIS_Y); } else kw("X2AXIS") { dp[d]->getDim(GLE_DIM_X)->setAxis(GLE_AXIS_X2); } else kw("Y2AXIS") { dp[d]->getDim(GLE_DIM_Y)->setAxis(GLE_AXIS_Y2); } else kw("X0AXIS") { dp[d]->getDim(GLE_DIM_X)->setAxis(GLE_AXIS_X0); } else kw("Y0AXIS") { dp[d]->getDim(GLE_DIM_Y)->setAxis(GLE_AXIS_Y0); } else kw("SMOOTH") { dp[d]->line = true; dp[d]->layer_line = graphBlock->getLayerWithDefault(GLE_GRAPH_LAYER_LINE); dp[d]->smoothm = false; dp[d]->smooth = true; } else kw("SMOOTHM") { dp[d]->line = true; dp[d]->layer_line = graphBlock->getLayerWithDefault(GLE_GRAPH_LAYER_LINE); dp[d]->smoothm = true; dp[d]->smooth = true; } else kw("SVG_SMOOTH") { dp[d]->line = true; dp[d]->layer_line = graphBlock->getLayerWithDefault(GLE_GRAPH_LAYER_LINE); dp[d]->svg_iter = (int) next_exp; if (dp[d]->svg_iter == 0) dp[d]->svg_iter = 1; // if they say svg_smooth they want it at least once dp[d]->svg_smooth = true; dp[d]->smoothm = false; dp[d]->smooth = false; } else kw("DERESOLVE") { dp[d]->deresolve = (int) next_exp; dp[d]->deresolve_avg = false; if (str_i_equals(tk[ct+1], "AVERAGE")) { dp[d]->deresolve_avg = true; ct++; } } else kw("XMIN") { dp[d]->getDim(GLE_DIM_X)->getRange()->setMinSet(next_exp); } else kw("XMAX") { dp[d]->getDim(GLE_DIM_X)->getRange()->setMaxSet(next_exp); } else kw("YMIN") { dp[d]->getDim(GLE_DIM_Y)->getRange()->setMinSet(next_exp); } else kw("YMAX") { dp[d]->getDim(GLE_DIM_Y)->getRange()->setMaxSet(next_exp); } else kw("HERR") { next_str_cpp(dp[d]->herrup); fixup_err(dp[d]->herrup); dp[d]->herrdown = dp[d]->herrup; dp[d]->layer_error = graphBlock->getLayerWithDefault(GLE_GRAPH_LAYER_ERROR_BAR); } else kw("HERRLEFT") { next_str_cpp(dp[d]->herrup); fixup_err(dp[d]->herrup); dp[d]->layer_error = graphBlock->getLayerWithDefault(GLE_GRAPH_LAYER_ERROR_BAR); } else kw("HERRRIGHT") { next_str_cpp(dp[d]->herrdown); fixup_err(dp[d]->herrdown); dp[d]->layer_error = graphBlock->getLayerWithDefault(GLE_GRAPH_LAYER_ERROR_BAR); } else kw("HERRWIDTH") { dp[d]->herrwidth = next_exp; } else kw("ERR") { next_str_cpp(dp[d]->errup); fixup_err(dp[d]->errup); dp[d]->errdown = dp[d]->errup; dp[d]->layer_error = graphBlock->getLayerWithDefault(GLE_GRAPH_LAYER_ERROR_BAR); } else kw("ERRUP") { next_str_cpp(dp[d]->errup); fixup_err(dp[d]->errup); dp[d]->layer_error = graphBlock->getLayerWithDefault(GLE_GRAPH_LAYER_ERROR_BAR); } else kw("ERRDOWN") { next_str_cpp(dp[d]->errdown); fixup_err(dp[d]->errdown); dp[d]->layer_error = graphBlock->getLayerWithDefault(GLE_GRAPH_LAYER_ERROR_BAR); } else kw("ERRWIDTH") { dp[d]->errwidth = next_exp; } else { g_throw_parser_error("unrecognised GRAPH DN sub command: '",tk[ct],"'"); } ct++; } // some options imply "di line" if (dp[d]->line_mode != GLE_GRAPH_LM_PLAIN) { dp[d]->line = true; } if (dp[d]->lstyle[0] != 0) { dp[d]->line = true; } if (dp[d]->line || dp[d]->marker != 0) { // make sure axisscale is also on if "dn line" given // for individual datasets "di ...", this is enabled before this method is called dp[d]->axisscale = true; } } void do_each_dataset_settings() { // Set datasets in to/from of bar commands as used for (int bar = 1; bar <= g_nbar; bar++) { for (int i = 0; i < br[bar]->ngrp; i++) { int to_bar = br[bar]->to[i]; int from_bar = br[bar]->from[i]; if (to_bar != 0 && to_bar <= ndata && dp[to_bar] != NULL) { dp[to_bar]->axisscale = true; if (br[bar]->horiz) dp[to_bar]->inverted = true; } if (from_bar != 0 && from_bar <= ndata && dp[from_bar] != NULL) { dp[from_bar]->axisscale = true; if (br[bar]->horiz) dp[from_bar]->inverted = true; } } } /* Add dataset to key */ for (int dn = 1; dn <= ndata; dn++) { if (dp[dn] != NULL && dp[dn]->axisscale) { g_graphBlockData->getOrder()->addDataSet(dn); /* automatically turn on labels on axis for this dataset */ for (int dim = GLE_DIM_X; dim <= GLE_DIM_Y; dim++) { GLEAxis* ax = &xx[dp[dn]->getDim(dim)->getAxis()]; if (!ax->has_label_onoff) ax->label_off = false; } } } do_dataset_key_entries(); // If no dataset is used, then scale based on all datasets bool has = false; for (int dn = 1; dn <= ndata; dn++) { if (dp[dn] != NULL && dp[dn]->axisscale) has = true; } if (!has) { for (int dn = 1; dn <= ndata; dn++) { if (dp[dn] != NULL) dp[dn]->axisscale = true; } } // Make sure no axis has datasets associated to it for (int axis = GLE_AXIS_X; axis <= GLE_AXIS_Y0; axis++) { xx[axis].removeAllDimensions(); } // Add datasets to axis for (int dn = 1; dn <= ndata; dn++) { if (dp[dn] != NULL && dp[dn]->axisscale) { for (int dim = 0; dim < 2; dim++) { GLEDataSetDimension* dimension = dp[dn]->getDim(dim); xx[dimension->getAxis()].addDimension(dimension); } } } } extern KeyInfo* g_keyInfo; void do_dataset_key(int d) { if (dp[d] != NULL && dp[d]->key_name != "") { KeyEntry* entry = g_keyInfo->createEntry(); entry->fill = dp[d]->key_fill; entry->color = dp[d]->color; entry->lwidth = dp[d]->lwidth; entry->marker = dp[d]->marker; entry->msize = dp[d]->msize; strcpy(entry->lstyle,dp[d]->lstyle); if (entry->lstyle[0] == 0 && dp[d]->line) { entry->lstyle[0] = '1'; entry->lstyle[1] = 0; } entry->descrip = dp[d]->key_name; if (g_get_tex_labels()) { entry->descrip.insert(0, "\\tex{"); entry->descrip.append("}"); } } } void do_dataset_key_entries() { GLEArrayImpl* order = g_graphBlockData->getOrder()->getArray(); for (unsigned int i = 0; i < order->size(); ++i) { if (order->getType(i) == GLEObjectTypeInt) { do_dataset_key(order->getInt(i)); } if (order->getType(i) == GLEObjectTypeClassInstance) { GLEClassInstance* classInstance = static_cast(order->getObject(i)); if (classInstance->getDefinition() == g_graphBlockData->getGraphBlockBase()->getClassDefinitions()->getKeySeparator()) { if (i == 0 || i + 1 == order->size()) { g_throw_parser_error("key separator not in between key entries"); } KeyEntry* entry = g_keyInfo->lastEntry(); if (classInstance->getArray()->size() > 0) { entry->sepstyle = classInstance->getArray()->getInt(0); } g_keyInfo->addColumn(); } } } } void set_bar_axis_places() { for (int bar = 1; bar <= g_nbar; bar++) { for (int i = 0; i < br[bar]->ngrp; i++) { int to_bar = br[bar]->to[i]; if (to_bar != 0 && to_bar <= ndata && dp[to_bar] != NULL) { GLEAxis* axis = br[bar]->horiz ? &xx[2] : &xx[1]; if (axis->hasNames() && !axis->hasPlaces()) { int np = dp[to_bar]->np; if (np == axis->getNbNames()) { GLEDataPairs barData; barData.copyDimension(getDataset(to_bar), 0); for (unsigned int i = 0; i < barData.size(); i++) { axis->addPlace(barData.getX(i)); } } } } } } } void min_max_scale(GLEAxis* ax) { GLERange* range = ax->getDataRange(); for (int dim = 0; dim < ax->getNbDimensions(); dim++) { GLEDataSet* dataset = ax->getDim(dim)->getDataSet(); if (dataset->np > 0) { GLEDataPairs pairs(dataset); vector* values = pairs.getDimension(ax->getDim(dim)->getDataDimensionIndex()); for (unsigned int i = 0; i < pairs.size(); i++) { range->updateRange(values->at(i), pairs.getM(i)); } } } } void quantile_scale(GLEAxis* ax) { /* building list for quantile calculation */ vector q_list; for (int dim = 0; dim < ax->getNbDimensions(); dim++) { GLEDataSet* dataset = ax->getDim(dim)->getDataSet(); if (dataset->np > 0) { GLEDataPairs pairs(dataset); vector* values = pairs.getDimension(ax->getDim(dim)->getDataDimensionIndex()); for (unsigned int i = 0; i < pairs.size(); i++) { if (!pairs.getM(i)) { q_list.push_back(values->at(i)); } } } } std::sort(q_list.begin(), q_list.end()); int q_size = q_list.size(); /* only do quantile scale if at least two values given */ if (q_size > 1) { GLEAxisQuantileScale* q_scale = ax->getQuantileScale(); /* calculating ymin */ double q_intpart; double q_fracpart = modf((q_size-1)*q_scale->getLowerQuantile(), &q_intpart); double q_lower = q_list[(int)q_intpart]; if ((int)q_intpart + 1 < q_size - 1) { q_lower = q_lower*(1.0-q_fracpart)+q_list[(int)q_intpart+1]*q_fracpart; } /* calculating ymax */ q_fracpart = modf((q_size-1)*q_scale->getUpperQuantile(), &q_intpart); double q_upper = q_list[(int)q_intpart]; if ((int)q_intpart + 1 < q_size - 1) { q_upper = q_upper*(1.0-q_fracpart)+q_list[(int)q_intpart+1]*q_fracpart; } double q_ymin = q_lower-(q_upper-q_lower)*q_scale->getLowerQuantileFactor(); double q_ymax = q_upper+(q_upper-q_lower)*q_scale->getUpperQuantileFactor(); /* store the axis range */ GLERange* range = ax->getDataRange(); range->updateRange(q_ymin); range->updateRange(q_ymax); } else { min_max_scale(ax); } } void get_dataset_ranges() { // Reset axis ranges reset_axis_ranges(); // Get ranges from color map if (g_colormap != NULL && g_colormap->getData() != NULL) { GLERectangle* bounds = g_colormap->getData()->getBounds(); bounds->addToRangeX(xx[GLE_AXIS_X].getDataRange()); bounds->addToRangeY(xx[GLE_AXIS_Y].getDataRange()); } // Set datasets in to/from of bar commands as used for (int bar = 1; bar <= g_nbar; bar++) { for (int i = 0; i < br[bar]->ngrp; i++) { int to_bar = br[bar]->to[i]; if (to_bar != 0 && to_bar <= ndata && dp[to_bar] != NULL && dp[to_bar]->np > 0) { // Extend range at both sides for a bar dataset // So that bars are visible int np = dp[to_bar]->np; if (np > 0) { GLEDataSetDimension* xdim = dp[to_bar]->getDimXInv(); GLERange* xrange = xx[xdim->getAxis()].getDataRange(); GLEDataPairs barData(dp[to_bar]); double delta = barData.getMinXInterval(); xrange->updateRange(barData.getX(0) - delta/2, barData.getM(0)); xrange->updateRange(barData.getX(np - 1) + delta/2, barData.getM(np-1)); } } } } // Autoscale axis for (int axis = GLE_AXIS_X; axis <= GLE_AXIS_Y0; axis++) { GLEAxis* ax = &xx[axis]; if (!ax->getRange()->hasBoth()) { if (ax->shouldPerformQuantileScale()) { quantile_scale(ax); } else { min_max_scale(ax); } } } } void do_bigfile_compatibility_dn(int dn) throw(ParserError) { string infile = dp[dn]->bigfile; if (infile.length() >= 1 && infile[infile.length()-1] == '$') { int idx, typ; var_find(infile.c_str(), &idx, &typ) ; if (idx >= 0) var_getstr(idx, infile); } string fname; int bigcol1 = 1; int bigcol2 = 2; bool bigally = false; char_separator sep1(",", ""); tokenizer tokens(infile, sep1); if (tokens.has_more()) { fname = tokens.next_token(); } if (tokens.has_more()) { string col1 = tokens.next_token(); if (col1 == "*") { bigally = true; } else { bigcol1 = atoi(col1.c_str()); } if (tokens.has_more()) { string col2 = tokens.next_token(); if (col2 == "*") { bigally = true; } else { bigcol2 = atoi(col2.c_str()); if (bigcol2 == 0) { g_throw_parser_error_sys("expecting \"file,xcoloumn,ycolumn\", but found \"", infile.c_str(), "\""); } } } } if (fname.length() >= 1 && fname[fname.length()-1] == '$') { int idx, typ; var_find(fname.c_str(), &idx, &typ) ; if (idx >= 0) var_getstr(idx, fname); } string line; ifstream file; validate_open_input_stream(file, fname); vector xp; vector yp; vector miss; vector columns; vector columns_miss; char_separator sep2(" ,;\t\n", "!"); tokenizer data_tokens(sep2); while (file.good()) { getline(file, line); data_tokens.set_input(line); if (bigally) { // only data points - not in columns while (data_tokens.has_more()) { const string& token = data_tokens.next_token(); if (token == "!") { break; } xp.push_back(xp.size()+1); if (token == "*" || token == "?" || token == "-" || token == ".") { yp.push_back(0.0); miss.push_back(true); } else { yp.push_back(atof(token.c_str())); miss.push_back(false); } } } else { // read in columns int nbcol = 0; while (data_tokens.has_more()) { const string& token = data_tokens.next_token(); if (nbcol >= (int)columns.size()) { columns.push_back(0.0); columns_miss.push_back(false); } if (token == "!") { break; } if (token == "*" || token == "?" || token == "-" || token == ".") { columns[nbcol] = 0.0; columns_miss[nbcol] = true; } else { columns[nbcol] = atof(token.c_str()); columns_miss[nbcol] = false; } nbcol++; } // get data from columns if (bigcol1 == 0) { if (bigcol2 >= 1 && bigcol2 <= nbcol) { xp.push_back(xp.size()+1); yp.push_back(columns[bigcol2-1]); miss.push_back(columns_miss[bigcol2-1]); } } else { if (bigcol1 >= 1 && bigcol1 <= nbcol && bigcol2 >= 1 && bigcol2 <= nbcol) { xp.push_back(columns[bigcol1-1]); yp.push_back(columns[bigcol2-1]); miss.push_back(columns_miss[bigcol1-1] || columns_miss[bigcol2-1]); } } } } file.close(); dp[dn]->clearAll(); dp[dn]->fromData(xp, yp, miss); } void do_bigfile_compatibility() throw(ParserError) { for (int dn = 1; dn <= ndata; dn++) { if (dp[dn] != NULL) { if (dp[dn]->bigfile != NULL) { do_bigfile_compatibility_dn(dn); } } } } class GLEColorMapBitmap : public GLEBitmap { protected: GLEZData* m_Data; GLEColorMap* m_map; double m_ZMin; double m_ZMax; public: GLEColorMapBitmap(GLEColorMap* map, GLEZData* data = NULL); virtual ~GLEColorMapBitmap(); GLEBYTE* createColorPalette(); virtual int readHeader(); virtual int decode(GLEByteStream* output); void plotFunction(GLEPcode& code, int varx, int vary, GLEByteStream* output); void plotData(GLEZData* data, GLEByteStream* output); inline void setZRange(double zmin, double zmax) { m_ZMin = zmin; m_ZMax = zmax; } inline double getZMin() { return m_ZMin; } inline double getZMax() { return m_ZMax; } inline bool isFunction() { return m_Data == NULL; } inline GLEZData* getData() { return m_Data; } }; GLEColorMapBitmap::GLEColorMapBitmap(GLEColorMap* map, GLEZData* data) : GLEBitmap() { m_map = map; m_ZMin = 0.0; m_ZMax = 0.0; m_Data = data; } GLEColorMapBitmap::~GLEColorMapBitmap() { } int GLEColorMapBitmap::readHeader() { m_Width = m_map->getWidth(); m_Height = m_map->getHeight(); m_BitsPerComponent = 8; if (m_map->isColor() || m_map->hasPalette()) { setMode(GLE_BITMAP_RGB); setComponents(3); } else { setMode(GLE_BITMAP_GRAYSCALE); setComponents(1); } return GLE_IMAGE_ERROR_NONE; } int fixRange(int v, int min, int max) { if (v < min) return min; if (v > max) return max; return v; } void GLEColorMapBitmap::plotData(GLEZData* zdata, GLEByteStream* output) { double zvalue; double zmin = zdata->getZMin(); double zmax = zdata->getZMax(); if (m_map->hasZMin()) zmin = m_map->getZMin(); if (m_map->hasZMax()) zmax = m_map->getZMax(); BicubicIpolDoubleMatrix ipd(zdata->getData(), zdata->getNX(), zdata->getNY()); GLERectangle* bounds = zdata->getBounds(); int wx1 = (int)floor((m_map->getXMin()-bounds->getXMin())/bounds->getWidth()*(zdata->getNX()-1)); int wx2 = (int)ceil((m_map->getXMax()-bounds->getXMin())/bounds->getWidth()*(zdata->getNX()-1)); int wy1 = (int)floor((m_map->getYMin()-bounds->getYMin())/bounds->getHeight()*(zdata->getNY()-1)); int wy2 = (int)ceil((m_map->getYMax()-bounds->getYMin())/bounds->getHeight()*(zdata->getNY()-1)); wx1 = fixRange(wx1, 0, zdata->getNX()-1); wx2 = fixRange(wx2, 0, zdata->getNX()-1); wy1 = fixRange(wy1, 0, zdata->getNY()-1); wy2 = fixRange(wy2, 0, zdata->getNY()-1); ipd.setWindow(wx1, wy1, wx2, wy2); int size = getScanlineSize(); GLEBYTE* scanline = new GLEBYTE[size]; int img_hi = getHeight(); int img_wd = getWidth(); double scale = zmax - zmin; BicubicIpol ipol(&ipd, img_wd, img_hi); if (m_map->isColor()) { GLEBYTE* pal = GLEBitmapCreateColorPalette(32761); for (int i = img_hi-1; i >= 0; i--) { int pos = 0; for (int j = 0; j < img_wd; j++) { if (m_map->isInverted()) { zvalue = (zmax - ipol.ipol(j,i)) / scale; } else { zvalue = (ipol.ipol(j,i) - zmin) / scale; } int color = (int)floor(zvalue*32760+0.5); if (color > 32760) color = 32760; if (color < 0) color = 0; scanline[pos++] = pal[color*3]; scanline[pos++] = pal[color*3+1]; scanline[pos++] = pal[color*3+2]; } output->send(scanline, size); output->endScanLine(); } delete[] pal; } else if (m_map->hasPalette()) { GLESub* sub = sub_find(m_map->getPaletteFunction().c_str()); if (sub == NULL) { stringstream err; err << "palette subroutine '" << m_map->getPaletteFunction() << "' not found"; g_throw_parser_error(err.str()); } else if (sub->getNbParam() != 1) { stringstream err; err << "palette subroutine '" << m_map->getPaletteFunction() << "' should take one argument"; g_throw_parser_error(err.str()); } int otype; int nstk = 1; char *stk_str[6]; double stk[6]; colortyp colvar; union {double d; int l[1];} both; for (int i = img_hi-1; i >= 0; i--) { int pos = 0; for (int j = 0; j < img_wd; j++) { if (m_map->isInverted()) { zvalue = (zmax - ipol.ipol(j,i)) / scale; } else { zvalue = (ipol.ipol(j,i) - zmin) / scale; } stk[1] = zvalue; getGLERunInstance()->sub_call(sub->getIndex(), (double *)&stk, (char **)&stk_str, &nstk, &otype); both.d = stk[1]; colvar.l = both.l[0]; scanline[pos++] = colvar.b[B_R]; scanline[pos++] = colvar.b[B_G]; scanline[pos++] = colvar.b[B_B]; } output->send(scanline, size); output->endScanLine(); } } else { for (int i = img_hi-1; i >= 0; i--) { int pos = 0; for (int j = 0; j < img_wd; j++) { if (m_map->isInverted()) { zvalue = (zmax - ipol.ipol(j,i)) / scale; } else { zvalue = (ipol.ipol(j,i) - zmin) / scale; } double grey = floor(zvalue*255+0.5); if (grey > 255) grey = 255; if (grey < 0) grey = 0; scanline[pos++] = (int)grey; } output->send(scanline, size); output->endScanLine(); } } setZRange(zmin, zmax); delete[] scanline; } void GLEColorMapBitmap::plotFunction(GLEPcode& code, int varx, int vary, GLEByteStream* output) { int size = getScanlineSize(); GLEBYTE* scanline = new GLEBYTE[size]; int img_hi = getHeight(); int img_wd = getWidth(); double xmin = m_map->getXMin(); double ymax = m_map->getYMax(); double xrange = m_map->getXMax() - xmin; double yrange = ymax - m_map->getYMin(); double zmax = 0.0; double zmin = 1.0; double scale = 1.0; double delta = 0.0; double set_zmax = 1.0; if (m_map->hasZMin() && m_map->hasZMax()) { scale = m_map->getZMax() - m_map->getZMin(); delta = m_map->getZMin(); set_zmax = m_map->getZMax(); } if (m_map->isColor()) { GLEBYTE* pal = GLEBitmapCreateColorPalette(32761); for (int i = 0; i < img_hi; i++) { int pos = 0; var_set(vary, ymax - (double)i*yrange/img_hi); for (int j = 0; j < img_wd; j++) { double zvalue; var_set(varx, xmin + (double)j*xrange/img_wd); eval_pcode(code, &zvalue); if (zvalue > zmax) zmax = zvalue; if (zvalue < zmin) zmin = zvalue; if (m_map->isInverted()) { zvalue = scale * (set_zmax - zvalue); } else { zvalue = scale * (zvalue - delta); } int color = (int)floor(zvalue*32760+0.5); if (color > 32760) color = 32760; if (color < 0) color = 0; scanline[pos++] = pal[color*3]; scanline[pos++] = pal[color*3+1]; scanline[pos++] = pal[color*3+2]; } output->send(scanline, size); output->endScanLine(); } delete[] pal; } else if (m_map->hasPalette()) { GLESub* sub = sub_find(m_map->getPaletteFunction().c_str()); if (sub == NULL) { stringstream err; err << "palette subroutine '" << m_map->getPaletteFunction() << "' not found"; g_throw_parser_error(err.str()); } else if (sub->getNbParam() != 1) { stringstream err; err << "palette subroutine '" << m_map->getPaletteFunction() << "' should take one argument"; g_throw_parser_error(err.str()); } int otype; int nstk = 1; char *stk_str[6]; double stk[6]; colortyp colvar; union {double d; int l[1];} both; for (int i = 0; i < img_hi; i++) { int pos = 0; var_set(vary, ymax - (double)i*yrange/img_hi); for (int j = 0; j < img_wd; j++) { double zvalue; var_set(varx, xmin + (double)j*xrange/img_wd); eval_pcode(code, &zvalue); if (zvalue > zmax) zmax = zvalue; if (zvalue < zmin) zmin = zvalue; if (m_map->isInverted()) { zvalue = scale * (set_zmax - zvalue); } else { zvalue = scale * (zvalue - delta); } stk[1] = zvalue; getGLERunInstance()->sub_call(sub->getIndex(), (double *)&stk, (char **)&stk_str, &nstk, &otype); both.d = stk[1]; colvar.l = both.l[0]; scanline[pos++] = colvar.b[B_R]; scanline[pos++] = colvar.b[B_G]; scanline[pos++] = colvar.b[B_B]; } output->send(scanline, size); output->endScanLine(); } } else { for (int i = 0; i < img_hi; i++) { int pos = 0; var_set(vary, ymax - (double)i*yrange/img_hi); for (int j = 0; j < img_wd; j++) { double zvalue; var_set(varx, xmin + (double)j*xrange/img_wd); eval_pcode(code, &zvalue); if (zvalue > zmax) zmax = zvalue; if (zvalue < zmin) zmin = zvalue; if (m_map->isInverted()) { zvalue = scale * (set_zmax - zvalue); } else { zvalue = scale * (zvalue - delta); } double grey = floor(zvalue*255+0.5); if (grey > 255) grey = 255; if (grey < 0) grey = 0; scanline[pos++] = (int)grey; } output->send(scanline, size); output->endScanLine(); } } setZRange(zmin, zmax); delete[] scanline; } int GLEColorMapBitmap::decode(GLEByteStream* output) { if (isFunction()) { int varx, vary; int vartype = 1; GLEVars* vars = getVarsInstance(); GLERC submap(vars->addLocalSubMap()); var_findadd("X", &varx, &vartype); var_findadd("Y", &vary, &vartype); GLEPcodeList pc_list; GLEPcode my_pcode(&pc_list); polish((char*)m_map->getFunction().c_str(), my_pcode, &etype); plotFunction(my_pcode, varx, vary, output); vars->removeLocalSubMap(); } else { plotData(getData(), output); } var_findadd_set("ZGMIN", getZMin()); var_findadd_set("ZGMAX", getZMax()); return GLE_IMAGE_ERROR_NONE; } GLEColorMap::GLEColorMap() { m_color = false; m_wd = 50; m_hi = 50; m_xmin = 0.0; m_xmax = 1.0; m_ymin = 0.0; m_ymax = 1.0; m_zmin = 0.0; m_zmax = 1.0; m_has_zmin = false; m_has_zmax = false; m_invert = false; m_haspal = false; m_Data = NULL; } GLEColorMap::~GLEColorMap() { if (m_Data != NULL) delete m_Data; } void GLEColorMap::readData() { string fname; polish_eval_string(getFunction().c_str(), &fname, true); if (str_i_ends_with(fname, ".Z")) { m_Data = new GLEZData(); m_Data->read(fname); } } void GLEColorMap::setPalette(const string& pal) { m_palette = pal; m_haspal = true; } void GLEColorMap::setXRange(double min, double max) { m_xmin = min; m_xmax = max; } void GLEColorMap::setYRange(double min, double max) { m_ymin = min; m_ymax = max; } void GLEColorMap::setZMin(double val) { m_has_zmin = true; m_zmin = val; } void GLEColorMap::setZMax(double val) { m_has_zmax = true; m_zmax = val; } void GLEColorMap::draw(double x0, double y0, double wd, double hi) { GLEZData* zdata = getData(); if (zdata != NULL) { /* figure out position of bitmap */ GLERectangle* bounds = zdata->getBounds(); double xrange = getXMax() - getXMin(); double yrange = getYMax() - getYMin(); double xmin = (bounds->getXMin()-getXMin())/xrange*wd; if (xmin > wd) return; if (xmin < 0) xmin = 0; double ymin = (bounds->getYMin()-getYMin())/yrange*hi; if (ymin > hi) return; if (ymin < 0) ymin = 0; double xmax = (bounds->getXMax()-getXMin())/xrange*wd; if (xmax < 0) return; if (xmax > wd) xmax = wd; double ymax = (bounds->getYMax()-getYMin())/yrange*hi; if (ymax < 0) return; if (ymax > hi) ymax = hi; /* draw bitmap */ g_move(x0 + xmin, y0 + ymin); GLEColorMapBitmap bitmap(this, zdata); g_bitmap(&bitmap, xmax-xmin, ymax-ymin, BITMAP_TYPE_USER); } else { g_move(x0, y0); GLEColorMapBitmap bitmap(this); g_bitmap(&bitmap, wd, hi, BITMAP_TYPE_USER); } } GLEDataSet::GLEDataSet(int identifier) { id = identifier; nomiss = 0; np = 0; /* NUMBER OF POINTS */ autoscale = 0; axisscale = false; inverted = false; lstyle[0] = 0; key_name = ""; bigfile = NULL; key_fill = 0; color = g_get_color_hex(GLE_COLOR_BLACK); errup[0] = 0; errdown[0] = 0; errwidth = 0.0; herrup[0] = 0; herrdown[0] = 0; herrwidth = 0.0; msize = 0.0; mdist = 0.0; lwidth = -1.0; yv_str = NULL; marker = 0; smooth = 0; smoothm = 0; svg_smooth = 0; /* Savitski Golay filtering true=on */ svg_poly = 0; /* the type of polynomial 2,3,4,5...*/ svg_points = 0; /* the number of points 5,7,9,11.... */ svg_iter = 0; /* numb or time to do svg smoothing */ deresolve = 0; /* Only plot every N points: true = on */ deresolve_avg = false; /* dresolve + average points */ line_mode = GLE_GRAPH_LM_PLAIN; mdata = 0; mscale = 0; line = 0; layer_line = GLE_GRAPH_LAYER_LINE; layer_marker = GLE_GRAPH_LAYER_MARKER; layer_error = GLE_GRAPH_LAYER_ERROR_BAR; rx1 = ry1 = rx2 = ry2 = 0; initBackup(); getDim(0)->setAxis(GLE_AXIS_X); getDim(1)->setAxis(GLE_AXIS_Y); getDim(0)->setIndex(0); getDim(1)->setIndex(1); getDim(0)->setDataSet(this); getDim(1)->setDataSet(this); } GLEDataSet::~GLEDataSet() { clearAll(); } void GLEDataSet::initBackup() { m_dataBackup.clear(); } void GLEDataSet::clearAll() { np = 0; m_dataBackup.clear(); m_data.clear(); } bool GLEDataSet::undefined() { return m_data.size() == 0; } void GLEDataSet::copy(GLEDataSet* other) { clearAll(); axisscale = false; nomiss = other->nomiss; autoscale = other->autoscale; inverted = other->inverted; strcpy(lstyle, other->lstyle); key_fill = other->key_fill; errup = other->errup; errdown = other->errdown; errwidth = other->errwidth; herrup = other->herrup; herrdown = other->herrdown; herrwidth = other->herrwidth; msize = other->msize; mdist = other->mdist; lwidth = other->lwidth; marker = other->marker; smooth = other->smooth; smoothm = other->smoothm; svg_smooth = other->svg_smooth; svg_poly = other->svg_poly; svg_points = other->svg_points; svg_iter = other->svg_iter; deresolve = other->deresolve; deresolve_avg = other->deresolve_avg; line_mode = other->line_mode; mdata = other->mdata; color = other->color; mscale = other->mscale; line = other->line; rx1 = other->rx1; ry1 = other->ry1; rx2 = other->rx2; ry2 = other->ry2; layer_line = other->layer_line; layer_marker = other->layer_marker; layer_error = other->layer_error; initBackup(); getDim(0)->copy(other->getDim(0)); getDim(1)->copy(other->getDim(1)); } void GLEDataSet::backup() { m_dataBackup.ensure(m_data.size()); for (unsigned int i = 0; i < m_data.size(); i++) { m_dataBackup.set(i, m_data.get(i)); } } void GLEDataSet::restore() { if (m_dataBackup.size() != 0) { for (unsigned int i = 0; i < m_dataBackup.size(); i++) { m_data.set(i, m_dataBackup.get(i)); GLEDataObject* dimI = m_dataBackup.getObject(i); if (dimI != 0 && dimI->getType() == GLEObjectTypeArray) { np = static_cast(dimI)->size(); } } } initBackup(); } GLEDataSetDimension* GLEDataSet::getDimXInv() { return inverted ? getDim(1) : getDim(0); } GLEDataSetDimension* GLEDataSet::getDimYInv() { return inverted ? getDim(0) : getDim(1); } GLEAxis* GLEDataSet::getAxis(int i) { return &xx[getDim(i)->getAxis()]; } void GLEDataSet::clip(double *x, double *y) { getDim(GLE_DIM_X)->getRange()->clip(x); getDim(GLE_DIM_Y)->getRange()->clip(y); } bool GLEDataSet::contains(double x, double y) { return getDim(GLE_DIM_X)->getRange()->contains(x) && getDim(GLE_DIM_Y)->getRange()->contains(y); } void GLEDataSet::copyRangeIfRequired(int dimension) { if (!getDim(dimension)->getRange()->valid()) { getDim(dimension)->getRange()->copyIfNotSet(getAxis(dimension)->getRange()); } } void GLEDataSet::validateDimensions() { GLEArrayImpl* data = getData(); for (unsigned int i = 0; i < data->size(); i++) { GLEDataObject* dim = data->getObject(i); if (dim == 0 || dim->getType() != GLEObjectTypeArray) { ostringstream err; err << "dataset d" << id << " dimension " << dimension2String(i) << " not a double array"; g_throw_parser_error(err.str()); } GLEArrayImpl* array = static_cast(dim); if (array->size() != np) { ostringstream err; err << "dataset d" << id << " dimension " << dimension2String(i) << " has an incorrect number of data points (" << array->size() << " <> " << np << ")"; g_throw_parser_error(err.str()); } } } void GLEDataSet::validateNbPoints(unsigned int expectedNb, const char* descr) { if (np != expectedNb) { ostringstream err; if (descr != 0) { err << descr << " "; } err << "dataset d" << id << " contains " << np; err << " data points, but " << expectedNb << " are required"; g_throw_parser_error(err.str()); } } GLEArrayImpl* GLEDataSet::getDimData(unsigned int dim) { if (dim >= getData()->size()) { return 0; } GLEDataObject* data = getData()->getObject(dim); if (data != 0 && data->getType() == GLEObjectTypeArray) { return static_cast(data); } else { return 0; } } void GLEDataSet::fromData(const vector& xp, const vector& yp, const vector& miss) { np = xp.size(); GLEArrayImpl* dimensions = getData(); unsigned int dims = 2; dimensions->ensure(dims); for (unsigned int dim = 0; dim < dims; dim++) { GLEArrayImpl* newArray = new GLEArrayImpl(); newArray->ensure(np); dimensions->setObject(dim, newArray); for (unsigned int i = 0; i < np; i++) { if (miss[i]) { newArray->setUnknown(i); } else { newArray->setDouble(i, dim == 0 ? xp[i] : yp[i]); } } } } vector GLEDataSet::getMissingValues() { vector result; result.assign(np, false); GLEArrayImpl* dimensions = getData(); for (unsigned int dim = 0; dim < dimensions->size(); dim++) { GLEDataObject* data = dimensions->getObject(dim); if (data != 0 && data->getType() == GLEObjectTypeArray) { GLEArrayImpl* array = static_cast(data); unsigned int count = min(np, array->size()); for (unsigned int i = 0; i < count; i++) { if (array->isUnknown(i)) { result[i] = true; } } } } return result; } void GLEDataSet::checkRanges() throw(ParserError) { // when parsing "let" -> already create dataset with ensureCreate... // so that dn command applies to it copyRangeIfRequired(GLE_DIM_X); copyRangeIfRequired(GLE_DIM_Y); if (!getDim(GLE_DIM_X)->getRange()->valid()) { g_throw_parser_error("invalid range for dimension X"); } if (!getDim(GLE_DIM_Y)->getRange()->valid()) { g_throw_parser_error("invalid range for dimension Y"); } } GLEDataSetDimension::GLEDataSetDimension() { m_Axis = GLE_AXIS_NONE; } GLEDataSetDimension::~GLEDataSetDimension() { } void GLEDataSetDimension::copy(GLEDataSetDimension* other) { setAxis(other->getAxis()); getRange()->copySet(other->getRange()); } int GLEDataSetDimension::getDataDimensionIndex() { if (getDataSet()->inverted) { return getIndex() == 0 ? 1 : 0; } else { return getIndex(); } } GLEDataPairs::GLEDataPairs() { } GLEDataPairs::GLEDataPairs(double* x, double* y, int* m, int np) { set(x, y, m, np); } GLEDataPairs::GLEDataPairs(GLEDataSet* dataSet) { copy(dataSet); } GLEDataPairs::~GLEDataPairs() { } void GLEDataPairs::validate(GLEDataSet* data, unsigned int minDim) { if (data->getData()->size() < minDim) { ostringstream err; err << "dataset d" << data->id << " has " << data->getData()->size() << " dimensions, but " << minDim << " dimensions are required"; g_throw_parser_error(err.str()); } data->validateDimensions(); } double GLEDataPairs::getDataPoint(GLEMemoryCell* element, int datasetID, unsigned int dimension, unsigned int arrayIdx) { double result = 0.0; if (!gle_memory_cell_to_double(element, &result)) { ostringstream err; err << "dataset d" << datasetID << " dimension " << dimension2String(dimension) << " point " << (arrayIdx + 1) << ": expected double but found '"; gle_memory_cell_print(element, err); err << "'"; g_throw_parser_error(err.str()); } return result; } void GLEDataPairs::copyDimensionImpl(GLEArrayImpl* data, unsigned int np, int datasetID, unsigned int dim) { GLEArrayImpl* array = static_cast(data->getObject(dim)); vector* dimDataPoints = getDimension(dim); dimDataPoints->resize(np); for (unsigned int i = 0; i < np; i++) { GLEMemoryCell* element = array->get(i); if (element->Type == GLE_MC_UNKNOWN) { m_M[i] = true; dimDataPoints->at(i) = 0.0; } else { dimDataPoints->at(i) = getDataPoint(element, datasetID, dim, i); } } } void GLEDataPairs::copyDimension(GLEDataSet* dataSet, unsigned int dim) { validate(dataSet, dim + 1); m_M.assign(dataSet->np, false); copyDimensionImpl(dataSet->getData(), dataSet->np, dataSet->id, dim); } void GLEDataPairs::copy(GLEDataSet* dataSet) { validate(dataSet, 2); m_M.assign(dataSet->np, false); GLEArrayImpl* data = dataSet->getData(); for (unsigned int dim = 0; dim < data->size(); dim++) { copyDimensionImpl(data, dataSet->np, dataSet->id, dim); } } void GLEDataPairs::resize(int np) { m_X.resize(np); m_Y.resize(np); m_M.resize(np); } void GLEDataPairs::set(double* x, double* y, int* m, int np) { resize(np); for (int i = 0; i < np; i++) { m_X[i] = x[i]; m_Y[i] = y[i]; m_M[i] = m[i]; } } void GLEDataPairs::set(unsigned int i, double x, double y, int m) { if (i < size()) { m_X[i] = x; m_Y[i] = y; m_M[i] = m; } } void GLEDataPairs::add(double x, double y, int m) { m_X.push_back(x); m_Y.push_back(y); m_M.push_back(m); } void GLEDataPairs::noMissing() { int pos = 0; int npnts = size(); for (int j = 0; j < npnts; j++) { if (!m_M[j]) { m_X[pos] = m_X[j]; m_Y[pos] = m_Y[j]; m_M[pos] = m_M[j]; pos++; } } resize(pos); } void GLEDataPairs::noNaN() { int pos = 0; int npnts = size(); for (int j = 0; j < npnts; j++) { if (m_M[j] || (!gle_isnan(m_X[j]) && !gle_isnan(m_Y[j]))) { m_X[pos] = m_X[j]; m_Y[pos] = m_Y[j]; m_M[pos] = m_M[j]; pos++; } } resize(pos); } void GLEDataPairs::noLogZero(bool xlog, bool ylog) { int pos = 0; int npnts = size(); for (int j = 0; j < npnts; j++) { if (!(xlog && m_X[j] < 0) && !(ylog && m_Y[j] < 0)) { m_X[pos] = m_X[j]; m_Y[pos] = m_Y[j]; m_M[pos] = m_M[j]; pos++; } } resize(pos); } void GLEDataPairs::transformLog(bool xlog, bool ylog) { if (xlog) { for (unsigned int i = 0; i < size(); i++) { m_X[i] = log10(m_X[i]); } } if (ylog) { for (unsigned int i = 0; i < size(); i++) { m_Y[i] = log10(m_Y[i]); } } } void GLEDataPairs::untransformLog(bool xlog, bool ylog) { if (xlog) { for (unsigned int i = 0; i < size(); i++) { m_X[i] = pow(10.0, m_X[i]); } } if (ylog) { for (unsigned int i = 0; i < size(); i++) { m_Y[i] = pow(10.0, m_Y[i]); } } } vector* GLEDataPairs::getDimension(unsigned int i) { switch (i) { case 0: return &m_X; case 1: return &m_Y; default: return NULL; } } double GLEDataPairs::getMinXInterval() { double min = GLE_INF; for (unsigned int i = 1; i < m_X.size(); i++) { double w = m_X[i] - m_X[i-1]; if (w > 0.0 && w < min) { min = w; } } return min; } gle-graphics-4.2.4c/src/gle/b_tab.cpp0000664000000000000000000001432111405446017016045 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ #include "all.h" #include "justify.h" #include "core.h" #include "gprint.h" #include "mem_limits.h" #include "token.h" #include "cutils.h" #define BEGINDEF extern #include "begin.h" #define true (!false) #define false 0 #define dbg if ((gle_debug & 32)>0) extern int gle_debug; void g_textfindend(const string& s, double *x, double *y); void tab_line(const string& line, stringstream& tab_buf, double swid, const vector& delta); void tab_line_delta(const string& line, stringstream& tab_buf, vector& delta); void begin_tab(int *pln, int *pcode, int *cp) { vector delta; int cjust, save_fnt; double zzz, save_hei, base_owidth; (*pln)++; string line; stringstream tab_buf; g_get_font(&save_fnt); g_get_hei(&save_hei); g_get_just(&cjust); g_textfindend("o",&base_owidth,&zzz); int save_pln = *pln; while (begin_line_norep(pln, line)) { tab_line_delta(line, tab_buf, delta); } *pln = save_pln; while (begin_line_norep(pln, line)) { tab_line(line, tab_buf, base_owidth, delta); } // cout << "tab buf '" << tab_buf.str() << "'" << endl; g_set_font(save_fnt); g_set_hei(save_hei); text_block(tab_buf.str(),0.0,cjust); } void tab_line_delta(const string& line, stringstream& tab_buf, vector& delta) { string::size_type len = line.length(); string::size_type pos = 0, c = 0; while (pos < line.length()) { if (line[pos] == 9) { c = (c/8)*8+8; pos++; } else if (line[pos] == ' ') { c++; pos++; } else { string::size_type savec = c; while (delta.size() <= savec) { delta.push_back(0); } int delta_cnt = 0; while (pos < len && line[pos] != 9 && !(pos < len-1 && isspace(line[pos]) && isspace(line[pos+1]))) { if (pos < len-1 && line[pos] == '\\') { int ch = line[pos+1]; if (gle_isalphanum(ch)) { delta_cnt++; pos++; c++; while (pos < len && gle_isalphanum(line[pos])) { pos++; c++; delta_cnt++; } if (pos < len && line[pos] == '{') { int old_pos = pos; pos = str_skip_brackets(line, pos, '{', '}'); delta_cnt += pos - old_pos + 1; c += pos - old_pos + 1; } } else { if (strchr("{}_$", ch) != NULL) { delta_cnt++; } else { delta_cnt += 2; } pos++; c++; } } else { pos++; c++; } } // cout << "delta_cnt = " << delta_cnt << endl; if (delta[savec] < delta_cnt) delta[savec] = delta_cnt; } } } void tab_line(const string& line, stringstream& tab_buf, double swid, const vector& delta) { int len = line.length(); bool is_modified = false; int pos = 0, c = 0, diff = 0; // cout << "line = '" << line << "'" << endl; while (pos < (int)line.length()) { if (line[pos] == 9) { c = (c/8)*8+8; pos++; } else if (line[pos] == ' ') { c++; pos++; } else { int savec = c; string next_line; while (pos < len && line[pos] != 9 && !(pos < len-1 && isspace(line[pos]) && isspace(line[pos+1]))) { next_line += line[pos++]; c++; } double br,bd; replace_exp(next_line); // cout << "'" << next_line << "': " << savec << endl; g_textfindend(next_line,&br,&bd); int real_c = savec - diff; tab_buf << "\\movexy{" << (swid*real_c) << "}{0}"; tab_buf << next_line; tab_buf << "\\movexy{" << (-br-swid*real_c) << "}{0}"; is_modified = true; diff += savec < (int)delta.size() ? delta[savec] : 0; diff ++; // cout << "savec = " << savec << " delta = " << delta[savec] << " diff = " << diff << endl; } } if (!is_modified) tab_buf << "\\movexy{0}{0}"; tab_buf << endl; } gle-graphics-4.2.4c/src/gle/token.h0000664000000000000000000000640511405446017015567 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ #ifndef INCLUDE_TOKEN #define INCLUDE_TOKEN //typedef struct op_key (*OPKEY)[]; //typedef char (*(*TOKENS)[]); //typedef char** TOKENS; typedef char TOKENS[][TOKEN_WIDTH]; char *find_non_space(char *cp); char *find_term(char *cp); void add_tokf(char* pp1,int n,TOKENS tok, int* ntok, char* outbuff, int tj); void subscript(void); void token(char *lin,TOKENS tok,int *ntok,char *outbuff); void token_data(char *lin,TOKENS tk,int *ntok,char *outbuff); void token_equal(void); void token_init(void); void token_norm(void); void token_space(void); bool get_on_off(TOKENS tk, int* ct); #endif gle-graphics-4.2.4c/src/gle/axis.cpp0000664000000000000000000012174111656572360015760 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ #include "all.h" #include "gle-interface/gle-base.h" #include "tokens/stokenizer.h" #include "justify.h" #include "core.h" #include "axis.h" #include "gprint.h" #include "d_interface.h" #include "numberformat.h" #include "cutils.h" #define GRAPHDEF extern #include "mem_limits.h" #include "token.h" #include "graph.h" double start_subtick(double dsubticks, double dticks, GLEAxis* ax); void nice_ticks(double *dticks, double *gmin,double *gmax, double *t1,double *tn,int minset, int maxset); void numtrim(char **d,char *s, double dticks); void nice_log_ticks(double *start, double *last, double gmin, double gmax) throw (ParserError); double fnloglen(double v, GLEAxis *ax); double fnlogx(double v, GLEAxis *ax); void draw_axis_titles(GLEAxis *ax, double h, double ox, double oy, GLEMeasureBox* measure); void draw_axis_titles_v35(GLEAxis *ax, double h, double ox, double oy, double dticks, double llen); extern double graph_x1; extern double graph_x2; extern double graph_y1; extern double graph_y2; void add_tex_labels(string* title) { if (g_get_tex_labels() && str_i_str(*title, "\\tex{") == -1) { title->insert(0, "\\tex{"); title->append("}"); } } double axis_range_dist_perc(double v1, double v2, GLERange* range, bool log) { if (log) { double lwidth = log10(range->getMax()) - log10(range->getMin()); v1 = log10(v1)/lwidth; v2 = log10(v2)/lwidth; } else { v1 /= range->getWidth(); v2 /= range->getWidth(); } return fabs(v1 - v2); } double fnloglen(double v, GLEAxis *ax) { return (v - log10(ax->getMin())) / (log10(ax->getMax()) - log10(ax->getMin())) * ax->length; } double fnAxisX(double v, GLEAxis *ax) { if (ax->negate) { v = ax->getMax() - (v - ax->getMin()); } if (ax->log) { return fnloglen(log10(v), ax); } else { return (v - ax->getMin()) / (ax->getMax() - ax->getMin()) * ax->length; } } bool axis_value_equal(double v1, double v2, GLEAxis* ax) { if (ax->log) { if (v2 == 0) { return fabs(v1) < 0.001; } else { return fabs(v1 - v2) / v2 < 0.001; } } else { return fabs(v1 - v2) < ax->dsubticks/100.0; } } bool axis_is_pos(double pos, int* cnt, double del, vector& vec) { if (*cnt < (int)vec.size()) { while (*cnt < (int)vec.size() && pos > vec[*cnt]+del/100.0) { (*cnt)++; } if (*cnt < (int)vec.size() && fabs(pos-vec[*cnt]) < del/100.0) { return true; } } return false; } bool axis_is_pos_perc(double pos, int* cnt, double perc, vector& vec) { if (*cnt < (int)vec.size()) { while (*cnt < (int)vec.size() && pos > vec[*cnt]*(1+perc)) { (*cnt)++; } if (*cnt < (int)vec.size()) { if (vec[*cnt] != 0.0) { if (fabs((pos-vec[*cnt])/vec[*cnt]) < perc) return true; } else { if (fabs(pos-vec[*cnt]) < perc) return true; } } } return false; } void axis_draw_tick(GLEAxis *ax, double fi, int* tick1_cnt, int* tick2_cnt, double ox, double oy, double t) { bool has_tick1 = t > 0.0 || ax->ticks_both; bool has_tick2 = t < 0.0 || ax->ticks_both; has_tick1 &= !ax->isNoTick1(fi, tick1_cnt, ax->dsubticks); has_tick2 &= !ax->isNoTick2(fi, tick2_cnt, ax->dsubticks); if (!has_tick1 && !has_tick2) return; double inv = axis_ticks_neg(ax->type) ? -1.0 : 1.0; double from = has_tick2 ? -fabs(t)*inv : 0.0; double to = has_tick1 ? fabs(t)*inv : 0.0; if (axis_horizontal(ax->type)) { g_move(ox + fnAxisX(fi, ax), oy + from); g_line(ox + fnAxisX(fi, ax), oy + to); } else { g_move(ox + from, oy + fnAxisX(fi, ax)); g_line(ox + to, oy + fnAxisX(fi, ax)); } } void axis_draw_tick_log(GLEAxis *ax, double fi, int* tick1_cnt, int* tick2_cnt, double ox, double oy, double t) { bool has_tick1 = t > 0.0 || ax->ticks_both; bool has_tick2 = t < 0.0 || ax->ticks_both; has_tick1 &= !ax->isNoTick1Perc(fi, tick1_cnt); has_tick2 &= !ax->isNoTick2Perc(fi, tick2_cnt); if (!has_tick1 && !has_tick2) return; double inv = axis_ticks_neg(ax->type) ? -1.0 : 1.0; double from = has_tick2 ? -fabs(t)*inv : 0.0; double to = has_tick1 ? fabs(t)*inv : 0.0; if (axis_horizontal(ax->type)) { g_move(ox + fnAxisX(fi, ax), oy + from); g_line(ox + fnAxisX(fi, ax), oy + to); } else { g_move(ox + from, oy + fnAxisX(fi, ax)); g_line(ox + to, oy + fnAxisX(fi, ax)); } } bool inAxisRange(double value, GLEAxis* ax) { if (value >= ax->getMin() && value <= ax->getMax()) { return true; } if (axis_value_equal(value, ax->getMin(), ax)) { return true; } if (axis_value_equal(value, ax->getMax(), ax)) { return true; } return false; } std::vector getLogSubPlaces(double pos, double gmin, double gmax, int lgset) { std::vector result; if (lgset == GLE_AXIS_LOG_1 || lgset == GLE_AXIS_LOG_25 || lgset == GLE_AXIS_LOG_25B) { for (int i = 2; i <= 9; i++) { if (lgset == GLE_AXIS_LOG_1 || i == 2 || i == 5) { double pos_sub = pos * i; if (pos_sub >= gmin && pos_sub <= gmax) { result.push_back(pos_sub); } } } } return result; } void draw_axis(GLEAxis *ax, GLERectangle* box, DrawAxisPart drawPart) { double x,y,gmin,gmax,dticks,tick1,tickn; int savecap; double h,dist; double ox,oy; // Fix for font problems by Jan Struyf g_resetfont(); bool xax = axis_horizontal(ax->type); if (ax->off) return; g_get_xy(&ox,&oy); bool drawsubticks = true; bool drawticks = true; bool drawrest = true; if (ax->hasGrid()) { if (drawPart == DRAW_AXIS_GRID_SUBTICKS) { drawticks = false; drawrest = false; } else if (drawPart == DRAW_AXIS_GRID_TICKS) { drawsubticks = false; drawrest = false; } else { CUtilsAssert(drawPart == DRAW_AXIS_ALL); drawsubticks = false; drawticks = false; } } else { if (drawPart != DRAW_AXIS_ALL) return; } /*----------------------------- Generate the places for labels to go */ gmin = ax->getMin(); gmax = ax->getMax(); int lgset = ax->lgset; vector subplaces; int lgset_def = GLE_AXIS_LOG_OFF; if (ax->log) { h = ax->label_hei; if (h==0) h = ax->base; nice_log_ticks(&tick1, &tickn, gmin, gmax); /* find suitable value for dticks */ if (lgset == GLE_AXIS_LOG_DEFAULT || lgset == GLE_AXIS_LOG_OFF) { dticks = (tickn - tick1) / ax->length * 3 * h; if (dticks >= 4) { dticks = ((int)dticks / 5) * 5.0; } else if (dticks >= 2) { dticks = 2; } } else { dticks = 1.0; } /* nticks explicitly given */ if (ax->nticks != 0) { dticks = (tickn - tick1)/(ax->nticks - 1); } /* dticks explicitly given */ if (ax->dticks != 0) { dticks = ax->dticks; if (!ax->subticks_off) { /* values smaller than 0.9 translate to lgset */ if (dticks < 0.2) lgset_def = GLE_AXIS_LOG_1; else if (dticks < 0.9) lgset_def = GLE_AXIS_LOG_25; } } /* round dticks to integer */ if (dticks < 1.0) { dticks = 1.0; } else { dticks = floor(dticks+0.001); } /* define default value for lg_set */ if (dticks == 1.0 && lgset_def == GLE_AXIS_LOG_OFF && !ax->subticks_off) { /* dist between 10^0 and 10^1 */ dist = fnloglen(2, ax) - fnloglen(1, ax); if (dist > ax->base*22.0) lgset_def = GLE_AXIS_LOG_1; else if (dist > ax->base*4.5) lgset_def = GLE_AXIS_LOG_25; } /* now set value of lgset if not already given */ if (lgset == GLE_AXIS_LOG_DEFAULT) { lgset = lgset_def; } if (ax->getNbPlaces() == 0) { for (double pw10 = tick1; pw10 <= tickn; pw10 += dticks) { double pos = pow(10.0, pw10); if (equals_rel(gmin, pos)) { /* first tick */ if (!ax->nofirst) { ax->addPlace(pos); } } else if (equals_rel(gmax, pos)) { /* last tick */ if (!ax->nolast) { ax->addPlace(pos); } } else { /* add if in window */ if (pos >= gmin && pos <= gmax) { ax->addPlace(pos); } } /* also label subticks? */ std::vector crSubPlaces(getLogSubPlaces(pos, gmin, gmax, lgset)); for (std::vector::iterator i(crSubPlaces.begin()); i != crSubPlaces.end(); ++i) { ax->addPlace(*i); } } } for (double pw10 = tick1; pw10 <= tickn; pw10 += dticks) { std::vector crSubPlaces(getLogSubPlaces(pow(10.0, pw10), gmin, gmax, lgset)); for (std::vector::iterator i(crSubPlaces.begin()); i != crSubPlaces.end(); ++i) { subplaces.push_back(*i); } } } else { dticks = 0; GLERangeSet* range = ax->getRange(); if (ax->nticks != 0) dticks = (gmax - gmin)/ax->nticks; if (ax->dticks != 0) dticks = ax->dticks; if (ax->has_ftick) { tick1 = ax->ftick; if (ax->dticks == 0) { // Compute suitable value for dticks double dummy = 0.0; nice_ticks(&dticks, &gmin, &gmax, &dummy, &tickn, range->hasMin(), range->hasMax()); } if (ax->nticks != 0) { tickn = tick1 + (ax->nticks-1) * dticks; } else { tickn = tick1 + floor((gmax-tick1)/dticks) * dticks; } } else { nice_ticks(&dticks, &gmin, &gmax, &tick1, &tickn, range->hasMin(), range->hasMax()); } if (ax->nofirst) tick1 = tick1 + dticks; if (ax->nolast) tickn = tickn - dticks; tickn = tickn + dticks/100.0; if (ax->getNbPlaces() == 0) { /* haven't been set, so generate positions. */ double prev_tick = GLE_INF; double end_tick = (tickn+dticks/100.0); for (double fi = tick1; fi <= end_tick; fi += dticks) { if (fi - prev_tick == 0.0) { /* dticks too small for precision of double */ ax->subticks_off = true; break; } ax->addPlace(fi); prev_tick = fi; } } } /*------------------------------ Now draw the ticks (subticks first) */ // ticks length double tlen = ax->base*g_get_fconst(GLEC_TICKSSCALE); if (ax->ticks_length!=0) tlen = ax->ticks_length; // subticks length and distance double stlen = tlen/2; if (ax->subticks_length!=0) stlen = ax->subticks_length; // draw subticks if (ax->log) { if (!ax->subticks_off && drawsubticks) { g_gsave(); g_set_color(ax->subticks_color); g_set_line_width(ax->subticks_lwidth); g_set_line_style(ax->subticks_lstyle); bool draw_log_subticks = false; if (ax->has_subticks_onoff) { // if "subticks = on" explicitly given -> draw log subticks if dticks <= 1.0 draw_log_subticks = (dticks <= 1.0); } else { // if "subticks = on" not given -> draw log subticks based on default lgset draw_log_subticks = (lgset_def != GLE_AXIS_LOG_OFF); } if (lgset != GLE_AXIS_LOG_OFF) { // if log sub-labels on then also draw log subticks (if subtick "on" or "undefined") draw_log_subticks = true; } int place_cnt = 0; int tick1_cnt = 0; int tick2_cnt = 0; for (double pw10 = tick1; pw10 <= tickn; pw10 += 1.0) { double pos = pow(10.0, pw10); if (pos > gmin && pos < gmax && !ax->isPlaceRel(pos, &place_cnt)) { axis_draw_tick_log(ax, pos, &tick1_cnt, &tick2_cnt, ox, oy, stlen); } if (draw_log_subticks) { for (int i = 2; i <= 9; i++) { double pos_sub = pos * i; if (pos_sub > gmin && pos_sub < gmax) { axis_draw_tick_log(ax, pos_sub, &tick1_cnt, &tick2_cnt, ox, oy, stlen); } } } } g_grestore(); } } else { double dsubticks = 0; if (ax->nsubticks != 0) dsubticks = dticks/(ax->nsubticks+1); if (ax->dsubticks != 0) dsubticks = ax->dsubticks; if (dsubticks == 0) dsubticks = dticks / 2.0; ax->dsubticks = dsubticks; if (!ax->subticks_off && drawsubticks) { double firstSubtick = start_subtick(dsubticks, dticks, ax); double subtickLimit = ax->getMax() + dsubticks/100.0; int place_cnt = 0; int tick1_cnt = 0; int tick2_cnt = 0; g_gsave(); g_set_color(ax->subticks_color); g_set_line_width(ax->subticks_lwidth); g_set_line_style(ax->subticks_lstyle); for (double fi = firstSubtick; fi <= subtickLimit; fi += dsubticks) { if (inAxisRange(fi, ax) && !ax->isPlace(fi, &place_cnt, dsubticks)) { axis_draw_tick(ax, fi, &tick1_cnt, &tick2_cnt, ox, oy, stlen); } } g_grestore(); } } /*------------------------------ Now the main ticks */ if (!ax->ticks_off && drawticks) { g_gsave(); g_set_color(ax->ticks_color); g_set_line_width(ax->ticks_lwidth); g_set_line_style(ax->ticks_lstyle); int tick1_cnt = 0; int tick2_cnt = 0; int subplace_cnt = 0; if (ax->log) { /* Draw log ticks */ for (int i = 0; i < ax->getNbPlaces(); i++) { double fi = ax->places[i]; if (!axis_is_pos_perc(fi, &subplace_cnt, 1e-6, subplaces)) { /* only draw major ticks */ axis_draw_tick_log(ax, fi, &tick1_cnt, &tick2_cnt, ox, oy, tlen); } } } else { for (int i = 0; i < ax->getNbPlaces(); i++) { double fi = ax->places[i]; axis_draw_tick(ax, fi, &tick1_cnt, &tick2_cnt, ox, oy, tlen); } } g_grestore(); } /*----------------------------- Ok lets draw the side now */ /*----------------------------- Note: after the ticks - this gives better result if ticks are different color */ if (!ax->side_off && drawrest) { // FIXME: is cap not saved by gsave?? g_get_line_cap(&savecap); g_gsave(); g_set_color(ax->side_color); g_set_line_width(ax->side_lwidth); g_set_line_style(ax->side_lstyle); g_set_line_cap(1); g_get_xy(&x,&y); if (xax) g_line(x+ax->length,y); else g_line(x,y+ax->length); g_grestore(); g_set_line_cap(savecap); } /*------------------------------ Now draw the labels */ double real_llen = 0; if (!ax->ticks_off) { if (tlen < 0) real_llen = -tlen; if (ax->ticks_both) real_llen = +tlen; } h = ax->label_hei; if (h == 0) h = ax->base; double llen = real_llen + h*g_get_fconst(GLEC_ALABELDIST); if (ax->label_dist != 0) llen = ax->label_dist; if (ax->getNbNames() == 0) { char cbuff[100]; GLENumberFormat* format = ax->format == "" ? NULL : new GLENumberFormat(ax->format); if (ax->log) { int subplace_cnt = 0; for (int i = 0; i < ax->getNbPlaces(); i++) { double fi = ax->places[i]; int n = (int) floor(.0001 + fi/pow(10.0,floor(log10(fi)))); if (!axis_is_pos_perc(fi, &subplace_cnt, 1e-6, subplaces)) { n = (int) floor(log10(fi)+0.5); if (format != NULL) { format->format(pow(10.0, n), ax->getNamePtr(i)); } else { if (n == 0) { sprintf(cbuff, "1"); } else if (n == 1) { sprintf(cbuff, "10"); } else { const char* fmt = g_get_tex_labels() ? "$10^{%d}$" : "10^{%d}"; sprintf(cbuff, fmt, n); } ax->setName(i, cbuff); } } else { if (ax->lgset == GLE_AXIS_LOG_25B && format != NULL) { format->format(fi, ax->getNamePtr(i)); } else { n = (int) floor(0.0001 + fi/(pow(10.0,floor(log10(fi))))); double lsize = 0.7 * h * g_get_fconst(GLEC_ALABELSCALE); const char* fmt = g_get_tex_labels() ? "{\\sethei{%g}\\tex{%d}}" : "{\\sethei{%g}%d}"; sprintf(cbuff, fmt, lsize, n); ax->setName(i, cbuff); } } } } else { if (ax->getNamesDataSet() != -1) { // Get axis labels from a data set ax->getLabelsFromDataSet(ax->getNamesDataSet()); } else { for (int i = 0; i < ax->getNbPlaces(); i++) { double fi = ax->places[i]; x = fabs(fi); if (fabs(x) < 0.00001*dticks) { // otherwise place for "zero" may be -8.2556e-25 or some other small number fi = 0; } if (format != NULL) { format->format(fi, ax->getNamePtr(i)); } else { x = fabs(fi); char* num_trim_str = NULL; if (fi == 0 || (x > 1e-5 && x < 1e6)) sprintf(cbuff, "%f", fi); else sprintf(cbuff, "%e", fi); numtrim(&num_trim_str, cbuff, dticks); if (num_trim_str != NULL) { ax->setName(i, num_trim_str); myfree(num_trim_str); } } } } } if (format != NULL) delete format; } g_set_color(ax->label_color); g_set_line_width(ax->label_lwidth); g_set_line_style(ax->label_lstyle); g_set_font(ax->label_font); g_set_hei(h*g_get_fconst(GLEC_ALABELSCALE)); double maxd = 0, maxh = 0, maxw = 0; GLEMeasureBox measure; measure.measureStart(); // If there are no labels, use g_set_bounds to initialize "measure" double bl,br,bu,bd; init_measure_by_axis(ax, ox, oy, real_llen); if (!ax->label_off && drawrest) { int nb_names = ax->getNbNamedPlaces(); for (int i = 0; i < nb_names; i++) { string name = ax->names[i]; add_tex_labels(&name); g_measure(name, &bl, &br, &bu, &bd); if (bu > maxh) maxh = bu; if (-bd > maxd) maxd = -bd; if (br-bl > maxw) maxw = br-bl; } int place_cnt = 0; double angle = ax->getLabelAngle(); for (int i = 0; i < nb_names; i++) { double fi = ax->places[i]; string name = ax->names[i]; add_tex_labels(&name); if (!ax->isNoPlaceLogOrReg(fi, &place_cnt, dticks) && name != "") { fi = fnAxisX(fi, ax); if (ax->log) fi = fnAxisX(ax->places[i], ax); g_measure(name, &bl, &br, &bu, &bd); switch (ax->type) { case GLE_AXIS_X: case GLE_AXIS_X0: if (angle == 0.0) { g_move(ox+fi+ax->shift, oy-llen-maxh); g_jtext(JUST_CENTRE); } else { g_gsave(); g_move(ox+fi+ax->shift, oy-llen); g_rotate(angle); if (angle == 90.0) g_jtext(JUST_RC); else if (angle > 0.0) g_jtext(JUST_TR); else g_jtext(JUST_TL); g_grestore(); } break; case GLE_AXIS_Y: case GLE_AXIS_Y0: if (angle == 0.0) { if (ax->label_align == JUST_RIGHT) { g_move(ox-llen, oy+fi+ax->shift); g_jtext(JUST_RC); } else { g_move(ox-llen-maxw, oy+fi+ax->shift); g_jtext(JUST_LC); } } else { g_gsave(); if (angle == 90.0) { g_move(ox-llen-maxd, oy+fi+ax->shift); g_rotate(90); g_jtext(JUST_CENTRE); } else { g_move(ox-llen, oy+fi+ax->shift); g_rotate(angle); if (angle > 0.0) g_jtext(JUST_BR); else g_jtext(JUST_TR); } g_grestore(); } break; case GLE_AXIS_X2: if (angle == 0.0) { g_move(ox+fi+ax->shift, oy+llen+maxd); g_jtext(JUST_CENTRE); } else { g_gsave(); g_move(ox+fi+ax->shift, oy+llen); g_rotate(angle); if (angle == 90.0) g_jtext(JUST_LC); else if (angle > 0.0) g_jtext(JUST_BL); else g_jtext(JUST_BR); g_grestore(); } break; case GLE_AXIS_Y2: g_move(ox+llen, oy+fi+ax->shift); g_jtext(JUST_LC); break; } } } } measure.measureEnd(); // g_box_stroke(measure.getX1(), measure.getY1(), measure.getX2(), measure.getY2(), false); /*---------------------------------- Now the axis title. */ if (ax->title_off || ax->title == "" || !drawrest) { g_update_bounds_box(box); return; } if (g_get_compatibility() <= GLE_COMPAT_35) { draw_axis_titles_v35(ax, h, ox, oy, dticks, llen); } else { draw_axis_titles(ax, h, ox, oy, &measure); } g_update_bounds_box(box); } void init_measure_by_axis(GLEAxis* ax, double ox, double oy, double llen) { // If there are no labels, use g_set_bounds to initialize "measure" switch (ax->type) { case GLE_AXIS_X: case GLE_AXIS_X0: g_update_bounds(ox+ax->shift, oy-llen); break; case GLE_AXIS_Y: case GLE_AXIS_Y0: g_update_bounds(ox-llen, oy+ax->shift); break; case GLE_AXIS_X2: case GLE_AXIS_T: g_update_bounds(ox+ax->shift, oy+llen); break; case GLE_AXIS_Y2: g_update_bounds(ox+llen, oy+ax->shift); break; } } void draw_axis_titles(GLEAxis *ax, double h, double ox, double oy, GLEMeasureBox* measure) { double bl,br,bu,bd; g_gsave(); double th = h * g_get_fconst(GLEC_ATITLESCALE); if (ax->title_scale != 0) th = th*ax->title_scale; if (ax->title_hei != 0) th = ax->title_hei; g_set_color(ax->title_color); g_set_font(ax->title_font); g_set_hei(th); double tdist = ax->title_dist; if (ax->title_adist >= 0.0) { // absolute distance from axis side // update measure without taking into account labels or ticks! measure->measureStart(); init_measure_by_axis(ax, ox, oy, 0.0); measure->measureEndIgnore(); tdist = ax->title_adist; // also align to baseline and not to bottom of text ax->alignBase = true; } if (tdist == 0) tdist = h * g_get_fconst(GLEC_ATITLEDIST); string title_str(ax->title); add_tex_labels(&title_str); g_measure(title_str,&bl,&br,&bu,&bd); switch (ax->type) { case GLE_AXIS_X: case GLE_AXIS_X0: g_move(ox+ax->length/2, measure->getYMin() - tdist); g_jtext(JUST_TC); break; case GLE_AXIS_Y: case GLE_AXIS_Y0: g_move(measure->getXMin() - tdist,oy + ax->length/2); g_rotate(90.0); if (ax->isAlignBase()) g_jtext(JUST_CENTER); else g_jtext(JUST_BC); break; case GLE_AXIS_X2: case GLE_AXIS_T: g_move(ox+ax->length/2, measure->getYMax() + tdist); // *should* be center - otherwise titles of different graphs don't align! if (ax->isAlignBase()) g_jtext(JUST_CENTER); else g_jtext(JUST_BC); break; case GLE_AXIS_Y2: g_move(measure->getXMax() + tdist,oy + ax->length/2); if (ax->title_rot) { g_rotate(-90.0); if (ax->isAlignBase()) g_jtext(JUST_CENTER); else g_jtext(JUST_BC); } else { g_rotate(90.0); g_jtext(JUST_TC); } break; } g_grestore(); } void draw_axis_titles_v35(GLEAxis *ax, double h, double ox, double oy, double dticks, double llen) { double bl,br,bu,bd,x,y; double ty = 0; double tx = ox-.3*h; double maxd = 0; if (ax->type == GLE_AXIS_Y2) tx = ox + .3*h; if (ax->type == GLE_AXIS_X || ax->type == GLE_AXIS_X0) ty = oy-llen-.3*h; if (ax->type == GLE_AXIS_X2 || ax->type == GLE_AXIS_T) ty = oy+llen; if (!ax->label_off) { int nb_names = ax->getNbNamedPlaces(); for (int i = 0; i < nb_names; i++) { string name(ax->names[i]); add_tex_labels(&name); g_measure(name,&bl,&br,&bu,&bd); if (bd>maxd) maxd = bd; } int place_cnt = 0; for (int i = 0; i < nb_names; i++) { double fi = ax->places[i]; string name = ax->names[i]; add_tex_labels(&name); if (!ax->isNoPlaceLogOrReg(fi, &place_cnt, dticks) && name != "") { fi = fnAxisX(fi, ax); if (ax->log) fi = fnAxisX(ax->places[i], ax); g_measure(name, &bl, &br, &bu, &bd); switch (ax->type) { case GLE_AXIS_X: case GLE_AXIS_X0: y = oy-llen-bu+bd-.3*h; if (yty) ty = y; break; case GLE_AXIS_Y2: x = ox+br-bl+llen+.3*h; if (x>tx) tx = x; break; } if (bd>maxd) maxd = bd; } } } g_gsave(); double th = h * 1.3; if (ax->title_scale!=0) th = th*ax->title_scale; if (ax->title_hei!=0) th = ax->title_hei; g_set_color(ax->title_color); g_set_font(ax->title_font); g_set_hei(th); g_measure(ax->title,&bl,&br,&bu,&bd); switch (ax->type) { case GLE_AXIS_X: case GLE_AXIS_X0: g_move(ox+ax->length/2,ty - ax->title_dist); g_jtext(JUST_TC); break; case GLE_AXIS_Y: case GLE_AXIS_Y0: g_move(tx - ax->title_dist,oy + ax->length/2); g_rotate(90.0); g_jtext(JUST_BC); g_rotate(-90.0); break; case GLE_AXIS_X2: case GLE_AXIS_T: g_move(ox+ax->length/2,ty + ax->title_dist); g_jtext(JUST_BC); break; case GLE_AXIS_Y2: /* y2axis */ g_move(tx + ax->title_dist,oy + ax->length/2); if (ax->title_rot) { g_rotate(-90.0); g_jtext(JUST_BC); g_rotate(90.0); } else { g_rotate(90.0); g_jtext(JUST_TC); g_rotate(-90.0); } break; } g_grestore(); } void nice_log_ticks(double *start, double *last, double gmin, double gmax) throw (ParserError) { if (gmin <= 0 || gmax <= 0) { stringstream err; err << "illegal range for log axis: min = "; err << gmin << " max = " << gmax; g_throw_parser_error(err.str()); } /* range in powers of 10 */ /* add one extra power on both sides! */ *start = floor(log10(gmin)-1e-6); if (equals_rel(gmin, pow(10.0, *start+1))) { (*start)++; } *last = ceil(log10(gmax)+1e-6); if (equals_rel(gmax, pow(10.0, *last-1))) { (*last)--; } } double compute_dticks(GLERange* range) { if (range->getMax() <= range->getMin()) { return 0.0; } double delta = range->getMax() - range->getMin(); double st = delta/10; double expnt = floor(log10(st)); double n = st/pow(10.0, expnt); int ni = 1; if (n > 5) { ni = 10; } else if (n > 2) { ni = 5; } else if (n > 1) { ni = 2; } else { ni = 1; } return ni * pow(10.0, expnt); } bool auto_collapse_range(GLERange* range, double dticks) { // detect underflow in precision // because this could lead to infinite loop in axis drawing code double max_end = max(fabs(range->getMin()), fabs(range->getMax())); if (max_end == 0.0) { range->setMin(0.0); range->setMax(0.0); return true; } if (dticks / max_end < CUTILS_REL_PREC_FINE) { double mean = (range->getMin() + range->getMax())/2.0; range->setMin(mean); range->setMax(mean); return true; } else { return false; } } void nice_ticks(double *dticks, double *gmin, double *gmax, double *t1, double *tn, int minset, int maxset) { /* double delta,st,expnt,n; int ni; delta = *gmax-*gmin; if (delta == 0) { gprint("Axis range error min=%g max=%g \n",*gmin,*gmax); *gmax = *gmin+10; delta = 10; } st = delta/10; expnt = floor(log10(st)); n = st/pow(10.0,expnt); if (n>5) ni = 10; else if (n>2) ni = 5; else if (n>1) ni = 2; else ni = 1; if (*dticks==0) *dticks = ni * pow(10.0,expnt); if (*gmin - (delta/1000) <= floor( *gmin/ *dticks) * *dticks) *t1 = *gmin; else *t1 = (floor(*gmin/ *dticks) * *dticks ) + *dticks; *tn = *gmax; if ( (floor(.000001+ *gmax / *dticks) * *dticks) < (*gmax - (delta/1000) ) ) *tn = floor(.00001 + *gmax/ *dticks ) * *dticks; */ if (*gmax <= *gmin) { gprint("Axis range error min=%g max=%g \n",*gmin,*gmax); *gmax = *gmin + 10; } GLERange range; range.setMinMax(*gmin, *gmax); if (*dticks == 0.0) { // no dticks parameter given for axis *dticks = compute_dticks(&range); } // Round range to nearest dtick range.setMax(ceil(range.getMax()/(*dticks)) * (*dticks)); range.setMin(floor(range.getMin()/(*dticks)) * (*dticks)); // cout << "Range0 [" << *gmin << "," << *gmax << "] ticks ["<< range.getMin() << "," << range.getMax() << "] diff: " << ((*gmin)-range.getMin()) << endl; // Make sure labels are in axis range if ((*gmin)-range.getMin() > CUTILS_REL_PREC_FINE) range.setMin(range.getMin()+(*dticks)); if (range.getMax()-(*gmax) > CUTILS_REL_PREC_FINE) range.setMax(range.getMax()-(*dticks)); // cout << "Range1 [" << *gmin << "," << *gmax << "] ticks ["<< range.getMin() << "," << range.getMax() << "]" << endl; // Return labels *t1 = range.getMin(); *tn = range.getMax(); } void roundrange(GLERange* range, bool extend, bool tozero, double dticks) { if (range->getMax() <= range->getMin()) { return; } double delta = range->getMax() - range->getMin(); // auto-extend axis towards zero if (tozero && range->getMin() > 0 && range->getMin() <= delta*0.2) { range->setMin(0.0); } if (tozero && range->getMax() < 0 && range->getMax() >= -delta*0.2) { range->setMax(0.0); } if (dticks == 0.0) { // no dticks parameter given for axis dticks = compute_dticks(range); } // detect underflow in precision if (auto_collapse_range(range, dticks)) { return; } // round range towards multiple of dticks if (equals_rel_fine(ceil(range->getMax()/dticks) * dticks, range->getMax())) { range->setMax(ceil(range->getMax()/dticks) * dticks); // "extend" is true only in bar plots - it makes sure that there is a tick of space // left above of the largest bar; otherwise the bar would extend to the x2axis if (extend && range->getMax() != 0.0) range->setMax(range->getMax() + dticks); } else { range->setMax(ceil(range->getMax()/dticks) * dticks); } if (equals_rel_fine(floor(range->getMin()/dticks) * dticks, range->getMin())) { range->setMin(floor(range->getMin()/dticks) * dticks); if (extend && range->getMin() != 0.0) range->setMin(range->getMin() - dticks); } else { range->setMin(floor(range->getMin()/dticks) * dticks); } } double start_subtick(double dsubticks, double dticks, GLEAxis* ax) { double firstTick; if (ax->getNbPlaces() > 0) { firstTick = ax->getPlace(0); } else { GLERange range; range.copy(ax->getRange()); roundrange(&range, false, false, dticks); firstTick = range.getMin(); } if (firstTick <= ax->getMin()) { return firstTick; } else { double n = ceil((firstTick - ax->getMin()) / dsubticks) + 1; return firstTick - n * dsubticks; } } void numtrime(char *o,char *s) { char *e, *f; strcpy(o, s); e = strchr(s, 'e'); if (e == NULL) return; e--; for (; *e=='0'; e--); if (*e == '.') { e--; } f = strchr(s, 'e'); strcpy(e + 1, f); strcpy(o, s); } void numtrim(char **d,char *s,double dticks) { char *o,*nonzero=0; if (*d==0) *d = (char*) myallocz(20); o = *d; nonzero = 0; if (strchr(s,'e')!=NULL) { numtrime(o,s); return; } while (*s==' ' && *s!=0) s++; while (*s!=0) { *(o++) = *(s++); if (*s=='.') { nonzero = o-1; if (dticks!=floor(dticks)) nonzero = o+1; while (*s!=0) { *(o++) = *(s++); if ((*s!='0') && (*s!=0)) if (o>nonzero) nonzero = o; } } } *(o++) = 0; if (nonzero!=NULL) *(nonzero+1) = 0; } bool axis_is_max(int axis) { return axis == GLE_AXIS_X2 || axis == GLE_AXIS_Y2; } bool axis_ticks_neg(int axis) { return axis == GLE_AXIS_X2 || axis == GLE_AXIS_Y2; } bool axis_horizontal(int axis) { return axis == GLE_AXIS_X0 || axis == GLE_AXIS_X || axis == GLE_AXIS_X2 || axis == GLE_AXIS_T; } int axis_get_orth(int axis, int which) { if (axis_horizontal(axis)) { switch (which) { case 0: return GLE_AXIS_Y0; case 1: return GLE_AXIS_Y; default: return GLE_AXIS_Y2; } } else { switch (which) { case 0: return GLE_AXIS_X0; case 1: return GLE_AXIS_X; default: return GLE_AXIS_X2; } } } int axis_type(const char *s) { if (str_ni_equals(s,"X0",2)) return GLE_AXIS_X0; if (str_ni_equals(s,"Y0",2)) return GLE_AXIS_Y0; if (str_ni_equals(s,"X2",2)) return GLE_AXIS_X2; if (str_ni_equals(s,"Y2",2)) return GLE_AXIS_Y2; if (str_ni_equals(s,"X",1)) return GLE_AXIS_X; if (str_ni_equals(s,"Y",1)) return GLE_AXIS_Y; return GLE_AXIS_ALL; } int axis_type_check(const char *s) throw (ParserError) { int type = axis_type(s); if (type == GLE_AXIS_ALL) { ostringstream err; err << "can't infer axis type (x, y, ...) from expression '" << s << "'; "; err << "try, e.g., 'x" << s << "'"; g_throw_parser_error(err.str()); } return type; } const char* axis_type_name(int type) { switch (type) { case GLE_AXIS_X: return "xaxis"; case GLE_AXIS_Y: return "yaxis"; case GLE_AXIS_X2: return "x2axis"; case GLE_AXIS_Y2: return "y2axis"; case GLE_AXIS_X0: return "x0axis"; case GLE_AXIS_Y0: return "y0axis"; default: return "unknown"; } } /* * lower and upper quantile used for automatic yscaling. * the factors control the amount of extension of the yrange * under the lower quantile and above the upper quantile. with * lower quantile of 3/40=0.075 and upper quantile of * 37/40=0.925 a factor of 3/34=0.0882 would extend linearly, * meaning that the graph of a linear function (e. g.: f(x)=x) * would exactly fit. a slightly higher value looks fine for * many functions. */ GLEAxisQuantileScale::GLEAxisQuantileScale() { m_QLower = 0.075; m_QUpper = 0.925; m_QLowerFactor = 0.092; m_QUpperFactor = 0.092; } GLEAxisQuantileScale::~GLEAxisQuantileScale() { } GLEAxis::GLEAxis() : format() { } GLEAxis::~GLEAxis() { } void GLEAxis::init(int i) { format = ""; title = ""; clearNoTicks(); names.clear(); places.clear(); noplaces.clear(); base = 0.0; length = 0.0; shift = 0.0; label_align = JUST_RIGHT; label_font = 0; label_hei = 0.0; label_scale = 0.0; label_dist = 0.0; log = 0; nofirst = 0; nolast = 0; nticks = 0; nsubticks = 0; dticks = 0.0; dsubticks = 0.0; ticks_length = 0.0; ticks_scale = 0.0; ticks_lstyle[0] = 0; subticks_length = 0.0; subticks_scale = 0.0; subticks_lstyle[0] = 0; label_lstyle[0] = 0; off = 0; label_off = (i != GLE_AXIS_X && i != GLE_AXIS_Y); side_off = 0; ticks_off = 0; subticks_off = 0; side_lstyle[0] = 0; title_font = 0; title_dist = 0.0; title_adist = -1.0; title_hei = 0.0; title_scale = 0.0; title_rot = 0; title_off = 0; title_color = 0; negate = 0; names_ds = -1; label_angle = 0.0; has_subticks_onoff = false; has_label_onoff = false; setColor(g_get_color()); side_lwidth = -1; ticks_lwidth = -1; subticks_lwidth = -1; label_lwidth = -1; lgset = GLE_AXIS_LOG_DEFAULT; has_ftick = false; ftick = 0.0; has_offset = false; offset = 0.0; ticks_both = false; grid = false; gridtop = false; roundRange = true; type = i; getRange()->initRange(); getRange()->resetSet(); m_QuantileScale.clear(); if (g_get_compatibility() <= GLE_COMPAT_35) { alignBase = false; } else { if (i == GLE_AXIS_Y || i == GLE_AXIS_Y0 || i == GLE_AXIS_Y2) alignBase = false; else alignBase = true; } } string* GLEAxis::getNamePtr(int i) { while ((int)names.size() <= i) names.push_back(string()); return &names[i]; } void GLEAxis::setName(int i, const char* name) { while ((int)names.size() <= i) names.push_back(string()); names[i] = name; } void GLEAxis::setPlace(int i, double place) { while ((int)places.size() <= i) places.push_back(0.0); places[i] = place; } void GLEAxis::insertNoTick(double pos, vector& vec) { vector::size_type at = 0; while (at < vec.size() && vec[at] < pos) { at++; } if (at == vec.size()) vec.push_back(pos); else vec.insert(vec.begin()+at, pos); } bool GLEAxis::isNoPlaceLogOrReg(double pos, int* place_cnt, double delta) { if (log) return axis_is_pos_perc(pos, place_cnt, 0.001, noplaces); else return axis_is_pos(pos, place_cnt, delta, noplaces); } void GLEAxis::addNoTick(double pos) { addNoTick1(pos); addNoTick2(pos); } void GLEAxis::insertNoTick(double pos) { insertNoTick1(pos); insertNoTick2(pos); } void GLEAxis::insertNoTickOrLabel(double pos) { insertNoTick1(pos); insertNoTick2(pos); insertNoPlace(pos); } void GLEAxis::clearNoTicks() { noticks1.clear(); noticks2.clear(); } void GLEAxis::printNoTicks() { cout << "Noticks1:"; for (vector::size_type i = 0; i < noticks1.size(); i++) { cout << " " << noticks1[i]; } cout << endl; cout << "Noticks2:"; for (vector::size_type i = 0; i < noticks2.size(); i++) { cout << " " << noticks2[i]; } cout << endl; cout << "NoPlaces:"; for (vector::size_type i = 0; i < noplaces.size(); i++) { cout << " " << noplaces[i]; } cout << endl; } int GLEAxis::getNbNamedPlaces() { int nb = getNbNames(); if (getNbPlaces() < nb) nb = getNbPlaces(); return nb; } void GLEAxis::getLabelsFromDataSet(int ds) { GLEDataSet* dataSet = dp[ds]; if (dataSet == NULL || dataSet->np == 0) { return; } GLEDataPairs data; GLEDataPairs::validate(dataSet, 2); data.copyDimension(dataSet, 0); GLEArrayImpl* yv = static_cast(dataSet->getData()->getObject(1)); double* xt = data.getX(); double min_val = xt[0]; double max_val = xt[dataSet->np - 1]; double half_spc = (max_val - min_val) / dataSet->np / 2.0; min_val -= half_spc; max_val += half_spc; unsigned int crpos = 0; for (int i = 0; i < getNbPlaces(); i++) { double fi = places[i]; if (fi >= min_val && fi <= max_val) { // find last position with x-value smaller than fi while (crpos < dataSet->np && xt[crpos] < fi) { crpos++; } if (crpos < dataSet->np && crpos >= 0) { if (crpos > 0) crpos--; unsigned int sel = crpos; double dist = fabs(xt[crpos] - fi); if (crpos+1 < dataSet->np) { if (fabs(xt[crpos+1] - fi) < dist) sel = crpos+1; } if (crpos >= 1) { if (fabs(xt[crpos-1] - fi) < dist) sel = crpos-1; } if (sel >= 0 && sel < dataSet->np && !data.getM(sel)) { GLERC str(yv->getString(sel)); *getNamePtr(i) = str->toUTF8(); } } } } } void GLEAxis::initRange() { getDataRange()->initRange(); getRange()->initRangeIfNotSet(); } void GLEAxis::performRoundRange(GLERange* range, bool extend, bool tozero) { if (range->getMax() <= range->getMin()) { return; } if (!log) { if (roundRange) { roundrange(range, extend, tozero, dticks); } else { double dt = compute_dticks(range); auto_collapse_range(range, dt); } } } void GLEAxis::roundDataRange(bool extend, bool tozero) { if (getRange()->hasBoth()) { return; } GLERange* drange = getDataRange(); performRoundRange(drange, extend, tozero); drange->copyHas(getRange()); getRange()->copyIfNotSet(drange); } void GLEAxis::makeUpRange(GLEAxis* copy, GLEAxis* orth, bool extend, bool tozero) { if (getRange()->hasBoth()) { return; } GLERange* drange = getDataRange(); if (drange->getWidth() == 0.0) { // No spread in values double x = drange->getMin(); GLERange* orth_range = orth->getRange(); if (!log && !orth->log && orth_range->validNotEmpty()) { // Set range based on orthogonal axis drange->setMin(x - orth_range->getWidth()/2); drange->setMax(x + orth_range->getWidth()/2); performRoundRange(drange, extend, tozero); } if (drange->getWidth() == 0.0) { // Previous approach was not applicable or did not help if (log) { // Set 3 log steps drange->setMinMax(x/10, x*10); } else { // Range [0..2x] or [-2x..0] double xa = fabs(x); if (xa == 0) drange->setMinMax(-1, 1); else drange->setMinMax(x - xa, x + xa); performRoundRange(drange, extend, tozero); } } } if (drange->invalidOrEmpty()) { // Note: if both ends found and invalid then error in range specification // this should throw error later, so ignore that case if (!drange->isMinValid() && !drange->isMaxValid()) { // Both ends of axis not found, copy range or use default GLERange* copy_range = copy->getRange(); if (copy_range->validNotEmpty()) { drange->copy(copy_range); // Copy not only range, but also places (if given) if (getNbPlaces() == 0 && copy->getNbPlaces() > 0) { for (int i = 0; i < copy->getNbPlaces(); i++) { addPlace(copy->getPlace(i)); } } } else { if (log) drange->setMinMax(1, 1e3); else drange->setMinMax(0, 1); } } else if (drange->isMinValid()) { if (log) { // Set 3 log steps drange->setMax(drange->getMin()*100); } else { // Range [min..0], [0..1], or [v..10v] if (drange->getMin() < 0) drange->setMax(0); else if (drange->getMin() == 0) drange->setMax(1); else drange->setMax(drange->getMin()*10); performRoundRange(drange, extend, tozero); } } else if (drange->isMaxValid()) { if (log) { // Set 3 log steps drange->setMin(drange->getMax()/100); } else { // Range [0..max], [-1..0], or [-10v..-v] if (drange->getMax() > 0) drange->setMin(0); else if (drange->getMax() == 0) drange->setMin(-1); else drange->setMin(drange->getMax()*10); performRoundRange(drange, extend, tozero); } } } getRange()->copyIfNotSet(drange); } void GLEAxis::setColor(const GLERC& color) { side_color = color; ticks_color = color; label_color = color; subticks_color = color; } gle-graphics-4.2.4c/src/gle/texinterface.h0000664000000000000000000002676211652073536017146 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ /* * (c) 2004 Jan Struyf * */ #ifndef INCLUDE_TEXINTERFACE #define INCLUDE_TEXINTERFACE #define FONT_HEI_FACTOR 1.46199 #define TEX_SCALE_MODE_NONE 0 #define TEX_SCALE_MODE_FIXED 1 #define TEX_SCALE_MODE_SCALE 2 class GLERectangle; class TeXInterface; class TeXHashObject { protected: string m_Line; bool m_Used; int m_HasDimensions, m_NbLines; double m_Width, m_Height, m_Baseline; public: TeXHashObject(const string& line); void outputMeasure(ostream& os); void outputLog(ostream& os); void outputLines(ostream& os); void addFirstLine(string* str); void setDimension(double width, double height, double baseline); inline const string& getLine() { return m_Line; } inline int hasDimensions() { return m_HasDimensions; } inline bool isUsed() { return m_Used; } inline void setUsed(bool used) { m_Used = used; } inline double getWidth() { return m_Width; } inline double getHeight() { return m_Height; } inline double getBaseline() { return m_Baseline; } inline int getNbLines() { return m_NbLines; } inline void setNbLines(int nb) { m_NbLines = nb; } }; #define TEX_OBJ_INF_HAS_COLOR 1 #define TEX_OBJ_INF_HAS_JUSTIFY 2 #define TEX_OBJ_INF_HAS_POSITION 4 #define TEX_OBJ_INF_DONT_PRINT 8 class TeXObjectInfo { protected: int m_Status; GLERC m_Color; int m_Just; double m_Xp, m_Yp; public: TeXObjectInfo(); void setJustify(int just); void setPosition(double xp, double yp); void setColor(const GLERC& color); void initializeAll(); inline void setFlag(int flag) { m_Status |= flag; } inline int getFlags() { return m_Status; } inline int getJustify() { return m_Just; } inline double getXp() { return m_Xp; } inline double getYp() { return m_Yp; } inline GLEColor* getColor() { return m_Color.get(); } }; class TeXObject { protected: double m_Xp, m_Yp, m_DXp, m_DYp, m_Angle; TeXHashObject* m_Object; GLERC m_Color; public: TeXObject(); void output(ostream& os); int isBlack(); void getDimensions(double* x1, double *y1, double *x2, double *y2); inline void setAngle(double angle) { m_Angle = angle; } inline double getAngle() { return m_Angle; } inline void setXY(double x, double y) { m_Xp = x; m_Yp = y; } inline void setDeviceXY(double x, double y) { m_DXp = x; m_DYp = y; } inline void setObject(TeXHashObject* obj) { m_Object = obj; } inline TeXHashObject* getObject() { return m_Object; } inline double getWidth() { return m_Object->getWidth(); } inline double getHeight() { return m_Object->getHeight(); } inline double getDXp() { return m_DXp; } inline double getDYp() { return m_DYp; } inline const string& getLine() { return m_Object->getLine(); } inline int hasObject() { return m_Object != NULL; } inline void setColor(const GLERC& color) { m_Color = color; } inline GLEColor* getColor() { return m_Color.get(); } }; class TeXSize { protected: string m_Name; public: TeXSize(const char* name); void createObject(string* name); inline const string& getName() { return m_Name; } }; class TeXPreambleKey { protected: string m_DocumentClass; vector m_Preamble; public: bool equals(const TeXPreambleKey* key) const; void copyFrom(const TeXPreambleKey* other); inline void clear() { m_Preamble.clear(); } inline void setDocumentClass(const string& line) { m_DocumentClass = line; } inline const string& getDocumentClass() const { return m_DocumentClass; } inline int getNbPreamble() const { return m_Preamble.size(); } inline const string& getPreamble(int i) const { return m_Preamble[i]; } inline void addPreamble(const string& str) { m_Preamble.push_back(str); } }; class TeXPreambleInfo : public TeXPreambleKey { bool m_HasFontSizes; vector m_FontSizes; public: TeXPreambleInfo(); void setFontSize(int font, double size); double getFontSize(int font); void save(ostream& os); void load(istream& is, TeXInterface* iface); int getBestSizeScaled(double hei); int getBestSizeFixed(double hei); inline int getNbFonts() { return m_FontSizes.size(); } inline bool hasFontSizes() { return m_HasFontSizes; } inline void setHasFontSizes(bool hasf) { m_HasFontSizes = hasf; } }; class TeXPreambleInfoList { protected: TeXPreambleInfo* m_Current; vector m_Infos; public: TeXPreambleInfoList(); ~TeXPreambleInfoList(); void save(const string& filestem); void load(const string& filestem, TeXInterface* iface); TeXPreambleInfo* findOrAddPreamble(const TeXPreambleKey* pre_key); inline int getNbPreambles() { return m_Infos.size(); } inline TeXPreambleInfo* getPreamble(int i) { return m_Infos[i]; } inline void addPreamble(TeXPreambleInfo* preamble) { m_Infos.push_back(preamble); } inline TeXPreambleInfo* getCurrent() { return m_Current; } inline void selectDefault() { m_Current = m_Infos[0]; } inline void select(TeXPreambleInfo* value) { m_Current = value; } }; class TeXHash : public vector { public: TeXHash(); ~TeXHash(); void cleanUp(); void loadTeXPS(const string& filestem); void saveTeXPS(const string& filestem, TeXInterface* iface); TeXHashObject* getHashObject(int idx); TeXHashObject* getHashObjectOrNULL(const string& line); inline TeXHashObject* get(int i) { return (*this)[i]; } }; #define TEX_INTERFACE_HASH_LOADED_NONE 0 #define TEX_INTERFACE_HASH_LOADED_PARTIAL 1 #define TEX_INTERFACE_HASH_LOADED_FULL 2 class TeXInterface { protected: static TeXInterface m_Instance; vector m_TeXObjects; TeXHash m_TeXHash; vector m_FontSizes; TeXPreambleInfoList m_Preambles; string m_HashName; string m_DotDir; GLEFileLocation m_MainOutputName; int m_ScaleMode; int m_HashLoaded, m_HashModified; bool m_HasFontSizes; bool m_Enabled; public: TeXInterface(); ~TeXInterface(); TeXObject* draw(const char* str) throw(ParserError); TeXObject* drawUTF8(const char* str, GLERectangle* box = NULL) throw(ParserError); TeXObject* draw(const char* str, GLERectangle* box) throw(ParserError); TeXObject* draw(const char* str, int nblines, GLERectangle* box = NULL) throw(ParserError); TeXObject* draw(const char* str, TeXObjectInfo& info, int nblines, GLERectangle* box = NULL) throw(ParserError); TeXObject* drawObj(TeXHashObject* hobj, TeXObjectInfo& info, GLERectangle* box = NULL) throw(ParserError); void scaleObject(string& obj_str, double hei); void checkObjectDimensions(); int createObj(const char* str, double hei); void initialize(GLEFileLocation* dotfile, GLEFileLocation* oname); void updateNames(GLEFileLocation* dotfile, GLEFileLocation* oname); void updateOutName(GLEFileLocation* oname); void reset(); int tryCreateHash(); void removeDotFiles(); void createInc(const string& prefix); void createTeX(bool usegeom); int getHashObjectIndex(const string& line); TeXHashObject* getHashObject(const string& line); TeXHashObject* getHashObject(int idx); void resetPreamble(); void createPreamble(ostream& tex_file); inline void setHasFontSizes(bool has) { m_HasFontSizes = has; } inline bool hasFontSizes() { return m_HasFontSizes; } inline bool hasObjects() { return m_TeXObjects.size() != 0; } inline int getNbPreamble() { return m_Preambles.getCurrent()->getNbPreamble(); } inline const string& getPreamble(int i) { return m_Preambles.getCurrent()->getPreamble(i); } inline const string& getDocumentClass() { return m_Preambles.getCurrent()->getDocumentClass(); } inline TeXPreambleInfoList* getPreambles() { return &m_Preambles; } inline void addSize(TeXSize* size) { m_FontSizes.push_back(size); } inline int getNbFontSizes() { return m_FontSizes.size(); } inline TeXSize* getFontSize(int i) { return m_FontSizes[i]; } inline TeXPreambleInfo* getCurrentPreamble() { return m_Preambles.getCurrent(); } inline int getScaleMode() { return m_ScaleMode; } inline void setScaleMode(int mode) { m_ScaleMode = mode; } static inline TeXInterface* getInstance() { return &m_Instance; } inline bool isEnabled() { return m_Enabled; } inline void setEnabled(bool ena) { m_Enabled = ena; } protected: void writeInc(ostream& out, const char* prefix); void tryLoadHash(); void loadTeXLines(); void createHiddenDir(); void saveTeXLines(); bool createTeXPS(); bool createTeXPS(const string& filestem); void addHashObject(TeXHashObject* obj); void cleanUpObjects(); void cleanUpHash(); void initTeXFontScales(); void checkTeXFontSizes(); void retrieveTeXFontSizes(TeXHash& tex_hash, TeXPreambleInfo* preamble); }; bool create_eps_file_latex_dvips(const string& fname, GLEScript* script); bool create_ps_file_latex_dvips(const string& fname); bool create_pdf_file_pdflatex(const string& fname, GLEScript* script); bool create_bitmap_file(GLEFileLocation* fname, int device, int dpi, int options, GLEScript* script); bool create_pdf_file_ghostscript(GLEFileLocation* fname, int dpi, GLEScript* script); bool run_ghostscript(const string& args, const string& outfile, bool redirout = true, istream* is = NULL); bool run_latex(const string& dir, const string& file); bool run_dvips(const string& file, bool eps); #endif gle-graphics-4.2.4c/src/gle/op_def.h0000664000000000000000000001111511652073536015703 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ struct op_key { char name[256]; int typ; int pos; int idx; }; #define typ_end 0 #define typ_val 1 #define typ_val2 2 #define typ_val4 3 #define typ_str 4 #define typ_switch 5 #define typ_color 6 #define typ_fill 7 #define typ_marker 8 #define typ_lstyle 9 #define typ_justify 10 #define typ_arrow 11 #define OP_SET_ARROW_SIZE 11 #define OP_SET_ARROW_ANGLE 12 #define OP_SET_ARROW_STYLE 13 #define OP_SET_ARROW_TIP 14 #define OP_SET_IMAGE_FORMAT 15 #define OP_SET_TITLE_SCALE 16 #define OP_SET_ATITLE_SCALE 17 #define OP_SET_ALABEL_SCALE 18 #define OP_SET_TICKS_SCALE 19 #define OP_SET_ATITLE_DIST 20 #define OP_SET_ALABEL_DIST 21 #define OP_SET_TEX_SCALE 22 #define OP_SET_TEX_LABELS 23 #define OP_SET_FILL 24 #define OP_SET_FILL_PATTERN 25 #define OP_SET_BACKGROUND 26 #define OP_SET_FILL_METHOD 27 #define OP_BEGIN_OBJECT 30 #define OP_BEGIN_LENGTH 31 extern struct op_key op_box[]; extern struct op_key op_circle[]; extern struct op_key op_defmarker[]; extern struct op_key op_fill[]; extern struct op_key op_for_step[]; extern struct op_key op_begin_text[]; extern struct op_key op_justify[]; extern struct op_key op_begin[]; extern struct op_key op_set[]; extern struct op_key op_fill_typ[]; extern struct op_key op_marker[]; extern struct op_key op_begin_path[]; extern struct op_key op_begin_box[]; extern struct op_key op_begin_name[]; extern struct op_key op_begin_scale[]; extern struct op_key op_arc[]; extern struct op_key op_arrow[]; extern struct op_key op_joinname[]; extern struct op_key op_line[]; extern struct op_key op_curve[]; extern struct op_key op_size[]; extern struct op_key op_join[]; extern struct op_key op_cap[]; extern struct op_key op_bitmap[]; extern struct op_key op_bitmap_info[]; extern struct op_key op_tex[]; extern struct op_key op_orientation[]; extern struct op_key op_colormap[]; extern struct op_key op_draw[]; gle-graphics-4.2.4c/src/gle/cmdline.h0000664000000000000000000002745011652073536016073 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ /* * 2004 Jan Struyf * */ #ifndef INCLUDE_CMDLINE #define INCLUDE_CMDLINE class CmdLineOptionList; class CmdLineOption; bool cmdline_is_option(const char* opt, const char* val); class CmdLineOptionArg { protected: int m_MinCard, m_MaxCard, m_Card; string m_Help, m_Name; CmdLineOption* m_Option; public: CmdLineOptionArg(const char* name); virtual ~CmdLineOptionArg(); virtual bool isDefault() = 0; virtual void reset() = 0; virtual void write(ostream& os) = 0; virtual bool addValue(const string& value) = 0; virtual bool appendValue(const string& value); virtual void showExtraHelp(); virtual void initArg(); virtual void setDefaultValue(); virtual bool needsComma(); void initShowError(); CmdLineOptionList* getObject(); inline int getCard() { return m_Card; } inline int getMinCard() { return m_MinCard; } inline int getMaxCard() { return m_MaxCard; } inline void setCardLimits(int min, int max) { m_MinCard = min; m_MaxCard = max; } inline void setMinCard(int card) { m_MinCard = card; } inline void setMaxCard(int card) { m_MaxCard = card; } inline const string& getHelp() { return m_Help; } inline void setHelp(const char* help) { m_Help = help; } inline const string& getName() { return m_Name; } inline CmdLineOption* getOption() { return m_Option; } inline void setOption(CmdLineOption* option) { m_Option = option; } }; class CmdLineArgString : public CmdLineOptionArg { protected: bool m_Unquote; string m_Value; string m_Default; public: CmdLineArgString(const char* name, bool unquote = true); ~CmdLineArgString(); virtual bool isDefault(); virtual void reset(); virtual void write(ostream& os); virtual bool addValue(const string& value); virtual bool appendValue(const string& value); virtual void setDefaultValue(); virtual bool needsComma(); void setValue(const char* value); inline const string& getValue() { return m_Value; } inline void setDefault(const char* value) { m_Default = value; } inline const string& getDefault() { return m_Default; } inline string* getValuePtr() { return &m_Value; } }; class CmdLineArgSPairList : public CmdLineOptionArg { protected: vector m_Value1; vector m_Value2; public: CmdLineArgSPairList(const char* name); ~CmdLineArgSPairList(); virtual bool isDefault(); virtual void reset(); virtual void write(ostream& os); virtual bool addValue(const string& value); virtual bool appendValue(const string& value); virtual void setDefaultValue(); void addPair(const string& s1, const string& s2); void addPairValue2(const string& s2); bool hasValue2(const string& s2); const string* lookup(const string& s1); inline string& getValue1(int i) { return m_Value1[i]; } inline string& getValue2(int i) { return m_Value2[i]; } inline void setValue1(int i, const string& s1) { m_Value1[i] = s1; } inline void setValue2(int i, const string& s2) { m_Value2[i] = s2; } inline int size() { return m_Value1.size(); } }; class CmdLineArgInt : public CmdLineOptionArg { protected: int m_Value; int m_Default; public: CmdLineArgInt(const char* name); ~CmdLineArgInt(); virtual bool isDefault(); virtual void reset(); virtual void write(ostream& os); virtual bool addValue(const string& value); virtual void setDefaultValue(); virtual void setValue(int value); inline const int getValue() { return m_Value; } inline void setDefault(int value) { m_Default = value; } }; #define CMDLINE_NO 0 #define CMDLINE_YES 1 #define CMDLINE_UNSUPPORTED 2 class CmdLineArgSet : public CmdLineOptionArg { protected: vector m_Values; vector m_HasValue; vector m_Defaults; public: CmdLineArgSet(const char* name); ~CmdLineArgSet(); virtual bool isDefault(); virtual void reset(); virtual void write(ostream& os); virtual bool addValue(const string& value); virtual void showExtraHelp(); virtual void setDefaultValue(); int getFirstValue(); void addValue(int i); void removeValue(int i); void addPossibleValue(const char* value); bool hasOnlyValue(int id); inline void setUnsupportedValue(int id) { m_HasValue[id] = CMDLINE_UNSUPPORTED; } inline void addDefaultValue(int id) { m_Defaults.push_back(id); } inline int getNbValues() { return m_Values.size(); } inline bool hasValue(int id) { return m_HasValue[id] == CMDLINE_YES; } inline const string& getStringValue(int id) { return m_Values[id]; } }; class CmdLineOption { protected: bool m_HasOption, m_Expert; int m_MinNbArgs, m_NbArgs; vector m_Names; vector m_Args; CmdLineOptionList* m_Object; string m_Help; public: CmdLineOption(const char* name); CmdLineOption(const char* name, const char* alias); CmdLineOption(const char* name, const char* alias1, const char* alias2); ~CmdLineOption(); void initialize(); void deleteArgs(); void addAlias(const char* alias); void showHelp(); void initOption(); void setDefaultValues(); void addArg(CmdLineOptionArg* arg); bool allDefaults(); inline int getNbNames() { return m_Names.size(); } inline const string& getName(int i) { return m_Names[i]; } inline const string& getName() { return m_Names[0]; } inline int getMinNbArgs() { return m_MinNbArgs; } inline int getMaxNbArgs() { return m_Args.size(); } inline int getNbArgs() { return m_NbArgs; } inline CmdLineOptionArg* getArg(int i) { return m_Args[i]; } inline bool hasOption() { return m_HasOption; } inline void setHasOption(bool has) { m_HasOption = has; } inline void setMinNbArgs(int min) { m_MinNbArgs = min; } inline const string& getHelp() { return m_Help; } inline void setHelp(const char* help) { m_Help = help; } inline bool isExpert() { return m_Expert; } inline void setExpert(bool expert) { m_Expert = expert; } inline CmdLineOptionList* getObject() { return m_Object; } inline void setObject(CmdLineOptionList* obj) { m_Object = obj; } inline bool hasArgument() { return getArg(0)->getCard() != 0; } }; class CmdLineOptionList { protected: vector m_Options; int m_Error; public: CmdLineOptionList(); ~CmdLineOptionList(); void addOption(CmdLineOption* option, int id); CmdLineOption* getOption(const string& name); CmdLineOption* createOption(int id); CmdLineArgString* addStringOption(const char* name, int id); CmdLineArgSPairList* addSPairListOption(const char* name, int id); void deleteOptions(); char getOptionPrefix(); void showHelp(int helpid); void initOptions(); void setDefaultValues(); bool allDefaults(); void clearAll(); bool hasOption(const string& name); bool hasOption(int id); void setHasOption(const string& name); void setOptionString(const string& name, const string& value, int arg = 0); void setHasOption(int id, bool set); inline int hasError() { return m_Error == 1; } inline int getNbOptions() { return m_Options.size(); } inline CmdLineOption* getOption(int i) { return m_Options[i]; } inline CmdLineOptionArg* getOptionValue(int i) { return m_Options[i]->getArg(0); } inline const string& getOptionString(int id, int nr = 0) { return ((CmdLineArgString*)m_Options[id]->getArg(nr))->getValue(); } inline int getOptionInt(int id, int nr = 0) { return ((CmdLineArgInt*)m_Options[id]->getArg(nr))->getValue(); } }; class ConfigSection : public CmdLineOptionList { protected: string m_Name; public: ConfigSection(const char* name); ~ConfigSection(); inline const string& getName() { return m_Name; } inline void setName(const char* name) { m_Name = name; } }; class ConfigCollection { protected: vector m_Sections; public: ConfigCollection(); ~ConfigCollection(); void deleteSections(); bool allDefaults(); void setDefaultValues(); void addSection(ConfigSection* section, int id); ConfigSection* getSection(const string& name); const string& getStringValue(int section, int value); void setStringValue(int section, int value, const char* str); inline int getNbSections() { return m_Sections.size(); } inline ConfigSection* getSection(int id) { return m_Sections[id]; }; }; class CmdLineObj : public CmdLineOptionList { protected: string m_MainArgType; vector m_MainArgs; vector m_MArgSep; int m_ArgC, m_ArgIdx; int m_MArgSepPos; bool m_HasStdin; char** m_ArgV; public: CmdLineObj(); ~CmdLineObj(); void parse(int argc, char** argv); const char* getNextArg(); void addOptionArg(CmdLineOption* cropt, int argidx, const string& crarg); bool parseOptionArg(bool inmainargs, const string& optionname, int argidx, CmdLineOption** cropt_p); bool isMainArgSeparator(const string& arg); int getNbMainArgs(); const string& getMainArg(int i); int getNbExtraArgs(); const string& getExtraArg(int i); const string& getStringValue(int option, int arg = 0); int getIntValue(int option, int arg = 0); void setIntValue(int option, int value, int arg = 0); bool checkForStdin(); inline bool hasStdin() { return m_HasStdin; } inline bool supportsExtraArgs() { return m_MArgSep.size() != 0; } inline const string& getMainArgSep(int i) { return m_MArgSep[i]; } inline int getMainArgSepPos() { return m_MArgSepPos; } inline void setMainArgSepPos(int pos) { m_MArgSepPos = pos; } inline void setMainArgType(const char* type) { m_MainArgType = type; } inline void addMainArgSep(const char* sep) { m_MArgSep.push_back(sep); } inline vector* getMainArgs() { return &m_MainArgs; } }; #endif gle-graphics-4.2.4c/src/gle/sub.h0000664000000000000000000002035411536244776015254 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ #ifndef INCLUDE_SUB #define INCLUDE_SUB class GLEObjectDOConstructor; class GLESubArgNames : public GLERefCountObject { public: GLESubArgNames(); void addArgName(const char* argName); void addArgName(unsigned int argIndex, const char* argName); void addArgNameAlias(unsigned int argIndex, const char* argName); private: GLEArrayImpl m_ArgNames; GLEStringHashData m_ArgNameHash; }; class GLESubRoot : public GLEDataObject { public: GLESubRoot(GLEString* name, GLESubArgNames* argNames); void updateArgNames(GLESubArgNames* argNames); private: GLERC m_Name; GLERC m_ArgNames; GLERC m_IgnoredArgNames; GLERC m_Signatures; }; class GLESubDefinitionHelper : public GLERefCountObject { public: GLESubDefinitionHelper(const std::string& name); void addArgumentAlias(unsigned int argIndex, const std::string& name); unsigned int addArgument(const std::string& name, unsigned int type, bool mandatory); unsigned int addDoubleArgument(const std::string& name, double defaultValue, bool mandatory); unsigned int addDoubleArgumentNoDefault(const std::string& name, bool mandatory); unsigned int addPointArgument(const std::string& name, GLEPointDataObject* defaultValue, bool mandatory); public: std::vector m_isMandatory; std::vector m_ArgTypes; GLERC m_Defaults; GLERC m_ArgNames; GLERC m_Name; }; class GLESubSignature : public GLEDataObject { public: GLESubSignature(GLESubRoot* root); private: GLESubRoot* m_Root; GLERC m_Subroutines; GLERC m_Callables; }; class GLECallable : public GLEDataObject { public: virtual void execute(GLEArrayImpl* stack, unsigned int top); protected: unsigned int* m_ArgTypes; }; class GLEArgTypeDefaults : public GLERefCountObject { public: GLEArgTypeDefaults(unsigned int arity); ~GLEArgTypeDefaults(); inline unsigned int* getArgTypes() { return m_ArgTypes; } inline void setArgType(unsigned int i, unsigned int type) { m_ArgTypes[i] = type; } private: unsigned int m_Arity; unsigned int* m_ArgTypes; GLERC m_Defaults; }; class GLEAbstractSub : public GLECallable { public: GLEAbstractSub(); inline void setRoot(GLESubRoot* root) { m_Root = root; } void setArgTypeDefaults(GLEArgTypeDefaults* defaults); private: GLESubRoot* m_Root; GLERC m_ArgTypeDefaults; }; class GLESubMap; class GLEBuiltInFactory { public: GLEBuiltInFactory(GLESubMap* map); GLESubArgNames* getBinaryArgNamesXY(); GLEArgTypeDefaults* getBinaryDoubleDoubleArgTypeDefaults(); GLESubRoot* createRoot(const char* name, GLESubArgNames* argNames); private: GLESubMap* m_Map; GLERC m_BinaryArgNamesXY; GLERC m_BinaryDoubleDoubleArgTypeDefaults; }; class GLEBuiltIn : public GLEAbstractSub { public: private: }; class GLESub { protected: string m_Name; int m_Typ, m_Idx; vector m_PType; vector m_PName; vector m_PNameS; vector m_PDefault; int m_Start, m_End; GLEVarMap m_LocalVars; GLESub* m_ParentSub; GLEScript* m_Script; GLEObjectDOConstructor* m_Cons; bool m_IsObject; public: GLESub(); ~GLESub(); void addParam(const string& name, int type); void setStartEnd(int start, int end); int findParameter(const string& name); void listArgNames(ostream& out); void clear(); GLEObjectDOConstructor* getObjectDOConstructor(); inline const string& getName() const { return m_Name; } inline void setName(const string& name) { m_Name = name; } inline int getStart() const { return m_Start; } inline void setStart(int line) { m_Start = line; } inline int getEnd() const { return m_End; } inline void setIndex(int idx) { m_Idx = idx; } inline int getIndex() const { return m_Idx; } inline GLEVarMap* getLocalVars() { return &m_LocalVars; } inline int getParamType(int idx) { return m_PType[idx]; } inline const string& getParamName(int idx) { return m_PName[idx]; } inline const string& getParamNameShort(int idx) { return m_PNameS[idx]; } inline const string& getDefault(int idx) const { return m_PDefault[idx]; } inline void setDefault(int idx, const string& value) { m_PDefault[idx] = value; } inline int getNbParam() { return m_PType.size(); } inline int* getParamTypes() { return &m_PType[0]; } inline GLESub* getParentSub() { return m_ParentSub; } inline void setParentSub(GLESub* par) { m_ParentSub = par; } inline bool isObject() { return m_IsObject; } inline void setIsObject(bool isobj) { m_IsObject = isobj; } inline void setScript(GLEScript* script) { m_Script = script; } inline GLEScript* getScript() { return m_Script; } }; class GLESubMap { protected: StringIntHash m_Map; vector m_Subs; GLERC m_SubRoots; public: GLESubMap(); ~GLESubMap(); GLESubRoot* getRoot(const char* name); GLESubRoot* createRoot(const char* name, GLESubArgNames* argNames); void clear(); void clear(int i); GLESub* add(); GLESub* add(GLESub* parent); void add(GLEAbstractSub* sub); /* FIXME: lookup should be based on GLEString */ GLESub* add(const string& name); GLESub* get(const string& name); void list(); inline GLESub* get(int i) { return m_Subs[i]; } inline int getIndex(const string& name) { return m_Map.try_get(name); } inline int size() { return m_Subs.size(); } }; GLESub* sub_get(int idx) throw(ParserError); GLESub* sub_find(const string& s); void sub_param(GLESub* sub, const string& name); void call_sub_byname(const string& name, double* args, int nb, const char* err_inf) throw(ParserError); void call_sub_byid(int idx, double* args, int nb, const char* err_inf) throw(ParserError); #endif gle-graphics-4.2.4c/src/gle/mem_limits.h0000664000000000000000000001054111510432671016600 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ #ifndef INCLUDE_MEM_LIMTS #define INCLUDE_MEM_LIMTS // // mem_limts.h // /* memory limits for GLE. I pulled these out of the code, most were hard-coded into the source these are all statically defined arrays, soon they will be replaced with STL containers These is gleaned from the file var.c also I had to modify the files sub.c polish.c eval.c to include LOCAL_START_INDEX it seems that all the commands,functions and variables are indexed by one variable if the index is > LOCAL_START_INDEX then it is treated as a local variable and stored in the lvar_name and lvar_val else the variable is a global variable */ #define NUM_GLOBAL 1000 //number of global variables #define NUM_LOCAL 500 //number of local variables each subroutine can have #define MAX_GLOBAL NUM_GLOBAL-1 //GLE will warn the user #define MAX_LOCAL NUM_LOCAL-1 //GLE will warn the user // // all the variables are kept on the same stack except that the // local variables start at a higher index (don't change these) // #define MAX_INDEX NUM_GLOBAL+NUM_LOCAL #define LOCAL_START_INDEX NUM_GLOBAL // // for the token arrays // #define TOKEN_WIDTH 1000 #define TOKEN_LENGTH 500 // // these are for graphing routines // // maximum number of items in each line of the data file #define MAX_NUMBER_OF_ITEMS 1000 // // maximum element in the postscript line. This affects speed of // PS rendereing. any line that has more than // MAXIMUM_PS_VECTOR points in it will be broken up // into lines of MAXIMUM_PS_VECTOR // not this is assinged to MAX_VECTOR in gle.cpp // no warning is printed if this is exceeded as was done in 3.3h // #define MAXIMUM_PS_VECTOR 500 // Maximum number of datasets #define MAX_NB_DATA 1001 #endif gle-graphics-4.2.4c/src/gle/drawit.cpp0000664000000000000000000003224311563727761016310 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ #include "all.h" #include "tokens/stokenizer.h" #include "tokens/Tokenizer.h" #include "mem_limits.h" #include "token.h" #include "core.h" #include "var.h" #include "glearray.h" #include "polish.h" #include "pass.h" #include "file_io.h" #include "gprint.h" #include "cmdline.h" #include "config.h" #include "drawit.h" #include "cutils.h" #include "gle-interface/gle-interface.h" #include "keyword.h" #include "run.h" #define dbg if (gle_debug>0) extern int gle_debug; extern int this_line; int trace_on; int **gpcode; /* gpcode is a pointer to an array of poiter to int */ int *gplen; /* gpcode is a pointer to an array of int */ int ngpcode=0; int ngerror; extern int last_line; char *dr_nextline(int *srclin); void dr_init(void); int getch(void); int abort_flag; GLEGlobalSource* g_Source = NULL; void g_close(); int gle_is_open(); GLERun* g_GLERun = NULL; extern CmdLineObj g_CmdLine; GLERun* getGLERunInstance() { return g_GLERun; } void text_load_include(GLEParser* parser, const string& fname, GLESourceLine* code, GLESourceFile* file) throw(ParserError); void do_set_vars() { var_def("PI", GLE_PI); var_def("XGMIN", 0.0); var_def("YGMIN", 0.0); var_def("XGMAX", 0.0); var_def("YGMAX", 0.0); var_def("X2GMIN", 0.0); var_def("Y2GMIN", 0.0); var_def("X2GMAX", 0.0); var_def("Y2GMAX", 0.0); var_def("ZGMIN", 0.0); var_def("ZGMAX", 0.0); } /*---------------------------------------------------------------------------*/ void output_error(ParserError& err) { g_set_error_column(-1); if (err.hasFlag(TOK_PARSER_ERROR_ATEND)) { // Otherwise, the message would be "unexpected end of file" err.setMessage("unexpected end of line"); } if (err.hasFlag(TOK_PARSER_ERROR_PSTRING)) { if (err.file() == "") { gprint(string(">> Error: ")+err.msg()+"\n"); } else { string err_str; err.toString(err_str); gprint(string(">> Error: ")+err_str+"\n"); } if (err.getColumn() != -1) { stringstream pos_strm; pos_strm << ">> In: '"; int delta = showLineAbbrev(err.getParserString(), err.getColumn(), pos_strm); pos_strm << "'" << endl; pos_strm << ">>"; for (int i = 0; i < err.getColumn()+5-delta; i++) { pos_strm << " "; } pos_strm << "^" << endl; gprint(pos_strm.str()); } } else { if (err.file() == "") { // Error in the GLE file g_set_error_column(err.getColumn()); gprint(string(">> Error: ")+err.msg()+"\n"); } else { // Error while reading a data file string err_str; err.toString(err_str); gprint(string(">> Error: ")+err_str+"\n"); } } } void output_error_cerr(ParserError& err) { // Used by GLE "as a calculator", i.e., if no GLE file is active if (err.hasFlag(TOK_PARSER_ERROR_ATEND)) { // Otherwise, the message would be "unexpected end of file" err.setMessage("unexpected end of line"); } if (err.hasFlag(TOK_PARSER_ERROR_PSTRING)) { cerr << ">> Error: " << err.msg() << endl; if (err.getColumn() != -1) { cerr << ">> In: '" << err.getParserString() << "'" << endl; stringstream pos_strm; pos_strm << ">>"; for (int i = 0; i < err.getColumn()+5; i++) { pos_strm << " "; } pos_strm << "^" << endl; cerr << pos_strm.str(); } } else { cerr << ">> Error: " << err.msg() << endl; } } void validate_open_input_stream(ifstream& input, const string& fname) throw(ParserError) { string expanded(GLEExpandEnvironmentVariables(fname)); validate_file_name(expanded, true); input.open(expanded.c_str()); if (!input.is_open()) { g_throw_parser_error_sys("unable to open file '", expanded.c_str(), "'"); } } FILE* validate_fopen(const string& fname, const char *mode, bool isread) throw(ParserError) { string expanded(GLEExpandEnvironmentVariables(fname)); validate_file_name(expanded, isread); FILE* result = fopen(expanded.c_str(), mode); if (result == NULL) { if (isread) g_throw_parser_error_sys("unable to open file '", expanded.c_str(), "'"); else g_throw_parser_error_sys("unable to create file '", expanded.c_str(), "'"); } return result; } void validate_file_name(const string& fname, bool isread) throw(ParserError) { GLEInterface* iface = GLEGetInterfacePointer(); if (iface->hasFileInfos()) { GLEFileLocation finfo; finfo.fromFileNameCrDir(fname); iface->addFileInfo(finfo); } GLEGlobalConfig* conf = iface->getConfig(); if (conf->getCmdLine()->hasOption(GLE_OPT_SAFEMODE)) { bool allow = false; string fullpath, dirname; GLEGetCrDir(&dirname); GLEGetFullPath(dirname, fname, fullpath); // cout << "full path: " << fullpath << endl; GetDirName(fullpath, dirname); StripDirSepButNotRoot(dirname); int nbread = conf->getNumberAllowReadDirs(); if (nbread > 0 && isread) { for (int i = 0; i < nbread; i++) { if (conf->getAllowReadDir(i) == dirname) { allow = true; } } if (allow) { return; } else { g_throw_parser_error("safe mode - reading not allowed in directory '", dirname.c_str(), "'"); } } int nbwrite = conf->getNumberAllowWriteDirs(); if (nbwrite > 0 && !isread) { for (int i = 0; i < nbwrite; i++) { if (conf->getAllowWriteDir(i) == dirname) { allow = true; } } if (allow) { return; } else { g_throw_parser_error("safe mode - writing not allowed in directory '", dirname.c_str(), "'"); } } g_throw_parser_error("safe mode - can not access '", fname.c_str(), "': file system access has been disabled"); } } void DrawIt(GLEScript* script, GLEFileLocation* outfile, CmdLineObj* cmdline, bool silent) throw (ParserError) { GLEGlobalSource* glecode = script->getSource(); GLEInterface* iface = script->getGLEInterface(); script->cleanUp(); g_Source = glecode; abort_flag = false; ngerror = 0; last_line = 0; if (!silent && g_verbosity() > 0) { string version; g_get_version(&version); cerr << "GLE " << version << "[" << script->getLocation()->getName() << "]-C"; cerr.flush(); g_set_console_output(false); } g_clear(); var_clear(); mark_clear(); sub_clear(iface->isCommitMode()); clear_run(); f_init(); if (cmdline != NULL) { int devtype = g_get_device(); if (devtype == GLE_DEVICE_PS) { g_set_fullpage(true); } else { g_set_fullpage(cmdline->hasOption(GLE_OPT_FULL_PAGE)); } g_set_rotate_fullpage(cmdline->hasOption(GLE_OPT_LANDSCAPE)); } g_set_pagesize(gle_config_papersize()); g_set_margins(gle_config_margins()); do_set_vars(); GLEPcodeList* pc_list = new GLEPcodeList(); GLEPcodeIndexed* pcode = new GLEPcodeIndexed(pc_list); script->setPcode(pcode); GLEPolish* polish = new GLEPolish(); script->setPolish(polish); polish->initTokenizer(); // Create tokenizer GLEParser* parser = new GLEParser(script, polish); script->setParser(parser); parser->initTokenizer(); try { // Auto-include "compatibility.gle" if compatibilty mode is not most recent string compat = "compatibility.gle"; if ((g_get_compatibility() < GLE_COMPAT_MOST_RECENT) && !glecode->includes(compat)) { GLESourceFile* includefile = new GLESourceFile(); text_load_include(parser, compat, NULL, includefile); glecode->insertIncludeNoOverwrite(0, includefile); } set_global_parser(parser); pcode->addIndex(pcode->size()); for (int crline = 0; crline < glecode->getNbLines(); crline++) { // call passt to convert the tokens into PCode // pcode is simply numbers that instruct the drawing // engine which commands to draw // cout << "Line = " << *crline; int prevSize = pcode->size(); GLESourceLine* code = glecode->getLine(crline); parser->setString(code->getCodeCStr()); try { parser->passt(*code, *pcode); } catch (ParserError err) { output_error(err); } bool add_pcode = true; if (parser->hasSpecial(GLE_PARSER_INCLUDE) && !glecode->includes(parser->getInclude())) { // this is a file to include load the file and insert it into glecode here GLESourceFile* includefile = new GLESourceFile(); text_load_include(parser, parser->getInclude(), code, includefile); glecode->insertInclude(crline, includefile); crline--; if (g_verbosity() > 5) { cerr << "{" << parser->getInclude() << "}"; } // don't need this pcode add_pcode = false; } if (add_pcode) { pcode->addIndex(pcode->size()); } else { pcode->resize(prevSize); } } parser->checkmode(); /* build global pcode index */ ngpcode = pcode->getNbEntries()-1; if (gpcode != NULL) free(gpcode); if (gplen != NULL) free(gplen); gpcode = (int**)malloc(sizeof(int*)*(ngpcode+1)); gplen = (int*)malloc(sizeof(int)*(ngpcode+1)); for (int i = 0; i < ngpcode; i++) { gplen[i+1] = pcode->getSize(i); gpcode[i+1] = &(*pcode)[0] + pcode->getIndex(i); } } catch (ParserError err) { output_error(err); } // Create GLERun GLERun* run = new GLERun(script, outfile); run->setBlockTypes(parser->getBlockTypes()); script->setRun(run); g_GLERun = run; g_compatibility_settings(); // Exit if parser error (not: this should be done after GLERun has been created!) if (ngerror > 0){ reset_new_error(true); g_message(""); g_throw_parser_error("errors, aborting"); } try { // // -- now run the pcode in the driver // if (!silent && g_verbosity() > 0) cerr << "-R-"; if (ngpcode != glecode->getNbLines()) { cerr << "error pcode and text size mismatch"<error(errs.str()); } else { loc->setFullPath(fullname); loc->initDirectory(); validate_file_name(fullname, true); file->load(input); input.close(); file->trim(0); } } gle-graphics-4.2.4c/src/gle/d_svg.cpp0000664000000000000000000000533211652073536016110 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ /* We now use the Cairo SVG export */ gle-graphics-4.2.4c/src/gle/op_def.cpp0000664000000000000000000003440511652073536016245 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ #include "op_def.h" #include "color.h" /*--------------------------------------------------------------------------------------*/ /* Pos = Offset to find the data */ /* Idx = For switches, which can only have one value */ /* The pos is the order the items will be placed in the pcode */ /* */ /* indexes (idx) for types */ /* =================================================================================== */ /* typ_switch Switches LONG Placed in directly, 1 present, 0 not present */ /* expressions LONG* Pointed to, 0 if not present */ /* type_fill color/fill LONG* Pointer to exp 0 if not present */ /* marker LONG* Pointer to exp 0 if not present */ /* lstyle LONG* Pointer to exp 0 if not present */ /* typ_str font int* Pointer to string expression */ /* */ /*--------------------------------------------------------------------------------------*/ struct op_key op_box[] = { { "JUSTIFY", typ_justify, 1, 0 }, { "JUST", typ_justify, 1, 0 }, { "FILL", typ_fill, 2, 0 }, { "NOSTROKE", typ_switch, 3, 1 }, { "NOBORDER", typ_switch, 3, 1 }, { "NOBOX", typ_switch, 3, 1 }, { "REVERSE", typ_switch, 4, 1 }, { "ROUND", typ_val, 5, 0 }, { "NAME", typ_str, 6, 0 }, { "END", typ_end, 0, 0 } }; struct op_key op_circle[] = { { "JUSTIFY", typ_justify, 1, 0 }, { "JUST", typ_justify, 1, 0 }, { "NOSTROKE", typ_switch, 2, 1 }, { "FILL", typ_fill, 3, 0 }, { "NAME", typ_str, 4, 0 }, { "END", typ_end, 0, 0 } }; struct op_key op_defmarker[] = { { "FONT", typ_str, 1, 0 }, { "CHAR", typ_str, 2, 0 }, { "DX", typ_val, 3, 0 }, { "DY", typ_val, 4, 0 }, { "END", typ_end, 0, 0 } }; struct op_key op_fill[] = { { "FILL", typ_fill, 1, 0 }, { "END", typ_end, 0, 0 } }; struct op_key op_for_step[] = { { "STEP", typ_val, 1, 0 }, { "END", typ_end, 0, 0 } }; struct op_key op_begin_text[] = { { "WIDTH", typ_val, 1, 0 }, { "DEPTH", typ_val, 2, 0 }, { "JUSTIFY", typ_justify, 3, 0 }, { "JUST", typ_justify, 3, 0 }, { "END", typ_end, 0, 0 } }; struct op_key op_justify[] = { { "LEFT", typ_switch, 1, 0x100 }, { "CENT", typ_switch, 1, 0x110 }, { "CENTER", typ_switch, 1, 0x110 }, { "CENTRE", typ_switch, 1, 0x110 }, { "RIGHT", typ_switch, 1, 0x120 }, { "LT", typ_switch, 1, 0x02 }, { "TL", typ_switch, 1, 0x02 }, { "CL", typ_switch, 1, 0x01 }, { "LC", typ_switch, 1, 0x01 }, { "BL", typ_switch, 1, 0x00 }, { "LB", typ_switch, 1, 0x00 }, { "CB", typ_switch, 1, 0x10 }, { "BC", typ_switch, 1, 0x10 }, { "RB", typ_switch, 1, 0x20 }, { "BR", typ_switch, 1, 0x20 }, { "CR", typ_switch, 1, 0x21 }, { "RC", typ_switch, 1, 0x21 }, { "TR", typ_switch, 1, 0x22 }, { "RT", typ_switch, 1, 0x22 }, { "TC", typ_switch, 1, 0x12 }, { "CT", typ_switch, 1, 0x12 }, { "CC", typ_switch, 1, 0x11 }, { "CI", typ_switch, 1, 0x1011 }, { "C", typ_switch, 1, 0x1011 }, { "VI", typ_switch, 1, 0x2000 }, { "V", typ_switch, 1, 0x2000 }, { "HO", typ_switch, 1, 0x3000 }, { "H", typ_switch, 1, 0x3000 }, { "BOX", typ_switch, 1, 0x5011 }, { "BO", typ_switch, 1, 0x5011 }, { "END", typ_end, 1, 1} }; struct op_key op_begin[] = { { "path", typ_switch, 1, 1 }, { "box", typ_switch, 1, 2 }, { "scale", typ_switch, 1, 3 }, { "rotate", typ_switch, 1, 4 }, { "translate", typ_switch, 1, 5 }, { "rot", typ_switch, 1, 4 }, { "tran", typ_switch, 1, 5 }, { "if", typ_switch, 1, 6 }, { "sub", typ_switch, 1, 7 }, { "name", typ_switch, 1, 8 }, { "text", typ_switch, 1, 9 }, { "graph", typ_switch, 1, 10 }, { "xaxis", typ_switch, 1, 11 }, { "yaxis", typ_switch, 1, 12 }, { "x2axis", typ_switch, 1, 13 }, { "y2axis", typ_switch, 1, 14 }, { "curve", typ_switch, 1, 15 }, { "key", typ_switch, 1, 16 }, { "origin", typ_switch, 1, 17 }, { "table", typ_switch, 1, 18 }, { "clip", typ_switch, 1, 19 }, { "until", typ_switch, 1, 20 }, { "shear", typ_switch, 1, 21 }, { "config", typ_switch, 1, 22 }, { "texpreamble", typ_switch, 1, 23 }, { "surface", typ_switch, 1, 24 }, { "letz", typ_switch, 1, 25 }, { "fitz", typ_switch, 1, 26 }, { "fit", typ_switch, 1, 27 }, /* what previously fitls used to be */ { "contour", typ_switch, 1, 28 }, { "tex", typ_switch, 1, 29 }, { "object", typ_switch, 1, OP_BEGIN_OBJECT }, { "length", typ_switch, 1, OP_BEGIN_LENGTH }, { "END", typ_end, 1, 1} }; struct op_key op_set[] = { { "HEI", typ_switch, 1, 1 }, { "FONT", typ_switch, 1, 2 }, { "JUSTIFY", typ_switch, 1, 3 }, { "JUST", typ_switch, 1, 3 }, { "COLOR", typ_switch, 1, 4 }, { "BACKGROUND", typ_switch, 1, OP_SET_BACKGROUND }, { "DASHLEN", typ_switch, 1, 5 }, { "DASH", typ_switch, 1, 6 }, { "FILL", typ_switch, 1, OP_SET_FILL }, { "PATTERN", typ_switch, 1, OP_SET_FILL_PATTERN }, { "FILLMETHOD", typ_switch, 1, OP_SET_FILL_METHOD }, { "LDIST", typ_switch, 1, 5 }, { "LSTYLE", typ_switch, 1, 6 }, { "LWIDTH", typ_switch, 1, 7 }, { "JOIN", typ_switch, 1, 8 }, { "CAP", typ_switch, 1, 9 }, { "FONTLWIDTH", typ_switch, 1, 10 }, { "TEXSCALE", typ_switch, 1, OP_SET_TEX_SCALE }, { "TEXLABELS", typ_switch, 1, OP_SET_TEX_LABELS }, { "ARROWSTYLE", typ_switch, 1, OP_SET_ARROW_STYLE }, { "ARROWTIP", typ_switch, 1, OP_SET_ARROW_TIP }, { "ARROWSIZE", typ_switch, 1, OP_SET_ARROW_SIZE }, { "ARROWANGLE", typ_switch, 1, OP_SET_ARROW_ANGLE }, { "IMAGEFORMAT", typ_switch, 1, OP_SET_IMAGE_FORMAT }, { "TITLESCALE", typ_switch, 1, OP_SET_TITLE_SCALE }, { "ATITLESCALE", typ_switch, 1, OP_SET_ATITLE_SCALE }, { "ALABELSCALE", typ_switch, 1, OP_SET_ALABEL_SCALE }, { "TICKSSCALE", typ_switch, 1, OP_SET_TICKS_SCALE }, { "ATITLEDIST", typ_switch, 1, OP_SET_ATITLE_DIST }, { "ALABELDIST", typ_switch, 1, OP_SET_ALABEL_DIST }, { "END", typ_end, 1, 1} }; /* colors, fills, First byte is pattern, then red,green,blue intensities*/ /* currently defined patterns are, ff=clear, 1=black, */ struct op_key op_fill_typ[] = { { "CLEAR", typ_switch, 1, GLE_FILL_CLEAR }, { "GRID", typ_switch, 1, 0X02012020 }, { "GRID1", typ_switch, 1, 0X02040f0f }, { "GRID2", typ_switch, 1, 0X02011010 }, { "GRID3", typ_switch, 1, 0X02052020 }, { "GRID4", typ_switch, 1, 0X02104040 }, { "GRID5", typ_switch, 1, 0X02206060 }, { "SHADE", typ_switch, 1, 0X02010020 }, { "SHADE1", typ_switch, 1, 0X0204000C }, { "SHADE2", typ_switch, 1, 0X02010010 }, { "SHADE3", typ_switch, 1, 0X02050020 }, { "SHADE4", typ_switch, 1, 0X02100040 }, { "SHADE5", typ_switch, 1, 0X02200060 }, { "RSHADE", typ_switch, 1, 0X02012000 }, { "RSHADE1", typ_switch, 1, 0X02040C00 }, { "RSHADE2", typ_switch, 1, 0X02011000 }, { "RSHADE3", typ_switch, 1, 0X02052000 }, { "RSHADE4", typ_switch, 1, 0X02104000 }, { "RSHADE5", typ_switch, 1, 0X02206000 }, { "END", typ_end, 1, 1} }; struct op_key op_marker[] = { { "DOT", typ_switch, 1, 1 }, { "CROSS", typ_switch, 1, 2 }, { "FCIRCLE", typ_switch, 1, 3 }, { "FSQUARE", typ_switch, 1, 4 }, { "FTRIANGLE", typ_switch, 1, 5 }, { "FDIAMOND", typ_switch, 1, 6 }, { "CIRCLE", typ_switch, 1, 7 }, { "SQUARE", typ_switch, 1, 8 }, { "TRIANGLE", typ_switch, 1, 9 }, { "DIAMOND", typ_switch, 1, 10 }, { "PLUS", typ_switch, 1, 11 }, { "CLUB", typ_switch, 1, 12 }, { "HEART", typ_switch, 1, 13 }, { "DIAMOND", typ_switch, 1, 14 }, { "SPADE", typ_switch, 1, 15 }, { "STAR", typ_switch, 1, 16 }, { "SNAKE", typ_switch, 1, 17 }, { "DAG", typ_switch, 1, 18 }, { "DDAG", typ_switch, 1, 19 }, { "ASTERIX", typ_switch, 1, 20 }, { "ASTERISK", typ_switch, 1, 20 }, { "OPLUS", typ_switch, 1, 21 }, { "OMINUS", typ_switch, 1, 22 }, { "OTIMES", typ_switch, 1, 23 }, { "ODOT", typ_switch, 1, 24 }, { "TRIANGLEZ", typ_switch, 1, 25 }, { "DIAMONDZ", typ_switch, 1, 26 }, { "WCIRCLE", typ_switch, 1, 27 }, { "WTRIANGLE", typ_switch, 1, 28 }, { "WSQUARE", typ_switch, 1, 29 }, { "WDIAMOND", typ_switch, 1, 30 }, { "END", typ_end, 1, 1 } }; struct op_key op_begin_path[] = { { "STROKE", typ_switch, 1, 1 }, { "FILL", typ_fill, 2, 0 }, { "CLIP", typ_switch, 3, 1 }, { "END", typ_end, 0, 0 } }; struct op_key op_begin_box[] = { { "ADD", typ_val, 1, 0 }, { "FILL", typ_fill, 2, 0 }, { "NOSTROKE", typ_switch, 3, 1 }, { "NOBORDER", typ_switch, 3, 1 }, { "NOBOX", typ_switch, 3, 1 }, { "ROUND", typ_val, 4, 0 }, { "NAME", typ_str, 5, 0 }, { "END", typ_end, 0, 0 } }; struct op_key op_begin_name[] = { { "ADD", typ_val, 1, 0 }, { "END", typ_end, 0, 0 } }; struct op_key op_begin_scale[] = { { "TRANSLATE", typ_val2, 1, 0 }, { "TRAN", typ_val2, 1, 0 }, { "SCALE", typ_val2, 3, 0 }, { "ROTATE", typ_val, 5, 0 }, { "ROT", typ_val, 5, 0 }, { "END", typ_end, 0, 0 } }; struct op_key op_arc[] = { { "ARROW", typ_arrow, 1, 1 }, { "CENTER", typ_val2, 2, 0 }, { "CENTRE", typ_val2, 2, 0 }, { "CENT", typ_val2, 2, 0 }, { "END", typ_end, 0, 0 } }; struct op_key op_arrow[] = { { "START", typ_switch, 1, 1 }, { "END", typ_switch, 1, 2 }, { "BOTH", typ_switch, 1, 3 }, { "END", typ_end, 0, 0 } }; struct op_key op_joinname[] = { { "->", typ_switch, 1, 1 }, { "<-", typ_switch, 1, 2 }, { "<->", typ_switch, 1, 3 }, { "-", typ_switch, 1, 4 }, { "END", typ_end, 0, 0 } }; struct op_key op_line[] = { { "ARROW", typ_arrow, 1, 1 }, { "CURVE", typ_val4, 2, 0 }, { "END", typ_end, 0, 0 } }; struct op_key op_curve[] = { { "CURVE", typ_val4, 1, 0 }, { "END", typ_end, 0, 0 } }; struct op_key op_size[] = { { "BOX", typ_switch, 1, 1 }, { "END", typ_end, 0, 0 } }; struct op_key op_join[] = { { "MITRE", typ_switch, 1, 0 }, { "ROUND", typ_switch, 1, 1 }, { "BEVEL", typ_switch, 1, 2 }, { "END", typ_end, 0, 0 } }; struct op_key op_cap[] = { { "BUTT", typ_switch, 1, 0 }, { "ROUND", typ_switch, 1, 1 }, { "SQUARE", typ_switch, 1, 2 }, { "END", typ_end, 0, 0 } }; struct op_key op_bitmap[] = { { "COLORS", typ_val, 1, 0 }, { "COMPRESS", typ_str, 2, 0 }, { "DPI", typ_val, 3, 0 }, { "GRAYSCALE", typ_switch, 4, 1 }, { "RESIZE", typ_switch, 5, 1 }, { "TYPE", typ_str, 6, 0 }, { "END", typ_end, 0, 0 } }; struct op_key op_bitmap_info[] = { { "TYPE", typ_str, 1, 0 }, { "END", typ_end, 0, 0 } }; struct op_key op_tex[] = { { "ADD", typ_val, 1, 0 }, { "NAME", typ_str, 2, 0 }, { "END", typ_end, 0, 0 } }; struct op_key op_draw[] = { { "NAME", typ_str, 2, 0 }, { "END", typ_end, 0, 0 } }; struct op_key op_orientation[] = { { "PORTRAIT", typ_switch, 1, 0 }, { "LANDSCAPE", typ_switch, 1, 1 }, { "END", typ_end, 0, 0} }; struct op_key op_colormap[] = { { "COLOR", typ_switch, 1, 1 }, { "PALETTE", typ_str, 2, 0 }, { "END", typ_end, 0, 0 } }; gle-graphics-4.2.4c/src/gle/token.cpp0000664000000000000000000001710611405446017016122 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ #include "all.h" #include "mem_limits.h" #include "token.h" #include "cutils.h" void add_tokf(char* pp1,int n,TOKENS tok, int* ntok, char* outbuff, int tj) { char* token_start; // for(vi=1;vi<=*ntok;vi++) printf("(add_tokf) tok[%d]=%s\n",vi,tok[vi]); (*ntok)++; // tok[*ntok] = outbuff; // // save the starting position // token_start = outbuff; // printf("tok=%u outbuf=%u\n",tok,outbuff); // for(vi=1;vi<=*ntok-1;vi++) printf("(add_tokf) tok[%d]=%s\n",vi,tok[vi]); // printf("outbuff=%s pp1=%s\n",outbuff,pp1); for (tj=0;tj280) subscript(); } endofline:; if (*ntok>0) { // if ( (*(*tok)[*ntok])=='\n' ) (*ntok)--; if (str_i_equals(tok[*ntok],"\n")) (*ntok)--; // if (strcmp((*tok)[*ntok]," ")==0) (*ntok)--; if (str_i_equals(tok[*ntok]," ")) (*ntok)--; // if (*ntok>0) p2 = (*tok)[*ntok] + strlen((*tok)[*ntok]) - 1; if (*ntok > 0) p2 = tok[*ntok] + strlen(tok[*ntok]) - 1; if (*p2 == 10) *p2 = 0; } // for(vi=1;vi<=*ntok;vi++) printf("(token) tok[%d]=%s\n",vi,tok[vi]); } /*--------------------------------------------------------------------------*/ char *find_non_space(char *cp) { for ( ; *cp!=0 ; cp++ ) { if (*cp!=' ' && *cp!=' ') break; } return cp; } /*--------------------------------------------------------------------------*/ char *find_term(char *cp) { char *start; start = cp; /* if (*cp=='"') { cp++; for (; *cp!=0 ; cp++ ) { if (*cp=='"') break; } return cp; } */ for (; *cp!=0 ; cp++ ) { if (*cp == '"') { cp++; for (; *cp!=0 ; cp++ ) { if (*cp=='"') if (*(cp-1)!='\\') break; } } if (term_table[(int)*cp]==static_cast(true)) break; } if (cp>start) return cp-1; if (*cp==' ' || *cp==' ') return cp-1; if (*cp==0) return cp-1; return cp; } /*--------------------------------------------------------------------------*/ void subscript(void) { // gprint("Subscript out of range in tokenizer (use shorter lines)\n"); printf("Subscript out of range in tokenizer (use shorter lines)\n"); } void token_data(char *lin,TOKENS tk,int *ntok,char *outbuff) { char *s; s = strtok(lin," ,=\t\n\x0a\x0c\x0d"); *ntok = 0; for (;s!=NULL;) { if (*s == '"' || *s == '!' || *s == ';') goto endofline; *ntok += 1; strcpy(outbuff,s); strcpy(tk[*ntok],outbuff); outbuff = outbuff + strlen(outbuff) + 1; s = strtok(NULL," ,=\t\n\x0a\x0c\x0d"); } /* printf("%d",*ntok);*/ endofline:; } bool get_on_off(TOKENS tk, int* ct) { if (str_i_equals(tk[(*ct)+1],"ON")) { (*ct)++; return true; } else if (str_i_equals(tk[(*ct)+1],"OFF")) { (*ct)++; return false; } else { return true; } } gle-graphics-4.2.4c/src/gle/builtin-double.h0000664000000000000000000000062411405446017017362 0ustar rootroot #ifndef BUILTINDOUBLE_H_ #define BUILTINDOUBLE_H_ class GLEBuiltInBinaryDoubleDouble : public GLEBuiltIn { public: GLEBuiltInBinaryDoubleDouble(const char* name, GLEBuiltInFactory* factory); }; class GLEBuiltInOpPlusDouble : public GLEBuiltInBinaryDoubleDouble { public: GLEBuiltInOpPlusDouble(GLEBuiltInFactory* factory); virtual void execute(GLEArrayImpl* stack, unsigned int top); }; #endif gle-graphics-4.2.4c/src/gle/surface/ffitcontour.cpp0000644000000000000000000003220411575346031020771 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ /* fitcf.f -- translated by f2c (version of 26 February 1990 17:38:00). You must link the resulting object file with the libraries: -lF77 -lI77 -lm -lc (in that order) */ /* "f2c.h" defines abs() -- conflict with the definition in */ /* changing the order solves the problem */ #if ( defined(__OS2__) && defined(__EMX__) ) || defined(__WIN32__) #include #include #include "f2c.h" #else #include "f2c.h" #include #include #endif doublereal gutre2_(real* a, real* b); void gd_message__(const char *s, int l); #define gprint printf /* -- FITCF */ int glefitcf_(integer* mode, real *x, real *y, integer* l, integer* m, real *u, real *v, integer* n) { /* System generated locals */ integer i_1, i_2; real r_1; static real equiv_1[1], equiv_2[1], equiv_3[1], equiv_4[1], equiv_5[1], equiv_6[1], equiv_7[1], equiv_8[1], equiv_9[1], equiv_10[1], equiv_11[1], equiv_12[1]; /* Local variables */ static integer mode0, i, j, k; #define r (equiv_10) #define z (equiv_10) #define a1 (equiv_7) #define a2 (equiv_8) static real a3, a4; #define b1 (equiv_9) #define b2 (equiv_1) #define b3 (equiv_2) #define b4 (equiv_3) static integer l0, m0, n0; #define m1 (equiv_9) static integer k5; #define m2 (equiv_1) #define m3 (equiv_2) #define m4 (equiv_3) #define p0 (equiv_5) static real p1; #define p2 (equiv_7) #define p3 (equiv_9) #define q0 (equiv_6) #define q1 (equiv_4) #define q2 (equiv_11) #define q3 (equiv_12) #define t2 (equiv_4) static real t3; #define w2 (equiv_11) #define w3 (equiv_12) #define x2 (equiv_5) static real x3; static integer modem1; static real x4, x5; #define y2 (equiv_6) static real y3, y4, y5; #define dz (equiv_8) static real rm; #define sw (equiv_10) static integer lm1, mm1; static real cos2, cos3, sin2, sin3; /* (Smooth Curve Fitting) */ /* This subroutine fits a smooth curve to a given set of input */ /* data points in an X-Y plane. It interpolates points in */ /* each interval between a pair of data points and generates a */ /* set of output points consisting of the input data points */ /* and the interpolated points. It can process either a */ /* single-valued function or a multiple-valued function. */ /* The input arguments are: */ /* MODE = mode of the curve (must be 1 or 2) */ /* = 1 for a single-valued function */ /* = 2 for multiple-valued function */ /* X = Array of dimension L storing the abscissas of input */ /* data points (in ascending or descending order for mode */ /* = 1) */ /* Y = Array of dimension L storing the ordinates of input */ /* data points */ /* L = Number of input data points (must be 2 or greater) */ /* M = Number of subintervals between each pair of input data */ /* points (must be 2 or greater). */ /* N = Number of output points */ /* = (L-1)*M+1 */ /* The output arguments are: */ /* U = Array of dimension N where the abscissas of output */ /* points are to be displayed */ /* V = Array of dimension N where the ordinates of output */ /* points are to be displayed */ /* Author: Hiroshi Akima, "Interpolation and Smooth Curve */ /* Fitting Based on Local Procedures", COMM. ACM 15, */ /* 914-918 (1972), and "A New Method of Interpolation */ /* and Smooth Curve Fitting Based on Local */ /* Procedures", J. ACM 17, 589-602 (1970). */ /* Corrections: M.R. Andersen, "Remark on Algorithm 433", ACM */ /* Trans. on Math. Software, 2, 208 (1976). */ /* (30-JAN-82) */ /* Preliminary processing */ /* Parameter adjustments */ --v; --u; --y; --x; /* Function Body */ mode0 = *mode; modem1 = mode0 - 1; l0 = *l; lm1 = l0 - 1; m0 = *m; mm1 = m0 - 1; n0 = *n; if (mode0 <= 0) { goto L320; } if (mode0 >= 3) { goto L320; } if (lm1 <= 0) { goto L330; } if (mm1 <= 0) { goto L340; } if (n0 != lm1 * m0 + 1) { gprint("Improper n value %d, wanted %d \n",n0,lm1 * m0 + 1); gprint("n0 %d, lm1 %d, m0 %d l0 %d \n",n0,lm1,m0,l0); goto L350; } switch (mode0) { case 1: goto L10; case 2: goto L60; } L10: i = 2; if ((r_1 = x[1] - x[2]) < (float)0.) { goto L20; } else if (r_1 == 0) { gprint("Identical x values 1, %g %g \n",(double) x[1], (double) x[2]); goto L360; } else { goto L40; } L20: if (l0 <= 2) { goto L80; } i_1 = l0; for (i = 3; i <= i_1; ++i) { if ((r_1 = x[i - 1] - x[i]) < (float)0.) { goto L30; } else if (r_1 == 0) { gprint("Identical x values i, %g %g \n",(double) x[i-1], (double) x[i]); goto L360; } else { goto L370; } L30: ;} goto L80; L40: if (l0 <= 2) { goto L80; } i_1 = l0; for (i = 3; i <= i_1; ++i) { if ((r_1 = x[i - 1] - x[i]) < (float)0.) { goto L370; } else if (r_1 == 0) { gprint("Identical x aavalues i, %g %g \n",(double) x[i-1], (double) x[i]); goto L360; } else { goto L50; } L50: ;} goto L80; L60: i_1 = l0; for (i = 2; i <= i_1; ++i) { if (x[i - 1] != x[i]) { goto L70; } if (y[i - 1] == y[i]) { goto L380; } L70: ;} L80: k = n0 + m0; i = l0 + 1; i_1 = l0; for (j = 1; j <= i_1; ++j) { k -= m0; --i; u[k] = x[i]; /* L90: */ v[k] = y[i]; } rm = (real) m0; rm = (float)1. / rm; /* Main DO-loop */ k5 = m0 + 1; i_1 = l0; for (i = 1; i <= i_1; ++i) { /* Routines to pick up necessary X and Y values and to */ /* estimate them if necessary */ if (i > 1) { goto L130; } x3 = u[1]; y3 = v[1]; x4 = u[m0 + 1]; y4 = v[m0 + 1]; a3 = x4 - x3; *b3 = y4 - y3; if (modem1 == 0) { *m3 = *b3 / a3; } if (l0 != 2) { goto L140; } a4 = a3; *b4 = *b3; L100: switch (mode0) { case 1: goto L120; case 2: goto L110; } L110: *a2 = a3 + a3 - a4; *a1 = *a2 + *a2 - a3; L120: *b2 = *b3 + *b3 - *b4; *b1 = *b2 + *b2 - *b3; switch (mode0) { case 1: goto L180; case 2: goto L210; } L130: *x2 = x3; *y2 = y3; x3 = x4; y3 = y4; x4 = x5; y4 = y5; *a1 = *a2; *b1 = *b2; *a2 = a3; *b2 = *b3; a3 = a4; *b3 = *b4; if (i >= lm1) { goto L150; } L140: k5 += m0; x5 = u[k5]; y5 = v[k5]; a4 = x5 - x4; *b4 = y5 - y4; if (modem1 == 0) { *m4 = *b4 / a4; } goto L160; L150: if (modem1 != 0) { a4 = a3 + a3 - *a2; } *b4 = *b3 + *b3 - *b2; L160: if (i == 1) { goto L100; } switch (mode0) { case 1: goto L170; case 2: goto L200; } /* Numerical differentiation */ L170: *t2 = t3; L180: *w2 = (r_1 = *m4 - *m3, dabs(r_1)); *w3 = (r_1 = *m2 - *m1, dabs(r_1)); *sw = *w2 + *w3; if (*sw != (float)0.) { goto L190; } *w2 = (float).5; *w3 = (float).5; *sw = (float)1.; L190: t3 = (*w2 * *m2 + *w3 * *m3) / *sw; if (i - 1 <= 0) { goto L310; } else { goto L240; } L200: cos2 = cos3; sin2 = sin3; L210: *w2 = (r_1 = a3 * *b4 - a4 * *b3, dabs(r_1)); *w3 = (r_1 = *a1 * *b2 - *a2 * *b1, dabs(r_1)); if (*w2 + *w3 != (float)0.) { goto L220; } *w2 = gutre2_(&a3, b3); *w3 = gutre2_(a2, b2); L220: cos3 = *w2 * *a2 + *w3 * a3; sin3 = *w2 * *b2 + *w3 * *b3; *r = cos3 * cos3 + sin3 * sin3; if (*r == (float)0.) { goto L230; } *r = sqrt(*r); cos3 /= *r; sin3 /= *r; L230: if (i - 1 <= 0) { goto L310; } else { goto L250; } /* Determination of the coefficients */ L240: *q2 = ((*m2 - *t2) * (float)2. + *m2 - t3) / *a2; *q3 = (-(doublereal)(*m2) - *m2 + *t2 + t3) / (*a2 * *a2); goto L260; L250: *r = gutre2_(a2, b2); p1 = *r * cos2; *p2 = *a2 * (float)3. - *r * (cos2 + cos2 + cos3); *p3 = *a2 - p1 - *p2; *q1 = *r * sin2; *q2 = *b2 * (float)3. - *r * (sin2 + sin2 + sin3); *q3 = *b2 - *q1 - *q2; goto L280; /* Computation of the polynomials */ L260: *dz = *a2 * rm; *z = (float)0.; i_2 = mm1; for (j = 1; j <= i_2; ++j) { ++k; *z += *dz; u[k] = *p0 + *z; /* L270: */ v[k] = *q0 + *z * (*q1 + *z * (*q2 + *z * *q3)); } goto L300; L280: *z = (float)0.; i_2 = mm1; for (j = 1; j <= i_2; ++j) { ++k; *z += rm; u[k] = *p0 + *z * (p1 + *z * (*p2 + *z * *p3)); /* L290: */ v[k] = *q0 + *z * (*q1 + *z * (*q2 + *z * *q3)); } L300: ++k; L310: ;} goto L410; /* Error exit */ L320: gd_message__("Cannot SMOOTH: Mode out of proper range 1..2", 29L); goto L400; L330: gd_message__("Cannot SMOOTH: L = 1 or less", 13L); goto L400; L340: gd_message__("Cannot SMOOTH: M = 1 or less", 13L); goto L400; L350: gd_message__("Cannot SMOOTH: Improper N value", 16L); goto L400; L360: gd_message__("Cannot SMOOTH: Identical X values", 18L); goto L390; L370: gd_message__("Cannot SMOOTH: X values out of sequence", 24L); goto L390; L380: gd_message__("Cannot SMOOTH: Identical X and Y values", 24L); L390: L400: L410: return 0; } /* glefitcf_ */ #undef sw #undef dz #undef y2 #undef x2 #undef w3 #undef w2 #undef t2 #undef q3 #undef q2 #undef q1 #undef q0 #undef p3 #undef p2 #undef p0 #undef m4 #undef m3 #undef m2 #undef m1 #undef b4 #undef b3 #undef b2 #undef b1 #undef a2 #undef a1 #undef z #undef r /* -- GUTRE2 */ doublereal gutre2_(real* a, real* b) { /* Initialized data */ static real zero = (float)0.; static real two = (float)2.; static real four = (float)4.; /* System generated locals */ real ret_val, r_1; /* Local variables */ static real aabs, babs, r, s; /* (Euclidean Norm of 2-Vector) */ /* Return SQRT(A**2+B**2) without doing a square root, and */ /* without destructive underflow or overflow. */ /* (Cleve Moler, University of New Mexico) */ /* (09-APR-82) */ aabs = dabs(*a); babs = dabs(*b); /* --- IF (BABS .GT. AABS) THEN -- SWAP A AND B */ if (babs <= aabs) { goto L10; } r = babs; babs = aabs; aabs = r; /* --- END IF */ /* --- IF (BABS .EQ. ZERO) THEN -- Special case sudden exit */ L10: if (babs != zero) { goto L20; } ret_val = aabs; goto L40; /* --- END IF */ /* --- DO FOREVER */ L20: /* Computing 2nd power */ r_1 = babs / aabs; r = r_1 * r_1; /* --- IF ((TWO+R) .EQ. TWO) THEN -- Converged */ if (two + r != two) { goto L30; } ret_val = aabs; goto L40; /* --- END IF */ L30: s = r / (four + r); aabs += two * s * aabs; babs = s * babs; /* --- END FOREVER */ goto L20; L40: return ret_val; } /* gutre2_ */ gle-graphics-4.2.4c/src/gle/surface/Makefile.os20000664000000000000000000000553311405446017020071 0ustar rootroot######################################################################## # # # GLE - Graphics Layout Engine # # # # Modified BSD License # # # # Copyright (C) 2009 GLE. # # # # Redistribution and use in source and binary forms, with or without # # modification, are permitted provided that the following conditions # # are met: # # # # 1. Redistributions of source code must retain the above copyright # # notice, this list of conditions and the following disclaimer. # # # # 2. Redistributions in binary form must reproduce the above # # copyright notice, this list of conditions and the following # # disclaimer in the documentation and/or other materials provided with # # the distribution. # # # # 3. The name of the author may not be used to endorse or promote # # products derived from this software without specific prior written # # permission. # # # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR # # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY # # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE # # GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER # # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN # # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # # ######################################################################## # # makefile.gcc for GLE v4.0 # for compilation with gcc # # include ../../../config.i include ../../../config.os2 # include files.txt all: $(OBJECTS) $(OBJECTS): $(INCLUDES) clean: -$(RM) $(OBJECTS) gle-graphics-4.2.4c/src/gle/surface/f2c.h0000644000000000000000000001504011405446017016542 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ /* f2c.h -- Standard Fortran to C header file */ /** barf [ba:rf] 2. "He suggested using FORTRAN, and everybody barfed." - From The Shogakukan DICTIONARY OF NEW ENGLISH (Second edition) */ #ifndef F2C_INCLUDE #define F2C_INCLUDE typedef int integer; typedef char *address; typedef short int shortint; typedef double real; typedef double doublereal; typedef struct { real r, i; } complex; typedef struct { doublereal r, i; } doublecomplex; typedef int logical; typedef short int shortlogical; #define TRUE_ (1) #define FALSE_ (0) /* Extern is for use with -E */ #ifndef Extern #define Extern extern #endif /* I/O stuff */ #ifdef f2c_i2 /* for -i2 */ typedef short flag; typedef short ftnlen; typedef short ftnint; #else typedef int flag; typedef int ftnlen; typedef int ftnint; #endif /*external read, write*/ typedef struct { flag cierr; ftnint ciunit; flag ciend; char *cifmt; ftnint cirec; } cilist; /*internal read, write*/ typedef struct { flag icierr; char *iciunit; flag iciend; char *icifmt; ftnint icirlen; ftnint icirnum; } icilist; /*open*/ typedef struct { flag oerr; ftnint ounit; char *ofnm; ftnlen ofnmlen; char *osta; char *oacc; char *ofm; ftnint orl; char *oblnk; } olist; /*close*/ typedef struct { flag cerr; ftnint cunit; char *csta; } cllist; /*rewind, backspace, endfile*/ typedef struct { flag aerr; ftnint aunit; } alist; /* inquire */ typedef struct { flag inerr; ftnint inunit; char *infile; ftnlen infilen; ftnint *inex; /*parameters in standard's order*/ ftnint *inopen; ftnint *innum; ftnint *innamed; char *inname; ftnlen innamlen; char *inacc; ftnlen inacclen; char *inseq; ftnlen inseqlen; char *indir; ftnlen indirlen; char *infmt; ftnlen infmtlen; char *inform; ftnint informlen; char *inunf; ftnlen inunflen; ftnint *inrecl; ftnint *innrec; char *inblank; ftnlen inblanklen; } inlist; #define VOID void union Multitype { /* for multiple entry points */ shortint h; integer i; real r; doublereal d; complex c; doublecomplex z; }; typedef union Multitype Multitype; typedef int Long; struct Vardesc { /* for Namelist */ char *name; char *addr; Long *dims; int type; }; typedef struct Vardesc Vardesc; struct Namelist { char *name; Vardesc **vars; int nvars; }; typedef struct Namelist Namelist; #define abs(x) ((x) >= 0 ? (x) : -(x)) #define dabs(x) (doublereal)abs(x) #define min(a,b) ((a) <= (b) ? (a) : (b)) #define max(a,b) ((a) >= (b) ? (a) : (b)) #define dmin(a,b) (doublereal)min(a,b) #define dmax(a,b) (doublereal)max(a,b) /* procedure parameter types for -A and -C++ */ #define F2C_proc_par_types 1 #ifdef __cplusplus typedef int /* Unknown procedure type */ (*U_fp)(...); typedef shortint (*J_fp)(...); typedef integer (*I_fp)(...); typedef real (*R_fp)(...); typedef doublereal (*D_fp)(...), (*E_fp)(...); typedef /* Complex */ VOID (*C_fp)(...); typedef /* Double Complex */ VOID (*Z_fp)(...); typedef logical (*L_fp)(...); typedef shortlogical (*K_fp)(...); typedef /* Character */ VOID (*H_fp)(...); typedef /* Subroutine */ int (*S_fp)(...); #else typedef int /* Unknown procedure type */ (*U_fp)(); typedef shortint (*J_fp)(); typedef integer (*I_fp)(); typedef real (*R_fp)(); typedef doublereal (*D_fp)(), (*E_fp)(); typedef /* Complex */ VOID (*C_fp)(); typedef /* Double Complex */ VOID (*Z_fp)(); typedef logical (*L_fp)(); typedef shortlogical (*K_fp)(); typedef /* Character */ VOID (*H_fp)(); typedef /* Subroutine */ int (*S_fp)(); #endif /* E_fp is for real functions when -R is not specified */ typedef doublereal E_f; /* real function with -R not specified */ /* undef any lower-case symbols that your C compiler predefines, e.g.: */ #ifndef Skip_f2c_Undefs #undef cray #undef gcos #undef mc68010 #undef mc68020 #undef mips #undef pdp11 #undef sgi #undef sparc #undef sun #undef sun2 #undef sun3 #undef sun4 #undef u370 #undef u3b #undef u3b2 #undef u3b5 #undef unix #undef vax #endif #endif gle-graphics-4.2.4c/src/gle/surface/Makefile.vc0000664000000000000000000000551111447671544020005 0ustar rootroot######################################################################## # # # GLE - Graphics Layout Engine # # # # Modified BSD License # # # # Copyright (C) 2009 GLE. # # # # Redistribution and use in source and binary forms, with or without # # modification, are permitted provided that the following conditions # # are met: # # # # 1. Redistributions of source code must retain the above copyright # # notice, this list of conditions and the following disclaimer. # # # # 2. Redistributions in binary form must reproduce the above # # copyright notice, this list of conditions and the following # # disclaimer in the documentation and/or other materials provided with # # the distribution. # # # # 3. The name of the author may not be used to endorse or promote # # products derived from this software without specific prior written # # permission. # # # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR # # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY # # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE # # GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER # # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN # # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # # ######################################################################## # # makefile.vc for GLE v4.0 # for compilation with MS vc++ .net # # !include ..\..\..\config.vc # !include files.txt all: $(OBJECTS) $(OBJECTS): $(INCLUDES) clean: -erase $(OBJECTS) gle-graphics-4.2.4c/src/gle/surface/hide.cpp0000664000000000000000000007514711660563604017361 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ /* 3d Surface plotting with hidden line removal */ #include "../all.h" #include "../gprint.h" #include "../core.h" #include "../cutils.h" #include "../gle-block.h" #include "gsurface.h" typedef int int32; void initminmax(void); void init_user(void); void nice_ticks(float *dticks, float *gmin,float *gmax , float *t1,float *tn); void grid_back(int nx, int ny, float z1, float z2); void skirt(float *z,int ix1, int iy1, float minz); void find_splits(int nx, int ny, int *splitx, int *splity); void fxy_polar(float dx,float dy,float *radius,float *angle); void fpolar_xy(float r, float angle, float *dx, float *dy); void draw_zaxis(struct GLEAxis3D *ax, int nx, int ny, float minz, float maxz); void draw_axis(struct GLEAxis3D *ax, int nx, int ny, float minz, float maxz); void draw_maintitle(); void hide(float *z,int nx, int ny, float minz, float maxz, struct surface_struct *sff); void touser3(float x, float y, float z, float *uux, float *uuy, float *uuz); void touser(float x, float y, float z, float *uux, float *uuy); void matmove(float i[4][4],float x, float y, float z); void seth2(int rx1, int ry1, float rz1, int rx2, int ry2, float rz2); void matscale(float i[4][4],float x, float y, float z); void matun(float m[4][4]); void matmul(float a[4][4],float b[4][4]); void matrx(float i[4][4], float angle); void matry(float i[4][4], float angle); void matrz(float i[4][4], float angle); void vector_line(int x1, float y1, int x2, float y2); void draw_riselines(int nx, int ny,float minz, float maxz); void move3d(float x, float y, float z); void line3d(float x, float y, float z); void cube(float x, float y, float z1, float z2); void horizon(float *z,int ix1,int iy1,int ix2,int iy2); void horizon2(float *z,int ix1,int iy1,int ix2,int iy2); void horizonv(float *z,int ix1,int iy1,int ix2,int iy2); void horizonv2(float *z,int ix1,int iy1,int ix2,int iy2); void hclipvec(int x1, float y1, int x2, float y2, int sethi); void hclipvec2(int x1, float y1, int x2, float y2, int sethi); void clipline(float x1, float y1, float z1, float x2, float y2, float z2); void draw_markers(int nx, int ny); void matshow(const char *s, float m[4][4]); void show_horizon(); float base; extern int ngerror; extern int batch_only; FILE *fp; float image[4][4]; static double min_zed; void init_user() { matun(image); } float smin_x,smax_x,smin_y,smax_y,smin_z,smax_z; void g_set_color_if_defined(const char* s) { if (s != NULL && s[0] != 0) { GLERC color = pass_color_var(s); g_set_color(color); } } void initminmax() { smin_x = 10e10; smax_x = -10e10; smin_y = 10e10; smax_y = -10e10; smin_z = 10e10; smax_z = -10e10; } void setaminmax(float x, float *x1, float *x2) { if (x < *x1) *x1 = x; if (x > *x2) *x2 = x; } void setminmax(float x,float y,float z) { setaminmax(x,&smin_x,&smax_x); setaminmax(y,&smin_y,&smax_y); setaminmax(z,&smin_z,&smax_z); } #define RERR (0.0001) /* Rounding error */ int MAXH; #define deg(d) ((d)*3.14159254/180) float *h,*h2; /* h2 is the underneath */ float eye_x,eye_y,eye_depth; float vdist=0; /* 1=eye touching front of picture, infinity= cube back */ float map_mul,map_sub; float maxdepth; float xmargin = 2; float ymargin = 1.5; int doy=true; int dox=true; /* false */ int nnx; int vsign=1; static struct surface_struct sf; float get_h(int i) { if (i < 0 || i >= MAXH) { return 0.0; } else { return h[i]; } } void set_h(int i, float v) { if (!(i < 0 || i >= MAXH)) { h[i] = v; } } float get_h2(int i) { if (i < 0 || i >= MAXH) { return GLE_INF; } else { return h2[i]; } } void set_h2(int i, float v) { if (!(i < 0 || i >= MAXH)) { h2[i] = v; } } void hide(float *z ,int nx, int ny, float minz, float maxz, struct surface_struct *sff) { int i,x,y; float r,angle; float width,height; float ux,uy,uz,scalex,scaley,ux3,uy3,ux2; int splitx, splity; int x1,x2; g_gsave(); g_set_line_cap(1); /* round */ sf = *sff; /* Make a local copy of all the parameters */ /* unit image */ init_user(); /* the view command specifies three parameters: eye_x, eye_y, and vdist*/ eye_x = sf.eye_x; eye_y = sf.eye_y; vdist = sf.vdist; /* size command specifies screenx and screeny */ base = sf.screenx; xmargin = sf.screenx*2/10.0; ymargin = sf.screeny*1.5/10.0; width = sf.screenx-.5; height = sf.screeny-.5; if (sf.title != NULL) height = height -.7; dox = sf.xlines_on; doy = sf.ylines_on; /* MAXH is value of harray */ MAXH = sf.maxh; if (MAXH==0) MAXH = 5000; h = (float*)malloc((MAXH+1)*sizeof(float)); h2 = (float*)malloc((MAXH+1)*sizeof(float)); if (h==NULL || h2==NULL) { gprint("Was not able to allocate horizon arrays %d \n",MAXH); return; } min_zed = minz; nnx = nx; /* save dimensions for use in subroutine */ vsign = 1; /* doing top half */ for (i=0; i sizex, sizey, sizez */ if (sf.sizez==0) sf.sizez = (sf.sizex+sf.sizey)/2.0; matscale(image,sf.sizex/(float) nx,sf.sizey/(float) ny,sf.sizez/(maxz-minz)); /* positive z comes towards the viewer */ //matshow("Before rotate", image); //cout << "sizex = " << sf.sizex << " sizey = " << sf.sizey << endl; //cout << "screenx = " << sf.screenx << " screeny = " << sf.screeny << endl; /* 60 50 20 , 80 0 0 */ matrx(image,deg(sf.xrotate)); /* clockwise holding right hand side */ matry(image,deg(sf.yrotate)); /* clockwise holding top */ matrz(image,deg(sf.zrotate)); /* clockwise holding front */ /* now rotate cube so line from 0,0,0 --> 0,0,1 is vertical on screen */ touser(0.0,0.0,0.0,&ux,&uy); touser(0.0,0.0,1.0,&ux3,&uy3); fxy_polar(ux3-ux,uy3-uy,&r,&angle); matrz(image,deg(-90.0+angle)); /* clockwise holding front */ //matshow("After rotate", image); /* Normalize image, shift to touch x=0, y=0, z=0 */ initminmax(); for (x=0; x width) scalex = width/(smax_x-smin_x); if (smax_y > height) scaley = height/(smax_y-smin_y); if (scalex < scaley) scaley = scalex; image[0][3] = image[0][3] - smin_x + xmargin/scaley; image[1][3] = image[1][3] - smin_y + ymargin/scaley; image[2][3] = image[2][3] - smax_z; initminmax(); for (x=0; x width) scalex = width/smax_x; if (smax_y > height) scaley = height/smax_y; if (scalex < scaley) scaley = scalex; matscale(image,scaley,scaley,scaley); initminmax(); for (x=0; x x2) x2 = (int)ux; touser(x,y,maxz,&ux,&uy); if (ux < x1) x1 = (int)ux; if (ux > x2) x2 = (int)ux; } } /* map x1 -- x2 onto 2 -- 998 */ x1--; x2++; map_sub = x1; map_mul = (MAXH-100)/((double) x2-x1); /* ---------------------------------------------------- */ /* if the closest line of constant X is not one of the edges then split object at EYE(X) */ find_splits(nx,ny,&splitx,&splity); /* if ux of nx,0,0 is less than ux of 0,ny,0 then */ /* eye is closer to XAXIS then*/ /* (lines of constant x will be horizontal */ /* process lines of constant X in usual order, front to back*/ /* After each x line, draw lines of constant y between lastx and nextx */ /* else, do y first and x betweens.*/ touser(nx,0,0,&ux,&uy); touser(0,ny,0,&ux2,&uy); /* Now draw bottom half */ g_set_color_if_defined(sf.bot_color); g_set_line_style(sf.bot_lstyle); vsign = -1; /* reverse tests for bottom half */ for (i=0; i=0; x--) { if (dox) for (y=splity; y>0; y--) horizonv2(z,x,y,x,y-1); /* x */ if (dox) for (y=splity+1; y0) horizonv2(z,x,y-1,x,y); for (y=splity; y>=0; y--) if (x>0) if (doy) horizonv2(z,x,y,x-1,y); for (y=splity+1; y0) if (doy) horizonv2(z,x,y,x-1,y); } } else { for (y=0; y0; x--) horizonv2(z,x,y,x-1,y); /* y */ if (doy) for (x=splitx+1; x0) horizonv2(z,x-1,y,x,y); for (x=splitx; x>=0; x--) if (y=0; x--) { if (dox) for (y=splity; y>0; y--) /* X */ horizonv(z,x,y,x,y-1); if (dox) for (y=splity+1; y0) /* Constant X (this does join, should be earlier) */ horizonv(z,x,y-1,x,y); for (y=splity; y>=0; y--) if (x>0) if (doy) /* Constant Y */ horizonv(z,x,y,x-1,y); for (y=splity+1; y0) if (doy) /* Constant Y */ horizonv(z,x,y,x-1,y); } } else { /* Go from y = splity to zero, then splity+1 to ny-1 */ for (y=0; y0; x--) /* Constant y */ horizonv(z,x,y,x-1,y); if (doy) for (x=splitx+1; x0) /* Constant y (this does join, should be first) */ horizonv(z,x-1,y,x,y); for (x=splitx; x>=0; x--) if (y0; x--) seth2(x,0,z[x],x-1,0,z[x-1]); for (y=0; y=0; y--) skirt(z,nx-1,y,minz); for (y=splity+1; y=0; x--) skirt(z,x,0,minz); for (x=splitx+1; x=0; x--) seth2(x,0,minz,x-1,0,minz); for (y= -1; y0; x--) seth2(x,0,z[x],x-1,0,z[x-1]); for (y=0; ytype>1) return; if (!ax->on) return; if (ax->type==0) { touser(0,0,minz,&ux,&uy); touser(nx-1,0,minz,&ux2,&uy2); } else { touser(nx-1,0,minz,&ux,&uy); touser(nx-1,ny-1,minz,&ux2,&uy2); } g_set_color(pass_color_var(ax->color)); if (!sf.cube_on) { g_move(ux,uy); g_line(ux2,uy2); } fxy_polar(ux2-ux,uy2-uy,&r,&a); ta = a ; a = a - 90; if (ax->ticklen == 0) ax->ticklen = base*.001; r = ax->ticklen; r2 = ax->ticklen+base*.02+ax->dist; fpolar_xy(r,a,&ux2,&uy2); fpolar_xy(r2,a,&ux3,&uy3); DVAL(ax->hei,base/60.0); g_set_hei(ax->hei); g_set_just(pass_justify("TC")); nice_ticks(&ax->step, &ax->min, &ax->max, &t1, &tn); for (x=t1; x<=.00001+ax->max; x+=ax->step) { if (ax->type==0) { xx = (nx-1)*(x-ax->min)/(ax->max - ax->min); touser(xx,0,minz,&ux,&uy); } else { xx = (ny-1)*(x-ax->min)/(ax->max - ax->min); touser(nx-1,xx,minz,&ux,&uy); } g_move(ux,uy); g_line(ux+ux2,uy+uy2); g_move(ux+ux3,uy+uy3); if (fabs(x)<(.0001*ax->step)) x = 0; sprintf(buff,"%g",x); g_gsave(); g_rotate(ta); if (ax->nolast && x> (ax->max - .5*(ax->step))) /* do nothing */ ; else if (ax->nofirst && x==t1) /* do nothing */; else g_text(buff); g_grestore(); } g_set_just(pass_justify("TC")); /* Now draw the title for this axis */ if (ax->title == NULL) return; g_set_color(pass_color_var(ax->title_color)); DVAL(ax->title_hei,base/40.0); g_set_hei(ax->title_hei); if (ax->type==0) { touser((nx-1)/2.0,0,minz,&ux,&uy); } else { touser(nx-1,(ny-1)/2.0,minz,&ux,&uy); } DVAL(ax->title_dist,base/17.0); r = ax->title_dist; fpolar_xy(r,a,&ux2,&uy2); g_gsave(); g_move(ux+ux2,uy+uy2); g_rotate(ta); g_text((char*)ax->title); g_grestore(); } void draw_zaxis(struct GLEAxis3D *ax, int nx, int ny, float minz, float maxz) { float ux,uy,ux2,uy2,ux3,uy3,r,a,r2,x,t1,tn; char buff[80]; if (!ax->on) return; touser(0,0,minz,&ux,&uy); touser(0,0,maxz,&ux2,&uy2); g_set_color(pass_color_var(ax->color)); if (!sf.cube_on) { g_move(ux,uy); g_line(ux2,uy2); } fxy_polar(ux2-ux,uy2-uy,&r,&a); a = a + 90; if (ax->ticklen == 0) ax->ticklen = base*.001; r = ax->ticklen; r2 = ax->ticklen+base*.02+ax->dist; fpolar_xy(r,a,&ux2,&uy2); fpolar_xy(r2,a,&ux3,&uy3); DVAL(ax->hei,base/60.0); g_set_hei(ax->hei); g_set_just(pass_justify("RC")); nice_ticks(&ax->step, &ax->min, &ax->max, &t1, &tn); for (x=t1; x<=.0001+ax->max; x+=ax->step) { touser(0,0,x,&ux,&uy); g_move(ux,uy); g_line(ux+ux2,uy+uy2); g_move(ux+ux3,uy+uy3); if (fabs(x)<(.0001*ax->step)) x = 0; sprintf(buff,"%g",x); g_text(buff); } g_set_just(pass_justify("BC")); /* Now draw the title for this axis */ if (ax->title == NULL) return; g_set_color(pass_color_var(ax->title_color)); DVAL(ax->title_hei,base/40.0); g_set_hei(ax->title_hei); touser(0,0,(maxz-minz)/2.0+minz,&ux,&uy); DVAL(ax->title_dist,base/17.0); r = ax->title_dist; fpolar_xy(r,a,&ux2,&uy2); g_gsave(); g_move(ux+ux2,uy+uy2); g_rotate(a-90); g_text((char*)ax->title); g_grestore(); } void move3d(float x, float y, float z) { float ux,uy; touser(x,y,z,&ux,&uy); g_move(ux,uy); #if (defined DJ || defined EMXOS2) /* a.r. for surface markers */ d_move_really(ux,uy); #endif } void line3d(float x, float y, float z) { float ux,uy; touser(x,y,z,&ux,&uy); g_line(ux,uy); } double xg3d(double x, double y, double z) { float ux, uy; touser((float)x, (float)y, (float)z, &ux, &uy); return ux; } double yg3d(double x, double y, double z) { float ux, uy; touser((float)x, (float)y, (float)z, &ux, &uy); return uy; } void show_horizon() { int i; g_set_color(pass_color_var("RED")); g_move(unmaph(0), get_h(0)); for (i=0;i<900;i++) { g_line(unmaph(i), get_h(i)); } g_set_color(pass_color_var("BLUE")); g_move(unmaph(0), get_h2(0)); for (i=0;i<900;i++) { g_line(unmaph(i), get_h2(i)); } } void skirt(float *z,int ix1, int iy1, float minz) { /* touser(ix1,iy1,z[ix1+iy1* (int32) nnx],&ux,&y1); x1 = maph(ux); touser(ix1,iy1,minz,&ux,&y2); x2 = maph(ux); vector_line(x1,y1,x2,y2); */ clipline(ix1,iy1,z[ix1+iy1* (int32) nnx],ix1,iy1,minz); } void horizonv(float *z,int ix1,int iy1,int ix2,int iy2) { float ux; int x1,x2,putback=false; float y1,y2; if (sf.zcolour[0]!=0 && (z[ix1 + iy1 * (int32)nnx] <= min_zed || z[ix2 + iy2 * (int32)nnx] <= min_zed)) { putback = true; g_set_color_if_defined(sf.zcolour); } touser(ix1,iy1,z[ix1 + iy1 * (int32)nnx],&ux,&y1); x1 = (int)maph(ux); touser(ix2,iy2,z[ix2 + iy2 * (int32)nnx],&ux,&y2); x2 = (int)maph(ux); hclipvec(x1,y1,x2,y2,true); if (putback) { putback = true; g_set_color_if_defined(sf.top_color); } } int doclipping=true; void clipline(float x1, float y1, float z1, float x2, float y2, float z2) { float ux,uy,ux2,uy2; int ix1,ix2; touser(x1,y1,z1,&ux,&uy); touser(x2,y2,z2,&ux2,&uy2); if (!doclipping) { g_move(ux,uy); g_line(ux2,uy2); return;} ix1 = (int)maph(ux); ix2 = (int)maph(ux2); /* printf("hclipvec %d %g %d %g \n",ix1,uy,ix2,uy2); scr_getch(); */ if (abs(ix1-ix2)==1) if (fabs(uy2-uy)>.3) ix1 = ix2; hclipvec(ix1,uy,ix2,uy2,false); hclipvec2(ix1,uy,ix2,uy2,false); } void horizonv2(float *z,int ix1,int iy1,int ix2,int iy2) { float ux; int x1,x2; float y1,y2; touser(ix1,iy1,z[ix1+iy1* (int32) nnx],&ux,&y1); x1 = (int)maph(ux); touser(ix2,iy2,z[ix2+iy2* (int32) nnx],&ux,&y2); x2 = (int)maph(ux); hclipvec2(x1,y1,x2,y2,true); } void hclipvec(int x1, float y1, int x2, float y2, int sethi) { float v,sy = 0,step; int i,sd,sx = 0; if (x1==x2) { /* printf("VEC %d %g %d %g h=%g\n",x1,y1,x2,y2,h[x1]); scr_getch(); */ if (y2 y1) y1 = get_h(x1); vector_line(x1,y1,x2,y2); if (sethi) set_h(x1, y2); } return; } step = (y2-y1)/(x2-x1); sd = -1; if (x1 v) { if (sethi) vector_line(sx,sy,i-sd,v-step); else vector_line(sx,sy,i-sd,v-step); visible = false; } else if (sethi) set_h(i, v); } else { if (get_h(i) <= v+.0001) { sx = i; sy = v; visible = true; if (sethi) set_h(i, v); } } } /* draw end part of line */ if (visible) vector_line(sx,sy,x2,y2); } void seth2(int rx1, int ry1, float rz1, int rx2, int ry2, float rz2) { float vx1,vx2,y1,y2; int x1,x2; float v,step; int i,sd; /* printf("seth2 %d %d %g, %d %d %g \n",rx1,ry1,rz1,rx2,ry2,rz2); scr_getch(); */ touser(rx1,ry1,rz1,&vx1,&y1); touser(rx2,ry2,rz2,&vx2,&y2); x1 = (int)maph(vx1); x2 = (int)maph(vx2); if (x1<0) x1 = 0; if (x2<0) x2 = 0; if (x1>MAXH) x1 = MAXH-1; if (x2>MAXH) x2 = MAXH-1; if (x1==x2) { if (y2>y1) {v = y1; y1 = y2; y2 = v;} if (get_h2(x1) > y2) set_h2(x1, y2); return; } step = (y2-y1)/(x2-x1); sd = -1; if (x1 v) set_h2(i, v); } } void vector_line_d(double x1, double y1, double x2, double y2) { g_move(unmaph(x1),y1); g_line(unmaph(x2),y2); } void hclipvec2(int x1, float y1, int x2, float y2, int sethi) { if (x1 == x2) { if (y2 > y1) { double v = y1; y1 = y2; y2 = v; } if (get_h2(x1) > y2) { if (get_h2(x1) < y1) y1 = get_h2(x1); vector_line(x1,y1,x2,y2); if (sethi) set_h2(x1, y2); } return; } GLELinearEquation vec, horiz; vec.fit(x1, y1, x2, y2); int sx = 0; int sd = (x1 < x2) ? 1 : -1; bool visible = false; for (int i = x1; sd*i <= sd*x2; i+=sd) { double v = vec.apply(i); if (visible) { if (get_h2(i) < v) { // drops below horizon -> invisible visible = false; // find exact point from where on invisible horiz.fit(i-sd, get_h2(i-sd), i, get_h2(i)); double xp = vec.intersect(&horiz); vector_line_d(sx, vec.apply(sx), xp, vec.apply(xp)); } else if (sethi) set_h2(i, v); } else { if (get_h2(i) >= v-.0001) { // back above horizon -> again visible visible = true; if (i == x1) { sx = i; } else { horiz.fit(i-sd, get_h2(i-sd), i, get_h2(i)); sx = vec.intersect(&horiz); } if (sethi) set_h2(i, v); } } } /* draw end part of line */ if (visible) vector_line(sx, vec.apply(sx), x2, y2); } void vector_line(int x1, float y1, int x2, float y2) { if (x2<0 || x1<0) { gprint("Less than zero \n"); } g_move(unmaph(x1),y1); g_line(unmaph(x2),y2); } void touser(float x, float y, float z, float *uux, float *uuy) { float uz,ux,uy,p,q; ux = image[0][0]*x + image[0][1]*y + image[0][2]*z + image[0][3]; uy = image[1][0]*x + image[1][1]*y + image[1][2]*z + image[1][3]; uz = image[2][0]*x + image[2][1]*y + image[2][2]*z + image[2][3]; ux -= eye_x; uy -= eye_y; if (maxdepth!=0) { p = vdist; /* almost touching infinity */ q = uz/maxdepth; /* z is negative at deep end , zero at top */ ux = ux - ux*p*q/(1-p+p*q); uy = uy - uy*p*q/(1-p+p*q); /* (my old transformation) ux = uz*(-ux/eye_depth)+ux; uy = uz*(-uy/eye_depth)+uy; */ } *uux = ux + eye_x; *uuy = uy + eye_y; } void touser3(float x, float y, float z, float *uux, float *uuy, float *uuz) { float uz,ux,uy; ux = image[0][0]*x + image[0][1]*y + image[0][2]*z + image[0][3]; uy = image[1][0]*x + image[1][1]*y + image[1][2]*z + image[1][3]; uz = image[2][0]*x + image[2][1]*y + image[2][2]*z + image[2][3]; ux -= eye_x; uy -= eye_y; *uux = ux + eye_x; *uuy = uy + eye_y; *uuz = uz; } void matscale(float i[4][4],float x, float y, float z) { static float c[4][4]; c[0][0] = x; c[1][1] = y; c[2][2] = z; c[3][3] = 1; matmul(i,c); } void matmove(float i[4][4],float x, float y, float z) { static float c[4][4]; c[0][0] = 1; c[1][1] = 1; c[2][2] = 1; c[3][3] = 1; c[0][3] = x; c[1][3] = y; c[2][3] = z; matmul(i,c); } void matmul(float a[4][4],float b[4][4]) /* a = a * b */ { static float c[4][4],tot; int y,xb,x; for (y=0;y<4;y++) { for (xb=0;xb<4;xb++) { tot = 0; for (x=0;x<4;x++) tot += a[x][y] * b[xb][x]; c[xb][y] = tot; } } memcpy(a,c,4*4*sizeof(float)); } void matun(float m[4][4]) { int i,j; for (i=0;i<4;i++) for (j=0;j<4;j++) m[i][j] = 0; for (i=0;i<4;i++) m[i][i] = 1; } void matrz(float i[4][4], float angle) { /* Rotate around the Z axis */ float m[4][4]; matun(m); m[0][0] = cos(angle); m[1][1] = m[0][0]; m[0][1] = sin(angle); m[1][0] = -m[0][1]; matmul(i,m); } void matry(float i[4][4], float angle) { /* Rotate around the y axis */ float m[4][4]; matun(m); m[0][0] = cos(angle); m[2][2] = m[0][0]; m[2][0] = sin(angle); m[0][2] = -m[2][0]; matmul(i,m); } void matrx(float i[4][4], float angle) { /* Rotate around the x axis */ float m[4][4]; matun(m); m[1][1] = cos(angle); m[2][2] = m[1][1]; m[1][2] = sin(angle); m[2][1] = -m[1][2]; matmul(i,m); } #define SX(x) ((nx-1)*(x-sf.xaxis.min)/(sf.xaxis.max-sf.xaxis.min)) #define SY(y) ((ny-1)*(y-sf.yaxis.min)/(sf.yaxis.max-sf.yaxis.min)) void grid_back(int nx, int ny, float z1, float z2) { float x,y,z; g_set_color_if_defined(sf.back_color); g_set_line_style(sf.back_lstyle); doclipping = sf.back_hidden; if (sf.back_ystep>0) for (y=sf.yaxis.min; y<=sf.yaxis.max+.00001; y+=sf.back_ystep) { clipline(0,SY(y),z1,0,SY(y),z2); } if (sf.back_zstep>0) for (z=z1; z<=z2; z+=sf.back_zstep) { clipline(0,0,z,0,ny-1,z); } g_set_color_if_defined(sf.right_color); g_set_line_style(sf.right_lstyle); doclipping = sf.right_hidden; if (sf.right_xstep>0) for (x=sf.xaxis.min; x<=sf.xaxis.max+.00001; x+=sf.right_xstep) { clipline(SX(x),ny-1,z1,SX(x),ny-1,z2); } if (sf.right_zstep>0) for (z=z1; z<=z2; z+=sf.right_zstep) { clipline(0,ny-1,z,nx-1,ny-1,z); } g_set_color_if_defined(sf.base_color); g_set_line_style(sf.base_lstyle); doclipping = sf.base_hidden; if (sf.base_xstep>0) for (x=sf.xaxis.min; x<=sf.xaxis.max+.00001; x+=sf.base_xstep) { clipline(SX(x),0,z1,SX(x),ny-1,z1); } if (sf.base_ystep>0) for (y=sf.yaxis.min; y<=sf.yaxis.max+.00001; y+=sf.base_ystep) { clipline(0,SY(y),z1,nx-1,SY(y),z1); } } void draw_markers(int nx, int ny) { float *pnt; int i; pnt = sf.pntxyz; if (*sf.marker == 0) return; g_set_color(pass_color_var(sf.marker_color)); DVAL(sf.marker_hei,base/60.0); g_set_hei(sf.marker_hei); for (i=0; i=90) isleft = false; if (lasta==999) lasta = isleft; if (lasta!=isleft) { *splity = i-1; } lasta = isleft; } lasta=999; for (i = 0; i=90) isleft = false; if (lasta==999) lasta = isleft; if (lasta!=isleft) { *splitx = i-1; } lasta = isleft; } } void nice_ticks(float *dticks, float *gmin,float *gmax , float *t1,float *tn) { float delta,st,expnt,n; int ni; delta = *gmax-*gmin; if (delta==0) {gprint("Axis range error min=%g max=%g \n",*gmin,*gmax); *gmax = *gmin+10; delta = 10; } st = delta/10; expnt = floor(log10(st)); n = st/pow((float)10.0,expnt); if (n>5) ni = 10; else if (n>2) ni = 5; else if (n>1) ni = 2; else ni = 1; if (*dticks==0) *dticks = ni * pow((float)10,expnt); if (*gmin - (delta/1000) <= floor( *gmin/ *dticks) * *dticks) *t1 = *gmin; else *t1 = (floor(*gmin/ *dticks) * *dticks ) + *dticks; *tn = *gmax; if (( floor( *gmax/ *dticks) * *dticks) < (*gmax - (delta/1000) )) *tn = floor(*gmax/ *dticks ) * *dticks; } gle-graphics-4.2.4c/src/gle/surface/Makefile.in0000664000000000000000000000576611405446017020004 0ustar rootroot######################################################################## # # # GLE - Graphics Layout Engine # # # # Modified BSD License # # # # Copyright (C) 2009 GLE. # # # # Redistribution and use in source and binary forms, with or without # # modification, are permitted provided that the following conditions # # are met: # # # # 1. Redistributions of source code must retain the above copyright # # notice, this list of conditions and the following disclaimer. # # # # 2. Redistributions in binary form must reproduce the above # # copyright notice, this list of conditions and the following # # disclaimer in the documentation and/or other materials provided with # # the distribution. # # # # 3. The name of the author may not be used to endorse or promote # # products derived from this software without specific prior written # # permission. # # # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR # # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY # # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE # # GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER # # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN # # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # # ######################################################################## # # makefile.gcc for GLE v4.0 # for compilation with gcc # include ../../../config.i include ../../../config.aconf include files.txt CXX=@CXX@ CPPFLAGS=@LIBGLE_CPPFLAGS@@CPPFLAGS@ CPPFLAGS := $(strip $(CPPFLAGS)) LDFLAGS=@LDFLAGS@ LIBS=@LIBS@ all: $(OBJECTS) $(OBJECTS): %.o: %.cpp $(INCLUDES) $(CXX) $(CPPFLAGS) -c $< -o $@ clean: -$(RM) $(OBJECTS) gle-graphics-4.2.4c/src/gle/surface/Makefile.gcc0000644000000000000000000000553311405446017020120 0ustar rootroot######################################################################## # # # GLE - Graphics Layout Engine # # # # Modified BSD License # # # # Copyright (C) 2009 GLE. # # # # Redistribution and use in source and binary forms, with or without # # modification, are permitted provided that the following conditions # # are met: # # # # 1. Redistributions of source code must retain the above copyright # # notice, this list of conditions and the following disclaimer. # # # # 2. Redistributions in binary form must reproduce the above # # copyright notice, this list of conditions and the following # # disclaimer in the documentation and/or other materials provided with # # the distribution. # # # # 3. The name of the author may not be used to endorse or promote # # products derived from this software without specific prior written # # permission. # # # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR # # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY # # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE # # GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER # # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN # # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # # ######################################################################## # # makefile.gcc for GLE v4.0 # for compilation with gcc # # include ../../../config.i include ../../../config.gcc # include files.txt all: $(OBJECTS) $(OBJECTS): $(INCLUDES) clean: -$(RM) $(OBJECTS) gle-graphics-4.2.4c/src/gle/surface/files.txt0000644000000000000000000000554511472265351017577 0ustar rootroot######################################################################## # # # GLE - Graphics Layout Engine # # # # Modified BSD License # # # # Copyright (C) 2009 GLE. # # # # Redistribution and use in source and binary forms, with or without # # modification, are permitted provided that the following conditions # # are met: # # # # 1. Redistributions of source code must retain the above copyright # # notice, this list of conditions and the following disclaimer. # # # # 2. Redistributions in binary form must reproduce the above # # copyright notice, this list of conditions and the following # # disclaimer in the documentation and/or other materials provided with # # the distribution. # # # # 3. The name of the author may not be used to endorse or promote # # products derived from this software without specific prior written # # permission. # # # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR # # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY # # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE # # GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER # # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN # # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # # ######################################################################## # # files list for GLE to be included by the makefiles # INCLUDES = \ gsurface.h \ f2c.h OBJECTS = \ gsurface.$(OBJ_SUFF) \ hide.$(OBJ_SUFF) \ fcontour.$(OBJ_SUFF) \ ffitcontour.$(OBJ_SUFF) \ gcontour.$(OBJ_SUFF) gle-graphics-4.2.4c/src/gle/surface/fcontour.cpp0000644000000000000000000006152711575346064020306 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ /* contour.f -- translated by f2c (version of 26 February 1990 17:38:00). You must link the resulting object file with the libraries: -lF77 -lI77 -lm -lc (in that order) */ #ifndef __TURBOC__ #define huge #endif #include "f2c.h" /* Common Block Declarations */ typedef struct { real xcur, ycur, xl, yl, cval[10]; integer clab[10], nch; } gctcom_; #define gctcom_1 gctcom_ /* Table of constant values */ static integer c__2 = 2; static integer c__6 = 6; static real c_b43 = 0.f; static integer c__3 = 3; static real c_b104 = .125f; /* Subroutine */ int fill0_(integer *bitmap, integer *n) { /* Initialized data */ static integer nbpw = 31; /* System generated locals */ integer i_1; /* Builtin functions */ integer f_pow_ii(integer *, integer *); /* Local variables */ static integer nblw, loop, i; /* fill the first n bits of bitmap with zeroes. */ /* Parameter adjustments */ --bitmap; /* Function Body */ /* nbpw is the minimum number of significant bits per word used */ /* by integer arithmetic. this is usually one less than the */ /* actual number of bits per word, but an important exception is */ /* the cdc-6000 series of machines, where nbpw should be 48. */ loop = *n / nbpw; nblw = *n % nbpw; if (loop == 0) { goto L20; } i_1 = loop; for (i = 1; i <= i_1; ++i) { bitmap[i] = 0; /* L10: */ } L20: if (nblw != 0) { i_1 = nbpw - nblw; bitmap[loop + 1] %= f_pow_ii(&c__2, &i_1); } return 0; } /* fill0_ */ /* Subroutine */ int mark1_(integer *bitmap, integer *n) { /* Initialized data */ static integer nbpw = 31; /* System generated locals */ integer i_1; /* Builtin functions */ integer f_pow_ii(integer *, integer *); /* Local variables */ static integer nbit, i, nword; /* put a one in the nth bit of bitmap. */ /* Parameter adjustments */ --bitmap; /* Function Body */ /* nbpw is the minimum number of significant bits per word used */ /* by integer arithmetic. this is usually one less than the */ /* actual number of bits per word, but an important exception is */ /* the cdc-6000 series of machines, where nbpw should be 48. */ nword = (*n - 1) / nbpw; nbit = (*n - 1) % nbpw; i_1 = nbpw - nbit - 1; i = f_pow_ii(&c__2, &i_1); bitmap[nword + 1] += i * (1 - bitmap[nword + 1] / i % 2); return 0; } /* mark1_ */ integer iget_(huge integer *bitmap, integer *n) { /* Initialized data */ static integer nbpw = 31; /* System generated locals */ integer ret_val, i_1; /* Builtin functions */ integer f_pow_ii(integer *, integer *); /* Local variables */ static integer nbit, nword; /* iget=0 if the nth bit of bitmap is zero, else iget is one. */ /* Parameter adjustments */ --bitmap; /* Function Body */ /* nbpw is the minimum number of significant bits per word used */ /* by integer arithmetic. this is usually one less than the */ /* actual number of bits per word, but an important exception is */ /* the cdc-6000 series of machines, where nbpw should be 48. */ nword = (*n - 1) / nbpw; nbit = (*n - 1) % nbpw; i_1 = nbpw - nbit - 1; ret_val = bitmap[nword + 1] / f_pow_ii(&c__2, &i_1) % 2; return ret_val; } /* iget_ */ /* Subroutine */ int gcontr_(real *z, integer *nrz, integer *nx, integer *ny, real *cv, integer *ncv, real *zmax, huge integer *bitmap, S_fp draw) { /* Initialized data */ static integer l1[4] = { 0,0,-1,-1 }; static integer i1[2] = { 1,0 }; static integer i2[2] = { 1,-1 }; static integer i3[6] = { 1,0,0,1,1,0 }; /* System generated locals */ integer z_dim1, z_offset, i_1, i_2, i_3; static integer equiv_3[4], equiv_5[2]; static real equiv_7[2]; /* Builtin functions */ integer f_i_sign(integer *, integer *); /* Local variables */ static real cval; static integer idir; extern integer iget_(integer *, integer *); static real dmax_; #define imin (equiv_3 + 2) #define imax (equiv_3) #define jmax (equiv_3 + 1) #define jmin (equiv_3 + 3) static integer icur, jcur, jump; static real xint[4]; extern /* Subroutine */ int fill0_(integer *, integer *), mark1_(integer * , integer *); #define i (equiv_5) #define j (equiv_5 + 1) static integer k, l, iedge, iflag; #define x (equiv_7) #define y (equiv_7 + 1) static integer ibkey; #define l2 (equiv_3) static real z1, z2; static integer ii; #define ij (equiv_5) static integer jj, ni, ks, ix; #define xy (equiv_7) static real zz; static integer nxidir, icv; /* this subroutine draws a contour through equal values of an array. */ /* ***** formal arguments *********************************** */ /* z is the array for which contours are to be drawn. the elements */ /* of z are assumed to lie upon the nodes of a topologically */ /* rectangular coordinate system - e.g. cartesian, polar (except */ /* the origin), etc. */ /* nrz is the number of rows declared for z in the calling program. */ /* nx is the limit for the first subscript of z. */ /* ny is the limit for the second subscript of z. */ /* cv are the values of the contours to be drawn. */ /* ncv is the number of contour values in cv. */ /* zmax is the maximum value of z for consideration. a value of */ /* z(i,j) greater than zmax is a signal that that point and the */ /* grid line segments radiating from that point to it's neighbors */ /* are to be excluded from contouring. */ /* bitmap is a work area large enough to hold 2*nx*ny*ncv bits. it */ /* is accessed by low-level routines, which are described below. */ /* let j be the number of useful bits in each word of bitmap, */ /* as determined by the user machine and implementation of */ /* the bitmap manipulation subprograms described below. then */ /* the number of words required for the bitmap is the floor of */ /* (2*nx*ny*ncv+j-1)/j. */ /* draw is a user-provided subroutine used to draw contours. */ /* the calling sequence for draw is: */ /* call draw (x,y,iflag) */ /* let nx = integer part of x, fx = fractional part of x. */ /* then x should be interpreted such that increases in nx */ /* correspond to increases in the first subscript of z, and */ /* fx is the fractional distance from the abscissa corresponding */ /* to nx to the abscissa corresponding to nx+1, */ /* and y should be interpreted similarly for the second */ /* subscript of z. */ /* the low-order digit of iflag will have one of the values: */ /* 1 - continue a contour, */ /* 2 - start a contour at a boundary, */ /* 3 - start a contour not at a boundary, */ /* 4 - finish a contour at a boundary, */ /* 5 - finish a closed contour (not at a boundary). */ /* note that requests 1, 4 and 5 are for pen-down */ /* moves, and that requests 2 and 3 are for pen-up */ /* moves. */ /* 6 - set x and y to the approximate 'pen' position, using */ /* the notation discussed above. this call may be */ /* ignored, the result being that the 'pen' position */ /* is taken to correspond to z(1,1). */ /* iflag/10 is the contour number. */ /* ***** external subprograms ******************************* */ /* draw is the user-supplied line drawing subprogram described above. */ /* draw may be sensitive to the host computer and to the plot device. */ /* fill0 is used to fill a bitmap with zeroes. call fill0 (bitmap,n) */ /* fills the first n bits of bitmap with zeroes. */ /* mark1 is used to place a 1 in a specific bit of the bitmap. */ /* call mark1 (bitmap,n) puts a 1 in the nth bit of the bitmap. */ /* iget is used to determine the setting of a particular bit in the */ /* bitmap. i=iget(bitmap,n) sets i to zero if the nth bit of the */ /* bitmap is zero, and sets i to one if the nth bit is one. */ /* fill0, mark1 and iget are machine sensitive. */ /* ****************************************************************** */ /* l1 and l2 contain limits used during the spiral search for the */ /* beginning of a contour. */ /* ij stores subcripts used during the spiral search. */ /* i1, i2 and i3 are used for subscript computations during the */ /* examination of lines from z(i,j) to it's neighbors. */ /* xint is used to mark intersections of the contour under */ /* consideration with the edges of the cell being examined. */ /* xy is used to compute coordinates for the draw subroutine. */ /* Parameter adjustments */ --bitmap; --cv; z_dim1 = *nrz; z_offset = z_dim1 + 1; z -= z_offset; /* Function Body */ l1[0] = *nx; l1[1] = *ny; dmax_ = *zmax; /* set the current pen position. the default position corresponds */ /* to z(1,1). */ *x = 1.f; *y = 1.f; (*draw)(x, y, &c__6); /* Computing MAX */ /* Computing MIN */ i_3 = (integer) (*x); i_1 = 1, i_2 = min(i_3,*nx); icur = max(i_1,i_2); /* Computing MAX */ /* Computing MIN */ i_3 = (integer) (*y); i_1 = 1, i_2 = min(i_3,*ny); jcur = max(i_1,i_2); /* clear the bitmap */ i_1 = (*nx << 1) * *ny * *ncv; fill0_(&bitmap[1], &i_1); /* search along a rectangular spiral path for a line segment having */ /* the following properties: */ /* 1. the end points are not excluded, */ /* 2. no mark has been recorded for the segment, */ /* 3. the values of z at the ends of the segment are such that */ /* one z is less than the current contour value, and the */ /* other is greater than or equal to the current contour */ /* value. */ /* search all boundaries first, then search interior line segments. */ /* note that the interior line segments near excluded points may be */ /* boundaries. */ ibkey = 0; L10: *i = icur; *j = jcur; L20: *imax = *i; *imin = -(*i); *jmax = *j; *jmin = -(*j); idir = 0; /* direction zero is +i, 1 is +j, 2 is -i, 3 is -j. */ L30: nxidir = idir + 1; k = nxidir; if (nxidir > 3) { nxidir = 0; } L40: *i = abs(*i); *j = abs(*j); if (z[*i + *j * z_dim1] > dmax_) { goto L140; } l = 1; /* l=1 means horizontal line, l=2 means vertical line. */ L50: if (ij[l - 1] >= l1[l - 1]) { goto L130; } ii = *i + i1[l - 1]; jj = *j + i1[3 - l - 1]; if (z[ii + jj * z_dim1] > dmax_) { goto L130; } jump = 0; /* the next 15 statements (or so) detect boundaries. */ L60: ix = 1; if (ij[3 - l - 1] == 1) { goto L80; } ii = *i - i1[3 - l - 1]; jj = *j - i1[l - 1]; if (z[ii + jj * z_dim1] > dmax_) { goto L70; } ii = *i + i2[l - 1]; jj = *j + i2[3 - l - 1]; if (z[ii + jj * z_dim1] < dmax_) { ix = 0; } L70: if (ij[3 - l - 1] >= l1[3 - l - 1]) { goto L90; } L80: ii = *i + i1[3 - l - 1]; jj = *j + i1[l - 1]; if (z[ii + jj * z_dim1] > dmax_) { goto L90; } if (z[*i + 1 + (*j + 1) * z_dim1] < dmax_) { switch (jump) { case 0: goto L100; case 1: goto L280; } } L90: ix += 2; switch (jump) { case 0: goto L100; case 1: goto L280; } L100: if (ix == 3) { goto L130; } if (ix + ibkey == 0) { goto L130; } /* now determine whether the line segment is crossed by the contour. */ ii = *i + i1[l - 1]; jj = *j + i1[3 - l - 1]; z1 = z[*i + *j * z_dim1]; z2 = z[ii + jj * z_dim1]; i_1 = *ncv; for (icv = 1; icv <= i_1; ++icv) { i_2 = ((*nx * (*ny * (icv - 1) + *j - 1) + *i - 1) << 1) + l; if (iget_(&bitmap[1], &i_2) != 0) { goto L120; } if (cv[icv] <= dmin(z1,z2)) { goto L110; } if (cv[icv] <= dmax(z1,z2)) { goto L190; } L110: i_2 = ((*nx * (*ny * (icv - 1) + *j - 1) + *i - 1) << 1) + l; mark1_(&bitmap[1], &i_2); L120: ;} L130: ++l; if (l <= 2) { goto L50; } L140: l = idir % 2 + 1; ij[l - 1] = f_i_sign(&ij[l - 1], &l1[k - 1]); /* lines from z(i,j) to z(i+1,j) and z(i,j+1) are not satisfactory. */ /* continue the spiral. */ L150: if (ij[l - 1] >= l1[k - 1]) { goto L170; } ++ij[l - 1]; if (ij[l - 1] > l2[k - 1]) { goto L160; } goto L40; L160: l2[k - 1] = ij[l - 1]; idir = nxidir; goto L30; L170: if (idir == nxidir) { goto L180; } ++nxidir; ij[l - 1] = l1[k - 1]; k = nxidir; l = 3 - l; ij[l - 1] = l2[k - 1]; if (nxidir > 3) { nxidir = 0; } goto L150; L180: if (ibkey != 0) { return 0; } ibkey = 1; goto L10; /* an acceptable line segment has been found. */ /* follow the contour until it either hits a boundary or closes. */ L190: iedge = l; cval = cv[icv]; if (ix != 1) { iedge += 2; } iflag = ibkey + 2; xint[iedge - 1] = (cval - z1) / (z2 - z1); L200: xy[l - 1] = (real) ij[l - 1] + xint[iedge - 1]; xy[3 - l - 1] = (real) ij[3 - l - 1]; i_1 = ((*nx * (*ny * (icv - 1) + *j - 1) + *i - 1) << 1) + l; mark1_(&bitmap[1], &i_1); i_1 = iflag + icv * 10; (*draw)(x, y, &i_1); if (iflag < 4) { goto L210; } icur = *i; jcur = *j; goto L20; /* continue a contour. the edges are numbered clockwise with */ /* the bottom edge being edge number one. */ L210: ni = 1; if (iedge < 3) { goto L220; } *i -= i3[iedge - 1]; *j -= i3[iedge + 1]; L220: for (k = 1; k <= 4; ++k) { if (k == iedge) { goto L250; } ii = *i + i3[k - 1]; jj = *j + i3[k]; z1 = z[ii + jj * z_dim1]; ii = *i + i3[k]; jj = *j + i3[k + 1]; z2 = z[ii + jj * z_dim1]; if (cval <= dmin(z1,z2)) { goto L250; } if (cval > dmax(z1,z2)) { goto L250; } if (k == 1) { goto L230; } if (k != 4) { goto L240; } L230: zz = z1; z1 = z2; z2 = zz; L240: xint[k - 1] = (cval - z1) / (z2 - z1); ++ni; ks = k; L250: ;} if (ni == 2) { goto L260; } /* the contour crosses all four edges of the cell being examined. */ /* choose the lines top-to-left and bottom-to-right if the */ /* interpolation point on the top edge is less than the interpolation */ /* point on the bottom edge. otherwise, choose the other pair. this */ /* method produces the same results if the axes are reversed. the */ /* contour may close at any edge, but must not cross itself inside */ /* any cell. */ ks = 5 - iedge; if (xint[2] < xint[0]) { goto L260; } ks = 3 - iedge; if (ks <= 0) { ks += 4; } /* determine whether the contour will close or run into a boundary */ /* at edge ks of the current cell. */ L260: l = ks; iflag = 1; jump = 1; if (ks < 3) { goto L270; } *i += i3[ks - 1]; *j += i3[ks + 1]; l = ks - 2; L270: i_1 = ((*nx * (*ny * (icv - 1) + *j - 1) + *i - 1) << 1) + l; if (iget_(&bitmap[1], &i_1) == 0) { goto L60; } iflag = 5; goto L290; L280: if (ix != 0) { iflag = 4; } L290: iedge = ks + 2; if (iedge > 4) { iedge += -4; } xint[iedge - 1] = xint[ks - 1]; goto L200; } /* gcontr_ */ #undef xy #undef ij #undef l2 #undef y #undef x #undef j #undef i #undef jmin #undef jmax #undef imax #undef imin /* dimension z(51,51), c(10), work(1680) */ /* dimension of work is large enough to contain */ /* 2*(dimension of c)*(total dimension of z) useful bits. see the */ /* bitmap routines accessed by gcontr. */ /* real mu */ /* external draw */ /* common /cur/ xcur, ycur */ /* data c(1), c(2), c(3), c(4), c(5) /3.05,3.2,3.5,3.50135,3.6/ */ /* data c(6), c(7), c(8), c(9), c(10) /3.766413,4.0,4.130149,5.0, */ /* * 10.0/ */ /* data nx /51/, ny /51/, nf /10/ */ /* data xmin /-2.0/, xmax /2.0/, ymin /-2.0/, ymax /2.0/, mu /0.3/ */ /* dx = (xmax-xmin)/float(nx-1) */ /* dy = (ymax-ymin)/float(ny-1) */ /* xcur = 1.0 */ /* ycur = 1.0 */ /* if (mod(nx,2).ne.0) ycur = float(ny) */ /* if (mod(ny,2).ne.0) xcur = float(nx) */ /* x = xmin - dx */ /* do 20 i=1,nx */ /* y = ymin - dy */ /* x = x + dx */ /* do 10 j=1,ny */ /* y = y + dy */ /* z(i,j) = (1.0-mu)*(2.0/sqrt((x-mu)**2+y**2)+(x-mu)**2+y**2) */ /* * + mu*(2.0/sqrt((x+1.0-mu)**2+y**2)+(x+1.0-mu)**2+y**2) */ /* 10 continue */ /* 20 continue */ /* call gcontr(z, 51, nx, ny, c, nf, 1.e6, work, draw) */ /* stop */ /* end */ /* subroutine draw(x, y, iflag) */ /* do output for gcontr. */ /* integer print */ /* common /cur/ xcur, ycur */ /* data print /6/ */ /* print is the system printer fortran i/o unit number. */ /* icont = iflag/10 */ /* jump = mod(iflag,10) */ /* go to (10, 20, 30, 40, 50, 60), jump */ /* 10 write (print,99999) icont, x, y */ /* go to 70 */ /* 20 write (print,99998) icont, x, y */ /* go to 70 */ /* 30 write (print,99997) icont, x, y */ /* go to 70 */ /* 40 write (print,99996) icont, x, y */ /* go to 70 */ /* 50 write (print,99995) icont, x, y */ /* go to 70 */ /* 60 write (print,99994) */ /* x = xcur */ /* y = ycur */ /* 70 return */ /* 99999 format (17h continue contour, i3, 3h to, 1p2e14.7) */ /* 99998 format (14h start contour, i3, 19h on the boundary at, 1p2e14.7) */ /* 99997 format (14h start contour, i3, 19h in the interior at, 1p2e14.7) */ /* 99996 format (15h finish contour, i3, 19h on the boundary at, 1p2e14.7) */ /* 99995 format (15h finish contour, i3, 19h in the interior at, 1p2e14.7) */ /* 99994 format (33h request for current pen position) */ /* end */ /* Subroutine */ int cgrid_(integer *nopt, integer *nx, real *sx, real *xs, real *xf, integer *ny, real *sy, real *ys, real *yf) { /* System generated locals */ integer i_1; real r_1, r_2; /* Builtin functions */ double f_r_sign(real *, real *); /* Local variables */ static real xinc, yinc, xmin, ymin, xmax, ymax; extern /* Subroutine */ void plot_(real *, real *, integer *); static integer i, j, n; static real xlgth, ylgth, x1, x2, y2, y1, xx; /* subroutine which draws a frame around the plot and draws */ /* either tick marks or grid lines. */ /* parameters: nopt -- =0, draw ticks only */ /* =1, draw grid lines */ /* =2, draw grid lines to edge of frame. */ /* nx -- number of intervals in x direction */ /* sx -- spacing in inches between tick marks or grid lines */ /* along the x axis */ /* xs -- location of first tick or grid line on x axis */ /* xf -- location of right edge of frame */ /* ny -- number of intervals in y direction */ /* sy -- spacing in inches between tick marks or grid lines */ /* along the y axis */ /* ys -- location of first tick or grid line on y axis */ /* yf -- location of top edge of frame */ /* assumptions: nx, sx, ny, sy all positive. */ /* the lower left-hand corner of the frame is drawn at (0,0) */ /* if xs<0, use 0; if ys<0, use 0 */ /* if xf<=0, use nx*sx; if yf<=0, use ny*sy. */ xinc = *sx; yinc = *sy; xlgth = (real) (*nx) * *sx; ylgth = (real) (*ny) * *sy; xmin = dmax(*xs,0.f); ymin = dmax(*ys,0.f); /* Computing MAX */ r_1 = *xf, r_2 = xlgth + xmin; xmax = dmax(r_1,r_2); /* Computing MAX */ r_1 = *yf, r_2 = ylgth + ymin; ymax = dmax(r_1,r_2); /* draw frame. */ plot_(&c_b43, &c_b43, &c__3); plot_(&xmax, &c_b43, &c__2); plot_(&xmax, &ymax, &c__2); plot_(&c_b43, &ymax, &c__2); plot_(&c_b43, &c_b43, &c__2); if (*nopt != 0) { goto L130; } /* draw tick marks. */ for (j = 1; j <= 4; ++j) { switch (j) { case 1: goto L10; case 2: goto L50; case 3: goto L20; case 4: goto L40; } L10: x2 = 0.f; if (xmin != 0.f) { x2 = xmin - *sx; } y2 = 0.f; goto L30; L20: xinc = -(doublereal)(*sx); x2 = xmin + xlgth + *sx; if (xmax == xmin + xlgth) { x2 = xmax; } y2 = ymax; L30: y1 = y2; y2 += f_r_sign(&c_b104, &xinc); n = *nx; if ((r_1 = xmax - xmin - xlgth, dabs(r_1)) + dabs(xmin) != 0.f) { goto L70; } else { goto L80; } L40: yinc = -(doublereal)(*sy); y2 = ymin + ylgth + *sy; if (ymax == ymin + ylgth) { y2 = ymax; } x2 = 0.f; goto L60; L50: y2 = 0.f; if (ymin != 0.f) { y2 = ymin - *sy; } x2 = xmax; L60: x1 = x2; n = *ny; x2 -= f_r_sign(&c_b104, &yinc); if ((r_1 = ymax - ymin - ylgth, dabs(r_1)) + dabs(ymin) != 0.f) { goto L70; } else { goto L80; } L70: ++n; L80: i_1 = n; for (i = 1; i <= i_1; ++i) { if (j % 2 == 0) { goto L90; } x2 += xinc; x1 = x2; goto L100; L90: y2 += yinc; y1 = y2; L100: plot_(&x1, &y1, &c__3); plot_(&x2, &y2, &c__2); /* L110: */ } /* L120: */ } goto L240; /* draw grid lines */ L130: x1 = xmin; x2 = xmin + xlgth; if (*nopt != 2) { goto L140; } x1 = 0.f; x2 = xmax; L140: y1 = ymin - *sy; n = *ny + 1; if (ymax == ymin + ylgth) { --n; } if (ymin != 0.f) { goto L150; } y1 = 0.f; --n; L150: if (n <= 0) { goto L170; } j = 1; i_1 = n; for (i = 1; i <= i_1; ++i) { j = -j; y1 += *sy; plot_(&x1, &y1, &c__3); plot_(&x2, &y1, &c__2); xx = x1; x1 = x2; x2 = xx; /* L160: */ } L170: y1 = ymin + ylgth; y2 = ymin; if (*nopt != 2) { goto L180; } y1 = ymax; y2 = 0.f; L180: n = *nx + 1; if (j < 0) { goto L200; } x1 = xmin - *sx; if (xmax == xmin + xlgth) { --n; } if (xmin != 0.f) { goto L190; } x1 = 0.f; --n; L190: if (n <= 0) { goto L240; } xinc = *sx; goto L220; L200: x1 = xmin + xlgth + *sx; if (xmin == 0.f) { --n; } if (xmax != xlgth + xmin) { goto L210; } --n; x1 = xmax; L210: xinc = -(doublereal)(*sx); L220: i_1 = n; for (i = 1; i <= i_1; ++i) { x1 += xinc; plot_(&x1, &y1, &c__3); plot_(&x1, &y2, &c__2); xx = y1; y1 = y2; y2 = xx; /* L230: */ } L240: return 0; } /* cgrid_ */ gle-graphics-4.2.4c/src/gle/surface/gsurface.cpp0000664000000000000000000005522011660563604020235 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ /* * Trying to add surface support back into GLE * Jan Struyf 2005 */ #include "../all.h" #include "../tokens/Tokenizer.h" #include "../core.h" #include "../file_io.h" #include "../texinterface.h" #include "../cutils.h" #include "../cmdline.h" #include "../config.h" #include "../mem_limits.h" #include "../token.h" #include "../gprint.h" #include "../cutils.h" #include "../gle-block.h" #define BEGINDEF extern #include "../begin.h" #include "gsurface.h" extern int gle_debug; FILE *df; void hide(float *z,int nx, int ny, float minz, float maxz, struct surface_struct *sff); void hide_enddefaults(void); void text_expand(int x); void hide_defaults(); void pass_line() throw(ParserError); void pass_title(); void pass_cube(); void pass_top(); void pass_bot(); void pass_marker(); void pass_droplines(); void pass_riselines(); void pass_back(); void pass_right(); void pass_base(); void pass_axis(); void pass_anytitle(); void pass_zclip(); void pass_points(string); void getstr(char *s); float getf(void); int geton(void); //void pass_data(int *nx, int *ny, float *zmin, float *zmax); void pass_data(bool force_zdata); void pass_zdata(string,int *nx, int *ny, double *zmin, double *zmax); bool alloc_zdata(int nx, int ny); extern int trace_on,this_line; char input_file[80]; static int xsample,ysample; static struct surface_struct sf; static double zmin = 10e10,zmax = -10e10; static float *z; static int nx,ny; static double dxmin,dymin,dxmax,dymax; double zclipmin,zclipmax; int zclipminset,zclipmaxset; int ct; surface_struct* GLEInterface::getSurface() { return &sf; } void clean_surface() { sf.z = NULL; } class GLESurfaceBlockInstance : public GLEBlockInstance { public: GLESurfaceBlockInstance(GLESurfaceBlockBase* parent); virtual ~GLESurfaceBlockInstance(); virtual void executeLine(GLESourceLine& sline); virtual void endExecuteBlock(); private: GLEPoint m_origin; }; GLESurfaceBlockInstance::GLESurfaceBlockInstance(GLESurfaceBlockBase* parent): GLEBlockInstance(parent) { g_get_xy(&m_origin); hide_defaults(); } GLESurfaceBlockInstance::~GLESurfaceBlockInstance() { } void GLESurfaceBlockInstance::executeLine(GLESourceLine& sline) { token_space(); begin_init(); int st = begin_token(sline, srclin, tk, &ntk, outbuff, true); if (!st) { return; } ct = 1; pass_line(); } void GLESurfaceBlockInstance::endExecuteBlock() { if (nx==0 || ny==0) { // Create fake dataset for now... nx = ny = 2; alloc_zdata(nx,ny); z[0] = z[1] = z[2] = z[3] = -GLE_INF; } if (zclipminset || zclipmaxset) { for (int li = 0; li< nx*ny; li++) { if (zclipminset) if (z[li]zclipmax) z[li] = zclipmax; } if (zclipminset) zmin = zclipmin; if (zclipmaxset) zmax = zclipmax; } hide_enddefaults(); if (sf.zaxis.min != sf.zaxis.max) { zmin = sf.zaxis.min; zmax = sf.zaxis.max; } sf.nx = nx; sf.ny = ny; sf.z = z; sf.zmin = zmin; sf.zmax = zmax; hide(z,nx,ny,zmin,zmax,&sf); g_move(m_origin); } GLESurfaceBlockBase::GLESurfaceBlockBase(): GLEBlockWithSimpleKeywords("surface", false) { const char* commands[] = { "SIZE", "TITLE", "CUBE", "DATA", "ZDATA", "ROTATE", "EYE", "VIEW", "HARRAY", "ZCLIP", "SKIRT", "XLINES", "YLINES", "TOP", "UNDERNEATH", "HIDDEN", "MARKER", "POINTS", "DROPLINES", "RISELINES", "BASE", "BACK", "RIGHT", "ZCOLOUR", "ZCOLOR", "" }; for (int i = 0; commands[i][0] != 0; ++i) { addKeyWord(commands[i]); } const char* axis[] = { "X", "Y", "Z", "" }; for (int i = 0; axis[i][0] != 0; ++i) { addKeyWord(std::string(axis[i]) + "AXIS"); addKeyWord(std::string(axis[i]) + "TITLE"); } } GLESurfaceBlockBase::~GLESurfaceBlockBase() { } GLEBlockInstance* GLESurfaceBlockBase::beginExecuteBlockImpl(GLESourceLine& /* sline */, int* /* pcode */, int* /* cp */) { return new GLESurfaceBlockInstance(this); } #define kw(k) if (str_i_equals(tk[ct],k)) char* getstrv() { if (ct >= ntk) { gprint("Expecting string \n"); return NULL; } string result; pass_file_name(tk[++ct], result); return sdup((char*)result.c_str()); } void getstr(char *s) { if (ct>=ntk) { gprint("Expecting Color or Lstyle\n"); return;} strncpy(s,tk[++ct],11); } float getf() { if (ct>=ntk) gprint("Expecting Number\n"); return atof(tk[++ct]); } int geton() { if (ct>=ntk) gprint("Expecting ON | OFF\n"); ct++; if (str_i_equals(tk[ct],"ON")) return true; if (str_i_equals(tk[ct],"OFF")) return false; gprint("Expecting ON | OFF, assuming ON\n"); return true; } void pass_line() throw(ParserError) { if (ntk<1) return; kw("SIZE") {sf.screenx = getf(); sf.screeny = getf();} else kw("TITLE") pass_title(); else kw("CUBE") pass_cube(); // else kw("DATA") { pass_data(&nx,&ny,&zmin,&zmax); } else kw("DATA") { pass_data(false); } else kw("ZDATA") { pass_data(true); } else kw("ROTATE") {sf.xrotate = getf(); sf.yrotate = getf(); sf.zrotate = getf();} else kw("EYE") {sf.eye_x = getf(); sf.eye_y = getf(); sf.vdist = getf();} else kw("VIEW") {sf.eye_x = getf(); sf.eye_y = getf(); sf.vdist = getf();} else kw("HARRAY") sf.maxh = (int)getf(); else kw("ZCLIP") pass_zclip(); else kw("SKIRT") sf.skirt_on = geton(); else kw("XLINES") sf.xlines_on = geton(); else kw("YLINES") sf.ylines_on = geton(); else kw("TOP") pass_top(); else kw("UNDERNEATH") pass_bot(); else kw("HIDDEN") sf.hidden_on = geton(); else kw("MARKER") pass_marker(); else kw("POINTS") pass_data(false); else kw("DROPLINES") pass_droplines(); else kw("RISELINES") pass_riselines(); else kw("BASE") pass_base(); else kw("BACK") pass_back(); else kw("RIGHT") pass_right(); else kw("ZCOLOUR") getstr(sf.zcolour); else kw("ZCOLOR") getstr(sf.zcolour); else if (str_i_str(tk[1],"AXIS")!=NULL) pass_axis(); else if (str_i_str(tk[1],"TITLE")!=NULL) pass_anytitle(); else { stringstream err; err << "illegal keyword in surface block: '" << tk[ct] << "'"; g_throw_parser_error(err.str()); } if (cttitle = getstrv(); for (ct++;ct<=ntk;ct++) { kw("HEI") ax->title_hei = getf(); else kw("DIST") ax->title_dist = getf(); else kw("COLOR") getstr(ax->title_color); else gprint("Expecting one of HEI, DIST, COLOR , found {%s} \n",tk[ct]); } } void pass_cube() { for (ct++;ct<=ntk;ct++) { kw("ON") sf.cube_on = true; else kw("OFF") sf.cube_on = false; else kw("NOFRONT") sf.cube_front_on = false; else kw("FRONT") sf.cube_front_on = geton(); else kw("LSTYLE") getstr(sf.cube_lstyle); else kw("COLOR") getstr(sf.cube_color); else kw("XLEN") sf.sizex = getf(); else kw("YLEN") sf.sizey = getf(); else kw("ZLEN") sf.sizez = getf(); else gprint("Expecting one of OFF, XLEN, YLEN, ZLEN, FRONT, LSTYLE, COLOR, found {%s} \n",tk[ct]); } } void pass_zclip() { for (ct++;ct<=ntk;ct++) { kw("MIN") { zclipmin = getf(); zclipminset = true; } else kw("MAX") { zclipmax = getf(); zclipmaxset = true; } else gprint("Expecting one of MIN, MAX found {%s} \n",tk[ct]); } } void pass_back() { for (ct++;ct<=ntk;ct++) { kw("YSTEP") sf.back_ystep = getf(); else kw("ZSTEP") sf.back_zstep = getf(); else kw("LSTYLE") getstr(sf.back_lstyle); else kw("COLOR") getstr(sf.back_color); else kw("NOHIDDEN") sf.back_hidden = false; else gprint("Expecting one of YSTEP, ZSTEP, LSTYLE, COLOR found {%s} \n",tk[ct]); } } void pass_right() { for (ct++;ct<=ntk;ct++) { kw("ZSTEP") sf.right_zstep = getf(); else kw("XSTEP") sf.right_xstep = getf(); else kw("LSTYLE") getstr(sf.right_lstyle); else kw("COLOR") getstr(sf.right_color); else kw("NOHIDDEN") sf.right_hidden = false; else gprint("Expecting one of ZSTEP, XSTEP, LSTYLE, COLOR found {%s} \n",tk[ct]); } } void pass_base() { for (ct++;ct<=ntk;ct++) { kw("XSTEP") sf.base_xstep = getf(); else kw("YSTEP") sf.base_ystep = getf(); else kw("LSTYLE") getstr(sf.base_lstyle); else kw("COLOR") getstr(sf.base_color); else kw("NOHIDDEN") sf.base_hidden = false; else gprint("Expecting one of XSTEP, YSTEP, LSTYLE, COLOR found {%s} \n",tk[ct]); } } /* toplines lstyle color hidden */ void pass_droplines() { sf.droplines = true; for (ct++;ct<=ntk;ct++) { kw("LSTYLE") getstr(sf.droplines_lstyle); else kw("COLOR") getstr(sf.droplines_color); else kw("HIDDEN") sf.droplines_hidden = true; else gprint("Expecting one of LSTYLE, COLOR , found {%s} \n",tk[ct]); } } /* toplines lstyle color hidden */ void pass_riselines() { sf.riselines = true; for (ct++;ct<=ntk;ct++) { kw("LSTYLE") getstr(sf.riselines_lstyle); else kw("COLOR") getstr(sf.riselines_color); else kw("HIDDEN") sf.riselines_hidden = true; else gprint("Expecting one of LSTYLE, COLOR , found {%s} \n",tk[ct]); } } /* top lstyle color off */ void pass_top() { for (ct++;ct<=ntk;ct++) { kw("LSTYLE") getstr(sf.top_lstyle); else kw("COLOR") getstr(sf.top_color); else kw("ON") sf.top_on = true; else kw("OFF") sf.top_on = false; else gprint("Expecting one of OFF, LSTYLE, COLOR , found {%s} \n",tk[ct]); } } void pass_bot() { sf.bot_on = true; for (ct++;ct<=ntk;ct++) { kw("LSTYLE") getstr(sf.bot_lstyle); else kw("COLOR") getstr(sf.bot_color); else kw("ON") sf.bot_on = true; else kw("OFF") sf.bot_on = false; else gprint("Expecting one of ON, OFF, LSTYLE, COLOR , found {%s} \n",tk[ct]); } } void pass_marker() { getstr(sf.marker); for (ct++;ct<=ntk;ct++) { kw("COLOR") getstr(sf.marker_color); else kw("HEI") sf.marker_hei = getf(); else gprint("Expecting MARKER markername COLOR c HEI h, found {%s} \n",tk[ct]); } } void pass_axis() { struct GLEAxis3D *ax=NULL; if (toupper(*tk[ct])=='X') ax = &sf.xaxis; if (toupper(*tk[ct])=='Y') ax = &sf.yaxis; if (toupper(*tk[ct])=='Z') ax = &sf.zaxis; if (ax==NULL) { gprint("Expecting xaxis,yaxis,zaxis, \n"); return;} for (ct++;ct<=ntk;ct++) { kw("MIN") {ax->min = getf(); ax->minset = true;} else kw("MAX") {ax->max = getf(); ax->maxset = true;} else kw("DTICKS") ax->step = getf(); else kw("TICKLEN") ax->ticklen = getf(); else kw("LEN") ax->ticklen = getf(); else kw("COLOR") getstr(ax->color); else kw("STEP") ax->step = getf(); else kw("HEI") ax->hei = getf(); else kw("OFF") ax->on = false; else kw("ON") ax->on = true; else kw("NOFIRST") ax->nofirst = true; else kw("NOLAST") ax->nolast = true; else gprint("Expecting HEI, DIST, COLOR , TICKLEN, MIN, MAX, STEP, found {%s} \n",tk[ct]); } } static char buff[2032]; bool alloc_zdata(int nx, int ny) { if (z!=NULL) free(z); z = (float*)malloc(nx * (ny+1) * sizeof(float)); if (z==NULL) { gprint("Unable to allocate enough memory for datafile\n"); return true; } return false; } double getkeyval(char *buff,const char *k) { char *s; s = str_i_str(buff,k); if (s!=NULL) return atof(s+strlen(k)); return 0.0; } void pass_data(bool force_zdata) { string fname = getstrv(); if (str_i_ends_with(fname, ".z") || force_zdata) { pass_zdata(fname,&nx,&ny,&zmin,&zmax); } else { pass_points(fname); } } /* data test.z [nx ny] */ //void pass_data(int *nx, int *ny, float *zmin, float *zmax) { void pass_zdata(string fname,int *nx, int *ny, double *zmin, double *zmax) { double v; int x,y,xx,yy; int c,b,mx = 0,my = 0,xcnt,ycnt; char *s; xx = yy = x = y = 0; *nx = 0; *ny = 0; for (ct++;ct<=ntk;ct++) { kw("NX") *nx = (int)getf(); else kw("NY") *ny = (int)getf(); else kw("XSAMPLE") xsample = (int)getf(); else kw("YSAMPLE") ysample = (int)getf(); else kw("SAMPLE") {xsample = (int)getf(); ysample = xsample; } else gprint("Wanted DATA file.Z XSAMPLE YSAMPLE SAMPLE NX NY. Found {%s} \n",tk[ct]); } if (*nx != 0) { mx = (*nx - 1)/xsample + 1; my = (*ny - 1)/ysample + 1; } xcnt = xsample; ycnt = ysample; if (nx==NULL || ny==0) printf("nx or ny is zero \n"); if (*nx!=0 && *ny != 0) if (alloc_zdata(*nx,*ny)) return; df = validate_fopen(fname.c_str(), "r", true); if (df==NULL) {*nx = 0; *ny = 0; return;} for (;!feof(df);) { if (fgets(buff,2000,df)!=NULL) { if (*nx==0) { *nx = (int)getkeyval(buff,"NX"); *ny = (int)getkeyval(buff,"NY"); dxmin = getkeyval(buff,"XMIN"); dymin = getkeyval(buff,"YMIN"); dxmax = getkeyval(buff,"XMAX"); dymax = getkeyval(buff,"YMAX"); if (*nx==0 || *ny==0) { gprint("Expecting ! NX 10 NY 10 in first line of data file \n"); return; } mx = (*nx - 1)/xsample + 1; my = (*ny - 1)/ysample + 1; if (alloc_zdata(mx,my)) return; fgets(buff,2000,df); } check_again: b = strlen(buff); c = buff[b-1]; if (strchr(" \n\t",c)==NULL) { /* we're halfway thru a number */ buff[b] = getc(df); buff[b+1] = 0; goto check_again; } s = strchr(buff,'!'); if (s!=NULL) *s = 0; s = strtok(buff," \t\n,"); for (;s!=NULL;) { v = atof(s); if (isdigit(*s) || *s=='-' || *s=='+' || *s=='.') { if (x>= *nx) { if (ycnt==ysample) {ycnt = 0; yy++;} x = 0; y++; ycnt++; xx = 0; xcnt = xsample; } if (y>= *ny) { gprint("Too much data in data file %ld %d \n",y,*ny); return; } if (v < *zmin) *zmin = v; if (v > *zmax) *zmax = v; if (xx0) memcpy(d,pntxyz,cursize*sizeof(float)); cursize = size; pntxyz = (float*)d; } void pass_points(string fname) { double v; char *s; int nd,nc; pnt_alloc(30); if (ct>ntk) { gprint("Expecting POINTS filename.xyz \n"); return; } df = validate_fopen(fname.c_str(), "r", true); if (df==NULL) return; nd = 0; for (;!feof(df);) { if (fgets(buff,2000,df)!=NULL) { s = strchr(buff,'!'); if (s!=NULL) *s = 0; nc = 0; s = strtok(buff," \t\n,"); for (;s!=NULL;) { v = atof(s); pnt_alloc(nd); if (isdigit(*s) || *s=='-' || *s=='+' || *s=='.') { pntxyz[nd++] = v; nc++; } else gprint("Not a number {%s} \n",s); s = strtok(NULL," \t\n,"); } if (nc>0 && nc!=3) { gprint("Expecting 3 columns in data file, found %d (FATAL ERROR) \n",nc); } } } fclose(df); npnts = nd; sf.pntxyz = pntxyz; sf.npnts = npnts; } /* defaults after data and commands read */ void hide_enddefaults() { if (dxmin==dxmax) dxmax = nx-1; if (dymin==dymax) dymax = ny-1; if (!sf.xaxis.maxset) sf.xaxis.max = dxmax; if (!sf.yaxis.maxset) sf.yaxis.max = dymax; if (!sf.xaxis.minset) sf.xaxis.min = dxmin; if (!sf.yaxis.minset) sf.yaxis.min = dymin; if (!sf.zaxis.minset) sf.zaxis.min = zmin; if (!sf.zaxis.maxset) sf.zaxis.max = zmax; if (sf.zrotate==0 && sf.xrotate==0 && sf.yrotate==0) { sf.xrotate = 60; sf.yrotate = 50; sf.zrotate = 20; /* not needed as is corrected later*/ } if (sf.eye_x== -1) { sf.eye_x = sf.sizex/2.0; sf.eye_y = sf.sizex/2.0; } } void hide_defaults() { /* Setup some defaults, */ memset(&sf,0,sizeof(sf)); sf.sizey = sf.sizex = 18; sf.sizey = sf.sizex = sf.sizez = 18; sf.screenx = 18; sf.screeny = 18; sf.eye_x = -1; sf.zaxis.type = 2; sf.yaxis.type = 1; sf.xaxis.on = sf.yaxis.on = sf.zaxis.on = true; sf.xaxis.min = 0; sf.xaxis.max = 10; sf.yaxis.min = 0; sf.yaxis.max = 10; sf.zaxis.min = 0; sf.zaxis.max = 10; sf.cube_hidden_on = true; sf.cube_on = true; sf.cube_front_on = false; sf.xlines_on = true; sf.ylines_on = true; sf.hidden_on = true; sf.top_on = true; sf.bot_on = false; sf.base_hidden = sf.right_hidden = sf.back_hidden = true; strcpy(sf.title_color, "BLACK"); strcpy(sf.cube_color, "BLACK"); strcpy(sf.droplines_color, "BLACK"); strcpy(sf.riselines_color, "BLACK"); strcpy(sf.marker_color, "BLACK"); strcpy(sf.xaxis.color, "BLACK"); strcpy(sf.xaxis.title_color, "BLACK"); strcpy(sf.yaxis.color, "BLACK"); strcpy(sf.yaxis.title_color, "BLACK"); strcpy(sf.zaxis.color, "BLACK"); strcpy(sf.zaxis.title_color, "BLACK"); nx = 0; ny = 0; xsample = 1; ysample = 1; zclipmin = 0; zclipminset = false; zclipmax = 0; zclipmaxset = false; zmin = GLE_INF; zmax = -GLE_INF; } gle-graphics-4.2.4c/src/gle/surface/gcontour.cpp0000644000000000000000000003245611575344411020300 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ /* Contouring program, creates gle files. */ #include "../all.h" #include "../tokens/Tokenizer.h" #include "../core.h" #include "../glearray.h" #include "../file_io.h" #include "../texinterface.h" #include "../cutils.h" #include "../cmdline.h" #include "../config.h" #include "../mem_limits.h" #include "../token.h" #include "../gprint.h" #include "../cutils.h" #define BEGINDEF extern #include "../begin.h" #include "f2c.h" double get_next_exp(TOKENS tk, int ntk, int *curtok); void get_next_exp_file(TOKENS tk, int ntok, int *curtok, string* res); #define kw(ss) if (ct <= ntk && str_i_equals(tk[ct],ss)) #define next_file_eval(s) get_next_exp_file(tk,ntk,&ct,&s) #define next_str(s) ct+=1;s=tk[ct] bool smooth = false; int smoothsub = 5; void draw_(double *x, double *y, int *iflag); int gcontr_(double *, int *, int *, int *, double *, int *, double *, int *, S_fp draw); int glefitcf_(int* mode, double *x, double *y, int* l, int* m, double *u, double *v, int* n); class GLEContourInfo { private: FILE* m_DatFile; FILE* m_LabFile; vector m_CVal; vector m_CLab; vector m_XPt; vector m_YPt; double m_XCur, m_YCur; GLEZData m_Data; public: GLEContourInfo(); ~GLEContourInfo(); inline int getNbLines() { return m_CVal.size(); } inline double getCValue(int i) { return m_CVal[i]; } inline void addValue(double v) { m_CVal.push_back(v); } inline double* getCValueArray() { return (double*)&m_CVal[0]; } inline double getXCur() { return m_XCur; } inline double getYCur() { return m_YCur; } inline void setXCur(double v) { m_XCur = v; } inline void setYCur(double v) { m_YCur = v; } inline int getNbDataPoints() { return m_XPt.size(); } inline double getDataX(int i) { return m_XPt[i]; } inline double getDataY(int i) { return m_YPt[i]; } inline double* getDataXArray() { return &m_XPt[0]; } inline double* getDataYArray() { return &m_YPt[0]; } inline void read(const string& fname) throw(ParserError) { m_Data.read(fname); } inline GLERectangle* getBounds() { return m_Data.getBounds(); } inline int getNX() { return m_Data.getNX(); } inline int getNY() { return m_Data.getNY(); } inline double getZMin() { return m_Data.getZMin(); } inline double getZMax() { return m_Data.getZMax(); } inline double* getData() { return m_Data.getData(); } void addDataPoint(double x, double y); void setDataPoint(int i, double x, double y); void addAllDataPoints(); void clearDataPoints(); double sx(double v); double sy(double v); void addUnknown(); void addPoint(double x, double y); void addPointScale(double x, double y); void addLabel(double x, double y, int i, double v); void addVect(int m, double x, double y); void fillDefault(double zmin, double zmax, double zdel); void createLabels(bool alpha); void openData(const string& name, const string& lab) throw(ParserError); void closeData(); void doContour(double zz[], int nrz, int nx, int ny, double zmax); void draw(double* x, double* y, int iflag); }; GLEContourInfo* g_ContourInfo = NULL; GLEContourInfo::GLEContourInfo() { m_DatFile = NULL; m_LabFile = NULL; m_XCur = 0.0; m_YCur = 0.0; } GLEContourInfo::~GLEContourInfo() { } void GLEContourInfo::addDataPoint(double x, double y) { m_XPt.push_back(x); m_YPt.push_back(y); } void GLEContourInfo::setDataPoint(int i, double x, double y) { m_XPt[i] = x; m_YPt[i] = y; } void GLEContourInfo::clearDataPoints() { m_XPt.clear(); m_YPt.clear(); } void GLEContourInfo::addAllDataPoints() { for (int i = 0; i < getNbDataPoints(); i++) { addPoint(getDataX(i), getDataY(i)); } } void GLEContourInfo::fillDefault(double zmin, double zmax, double zdel) { double zval = zmin; do { m_CVal.push_back(zval); zval += zdel; } while (zval <= zmax); } void GLEContourInfo::createLabels(bool alpha) { for (int i = 0; i < getNbLines(); i++) { if (alpha) { char buff[20]; sprintf(buff,"%c",i+'A'); m_CLab.push_back(buff); } else { // use numberformat instead later on char buff[50]; sprintf(buff,"%g",m_CVal[i]); m_CLab.push_back(buff); } } } void GLEContourInfo::openData(const string& name, const string& lab) throw(ParserError) { m_DatFile = validate_fopen(name, "w", false); m_LabFile = validate_fopen(lab, "w", false); } void GLEContourInfo::closeData() { fclose(m_DatFile); fclose(m_LabFile); m_DatFile = NULL; m_LabFile = NULL; } void GLEContourInfo::doContour(double zz[], int nrz, int nx, int ny, double zmax) { int ncv = getNbLines(); // dimension of work is large enough to contain // 2*(dimension of c)*(total dimension of z) useful bits int bytes = ((int)sizeof(int) * 2 * ncv * nx * ny)/31 + 10; int* work = (int*)malloc(bytes); if (work == NULL) { printf("Unable to allocate storage for work array\n"); exit(1); } memset(work, 0, bytes); zmax = zmax + 100; /* no clipping */ double* cvalp = getCValueArray(); gcontr_(zz, &nrz, &nx, &ny, cvalp, &ncv, &zmax, work, (S_fp)draw_); } double GLEContourInfo::sx(double v) { GLERectangle* bounds = getBounds(); return bounds->getXMin() + (bounds->getXMax()-bounds->getXMin())*(v-1)/(getNX()-1); } double GLEContourInfo::sy(double v) { GLERectangle* bounds = getBounds(); return bounds->getYMin() + (bounds->getYMax()-bounds->getYMin())*(v-1)/(getNY()-1); } void GLEContourInfo::addUnknown() { fprintf(m_DatFile, "* *\n"); } void GLEContourInfo::addPoint(double x, double y) { fprintf(m_DatFile,"%g %g\n", x, y); } void GLEContourInfo::addPointScale(double x, double y) { fprintf(m_DatFile,"%g %g\n", sx(x), sy(y)); } void GLEContourInfo::addLabel(double x, double y, int i, double v) { fprintf(m_LabFile,"%g %g %d %g\n", x, y, i, v); } void GLEContourInfo::draw(double* x, double* y, int iflag) { int ih = iflag / 10; /* printf("level %d \n",ih); */ int il = iflag - ih * 10; switch (il) { case 6: /* Get current point */ *x = getXCur(); *y = getYCur(); break; case 2: /* start contour at bondary */ case 3: /* start contour not at bondary */ if (smooth) addVect(1, sx(*x), sy(*y)); else { addUnknown(); addPointScale(*x, *y); } addLabel(sx(*x),sy(*y), ih-1, getCValue(ih-1)); break; case 1: /* continue a contour */ if (smooth) addVect(2, sx(*x), sy(*y)); else addPointScale(*x, *y); break; case 4: /* finish contour at a boundary */ if (smooth) addVect(4, sx(*x), sy(*y)); else addPointScale(*x, *y); break; case 5: /* finish close contour */ if (smooth) addVect(3, sx(*x), sy(*y)); else addPointScale(*x, *y); break; } setXCur(*x); setYCur(*y); } void GLEContourInfo::addVect(int m, double x, double y) { if (m == 1) { if (getNbDataPoints() != 0) printf("Error, some points not drawn \n"); clearDataPoints(); } int nbpts = getNbDataPoints(); if (nbpts > 0 && getDataX(nbpts-1) == x && getDataY(nbpts-1) == y) { if (m <= 2) addDataPoint(x, y); } else { addDataPoint(x, y); } // Connect the ends by adding some points if contour is right sort // 4 = boundary, 3 = closed shape if (m == 3 || m == 4) { if (nbpts < 2) { addAllDataPoints(); clearDataPoints(); return; } bool snipends = false; if (m == 3) { snipends = true; int nbpts = getNbDataPoints(); addDataPoint(getDataX(nbpts-1), getDataY(nbpts-1)); for (int i = nbpts-1; i > 0; i--) { setDataPoint(i, getDataX(i-1), getDataY(i-1)); } setDataPoint(0, getDataX(nbpts-1), getDataY(nbpts-1)); addDataPoint(getDataX(2), getDataY(2)); } int ninp = getNbDataPoints(); int mode = 2; // multi valued // int nsub = smoothsub; // user parameter // if (nsub < 3) nsub = 3; int nsub = 10; int nout = (ninp-1)*nsub+1; cout << "nsub = " << nsub << endl; double* xout = (double*)malloc(nout*sizeof(double)); double* yout = (double*)malloc(nout*sizeof(double)); glefitcf_(&mode,getDataXArray(),getDataYArray(),&ninp,&nsub,xout,yout,&nout); clearDataPoints(); addUnknown(); if (snipends) { for (int i = nsub; i < nout-nsub; i++) { addPoint(xout[i], yout[i]); } } else { cout << "nin = " << ninp << " nout = " << nout << endl; for (int i = 0; i < nout; i++) { addPoint(xout[i], yout[i]); } } free(xout); free(yout); } } void get_contour_values(GLEContourInfo* info, int ct) throw(ParserError) { double from, to, step; bool has_from = false; bool has_to = false; bool has_step = false; while (ct < ntk) { if (str_i_equals(tk[ct+1], "FROM")) { ct++; from = get_next_exp(tk, ntk, &ct); has_from = true; } else if (str_i_equals(tk[ct+1], "TO")) { ct++; to = get_next_exp(tk, ntk, &ct); has_to = true; } else if (str_i_equals(tk[ct+1], "STEP")) { ct++; step = get_next_exp(tk, ntk, &ct); has_step = true; } else { double v = get_next_exp(tk, ntk, &ct); info->addValue(v); } } if (has_from && has_to && has_step) { info->fillDefault(from, to, step); } } void begin_contour(int *pln, int *pcode, int *cp) throw(ParserError) { string data_file; vector cval; vector clab; // Create new contourinfo object if (g_ContourInfo != NULL) { delete g_ContourInfo; g_ContourInfo = NULL; } g_ContourInfo = new GLEContourInfo(); // Start with pcode from the next line (*pln)++; begin_init(); while (true) { int st = begin_token(&pcode,cp,pln,srclin,tk,&ntk,outbuff); if (!st) { /* exit loop */ break; } int ct = 1; // cout << "ct = " << ct << " tk = " << ntk << " tk = " << tk[ct] << endl; kw("DATA") { next_file_eval(data_file); g_ContourInfo->read(data_file); } else kw("VALUES") { get_contour_values(g_ContourInfo, ct); } else kw("LABELS") { // get_contour_label_sett(&alpha); } else kw("SMOOTH") { smoothsub = atoi(tk[++ct]); } else if (ct <= ntk) { stringstream err; err << "illegal keyword in contour block: '" << tk[ct] << "'"; g_throw_parser_error(err.str()); } } int nx = g_ContourInfo->getNX(); int ny = g_ContourInfo->getNY(); double zmin = g_ContourInfo->getZMin(); double zmax = g_ContourInfo->getZMax(); if (g_ContourInfo->getNbLines() == 0) { g_ContourInfo->fillDefault(zmin, zmax, (zmax-zmin)/10.0); } int zdim = nx; g_ContourInfo->createLabels(true); string dat_file, val_file, lab_file; GetMainName(data_file, dat_file); GetMainName(data_file, val_file); GetMainName(data_file, lab_file); dat_file += "-cdata.dat"; val_file += "-cvalues.dat"; lab_file += "-clabels.dat"; FILE* val_f = validate_fopen(val_file, "w", false); if (val_f != NULL) { for (int i = 0; i < g_ContourInfo->getNbLines(); i++) { fprintf(val_f, "%g\n", g_ContourInfo->getCValue(i)); } fclose(val_f); } g_ContourInfo->openData(dat_file, lab_file); g_ContourInfo->doContour(g_ContourInfo->getData(),zdim,nx,ny,zmax); g_ContourInfo->closeData(); } void plot_(double *a, double *b, int *c) { } void draw_(double *x, double *y, int *iflag) { g_ContourInfo->draw(x, y, *iflag); } gle-graphics-4.2.4c/src/gle/surface/gsurface.h0000664000000000000000000001104411652073235017673 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ class GLESurfaceBlockBase : public GLEBlockWithSimpleKeywords { public: GLESurfaceBlockBase(); virtual ~GLESurfaceBlockBase(); virtual GLEBlockInstance* beginExecuteBlockImpl(GLESourceLine& sline, int *pcode, int *cp); }; typedef char MARKER[12]; typedef char COLOR[12]; typedef char LSTYLE[12]; struct GLEAxis3D { int type; /* 0=xaxis,yaxis, 1=zaxis. */ float min, max, step, hei, dist, ticklen; int minset,maxset; COLOR color; int on; char* title; COLOR title_color; float title_hei,title_dist; int nofirst,nolast; }; struct surface_struct { float sizez, sizex, sizey, title_hei, title_dist; float screenx, screeny; char* title; COLOR zcolour; COLOR title_color; int maxh; /* dimension for height array, about 1000 is good */ int npnts; /* data points for markers, droplines etc */ float *pntxyz; int nx, ny; float *z; float zmin, zmax; struct GLEAxis3D xaxis; /* The axes */ struct GLEAxis3D yaxis; struct GLEAxis3D zaxis; int back_hidden,right_hidden,base_hidden; COLOR back_lstyle,back_color; /* grids on back,base,right */ float back_ystep,back_zstep; COLOR base_color,base_lstyle; float base_xstep,base_ystep; COLOR right_color,right_lstyle; float right_xstep,right_zstep; int cube_hidden_on; /* Cube hidden lines not removed */ int cube_on,cube_front_on; COLOR cube_color; LSTYLE cube_lstyle; float eye_x, eye_y, vdist; float xrotate, yrotate, zrotate; int skirt_on; int xlines_on,ylines_on; int hidden_on,top_on,bot_on; COLOR top_color,bot_color; LSTYLE top_lstyle,bot_lstyle; int droplines,droplines_hidden; LSTYLE droplines_lstyle; COLOR droplines_color; int riselines,riselines_hidden; LSTYLE riselines_lstyle; COLOR riselines_color; MARKER marker; COLOR marker_color; float marker_hei; int ctop_hidden; /* Contouring */ float ctop_from,ctop_to,ctop_step; int cbase_hidden; float cbase_from,cbase_to,cbase_step; } ; gle-graphics-4.2.4c/src/gle/font.h0000664000000000000000000001036711704312455015417 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ struct char_data { float wx, wy, x1, y1, x2, y2; }; class FontCompositeInfo { public: int c1, c2; double dx1, dy1; double dx2, dy2; }; typedef struct { unsigned int CharCode; float X; float Y; } GLEFontKernInfo; typedef struct { unsigned int NextChar; unsigned int RepChar; } GLEFontLigatureInfo; typedef struct { int encoding; /* 1 = postscript text, 2 = postscrip symbol, 3 = TEX text, 4 = TEX symbol, 5 = GLE markers */ float space, space_stretch, space_shrink; float scale, slant, uposition, uthickness; float fx1, fy1, fx2, fy2, caphei, xhei, descender, ascender; } GLEFontTable; class GLEFontCharData { public: vector Kern; vector Lig; float wx, wy, x1, y1, x2, y2; public: GLEFontCharData(); ~GLEFontCharData(); }; class GLEFontUnicodeMap; class GLECoreFont { public: char *name; char *full_name; char *file_metric; char *file_vector; char *file_bitmap; bool metric_loaded; bool error; GLEFontTable info; GLEFontUnicodeMap* unimap; IntKeyHash composites; public: GLECoreFont(); ~GLECoreFont(); int char_lig(int *c1, int c2); void char_kern(int c1, int c2, float *w); FontCompositeInfo* get_composite_char(int ch, int accent); int unicode_map(unsigned int ucode); GLEFontCharData* getCharData(int cc); GLEFontCharData* getCharDataThrow(int cc); GLEFontCharData* addCharData(); private: std::vector cdata; }; GLECoreFont* get_core_font(int font); GLECoreFont* get_core_font_ensure_loaded(int font); #ifndef FONTDEF #define FONTDEF #endif FONTDEF vector fnt; gle-graphics-4.2.4c/src/makefmt/parseAFM.cpp0000664000000000000000000012742511575345011017323 0ustar rootroot/* * (C) 1988, 1989, 1990 by Adobe Systems Incorporated. All rights reserved. * * This file may be freely copied and redistributed as long as: * 1) This entire notice continues to be included in the file, * 2) If the file has been modified in any way, a notice of such * modification is conspicuously indicated. * * PostScript, Display PostScript, and Adobe are registered trademarks of * Adobe Systems Incorporated. * * ************************************************************************ * THE INFORMATION BELOW IS FURNISHED AS IS, IS SUBJECT TO CHANGE WITHOUT * NOTICE, AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY ADOBE SYSTEMS * INCORPORATED. ADOBE SYSTEMS INCORPORATED ASSUMES NO RESPONSIBILITY OR * LIABILITY FOR ANY ERRORS OR INACCURACIES, MAKES NO WARRANTY OF ANY * KIND (EXPRESS, IMPLIED OR STATUTORY) WITH RESPECT TO THIS INFORMATION, * AND EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES OF MERCHANTABILITY, * FITNESS FOR PARTICULAR PURPOSES AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. * ************************************************************************ */ /* * Changes made by GLE developers are indicated with "** GLE **" * These changes are required to make parseAFM compile as "C++" code (the original code is "C") */ /* parseAFM.c * * This file is used in conjuction with the parseAFM.h header file. * This file contains several procedures that are used to parse AFM * files. It is intended to work with an application program that needs * font metric information. The program can be used as is by making a * procedure call to "parseFile" (passing in the expected parameters) * and having it fill in a data structure with the data from the * AFM file, or an application developer may wish to customize this * code. * * There is also a file, parseAFMclient.c, that is a sample application * showing how to call the "parseFile" procedure and how to use the data * after "parseFile" has returned. * * Please read the comments in parseAFM.h and parseAFMclient.c. * * History: * original: DSM Thu Oct 20 17:39:59 PDT 1988 * modified: DSM Mon Jul 3 14:17:50 PDT 1989 * - added 'storageProblem' return code * - fixed bug of not allocating extra byte for string duplication * - fixed typos * modified: DSM Tue Apr 3 11:18:34 PDT 1990 * - added free(ident) at end of parseFile routine * modified: DSM Tue Jun 19 10:16:29 PDT 1990 * - changed (width == 250) to (width = 250) in initializeArray */ // #include // #include // #include // #include // ** GLE ** replaced above four lines by the following one #include "basicconf.h" #include "parseAFM.h" #define lineterm EOL /* line terminating character */ #define normalEOF 1 /* return code from parsing routines used only */ /* in this module */ #define Space "space" /* used in string comparison to look for the width */ /* of the space character to init the widths array */ #define False "false" /* used in string comparison to check the value of */ /* boolean keys (e.g. IsFixedPitch) */ #define MATCH(A,B) (strncmp((A),(B), MAX_NAME) == 0) /*************************** GLOBALS ***********************/ static char *ident = NULL; /* storage buffer for keywords */ /* "shorts" for fast case statement * The values of each of these enumerated items correspond to an entry in the * table of strings defined below. Therefore, if you add a new string as * new keyword into the keyStrings table, you must also add a corresponding * parseKey AND it MUST be in the same position! * * IMPORTANT: since the sorting algorithm is a binary search, the strings of * keywords must be placed in lexicographical order, below. [Therefore, the * enumerated items are not necessarily in lexicographical order, depending * on the name chosen. BUT, they must be placed in the same position as the * corresponding key string.] The NOPE shall remain in the last position, * since it does not correspond to any key string, and it is used in the * "recognize" procedure to calculate how many possible keys there are. */ // static enum parseKey { // ** GLE ** removed keyword "static" from previous line // ** GLE ** added constants STDHW and STDVW to be able to parse Adobe-Core35_AFMs-314 AFMs enum parseKey { ASCENDER, CHARBBOX, CODE, COMPCHAR, CAPHEIGHT, COMMENT, DESCENDER, ENCODINGSCHEME, ENDCHARMETRICS, ENDCOMPOSITES, ENDFONTMETRICS, ENDKERNDATA, ENDKERNPAIRS, ENDTRACKKERN, FAMILYNAME, FONTBBOX, FONTNAME, FULLNAME, ISFIXEDPITCH, ITALICANGLE, KERNPAIR, KERNPAIRXAMT, LIGATURE, CHARNAME, NOTICE, COMPCHARPIECE, STARTCHARMETRICS, STARTCOMPOSITES, STARTFONTMETRICS, STARTKERNDATA, STARTKERNPAIRS, STARTTRACKKERN, STDHW, STDVW, TRACKKERN, UNDERLINEPOSITION, UNDERLINETHICKNESS, VERSION, XYWIDTH, XWIDTH, WEIGHT, XHEIGHT, NOPE }; /* keywords for the system: * This a table of all of the current strings that are vaild AFM keys. * Each entry can be referenced by the appropriate parseKey value (an * enumerated data type defined above). If you add a new keyword here, * a corresponding parseKey MUST be added to the enumerated data type * defined above, AND it MUST be added in the same position as the * string is in this table. * * IMPORTANT: since the sorting algorithm is a binary search, the keywords * must be placed in lexicographical order. And, NULL should remain at the * end. */ // static char *keyStrings[] = { // ** GLE ** added keyword "const" to previous line // ** GLE ** added keywords "StdHW" and "StdVW" to be able to parse Adobe-Core35_AFMs-314 AFMs static const char *keyStrings[] = { "Ascender", "B", "C", "CC", "CapHeight", "Comment", "Descender", "EncodingScheme", "EndCharMetrics", "EndComposites", "EndFontMetrics", "EndKernData", "EndKernPairs", "EndTrackKern", "FamilyName", "FontBBox", "FontName", "FullName", "IsFixedPitch", "ItalicAngle", "KP", "KPX", "L", "N", "Notice", "PCC", "StartCharMetrics", "StartComposites", "StartFontMetrics", "StartKernData", "StartKernPairs", "StartTrackKern", "StdHW", "StdVW", "TrackKern", "UnderlinePosition", "UnderlineThickness", "Version", "W", "WX", "Weight", "XHeight", NULL }; /*************************** PARSING ROUTINES **************/ /*************************** token *************************/ /* A "AFM File Conventions" tokenizer. That means that it will * return the next token delimited by white space. See also * the `linetoken' routine, which does a similar thing but * reads all tokens until the next end-of-line. */ // static char *token(stream) // FILE *stream; // ** GLE ** replaced above two lines by the following one static char *token(FILE *stream) { int ch, idx; /* skip over white space */ while ((ch = fgetc(stream)) == ' ' || ch == lineterm || ch == ',' || ch == '\t' || ch == ';'); idx = 0; while (ch != EOF && ch != ' ' && ch != lineterm && ch != '\t' && ch != ':' && ch != ';') { ident[idx++] = ch; ch = fgetc(stream); } /* while */ if (ch == EOF && idx < 1) return ((char *)NULL); if (idx >= 1 && ch != ':' ) ungetc(ch, stream); if (idx < 1 ) ident[idx++] = ch; /* single-character token */ ident[idx] = 0; return(ident); /* returns pointer to the token */ } /* token */ /*************************** linetoken *************************/ /* "linetoken" will get read all tokens until the EOL character from * the given stream. This is used to get any arguments that can be * more than one word (like Comment lines and FullName). */ // static char *linetoken(stream) // FILE *stream; // ** GLE ** replaced above two lines by the following one static char *linetoken(FILE *stream) { int ch, idx; while ((ch = fgetc(stream)) == ' ' || ch == '\t' ); idx = 0; while (ch != EOF && ch != lineterm) { ident[idx++] = ch; ch = fgetc(stream); } /* while */ ungetc(ch, stream); ident[idx] = 0; return(ident); /* returns pointer to the token */ } /* linetoken */ /*************************** recognize *************************/ /* This function tries to match a string to a known list of * valid AFM entries (check the keyStrings array above). * "ident" contains everything from white space through the * next space, tab, or ":" character. * * The algorithm is a standard Knuth binary search. */ //static enum parseKey recognize(ident) // register char *ident; // ** GLE ** replaced above two lines by the following one static enum parseKey recognize(char* ident) { int lower = 0, upper = (int) NOPE, midpoint, cmpvalue; BOOL found = FALSE; while ((upper >= lower) && !found) { midpoint = (lower + upper)/2; if (keyStrings[midpoint] == NULL) break; cmpvalue = strncmp(ident, keyStrings[midpoint], MAX_NAME); if (cmpvalue == 0) found = TRUE; else if (cmpvalue < 0) upper = midpoint - 1; else lower = midpoint + 1; } /* while */ if (found) return (enum parseKey) midpoint; else return NOPE; } /* recognize */ /************************* parseGlobals *****************************/ /* This function is called by "parseFile". It will parse the AFM File * up to the "StartCharMetrics" keyword, which essentially marks the * end of the Global Font Information and the beginning of the character * metrics information. * * If the caller of "parseFile" specified that it wanted the Global * Font Information (as defined by the "AFM File Specification" * document), then that information will be stored in the returned * data structure. * * Any Global Font Information entries that are not found in a * given file, will have the usual default initialization value * for its type (i.e. entries of type int will be 0, etc). * * This function returns an error code specifying whether there was * a premature EOF or a parsing error. This return value is used by * parseFile to determine if there is more file to parse. */ //static BOOL parseGlobals(fp, gfi) // FILE *fp; // register GlobalFontInfo *gfi; // ** GLE ** replaced above three lines by the following one static BOOL parseGlobals(FILE *fp, GlobalFontInfo *gfi) { BOOL cont = TRUE, save = (gfi != NULL); int error = ok; register char *keyword; while (cont) { keyword = token(fp); if (keyword == NULL) /* Have reached an early and unexpected EOF. */ /* Set flag and stop parsing */ { error = earlyEOF; break; /* get out of loop */ } if (!save) /* get tokens until the end of the Global Font info section */ /* without saving any of the data */ switch (recognize(keyword)) { case STARTCHARMETRICS: cont = FALSE; break; case ENDFONTMETRICS: cont = FALSE; error = normalEOF; break; default: break; } /* switch */ else /* otherwise parse entire global font info section, */ /* saving the data */ switch(recognize(keyword)) { case STARTFONTMETRICS: keyword = token(fp); gfi->afmVersion = (char *) malloc(strlen(keyword) + 1); strcpy(gfi->afmVersion, keyword); break; case COMMENT: keyword = linetoken(fp); break; case FONTNAME: keyword = token(fp); gfi->fontName = (char *) malloc(strlen(keyword) + 1); strcpy(gfi->fontName, keyword); break; case ENCODINGSCHEME: keyword = token(fp); gfi->encodingScheme = (char *) malloc(strlen(keyword) + 1); strcpy(gfi->encodingScheme, keyword); break; case FULLNAME: keyword = linetoken(fp); gfi->fullName = (char *) malloc(strlen(keyword) + 1); strcpy(gfi->fullName, keyword); break; case FAMILYNAME: keyword = linetoken(fp); gfi->familyName = (char *) malloc(strlen(keyword) + 1); strcpy(gfi->familyName, keyword); break; case WEIGHT: keyword = token(fp); gfi->weight = (char *) malloc(strlen(keyword) + 1); strcpy(gfi->weight, keyword); break; case ITALICANGLE: keyword = token(fp); gfi->italicAngle = atof(keyword); if (errno == ERANGE) error = parseError; break; case ISFIXEDPITCH: keyword = token(fp); if (MATCH(keyword, False)) gfi->isFixedPitch = 0; else gfi->isFixedPitch = 1; break; case UNDERLINEPOSITION: keyword = token(fp); gfi->underlinePosition = atoi(keyword); break; case UNDERLINETHICKNESS: keyword = token(fp); gfi->underlineThickness = atoi(keyword); break; case VERSION: keyword = token(fp); gfi->version = (char *) malloc(strlen(keyword) + 1); strcpy(gfi->version, keyword); break; case NOTICE: keyword = linetoken(fp); gfi->notice = (char *) malloc(strlen(keyword) + 1); strcpy(gfi->notice, keyword); break; case FONTBBOX: keyword = token(fp); gfi->fontBBox.llx = atoi(keyword); keyword = token(fp); gfi->fontBBox.lly = atoi(keyword); keyword = token(fp); gfi->fontBBox.urx = atoi(keyword); keyword = token(fp); gfi->fontBBox.ury = atoi(keyword); break; case CAPHEIGHT: keyword = token(fp); gfi->capHeight = atoi(keyword); break; case XHEIGHT: keyword = token(fp); gfi->xHeight = atoi(keyword); break; case DESCENDER: keyword = token(fp); gfi->descender = atoi(keyword); break; case ASCENDER: keyword = token(fp); gfi->ascender = atoi(keyword); break; case STARTCHARMETRICS: cont = FALSE; break; case ENDFONTMETRICS: cont = FALSE; error = normalEOF; break; // ** GLE ** added cases STDHW and STDVW to be able to parse Adobe-Core35_AFMs-314 AFMs case STDHW: token(fp); break; case STDVW: token(fp); break; case NOPE: default: error = parseError; break; } /* switch */ } /* while */ return(error); } /* parseGlobals */ /************************* initializeArray ************************/ /* Unmapped character codes are (at Adobe Systems) assigned the * width of the space character (if one exists) else they get the * value of 250 ems. This function initializes all entries in the * char widths array to have this value. Then any mapped character * codes will be replaced with the width of the appropriate character * when parsing the character metric section. * This function parses the Character Metrics Section looking * for a space character (by comparing character names). If found, * the width of the space character will be used to initialize the * values in the array of character widths. * * Before returning, the position of the read/write pointer of the * file is reset to be where it was upon entering this function. */ //static int initializeArray(fp, cwi) // FILE *fp; // register int *cwi; // ** GLE ** replaced above three lines by the following one int initializeArray(FILE *fp, int *cwi) { BOOL cont = TRUE, found = FALSE; long opos = ftell(fp); int width = 0, i = 0, error = 0; register char *keyword; while (cont) { keyword = token(fp); if (keyword == NULL) { error = earlyEOF; break; /* get out of loop */ } switch(recognize(keyword)) { case COMMENT: keyword = linetoken(fp); break; case CODE: atoi(token(fp)); break; case XWIDTH: width = atoi(token(fp)); break; case CHARNAME: keyword = token(fp); if (MATCH(keyword, Space)) { cont = FALSE; found = TRUE; } break; case ENDCHARMETRICS: cont = FALSE; break; case ENDFONTMETRICS: cont = FALSE; error = normalEOF; break; case NOPE: default: error = parseError; break; } /* switch */ } /* while */ if (!found) width = 250; for (i = 0; i < 256; ++i) cwi[i] = width; fseek(fp, opos, 0); return(error); } /* initializeArray */ /************************* parseCharWidths **************************/ /* This function is called by "parseFile". It will parse the AFM File * up to the "EndCharMetrics" keyword. It will save the character * width info (as opposed to all of the character metric information) * if requested by the caller of parseFile. Otherwise, it will just * parse through the section without saving any information. * * If data is to be saved, parseCharWidths is passed in a pointer * to an array of widths that has already been initialized by the * standard value for unmapped character codes. This function parses * the Character Metrics section only storing the width information * for the encoded characters into the array using the character code * as the index into that array. * * This function returns an error code specifying whether there was * a premature EOF or a parsing error. This return value is used by * parseFile to determine if there is more file to parse. */ //static parseCharWidths(fp, cwi) // FILE *fp; // register int *cwi; // ** GLE ** replaced above three lines by the following one static int parseCharWidths(FILE *fp, int *cwi) { BOOL cont = TRUE, save = (cwi != NULL); int pos = 0, error = ok; register char *keyword; while (cont) { keyword = token(fp); /* Have reached an early and unexpected EOF. */ /* Set flag and stop parsing */ if (keyword == NULL) { error = earlyEOF; break; /* get out of loop */ } if (!save) /* get tokens until the end of the Char Metrics section without */ /* saving any of the data*/ switch (recognize(keyword)) { case ENDCHARMETRICS: cont = FALSE; break; case ENDFONTMETRICS: cont = FALSE; error = normalEOF; break; default: break; } /* switch */ else /* otherwise parse entire char metrics section, saving */ /* only the char x-width info */ switch(recognize(keyword)) { case COMMENT: keyword = linetoken(fp); break; case CODE: keyword = token(fp); pos = atoi(keyword); break; case XYWIDTH: /* PROBLEM: Should be no Y-WIDTH when doing "quick & dirty" */ keyword = token(fp); keyword = token(fp); /* eat values */ error = parseError; break; case XWIDTH: keyword = token(fp); if (pos >= 0) /* ignore unmapped chars */ cwi[pos] = atoi(keyword); break; case ENDCHARMETRICS: cont = FALSE; break; case ENDFONTMETRICS: cont = FALSE; error = normalEOF; break; case CHARNAME: /* eat values (so doesn't cause parseError) */ keyword = token(fp); break; case CHARBBOX: keyword = token(fp); keyword = token(fp); keyword = token(fp); keyword = token(fp); break; case LIGATURE: keyword = token(fp); keyword = token(fp); break; case NOPE: default: error = parseError; break; } /* switch */ } /* while */ return(error); } /* parseCharWidths */ /************************* parseCharMetrics ************************/ /* This function is called by parseFile if the caller of parseFile * requested that all character metric information be saved * (as opposed to only the character width information). * * parseCharMetrics is passed in a pointer to an array of records * to hold information on a per character basis. This function * parses the Character Metrics section storing all character * metric information for the ALL characters (mapped and unmapped) * into the array. * * This function returns an error code specifying whether there was * a premature EOF or a parsing error. This return value is used by * parseFile to determine if there is more file to parse. */ //static parseCharMetrics(fp, fi) // FILE *fp; // register FontInfo *fi; // ** GLE ** replaced above three lines by the following one static int parseCharMetrics(FILE *fp, FontInfo *fi) { BOOL cont = TRUE, firstTime = TRUE; int error = ok, count = 0; register CharMetricInfo *temp = fi->cmi; register char *keyword; while (cont) { keyword = token(fp); if (keyword == NULL) { error = earlyEOF; break; /* get out of loop */ } switch(recognize(keyword)) { case COMMENT: keyword = linetoken(fp); break; case CODE: if (count < fi->numOfChars) { if (firstTime) firstTime = FALSE; else temp++; temp->code = atoi(token(fp)); count++; } else { error = parseError; cont = FALSE; } break; case XYWIDTH: temp->wx = atoi(token(fp)); temp->wy = atoi(token(fp)); break; case XWIDTH: temp->wx = atoi(token(fp)); break; case CHARNAME: keyword = token(fp); temp->name = (char *) malloc(strlen(keyword) + 1); strcpy(temp->name, keyword); break; case CHARBBOX: temp->charBBox.llx = atoi(token(fp)); temp->charBBox.lly = atoi(token(fp)); temp->charBBox.urx = atoi(token(fp)); temp->charBBox.ury = atoi(token(fp)); break; case LIGATURE: { Ligature **tail = &(temp->ligs); Ligature *node = *tail; if (*tail != NULL) { while (node->next != NULL) node = node->next; tail = &(node->next); } *tail = (Ligature *) calloc(1, sizeof(Ligature)); keyword = token(fp); (*tail)->succ = (char *) malloc(strlen(keyword) + 1); strcpy((*tail)->succ, keyword); keyword = token(fp); (*tail)->lig = (char *) malloc(strlen(keyword) + 1); strcpy((*tail)->lig, keyword); break; } case ENDCHARMETRICS: cont = FALSE;; break; case ENDFONTMETRICS: cont = FALSE; error = normalEOF; break; case NOPE: default: error = parseError; break; } /* switch */ } /* while */ if ((error == ok) && (count != fi->numOfChars)) error = parseError; return(error); } /* parseCharMetrics */ /************************* parseTrackKernData ***********************/ /* This function is called by "parseFile". It will parse the AFM File * up to the "EndTrackKern" or "EndKernData" keywords. It will save the * track kerning data if requested by the caller of parseFile. * * parseTrackKernData is passed in a pointer to the FontInfo record. * If data is to be saved, the FontInfo record will already contain * a valid pointer to storage for the track kerning data. * * This function returns an error code specifying whether there was * a premature EOF or a parsing error. This return value is used by * parseFile to determine if there is more file to parse. */ //static parseTrackKernData(fp, fi) // FILE *fp; // register FontInfo *fi; // ** GLE ** replaced above three lines by the following one static int parseTrackKernData(FILE *fp, FontInfo *fi) { BOOL cont = TRUE, save = (fi->tkd != NULL); int pos = 0, error = ok, tcount = 0; register char *keyword; while (cont) { keyword = token(fp); if (keyword == NULL) { error = earlyEOF; break; /* get out of loop */ } if (!save) /* get tokens until the end of the Track Kerning Data */ /* section without saving any of the data */ switch(recognize(keyword)) { case ENDTRACKKERN: case ENDKERNDATA: cont = FALSE; break; case ENDFONTMETRICS: cont = FALSE; error = normalEOF; break; default: break; } /* switch */ else /* otherwise parse entire Track Kerning Data section, */ /* saving the data */ switch(recognize(keyword)) { case COMMENT: keyword = linetoken(fp); break; case TRACKKERN: if (tcount < fi->numOfTracks) { keyword = token(fp); fi->tkd[pos].degree = atoi(keyword); keyword = token(fp); fi->tkd[pos].minPtSize = atof(keyword); if (errno == ERANGE) error = parseError; keyword = token(fp); fi->tkd[pos].minKernAmt = atof(keyword); if (errno == ERANGE) error = parseError; keyword = token(fp); fi->tkd[pos].maxPtSize = atof(keyword); if (errno == ERANGE) error = parseError; keyword = token(fp); fi->tkd[pos++].maxKernAmt = atof(keyword); if (errno == ERANGE) error = parseError; tcount++; } else { error = parseError; cont = FALSE; } break; case ENDTRACKKERN: case ENDKERNDATA: cont = FALSE; break; case ENDFONTMETRICS: cont = FALSE; error = normalEOF; break; case NOPE: default: error = parseError; break; } /* switch */ } /* while */ if (error == ok && tcount != fi->numOfTracks) error = parseError; return(error); } /* parseTrackKernData */ /************************* parsePairKernData ************************/ /* This function is called by "parseFile". It will parse the AFM File * up to the "EndKernPairs" or "EndKernData" keywords. It will save * the pair kerning data if requested by the caller of parseFile. * * parsePairKernData is passed in a pointer to the FontInfo record. * If data is to be saved, the FontInfo record will already contain * a valid pointer to storage for the pair kerning data. * * This function returns an error code specifying whether there was * a premature EOF or a parsing error. This return value is used by * parseFile to determine if there is more file to parse. */ //static parsePairKernData(fp, fi) // FILE *fp; // register FontInfo *fi; // ** GLE ** replaced above three lines by the following one static int parsePairKernData(FILE* fp, FontInfo *fi) { BOOL cont = TRUE, save = (fi->pkd != NULL); int pos = 0, error = ok, pcount = 0; register char *keyword; while (cont) { keyword = token(fp); if (keyword == NULL) { error = earlyEOF; break; /* get out of loop */ } if (!save) /* get tokens until the end of the Pair Kerning Data */ /* section without saving any of the data */ switch(recognize(keyword)) { case ENDKERNPAIRS: case ENDKERNDATA: cont = FALSE; break; case ENDFONTMETRICS: cont = FALSE; error = normalEOF; break; default: break; } /* switch */ else /* otherwise parse entire Pair Kerning Data section, */ /* saving the data */ switch(recognize(keyword)) { case COMMENT: keyword = linetoken(fp); break; case KERNPAIR: if (pcount < fi->numOfPairs) { keyword = token(fp); fi->pkd[pos].name1 = (char *) malloc(strlen(keyword) + 1); strcpy(fi->pkd[pos].name1, keyword); keyword = token(fp); fi->pkd[pos].name2 = (char *) malloc(strlen(keyword) + 1); strcpy(fi->pkd[pos].name2, keyword); keyword = token(fp); fi->pkd[pos].xamt = atoi(keyword); keyword = token(fp); fi->pkd[pos++].yamt = atoi(keyword); pcount++; } else { error = parseError; cont = FALSE; } break; case KERNPAIRXAMT: if (pcount < fi->numOfPairs) { keyword = token(fp); fi->pkd[pos].name1 = (char *) malloc(strlen(keyword) + 1); strcpy(fi->pkd[pos].name1, keyword); keyword = token(fp); fi->pkd[pos].name2 = (char *) malloc(strlen(keyword) + 1); strcpy(fi->pkd[pos].name2, keyword); keyword = token(fp); fi->pkd[pos++].xamt = atoi(keyword); pcount++; } else { error = parseError; cont = FALSE; } break; case ENDKERNPAIRS: case ENDKERNDATA: cont = FALSE; break; case ENDFONTMETRICS: cont = FALSE; error = normalEOF; break; case NOPE: default: error = parseError; break; } /* switch */ } /* while */ if (error == ok && pcount != fi->numOfPairs) error = parseError; return(error); } /* parsePairKernData */ /************************* parseCompCharData **************************/ /* This function is called by "parseFile". It will parse the AFM File * up to the "EndComposites" keyword. It will save the composite * character data if requested by the caller of parseFile. * * parseCompCharData is passed in a pointer to the FontInfo record, and * a boolean representing if the data should be saved. * * This function will create the appropriate amount of storage for * the composite character data and store a pointer to the storage * in the FontInfo record. * * This function returns an error code specifying whether there was * a premature EOF or a parsing error. This return value is used by * parseFile to determine if there is more file to parse. */ //static parseCompCharData(fp, fi) // FILE *fp; // register FontInfo *fi; // ** GLE ** replaced above three lines by the following one static int parseCompCharData(FILE *fp, FontInfo *fi) { BOOL cont = TRUE, firstTime = TRUE, save = (fi->ccd != NULL); int pos = 0, j = 0, error = ok, ccount = 0, pcount = 0; register char *keyword; while (cont) { keyword = token(fp); if (keyword == NULL) /* Have reached an early and unexpected EOF. */ /* Set flag and stop parsing */ { error = earlyEOF; break; /* get out of loop */ } if (ccount > fi->numOfComps) { error = parseError; break; /* get out of loop */ } if (!save) /* get tokens until the end of the Composite Character info */ /* section without saving any of the data */ switch(recognize(keyword)) { case ENDCOMPOSITES: cont = FALSE; break; case ENDFONTMETRICS: cont = FALSE; error = normalEOF; break; default: break; } /* switch */ else /* otherwise parse entire Composite Character info section, */ /* saving the data */ switch(recognize(keyword)) { case COMMENT: keyword = linetoken(fp); break; case COMPCHAR: if (ccount < fi->numOfComps) { keyword = token(fp); if (pcount != fi->ccd[pos].numOfPieces) error = parseError; pcount = 0; if (firstTime) firstTime = FALSE; else pos++; fi->ccd[pos].ccName = (char *) malloc(strlen(keyword) + 1); strcpy(fi->ccd[pos].ccName, keyword); keyword = token(fp); fi->ccd[pos].numOfPieces = atoi(keyword); fi->ccd[pos].pieces = (Pcc *) calloc(fi->ccd[pos].numOfPieces, sizeof(Pcc)); j = 0; ccount++; } else { error = parseError; cont = FALSE; } break; case COMPCHARPIECE: if (pcount < fi->ccd[pos].numOfPieces) { keyword = token(fp); fi->ccd[pos].pieces[j].pccName = (char *) malloc(strlen(keyword) + 1); strcpy(fi->ccd[pos].pieces[j].pccName, keyword); keyword = token(fp); fi->ccd[pos].pieces[j].deltax = atoi(keyword); keyword = token(fp); fi->ccd[pos].pieces[j++].deltay = atoi(keyword); pcount++; } else error = parseError; break; case ENDCOMPOSITES: cont = FALSE; break; case ENDFONTMETRICS: cont = FALSE; error = normalEOF; break; case NOPE: default: error = parseError; break; } /* switch */ } /* while */ if (error == ok && ccount != fi->numOfComps) error = parseError; return(error); } /* parseCompCharData */ /*************************** 'PUBLIC' FUNCTION ********************/ /*************************** parseFile *****************************/ /* parseFile is the only 'public' procedure available. It is called * from an application wishing to get information from an AFM file. * The caller of this function is responsible for locating and opening * an AFM file and handling all errors associated with that task. * * parseFile expects 3 parameters: a vaild file pointer, a pointer * to a (FontInfo *) variable (for which storage will be allocated and * the data requested filled in), and a mask specifying which * data from the AFM File should be saved in the FontInfo structure. * * The file will be parsed and the requested data will be stored in * a record of type FontInfo (refer to ParseAFM.h). * * parseFile returns an error code as defined in parseAFM.h. * * The position of the read/write pointer associated with the file * pointer upon return of this function is undefined. */ //extern int parseFile (fp, fi, flags) // FILE *fp; // FontInfo **fi; // FLAGS flags; // ** GLE ** replaced above four lines by the following one extern int parseFile (FILE *fp, FontInfo **fi, FLAGS flags) { int code = ok; /* return code from each of the parsing routines */ int error = ok; /* used as the return code from this function */ register char *keyword; /* used to store a token */ /* storage data for the global variable ident */ ident = (char *) calloc(MAX_NAME, sizeof(char)); if (ident == NULL) {error = storageProblem; return(error);} (*fi) = (FontInfo *) calloc(1, sizeof(FontInfo)); if ((*fi) == NULL) {error = storageProblem; return(error);} if (flags & P_G) { (*fi)->gfi = (GlobalFontInfo *) calloc(1, sizeof(GlobalFontInfo)); if ((*fi)->gfi == NULL) {error = storageProblem; return(error);} } /* The AFM File begins with Global Font Information. This section */ /* will be parsed whether or not information should be saved. */ code = parseGlobals(fp, (*fi)->gfi); if (code < 0) error = code; /* The Global Font Information is followed by the Character Metrics */ /* section. Which procedure is used to parse this section depends on */ /* how much information should be saved. If all of the metrics info */ /* is wanted, parseCharMetrics is called. If only the character widths */ /* is wanted, parseCharWidths is called. parseCharWidths will also */ /* be called in the case that no character data is to be saved, just */ /* to parse through the section. */ if ((code != normalEOF) && (code != earlyEOF)) { (*fi)->numOfChars = atoi(token(fp)); if (flags & (P_M ^ P_W)) { (*fi)->cmi = (CharMetricInfo *) calloc((*fi)->numOfChars, sizeof(CharMetricInfo)); if ((*fi)->cmi == NULL) {error = storageProblem; return(error);} code = parseCharMetrics(fp, *fi); } else { if (flags & P_W) { (*fi)->cwi = (int *) calloc(256, sizeof(int)); if ((*fi)->cwi == NULL) { error = storageProblem; return(error); } } /* parse section regardless */ code = parseCharWidths(fp, (*fi)->cwi); } /* else */ } /* if */ if ((error != earlyEOF) && (code < 0)) error = code; /* The remaining sections of the AFM are optional. This code will */ /* look at the next keyword in the file to determine what section */ /* is next, and then allocate the appropriate amount of storage */ /* for the data (if the data is to be saved) and call the */ /* appropriate parsing routine to parse the section. */ while ((code != normalEOF) && (code != earlyEOF)) { keyword = token(fp); if (keyword == NULL) /* Have reached an early and unexpected EOF. */ /* Set flag and stop parsing */ { code = earlyEOF; break; /* get out of loop */ } switch(recognize(keyword)) { case STARTKERNDATA: break; case ENDKERNDATA: break; case STARTTRACKKERN: keyword = token(fp); if (flags & P_T) { (*fi)->numOfTracks = atoi(keyword); (*fi)->tkd = (TrackKernData *) calloc((*fi)->numOfTracks, sizeof(TrackKernData)); if ((*fi)->tkd == NULL) { error = storageProblem; return(error); } } /* if */ code = parseTrackKernData(fp, *fi); break; case STARTKERNPAIRS: keyword = token(fp); if (flags & P_P) { (*fi)->numOfPairs = atoi(keyword); (*fi)->pkd = (PairKernData *) calloc((*fi)->numOfPairs, sizeof(PairKernData)); if ((*fi)->pkd == NULL) { error = storageProblem; return(error); } } /* if */ code = parsePairKernData(fp, *fi); break; case STARTCOMPOSITES: keyword = token(fp); if (flags & P_C) { (*fi)->numOfComps = atoi(keyword); (*fi)->ccd = (CompCharData *) calloc((*fi)->numOfComps, sizeof(CompCharData)); if ((*fi)->ccd == NULL) { error = storageProblem; return(error); } } /* if */ code = parseCompCharData(fp, *fi); break; case ENDFONTMETRICS: code = normalEOF; break; case NOPE: default: code = parseError; break; } /* switch */ if ((error != earlyEOF) && (code < 0)) error = code; } /* while */ if ((error != earlyEOF) && (code < 0)) error = code; if (ident != NULL) { free(ident); ident = NULL; } return(error); } /* parseFile */ gle-graphics-4.2.4c/src/makefmt/Makefile.os20000664000000000000000000000607611447671544017334 0ustar rootroot######################################################################## # # # GLE - Graphics Layout Engine # # # # Modified BSD License # # # # Copyright (C) 2009 GLE. # # # # Redistribution and use in source and binary forms, with or without # # modification, are permitted provided that the following conditions # # are met: # # # # 1. Redistributions of source code must retain the above copyright # # notice, this list of conditions and the following disclaimer. # # # # 2. Redistributions in binary form must reproduce the above # # copyright notice, this list of conditions and the following # # disclaimer in the documentation and/or other materials provided with # # the distribution. # # # # 3. The name of the author may not be used to endorse or promote # # products derived from this software without specific prior written # # permission. # # # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR # # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY # # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE # # GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER # # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN # # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # # ######################################################################## # # Makefile.os2 for makefmt # include ../../config.os2 # include files.txt all: $(OBJECTS) $(PROJECT_BINDIR)/bin/$(PROGRAM)$(EXE_SUFF) $(OBJECTS): $(INCLUDES) $(PROJECT_BINDIR)/bin/$(PROGRAM)$(EXE_SUFF): $(OBJECTS) $(INCLUDES) $(PROGRAM).cpp $(CC) $(CXXFLAGS) $(PROGRAM).cpp -o $(PROJECT_BINDIR)/bin/$(PROGRAM)$(EXE_SUFF) $(OBJECTS) clean: -$(RM) $(OBJECTS) $(PROJECT_BINDIR)/bin/$(PROGRAM)$(EXE_SUFF) $(PROGRAM).$(OBJ_SUFF) gle-graphics-4.2.4c/src/makefmt/makefmt.cpp0000664000000000000000000003213611405446017017303 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ #include #include #include "basicconf.h" #include "../gle/tokens/stokenizer.h" #include "parseAFM.h" int debugit = 0; #define dbg if (debugit) void writefmt(const char* fmtname, const char* encname, FontInfo *fi); typedef struct { unsigned int CharCode; float X; float Y; } GLEFontKernInfo; typedef struct { unsigned int NextChar; unsigned int RepChar; } GLEFontLigatureInfo; typedef struct { int encoding; /* 1 = postscript text, 2 = postscrip symbol, 3 = TEX text, 4 = TEX symbol, 5 = GLE markers */ float space, space_stretch, space_shrink; float scale, slant, uposition, uthickness; float fx1, fy1, fx2, fy2, caphei, xhei, descender, ascender; } GLEFontTable; class GLEFontCharData { public: vector Kern; vector Lig; float wx, wy, x1, y1, x2, y2; bool used; public: GLEFontCharData(); ~GLEFontCharData(); }; GLEFontCharData::GLEFontCharData() { used = false; wx = 0.0; wy = 0.0; x1 = 0.0; y1 = 0.0; x2 = 0.0; y2 = 0.0; } GLEFontCharData::~GLEFontCharData() { } vector accents; void init_accents() { accents.push_back("caron"); accents.push_back("cedilla"); accents.push_back("acute"); accents.push_back("dieresis"); accents.push_back("circumflex"); accents.push_back("grave"); accents.push_back("ring"); accents.push_back("tilde"); } int find_accent(const string& accent) { for (vector::size_type i = 0; i < accents.size(); i++) { if (accent == accents[i]) { return i; } } return -1; } int main(int argc, char *argv[]) { char filename[80]; char fmtname[80]; init_accents(); /* encoding file given? */ int argpos = 1; const char* encname = NULL; if (strcmp(argv[argpos], "-e") == 0) { encname = argv[argpos+1]; argpos += 2; } /* output file given? */ if (strcmp(argv[argpos], "-o") == 0) { strcpy(filename, argv[argpos+2]); strcpy(fmtname, argv[argpos+1]); } else { strcpy(filename, argv[argpos]); char* s = strchr(filename,'.'); if (s!=NULL) *s=0; strcpy(fmtname,filename); if (strchr(filename,':')!=NULL) strcpy(fmtname,strchr(filename,':')+1); strcat(fmtname,".fmt"); strcat(filename,".afm"); } printf("[%s]==>[%s]\n",filename,fmtname); if (!filename[0]) { printf ("*** ERROR: can't open. filename is missing.\n"); return 0; } FILE* fp = fopen(filename, READ_BIN); if (fp == NULL) { printf ("*** ERROR: can't find: %s\n", filename ); perror(""); exit(1); } FontInfo *fi; switch (parseFile(fp, &fi, P_ALL)) { case parseError: printf("*** ERROR: problem in parsing the AFM File.\n"); exit(1); case ok: fclose(fp); writefmt(fmtname, encname, fi); break; case earlyEOF: printf("The AFM File ended prematurely.\n"); exit(1); break; default: break; } return 0; } unsigned int font_str_to_code(map& charcodes, const char* name) { string my_name = name; map::iterator it = charcodes.find(my_name); if (it == charcodes.end()) { printf("error: can't find code point for '%s'\n", name); exit(-1); } return it->second; } void writefmt(const char* fmtname, const char* encname, FontInfo *fi) { /* create output file */ FILE* fmt = fopen(fmtname, WRITE_BIN); if (fmt == NULL) { perror ("Cant open output file"); exit(1); } GLEFontTable fnt; fnt.encoding = 1; if (strcmp(fi->gfi->encodingScheme,"TEXENCODING") == 0) { fnt.encoding = 3; } if (strcmp(fi->gfi->encodingScheme,"AdobeStandardEncoding") == 0) { fnt.encoding = 1; } if (strcmp(fi->gfi->encodingScheme,"GLEMARK") == 0) { fnt.encoding = 5; } fnt.scale = 1000; float scl = 0.001; fnt.slant = fi->gfi->italicAngle; fnt.uposition = fi->gfi->underlinePosition*scl; fnt.uthickness = fi->gfi->underlineThickness*scl; fnt.fx1 = fi->gfi->fontBBox.llx*scl; fnt.fy1 = fi->gfi->fontBBox.lly*scl; fnt.fx2 = fi->gfi->fontBBox.urx*scl; fnt.fy2 = fi->gfi->fontBBox.ury*scl; fnt.caphei = fi->gfi->capHeight*scl; fnt.xhei = fi->gfi->xHeight*scl; fnt.descender = fi->gfi->descender*scl; fnt.ascender = fi->gfi->ascender*scl; /* look for space character */ for (int i = 0; i < fi->numOfChars; i++) { if (fi->cmi[i].code == 32) { fnt.space = fi->cmi[i].wx*scl; fnt.space_stretch = fnt.space*0.5; fnt.space_shrink = fnt.space*0.3; break; } } /* write out global font information */ fwrite(&fnt, sizeof(GLEFontTable), 1, fmt); /* read encoding table */ map charcodes; vector encoding_unicode; vector encoding_code; int nb_chars = 256; if (encname != NULL) { ifstream strm; strm.open(encname); if (!strm.is_open()) { printf("error: can't open '%s'\n", encname); exit(-1); } char_separator sep(" ,;"); tokenizer tokens(sep); while (strm.good()) { string line; getline(strm, line); /* remove comments */ string::size_type pos = line.find('!'); if (pos != string::npos) { line = line.substr(0, pos); } /* tokenize line */ tokens.set_input(line); if (tokens.has_more()) { string unicode = tokens.next_token(); if (unicode.length() < 1 || unicode[0] != '$') { printf("error: illegal unicode at line '%s'\n", line.c_str()); } char *ptr = NULL; unsigned int unicode_pt = (unsigned int)strtol(unicode.c_str()+1, &ptr, 16); if (*ptr != 0) { printf("error: illegal unicode at line '%s'\n", line.c_str()); } if (!tokens.has_more()) { printf("error: too few tokens at line '%s'\n", line.c_str()); } string code = tokens.next_token(); unsigned int code_pt = (unsigned int)strtol(code.c_str(), &ptr, 10); if (*ptr != 0) { printf("error: illegal code at line '%s'\n", line.c_str()); } if (!tokens.has_more()) { printf("error: too few tokens at line '%s'\n", line.c_str()); } string name = tokens.next_token(); // cout << "unicode: '" << unicode_pt << "'" << endl; // cout << "code: '" << code_pt << "'" << endl; // cout << "name: '" << name << "'" << endl; charcodes[name] = code_pt; encoding_unicode.push_back(unicode_pt); encoding_code.push_back(code_pt); if (code_pt+1 > (unsigned int)nb_chars) { /* update number of characters in font */ nb_chars = code_pt + 1; } } } strm.close(); } /* create character metrics data */ vector chardata; for (int i = 0; i < nb_chars; i++) { chardata.push_back(new GLEFontCharData()); } /* make code points for all characters */ for (int i = 0; i < fi->numOfChars; i++) { CharMetricInfo *ci = &fi->cmi[i]; if (ci->code != -1) { unsigned int code_pt = (unsigned int)ci->code; charcodes[ci->name] = code_pt; } } /* read in all characters */ for (int i = 0; i < fi->numOfChars; i++) { CharMetricInfo *ci = &fi->cmi[i]; unsigned int code_pt = 0; if (ci->code != -1) { code_pt = (unsigned int)ci->code; } else { string my_name = ci->name; map::iterator it = charcodes.find(my_name); if (it == charcodes.end()) { /* no code point for this character in encoding */ continue; } else { code_pt = it->second; } } /* set character metrics */ GLEFontCharData* cdata = chardata[code_pt]; cdata->used = true; cdata->wx = ci->wx*scl; cdata->wy = ci->wy*scl; cdata->x1 = ci->charBBox.llx*scl; cdata->x2 = ci->charBBox.urx*scl; cdata->y1 = ci->charBBox.lly*scl; cdata->y2 = ci->charBBox.ury*scl; /* store ligatures */ for (Ligature *node = ci->ligs; node != NULL; node = node->next) { GLEFontLigatureInfo ldata; ldata.NextChar = font_str_to_code(charcodes, node->succ); ldata.RepChar = font_str_to_code(charcodes, node->lig); cdata->Lig.push_back(ldata); chardata[ldata.NextChar]->used = true; chardata[ldata.RepChar]->used = true; } } /* read kerning data */ for (int i = 0; i < fi->numOfPairs; i++) { PairKernData *pkd = fi->pkd; unsigned int c1 = font_str_to_code(charcodes, pkd[i].name1); unsigned int c2 = font_str_to_code(charcodes, pkd[i].name2); GLEFontKernInfo kinfo; kinfo.CharCode = c2; kinfo.X = pkd[i].xamt*scl; kinfo.Y = pkd[i].yamt*scl; chardata[c1]->used = true; chardata[c2]->used = true; chardata[c1]->Kern.push_back(kinfo); } /* write out number of characters */ fwrite(&nb_chars, sizeof(int), 1, fmt); /* write unicode table */ int size = encoding_code.size(); fwrite(&size, sizeof(int), 1, fmt); if (size > 0) { fwrite(&encoding_unicode[0], sizeof(unsigned int), size, fmt); fwrite(&encoding_code[0], sizeof(unsigned int), size, fmt); } /* write out character data */ for (int i = 0; i < nb_chars; i++) { GLEFontCharData* cdata = chardata[i]; if (cdata->used) { fputc(1, fmt); fwrite(&cdata->wx, sizeof(float), 1, fmt); fwrite(&cdata->wy, sizeof(float), 1, fmt); fwrite(&cdata->x1, sizeof(float), 1, fmt); fwrite(&cdata->y1, sizeof(float), 1, fmt); fwrite(&cdata->x2, sizeof(float), 1, fmt); fwrite(&cdata->y2, sizeof(float), 1, fmt); unsigned int ksize = cdata->Kern.size(); fwrite(&ksize, sizeof(unsigned int), 1, fmt); if (ksize > 0) fwrite(&cdata->Kern[0], sizeof(GLEFontKernInfo), ksize, fmt); unsigned int lsize = cdata->Lig.size(); fwrite(&lsize, sizeof(unsigned int), 1, fmt); if (lsize > 0) fwrite(&cdata->Lig[0], sizeof(GLEFontLigatureInfo), lsize, fmt); } else { fputc(0, fmt); } } /* Also do the composites to support accents in GLE (new 070506) */ for (int i = 0; i < fi->numOfComps; i++) { CompCharData *ccd = &(fi->ccd[i]); string name = ccd->ccName; if (name.length() > 1) { int char_code = name[0]; string accent_code = name.substr(1); int accent_idx = find_accent(accent_code); if (accent_idx != -1) { if (ccd->numOfPieces != 2) { cout << ">>> incorrect number of pieces: '" << name << "': " << ccd->numOfPieces << endl; } else { fwrite(&char_code, sizeof(int), 1, fmt); fwrite(&accent_idx, sizeof(int), 1, fmt); for (int j = 0; j < ccd->numOfPieces; j++) { Pcc* piece = &ccd->pieces[j]; int piece_code = font_str_to_code(charcodes, piece->pccName); if (piece_code == 0) { cout << ">>> can't find piece: '" << piece->pccName << "'" << endl; } fwrite(&piece_code, sizeof(int), 1, fmt); float dx = piece->deltax * scl; float dy = piece->deltay * scl; fwrite(&dx, sizeof(float), 1, fmt); fwrite(&dy, sizeof(float), 1, fmt); } } } else { cout << ">>> unknown accent: '" << accent_code << "'" << endl; } } else { cout << ">>> composite too short: '" << name << "'" << endl; } } int term = 0; fwrite(&term, sizeof(int), 1, fmt); fclose(fmt); } gle-graphics-4.2.4c/src/makefmt/Makefile.vc0000664000000000000000000000614411447671544017235 0ustar rootroot######################################################################## # # # GLE - Graphics Layout Engine # # # # Modified BSD License # # # # Copyright (C) 2009 GLE. # # # # Redistribution and use in source and binary forms, with or without # # modification, are permitted provided that the following conditions # # are met: # # # # 1. Redistributions of source code must retain the above copyright # # notice, this list of conditions and the following disclaimer. # # # # 2. Redistributions in binary form must reproduce the above # # copyright notice, this list of conditions and the following # # disclaimer in the documentation and/or other materials provided with # # the distribution. # # # # 3. The name of the author may not be used to endorse or promote # # products derived from this software without specific prior written # # permission. # # # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR # # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY # # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE # # GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER # # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN # # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # # ######################################################################## # # makefile.vc for makefmt # for compilation with MS vc++ .net # # !include ..\..\config.vc # !include files.txt all: $(OBJECTS) $(PROJECT_BINDIR)\bin\$(PROGRAM)$(EXE_SUFF) $(OBJECTS): $(INCLUDES) $(PROJECT_BINDIR)\bin\$(PROGRAM)$(EXE_SUFF): $(OBJECTS) $(INCLUDES) $(PROGRAM).cpp $(CC) $(CPPFLAGS) $(PROGRAM).cpp -o $(PROJECT_BINDIR)\bin\$(PROGRAM)$(EXE_SUFF) $(OBJECTS) clean: -$(RM) $(OBJECTS) $(PROJECT_BINDIR)\bin\$(PROGRAM)$(EXE_SUFF) $(PROGRAM).$(OBJ_SUFF) gle-graphics-4.2.4c/src/makefmt/basicconf.h0000664000000000000000000000716611405446017017260 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ #ifndef INCLUDE_BASICCONF_H #define INCLUDE_BASICCONF_H #ifdef HAVE_CONFIG_H #include "../config.h" #else #include "../config_noauto.h" #endif #ifdef __UNIX__ #define READ_BIN "r" #define WRITE_BIN "w" #endif #ifdef __WIN32__ #define READ_BIN "rb" #define WRITE_BIN "wb" #endif #if defined(__OS2__) && defined(__EMX__) #define READ_BIN "rb" #define WRITE_BIN "wb" #endif #include #if HAVE_SYS_TYPES_H #include #endif #if HAVE_SYS_STAT_H #include #endif #if STDC_HEADERS #include #include #else #if HAVE_STDLIB_H #include #endif #endif #if HAVE_STRING_H #if !STDC_HEADERS && HAVE_MEMORY_H #include #endif #include #endif #if HAVE_STRINGS_H #include #endif #if HAVE_UNISTD_H #include #endif #include #include #include #include #include using namespace std; #endif gle-graphics-4.2.4c/src/makefmt/Makefile.in0000664000000000000000000000644211405446017017221 0ustar rootroot######################################################################## # # # GLE - Graphics Layout Engine # # # # Modified BSD License # # # # Copyright (C) 2009 GLE. # # # # Redistribution and use in source and binary forms, with or without # # modification, are permitted provided that the following conditions # # are met: # # # # 1. Redistributions of source code must retain the above copyright # # notice, this list of conditions and the following disclaimer. # # # # 2. Redistributions in binary form must reproduce the above # # copyright notice, this list of conditions and the following # # disclaimer in the documentation and/or other materials provided with # # the distribution. # # # # 3. The name of the author may not be used to endorse or promote # # products derived from this software without specific prior written # # permission. # # # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR # # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY # # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE # # GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER # # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN # # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # # ######################################################################## # # makefile.vc for makefmt # for compilation with MS vc++ .net # include ../../config.i include ../../config.aconf include files.txt CXX=@CXX@ CPPFLAGS=@CPPFLAGS@ LDFLAGS=@LDFLAGS@ LIBS=@LIBS@ CPPFLAGS := $(strip $(CPPFLAGS)) all: $(OBJECTS) $(PROJECT_BINDIR)/bin/$(PROGRAM)$(EXE_SUFF) $(OBJECTS): %.o: %.cpp $(INCLUDES) $(CXX) $(CPPFLAGS) -c $< -o $@ $(PROJECT_BINDIR)/bin/$(PROGRAM)$(EXE_SUFF): $(OBJECTS) $(EXTRA_OBJS) $(INCLUDES) $(PROGRAM).cpp $(CXX) $(CPPFLAGS) $(PROGRAM).cpp $(OBJECTS) $(EXTRA_OBJS) -o $(PROJECT_BINDIR)/bin/$(PROGRAM)$(EXE_SUFF) clean: -$(RM) $(OBJECTS) $(PROJECT_BINDIR)/bin/$(PROGRAM)$(EXE_SUFF) $(PROGRAM).$(OBJ_SUFF) gle-graphics-4.2.4c/src/makefmt/Makefile.gcc0000664000000000000000000000614311447671544017360 0ustar rootroot######################################################################## # # # GLE - Graphics Layout Engine # # # # Modified BSD License # # # # Copyright (C) 2009 GLE. # # # # Redistribution and use in source and binary forms, with or without # # modification, are permitted provided that the following conditions # # are met: # # # # 1. Redistributions of source code must retain the above copyright # # notice, this list of conditions and the following disclaimer. # # # # 2. Redistributions in binary form must reproduce the above # # copyright notice, this list of conditions and the following # # disclaimer in the documentation and/or other materials provided with # # the distribution. # # # # 3. The name of the author may not be used to endorse or promote # # products derived from this software without specific prior written # # permission. # # # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR # # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY # # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE # # GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER # # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN # # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # # ######################################################################## # # makefile.vc for makefmt # for compilation with MS vc++ .net # # include ../../config.gcc # include files.txt all: $(OBJECTS) $(PROJECT_BINDIR)/bin/$(PROGRAM)$(EXE_SUFF) $(OBJECTS): $(INCLUDES) $(PROJECT_BINDIR)/bin/$(PROGRAM)$(EXE_SUFF): $(OBJECTS) $(INCLUDES) $(PROGRAM).cpp $(CC) $(CXXFLAGS) $(PROGRAM).cpp -o $(PROJECT_BINDIR)/bin/$(PROGRAM)$(EXE_SUFF) $(OBJECTS) clean: -$(RM) $(OBJECTS) $(PROJECT_BINDIR)/bin/$(PROGRAM)$(EXE_SUFF) $(PROGRAM).$(OBJ_SUFF) gle-graphics-4.2.4c/src/makefmt/files.txt0000664000000000000000000000542611405446017017020 0ustar rootroot######################################################################## # # # GLE - Graphics Layout Engine # # # # Modified BSD License # # # # Copyright (C) 2009 GLE. # # # # Redistribution and use in source and binary forms, with or without # # modification, are permitted provided that the following conditions # # are met: # # # # 1. Redistributions of source code must retain the above copyright # # notice, this list of conditions and the following disclaimer. # # # # 2. Redistributions in binary form must reproduce the above # # copyright notice, this list of conditions and the following # # disclaimer in the documentation and/or other materials provided with # # the distribution. # # # # 3. The name of the author may not be used to endorse or promote # # products derived from this software without specific prior written # # permission. # # # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR # # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY # # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE # # GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER # # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN # # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # # ######################################################################## # # files list for GLE to be included by the makefiles # PROGRAM = makefmt INCLUDES = \ parseAFM.h OBJECTS = \ parseAFM.$(OBJ_SUFF) gle-graphics-4.2.4c/src/makefmt/parseAFM.h0000664000000000000000000002671611405446017016771 0ustar rootroot/* * (C) 1988, 1989 by Adobe Systems Incorporated. All rights reserved. * * This file may be freely copied and redistributed as long as: * 1) This entire notice continues to be included in the file, * 2) If the file has been modified in any way, a notice of such * modification is conspicuously indicated. * * PostScript, Display PostScript, and Adobe are registered trademarks of * Adobe Systems Incorporated. * * ************************************************************************ * THE INFORMATION BELOW IS FURNISHED AS IS, IS SUBJECT TO CHANGE WITHOUT * NOTICE, AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY ADOBE SYSTEMS * INCORPORATED. ADOBE SYSTEMS INCORPORATED ASSUMES NO RESPONSIBILITY OR * LIABILITY FOR ANY ERRORS OR INACCURACIES, MAKES NO WARRANTY OF ANY * KIND (EXPRESS, IMPLIED OR STATUTORY) WITH RESPECT TO THIS INFORMATION, * AND EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES OF MERCHANTABILITY, * FITNESS FOR PARTICULAR PURPOSES AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. * ************************************************************************ */ /* * Changes made by GLE developers are indicated with "** GLE **" * These changes are required to make parseAFM compile as "C++" code (the original code is "C") */ /* ParseAFM.h * * This header file is used in conjuction with the parseAFM.c file. * Together these files provide the functionality to parse Adobe Font * Metrics files and store the information in predefined data structures. * It is intended to work with an application program that needs font metric * information. The program can be used as is by making a procedure call to * parse an AFM file and have the data stored, or an application developer * may wish to customize the code. * * This header file defines the data structures used as well as the key * strings that are currently recognized by this version of the AFM parser. * This program is based on the document "Adobe Font Metrics Files, * Specification Version 2.0". * * AFM files are separated into distinct sections of different data. Because * of this, the parseAFM program can parse a specified file to only save * certain sections of information based on the application's needs. A record * containing the requested information will be returned to the application. * * AFM files are divided into five sections of data: * 1) The Global Font Information * 2) The Character Metrics Information * 3) The Track Kerning Data * 4) The Pair-Wise Kerning Data * 5) The Composite Character Data * * Basically, the application can request any of these sections independent * of what other sections are requested. In addition, in recognizing that * many applications will want ONLY the x-width of characters and not all * of the other character metrics information, there is a way to receive * only the width information so as not to pay the storage cost for the * unwanted data. An application should never request both the * "quick and dirty" char metrics (widths only) and the Character Metrics * Information since the Character Metrics Information will contain all * of the character widths as well. * * There is a procedure in parseAFM.c, called parseFile, that can be * called from any application wishing to get information from the AFM File. * This procedure expects 3 parameters: a vaild file descriptor, a pointer * to a (FontInfo *) variable (for which space will be allocated and then * will be filled in with the data requested), and a mask specifying * which data from the AFM File should be saved in the FontInfo structure. * * The flags that can be used to set the appropriate mask are defined below. * In addition, several commonly used masks have already been defined. * * History: * original: DSM Thu Oct 20 17:39:59 PDT 1988 * modified: DSM Mon Jul 3 14:17:50 PDT 1989 * - added 'storageProblem' return code * - fixed typos */ #include /* your basic constants */ #define TRUE 1 #define FALSE 0 #define EOL '\n' /* end-of-line indicator */ #define MAX_NAME 4096 /* max length for identifiers */ #define BOOL int #define FLAGS int /* Flags that can be AND'ed together to specify exactly what * information from the AFM file should be saved. */ #define P_G 0x01 /* 0000 0001 */ /* Global Font Info */ #define P_W 0x02 /* 0000 0010 */ /* Character Widths ONLY */ #define P_M 0x06 /* 0000 0110 */ /* All Char Metric Info */ #define P_P 0x08 /* 0000 1000 */ /* Pair Kerning Info */ #define P_T 0x10 /* 0001 0000 */ /* Track Kerning Info */ #define P_C 0x20 /* 0010 0000 */ /* Composite Char Info */ /* Commonly used flags */ #define P_GW (P_G | P_W) #define P_GM (P_G | P_M) #define P_GMP (P_G | P_M | P_P) #define P_GMK (P_G | P_M | P_P | P_T) #define P_ALL (P_G | P_M | P_P | P_T | P_C) /* Possible return codes from the parseFile procedure. * * ok means there were no problems parsing the file. * * parseError means that there was some kind of parsing error, but the * parser went on. This could include problems like the count for any given * section does not add up to how many entries there actually were, or * there was a key that was not recognized. The return record may contain * vaild data or it may not. * * earlyEOF means that an End of File was encountered before expected. This * may mean that the AFM file had been truncated, or improperly formed. * * storageProblem means that there were problems allocating storage for * the data structures that would have contained the AFM data. */ #define ok 0 #define parseError -1 #define earlyEOF -2 #define storageProblem -3 /************************* TYPES *********************************/ /* Below are all of the data structure definitions. These structures * try to map as closely as possible to grouping and naming of data * in the AFM Files. */ /* Bounding box definition. Used for the Font BBox as well as the * Character BBox. */ typedef struct { int llx; /* lower left x-position */ int lly; /* lower left y-position */ int urx; /* upper right x-position */ int ury; /* upper right y-position */ } BBox; /* Global Font information. * The key that each field is associated with is in comments. For an * explanation about each key and its value please refer to the AFM * documentation (full title & version given above). */ typedef struct { char *afmVersion; /* key: StartFontMetrics */ char *fontName; /* key: FontName */ char *fullName; /* key: FullName */ char *familyName; /* key: FamilyName */ char *weight; /* key: Weight */ float italicAngle; /* key: ItalicAngle */ BOOL isFixedPitch; /* key: IsFixedPitch */ BBox fontBBox; /* key: FontBBox */ int underlinePosition; /* key: UnderlinePosition */ int underlineThickness; /* key: UnderlineThickness */ char *version; /* key: Version */ char *notice; /* key: Notice */ char *encodingScheme; /* key: EncodingScheme */ int capHeight; /* key: CapHeight */ int xHeight; /* key: XHeight */ int ascender; /* key: Ascender */ int descender; /* key: Descender */ } GlobalFontInfo; /* Ligature definition is a linked list since any character can have * any number of ligatures. */ typedef struct _t_ligature { char *succ, *lig; struct _t_ligature *next; } Ligature; /* Character Metric Information. This structure is used only if ALL * character metric information is requested. If only the character * widths is requested, then only an array of the character x-widths * is returned. * * The key that each field is associated with is in comments. For an * explanation about each key and its value please refer to the * Character Metrics section of the AFM documentation (full title * & version given above). */ typedef struct { int code, /* key: C */ wx, /* key: WX */ wy; /* together wx and wy are associated with key: W */ char *name; /* key: N */ BBox charBBox; /* key: B */ Ligature *ligs; /* key: L (linked list; not a fixed number of Ls */ } CharMetricInfo; /* Track kerning data structure. * The fields of this record are the five values associated with every * TrackKern entry. * * For an explanation about each value please refer to the * Track Kerning section of the AFM documentation (full title * & version given above). */ typedef struct { int degree; float minPtSize, minKernAmt, maxPtSize, maxKernAmt; } TrackKernData; /* Pair Kerning data structure. * The fields of this record are the four values associated with every * KP entry. For KPX entries, the yamt will be zero. * * For an explanation about each value please refer to the * Pair Kerning section of the AFM documentation (full title * & version given above). */ typedef struct { char *name1; char *name2; int xamt, yamt; } PairKernData; /* PCC is a piece of a composite character. This is a sub structure of a * compCharData described below. * These fields will be filled in with the values from the key PCC. * * For an explanation about each key and its value please refer to the * Composite Character section of the AFM documentation (full title * & version given above). */ typedef struct { char *pccName; int deltax, deltay; } Pcc; /* Composite Character Information data structure. * The fields ccName and numOfPieces are filled with the values associated * with the key CC. The field pieces points to an array (size = numOfPieces) * of information about each of the parts of the composite character. That * array is filled in with the values from the key PCC. * * For an explanation about each key and its value please refer to the * Composite Character section of the AFM documentation (full title * & version given above). */ typedef struct { char *ccName; int numOfPieces; Pcc *pieces; } CompCharData; /* FontInfo * Record type containing pointers to all of the other data * structures containing information about a font. * A a record of this type is filled with data by the * parseFile function. */ typedef struct { GlobalFontInfo *gfi; /* ptr to a GlobalFontInfo record */ int *cwi; /* ptr to 256 element array of just char widths */ int numOfChars; /* number of entries in char metrics array */ CharMetricInfo *cmi; /* ptr to char metrics array */ int numOfTracks; /* number to entries in track kerning array */ TrackKernData *tkd; /* ptr to track kerning array */ int numOfPairs; /* number to entries in pair kerning array */ PairKernData *pkd; /* ptr to pair kerning array */ int numOfComps; /* number to entries in comp char array */ CompCharData *ccd; /* ptr to comp char array */ } FontInfo; /************************* PROCEDURES ****************************/ /* Call this procedure to do the grunt work of parsing an AFM file. * * "fp" should be a valid file pointer to an AFM file. * * "fi" is a pointer to a pointer to a FontInfo record sturcture * (defined above). Storage for the FontInfo structure will be * allocated in parseFile and the structure will be filled in * with the requested data from the AFM File. * * "flags" is a mask with bits set representing what data should * be saved. Defined above are valid flags that can be used to set * the mask, as well as a few commonly used masks. * * The possible return codes from parseFile are defined above. */ // extern int parseFile ( /* FILE *fp; FontInfo **fi; FLAGS flags; */ ); // ** GLE ** replaced previous line by the following one extern int parseFile (FILE *fp, FontInfo **fi, FLAGS flags); gle-graphics-4.2.4c/src/fbuild/Makefile.os20000664000000000000000000000627711405446017017145 0ustar rootroot######################################################################## # # # GLE - Graphics Layout Engine # # # # Modified BSD License # # # # Copyright (C) 2009 GLE. # # # # Redistribution and use in source and binary forms, with or without # # modification, are permitted provided that the following conditions # # are met: # # # # 1. Redistributions of source code must retain the above copyright # # notice, this list of conditions and the following disclaimer. # # # # 2. Redistributions in binary form must reproduce the above # # copyright notice, this list of conditions and the following # # disclaimer in the documentation and/or other materials provided with # # the distribution. # # # # 3. The name of the author may not be used to endorse or promote # # products derived from this software without specific prior written # # permission. # # # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR # # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY # # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE # # GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER # # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN # # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # # ######################################################################## # # makefile.vc for makefmt # for compilation with MS vc++ .net # # include ../../config.i include ../../config.os2 # include files.txt all: $(OBJECTS) $(PROJECT_BINDIR)/bin/$(PROGRAM)$(EXE_SUFF) $(OBJECTS): $(INCLUDES) $(CC) $(CXXFLAGS) -c $(OBJECTS:.o=.cpp) $(PROJECT_BINDIR)/bin/$(PROGRAM)$(EXE_SUFF): $(OBJECTS) $(EXTRA_OBJS) $(INCLUDES) $(PROGRAM).cpp $(CC) $(CXXFLAGS) $(PROGRAM).cpp $(OBJECTS) $(EXTRA_OBJS) -o $(PROJECT_BINDIR)/bin/$(PROGRAM)$(EXE_SUFF) clean: -$(RM) $(OBJECTS) $(PROJECT_BINDIR)/bin/$(PROGRAM)$(EXE_SUFF) $(PROGRAM).$(OBJ_SUFF) gle-graphics-4.2.4c/src/fbuild/Makefile.vc0000664000000000000000000000620011405446017017034 0ustar rootroot######################################################################## # # # GLE - Graphics Layout Engine # # # # Modified BSD License # # # # Copyright (C) 2009 GLE. # # # # Redistribution and use in source and binary forms, with or without # # modification, are permitted provided that the following conditions # # are met: # # # # 1. Redistributions of source code must retain the above copyright # # notice, this list of conditions and the following disclaimer. # # # # 2. Redistributions in binary form must reproduce the above # # copyright notice, this list of conditions and the following # # disclaimer in the documentation and/or other materials provided with # # the distribution. # # # # 3. The name of the author may not be used to endorse or promote # # products derived from this software without specific prior written # # permission. # # # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR # # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY # # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE # # GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER # # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN # # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # # ######################################################################## # # makefile.vc for makefmt # for compilation with MS vc++ .net # # !include ..\..\config.vc # !include files.txt all: $(OBJECTS) $(PROJECT_BINDIR)\bin\$(PROGRAM)$(EXE_SUFF) $(OBJECTS): $(INCLUDES) $(PROJECT_BINDIR)\bin\$(PROGRAM)$(EXE_SUFF): $(OBJECTS) $(INCLUDES) $(EXTRA_OBJS) $(PROGRAM).cpp $(CC) $(CPPFLAGS) $(PROGRAM).cpp -o $(PROJECT_BINDIR)\bin\$(PROGRAM)$(EXE_SUFF) $(OBJECTS) $(EXTRA_OBJS) clean: -$(RM) $(OBJECTS) $(PROJECT_BINDIR)\bin\$(PROGRAM)$(EXE_SUFF) $(PROGRAM).$(OBJ_SUFF) gle-graphics-4.2.4c/src/fbuild/basicconf.h0000664000000000000000000000714311405446017017074 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ #ifndef INCLUDE_BASICCONF_H #define INCLUDE_BASICCONF_H #ifdef HAVE_CONFIG_H #include "../config.h" #else #include "../config_noauto.h" #endif #ifdef __UNIX__ #define READ_BIN "r" #define WRITE_BIN "w" #endif #ifdef __WIN32__ #define READ_BIN "rb" #define WRITE_BIN "wb" #endif #if defined(__OS2__) && defined(__EMX__) #define READ_BIN "rb" #define WRITE_BIN "wb" #endif #include #if HAVE_SYS_TYPES_H #include #endif #if HAVE_SYS_STAT_H #include #endif #if STDC_HEADERS #include #include #else #if HAVE_STDLIB_H #include #endif #endif #if HAVE_STRING_H #if !STDC_HEADERS && HAVE_MEMORY_H #include #endif #include #endif #if HAVE_STRINGS_H #include #endif #if HAVE_UNISTD_H #include #endif #include #include #include #include using namespace std; #endif gle-graphics-4.2.4c/src/fbuild/Makefile.in0000664000000000000000000000657111405446017017045 0ustar rootroot######################################################################## # # # GLE - Graphics Layout Engine # # # # Modified BSD License # # # # Copyright (C) 2009 GLE. # # # # Redistribution and use in source and binary forms, with or without # # modification, are permitted provided that the following conditions # # are met: # # # # 1. Redistributions of source code must retain the above copyright # # notice, this list of conditions and the following disclaimer. # # # # 2. Redistributions in binary form must reproduce the above # # copyright notice, this list of conditions and the following # # disclaimer in the documentation and/or other materials provided with # # the distribution. # # # # 3. The name of the author may not be used to endorse or promote # # products derived from this software without specific prior written # # permission. # # # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR # # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY # # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE # # GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER # # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN # # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # # ######################################################################## # # makefile.vc for makefmt # for compilation with MS vc++ .net # include ../../config.i include ../../config.aconf include files.txt CXX=@CXX@ CPPFLAGS=@CPPFLAGS@ LDFLAGS=@LDFLAGS@ LIBS=@LIBS@ ifeq (@HAVE_LIBGLE_CPPFLAGS@,1) EXTRA_OBJS := ../gle/cutils.static.$(OBJ_SUFF) endif CPPFLAGS := $(strip $(CPPFLAGS)) all: $(OBJECTS) $(PROJECT_BINDIR)/bin/$(PROGRAM)$(EXE_SUFF) $(OBJECTS): %.o: %.cpp $(INCLUDES) $(CXX) $(CPPFLAGS) -c $< -o $@ $(PROJECT_BINDIR)/bin/$(PROGRAM)$(EXE_SUFF): $(OBJECTS) $(EXTRA_OBJS) $(INCLUDES) $(PROGRAM).cpp $(CXX) $(CPPFLAGS) $(PROGRAM).cpp $(OBJECTS) $(EXTRA_OBJS) -o $(PROJECT_BINDIR)/bin/$(PROGRAM)$(EXE_SUFF) clean: -$(RM) $(OBJECTS) $(PROJECT_BINDIR)/bin/$(PROGRAM)$(EXE_SUFF) $(PROGRAM).$(OBJ_SUFF) gle-graphics-4.2.4c/src/fbuild/Makefile.gcc0000664000000000000000000000625011405446017017165 0ustar rootroot######################################################################## # # # GLE - Graphics Layout Engine # # # # Modified BSD License # # # # Copyright (C) 2009 GLE. # # # # Redistribution and use in source and binary forms, with or without # # modification, are permitted provided that the following conditions # # are met: # # # # 1. Redistributions of source code must retain the above copyright # # notice, this list of conditions and the following disclaimer. # # # # 2. Redistributions in binary form must reproduce the above # # copyright notice, this list of conditions and the following # # disclaimer in the documentation and/or other materials provided with # # the distribution. # # # # 3. The name of the author may not be used to endorse or promote # # products derived from this software without specific prior written # # permission. # # # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR # # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY # # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE # # GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER # # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN # # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # # ######################################################################## # # makefile.vc for makefmt # for compilation with MS vc++ .net # # include ../../config.gcc # include files.txt all: $(OBJECTS) $(PROJECT_BINDIR)/bin/$(PROGRAM)$(EXE_SUFF) $(OBJECTS): $(INCLUDES) $(CC) $(CXXFLAGS) -c $(OBJECTS:.o=.cpp) $(PROJECT_BINDIR)/bin/$(PROGRAM)$(EXE_SUFF): $(OBJECTS) $(EXTRA_OBJS) $(INCLUDES) $(PROGRAM).cpp $(CC) $(CXXFLAGS) $(PROGRAM).cpp $(OBJECTS) $(EXTRA_OBJS) -o $(PROJECT_BINDIR)/bin/$(PROGRAM)$(EXE_SUFF) clean: -$(RM) $(OBJECTS) $(PROJECT_BINDIR)/bin/$(PROGRAM)$(EXE_SUFF) $(PROGRAM).$(OBJ_SUFF) gle-graphics-4.2.4c/src/fbuild/fbuild.cpp0000664000000000000000000002033011676337051016745 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ /*----------------------------------------------------------------------*/ /* This is the font builder for GLE, it runs completely independently */ /* and only understands the following commands. */ /*1 AMOVE x y */ /*2 ALINE x y */ /*3 BEZIER x y x y x y */ /*4 CLOSEPATH */ /*5 FILL */ /*6 STROKE */ /*8 SET LWIDTH w */ /*7 FILLWHITE (no newpath ) */ /*15 DFONT ENDCHAR */ /* DFONT CHAR=nn or CHAR="A" */ /* DFONT DESIGN=v */ /*----------------------------------------------------------------------*/ #define GPRINTDEF #include "basicconf.h" #include "token.h" #include "../gle/cutils.h" #define gprint printf int debugit=0; #define dbg if (debugit==1) double design,gx,gy; int thischar; char inbuff[200],zzz[200]; char source[20]; char tk[TOKEN_LENGTH][TOKEN_WIDTH]; char tkbuff[500]; unsigned char *outbuff; int outpnt[256]; int nbig,nsmall; int cx,cy; int nout; void sendp(int p); void sendx(double x); void sendxy(double x, double y); void sendxyabs(double x, double y); void sendi(int ix); void do_line(void); int main(int argc, char **argv) { int ntok; int i; FILE *fptr; FILE *fout; char *s; char space_str[] = " "; char fname[80]; char outfile[80]; design = 1; token_equal(); strcpy(fname,*(++argv)); s = strchr(fname,'.'); if (s!=NULL) *s = 0; strcpy(outfile,fname); if (strchr(fname,':')!=NULL) strcpy(outfile,strchr(fname,':')+1); strcat(outfile,".fve"); strcat(fname,".gle"); printf("[%s]==>[%s]\n",fname,outfile); outbuff = (unsigned char*) malloc(64000); fout = fopen(outfile,WRITE_BIN); if (fout==NULL) perror("Could not open output file \n"); fptr = fopen(fname,"r"); if (fptr==NULL) perror("Could not open input file \n"); for (i=0;i= 2 && inbuff[i-2] == '\r') { inbuff[i-2] = '\n'; inbuff[i-1] = '\0'; } #endif /* printf("Source | %s",inbuff); */ token(inbuff,tk,&ntok,tkbuff); do_line(); } //printf(" nbig %d nsmall %d nbytes %d\n",nbig,nsmall,nout); /* for (i=0;i<100;i++) if (outpnt[i]>0) dbg printf("index %d %d ",i,outpnt[i]);*/ dbg printf("\n\n"); dbg printf("\n nbig %d nsmall %d nbytes %d\n\n",nbig,nsmall,nout); for (i=0;i<100;i++) dbg printf("%d ",*(outbuff+i)); dbg printf("\n nbig %d nsmall %d nbytes %d\n\n",nbig,nsmall,nout); outpnt[0] = nout; fwrite(outpnt,sizeof(i),256,fout); fwrite(outbuff,1,nout,fout); fclose(fout); fclose(fptr); return 0; } /*--------------------------------------------------------------------------*/ #define skipspace if (*tk[ct]==' ') ct++; void do_line() { int ct; ct = 1; if (str_i_equals(tk[ct],"ALINE")) { sendp(2); sendxy(gx=atof(tk[2]),gy=atof(tk[3])); } else if (str_i_equals(tk[ct],"RLINE")) { sendp(2); gx = gx + atof(tk[2]); gy = gy + atof(tk[3]); sendxy(gx,gy); } else if (str_i_equals(tk[ct],"RMOVE")) { sendp(1); gx = gx + atof(tk[2]); gy = gy + atof(tk[3]); sendxyabs(gx,gy); } else if (str_i_equals(tk[ct],"BEZIER")) { sendp(3); sendxy(atof(tk[2]),atof(tk[3])); sendxy(atof(tk[4]),atof(tk[5])); sendxy(gx=atof(tk[6]),gy=atof(tk[7])); } else if (str_i_equals(tk[ct],"AMOVE")) { sendp(1); sendxyabs(gx=atof(tk[2]),gy=atof(tk[3])); } else if (str_i_equals(tk[ct],"ASETPOS")) { sendp(9); sendxyabs(gx=atof(tk[2]),gy=atof(tk[3])); } else if (str_i_equals(tk[ct],"CIRCLE")) { sendp(10); sendx(atof(tk[2])); } else if (str_i_equals(tk[ct],"CLOSEPATH")) sendp(4); else if (str_i_equals(tk[ct],"FILL")) sendp(5); else if (str_i_equals(tk[ct],"FILLWHITE")) sendp(7); else if (str_i_equals(tk[ct],"STROKE")) sendp(6); else if (strcmp(tk[ct],"\n")==0) ; else if (str_i_equals(tk[ct],"FBY")) ; else if (str_i_equals(tk[ct],"NEWPATH")) ; else if (str_i_equals(tk[ct],"\n")) ; else if (strcmp(tk[ct],"!")==0) ; else if (str_i_equals(tk[ct],"SET")) { if (str_i_equals(tk[2],"LWIDTH")) { sendp(8); sendx(atof(tk[3])); } } else if (str_i_equals(tk[ct],"DFONT")) { ct+=1; if (str_i_equals(tk[ct],"DESIGN")) { ct++;ct++; design = atof(tk[ct]); //printf(" %g",design); } else if (str_i_equals(tk[ct],"CHAR")) { ct++;ct++; if (*tk[ct]=='"') thischar = *(tk[ct]+1); else thischar = atoi(tk[ct]); if (thischar==0) thischar=254; outpnt[thischar] = nout; dbg printf("This char %d {%s} nout %d \n",thischar,tk[ct],nout); } else if (str_i_equals(tk[ct],"ENDCHAR")) sendp(15) ; else if (str_i_equals(tk[ct],"WID")) ; else if (str_i_equals(tk[ct],"FBY")) ; else dbg printf("DFONT unknown command {%s} \n",tk[ct]); } else dbg printf("Unrecoginzed FONT BUILD command {%s} \n",tk[ct]); ct++; } void sendp(int p) { *(outbuff+nout++) = p; } int scl(double x); int scl(double x) { return (int)(1000*x/design); } void sendxyabs(double x, double y) { cx = scl(x); cy = scl(y); sendi(cx); sendi(cy); /* printf("Move cx cy %d %d %g %g \n",cx,cy,x,y); */ } void sendxy(double x, double y) { /* printf("rove cx cy %d %d %d %d %g %g \n",cx,cy,scl(x),scl(y),x,y); */ sendi(scl(x)-cx); sendi(scl(y)-cy); cx = scl(x); cy = scl(y); } void sendi(int ix) { union jjj {char a[2]; short b;} both; /* if (thischar=='i') printf("ix %d \n",ix); */ if (ix>120 || ix <-120) { both.b = ix; *(outbuff+nout++) = 127; *(outbuff+nout++) = both.a[0]; *(outbuff+nout++) = both.a[1]; nbig++; } else { *(outbuff+nout++) = ix; nsmall++; } } void sendx(double x) { sendi(scl(x)); } gle-graphics-4.2.4c/src/fbuild/files.txt0000664000000000000000000000551411405446017016637 0ustar rootroot######################################################################## # # # GLE - Graphics Layout Engine # # # # Modified BSD License # # # # Copyright (C) 2009 GLE. # # # # Redistribution and use in source and binary forms, with or without # # modification, are permitted provided that the following conditions # # are met: # # # # 1. Redistributions of source code must retain the above copyright # # notice, this list of conditions and the following disclaimer. # # # # 2. Redistributions in binary form must reproduce the above # # copyright notice, this list of conditions and the following # # disclaimer in the documentation and/or other materials provided with # # the distribution. # # # # 3. The name of the author may not be used to endorse or promote # # products derived from this software without specific prior written # # permission. # # # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR # # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY # # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE # # GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER # # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN # # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # # ######################################################################## # # files list for GLE to be included by the makefiles # PROGRAM = \ fbuild INCLUDES = \ token.h \ ../gle/cutils.h OBJECTS = \ token.$(OBJ_SUFF) EXTRA_OBJS = \ ../gle/cutils.$(OBJ_SUFF) gle-graphics-4.2.4c/src/fbuild/token.h0000664000000000000000000000657211405446017016272 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ //#ifdef unix //#define VAXC 1 //#endif //#ifdef VAXC //char *strupr(char *s); //#endif #ifndef INCLUDE_TOKEN #define INCLUDE_TOKEN //typedef struct op_key (*OPKEY)[]; //typedef char (*(*TOKENS)[]); //typedef char** TOKENS; #define TOKEN_WIDTH 500 #define TOKEN_LENGTH 500 typedef char TOKENS[][TOKEN_WIDTH]; char *find_non_space(char *cp); char *find_term(char *cp); void add_tokf(char* pp1,int n,TOKENS tok, int* ntok, char* outbuff, int tj, int in_quote); void subscript(void); void token(char *lin,TOKENS tok,int *ntok,char *outbuff); void token_data(char *lin,TOKENS tk,int *ntok,char *outbuff); void token_equal(void); void token_init(void); void token_norm(void); void token_space(void); #endif gle-graphics-4.2.4c/src/fbuild/token.cpp0000664000000000000000000001711511405446017016620 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ #include "basicconf.h" #include "token.h" #include "../gle/cutils.h" void add_tokf(char* pp1,int n,TOKENS tok, int* ntok, char* outbuff, int tj, bool in_quote) { char* token_start; // for(vi=1;vi<=*ntok;vi++) printf("(add_tokf) tok[%d]=%s\n",vi,tok[vi]); (*ntok)++; // tok[*ntok] = outbuff; // // save the starting position // token_start = outbuff; // printf("tok=%u outbuf=%u\n",tok,outbuff); // for(vi=1;vi<=*ntok-1;vi++) printf("(add_tokf) tok[%d]=%s\n",vi,tok[vi]); // printf("outbuff=%s pp1=%s\n",outbuff,pp1); for (tj=0;tj280) subscript(); } endofline:; if (*ntok>0) { // if ( (*(*tok)[*ntok])=='\n' ) (*ntok)--; if (str_i_equals(tok[*ntok],"\n")) (*ntok)--; // if (strcmp((*tok)[*ntok]," ")==0) (*ntok)--; if (str_i_equals(tok[*ntok]," ")) (*ntok)--; // if (*ntok>0) p2 = (*tok)[*ntok] + strlen((*tok)[*ntok]) - 1; if (*ntok > 0) p2 = tok[*ntok] + strlen(tok[*ntok]) - 1; if (*p2 == 10) *p2 = 0; } // for(vi=1;vi<=*ntok;vi++) printf("(token) tok[%d]=%s\n",vi,tok[vi]); } /*--------------------------------------------------------------------------*/ char *find_non_space(char *cp) { for ( ; *cp!=0 ; cp++ ) { if (*cp!=' ' && *cp!=' ') break; } return cp; } /*--------------------------------------------------------------------------*/ char *find_term(char *cp) { char *start; start = cp; /* if (*cp=='"') { cp++; for (; *cp!=0 ; cp++ ) { if (*cp=='"') break; } return cp; } */ for (; *cp!=0 ; cp++ ) { if (*cp == '"') { cp++; for (; *cp!=0 ; cp++ ) { if (*cp=='"') if (*(cp-1)!='\\') break; } } if (term_table[(int)*cp]==static_cast(true)) break; } if (cp>start) return cp-1; if (*cp==' ' || *cp==' ') return cp-1; if (*cp==0) return cp-1; return cp; } /*--------------------------------------------------------------------------*/ void subscript(void) { // gprint("Subscript out of range in tokenizer (use shorter lines)\n"); printf("Subscript out of range in tokenizer (use shorter lines)\n"); } void token_data(char *lin,TOKENS tk,int *ntok,char *outbuff) { char *s; s = strtok(lin," ,=\t\n\x0a\x0c\x0d"); *ntok = 0; for (;s!=NULL;) { if (*s == '"' || *s == '!' || *s == ';') goto endofline; *ntok += 1; strcpy(outbuff,s); strcpy(tk[*ntok],outbuff); outbuff = outbuff + strlen(outbuff) + 1; s = strtok(NULL," ,=\t\n\x0a\x0c\x0d"); } /* printf("%d",*ntok);*/ endofline:; } gle-graphics-4.2.4c/src/gui/grid.h0000664000000000000000000000520611405446017015407 0ustar rootroot/*********************************************************************************** * QGLE - A Graphical Interface to GLE * * Copyright (C) 2006 A. S. Budden & J. Struyf * * * * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * * * Also add information on how to contact you by electronic and paper mail. * ***********************************************************************************/ #ifndef _GRID_H #define _GRID_H #include #include "qgle_definitions.h" //! Class implementing a grid for drawing class GLEGrid : public QObject { Q_OBJECT public: //! Constructor: initialise the grid GLEGrid(QObject *parent = 0); //! Find the nearest grid point to a given point (QT coordinates) QPointF nearestPoint(QPointF qt, double *distance = 0); //! Return all (QT) grid points QList allPoints(); //! Return the pen with which to draw the grid QPen pen(); //! Draw the grid void drawGrid(QPainter* paint); public slots: //! Set the grid spacing void setGrid(QPointF newGrid); //! Set the drawing area void setArea(QSize area); //! Set the resolution void setDPI(double new_dpi); private: //! Update the pen with a new resolution void updatePen(); //! The grid X & Y spacing QPointF gridSpacing; //! The drawing area size QSizeF areaSize; //! The resolution double dpi; //! The pen with which to draw the grid QPen paintPen; }; #endif gle-graphics-4.2.4c/src/gui/gledrawing.cpp0000664000000000000000000022352711722434414017150 0ustar rootroot/*********************************************************************************** * QGLE - A Graphical Interface to GLE * * Copyright (C) 2006 A. S. Budden & J. Struyf * * * * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * * * Also add information on how to contact you by electronic and paper mail. * ***********************************************************************************/ #include #include "mainwindow.h" #include "drawingobject.h" #include "line.h" #include "circle.h" #include "ellipse.h" #include "arc.h" #include "text.h" #include "snapline.h" #include "grid.h" #include "amove.h" // The constructor for the drawing area GLEDrawingArea::GLEDrawingArea(GLEInterface *iface, GLEMainWindow* main) : QWidget(main) { mainWin = main; gleInterface = iface; // Clear dirty flag (that indicates script should be saved) clearDirty(); // Initialize all instance variables initAll(); // Grid uses QT units, but grid spacing is set in GLE units grid = new GLEGrid(this); grid->setGrid(gridSpacing); grid->setDPI(dpi); // This ensures that Mouse Move events happen // even when the mouse buttons aren't pressed, which // is essential for updating the status bar and using // snap. setMouseTracking(true); // Make some handy messages to let the user know what to do statusMessages[NoTool][StartPoint] = tr(""); statusMessages[PointerTool][StartPoint] = tr("Select an object, or hold shift to select multiple objects"); statusMessages[LineTool][StartPoint] = tr("Select start point"); statusMessages[TextTool][StartPoint] = tr("Select location for text"); statusMessages[TanLineTool][StartPoint] = tr("Select start object"); statusMessages[PerpLineTool][StartPoint] = tr("Select start object"); statusMessages[CircleTool][StartPoint] = tr("Select centre point"); statusMessages[EllipseTool][StartPoint] = tr("Select bounding box corner point"); statusMessages[ArcTool][StartPoint] = tr("Select start point"); statusMessages[AMoveTool][StartPoint] = tr("Select final point for GLE script"); statusMessages[LineTool][EndPoint] = tr("Select end point"); statusMessages[TanLineTool][EndPoint] = tr("Select end point"); statusMessages[PerpLineTool][EndPoint] = tr("Select end point"); statusMessages[ArcTool][EndPoint] = tr("Select end point"); statusMessages[ArcTool][MidPoint] = tr("Select a point somewhere on the arc"); statusMessages[CircleTool][CircumferencePoint] = tr("Select a point somewhere on the circle"); statusMessages[EllipseTool][EndPoint] = tr("Select opposite corner point"); CornerHandles.append(TopLeft); CornerHandles.append(TopRight); CornerHandles.append(BottomLeft); CornerHandles.append(BottomRight); SideHandles.append(MiddleLeft); SideHandles.append(MiddleRight); SideHandles.append(TopMiddle); SideHandles.append(BottomMiddle); } //! Initialize all instance variables void GLEDrawingArea::initAll() { dpi = 0.0; gridVisible = false; gridSpacing = QPointF(1.0,1.0); hasAMove = false; amoveIndex = 0; newObjects = false; isEditMode = false; // Snap types snaps[ObjectSnap] = false; snaps[OrthoSnap] = false; snaps[PolarSnap] = false; snaps[PolarTrack] = false; snaps[GridSnap] = false; // Polar snap settings polarStartAngle = 0.0; polarAngleIncrement = 30.0; // Assume that keys aren't pressed at start up modifier[ShiftKey] = false; modifier[AltKey] = false; modifier[CtrlKey] = false; // Default to no tool currentTool = NoTool; objectSelected = false; // Initialize orther variables initVars(); // Remove all polar snaps clearPolarSnaps(); } //! Initialize instance variables related to selection void GLEDrawingArea::initSelectionVars() { // Drawing modes isScaling = false; isMoving = false; isRotating = false; // Selection selectionMode = SelectionMove; objectMoved = false; // Which handle of the selection was grabbed? grabbedHandle = -1; // Selected object snap indicates snapping to points in selected object before move/scale isSelectedObjectSnap = false; // Selection handles handleList.clear(); // Used for rotating objectss baseAngle = 0.0; lastAngle = 0.0; // Reference point for scale / move basePoint.setX(0.0); basePoint.setX(0.0); // Origin for scale operation (this is the point that does not move during scaling) scaleOrigin.setX(-1.0); scaleOrigin.setY(-1.0); } void GLEDrawingArea::initVars() { // Busy drawing new object? isDrawing = false; // Index of object that is being created (in object list) currentIndex = 0; // Index of reference object when creating, e.g., a line orthogonal to an object baseObject = 0; // Cursor position and a copy that is snapped to the current snaps cursorPosition.setX(0.0); cursorPosition.setY(0.0); snappedPosition.setX(0.0); snappedPosition.setY(0.0); lastPoint.setX(0.0); lastPoint.setY(0.0); // Initialize instance variables related to selection initSelectionVars(); } void GLEDrawingArea::setPolarSnapStartAngle(double newAngle) { polarStartAngle = newAngle; } void GLEDrawingArea::setPolarSnapIncAngle(double newAngle) { polarAngleIncrement = newAngle; } void GLEDrawingArea::modifierToggle(int mod, bool state) { modifier[mod] = state; } // To allow us to notice whether changes have occurred bool GLEDrawingArea::isDirty() { return(dirty); } // To allow us to notice whether changes have occurred void GLEDrawingArea::clearDirty() { dirty = false; // The following sets the '*' on the title bar mainWin->setWindowModified(false); emit dirtyFlagChanged(dirty); } // To allow us to notice whether changes have occurred void GLEDrawingArea::setDirtyAndSave() { setDirty(); newObjects = true; } // To allow us to notice whether changes have occurred void GLEDrawingArea::setDirty() { if (dirty) return; dirty = true; mainWin->setWindowModified(true); emit dirtyFlagChanged(dirty); } // Convert GLE point to Qt point QPointF GLEDrawingArea::gleToQt(GLEPoint& pt) { return QGLE::absGLEToQt(pt.getX(), pt.getY(), dpi, pixmap.height()); } // Create new line object based on GLE object void GLEDrawingArea::createNewLineFromScript(GLELineDO* line) { objectList.append(new GLELine(dpi, pixmap.size(), this)); currentIndex = objectList.size() - 1; connect(this, SIGNAL(sizeChanged(QSize,double)), objectList[currentIndex], SLOT(setPixmapSize(QSize,double))); objectList[currentIndex]->setPoint(GLELine::StartPoint, gleToQt(line->getP1())); objectList[currentIndex]->setPoint(GLELine::EndPoint, gleToQt(line->getP2())); objectList[currentIndex]->setGLEObject(line); objectList[currentIndex]->setLineProperties(); objectList[currentIndex]->setPropertyNoUpdate(GLELine::ArrowHeadPresence, line->getArrow()); } // Create new ellipse object based on GLE object void GLEDrawingArea::createNewEllipseFromScript(GLEEllipseDO* ellipse) { if (ellipse->isCircle()) objectList.append(new GLECircle(dpi, pixmap.size(), this)); else objectList.append(new GLEEllipse(dpi, pixmap.size(), this)); currentIndex = objectList.size() - 1; connect(this, SIGNAL(sizeChanged(QSize,double)), objectList[currentIndex], SLOT(setPixmapSize(QSize,double))); if (ellipse->isCircle()) { GLEPoint edge = ellipse->getPoint(GLEJustifyRC); objectList[currentIndex]->setPoint(GLECircle::CentrePoint, gleToQt(ellipse->getCenter())); objectList[currentIndex]->setPoint(GLECircle::CircumferencePoint, gleToQt(edge)); } else { GLEPoint c1 = ellipse->getPoint(GLEJustifyTL); GLEPoint c2 = ellipse->getPoint(GLEJustifyBR); objectList[currentIndex]->setPoint(GLEEllipse::BBoxCornerA, gleToQt(c1)); objectList[currentIndex]->setPoint(GLEEllipse::BBoxCornerB, gleToQt(c2)); } objectList[currentIndex]->setGLEObject(ellipse); objectList[currentIndex]->setLineProperties(); objectList[currentIndex]->setShapeProperties(); } // Create new ellipse object based on GLE object void GLEDrawingArea::createNewArcFromScript(GLEArcDO* arc) { GLEPoint dummy; objectList.append(new GLEArc(dpi, pixmap.size(), this)); currentIndex = objectList.size() - 1; connect(this, SIGNAL(sizeChanged(QSize,double)), objectList[currentIndex], SLOT(setPixmapSize(QSize,double))); objectList[currentIndex]->setPoint(GLEArc::CentrePoint, gleToQt(arc->getCenter())); objectList[currentIndex]->setPoint(GLEArc::StartPoint, gleToQt(arc->getPoint1(dummy))); objectList[currentIndex]->setPoint(GLEArc::EndPoint, gleToQt(arc->getPoint2(dummy))); objectList[currentIndex]->setPoint(GLEArc::MidPoint, gleToQt(arc->getPointMid(dummy))); objectList[currentIndex]->setGLEObject(arc); objectList[currentIndex]->setLineProperties(); objectList[currentIndex]->setPropertyNoUpdate(GLELine::ArrowHeadPresence, arc->getArrow()); } // Create new text object based on GLE object void GLEDrawingArea::createNewTextFromScript(GLETextDO* text) { QColor color; GLEPoint dummy; GLEText* textobj = new GLEText(dpi, pixmap.size(), this); textobj->setGLEObject(text); objectList.append(textobj); connect(this, SIGNAL(sizeChanged(QSize,double)), textobj, SLOT(setPixmapSize(QSize,double))); textobj->setPoint(GLEText::ReferencePoint, gleToQt(text->getPosition()), false); textobj->setPropertyNoUpdate(GLEText::Alignment, text->getProperties()->getIntProperty(GLEDOPropertyJustify)); textobj->setPropertyNoUpdate(GLEText::Text, QString::fromUtf8(text->getTextC())); textobj->setColorProperty(); textobj->setTextProperties(); textobj->updateFromPropertyNoDirty(GLEText::Text); } // Create new object block based on GLE object void GLEDrawingArea::createNewObjectFromScript(GLEObjectDO* obj) { GLEObjectBlock *newObj = new GLEObjectBlock(dpi, pixmap.size(), this); connect(this, SIGNAL(sizeChanged(QSize,double)), newObj, SLOT(setPixmapSize(QSize,double))); objectList.append(newObj); newObj->setGLEObject(obj); newObj->setPropertyNoUpdate(GLEDrawingObject::RefPointName, QGLE::gleToQString(obj->getRefPointString())); // FIXME: render object in GLE thread instead of GUI thread obj->render(); newObj->computeInitialPosition(); GLEPropertyStore* props = obj->getProperties(); double fontsize = props->getRealProperty(GLEDOPropertyFontSize); newObj->setPropertyNoUpdate(GLEObjectBlock::FontSize, fontsize); GLEFont* font = props->getFontProperty(GLEDOPropertyFont); GLEFont* base = font->getBaseFont(); newObj->setPropertyNoUpdate(GLEObjectBlock::FontName, base->getNumber()); newObj->setPropertyNoUpdate(GLEObjectBlock::FontStyle, base->checkStyle(font)); if (props->getModel()->isSupportScale()) { GLEArrayImpl* arr = props->getArray(); newObj->setLength(GLEObjectBlock::ObjectWidth, arr->getDouble(0), false); newObj->setLength(GLEObjectBlock::ObjectHeight, arr->getDouble(1), false); } newObj->setTextProperties(); newObj->setLineProperties(); newObj->setShapeProperties(); newObj->renderPostscript(); } // Create objects from given GLE script void GLEDrawingArea::updateFromScript(GLEScript* script) { clearObjects(); gleScript = script; for (int i = 0; i < script->getNumberObjects(); i++) { GLEDrawObject* obj = script->getObject(i); GLEDrawObjectType type = obj->getType(); switch (type) { case GDOLine: createNewLineFromScript((GLELineDO*)obj); break; case GDOEllipse: createNewEllipseFromScript((GLEEllipseDO*)obj); break; case GDOArc: createNewArcFromScript((GLEArcDO*)obj); break; case GDOText: createNewTextFromScript((GLETextDO*)obj); break; case GDOObject: createNewObjectFromScript((GLEObjectDO*)obj); break; default: break; } } isDrawing = false; update(); } void GLEDrawingArea::paintEvent(QPaintEvent *event) { // Create a QPainter to draw on the widget QPainter painter(this); // Fill the widget with white. painter.setRenderHint(QPainter::Antialiasing); QPointF nearestPoint; createSelectionHandles(); // If there is a pixmap available to draw, if (pixmap.isNull()) { painter.fillRect(event->rect(), Qt::white); return; } // Always draw the pixmap first as it'll cover anything else // Just update the part from event->rect() for efficiency painter.drawPixmap(event->rect(), pixmap, event->rect()); if (isEditMode) { QPen cursorPen = grid->pen(); cursorPen.setColor(Qt::black); cursorPen.setWidth(1); // Always draw the grid next, so that objects are over // the top of the grid. painter.save(); if ((snaps[GridSnap] || snaps[ObjectSnap] || polarSnapFound || isSelectedObjectSnap) && ((currentTool != PointerTool) || objectSelected) && (currentTool != NoTool)) { // Draw the cursor unless we're using the selection tool painter.setPen(cursorPen); int crossLength = 4; // Draw a cross at the nearest grid point QGLE::drawCross(&painter, snappedPosition, crossLength, cursorPen); } painter.restore(); QPen osnapPen; osnapPen.setColor(Qt::darkYellow); osnapPen.setWidth(1); if (snaps[PolarSnap] && !snaps[GridSnap] && (!snaps[OrthoSnap] || snaps[PolarTrack] || !isDrawing)) { SnapLine *snap; foreach(snap,snapLineList) { snap->draw(&painter); } QPointF snapPoint; foreach(snapPoint, snapLinePoints) { QGLE::drawBox(&painter, snapPoint, OSNAP_BOX_SIZE, osnapPen); } } // If we have any objects, draw them. At this level, we have // no information as to whether the object is a line, circle, // arc or whatever: we just use the common functionality. for(int i=0;iisAmove()) objectList[i]->draw(&painter); if (snaps[ObjectSnap] && ((currentTool != PointerTool) || isScaling || isMoving)) { if ((snaps[OrthoSnap] || polarSnapFound) && (osnapIntersectPoints.size() > 0)) { QPointF p; foreach(p,osnapIntersectPoints) { QGLE::drawOSnap(&painter, p, QGLE::IntersectSnap); } } else { if ((i != currentIndex) || !isDrawing) { if (objectList[i]->isSelected()) continue; if (objectList[i]->distanceToPoint(cursorPosition, &nearestPoint) < MAX_OSNAP_DRAW_DISTANCE) { objectList[i]->drawOSnaps(&painter); QGLE::drawBox(&painter, nearestPoint, OSNAP_BOX_SIZE, osnapPen); } else if (objectList[i]->isInside(cursorPosition)) objectList[i]->drawOSnaps(&painter); } } } else if (currentTool == PointerTool && objectList[i]->isSelected()) { if (objectList[i]->distanceToPoint(cursorPosition, &nearestPoint) < MAX_OSNAP_DRAW_DISTANCE) { objectList[i]->drawOSnaps(&painter); QGLE::drawBox(&painter, nearestPoint, OSNAP_BOX_SIZE, osnapPen); } else if (objectList[i]->isInside(cursorPosition)) { objectList[i]->drawOSnaps(&painter); } } } // Draw a cross to show where the final point is if (hasAMove) { objectList[amoveIndex]->draw(&painter); } if (objectSelected) { if (selectionMode == SelectionMove) drawSelectionHandles(&painter); else if (selectionMode == SelectionScale) drawScaleHandles(&painter); else drawRotationHandles(&painter); } if (objectSelected && selectionMode == SelectionScale && scaleOrigin.x() != -1.0) { QBrush blackBrush(Qt::red); QGLE::fillBox(&painter, scaleOrigin, OSNAP_BOX_SIZE, blackBrush); QGLE::drawBox(&painter, scaleOrigin, OSNAP_BOX_SIZE, cursorPen); } // FOR DEBUGGING QPen extraPen; extraPen.setColor(Qt::red); extraPen.setWidth(2); QPointF pt; foreach(pt, extraPoints) { QGLE::drawCross(&painter, pt, AMOVE_LENGTH, extraPen); } } } // Are there any objects to draw? bool GLEDrawingArea::thereAreObjects() { return(!objectList.isEmpty()); } // Get rid of any objects that have been drawn void GLEDrawingArea::clearObjects() { objectSelected = false; hasAMove = false; amoveIndex = -1; GLEDrawingObject *obj; foreach (obj, objectList) { delete obj; } objectList.clear(); updateSelection(); } // Update the resolution and notify children void GLEDrawingArea::setDPI(double new_dpi) { if (dpi != new_dpi) { dpi = new_dpi; // Emit a signal to all daughters emit dpiChanged(dpi); } } // Update the grid spacing void GLEDrawingArea::setGrid(QPointF newGrid) { if (gridSpacing != newGrid) { gridSpacing = newGrid; grid->setGrid(gridSpacing); if (gridVisible) { mainWin->refreshDisplay(); } } } // This slot receives an image from the server thread // and updates the display accordingly. void GLEDrawingArea::updateDisplay(QImage image) { if (!image.isNull()) pixmap = QPixmap::fromImage(image); else pixmap = QPixmap(); grid->setDPI(dpi); grid->setArea(pixmap.size()); if (!pixmap.isNull() && isEditMode && gridVisible) { // Draw grid on backing pixmap // This is more efficient then redrawing it on each paint event // Future: create separate backing pixmap for grid and objects QPainter painter(&pixmap); painter.setPen(grid->pen()); grid->drawGrid(&painter); } // Notify children if the height has changed: // used for coordinate transforms emit sizeChanged(pixmap.size(), dpi); // Resize the drawing area to the size of the pixmap resize(pixmap.width(),pixmap.height()); // Update the display update(); } // Toggle the visibility of the grid void GLEDrawingArea::gridToggle(bool state) { gridVisible = state; mainWin->refreshDisplay(); } void GLEDrawingArea::osnapToggle(bool state) { snaps[ObjectSnap] = state; update(); } void GLEDrawingArea::polarSnapToggle(bool state) { snaps[PolarSnap] = state; if (state == false) snaps[PolarTrack] = false; update(); } void GLEDrawingArea::polarTrackToggle(bool state) { snaps[PolarTrack] = state; if (state == true) snaps[PolarSnap] = true; update(); } void GLEDrawingArea::orthoSnapToggle(bool state) { snaps[OrthoSnap] = state; // Will probably have to edit the current line here too! update(); } double GLEDrawingArea::getDPI() { return(dpi); } // Toggle grid snap void GLEDrawingArea::gridSnapToggle(bool state) { snaps[GridSnap] = state; update(); } void GLEDrawingArea::createPolarSnaps(QPointF qtPoint) { SnapLine *snap; SnapLine *sn; bool duplicate; for(double i = polarStartAngle; i < 360.0 ; i += polarAngleIncrement) { snap = new SnapLine(dpi, pixmap.size(), this); snap->setPoint(SnapLine::StartPoint, qtPoint); snap->setPoint(SnapLine::Angle, QPointF(QGLE::degreesToRadians(i),0.0)); duplicate = false; foreach(sn, snapLineList) { if (snap->isEqual(sn)) { duplicate = true; break; } } if (!duplicate) snapLineList.append(snap); } } void GLEDrawingArea::clearPolarSnaps() { SnapLine *snap; foreach(snap, snapLineList) { delete snap; } snapLineList.clear(); snapLinePoints.clear(); polarSnapFound = false; } // Event called when a mouse button is pressed; void GLEDrawingArea::mousePressEvent(QMouseEvent *event) { // Move more of the functionality into the command // processor, for example setDirty() etc if (currentTool == NoTool) return; QPointF qtPoint; if (event->button() == Qt::LeftButton) { clearPolarSnaps(); switch (currentTool) { case LineTool: // Click to start; click to end. // The end point is continuously updated // in the mouseMoveEvent function if (isDrawing == true) { // Drawing finished isDrawing = false; clearRelativeOsnaps(); processCommand(QGLE::EndNewLine); changeLastPoint(QPointF(0.0,0.0)); emit updateStatusBar(statusMessages[LineTool][StartPoint]); setDirtyAndSave(); } else { // Register the start point qtPoint = snappedPoint(event->pos(), true); processCommand(QGLE::StartNewLineWithPoint, qtPoint); // Create snap lines from this point if(snaps[PolarSnap]) createPolarSnaps(qtPoint); changeLastPoint(QGLE::absQtToGLE(qtPoint, dpi, pixmap.height())); emit updateStatusBar(statusMessages[LineTool][EndPoint]); } break; case TextTool: // Register the start point qtPoint = snappedPoint(event->pos(), true); processCommand(QGLE::CreateTextObject, qtPoint); setDirtyAndSave(); // Not sure how necessary these two lines are... clearRelativeOsnaps(); changeLastPoint(QPointF(0.0,0.0)); break; case TanLineTool: // Click to start; click to end. // The end point is continuously updated // in the mouseMoveEvent function, AS IS THE START POINT if (isDrawing == true) { // Drawing finished isDrawing = false; clearRelativeOsnaps(); processCommand(QGLE::EndNewTanLine); changeLastPoint(QPointF(0.0,0.0)); emit updateStatusBar(statusMessages[TanLineTool][StartPoint]); setDirtyAndSave(); } else { // Register the start point qtPoint = snappedPoint(event->pos(), true); processCommand(QGLE::StartNewTanLineWithPoint, qtPoint); // NO SNAP lines from start point? // Create snap lines from this point //if(snaps[PolarSnap]) // createPolarSnaps(qtPoint); } break; case PerpLineTool: // Click to start; click to end. // The end point is continuously updated // in the mouseMoveEvent function, AS IS THE START POINT if (isDrawing == true) { // Drawing finished isDrawing = false; clearRelativeOsnaps(); processCommand(QGLE::EndNewPerpLine); changeLastPoint(QPointF(0.0,0.0)); emit updateStatusBar(statusMessages[TanLineTool][StartPoint]); setDirtyAndSave(); } else { // Register the start point qtPoint = snappedPoint(event->pos(), true); processCommand(QGLE::StartNewPerpLineWithPoint, qtPoint); // NO SNAP lines from start point? // Create snap lines from this point //if(snaps[PolarSnap]) // createPolarSnaps(qtPoint); } break; case ArcTool: // Click for start, click for end, click for mid point if (isDrawing == true) { if (objectList[currentIndex]->isSet(GLEArc::CentrePoint)) { // Then we're finished, so stop drawing isDrawing = false; processCommand(QGLE::EndNewArc); clearRelativeOsnaps(); changeLastPoint(QPointF(0,0)); emit updateStatusBar(statusMessages[ArcTool][StartPoint]); setDirtyAndSave(); } else { qtPoint = snappedPoint(event->pos()); processCommand(QGLE::SetArcMidPoint, qtPoint); if(snaps[PolarSnap]) createPolarSnaps(qtPoint); changeLastPoint(QGLE::absQtToGLE(qtPoint, dpi, pixmap.height())); emit updateStatusBar(statusMessages[ArcTool][MidPoint]); // Create snap lines from this point } } else { // Register the start point qtPoint = snappedPoint(event->pos(), true); processCommand(QGLE::StartNewArcWithPoint, qtPoint); // Create snap lines from this point if (snaps[PolarSnap]) createPolarSnaps(qtPoint); changeLastPoint(QGLE::absQtToGLE(qtPoint, dpi, pixmap.height())); emit updateStatusBar(statusMessages[ArcTool][EndPoint]); } break; case CircleTool: // Click for centre, click for point on circumference if (isDrawing == true) { // Drawing finished isDrawing = false; clearRelativeOsnaps(); processCommand(QGLE::EndNewCircle); changeLastPoint(QPointF(0,0)); emit updateStatusBar(statusMessages[CircleTool][StartPoint]); setDirtyAndSave(); } else { // Register the start point qtPoint = snappedPoint(event->pos(), true); processCommand(QGLE::StartNewCircleWithCentre, qtPoint); // Create snap lines from this point if (snaps[PolarSnap]) createPolarSnaps(qtPoint); changeLastPoint(QGLE::absQtToGLE(qtPoint, dpi, pixmap.height())); emit updateStatusBar(statusMessages[CircleTool][CircumferencePoint]); } break; case EllipseTool: // Click for corner 1, click for corner 2 if (isDrawing == true) { // Drawing finished isDrawing = false; clearRelativeOsnaps(); processCommand(QGLE::EndNewEllipse); changeLastPoint(QPointF(0,0)); emit updateStatusBar(statusMessages[EllipseTool][StartPoint]); setDirtyAndSave(); } else { // Register the start point qtPoint = snappedPoint(event->pos(), true); processCommand(QGLE::StartNewEllipseWithCorner, qtPoint); // Create snap lines from this point if (snaps[PolarSnap]) createPolarSnaps(qtPoint); changeLastPoint(QGLE::absQtToGLE(qtPoint, dpi, pixmap.height())); emit updateStatusBar(statusMessages[EllipseTool][EndPoint]); } break; case AMoveTool: // Add an 'amove' at the end of the file snappedPosition = snappedPoint(event->pos(), true); processCommand(QGLE::SetAMove, snappedPosition); setDirtyAndSave(); emit updateStatusBar(statusMessages[AMoveTool][StartPoint]); break; case PointerTool: clearRelativeOsnaps(); QPointF* dontFind = NULL; if (scaleOrigin.x() != -1.0) dontFind = &scaleOrigin; snappedPosition = snappedPointFromObject(event->pos(), dontFind); // Note: This is the only call to selectObjects selectObjects(snappedPosition, modifier[ShiftKey]); if (isMoving || isScaling || isRotating) { if(snaps[PolarSnap]) createPolarSnaps(snappedPosition); changeLastPoint(QGLE::absQtToGLE(snappedPosition, dpi, pixmap.height())); } // Redraw the screen } } #ifndef QT_NO_DEBUG else if (event->button() == Qt::RightButton) { if (objectSelected) { GLEDrawingObject *obj; bool first = true; QSet propertySet; foreach(obj, objectList) { if (obj->isSelected()) { if (first) { propertySet = obj->getValidProperties(); } else { first = false; propertySet.intersect(obj->getValidProperties()); } } } // We now have a list of the properties that are common to each object if (propertySet.contains(GLEDrawingObject::FillColour)) { QList colourList; colourList << QColor() << QColor(Qt::red) << QColor(Qt::blue) << QColor(Qt::green) << QColor(Qt::yellow); QColor objectColour; foreach(obj, objectList) { if (obj->isSelected()) { // Get the current colour objectColour = obj->getProperty(GLEDrawingObject::FillColour).value(); if (colourList.contains(objectColour)) { obj->setProperty(GLEDrawingObject::FillColour, colourList[(colourList.indexOf(objectColour) + 1) % colourList.size()]); } else { obj->setProperty(GLEDrawingObject::FillColour, colourList[0]); } } } } } } #endif // QT_NO_DEBUG not defined update(); } //! Set the reference point of, e.g., text objects or GLE object blocks (tl,bl,tc,bc,tr,br,...) void GLEDrawingArea::setReferencePoint(const QPointF& pt) { // qDebug() << "Setting reference point: " << pt; bool modified = false; GLEDrawingObject* obj; foreach(obj, objectList) { if (obj->isSelected()) { modified |= obj->setReferencePoint(pt); } } if (modified) updateSelection(); } //! Get maximum supported transform mode int GLEDrawingArea::minimumSupportedTransformMode() { GLEDrawingObject* obj; int minimum = GLEDrawingObject::TransformModeFree; foreach(obj, objectList) { if (obj->isSelected()) { int mode = obj->supportedTransformMode(); if (mode < minimum) minimum = mode; } } return minimum; } //! Inform objects that we are done with the transformation (they can re-render themselves now) void GLEDrawingArea::linearTransformDone() { GLEDrawingObject* obj; foreach(obj,objectList) { if (obj->isSelected()) { obj->linearTransformDone(); } } } void GLEDrawingArea::performScale(const QPointF& snappedPosition) { int minMode = minimumSupportedTransformMode(); if (minMode == GLEDrawingObject::TransformModeNone) return; /* qDebug() << "-- Perform scale: " << snappedPosition; qDebug() << " Origin: " << scaleOrigin; qDebug() << " Base: " << basePoint; qDebug() << " Handle: " << grabbedHandle; */ if (fabs(scaleOrigin.x()-basePoint.x()) < 1e-6 && fabs(scaleOrigin.y()-basePoint.y()) < 1e-6) { // Illegal scale: scaleOrigin and basePoint equal scaleOrigin = QPointF(-1.0, 0); return; } // Should do scale along one dimension? bool onlyX = (grabbedHandle == MiddleLeft || grabbedHandle == MiddleRight); bool onlyY = (grabbedHandle == TopMiddle || grabbedHandle == BottomMiddle); if (fabs(scaleOrigin.x()-basePoint.x()) < 1e-6) { // Can't scale in x-dimension: scaleOrigin and basePoint equal onlyX = false; onlyY = true; } else if (fabs(scaleOrigin.y()-basePoint.y()) < 1e-6) { // Can't scale in t-dimension: scaleOrigin and basePoint equal onlyX = true; onlyY = false; } GLELinearEquation transX, transY; if (minMode == GLEDrawingObject::TransformModeConstrained || modifier[CtrlKey]) { // Scale factor in x- and y-dimension should be equal if (onlyX) { // only scale in x-direction possible transX.fit(scaleOrigin.x(), scaleOrigin.x(), basePoint.x(), snappedPosition.x()); transY.setA(transX.getA()); transY.fitB(scaleOrigin.y(), scaleOrigin.y()); } else if (onlyY) { // only scale in y-direction possible transY.fit(scaleOrigin.y(), scaleOrigin.y(), basePoint.y(), snappedPosition.y()); transX.setA(transY.getA()); transX.fitB(scaleOrigin.x(), scaleOrigin.x()); } else { double det = (scaleOrigin.x()-basePoint.x())*(scaleOrigin.x()-basePoint.x()) + (scaleOrigin.y()-basePoint.y())*(scaleOrigin.y()-basePoint.y()); if (det != 0.0) { double a = ((snappedPosition.x()-scaleOrigin.x())*(basePoint.x()-scaleOrigin.x()) + (snappedPosition.y()-scaleOrigin.y())*(basePoint.y()-scaleOrigin.y())) / det; transX.setA(a); transY.setA(a); transX.fitB(scaleOrigin.x(), scaleOrigin.x()); transY.fitB(scaleOrigin.y(), scaleOrigin.y()); } } } else { // Scale factor in x- and y-dimension can be different (and is determined independently) if (onlyX) { transX.fit(scaleOrigin.x(), scaleOrigin.x(), basePoint.x(), snappedPosition.x()); } else if (onlyY) { transY.fit(scaleOrigin.y(), scaleOrigin.y(), basePoint.y(), snappedPosition.y()); } else { transX.fit(scaleOrigin.x(), scaleOrigin.x(), basePoint.x(), snappedPosition.x()); transY.fit(scaleOrigin.y(), scaleOrigin.y(), basePoint.y(), snappedPosition.y()); } } // Division close to zero if (fabs(transX.getA()) > 1e10) return; if (fabs(transY.getA()) > 1e10) return; GLEDrawingObject *obj; objectMoved = true; foreach(obj,objectList) { if (obj->isSelected()) { obj->linearTransform(transX, transY); setDirtyAndSave(); } } createSelectionHandles(); } // Event called when the mouse moves over the drawing area void GLEDrawingArea::mouseMoveEvent(QMouseEvent *event) { // Get the mouse position in GLE coordinates QPointF glePosition; cursorPosition = event->pos(); // if (isDrawing || isScaling || isMoving) updateSnapLines(cursorPosition); /*(event->buttons() & Qt::LeftButton) == 0*/ if (currentTool == PointerTool && objectSelected && (event->buttons() & Qt::LeftButton) == 0) { // snap to point of selected objects -> used to easily select basePoint isSelectedObjectSnap = true; QPointF* dontFind = NULL; if (scaleOrigin.x() != -1.0) dontFind = &scaleOrigin; snappedPosition = snappedPointFromObject(cursorPosition, dontFind); } else { isSelectedObjectSnap = false; snappedPosition = snappedPoint(cursorPosition); } glePosition = QGLE::absQtToGLE(snappedPosition, dpi, pixmap.height()); // Notify the world (currently just used to update the status bar) emit mouseMoved(glePosition); if (currentTool == NoTool) { return; } if(isDrawing) { switch (currentTool) { case LineTool: // If we're drawing, set the end point of the line to the // current mouse position so that the line is drawn in the // paintEvent. processCommand(QGLE::SetLineEndPoint, snappedPosition); update(); break; case TanLineTool: // If we're drawing, set the end point of the line to the // current mouse position so that the line is drawn in the // paintEvent. processCommand(QGLE::SetTanLineEndPoint, snappedPosition); update(); break; case PerpLineTool: // If we're drawing, set the end point of the line to the // current mouse position so that the line is drawn in the // paintEvent. processCommand(QGLE::SetPerpLineEndPoint, snappedPosition); update(); break; case CircleTool: // Set a point on the circumference of the circle processCommand(QGLE::SetCircleEdgePoint, snappedPosition); update(); break; case EllipseTool: // Set a point on the circumference of the circle processCommand(QGLE::SetEllipseSecondCorner, snappedPosition); update(); break; case ArcTool: // Either set the end point of the line or the midpoint if (objectList[currentIndex]->isSet(GLEArc::MidPoint)) processCommand(QGLE::SetArcMidPoint, snappedPosition); else processCommand(QGLE::SetArcEndPoint, snappedPosition); update(); break; } } else if (isScaling) { switch(currentTool) { case PointerTool: performScale(snappedPosition); update(); break; } } else if (isMoving) { GLEDrawingObject *obj; objectMoved = true; foreach(obj, objectList) { if (obj->isSelected()) { obj->moveBy(snappedPosition - basePoint); setDirtyAndSave(); } } createSelectionHandles(); update(); } else if (isRotating) { // TODO: rotate each selected object and rotate the handles double newAngle = QGLE::angleBetweenTwoPoints(basePoint, cursorPosition); double angleChange = newAngle - baseAngle; // Now rotate all objects by angle 'angleChange' GLEDrawingObject *obj; foreach(obj, objectList) { if (obj->isSelected()) { obj->rotateBy(-angleChange); setDirtyAndSave(); } } angleChange = -(newAngle - lastAngle); // Update the handles handleList[TopLeft] = QGLE::rotateAboutPoint(handleList[TopLeft], angleChange, basePoint); handleList[BottomLeft] = QGLE::rotateAboutPoint(handleList[BottomLeft], angleChange, basePoint); handleList[BottomRight] = QGLE::rotateAboutPoint(handleList[BottomRight], angleChange, basePoint); handleList[TopRight] = QGLE::rotateAboutPoint(handleList[TopRight], angleChange, basePoint); lastAngle = newAngle; update(); } else { if ((snaps[GridSnap] || snaps[ObjectSnap] || isSelectedObjectSnap) && ((currentTool != PointerTool) || objectSelected)) update(); if (currentTool == PointerTool && selectionMode == SelectionScale) emit updateStatusBar("Drag to scale object (ctrl locks aspect ratio) or click to select scale origin (red box)"); else if (currentTool == PointerTool && selectionMode == SelectionMove && objectSelected) { int minMode = minimumSupportedTransformMode(); if (minMode != GLEDrawingObject::TransformModeNone) emit updateStatusBar("Drag snap point from object to move; shift+click to multi-select; click to scale"); else emit updateStatusBar("Drag snap point from object to move; shift+click to multi-select"); } else emit updateStatusBar(statusMessages[currentTool][StartPoint]); } } // Event called when the mouse button is released. void GLEDrawingArea::mouseReleaseEvent(QMouseEvent *) { QStringList code; switch (currentTool) { case CircleTool: case EllipseTool: case ArcTool: case LineTool: case TextTool: case TanLineTool: case PerpLineTool: break; case PointerTool: if (selectionMode == SelectionScale) { if (objectMoved) { linearTransformDone(); } else { // Select a different scale origin (marked with a red filled square) scaleOrigin = basePoint; } } if (selectionMode == SelectionMove && objectSelected) { int minMode = minimumSupportedTransformMode(); if (minMode != GLEDrawingObject::TransformModeNone) emit updateStatusBar("Drag snap point from object to move; shift+click to multi-select; click to scale"); else emit updateStatusBar("Drag snap point from object to move; shift+click to multi-select"); } if (isMoving && !objectMoved) { int minMode = minimumSupportedTransformMode(); // We haven't moved the object, so switch mode if (selectionMode == SelectionMove && minMode != GLEDrawingObject::TransformModeNone) { selectionMode = SelectionScale; emit updateStatusBar("Drag to scale object (ctrl locks aspect ratio) or click to select scale origin (red box)"); } // NOTE: Currently disabled because generating GLE script code // from rotated objects is not yet implemented //else if (selectionMode == SelectionScale) // selectionMode = SelectionRotate; else selectionMode = SelectionMove; } if (isMoving && objectMoved) { setReferencePoint(snappedPosition); } isScaling = false; isMoving = false; isRotating = false; objectMoved = false; clearRelativeOsnaps(); clearPolarSnaps(); changeLastPoint(QPointF(0.0,0.0)); if (objectSelected) { createSelectionHandles(); if (selectionMode == SelectionScale) { // Make sure that object properties are updated updateSelection(); } } update(); break; } } void GLEDrawingArea::unselectObjects() { if (objectSelected == true) { GLEDrawingObject *obj; foreach(obj, objectList) { if (obj->isSelected()) obj->setSelected(false); } } objectSelected = false; initSelectionVars(); updateSelection(); } void GLEDrawingArea::changeLastPoint(QPointF p) { lastPoint = QGLE::absGLEToQt(p,dpi,pixmap.height()); emit basePointChanged(p); if (isDrawing || isMoving) { for(int i=0;iisSelected()) objectList[i]->addRelativeOSnaps(lastPoint); } } else { clearRelativeOsnaps(); } } // Clear the New Objects flag void GLEDrawingArea::clearNewObjectsFlag() { newObjects = false; } void GLEDrawingArea::setNewObjectsFlag() { newObjects = true; } // Identify whether there are new objects bool GLEDrawingArea::thereAreNewObjects() { return(newObjects); } void GLEDrawingArea::updateSnapLines(QPointF qtPoint) { QPointF nearestPoint; snapLinePoints.clear(); for(int i=snapLineList.size()-1;i>=0;i--) { // Are we too far away to keep it? if (snapLineList[i]->distanceToPoint(qtPoint, &nearestPoint) > MAX_SNAP_LINE_DISTANCE) { if (QGLE::distance(qtPoint, snapLineList[i]->getQtPoint(SnapLine::StartPoint)) > 3*MAX_SNAP_LINE_DISTANCE) snapLineList[i]->deactivate(); else { delete snapLineList[i]; snapLineList.removeAt(i); } } else { snapLineList[i]->activate(); snapLinePoints.append(nearestPoint); } } } // Change the tool void GLEDrawingArea::setTool(int newTool) { currentTool = newTool; // If we're not using a pointer tool, nothing should be selected if (currentTool != PointerTool) { unselectObjects(); } // Start with a clean slate initVars(); update(); emit updateStatusBar(statusMessages[currentTool][StartPoint]); } // Are we in edit mode? void GLEDrawingArea::setEditMode(bool state) { isEditMode = state; } // Handle key presses void GLEDrawingArea::hitKey(int key, int modifiers) { if (modifiers != Qt::NoModifier) return; switch(key) { // If we get an escape key, stop drawing case Qt::Key_Escape: if (objectSelected) { if (selectionMode == SelectionScale) { selectionMode = SelectionMove; emit updateStatusBar(statusMessages[PointerTool][StartPoint]); isScaling = false; isMoving = false; isRotating = false; objectMoved = false; clearRelativeOsnaps(); clearPolarSnaps(); changeLastPoint(QPointF(0.0,0.0)); createSelectionHandles(); } else { unselectObjects(); } update(); } else if (isDrawing == true) { isDrawing = false; processCommand(QGLE::Cancel); clearPolarSnaps(); changeLastPoint(QPointF(0.0,0.0)); update(); } else { clearPolarSnaps(); mainWin->selectPointerTool(); update(); } break; // If we get a delete key and something is selected, // delete it. case Qt::Key_Delete: processCommand(QGLE::DeleteSelected); update(); break; } } QPointF GLEDrawingArea::snappedPoint(QPointF p, bool ignoreOrtho) { // This function is intended to find the appropriate snapping // point (if there is one). QPointF orthoPoint; bool horiz; // Horizontal ortho? polarSnapFound = false; osnapIntersectPoints.clear(); if (snaps[GridSnap]) snappedPosition = grid->nearestPoint(p); else snappedPosition = p; bool orthoSnap; if (ignoreOrtho) orthoSnap = false; else orthoSnap = snaps[OrthoSnap]; // Find the point where the orthoSnap meets the grid // ORTHO SNAP overrides everything else! if (orthoSnap && (isDrawing || isMoving || isScaling)) { double upDist = QGLE::distance(p,lastPoint)*sin(QGLE::angleBetweenTwoPoints(p,lastPoint)); double acrossDist = QGLE::distance(p,lastPoint)*cos(QGLE::angleBetweenTwoPoints(p,lastPoint)); if (fabs(upDist) > fabs(acrossDist)) { horiz = false; orthoPoint = lastPoint - QPointF(0.0,upDist); } else { horiz = true; orthoPoint = lastPoint - QPointF(acrossDist,0.0); } if (snaps[GridSnap]) { if (horiz) orthoPoint.setX(snappedPosition.x()); else orthoPoint.setY(snappedPosition.y()); } else if (snaps[ObjectSnap]) { // Where does the ortho line cross any objects - save regardless // of whether we're close enough if (thereAreObjects()) { for(int i=0;iisSelected()) continue; if ((i != currentIndex) || (!isDrawing)) { if (horiz) { if (p.x() > lastPoint.x()) osnapIntersectPoints += objectList[i]->intersections(lastPoint, QGLE::degreesToRadians(0.0)); else osnapIntersectPoints += objectList[i]->intersections(lastPoint, QGLE::degreesToRadians(180.0)); } else { if (p.y() > lastPoint.y()) osnapIntersectPoints += objectList[i]->intersections(lastPoint, QGLE::degreesToRadians(90.0)); else osnapIntersectPoints += objectList[i]->intersections(lastPoint, QGLE::degreesToRadians(270.0)); } } } QPointF osnapPoint; QPointF closestPoint; double dist; double shortest_distance = 1e6; foreach(osnapPoint, osnapIntersectPoints) { dist = QGLE::distance(osnapPoint, orthoPoint); if (dist < shortest_distance) { shortest_distance = dist; closestPoint = osnapPoint; } } if (shortest_distance < MAX_OSNAP_DISTANCE) { if (snaps[PolarTrack] && (currentTool != NoTool) && ((currentTool != PointerTool) || isScaling || isMoving) && (currentTool != TanLineTool) && (currentTool != PerpLineTool)) createPolarSnaps(closestPoint); return(closestPoint); } } } return(orthoPoint); } else { // Either orthosnap is off or we're not yet drawing, grid comes first! if (snaps[GridSnap]) return(snappedPosition); // Now we'll try polar snap if (snaps[PolarSnap]) { SnapLine *snap; if (snaps[ObjectSnap]) { if (thereAreObjects()) { int i; for(i=0;iisSelected()) continue; if ((i != currentIndex) || (!isDrawing)) { foreach(snap,snapLineList) { if (snap->isActive()) { osnapIntersectPoints += objectList[i]->intersections( snap->getQtPoint(SnapLine::StartPoint), snap->getQtAngle(SnapLine::Angle)); } } } } // Look for intersections between multiple snap lines: for(i=0;iisActive() || snapLineList[j]->isActive()) { osnapIntersectPoints += snapLineList[i]->intersections( snapLineList[j]->getQtPoint(SnapLine::StartPoint), snapLineList[j]->getQtAngle(SnapLine::Angle)); } } } QPointF osnapPoint; QPointF closestPoint; double dist; double shortest_distance = 1e6; foreach(osnapPoint, osnapIntersectPoints) { dist = QGLE::distance(osnapPoint, p); if (dist < shortest_distance) { shortest_distance = dist; closestPoint = osnapPoint; } } if (shortest_distance < MAX_OSNAP_DISTANCE) { polarSnapFound = true; // if (isDrawing) // createPolarSnaps(closestPoint); return(closestPoint); } } } // One can now assume that we're not close to the osnapIntersectPoints // Therefore, see how close we are to the snapLines double dist; double shortest_distance = 1e6; QPointF closestPoint; QPointF pt; foreach(snap, snapLineList) { dist = snap->distanceToPoint(p,&pt); if (dist < shortest_distance) { shortest_distance = dist; closestPoint = pt; } } if (shortest_distance < MAX_OSNAP_DISTANCE) { polarSnapFound = true; return(closestPoint); } } if (snaps[ObjectSnap]) { // If the grid snap is off, we move onto OSNAP. This is where it gets interesting! // Let the paintEvent cope with drawing the handles, just work out which // is closest double dist; double shortest_distance = 1e6; QPointF closestPoint; QPointF point; if (thereAreObjects()) { for(int i=0;iisSelected()) continue; if ((i != currentIndex) || (!isDrawing)) { dist = objectList[i]->nearestOSnap(p,&point); if (dist < shortest_distance) { shortest_distance = dist; closestPoint = point; } } } if (shortest_distance < MAX_OSNAP_DISTANCE) { if (snaps[PolarTrack] && (currentTool != NoTool) && ((currentTool != PointerTool) || isScaling || isMoving) && (currentTool != TanLineTool) && (currentTool != PerpLineTool)) createPolarSnaps(closestPoint); return(closestPoint); } // If the standard handle tests fail, try the nearest point on the object for(int i=0;iisSelected()) continue; if ((i != currentIndex) || (!isDrawing)) { dist = objectList[i]->distanceToPoint(p,&point); if (dist < shortest_distance) { shortest_distance = dist; closestPoint = point; } } } if (shortest_distance < MAX_OSNAP_DISTANCE) return(closestPoint); } } } // If nothing else has come up with a better option, return the point unchanged return(p); } bool GLEDrawingArea::checkDontFind(const QPointF& p, QPointF* dontFind) { if (dontFind == NULL) return true; else return p != *dontFind; } QPointF GLEDrawingArea::snappedPointFromObject(QPointF p, QPointF* dontFind) { double dist; double shortest_distance = 1e6; QPointF closestPoint; QPointF point; if (objectSelected) { for(int i = 0;i < objectList.size(); i++) { if (objectList[i]->isSelected()) { dist = objectList[i]->nearestOSnap(p,&point); if (dist < shortest_distance && checkDontFind(point, dontFind)) { shortest_distance = dist; closestPoint = point; } } } if (shortest_distance < MAX_OSNAP_DISTANCE) return closestPoint; for(int i = 0; i < handleList.size(); i++) { dist = QGLE::distance(p, handleList[i]); if (dist < shortest_distance && checkDontFind(handleList[i], dontFind)) { shortest_distance = dist; closestPoint = handleList[i]; } } if (shortest_distance < MAX_OSNAP_DISTANCE) return closestPoint; // If the standard handle tests fail, try the nearest point on the object for(int i = 0; i < objectList.size(); i++) { if (objectList[i]->isSelected()) { dist = objectList[i]->distanceToPoint(p,&point); if (dist < shortest_distance && checkDontFind(point, dontFind)) { shortest_distance = dist; closestPoint = point; } } } if (shortest_distance < MAX_OSNAP_DISTANCE) return closestPoint; } return p; } void GLEDrawingArea::processCommand(int command, QPointF pt) { // pt is in Qt coordinates and is unsnapped switch(command) { case QGLE::StartNewLineWithPoint: createNewLine(pt); break; case QGLE::SetLineEndPoint: setLineEndPoint(pt); break; case QGLE::EndNewLine: completeNewLine(); break; case QGLE::StartNewTanLineWithPoint: createNewTanLine(pt); break; case QGLE::EndNewTanLine: completeNewTanLine(); break; case QGLE::SetTanLineEndPoint: setTanLineEndPoint(pt); break; case QGLE::StartNewPerpLineWithPoint: createNewPerpLine(pt); break; case QGLE::EndNewPerpLine: completeNewPerpLine(); break; case QGLE::SetPerpLineEndPoint: setPerpLineEndPoint(pt); break; case QGLE::StartNewCircleWithCentre: createNewCircle(pt); break; case QGLE::SetCircleEdgePoint: setCircleEdgePoint(pt); break; case QGLE::EndNewCircle: completeNewCircle(); break; case QGLE::StartNewEllipseWithCorner: createNewEllipse(pt); break; case QGLE::SetEllipseSecondCorner: setEllipseSecondCorner(pt); break; case QGLE::EndNewEllipse: completeNewEllipse(); break; case QGLE::StartNewArcWithPoint: createNewArc(pt); break; case QGLE::SetArcEndPoint: setArcEndPoint(pt); break; case QGLE::SetArcMidPoint: setArcMidPoint(pt); break; case QGLE::EndNewArc: completeNewArc(); break; case QGLE::SetAMove: setAmove(pt); break; case QGLE::Cancel: cancelCommand(); break; case QGLE::CreateTextObject: createNewTextObject(pt); break; case QGLE::DeleteSelected: deleteSelectedObjects(); break; // default: // Do Nothing for now: create an error in future } } void GLEDrawingArea::setLineEndPoint(QPointF endPoint) { // Double check currentIndex - if something went wrong this avoids a crash if (currentIndex < 0 || currentIndex >= objectList.size()) return; objectList[currentIndex]->setPoint(GLELine::EndPoint, endPoint); } void GLEDrawingArea::setTanLineEndPoint(QPointF endPoint) { QList tanList; // Double check currentIndex - if something went wrong this avoids a crash if (currentIndex < 0 || currentIndex >= objectList.size()) return; objectList[currentIndex]->setPoint(GLELine::EndPoint, endPoint); QPointF oldStart = objectList[currentIndex]->getQtPoint(GLELine::StartPoint); tanList = objectList[baseObject]->getTangents(endPoint); if (tanList.size() > 0) { QPointF np = oldStart; QPointF tp; double shortest_distance = 1e6; double distance; foreach(tp, tanList) { distance = QGLE::distance(oldStart, tp); if (distance < shortest_distance) { shortest_distance = distance; np = tp; } } objectList[currentIndex]->setPoint(GLELine::StartPoint, np); for(int i=0;iaddRelativeOSnaps(np); } } } void GLEDrawingArea::completeNewTanLine() { // Here we log what we've done so that it can be undone later } void GLEDrawingArea::setPerpLineEndPoint(QPointF endPoint) { QList perpList; // Double check currentIndex - if something went wrong this avoids a crash if (currentIndex < 0 || currentIndex >= objectList.size()) return; objectList[currentIndex]->setPoint(GLELine::EndPoint, endPoint); QPointF oldStart = objectList[currentIndex]->getQtPoint(GLELine::StartPoint); perpList = objectList[baseObject]->getPerpendiculars(endPoint); if (perpList.size() > 0) { QPointF np = oldStart; QPointF tp; double shortest_distance = 1e6; double distance; foreach(tp, perpList) { distance = QGLE::distance(oldStart, tp); if (distance < shortest_distance) { shortest_distance = distance; np = tp; } } objectList[currentIndex]->setPoint(GLELine::StartPoint, np); for(int i=0;iaddRelativeOSnaps(np); } } } void GLEDrawingArea::completeNewPerpLine() { // Here we log what we've done so that it can be undone later } void GLEDrawingArea::completeNewLine() { // Here we log what we've done so that it can be undone later } void GLEDrawingArea::clearRelativeOsnaps() { GLEDrawingObject *obj; foreach(obj,objectList) { obj->clearRelativeOSnaps(); } } GLEObjectBlock* GLEDrawingArea::createNewObjectBlock(GLEObjectDOConstructor* cons) { GLERC obj = cons->constructObject(); if (obj->getObjectRepresentation()->getRectangle()->getXMin() != -1.0) { gleScript->addNewObject(obj.get()); GLEObjectBlock *newObj = new GLEObjectBlock(dpi, pixmap.size(), this); objectList.append(newObj); currentIndex = objectList.size() - 1; // Make sure the line is updated when the image size changes newObj->setGLEObject(obj.get()); connect(this, SIGNAL(sizeChanged(QSize,double)), newObj, SLOT(setPixmapSize(QSize,double))); newObj->setTextProperties(); newObj->setLineProperties(); newObj->setShapeProperties(); return newObj; } return NULL; } void GLEDrawingArea::createNewTextObject(QPointF referencePoint) { GLEText *thisTextObject = new GLEText(dpi, pixmap.size(), this); thisTextObject->setGLEObject(gleScript->newGLEObject(GDOText)); objectList.append(thisTextObject); currentIndex = objectList.size() - 1; // Make sure the line is updated when the image size changes connect(this, SIGNAL(sizeChanged(QSize,double)), objectList[currentIndex], SLOT(setPixmapSize(QSize,double))); objectList[currentIndex]->setTextProperties(); objectList[currentIndex]->setColorProperty(); objectList[currentIndex]->setPoint(GLEText::ReferencePoint, referencePoint); objectList[currentIndex]->setProperty(GLEDrawingObject::Text, tr("X")); } void GLEDrawingArea::createNewLine(QPointF startPoint) { QPointF qtPoint; // Create a line GLELine *currentLine = new GLELine(dpi, pixmap.size(), this); // Add it to the array of lines objectList.append(currentLine); // Get the index currentIndex = objectList.size() - 1; // Make sure the line is updated when the image size changes connect(this, SIGNAL(sizeChanged(QSize,double)), objectList[currentIndex], SLOT(setPixmapSize(QSize,double))); objectList[currentIndex]->setPoint(GLELine::StartPoint, startPoint); objectList[currentIndex]->setPoint(GLELine::EndPoint, startPoint); objectList[currentIndex]->setGLEObject(gleScript->newGLEObject(GDOLine)); objectList[currentIndex]->setLineProperties(); // Start drawing isDrawing = true; } void GLEDrawingArea::createNewTanLine(QPointF startPoint) { // TODO Get the nearest object to the point, see how near it is to // the snapped point and whether it has a tangent. If so, use the // nearest point on that object! double distance; double shortest_distance = 1e6; int shortest_index = -1; int i; // Find the nearest object and the distance to it for(i=0;idistanceToPoint(startPoint); //qDebug() << "Distance to line " << i << ": " << distance; if (distance < shortest_distance) { shortest_distance = distance; shortest_index = i; } } if (shortest_distance < MAX_SELECT_DISTANCE) { if (objectList[shortest_index]->hasTangents()) { // Create a line GLELine *currentLine = new GLELine(dpi, pixmap.size(), this); // Add it to the array of lines objectList.append(currentLine); // Get the index currentIndex = objectList.size() - 1; // Remember the object to which we are drawing baseObject = shortest_index; // Make sure the line is updated when the image size changes connect(this, SIGNAL(sizeChanged(QSize,double)), objectList[currentIndex], SLOT(setPixmapSize(QSize,double))); QPointF qtPoint; // Find the nearest point on the object objectList[baseObject]->distanceToPoint(startPoint, &qtPoint); objectList[currentIndex]->setPoint(GLELine::StartPoint, qtPoint); objectList[currentIndex]->setPoint(GLELine::EndPoint, qtPoint); objectList[currentIndex]->setGLEObject(gleScript->newGLEObject(GDOLine)); objectList[currentIndex]->setLineProperties(); changeLastPoint(QGLE::absQtToGLE(qtPoint, dpi, pixmap.height())); emit updateStatusBar(statusMessages[TanLineTool][EndPoint]); // Start drawing isDrawing = true; } } } void GLEDrawingArea::createNewPerpLine(QPointF startPoint) { // TODO Get the nearest object to the point, see how near it is to // the snapped point and whether it has a perpendicular point. If so, use the // nearest point on that object! double distance; double shortest_distance = 1e6; int shortest_index = -1; int i; // Find the nearest object and the distance to it for(i=0;idistanceToPoint(startPoint); //qDebug() << "Distance to line " << i << ": " << distance; if (distance < shortest_distance) { shortest_distance = distance; shortest_index = i; } } if (shortest_distance < MAX_SELECT_DISTANCE) { if (objectList[shortest_index]->hasPerpendiculars()) { // Create a line GLELine *currentLine = new GLELine(dpi, pixmap.size(), this); // Add it to the array of lines objectList.append(currentLine); // Get the index currentIndex = objectList.size() - 1; // Remember the object to which we are drawing baseObject = shortest_index; // Make sure the line is updated when the image size changes connect(this, SIGNAL(sizeChanged(QSize,double)), objectList[currentIndex], SLOT(setPixmapSize(QSize,double))); QPointF qtPoint; // Find the nearest point on the object objectList[baseObject]->distanceToPoint(startPoint, &qtPoint); objectList[currentIndex]->setPoint(GLELine::StartPoint, qtPoint); objectList[currentIndex]->setPoint(GLELine::EndPoint, qtPoint); objectList[currentIndex]->setGLEObject(gleScript->newGLEObject(GDOLine)); objectList[currentIndex]->setLineProperties(); changeLastPoint(QGLE::absQtToGLE(qtPoint, dpi, pixmap.height())); emit updateStatusBar(statusMessages[PerpLineTool][EndPoint]); // Start drawing isDrawing = true; } } } void GLEDrawingArea::createNewArc(QPointF startPoint) { // Create an arc GLEArc *currentArc = new GLEArc(dpi, pixmap.size(), this); // Add it to the array of objects objectList.append(currentArc); // Get the index currentIndex = objectList.size() - 1; // Make sure the line is updated when the image size changes connect(this, SIGNAL(sizeChanged(QSize,double)), objectList[currentIndex], SLOT(setPixmapSize(QSize,double))); objectList[currentIndex]->setPoint(GLEArc::StartPoint, startPoint); objectList[currentIndex]->setPoint(GLEArc::EndPoint, startPoint); objectList[currentIndex]->setGLEObject(gleScript->newGLEObject(GDOArc)); objectList[currentIndex]->setLineProperties(); // Start drawing isDrawing = true; } void GLEDrawingArea::setArcEndPoint(QPointF endPoint) { objectList[currentIndex]->setPoint(GLEArc::EndPoint, endPoint); } void GLEDrawingArea::setArcMidPoint(QPointF midPoint) { objectList[currentIndex]->setPoint(GLEArc::MidPoint, midPoint); } void GLEDrawingArea::setAmove(QPointF pt) { if (hasAMove) { // Delete the object delete(objectList[amoveIndex]); // Remove the pointer objectList.removeAt(amoveIndex); } GLEAmove *amove = new GLEAmove(dpi, pixmap.size(), this); objectList.append(amove); amoveIndex = objectList.size() - 1; connect(this, SIGNAL(sizeChanged(QSize,double)), objectList[amoveIndex], SLOT(setPixmapSize(QSize,double))); objectList[amoveIndex]->setPoint(GLEAmove::CentrePoint, pt); currentIndex = amoveIndex; hasAMove = true; } void GLEDrawingArea::completeNewArc() { // Log creation of arc } void GLEDrawingArea::createNewCircle(QPointF centrePoint) { // Create a circle GLECircle *currentCircle = new GLECircle(dpi, pixmap.size(), this); // Add it to the array of objects objectList.append(currentCircle); // Get the index currentIndex = objectList.size() - 1; // Make sure the line is updated when the image size changes connect(this, SIGNAL(sizeChanged(QSize,double)), objectList[currentIndex], SLOT(setPixmapSize(QSize,double))); objectList[currentIndex]->setPoint(GLECircle::CentrePoint, centrePoint); objectList[currentIndex]->setGLEObject(gleScript->newGLEObject(GDOEllipse)); objectList[currentIndex]->setLineProperties(); objectList[currentIndex]->setShapeProperties(); // Start drawing isDrawing = true; } void GLEDrawingArea::setCircleEdgePoint(QPointF edgePoint) { objectList[currentIndex]->setPoint(GLECircle::CircumferencePoint, edgePoint); } void GLEDrawingArea::completeNewCircle() { // Log creation of circle } void GLEDrawingArea::createNewEllipse(QPointF cornerPoint) { // Create a ellipse GLEEllipse *currentEllipse = new GLEEllipse(dpi, pixmap.size(), this); // Add it to the array of objects objectList.append(currentEllipse); // Get the index currentIndex = objectList.size() - 1; // Make sure the line is updated when the image size changes connect(this, SIGNAL(sizeChanged(QSize,double)), objectList[currentIndex], SLOT(setPixmapSize(QSize,double))); objectList[currentIndex]->setPoint(GLEEllipse::BBoxCorner, cornerPoint); objectList[currentIndex]->setGLEObject(gleScript->newGLEObject(GDOEllipse)); objectList[currentIndex]->setLineProperties(); objectList[currentIndex]->setShapeProperties(); // Start drawing isDrawing = true; } void GLEDrawingArea::setEllipseSecondCorner(QPointF cornerPoint) { objectList[currentIndex]->setPoint(GLEEllipse::BBoxCorner, cornerPoint); } void GLEDrawingArea::completeNewEllipse() { // Log creation of ellipse } void GLEDrawingArea::startMoving(const QPointF& pt) { objectMoved = false; isMoving = true; basePoint = pt; for(int i = 0; i < objectList.size(); i++) { objectList[i]->setBasePoint(basePoint); } } void GLEDrawingArea::findScaleOrigin(const QPointF& pt, int handle) { if (scaleOrigin.x() == -1.0) { GLEDrawingObject* singleSelected = getSingleSelectedObject(); if (singleSelected != NULL) { singleSelected->findScaleOrigin(pt, &scaleOrigin, handle); } } } void GLEDrawingArea::selectObjectsSub(const QPointF& pt, GLEDrawingObject* object, bool multiSelect) { if (object->isSelected()) { if (multiSelect) { object->setSelected(false); objectSelected = false; for(int i = 0; i < objectList.size(); i++) { if (objectList[i]->isSelected()) { objectSelected = true; selectionMode = SelectionMove; emit updateStatusBar(statusMessages[PointerTool][StartPoint]); createSelectionHandles(); break; } } } else { if (selectionMode == SelectionMove) { startMoving(pt); } else if (selectionMode == SelectionScale) { isScaling = true; objectMoved = false; findScaleOrigin(pt, -1); // No origin found or origin is equal to given point (which is illegal) if (scaleOrigin.x() == -1.0 || scaleOrigin == pt) { // origin not yet selected -> use furthest handle int max_index = -1; double max_distance = 0.0; for(int i = 0; i < handleList.size() ;i++) { double distance = QGLE::distance(pt, handleList[i]); if (distance > max_distance) { max_distance = distance; max_index = i; } } if (max_index != -1) scaleOrigin = handleList[max_index]; } basePoint = pt; grabbedHandle = -1; // setBasePoint() copies pointHash to storedPointHash for(int i = 0; i < objectList.size(); i++) objectList[i]->setBasePoint(scaleOrigin); } } } else { if (!multiSelect) unselectObjects(); objectSelected = true; selectionMode = SelectionMove; emit updateStatusBar(statusMessages[PointerTool][StartPoint]); object->setSelected(true); createSelectionHandles(); } } GLEDrawingObject* GLEDrawingArea::getSingleSelectedObject() { int cnt = 0; GLEDrawingObject* result = NULL; for(int i = 0; i < objectList.size(); i++) { if (objectList[i]->isSelected()) { cnt++; result = objectList[i]; } } return cnt == 1 ? result : NULL; } void GLEDrawingArea::selectObjects(QPointF pt, bool multiSelect) { // Select the nearest object (unless it's a long way away) double shortest_distance = 1e6; int shortest_index = -1; double distance; QPointF point, nearest_point; bool has_object = false; GLEDrawingObject* singleSelected = getSingleSelectedObject(); if (singleSelected != NULL && singleSelected->nearestPriorityOSnap(pt, &point) < MAX_SELECT_DISTANCE) { selectObjectsSub(point, singleSelected, multiSelect); has_object = true; } // Next consider resize handles if (!has_object && objectSelected && (selectionMode == SelectionScale || selectionMode == SelectionRotate)) { // Find the distance to the nearest handle for(int i = 0; i < handleList.size() ;i++) { distance = QGLE::distance(pt, handleList[i]); if (distance < shortest_distance) { shortest_distance = distance; shortest_index = i; } } if (shortest_distance < MAX_SELECT_DISTANCE) { grabbedHandle = shortest_index; if (selectionMode == SelectionScale) { isScaling = true; basePoint = handleList[grabbedHandle]; findScaleOrigin(basePoint, grabbedHandle); if (scaleOrigin.x() == -1.0 || scaleOrigin == basePoint) { // origin not yet selected -> use opposite handle bool scale; scaleOrigin = handleList[oppositeHandleTo(grabbedHandle, &scale)]; } // setBasePoint() copies pointHash to storedPointHash for(int i = 0; i < objectList.size(); i++) objectList[i]->setBasePoint(scaleOrigin); return; } else if (selectionMode == SelectionRotate) { // TODO: Set basePoint to centre of selection // NOTE: Currently disabled because generating GLE script code // from rotated objects is not yet implemented isRotating = true; basePoint.setX((handleList[TopLeft].x() + handleList[BottomRight].x())/2); basePoint.setY((handleList[TopLeft].y() + handleList[BottomRight].y())/2); baseAngle = QGLE::angleBetweenTwoPoints(basePoint, pt); lastAngle = baseAngle; for(int i=0;isetBasePoint(basePoint); return; } } } // Find the nearest object and the distance to it shortest_distance = 1e6; shortest_index = -1; // First consider snap points of already selected objects for(int i = 0; i < objectList.size(); i++) { if (objectList[i]->isSelected()) { distance = objectList[i]->nearestOSnap(pt, &point); if (distance <= shortest_distance) { nearest_point = point; shortest_distance = distance; shortest_index = i; } } } if (shortest_distance < MAX_SELECT_DISTANCE) { selectObjectsSub(nearest_point, objectList[shortest_index], multiSelect); has_object = true; } // Then consider snap points of objects that are not yet selected if (!has_object) { for(int i = 0; i < objectList.size(); i++) { if (!objectList[i]->isSelected()) { distance = objectList[i]->nearestOSnap(pt, &point); if (distance <= shortest_distance) { nearest_point = point; shortest_distance = distance; shortest_index = i; } } } if (shortest_distance < MAX_SELECT_DISTANCE) { selectObjectsSub(nearest_point, objectList[shortest_index], multiSelect); has_object = true; } } // Now consider selection handles in case of move mode (in other modes they take precedence) if (!has_object && selectionMode == SelectionMove && objectSelected) { for(int i = 0; i < handleList.size(); i++) { distance = QGLE::distance(pt, handleList[i]); if (distance < shortest_distance) { shortest_distance = distance; shortest_index = i; } } if (shortest_distance < MAX_SELECT_DISTANCE) { startMoving(handleList[shortest_index]); has_object = true; } } // Then consider all points on any object if (!has_object) { for(int i = 0; i < objectList.size(); i++) { distance = objectList[i]->distanceToPoint(pt, &point); if (distance < shortest_distance) { nearest_point = point; shortest_distance = distance; shortest_index = i; } } if (shortest_distance < MAX_SELECT_DISTANCE) { selectObjectsSub(nearest_point, objectList[shortest_index], multiSelect); has_object = true; } } if (!has_object && !multiSelect) { unselectObjects(); } if (objectSelected) createSelectionHandles(); updateSelection(); } void GLEDrawingArea::updateSelection() { QList selectedObjects; GLEDrawingObject *obj; foreach(obj, objectList) { if (obj->isSelected()) selectedObjects.append(obj); } emit selectionChanged(selectedObjects); } int GLEDrawingArea::oppositeHandleTo(int handle, bool *scale) { int baseHandle = handle; int scaling = false; switch(handle) { case TopLeft: baseHandle = BottomRight; scaling = true; break; case TopMiddle: baseHandle = BottomMiddle; scaling = false; break; case TopRight: baseHandle = BottomLeft; scaling = true; break; case BottomLeft: baseHandle = TopRight; scaling = true; break; case BottomMiddle: baseHandle = TopMiddle; scaling = false; break; case BottomRight: baseHandle = TopLeft; scaling = true; break; case MiddleLeft: baseHandle = MiddleRight; scaling = false; break; case MiddleRight: baseHandle = MiddleLeft; scaling = false; break; } if (scale) *scale = scaling; return(baseHandle); } void GLEDrawingArea::cancelCommand() { GLEDrawObject* obj = objectList[currentIndex]->getGLEObject(); if (obj != NULL) gleScript->cancelObject(obj); delete objectList[currentIndex]; objectList.removeAt(currentIndex); } void GLEDrawingArea::deleteSelectedObjects() { if (objectSelected) { for(int i=objectList.size()-1;i>=0;i--) { if (objectList[i]->isSelected()) { if (objectList[i]->isAmove()) { hasAMove = false; amoveIndex = -1; } GLEDrawObject* gleobj = objectList[i]->getGLEObject(); if (gleobj != NULL) gleobj->setFlag(GDO_FLAG_DELETED); delete objectList[i]; objectList.removeAt(i); } } objectSelected = false; setDirtyAndSave(); } updateSelection(); } //! Select given object void GLEDrawingArea::selectObject(GLEDrawingObject* obj) { unselectObjects(); obj->setSelected(true); objectSelected = true; selectionMode = SelectionMove; createSelectionHandles(); updateSelection(); } void GLEDrawingArea::createSelectionHandles() { int ch, sh, sh2; if (!objectSelected) return; QPainterPath paintPath; if (objectSelected) { GLEDrawingObject *obj; foreach(obj, objectList) { if (obj->isSelected()) paintPath.addPath(obj->path()); } } QRectF bbox = paintPath.boundingRect(); handleList[TopLeft] = bbox.topLeft(); handleList[TopRight] = bbox.topRight(); handleList[BottomLeft] = bbox.bottomLeft(); handleList[BottomRight] = bbox.bottomRight(); foreach(ch,CornerHandles) { handleList[TopMiddle] = (handleList[TopLeft] + handleList[TopRight])/2; handleList[BottomMiddle] = (handleList[BottomLeft] + handleList[BottomRight])/2; handleList[MiddleLeft] = (handleList[TopLeft] + handleList[BottomLeft])/2; handleList[MiddleRight] = (handleList[TopRight] + handleList[BottomRight])/2; // Now go through the list of CornerHandles and if they are coincident // with the SideHandles, then delete them. foreach(ch,CornerHandles) { foreach(sh, SideHandles) { // Check whether ch is valid if (handleList.contains(ch)) { if (handleList[ch] == handleList[sh]) { // delete cause bug when selecting horiz/vertical lines // handleList.remove(ch); // qDebug() << "Removed a corner handle"; } } } } } // Now check whether any side handles are coincident and // if they are, delete them both // // I'm sure there's a simpler algorithm to achieve this, // especially since we're only likely to have coincident // TopMiddle & BottomMiddle or MiddleLeft & MiddleRight foreach(sh, SideHandles) { foreach(sh2, SideHandles) { if (sh == sh2) continue; else { if (handleList.contains(sh) && handleList.contains(sh2)) { if (handleList[sh] == handleList[sh2]) { // handleList.remove(sh); // handleList.remove(sh2); // qDebug() << "Removed a side handle"; } } } } } } void GLEDrawingArea::drawSelectionHandles(QPainter *p) { QPointF pt; QPen pen = QGLE::handlePen(); foreach(pt, handleList) { QGLE::drawBox(p, pt, HANDLE_SIZE, pen); } } void GLEDrawingArea::drawScaleHandles(QPainter *p) { QPen pen = QGLE::handlePen(); QGLE::drawScaleHandle(p, handleList[TopLeft], -1, -1, HANDLE_SIZE, pen); QGLE::drawScaleHandle(p, handleList[TopRight], +1, -1, HANDLE_SIZE, pen); QGLE::drawScaleHandle(p, handleList[BottomLeft], -1, +1, HANDLE_SIZE, pen); QGLE::drawScaleHandle(p, handleList[BottomRight], +1, +1, HANDLE_SIZE, pen); QGLE::drawBox(p, handleList[TopMiddle], HANDLE_SIZE, pen); QGLE::drawBox(p, handleList[BottomMiddle], HANDLE_SIZE, pen); QGLE::drawBox(p, handleList[MiddleLeft], HANDLE_SIZE, pen); QGLE::drawBox(p, handleList[MiddleRight], HANDLE_SIZE, pen); } void GLEDrawingArea::drawRotationHandles(QPainter *p) { QPen pen = QGLE::handlePen(); QGLE::drawRotator(p, handleList[TopLeft], TopLeft, HANDLE_SIZE, pen); QGLE::drawRotator(p, handleList[TopRight], TopRight, HANDLE_SIZE, pen); QGLE::drawRotator(p, handleList[BottomLeft], BottomLeft, HANDLE_SIZE, pen); QGLE::drawRotator(p, handleList[BottomRight], BottomRight, HANDLE_SIZE, pen); } void GLEDrawingArea::deleteSelectionHandles() { handleList.clear(); } void GLEDrawingArea::renderPostscript(const char* ps, const GLERectangle& rect, double dpi, QImage* result) { mainWin->renderPostscript(ps, rect, dpi, result); } gle-graphics-4.2.4c/src/gui/variantdelegate.h0000664000000000000000000000463711405446017017630 0ustar rootroot/*********************************************************************************** * QGLE - A Graphical Interface to GLE * * Copyright (C) 2006 A. S. Budden & J. Struyf * * * * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * * * Also add information on how to contact you by electronic and paper mail. * ***********************************************************************************/ #ifndef __VARIANTDELEGATE_H #define __VARIANTDELEGATE_H #include class ColourPicker; class VariantDelegate : public QItemDelegate { Q_OBJECT public: VariantDelegate(QObject *parent = 0); QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const; void setEditorData(QWidget *editor, const QModelIndex &index) const; void setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const; void updateEditorGeometry(QWidget *editor, const QStyleOptionViewItem &option, const QModelIndex &index) const; void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const; void doneEditingColor(ColourPicker* picker); }; #endif gle-graphics-4.2.4c/src/gui/main.cpp0000664000000000000000000002660311656572360015756 0ustar rootroot/*********************************************************************************** * QGLE - A Graphical Interface to GLE * * Copyright (C) 2006 A. S. Budden & J. Struyf * * * * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * * * Also add information on how to contact you by electronic and paper mail. * ***********************************************************************************/ /****************************************************************************** * main.cpp: Contains the main function. As with all QT main functions, this * * is very sparse: create the application object and show the main window. * ******************************************************************************/ #include #include "mainwindow.h" #include "dialogues.h" #ifdef Q_WS_WIN #include #endif #include void findDependencies(int argc, char** argv, int argi) { GLEInterface* gleInterface = GLEGetInterfacePointer(); SoftwareLocateDialogue dial(NULL, gleInterface, 0); dial.setWindowTitle("GLE - Finding Dependencies"); if (gleInterface->initializeGLE("qgle", argc, argv)) { if (argi+1 < argc) { QString file = QString::fromUtf8(argv[argi+1]); QFileInfo fileinfo(file); if (fileinfo.exists()) { if (fileinfo.isDir()) { dial.setRootDir(file); } else { int ret = QMessageBox::question(&dial, dial.tr("QGLE"), dial.tr("Import settings from previous GLE installation?"), QMessageBox::Yes | QMessageBox::No); if (ret == QMessageBox::Yes) { dial.setRootDir(file); } } } } dial.searchAuto(); dial.exec(); gleInterface->saveRCFile(); } else { dial.disableAll(); dial.enableOK(true); dial.exec(); } } void doQGLECrashRecover(QString file) { CrashRecoverDialogue dial(file); dial.exec(); QDir dir; dir.remove(file); } #define QGLE_SCRIPT_NAME_BACKUP_SIZE 1000 char QGLEScriptNameBackup[QGLE_SCRIPT_NAME_BACKUP_SIZE+1]; void SetQGLEScriptNameBackup(QString name) { QByteArray arr = name.toUtf8(); strncpy(QGLEScriptNameBackup, arr.constData(), QGLE_SCRIPT_NAME_BACKUP_SIZE); QGLEScriptNameBackup[QGLE_SCRIPT_NAME_BACKUP_SIZE] = 0; } #ifdef Q_WS_WIN #include typedef BOOL (__stdcall *pStackWalk)(DWORD MachineType, HANDLE hProcess, HANDLE hThread, LPSTACKFRAME StackFrame, PVOID ContextRecord, PREAD_PROCESS_MEMORY_ROUTINE ReadMemoryRoutine, PFUNCTION_TABLE_ACCESS_ROUTINE FunctionTableAccessRoutine, PGET_MODULE_BASE_ROUTINE GetModuleBaseRoutine, PTRANSLATE_ADDRESS_ROUTINE TranslateAddress); void PrintStackTrace(CONTEXT* context, HANDLE hLogFile, char* szOutBuffer) { DWORD NumBytes; char szModuleName[MAX_PATH+1]; DWORD dwRes = GetModuleFileNameA(NULL, szModuleName, MAX_PATH); if (dwRes == 0) { sprintf(szOutBuffer, " Error: GetModuleFileName fails.\n"); WriteFile(hLogFile, szOutBuffer, strlen(szOutBuffer), &NumBytes, 0); return; } char* backSlash = strrchr(szModuleName, '\\'); if (backSlash != 0) { backSlash[1] = 0; } strcat(szModuleName, "dbghelp.dll"); HMODULE dbgHelp = LoadLibraryA(szModuleName); if (dbgHelp == NULL) { sprintf(szOutBuffer, " Error: %s not found.\n", szModuleName); WriteFile(hLogFile, szOutBuffer, strlen(szOutBuffer), &NumBytes, 0); // try without path dbgHelp = LoadLibraryA("dbghelp.dll"); if (dbgHelp == NULL) { sprintf(szOutBuffer, " Error: dbghelp.dll not found.\n"); WriteFile(hLogFile, szOutBuffer, strlen(szOutBuffer), &NumBytes, 0); return; } } pStackWalk stackWalk = (pStackWalk)GetProcAddress(dbgHelp, "StackWalk"); if (stackWalk == NULL) { sprintf(szOutBuffer, " Error: dbghelp.dll does not include StackWalk.\n"); WriteFile(hLogFile, szOutBuffer, strlen(szOutBuffer), &NumBytes, 0); return; } PFUNCTION_TABLE_ACCESS_ROUTINE funcTable = (PFUNCTION_TABLE_ACCESS_ROUTINE)GetProcAddress(dbgHelp, "SymFunctionTableAccess"); PGET_MODULE_BASE_ROUTINE moduleBase = (PGET_MODULE_BASE_ROUTINE)GetProcAddress(dbgHelp, "SymGetModuleBase"); if (funcTable == NULL || moduleBase == NULL) { sprintf(szOutBuffer, " Error: dbghelp.dll does not include the required functions.\n"); WriteFile(hLogFile, szOutBuffer, strlen(szOutBuffer), &NumBytes, 0); return; } STACKFRAME frame; memset(&frame, 0, sizeof(frame)); frame.AddrPC.Offset = context->Eip; frame.AddrPC.Mode = AddrModeFlat; frame.AddrFrame.Offset = context->Ebp; frame.AddrFrame.Mode = AddrModeFlat; frame.AddrStack.Offset = context->Esp; frame.AddrStack.Mode = AddrModeFlat; HANDLE hProcess = GetCurrentProcess(); HANDLE hThread = GetCurrentThread(); char szBuf[MAX_PATH*2]; MEMORY_BASIC_INFORMATION MemInfo; while (true) { DWORD imageType = IMAGE_FILE_MACHINE_I386; if (!stackWalk(imageType, hProcess, hThread, &frame, context, NULL, funcTable, moduleBase, NULL)) { sprintf(szOutBuffer, " StackWalk end offset: %08lx - error code = %ld\n", frame.AddrPC.Offset, GetLastError()); WriteFile(hLogFile, szOutBuffer, strlen(szOutBuffer), &NumBytes, 0); break; } if (frame.AddrPC.Offset == frame.AddrReturn.Offset) { sprintf(szOutBuffer, " Infinite call stack - offset: %08lx\n", frame.AddrPC.Offset); WriteFile(hLogFile, szOutBuffer, strlen(szOutBuffer), &NumBytes, 0); break; } if (frame.AddrPC.Offset == 0) { break; } sprintf(szOutBuffer, " Call: 0x%08lx", frame.AddrPC.Offset); WriteFile(hLogFile, szOutBuffer, strlen(szOutBuffer), &NumBytes, 0); if (VirtualQuery((void*)frame.AddrPC.Offset, &MemInfo, sizeof(MemInfo)) != 0) { GetModuleFileNameA((HINSTANCE)MemInfo.AllocationBase, szBuf, sizeof(szBuf)-2); char* fName = strrchr(szBuf, '\\'); if (fName != NULL) fName++; else fName = szBuf; sprintf(szOutBuffer, " (module %s)", fName); WriteFile(hLogFile, szOutBuffer, strlen(szOutBuffer), &NumBytes, 0); } sprintf(szOutBuffer, "\n"); WriteFile(hLogFile, szOutBuffer, strlen(szOutBuffer), &NumBytes, 0); } } LONG WINAPI MyUnhandledExceptionFilter(EXCEPTION_POINTERS *info) { // Crash report code (intentionally does not use Qt) static bool bFirstTime = true; if (!bFirstTime) { // Recursive call means this routine crashed return EXCEPTION_CONTINUE_SEARCH; } bFirstTime = false; // Get temporary path name TCHAR lpPathBuffer[MAX_PATH+1]; DWORD dwRetVal = GetTempPath(MAX_PATH, lpPathBuffer); if (dwRetVal > MAX_PATH || dwRetVal == 0) { return EXCEPTION_CONTINUE_SEARCH; } // Get temporary file name TCHAR szTempName[MAX_PATH+1]; UINT uRetVal = GetTempFileName(lpPathBuffer, TEXT("gle"), 0, szTempName); if (uRetVal == 0) { return EXCEPTION_CONTINUE_SEARCH; } // Create crash log file HANDLE hLogFile = CreateFile(szTempName, GENERIC_WRITE, 0, 0, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0); if (hLogFile == INVALID_HANDLE_VALUE) { return EXCEPTION_CONTINUE_SEARCH; } // Find out module in which crash occured CONTEXT* Context = info->ContextRecord; char szCrashModulePathName[MAX_PATH*2]; strcpy(szCrashModulePathName, "Unknown"); MEMORY_BASIC_INFORMATION MemInfo; if (VirtualQuery((void*)Context->Eip, &MemInfo, sizeof(MemInfo)) != 0) { GetModuleFileNameA((HINSTANCE)MemInfo.AllocationBase, szCrashModulePathName, sizeof(szCrashModulePathName)-2); } // Print error code to log file DWORD NumBytes; char szOutBuffer[5000]; char* szCrashModuleName = strrchr(szCrashModulePathName, '\\'); if (szCrashModuleName != NULL) szCrashModuleName++; else szCrashModuleName = szCrashModulePathName; sprintf(szOutBuffer, "Error code 0x%08x in module %s at %04x:%08x.\n", (unsigned int)info->ExceptionRecord->ExceptionCode, szCrashModuleName, (unsigned int)Context->SegCs, (unsigned int)Context->Eip); WriteFile(hLogFile, szOutBuffer, strlen(szOutBuffer), &NumBytes, 0); if (info->ExceptionRecord->ExceptionCode == STATUS_ACCESS_VIOLATION && info->ExceptionRecord->NumberParameters >= 2) { if (info->ExceptionRecord->ExceptionInformation[0]) { sprintf(szOutBuffer, "Write to location %08x caused an access violation.\n", (unsigned int)info-> ExceptionRecord->ExceptionInformation[1]); } else { sprintf(szOutBuffer, "Read from location %08x caused an access violation.\n", (unsigned int)info-> ExceptionRecord->ExceptionInformation[1]); } } WriteFile(hLogFile, szOutBuffer, strlen(szOutBuffer), &NumBytes, 0); sprintf(szOutBuffer, "\nStack trace:\n"); WriteFile(hLogFile, szOutBuffer, strlen(szOutBuffer), &NumBytes, 0); PrintStackTrace(Context, hLogFile, szOutBuffer); sprintf(szOutBuffer, "\nGLE file: '%s'\n", QGLEScriptNameBackup); WriteFile(hLogFile, szOutBuffer, strlen(szOutBuffer), &NumBytes, 0); CloseHandle(hLogFile); // Restart in crash recover mode TCHAR szModuleName[MAX_PATH+1]; DWORD dwRes = GetModuleFileName(NULL, szModuleName, MAX_PATH); if (dwRes == 0) { return EXCEPTION_CONTINUE_SEARCH; } TCHAR szCommandLine[2*MAX_PATH]; lstrcpy(szCommandLine, szModuleName); lstrcat(szCommandLine, L" -crashrecover \""); lstrcat(szCommandLine, szTempName); lstrcat(szCommandLine, L"\""); STARTUPINFO si; ZeroMemory(&si, sizeof(si)); si.cb = sizeof(si); si.dwFlags = STARTF_USESHOWWINDOW; si.wShowWindow = SW_SHOW; PROCESS_INFORMATION pi; ZeroMemory(&pi, sizeof(pi)); if (CreateProcess(NULL, szCommandLine, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) { // suppress the standard crash dialog exit(-1); } else { // the standard crash dialog appear return EXCEPTION_CONTINUE_SEARCH; } } #endif int main(int argc, char *argv[]) { QApplication app(argc,argv); Q_INIT_RESOURCE(qgle); // setlocale is required to make sure that GLE uses decimal a point instead of a comma // this is very important, otherwise its PostScript output may contain commas in floating point numbers // the call to setlocale should come after the initialization of QApplication setlocale(LC_NUMERIC, "C"); for(int i = 0; i < argc; i++) { if (QString(argv[i]) == "-finddeps") { findDependencies(argc, argv, i); return 0; } if (QString(argv[i]) == "-crashrecover" && i+1 < argc) { doQGLECrashRecover(QString(argv[i+1])); return 0; } } SetQGLEScriptNameBackup(QString("?")); #ifdef Q_WS_WIN SetUnhandledExceptionFilter(MyUnhandledExceptionFilter); #endif GLEMainWindow mainWin(argc,argv); mainWin.show(); return app.exec(); } gle-graphics-4.2.4c/src/gui/settings_dialogue.cpp0000664000000000000000000005447411663016234020541 0ustar rootroot/*********************************************************************************** * QGLE - A Graphical Interface to GLE * * Copyright (C) 2006 A. S. Budden & J. Struyf * * * * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * * * Also add information on how to contact you by electronic and paper mail. * ***********************************************************************************/ #include #include "qgle_statics.h" #include "settings.h" #include "settings_dialogue.h" #include "dialogues.h" #include "qgs.h" // Constructor for the settings dialogue box SettingsDialogue::SettingsDialogue(GLEMainWindow *parent) : QDialog(parent) { mainWin = parent; // Create a new tab widget and add tabs for the various // categories of setting appTab = new ApplicationTab(this); servTab = new ServerTab(this); drawTab = new DrawingTab(this); toolTab = new ToolTab(this, parent); tabWidget = new QTabWidget; tabWidget->addTab(appTab, tr("Application")); tabWidget->addTab(servTab, tr("Server")); tabWidget->addTab(drawTab, tr("Drawing")); tabWidget->addTab(toolTab, tr("Tools")); // Add ok and cancel button QPushButton *okButton = new QPushButton(tr("OK")); QPushButton *cancelButton = new QPushButton(tr("Cancel")); okButton->setDefault(true); // Connect to slots: we need to handle what happens on accept // and reject connect(okButton, SIGNAL(clicked()), this, SLOT(okClicked())); connect(cancelButton, SIGNAL(clicked()), this, SLOT(reject())); // Layout the buttons QHBoxLayout *buttonLayout = new QHBoxLayout; buttonLayout->addStretch(1); buttonLayout->addWidget(okButton); buttonLayout->addWidget(cancelButton); // Layout the dialogue box as a whole QVBoxLayout *mainLayout = new QVBoxLayout; mainLayout->addWidget(tabWidget); mainLayout->addLayout(buttonLayout); setLayout(mainLayout); initApplicationTab(); initServerTab(); initDrawingTab(); initToolTab(); resize(mainWin->width()/2, mainWin->height()/2); // Set the window title setWindowTitle(tr("%1 Settings").arg(APP_NAME)); } void SettingsDialogue::initApplicationTab() { // Set up the tab based on the application's current settings appTab->setDPI(mainWin->settings->dpi()); appTab->setStoreSize(mainWin->settings->storeSize()); appTab->setStoreDir(mainWin->settings->storeDirectory()); appTab->setSaveOnPreview(mainWin->settings->saveOnPreview()); appTab->setMonitorOpenFile(mainWin->settings->monitorOpenFile()); appTab->setMonitorAutoReload(mainWin->settings->monitorAutoReloadFile()); appTab->setAutoScaleOnOpen(mainWin->settings->autoScaleOnOpen()); appTab->setAskAboutObjects(mainWin->settings->askAboutObjects()); } void SettingsDialogue::initServerTab() { // Set up the tab based on the application's current settings servTab->setPort(mainWin->settings->port()); // servTab->setAutoStart(mainWin->settings->autoStartServer()); } void SettingsDialogue::initDrawingTab() { // Set up the tab based on the application's current settings drawTab->setGrid(mainWin->settings->grid()); drawTab->setEqualGrid(mainWin->settings->equalGrid()); drawTab->setGridSnapOnStart(mainWin->settings->gridSnapOnStart()); drawTab->setOrthoSnapOnStart(mainWin->settings->orthoSnapOnStart()); drawTab->setOsnapOnStart(mainWin->settings->osnapOnStart()); drawTab->setPolarSnapOnStart(mainWin->settings->polarSnapOnStart()); drawTab->setPolarTrackOnStart(mainWin->settings->polarTrackOnStart()); drawTab->setPolarSnapStartAngle(mainWin->settings->polarSnapStartAngle()); drawTab->setPolarSnapIncAngle(mainWin->settings->polarSnapIncAngle()); } void SettingsDialogue::initToolTab() { // Set up the tab based on the application's current settings toolTab->setToolGLE(mainWin->getGLEVersion(), mainWin->getGLEBuildDate(), mainWin->getGLETop()); toolTab->setToolGsLib(mainWin->settings->getLibGSLocation(), mainWin->getGsLibVersion()); toolTab->setToolEditor(mainWin->settings->editorLocation()); toolTab->setRenderUsingCairo(mainWin->settings->isRenderUsingCairo()); } void SettingsDialogue::okClicked() { // Copy the settings from all the tabs to the application's settings mainWin->settings->setStoreSize(appTab->storeSize()); mainWin->settings->setStoreDirectory(appTab->storeDir()); mainWin->settings->setSaveOnPreview(appTab->saveOnPreview()); mainWin->settings->setMonitorOpenFile(appTab->monitorOpenFile()); mainWin->settings->setMonitorAutoReloadFile(appTab->monitorAutoReload()); mainWin->settings->setAskAboutObjects(appTab->askAboutObjects()); if (mainWin->settings->autoScaleOnOpen() != appTab->autoScaleOnOpen()) { mainWin->settings->setAutoScaleOnOpen(appTab->autoScaleOnOpen()); // not required (?): // emit autoScaleChanged(appTab->autoScaleOnOpen()); } if (mainWin->settings->dpi() != appTab->dpi()) { mainWin->settings->setDPI(appTab->dpi()); emit defaultResolutionChanged((double) appTab->dpi()); } mainWin->settings->setPort(servTab->port()); // mainWin->settings->setAutoStartServer(servTab->autoStart()); mainWin->settings->setGrid(drawTab->grid()); mainWin->settings->setEqualGrid(drawTab->equalGrid()); mainWin->settings->setGridSnapOnStart(drawTab->gridSnapOnStart()); mainWin->settings->setOrthoSnapOnStart(drawTab->orthoSnapOnStart()); mainWin->settings->setOsnapOnStart(drawTab->osnapOnStart()); mainWin->settings->setPolarSnapOnStart(drawTab->polarSnapOnStart()); mainWin->settings->setPolarTrackOnStart(drawTab->polarTrackOnStart()); mainWin->settings->setPolarSnapStartAngle(drawTab->polarSnapStartAngle()); mainWin->settings->setPolarSnapIncAngle(drawTab->polarSnapIncAngle()); mainWin->settings->setLibGSLocation(toolTab->getToolGsLib()); mainWin->settings->setEditorLocation(toolTab->getToolEditor()); mainWin->settings->setRenderUsingCairo(toolTab->isRenderUsingCairo()); // Close accept(); } // Constructor for the application settings tab ApplicationTab::ApplicationTab(QWidget *parent) : QWidget(parent) { QGroupBox *settingsGroup = new QGroupBox(tr("Settings")); saveSizeBox = new QCheckBox(tr("Save window size and position on exit")); saveDirBox = new QCheckBox(tr("Remember working directory")); saveOnPreviewBox = new QCheckBox(tr("Auto save on preview")); monitorOpenFileBox = new QCheckBox(tr("Monitor file for changes")); monitorAutoReloadBox = new QCheckBox(tr("Reload without asking")); autoScaleOnOpenBox = new QCheckBox(tr("Auto scale when opening diagrams")); askAboutObjectsBox = new QCheckBox(tr("Automatically keep objects when reloading")); QLabel *resolutionLabel = new QLabel(tr("Default display resolution (dpi):")); resolutionBox = new QSpinBox(); resolutionBox->setMinimum(0); resolutionBox->setMaximum(500); resolutionBox->setSingleStep(10); QVBoxLayout *settingsLayout = new QVBoxLayout; settingsLayout->addWidget(saveSizeBox); settingsLayout->addWidget(saveDirBox); settingsLayout->addWidget(saveOnPreviewBox); settingsLayout->addWidget(autoScaleOnOpenBox); settingsLayout->addWidget(monitorOpenFileBox); settingsLayout->addWidget(monitorAutoReloadBox); // has become obsolete: // settingsLayout->addWidget(askAboutObjectsBox); settingsLayout->addWidget(resolutionLabel); settingsLayout->addWidget(resolutionBox); settingsGroup->setLayout(settingsLayout); QVBoxLayout *mainLayout = new QVBoxLayout; mainLayout->addWidget(settingsGroup); mainLayout->addStretch(1); setLayout(mainLayout); connect(monitorOpenFileBox, SIGNAL(stateChanged(int)), this, SLOT(fileMonitorUpdated(int))); } void ApplicationTab::setDPI(int new_dpi) { resolutionBox->setValue(new_dpi); } int ApplicationTab::dpi() { return(resolutionBox->value()); } void ApplicationTab::setAutoScaleOnOpen(bool new_autoscale) { autoScaleOnOpenBox->setChecked(new_autoscale); } bool ApplicationTab::autoScaleOnOpen() { if (autoScaleOnOpenBox->checkState() == Qt::Checked) return(true); else return(false); } void ApplicationTab::setStoreSize(bool new_storeSize) { if (new_storeSize) saveSizeBox->setCheckState(Qt::Checked); else saveSizeBox->setCheckState(Qt::Unchecked); } bool ApplicationTab::storeSize() { if (saveSizeBox->checkState() == Qt::Checked) return(true); else return(false); } void ApplicationTab::setStoreDir(bool new_storeDir) { if (new_storeDir) saveDirBox->setCheckState(Qt::Checked); else saveDirBox->setCheckState(Qt::Unchecked); } bool ApplicationTab::storeDir() { if (saveDirBox->checkState() == Qt::Checked) return(true); else return(false); } void ApplicationTab::setSaveOnPreview(bool new_save) { if (new_save) saveOnPreviewBox->setCheckState(Qt::Checked); else saveOnPreviewBox->setCheckState(Qt::Unchecked); } bool ApplicationTab::saveOnPreview() { if (saveOnPreviewBox->checkState() == Qt::Checked) return(true); else return(false); } void ApplicationTab::setMonitorOpenFile(bool new_save) { if (new_save) monitorOpenFileBox->setCheckState(Qt::Checked); else monitorOpenFileBox->setCheckState(Qt::Unchecked); } bool ApplicationTab::monitorOpenFile() { if (monitorOpenFileBox->checkState() == Qt::Checked) return(true); else return(false); } void ApplicationTab::setMonitorAutoReload(bool new_save) { if (new_save) monitorAutoReloadBox->setCheckState(Qt::Checked); else monitorAutoReloadBox->setCheckState(Qt::Unchecked); } void ApplicationTab::fileMonitorUpdated(int state) { monitorAutoReloadBox->setEnabled(state == Qt::Checked); } bool ApplicationTab::monitorAutoReload() { if (monitorAutoReloadBox->checkState() == Qt::Checked) return(true); else return(false); } void ApplicationTab::setAskAboutObjects(bool newAsk) { if (newAsk) askAboutObjectsBox->setCheckState(Qt::Unchecked); else askAboutObjectsBox->setCheckState(Qt::Checked); } bool ApplicationTab::askAboutObjects() { if (askAboutObjectsBox->checkState() == Qt::Unchecked) return(true); else return(false); } // Constructor for the server settings tab ServerTab::ServerTab(QWidget *parent) : QWidget(parent) { QLabel *portNumLabel = new QLabel(tr("Server port number:")); portNumBox = new QSpinBox(); portNumBox->setMaximum(65535); portNumBox->setMinimum(1); portNumBox->setSingleStep(1); // This needs to change to read from the settings! portNumBox->setValue(6667); QVBoxLayout *all = new QVBoxLayout(); QGridLayout *mainLayout = new QGridLayout(); mainLayout->addWidget(portNumLabel,0,0,1,1,Qt::AlignLeft); mainLayout->addWidget(portNumBox,0,1,1,1,Qt::AlignLeft); all->addLayout(mainLayout); all->addStretch(1); setLayout(all); } void ServerTab::setPort(int new_port) { portNumBox->setValue(new_port); } int ServerTab::port() { return(portNumBox->value()); } void ServerTab::setAutoStart(bool new_autoStart) { if (new_autoStart) autoStartBox->setCheckState(Qt::Checked); else autoStartBox->setCheckState(Qt::Unchecked); } bool ServerTab::autoStart() { if (autoStartBox->checkState() == Qt::Checked) return(true); else return(false); } // Constructor for the drawing settings tab DrawingTab::DrawingTab(QWidget *parent) : QWidget(parent) { QGroupBox *gridSpacingGroup = new QGroupBox(tr("Grid Spacing")); QGroupBox *snapControlGroup = new QGroupBox(tr("Snap Control")); QLabel *xLabel = new QLabel(tr("X:")); xBox = new QDoubleSpinBox(); xBox->setMaximum(100.0); xBox->setMinimum(0.005); xBox->setDecimals(3); xBox->setSingleStep(0.1); QLabel *yLabel = new QLabel(tr("Y:")); yBox = new QDoubleSpinBox(); yBox->setMaximum(100.0); yBox->setMinimum(0.005); yBox->setDecimals(3); yBox->setSingleStep(0.1); equalSpacing = new QCheckBox("Equal spacing"); connect(equalSpacing, SIGNAL(toggled(bool)), this, SLOT(equalSpacingToggled(bool))); QGridLayout *gridSpacingLayout = new QGridLayout; gridSpacingLayout->addWidget(xLabel,0,0,1,1,Qt::AlignLeft); gridSpacingLayout->addWidget(xBox,0,1,1,1,Qt::AlignLeft); gridSpacingLayout->addWidget(yLabel,1,0,1,1,Qt::AlignLeft); gridSpacingLayout->addWidget(yBox,1,1,1,1,Qt::AlignLeft); gridSpacingLayout->addWidget(equalSpacing,2,0,1,5,Qt::AlignLeft); gridSpacingGroup->setLayout(gridSpacingLayout); QGridLayout *snapLayout = new QGridLayout; gridSnapOnStartBox = new QCheckBox(tr("Start with grid snap enabled")); osnapOnStartBox = new QCheckBox(tr("Start with object snap enabled")); orthoSnapOnStartBox = new QCheckBox(tr("Start with orthogonal snap enabled")); polarSnapOnStartBox = new QCheckBox(tr("Start with polar snap enabled")); polarTrackOnStartBox = new QCheckBox(tr("Start with polar tracking enabled")); QLabel *startLabel = new QLabel(tr("Polar snap start angle:")); QLabel *incLabel = new QLabel(tr("Polar snap increment angle:")); polarSnapStartAngleBox = new QDoubleSpinBox(); polarSnapStartAngleBox->setMaximum(360.0); polarSnapStartAngleBox->setMinimum(0.0); polarSnapStartAngleBox->setSingleStep(5.0); polarSnapIncAngleBox = new QDoubleSpinBox(); polarSnapIncAngleBox->setMaximum(360.0); polarSnapIncAngleBox->setMinimum(0.0); polarSnapIncAngleBox->setSingleStep(5.0); snapLayout->addWidget(osnapOnStartBox,0,0,1,5,Qt::AlignLeft); snapLayout->addWidget(polarSnapOnStartBox,1,0,1,5,Qt::AlignLeft); snapLayout->addWidget(polarTrackOnStartBox,2,0,1,5,Qt::AlignLeft); snapLayout->addWidget(orthoSnapOnStartBox,3,0,1,5,Qt::AlignLeft); snapLayout->addWidget(gridSnapOnStartBox,4,0,1,5,Qt::AlignLeft); snapLayout->addWidget(startLabel,5,0,1,1,Qt::AlignLeft); snapLayout->addWidget(polarSnapStartAngleBox,5,1,1,1,Qt::AlignLeft); snapLayout->addWidget(incLabel,6,0,1,1,Qt::AlignLeft); snapLayout->addWidget(polarSnapIncAngleBox,6,1,1,1,Qt::AlignLeft); snapControlGroup->setLayout(snapLayout); QVBoxLayout *layout = new QVBoxLayout; layout->addWidget(gridSpacingGroup); layout->addWidget(snapControlGroup); setLayout(layout); } void DrawingTab::equalSpacingToggled(bool state) { yBox->setValue(xBox->value()); yBox->setEnabled(!state); } void DrawingTab::setGrid(QPointF newGrid) { xBox->setValue(newGrid.x()); yBox->setValue(newGrid.y()); } void DrawingTab::setEqualGrid(bool state) { equalSpacing->setChecked(state); } bool DrawingTab::equalGrid() { return(equalSpacing->isChecked()); } QPointF DrawingTab::grid() { if (equalSpacing->checkState() == Qt::Checked) return(QPointF(xBox->value(),xBox->value())); else return(QPointF(xBox->value(),yBox->value())); } //! Set polar snap on start void DrawingTab::setPolarSnapOnStart(bool state) { if (state) polarSnapOnStartBox->setChecked(Qt::Checked); else polarSnapOnStartBox->setChecked(Qt::Unchecked); } //! Get polar snap on start bool DrawingTab::polarSnapOnStart() { if (polarSnapOnStartBox->isChecked()) return(true); else return(false); } //! Set polar snap on start void DrawingTab::setPolarTrackOnStart(bool state) { if (state) polarTrackOnStartBox->setChecked(Qt::Checked); else polarTrackOnStartBox->setChecked(Qt::Unchecked); } //! Get polar snap on start bool DrawingTab::polarTrackOnStart() { if (polarTrackOnStartBox->isChecked()) return(true); else return(false); } //! Set osnap on start void DrawingTab::setOsnapOnStart(bool state) { if (state) osnapOnStartBox->setChecked(Qt::Checked); else osnapOnStartBox->setChecked(Qt::Unchecked); } //! Get osnap on start bool DrawingTab::osnapOnStart() { if (osnapOnStartBox->isChecked()) return(true); else return(false); } //! Set ortho snap on start void DrawingTab::setOrthoSnapOnStart(bool state) { if (state) orthoSnapOnStartBox->setChecked(Qt::Checked); else orthoSnapOnStartBox->setChecked(Qt::Unchecked); } //! Get ortho snap on start bool DrawingTab::orthoSnapOnStart() { if (orthoSnapOnStartBox->isChecked()) return(true); else return(false); } //! Set grid snap on start void DrawingTab::setGridSnapOnStart(bool state) { if (state) gridSnapOnStartBox->setChecked(Qt::Checked); else gridSnapOnStartBox->setChecked(Qt::Unchecked); } //! Get grid snap on start bool DrawingTab::gridSnapOnStart() { if (gridSnapOnStartBox->isChecked()) return(true); else return(false); } //! Set polar snap start angle void DrawingTab::setPolarSnapStartAngle(double angle) { polarSnapStartAngleBox->setValue(angle); } //! Get polar snap start angle double DrawingTab::polarSnapStartAngle() { return(polarSnapStartAngleBox->value()); } //! Set polar snap Inc angle void DrawingTab::setPolarSnapIncAngle(double angle) { polarSnapIncAngleBox->setValue(angle); } //! Get polar snap Inc angle double DrawingTab::polarSnapIncAngle() { return(polarSnapIncAngleBox->value()); } ToolTab::ToolTab(QWidget *parent, GLEMainWindow *main) : QWidget(parent) { mainWin = main; ToolGsLib = new QLineEdit(); ToolEditor = new QLineEdit(); GLEVersion = new QLabel(); GLEBuildDate = new QLabel(); GLETop = new QLineEdit(); GsLibVersion = new QLabel(); renderUsingCairo = new QCheckBox(tr("Render with the Cairo graphics library")); #ifndef HAVE_CAIRO renderUsingCairo->setEnabled(false); #endif QGridLayout *gle = new QGridLayout(); gle->addWidget(GLETop,0,0); GLETop->setReadOnly(true); QPushButton *top_expl = new QPushButton(tr("Explore")); gle->addWidget(top_expl,0,1); connect(top_expl, SIGNAL(clicked()), this, SLOT(exploreGLETop())); gle->setColumnStretch(0, 100); QGridLayout *gs = new QGridLayout(); gs->addWidget(ToolGsLib,0,0); QPushButton *gs_browse = new QPushButton(tr("Browse")); gs->addWidget(gs_browse,0,1); connect(gs_browse, SIGNAL(clicked()), this, SLOT(browseToolGsLib())); gs->setColumnStretch(0, 100); QGridLayout *editor = new QGridLayout(); editor->addWidget(ToolEditor,0,0); QPushButton *edit_browse = new QPushButton(tr("Browse")); editor->addWidget(edit_browse,0,1); connect(edit_browse, SIGNAL(clicked()), this, SLOT(browseToolEditor())); editor->setColumnStretch(0, 100); QVBoxLayout *layout = new QVBoxLayout(); layout->addWidget(GLEVersion); layout->addWidget(GLEBuildDate); layout->addWidget(new QLabel(tr("GLE_TOP:"))); layout->addLayout(gle); layout->addWidget(GsLibVersion); layout->addLayout(gs); layout->addWidget(new QLabel(tr("Text editor"))); layout->addLayout(editor); layout->addWidget(renderUsingCairo); layout->addStretch(1); QHBoxLayout *configLayo = new QHBoxLayout(); configLayo->addWidget(new QLabel(tr("Edit GLE's configuration:"))); QPushButton *globalConf = new QPushButton(tr("Global")); connect(globalConf, SIGNAL(clicked()), this, SLOT(editGlobalConfig())); configLayo->addWidget(globalConf); QPushButton *userConf = new QPushButton(tr("User")); if (mainWin->getGLEInterface()->getUserConfigLocation() == "") { userConf->setEnabled(false); } else { connect(userConf, SIGNAL(clicked()), this, SLOT(editUserConfig())); } configLayo->addWidget(userConf); configLayo->addStretch(1); QPushButton *findDeps = new QPushButton(tr("Auto Find Software")); connect(findDeps, SIGNAL(clicked()), this, SLOT(findSoftwareDependencies())); configLayo->addWidget(findDeps); layout->addLayout(configLayo); setLayout(layout); } void ToolTab::exploreGLETop() { mainWin->showLocalFile(mainWin->getGLETop()); } void ToolTab::browseToolGsLib() { QString dir = QGLE::GetDirName(ToolGsLib->text()); if (dir.isEmpty()) dir = "/"; // don't use stock dialog; otherwise it's impossible to select a framework on MacOS/X QFileDialog dialog(this, tr("Locate the GhostScript library"), dir, QGLE::libraryFilter()); dialog.setFileMode(QFileDialog::AnyFile); if (dialog.exec()) { QStringList locs = dialog.selectedFiles(); if (locs.size() > 0 && locs[0] != "") { ToolGsLib->setText(locs[0]); } } } void ToolTab::browseToolEditor() { QString dir = QGLE::GetDirName(ToolEditor->text()); if (dir.isEmpty()) dir = "/"; QString location = QFileDialog::getOpenFileName(this, tr("Locate the executable of your text editor"), dir, QGLE::executableFilter()); if (!location.isEmpty()) ToolEditor->setText(location); } void ToolTab::setToolGLE(const QString& vers, const QString& date, const QString& top) { GLEVersion->setText(QString("GLE version: ") + vers); GLEBuildDate->setText(QString("GLE build date: ") + date); GLETop->setText(top); } void ToolTab::setToolGsLib(const QString& value, const QString& vers) { ToolGsLib->setText(value); GsLibVersion->setText(QString("GhostScript DLL (v") + vers + QString(")")); } void ToolTab::setToolEditor(const QString& value) { ToolEditor->setText(value); } void ToolTab::findSoftwareDependencies() { SoftwareLocateDialogue dial(mainWin, mainWin->getGLEInterface(), QGLE_SOFT_DIALOG_SEARCH_CANCEL | QGLE_SOFT_DIALOG_SEARCH_MANUAL); dial.setWindowTitle("GLE - Finding Dependencies"); dial.print(tr("\nClick 'Search Automatically' to make GLE search common locations for software tools, such as LaTeX and GhostScript.\n")); dial.exec(); // Don't forget to restore the console output mainWin->restoreConsoleOutput(); if (!dial.isCancel()) { GSLibFunctions* fct = GSLibFunctions::getInstance(); setToolGsLib(fct->libGSLocation(), mainWin->getGsLibVersion()); if (dial.isConfigModified()) { mainWin->getGLEInterface()->saveRCFile(); } } } void ToolTab::editGlobalConfig() { QString name = QString::fromUtf8(mainWin->getGLEInterface()->getGLETop()); name += QDir::separator(); name += tr("glerc"); mainWin->openInTextEditor(name); } void ToolTab::editUserConfig() { QString name = QString::fromUtf8(mainWin->getGLEInterface()->getUserConfigLocation().c_str()); mainWin->openInTextEditor(name); } bool ToolTab::isRenderUsingCairo() { return renderUsingCairo->checkState() == Qt::Checked; } void ToolTab::setRenderUsingCairo(bool value) { renderUsingCairo->setCheckState(value ? Qt::Checked : Qt::Unchecked); } gle-graphics-4.2.4c/src/gui/consolewindow.h0000664000000000000000000000557611405446017017366 0ustar rootroot/*********************************************************************************** * QGLE - A Graphical Interface to GLE * * Copyright (C) 2006 A. S. Budden & J. Struyf * * * * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * * * Also add information on how to contact you by electronic and paper mail. * ***********************************************************************************/ #ifndef _CONSOLE_WINDOW_H #define _CONSOLE_WINDOW_H #include "../gle/gle-interface/gle-interface.h" #include class ConsoleWindow; class ConsoleWindowOutput : public QObject, public GLEOutputStream { Q_OBJECT public: ConsoleWindowOutput(); virtual ~ConsoleWindowOutput(); virtual void println(); virtual void println(const char* str); virtual void error(GLEErrorMessage* msg); signals: void print(const QString str); }; class ConsoleWindow : public QTextEdit { Q_OBJECT protected: ConsoleWindowOutput output; QSplitter* splitWindow; QAction* hideAction; int autoShowSize; public slots: //! Slot used to toggle the auto-show functionality of the console window void hideTriggered(); void print(QString msg); public: ConsoleWindow(QWidget* parent, QSplitter* splitter); virtual ~ConsoleWindow(); virtual void contextMenuEvent(QContextMenuEvent * e); void shouldAutoShow(); void println(const QString& str); inline GLEOutputStream* getOutput() { return &output; } inline void setHideAction(QAction* act) { hideAction = act; } inline QAction* getHideAction() { return hideAction; } inline int getAutoShowSize() { return autoShowSize; } inline void setAutoShowSize(int s) { autoShowSize = s; } }; #endif gle-graphics-4.2.4c/src/gui/colourpicker.h0000664000000000000000000000457511405446017017173 0ustar rootroot/*********************************************************************************** * QGLE - A Graphical Interface to GLE * * Copyright (C) 2006 A. S. Budden & J. Struyf * * * * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * * * Also add information on how to contact you by electronic and paper mail. * ***********************************************************************************/ #ifndef __COLOURPICKER_H #define __COLOURPICKER_H #include #include "colourbutton.h" class VariantDelegate; class ColourPicker : public QAbstractButton { Q_OBJECT public: ColourPicker(QWidget *parent, VariantDelegate* delegate); QColor getColour(); bool hasChanged(); void setColour(); public slots: void setColour(QColor col); void colourChosen(QColor col); void moreColours(); void doShowPopup(); protected: void paintEvent(QPaintEvent *event); void mouseDoubleClickEvent(QMouseEvent *event); public: void showPopup(); private: QColor colour; bool changed; bool hasColour; QDialog *chooserFrame; QList buttons; VariantDelegate* parentDelegate; QTimer* myTimer; }; #endif gle-graphics-4.2.4c/src/gui/colourbutton.cpp0000664000000000000000000000555511405446017017563 0ustar rootroot/*********************************************************************************** * QGLE - A Graphical Interface to GLE * * Copyright (C) 2006 A. S. Budden & J. Struyf * * * * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * * * Also add information on how to contact you by electronic and paper mail. * ***********************************************************************************/ #include "colourbutton.h" #include "qgle_statics.h" ColourButton::ColourButton(QColor col, QWidget *parent) : QAbstractButton(parent) { resize(10,10); connect(this, SIGNAL(clicked()), this, SLOT(onClick())); setColour(col); hasPixmap = false; } ColourButton::ColourButton(QPixmap px, QWidget *parent) : QAbstractButton(parent) { resize(10,10); connect(this, SIGNAL(clicked()), this, SLOT(onClick())); pixmap = px; hasPixmap = true; } QSize ColourButton::sizeHint() const { return QSize(10,10); } void ColourButton::paintEvent(QPaintEvent *) { QPainter painter(this); painter.fillRect(rect(), Qt::white); if (hasPixmap) { painter.drawPixmap(rect().center()-QPoint(5,5), pixmap); } else { QPixmap colourSwatch(10,10); if (colour.isValid()) { colourSwatch.fill(colour); painter.drawPixmap(rect().center()-QPoint(5,5), colourSwatch); } else { QPen pen; pen.setColor(Qt::black); pen.setWidth(1); QGLE::drawBox(&painter, rect().center(), 5.0, pen); QGLE::drawCross(&painter, rect().center(), 5.0, pen); } } } void ColourButton::setColour(QColor col) { colour = col; update(); } void ColourButton::onClick() { if (!hasPixmap) emit colourChosen(colour); } gle-graphics-4.2.4c/src/gui/propertymodel.h0000664000000000000000000000507311405446017017371 0ustar rootroot/*********************************************************************************** * QGLE - A Graphical Interface to GLE * * Copyright (C) 2006 A. S. Budden & J. Struyf * * * * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * * * Also add information on how to contact you by electronic and paper mail. * ***********************************************************************************/ #ifndef __PROPERTYMODEL_H #define __PROPERTYMODEL_H #include struct GLEDrawingObjectProperty { int index; QString description; QVariant value; QVariant validValues; }; class GLEPropertyModel : public QAbstractTableModel { Q_OBJECT public: GLEPropertyModel(const QList &props, QObject *parent = 0); int rowCount(const QModelIndex &parent = QModelIndex()) const; int columnCount(const QModelIndex &parent = QModelIndex()) const; QVariant data(const QModelIndex &index, int role) const; QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const; GLEDrawingObjectProperty getFullProperty(const QModelIndex &index); Qt::ItemFlags flags(const QModelIndex &index) const; bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole); private: QList propertyList; }; #endif gle-graphics-4.2.4c/src/gui/polararray.h0000664000000000000000000000620411405446017016635 0ustar rootroot/*********************************************************************************** * QGLE - A Graphical Interface to GLE * * Copyright (C) 2006 A. S. Budden & J. Struyf * * * * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * * * Also add information on how to contact you by electronic and paper mail. * ***********************************************************************************/ #ifndef _GLEPOLARARRAY_H #define _GLEPOLARARRAY_H #include "drawingobject.h" //! Class describing a line drawing object class GLEPolarArray : public GLEDrawingObject { Q_OBJECT public: enum Points { SpanAngle, NumberOfObjects }; //! Constructor used for initialising variables and connections GLEPolarArray(double resolution, QSize imageSize, GLEDrawingArea* area); //! Draw the line on the provided painter void draw(QPainter *p); //! Return the shortest distance between a given point and the line double distanceToPoint(const QPointF& p, QPointF *nearestPoint); //! Set one of the enumerated points void setPoint(int pointChoice, const QPointF& p, bool update = true); void addRelativeOSnaps(QPointF p); void setBaseObject(GLEDrawingObject *obj); void createOTracks(); //! Find points where a line intersects the line // If vertical = true, m contains 'x' QList intersections(double qtm, double qtc, bool vertical = false); QList intersections(QPointF qtp1, double angle); QList intersections(QPointF qtp1, QPointF qtp2); QList getTangents(QPointF p); bool hasTangents(); QList getPerpendiculars(QPointF p); bool hasPerpendiculars(); //! Is the point inside the object (for a line, always false) bool isInside(QPointF p); void scaleBy(double xratio, double yratio); void moveBy(QPointF offset); void rotateBy(double radians); void updateObjects(); private: QList baseObject; }; #endif gle-graphics-4.2.4c/src/gui/component.cpp0000664000000000000000000001206311405446017017016 0ustar rootroot/*********************************************************************************** * QGLE - A Graphical Interface to GLE * * Copyright (C) 2006 A. S. Budden & J. Struyf * * * * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * * * Also add information on how to contact you by electronic and paper mail. * ***********************************************************************************/ #include "component.h" // Constructor: store the resolution and image height; set up defaults GLEComponent::GLEComponent(double resolution, QSize imageSize, QObject *parent) : QObject(parent) { // Defaults: dpi = resolution; lineWidth = 0.02; pixmap = imageSize; // We don't actually use this at present, but it's kept // for possible future use paintPath = new QPainterPath(); // Default pen paintPen = QPen(Qt::black, QGLE::relGLEToQt(lineWidth, 0, dpi).x(), Qt::SolidLine, Qt::SquareCap, Qt::BevelJoin); } //! Virtual function to update the component after, e.g., points have changed void GLEComponent::updateAll() { } //! Virtual function to set a point void GLEComponent::setPoint(int pointChoice, const QPointF& p, bool) { pointHash[pointChoice] = QGLE::absQtToGLE(p, dpi, pixmap.height()); } // Determine whether a parameter has been set bool GLEComponent::isSet(int pointChoice) { return(pointHash.contains(pointChoice)); } // Get the value of a parameter (as a point in GLE coordinates) QPointF GLEComponent::getGLEPoint(int pointChoice, bool stored) { if (stored) return(storedPointHash.value(pointChoice, QPointF(0,0))); else return(pointHash.value(pointChoice, QPointF(0,0))); } void GLEComponent::setBasePoint(const QPointF& qtp) { basePoint = qtp; // Save the point hash storedPointHash = pointHash; // Only used in some objects (e.g. ellipse) storedEquationParameters = equationParameters; } // Convert GLE to Qt coordinates QPointF GLEComponent::getQtPoint(const QPointF& glePoint) { return(QGLE::absGLEToQt(glePoint, dpi, pixmap.height())); } // Get the value of a parameter (as a point in QT coordinates) QPointF GLEComponent::getQtPoint(int pointChoice, bool stored) { QPointF gle = getGLEPoint(pointChoice, stored); return(QGLE::absGLEToQt(gle, dpi, pixmap.height())); } // Get the value of a parameter (as a double in GLE coordinates) double GLEComponent::getGLELength(int pointChoice, bool stored) { if (stored) return(storedPointHash.value(pointChoice, QPointF(0,0)).x()); else return(pointHash.value(pointChoice, QPointF(0,0)).x()); } // Get the value of a parameter (as a double in QT coordinates) double GLEComponent::getQtLength(int pointChoice, bool stored) { double gleX = getGLELength(pointChoice, stored); return(QGLE::relGLEToQt(gleX, dpi)); } // Get the value of a parameter (as a double in GLE coordinates) double GLEComponent::getGLEAngle(int pointChoice, bool stored) { if (stored) return(storedPointHash.value(pointChoice, QPointF(0,0)).x()); else return(pointHash.value(pointChoice, QPointF(0,0)).x()); } // Get the value of a parameter (as a double in QT coordinates) double GLEComponent::getQtAngle(int pointChoice, bool stored) { // Qt Angles go the other way round to GLE ones as // the Y axis is inverted double gleX = -getGLELength(pointChoice, stored); return(gleX); } // This returns a QPainterPath object that can be used to draw // the requested object (although we should just use draw()) QPainterPath GLEComponent::path() { return(*paintPath); } // A slot that is called whenever the resolution changes void GLEComponent::setDPI(double newDPI) { if (dpi != newDPI) { dpi = newDPI; paintPen.setWidthF(QGLE::relGLEToQt(lineWidth, 0, dpi).x()); } } // A slot that is called whenever the image size changes void GLEComponent::setPixmapSize(QSize newPixmapSize, double newDPI) { setDPI(newDPI); pixmap = newPixmapSize; emit imageChanged(); } gle-graphics-4.2.4c/src/gui/settings.h0000664000000000000000000002505611676157777016355 0ustar rootroot/*********************************************************************************** * QGLE - A Graphical Interface to GLE * * Copyright (C) 2006 A. S. Budden & J. Struyf * * * * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * * * Also add information on how to contact you by electronic and paper mail. * ***********************************************************************************/ #ifndef _GLESETTINGS_H #define _GLESETTINGS_H #include #include "qgle_definitions.h" class QSettings; //! Class definition for settings object class GLESettings : public QObject { Q_OBJECT public: enum Modes { PreviewMode, EditMode }; //! Constructor GLESettings(QObject *parent); //! Read all the settings from the OS void readAll(); //! Write all the settings to the OS void writeAll(); // Application configuration //! Should we store the application size on exit? inline const bool& storeSize() { return storeAppSize; } inline void setStoreSize(const bool& new_storeSize) { storeAppSize = new_storeSize; } //! Should we store the last used directory on exit? inline const bool& storeDirectory() { return storeDirectoryOnExit; } inline void setStoreDirectory(const bool& new_storeDir) { storeDirectoryOnExit = new_storeDir; } //! Should we autosave when switching to preview mode? inline const bool& saveOnPreview() { return autoSaveOnPreview; } inline void setSaveOnPreview(const bool& new_save) { autoSaveOnPreview = new_save; } //! Should we monitor the open file for changes? inline const bool& monitorOpenFile() { return monitorFile; } inline void setMonitorOpenFile(const bool& new_monitorFile) { monitorFile = new_monitorFile; emit monitorFileChanged(monitorFile); } //! Should we auto reload if file changed? inline const bool& monitorAutoReloadFile() { return monitorAutoReload; } inline void setMonitorAutoReloadFile(const bool& new_monitorAutoReload) { monitorAutoReload = new_monitorAutoReload; } //! Should we autoscale when opening new diagrams inline const bool& autoScaleOnOpen() { return autoScaleWhenOpening; } inline void setAutoScaleOnOpen(const bool& new_scale) { autoScaleWhenOpening = new_scale; } //! Should we store the last used directory on exit? inline const QString& pwd() { return currentWorkingDirectory; } inline void setPwd(const QString& new_wd) { currentWorkingDirectory = new_wd; } //! Where is ghostscript's library? inline const QString& getLibGSLocation() { return libGSLocation; } inline void setLibGSLocation(const QString& str) { libGSLocation = str; } //! Where is my favorite editor inline const QString& editorLocation() { return editorExecutable; } inline void setEditorLocation(const QString& str) { editorExecutable = str; } //! What was the window position last time it was saved? inline const QPoint& position() { return windowPosition; } inline void setPosition(const QPoint& pos) { windowPosition = pos; } //! What was the window's size last time it was saved? inline const QSize& size() { return windowSize; } inline void setSize(const QSize& new_size) { windowSize = new_size; } //! What was the window's size last time it was saved? inline const QSize& drawingAreaSize() { return m_DrawingAreaSize; } inline void setDrawingAreaSize(const QSize& new_size) { m_DrawingAreaSize = new_size; } //! What is the DEFAULT (not LAST) image resolution? inline const int& dpi() { return defaultResolution; } inline void setDPI(const int& new_dpi) { defaultResolution = new_dpi; } // Server Configuration //! What port number should we listen on? inline const int& port() { return serverPort; } inline void setPort(const int& new_port) { serverPort = new_port; emit portChanged(serverPort); } //! Should we start the server when the application starts? inline const bool& autoStartServer() { return serverAutoStart; } inline void setAutoStartServer(const bool& new_autoStart) { serverAutoStart = new_autoStart; } // Drawing Configuration //! Grid Spacings inline const QPointF& grid() { return gridSpacing; } inline void setGrid(const QPointF& newGrid) { gridSpacing = newGrid ; emit gridChanged(gridSpacing); } inline const double& polarSnapStartAngle() { return polarSnapStartingAngle; } inline void setPolarSnapStartAngle(double newAngle) { polarSnapStartingAngle = newAngle ; emit polarSnapStartAngleChanged(polarSnapStartingAngle); } inline const double& polarSnapIncAngle() { return polarSnapIncrementAngle; } inline void setPolarSnapIncAngle(double newAngle) { polarSnapIncrementAngle = newAngle ; emit polarSnapIncAngleChanged(polarSnapIncrementAngle); } //! Should we start in OSNAP mode? inline const bool& osnapOnStart() { return startOSNAP; } inline void setOsnapOnStart(const bool& new_startosnap) { startOSNAP = new_startosnap; } //! Should we start in orthosnap mode? inline const bool& orthoSnapOnStart() { return startORTHOSNAP; } inline void setOrthoSnapOnStart(const bool& new_startorthosnap) { startORTHOSNAP = new_startorthosnap; } //! Should we start in grid snap mode? inline const bool& gridSnapOnStart() { return startGRIDSNAP; } inline void setGridSnapOnStart(const bool& new_startgridsnap) { startGRIDSNAP = new_startgridsnap; } //! Should we start in polar snap mode? inline const bool& polarSnapOnStart() { return startPOLARSNAP; } inline void setPolarSnapOnStart(const bool& new_startpolar) { startPOLARSNAP = new_startpolar; } //! Should we start in polar track mode? inline const bool& polarTrackOnStart() { return startPOLARTRACK; } inline void setPolarTrackOnStart(const bool& new_startpolartrack) { startPOLARTRACK = new_startpolartrack; } //! Should the grid spacing be equal inline const bool& equalGrid() { return equalGridSpacing; } inline void setEqualGrid(const bool& newEqualGrid) { equalGridSpacing = newEqualGrid; } //! Should the user be asked whether to keep objects on reload inline const bool& askAboutObjects() { return askWhetherToKeepObjects; } inline void setAskAboutObjects(const bool& newAsk) { askWhetherToKeepObjects = newAsk; } inline const QByteArray& splitterPosition() { return currentSplitterPos; } inline void setSplitterPosition(const QByteArray& pos) { currentSplitterPos = pos; } inline void setConsoleWindowAutoShowSize(int height) { consoleWindowAutoShowSize = height; } inline int getConsoleWindowAutoShowSize() { return consoleWindowAutoShowSize; } inline const QByteArray& mainWindowState() { return currentMainWindowState; } inline void setMainWindowState(const QByteArray& state) { currentMainWindowState = state; } //! Should emulate a particular GLE version inline int getEmulateGLEVersion() { return emulateGLEVersion; } inline void setEmulateGLEVersion(int emul) { emulateGLEVersion = emul; } //! Should export to a particular format inline int getExportFormat() { return exportFormat; } inline void setExportFormat(int expf) { exportFormat = expf; } //! Should export to a particular page size inline int getExportPageSize() { return exportPageSize; } inline void setExportPageSize(int exps) { exportPageSize = exps; } //! Should preview in a particular page size inline int getPreviewPageSize() { return previewPageSize; } inline void setPreviewPageSize(int prevs) { previewPageSize = prevs; } //! Should open exported figure in previewer inline bool isOpenExportedFigure() { return openExportedFigure; } inline void setOpenExportedFigure(bool value) { openExportedFigure = value; } inline bool isExportGrayScale() { return exportGrayScale; } inline void setExportGrayScale(bool value) { exportGrayScale = value; } inline bool isExportTransparent() { return exportTransparent; } inline void setExportTransparent(bool value) { exportTransparent = value; } inline int getExportBitmapResolution() { return exportBitmapResolution; } inline void setExportBitmapResolution(int value) { exportBitmapResolution = value; } inline int getExportVectorResolution() { return exportVectorResolution; } inline void setExportVectorResolution(int value) { exportVectorResolution = value; } //! Should render using Cairo backend inline bool isRenderUsingCairo() { return renderUsingCairo; } inline void setRenderUsingCairo(bool value) { renderUsingCairo = value; } signals: void gridChanged(QPointF grid); void portChanged(int newPort); void monitorFileChanged(bool mf); void polarSnapStartAngleChanged(double newAngle); void polarSnapIncAngleChanged(double newAngle); private: QSettings *settingStore; QString libGSLocation; QString gleExecutable; QString editorExecutable; int imageDPI; QPoint windowPosition; QSize windowSize; QSize m_DrawingAreaSize; bool storeAppSize; int serverPort; bool serverAutoStart; QPointF gridSpacing; int defaultResolution; bool equalGridSpacing; bool autoSaveOnPreview; bool autoScaleWhenOpening; bool monitorFile; bool monitorAutoReload; bool askWhetherToKeepObjects; int exportFormat; int exportPageSize; int previewPageSize; bool openExportedFigure; bool exportGrayScale; bool exportTransparent; int exportBitmapResolution; int exportVectorResolution; bool renderUsingCairo; bool startOSNAP; bool startORTHOSNAP; bool startPOLARSNAP; bool startPOLARTRACK; bool startGRIDSNAP; double polarSnapStartingAngle; double polarSnapIncrementAngle; bool storeDirectoryOnExit; int consoleWindowAutoShowSize; int emulateGLEVersion; QString currentWorkingDirectory; QByteArray currentSplitterPos; QByteArray currentMainWindowState; }; #endif gle-graphics-4.2.4c/src/gui/snapline.cpp0000664000000000000000000003133211677267140016636 0ustar rootroot/*********************************************************************************** * QGLE - A Graphical Interface to GLE * * Copyright (C) 2006 A. S. Budden & J. Struyf * * * * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * * * Also add information on how to contact you by electronic and paper mail. * ***********************************************************************************/ #include #include "snapline.h" // The constructor for snap the line object SnapLine::SnapLine(double resolution, QSize imageSize, QObject *parent) : GLEComponent(resolution, imageSize, parent) { // Make sure the line is updated if a point changes or // the image size changes connect(this, SIGNAL(pointChanged()), this, SLOT(updateLine())); connect(this, SIGNAL(imageChanged()), this, SLOT(updateLine())); active = false; } // Update the snap line void SnapLine::updateLine() { key = QString("%1 %2 %3 %4 %5") .arg(getGLEPoint(StartPoint).x()) .arg(getGLEPoint(StartPoint).y()) .arg(getGLEPoint(EndPoint).x()) .arg(getGLEPoint(EndPoint).y()) .arg(getGLEAngle(Angle)); if (isSet(StartPoint) && isSet(EndPoint) && isSet(Angle)) { ready = true; active = true; } else { ready = false; active = false; } } QString SnapLine::getKey() { return(key); } bool SnapLine::isEqual(SnapLine sn) { if (key == sn.getKey()) return(true); else return(false); } bool SnapLine::isEqual(SnapLine *sn) { if (key == sn->getKey()) return(true); else return(false); } void SnapLine::draw(QPainter *p) { if (!isActive()) return; p->setPen(QGLE::osnapLinePen()); p->drawLine(getQtPoint(StartPoint), getQtPoint(EndPoint)); } double SnapLine::distanceToPoint(const QPointF& p, QPointF *nearestPoint) { // All calculations in QT coordinates // Distances between start, end and the point double se, sp, ep; QPointF s, e; // Angle between se and sp double pse; // Angle between se and ep double pes; /**************************************************************************** * This calculation is based on the triangle: * * p * * /\ * * / \ * * s<____>e * * * * where s and e are the end points of the line and p is the point that has * * been clicked. If the angle pse (calculated using the cosine rule: a^2 = * * b^2 + c^2 -2.b.c.cosA) is greater than 90º, the distance to the point is * * the same as the line length s-p. Likewise for the angle pes and the * * line length e-p. If both angles are less than 90º, the distance can be * * calculated simply. The shortest distance will be the length of the line * * from p to the line se that meets the line at 90º, thus: * * p * * /| * * / | * * s<__|__e * * The distance is therefore sp*sin(pse). * ****************************************************************************/ s = getQtPoint(StartPoint); e = getQtPoint(EndPoint); se = QGLE::distance(s,e); sp = QGLE::distance(s,p); ep = QGLE::distance(e,p); //qDebug() << "Distances: " << se << " " << sp << " " << ep; if ((sp == 0.0) || (ep == 0.0)) return(0.0); if (se == 0.0) return(sp); double ac; // Calculated the bit inside the 'acos' ac = (se*se + sp*sp - ep*ep)/(2*se*sp); // Make sure it isn't greater than 1 if (ac > 1.0) ac = 1.0; else if (ac < -1.0) ac = -1.0; pse = acos(ac); // Calculated the bit inside the 'acos' ac = (se*se + ep*ep - sp*sp)/(2*se*ep); // Make sure it isn't greater than 1 if (ac > 1.0) ac = 1.0; else if (ac < -1.0) ac = -1.0; pes = acos(ac); //qDebug() << "Angles: " << pse << " " << pes; if ( pse >= M_PI/2.0 ) { if (nearestPoint) *nearestPoint = s; return(sp); } else if ( pes >= M_PI/2.0 ) { if (nearestPoint) *nearestPoint = e; return(ep); } else { if (nearestPoint) *nearestPoint = (sp*cos(pse)/se)*(e-s) + s; return(sp*sin(pse)); } } // Set a point (start or end in the case of a line) void SnapLine::setPoint(int pointChoice, const QPointF& p, bool) { QPointF pt; double angle = p.x(); switch(pointChoice) { case Angle: if (!isSet(StartPoint)) return; pointHash[Angle] = p; // Now we need to know the point at which the line meets // the page border switch(QGLE::quadrant(angle)) { case 1: // Either top or right border if (hitsTopBorder(&pt)) pointHash[EndPoint] = pt; else if (hitsRightBorder(&pt)) pointHash[EndPoint] = pt; break; case 2: // Either hits top or left border if (hitsTopBorder(&pt)) pointHash[EndPoint] = pt; else if (hitsLeftBorder(&pt)) pointHash[EndPoint] = pt; break; case 3: // Either hits left or bottom border if (hitsBottomBorder(&pt)) pointHash[EndPoint] = pt; else if (hitsLeftBorder(&pt)) pointHash[EndPoint] = pt; break; case 4: // Either hits right or bottom border if (hitsBottomBorder(&pt)) pointHash[EndPoint] = pt; else if (hitsRightBorder(&pt)) pointHash[EndPoint] = pt; break; } break; case EndPoint: case StartPoint: if (isSet(StartPoint) && isSet(EndPoint)) { QPointF ang; ang.setX(QGLE::angleBetweenTwoPoints(getGLEPoint(StartPoint), getGLEPoint(EndPoint))); pointHash[Angle] = ang; } pointHash[pointChoice] = QGLE::absQtToGLE(p, dpi, pixmap.height()); break; } updateLine(); } bool SnapLine::hitsRightBorder(QPointF *pt) { QPointF p; QPointF sp = getQtPoint(StartPoint); // CHECK THIS!!!! double angle = getGLEAngle(Angle); // If the line is vertical, it'll never hit the right border if (fmod(QGLE::radiansToDegrees(angle)-90.0,180.0) == 0.0) return(false); // If in quadrant 2 or 3, it'll never hit the right border int q = QGLE::quadrant(angle); if (q == 2) return(false); if (q == 3) return(false); p.setX(pixmap.width()); p.setY(sp.y()-(pixmap.width()-sp.x())*tan(angle)); if (QGLE::inOrder(0.0,p.y(),pixmap.height())) { *pt = QGLE::absQtToGLE(p,dpi,pixmap.height()); return(true); } return(false); } bool SnapLine::hitsLeftBorder(QPointF *pt) { QPointF p; QPointF sp = getQtPoint(StartPoint); double angle = getGLEAngle(Angle); // If the line is vertical, it'll never hit the left border if (fmod(QGLE::radiansToDegrees(angle)-90.0,180.0) == 0.0) return(false); int q = QGLE::quadrant(angle); if (q == 1) return(false); if (q == 4) return(false); // Since we're looking at the left hand side, lets have // the angle down to the -x axis angle = M_PI - angle; p.setX(0.0); p.setY(sp.y() - sp.x()*tan(angle)); if (QGLE::inOrder(0.0,p.y(),pixmap.height())) { *pt = QGLE::absQtToGLE(p,dpi,pixmap.height()); return(true); } return(false); } bool SnapLine::hitsTopBorder(QPointF *pt) { QPointF p; QPointF sp = getQtPoint(StartPoint); double angle = getGLEAngle(Angle); p.setY(0.0); // This is the top border in Qt coordinates // If the line is horizontal, it'll never hit the top border if (fmod(QGLE::radiansToDegrees(angle),180.0) == 0.0) { return(false); } // If vertical, it's easy if (QGLE::radiansToDegrees(angle) == 90.0) { p.setX(sp.x()); *pt = QGLE::absQtToGLE(p,dpi,pixmap.height()); return(true); } // If in quadrant 3 or 4, it'll never hit the top border int q = QGLE::quadrant(angle); if (q >= 3) return(false); // If in quadrant 2, we want the angle to the -x axis if (q == 2) angle = M_PI - angle; if (q == 1) p.setX(sp.x() + sp.y()*tan((M_PI/2.0)-angle)); if (q == 2) p.setX(sp.x() - sp.y()*tan((M_PI/2.0)-angle)); if (QGLE::inOrder(0.0,p.x(),pixmap.width())) { *pt = QGLE::absQtToGLE(p,dpi,pixmap.height()); return(true); } return(false); } bool SnapLine::hitsBottomBorder(QPointF *pt) { QPointF p; QPointF sp = getQtPoint(StartPoint); double angle = getGLEAngle(Angle); p.setY(pixmap.height()); // This is the bottom border in Qt coordinates // If the line is horizontal, it'll never hit the bottom border if (fmod(QGLE::radiansToDegrees(angle),180.0) == 0.0) return(false); // If vertical, it's easy if (QGLE::radiansToDegrees(angle) == 270.0) { p.setX(sp.x()); *pt = QGLE::absQtToGLE(p,dpi,pixmap.height()); return(true); } // If in quadrant 1 or 2, it'll never hit the top border int q = QGLE::quadrant(angle); if (q <= 2) return(false); // If in quadrant 3, we want the angle to the -x axis if (q == 3) angle = angle - M_PI; // If in quadrant 4, we want the angle to the +x axis if (q == 4) angle = 2*M_PI - angle; if (q == 4) p.setX(sp.x() + (pixmap.height()-sp.y())*tan((M_PI/2)-angle)); if (q == 3) p.setX(sp.x() - (pixmap.height()-sp.y())*tan((M_PI/2)-angle)); if (QGLE::inOrder(0.0,p.x(),pixmap.width())) { *pt = QGLE::absQtToGLE(p,dpi,pixmap.height()); return(true); } return(false); } QList SnapLine::intersections(double qtm, double qtc, bool vertical) { QList pointArray; QPointF sp, ep; QPointF intersect; sp = getQtPoint(StartPoint); ep = getQtPoint(EndPoint); double mym, myc; if (vertical) { // If both lines are vertical, no intersection (or an infinite number) if ((!(sp.x() == ep.x())) && (QGLE::inOrder(sp.x(), qtm, ep.x()))) { // Lines intersect intersect = QPointF(qtm, ((qtm-sp.x())/(ep.x()-sp.x()))*(ep.y()-sp.y())+sp.y()); pointArray.append(intersect); } } else { // Not vertical if (sp.x() == ep.x()) { // But this line is! intersect.setX(sp.x()); intersect.setY(qtm*sp.x()+qtc); if (QGLE::inOrder(sp.y(),intersect.y(),ep.y())) pointArray.append(intersect); } else { // Neither line is vertical mym = (ep.y()-sp.y())/(ep.x()-sp.x()); myc = ep.y() - mym*ep.x(); intersect.setX((myc-qtc)/(qtm-mym)); intersect.setY(mym*intersect.x()+myc); if ((QGLE::inOrder(sp.y(),intersect.y(),ep.y())) && (QGLE::inOrder(sp.x(), intersect.x(), ep.x()))) pointArray.append(intersect); } } return(pointArray); } QList SnapLine::intersections(QPointF qtp1, QPointF qtp2) { double m, c; if (qtp2.x() == qtp1.x()) return(intersections(qtp2.x(), 0, true)); m = (qtp2.y() - qtp1.y())/(qtp2.x()-qtp1.x()); c = qtp2.y() - m*qtp2.x(); return(intersections(m,c,false)); } QList SnapLine::intersections(QPointF qtp1, double angle) { // This intersection code must determine the intersections in // a particular direction from a start point // First get a list based on an infinite line: QPointF qtp2 = qtp1 + QPointF(1.0*cos(angle),1.0*sin(angle)); QList allIntersections = intersections(qtp1,qtp2); // Now go through the list and determine which are in the right // direction QList correctIntersections; QPointF pt; double ptAngle; foreach(pt, allIntersections) { ptAngle = QGLE::angleBetweenTwoPoints(qtp1, pt); if (QGLE::quadrant(ptAngle) == QGLE::quadrant(angle)) correctIntersections.append(pt); } return(correctIntersections); } void SnapLine::deactivate() { active = false; } void SnapLine::activate() { active = true; } bool SnapLine::isActive() { return(active); } gle-graphics-4.2.4c/src/gui/readme.txt0000664000000000000000000001042711405446017016310 0ustar rootroot# # QGLE - A Graphical Interface to GLE # Copyright (C) 2006 A. S. Budden & J. Struyf # # 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # Also add information on how to contact you by electronic and paper mail. # Introduction ------------ The current GUI contains a preview window that can receive messages from GLE and display the resulting EPS file. In addition, it can open GLE and EPS files directly (using Ghostscript and GLE). It now has the capability to add and edit simple objects, such as, lines, circles and arcs (snapping to a grid if required). It can also change various properties of the objects, such as, line width, and color. The perpendicular line and tangential line commands can be used to produce a line starting perpendicular or tangential to an existing object. OSnap can be used for the end point of a line. When drawing objects, hit the escape key to cancel. The pointer tool can be used to select objects and they can then be deleted using the 'del' key or moved/scaled. Other keyboard shortcuts include: F1 : Show this message F3 : Toggle Object Snap F6 : Toggle coordinate display (Cartesian, Polar, Relative Cartesian, Relative Polar, Off) F7 : Toggle grid visibility F8 : Toggle Orthographic snap F9 : Toggle grid snap F10: Toggle polar snap '-': Zoom in '=': Zoom out Shift: Hold this down to select multiple objects for deletion At present, there is very little error checking, so crashes are possible. Also, if compiled in debug mode, there's a fair amount of debugging output sent to the console, but I'm gradually cutting this down as it gets more stable. Once compiled, run "qgle" to start. This will bring up the main window with a status bar message saying "Server Listening". Once "gle -p" has been run, the eps should appear in the window and the full file name in the status bar. BUGS: * Temporary files (used for rendering GLE code) are never deleted; * Icons on the toolbar are horrible; * Very little error checking in the code, therefore very likely to crash or just do something very strange; * I'm sure there are a lot more bugs, but I haven't found them all yet and haven't written down those that I have found: answers on a postcard to the usual address. TODO: * Fix all the bugs! * Line trimming and extension; * Allow drawing of boxes etc; * Change circles and arcs to be specific cases of ellipses and elliptical arcs; * Add object ordering; * Extend polar snap to work from other snap points; * Add "object tracking"; * Add exporters: PDF etc; * Add printing; * Make lines into polylines and allow object conversion; * Add custom objects built from subroutines; * Allow addition of arbitrary gle code at a given position? Compiling the GUI ----------------- The program is designed for QT4 (which is fairly different to QT3), so make sure you have the right version operable (they can coexist). Then configure and build GLE as follows: ./configure --with-qt=/path/to/your/qt4/directory make make install qgle Note that more information on comiling GLE can be found here: On Arch Linux, the QT4 package lives in /opt/qt4 whereas QT3 lives in /opt/qt. There is a script called qt-config (not to be confused with qtconfig), which switches the development environment between the two. To compile in debug mode in Windows (selectable using the config option in qgle.pro), you MUST have compiled the debug libraries (using the option on the "Start" menu). If you haven't done this, you'll probably get some random unexplained crashes. Al # vim:tw=72:fo+=w2:et gle-graphics-4.2.4c/src/gui/gpl.txt0000664000000000000000000004310611405446017015635 0ustar rootroot GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 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 Lesser 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 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 Lesser General Public License instead of this License. gle-graphics-4.2.4c/src/gui/qgle.qrc0000664000000000000000000000534311436540702015752 0ustar rootroot images/amove.png images/arc_3p.png images/circle.png images/edit_mode.png images/editor.png images/ellipse.png images/ellipsis.png images/gle.png images/gle_shadow.png images/grid.png images/grid_snap.png images/line.png images/new.png images/open.png images/orthosnap.png images/osnap.png images/perp_line.png images/pointer.png images/polarsnap.png images/polartrack.png images/preview_mode.png images/save.png images/tan_line.png images/text.png images/varyingcolours.png images/zoom_in.png images/zoom_out.png images/reload.png images/reload_red.png readme.txt about.html gle-graphics-4.2.4c/src/gui/qgs.cpp0000664000000000000000000003765711647253054015633 0ustar rootroot/*************************************************************************** * Copyright (C) 2005 by Piotr Szymanski * * * * 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., 51 Franklin St, Fifth Floor, Boston, * * MA 02110-1301 USA * ***************************************************************************/ #include "qgs.h" #include #define MINIMUM(a, b) ((a) < (b) ? (a) : (b)) GSInterpreterLib* g_GSInterpreterLib = NULL; namespace GSApiWrapper { int GSDLLCALL handleStdin(void *, char *, int) { return 0; } int GSDLLCALL handleStdout(void *, const char *str, int len) { if (g_GSInterpreterLib != NULL) { return g_GSInterpreterLib->gs_output(str,len); } return 0; } int GSDLLCALL handleStderr(void *, const char *str, int len) { if (g_GSInterpreterLib != NULL) { return g_GSInterpreterLib->gs_error(str,len); } return 0; } int open(void*, void*) { return 0; } int preclose(void *, void *) { return 0; } int close(void *, void *) { return 0; } int presize(void *, void * device, int width, int height, int raster, unsigned int format) { if (g_GSInterpreterLib != NULL) { return g_GSInterpreterLib->presize(device, width, height, raster, format); } return 0; } int size(void *, void *device, int width, int height, int raster, unsigned int format, unsigned char *pimage) { if (g_GSInterpreterLib != NULL) { return g_GSInterpreterLib->size(device, width, height, raster, format, pimage); } return 0; } int sync(void*, void*) { return 0; } int page(void *, void * device, int copies, int flush) { if (g_GSInterpreterLib != NULL) { return g_GSInterpreterLib->page(device, copies, flush); } return 0; } int update(void*, void *, int, int, int, int) { return 0; } int separation(void*, void*, int, const char*, unsigned short, unsigned short, unsigned short, unsigned short) { return 0; } #ifdef QGS_USE_MAJOR_V2 // Newer versions of GhostScript support "separation", but we don't need this typedef display_callback display_callback_qgs; display_callback_qgs device = { sizeof ( display_callback_qgs ), DISPLAY_VERSION_MAJOR, DISPLAY_VERSION_MINOR, &open, &preclose, &close, &presize, &size, &sync, &page, &update, NULL, NULL, &separation }; #else // For now use older version of structure, which is compatible with GhostScript 8.15 // This version is shipped with Fedora Core 5 typedef struct display_callback_v1_s display_callback_qgs; display_callback_qgs device = { sizeof ( display_callback_qgs ), DISPLAY_VERSION_MAJOR_V1, DISPLAY_VERSION_MINOR_V1, &open, &preclose, &close, &presize, &size, &sync, &page, &update, NULL, NULL }; #endif } /********* GSInterpreterLib ************/ GSInterpreterLib::GSInterpreterLib() : m_running(false), m_cnvmode(QGS_DISPLAY_32), m_alpha(false), m_conv(NULL), m_orientation(0), m_magnify(1.0), m_width(0), m_height(0), m_dpi(100.0), m_media(QString::null), m_Gwidth(0), m_Gheight(0), m_imageChar(0), m_format(0), m_raster(0), m_textaa(1), m_graphaa(1), m_pfonts(true), m_display(true), m_wasSize(false), m_wasPage(false), m_argsCCount(0), m_argsChar(0) { m_gs = GSLibFunctions::getInstance(); if (!m_gs->isLoaded()) return; int exit = m_gs->gsapi_new_instance(&ghostScriptInstance, this); if (exit && !handleExit(exit)) return; if (m_gs->getVersionMajor() < 8) { /* 32 bit does not work with GhostView 7.04 */ m_cnvmode = QGS_DISPLAY_24; } g_GSInterpreterLib = this; } GSInterpreterLib::~GSInterpreterLib() { if (running()) m_gs->gsapi_exit(ghostScriptInstance); if (m_argsChar) { for (int i=0;iisLoaded()) m_gs->gsapi_delete_instance(ghostScriptInstance); if (m_conv != NULL) delete[] m_conv; } // interpreter state functions bool GSInterpreterLib::start(bool setStdio) { if ( setStdio ) { m_gs->gsapi_set_stdio(ghostScriptInstance, &(GSApiWrapper::handleStdin), &(GSApiWrapper::handleStdout), &(GSApiWrapper::handleStderr)); } int call = m_gs->gsapi_set_display_callback(ghostScriptInstance, (display_callback*)(&(GSApiWrapper::device))); if (call && !handleExit(call)) return false; argsToChar(); call = m_gs->gsapi_init_with_args(ghostScriptInstance, m_argsCCount, m_argsChar); if (call && !handleExit(call)) return false; QString set; set.sprintf("<< /Orientation %d >> setpagedevice .locksafe",m_orientation); QByteArray strdata = set.toLatin1(); m_gs->gsapi_run_string_with_length(ghostScriptInstance, strdata.constData(), set.length(), 0, &call); m_running = handleExit (call); return m_running; } bool GSInterpreterLib::stop() { if (m_running) { int exit = m_gs->gsapi_exit(ghostScriptInstance); if (exit) handleExit(exit); m_running = false; } return m_running; } // set options void GSInterpreterLib::setGhostscriptArguments(const QStringList &list) { if ( m_args != list ) { m_args=list; stop(); } } void GSInterpreterLib::setOrientation( int orientation ) { if( m_orientation != orientation ) { m_orientation = orientation; stop(); } } void GSInterpreterLib::setMagnify( double magnify ) { if( m_magnify != magnify ) { m_magnify = magnify; stop(); } } void GSInterpreterLib::setMedia( const QString &media ) { if( m_media != media ) { m_media = media; stop(); } } void GSInterpreterLib::setSize( int w, int h ) { if ( m_width != w ) { m_width=w; stop(); } if ( m_height != h ) { m_height=h; stop(); } } void GSInterpreterLib::setDPI( double dpi ) { if ( m_dpi != dpi ) { m_dpi=dpi; stop(); } } void GSInterpreterLib::setDisplay( bool display ) { if( m_display != display ) { m_display = display; stop(); } } void GSInterpreterLib::setAlpha( bool alpha ) { m_alpha = alpha; } void GSInterpreterLib::setPlatformFonts( bool pfonts ) { if( m_pfonts != pfonts ) { m_pfonts = pfonts; stop(); } } void GSInterpreterLib::setAABits(int text, int graphics ) { if( m_textaa != text ) { m_textaa = text; stop(); } if( m_graphaa != graphics ) { m_graphaa = graphics; stop(); } } void GSInterpreterLib::setBuffered( bool buffered ) { if( m_buffered != buffered ) m_buffered = buffered; } void GSInterpreterLib::setOrigin(double ox, double oy) { m_OriginX = ox; m_OriginY = oy; } QString GSInterpreterLib::getOutpuStreamText() { return m_Output; } bool GSInterpreterLib::sendOriginTranslate() { if (m_OriginX != 0.0 || m_OriginY != 0.0) { // Add a translate if bounding box not at origin zero (to support LaTeX processed output) int exit_code; QString str = QString("%1 %2 translate\n").arg(-m_OriginX).arg(-m_OriginY); QByteArray strdata = str.toLatin1(); m_gs->gsapi_run_string_continue(ghostScriptInstance, strdata.constData(), str.length(), 0, &exit_code); if (exit_code && !handleExit(exit_code)) return false; } return true; } bool GSInterpreterLib::run(QFile& file) { int exit_code; char buf[4096]; if (!m_gs->isLoaded()) return false; if (!running()) start(); m_wasPage = false; m_gs->gsapi_run_string_begin(ghostScriptInstance, 0, &exit_code); if (exit_code && !handleExit(exit_code)) return false; if (!sendOriginTranslate()) return false; while (true) { qint64 nbRead = file.read(buf, sizeof(buf)-1); if (nbRead <= 0) { // Make sure to exit if nothing more in file break; } buf[nbRead] = 0; m_gs->gsapi_run_string_continue(ghostScriptInstance, buf, nbRead, 0, &exit_code); if (exit_code && !handleExit(exit_code)) return false; } m_gs->gsapi_run_string_end(ghostScriptInstance, 0, &exit_code); if (exit_code && !handleExit(exit_code)) return false; return true; } bool GSInterpreterLib::run(const string* data) { int exit_code; if (!m_gs->isLoaded()) return false; if (!running()) start(); m_wasPage = false; m_gs->gsapi_run_string_begin(ghostScriptInstance, 0, &exit_code); if (exit_code && !handleExit(exit_code)) return false; if (!sendOriginTranslate()) return false; unsigned int toRead = data->size(); unsigned int offset = 0; while (toRead > 0) { unsigned int maxSize = 64000; unsigned int readNow = std::min(toRead, maxSize); m_gs->gsapi_run_string_continue(ghostScriptInstance, data->data() + offset, readNow, 0, &exit_code); if (exit_code && !handleExit(exit_code)) return false; offset += readNow; toRead -= readNow; } m_gs->gsapi_run_string_end(ghostScriptInstance, 0, &exit_code); if (exit_code && !handleExit(exit_code)) return false; return true; } bool GSInterpreterLib::startRender() { int exit_code = 0; if (!m_gs->isLoaded()) return false; if (!running()) start(); m_wasPage = false; m_gs->gsapi_run_string_begin(ghostScriptInstance, 0, &exit_code); if (exit_code && !handleExit(exit_code)) return false; else return true; } bool GSInterpreterLib::nextRender(const char* str) { int exit_code = 0; m_gs->gsapi_run_string_continue(ghostScriptInstance, str, strlen(str), 0, &exit_code); if (exit_code && !handleExit(exit_code)) return false; else return true; } bool GSInterpreterLib::endRender() { int exit_code = 0; m_gs->gsapi_run_string_end(ghostScriptInstance, 0, &exit_code); if (exit_code && !handleExit(exit_code)) return false; else return true; } int GSInterpreterLib::gs_output(const char* buffer, int len) { m_Output.append(QString::fromLocal8Bit(buffer, len)); return len; } int GSInterpreterLib::gs_error(const char* buffer, int len) { m_Output.append(QString::fromLocal8Bit(buffer, len)); return len; } int GSInterpreterLib::presize(void * /* device*/, int width, int height, int raster, unsigned int format) { m_Gwidth=width; m_Gheight=height; m_raster=raster; m_format=format; return 0; } int GSInterpreterLib::size(void * /* device*/, int /* wd */, int /* hi*/, int /*raster*/, unsigned int /*format*/, unsigned char *pimage) { m_wasSize = true; m_imageChar = pimage; return 0; } int GSInterpreterLib::page(void * /* device*/, int /* copies*/, int /* flush*/) { m_wasPage=true; // assume the image given by the gs is of the requested widthxheight if (m_cnvmode == QGS_DISPLAY_24) { int dest = 0; if (m_conv != NULL) delete[] m_conv; m_conv = new unsigned char[m_Gwidth*m_Gheight*4]; for (int j = 0; j < m_Gheight; j++) { int src = j * m_raster; if (m_alpha) { for (int i = 0; i < m_Gwidth; i++) { unsigned char red = m_conv[dest++] = m_imageChar[src++]; unsigned char green = m_conv[dest++] = m_imageChar[src++]; unsigned char blue = m_conv[dest++] = m_imageChar[src++]; if (red == 0xFF && green == 0xFF && blue == 0xFF) { m_conv[dest++] = 0; } else { m_conv[dest++] = 0xFF; } } } else { for (int i = 0; i < m_Gwidth; i++) { m_conv[dest++] = m_imageChar[src++]; m_conv[dest++] = m_imageChar[src++]; m_conv[dest++] = m_imageChar[src++]; m_conv[dest++] = 0; } } } if (m_alpha) { QImage image(m_conv, m_Gwidth, m_Gheight, QImage::Format_ARGB32); m_img = image.copy(); } else { QImage image(m_conv, m_Gwidth, m_Gheight, QImage::Format_RGB32); m_img = image.copy(); } } else { if (m_alpha) { int dest = 0; for (int j = 0; j < m_Gheight; j++) { int src = j * m_raster; for (int i = 0; i < m_Gwidth; i++) { unsigned char red = m_imageChar[dest++] = m_imageChar[src++]; unsigned char green = m_imageChar[dest++] = m_imageChar[src++]; unsigned char blue = m_imageChar[dest++] = m_imageChar[src++]; if (red == 0xFF && green == 0xFF && blue == 0xFF) { m_imageChar[dest++] = 0x0; } else { m_imageChar[dest++] = 0xFF; } src++; } } QImage image(m_imageChar, m_Gwidth, m_Gheight, QImage::Format_ARGB32); m_img = image.copy(); } else { if (m_raster != 4*m_Gwidth) { int dest = 0; for (int j = 0; j < m_Gheight; j++) { int src = j * m_raster; for (int i = 0; i < m_Gwidth; i++) { m_imageChar[dest++] = m_imageChar[src++]; m_imageChar[dest++] = m_imageChar[src++]; m_imageChar[dest++] = m_imageChar[src++]; m_imageChar[dest++] = 0; src++; } } } QImage image(m_imageChar, m_Gwidth, m_Gheight, QImage::Format_RGB32); m_img = image.copy(); } } return 0; } const QImage& GSInterpreterLib::getImage() { return m_img; } bool GSInterpreterLib::handleExit(int code) { // qWarning("Got code %d",code); if ( code>=0 ) return true; else if ( code <= -100 ) { switch (code) { case e_Fatal: m_error.setError(e_Fatal, "fatal internal error"); return false; case e_ExecStackUnderflow: m_error.setError(e_ExecStackUnderflow, "stack overflow"); return false; // no error or not important case e_Quit: case e_Info: case e_InterpreterExit: case e_RemapColor: case e_NeedInput: case e_NeedStdin: case e_NeedStdout: case e_NeedStderr: case e_VMreclaim: default: return true; } } else { const char* errors[]= { "", ERROR_NAMES }; m_error.setError(code, errors[-code]); return false; } } void GSInterpreterLib::argsToChar() { if (m_argsChar) { for (int i=0;ilibGSLocation().lastIndexOf(QString(".framework")); // If the Ghostscript framework is not installed in a default location it won't find its resources and fonts if (fwpos != -1) { QString path = m_gs->libGSLocation().left(fwpos+10); internalArgs << QString("-I%1/Resources/lib").arg(path); internalArgs << QString("-I%1/Resources/fonts").arg(path); } #endif internalArgs << "-dDELAYSAFER"; internalArgs << "-dNOPAUSE"; internalArgs << "-dNOPAGEPROMPT"; internalArgs << QString("-r%1").arg(m_dpi); internalArgs << QString("-g%1x%2").arg(m_width).arg(m_height); internalArgs << QString("-dDisplayResolution=%1").arg(m_dpi); internalArgs << QString("-dTextAlphaBits=%1").arg(m_textaa); internalArgs << QString("-dGraphicsAlphaBits=%1").arg(m_graphaa); if ( !m_pfonts ) internalArgs << "-dNOPLATFONTS"; } else { internalArgs = m_args; } if (m_display) { int format = DISPLAY_COLORS_RGB | DISPLAY_DEPTH_8 | DISPLAY_LITTLEENDIAN | DISPLAY_TOPFIRST; if (m_cnvmode == QGS_DISPLAY_32) { if (m_alpha) { // GhostScript does not support ALPHA channel // format |= DISPLAY_ALPHA_LAST; format |= DISPLAY_UNUSED_LAST; } else { format |= DISPLAY_UNUSED_LAST; } } internalArgs << "-sDEVICE=display"; internalArgs << QString().sprintf("-dDisplayFormat=%d", format); } int t=internalArgs.count(); char ** args=static_cast (new char* [t]); for (int i=0;igetProperties(); obj_prop->setRealProperty(GLEDOPropertyLineWidth, getProperty(LineWidth).toDouble()); QColor color = getProperty(LineColour).value(); GLEColor* gle_color = obj->getProperties()->getColorProperty(GLEDOPropertyColor); gle_color->setRGB255(color.red(), color.green(), color.blue()); QGLE::qtToGLEString(getProperty(LineStyle).toString(), obj_prop->getStringProperty(GLEDOPropertyLineStyle)); GLEColor* gle_fill = obj->getProperties()->getColorProperty(GLEDOPropertyFillColor); if (properties[FillColour].value().isValid()) { QColor fill = getProperty(FillColour).value(); gle_fill->setRGB255(fill.red(), fill.green(), fill.blue()); } else { gle_fill->setTransparent(true); } ((GLEDrawingArea*)parent())->setDirtyAndSave(); } // Update the painter path void GLEEllipse::updateEllipse() { QPointF p; QPair snap; double angle; // Only do this if both the centre and radius have been set if (isSet(CentrePoint) && isSet(RadiusX) && isSet(RadiusY) && isSet(Angle)) { // This is guaranteed to have been created in the constructor // of GLEDrawingObject delete(paintPath); // Create a new path starting at ellipseCentre paintPath = new QPainterPath(getQtPoint(CentrePoint)); // Add the ellipse based on the qrect // This needs to be modified to suit the angle! // CHECK: I think we only use this for bounding boxes, // so just make a rectangle of the bounding box angle = getGLEAngle(Angle); // Get the bounding box of the ellipse QRectF rect; rect.setTopLeft(getQtPoint(BBoxCornerA)); rect.setBottomRight(getQtPoint(BBoxCornerB)); paintPath->addRect(rect); // Update GLE object GLEEllipseDO* ellipse = (GLEEllipseDO*)getGLEObject(); if (ellipse != NULL) { ellipse->setCenter(QGLE::QPointFToGLEPoint(getGLEPoint(CentrePoint))); ellipse->setRadiusX(getGLELength(RadiusX)); ellipse->setRadiusY(getGLELength(RadiusY)); } // Update the calculated equation parameters updateEquationParameters(); // Now we add the osnap handles osnapHandles.clear(); p.setX(getQtLength(RadiusX)*cos(M_PI-angle)); p.setY(getQtLength(RadiusX)*sin(M_PI-angle)); p += getQtPoint(CentrePoint); snap.first = p; snap.second = QGLE::QuadrantSnap; osnapHandles.append(snap); p.setX(-getQtLength(RadiusX)*cos(M_PI-angle)); p.setY(-getQtLength(RadiusX)*sin(M_PI-angle)); p += getQtPoint(CentrePoint); snap.first = p; snap.second = QGLE::QuadrantSnap; osnapHandles.append(snap); p.setX(-getQtLength(RadiusY)*sin(angle)); p.setY(-getQtLength(RadiusY)*cos(angle)); p += getQtPoint(CentrePoint); snap.first = p; snap.second = QGLE::QuadrantSnap; osnapHandles.append(snap); p.setX(getQtLength(RadiusY)*sin(angle)); p.setY(getQtLength(RadiusY)*cos(angle)); p += getQtPoint(CentrePoint); snap.first = p; snap.second = QGLE::QuadrantSnap; osnapHandles.append(snap); snap.first = getQtPoint(CentrePoint); snap.second = QGLE::CentreSnap; osnapHandles.append(snap); } } void GLEEllipse::addRelativeOSnaps(QPointF p) { // This should be very similar to the circle one if (isSet(CentrePoint) && isSet(RadiusX) && isSet(RadiusY) && isSet(Angle)) { relativeOSnaps.clear(); QList perpendiculars = getPerpendiculars(p); QPointF ppt; foreach(ppt, perpendiculars) { relativeOSnaps.append(QPair(ppt, QGLE::PerpendicularSnap)); } QList tangents = getTangents(p); QPointF tpt; foreach(tpt, tangents) { relativeOSnaps.append(QPair(tpt, QGLE::TangentSnap)); } } } QList GLEEllipse::getTangents(QPointF p) { QList tangents; QPointF tangentPoint; int i; double A,B,C,delta,x,y; double m[2], c[2]; // slope and y-intercept if (!isInside(p)) { QHash coeffs = equationParameters; // coeffs['A'], coeffs['B'] etc // Ax^2 + By^2 + Cxy + Dx + Ey + F = 0 // Tangent line equation y = mx + c is satisfied by p.x() and p.y() // Slope of a tangents, m, satisfies a quadratic: A*m^2 + B*m + C = 0 // where A, B and C are: A = + pow(coeffs['E'],2) - 4*coeffs['B']*coeffs['F'] + ( 2*coeffs['C']*coeffs['E'] - 4*coeffs['B']*coeffs['D'] ) *p.x() + ( pow(coeffs['C'],2) - 4*coeffs['A']*coeffs['B'] )*pow(p.x(),2); B = - 4*coeffs['C']*coeffs['F'] + 2*coeffs['D']*coeffs['E'] + ( 4*coeffs['B']*coeffs['D'] - 2*coeffs['C']*coeffs['E'] ) * p.y() + ( 4*coeffs['A']*coeffs['E'] - 2*coeffs['C']*coeffs['D'] ) * p.x() + ( 8*coeffs['A']*coeffs['B'] - 2*pow((coeffs['C']),2) ) * p.y() * p.x(); C = + pow(coeffs['D'],2) - 4*coeffs['A']*coeffs['F'] + ( pow(coeffs['C'],2) - 4*coeffs['A']*coeffs['B'] ) * pow(p.y(),2) + ( 2*coeffs['C']*coeffs['D'] - 4*coeffs['A']*coeffs['E'] ) * p.y(); if (A != 0) { // Solving the quadratic in m gives 2 tangents: delta = pow(B,2) - 4*A*C; m[0] = 1/(2*A) * (-B + sqrt(delta)); m[1] = 1/(2*A) * (-B - sqrt(delta)); // Knowing the slope and a point on the tangent we find the y-intercept c[0] = p.y() - m[0] * p.x(); c[1] = p.y() - m[1] * p.x(); // Solve the quadratic which gives the intersection between ellipse and line // Either call GLEEllipse::lineIntersection, or do it here // In this case the intersection quadratic equation has one repeated real root // Single real root of A*x^2 + B*x + C = 0 is x=-B/(2*A) for (i=0;i<2;i++) { // Coefficients of the quadratic in x A = + coeffs['A'] + coeffs['C'] * m[i] + coeffs['B'] * pow(m[i],2); B = + coeffs['D'] + coeffs['C'] * c[i] + coeffs['E'] * m[i] + 2*coeffs['B'] * m[i] * c[i]; x = -B/(2*A); y = m[i] * x + c[i]; // Work in Qt Coordinates: p is the 'point' tangentPoint = QPointF(x,y); // For each tangentPoint tangents.append(tangentPoint); } } else { // The quadratic in m reduces to a linear equation in m, giving one tangent // The other tangent is a vertical line x = p.x(); m[0] = -C/B; c[0] = p.y() - m[0] * p.x(); // Coefficients of the quadratic in x A = + coeffs['A'] + coeffs['C'] * m[0] + coeffs['B'] * pow(m[0],2); B = + coeffs['D'] + coeffs['C'] * c[0] + coeffs['E'] * m[0] + 2*coeffs['B'] * m[0] * c[0]; x = -B/(2*A); y = m[0] * x + c[0]; tangentPoint = QPointF(x,y); tangents.append(tangentPoint); x = p.x(); // can't use y=m*x+c here to work out the value of y! // instead plut x into the ellipse equation // solve yet another quadratic, this time in y // A*y^2 + B*y + C = 0 // The desired value of y is a repeated real root, so need only A and B A = coeffs['B']; B = coeffs['E'] + coeffs['C'] * x; y = -B/(2*A); tangentPoint = QPointF(x,y); tangents.append(tangentPoint); } } return(tangents); } bool GLEEllipse::hasTangents() { return(true); } QList GLEEllipse::getPerpendiculars(QPointF p) { QList perpendiculars; QPointF c = getQtPoint(CentrePoint); double rx = getQtLength(RadiusX); double ry = getQtLength(RadiusY); double angle = getQtAngle(Angle); // Change coordinate system to be centred on origin QPointF translated = p - c; // Rotate about the origin to align the ellipse with the axis QPointF rotated = QGLE::parkTransform(translated, angle); QPointF perpPoint; double delta = M_PI; double t = -M_PI; int iterations = 0; double s, ds, tn; int i,j; // Search for the perpendicular points for (i=0; i<4; i++) { while ((fabs(delta) > ELLIPSE_PERP_ACCURACY) && (iterations < MAX_ELLIPSE_PERP_ITERATIONS)) { ds = -rx*rotated.x()*cos(t) - ry*rotated.y()*sin(t) + (pow(rx,2)-pow(ry,2))*(pow(cos(t),2) - pow(sin(t),2)); if (ds != 0.0) { s = -rx*rotated.x()*sin(t) + ry*rotated.y()*cos(t) + (pow(rx,2)-pow(ry,2))*sin(t)*cos(t); tn = t - (s/ds); delta = tn - t; t = tn; } else { t = t + M_PI/2.0; } iterations++; } perpPoint = QPointF(rx*cos(t),ry*sin(t)); t = -M_PI + (i+1)*M_PI/2.0; iterations = 0; delta = M_PI; // Now unrotate QPointF unrotated = QGLE::parkTransform(perpPoint, -angle); // Now Untranslate QPointF perpendicularPoint = unrotated + c; // Add to the list perpendiculars.append(perpendicularPoint); } // Now check for coincident points for(i=perpendiculars.size()-1;i>0;i--) { for(j=i-1;j>=0;j--) { if (perpendiculars[i] == perpendiculars[j]) { perpendiculars.removeAt(i); break; } } } return(perpendiculars); } bool GLEEllipse::hasPerpendiculars() { return(true); } void GLEEllipse::draw(QPainter *p) { QPen cpen; double angle; if (isSet(RadiusX) && isSet(RadiusY) && isSet(Angle)) { angle = getQtAngle(Angle); p->save(); p->translate(getQtPoint(CentrePoint)); if (angle != 0.0) p->rotate(QGLE::radiansToDegrees(angle)); setSimplePenProperties(cpen); p->setPen(cpen); if (properties[FillColour].value().isValid()) p->setBrush(QBrush(properties[FillColour].value())); else p->setBrush(Qt::NoBrush); p->drawEllipse(ellipseRect()); p->restore(); } } double GLEEllipse::distanceToPoint(const QPointF& p, QPointF *nearestPoint) { QList perpPoints = getPerpendiculars(p); QPointF pp; double shortestDistance = 1e6; double dist; foreach(pp,perpPoints) { dist = QGLE::distance(pp,p); if (dist < shortestDistance) { shortestDistance = dist; if (nearestPoint) { nearestPoint->setX(pp.x()); nearestPoint->setY(pp.y()); } } } return(shortestDistance); } // Set a point (start or end in the case of a line) void GLEEllipse::setPoint(int pointChoice, const QPointF& p, bool update) { switch(pointChoice) { case BBoxCorner: if (isSet(BBoxCornerA)) setPoint(BBoxCornerB, p); else setPoint(BBoxCornerA, p); break; case CentrePoint: pointHash[pointChoice] = QGLE::absQtToGLE(p, dpi, pixmap.height()); updateBBox(); break; case BBoxCornerA: case BBoxCornerB: pointHash[pointChoice] = QGLE::absQtToGLE(p, dpi, pixmap.height()); updateFromBBox(); break; case RadiusX: pointHash[pointChoice] = QGLE::relQtToGLE(p, dpi); updateBBox(); break; case RadiusY: pointHash[pointChoice] = QGLE::relQtToGLE(p, dpi); updateBBox(); break; case Angle: pointHash[pointChoice] = -p; break; } if (update) updateEllipse(); } void GLEEllipse::updateBBox() { QPointF ba,bb; QPointF c; double rx, ry; double theta; if (isSet(RadiusX) && isSet(RadiusY) && isSet(CentrePoint) && isSet(Angle)) { c = getQtPoint(CentrePoint); rx = getQtLength(RadiusX); ry = getQtLength(RadiusY); theta = getQtAngle(Angle); // Convert to max lengths double x = sqrt(pow(rx*cos(theta),2)+pow(ry*sin(theta),2)); double y = sqrt(pow(rx*sin(theta),2)+pow(ry*cos(theta),2)); ba.setX(c.x() + x); ba.setY(c.y() - y); bb.setX(c.x() - x); bb.setY(c.y() + y); pointHash[BBoxCornerA] = QGLE::absQtToGLE(ba, dpi, pixmap.height()); pointHash[BBoxCornerB] = QGLE::absQtToGLE(bb, dpi, pixmap.height()); } } void GLEEllipse::updateFromBBox() { QPointF c; double rx,ry; QPointF ba, bb; if (isSet(BBoxCornerA) && isSet(BBoxCornerB) && isSet(Angle)) { // Get the parameters ba = getQtPoint(BBoxCornerA); bb = getQtPoint(BBoxCornerB); // Locate the centre point c.setX((ba.x() + bb.x())/2.0); c.setY((ba.y() + bb.y())/2.0); // Find the difference between the centre and the BBox rx = fabs(bb.x() - c.x()); ry = fabs(bb.y() - c.y()); pointHash[CentrePoint] = QGLE::absQtToGLE(c, dpi, pixmap.height()); pointHash[RadiusX] = QPointF(QGLE::relQtToGLE(rx, dpi),0.0); pointHash[RadiusY] = QPointF(QGLE::relQtToGLE(ry, dpi),0.0); } } QRectF GLEEllipse::ellipseRect() { // This returns the ellipse rectangle, but centred on the origin // and not rotated. The rotation and translation are done with // painter->translate() and painter->rotate(). QRectF rect; QPointF c; double rx, ry; if (isSet(RadiusX) && isSet(RadiusY)) { rx = getQtLength(RadiusX); ry = getQtLength(RadiusY); rect.setBottomLeft(QPointF(-rx, ry)); rect.setTopRight(QPointF(rx, -ry)); } return(rect); } void GLEEllipse::updateEquationParameters() { // Qt Coordinates! // Returns the parameters of: // Ax^2 + By^2 + Cxy + Dx + Ey + F = 0 QPointF c = getQtPoint(CentrePoint); double angle = getQtAngle(Angle); double rx = getQtLength(RadiusX); double ry = getQtLength(RadiusY); // Ellipse equation with angle = 0.0 is // // x^2 y^2 // ---- + ---- = 1 // rx^2 ry^2 // // Translation and rotation with: // ( cos(a) sin(a) -c.x*cos(a)-c.y*sin(a) ) ( x ) // ( -sin(a) cos(a) c.x*sin(a)-c.y*cos(a) ) ( y ) // ( 0 0 1 ) ( 1 ) // // Solving this gives the result double cosine = cos(angle); double sine = sin(angle); equationParameters['A'] = pow(cosine/rx,2) + pow(sine/ry,2); equationParameters['B'] = pow(sine/rx,2) + pow(cosine/ry,2); equationParameters['C'] = 2*cosine*sine/pow(rx,2) - 2*cosine*sine/pow(ry,2); equationParameters['D'] = (-2*pow(cosine,2)*c.x() - 2*cosine*sine*c.y())/pow(rx,2) + (-2*pow(sine,2)*c.x() + 2*sine*cosine*c.y())/pow(ry,2); equationParameters['E'] = (-2*pow(sine,2)*c.y() - 2*sine*cosine*c.x())/pow(rx,2) + (-2*pow(cosine,2)*c.y() + 2*sine*cosine*c.x())/pow(ry,2); equationParameters['F'] = (pow(cosine,2)*pow(c.x(),2) + 2*sine*cosine*c.x()*c.y() + pow(sine,2)*pow(c.y(),2))/pow(rx,2) + (pow(cosine,2)*pow(c.y(),2) - 2*sine*cosine*c.x()*c.y() + pow(sine,2)*pow(c.x(),2))/pow(ry,2) - 1; // qDebug() << "Calculated equation parameters as: \n" // << "A: " << equationParameters['A'] << "\n" // << "B: " << equationParameters['B'] << "\n" // << "C: " << equationParameters['C'] << "\n" // << "D: " << equationParameters['D'] << "\n" // << "E: " << equationParameters['E'] << "\n" // << "F: " << equationParameters['F'] << "\n" // << "For centre: " << c << "; angle: " << angle << "; radii: " << QSizeF(rx,ry); // For debugging double A, B, C, D, E; A = equationParameters['A']; B = equationParameters['B']; C = equationParameters['C']; D = equationParameters['D']; E = equationParameters['E']; QPointF p1,p2,p3,p4; // Now work out the points where the ellipse touches // the old bounding box QPointF bba = getQtPoint(BBoxCornerA); QPointF bbb = getQtPoint(BBoxCornerB); p1.setX(bba.x()); p1.setY(-(C*p1.x()+E)/(2*B)); p2.setY(bba.y()); p2.setX(-(C*p2.y()+D)/(2*A)); p3.setX(bbb.x()); p3.setY(-(C*p3.x()+E)/(2*B)); p4.setY(bbb.y()); p4.setX(-(C*p4.y()+D)/(2*A)); } QList GLEEllipse::intersections(double qtm, double qtc, bool vertical) { QPointF one, two; // For ellipses, we'll deal with points individually: if (vertical) { one.setX(qtm); two.setX(qtm); one.setY(0.0); two.setY(1.0); } else { one.setX(0.0); one.setY(qtc); two.setX(1.0); two.setY(qtm + qtc); } return(intersections(one,two)); } QList GLEEllipse::intersections(QPointF, QPointF) { QList pointArray; return(pointArray); } QList GLEEllipse::intersections(QPointF, double) { QList correctIntersections; return(correctIntersections); } bool GLEEllipse::isInside(QPointF p) { double value = equationParameters['A']*p.x()*p.x() + equationParameters['B']*p.y()*p.y() + equationParameters['C']*p.x()*p.y() + equationParameters['D']*p.x() + equationParameters['E']*p.y() + equationParameters['F']; // If on or in, return true if (value > 0.0) return(false); else return(true); } int GLEEllipse::supportedTransformMode() { return TransformModeFree; } void GLEEllipse::linearTransform(const GLELinearEquation& ex, const GLELinearEquation& ey) { if (isSet(BBoxCornerA) && isSet(BBoxCornerB)) { pointHash.clear(); // Adjust the centre QPointF c = getQtPoint(CentrePoint, true); double angle = getQtAngle(Angle, true); double rx = getQtLength(RadiusX, true); double ry = getQtLength(RadiusY, true); QPointF p1,p2,p3,p4; // Now work out the points corresponding to the extremes // of the unrotated ellipse p1.setX(c.x() + rx*cos(angle)); p1.setY(c.y() + rx*sin(angle)); p2.setX(c.x() - rx*cos(angle)); p2.setY(c.y() - rx*sin(angle)); p3.setX(c.x() - ry*sin(angle)); p3.setY(c.y() + ry*cos(angle)); p4.setX(c.x() + ry*sin(angle)); p4.setY(c.y() - ry*cos(angle)); // Now scale them to their new positions p1.setX(ex.apply(p1.x())); p1.setY(ey.apply(p1.y())); p2.setX(ex.apply(p2.x())); p2.setY(ey.apply(p2.y())); p3.setX(ex.apply(p3.x())); p3.setY(ey.apply(p3.y())); p4.setX(ex.apply(p4.x())); p4.setY(ey.apply(p4.y())); c.setX(ex.apply(c.x())); c.setY(ey.apply(c.y())); // Now derive the parameters rx = QGLE::distance(c, p1); ry = QGLE::distance(c, p3); angle = QGLE::angleBetweenTwoPoints(c, p1); setLength(Angle, angle, false); setLength(RadiusX, rx, false); setLength(RadiusY, ry, false); setPoint(CentrePoint, c, false); updateEllipse(); } } void GLEEllipse::moveBy(QPointF offset) { double radiusx = getQtLength(RadiusX); double radiusy = getQtLength(RadiusY); double angle = getQtAngle(Angle); pointHash.clear(); setLength(RadiusX, radiusx, false); setLength(RadiusY, radiusy, false); setLength(Angle, angle, false); // Moves relative to storedPointHash QPointF c = getQtPoint(CentrePoint, true); setPoint(CentrePoint, c + offset, false); updateBBox(); updateEllipse(); } void GLEEllipse::rotateBy(double radians) { double radiusx = getQtLength(RadiusX); double radiusy = getQtLength(RadiusY); pointHash.clear(); setPoint(RadiusX, QPointF(radiusx,0.0)); setPoint(RadiusY, QPointF(radiusy,0.0)); QPointF oldCentre = getQtPoint(CentrePoint, true); // TODO: There's a definite glitch somewhere with the rotation... QPointF c = QGLE::rotateAboutPoint(oldCentre, radians, basePoint); setPoint(CentrePoint, c); // Now update the angle, what's the angle change? // If the base point is at the centre, we just need to update // the angle, but if not it's less easy double oldAngle = getQtAngle(Angle, true); // Now work out where a point on the old ellipse is QPointF edgePoint; edgePoint.setX(oldCentre.x() + getQtLength(RadiusX)*cos(oldAngle)); edgePoint.setY(oldCentre.y() + getQtLength(RadiusX)*sin(oldAngle)); // Now rotate it and work out the new angle from there edgePoint = QGLE::rotateAboutPoint(edgePoint, radians, basePoint); double newAngle = QGLE::angleBetweenTwoPoints(c, edgePoint); setPoint(Angle, QPointF(newAngle, 0.0)); updateBBox(); updateEllipse(); } gle-graphics-4.2.4c/src/gui/MakefileAC.in0000664000000000000000000000764011656572360016577 0ustar rootroot################################################################################### # QGLE - A Graphical Interface to GLE # # Copyright (C) 2006 A. S. Budden & J. Struyf # # # # 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # # # Also add information on how to contact you by electronic and paper mail. # ################################################################################### include ../../config.i include ../../config.aconf QMAKE_PROG=@QMAKE_PROG@ MAKE_PROG=$(MAKE) .PHONY : all .PHONY : clean .PHONY : qmake .PHONY : domake .PHONY : repmake .PHONY : doclean .PHONY : dosed ifeq (@HAVE_MINGW@,1) MAKE_PROG=mingw32-make endif prefix=@prefix@ exec_prefix=@exec_prefix@ INSTALL_LIB=@libdir@ INSTALL_BIN=@GLE_INSTALL_BIN@ INSTALL_DIR=@GLE_INSTALL_DATA@ CXX=@CXX@ CPPFLAGS=@CPPFLAGS@ SIMPLE_LDFLAGS=@SIMPLE_LDFLAGS@ SIMPLE_LIBS=@SIMPLE_LIBS@ CPPFLAGS := $(strip $(CPPFLAGS)) TOMAKE= TOCLEAN= QMAKE_OPTS= ifeq (@HAVE_QT@,1) TOMAKE=Makefile ifeq (@HAVE_AUTOPACKAGE@,1) TOMAKE:=$(TOMAKE) repmake endif TOMAKE:=$(TOMAKE) domake TOCLEAN=doclean ifeq (@HAVE_MAC@,1) QMAKE_OPTS:=-spec macx-g++ TOMAKE:=$(TOMAKE) install_qgle_name_mac endif ifeq (@HAVE_FREEBSD@,1) QMAKE_OPTS:=-spec freebsd-g++ endif endif ifeq (@HAVE_MAC@,1) TOMAKE:=$(TOMAKE) $(PROJECT_BINDIR)/bin/glegs endif all: $(TOMAKE) clean: $(TOCLEAN) Makefile: qgle.pro $(QMAKE_PROG) $(QMAKE_OPTS) qmake: $(QMAKE_PROG) $(QMAKE_OPTS) domake: $(MAKE_PROG) repmake: perl ../../platform/autopackage/qt-replace.pl Makefile doclean: -$(MAKE_PROG) clean -@$(RM) qgle install_qgle_name_mac Makefile -@$(RMDIR) moc -@$(RMDIR) objects SEDCMD = sed -i -e \ 's@\\([^-]\\)g\\(cc\\|++\\)@\\1/mnt/c/mingw/bin/g\\2@' -e \ 's@\\([A-Za-z0-9:]\\)\\\\\\([A-Za-z0-9:]\\)@\\1/\\2@g' -e \ 's@^DEL_FILE.*@DEL_FILE = rm -f@' -e 's@^MOVE.*@MOVE = mv -f@' -e \ 's@^COPY[ =].*@COPY = cp -f@' -e 's@^COPY_DIR.*@COPY_DIR = \$(COPY) \ -r@' -e 's@^CHK_DIR_EXISTS.*@CHK_DIR_EXISTS = test -d@' -e \ 's@^MKDIR.*@MKDIR = mkdir -p@' -e 's@debug[\\\\]@debug/@' Makefile* dosed: $(SEDCMD) EXTRA_OBJS := ../gle/cutils.$(OBJ_SUFF) ../gle/file_io.$(OBJ_SUFF) ifeq (@HAVE_LIBGLE_CPPFLAGS@,1) EXTRA_OBJS := ../gle/cutils.static.$(OBJ_SUFF) ../gle/file_io.static.$(OBJ_SUFF) endif $(PROJECT_BINDIR)/bin/glegs: glegs.cpp $(EXTRA_OBJS) $(CXX) glegs.cpp $(CPPFLAGS) $(SIMPLE_LDFLAGS) -o $(PROJECT_BINDIR)/bin/glegs $(EXTRA_OBJS) $(SIMPLE_LIBS) -ldl install_qgle_name_mac: $(PROJECT_BINDIR)/bin/QGLE.app/Contents/MacOS/QGLE install_name_tool -change libgle-graphics-@GLE_VERSION@.dylib $(DESTDIR)$(INSTALL_LIB)/libgle-graphics-@GLE_VERSION@.dylib $(PROJECT_BINDIR)/bin/QGLE.app/Contents/MacOS/QGLE touch install_qgle_name_mac gle-graphics-4.2.4c/src/gui/line.cpp0000664000000000000000000003401511677066164015760 0ustar rootroot/*********************************************************************************** * QGLE - A Graphical Interface to GLE * * Copyright (C) 2006 A. S. Budden & J. Struyf * * * * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * * * Also add information on how to contact you by electronic and paper mail. * ***********************************************************************************/ #include "line.h" // The constructor for the line object GLELine::GLELine(double resolution, QSize imageSize, GLEDrawingArea *area) : GLEDrawingObject(resolution, imageSize, area) { // Make sure the line is updated if a point changes or // the image size changes connect(this, SIGNAL(pointChanged()), this, SLOT(updateLine())); connect(this, SIGNAL(imageChanged()), this, SLOT(updateLine())); connect(this, SIGNAL(propertyChanged(int)), this, SLOT(updateFromProperty(int))); validProperties << LineColour << LineWidth << LineStyle << ArrowHeadPresence; properties[LineColour] = propertyDescriptions[LineColour].defaultValue; properties[LineWidth] = propertyDescriptions[LineWidth].defaultValue; properties[LineStyle] = propertyDescriptions[LineStyle].defaultValue; properties[ArrowHeadPresence] = propertyDescriptions[ArrowHeadPresence].defaultValue; amove = false; } // Update the painter path void GLELine::updateLine() { // Only do this if both the start and end have been set if (isSet(StartPoint) && isSet(EndPoint)) { // This is guaranteed to have been created in the constructor // of GLEDrawingObject delete(paintPath); // Create a new path starting at lineStart paintPath = new QPainterPath(getQtPoint(StartPoint)); // Make it a line ending at lineEnd paintPath->lineTo(getQtPoint(EndPoint)); // Update GLE object GLELineDO* line = (GLELineDO*)getGLEObject(); if (line != NULL) { line->setP1(QGLE::QPointFToGLEPoint(getGLEPoint(StartPoint))); line->setP2(QGLE::QPointFToGLEPoint(getGLEPoint(EndPoint))); } osnapHandles.clear(); QPointF s = getQtPoint(StartPoint); QPointF e = getQtPoint(EndPoint); osnapHandles.append(QPair(s,QGLE::EndPointSnap)); osnapHandles.append(QPair(e,QGLE::EndPointSnap)); osnapHandles.append(QPair((s+e)/2,QGLE::MidPointSnap)); } } void GLELine::updateFromProperty(int prop) { GLELineDO* obj = (GLELineDO*)getGLEObject(); GLEPropertyStore* obj_prop = obj->getProperties(); double lwd = getProperty(LineWidth).toDouble(); obj_prop->setRealProperty(GLEDOPropertyLineWidth, lwd); QColor color = getProperty(LineColour).value(); GLEColor* gle_color = obj_prop->getColorProperty(GLEDOPropertyColor); gle_color->setRGB255(color.red(), color.green(), color.blue()); QGLE::qtToGLEString(getProperty(LineStyle).toString(), obj_prop->getStringProperty(GLEDOPropertyLineStyle)); obj->setArrow((GLEHasArrow)getProperty(ArrowHeadPresence).toInt()); if (prop == LineWidth) { GLESetDefaultArrowProperties(lwd, obj_prop); } ((GLEDrawingArea*)parent())->setDirtyAndSave(); } void GLELine::createOTracks() { if (isSet(StartPoint) && isSet(EndPoint)) { // TODO: create some snap lines! // Also need to implement the necessary functionality // in gledrawing.cpp } } void GLELine::addRelativeOSnaps(QPointF p) { if (isSet(StartPoint) && isSet(EndPoint)) { // qDebug() << "Adding osnap relative to " << QGLE::absQtToGLE(p,dpi,pixmap.height()); relativeOSnaps.clear(); QPointF np; distanceToPoint(p,&np); // qDebug() << "Nearest point: " << QGLE::absQtToGLE(np,dpi,pixmap.height()); if ((np == getQtPoint(StartPoint)) || (np == getQtPoint(EndPoint))) return; relativeOSnaps.append(QPair(np,QGLE::PerpendicularSnap)); } // qDebug() << "Added relative OSNAP"; } QList GLELine::getTangents(QPointF) { QList empty; return(empty); } bool GLELine::hasTangents() { return(false); } QList GLELine::getPerpendiculars(QPointF p) { QList perpendiculars; QPointF np; distanceToPoint(p,&np); if ((np == getQtPoint(StartPoint)) || (np == getQtPoint(EndPoint))) return(perpendiculars); perpendiculars.append(np); return(perpendiculars); } bool GLELine::hasPerpendiculars() { return(true); } void GLELine::draw(QPainter *p) { QPen cpen; setPenProperties(cpen); GLELineDO* obj = (GLELineDO*)getGLEObject(); if (obj != NULL && obj->getArrow() != 0) { GLEArrowPoints pts1, pts2; GLEPoint start_pt(getQtPoint(StartPoint).x(), getQtPoint(StartPoint).y()); GLEPoint end_pt(getQtPoint(EndPoint).x(), getQtPoint(EndPoint).y()); double dx = end_pt.getX()-start_pt.getX(); double dy = end_pt.getY()-start_pt.getY(); GLEGetArrowPoints(start_pt, dx, dy, obj->getProperties(), dpi/CM_PER_INCH, &pts1); GLEGetArrowPoints(end_pt, -dx, -dy, obj->getProperties(), dpi/CM_PER_INCH, &pts2); QPen new_pen = cpen; int tip = obj->getProperties()->getIntProperty(GLEDOPropertyArrowTip); int style = obj->getProperties()->getIntProperty(GLEDOPropertyArrowStyle); if (tip == GLEArrowTipRound) new_pen.setJoinStyle(Qt::RoundJoin); else new_pen.setJoinStyle(Qt::MiterJoin); new_pen.setMiterLimit(20); new_pen.setStyle(Qt::SolidLine); GLEHasArrow arrow = obj->getArrow(); if ((arrow & GLEHasArrowStart) != 0) start_pt.setXY(pts1.xl, pts1.yl); if ((arrow & GLEHasArrowEnd) != 0) end_pt.setXY(pts2.xl, pts2.yl); p->setPen(cpen); p->drawLine(QPointF(start_pt.getX(), start_pt.getY()), QPointF(end_pt.getX(), end_pt.getY())); p->setPen(new_pen); if ((arrow & GLEHasArrowStart) != 0) { QPointF poly[3]; poly[0] = QPointF(pts1.xa, pts1.ya); poly[1] = QPointF(pts1.xt, pts1.yt); poly[2] = QPointF(pts1.xb, pts1.yb); if (style == GLEArrowStyleFilled) { QColor col; GLEColor* color = obj->getProperties()->getColorProperty(GLEDOPropertyColor); col.setRgbF(color->getRed(), color->getGreen(), color->getBlue()); p->setBrush(QBrush(col)); } else { p->setBrush(QBrush(Qt::white)); } if (style == GLEArrowStyleSimple) p->drawPolyline(poly, 3); else p->drawConvexPolygon(poly, 3); } if ((arrow & GLEHasArrowEnd) != 0) { QPointF poly[3]; poly[0] = QPointF(pts2.xa, pts2.ya); poly[1] = QPointF(pts2.xt, pts2.yt); poly[2] = QPointF(pts2.xb, pts2.yb); if (style == GLEArrowStyleFilled) { QColor col; GLEColor* color = obj->getProperties()->getColorProperty(GLEDOPropertyColor); col.setRgbF(color->getRed(), color->getGreen(), color->getBlue()); p->setBrush(QBrush(col)); } else { p->setBrush(QBrush(Qt::white)); } if (style == GLEArrowStyleSimple) p->drawPolyline(poly, 3); else p->drawConvexPolygon(poly, 3); } } else { p->setPen(cpen); p->drawLine(getQtPoint(StartPoint),getQtPoint(EndPoint)); } } double GLELine::distanceToPoint(const QPointF& p, QPointF *nearestPoint) { // All calculations in QT coordinates // Distances between start, end and the point double se, sp, ep; QPointF s, e; // Angle between se and sp double pse; // Angle between se and ep double pes; /**************************************************************************** * This calculation is based on the triangle: * * p * * /\ * * / \ * * s<____>e * * * * where s and e are the end points of the line and p is the point that has * * been clicked. If the angle pse (calculated using the cosine rule: a^2 = * * b^2 + c^2 -2.b.c.cosA) is greater than 90�, the distance to the point is * * the same as the line length s-p. Likewise for the angle pes and the * * line length e-p. If both angles are less than 90�, the distance can be * * calculated simply. The shortest distance will be the length of the line * * from p to the line se that meets the line at 90�, thus: * * p * * /| * * / | * * s<__|__e * * The distance is therefore sp*sin(pse). * ****************************************************************************/ s = getQtPoint(StartPoint); e = getQtPoint(EndPoint); se = QGLE::distance(s,e); sp = QGLE::distance(s,p); ep = QGLE::distance(e,p); //qDebug() << "Distances: " << se << " " << sp << " " << ep; if ((sp == 0.0) || (ep == 0.0)) return(0.0); if (se == 0.0) return(sp); double ac; // Calculated the bit inside the 'acos' ac = (se*se + sp*sp - ep*ep)/(2*se*sp); // Make sure it isn't greater than 1 if (ac > 1.0) ac = 1.0; else if (ac < -1.0) ac = -1.0; pse = acos(ac); // Calculated the bit inside the 'acos' ac = (se*se + ep*ep - sp*sp)/(2*se*ep); // Make sure it isn't greater than 1 if (ac > 1.0) ac = 1.0; else if (ac < -1.0) ac = -1.0; pes = acos(ac); //qDebug() << "Angles: " << pse << " " << pes; if ( pse >= M_PI/2.0 ) { if (nearestPoint) *nearestPoint = s; return(sp); } else if ( pes >= M_PI/2.0 ) { if (nearestPoint) *nearestPoint = e; return(ep); } else { if (nearestPoint) *nearestPoint = (sp*cos(pse)/se)*(e-s) + s; return(sp*sin(pse)); } } // Set a point (start or end in the case of a line) void GLELine::setPoint(int pointChoice, const QPointF& p, bool update) { switch(pointChoice) { case EndPoint: case StartPoint: pointHash[pointChoice] = QGLE::absQtToGLE(p, dpi, pixmap.height()); break; } if (update) updateLine(); } QList GLELine::intersections(double qtm, double qtc, bool vertical) { QList pointArray; QPointF sp, ep; QPointF intersect; sp = getQtPoint(StartPoint); ep = getQtPoint(EndPoint); double mym, myc; if (vertical) { // If both lines are vertical, no intersection (or an infinite number) if ((!(sp.x() == ep.x())) && (QGLE::inOrder(sp.x(), qtm, ep.x()))) { // Lines intersect intersect = QPointF(qtm, ((qtm-sp.x())/(ep.x()-sp.x()))*(ep.y()-sp.y())+sp.y()); pointArray.append(intersect); } } else { // Not vertical if (sp.x() == ep.x()) { // But this line is! intersect.setX(sp.x()); intersect.setY(qtm*sp.x()+qtc); if (QGLE::inOrder(sp.y(),intersect.y(),ep.y())) pointArray.append(intersect); } else { // Neither line is vertical mym = (ep.y()-sp.y())/(ep.x()-sp.x()); myc = ep.y() - mym*ep.x(); intersect.setX((myc-qtc)/(qtm-mym)); intersect.setY(mym*intersect.x()+myc); if ((QGLE::inOrder(sp.y(),intersect.y(),ep.y())) && (QGLE::inOrder(sp.x(), intersect.x(), ep.x()))) pointArray.append(intersect); } } return(pointArray); } QList GLELine::intersections(QPointF qtp1, QPointF qtp2) { double m, c; if (qtp2.x() == qtp1.x()) return(intersections(qtp2.x(), 0, true)); m = (qtp2.y() - qtp1.y())/(qtp2.x()-qtp1.x()); c = qtp2.y() - m*qtp2.x(); return(intersections(m,c,false)); } QList GLELine::intersections(QPointF qtp1, double angle) { // This intersection code must determine the intersections in // a particular direction from a start point // First get a list based on an infinite line: QPointF qtp2 = qtp1 + QPointF(1.0*cos(angle),1.0*sin(angle)); QList allIntersections = intersections(qtp1,qtp2); // Now go through the list and determine which are in the right // direction QList correctIntersections; QPointF pt; double ptAngle; foreach(pt, allIntersections) { ptAngle = QGLE::angleBetweenTwoPoints(qtp1, pt); if (QGLE::quadrant(ptAngle) == QGLE::quadrant(angle)) correctIntersections.append(pt); } return(correctIntersections); } bool GLELine::isInside(QPointF p) { UNUSED_ARG(p); return(false); } int GLELine::supportedTransformMode() { return TransformModeFree; } void GLELine::linearTransform(const GLELinearEquation& ex, const GLELinearEquation& ey) { pointHash.clear(); linearTransformPt(StartPoint, ex, ey, false); linearTransformPt(EndPoint, ex, ey, false); updateLine(); } void GLELine::moveBy(QPointF offset) { pointHash.clear(); // Moves relative to storedPointHash QPointF start = getQtPoint(StartPoint, true); setPoint(StartPoint, start + offset, false); QPointF end = getQtPoint(EndPoint, true); setPoint(EndPoint, end + offset, false); updateLine(); } void GLELine::rotateBy(double radians) { pointHash.clear(); // Moves relative to storedPointHash QPointF start = getQtPoint(StartPoint, true); setPoint(StartPoint, QGLE::rotateAboutPoint(start, radians, basePoint)); QPointF end = getQtPoint(EndPoint, true); setPoint(EndPoint, QGLE::rotateAboutPoint(end, radians, basePoint)); } gle-graphics-4.2.4c/src/gui/macspecific.cpp0000664000000000000000000000467711405446017017276 0ustar rootroot/*********************************************************************************** * QGLE - A Graphical Interface to GLE * * Copyright (C) 2006 A. S. Budden & J. Struyf * * * * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * * * Also add information on how to contact you by electronic and paper mail. * ***********************************************************************************/ #include #include #include using namespace std; bool copyPDFMac(const string& fname) { CFMutableDataRef data = CFDataCreateMutable(kCFAllocatorDefault, 0); if (data != NULL) { char buffer[10000]; ifstream file; file.open(fname.c_str()); if (file.is_open()) { while (file.good()) { file.read(buffer, 9000); CFDataAppendBytes(data, (const UInt8*)buffer, file.gcount()); } file.close(); // copy PDF to clipboard PasteboardRef clipboard = NULL; PasteboardCreate(kPasteboardClipboard, &clipboard); PasteboardClear(clipboard); PasteboardPutItemFlavor(clipboard, (PasteboardItemID) 1, kUTTypePDF, data, kPasteboardFlavorNoFlags); CFRelease(clipboard); CFRelease(data); return true; } } return false; } gle-graphics-4.2.4c/src/gui/amove.h0000664000000000000000000000621611405446017015573 0ustar rootroot/*********************************************************************************** * QGLE - A Graphical Interface to GLE * * Copyright (C) 2006 A. S. Budden & J. Struyf * * * * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * * * Also add information on how to contact you by electronic and paper mail. * ***********************************************************************************/ #ifndef _GLEAMOVE_H #define _GLEAMOVE_H #include "drawingobject.h" //! Class describing a line drawing object class GLEAmove : public GLEDrawingObject { Q_OBJECT public: //! Enumeration of the points needed to draw a line enum Points { CentrePoint }; //! Constructor used for initialising variables and connections GLEAmove(double resolution, QSize imageSize, GLEDrawingArea *area); //! Draw the line on the provided painter void draw(QPainter *p); //! Return the shortest distance between a given point and the line double distanceToPoint(const QPointF& p, QPointF *nearestPoint); //! Set one of the enumerated points void setPoint(int pointChoice, const QPointF& p, bool update = true); void addRelativeOSnaps(QPointF p); //! Find points where a line intersects the line // If vertical = true, m contains 'x' QList intersections(double qtm, double qtc, bool vertical = false); QList intersections(QPointF qtp1, double angle); QList intersections(QPointF qtp1, QPointF qtp2); QList getTangents(QPointF p); bool hasTangents(); QList getPerpendiculars(QPointF p); bool hasPerpendiculars(); //! Is the point inside the object (for a line, always false) bool isInside(QPointF p); void scaleBy(double xratio, double yratio); void moveBy(QPointF offset); void rotateBy(double radians); void createOTracks(); private slots: //! Update the painter path when the resolution or start/end points change void updateAmove(); }; #endif gle-graphics-4.2.4c/src/gui/doxyfile0000664000000000000000000014706411405446017016070 0ustar rootroot# Doxyfile 1.4.6 ################################################################################### # QGLE - A Graphical Interface to GLE # # Copyright (C) 2006 A. S. Budden & J. Struyf # # # # 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # # # Also add information on how to contact you by electronic and paper mail. # ###################################################################################/ # This file describes the settings to be used by the documentation system # doxygen (www.doxygen.org) for a project # # All text after a hash (#) is considered a comment and will be ignored # The format is: # TAG = value [value, ...] # For lists items can also be appended using: # TAG += value [value, ...] # Values that contain spaces should be placed between quotes (" ") #--------------------------------------------------------------------------- # Project related configuration options #--------------------------------------------------------------------------- # The PROJECT_NAME tag is a single word (or a sequence of words surrounded # by quotes) that should identify the project. PROJECT_NAME = QGLE # The PROJECT_NUMBER tag can be used to enter a project or revision number. # This could be handy for archiving the generated documentation or # if some version control system is used. PROJECT_NUMBER = # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) # base path where the generated documentation will be put. # If a relative path is entered, it will be relative to the location # where doxygen was started. If left blank the current directory will be used. OUTPUT_DIRECTORY = doc # If the CREATE_SUBDIRS tag is set to YES, then doxygen will create # 4096 sub-directories (in 2 levels) under the output directory of each output # format and will distribute the generated files over these directories. # Enabling this option can be useful when feeding doxygen a huge amount of # source files, where putting all generated files in the same directory would # otherwise cause performance problems for the file system. CREATE_SUBDIRS = NO # The OUTPUT_LANGUAGE tag is used to specify the language in which all # documentation generated by doxygen is written. Doxygen will use this # information to generate all constant output in the proper language. # The default language is English, other supported languages are: # Brazilian, Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, # Dutch, Finnish, French, German, Greek, Hungarian, Italian, Japanese, # Japanese-en (Japanese with English messages), Korean, Korean-en, Norwegian, # Polish, Portuguese, Romanian, Russian, Serbian, Slovak, Slovene, Spanish, # Swedish, and Ukrainian. OUTPUT_LANGUAGE = English # This tag can be used to specify the encoding used in the generated output. # The encoding is not always determined by the language that is chosen, # but also whether or not the output is meant for Windows or non-Windows users. # In case there is a difference, setting the USE_WINDOWS_ENCODING tag to YES # forces the Windows encoding (this is the default for the Windows binary), # whereas setting the tag to NO uses a Unix-style encoding (the default for # all platforms other than Windows). USE_WINDOWS_ENCODING = NO # If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will # include brief member descriptions after the members that are listed in # the file and class documentation (similar to JavaDoc). # Set to NO to disable this. BRIEF_MEMBER_DESC = YES # If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend # the brief description of a member or function before the detailed description. # Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the # brief descriptions will be completely suppressed. REPEAT_BRIEF = YES # This tag implements a quasi-intelligent brief description abbreviator # that is used to form the text in various listings. Each string # in this list, if found as the leading text of the brief description, will be # stripped from the text and the result after processing the whole list, is # used as the annotated text. Otherwise, the brief description is used as-is. # If left blank, the following values are used ("$name" is automatically # replaced with the name of the entity): "The $name class" "The $name widget" # "The $name file" "is" "provides" "specifies" "contains" # "represents" "a" "an" "the" ABBREVIATE_BRIEF = # If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then # Doxygen will generate a detailed section even if there is only a brief # description. ALWAYS_DETAILED_SEC = NO # If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all # inherited members of a class in the documentation of that class as if those # members were ordinary class members. Constructors, destructors and assignment # operators of the base classes will not be shown. INLINE_INHERITED_MEMB = NO # If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full # path before files name in the file list and in the header files. If set # to NO the shortest path that makes the file name unique will be used. FULL_PATH_NAMES = YES # If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag # can be used to strip a user-defined part of the path. Stripping is # only done if one of the specified strings matches the left-hand part of # the path. The tag can be used to show relative paths in the file list. # If left blank the directory from which doxygen is run is used as the # path to strip. STRIP_FROM_PATH = # The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of # the path mentioned in the documentation of a class, which tells # the reader which header file to include in order to use a class. # If left blank only the name of the header file containing the class # definition is used. Otherwise one should specify the include paths that # are normally passed to the compiler using the -I flag. STRIP_FROM_INC_PATH = # If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter # (but less readable) file names. This can be useful is your file systems # doesn't support long names like on DOS, Mac, or CD-ROM. SHORT_NAMES = NO # If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen # will interpret the first line (until the first dot) of a JavaDoc-style # comment as the brief description. If set to NO, the JavaDoc # comments will behave just like the Qt-style comments (thus requiring an # explicit @brief command for a brief description. JAVADOC_AUTOBRIEF = NO # The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen # treat a multi-line C++ special comment block (i.e. a block of //! or /// # comments) as a brief description. This used to be the default behaviour. # The new default is to treat a multi-line C++ comment block as a detailed # description. Set this tag to YES if you prefer the old behaviour instead. MULTILINE_CPP_IS_BRIEF = NO # If the DETAILS_AT_TOP tag is set to YES then Doxygen # will output the detailed description near the top, like JavaDoc. # If set to NO, the detailed description appears after the member # documentation. DETAILS_AT_TOP = NO # If the INHERIT_DOCS tag is set to YES (the default) then an undocumented # member inherits the documentation from any documented member that it # re-implements. INHERIT_DOCS = YES # If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce # a new page for each member. If set to NO, the documentation of a member will # be part of the file/class/namespace that contains it. SEPARATE_MEMBER_PAGES = NO # The TAB_SIZE tag can be used to set the number of spaces in a tab. # Doxygen uses this value to replace tabs by spaces in code fragments. TAB_SIZE = 8 # This tag can be used to specify a number of aliases that acts # as commands in the documentation. An alias has the form "name=value". # For example adding "sideeffect=\par Side Effects:\n" will allow you to # put the command \sideeffect (or @sideeffect) in the documentation, which # will result in a user-defined paragraph with heading "Side Effects:". # You can put \n's in the value part of an alias to insert newlines. ALIASES = # Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C # sources only. Doxygen will then generate output that is more tailored for C. # For instance, some of the names that are used will be different. The list # of all members will be omitted, etc. OPTIMIZE_OUTPUT_FOR_C = NO # Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java # sources only. Doxygen will then generate output that is more tailored for Java. # For instance, namespaces will be presented as packages, qualified scopes # will look different, etc. OPTIMIZE_OUTPUT_JAVA = NO # If you use STL classes (i.e. std::string, std::vector, etc.) but do not want to # include (a tag file for) the STL sources as input, then you should # set this tag to YES in order to let doxygen match functions declarations and # definitions whose arguments contain STL classes (e.g. func(std::string); v.s. # func(std::string) {}). This also make the inheritance and collaboration # diagrams that involve STL classes more complete and accurate. BUILTIN_STL_SUPPORT = NO # If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC # tag is set to YES, then doxygen will reuse the documentation of the first # member in the group (if any) for the other members of the group. By default # all members of a group must be documented explicitly. DISTRIBUTE_GROUP_DOC = NO # Set the SUBGROUPING tag to YES (the default) to allow class member groups of # the same type (for instance a group of public functions) to be put as a # subgroup of that type (e.g. under the Public Functions section). Set it to # NO to prevent subgrouping. Alternatively, this can be done per class using # the \nosubgrouping command. SUBGROUPING = YES #--------------------------------------------------------------------------- # Build related configuration options #--------------------------------------------------------------------------- # If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in # documentation are documented, even if no documentation was available. # Private class members and static file members will be hidden unless # the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES EXTRACT_ALL = NO # If the EXTRACT_PRIVATE tag is set to YES all private members of a class # will be included in the documentation. EXTRACT_PRIVATE = YES # If the EXTRACT_STATIC tag is set to YES all static members of a file # will be included in the documentation. EXTRACT_STATIC = YES # If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) # defined locally in source files will be included in the documentation. # If set to NO only classes defined in header files are included. EXTRACT_LOCAL_CLASSES = YES # This flag is only useful for Objective-C code. When set to YES local # methods, which are defined in the implementation section but not in # the interface are included in the documentation. # If set to NO (the default) only methods in the interface are included. EXTRACT_LOCAL_METHODS = NO # If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all # undocumented members of documented classes, files or namespaces. # If set to NO (the default) these members will be included in the # various overviews, but no documentation section is generated. # This option has no effect if EXTRACT_ALL is enabled. HIDE_UNDOC_MEMBERS = NO # If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all # undocumented classes that are normally visible in the class hierarchy. # If set to NO (the default) these classes will be included in the various # overviews. This option has no effect if EXTRACT_ALL is enabled. HIDE_UNDOC_CLASSES = NO # If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all # friend (class|struct|union) declarations. # If set to NO (the default) these declarations will be included in the # documentation. HIDE_FRIEND_COMPOUNDS = NO # If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any # documentation blocks found inside the body of a function. # If set to NO (the default) these blocks will be appended to the # function's detailed documentation block. HIDE_IN_BODY_DOCS = NO # The INTERNAL_DOCS tag determines if documentation # that is typed after a \internal command is included. If the tag is set # to NO (the default) then the documentation will be excluded. # Set it to YES to include the internal documentation. INTERNAL_DOCS = NO # If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate # file names in lower-case letters. If set to YES upper-case letters are also # allowed. This is useful if you have classes or files whose names only differ # in case and if your file system supports case sensitive file names. Windows # and Mac users are advised to set this option to NO. CASE_SENSE_NAMES = YES # If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen # will show members with their full class and namespace scopes in the # documentation. If set to YES the scope will be hidden. HIDE_SCOPE_NAMES = NO # If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen # will put a list of the files that are included by a file in the documentation # of that file. SHOW_INCLUDE_FILES = YES # If the INLINE_INFO tag is set to YES (the default) then a tag [inline] # is inserted in the documentation for inline members. INLINE_INFO = YES # If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen # will sort the (detailed) documentation of file and class members # alphabetically by member name. If set to NO the members will appear in # declaration order. SORT_MEMBER_DOCS = YES # If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the # brief documentation of file, namespace and class members alphabetically # by member name. If set to NO (the default) the members will appear in # declaration order. SORT_BRIEF_DOCS = NO # If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be # sorted by fully-qualified names, including namespaces. If set to # NO (the default), the class list will be sorted only by class name, # not including the namespace part. # Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. # Note: This option applies only to the class list, not to the # alphabetical list. SORT_BY_SCOPE_NAME = NO # The GENERATE_TODOLIST tag can be used to enable (YES) or # disable (NO) the todo list. This list is created by putting \todo # commands in the documentation. GENERATE_TODOLIST = YES # The GENERATE_TESTLIST tag can be used to enable (YES) or # disable (NO) the test list. This list is created by putting \test # commands in the documentation. GENERATE_TESTLIST = YES # The GENERATE_BUGLIST tag can be used to enable (YES) or # disable (NO) the bug list. This list is created by putting \bug # commands in the documentation. GENERATE_BUGLIST = YES # The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or # disable (NO) the deprecated list. This list is created by putting # \deprecated commands in the documentation. GENERATE_DEPRECATEDLIST= YES # The ENABLED_SECTIONS tag can be used to enable conditional # documentation sections, marked by \if sectionname ... \endif. ENABLED_SECTIONS = # The MAX_INITIALIZER_LINES tag determines the maximum number of lines # the initial value of a variable or define consists of for it to appear in # the documentation. If the initializer consists of more lines than specified # here it will be hidden. Use a value of 0 to hide initializers completely. # The appearance of the initializer of individual variables and defines in the # documentation can be controlled using \showinitializer or \hideinitializer # command in the documentation regardless of this setting. MAX_INITIALIZER_LINES = 30 # Set the SHOW_USED_FILES tag to NO to disable the list of files generated # at the bottom of the documentation of classes and structs. If set to YES the # list will mention the files that were used to generate the documentation. SHOW_USED_FILES = YES # If the sources in your project are distributed over multiple directories # then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy # in the documentation. The default is NO. SHOW_DIRECTORIES = NO # The FILE_VERSION_FILTER tag can be used to specify a program or script that # doxygen should invoke to get the current version for each file (typically from the # version control system). Doxygen will invoke the program by executing (via # popen()) the command , where is the value of # the FILE_VERSION_FILTER tag, and is the name of an input file # provided by doxygen. Whatever the program writes to standard output # is used as the file version. See the manual for examples. FILE_VERSION_FILTER = #--------------------------------------------------------------------------- # configuration options related to warning and progress messages #--------------------------------------------------------------------------- # The QUIET tag can be used to turn on/off the messages that are generated # by doxygen. Possible values are YES and NO. If left blank NO is used. QUIET = NO # The WARNINGS tag can be used to turn on/off the warning messages that are # generated by doxygen. Possible values are YES and NO. If left blank # NO is used. WARNINGS = YES # If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings # for undocumented members. If EXTRACT_ALL is set to YES then this flag will # automatically be disabled. WARN_IF_UNDOCUMENTED = YES # If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for # potential errors in the documentation, such as not documenting some # parameters in a documented function, or documenting parameters that # don't exist or using markup commands wrongly. WARN_IF_DOC_ERROR = YES # This WARN_NO_PARAMDOC option can be abled to get warnings for # functions that are documented, but have no documentation for their parameters # or return value. If set to NO (the default) doxygen will only warn about # wrong or incomplete parameter documentation, but not about the absence of # documentation. WARN_NO_PARAMDOC = NO # The WARN_FORMAT tag determines the format of the warning messages that # doxygen can produce. The string should contain the $file, $line, and $text # tags, which will be replaced by the file and line number from which the # warning originated and the warning text. Optionally the format may contain # $version, which will be replaced by the version of the file (if it could # be obtained via FILE_VERSION_FILTER) WARN_FORMAT = "$file:$line: $text" # The WARN_LOGFILE tag can be used to specify a file to which warning # and error messages should be written. If left blank the output is written # to stderr. WARN_LOGFILE = #--------------------------------------------------------------------------- # configuration options related to the input files #--------------------------------------------------------------------------- # The INPUT tag can be used to specify the files and/or directories that contain # documented source files. You may enter file names like "myfile.cpp" or # directories like "/usr/src/myproject". Separate the files or directories # with spaces. INPUT = # If the value of the INPUT tag contains directories, you can use the # FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp # and *.h) to filter out the source-files in the directories. If left # blank the following patterns are tested: # *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx # *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py FILE_PATTERNS = # The RECURSIVE tag can be used to turn specify whether or not subdirectories # should be searched for input files as well. Possible values are YES and NO. # If left blank NO is used. RECURSIVE = NO # The EXCLUDE tag can be used to specify files and/or directories that should # excluded from the INPUT source files. This way you can easily exclude a # subdirectory from a directory tree whose root is specified with the INPUT tag. EXCLUDE = # The EXCLUDE_SYMLINKS tag can be used select whether or not files or # directories that are symbolic links (a Unix filesystem feature) are excluded # from the input. EXCLUDE_SYMLINKS = NO # If the value of the INPUT tag contains directories, you can use the # EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude # certain files from those directories. Note that the wildcards are matched # against the file with absolute path, so to exclude all test directories # for example use the pattern */test/* EXCLUDE_PATTERNS = # The EXAMPLE_PATH tag can be used to specify one or more files or # directories that contain example code fragments that are included (see # the \include command). EXAMPLE_PATH = # If the value of the EXAMPLE_PATH tag contains directories, you can use the # EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp # and *.h) to filter out the source-files in the directories. If left # blank all files are included. EXAMPLE_PATTERNS = # If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be # searched for input files to be used with the \include or \dontinclude # commands irrespective of the value of the RECURSIVE tag. # Possible values are YES and NO. If left blank NO is used. EXAMPLE_RECURSIVE = NO # The IMAGE_PATH tag can be used to specify one or more files or # directories that contain image that are included in the documentation (see # the \image command). IMAGE_PATH = # The INPUT_FILTER tag can be used to specify a program that doxygen should # invoke to filter for each input file. Doxygen will invoke the filter program # by executing (via popen()) the command , where # is the value of the INPUT_FILTER tag, and is the name of an # input file. Doxygen will then use the output that the filter program writes # to standard output. If FILTER_PATTERNS is specified, this tag will be # ignored. INPUT_FILTER = # The FILTER_PATTERNS tag can be used to specify filters on a per file pattern # basis. Doxygen will compare the file name with each pattern and apply the # filter if there is a match. The filters are a list of the form: # pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further # info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER # is applied to all files. FILTER_PATTERNS = # If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using # INPUT_FILTER) will be used to filter the input files when producing source # files to browse (i.e. when SOURCE_BROWSER is set to YES). FILTER_SOURCE_FILES = NO #--------------------------------------------------------------------------- # configuration options related to source browsing #--------------------------------------------------------------------------- # If the SOURCE_BROWSER tag is set to YES then a list of source files will # be generated. Documented entities will be cross-referenced with these sources. # Note: To get rid of all source code in the generated output, make sure also # VERBATIM_HEADERS is set to NO. SOURCE_BROWSER = NO # Setting the INLINE_SOURCES tag to YES will include the body # of functions and classes directly in the documentation. INLINE_SOURCES = NO # Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct # doxygen to hide any special comment blocks from generated source code # fragments. Normal C and C++ comments will always remain visible. STRIP_CODE_COMMENTS = YES # If the REFERENCED_BY_RELATION tag is set to YES (the default) # then for each documented function all documented # functions referencing it will be listed. REFERENCED_BY_RELATION = YES # If the REFERENCES_RELATION tag is set to YES (the default) # then for each documented function all documented entities # called/used by that function will be listed. REFERENCES_RELATION = YES # If the USE_HTAGS tag is set to YES then the references to source code # will point to the HTML generated by the htags(1) tool instead of doxygen # built-in source browser. The htags tool is part of GNU's global source # tagging system (see http://www.gnu.org/software/global/global.html). You # will need version 4.8.6 or higher. USE_HTAGS = NO # If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen # will generate a verbatim copy of the header file for each class for # which an include is specified. Set to NO to disable this. VERBATIM_HEADERS = YES #--------------------------------------------------------------------------- # configuration options related to the alphabetical class index #--------------------------------------------------------------------------- # If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index # of all compounds will be generated. Enable this if the project # contains a lot of classes, structs, unions or interfaces. ALPHABETICAL_INDEX = NO # If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then # the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns # in which this list will be split (can be a number in the range [1..20]) COLS_IN_ALPHA_INDEX = 5 # In case all classes in a project start with a common prefix, all # classes will be put under the same header in the alphabetical index. # The IGNORE_PREFIX tag can be used to specify one or more prefixes that # should be ignored while generating the index headers. IGNORE_PREFIX = #--------------------------------------------------------------------------- # configuration options related to the HTML output #--------------------------------------------------------------------------- # If the GENERATE_HTML tag is set to YES (the default) Doxygen will # generate HTML output. GENERATE_HTML = YES # The HTML_OUTPUT tag is used to specify where the HTML docs will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `html' will be used as the default path. HTML_OUTPUT = html # The HTML_FILE_EXTENSION tag can be used to specify the file extension for # each generated HTML page (for example: .htm,.php,.asp). If it is left blank # doxygen will generate files with .html extension. HTML_FILE_EXTENSION = .html # The HTML_HEADER tag can be used to specify a personal HTML header for # each generated HTML page. If it is left blank doxygen will generate a # standard header. HTML_HEADER = # The HTML_FOOTER tag can be used to specify a personal HTML footer for # each generated HTML page. If it is left blank doxygen will generate a # standard footer. HTML_FOOTER = # The HTML_STYLESHEET tag can be used to specify a user-defined cascading # style sheet that is used by each HTML page. It can be used to # fine-tune the look of the HTML output. If the tag is left blank doxygen # will generate a default style sheet. Note that doxygen will try to copy # the style sheet file to the HTML output directory, so don't put your own # stylesheet in the HTML output directory as well, or it will be erased! HTML_STYLESHEET = # If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, # files or namespaces will be aligned in HTML using tables. If set to # NO a bullet list will be used. HTML_ALIGN_MEMBERS = YES # If the GENERATE_HTMLHELP tag is set to YES, additional index files # will be generated that can be used as input for tools like the # Microsoft HTML help workshop to generate a compressed HTML help file (.chm) # of the generated HTML documentation. GENERATE_HTMLHELP = NO # If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can # be used to specify the file name of the resulting .chm file. You # can add a path in front of the file if the result should not be # written to the html output directory. CHM_FILE = # If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can # be used to specify the location (absolute path including file name) of # the HTML help compiler (hhc.exe). If non-empty doxygen will try to run # the HTML help compiler on the generated index.hhp. HHC_LOCATION = # If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag # controls if a separate .chi index file is generated (YES) or that # it should be included in the master .chm file (NO). GENERATE_CHI = NO # If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag # controls whether a binary table of contents is generated (YES) or a # normal table of contents (NO) in the .chm file. BINARY_TOC = NO # The TOC_EXPAND flag can be set to YES to add extra items for group members # to the contents of the HTML help documentation and to the tree view. TOC_EXPAND = NO # The DISABLE_INDEX tag can be used to turn on/off the condensed index at # top of each HTML page. The value NO (the default) enables the index and # the value YES disables it. DISABLE_INDEX = NO # This tag can be used to set the number of enum values (range [1..20]) # that doxygen will group on one line in the generated HTML documentation. ENUM_VALUES_PER_LINE = 4 # If the GENERATE_TREEVIEW tag is set to YES, a side panel will be # generated containing a tree-like index structure (just like the one that # is generated for HTML Help). For this to work a browser that supports # JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, # Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are # probably better off using the HTML help feature. GENERATE_TREEVIEW = NO # If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be # used to set the initial width (in pixels) of the frame in which the tree # is shown. TREEVIEW_WIDTH = 250 #--------------------------------------------------------------------------- # configuration options related to the LaTeX output #--------------------------------------------------------------------------- # If the GENERATE_LATEX tag is set to YES (the default) Doxygen will # generate Latex output. GENERATE_LATEX = YES # The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `latex' will be used as the default path. LATEX_OUTPUT = latex # The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be # invoked. If left blank `latex' will be used as the default command name. LATEX_CMD_NAME = latex # The MAKEINDEX_CMD_NAME tag can be used to specify the command name to # generate index for LaTeX. If left blank `makeindex' will be used as the # default command name. MAKEINDEX_CMD_NAME = makeindex # If the COMPACT_LATEX tag is set to YES Doxygen generates more compact # LaTeX documents. This may be useful for small projects and may help to # save some trees in general. COMPACT_LATEX = NO # The PAPER_TYPE tag can be used to set the paper type that is used # by the printer. Possible values are: a4, a4wide, letter, legal and # executive. If left blank a4wide will be used. PAPER_TYPE = a4wide # The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX # packages that should be included in the LaTeX output. EXTRA_PACKAGES = # The LATEX_HEADER tag can be used to specify a personal LaTeX header for # the generated latex document. The header should contain everything until # the first chapter. If it is left blank doxygen will generate a # standard header. Notice: only use this tag if you know what you are doing! LATEX_HEADER = # If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated # is prepared for conversion to pdf (using ps2pdf). The pdf file will # contain links (just like the HTML output) instead of page references # This makes the output suitable for online browsing using a pdf viewer. PDF_HYPERLINKS = NO # If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of # plain latex in the generated Makefile. Set this option to YES to get a # higher quality PDF documentation. USE_PDFLATEX = NO # If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. # command to the generated LaTeX files. This will instruct LaTeX to keep # running if errors occur, instead of asking the user for help. # This option is also used when generating formulas in HTML. LATEX_BATCHMODE = NO # If LATEX_HIDE_INDICES is set to YES then doxygen will not # include the index chapters (such as File Index, Compound Index, etc.) # in the output. LATEX_HIDE_INDICES = NO #--------------------------------------------------------------------------- # configuration options related to the RTF output #--------------------------------------------------------------------------- # If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output # The RTF output is optimized for Word 97 and may not look very pretty with # other RTF readers or editors. GENERATE_RTF = NO # The RTF_OUTPUT tag is used to specify where the RTF docs will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `rtf' will be used as the default path. RTF_OUTPUT = rtf # If the COMPACT_RTF tag is set to YES Doxygen generates more compact # RTF documents. This may be useful for small projects and may help to # save some trees in general. COMPACT_RTF = NO # If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated # will contain hyperlink fields. The RTF file will # contain links (just like the HTML output) instead of page references. # This makes the output suitable for online browsing using WORD or other # programs which support those fields. # Note: wordpad (write) and others do not support links. RTF_HYPERLINKS = NO # Load stylesheet definitions from file. Syntax is similar to doxygen's # config file, i.e. a series of assignments. You only have to provide # replacements, missing definitions are set to their default value. RTF_STYLESHEET_FILE = # Set optional variables used in the generation of an rtf document. # Syntax is similar to doxygen's config file. RTF_EXTENSIONS_FILE = #--------------------------------------------------------------------------- # configuration options related to the man page output #--------------------------------------------------------------------------- # If the GENERATE_MAN tag is set to YES (the default) Doxygen will # generate man pages GENERATE_MAN = NO # The MAN_OUTPUT tag is used to specify where the man pages will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `man' will be used as the default path. MAN_OUTPUT = man # The MAN_EXTENSION tag determines the extension that is added to # the generated man pages (default is the subroutine's section .3) MAN_EXTENSION = .3 # If the MAN_LINKS tag is set to YES and Doxygen generates man output, # then it will generate one additional man file for each entity # documented in the real man page(s). These additional files # only source the real man page, but without them the man command # would be unable to find the correct page. The default is NO. MAN_LINKS = NO #--------------------------------------------------------------------------- # configuration options related to the XML output #--------------------------------------------------------------------------- # If the GENERATE_XML tag is set to YES Doxygen will # generate an XML file that captures the structure of # the code including all documentation. GENERATE_XML = NO # The XML_OUTPUT tag is used to specify where the XML pages will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `xml' will be used as the default path. XML_OUTPUT = xml # The XML_SCHEMA tag can be used to specify an XML schema, # which can be used by a validating XML parser to check the # syntax of the XML files. XML_SCHEMA = # The XML_DTD tag can be used to specify an XML DTD, # which can be used by a validating XML parser to check the # syntax of the XML files. XML_DTD = # If the XML_PROGRAMLISTING tag is set to YES Doxygen will # dump the program listings (including syntax highlighting # and cross-referencing information) to the XML output. Note that # enabling this will significantly increase the size of the XML output. XML_PROGRAMLISTING = YES #--------------------------------------------------------------------------- # configuration options for the AutoGen Definitions output #--------------------------------------------------------------------------- # If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will # generate an AutoGen Definitions (see autogen.sf.net) file # that captures the structure of the code including all # documentation. Note that this feature is still experimental # and incomplete at the moment. GENERATE_AUTOGEN_DEF = NO #--------------------------------------------------------------------------- # configuration options related to the Perl module output #--------------------------------------------------------------------------- # If the GENERATE_PERLMOD tag is set to YES Doxygen will # generate a Perl module file that captures the structure of # the code including all documentation. Note that this # feature is still experimental and incomplete at the # moment. GENERATE_PERLMOD = NO # If the PERLMOD_LATEX tag is set to YES Doxygen will generate # the necessary Makefile rules, Perl scripts and LaTeX code to be able # to generate PDF and DVI output from the Perl module output. PERLMOD_LATEX = NO # If the PERLMOD_PRETTY tag is set to YES the Perl module output will be # nicely formatted so it can be parsed by a human reader. This is useful # if you want to understand what is going on. On the other hand, if this # tag is set to NO the size of the Perl module output will be much smaller # and Perl will parse it just the same. PERLMOD_PRETTY = YES # The names of the make variables in the generated doxyrules.make file # are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. # This is useful so different doxyrules.make files included by the same # Makefile don't overwrite each other's variables. PERLMOD_MAKEVAR_PREFIX = #--------------------------------------------------------------------------- # Configuration options related to the preprocessor #--------------------------------------------------------------------------- # If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will # evaluate all C-preprocessor directives found in the sources and include # files. ENABLE_PREPROCESSING = YES # If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro # names in the source code. If set to NO (the default) only conditional # compilation will be performed. Macro expansion can be done in a controlled # way by setting EXPAND_ONLY_PREDEF to YES. MACRO_EXPANSION = NO # If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES # then the macro expansion is limited to the macros specified with the # PREDEFINED and EXPAND_AS_DEFINED tags. EXPAND_ONLY_PREDEF = NO # If the SEARCH_INCLUDES tag is set to YES (the default) the includes files # in the INCLUDE_PATH (see below) will be search if a #include is found. SEARCH_INCLUDES = YES # The INCLUDE_PATH tag can be used to specify one or more directories that # contain include files that are not input files but should be processed by # the preprocessor. INCLUDE_PATH = # You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard # patterns (like *.h and *.hpp) to filter out the header-files in the # directories. If left blank, the patterns specified with FILE_PATTERNS will # be used. INCLUDE_FILE_PATTERNS = # The PREDEFINED tag can be used to specify one or more macro names that # are defined before the preprocessor is started (similar to the -D option of # gcc). The argument of the tag is a list of macros of the form: name # or name=definition (no spaces). If the definition and the = are # omitted =1 is assumed. To prevent a macro definition from being # undefined via #undef or recursively expanded use the := operator # instead of the = operator. PREDEFINED = # If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then # this tag can be used to specify a list of macro names that should be expanded. # The macro definition that is found in the sources will be used. # Use the PREDEFINED tag if you want to use a different macro definition. EXPAND_AS_DEFINED = # If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then # doxygen's preprocessor will remove all function-like macros that are alone # on a line, have an all uppercase name, and do not end with a semicolon. Such # function macros are typically used for boiler-plate code, and will confuse # the parser if not removed. SKIP_FUNCTION_MACROS = YES #--------------------------------------------------------------------------- # Configuration::additions related to external references #--------------------------------------------------------------------------- # The TAGFILES option can be used to specify one or more tagfiles. # Optionally an initial location of the external documentation # can be added for each tagfile. The format of a tag file without # this location is as follows: # TAGFILES = file1 file2 ... # Adding location for the tag files is done as follows: # TAGFILES = file1=loc1 "file2 = loc2" ... # where "loc1" and "loc2" can be relative or absolute paths or # URLs. If a location is present for each tag, the installdox tool # does not have to be run to correct the links. # Note that each tag file must have a unique name # (where the name does NOT include the path) # If a tag file is not located in the directory in which doxygen # is run, you must also specify the path to the tagfile here. TAGFILES = # When a file name is specified after GENERATE_TAGFILE, doxygen will create # a tag file that is based on the input files it reads. GENERATE_TAGFILE = # If the ALLEXTERNALS tag is set to YES all external classes will be listed # in the class index. If set to NO only the inherited external classes # will be listed. ALLEXTERNALS = NO # If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed # in the modules index. If set to NO, only the current project's groups will # be listed. EXTERNAL_GROUPS = YES # The PERL_PATH should be the absolute path and name of the perl script # interpreter (i.e. the result of `which perl'). PERL_PATH = /usr/bin/perl #--------------------------------------------------------------------------- # Configuration options related to the dot tool #--------------------------------------------------------------------------- # If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will # generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base # or super classes. Setting the tag to NO turns the diagrams off. Note that # this option is superseded by the HAVE_DOT option below. This is only a # fallback. It is recommended to install and use dot, since it yields more # powerful graphs. CLASS_DIAGRAMS = YES # If set to YES, the inheritance and collaboration graphs will hide # inheritance and usage relations if the target is undocumented # or is not a class. HIDE_UNDOC_RELATIONS = YES # If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is # available from the path. This tool is part of Graphviz, a graph visualization # toolkit from AT&T and Lucent Bell Labs. The other options in this section # have no effect if this option is set to NO (the default) HAVE_DOT = NO # If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen # will generate a graph for each documented class showing the direct and # indirect inheritance relations. Setting this tag to YES will force the # the CLASS_DIAGRAMS tag to NO. CLASS_GRAPH = YES # If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen # will generate a graph for each documented class showing the direct and # indirect implementation dependencies (inheritance, containment, and # class references variables) of the class with other documented classes. COLLABORATION_GRAPH = YES # If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen # will generate a graph for groups, showing the direct groups dependencies GROUP_GRAPHS = YES # If the UML_LOOK tag is set to YES doxygen will generate inheritance and # collaboration diagrams in a style similar to the OMG's Unified Modeling # Language. UML_LOOK = NO # If set to YES, the inheritance and collaboration graphs will show the # relations between templates and their instances. TEMPLATE_RELATIONS = NO # If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT # tags are set to YES then doxygen will generate a graph for each documented # file showing the direct and indirect include dependencies of the file with # other documented files. INCLUDE_GRAPH = YES # If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and # HAVE_DOT tags are set to YES then doxygen will generate a graph for each # documented header file showing the documented files that directly or # indirectly include this file. INCLUDED_BY_GRAPH = YES # If the CALL_GRAPH and HAVE_DOT tags are set to YES then doxygen will # generate a call dependency graph for every global function or class method. # Note that enabling this option will significantly increase the time of a run. # So in most cases it will be better to enable call graphs for selected # functions only using the \callgraph command. CALL_GRAPH = NO # If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen # will graphical hierarchy of all classes instead of a textual one. GRAPHICAL_HIERARCHY = YES # If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES # then doxygen will show the dependencies a directory has on other directories # in a graphical way. The dependency relations are determined by the #include # relations between the files in the directories. DIRECTORY_GRAPH = YES # The DOT_IMAGE_FORMAT tag can be used to set the image format of the images # generated by dot. Possible values are png, jpg, or gif # If left blank png will be used. DOT_IMAGE_FORMAT = png # The tag DOT_PATH can be used to specify the path where the dot tool can be # found. If left blank, it is assumed the dot tool can be found in the path. DOT_PATH = # The DOTFILE_DIRS tag can be used to specify one or more directories that # contain dot files that are included in the documentation (see the # \dotfile command). DOTFILE_DIRS = # The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width # (in pixels) of the graphs generated by dot. If a graph becomes larger than # this value, doxygen will try to truncate the graph, so that it fits within # the specified constraint. Beware that most browsers cannot cope with very # large images. MAX_DOT_GRAPH_WIDTH = 1024 # The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height # (in pixels) of the graphs generated by dot. If a graph becomes larger than # this value, doxygen will try to truncate the graph, so that it fits within # the specified constraint. Beware that most browsers cannot cope with very # large images. MAX_DOT_GRAPH_HEIGHT = 1024 # The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the # graphs generated by dot. A depth value of 3 means that only nodes reachable # from the root by following a path via at most 3 edges will be shown. Nodes # that lay further from the root node will be omitted. Note that setting this # option to 1 or 2 may greatly reduce the computation time needed for large # code bases. Also note that a graph may be further truncated if the graph's # image dimensions are not sufficient to fit the graph (see MAX_DOT_GRAPH_WIDTH # and MAX_DOT_GRAPH_HEIGHT). If 0 is used for the depth value (the default), # the graph is not depth-constrained. MAX_DOT_GRAPH_DEPTH = 0 # Set the DOT_TRANSPARENT tag to YES to generate images with a transparent # background. This is disabled by default, which results in a white background. # Warning: Depending on the platform used, enabling this option may lead to # badly anti-aliased labels on the edges of a graph (i.e. they become hard to # read). DOT_TRANSPARENT = NO # Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output # files in one run (i.e. multiple -o and -T options on the command line). This # makes dot run faster, but since only newer versions of dot (>1.8.10) # support this, this feature is disabled by default. DOT_MULTI_TARGETS = NO # If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will # generate a legend page explaining the meaning of the various boxes and # arrows in the dot generated graphs. GENERATE_LEGEND = YES # If the DOT_CLEANUP tag is set to YES (the default) Doxygen will # remove the intermediate dot files that are used to generate # the various graphs. DOT_CLEANUP = YES #--------------------------------------------------------------------------- # Configuration::additions related to the search engine #--------------------------------------------------------------------------- # The SEARCHENGINE tag specifies whether or not a search engine should be # used. If set to NO the values of all tags below this one will be ignored. SEARCHENGINE = NO gle-graphics-4.2.4c/src/gui/drawingobject.h0000664000000000000000000001642311652756175017324 0ustar rootroot/*********************************************************************************** * QGLE - A Graphical Interface to GLE * * Copyright (C) 2006 A. S. Budden & J. Struyf * * * * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * * * Also add information on how to contact you by electronic and paper mail. * ***********************************************************************************/ #ifndef _GLEDRAWINGOBJECT_H #define _GLEDRAWINGOBJECT_H #include #include "component.h" #include "snapline.h" #include "qgle_definitions.h" #include "qgle_statics.h" #include "gledrawing.h" struct PropertyDescriptor { QString description; QVariant::Type type; QVariant defaultValue; QVariant validValues; }; //! GLEDrawingObject class: base class for all drawing objects class GLEDrawingObject : public GLEComponent { Q_OBJECT //! Allow daughters access to private parts (so to speak) friend class GLELine; friend class GLECircle; friend class GLEEllipse; friend class GLEArc; friend class GLEAmove; friend class GLEPolarArray; friend class GLEText; public: //! The class constructor GLEDrawingObject(double resolution, QSize imageSize, GLEDrawingArea* area); enum TransformModes { TransformModeNone, TransformModeConstrained, TransformModeFree }; //! The list of all valid properties that any object can have enum Properties { // Common to most objects FillColour, LineColour, LineWidth, LineStyle, // For text objects Text, FontName, FontStyle, FontSize, Alignment, RefPointName, // Centres for arcs and circles? CircleCentre, // Centre of the bounding box ObjectCentre, // Lines ArrowHeadPresence, ArrowHeadStyle, ArrowHeadSize, StartPoint, EndPoint, // Arcs ArcStartAngle, ArcEndAngle, // Arcs & Circles Radius, // Ellipses MajorAxisRadius, MinorAxisRadius, MajorAxisAngle, // May change this to be "size" Width, Height, NumberOfProperties // This will hold the number of valid properties // e.g. for(i=0;i getTangents(QPointF p) = 0; virtual bool hasTangents() = 0; virtual QList getPerpendiculars(QPointF p) = 0; virtual bool hasPerpendiculars() = 0; //! Scaling void linearTransformPt(int pt, const GLELinearEquation& ex, const GLELinearEquation& ey, bool update = true); virtual int supportedTransformMode(); virtual bool findScaleOrigin(const QPointF& pt, QPointF* origin, int handle); virtual void linearTransform(const GLELinearEquation& ex, const GLELinearEquation& ey); virtual void linearTransformDone(); //! Moving and rotating virtual void moveBy(QPointF offset) = 0; virtual void rotateBy(double radians) = 0; //! Set the reference point of, e.g., text objects or GLE object blocks (tl,bl,tc,bc,tr,br,...) virtual bool setReferencePoint(const QPointF& pt); //! Update distance to point given a new point of the object static void distanceToPointUpdate(double x, double y, const QPointF& p, double* minDist, QPointF *nearestPoint); QList getOTracks(); //! Check whether the object is an amove bool isAmove(); //! Function to draw the standard osnap handles void drawOSnaps(QPainter *p); //! Function to determine the distance to the nearest priority osnap handle (e.g., scale handles for arc) virtual double nearestPriorityOSnap(const QPointF& pt, QPointF *osnap); //! Function to determine the distance to the nearest standard osnap handle virtual double nearestOSnap(const QPointF& p, QPointF *osnap); //! Function to set a given property to a given value void setProperty(int propertyIndex, QVariant value); void setPropertyNoUpdate(int propertyIndex, QVariant value); //! Function to get the value of a property QVariant getProperty(int propertyIndex); //! Make this object selected void setSelected(bool sel); //! Is this object selected? bool isSelected(); void clearOTracks(); virtual void createOTracks() = 0; QPair updateOTracks(QPointF cursorPosition); //! Function to add osnaps relative to a given point virtual void addRelativeOSnaps(QPointF p) = 0; void clearRelativeOSnaps(); QList< QPair > getRelativeOSnaps(); inline GLEDrawObject* getGLEObject() { return gleObject.get(); } inline void setGLEObject(GLEDrawObject* obj) { gleObject = obj; } inline QSet getValidProperties() { return validProperties; } PropertyDescriptor getPropertyDescription(int property); //! Set text properties void setTextProperties(); //! Set color property void setColorProperty(); //! Set line properties void setLineProperties(); //! Set shape properties void setShapeProperties(); //! Set pen properties for given GLE object void setSimplePenProperties(QPen& pen); //! Set pen properties for given GLE object void setPenProperties(QPen& pen); //! Return GLEInterface inline GLEInterface* getGLEInterface() { return drawingArea->getGLEInterface(); } public slots: virtual void imageRendered(QImage newImage); signals: void propertyChanged(int propertyIndex); protected: //! Contains the standard osnap handles QList< QPair > osnapHandles; //! Contains the relative osnap points QList< QPair > relativeOSnaps; //! The list of properties for the object QHash properties; QHash propertyDescriptions; void initialiseProperties(); //! The set of properties that have a meaning for this object QSet validProperties; //! Is the object selected? bool selected; //! Is this an amove? bool amove; QList otrackList; QPointF scaleOrigin; GLERC gleObject; QHash fontList; QList getFontList(); QList getFontStyles(); GLEDrawingArea* drawingArea; }; #endif gle-graphics-4.2.4c/src/gui/serverthread.cpp0000664000000000000000000003661411677267041017533 0ustar rootroot/*********************************************************************************** * QGLE - A Graphical Interface to GLE * * Copyright (C) 2006 A. S. Budden & J. Struyf * * * * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * * * Also add information on how to contact you by electronic and paper mail. * ***********************************************************************************/ #include #include #include #include "qgs.h" #include "serverthread.h" #include "drawingobject.h" #include "math.h" #define DIR_SEP "/" #include "mainwindow.h" #include "qgle_statics.h" #include "../config.h" #include GLEServerThread::GLEServerThread(QObject *parent, quint16 port) : QThread(parent) { // Just save the requested port this->port = port; } GLEServerThread::~GLEServerThread() { // Use a locker to get access to shared variables, // set abort=true and wait for the server to die mutex.lock(); abort = true; mutex.unlock(); messageWaitCondition.wakeAll(); wait(); } void GLEServerThread::initialise() { // Make sure abort is safe abort = false; // Start the processing start(LowPriority); } void GLEServerThread::run() { // This is the bit that runs in a different thread // Set up some handy regexps QRegExp glefile(".*glefile: *\"([^\"]*)\".*"); QRegExp rxdpi(".*dpi: *\"([^\"]*)\".*"); QString rxdone = tr("*DONE*"); // Create a new server and listen on the requested port QTcpServer server; if (!server.listen(QHostAddress::LocalHost, port)) { emit serverMessage(tr("Unable to start the server")); return; } emit serverMessage(tr("Server listening")); // Loop forever forever { // Check whether we should quit mutex.lock(); if (abort) { mutex.unlock(); return; } mutex.unlock(); // Wait for a new connection for 500ms if (server.waitForNewConnection(500)) { // Get the connection QTcpSocket *clientConnection = server.nextPendingConnection(); qint64 bytesread; char buffer[2000]; QString gleCommand; // While we are connected bool done = false; while(!done && clientConnection->state() == QAbstractSocket::ConnectedState) { // Check whether we should quit mutex.lock(); if (abort) { mutex.unlock(); delete clientConnection; return; } mutex.unlock(); // See whether there's anything to read if(clientConnection->waitForReadyRead(500)) { // There is, so find out how much bytesread = clientConnection->bytesAvailable(); // and read it clientConnection->read(buffer, bytesread); buffer[bytesread] = 0; // append it to our gleCommand buffer gleCommand += buffer; } if(gleCommand.indexOf(rxdone) != -1) { done = true; } } // Break it up into separate lines QStringList parts = gleCommand.split(QRegExp("[\\r\\n]+")); QString part, glefname; // Find the bits we're interested in foreach(part, parts) { if(rxdpi.exactMatch(part)) { // do something with dpi? } if(glefile.exactMatch(part)) { glefname = glefile.capturedTexts()[1]; } } // Now make QGLE render this file emit gleMinusPRunned(glefname); // Send console output back to gle mutex.lock(); done = false; while (!done) { if (abort) { mutex.unlock(); delete clientConnection; return; } if (message.length() != 0) { done = true; clientConnection->write(message.toUtf8()); clientConnection->waitForBytesWritten(-1); message = ""; } else { messageWaitCondition.wait(&mutex); } } mutex.unlock(); // Delete the connection and loop round to wait for a new one delete(clientConnection); } } } //! Send a message back to GLE void GLEServerThread::sendMessageToGLEMinusP(const QString& msg, bool) { mutex.lock(); // Added space because empty message means no message yet in above code message = msg + " "; mutex.unlock(); messageWaitCondition.wakeAll(); } GLERenderThread::GLERenderThread(QObject *parent) : QThread(parent) { abort = false; restart = false; interpreter = NULL; } GLERenderThread::~GLERenderThread() { mutex.lock(); abort = true; condition.wakeOne(); mutex.unlock(); wait(); } //! Render GLE script void GLERenderThread::renderGLEToImage(GLEScript* script, const QString& outFile, double dpi, const QSize& area) { QMutexLocker locker(&mutex); todo = ToDoRenderGLE; gleScript = script; outFileName = outFile; outFileDPI = dpi; outFileArea = area; if (!isRunning()) { start(); } else { restart = true; condition.wakeOne(); } } void GLERenderThread::renderOutputFromMemoryToImage(GLEScript* script, const QString& epsFile, double dpi, const QSize& area) { QMutexLocker locker(&mutex); #ifdef HAVE_POPPLER string* bytesPDF = script->getRecordedBytesBuffer(GLE_DEVICE_PDF); string* bytesEPS = script->getRecordedBytesBuffer(GLE_DEVICE_EPS); if (!bytesPDF->empty()) { todo = ToDoRenderPDFFromMemory; } else if (!bytesEPS->empty()) { todo = ToDoRenderEPSFromMemory; } else { QImage emptyImage; emit renderComplete(emptyImage); return; } #else todo = ToDoRenderEPSFromMemory; #endif gleScript = script; outFileName = epsFile; outFileDPI = dpi; outFileArea = area; if (!isRunning()) { start(); } else { restart = true; condition.wakeOne(); } } //! Convert an EPS file to an image (dpi == 0 -> autoscale) void GLERenderThread::renderEPSFromFileToImage(const QString& fname, double dpi, const QSize& area) { QMutexLocker locker(&mutex); todo = ToDoRenderEPSFromFile; outFileName = fname; outFileDPI = dpi; outFileArea = area; if (!isRunning()) { start(); } else { restart = true; condition.wakeOne(); } } void GLERenderThread::run() { qRegisterMetaType("QImage"); forever { mutex.lock(); if (abort) { mutex.unlock(); return; } int myToDo = todo; QString myOutFileName = outFileName; double myOutFileDPI = outFileDPI; QSize myOutFileArea = outFileArea; GLERC myGLEScript; if (myToDo == ToDoRenderGLE || myToDo == ToDoRenderEPSFromMemory || myToDo == ToDoRenderPDFFromMemory) { // script is NULL if render EPS myGLEScript = gleScript; } mutex.unlock(); // do processing if (myToDo == ToDoRenderGLE) { emit serverMessage(tr("Rendering GLE file")); GLEInterface* iface = myGLEScript->getGLEInterface(); if (myOutFileDPI != 0.0) { std::ostringstream resolutionString; resolutionString << (int)floor(myOutFileDPI + 0.5); iface->setCmdLineOptionString("resolution", resolutionString.str().c_str()); } bool renderPoppler = false; int device = GLE_DEVICE_EPS; #ifdef HAVE_POPPLER if (iface->hasCmdLineOptionString("cairo")) { renderPoppler = true; device = GLE_DEVICE_PDF; } #endif iface->renderGLE(myGLEScript.get(), myOutFileName.toLatin1().constData(), device, true); if (iface->getOutput()->getExitCode() == 0) { if (renderPoppler) { myToDo = ToDoRenderPDFFromMemory; } else { myToDo = ToDoRenderEPSFromMemory; } } else { QImage emptyImage; emit renderComplete(emptyImage); } } if (myToDo == ToDoRenderEPSFromMemory) { renderEPSToImageInternalFromMemory(myGLEScript.get(), myOutFileDPI, myOutFileArea); } if (myToDo == ToDoRenderPDFFromMemory) { renderPDFToImageInternalFromMemory(myGLEScript.get(), myOutFileDPI, myOutFileArea); } if (myToDo == ToDoRenderEPSFromFile) { renderEPSToImageInternalFromFile(myOutFileName, myOutFileDPI, myOutFileArea); } mutex.lock(); if (!restart) { condition.wait(&mutex); } restart = false; mutex.unlock(); } } QString& GLERenderThread::getGhostScriptOutput() { return GhostScriptOutput; } GSInterpreterLib* GLERenderThread::setupInterpreter(const QSize& area, double b1, double b2, double width, double height, double& dpi, bool& newDPI) { // QString gsError = QString("%1 %2 wd %3 %4 dpi %5").arg(b1).arg(b2).arg(width).arg(height).arg(dpi); // qDebug() << "*** Origin: " << gsError; // Auto scale new files to size of drawing area if (dpi == 0.0) { dpi = QGLE::computeAutoScaleDPIFromPts(area, 5, width, height); newDPI = true; } // Create the interpreter object and set a few parameters GSInterpreterLib *interpreter = new GSInterpreterLib(); interpreter->setOrigin(b1, b2); interpreter->setMedia("a4"); interpreter->setMagnify(1); interpreter->setOrientation(0); interpreter->setDPI(dpi); int img_wd = GLEBBoxToPixels(dpi, width); int img_hi = GLEBBoxToPixels(dpi, height); interpreter->setSize(img_wd, img_hi); interpreter->setAABits(4,4); return interpreter; } void GLERenderThread::renderEPSDone(GSInterpreterLib* interpreter, double dpi, bool newDPI) { QString gsError; GhostScriptOutput = interpreter->getOutpuStreamText(); if (interpreter->hasError()) { const GSError& e = interpreter->getError(); gsError = QString("Ghostscript error: %1 %2").arg(e.getCode()).arg(e.getName()); qDebug() << "Error: " << gsError; } QImage image(interpreter->getImage()); delete interpreter; // Delete interpreter should go before different signals // otherwise recursive calls to this function may cause multiple instantiations of // libgs, which is not allowed and results in crashes if (gsError != "") { emit serverError(gsError); } if (newDPI) { emit dpiChanged(dpi); } emit renderComplete(image); } //! Convert an EPS file to an image (dpi == 0 -> autoscale) void GLERenderThread::renderEPSToImageInternalFromFile(const QString& fname, double dpi, const QSize& area) { // Check that the file can be opened QFile file(fname); if (!file.open( QIODevice::ReadOnly )) { QImage emptyImage; emit renderComplete(emptyImage); return; } // Rendering EPS has started emit serverMessage(tr("Rendering PostScript")); // Scan through file for BoundingBox and set width and height double b1 = 0.0; double b2 = 0.0; double b3 = 0.0; double b4 = 0.0; double width = 0.0; double height = 0.0; QRegExp rxbb("^%%BoundingBox:\\s+(\\S+)\\s+(\\S+)\\s+(\\S+)\\s+(\\S+)\\s*$"); QRegExp rxbbh("^%%HiResBoundingBox:\\s+(\\S+)\\s+(\\S+)\\s+(\\S+)\\s+(\\S+)\\s*$"); QTextStream in(&file); while (!in.atEnd()) { QString line = in.readLine(); if (rxbb.exactMatch(line)) { b1 = (double)rxbb.capturedTexts()[1].toInt(); b2 = (double)rxbb.capturedTexts()[2].toInt(); b3 = (double)rxbb.capturedTexts()[3].toInt(); b4 = (double)rxbb.capturedTexts()[4].toInt(); width = b3-b1+1; height = b4-b2+1; if (!in.atEnd()) { // GLE writes a HiResBoundingBox right after the BoundingBox line = in.readLine(); if (rxbbh.exactMatch(line)) { b1 = rxbb.capturedTexts()[1].toDouble(); b2 = rxbb.capturedTexts()[2].toDouble(); b3 = rxbb.capturedTexts()[3].toDouble(); b4 = rxbb.capturedTexts()[4].toDouble(); width = b3-b1; height = b4-b2; } } break; } } bool newDPI = false; GSInterpreterLib* interpreter = setupInterpreter(area, b1, b2, width, height, dpi, newDPI); // Run the interpreter file.reset(); interpreter->run(file); file.close(); renderEPSDone(interpreter, dpi, newDPI); } void GLERenderThread::renderEPSToImageInternalFromMemory(GLEScript* script, double dpi, const QSize& area) { // Rendering EPS has started emit serverMessage(tr("Rendering PostScript")); // Render EPS from memory GLEPoint bb(script->getBoundingBox()); GLEPoint origin(script->getBoundingBoxOrigin()); bool newDPI = false; GSInterpreterLib* interpreter = setupInterpreter(area, origin.getX(), origin.getY(), bb.getX(), bb.getY(), dpi, newDPI); string* bytes = script->getRecordedBytesBuffer(GLE_DEVICE_EPS); interpreter->run(bytes); renderEPSDone(interpreter, dpi, newDPI); } void gle_write_data_vector(void* closure, char* data, int length) { std::vector* vec = (std::vector*)closure; vec->reserve(vec->size() + length); for (int i = 0; i < length; ++i) { vec->push_back((unsigned char)data[i]); } } #ifdef HAVE_POPPLER void GLERenderThread::renderPDFToImageInternalFromMemory(GLEScript* script, double dpi, const QSize& area) { // Auto scale new files to size of drawing area bool newDPI = false; if (dpi == 0.0) { GLEPoint bb(script->getBoundingBox()); dpi = QGLE::computeAutoScaleDPIFromPts(area, 5, bb.getX(), bb.getY()); newDPI = true; } string* bytes = script->getRecordedBytesBuffer(GLE_DEVICE_PDF); std::vector imageData; GLEInterface* iface = script->getGLEInterface(); iface->convertPDFToImage((char*)bytes->c_str(), bytes->size(), dpi, GLE_DEVICE_PNG, 0, gle_write_data_vector, &imageData); QImage image; image.loadFromData(&imageData[0], imageData.size(), "PNG"); if (newDPI) { emit dpiChanged(dpi); } emit renderComplete(image); } #else void GLERenderThread::renderPDFToImageInternalFromMemory(GLEScript* /* script */, double /* dpi */, const QSize& /* area */) { } #endif void GLERenderThread::startRender(const GLERectangle& rect, double dpi) { // Create the interpreter object and set a few parameters interpreter = new GSInterpreterLib(); interpreter->setOrigin(0, 0); interpreter->setMedia("a4"); interpreter->setMagnify(1); interpreter->setOrientation(0); interpreter->setDPI(dpi); interpreter->setAlpha(true); double width = 72*rect.getWidth()/CM_PER_INCH+2; double height = 72*rect.getHeight()/CM_PER_INCH+2; int img_wd = GLEBBoxToPixels(dpi, width); int img_hi = GLEBBoxToPixels(dpi, height); interpreter->setSize(img_wd, img_hi); interpreter->setAABits(4,4); // Run the interpreter interpreter->startRender(); } void GLERenderThread::nextRender(const char* postscriptCode) { interpreter->nextRender(postscriptCode); } void GLERenderThread::endRender(QImage* result) { // End render and copy image interpreter->endRender(); *result = interpreter->getImage(); // Copy Ghostscript's output stream QString gsError; GhostScriptOutput = interpreter->getOutpuStreamText(); if (interpreter->hasError()) { const GSError& e = interpreter->getError(); gsError = QString("Ghostscript error: %1 %2").arg(e.getCode()).arg(e.getName()); qDebug() << "Error: " << gsError; } // Clean up delete interpreter; interpreter = NULL; // Emit signals if (gsError != "") { emit serverError(gsError); } } gle-graphics-4.2.4c/src/gui/snapline.h0000664000000000000000000000567411405446017016304 0ustar rootroot/*********************************************************************************** * QGLE - A Graphical Interface to GLE * * Copyright (C) 2006 A. S. Budden & J. Struyf * * * * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * * * Also add information on how to contact you by electronic and paper mail. * ***********************************************************************************/ #ifndef _SNAPLINE_H #define _SNAPLINE_H #include "component.h" class SnapLine : public GLEComponent { Q_OBJECT public: enum Points { StartPoint, EndPoint, Angle }; SnapLine(double resolution, QSize imageSize, QObject *parent = 0); bool isEqual(SnapLine sn); bool isEqual(SnapLine *sn); QString getKey(); //! Draw the line on the provided painter void draw(QPainter *p); //! Return the shortest distance between a given point and the line double distanceToPoint(const QPointF& p, QPointF *nearestPoint); //! Set one of the enumerated points void setPoint(int pointChoice, const QPointF& p, bool update = true); //! Find points where a line intersects the line // If vertical = true, m contains 'x' QList intersections(double qtm, double qtc, bool vertical = false); QList intersections(QPointF qtp1, double angle); QList intersections(QPointF qtp1, QPointF qtp2); void deactivate(); bool isActive(); void activate(); private slots: //! Update the painter path when the resolution or start/end points change void updateLine(); private: bool active; bool ready; QString key; bool hitsRightBorder(QPointF *pt); bool hitsLeftBorder(QPointF *pt); bool hitsTopBorder(QPointF *pt); bool hitsBottomBorder(QPointF *pt); }; #endif gle-graphics-4.2.4c/src/gui/ellipse.h0000664000000000000000000000710711405446017016121 0ustar rootroot/*********************************************************************************** * QGLE - A Graphical Interface to GLE * * Copyright (C) 2006 A. S. Budden & J. Struyf * * * * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * * * Also add information on how to contact you by electronic and paper mail. * ***********************************************************************************/ #ifndef _GLEELLIPSE_H #define _GLEELLIPSE_H #include "drawingobject.h" //! Class describing a ellipse drawing object class GLEEllipse : public GLEDrawingObject { Q_OBJECT public: //! Enumeration of points used to describe a ellipse enum Points { CentrePoint, RadiusX, RadiusY, Angle, // RADIANS! BBoxCorner, // Used to automatically choose the corner BBoxCornerA, // These ignore the angle! BBoxCornerB }; //! Constructor used for initialising variables and connections GLEEllipse(double resolution, QSize imageSize, GLEDrawingArea *area); //! Draw the ellipse on the provided painter void draw(QPainter *p); //! Return the shortest distance between a given point and the ellipse double distanceToPoint(const QPointF& p, QPointF *nearestPoint); //! Set one of the enumerated points void setPoint(int pointChoice, const QPointF& p, bool update = true); //! Find points where a line intersects the ellipse // If vertical = true, m contains 'x' QList intersections(double qtm, double qtc, bool vertical = false); QList intersections(QPointF qtp1, QPointF qtp2); QList intersections(QPointF qtp1, double angle); //! Is the point inside the object? bool isInside(QPointF p); void addRelativeOSnaps(QPointF p); QList getTangents(QPointF p); bool hasTangents(); QList getPerpendiculars(QPointF p); bool hasPerpendiculars(); void createOTracks(); //! Return the ellipse's bounding rectangle in Qt coordinates QRectF ellipseRect(); int supportedTransformMode(); void linearTransform(const GLELinearEquation& ex, const GLELinearEquation& ey); void moveBy(QPointF offset); void rotateBy(double radians); private: void updateBBox(); void updateFromBBox(); void updateEquationParameters(); private slots: //! Update the painter path when the resolution or start/end points change void updateEllipse(); void updateFromProperty(int property); }; #endif gle-graphics-4.2.4c/src/gui/mainwindow.h0000664000000000000000000003701011652073536016642 0ustar rootroot/*********************************************************************************** * QGLE - A Graphical Interface to GLE * * Copyright (C) 2006 A. S. Budden & J. Struyf * * * * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * * * Also add information on how to contact you by electronic and paper mail. * ***********************************************************************************/ #ifndef __GLEMAINWINDOW_H #define __GLEMAINWINDOW_H #include #include "qgs.h" #include "serverthread.h" #include "drawingobject.h" #include "qgle_definitions.h" #include "fileinfo.h" #include "about.h" #include "propertyeditor.h" #include "objectblocks.h" #include "../gle/gle-interface/gle-interface.h" class GLESettings; class ConsoleWindow; class EvaluatorDialog; class QDockWidget; //! Class implementing Main QGLE Window /*! * This class is responsible for controlling the graphical user * interface, setting up signals & slots, providing menu bars and so * on. Like most of the classes in this project, it is a descendant of * QObject, so has access to internationalisation functions etc. */ class GLEMainWindow : public QMainWindow { // The QT moc macro Q_OBJECT public: //! Constructor /*! * Responsible for generation of the Window and initialisation * of children, signals & slots. */ GLEMainWindow(int argc, char *argv[]); //! Return the GLE version QString getGLEVersion(); QString getGLEBuildDate(); //! Return the GLE version const char* getGLETop(); //! Return the current compatibility mode QString getCompatibility(); //! Return true if in full page mode bool isFullPage(); //! Return true if in landscape mode bool isLandscape(); //! Return the GS version inline const QString& getGsLibVersion() { return GsLibVersionNumber; } //! Render Postscript code to QImage void renderPostscript(const char* ps, const GLERectangle& rect, double dpi, QImage* result); //! Render an EPS file from currentFile.epsFile() void renderEPS(); //! Render an EPS file from currentFile.epsFile() void renderEPS(double dpi); //! Render an EPS file void renderEPS(QString epsFile, double dpi, const QSize& area); // Refresh GLEDrawing's display void refreshDisplay(); //! Select the pointer tool from the edit mode toolbar void selectPointerTool(); protected: //! Called when QGLE is closing void closeEvent(QCloseEvent *event); //! Called when a MIME object is dragged onto window void dragEnterEvent(QDragEnterEvent *event); //! Called when a MIME object is dropped on the window void dropEvent(QDropEvent *event); //! Called when the user presses a key void keyPressEvent(QKeyEvent *event); //! Called when the user releases a key void keyReleaseEvent(QKeyEvent *event); private slots: //! Display an About Box void about(); //! Open the GLE website void showGLEWebsite(); //! Open a given URL void showURL(const QUrl&); //! Open the GLE manual void showGLEManual(); //! Abort QGLE void abort(); //! Display a server status message void updateServerStatus(QString message); //! Display an error message in the console void showConsoleError(QString message); //! Start or stop the server void serverToggle(bool switchOn); //! Start the server void startServer(); //! Stop the server void stopServer(); //! Initialize render thread void initRenderThread(); //! Display the settings dialogue box void openSettingsDialogue(); //! Display GhostScript's log dialogue box void openGhostScriptLogDialogue(); //! Display 3D viewer void openView3DDialogue(); //! Display the expression evaluator dialogue box void openEvaluator(); //! Display export dialogue box void openExportDialogue(); //! Display print dialogue box void openPrintDialogue(); //! Open download dialog box void openDownloadDialogue(); //! Open file in new window void openFileInNewWindow(); //! Browse the folder containing the current script void browseScriptFolder(); //! Open an existing file void openFile(QString fileName = QString(), bool isOnStartup = false); //! Open a recently opened file void openRecentFile(); //! Open a related file void openRelatedFile(); //! Create "open related file" submenu void createEditFileMenu(); //! Create "open in editor" popup submenu void createEditFilePopup(const QPoint& pos); //! Create a new file void newFile(); //! Save the file void save(); //! Save the file under a new name void saveAs(); //! Save the file under the given name void save(QString fileName); //! Action causing the current bitmap to be copied to the clipboard void copyBitmap(); //! Action causing the current figure to be copied to the clipboard as PDF void copyPDF(); //! Action causing the current figure to be copied to the clipboard as EMF void copyEMF(); //! Switch to preview mode void previewModeToggle(bool state); //! Switch to edit mode void editModeToggle(bool state); //! Switch to pointer tool void pointerToolToggle(bool state); //! Switch to line tool void lineToolToggle(bool state); void textToolToggle(bool state); void tanLineToolToggle(bool state); void perpLineToolToggle(bool state); //! Switch to circle tool void circleToolToggle(bool state); //! Switch to ellipse tool void ellipseToolToggle(bool state); //! Switch to move tool void moveToolToggle(bool state); //! Switch to arc tool void arcToolToggle(bool state); //! Switch off all tools void noToolEnable(); //! Reload file void reloadFile(); //! Zoom in void zoomIn(); //! Zoom out void zoomOut(); //! Zoom automatically void zoomAuto(); //! Zoom worker function (called by zoomIn() and zoomOut()) void zoom(double dpi); //! Open current file in text editor void openInTextEditor(); //! Get the current file's data (name, .eps, modification time, ...) inline GLEFileInfo* getCurrentFile() { return ¤tFile[currentMode]; } //! Get non-current mode GLEFileInfo object GLEFileInfo* getNonCurrentModeFileInfo(); //! Set temp files correctly for GLE file void initTempFilesGLE(); //! Update currentFile on change PreviewMode <-> EditMode int updateFileInfoOnChangeMode(int mode); public slots: //! Update the coordinate display void updateMousePosition(QPointF gle = QPointF(-1.0,-1.0)); //! Process newly rendered image (from QGLE) void renderComplete(QImage image); //! Set the base point for relative coordinates void setRelativeBasePoint(QPointF gle); //! Display a status bar message void statusBarMessage(QString msg); //! Start or stop the file monitor void updateFileMonitor(bool state); //! Check whether the file has changed void checkForFileUpdates(); //! Enable or disable the save menu option void setSaveEnable(bool state); //! Update the status bar display of resolution void updateDPIDisplay(double newDPI); //! Polar snap toggle void polarSnapToggle(bool state); //! Polar track toggle void polarTrackToggle(bool state); //! Emulate GLE version changed void emulateGLEVersionChanged(int); //! Preview page size changed void previewPageSizeChanged(int); signals: //! A new tool has been selected void toolSelected(int newTool); //! The image has changed, so update the drawing void imageChanged(QImage newImage); //! There's a new EPS file to be rendered void newEPS(QString file, double dpi, bool autoscale); private: //! Create the actions for use in menus and toolbars. void createActions(); //! Create the menus. void createMenus(); //! Create a simple status bar at the bottom of the screen. void createStatusBar(); //! Create the tool bars void createToolBars(); //! Create the dock windows void createDockWindows(); //! Add the edit mode toolbars void createEditModeToolBars(); //! Destroy the edit mode toolbars void destroyEditModeToolBars(); //! Show/hide and enable/disable edit mode toolbars void enableEditModeToolBars(bool enable); //! Create a temporary file QString createTempFile(QString ext); //! A box to show the about message AboutBox *box; //! Remember the last mouse position QPointF lastMousePosition; //! Check whether GLE works bool checkGLE(); //! Render an GLE file from currentFile.gleFile() void renderGLE(); //! Render an GLE file void renderGLE(double dpi, const QSize& area); //! Commit changes to drawing to GLE void updateGLE(); //! Initialise GS void initLibGS(); //! Sometimes one has to ask anyway before reload (auto reload not possible) bool askAnywayBeforeReload(); void setCurrentFile(const QString &fileName); void updateRecentFileActions(); //! Execute this after rendering a GLE script void executeToDoAfterRenderGLE(); //! Execute this after opening a file void executeToDoAfterFileOpen(); //! Menu/toolbar member variables: file menu QMenu *fileMenu; //! Menu/toolbar member variables: tools menu QMenu *toolsMenu; //! Menu/toolbar member variables: help menu QMenu *helpMenu; //! Open related files menu (submenu of fileMenu) QMenu *editFileMenu; //! What form should the coordinate display take? int coordView; //! Should we restore the mode after rendering bool saveMode; //! Reload icons QIcon reloadIconBlack; QIcon reloadIconRed; //! Action causing the application to quit QAction *quitAct; //! Action causing the current bitmap to be copied to the clipboard QAction *copyBitmapAct; //! Action causing the figure to be copied to the clipboard as PDF QAction *copyPDFAct; //! Action causing the figure to be copied to the clipboard as EMF QAction *copyEMFAct; //! Linked to the slot: about() QAction *aboutAct; //! Open GLE website QAction* gleSiteAct; //! Open GLE manual QAction* gleManualAct; //! Toggle the grid on and off QAction *gridAct; //! Toggle grid snap on and off QAction *gridSnapAct; //! Toggle the status of the server on and off QAction *serverAct; //! Toggle orthosnap QAction *orthoSnapAct; //! Toggle osnap QAction *osnapAct; //! Toggle polar snap QAction *polarSnapAct; //! Toggle polar track QAction *polarTrackAct; //! Display the settings dialogue box QAction *settingsAct; //! Display expression evaluator QAction *evaluatorAct; //! View 3D part of script QAction *view3DAct; //! Display GhostScript's log window QAction *ghostScriptLogWindowAct; //! Open an existing file QAction *openInNewWindowAct; //! Open an existing file QAction *openAct; //! Browse the script folder QAction *browseAct; //! Save the file under a new name QAction *saveAsAct; //! Save the file QAction *saveAct; //! Create a new file QAction *newAct; //! Export the file QAction *exportAct; //! Print the file QAction *printAct; //! Open file in text editor QAction *editorAct; //! Go to preview mode QAction *previewModeAct; //! Go to edit mode QAction *editModeAct; //! Reload Action QAction *reloadAct; //! Zoom In Action QAction *zoomInAct; //! Zoom Out Action QAction *zoomOutAct; //! Zoom Automatically Action QAction *zoomAutoAct; //! Download action QAction *downloadAct; //! Console window auto-show action QAction *consoleWindowHide; //! The GLE version to emulate QComboBox *emulateVersion; //! The page size to use during preview QComboBox *previewPageSize; //! Used by the recent file list QAction *separatorAct; //! Group for edit / preview mode buttongs QActionGroup* editPreviewGroup; //! Group editing tools QActionGroup* toolGroup; //! Pointer tool QAction *pointerToolAct; QAction *lineToolAct; QAction *textToolAct; QAction *tanLineToolAct; QAction *perpLineToolAct; QAction *circleToolAct; QAction *ellipseToolAct; QAction *arcToolAct; QAction *moveToolAct; //! Coordinate Display QLabel *mousePosition; //! Resolution Display QLabel *dpiDisplay; //! Grid snap button QPushButton *gridSnapButton; //! Open file in text editor QToolButton *editorBut; //! Server thread GLEServerThread *serverThread; //! Render thread GLERenderThread *renderThread; //! Current file information GLEFileInfo currentFile[2]; //! Scroll Area containing the drawing widget QScrollArea *scrollArea; //! Size of (new) diagram QSizeF newDiagramSize; //! Is the server running? bool serverRunning; //! Was it running in preview mode? bool serverInPreviewMode; //! What mode are we currently in? int currentMode; //! What was the last mode int oldMode; //! Are we mid-render? bool renderInProgress; //! ToDo list options enum { ToDoAfterRenderGLE, ToDoAfterFileOpen }; //! Enumeration of the various coordinate display options enum { CoordinateOff, CoordinateCart, CoordinatePolar, CoordinateRelCart, CoordinateRelPolar }; //! Enumeration for a hash of temporary files enum { EditModeOutput, PreviewModeOutput, NewGLE }; //! Hash of temporary files QHash tempFiles; //! The last point clicked (for relative coordinates) QPointF lastPoint; //! File toolbar QToolBar *fileToolBar; //! Control toolbar QToolBar *controlToolBar; //! Mode toolbar QToolBar *modeToolBar; //! Tools toolbar QToolBar *toolsToolBar; //! View toolbar QToolBar *viewToolBar; //! Compatibility toolbar QToolBar *compatToolBar; //! Property editor GLEPropertyEditor *propertyEditor; QDockWidget *propertyDock; //! Object blocks list GLEObjectBlocksList *objectBlocksList; QDockWidget *objectBlocksDock; QSplitter *splitWindow; ConsoleWindow* consoleWindow; EvaluatorDialog* evaluatorDialog; QString GsLibVersionNumber; //! Timer for checking for file changes QTimer *fileMonitorTimer; int fileMonitorCount; // Pointer to our GLE interface GLEInterface *gleInterface; QList todoList; GLERC gleScript; enum { MaxRecentFiles = 5 }; QAction *recentFileActs[MaxRecentFiles]; bool enabledState; public: //! The drawing area GLEDrawingArea *drawingArea; //! Settings for application GLESettings *settings; //! Remove all drawn objects void resetDrawing(); //! Return the size of the drawing area QSize getScrollAreaSize(); //! Return the name of the current file QString getCurrentGleFile(); GLEInterface* getGLEInterface(); GLEScript* getGLEScript(); //! Open given file in text editor void openInTextEditor(const QString& file); //! Open a local file using the mime type application registered for it void showLocalFile(const QString& name); bool tryGhostScriptLocation(const QString location, QString& error); void updateWindowTitle(); void updateEnableActions(bool enable); void executeToDos(); //! Show console window if there is output void shouldAutoShowConsole(); void clearConsoleWindow(); void restoreConsoleOutput(); }; #endif gle-graphics-4.2.4c/src/gui/circle.cpp0000664000000000000000000003136011677266511016270 0ustar rootroot/*********************************************************************************** * QGLE - A Graphical Interface to GLE * * Copyright (C) 2006 A. S. Budden & J. Struyf * * * * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * * * Also add information on how to contact you by electronic and paper mail. * ***********************************************************************************/ #include "circle.h" // The constructor for the circle object GLECircle::GLECircle(double resolution, QSize imageSize, GLEDrawingArea *area) : GLEDrawingObject(resolution, imageSize, area) { // Make sure the circle is updated if a point changes or // the image size changes connect(this, SIGNAL(pointChanged()), this, SLOT(updateCircle())); connect(this, SIGNAL(imageChanged()), this, SLOT(updateCircle())); connect(this, SIGNAL(propertyChanged(int)), this, SLOT(updateFromProperty(int))); amove = false; // More to be added validProperties << FillColour << LineColour << LineWidth << LineStyle; properties[FillColour] = propertyDescriptions[FillColour].defaultValue; properties[LineColour] = propertyDescriptions[LineColour].defaultValue; properties[LineWidth] = propertyDescriptions[LineWidth].defaultValue; properties[LineStyle] = propertyDescriptions[LineStyle].defaultValue; } void GLECircle::createOTracks() { if (isSet(CentrePoint) && isSet(Radius)) { // We need to know the page size to be able to do this! } } void GLECircle::updateFromProperty(int) { GLEEllipseDO* obj = (GLEEllipseDO*)getGLEObject(); GLEPropertyStore* obj_prop = obj->getProperties(); obj_prop->setRealProperty(GLEDOPropertyLineWidth, getProperty(LineWidth).toDouble()); QColor color = getProperty(LineColour).value(); GLEColor* gle_color = obj->getProperties()->getColorProperty(GLEDOPropertyColor); gle_color->setRGB255(color.red(), color.green(), color.blue()); QGLE::qtToGLEString(getProperty(LineStyle).toString(), obj_prop->getStringProperty(GLEDOPropertyLineStyle)); GLEColor* gle_fill = obj->getProperties()->getColorProperty(GLEDOPropertyFillColor); if (properties[FillColour].value().isValid()) { QColor fill = getProperty(FillColour).value(); gle_fill->setRGB255(fill.red(), fill.green(), fill.blue()); } else { gle_fill->setTransparent(true); } ((GLEDrawingArea*)parent())->setDirtyAndSave(); } // Update the painter path void GLECircle::updateCircle() { QPointF p; QPair snap; // Only do this if both the centre and radius have been set if (isSet(CentrePoint) && isSet(Radius)) { // This is guaranteed to have been created in the constructor // of GLEDrawingObject delete(paintPath); // Create a new path starting at circleCentre paintPath = new QPainterPath(getQtPoint(CentrePoint)); // Add the circle based on the qrect paintPath->addEllipse(circleRect()); // Update GLE object GLEEllipseDO* circle = (GLEEllipseDO*)getGLEObject(); if (circle != NULL) { circle->setCenter(QGLE::QPointFToGLEPoint(getGLEPoint(CentrePoint))); circle->setRadius(getGLELength(Radius)); } // Now we add the osnap handles osnapHandles.clear(); for(int i=0;i<360;i+=90) { p.setX(getQtLength(Radius)*cos(QGLE::degreesToRadians(i))); p.setY(getQtLength(Radius)*sin(QGLE::degreesToRadians(i))); p += getQtPoint(CentrePoint); snap.first = p; snap.second = QGLE::QuadrantSnap; osnapHandles.append(snap); } snap.first = getQtPoint(CentrePoint); snap.second = QGLE::CentreSnap; osnapHandles.append(snap); } } void GLECircle::addRelativeOSnaps(QPointF p) { if (isSet(CentrePoint) && isSet(Radius)) { relativeOSnaps.clear(); QList perpendiculars = getPerpendiculars(p); QPointF ppt; foreach(ppt, perpendiculars) { relativeOSnaps.append(QPair(ppt, QGLE::PerpendicularSnap)); } QList tangents = getTangents(p); QPointF tpt; foreach(tpt, tangents) { relativeOSnaps.append(QPair(tpt, QGLE::TangentSnap)); } } } QList GLECircle::getTangents(QPointF p) { QList tangents; QPointF np; if (!isInside(p)) { double angleToCentre = QGLE::angleBetweenTwoPoints(p,getQtPoint(CentrePoint)); double radius = getQtLength(Radius); // Now we need the tangential ones double distanceToCentre = QGLE::distance(p, getQtPoint(CentrePoint)); double angleOffset = asin(radius/distanceToCentre); double distanceToTangent = sqrt(pow(distanceToCentre,2)-pow(radius,2)); angleToCentre = QGLE::angleBetweenTwoPoints(p,getQtPoint(CentrePoint)); double angle = angleToCentre + angleOffset; np = p + QPointF(distanceToTangent*cos(angle),distanceToTangent*sin(angle)); tangents.append(np); angle = angleToCentre - angleOffset; np = p + QPointF(distanceToTangent*cos(angle),distanceToTangent*sin(angle)); tangents.append(np); } return(tangents); } bool GLECircle::hasTangents() { return(true); } QList GLECircle::getPerpendiculars(QPointF p) { QList perpendiculars; // The first perpendicular osnap is defined as the nearest point QPointF np; distanceToPoint(p,&np); perpendiculars.append(np); // The second perpendicular osnap is diametrically opposite the first one double angleToCentre = QGLE::angleBetweenTwoPoints(np,getQtPoint(CentrePoint)); double radius = getQtLength(Radius); double diameter = 2*radius; np = np + QPointF(diameter*cos(angleToCentre),diameter*sin(angleToCentre)); perpendiculars.append(np); return(perpendiculars); } bool GLECircle::hasPerpendiculars() { return(true); } void GLECircle::draw(QPainter *p) { if (isSet(CentrePoint) && isSet(Radius)) { p->save(); QPen cpen; setSimplePenProperties(cpen); p->setPen(cpen); if (properties[FillColour].value().isValid()) p->setBrush(QBrush(properties[FillColour].value())); else p->setBrush(Qt::NoBrush); p->drawEllipse(circleRect()); p->restore(); } } double GLECircle::distanceToPoint(const QPointF& p, QPointF *nearestPoint) { QPointF c = getQtPoint(CentrePoint); if (nearestPoint) { double r = getQtLength(Radius); double theta = QGLE::angleBetweenTwoPoints(c,p); nearestPoint->setX(r*cos(theta)+c.x()); nearestPoint->setY(r*sin(theta)+c.y()); } // Calculations in QT coordinates return(fabs(QGLE::distance(c,p)-getQtLength(Radius))); } // Set a point (start or end in the case of a line) void GLECircle::setPoint(int pointChoice, const QPointF& p, bool update) { double radius; switch(pointChoice) { // Note that circumference point also runs // the centre point code: this is intentional case CircumferencePoint: if (!isSet(CentrePoint)) return; radius = QGLE::distance(QGLE::absQtToGLE(p,dpi,pixmap.height()),getGLEPoint(CentrePoint)); if (QGLE::relGLEToQt(radius,dpi) > MINIMUM_CIRCLE_RADIUS) pointHash[Radius] = QPointF(radius, 0); else pointHash.remove(Radius); case CentrePoint: pointHash[pointChoice] = QGLE::absQtToGLE(p, dpi, pixmap.height()); break; case Radius: pointHash[pointChoice] = QGLE::relQtToGLE(p, dpi); } if (update) updateCircle(); } QRectF GLECircle::circleRect() { // Work in Qt coordinates QPointF c = getQtPoint(CentrePoint); double r = getQtLength(Radius); return(QRectF(c.x() - r, c.y() - r, 2*r, 2*r)); } QList GLECircle::intersections(double qtm, double qtc, bool vertical) { QPointF one, two; // For circles, we'll deal with points individually: if (vertical) { one.setX(qtm); two.setX(qtm); one.setY(0.0); two.setY(1.0); } else { one.setX(0.0); one.setY(qtc); two.setX(1.0); two.setY(qtm + qtc); } return(intersections(one,two)); } QList GLECircle::intersections(QPointF qtp1, QPointF qtp2) { QList pointArray; if (!(isSet(CentrePoint) && isSet(Radius))) return(pointArray); QPointF cp = getQtPoint(CentrePoint); double r = getQtLength(Radius); double a,b,c; double bac; double u; QPointF p; a = pow((qtp2.x() - qtp1.x()),2) + pow((qtp2.y() - qtp1.y()),2); b = 2 * ( (qtp2.x() - qtp1.x())*(qtp1.x()-cp.x()) + (qtp2.y()-qtp1.y())*(qtp1.y()-cp.y())); c = pow(cp.x(),2)+pow(cp.y(),2)+pow(qtp1.x(),2)+pow(qtp1.y(),2) - 2*(cp.x()*qtp1.x()+cp.y()*qtp1.y()) - pow(r,2); bac = pow(b,2)-4*a*c; if (bac == 0.0) { u = - b / (2*a); p.setX(qtp1.x()+u*(qtp2.x()-qtp1.x())); p.setY(qtp1.y()+u*(qtp2.y()-qtp1.y())); pointArray.append(p); } else if (bac > 0.0) { u = (-b + sqrt(bac))/(2*a); p.setX(qtp1.x() + u*(qtp2.x()-qtp1.x())); p.setY(qtp1.y() + u*(qtp2.y()-qtp1.y())); pointArray.append(p); u = (-b - sqrt(bac))/(2*a); p.setX(qtp1.x() + u*(qtp2.x()-qtp1.x())); p.setY(qtp1.y() + u*(qtp2.y()-qtp1.y())); pointArray.append(p); } return(pointArray); } QList GLECircle::intersections(QPointF qtp1, double angle) { // This intersection code must determine the intersections in // a particular direction from a start point // First get a list based on an infinite line: QPointF qtp2 = qtp1 + QPointF(1.0*cos(angle),1.0*sin(angle)); QList allIntersections = intersections(qtp1,qtp2); // Now go through the list and determine which are in the right // direction QList correctIntersections; QPointF pt; double ptAngle; foreach(pt, allIntersections) { ptAngle = QGLE::angleBetweenTwoPoints(qtp1, pt); if (QGLE::quadrant(ptAngle) == QGLE::quadrant(angle)) correctIntersections.append(pt); } return(correctIntersections); } bool GLECircle::isInside(QPointF p) { QPointF cp = getQtPoint(CentrePoint); if (QGLE::distance(cp,p) < getQtLength(Radius)) return(true); else return(false); } bool GLECircle::findScaleOrigin(const QPointF&, QPointF* origin, int handle) { if (handle == GLEDrawingArea::TopLeft || handle == GLEDrawingArea::TopRight || handle == GLEDrawingArea::BottomLeft || handle == GLEDrawingArea::BottomRight) { *origin = getQtPoint(CentrePoint, true); return true; } return false; } int GLECircle::supportedTransformMode() { return TransformModeConstrained; } void GLECircle::linearTransform(const GLELinearEquation& ex, const GLELinearEquation& ey) { // Make sure we have a circumference point at 45 degrees // QPointF cp = getQtPoint(CentrePoint, true); // double radius = getQtLength(Radius, true); // QPointF edgePoint = cp + QPointF( // radius*cos(QGLE::degreesToRadians(45)), // radius*sin(QGLE::degreesToRadians(45))); // It would probably be much more sensible to do this after // converting it to an ellipse. pointHash.clear(); double radius = getQtLength(Radius, true); double fac = ex.getA(); if (fac == 1.0) fac = ey.getA(); setLength(Radius, radius * fac, false); linearTransformPt(CentrePoint, ex, ey, false); if (storedPointHash.contains(CircumferencePoint)) { linearTransformPt(CircumferencePoint, ex, ey, false); } updateCircle(); } void GLECircle::moveBy(QPointF offset) { pointHash.clear(); double radius = getQtLength(Radius); setLength(Radius, radius, false); // Moves relative to storedPointHash QPointF pt = getQtPoint(CentrePoint, true); setPoint(CentrePoint, pt + offset, false); if (storedPointHash.contains(CircumferencePoint)) { QPointF pt = getQtPoint(CircumferencePoint, true); setPoint(CircumferencePoint, pt + offset, false); } updateCircle(); } void GLECircle::rotateBy(double radians) { double radius = getQtLength(Radius); pointHash.clear(); setPoint(Radius, QPointF(radius,0.0)); QPointF c = getQtPoint(CentrePoint, true); c = QGLE::rotateAboutPoint(c, radians, basePoint); setPoint(CentrePoint, c); if (storedPointHash.contains(CircumferencePoint)) { QPointF pt = getQtPoint(CircumferencePoint, true); setPoint(CircumferencePoint, QGLE::rotateAboutPoint(pt, radians, basePoint)); } } gle-graphics-4.2.4c/src/gui/polararray.cpp0000664000000000000000000001227211405446017017172 0ustar rootroot/*********************************************************************************** * QGLE - A Graphical Interface to GLE * * Copyright (C) 2006 A. S. Budden & J. Struyf * * * * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * * * Also add information on how to contact you by electronic and paper mail. * ***********************************************************************************/ #include "polararray.h" // We need to make sure that we can pass all the parameters on to the // children (e.g. base points of displacement etc) // The constructor for the line object GLEPolarArray::GLEPolarArray(double resolution, QSize imageSize, GLEDrawingArea* area) : GLEDrawingObject(resolution, imageSize, area) { amove = false; } void GLEPolarArray::createOTracks() { // if (isSet(StartPoint) && isSet(EndPoint)) // { // // TODO: create some snap lines! // // Also need to implement the necessary functionality // // in gledrawing.cpp // } } void GLEPolarArray::addRelativeOSnaps(QPointF) { // if (isSet(StartPoint) && isSet(EndPoint)) // { // qDebug() << "Adding osnap relative to " << QGLE::absQtToGLE(p,dpi,pixmap.height()); // QGLE::flushIO(); // // relativeOSnaps.clear(); // QPointF np; // distanceToPoint(p,&np); // qDebug() << "Nearest point: " << QGLE::absQtToGLE(np,dpi,pixmap.height()); // if ((np == getQtPoint(StartPoint)) || (np == getQtPoint(EndPoint))) // return; // relativeOSnaps.append(QPair(np,QGLE::PerpendicularSnap)); // } // qDebug() << "Added relative OSNAP"; // QGLE::flushIO(); } QList GLEPolarArray::getTangents(QPointF) { // This depends on what the base object is QList empty; return(empty); } bool GLEPolarArray::hasTangents() { // This depends on what the base object is return(false); } QList GLEPolarArray::getPerpendiculars(QPointF) { // This depends on what the base object is QList empty; return(empty); // QList perpendiculars; // QPointF np; // distanceToPoint(p,&np); // if ((np == getQtPoint(StartPoint)) || (np == getQtPoint(EndPoint))) // return(perpendiculars); // // perpendiculars.append(np); // return(perpendiculars); } bool GLEPolarArray::hasPerpendiculars() { // This depends on what the base object is return(false); } void GLEPolarArray::draw(QPainter *) { // Call the draw function of the base object and // repeat for rotated versions } void GLEPolarArray::updateObjects() { } double GLEPolarArray::distanceToPoint(const QPointF&, QPointF*) { // Call base object functions return(1e6); } void GLEPolarArray::setBaseObject(GLEDrawingObject *obj) { baseObject.clear(); baseObject.append(obj); // Now connect all the signals and slots // and/or call 'update object' just in case } // Set a point (start or end in the case of a line) void GLEPolarArray::setPoint(int pointChoice, const QPointF&, bool) { if (baseObject.size() < 1) return; switch(pointChoice) { case SpanAngle: case NumberOfObjects: // pointHash[pointChoice] = QGLE::absQtToGLE(p, dpi, pixmap.height()); // Once both have been set, update the objects: regenerate // all but the first one based on the parameters break; } updateObjects(); } QList GLEPolarArray::intersections(double, double, bool) { // Call base object functionality QList pointArray; return(pointArray); } QList GLEPolarArray::intersections(QPointF, QPointF) { // Call base object functionality QList pointArray; return(pointArray); } QList GLEPolarArray::intersections(QPointF, double) { // Call base object functionality QList pointArray; return(pointArray); } bool GLEPolarArray::isInside(QPointF p) { // Call base objection functionality UNUSED_ARG(p); return(false); } void GLEPolarArray::scaleBy(double, double) { // Call base object functionality } void GLEPolarArray::moveBy(QPointF) { // Call base object functionality } void GLEPolarArray::rotateBy(double) { // Call base object functionality } gle-graphics-4.2.4c/src/gui/dialogues.cpp0000664000000000000000000006374311676162530017010 0ustar rootroot/*********************************************************************************** * QGLE - A Graphical Interface to GLE * * Copyright (C) 2006 A. S. Budden & J. Struyf * * * * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * * * Also add information on how to contact you by electronic and paper mail. * ***********************************************************************************/ #include #include "qgle_statics.h" #include "dialogues.h" #include "settings.h" #include "consolewindow.h" EvaluatorDialog::EvaluatorDialog(GLEMainWindow *parent) : QDialog(parent) { mainWin = parent; setModal(false); setWindowTitle(tr("Expression Evaluator")); results = new ConsoleWindow(this, NULL); QVBoxLayout *layout = new QVBoxLayout(); layout->addWidget(new QLabel(tr("Results:"))); layout->addWidget(results); layout->addWidget(new QLabel(tr("Expression:"))); field = new QLineEdit(); layout->addWidget(field); QHBoxLayout *btnlayo = new QHBoxLayout(); btnlayo->addStretch(1); QPushButton* closeBt = new QPushButton(tr("Close")); connect(closeBt, SIGNAL(clicked()), this, SLOT(hide())); btnlayo->addWidget(closeBt); QPushButton* clearBt = new QPushButton(tr("Clear")); connect(clearBt, SIGNAL(clicked()), this, SLOT(clearResults())); btnlayo->addWidget(clearBt); QPushButton* evalBt = new QPushButton(tr("Eval")); connect(evalBt, SIGNAL(clicked()), this, SLOT(eval())); btnlayo->addWidget(evalBt); evalBt->setDefault(true); layout->addLayout(btnlayo); setLayout(layout); QWidget::setTabOrder(field, evalBt); QWidget::setTabOrder(evalBt, clearBt); QWidget::setTabOrder(clearBt, closeBt); QWidget::setTabOrder(closeBt, results); } void EvaluatorDialog::eval() { QString txt = field->text().trimmed(); if (txt == "") return; GLEInterface* iface = mainWin->getGLEInterface(); GLEScript* script = mainWin->getGLEScript(); iface->setOutputStream(results->getOutput()); results->append(QString("> %1").arg(txt)); iface->evalString(txt.toUtf8().constData(), script); results->append(tr("")); mainWin->restoreConsoleOutput(); } void EvaluatorDialog::clearResults() { results->clear(); } ExportDialogue::ExportDialogue(GLEMainWindow *parent) { device = -1; mainWin = parent; setWindowTitle(tr("Export File")); QVBoxLayout *layout = new QVBoxLayout(); layout->addWidget(new QLabel(tr("Export to:"))); list = new QListWidget(); GLEInterface* iface = mainWin->getGLEInterface(); addFormat(tr("Portable Document Format (PDF)"), GLE_DEVICE_PDF); addFormat(tr("Encapsulated PostScript (EPS)"), GLE_DEVICE_EPS); addFormat(tr("PostScript Document (PS)"), GLE_DEVICE_PS); if (iface->isDeviceSupported(GLE_DEVICE_SVG)) { addFormat(tr("Scalable Vector Graphics (SVG)"), GLE_DEVICE_SVG); } if (iface->isDeviceSupported(GLE_DEVICE_EMF)) { addFormat(tr("Enhanced Metafile (EMF)"), GLE_DEVICE_EMF); } addFormat(tr("Portable Network Graphics (PNG)"), GLE_DEVICE_PNG); addFormat(tr("JPEG Interchange Format (JPEG)"), GLE_DEVICE_JPEG); list->setCurrentRow(mainWin->settings->getExportFormat()); list->adjustSize(); connect(list, SIGNAL(currentRowChanged(int)), this, SLOT(exportFormatChanged(int))); layout->addWidget(list); QHBoxLayout *p1 = new QHBoxLayout(); p1->addWidget(new QLabel(tr("Page format:"))); format = new QComboBox(); format->addItem(tr("Figure")); format->addItem(tr("Portrait")); format->addItem(tr("Landscape")); if (mainWin->isFullPage()) { if (mainWin->isLandscape()) format->setCurrentIndex(2); else format->setCurrentIndex(1); } else { format->setCurrentIndex(mainWin->settings->getExportPageSize()); } p1->addWidget(format); p1->addStretch(1); layout->addLayout(p1); QHBoxLayout *p2 = new QHBoxLayout(); resolutionLabel = new QLabel(tr("Resolution (dpi):")); p2->addWidget(resolutionLabel); resolution = new QSpinBox(); resolution->setMinimum(1); resolution->setMaximum(2000); connect(resolution, SIGNAL(valueChanged(int)), this, SLOT(resolutionChanged(int))); p2->addWidget(resolution); sizeLabel = new QLabel(); p2->addWidget(sizeLabel); p2->addStretch(1); layout->addLayout(p2); layout->addWidget(new QLabel(tr("(For vector formats, 'resolution' specifies the bitmap fallback resolution.)"))); transp = new QCheckBox(tr("Transparent")); transp->setChecked(mainWin->settings->isExportTransparent()); layout->addWidget(transp); grayScale = new QCheckBox(tr("Grayscale")); grayScale->setChecked(mainWin->settings->isExportGrayScale()); layout->addWidget(grayScale); openResult = new QCheckBox(tr("View resulting file")); openResult->setChecked(mainWin->settings->isOpenExportedFigure()); layout->addWidget(openResult); layout->addWidget(new QLabel(tr("File:"))); fname = new QLineEdit(); fname->setText(QString::fromUtf8(parent->getGLEScript()->getLocation()->getFullPath().c_str())); layout->addWidget(fname); QPushButton *cancel = new QPushButton(tr("Cancel")); connect(cancel, SIGNAL(clicked()), this, SLOT(close())); QPushButton *expnow = new QPushButton(tr("Export")); connect(expnow, SIGNAL(clicked()), this, SLOT(exportClicked())); expnow->setDefault(true); QPushButton *expas = new QPushButton(tr("Export As")); connect(expas, SIGNAL(clicked()), this, SLOT(exportAsClicked())); QHBoxLayout *p3 = new QHBoxLayout(); p3->addStretch(1); p3->addWidget(cancel); p3->addWidget(expnow); p3->addWidget(expas); layout->addLayout(p3); setLayout(layout); resize(mainWin->width()/2, mainWin->height()/2); exportFormatChangedImpl(mainWin->settings->getExportFormat(), true); } void ExportDialogue::addFormat(const QString& name, int gleFormatID) { list->addItem(name); fmtToDevice.append(gleFormatID); } int ExportDialogue::entryIDtoDevice(int id) { if (id < fmtToDevice.size()) { return fmtToDevice[id]; } return GLE_DEVICE_EPS; } bool ExportDialogue::isBitmap() { return device == GLE_DEVICE_PNG || device == GLE_DEVICE_JPEG; } void ExportDialogue::resolutionChanged(int) { if (isBitmap()) { updateResolution(); } } void ExportDialogue::exportAsClicked() { const char* ext = mainWin->getGLEInterface()->getDeviceFilenameExtension(device); QString ftype = QString("Exported file (*.%1)").arg(ext); QString fileName = QFileDialog::getSaveFileName(this, tr("Choose a file name to save under"), mainWin->settings->pwd(), ftype); if (fileName.isEmpty()) return; performExport(fileName); } void ExportDialogue::exportClicked() { performExport(fname->text()); } void ExportDialogue::performExport(const QString& file) { GLEInterface* iface = mainWin->getGLEInterface(); mainWin->clearConsoleWindow(); iface->clearAllCmdLine(); iface->setMakeDrawObjects(false); QString dpi = QString("%1").arg(resolution->value()); iface->setCmdLineOptionString("resolution", dpi.toLatin1().constData()); if (device == GLE_DEVICE_PNG && transp->isChecked()) { iface->setCmdLineOption("transparent"); } if (grayScale->isChecked()) { iface->setCmdLineOption("nocolor"); } if (format->currentIndex() != 0) { iface->setCmdLineOption("fullpage"); } if (format->currentIndex() == 2) { iface->setCmdLineOption("landscape"); } if (mainWin->settings->isRenderUsingCairo()) { iface->setCmdLineOption("cairo"); } iface->setCompatibilityMode(mainWin->getCompatibility().toLatin1().constData()); mainWin->settings->setExportPageSize(format->currentIndex()); iface->renderGLE(mainWin->getGLEScript(), file.toLatin1().constData(), device); iface->clearAllCmdLine(); mainWin->settings->setOpenExportedFigure(openResult->isChecked()); if (isBitmap()) { mainWin->settings->setExportBitmapResolution(resolution->value()); } else { mainWin->settings->setExportVectorResolution(resolution->value()); } mainWin->settings->setExportGrayScale(grayScale->isChecked()); mainWin->settings->setExportTransparent(transp->isChecked()); if (openResult->isChecked()) { mainWin->showLocalFile(file); } close(); } void ExportDialogue::updateResolution() { double dpi = (double)resolution->value(); const GLEPoint& bb = mainWin->getGLEScript()->getBoundingBox(); int img_wd = (int)floor((double)dpi/PS_POINTS_PER_INCH*bb.getX()+1); int img_hi = (int)floor((double)dpi/PS_POINTS_PER_INCH*bb.getY()+1); sizeLabel->setText(QString("(%1 x %2 pixels)").arg(img_wd).arg(img_hi)); } void ExportDialogue::exportFormatChanged(int idx) { exportFormatChangedImpl(idx, false); } void ExportDialogue::exportFormatChangedImpl(int idx, bool updateAll) { device = entryIDtoDevice(idx); transp->setEnabled(device == GLE_DEVICE_PNG); if (device == GLE_DEVICE_PS && format->currentIndex() == 0) { // "Figure" output not compatible with PS format->setCurrentIndex(1); } const char* ext = mainWin->getGLEInterface()->getDeviceFilenameExtension(device); fname->setText(QGLE::addFileNameExtension(fname->text(), ext)); if (isBitmap()) { updateResolution(); } else { const GLEPoint& size = mainWin->getGLEScript()->getSize(); sizeLabel->setText(QString("(%1 x %2 cm)").arg(size.getX()).arg(size.getY())); } mainWin->settings->setExportFormat(idx); if (previousWasBitmap != isBitmap() || updateAll) { if (isBitmap()) { resolution->setValue(mainWin->settings->getExportBitmapResolution()); } else { resolution->setValue(mainWin->settings->getExportVectorResolution()); } } previousWasBitmap = isBitmap(); } SoftwareLocateThread::SoftwareLocateThread(SoftwareLocateDialogue* parent, const QString& root) { parentWindow = parent; rootDir = root; } SoftwareLocateThread::~SoftwareLocateThread() { } void SoftwareLocateThread::run() { parentWindow->getGLEInterface()->findDependencies(rootDir.toUtf8().constData()); emit threadDone(); } SoftwareLocateOutput::SoftwareLocateOutput() { } SoftwareLocateOutput::~SoftwareLocateOutput() { } void SoftwareLocateOutput::printflush(const char* str) { emit print(QString::fromUtf8(str)); } void SoftwareLocateOutput::println(const char* str) { emit print(QString::fromUtf8(str) + QString::fromUtf8("\n")); } SoftwareLocateDialogue::SoftwareLocateDialogue(GLEMainWindow *parent, GLEInterface* iface, int buttons) : QDialog(parent) { found = false; modified = false; mainWin = parent; cancel = false; gleInterface = iface; searchButton = NULL; locButton = NULL; abortButton = NULL; rootButton = NULL; QVBoxLayout *layout = new QVBoxLayout(); QHBoxLayout *top = new QHBoxLayout(); QVBoxLayout *left = new QVBoxLayout(); QLabel* icon = new QLabel(this); icon->setPixmap(QPixmap(":/images/gle_shadow.png").scaled(QSize(64, 64))); left->addWidget(icon); left->addStretch(1); top->addLayout(left); browser = new QTextBrowser(); browser->setOpenLinks(false); top->addWidget(browser); QHBoxLayout *buttonLayout = new QHBoxLayout(); rootButton = new QPushButton(tr("Set Search Root")); connect(rootButton, SIGNAL(clicked()), this, SLOT(setRootClicked())); buttonLayout->addWidget(rootButton); searchButton = new QPushButton(tr("Search Automatically")); connect(searchButton, SIGNAL(clicked()), this, SLOT(searchAuto())); buttonLayout->addWidget(searchButton); if ((buttons & QGLE_SOFT_DIALOG_SEARCH_MANUAL) != 0) { locButton = new QPushButton(tr("Manually Locate")); connect(locButton, SIGNAL(clicked()), this, SLOT(locateManual())); buttonLayout->addWidget(locButton); } buttonLayout->addStretch(1); if ((buttons & QGLE_SOFT_DIALOG_SEARCH_ABORT) != 0) { abortButton = new QPushButton(tr("Abort")); connect(abortButton, SIGNAL(clicked()), mainWin, SLOT(abort())); buttonLayout->addWidget(abortButton); } else if ((buttons & QGLE_SOFT_DIALOG_SEARCH_CANCEL) != 0) { abortButton = new QPushButton(tr("Cancel")); connect(abortButton, SIGNAL(clicked()), this, SLOT(cancelClicked())); buttonLayout->addWidget(abortButton); } if (mainWin != NULL) { connect(browser, SIGNAL(anchorClicked(const QUrl&)), mainWin, SLOT(showURL(const QUrl&))); } okButton = new QPushButton(tr("Ok")); connect(okButton, SIGNAL(clicked()), this, SLOT(close())); okButton->setEnabled(false); okButton->setDefault(true); buttonLayout->addWidget(okButton); layout->addLayout(top); layout->addLayout(buttonLayout); setLayout(layout); QDesktopWidget* desk = QApplication::desktop(); QRect size = desk->screenGeometry(this); resize(size.width()/2, size.height()/2); connect(&output, SIGNAL(print(const QString)), this, SLOT(print(const QString))); getGLEInterface()->setOutputStream(&output); } SoftwareLocateDialogue::~SoftwareLocateDialogue() { } void SoftwareLocateDialogue::showGhostScriptError(QString error, QString loc) { QString gswww = tr("http://www.cs.wisc.edu/~ghost/"); QString guidewww = tr("http://www.gle-graphics.org/"); #ifdef Q_WS_X11 guidewww += tr("tut/linux.html"); #endif #ifdef Q_WS_WIN guidewww += tr("tut/windows.html"); #endif #ifdef Q_WS_MAC guidewww += tr("downloads/mac.html"); #endif QString err = tr("QGLE was unable to load the GhostScript software library, " "which it requires to render GLE's PostScript output.

" "Current location: '%1'.

" "Error: '%2'.

" "Make sure that GhostScript is correctly installed.

" "GhostScript is freely available" #ifdef Q_WS_X11 " from your Linux distribution's software repository, or" #endif " from %3.

" "More information is available in the GLE Installation Guide.

" "Click 'Manually Locate' to manually locate the GhostScript library (%5), " "or 'Search Automatically' to make GLE search common locations for GhostScript.
" ).arg(loc).arg(error).arg(gswww).arg(guidewww).arg(QGLE::gsLibFileName()); browser->setHtml(err); } void SoftwareLocateDialogue::disableAll() { QGLE::setEnabled(rootButton, false); QGLE::setEnabled(searchButton, false); QGLE::setEnabled(locButton, false); QGLE::setEnabled(abortButton, false); } void SoftwareLocateDialogue::enableOK(bool enable) { QGLE::setEnabled(okButton, enable); } void SoftwareLocateDialogue::searchAuto() { disableAll(); okButton->setEnabled(false); QTextCursor cursor = browser->textCursor(); cursor.movePosition(QTextCursor::End); browser->setTextCursor(cursor); browser->insertPlainText(tr("\n")); SoftwareLocateThread* thread = new SoftwareLocateThread(this, rootDir); connect(thread, SIGNAL(threadDone()), this, SLOT(threadDone())); thread->start(); } void SoftwareLocateDialogue::tryGhostScriptLocation(QString loc) { QString error; if (mainWin->tryGhostScriptLocation(loc, error)) { found = true; browser->insertPlainText(tr("Found GhostScript: '%1', version: %2.\n").arg(loc).arg(mainWin->getGsLibVersion())); okButton->setEnabled(true); } else { browser->insertPlainText(tr("Location: '%1'.\n").arg(loc)); browser->insertPlainText(tr("GhostScript not found: '%1'.\n").arg(error)); } } void SoftwareLocateDialogue::locateManual() { okButton->setEnabled(false); QTextCursor cursor = browser->textCursor(); cursor.movePosition(QTextCursor::End); browser->setTextCursor(cursor); browser->insertPlainText(tr("\n")); // don't use stock dialog; otherwise it's impossible to select a framework on MacOS/X QFileDialog dialog(this, tr("Locate the GhostScript library"), "/", QGLE::libraryFilter()); dialog.setFileMode(QFileDialog::AnyFile); if (dialog.exec()) { QStringList locs = dialog.selectedFiles(); if (locs.size() > 0 && locs[0] != "") { tryGhostScriptLocation(locs[0]); } } } void SoftwareLocateDialogue::threadDone() { modified = true; QGLE::setEnabled(rootButton, true); QGLE::setEnabled(searchButton, true); QGLE::setEnabled(locButton, true); QGLE::setEnabled(abortButton, true); if (mainWin != NULL) { string gsloc = getGLEInterface()->getGhostScriptLocation(); QString loc = QString::fromUtf8(gsloc.c_str()); tryGhostScriptLocation(loc); } else { okButton->setEnabled(true); } } void SoftwareLocateDialogue::cancelClicked() { cancel = true; close(); } void SoftwareLocateDialogue::setRootClicked() { rootDir = QFileDialog::getExistingDirectory(this, tr("Select Search Root Directory"), "/", QFileDialog::ShowDirsOnly); QTextCursor cursor = browser->textCursor(); cursor.movePosition(QTextCursor::End); browser->setTextCursor(cursor); QString msg = tr("\nClick 'Search Automatically' to search root: %1.\n").arg(rootDir); print(msg); } void SoftwareLocateDialogue::print(const QString str) { browser->insertPlainText(str); } CrashRecoverDialogue::CrashRecoverDialogue(const QString& file) : QDialog(NULL) { http = NULL; crashLog = file; requestID = -1; setWindowIcon(QIcon(":images/gle_shadow.png")); setWindowTitle(tr("GLE Internal Error")); crashLogLines.append(QString("The following is the error code and memory location of the error.")); crashLogLines.append(QString("We use this to find the line in GLE's source code where the error occured.")); crashLogLines.append(QString()); QFile myfile(file); if (myfile.open(QIODevice::ReadOnly | QIODevice::Text)) { QRegExp glefile("GLE file:\\s*'(.*)'"); QTextStream in(&myfile); while (!in.atEnd()) { QString line = in.readLine(); if (glefile.exactMatch(line)) gleFileName.setFile(glefile.capturedTexts()[1]); else crashLogLines.append(line); } myfile.close(); } GLEInterface* gleInterface = GLEGetInterfacePointer(); QString version = QString::fromUtf8(gleInterface->getGLEVersion().c_str()); crashLogLines.append(QString("GLE version: %1.").arg(version)); QDateTime time = QDateTime::currentDateTime(); crashLogLines.append(QString("Time: %1.").arg(time.toString("MM/dd/yyyy hh:mm:ss"))); QHBoxLayout *top = new QHBoxLayout(); QVBoxLayout *left = new QVBoxLayout(); QLabel* icon = new QLabel(this); icon->setPixmap(QPixmap(":/images/gle_shadow.png").scaled(QSize(64, 64))); left->addWidget(icon); left->addStretch(1); top->addLayout(left); QVBoxLayout *right = new QVBoxLayout(); right->addWidget(new QLabel("GLE has encountered an internal error and needed to close.\n\n" "GLE has created a report of this error.\n\n" "Please send this report to the developers by clicking the send button below.\n" "This will help improve the robustness and quality of future GLE versions.")); right->addWidget(new QLabel("Please provide a brief description of what you where doing (optional).")); right->addWidget(description = new QTextEdit()); right->addWidget(new QLabel("Please enter your e-mail address (optional).\n" "We may contact you if we have a solution or further questions.")); right->addWidget(email = new QLineEdit()); QSettings settings("gle", "qgle"); email->setText(settings.value("application/email").toString()); right->addWidget(new QLabel("The crash may be due to a specific construct in your GLE script.")); right->addWidget(includeScript = new QCheckBox("Include GLE script ("+gleFileName.fileName()+")")); includeScript->setChecked(true); right->addWidget(new QLabel("Thank you for your cooperation.")); top->addLayout(right); cancelButton = new QPushButton(tr("Cancel")); connect(cancelButton, SIGNAL(clicked()), this, SLOT(cancelReport())); QHBoxLayout *buttonLayout = new QHBoxLayout(); buttonLayout->addWidget(cancelButton); buttonLayout->addStretch(1); QPushButton *viewButton = new QPushButton(tr("View Report")); buttonLayout->addWidget(viewButton); connect(viewButton, SIGNAL(clicked()), this, SLOT(viewReport())); sendButton = new QPushButton(tr("Send Report")); sendButton->setDefault(true); buttonLayout->addWidget(sendButton); connect(sendButton, SIGNAL(clicked()), this, SLOT(sendReport())); QVBoxLayout *layout = new QVBoxLayout(); layout->addLayout(top); layout->addLayout(buttonLayout); setLayout(layout); } void CrashRecoverDialogue::saveEmail() { QSettings settings("gle", "qgle"); settings.setValue("application/email", email->text()); } void CrashRecoverDialogue::cancelReport() { saveEmail(); close(); } void CrashRecoverDialogue::foundFile(QStringList* list, const QDir& dir, const QString& file) { QFileInfo info(dir, file); if (info.exists()) { list->append(info.absoluteFilePath()); } } QString CrashRecoverDialogue::createReport() { QString report = crashLogLines.join("\n"); report += QString("\n\n%% Description:\n%1\n").arg(description->toPlainText()); report += QString("\n%% EMail:\n%1\n").arg(email->text()); if (includeScript->isChecked()) { QStringList lines; QStringList files; if (gleFileName.fileName() != "") { QDir mydir = gleFileName.absoluteDir(); QFile myfile(gleFileName.absoluteFilePath()); if (myfile.open(QIODevice::ReadOnly | QIODevice::Text)) { lines.append(QString()); lines.append(tr("%% File: '%1'").arg(gleFileName.fileName())); QRegExp glefile("^\\s*include\\s+\\\"([^\\\"]+)\\\""); QRegExp csvfile("^\\s*data\\s+\\\"([^\\\"]+)\\\""); QTextStream in(&myfile); while (!in.atEnd()) { QString line = in.readLine(); if (glefile.indexIn(line) != -1) { foundFile(&files, mydir, glefile.capturedTexts()[1]); } if (csvfile.indexIn(line) != -1) { foundFile(&files, mydir, csvfile.capturedTexts()[1]); } lines.append(line); } myfile.close(); } for (int i = 0; i < files.size(); i++) { QFileInfo info(files.at(i)); QFile subfile(info.absoluteFilePath()); if (subfile.open(QIODevice::ReadOnly | QIODevice::Text)) { lines.append(QString()); lines.append(tr("%% File: '%1'").arg(info.fileName())); QTextStream in(&subfile); while (!in.atEnd()) { lines.append(in.readLine()); } subfile.close(); } } } lines.append(QString()); lines.append(tr("%% End")); report += lines.join("\n"); } if (report.length() > 50000) { report = report.left(50000); } return report; } void CrashRecoverDialogue::viewReport() { QString report = createReport(); QDialog viewReportDial(this); viewReportDial.setWindowTitle("View Report"); QVBoxLayout *layout = new QVBoxLayout(); layout->addWidget(new QLabel(tr("Report:"))); QTextEdit* txt = new QTextEdit(); txt->setReadOnly(TRUE); txt->insertPlainText(report); QTextCursor cursor = txt->textCursor(); cursor.movePosition(QTextCursor::Start); txt->setTextCursor(cursor); layout->addWidget(txt); QPushButton *okButton = new QPushButton(tr("OK")); connect(okButton, SIGNAL(clicked()), &viewReportDial, SLOT(close())); QHBoxLayout *buttonLayout = new QHBoxLayout(); buttonLayout->addStretch(1); buttonLayout->addWidget(okButton); layout->addLayout(buttonLayout); viewReportDial.setLayout(layout); QRect size = QApplication::desktop()->screenGeometry(&viewReportDial); viewReportDial.resize(size.width()/2, size.height()/2); viewReportDial.exec(); } void CrashRecoverDialogue::requestFinished(int id, bool error) { if (id == requestID) { requestID = -1; buffer->seek(0); QString result_txt = buffer->readAll(); delete buffer; QRegExp redir("%%\\s+GLE-Redirect:\\s+(\\S+)\\s+(\\S+)"); if (!error && redir.indexIn(result_txt) != -1) { QString url = redir.capturedTexts()[1]; QString script = redir.capturedTexts()[2]; performRequest(url, script); } else { QString err_s = http->errorString(); QDialog mydial(this); mydial.setWindowTitle("GLE Internal Error"); QVBoxLayout *layout = new QVBoxLayout(); layout->addWidget(new QLabel(tr("Result of sending report:"))); QTextBrowser* txt = new QTextBrowser(); txt->setOpenLinks(false); txt->setReadOnly(TRUE); if (error) txt->insertPlainText(err_s); else txt->setPlainText(result_txt); layout->addWidget(txt); QPushButton *okButton = new QPushButton(tr("Close")); connect(okButton, SIGNAL(clicked()), &mydial, SLOT(close())); QHBoxLayout *buttonLayout = new QHBoxLayout(); buttonLayout->addStretch(1); buttonLayout->addWidget(okButton); layout->addLayout(buttonLayout); mydial.setLayout(layout); QRect size = QApplication::desktop()->screenGeometry(&mydial); mydial.resize(size.width()/3, size.height()/3); mydial.exec(); close(); } } } void CrashRecoverDialogue::performRequest(QString url, QString script) { http->setHost(url, 80); QHttpRequestHeader header("POST", script); header.setValue("Host", url); header.setContentType("application/x-www-form-urlencoded"); QString report = createReport(); GLEInterface* gleInterface = GLEGetInterfacePointer(); QByteArray version = QUrl::toPercentEncoding(QString::fromUtf8(gleInterface->getGLEVersion().c_str())); QString tosend_s = tr("code=5568&version=%1&report=").arg(QString::fromUtf8(version)); tosend_s += QString::fromUtf8(QUrl::toPercentEncoding(report)); tosend_s += "\n"; QByteArray tosend = tosend_s.toUtf8().constData(); buffer = new QBuffer(); buffer->open(QBuffer::ReadWrite); requestID = http->request(header, tosend, buffer); } void CrashRecoverDialogue::sendReport() { cancelButton->setEnabled(false); sendButton->setEnabled(false); saveEmail(); http = new QHttp(this); connect(http, SIGNAL(requestFinished(int,bool)), this, SLOT(requestFinished(int,bool))); performRequest("www.gle-graphics.org", "/gle-crash-report.php"); } gle-graphics-4.2.4c/src/gui/propertyeditor.cpp0000664000000000000000000001277411677267165020140 0ustar rootroot/*********************************************************************************** * QGLE - A Graphical Interface to GLE * * Copyright (C) 2006 A. S. Budden & J. Struyf * * * * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * * * Also add information on how to contact you by electronic and paper mail. * ***********************************************************************************/ #include "propertyeditor.h" #include "variantdelegate.h" #include #include "qgle_statics.h" #include "drawingobject.h" #include "circle.h" GLEPropertyEditor::GLEPropertyEditor(QWidget *parent, int size) : QTableView(parent) { defaultSize = size; hasModel = false; // setSizeIncrement(1, 1); // setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred); } void GLEPropertyEditor::propertyChanged(const QModelIndex &index, const QModelIndex&) { if (hasModel) { GLEDrawingObjectProperty prop; prop = model->getFullProperty(index); GLEDrawingObject *obj; foreach(obj, objects) { obj->setProperty(prop.index, prop.value); } emit propertiesHaveChanged(); } } void GLEPropertyEditor::objectsSelected(QList objs) { objects = objs; bool first = true; GLEDrawingObject *obj; QSet propertySet; foreach(obj, objs) { if (first) { propertySet = obj->getValidProperties(); } else { first = false; // Better to use union? propertySet.intersect(obj->getValidProperties()); } } // propertySet now contains a list of properties that are // common to each object QList properties; PropertyDescriptor thisProperty; GLEDrawingObjectProperty prop; if (objs.size() == 1 && objects[0]->getGLEObject() != NULL) { // No union supported on extra arguments yet - how to best implement this? GLEDrawObject* gleobj = objects[0]->getGLEObject(); GLEPropertyStore *store = gleobj->getProperties(); GLEPropertyStoreModel* model = store->getModel(); for (int i = 0; i < model->getNumberOfExtraProperties(); i++) { prop.index = GLEDrawingObject::PropertyUser+i; GLEProperty* gleprop = model->getProperty(i); prop.description = QGLE::stlToQString(gleprop->getName()); if (prop.description.size() > 1) { // Adjust case prop.description = prop.description.left(1).toUpper() + prop.description.mid(1).toLower(); prop.description.replace('_', ' '); } if (gleprop->getType() == GLEPropertyTypeString) { GLEString* strvalue = store->getStringProperty(gleprop); prop.value = QGLE::gleToQString(strvalue); } else if (gleprop->getType() == GLEPropertyTypeReal) { prop.value = store->getRealProperty(gleprop); } prop.validValues = QList(); properties.append(prop); } } int index; foreach(index, propertySet) { thisProperty = objects[0]->getPropertyDescription(index); prop.index = index; prop.description = thisProperty.description; prop.value = getPropertyValue(index, objs); prop.validValues = thisProperty.validValues; properties.append(prop); } if (hasModel) delete(model); model = new GLEPropertyModel(properties, this); connect(model, SIGNAL(dataChanged(QModelIndex, QModelIndex)), this, SLOT(propertyChanged(QModelIndex, QModelIndex))); hasModel = true; setModel(model); setItemDelegate(new VariantDelegate(this)); setSelectionBehavior(QAbstractItemView::SelectRows); setSelectionMode(QAbstractItemView::NoSelection); } QVariant GLEPropertyEditor::getPropertyValue(int index, QList objs) { // Find the value. This involves iterating through all the // objects and identifying whether they all have the same value. // If not, return a QVariant::List containing a single entry of the // appropriate type. QVariant value, compare; value = objs[0]->getProperty(index); int i; for(i=1;igetProperty(index); if (compare != value) { QList blank; blank.append(QVariant(value.type())); value = QVariant(blank); break; } } return(value); } /* QSize GLEPropertyEditor::sizeHint() const { qDebug() << "Default size property editor: " << defaultSize; if (defaultSize == 0) return QTableView::sizeHint(); return QSize(250, defaultSize); } int GLEPropertyEditor::heightForWidth(int) const { return -1; } */ gle-graphics-4.2.4c/src/gui/propertymodel.cpp0000664000000000000000000000662711677267172017750 0ustar rootroot/*********************************************************************************** * QGLE - A Graphical Interface to GLE * * Copyright (C) 2006 A. S. Budden & J. Struyf * * * * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * * * Also add information on how to contact you by electronic and paper mail. * ***********************************************************************************/ #include "propertymodel.h" #include "qgle_statics.h" GLEPropertyModel::GLEPropertyModel(const QList &props, QObject *parent) : QAbstractTableModel(parent) { propertyList = props; } int GLEPropertyModel::rowCount(const QModelIndex&) const { return(propertyList.size()); } int GLEPropertyModel::columnCount(const QModelIndex&) const { return(2); } GLEDrawingObjectProperty GLEPropertyModel::getFullProperty(const QModelIndex &index) { return(propertyList.at(index.row())); } QVariant GLEPropertyModel::data(const QModelIndex &index, int role) const { if (!index.isValid()) return QVariant(); if (index.row() >= propertyList.size()) return QVariant(); if (index.column() >= 2) return QVariant(); if (role == Qt::DisplayRole) { if (index.column() == 0) return(QVariant(propertyList.at(index.row()).description)); else return(propertyList.at(index.row()).value); } return QVariant(); } QVariant GLEPropertyModel::headerData(int section, Qt::Orientation orientation, int role) const { if (role != Qt::DisplayRole) return QVariant(); if (orientation == Qt::Horizontal) { if (section == 1) return QString("Value"); else return QString("Property"); } else return QVariant(); } Qt::ItemFlags GLEPropertyModel::flags(const QModelIndex &index) const { if (!index.isValid()) return Qt::ItemIsEnabled; if (index.column() == 0) return QAbstractItemModel::flags(index); else return QAbstractItemModel::flags(index) | Qt::ItemIsEditable; } bool GLEPropertyModel::setData(const QModelIndex &index, const QVariant &value, int role) { if (index.isValid() && role == Qt::EditRole) { propertyList[index.row()].value = value; emit dataChanged(index, index); return(true); } return(false); } gle-graphics-4.2.4c/src/gui/qgslibloader.cpp0000664000000000000000000003024111720262226017460 0ustar rootroot/*********************************************************************************** * QGLE - A Graphical Interface to GLE * * Copyright (C) 2006 J. Struyf * * * * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * * * Also add information on how to contact you by electronic and paper mail. * ***********************************************************************************/ #include #include #include "qgs.h" #include "qgle_statics.h" #ifdef Q_WS_WIN #include #endif #include #include GSLibFunctions* g_GSLibInstance = NULL; GSLibFunctions* GSLibFunctions::getInstance() { if (g_GSLibInstance == NULL) { g_GSLibInstance = new GSLibFunctions(); } return g_GSLibInstance; } GSLibFunctions::GSLibFunctions() { hmodule = NULL; resetFunctions(); } GSLibFunctions::~GSLibFunctions() { freeLibrary(); } QString GSLibFunctions::getVersion() { gsapi_revision_t rv; /* check DLL version */ if (gsapi_revision(&rv, sizeof(rv)) != 0) { return "ERR"; } else { int major = rv.revision / 100; int minor = rv.revision % 100; if (minor < 10) return QString("%1.0%2").arg(major).arg(minor); else return QString("%1.%2").arg(major).arg(minor); } } int GSLibFunctions::getVersionMajor() { gsapi_revision_t rv; /* check DLL version */ if (gsapi_revision(&rv, sizeof(rv)) != 0) { return -1; } else { return rv.revision / 100; } } void GSLibFunctions::resetFunctions() { gsapi_revision = NULL; gsapi_new_instance = NULL; gsapi_delete_instance = NULL; gsapi_init_with_args = NULL; gsapi_run_string = NULL; gsapi_run_string_with_length = NULL; gsapi_run_string_begin = NULL; gsapi_run_string_continue = NULL; gsapi_run_string_end = NULL; gsapi_exit = NULL; gsapi_set_stdio = NULL; gsapi_set_poll = NULL; gsapi_set_display_callback = NULL; } bool GSLibFunctions::isLoaded() { return gsapi_revision != NULL; } void GSLibFunctions::StripWhiteSpace(QString& str) { while (str.size() > 0 && (str[str.size()-1] == ' ' || str[str.size()-1] == '\n' || str[str.size()-1] == '\r')) { str.truncate(str.size()-1); } } #ifdef Q_WS_WIN void GSLibFunctions::tryLocation(const char* str) { } int GSLibFunctions::loadLibrary(const QString& location, QString& last_error) { gsapi_revision_t rv; /* Try to open the library */ if (location == "") { m_LibGSLocation = "gsdll32.dll"; hmodule = LoadLibrary((const WCHAR*)m_LibGSLocation.unicode()); } else { m_LibGSLocation = location; hmodule = LoadLibrary((const WCHAR*)m_LibGSLocation.unicode()); } if (hmodule < (HINSTANCE)HINSTANCE_ERROR) { /* Failed */ LPWSTR lpMsgBuf = NULL; DWORD dwError = GetLastError(); if (FormatMessageW(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, NULL, dwError, 0, (LPWSTR) &lpMsgBuf, 0, NULL ) != 0) { /* Error code known */ last_error.setUtf16((const ushort *)lpMsgBuf, wcslen(lpMsgBuf)); StripWhiteSpace(last_error); if (last_error.endsWith(".")) last_error.truncate(last_error.size()-1); LocalFree(lpMsgBuf); } else { /* Unknown error code */ last_error = QString("Code #%1").arg(dwError); } hmodule = (HINSTANCE)0; if (dwError == ERROR_FILE_NOT_FOUND || dwError == ERROR_PATH_NOT_FOUND || dwError == ERROR_MOD_NOT_FOUND) return 2; else return 1; } /* Get pointers to functions */ gsapi_revision = (PFN_gsapi_revision) GetProcAddress(hmodule, "gsapi_revision"); if (gsapi_revision == NULL) { last_error = "Can't find gsapi_revision"; freeLibrary(); return 1; } /* check DLL version */ if (gsapi_revision(&rv, sizeof(rv)) != 0) { last_error = "Unable to identify Ghostscript DLL revision"; freeLibrary(); return 1; } gsapi_new_instance = (PFN_gsapi_new_instance) GetProcAddress(hmodule,"gsapi_new_instance"); if (gsapi_new_instance == NULL) { last_error = "Can't find gsapi_new_instance"; freeLibrary(); return 1; } gsapi_delete_instance = (PFN_gsapi_delete_instance) GetProcAddress(hmodule, "gsapi_delete_instance"); if (gsapi_delete_instance == NULL) { last_error = "Can't find gsapi_delete_instance"; freeLibrary(); return 1; } gsapi_set_stdio = (PFN_gsapi_set_stdio) GetProcAddress(hmodule, "gsapi_set_stdio"); if (gsapi_set_stdio == NULL) { last_error = "Can't find gsapi_set_stdio"; freeLibrary(); return 1; } gsapi_set_poll = (PFN_gsapi_set_poll) GetProcAddress(hmodule, "gsapi_set_poll"); if (gsapi_set_poll == NULL) { last_error = "Can't find gsapi_set_poll"; freeLibrary(); return 1; } gsapi_set_display_callback = (PFN_gsapi_set_display_callback) GetProcAddress(hmodule, "gsapi_set_display_callback"); if (gsapi_set_display_callback == NULL) { last_error = "Can't find gsapi_set_display_callback"; freeLibrary(); return 1; } gsapi_init_with_args = (PFN_gsapi_init_with_args) GetProcAddress(hmodule, "gsapi_init_with_args"); if (gsapi_init_with_args == NULL) { last_error = "Can't find gsapi_init_with_args"; freeLibrary(); return 1; } gsapi_run_string = (PFN_gsapi_run_string) GetProcAddress(hmodule, "gsapi_run_string"); if (gsapi_run_string == NULL) { last_error = "Can't find gsapi_run_string"; freeLibrary(); return 1; } gsapi_run_string_with_length = (PFN_gsapi_run_string_with_length) GetProcAddress(hmodule, "gsapi_run_string_with_length"); if (gsapi_run_string_with_length == NULL) { last_error = "Can't find gsapi_run_string_with_length"; freeLibrary(); return 1; } gsapi_run_string_begin = (PFN_gsapi_run_string_begin) GetProcAddress(hmodule, "gsapi_run_string_begin"); if (gsapi_run_string_begin == NULL) { last_error = "Can't find gsapi_run_string_begin"; freeLibrary(); return 1; } gsapi_run_string_continue = (PFN_gsapi_run_string_continue) GetProcAddress(hmodule, "gsapi_run_string_continue"); if (gsapi_run_string_continue == NULL) { last_error = "Can't find gsapi_run_string_continue"; freeLibrary(); return 1; } gsapi_run_string_end = (PFN_gsapi_run_string_end) GetProcAddress(hmodule, "gsapi_run_string_end"); if (gsapi_run_string_end == NULL) { last_error = "Can't find gsapi_run_string_end"; freeLibrary(); return 1; } gsapi_exit = (PFN_gsapi_exit) GetProcAddress(hmodule, "gsapi_exit"); if (gsapi_exit == NULL) { last_error = "Can't find gsapi_exit"; freeLibrary(); return 1; } return 0; } void GSLibFunctions::freeLibrary() { resetFunctions(); if (hmodule != (HINSTANCE)NULL) FreeLibrary(hmodule); hmodule = NULL; } #endif #if defined(Q_WS_X11) || defined(Q_WS_MAC) #include void GSLibFunctions::tryLocation(const char* str) { if (hmodule == NULL) { m_LibGSLocation = str; QByteArray strdata = m_LibGSLocation.toLatin1(); hmodule = dlopen(strdata.constData(), RTLD_NOW); } } void GSLibFunctions::tryLocationLoop(const char* prefix) { std::string soName(prefix); soName += "/libgs.so"; for (int version = 12; version >= 6; version--) { std::ostringstream toTry; toTry << soName << "." << version; tryLocation(toTry.str().c_str()); } tryLocation(soName.c_str()); } int GSLibFunctions::loadLibrary(const QString& location, QString& last_error) { gsapi_revision_t rv; /* Try to load the library */ if (location == "") { #ifdef Q_WS_X11 #if defined(__x86_64__) || defined(__ppc64__) || defined (__s390x__) || defined (__sparc64__) // try 64 bit libraries on 64 bit system tryLocationLoop("/usr/lib64"); tryLocationLoop("/usr/local/lib64"); #endif // 64 bit tryLocationLoop("/usr/lib"); tryLocationLoop("/usr/local/lib"); #endif // Q_WS_X11 #ifdef Q_WS_MAC tryLocation("/usr/lib/libgs.dylib"); tryLocation("/usr/local/lib/libgs.dylib"); #endif } else { m_LibGSLocation = location; QString libloc = location; if (libloc.endsWith(".framework")) { libloc.append("/Ghostscript"); } QByteArray strdata = libloc.toLatin1(); hmodule = dlopen(strdata.constData(), RTLD_NOW); } /* Error message if loading fails */ if (hmodule == NULL) { /* Failed */ last_error = QString::fromAscii(dlerror()); return 2; } /* Get pointers to functions */ gsapi_revision = (PFN_gsapi_revision) dlsym(hmodule, "gsapi_revision"); if (gsapi_revision == NULL) { last_error = "Can't find gsapi_revision"; freeLibrary(); return 1; } /* check DLL version */ if (gsapi_revision(&rv, sizeof(rv)) != 0) { last_error = "Unable to identify Ghostscript DLL revision - it must be newer than needed"; freeLibrary(); return 1; } gsapi_new_instance = (PFN_gsapi_new_instance) dlsym(hmodule,"gsapi_new_instance"); if (gsapi_new_instance == NULL) { last_error = "Can't find gsapi_new_instance"; freeLibrary(); return 1; } gsapi_delete_instance = (PFN_gsapi_delete_instance) dlsym(hmodule, "gsapi_delete_instance"); if (gsapi_delete_instance == NULL) { last_error = "Can't find gsapi_delete_instance"; freeLibrary(); return 1; } gsapi_set_stdio = (PFN_gsapi_set_stdio) dlsym(hmodule, "gsapi_set_stdio"); if (gsapi_set_stdio == NULL) { last_error = "Can't find gsapi_set_stdio"; freeLibrary(); return 1; } gsapi_set_poll = (PFN_gsapi_set_poll) dlsym(hmodule, "gsapi_set_poll"); if (gsapi_set_poll == NULL) { last_error = "Can't find gsapi_set_poll"; freeLibrary(); return 1; } gsapi_set_display_callback = (PFN_gsapi_set_display_callback) dlsym(hmodule, "gsapi_set_display_callback"); if (gsapi_set_display_callback == NULL) { last_error = "Can't find gsapi_set_display_callback"; freeLibrary(); return 1; } gsapi_init_with_args = (PFN_gsapi_init_with_args) dlsym(hmodule, "gsapi_init_with_args"); if (gsapi_init_with_args == NULL) { last_error = "Can't find gsapi_init_with_args"; freeLibrary(); return 1; } gsapi_run_string = (PFN_gsapi_run_string) dlsym(hmodule, "gsapi_run_string"); if (gsapi_run_string == NULL) { last_error = "Can't find gsapi_run_string"; freeLibrary(); return 1; } gsapi_run_string_with_length = (PFN_gsapi_run_string_with_length) dlsym(hmodule, "gsapi_run_string_with_length"); if (gsapi_run_string_with_length == NULL) { last_error = "Can't find gsapi_run_string_with_length"; freeLibrary(); return 1; } gsapi_run_string_begin = (PFN_gsapi_run_string_begin) dlsym(hmodule, "gsapi_run_string_begin"); if (gsapi_run_string_begin == NULL) { last_error = "Can't find gsapi_run_string_begin"; freeLibrary(); return 1; } gsapi_run_string_continue = (PFN_gsapi_run_string_continue) dlsym(hmodule, "gsapi_run_string_continue"); if (gsapi_run_string_continue == NULL) { last_error = "Can't find gsapi_run_string_continue"; freeLibrary(); return 1; } gsapi_run_string_end = (PFN_gsapi_run_string_end) dlsym(hmodule, "gsapi_run_string_end"); if (gsapi_run_string_end == NULL) { last_error = "Can't find gsapi_run_string_end"; freeLibrary(); return 1; } gsapi_exit = (PFN_gsapi_exit) dlsym(hmodule, "gsapi_exit"); if (gsapi_exit == NULL) { last_error = "Can't find gsapi_exit"; freeLibrary(); return 1; } return 0; } void GSLibFunctions::freeLibrary() { resetFunctions(); if (hmodule != NULL) dlclose(hmodule); hmodule = NULL; } #endif gle-graphics-4.2.4c/src/gui/fileinfo.h0000664000000000000000000000711511405446017016256 0ustar rootroot/*********************************************************************************** * QGLE - A Graphical Interface to GLE * * Copyright (C) 2006 A. S. Budden & J. Struyf * * * * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * * * Also add information on how to contact you by electronic and paper mail. * ***********************************************************************************/ #ifndef _GLE_FILE_INFO_H #define _GLE_FILE_INFO_H #include //! Class used to describe the open file class GLEFileInfo { private: //! The GLE file name QString gleFileName; //! The EPS file name QString epsFileName; //! The rendered image QImage image; //! The previous DPI value double lastDPI; //! The time stamp QDateTime lastModified; //! Flag noting whether we have a file name bool hasFileNameFlag; public: //! Constructor: initialise variables GLEFileInfo(); //! Return the GLE file name inline const QString& gleFile() { return gleFileName; } //! Set the GLE file name inline void setGleFile(const QString& newGLEFile) { gleFileName = newGLEFile; setHasFileName(true);} //! Clear the GLE file name inline void clearGleFile() { gleFileName = ""; } //! Return the EPS file name inline const QString& epsFile() { return epsFileName; } //! Set the EPS file name inline void setEpsFile(const QString& newEPSFile) { epsFileName = newEPSFile; } //! Get the rendered base image inline const QImage& getImage() { return image; } //! Set the rendered base image void setImage(const QImage& newImage); //! What was the previous DPI value inline double getLastDPI() { return lastDPI; } //! Set whether this is a temporary file inline void setLastDPI(double dpi) { lastDPI = dpi; } //! Set whether we have a file name inline void setHasFileName(const bool& newFlag) { hasFileNameFlag = newFlag; } //! Do we have a file name? inline const bool& hasFileName() { return hasFileNameFlag; } //! Update the time stamp void updateTimeStamp(); //! Has the file changed externally? bool hasChanged(); //! Is the primary file a GLE file? bool isGLE(); //! Is the primary file an EPS file? bool isEPS(); //! What's the file name of the primary file? QString primaryFile(); //! Clear the object void clear(); //! Copy relevant information from other GLEFileInfo object void copyFrom(GLEFileInfo* other); }; #endif gle-graphics-4.2.4c/src/gui/3dviewer.cpp0000664000000000000000000002363411704312456016553 0ustar rootroot/*********************************************************************************** * QGLE - A Graphical Interface to GLE * * Copyright (C) 2006 A. S. Budden & J. Struyf * * * * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * * * Also add information on how to contact you by electronic and paper mail. * ***********************************************************************************/ #include #include #include "3dviewer.h" #include "../config.h" #include "../gle/cutils.h" #include "../gle/gle-block.h" #include "../gle/surface/gsurface.h" #ifdef HAVE_LIBGLU_H #include #endif #include QGLE3DWidget::QGLE3DWidget(QWidget *parent, GLEInterface* iface) : QGLWidget(parent) { gleInterface = iface; object = 0; perspAngle = 60.0; GLEPoint3D* eye = proj.getEye(); GLEPoint3D* ref = proj.getReference(); GLEPoint3D* vvec = proj.getV(); surface_struct* sf = gleInterface->getSurface(); if (sf->z != NULL) { eye->set(3,0,0); ref->set(0,0,0); vvec->set(0,0,1); } } QGLE3DWidget::~QGLE3DWidget() { makeCurrent(); glDeleteLists(object, 1); } QSize QGLE3DWidget::minimumSizeHint() const { return QSize(50, 50); } QSize QGLE3DWidget::sizeHint() const { return QSize(400, 400); } void QGLE3DWidget::zoom(double zoom) { proj.zoom(zoom); updateGL(); } void QGLE3DWidget::rotate(double angle, bool horiz) { proj.rotate(angle, horiz); updateGL(); } void QGLE3DWidget::reference(const GLEPoint3D& p) { proj.reference(p); updateGL(); } void QGLE3DWidget::adjustV(double angle) { proj.adjustV(angle); updateGL(); } void QGLE3DWidget::perspectiveAngle(double delta) { perspAngle += delta; if (perspAngle < 5) perspAngle = 5; if (perspAngle > 85) perspAngle = 85; updateGL(); } void QGLE3DWidget::initializeGL() { qglClearColor(Qt::white); object = makeObject(); glShadeModel(GL_FLAT); glEnable(GL_DEPTH_TEST); // glEnable(GL_CULL_FACE); glDisable(GL_CULL_FACE); } #include using namespace std; void QGLE3DWidget::paintGL() { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glMatrixMode(GL_PROJECTION); glLoadIdentity(); // glOrtho(-0.5, +0.5, +0.5, -0.5, 4.0, 15.0); gluPerspective(perspAngle, 1, 1, 100); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); GLEPoint3D* eye = proj.getEye(); GLEPoint3D* ref = proj.getReference(); GLEPoint3D* vvec = proj.getV(); gluLookAt(eye->get(0),eye->get(1),eye->get(2), ref->get(0),ref->get(1),ref->get(2), vvec->get(0),vvec->get(1),vvec->get(2)); surface_struct* sf = gleInterface->getSurface(); if (sf->z != NULL) { glScaled(2.0/sf->nx, 2.0/sf->ny, 2.0/(sf->zmax-sf->zmin)); glTranslated(-0.5*sf->nx, -0.5*sf->ny, -0.5*(sf->zmax-sf->zmin)-sf->zmin); } glCallList(object); } void QGLE3DWidget::resizeGL(int width, int height) { int side = qMin(width, height); glViewport((width - side) / 2, (height - side) / 2, side, side); } void QGLE3DWidget::mousePressEvent(QMouseEvent *event) { lastPos = event->pos(); } void QGLE3DWidget::mouseMoveEvent(QMouseEvent *event) { int dx = event->x() - lastPos.x(); int dy = event->y() - lastPos.y(); if (event->buttons() & Qt::LeftButton) { proj.rotate(-dx*0.1, true); proj.rotate(dy*0.1, false); updateGL(); } lastPos = event->pos(); } GLuint QGLE3DWidget::makeObject() { GLuint list = glGenLists(1); glNewList(list, GL_COMPILE); surface_struct* sf = gleInterface->getSurface(); float* z = sf->z; if (z != NULL) { GLEColorList* colors = GLEGetColorList(); QString gle_color = QString::fromUtf8(sf->top_color).toUpper(); GLEColor* color = colors->getSafeDefaultBlack(gle_color.toAscii().constData()); glEnable(GL_POLYGON_OFFSET_FILL); // Avoid Stitching! glPolygonOffset(1.0, 1.0); double l = 0.8; double lRed = min(color->getRed()+l, 1.0); double lGreen = min(color->getGreen()+l, 1.0); double lBlue = min(color->getBlue()+l, 1.0); for (int x = 0; x < sf->nx-1; x++) { for (int y = 0; y < sf->ny-1; y++) { glBegin(GL_POLYGON); //glColor3f(1.0f, 1.0f, 1.0f); glColor3f(lRed, lGreen, lBlue); glVertex3f(x, y, z[x + y * sf->nx]); glVertex3f(x+1, y, z[(x+1) + y * sf->nx]); glVertex3f(x+1, y+1, z[(x+1) + (y+1) * sf->nx]); glVertex3f(x, y+1, z[x + (y+1) * sf->nx]); glEnd(); glBegin(GL_LINE_LOOP); glColor3f(color->getRed(), color->getGreen(), color->getBlue()); glVertex3f(x, y, z[x + y * sf->nx]); glVertex3f(x+1, y, z[(x+1) + y * sf->nx]); glVertex3f(x+1, y+1, z[(x+1) + (y+1) * sf->nx]); glVertex3f(x, y+1, z[x + (y+1) * sf->nx]); glEnd(); } } } glColor3f(0, 0, 0); glBegin(GL_LINE_LOOP); glVertex3f(0, 0, sf->zmin); glVertex3f(sf->nx, 0, sf->zmin); glVertex3f(sf->nx, sf->ny, sf->zmin); glVertex3f(0, sf->ny, sf->zmin); glEnd(); glBegin(GL_LINE_LOOP); glVertex3f(0, 0, sf->zmax); glVertex3f(sf->nx, 0, sf->zmax); glVertex3f(sf->nx, sf->ny, sf->zmax); glVertex3f(0, sf->ny, sf->zmax); glEnd(); glBegin(GL_LINES); glVertex3f(0, 0, sf->zmin); glVertex3f(0, 0, sf->zmax); glEnd(); glBegin(GL_LINES); glVertex3f(sf->nx, 0, sf->zmin); glVertex3f(sf->nx, 0, sf->zmax); glEnd(); glBegin(GL_LINES); glVertex3f(0, sf->ny, sf->zmin); glVertex3f(0, sf->ny, sf->zmax); glEnd(); glBegin(GL_LINES); glVertex3f(sf->nx, sf->ny, sf->zmin); glVertex3f(sf->nx, sf->ny, sf->zmax); glEnd(); glEndList(); return list; } void QGLE3DWidget::normalizeAngle(int *angle) { while (*angle < 0) *angle += 360 * 16; while (*angle > 360 * 16) *angle -= 360 * 16; } QGLE3DViewer::QGLE3DViewer(QWidget* parent, GLEInterface* iface) : QDialog(parent) { glWidget = new QGLE3DWidget(this, iface); QHBoxLayout *mainLayout = new QHBoxLayout; mainLayout->addWidget(glWidget, 1); QVBoxLayout *rightLayout = new QVBoxLayout; rightLayout->addWidget(new QLabel(tr("Control (Space toggles):"))); crCtrl = new QComboBox(); crCtrl->addItem(tr("Eye")); crCtrl->addItem(tr("Reference")); crCtrl->addItem(tr("V-Vector")); crCtrl->addItem(tr("Perspective Angle")); crCtrl->setCurrentIndex(0); connect(crCtrl, SIGNAL(activated(int)), this, SLOT(ctrlSelectionChanged(int))); rightLayout->addWidget(crCtrl); rightLayout->addStretch(1); mainLayout->addLayout(rightLayout, 0); setLayout(mainLayout); setWindowTitle(tr("QGLE 3D Viewer")); // Accept keyboard events setFocusPolicy(Qt::StrongFocus); setFocus(Qt::OtherFocusReason); zoomStep = 5.0; rotateStep = 1.0; distanceStep = 0.1; ctrl = CTRL_EYE; } void QGLE3DViewer::ctrlSelectionChanged(int value) { ctrl = (CTRL_CMD)value; } //! Called when the user presses a key void QGLE3DViewer::keyPressEvent(QKeyEvent *event) { if (event->modifiers() != Qt::NoModifier) { event->ignore(); } GLEPoint3D vec; switch (event->key()) { case Qt::Key_Space: if (ctrl == CTRL_EYE) ctrl = CTRL_REF; else if (ctrl == CTRL_REF) ctrl = CTRL_VVEC; else if (ctrl == CTRL_VVEC) ctrl = CTRL_PERSP_ANG; else ctrl = CTRL_EYE; crCtrl->setCurrentIndex((int)ctrl); break; case Qt::Key_PageUp: vec.set(0,0,1); vec.dotScalar(distanceStep); if (ctrl != CTRL_REF) glWidget->zoom(-1.0*zoomStep/100.0); else glWidget->reference(vec); break; case Qt::Key_PageDown: vec.set(0,0,-1); vec.dotScalar(distanceStep); if (ctrl != CTRL_REF) glWidget->zoom(+1.0*zoomStep/100.0); else glWidget->reference(vec); break; case Qt::Key_Down: vec.set(0,1,0); vec.dotScalar(distanceStep); if (ctrl == CTRL_PERSP_ANG) glWidget->perspectiveAngle(-5.0); else if (ctrl != CTRL_REF) glWidget->rotate(-1.0f*rotateStep, false); else glWidget->reference(vec); break; case Qt::Key_Up: vec.set(0,-1,0); vec.dotScalar(distanceStep); if (ctrl == CTRL_PERSP_ANG) glWidget->perspectiveAngle(+5.0); else if (ctrl != CTRL_REF) glWidget->rotate(+1.0f*rotateStep, false); else glWidget->reference(vec); break; case Qt::Key_Left: vec.set(1,0,0); vec.dotScalar(distanceStep); if (ctrl == CTRL_EYE) glWidget->rotate(-1.0f*rotateStep, true); else if (ctrl == CTRL_REF) glWidget->reference(vec); else if (ctrl == CTRL_VVEC) glWidget->adjustV(+1.0f*rotateStep); break; case Qt::Key_Right: vec.set(-1,0,0); vec.dotScalar(distanceStep); if (ctrl == CTRL_EYE) glWidget->rotate(+1.0f*rotateStep, true); else if (ctrl == CTRL_REF) glWidget->reference(vec); else if (ctrl == CTRL_VVEC) glWidget->adjustV(-1.0f*rotateStep); break; default: event->ignore(); } } gle-graphics-4.2.4c/src/gui/fileinfo.cpp0000664000000000000000000000740411405446017016612 0ustar rootroot/*********************************************************************************** * QGLE - A Graphical Interface to GLE * * Copyright (C) 2006 A. S. Budden & J. Struyf * * * * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * * * Also add information on how to contact you by electronic and paper mail. * ***********************************************************************************/ #include "fileinfo.h" #include "qgle_statics.h" /********************************************************************** * A class that holds various bits of information about the open file * **********************************************************************/ // Clear the file info object on creation GLEFileInfo::GLEFileInfo() { clear(); } void GLEFileInfo::setImage(const QImage& newImage) { image = newImage; } // Clear the fileinfo object by setting everything to null void GLEFileInfo::clear() { gleFileName = ""; epsFileName = ""; image = QImage(); lastDPI = -1; hasFileNameFlag = false; } // Copy relevant information from other GLEFileInfo object void GLEFileInfo::copyFrom(GLEFileInfo* other) { // *DO NOT* copy image and .eps file name! gleFileName = other->gleFileName; hasFileNameFlag = other->hasFileNameFlag; lastModified = other->lastModified; } // Read the time stamp from the file and save it. void GLEFileInfo::updateTimeStamp() { QFileInfo fi; QString mainFile = primaryFile(); if (mainFile.isEmpty()) { lastModified = QDateTime(); return; } fi.setFile(mainFile); lastModified = fi.lastModified(); } // Return the filename of the main file (i.e. the GLE // file if we have one and the EPS file otherwise) QString GLEFileInfo::primaryFile() { if (isGLE()) return(gleFileName); else if (isEPS()) return(epsFileName); else return QString(); } // Is it a GLE file? bool GLEFileInfo::isGLE() { return(!gleFileName.isEmpty()); } // Is it an EPS file? bool GLEFileInfo::isEPS() { if(isGLE()) return false; return(!epsFileName.isEmpty()); } // Check whether the file has changed on disk // by looking at the time stamp bool GLEFileInfo::hasChanged() { QFileInfo fi; QDateTime modifiedTime; QString mainFile = primaryFile(); if (mainFile.isEmpty()) { // cout << "main file is empty" << endl; return false; } fi.setFile(mainFile); if (!fi.isReadable()) { // cout << "main file not readable: " << mainFile.toUtf8().data() << endl; return false; } modifiedTime = fi.lastModified(); if (modifiedTime > lastModified) return true; else return false; } gle-graphics-4.2.4c/src/gui/start-qgle.sh0000775000000000000000000000353511405446017016736 0ustar rootroot# *********************************************************************************** # * QGLE - A Graphical Interface to GLE * # * Copyright (C) 2006 A. S. Budden & J. Struyf * # * * # * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * # * * # * Also add information on how to contact you by electronic and paper mail. * # *********************************************************************************** #!/bin/sh LD_LIBRARY_PATH=../../build/lib/:$LD_LIBRARY_PATH #GLE_TOP=/usr/share/gle/4.0.13-cvs/ export LD_LIBRARY_PATH #export GLE_TOP #./qgle ../../build/bin/qgle gle-graphics-4.2.4c/src/gui/3dviewer.h0000664000000000000000000000610211405446017016206 0ustar rootroot/*********************************************************************************** * QGLE - A Graphical Interface to GLE * * Copyright (C) 2006 A. S. Budden & J. Struyf * * * * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * * * Also add information on how to contact you by electronic and paper mail. * ***********************************************************************************/ #ifndef _3DVIEWER_H #define _3DVIEWER_H #include #include #include "mainwindow.h" class QGLE3DWidget : public QGLWidget { Q_OBJECT public: QGLE3DWidget(QWidget *parent = 0, GLEInterface* iface = NULL); ~QGLE3DWidget(); QSize minimumSizeHint() const; QSize sizeHint() const; void zoom(double zoom); void rotate(double angle, bool horiz); void reference(const GLEPoint3D& p); void adjustV(double angle); void perspectiveAngle(double delta); protected: void initializeGL(); void paintGL(); void resizeGL(int width, int height); void mousePressEvent(QMouseEvent *event); void mouseMoveEvent(QMouseEvent *event); private: GLuint makeObject(); void normalizeAngle(int *angle); double perspAngle; GLuint object; QPoint lastPos; GLEInterface* gleInterface; GLEProjection proj; }; typedef enum {CTRL_EYE, CTRL_REF, CTRL_VVEC, CTRL_PERSP_ANG} CTRL_CMD; class QGLE3DViewer : public QDialog { Q_OBJECT public: QGLE3DViewer(QWidget* parent, GLEInterface* iface); protected: //! Called when the user presses a key void keyPressEvent(QKeyEvent *event); private slots: void ctrlSelectionChanged(int value); private: QSlider *createSlider(); QGLE3DWidget *glWidget; QComboBox *crCtrl; CTRL_CMD ctrl; double zoomStep; double rotateStep; double distanceStep; }; #endif gle-graphics-4.2.4c/src/gui/qgle.pro.in0000664000000000000000000001161111720262226016363 0ustar rootroot# # QGLE - A Graphical Interface to GLE # Copyright (C) 2006 A. S. Budden & J. Struyf # # 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # Also add information on how to contact you by electronic and paper mail. # TEMPLATE = app TARGET += DEPENDPATH += . INCLUDEPATH += . CONFIG += qt unix:MOC_DIR = ./moc unix:OBJECTS_DIR = ./objects QT += network QT += opengl macx { TARGET = "QGLE" } @QT_CONFIG@ # If in debug mode, show the console in Windows # Otherwise, stop qDebug from outputting anything. CONFIG(debug, debug|release) { # win32 { # The following is automatically set to # "windows" in release mode, we override it here # in debug mode so that we can see the debugging output. # for a release build, change "CONFIG += debug" above # to "CONFIG += release". # CONFIG += console # } win32 { DEFINES += QT_NO_DEBUG_OUTPUT } } else { # No debug mode -> no debug output! DEFINES += QT_NO_DEBUG_OUTPUT } # Input HEADERS += about.h \ amove.h \ arc.h \ circle.h \ colourbutton.h \ colourpicker.h \ component.h \ consolewindow.h \ drawingobject.h \ ellipse.h \ fileinfo.h \ gledrawing.h \ grid.h \ gsinc/*.h \ line.h \ mainwindow.h \ newfile.h \ polararray.h \ propertyeditor.h \ propertymodel.h \ qgle_definitions.h \ qgle_statics.h \ qgs.h \ serverthread.h \ settings.h \ settings_dialogue.h \ snapline.h \ text.h \ variantdelegate.h \ objectblocks.h \ dialogues.h \ 3dviewer.h SOURCES += about.cpp \ amove.cpp \ arc.cpp \ circle.cpp \ colourbutton.cpp \ colourpicker.cpp \ component.cpp \ consolewindow.cpp \ drawingobject.cpp \ ellipse.cpp \ fileinfo.cpp \ gledrawing.cpp \ grid.cpp \ line.cpp \ main.cpp \ mainwindow.cpp \ newfile.cpp \ polararray.cpp \ propertyeditor.cpp \ propertymodel.cpp \ qgle_statics.cpp \ qgs.cpp \ qgslibloader.cpp \ serverthread.cpp \ settings.cpp \ settings_dialogue.cpp \ snapline.cpp \ text.cpp \ variantdelegate.cpp \ objectblocks.cpp \ dialogues.cpp \ 3dviewer.cpp RESOURCES += qgle.qrc win32 { RC_FILE += qgle.rc } macx { ICON += images/gle.icns SOURCES += macspecific.cpp # LIBS += -framework Cocoa } DISTFILES += readme.txt \ gpl.txt \ gsinc/LICENSE \ images/amove.png \ images/arc_3p.png \ images/circle.png \ images/edit_mode.png \ images/editor.png \ images/gle.ico \ images/gle.png \ images/grid.png \ images/gle.icns \ images/grid_snap.png \ images/line.png \ images/new.png \ images/open.png \ images/orthosnap.png \ images/osnap.png \ images/perp_line.png \ images/pointer.png \ images/polarsnap.png \ images/polartrack.png \ images/preview_mode.png \ images/save.png \ images/tan_line.png \ images/zoom_in.png \ images/zoom_out.png \ images/reload.png \ images/reload_red.png LIBS += $$QMAKE_LIBS_DYNLOAD # link against the GLE library (unix -> Linux and Mac OS/X) unix { LIBS += -lgle-graphics-@GLE_VERSION@ -L../../build/lib/ } win32 { LIBS += -lglu32 LIBS += -lgle-graphics-@GLE_VERSION@ -L../../build/bin/ } # place the resulting QGLE executable in the "bin" subdirectory of "build" DESTDIR = ../../build/bin # add the "lib" directory to the search path of the linker unix { LIBS += @QT_RPATH@ @QT_LIBGLU_LIB@ } QMAKE_CXXFLAGS += @QT_CPPFLAGS@ QMAKE_CFLAGS += @QT_CPPFLAGS@ QMAKE_LDFLAGS += @QT_LDFLAGS@ # vim:et gle-graphics-4.2.4c/src/gui/qgle_statics.h0000664000000000000000000002537411677265352017170 0ustar rootroot/*********************************************************************************** * QGLE - A Graphical Interface to GLE * * Copyright (C) 2006 A. S. Budden & J. Struyf * * * * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * * * Also add information on how to contact you by electronic and paper mail. * ***********************************************************************************/ #ifndef __QGLE_STATICS_H #define __QGLE_STATICS_H #include #include "../gle/gle-interface/gle-interface.h" //! Class providing static helper functions for the main code class QGLE { public: //! Flush the IO so that debug messages appear immediately static void flushIO(); //! The list of commands that can be used enum Commands { // For drawing a new line: StartNewLineWithPoint, SetLineEndPoint, EndNewLine, // For drawing a new Tangential Line: StartNewTanLineWithPoint, SetTanLineEndPoint, EndNewTanLine, // For drawing a new Perpendicular Line: StartNewPerpLineWithPoint, SetPerpLineEndPoint, EndNewPerpLine, // For drawing a new circle StartNewCircleWithCentre, SetCircleEdgePoint, EndNewCircle, // For drawing a new ellipse StartNewEllipseWithCorner, SetEllipseSecondCorner, EndNewEllipse, // For drawing a new arc StartNewArcWithPoint, SetArcEndPoint, SetArcMidPoint, EndNewArc, // Create a new text object CreateTextObject, // User hit the escape key Cancel, // User pressed delete DeleteSelected, // For setting the amove SetAMove }; //! Print a date in a pretty format /*! * This only supports English dates at present: this is because * the readme.txt file is only likely to be written in English * at the moment. Once internationalisation is done and the * readme.txt about box is replaced with a help system based on * QAssistant, this function can be replaced with one that uses the * current locale. This uses the long name for the month so as to * avoid ambiguity between dd/mm/yyyy and mm/dd/yyyy. Its argument * is the date in dd/mm/yyyy format (with leading zeros). */ static QString prettyDate(QString datestr); //! Return the sign of a number static int sign(double n); //! Return the sign of a number static int sign(int n); //! Return the quadrant that an angle is in static int quadrant(double angle); //! Get the filename of an executable static QString GetExeName(); //! Get the directory of a file static QString GetDirName(QString fname); //! Convert GLE to Qt String static QString gleToQString(GLEString* str); //! Convert STL to Qt String static inline QString stlToQString(const string& str) { return QString::fromUtf8(str.c_str(), str.length()); }; //! Convert Qt to GLE String static void qtToGLEString(const QString& str1, GLEString* str2); //! Static member used for converting between coordinate system static QPointF absGLEToQt(double gleX, double gleY, double dpi, int areaHeight); //! Static member used for converting between coordinate systems static QSizeF qtSizeToGLE(QSizeF qt, double dpi); //! Static member used for converting between coordinate system static QPointF absGLEToQt(QPointF gle, double dpi, int areaHeight); static QPointF absGLEToQt(const GLEPoint& gle, double dpi, int areaHeight); //! Static member used for converting between coordinate system static QPointF relGLEToQt(double gleX, double gleY, double dpi); //! Static member used for converting between coordinate system static QPointF relGLEToQt(QPointF gle, double dpi); //! Static member used for converting between coordinate system static QSizeF relGLEToQt(QSizeF gle, double dpi); //! Static member used for converting individual relative numbers static double relGLEToQt(double gle, double dpi); //! Static member used for converting between coordinate system static QPointF absQtToGLE(QPointF qt, double dpi, int areaHeight); //! Static member used for converting between coordinate system static QPointF absQtToGLE(double qtX, double qtY, double dpi, int areaHeight); //! Static member used for converting between coordinate system static QPointF relQtToGLE(double qtX, double qtY, double dpi); //! Static member used for converting between coordinate system static QPointF relQtToGLE(QPointF qt, double dpi); //! Static member used for converting between coordinate system static QSizeF relQtToGLE(QSizeF qt, double dpi); //! Static member used for converting individual relative numbers static double relQtToGLE(double qt, double dpi); //! Static member used for type converting Qt points to GLEPoints static GLEPoint QPointFToGLEPoint(const QPointF& pt); //! Static member used for type converting GLEPoints to Qt points static QPointF GLEPointToQPointF(const GLEPoint& pt); //! Static member used for converting from GLE coordinates to a GLE coordinate string static QString GLEToStr(QPointF gle); //! Static member used for converting from GLE coordinates to a GLE coordinate string static QString GLEToStr(double gleX, double gleY); //! Static member used for converting from GLE distance to a GLE string static QString GLEToStr(double gle); //! Static member used for cropping extra zeros from a QString static QString ZeroCrop(QString str); //! Static member used for rotating coordinates static QPointF parkTransform(QPointF original, double angle); //! Static member used for rotating coordinates about a point static QPointF rotateAboutPoint(QPointF original, double angle, QPointF basePoint); //! Static member used for conversion between radians and degrees static double radiansToDegrees(double rads); //! Static member used for conversion between radians and degrees static double degreesToRadians(double degrees); //! Static member used to compute the minimum of two double values static double min(double a, double b); //! Static member comverting from centimeters to PostScript points static double cmToPt(double cm); //! Static member used to compute the DPI value based on the display and image size (in cm) static int computeAutoScaleDPIFromCm(const QSize& bitmapSize, int inset, double imgWd, double imgHi); //! Static member used to compute the DPI value based on the display and image size (in pt) static int computeAutoScaleDPIFromPts(const QSize& bitmapSize, int inset, double bbWd, double bbHi); //! Static member used for finding the distance between two points static double distance(QPointF one, QPointF two); //! Static member used for finding the distance between two points static double distance(double x, double y, QPointF two); //! Static member used for finding the angle between two points static double angleBetweenTwoPoints(QPointF one, QPointF two); //! Static member used to give OS dependent file regular expression static QRegExp fileRegExp(); //! Static member providing the GS lib file name static QString gsLibFileName(); //! Static member providing the GS lib filter static QString libraryFilter(); //! Static member providing the GLE file name static QString gleExecutableName(); //! Static member providing a filter for executables static QString executableFilter(); //! Static member to enable a button if it is not null static void setEnabled(QPushButton* button, bool enable); //! Static member to draw a box around a point static void drawBox(QPainter *p, QPointF origin, double half_size, QPen pen); //! Static member to fill a box static void fillBox(QPainter *p, QPointF origin, int half_size, const QBrush& brush); //! Static member to draw a rotating handle around a point static void drawRotator(QPainter *p, QPointF origin, int corner, double half_size, QPen pen); //! Static member to draw a line with arrows at the ends static void drawArrowLine(QPainter *p, qreal x0, qreal y0, qreal x1, qreal y1, qreal size, qreal angle, bool a0, bool a1, const QPen& pen); //! Static member to draw a scale handle around a point static void drawScaleHandle(QPainter *p, QPointF origin, int dx, int dy, double half_size, QPen pen); //! Static member to draw a cross at a point static void drawCross(QPainter *p, QPointF origin, double half_size, QPen pen); //! Static member to draw the perpendicular snap mark static void drawPerpMark(QPainter *p, QPointF origin, QPen pen); //! Static member to draw the tangent snap mark static void drawTangentMark(QPainter *p, QPointF origin, QPen pen); //! Static member to draw an intersection mark static void drawIntersectMark(QPainter *p, QPointF origin, QPen pen); //! Static member to draw OSnaps static void drawOSnap(QPainter *p, QPair snap); //! Static member to draw OSnaps static void drawOSnap(QPainter *p, QPointF snap, int type); //! Static member to decide whether numbers are in order (either way round) static bool inOrder(double x, double y, double z); //! Static member to convert from Qt Colours to GLE Colours static QString colourQtToGLE(QColor colour); static QString getFileNameExtension(const QString& name); static bool isGraphicsExtension(const QString& name); static QString addFileNameExtension(const QString& name, const char* ext); static void ensureFileNameExtension(QString* str, const char* ext); static QPen osnapLinePen(); static QPen otrackLinePen(); static QPen osnapPen(); static QPen handlePen(); enum SnapTypes { EndPointSnap, MidPointSnap, QuadrantSnap, CentreSnap, TangentSnap, IntersectSnap, PerpendicularSnap, NearestPointSnap }; enum ScaleMethods { ProportionalScale, HorizontalScale, VerticalScale }; static QPointF calculateScaleRatios(QPointF basePoint, QPointF startPoint, QPointF endPoint, int method); }; #endif gle-graphics-4.2.4c/src/gui/line.h0000664000000000000000000000640011405446017015406 0ustar rootroot/*********************************************************************************** * QGLE - A Graphical Interface to GLE * * Copyright (C) 2006 A. S. Budden & J. Struyf * * * * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * * * Also add information on how to contact you by electronic and paper mail. * ***********************************************************************************/ #ifndef _GLELINE_H #define _GLELINE_H #include "drawingobject.h" //! Class describing a line drawing object class GLELine : public GLEDrawingObject { Q_OBJECT public: //! Enumeration of the points needed to draw a line enum Points { StartPoint, EndPoint }; //! Constructor used for initialising variables and connections GLELine(double resolution, QSize imageSize, GLEDrawingArea *area); //! Draw the line on the provided painter void draw(QPainter *p); //! Return the shortest distance between a given point and the line double distanceToPoint(const QPointF& p, QPointF *nearestPoint); //! Set one of the enumerated points void setPoint(int pointChoice, const QPointF& p, bool update = true); void addRelativeOSnaps(QPointF p); void createOTracks(); //! Find points where a line intersects the line // If vertical = true, m contains 'x' QList intersections(double qtm, double qtc, bool vertical = false); QList intersections(QPointF qtp1, double angle); QList intersections(QPointF qtp1, QPointF qtp2); QList getTangents(QPointF p); bool hasTangents(); QList getPerpendiculars(QPointF p); bool hasPerpendiculars(); //! Is the point inside the object (for a line, always false) bool isInside(QPointF p); int supportedTransformMode(); void linearTransform(const GLELinearEquation& ex, const GLELinearEquation& ey); void moveBy(QPointF offset); void rotateBy(double radians); private slots: //! Update the painter path when the resolution or start/end points change void updateLine(); void updateFromProperty(int property); }; #endif gle-graphics-4.2.4c/src/gui/component.h0000664000000000000000000001227011405446017016463 0ustar rootroot/*********************************************************************************** * QGLE - A Graphical Interface to GLE * * Copyright (C) 2006 A. S. Budden & J. Struyf * * * * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * * * Also add information on how to contact you by electronic and paper mail. * ***********************************************************************************/ #ifndef _GLECOMPONENT_H #define _GLECOMPONENT_H #include #include "qgle_definitions.h" #include "qgle_statics.h" // The intention is that this is the parent of GLEDrawingObject // and of SnapLine etc // // A lot of the functionality of GLEDrawingObject will derive from // here. It might be simpler to change GLEDrawingObject into // GLEComponent and reimplement GLEDrawingObject by extracting // the bits that aren't needed by SnapLine. class GLEComponent : public QObject { Q_OBJECT friend class GLEDrawingObject; friend class SnapLine; friend class GLELine; friend class GLECircle; friend class GLEEllipse; friend class GLEArc; friend class GLEAmove; friend class GLEText; friend class GLEPolarArray; public: GLEComponent(double resolution, QSize imageSize, QObject *parent); void setBasePoint(const QPointF& qtp); //! A function that returns a painter path that can be used to draw the object QPainterPath path(); //! Set the pen for drawing void setPen(QPen newPen) { paintPen = newPen; }; //! Return the pen used for drawing QPen pen() { return(paintPen); }; //! Virtual function to update the component after, e.g., points have changed virtual void updateAll(); //! Virtual function to draw the object on a provided painter virtual void draw(QPainter *p) = 0; //! Virtual function to return the shortest distance between a given point and the object virtual double distanceToPoint(const QPointF& p, QPointF *nearestPoint = 0) = 0; //! Virtual function to set a point virtual void setPoint(int pointChoice, const QPointF& p, bool update = true); //! Function to set a length inline void setLength(int pointChoice, double len, bool update = true) { setPoint(pointChoice, QPointF(len,0), update); } //! Virtual function to find points where a line intersects an object virtual QList intersections(QPointF qtp1, QPointF qtp2) = 0; virtual QList intersections(QPointF qtp1, double angle) = 0; virtual QList intersections(double qtm, double qtc, bool vertical) = 0; //! Get a point in GLE coordinates QPointF getGLEPoint(int pointChoice, bool stored = false); //! Get a point in Qt coordinates QPointF getQtPoint(int pointChoice, bool stored = false); //! Get a value in GLE coordinates double getGLELength(int pointChoice, bool stored = false); //! Get a value in Qt coordinates double getQtLength(int pointChoice, bool stored = false); //! Get an angle in GLE coordinates double getGLEAngle(int pointChoice, bool stored = false); //! Get an angle in Qt coordinates double getQtAngle(int pointChoice, bool stored = false); //! Check whether a point or value has been set bool isSet(int pointChoice); // Convert GLE to Qt coordinates QPointF getQtPoint(const QPointF& glePoint); public slots: //! Update the resolution of drawing objects void setDPI(double newDPI); //! Update the image height used for coordinate transforms void setPixmapSize(QSize newPixmapSize, double newDPI); signals: //! Notify the world that a point has changed void pointChanged(); //! Notify subclasses that the dpi or image height had changed void imageChanged(); protected: //! Contains the painter path QPainterPath *paintPath; //! Contains the pen used to draw the path QPen paintPen; //! The list of points QHash pointHash; //! Image resolution double dpi; //! Image height QSize pixmap; //! Line Width double lineWidth; QHash storedPointHash; QPointF basePoint; QHash equationParameters; QHash storedEquationParameters; }; #endif gle-graphics-4.2.4c/src/gui/colourbutton.h0000664000000000000000000000422311405446017017217 0ustar rootroot/*********************************************************************************** * QGLE - A Graphical Interface to GLE * * Copyright (C) 2006 A. S. Budden & J. Struyf * * * * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * * * Also add information on how to contact you by electronic and paper mail. * ***********************************************************************************/ #ifndef __COLOURBUTTON_H #define __COLOURBUTTON_H #include class ColourButton : public QAbstractButton { Q_OBJECT public: ColourButton(QColor col = QColor(), QWidget *parent = 0); ColourButton(QPixmap px, QWidget *parent = 0); void setColour(QColor col); public slots: void onClick(); signals: void colourChosen(QColor col); protected: void paintEvent(QPaintEvent *event); QSize sizeHint() const; private: QColor colour; QPixmap pixmap; bool hasPixmap; }; #endif gle-graphics-4.2.4c/src/gui/qgle.rc0000664000000000000000000000005411405446017015563 0ustar rootrootIDI_ICON1 ICON DISCARDABLE "images/gle.ico" gle-graphics-4.2.4c/src/gui/dialogues.h0000664000000000000000000001250711676161223016443 0ustar rootroot/*********************************************************************************** * QGLE - A Graphical Interface to GLE * * Copyright (C) 2006 A. S. Budden & J. Struyf * * * * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * * * Also add information on how to contact you by electronic and paper mail. * ***********************************************************************************/ #ifndef _DIALOGUES_H #define _DIALOGUES_H #include #include #include "mainwindow.h" #include "consolewindow.h" class EvaluatorDialog : public QDialog { Q_OBJECT public: EvaluatorDialog(GLEMainWindow *parent); private slots: void eval(); void clearResults(); private: GLEMainWindow *mainWin; ConsoleWindow* results; QLineEdit* field; }; //! Dialogue box used to export to different formats class ExportDialogue : public QDialog { Q_OBJECT public: ExportDialogue(GLEMainWindow *parent); private slots: void exportFormatChanged(int idx); void exportFormatChangedImpl(int idx, bool updateAll); int entryIDtoDevice(int id); void resolutionChanged(int value); void exportClicked(); void exportAsClicked(); private: void updateResolution(); void performExport(const QString& file); void addFormat(const QString& name, int gleFormatID); bool isBitmap(); int device; QList fmtToDevice; GLEMainWindow *mainWin; QListWidget* list; QCheckBox* transp; QCheckBox* grayScale; QCheckBox* openResult; QLineEdit* fname; QSpinBox* resolution; QLabel* resolutionLabel; QLabel* sizeLabel; QComboBox* format; bool previousWasBitmap; }; class SoftwareLocateDialogue; class SoftwareLocateThread : public QThread { Q_OBJECT protected: SoftwareLocateDialogue* parentWindow; QString rootDir; public: SoftwareLocateThread(SoftwareLocateDialogue* parent, const QString& root); ~SoftwareLocateThread(); void run(); signals: void threadDone(); }; class SoftwareLocateOutput : public QObject, public GLEOutputStream { Q_OBJECT public: SoftwareLocateOutput(); virtual ~SoftwareLocateOutput(); virtual void println(const char* str); virtual void printflush(const char* str); signals: void print(const QString str); }; #define QGLE_SOFT_DIALOG_SEARCH_MANUAL 1 #define QGLE_SOFT_DIALOG_SEARCH_ABORT 2 #define QGLE_SOFT_DIALOG_SEARCH_CANCEL 4 //! Dialogue box used to locate the GhostScript library class SoftwareLocateDialogue : public QDialog { Q_OBJECT public: SoftwareLocateDialogue(GLEMainWindow *parent, GLEInterface* iface, int buttons); ~SoftwareLocateDialogue(); void showGhostScriptError(QString error, QString loc); void disableAll(); void enableOK(bool enable); inline GLEMainWindow* getMainWindow() { return mainWin; } inline bool isCancel() { return cancel; } inline bool hasFound() { return found; } inline bool isConfigModified() { return modified; } inline GLEInterface* getGLEInterface() { return gleInterface; } inline void setRootDir(const QString& dir) { rootDir = dir; } private slots: void locateManual(); public slots: void searchAuto(); void cancelClicked(); void setRootClicked(); void print(const QString str); void threadDone(); private: void tryGhostScriptLocation(QString loc); bool found, modified; GLEInterface* gleInterface; QPushButton* rootButton; QPushButton* searchButton; QPushButton* locButton; QPushButton* abortButton; QPushButton* okButton; QTextBrowser* browser; SoftwareLocateOutput output; GLEMainWindow *mainWin; QString rootDir; bool cancel; }; class CrashRecoverDialogue : public QDialog { Q_OBJECT public: CrashRecoverDialogue(const QString& file); QString createReport(); void saveEmail(); void foundFile(QStringList* list, const QDir& dir, const QString& file); void performRequest(QString url, QString script); public slots: void viewReport(); void sendReport(); void cancelReport(); void requestFinished(int id, bool error); protected: int requestID, closeID; QHttp* http; QBuffer *buffer; QFileInfo gleFileName; QString crashLog; QStringList crashLogLines; QTextEdit* description; QLineEdit* email; QCheckBox* includeScript; QPushButton* sendButton; QPushButton* cancelButton; }; #endif gle-graphics-4.2.4c/src/gui/mainwindow.cpp0000664000000000000000000022713211722435134017175 0ustar rootroot/*********************************************************************************** * QGLE - A Graphical Interface to GLE * * Copyright (C) 2006 A. S. Budden & J. Struyf * * * * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * * * Also add information on how to contact you by electronic and paper mail. * ***********************************************************************************/ /*************************************************************** * mainwindow.cpp: The class implementation for GLEMainWindow. * ***************************************************************/ #include #include #include #include #include "mainwindow.h" #include "qgle_statics.h" #include "settings.h" #include "settings_dialogue.h" #include "qgs.h" #include "about.h" #include "newfile.h" #include "consolewindow.h" #include "dialogues.h" #include "3dviewer.h" #include "../gle/cutils.h" #include "../gle/gle-block.h" #include "../gle/surface/gsurface.h" // #include "downloader.h" #include using namespace std; void SetQGLEScriptNameBackup(QString name); //! Class Constructor GLEMainWindow::GLEMainWindow(int argc, char *argv[]) { // Initially enabled state is false enabledState = false; // Resize to an initial default size resize(500,300); // Set the Window Icon setWindowIcon(QIcon(":images/gle.png")); // Coordinate display default coordView = CoordinateCart; lastPoint = QPointF(0,0); evaluatorDialog = NULL; // GhostScript version number GsLibVersionNumber = "?"; // Create the gle interface gleInterface = GLEGetInterfacePointer(); gleScript = NULL; // Initialise temp file names // Should be unique names - otherwise can't run multiple QGLE instances tempFiles[PreviewModeOutput] = createTempFile(tr(".out")); tempFiles[EditModeOutput] = createTempFile(tr(".out")); tempFiles[NewGLE] = createTempFile(tr(".gle")); // Create the drawing area in a scroll widget. For high resolutions, // this may be undesirable as the whole image must be rendered by GS drawingArea = new GLEDrawingArea(gleInterface, this); scrollArea = new QScrollArea(this); scrollArea->setWidget(drawingArea); splitWindow = new QSplitter(Qt::Vertical, this); splitWindow->addWidget(scrollArea); consoleWindow = new ConsoleWindow(this, splitWindow); splitWindow->addWidget(consoleWindow); splitWindow->setStretchFactor(0, 1); splitWindow->setStretchFactor(1, 0); gleInterface->setOutputStream(consoleWindow->getOutput()); gleInterface->initializeGLE("qgle", argc, argv); QList splitSizes; splitSizes.append(50); splitSizes.append(50); splitWindow->setSizes(splitSizes); setCentralWidget(splitWindow); // Create the component parts createActions(); createMenus(); createStatusBar(); createToolBars(); createEditModeToolBars(); qRegisterMetaType >("QList"); // Read the application settings settings = new GLESettings(this); settings->readAll(); // We always resize, we just only save the size if requested resize(settings->size()); move(settings->position()); splitWindow->restoreState(settings->splitterPosition()); consoleWindow->setAutoShowSize(settings->getConsoleWindowAutoShowSize()); createDockWindows(); enableEditModeToolBars(false); // Connect signals connect(settings, SIGNAL(polarSnapStartAngleChanged(double)), drawingArea, SLOT(setPolarSnapStartAngle(double))); connect(settings, SIGNAL(polarSnapIncAngleChanged(double)), drawingArea, SLOT(setPolarSnapIncAngle(double))); connect(drawingArea, SIGNAL(selectionChanged(QList)), propertyEditor, SLOT(objectsSelected(QList))); connect(propertyEditor, SIGNAL(propertiesHaveChanged()), drawingArea, SLOT(update())); // Initialise snapping if (settings->polarSnapOnStart()) polarSnapAct->setChecked(true); if (settings->polarTrackOnStart()) polarTrackAct->setChecked(true); if (settings->gridSnapOnStart()) gridSnapAct->setChecked(true); if (settings->osnapOnStart()) osnapAct->setChecked(true); if (settings->orthoSnapOnStart()) orthoSnapAct->setChecked(true); // As necessary, start the file monitor fileMonitorCount = 0; fileMonitorTimer = new QTimer(this); connect(fileMonitorTimer, SIGNAL(timeout()), this, SLOT(checkForFileUpdates())); updateFileMonitor(settings->monitorOpenFile()); // The following line is important as it allows // QImage objects to be passed by the signal-slot // mechanism. qRegisterMetaType("QImage"); qRegisterMetaType("GLEFileInfo"); // Initialise the serverRunning variable serverRunning = false; // Start in preview mode currentMode = GLESettings::PreviewMode; oldMode = currentMode; serverInPreviewMode = true; serverAct->setChecked(true); initRenderThread(); // Setting connections // If the grid is changed, update the drawing connect(settings, SIGNAL(gridChanged(QPointF)), drawingArea, SLOT(setGrid(QPointF))); // If the file monitor is switched on or off, // sort this out connect(settings, SIGNAL(monitorFileChanged(bool)), this, SLOT(updateFileMonitor(bool))); // If a tool is selected, notify the drawing connect(this, SIGNAL(toolSelected(int)), drawingArea, SLOT(setTool(int))); // If a new image is rendered, update the drawing connect(this, SIGNAL(imageChanged(QImage)), drawingArea, SLOT(updateDisplay(QImage))); // If a point is drawn, set the base point used for // relative coordinates connect(drawingArea, SIGNAL(basePointChanged(QPointF)), this, SLOT(setRelativeBasePoint(QPointF))); // If the drawing area requests a status bar message, // display it connect(drawingArea, SIGNAL(updateStatusBar(QString)), this, SLOT(statusBarMessage(QString))); // If the dirty flag is set or unset, enable or disable // the 'save' button accordingly connect(drawingArea, SIGNAL(dirtyFlagChanged(bool)), this, SLOT(setSaveEnable(bool))); // If the dpi changes, update the status bar display connect(drawingArea, SIGNAL(dpiChanged(double)), this, SLOT(updateDPIDisplay(double))); // Allow the drawing area to disable all tools connect(drawingArea, SIGNAL(disableTools()), this, SLOT(noToolEnable())); // Get the default resolution drawingArea->setDPI((double) settings->dpi()); // Update the grid spacing drawingArea->setGrid(settings->grid()); // Accept keyboard events setFocusPolicy(Qt::StrongFocus); setFocus(Qt::OtherFocusReason); // Drag and drop setAcceptDrops(true); // Make sure are tools are enabled correctly updateEnableActions(true); // Display a title on the title bar updateWindowTitle(); // Check for arguments QRegExp rx = QGLE::fileRegExp(); for(int i=0;igetTempFile(); return QString::fromUtf8(temp.c_str()) + ext; } // Switch on or off the file monitor void GLEMainWindow::updateFileMonitor(bool state) { if (state) { if (!fileMonitorTimer->isActive()) { // One second timer fileMonitorTimer->start(500); } } else { if (fileMonitorTimer->isActive()) { fileMonitorTimer->stop(); } } // used to wait another "tick" before auto-reloading fileMonitorCount = 0; } bool GLEMainWindow::askAnywayBeforeReload() { return false; } // Check whether the file has changed void GLEMainWindow::checkForFileUpdates() { int answer = 1; GLEFileInfo* currFile = getCurrentFile(); if (enabledState && currFile->hasChanged()) { if (settings->monitorAutoReloadFile() && !askAnywayBeforeReload()) { if (fileMonitorCount < 1) { // wait another "tick" to make sure file saved correctly // don't want to load partially saved files fileMonitorCount++; return; } } // reset counter for next iteration fileMonitorCount = 0; // If the file has changed, update the stored time stamp and // stop the timer while we ask the user what to do. fileMonitorTimer->stop(); // Ask the user whether to reload and, if we have any objects, should // we keep them? QString msg = QString(tr("File %1 has changed on disk.")).arg(currFile->primaryFile()); if (drawingArea->isDirty()) { QString msg2 = QString(tr("%1\n\nWarning: you have also modified this file in QGLE. If you reload then these changes will be lost.")).arg(msg); answer = QMessageBox::question(this, tr("%1 File Monitor").arg(APP_NAME), msg2, tr("Reload file"), tr("Ignore"), QString(), 0,1); } else if (settings->monitorAutoReloadFile() && !askAnywayBeforeReload()) { answer = 0; } else if (currFile->isEPS() || currFile->isGLE()) { answer = QMessageBox::question(this, tr("%1 File Monitor").arg(APP_NAME), msg, tr("Reload file"), tr("Ignore"), QString(), 0,1); } bool isOpen = false; switch(answer) { case 0: openFile(currFile->primaryFile()); isOpen = true; break; default: break; } // Restart the timer currFile->updateTimeStamp(); if (!isOpen) fileMonitorTimer->start(); } } // Accept URI lists that have been dragged over the application void GLEMainWindow::dragEnterEvent(QDragEnterEvent *event) { if (event->mimeData()->hasFormat("text/uri-list")) event->acceptProposedAction(); } // Handle dropped URIs void GLEMainWindow::dropEvent(QDropEvent *event) { // This will need to check that the file is a GLE or EPS // file and then try to open it, by stripping off the file:// part // and calling openFile(fileName). Worth checking that the file // exists and is readable while we're at it. // We're only interested in the first URI as this isn't a // multi-document interface QString uri = event->mimeData()->urls().at(0).toString(); QRegExp rx = QGLE::fileRegExp(); if (rx.exactMatch(uri)) { openFile(rx.capturedTexts()[2]); } else QMessageBox::information(this, "Drop Event", "Dropped file cannot be opened", QMessageBox::Ok); event->acceptProposedAction(); } // User pressed a key // Keyboard shortcuts are based on those used in AutoCAD void GLEMainWindow::keyPressEvent(QKeyEvent *event) { // Since we haven't any keyboard shortcuts that // use modifiers, if there are any modifiers, // ignore the key press if (event->modifiers() != Qt::NoModifier) event->ignore(); switch (event->key()) { // Delete or escape keys are handled by the drawing itself case Qt::Key_Delete: case Qt::Key_Escape: drawingArea->hitKey(event->key(), event->modifiers()); event->accept(); break; case Qt::Key_F9: // F9 is used to toggle grid snap gridSnapAct->toggle(); event->accept(); break; case Qt::Key_F3: // F3 is used to toggle OSNAP: snapping to objects osnapAct->toggle(); event->accept(); break; case Qt::Key_F10: // F10 is used to toggle polar snap: customisable snapping polarSnapAct->toggle(); event->accept(); break; case Qt::Key_F12: // F12 is used to toggle polar track: multiple polar snaps polarTrackAct->toggle(); event->accept(); break; case Qt::Key_F8: // F8 is used to toggle ortho snap: 0 or 90 degree lines orthoSnapAct->toggle(); event->accept(); break; case Qt::Key_F7: // F7 is used to toggle grid visibility gridAct->toggle(); event->accept(); break; case Qt::Key_F1: // F1 shows the about box aboutAct->trigger(); event->accept(); break; case Qt::Key_Equal: case Qt::Key_Plus: // The equals key is used to zoom in // as is plus. zoomInAct->trigger(); event->accept(); break; case Qt::Key_Minus: // The minus key is used to zoom out zoomOutAct->trigger(); event->accept(); break; case Qt::Key_F6: // F6 cycles through the various coordinate views switch (coordView) { case CoordinateOff: coordView = CoordinateCart; mousePosition->setVisible(true); break; case CoordinateCart: coordView = CoordinatePolar; mousePosition->setVisible(true); break; case CoordinatePolar: mousePosition->setVisible(true); coordView = CoordinateRelCart; break; case CoordinateRelCart: mousePosition->setVisible(true); coordView = CoordinateRelPolar; break; case CoordinateRelPolar: mousePosition->setVisible(false); coordView = CoordinateOff; break; } updateMousePosition(); event->accept(); break; case Qt::Key_Shift: drawingArea->modifierToggle(GLEDrawingArea::ShiftKey, true); break; case Qt::Key_Control: drawingArea->modifierToggle(GLEDrawingArea::CtrlKey, true); break; case Qt::Key_Alt: drawingArea->modifierToggle(GLEDrawingArea::AltKey, true); break; default: event->ignore(); } } void GLEMainWindow::keyReleaseEvent(QKeyEvent *event) { // Since we haven't any keyboard shortcuts that // use modifiers, if there are any modifiers, // ignore the key press if (event->modifiers() != Qt::NoModifier) event->ignore(); switch (event->key()) { case Qt::Key_Shift: drawingArea->modifierToggle(GLEDrawingArea::ShiftKey, false); break; case Qt::Key_Control: drawingArea->modifierToggle(GLEDrawingArea::CtrlKey, false); break; case Qt::Key_Alt: drawingArea->modifierToggle(GLEDrawingArea::AltKey, false); break; default: event->ignore(); } } // Toggle the status of the server void GLEMainWindow::serverToggle(bool switchOn) { if (switchOn && (!serverRunning)) startServer(); else if ((!switchOn) && serverRunning) stopServer(); } // Initialize render thread void GLEMainWindow::initRenderThread() { // Remember to update the server as well if it's changed anywhere else renderThread = new GLERenderThread(this); // Connect server signals connect(renderThread, SIGNAL(serverMessage(QString)), this, SLOT(updateServerStatus(QString))); connect(renderThread, SIGNAL(serverError(QString)), this, SLOT(showConsoleError(QString))); // Notify the rendering code that an image is ready connect(renderThread, SIGNAL(renderComplete(QImage)), this, SLOT(renderComplete(QImage))); // Notify drawing area of resolution changes from the server connect(renderThread, SIGNAL(dpiChanged(double)), drawingArea, SLOT(setDPI(double))); } // Start the server void GLEMainWindow::startServer() { // Initialise the GS library initLibGS(); // Remember to update the server as well if it's changed anywhere else serverThread = new GLEServerThread(this, settings->port()); // Connect server signals connect(serverThread, SIGNAL(serverMessage(QString)), this, SLOT(updateServerStatus(QString))); // Notify QGLE that a new file has been opended using "gle -p" connect(serverThread, SIGNAL(gleMinusPRunned(QString)), this, SLOT(openFile(QString))); // Initialise the server serverThread->initialise(); serverRunning = true; } // Stop the server void GLEMainWindow::stopServer() { // This should clean it all up in theory delete(serverThread); serverRunning = false; } bool GLEMainWindow::tryGhostScriptLocation(const QString location, QString& error) { GSLibFunctions* fct = GSLibFunctions::getInstance(); if (fct->loadLibrary(location, error) == 0) { GsLibVersionNumber = fct->getVersion(); return true; } else { return false; } } // Initialise GS void GLEMainWindow::initLibGS() { QString error; bool found = false; GSLibFunctions* fct = GSLibFunctions::getInstance(); // First try the location given in the current settings QString location = settings->getLibGSLocation(); if (fct->loadLibrary(location, error) != 0) { // Next try the location proposed by GLE string gsloc = gleInterface->getGhostScriptLocation(); location = QString::fromUtf8(gsloc.c_str()); if (fct->loadLibrary(location, error) == 0) { found = true; } } else { found = true; } // If this does not work, consult the user if (!found) { SoftwareLocateDialogue dial(this, gleInterface, QGLE_SOFT_DIALOG_SEARCH_MANUAL | QGLE_SOFT_DIALOG_SEARCH_ABORT); dial.setWindowTitle("QGLE Error"); dial.showGhostScriptError(error, location); dial.exec(); // Don't forget to restore the console output restoreConsoleOutput(); if (dial.isConfigModified()) { gleInterface->saveRCFile(); } } // GSLibFunctions might discover the real location settings->setLibGSLocation(fct->libGSLocation()); GsLibVersionNumber = fct->getVersion(); } // Called when QGLE is closed void GLEMainWindow::closeEvent(QCloseEvent *event) { // Check whether to save changes if (drawingArea->isDirty()) { int reply = QMessageBox::question(this, tr("Quit QGLE"), tr("Save changes to drawing?"), QMessageBox::Yes, QMessageBox::No, QMessageBox::Cancel); if (reply == QMessageBox::Yes) save(); else if (reply == QMessageBox::No) { drawingArea->clearDirty(); } else { event->ignore(); return; } } // If the window size and position should be saved, update them if (settings->storeSize()) { settings->setPosition(pos()); settings->setSize(size()); settings->setDrawingAreaSize(getScrollAreaSize()); settings->setConsoleWindowAutoShowSize(consoleWindow->getAutoShowSize()); if (currentMode == GLESettings::EditMode) { int sizes[2]; sizes[0] = propertyEditor->height(); sizes[1] = objectBlocksList->height(); QByteArray winState((const char*)sizes, sizeof(int)*2); settings->setMainWindowState(winState); } QByteArray state = splitWindow->saveState(); settings->setSplitterPosition(state); } // Store the settings settings->writeAll(); // Delete all temporary files for (QHash::iterator it = tempFiles.begin(); it != tempFiles.end(); ++it) { QDir dir; QString file = it.value(); dir.remove(file); QString fileNoExt = file.left(file.length()-4); #ifdef Q_WS_WIN dir.remove(fileNoExt+tr(".tmp")); #else dir.remove(fileNoExt); #endif } event->accept(); } void GLEMainWindow::updateWindowTitle() { GLEFileInfo* currFile = getCurrentFile(); bool isGLE = currFile->isGLE(); bool has = isGLE || currFile->isEPS(); QString title(APP_NAME); if (has) { title += tr(" - ") + currFile->primaryFile(); } // Always include "[*]", it is treated special by Qt and only filled in when actually modified title += tr(" [*]"); setWindowTitle(title); } void GLEMainWindow::updateEnableActions(bool enable) { bool isGLE = getCurrentFile()->isGLE(); bool has = isGLE || getCurrentFile()->isEPS(); bool prevMode = (currentMode == GLESettings::PreviewMode); bool figure = (previewPageSize->currentIndex() == 0); enabledState = enable && has; editorAct->setEnabled(has); copyBitmapAct->setEnabled(has); if (copyPDFAct != NULL) copyPDFAct->setEnabled(has); if (copyEMFAct != NULL) copyEMFAct->setEnabled(has); saveAsAct->setEnabled(has && enable); saveAct->setEnabled(has && drawingArea->isDirty() && enable); exportAct->setEnabled(isGLE && enable); emulateVersion->setEnabled(isGLE && prevMode && enable); previewPageSize->setEnabled(isGLE && prevMode && enable); previewModeAct->setEnabled(has && enable); editModeAct->setEnabled(isGLE && figure && enable); zoomInAct->setEnabled(has && enable); zoomOutAct->setEnabled(has && enable); zoomAutoAct->setEnabled(has && enable); openAct->setEnabled(enable); newAct->setEnabled(enable); evaluatorAct->setEnabled(enable); ghostScriptLogWindowAct->setEnabled(enable); view3DAct->setEnabled(enable && gleInterface->getSurface()->z != NULL); pointerToolAct->setEnabled(enable); moveToolAct->setEnabled(enable); lineToolAct->setEnabled(enable); tanLineToolAct->setEnabled(enable); perpLineToolAct->setEnabled(enable); circleToolAct->setEnabled(enable); ellipseToolAct->setEnabled(enable); arcToolAct->setEnabled(enable); textToolAct->setEnabled(enable); bool reloadActEnable = has && enable && prevMode; if (!reloadActEnable) { if (has && prevMode) { reloadAct->setIcon(reloadIconRed); } else { reloadAct->setIcon(reloadIconBlack); } } reloadAct->setEnabled(reloadActEnable); } void GLEMainWindow::clearConsoleWindow() { consoleWindow->clear(); } void GLEMainWindow::restoreConsoleOutput() { gleInterface->setOutputStream(consoleWindow->getOutput()); } void GLEMainWindow::createActions() { // Create the actions for each menu entry and connect them // to an appropriate slot // Action causing the current bitmap to be copied to the clipboard copyBitmapAct = new QAction(tr("&Copy as Bitmap"), this); copyBitmapAct->setStatusTip(tr("Copy current diagram as bitmap to clipboard")); connect(copyBitmapAct, SIGNAL(triggered()), this, SLOT(copyBitmap())); //! Action causing the figure to be copied to the clipboard as PDF copyPDFAct = NULL; #ifdef Q_WS_MAC copyPDFAct = new QAction(tr("&Copy as PDF"), this); copyPDFAct->setStatusTip(tr("Copy current diagram as PDF to clipboard")); connect(copyPDFAct, SIGNAL(triggered()), this, SLOT(copyPDF())); #endif //! Action causing the figure to be copied to the clipboard as EMF copyEMFAct = NULL; #ifdef Q_WS_WIN copyEMFAct = new QAction(tr("&Copy as EMF"), this); copyEMFAct->setStatusTip(tr("Copy current diagram as EMF to clipboard")); connect(copyEMFAct, SIGNAL(triggered()), this, SLOT(copyEMF())); #endif // Quit the application quitAct = new QAction(tr("&Quit"), this); quitAct->setShortcut(Qt::Key_Q | Qt::ControlModifier); quitAct->setStatusTip(tr("Exit QGLE")); connect(quitAct, SIGNAL(triggered()), this, SLOT(close())); // Create a new file newAct = new QAction(QIcon(":images/new.png"), tr("&New"), this); newAct->setShortcut(Qt::Key_N | Qt::ControlModifier); newAct->setStatusTip(tr("Create a new file")); connect(newAct, SIGNAL(triggered()), this, SLOT(newFile())); // Open a specified file openAct = new QAction(QIcon(":images/open.png"), tr("&Open"), this); openAct->setShortcut(Qt::Key_O | Qt::ControlModifier); openAct->setStatusTip(tr("Open an existing file")); connect(openAct, SIGNAL(triggered()), this, SLOT(openFile())); // Open a specified file in a new window openInNewWindowAct = new QAction(QIcon(":images/open.png"), tr("Open in New &Window"), this); openInNewWindowAct->setStatusTip(tr("Open an existing file in a new window")); connect(openInNewWindowAct, SIGNAL(triggered()), this, SLOT(openFileInNewWindow())); browseAct = new QAction(tr("&Browse Script Folder"), this); browseAct->setStatusTip(tr("Browse the folder that contains the GLE script")); connect(browseAct, SIGNAL(triggered()), this, SLOT(browseScriptFolder())); // Save the file saveAct = new QAction(QIcon(":images/save.png"), tr("&Save"), this); saveAct->setShortcut(Qt::Key_S | Qt::ControlModifier); saveAct->setStatusTip(tr("Save changes")); saveAct->setEnabled(false); connect(saveAct, SIGNAL(triggered()), this, SLOT(save())); // Save the file under a new name saveAsAct = new QAction(tr("Save &As"), this); saveAsAct->setStatusTip(tr("Save under a new name")); saveAsAct->setEnabled(false); connect(saveAsAct, SIGNAL(triggered()), this, SLOT(saveAs())); exportAct = new QAction(tr("&Export"), this); exportAct->setShortcut(Qt::Key_E | Qt::ControlModifier); exportAct->setStatusTip(tr("Export file")); exportAct->setEnabled(false); connect(exportAct, SIGNAL(triggered()), this, SLOT(openExportDialogue())); printAct = new QAction(tr("&Print"), this); printAct->setStatusTip(tr("Print file")); printAct->setEnabled(false); connect(printAct, SIGNAL(triggered()), this, SLOT(openPrintDialogue())); // Show an about box aboutAct = new QAction(tr("&About"), this); aboutAct->setStatusTip(tr("Show information about QGLE")); connect(aboutAct, SIGNAL(triggered()), this, SLOT(about())); gleSiteAct = new QAction(tr("&Website"), this); gleSiteAct->setStatusTip(tr("Open GLE website")); connect(gleSiteAct, SIGNAL(triggered()), this, SLOT(showGLEWebsite())); gleManualAct = new QAction(tr("&Manual"), this); gleManualAct->setShortcut(Qt::Key_F1); gleManualAct->setStatusTip(tr("Open GLE manual")); connect(gleManualAct, SIGNAL(triggered()), this, SLOT(showGLEManual())); // Toggle the grid visibility gridAct = new QAction(QIcon(":images/grid.png"), tr("Grid"), this); gridAct->setStatusTip(tr("Toggle the grid on and off")); gridAct->setCheckable(true); gridAct->setChecked(false); connect(gridAct, SIGNAL(toggled(bool)), drawingArea, SLOT(gridToggle(bool))); // Toggle grid snap gridSnapAct = new QAction(QIcon(":images/grid_snap.png"), tr("Snap Grid"), this); gridSnapAct->setStatusTip(tr("Toggle grid snap on and off")); gridSnapAct->setCheckable(true); gridSnapAct->setChecked(false); connect(gridSnapAct, SIGNAL(toggled(bool)), drawingArea, SLOT(gridSnapToggle(bool))); // Toggle osnap osnapAct = new QAction(QIcon(":images/osnap.png"), tr("Snap to Objects"), this); osnapAct->setStatusTip(tr("Toggle OSNAP on and off")); osnapAct->setCheckable(true); osnapAct->setChecked(false); connect(osnapAct, SIGNAL(toggled(bool)), drawingArea, SLOT(osnapToggle(bool))); // Toggle orthoSnap orthoSnapAct = new QAction(QIcon(":images/orthosnap.png"), tr("Snap to axes"), this); orthoSnapAct->setStatusTip(tr("Toggle ORTHO on and off")); orthoSnapAct->setCheckable(true); orthoSnapAct->setChecked(false); connect(orthoSnapAct, SIGNAL(toggled(bool)), drawingArea, SLOT(orthoSnapToggle(bool))); // Toggle polar snap polarSnapAct = new QAction(QIcon(":images/polarsnap.png"), tr("Polar snap"), this); polarSnapAct->setStatusTip(tr("Toggle customisable snaps on and off")); polarSnapAct->setCheckable(true); polarSnapAct->setChecked(false); connect(polarSnapAct, SIGNAL(toggled(bool)), this, SLOT(polarSnapToggle(bool))); // Toggle polar track polarTrackAct = new QAction(QIcon(":images/polartrack.png"), tr("Polar tracking"), this); polarTrackAct->setStatusTip(tr("Toggle multiple customisable snaps on and off")); polarTrackAct->setCheckable(true); polarTrackAct->setChecked(false); connect(polarTrackAct, SIGNAL(toggled(bool)), this, SLOT(polarTrackToggle(bool))); // Toggle whether the server is running serverAct = new QAction(QIcon(":images/server.png"), tr("Server"), this); serverAct->setStatusTip(tr("Start or stop the server")); serverAct->setCheckable(true); serverAct->setChecked(false); connect(serverAct, SIGNAL(toggled(bool)), this, SLOT(serverToggle(bool))); // Switch to preview mode editPreviewGroup = new QActionGroup(this); previewModeAct = new QAction(QIcon(":images/preview_mode.png"), tr("Preview Mode"), this); previewModeAct->setStatusTip(tr("Switch to preview mode")); previewModeAct->setCheckable(true); previewModeAct->setChecked(true); editPreviewGroup->addAction(previewModeAct); previewModeAct->setEnabled(false); connect(previewModeAct, SIGNAL(toggled(bool)), this, SLOT(previewModeToggle(bool))); // Switch to edit mode editModeAct = new QAction(QIcon(":images/edit_mode.png"), tr("Edit Mode"), this); editModeAct->setStatusTip(tr("Switch to edit mode")); editModeAct->setCheckable(true); editPreviewGroup->addAction(editModeAct); editModeAct->setEnabled(false); connect(editModeAct, SIGNAL(toggled(bool)), this, SLOT(editModeToggle(bool))); // Open file in editor editorAct = new QAction(QIcon(":images/editor.png"), tr("Open in Editor"), this); editorAct->setStatusTip(tr("Open file in text editor")); editorAct->setCheckable(false); editorAct->setEnabled(false); connect(editorAct, SIGNAL(triggered()), this, SLOT(openInTextEditor())); // Prepare icons for reload action reloadIconBlack.addPixmap(QPixmap(":images/reload.png"), QIcon::Normal, QIcon::Off); reloadIconRed.addPixmap(QPixmap(":images/reload.png"), QIcon::Normal, QIcon::Off); reloadIconRed.addPixmap(QPixmap(":images/reload_red.png"), QIcon::Disabled, QIcon::Off); // Reload reloadAct = new QAction(reloadIconBlack, tr("Reload File"), this); reloadAct->setStatusTip(tr("Reload file")); reloadAct->setCheckable(false); reloadAct->setEnabled(false); connect(reloadAct, SIGNAL(triggered()), this, SLOT(reloadFile())); // Zoom In zoomInAct = new QAction(QIcon(":images/zoom_in.png"), tr("Zoom In (+)"), this); zoomInAct->setStatusTip(tr("Zoom in")); zoomInAct->setCheckable(false); zoomInAct->setEnabled(false); connect(zoomInAct, SIGNAL(triggered()), this, SLOT(zoomIn())); // Zoom Out zoomOutAct = new QAction(QIcon(":images/zoom_out.png"), tr("Zoom Out (-)"), this); zoomOutAct->setStatusTip(tr("Zoom out")); zoomOutAct->setCheckable(false); zoomOutAct->setEnabled(false); connect(zoomOutAct, SIGNAL(triggered()), this, SLOT(zoomOut())); // Zoom Out zoomAutoAct = new QAction(tr("Zoom Auto"), this); zoomAutoAct->setStatusTip(tr("Zoom automatically to fit window")); zoomAutoAct->setCheckable(false); zoomAutoAct->setEnabled(false); connect(zoomAutoAct, SIGNAL(triggered()), this, SLOT(zoomAuto())); // Tools // Pointer tool toolGroup = new QActionGroup(this); pointerToolAct = new QAction(QIcon(":images/pointer.png"), tr("Pointer Tool"), this); pointerToolAct->setStatusTip(tr("Selection Tool")); pointerToolAct->setCheckable(true); pointerToolAct->setChecked(true); toolGroup->addAction(pointerToolAct); connect(pointerToolAct, SIGNAL(toggled(bool)), this, SLOT(pointerToolToggle(bool))); // Line tool lineToolAct = new QAction(QIcon(":images/line.png"), tr("Line Tool"), this); lineToolAct->setStatusTip(tr("Line Tool")); lineToolAct->setCheckable(true); toolGroup->addAction(lineToolAct); connect(lineToolAct, SIGNAL(toggled(bool)), this, SLOT(lineToolToggle(bool))); // Tan Line tool tanLineToolAct = new QAction(QIcon(":images/tan_line.png"), tr("Tangent Tool"), this); tanLineToolAct->setStatusTip(tr("Tangent Tool")); tanLineToolAct->setCheckable(true); toolGroup->addAction(tanLineToolAct); connect(tanLineToolAct, SIGNAL(toggled(bool)), this, SLOT(tanLineToolToggle(bool))); // Perpendicular Line tool perpLineToolAct = new QAction(QIcon(":images/perp_line.png"), tr("Perpendicular Tool"), this); perpLineToolAct->setStatusTip(tr("Perpendicular Tool")); perpLineToolAct->setCheckable(true); toolGroup->addAction(perpLineToolAct); connect(perpLineToolAct, SIGNAL(toggled(bool)), this, SLOT(perpLineToolToggle(bool))); // Circle tool circleToolAct = new QAction(QIcon(":images/circle.png"), tr("Circle Tool"), this); circleToolAct->setStatusTip(tr("Circle Tool")); circleToolAct->setCheckable(true); toolGroup->addAction(circleToolAct); connect(circleToolAct, SIGNAL(toggled(bool)), this, SLOT(circleToolToggle(bool))); // Ellipse tool ellipseToolAct = new QAction(QIcon(":images/ellipse.png"), tr("Ellipse Tool"), this); ellipseToolAct->setStatusTip(tr("Ellipse Tool")); ellipseToolAct->setCheckable(true); toolGroup->addAction(ellipseToolAct); connect(ellipseToolAct, SIGNAL(toggled(bool)), this, SLOT(ellipseToolToggle(bool))); // Arc tool arcToolAct = new QAction(QIcon(":images/arc_3p.png"), tr("Arc Tool"), this); arcToolAct->setStatusTip(tr("Circular Arc Tool")); arcToolAct->setCheckable(true); toolGroup->addAction(arcToolAct); connect(arcToolAct, SIGNAL(toggled(bool)), this, SLOT(arcToolToggle(bool))); // Text tool textToolAct = new QAction(QIcon(":images/text.png"), tr("Text Tool"), this); textToolAct->setStatusTip(tr("Text Tool")); textToolAct->setCheckable(true); toolGroup->addAction(textToolAct); connect(textToolAct, SIGNAL(toggled(bool)), this, SLOT(textToolToggle(bool))); // move tool moveToolAct = new QAction(QIcon(":images/amove.png"), tr("Move Tool"), this); moveToolAct->setStatusTip(tr("Final Point Tool")); moveToolAct->setCheckable(true); toolGroup->addAction(moveToolAct); connect(moveToolAct, SIGNAL(toggled(bool)), this, SLOT(moveToolToggle(bool))); // Display the settings dialogue box settingsAct = new QAction(tr("&Options"), this); settingsAct->setStatusTip(tr("Configure QGLE")); connect(settingsAct, SIGNAL(triggered()), this, SLOT(openSettingsDialogue())); evaluatorAct = new QAction(tr("&Evaluator"), this); evaluatorAct->setStatusTip(tr("Open expression evaluator window")); connect(evaluatorAct, SIGNAL(triggered()), this, SLOT(openEvaluator())); // Open 3D view dialogue view3DAct = new QAction(tr("&3D Surface Plot"), this); view3DAct->setStatusTip(tr("Manipulate 3D surface plot")); connect(view3DAct, SIGNAL(triggered()), this, SLOT(openView3DDialogue())); // Open the dialog displaying GhostScript's logs ghostScriptLogWindowAct = new QAction(tr("&GhostScript's Log"), this); ghostScriptLogWindowAct->setStatusTip(tr("Display GhostScript's Error Log")); connect(ghostScriptLogWindowAct, SIGNAL(triggered()), this, SLOT(openGhostScriptLogDialogue())); // Test the download function downloadAct = new QAction(tr("&Download"), this); downloadAct->setStatusTip(tr("Download GhostScript libgs.so")); connect(downloadAct, SIGNAL(triggered()), this, SLOT(openDownloadDialogue())); // Console window auto-show functionality consoleWindowHide = new QAction(tr("&Hide"), this); connect(consoleWindowHide, SIGNAL(triggered()), consoleWindow, SLOT(hideTriggered())); consoleWindow->setHideAction(consoleWindowHide); for (int i = 0; i < MaxRecentFiles; ++i) { recentFileActs[i] = new QAction(this); recentFileActs[i]->setVisible(false); connect(recentFileActs[i], SIGNAL(triggered()), this, SLOT(openRecentFile())); } } void GLEMainWindow::createDockWindows() { int size1 = 0; int size2 = 0; const QByteArray& state = settings->mainWindowState(); if (!state.isEmpty()) { const int* sizes = (const int*)state.constData(); size1 = sizes[0]; size2 = sizes[1]; } propertyDock = new QDockWidget(tr("Properties"), this); propertyDock->setObjectName("GLEPropertyEditor"); propertyDock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea); addDockWidget(Qt::RightDockWidgetArea, propertyDock); propertyEditor = new GLEPropertyEditor(propertyDock, size1); propertyDock->setWidget(propertyEditor); objectBlocksDock = new QDockWidget(tr("Objects"), this); objectBlocksDock->setObjectName("GLEObjectBlocksList"); objectBlocksDock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea); addDockWidget(Qt::RightDockWidgetArea, objectBlocksDock); objectBlocksList = new GLEObjectBlocksList(objectBlocksDock, this, drawingArea, size2); objectBlocksDock->setWidget(objectBlocksList); } // Create the toolbars void GLEMainWindow::createToolBars() { fileToolBar = addToolBar(tr("File")); fileToolBar->setObjectName("fileToolBar"); fileToolBar->addAction(newAct); fileToolBar->addAction(openAct); fileToolBar->addAction(saveAct); modeToolBar = addToolBar(tr("Mode")); modeToolBar->setObjectName("modeToolBar"); // modeToolBar->addAction(serverAct); modeToolBar->addAction(previewModeAct); modeToolBar->addAction(editModeAct); viewToolBar = addToolBar(tr("View")); viewToolBar->setObjectName("viewToolBar"); viewToolBar->addAction(reloadAct); viewToolBar->addAction(zoomInAct); viewToolBar->addAction(zoomOutAct); previewPageSize = new QComboBox(viewToolBar); previewPageSize->addItem(tr("Figure")); previewPageSize->addItem(tr("Portrait")); previewPageSize->addItem(tr("Landscape")); previewPageSize->setToolTip("Preview Page Size"); viewToolBar->addWidget(previewPageSize); connect(previewPageSize, SIGNAL(activated(int)), this, SLOT(previewPageSizeChanged(int))); editorBut = new QToolButton(viewToolBar); editorBut->setDefaultAction(editorAct); editorBut->setContextMenuPolicy(Qt::CustomContextMenu); connect(editorBut, SIGNAL(customContextMenuRequested(const QPoint&)), this, SLOT(createEditFilePopup(const QPoint&))); viewToolBar->addWidget(editorBut); compatToolBar = addToolBar(tr("Compatibility")); compatToolBar->setObjectName("compatToolBar"); emulateVersion = new QComboBox(compatToolBar); emulateVersion->addItem(tr("4.2")); emulateVersion->addItem(tr("3.5")); emulateVersion->setToolTip("Emulate GLE Version"); compatToolBar->addWidget(emulateVersion); connect(emulateVersion, SIGNAL(activated(int)), this, SLOT(emulateGLEVersionChanged(int))); // Initialise toolsToolBar and controlToolBar to 0 toolsToolBar = 0; controlToolBar = 0; } void GLEMainWindow::emulateGLEVersionChanged(int) { GLEFileInfo* currFile = getCurrentFile(); settings->setEmulateGLEVersion(emulateVersion->currentIndex()); if (currentMode == GLESettings::PreviewMode && !currFile->primaryFile().isEmpty()) { openFile(currFile->primaryFile()); } } void GLEMainWindow::previewPageSizeChanged(int) { GLEFileInfo* currFile = getCurrentFile(); settings->setPreviewPageSize(previewPageSize->currentIndex()); if (currentMode == GLESettings::PreviewMode && !currFile->primaryFile().isEmpty() && currFile->isGLE()) { editModeAct->setEnabled(previewPageSize->currentIndex() == 0); renderGLE(0.0, getScrollAreaSize()); } } void GLEMainWindow::polarSnapToggle(bool state) { drawingArea->polarSnapToggle(state); if (state == false) polarTrackAct->setChecked(false); } void GLEMainWindow::polarTrackToggle(bool state) { drawingArea->polarTrackToggle(state); if (state == true) polarSnapAct->setChecked(true); } void GLEMainWindow::selectPointerTool() { pointerToolAct->setChecked(true); } void GLEMainWindow::createEditModeToolBars() { toolsToolBar = new QToolBar(tr("Tools")); toolsToolBar->setObjectName("toolsToolBar"); toolsToolBar->setOrientation(Qt::Vertical); toolsToolBar->setAllowedAreas(Qt::LeftToolBarArea | Qt::RightToolBarArea); toolsToolBar->addAction(pointerToolAct); toolsToolBar->addAction(moveToolAct); toolsToolBar->addAction(lineToolAct); toolsToolBar->addAction(tanLineToolAct); toolsToolBar->addAction(perpLineToolAct); toolsToolBar->addAction(circleToolAct); toolsToolBar->addAction(ellipseToolAct); toolsToolBar->addAction(arcToolAct); toolsToolBar->addAction(textToolAct); addToolBar(Qt::LeftToolBarArea, toolsToolBar); controlToolBar = new QToolBar(tr("Drawing Control")); controlToolBar->setObjectName("controlToolBar"); controlToolBar->setOrientation(Qt::Vertical); controlToolBar->setAllowedAreas(Qt::LeftToolBarArea | Qt::RightToolBarArea); controlToolBar->addAction(gridAct); controlToolBar->addAction(gridSnapAct); controlToolBar->addAction(osnapAct); controlToolBar->addAction(orthoSnapAct); controlToolBar->addAction(polarSnapAct); controlToolBar->addAction(polarTrackAct); addToolBar(Qt::LeftToolBarArea, controlToolBar); } void GLEMainWindow::enableEditModeToolBars(bool enable) { if (!enable) { // Hide first, next gray out toolsToolBar->hide(); controlToolBar->hide(); propertyEditor->hide(); propertyDock->hide(); objectBlocksList->hide(); objectBlocksDock->hide(); emulateVersion->setCurrentIndex(min(emulateVersion->count()-1, settings->getEmulateGLEVersion())); previewPageSize->setCurrentIndex(settings->getPreviewPageSize()); } toolsToolBar->setEnabled(enable); controlToolBar->setEnabled(enable); propertyEditor->setEnabled(enable); propertyDock->setEnabled(enable); objectBlocksList->setEnabled(enable); objectBlocksDock->setEnabled(enable); compatToolBar->setEnabled(!enable); emulateVersion->setEnabled(!enable); previewPageSize->setEnabled(!enable); reloadAct->setEnabled(!enable); if (enable) { // Enable first, then show toolsToolBar->show(); controlToolBar->show(); propertyEditor->show(); propertyDock->show(); objectBlocksList->show(); objectBlocksDock->show(); emulateVersion->setCurrentIndex(0); previewPageSize->setCurrentIndex(0); } } void GLEMainWindow::destroyEditModeToolBars() { if (toolsToolBar) { removeToolBar(toolsToolBar); delete toolsToolBar; toolsToolBar = 0; } if (controlToolBar) { removeToolBar(controlToolBar); delete controlToolBar; controlToolBar = 0; } } //! Get non-current mode GLEFileInfo object GLEFileInfo* GLEMainWindow::getNonCurrentModeFileInfo() { int otherMode = (currentMode == GLESettings::PreviewMode ? GLESettings::EditMode : GLESettings::PreviewMode); return ¤tFile[otherMode]; } //! Set temp files correctly for GLE file void GLEMainWindow::initTempFilesGLE() { currentFile[GLESettings::PreviewMode].setEpsFile(tempFiles[PreviewModeOutput]); currentFile[GLESettings::EditMode].setEpsFile(tempFiles[EditModeOutput]); } //! Update currentFile on change PreviewMode <-> EditMode int GLEMainWindow::updateFileInfoOnChangeMode(int mode) { int oldMode = (mode == GLESettings::PreviewMode ? GLESettings::EditMode : GLESettings::PreviewMode); GLEFileInfo* oldFile = ¤tFile[oldMode]; GLEFileInfo* newFile = ¤tFile[mode]; int diff = 0; if (newFile->getLastDPI() != drawingArea->getDPI()) diff = 1; /* re-render EPS */ if (newFile->gleFile() != oldFile->gleFile()) diff = 2; /* re-render GLE */ newFile->copyFrom(oldFile); // Save DPI for next switch oldFile->setLastDPI(drawingArea->getDPI()); currentMode = mode; return diff; } // SLOT: user clicked the preview mode button void GLEMainWindow::previewModeToggle(bool state) { // User switched mode on if (state) { // Switch to preview mode int diff = updateFileInfoOnChangeMode(GLESettings::PreviewMode); drawingArea->setEditMode(false); // Hide the tools toolbar enableEditModeToolBars(false); // Select no tool emit toolSelected(GLEDrawingArea::NoTool); // call renderGLEandObjects and then // Only process if new objects have been created // or if objects have been moved if (drawingArea->thereAreNewObjects()) { updateGLE(); if (settings->saveOnPreview()) { save(); } drawingArea->clearNewObjectsFlag(); renderGLE(); } else { if (diff == 0) refreshDisplay(); else if (diff == 1) renderEPS(); else renderGLE(); } } } // SLOT: user clicked the edit mode button void GLEMainWindow::editModeToggle(bool state) { // User switched mode on if (state) { if (getCurrentFile()->gleFile().isEmpty()) { previewModeAct->setChecked(true); return; } int diff = updateFileInfoOnChangeMode(GLESettings::EditMode); drawingArea->setEditMode(true); enableEditModeToolBars(true); pointerToolAct->setChecked(true); if (pointerToolAct->isChecked()) emit toolSelected(GLEDrawingArea::PointerTool); else if (lineToolAct->isChecked()) emit toolSelected(GLEDrawingArea::LineTool); else if (tanLineToolAct->isChecked()) emit toolSelected(GLEDrawingArea::TanLineTool); else if (perpLineToolAct->isChecked()) emit toolSelected(GLEDrawingArea::PerpLineTool); else if (circleToolAct->isChecked()) emit toolSelected(GLEDrawingArea::CircleTool); else if (ellipseToolAct->isChecked()) emit toolSelected(GLEDrawingArea::EllipseTool); else if (arcToolAct->isChecked()) emit toolSelected(GLEDrawingArea::ArcTool); else if (textToolAct->isChecked()) emit toolSelected(GLEDrawingArea::TextTool); else if (moveToolAct->isChecked()) emit toolSelected(GLEDrawingArea::AMoveTool); // We should probably only emit this when there is // definitely an image, but edit mode shouldn't be // available if there isn't one if (diff == 0) refreshDisplay(); else if (diff == 1) renderEPS(); else renderGLE(); } } // SLOT: user requested all the tools be disabled void GLEMainWindow::noToolEnable() { lineToolAct->setChecked(false); tanLineToolAct->setChecked(false); perpLineToolAct->setChecked(false); circleToolAct->setChecked(false); ellipseToolAct->setChecked(false); arcToolAct->setChecked(false); moveToolAct->setChecked(false); pointerToolAct->setChecked(false); textToolAct->setChecked(false); emit toolSelected(GLEDrawingArea::NoTool); } // SLOT: user clicked the pointer tool button void GLEMainWindow::pointerToolToggle(bool state) { // User switched mode on if (state) { // Notify drawing area emit toolSelected(GLEDrawingArea::PointerTool); } } // SLOT: user clicked the line tool button void GLEMainWindow::lineToolToggle(bool state) { // User switched mode on if (state) { // Notify drawing area emit toolSelected(GLEDrawingArea::LineTool); } } // SLOT: user clicked the tan line tool button void GLEMainWindow::tanLineToolToggle(bool state) { // User switched mode on if (state) { // Notify drawing area emit toolSelected(GLEDrawingArea::TanLineTool); } } // SLOT: user clicked the perp line tool button void GLEMainWindow::perpLineToolToggle(bool state) { // User switched mode on if (state) { // Notify drawing area emit toolSelected(GLEDrawingArea::PerpLineTool); } } // SLOT: user clicked the circle tool button void GLEMainWindow::circleToolToggle(bool state) { // User switched mode on if (state) { // Notify drawing area emit toolSelected(GLEDrawingArea::CircleTool); } } // SLOT: user clicked the ellipse tool button void GLEMainWindow::ellipseToolToggle(bool state) { // User switched mode on if (state) { // Notify drawing area emit toolSelected(GLEDrawingArea::EllipseTool); } } // SLOT: user clicked the arc tool button void GLEMainWindow::arcToolToggle(bool state) { // User switched mode on if (state) { // Notify drawing area emit toolSelected(GLEDrawingArea::ArcTool); } } // SLOT: user clicked the text tool button void GLEMainWindow::textToolToggle(bool state) { // User switched mode on if (state) { // Notify drawing area emit toolSelected(GLEDrawingArea::TextTool); } } // SLOT: user clicked the pointer tool button void GLEMainWindow::moveToolToggle(bool state) { // User switched mode on if (state) { // Notify drawing area emit toolSelected(GLEDrawingArea::AMoveTool); } } void GLEMainWindow::renderEPS() { renderEPS(drawingArea->getDPI()); } void GLEMainWindow::renderEPS(double dpi) { renderEPS(getCurrentFile()->epsFile(), dpi, getScrollAreaSize()); } // Render an EPS file from a given QString void GLEMainWindow::renderEPS(QString outputFile, double dpi, const QSize& area) { if (getCurrentFile()->isGLE()) { GLEScript* script = getGLEScript(); if (!script->getRecordedBytesBuffer(GLE_DEVICE_EPS)->empty() || !script->getRecordedBytesBuffer(GLE_DEVICE_PDF)->empty()) { updateEnableActions(false); renderThread->renderOutputFromMemoryToImage(script, outputFile, dpi, area); return; } } else { QFileInfo fi(outputFile); // If the file is readable, re-render it in the new scale if (fi.isReadable()) { updateEnableActions(false); renderThread->renderEPSFromFileToImage(outputFile, dpi, area); return; } } renderComplete(QImage()); } // Refresh GLEDrawing's display void GLEMainWindow::refreshDisplay() { emit imageChanged(getCurrentFile()->getImage()); } // A signal from the server to indicate that rendering is complete void GLEMainWindow::renderComplete(QImage image) { statusBarMessage(""); updateEnableActions(true); GLEFileInfo* currFile = getCurrentFile(); // Save the image currFile->setImage(image); // Update the display emit imageChanged(image); updateWindowTitle(); executeToDos(); } //! Execute this after opening a file void GLEMainWindow::executeToDoAfterFileOpen() { // Restart the timer if appropriate updateFileMonitor(settings->monitorOpenFile()); serverThread->sendMessageToGLEMinusP(consoleWindow->toPlainText(), true); } //! Execute this after rendering a GLE script void GLEMainWindow::executeToDoAfterRenderGLE() { consoleWindow->shouldAutoShow(); // Now we should really check to see if it worked or not! if (consoleWindow->getOutput()->getExitCode() == 0) { if (currentMode != GLESettings::PreviewMode) { drawingArea->clearObjects(); drawingArea->updateFromScript(getGLEScript()); objectBlocksList->updateList(); } } else { if (currentMode != GLESettings::PreviewMode) { drawingArea->clearObjects(); objectBlocksList->updateList(); } } } void GLEMainWindow::executeToDos() { for (int i = todoList.size()-1; i >= 0; i--) { int todo = todoList.at(i); switch (todo) { case ToDoAfterRenderGLE: executeToDoAfterRenderGLE(); break; case ToDoAfterFileOpen: executeToDoAfterFileOpen(); break; } } todoList.clear(); } QString GLEMainWindow::getGLEVersion() { return QString::fromUtf8(gleInterface->getGLEVersion().c_str()); } QString GLEMainWindow::getGLEBuildDate() { return QString::fromUtf8(gleInterface->getGLEBuildDate().c_str()); } const char* GLEMainWindow::getGLETop() { return gleInterface->getGLETop(); } QString GLEMainWindow::getCompatibility() { return emulateVersion->currentText(); } //! Return true if in full page mode bool GLEMainWindow::isFullPage() { return previewPageSize->currentIndex() == 1 || previewPageSize->currentIndex() == 2; } //! Return true if in landscape mode bool GLEMainWindow::isLandscape() { return previewPageSize->currentIndex() == 2; } void GLEMainWindow::renderGLE() { renderGLE(drawingArea->getDPI(), getScrollAreaSize()); } void GLEMainWindow::renderGLE(double dpi, const QSize& area) { // Render a GLE file into a temporary eps and return the resulting image consoleWindow->clear(); gleInterface->clearAllCmdLine(); gleInterface->setMakeDrawObjects(currentMode != GLESettings::PreviewMode); if (currentMode == GLESettings::PreviewMode) { gleInterface->setCompatibilityMode(emulateVersion->currentText().toLatin1().constData()); if (previewPageSize->currentIndex() != 0) { gleInterface->setCmdLineOption("fullpage"); } if (previewPageSize->currentIndex() == 2) { gleInterface->setCmdLineOption("landscape"); } // Make sure to re-render when switching to edit mode // Otherwise object blocks will be corrupt currentFile[GLESettings::EditMode].clearGleFile(); } else { gleInterface->setCompatibilityMode("4.2"); } if (settings->isRenderUsingCairo()) { gleInterface->setCmdLineOption("cairo"); } updateEnableActions(false); todoList.append(ToDoAfterRenderGLE); renderThread->renderGLEToImage(getGLEScript(), getCurrentFile()->epsFile(), dpi, area); } // Commit changes to drawing to GLE void GLEMainWindow::updateGLE() { gleInterface->clearAllCmdLine(); gleInterface->commitChangesGLE(getGLEScript()); consoleWindow->shouldAutoShow(); } //! Show console window if there is output void GLEMainWindow::shouldAutoShowConsole() { consoleWindow->shouldAutoShow(); } // SLOT: display the about box void GLEMainWindow::about() { box = new AboutBox(this, getGLEInterface()); box->setModal(true); box->show(); } // SLOT: open the GLE website void GLEMainWindow::showGLEWebsite() { QUrl url("http://www.gle-graphics.org/"); QDesktopServices::openUrl(url); } // SLOT: show a given URL void GLEMainWindow::showURL(const QUrl& url) { QDesktopServices::openUrl(url); } // Open a local file using the mime type application registered for it void GLEMainWindow::showLocalFile(const QString& name) { QFileInfo file(name); if (!file.exists()) { QString msg = tr("File not found: '%1'").arg(name); QMessageBox::critical(this, APP_NAME, msg, QMessageBox::Ok, QMessageBox::NoButton, QMessageBox::NoButton); return; } if (QGLE::getFileNameExtension(name) == "pdf") { // Preview a PDF with the application set in .glerc as "pdfviewer" string pdfview = getGLEInterface()->getToolLocation("pdfviewer"); if (pdfview != "") { QProcess pdfReader; pdfReader.startDetached(pdfview.c_str(), QStringList() << name); return; } } #ifdef Q_WS_WIN // Why does Windows require three slashes for a file Url? QUrl url(tr("file:///") + name); QDesktopServices::openUrl(url); #else QUrl url(tr("file://") + name); QDesktopServices::openUrl(url); #endif } // SLOT: open the GLE manual void GLEMainWindow::showGLEManual() { string name = getGLEInterface()->getManualLocation(); showLocalFile(QString::fromUtf8(name.c_str())); } // SLOT: abort QGLE void GLEMainWindow::abort() { exit(0); } // Create the menus and add the actions void GLEMainWindow::createMenus() { // File menu fileMenu = menuBar()->addMenu(tr("&File")); fileMenu->addAction(newAct); fileMenu->addAction(openAct); fileMenu->addAction(openInNewWindowAct); editFileMenu = fileMenu->addMenu(tr("&Edit")); editFileMenu->setIcon(QIcon(":images/editor.png")); fileMenu->addAction(saveAct); fileMenu->addAction(saveAsAct); fileMenu->addAction(exportAct); fileMenu->addAction(browseAct); // fileMenu->addAction(printAct); separatorAct = fileMenu->addSeparator(); for (int i = 0; i < MaxRecentFiles; i++) fileMenu->addAction(recentFileActs[i]); updateRecentFileActions(); fileMenu->addSeparator(); fileMenu->addAction(quitAct); connect(editFileMenu, SIGNAL(aboutToShow()), this, SLOT(createEditFileMenu())); // Edit menu QMenu *editMenu = menuBar()->addMenu(tr("&Edit")); editMenu->addAction(copyBitmapAct); if (copyPDFAct != NULL) editMenu->addAction(copyPDFAct); if (copyEMFAct != NULL) editMenu->addAction(copyEMFAct); QMenu *viewMenu = menuBar()->addMenu(tr("&View")); viewMenu->addAction(reloadAct); viewMenu->addAction(zoomInAct); viewMenu->addAction(zoomOutAct); viewMenu->addAction(zoomAutoAct); viewMenu->addAction(previewModeAct); viewMenu->addAction(editModeAct); // Tools menu toolsMenu = menuBar()->addMenu(tr("&Tools")); toolsMenu->addAction(settingsAct); toolsMenu->addAction(evaluatorAct); toolsMenu->addAction(view3DAct); toolsMenu->addAction(ghostScriptLogWindowAct); // toolsMenu->addAction(downloadAct); // Help menu helpMenu = menuBar()->addMenu(tr("&Help")); helpMenu->addAction(gleManualAct); helpMenu->addAction(gleSiteAct); helpMenu->addAction(aboutAct); } #define STATUS_BAR_LABEL_STYLE QFrame::NoFrame | QFrame::Plain void GLEMainWindow::createStatusBar() { // Create a status bar with an initial message statusBar()->showMessage(tr("Ready")); // Create a coordinate display (using GLE coordinates) mousePosition = new QLabel(); mousePosition->setFrameStyle(STATUS_BAR_LABEL_STYLE); mousePosition->setAlignment(Qt::AlignHCenter | Qt::AlignVCenter); dpiDisplay = new QLabel(); dpiDisplay->setFrameStyle(STATUS_BAR_LABEL_STYLE); dpiDisplay->setAlignment(Qt::AlignHCenter | Qt::AlignVCenter); // Create the snap button /* gridSnapButton = new QPushButton(tr("SNAP")); gridSnapButton->resize(0.4*gridSnapButton->size()); gridSnapButton->setFlat(true); gridSnapButton->setCheckable(true); connect(gridSnapButton, SIGNAL(toggled(bool)), gridSnapAct, SLOT(setChecked(bool))); statusBar()->addPermanentWidget(gridSnapButton);*/ // Set size and disable auto resize? statusBar()->addPermanentWidget(dpiDisplay); statusBar()->addPermanentWidget(mousePosition); updateMousePosition(QPointF(0.0,0.0)); // Display the default resolution updateDPIDisplay(-1.0); connect(drawingArea, SIGNAL(mouseMoved(QPointF)), this, SLOT(updateMousePosition(QPointF))); } void GLEMainWindow::updateDPIDisplay(double newDPI) { // Display the current resolution on the status bar if (newDPI < 0.0) { dpiDisplay->setVisible(false); } else { dpiDisplay->setVisible(true); dpiDisplay->setText(QString(tr("R:%1", "Resolution Indicator")) .arg(newDPI,8,'f',2)); dpiDisplay->setFixedSize(100,24); } } // Update the coordinate display void GLEMainWindow::updateMousePosition(QPointF gle) { if (gle == QPointF(-1.0,-1.0)) gle = lastMousePosition; else lastMousePosition = gle; double r, theta; switch (coordView) { case CoordinateOff: // Don't display anything mousePosition->setText(""); break; case CoordinateCart: // Cartesian coordinates mousePosition->setText(QString("%1,%2").arg(gle.x(),5,'f',2).arg(gle.y(),5,'f',2)); break; case CoordinatePolar: // Polar coordinates r = sqrt(pow(gle.x(),2)+pow(gle.y(),2)); theta = QGLE::radiansToDegrees(atan2(gle.y(),gle.x())); mousePosition->setText(QString("%1<%2").arg(r,5,'f',2).arg(theta,5,'f',2)); break; case CoordinateRelCart: // Cartesian coordinates relative to the last point used in drawing mousePosition->setText(QString("@%1,%2") .arg(gle.x()-lastPoint.x(),5,'f',2) .arg(gle.y()-lastPoint.y(),5,'f',2)); break; case CoordinateRelPolar: // Polar coordinates relative to the last point used in drawing r = sqrt(pow(gle.x()-lastPoint.x(),2)+pow(gle.y()-lastPoint.y(),2)); theta = QGLE::radiansToDegrees(atan2(gle.y()-lastPoint.y(),gle.x()-lastPoint.x())); mousePosition->setText(QString("@%1<%2").arg(r,5,'f',2).arg(theta,5,'f',2)); break; } // Fix the size of the display mousePosition->setFixedSize(100,24); } // SLOT: Display a requested message on the status bar void GLEMainWindow::updateServerStatus(QString message) { statusBar()->showMessage(message); } // SLOT: Display a requested message on the status bar void GLEMainWindow::statusBarMessage(QString msg) { statusBar()->showMessage(msg); } //! Display an error message in the console void GLEMainWindow::showConsoleError(QString message) { consoleWindow->println(renderThread->getGhostScriptOutput()); consoleWindow->println(message); consoleWindow->shouldAutoShow(); } // SLOT: Open the Settings Dialogue void GLEMainWindow::openSettingsDialogue() { SettingsDialogue settingsDialogue(this); settingsDialogue.exec(); } // SLOT: Display 3D viewer void GLEMainWindow::openView3DDialogue() { QGLE3DViewer* viewer = new QGLE3DViewer(this, gleInterface); viewer->show(); } // SLOT: Display GhostScript's log dialogue box void GLEMainWindow::openGhostScriptLogDialogue() { QDialog gsLogDialog(this); gsLogDialog.setWindowTitle("GhostScript's Log"); QVBoxLayout *layout = new QVBoxLayout(); QLabel *stdoutlab = new QLabel(tr("Output:")); layout->addWidget(stdoutlab); QTextEdit* stdouttxt = new QTextEdit(); stdouttxt->setReadOnly(TRUE); stdouttxt->insertPlainText(renderThread->getGhostScriptOutput()); layout->addWidget(stdouttxt); QPushButton *okButton = new QPushButton(tr("OK")); connect(okButton, SIGNAL(clicked()), &gsLogDialog, SLOT(close())); QHBoxLayout *buttonLayout = new QHBoxLayout(); buttonLayout->addStretch(1); buttonLayout->addWidget(okButton); layout->addLayout(buttonLayout); gsLogDialog.setLayout(layout); QRect size = QApplication::desktop()->screenGeometry(&gsLogDialog); gsLogDialog.resize(size.width()/2, size.height()/2); gsLogDialog.exec(); } void GLEMainWindow::openEvaluator() { if (evaluatorDialog == NULL) { evaluatorDialog = new EvaluatorDialog(this); QRect size = QApplication::desktop()->screenGeometry(evaluatorDialog); evaluatorDialog->resize(size.width()/3, size.height()/2); } evaluatorDialog->show(); } //! Display export dialogue box void GLEMainWindow::openExportDialogue() { if (getGLEScript() != NULL) { ExportDialogue exp(this); exp.exec(); } } // SLOT: Display print dialogue box void GLEMainWindow::openPrintDialogue() { } void GLEMainWindow::openDownloadDialogue() { /* QGLEDownloader* down = new QGLEDownloader(this); down->setModal(true); down->show(); down->exec();*/ } void GLEMainWindow::save() { if (drawingArea->isDirty()) { GLEFileInfo* currFile = getCurrentFile(); if (currFile->hasFileName()) { QFileInfo file; file.setFile(currFile->gleFile()); if (file.isReadable() && file.isWritable()) { save(currFile->gleFile()); return; } } // If we don't have a file name and/or the file // isn't readable and writable, ask for a new file name. saveAs(); } } void GLEMainWindow::saveAs() { QString fileType; const char* fileExt; if (getCurrentFile()->isGLE()) { fileType = tr("GLE Files (*.gle)"); fileExt = "gle"; } else { fileType = tr("EPS Files (*.eps)"); fileExt = "eps"; } // Ask for a filename and save accordingly QString fileName = QFileDialog::getSaveFileName(this, tr("Choose a file name to save under"), settings->pwd(), fileType); if (fileName.isEmpty()) return; // Add .gle or .eps if here isn't one already QGLE::ensureFileNameExtension(&fileName, fileExt); QFileInfo fname(fileName); settings->setPwd(fname.dir().path()); save(fileName); } void GLEMainWindow::save(QString fileName) { // Save to a given filename bool wasActive = false; // Stop the timer as it'll get confused by us writing out own file if (fileMonitorTimer->isActive()) { wasActive = true; fileMonitorTimer->stop(); } // Check if we are saving a GLE or EPS file GLEFileInfo* currFile = getCurrentFile(); if (currFile->isGLE()) { if (currentMode == GLESettings::EditMode && drawingArea->thereAreNewObjects()) { updateGLE(); } gleInterface->saveGLEFile(getGLEScript(), fileName.toLatin1().constData()); } else { // Copy EPS file to new name string error; string from = getCurrentFile()->primaryFile().toUtf8().constData(); string to = fileName.toUtf8().constData(); if (gleInterface->copyFile(from, to, &error) != 0) { QMessageBox::critical(this, APP_NAME, tr("Error: ")+QString::fromUtf8(error.c_str()), QMessageBox::Ok, QMessageBox::NoButton, QMessageBox::NoButton); } } // Clear the dirty flag drawingArea->clearDirty(); // Check that currentFile points to the correct file if (currFile->isGLE()) { currFile->setGleFile(fileName); } else { currFile->setEpsFile(fileName); } updateWindowTitle(); // Close the output and update the time stamp currFile->updateTimeStamp(); // Add file to recent file list setCurrentFile(fileName); // Restart the timer if appropriate if (wasActive) { fileMonitorTimer->start(); } } // SLOT: Open file in new window void GLEMainWindow::openFileInNewWindow() { QString fileName = QFileDialog::getOpenFileName(this, tr("Select a file to open"), settings->pwd(), tr("GLE Files (*.gle);;EPS Files (*.eps)")); // If we now have a filename, open it if (!fileName.isEmpty()) { QProcess qgle; qgle.startDetached(QGLE::GetExeName(), QStringList() << fileName); } } // SLOT: Browse the script folder void GLEMainWindow::browseScriptFolder() { QFileInfo fname(getCurrentFile()->primaryFile()); showLocalFile(fname.dir().path()); } // SLOT: Open an existing file void GLEMainWindow::openFile(QString fileName, bool isOnStartup) { bool isReload = (getCurrentGleFile() == fileName); // If changes have been made, ask what to do if (!isReload && drawingArea->isDirty()) { int reply = QMessageBox::question(this, tr("Open New File"), tr("Save changes to drawing?"), QMessageBox::Yes, QMessageBox::No, QMessageBox::Cancel); if (reply == QMessageBox::Yes) { save(); } else if (reply == QMessageBox::Cancel) { updateFileMonitor(settings->monitorOpenFile()); return; } } // If we don't have a filename (i.e. if called as a slot rather than // as a function), ask what file to open if (fileName.isEmpty()) fileName = QFileDialog::getOpenFileName(this, tr("Select a file to open"), settings->pwd(), tr("GLE Files (*.gle);;EPS Files (*.eps)")); // If we now have a filename, open it if (!fileName.isEmpty()) { // In case we crash SetQGLEScriptNameBackup(fileName); // Check whether to autoscale and get the resolution bool autoScale = settings->autoScaleOnOpen() && !isReload; QSize scaleSize = isOnStartup ? settings->drawingAreaSize() : getScrollAreaSize(); if (!isReload && !autoScale) { drawingArea->setDPI((double)settings->dpi()); } double dpi = autoScale ? 0.0 : drawingArea->getDPI(); // Get the file information QFileInfo fname(fileName); settings->setPwd(fname.dir().path()); // Regular expressions to check whether it's an EPS file or a GLE file QRegExp rxeps(".*\\.eps$", Qt::CaseInsensitive); QRegExp rxgle(".*\\.gle$", Qt::CaseInsensitive); // Clear other mode file info getNonCurrentModeFileInfo()->clear(); // Add file to recent file list setCurrentFile(fileName); // Restart file monitor and notify "GLE -p" process todoList.append(ToDoAfterFileOpen); // Stop the timer updateFileMonitor(false); // An EPS file, so open it. GLEFileInfo* currFile = getCurrentFile(); if(rxeps.exactMatch(fileName)) { currFile->clear(); currFile->setEpsFile(fileName); getNonCurrentModeFileInfo()->setEpsFile(fileName); currFile->updateTimeStamp(); resetDrawing(); clearConsoleWindow(); if (currentMode == GLESettings::PreviewMode) renderEPS(fileName, dpi, scaleSize); else previewModeAct->setChecked(true); } // A GLE file, so render it and open the resulting EPS file else if (rxgle.exactMatch(fileName)) { currFile->clear(); resetDrawing(); clearConsoleWindow(); gleScript = gleInterface->loadGLEFile(fileName.toLatin1().constData()); if (!gleScript.isNull()) { currFile->setGleFile(fileName); currFile->updateTimeStamp(); initTempFilesGLE(); renderGLE(dpi, scaleSize); } else { renderComplete(QImage()); } } } } // SLOT: Create a blank page void GLEMainWindow::newFile() { // Should we save changes? if (drawingArea->isDirty()) { int reply = QMessageBox::question(this, tr("Create New File"), tr("Save changes to drawing?"), QMessageBox::Yes, QMessageBox::No, QMessageBox::Cancel); if (reply == QMessageBox::Yes) save(); else if (reply == QMessageBox::Cancel) return; } // Ask the user what size drawing to create NewFileBox nfb; int dialogue_result = nfb.exec(); if (dialogue_result == QDialog::Rejected) return; QString fileName; if (nfb.shouldSave()) { fileName = QFileDialog::getSaveFileName(this, tr("Choose a file name to save under"), settings->pwd(), tr("GLE Files (*.gle)")); if (fileName.isEmpty()) return; // Add a .gle if there isn't one already QRegExp rxGLE(".*\\.[gG][lL][eE]"); if(!rxGLE.exactMatch(fileName)) fileName += ".gle"; } // Stop the timer updateFileMonitor(false); resetDrawing(); newDiagramSize = nfb.size(); // Clear the current drawing getNonCurrentModeFileInfo()->clear(); GLEFileInfo* currFile = getCurrentFile(); currFile->clear(); currFile->setGleFile(tr("No Name")); currFile->setHasFileName(false); initTempFilesGLE(); // Check whether to autoscale and get the resolution bool autoScale = settings->autoScaleOnOpen(); if (!autoScale) drawingArea->setDPI((double) settings->dpi()); double dpi = autoScale ? 0.0 : drawingArea->getDPI(); emulateVersion->setCurrentIndex(0); previewPageSize->setCurrentIndex(0); settings->setEmulateGLEVersion(0); settings->setPreviewPageSize(0); // The file is very simple: just one line "size x y" // The "amove" works around a bug in GLE QString code = QString("size %1 %2\n").arg(QGLE::GLEToStr(newDiagramSize.width())).arg(QGLE::GLEToStr(newDiagramSize.height())); if (fileName == "") { gleScript = gleInterface->newGLEFile(code.toLatin1().constData(), tempFiles[NewGLE].toLatin1().constData()); // Since we've added a "size" line, the file has (arguably) changed updateWindowTitle(); drawingArea->setDirty(); } else { gleScript = gleInterface->newGLEFile(code.toLatin1().constData(), fileName.toLatin1().constData()); save(fileName); } // Restart file monitor and notify "GLE -p" process todoList.append(ToDoAfterFileOpen); // Render GLE script gleInterface->showGLEFile(getGLEScript()); renderGLE(dpi, getScrollAreaSize()); } void GLEMainWindow::openRecentFile() { QAction *action = qobject_cast(sender()); if (action) openFile(action->data().toString()); } void GLEMainWindow::openRelatedFile() { QAction *action = qobject_cast(sender()); if (action) { openInTextEditor(action->data().toString()); } } void GLEMainWindow::updateRecentFileActions() { QSettings settings("gle", "qgle"); QStringList files = settings.value("application/recentfiles").toStringList(); int numRecentFiles = qMin(files.size(), (int)MaxRecentFiles); for (int i = 0; i < numRecentFiles; ++i) { QString text = tr("&%1 %2").arg(i + 1).arg(QFileInfo(files[i]).fileName()); recentFileActs[i]->setText(text); recentFileActs[i]->setData(files[i]); recentFileActs[i]->setVisible(true); } for (int j = numRecentFiles; j < MaxRecentFiles; ++j) recentFileActs[j]->setVisible(false); separatorAct->setVisible(numRecentFiles > 0); } void GLEMainWindow::createEditFileMenu() { GLEInterface* iface = getGLEInterface(); vector infos = iface->getFileInfos(); editFileMenu->clear(); GLEFileInfo* currFile = getCurrentFile(); if (currFile->primaryFile() == "") { QAction* noRel = editFileMenu->addAction(tr("No files to edit")); noRel->setEnabled(false); } else { QFileInfo fh(currFile->primaryFile()); QAction* mAct = editFileMenu->addAction(fh.fileName()); QString status = tr("Open file '%1'").arg(fh.fileName()); mAct->setStatusTip(status); connect(mAct, SIGNAL(triggered()), this, SLOT(openInTextEditor())); for (unsigned int i = 0; i < infos.size(); i++) { GLEFileLocation& info = infos[i]; QString name = QString::fromUtf8(info.getName().c_str()); QAction* fAct = editFileMenu->addAction(name); QString fullpath = QString::fromUtf8(info.getFullPath().c_str()); fAct->setToolTip(fullpath); fAct->setData(fullpath); QString status = tr("Open related file '%1'").arg(name); fAct->setStatusTip(status); connect(fAct, SIGNAL(triggered()), this, SLOT(openRelatedFile())); } } } void GLEMainWindow::createEditFilePopup(const QPoint& pos) { GLEInterface* iface = getGLEInterface(); vector infos = iface->getFileInfos(); QMenu editFilePopup(this); if (infos.size() == 0) { QAction* noRel = editFilePopup.addAction(tr("No additional files to edit")); noRel->setStatusTip(tr("Open related files such as data files, include files, ...")); noRel->setEnabled(false); } else { for (unsigned int i = 0; i < infos.size(); i++) { GLEFileLocation& info = infos[i]; QString name = QString::fromUtf8(info.getName().c_str()); QAction* fAct = editFilePopup.addAction(name); QString fullpath = QString::fromUtf8(info.getFullPath().c_str()); fAct->setToolTip(fullpath); fAct->setData(fullpath); QString status = tr("Open related file '%1'").arg(name); fAct->setStatusTip(status); connect(fAct, SIGNAL(triggered()), this, SLOT(openRelatedFile())); } } editFilePopup.exec(editorBut->mapToGlobal(pos)); } void GLEMainWindow::setCurrentFile(const QString &fileName) { QSettings settings("gle", "qgle"); QStringList files = settings.value("application/recentfiles").toStringList(); files.removeAll(fileName); files.prepend(fileName); while (files.size() > MaxRecentFiles) { files.removeLast(); } settings.setValue("application/recentfiles", files); foreach (QWidget *widget, QApplication::topLevelWidgets()) { GLEMainWindow *mainWin = qobject_cast(widget); if (mainWin) mainWin->updateRecentFileActions(); } } void GLEMainWindow::copyBitmap() { QClipboard *clipboard = QApplication::clipboard(); clipboard->setImage(getCurrentFile()->getImage()); } #ifdef Q_WS_MAC bool copyPDFMac(const string& fname); #endif //! Action causing the current figure to be copied to the clipboard as PDF void GLEMainWindow::copyPDF() { QString tempDir = QDir::tempPath(); QRegExp rxEndSlash(".*[\\\\/]$"); if (!rxEndSlash.exactMatch(tempDir)) tempDir += QDir::separator(); QString pdfname = tempDir + tr("qgle_copy.pdf"); GLEInterface* iface = getGLEInterface(); clearConsoleWindow(); iface->clearAllCmdLine(); iface->setMakeDrawObjects(false); iface->renderGLE(getGLEScript(), pdfname.toLatin1().constData(), GLE_DEVICE_PDF); iface->clearAllCmdLine(); #ifndef Q_WS_MAC QFile file(pdfname); if (!file.open(QIODevice::ReadOnly)) { consoleWindow->println(tr("Can't open PDF: ")+pdfname); return; } QByteArray pdfData = file.readAll(); file.close(); QMimeData *mimeData = new QMimeData(); mimeData->setData("x-pdf", pdfData); QClipboard *clipboard = QApplication::clipboard(); clipboard->setMimeData(mimeData); #else copyPDFMac(string(pdfname.toUtf8().constData())); #endif } //! Action causing the current figure to be copied to the clipboard as EMF void GLEMainWindow::copyEMF() { GLEInterface* iface = getGLEInterface(); clearConsoleWindow(); iface->clearAllCmdLine(); iface->setMakeDrawObjects(false); iface->setCmdLineOption("copy"); iface->renderGLE(getGLEScript(), "", GLE_DEVICE_EMF); iface->clearAllCmdLine(); } void GLEMainWindow::resetDrawing() { // Reset the drawing. drawingArea->clearDirty(); drawingArea->clearObjects(); drawingArea->clearNewObjectsFlag(); } // SLOT: Reload File void GLEMainWindow::reloadFile() { openFile(getCurrentFile()->primaryFile()); } // SLOT: Zoom In void GLEMainWindow::zoomIn() { double dpi = drawingArea->getDPI(); dpi *= ZOOM_STEP; drawingArea->setDPI(dpi); zoom(dpi); } // SLOT: Zoom Out void GLEMainWindow::zoomOut() { double dpi = drawingArea->getDPI(); dpi /= ZOOM_STEP; drawingArea->setDPI(dpi); zoom(dpi); } // SLOT: Zoom Automatically void GLEMainWindow::zoomAuto() { // dpi = 0.0 means auto-scale renderEPS(0.0); } // Zoom worker void GLEMainWindow::zoom(double dpi) { renderEPS(dpi); } void GLEMainWindow::openInTextEditor() { QString file = getCurrentFile()->primaryFile(); QFileInfo fh(file); if (!fh.isReadable()) { int answer = QMessageBox::question(this, APP_NAME, tr("File does not exist, do you wish to save the current document?"), tr("Yes"), tr("Cancel"), 0, 1); if (answer == 0) save(); else return; } file = getCurrentFile()->primaryFile(); fh.setFile(file); if (!fh.isReadable()) { QMessageBox::critical(this, APP_NAME, tr("Problem saving!"), QMessageBox::Ok, QMessageBox::NoButton, QMessageBox::NoButton); return; } openInTextEditor(file); } void GLEMainWindow::openInTextEditor(const QString& file) { bool res; if (QGLE::isGraphicsExtension(file)) { // GLE script may include bitmap graphics - don't open these with text editor showLocalFile(file); return; } QString editor = settings->editorLocation(); if (editor.isEmpty()) { QMessageBox::critical(this, APP_NAME, tr("Please select text editor in Options | Tools"), QMessageBox::Ok, QMessageBox::NoButton, QMessageBox::NoButton); } else { QProcess edit; QString filename = file; #ifdef Q_WS_WIN filename.replace('/', '\\'); #endif #ifdef Q_WS_MAC // This checks whether we're on a Mac and if so, handles .app files appropriately QRegExp rxApp(".*\\.app"); if (rxApp.exactMatch(editor)) { res = edit.startDetached("open", QStringList() << "-a" << editor << filename); } else #endif { res = edit.startDetached(editor, QStringList() << filename); } // TEMPORARY FIX for problem with startDetached always failing #ifndef Q_WS_MAC if (!res) { QMessageBox::critical(this, APP_NAME, tr("Failed to start text editor (configure it in Options | Tools)"), QMessageBox::Ok, QMessageBox::NoButton, QMessageBox::NoButton); } #endif } } // Set a point upon which to base the relative coordinate system void GLEMainWindow::setRelativeBasePoint(QPointF gle) { lastPoint = gle; } // Get the size of the scoll area QSize GLEMainWindow::getScrollAreaSize() { return scrollArea->size(); } // Get the current file name QString GLEMainWindow::getCurrentGleFile() { return getCurrentFile()->gleFile(); } GLEInterface* GLEMainWindow::getGLEInterface() { return gleInterface; } GLEScript* GLEMainWindow::getGLEScript() { return gleScript.get(); } // Enable or disable the save button void GLEMainWindow::setSaveEnable(bool state) { saveAct->setEnabled(state); } // Render Postscript code to QImage void GLEMainWindow::renderPostscript(const char* ps, const GLERectangle& rect, double dpi, QImage* result) { // qDebug() << "Rendering: " << rect.getWidth() << " x " << rect.getHeight(); renderThread->startRender(rect, dpi); QString translate = QString("%1 %2 translate\n").arg(-rect.getXMin()*PS_POINTS_PER_INCH/CM_PER_INCH).arg(-rect.getYMin()*PS_POINTS_PER_INCH/CM_PER_INCH); renderThread->nextRender(translate.toLatin1().constData()); renderThread->nextRender(gleInterface->getInitialPostScript()); renderThread->nextRender(ps); renderThread->nextRender(gleInterface->getTerminatePostScript()); renderThread->endRender(result); } gle-graphics-4.2.4c/src/gui/newfile.h0000664000000000000000000000516511405446017016117 0ustar rootroot/*********************************************************************************** * QGLE - A Graphical Interface to GLE * * Copyright (C) 2006 A. S. Budden & J. Struyf * * * * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * * * Also add information on how to contact you by electronic and paper mail. * ***********************************************************************************/ /*************************************************************** * newfile.h: The class definition for the new file dialogue. * ***************************************************************/ #ifndef __NEWFILE_H #define __NEWFILE_H #include //! Class used to display a dialogue box asking the user for the size of the drawing class NewFileBox : public QDialog { Q_OBJECT public: //! Class constructor NewFileBox(QWidget *parent = 0); //! Size of the drawing QSizeF size(); //! Should save the new imdage? inline bool shouldSave() { return save; } public slots: void saveClicked(); private: //! The layout of the dialogue box QGridLayout *layout; //! Spinbox for the width QDoubleSpinBox *width; //! Spinbox for the height QDoubleSpinBox *height; //! Create the drawing QPushButton *okCmd; //! Create the drawing and save it QPushButton *saveCmd; //! Give up. QPushButton *cancelCmd; //! Should save the new image? bool save; }; #endif gle-graphics-4.2.4c/src/gui/circle.h0000664000000000000000000000665011405446017015727 0ustar rootroot/*********************************************************************************** * QGLE - A Graphical Interface to GLE * * Copyright (C) 2006 A. S. Budden & J. Struyf * * * * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * * * Also add information on how to contact you by electronic and paper mail. * ***********************************************************************************/ #ifndef _GLECIRCLE_H #define _GLECIRCLE_H #include "drawingobject.h" //! Class describing a circle drawing object class GLECircle : public GLEDrawingObject { Q_OBJECT public: //! Enumeration of points used to describe a circle enum Points { CentrePoint, CircumferencePoint, Radius }; //! Constructor used for initialising variables and connections GLECircle(double resolution, QSize imageSize, GLEDrawingArea *area); //! Draw the circle on the provided painter void draw(QPainter *p); //! Return the shortest distance between a given point and the circle double distanceToPoint(const QPointF& p, QPointF *nearestPoint); //! Set one of the enumerated points void setPoint(int pointChoice, const QPointF& p, bool update = true); //! Find points where a line intersects the circle // If vertical = true, m contains 'x' QList intersections(double qtm, double qtc, bool vertical = false); QList intersections(QPointF qtp1, QPointF qtp2); QList intersections(QPointF qtp1, double angle); //! Is the point inside the object? bool isInside(QPointF p); void addRelativeOSnaps(QPointF p); QList getTangents(QPointF p); bool hasTangents(); QList getPerpendiculars(QPointF p); bool hasPerpendiculars(); void createOTracks(); //! Return the circle's bounding rectangle in Qt coordinates QRectF circleRect(); bool findScaleOrigin(const QPointF& pt, QPointF* origin, int handle); int supportedTransformMode(); void linearTransform(const GLELinearEquation& ex, const GLELinearEquation& ey); void moveBy(QPointF offset); void rotateBy(double radians); private slots: //! Update the painter path when the resolution or start/end points change void updateCircle(); void updateFromProperty(int property); }; #endif gle-graphics-4.2.4c/src/gui/glegs.cpp0000664000000000000000000002001011405446017016104 0ustar rootroot/*********************************************************************************** * QGLE - A Graphical Interface to GLE * * Copyright (C) 2006 A. S. Budden & J. Struyf * * * * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * * * Also add information on how to contact you by electronic and paper mail. * ***********************************************************************************/ #ifdef HAVE_CONFIG_H #include "../config.h" #else #include "../config_noauto.h" #endif #include "gsinc/ierrors.h" #include "gsinc/iapi.h" #if STDC_HEADERS #include #else #if HAVE_STDLIB_H #include #endif #endif #if HAVE_STRING_H #if !STDC_HEADERS && HAVE_MEMORY_H #include #endif #include #endif #if HAVE_STRINGS_H #include #endif #ifdef __UNIX__ #include #endif #include #include #include #include using namespace std; #include "../gle/file_io.h" #include "../gle/cutils.h" // ./build/bin/glegs -I/Users/dtai/Library/Frameworks/Ghostscript.framework/Resources/lib -I/Users/dtai/Library/Frameworks/Ghostscript.framework/Resources/fonts -q -dAutoFilterColorImages=false -dAutoFilterGrayImages=false -dEncodeColorImages=true -dEncodeGrayImages=true -dEncodeMonoImages=true -dColorImageFilter=/FlateEncode -dGrayImageFilter=/FlateEncode -dMonoImageFilter=/FlateEncode -dBATCH -dNOPAUSE -r72 -g286x286 -sDEVICE=pdfwrite -sOutputFile="src/samples/sample.pdf" src/samples/sample.eps // ./build/bin/glegs -q -dAutoFilterColorImages=false -dAutoFilterGrayImages=false -dEncodeColorImages=true -dEncodeGrayImages=true -dEncodeMonoImages=true -dColorImageFilter=/FlateEncode -dGrayImageFilter=/FlateEncode -dMonoImageFilter=/FlateEncode -dBATCH -dNOPAUSE -r72 -g286x286 -sDEVICE=pdfwrite -sOutputFile="src/samples/sample.pdf" src/samples/sample.eps bool try_load_config(const string& confname, string* gsname) { ifstream file; file.open(confname.c_str()); if (!file.is_open()) { return false; } string line; while (file.good()) { getline(file, line); string::size_type pos = line.find("libgs ="); if (pos != string::npos) { line = line.substr(pos+7); str_trim_both(line); str_remove_quote(line); if (str_i_ends_with(line, ".framework")) { AddDirSep(line); line += "Ghostscript"; } *gsname = line; } } file.close(); return true; } bool try_load_config_sub(const string& topdir, vector& tries, string* gsname) { string confname = topdir; AddDirSep(confname); confname += "glerc"; tries.push_back(confname); return try_load_config(confname, gsname); } char* my_sdup(const char* str) { char* res = (char*)malloc(strlen(str)+1); strcpy(res, str); return res; } void clean_up(char** argv, char** margv) { if (argv != margv) { free(margv[1]); free(margv[2]); free(margv); } } int main(int argc, char** argv) { string exe_name; bool has_exe_name = GetExeName("glegs", argv, exe_name); if (!has_exe_name) { cout << "GLE-gs error: Can't locate executable" << endl; return 1; } string gsname; vector tries; bool has_help = false; #ifdef GLETOP_CD // Try relative path string GLE_TOP_DIR = exe_name; StripPathComponents(&GLE_TOP_DIR, GLETOP_CD+1); AddDirSep(GLE_TOP_DIR); GLE_TOP_DIR += GLETOP_REL; bool has_config = try_load_config_sub(GLE_TOP_DIR, tries, &gsname); // Try one level higher as executable if (!has_config) { GLE_TOP_DIR = exe_name; StripPathComponents(&GLE_TOP_DIR, 2); has_config = try_load_config_sub(GLE_TOP_DIR, tries, &gsname); } // Try with absolute path if (!has_config) { GLE_TOP_DIR = GLETOP_ABS; has_config = try_load_config_sub(GLE_TOP_DIR, tries, &gsname); } #else string GLE_TOP_DIR = exe_name; StripPathComponents(&GLE_TOP_DIR, 2); bool has_config = try_load_config_sub(GLE_TOP_DIR, tries, &gsname); #endif if (!has_config) { cout << "GLE-gs error: Can't locate configuration file (glerc)" << endl; for (unsigned int i = 0; i < tries.size(); i++) { cout << "Try: " << tries[i] << endl; } return 1; } string userconf = GetHomeDir(); AddDirSep(userconf); userconf += ".glerc"; try_load_config(userconf, &gsname); if (gsname == "") { cout << "GLE-gs error: No 'libgs' in configuration file (run 'gle -finddeps' to locate it)" << endl; return 1; } char** margv = argv; string::size_type fwpos = gsname.rfind(".framework"); if (fwpos != string::npos) { // If the Ghostscript framework is not installed in a default location it won't find its resources and fonts string loc = gsname.substr(0, fwpos+10); string libpath = string("-I") + loc + string("/Resources/lib"); string fontpath = string("-I") + loc + string("/Resources/fonts"); margv = (char**)malloc((argc+2)*sizeof(char*)); margv[0] = argv[0]; margv[1] = my_sdup(libpath.c_str()); margv[2] = my_sdup(fontpath.c_str()); for (int i = 1; i < argc; i++) { margv[i+2] = argv[i]; } argc += 2; } for (int i = 0; i < argc; i++) { // cout << "arg: " << margv[i] << endl; if (str_i_equals(margv[i], "-h")) has_help = true; } void* hmodule = dlopen(gsname.c_str(), RTLD_NOW); if (hmodule == NULL) { cout << "GLE-gs error: Can't load '" << gsname << "'" << endl; cout << dlerror() << endl; clean_up(argv, margv); return 1; } PFN_gsapi_new_instance gsapi_new_instance = (PFN_gsapi_new_instance) dlsym(hmodule,"gsapi_new_instance"); if (gsapi_new_instance == NULL) { dlclose(hmodule); clean_up(argv, margv); return 1; } PFN_gsapi_delete_instance gsapi_delete_instance = (PFN_gsapi_delete_instance) dlsym(hmodule, "gsapi_delete_instance"); if (gsapi_delete_instance == NULL) { dlclose(hmodule); clean_up(argv, margv); return 1; } PFN_gsapi_init_with_args gsapi_init_with_args = (PFN_gsapi_init_with_args) dlsym(hmodule, "gsapi_init_with_args"); if (gsapi_init_with_args == NULL) { dlclose(hmodule); clean_up(argv, margv); return 1; } PFN_gsapi_run_string gsapi_run_string = (PFN_gsapi_run_string) dlsym(hmodule, "gsapi_run_string"); if (gsapi_run_string == NULL) { dlclose(hmodule); clean_up(argv, margv); return 1; } PFN_gsapi_exit gsapi_exit = (PFN_gsapi_exit) dlsym(hmodule, "gsapi_exit"); if (gsapi_exit == NULL) { dlclose(hmodule); clean_up(argv, margv); return 1; } void *minst = NULL; int code = gsapi_new_instance(&minst, NULL); if (code < 0) { dlclose(hmodule); clean_up(argv, margv); return 1; } code = gsapi_init_with_args(minst, argc, margv); if (code == 0) { int exit_code; const char start_string[] = "systemdict /start get exec\n"; code = gsapi_run_string(minst, start_string, 0, &exit_code); } int code1 = gsapi_exit(minst); if (code == 0 || code == e_Quit) { code = code1; } gsapi_delete_instance(minst); dlclose(hmodule); clean_up(argv, margv); if (code == 0 || code == e_Quit) { return 0; } else { return 1; } } gle-graphics-4.2.4c/src/gui/colourpicker.cpp0000664000000000000000000001104111405446017017510 0ustar rootroot/*********************************************************************************** * QGLE - A Graphical Interface to GLE * * Copyright (C) 2006 A. S. Budden & J. Struyf * * * * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * * * Also add information on how to contact you by electronic and paper mail. * ***********************************************************************************/ #include "colourpicker.h" #include "variantdelegate.h" #include "qgle_statics.h" ColourPicker::ColourPicker(QWidget *parent, VariantDelegate *delegate) : QAbstractButton(parent) { changed = false; hasColour = false; parentDelegate = delegate; // At some point, this will be changed to // show a little frame with a standard // choice of colours including "no fill" chooserFrame = new QDialog(parent); QGridLayout *chooserLayout = new QGridLayout(); buttons.append(new ColourButton(QColor())); buttons.append(new ColourButton(Qt::white)); buttons.append(new ColourButton(Qt::blue)); buttons.append(new ColourButton(Qt::green)); buttons.append(new ColourButton(Qt::red)); buttons.append(new ColourButton(Qt::yellow)); ColourButton *button; int i = 0; foreach(button, buttons) { chooserLayout->addWidget(button, 1, i); connect(button, SIGNAL(colourChosen(QColor)), this, SLOT(colourChosen(QColor))); i++; } QPixmap ellipsis(":images/ellipsis.png"); ColourButton *moreButton = new ColourButton(ellipsis); chooserLayout->addWidget(moreButton, 1, i); connect(moreButton, SIGNAL(clicked()), this, SLOT(moreColours())); chooserFrame->setLayout(chooserLayout); chooserFrame->setBackgroundRole(QPalette::Button); chooserFrame->move(mapToGlobal(rect().bottomLeft())); chooserFrame->setWindowFlags(Qt::Dialog | Qt::FramelessWindowHint); } void ColourPicker::doShowPopup() { myTimer->stop(); chooserFrame->exec(); } void ColourPicker::showPopup() { myTimer = new QTimer(this); connect(myTimer, SIGNAL(timeout()), this, SLOT(doShowPopup())); myTimer->start(10); } void ColourPicker::paintEvent(QPaintEvent *) { QPainter painter(this); painter.fillRect(rect(), Qt::white); QPixmap colourSwatch(10,10); if (hasColour) { if (colour.isValid()) { colourSwatch.fill(colour); painter.drawPixmap(rect().center()-QPoint(5,5), colourSwatch); } else { QPen pen; pen.setColor(Qt::black); pen.setWidth(1); QGLE::drawBox(&painter, rect().center(), 4.0, pen); QGLE::drawCross(&painter, rect().center(), 4.0, pen); } } else { colourSwatch = QPixmap(":images/varyingcolours.png"); painter.drawPixmap(rect().center()-QPoint(5,5), colourSwatch); } } void ColourPicker::mouseDoubleClickEvent(QMouseEvent *) { chooserFrame->exec(); } void ColourPicker::moreColours() { chooserFrame->done(0); QColor newColour = QColorDialog::getColor(colour, this); if (newColour.isValid()) { setColour(newColour); changed = true; } parentDelegate->doneEditingColor(this); } QColor ColourPicker::getColour() { return(colour); } void ColourPicker::colourChosen(QColor col) { chooserFrame->done(0); setColour(col); changed = true; parentDelegate->doneEditingColor(this); } void ColourPicker::setColour(QColor col) { colour = col; hasColour = true; update(); } void ColourPicker::setColour() { hasColour = false; } bool ColourPicker::hasChanged() { return(changed); } gle-graphics-4.2.4c/src/gui/qgle_statics.cpp0000664000000000000000000005207211677265331017513 0ustar rootroot/*********************************************************************************** * QGLE - A Graphical Interface to GLE * * Copyright (C) 2006 A. S. Budden & J. Struyf * * * * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * * * Also add information on how to contact you by electronic and paper mail. * ***********************************************************************************/ #include #include "qgle_statics.h" #include "qgle_definitions.h" #include "drawingobject.h" #include #ifdef Q_WS_WIN #include #endif /******************************************* * Static members used in a lot of classes * *******************************************/ void QGLE::flushIO() { // Flush the IO to make debug messages appear quickly QTextStream out(stdout); out.flush(); QTextStream err(stderr); err.flush(); } QString QGLE::prettyDate(QString datestr) { // Create a QDate object based on the // provided date QDate dt = QDate::fromString(datestr, "dd/MM/yyyy"); QString prettyString = dt.toString("d MMMM yyyy"); QRegExp rx("^(\\d?)(\\d)(?= )"); QString suffix; if(rx.indexIn(prettyString) > -1) { if (rx.capturedTexts()[1].toInt() == 1) suffix = "th"; else switch(rx.capturedTexts()[2].toInt()) { case 1: suffix = "st"; break; case 2: suffix = "nd"; break; case 3: suffix = "rd"; break; default: suffix = "th"; } prettyString.replace(rx, rx.capturedTexts()[0] + suffix); } return(prettyString); } int QGLE::sign(double n) { if (n > 0.0) return(1); else if (n < 0.0) return(-1); else return(0); } int QGLE::sign(int n) { if (n > 0) return(1); else if (n < 0) return(-1); else return(0); } int QGLE::quadrant(double angle) { double degrees = radiansToDegrees(angle); int quadrant; // Make the number positive while(degrees < 0.0) degrees += 360.0; // Make the number less than 360 while(degrees > 360.0) degrees -= 360.0; if (degrees > 270.0) quadrant = 4; else if (degrees > 180.0) quadrant = 3; else if (degrees > 90.0) quadrant = 2; else quadrant = 1; return(quadrant); } QString QGLE::gleToQString(GLEString* str) { QString res; int len = (int)str->length(); res.resize(len); for (int i = 0; i < len; i++) { res[i] = QChar(str->get(i)); } return res; } void QGLE::qtToGLEString(const QString& str1, GLEString* str2) { unsigned int size = str1.size(); str2->setSize(size); for (unsigned int i = 0; i < size; i++) { str2->set(i, str1[i].unicode()); } } // Static member used to convert betweeen coordinate systems QPointF QGLE::absGLEToQt(double gleX, double gleY, double dpi, int areaHeight) { double qtX, qtY; QPointF relative = relGLEToQt(gleX,gleY,dpi); qtX = relative.x() + (GS_OFFSET*dpi); qtY = areaHeight - (relative.y() + (GS_OFFSET*dpi)); return(QPointF(qtX, qtY)); } // Static member used to convert betweeen coordinate systems QPointF QGLE::absGLEToQt(QPointF gle, double dpi, int areaHeight) { return(absGLEToQt(gle.x(), gle.y(), dpi, areaHeight)); } QPointF QGLE::absGLEToQt(const GLEPoint& gle, double dpi, int areaHeight) { return(absGLEToQt(gle.getX(), gle.getY(), dpi, areaHeight)); } QSizeF QGLE::qtSizeToGLE(QSizeF qt, double dpi) { // DO NOT RELY ON THIS FOR ACCURACY! double gleX, gleY; qt.setWidth(qt.width() - 2*GS_OFFSET*dpi); qt.setHeight(qt.height() - 2*GS_OFFSET*dpi); QPointF rel = relQtToGLE(qt.width(), qt.height(), dpi); gleX = rel.x(); gleY = rel.y(); return(QSizeF(gleX,gleY)); } // Static member used to convert betweeen coordinate systems QPointF QGLE::relGLEToQt(double gleX, double gleY, double dpi) { double qtX, qtY; qtX = gleX*dpi/CM_PER_INCH; qtY = gleY*dpi/CM_PER_INCH; return(QPointF(qtX, qtY)); } // Static member used to convert betweeen coordinate systems QPointF QGLE::relGLEToQt(QPointF gle, double dpi) { return(relGLEToQt(gle.x(), gle.y(), dpi)); } // Static member used to convert betweeen coordinate systems QSizeF QGLE::relGLEToQt(QSizeF gle, double dpi) { QPointF qt; qt = relGLEToQt(gle.width(), gle.height(), dpi); return(QSizeF(qt.x(),qt.y())); } double QGLE::relGLEToQt(double gle, double dpi) { return(gle*dpi/CM_PER_INCH); } // Static member used to convert betweeen coordinate systems QPointF QGLE::relQtToGLE(double qtX, double qtY, double dpi) { double gleX, gleY; gleX = qtX*CM_PER_INCH/dpi; gleY = qtY*CM_PER_INCH/dpi; return(QPointF(gleX, gleY)); } // Static member used to convert betweeen coordinate systems QPointF QGLE::relQtToGLE(QPointF qt, double dpi) { return(relQtToGLE(qt.x(), qt.y(), dpi)); } // Static member used to convert betweeen coordinate systems QSizeF QGLE::relQtToGLE(QSizeF qt, double dpi) { QPointF gle; gle = relQtToGLE(qt.width(), qt.height(), dpi); return(QSizeF(gle.x(),gle.y())); } double QGLE::relQtToGLE(double qt, double dpi) { return(qt*CM_PER_INCH/dpi); } // Static member used to convert betweeen coordinate systems QPointF QGLE::absQtToGLE(double qtX, double qtY, double dpi, int areaHeight) { double gleX, gleY; gleX = ((qtX/dpi)-GS_OFFSET)*CM_PER_INCH; gleY = (((areaHeight - qtY)/dpi)-GS_OFFSET)*CM_PER_INCH; return(QPointF(gleX, gleY)); } // Static member used to convert betweeen coordinate systems QPointF QGLE::absQtToGLE(QPointF qt, double dpi, int areaHeight) { return(absQtToGLE(qt.x(), qt.y(), dpi, areaHeight)); } // Static member used for type converting Qt points to GLEPoints GLEPoint QGLE::QPointFToGLEPoint(const QPointF& pt) { return GLEPoint(pt.x(), pt.y()); } // Static member used for type converting GLEPoints to Qt points QPointF QGLE::GLEPointToQPointF(const GLEPoint& pt) { return QPointF(pt.getX(), pt.getY()); } //! Static member used for converting from GLE coordinates to a GLE coordinate string QString QGLE::GLEToStr(QPointF gle) { return(GLEToStr(gle.x(), gle.y())); } //! Static member used for converting from GLE coordinates to a GLE coordinate string QString QGLE::GLEToStr(double gleX, double gleY) { QString x, y; x.setNum(gleX, 'f', GLE_NUMBER_MAX_DP); y.setNum(gleY, 'f', GLE_NUMBER_MAX_DP); x = ZeroCrop(x); y = ZeroCrop(y); return(QString("%1 %2").arg(x).arg(y)); } //! Static member used for converting from GLE distance to a GLE string QString QGLE::GLEToStr(double gle) { QString x; x.setNum(gle, 'f', GLE_NUMBER_MAX_DP); x = ZeroCrop(x); return(QString("%1").arg(x)); } //! Static member used to crop unnecessary zeros from the end of a number string QString QGLE::ZeroCrop(QString str) { int last0; int i; last0 = str.size(); for(i=str.size()-1;i>0;i--) { if (str.at(i) == '0') { last0 = i; } else if (str.at(i) == '.') { last0++; break; } else { break; } } if (last0 != str.size()) str.chop(str.size()-last0); return(str); } //! Static member used for finding the distance between two points double QGLE::distance(QPointF one, QPointF two) { return(sqrt(pow(one.x()-two.x(),2) + pow(one.y()-two.y(),2))); } //! Static member used for finding the distance between two points double QGLE::distance(double x, double y, QPointF two) { double dx = x-two.x(); double dy = y-two.y(); return(sqrt(dx*dx + dy*dy)); } double QGLE::angleBetweenTwoPoints(QPointF one, QPointF two) { return(atan2(two.y()-one.y(),two.x()-one.x())); } double QGLE::radiansToDegrees(double rads) { return(rads*180.0/M_PI); } double QGLE::degreesToRadians(double degrees) { return(degrees*M_PI/180.0); } //! Static member used to compute the minimum of two double values double QGLE::min(double a, double b) { return a < b ? a : b; } //! Static member comverting from centimeters to PostScript points double QGLE::cmToPt(double cm) { return cm*PS_POINTS_PER_INCH/CM_PER_INCH; } //! Static member used to compute the DPI value based on the display and image size (in cm) int QGLE::computeAutoScaleDPIFromCm(const QSize& bitmapSize, int inset, double imgWd, double imgHi) { // GLE always adds two points to the size of a drawing return computeAutoScaleDPIFromPts(bitmapSize, inset, cmToPt(imgWd)+2.0, cmToPt(imgHi)+2.0); } //! Static member used to compute the DPI value based on the display and image size (in pt) int QGLE::computeAutoScaleDPIFromPts(const QSize& bitmapSize, int inset, double bbWd, double bbHi) { // GLE: BitmapWd = (int)floor((double)dpi/PS_POINTS_PER_INCH*BoundingBoxWD+1) // BitmapWd + 0.1 = dpi/PS_POINTS_PER_INCH*BoundingBoxWD+1 // -> Solve for dpi double dpi_wd = PS_POINTS_PER_INCH * ((double)bitmapSize.width()-inset-0.9) / bbWd; double dpi_hi = PS_POINTS_PER_INCH * ((double)bitmapSize.height()-inset-0.9) / bbHi; return (int)floor(min(dpi_wd, dpi_hi)); } QString QGLE::GetExeName() { QString result = QString::null; #ifdef Q_WS_WIN char name[1024]; DWORD res = GetModuleFileNameA(NULL, name, 1023); if (res > 0) { name[res] = 0; result = name; } #elif defined Q_WS_X11 return(QFileInfo("/proc/self/exe").readLink()); #else return(QApplication::applicationFilePath()); #endif return result; } QString QGLE::GetDirName(QString fname) { QString result = fname; result.replace('\\', '/'); int i = result.lastIndexOf('/'); if (i != -1) { result.truncate(i+1); } else { result = ""; } return result; // // Could alternatively be achieved with // // something like: // QFileInfo fi(fname); // return(fi.absolutePath()); } QRegExp QGLE::fileRegExp() { #ifdef Q_WS_WIN QRegExp rx("(file:///)?(.*\\.(?:gle|eps))", Qt::CaseInsensitive); #else //#elif defined(Q_WS_X11) QRegExp rx("(file://)?(.*\\.(?:gle|eps))", Qt::CaseInsensitive); #endif return(rx); } QString QGLE::gsLibFileName() { #ifdef Q_WS_WIN return(QObject::tr("gsdll32.dll")); #elif defined(Q_WS_X11) return(QObject::tr("libgs.so")); #elif defined(Q_WS_MAC) return(QObject::tr("libgs.dylib")); #else #error "What operating system are you using?" #endif } QString QGLE::libraryFilter() { #ifdef Q_WS_WIN return(QObject::tr("DLLs (*.dll)")); #elif defined(Q_WS_X11) return(QObject::tr("Shared objects (*.so*)")); #elif defined(Q_WS_MAC) return(QObject::tr("Dynamic libraries (*.dylib);; Ghostscript framework (*)")); #else #error What operating system are you using? #endif } QString QGLE::gleExecutableName() { #ifdef Q_WS_WIN return(QString("gle.exe")); #else //#elif defined(Q_WS_X11) return(QString("gle")); #endif } QString QGLE::executableFilter() { #ifdef Q_WS_WIN return(QObject::tr("Executables (*.exe)")); #else //#elif defined(Q_WS_X11) return(QObject::tr("All files (*)")); #endif } //! Static member to enable a button if it is not null void QGLE::setEnabled(QPushButton* button, bool enable) { if (button != NULL) { button->setEnabled(enable); } } //! Static member to draw a box around a point void QGLE::drawBox(QPainter *p, QPointF origin, double half_size, QPen pen) { p->setPen(pen); p->drawLine(QLineF(origin.x() - half_size, origin.y() - half_size, origin.x() - half_size, origin.y() + half_size)); p->drawLine(QLineF(origin.x() - half_size, origin.y() + half_size, origin.x() + half_size, origin.y() + half_size)); p->drawLine(QLineF(origin.x() + half_size, origin.y() + half_size, origin.x() + half_size, origin.y() - half_size)); p->drawLine(QLineF(origin.x() + half_size, origin.y() - half_size, origin.x() - half_size, origin.y() - half_size)); } //! Static member to fill a box void QGLE::fillBox(QPainter *p, QPointF origin, int half_size, const QBrush& brush) { int x0 = (int)floor(origin.x()-half_size+0.5); int y0 = (int)floor(origin.y()-half_size+0.5); p->fillRect(x0, y0, 2*half_size, 2*half_size, brush); } //! Static member to draw a rotating handle around a point void QGLE::drawRotator(QPainter *p, QPointF origin, int corner, double half_size, QPen pen) { //double arrSize = 2.0; // pen.setWidthF(pen.widthF()*4.0); p->setPen(pen); p->save(); p->translate(origin); // Work on the top right corner, but rotate according to which corner // it actually is: if (corner == GLEDrawingArea::TopLeft) p->rotate(-90.0); else if (corner == GLEDrawingArea::BottomLeft) p->rotate(180.0); else if (corner == GLEDrawingArea::BottomRight) p->rotate(90.0); // p->drawArc(QRectF(-half_size, half_size, 2*half_size, 2*half_size), 0, 16*90); // p->drawLine(QLineF(half_size, 0.0, half_size - arrSize, -arrSize)); // p->drawLine(QLineF(half_size, 0.0, half_size + arrSize, -arrSize)); // p->drawLine(QLineF(0.0, half_size, arrSize, half_size - arrSize)); // p->drawLine(QLineF(0.0, half_size, arrSize, half_size + arrSize)); p->drawEllipse(QRectF(-half_size, -half_size, 2*half_size, 2*half_size)); p->restore(); } //! Static member to draw a line with arrows at the ends void QGLE::drawArrowLine(QPainter *p, qreal x0, qreal y0, qreal x1, qreal y1, qreal size, qreal angle, bool a0, bool a1, const QPen& pen) { double dx = x1 - x0; double dy = y1 - y0; GLEPoint start_pt((double)x0, (double)y0); GLEPoint end_pt((double)x1, (double)y1); GLEArrowPoints pts1, pts2; GLEGetArrowPointsNoProps(start_pt, dx, dy, 1, size, angle, &pts1); GLEGetArrowPointsNoProps(end_pt, -dx, -dy, 1, size, angle, &pts2); QPen new_pen = pen; new_pen.setJoinStyle(Qt::MiterJoin); new_pen.setMiterLimit(20); if (a0) start_pt.setXY(pts1.xl, pts1.yl); if (a1) end_pt.setXY(pts2.xl, pts2.yl); p->setPen(pen); p->drawLine(QPointF(start_pt.getX(), start_pt.getY()), QPointF(end_pt.getX(), end_pt.getY())); p->setPen(new_pen); if (a0) { QPointF poly[3]; poly[0] = QPointF(pts1.xa, pts1.ya); poly[1] = QPointF(pts1.xt, pts1.yt); poly[2] = QPointF(pts1.xb, pts1.yb); p->setBrush(QBrush(Qt::black)); p->drawConvexPolygon(poly, 3); } if (a1) { QPointF poly[3]; poly[0] = QPointF(pts2.xa, pts2.ya); poly[1] = QPointF(pts2.xt, pts2.yt); poly[2] = QPointF(pts2.xb, pts2.yb); p->setBrush(QBrush(Qt::black)); p->drawConvexPolygon(poly, 3); } } //! Static member to draw a scale handle around a point void QGLE::drawScaleHandle(QPainter *p, QPointF origin, int dx, int dy, double half_size, QPen pen) { QGLE::drawBox(p, origin, half_size, pen); QGLE::drawArrowLine(p, origin.x()+dx*half_size, origin.y()+dy*half_size, origin.x()+4*dx*half_size, origin.y()+4*dy*half_size, 1.5*half_size, 40, true, true, pen); } //! Static member to draw a cross at a point void QGLE::drawCross(QPainter *p, QPointF origin, double half_size, QPen pen) { p->setPen(pen); p->drawLine(QLineF(origin.x()-half_size, origin.y()-half_size, origin.x()+half_size, origin.y()+half_size)); p->drawLine(QLineF(origin.x()-half_size, origin.y()+half_size, origin.x()+half_size, origin.y()-half_size)); } void QGLE::drawPerpMark(QPainter *p, QPointF origin, QPen pen) { p->setPen(pen); double half_size = OSNAP_BOX_SIZE; p->drawLine(QLineF(origin.x()-2*half_size, origin.y(), origin.x()+2*half_size, origin.y())); p->drawLine(QLineF(origin.x(),origin.y(), origin.x(),origin.y()-4*half_size)); p->drawLine(QLineF(origin.x()-half_size, origin.y(), origin.x()-half_size, origin.y()-half_size)); p->drawLine(QLineF(origin.x()-half_size, origin.y()-half_size, origin.x(), origin.y()-half_size)); } void QGLE::drawTangentMark(QPainter *p, QPointF origin, QPen pen) { p->setPen(pen); double half_size = OSNAP_BOX_SIZE; p->drawLine(QLineF(origin.x()-2*half_size, origin.y(), origin.x()+2*half_size, origin.y())); p->drawArc(QRectF(origin.x()-2*half_size, origin.y(), 4*half_size, 4*half_size), 0,180*16); } void QGLE::drawIntersectMark(QPainter *p, QPointF origin, QPen pen) { p->setPen(pen); double half_size = OSNAP_BOX_SIZE; p->drawLine(QLineF(origin.x()-2*half_size, origin.y()-2*half_size, origin.x()+2*half_size, origin.y()+2*half_size)); p->drawLine(QLineF(origin.x(), origin.y()-2*half_size, origin.x(), origin.y()+2*half_size)); } void QGLE::drawOSnap(QPainter *p, QPointF snap, int type) { QPair combined; combined.first = snap; combined.second = type; drawOSnap(p, combined); } void QGLE::drawOSnap(QPainter *p, QPair snap) { p->setPen(osnapPen()); // Switch on snap.second switch(snap.second) { case PerpendicularSnap: drawPerpMark(p,snap.first,osnapPen()); break; case TangentSnap: drawTangentMark(p,snap.first,osnapPen()); break; case IntersectSnap: drawIntersectMark(p, snap.first, osnapPen()); break; default: drawBox(p,snap.first,OSNAP_BOX_SIZE,osnapPen()); } } bool QGLE::inOrder(double x, double y, double z) { if ((y >= x) && (z >= y)) return(true); else if ((y < x) && (z < y)) return(true); else return(false); } QPen QGLE::osnapPen() { QPen pen; pen.setColor(Qt::darkYellow); pen.setWidth(1); return(pen); } QPen QGLE::osnapLinePen() { QPen pen = osnapPen(); pen.setStyle(Qt::DashLine); return(pen); } QPen QGLE::otrackLinePen() { QPen pen = osnapPen(); pen.setStyle(Qt::DashLine); return(pen); } QPen QGLE::handlePen() { QPen pen; pen.setColor(Qt::black); pen.setWidth(1); return(pen); } QPointF QGLE::calculateScaleRatios(QPointF basePoint, QPointF startPoint, QPointF endPoint, int method) { QPointF oldSize = startPoint - basePoint; QPointF newSize = endPoint - basePoint; double yscale, xscale; switch (method) { case ProportionalScale: if (oldSize.x() == 0.0) xscale = 1e6; else xscale = newSize.x() / oldSize.x(); if (oldSize.y() == 0.0) yscale = 1e6; else yscale = newSize.y() / oldSize.y(); if (xscale > yscale) yscale = xscale; else xscale = yscale; break; case HorizontalScale: yscale = 1.0; if (oldSize.x() == 0.0) xscale = 1.0; else xscale = newSize.x() / oldSize.x(); break; case VerticalScale: xscale = 1.0; if (oldSize.y() == 0.0) yscale = 1.0; else yscale = newSize.y() / oldSize.y(); break; default: xscale = yscale = 1.0; } return(QPointF(xscale, yscale)); } QPointF QGLE::parkTransform(QPointF original, double angle) { QPointF newPoint; newPoint.setX(cos(angle)*original.x() + sin(angle)*original.y()); newPoint.setY(cos(angle)*original.y() - sin(angle)*original.x()); return(newPoint); } QPointF QGLE::rotateAboutPoint(QPointF original, double angle, QPointF basePoint) { // Get the point relative to new origin QPointF newPoint = original - basePoint; // Rotate newPoint = parkTransform(newPoint, angle); // Move back to the old origin newPoint = newPoint + basePoint; return(newPoint); } QString QGLE::colourQtToGLE(QColor colour) { if (!colour.isValid()) return(""); // TODO: // It would be better to detect predefined GLE colours // and use their names where possible and only resort // to CVTRGB if a standard colour cannot be matched. return(QString("CVTRGB(%1/255,%2/255,%3/255)") .arg(colour.red()) .arg(colour.green()) .arg(colour.blue())); } QString QGLE::getFileNameExtension(const QString& name) { int pos = name.length(); // Never search to before "/" or "\\": file may not have extension // And don't find "." in path before file name while (pos >= 1 && name[pos-1] != '/' && name[pos-1] != '\\' && name[pos-1] != '.' ) { pos--; } if (pos >= 1 && name[pos-1] == '.') { return name.mid(pos).toLower(); } else { return QString(); } } bool QGLE::isGraphicsExtension(const QString& name) { QString ext = QGLE::getFileNameExtension(name); if (ext == "pdf") return true; if (ext == "eps") return true; if (ext == "ps") return true; if (ext == "png") return true; if (ext == "jpg") return true; if (ext == "jpeg") return true; if (ext == "gif") return true; if (ext == "tif") return true; if (ext == "tiff") return true; return false; } QString QGLE::addFileNameExtension(const QString& name, const char* ext) { int i = name.lastIndexOf('.'); if (i != -1) { QString result = name.left(i); result.append("."); result.append(QString::fromUtf8(ext)); return result; } else { QString result = name; result.append("."); result.append(QString::fromUtf8(ext)); return result; } } void QGLE::ensureFileNameExtension(QString* str, const char* ext) { QRegExp rxExt(QString(".*\\.") + ext); rxExt.setCaseSensitivity(Qt::CaseInsensitive); if (!rxExt.exactMatch(*str)) { *str += "."; *str += ext; } } gle-graphics-4.2.4c/src/gui/consolewindow.cpp0000664000000000000000000001002211405446017017677 0ustar rootroot/*********************************************************************************** * QGLE - A Graphical Interface to GLE * * Copyright (C) 2006 A. S. Budden & J. Struyf * * * * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * * * Also add information on how to contact you by electronic and paper mail. * ***********************************************************************************/ #include "consolewindow.h" #include using namespace std; ConsoleWindow::ConsoleWindow(QWidget* parent, QSplitter* splitter) : QTextEdit(parent), output() { QFont font; font.setFamily("Courier"); font.setFixedPitch(true); font.setPointSize(10); setFont(font); setReadOnly(true); splitWindow = splitter; connect(&output, SIGNAL(print(const QString)), this, SLOT(print(const QString))); } ConsoleWindow::~ConsoleWindow() { } void ConsoleWindow::hideTriggered() { autoShowSize = height(); QWidget* first = splitWindow->widget(0); QList splitSizes; splitSizes.append(first->height()); splitSizes.append(0); splitWindow->setSizes(splitSizes); } void ConsoleWindow::shouldAutoShow() { if (output.getExitCode() != 0) { QWidget* first = splitWindow->widget(0); QList splitSizes; splitSizes.append(first->height()); if (autoShowSize != 0) { splitSizes.append(autoShowSize); } else { splitSizes.append(75); } splitWindow->setSizes(splitSizes); } } void ConsoleWindow::println(const QString& str) { append(str); } void ConsoleWindow::print(QString msg) { append(msg); } void ConsoleWindow::contextMenuEvent(QContextMenuEvent * e) { QMenu *menu = createStandardContextMenu(); menu->addAction(getHideAction()); menu->exec(e->globalPos()); delete menu; } ConsoleWindowOutput::ConsoleWindowOutput() { } ConsoleWindowOutput::~ConsoleWindowOutput() { } void ConsoleWindowOutput::println() { // emit print(QString::fromLatin1("\n")); } void ConsoleWindowOutput::println(const char* str) { emit print(QString::fromUtf8(str)); } void ConsoleWindowOutput::error(GLEErrorMessage* msg) { QString file = QString::fromUtf8(msg->getFile()); QString abbrev = QString::fromUtf8(msg->getLineAbbrev()); abbrev.replace('<', "<"); abbrev.replace('>', ">"); QString line = QString("%1").arg(msg->getLine()); QString fline = QString(">> %1 (%2)").arg(file).arg(msg->getLine()); if (abbrev.length() > 0) { abbrev = QString(" |%1|").arg(abbrev); } QString outstr = fline+abbrev; if (msg->getColumn() != -1) { QString point = ">> "; int nbspc = file.length() + line.length() + 4 + msg->getColumn() - msg->getDelta(); for (int i = 0; i < nbspc; i++) { point += " "; } point += "^"; outstr += "
" + point; } emit print(outstr); } gle-graphics-4.2.4c/src/gui/text.h0000664000000000000000000000717011405446017015450 0ustar rootroot/*********************************************************************************** * QGLE - A Graphical Interface to GLE * * Copyright (C) 2006 A. S. Budden & J. Struyf * * * * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * * * Also add information on how to contact you by electronic and paper mail. * ***********************************************************************************/ #ifndef _GLETEXT_H #define _GLETEXT_H #include "drawingobject.h" //! Class describing a text drawing object class GLEText : public GLEDrawingObject { Q_OBJECT public: //! Enumeration of the points needed to draw a text object enum Points { ReferencePoint }; //! Constructor used for initialising variables and connections GLEText(double resolution, QSize imageSize, GLEDrawingArea* area); //! Draw the text on the provided painter void draw(QPainter *p); //! Return the shortest distance between a given point and the text object double distanceToPoint(const QPointF& p, QPointF *nearestPoint); double nearestOSnap(const QPointF& p, QPointF *osnap); //! Set one of the enumerated points void setPoint(int pointChoice, const QPointF& p, bool update = true); void addRelativeOSnaps(QPointF p); //! Find points where a line intersects the text string (there are none) // If vertical = true, m contains 'x' QList intersections(double qtm, double qtc, bool vertical = false); QList intersections(QPointF qtp1, double angle); QList intersections(QPointF qtp1, QPointF qtp2); QList getTangents(QPointF p); bool hasTangents(); QList getPerpendiculars(QPointF p); bool hasPerpendiculars(); //! Is the point inside the object (for a text string, always false) bool isInside(QPointF p); //! Set the reference point (tl,bl,tc,bc,tr,br,...) bool setReferencePoint(const QPointF& pt); bool trySetReferencePoint(const QPointF& pt, double x, double y, GLEJustify just, double* minDist); void moveBy(QPointF offset); void rotateBy(double radians); void createOTracks(); void updateFromPropertyNoDirty(int property); void renderPostscript(); public slots: void resChanged(); private slots: //! Update the painter path when the resolution or start/end points change void updateText(); void updateFromProperty(int property); private: QPixmap renderedText; QPointF drawPoint; GLERectangle rect; double lastdpi; }; #endif gle-graphics-4.2.4c/src/gui/settings.cpp0000664000000000000000000002027311676160356016667 0ustar rootroot/*********************************************************************************** * QGLE - A Graphical Interface to GLE * * Copyright (C) 2006 A. S. Budden & J. Struyf * * * * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * * * Also add information on how to contact you by electronic and paper mail. * ***********************************************************************************/ #include "settings.h" #include // Constructor: create the settings object GLESettings::GLESettings(QObject *parent) : QObject(parent) { settingStore = new QSettings("gle", "qgle", this); } void GLESettings::readAll() { // Read the application settings setPosition(settingStore->value("application/position", QPoint(200,200)).toPoint()); setSize(settingStore->value("application/size", QSize(400,400)).toSize()); setMainWindowState(settingStore->value("application/mainstate").toByteArray()); setDrawingAreaSize(settingStore->value("application/drawingsize", QSize(400,400)).toSize()); setStoreSize(settingStore->value("application/storeSize", true).toBool()); setStoreDirectory(settingStore->value("application/storeDirectory", true).toBool()); setSaveOnPreview(settingStore->value("application/saveOnPreview", false).toBool()); setAskAboutObjects(settingStore->value("application/askAboutKeepingObjects", true).toBool()); setAutoScaleOnOpen(settingStore->value("application/autoScaleOnOpen", true).toBool()); setLibGSLocation(settingStore->value("application/libGSLocation", QString()).toString()); setEditorLocation(settingStore->value("application/editorLocation", QString("")).toString()); setDPI(settingStore->value("application/resolution", 100).toInt()); setMonitorOpenFile(settingStore->value("application/monitorOpenFile", true).toBool()); setMonitorAutoReloadFile(settingStore->value("application/monitorAutoReload", true).toBool()); setSplitterPosition(settingStore->value("application/splitterSizes").toByteArray()); setConsoleWindowAutoShowSize(settingStore->value("application/consoleAutoShowSize", 0).toInt()); setEmulateGLEVersion(settingStore->value("application/emulateGLEVersion", 0).toInt()); setExportFormat(settingStore->value("application/exportFormat", 0).toInt()); setExportPageSize(settingStore->value("application/exportPageSize", 0).toInt()); setPreviewPageSize(settingStore->value("application/previewPageSize", 0).toInt()); setOpenExportedFigure(settingStore->value("application/openExportedFigure", true).toBool()); setExportGrayScale(settingStore->value("application/exportGrayScale", false).toBool()); setExportTransparent(settingStore->value("application/exportTransparent", false).toBool()); setExportBitmapResolution(settingStore->value("application/exportBitmapResolution", 150).toInt()); setExportVectorResolution(settingStore->value("application/exportVectorResolution", 600).toInt()); setRenderUsingCairo(settingStore->value("application/renderUsingCairo", false).toBool()); if (storeDirectory()) setPwd(settingStore->value("application/workingDirectory", "").toString()); // Read the server settings setPort(settingStore->value("server/portNumber", DEFAULT_PORT).toInt()); setAutoStartServer(settingStore->value("server/autoStart", true).toBool()); // Read the drawing settings setGrid(QPointF(settingStore->value("drawing/gridX", 1.0).toDouble(), settingStore->value("drawing/gridY", 1.0).toDouble())); setEqualGrid(settingStore->value("drawing/equalGrid", false).toBool()); setPolarSnapStartAngle(settingStore->value("drawing/polarSnapStartAngle", 0.0).toDouble()); setPolarSnapIncAngle(settingStore->value("drawing/polarSnapIncAngle", 30.0).toDouble()); setOsnapOnStart(settingStore->value("drawing/osnapOnStart", false).toBool()); setOrthoSnapOnStart(settingStore->value("drawing/orthoSnapOnStart", false).toBool()); setPolarSnapOnStart(settingStore->value("drawing/polarSnapOnStart", false).toBool()); setPolarTrackOnStart(settingStore->value("drawing/polarTrackOnStart", false).toBool()); setGridSnapOnStart(settingStore->value("drawing/gridSnapOnStart", false).toBool()); } void GLESettings::writeAll() { // Store the application settings settingStore->setValue("application/position", position()); settingStore->setValue("application/size", size()); settingStore->setValue("application/mainstate", mainWindowState()); settingStore->setValue("application/drawingsize", drawingAreaSize()); settingStore->setValue("application/storeSize", storeSize()); settingStore->setValue("application/storeDirectory", storeDirectory()); settingStore->setValue("application/saveOnPreview", saveOnPreview()); settingStore->setValue("application/autoScaleOnOpen", autoScaleOnOpen()); settingStore->setValue("application/libGSLocation", getLibGSLocation()); settingStore->setValue("application/editorLocation", editorLocation()); settingStore->setValue("application/resolution", dpi()); settingStore->setValue("application/monitorOpenFile", monitorOpenFile()); settingStore->setValue("application/monitorAutoReload", monitorAutoReloadFile()); settingStore->setValue("application/askAboutKeepingObjects", askAboutObjects()); settingStore->setValue("application/splitterSizes", splitterPosition()); settingStore->setValue("application/consoleAutoShowSize", getConsoleWindowAutoShowSize()); settingStore->setValue("application/emulateGLEVersion", getEmulateGLEVersion()); settingStore->setValue("application/exportFormat", getExportFormat()); settingStore->setValue("application/exportPageSize", getExportPageSize()); settingStore->setValue("application/previewPageSize", getPreviewPageSize()); settingStore->setValue("application/openExportedFigure", isOpenExportedFigure()); settingStore->setValue("application/exportGrayScale", isExportGrayScale()); settingStore->setValue("application/exportTransparent", isExportTransparent()); settingStore->setValue("application/exportBitmapResolution", getExportBitmapResolution()); settingStore->setValue("application/exportVectorResolution", getExportVectorResolution()); settingStore->setValue("application/renderUsingCairo", isRenderUsingCairo()); if (storeDirectory()) settingStore->setValue("application/workingDirectory", pwd()); // Store the server settings settingStore->setValue("server/portNumber", port()); settingStore->setValue("server/autoStart", autoStartServer()); // Store the drawing settings settingStore->setValue("drawing/gridX", grid().x()); settingStore->setValue("drawing/gridY", grid().y()); settingStore->setValue("drawing/equalGrid", equalGrid()); settingStore->setValue("drawing/polarSnapStartAngle", polarSnapStartAngle()); settingStore->setValue("drawing/polarSnapIncAngle", polarSnapIncAngle()); settingStore->setValue("drawing/osnapOnStart", osnapOnStart()); settingStore->setValue("drawing/orthoSnapOnStart", orthoSnapOnStart()); settingStore->setValue("drawing/polarSnapOnStart", polarSnapOnStart()); settingStore->setValue("drawing/polarTrackOnStart", polarSnapOnStart()); settingStore->setValue("drawing/gridSnapOnStart", gridSnapOnStart()); } gle-graphics-4.2.4c/src/gui/grid.cpp0000664000000000000000000001061011405446017015735 0ustar rootroot/*********************************************************************************** * QGLE - A Graphical Interface to GLE * * Copyright (C) 2006 A. S. Budden & J. Struyf * * * * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * * * Also add information on how to contact you by electronic and paper mail. * ***********************************************************************************/ #include "qgle_definitions.h" #include "qgle_statics.h" #include "grid.h" #include // The constructor, initialise variables and clear the grid GLEGrid::GLEGrid(QObject *parent) : QObject(parent) { gridSpacing = QPointF(0.0,0.0); dpi = 0; // don't compute all points: this is too slow for small grid sizes // because the number of points quadratically increases as grid size decreases paintPen.setStyle(Qt::SolidLine); paintPen.setCapStyle(Qt::RoundCap); paintPen.setColor(Qt::black); //paintPen.setWidth(0); paintPen.setWidth(1); areaSize = QSizeF(0.0,0.0); } // SLOT: Set the grid spacing void GLEGrid::setGrid(QPointF newGrid) { if (gridSpacing != newGrid) { gridSpacing = newGrid; } } // SLOT: Set the pixmap area void GLEGrid::setArea(QSize area) { if (area != areaSize) { areaSize = area; } } // SLOT: set the resolution void GLEGrid::setDPI(double new_dpi) { if (dpi != new_dpi) { dpi = new_dpi; updatePen(); } } // Update the pen width according to the resolution void GLEGrid::updatePen() { //paintPen.setWidth((int) floor(dpi/100.0)); paintPen.setWidth(1); } QPen GLEGrid::pen() { return(paintPen); } //! Draw the grid void GLEGrid::drawGrid(QPainter* paint) { // Only set up the grid if we have the spacings and dpi if ((gridSpacing.x() == 0.0) || (gridSpacing.y() == 0.0) || (dpi == 0.0) || (areaSize.height() == 0)) { return; } // Get the grid spacing in QT units QPointF qtGrid = QGLE::relGLEToQt(gridSpacing, dpi); // Create the grid int nbX = (int)floor(areaSize.width()/qtGrid.x()+1.0); int nbY = (int)floor(areaSize.height()/qtGrid.y()+1.0); for (int x = 0; x < nbX; x ++) { double xp = GS_OFFSET*dpi + x*qtGrid.x(); for (int y = 0; y < nbY; y++) { double yp = GS_OFFSET*dpi + y*qtGrid.y(); paint->drawPoint(QPointF(xp, areaSize.height() - yp)); } } } // Find the nearest point to a given (QT) point: used for snap to grid QPointF GLEGrid::nearestPoint(QPointF qt, double *distance) { // Only set up the grid if we have the spacings and dpi if ((gridSpacing.x() == 0.0) || (gridSpacing.y() == 0.0) || (dpi == 0.0) || (areaSize.height() == 0)) { if (distance) *distance = 1e6; return QPointF(); } // Get the grid spacing in QT units QPointF qtGrid = QGLE::relGLEToQt(gridSpacing,dpi); // Find the nearest point double xp = qt.x() - GS_OFFSET*dpi; double yp = areaSize.height() - qt.y() - GS_OFFSET*dpi; int x = max((int)floor(xp / qtGrid.x() + 0.5), 0); int y = max((int)floor(yp / qtGrid.y() + 0.5), 0); double nearX = GS_OFFSET*dpi + x*qtGrid.x(); double nearY = areaSize.height() - (GS_OFFSET*dpi + y*qtGrid.y()); if (distance) { double dx = qt.x()-nearX; double dy = qt.y()-nearY; *distance = sqrt(dx*dx + dy*dy); } return QPointF(nearX, nearY); } gle-graphics-4.2.4c/src/gui/about.h0000664000000000000000000000457211405670222015576 0ustar rootroot/*********************************************************************************** * QGLE - A Graphical Interface to GLE * * Copyright (C) 2006 A. S. Budden & J. Struyf * * * * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * * * Also add information on how to contact you by electronic and paper mail. * ***********************************************************************************/ /*************************************************************** * about.h: The class definition for the about box. * ***************************************************************/ #ifndef __ABOUTBOX_H #define __ABOUTBOX_H #include class GLEInterface; //! Class describing an about box to give information about QGLE class AboutBox : public QDialog { Q_OBJECT public: //! The class constructor AboutBox(QWidget* par,GLEInterface* gleInterface); private: QTextBrowser* createAboutPanel(); QWidget* createContributorsPanel(); QWidget* createLicensePanel(); private slots: //! Open a given URL void showURL(const QUrl&); private: GLEInterface* m_gleInterface; int m_minWidth; }; #endif gle-graphics-4.2.4c/src/gui/qgle_definitions.h0000664000000000000000000000633211405446120020001 0ustar rootroot/*********************************************************************************** * QGLE - A Graphical Interface to GLE * * Copyright (C) 2006 A. S. Budden & J. Struyf * * * * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * * * Also add information on how to contact you by electronic and paper mail. * ***********************************************************************************/ #ifndef _QGLE_DEF_H #define _QGLE_DEF_H // The version number and application name #define APP_NAME tr("QGLE") // Some application defaults/defines #define DEFAULT_PORT 6667 #define CM_PER_INCH 2.54 // // This is the offset (in inches) that is added around the border // of the drawing by GLE #define GS_OFFSET (1.0/72.0) // The maximum allowable distance between a click point and an object // to be selected #define MAX_SELECT_DISTANCE 8.0 // The length of the AMove cross #define AMOVE_LENGTH 8 // The step to zoom in by #define ZOOM_STEP 1.5 // The maximum number of decimal places in GLE coordinates #define GLE_NUMBER_MAX_DP 6 // The default size for new diagrams #define DEFAULT_NEW_SIZE 12.0 // The maximum distance at which to draw OSNAP handles #define MAX_OSNAP_DRAW_DISTANCE 20.0 // The maximum distance at which to set the current position to be // the osnap #define MAX_OSNAP_DISTANCE 5.0 // The maximum distance at which to keep snap lines #define MAX_SNAP_LINE_DISTANCE 10.0 // Half the size of the OSNAP box #define OSNAP_BOX_SIZE 3 // Prevents unused argument warnings #define UNUSED_ARG(x) (void) x // The size of the handles used to resize objects #define HANDLE_SIZE 3.0 // The minimum on-screen circle radius #define MINIMUM_CIRCLE_RADIUS 1e-6 // The maximum number of iterations to use when finding // elliptical perpendicular points #define MAX_ELLIPSE_PERP_ITERATIONS 15 // The target accuracy (in radians) for elliptical perpendicular // points #define ELLIPSE_PERP_ACCURACY 1e-3 #ifndef M_PI #define M_PI 3.14159265358979323846 #endif #endif gle-graphics-4.2.4c/src/gui/newfile.cpp0000664000000000000000000000662611405446017016455 0ustar rootroot/*********************************************************************************** * QGLE - A Graphical Interface to GLE * * Copyright (C) 2006 A. S. Budden & J. Struyf * * * * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * * * Also add information on how to contact you by electronic and paper mail. * ***********************************************************************************/ /******************************************************************** * newfile.cpp: The class implementation for the new file dialogue. * ********************************************************************/ #include #include "newfile.h" #include "qgle_definitions.h" NewFileBox::NewFileBox(QWidget *parent) : QDialog(parent) { // Set the window title and size setWindowTitle(tr("New Diagram")); resize(150,150); save = false; // A Spin box to set the width of the new drawing width = new QDoubleSpinBox; width->setRange(0.0,21.0); width->setValue(DEFAULT_NEW_SIZE); // A spin box to set the height of the new drawing height = new QDoubleSpinBox; height->setRange(0.0,29.7); height->setValue(DEFAULT_NEW_SIZE); // Create a layout and some push buttons cancelCmd = new QPushButton(tr("Cancel")); saveCmd = new QPushButton(tr("Save As")); okCmd = new QPushButton(tr("OK")); okCmd->setDefault(true); connect(cancelCmd, SIGNAL(clicked()), this, SLOT(reject())); connect(saveCmd, SIGNAL(clicked()), this, SLOT(saveClicked())); connect(okCmd, SIGNAL(clicked()), this, SLOT(accept())); // Layout the dialogue QVBoxLayout* main = new QVBoxLayout(); layout = new QGridLayout(); layout->addWidget(new QLabel("Width (cm):"),0,0,1,1); layout->addWidget(width,0,1,1,2); layout->addWidget(new QLabel("Height (cm):"),1,0,1,1); layout->addWidget(height,1,1,1,2); main->addLayout(layout); QHBoxLayout* butt = new QHBoxLayout(); butt->addStretch(1); butt->addWidget(cancelCmd); butt->addWidget(saveCmd); butt->addWidget(okCmd); main->addLayout(butt); setLayout(main); } // Return the selected sizes QSizeF NewFileBox::size() { return(QSizeF(width->value(), height->value())); } void NewFileBox::saveClicked() { save = true; accept(); } gle-graphics-4.2.4c/src/gui/amove.cpp0000664000000000000000000001156211405446017016126 0ustar rootroot/*********************************************************************************** * QGLE - A Graphical Interface to GLE * * Copyright (C) 2006 A. S. Budden & J. Struyf * * * * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * * * Also add information on how to contact you by electronic and paper mail. * ***********************************************************************************/ #include "amove.h" // The constructor for the line object GLEAmove::GLEAmove(double resolution, QSize imageSize, GLEDrawingArea *area) : GLEDrawingObject(resolution, imageSize, area) { // Make sure the line is updated if a point changes or // the image size changes connect(this, SIGNAL(pointChanged()), this, SLOT(updateAmove())); connect(this, SIGNAL(imageChanged()), this, SLOT(updateAmove())); amove = true; } void GLEAmove::createOTracks() { } // Update the painter path void GLEAmove::updateAmove() { // Only do this if both the start and end have been set if (isSet(CentrePoint)) { // This is guaranteed to have been created in the constructor // of GLEDrawingObject delete(paintPath); // Create a new path starting at lineStart paintPath = new QPainterPath(); QPointF qtAmove = getQtPoint(CentrePoint); paintPath->addRect(QRectF(qtAmove.x()-AMOVE_LENGTH, qtAmove.y()-AMOVE_LENGTH, 2*AMOVE_LENGTH, 2*AMOVE_LENGTH)); osnapHandles.clear(); osnapHandles.append(QPair(qtAmove,QGLE::CentreSnap)); } } void GLEAmove::addRelativeOSnaps(QPointF p) { UNUSED_ARG(p); } void GLEAmove::draw(QPainter *p) { QGLE::drawCross(p, getQtPoint(CentrePoint), AMOVE_LENGTH, pen()); } QList GLEAmove::getTangents(QPointF p) { QList empty; UNUSED_ARG(p); return(empty); } bool GLEAmove::hasTangents() { return(false); } QList GLEAmove::getPerpendiculars(QPointF p) { QList empty; UNUSED_ARG(p); return(empty); } bool GLEAmove::hasPerpendiculars() { return(false); } double GLEAmove::distanceToPoint(const QPointF& p, QPointF *nearestPoint) { QPointF amovePoint = getQtPoint(CentrePoint); if (nearestPoint) *nearestPoint = amovePoint; return(QGLE::distance(amovePoint, p)); } // Set a point (start or end in the case of a line) void GLEAmove::setPoint(int pointChoice, const QPointF& p, bool) { switch(pointChoice) { case CentrePoint: pointHash[pointChoice] = QGLE::absQtToGLE(p, dpi, pixmap.height()); break; } updateAmove(); } QList GLEAmove::intersections(double qtm, double qtc, bool vertical) { UNUSED_ARG(qtm); UNUSED_ARG(qtc); UNUSED_ARG(vertical); return QList(); } QList GLEAmove::intersections(QPointF qtp1, QPointF qtp2) { UNUSED_ARG(qtp1); UNUSED_ARG(qtp2); return QList(); } QList GLEAmove::intersections(QPointF qtp1, double angle) { UNUSED_ARG(qtp1); UNUSED_ARG(angle); return QList(); } bool GLEAmove::isInside(QPointF p) { UNUSED_ARG(p); return(false); } void GLEAmove::scaleBy(double xratio, double yratio) { pointHash.clear(); QPointF oldOffset = getQtPoint(CentrePoint, true) - basePoint; QPointF newOffset; newOffset.setX(oldOffset.x() * xratio); newOffset.setY(oldOffset.y() * yratio); setPoint(CentrePoint, basePoint + newOffset); } void GLEAmove::moveBy(QPointF offset) { pointHash.clear(); // Moves relative to storedPointHash QPointF start = getQtPoint(CentrePoint, true); setPoint(CentrePoint, start + offset); } void GLEAmove::rotateBy(double radians) { pointHash.clear(); // Moves relative to storedPointHash QPointF start = getQtPoint(CentrePoint, true); setPoint(CentrePoint, QGLE::rotateAboutPoint(start, radians, basePoint)); } gle-graphics-4.2.4c/src/gui/text.cpp0000664000000000000000000003171411652762452016014 0ustar rootroot/*********************************************************************************** * QGLE - A Graphical Interface to GLE * * Copyright (C) 2006 A. S. Budden & J. Struyf * * * * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * * * Also add information on how to contact you by electronic and paper mail. * ***********************************************************************************/ #include #include "text.h" // The constructor for the line object GLEText::GLEText(double resolution, QSize imageSize, GLEDrawingArea *area) : GLEDrawingObject(resolution, imageSize, area) { lastdpi = -1; // Make sure the line is updated if a point changes or // the image size changes connect(this, SIGNAL(pointChanged()), this, SLOT(updateText())); connect(this, SIGNAL(imageChanged()), this, SLOT(resChanged())); connect(this, SIGNAL(propertyChanged(int)), this, SLOT(updateFromProperty(int))); amove = false; drawPoint = QPointF(0.0,0.0); // More to be added validProperties << Text << FontName << FontStyle << FontSize << Alignment << LineColour; properties[Text] = propertyDescriptions[Text].defaultValue; properties[FontName] = propertyDescriptions[FontName].defaultValue; properties[FontStyle] = propertyDescriptions[FontStyle].defaultValue; properties[FontSize] = propertyDescriptions[FontSize].defaultValue; properties[Alignment] = propertyDescriptions[Alignment].defaultValue; properties[LineColour] = propertyDescriptions[LineColour].defaultValue; } void GLEText::resChanged() { if (dpi != lastdpi) { renderPostscript(); lastdpi = dpi; } else { updateText(); } } void GLEText::createOTracks() { } void GLEText::updateFromPropertyNoDirty(int property) { GLETextDO* text = (GLETextDO*)getGLEObject(); GLEPropertyStore* text_settings = text->getProperties(); switch(property) { case Text: case LineColour: case FontName: case FontStyle: case FontSize: { // Font is // fontList[properties[FontName].value] // (default "rm") GLEInterface* iface = getGLEInterface(); QColor color = getProperty(LineColour).value(); GLEColor* gle_color = text_settings->getColorProperty(GLEDOPropertyColor); gle_color->setRGB255(color.red(), color.green(), color.blue()); GLEFont* font = iface->getFont(getProperty(FontName).toInt()); font = font->getStyle((GLEFontStyle)getProperty(FontStyle).toInt()); text_settings->setFontProperty(GLEDOPropertyFont, font); text_settings->setRealProperty(GLEDOPropertyFontSize, getProperty(FontSize).toDouble()); text->setText(getProperty(Text).toString().toUtf8()); text->render(iface); // Get the bounding box (important!) text->getPSBoundingBox(&rect); // Now we need to pass this to the ghostscript renderer... renderPostscript(); break; } case Alignment: { text_settings->setIntProperty(GLEDOPropertyJustify, getProperty(GLEText::Alignment).toInt()); updateText(); break; } default: updateText(); } } void GLEText::renderPostscript() { QImage img; GLETextDO* text = (GLETextDO*)getGLEObject(); drawingArea->renderPostscript(text->getPostScriptCode(), rect, dpi, &img); renderedText = QPixmap::fromImage(img); updateText(); } void GLEText::updateFromProperty(int property) { if (property == Text) { GLETextDO* text = (GLETextDO*)getGLEObject(); text->setModified(true); } updateFromPropertyNoDirty(property); ((GLEDrawingArea*)parent())->setDirtyAndSave(); } // Update the painter path void GLEText::updateText() { // Only do this if both the start and end have been set GLETextDO* text = (GLETextDO*)getGLEObject(); if (isSet(ReferencePoint) && text != NULL) { // This is guaranteed to have been created in the constructor // of GLEDrawingObject delete(paintPath); // Create a new path starting at lineStart paintPath = new QPainterPath(); QPointF qtText = getQtPoint(ReferencePoint); QPointF qtRelative; QPointF refPt; // Update GLE object text->setPosition(QGLE::QPointFToGLEPoint(getGLEPoint(ReferencePoint))); text->setText(getProperty(Text).toString().toUtf8()); int alignProp = getProperty(Alignment).toInt(); // Now work out the point at which the object is drawn: switch(alignProp) { case GLEJustifyTL: refPt = QPointF(0.0, -rect.getYMax()); break; case GLEJustifyTR: refPt = QPointF(rect.getXMax(), -rect.getYMax()); break; case GLEJustifyBL: refPt = QPointF(0.0, 0.0); break; case GLEJustifyBR: refPt = QPointF(rect.getXMax(), 0.0); break; case GLEJustifyLC: refPt = QPointF(0.0, -rect.getYMax()/2.0); break; case GLEJustifyRC: refPt = QPointF(rect.getXMax(), -rect.getYMax()/2.0); break; case GLEJustifyTC: refPt = QPointF(rect.getXMax()/2.0, -rect.getYMax()); break; case GLEJustifyBC: refPt = QPointF(rect.getXMax()/2.0, 0.0); break; case GLEJustifyLeft: refPt = QPointF(0.0, -text->getBaseLine()); break; case GLEJustifyRight: refPt = QPointF(rect.getXMax(), -text->getBaseLine()); break; case GLEJustifyCenter: refPt = QPointF(rect.getXMax()/2.0, -text->getBaseLine()); break; case GLEJustifyCC: default: // Case 0: CC // Centre point is at rect.getXMax()/2, rect.getYMax()/2 // in GLE coordinates. Therefore, the point at which to // draw the pixmap is the reference point minus the // X & Y values in Qt coordinates... refPt = QPointF(rect.getXMax()/2.0, -rect.getYMax()/2.0); } qtRelative = QGLE::relGLEToQt(refPt, dpi); QPointF offset(-GS_OFFSET*dpi,GS_OFFSET*dpi-renderedText.height()); drawPoint = qtText - qtRelative + offset; // This needs to be changed to use the bounding box // of the string QSizeF qtSize; qtSize.setWidth(QGLE::relGLEToQt(rect.getXMax(), dpi)); qtSize.setHeight(QGLE::relGLEToQt(rect.getYMax(), dpi)); // The space from the top of the image is the following: double yoffs = renderedText.height()-rect.getYMax()*dpi/CM_PER_INCH-GS_OFFSET*dpi; paintPath->addRect(QRectF(drawPoint.x()+GS_OFFSET*dpi, drawPoint.y()+yoffs, qtSize.width(), qtSize.height())); osnapHandles.clear(); osnapHandles.append(QPair(qtText,QGLE::CentreSnap)); } } void GLEText::addRelativeOSnaps(QPointF p) { UNUSED_ARG(p); } void GLEText::draw(QPainter *p) { // This needs to be changed to plot an image object p->drawPixmap(drawPoint, renderedText); // QGLE::drawCross(p, getQtPoint(ReferencePoint), AMOVE_LENGTH, pen()); } QList GLEText::getTangents(QPointF p) { QList empty; UNUSED_ARG(p); return(empty); } bool GLEText::hasTangents() { return(false); } QList GLEText::getPerpendiculars(QPointF p) { QList empty; UNUSED_ARG(p); return(empty); } bool GLEText::hasPerpendiculars() { return(false); } // Set a point (start or end in the case of a line) void GLEText::setPoint(int pointChoice, const QPointF& p, bool update) { switch(pointChoice) { case ReferencePoint: pointHash[pointChoice] = QGLE::absQtToGLE(p, dpi, pixmap.height()); break; } if (update) updateText(); } QList GLEText::intersections(double qtm, double qtc, bool vertical) { UNUSED_ARG(qtm); UNUSED_ARG(qtc); UNUSED_ARG(vertical); return QList(); } QList GLEText::intersections(QPointF qtp1, QPointF qtp2) { UNUSED_ARG(qtp1); UNUSED_ARG(qtp2); return QList(); } QList GLEText::intersections(QPointF qtp1, double angle) { UNUSED_ARG(qtp1); UNUSED_ARG(angle); return QList(); } bool GLEText::isInside(QPointF p) { return(paintPath->contains(p)); } double GLEText::nearestOSnap(const QPointF& p, QPointF *osnap) { return distanceToPoint(p, osnap); } double GLEText::distanceToPoint(const QPointF& p, QPointF *nearestPoint) { GLERectangle box, bbox; double minDist = 1e300; if (nearestPoint != NULL) *nearestPoint = p; box.copy(&rect); box.translate(CM_PER_INCH/72, CM_PER_INCH/72); box.scale(dpi/CM_PER_INCH); box.subtractYFrom(renderedText.height()); box.translate(drawPoint.x(), drawPoint.y()); box.normalize(); GLETextDO* text = (GLETextDO*)getGLEObject(); double baseline = text->getBaseLine()*dpi/CM_PER_INCH; bbox.copy(&box); bbox.grow(MAX_SELECT_DISTANCE); if (bbox.contains(p.x(), p.y())) { distanceToPointUpdate(box.getXMin(), box.getYMin(), p, &minDist, nearestPoint); distanceToPointUpdate(box.getXMax(), box.getYMin(), p, &minDist, nearestPoint); distanceToPointUpdate(box.getXMin(), box.getYMax(), p, &minDist, nearestPoint); distanceToPointUpdate(box.getXMax(), box.getYMax(), p, &minDist, nearestPoint); distanceToPointUpdate(box.getXMin(), box.getYMid(), p, &minDist, nearestPoint); distanceToPointUpdate(box.getXMax(), box.getYMid(), p, &minDist, nearestPoint); distanceToPointUpdate(box.getXMid(), box.getYMin(), p, &minDist, nearestPoint); distanceToPointUpdate(box.getXMid(), box.getYMax(), p, &minDist, nearestPoint); distanceToPointUpdate(box.getXMid(), box.getYMid(), p, &minDist, nearestPoint); distanceToPointUpdate(box.getXMin(), box.getYMax()-baseline, p, &minDist, nearestPoint); distanceToPointUpdate(box.getXMax(), box.getYMax()-baseline, p, &minDist, nearestPoint); distanceToPointUpdate(box.getXMid(), box.getYMax()-baseline, p, &minDist, nearestPoint); return 0.0; } return minDist; } //! Set the reference point (tl,bl,tc,bc,tr,br,...) bool GLEText::trySetReferencePoint(const QPointF& pt, double x, double y, GLEJustify just, double* minDist) { double dist = QGLE::distance(x, y, pt); if (dist < MAX_SELECT_DISTANCE && dist < *minDist) { *minDist = dist; setProperty(Alignment, just); GLETextDO* text = (GLETextDO*)getGLEObject(); text->setIntProperty(GLEDOPropertyJustify, just); setPoint(ReferencePoint, pt); updateText(); return true; } return false; } //! Set the reference point (tl,bl,tc,bc,tr,br,...) bool GLEText::setReferencePoint(const QPointF& pt) { GLERectangle box; bool modified = false; double minDist = 1e300; box.copy(&rect); box.translate(CM_PER_INCH/72, CM_PER_INCH/72); box.scale(dpi/CM_PER_INCH); box.subtractYFrom(renderedText.height()); box.translate(drawPoint.x(), drawPoint.y()); box.normalize(); GLETextDO* text = (GLETextDO*)getGLEObject(); double baseline = text->getBaseLine()*dpi/CM_PER_INCH; modified |= trySetReferencePoint(pt, box.getXMin(), box.getYMin(), GLEJustifyTL, &minDist); modified |= trySetReferencePoint(pt, box.getXMax(), box.getYMin(), GLEJustifyTR, &minDist); modified |= trySetReferencePoint(pt, box.getXMin(), box.getYMax(), GLEJustifyBL, &minDist); modified |= trySetReferencePoint(pt, box.getXMax(), box.getYMax(), GLEJustifyBR, &minDist); modified |= trySetReferencePoint(pt, box.getXMin(), box.getYMid(), GLEJustifyLC, &minDist); modified |= trySetReferencePoint(pt, box.getXMax(), box.getYMid(), GLEJustifyRC, &minDist); modified |= trySetReferencePoint(pt, box.getXMid(), box.getYMin(), GLEJustifyTC, &minDist); modified |= trySetReferencePoint(pt, box.getXMid(), box.getYMax(), GLEJustifyBC, &minDist); modified |= trySetReferencePoint(pt, box.getXMid(), box.getYMid(), GLEJustifyCC, &minDist); modified |= trySetReferencePoint(pt, box.getXMin(), box.getYMax()-baseline, GLEJustifyLeft, &minDist); modified |= trySetReferencePoint(pt, box.getXMax(), box.getYMax()-baseline, GLEJustifyRight, &minDist); modified |= trySetReferencePoint(pt, box.getXMid(), box.getYMax()-baseline, GLEJustifyCenter, &minDist); return modified; } void GLEText::moveBy(QPointF offset) { pointHash.clear(); // Moves relative to storedPointHash QPointF start = getQtPoint(ReferencePoint, true); setPoint(ReferencePoint, start + offset); } void GLEText::rotateBy(double radians) { // TODO: Also rotate the text. pointHash.clear(); // Moves relative to storedPointHash QPointF start = getQtPoint(ReferencePoint, true); setPoint(ReferencePoint, QGLE::rotateAboutPoint(start, radians, basePoint)); } gle-graphics-4.2.4c/src/gui/downloader.h0000664000000000000000000001020111405446017016607 0ustar rootroot/*********************************************************************************** * QGLE - A Graphical Interface to GLE * * Copyright (C) 2006 A. S. Budden & J. Struyf * * * * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * * * Also add information on how to contact you by electronic and paper mail. * ***********************************************************************************/ #ifndef QGLEDOWNLOADER_H #define QGLEDOWNLOADER_H #include #include class QFile; class QHttp; class QHttpResponseHeader; class QLabel; class QLineEdit; class QProgressDialog; class QPushButton; class QHBoxLayout; class QVBoxLayout; class QListWidget; class QBuffer; class SimpleWizard : public QDialog { Q_OBJECT public: SimpleWizard(QWidget *parent = 0); void setButtonEnabled(bool enable); protected: virtual QWidget *createPage(int index) = 0; void setNumPages(int n); private slots: void backButtonClicked(); void nextButtonClicked(); private: void switchPage(QWidget *oldPage); QList history; int numPages; QPushButton *cancelButton; QPushButton *backButton; QPushButton *nextButton; QPushButton *finishButton; QHBoxLayout *buttonLayout; QVBoxLayout *mainLayout; }; class QGLEDownloader; class QGLEDownloaderMirror : public QWidget { Q_OBJECT public: QGLEDownloaderMirror(QGLEDownloader *wizard); private slots: void httpRequestFinished(int requestId, bool error); void readResponseHeader(const QHttpResponseHeader &responseHeader); private: QLineEdit* downloadName; QListWidget* mirrorList; QHttp *http; QBuffer *file; int httpGetId; friend class QGLEDownloader; }; class QGLEDownloaderDownload : public QWidget { Q_OBJECT public: QGLEDownloaderDownload(QGLEDownloader *wizard); friend class QGLEDownloader; }; class QGLEDownloaderInstall : public QWidget { Q_OBJECT public: QGLEDownloaderInstall(QGLEDownloader *wizard); friend class QGLEDownloader; }; class QGLEDownloader : public SimpleWizard { Q_OBJECT public: QGLEDownloader(QWidget *parent = 0); public: QWidget *createPage(int index); private slots: void accept(); void downloadFile(); void cancelDownload(); void httpRequestFinished(int requestId, bool error); void readResponseHeader(const QHttpResponseHeader &responseHeader); void updateDataReadProgress(int bytesRead, int totalBytes); // void enableDownloadButton(); private: QLabel *statusLabel; QLabel *urlLabel; QLineEdit *urlLineEdit; QProgressDialog *progressDialog; QPushButton *quitButton; QPushButton *downloadButton; QHttp *http; QFile *file; int httpGetId; bool httpRequestAborted; QGLEDownloaderMirror *firstPage; QGLEDownloaderDownload *secondPage; QGLEDownloaderInstall *thirdPage; friend class QGLEDownloaderMirror; friend class QGLEDownloaderDownload; friend class QGLEDownloaderInstall; }; #endif gle-graphics-4.2.4c/src/gui/variantdelegate.cpp0000664000000000000000000002775011677267211020174 0ustar rootroot/*********************************************************************************** * QGLE - A Graphical Interface to GLE * * Copyright (C) 2006 A. S. Budden & J. Struyf * * * * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * * * Also add information on how to contact you by electronic and paper mail. * ***********************************************************************************/ #include "variantdelegate.h" #include "propertymodel.h" #include "colourpicker.h" #include "qgle_statics.h" VariantDelegate::VariantDelegate(QObject *parent) : QItemDelegate(parent) { } QWidget *VariantDelegate::createEditor(QWidget *parent, const QStyleOptionViewItem&, const QModelIndex &index) const { GLEPropertyModel *model = (GLEPropertyModel *) index.model(); QVariant entry = model->data(index, Qt::DisplayRole); GLEDrawingObjectProperty property = model->getFullProperty(index); // Get the requested entry details if (index.column() == 0) return(new QLabel(entry.toString(), parent)); QDoubleSpinBox *doubleSpinBox; QLineEdit *lineEditor; QComboBox *comboBox; ColourPicker *colourPicker; QVariant subentry; QString listEntry; QVariantMap entries; QList listentries; switch(entry.type()) { case QVariant::Double: doubleSpinBox = new QDoubleSpinBox(parent); doubleSpinBox->setDecimals(3); doubleSpinBox->installEventFilter(const_cast(this)); return(doubleSpinBox); break; case QVariant::Int: if (property.validValues.type() == QVariant::List) { listentries = property.validValues.value >(); comboBox = new QComboBox(parent); comboBox->setEditable(false); for (int i = 0; i < listentries.size(); i++) { comboBox->addItem(listentries[i].toString(), QVariant(i)); } comboBox->installEventFilter(const_cast(this)); return(comboBox); } else if (property.validValues.type() == QVariant::Map) { entries = property.validValues.value(); comboBox = new QComboBox(parent); comboBox->setEditable(false); foreach(listEntry, entries.keys()) { comboBox->addItem(listEntry, entries[listEntry]); } comboBox->installEventFilter(const_cast(this)); return(comboBox); } break; case QVariant::String: lineEditor = new QLineEdit(parent); lineEditor->installEventFilter(const_cast(this)); return(lineEditor); break; case QVariant::Color: colourPicker = new ColourPicker(parent, (VariantDelegate*)this); colourPicker->setColour(entry.value()); colourPicker->installEventFilter(const_cast(this)); colourPicker->showPopup(); return(colourPicker); break; case QVariant::List: subentry = entry.value().at(0); switch(subentry.type()) { case QVariant::Color: colourPicker = new ColourPicker(parent, (VariantDelegate*)this); colourPicker->setColour(); colourPicker->installEventFilter(const_cast(this)); colourPicker->showPopup(); return(colourPicker); break; default: break; } break; default: return(new QLabel(entry.toString(), parent)); } return(new QLabel()); } void VariantDelegate::setEditorData(QWidget *editor, const QModelIndex &index) const { GLEPropertyModel *model = (GLEPropertyModel *) index.model(); QVariant value = model->data(index, Qt::DisplayRole); GLEDrawingObjectProperty property = model->getFullProperty(index); if (index.column() == 0) return; QDoubleSpinBox *doubleSpinBox; QComboBox *comboBox; QLineEdit *lineEditor; ColourPicker *colourPicker; QVariant subentry; switch(value.type()) { case QVariant::Double: doubleSpinBox = static_cast(editor); doubleSpinBox->setValue(value.value()); break; case QVariant::Int: if (property.validValues.type() == QVariant::List) { // This is going to need to be changed for // items with a list of valid values comboBox = static_cast(editor); comboBox->setCurrentIndex(value.value()); } else if (property.validValues.type() == QVariant::Map) { comboBox = static_cast(editor); // TODO: The following line causes a segmentation fault (on findData()) comboBox->setCurrentIndex(comboBox->findData(value.value())); } break; case QVariant::String: lineEditor = static_cast(editor); lineEditor->setText(value.value()); break; case QVariant::Color: colourPicker = static_cast(editor); colourPicker->setColour(value.value()); break; case QVariant::List: subentry = value.value().at(0); switch(subentry.type()) { case QVariant::Color: colourPicker = static_cast(editor); colourPicker->setColour(); break; default: break; } break; default: return; } } void VariantDelegate::setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const { GLEPropertyModel *glemodel = (GLEPropertyModel *) index.model(); QVariant entry = glemodel->data(index, Qt::DisplayRole); GLEDrawingObjectProperty property = glemodel->getFullProperty(index); if (index.column() == 0) return; QDoubleSpinBox *doubleSpinBox; QComboBox *comboBox; QLineEdit *lineEditor; ColourPicker *colourPicker; double value; int integerVal; QVariant subentry; switch(entry.type()) { case QVariant::Double: doubleSpinBox = static_cast(editor); doubleSpinBox->interpretText(); value = doubleSpinBox->value(); model->setData(index, value); break; case QVariant::Int: if (property.validValues.type() == QVariant::List) { // This is going to need to be changed for // items with a list of valid values comboBox = static_cast(editor); integerVal = comboBox->currentIndex(); model->setData(index, integerVal); } else if (property.validValues.type() == QVariant::Map) { comboBox = static_cast(editor); integerVal = comboBox->itemData(comboBox->currentIndex()).value(); model->setData(index, integerVal); } break; case QVariant::String: lineEditor = static_cast(editor); model->setData(index, lineEditor->text()); break; case QVariant::Color: colourPicker = static_cast(editor); // if (colourPicker->hasChanged()) model->setData(index, colourPicker->getColour()); break; case QVariant::List: subentry = entry.value().at(0); switch(subentry.type()) { case QVariant::Color: colourPicker = static_cast(editor); //if (colourPicker->hasChanged()) model->setData(index, colourPicker->getColour()); break; default: break; } break; default: return; } } void VariantDelegate::updateEditorGeometry(QWidget *editor, const QStyleOptionViewItem &option, const QModelIndex&) const { editor->setGeometry(option.rect); } void VariantDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const { double x,y,width,height; int intVal; QColor colour; QPixmap colourSample; QString text; QString str; GLEPropertyModel *glemodel = (GLEPropertyModel *) index.model(); QVariant entry = glemodel->data(index, Qt::DisplayRole); GLEDrawingObjectProperty property = glemodel->getFullProperty(index); QVariant subentry; QVariantMap entries; QList listentries; if (index.column() == 1) { QStyleOptionViewItem myOption = option; switch(entry.type()) { case QVariant::Double: text = QString("%1").arg(entry.value()); myOption.displayAlignment = Qt::AlignLeft | Qt::AlignVCenter; drawDisplay(painter, myOption, myOption.rect, text); drawFocus(painter, myOption, myOption.rect); break; case QVariant::PointF: x = entry.value().x(); y = entry.value().y(); text = QString("(%1,%2)").arg(x).arg(y); myOption.displayAlignment = Qt::AlignLeft | Qt::AlignVCenter; drawDisplay(painter, myOption, myOption.rect, text); drawFocus(painter, myOption, myOption.rect); break; case QVariant::SizeF: width = entry.value().width(); height = entry.value().height(); text = QString("(%1x%2)") .arg(width).arg(height); myOption.displayAlignment = Qt::AlignLeft | Qt::AlignVCenter; drawDisplay(painter, myOption, myOption.rect, text); drawFocus(painter, myOption, myOption.rect); break; case QVariant::Color: colour = entry.value(); colourSample = QPixmap(10,10); if (colour.isValid()) { colourSample.fill(colour); } else { QPen pen; pen.setColor(Qt::black); pen.setWidth(1); QPainter p(&colourSample); colourSample.fill(Qt::white); QGLE::drawBox(&p, colourSample.rect().center(), 4.0, pen); QGLE::drawCross(&p, colourSample.rect().center(), 4.0, pen); } myOption.displayAlignment = Qt::AlignLeft | Qt::AlignVCenter; drawDecoration(painter, myOption, myOption.rect, colourSample); drawFocus(painter, myOption, myOption.rect); break; case QVariant::List: subentry = entry.value().at(0); switch(subentry.type()) { case QVariant::Color: colourSample = QPixmap(":images/varyingcolours.png"); myOption.displayAlignment = Qt::AlignLeft | Qt::AlignVCenter; drawDecoration(painter, myOption, myOption.rect, colourSample); drawFocus(painter, myOption, myOption.rect); break; default: break; } break; case QVariant::Int: if (property.validValues.type() == QVariant::List) { intVal = entry.value(); listentries = property.validValues.value >(); text = listentries[intVal].toString(); myOption.displayAlignment = Qt::AlignLeft | Qt::AlignVCenter; drawDisplay(painter, myOption, myOption.rect, text); drawFocus(painter, myOption, myOption.rect); } else if (property.validValues.type() == QVariant::Map) { intVal = entry.value(); entries = property.validValues.value(); text = "Unknown"; foreach(str, entries.keys()) { if (entries[str] == intVal) { text = str; break; } } myOption.displayAlignment = Qt::AlignLeft | Qt::AlignVCenter; drawDisplay(painter, myOption, myOption.rect, text); drawFocus(painter, myOption, myOption.rect); } else { QItemDelegate::paint(painter, option, index); } break; default: QItemDelegate::paint(painter, option, index); } } else { QItemDelegate::paint(painter, option, index); } } void VariantDelegate::doneEditingColor(ColourPicker* picker) { commitData(picker); closeEditor(picker); } gle-graphics-4.2.4c/src/gui/arc.h0000664000000000000000000001111111677614552015233 0ustar rootroot/*********************************************************************************** * QGLE - A Graphical Interface to GLE * * Copyright (C) 2006 A. S. Budden & J. Struyf * * * * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * * * Also add information on how to contact you by electronic and paper mail. * ***********************************************************************************/ #ifndef _GLEARC_H #define _GLEARC_H #include "drawingobject.h" //! A class describing an arc drawing object, daughter of the generic GLEDrawingObject class class GLEArc : public GLEDrawingObject { Q_OBJECT public: //! An enumeration describing the points that are used to describe an arc enum Points { CentrePoint, StartPoint, EndPoint, Radius, MidPoint }; //! Constructor used for initialising variables and connections GLEArc(double resolution, QSize imageSize, GLEDrawingArea *area); //! Draw the arc on the provided painter void draw(QPainter *p); //! Return the shortest distance between a given point and the arc double distanceToPoint(const QPointF& p, QPointF *nearestPoint); //! Set one of the enumerated points void setPoint(int pointChoice, const QPointF& p, bool update = true); //! Find points where a line intersects the arc // If vertical = true, m contains 'x' QList intersections(double qtm, double qtc, bool vertical = false); QList intersections(QPointF qtp1, QPointF qtp2); QList intersections(QPointF qtp1, double angle); //! Is the point inside the object? bool isInside(QPointF p); void addRelativeOSnaps(QPointF p); QList getTangents(QPointF p); bool hasTangents(); QList getPerpendiculars(QPointF p); bool hasPerpendiculars(); void createOTracks(); //! Return the arc's bounding rectangle in Qt coordinates QRectF arcRect(); //! Return the starting angle double startAngleDeg(); //! Return the ending angle double endAngleDeg(); //! As above, but guaranteed to be > start_angle double endAngleDegConstrained(); //! Return the starting angle double startAngleRad(); //! Return the ending angle double endAngleRad(); //! As above, but guaranteed to be > start_angle double endAngleRadConstrained(); bool findScaleOrigin(const QPointF& pt, QPointF* origin, int handle); double nearestPriorityOSnap(const QPointF& pt, QPointF *osnap); int supportedTransformMode(); void linearTransform(const GLELinearEquation& ex, const GLELinearEquation& ey); void moveBy(QPointF offset); void rotateBy(double radians); private slots: //! Update the painter path when the resolution or start/end points change void updateArc(); void updateFromProperty(int property); private: //! Member variable describing whether the arc runs clockwise or anticlockwise bool directionReversed; //! If you take the line between the pseudo-circle centre and a given point, does it cross the arc bool isOnArc(double angle); //! Is the point inside the full circle area (i.e. no tangent) bool isInsideCircle(QPointF p); //! What's the closest point to the full circle? double distanceToPointOnCircle(QPointF p, QPointF *nearestPoint); void drawArc(QPainter *p, double t1, double t2); void addBezier(QPainterPath *p, GLEBezier* bezier); void computeAndDraw(QPainter *p, GLEArcDO* obj, GLECurvedArrowHead* head); void getGLEArcT0T1(double* t0, double* t1); }; #endif gle-graphics-4.2.4c/src/gui/drawingobject.cpp0000664000000000000000000004421011677266521017650 0ustar rootroot/*********************************************************************************** * QGLE - A Graphical Interface to GLE * * Copyright (C) 2006 A. S. Budden & J. Struyf * * * * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * * * Also add information on how to contact you by electronic and paper mail. * ***********************************************************************************/ // Implementation of GLEDrawingObject, the base class // for all drawing objects in QGLE #include "drawingobject.h" GLEDrawingObject::GLEDrawingObject(double resolution, QSize imageSize, GLEDrawingArea *area) : GLEComponent(resolution, imageSize, area) { drawingArea = area; otrackList.clear(); selected = false; gleObject = NULL; initialiseProperties(); } PropertyDescriptor GLEDrawingObject::getPropertyDescription(int property) { if (propertyDescriptions.contains(property)) return(propertyDescriptions[property]); else { PropertyDescriptor x; return(x); } } void GLEDrawingObject::initialiseProperties() { QVariantMap validList; // This property describes the fill colour for a solid object // or for text propertyDescriptions[FillColour].description = tr("Fill Colour"); propertyDescriptions[FillColour].type = QVariant::Color; propertyDescriptions[FillColour].defaultValue = QColor(); propertyDescriptions[FillColour].validValues = QList(); // The line colour propertyDescriptions[LineColour].description = tr("Line Colour"); propertyDescriptions[LineColour].type = QVariant::Color; propertyDescriptions[LineColour].defaultValue = QColor(); propertyDescriptions[LineColour].validValues = QList(); // The line width propertyDescriptions[LineWidth].description = tr("Line Width"); propertyDescriptions[LineWidth].type = QVariant::Double; propertyDescriptions[LineWidth].defaultValue = 0.05; propertyDescriptions[LineWidth].validValues = QList(); // The line style propertyDescriptions[LineStyle].description = tr("Line Style"); propertyDescriptions[LineStyle].type = QVariant::String; propertyDescriptions[LineStyle].defaultValue = QString("0"); propertyDescriptions[LineStyle].validValues = QList(); // The string contained in a text object (and possible some other // objects as well such as boxes in a flow chart) propertyDescriptions[Text].description = tr("Text"); propertyDescriptions[Text].type = QVariant::String; propertyDescriptions[Text].defaultValue = QString(""); propertyDescriptions[Text].validValues = QList(); // The font used for a given text string propertyDescriptions[FontName].description = tr("Font Name"); propertyDescriptions[FontName].type = QVariant::Int; propertyDescriptions[FontName].defaultValue = 0; propertyDescriptions[FontName].validValues = getFontList(); // The font used for a given text string propertyDescriptions[FontStyle].description = tr("Font Style"); propertyDescriptions[FontStyle].type = QVariant::Int; propertyDescriptions[FontStyle].defaultValue = 0; propertyDescriptions[FontStyle].validValues = getFontStyles(); // The font size propertyDescriptions[FontSize].description = tr("Font Size"); propertyDescriptions[FontSize].type = QVariant::Double; propertyDescriptions[FontSize].defaultValue = 0.3633; propertyDescriptions[FontSize].validValues = QList(); // The text alignment (e.g. CC) propertyDescriptions[Alignment].description = tr("Text Alignment"); propertyDescriptions[Alignment].type = QVariant::Int; propertyDescriptions[Alignment].defaultValue = 0; validList.clear(); validList[tr("Object Centre")] = GLEJustifyCC; validList[tr("Top Right")] = GLEJustifyTR; validList[tr("Top Left")] = GLEJustifyTL; validList[tr("Bottom Right")] = GLEJustifyBR; validList[tr("Bottom Left")] = GLEJustifyBL; validList[tr("Left Centre")] = GLEJustifyLC; validList[tr("Right Centre")] = GLEJustifyRC; validList[tr("Top Centre")] = GLEJustifyTC; validList[tr("Bottom Centre")] = GLEJustifyBC; validList[tr("Left Baseline")] = GLEJustifyLeft; validList[tr("Right Baseline")] = GLEJustifyRight; validList[tr("Centre Baseline")] = GLEJustifyCenter; propertyDescriptions[Alignment].validValues = validList; // The reference point name propertyDescriptions[RefPointName].description = tr("Reference"); propertyDescriptions[RefPointName].type = QVariant::String; propertyDescriptions[RefPointName].defaultValue = QString("bl"); propertyDescriptions[RefPointName].validValues = QList(); // The centre of any object (by bounding box) propertyDescriptions[ObjectCentre].description = tr("Object Centre Point"); propertyDescriptions[ObjectCentre].type = QVariant::PointF; propertyDescriptions[ObjectCentre].defaultValue = QPointF(0.0,0.0); propertyDescriptions[ObjectCentre].validValues = QList(); // The centre of a circle or arc propertyDescriptions[CircleCentre].description = tr("Circle Centre Point"); propertyDescriptions[CircleCentre].type = QVariant::PointF; propertyDescriptions[CircleCentre].defaultValue = QPointF(0.0,0.0); propertyDescriptions[CircleCentre].validValues = QList(); // The radius for a circle or arc propertyDescriptions[Radius].description = tr("Radius"); propertyDescriptions[Radius].type = QVariant::Double; propertyDescriptions[Radius].defaultValue = 0.0; propertyDescriptions[Radius].validValues = QList(); // The major axis radius for an ellipse propertyDescriptions[MajorAxisRadius].description = tr("Major Axis Radius"); propertyDescriptions[MajorAxisRadius].type = QVariant::Double; propertyDescriptions[MajorAxisRadius].defaultValue = 0.0; propertyDescriptions[MajorAxisRadius].validValues = QList(); // The minor axis radius for an ellipse propertyDescriptions[MinorAxisRadius].description = tr("Minor Axis Radius"); propertyDescriptions[MinorAxisRadius].type = QVariant::Double; propertyDescriptions[MinorAxisRadius].defaultValue = 0.0; propertyDescriptions[MinorAxisRadius].validValues = QList(); // The major axis angle for an ellipse propertyDescriptions[MajorAxisAngle].description = tr("Major Axis Angle"); propertyDescriptions[MajorAxisAngle].type = QVariant::Double; propertyDescriptions[MajorAxisAngle].defaultValue = 0.0; propertyDescriptions[MajorAxisAngle].validValues = QList(); // This hasn't been decided on yet, but will probably be an int // (enumerated) from a list of PNGs. propertyDescriptions[ArrowHeadPresence].description = tr("Arrow Heads"); propertyDescriptions[ArrowHeadPresence].type = QVariant::Int; propertyDescriptions[ArrowHeadPresence].defaultValue = 0; validList.clear(); validList[tr("None")] = 0; validList[tr("Start")] = GLEHasArrowStart; validList[tr("End")] = GLEHasArrowEnd; validList[tr("Both")] = GLEHasArrowStart | GLEHasArrowEnd; propertyDescriptions[ArrowHeadPresence].validValues = validList; propertyDescriptions[ArrowHeadSize].description = tr("Arrow Head Size"); propertyDescriptions[ArrowHeadSize].type = QVariant::Double; // Check the default size propertyDescriptions[ArrowHeadSize].defaultValue = 1.0; propertyDescriptions[ArrowHeadSize].validValues = QList(); // This hasn't been decided on yet, but will probably be an int // (enumerated) from a list of PNGs. propertyDescriptions[ArrowHeadStyle].description = tr("Arrow Head Style"); propertyDescriptions[ArrowHeadStyle].type = QVariant::Invalid; propertyDescriptions[ArrowHeadStyle].defaultValue = QVariant(); propertyDescriptions[ArrowHeadStyle].validValues = QList(); // The start point for a line propertyDescriptions[StartPoint].description = tr("Start Point"); propertyDescriptions[StartPoint].type = QVariant::PointF; propertyDescriptions[StartPoint].defaultValue = QPointF(0.0,0.0); propertyDescriptions[StartPoint].validValues = QList(); // The end point for a line propertyDescriptions[EndPoint].description = tr("End Point"); propertyDescriptions[EndPoint].type = QVariant::PointF; propertyDescriptions[EndPoint].defaultValue = QPointF(0.0,0.0); propertyDescriptions[EndPoint].validValues = QList(); // Object width propertyDescriptions[Width].description = tr("Width"); propertyDescriptions[Width].type = QVariant::Double; propertyDescriptions[Width].defaultValue = 0.0; propertyDescriptions[Width].validValues = QList(); // Object height propertyDescriptions[Height].description = tr("Height"); propertyDescriptions[Height].type = QVariant::Double; propertyDescriptions[Height].defaultValue = 0.0; propertyDescriptions[Height].validValues = QList(); } // Set text properties void GLEDrawingObject::setTextProperties() { GLEDrawObject* obj = getGLEObject(); double fontsize = obj->getProperties()->getRealProperty(GLEDOPropertyFontSize); setPropertyNoUpdate(FontSize, fontsize); GLEFont* font = obj->getProperties()->getFontProperty(GLEDOPropertyFont); GLEFont* base = font->getBaseFont(); setPropertyNoUpdate(FontName, base->getNumber()); setPropertyNoUpdate(FontStyle, base->checkStyle(font)); } void GLEDrawingObject::setColorProperty() { QColor col; GLEDrawObject* obj = getGLEObject(); GLEColor* color = obj->getProperties()->getColorProperty(GLEDOPropertyColor); col.setRgbF(color->getRed(), color->getGreen(), color->getBlue()); setPropertyNoUpdate(LineColour, col); } void GLEDrawingObject::setLineProperties() { QColor col; GLEDrawObject* obj = getGLEObject(); GLEColor* color = obj->getProperties()->getColorProperty(GLEDOPropertyColor); col.setRgbF(color->getRed(), color->getGreen(), color->getBlue()); setPropertyNoUpdate(LineColour, col); setPropertyNoUpdate(LineWidth, obj->getProperties()->getRealProperty(GLEDOPropertyLineWidth)); setPropertyNoUpdate(LineStyle, QGLE::gleToQString(obj->getProperties()->getStringProperty(GLEDOPropertyLineStyle))); } void GLEDrawingObject::setShapeProperties() { QColor col; GLEDrawObject* obj = getGLEObject(); GLEColor* color = obj->getProperties()->getColorProperty(GLEDOPropertyFillColor); if (color->isTransparent()) { setPropertyNoUpdate(FillColour, QColor()); } else { col.setRgbF(color->getRed(), color->getGreen(), color->getBlue()); setPropertyNoUpdate(FillColour, col); } } void GLEDrawingObject::setSimplePenProperties(QPen& pen) { QColor col; GLEDrawObject* obj = getGLEObject(); GLEColor* color = obj->getProperties()->getColorProperty(GLEDOPropertyColor); col.setRgbF(color->getRed(), color->getGreen(), color->getBlue()); pen.setColor(col); double lwidth = obj->getProperties()->getRealProperty(GLEDOPropertyLineWidth); pen.setWidthF(QGLE::relGLEToQt(lwidth, dpi)); GLEString* lstyle = obj->getProperties()->getStringProperty(GLEDOPropertyLineStyle); if (lstyle->length() == 1 && lstyle->get(0) > (unsigned int)'1') { QVector dashes; const char *defline[] = {"","","12","41","14","92","1282","9229","4114","54","73","7337","6261","2514"}; const char *myline = defline[lstyle->get(0)-'0']; int len = strlen(myline); for (int i = 0; i < len; i++) { double value = (myline[i]-'0'); dashes.append((qreal)QGLE::relGLEToQt(value*0.04, dpi)); } pen.setDashPattern(dashes); } else if (lstyle->length() > 1) { QVector dashes; for (unsigned int i = 0; i < lstyle->length(); i++) { double value = (lstyle->get(i)-'0'); dashes.append((qreal)QGLE::relGLEToQt(value*0.04, dpi)); } pen.setDashPattern(dashes); } } void GLEDrawingObject::setPenProperties(QPen& pen) { setSimplePenProperties(pen); GLEDrawObject* obj = getGLEObject(); int cap = obj->getIntProperty(GLEDOPropertyLineCap); switch (cap) { case GLELineCapButt: pen.setCapStyle(Qt::FlatCap); break; case GLELineCapRound: pen.setCapStyle(Qt::RoundCap); break; case GLELineCapSquare: pen.setCapStyle(Qt::SquareCap); break; } } QList GLEDrawingObject::getFontList() { QList flv; GLEInterface* iface = getGLEInterface(); int nbfonts = iface->getNumberOfFonts(); for (int i = 0; i < nbfonts; i++) { GLEFont* font = iface->getFont(i); flv.push_back(QString::fromUtf8(font->getFullNameC())); // cout << "FONT: " << font->getFullNameC() << " -> " << i << endl; } return(flv); } QList GLEDrawingObject::getFontStyles() { QList flv; flv.push_back(tr("Roman")); flv.push_back(tr("Bold")); flv.push_back(tr("Italic")); flv.push_back(tr("Bold Italic")); return flv; } void GLEDrawingObject::imageRendered(QImage) { // This should be overridden by any children that use // rendered objects } //! Function to set a given property to a given value void GLEDrawingObject::setProperty(int propertyIndex, QVariant value) { setPropertyNoUpdate(propertyIndex, value); emit propertyChanged(propertyIndex); } //! Function to set a given property to a given value void GLEDrawingObject::setPropertyNoUpdate(int propertyIndex, QVariant value) { if (propertyIndex >= GLEDrawingObject::PropertyUser && getGLEObject() != NULL) { // This case is for arguments of user defined objects int propid = propertyIndex - GLEDrawingObject::PropertyUser; GLEDrawObject* gleobj = getGLEObject(); GLEPropertyStoreModel* model = gleobj->getProperties()->getModel(); GLEProperty* gleprop = model->getProperty(propid); if (gleprop->getType() == GLEPropertyTypeString) { GLEString* str = gleobj->getProperties()->getStringProperty(gleprop); QGLE::qtToGLEString(value.toString(), str); } else if (gleprop->getType() == GLEPropertyTypeReal) { gleobj->getProperties()->setRealProperty(gleprop, value.toDouble()); } } else { if (properties.contains(propertyIndex)) properties[propertyIndex] = value; } } //! Function to get the value of a property QVariant GLEDrawingObject::getProperty(int propertyIndex) { if (properties.contains(propertyIndex)) return(properties[propertyIndex]); else return QVariant(); } // The selected property tells the object whether it has been // selected by the pointer tool void GLEDrawingObject::setSelected(bool sel) { selected = sel; } bool GLEDrawingObject::isAmove() { return(amove); } QList GLEDrawingObject::getOTracks() { return(otrackList); } void GLEDrawingObject::clearOTracks() { SnapLine *snap; foreach(snap, otrackList) { delete snap; } otrackList.clear(); } QPair GLEDrawingObject::updateOTracks(QPointF cursorPosition) { QPair nearestPoint; nearestPoint.first = 1e6; nearestPoint.second = QPointF(0.0,0.0); for (int i=otrackList.size()-1;i>=0;i--) { double dist = otrackList[i]->distanceToPoint(cursorPosition, &nearestPoint.second); double objectDistance = distanceToPoint(cursorPosition); if ((dist > MAX_SNAP_LINE_DISTANCE) && (objectDistance > MAX_SNAP_LINE_DISTANCE)) { if (QGLE::distance(cursorPosition, otrackList[i]->getQtPoint(SnapLine::StartPoint)) > 3*MAX_SNAP_LINE_DISTANCE) otrackList[i]->deactivate(); else { delete otrackList[i]; otrackList.removeAt(i); } } else { otrackList[i]->activate(); nearestPoint.first = dist; } } return(nearestPoint); } void GLEDrawingObject::distanceToPointUpdate(double x, double y, const QPointF& p, double* minDist, QPointF *nearestPoint) { double crDist = QGLE::distance(x, y, p); if (crDist < *minDist) { *minDist = crDist; if (nearestPoint != NULL) { *nearestPoint = QPointF(x, y); } } } //! Set the reference point of, e.g., text objects or GLE object blocks (tl,bl,tc,bc,tr,br,...) bool GLEDrawingObject::setReferencePoint(const QPointF&) { return false; } bool GLEDrawingObject::findScaleOrigin(const QPointF&, QPointF*, int) { return false; } int GLEDrawingObject::supportedTransformMode() { return TransformModeNone; } void GLEDrawingObject::linearTransformPt(int pt, const GLELinearEquation& ex, const GLELinearEquation& ey, bool update) { QPointF p = getQtPoint(pt, true); p.setX(ex.apply(p.x())); p.setY(ey.apply(p.y())); setPoint(pt, p, update); } void GLEDrawingObject::linearTransform(const GLELinearEquation&, const GLELinearEquation&) { } void GLEDrawingObject::linearTransformDone() { } bool GLEDrawingObject::isSelected() { return(selected); } void GLEDrawingObject::drawOSnaps(QPainter *p) { QPair osnap; foreach(osnap, osnapHandles) { //QGLE::drawBox(p,osnap.first,OSNAP_BOX_SIZE, pen); QGLE::drawOSnap(p,osnap); } foreach(osnap, relativeOSnaps) { //QGLE::drawBox(p,osnap.first,OSNAP_BOX_SIZE, pen); QGLE::drawOSnap(p,osnap); } } double GLEDrawingObject::nearestPriorityOSnap(const QPointF&, QPointF *) { return 1e6; } double GLEDrawingObject::nearestOSnap(const QPointF& p, QPointF *osnap) { QPair o; double dist; double shortest_distance = 1e6; *osnap = QPointF(0.0,0.0); foreach(o, osnapHandles) { dist = QGLE::distance(o.first,p); if (dist < shortest_distance) { shortest_distance = dist; *osnap = o.first; } } foreach(o, relativeOSnaps) { dist = QGLE::distance(o.first,p); if (dist < shortest_distance) { shortest_distance = dist; *osnap = o.first; } } return(shortest_distance); } void GLEDrawingObject::clearRelativeOSnaps() { relativeOSnaps.clear(); } QList< QPair > GLEDrawingObject::getRelativeOSnaps() { return(relativeOSnaps); } gle-graphics-4.2.4c/src/gui/about.cpp0000664000000000000000000001505211656572360016140 0ustar rootroot/*********************************************************************************** * QGLE - A Graphical Interface to GLE * * Copyright (C) 2006 A. S. Budden & J. Struyf * * * * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * * * Also add information on how to contact you by electronic and paper mail. * ***********************************************************************************/ /*************************************************************** * about.cpp: The class implementation for the about box. * ***************************************************************/ #include #include "about.h" #include "qgle_statics.h" #include "qgle_definitions.h" #include "../gle/gle-interface/gle-interface.h" class MyQTextBrowser : public QTextBrowser { public: MyQTextBrowser(); virtual ~MyQTextBrowser(); virtual QSize sizeHint () const; }; MyQTextBrowser::MyQTextBrowser() { } MyQTextBrowser::~MyQTextBrowser() { } QSize MyQTextBrowser::sizeHint() const { QSizeF size = document()->size(); return QSize((int)size.width()+5, (int)size.height()+10); } AboutBox::AboutBox(QWidget* par, GLEInterface* gleInterface) : QDialog(par) { m_gleInterface = gleInterface; // Set the window title and size setWindowTitle(tr("About %1").arg(APP_NAME)); QHBoxLayout *top = new QHBoxLayout(); QVBoxLayout *left = new QVBoxLayout(); QLabel* icon = new QLabel(this); icon->setPixmap(QPixmap(":/images/gle_shadow.png").scaled(QSize(64, 64))); left->addWidget(icon); left->addStretch(1); top->addLayout(left); QWidget* license = createLicensePanel(); QTabWidget* tabWidget = new QTabWidget(); tabWidget->addTab(createAboutPanel(), tr("About")); tabWidget->addTab(createContributorsPanel(), tr("Contributors")); tabWidget->addTab(license, tr("License")); top->addWidget(tabWidget); QPushButton *okButton = new QPushButton(tr("Close")); connect(okButton, SIGNAL(clicked()), this, SLOT(close())); QHBoxLayout *buttonLayout = new QHBoxLayout(); buttonLayout->addStretch(1); buttonLayout->addWidget(okButton); QVBoxLayout *layout = new QVBoxLayout(); layout->addLayout(top); layout->addLayout(buttonLayout); setLayout(layout); } // SLOT: show a given URL void AboutBox::showURL(const QUrl& url) { QDesktopServices::openUrl(url); } QTextBrowser* AboutBox::createAboutPanel() { // Create a label to display readme.txt MyQTextBrowser* label = new MyQTextBrowser(); label->setOpenLinks(false); connect(label, SIGNAL(anchorClicked(const QUrl&)), this, SLOT(showURL(const QUrl&))); QFile file(":/about.html"); // Open the file as a read only text file if (file.open(QIODevice::ReadOnly | QIODevice::Text)) { QString html(file.readAll().constData()); html.replace(tr("*VERSION*"), QString::fromUtf8(m_gleInterface->getGLEVersion().c_str())); html.replace(tr("*DATE*"), QString::fromUtf8(m_gleInterface->getGLEBuildDate().c_str())); label->setHtml(html); } label->document()->setTextWidth(m_minWidth); return label; } QWidget* AboutBox::createContributorsPanel() { QString html(tr("" "

Contributors

" "

" "The following people have given their time and talent to help support the GLE/QGLE effort (in alphabetical order)." "

" "" "
    " "
  • A. S. Budden: programming (QGLE), packager for Arch Linux
  • " "
  • Andrey G. Grozin: packager for Gentoo Linux
  • " "
  • Axel Rohde: 3.3f-h versions (these were 32 bit DOS and OS/2 ports)
  • " "
  • Bryn Jeffries: programming (Linux)
  • " "
  • Chris Pugmire: original program creation and design
  • " "
  • Christoph Brendes: programming
  • " "
  • David Parfitt: documentation (GLE users guide)
  • " "
  • Edd Edmondson: packager for Mac OS/X" "
  • Jan Struyf: programming (and current 4.x series maintainer)
  • " "
  • Laurence Abbott: programming
  • " "
  • Michal Vyskocil: packager for openSUSE
  • " "
  • Stephen Blundell: documentation (GLE users guide)
  • " "
  • Steve Wilkinson: programming (user interface)
  • " "
  • Terje Røsten: packager for Fedora Core
  • " "
  • Vincent LaBella: resurrected 3.3h to GLE 4.0 C++ code base
  • " "
  • Zbigniew Kisiel: testing
  • " "
" "

 

" "")); QTextBrowser* label = new QTextBrowser(); label->setOpenLinks(false); label->setHtml(html); return label; } QWidget* AboutBox::createLicensePanel() { // Create a label to display readme.txt QTextEdit* label = new QTextEdit(); label->setReadOnly(true); QString fileName(QString::fromUtf8(m_gleInterface->getManualLocation().c_str())); fileName.resize(fileName.lastIndexOf(QDir::separator())); fileName += QDir::separator(); fileName += tr("LICENSE.txt"); GLEInterface* iface = GLEGetInterfacePointer(); std::string licenseFileTxt; bool res = iface->readFileOrGZIPTxt(fileName.toUtf8().constData(), &licenseFileTxt); if (res) { QFont font; // Set the font to be fixed pitch font.setFixedPitch(true); font.setFamily("Courier"); font.setStretch(QFont::Condensed); label->setLineWrapMode(QTextEdit::NoWrap); label->setFont(font); label->setTextColor(Qt::black); // Get the text and put it in the label label->setPlainText(licenseFileTxt.c_str()); QFontMetrics fm(font); m_minWidth = fm.width("XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"); } else { label->setPlainText(tr("File not found: '%1'").arg(fileName)); } return label; } gle-graphics-4.2.4c/src/gui/about.html0000664000000000000000000000202611460740334016306 0ustar rootroot
 

About QGLE

Version: *VERSION*
Build date: *DATE*
 
www.gle-graphics.org
 
QGLE is the graphical user interface of GLE.
 
GLE (Graphics Layout Engine) is a graphics scripting language designed for creating publication quality figures (e.g., a chart, plot, graph, or diagram). GLE supports various chart types (including function plot, histogram, bar chart, scatter plot, contour plot, color map, and surface plot) through a simple but flexible set of graphing commands. More complex output can be created by relying on GLE's scripting language, which is full featured with subroutines, variables, and logic control. GLE relies on LaTeX for text output and supports mathematical formulea in graphs and figures. GLE's output formats include EPS, PS, PDF, JPEG, and PNG.
gle-graphics-4.2.4c/src/gui/propertyeditor.h0000664000000000000000000000455611405446017017564 0ustar rootroot/*********************************************************************************** * QGLE - A Graphical Interface to GLE * * Copyright (C) 2006 A. S. Budden & J. Struyf * * * * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * * * Also add information on how to contact you by electronic and paper mail. * ***********************************************************************************/ #ifndef __PROPERTYEDITOR_H #define __PROPERTYEDITOR_H #include #include "drawingobject.h" #include "propertymodel.h" class GLEPropertyEditor : public QTableView { Q_OBJECT public: //! Constructor GLEPropertyEditor(QWidget *parent, int size); // virtual QSize sizeHint() const; // virtual int heightForWidth(int w) const; public slots: void objectsSelected(QList objs); void propertyChanged(const QModelIndex &index, const QModelIndex &index2); signals: void propertiesHaveChanged(); private: QVariant getPropertyValue(int index, QList objs); QList objects; bool hasModel; GLEPropertyModel *model; int defaultSize; }; #endif gle-graphics-4.2.4c/src/gui/settings_dialogue.h0000664000000000000000000001612711652073536020205 0ustar rootroot/*********************************************************************************** * QGLE - A Graphical Interface to GLE * * Copyright (C) 2006 A. S. Budden & J. Struyf * * * * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * * * Also add information on how to contact you by electronic and paper mail. * ***********************************************************************************/ #ifndef _SETTINGS_DIALOGUE_H #define _SETTINGS_DIALOGUE_H #include #include #include "mainwindow.h" #include "../config.h" //! Tab used to configure application settings class ApplicationTab : public QWidget { Q_OBJECT public: ApplicationTab(QWidget *parent = 0); //! Set the DEFAULT resolution void setDPI(int new_dpi); //! Get the DEFAULT resolution int dpi(); //! Should we store the application size/position? void setStoreSize(bool new_storeSize); //! Should we store the application size/position? bool storeSize(); //! Should we store the application working directory? bool storeDir(); //! Should we store the application working directory? void setStoreDir(bool new_storeDir); //! Should we auto save on preview bool saveOnPreview(); //! Should we auto save on preview void setSaveOnPreview(bool new_save); //! Should we monitor the open file for changes bool monitorOpenFile(); //! Should we monitor the open file for changes void setMonitorOpenFile(bool new_mof); //! Should we auto-reload if file changed bool monitorAutoReload(); //! Should we auto-reload if file changed void setMonitorAutoReload(bool new_mar); //! Should we ask about keeping objects? bool askAboutObjects(); //! Should we ask about keeping objects? void setAskAboutObjects(bool newAsk); //! Should we auto scale the diagram when opening bool autoScaleOnOpen(); //! Should we auto scale the diagram when opening void setAutoScaleOnOpen(bool new_autoscale); public slots: void fileMonitorUpdated(int state); private: QSpinBox *resolutionBox; QCheckBox *saveSizeBox; QCheckBox *saveDirBox; QCheckBox *saveOnPreviewBox; QCheckBox *autoScaleOnOpenBox; QCheckBox *monitorOpenFileBox; QCheckBox *monitorAutoReloadBox; QCheckBox *askAboutObjectsBox; }; //! Tab used to configure server settings class ServerTab : public QWidget { Q_OBJECT public: ServerTab(QWidget *parent = 0); //! Set the port number on which to listen void setPort(int new_port); //! Get the port number on which to listen int port(); //! Set whether to start the server in preview mode void setAutoStart(bool new_autoStart); //! Get whether to start the server in preview mode bool autoStart(); private: QSpinBox *portNumBox; QCheckBox *autoStartBox; }; //! Tab used to configure drawing settings class DrawingTab : public QWidget { Q_OBJECT public: DrawingTab(QWidget *parent = 0); //! Set the grid spacing void setGrid(QPointF newGrid); //! Get the grid spacing QPointF grid(); //! Set whether grid spacing is equal void setEqualGrid(bool state); //! Set whether grid spacing is equal bool equalGrid(); //! Set polar snap on start void setPolarSnapOnStart(bool state); //! Get polar snap on start bool polarSnapOnStart(); //! Set polar track on start void setPolarTrackOnStart(bool state); //! Get polar track on start bool polarTrackOnStart(); //! Set osnap on start void setOsnapOnStart(bool state); //! Get osnap on start bool osnapOnStart(); //! Set ortho snap on start void setOrthoSnapOnStart(bool state); //! Get ortho snap on start bool orthoSnapOnStart(); //! Set grid snap on start void setGridSnapOnStart(bool state); //! Get grid snap on start bool gridSnapOnStart(); //! Set polar snap start angle void setPolarSnapStartAngle(double angle); //! Get polar snap start angle double polarSnapStartAngle(); //! Set polar snap Inc angle void setPolarSnapIncAngle(double angle); //! Get polar snap Inc angle double polarSnapIncAngle(); private slots: //! Toggle whether the X & Y spacing should be equal void equalSpacingToggled(bool state); private: QDoubleSpinBox *xBox; QDoubleSpinBox *yBox; QCheckBox *equalSpacing; QCheckBox *osnapOnStartBox; QCheckBox *polarSnapOnStartBox; QCheckBox *polarTrackOnStartBox; QCheckBox *orthoSnapOnStartBox; QCheckBox *gridSnapOnStartBox; QDoubleSpinBox *polarSnapStartAngleBox; QDoubleSpinBox *polarSnapIncAngleBox; }; //! Tab used to configure drawing settings class ToolTab : public QWidget { Q_OBJECT public: ToolTab(QWidget *parent, GLEMainWindow* main); void setToolGLE(const QString& vers, const QString& date, const QString& top); void setToolGsLib(const QString& value, const QString& vers); void setToolEditor(const QString& value); inline QString getToolGsLib() { return ToolGsLib->text(); } inline QString getToolEditor() { return ToolEditor->text(); } //! Render using Cairo library bool isRenderUsingCairo(); void setRenderUsingCairo(bool value); private slots: void exploreGLETop(); void browseToolGsLib(); void browseToolEditor(); void findSoftwareDependencies(); void editGlobalConfig(); void editUserConfig(); private: QLineEdit* GLETop; QLineEdit* ToolGsLib; QLineEdit* ToolEditor; QLabel* GLEVersion; QLabel* GLEBuildDate; QLabel* GsLibVersion; GLEMainWindow *mainWin; QCheckBox *renderUsingCairo; }; //! Dialogue box used to configure settings class SettingsDialogue : public QDialog { Q_OBJECT public: SettingsDialogue(GLEMainWindow *parent); signals: void defaultResolutionChanged(double newdpi); private slots: void okClicked(); private: QTabWidget *tabWidget; //! Initialise the Application Tab void initApplicationTab(); //! Initialise the Server Tab void initServerTab(); //! Initialise the Drawing Tab void initDrawingTab(); //! Initialise the Tool Tab void initToolTab(); // The tabs ApplicationTab *appTab; ServerTab *servTab; DrawingTab *drawTab; ToolTab *toolTab; // The parent GLEMainWindow *mainWin; }; #endif gle-graphics-4.2.4c/src/gui/objectblocks.h0000664000000000000000000001164011405446017017125 0ustar rootroot/*********************************************************************************** * QGLE - A Graphical Interface to GLE * * Copyright (C) 2006 A. S. Budden & J. Struyf * * * * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * * * Also add information on how to contact you by electronic and paper mail. * ***********************************************************************************/ #ifndef __OBJECTBLOCKS_H #define __OBJECTBLOCKS_H #include "drawingobject.h" class GLEMainWindow; class GLEObjectBlocksList : public QTreeView { Q_OBJECT public: //! Constructor GLEObjectBlocksList(QWidget *parent, GLEMainWindow* main, GLEDrawingArea* area, int size); void updateList(); void updateFile(QStandardItem *parent, GLESourceFile* file); // virtual QSize sizeHint() const; // virtual int heightForWidth(int w) const; public slots: void selectEntry(const QModelIndex&); protected: int defaultSize; GLEMainWindow* mainWin; GLEDrawingArea* drawingArea; QStandardItemModel* model; GLERCVector consList; }; //! Class describing a text drawing object class GLEObjectBlock : public GLEDrawingObject { Q_OBJECT public: //! Enumeration of the points needed to draw a text object enum Points { ReferencePoint, ObjectWidth, ObjectHeight }; //! Constructor used for initialising variables and connections GLEObjectBlock(double resolution, QSize imageSize, GLEDrawingArea* area); //! Create the list with supported properties void createProperties(); //! Draw the text on the provided painter void draw(QPainter *p); //! Return the shortest distance between a given point and the text object double nearestOSnap(const QPointF& p, QPointF *osnap); double distanceToPoint(const QPointF& p, QPointF *nearestPoint); void distanceToPointRec(GLEObjectRepresention* obj, const GLEPoint& orig, const QPointF& p, double* minDist, QPointF *nearestPoint); //! Set the reference point (tl,bl,tc,bc,tr,br,...) bool setReferencePoint(const QPointF& pt); bool setReferencePointRec(const QString& ref, GLEObjectRepresention* obj, const GLEPoint& orig, const QPointF& p, double* minDist); bool setReferencePointUpdate(double x, double y, const char* suff, const QString& ref, const QPointF& p, double* minDist); //! Set one of the enumerated points void setPoint(int pointChoice, const QPointF& p, bool update = true); void addRelativeOSnaps(QPointF p); void renderPostscript(); void renderPostscriptNoUpdate(); //! Find points where a line intersects the text string (there are none) // If vertical = true, m contains 'x' QList intersections(double qtm, double qtc, bool vertical = false); QList intersections(QPointF qtp1, double angle); QList intersections(QPointF qtp1, QPointF qtp2); QList getTangents(QPointF p); bool hasTangents(); QList getPerpendiculars(QPointF p); bool hasPerpendiculars(); //! Is the point inside the object (for a text string, always false) bool isInside(QPointF p); int supportedTransformMode(); void linearTransform(const GLELinearEquation& ex, const GLELinearEquation& ey); void linearTransformDone(); void moveBy(QPointF offset); void rotateBy(double radians); void createOTracks(); void computeInitialPosition(); void updateFromPropertyNoDirty(int property); //! Update the painter path void updateObjectScale(double sx, double sy); public slots: void resChanged(); //! Update the painter path when the resolution or start/end points change void updateObject(); private slots: void updateFromProperty(int property); private: QPointF scaleOffs; QPixmap origImage; QPixmap image; QPointF drawPoint; GLEPoint referenceOffset; double lastdpi; }; #endif gle-graphics-4.2.4c/src/gui/arc.cpp0000664000000000000000000005672311677617157015614 0ustar rootroot/*********************************************************************************** * QGLE - A Graphical Interface to GLE * * Copyright (C) 2006 A. S. Budden & J. Struyf * * * * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * * * Also add information on how to contact you by electronic and paper mail. * ***********************************************************************************/ #include "arc.h" // The constructor for the line object GLEArc::GLEArc(double resolution, QSize imageSize, GLEDrawingArea *area) : GLEDrawingObject(resolution, imageSize, area) { directionReversed = false; // Make sure the line is updated if a point changes or // the image size changes connect(this, SIGNAL(pointChanged()), this, SLOT(updateArc())); connect(this, SIGNAL(imageChanged()), this, SLOT(updateArc())); connect(this, SIGNAL(propertyChanged(int)), this, SLOT(updateFromProperty(int))); validProperties << LineColour << LineWidth << LineStyle << ArrowHeadPresence; properties[LineColour] = propertyDescriptions[LineColour].defaultValue; properties[LineWidth] = propertyDescriptions[LineWidth].defaultValue; properties[LineStyle] = propertyDescriptions[LineStyle].defaultValue; properties[ArrowHeadPresence] = propertyDescriptions[ArrowHeadPresence].defaultValue; amove = false; } void GLEArc::createOTracks() { if (isSet(CentrePoint) && isSet(StartPoint) && isSet(EndPoint)) { // We need to know the page size to be able to do this! } } void GLEArc::updateFromProperty(int) { GLEArcDO* obj = (GLEArcDO*)getGLEObject(); GLEPropertyStore* obj_prop = obj->getProperties(); obj_prop->setRealProperty(GLEDOPropertyLineWidth, getProperty(LineWidth).toDouble()); QColor color = getProperty(LineColour).value(); GLEColor* gle_color = obj->getProperties()->getColorProperty(GLEDOPropertyColor); gle_color->setRGB255(color.red(), color.green(), color.blue()); QGLE::qtToGLEString(getProperty(LineStyle).toString(), obj_prop->getStringProperty(GLEDOPropertyLineStyle)); obj->setArrow((GLEHasArrow)getProperty(ArrowHeadPresence).toInt()); ((GLEDrawingArea*)parent())->setDirtyAndSave(); } void GLEArc::getGLEArcT0T1(double* t0, double* t1) { if (directionReversed) { *t0 = endAngleDeg(); *t1 = startAngleDeg(); } else { *t0 = startAngleDeg(); *t1 = endAngleDeg(); } *t1 = GLEArcNormalizedAngle2(*t0, *t1); } // Update the painter path void GLEArc::updateArc() { QPointF p; QPair snap; // Only do this if both the centre and radius have been set if (isSet(CentrePoint) && isSet(StartPoint) && isSet(EndPoint)) { // This is guaranteed to have been created in the constructor // of GLEDrawingObject delete(paintPath); // Create a new path starting at one end of the arc if (!directionReversed) { paintPath = new QPainterPath(getQtPoint(StartPoint)); // Add the circle based on the qrect paintPath->arcTo(arcRect(), startAngleDeg(), QGLE::radiansToDegrees(endAngleRadConstrained()-startAngleRad())); } else { paintPath = new QPainterPath(getQtPoint(EndPoint)); paintPath->arcTo(arcRect(), endAngleDeg(), 360-QGLE::radiansToDegrees(endAngleRadConstrained()-startAngleRad())); } // Update the GLE Code /* gleCode->clear(); if (directionReversed) gleCode->append(QString("! %1") .arg(tr("Clockwise arc added using QGLE", "Comment added to source file"))); else gleCode->append(QString("! %1") .arg(tr("Anti-clockwise arc added using QGLE", "Comment added to source file"))); gleCode->append(QString("asetpos %1") .arg(QGLE::GLEToStr(getGLEPoint(CentrePoint)))); if (directionReversed) gleCode->append(QString("narc %1 %2 %3") .arg(QGLE::GLEToStr(getGLELength(Radius))) .arg(QGLE::GLEToStr(startAngleDeg())) .arg(QGLE::GLEToStr(endAngleDeg()))); else gleCode->append(QString("arc %1 %2 %3") .arg(QGLE::GLEToStr(getGLELength(Radius))) .arg(QGLE::GLEToStr(startAngleDeg())) .arg(QGLE::GLEToStr(endAngleDeg()))); gleCode->append(QString(""));*/ // Update GLE object GLEArcDO* arc = (GLEArcDO*)getGLEObject(); if (arc != NULL) { arc->setCenter(QGLE::QPointFToGLEPoint(getGLEPoint(CentrePoint))); arc->setRadius(getGLELength(Radius)); double t0, t1; getGLEArcT0T1(&t0, &t1); arc->setAngle1(t0); arc->setAngle2(t1); } // Now we add the osnap handles osnapHandles.clear(); for(int i=0;i<360;i+=90) { if (isOnArc(QGLE::degreesToRadians(i))) { p.setX(getGLELength(Radius)*cos(QGLE::degreesToRadians(i))); p.setY(getGLELength(Radius)*sin(QGLE::degreesToRadians(i))); p += getGLEPoint(CentrePoint); snap.first = QGLE::absGLEToQt(p,dpi,pixmap.height()); snap.second = QGLE::QuadrantSnap; osnapHandles.append(snap); } } snap.first = getQtPoint(CentrePoint); snap.second = QGLE::CentreSnap; osnapHandles.append(snap); snap.first = getQtPoint(StartPoint); snap.second = QGLE::EndPointSnap; osnapHandles.append(snap); snap.first = getQtPoint(EndPoint); snap.second = QGLE::EndPointSnap; osnapHandles.append(snap); } } void GLEArc::addRelativeOSnaps(QPointF p) { if (isSet(CentrePoint) && isSet(Radius) && isSet(StartPoint) && isSet(EndPoint)) { relativeOSnaps.clear(); QList perpendiculars = getPerpendiculars(p); QPointF ppt; foreach(ppt, perpendiculars) { relativeOSnaps.append(QPair(ppt, QGLE::PerpendicularSnap)); } QList tangents = getTangents(p); QPointF tpt; foreach(tpt, tangents) { relativeOSnaps.append(QPair(tpt, QGLE::TangentSnap)); } // double angle; // // The above is identical to the circle code, now check they're on the arc // for(int i=relativeOSnaps.size()-1;i>=0;i--) // { // angle = QGLE::angleBetweenTwoPoints(getGLEPoint(CentrePoint), // QGLE::absQtToGLE(relativeOSnaps[i].first,dpi,pixmap.height())); // if (!isOnArc(angle)) // relativeOSnaps.removeAt(i); // } } } QList GLEArc::getTangents(QPointF p) { QList tangents; QPointF np; if (!isInside(p)) { double angleToCentre = QGLE::angleBetweenTwoPoints(p,getQtPoint(CentrePoint)); double radius = getQtLength(Radius); // Now we need the tangential ones double distanceToCentre = QGLE::distance(p, getQtPoint(CentrePoint)); double angleOffset = asin(radius/distanceToCentre); double distanceToTangent = sqrt(pow(distanceToCentre,2)-pow(radius,2)); double angle = angleToCentre + angleOffset; np = p + QPointF(distanceToTangent*cos(angle),distanceToTangent*sin(angle)); if (isOnArc(QGLE::angleBetweenTwoPoints( getGLEPoint(CentrePoint), QGLE::absQtToGLE(np,dpi,pixmap.height())))) tangents.append(np); angle = angleToCentre - angleOffset; np = p + QPointF(distanceToTangent*cos(angle),distanceToTangent*sin(angle)); if (isOnArc(QGLE::angleBetweenTwoPoints( getGLEPoint(CentrePoint), QGLE::absQtToGLE(np,dpi,pixmap.height())))) tangents.append(np); } return(tangents); } bool GLEArc::hasTangents() { return(true); } QList GLEArc::getPerpendiculars(QPointF p) { QList perpendiculars; // The first perpendicular osnap is defined as the nearest point QPointF np; distanceToPointOnCircle(p,&np); perpendiculars.append(np); // The second perpendicular osnap is diametrically opposite the first one double angleToCentre = QGLE::angleBetweenTwoPoints(np,getQtPoint(CentrePoint)); double radius = getQtLength(Radius); double diameter = 2*radius; np = np + QPointF(diameter*cos(angleToCentre),diameter*sin(angleToCentre)); perpendiculars.append(np); // Are the points on the arc? double angle; for(int i=perpendiculars.size()-1;i>=0;i--) { angle = QGLE::angleBetweenTwoPoints(getGLEPoint(CentrePoint), QGLE::absQtToGLE(perpendiculars[i],dpi,pixmap.height())); if (!isOnArc(angle)) perpendiculars.removeAt(i); } return(perpendiculars); } bool GLEArc::hasPerpendiculars() { return(true); } void GLEArc::drawArc(QPainter *p, double t1, double t2) { p->drawArc(arcRect(), (int)(t1 * 16), (int)((t2 - t1) * 16)); } void GLEArc::addBezier(QPainterPath *p, GLEBezier* bezier) { QPointF p1(QGLE::absGLEToQt(bezier->getP1(), dpi, pixmap.height())); QPointF p2(QGLE::absGLEToQt(bezier->getP2(), dpi, pixmap.height())); QPointF p3(QGLE::absGLEToQt(bezier->getP3(), dpi, pixmap.height())); p->cubicTo(p1, p2, p3); } void GLEArc::computeAndDraw(QPainter *p, GLEArcDO* obj, GLECurvedArrowHead* head) { if (!head->isEnabled()) { return; } head->computeArrowHead(); QPainterPath path; path.moveTo(QGLE::absGLEToQt(head->getSide1()->getP0(), dpi, pixmap.height())); addBezier(&path, head->getSide1()); addBezier(&path, head->getSide2()); if (head->getStyle() != GLEArrowStyleSimple) { path.closeSubpath(); if (head->getStyle() == GLEArrowStyleEmpty) { p->fillPath(path, QBrush(Qt::white)); } else { QColor col; GLEColor* color = obj->getProperties()->getColorProperty(GLEDOPropertyColor); col.setRgbF(color->getRed(), color->getGreen(), color->getBlue()); p->fillPath(path, QBrush(col)); } } if (!head->isSharp()) { p->drawPath(path); } } void GLEArc::draw(QPainter *p) { QPen cpen; setPenProperties(cpen); p->setPen(cpen); if (!(isSet(StartPoint) && isSet(EndPoint))) { return; } if (isSet(CentrePoint)) { double t1, t2; getGLEArcT0T1(&t1, &t2); GLEArcDO* obj = (GLEArcDO*)getGLEObject(); if (obj != NULL && obj->getArrow() != 0) { double r = getGLELength(Radius); GLEPoint orig(getGLEPoint(CentrePoint).x(), getGLEPoint(CentrePoint).y()); GLECircleArc circle(orig, r, QGLE::degreesToRadians(t1), QGLE::degreesToRadians(t2)); GLECurvedArrowHead head_start(&circle); GLECurvedArrowHead head_end(&circle); GLEArcUpdateCurvedArrowHeads(&head_start, &head_end, &t1, &t2, obj->getProperties(), 1.0, obj->getArrow()); drawArc(p, t1, t2); QPen new_pen = cpen; new_pen.setJoinStyle(Qt::RoundJoin); new_pen.setMiterLimit(20); new_pen.setStyle(Qt::SolidLine); p->setPen(new_pen); computeAndDraw(p, obj, &head_start); computeAndDraw(p, obj, &head_end); } else { drawArc(p, t1, t2); } } else { // If we don't have a centre point, just draw a line p->drawLine(getQtPoint(StartPoint),getQtPoint(EndPoint)); } } double GLEArc::distanceToPointOnCircle(QPointF p, QPointF *nearestPoint) { QPointF c = getQtPoint(CentrePoint); if (nearestPoint) { double r = getQtLength(Radius); double theta = QGLE::angleBetweenTwoPoints(c,p); nearestPoint->setX(r*cos(theta)+c.x()); nearestPoint->setY(r*sin(theta)+c.y()); } // Calculations in QT coordinates return(fabs(QGLE::distance(c,p)-getQtLength(Radius))); } double GLEArc::distanceToPoint(const QPointF& p, QPointF *nearestPoint) { // Calculations in GLE and Qt coordinates (to make the angles work!) double s, e, angle; QPointF cp, sp, ep; QPointF gleP = QGLE::absQtToGLE(p, dpi, pixmap.height()); QPointF np; // We need all the points, so if any are missing, return a very large number! if (!(isSet(CentrePoint) && isSet(Radius) && isSet(StartPoint) && isSet(EndPoint))) return(1e6); sp = getQtPoint(StartPoint); ep = getQtPoint(EndPoint); // Get the centre point and calculate the angle between the current point and it cp = getGLEPoint(CentrePoint); angle = QGLE::angleBetweenTwoPoints(cp,gleP); // If the point is on the arc (in terms of angle), the calculation is simple if (isOnArc(angle)) { if (nearestPoint) { double r = getGLELength(Radius); np.setX(r*cos(angle)+cp.x()); np.setY(r*sin(angle)+cp.y()); *nearestPoint = QGLE::absGLEToQt(np, dpi, pixmap.height()); } cp = getQtPoint(CentrePoint); return(fabs(QGLE::distance(cp,p)-getQtLength(Radius))); } // Otherwise, the distance will be the shortest distance to one of the end points s = QGLE::distance(p,sp); e = QGLE::distance(p,ep); if (s < e) { if (nearestPoint) *nearestPoint = sp; return(s); } else { if (nearestPoint) *nearestPoint = ep; return(e); } } bool GLEArc::isOnArc(double angle) { // Decide whether an angle is on the drawn part of an arc double s, e; if (!(isSet(CentrePoint) && isSet(Radius) && isSet(StartPoint) && isSet(EndPoint))) return(false); // Choose the start and end angles according to the direction of drawing if (!directionReversed) { s = startAngleRad(); e = endAngleRad(); } else { s = endAngleRad(); e = startAngleRad(); } // Ensure that the end point is greater than the start point while (e < s) e += 2*M_PI; int i; // Decide whether the angle is in between the two points for (i=0;i<2;i++) { angle += i*2*M_PI; if ((angle >= s) && (angle <= e)) return(true); } return(false); } // Set a point (start or end in the case of a line) void GLEArc::setPoint(int pointChoice, const QPointF& p, bool update) { QPointF s,e,m,c,mid1,mid2; double mg1,mg2,x,y; bool ok = false; switch(pointChoice) { // Set the radius based on a centre point case CentrePoint: s = getGLEPoint(StartPoint); pointHash[CentrePoint] = QGLE::absQtToGLE(p, dpi, pixmap.height()); x = QGLE::distance(getGLEPoint(CentrePoint),s); if (x > 0.0) pointHash[Radius] = QPointF(x,0); break; case MidPoint: // Find the centre point and radius based on a random // point on the arc if (!(isSet(StartPoint) && isSet(EndPoint))) return; // Get the basic points in GLE coordinates s = getGLEPoint(StartPoint); e = getGLEPoint(EndPoint); m = QGLE::absQtToGLE(p, dpi,pixmap.height()); // Find the halfway points mid1 = QPointF((s.x()+m.x())/2.0, (s.y()+m.y())/2.0); mid2 = QPointF((e.x()+m.x())/2.0, (e.y()+m.y())/2.0); if ((m.y() == s.y()) && (m.x() != s.x()) && (m.y() != e.y())) { // start and mid point are on a horizontal line, but // points are not coincident or on the same line as // s - e //qDebug() << "1: " << s << m << e; mg2 = (e.x()-m.x())/(m.y()-e.y()); x = mid1.x(); y = mg2*x + mid2.y() - mg2*mid2.x(); c = QPointF(x,y); pointHash[CentrePoint] = c; pointHash[Radius] = QPointF(QGLE::distance(c,m),0); if (!isOnArc(QGLE::angleBetweenTwoPoints(c,m))) directionReversed = !directionReversed; ok = true; } else if ((m.y() == e.y()) && (m.x() != e.x()) && (m.y() != s.y())) { //qDebug() << "2: " << s << m << e; // end and mid point are on a horizontal line, but // points are not coincident or on the same line as // s - e mg1 = (s.x()-m.x())/(m.y()-s.y()); x = mid2.x(); y = mg1*x + mid1.y() - mg1*mid1.x(); c = QPointF(x,y); pointHash[CentrePoint] = c; pointHash[Radius] = QPointF(QGLE::distance(c,m),0); if (!isOnArc(QGLE::angleBetweenTwoPoints(c,m))) directionReversed = !directionReversed; ok = true; } else if ((m.y() != e.y()) && (m.y() != s.y())) { //qDebug() << "3"; // The most common case: points are nicely spaced // Find the gradients of the normals to the intersecting lines mg1 = (s.x()-m.x())/(m.y()-s.y()); mg2 = (e.x()-m.x())/(m.y()-e.y()); if (!(mg1 == mg2)) { x = (mid2.y() - mg2*mid2.x() - mid1.y() + mg1*mid1.x())/ (mg1 - mg2); y = mg1*x + mid1.y() - mg1*mid1.x(); c = QPointF(x,y); pointHash[CentrePoint] = c; pointHash[Radius] = QPointF(QGLE::distance(c,m),0); if (!isOnArc(QGLE::angleBetweenTwoPoints(c,m))) directionReversed = !directionReversed; ok = true; } } if (!ok) { pointHash.remove(CentrePoint); pointHash.remove(Radius); } // The simple cases: case StartPoint: case EndPoint: pointHash[pointChoice] = QGLE::absQtToGLE(p, dpi, pixmap.height()); break; } // Update the arc if (update) updateArc(); } double GLEArc::startAngleDeg() { // Return the angle between the centre and the start point // in degrees return(QGLE::radiansToDegrees(startAngleRad())); } double GLEArc::endAngleDeg() { // Return the angle between the centre and the end point // in degrees return(QGLE::radiansToDegrees(endAngleRad())); } double GLEArc::endAngleDegConstrained() { // Return the angle between the centre and the end point // in degrees and constrained to be greater than the // start point (by adding 2*pi) double e = endAngleDeg(); double s = startAngleDeg(); while (e < s) e += 360.0; return(e); } double GLEArc::startAngleRad() { // Return the angle between the centre and the start point // in radians QPointF s = getGLEPoint(StartPoint); QPointF c = getGLEPoint(CentrePoint); return(QGLE::angleBetweenTwoPoints(c,s)); } double GLEArc::endAngleRad() { // Return the angle between the centre and the end point // in radians QPointF e = getGLEPoint(EndPoint); QPointF c = getGLEPoint(CentrePoint); return(QGLE::angleBetweenTwoPoints(c,e)); } double GLEArc::endAngleRadConstrained() { // Return the angle between the centre and the end point // in radians and constrained to be greater than the start // start point (by adding 2*pi) double e = endAngleRad(); double s = startAngleRad(); while (e < s) e += 2*M_PI; return(e); } QRectF GLEArc::arcRect() { // Return the rectangle surrounding the circle upon which the arc is based // Work in Qt coordinates QPointF cp = getQtPoint(CentrePoint); double r = getQtLength(Radius); if ((isSet(Radius) && isSet(CentrePoint))) return(QRectF(cp.x()-r, cp.y() - r, 2*r, 2*r)); else return(QRectF(0,0,0,0)); } QList GLEArc::intersections(double qtm, double qtc, bool vertical) { QPointF one, two; // For circles and arcs, we'll deal with points individually: if (vertical) { one.setX(qtm); two.setX(qtm); one.setY(0.0); two.setY(1.0); } else { one.setX(0.0); one.setY(qtc); two.setX(1.0); two.setY(qtm + qtc); } return(intersections(one,two)); } QList GLEArc::intersections(QPointF qtp1, QPointF qtp2) { // Based on http://tinyurl.com/qtgum QList pointArray; QPointF cp = getQtPoint(CentrePoint); double r = getQtLength(Radius); double a,b,c; double bac; double u; double angle; QPointF p; a = pow((qtp2.x() - qtp1.x()),2) + pow((qtp2.y() - qtp1.y()),2); b = 2 * ( (qtp2.x() - qtp1.x())*(qtp1.x()-cp.x()) + (qtp2.y()-qtp1.y())*(qtp1.y()-cp.y())); c = pow(cp.x(),2)+pow(cp.y(),2)+pow(qtp1.x(),2)+pow(qtp1.y(),2) - 2*(cp.x()*qtp1.x()+cp.y()*qtp1.y()) - pow(r,2); bac = pow(b,2)-4*a*c; if (bac == 0.0) { u = - b / (2*a); p.setX(qtp1.x()+u*(qtp2.x()-qtp1.x())); p.setY(qtp1.y()+u*(qtp2.y()-qtp1.y())); angle = QGLE::angleBetweenTwoPoints(getGLEPoint(CentrePoint), QGLE::absQtToGLE(p,dpi,pixmap.height())); if (isOnArc(angle)) pointArray.append(p); } else if (bac > 0.0) { u = (-b + sqrt(bac))/(2*a); p.setX(qtp1.x() + u*(qtp2.x()-qtp1.x())); p.setY(qtp1.y() + u*(qtp2.y()-qtp1.y())); angle = QGLE::angleBetweenTwoPoints(getGLEPoint(CentrePoint), QGLE::absQtToGLE(p,dpi,pixmap.height())); if (isOnArc(angle)) pointArray.append(p); u = (-b - sqrt(bac))/(2*a); p.setX(qtp1.x() + u*(qtp2.x()-qtp1.x())); p.setY(qtp1.y() + u*(qtp2.y()-qtp1.y())); angle = QGLE::angleBetweenTwoPoints(getGLEPoint(CentrePoint), QGLE::absQtToGLE(p,dpi,pixmap.height())); if (isOnArc(angle)) pointArray.append(p); } return(pointArray); } QList GLEArc::intersections(QPointF qtp1, double angle) { // This intersection code must determine the intersections in // a particular direction from a start point // First get a list based on an infinite line: QPointF qtp2 = qtp1 + QPointF(1.0*cos(angle),1.0*sin(angle)); QList allIntersections = intersections(qtp1,qtp2); // Now go through the list and determine which are in the right // direction QList correctIntersections; QPointF pt; double ptAngle; foreach(pt, allIntersections) { ptAngle = QGLE::angleBetweenTwoPoints(qtp1, pt); if (QGLE::quadrant(ptAngle) == QGLE::quadrant(angle)) correctIntersections.append(pt); } return(correctIntersections); } bool GLEArc::isInside(QPointF p) { QPointF cp = getGLEPoint(CentrePoint); QPointF gp = QGLE::absQtToGLE(p,dpi,pixmap.height()); double angle; if (QGLE::distance(cp,gp) < getGLELength(Radius)) { angle = QGLE::angleBetweenTwoPoints(cp,gp); if (isOnArc(angle)) return(true); } return(false); } bool GLEArc::isInsideCircle(QPointF p) { QPointF cp = getQtPoint(CentrePoint); if (QGLE::distance(cp,p) < getQtLength(Radius)) return(true); else return(false); } double GLEArc::nearestPriorityOSnap(const QPointF& pt, QPointF *osnap) { QPointF startPt = getQtPoint(StartPoint, true); QPointF endPt = getQtPoint(EndPoint, true); double d1 = QGLE::distance(pt, startPt); double d2 = QGLE::distance(pt, endPt); if (d1 < d2) { *osnap = startPt; return d1; } else { *osnap = endPt; return d2; } } bool GLEArc::findScaleOrigin(const QPointF& pt, QPointF* origin, int) { QPointF startPt = getQtPoint(StartPoint, true); QPointF endPt = getQtPoint(EndPoint, true); if (QGLE::distance(pt, startPt) < QGLE::distance(pt, endPt)) *origin = endPt; else *origin = startPt; return true; } int GLEArc::supportedTransformMode() { return TransformModeFree; } void GLEArc::linearTransform(const GLELinearEquation& ex, const GLELinearEquation& ey) { // The arc will need to support becoming an // elliptical_n?arc before this can be properly // supported. pointHash.clear(); linearTransformPt(StartPoint, ex, ey, false); linearTransformPt(EndPoint, ex, ey, false); linearTransformPt(CentrePoint, ex, ey, false); if (storedPointHash.contains(MidPoint)) { linearTransformPt(MidPoint, ex, ey, false); } updateArc(); } void GLEArc::moveBy(QPointF offset) { pointHash.clear(); // Moves relative to storedPointHash QPointF pt = getQtPoint(StartPoint, true); setPoint(StartPoint, pt + offset, false); pt = getQtPoint(EndPoint, true); setPoint(EndPoint, pt + offset, false); pt = getQtPoint(CentrePoint, true); setPoint(CentrePoint, pt + offset, false); if (storedPointHash.contains(MidPoint)) { pt = getQtPoint(MidPoint, true); setPoint(MidPoint, pt + offset, false); } updateArc(); } void GLEArc::rotateBy(double radians) { pointHash.clear(); // Moves relative to storedPointHash QPointF pt = getQtPoint(CentrePoint, true); setPoint(CentrePoint, QGLE::rotateAboutPoint(pt, radians, basePoint)); pt = getQtPoint(StartPoint, true); setPoint(StartPoint, QGLE::rotateAboutPoint(pt, radians, basePoint)); pt = getQtPoint(EndPoint, true); setPoint(EndPoint, QGLE::rotateAboutPoint(pt, radians, basePoint)); if (storedPointHash.contains(MidPoint)) { pt = getQtPoint(MidPoint, true); setPoint(MidPoint, QGLE::rotateAboutPoint(pt, radians, basePoint)); } } gle-graphics-4.2.4c/src/gui/objectblocks.cpp0000664000000000000000000004562711652762562017506 0ustar rootroot/*********************************************************************************** * QGLE - A Graphical Interface to GLE * * Copyright (C) 2006 A. S. Budden & J. Struyf * * * * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * * * Also add information on how to contact you by electronic and paper mail. * ***********************************************************************************/ #include "mainwindow.h" #include "objectblocks.h" GLEObjectBlocksList::GLEObjectBlocksList(QWidget *parent, GLEMainWindow* main, GLEDrawingArea* area, int size) : QTreeView(parent) { defaultSize = size; mainWin = main; drawingArea = area; model = new QStandardItemModel(); setModel(model); header()->hide(); // = setHeaderHidden(true) in Qt 4.4 connect(this, SIGNAL(clicked(const QModelIndex&)), this, SLOT(selectEntry(const QModelIndex&))); //setSizeIncrement(1, 1); //setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred); } void GLEObjectBlocksList::updateList() { model->clear(); consList.clear(); QStandardItem *parentItem = model->invisibleRootItem(); GLEScript* script = mainWin->getGLEScript(); script->updateObjectDOConstructors(); GLEGlobalSource* source = script->getSource(); updateFile(parentItem, source->getMainFile()); for (int i = 0; i < source->getNbFiles(); i++) { updateFile(parentItem, source->getFile(i)); } } void GLEObjectBlocksList::updateFile(QStandardItem *parent, GLESourceFile* file) { QStandardItem* item = new QStandardItem(QString::fromUtf8(file->getLocation()->getName().c_str())); parent->appendRow(item); for (int i = 0; i < file->getNbObjectDOConstructors(); i++) { GLEObjectDOConstructor* cons = file->getObjectDOConstructor(i); QStandardItem* child = new QStandardItem(QString::fromUtf8(cons->getName().c_str()).toLower()); child->setData(qVariantFromValue((void*)cons)); item->appendRow(child); consList.add(cons); } } void GLEObjectBlocksList::selectEntry(const QModelIndex& mi) { QStandardItem* item = model->itemFromIndex(mi); GLEObjectDOConstructor* cons = (GLEObjectDOConstructor*)qVariantValue(item->data()); if (cons == NULL) return; mainWin->clearConsoleWindow(); GLEObjectBlock* block = drawingArea->createNewObjectBlock(cons); if (block == NULL) return; block->renderPostscriptNoUpdate(); mainWin->shouldAutoShowConsole(); // Center object on screen QSize scrollSize = mainWin->getScrollAreaSize(); QSize drawSize = drawingArea->size(); QPoint drawPos = drawingArea->pos(); scrollSize.setWidth(min(scrollSize.width(), drawSize.width())); scrollSize.setHeight(min(scrollSize.height(), drawSize.height())); QPoint pos = QPoint(scrollSize.width()/2-drawPos.x(), scrollSize.height()/2-drawPos.y()); block->setPoint(GLEObjectBlock::ReferencePoint, pos, false); GLEObjectDO* obj = (GLEObjectDO*)block->getGLEObject(); GLEPropertyStore* props = obj->getProperties(); if (props->getModel()->isSupportScale()) { GLEArrayImpl* arr = props->getArray(); block->setLength(GLEObjectBlock::ObjectWidth, arr->getDouble(0), false); block->setLength(GLEObjectBlock::ObjectHeight, arr->getDouble(1), false); } block->updateFromPropertyNoDirty(GLEObjectBlock::RefPointName); // Select object mainWin->selectPointerTool(); drawingArea->selectObject(block); drawingArea->update(); } // The constructor for the line object GLEObjectBlock::GLEObjectBlock(double resolution, QSize imageSize, GLEDrawingArea* area) : GLEDrawingObject(resolution, imageSize, area) { lastdpi = -1; amove = false; connect(this, SIGNAL(pointChanged()), this, SLOT(updateObject())); connect(this, SIGNAL(imageChanged()), this, SLOT(resChanged())); connect(this, SIGNAL(propertyChanged(int)), this, SLOT(updateFromProperty(int))); validProperties << FillColour << LineColour << LineWidth << RefPointName << FontName << FontStyle << FontSize; properties[FillColour] = propertyDescriptions[FillColour].defaultValue; properties[LineColour] = propertyDescriptions[LineColour].defaultValue; properties[LineWidth] = propertyDescriptions[LineWidth].defaultValue; properties[RefPointName] = propertyDescriptions[RefPointName].defaultValue; properties[FontName] = propertyDescriptions[FontName].defaultValue; properties[FontStyle] = propertyDescriptions[FontStyle].defaultValue; properties[FontSize] = propertyDescriptions[FontSize].defaultValue; scaleOffs = QPointF(1.0, 1.0); } void GLEObjectBlock::resChanged() { if (dpi != lastdpi) { renderPostscript(); lastdpi = dpi; } else { updateObject(); } } void GLEObjectBlock::renderPostscript() { renderPostscriptNoUpdate(); scaleOffs = QPointF(1.0, 1.0); updateObject(); } void GLEObjectBlock::renderPostscriptNoUpdate() { QImage img; GLERectangle rect; GLEObjectDO* obj = (GLEObjectDO*)getGLEObject(); obj->getPSBoundingBox(&rect); drawingArea->renderPostscript(obj->getPostScriptCode(), rect, dpi, &img); image = QPixmap::fromImage(img); origImage = image; } void GLEObjectBlock::createOTracks() { } void GLEObjectBlock::computeInitialPosition() { GLEObjectDO* obj = (GLEObjectDO*)getGLEObject(); obj->computeReferencePoint(&referenceOffset); GLEPoint& pos = obj->getPosition(); QPointF refPt(pos.getX()-referenceOffset.getX(), pos.getY()-referenceOffset.getY()); pointHash[ReferencePoint] = refPt; } void GLEObjectBlock::updateFromPropertyNoDirty(int property) { GLEObjectDO* obj = (GLEObjectDO*)getGLEObject(); GLEPropertyStore* obj_prop = obj->getProperties(); if (property == RefPointName) { GLERC refPtStrGLE(new GLEString()); QString refPtStr = getProperty(RefPointName).toString(); QGLE::qtToGLEString(refPtStr, refPtStrGLE.get()); obj->setRefPointString(refPtStrGLE.get()); obj->computeReferencePoint(&referenceOffset); } if (property == LineWidth || property == LineColour || property == FillColour || property == FontName || property == FontStyle || property == FontSize || property >= PropertyUser) { obj_prop->setRealProperty(GLEDOPropertyLineWidth, getProperty(LineWidth).toDouble()); QColor color = getProperty(LineColour).value(); GLEColor* gle_color = obj->getProperties()->getColorProperty(GLEDOPropertyColor); gle_color->setRGB255(color.red(), color.green(), color.blue()); GLEColor* gle_fill = obj->getProperties()->getColorProperty(GLEDOPropertyFillColor); if (properties[FillColour].value().isValid()) { QColor fill = getProperty(FillColour).value(); gle_fill->setRGB255(fill.red(), fill.green(), fill.blue()); } else { gle_fill->setTransparent(true); } // Font is // fontList[properties[FontName].value] // (default "rm") GLEInterface* iface = obj->getConstructor()->getScript()->getGLEInterface(); GLEFont* font = iface->getFont(getProperty(FontName).toInt()); font = font->getStyle((GLEFontStyle)getProperty(FontStyle).toInt()); obj_prop->setFontProperty(GLEDOPropertyFont, font); obj_prop->setRealProperty(GLEDOPropertyFontSize, getProperty(FontSize).toDouble()); // Copy properties to lengths if (obj_prop->getModel()->isSupportScale()) { GLEArrayImpl* arr = obj_prop->getArray(); setLength(GLEObjectBlock::ObjectWidth, arr->getDouble(0), false); setLength(GLEObjectBlock::ObjectHeight, arr->getDouble(1), false); } // Render the object obj->render(); renderPostscript(); // updateObject() is called after rendering is complete. } else { updateObject(); } } void GLEObjectBlock::updateFromProperty(int property) { updateFromPropertyNoDirty(property); ((GLEDrawingArea*)parent())->setDirtyAndSave(); } // Update the painter path void GLEObjectBlock::updateObject() { updateObjectScale(1.0, 1.0); } /** * referenceOffset: offset of reference point (justify setting) in cm measured from bottom-left corner * referencePoint: reference point on screen * scriptPosition: referencePoint + referenceOffset * drawpoint: where to draw pixmap on screen * * screen: * * (0,0).............(maxx,0) * . . * . . * (0,maxy)..........(maxx,maxy) */ // Update the painter path void GLEObjectBlock::updateObjectScale(double sx, double sy) { delete(paintPath); paintPath = new QPainterPath(); QPointF gleRefPt = getGLEPoint(ReferencePoint); GLEObjectDO* obj = (GLEObjectDO*)getGLEObject(); obj->getPosition().setXY(gleRefPt.x()+referenceOffset.getX(), gleRefPt.y()+referenceOffset.getY()); QPointF qtRefPt = QGLE::absGLEToQt(gleRefPt, dpi, pixmap.height()); QPointF offset(-GS_OFFSET*dpi*sx, GS_OFFSET*dpi*sy-origImage.height()*sy); drawPoint = qtRefPt + offset; QSizeF qtSize; GLERectangle rect; getGLEObject()->getPSBoundingBox(&rect); qtSize.setWidth(QGLE::relGLEToQt(rect.getWidth()*sx, dpi)); qtSize.setHeight(QGLE::relGLEToQt(rect.getHeight()*sy, dpi)); // The space from the top of the image is the following: double yoffs = origImage.height()*sy-rect.getHeight()*sy*dpi/CM_PER_INCH-GS_OFFSET*dpi*sy; paintPath->addRect(QRectF(drawPoint.x()+GS_OFFSET*dpi*sx, drawPoint.y()+yoffs, qtSize.width(), qtSize.height())); osnapHandles.clear(); } void GLEObjectBlock::addRelativeOSnaps(QPointF p) { UNUSED_ARG(p); } void GLEObjectBlock::draw(QPainter *p) { // This needs to be changed to plot an image object p->drawPixmap(drawPoint, image); // QGLE::drawCross(p, getQtPoint(ReferencePoint), AMOVE_LENGTH, pen()); } QList GLEObjectBlock::getTangents(QPointF p) { QList empty; UNUSED_ARG(p); return(empty); } bool GLEObjectBlock::hasTangents() { return(false); } QList GLEObjectBlock::getPerpendiculars(QPointF p) { QList empty; UNUSED_ARG(p); return(empty); } bool GLEObjectBlock::hasPerpendiculars() { return(false); } double GLEObjectBlock::nearestOSnap(const QPointF& p, QPointF *osnap) { return distanceToPoint(p, osnap); } double GLEObjectBlock::distanceToPoint(const QPointF& p, QPointF *nearestPoint) { GLERectangle box; double minDist = 1e300; if (nearestPoint != NULL) *nearestPoint = p; GLEObjectDO* obj = (GLEObjectDO*)getGLEObject(); GLEObjectRepresention* objrep = obj->getObjectRepresentation(); box.copy(objrep->getRectangle()); GLEPoint orig(box.getXMin(), box.getYMin()); box.translate(1.0-orig.getX(), 1.0-orig.getY()); box.scale(dpi/PS_POINTS_PER_INCH); box.subtractYFrom(image.height()); box.translate(drawPoint.x(), drawPoint.y()); box.normalize(); box.grow(MAX_SELECT_DISTANCE); if (box.contains(p.x(), p.y())) { distanceToPointRec(objrep, orig, p, &minDist, nearestPoint); return 0.0; } return minDist; } void GLEObjectBlock::distanceToPointRec(GLEObjectRepresention* obj, const GLEPoint& orig, const QPointF& p, double* minDist, QPointF *nearestPoint) { GLERectangle box; box.copy(obj->getRectangle()); box.translate(1.0-orig.getX(), 1.0-orig.getY()); box.scale(dpi/PS_POINTS_PER_INCH); box.subtractYFrom(image.height()); box.translate(drawPoint.x(), drawPoint.y()); distanceToPointUpdate(box.getXMin(), box.getYMin(), p, minDist, nearestPoint); distanceToPointUpdate(box.getXMin(), box.getYMid(), p, minDist, nearestPoint); distanceToPointUpdate(box.getXMin(), box.getYMax(), p, minDist, nearestPoint); distanceToPointUpdate(box.getXMid(), box.getYMin(), p, minDist, nearestPoint); distanceToPointUpdate(box.getXMid(), box.getYMid(), p, minDist, nearestPoint); distanceToPointUpdate(box.getXMid(), box.getYMax(), p, minDist, nearestPoint); distanceToPointUpdate(box.getXMax(), box.getYMin(), p, minDist, nearestPoint); distanceToPointUpdate(box.getXMax(), box.getYMid(), p, minDist, nearestPoint); distanceToPointUpdate(box.getXMax(), box.getYMax(), p, minDist, nearestPoint); GLEStringHash* children = obj->getChilds(); if (children != NULL) { GLEStringHashData* hash = children->getHash(); for (GLEStringHashData::const_iterator i = hash->begin(); i != hash->end(); i++) { GLEObjectRepresention* child = (GLEObjectRepresention*)children->getObject(i->second); distanceToPointRec(child, orig, p, minDist, nearestPoint); } } } //! Set the reference point (tl,bl,tc,bc,tr,br,...) bool GLEObjectBlock::setReferencePoint(const QPointF& pt) { GLERectangle box; double minDist = 1e300; GLEObjectDO* obj = (GLEObjectDO*)getGLEObject(); GLEObjectRepresention* objrep = obj->getObjectRepresentation(); box.copy(objrep->getRectangle()); GLEPoint orig(box.getXMin(), box.getYMin()); box.translate(1.0-orig.getX(), 1.0-orig.getY()); box.scale(dpi/PS_POINTS_PER_INCH); box.subtractYFrom(image.height()); box.translate(drawPoint.x(), drawPoint.y()); box.normalize(); box.grow(MAX_SELECT_DISTANCE); if (box.contains(pt.x(), pt.y())) { QString ref; return setReferencePointRec(ref, objrep, orig, pt, &minDist); } return true; } bool GLEObjectBlock::setReferencePointUpdate(double x, double y, const char* suff, const QString& ref, const QPointF& p, double* minDist) { double crDist = QGLE::distance(x, y, p); if (crDist < MAX_SELECT_DISTANCE && crDist < *minDist) { *minDist = crDist; QString prop = ref; if (suff != NULL) { if (prop != "") prop += "."; prop += QString::fromUtf8(suff); } setProperty(RefPointName, prop); return true; } return false; } bool GLEObjectBlock::setReferencePointRec(const QString& ref, GLEObjectRepresention* obj, const GLEPoint& orig, const QPointF& p, double* minDist) { GLERectangle box; box.copy(obj->getRectangle()); box.translate(1.0-orig.getX(), 1.0-orig.getY()); box.scale(dpi/PS_POINTS_PER_INCH); box.subtractYFrom(image.height()); box.translate(drawPoint.x(), drawPoint.y()); bool mod = false; if (box.isPoint()) { mod |= setReferencePointUpdate(box.getXMin(), box.getYMin(), NULL, ref, p, minDist); } else { mod |= setReferencePointUpdate(box.getXMin(), box.getYMin(), "bl", ref, p, minDist); mod |= setReferencePointUpdate(box.getXMin(), box.getYMid(), "lc", ref, p, minDist); mod |= setReferencePointUpdate(box.getXMin(), box.getYMax(), "tl", ref, p, minDist); mod |= setReferencePointUpdate(box.getXMid(), box.getYMin(), "bc", ref, p, minDist); mod |= setReferencePointUpdate(box.getXMid(), box.getYMid(), "cc", ref, p, minDist); mod |= setReferencePointUpdate(box.getXMid(), box.getYMax(), "tc", ref, p, minDist); mod |= setReferencePointUpdate(box.getXMax(), box.getYMin(), "br", ref, p, minDist); mod |= setReferencePointUpdate(box.getXMax(), box.getYMid(), "rc", ref, p, minDist); mod |= setReferencePointUpdate(box.getXMax(), box.getYMax(), "tr", ref, p, minDist); } GLEStringHash* children = obj->getChilds(); if (children != NULL) { GLEStringHashData* hash = children->getHash(); for (GLEStringHashData::const_iterator i = hash->begin(); i != hash->end(); i++) { QString newRef = ref; if (ref != "") newRef += "."; newRef += QGLE::gleToQString(i->first.get()); GLEObjectRepresention* child = (GLEObjectRepresention*)children->getObject(i->second); mod |= setReferencePointRec(newRef, child, orig, p, minDist); } } return mod; } // Set a point (start or end in the case of a line) void GLEObjectBlock::setPoint(int pointChoice, const QPointF& p, bool update) { switch(pointChoice) { case ReferencePoint: pointHash[pointChoice] = QGLE::absQtToGLE(p, dpi, pixmap.height()); break; case ObjectWidth: case ObjectHeight: pointHash[pointChoice] = p; break; } if (update) updateObject(); } QList GLEObjectBlock::intersections(double qtm, double qtc, bool vertical) { UNUSED_ARG(qtm); UNUSED_ARG(qtc); UNUSED_ARG(vertical); return QList(); } QList GLEObjectBlock::intersections(QPointF qtp1, QPointF qtp2) { UNUSED_ARG(qtp1); UNUSED_ARG(qtp2); return QList(); } QList GLEObjectBlock::intersections(QPointF qtp1, double angle) { UNUSED_ARG(qtp1); UNUSED_ARG(angle); return QList(); } bool GLEObjectBlock::isInside(QPointF p) { return(paintPath->contains(p)); } int GLEObjectBlock::supportedTransformMode() { if (getGLEObject() != NULL && getGLEObject()->getProperties()->getModel()->isSupportScale()) { return TransformModeFree; } return TransformModeNone; } void GLEObjectBlock::linearTransform(const GLELinearEquation& ex, const GLELinearEquation& ey) { pointHash.clear(); double wd = getGLELength(ObjectWidth, true)*ex.getA(); double hi = getGLELength(ObjectHeight, true)*ey.getA(); if (wd < 0 || hi < 0) { /* Something's wrong */ return; } double sx = ex.getA()/scaleOffs.x(); double sy = ey.getA()/scaleOffs.y(); GLEObjectDO* obj = (GLEObjectDO*)getGLEObject(); if (wd != getGLELength(ObjectWidth, false) || hi != getGLELength(ObjectHeight, false)) { setLength(ObjectWidth, wd, false); setLength(ObjectHeight, hi, false); obj->getProperties()->getModel()->scale(obj, wd, hi); int int_wd = (int)floor(origImage.width()*sx+0.5); int int_hi = (int)floor(origImage.height()*sy+0.5); if (sx < 0.5 || sx > 2.0 || sy < 0.5 || sy > 2.0) { /* deviation too big -> rerender */ obj->render(); renderPostscriptNoUpdate(); scaleOffs = QPointF(ex.getA(), ey.getA()); sx = sy = 1.0; } else { image = origImage.scaled(int_wd, int_hi, Qt::IgnoreAspectRatio, Qt::SmoothTransformation); } } linearTransformPt(ReferencePoint, ex, ey, false); updateObjectScale(sx, sy); } void GLEObjectBlock::linearTransformDone() { GLEObjectDO* obj = (GLEObjectDO*)getGLEObject(); obj->render(); obj->computeReferencePoint(&referenceOffset); renderPostscript(); } void GLEObjectBlock::moveBy(QPointF offset) { pointHash.clear(); GLEObjectDO* obj = (GLEObjectDO*)getGLEObject(); if (obj->getProperties()->getModel()->isSupportScale()) { setLength(ObjectWidth, getGLELength(ObjectWidth, true), false); setLength(ObjectHeight, getGLELength(ObjectHeight, true), false); } QPointF start = getQtPoint(ReferencePoint, true); setPoint(ReferencePoint, start + offset); } void GLEObjectBlock::rotateBy(double radians) { // TODO: Also rotate the text. pointHash.clear(); // Moves relative to storedPointHash QPointF start = getQtPoint(ReferencePoint, true); setPoint(ReferencePoint, QGLE::rotateAboutPoint(start, radians, basePoint)); } gle-graphics-4.2.4c/src/gui/gledrawing.h0000664000000000000000000002706011405446017016607 0ustar rootroot/*********************************************************************************** * QGLE - A Graphical Interface to GLE * * Copyright (C) 2006 A. S. Budden & J. Struyf * * * * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * * * Also add information on how to contact you by electronic and paper mail. * ***********************************************************************************/ #ifndef __GLEDRAWING_H #define __GLEDRAWING_H #include #include "grid.h" #include "snapline.h" #include "../gle/gle-interface/gle-interface.h" class GLEMainWindow; class GLEDrawingObject; class GLEObjectBlock; //! Class implementing the drawing area for displaying GLE drawings /*! * This class controls the paintable area of the window. For the purposes of * the initial previewer, it is largely unnecessary, as all that is required * is for the picture to be drawn. However, for future versions, there will * be additional usage, including user interaction and this will be cleaner * if implemented in a separate class. */ class GLEDrawingArea : public QWidget { Q_OBJECT public: //! Constructor GLEDrawingArea(GLEInterface *iface, GLEMainWindow* main); //! Enumerator describing the drawing tools enum DrawingTools { NoTool, PointerTool, LineTool, TanLineTool, PerpLineTool, CircleTool, EllipseTool, ArcTool, TextTool, AMoveTool }; enum Handles { TopLeft, TopMiddle, TopRight, MiddleLeft, MiddleRight, BottomLeft, BottomMiddle, BottomRight }; //! Enumerator used to list the modifiers that we use enum { ShiftKey, AltKey, CtrlKey }; enum Snaps { ObjectSnap, PolarSnap, PolarTrack, OrthoSnap, GridSnap }; //! Return the current resolution double getDPI(); //! Has the image been changed bool isDirty(); //! We've saved, so clear the dirty flag void clearDirty(); //! Set the dirty flag void setDirty(); // To allow us to notice whether changes have occurred void setDirtyAndSave(); //! Objects have been rendered void clearNewObjectsFlag(); void setNewObjectsFlag(); //! Are there new objects since the last render? bool thereAreNewObjects(); //! Are there any objects at all? bool thereAreObjects(); //! We've opened a new file, so clear the objects void clearObjects(); //! Handle key events void hitKey(int key, int modifiers); //! Convert GLE point to Qt point QPointF gleToQt(GLEPoint& pt); //! Set line properties void setLineProperties(int currentIndex, GLEDrawObject* obj); //! Create new line object based on GLE object void createNewLineFromScript(GLELineDO* line); //! Create new ellipse object based on GLE object void createNewEllipseFromScript(GLEEllipseDO* ellipse); //! Create new arc object based on GLE object void createNewArcFromScript(GLEArcDO* arc); //! Create new text object based on GLE object void createNewTextFromScript(GLETextDO* text); //! Create new object block based on GLE object void createNewObjectFromScript(GLEObjectDO* obj); //! Create new object block GLEObjectBlock* createNewObjectBlock(GLEObjectDOConstructor* cons); //! Select given object void selectObject(GLEDrawingObject* obj); //! Create objects from given GLE script void updateFromScript(GLEScript* script); //! Render Postscript code to QImage void renderPostscript(const char* ps, const GLERectangle& rect, double dpi, QImage* result); //! Initialize all instance variables void initAll(); //! Initialize transient instance variables void initVars(); //! Initialize instance variables related to selection void initSelectionVars(); //! Return GLEInterface inline GLEInterface* getGLEInterface() { return gleInterface; } protected: //! Automatically called when repainting is needed void paintEvent(QPaintEvent *event); //! Automatically called when a mouse button is pressed void mousePressEvent(QMouseEvent *event); //! Automatically called when the mouse is moved void mouseMoveEvent(QMouseEvent *event); //! Automatically called when a mouse button is released void mouseReleaseEvent(QMouseEvent *event); public slots: //! Slot used to update the display when GS is finished void updateDisplay(QImage image); //! Slot used to toggle the visibility of the grid void gridToggle(bool state); //! Slot used to toggle the grid snap void gridSnapToggle(bool state); //! Slot used to update the resolution of the drawing void setDPI(double new_dpi); //! Slot used to change the grid X spacing void setGrid(QPointF newGrid); //! Slot used to select a new drawing tool void setTool(int newTool); //! Slot used to select a mode void setEditMode(bool state); //! Slot used to toggle orthosnap void orthoSnapToggle(bool state); //! Slot used to toggle osnap void osnapToggle(bool state); //! Slot used to toggle polar snap void polarSnapToggle(bool state); //! Slot used to toggle polar tracking void polarTrackToggle(bool state); //! Slot used to handle keyboard modifiers void modifierToggle(int mod, bool state); //! Slot used to update the polar start angle void setPolarSnapStartAngle(double newAngle); //! Slot used to update the polar increment angle void setPolarSnapIncAngle(double newAngle); signals: //! Notify children of change of resolution void dpiChanged(double new_dpi); //! Notify children of change of image size void sizeChanged(QSize new_size, double new_dpi); //! Notify parent's status bar of mouse move events void mouseMoved(QPointF gle); //! Notify parent of base point void basePointChanged(QPointF qt); //! Update status bar as things are done void updateStatusBar(QString msg); //! Notify of changes to the dirty flag void dirtyFlagChanged(bool state); //! Disable tools void disableTools(); //! The selection has changed: tell the property editor void selectionChanged(QList newSelection); //! Render an image please! void renderPostscript(QString psCode, double dpi, GLEDrawingObject *obj); private: //! The rendered pixmap QPixmap pixmap; //! The visibility of the grid bool gridVisible; //! The grid spacing QPointF gridSpacing; //! The resolution double dpi; //! Hash holding modifier states QHash modifier; //! The Grid GLEGrid *grid; //! Choose a point based on all the snaps QPointF snappedPoint(QPointF p, bool ignoreOrtho = false); QPointF snappedPointFromObject(QPointF p, QPointF* dontFind = NULL); //! Check that "p" is not equal to "dontFind" bool checkDontFind(const QPointF& p, QPointF* dontFind); //! Change the base point void changeLastPoint(QPointF p); //! Unselect all objects void unselectObjects(); //! Get maximum supported transform mode int minimumSupportedTransformMode(); //! Perform scaling of objects void performScale(const QPointF& snappedPosition); //! Inform objects that we are done with the transformation (they can re-render themselves now) void linearTransformDone(); QPointF lastPoint; QList osnapIntersectPoints; //! Are any objects selected? bool objectSelected; //! The current cursor position QPointF cursorPosition; //! The nearest grid point (equal to the above if no grid snap) QPointF snappedPosition; //! What snaps are activated? QHash snaps; //! The index of the current line in the line list int currentIndex; bool polarSnapFound; //! The current tool being used int currentTool; //! The list of lines QList objectList; //! The list of snap lines QList snapLineList; //! The list of points for the snap line list QList snapLinePoints; void createPolarSnaps(QPointF qtPoint); void clearPolarSnaps(); void updateSnapLines(QPointF qtPoint); //! A list of status bar messages QHash > statusMessages; //! Is it present? bool hasAMove; //! What is the index in the list of objects int amoveIndex; //! Are we drawing? bool isDrawing; //! Are we in an editing mode bool isEditMode; //! Has the drawing been changed bool dirty; //! Has it been changed since the last render bool newObjects; //! A record of the parent GLEMainWindow* mainWin; //! Enumerator used to describe what we're drawing (for status bar messages) enum { StartPoint, MidPoint, EndPoint, CircumferencePoint }; double polarStartAngle; double polarAngleIncrement; void processCommand(int command, QPointF pt = QPointF(0.0,0.0)); void clearRelativeOsnaps(); void completeNewLine(); void setLineEndPoint(QPointF endPoint); void createNewLine(QPointF startPoint); void completeNewTanLine(); void setTanLineEndPoint(QPointF endPoint); void createNewTanLine(QPointF startPoint); void completeNewPerpLine(); void setPerpLineEndPoint(QPointF endPoint); void createNewPerpLine(QPointF startPoint); void createNewCircle(QPointF centrePoint); void setCircleEdgePoint(QPointF edgePoint); void completeNewCircle(); void createNewEllipse(QPointF cornerPoint); void createNewTextObject(QPointF referencePoint); void setEllipseSecondCorner(QPointF cornerPoint); void completeNewEllipse(); void createNewArc(QPointF startPoint); void setArcEndPoint(QPointF endPoint); void setArcMidPoint(QPointF midPoint); void completeNewArc(); void setAmove(QPointF pt); void cancelCommand(); void deleteSelectedObjects(); GLEDrawingObject* getSingleSelectedObject(); void selectObjects(QPointF pt, bool multiSelect); void startMoving(const QPointF& pt); void findScaleOrigin(const QPointF& pt, int handle); //! Set the reference point of, e.g., text objects or GLE object blocks (tl,bl,tc,bc,tr,br,...) void setReferencePoint(const QPointF& pt); void selectObjectsSub(const QPointF& pt, GLEDrawingObject* object, bool multiSelect); void updateSelection(); void createSelectionHandles(); void deleteSelectionHandles(); void drawSelectionHandles(QPainter *p); void drawScaleHandles(QPainter *p); void drawRotationHandles(QPainter *p); bool isSelectedObjectSnap; bool isScaling; bool isMoving; bool isRotating; bool objectMoved; int selectionMode; double baseAngle; double lastAngle; //! The list of handles QHash handleList; QList CornerHandles; QList SideHandles; QPointF basePoint; QPointF scaleOrigin; QList extraPoints; GLEScript* gleScript; int baseObject; enum SelectionModes { SelectionMove, SelectionScale, SelectionRotate }; int oppositeHandleTo(int handle, bool *scale = 0); int grabbedHandle; // Pointer to the GLE interface GLEInterface *gleInterface; }; #endif gle-graphics-4.2.4c/src/gui/serverthread.h0000664000000000000000000001273311652073536017171 0ustar rootroot/*********************************************************************************** * QGLE - A Graphical Interface to GLE * * Copyright (C) 2006 A. S. Budden & J. Struyf * * * * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * * * Also add information on how to contact you by electronic and paper mail. * ***********************************************************************************/ #ifndef __GLESERVERTHREAD_H #define __GLESERVERTHREAD_H #include #include #include "qgle_definitions.h" #include "../gle/gle-interface/gle-interface.h" #include "fileinfo.h" #include "qgs.h" //#include "psfunctions.h" class GLERectangle; class GLEDrawingObject; //! TCP Server Thread definition /*! * This class contains the code to run a TCP server * and process the result of connections to that server. * It also performs the calls to GS and should send a QImage * to the drawingArea (via a queued signal) to make the on-screen * image update */ class GLEServerThread : public QThread { Q_OBJECT public: //! Constructor /*! As a thread, it should have a parent. The calling function * can specify a port to listen on */ GLEServerThread(QObject *parent, quint16 port = DEFAULT_PORT); ~GLEServerThread(); //! This starts the thread: run() void initialise(); //! Send a message back to GLE void sendMessageToGLEMinusP(const QString& msg, bool last); signals: //! This signal keeps the user notified of what's going on. void serverMessage(QString msg); //! This signal notifies QGLE that a new file has been opended using "gle -p" void gleMinusPRunned(QString file); protected: //! This is the main processing part of the thread. /*! * Starts a TCPServer and when the server receives a new connection it * gets the data from GLE */ void run(); private: //! Set true to quit bool abort; //! A mutex for variable protection QMutex mutex; //! The port to listen on quint16 port; QString message; QWaitCondition messageWaitCondition; }; class GLERenderThread : public QThread { Q_OBJECT public: GLERenderThread(QObject *parent); ~GLERenderThread(); enum { ToDoRenderEPSFromFile, ToDoRenderEPSFromMemory, ToDoRenderPDFFromMemory, ToDoRenderGLE }; //! Render GLE script void renderGLEToImage(GLEScript* script, const QString& outFile, double dpi, const QSize& area); //! Convert an EPS file to an image (dpi == 0 -> autoscale) void renderOutputFromMemoryToImage(GLEScript* script, const QString& epsFile, double dpi, const QSize& area); void renderEPSFromFileToImage(const QString& fname, double dpi, const QSize& area); //! Return GhostScript's output stream QString& getGhostScriptOutput(); //! Render arbitrary Postscript data void startRender(const GLERectangle& rect, double dpi); void nextRender(const char* postscriptCode); void endRender(QImage* result); signals: //! This signal keeps the user notified of what's going on. void serverMessage(QString msg); //! This signal notifies the user when an error occurs. void serverError(QString msg); //! This signal notifies the world that the dpi has changed void dpiChanged(double new_dpi); //! This signal notifies QGLE that internal image processing is complete void renderComplete(QImage image); protected: //! This is the main processing part of the thread. void run(); //! Convert an EPS file to an image (dpi == 0 -> autoscale) void renderEPSToImageInternalFromFile(const QString& fname, double dpi, const QSize& area); void renderEPSToImageInternalFromMemory(GLEScript* script, double dpi, const QSize& area); void renderPDFToImageInternalFromMemory(GLEScript* script, double dpi, const QSize& area); GSInterpreterLib* setupInterpreter(const QSize& area, double b1, double b2, double width, double height, double& dpi, bool& newDPI); void renderEPSDone(GSInterpreterLib* interpreter, double dpi, bool newDPI); protected: //! Set true to quit bool abort, restart; //! A mutex for variable protection QMutex mutex; QWaitCondition condition; //! What should I do? int todo; //! Render EPS arguments QString outFileName; double outFileDPI; QSize outFileArea; //! Render GLE arguments GLEScript* gleScript; //! Streams from GhostScript QString GhostScriptOutput; GSInterpreterLib *interpreter; }; #endif gle-graphics-4.2.4c/src/gui/downloader.cpp0000664000000000000000000002701711405446017017157 0ustar rootroot/*********************************************************************************** * QGLE - A Graphical Interface to GLE * * Copyright (C) 2006 A. S. Budden & J. Struyf * * * * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * * * Also add information on how to contact you by electronic and paper mail. * ***********************************************************************************/ #include #include #include "downloader.h" SimpleWizard::SimpleWizard(QWidget *parent) : QDialog(parent) { cancelButton = new QPushButton(tr("Cancel")); backButton = new QPushButton(tr("< &Back")); nextButton = new QPushButton(tr("Next >")); finishButton = new QPushButton(tr("&Finish")); connect(cancelButton, SIGNAL(clicked()), this, SLOT(reject())); connect(backButton, SIGNAL(clicked()), this, SLOT(backButtonClicked())); connect(nextButton, SIGNAL(clicked()), this, SLOT(nextButtonClicked())); // connect(finishButton, SIGNAL(clicked()), this, SLOT(accept())); buttonLayout = new QHBoxLayout; buttonLayout->addStretch(1); buttonLayout->addWidget(cancelButton); buttonLayout->addWidget(backButton); buttonLayout->addWidget(nextButton); buttonLayout->addWidget(finishButton); mainLayout = new QVBoxLayout; mainLayout->addLayout(buttonLayout); setLayout(mainLayout); } void SimpleWizard::setButtonEnabled(bool enable) { if (history.size() == numPages) finishButton->setEnabled(enable); else nextButton->setEnabled(enable); } void SimpleWizard::setNumPages(int n) { numPages = n; history.append(createPage(0)); switchPage(0); } void SimpleWizard::backButtonClicked() { nextButton->setEnabled(true); finishButton->setEnabled(true); QWidget *oldPage = history.takeLast(); switchPage(oldPage); delete oldPage; } void SimpleWizard::nextButtonClicked() { nextButton->setEnabled(true); finishButton->setEnabled(history.size() == numPages - 1); QWidget *oldPage = history.last(); history.append(createPage(history.size())); switchPage(oldPage); } void SimpleWizard::switchPage(QWidget *oldPage) { if (oldPage) { oldPage->hide(); mainLayout->removeWidget(oldPage); } QWidget *newPage = history.last(); mainLayout->insertWidget(0, newPage); newPage->show(); newPage->setFocus(); backButton->setEnabled(history.size() != 1); if (history.size() == numPages) { nextButton->setEnabled(false); finishButton->setDefault(true); } else { nextButton->setDefault(true); finishButton->setEnabled(false); } setWindowTitle(tr("Simple Wizard - Step %1 of %2") .arg(history.size()) .arg(numPages)); } QGLEDownloader::QGLEDownloader(QWidget *parent) : SimpleWizard(parent) { setNumPages(3); /* urlLineEdit = new QLineEdit("http://www.ietf.org/iesg/1rfc_index.txt"); urlLabel = new QLabel(tr("&URL:")); urlLabel->setBuddy(urlLineEdit); statusLabel = new QLabel(tr("Please enter the URL of a file you want to " "download.")); quitButton = new QPushButton(tr("Quit")); downloadButton = new QPushButton(tr("Download")); downloadButton->setDefault(true); progressDialog = new QProgressDialog(this); http = new QHttp(this); connect(urlLineEdit, SIGNAL(textChanged(const QString &)), this, SLOT(enableDownloadButton())); connect(http, SIGNAL(requestFinished(int, bool)), this, SLOT(httpRequestFinished(int, bool))); connect(http, SIGNAL(dataReadProgress(int, int)), this, SLOT(updateDataReadProgress(int, int))); connect(http, SIGNAL(responseHeaderReceived(const QHttpResponseHeader &)), this, SLOT(readResponseHeader(const QHttpResponseHeader &))); connect(progressDialog, SIGNAL(canceled()), this, SLOT(cancelDownload())); connect(downloadButton, SIGNAL(clicked()), this, SLOT(downloadFile())); connect(quitButton, SIGNAL(clicked()), this, SLOT(close())); QHBoxLayout *topLayout = new QHBoxLayout; topLayout->addWidget(urlLabel); topLayout->addWidget(urlLineEdit); QHBoxLayout *buttonLayout = new QHBoxLayout; buttonLayout->addStretch(1); buttonLayout->addWidget(downloadButton); buttonLayout->addWidget(quitButton); QVBoxLayout *mainLayout = new QVBoxLayout; mainLayout->addLayout(topLayout); mainLayout->addWidget(statusLabel); mainLayout->addLayout(buttonLayout); setLayout(mainLayout); setWindowTitle(tr("HTTP")); urlLineEdit->setFocus(); */ } QWidget *QGLEDownloader::createPage(int index) { switch (index) { case 0: firstPage = new QGLEDownloaderMirror(this); return firstPage; case 1: secondPage = new QGLEDownloaderDownload(this); return secondPage; case 2: thirdPage = new QGLEDownloaderInstall(this); return thirdPage; } return 0; } void QGLEDownloader::downloadFile() { QUrl url(urlLineEdit->text()); QFileInfo fileInfo(url.path()); QString fileName = fileInfo.fileName(); if (QFile::exists(fileName)) { QMessageBox::information(this, tr("HTTP"), tr("There already exists a file called %1 in " "the current directory.") .arg(fileName)); return; } file = new QFile(fileName); if (!file->open(QIODevice::WriteOnly)) { QMessageBox::information(this, tr("HTTP"), tr("Unable to save the file %1: %2.") .arg(fileName).arg(file->errorString())); delete file; file = 0; return; } http->setHost(url.host(), url.port() != -1 ? url.port() : 80); if (!url.userName().isEmpty()) http->setUser(url.userName(), url.password()); httpRequestAborted = false; httpGetId = http->get(url.path(), file); progressDialog->setWindowTitle(tr("HTTP")); progressDialog->setLabelText(tr("Downloading %1.").arg(fileName)); downloadButton->setEnabled(false); } void QGLEDownloader::cancelDownload() { statusLabel->setText(tr("Download canceled.")); httpRequestAborted = true; http->abort(); downloadButton->setEnabled(true); } void QGLEDownloader::httpRequestFinished(int requestId, bool error) { if (httpRequestAborted) { if (file) { file->close(); file->remove(); delete file; file = 0; } progressDialog->hide(); return; } if (requestId != httpGetId) return; progressDialog->hide(); file->close(); if (error) { file->remove(); QMessageBox::information(this, tr("HTTP"), tr("Download failed: %1.") .arg(http->errorString())); } else { QString fileName = QFileInfo(QUrl(urlLineEdit->text()).path()).fileName(); statusLabel->setText(tr("Downloaded %1 to current directory.").arg(fileName)); } downloadButton->setEnabled(true); delete file; file = 0; } void QGLEDownloader::readResponseHeader(const QHttpResponseHeader &responseHeader) { if (responseHeader.statusCode() != 200) { QMessageBox::information(this, tr("HTTP"), tr("Download failed: %1.") .arg(responseHeader.reasonPhrase())); httpRequestAborted = true; progressDialog->hide(); http->abort(); return; } } void QGLEDownloader::updateDataReadProgress(int bytesRead, int totalBytes) { if (httpRequestAborted) return; progressDialog->setMaximum(totalBytes); progressDialog->setValue(bytesRead); } void QGLEDownloader::accept() { } QGLEDownloaderMirror::QGLEDownloaderMirror(QGLEDownloader *wizard) : QWidget(wizard) { QVBoxLayout *layout = new QVBoxLayout(); layout->addWidget(new QLabel(tr("Download"))); layout->addWidget(downloadName = new QLineEdit()); downloadName->setReadOnly(true); layout->addWidget(new QLabel(tr("Select Mirror"))); layout->addWidget(mirrorList = new QListWidget()); setLayout(layout); http = new QHttp(this); file = new QBuffer(this); file->open(QBuffer::ReadWrite); connect(http, SIGNAL(requestFinished(int, bool)), this, SLOT(httpRequestFinished(int, bool))); connect(http, SIGNAL(responseHeaderReceived(const QHttpResponseHeader &)), this, SLOT(readResponseHeader(const QHttpResponseHeader &))); mirrorList->addItem(tr("Downloading mirror list")); mirrorList->setEnabled(false); QUrl url(tr("http://prdownloads.sourceforge.net/glx/gle_4.0.11_src.zip?download")); http->setHost(url.host(), url.port() != -1 ? url.port() : 80); if (!url.userName().isEmpty()) { http->setUser(url.userName(), url.password()); } httpGetId = http->get(url.path(), file); } void QGLEDownloaderMirror::httpRequestFinished(int requestId, bool error) { if (requestId != httpGetId) { return; } if (error) { QMessageBox::information(this, tr("Mirror List"), tr("Failed to download mirror list: %1.").arg(http->errorString())); } else { mirrorList->clear(); QRegExp rxurl(".*\\([^\\<]+)\\<\\/td\\>.*"); QRegExp rxmirr(".*\\?use_mirror\\=([^\"]+)\".*"); /* heanet logo Dublin, Ireland Europe Download */ QString line, item, url, toadd; file->reset(); while(!file->atEnd()) { QByteArray data = file->readLine(); QString line = QString::fromUtf8(data.constData()); if (rxmirr.exactMatch(line)) { toadd = url; if (item != "") { toadd += " ("; toadd += item; toadd += ")"; } mirrorList->addItem(toadd); } else if (rxurl.exactMatch(line)) { url = rxurl.capturedTexts()[1]; item = ""; } else if (rxname.exactMatch(line)) { if (item != "") item += ", "; item += rxname.capturedTexts()[1]; } } file->close(); mirrorList->setEnabled(true); } } void QGLEDownloaderMirror::readResponseHeader(const QHttpResponseHeader &responseHeader) { if (responseHeader.statusCode() != 200) { QMessageBox::information(this, tr("Mirror List"), tr("Failed to download mirror list: %1.").arg(responseHeader.reasonPhrase())); http->abort(); } } QGLEDownloaderDownload::QGLEDownloaderDownload(QGLEDownloader *wizard) : QWidget(wizard) { QVBoxLayout *layout = new QVBoxLayout(); layout->addWidget(new QLabel(tr("Downloading"))); layout->addWidget(new QProgressBar()); layout->addWidget(new QLabel(tr("Select Installation Directory"))); layout->addStretch(1); setLayout(layout); } QGLEDownloaderInstall::QGLEDownloaderInstall(QGLEDownloader *wizard) : QWidget(wizard) { QVBoxLayout *layout = new QVBoxLayout(); layout->addWidget(new QLabel(tr("Installing"))); layout->addWidget(new QProgressBar()); layout->addWidget(new QListWidget()); setLayout(layout); } gle-graphics-4.2.4c/src/gui/qgs.h0000664000000000000000000003776511656572360015304 0ustar rootroot/*************************************************************************** * Copyright (C) 2005 by Piotr Szymanski * * * * 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., 51 Franklin St, Fifth Floor, Boston, * * MA 02110-1301 USA * ***************************************************************************/ #ifndef _GSINTERPETERLIB_H_ #define _GSINTERPETERLIB_H_ #include #include #define GSDLLEXPORT #ifdef Q_WS_WIN #define _Windows #else #define GSDLLAPI #define GSDLLCALL #endif #include "gsinc/iapi.h" #include "gsinc/gdevdsp.h" #include "gsinc/ierrors.h" #include #define QGS_DISPLAY_32 0 #define QGS_DISPLAY_24 1 using namespace std; /** @namespace GSApiWrapper Namespace containing the callback functions for communication with the ghostscript library. */ namespace GSApiWrapper { int open(void* /*handle*/, void* /*device */ ); int preclose(void* /*handle*/, void * /* device */ ); int close(void* /*handle*/, void * /* device */ ); int presize(void* /*handle*/, void * /* device*/, int /* width*/, int /* height*/, int /* raster*/, unsigned int /* format */); int sync(void* /*handle*/, void * /* device */ ); int separation(void* /*handle*/, void * /* device*/, int /* comp_num*/, const char * /* name*/, unsigned short /* c*/, unsigned short /* m*/, unsigned short /* y*/, unsigned short /* k*/); int GSDLLCALL handleStdin (void* /*handle*/, char* buffer, int len ); int GSDLLCALL handleStdout(void* /*handle*/, const char* buffer, int len ); int GSDLLCALL handleStderr (void* /*handle*/, const char* buffer, int len ); int update(void* /*handle*/, void * /* device*/, int /* x*/, int /* y*/, int /* w*/, int /* h*/); int size(void* /*handle*/, void * /* device*/, int width, int height, int raster, unsigned int format, unsigned char *pimage); int page(void* /*handle*/, void * /* device*/, int /* copies*/, int /* flush*/); }; class GSError { public: QString m_name; //! the description of an error int m_code; //! the error code bool m_haserr; public: GSError(); ~GSError(); void setError(int code, QString msg); inline const QString& getName() const { return m_name; } inline int getCode() const { return m_code; } inline bool hasError() const { return m_haserr; } inline void clear() { m_haserr = false; } }; class GSLibFunctions { protected: QString m_LibGSLocation; #ifdef Q_WS_WIN HINSTANCE hmodule; #else void* hmodule; #endif public: PFN_gsapi_revision gsapi_revision; PFN_gsapi_new_instance gsapi_new_instance; PFN_gsapi_delete_instance gsapi_delete_instance; PFN_gsapi_set_stdio gsapi_set_stdio; PFN_gsapi_set_poll gsapi_set_poll; PFN_gsapi_set_display_callback gsapi_set_display_callback; PFN_gsapi_init_with_args gsapi_init_with_args; PFN_gsapi_run_string gsapi_run_string; PFN_gsapi_run_string_with_length gsapi_run_string_with_length; PFN_gsapi_run_string_begin gsapi_run_string_begin; PFN_gsapi_run_string_continue gsapi_run_string_continue; PFN_gsapi_run_string_end gsapi_run_string_end; PFN_gsapi_exit gsapi_exit; public: GSLibFunctions(); ~GSLibFunctions(); static GSLibFunctions* getInstance(); int loadLibrary(const QString& location, QString& last_error); void freeLibrary(); void resetFunctions(); bool isLoaded(); void tryLocation(const char* str); void tryLocationLoop(const char* prefix); QString getVersion(); int getVersionMajor(); static void StripWhiteSpace(QString& str); inline const QString& libGSLocation() { return m_LibGSLocation; } }; /** \class GSInterpreterLib @brief The Qt Ghostscript library wrapper The idea of this library is to provide a comfortable way of using the Ghostscript library without the need of going through its C API. Please check the examples to see how to use the Ghostscript library to render graphics and how to use it like you would use Ghostscript for converting between formats. */ class GSInterpreterLib : public QObject { Q_OBJECT protected: GSLibFunctions* m_gs; double m_OriginX; double m_OriginY; public: //! @enum MessageType information about the type of stdio communication in the io signal enum MessageType{ Input /*!< stdin information, ghostscript wants to read sth from stdin. Should not happen in this class, but if you subclass it, make sure to handle possible stdin requests. Ghostscript library reads from stdin rarely. */, Output /*!< stdout message, Ghostscript library wrote to stdout */ , Error /*!< stderr message, Ghostscript library wrote to stderr*/}; //! @typedef a QPair which first element is the beginning of a block in the file while the second is the end typedef QPair Position; //! @exception GSerror this exception gets thrown when Ghostscript library reports a critical error //! Creates an instance of Ghostscript library GSInterpreterLib(); //! Destroys the instance of Ghostscript library, nothing to cleanup afterwards ~GSInterpreterLib(); /** @brief Starts the Ghostscript library interpreter Starts the Ghostscript instance, sets the arguments, which default consist of papersize, antialiasing options, orientation, resolution, and platform fonts usage. The default options are not set directly by the developer, but are prepared from the data the developer set using relevant methods. In case the user used setGhostscriptArguments, those arguments are used instead of the default ones, useful when you need to use Ghostscript for noninteractive (no pixmaps generated) work, like converting from ps to pdf. The default values should be used when you need to normally display a file and you need images of the pages. Also this functions takes care of catching stdio communication if selected. As a result the stdio communication with Ghostscript takes place via the IO signal. Please note that stdio is different then communication with Ghostscript interpreter. In short, you will never need stdin and you can read stdout and stderror using the IO signal. @param setStdio enable catching the stdio communication */ bool start(bool setStdio=true); /** @brief Stops the Ghostscript instance if running (but does not delete it) */ bool stop(); //! @return Returns true if it library is already working on a page request //! @return Returns true if it library is ready to receive a new page request using the run function //! @return Returns true if Ghostscript interpreter is running bool running () { return m_running; } ; /** @brief Sends file data to Ghostscript library This functions takes care of putting the file's contents in the Ghostscript library. Parsing a file @param file a pointer to the FILE structure used by fread to send information to Ghostscript @param pos the beginning and ending of the data block in the file (usually the position of the page in file) @param sync whether to expect an image generated from the content specified by pos */ bool run(QFile& file); bool run(const string* data); bool startRender(); bool nextRender(const char* str); bool endRender(); bool hasError(); const GSError& getError(); /** @brief Enables progressive updating of the image Enabling progressive updating means, that before Finished() is emitted, Updated() signals are emmitted with the area that was updated. If disabled (by default disabled), @param progr enable/disable progressive updating */ void setGhostscriptArguments( const QStringList &list ); /** @brief Enable display setting This should be set to true if you are using the intepreter to render pages or in any way need a display device in your use of the Ghostscript library. If you do not need it (ex. you are just converting ps to pdf) set it to false. @param display enable/disable the display device */ void setDisplay( bool display = true); void setAlpha( bool alpha ); /** @brief Sets orientation of the document @param orientation the orientation of the page - 0 for 0 degrees, 1 for 90 etc. */ void setOrientation( int orientation ); /** @brief Sets size of the page in pixels @param w width @param h height */ void setSize( int w, int h ); /** @brief Sets the resolution of the image */ void setDPI(double dpi); /** @brief Enables buffering of stdout/stderr If buffered, all the output will be stored in a QString buffer and will be accessible by IObuffer() function. The io() signal will be emitted nevertheless. @param buffered Buffering enabled if true */ void setBuffered( bool buffered ); /** @brief Sets the magnification of the page ( @param magnify a magnification value (floating point, 0.35 means 35% of the real size) */ void setMagnify( double magnify ); /** @brief Sets the paper size/format of the document @param media string containing a valid Ghostscript papersize */ void setMedia (const QString &media) ; /** @brief Sets the number of bits used for antialiasing The number of bits for antialiasing, 1 disables. @param text number of text antialiasing bits (4 is recommended for good quality and still fast antialiasing) @param graphics number of graphics antialiasing bits (2 is recommended for good quality and still fast antialiasing) */ void setAABits(int text=1, int graphics=1); /** @brief Enables or disables platform fonts @param pfonts decides whether Ghostscript library should use the fonts available in the system (true) or only the ones embedded in the document (false), by default true */ void setPlatformFonts(bool pfonts=true); const QImage& getImage(); void setOrigin(double ox, double oy); //! @brief Returns the IO buffer const QString& IOBuffer() { return m_buffer;}; QString getOutpuStreamText(); private: bool sendOriginTranslate(); protected: /** @brief Describing how stuff works Ghostscript will do callbacks after it is started and as also as it receives content to render. First open will be called upon opening the device. Second there will be a presize with information about the size, here we allocate the QImage; Third there will be an update called with the whole page, we must ignore it, as it was called before size was. Fourth the size will be called with the pointer to our image. Fifth a series of update will be called with coordinates to update, not width is the width and not x+width, you need to add the x manually. Sixth there will a page called which tells you that rendering is done. Seventh a sync after the page tells you everything is finished. If closing, preclose will appear before close. */ // handling communication with libgs int presize(void * /* device*/, int /* width*/, int /* height*/, int /* raster*/, unsigned int /* format */); int gs_output ( const char* buffer, int len ); int gs_error ( const char* buffer, int len ); int size(void * /* device*/, int width, int height, int raster, unsigned int format, unsigned char *pimage); int page(void * /* device*/, int /* copies*/, int /* flush*/); //! Checks if code is an error code //! @return returns true if no error, if non-critical error returns false, if critical error, throws GSerror //! @throw GSerror throws GSerror if code is critical error bool handleExit(int code); // state bools bool m_running; //! True if an instance is running bool m_ready; //! True if not processing any data request in run() int m_cnvmode; bool m_alpha; unsigned char* m_conv; // Parameter holders // Orientation of the page (a multiplicant of 90 degrees) // additional info int m_orientation; //! Holds the orientation of the page @sa setOrientation() double m_magnify; //! Magnification @sa setMagnify() // Size of the image we want to get int m_width; //! Expected width of the image int m_height; //! Expected height of the image double m_dpi; //! Resolution QString m_media; //! Papersize int m_Gwidth; //! Width of the image buffer we received from Ghostscript library int m_Gheight; //! Height of the image buffer we received from Ghostscript library unsigned char * m_imageChar; //! Image buffer we received from Ghostscript library unsigned int m_format; //! Format of the image stored in the buffer, if not changed in a subclass, it is 32bit RGBx int m_raster; //! Size of a horizontal row (y-line) in the image buffer int m_textaa; //! Number of bits used for text antialiasing @sa setAABits() int m_graphaa; //! Number of bits used for graphics antialiasing @sa setAABits() bool m_pfonts; //! True if platform fonts enabled @sa setPlatformFonts() // toggle display setting bool m_display; //! True if display usage enabled @sa setDisplay() bool m_buffered; //! True if buffering stdout/stderr @sa setBuffered() /** The following tell us if we are in a position to update in progressive rendering, from GS: * The caller should not access the image buffer: * - before the first sync * - between presize and size * - after preclose */ bool m_wasSize; //! True if size() was called by the Ghostscript library and the image buffer was set bool m_wasPage; //! True if page() was called by the Ghostscript library and the page rendering is finished QImage m_img; //! Image on which we do the rendering void *ghostScriptInstance; //! Pointer to the Ghostscript library instance QString m_buffer; //! The IO buffer private: void argsToChar(); int m_argsCCount; char** m_argsChar; QStringList m_args; QStringList m_internalArgs; GSError m_error; QString m_Output; friend int GSApiWrapper::open(void* /*handle*/,void* /*device */ ); friend int GSApiWrapper::preclose(void* /*handle*/, void * /* device */ ); friend int GSApiWrapper::close(void* /*handle*/, void * /* device */ ); friend int GSApiWrapper::presize(void* /*handle*/, void * /* device*/, int /* width*/, int /* height*/, int /* raster*/, unsigned int /* format */); friend int GSApiWrapper::sync(void* /*handle*/, void * /* device */ ); friend int GSApiWrapper::separation(void* /*handle*/, void * /* device*/, int /* comp_num*/, const char * /* name*/, unsigned short /* c*/, unsigned short /* m*/, unsigned short /* y*/, unsigned short /* k*/); friend int GSApiWrapper::handleStdin(void* /*handle*/, char* buffer, int len ); friend int GSApiWrapper::handleStdout(void* /*handle*/, const char* buffer, int len ); friend int GSApiWrapper::handleStderr(void* /*handle*/, const char* buffer, int len ); friend int GSApiWrapper::update(void* /*handle*/, void * /* device*/, int /* x*/, int /* y*/, int /* w*/, int /* h*/); friend int GSApiWrapper::size(void* /*handle*/, void * /* device*/, int width, int height, int raster, unsigned int format, unsigned char *pimage); friend int GSApiWrapper::page(void* /*handle*/,void * /* device*/, int /* copies*/, int /* flush*/); }; #endif gle-graphics-4.2.4c/src/gui/gsinc/gscdefs.h0000664000000000000000000000600211405446017017176 0ustar rootroot/* Copyright (C) 2001-2006 artofcode LLC. All Rights Reserved. This software is provided AS-IS with no warranty, either express or implied. This software is distributed under license and may not be copied, modified or distributed except as expressly authorized under the terms of that license. Refer to licensing information at http://www.artifex.com/ or contact Artifex Software, Inc., 7 Mt. Lassen Drive - Suite A-134, San Rafael, CA 94903, U.S.A., +1(415)492-9861, for further information. */ /*$Id: gscdefs.h,v 1.3 2007/08/21 21:39:46 jeans Exp $ */ /* Prototypes for configuration definitions in gconfig.c. */ #ifndef gscdefs_INCLUDED # define gscdefs_INCLUDED #include "gconfigv.h" /* * This file may be #included in places that don't even have stdpre.h, * so it mustn't use any Ghostscript definitions in any code that is * actually processed here (as opposed to being part of a macro * definition). */ /* Miscellaneous system constants (read-only systemparams). */ /* They should all be const, but one application needs some of them */ /* to be writable.... */ #if SYSTEM_CONSTANTS_ARE_WRITABLE # define CONFIG_CONST /* */ #else # define CONFIG_CONST const #endif extern CONFIG_CONST long gs_buildtime; extern const char *CONFIG_CONST gs_copyright; extern const char *CONFIG_CONST gs_product; extern const char *CONFIG_CONST gs_productfamily; extern CONFIG_CONST long gs_revision; extern CONFIG_CONST long gs_revisiondate; extern CONFIG_CONST long gs_serialnumber; /* Installation directories and files */ extern const char *const gs_doc_directory; extern const char *const gs_lib_default_path; extern const char *const gs_init_file; /* Resource tables. In order to avoid importing a large number of types, */ /* we only provide macros for some externs, not the externs themselves. */ #define extern_gx_device_halftone_list()\ typedef DEVICE_HALFTONE_RESOURCE_PROC((*gx_dht_proc));\ extern const gx_dht_proc gx_device_halftone_list[] #define extern_gx_image_class_table()\ extern const gx_image_class_t gx_image_class_table[] extern const unsigned gx_image_class_table_count; #define extern_gx_image_type_table()\ extern const gx_image_type_t * const gx_image_type_table[] extern const unsigned gx_image_type_table_count; /* We need the extra typedef so that the const will apply to the table. */ #define extern_gx_init_table()\ typedef init_proc((*gx_init_proc));\ extern const gx_init_proc gx_init_table[] #define extern_gx_io_device_table()\ extern const gx_io_device * const gx_io_device_table[] extern const unsigned gx_io_device_table_count; /* Return the list of device prototypes, a NULL list of their structure */ /* descriptors (no longer used), and (as the value) the length of the lists. */ #define extern_gs_lib_device_list()\ int gs_lib_device_list(const gx_device * const **plist,\ gs_memory_struct_type_t **pst) /* find a compositor by name */ #define extern_gs_find_compositor() \ const gs_composite_type_t * gs_find_compositor(int comp_id) #endif /* gscdefs_INCLUDED */ gle-graphics-4.2.4c/src/gui/gsinc/gdevdsp.h0000664000000000000000000002332411405446017017222 0ustar rootroot/* Copyright (C) 2001-2006 artofcode LLC. All Rights Reserved. This software is provided AS-IS with no warranty, either express or implied. This software is distributed under license and may not be copied, modified or distributed except as expressly authorized under the terms of that license. Refer to licensing information at http://www.artifex.com/ or contact Artifex Software, Inc., 7 Mt. Lassen Drive - Suite A-134, San Rafael, CA 94903, U.S.A., +1(415)492-9861, for further information. */ /* $Id: gdevdsp.h,v 1.3 2007/08/21 21:39:46 jeans Exp $ */ /* gdevdsp.h - callback structure for DLL based display device */ #ifndef gdevdsp_INCLUDED # define gdevdsp_INCLUDED /* * The callback structure must be provided by calling the * Ghostscript APIs in the following order: * gsapi_new_instance(&minst); * gsapi_set_display_callback(minst, callback); * gsapi_init_with_args(minst, argc, argv); * * Supported parameters and default values are: * -sDisplayHandle=16#04d2 or 1234 string * Caller supplied handle as a decimal or hexadecimal number * in a string. On 32-bit platforms, it may be set * using -dDisplayHandle=1234 for backward compatibility. * Included as first parameter of all callback functions. * * -dDisplayFormat=0 long * Color format specified using bitfields below. * Included as argument of display_size() and display_presize() * These can only be changed when the device is closed. * * The second parameter of all callback functions "void *device" * is the address of the Ghostscript display device instance. * The arguments "void *handle" and "void *device" together * uniquely identify an instance of the display device. * * A typical sequence of callbacks would be * open, presize, memalloc, size, sync, page * presize, memfree, memalloc, size, sync, page * preclose, memfree, close * The caller should not access the image buffer: * - before the first sync * - between presize and size * - after preclose * If opening the device fails, you might see the following: * open, presize, memalloc, memfree, close * */ #define DISPLAY_VERSION_MAJOR 2 #define DISPLAY_VERSION_MINOR 0 #define DISPLAY_VERSION_MAJOR_V1 1 /* before separation format was added */ #define DISPLAY_VERSION_MINOR_V1 0 /* The display format is set by a combination of the following bitfields */ /* Define the color space alternatives */ typedef enum { DISPLAY_COLORS_NATIVE = (1<<0), DISPLAY_COLORS_GRAY = (1<<1), DISPLAY_COLORS_RGB = (1<<2), DISPLAY_COLORS_CMYK = (1<<3), DISPLAY_COLORS_SEPARATION = (1<<19) } DISPLAY_FORMAT_COLOR; #define DISPLAY_COLORS_MASK 0x8000fL /* Define whether alpha information, or an extra unused bytes is included */ /* DISPLAY_ALPHA_FIRST and DISPLAY_ALPHA_LAST are not implemented */ typedef enum { DISPLAY_ALPHA_NONE = (0<<4), DISPLAY_ALPHA_FIRST = (1<<4), DISPLAY_ALPHA_LAST = (1<<5), DISPLAY_UNUSED_FIRST = (1<<6), /* e.g. Mac xRGB */ DISPLAY_UNUSED_LAST = (1<<7) /* e.g. Windows BGRx */ } DISPLAY_FORMAT_ALPHA; #define DISPLAY_ALPHA_MASK 0x00f0L /* Define the depth per component for DISPLAY_COLORS_GRAY, * DISPLAY_COLORS_RGB and DISPLAY_COLORS_CMYK, * or the depth per pixel for DISPLAY_COLORS_NATIVE * DISPLAY_DEPTH_2 and DISPLAY_DEPTH_12 have not been tested. */ typedef enum { DISPLAY_DEPTH_1 = (1<<8), DISPLAY_DEPTH_2 = (1<<9), DISPLAY_DEPTH_4 = (1<<10), DISPLAY_DEPTH_8 = (1<<11), DISPLAY_DEPTH_12 = (1<<12), DISPLAY_DEPTH_16 = (1<<13) /* unused (1<<14) */ /* unused (1<<15) */ } DISPLAY_FORMAT_DEPTH; #define DISPLAY_DEPTH_MASK 0xff00L /* Define whether Red/Cyan should come first, * or whether Blue/Black should come first */ typedef enum { DISPLAY_BIGENDIAN = (0<<16), /* Red/Cyan first */ DISPLAY_LITTLEENDIAN = (1<<16) /* Blue/Black first */ } DISPLAY_FORMAT_ENDIAN; #define DISPLAY_ENDIAN_MASK 0x00010000L /* Define whether the raster starts at the top or bottom of the bitmap */ typedef enum { DISPLAY_TOPFIRST = (0<<17), /* Unix, Mac */ DISPLAY_BOTTOMFIRST = (1<<17) /* Windows */ } DISPLAY_FORMAT_FIRSTROW; #define DISPLAY_FIRSTROW_MASK 0x00020000L /* Define whether packing RGB in 16-bits should use 555 * or 565 (extra bit for green) */ typedef enum { DISPLAY_NATIVE_555 = (0<<18), DISPLAY_NATIVE_565 = (1<<18) } DISPLAY_FORMAT_555; #define DISPLAY_555_MASK 0x00040000L /* Define the row alignment, which must be equal to or greater than * the size of a pointer. * The default (DISPLAY_ROW_ALIGN_DEFAULT) is the size of a pointer, * 4 bytes (DISPLAY_ROW_ALIGN_4) on 32-bit systems or 8 bytes * (DISPLAY_ROW_ALIGN_8) on 64-bit systems. */ typedef enum { DISPLAY_ROW_ALIGN_DEFAULT = (0<<20), /* DISPLAY_ROW_ALIGN_1 = (1<<20), */ /* not currently possible */ /* DISPLAY_ROW_ALIGN_2 = (2<<20), */ /* not currently possible */ DISPLAY_ROW_ALIGN_4 = (3<<20), DISPLAY_ROW_ALIGN_8 = (4<<20), DISPLAY_ROW_ALIGN_16 = (5<<20), DISPLAY_ROW_ALIGN_32 = (6<<20), DISPLAY_ROW_ALIGN_64 = (7<<20) } DISPLAY_FORMAT_ROW_ALIGN; #define DISPLAY_ROW_ALIGN_MASK 0x00700000L #ifndef display_callback_DEFINED #define display_callback_DEFINED typedef struct display_callback_s display_callback; #endif /* * Note that for Windows, the display callback functions are * cdecl, not stdcall. This differs from those in iapi.h. */ struct display_callback_s { /* Size of this structure */ /* Used for checking if we have been handed a valid structure */ int size; /* Major version of this structure */ /* The major version number will change if this structure changes. */ int version_major; /* Minor version of this structure */ /* The minor version number will change if new features are added * without changes to this structure. For example, a new color * format. */ int version_minor; /* New device has been opened */ /* This is the first event from this device. */ int (*display_open)(void *handle, void *device); /* Device is about to be closed. */ /* Device will not be closed until this function returns. */ int (*display_preclose)(void *handle, void *device); /* Device has been closed. */ /* This is the last event from this device. */ int (*display_close)(void *handle, void *device); /* Device is about to be resized. */ /* Resize will only occur if this function returns 0. */ /* raster is byte count of a row. */ int (*display_presize)(void *handle, void *device, int width, int height, int raster, unsigned int format); /* Device has been resized. */ /* New pointer to raster returned in pimage */ int (*display_size)(void *handle, void *device, int width, int height, int raster, unsigned int format, unsigned char *pimage); /* flushpage */ int (*display_sync)(void *handle, void *device); /* showpage */ /* If you want to pause on showpage, then don't return immediately */ int (*display_page)(void *handle, void *device, int copies, int flush); /* Notify the caller whenever a portion of the raster is updated. */ /* This can be used for cooperative multitasking or for * progressive update of the display. * This function pointer may be set to NULL if not required. */ int (*display_update)(void *handle, void *device, int x, int y, int w, int h); /* Allocate memory for bitmap */ /* This is provided in case you need to create memory in a special * way, e.g. shared. If this is NULL, the Ghostscript memory device * allocates the bitmap. This will only called to allocate the * image buffer. The first row will be placed at the address * returned by display_memalloc. */ void *(*display_memalloc)(void *handle, void *device, unsigned long size); /* Free memory for bitmap */ /* If this is NULL, the Ghostscript memory device will free the bitmap */ int (*display_memfree)(void *handle, void *device, void *mem); /* Added in V2 */ /* When using separation color space (DISPLAY_COLORS_SEPARATION), * give a mapping for one separation component. * This is called for each new component found. * It may be called multiple times for each component. * It may be called at any time between display_size * and display_close. * The client uses this to map from the separations to CMYK * and hence to RGB for display. * GS must only use this callback if version_major >= 2. * The unsigned short c,m,y,k values are 65535 = 1.0. * This function pointer may be set to NULL if not required. */ int (*display_separation)(void *handle, void *device, int component, const char *component_name, unsigned short c, unsigned short m, unsigned short y, unsigned short k); }; /* This is the V1 structure, before separation format was added */ struct display_callback_v1_s { int size; int version_major; int version_minor; int (*display_open)(void *handle, void *device); int (*display_preclose)(void *handle, void *device); int (*display_close)(void *handle, void *device); int (*display_presize)(void *handle, void *device, int width, int height, int raster, unsigned int format); int (*display_size)(void *handle, void *device, int width, int height, int raster, unsigned int format, unsigned char *pimage); int (*display_sync)(void *handle, void *device); int (*display_page)(void *handle, void *device, int copies, int flush); int (*display_update)(void *handle, void *device, int x, int y, int w, int h); void *(*display_memalloc)(void *handle, void *device, unsigned long size); int (*display_memfree)(void *handle, void *device, void *mem); }; #define DISPLAY_CALLBACK_V1_SIZEOF sizeof(struct display_callback_v1_s) #endif /* gdevdsp_INCLUDED */ gle-graphics-4.2.4c/src/gui/gsinc/ierrors.h0000664000000000000000000001130711405446017017251 0ustar rootroot/* Copyright (C) 2001-2006 artofcode LLC. All Rights Reserved. This software is provided AS-IS with no warranty, either express or implied. This software is distributed under license and may not be copied, modified or distributed except as expressly authorized under the terms of that license. Refer to licensing information at http://www.artifex.com/ or contact Artifex Software, Inc., 7 Mt. Lassen Drive - Suite A-134, San Rafael, CA 94903, U.S.A., +1(415)492-9861, for further information. */ /* $Id: ierrors.h,v 1.3 2008/06/14 19:41:57 jeans Exp $ */ /* Definition of error codes */ #ifndef ierrors_INCLUDED # define ierrors_INCLUDED /* * DO NOT USE THIS FILE IN THE GRAPHICS LIBRARY. * THIS FILE IS PART OF THE POSTSCRIPT INTERPRETER. * USE gserrors.h IN THE LIBRARY. */ /* * A procedure that may return an error always returns * a non-negative value (zero, unless otherwise noted) for success, * or negative for failure. * We use ints rather than an enum to avoid a lot of casting. */ /* Define the error name table */ extern const char *const gs_error_names[]; /* ------ PostScript Level 1 errors ------ */ #define e_unknownerror (-1) /* unknown error */ #define e_dictfull (-2) #define e_dictstackoverflow (-3) #define e_dictstackunderflow (-4) #define e_execstackoverflow (-5) #define e_interrupt (-6) /* We also need to define gs_error_interrupt, for gpcheck.h. */ #undef gs_error_interrupt #define gs_error_interrupt e_interrupt #define e_invalidaccess (-7) #define e_invalidexit (-8) #define e_invalidfileaccess (-9) #define e_invalidfont (-10) #define e_invalidrestore (-11) #define e_ioerror (-12) #define e_limitcheck (-13) #define e_nocurrentpoint (-14) #define e_rangecheck (-15) #define e_stackoverflow (-16) #define e_stackunderflow (-17) #define e_syntaxerror (-18) #define e_timeout (-19) #define e_typecheck (-20) #define e_undefined (-21) #define e_undefinedfilename (-22) #define e_undefinedresult (-23) #define e_unmatchedmark (-24) #define e_VMerror (-25) #define LEVEL1_ERROR_NAMES\ "unknownerror", "dictfull", "dictstackoverflow", "dictstackunderflow",\ "execstackoverflow", "interrupt", "invalidaccess", "invalidexit",\ "invalidfileaccess", "invalidfont", "invalidrestore", "ioerror",\ "limitcheck", "nocurrentpoint", "rangecheck", "stackoverflow",\ "stackunderflow", "syntaxerror", "timeout", "typecheck", "undefined",\ "undefinedfilename", "undefinedresult", "unmatchedmark", "VMerror" /* ------ Additional Level 2 and DPS errors ------ */ #define e_configurationerror (-26) #define e_invalidcontext (-27) #define e_undefinedresource (-28) #define e_unregistered (-29) /* invalidid is for the NeXT DPS extension. */ #define e_invalidid (-30) #define LEVEL2_ERROR_NAMES\ "configurationerror", "invalidcontext", "undefinedresource",\ "unregistered", "invalidid" #define ERROR_NAMES LEVEL1_ERROR_NAMES, LEVEL2_ERROR_NAMES /* ------ Pseudo-errors used internally ------ */ /* * Internal code for a fatal error. * gs_interpret also returns this for a .quit with a positive exit code. */ #define e_Fatal (-100) /* * Internal code for the .quit operator. * The real quit code is an integer on the operand stack. * gs_interpret returns this only for a .quit with a zero exit code. */ #define e_Quit (-101) /* * Internal code for a normal exit from the interpreter. * Do not use outside of interp.c. */ #define e_InterpreterExit (-102) /* * Internal code that indicates that a procedure has been stored in the * remap_proc of the graphics state, and should be called before retrying * the current token. This is used for color remapping involving a call * back into the interpreter -- inelegant, but effective. */ #define e_RemapColor (-103) /* * Internal code to indicate we have underflowed the top block * of the e-stack. */ #define e_ExecStackUnderflow (-104) /* * Internal code for the vmreclaim operator with a positive operand. * We need to handle this as an error because otherwise the interpreter * won't reload enough of its state when the operator returns. */ #define e_VMreclaim (-105) /* * Internal code for requesting more input from run_string. */ #define e_NeedInput (-106) /* * Internal code for stdin callout. */ #define e_NeedStdin (-107) /* * Internal code for stdout callout. */ #define e_NeedStdout (-108) /* * Internal code for stderr callout. */ #define e_NeedStderr (-109) /* * Internal code for a normal exit when usage info is displayed. * This allows Window versions of Ghostscript to pause until * the message can be read. */ #define e_Info (-110) /* * Define which error codes require re-executing the current object. */ #define ERROR_IS_INTERRUPT(ecode)\ ((ecode) == e_interrupt || (ecode) == e_timeout) #endif /* ierrors_INCLUDED */ gle-graphics-4.2.4c/src/gui/gsinc/LICENSE0000664000000000000000000000245211405446017016421 0ustar rootroot The files in this directory were taken from GPL GhostScript 8.54 This is the relevant license information: The files in the src, lib, toolbin, examples, doc and man directories (folders) and any subdirectories (sub-folders) thereof are part of GPL Ghostscript. The files in the Resource directory and any subdirectories thereof are also part of GPL Ghostscript, with the explicit exception of the files in the CMap subdirectory. The CMap files are copyright Adobe Systems Incorporated and covered by a separate license which permits only verbatim distribution. GPL Ghostscript is free software; you can redistribute it and/or modify it under the terms of version 2 of the GNU General Public License as published by the Free Software Foundation. GPL Ghostscript 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 so you can know your rights and responsibilities. It should be in a file named doc/COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place Suite 330, Boston, MA 02111-1307, USA. gle-graphics-4.2.4c/src/gui/gsinc/iapi.h0000664000000000000000000002340411405446017016507 0ustar rootroot/* Copyright (C) 2001-2006 artofcode LLC. All Rights Reserved. This software is provided AS-IS with no warranty, either express or implied. This software is distributed under license and may not be copied, modified or distributed except as expressly authorized under the terms of that license. Refer to licensing information at http://www.artifex.com/ or contact Artifex Software, Inc., 7 Mt. Lassen Drive - Suite A-134, San Rafael, CA 94903, U.S.A., +1(415)492-9861, for further information. */ /* $Id: iapi.h,v 1.3 2007/08/21 21:39:46 jeans Exp $ */ /* * Public API for Ghostscript interpreter * for use both as DLL and for static linking. * * Should work for Windows, OS/2, Linux, Mac. * * DLL exported functions should be as similar as possible to imain.c * You will need to include "ierrors.h". * * Current problems: * 1. Ghostscript does not support multiple instances. * 2. Global variables in gs_main_instance_default() * and gsapi_instance_counter */ /* Exported functions may need different prefix * GSDLLEXPORT marks functions as exported * GSDLLAPI is the calling convention used on functions exported * by Ghostscript * GSDLLCALL is used on callback functions called by Ghostscript * When you include this header file in the caller, you may * need to change the definitions by defining these * before including this header file. * Make sure you get the calling convention correct, otherwise your * program will crash either during callbacks or soon after returning * due to stack corruption. */ #ifndef iapi_INCLUDED # define iapi_INCLUDED #ifdef __cplusplus extern "C" { #endif #if defined(_WINDOWS_) || defined(__WINDOWS__) # ifndef _Windows # define _Windows # endif #endif #ifdef _Windows # ifndef GSDLLEXPORT # define GSDLLEXPORT __declspec(dllexport) # endif # ifndef GSDLLAPI # define GSDLLAPI __stdcall # endif # ifndef GSDLLCALL # define GSDLLCALL __stdcall # endif #endif /* _Windows */ #if defined(OS2) && defined(__IBMC__) # ifndef GSDLLAPI # define GSDLLAPI _System # endif # ifndef GSDLLCALL # define GSDLLCALL _System # endif #endif /* OS2 && __IBMC */ #ifdef __MACOS__ # pragma export on #endif #ifndef GSDLLEXPORT # define GSDLLEXPORT #endif #ifndef GSDLLAPI # define GSDLLAPI #endif #ifndef GSDLLCALL # define GSDLLCALL #endif #if defined(__IBMC__) # define GSDLLAPIPTR * GSDLLAPI # define GSDLLCALLPTR * GSDLLCALL #else # define GSDLLAPIPTR GSDLLAPI * # define GSDLLCALLPTR GSDLLCALL * #endif #ifndef display_callback_DEFINED # define display_callback_DEFINED typedef struct display_callback_s display_callback; #endif typedef struct gsapi_revision_s { const char *product; const char *copyright; long revision; long revisiondate; } gsapi_revision_t; /* Get version numbers and strings. * This is safe to call at any time. * You should call this first to make sure that the correct version * of the Ghostscript is being used. * pr is a pointer to a revision structure. * len is the size of this structure in bytes. * Returns 0 if OK, or if len too small (additional parameters * have been added to the structure) it will return the required * size of the structure. */ GSDLLEXPORT int GSDLLAPI gsapi_revision(gsapi_revision_t *pr, int len); /* * WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING * Ghostscript supports only one instance. * The current implementation uses a global static instance * counter to make sure that only a single instance is used. * If you try to create two instances, the second attempt * will return < 0 and set pinstance to NULL. * WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING */ /* Create a new instance of Ghostscript. * This instance is passed to most other API functions. * The caller_handle will be provided to callback functions. */ GSDLLEXPORT int GSDLLAPI gsapi_new_instance(void **pinstance, void *caller_handle); /* * WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING * Ghostscript supports only one instance. * The current implementation uses a global static instance * counter to make sure that only a single instance is used. * WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING */ /* Destroy an instance of Ghostscript * Before you call this, Ghostscript must have finished. * If Ghostscript has been initialised, you must call gsapi_exit() * before gsapi_delete_instance. */ GSDLLEXPORT void GSDLLAPI gsapi_delete_instance(void *instance); /* Set the callback functions for stdio * The stdin callback function should return the number of * characters read, 0 for EOF, or -1 for error. * The stdout and stderr callback functions should return * the number of characters written. * If a callback address is NULL, the real stdio will be used. */ GSDLLEXPORT int GSDLLAPI gsapi_set_stdio(void *instance, int (GSDLLCALLPTR stdin_fn)(void *caller_handle, char *buf, int len), int (GSDLLCALLPTR stdout_fn)(void *caller_handle, const char *str, int len), int (GSDLLCALLPTR stderr_fn)(void *caller_handle, const char *str, int len)); /* Set the callback function for polling. * This is used for handling window events or cooperative * multitasking. This function will only be called if * Ghostscript was compiled with CHECK_INTERRUPTS * as described in gpcheck.h. * The polling function should return 0 if all is well, * and negative if it wants ghostscript to abort. * The polling function must be fast. */ GSDLLEXPORT int GSDLLAPI gsapi_set_poll(void *instance, int (GSDLLCALLPTR poll_fn)(void *caller_handle)); /* Set the display device callback structure. * If the display device is used, this must be called * after gsapi_new_instance() and before gsapi_init_with_args(). * See gdevdisp.h for more details. */ GSDLLEXPORT int GSDLLAPI gsapi_set_display_callback( void *instance, display_callback *callback); /* Initialise the interpreter. * This calls gs_main_init_with_args() in imainarg.c * 1. If quit or EOF occur during gsapi_init_with_args(), * the return value will be e_Quit. This is not an error. * You must call gsapi_exit() and must not call any other * gsapi_XXX functions. * 2. If usage info should be displayed, the return value will be e_Info * which is not an error. Do not call gsapi_exit(). * 3. Under normal conditions this returns 0. You would then * call one or more gsapi_run_*() functions and then finish * with gsapi_exit(). */ GSDLLEXPORT int GSDLLAPI gsapi_init_with_args(void *instance, int argc, char **argv); /* * The gsapi_run_* functions are like gs_main_run_* except * that the error_object is omitted. * If these functions return <= -100, either quit or a fatal * error has occured. You then call gsapi_exit() next. * The only exception is gsapi_run_string_continue() * which will return e_NeedInput if all is well. */ GSDLLEXPORT int GSDLLAPI gsapi_run_string_begin(void *instance, int user_errors, int *pexit_code); GSDLLEXPORT int GSDLLAPI gsapi_run_string_continue(void *instance, const char *str, unsigned int length, int user_errors, int *pexit_code); GSDLLEXPORT int GSDLLAPI gsapi_run_string_end(void *instance, int user_errors, int *pexit_code); GSDLLEXPORT int GSDLLAPI gsapi_run_string_with_length(void *instance, const char *str, unsigned int length, int user_errors, int *pexit_code); GSDLLEXPORT int GSDLLAPI gsapi_run_string(void *instance, const char *str, int user_errors, int *pexit_code); GSDLLEXPORT int GSDLLAPI gsapi_run_file(void *instance, const char *file_name, int user_errors, int *pexit_code); /* Exit the interpreter. * This must be called on shutdown if gsapi_init_with_args() * has been called, and just before gsapi_delete_instance(). */ GSDLLEXPORT int GSDLLAPI gsapi_exit(void *instance); /* Visual Tracer */ /* This function is only for debug purpose clients */ struct vd_trace_interface_s; GSDLLEXPORT void GSDLLAPI gsapi_set_visual_tracer(struct vd_trace_interface_s *I); /* function prototypes */ typedef int (GSDLLAPIPTR PFN_gsapi_revision)( gsapi_revision_t *pr, int len); typedef int (GSDLLAPIPTR PFN_gsapi_new_instance)( void **pinstance, void *caller_handle); typedef void (GSDLLAPIPTR PFN_gsapi_delete_instance)( void *instance); typedef int (GSDLLAPIPTR PFN_gsapi_set_stdio)(void *instance, int (GSDLLCALLPTR stdin_fn)(void *caller_handle, char *buf, int len), int (GSDLLCALLPTR stdout_fn)(void *caller_handle, const char *str, int len), int (GSDLLCALLPTR stderr_fn)(void *caller_handle, const char *str, int len)); typedef int (GSDLLAPIPTR PFN_gsapi_set_poll)(void *instance, int(GSDLLCALLPTR poll_fn)(void *caller_handle)); typedef int (GSDLLAPIPTR PFN_gsapi_set_display_callback)( void *instance, display_callback *callback); typedef int (GSDLLAPIPTR PFN_gsapi_init_with_args)( void *instance, int argc, char **argv); typedef int (GSDLLAPIPTR PFN_gsapi_run_string_begin)( void *instance, int user_errors, int *pexit_code); typedef int (GSDLLAPIPTR PFN_gsapi_run_string_continue)( void *instance, const char *str, unsigned int length, int user_errors, int *pexit_code); typedef int (GSDLLAPIPTR PFN_gsapi_run_string_end)( void *instance, int user_errors, int *pexit_code); typedef int (GSDLLAPIPTR PFN_gsapi_run_string_with_length)( void *instance, const char *str, unsigned int length, int user_errors, int *pexit_code); typedef int (GSDLLAPIPTR PFN_gsapi_run_string)( void *instance, const char *str, int user_errors, int *pexit_code); typedef int (GSDLLAPIPTR PFN_gsapi_run_file)(void *instance, const char *file_name, int user_errors, int *pexit_code); typedef int (GSDLLAPIPTR PFN_gsapi_exit)(void *instance); typedef void (GSDLLAPIPTR PFN_gsapi_set_visual_tracer) (struct vd_trace_interface_s *I); #ifdef __MACOS__ #pragma export off #endif #ifdef __cplusplus } /* extern 'C' protection */ #endif #endif /* iapi_INCLUDED */ gle-graphics-4.2.4c/src/gui/images/tan_line.png0000664000000000000000000000274011405446017020055 0ustar rootroot‰PNG  IHDR@@ªiqÞbKGDùC» pHYs  šœ vpAg@@êóø`ÁIDATxÚÝ›OhEÀÿÔ 5-J…еTQZ©B[k´¤¢-¢¶¹ˆ—‚ÔS¯=AÈE½x®'=y­(Dð¤¨TP ZªØJ´Ú46$ÕèóðíÂæug÷Íìì~ßú`“¼™7ï7ogÞ7;ëD„XqΙ‹ˆ‹6Ô¢\ß´ @çFÒ÷õB5‹ÃvÔ'cÙùuØŽúdÝ#Ðb8ßÓ®ÉúÀ*ÎL4µÓŒÆ‹`WvÚ‚ÑÕTœsÉv–.llDŸ|lŠeØ\>ç\Ì.êÁWÀ¤ˆ\iÙ M#ÀU”1àa`¹ ÿð©sîŸ Só8j¹QžeÅÒWAïà à"ƒhÉËwÀMlYÇQk#Õ³XáÀàQ`AAø¸;BȈééiVVVêÚM;€+ ÂÀ½VûCP'F7Oß(穘õcŸpp𳂰<˜€¥M£/Â8ð8×.Œ}©Ôµ‹PÔ‰€à€MÀ–’HX ç@îb°EžSþK  ªm²Ž" lîÞ-‰„eà@œ¯QYVU¦ëœ{Øìf°ÀmËÂ{¸)S[.gûø xø(Ó=W]_ž‘÷òñXv$_6èmJ‘Av7¼\P3ZÖ€3ÙŒ—ýÿ/à9‹ã1?Ùœªl[åïB“\ÅÀyºX=œxú]>¾¾Îf‘q XÉtÆÍÀVá.`/0 Üj;ð”ˆ|àS°ü*UArpÚ3+ç€×©ªY±,Œ "ëà$ðqE$ü[ 1QàëdÎ3ˆ÷Ã–ÕØ¡FnžÉìø L¶ ›õÏ=ŽO…8îƒ`ÜÊð"ñëF8€Ìà?%¡>ëx„€½Ü³ÅñX$ ðJ Å·€›­ƒ¶:¢—Ax‰AŠlp)ðF‰óÇ«u  Ûœ àTÈ,G€yÝ(…„dsE½l‹cÛßÛ«¥øÆf8|‘ÄÛ„""!žA¯áòSá%àˆŒœóô.päâ|°Œ/‹È|ãžËêêj7†,ÙTÊ]À*:m¦Í< +u¥ê·a™àž^¨ƒPY3 Àéh=† @´ø0’|ÖÖÖªL)óIŒ „šƒVû£ŒJˆsssfÀaàTÝØƒ BH$°þ=Ã2YfØk!Õ£àÙ(}„‰^ ßN`!(¹\p¾ÒÇ:ƒ£ÀA‰Þ ¶Gè %¯*Gè!¿æë#ÙÞº5#µÔœUõû}Šæ{‚uvùUˆÁÖUß–ß/Ö÷Œƒ"@¤úl®íh°¾úvÎé£ñ-E½b?Á7E-Î¥¼ÍÙŸÞ½¥Qk@IßÀ‹ú1Ž'’ñ¤Š ,ƒÂWcÚaï 4¾.ßõêo´½YÕ¯ú“|2c}$:p<—­ª¾Ø*€²¥†i;TÝûÙ^kM¥€ÑàñÚ¥ê?u ‘#±²WÕ½oŒ»úl®U)‰°IUÿÚ£×%Yà×Þ<ûÌ…½ün°FžVõ_DäŸògì+´¥?ŸÚ*zTXtcommentxÚóÉLNÍ+NµRpðQ(Ó3RÈ/RÈI,I-i±0/jzÖ.zTXtcreate-datexÚ320°Ô50Ñ54 1°°21±22×60²20B<2£4š.zTXtmodify-datexÚ320°Ô50Ñ54 1°°21±22×60²20B<P›ÃeIEND®B`‚gle-graphics-4.2.4c/src/gui/images/zoom_in.png0000664000000000000000000000312411405446017017733 0ustar rootroot‰PNG  IHDR@@ªiqÞbKGDùC» pHYs  šœ vpAg@@êóø`5IDATxÚå›Ïk\EÀ?#1‚"ÙCN‘âaÿñ15"YA ¢XAXŠEŠ"]oÞ"ØS¥¥êµO¢ˆ§½¦((Ø‚R%+˜®›nw<ìì:ùî¼y3óæ½Mí²ïÍ||Þ¼ïÌ›™(­5÷³<°h-K9”(¥ZÀÛÀÓ@X”©¢;À_À à;à­õ­œÁ(¥‚ëÎz¾Ö:¹=`ϘRö€^„?ÑõR 퇗åÐèœ{J' ° d \–cƒµ.—8?vÍ“Üb’ –Mi›k;¦Î°D×å²÷·Q@ßãìu œ}þ“®i[¤·_¦ Àµ÷NBàR:F—ËÆµÙxžü•˜ T SWªö„¬p¿ów èîKKKˆv¿:Ö56¢rBl?&™Ø|P—7:޵H¶›¡¶sp u¥O^èH`õ„¹!Ò ª`2Tͽó±ä«ðä„PÁv†å oßgÐ@%F‡§÷ƒëëëy0™ÛKê#™tþôÊ‚ Ê›_S•ç`ôÈÉÒž ~{{;‚m¨å ÝMVœ€+!¶ìàËrB(Ùý‡•ºV&F—üvèÙÁ—%ÆPrÖ·›| v…¾¾ >‚oìß9 ƒÌÍ»Qì5ÁÑæ—¢˜e§ª2ÙØØpù²RÔ¦,’Æ‚r[Vm¸ØC][Ü—ô>o¬vQÓJ)Ùò!àHhRì®¶ŒHÊZkoWtõTœû~YÜ ñœšÝˆ}¯2Š™äœ—KrùìÌ_ž±vKÖ‰ºæÞé”à®-¡kèCa¼QÃ`.1NÛã<Ã`…¡¦8fx»BW¿…Sá¦L…?ª@ËátwÑ(øÊÀ4ŸÃ×O€¹ÏáJÈyÀ%ñ»Mžµÿ$QJu˜Ÿ‘^JÑUhC’RJ[—nj­Kp^>UôTD»ÙÓSJíkÖíÛZëG"|˜»&}pÍ/ŠßkJ©ÒEѪ"56×Dµ‹Á C¥à½q.‹×™„x—Ås怢F›î*åcÜ#_6 <[cU¸VrlÿJÊ{M€’ÍQ_q-]-c»ßÐÀùZ8z·Ç«{¼¨¼“#øP¾ž0,Í^‹Ñh<ðð}dàvy«IPíˆÌãÀÀ«Ààf‰®¿!œð?€GÉ&õ’úÊüý[@ý1p.õ駘ޫ嘜e{›ÉˆÒÆX¯`ÌÓO`Õ©í ¤0FÞÈ D™•í[Fßtã!Ç—ÙÇæÚ©Ó#à“Ö@8 „9^ >=Χá6óûò÷t¢öZ6>Moùpø÷Ùá•àƒ”õ„ºƒ=á÷/ép`aÁ 7˜½/ƒ0Îd°ººêÝm¦^ C†ðS „;À‹Aräƒ:Ayø÷hàÊ Ï5 7|Àd^áx! €X5nËû´vAØÌ Wî¨"Ƈóø?ÙåWëél Aøð!p+Â?À³Ù4 ÂcÿSŠW°\žÉ  Nyãyàó@_§þã¤2 ¼Ï*'ž,K©µ¾jv¥FÀÙ’ê؇¤‚ †Ö[´(¥žd²Ò¼ì©öó1¡r/01]Nã9 ´ay/‹Rê ðð¨ëþÿþ˜œÖú àM&‹*sò/suš¶Z £*zTXtcommentxÚóÉLNÍ+NµRpðQ(Ó3RÈ/RÈI,I-i±0/jzÖ.zTXtcreate-datexÚ320°Ô50Ñ54 1°°21±22×60²20B<2£4š.zTXtmodify-datexÚ320°Ô50Ñ54 1°°21±22×60²20B<P›ÃeIEND®B`‚gle-graphics-4.2.4c/src/gui/images/grid.png0000664000000000000000000000056011405446017017207 0ustar rootroot‰PNG  IHDRÄé…cbKGDùC» pHYs  d_‘ vpAgª GBQIDATHÇí“K DÇîçiÓ¢R¸0ßR„§8#„ÎU½À‰lV~*é!IYšD¨ô¢ x¬Ç¹I‰Kºfòã?‘dºL¤ÄD¦Ë„‹¤§vrL©*zTXtcommentxÚóÉLNÍ+NµRpðQ(Ó3RÈ/RÈI,I-i±0/jzÖ.zTXtcreate-datexÚ320°Ô50Ñ54 1°°21±22×60²20B<2£4š.zTXtmodify-datexÚ320°Ô50Ñ54 1°°21±22×60²20B<P›ÃeIEND®B`‚gle-graphics-4.2.4c/src/gui/images/orthosnap.png0000664000000000000000000000206511405446017020301 0ustar rootroot‰PNG  IHDR@@ªiqÞbKGDùC» pHYs  šœ vpAg@@êóø`IDATxÚå›;’Û0 †5©2™ŒÏ‘C¸që¹ñ|´-s7i̤p¨ÐZ‰Â“T¼˜ñ¬Ç+ø?’JHDð™mèåGòD„Ÿ bŒ^I¿yä÷OóÉkp¦t ª NfæŽiq~ PM•ßq©(®¢æv$ ák‘5 ÞŠw7ß&ÜþfŠ›.""vv­T±êx†Q¸e˜rÛ¯ÅSm+ ㈴øNÐÑ·îFh-€èëvt$°ô?õåù*`çZ»Ýnp8ìeµ¥m¥OÊi[®xV=Ä[̉?Nê8Uâ{Xo‰µKö5jâ-ñv/À¯{ó$âÃx‰çH)Á~¿g‹×ÄÞ%ûÒÌkãï•ý'ÓþçÄ_.þ&B¥Qæ]xgß @#^¢…;T·¬J?óweæÇX9>Ô&«,š4W&ë~ÎñïðÃÃ_þi  ´¥åð+mf-³0ŸÌÐëa_Z‚$Âúé/÷™§—¹ `_[:Û"€¦¶À¿á°6äœÎÊl‹ð7íómæŸý¶zbmVÛP9à5.‡Õ„®Í7W-÷‰9þX'Í\H)5¬5ì*R‚ãñØ€Ø"–Ã̦z_`Óõ€ûýΪäüw8„ÕÛ0¢Ñn%X>ŸYu‚^ÙXêHSÀŒ ½æŽ´ÕÛÍàtf,]»ŠW“ø5S¨ulßÀj;+]xoZñl5'Úº½‹x¢GYüü€ßðXýQñw´Ýn×ëuÑ)g¤”f}aÂë!©q_Àc©*`àùÄÚNCíÊ’ÒØ¯%K )@z>ÍÍ®õ§À6%zThV#,³)Ü t¬}ÆãX«x}EhŒRÀš:‘z)ærð¼’´n0AX.´¯Òóí`I„pûˆ2× ‚Ö;Á=_€êeâWf^Ͷ¸=ÞÔþxÌ_}9§•¬*zTXtcommentxÚóÉLNÍ+NµRpðQ(Ó3RÈ/RÈI,I-i±0/jzÖ.zTXtcreate-datexÚ320°Ô50Ñ54 1°°21±22×60²20B<2£4š.zTXtmodify-datexÚ320°Ô50Ñ54 1°°21±22×60²20B<P›ÃeIEND®B`‚gle-graphics-4.2.4c/src/gui/images/gle.icns0000664000000000000000000015450011405446017017205 0ustar rootrooticnsÙ@ics#Hà?üÿÿÿþÿþÿÿÿÿÿÿÿþÿÿÿÿÿ?þàà?üÿÿÿþÿþÿÿÿÿÿÿÿþÿÿÿÿÿ?þàis32Ã’¸³¯£œ™ªƒëõñ³}‚”ƒ¸ÿõêÆãœÖÄy umvç¯¼é£ØÀ’„Êd-ŽsoÍLÛ£Û¢¤¬d,uehÍF_Ô©Ò’”‡Ž^(rhV`ÌCM¶®Ë‡Ž‰W#cXGXØyŽ“¬ÃrhªÏMQJDYß—ªƒ¬½bW°8HIG^ÌBP£½MTJ~¦0ILI^ÏTM¥‘ÉI:x§0LLA^ÐR\·™Êw,­0OL?dÒY‘ÈËš¿up6GwåÇßê’­lBS:2SqÔB>ª¢”˜W$‚yp6W`¶,F¡‘ŒL!ujd2 D’Ÿ$D–s4Ee^`5!¢“(9ƒw"6C\]a3X_™8)Mqi"0;]_e4__¬[\]0;`Yy@^m·–Dd/=ba›> gœÆU/J)ÕG3ÑîgQZ]@A>\m^VNrÌf…zposys8mkA’ÊÖµnAo¯þÿÿÿÿÿãwE7^ûÿÿÿÿÿÿÿÿÿÿÿü€ìÿÿÿÿÿÿÿÿÿÿÿÿÿ‚dÿÿÿÿÿÿÿÿÿÿÿÿÿá$¤ÿÿÿÿÿÿÿÿÿÿÿÿÿò#ÍÿÿÿÿÿÿÿÿÿÿÿÿÿÿUÞÿÿÿÿÿÿÿÿÿÿÿÿÿÿaÛÿÿÿÿÿÿÿÿÿÿÿÿÿÿUÃÿÿÿÿÿÿÿÿÿÿÿÿÿø%Žÿÿÿÿÿÿÿÿÿÿÿÿÿ¼DDÿÿÿÿÿÿÿÿÿÿÿÿò]¨ÿÿÿÿÿÿÿÿÿÿÿ꺖v‡Êÿÿÿÿÿÿê…^d \¥ÊѸ|$ICN#ðþÿ€ÿÿþÿÿþ?ÿÿþ?ÿÿþÿÿþÿÿüÿÿüÿÿüÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿüÿÿÿüÿÿýÿÿÿÿÿÿ?ÿÿÿÿÿþÿÿþÿÿ€?þððþÿ€ÿÿþÿÿþ?ÿÿþ?ÿÿþÿÿþÿÿüÿÿüÿÿüÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿüÿÿÿüÿÿýÿÿÿÿÿÿ?ÿÿÿÿÿþÿÿþÿÿ€?þðil32 ùÈ ÿ±±´«¡§©ªª‘ÿµ·°«©¥¢—”›ªŠ€ÿ¯·³²­§±®©—‘‹…€yˆáÿÿ÷Ô§Ë©¿ÑdSQˆ–މjš°Îÿÿöñïÿ€»ûå—¤öòæa´HŒ‘Їf'­ÿôÇÎÀÙòÿ¡âý¹—SZ÷êª}P >¡’Š„{KnÿÄ?d®jÐÿ¡©ÿͨ°«K™ñ¤˜OJ˜‹…yu[`ÿÅPK¿­­ÿŒÛ󩦦ªŽYá¡’PJ’„ysnV]ÿÃJBW¸ºÿ‰üÔ¢¡ UÅŸ‹NG‹~xrlgO\ÿÀCD=x¸–šÿÁ˜›šb©†MC„wqlf`IZÿ¾@DBUª}°ÿ²”——••z‰K@~qkf_ZDYÿ¾AF>cÀvÈÿ¢ŽŽ‹‹‡…zH (P€HŸÿeK; &MIIJJK=YÿÁHP;d›~Èÿy]`^^6Ÿÿ\A8 &M€JKM>YÿÁINDM¡k´ÿ…RWTT/ŸþV?8 'OJKLMN?YÿÁJOOKŽ›ÿ“GOML*žþV@9 'OLLMMN?YÿÂKPO_ªÆ‡tÿ³@GGI)žÿWA9 'QMMP?ABZÿÂLQM|–ÔÿfßëNBGI)ÿXB9 (RNNQk4ECZÿÃNOY†Þ~’ÿ˜:FJ&žÿZB9 )UPQJ5OB`ÿÀJK—œòœZÒý|ACSäáSyÿÙf†Êàó‰`ÙÿÑÌóÙf@sÇIMN?³ÿùòõíêïî€bšÊ¸€LH?Md'"#"(5EF2S_o‚„~x­‚ ™‚igRJLJGQS€TSTSR_ƒtl]PLNQNSPQUak™ sy~iYrTrz‚?§È ÿ¼¸»±§¬¯ªª‘ÿ¹ºµ°®«©¤ž›––¢ªŠÿ‘ÿÀ¿¸·³¬¨¥¢¢Ÿ™“‰ŒˆŒ™š¥§Î¯ÁÝÑÒѪ™–‘‡rvz‰—”••šÌ€o0y\Utºï”^ÆÿòÀ¤–‘m.^„yfolvˆÆ@·§^5Ãò°~cÿÕ–“ˆ„ZB„qIi¯]zÆ®.Š»µ²P“ó«šbþÍ’“‡~j>€w`Wijzƈ&®¯¬°”\⨓dýÈ‹ˆ‚|xe=tXNc¿”¿QR³¨§§¤XȦŽbþÄ„†{vq_<€rRPI‚¨­-j­£¢¡¤g¬¤ˆ`þÁ~{upkY:€oOPO`ªŠx¦Ÿœ—„^ÿ¾x{upjeS9€pPRNTžv„˜—–“”~]ÿºpsnhb\M7pQSGEž ˆ•’އ€vZÿ¶gle`ZUJ7€pRUHXƒl …‹ˆƒ„´²vWÿ±_c]WSTJ7~~z{~‚c_ ~…ƒJ=½ÿÄhSÿ­V[USSUK8€pSRWv€^ w~zyr0žÿyYSÿ§MTSTUVL8mIL,Phg.lwsqtC—ÿoROÿ¤ITTUVWL8€rX\IE†~]ojhi<˜ÿgIMÿ¤JU€VWM9€rX[QC•tKgb_`5—ÿ`FMÿ¥KVYO9€sY[ZV˜Ž!¹è]BhÿÊmnlM+GYQG„zbx•{–63urt¡xKtÙÿûóøÈIJVJa~yz~}|›€‹\`pl\STIRmcegi\:LO8CDUcddb€‚™‰xx]VWVRSTUVX^_^^mwf[WX\Y^\]_ks™ ‹‡scz_z‡?§È ÿ¼¸½´¬±±­ª‘ÿ¾À¹µ³¯®¨£ š›ªªŠÿHÿÌÅ»¹¿Á½¹´ª¢ž™“ˆ“¢ˆw9%D~•n¶„\a[W“¢›–ЬtAB%-Ûöïÿ€v( : 5N—ž—•q`1¨Þòÿ+­´h 2µ–$F®Ÿ—’ŠaPm®jÐÿ®.º¸b -¯ª2S§™“Žˆ…u(nbǬ¬ÿˆ&³´°µ¡$)©¤2S “ˆƒ~r$dWj¼¹ÿQT·­¬««M5 Ÿ0QšŒ‡‚|wl"^XQ„¸­-m²¨§¦«kI—š/N”‡‚|wrf [YVeªŠ|«¤£¢£†‡™“-JŽ|vqla \ZRoÌvˆ£œ›™™—”Œ+G‡{uoieZ!]]Hkº mŒ›—–—˜—–“†)Csngb^W ]]N›¦lŠ“~_[UUw(>wke_[\WÉô€_„Œ‰†F2t%:nb][[]W ŠÞŸ^ }…€{Ekq!5e\]Y [Y(…‹gr}yw|Weg2b\€]^Y#cdKk¥~cvqnqO[^2c€]^_Z#cbUXªtPoighIV\3c]]^_\Z#dc`[˜Ž!@jb`aDV\3c]__\ye#dcapªÆ–3(a[Z^CV\3d__aKo$fd_‰–Ôÿ] U[Y^CW]3e_`acL²d$gcjŸ†ÞŠ8`[`EW_5hcbN…ÅZ&ke¤œòœR H^`9]`!WV^—÷´OWmÌàó–= #" Pb:>ûÿ˜=€ÍðïT,#(9YdS+(*+*':fz_ZE&7BEuz­‚™‰—‡e\]b€defd]^b`s›{la^`c`ebdgrx™ ‹…‹xk€e†Œ?§l8mkEx¡§¡zK;ªìþÿÿÿÿÿÿç©H-¬üÿÿÿÿÿÿÿÿÿÿÿÿ¶E<°×Èôÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷žyz^^QnúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðWÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðiÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿжÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½/ìÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÑ;ýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷-eÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿl„ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ™ªÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¯ºÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ°ºÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¯±ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš‘ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿmmÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿú4OÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÖ "óÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw8}¾ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÞš£iÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ`ãx Ìÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ­oÿY=îÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷ãÿö.7ÂùòåÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüÀ¢¨­­[% jâÿÿÿÿÿÿÿÿÿÿÿÿÿÍW|ØÿÿÿÿÿÿÿÿúÇ_ AwŸ°µ­˜l1ich#HðþÿÿÀÿÿðÿÿÿøÿÿÿÿüÿÿÿÿüÿÿÿÿüÿÿÿÿüÿÿÿÿü?ÿÿÿÿü?ÿÿÿÿü?ÿÿÿÿøÿÿÿÿðÿÿÿÿðÿÿÿÿøÿÿÿÿøÿÿÿÿÿøÿÿÿÿÿøÿÿÿÿÿøÿÿÿÿÿüÿÿÿÿÿüÿÿÿÿÿøÿÿÿÿÿøÿÿÿÿÿøÿÿÿÿÿøÿÿÿÿÿøÿÿÿÿÿøÿÿÿÿðÿÿÿÿðÿÿÿÿöÿÿÿÿæ?ÿÿÿÿÎ?ÿÿÿÿÎÿÿÿÿŒÿÿÿÿüÿÿÿÿüÿÿÿÿøÿÿÿüÿÿðÿÿÀÿÿøðþÿÿÀÿÿðÿÿÿøÿÿÿÿüÿÿÿÿüÿÿÿÿüÿÿÿÿüÿÿÿÿü?ÿÿÿÿü?ÿÿÿÿü?ÿÿÿÿøÿÿÿÿðÿÿÿÿðÿÿÿÿøÿÿÿÿøÿÿÿÿÿøÿÿÿÿÿøÿÿÿÿÿøÿÿÿÿÿüÿÿÿÿÿüÿÿÿÿÿøÿÿÿÿÿøÿÿÿÿÿøÿÿÿÿÿøÿÿÿÿÿøÿÿÿÿÿøÿÿÿÿðÿÿÿÿðÿÿÿÿöÿÿÿÿæ?ÿÿÿÿÎ?ÿÿÿÿÎÿÿÿÿŒÿÿÿÿüÿÿÿÿüÿÿÿÿøÿÿÿüÿÿðÿÿÀÿÿøih32ÿž ®«¹¯¤¡¤®¥ª ½¾µ¯«¨¦¤¢ž™––—šŸš²¶±°¯®¬©¦£¡žš˜“‹‡Š•ª–»¹´°±°­«ªª§¤¡œ˜–’Ž‹†{ˆ‰ÿ€ÿùÑ´±´Ä°¯°°¦žš–˜—“Œˆ…zwyy¥€ÿŠß‚ÿ骧뭡Òÿy™‘‰†€oR¹ëæí€ÿóïïíñƒ™ÇõÿÚŠˆØÿòïêªUL«…a‹’ŽŠ††j)!¸€ÿòòóáçôïñ‚*‘œõÿî’hA1­ÿÿ窙W3^s¡“Ž‹‡ƒza oÿÿÑJGn‚ièó‚*zºÿþÈ®¸¯P)Ûÿ楩™:? ‰”Ž‹‡ƒ|wzP@÷ÿÁNJhôÆ: û+ªúÿÛ©¬¬¯¥>]û裢›E7ˆ‘‹ˆ„€|xtrX8îÿÃSSJ—ÿ~ù+¾ÿü´§©©§¯€&Ôð ž™J6ˆŒ‡„€|xupmY1æÿÂNNIA×É€÷€,œ[åÿ×¢¦¦¥¤¦™,£ôš•H6…ˆƒ€|wtqliW2çÿÀJJF=u΃ö€+xþý´Ÿ£¢¢¡ ¤O{ïš–‘F6„{xsplgdS0çÿ¿EEDD>‹Œ*ƒ´ÿò£žŸŸžœœŸw`㙑D5|{vrokgc_O/æÿ½ADEE?a‚%}ßÿ蜚››š™˜™ˆW·•މB5x{vrnkgb^ZK,æÿ¼A€EDW­€,iøÿÞ––—––”““ŒqŒŒŠƒ@5svpliea]XUE,æÿ¼AFGG7iÏ€‘qüÿÕ“’’‘ŒŒˆ†„>4nqkhda\WSP@+æÿ½BFGJ"g°ÿjzÿÿÎ‰ŽŽŒŒŠ‰‡†„€z<4ilfc_\WRNK=*æÿ½BFGJr›»~|ÿÿĉ‰ˆˆ‡…ƒ€~{yt:4dfa^YUQMIH=*æÿ¹8=>@%¯™j…ÿÿ¹†…„€‚G}zxutto84_a\XTOKHGH>*æÿà§©ª¤¼öD[‹ÿÿ³y€~~pÔÖÑÑÖ®g53Y[VRNJGHGI>*æƒÿOýõ‹[U‹ÿÿ¯t{zx}O%gõÿÿça33TUOKGGHHIJ?+æÿÚ–™˜ŽÊù‹§U‹ÿÿ®ouussmY~ÿý‡Y^02 MNIH,IIJ@+æÿ´).0 ¶•]UŠÿÿ­iponllqGFFGJ+FÿôZFG(1 IN€M[NO+GHHK,Dÿô[GI(1 J€NMPA!LQG.æÿÁNSRSœƒ­ù€,jl÷ÿ¸@FHHL*Jÿõ\HJ*4 KNMOOQ7?PRE9ñÿÀNSP{ÿ¢nÝò€¥4«ÿÿ7DGF&–ÿõ[II'?HSF7OOT@JûÿÄIFbªÃõê+gLäÿöŸVIT˜ÿÿªHM=Bm%&$6KLMPW7‡ÿÿó¼¥Ïóèàòíì¡VWØÿÿë×îÿîšHIC|êƒTOMPOAǃÿ÷óöñ`Dœìøüí¨YCKL!Q„D  --ME*_xtyŒ‘‰†…‘ä…!p]{–’]EDLMMB83;CCDDEECACRPDC;4F_S[€][hŒ „YJKMPQQRRS€TU€VUUWUbq•UoUMLNOPQR€TSQTZe™tŽeSQIORNNSSMRWo€xž yr~fOjtR\x‹ïÿž »±¾´«§¬³¨¯ ½Ä¹´°®­«©¥ œ¡™Ÿš²»¶¶´³±¯­«¨¥¢Ÿš–’Ž’›ª–̽¸µ·µ³±®¬ª§¥¢ ™–’މ„‘’ÿ!°¥ª³¼¹º¹È¶µµ´°®­ª§¢ž›—“Šƒ||‡‘‘Š'€ˆ€ƒƒ€“¦«í²§Öýóññöò±˜™•‘ŽˆwVr|ŽŽ‘‰¯ƒ™ZvpNNp}îí°XM¢€ÿͺ£˜–‘ŽŽq-'d„~uvwu|‚{©‚*¶kŽuM/\“ÿꯞZ$Öÿý¨“™–“Ž‹ˆ‚i*A‚‚p=9]sU]yª‚*„>Ⱥ½´X%‚ÿ髯Ÿ-¶ÿ÷¥——“‹‡…„\.{‚uaXs÷ËDb®+ª?„¾±±µªDLúë©©¡7­ÿôŸ•”Œˆ…}|d+wƒvb]Tžÿ”g¶+”¦²¯®­µ…*Õò§¥Ÿ=­ÿïš’‰…}zxe)tƒt]YSLÚÉw½€,œLVµ¬¬««¬ /¤ö£¡œ<¬ÿî–ŽŒ‰…}yvsc)tƒsYTQIÏ}¾€+Š-‹°©©¨§¦«S|ñ¡˜9¬ÿî’‰ˆ„€}yuqo_(tƒqSPOOKˆ*Š¡¨¦¥¤£¢¦{cä ™•8¬ÿì…„€|yuqlj['t„oOOPQKl‚&o'¡¤¢¡¡ ž Ž[¼•‘6¬ÿì‰{xuplheW%t„oOP€Q]™€,C3¢ žœ›šš”x“”’Œ4«ÿë…}zvsokhc`R$s„oPQRTFR”€™5=¡›š™˜˜—••”ˆ2«ÿêwurnjfb^[M"s„oPRRV.Cˆÿu,CŸ—––•”“‘ŽŠ‰ƒ1«ÿê|rpmieb]YWJ"s„oQRSW+Hs»ŒMœ“‘‘Ž‹‰‡„„~/«ÿéwmlhda]XTeTJ#s„nOQRS.dn‹yR–ŽŒŠ‹‹ˆ…‚€~z-ªÿèrhfb`[VSSTK#s‚wjkklm„gUkRˆ‰ˆ‡}w~ÑÔÙ´q)ªÿçlb`]YUSSTTK#s‚€‡!Šˆ„gkf P‹„ƒ†W!7Šÿÿè‰k'ªÿæf\[WS-TUL#s„nPQPPp†g¯e M‡~~||ub&Xþþei%©ÿåaVUTSS€T,VM#s…g<>>-hlmf!Hyxwvv|F?ûùyeb"©ÿä[QSSTT€U*WM$tƒqXZ[YMoUl">|tsrqprH;ú÷r^\ ¨ÿãZQTT€U€V'M$tƒqVXY\-Irˆz#2uomlkjlD;ú÷mYV¨ÿãZR€UV*WN$tƒqWYY^1Fu»‰$*njhhfeg@:úöhRR¨ÿãZSUU‚V+XN$tƒqXYZ^8;{ÿt3 fdca_^`<9úöcPQ¨ÿä[SUVW€V WXP$tƒrY[[\VS‰€œ?_`^\ZXY78úöcQR¨ÿä[T€W VVXWXQ$tƒrZ[€\d“€6mR VZWVTSU58úödRS¨ÿä]TWVVWXQLUQ%tƒrZ\]]Xw«r!=WRV68úödRS¨ÿä\TV€W Z2>XR%tƒs\€] YІ›‚9RTSV68úöeRS¨ÿä\TWWXZV#E[S%tƒs]]^\pšqŒªCDSRSTW67úöeRS¨ÿã]UXXY[K#N]T&tƒs]_]^ªˆb¡€s(,VRSSV5<üöeRT«ÿç_V€Y^??S^S+xƒt^_[‡ÿ¢`v”€,¥ChPRSV4`ÿ÷dSS·ÿòdLPQXQ9NS`N3}‚t]Zr•q…Ž+m2|kWTUV’ÿ°SXH6åÿÿβ±·ŽEKMWcFKƒ€}so‰™…„³¡`+$~„{wz‹žVUNƒâ„ÿ»EOLWZGl†€‚ƒ‚‚ƒ‡ƒªi>]uxzvaXQVW'SƒvyV*/SM!->DBFY\\[\[aŸ…w`n~|WUSVXXLA=>€?€@ DKL^[MMIEVj]`€b`nŒcVWX[]]^]^_`_`abb``bam‰q•Ux_XWZ€[]€_^\_fo™”p_\UZ]ZY^^X]bx‰ž …{ˆoYt|\i†ƒ’ïÿž »±Á¹¯¬¯¶¬¯ ½Ç½¹µ²±¯­ª¤¢ ¢£™Ÿš²¿»¹¸·¶³±®¬©¦£Ÿœ˜”–žª–ÌÁ¿Â»€¹·´²¯­¨¥¡ž›˜”އ–šÿ!kV^rª¼Ã¶¹»´­¬ª¨¥¡¤£Ÿœ™•’‚|…i6$*Š r' F§V=¹¶W€ƒ¥š—“‰—òaÉøïíñƒ™\ 7¸a € h— ›—””t8m.ƒ´ñôïñ‚*¶k=„€W( 3µ¤g*|¯ ›—”‘މm+ ,+M{jèó‚*„5ÁÃÁ¸_&3±¶¥4 •¢œ˜”’Ž‹‡Še(od}öÆ: û+ª?‡Ä¶¶º®O0®°§A •ž™–‘‹‡ƒm'lf\£ÿ~ù+”ª¶³³²¹‹)(ª¬¦G •›–’Ž‹‡ƒ€}n %hb[TÜÈ€÷€,œLX¹±°°¯°¥= '¦©£E ’˜’Ž‹‡ƒ€|zl $d^YQ…΃ö€+Š-Ž´®­­¬«¯b$,¢¦ŸD “Ї„€|wvi"_ZWWS’Š*Ц­ªª©¨§«„L7š¢œB ‹‰†ƒ{xsre![XXYSp‚+o'¦©§¦¦¥¤¥”]h–ž˜@ †Š…‚{wsom` \YXYWh­€,C5§¤£¢¢¡ Ÿ™|›™˜“> ‚…~zwrnjh\ \YY[HuÕ€e™5?¦ Ÿžžœš™š—”“= }|yurmifcX!\YZ^.m·ÿu,E¥œ››š™˜–•”’‹; y}xtqmieb_U!][[^'v¥»ŒO¡€—/–•””’ŽŒ†8uxsplgd`\\U#ca`V/±¢‹yU›““’€‘*Ž‹‰†€7psnkfb^\[\U,*-“Äõ—UkW—Ž€‡^66-,(K~5jmie`^€[]T‚Óÿô•kf T’ЉˆŒ] ez2fgb^\[[\[\U  uÐø•¯e P„„ƒƒ|j6Y|q/`a]\\[\\[]VKIH-#·Ÿmf!Lˆ€~}|„Tfrk-Z][ƒ\(^W#dbc`|£Ul"A‚zzyxvyUalf+Y]€\`]\\]_W"a`_b,s£ˆz#5|utsqpsQ[e_(Y]\]]\\]^`W"b``e1k¥»‰$-vqonlkmLW`['Y^]]\\€^(`X#caae;Gÿt3#nljihfhIS_['Z^€]^__\^Z#dabc\WŒ€œ?fgddb`bES_['Z^]‚^lrX#ebkœ€mR ]b_^\[^CS_['Z_^_P¯²Q$e€c_}êr!B^ZYZZ^CS_['[`€_ `a2´S$f€d `”ï‚9€Y.ZZ^BS_\([`__`b[*Ë‚W$gedbv‘žõªCL\€Z ^CT`])\€`adIRákZ$geddªƒ­ù€s(._ZZ[_DU`]( \b€a_LÔÔa[&ifcŠÿ¢nÝò€,¥CE`]\bDU`]'ZhgfbS–ÿ¸]Y#ljzªÃõê+m28V]Q$ -`a\..*lØþÿ§]J(5EÌñàòíì¡`/ ! 4_`]7„s€ÿše¸FƒÇÿöñk<#  Rb`_0€€ ={yŸe/7 $&(uŠ…‘ä…wdbihR]]€_QOQQ€RSSTMEG[^QHORcqbik]][hŒ“i]]_b€d€efgiffhgrq•ªf_^`a€bc€defebejt™™šuec[_ca`dc`di~†ž …€‰ray€dmŒ†’ïh8mk +c™¤§ ‘D-WÌøÿÿÿÿÿÿÿö±m<qðÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÒMŒÜÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¼YPi[Tµÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ†" Yäÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿõéêå­§©¬M ýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‰Žÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ…jÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ… Êÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ…gÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÙÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÚ[9þÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÏxgÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¬£ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿå ÜÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿV:ýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿµ]ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿäÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿø* ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿý<²ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþ@¹ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþ@¸ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþ?¹ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿý<±ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿø+žÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿâ‚ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿº^ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿd4ùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿçÖÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ³1‘ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿùS¸—Zÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¯ÿ¢$÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ9tÿ‰£ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿˆ ×ÿO%òÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀ?ÿÿ=Œÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ°AoÐÿÞ´ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþµ ©ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûûûýüûÓ0K‰¶ªs”ûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¢H454445,UËÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÔ‚ náÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿê{Tžåÿÿÿÿÿÿÿÿÿÿë§Y$[‡ ­´´­¥Ž_!it32e®ÿÿÿÿÿÿÿÿ£‚ª §¦¥¥¤££  œ€™›ªãª€­®­­«ªª¨§¦¥¤£¢¡ žœ›™˜˜•“ŠÜ#¯¯°±°¯®®­¬««©¨§¦¥¤£¢¡Ÿžœš™˜—•”“‘ŽŽ‰Ö)ª°±²²±°°¯®­­¬«ª©§§¥¥£¢¡ Ÿžœ›š™˜–•““‘ŽŠˆƒÑ-²³µ´³²²±°¯®®­¬««©©§¦¥¤££¡Ÿžœ›™™—•”“’Ž‹‰ˆ„‚Í2±´µµ´³²²±°°¯®­­¬«ª©¨§¥¥££¢ Ÿžœœš™˜—•”“‘ŽŒ‹‰‡†„ªÈ6²´¶µµ´³²²±°°¯®®­¬««©©§§¥¤££¡ žœ›™™—–”“’Ž‹Šˆ††„‚}zUÄ9°´¶¶µµ´³²²±°°¯®®­­««ª©¨§¦¤££¢ Ÿžœ›š™˜—•”“‘ŽŒ‹‰‡†…„~|zuÁªµµ¶¶µµ´³€²1±°¯®®­­¬«ª©¨§¦¥££¢¡ žœš™™—–•“‘ދЉ‡…„‚€}|{zvj¾´µ¶¶€µ´³€²3±°°®®­­¬«ª©©§§¥¤¤£¡ Ÿžœ›™™˜—•”’ދЉ‡†„ƒ~|{zywrs»ª³€¶€µ;´³²²±±°°¯®­­¬«ª©©§§¦¤¤£¢ Ÿž›š™˜—••“’ŽŒ‹‰ˆ††„‚|{zywvtroU±„ÿã·¶¶€µ>´´³²ÔÙ±°¯®®­­¬««©©¨§¦¤¤£¢  žœ›™™—–•“’ދЉ††„‚}|{zxwtrqpmn­‡ÿFùîÔ»µµ´³²²µöò²¯®®­­¬­­««ª¨£¢¡¡ŸŸ››™—˜™—–•”’‘ދЉ‡†…„€{zywyxwutrqml“ÿ•ÿòûˆÿóÒµ³²wnÅþî±®®­­¬¸éëÙ<&&‚%$$"?•—•”’‘ŽŒ‹‰ˆ†…„‚€}hWVX¼ß€Þ€ÝÜç…ÿñë†ìî딪ðŒÿêìҎÿóí‡îì‘€„ÿ óX7--5Jê†ÿõ³«ª”=+**))u÷éƒL–—•“’Œ‹‰‡†…„‚}V$†ÿùö÷‚öê俆îìRôƒÿÞkTRD6,PÍ…ÿõ³ª©¨›ƒX-€)°é‚{’—•”’‘Œ‹‰‡†…„‚~|xjU5€,áƒÿýK€EB€><7@Zs¥Ý‚îìσÿà˜¬±±¬žq9€,CÍ„ÿõ±©¨§§¦¥y.))jç‚D——•”’‘Œ‹‰ˆ†…„‚~||ywvrC©ƒÿÙ#€…2¼îì}ƒÿñƯ‚°¯˜J€,BЃÿõ°§§¦¥€¤U)(BØ c—•”’’Œ‹‰ˆ‡…„‚~||zwvtrl'~ƒÿÅPONMLKJ<… È€îìŽ.ë‚ÿû䯰€¯® K€+Xõ‚ÿõ¯§¦¥¤¤£¢})(0Ã!w•”’‘‘Œ‹‰ˆ‡†„‚~||zyvtsrp;cþ‚ÿ Â]\ZYWVUQL…[êîî쎰ƒÿù­ƒ®­žH€+“‚ÿõ®¥€¤£¢¡’3(*¸!”’‘Œ‹‰ˆ‡†„‚~||zywtsrpoJJø‚ÿ Ã\ZYWVTTROU„ÛîîìXùƒÿ­®®ƒ­ ¬¬««1+*0Äÿô­¤¤£¢¢  ›?''£!†’‘Œ‹‰ˆ‡†„ƒ~||zywusrqomQHø‚ÿ ÂZYWVTTRPOL…¶íî쌃ÿÚ­€¬«ªª©k€*lÿô¬£¢¢¡  žœE'' !„‘Œ‹‰ˆ‡†„ƒ~||zywutrqomkYBò‚ÿ ÂYWVTTRQNMLI„ëîìŒKø‚ÿü¬¬„«ªª€©¨¥M**4Ø€ÿù±¢¡  ŸžœQ'' !„Œ‹‰ˆ‡†„ƒ€~||zywutrqonkjY/ä‚ÿ ÁWUTSRQOMKJG?ƒEîî쌫ƒÿÌ€«€ª‚©¨¨€§€€)€ÿü´  Ÿž››S&& !ŠŒ‹ˆˆ‡†„ƒ€~||zywutsqonljhY/ä‚ÿ ÀUTSQPNLKJIHDƒ ìîì‹!ë‚ÿú¬„©¨¨§¦¦¥ž@))Jðÿÿü³Ÿžœ››šQ&& !"ŒŒ‹ˆ‡†…„ƒ€||zxwutsromljhg^".ä‚ÿ ÀTSQPNMKIIHFD>ƒííì‹eƒÿÔ‚¨‚§¦¦¥¥¤i))*»ÿÿü±œ››š™™P&& !!ЋЉ‡†…ƒ‚~}{zxwutsrpmljhge]!.ä‚ÿ¿SQONMLIHGEECA*‚íîî‹´‚ÿû³‚§€¦¥¥ƒ¤ £¢2(({ÿÿü±œ€›™™˜—O%% ! ˆŠˆ‡†…ƒ‚~}{zxwutsqpmljiged[!.ä‚ÿ¿QONLKJHGEDDCDA‚íîìŠ"é‚ÿ駦¥„¤££€¢¡ŸN((Köÿü¯››š™˜—–•N%% ! †ˆˆ†„ƒ~}|zxwusrqpnljihedbY -ä‚ÿ¾ONLKJIFEDDEDDC<ìîíŠeƒÿφ¤££¢¡€ Ÿr('/ßÿû¯š™˜—––””N$$ ! …‡†„ƒ€}|{zwvusrqpnljihecb`X -ä‚ÿ½MLJIHF€DEE€DBðë‚ÿü¼¤‚£‚¢¡¡€ ŸžžŒ/'+Ãÿû­˜—––•”“’M$$ !„†ƒ‚€}|{zwvusrpomlkihecb`_V,ä‚ÿ½LJIHF€DEEDCD Ø‚ÿôª‚¢€¡ ŸŸžžœœ™E'+ªÿý¯––•”“’‘‘L$$Ÿ!‚ƒ‚~}|zywutsrpomlkhgedb`_]V,ã‚ÿ¼JIGFEDEDEDAö‚ÿ㢅 ŸŸžž€œœ›_&+“÷ÿ¹•”“’‘‘K##Ÿ!€€}}|zywutsrpnmkjigeca`_][T+ã‚ÿ¼IGF„EDD€EDUŽ~ƒÿОŸ€žœœ‚›š™™t&(åÿ¹“’‘‘K##Ÿ!~}|{zxwusrqpnmkjifecb`^][ZR+ã‚ÿ»FEEFF‡EFDŽ®ƒÿ„€œ‚›šš™™˜˜—‡.%oÓÿ·‘‘ŽŒJ#"Ÿ!}~}|zywwusrqpmlkjhgeca`^][YXP*ã‚ÿºEEFF†E€FD Öƒÿ¶ˆ›šš€™˜˜—––•”@%n½ÿ¸ŽŒ‹ŠH""Ÿ!{|{zywvutrpomlkjhfeca`^\ZYXVO*ã‚ÿºE€F€EFFEE‚FD8Œ1ñ‚ÿù©‚š›šš™˜˜——––••””“R$mžÆ¢ŽŒ‹Š‰ˆG"!ž€zxwutsqpnmkjihfeb``^\ZXWUUM)ã‚ÿºFEE€FE‚FGr’ÿ‹Wü‚ÿñ ‚™˜™€˜——€–•€”“’‘‘f$jŽŒ‹Š‰ˆˆ†G!!ž!xywvutrpomlkjhgfdc``^[ZXWUTSJ)ã‚ÿº€FEFGƒFNÙÓÿ‹€ƒÿ癃—‚–••€”“’‘‚[|Œ‹Š‰ˆˆ††„E! ž!vwutsrqomlkjhgecb`_^\YXVUTSPH)ã‚ÿºƒFGG‚F99UâÊb‹©ƒÿÚ€–€•„”“’’‘ŽŒ‹ŠŠ‰ˆ‡††„ƒƒD ž!tutsrpnmkjihfecb`^][YXUUSRPOG(ã‚ÿºFGGFF€GFD_êÉNŠǃÿÍ”“€”€“’‘Ž€Œ‹ŠŠˆˆ‡††„ƒƒC ž!rsrqpmlkjhgfdcaa^\[YWUUSQPNLE(ã‚ÿºGGFFG FFGGCiìÈJŠÚƒÿƒ’‚‘Ž€Œ‹‹Š‰€ˆ‡†…„ƒƒ€Cž!prpomkjihfecba`^\[YVUTSQOMLJD(ã‚ÿº„GFF€G?wíÈJŠ!éƒÿ¶„ŽŽ€Œ€‹Љ€ˆ‡††…„ƒ‚~}B!npnlkjhgfdcaa_^[ZYUUSRPOMLJHB(ã‚ÿºGH†GH=‡íÇJU‰8ô‚ÿþ¯€‚ŽŒŒ€‹Љ€ˆ‡††…„ƒƒ‚~}|zA!lmkjihfecba`^][YXVUSQPNMLJGFA(ã‚ÿ»HGHG HH9›íÇLK‰Sú‚ÿû¤€Œƒ‹Љ‰€ˆ‡€†…„ƒƒ€~}|zzx?!kkjhgfdcaa_^\ZYWVTSPOMLKJGFFB(ã‚ÿ»H€GHHGG€HI5 ½îÇLE‰eƒÿôš‚‹€Š‰‰ƒˆ‡€†…„ƒƒ‚€~~}{zzxww>!hihfecba`^]\YXVVSRPNMLKIGFFGB(ã‚ÿ»GG„H€I.HäîÇLF‰wƒÿñ•‰ˆ‡†…„„ƒƒ‚€~||{zzxwvuu=fgfdcaa_^\[YWVUSQPMLKJHGF€GB(ã‚ÿ»G„HI#¥íîÇLH‰Œƒÿñ“ˆˆ‚‡†…„„ƒƒ‚‚€~}}||{zyxwvutts<decba`^]\ZYVVTSPOMLKIHGFGB(ã‚ÿ¹€HIIH‚I>"‡ìîîÇMH‰’ƒÿç‹‚†……„„€ƒ‚‚€€~}}||{zzywwvuttrrp;œabaa_^\[YXVUSRPNMKJH…GC(ã‚ÿÈk…mr~†ÂîÇNJ‰­ƒÿↄƒ‚‚€€€~}}||{zzyxwwuutsrrppn:œ_a_^]\ZYWVTSQOMLKIHGGH‚GHB(ã‚ÿüø„ùøïíƒîÇNKUˆ°ƒÿâ„‚‚‚€€€~}¢®­­¬€«ª€© ¨¨§§ƒnml9œ^^]\[YXWUSRQNMLJHGGHHGHHGC(ãŒÿóíƒîÇNK?ˆ¯ƒÿâ‚€€€€~~€}€|{}åŒÿ¡lkk8œ\\[YXWWTSQPMLKIHGGHHGHC(ãŒÿóíƒîÇNKAˆ¯ƒÿá‚€~}}|€}€|{zz`VY΋ÿ û˜kih6œZZYWWUSQPNLKJHGG€H€G€HIHHC(ãŒÿóíƒîÇNKDˆ¯ƒÿà~‚|{{‚z yxu/5Yâ†ÿ ù¾‹mhff5›WXWVSRQONLKIHGGHGG€HI€HC(ã‚ÿûö…÷êæƒîÇOLKˆ¯ƒÿÝ}{‚zyxxwvt7‚<Ò„ÿ ü™hgffdc4› UVTSQPNMKJHGG‚HG€HIIHD)ã‚ÿ¸@@„B>BgŸæ€îÇOLFˆ¯ƒÿà|yyxx€wvv€utssj[G'€fûƒÿ Ïefedcba3› STQPNMMKIHGG‚HG€H€I€HID)ã‚ÿ¥…‚cãîîÇPMIˆ¯ƒÿàzwwvvut€s rrqqppd,$Õƒÿ¢ecc€a_2› PQONMLIHGG†HIHH€IE)ã‚ÿ¸??‚@?6(€ˆíîÇPMHˆ¯ƒÿßxuutts€r qpponnmmR«‚ÿ ýˆbaa`_^]1šMNMLJHGGƒHI€HIHIJE)ã‚ÿ¼„K€L 79ÝîÇPMBˆ°ƒÿßvssr qqppoonmml€kg)‚ÿ õya`^^\\Z/šKLKH€GƒHIHH‚IH€I€JE)ã‚ÿ¼‚K‚L M1!¾îÇPMUˆ­ƒÿÞt€q€poon€m lkkjjihh6ˆ‚ÿ ìm^^\\ZYX.šKIHGGƒHIIHH†IJE)ã‚ÿ¼€K‚L€MF!¢íÇPK‰’ƒÿêzo€nml€k jjihhgff>r‚ÿ ìl\[ZYXWW-š€GƒHIIHH†IƒJF)ã‚ÿ¼KKLƒM$!íÈQL‰Œƒÿî{mll‚kjji€h gffedc?o‚ÿ ìjYYWWVUT+šF„HIIHƒIJ€I‚JKKF)ã‚ÿ¼L…M/"~íÉQL‰‚ƒÿð{€j€ihg€f edccbaEp‚ÿ ëhWWVTSRQ*™G‚H€IHƒIJIIƒJ€KF)ã‚ÿ¼LL…M NN7!níÊRL‰hƒÿù…hggf€edcb€a`Co‚ÿ ëfUSSQQON)™G€H€IHƒIJJIƒJ‚KF)ã‚ÿ¼…MN=!fêÊRK‰Wû‚ÿüŒf‚ed€cba€`_^^]\Ao‚ÿ ëcRQPONML(™GH‡I€JIƒJ€KLKKG)ã‚ÿ½ƒM‚NOD!\âÌRL‰>öƒÿ—dcc€b€a€` _^^]\[[Z@o‚ÿ ëaPNNMLJI&™G†I€JIƒJ€K LLKLLG)ã‚ÿ½M‚N€OF!XàÒPU‰)íƒÿ¡baa€`__^^]^]\[[ZYYX>n‚ÿ ê_NLKJIHG&™HIJƒI†JKƒLG)ã‚ÿ½MM‚N‚OJ!OŒŒNŠáƒÿ´`€_^^]]\[[ZZYXXWVUU<n‚ÿ ê]KJHHGGH&™HƒI‡J€K…LG)ã‚ÿ½‚N„OLOPPNŠăÿË^€]\\[ZZY€XWV€USS;m‚ÿêZH€G€H&™HI‡J€K€LM‚LMH)ã‚ÿ½€N†OP99€PL‹§ƒÿÛ_[[€ZYXXWV€U TSSRQP9m‚ÿéXGG‚H&™HIIJK‚JKLLMM‚LMMG)ã‚ÿ½N…O…POU‹…ƒÿëgYYXXWWV€U TSSRQPPON7m‚ÿéX„H&™HJK‚JK€LMMLMH)ã‚ÿ½„OƒPQOŒYü‚ÿúwVV‚UTSSRQPPONMML6l‚ÿéY‚HII'™IJJKƒJ€K€L€M€LƒMH)ã‚ÿ½‚O‚P„QPŒ,ïƒÿˆUUTSRQPPONMMLLKJ4l‚ÿéY€HI€H&™IKƒJKLL€M€LMN€MH*ã‚ÿ½€O‚P‚QRUŒ Öƒÿž€RQP€ONMM€LKJIHH3l‚ÿéXGHII'™I‚JK€L€M€L€M NKMKMMH*ã‚ÿ½O‚PQƒRQƒÿÿ†¨ƒÿÃPPOON€MLKKJJHGG€F2l‚ÿéY€HI'™I€JK€L€M€LM NLNNLMNH*ã‚ÿ¾PQ…RO‚òìì†nƒÿäXNMMLKK€JHGGFGG3l‚ÿéYHƒI'™IJK€LMLLMN:2FOL€NH*ã‚ÿ¾PP€Q‡RPU‚€í†.ð‚ÿùr€KJJIHGGF‚G3l‚ÿéZ„I'™I€K€LM€L€MNNJCPLNNOI*ã‚ÿ¾€Q‰RQ‚ìíí†̓ÿœIIH€G‚F„G3l‚ÿêZ‚IJI'™JKKLL‚MLLM€N AJNKNOOI*ã‚ÿ¾QˆRSSQU‚4ìí퇑ƒÿÏIFF‚EF†G3l‚ÿêZIH‚I'™J€LMLLM€NMM6'LNK€OI*ã‚ÿ¿†R‚SQƒŠíëî‡>ô‚ÿòcE‡F€G3l‚ÿéY‚IJJ'™KLMLLMN€M+.ONL€OI*ã‚ÿ¿ƒR„SQUƒÅíìꇃÿ¥‰F‚G3l‚ÿêZ€IJ'™K€M€L€MN€MNM :ONMOOPJ*ã‚ÿ¿R„STTQƒåîìîˆvƒÿäR…FƒGHH3l‚ÿêZ„J'™KM€LMNMM€NEGNMMOPPJ*ã‚ÿ¿RRƒSTRUƒYëîìÿˆ'îƒÿˆƒF‚G‚H3l‚ÿê[ƒJK(™KLLMNMMNO7OMMO€PK+ã‚ÿ¿ƒSƒTU„£íî튰ƒÿÝKFFƒG„H3l‚ÿê[J€K(™KMN€MNOO%3NMMPPQQK+ã‚ÿ¿€S…TRUƒÕîîíŠGôƒÿ‡‚G‡H4l‚ÿê[JJKL(˜KMMN€MN€ODMMNLP€QL>ò‚ÿ¿S‡TU„]êîîí‹­ƒÿêKGG‡HII4l‚ÿê[KLLK(œKM€N€MN‚O.2NMNMQQRRLDø‚ÿ¿‡TQ„ ½îîëì‹+çƒÿ¯ƒG€H‚I4‚ÿê\JJKL)³ HN‚M€NƒOG%O€MNRGGø‚ÿ¿…T€U„†í€îíŒzƒÿüƒƒG‚HII4΂ÿì\K€L(¿ EMN„O-O€MNNRF_þ‚ÿ¿‚T‚U„]ä€îì匾ƒÿøi€G‚HI-wý‚ÿäXKKLK!/Ö7„MQ€RS?¢ƒÿó€„UƒOŒå‚îívþƒÿ÷–IHI€J2déƒÿ®…LE¡éƒ-8@?@97HJLN„MRR€S8ׄÿó¸‹seeiÛÿçìëîË×í„î…ÿÆ|WJP`¥ùƒÿ¿RLLKLL=Tò醃?O„MNM‚S.xý‡ÿöëìüÿÿòëì‡îì •ù„ÿþèл´ÄØóƒÿõ¤R‚K€LRNŠìÿé?O„MNM€STQ(5ÐŽÿóí‡îëî’zöÿÖ|‚KLgÓï€ÿé?O…MNSSTOKLQÑŽÿóí‡îìï“aåÿù©Y‚K€LJC]‚ÿé?O„M NNTPD>MKPÒŽÿóí‡îìì”-°ó‰ÿò«n‚KL E 8ÂÉÈÈɸ4B‚@ INOQ=)A?A¦†ÉÈ΃Ͻ„¾Àãìíÿ–Aªç„ÿù×UFK‚LMA€Œ€„C€T2€€ƒ……ÿÿ™ _Œ£««vM6<‚KL€MD" Š!„"ˆ#%K€T<#Š$¶=‚KLƒMLLM„N‚O€P„QRSSTSS‚T„UO¸p‰‚•)€€tZB3..2=[s~{™ü€ÿö¸°°š?,+v÷…ÿ©Yžž›š˜˜—–”’ŽŒŠ‰‡…['! U…|z€{z|}|€„‚•)€~hNWTF8.Ak|{™ü€ÿ ö·°¯­¡‡[/++*°„ÿê–™ž›š™˜—–”“‘ŽŒŠ‰ˆ†„€r\9€*o~‚|^4€.(%3CZt‚‚• )~oˆ±¶¶±£u;€->h}{™ü€ÿ ö·®®­¬¬«}/**kýƒÿ ÕŸž›š™˜—–”“‘ŽŒŠ‰ˆ†„„‚€{Hb|~m$…"f€‚•(u¹µ¶¶€µ´M€->jz™ü€ÿ õ¶­¬¬««ªªY**Dìƒÿ Àž›š™˜—–”“’ŒŠ‰ˆ†…„‚€~{u*O| ~uYYWUTSRC…i€‚•·³µƒ´³¤M€-Io™ü€ÿ õµ¬¬«ªª©©‚+*1Õ‚ÿ!ü±›š™™—–”“’ŽŒŠ‰ˆ†…„‚~|{y@B|‚ whfeca_^\Y…>z€‚• ³´³³²£K€,[”ü€ÿ õ´««ªª©¨§˜4),É‚ÿ!ö¨›š™˜˜–”“’ŽŒŠ‰ˆ†…„ƒ€~||yxP5z‚ wfeca`]]\YU„v‚‚•¯³³…²±±”2,,1{ú€ÿ õ³ªª©©¨§¦ A))±‚ÿ!󤚙˜˜–”“’ŽŒ‹‰ˆ†…„ƒ‚€~||zxwY/}‚ vecb`^][ZYV…o‚‚”K„²±±°¯n€,^÷€ÿ õ²©©¨§§¦¥£H)(®‚ÿ!󣙘—–”“’Ž‹Šˆ†…„ƒ‚€~||zywua/z‚ vcba^^[ZYWWU„T{‚‚“¯²±‚° ¯¯®®«O++5×€ÿ ù·¨§§¦¥¥££T((¯‚ÿ!󢘗–”“’ŽŒŠˆ†…„ƒ‚€~||zyxusa(s‚ ub`^][ZYWVURUƒ/~‚“dƒ°€¯®­­¬„€+€ÿ ü¹§¦¥¥¤£¢¡V((¯‚ÿ!ꜗ–”“‘ŽŒŠˆ†…„ƒ‚€~||zyxvsrb $t‚ t`_]\YXWVUTRPƒ’¥¯‚®­­¬«¥B++Kðÿÿü¸¥¥¤££€¡U((¯‚ÿ!瘕”“‘ŽŒŠˆ‡…„‚€~}|zywvsrqg%%t‚ t_^\ZXWUTTRQPKƒƒŠ’R‚®€­¬«ªªm**+¼ÿÿü·¤££¢¡¡ ŸT''¯‚ÿ!ç—”’’ŽŒ‹Šˆ††„‚€~}|zxwvtrqoe$$t‚t^]ZXWUTSRPPONU‚…Š‘•…¬«ª©©•3**|ÿÿüµ£¢¡¡ ŸŸžS''¯‚ÿ!æ–’‘ŽŒ‹Šˆ††„‚€~}|zxwvtsqond$$t‚ s\[XWUTRRP€OPM‚€€‘&©¬„«ª€© ¨¨§¦R*)L÷ÿüµ€¡ŸŸžœR'&®‚ÿ!æ”‘ŽŒŠŠˆ‡†„‚€~||zxwvtsronmc#$t‚ s[YWUTRQPOO€PNU‡€‘Z««„ª©¨¨€§¦¥w))0áÿü´¡ Ÿž››R&&®‚ÿ!æ’ŽŒŠ‰ˆ††„‚€~||zywutsromlka##t‚rYVUSRP€O‚PM }‹}ª„©€¨€§¦¦€¥¤‘1)-Åÿü²Ÿžœ›š™Q&&®‚ÿ!å’ŽŒ‹Š‰ˆ††„‚€~||zxwutsromlkh`"#t‚qWUTRP€OƒPNU–𩍂§¦¦¥¤€£ G(-®ÿý´œ›š™™˜P&&®‚ÿ!åŒ‹Šˆ‡†…„‚€~}|{zxwutrqonljig_""t‚pVSRPOO…PQN–0¦‚§€¦¥¤¤€£¢€¡ d(,˜÷ÿ¾œ›š€™˜—O%%®‚ÿ!厊‰ˆ††…„‚€~}|{zxvusrqomkjihe]!"t‚pTRQOO„P€QOU•Q…¥¤¤£¢¢¡  Ÿy(*„çÿ½š€™˜—–•N%%®‚ÿ!䌈ˆ††„ƒ‚€~||zyxvutrpomljiged[ "t‚pQPO„P‚QRN•g¤ƒ£¢¢‚¡ €Ÿž1'tÕÿ»™™˜—––””N%$­‚ÿ!䊇†…„‚€~||zywvttrpomkjigfcbY !t‚o†PQ€RP”x€£¢ƒ¡  €Ÿžœ›C'sÁÿ¼˜—––””“’M$$­‚ÿ!㈆„ƒ‚~}{zxwvttronmkjigedb`X !t‚nPQ‚PQ‚RPU“ ˆ…¡  Ÿžžœœ››šV&s¥Ê©––””“’‘L$$­‚ÿ!㇄ƒ‚}|zyxvutsronlkjigeca`_W t‚nQ‚PQ‚RS`hÿ’–‚ ‚Ÿžž€œ€›š€™l&p—–•””“’‘K##­‚ÿ!ㆂ€}|zxwvttrqpmlkjhfecb`^]U s‚nQ€PQ„RU|z?’$œ€Ÿ€ž‚œœ€›š™˜˜‰`ƒ•””“’‘ŽJ##­‚ÿ!â„~||zxwvttrqomkjihgdca`^][S s‚nQPP€Q„RBCY~wN’6ƒ€œ›š‚™˜˜—––•””“’’‘ŽŒŒI#"­‚ÿ!â‚~}{zxvutsrpomkjigfdc``^\[YQs‚nPQ„RP![xU’Iœ„›šš‚™€˜ —––••””“’’€ ŽŒŒŠŠH""­‚ÿ!á}}zywvttrqpnmkjigedb``][ZYWPs‚nQƒRSSN"a€xS’V€š…™€˜ ——––••””“’’‘€ ŽŒŒŠŠ‰ˆG"!¬‚ÿ!á€|zxvutsrponljihgeca`_^[YXWVOs‚oQQ„R€SJ#exS’d‡˜—–•€”“’’‘€ŽŽŒ‹ŠŠˆˆ‡†F!!¬‚ÿ!á~yxvttrqpnmlkigfec``^][YWWUTMs‚nQƒRSTG#kxUUl€—„–••€”““’’‘€ŽŽŒŒ‹ŠŠˆˆ‡††„E! ¬‚ÿ!à{wutsrponlkjhgedca`^\[YWWUSRLs‚o‚R‚S TTB$pxUUx–€•„”““€’‘€ŽŽŒŒŠŠ‰ˆˆ‡†…„ƒ‚D ¬‚ÿ!àyttrqpnmlkjgfecba_^\ZXWVUSRRMs‚oRST=%u€xVU€”““‚’€‘€ŽŒŒ‹ŠŠ‰ˆ‡‡†„„ƒ‚C ¬‚ÿ!ßwsrponlkjigedcaa^]\ZWWUTSRRSLs‚oRRSƒT5Ay‚xVU…’‘‘ƒŽŒŒ‹ŠŠ‰ˆˆ‡†…„„ƒ‚€C¬‚ÿßuqpnmlkjhfecba`_\[YXVUSRR€SLs‚oRS„T(d€‚xVU‚„€Ž ŒŒ‹‹ŠŠ‰ˆˆ‡€†…„ƒ‚‚€~~}B«‚ÿÞsonlkjihedcaa_^\ZYXUTSRR€SRLs‚o€S„T UI"V~‚‚xWUˆŽŽŽ€Œ‹‹€Š‰ˆˆ‡€†…„„ƒ‚€~~}|{A«‚ÿÞqllkjhgecba`_][ZXWUSRR‚SRMs‚r\„]^beZj€‚xWU!Š…Œ‹‹€Š‰€ˆ‡€†…„„ƒ‚‚~}}|{zy@«‚ÿÝokjihfdcaa_^]ZYXVUSRR‚SRSMs‚~ƒ}~~}€‚‚xWVU ‡…Љ‰€ˆ‡†…€‚€‹°±°°¯¯®®­®‹yxv>«‚ÿÝmihffcba`_]\ZXXVTRR†SNsŒ„‚xWVU …„ˆ‡†‡†……„„€€{™ü†ÿ¨vut=ª‚ÿÝkgfdbaa_^][YXVUTRRƒSTSSTNsŒ„‚xXWU„‚†…€†…„ ‚g\^u}~{™ü…ÿûŸtsr;ª‚ÿÜiedaa_^][ZXWVTSRƒSTTS€TNsŒ„‚xXWU ƒ€…„€ƒ€‚ ~3 ,=Soy™üƒÿ úÂ’wrpp:ª‚ÿÛgca`_]\[YXVUTSRƒSTTSTNs‚}†{}}€‚xXWU"‚„€ƒ€‚€}; 3h˜ü‚ÿ ürqppnn9ª‚ÿ Ûd`_^][ZYWVT…S†TOs‚`**…+0C]{€‚xXWU‚‚€€€~ }||rcL+H‘ü‚ÿ Ñoponmlk9ª‚ÿ Úb^][ZYYVUT…S†TUNs‚X…‚Fy‚‚xYXU}€€~}|{€zyl0$û‚ÿ ¨onmlkkj7ª‚ÿ Ú`\[YYWUTSST‚S€TU‚T€UOs‚lƒIJI>.€]~‚yYXU|~~}}‚|{{zzy€xwvYoúÿ ý‘llkjjhh6©‚ÿ Ù^YYXVTSSTTSTUU€T‚UOs‚pVƒW ?7yyYXUz|{{€zy€x wvvuutq-`úÿ õ‚kjihgfe5©‚ÿÙ\XWT€STTS€T€U€T€UVUUOs‚pVV…W X8&vyZYUx€zyxy€xw€vu€tsrr;Zûÿ íwihgfedc3©‚ÿØZUTSSTTST€UTTUV€UNs‚p…W€XP&t€yZXo€xw‚vut srrqppDSúÿ ívgfedbaa2©‚ÿØWSS€T€STUTT€UVV€UTO t‚qƒWX YY*&nyZWk€vuu€tssr qpponnFLüÿ ítccaa`_^1©‚ÿ×V€TS€TUTTUVV‚UO t‚qWXY6&jyZW g€t€s€rqp€o nmmlkkLLüÿ íqaa`_^]\0¨‚ÿ×WTT€STUTT€U€VƒUP t‚qWWXƒY?&f€z[X\rqqp€on€m lkkjjiKLüÿ ìp`_^]\[Z/¨‚ÿ×W€ST‚UT€UVUUV€UVP t‚qX…YE&a€z[WTp‚on€mlkkjjiihggIKüÿ ìn]][[YYX.¨‚ÿ×VST‡UVUUVUU€VP t‚q€X…YZM&_z\U‘Jn€mllkjjiihggfeeGKüÿ ìk[ZYYXVU,¨‚ÿ×V€TƒUV€U‚VUVVU‚VP t‚qX…Y€ZP&]{[U‘@l€kjjihhggfeedccFKüÿ ìjYXWVUTS,¨‚ÿ×WT‡U†VUƒVQ t‚q„YZ[U%[lk[’1ihh€ihggffeedccba``DJüÿ ëhVVTTSST,¨‚ÿ×WƒUV€UŒVWWQ t‚q‚Y€Z[W#Z[[Z’"hggfeed€cba€`^^BJüÿëeT€STTS,¨‚ÿØXUV€UƒVW†V€WQ t‚q€Y€Z„[AA€[W’dee€dcbbaa€` _^^]\\AIüÿëc„S,¨‚ÿØXUUV€UƒVW†V‚WQ t‚qY€Z‹[U’ [ccbbaa€`_^^]\[\[ZZ@Iüÿëb„S,¨‚ÿØXV€UƒVWW…VƒWXR t‚rZZˆ[\Z“Oaa`_^^]\[[ZYYXWW=Iüÿëc‚STT,¨‚ÿØXUU„VWW„V„WXXR t‚r‡[„\[”C``_€^]\[[ZYYX€WUU<Iüÿëc€ST,¨‚ÿØX„VWW…VƒWXS t‚r…[‚\]U”5^^]\€[ZYYX€W VUTSS;IüÿëcSTUU-¨‚ÿØY‚VWW…VƒW XRSUYYS t‚rƒ[\ƒ][ƒ_m€[ZYYXX€WVUTSS€R;Iüÿëd€TU-¨‚ÿØY€V€W„V„W XVOOVYYS!t‚r[\…]Z‚£{‡ TYXWVWWVUUTSSRSS;IüÿëdT‚UT,¨‚ÿØYV€W…VƒW XB9NOOXYYS!t‚r[[€\‡]\U‚‰~…C€VUTTSRSR‚S;IüÿëeUU‚T-¨‚ÿØYWW…VƒWXXTJPPYYZT!t‚r€\‰]\‚ŠŽ.UTTSRR‚Q„R;Iüÿëd‚TUU-¨‚ÿØY…V„W€X K$NNPYZZT!t‚s\ˆ]^^]U‚&}€ŒŽ€R‚Q‡R;IüÿëdTT‚U.¨‚ÿØYƒV„WXY?-ONRZZ[U!t‚s†]‚^]ƒU~}ŽDQ‡R€S;Iüÿëd‚UVV.¨‚ÿØY‚VƒWX€Y13PNT€[U!t‚sƒ]„^]Uƒr€~Œ'‰R‚S<Iüÿëe€UV.¨‚ÿØY€VƒWXYX$?OOV€[U!t‚s]„^__]ƒyª L€Q‚RƒSTT<Iüÿëe‚VUU-¨‚ÿØYV„W€XƒYOJNOX€[U!t‚s]]ƒ^_^Uƒ;z‘4ƒQ€RSS‚T<IüÿëeƒUV.¨‚ÿØZƒWXƒYZ?PMOZ€[V!t‚sƒ^ƒ_\„b~ƒ‘ NPPƒR„S;IüÿëeUVUU-¨‚ÿØZWX„YZZ+5NMQ[[\\V#s‚s€^…_]Uƒ q‡’3‚Q€R„S<HüÿëdTTUV.§‚ÿØZWWX„Y€ZNMMNP[€\V+y‚s^‡_Y„@z‚€’OQQ‡RSS;MúÿëdU€V.«‚ÿÙZW€X„Y€Z[[53NMNS\\]]V+}‚t‡_]„ e‚~Ž“'†R‚S;`úÿëeUU‚V.Å‚ÿçe€XƒY€Z€[R&O€MU]Q1z‚t…_`^U„P}‚‚~Ž“ pƒR‚STT<{ûÿíf„V-Ñ‚ÿíhX„Y€Z[3 O€MOW]O?|~u‚_€`__„>u‚‚€™“)xc€R‚ST3J”üÿæb„V&1ê‚ÿú}ƒY€Z‚[@%JMOZ]OL|~w€_‚`^„=s‚€™“)ui‚S‚TR"?m™ü€ÿý•‚VWWU"UûƒÿÁ^€Y€Zƒ[E8ƒMP\€]^H]|~zrƒ`^ƒ7Rw‚”)€€unSS„T9Apz™ü€ÿ³VWO¢…ÿÒŸ‡z{{||{‰`FMNƒMQ]]€^?k~ƒzumhddcrts„‰qr‚‚€‰”)€€{sfYT VT\x{™üÿÿÃ\€V‚WEVò‡ÿþƒùþøoG„MNR‚^4L}… ~~|{z~}}€}€„‚…”)€€~|yuqpssx}{™üõª]VVƒW]SŒíÿ÷nG„MNS€^_Z,4nˆ‚}”)€€ƒ~~ƒ{—Õ„VV„WpÕð’ÿ÷nG…M U^^_VLLOrˆ‚~”!~€Š~vobV„WUMb”ÿ÷nG„M NV_ZMAMLNr‡‚€ˆ” cu~‡~u_XV…WN%;ÃÊ’ÉÂY<‚A KQQZE"+A@A]i…hfgiz€‚–(Vp}~~{lNEQV…WXJƒŽ€€L€_9€€†…† ™š 6HPVVPF45EV…W€XN'%†&‰'(('€('*U€_D'(‰)¶GV…W‚XYƒX€Y†Z€[„\]^^_„^ƒ_^Z¸UU„WX…Y€Z…[€\…]^…_‚`ƒa_[»UVWX…Y€Z…[€\„]‚^…_‚`ƒa_U½UUW‚X„Y€Z†[€\„]‚^…_`ƒa`]ÁUWXX…Y€Z†[€\„]^…_‚`‚a_^UÃUVX„Y€Z†[€\„]^…_‚`a`_UÇUWXY€Z†[€\„]^…_‚`€a`_UËUWXY€Z†[€\„]‚^…_`aa__UÐUXY†[€\„]‚^…_`_^^UÔUWYZ‚[€\…]^…_€`^]UÚUXYYZ€\…]^†_^[UáUZWY[[\]‚^__]]\\_fîU_Uÿÿÿÿÿÿÿ¬ÿÿÿÿÿÿÿÿ£¯³²´²±°¯°¯®®«ªª§¥£¡¥ªã»·¶·µ´´²²°°¯®­¬«©¨§¦¥¤£ ž›”Ü#»¹¹º¹¸¸··¶µµ³²±°¯¯®­¬ªª¨§¥¥¤£¢ žš™•Ö¶¹€»$ºº¹¸¸··¶µ´³²±°¯®­­«ª©§¦¥¥£¢¡ žœ›š–”‹Ñ-º¼½½¼»»º¹¸¸··¶µµ³³±°¯¯®­¬«ª¨§¦¥¤£¢  žœ›™˜–”‘Í »½¾½½¼»»ºº¹¸€·#¶µ´³²±°¯®®­««ª¨§¥¥£¢¡ Ÿžœ›š™—–”’’ŽŒªÈ6»½¿¾½½¼»»ºº¹¸¸··¶µµ³³²±¯¯®­¬«ª©§§¥¤£¢  žœ›™˜—•”’‘Ž‹ˆU;¿¿¾½½¼»»ºº¹¸¸€·'µµ´³²±°¯®­­«ªª¨§¦¥£¢¡ Ÿž›š™—–”“’Œ‹‡…Áª¼¾¿¿¾½½¼€»ºº¸¸€·*¶µ´³²²°°®®­¬«ª©¨¦¥¥£¢ Ÿžœ›™˜—–”’ދЉ‡„¾»¾¿¿¾¾½½¼€»ºº¹¸€·,¶µ´³³²±°¯®­¬«ª©¨§¦¥¤¢¡ ž›š˜—–””’ŽŒ‹‰‰‡…‚»ª¼€¿¾€½¼»»€º¹¸€·/¶µ´³³²±°¯®®­«ªª¨§¦¦¤£¡ Ÿžœ›™—–•”“‘Ž‹‰‰‡…„ƒ~j²  A·¿¿¾¾€½¼»h[¸¹¸¸€·1¶µµ³³²±°¯®®­««ª¨¨¦¦¥£¢ Ÿžœ›š™—–”“’ދЉˆ‡…ƒ€€{}® ƒ8r¯€½¼»»³µ¸¸€·µ±±€¯®­­««ªª¨§¦¥¢£¥¤¢¢ ž›š™—–””’‘Ž€Œ Љ„€~}}{xq†™‰ÿ– ˆ -v¶¼»}sˆ)´¸€·¶™/ƒ)‚('%D¡£¢ ž››™˜—•”’‘Ž‹¶åãàP€€… ÷†ìîë•‹?•µ?B2+´··¶³²‹Ž ¢  žœ›™˜—–”“’Œ‰‡Çÿÿü@Ž£ù‡îí•I+´·¶ PL? Œ : ¡ žœ›™˜—–”“’Žd::‹óÿü@Ž£ù‡îì• %°¶µ˜€-)‡b‰›¡ žœ›š™—–•”’ŽS#"(EuÃAŽ£ù‡îì•€ '-//.*€ ¤µ´A--€,…R¢£¡ Ÿœš™—–•”“‘‹_("€!$†€‚œïæ†îì• XVH9/' ¤´³²¥‹]0€,„†£¡ Ÿžœ›™—–•”“’Œ‹†w_ ‚ijjhfeda``^]\[[\‚[ \\[[ZZ[Uƒ†òƒîÌ`^_#‡‰‰ŠŠ‰‰€ˆ‡€†…ƒ>‚! „ 7zyxwvu= ‚hhgfdca`_^\[[\\[€\ [[ZZ[[V‚…2Gi æ€îÌ`^Y…ˆˆ‡€†€…„ƒƒyiQ-€ ƒ uxwvuts= ‚fgdca``^]\[[\\[€\ƒ[\V‚ …€ gäîîÌa_Z ƒ††……„„……„ƒ‚€€r2 ƒHwuu€sq; ‚ cdb``^]\[[€\€[\‚[€\V‚OOP€OPNC1€ŒíîÌa_[„„ƒƒ‚‚‚€€~~_!‚ Ytsrqqoo: ‚`a`_^\[[\[[ƒ\[\[‚\V‚#€^]€^ EAÞîÌa_U‚€€~}~}€|x0‚ arqponnl9 ‚^_^\€[\[[…\[ƒ\V‚#^^€]‚^ _<)ÄîÌa_U}€€~€}|{{€zyx?‚ gponnllj8 ‚\]\[[‚\[Œ\]]V‚#^]]‚^€_W)«íÌa^v€~}|€{€zyxxwvI‚ enmlkjji7 ‚Z[[Š\]…\€]W ‚#^]^ƒ_-)˜íÍb^p€|‚{€z yyxxwvvuuJ‚ clkjjhhg5 ‚Yƒ\[†\]‚\€]^^W‚#^…_:)‹íÍb^ lz„y€x wwvvuutssQ‚ `jjhgfed4 ‚Z‰\]\\]\]€^V‚#^^…_ ``D)|íÎc_byxxw€v uttutssrrqP‚ ^hffddba3 ‚Z‡\]]\]]\€]^]V ‚#…_`K)uëÎc^Zwvv€uts rrqqppoonN‚ \edba``_2 ‚Z\]„\‚]€\]^]]W ‚#ƒ_‚`aS)mãÐc]‘Nutt€s€rq€po€nmmlL‚ Zba``_^]1 ‚Z„\]]^]]\€]‚^]^^W ‚#_‚`€aV)hâÕbf‘Es€rqqp onnmllkjjiK‚ X``_^]\[0 ‚Z‚\ƒ]€\€]‡^W ‚#__‚`‚a[(a——a’5q‚ponnmmllkjjiihhJ‚ W^^\\[[\1 ‚Z€\€]^€]\\]ˆ^W ‚#‚`„a]%abb`’$€o€nmllk€j iihhgfeH‚ T\€[€\1 ‚Z\€]^€]\\]ƒ^_‚^_X ‚$€`†abFF€b`’k‚lkjjiihhggfeedcG‚ R[[‚\1 ‚Z]]^]\\€]ƒ^__‚^__X ‚$`…a…baU’ b€jihhihhggfeedccbaE‚ R‚\[[0 ‚[^]\\€]„^__^€_`Y ‚$„a‡b`“U€h€gffededccbaa``D‚ S\[\\1 ‚[€]\\]ƒ^€_€^_``Y ‚$‚a‰ba”Hggffeeddcbba``€_]]B‚ R€[\1 ‚[]\\]ƒ^€_€^_`Y ‚$€a‡bc\”:eeddc€ba``€_^]\[[@‚ R[ƒ\1 ‚Z\]„^€_€^€_ `•¬n``X ‚$a†bƒcbƒÿÿ"bcbba€`€_^]\[[€Z@‚ S„\1 ‚Z€]„^€_€^_ `kî÷p``Y ‚%…b„cdb‚òìì Z``_^__^]]\[[Z[[A‚ S„\1 ‚[]„^_^^_ `H>}ÿÝd``Y!‚%‚b„c€dbU‚€í I]^^]\\[Z[Z‚[A‚ S\\[\1 ‚[ƒ^_€^€_``[ šÿÊ``aZ!‚%€bƒcƒda‚ìííŽ2\[[€Z‚Y„ZA‚ R[\]\1 ‚\^‚_^^_€` Q'Àÿ¸`aaZ!‚%bƒc„dcf‚4ìí펀Y‚XY†ZA‚ S\[‚\1 ‚\€^_^^_‚`D4Þÿ¤€aZ!‚%c‡daƒŠíëîŽJX‡Y€Z@‚ R„\1 ‚\^_^^_„`5Uöÿ‘€aZ!‚%ccˆdc\ƒÅíìê+‰Y‚Z@‚ Sƒ\]1 ‚]€_€^€_„`a`(Žÿø}aab[!‚%ˆdeecƒåîìî S…Y…Z@‚ S\€]1 ‚]_€^_ƒ`€aUÊÿìoabb[!‚%…dec^ƒYëîìÿ9ƒY‡Z@‚ S\\]^2 ‚\^^_ƒ`‚aDI÷ÿÞg€b[!‚%ƒd‚eff„£íîí‘WYYˆZ[[A‚ S]€^2 ‚\_„`€a`aa.œÿÿÍb[!‚%€d‚e€feUƒÕîîí’9ˆZ[B‚ T]]‚^2 ‚]__„`„aS8ìÿÿ¹b\!‚%d‚eƒf„]êîîí’W…Z[\\B‚ Tƒ^]2 ‚]_ƒ`†a9ž€ÿ ¤bbcc\!‚&eƒfd„ ½îîëì“%‚YZ€[‚\B Uƒ]^2‚ Xƒ`†aWvúÿÿþ‘cV‚&e…fdU„†í€îí“>YYZ„[A T]€^1‚ W`€a`„a7]õ€ÿø€cdUƒ&…fed„]ä€îìå“H€Z†[8 ‚V]]^])‚K``€a`„abDeëÿírc€dTƒ†f„`Üîìÿ“E†[\Z& :]ƒ^[&„$^a``„abdr©ù‚ÿÞidL ƒLƒfeƒOŒå‚îí”:ƒ[€\? *…^W …8EƒNFFœÏô„ÿÍ‚dC„*FT\^X–ÿëîË×í„'DT[€\Y< €"[ƒ^__Lˆƒ φÿ¾‚d7ˆ €¡øì‡î씂$,/(€ 0Z‚^€_\,  Іÿ«€del\¦=Ž£ù‡îëî” B‚^_Q’ Іÿ›ddeãúýAŽ£ù‡îìï” S‚^__^[S.” Іÿe`R£ÿÿü@Ž£ù‡îì않9‚]^U(’¥ƒÊ ÕÜÖzI$rÍÊÇ7†„Ç„¾Àãìíÿ–†+W]‚^_Pˆƒ Shhe<…„…ÿÿ™  .K‚]^€_T*€(ˆ)* -[eefI*+,,+ƒ,¶L‚]^ƒ_ƒ^„_…`a„bcceeffeƒdƒec_¸U[]]‚^…_`„a„b‚c„d€e‡fƒgfb»[]^„_‚`„a„bc…d€e‡fƒgdU½U[^…_`…a„bc…d€e†fƒgfbÁ[^ƒ_`„a…bc„de†f‚gfeUÃU\]€_`„a…bc„de†fgfe_Çf]]`„a…bc„de†f€ged^ËU]_`„a…bc…d€e†fggfeUÐ\__‚a„bc…d€e†fefdUÔU_``a„bc…d€e…fddUÚU\_aa€b‚c„defeffUáUd`_aabc…deeccfddfîfdUÿÿÿÿÿÿÿ¬t8mk@-Nr™ÉÌÌçÿÿÿÿðÌÌÌŸ{Z3NÒÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÞŸW-„ÆÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿØ?rÏÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿá!?´ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆZHÆÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿØ`WÒÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿál*½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÕ? ‡ùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¢Háÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðf‡ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ« Vy‰˜}_BÅÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÛ3D¨äÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿùl.³ûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿåÄÄÄÄÄÄÄÄÂÁÁÁÁÁÁÁÁÁÂÃ@pñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿW"³ûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿT9ÐýÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿTLÔÿÿÿÿÿÿÿûóÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþýýýýüüýÿÿÿÿÿÿÿÿÿTUÍüÿÿÿÿÿÿóÛÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿíÍÌÌÌËÍÓÚçùÿÿÿÿÿTQÁðÿÿÿÿÿÿÛÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿâ·¹¿¿¿¿¿¿ÊïÿÿÿÿT2¶ÚÿÿÿÿÿÿÕ_üÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿˆ*=Oy®¿¿¿ÆóÿÿÿT“ÉùÿÿÿÿÿìNíÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿü< ¿¿¿ÓüÿÿTQ¿èÿÿÿÿÿûbÃÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿáš¿¿ÁÑÿÿT­ÒýÿÿÿÿÿµŠÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ·=¼¿¿“ÿÿTyÀíÿÿÿÿÿùwÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿr‘¿¿jùÿT7»Ïýÿÿÿÿÿ³äÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿù$T¿¿QáÿTˆ¿æÿÿÿÿÿû¨ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ´+»¿BÁÿT.ºÆùÿÿÿÿÿÕùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿN©¿?¡ÿSu¿Ôÿÿÿÿÿÿßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿä ‘¿?‚ÿk­¿èÿÿÿÿÿóÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ„y¿>eÿ{@¿Æøÿÿÿÿÿôÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿóa¿PQÿ€|¿ÔÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿL¿\#ŸM«¿äÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿó=¿`@¿Âóÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿxw:o¿Íýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ䛿ÛÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿK(¸¿çÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ®R¿Âòÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüw¿Éûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš¿Ñþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð³¿Ûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿý 7¾¿æÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿNS¿Àîÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿs¿ÂôÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÇŒ¿Æøÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿù ¿Ëüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ3«¿Ðþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿc"¶¿Õÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ4¼¿Ùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ±@¿¿ÞÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÏM¿¿àÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿí\¿¿çÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿa¿¿çÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿv¿¿çÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ'y¿¿çÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ-x¿¿çÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ3x¿¿çÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ6x¿¿çÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ-x¿¿çÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ*x¿¿çÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿx¿¿çÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿx¿¿çÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿóy¿¿àÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÕv¿¿Þÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ·a¿¿Üÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ–\¿¿ÕÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿlU¿¿Ñþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ<B¿¿Ìýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿü7½¿ÇùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÒ&¸¿Äöÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ–¯¿ÀíÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿZ ¤¿¿åÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüŠ¿¿ÜÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÃq¿¿ÒþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿxW¿¿Èúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ!8¾¿ÁòÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀ±¿¿åÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ`=Έš¿¿×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð ‚ÿ“r¿¿ÉúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŠ.šg·ÿtF¿¿Àðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüa¿~æÿY²¿¿ßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŸ‰¿Œÿû<‘¿¿Ìüÿÿÿÿÿýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿü$¬¿®ÿî&`¿¿Àìÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿœ=¿ÀÜÿÔ&¶¿¿Ùÿÿÿÿÿÿùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿóm¿Èýÿ½ˆ¿¿Çúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿi  ¿ÖÿÿŸL¿¿¿çÿÿÿÿÿÿéÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÏ7¾Âìÿÿ€°¿¿Îüÿÿÿÿÿýõÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ<m¿Óýÿÿey¿¿¿çÿÿÿÿÿÿÝÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ“  ÁïÿÿüF,¶¿¿ÈøÿÿÿÿÿÿÛÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿØ =½Þÿÿÿð+v¿¿¿Úÿÿÿÿÿÿøñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿù3ÔýÿÿÿÛ©¿¿Áëÿÿÿÿÿÿéýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿi^ÔùÿÿÿÿÄO¿¿¿ÉùÿÿÿÿÿÿëÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŸSÜýÿÿÿÿÿª…¿¿¿ÙÿÿÿÿÿÿÿùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÃ5]±õÿÿÿÿÿÿÿ‰®¿¿¿âÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿùâááßã÷ÿÿÿÿÿÿÿÿÿÿoL¾¿¿ÁàýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýLj¿¿¿¿Ùýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿô0c»¿¿¿Ô÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿëO¸¿¿¿ÈçüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýòðððððððïïïïïïïïíÊÄœ=§¿¿¿¿Ìæ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïÅÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀ±yµ¿¿¿¿ÆÓÞäææðþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÔ–“““““‘‘‘‘‘‘‘‘‘‘‘“u(t©¿¿¿¿¿¿¿»Ÿ‡èÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿó]<\nuumQ- ·ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÒ'xöÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ“ $·ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÏ9Táÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðo ðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿù™{íÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿö“ räÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿíE¥óÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿü´T `·öÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀrB~½üÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ̇K 3Z~¢ÌöÿÿÿÿÿÿÿÿÿÿÿÏ«‡c33333gle-graphics-4.2.4c/src/gui/images/osnap.png0000664000000000000000000000271211405446017017403 0ustar rootroot‰PNG  IHDR@@ªiqÞbKGDùC» pHYs  šœ vpAg@@êóø`«IDATxÚå›MhWÇ·j ÚD(¶"Š„4ЭT øñ’@¡w¥ y¸m±«’mÁ­7Ý´ Aº) †ˆŠ(Z¨”¾(u#VAÔ¦´-íâ)êBsî›û&3óæÍ›{ïÿ0Lò2¹çþ÷cÎ=ç>xÍ¡\ è@(7§¹F­í÷áÑÙ®ù¼áZ€²1<:[Èq¥Eþ© åiÆzz {dØB!L§ãb¤` Ø|¬?P¡Ã/Qhxÿpøø­SÃ9í— Óh:0<ÿ ä"v¥|þHÚ¨Ï5jVœ-´fL5À7ÀWÀ;Æ#³Àµ©S@Á^`3P6Oü üü<(]‰ÑLωzï 0 šFo']±v¥+F»ÏÅVŸo§5êÀ¼ApO{¸K0†þ¸´­íÌ‹m¯˜2]Èr¼DŒ‹-mwʇãCÀeƒÄ„†ýËÂÉ Fˆ†üuùÝF„ƒžÖ¹ŒÿˆÁÓ@¿Gç5ú…K ܺ¡íUÔ!Â.ëcsÚî”çÛJ{®,tÚcÜkÔÚ|MäÒ!ÀÑsþtž@(¸ØŽØ:½]Ò¸äÝ M;š=V=éJ.š¨ÁVìzª|-?IžæîQ/±:á^#hfOñ<è#Zñ}¼êr£5Ü› \ïÍèó¢íN9•†)@ÛÕƒkˆb{^9ä ±ó@÷þŒoç|  žÊ÷¾ Ô‰¶´‹i)±/ä>ôÇRr‚Aš»ä~*í»Ì ¶¡J&E‚cÀ[„Qß}[†{Mg—…¤°Mî™ì|ExeCA¹Õš<¨Òð"@•Ð>š()X4Q¶ª5¶/2²’ÁÇ6œv…nפEp¹3¶¨& à´b¬8ì šå_èídc#‘Ë^¸w¿ÍÂú 3xy ´ìÉh-¼–ìu ü´¶ Ì1âF]9›4ßïÊý}W$pØéK€rßl˨•r­TáìÎ…åN1FTöò~àWáðØâƒ„>Õ1èÊ .¤ÈklpQ8ülu-€®Ã;K…'TnÞÂã?à“2lÄ„N zNÈÝç„§ÀgÀÏÀÛÀ/´™)„x¨œ&À4ᙜí8LŠ&„z|œVç®øT)-Þœ>Š4’4²PµÂÈ2à˜ðy|àÂhÕJcK£D ã{¶ V±8º8,œþ†mÔE’¿çâ"L §?±y@J }î:Õ8áì𺭠ÍX-[Gd|{n@ V[@D"Zªðj4Eø^xÍël«â19-ÂwÂë°Ö¶ótHj¸Nm šÌ5Цž†€#Axr,«q«©­”:À~`p øøÛø—Ê8—ST€˜ß §›À»Ym”šWöªÉ]â€Ü7F±+Ò,ü!AXR›>tíiƦFŽÄdT»zš£ñôv Ñ×_¼Us¤ü­6^4‘ÖéQé¤Wþ‹“]â…àªùAOd¤·Uzß„ôü^¢´¿öaq#Ç:µ¸ÑizÝÖ€x r¶F=E'X*zTXtcommentxÚóÉLNÍ+NµRpðQ(Ó3RÈ/RÈI,I-i±0/jzÖ.zTXtcreate-datexÚ320°Ô50Ñ54 1°°21±22×60²20B<2£4š.zTXtmodify-datexÚ320°Ô50Ñ54 1°°21±22×60²20B<P›ÃeIEND®B`‚gle-graphics-4.2.4c/src/gui/images/editor.png0000644000000000000000000000075311405446017017552 0ustar rootroot‰PNG  IHDR@@ªiqÞbKGDùC» pHYs  šœ vpAg@@êóø`ÌIDATxÚíÛQ ‚Q‹îåú·¨¨ô;ó© ã°Â*¸,1™ÓƒcW-µç}Ÿµ‰¦Z@S- )€ÐŒpyrîôöUþ‡»%oü@ h  4КË÷—xɯ>°l²—ŒŸ€ñöxÖjÅ?КhM´€FìŸ®Æ­ÂØ€Va- )€Ð@ h  4КñzÅø{<‡zû[3~  4КhM´€æÙ&8á÷¹& b87å~„c R*zTXtcommentxÚóÉLNÍ+NµRpðQ(Ó3RÈ/RÈI,I-i±0/jzÖ.zTXtcreate-datexÚ320°Ô50Ñ54 12´2°°2µÔ60²20B L“¶.zTXtmodify-datexÚ320°Ô50Ñ54 1°°21±22×60²20B<P›ÃeIEND®B`‚gle-graphics-4.2.4c/src/gui/images/new.png0000664000000000000000000000117711405446017017060 0ustar rootroot‰PNG  IHDR@@ªiqÞbKGDùC» pHYs  šœ vpAg@@êóø``IDATxÚíÚ±mÂP…áãÔtHi²0µ wlD7xR&ðn¡uZú?M‘ŽÌ ÜûK HÇŸx‚ÂR–eÙm1åµX,Œ¾î0U'„º®ãœ^w»]\€aDÓ41êºF}ßÇØn·Hb¹\ÆhšI à”‚$V«Õ>$À%ÂoÇáiÚ¶EÒ¾mÛ˜]×!éxP…€ïãp\¯×ñ¾§6›Í¿aàü?¡ëº˜p>¥oá.>û^J¹ùfª‘“ÈVÕ˜9Ò|>×l6Óápøôú°í ð¦{zqv—îîÀ=À]¸¸K÷w àà.ÜÜ%€{€»pp—îîÀ=À]¸¸K÷w àà.ÜÜ%€{€»pp—W¾oÜÃ;еÿó¡ ;]mûó90èûÀ:pæ:¯œÝ÷“#7Æõ.Kßô5‚å(¥–€÷À£‚f'À'`øü0#zi¾Ÿîàð xX óx§µþ˜±ÅÙ þnç9ò[#ulsú猎ó‚~¶¢/` ø’cÐñØØØàf@ßrX6£në󋱩y€çÀQŽ!«!籚Ó÷ð¼Q x›‡ßó™ê5—ƞŎ3cc©T&ÀL1ÛÈhrÔKfÇœ™0嬧B‡¶5¿ø \]]±°°€q’C>!(9Þ>𱑰„®CÚ¡iŸxºÝ.9Ë¡4„.?nY÷{m¬ù"ðŸ ã–ˆ± ëV£y{Wð{ç,ö®×"€ëŒíWSŸ±[Æ }Š6PFÿ¸©_|f)»Î‚"E2àYŽ ¾×ëÑétœÁgl_–R%,žÿ<öèWyË,¨¥*l·ùÌ·ßÜܬ¤ÃlW!@cEóü>#/0È'Â…À¼t~£>ƒE:ÃyÞ6õYžÏyå xÓ§ŒßÊ6¶ÌЬ¨ïH¾€_YYñíRÚ>;ÔÂb€ÜõuB;ùŽ|¦ÏŽÀ2´K´ýHÆþÓ‘ 8åS€iåÈe Üõ³PKÀQîÔ%m—جLˆú%qåV@]Òv‰-ÉôxÔ„­€RÖFHJg³€Ÿ¢~¯m"m—جœŠúc_+z½^[HÛ%6+‡¢>ã ~qq¸ÎÉ••À"m—جì‹ú _ð;;; PÝnWi­ K@¤íûC-,ÁCÍPèMÍ@¨úfÈüж~¦µ~:Bàëm‡ÍóDTYÇý~¿uðƒ×H­#±FÞØïw$f”T:µ_[[‹ÞØîw(j”8‹§2ò™Ñr,î”I ¼±;Lb$güu@š øp©1£079š øðÉQ£ØšO ¼±3|z<£ÜzA"!ðÍ]Ètb½"“(øJWdnk­7eù«´Öjrrò‰RêĶ\‚¤†Ö|°KR¯q“‘¸&WIWF©kç#QÒ—(¹*Ëu(ýªl-ÝuÈ|Nê²tòûº|­«æ¤u]¾–ÔœJü/‰&b.•ó]«¯ÌD÷%í¢¿4Ó(c “¤üÚœ·uù+Ù@b"yñ~klÔ%ÅôxTùzòÉ*Tyá@*zTXtcommentxÚóÉLNÍ+NµRpðQ(Ó3RÈ/RÈI,I-i±0/jzÖ.zTXtcreate-datexÚ320°Ô50Ñ54 1°°21±22×60²20B<2£4š.zTXtmodify-datexÚ320°Ô50Ñ54 1°°21±22×60²20B<P›ÃeIEND®B`‚gle-graphics-4.2.4c/src/gui/images/amove.png0000664000000000000000000000171711405446017017376 0ustar rootroot‰PNG  IHDR@@ªiqÞbKGDùC» pHYs  šœ vpAg@@êóø`°IDATxÚí›×nA†¿Ä6H\ ®x€gà!BoB´€ ÑŠ(¡wP ¡ŠÞD/7<WIÂk:_ðRÂg%a©5¥/x—éÀ'%a™5­/x)ᣒ°ÜšÚ¼Ë4àƒ’°"ø$ +c—Þ+ «bw™ ¼SVÇ/%¼UEò–P^†Ÿ$aMNksåu¦ßU±µà­>|ÿ)á*¸.Gø ®¼Îdàµ*º>x)á•*¼!ø$ ݱÀ»L¢ùvµ1x)á…Ù ¼”ð\mŽÞe"ðLm‰^Jxª·Æ/%F±í^dx)á‚b8FÂx€wiÎ+–3#I˜Çð¯>‹/%œaËbKGDùC» pHYsLäL䧉q vpAg€€0á1šIDATxÚíypÕÇ?¯{4’F‡uÛò‰,Û;`ÀqìB ¤À!°›Í±7ì¦H ¦€h+’­P†°d“M»ÙÝ'&IlÖTÂíƒÃ`|a cK–uæì~ûGKBÒtÏŒ4#,õ§ê•TóúxÇ·ßý~]×ôööª[¶lYwÑEýˆÒvç—+//?\__ÿµææfŸ”]×Ñ4mH^üÓï!¥¤¡¡¡lãÆß÷z½þlGÂvé9UUƒW\qÅ3;wî¼$‹Å‰ .ó_~ù底+W> hÙ¼í2çJKKOnÞ¼ùÖ@  Îó!ÅþŽ;.ž={öëÙ¬íÆÆ¹\®ŽM›6ýã` iRJöîÝ{ÁÂ… ÷d;¶sœÛ¼yó­%€”¿ß_°nݺmÙœíÆÇ•––žÜ±cÇ¥RJ£¨¯¯ÿvKJ¹Õ«W?ÝÔÔäcÏž=ó¦OŸ~0Û²Ýø:UUƒõõõ·«ªªÞ±{÷îÏ 6S)¥ãðáó…Ïç;ÑÑÑ1+Û²É R: ²›ì 0ê›)Š]ïOqlLqlLqlLqlLqlLqlLqÆEÜêèîu» g368Æâ¡ey‚%e*—Ö¨Ì)Vñå@®Sp& iìÒÙÓ¤ñ¦_ãT§Ž–`Êë…ÿÂaøæ7¿6™%£¨)|q±‹/Õ¹˜W¢ë2KÆ£š¤©K²ëx”'ÞŽðJ£FD‹ÞÌ™pÝupè(e•× •• † fFF0ÌÙ œÎdj<žé(JN¢ÔÕˆ‚žÖS¥p¡S¤V¤Fµ(MMhR3õψœÀõ¥ ÷|>—ÅU”þæ~7ú¾ëÁÌ"Á†nÖ/vñäÁ½æ`ëÐĹæ()™ ׬Ÿÿ|¨@TàUà‹@ •8€_ßÈDjô…AÍcÉ’ŸQX¸MÂlÏÜ=ûFòÔδž«1‹€ò+t|$“·¢(4œmà–'n¡-Ðfõ´(înÏWð–õ©2•é¥>qº±›µ³<ør˜ßŒÒ”¬] 6$N”—ƒ:ìƒ(N!C(L7%†"„Àí.Áã™FL‡^·Ã.ut©÷ %µ pTø"p;&íPQ)ùí(÷=¢¡#¾Å+Ždë;Qv7ĸMV¸p A<ý4<÷g¨¸!ÁE»€§Ò×Hè Eù××àã³Àë2¹@-°áð^{¢'5 ÅÍ ¹®\ r ˜á›ÁGg”k^Ãô¢éI‹ýÁŒX MUÚpb:üt„{wéN¡H=lz.ˆ”°q… G&E"°k|ézÌ‹'ØIÆ‹üTØ× oŸ†U30ûö#ðZS²§hÀ9ÚƒíÐ ïž~—Gv²õÍ­<øÙùÈô éZJ­àæ`dþ|3O[ßI=óûéŽÀ=ÿä×oG3¶0íƒÐÓcñ¸.à̼g¤t†áðYL&õd_~r´`ÓŸ6ÑÔÙ”°å?˜ àZÀªd}­Mãþ¿„F”ùýtGà_^ qì¬nŒè¤YœöCgg´¦÷üt8Ùiü$ÓFø0ö7îgÛm‘Ú×”²Š0ê}³¢¿¨ï’4t>çµéüè¥á˜L»$†Ì{ ´c4³Ä™c¾ ó™ƒÏÐÞÛžRC0eܬ²ðÛ <—€oy;ÂŽ÷Ò¯ zºáÜ9‹Çè}ns¤õ‡ÎBQ’goJ(naH×|€SÀ£@,hðï/Géîú»ªŽl€g"/s>mŒØéá ÿ`æJ€µÀJ ¿ß3ø¿ì“üåÅ¡¿Bqq†^ÂhHg‰s!΀fŠCgÓ“–Iàn̦äÏ¿ÍpÀƒAضÍܤ?Ö?jÎ`LNrNœ=A(JZ&À"`µ…ßKŒMj÷n8~|¬“hrãïöÓîÆ©8q*NËë’ àJ Ìäw ø=F‰šiššà…Æ+©&'¡NºB]æâóø,¯K(€|à ??ðò^JxþyвXWŸïô„{hïmGQ”„c °Xbá÷:ðþF`ß>ðûÇ:™&/áX·Ÿp,lLY°su9Æ´¯/1¶Ãé'OÂP]=ÖI59‰êQ¾÷Ü÷(É-á乓–×Y À‰uã¯Ø7Ƈaÿ~øÔ§Æ<­&-G[&½Æ² ¨–YøµGÆ!o¾itsr ´t^8±À"ÀjaÍQÆg>åw µœNÈÍMÿy6ñX `)æƒ?oã±D¿¹Ùh ¤0¤m3JL“V–'¸)yÍ’º»RÀfì0@ °Àâ†^àÄ8ðÅ!==é?k²£**>·#õ½t¦¨êsfœ¬;™gëVøØÇà¯Ç—ž§,¯^Îïÿö÷\»èÚ”ï1íÎÄ4£cMÅxÙ3ãøÂó˜Ú¢Z–×,§$¯$å{LK€9˜Ïýƒ1™Ö›í˜Ú˜Rä)2–—`U°©.HpÃ)²² Ö&ʼe)­LÜÕN¬ë€¤«–m²FUAUÊBú‰€(OpCs¶cicŠ[uS‘_1âmbq(ÀØYk††±ªÚfâQS@eAåˆê°€U Œ±Àfâ1£hUUé  ðZ\&Eƒ 6ãÎ3¯ 0§0ý*ÀõAã;`“ÕÕܰ䆔w &.¯+°ž‚‰½æ~*âËñq÷Ú»Y\±8áÊ+âFX¯$2>³€S•<—±uÜ‘°+¯âuWçò²¬jë—­gõlc鎔#ßV'€D+°:0ª›Ì#€{? ·¯Œ·x6Y8rÇ㪤ÈãÃ¥ºÐ¤qôßhª€8¸FüˆÑá0¯DÁãféÆ%¡XOªd) û@]“¤_*ÌôÁÌ¢Ä×i"‡€¨A§‰NL!„UæÃŠL…ÂÁã×å²hšŠÞ¯¨ÁëɈ>¢Q¸åxöÙlÅ`Œ‰ý¤]é7Ũ3¾Ÿ¬ @ðº¹}öúwíæa,EN"€Hd„ÁlLÉZv†$÷í±²JeÕt•KªäªÉC„ÃÆ"‘?ýɰ6¥Ƈ#„‚*T„0ބץ>>U@ŒÌu£:l?eûá(yNøüB'~ÂCy‚ˆD"ðÃN¾BRÂãožFPôtš‰Š{™æÁ²\2ã* *F<ØÏˆà`lΗ DáDYX¬rOuvï†Í›'_æƒña=w¶&Ýkßl@*˪–ñÀ§à’—¤lj0j½íoF90̶oŸ<­þL IýMû¹oç}ø»ý)†Ì„Àû:';Ì»€½½ðî»ÙáÄd_ã>vÞyþ  ;*9Þn.€žc“ˆM<ºÔÙýÞnÂÚÈÇi'”t 5oÌtt†ŸlÌ9Òz$eË`ƒ‰@¢3|XOgЦniÚÕÐõÄçLuüÝ~š»šG\ Ä]Ýàb‰g 3A(fçòhD´tµŒx< NÖ}}… VgØ Óc4v4Žø¾¸ülÁÚîO>`ïÒž¸´ZÓ_¢;û6€Íèñwû-‡²"Ng±žów“xɸMvé‰ô „QCдØ•àâ$ÓÕ6Yä­æ·xä…G8Ðr å{âÞôG`ÎÌlÇÒÆ’†öîÛu߈î‰+z1öÿYQ‹Ý˜LÄå¥4$¸¡ c<Àfr`ú1'2Ó[ݘL˜ à(Ö;€Ê1ª›É©ÞÇ0a†À„ÍäÀT­X·P—íPOPŽæÌ¹‹ÚÚ@ˆñZ`Ÿ§_ß>‚Á˜ ˆa Њå˜5ÕÉÏ_Äüù÷SVvY=–dÅÁw¯ü.O}ù).®¹xˆŸeîÕQ˜Ob+"S•üü:Ž<ä‡dÇ’Ò¼R®œw%³KfŒ=.ÅRo`m `pa¶c5ñùŒ¯+|?ÛA¼ÒyTVÒÞÛN[ mˆŸ¥NVKð\ÀšlÇj‚át–àó­DJI(4± é,¯YN¾+Ÿ¶@]¡¡ý–Ï'xè c6^ï<òòæ‹õ |^~¬p©.VÕ®BQZº[è5ò—pTwÖÝÁ °6'?).¾§³€hôáðéô˜!j kX\nØðwù㎒K(€w½~^àóÙŽÝAQÜ””¬A‡[‰D&ÎêÕÓWPž_ަkœêˆŸåI(€°ëÞÀ'°G¼Þùø|+Âa?š61,)©Båãó>ŽËá"¦ÇhîŠo›$ØÛ¶ð›|&Û±œ”—·»€P¨)£i>13Ì*žÅeµ— Óhhthþ×ÂOnÅèNUÜîJ*+oŒeë½½ï'¼Þ1ŽséWÍ¿ŠêÂj¤”ôDzhí‰ßY“RpžÀz†ppÓøÅiÂQYyKR'LlL¿*\™:7¥y¥\_w=Š0Î ìvÐ숻.%þËÂÏü°0Cwfà q:Áe5ïH5ÖÉÉÍÃÌ™}kð4­—`ðƒ„÷ŒW pCÝ ,«\fØ@pºû4Ýáø])ç?€·,ü.69!7MsàÂ25í=èùÆi㦠¤ËÉÈŠ‡£€ùóëÉÏ_<ð›¦õ‰$ÞÀèR›=öƒ¸°üB¾zéWq¨ŽãQ§{NŽÅïLYc½gàÆJ•Ë\iÅm^±Â¥5cYRx½ã±@IÍÏ$CUó˜;wÕÕë‡ü‰´‰œMxo­S†H•2oÿüÉfNÉ4©!„@JÉ©ŽS¦VDGôÊßô93ܪ`Óê¾°ht©›ã€o®r3£Ð r¨M¿`ðtÝz‹v¥MÃrïÝçÀ³Ça_3ÄR,U¡Rã«áêùWó•|…ùÓæ£K}ˆÝÀˆ1íÂ(ŒDîþ£’Êò~t•‡º2•ͯ„9Ö®'´+Tá|û27V¸É11ÕÑ÷Þ »v¥¾Š øÜuI޵¿CÅ/@›É5 PyÁy\øÂCº.&'§ŒÁ…æð}˜ÉzëfÁ¬"Ì ÃE°}=¼t ^o£g¡cXD$^4±ŒâÜ j‹f°¨|Ëk–Së«EUT#ój42 àï2ŸÛU³íy`ð(†yùa!Äã|u…›+ç8Øv0Ês 1ŽÕ8’D4Èw ¦*¬žáào–:YZé@íK„ÁttÀw¾=–ÚÖp¯¾ýmX¶<ÉÑö*ƱèK’?Óy´˜’c«qŒ˜ÿê¢-%Á Õ$`nY%w\Ö†Sñq—€„ò<¸~‘ábhÃÒD3èQ~ª–áPT„_¼¦uþ`BºÃÝ´ÍÍ|ºÝþF{ê{˜lëK¤ÙÅ*w­Vùú%’3‰? ŒJ¦å)Ty…¥/âÿŠ÷ŽÃ}÷¶m†m+<˜9êêàæ›áÓŸ” µ–rˆø¬v_kZ˜PhhÐå*#7w%¥W³na³Kn±îôÿÞ÷>‡ßmÔPˆ(.¤PŒFžšÙÃQPh ´šŽ@ˆ¿ÀØE´˜nxœ‚Ú"AmÑ Ø ¶:èžpvl‡úà­7“‡cÍxüqãpigš­ûtˆÅº‡¬PÕ\–,ùÓ¦]‰¢zÉÍÝŸ¾…‹>K¡ôµçS²"àL÷™¸•@ý¤m(òIŒƒ$ï×$Ÿ”àüEŸYÜû¯ é’#m:팰õÝÔMÁååAY¨ÃF×2ÖÕEéûò…å%Äbg‰DÚý¦’›[ËåEÓûîÏ€8T:D åœCqÐÜÝ7 <àŸ‰4Ú ÜÒ¢qËsAþn™‹¥•*ŽþUû$‘8­ñ«7#œ¼µÝpùùù-[¶lY‡”’'Ÿ|òc^¯÷t¶e»qsúÆ¿ t]'‹o}ë[wc4³8Û±[¹rå³'Nœ(“R‚¦gÏ·¶¶æ­_¿þ'|xB¬í&¡›3gÎë/½ôR”ƹÃèº> ¿ßï[¿~ýO„álÔv™w ,سcÇŽ‹û3@ƒEÐÚÚê½óÎ;ïöz½g²`ÛeÆ !"k×®}rïÞ½ôg¾¦iC0øÇP(¤üîw¿[sÙe—ý¡¯‹˜õHØnT.V]]ýn}}ý×ü~Áà/?®.)%---…›7o¾uÁ‚/`7Ï+WXXذaÆïïÝ»w^,‹Ëç~÷ÿ  J3k¬ù*zTXtcommentxÚóÉLNÍ+NµRpðQ(Ó3RÈ/RÈI,I-i±0/jzÖ.zTXtcreate-datexÚ320°Ô50Ñ54 1°°21±22×60²20B<2£4š.zTXtmodify-datexÚ320°Ô50Ñ54 1°°21±22×60²20B<P›Ãe'zTXtSoftwarexÚst ðQpÏÈ/.)N.Ê,(Q°Ð35L´ÍÞ(£IEND®B`‚gle-graphics-4.2.4c/src/gui/images/gle_shadow.png0000664000000000000000000004153611436541441020407 0ustar rootroot‰PNG  IHDR€€Ã>aËîiCCPICC Profilex…TÏkAþ6n©Ð"Zk²x"IY«hEÔ6ýbk Û¶Ed3IÖn6ëî&µ¥ˆäâÑ*ÞEí¡ÿ€zðd/J…ZE(Þ«(b¡-ñÍnL¶¥êÀÎ~óÞ7ï}ovß rÒ4õ€ä ÇR¢il|BjüˆŽ¢ A4%UÛìN$Aƒsù{çØz[VÃ{ûw²w­šÒ¶š„ý@àGšÙ*°ïq Yˆ<ß¡)ÇtßãØòì9NyxÁµ+=ÄY"|@5-ÎM¸SÍ%Ó@ƒH8”õqR>œ×‹”×infÆÈ½O¦»Ìî«b¡œNö½ô~N³Þ>Â! ­?F¸žõŒÕ?âaá¤æÄ†=5ôø`·©ø5Â_M'¢TqÙ. ñ˜®ýVòJ‚p8Êda€sZHO×Lnøº‡}&ׯâwVQáygÞÔÝïEÚ¯0  š HPEa˜°P@†<14²r?#«“{2u$j»tbD±A{6Ü=·Q¤Ý<þ("q”Cµ’üAþ*¯ÉOåyùË\°ØV÷”­›šºòà;Å噹×ÓÈãsM^|•Ôv“WG–¬yz¼šì?ìW—1æ‚5Äs°ûñ-_•Ì—)ŒÅãUóêK„uZ17ߟl;=â.Ï.µÖs­‰‹7V›—gýjHû“æUùO^õñügÍÄcâ)1&vŠç!‰—Å.ñ’ØK« â`mÇ•†)Òm‘ú$Õ``š¼õ/]?[x½F õQ”ÌÒT‰÷Â*d4¹oúÛÇüä÷ŠçŸ(/làÈ™ºmSqï¡e¥ns®¿Ñ}ð¶nk£~8üX<«­R5Ÿ ¼v‡zè)˜Ó––Í9R‡,Ÿ“ºéÊbRÌPÛCRR×%×eK³™UbévØ™Ón¡9B÷ħJe“ú¯ñ°ý°Rùù¬RÙ~NÖ—úoÀ¼ýEÀx‹‰ IDATxí} ˜WuæyK¿îVw«­–µY‹-Ë–íÈlã…ň â  à |œäK€! B¶™!ß0!ã@†I,& Á“cŒ1a³1Þ°l-¶díR·Ôû[æÿϹ§êV½zÝ2!¶Èèv׫»œsî¹ç?w©[õꉜ g,pÆg,pÆg,pÆg,pÆg,pÆg,pÆg,pÆÿ¿X ôϵ¡·Ürë©TÏ‘Jkƒ´Êç‰4/iH«Òj´g‹”–·Zˆ5[j‚F£1*ÒÚb”7¤QoÞ'Íæ©7w–»ª.èºç†nhüs³×? ¸å¶Û+SõkݵÒ*ýt©$[€­†f«)š¡ÙDç–Ÿƒ¨KÀø§4ÌG“ùäÇÑh6v6ͯÖ[/ÏŽMõ¦›Þ¾_ÿüÄ:À­·Þ¶EjÍ× /(•JW8` µ‚Çžìàüà iÔ”JG£!Öæ4æ L›s–5á(pˆFãa$¾8Û¨þ×Þñ¯¿ú“è?QpË-_ZR¨ÜXj•o,•å"¨àÐò$U³è¡g“®‰ƒtñÙÀe¶®t!\Y&•±s€„uÔ›õ=p˜›gg'o~ï{Þ³“õÿ$„Ÿøü—¾rm©\~O¹\z©ah½6q‹×8NüSbëý¤ÍŒJJt9ì›S )ø‰£°œŽ¤NBsåe}t•a£C½ÞøÒ}ßMïüôéî§µ|îË·]_)•ßÇ!^!U¼Z&aÆtÄÃL®TšoçÔ@Ȳx¨gœÂ5±0˜‰3dÓ±PL£Yk†]°~õ§N×äiéŸÿòm¯)WÊ¿Y–2sD”†vÀñ8‹ RYœÅ–G:öz;+“Jêi£Mf/v>ïù±“÷~u$Ž ppÛˆ‹Æ=zã¹÷;ß¾}û U=]ÂiåŸýÒ—6W«=)—J/ ~ðÉç «#ø(Î>—«³6ôp=‰+罟NcS…Ê_ÚûÍ¡XÞ@*_ψ7êÌÖ›oûƒßùͯRÏÓ!œpË-·ô÷ ü&®×ß…á¾F¯VÆ~æ—s &3˜Ç?ÝG”ùü­ÎAº¤,íåÚ‹é2ð¯kÊ =;%´­ßŠulåÉѧr¨[S°FøÔÉÉÙ›>ö‡xÆ/#+jµgðã ˜çk úÿWIÊ/øž Ñð(¢aYœÆ ‚Ɉr„rò’Y‹r¨ÇGà[}FϸÉ$‹13ÇDMRw9|òª •cô–ö|œ­†‹Ë•Ö›¯¼öG¿qÇÿýe>SáÐë+½Ã#¿[‘ʯ{ãÕèf 3z0$³¬ŒDpÃëÙ¸iØÄøÈ'!RZ$’¸YoMÁaÏ?{;Ås@ZG ž™½Œtî:÷ŸV˜×PYÇ¥ˆŽ .ÛtÀ^Âgö~Ãö}줵äéýü's€ÖÈ™ìyŽ4«ë±í:„ÝÕA)µöJWsÏËžóøÖÜô;­rÏ•l. j†1Dø·nÍÿ”®ê yhÇ0bIi•„åNKJ&ðo 1Š?”@²Ìè™O€ XÂb‚‰L$Ò!;uŒÔAL®O` dã3Ù&+ă6EP® WÃtjÔgw”*å×þ§ýÎÓ>üX¶+ÉŸV^(‡¼IfKWI¹|¶¹joû€‘g¤·5>¸¦´oÅ•òäÈÕ2SZ¨e!""•ò”<ÿê7bÎ\ ·íc0\ÅJ@HZ˜YJ¥:#øî,2Mf\F§=–ܨÙjH ÎUj–Á¡lï± "eà1øê, öQ£u<œë¸s UpDÊ-hÔ¬#uR7žë‚™VsúW?²éOþ‹6lÎ|ú-TñÔÂWE[WD\-ÊüQòZWÉE'>ÐÿÁÞ©êõÕšT¥Óê.W“ÉRmì!>ö°¬é»Mv®}‰<>ü<½FÈäëwÜ!““òš×,‘žîÃr|j“K[¬†3 IÛß÷„üÔEƒ¯áê*2ÉQü2Žƒ gˆŠÈæYutÜðÍ¥ '`i>ëc 2¢© ãEÚT: 2 ð‘ƒȱCky¹Ô7­|§¬ïÿ.dQ#ÊÑ3>j­âÙÿøào,/îdv§0VênÎ<ªU’ñN$ž SÔ|]ã½ò^¹Ý3ãóÃJ·ˆ¼cô@õƒ­êBéxmU\M‡xN>.[îÿ¯²|ä›òð¹7ÈÆZùú×îÁ¡Š¬_w½›Æ4PÔ`MãÆŒö´ryL–.¾·­ÚxŽ'ÚJŠ3fªÓ*7éÝ¡ ¨ Á€ò©!é½ì¾‰8ðâÔ­)S“Ã2qr…öò®rC–6ŽËZÙ“*à㯟­dN<:†r¹XË\Ëiâ‚r£¼,NÇñ¬¬û‘ÿø‘ëû«¥jÛp×Ô)ÎÆÃ–¿W†î~Tî[¶Ež{ÅNù¹WÍȲ%á* vÖˆ3¡8tè |ñóŸ•Ùz]Ö¬>!›Ïí“gÃY:U2w~ïÌYql¥öÌ{%ëA7§ âx >] iíñCÌv<üüðÁT—žîª .¼ñþY·¹5?µÒVs\‡ðq€+~_äOß&²îÅ®ˆ™gr¶ÕÚ;ÝUÚ7Uż ²¸=¡V—¡.XÀ'àuµÆekíNÙú{'P–”H¥2ƒ!¾Ž9#Йžš’= “‹ìEÝëV˦Mò’ëGåzÝÝ‘ÜTL[lá}ƒòòÑWËúCçÉðø†ÿR8>ÁUn|ªƒ„”ÆAË3ÇñcÇäÐÁ ¦C|Bj]_‘îžKdÑðËáÅ?¢‡¶iþãËøQàeÿNäC7‰\ÐI•“ãÍú-ûº¦nÛ¿¸çhM&fÍGzªèí}uyÑê“ò/–#çœÇ.µÚq8ÁI™V(ªµ.Y´XŽ9ŒÝ5ÁˆP‘ƒ‡䎯 È×ïê—ßþÀ>‘Ÿh‹5\tËb¹â³×È•?ýÐí€|õ ŽMéïï—.è73ƒ5‰LËô왞Ù!'Æn•¿_6%[‹õIrÑž8J6¡YX‹*‘ˆL–§[3¥ ,*§J=]=6?’x;F"’èâÛ^%òëïÙ”H‰#°û΃õ“´oÑþ½WlhŽ4e :&­±Q™˜˜ÉzIöŒvÉŸÝ7,·ïë•÷n>.[‡§3=>—Äid5GK/Z"¿ôÆ7Éþ}ûäþ|Ç}¸RÀ•¾0$Ͻò¤\ñŠã k>2thXþÕ‘wɲç-KÀ·•»Jz‚›ôìàyðmø7àÝÖmÑ#«°çMqÚl”ï@Çø½»Fdr:x‡v~Ší™ï=~ô~¤Ðª‡Ì°Ê˜~l]·µïÃ×}xãÖ[‡:µ=¥¶ØSq€­`y3†ý³.lêä06Ù|`ßÏÜôáeõgÛºæ®hDµZ•‘‘¹æÚçÉy›6Éç?{«ìÙµS%8V•÷<°HþøÂ#rñ‡Í‚ÙÞ#iI hn- ¶\$;v<"?¸÷­ó¡‡{dre‘ ±D÷k­#³ÙìùìÙ*WOa*ÀªSÁg}¹ÃÀ'9¥òC óSÇ€0Ôu>t{bÏn?yBåÜØuXãî9[¶\v¶ÁiݲjltìÓwþý? Á‹pŒàØŒã2Ã8ä»}wüMû¦ÿêçþj˹ËÏÅÊ“¹s‡}¤© 9o¸ÿ[Á_A¨O¶ŽœxÁ…¿q`æYŒz+ÖÑ ¬Ã'ø–.]&7¼ædÍÚs¬¡È£|hç LŒwÖ˜Ax£n˜Fœ²7åH¸ 8z¤"‡ûvµQ•Å£K2à©‘U| ¾éO Ú€œ8Fä<¼·—|PÎ_“ÅK—ªÞȽ'Â%-q@Óå208$ ¥Ÿ£Ž>Äûúy È’³–¿ûe¿ðÿ5ŸÃñïq¼ Ç=84ìzr×ôGîÿÈ®ú4·¡æ§ê/ƒ¨ à/æ>N{¨7–núfý½ïi•J#¶a¦h%«dÆ!òÕ7¼VV­^­ Åûï–??Ü/ØAl—Ž7ºÊ&øšÇ|c/‘ô.Py31~2?Æ*‹ð’oÁä€ò˜,J°|O›\|Z9ÁÆázÄ#‡ËIeÀññçôƒCè 4“'ªºÈ³Tö“c&;ŽÊÓúBÒz¹ÍZªTdæ¿oÛ¶mIĹ ñâxÄó>óÏ­Þïuz~ÑùT`%ñµèý¸Þ+Žå}å Ÿü›M€î*X([WL”–Fá 5°p¡\ÿ’Ÿ•Z « Úç,”¯?‰´á«ù^±j|•xltØÛÓ«ó.å`Fíï4tIW½+áW¢NÔ5ÚPm‘—öîœ0ÅzØV±o²Œ¾›Ž‰ ŽÆY®Ø7­<ØO§ÄY7­Ã³ÝÃ(­ž,õ~’ò¢pñOáÐ^?=;Ý|dú‘;¨Ã|a>`w¼D‹p½6º~ýÌ#/}éxÿ=’UiPÛ§õ  ¹‘iŒ³Î^!W^uµ‚O.öÜ¿z£@Áà¥@EÀSå’™göZ·9ó¼Ž*Ôˆ{ÿ&©`d×K O=ù§uÔáŽaõRN(c¯åšAù RÐåÌïs–Ëfºô㙺Q]çu½|y¬ˆ¸þ%Û^Ç¡?w#ÁE¢†oîýæƒÍz³Ã¢Ê©ŠMKEžÄ ÐóŠ <Þ(—¿òý7½õßÐ`4Œj`ŠÌà&)ƒ®¼úY¿~# ô¸ûÁ^yxW‹×sWuRººl(‰³„~Ì“¬K¶‹‚ºvÑU„C×+w-/íb]^ëHÊ"ðA¥²Ô‰(/8õpmŽ`…?æ«üœ‚ :mH™ Hcœ_dQ»zý&—ŒÿþÚmÛ6D"fçÚ@Ã]Üõd¥RÙŸTì¹sQv–½Gõõ"ËзŠhë÷¼ñÍã˜÷ϦqX™6iŒ*ŸÐËÍ€Š=íK/»Lõ¤‘Æ'Êò¿þ.{‘Q©LëA7¬aॠ²—ÁLúQ…¡r¡ÔfpÓ)¾Þ·'ÈüÃ9XÓšç#hÀ²ñ±¤e.‡‹S¶“<Ø(Ü ²,Vy.g¦ùhï}˜l:E´j]³ÕÿkäƒHë¥Ï]Ý5Ú¬4wiyÁˆê|E zÙ…ˆl=G¤ûyvÙáùÉy¶Rýá®ç¿ð•Þëc€ØxØRíÆvÀXF¯vÏ^}Î:Y†Í·á:~t4žÃÙc!+€È b!Ša ÜâÁFg^”ë•Ð;©@ ò¼ ¸Ì§lT¼ø ¿þ©n˜–£çº3p?¤Úeíiu™LEÓÃí夶¢|Ž(js4(ôÒk^º {ÌIx±£LO7°'±KqèSó$Dqd.x1»®YØaå/?|ÅËÔ{{jj"l¸ ¶8ÜËÌ@Mì—wÉùÀ߈"xwíªÉ·¾­¦(¥ÀÒ¡4q¾ÉˆsQ‚岨HouH5´;Z5ä)½9·W Ž‘Èr4Õ™Í#z9…¢¤5?Ø.’—:‚é`O™½+•ÒÇ6oÛ†…“†Q|îqŽÙ»¹ï[ÂiïJ -ÒÉ€¹\N’Wàþ‘f?ëØœßù¯Mf#ýPƒuœF2Wf# Àó6/½½½jˆ‘ÛoÏN@MÌÀ6þxëµfdPf•Riï2‡JWø4®Õa B¦ñ§ùˆk}tDí‰Fë«s}i“Á<¶—:uVË4Tþ ?Ô—8i¨3®›L1SM#ÐchG7´öf+H€G‡àF%^wƒWóTF0[G)Ÿõ*øV—¶QË@¯e©NgÎæå¦Œi_¬˜¶‹²¼>Õ'èˆü¸ÜiåÁ€ÇèßqUº7à0Òšify©UâF^aèäW‘ú…þ— Š8÷=ë²>\$†q c°,‡;EfؤAÕAH$²aã¹JL#=ñDMÄ·¸PòÝqŒ/q‚|Ö¥ôäéÔ`Ð6‚,±m+V¬Ä½ó^™ššÔçéžxb­¬]m\´!¢<*’Àäi›QÅ®T8³ê@mñç2)Ë Onõù‘òµ~ðêY{i˜&=~ôÌgZË)4c’œf,7½Ü)½N›BŒÜÁÏ·ùo¹nÛ¶ßþßÛ·sÀPzýУ8¿AS>ŠFlªËb\QWžUtÓ…S‹—Ž®ZFÃ¥‡‡ÔáÙ /Kò½Á ¥ŒÁA½W@C1OW.Oƒßë1#[´z\7qÞ@&‘Ÿ¦‡-¤ |êåGbt?ÍWÝsm°Q€Ždtßõ°¶"< ,êU˜L•ÉÄHªàçô!wð3LšÀ§•r??x+’ýË8~¨Eó|9€ö~€ß·Z$„#AÇÎ^%S¸A¡F øƒêÐ3‹Ä¡yLo0çbÌe²Ž¥¦‚1< £ÁÀoÈ‚GaGšˆ¬“´ ã”M«…õ#Ò:fdðúu»Þ©~V—ç{Úæ ÊJõòÀäQ–Ó+êÔ/U£0¦kÒ…ƒDÏ9F©üvÜ'àãH¿ã.òÎòÀ-8.åjÌÿ½‰GÎ9GêTŽØ!´W€F«€Y£Œ†|0¢E£˜±pSg VÜø8|x@Ž·Qci1ð*ǜ¬KiÍŒêPTê*=»“¥ &m‰œM7h´}éör|ÌI¬¶­S …M!´ nþÌÑë‹ÊÊ•ÒÙǦåúNò‹òó°D«Hx vVy. c¼½ÉÞ¨ ÷në5Vž<º–2 oÑb< ŽËA>Y{üø 9zÔ€¾’éñx‘=Gž ‡hú "è®s8SL]ŰÐÐ,í£Ëñ4m὘´~¸"¤ïXæåÞë‘ÓNVÿ^Àd’U.ý²çŸÊ9ï›ÁÔ-˜Ê&L…PÓI\²)èPX lSzžƒôp6 ÂÒò`à„ßÒ4ØÖA=xB ë7v  ˜r@íU`4•bÓƒñ¤à`àUð)ÃA6[/X¶#誋½HxP¬€ûš Ñ—òøgÊM NAm?O‘ïõ|¾­¥—_¾mŸ8¥wÜ•ÁÅX7úf€ö0ƒUú‰¡Ef „tÐÆ!Â3Ur°uø î1§ †Ô|2ð‚ydäS&þv?±Y¾ñ­WÊÁ#|lÛh@ö.%=OåP_«Ÿ:t ®‡ž8«ßä¦Ã°§›a`õVoÐØ¨`ÎáºPN8à qëbðs'ÝüåóN‘ôøD‰e¹hèüÊ¿XtýûPOÛ„2ŽÄ—¼Þ_ÏB8@G˜ÐãSxêuraaCh n=Æá ¶ö§FöA5Ã8ßb<5ÄÀùptlXîþöÏ( <@e'ôˆ¸|:‰Xf!‰x†žYiùU0êë½]{?Òæ°(e§½ž´FïÎJ~êDÐýr‘qÒ©luXsT«ùA‰ŒN¨M×qyð^Þ]®É¯¬|8™}½>qLB"±=q /šÒ³:}‡Œ=Øë`6LgYBc@“Ÿô ð,'¿žñ¾Aå1ÇmWf×;ð‘µæÇ)ZƒK×HoÏCΞøåÁ›8‚ã s‡Ø¾Îûp€âù'Fá™uŒ.h MäíN{dX–8BÄÃ(ehYˆóù·­Ïz¶æ»a)Êé,•BÃ+aTq[ÔÀ*9Pª—ƒ~äÓ©’º´‡›~1øÖÃÉœusÄ¢Fä°8Ú†úi¤M©4ú8ð Ö|?%ò¾imÙõȃx§KÎ]~žôTzðªÄVùp÷çƒþó)Oq,v>úźJ«1“Ãð… 7º«AZSÕ¸’F†ÆÆe$ô†)]H'v¡‘øÇüI'°:˜¯ ‰np•ÊïHbßæ7ñ¸ð!<;ä¸`KÅ’ÏÞʵ òl—zFe¬Tk㩳nÔynðS‹'tXŸàýC¸Ý\“5™( /žÒº˜ª9íeÙŠ]ÁÂ+9% 4 ñì2žýÂC Xx~ ³S wÿ¦{0ǘ;k¦F*kAh»e ‰ò£<檬À@Å=mñP®ùiÜz¾¥IOvbq¤‚¼D­8z½Œ Τ<”Á|u<€É´ËKòͬgpVò”Ïâ6…˜>t—¯*(øÙµQ¬‹yX‹X’Ÿo’ŠEߺRJd,îR5/×&¤‹û:ï’Ðæž?F<ú Àøï#³’ÐÀ“·ã¸ ¤Ð²$?ŠFʇâPhàXã«ii6ÓOù Ïiž•©<òQ'ÓK©Meæ‚J%`ì½A¾É2P}UÏ Õ8Rhôà30½H« 3?8ó(ÏÁgõq¯Í©Ó!iÀñðlÝ£”q€u]kÒº@8Óâ†î©9Áו?¦< \µDa[´xÆC\B‚Æ2„“ʼnH’gñ•”+ÀIQ pq\éUf06â_AÒÊÉg j%>ÀCp8WR¦§ÀF=VåTð9GVÊûýÊ‹útäaš%œ:(‡ë«à«~TˆTs§È;÷xrxÓ¸uΰiå&9¯º.ÓuAÅ`Îà#·uáÇ5@'޾ã7‹Ã áTfHMí½N¡ÆHŒ@3Ð@Vj†²t{´ ¤Ai;ÆùÇ7²ædÇLµòS¾H{{è¹6’ðPž8Ê­×[ýŒ{™÷rÓÁ䚎)F,£E ^&;J´ñF,¾¶T9ÆOœÐïܸþµÒÛ½xÃ0¾![u°yãGwþð4HÇLJÔð:aCcü0-i ÑÉó¬\&N§q34e8ØjTè™ù·¡6•ÅòhHm¤ê$È7 Y[|ØNœ =Ú@·¡œšhOG½Éïú„)Âe°Ú € Km§ÓÆà–^÷!•™ôúÀBýÂéL]~õÚwÊ‹W\§ßLv‰ÊÛâýÜÁÏXè4ÿ³t¢¯O¦¸ @u „‰T€·×Ï cÐÙò,a ’…Àá30d@§±B™ŽJ!ÐÛè`ó´Ê0²æë Ã¶ ·Ñ„½2už×Q!•©ß$âHÀ#8MJKG´¶½¦¸òŒCĹ8~õBÖ÷Ãs±öQ÷'=’]ÕÒ_Y+=]³rÕõï– —\жqOM0œ²ØõäcXø ëžÅê`–Ïê\È š'p60}j°Æ¤ çÓŠ1™”OK£¸;†×É´¬†7 0̧,ýˆ´ÉEADYÜ01ž O¶QE‡ød ˜uàÐQÁiƒs¨£X{²Å¢úP—å·•DDiôYýûä’¾€®€>øA zO–ofù°ŽÏÌù©$‹áæÐ.ks½ ÚG€dØ/¼ä’¡—ît©Š¼ñcAî48;h~f‘‚Ã$´dck‡ô7𕯠‰½¯Õš¸´péÀæòôŒ^²ãѵrèè É¨:5%U$‘¤FF˜â IDATËK¼n©|Ö‰?ÿ UTÀµ§›Cø°O^:Ÿu¨U{PzÔ6êt‚4®Xmªð‡sÈšÅ[Âô"§ ÷ ½G`'‘î|TC±ÙÒR5@hÌ Ô#qd@áX•28Oe<ÂþÂúí²¢uÀ…㢒Â/˾$*%ÈÆ>ùׯ”‡.Pà‡JX™V˜¥·”|aéµ·P¥s<ó¹ò‡s$;}Þë@>ƒ›¯J‡|˜ÐXÝOãgpŽ2ž¸G­ó:ÀœßÕÖ6q8„ñ<8ð4¦„e £(?•F܇×zMŒOà M9€]§\¸R\*Ryæû¨ãë]““UÉѵ *ËËrЦ9†vrøüns¼­Î6nsºÕ×eùg¶pÛXýO±±ÒÿˆxE·u: ð nGGjn3óY@) “%Þ<,¤ fш|Ìë{ßþ9väsdGS6 ÷És–ÖåU+geÕ‚„9Èh?ÍÌVäëw_*ß¹g³ìÙ»Tt ¼ÖÏ1‰õê;3sPÆÇ»ø<›Á\úz״糓gn kã²àÇtÿÔ½»}f¡×|®2‰·¢Öñp»m¡xʰ¿îSt€¸-ãü"ˆ]îÐp$ ªÔÝ XBÀñɨ¦yð»òÒ~¼.eÿ‰šÜ¹§&ŸÙU—]6)[Ötžù⇛?õ,ùÞý/TYVG$­9ä%5z$s¦FœïKÑ¢Îz½96ezÏ×¹^ÛÁ–¢­ÚܨM•Ï8Û mŸÖjö!Å‚-kÿø{¼%åCÿÀ+r<æí ídÿ?ãîß-²qÑ:¹|ÅsäÅ«_„Wêf÷œmVfæÝ}pú9ÏÜyÒ/:„æøåO°x ²‰0pÒ¸§/}ÎseÃèq9|¯QÛ¹C¯ei·]x×ßGwuÉ>¦ãNÔ}÷¯’oÿ݆cÊÌZ„¬öÜ'x,GÝáƒó¨Åu‘É%w _*˜±6ð“ªRô”&°¥¹ a&rdª"÷íx¦´¶ »ñ½rï¾{å3÷Ý*w^ò ùw—¾Wú›HHhNWÂæNɶ •»ýã)9ÙãE ƒêg÷oÅ«Óö£vãfÒ’žåx§Ï2Yµö¹ûÎÛåØQýF³üŸ]òÃãeÙœÚÙEèù¾q½Ëå#·¢A£SQ µ^싹 [&ArŸäÙ•AêPdŠÁËxUÜ£‰jpò¸êç Í|èƒdÑâE²ù§¶RLp:—Æ .Z›29>.cÇâEÔ Ò~öžÏÉÆeåÍç¼AJUTÕűŽ4ÂSr¶“FóE ïg¯DÕV£ØJÛÓêˆñÞýrîù[äîºCàûñ8ZìMlÝî;0¬ëbÁïòôÎäšÌÏ`âjÙ…êxM å‡C~f¸‡±5¨âŒY„ &YÈu2¥…Õ)/žù 1£1´}òbýÉ– ÊÁ”`”ï ’¥g/Ó.–Ç~ø¦3Ã÷s?ü¢l[ù*®d¿Ë;#3þU±¶ú˜ÑæQ} f(nY2$m¢Å™4qZÁá þ¥²dùYúÖ°Q>׆²½£Ø¿*SS5¼4‚·¢møçÊŸØ98&Ò.º@„fQE¨ ˆy?Ñe €¡-Ô‰!?¼·ƒ¯4‰ ñÔ>¢ÝÀt JE,=k…ÌLOÊžÇvhæþcûewcîé@âážC)W{¬ÍÚs4®NÚc`lž¹΃×ÉÑÁÍ“8mq~»‡KX™öD(Êׯ)r?ÅŽ |¬î$àäx ½7–kéy¶9X,ÀãÖ>Ÿ+ø-ÎzôÜàƒž*G^‘‚φàHä4Ìõò³²σŸè ú%ËÏN_Œ…ôÍ'3ÎŒÎqr®]@Vé#@¢–Ó,( ýã'¥69-㽸ðVA׸‘ešî´´½Ñ²<÷`ñâ4Y{àËê@Ÿ2’NHYZ+ó5ÊÏB!šË'yüÍÝ1p1‹áÉžm!Â5”$–£b- ĵ÷ f;] ONQ~ð # íîíÑIÎL['?4ƒËkÖç­øÇ 2ÜI éøx¯Xt‘ŸÐi¤Šù¦TŸA/æ/{X0@÷ Fƒqx (¦µÌ@SQÂ÷ë’Ÿ"|ƒVÛ¸„Ž"øYwÄØó­B›¹º¨SùJ^ø¡u‚†/mJ‚‰ Étgvª+­Ñ¤m‹è¸Y‚‚˜$Á˜Ä¢ýl$)aÆAIž)3Ÿ >~øfÖí)ðˆdO{ Ùw€dž˜˜ÃʯåÖaØà¢áSi™ü×à ² ³Ð€/‹4*6—‰±œ :ƒŽ.#:[™Õ¥„£ºz 3°MfgÁG>¤ù6ç[\³˜«mNSQK¢ù¼ AgÈ3:²,gIËàèÉ@͎ױÞC6y•¿TÚ©…s|¸؃e Ü7ÇЋjX€mÜ#}¼{lÆà9ØEÏÕƒ÷6KC3ŠŽ4¾ #gÊm\ɧÒa à4€ƒ„ñÙëŠëOx£HbǨ¢hf3Ðy õ;(h±Ò¤bÙ6K)M$·ì´À†tJ S ó:<íÕ{Úäx Oñ„7­2gjvwX¬ƒ0 [<Àó\Á ™÷±G— R ,àºáì…©¡Ó9^!1Öp±§¿Ç»ôãÙäyÝ©^yî(T6c‡‹Ñâl£-¥ŸÁKX[ê0:–—ÄÑdü™Ø¬TÍ,øh£Š2òÀ«\(Â}Wh¢9%S­)Ì ˜ÞÀ‹/¿ÜSPM&Ë€›óžÄv4†ƒД¾‰“À´‘¡Ñ±ñ-ß Ôh D,Î(ÓüÇʈbIVˆØÕ†=w§²O9éÖm*%Ï›Oˆ>2´ÑY†õf£¡žäIIC ÅI¯Õ¸IPúˆ:_ÿœé´Hˆ)©é2Ôõt½9‹þß^Ã;¡0ª6z¥÷¾9ëA¡;ž,б£ŒÅÀ,öëxN\ŸÌ X01™sPL=¹±4©àèl‰l:=Šû 2Œµí“ü:üÃY¸þ#ðùƒµœJðÌs–#5¶ÆB»8ŒçJ´Ç Èå²0œÓœ’rF”á|t"r«xH§‚ç4‰ÁdsZ>sä‹Ú(8ÂÛ·|ÎM Êqà. ×Ý 'qð)Ñ¢°ûøì‰ÚƒI%܈šG`íåñ9Oi´keàtašŽ>O:½vGvº43ÎS°t¤·6"T¥rxæ% ¸¬ì -É›´¢¼PO§S,×i2Àçdòõ¸t<ß¿óØ·Œ­ÕºÓùç:»ðú7 ð3RñÕÞ°lô˜öÄÄFaf%I/gœŽyÚΤ%µ]Ê.ZStŸœÿ¹ˆå&Æ™‹‘ÌhÀĈIĆQêë:w>6RnŠL¯ ´ªPÈü"P]ì9–™Ù!%KRU|)tí†MšŠé±\{J€N¯?C9Äõ5`ª°6da3¨ÄKÁ œÛ‹ô1èy,#àf_"•Æã|eF ñü)âÅbbTcÍ“ŸBÚŒ­F‹ê5|]h ˆÑAl(ò׃íÐàH¤eš°òSøŒ„¶àr½`^¯èÒèmŽóMaó¸À Ÿ yÌFFÛÂîFõLNÊWŸ†5ð¡ÅÄÈSÛÒ8白K³His»ó·Ug€'ßx+F?‡dቅEZ•P*Þ$¤VOÀ¢Ó’T¶!*£#'2 õ‰2!<¡+ $¹1[ŽWFßÀ°Ýb芢î¼xÄ€…à pl ¶ð$AN4^ˆßô «Ù‘+šãyt8A§‘øâʧqäñ±,•ÃSˆ¸¼èœ'Gãù ‰Ð¨6J Á­N«5Û\—Ëêâ’¸žøíßq¾Usåµè.`i“ VêÝ)@o¬O-¸š#€\;L`QPÇ}¥äia/ëÂ<< xlØ–‰ ( ”GÃò_ÁÍÆÕæšoÒüò«û„ß+*²òÈ]GVù@\;®%yHÿ.ðÄ„qüœcG¤gš[ÂØ•#àÕnÔ îâõÒ-€î«xïùÞ7p\Ç\ñ¼Q”–¸l#sˆa©QxýÎϵ©óæÁ˜ ø#‡È»“™©ð㊘MËe\-Eµk㌨¬(·Ñõä¹=0ÏL¥£µÙù់µ®Ù}³?]ª”~ ÏBöÅ2bà°ðÞÀ6Rr“Èóy^‚KÁø•l‚«½Þ{²;ŸôÂÆÄµ´Çc£Ø¼šxÚ¦~Ð. ÊIŒIÐç>ßE8(õú¬ìzä!u€F}•H%l§…oø8óÍwŽÛØ™7=–‡ÑDZú½åÅfÑ­ËÔ8]²;所ù¸°ð .ÅbÐÓñ¹p7ÃëmhçîG˜ÐóuM€³e[©TÛÓ™s,¼C<ËK"ÍQj3$ þ|¾¥½‘„sOñ1ðñ(¥õiÍ0®Š¦1ö.è“îê¹èkW`1]¤nà,8…6Ì|ÊëƒÉ©QîúhZ¢±Kñ¹q놭Ëð,ùŪCG!ï¼}È]Av}î%r‹¸0\º Q/·‘€óº­èufGƒ:7¦Pì<™´PØg°¨úA²ŠÐúæŠÉ\‰ÀóùqYÜõÐò+Ú”ÕÓ‹·šû·±Ë‡µÝZU\Q’¡‘¶%mó^À³=KÚüöþ÷8 ÎdÐ-Â.¾a!t? ÓuO s­—„¼ìGÉN/ýŸ"G°C”<-äù<¯?z¸¹“„ötLÜH<3˜)Û?U=o¨æ jpÒÇe;ÄÓs“*A”øT€§l}èÇš'ãœ(ºkçà‹Ë5^*s @4Ðh¦•¤ÑycYÞÆ,è&#q£:5ûÁœÈÅH¯gÞsW=wÞ!.•Nà­bø¾hòÀ¯å|Ï‹1œü.4ñt|¨×Ë/x|wÒÃø˜¦(^H×f¨vN5G®õn£Ž„ÌëOÙž­Às!€Ð©Ç³ŒÀû_J¾¡ƒ¡¿ÿ â*®°JMç?8ÇG=>*#‡Õ|œ“¶YÔ ßeh4fñ}Ç‹¥§¶E×µ¼z.—§r#Iª€¶!M¶ÅÜ>ù‚¼^Vޝ~5+7mßþÉÌÂe8¸”Ÿ9ïg–«¸gŒ€‡o÷ ™]·¢€ý-<ŒÁ;æ¶=üÀÁ.ìøàŠò¦4‡ÖLä81ñœñD’Ri}”ì2™«Í)Dšø '¦cEÞ´£‡m:]¶ôÕ¸b7Ǥ| åÖ_b0­iqêz ¡Ø–.‰OxäkúØÇ DmFÞê…} +[·.Åõ¿‘T³—€Ì,ræGò4ÉŸâFQ§Åຣ‹¯Ú»g•M€@#SU)2^byg™Ë8ÞU¶õI7¦‚ÚI©Ñº4®8ÄSÂDïPû£ÕÓ¢Mýñ“c2vì(zûZY±üç´>µì§ú'¡ØØõ4e°–é„¡æô”×ÉJ¨Gª ó*õÒ¿ÁuÑ"ýÙ$~Åe¯^Ò»dXÙh×Zö2:9¯¾I†¿ƒ3àH·Üä³üË÷o{bÏ÷H#?ŽƒOîÃð_—•+Þ°…BUðŒ~¨#¯+‰øŠZGÝà*ΜJD,R:äc·õ£ÛÿÇÇ“‘:!·y.]л üú¯_Yí®*ÆØ«i`ÚÛÑi´“°ðoq$»JïÙ ¯˜V®ÜÇ’©©uozè»;lK-ÉGb6ÀáFÉ7Ô)ÎYDô–œq KÏׯ%Çs’²lE걌酓Òè›UC?Tð&î­î\Zæ "1…ÍŸCXû þ’¬Zù‹ÉhÃKb^z]æì,^èÀg­*ܘ-VMËíÃ+k·ƒêÔj>\ýˆ!Ž> ‰U¿õâßZuÉòK†Ü”©œDÛòk…Ž#þÇíŒ0ÜgøˆtþªÑÏNï\uÕê½Ñýo;»vwÅÕ´<æÛA0º»Zòü³áííÆPktPÀcÀƒßc¨ÕZ¸,£ÄöÐÄðÛ¨híVO¨+–CYOâ82÷íÞ%ÕÊ5²ùü÷cæe¡„7wH9Õ §åcs¼ã 9Ë6¤Æ¶ä³´ž\eÌF–4º×aèÇåF[àË^}ã57.û¥¿´¦ÔdAv³Ü<4Õ7•¹$÷\#ËÿG²qðGX ü_‘ô"—!TzKÝïé¹ojÝð± ‚ùÞ@ò¤1wOQÕ/iÈÅgAÛ°BÅzšš®¢¥êf3'ã–,⑦,;«¸›MLÉäØ.Ø&+Ç€OF'Ò:Ê%í½ËÄØE²eóüÌŽÂ8Óö¥SÌLt-¬À×ë<‘;/Æ ¤8äí¤e­Ò;·ÿÅŸ}'¦‹â¯yýÕ¯¿îý—½ã‚±±Hr`…¬på–”(ÉÊDx÷iÏÁøß|'žÃÆ\½=tw·–~hä[G/]Æyæb ¢o ÊÞ1ŠÅÔu›òkëñþ¾´C%œ|Á-·^('Nv+äKB°3{8aƆ s*iÍ®†ì¾îaiué{9A@pæžïÚ8zpHZSo–Í›>*•Êâ6á­Ò(¦Îš©~l3“[å ç ÛT ‰ÜÇÚʹpѾ¶’5[7oÿäDZ&o¯xÎ+^ý‡¯úÃ÷}ðÊž?28RËP°O•JûJ¿.O¢ÂNË‘ˆD¾„W•W2Æ]>„ß–J›Éd,ìk,~¯|wæ¿uWûÛ½ç¨ys~  S{åEkŽÈ/nÊp¾C¢Ï}é|ù?_Ý™Õêr<Ïâ•©336¼üg§ð¬|\š?~Í™žåßY-}û¤çÞ[ä gBÓ L9|ï RÞw©,ìÙ(åÞ¾dÎÏJEª”½ôrŽp =˜š.[ÈiÂK¢3êíïš–_•ÛäëKÖË}S+eÿìB«óò²,ÕÖÌïùìûny·,ßßúX³kø­]­þÃ+*Ó•MîôçûKý×-Xº ¹ä‹D„Roigœåñ9Ìä$º D¯;Ç0sáûÎÃjóáG&™‡žÚ[kÊ%kÈ—N¬’GN ɉYNOne¬†ñs°CÍÇåu딟_ÙÄ÷Ü¡%ߘ ·ß¹Nþò¯*ÉU,&q¦)ìÈñÝùÏÞ´¼òç&ÓÕk™Ú²OxÐ8¼y¬(40ZTfúäª_û}zò½8étyI'× ½ x-ž í¯»¨!çŽ`( ñúé/®> /î}_ô¨Éx«†±13T\ƒ¥Ë¤ë«ô5§ÓÕÒ‘Òb L=뇰å?‡L–5ëM4¶=œŠë Žã]8´ª·‹ìDk¾ N€NÒîÓÕ–\מ^Þ{H.ê‘ýõrÞàYÊf­TG; ‡4<”…ÙwÑÚÎk®^ÿho­w7™)t€S…)ÛjK]ÓÛp, Ÿ¿©4ðÖ‹j+®^Ñ=¼|?cÉòµÀ3˜vÃUé—öTäîÉå2Ú!~«ƉhSàÓ8´žÄCßÿöݚɞçÛ¾«Ú¸`M™ Š+Šr=šÈ‚®¥&úIr™Š¤PdË¥—Éð¢%­W·=(ï|,¤ùÕm‰†xN€[8Z‰´vš™=~üØ‘°©UxÖ¨ðÊþXŸŒKÀv£+zWü«Ý²û°ü ¾É—» è,ôðòùΜ¤oÄqŽÌEÜÚ¡R÷µç–¶ŒTú–õ”k¸)­“ÃØLeÁõ…­•”–JmhÞy7’1*+̓Oà=ðücãy¸¶N³Ór§Kι¢¼ì„%uú|Oõ|2 ŒßÍ?÷‚‹ð< 7½$û±QôdxP&Un.Aiíx¸äþ'ŸØ}rÐ=ÚBáhÐFe´õÿGÁ¸eDüŒ›”æ>õØ&°¼ Çe8–ÎÁ^GÙ#‹—î¿àÒg¿aáàð²¼ypbà¹ÐÚ·}ó ÈÐç ó²)/u Æs ‘rù"§õçÿÝ”¦6–eÓˆó¤9!†‡:fêõ·}îÓñ?ÚʲyOÊ–¦)VO'š—¾HÏTÌSñ¶÷ Öâ@·N~}„;4OàØcŽWmÛ¶d@jŸÄ\u=Ò0X»*mË‘äy2ôóÒ²V >ÏŒôé~àN8<’§g~q@¨Ùº{ÜÛ¶ÿ÷?ØùŸÎsÎLOgÕV×õÛ^÷ëxeÛûp]‹+É4´,Ò4<¹2ô­–E`-?-dø4+ežÈ”6•ç±ôÜ^‡•ágæ>*£x¢'ó,Êø4ÄÚ[ð4Tš¯âEÛ¶mè’ÚGJåÊõ…ÆŠ´ÌƒŸ¡è¼Žvz/É9f§~àgtK«åôun\¼mû§þüQö3M[üŒTŸ­£ÁÏWÊ•?Âh°ZKrÚµƒDQòæi5/¢i'-̃?m^.Ó í<:Üó9ú÷Ëäñvx’ǘŸÆÏ´ÕOc¥sU…_¹êŸÀe\8¿SÃ ÓæÍ8׊<-eÄ fxµ‚T@Lg|i™’Î1Xy;øèñ3þf™˜yÿöí±ßéN‡s¾u§ƒNªÃ¶mo/O¾o‘}W¹Tá‚2 s-8ÀÇ-êIÿ ÿ¡‚'w“ö<“‘œùžIUŠëæˆ0Yîy .·ÞàÏ~ºÀ§6™ºr=ßʳ:;=Vöør {üq¿½Ó³”Yæg(uÚ;@l——lûÅŸ®V*¯/Çåc\Æx¾÷Çùƒ“ò¤Mé¼kÍ;ÀS¿Ùü*¶[>/S£øræéÝÛ‹,üéqCà •©J÷µ¥RÛÑåk1 \[Á¢Ái²`&¹™|’eM„;zßAO¿ ûlwÊÌ1¼Ž¥ðáÌDþéɶît×öôƒCÔf»·´õóZåÖLÐÈÍ­Ri³m6¥MÎ÷|Šw‡Á}†{ÜÑjUvT¥¹·õî‘îòŽíŸÿõ«§ æiC’Zã´QéŸ^^aÌ.hbó) £{Ñ›O«K´H»3Ñ38c38c38c38c38!ȬIDATc38c3øqXàÿ B«&h\ìIEND®B`‚gle-graphics-4.2.4c/src/gui/images/pointer.png0000664000000000000000000000165511405446017017750 0ustar rootroot‰PNG  IHDR@@ªiqÞbKGDùC» pHYs  šœ vpAg@@êóø`ŽIDATxÚí˜ÍQÃ0…Ÿø’+”@æÄ=%@œi"A ¾s‚(Îæ,ljr´ú_½M2ñÚÒ~y²¤ªªªªªöWŠCDĉ+—„òÞ³RJQâô¿­…ˆí€é@[÷n˜Í€¦‹ßWÛ¶wG×éc°$‘á.ÚriÿG—KÂù9ß IVS‚Ónnv€ „l¤B‘ÓKH·ã³m¶..€÷÷!VK"uA$‡l`ïïDZûµär€Ö§q\óùf‰+«JBš&þ3ÅL±Vg‰+Õ CÓ7N; €ˆÔª=S¯¤ËÝQé„lj—è×˱[ò½R| ¸$ß¶ñûw^×7F\¹D,ƒ¥ôðð÷˜CÞòº`¯·Â··›ä³ËRвœö†¯þ§Cý$h:Š@¤×Ý!L%¯C(Àa|íû{ Á­N`*‰MA`[Ìã£~hAܶ)‹§à!hôQ×ó9ù$"ÇUÎmIÌ`ݱÃ"%1û€­é(åø?ðƒ98Al>ðàÓЃ—M\w’)œPl HP| øÔbN‡â| ‚\èq1 ˆÀ0u=‚Û“´9dê¦d‡9ïNNØßqL øRÎ×D+“+C²Ó Ž”ö¹wìÉWUUUUUUí·~l—Ì61Ž+|*zTXtcommentxÚóÉLNÍ+NµRpðQ(Ó3RÈ/RÈI,I-i±0/jzÖ.zTXtcreate-datexÚ320°Ô50Ñ54 1°°21±22×60²20B<2£4š.zTXtmodify-datexÚ320°Ô50Ñ54 1°°21±22×60²20B<P›ÃeIEND®B`‚gle-graphics-4.2.4c/src/gui/images/arc_3p.png0000664000000000000000000000241711405446017017434 0ustar rootroot‰PNG  IHDR@@ªiqÞbKGDùC» pHYs  šœ vpAg@@êóø`ðIDATxÚ囿kAÇ?£` ƒ?°Q±°Ð–VA(„`—Î*Õ¥°°„4±°»XXøO(Ø¥lb‘+R$`a8#ÞI.‹ÛMöævggvgfïÎKذ3ï}?ïÍdf²+¤”üÏv¦êª¶‰ªpiBãgãÊ· †×NÜ HädfxÜ®çI“s ü~_ðAJù¾€Áœ&„h÷5ðqil Xv#‹¬e]GQ_K=9ù4Nâ $š(Àm‚u LìÄ1;9%þx \ráKc6óÙI,¥hÄ?êÀÕœ.$ТW `Øö€ïÑ3À`†Þ|q¸ ˜Oý§6}êÝOÉB_®‡ÀP+1¤b«E}ýÀ|ÈRs€Æð&ðÒñÜÒWMÞhìmŽðš­¯ ¬XÍBÛCx#¥\¶l—¥.ŽÃEw€Å$;5ÉDôìྔ²é,Úˆ,¶p|-…J)où[»Ýfnnn@|I)µWM‹±g½Ððqeˆ0#m–)€VHñ+++…!ØÎº¦CŠÏ›—ª CŠ×Ä[@v_ᘈ/ ÁÀblÄû°@§ÓavvÖX¼‚€{åþ2ï@Š©ÇXÞ²ïJ¼ „¼FS)Ù·ÞÏëÆ¥Îʈw`M_x…—U‚YþËŠw`W°€ ñ¦„ú ²Ÿ>¢˼,¥|]¤œ…FCÁô9SŸiúžÑ˜Þõ·•…φ€NÐCå¾å$ª!3€å~»ê`C¸¦Ü7ª64€iå~³ê`C˜Tî·Š:ét:UëÌ4ݱ¸ g¯¨ø……Àíy¾3Ó,Ô%ðDÕkûÐ+ÁRª_@¢¡ àʸ‰Ï ¾¾rÏÄq·Û­\¼+OF!óºe´1€¨“}Àš­øÕÕÕàâm²Ÿà³àcVGÃ’yÛìçP_xh¦u4Lâ]˜W«ºx-€¨Cõ/A-îtTÄ—0p$w:Lâ‹fßÀÀ¡hš“Qoà\4ö“ž‹øÀ)åÙèBý ¼~Ó{ãë½ÿvbÌÛÄŠ>B¬'ÛçzèÙ.p3é4„åm«mâˆÏÖ“ -NpÒóÂä<ÁÖ·—&\ƒ0=H)â¯,€s>Aøî €Ñ7>ÂÊVYÙ7E§CM|>ÄCù ˜HêÐÓ%t§“`20×0|Uš·Ïæ\À1¼‚|7Xå˜àÆc)âr âyfo@¡fcÓŒÌ;ñWÅ|¸ÐPï•,ºs>Рó@3Ì|øwÎNÀöï;Ìüý|û%P  @§@€N€.,ö˲Pß÷çöô"bzÌóLMÓç÷p€ØðÓ4}†Ì‡ˆ ß¶­„ÎA›Þœ€Øð¦¤€7# ¼ )áÕ ðÞS]×ÉàU HÝyÕöàsÑáU ¸ªó*\ ¯J^¼ Hx¸4© ðÉXO"`]W3ðÑXê|t{ðÃ0¨†&Àbç£ ° ÿ¶ëðo Èþ´€\àO È >X@nðÁœsYÁ¿=f–ü/GBD2Žcð"B¼Á3Ëóù¯03ÉvÝ$‡Üþ¬p€."]:Eºt^nŒü¼Qy—ð‘ÍOιýø#›oÒàšõ*zTXtcommentxÚóÉLNÍ+NµRpðQ(Ó3RÈ/RÈI,I-i±0/jzÖ.zTXtcreate-datexÚ320°Ô50Ñ54 1°°21±22×60²20B<2£4š.zTXtmodify-datexÚ320°Ô50Ñ54 1°°21±22×60²20B<P›ÃeIEND®B`‚gle-graphics-4.2.4c/src/gui/images/zoom_out.png0000664000000000000000000000310011405446017020126 0ustar rootroot‰PNG  IHDR@@ªiqÞbKGDùC» pHYs  šœ vpAg@@êóø`!IDATxÚå›Ík]EÀ#1‚"É"«Hq‘¿CDÜDLHžP ¢XAÅ…"EƒÆ»vUi©uÛ…+QÄU¶) .lA©’LŸ/}¾qñ&qzÞܹgæÎ½¯µòî9¿;÷ÌÇk-²<4m¦-3%”cæw€g%`x0®Šî7€ï€O­µ·JcŒQ×=îùÖÚìl».Àœ² l6ñAø“\/×ÐpÐ pYœÎ‰§tOVý‚˲ïl£UÀ¥çÀŽ{’kŒsÁ¬+KîÚ–«3¨Ñu©îýí°qö:°®Î>ÿɺk[¥w»NA'€kÀ¥ôœ®k)Šˆ<ùË)(¥S—›ö„¢¿óÿ èî333•NÖ8¶îl$å„ ;qŒ3q(xU—õŽ„dÛ«€°ªµ]@h¨«}òÒH¯'L ‘Uºs¤ã¡jâO%ß@$'li!¨í ËÞ^Ì`¬›5àtÈÑáàè^¿ßgyy¹,Æs{I½—c¤€^ÀŸÍºàSlJƒraóK®òœ9YÚ•ÁolldCð Í“ø:Jˆó~ðu9A @vÿA£®U€Ó%×›~ðu‰Q @ÎúvrƒoÀŽðm[Ÿ !6öo¥(j @¿ß‡É¡y_k·Î¾¿'8'ÚüR”²íÔTƒ+++!_æªÚhæA2ÀHP^’U;.þP·$îRzŸŒÕ/æ¨1F¶|8º¿«Í"’²µ6ÚC=5çß÷H<'Žo¤¾WÅMrNˆËµ…|æ¯ÈX»&ë$]E‚wºÖ„oƒ\²†ÁRRÚùã< Ã`•¡®fx;·í6TN…» ˜ Ü€y&Çâõi b1T€k —Ã×ïËá’>ÈyÀEñ{‰2{ÿYbŒé19#½˜£«Ò†$eŒ9õ.Ý´Ö>‘áüÄ5ÍðhŒ9®gŒÙ½Û·­µ•ô!4¼ ~/cj7E›ŠtÖÙ\Õ.¨j¥â½ n‹·™„D·ÅKúPÕ¨òÃHãJù„ð‡‘+]€È§±&B;9¾5åý.@ÍÇÑX m]Wmc9»ß(Xà\« £ŸÇ›OüóxUy·TÒ6®= qÔv8ª‚ž¾O Ü/ow š‘yx x 8ܬÑõ—™”ü£Q²Jû‡¤¾rÿª¨?Î6‚“³¸»×Ê19ÏöãGÓFx¯`ÊÓÏàÕií ¤ƒ0†Jo QæeûycÛuãwo³Üµ}WgÅ’ÖA8TÂo¤Ÿ Hçs‹ƒp›Éïò÷ÑDíõbbºÞóá,ðá)r«šàUêzBÛÁ‹žð[„WTz˜Zð ÆGïë ÓÅ,,,D?Œv áG€#§TJHÇ~RB¸¼¬P"´ BÈ{À·„GƒPNx¡3¥ADäCÆó „Cà¥"Ra´¸/P}Ð:aµ€R¹£‰8Î_²ËUëÉb¦ AøðpK áoàùbº±ÿÕ;X!ÏÐ&Œ„¼ñ"ð…Â×¹ÿ8iœ‚¨ÃÇ•3O–倴Ö^uç†À™šê¿û‡¤Tµõ¦-Ƙ§ï4ÏFªý|­Ü\LW“Dƒ™û%˜NŸ‡îÿïÉYk¿Þb¼©2!ÿJÎ%ÿËHÐ*zTXtcommentxÚóÉLNÍ+NµRpðQ(Ó3RÈ/RÈI,I-i±0/jzÖ.zTXtcreate-datexÚ320°Ô50Ñ54 1°°21±22×60²20B<2£4š.zTXtmodify-datexÚ320°Ô50Ñ54 1°°21±22×60²20B<P›ÃeIEND®B`‚gle-graphics-4.2.4c/src/gui/images/save.png0000664000000000000000000000102311405446017017213 0ustar rootroot‰PNG  IHDR@@ªiqÞbKGDùC» pHYs  šœ vpAg@@êóø`ôIDATxÚí›Áƒ À|ËâÿzßÑ;ÿëÅýV¡=K¬MqšDDDdT"ãš–lùœïœÑóüɾӶ­Ó¾·kÅ>G¼š™>Ð4 h @ Ѐ 1-@cZ€Æ´hÐ4 h†µ-^JDÎqÃ=¨ dÏþ ? @ Ѐ >@õeð×qt j.µM>„–e9=6¥t8>¥TÕuø)`Z€Æ´hšœqÅÇÍt¡d t¡ôÐ]„3/Á®"œ]º‰ðÏ2ØE„øOøŸà9"""×ñX&E,•,I*zTXtcommentxÚóÉLNÍ+NµRpðQ(Ó3RÈ/RÈI,I-i±0/jzÖ.zTXtcreate-datexÚ320°Ô50Ñ54 1°°21±22×60²20B<2£4š.zTXtmodify-datexÚ320°Ô50Ñ54 1°°21±22×60²20B<P›ÃeIEND®B`‚gle-graphics-4.2.4c/src/gui/images/reload_red.png0000664000000000000000000000300411405446017020356 0ustar rootroot‰PNG  IHDR@@ªiqÞgAMA± üasRGB®Îé cHRMz&€„ú€èu0ê`:˜pœºQ<bKGDùC» pHYsttÞfx vpAg@@êóø`IDATxÚí›]ˆUUÇWiTgÆù ò%MÒš>À`œ #¤ +Š$¡ ‡êÁ{1‚ Â2&*‰©‡ŠzˆŠÂ™ì²˜Jü©‡0†ÑùLñÎý÷pöØã={Ÿ{ï9g_§Y°î¹û¬õÿ¯½÷Úk˜—yù_K.+C‚eÀµÀ* ‹à÷Rƒá0 œ~ŽåàìíÁ" ØÜ\ÔÅ|ý"p >¾ÈÏj_k/ FJ¨Œ ^¬ñÍ/Š4‚[ò —¼à}A·|“."ß*xM0"ñRŽè¬ðM~«`,C⥆ÆfÄë/ €.&¿ ~ Nþª°LÌY”ù&ÁÁ2N ¾<#Ø(è,,¡w ]Ð'Ø-ø®L‡ šÒ&ß&ø)& Á.ÁÊJ– ¬×gŒÄ´ùcjqÁ´|òã‚Ç Únf·[ОJ p©¾Ç`¢1A°ÏaðoÁCYÌÍfhlüãÀ´7)ƒw;¢ý¸`CÜøzŽÙasµFÚ AùuY“/Âw“#.œ´VªÁ~G·ïñE¾g¯c8¼ZÑЬwÌÃú&_„õaÇ:ä†J”~hQ:EÀ+kNðŽmv*Wa·¥õÇR[lTç„öAñ¬` ¥\e¶iï1ßd-¸Ÿ4§ÏWÔPfѵÃ;)hðMÔ‚½Q𬠳%wYZÿ)ß$SÁÞòyÁÕ¾ñ¥MÁÑ|^K‘?)YúÝLpl]J3;C÷è€U”8¬0rÐ7Ø,°:¢Þ4pÜ7Ø,ÐQo÷ 6 ,‹¨7– b䜓°–FÔ›ò 4 Ñå|/0WEA|; P>4쀨–^â›@Äs‚íÀ@/¡avÀ™=-Ê0•ž ùà= Ÿ ëí Ãø3B×r‚EÒ#‚À0°%ôW‡Í¿Fè[Hô¡¦D°Xðð)¥÷.Vœ ºo÷M.ù5À·ÀN¢W´³òaœ6N(%}µº0îàp³£z»KÙË»Á‹U4¤G¾UÁ¥‰¸IÔ׋ß/µ8a«¸×7áù°‡ò Ö –ŒË‚zßÄCx¬39Œó1zÀp¥ý;|“¶àÞÃ#Î5‚ OQÇâ£e3gC~…â]×¹« >¶(y£–f3 Þ²à ývsA¢³ÂÁ6ßÄ‹°>àHÝ"Ø$øÌ`wM•—¼:`Q|F°¾Èß&8gÁ¹_³ëw VÆUÞ)wúù:ä×:Æý˜ ­Z#÷9‚Ê)=Á´üi ®‚`k†PpTŽá°-‹Àhðܯà~‚ S’F¯|ã0X0³CjS¤‚s‰¹/h~)Xœ´ñfÁ‘óì¨`G’+F ÛG]~¦üœZ#ºb:afÙ¼ÓÒJl!èœ\ÍN.1Τàg>œ<’›£éøy™—“·€" ÙÁ•*zTXtcommentxÚóÉLNÍ+NµRpðQ(Ó3RÈ/RÈI,I-i±0/jzÖIEND®B`‚gle-graphics-4.2.4c/src/gui/images/preview_mode.png0000664000000000000000000000307711405446017020755 0ustar rootroot‰PNG  IHDR@@ªiqÞbKGDùC» pHYs  d_‘ vpAg@@êóø` IDATxÚå›Ïk\EÀ?#1‚"ÙCN‘â!‡ˆx‰˜‘¬P ¢XAŃ"Eƒ®7oì©ÒRëµO¢ˆ§½¦(x°!¤J.V0]7]w<ìd}ýî¼yß™7ïmk¿0}oæûãóæ}çÇ›k-²<4oæ- 9”c:À;À³À*°< WÅw€?ÀwÀ§ÖÚ[9ƒ1ƨëN{¾µ6¹=`ϘRö€^„?ÑõR í‡5—åÐéœyJ÷`8ȸ,Î)0\ªp~ìº'¹É$,º²ê®í¸:à ]—ªÞßVý€³×-uöùO¶\Û2½ý*­®•8¸t—Òuº|6®Å@È ðä/ÇL ”N]®Û²ÀÿÎÿƒ¢»/,,”:YáØ–³•ì„0ÉľàU]Þ×;"’m·†Öv¾¡®òÉK#) =afˆ,Ó"¥˜ U3ï|,ù:9aG AmÇcXÎðöCCݬ§CއÇ÷ƒkkky0™ÛKêÝ#™t=þôª‚±) Ê…Í/©ÊspzädiO¿½½ ¡h¨CDâk€/!vŠÁWå-Ùý‡µºV&N—\;ôŠÁW%F-9ëÛM ¾»Â·¾ >Bhì߉QÔ€Á`³CóÖn•ýâžà’hóƒOQ̶S]‡¬¯¯û|Y*k£™#xÉcAyµµHK¤íW…oã˜Þ'c-sÜÀ#[>Í‚“EDR¶Ö»¢¯§úà<ðÛâEωéØ÷*£¸IÎ q¹Ò!ŸÏÞük7eÈ¡+KðNצðm˜êCÒ0˜ @L»â8OÄ0X@éD¨mžÞ®ð­ß€Ò©pÛSá›ÐF¦‹¡y d1”€k —Ã×ï3Ëáœ>ÈyÀEñ{•<{ÿIbŒé2;#½˜¢«Ô†$eŒ9-\ºi­}"Áù™kšáÑ3­gŒÙV ·o[kËéƒo&xAü^1ÆTnŠÖ鬳¹"ª]P+ÔJÉ{ãÝo2 n‹çô¡¬Q金:Æ•ò þ#WÚOcuøvrŠþU”÷ÛGCÅ·u]¶åì~£`sð4 ~¯<áÏãeåÝ\9HÛ¸ò€ÄqÛÑh¤ xø>2ðby»MPïˆÌ“ÀSÀkÀyàf…®¿”ÎÄä5€€’ š?$õ•ûûWEý1p¶ÎÅݽFŽÉlo3q4=aLáŒyúÉ u;(é ‘›Yh”²}ÇÁè»n<äîmö±»vàêôP,i„#%Ì1ðFLðÉ€èq>µ8·™ýn!OÔ^Ï ¡à >œþÀ?EöAxU¼ @UOh:xÑ~‹€ðŠJo„s ^@¸Áäè}„p:€åååà‡Ñ–!ü¨p á” @iÂOJw€—Uräƒ&AyøÿhàË /´ 7ˆ€|Èd^¡p¼”@,Œ/Ê”´öAØÈ Wî¨#·s„—ìrÕz2€yB>|ÜRBøx>€¶AìFù–ÂsY4 #"o¼|¡„ðuê?N§ èð´râɲÖÚ«î¼Ó8SQý÷â!)•Am½y‹1æi&;Í‹j?ß@+÷ÓUà$Ã`æ~ ¦„ÓÀçÀã¾ûÿûcrÖÚ/·˜lªÌÈ¿¹e-¨Ís&*zTXtcommentxÚóÉLNÍ+NµRpðQ(Ó3RÈ/RÈI,I-i±0/jzÖ.zTXtcreate-datexÚ320°Ô50Ñ54 1°°21±22×60²20B<2£4š.zTXtmodify-datexÚ320°Ô50Ñ54 1°°21±22×60²20B<P›ÃeIEND®B`‚gle-graphics-4.2.4c/src/gui/images/polartrack.png0000664000000000000000000000462411405446017020431 0ustar rootroot‰PNG  IHDR@@ªiqÞbKGDùC» pHYs  šœ vpAg@@êóø`uIDATxÚåÛkŒ]UðßN‡–¦” ¶P‘—< ò¬4´T)~ TjÀðòP>1M¤Á¢ES‚ ¾EZB  4BP° ˆci©( ”VæÑéñÃ:—¹sï=÷1s;wˆÿdgæì³÷>{­½÷ÚëuGi,NÀl¼–ÿ+´âv$8¯Ù“iæ¤Ä'èiödjŨ2uã‘KÿOêëG˜žþß‚íøCýsØ}Íd@;nÅLì…^l®sñ•”€<1°oUé»;öÁ§ðy<…­ÃÉ„BÌC·X…·±Ëqfeô‹ÛôoÿÂr~…oí‰Ëp:S¢ûpC³ˆ'V}MB¶cmFŸdŸ`SFŸñvµïÅiÃIpKÑófüJé9|çfŒñ,¦¥åçiÝÅéóÑ}v`L™ú?á¯ÍdÀŽtÅwøï±:cŒ^lH˶´îôùåŒ>/ˆ­^ÈèíøcÚ·© øþ“>¯O't®w}#ðQ,2ð˜ôæ¿;œ È™X'îö …`Ü"œÑú-K‰ZX¡ÍAx2m·BÞN¼*dÈÄùx ïàk˜PxF¬örì–Ö"vĈÅ|]BP^ ÿί…9.ÎxîÂþÍ&ª^äp^Çár¥;!‹Ljó݃ß`R³‰,ƈãðNʈ ‹˜Pއáq!åï×ãˆA½R½Kh}­X<‹ÜÊa…|p G¯Ç|<εå̼”ã^ân\ŠWjùP²Æ¾B5®†Gr‡z´ÑŒ+4¼,a· f~›—’jå“<‚‰ú¬ZБ¬‘ÔP® ¡åvÀ\¡õ'¶ë†2mºñø•,Å"§ÆìÙ¥­–-cíZ÷se.„gýh;˜ö Jëß]ÅÖ{‡Bû´ cçB`í^×(³gsÅ¥õ+W²vm]C•`ôt&–{³†1à\¢¼®ƒ~õ¶·pt%s/ù\-•µbþ%&ß½tÈôÕÄ€É6tήÔy}ÙÈüz'¶ñõO|žâ³â k5PP]¬‚q2‡8«ÚGfqõ<_ÏÄfë@,ü[83oÇ×QǤïïU^‚üUW 7òðwx¢ž‰ÝøU;›ø< ñ-ü,h³XX‡Õ±lY¼b¬^]S÷ŠèZ͆SKë{_Ü) €á–´TBûrfžAHú¡Jû,ô½Á¶wÎØCÀ$ܼ/É©¬JèHè8$—qU¾.-ãêý@²Æ¸TêHÖè¸ìs®ê˜!9}®…õ©Æ8¬hò¢Ï¨Û×â,¦c/dÿ²ÖgKƒì-tƒ³ñO¡«¿´ˆm&üüB¸è¯Q¤Þ×c Å|/âKx¬ÙTf`ºp°%Ù±Á#D`³\lp]‰«¤´àx×Üž¶™R@ÓñB°WÅxü2%8Qšgp‡þØ9,É`À¼abÀÉbºÄÊìGF ea­PN5jÔ¹\nB•~SEˆ«øßª×³T?ZÄqí.÷ emÈxOmL’D’Ô”(r“áôº ƒ`À4¡Žw õ¼½Á߬‹Çêßÿòw™‘°._¶ðÊ:’¼¯ëbý%ñ½›`K­ÆÐ"ዬĀŽZ\îwqŸÊ+?A(FÃb5ŽÇdåㆈHÒ&!d+=ÞcÀœ9I²iSi¹þú<ªÅ¦Æp6 ýàøÂ—Š÷ç±Uù§ëp†ìŒ‘l´µ1yriý¸º] {n!î:ÂL & é\œ ””=Yåz’dÞ¼¤,–,I’k«Œ“–rWtÎjô(‡^‘ŽWëK™P¹¸âªÎ/Ìí­Ü¤lˆ¯W}yCÂÕø³+P› ¨²êù²Që±jápƒ°XØsÅ 0¥æžÝݼ\&×jË–š‡Hñ~*4ŧ‡‰îL\§H£ÖkðÎh•®Áv¡ªïÓl¢kEgñH'I/Ï%t¾Å†N’ ¼™Ð™Ðù.Ï_Ûúw)Ck¿dì#Òhz…’³kZ_Nž$/zEzߑ͞üP1M¤Ñli5‡¼Ë²' ¶G¸êf6›ˆÁb’Xù|Âä1Eï+™ÃSñkqµ>«ß1ó¾Áþ"u®O¤Ò®ôí·,¦‰@KáÊìÀ*Ùn÷{Ò÷iûWÒçU²ÌO„C·ø; É{ŽPˆ£”÷uU˜Ëë8IÄ* ;â$²ÛV¡Ï ±íóqœHþÇ•y n6ªNkp£¡EL.M”=D}aðõæ;2*ƒ[c«MÑ%ìù­¨ã™YEÆÉ>qùAØ2ë4 g§·€Ýe ÜœSÀšØjsX_‡”¸¸Xö¶øa9'˜®Üu?•lÅoæòblµ5x9ÇÞ“©ß¥‚y¯ìSáÜ[ñ îÈ_ÁU¸ï$¶ •ÿ²-§àãÂùal–Wm³ìܚʿH×vf+>~¾4¢øòû}ŸpÄß«ä•#â´„%ÂÌ5ï‚ÄÊfU¶¥À ǵ7&Ü.ÜOȳis3+ *F‡V‘=B\*º ù°*l*S±¯ âêÜCø`f+™›™*xI‡mÐô ¨V~9RÁ[:c žÉb¡Oæ]c­7ó¸<¶¸z'HlŽÖëiýÉ3›pƒîBµóÃÉi‡“óœùprbbÃ)á-W?œÜg˜Ç0B‡ñ²£_¬¢9eð*zTXtcommentxÚóÉLNÍ+NµRpðQ(Ó3RÈ/RÈI,I-i±0/jzÖIEND®B`‚gle-graphics-4.2.4c/src/gui/images/polarsnap.png0000664000000000000000000000261411405446017020263 0ustar rootroot‰PNG  IHDR@@ªiqÞbKGDùC» pHYs  šœ vpAg@@êóø`mIDATxÚ国nÛ@ Çÿt^ t¨Ñ¢k·™ºdÌkxrò™2ä= ¸c‹d-Ð5³—œ/àïºÊ9oÀh6"9_ ¡Û΋˜¢Ù™Dí|Ìs:&ÞxåB›üOf^£Ù*“S߆ÚÿŸ7æ=€ß±.¾ÑQRQ¦‚^dfÒµ‡ÐJn¯à€J”!Ðlf „É­±Æù¶]›8VŒ®R1õØÝ¯k7V3l·Ê‡ ÌæR“ ã¾´;ÖoÑìbWê€Pu½C³-}w‰QŠ9šRpá~¿€¦fµi»™¼’° #4?D¨qóÚI3SRjç#µâî)¾ˆ)ì†ëG‘¾{`½oµÍò8‰œÐôË@xrJÎé!Äú«1BfÆ|ƒ­7JC9Ý•eGèYþtvŒ[Ú±…öfÏY~yü{Àœ³­«•*zTXtcommentxÚóÉLNÍ+NµRpðQ(Ó3RÈ/RÈI,I-i±0/jzÖ.zTXtcreate-datexÚ320°Ô50Ñ54 1°°21±22×60²20B<2£4š.zTXtmodify-datexÚ320°Ô50Ñ54 1°°21±22×60²20B<P›ÃeIEND®B`‚gle-graphics-4.2.4c/src/gui/images/text.png0000664000000000000000000000222611405446017017247 0ustar rootroot‰PNG  IHDR@@ªiqÞbKGDùC» pHYs  šœ vpAg@@êóø`wIDATxÚí›IhA†¿Éb·À£"¸!¢ ‚Áƒh<¨Ä[BÜPE…DDÏ ž=)xð BÜÁC"& ê)‰ˆˆ£A£fi50ÉLuOOwU§g~h’™®~ï¯ê¯®m „âF²ÿm@𸼳“¨~Nêzh›iÁ;ÀPcšD™ÅìËø\4Zäcµ¨w2®Ç¶‰™B[–à­ÉÀºs$ÀZl“ K4Á… κ$ ö2èqI€´Ú&V{>Ö28/‚¢eÐ'‚ $RJmbM”*HÃID’&¸«leÅÂDù±'IJÓÿĺ !°€Œ[š”ÊJü 5©¥üÒJ›Œ‹97¾ž77÷Ç{s½ß䦹Óùñ=ßwfî™™*T¨P¡ÂІ |¾M´¨Xk[V4Æü›l;Л@l¤`ml²í@-EÝM)û¤ÝN`x –ò~`ÔýxÜ~nß7€?¥|®À®KÀªÕ^Þv»íÀÀêŒüž?7+À×À ð¸Hlp_‚f¨)à!úu }žJßS2VïmŠ4Ô¯ÇVàà0ð’úß"0 Ü~ƹówÀ)Ÿ¤nð"0¼ ¼‰›6#Àf)×Þ÷0 œ~È#BØ| \õüRóƘ/ãÀ{¸9ŸÃÒÇq࢈¦Ç»*\6tJ€mÀà‡Ìi`¬V« Óè-y`€—1Cû@8mË$@ŠçCà¾*›¾À­ò¨Œ9«¸ÜŽ}íô.8 ì'N@Õ#cO+NóµP¥ÑåÏã©Ø.zJ-¢sL¨Î'b[íÁ áVÏu‚œkÑ8nÿåÜCô7=Ƴv¸ ’êU¾?¶¥Ï@?_‰Û¤ã8¥:ºL9yáZÏýTÚNvàâí¤ƒ¿=±-K=Â9áÿXl ÆI–+x–b›vÃçzN†6^ÏrõèlSF…{½¯ix€åÊ]ŠmI\R¶Ð|‹Ú^õþUl+r@sßÒè:ËU‹mEŒ)[®‡4šS†b[‘CÊ– cµEÕ(ëqV°ZÙ²¨+øÖÛâ½›ÐÒŸóê=SYhîÚ6¯¿ª÷2ly³Bs×¶y˜QïïÆ¶"4wm›W€)õ¾/¶9 ¹O…4ò†ÂÖÚ­ÖÚWb[”™Cah²²Övˆ(×fÜÖñ ÏÏvø )·Ã°ÂDÀ}Co©ŽºñHì9bߡ觔ópÄ·ÂEÁ¹“>DyÅ)®4m}#ç(G”8"\²]ŒXkû’Ï[rM^ÿ7yz{{?ñˆ0 ¼Oœ)adì|WcÖÚšµöíV ¬5Æ|„ÿrt’Î_ŽNÒür´­©-¯ÇqWÙ1¯ÇC¯üod%”$H\kBæ".©aœü ãüŸ áý Áäý•’™#¸¬°z,á\tŽ|)2ƒR®s‚æ€Ïñ§È„¦ýdK­ñì V‡è\’Ô!ž±ê÷2y€µÖc|¯Ã¥ÇíÂ¥Ëm^'_šÜO¸4¹\šÜÜ÷¾Å X*Z€z â2¼6o‰[p‹Ùf+IeY£î¿ãÂ×›À7À_Rž&Q28ó­Œ!m vwmŊ๱ T¨P¡B… ]€ÿ±€ûñØ$0á*zTXtcommentxÚóÉLNÍ+NµRpðQ(Ó3RÈ/RÈI,I-i±0/jzÖ.zTXtcreate-datexÚ320°Ô50Ñ54 1°°21±22×60²20B<2£4š.zTXtmodify-datexÚ320°Ô50Ñ54 1°°21±22×60²20B<P›ÃeIEND®B`‚gle-graphics-4.2.4c/src/gui/images/grid_snap.png0000664000000000000000000000071411405446017020231 0ustar rootroot‰PNG  IHDRÄé…cbKGDùC» pHYs  d_‘ vpAgª GB­IDATHÇÍ–k €0 ƒSØí<Ÿç­¬’±W ÉÖ}® VàKz!b<D¸ß3Ùþ¤·Ó%+gYØBK VÙ¨[w2vÅ)j“É!  O ´14¨_²;’•+ë ×5“®ëJZu]÷› »î7îªé3®†„>âºiȈë¦!¹tyÈ è1Ï:£ô‹ À£3>V: í°â`?!jH^'<A'ˆÁõÅD¤*zTXtcommentxÚóÉLNÍ+NµRpðQ(Ó3RÈ/RÈI,I-i±0/jzÖ.zTXtcreate-datexÚ320°Ô50Ñ54 1°°21±22×60²20B<2£4š.zTXtmodify-datexÚ320°Ô50Ñ54 1°°21±22×60²20B<P›ÃeIEND®B`‚gle-graphics-4.2.4c/src/gui/images/edit_mode.png0000664000000000000000000000233511405446017020215 0ustar rootroot‰PNG  IHDR@@ªiqÞbKGDùC» pHYs  šœ vpAg@@êóø`¾IDATxÚíšÍkÔ@Àµ+Å›o=(ˆ‚àEO…B¶ÿCÿ½xÙ“íMðX(~\ª  =øYñÐb‘z)‚¢´ˆ"hµEÔjí×Úmw»&±“ÙÉ6ÙÍNÒ:?¤Ûɼ÷fæ½yó°X,–ÿ˜–´؆VÀ:€ÞßÇ€SÞïo€ûÀ—´mG€1à'ð¨h®ðÐ]dz£Ã® /m¥“À†ã¾JFγ¯ˆ‘´ h”Qãšv9„‹¬hÚ¦mD=èf¾t³}ÀÎibGáST¸Ó1úȱC]¡(R½„ïÕÑ× Ò›¶qµp[˜ÌÖ¼÷ÿCuö»*õ7š¶‘µŒ%8[ë@}_“ú\&c9‚\>)Æ>œ”Œ5©ï“ií“~Qè&ÞÏ·=}—edb ›Šb›lù{Z¥ûƒ5Ú¹ŠœŽ´W#s Xn4Ðg;úÕЊð{_VèÌ’ñ‹D[îõ²G‘·‘Öä9E™ašïÝŠÌ »€<¢:NPFÂTÚ™«$·³DB—ÎúɈ‰HÜEpé5^õu?Ê0¾è>K²Çê1.ðJcüñ¶¸zi'˜ùù5#³ï³ãßR@çrÆ–þ(Õ‰©B„ˆ*t·pÉ„ñª¿€'4w‡-wSÎò Ò¸ñe’9ÁÕÂαUT¿Ùò¸©>™YŸÑÈ.:è ihv¹ÉŸuõôhÊÝþ‘'lÔëÉ—\à›FÖ†–»¬ÈÁH«‹üIåù~±džêånjk ðTRb1Û3À‡ƒP/ait ó.³$)2‰8Vv"#9à¶FáïÄß’t UÙëßø¬ËÈÕÕ°µî P®Í%òŠœ /–4eÎoÓV71Ÿ™#å—qå¢Ìf/Á YÔ´ñ}]Íæ¦³d<ÀI¹ß1ž“Of›ssu¹›¬ÅF.,n·”eoÀäÄôo|ãV…áL~úãÀáˆÏtÕøE gsq‘—ÿà9â3•Ë10,s,dÉð°·,ËÀトXª{îpña’‹ø`é…×¶ ØœކôÝ_DœÃ+1®ñÕÆ-‚A*ŽºkQ Ì̲—iÓüvBºò"²ìóîg¯¦Ú;ˆ:BfÑ(û¯»ߟb—}¨¨Û¯+ÞÀŒ‘±l­8ÀYà:âPò–Œú¯Åb±X,‹Åb±X,–ºø }cýT”g–5*zTXtcommentxÚóÉLNÍ+NµRpðQ(Ó3RÈ/RÈI,I-i±0/jzÖ.zTXtcreate-datexÚ320°Ô50Ñ54 1°°21±22×60²20B<2£4š.zTXtmodify-datexÚ320°Ô50Ñ54 1°°21±22×60²20B<P›ÃeIEND®B`‚gle-graphics-4.2.4c/src/gui/images/perp_line.png0000664000000000000000000000264611405446017020246 0ustar rootroot‰PNG  IHDR@@ªiqÞbKGDùC» pHYs  šœ vpAg@@êóø`‡IDATxÚå›Ï‹EÇ?µ?`ÂaArÌÕÜÌ ¹xôàAA„\ô6^ÔxñŠ $Ar’€7½äÈA1(‚ HÔ IvŒîly虵§¶^Õ«ê®êY}ÐììvÕ«÷ýÔ«×Õ=½ÆZK®cÔm»ŒSÒÖº:ÐK5€ÿÂlæØÊÐ m K d:çô«‘iY5 ÖšnS Fç"XË|0Œ1j*ÖZï¬1Úö®ý_Šà¶t¢z¸3V©žüZ @ªcÌ„öç‚0ŽH'Y’Pkm©j?ª`. ka*bMu¢K º[k£þÜåàóªø},™ý hÏžïlkk‹Éd¢‚"AˆõÄs¥³zgÛüªïBH…ç‹#äcöó(ð p{oÔ$]ÖZÄû H6«Bhx™æºnSŽ _©C,Øšf¶ ïOJ˧ÉA`0ŸˆûÀÓà~G^ó+À§N&œ© ä 2à.átàãoø°Õfx¶(€˜Å ÍžN§6f³¶¿Ï þV€·Ï» öàÍÍÍÍÉÆÆ†ÝÛÛÓø#)à'cÎ.%€Y¿õõõ¨ø€o}>|÷|Zõ¢Þ ÞošªÜ–üxîÖ€ß'Rf= @GZ‡ü´ ¬WñãœÔ—4 À*|­ŸkÄW ÐšKáÇ®ø®ZÕr³ °#ø0|8»¿&BRÅ'ˆAH0¥¹'xÌÿ–#þRÊ#÷Áä­þï ¬y-„Þt©whvu>¯)x1½.\‡ ÷Yñ’Ô_‚«&ྜ~ˆÇ|;Æþ3  „ãÀwDjB „¢ A8Cóõv’[ësӼ˓cƘ»ÀC‚Oè—4ŽŸú5¹˜ÀolÍ~ø|JOijp,KL]¬«ÀëÀ=âûÕx±v Ÿ3×o §h=YòEd½)ªq ÝÂ>¯O?HMrbU‹éPÍKØ92¡ú¨Aúj@WÌ` ¡(ŒK ŒãÀ×!K  ³¾#>[XÕ¯9BrÁYkïÐÜ@]ì„`ê­ð2˜1æÍ Îñ5×}Øþkì=þý¶èðpjú»íUhÌ·ñ iüÙÆiˆÊø*zTXtcommentxÚóÉLNÍ+NµRpðQ(Ó3RÈ/RÈI,I-i±0/jzÖ.zTXtcreate-datexÚ320°Ô50Ñ54 1°°21±22×60²20B<2£4š.zTXtmodify-datexÚ320°Ô50Ñ54 1°°21±22×60²20B<P›ÃeIEND®B`‚gle-graphics-4.2.4c/src/gui/images/gle_icon.png0000664000000000000000000000423711405446017020046 0ustar rootroot‰PNG  IHDR@@ªiqÞbKGDùC» pHYs  šœ vpAg@@êóø`€IDATxÚí˜{PÔ×Ç?ûÛ–×.,/ayf] ŠA|DQ«SF±:*&ä¡Äj|L£™©é¤µmDÔ±a2#™iÔŒ3ƈ¶Î¨Ñ`ˆ5JD‘‚µÝJxäØÇï×?’]ÅÑ Óéï³ÿìïœsϹç{ïÞ½ó™ÿ'à œ¦WêŒû̧/ß±UÛ²³Qj4¼‘“ÃÅæfþ5ÚÍ=±‰ðL6ÌóŸå±6vªGŒ·»Bëì·Ø¤®ªV±%ÊOxÿ¢_/B¼uÞüù,JJb[][vìàF|´XxváB^ˆ·£@+PÆ òhâû†³Z&Óžjµ:ôXà˜¶„ô±$«Uö…€ë-˜"4üÃ[ÿ}ppu»j‘J©"L†1ȈR¡¤ËÜ%8ç|@h÷ÀAeŽÖZîÞ–¤ÌO®™k+¾›í±ë&»«ºÌRñ[Ó=Ö'ªˆW©@ç;žçσ›ÿîŒáì{¨šò)™¤8Í´µ=œºèOJß<¯GPÝŸ\cùÎKÛc'„^rðª V«Ô¤ŒMÁb³¼f0ld‘Ýð~Ø$, åÃçÉ0ÅÕ˜UÝ#ÿ²]Q%IH¢ˆ´f ÛîÙ¼™_¾Ñ†äø¤`¸ÅÑLZ¤-HÒ¤ÓË‘&Ža‚«ø¹Æ¹ù¯ç×î^º»ÍÙ>h;¬ƒe¿€_k´ ‡`C ”¹J¾ïªùö•)­ºš:ƒa\~’öázËÀw°‰®ãÏÔži«i©)ôu÷d$@*l%@;ï} ¦áLhÿ~ê÷íã3«u˜˜ŸL‹íñǔ՗e—ß)Ov¶9΀,ÈJ±öÓ«LðÙã(,dg~>é@Õ“µ÷tY<~qb´.:'÷Bî< ÑÙçØ‹a¦æÇÕ¸E'¡þq •–Ò°n)›6qx´›vFë©ýÕª©«â†ò9°Â2{÷ý@)ÔŽ¤Xs3M£Ý°3Ó¢¦MZ9ue¼ †ô;~ãŒÀ+pà£G$ß9Oâ-„ðœb%%pú4窫îÉ0"‚¼ 7䔯8ævå…×¼=S ‘þ‘qqAqº¶ž¶o\  N¥ûˆñS.õrcS¸FPNàùŸÉ_M½·7ã€îŸR€Ø0uðQ¥ÓÞ[ŒÂ#wÙ»#!Xør|òÕÍ‹¤7C‚~°WUAA©‡cª©ùi›¸rþ\Äë*nÙmÉÑw‰ ,¥ª©jÅòÉË_~¤#Ù£­½’¹Ðd»©UÞ¸ö­íMûe¾¼.]¢°¦æ§ÝúvÌ"4vs¥²™J»ídÍqà8^%~ž~!éqéÏ5Öq2˜œŒ~À!Èîú­6ià9&†¼ÆFFðOýôiímí;WwîzcWã~‡ýpÐ>c`GZ4.ŽH#ÿ´ Ó„m9VylµKŽCq'«6fm€ˆÑž<@hèÒ0ƒá·GÝÝCF´({/ïíÙU²ë À\ã\߬IYG33— à87ìWê±>ÖŒ~ó/ !! ·FE­^’”ôqÝ“æ3—g§e/ÑkôÆAØ`¡é‡kj V~“GS€ÈÈÕú€€Ùkzzn^¼y3×ñ³ ðzü\ †ÌÄÌý–þ¾¼Š¼“ð Ôn…=Õ`PŸÇOú ³fF(ÕKÜÙ/ù«•®ß®)• p u=Yo︀èèõë5š ^^ÑX­_¶´œv0ëãÝÃsû«^J|)1ŘRš`,­/µ6u7UÁ÷€ð{ ÊÛ `áÞqnV §¦‡‹9Ýf©în—hé6KV½¯àéë¡HJ Uæ$GØííPRÂ=çœsæ¦ÓñB·“1*ØM'"±üEÜd7šîçZBê¦j4gèt3ãÔêPl¶^[}ýÇ'4šDßé!·çuí>öTã!)”-ý×p¥2ªÃM5þ;µJ±`ܽ^«Ï˜1U%‘^Kï1{ÜC—m –Á†tX–æéï3݃Ž>‰ÿ´Ø°ˆ|§@êP<3iŒ7%ôNëë<Û×ßyõ*Ûvìà¯ö<§N‘+Ь=Ï_øÓPÅZ€> ŒÇÞ!þໃÜíí—­EEÓÝRSæ÷öš²³¢öN[kÜïò…fŸâ-¾ÞyÀÞcîáíÏßÞxøêáÜ!w€2¨+ƒ 7­É6É]ktC§¸J¨ª±ˆRë…ÛÒñ†N±üÈ![ÑÙ[;Z-•3fð\äÒ˽{倛[@“N§ßïçS°د³ïÃ*Z)¾U\<Âá22222222222222222222ÿÛüß\"_ã]*zTXtcommentxÚóÉLNÍ+NµRpðQ(Ó3RÈ/RÈI,I-i±0/jzÖ.zTXtcreate-datexÚ320°Ô50Ñ54 1°°21±22×60²20B<2£4š.zTXtmodify-datexÚ320°Ô50Ñ54 1°°21±22×60²20B<P›ÃeIEND®B`‚gle-graphics-4.2.4c/src/gui/images/gle.ico0000664000000000000000000004107611405446017017026 0ustar rootroot@@ (B(@€ 2/xi dɉ V­ë W¯ë W¯ë W¯ë Uªë Y³› K—i!B-ÅÅcÿÿiÿÿiÿ|iÿiÿiÿiÿiÿiÿiÿiÿi|¨%iÿMMiÿMMiÿMMiÿMMi–--h÷JJ3ÿMMi|f¨iÿiÿiÿiÿiÿiÿiÿiÿir€÷iî‚îiî‚îiî‚îiî‚îiî‚îißzßi.4#×î Fñÿ~ýÿvíÿ aÃÿ _¾í _¿Ý _¾ÿwðÿzõÿ±ëñ©©ãyyd¶¶´´öòòÿÿ|ÿÿÿÿÿÿÿÿÿÿÿêÿâÿùÿ|¨%ÿÿMMÿÿMMÿÿMMÿÿMMÿÈ<<ûäEEJÄ;;È_Z˜ÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿr€÷ÿî‚îÿî‚îÿî‚îÿî‚îÿî‚îÿã|ãÿX0Xp\UÓÚöÿÿÿ8ßÿ Lšµ9s?3g&M A-\4iM Mš×À÷ÿÿÿÿîîÿ³³r??’’´ùuÿÿÿÿÿÇäP—B•h>·Nn.BY{%%ž«33ØæEEÿÿMMÿõJJüI0/ %FTmÜ÷ÿÿÿÿvîÿA¬!B•!B•!B•$E…J(JsR,RžVž«¹e¹ýî‚îÿììÿ”Q”¢]‡ØûýÿÿÿÔã³<;$I%£¾ÿÿÿÿÿÿÿì쀀`îkÿÿÿÿÿ¸' k kæEEÕþMMÿª33~[·ëÿÿÿÿbÄÿ(P- W/W/”Q”ÛëëÿžVžó§%Ýïÿÿÿÿæã•3+W ¶ÿÿÿÿÿÿÿìì}}`íjÿÿÿÿÿh¸¹77ÞCCÿ¸77ÅFH‘ëÿÿÿÿ\¸ÿ--R,R#¿h¿ÚÔsÔ÷ )ªØýÿÿÿ÷ÿ‚+W ¶ÿÿÿÿÿÿÿìì}}`íjÿÿÿÿÿh¸U 00šÚBBÿ¶77>~ëÿÿÿÿ\¸ÿ--i9iiÛxÛÿq=qv]]îüÿÿÿÿÓãl+W ¶ÿÿÿÿÿÿÿìì}}`íjÿÿÿÿÿh¸Sv##®%>~ëÿÿÿÿ\¸ÿ--D%D ]2]®V/VQ­˜üÿÿÿÿÿ£§+W ¶ÿÿÿÿÿÿÿìì}}`íjÿÿÿÿÿh¸>~ëÿÿÿÿ\¸ÿ--e7e j9jD´óÿÿÿÿøÿg‚+W ¶ÿÿÿÿÿÿÿÅÅ¥11}}`íjÿÿÿÿÿh¸>~ëÿÿÿÿ\¸ÿ--K)KŒ»f»àÔóÿÿÿÿèÿÀ%/^¡¹ÿÿÿÿÿÿÿ¤¤ÿJJ}}`íjÿÿÿÿÿh¸>~ëÿÿÿÿ\¸ÿ-- ŒLŒ·ÔsÔàØóÿÿÿÿèÿÀ%  @85k’¹èÿÿÿÿÿÿÿÖÖÿ‚‚D&&$}}`íjÿÿÿÿÿh¸>~ëÿÿÿÿ^¾ÿ"Fb&MA&MA&MAPF†A¥Z¥A|C| ØvØøÔsÔàØóÿÿÿÿèÿÀ% W° \º÷ jÖÿ´êÿêêÿêêÿêêÿÊÊÿ~~â22 }}`íjÿÿÿÿÿh¸>~ëÿÿÿÿyóÿiÓÿhÒÿhÒÿhÒÿjqÚÿÛxÛÿç~çÿî‚îÿÔsÔàÔóÿÿÿÿèÿÀ%G, R¦E R¦E€¦E¦¦E¦¦E¦¦E¦¦EmmE''}}`íjÿÿÿÿÿh¸>~ëÿÿÿÿfÍÿ^½fÿEÿEÿETJŽ£™S™Æ·d·íç~çÿÔsÔà©óÿÿÿÿøÿg‚}}`íjÿÿÿÿÿh¸>~ëÿÿÿÿ\¸ÿ--772ÀiÀÀÔsÔà­˜üÿÿÿÿÿ§}}`íjÿÿÿÿÿh¸>~ëÿÿÿÿ\¸ÿ--_4_˜ÒrÒà]]îüÿÿÿÿÁãM66¯¯ÕˆˆX}}`íjÿÿÿÿÿh¸>~ëÿÿÿÿ\¸ÿ--P+P/p=p¹¬Øþÿÿÿîÿmlvvúúÿˆˆ}}`íjÿÿÿÿÿh¸>~ëÿÿÿÿ\¸ÿ--[1[r>r&g[âüÿÿÿÿ¸ã\ __ØØÜþþÿˆˆ}}`íjÿÿÿÿÿn¸Aƒëÿÿÿÿ\¸ÿ--N›¤Y¤í—Œðýÿÿûÿµ´940b…”×ÿÿÿþþÿee}}`íjÿÿÿÿÿ¥¸V®ëÿÿÿÿ\ºÿ0-D%DµcµÛ—S—íªŠëûÿÿûÿ#­åG;13g-Zl eÌ×Âûÿÿÿÿýýÿ$$‡‡nðmÿÿÿÿÿÄÀ[&M dÉíÿÿÿÿiÓÿ8q;--@#@H'HŠKŠÁiÁzä|äÿ—S—íxƒÊîöÿ Hÿÿråÿ U¬è R¥šC‡š R¥šqä§ræÿ~üÿ¾÷ÿûûÿýýÿ$$>>q‚‚šÏÏôÿ{ÿÿÿÿÿëÿ·±]šN8BJ[šBM‡Æ{÷ÿÿÿÿÿ|úÿgÏßuìšuìšuìšelϰ¨[¨ÿ¬^¬ÿÆlÆÿëëÿî‚îÿ—S—í/"­i<¾Ïqäðwïÿwïÿwïÿwïÿtêò `ÁÝpài€¦i¨¨°òòÿ##€‡‡Ü¯¯ë¯¯ë¯Uë¯ë¯ë¯ë¯ë¯ëoºª33q¯55ëUFsëW¯ëW¯ëW¯ëW¯ëW¯ëW¯ëW¯ëW¯ëOXªë¤Y¤ë¤Y¤ë¤Y¤ë¤Y¤ë¤Y¤ëh9hÚ77m7m7m7m7'~~ŒŒm3ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ†?Àxþ?Çãþ~?çüÿÇãÿ¾?÷ùÿÇãÿ¾?ÿñÿÇãÿÞ?ûóÿÇãÿþ?ÿãÿÇãÿþ?ÿãÿÇãÿþ?ÿãÿÃãÿþ?ÿãÿÃãÿþ?ÿãÿãÿþ?ãÿÿãÿþ?¿ãÿÿãÿþ?ÿãÿÿãÿþ?ÿóÿÿãÿþ?ÿñÿ÷ãÿþ?ÿùÿ÷ãÿþ?ÿüÿçãÿþ?ÿþÇãÿþ?ïÿáÿü>ÿá÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿgle-graphics-4.2.4c/src/gui/images/open.png0000664000000000000000000000122611405446017017223 0ustar rootroot‰PNG  IHDR@@ªiqÞbKGDùC» pHYs  šœ vpAg@@êóø`wIDATxÚíšÍmÃ0 FÉ"0Ð=²E3@—éA÷s÷¡Ët€f‹îQÀõR¨(ÔCQúÞÙ°ù=˜6%ˆ`RXrѲœÅ7ܶ Åõ fή'Å“Z¥N˜^ÀApM¼÷íaþßY1FQ«õ*€¾>_Šp<]­3&™¾ Àºk Àºk¦ ú ÖÂÌU³±æ¡. f† ÒŸ#¦o°.À°.À°.À°.Àš‡ŒÂ-Øo³¹Ðb”ݯ%r÷()±ý¯*àxºÒÇû³æ#’¼¾}'Ã)~z¿,ç»}£"ÀKxžÂ7à-|SÃ7à5|žÃW ð¾JÀዌ¾HÀHá³ôž„çšš è!|¡ùšX$`ÔðDËáß×Ï­ðRL$?+¸m !ˆ X×õV`­¼Eþ‚åP”²{Kˆ&Y‚­¨îÉžF“P4 Ž$¡x-0Š„ªÕà(0'?ŽXñpç*k*zTXtcommentxÚóÉLNÍ+NµRpðQ(Ó3RÈ/RÈI,I-i±0/jzÖ.zTXtcreate-datexÚ320°Ô50Ñ54 1°°21±22×60²20B<2£4š.zTXtmodify-datexÚ320°Ô50Ñ54 1°°21±22×60²20B<P›ÃeIEND®B`‚gle-graphics-4.2.4c/src/TeX/Makefile.os20000664000000000000000000000567611405446017016402 0ustar rootroot######################################################################## # # # GLE - Graphics Layout Engine # # # # Modified BSD License # # # # Copyright (C) 2009 GLE. # # # # Redistribution and use in source and binary forms, with or without # # modification, are permitted provided that the following conditions # # are met: # # # # 1. Redistributions of source code must retain the above copyright # # notice, this list of conditions and the following disclaimer. # # # # 2. Redistributions in binary form must reproduce the above # # copyright notice, this list of conditions and the following # # disclaimer in the documentation and/or other materials provided with # # the distribution. # # # # 3. The name of the author may not be used to endorse or promote # # products derived from this software without specific prior written # # permission. # # # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR # # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY # # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE # # GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER # # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN # # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # # ######################################################################## #makefile for building initex.ini include ../../config.os2 all: $(PROJECT_BINDIR)/inittex.ini $(PROJECT_BINDIR)/inittex.ini: $(PROJECT_BINDIR)/bin/gle.exe -$(CP) init.tex $(PROJECT_BINDIR)/ -cmd.exe /c makeinittex.cmd clean: -$(RM) $(PROJECT_BINDIR)/inittex.ini $(PROJECT_BINDIR)/init.tex init.ps gle-graphics-4.2.4c/src/TeX/Makefile.vc0000664000000000000000000000560611405446017016300 0ustar rootroot######################################################################## # # # GLE - Graphics Layout Engine # # # # Modified BSD License # # # # Copyright (C) 2009 GLE. # # # # Redistribution and use in source and binary forms, with or without # # modification, are permitted provided that the following conditions # # are met: # # # # 1. Redistributions of source code must retain the above copyright # # notice, this list of conditions and the following disclaimer. # # # # 2. Redistributions in binary form must reproduce the above # # copyright notice, this list of conditions and the following # # disclaimer in the documentation and/or other materials provided with # # the distribution. # # # # 3. The name of the author may not be used to endorse or promote # # products derived from this software without specific prior written # # permission. # # # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR # # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY # # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE # # GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER # # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN # # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # # ######################################################################## #makefile for building initex.ini !include ..\..\config.vc all: set GLE_TOP=$(PROJECT_BINDIR) -copy init.tex $(PROJECT_BINDIR) $(PROJECT_BINDIR)\bin\gle -mkinittex clean: -del $(PROJECT_BINDIR)\inittex.ini $(PROJECT_BINDIR)\init.tex init.ps gle-graphics-4.2.4c/src/TeX/init.tex0000664000000000000000000004502711663271710015721 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! size 10 10 ! To update inittex.ini first delete the current version from CGLE_TOP: ! and then CGLE INIT.TEX /DEV=PS to create a new version and copy ! it to CGLE_TOP: print "" print "If GLE says 'Saving definitions', then compilation was successful." amove 2 8 begin text \tfont{0}{texcmr}{1} \sfont{0}{texcmr}{.7} \ssfont{0}{texcmr}{.5} \tfont{1}{texcmmi}{1} \sfont{1}{texcmmi}{.7} \ssfont{1}{texcmmi}{.5} \tfont{2}{texcmsy}{1} \sfont{2}{texcmsy}{.7} \ssfont{2}{texcmsy}{.5} \tfont{3}{texcmex}{1} \sfont{3}{texcmex}{.7} \ssfont{3}{texcmex}{.5} end text begin text \mathcode{ }{$8000} \mathcode{!}{$5021} \mathcode{'}{$8000} \mathcode{(}{$4028} \mathcode{)}{$5029} \mathcode{*}{$2203} \mathcode{+}{$202B} \mathcode{,}{$613B} \mathcode{-}{$2200} \mathcode{.}{$013A} \mathcode{/}{$013D} \mathcode{:}{$303A} \mathcode{;}{$603B} \mathcode{<}{$313C} \mathcode{=}{$303D} \mathcode{>}{$313E} \mathcode{?}{$503F} \mathcode{[}{$405B} \mathcode{]}{$505D} \mathcode{_}{$8000} \mathcode{|}{$026A} end text begin text \delcode{.}{0} \delcode{(}{$028300} \delcode{)}{$029301} \delcode{[}{$05B302} \delcode{]}{$05D303} \delcode{<}{$26830A} \delcode{>}{$26930B} \delcode{/}{$02F30E} \delcode{|}{$26A30C} \def\lbrack{[} \def\rbrack{]} \def\space{ } \def\,{\movexy{0.5em}{0}} \def\:{\movexy{1em}{0}} \def\;{\movexy{2em}{0}} \def\!{\movexy{-0.5em}{0}} \def\smallskip{\vskip{2 ex}} %does not work \def\medskip{\vskip{4 ex}} %does not work \def\bigskip{\vskip{8 ex}} %does not work \def\ss{\char{$19}} \def\ae{\char{$1A}} \def\oe{\char{$1b}} \def\o{\char{$1c}} \def\AE{\char{$1d}} \def\OE{\char{$1e}} \def\O{\char{$1f}} !\def\ae{\uchr{00E6}} !\def\oe{\uchr{0153}} !\def\o{\uchr{00F8}} !\def\AE{\uchr{00C6}} !\def\OE{\uchr{0152}} !\def\O{\uchr{00D8}} \def\i{\char{$10}} \def\j{\char{$11}} \def\l{{\fontenc{1}{rm}\char{248}}} \def\L{{\fontenc{1}{rm}\char{232}}} \def\adobess{\char{251}} \def\adobeae{\char{241}} \def\adobeoe{\char{250}} \def\adobeAE{\char{225}} \def\adobeOE{\char{234}} \def\adobeo{\char{249}} \def\adobeO{\char{233}} \def\adobei{\char{245}} \def\adobesterlin{\char{163}} \def\adobeyen{\char{165}} \def\adobeflorin{\char{166}} \def\adobesection{\char{167}} \def\adobecurrency{\char{168}} \def\degree{{\fontenc{1}{rm}\char{202}}} \def\dag{\mathchar{$279}} \def\ddag{\mathchar{$27A}} \def\S{\mathchar{$278}} \def\P{\mathchar{$27B}} end text begin text \mathchardef{\alpha}{$010B} \mathchardef{\beta}{$010C} \mathchardef{\gamma}{$010D} \mathchardef{\delta}{$010E} \mathchardef{\epsilon}{$010F} \mathchardef{\zeta}{$0110} \mathchardef{\eta}{$0111} \mathchardef{\theta}{$0112} \mathchardef{\iota}{$0113} \mathchardef{\kappa}{$0114} \mathchardef{\lambda}{$0115} \mathchardef{\mu}{$0116} \mathchardef{\nu}{$0117} \mathchardef{\xi}{$0118} \mathchardef{\pi}{$0119} \mathchardef{\rho}{$011A} \mathchardef{\sigma}{$011B} \mathchardef{\tau}{$011C} \mathchardef{\upsilon}{$011D} \mathchardef{\phi}{$011E} \mathchardef{\chi}{$011F} \mathchardef{\psi}{$0120} \mathchardef{\omega}{$0121} \mathchardef{\varepsilon}{$0122} \mathchardef{\vartheta}{$0123} \mathchardef{\varpi}{$0124} \mathchardef{\varrho}{$0125} \mathchardef{\varsigma}{$0126} \mathchardef{\varphi}{$0127} \mathchardef{\Gamma}{$7000} \mathchardef{\Delta}{$7001} \mathchardef{\Theta}{$7002} \mathchardef{\Lambda}{$7003} \mathchardef{\Xi}{$7004} \mathchardef{\Pi}{$7005} \mathchardef{\Sigma}{$7006} \mathchardef{\Upsilon}{$7007} \mathchardef{\Phi}{$7008} \mathchardef{\Psi}{$7009} \mathchardef{\Omega}{$700A} end text begin text \mathchardef{\aleph}{$0240} \mathchardef{\imath}{$017B} \mathchardef{\jmath}{$017C} \mathchardef{\ell}{$0160} \mathchardef{\wp}{$017D} \mathchardef{\Re}{$023C} \mathchardef{\Im}{$023D} \mathchardef{\partial}{$0140} \mathchardef{\infty}{$0231} \mathchardef{\prime}{$0230} \mathchardef{\emptyset}{$023B} \mathchardef{\nabla}{$0272} \mathchardef{\top}{$023E} \mathchardef{\bot}{$023F} end text begin text \mathchardef{\minus}{$007C} \mathchardef{\triangle}{$0234} \mathchardef{\forall}{$0238} \mathchardef{\exists}{$0239} \mathchardef{\neg}{$023A} \mathchardef{\flat}{$015B} \mathchardef{\natural}{$015C} \mathchardef{\sharp}{$015D} \def\clubsuit{{\setfont{pszd}\char{168}}} \def\diamondsuit{{\setfont{pszd}\char{169}}} \def\heartsuit{{\setfont{pszd}\char{170}}} \def\spadesuit{{\setfont{pszd}\char{171}}} \mathchardef{\coprod}{$1360} \mathchardef{\bigvee}{$1357} \mathchardef{\bigwedge}{$1356} \mathchardef{\biguplus}{$1355} \mathchardef{\bigcap}{$1354} \mathchardef{\bigcup}{$1353} \mathchardef{\prod}{$1351} \mathchardef{\sum}{$1350} \mathchardef{\bigotimes}{$134E} \mathchardef{\bigoplus}{$134C} \mathchardef{\bigodot}{$134A} \mathchardef{\bigsqcup}{$1346} \mathchardef{\smallint}{$1273} \mathchardef{\intop}{$1352} \mathchardef{\ointop}{$1348} \def{\int}{\intop\nolimits} \def{\oint}{\ointop\nolimits} end text begin text \mathchardef{\triangleleft}{$212F} \mathchardef{\triangleright}{$212E} \mathchardef{\bigtriangleup}{$2234} \mathchardef{\bigtriangledown}{$2235} \mathchardef{\wedge}{$225E} \mathchardef{\land}{$225E} \mathchardef{\vee}{$225F} \mathchardef{\lor}{$225F} \mathchardef{\cap}{$225C} \mathchardef{\cup}{$225B} \mathchardef{\ddagger}{$227A} \mathchardef{\dagger}{$2279} \mathchardef{\sqcap}{$2275} \mathchardef{\sqcup}{$2274} \mathchardef{\uplus}{$225D} \mathchardef{\amalg}{$2271} \mathchardef{\diamond}{$2205} \mathchardef{\bullet}{$220F} \mathchardef{\wr}{$226F} \mathchardef{\div}{$2204} \mathchardef{\odot}{$220C} \mathchardef{\oslash}{$220B} \mathchardef{\otimes}{$220A} \mathchardef{\ominus}{$2209} \mathchardef{\oplus}{$2208} \mathchardef{\mp}{$2207} \mathchardef{\pm}{$2206} \mathchardef{\circ}{$220E} \mathchardef{\bigcirc}{$220D} \mathchardef{\setminus}{$226E} \mathchardef{\cdot}{$2201} \mathchardef{\ast}{$2203} \mathchardef{\times}{$2202} \mathchardef{\star}{$213F} end text begin text \mathchardef{\propto}{$322F} \mathchardef{\sqsubseteq}{$3276} \mathchardef{\sqsupseteq}{$3277} \mathchardef{\parallel}{$326B} \mathchardef{\mid}{$326A} \mathchardef{\dashv}{$3261} \mathchardef{\vdash}{$3260} \mathchardef{\nearrow}{$3225} \mathchardef{\searrow}{$3226} \mathchardef{\nwarrow}{$322D} \mathchardef{\swarrow}{$322E} \mathchardef{\Leftrightarrow}{$322C} \mathchardef{\Leftarrow}{$3228} \mathchardef{\Rightarrow}{$3229} \def\neq{\not=} \def\ne{\neq} \mathchardef{\leq}{$3214} \def\le{\leq} \def\ge{\geq} \mathchardef{\geq}{$3215} \mathchardef{\succ}{$321F} \mathchardef{\prec}{$321E} \mathchardef{\approx}{$3219} \mathchardef{\succeq}{$3217} \mathchardef{\preceq}{$3216} \mathchardef{\supset}{$321B} \mathchardef{\subset}{$321A} \mathchardef{\supseteq}{$3213} \mathchardef{\subseteq}{$3212} \mathchardef{\in}{$3232} end text begin text \def\owns{\ni} \mathchardef{\ni}{$3233} \mathchardef{\gg}{$321D} \mathchardef{\ll}{$321C} \mathchardef{\not}{$3236} \mathchardef{\leftrightarrow}{$3224} \mathchardef{\leftarrow}{$3220} \def\gets{\leftarrow} \mathchardef{\rightarrow}{$3221} \def{\to}{\rightarrow} \mathchardef{\uparrow}{$3222} \mathchardef{\downarrow}{$3223} \mathchardef{\updownarrow}{$326C} \mathchardef{\Uparrow}{$322A} \mathchardef{\Downarrow}{$322B} \mathchardef{\Updownarrow}{$326D} \mathchardef{\mapstochar}{$3237} \def\mapsto{\mapstochar\rightarrow} \mathchardef{\sim}{$3218} \mathchardef{\simeq}{$3227} \mathchardef{\perp}{$323F} \mathchardef{\equiv}{$3211} \mathchardef{\asymp}{$3210} \mathchardef{\smile}{$315E} \mathchardef{\frown}{$315F} \mathchardef{\leftharpoonup}{$3128} \mathchardef{\leftharpoondown}{$3129} \mathchardef{\rightharpoonup}{$312A} \mathchardef{\rightharpoondown}{$312B} end text begin text \mathchardef{\lhook}{$312C} \def\hookrightarrow{\lhook\joinrel\rightarrow} \mathchardef{\rhook}{$312D} \def\hookleftarrow{\leftarrow\joinrel\rhook} \def\bowtie{\mathrel\triangleright\joinrel\mathrel\triangleleft} \def\models{\mathrel|\joinrel=} \def\Longrightarrow{\Relbar\joinrel\Rightarrow} \def\longrightarrow{\protect\@lra} \def\longleftarrow{\protect\@lla} \def\Longleftarrow{\Leftarrow\joinrel\Relbar} \def\longmapsto{\mapstochar\longrightarrow} \def\longleftrightarrow{\leftarrow\joinrel\rightarrow} \def\Longleftrightarrow{\Leftarrow\joinrel\Rightarrow} \def\iff{\Longleftrightarrow} end text begin text \def\lmoustache{\delimiter{$4000340}} \def\rmoustache{\delimiter{$5000341}} \def\lgroup{\delimiter{$400033A}} \def\rgroup{\delimiter{$500033B}} \def\arrowvert{\delimiter{$33C}} \def\Arrowvert{\delimiter{$33D}} \def\bracevert{\delimiter{$33E}} \def\Vert{\delimiter{$26B30D}} \def\|{\Vert} \def\vert{\delimiter{$26A30C}} end text begin text \mathchardef{\backslash}{$326E} \def\rangle{\delimiter{$526930B}} \def\langle{\delimiter{$426830A}} \def\rbrace{\delimiter{$5267309}} \def\lbrace{\delimiter{$4266308}} \def\rceil{\delimiter{$5265307}} \def\lceil{\delimiter{$4264306}} \def\rfloor{\delimiter{$5263305}} \def\lfloor{\delimiter{$4262304}} end text begin text \def\rmf{\fam{0}} \def\log{\mathop{\rmf log}\nolimits} \def\lg{\mathop{\rmf lg}\nolimits} \def\ln{\mathop{\rmf ln}\nolimits} \def\lim{\mathop{\rmf lim}} \def\limsup{\mathop{\rmf lim\,sup}} \def\liminf{\mathop{\rmf lim\,inf}} \def\sin{\mathop{\rmf sin}\nolimits} \def\arcsin{\mathop{\rmf arcsin}\nolimits} \def\sinh{\mathop{\rmf sinh}\nolimits} \def\cos{\mathop{\rmf cos}\nolimits} \def\arccos{\mathop{\rmf arccos}\nolimits} \def\AA{\acccmb{texcmr}{23}{6}A} \def\aa{\acccmb{texcmr}{23}{6}a} end text begin text \def\cosh{\mathop{\rmf cosh}\nolimits} \def\tan{\mathop{\rmf tan}\nolimits} \def\arctan{\mathop{\rmf arctan}\nolimits} \def\tanh{\mathop{\rmf tanh}\nolimits} \def\cot{\mathop{\rmf cot}\nolimits} \def\coth{\mathop{\rmf coth}\nolimits} \def\sec{\mathop{\rmf sec}\nolimits} \def\csc{\mathop{\rmf csc}\nolimits} \def\max{\mathop{\rmf max}} \def\min{\mathop{\rmf min}} \def\inf{\mathop{\rmf inf}} \def\arg{\mathop{\rmf arg}\nolimits} \def\ker{\mathop{\rmf ker}\nolimits} \def\dim{\mathop{\rmf dim}\nolimits} \def\hom{\mathop{\rmf hom}\nolimits} \def\det{\mathop{\rmf det}} \def\exp{\mathop{\rmf exp}\nolimits} \def\Pr{\mathop{\rmf Pr}} \def\gcd{\mathop{\rmf gcd}} \def\deg{\mathop{\rmf deg}\nolimits} end text begin text \def\`{\acccmb{texcmr}{18}{5}} \def\'{\acccmb{texcmr}{19}{2}} \def\v{\acccmb{texcmr}{20}{0}} \def\u{\accent{texcmr}{21}} \def\={\accent{texcmr}{22}} \def\.{\accent{texcmr}{95}} \def\H{\accent{texcmr}{125}} \def\~{\acccmb{texcmr}{126}{7}} \def{''}{\acccmb{texcmr}{127}{3}} \def\c{\acccmb{rm}{203}{1}} \def\k{\accent{rm}{206}} end text ! hardcoded in tex.cpp because of conflict with character "^" ! \def\^{\acccmb{texcmr}{94}{4}} ! can this be fixed by moving these: ! tex_chardef('^',"\\sup "); ! tex_chardef('_',"\\sub "); ! from the code to this file? begin text % emulator stuff here. \def\kern#1{\movexy{#1}{0}} \def\raise#2{\movexy{0}{#1}#2\movexy{0}{-(#1)}} %does not work \def\lower#2{\movexy{0}{-(#1)}#2\movexy{0}{(#1)}} %does not work \def\mathord#1{\math{0}{#1}} \def\mathop#1{\math{1}{#1}} \def\mathbin#1{\math{2}{#1}} \def\mathrel#1{\math{3}{#1}} \def\mathopen#1{\math{4}{#1}} \def\mathclose#1{\math{5}{#1}} \def\mathpunct#1{\math{6}{#1}} \def\mathinnter#1{\math{7}{#1}} %does not work \def\copyright{c\mathchar{20D}} \def\test{\char{20D}} \def\dots{\ldotp\ldotp\ldotp} \def\ldots{\ldotp\ldotp\ldotp} \def\TeX{T\kern{-0.1667em}\lower{0.5 ex}{E}\kern{-0.125em}X} % \def\sp{^} \def\sb{_} % define some fonts, won't work in math mode. should define rmf,itf,bff,ttf \def\rm{\setfont{rm}} \def\it{\setfont{rmi}} \def\bf{\setfont{rmb}} \def\tt{\setfont{tt}} \def\glass{\rule{0}{0}} end text begin text \unicode{$A3}{\adobesterlin{}} \unicode{$A5}{\adobeyen{}} \unicode{$A7}{\adobesection{}} \unicode{$A4}{\adobecurrency{}} \unicode{$B1}{\pm{}} \unicode{$B2}{{}^2} \unicode{$B3}{{}^3} \unicode{$B5}{\mu{}} \unicode{$B7}{\cdot{}} \unicode{$BA}{{}^1} \unicode{$C0}{\`A} \unicode{$C1}{\'A} \unicode{$C2}{\^A} \unicode{$C3}{\~A} \unicode{$C4}{\''A} \unicode{$C5}{\AA{}} \unicode{$C6}{\adobeAE{}} \unicode{$C7}{\c C} \unicode{$C8}{\`E} \unicode{$C9}{\'E} \unicode{$CA}{\^E} \unicode{$CB}{\''E} \unicode{$CC}{\`I} \unicode{$CD}{\'I} \unicode{$CE}{\^I} \unicode{$CF}{\''I} \unicode{$D1}{\~N} \unicode{$D2}{\`O} \unicode{$D3}{\'O} \unicode{$D4}{\^O} \unicode{$D5}{\~O} \unicode{$D6}{\''O} \unicode{$D7}{\times{}} \unicode{$D8}{\emptyset{}} \unicode{$D9}{\`U} \unicode{$DA}{\'U} \unicode{$DB}{\^U} \unicode{$DC}{\''U} \unicode{$DD}{\'Y} \unicode{$DF}{\adobess{}} \unicode{$E0}{\`a} \unicode{$E1}{\'a} \unicode{$E2}{\^a} \unicode{$E3}{\~a} \unicode{$E4}{\''a} \unicode{$E5}{\aa{}} \unicode{$E6}{\adobeae{}} \unicode{$E7}{\c c} \unicode{$E8}{\`e} \unicode{$E9}{\'e} \unicode{$EA}{\^e} \unicode{$EB}{\''e} \unicode{$EC}{\`i} \unicode{$ED}{\'i} \unicode{$EE}{\^i} \unicode{$EF}{\''i} \unicode{$F1}{\~n} \unicode{$F2}{\`o} \unicode{$F3}{\'o} \unicode{$F4}{\^o} \unicode{$F5}{\~o} \unicode{$F6}{\''o} \unicode{$F9}{\`u} \unicode{$FA}{\'u} \unicode{$FB}{\^u} \unicode{$FC}{\''u} \unicode{$FD}{\'y} \unicode{$FF}{\''y} \unicode{$100}{\=A} \unicode{$101}{\=a} \unicode{$102}{\u A} \unicode{$103}{\u a} \unicode{$104}{\k A} \unicode{$105}{\k a} \unicode{$106}{\'C} \unicode{$107}{\'c} \unicode{$108}{\^C} \unicode{$109}{\^c} \unicode{$10A}{\.C} \unicode{$10B}{\.c} \unicode{$10C}{\v C} \unicode{$10D}{\v c} \unicode{$10E}{\v D} \unicode{$112}{\=E} \unicode{$113}{\=e} \unicode{$114}{\u E} \unicode{$115}{\u e} \unicode{$116}{\.E} \unicode{$117}{\.e} \unicode{$118}{\k E} \unicode{$119}{\k e} \unicode{$11A}{\v E} \unicode{$11B}{\v e} \unicode{$11C}{\^G} \unicode{$11D}{\^g} \unicode{$11E}{\u G} \unicode{$11F}{\u g} \unicode{$120}{\.G} \unicode{$121}{\.g} \unicode{$124}{\^H} \unicode{$125}{\^h} \unicode{$128}{\~I} \unicode{$129}{\~i} \unicode{$12A}{\=I} \unicode{$12B}{\accent{texcmr}{22}\i{}} \unicode{$12C}{\u I} \unicode{$12D}{\accent{texcmr}{21}\i{}} \unicode{$12E}{\k I} \unicode{$12F}{\k i} \unicode{$134}{\^J} \unicode{$135}{\^j} \unicode{$139}{\'L} \unicode{$13A}{\'l} \unicode{$141}{\L{}} \unicode{$142}{\l{}} \unicode{$143}{\'N} \unicode{$144}{\'n} \unicode{$147}{\v N} \unicode{$148}{\v n} \unicode{$14C}{\=O} \unicode{$14D}{\=o} \unicode{$14E}{\u O} \unicode{$14F}{\u o} \unicode{$150}{\H O} \unicode{$151}{\H o} \unicode{$152}{\adobeOE{}} \unicode{$153}{\adobeoe{}} \unicode{$154}{\'R} \unicode{$155}{\'r} \unicode{$158}{\v R} \unicode{$159}{\v r} \unicode{$15A}{\'S} \unicode{$15B}{\'s} \unicode{$15C}{\^S} \unicode{$15D}{\^s} \unicode{$15E}{\c S} \unicode{$15F}{\c s} \unicode{$160}{\v S} \unicode{$161}{\v s} \unicode{$164}{\v T} \unicode{$168}{\~U} \unicode{$169}{\~u} \unicode{$16A}{\=U} \unicode{$16B}{\=u} \unicode{$16C}{\u U} \unicode{$16D}{\u u} \unicode{$16E}{\accent{texcmr}{23}U} \unicode{$16F}{\accent{texcmr}{23}u} \unicode{$170}{\H U} \unicode{$171}{\H u} \unicode{$174}{\^W} \unicode{$175}{\^w} \unicode{$176}{\^Y} \unicode{$177}{\^y} \unicode{$178}{\''Y} \unicode{$179}{\'Z} \unicode{$17A}{\'z} \unicode{$17B}{\.Z} \unicode{$17C}{\.z} \unicode{$17D}{\v Z} \unicode{$17E}{\v z} \unicode{$1CD}{\v A} \unicode{$1CE}{\v a} \unicode{$1CF}{\v I} \unicode{$1D0}{\v i} \unicode{$1D1}{\v O} \unicode{$1D2}{\v o} \unicode{$1D3}{\v U} \unicode{$1D4}{\v u} \unicode{$1FC}{\accent{texcmr}{19}\AE{}} \unicode{$1FD}{\accent{texcmr}{19}\ae{}} \unicode{$3B1}{\alpha{}} \unicode{$3B2}{\beta{}} \unicode{$3B3}{\gamma{}} \unicode{$3B4}{\delta{}} \unicode{$3B5}{\epsilon{}} \unicode{$3B6}{\zeta{}} \unicode{$3B7}{\eta{}} \unicode{$3B8}{\theta{}} \unicode{$3B9}{\iota{}} \unicode{$3BA}{\kappa{}} \unicode{$3BB}{\lambda{}} \unicode{$3BC}{\mu{}} \unicode{$3BD}{\nu{}} \unicode{$3BE}{\xi{}} \unicode{$3BF}{o} \unicode{$3C0}{\pi{}} \unicode{$3C1}{\rho{}} \unicode{$3C3}{\sigma{}} \unicode{$3C4}{\tau{}} \unicode{$3C5}{\upsilon{}} \unicode{$3C6}{\phi{}} \unicode{$3C7}{\chi{}} \unicode{$3C8}{\psi{}} \unicode{$3C9}{\omega{}} \unicode{$391}{A} \unicode{$392}{B} \unicode{$393}{\Gamma{}} \unicode{$394}{\Delta{}} \unicode{$395}{E} \unicode{$396}{F} \unicode{$397}{G} \unicode{$398}{\Theta{}} \unicode{$399}{I} \unicode{$39A}{K} \unicode{$39B}{\Lambda{}} \unicode{$39C}{M} \unicode{$39D}{N} \unicode{$39E}{\Xi{}} \unicode{$39F}{O} \unicode{$3A0}{\Pi{}} \unicode{$3A1}{R} \unicode{$3A3}{\Sigma{}} \unicode{$3A4}{T} \unicode{$3A5}{\Upsilon{}} \unicode{$3A6}{\Phi{}} \unicode{$3A7}{X} \unicode{$3A8}{\Psi{}} \unicode{$3A9}{\Omega{}} end text begin text \presave end text gle-graphics-4.2.4c/src/TeX/Makefile.in0000664000000000000000000000614411405446017016274 0ustar rootroot######################################################################## # # # GLE - Graphics Layout Engine # # # # Modified BSD License # # # # Copyright (C) 2009 GLE. # # # # Redistribution and use in source and binary forms, with or without # # modification, are permitted provided that the following conditions # # are met: # # # # 1. Redistributions of source code must retain the above copyright # # notice, this list of conditions and the following disclaimer. # # # # 2. Redistributions in binary form must reproduce the above # # copyright notice, this list of conditions and the following # # disclaimer in the documentation and/or other materials provided with # # the distribution. # # # # 3. The name of the author may not be used to endorse or promote # # products derived from this software without specific prior written # # permission. # # # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR # # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY # # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE # # GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER # # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN # # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # # ######################################################################## #makefile for building initex.ini include ../../config.i include ../../config.aconf ifeq (@HAVE_NOSCRIPTS@,1) RUNGLE := $(PROJECT_BINDIR)/bin/gle endif ifeq (@HAVE_NOSCRIPTS@,0) RUNGLE := $(PROJECT_BINDIR)/bin/rungle endif all: $(PROJECT_BINDIR)/inittex.ini $(PROJECT_BINDIR)/inittex.ini: $(PROJECT_BINDIR)/bin/gle init.tex -cp -p init.tex $(PROJECT_BINDIR)/ -$(RUNGLE) -mkinittex clean: -$(RM) $(PROJECT_BINDIR)/inittex.ini $(PROJECT_BINDIR)/init.tex init.ps gle-graphics-4.2.4c/src/TeX/Makefile.gcc0000664000000000000000000000576311405446017016430 0ustar rootroot######################################################################## # # # GLE - Graphics Layout Engine # # # # Modified BSD License # # # # Copyright (C) 2009 GLE. # # # # Redistribution and use in source and binary forms, with or without # # modification, are permitted provided that the following conditions # # are met: # # # # 1. Redistributions of source code must retain the above copyright # # notice, this list of conditions and the following disclaimer. # # # # 2. Redistributions in binary form must reproduce the above # # copyright notice, this list of conditions and the following # # disclaimer in the documentation and/or other materials provided with # # the distribution. # # # # 3. The name of the author may not be used to endorse or promote # # products derived from this software without specific prior written # # permission. # # # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR # # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY # # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE # # GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER # # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN # # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # # ######################################################################## #makefile for building initex.ini include ../../config.i include ../../config.gcc RUNGLE := $(PROJECT_BINDIR)/bin/rungle all: $(PROJECT_BINDIR)/inittex.ini $(PROJECT_BINDIR)/inittex.ini: $(PROJECT_BINDIR)/bin/gle -cp -p init.tex $(PROJECT_BINDIR)/ -$(RUNGLE) -mkinittex clean: -$(RM) $(PROJECT_BINDIR)/inittex.ini $(PROJECT_BINDIR)/init.tex init.ps gle-graphics-4.2.4c/src/TeX/makeinittex.cmd0000775000000000000000000000600311405446017017233 0ustar rootroot@echo off rem ######################################################################## rem # # rem # GLE - Graphics Layout Engine # rem # # rem # Modified BSD License # rem # # rem # Copyright (C) 2009 GLE. # rem # # rem # Redistribution and use in source and binary forms, with or without # rem # modification, are permitted provided that the following conditions # rem # are met: # rem # # rem # 1. Redistributions of source code must retain the above copyright # rem # notice, this list of conditions and the following disclaimer. # rem # # rem # 2. Redistributions in binary form must reproduce the above # rem # copyright notice, this list of conditions and the following # rem # disclaimer in the documentation and/or other materials provided with # rem # the distribution. # rem # # rem # 3. The name of the author may not be used to endorse or promote # rem # products derived from this software without specific prior written # rem # permission. # rem # # rem # THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR # rem # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # rem # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # rem # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY # rem # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # rem # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE # rem # GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # rem # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER # rem # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # rem # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN # rem # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # rem # # rem ######################################################################## rem Setting GLE_TOP in config.os2 didn't work (depends from the used shell? I don't know.). rem Use this CMD script to create inittex.ini. setlocal set gle_top=..\..\build %gle_top%\bin\gle.exe -mkinittex endlocal gle-graphics-4.2.4c/src/lib/matrix_3D.gle0000664000000000000000000003043411550305515016615 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 Jan Soubusta ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! This library is designed to plot 3D BAR graphs of square matrices ! ---------------------------------------------------------------------- ! Global constants with typical values: ! ---------------------------------------------------------------------- ! mmax (4 or 16) size of the matrix ! r (6 cm) the matrix is drawn to a 3D cube r.r.r ! alfa (25 deg) rotation of the cube in horizontal direction ! beta (30 deg) rotation of the cube in vertical direction ! ---------------------------------------------------------------------- ! x0,y0 position of the left bottom corner of the cube ! xgrp, ygrp position of the perspective point of infinity ! persp_scale (3) perspective scale ! ---------------------------------------------------------------------- ! z_axis_min z_axis_bottom_value ! z_axis_max z_axis_top_value ! z0 baseline for drawing 3D bars up or down ! ---------------------------------------------------------------------- ! ! Used colors: ! ---------------------------------------------------------------------- ! color_frame$, col_T$, col_L$, col_R$, col_BR$, col_BL$ ! ---------------------------------------------------------------------- ! ! Important subroutines ! ! sub project_3D2D s1 s2 s3 ! Takes one point of 3D box [s1,s2,s3] and calculates its position in ! the picture [xgr,ygr] ! ! sub draw_back_frame ! Draws three back lines of the cube. ! ! sub draw_middle_frame ! Draws six additional lines of the cube. ! ! sub draw_front_frame ! Draws three front lines of the cube. ! ! sub normalize_z zvalue ! Calculates normalized z coordinate in a range (0,1) ! (zvalue - bottom_z_value)/(top_z_value - bottom_z_value) ! ! sub draw_bar_z i j zvalue ! Draws one bar, (i,j) element of the matrix with a given value (zvalue). ! ! sub draw_matrix_row k l ! Draws one row of the matrix. The subroutine reads one row of the matrix ! and displays the elements in reverse order (the last one the first). ! This condition ensures correct resulting visualization. ! ! sub draw_z_ticks h1 h2 h3 ! Draws ticks with labels to z_axis: from h1, to h2, with a step h3. ! The format of z_axis labels can be set, e.g. ! formatz$ = "fix 2" ! ! sub draw_xy_ticks ! Draws ticks to x_axis and y_axis ! ! sub label_x i txt$ ! Draws label txt$ to i-th x_axis tick. ! ! sub label_y i txt$ ! Draws label txt$ to i-th y_axis tick. r = 6 color_frame$ = "black" col_T$ = "rgb(1,.8,.8)" col_L$ = "rgb(.8,.8,1)" col_R$ = "rgb(.8,1,.8)" col_BR$ = "rgb(.6,.6,1)" col_BL$ = "rgb(.6,1,.6)" dmin = z_axis_min dmax = z_axis_max sa = sin(torad(alfa)) ca = cos(torad(alfa)) sb = sin(torad(beta)) cb = cos(torad(beta)) ux = todeg(atan((ca/sa)*sb)) uy = -todeg(atan((sa/ca)*sb)) x0 = 0; y0 = 0 set join round just cc !----------------------------------------------------------- sub project_3D2D s1 s2 s3 xgr = x0+r*(s1*ca+s2*sa) local zp = s1*sa-s2*ca ygr = y0+r*(s3*cb-zp*sb) zp = s3*sb+zp*cb ! perspektiva if (zpdmax) then dmax=zvalue end if vys=(zvalue-z_axis_min)/(z_axis_max-z_axis_min) return vys end sub !----------------------------------------------------------- sub normalize_z0 zvalue !zvalue (0 , 1) local vys vys=(zvalue-z_axis_min)/(z_axis_max-z_axis_min) return vys end sub !----------------------------------------------------------- sub draw_bar_z i j zvalue z=normalize_z(zvalue) if (z>z0) then draw_bar_z_up i j z else if (z # # # # Modified BSD License # # # # Copyright (C) 2009 GLE. # # # # Redistribution and use in source and binary forms, with or without # # modification, are permitted provided that the following conditions # # are met: # # # # 1. Redistributions of source code must retain the above copyright # # notice, this list of conditions and the following disclaimer. # # # # 2. Redistributions in binary form must reproduce the above # # copyright notice, this list of conditions and the following # # disclaimer in the documentation and/or other materials provided with # # the distribution. # # # # 3. The name of the author may not be used to endorse or promote # # products derived from this software without specific prior written # # permission. # # # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR # # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY # # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE # # GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER # # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN # # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # # ######################################################################## include ../../config.os2 ALL = contour.gle ellipse.gle graphutil.gle polarplot.gle tree1.gle color.gle electronics.gle \ feyn.gle piesub.gle stm.gle ziptext.gle barstyles.gle shape.gle all: $(PROJECT_BINDIR)/lib/color.gle $(PROJECT_BINDIR)/lib/color.gle: $(ALL) -mkdir -p $(PROJECT_BINDIR)/lib -cp *.gle $(PROJECT_BINDIR)/lib/ gle-graphics-4.2.4c/src/lib/shape.gle0000664000000000000000000004303411660572450016071 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! Subroutines to draw various shapes shape_use_tex = 0 shape_color_2$ = clear shadow_color$ = "gray10" shape_dx = 0.1 shape_dy = 0.1 sub set_shape_use_tex use shape_use_tex = use end sub sub set_shape_color_2 color$ ! Set the secondary filling color for the shapes shape_color_2$ = color$ end sub sub set_shadow_color color$ ! Set the color of the shadow shadow_color$ = color$ end sub sub set_shape_dxdy dx dy ! Set the internal gap of a shape (for shapes containing text) shape_dx = dx shape_dy = dy end sub begin object rectangle width height round ! Draw a rectangle ! width, height: the width and height of the rectangle default width 1 default height 1 default round 0 box width height round round end object begin object rectangle_text width height text$ round ! Draw a rectangle ! width, height: the width and height of the rectangle default width 1 default height 1 default round 0 default text "X" box width height round round set just cc amove width/2 height/2 write text$ end object begin object rectangle_text_fit text$ round margin_x margin_y ! Draw a rectangle default text "X" default round 0 default margin_x 0.1 default margin_y 0.1 local tw = twidth(text$)+2*margin_x local th = theight(text$)+2*margin_y amove -tw/2 -th/2 box tw th round round set just cc amove 0 0 write text$ end object begin object triangle width height angle ! Draw a rectangle ! w, h: the width and height of the rectangle default width 1 default height 1 default angle 0 begin rotate angle amove width/2 height begin path stroke aline width 0 aline 0 0 closepath end path end rotate end object begin object hexagon width height ! Draw a named hexagon ! w, h: the width and height of the hexagon default width 1 default height 1 dx=width/2*cos(torad(30)) dy=height/2*sin(torad(30)) amove x y+height/4+dy; name "p1" begin path stroke aline x+dx y+height/4; name "p2" aline x+dx y-height/4; name "p3" aline x y-height/4-dy; name "p4" aline x-dx y-height/4; name "p5" aline x-dx y+height/4; name "p6" closepath end path end object begin object rhomb width height ! Draw a rhomb ! width: width of the rhomb ! height: height of the rhomb default width 1 default height 1 amove 0 +height/2 begin path stroke aline -width/2 0 aline 0 -height/2 aline +width/2 0 closepath end path end object begin object plus width height ! Draw a plus "+" at current position ! d: the size of the plus ! width: width of the plus ! height: height of the plus default width 1 default height 1 amove -width/2 0 aline width/2 0 amove 0 -height/2 aline 0 height/2 end object begin object cross width height ! Draw a cross "x" at current position ! width: width of the cross ! height: height of the cross default width 1 default height 1 amove -width/2 -height/2 aline width/2 height/2 amove -width/2 height/2 aline width/2 -height/2 end object begin object disk width height ellipse ! Draw a disk ! width: disk width ! height: disk height ! ellipse: height of top ellipse default width 1 default height 1 default ellipse 0.15 set join round amove 0 height/2-ellipse*height begin path stroke elliptical_narc width/2 ellipse*height 0 180 aline -width/2 -height/2+ellipse*height asetpos 0 -height/2+ellipse*height elliptical_arc width/2 ellipse*height 180 0 closepath end path amove 0 height/2-ellipse*height begin path stroke fill shape_color_2$ elliptical_arc width/2 ellipse*height 0 180 asetpos 0 height/2-ellipse*height elliptical_arc width/2 ellipse*height 180 0 closepath end path abound -width/2 height/2; abound +width/2 height/2 abound -width/2 -height/2; abound +width/2 -height/2 end object begin object disk_text width height ellipse text$ text_distance ! Draw a disk ! width: disk width ! height: disk height ! ellipse: height of top ellipse ! text$: text to write ! text_distance: offset for text (normally 0) default width 1 default height 1 default ellipse 0.15 default text "X" default text_distance 0 draw disk width height ellipse gsave set just cc rmove 0 text_distance-ellipse*height write text$ grestore end object sub rootnode xp yp width height name$ amove xp-width/2 yp-height box width height name name$ end sub sub drawnode width height name$ type if type = 0 then amove xpos()-width/2 ypos()-height box width height name name$ else amove xpos()-width/2 ypos()-height box width height name name$ nobox fill clear rmove width/2 height/2 if shape_color_2$ = "clear" then ellipse width/2 height/2 else ellipse width/2 height/2 fill shape_color_2$ end if end if end sub sub binchilds par$ c1$ c2$ width height ydel xdel l1 l2 amove pointx(par$+".bc")-xdel pointy(par$+".bc")-ydel drawnode width height c1$ l1 amove pointx(par$+".bc")+xdel pointy(par$+".bc")-ydel drawnode width height c2$ l2 join par$+".bc" - c1$+".tc" join par$+".bc" - c2$+".tc" end sub begin object l_tree width height width_factor height_factor ! Draw a small tree (with left subtree) ! width: width of the tree ! height: height of the tree ! width_factor: proportion of width = width of node ! height_factor: proportion of height = height of node default width 1 default height 1 default width_factor 0.3 default height_factor 0.2 local nodewd = width*width_factor local nodehi = height*height_factor local yoffs = (height-3*nodehi)/2 local xoffs = (width-nodewd)/3 rootnode -width/2+nodewd/2+2*xoffs height/2 nodewd nodehi "n1" binchilds "n1" "n2" "l3" nodewd nodehi yoffs xoffs 0 1 binchilds "n2" "l1" "l2" nodewd nodehi yoffs xoffs 1 1 end object begin object r_tree width height width_factor height_factor ! Draw a small tree (with right subtree) ! width: width of the tree ! height: height of the tree ! width_factor: proportion of width = width of node ! height_factor: proportion of height = height of node default width 1 default height 1 default width_factor 0.3 default height_factor 0.2 local nodewd = width*width_factor local nodehi = height*height_factor local yoffs = (height-3*nodehi)/2 local xoffs = (width-nodewd)/3 rootnode xpos()-width/2+nodewd/2+xoffs ypos()+height/2 nodewd nodehi "n1" binchilds "n1" "l1" "n2" nodewd nodehi yoffs xoffs 1 0 binchilds "n2" "l2" "l3" nodewd nodehi yoffs xoffs 1 1 end object begin object human_stick width height default width 0.5 default height 1 local sx = width/0.4 local sy = height/0.7 amove 0 0.6*sy; circle 0.1*sy amove 0 0.5*sy; aline 0.0 0.2*sy amove 0 0.2*sy; aline -0.2*sx 0 amove 0 0.2*sy; aline +0.2*sx 0 amove 0 0.5*sy; aline -0.2*sx 0.3*sy amove 0 0.5*sy; aline +0.2*sx 0.3*sy end object begin object shadow_box obj$ margin shadow begin box fill white add margin nobox name obj$+"-box" draw obj$+".tl" end box local xp = ptx(obj$+"-box.tl") local yp = pty(obj$+"-box.tl") local width = width(obj$+"-box") local height = height(obj$+"-box") begin path fill shadow_color$ amove xp+shadow yp-height aline xp+width yp-height aline xp+width yp-shadow aline xp+width+shadow yp-shadow aline xp+width+shadow yp-height-shadow aline xp+shadow yp-height-shadow closepath end path amove xp yp-height box width height end object begin object big_arrow_both_angle width height angle ! Draw an up/down arrow ! width: width of the arrow ! height: height of the arrow ! angle: rotation angle default width 1 default height 1 default angle 0 begin rotate angle amove 0 -height/2 begin path stroke aline width/2 -height/6 aline width/4 -height/6 aline width/4 +height/6 aline width/2 +height/6 aline 0 +height/2 aline -width/2 +height/6 aline -width/4 +height/6 aline -width/4 -height/6 aline -width/2 -height/6 closepath end path end rotate end object begin object big_arrow_angle width height angle ! Draw a left facing arrow ! width: width of the arrow ! height: height of the arrow ! angle: rotation angle default width 1 default height 1 default angle 0 begin rotate angle amove -width/2 0 begin path stroke aline 0 -height/2 aline 0 -height/4 aline width/2 -height/4 aline width/2 +height/4 aline 0 +height/4 aline 0 +height/2 closepath end path end rotate end object begin object big_arrow_ud width height ! Draw an up/down arrow ! width: width of the arrow ! height: height of the arrow default width 1 default height 1 big_arrow_both_angle width height 0 end object begin object big_arrow_lr width height ! Draw an left/right arrow ! width: width of the arrow ! height: height of the arrow default width 1 default height 1 big_arrow_both_angle height width 90 end object begin object big_arrow_left width height ! Draw a left facing arrow ! width: width of the arrow ! height: height of the arrow default width 1 default height 1 big_arrow_angle width height 0 end object begin object big_arrow_right width height ! Draw a right facing arrow ! width: width of the arrow ! height: height of the arrow default width 1 default height 1 big_arrow_angle width height 180 end object begin object big_arrow_up width height ! Draw a up facing arrow ! width: width of the arrow ! height: height of the arrow default width 1 default height 1 big_arrow_angle height width -90 end object begin object big_arrow_down width height ! Draw a down facing arrow ! width: width of the arrow ! height: height of the arrow default width 1 default height 1 big_arrow_angle height width 90 end object sub pmove d a amove xpos()+d*cos(torad(a)) ypos()+d*sin(torad(a)) end sub sub jointo n$ aline ptx(n$) pty(n$) end sub sub set_angle_just angle if angle = 0 then set just lc else if angle = 90 then set just bc else if angle = 180 then set just rc else if angle = -90 then set just tc else if (angle > 0) and (angle < 90) then set just bl else if (angle > 90) and (angle < 180) then set just br else if (angle > -90) and (angle < 0) then set just tl else set just tr end if end sub sub line_label x1 y1 x2 y2 str$ dist ! Draw a label at the center of an imaginary line from (x1,y1) to (x2,y2) ! (x1,y1): starting point of the line ! (x2,y2): ending point of the line ! str$: label to draw ! dist: distance between label and line if dist > 0 then set just bc else set just tc amove (x1+x2)/2 (y1+y2)/2 begin rotate xy2angle(x2-x1,y2-y1) rmove 0 dist write str$ end rotate end sub sub join_label a$ dir$ b$ label$ deltax deltay ldist ! Similar to the join command, but also labels the arrow default deltax 0 default deltay 0 default ldist 0.1 local x1 = ptx(a$) local x2 = ptx(b$) local y1 = pty(a$) local y2 = pty(b$) amove x1+deltax y1+deltay if dir$ = "->" then aline x2-deltax y2-deltay arrow end else if dir$ = "<-" then aline x2-deltax y2-deltay arrow start else if dir$ = "<->" then aline x2-deltax y2-deltay arrow both else aline x2-deltax y2-deltay line_label x1+deltax y1+deltay x2-deltax y2-deltay label$ ldist end sub sub curly_bracket x1 y1 x2 y2 r ! Draw a curly bracket from (x1,y1) to (x2,y2) with radius r ! To draw the curly bracket on the "other side" of the line, swap (x1,y1) and (x2,y2) local xm = (x1+x2)/2 local ym = (y1+y2)/2 width = sqrt((xm-x1)^2+(ym-y1)^2) amove xm ym set fill clear begin rotate xy2angle(x2-x1,y2-y1) rmove -width+r 0 begin path stroke arc r 90 180 rmove 0 r rline width-2*r 0 rsetpos 0 r arc r 270 0 rsetpos 2*r 0 arc r 180 270 rmove 0 -r rline width-2*r 0 rsetpos 0 -r narc r 90 0 end path end rotate abound x1 y1 abound x2 y2 end sub begin object curly_bracket_left width height default width 0.2 default height 1 curly_bracket 0 0 0 height width/2 end object begin object curly_bracket_right width height default width 0.2 default height 1 curly_bracket 0 height 0 0 width/2 end object begin object curly_bracket_up width height default width 1 default height 0.2 curly_bracket 0 0 width 0 height/2 end object begin object curly_bracket_down width height default width 1 default height 0.2 curly_bracket width 0 0 0 height/2 end object sub labeled_circle label$ radius lradius langle name$ lcolor$ default lradius 0.1 default langle 90 default name "n" default lcolor black gsave begin name name$ circle radius end name set color lcolor$ pmove radius+lradius langle set_angle_just langle tex label$ grestore end sub begin object house width height wallcolor$ doorcolor$ windowcolor$ roofcolor$ ! draw a house with a named door and window default width 1 default height 1 default wallcolor "cornsilk" default doorcolor "burlywood" default windowcolor "skyblue" default roofcolor "lightsalmon" set join round local hs = height/2.5 local ws = width/2.5 ! draw the roof begin path stroke fill roofcolor$ amove 0 1.625*hs aline 1.25*ws 2.5*hs aline 2.5*ws 1.625*hs closepath end path ! draw the brick wall amove 0 0 box 2.5*ws 1.625*hs fill wallcolor$ ! draw the door amove 1.5*ws 0 box 0.75*ws 1.375*hs fill doorcolor$ name door ! draw the window amove 0.25*ws 0.625*hs box ws 0.75*hs fill windowcolor$ name window end object begin object system_boundary width height default width 3 default height 2 local std_wd = 6.25284 local std_hi = 4.96995 local sx = width*0.1/std_wd local sy = height*0.1/std_hi begin path stroke amove 17.677669*sx 20.887802*sy bezier 20.809142*sx 17.756330*sy 24.023730*sx 20.471938*sy 27.678180*sx 20.180695*sy bezier 37.516189*sx 19.396651*sy 36.877716*sx 16.806370*sy 46.972093*sx 16.342115*sy bezier 61.516299*sx 15.666444*sy 69.616165*sx 24.396245*sy 77.781746*sx 34.625876*sy bezier 98.262589*sx 60.283750*sy 80.357611*sx 65.580420*sy 63.437580*sx 66.041620*sy bezier 50.360923*sx 66.400199*sy 29.565525*sx 65.378386*sy 24.243661*sx 59.879690*sy bezier 18.014374*sx 53.443419*sy 16.729828*sx 43.311986*sy 15.253303*sx 33.514708*sy bezier 14.161275*sx 26.268706*sy 14.443603*sx 24.121868*sy 17.677669*sx 20.887802*sy closepath end path end object gle-graphics-4.2.4c/src/lib/electronics.gle0000644000000000000000000004542711550305515017303 0ustar rootroot! Electronic Circuit diagrams with GLE ! Author: A. S. Budden ! Date: 17th August 2007 ! Version: 1.3 ! Copyright: Copyright (C) 2005 A. S. Budden ! Permission is hereby granted to use and distribute this code, ! with or without modifications, provided that this copyright ! notice is copied with it. Like anything else that's free, ! electronics.gle is provided *as is* and comes with no warranty ! of any kind, either expressed or implied. By using this ! plugin, you agree that in no event will the copyright ! holder be liable for any damages resulting from the use ! of this software. ! Documentation ** gle_electronics.pdf ** ! A simple function to draw a grid for reference sub drawgrid gridscale default gridscale 1 gsave set lwidth 0.005 set lstyle 2 for i = 0 to pageheight()/gridscale amove 0 i rline pagewidth()/gridscale 0 next i for i = 0 to pagewidth()/gridscale amove i 0 rline 0 pageheight()/gridscale next i grestore end sub ! Connection point sub connection circle 0.1 fill black end sub !=================================== ! Resistors !=================================== ! Resistor base device sub resistor gsave rline 1 0 rline 0 0.5 rline 2 0 rline 0 -1 rline -2 0 rline 0 0.5 rmove 2 0 rline 1 0 grestore end sub ! Resistor base device sub rresistor gsave rline 1 0 rline 0.125 0.5 rline 0.25 -1.0 rline 0.25 1.0 rline 0.25 -1.0 rline 0.25 1.0 rline 0.25 -1.0 rline 0.25 1.0 rline 0.25 -1.0 rline 0.125 0.5 rline 1 0 grestore end sub ! Horizontal resistor sub rresistor_h rlabel$ gsave @rresistor rmove 2 0.75 set just BC set hei 0.8 write rlabel$ grestore rmove 4 0 end sub ! Vertical resistor sub rresistor_v rlabel$ gsave begin rotate -90 @rresistor end rotate rmove 0.75 -2 set just LC set hei 0.8 write rlabel$ grestore rmove 0 -4 end sub ! Horizontal resistor sub resistor_h rlabel$ gsave @resistor rmove 2 0.75 set just BC set hei 0.8 write rlabel$ grestore rmove 4 0 end sub ! Vertical resistor sub resistor_v rlabel$ gsave begin rotate -90 @resistor end rotate rmove 0.75 -2 set just LC set hei 0.8 write rlabel$ grestore rmove 0 -4 end sub ! Horizontal potentiometer sub potentiometer_hb rlabel$ gsave @resistor rmove 2 -2 rline 0 1.5 arrow end rmove 0 1.5 set just BC set hei 0.8 write rlabel$ grestore rmove 4 0 end sub ! Vertical potentiometer sub potentiometer_vr rlabel$ gsave begin rotate -90 @resistor end rotate rmove 2 -2 rline -1.5 0 arrow end rmove -1.5 0 set just RC set hei 0.8 write rlabel$ grestore rmove 0 -4 end sub ! Horizontal variable resistor sub vresistor_h rlabel$ gsave @resistor rmove 1 -1 rline 2 2 arrow end rmove -1 0 set just BC set hei 0.8 write rlabel$ grestore rmove 4 0 end sub ! Vertical Variable resistor sub vresistor_v rlabel$ gsave begin rotate -90 @resistor end rotate rmove -1 -3 rline 2 2 arrow end rmove 0 -1 set just LC set hei 0.8 write rlabel$ grestore rmove 0 -4 end sub !=================================== ! Transistors !=================================== ! BJT Base sub bjt leg direction gsave rline 1 0 rmove 0 1 rline 0 -2 rmove 0 0.5 if leg = 1 then if direction = 1 then rline 1 -0.5 arrow end else rline 1 -0.5 arrow start end if rmove -1 1.5 rline 1 0.5 else rline 1 -0.5 rmove -1 1.5 if direction = 1 then rline 1 0.5 arrow end else rline 1 0.5 arrow start end if end if grestore end sub ! NPN BJT sub npn_bjt bjtlabel$ gsave bjt 1 1 rmove 2 0 set just LC set hei 0.8 write bjtlabel$ grestore end sub ! PNP BJT sub pnp_bjt bjtlabel$ gsave bjt 0 0 rmove 2 0 set just LC set hei 0.8 write bjtlabel$ grestore end sub ! Base MOSFET sub mosfet channel ! 0 is N channel, 1 is P channel gsave rline 1 0 rmove 0 1 rline 0 -2 rmove 0.25 0 rline 0 2/4 rmove 0 1/4 rline 0 2/4 rmove 0 1/4 rline 0 2/4 rmove 0 -1/4 rline 0.75 0 rline 0 1/4 rmove 0 -2 rline 0 1/4 rline -0.75 0 rmove 0.75 0 @connection rline 0 3/4 if channel = 0 then rline -0.75 0 arrow end else rline -0.75 0 arrow start end if grestore end sub ! N-Channel MOSFET sub n_mosfet mlabel$ gsave mosfet 0 rmove 2.5 0 set hei 0.8 set just LC write mlabel$ grestore end sub ! P-Channel MOSFET sub p_mosfet mlabel$ gsave mosfet 1 rmove 2.5 0 set hei 0.8 set just LC write mlabel$ grestore end sub ! IGBT sub igbt igbtlabel$ gsave rline 0.75 0 rline 0 0.75 rmove 0 -0.75 rline 0 -0.75 rmove 0.25 0.75 rline 0 1 rmove 0 -1 rline 0 -1 rmove 0 0.5 rline 1 -0.5 arrow end rmove -1 1.5 rline 1 0.5 rmove 0 -1 set hei 0.8 set just LC write igbtlabel$ grestore end sub !=================================== ! Inductors !=================================== ! Single coil sub coil gsave rmove 0.25 0 arc 0.25 0 180 grestore rmove 0.5 0 end sub ! Single double size coil sub large_coil dot gsave rmove 0.5 0 arc 0.5 0 180 if dot = 1 then circle 0.1 fill black end if grestore rmove 1 0 end sub ! Base inductor sub inductor core gsave rline 1 0 for i = 1 to 4 @coil next i rline 1 0 if core = 1 then rmove -1 0.5 rline -2 0 rmove 0 0.2 rline 2 0 end if grestore end sub sub large_inductor dot_position gsave if dot_position = 1 then ! Dot at start @large_coil 1 else @large_coil 0 end if @large_coil 0 @large_coil 0 if dot_position = 2 then ! Dot at end @large_coil 1 else @large_coil 0 end if grestore end sub ! Horizontal Inductor sub inductor_h core ilabel$ gsave @inductor core if core = 1 then rmove 2 1 else rmove 2 0.5 end if set hei 0.8 set just BC write ilabel$ grestore rmove 4 0 end sub ! Vertical Inductor sub inductor_v core ilabel$ gsave begin rotate -90 @inductor core end rotate if core = 1 then rmove 1 -2 else rmove 0.5 -2 end if set hei 0.8 set just LC write ilabel$ grestore rmove 0 -4 end sub ! Transformer Base sub xformer core type n1$ n2$ gsave ! Select type ! 0: no dots ! 1: no invert ! 2: invert if type = 0 then leftdot = 0 rightdot = 0 end if if type = 1 then leftdot = 1 rightdot = 2 end if if type = 2 then leftdot = 1 rightdot = 1 end if begin rotate -90 @large_inductor leftdot end rotate rmove 2 -4 begin rotate 90 @large_inductor rightdot end rotate if core = 1 then rmove -1.2 0 rline 0 4 rmove 0.4 0 rline 0 -4 end if grestore ! Number of turns gsave rmove 0.25 0.25 ! rmove 0.5 0.5 set just BC set hei 0.5 write n1$ rmove 1.5 0 write n2$ grestore end sub ! Transformer with a double secondary sub xformer_dblsecondary type location gsave ! Select type (as xformer) if type = 0 then leftdot = 0 rightdot = 0 end if if type = 1 then leftdot = 1 rightdot = 2 end if if type = 2 then leftdot = 1 rightdot = 1 end if begin rotate -90 @large_inductor leftdot end rotate ! If location = 0, then balance ! If location = 1, then draw above ! If location = 2, then draw below if location = 0 then rmove 2 -1 end if if location = 1 then rmove 2 2 end if if location = 2 then rmove 2 -4 end if ! We are now at the bottom of the top coil begin rotate 90 @large_inductor rightdot end rotate rmove 0 -6 begin rotate 90 @large_inductor rightdot end rotate rmove -1.2 0 rline 0 10 rmove 0.4 0 rline 0 -10 grestore end sub !=================================== ! Capacitors !=================================== ! Base capacitor sub capacitor gsave rline 1.75 0 rline 0 1 rmove 0 -2 rline 0 1 rmove 0.5 0 rline 0 1 rmove 0 -2 rline 0 1 rline 1.75 0 grestore end sub ! Base polarised capacitor sub p_capacitor polarity ! Polarity gives location of + side ! polarity = 0: on left (and therefore top) ! polarity = 1: on right gsave rline 1.5+1/8 0 rmove 0 -1 if polarity = 1 then box 0.25 2 fill black else box 0.25 2 end if rmove 0.5 0 if polarity = 1 then box 0.25 2 else box 0.25 2 fill black end if rmove 0.25 1 rline 1.5+1/8 0 grestore end sub ! Horizontal L Polarised Capacitor sub p_capacitor_hl clabel$ gsave @p_capacitor 0 rmove 1 0.75 rline 0.5 0 rmove -0.25 -0.25 rline 0 0.5 rmove -1.25 -1 rmove 2 1.25 set hei 0.8 set just BC write clabel$ grestore rmove 4 0 end sub ! Horizontal R Polarised Capacitor sub p_capacitor_hr clabel$ gsave @p_capacitor 1 rmove 2.75 0.75 rline 0.5 0 rmove -0.25 -0.25 rline 0 0.5 rmove -3 -1 rmove 2 1.25 set hei 0.8 set just BC write clabel$ grestore rmove 4 0 end sub ! Vertical Top Polarised Capacitor sub p_capacitor_vt clabel$ gsave begin rotate -90 @p_capacitor 0 end rotate rmove -1 -1.25 rline 0.5 0 rmove -0.25 -0.25 rline 0 0.5 rmove 0.75 1 rmove 1.25 -2 set hei 0.8 set just LC write clabel$ grestore rmove 0 -4 end sub ! Vertical Bottom Polarised Capacitor sub p_capacitor_vb clabel$ gsave begin rotate -90 @p_capacitor 1 end rotate rmove -1 -3 rline 0.5 0 rmove -0.25 -0.25 rline 0 0.5 rmove 0.75 2.75 rmove 1.25 -2 set hei 0.8 set just LC write clabel$ grestore rmove 0 -4 end sub ! Horizontal capacitor sub capacitor_h clabel$ gsave @capacitor rmove 2 1.25 set hei 0.8 set just BC write clabel$ grestore rmove 4 0 end sub ! Vertical capacitor sub capacitor_v clabel$ gsave begin rotate -90 @capacitor end rotate rmove 1.25 -2 set hei 0.8 set just LC write clabel$ grestore rmove 0 -4 end sub ! Horizontal varicap sub vcapacitor_h clabel$ gsave @capacitor rmove 1 -1 rline 2 2 arrow end rmove -3 -1 rmove 2 1.25 set hei 0.8 set just BC write clabel$ grestore rmove 4 0 end sub ! Vertical varicap sub vcapacitor_v clabel$ gsave begin rotate -90 @capacitor end rotate rmove -1 -3 rline 2 2 arrow end rmove -1 1 rmove 1.25 -2 set hei 0.8 set just LC write clabel$ grestore rmove 0 -4 end sub !=================================== ! Crystals !=================================== sub crystal crystalgap = 0.25 crystalboxw = 0.5 crystalleglength = (4-(crystalgap*2 + crystalboxw))/2 rline crystalleglength 0 rmove 0 1 rline 0 -2 rmove crystalgap 0 box crystalboxw 2 rmove crystalboxw+crystalgap 0 rline 0 2 rmove 0 -1 rline crystalleglength 0 end sub sub crystal_h label$ @crystal gsave rmove -2 1.2 set just BC set hei 0.8 write label$ grestore end sub sub crystal_v label$ gsave gsave begin rotate -90 @crystal end rotate grestore rmove 1.2 -2 set just LC set hei 0.8 write label$ grestore rmove 0 -4 end sub !=================================== ! Diodes !=================================== DIODE_NORMAL = 0 DIODE_SCHOTTKY = 1 DIODE_ZENER = 2 DIODE_THYRISTOR = 3 ! Base diode sub diode type default type DIODE_NORMAL gsave rline 1.5 0 rline 0 0.5 rline 1 -0.5 rline -1 -0.5 rline 0 0.5 rmove 1 -0.5 rline 0 1 rmove 0 -0.5 gsave if type = DIODE_SCHOTTKY then schottky_depth = 0.15 schottky_width = 0.25 gsave rmove 0 0.5 rline schottky_depth 0 rline 0 -schottky_width grestore rmove 0 -0.5 rline -schottky_depth 0 rline 0 schottky_width else if type = DIODE_ZENER then zener_depth = 0.15 gsave rmove 0 0.5 rline zener_depth 0 grestore rmove 0 -0.5 rline -zener_depth 0 else if type = DIODE_THYRISTOR then rline 0.5 -0.5 rline 0 -0.5 end if grestore rline 1.5 0 grestore end sub ! Horizontal right-facing Diode sub diode_hr dlabel$ type default type DIODE_NORMAL gsave @diode type rmove 2 1 set hei 0.8 set just BC write dlabel$ grestore rmove 4 0 end sub ! Horizontal left-facing Diode sub diode_hl dlabel$ type default type DIODE_NORMAL gsave rmove 4 0 begin rotate 180 @diode type end rotate rmove -2 1 set hei 0.8 set just BC write dlabel$ grestore rmove 4 0 end sub ! Vertical downward Diode sub diode_vd dlabel$ type default type DIODE_NORMAL gsave begin rotate -90 @diode type end rotate rmove 1 -2 set hei 0.8 set just LC write dlabel$ grestore rmove 0 -4 end sub ! Vertical upward Diode sub diode_vu dlabel$ type default type DIODE_NORMAL gsave rmove 0 -4 begin rotate 90 @diode type end rotate rmove 1 2 set hei 0.8 set just LC write dlabel$ grestore rmove 0 -4 end sub ! Vertical downward LED sub led_vd label$ @diode_vd label$ DIODE_NORMAL gsave arroffset = 0.15 set arrowsize 0.3 set arrowangle 20 ! rmove 0.65 1.85 rmove 0.6 1.75 rmove 0 arroffset rline 0.5 -0.5 arrow end rmove 0 -2*arroffset rline -0.5 0.5 arrow start grestore end sub sub bridge_rectifier blabel$ gsave d_offset = (3 - sqrt(8)) / 2 d_length = sqrt(8) @connection rline d_offset d_offset begin rotate 45 @diode DIODE_NORMAL end rotate rmove d_length d_length rline d_offset d_offset @connection rline d_offset -d_offset begin rotate -45 @diode DIODE_NORMAL end rotate rmove d_length -d_length rline d_offset -d_offset @connection rmove -6 0 rline d_offset -d_offset begin rotate -45 @diode DIODE_NORMAL end rotate rmove d_length -d_length rline d_offset -d_offset @connection rline d_offset d_offset begin rotate 45 @diode DIODE_NORMAL end rotate rmove d_length d_length rline d_offset d_offset rmove -3 0 set hei 0.8 set just CC write blabel$ grestore end sub ! Opto Isolator sub optocoupler optolabel$ @diode_vd "" DIODE_NORMAL gsave rmove 3 0 rline 0 1 rline -1 0.5 arrow start rmove 0 -0.5 rline 0 2 rmove 0 -0.5 rline 1 0.5 rline 0 1 set just LC rmove 0 -2 set hei 0.8 write optolabel$ optoarrowoffset = 0.25 optoarrowlength = 1 set arrowsize 0.4 set arrowangle 20 rmove -1.2 optoarrowoffset rline -optoarrowlength 0 arrow start rmove 0 -optoarrowoffset*2 rline optoarrowlength 0 arrow end grestore end sub ! Need to add triacs, thyristors etc !=================================== ! Op-amps !=================================== sub opamp supply ulabel$ gsave rline 1 0 rline 0 1 rline 3 -2 rline -3 -2 rline 0 1 rline -1 0 rmove 1 0 rline 0 2 ! Draw the "-" rmove 0.2 0 rline 0.5 0 ! Draw the "+" rmove -0.5 -2 rline 0.5 0 rmove -0.25 -0.25 rline 0 0.5 rmove -0.25 -0.25 rmove 2.8 1 rline 1 0 rmove -3 0 set just CC set hei 0.8 write ulabel$ if supply = 1 then rmove 2 0 rmove -2 4/3 rline 0 2/3 rmove 0 -4 rline 0 2/3 end if grestore end sub !=================================== ! Power supplies etc !=================================== ! Ground sub ground gsave rline 0 -1 rmove -0.75 0 rline 1.5 0 rmove -0.25 -0.25 rline -1 0 rmove 0.25 -0.25 rline 0.5 0 grestore end sub ! Power connection sub power label$ gsave rline 0 1 rline -0.25 -0.25 rmove 0.5 0 rline -0.25 0.25 rmove 0.1 0.1 set just BL write label$ grestore end sub sub supply_centre type if type = 1 then ! Supply with voltage rmove 0 -0.6 rline 0 1.2 arrow end rmove 0 -0.6 end if if type = 2 then ! +/- Supply rmove 0 0.5 rline 0.25 0 rmove -0.25 0 rline -0.25 0 rmove 0.25 0 rline 0 0.25 rmove 0 -0.25 rline 0 -0.25 rmove 0 0.25 rmove 0 -1 rmove -0.25 0 rline 0.5 0 rmove -0.25 0.5 end if if type = 3 then ! Sine source rmove -0.5 0 rbezier 0.25 0.5 0.25 0.5 0.5 0 rbezier 0.25 -0.5 0.25 -0.5 0.5 0 rmove -0.5 0 end if end sub ! Horizontal Power supply sub supply_h type ! Type gives central drawing ! 0: Nothing ! 1: Voltage Arrow ! 2: +/- ! 3: Crude Sinusoid gsave rline 1 0 rmove 1 0 circle 1 begin rotate -90 @supply_centre type end rotate rmove 1 0 rline 1 0 grestore rmove 4 0 end sub ! Vertical Power supply (probably more usual) sub supply_v type ! Type gives central drawing ! 0: Nothing ! 1: Voltage Arrow ! 2: +/- ! 3: Crude Sinusoid gsave rline 0 -1 rmove 0 -1 circle 1 @supply_centre type rmove 0 -1 rline 0 -1 grestore rmove 0 -4 end sub !=================================== ! Cells !=================================== ! Base cell sub cell gsave rline 1.8 0 rmove 0 -1 rline 0 2 rmove 0.4 -1 gsave set lwidth 0.2 rmove 0 -0.5 rline 0 1 rmove 0 -0.5 grestore ! set lwidth 0.02 rline 1.8 0 grestore end sub ! Horizontal cell (perhaps should have hr & hl?) sub cell_h elabel$ gsave @cell rmove 2 1.25 set just BC set hei 0.8 write elabel$ grestore rmove 4 0 end sub ! Vertical cell sub cell_v elabel$ gsave begin rotate -90 @cell end rotate rmove 1.25 -2 set just LC set hei 0.8 write elabel$ grestore rmove 0 -4 end sub !=================================== ! Logic Gates !=================================== ! Left side of gate (for and/nand) sub and_left_gate gsave rmove 0 1 rline 1 0 rmove 0 1 rline 0 -4 rmove 0 1 rline -1 0 grestore end sub ! Left side of gate (for not/buffer) sub not_left_gate gsave rline 1 0 rmove 0 -2 rline 0 4 grestore end sub ! Curved left gate (for OR) sub or_left_gate gsave ! Draw the connection lines linelength = 1.59 rmove 0 -1 rline linelength 0 rmove 0 2 rline -linelength 0 rmove 1 1 ! Draw the curve cx = xpos() cy = ypos() bezier cx+1 cy-1 cx+1 cy-3 cx cy-4 grestore end sub ! Double Curved left gate (for XOR) sub xor_left_gate gsave ! Draw the connection lines linelength = 1.09 rmove 0 -1 rline linelength 0 rmove 0 2 rline -linelength 0 rmove 1 1 ! Draw the curves for i = 0 to 0.5 step 0.5 rmove -i 0 cx = xpos() cy = ypos() bezier cx+1 cy-1 cx+1 cy-3 cx cy-4 amove cx cy next i grestore end sub ! Non-inverted output sub non_inverted_output gsave rmove 5 0 rline 1 0 grestore end sub ! Inverted output sub inverted_output gsave rmove 5 0 invrad = 0.25 rmove invrad 0 circle invrad rmove invrad 0 rline 1-2*invrad 0 grestore end sub ! Curved edges for AND/OR sub curved_edges gsave rmove 1 2 cx = xpos() cy = ypos() ! Draw the top curve bezier cx+3 cy cx+4 cy-1 cx+4 cy-2 ! Draw the bottom curve cx = xpos() cy = ypos() bezier cx cy-1 cx-1 cy-2 cx-4 cy-2 grestore end sub ! Straight edges for Buffer/Not sub straight_edges gsave rmove 1 2 rline 4 -2 rline -4 -2 grestore end sub ! XOR Gate sub xor gsave rmove 0 -1 @xor_left_gate @curved_edges @non_inverted_output grestore end sub ! XNOR Gate sub xnor gsave rmove 0 -1 @xor_left_gate @curved_edges @inverted_output grestore end sub ! OR Gate sub or gsave rmove 0 -1 @or_left_gate @curved_edges @non_inverted_output grestore end sub ! NOR Gate sub nor gsave rmove 0 -1 @or_left_gate @curved_edges @inverted_output grestore end sub ! AND Gate sub and gsave rmove 0 -1 @and_left_gate @curved_edges @non_inverted_output grestore end sub ! NAND Gate sub nand gsave rmove 0 -1 @and_left_gate @curved_edges @inverted_output grestore end sub ! NOT Gate sub not gsave @not_left_gate @straight_edges @inverted_output grestore rmove 6 0 end sub ! BUFFER sub buffer gsave @not_left_gate @straight_edges @non_inverted_output grestore rmove 6 0 end sub ! Schmitt Trigger symbol sub schmitt gsave sw = 0.5 sh = 1 h = 0.5 rmove -(sw/2+h) sh/2 rline h+sw 0 rline 0 -sh rmove h 0 rline -(h+sw) 0 rline 0 sh grestore end sub ! NAND Schmitt Trigger sub nand_schmitt gsave rmove 2.5 -1 @schmitt grestore @nand end sub ! Inverter Schmitt Trigger sub not_schmitt gsave rmove 2.25 0 @schmitt grestore @not end sub gle-graphics-4.2.4c/src/lib/ellipse.gle0000664000000000000000000001070311550305515016415 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! Subroutines for drawing ellipses around text and other objects include "shape.gle" ellipse_c = 0.25 ellipse_wd = -1 ellipse_hi = -1 sub set_ellipse_c c ellipse_c = c end sub sub set_ellipse_size wd hi ellipse_wd = wd ellipse_hi = hi end sub sub set_ellipse_size_str txt$ ellipse_wd = twidth(txt$)+2*shape_dx ellipse_hi = theight(txt$)+2*shape_dy end sub sub ellipsebox x y w h name$ local a = 0 local a1 = h/(2*ellipse_c) if a < a1 then a = a1 local a2 = w/2 if a < a2 then a = a2 local a3 = sqrt(w^2+h^2/ellipse_c^2)/2 if a < a3 then a = a3 local a4 = sqrt(h^2+w^2*ellipse_c^2)/(4*ellipse_c) if a < a4 then a=a4 amove x+w/2-a y+h/2-ellipse_c*a box 2*a 2*ellipse_c*a name name$ nobox fill clear amove x+w/2 y+h/2 ellipse a ellipse_c*a end sub sub ellipse_obj obj$ name$ local xp = pointx(obj$+".bl")-shape_dx local yp = pointy(obj$+".bl")-shape_dy local w = width(obj$)+2*shape_dx local h = height(obj$)+2*shape_dy ellipsebox xp yp w h name$ end sub sub ellipse_text x y txt$ name$ local tw = twidth(txt$)+2*shape_dx local th = theight(txt$)+2*shape_dy if ellipse_wd <> -1 then tw = ellipse_wd if ellipse_hi <> -1 then th = ellipse_hi ellipsebox x-tw/2 y-th/2 tw th name$ amove x y set just cc write txt$ end sub sub ellipse_tex x y txt$ name$ local txt2$ = "\tex{"+txt$+"}" ellipse_text x y txt2$ name$ end sub sub def_ellipse_text txt$ name$ local tw = twidth(txt$)+2*shape_dx local th = theight(txt$)+2*shape_dy if ellipse_wd <> -1 then tw = ellipse_wd if ellipse_hi <> -1 then th = ellipse_hi begin object name$ ellipsebox -tw/2 -th/2 tw th "x" set just cc write txt$ end object end sub sub def_ellipse_tex txt$ name$ local txt2$ = "\tex{"+txt$+"}" def_ellipse_text txt2$ name$ end sub gle-graphics-4.2.4c/src/lib/feyn.gle0000644000000000000000000021703211652073270015726 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) Andrey Grozin, 1993-1995. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! Drawing Feynman diagrams, version 1.0 ! Copyright (c) Andrey Grozin, 1993-1995 ! variable names beginning with F are reserved for internal use ! straight line | arc ! ---------------------------- ! fr - -1 | radius ! fx,fy - initial point | center ! fa - slope | slope: center->initial ! fl - length | angle length ! fc - | +1 - counterclockwise ! fsx,fsy - | starting point for feyn2 functions ! fxx,fyy - | intermediate points for feyn2 functions ! ffx,ffy - final point ! fx1,fy1,... - temporary coordinates ! f1,f2,... - temporary variables ! fi,fm,fd - for loops ! flastl$ - type of last drawn line pi = 3.14159265358979323846264338328 ! sin table fs1 = 0.156434465040230869010105319467 fs2 = 0.309016994374947424102293417183 fs3 = 0.453990499739546791560408366358 fs4 = 0.587785252292473129168705954639 fs5 = 0.707106781186547524400844362105 fs6 = 0.809016994374947424102293417183 fs7 = 0.891006524188367862359709571414 fs8 = 0.951056516295153572116439333379 fs9 = 0.987688340595137726190040247693 fe = 0.01 ! lines shorter than FE cm are not drawn set lwidth 0.03 ! line width set cap round ! end of line set join round ! join lines set hei 0.5 ! character height set font texcmr ! TeX roman set just cc ! centered text \chardef{-}{\char{$7b}}\def\mi{\setfont{texmi}} ! simple debugging tool DebugX = 1 DebugY = 1 DebugD = 1 Debug = 0 sub fdebug l t$ v if Debug>l-0.5 then gsave amove DebugX DebugY write t$+num$(v) grestore DebugY = DebugY+DebugD end if end sub ! internal - setup for straight line sub feyn x y ffx = x ffy = y fr = -1 fx = xpos() fy = ypos() x = x-fx y = y-fy fl = sqrt(sqr(x)+sqr(y)) if fl0 then fa = 180*atn(y/x)/pi else fa = 180*(1+atn(y/x)/pi) end if else if y>0 then fa = 180*(0.5-atn(x/y)/pi) else fa = 180*(1.5-atn(x/y)/pi) end if end if end if end sub ! internal - setup for arc sub feyn2 xx yy x y ffx = x ffy = y fx1 = xpos()-xx fy1 = ypos()-yy fx2 = x-xx fy2 = y-yy fr = fx1*fy2-fx2*fy1 fxx = xx fyy = yy fsx = xpos() fsy = ypos() if abs(fr)0 then fa = 180*atn(fy1/fx1)/pi else fa = 180*(1+atn(fy1/fx1)/pi) end if else if fy1>0 then fa = 180*(0.5-atn(fx1/fy1)/pi) else fa = 180*(1.5-atn(fx1/fy1)/pi) end if end if ! finding angular length fx2 = x-fx fy2 = y-fy f1 = (fx1*fy2-fx2*fy1)/sqr(fr)*fc ! sin f2 = (fx1*fx2+fy1*fy2)/sqr(fr) ! cos if f1<0 then ! pi .. 2*pi if abs(f1)>abs(f2) then ! 5*pi/4 .. 7*pi/4 if f2<0 then ! 5*pi/4 .. 3*pi/2 fl = 180*(1.5-atn(f2/f1)/pi) else ! 3*pi/2 .. 7*pi/4 fl = 180*(1.5+atn(-f2/f1)/pi) end if else ! pi .. 5*pi/4 or 7*pi/4 .. 2*pi if f2<0 then ! pi .. 5*pi/4 fl = 180*(1+atn(f1/f2)/pi) else ! 7*pi/4 .. 2*pi fl = 180*(2-atn(-f1/f2)/pi) end if end if else ! 0 .. pi if abs(f1)>abs(f2) then ! pi/4 .. 3*pi/4 if f2<0 then ! pi/2 .. 3*pi/4 fl = 180*(0.5+atn(-f2/f1)/pi) else ! pi/4 .. pi/2 fl = 180*(0.5-atn(f2/f1)/pi) end if else ! 0 .. pi/4 or 3*pi/4 .. pi if f2<0 then ! 3*pi/4 .. pi fl = 180*(1-atn(-f1/f2)/pi) else ! 0 .. pi/4 fl = 180*atn(f1/f2)/pi end if end if end if end if end sub ! Fermion line from the current point to x,y sub Fermion x y flastl$ = "Fermion" @feyn x y if fl>0 then begin origin begin rotate fa aline fl 0 end rotate end origin amove ffx ffy end if end sub ! Fermion line from the current point via xx,yy to x,y sub Fermion2 xx yy x y flastl$ = "Fermion2" @feyn2 xx yy x y if fr<0 then @Fermion x y else amove fx fy begin origin if fc>0 then arc fr fa fa+fl else arc fr fa-fl fa end if end origin amove ffx ffy end if end sub DoubleA = 0.05 ! half distance between lines DoubleI = 0 ! correction due to initial slant DoubleF = 0 ! correction due to final slant ! Double line from the current point to x,y sub Double x y flastl$ = "Double" @feyn x y if fl>0 then begin origin begin rotate fa DoubleI = DoubleI*DoubleA DoubleF = DoubleF*DoubleA amove DoubleI DoubleA aline fl+DoubleF DoubleA amove -DoubleI -DoubleA aline fl-DoubleF -DoubleA end rotate end origin amove ffx ffy end if DoubleI = 0 DoubleF = 0 end sub ! Double line from the current point via xx,yy to x,y sub Double2 xx yy x y flastl$ = "Double2" @feyn2 xx yy x y if fr0 then arc fr+DoubleA fa fa+fl arc fr-DoubleA fa fa+fl else arc fr+DoubleA fa-fl fa arc fr-DoubleA fa-fl fa end if end origin amove ffx ffy end if end sub DashL = 0.3 ! period DashF = 0.5 ! fraction of the period that is filled ! Higgs (dashed) line from the current point to x,y sub Dash x y flastl$ = "Dash" @feyn x y if fl>0 then fn = fix(fl/DashL+1.5-DashF) if fn<1 then fn = 1 end if fd = fl/(fn-1+DashF) fm = fl-0.5*DashF*fd f1 = fd*DashF begin origin begin rotate fa for fi = 0 to fm step fd begin translate fi 0 amove 0 0 aline f1 0 end translate next fi end rotate end origin amove ffx ffy end if end sub ! Higgs (dashed) line from the current point via xx,yy to x,y sub Dash2 xx yy x y flastl$ = "Dash2" @feyn2 xx yy x y if fr<0 then @Dash x y else fn = fix(fr*fl*pi/180/DashL+1.5-DashF) if fn<1 then fn = 1 end if fd = fl/(fn-1+DashF) fm = fl-0.5*DashF*fd f1 = fd*DashF amove fx fy begin origin if fc>0 then for fi = 0 to fm step fd arc fr fa+fi fa+fi+f1 next fi else for fi = 0 to fm step fd narc fr fa-fi fa-fi-f1 next fi end if end origin amove ffx ffy end if end sub PhotonL = 0.1 ! half-wavelength PhotonA = 0.05 ! amplitude PhotonN = 0 ! correction to the number of half-waves ! Vector boson (zigzag) line from the current point to x,y sub Zigzag x y flastl$ = "Zigzag" @feyn x y if fl>0 then fn = fix(fl/PhotonL+0.5+PhotonN) if fn<1 then fn = 1 end if PhotonN = 0 fd = fl/fn fm = fl-0.5*fd f1 = PhotonA begin origin begin rotate fa for fi = 0 to fm step fd begin translate fi 0 amove 0 0 aline 0.5*fd f1 aline fd 0 end translate f1 = -f1 next fi end rotate end origin amove ffx ffy end if end sub ! Vector boson (zigzag) line from the current point via xx,yy to x,y sub Zigzag2 xx yy x y flastl$ = "ZigZag2" @feyn2 xx yy x y if fr0 then f2 = (1+f1)*f2*f3*(1-(f1-f4)/(f2^2+f1^2*f3^2)) else f2 = (1+f1)*f2*f3*(1-(f1+f4)/(f2^2+f1^2*f3^2)) end if f2 = 180/pi*atn(f2/sqrt(1-f2^2)) if abs(fn-2*fix(0.5*fn))>0.1 then if abs(fn-1)<0.1 then fd = fl f2 = 0.5*fl else for fi=1 to 10 fd = (fl-2*f2)/(fn-1) f2 = sin(pi*fd/360) f3 = cos(pi*fd/360) f4 = sqrt(f2^4+f1^2*f3^2*(1+2*f2^2)-f1^4*f2^2*f3^2) if f1>0 then f2 = (1+f1)*f2*f3*(1-(f1-f4)/(f2^2+f1^2*f3^2)) else f2 = (1+f1)*f2*f3*(1-(f1+f4)/(f2^2+f1^2*f3^2)) end if f2 = 180/pi*atn(f2/sqrt(1-f2^2)) next fi end if end if fm = f2+(2*fix(0.5*(fn+1)+0.1)-3)*fd fx1 = fr*(1+f1)*cos(pi*fd/180) fy1 = fr*(1+f1)*sin(pi*fd/180) fx2 = fr*(1-f1)*cos(pi*fd/90) fy2 = fr*(1-f1)*sin(pi*fd/90) fx3 = fr*(1-f1)*cos(pi*f2/180) fy3 = fr*(1-f1)*sin(pi*f2/180) amove fx fy begin origin if fc>0 then begin rotate fa amove fr 0 aline fx3 fy3 end rotate if fn>2.5 then for fi = f2 to fm step 2*fd begin rotate fa+fi amove fr*(1-f1) 0 aline fx1 fy1 aline fx2 fy2 end rotate next fi end if f2 = fl-fm-fd if abs(fn-2*fix(0.5*fn))<0.1 then begin rotate fa+fm+fd amove fr*(1-f1) 0 aline fx1 fy1 end rotate f2 = f2-fd f1 = -f1 end if fx3 = fr*(1-f1)*cos(pi*f2/180) fy3 = fr*(1-f1)*sin(pi*f2/180) begin rotate fa+fl amove fx3 -fy3 aline fr 0 end rotate else begin rotate fa amove fr 0 aline fx3 -fy3 end rotate if fn>2.5 then for fi = f2 to fm step 2*fd begin rotate fa-fi amove fr*(1-f1) 0 aline fx1 -fy1 aline fx2 -fy2 end rotate next fi end if f2 = fl-fm-fd if abs(fn-2*fix(0.5*fn))<0.1 then begin rotate fa-fm-fd amove fr*(1-f1) 0 aline fx1 -fy1 end rotate f2 = f2-fd f1 = -f1 end if fx3 = fr*(1-f1)*cos(pi*f2/180) fy3 = fr*(1-f1)*sin(pi*f2/180) begin rotate fa-fl amove fx3 fy3 aline fr 0 end rotate end if end origin amove ffx ffy end if end sub ! Photon line from the current point to x,y sub Photon x y flastl$ = "Photon" @feyn x y if fl>0 then fn = fix(fl/PhotonL+0.5+PhotonN) if fn<1 then fn = 1 end if PhotonN = 0 fd = fl/fn fm = fl-0.5*fd f1 = PhotonA begin origin begin rotate fa for fi = 0 to fm step fd begin translate fi 0 amove 0 0 aline 0.05*fd fs1*f1 aline 0.1*fd fs2*f1 aline 0.15*fd fs3*f1 aline 0.2*fd fs4*f1 aline 0.25*fd fs5*f1 aline 0.3*fd fs6*f1 aline 0.35*fd fs7*f1 aline 0.4*fd fs8*f1 aline 0.45*fd fs9*f1 aline 0.5*fd f1 aline 0.55*fd fs9*f1 aline 0.6*fd fs8*f1 aline 0.65*fd fs7*f1 aline 0.7*fd fs6*f1 aline 0.75*fd fs5*f1 aline 0.8*fd fs4*f1 aline 0.85*fd fs3*f1 aline 0.9*fd fs2*f1 aline 0.95*fd fs1*f1 aline fd 0 end translate f1 = -f1 next fi end rotate end origin amove ffx ffy end if end sub ! Photon line from the current point via xx,yy to x,y sub Photon2 xx yy x y flastl$ = "Photon2" @feyn2 xx yy x y if fr0 then f2 = (1+f1)*f2*f3*(1-(f1-f4)/(f2^2+f1^2*f3^2)) else f2 = (1+f1)*f2*f3*(1-(f1+f4)/(f2^2+f1^2*f3^2)) end if f2 = 180/pi*atn(f2/sqrt(1-f2^2)) if abs(fn-2*fix(0.5*fn))>0.1 then if abs(fn-1)<0.1 then fd = fl f2 = 0.5*fl else for fi=1 to 10 fd = (fl-2*f2)/(fn-1) f2 = sin(pi*fd/360) f3 = cos(pi*fd/360) f4 = sqrt(f2^4+f1^2*f3^2*(1+2*f2^2)-f1^4*f2^2*f3^2) if f1>0 then f2 = (1+f1)*f2*f3*(1-(f1-f4)/(f2^2+f1^2*f3^2)) else f2 = (1+f1)*f2*f3*(1-(f1+f4)/(f2^2+f1^2*f3^2)) end if f2 = 180/pi*atn(f2/sqrt(1-f2^2)) next fi end if end if fm = f2+(2*fix(0.5*(fn+1)+0.1)-3)*fd amove fx fy begin origin if fc>0 then begin rotate fa amove fr 0 fx1 = fr*(1-f1*fs1)*cos(1*pi*f2/1800) fy1 = fr*(1-f1*fs1)*sin(1*pi*f2/1800) aline fx1 fy1 fx1 = fr*(1-f1*fs2)*cos(2*pi*f2/1800) fy1 = fr*(1-f1*fs2)*sin(2*pi*f2/1800) aline fx1 fy1 fx1 = fr*(1-f1*fs3)*cos(3*pi*f2/1800) fy1 = fr*(1-f1*fs3)*sin(3*pi*f2/1800) aline fx1 fy1 fx1 = fr*(1-f1*fs4)*cos(4*pi*f2/1800) fy1 = fr*(1-f1*fs4)*sin(4*pi*f2/1800) aline fx1 fy1 fx1 = fr*(1-f1*fs5)*cos(5*pi*f2/1800) fy1 = fr*(1-f1*fs5)*sin(5*pi*f2/1800) aline fx1 fy1 fx1 = fr*(1-f1*fs6)*cos(6*pi*f2/1800) fy1 = fr*(1-f1*fs6)*sin(6*pi*f2/1800) aline fx1 fy1 fx1 = fr*(1-f1*fs7)*cos(7*pi*f2/1800) fy1 = fr*(1-f1*fs7)*sin(7*pi*f2/1800) aline fx1 fy1 fx1 = fr*(1-f1*fs8)*cos(8*pi*f2/1800) fy1 = fr*(1-f1*fs8)*sin(8*pi*f2/1800) aline fx1 fy1 fx1 = fr*(1-f1*fs9)*cos(9*pi*f2/1800) fy1 = fr*(1-f1*fs9)*sin(9*pi*f2/1800) aline fx1 fy1 fx1 = fr*(1-f1)*cos(pi*f2/180) fy1 = fr*(1-f1)*sin(pi*f2/180) aline fx1 fy1 end rotate if fn>2.5 then for fi = f2 to fm step 2*fd begin rotate fa+fi amove fr*(1-f1) 0 fx1 = fr*(1-f1*fs9)*cos(1*pi*fd/3600) fy1 = fr*(1-f1*fs9)*sin(1*pi*fd/3600) aline fx1 fy1 fx1 = fr*(1-f1*fs8)*cos(2*pi*fd/3600) fy1 = fr*(1-f1*fs8)*sin(2*pi*fd/3600) aline fx1 fy1 fx1 = fr*(1-f1*fs7)*cos(3*pi*fd/3600) fy1 = fr*(1-f1*fs7)*sin(3*pi*fd/3600) aline fx1 fy1 fx1 = fr*(1-f1*fs6)*cos(4*pi*fd/3600) fy1 = fr*(1-f1*fs6)*sin(4*pi*fd/3600) aline fx1 fy1 fx1 = fr*(1-f1*fs5)*cos(5*pi*fd/3600) fy1 = fr*(1-f1*fs5)*sin(5*pi*fd/3600) aline fx1 fy1 fx1 = fr*(1-f1*fs4)*cos(6*pi*fd/3600) fy1 = fr*(1-f1*fs4)*sin(6*pi*fd/3600) aline fx1 fy1 fx1 = fr*(1-f1*fs3)*cos(7*pi*fd/3600) fy1 = fr*(1-f1*fs3)*sin(7*pi*fd/3600) aline fx1 fy1 fx1 = fr*(1-f1*fs2)*cos(8*pi*fd/3600) fy1 = fr*(1-f1*fs2)*sin(8*pi*fd/3600) aline fx1 fy1 fx1 = fr*(1-f1*fs1)*cos(9*pi*fd/3600) fy1 = fr*(1-f1*fs1)*sin(9*pi*fd/3600) aline fx1 fy1 fx1 = fr*cos(pi*fd/360) fy1 = fr*sin(pi*fd/360) aline fx1 fy1 fx1 = fr*(1+f1*fs1)*cos(11*pi*fd/3600) fy1 = fr*(1+f1*fs1)*sin(11*pi*fd/3600) aline fx1 fy1 fx1 = fr*(1+f1*fs2)*cos(12*pi*fd/3600) fy1 = fr*(1+f1*fs2)*sin(12*pi*fd/3600) aline fx1 fy1 fx1 = fr*(1+f1*fs3)*cos(13*pi*fd/3600) fy1 = fr*(1+f1*fs3)*sin(13*pi*fd/3600) aline fx1 fy1 fx1 = fr*(1+f1*fs4)*cos(14*pi*fd/3600) fy1 = fr*(1+f1*fs4)*sin(14*pi*fd/3600) aline fx1 fy1 fx1 = fr*(1+f1*fs5)*cos(15*pi*fd/3600) fy1 = fr*(1+f1*fs5)*sin(15*pi*fd/3600) aline fx1 fy1 fx1 = fr*(1+f1*fs6)*cos(16*pi*fd/3600) fy1 = fr*(1+f1*fs6)*sin(16*pi*fd/3600) aline fx1 fy1 fx1 = fr*(1+f1*fs7)*cos(17*pi*fd/3600) fy1 = fr*(1+f1*fs7)*sin(17*pi*fd/3600) aline fx1 fy1 fx1 = fr*(1+f1*fs8)*cos(18*pi*fd/3600) fy1 = fr*(1+f1*fs8)*sin(18*pi*fd/3600) aline fx1 fy1 fx1 = fr*(1+f1*fs9)*cos(19*pi*fd/3600) fy1 = fr*(1+f1*fs9)*sin(19*pi*fd/3600) aline fx1 fy1 fx1 = fr*(1+f1)*cos(pi*fd/180) fy1 = fr*(1+f1)*sin(pi*fd/180) aline fx1 fy1 fx1 = fr*(1+f1*fs9)*cos(21*pi*fd/3600) fy1 = fr*(1+f1*fs9)*sin(21*pi*fd/3600) aline fx1 fy1 fx1 = fr*(1+f1*fs8)*cos(22*pi*fd/3600) fy1 = fr*(1+f1*fs8)*sin(22*pi*fd/3600) aline fx1 fy1 fx1 = fr*(1+f1*fs7)*cos(23*pi*fd/3600) fy1 = fr*(1+f1*fs7)*sin(23*pi*fd/3600) aline fx1 fy1 fx1 = fr*(1+f1*fs6)*cos(24*pi*fd/3600) fy1 = fr*(1+f1*fs6)*sin(24*pi*fd/3600) aline fx1 fy1 fx1 = fr*(1+f1*fs5)*cos(25*pi*fd/3600) fy1 = fr*(1+f1*fs5)*sin(25*pi*fd/3600) aline fx1 fy1 fx1 = fr*(1+f1*fs4)*cos(26*pi*fd/3600) fy1 = fr*(1+f1*fs4)*sin(26*pi*fd/3600) aline fx1 fy1 fx1 = fr*(1+f1*fs3)*cos(27*pi*fd/3600) fy1 = fr*(1+f1*fs3)*sin(27*pi*fd/3600) aline fx1 fy1 fx1 = fr*(1+f1*fs2)*cos(28*pi*fd/3600) fy1 = fr*(1+f1*fs2)*sin(28*pi*fd/3600) aline fx1 fy1 fx1 = fr*(1+f1*fs1)*cos(29*pi*fd/3600) fy1 = fr*(1+f1*fs1)*sin(29*pi*fd/3600) aline fx1 fy1 fx1 = fr*cos(pi*fd/120) fy1 = fr*sin(pi*fd/120) aline fx1 fy1 fx1 = fr*(1-f1*fs1)*cos(31*pi*fd/3600) fy1 = fr*(1-f1*fs1)*sin(31*pi*fd/3600) aline fx1 fy1 fx1 = fr*(1-f1*fs2)*cos(32*pi*fd/3600) fy1 = fr*(1-f1*fs2)*sin(32*pi*fd/3600) aline fx1 fy1 fx1 = fr*(1-f1*fs3)*cos(33*pi*fd/3600) fy1 = fr*(1-f1*fs3)*sin(33*pi*fd/3600) aline fx1 fy1 fx1 = fr*(1-f1*fs4)*cos(34*pi*fd/3600) fy1 = fr*(1-f1*fs4)*sin(34*pi*fd/3600) aline fx1 fy1 fx1 = fr*(1-f1*fs5)*cos(35*pi*fd/3600) fy1 = fr*(1-f1*fs5)*sin(35*pi*fd/3600) aline fx1 fy1 fx1 = fr*(1-f1*fs6)*cos(36*pi*fd/3600) fy1 = fr*(1-f1*fs6)*sin(36*pi*fd/3600) aline fx1 fy1 fx1 = fr*(1-f1*fs7)*cos(37*pi*fd/3600) fy1 = fr*(1-f1*fs7)*sin(37*pi*fd/3600) aline fx1 fy1 fx1 = fr*(1-f1*fs8)*cos(38*pi*fd/3600) fy1 = fr*(1-f1*fs8)*sin(38*pi*fd/3600) aline fx1 fy1 fx1 = fr*(1-f1*fs9)*cos(39*pi*fd/3600) fy1 = fr*(1-f1*fs9)*sin(39*pi*fd/3600) aline fx1 fy1 fx1 = fr*(1-f1)*cos(pi*fd/90) fy1 = fr*(1-f1)*sin(pi*fd/90) aline fx1 fy1 end rotate next fi end if f2 = fl-fm-fd if abs(fn-2*fix(0.5*fn))<0.1 then begin rotate fa+fm+fd amove fr*(1-f1) 0 fx1 = fr*(1-f1*fs9)*cos(1*pi*fd/3600) fy1 = fr*(1-f1*fs9)*sin(1*pi*fd/3600) aline fx1 fy1 fx1 = fr*(1-f1*fs8)*cos(2*pi*fd/3600) fy1 = fr*(1-f1*fs8)*sin(2*pi*fd/3600) aline fx1 fy1 fx1 = fr*(1-f1*fs7)*cos(3*pi*fd/3600) fy1 = fr*(1-f1*fs7)*sin(3*pi*fd/3600) aline fx1 fy1 fx1 = fr*(1-f1*fs6)*cos(4*pi*fd/3600) fy1 = fr*(1-f1*fs6)*sin(4*pi*fd/3600) aline fx1 fy1 fx1 = fr*(1-f1*fs5)*cos(5*pi*fd/3600) fy1 = fr*(1-f1*fs5)*sin(5*pi*fd/3600) aline fx1 fy1 fx1 = fr*(1-f1*fs4)*cos(6*pi*fd/3600) fy1 = fr*(1-f1*fs4)*sin(6*pi*fd/3600) aline fx1 fy1 fx1 = fr*(1-f1*fs3)*cos(7*pi*fd/3600) fy1 = fr*(1-f1*fs3)*sin(7*pi*fd/3600) aline fx1 fy1 fx1 = fr*(1-f1*fs2)*cos(8*pi*fd/3600) fy1 = fr*(1-f1*fs2)*sin(8*pi*fd/3600) aline fx1 fy1 fx1 = fr*(1-f1*fs1)*cos(9*pi*fd/3600) fy1 = fr*(1-f1*fs1)*sin(9*pi*fd/3600) aline fx1 fy1 fx1 = fr*cos(pi*fd/360) fy1 = fr*sin(pi*fd/360) aline fx1 fy1 fx1 = fr*(1+f1*fs1)*cos(11*pi*fd/3600) fy1 = fr*(1+f1*fs1)*sin(11*pi*fd/3600) aline fx1 fy1 fx1 = fr*(1+f1*fs2)*cos(12*pi*fd/3600) fy1 = fr*(1+f1*fs2)*sin(12*pi*fd/3600) aline fx1 fy1 fx1 = fr*(1+f1*fs3)*cos(13*pi*fd/3600) fy1 = fr*(1+f1*fs3)*sin(13*pi*fd/3600) aline fx1 fy1 fx1 = fr*(1+f1*fs4)*cos(14*pi*fd/3600) fy1 = fr*(1+f1*fs4)*sin(14*pi*fd/3600) aline fx1 fy1 fx1 = fr*(1+f1*fs5)*cos(15*pi*fd/3600) fy1 = fr*(1+f1*fs5)*sin(15*pi*fd/3600) aline fx1 fy1 fx1 = fr*(1+f1*fs6)*cos(16*pi*fd/3600) fy1 = fr*(1+f1*fs6)*sin(16*pi*fd/3600) aline fx1 fy1 fx1 = fr*(1+f1*fs7)*cos(17*pi*fd/3600) fy1 = fr*(1+f1*fs7)*sin(17*pi*fd/3600) aline fx1 fy1 fx1 = fr*(1+f1*fs8)*cos(18*pi*fd/3600) fy1 = fr*(1+f1*fs8)*sin(18*pi*fd/3600) aline fx1 fy1 fx1 = fr*(1+f1*fs9)*cos(19*pi*fd/3600) fy1 = fr*(1+f1*fs9)*sin(19*pi*fd/3600) aline fx1 fy1 fx1 = fr*(1+f1)*cos(pi*fd/180) fy1 = fr*(1+f1)*sin(pi*fd/180) aline fx1 fy1 end rotate f2 = f2-fd f1 = -f1 end if begin rotate fa+fl fx1 = fr*(1-f1)*cos(pi*f2/180) fy1 = fr*(1-f1)*sin(pi*f2/180) amove fx1 -fy1 fx1 = fr*(1-f1*fs9)*cos(9*pi*f2/1800) fy1 = fr*(1-f1*fs9)*sin(9*pi*f2/1800) aline fx1 -fy1 fx1 = fr*(1-f1*fs8)*cos(8*pi*f2/1800) fy1 = fr*(1-f1*fs8)*sin(8*pi*f2/1800) aline fx1 -fy1 fx1 = fr*(1-f1*fs7)*cos(7*pi*f2/1800) fy1 = fr*(1-f1*fs7)*sin(7*pi*f2/1800) aline fx1 -fy1 fx1 = fr*(1-f1*fs6)*cos(6*pi*f2/1800) fy1 = fr*(1-f1*fs6)*sin(6*pi*f2/1800) aline fx1 -fy1 fx1 = fr*(1-f1*fs5)*cos(5*pi*f2/1800) fy1 = fr*(1-f1*fs5)*sin(5*pi*f2/1800) aline fx1 -fy1 fx1 = fr*(1-f1*fs4)*cos(4*pi*f2/1800) fy1 = fr*(1-f1*fs4)*sin(4*pi*f2/1800) aline fx1 -fy1 fx1 = fr*(1-f1*fs3)*cos(3*pi*f2/1800) fy1 = fr*(1-f1*fs3)*sin(3*pi*f2/1800) aline fx1 -fy1 fx1 = fr*(1-f1*fs2)*cos(2*pi*f2/1800) fy1 = fr*(1-f1*fs2)*sin(2*pi*f2/1800) aline fx1 -fy1 fx1 = fr*(1-f1*fs1)*cos(1*pi*f2/1800) fy1 = fr*(1-f1*fs1)*sin(1*pi*f2/1800) aline fx1 -fy1 aline fr 0 end rotate else begin rotate fa amove fr 0 fx1 = fr*(1-f1*fs1)*cos(1*pi*f2/1800) fy1 = fr*(1-f1*fs1)*sin(1*pi*f2/1800) aline fx1 -fy1 fx1 = fr*(1-f1*fs2)*cos(2*pi*f2/1800) fy1 = fr*(1-f1*fs2)*sin(2*pi*f2/1800) aline fx1 -fy1 fx1 = fr*(1-f1*fs3)*cos(3*pi*f2/1800) fy1 = fr*(1-f1*fs3)*sin(3*pi*f2/1800) aline fx1 -fy1 fx1 = fr*(1-f1*fs4)*cos(4*pi*f2/1800) fy1 = fr*(1-f1*fs4)*sin(4*pi*f2/1800) aline fx1 -fy1 fx1 = fr*(1-f1*fs5)*cos(5*pi*f2/1800) fy1 = fr*(1-f1*fs5)*sin(5*pi*f2/1800) aline fx1 -fy1 fx1 = fr*(1-f1*fs6)*cos(6*pi*f2/1800) fy1 = fr*(1-f1*fs6)*sin(6*pi*f2/1800) aline fx1 -fy1 fx1 = fr*(1-f1*fs7)*cos(7*pi*f2/1800) fy1 = fr*(1-f1*fs7)*sin(7*pi*f2/1800) aline fx1 -fy1 fx1 = fr*(1-f1*fs8)*cos(8*pi*f2/1800) fy1 = fr*(1-f1*fs8)*sin(8*pi*f2/1800) aline fx1 -fy1 fx1 = fr*(1-f1*fs9)*cos(9*pi*f2/1800) fy1 = fr*(1-f1*fs9)*sin(9*pi*f2/1800) aline fx1 -fy1 fx1 = fr*(1-f1)*cos(pi*f2/180) fy1 = fr*(1-f1)*sin(pi*f2/180) aline fx1 -fy1 end rotate if fn>2.5 then for fi = f2 to fm step 2*fd begin rotate fa-fi amove fr*(1-f1) 0 fx1 = fr*(1-f1*fs9)*cos(1*pi*fd/3600) fy1 = fr*(1-f1*fs9)*sin(1*pi*fd/3600) aline fx1 -fy1 fx1 = fr*(1-f1*fs8)*cos(2*pi*fd/3600) fy1 = fr*(1-f1*fs8)*sin(2*pi*fd/3600) aline fx1 -fy1 fx1 = fr*(1-f1*fs7)*cos(3*pi*fd/3600) fy1 = fr*(1-f1*fs7)*sin(3*pi*fd/3600) aline fx1 -fy1 fx1 = fr*(1-f1*fs6)*cos(4*pi*fd/3600) fy1 = fr*(1-f1*fs6)*sin(4*pi*fd/3600) aline fx1 -fy1 fx1 = fr*(1-f1*fs5)*cos(5*pi*fd/3600) fy1 = fr*(1-f1*fs5)*sin(5*pi*fd/3600) aline fx1 -fy1 fx1 = fr*(1-f1*fs4)*cos(6*pi*fd/3600) fy1 = fr*(1-f1*fs4)*sin(6*pi*fd/3600) aline fx1 -fy1 fx1 = fr*(1-f1*fs3)*cos(7*pi*fd/3600) fy1 = fr*(1-f1*fs3)*sin(7*pi*fd/3600) aline fx1 -fy1 fx1 = fr*(1-f1*fs2)*cos(8*pi*fd/3600) fy1 = fr*(1-f1*fs2)*sin(8*pi*fd/3600) aline fx1 -fy1 fx1 = fr*(1-f1*fs1)*cos(9*pi*fd/3600) fy1 = fr*(1-f1*fs1)*sin(9*pi*fd/3600) aline fx1 -fy1 fx1 = fr*cos(pi*fd/360) fy1 = fr*sin(pi*fd/360) aline fx1 -fy1 fx1 = fr*(1+f1*fs1)*cos(11*pi*fd/3600) fy1 = fr*(1+f1*fs1)*sin(11*pi*fd/3600) aline fx1 -fy1 fx1 = fr*(1+f1*fs2)*cos(12*pi*fd/3600) fy1 = fr*(1+f1*fs2)*sin(12*pi*fd/3600) aline fx1 -fy1 fx1 = fr*(1+f1*fs3)*cos(13*pi*fd/3600) fy1 = fr*(1+f1*fs3)*sin(13*pi*fd/3600) aline fx1 -fy1 fx1 = fr*(1+f1*fs4)*cos(14*pi*fd/3600) fy1 = fr*(1+f1*fs4)*sin(14*pi*fd/3600) aline fx1 -fy1 fx1 = fr*(1+f1*fs5)*cos(15*pi*fd/3600) fy1 = fr*(1+f1*fs5)*sin(15*pi*fd/3600) aline fx1 -fy1 fx1 = fr*(1+f1*fs6)*cos(16*pi*fd/3600) fy1 = fr*(1+f1*fs6)*sin(16*pi*fd/3600) aline fx1 -fy1 fx1 = fr*(1+f1*fs7)*cos(17*pi*fd/3600) fy1 = fr*(1+f1*fs7)*sin(17*pi*fd/3600) aline fx1 -fy1 fx1 = fr*(1+f1*fs8)*cos(18*pi*fd/3600) fy1 = fr*(1+f1*fs8)*sin(18*pi*fd/3600) aline fx1 -fy1 fx1 = fr*(1+f1*fs9)*cos(19*pi*fd/3600) fy1 = fr*(1+f1*fs9)*sin(19*pi*fd/3600) aline fx1 -fy1 fx1 = fr*(1+f1)*cos(pi*fd/180) fy1 = fr*(1+f1)*sin(pi*fd/180) aline fx1 -fy1 fx1 = fr*(1+f1*fs9)*cos(21*pi*fd/3600) fy1 = fr*(1+f1*fs9)*sin(21*pi*fd/3600) aline fx1 -fy1 fx1 = fr*(1+f1*fs8)*cos(22*pi*fd/3600) fy1 = fr*(1+f1*fs8)*sin(22*pi*fd/3600) aline fx1 -fy1 fx1 = fr*(1+f1*fs7)*cos(23*pi*fd/3600) fy1 = fr*(1+f1*fs7)*sin(23*pi*fd/3600) aline fx1 -fy1 fx1 = fr*(1+f1*fs6)*cos(24*pi*fd/3600) fy1 = fr*(1+f1*fs6)*sin(24*pi*fd/3600) aline fx1 -fy1 fx1 = fr*(1+f1*fs5)*cos(25*pi*fd/3600) fy1 = fr*(1+f1*fs5)*sin(25*pi*fd/3600) aline fx1 -fy1 fx1 = fr*(1+f1*fs4)*cos(26*pi*fd/3600) fy1 = fr*(1+f1*fs4)*sin(26*pi*fd/3600) aline fx1 -fy1 fx1 = fr*(1+f1*fs3)*cos(27*pi*fd/3600) fy1 = fr*(1+f1*fs3)*sin(27*pi*fd/3600) aline fx1 -fy1 fx1 = fr*(1+f1*fs2)*cos(28*pi*fd/3600) fy1 = fr*(1+f1*fs2)*sin(28*pi*fd/3600) aline fx1 -fy1 fx1 = fr*(1+f1*fs1)*cos(29*pi*fd/3600) fy1 = fr*(1+f1*fs1)*sin(29*pi*fd/3600) aline fx1 -fy1 fx1 = fr*cos(pi*fd/120) fy1 = fr*sin(pi*fd/120) aline fx1 -fy1 fx1 = fr*(1-f1*fs1)*cos(31*pi*fd/3600) fy1 = fr*(1-f1*fs1)*sin(31*pi*fd/3600) aline fx1 -fy1 fx1 = fr*(1-f1*fs2)*cos(32*pi*fd/3600) fy1 = fr*(1-f1*fs2)*sin(32*pi*fd/3600) aline fx1 -fy1 fx1 = fr*(1-f1*fs3)*cos(33*pi*fd/3600) fy1 = fr*(1-f1*fs3)*sin(33*pi*fd/3600) aline fx1 -fy1 fx1 = fr*(1-f1*fs4)*cos(34*pi*fd/3600) fy1 = fr*(1-f1*fs4)*sin(34*pi*fd/3600) aline fx1 -fy1 fx1 = fr*(1-f1*fs5)*cos(35*pi*fd/3600) fy1 = fr*(1-f1*fs5)*sin(35*pi*fd/3600) aline fx1 -fy1 fx1 = fr*(1-f1*fs6)*cos(36*pi*fd/3600) fy1 = fr*(1-f1*fs6)*sin(36*pi*fd/3600) aline fx1 -fy1 fx1 = fr*(1-f1*fs7)*cos(37*pi*fd/3600) fy1 = fr*(1-f1*fs7)*sin(37*pi*fd/3600) aline fx1 -fy1 fx1 = fr*(1-f1*fs8)*cos(38*pi*fd/3600) fy1 = fr*(1-f1*fs8)*sin(38*pi*fd/3600) aline fx1 -fy1 fx1 = fr*(1-f1*fs9)*cos(39*pi*fd/3600) fy1 = fr*(1-f1*fs9)*sin(39*pi*fd/3600) aline fx1 -fy1 fx1 = fr*(1-f1)*cos(pi*fd/90) fy1 = fr*(1-f1)*sin(pi*fd/90) aline fx1 -fy1 end rotate next fi end if f2 = fl-fm-fd if abs(fn-2*fix(0.5*fn))<0.1 then begin rotate fa-fm-fd amove fr*(1-f1) 0 fx1 = fr*(1-f1*fs9)*cos(1*pi*fd/3600) fy1 = fr*(1-f1*fs9)*sin(1*pi*fd/3600) aline fx1 -fy1 fx1 = fr*(1-f1*fs8)*cos(2*pi*fd/3600) fy1 = fr*(1-f1*fs8)*sin(2*pi*fd/3600) aline fx1 -fy1 fx1 = fr*(1-f1*fs7)*cos(3*pi*fd/3600) fy1 = fr*(1-f1*fs7)*sin(3*pi*fd/3600) aline fx1 -fy1 fx1 = fr*(1-f1*fs6)*cos(4*pi*fd/3600) fy1 = fr*(1-f1*fs6)*sin(4*pi*fd/3600) aline fx1 -fy1 fx1 = fr*(1-f1*fs5)*cos(5*pi*fd/3600) fy1 = fr*(1-f1*fs5)*sin(5*pi*fd/3600) aline fx1 -fy1 fx1 = fr*(1-f1*fs4)*cos(6*pi*fd/3600) fy1 = fr*(1-f1*fs4)*sin(6*pi*fd/3600) aline fx1 -fy1 fx1 = fr*(1-f1*fs3)*cos(7*pi*fd/3600) fy1 = fr*(1-f1*fs3)*sin(7*pi*fd/3600) aline fx1 -fy1 fx1 = fr*(1-f1*fs2)*cos(8*pi*fd/3600) fy1 = fr*(1-f1*fs2)*sin(8*pi*fd/3600) aline fx1 -fy1 fx1 = fr*(1-f1*fs1)*cos(9*pi*fd/3600) fy1 = fr*(1-f1*fs1)*sin(9*pi*fd/3600) aline fx1 -fy1 fx1 = fr*cos(pi*fd/360) fy1 = fr*sin(pi*fd/360) aline fx1 -fy1 fx1 = fr*(1+f1*fs1)*cos(11*pi*fd/3600) fy1 = fr*(1+f1*fs1)*sin(11*pi*fd/3600) aline fx1 -fy1 fx1 = fr*(1+f1*fs2)*cos(12*pi*fd/3600) fy1 = fr*(1+f1*fs2)*sin(12*pi*fd/3600) aline fx1 -fy1 fx1 = fr*(1+f1*fs3)*cos(13*pi*fd/3600) fy1 = fr*(1+f1*fs3)*sin(13*pi*fd/3600) aline fx1 -fy1 fx1 = fr*(1+f1*fs4)*cos(14*pi*fd/3600) fy1 = fr*(1+f1*fs4)*sin(14*pi*fd/3600) aline fx1 -fy1 fx1 = fr*(1+f1*fs5)*cos(15*pi*fd/3600) fy1 = fr*(1+f1*fs5)*sin(15*pi*fd/3600) aline fx1 -fy1 fx1 = fr*(1+f1*fs6)*cos(16*pi*fd/3600) fy1 = fr*(1+f1*fs6)*sin(16*pi*fd/3600) aline fx1 -fy1 fx1 = fr*(1+f1*fs7)*cos(17*pi*fd/3600) fy1 = fr*(1+f1*fs7)*sin(17*pi*fd/3600) aline fx1 -fy1 fx1 = fr*(1+f1*fs8)*cos(18*pi*fd/3600) fy1 = fr*(1+f1*fs8)*sin(18*pi*fd/3600) aline fx1 -fy1 fx1 = fr*(1+f1*fs9)*cos(19*pi*fd/3600) fy1 = fr*(1+f1*fs9)*sin(19*pi*fd/3600) aline fx1 -fy1 fx1 = fr*(1+f1)*cos(pi*fd/180) fy1 = fr*(1+f1)*sin(pi*fd/180) aline fx1 -fy1 end rotate f2 = f2-fd f1 = -f1 end if begin rotate fa-fl fx1 = fr*(1-f1)*cos(pi*f2/180) fy1 = fr*(1-f1)*sin(pi*f2/180) amove fx1 fy1 fx1 = fr*(1-f1*fs9)*cos(9*pi*f2/1800) fy1 = fr*(1-f1*fs9)*sin(9*pi*f2/1800) aline fx1 fy1 fx1 = fr*(1-f1*fs8)*cos(8*pi*f2/1800) fy1 = fr*(1-f1*fs8)*sin(8*pi*f2/1800) aline fx1 fy1 fx1 = fr*(1-f1*fs7)*cos(7*pi*f2/1800) fy1 = fr*(1-f1*fs7)*sin(7*pi*f2/1800) aline fx1 fy1 fx1 = fr*(1-f1*fs6)*cos(6*pi*f2/1800) fy1 = fr*(1-f1*fs6)*sin(6*pi*f2/1800) aline fx1 fy1 fx1 = fr*(1-f1*fs5)*cos(5*pi*f2/1800) fy1 = fr*(1-f1*fs5)*sin(5*pi*f2/1800) aline fx1 fy1 fx1 = fr*(1-f1*fs4)*cos(4*pi*f2/1800) fy1 = fr*(1-f1*fs4)*sin(4*pi*f2/1800) aline fx1 fy1 fx1 = fr*(1-f1*fs3)*cos(3*pi*f2/1800) fy1 = fr*(1-f1*fs3)*sin(3*pi*f2/1800) aline fx1 fy1 fx1 = fr*(1-f1*fs2)*cos(2*pi*f2/1800) fy1 = fr*(1-f1*fs2)*sin(2*pi*f2/1800) aline fx1 fy1 fx1 = fr*(1-f1*fs1)*cos(1*pi*f2/1800) fy1 = fr*(1-f1*fs1)*sin(1*pi*f2/1800) aline fx1 fy1 aline fr 0 end rotate end if end origin amove ffx ffy end if end sub GluonW = 1 ! Winding coefficient, should be >1/pi ! Gluon line from the current point to x,y sub Gluon x y flastl$ = "Gluon" @feyn x y if fl>0 then fn = fix(0.5*fl/PhotonL-GluonW) if fn<1 then fn = 1 end if fd = fl/(2*fn+1+2*GluonW) fm = fd*(2*fn-1) begin origin begin rotate fa for fi = 0 to fm step 2*fd begin translate fi 0 amove 0 0 aline (0.05+GluonW*(1-fs9))*fd fs1*PhotonA aline (0.1+GluonW*(1-fs8))*fd fs2*PhotonA aline (0.15+GluonW*(1-fs7))*fd fs3*PhotonA aline (0.2+GluonW*(1-fs6))*fd fs4*PhotonA aline (0.25+GluonW*(1-fs5))*fd fs5*PhotonA aline (0.3+GluonW*(1-fs4))*fd fs6*PhotonA aline (0.35+GluonW*(1-fs3))*fd fs7*PhotonA aline (0.4+GluonW*(1-fs2))*fd fs8*PhotonA aline (0.45+GluonW*(1-fs1))*fd fs9*PhotonA aline (0.5+GluonW)*fd PhotonA aline (0.55+GluonW*(1+fs1))*fd fs9*PhotonA aline (0.6+GluonW*(1+fs2))*fd fs8*PhotonA aline (0.65+GluonW*(1+fs3))*fd fs7*PhotonA aline (0.7+GluonW*(1+fs4))*fd fs6*PhotonA aline (0.75+GluonW*(1+fs5))*fd fs5*PhotonA aline (0.8+GluonW*(1+fs6))*fd fs4*PhotonA aline (0.85+GluonW*(1+fs7))*fd fs3*PhotonA aline (0.9+GluonW*(1+fs8))*fd fs2*PhotonA aline (0.95+GluonW*(1+fs9))*fd fs1*PhotonA aline (1+2*GluonW)*fd 0 aline (1.05+GluonW*(1+fs9))*fd -fs1*PhotonA aline (1.1+GluonW*(1+fs8))*fd -fs2*PhotonA aline (1.15+GluonW*(1+fs7))*fd -fs3*PhotonA aline (1.2+GluonW*(1+fs6))*fd -fs4*PhotonA aline (1.25+GluonW*(1+fs5))*fd -fs5*PhotonA aline (1.3+GluonW*(1+fs4))*fd -fs6*PhotonA aline (1.35+GluonW*(1+fs3))*fd -fs7*PhotonA aline (1.4+GluonW*(1+fs2))*fd -fs8*PhotonA aline (1.45+GluonW*(1+fs1))*fd -fs9*PhotonA aline (1.5+GluonW)*fd -PhotonA aline (1.55+GluonW*(1-fs1))*fd -fs9*PhotonA aline (1.6+GluonW*(1-fs2))*fd -fs8*PhotonA aline (1.65+GluonW*(1-fs3))*fd -fs7*PhotonA aline (1.7+GluonW*(1-fs4))*fd -fs6*PhotonA aline (1.75+GluonW*(1-fs5))*fd -fs5*PhotonA aline (1.8+GluonW*(1-fs6))*fd -fs4*PhotonA aline (1.85+GluonW*(1-fs7))*fd -fs3*PhotonA aline (1.9+GluonW*(1-fs8))*fd -fs2*PhotonA aline (1.95+GluonW*(1-fs9))*fd -fs1*PhotonA aline 2*fd 0 end translate next fi begin translate 2*fn*fd 0 amove 0 0 aline (0.05+GluonW*(1-fs9))*fd fs1*PhotonA aline (0.1+GluonW*(1-fs8))*fd fs2*PhotonA aline (0.15+GluonW*(1-fs7))*fd fs3*PhotonA aline (0.2+GluonW*(1-fs6))*fd fs4*PhotonA aline (0.25+GluonW*(1-fs5))*fd fs5*PhotonA aline (0.3+GluonW*(1-fs4))*fd fs6*PhotonA aline (0.35+GluonW*(1-fs3))*fd fs7*PhotonA aline (0.4+GluonW*(1-fs2))*fd fs8*PhotonA aline (0.45+GluonW*(1-fs1))*fd fs9*PhotonA aline (0.5+GluonW)*fd PhotonA aline (0.55+GluonW*(1+fs1))*fd fs9*PhotonA aline (0.6+GluonW*(1+fs2))*fd fs8*PhotonA aline (0.65+GluonW*(1+fs3))*fd fs7*PhotonA aline (0.7+GluonW*(1+fs4))*fd fs6*PhotonA aline (0.75+GluonW*(1+fs5))*fd fs5*PhotonA aline (0.8+GluonW*(1+fs6))*fd fs4*PhotonA aline (0.85+GluonW*(1+fs7))*fd fs3*PhotonA aline (0.9+GluonW*(1+fs8))*fd fs2*PhotonA aline (0.95+GluonW*(1+fs9))*fd fs1*PhotonA aline (1+2*GluonW)*fd 0 end translate end rotate end origin amove ffx ffy end if end sub ! Gluon line from the current point via xx,yy to x,y sub Gluon2 xx yy x y flastl$ = "Gluon2" @feyn2 xx yy x y if fr0 then for fi = 0 to fm step 2*fd begin rotate fa+fi amove fr 0 f1 = fr-PhotonA*fs1 f2 = (0.05+GluonW*(1-fs9))*fd/180*pi aline f1*cos(f2) f1*sin(f2) f1 = fr-PhotonA*fs2 f2 = (0.1+GluonW*(1-fs8))*fd/180*pi aline f1*cos(f2) f1*sin(f2) f1 = fr-PhotonA*fs3 f2 = (0.15+GluonW*(1-fs7))*fd/180*pi aline f1*cos(f2) f1*sin(f2) f1 = fr-PhotonA*fs4 f2 = (0.2+GluonW*(1-fs6))*fd/180*pi aline f1*cos(f2) f1*sin(f2) f1 = fr-PhotonA*fs5 f2 = (0.25+GluonW*(1-fs5))*fd/180*pi aline f1*cos(f2) f1*sin(f2) f1 = fr-PhotonA*fs6 f2 = (0.3+GluonW*(1-fs4))*fd/180*pi aline f1*cos(f2) f1*sin(f2) f1 = fr-PhotonA*fs7 f2 = (0.35+GluonW*(1-fs3))*fd/180*pi aline f1*cos(f2) f1*sin(f2) f1 = fr-PhotonA*fs8 f2 = (0.4+GluonW*(1-fs2))*fd/180*pi aline f1*cos(f2) f1*sin(f2) f1 = fr-PhotonA*fs9 f2 = (0.45+GluonW*(1-fs1))*fd/180*pi aline f1*cos(f2) f1*sin(f2) f1 = fr-PhotonA f2 = (0.5+GluonW)*fd/180*pi aline f1*cos(f2) f1*sin(f2) f1 = fr-PhotonA*fs9 f2 = (0.55+GluonW*(1+fs1))*fd/180*pi aline f1*cos(f2) f1*sin(f2) f1 = fr-PhotonA*fs8 f2 = (0.6+GluonW*(1+fs2))*fd/180*pi aline f1*cos(f2) f1*sin(f2) f1 = fr-PhotonA*fs7 f2 = (0.65+GluonW*(1+fs3))*fd/180*pi aline f1*cos(f2) f1*sin(f2) f1 = fr-PhotonA*fs6 f2 = (0.7+GluonW*(1+fs4))*fd/180*pi aline f1*cos(f2) f1*sin(f2) f1 = fr-PhotonA*fs5 f2 = (0.75+GluonW*(1+fs5))*fd/180*pi aline f1*cos(f2) f1*sin(f2) f1 = fr-PhotonA*fs4 f2 = (0.8+GluonW*(1+fs6))*fd/180*pi aline f1*cos(f2) f1*sin(f2) f1 = fr-PhotonA*fs3 f2 = (0.85+GluonW*(1+fs7))*fd/180*pi aline f1*cos(f2) f1*sin(f2) f1 = fr-PhotonA*fs2 f2 = (0.9+GluonW*(1+fs8))*fd/180*pi aline f1*cos(f2) f1*sin(f2) f1 = fr-PhotonA*fs1 f2 = (0.95+GluonW*(1+fs9))*fd/180*pi aline f1*cos(f2) f1*sin(f2) f1 = fr f2 = (1+2*GluonW)*fd/180*pi aline f1*cos(f2) f1*sin(f2) f1 = fr+PhotonA*fs1 f2 = (1.05+GluonW*(1+fs9))*fd/180*pi aline f1*cos(f2) f1*sin(f2) f1 = fr+PhotonA*fs2 f2 = (1.1+GluonW*(1+fs8))*fd/180*pi aline f1*cos(f2) f1*sin(f2) f1 = fr+PhotonA*fs3 f2 = (1.15+GluonW*(1+fs7))*fd/180*pi aline f1*cos(f2) f1*sin(f2) f1 = fr+PhotonA*fs4 f2 = (1.2+GluonW*(1+fs6))*fd/180*pi aline f1*cos(f2) f1*sin(f2) f1 = fr+PhotonA*fs5 f2 = (1.25+GluonW*(1+fs5))*fd/180*pi aline f1*cos(f2) f1*sin(f2) f1 = fr+PhotonA*fs6 f2 = (1.3+GluonW*(1+fs4))*fd/180*pi aline f1*cos(f2) f1*sin(f2) f1 = fr+PhotonA*fs7 f2 = (1.35+GluonW*(1+fs3))*fd/180*pi aline f1*cos(f2) f1*sin(f2) f1 = fr+PhotonA*fs8 f2 = (1.4+GluonW*(1+fs2))*fd/180*pi aline f1*cos(f2) f1*sin(f2) f1 = fr+PhotonA*fs9 f2 = (1.45+GluonW*(1+fs1))*fd/180*pi aline f1*cos(f2) f1*sin(f2) f1 = fr+PhotonA f2 = (1.5+GluonW)*fd/180*pi aline f1*cos(f2) f1*sin(f2) f1 = fr+PhotonA*fs9 f2 = (1.55+GluonW*(1-fs1))*fd/180*pi aline f1*cos(f2) f1*sin(f2) f1 = fr+PhotonA*fs8 f2 = (1.6+GluonW*(1-fs2))*fd/180*pi aline f1*cos(f2) f1*sin(f2) f1 = fr+PhotonA*fs7 f2 = (1.65+GluonW*(1-fs3))*fd/180*pi aline f1*cos(f2) f1*sin(f2) f1 = fr+PhotonA*fs6 f2 = (1.7+GluonW*(1-fs4))*fd/180*pi aline f1*cos(f2) f1*sin(f2) f1 = fr+PhotonA*fs5 f2 = (1.75+GluonW*(1-fs5))*fd/180*pi aline f1*cos(f2) f1*sin(f2) f1 = fr+PhotonA*fs4 f2 = (1.8+GluonW*(1-fs6))*fd/180*pi aline f1*cos(f2) f1*sin(f2) f1 = fr+PhotonA*fs3 f2 = (1.85+GluonW*(1-fs7))*fd/180*pi aline f1*cos(f2) f1*sin(f2) f1 = fr+PhotonA*fs2 f2 = (1.9+GluonW*(1-fs8))*fd/180*pi aline f1*cos(f2) f1*sin(f2) f1 = fr+PhotonA*fs1 f2 = (1.95+GluonW*(1-fs9))*fd/180*pi aline f1*cos(f2) f1*sin(f2) f1 = fr f2 = 2*fd/180*pi aline f1*cos(f2) f1*sin(f2) end rotate next fi begin rotate fa+2*fn*fd amove fr 0 f1 = fr-PhotonA*fs1 f2 = (0.05+GluonW*(1-fs9))*fd/180*pi aline f1*cos(f2) f1*sin(f2) f1 = fr-PhotonA*fs2 f2 = (0.1+GluonW*(1-fs8))*fd/180*pi aline f1*cos(f2) f1*sin(f2) f1 = fr-PhotonA*fs3 f2 = (0.15+GluonW*(1-fs7))*fd/180*pi aline f1*cos(f2) f1*sin(f2) f1 = fr-PhotonA*fs4 f2 = (0.2+GluonW*(1-fs6))*fd/180*pi aline f1*cos(f2) f1*sin(f2) f1 = fr-PhotonA*fs5 f2 = (0.25+GluonW*(1-fs5))*fd/180*pi aline f1*cos(f2) f1*sin(f2) f1 = fr-PhotonA*fs6 f2 = (0.3+GluonW*(1-fs4))*fd/180*pi aline f1*cos(f2) f1*sin(f2) f1 = fr-PhotonA*fs7 f2 = (0.35+GluonW*(1-fs3))*fd/180*pi aline f1*cos(f2) f1*sin(f2) f1 = fr-PhotonA*fs8 f2 = (0.4+GluonW*(1-fs2))*fd/180*pi aline f1*cos(f2) f1*sin(f2) f1 = fr-PhotonA*fs9 f2 = (0.45+GluonW*(1-fs1))*fd/180*pi aline f1*cos(f2) f1*sin(f2) f1 = fr-PhotonA f2 = (0.5+GluonW)*fd/180*pi aline f1*cos(f2) f1*sin(f2) f1 = fr-PhotonA*fs9 f2 = (0.55+GluonW*(1+fs1))*fd/180*pi aline f1*cos(f2) f1*sin(f2) f1 = fr-PhotonA*fs8 f2 = (0.6+GluonW*(1+fs2))*fd/180*pi aline f1*cos(f2) f1*sin(f2) f1 = fr-PhotonA*fs7 f2 = (0.65+GluonW*(1+fs3))*fd/180*pi aline f1*cos(f2) f1*sin(f2) f1 = fr-PhotonA*fs6 f2 = (0.7+GluonW*(1+fs4))*fd/180*pi aline f1*cos(f2) f1*sin(f2) f1 = fr-PhotonA*fs5 f2 = (0.75+GluonW*(1+fs5))*fd/180*pi aline f1*cos(f2) f1*sin(f2) f1 = fr-PhotonA*fs4 f2 = (0.8+GluonW*(1+fs6))*fd/180*pi aline f1*cos(f2) f1*sin(f2) f1 = fr-PhotonA*fs3 f2 = (0.85+GluonW*(1+fs7))*fd/180*pi aline f1*cos(f2) f1*sin(f2) f1 = fr-PhotonA*fs2 f2 = (0.9+GluonW*(1+fs8))*fd/180*pi aline f1*cos(f2) f1*sin(f2) f1 = fr-PhotonA*fs1 f2 = (0.95+GluonW*(1+fs9))*fd/180*pi aline f1*cos(f2) f1*sin(f2) f1 = fr f2 = (1+2*GluonW)*fd/180*pi aline f1*cos(f2) f1*sin(f2) end rotate else for fi = 0 to fm step 2*fd begin rotate fa-fi amove fr 0 f1 = fr+PhotonA*fs1 f2 = (0.05+GluonW*(1-fs9))*fd/180*pi aline f1*cos(f2) -f1*sin(f2) f1 = fr+PhotonA*fs2 f2 = (0.1+GluonW*(1-fs8))*fd/180*pi aline f1*cos(f2) -f1*sin(f2) f1 = fr+PhotonA*fs3 f2 = (0.15+GluonW*(1-fs7))*fd/180*pi aline f1*cos(f2) -f1*sin(f2) f1 = fr+PhotonA*fs4 f2 = (0.2+GluonW*(1-fs6))*fd/180*pi aline f1*cos(f2) -f1*sin(f2) f1 = fr+PhotonA*fs5 f2 = (0.25+GluonW*(1-fs5))*fd/180*pi aline f1*cos(f2) -f1*sin(f2) f1 = fr+PhotonA*fs6 f2 = (0.3+GluonW*(1-fs4))*fd/180*pi aline f1*cos(f2) -f1*sin(f2) f1 = fr+PhotonA*fs7 f2 = (0.35+GluonW*(1-fs3))*fd/180*pi aline f1*cos(f2) -f1*sin(f2) f1 = fr+PhotonA*fs8 f2 = (0.4+GluonW*(1-fs2))*fd/180*pi aline f1*cos(f2) -f1*sin(f2) f1 = fr+PhotonA*fs9 f2 = (0.45+GluonW*(1-fs1))*fd/180*pi aline f1*cos(f2) -f1*sin(f2) f1 = fr+PhotonA f2 = (0.5+GluonW)*fd/180*pi aline f1*cos(f2) -f1*sin(f2) f1 = fr+PhotonA*fs9 f2 = (0.55+GluonW*(1+fs1))*fd/180*pi aline f1*cos(f2) -f1*sin(f2) f1 = fr+PhotonA*fs8 f2 = (0.6+GluonW*(1+fs2))*fd/180*pi aline f1*cos(f2) -f1*sin(f2) f1 = fr+PhotonA*fs7 f2 = (0.65+GluonW*(1+fs3))*fd/180*pi aline f1*cos(f2) -f1*sin(f2) f1 = fr+PhotonA*fs6 f2 = (0.7+GluonW*(1+fs4))*fd/180*pi aline f1*cos(f2) -f1*sin(f2) f1 = fr+PhotonA*fs5 f2 = (0.75+GluonW*(1+fs5))*fd/180*pi aline f1*cos(f2) -f1*sin(f2) f1 = fr+PhotonA*fs4 f2 = (0.8+GluonW*(1+fs6))*fd/180*pi aline f1*cos(f2) -f1*sin(f2) f1 = fr+PhotonA*fs3 f2 = (0.85+GluonW*(1+fs7))*fd/180*pi aline f1*cos(f2) -f1*sin(f2) f1 = fr+PhotonA*fs2 f2 = (0.9+GluonW*(1+fs8))*fd/180*pi aline f1*cos(f2) -f1*sin(f2) f1 = fr+PhotonA*fs1 f2 = (0.95+GluonW*(1+fs9))*fd/180*pi aline f1*cos(f2) -f1*sin(f2) f1 = fr f2 = (1+2*GluonW)*fd/180*pi aline f1*cos(f2) -f1*sin(f2) f1 = fr-PhotonA*fs1 f2 = (1.05+GluonW*(1+fs9))*fd/180*pi aline f1*cos(f2) -f1*sin(f2) f1 = fr-PhotonA*fs2 f2 = (1.1+GluonW*(1+fs8))*fd/180*pi aline f1*cos(f2) -f1*sin(f2) f1 = fr-PhotonA*fs3 f2 = (1.15+GluonW*(1+fs7))*fd/180*pi aline f1*cos(f2) -f1*sin(f2) f1 = fr-PhotonA*fs4 f2 = (1.2+GluonW*(1+fs6))*fd/180*pi aline f1*cos(f2) -f1*sin(f2) f1 = fr-PhotonA*fs5 f2 = (1.25+GluonW*(1+fs5))*fd/180*pi aline f1*cos(f2) -f1*sin(f2) f1 = fr-PhotonA*fs6 f2 = (1.3+GluonW*(1+fs4))*fd/180*pi aline f1*cos(f2) -f1*sin(f2) f1 = fr-PhotonA*fs7 f2 = (1.35+GluonW*(1+fs3))*fd/180*pi aline f1*cos(f2) -f1*sin(f2) f1 = fr-PhotonA*fs8 f2 = (1.4+GluonW*(1+fs2))*fd/180*pi aline f1*cos(f2) -f1*sin(f2) f1 = fr-PhotonA*fs9 f2 = (1.45+GluonW*(1+fs1))*fd/180*pi aline f1*cos(f2) -f1*sin(f2) f1 = fr-PhotonA f2 = (1.5+GluonW)*fd/180*pi aline f1*cos(f2) -f1*sin(f2) f1 = fr-PhotonA*fs9 f2 = (1.55+GluonW*(1-fs1))*fd/180*pi aline f1*cos(f2) -f1*sin(f2) f1 = fr-PhotonA*fs8 f2 = (1.6+GluonW*(1-fs2))*fd/180*pi aline f1*cos(f2) -f1*sin(f2) f1 = fr-PhotonA*fs7 f2 = (1.65+GluonW*(1-fs3))*fd/180*pi aline f1*cos(f2) -f1*sin(f2) f1 = fr-PhotonA*fs6 f2 = (1.7+GluonW*(1-fs4))*fd/180*pi aline f1*cos(f2) -f1*sin(f2) f1 = fr-PhotonA*fs5 f2 = (1.75+GluonW*(1-fs5))*fd/180*pi aline f1*cos(f2) -f1*sin(f2) f1 = fr-PhotonA*fs4 f2 = (1.8+GluonW*(1-fs6))*fd/180*pi aline f1*cos(f2) -f1*sin(f2) f1 = fr-PhotonA*fs3 f2 = (1.85+GluonW*(1-fs7))*fd/180*pi aline f1*cos(f2) -f1*sin(f2) f1 = fr-PhotonA*fs2 f2 = (1.9+GluonW*(1-fs8))*fd/180*pi aline f1*cos(f2) -f1*sin(f2) f1 = fr-PhotonA*fs1 f2 = (1.95+GluonW*(1-fs9))*fd/180*pi aline f1*cos(f2) -f1*sin(f2) f1 = fr f2 = 2*fd/180*pi aline f1*cos(f2) -f1*sin(f2) end rotate next fi begin rotate fa-2*fn*fd amove fr 0 f1 = fr+PhotonA*fs1 f2 = (0.05+GluonW*(1-fs9))*fd/180*pi aline f1*cos(f2) -f1*sin(f2) f1 = fr+PhotonA*fs2 f2 = (0.1+GluonW*(1-fs8))*fd/180*pi aline f1*cos(f2) -f1*sin(f2) f1 = fr+PhotonA*fs3 f2 = (0.15+GluonW*(1-fs7))*fd/180*pi aline f1*cos(f2) -f1*sin(f2) f1 = fr+PhotonA*fs4 f2 = (0.2+GluonW*(1-fs6))*fd/180*pi aline f1*cos(f2) -f1*sin(f2) f1 = fr+PhotonA*fs5 f2 = (0.25+GluonW*(1-fs5))*fd/180*pi aline f1*cos(f2) -f1*sin(f2) f1 = fr+PhotonA*fs6 f2 = (0.3+GluonW*(1-fs4))*fd/180*pi aline f1*cos(f2) -f1*sin(f2) f1 = fr+PhotonA*fs7 f2 = (0.35+GluonW*(1-fs3))*fd/180*pi aline f1*cos(f2) -f1*sin(f2) f1 = fr+PhotonA*fs8 f2 = (0.4+GluonW*(1-fs2))*fd/180*pi aline f1*cos(f2) -f1*sin(f2) f1 = fr+PhotonA*fs9 f2 = (0.45+GluonW*(1-fs1))*fd/180*pi aline f1*cos(f2) -f1*sin(f2) f1 = fr+PhotonA f2 = (0.5+GluonW)*fd/180*pi aline f1*cos(f2) -f1*sin(f2) f1 = fr+PhotonA*fs9 f2 = (0.55+GluonW*(1+fs1))*fd/180*pi aline f1*cos(f2) -f1*sin(f2) f1 = fr+PhotonA*fs8 f2 = (0.6+GluonW*(1+fs2))*fd/180*pi aline f1*cos(f2) -f1*sin(f2) f1 = fr+PhotonA*fs7 f2 = (0.65+GluonW*(1+fs3))*fd/180*pi aline f1*cos(f2) -f1*sin(f2) f1 = fr+PhotonA*fs6 f2 = (0.7+GluonW*(1+fs4))*fd/180*pi aline f1*cos(f2) -f1*sin(f2) f1 = fr+PhotonA*fs5 f2 = (0.75+GluonW*(1+fs5))*fd/180*pi aline f1*cos(f2) -f1*sin(f2) f1 = fr+PhotonA*fs4 f2 = (0.8+GluonW*(1+fs6))*fd/180*pi aline f1*cos(f2) -f1*sin(f2) f1 = fr+PhotonA*fs3 f2 = (0.85+GluonW*(1+fs7))*fd/180*pi aline f1*cos(f2) -f1*sin(f2) f1 = fr+PhotonA*fs2 f2 = (0.9+GluonW*(1+fs8))*fd/180*pi aline f1*cos(f2) -f1*sin(f2) f1 = fr+PhotonA*fs1 f2 = (0.95+GluonW*(1+fs9))*fd/180*pi aline f1*cos(f2) -f1*sin(f2) f1 = fr f2 = (1+2*GluonW)*fd/180*pi aline f1*cos(f2) -f1*sin(f2) end rotate end if end origin amove ffx ffy end if end sub ArrowL = 0.2 ! length ArrowA = 0.1 ! amplitude ArrowD = 0 ! displacement ! Arrow on the last line, fraction F from the beginning sub Arrow f if fl>0 then gsave amove fx fy begin origin if fr>0 then f1 = fa+fc*(f*fl+90) fx1 = 0 fy1 = ArrowD-fc*fr else f1 = fa fx1 = f*fl fy1 = ArrowD end if begin rotate f1 amove fx1 fy1 begin origin aline -ArrowL ArrowA amove 0 0 aline -ArrowL -ArrowA end origin end rotate end origin grestore end if end sub ShadowL = 0.2 ! length ShadowA = 0.1 ! amplitude ShadowC$ = "white" ! Shadows lines below the last line, fraction F from the beginning sub Shadow f if fl>0 then gsave amove fx fy begin origin if fr>0 then f1 = fa+fc*(f*fl+90) fx1 = 0 fy1 = -fc*fr else f1 = fa fx1 = f*fl fy1 = 0 end if begin rotate f1 amove fx1 fy1 begin origin amove -.5*ShadowL -ShadowA box ShadowL 2*ShadowA fill ShadowC$ nobox end origin end rotate end origin grestore end if !redraw line if flastl$="Fermion" then amove fx fy @Fermion ffx ffy end if if flastl$="Fermion2" then amove fsx fsy @Fermion2 fxx fyy ffx ffy end if if flastl$="Double" then amove fx fy @Double ffx ffy end if if flastl$="Double2" then amove fsx fsy @Double2 fxx fyy ffx ffy end if if flastl$="Dash" then amove fx fy @Dash ffx ffy end if if flastl$="Dash2" then amove fsx fsy @Dash2 fxx fyy ffx ffy end if if flastl$="Zigzag" then amove fx fy @Zigzag ffx ffy end if if flastl$="Zigzag2" then amove fsx fsy @Zigzag2 fxx fyy ffx ffy end if if flastl$="Photon" then amove fx fy @Photon ffx ffy end if if flastl$="Photon2" then amove fsx fsy @Photon2 fxx fyy ffx ffy end if if flastl$="Gluon" then amove fx fy @Gluon ffx ffy end if if flastl$="Gluon2" then amove fsx fsy @Gluon2 fxx fyy ffx ffy end if end sub MomL = 0.35 ! half-length MomD = 0.25 ! displacement ! Arrow for indication of momentum near the last line sub Mom f if fl>0 then gsave amove fx fy begin origin if fr>0 then f1 = fa+fc*(f*fl+90) fx1 = 0 fy1 = MomD-fc*fr else f1 = fa fx1 = f*fl fy1 = MomD end if begin rotate f1 amove fx1 fy1 begin origin amove MomL 0 aline -MomL 0 amove MomL 0 aline MomL-ArrowL ArrowA amove MomL 0 aline MomL-ArrowL -ArrowA end origin end rotate end origin grestore end if end sub ! Double arrow near the last line sub DMom f if fl>0 then gsave amove fx fy begin origin if fr>0 then f1 = fa+fc*(f*fl+90) fx1 = 0 fy1 = MomD-fc*fr else f1 = fa fx1 = f*fl fy1 = MomD end if begin rotate f1 amove fx1 fy1 begin origin amove MomL*(1-(DoubleA/ArrowA)) DoubleA aline -MomL DoubleA amove MomL*(1-(DoubleA/ArrowA)) -DoubleA aline -MomL -DoubleA amove MomL 0 aline MomL-ArrowL ArrowA amove MomL 0 aline MomL-ArrowL -ArrowA end origin end rotate end origin grestore end if end sub gle-graphics-4.2.4c/src/lib/polarplot.gle0000664000000000000000000001053011550305515016772 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! Subroutines to create polar plots (r = f(theta)) sub polar fct$ from to tstep color$ fill$ lwidth default tstep 0.025 default color black default fill clear default lwidth 0.02 t = from r = eval(fct$) gsave set color color$ lwidth lwidth begin path stroke fill fill$ amove xg(r*cos(t)) yg(r*sin(t)) for t = from+tstep to to step tstep r = eval(fct$) aline xg(r*cos(t)) yg(r*sin(t)) next t closepath end path grestore end sub sub polar_data ds$ color$ fill$ lwidth type$ default color black default fill clear default lwidth 0.02 default type line gsave set color color$ lwidth lwidth if type$="line" then for i = 1 to ndata(ds$) amove xg(0) yg(0) local r = datayvalue(ds$,i) local t = torad(dataxvalue(ds$,i)) aline xg(r*cos(t)) yg(r*sin(t)) next i else begin path stroke fill fill$ local r = datayvalue(ds$,1) local t = torad(dataxvalue(ds$,1)) amove xg(r*cos(t)) yg(r*sin(t)) for i = 2 to ndata(ds$) r = datayvalue(ds$,i) t = torad(dataxvalue(ds$,i)) aline xg(r*cos(t)) yg(r*sin(t)) next i closepath end path end if grestore end sub sub polar_grid radius rings sectors color$ default radius 1.0 default rings 4 default sectors 8 default color gray10 gsave set color color$ for ring = 1 to rings amove xg(0) yg(0) circle xg(radius/rings*ring)-xg(0) next ring for sector = 1 to sectors local theta = 2*pi/sectors*(sector-1) amove xg(0) yg(0) aline xg(radius*cos(theta)) yg(radius*sin(theta)) next sector grestore end sub gle-graphics-4.2.4c/src/lib/compat/colors-gle-4.0.12.gle0000664000000000000000000001445711405446017021045 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! Colors from GLE 4.0.12 and before defcolor "AQUA" #70DB93 defcolor "AQUAMARINE" #70DB93 defcolor "BAKERS_CHOCOLATE" #5C3317 defcolor "BLUE_VIOLET" #9F5F9F defcolor "BRASS" #B5A642 defcolor "BRIGHT_GOLD" #D9D919 defcolor "BRONZE" #8C7853 defcolor "BRONZE_II" #A67D3D defcolor "BROWN_WEB" #A62A2A defcolor "CADET_BLUE" #5F9F9F defcolor "COOL_COPPER" #D98719 defcolor "COPPER" #B87333 defcolor "CORAL" #FF7F00 defcolor "CORN_FLOWER_BLUE" #42426F defcolor "DARK_BROWN" #5C4033 defcolor "DARK_GREEN" #2F4F2F defcolor "DARK_GREEN_COPPER" #4A766E defcolor "DARK_OLIVE_GREEN" #4F4F2F defcolor "DARK_ORCHID" #9932CD defcolor "DARK_PURPLE" #871F78 defcolor "DARK_SLATE_BLUE" #6B238E defcolor "DARK_SLATE_GRAY" #2F4F4F defcolor "DARK_SLATE_GREY" #2F4F4F defcolor "DARK_TAN" #97694F defcolor "DARK_TURQUOISE" #7093DB defcolor "DARK_WOOD" #855E42 defcolor "DIM_GRAY" #545454 defcolor "DIM_GREY" #545454 defcolor "DUSTY_ROSE" #856363 defcolor "FELDSPAR" #D19275 defcolor "FIREBRICK" #8E2323 defcolor "FOREST_GREEN" #228B22 defcolor "FOREST_GREEN_WEB" #238E23 defcolor "GOLD" #CD7F32 defcolor "GOLDENROD" #DBDB70 defcolor "GRAY" #7F7F7F defcolor "GRAY1" #FDFDFD defcolor "GRAY10" #C8C8C8 defcolor "GRAY20" #AFAFAF defcolor "GRAY30" #969696 defcolor "GRAY40" #7D7D7D defcolor "GRAY5" #F0F0F0 defcolor "GRAY50" #646464 defcolor "GRAY60" #4B4B4B defcolor "GRAY70" #323232 defcolor "GRAY80" #191919 defcolor "GRAY90" #060606 defcolor "GRAY_WEB" #C0C0C0 defcolor "GREEN" #00FF00 defcolor "GREEN_COPPER" #527F76 defcolor "GREEN_YELLOW" #93DB70 defcolor "GREY" #7F7F7F defcolor "GREY1" #FDFDFD defcolor "GREY10" #C8C8C8 defcolor "GREY20" #AFAFAF defcolor "GREY30" #969696 defcolor "GREY40" #7D7D7D defcolor "GREY5" #F0F0F0 defcolor "GREY50" #646464 defcolor "GREY60" #4B4B4B defcolor "GREY70" #323232 defcolor "GREY80" #191919 defcolor "GREY90" #060606 defcolor "GREY_WEB" #C0C0C0 defcolor "HUNTER_GREEN" #215E21 defcolor "INDIAN_RED" #4E2F2F defcolor "KHAKI" #9F9F5F defcolor "LAWN_GREEN" #7CFC00 defcolor "LIGHT_BLUE" #C0D9D9 defcolor "LIGHT_GRAY" #A8A8A8 defcolor "LIGHT_GREY" #A8A8A8 defcolor "LIGHT_STEEL_BLUE" #8F8FBD defcolor "LIGHT_WOOD" #E9C2A6 defcolor "LIME" #00FF01 defcolor "LIME_GREEN" #32CD32 defcolor "MANDARIAN_ORANGE" #E47833 defcolor "MAROON_WEB" #8E236B defcolor "MEDIUM_AQUAMARINE" #32CD99 defcolor "MEDIUM_BLUE" #3232CD defcolor "MEDIUM_FOREST_GREEN" #6B8E23 defcolor "MEDIUM_GOLDENROD" #EAEAAE defcolor "MEDIUM_ORCHID" #9370DB defcolor "MEDIUM_SEA_GREEN" #426F42 defcolor "MEDIUM_SLATE_BLUE" #7F00FF defcolor "MEDIUM_SPRING_GREEN" #7FFF00 defcolor "MEDIUM_TURQUOISE" #70DBDB defcolor "MEDIUM_VIOLET_RED" #DB7093 defcolor "MEDIUM_WOOD" #A68064 defcolor "MIDNIGHT_BLUE" #2F2F4F defcolor "NAVY_BLUE" #23238E defcolor "NEON_BLUE" #4D4DFF defcolor "NEON_PINK" #FF6EC7 defcolor "NEW_MIDNIGHT_BLUE" #00009C defcolor "NEW_TAN" #EBC79E defcolor "OLD_GOLD" #CFB53B defcolor "ORANGE" #FF7F10 defcolor "ORANGE_RED" #FF2400 defcolor "ORANGE_WEB" #FF7F00 defcolor "ORCHID" #DB70DB defcolor "PALE_GREEN" #8FBC8F defcolor "PINK_WEB" #BC8F8F defcolor "PLUM" #EAADEA defcolor "QUARTZ" #D9D9F3 defcolor "RICH_BLUE" #5959AB defcolor "SALMON" #6F4242 defcolor "SCARLET" #8C1717 defcolor "SEA_GREEN" #238E68 defcolor "SEMI_SWEET_CHOCOLATE" #6B4226 defcolor "SIENNA" #8E6B23 defcolor "SILVER_WEB" #E6E8FA defcolor "SKY_BLUE" #3299CC defcolor "SLATE_BLUE" #007FFF defcolor "SPICY_PINK" #FF1CAE defcolor "SPRING_GREEN" #00FF7F defcolor "STEEL_BLUE" #236B8E defcolor "SUMMER_SKY" #38B0DE defcolor "TAN_COLOR" #008080 defcolor "TURQUOISE" #ADEAEA defcolor "VERY_DARK_BROWN" #5C4033 defcolor "VERY_LIGHT_GRAY" #CDCDCD defcolor "VERY_LIGHT_GREY" #CDCDCD defcolor "VIOLET_RED" #CC3299 defcolor "VIOLET_WEB" #4F2F4F defcolor "WHEAT" #D8D8BF defcolor "YELLOW_GREEN" #99CC32 gle-graphics-4.2.4c/src/lib/color.gle0000664000000000000000000001357511550305515016110 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! Color subroutines palette_shade_gray_fade = 0.4 sub color_range_horizontal zmin zmax zstep palette$ width height format$ pixels ! draws a horizontal color range default zstep 1 default palette "color" default width xg(xgmax)-xg(xgmin) default height 0.25 default format "fix 0" default pixels -1 if pixels = -1 then pixels = (zmax-zmin)/zstep end if begin box name cmap if palette$ = "gray" then colormap "x" 0 1 0 1 pixels 1 width height else if palette$ = "color" then colormap "x" 0 1 0 1 pixels 1 width height color else colormap "x" 0 1 0 1 pixels 1 width height palette palette$ end if end box set just tc local xp = zmin while xp <= zmax amove pointx(cmap.lc)+(xp-zmin)/(zmax-zmin)*width pointy(cmap.bc) rline 0 -height/3; rmove 0 -height/3; write format$(xp, format$) xp = xp + zstep next end sub sub color_range_vertical zmin zmax zstep palette$ width height format$ pixels ! draws a vertical color range default zstep 1 default palette "color" default width 0.25 default height yg(ygmax)-yg(ygmin) default format "fix 0" default pixels -1 if pixels = -1 then pixels = (zmax-zmin)/zstep end if begin box name cmap if palette$ = "gray" then colormap "y" 0 1 0 1 1 pixels width height else if palette$ = "color" then colormap "y" 0 1 0 1 1 pixels width height color else colormap "y" 0 1 0 1 1 pixels width height palette palette$ end if end box set just lc local xp = zmin while xp <= zmax amove pointx(cmap.rc) pointy(cmap.bc)+(xp-zmin)/(zmax-zmin)*height rline width/3 0; rmove width/3 0; write format$(xp, format$) xp = xp + zstep next end sub sub palette_blue_white_red z ! a custom palette ranging from blue over white to red local r = 0 local g = 0 local b = 0 ! RED if (z > 0.25) and (z <= 0.50) then r = (z-0.25)*4 if (z > 0.50) and (z <= 0.75) then r = 1 if (z > 0.75) then r = 1-(123/255)*4*(z-0.75) ! GREEN if (z > 0.25) and (z <= 0.50) then g = (z-0.25)*4 if (z > 0.50) and (z <= 0.75) then g = 1-4*(z-0.5) if (z > 0.75) then g = 0 ! BLUE if (z <= 0.25) then b = 132/255+(123/255)*4*z if (z > 0.25) and (z <= 0.50) then b = 1 if (z > 0.50) and (z <= 0.75) then b = 1-4*(z-0.5) if (z > 0.75) then b = 0 return rgb(r,g,b) end sub sub palette_blue_purple_red z ! a custom palette ranging from blue over purple to red return rgb(z,0,1-z) end sub sub set_palette_shade_gray_fade fade palette_shade_gray_fade = fade end sub sub set_palette_shade_gray_color red green blue palette_shade_gray_red = red palette_shade_gray_green = green palette_shade_gray_blue = blue end sub sub sgp_color z x local y = palette_shade_gray_fade ! set to 0 to fade completely white, 1 no fade at all return (z*(1-y)+y)*(x/255-1)+1 ! the final +1 hard codes this to fade to white end sub sub palette_shade_gray z ! r, g, b is the color of the gradient which will fade towards white return rgb(sgp_color(z,palette_shade_gray_red), sgp_color(z,palette_shade_gray_green), sgp_color(z,palette_shade_gray_blue)) end sub gle-graphics-4.2.4c/src/lib/graphutil.gle0000664000000000000000000002753411653607165017003 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! Subroutines for drawing graphs sub graph_line x1 y1 x2 y2 ! Function to draw a line on a graph ! x1, y2 = start point ! x2, y2 = end point default x1 xgmin default y1 ygmin default x2 xgmax default y2 ygmax amove xg(x1) yg(y1) aline xg(x2) yg(y2) end sub sub graph_hline y x1 x2 ! Function to draw a horizontal line on a graph ! y = y-point of line ! x1, x2 = range of line default x1 xgmin default x2 xgmax amove xg(x1) yg(y) aline xg(x2) yg(y) end sub sub graph_vline x y1 y2 ! Function to draw a vertical line on a graph ! x = x-point of line ! y1, y2 = range of line default y1 ygmin default y2 ygmax amove xg(x) yg(y1) aline xg(x) yg(y2) end sub sub invxg x local s = (xg(xgmax)-xg(xgmin))/(xgmax - xgmin) return (x - xg(xgmin) + s*xgmin)/s end sub sub invyg y local s = (yg(ygmax)-yg(ygmin))/(ygmax - ygmin) return (y - yg(ygmin) + s*ygmin)/s end sub sub graph_textbox xp yp label$ dx dy add default dx 0 default dy 0 default xp xgmin default yp ygmin default add 0.1 amove xg(xp)+dx+add yg(yp)+dy+add begin box add add fill white write label$ end box end sub sub graph_text xp yp label$ dx dy default dx 0 default dy 0 default xp xgmin default yp ygmin amove xg(xp)+dx yg(yp)+dy write label$ end sub sub graph_del wd sca ! Function returning the offset of the drawing area of a graph ! wd = width of the graph ! sca = hscale parameter of the graph return (wd-wd*sca)/2 end sub sub graph_select wd hi hsc vsc xmn xmx ymn ymx ! Initialize graph variables and functions such as xg() and yg() ! wd = width of graph ! hi = height of graph ! hsc = hscale parameter of graph ! vsc = vscale parameter of graph ! xmn, xmx = minimum and maximum xaxis value ! ymn, ymx = minimum and maximum yaxis value begin graph size wd hi nobox hscale hsc vscale vsc xaxis min xmn max xmx off yaxis min ymn max ymx off end graph graphx = xpos() graphy = ypos() end sub sub graph_hgrid nb color$ ! Function to draw an horizontal equidistant grid on a graph ! (use 'under graph_hgrid 5 "red"' in your graph block) ! nb = number of lines in grid ! color$ = color for grid lines gsave local i set color color$ for i = 1 to nb local yp = yg(ygmin+(ygmax-ygmin)/(nb+1)*i) amove xg(xgmin) yp aline xg(xgmax) yp next i grestore end sub sub graph_vgrid nb color$ ! Function to draw a vertical equidistant grid on a graph ! (use 'under graph_vgrid 5 "red"' in your graph block) ! nb = number of lines in grid ! color$ = color for grid lines gsave local i set color color$ for i = 1 to nb local xp = xg(xgmin+(xgmax-xgmin)/(nb+1)*i) amove xp yg(ygmin) aline xp yg(ygmax) next i grestore end sub sub graph_grid nbh nbv color$ ! Function to draw an equidistant grid on a graph ! (use 'under graph_grid 5 "red"' in your graph block) ! nb = number of lines in grid ! color$ = color for grid lines graph_hgrid nbh color$ graph_vgrid nbv color$ end sub sub graph_origin ! Go to the origin of a graph selected with selectgraph amove graphx graphy end sub sub graph_zeroaxis style color$ gsave tickw = 0.3*0.3+0.1 set lstyle style color color$ amove xg(xgmin)+tickw yg(0) aline xg(xgmax)-tickw yg(0) amove xg(0) yg(ygmin)+tickw aline xg(0) yg(ygmax)-tickw grestore end sub sub graph_print_inv x y print "xg("+format$(invxg(x),"fix 2")+") yg("+format$(invyg(y),"fix 2")+")" end sub sub dmaxx ds$ ! Function to compute the maximum x-value of a dataset local i local crmax = dataxvalue(ds$,1) for i = 2 to ndata(ds$) crmax = max(crmax, dataxvalue(ds$,i)) next i return crmax end sub sub dmaxy ds$ ! Function to compute the maximum y-value of a dataset local i local crmax = datayvalue(ds$,1) for i = 2 to ndata(ds$) crmax = max(crmax, datayvalue(ds$,i)) next i return crmax end sub sub dminx ds$ ! Function to compute the minimum x-value of a dataset local i local crmin = dataxvalue(ds$,1) for i = 2 to ndata(ds$) crmin = min(crmin, dataxvalue(ds$,i)) next i return crmin end sub sub dminy ds$ ! Function to compute the minimum y-value of a dataset local i local crmin = datayvalue(ds$,1) for i = 2 to ndata(ds$) crmin = min(crmin, datayvalue(ds$,i)) next i return crmin end sub sub dmeany ds$ ! Function to compute the mean y-value of a dataset local i local sum = 0 for i = 1 to ndata(ds$) sum = sum + datayvalue(ds$,i) next i return sum/ndata(ds$) end sub sub darea ds$ ! Function to compute the area between a dataset and the x-axis local i local area = 0 local prev_x = dataxvalue(ds$,1) local prev_y = datayvalue(ds$,1) for i = 2 to ndata(ds$) local x = dataxvalue(ds$,i) local y = datayvalue(ds$,i) area = area + (x-prev_x)*(prev_y+y)/2 prev_x = x; prev_y = y next i return area end sub sub dmeany_x d$ x ! compute average y-value for given x-value x for dataset d$ local i local nb_y = 0 local sum_y = 0 for i = 1 to ndata(d$) if dataxvalue(d$,i) = x then nb_y = nb_y + 1 sum_y = sum_y + datayvalue(d$,i) end if next i return sum_y / nb_y end sub sub derry_up_x d$ x ! compute maximum upward deviation from the mean y-value local i local max_err = -1e300 local mean = dmeany_x(d$, x) for i = 1 to ndata(d$) if dataxvalue(d$,i) = x then max_err = max(max_err, datayvalue(d$,i)-mean) end if next i return max_err end sub sub derry_down_x d$ x ! compute maximum downward deviation from the mean y-value local i local max_err = -1e300 local mean = dmeany_x(d$, x) for i = 1 to ndata(d$) if dataxvalue(d$,i) = x then max_err = max(max_err, mean-datayvalue(d$,i)) end if next i return max_err end sub sub bar_draw_error_interval bar xval yval error ! Function to draw an error interval on a bar dataset with multiple bars amove xbar(xval,bar)-0.1 yg(yval+error) aline xbar(xval,bar)+0.1 yg(yval+error) amove xbar(xval,bar) yg(yval+error) aline xbar(xval,bar) yg(yval-error) amove xbar(xval,bar)-0.1 yg(yval-error) aline xbar(xval,bar)+0.1 yg(yval-error) end sub sub bar_draw_error_intervals data$ err$ bar ! Function to draw error intervals on a bar dataset with multiple bars ! E.g., ! ! begin graph ! data "mydata.csv" ! bar d1,d3 fill grey50,grey20 ! end graph ! ! bar_draw_error_intervals "d1" "d2" 1 ! bar_draw_error_intervals "d3" "d4" 2 local nb = ndata(data$) for i = 1 to nb local xval = dataxvalue(data$,i) local yval = datayvalue(data$,i) local error = datayvalue(err$,i) bar_draw_error_interval bar xval yval error next i end sub sub boxplot ds0 bwidth msize default ds0 1 default bwidth 0.4 default msize 1.5 set cap round for i = 1 to ndata("d"+num$(ds0)) local x = dataxvalue("d"+num$(ds0), i) ! avg min Q.25 Q.5 Q.75 max ! 0 1 2 3 4 5 local meanv = datayvalue("d"+num$(ds0), i) local minv = datayvalue("d"+num$(ds0+1), i) local q25 = datayvalue("d"+num$(ds0+2), i) local q50 = datayvalue("d"+num$(ds0+3), i) local q75 = datayvalue("d"+num$(ds0+4), i) local maxv = datayvalue("d"+num$(ds0+5), i) amove xg(x)-bwidth/2 yg(minv) aline xg(x)+bwidth/2 yg(minv) amove xg(x) yg(minv) aline xg(x) yg(q25) amove xg(x)-bwidth/2 yg(q25) box bwidth yg(q75)-yg(q25) amove xg(x)-bwidth/2 yg(q50) aline xg(x)+bwidth/2 yg(q50) amove xg(x) yg(q75) aline xg(x) yg(maxv) amove xg(x)-bwidth/2 yg(maxv) aline xg(x)+bwidth/2 yg(maxv) amove xg(x) yg(meanv) marker fdiamond msize*bwidth next i end sub sub draw_box_plot ds0 !compatibility boxplot ds0 0.4 1.5 end sub sub energylevel ds$ factor color$ default ds "d1" default factor 1.0 default color "black" local hist_prev_x = 0 local hist_x1, hist_x2 local hist_has_prev = 0 set color color$ for i = 1 to ndata(ds$) local hist_valid = 1 if (i < ndata(ds$)) then hist_x2 = (dataxvalue(ds$, i+1) + dataxvalue(ds$, i))/2 if (hist_has_prev = 1) then hist_x1 = (hist_prev_x + dataxvalue(ds$, i))/2 else hist_x1 = 2*dataxvalue(ds$, i) - hist_x2 end if else if (hist_has_prev = 1) then hist_x1 = (hist_prev_x + dataxvalue(ds$, i))/2 hist_x2 = 2*dataxvalue(ds$, i) - hist_x1; else hist_valid = 0 end if end if if (hist_valid = 1) then local xmid = (hist_x1 + hist_x2) / 2 local len = (hist_x2 - hist_x1) / 2 amove xg(xmid - len*factor) yg(datayvalue(ds$, i)) aline xg(xmid + len*factor) yg(datayvalue(ds$, i)) end if hist_has_prev = 1 hist_prev_x = dataxvalue(ds$, i) next i end sub sub graph_shaded_background from to pixels default from 0.7 default to 1.0 default pixels 200 amove xg(xgmin) yg(ygmin) local wd = xg(xgmax)-xg(xgmin) local hi = yg(ygmax)-yg(ygmin) colormap y 0 0 from to 1 pixels wd hi end sub gle-graphics-4.2.4c/src/lib/Makefile.gcc0000664000000000000000000000612511550305515016465 0ustar rootroot######################################################################## # # # GLE - Graphics Layout Engine # # # # Modified BSD License # # # # Copyright (C) 2009 GLE. # # # # Redistribution and use in source and binary forms, with or without # # modification, are permitted provided that the following conditions # # are met: # # # # 1. Redistributions of source code must retain the above copyright # # notice, this list of conditions and the following disclaimer. # # # # 2. Redistributions in binary form must reproduce the above # # copyright notice, this list of conditions and the following # # disclaimer in the documentation and/or other materials provided with # # the distribution. # # # # 3. The name of the author may not be used to endorse or promote # # products derived from this software without specific prior written # # permission. # # # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR # # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY # # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE # # GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER # # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN # # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # # ######################################################################## include ../../config.gcc ALL = contour.gle ellipse.gle graphutil.gle polarplot.gle simpletree.gle color.gle electronics.gle \ feyn.gle piesub.gle stm.gle ziptext.gle barstyles.gle shape.gle all: $(PROJECT_BINDIR)/gleinc/color.gle $(PROJECT_BINDIR)/gleinc/color.gle: $(ALL) -mkdir -p $(PROJECT_BINDIR)/gleinc -mkdir -p $(PROJECT_BINDIR)/gleinc/compat -cp -p *.gle $(PROJECT_BINDIR)/gleinc/ -cp -p compat/*.gle $(PROJECT_BINDIR)/gleinc/compat/ gle-graphics-4.2.4c/src/lib/tree.gle0000664000000000000000000002227211550305515015723 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! Subroutines for drawing trees include "shape.gle" include "ellipse.gle" ! these constants are final (don't change these) ! the defaults can be modified with the functions below tree_edge_label_hei = 0.25 tree_node_hei = 0.3; tree_leaf_hei = 0.25 tree_node_dx = 0.6; tree_node_dy = 0.9 tree_node_x_fill = 0.2; tree_node_y_fill = 0.12 tree_node_min_sx = 0; tree_node_min_sx = 0 tree_edge_label_add = 0.05; tree_edge_label_dy = 0.1 tree_edge_arrow = 0; tree_node_ellipse = 0 sub set_tree_node_dxdy dx dy tree_node_dx = dx tree_node_dy = dy end sub sub set_tree_node_fill dx dy tree_node_x_fill = dx tree_node_y_fill = dy end sub sub set_tree_node_min_size sx sy tree_node_min_sx = sx tree_node_min_sy = sy end sub sub set_tree_hei nodehei leafhei labelhei tree_edge_label_hei = labelhei tree_node_hei = nodehei tree_leaf_hei = leafhei end sub sub set_tree_edge_label_add_dy add dy tree_edge_label_add = add tree_edge_label_dy = dy end sub sub set_tree_edge_arrow arr tree_edge_arrow = arr end sub sub set_tree_node_ellipse ell tree_node_ellipse = ell end sub sub set_leaf_ellipse_size_str str$ set hei tree_leaf_hei set_ellipse_size_str str$ end sub sub texortext str$ name$ delta hi set hei hi if name$ = "" then if shape_use_tex = 0 then write str$ else tex str$ end if else if shape_use_tex = 0 then begin box name name$ add delta nobox write str$ end box else tex str$ name name$ add delta end if end if end sub sub drawcliparc x0l x1l y0l x0b x1b label$ if label$ <> "" then begin clip begin path clip amove x0b y0l-tree_node_dy box x1b-x0b tree_node_dy fill clear amove pointx(ch.bl) pointy(ch.bl) box width(ch) height(ch) fill clear reverse end path amove x0l y0l if tree_edge_arrow = 1 then aline x1l y0l-tree_node_dy arrow end aline x1l y0l-tree_node_dy end clip else amove x0l y0l if tree_edge_arrow = 1 then aline x1l y0l-tree_node_dy arrow end aline x1l y0l-tree_node_dy end if end sub sub draw_edge_label x1 y1 x2 y2 label$ if label$ <> "" then amove (x1+x2)/2-tree_edge_label_dy*(x2-x1)/(y2-y1) (y1+y2)/2-tree_edge_label_dy texortext label$ "ch" tree_edge_label_add tree_edge_label_hei end if end sub sub def_binary_node label$ llab$ rlab$ ltree$ rtree$ name$ default llab "" default rlab "" local e_c = ellipse_c begin object name$ set just tc hei tree_node_hei local nodehi = theight(label$)+2*tree_node_y_fill if nodehi < tree_node_min_sy then nodehi = tree_node_min_sy end if amove 0 -tree_node_y_fill local xleft = -twidth(label$)/2-tree_node_x_fill local xright = twidth(label$)/2+tree_node_x_fill local addx = tree_node_min_sx-(xright-xleft) if addx > 0 then xleft = xleft - addx/2 xright = xright + addx/2 end if if tree_node_ellipse = 0 then amove xleft 0 box xright-xleft nodehi set just cc amove 0 nodehi/2 texortext label$ "lab" 0 tree_node_hei else set_ellipse_c e_c ellipse_text 0 nodehi/2 label$ "lab" end if local wd1 = width(ltree$) local wd2 = width(rtree$) local totwd = wd1/2+wd2/2+tree_node_dx set just center if isname(ltree$+".lab") then amove -totwd/2 -tree_node_dy draw ltree$+".tc" name "l" if tree_node_ellipse = 0 then local to_xl = ptx("l.lab.tc") draw_edge_label to_xl -tree_node_dy 0 0 llab$ drawcliparc 0 to_xl 0 to_xl 0 llab$ else if tree_edge_arrow = 1 then join lab.ci -> l.lab.ci else join lab.ci - l.lab.ci end if else draw_edge_label -totwd/2 -tree_node_dy 0 0 llab$ drawcliparc 0 -totwd/2 0 -totwd/2 0 llab$ amove -totwd/2 -tree_node_dy draw ltree$+".tc" name "l" end if if isname(rtree$+".lab") then amove +totwd/2 -tree_node_dy draw rtree$+".tc" name "r" if tree_node_ellipse = 0 then local to_xr = ptx("r.lab.tc") draw_edge_label to_xr -tree_node_dy 0 0 rlab$ drawcliparc 0 to_xr 0 0 to_xr rlab$ else if tree_edge_arrow = 1 then join lab.ci -> r.lab.ci else join lab.ci - r.lab.ci end if else draw_edge_label totwd/2 -tree_node_dy 0 0 rlab$ drawcliparc 0 totwd/2 0 0 totwd/2 rlab$ amove +totwd/2 -tree_node_dy draw rtree$+".tc" name "r" end if end object end sub sub def_tertiary_node label$ llab$ mlab$ rlab$ ltree$ mtree$ rtree$ name$ default llab "" default mlab "" default rlab "" local e_c = ellipse_c begin object name$ set just tc hei tree_node_hei local nodehi = theight(label$)+2*tree_node_y_fill if nodehi < tree_node_min_sy then nodehi = tree_node_min_sy end if amove 0 -tree_node_y_fill local xleft = -twidth(label$)/2-tree_node_x_fill local xright = twidth(label$)/2+tree_node_x_fill local addx = tree_node_min_sx-(xright-xleft) if addx > 0 then xleft = xleft - addx/2 xright = xright + addx/2 end if if tree_node_ellipse = 0 then amove xleft 0 box xright-xleft nodehi set just cc amove 0 nodehi/2 texortext label$ "lab" 0 tree_node_hei else set_ellipse_c e_c ellipse_text 0 nodehi/2 label$ "lab" end if local wd1 = width(ltree$) local wdm = width(mtree$) local wd2 = width(rtree$) set just center draw_edge_label -(wd1+wdm)/2-tree_node_dx -tree_node_dy 0 0 llab$ drawcliparc 0 -(wd1+wdm)/2-tree_node_dx ybot -(wd1+wdm)/2-tree_node_dx 0 llab$ draw_edge_label 0 -tree_node_dy 0 0 mlab$ drawcliparc 0 0 ybot -tree_node_dx/2 tree_node_dx/2 mlab$ draw_edge_label (wd2+wdm)/2+tree_node_dx -tree_node_dy 0 0 rlab$ drawcliparc 0 (wd2+wdm)/2+tree_node_dx ybot 0 (wd2+wdm)/2+tree_node_dx rlab$ amove -(wd1+wdm)/2-tree_node_dx ybot-tree_node_dy draw ltree$+".tc" amove (wd1+wdm)/2+tree_node_dx ybot-tree_node_dy draw rtree$+".tc" amove 0 ybot-tree_node_dy draw mtree$+".tc" end object end sub sub def_leaf_ellipse str$ name$ local c = ellipse_c begin object name$ set_ellipse_c c set hei tree_leaf_hei ellipse_text 0 0 str$ "lab" end object end sub gle-graphics-4.2.4c/src/lib/simpletree.gle0000664000000000000000000001441211550305515017132 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! Subroutines for drawing trees ! For an example, see e.g., 2dplots/rt-y-is-x.gle include "ellipse.gle" sizemid$ = "\footnotesize"; sizemid = 0.25 sizenode$ = "\small"; sizenode = 0.3 vlabeladd = 0.05; nodexfill = 0.05; nodeyfill = 0.05; nodedx = 0.9; nodedy = 0.5 tree_node_min_sx = 0; tree_node_min_sx = 0 sub tree_set_node_fill dx dy nodexfill = dx nodeyfill = dy end sub sub set_tree_node_min_size sx sy ! methods should start with set_ tree_node_min_sx = sx tree_node_min_sy = sy end sub sub tree_set_node_dxdy dx dy nodedx = dx nodedy = dy end sub sub tree_set_hei nodehei leafhei labelhei sizemid = labelhei sizenode = nodehei tree_leaf_hei = leafhei end sub sub texortext str$ name$ delta hi texsize$ set hei hi if name$ = "" then if shape_use_tex = 0 then write str$ else tex str$ end if else if shape_use_tex = 0 then begin box name name$ add delta nobox write str$ end box else tex str$ name name$ add delta end if end if end sub sub drawcliparc lx1 ly1 dx lr n$ cn$ begin clip begin path clip amove lx1 ly1+0.1 box nodedx*dx*2+0.2 nodedy+0.2 justify tc amove pointx(ch.tc) pointy(ch.tc) box width(ch) height(ch) justify tc reverse end path amove lx1 ly1 aline lx1+lr*nodedx*dx ly1-nodedy save n$+cn$ end clip end sub sub drawbinnode xp yp str$ l$ r$ dx n$ begin object lab set just tl texortext str$ "" 0 sizenode sizenode$ end object local wd = width(lab) local xleft = xp-wd/2-nodexfill local xright = xp+wd/2+nodexfill local ybot = yp-height(lab)-2*nodeyfill local addx = tree_node_min_sx-(xright-xleft) if addx > 0 then xleft = xleft - addx/2 xright = xright + addx/2 end if amove xleft ybot box xright-xleft yp-ybot name n$ amove xp yp-nodeyfill draw lab.tc lx1 = pointx(n$+".bc") ly1 = pointy(n$+".bc") set just center amove lx1-nodedx/2*dx ly1-nodedy/2-0.05 texortext l$ "ch" vlabeladd sizemid sizemid$ @drawcliparc lx1 ly1 dx -1 n$ "1" amove lx1+nodedx/2*dx ly1-nodedy/2-0.05 texortext r$ "ch" vlabeladd sizemid sizemid$ @drawcliparc lx1 ly1 dx 1 n$ "2" end sub sub binrootnode xp yp str$ l$ r$ dx @drawbinnode xp yp str$ l$ r$ dx "r" end sub sub binnode par$ str$ l$ r$ dx @drawbinnode pointx(par$) pointy(par$) str$ l$ r$ dx par$ end sub sub drawtrinode xp yp str$ l$ m$ r$ dx n$ set just tc amove xp yp-nodeyfill texortext str$ "lab" 0 sizenode sizenode$ xleft = pointx(lab.lc)-nodexfill xright = pointx(lab.rc)+nodexfill ybot = pointy(lab.bc)-nodeyfill amove xleft ybot box xright-xleft yp-ybot name n$ lx1 = pointx(n$+".bc") ly1 = pointy(n$+".bc") set just center amove lx1-nodedx/2*dx ly1-nodedy/2-0.05 texortext l$ "ch" vlabeladd sizemid sizemid$ @drawcliparc lx1 ly1 dx -1 n$ "1" amove lx1 ly1-nodedy/2-0.05 texortext m$ "ch" vlabeladd sizemid sizemid$ @drawcliparc lx1 ly1 dx 0 n$ "2" amove lx1+nodedx/2*dx ly1-nodedy/2-0.05 texortext r$ "ch" vlabeladd sizemid sizemid$ @drawcliparc lx1 ly1 dx 1 n$ "3" end sub sub trinode par$ str$ l$ m$ r$ dx @drawtrinode pointx(par$) pointy(par$) str$ l$ m$ r$ dx par$ end sub sub leaf par$ str$ set just tc amove pointx(par$) pointy(par$)-0.1 texortext str$ "" 0 sizenode sizenode$ end sub sub leaf_ellipse par$ str$ set hei tree_leaf_hei def_ellipse_text str$ "n" amove pointx(par$) pointy(par$) draw n.tc end sub sub leaf_ellipse_empty par$ wd amove pointx(par$) pointy(par$)-ellipse_c*wd/2 ellipse wd/2 ellipse_c*wd/2 end sub gle-graphics-4.2.4c/src/lib/contour.gle0000664000000000000000000000622411550305515016454 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! Subroutines to draw contour plots sub contour_labels file$ format$ ! draws the labels on a contour plot ! ! file$ = filename of file with label data ! fmt$ = format string used to format labels set just cc hei 0.25 color blue fopen file$ f1 read until feof(f1) fread f1 x y i v amove xg(x) yg(y) s$ = format$(v, format$) begin box add 0.05 fill white write s$ end box write s$ next fclose f1 end sub gle-graphics-4.2.4c/src/lib/piesub.gle0000664000000000000000000000753211550305515016255 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! Subroutines to draw a pie wedge between two supplied angles sub pie ang1 ang2 radius colour$ ! ! draw pie wedge between ang1 and ang2 ! radius.... the radius ! colour$... the fill color of the wedge ! begin path fill colour$ stroke rmove 0 0 !The rmove command is neccesary to set arc radius ang1 ang2 !the beginning of the path closepath end path end sub sub pie_text ang1 ang2 radius colour$ label$ !sub pie - Subroutine to draw a coloured pie wedge ! between two supplied angles ! with a key and a label ! draw pie wedge between ang1 and ang2 ! radius.... the radius ! colour$... the fill color of the wedge ! label$ ... te text you want to display ! gsave begin path fill colour$ stroke rmove 0 0 !The rmove command is neccesary to set arc radius ang1 ang2 !the beginning of the path closepath end path ! ! put text in center of pie ! set just cc ang = ang1+(ang2-ang1)/2 rmove (radius/2)*cos(torad(ang)) (radius/2)*sin(torad(ang)) write label$ grestore end sub gle-graphics-4.2.4c/src/lib/include_en.gle0000664000000000000000000000630211550305515017065 0ustar rootroot! Subroutines and definitions to draw figures in "arbitrary" units ! Definitions of colors distinguishable by color blinds ! Subroutines for positioning labels left/right/centered to a given point ! USAGE ! ===== ! 1. Start the first line of your gle file with ! include "include_en.gle" ! 2. Modify the value of the variable finalsize (see line 31) ! according to your needs; this variable gives the size of ! your figure _after_ inclusion into your text document ! 3. Replace dimensions (and colors) in your main gle file; f.e. ! set hei tinyhei ! set lwidth lnwidth ! set color blue$ ! xtitle "ABC" hei charhei ! xaxis hei charhei ! xside lwidth lnwidth ! xticks lwidth lnwidth length ldwidth ! d1 line lwidth lswidth color red$ ! 4. Enjoy ``correct'' line widths and font sizes in your figure ! after inclusion into your text document ! ! Default paper format: DIN A4 landscape !********************* size 29.7 21.0 ! but final figure should have a width of cm ! ************ ***** ! (without compensation for the default "scale 0.7 0.7") finalsize = 8.5 ! cm factor = pagewidth()/finalsize sub val2cm val unit$ !*** Conversion from arbitrary units to cm ! In: val Value in units ! unit$ unit ! Returns: val*factor if unit$ = "inch" then return val*2.54*factor else if unit$ = "bp" then return val/72*2.54*factor else if unit$ = "pt" then return val/72.27*2.54*factor else if unit$ = "pica" then return val/6.0225*2.54*factor else if unit$ = "didot" then return val/67.553*2.54*factor else if unit$ = "cicero" then return val/5.6294*2.54*factor end if end sub !****** ! Font sizes !************ ! as recommended by most publishers ! smallest font: 6 point; largest font: 12 point titlehei = val2cm(12,"bp") charhei = val2cm(10,"bp") smallhei = val2cm( 8,"bp") foothei = val2cm( 7,"bp") tinyhei = val2cm( 6,"bp") set hei charhei ! Thickness of lines !******************* lswidth = val2cm(1,"bp") ! small lnwidth = val2cm(2,"bp") ! normal ldwidth = val2cm(4,"bp") ! double ! Colors for color blinds !************************ black$ = "rgb255(0,0,0)" orange$ = "rgb255(230,159,0)" skyeblue$ = "rgb255(86,180,233)" green$ = "rgb255(0,158,115)" ! "bluish green" yellow$ = "rgb255(240,228,66)" blue$ = "rgb255(0,114,178)" red$ = "rgb255(213,94,0)" ! vermillon purple$ = "rgb255(204,121,167)" ! "reddish purple" ! Font !****** ! PostScript AvantGarde Demi set font psagd sub labelC x y height var$ ! labeling centered to x,y set hei height amove xg(x) yg(y) rmove -.5*twidth(var$) -.5*theight(var$) write var$ end sub sub labelR x y height var$ ! labeling ends at x,y set hei height amove xg(x) yg(y) rmove -1.*twidth(var$) -.5*theight(var$) write var$ end sub sub labelL x y height var$ ! labeling starts at x,y set hei height amove xg(x) yg(y) rmove 0 -.5*theight(var$) write var$ end sub ! LaTeX !****** begin texpreamble \usepackage{mathptmx}\renewcommand{\familydefault}{phv} \usepackage{amsmath} \boldmath end texpreamble set texscale scale ! set texlabels 1 ! see manual, chapter 7.2 gle-graphics-4.2.4c/src/lib/compatibility.gle0000664000000000000000000000530611550305515017634 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! include ["0" - "4.0.12"] "compat/colors-gle-4.0.12.gle" gle-graphics-4.2.4c/src/lib/stm.gle0000664000000000000000000002313611550305515015567 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! Common subroutines for laying-out STM images ! By: Vincent P. LaBella sub scale_bar llength texth a$ lx ly ap$ line_width text_offset fillpattern$ boxit x_buffer y_buffer ! ! draws a scale bar with text over it ! ! llenght ........ line length ! a$.............. text ! texth........... texht height ! lx.............. x coordinate of box ! ly.............. y coordinate of box ! ap$............. anchor point (tl,tc,tr,lc,cc,rc,bl,bc,br) ! line_width ..... width of line ! text_offset .... offset of text from line ! fillpattern$.... background ! boxit........... =1 draws a black box=0 no box is drawn ! x_buffer........ distance on both ends from line to box ! y_buffer........ distance on top and bottom ! ! -- calculate box height and width ! boxw=llength+x_buffer*2 boxh=texth-0.1+line_width+text_offset+2*y_buffer gsave set hei texth set color BLACK set just bc ! ! translate starting coordinates to lower left hand side ! if ap$="tr" then lx=lx-boxw ly=ly-boxh end if if ap$="tc" then lx=lx-boxw/2 ly=ly-boxh end if if ap$="tl" then lx=lx ly=ly-boxh end if if ap$="rc" then lx=lx-boxw ly=ly-boxh/2 end if if ap$="cc" then lx=lx-boxw/2 ly=ly-boxh/2 end if if ap$="lc" then lx=lx ly=ly-boxh/2 end if if ap$="br" then lx=lx-boxw ly=ly end if if ap$="bc" then lx=lx-boxw/2 ly=ly end if if ap$="bl" then lx=lx ly=ly end if lstartx=lx+x_buffer lstarty=ly+y_buffer amove lx ly if boxit=1 then box boxw boxh fill fillpattern$ else box boxw boxh fill fillpattern$ nobox end if set lwidth line_width amove lstartx lstarty rline llength 0.0 amove lstartx+llength/2.0 lstarty+text_offset+line_width/2 write a$ grestore end sub sub textbox x1 y1 ap$ text_size string$ txbuffer tybuffer boxit bgcolor$ fgcolor$ lncolor$ lnwidth ! ! draws a box around a piece of text and fills it with a color ! ! (x1,y1) ........ x and y coordinates of box ! ap$............. anchor point (tl,tc,tr,lc,cc,rc,bl,bc,br) ! string$......... the string to put in the box ! text_size....... the size of the text ! t(x,y)buffer.... extra padding around text ! boxit........... 1 draws box 0 no box is drawn ! fg color........ text color ! bgcolor ........ background color ! lnwidth......... line width of surrounding box ! lncolor......... line color of surrounding box ! ! gsave ! ! translate starting coordinates to lower left hand side ! set hei text_size textbox_boxw=2*txbuffer+TWIDTH(string$) textbox_boxh=2*tybuffer+THEIGHT(string$) if ap$="tr" then x1=x1-textbox_boxw y1=y1-textbox_boxh end if if ap$="tc" then x1=x1-textbox_boxw/2 y1=y1-textbox_boxh end if if ap$="tl" then x1=x1 y1=y1-textbox_boxh end if if ap$="rc" then x1=x1-textbox_boxw y1=y1-textbox_boxh/2 end if if ap$="cc" then x1=x1-textbox_boxw/2 y1=y1-textbox_boxh/2 end if if ap$="lc" then x1=x1 y1=y1-textbox_boxh/2 end if if ap$="br" then x1=x1-textbox_boxw y1=y1 end if if ap$="bc" then x1=x1-textbox_boxw/2 y1=y1 end if if ap$="bl" then x1=x1 y1=y1 end if amove x1 y1 set color lncolor$ set lwidth lnwidth if boxit=1 then box textbox_boxw textbox_boxh fill bgcolor$ else box textbox_boxw textbox_boxh fill bgcolor$ nobox end if set color fgcolor$ set just cc amove x1+textbox_boxw/2 y1+textbox_boxh/2 write string$ grestore end sub sub axis_dir x1 y1 dx dy x_text$ y_text$ text_height angle text_offset text_ap$ ! ! draws and axis x and y and lables it called by axis_box ! gsave amove x1 y1 set hei text_height begin rotate angle rline dx 0.0 arrow end if angle>90 then set just tl begin rotate 180 rmove 0.0 -text_offset write x_text$ end rotate else set just br rmove 0.0 text_offset write x_text$ end if amove x1 y1 rline 0.0 dy arrow end ! ! for y text roate if necessary ! if angle<0 then set just bc begin rotate 90 rmove 0.0 -text_offset write y_text$ end rotate else set just bl rmove text_offset 0.0 begin rotate -90 write y_text$ end rotate end if end rotate grestore end sub sub axis_box lx ly textx$ texty$ angle xoffset yoffset axis_length ap$ boxit fgcolor$ bgcolor$ txtcolor$ text_height text_offset ! ! draws a box and puts two axis 90 deg apart and lables them as you want ! ! lx,ly........location of box ! textx$.......text to put on x axis ! texty$.......text to put on y axis ! angle........axis is rotated ! xoffset......location of origin relative to corner of box ! yoffset......""""""" """ """ """ ! axis_length..lenght of axis ! ap$..........anchor point (does not work yet puts it at lower left ! boxit........1 draws box 0 no box ! text_offset....offset of text from axis ! gsave amove lx ly begin rotate angle if boxit=1 then set color fgcolor$ box axis_length+2*xoffset axis_length+2*yoffset fill bgcolor$ else set color bgcolor$ box axis_length+2*xoffset axis_length+2*yoffset fill bgcolor$ end if set color fgcolor$ end rotate @axis_dir lx+xoffset ly+yoffset axis_length axis_length textx$ texty$ text_height angle text_offset "br" grestore end sub sub axis_boxr lx ly textx$ texty$ angle xoffset yoffset axis_length ap$ boxit fgcolor$ bgcolor$ txtcolor$ text_height text_offset ! ! draws a box and puts two axis 90 deg apart and lables them as you want ! ! lx,ly........location of box ! textx$.......text to put on x axis ! texty$.......text to put on y axis ! angle........axis is rotated ! xoffset......location of origin relative to corner of box ! yoffset......""""""" """ """ """ ! axis_length..lenght of axis ! ap$..........anchor point (does not work yet puts it at lower left ! boxit........1 draws box 0 no box ! text_offset....offset of text from axis ! gsave amove lx ly begin rotate angle if boxit=1 then set color fgcolor$ box axis_length+2*xoffset axis_length+2*yoffset fill bgcolor$ else set color bgcolor$ box axis_length+2*xoffset axis_length+2*yoffset fill bgcolor$ end if set color fgcolor$ @axis_dir lx+xoffset ly+yoffset axis_length axis_length textx$ texty$ text_height 0 text_offset "br" end rotate grestore end sub gle-graphics-4.2.4c/src/lib/barstyles.gle0000664000000000000000000000673711550305515017004 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! Subroutines to draw customized bar plots bar_colormap_pixels = 200 bar_gridline_width = 0.01 sub bar_colormap x1 y1 x2 y2 b g amove x1 y1 begin clip begin path clip box x2-x1 y2-y1 end path colormap y 0 1 0 1 1 bar_colormap_pixels x2-x1 yg(ygmax)-yg(ygmin) color end clip box x2-x1 y2-y1 fill clear end sub sub bar_colormap_palette_labels x1 y1 x2 y2 value palette$ fmt$ hei default hei 0.23 if value >= 0 then y1 = y1 + bar_gridline_width y2 = y2 + bar_gridline_width else y1 = y1 - bar_gridline_width y2 = y2 - bar_gridline_width end if amove x1 y1 colormap y 0 1 0 1 1 bar_colormap_pixels x2-x1 y2-y1 palette palette$ ! draw data labels gsave set just bc hei hei if value < 0 then y2 = yg(0) amove (x1+x2)/2 y2+0.1 write format$(value, fmt$) grestore end sub gle-graphics-4.2.4c/src/lib/ziptext.gle0000664000000000000000000000560411550305515016473 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! Subroutines to draw moving (zipped) text... sub ziptext tt$ gsave for i = 1 to 0 step -.05 set color (i) write tt$ rmove -.05 .025 next i set color white write tt$ grestore end sub gle-graphics-4.2.4c/src/fonts/texcmmi.gle0000664000000000000000000064534411676336540017043 0ustar rootrootdfont file_name="CMMI10" dfont font_name="CMMI10" dfont design= .35146 dfont slant= .25 dfont space= 0 dfont stretch= 0 dfont shrink= 0 dfont x_hei= .151323 dfont quad= .351461 dfont extra_space= 0 dfont paint="FILL" !------------------ end of main parameters dfont char=0 !-------------- Beginning of new char. dfont wid=.615278 hei=.683332 dep=0 italic=.13889 dfont fby=":" kadd=-.111112 dfont fby=";" kadd=-.111112 dfont fby="=" kadd=-.0555553 dfont fby=127 kadd=.0833359 set path ! start of curve newpath ! start of curve amove .25146 .23749 aline .25273 .236855 bezier .253911 .218241 .248392 .198892 .24765 .179705 aline .247015 .17907 aline .247015 .17399 aline .24638 .173355 aline .24638 .16891 aline .245745 .168275 aline .245745 .163195 aline .24511 .160655 aline .243205 .15875 aline .239395 .15875 aline .238125 .159385 aline .23749 .16002 bezier .236957 .179059 .245947 .204422 .2286 .21971 bezier .22032 .225149 .210283 .226156 .201295 .22733 aline .14351 .22733 aline .142875 .226695 aline .1397 .226695 aline .139065 .22606 aline .136525 .22479 aline .13589 .224155 aline .133985 .220345 aline .13335 .21844 aline .09271 .05588 aline .084455 .02286 bezier .804174E-01 .016341 .086146 .943981E-02 .093345 .010795 aline .09398 .01016 aline .1016 .01016 aline .102235 .009525 aline .122555 .009525 aline .123825 .00889 aline .12446 .008255 aline .125095 .006985 aline .125095 .00508 aline .12446 .00254 aline .12319 0 aline .12192 -.000635 aline .109855 -.000635 aline .10922 0 aline .073025 0 aline .07239 .000635 aline .05715 .000635 aline .056515 0 aline .0254 0 aline .024765 -.000635 aline .01651 -.000635 aline .014605 .00127 aline .014605 .005715 aline .01524 .00762 aline .017145 .009525 aline .03429 .009525 bezier .418056E-01 .104407E-01 .528688E-01 .108563E-01 .05461 .020955 aline .09525 .183515 aline .103505 .216535 aline .10414 .21717 aline .10414 .22352 aline .10287 .22479 aline .100965 .225425 aline .10033 .22606 aline .097155 .22606 aline .09652 .226695 aline .090805 .226695 aline .09017 .22733 aline .07366 .22733 aline .07239 .227965 aline .07112 .230505 aline .07112 .231775 aline .071755 .234315 aline .07239 .235585 aline .074295 .23749 closepath ! end of curve fill dfont endchar dfont char=1 !-------------- Beginning of new char. dfont wid=.833336 hei=.683332 dep=0 italic=0 dfont fby=127 kadd=.166672 set path ! start of curve newpath ! start of curve amove .212725 .25019 aline .213995 .249555 aline .215265 .248285 aline .2159 .247015 aline .216535 .24511 aline .2286 .19685 aline .229235 .193675 aline .25654 .084455 aline .257175 .08128 aline .27686 .00254 aline .276225 .000635 aline .27559 0 aline .27432 -.000635 aline .018415 -.000635 bezier .175593E-01 .692703E-02 .272109E-01 .127106E-01 .03048 .019685 bezier .887211E-01 .959207E-01 .144728 .174239 .203835 .249555 aline .20574 .25019 closepath ! end of curve ! start of curve amove .189865 .21717 bezier .142716 .152345 .918106E-01 .883973E-01 .046355 .023495 aline .23876 .023495 aline .239395 .02413 aline .23876 .024765 aline .235585 .037465 aline .23495 .04064 aline .207645 .14986 aline .20701 .153035 aline .191135 .216535 aline .1905 .217805 aline .189865 .21717 closepath ! end of curve fill dfont endchar dfont char=2 !-------------- Beginning of new char. dfont wid=.762776 hei=.683332 dep=0 italic=.0277786 dfont fby=127 kadd=.0833359 set path ! start of curve newpath ! start of curve amove .178435 .24638 bezier .22258 .244767 .259602 .203036 .258445 .159385 bezier .263292 .751295E-01 .186191 -.114417E-01 .09906 -.008255 bezier .581274E-01 -.680577E-02 .209248E-01 .290856E-01 .01905 .070485 bezier .980682E-02 .152672 .800858E-01 .238076 .16256 .24638 aline .178435 .24638 closepath ! end of curve ! start of curve amove .161925 .23876 bezier .104624 .230654 .686806E-01 .175276 .055245 .122555 bezier .457319E-01 .088211 .415545E-01 .486592E-01 .065405 .018415 bezier .916676E-01 -.112125E-01 .136994 -.21687E-02 .164465 .020955 bezier .209514 .564662E-01 .229331 .117907 .229235 .17272 bezier .2275 .200687 .211051 .233618 .179705 .238125 aline .17907 .23876 aline .17526 .23876 aline .174625 .239395 aline .16256 .239395 aline .161925 .23876 closepath ! end of curve ! start of curve amove .08636 .14351 aline .08763 .142875 aline .0889 .140335 aline .0889 .1397 aline .872331E-01 .133033 aline .08763 .131445 aline .196215 .131445 aline .19685 .132715 aline .198755 .140335 aline .200025 .142875 aline .201295 .14351 aline .205105 .14351 aline .206375 .142875 aline .207645 .140335 aline .207645 .1397 aline .197485 .09906 aline .19685 .097155 aline .194945 .09525 aline .191135 .09525 aline .189865 .095885 aline .18923 .09652 aline .188595 .09779 aline .188595 .099695 aline .189865 .104775 aline .190288 .106045 aline .189865 .107315 aline .08128 .107315 aline .080645 .10668 aline .07874 .09906 aline .078105 .097155 aline .0762 .09525 aline .07239 .09525 aline .07112 .095885 aline .070485 .09652 aline .06985 .09779 aline .06985 .099695 aline .08001 .140335 aline .08128 .142875 aline .08255 .14351 closepath ! end of curve fill dfont endchar dfont char=3 !-------------- Beginning of new char. dfont wid=.694446 hei=.683332 dep=0 italic=0 dfont fby=127 kadd=.166672 set path ! start of curve newpath ! start of curve amove .18796 .25019 aline .18923 .249555 bezier .196906 .17627 .199821 .101502 .206375 .02794 bezier .205127 .194262E-01 .207779 .860123E-02 .21844 .01016 aline .219075 .009525 aline .231775 .009525 aline .23368 .00762 aline .23368 .00381 aline .233045 .001905 aline .23241 .000635 aline .231775 0 aline .230505 -.000635 aline .22225 -.000635 aline .221615 0 aline .19812 0 aline .197485 .000635 aline .184785 .000635 aline .18415 0 aline .153035 0 aline .1524 -.000635 aline .144145 -.000635 aline .142875 0 aline .141605 .00254 aline .141605 .003175 aline .14224 .005715 aline .142875 .00762 aline .14478 .009525 bezier .155863 .964854E-02 .170044 .888723E-02 .17653 .019685 bezier .172171 .808923E-01 .16816 .142244 .163195 .2032 bezier .130248 .14439 .955228E-01 .866468E-01 .0635 .027305 bezier .585488E-01 .150453E-01 .073392 .845924E-02 .083185 .009525 aline .08509 .00762 aline .08509 .00381 aline .084455 .00127 aline .08255 -.000635 bezier .596185E-01 .611983E-03 .364639E-01 .138827E-03 .01397 0 aline .013335 .000635 aline .0127 .001905 aline .0127 .004445 aline .013335 .00635 aline .014605 .00889 bezier .336373E-01 .862413E-02 .506773E-01 .220121E-01 .05842 .03937 bezier .991125E-01 .108877 .137838 .179802 .17907 .24892 aline .18034 .249555 aline .18161 .25019 closepath ! end of curve fill dfont endchar dfont char=4 !-------------- Beginning of new char. dfont wid=.742363 hei=.683332 dep=0 italic=.0756941 dfont fby=127 kadd=.0833359 set path ! start of curve newpath ! start of curve amove .27051 .236855 aline .272415 .23495 bezier .270852 .218398 .266931 .202355 .26416 .186055 aline .262255 .18415 bezier .253392 .182387 .256373 .192346 .25781 .19685 aline .25781 .20066 aline .258445 .201295 aline .258445 .206375 aline .25908 .20701 aline .25908 .211455 aline .258445 .21209 aline .258082 .212816 aline .255905 .21336 aline .25527 .213995 aline .245745 .213995 aline .24511 .21463 aline .098425 .21463 aline .09779 .213995 aline .088265 .213995 bezier .808567E-01 .214357 .796782E-01 .204927 .076835 .19939 aline .07239 .186055 aline .070485 .18415 aline .066675 .18415 aline .065405 .184785 aline .06477 .18542 aline .064135 .18669 bezier .685444E-01 .203258 .738423E-01 .220264 .08001 .23622 aline .08128 .236855 aline .27051 .236855 closepath ! end of curve ! start of curve amove .093345 .151765 aline .09525 .14986 aline .09525 .14732 aline .923131E-01 .135573 aline .09271 .133985 aline .20955 .133985 aline .210185 .135255 aline .21336 .147955 aline .213995 .14986 aline .21463 .15113 aline .2159 .151765 aline .220345 .151765 aline .22225 .14986 aline .22225 .14732 aline .20955 .09652 aline .208915 .09525 aline .207645 .09398 aline .202565 .09398 aline .20193 .094615 aline .201295 .095885 aline .201295 .099695 aline .203835 .109855 aline .204311 .110808 aline .203835 .11176 aline .08636 .11176 aline .08255 .09652 aline .081915 .09525 aline .080645 .09398 aline .075565 .09398 aline .07493 .094615 aline .074295 .095885 aline .074295 .099695 aline .08636 .147955 aline .086995 .14986 aline .08763 .15113 aline .0889 .151765 aline .093345 .151765 closepath ! end of curve ! start of curve amove .034925 .05588 aline .03683 .053975 bezier .366622E-01 .432137E-01 .316534E-01 .033138 .03429 .02286 aline .037465 .02286 aline .0381 .022225 aline .047625 .022225 aline .04826 .02159 aline .19558 .02159 bezier .202896 .232273E-01 .214203 .198548E-01 .2159 .03048 aline .21717 .03302 aline .21844 .03683 aline .219075 .0381 aline .22352 .051435 aline .224155 .053975 aline .22606 .05588 aline .230505 .05588 aline .23241 .053975 bezier .228515 .357825E-01 .221958 .177011E-01 .2159 0 aline .21463 -.000635 aline .02159 -.000635 aline .019685 .00127 bezier .211037E-01 .190033E-01 .258028E-01 .360828E-01 .028575 .053975 aline .03048 .05588 aline .034925 .05588 closepath ! end of curve fill dfont endchar dfont char=5 !-------------- Beginning of new char. dfont wid=.831251 hei=.683332 dep=0 italic=.0812483 dfont fby=":" kadd=-.0555553 dfont fby=";" kadd=-.0555553 dfont fby="=" kadd=-.0555553 dfont fby=127 kadd=.0555573 set path ! start of curve newpath ! start of curve amove .306705 .23749 aline .30861 .235585 aline .30861 .23114 aline .307975 .229235 aline .30607 .22733 aline .288925 .22733 bezier .281409 .226414 .270346 .225999 .268605 .2159 aline .227965 .05334 aline .21971 .02032 aline .219075 .019685 aline .219075 .013335 aline .220345 .012065 aline .22225 .01143 aline .222885 .010795 aline .22606 .010795 aline .226695 .01016 aline .23241 .01016 aline .233045 .009525 aline .249555 .009525 aline .250825 .00889 aline .252095 .00635 aline .252095 .00508 aline .25146 .00254 aline .250825 .00127 aline .24892 -.000635 aline .23876 -.000635 aline .238125 0 aline .207645 0 aline .20701 .000635 aline .19304 .000635 aline .192405 0 aline .16129 0 aline .160655 -.000635 aline .1524 -.000635 aline .150495 .00127 aline .150495 .005715 aline .15113 .00762 aline .153035 .009525 aline .17018 .009525 bezier .177696 .104407E-01 .188759 .108563E-01 .1905 .020955 aline .23114 .183515 aline .241697 .225743 aline .2413 .22733 aline .13589 .22733 aline .135255 .22606 aline .094615 .0635 aline .08382 .02032 aline .083185 .019685 aline .083185 .013335 aline .084455 .012065 aline .08636 .01143 aline .086995 .010795 aline .09017 .010795 aline .090805 .01016 aline .09652 .01016 aline .097155 .009525 aline .113665 .009525 aline .114935 .00889 aline .116205 .00635 aline .116205 .00508 aline .11557 .00254 aline .114935 .00127 aline .11303 -.000635 aline .10287 -.000635 aline .102235 0 aline .071755 0 aline .07112 .000635 aline .05715 .000635 aline .056515 0 aline .0254 0 aline .024765 -.000635 aline .01651 -.000635 aline .014605 .00127 aline .014605 .005715 aline .01524 .00762 aline .017145 .009525 aline .03429 .009525 bezier .418056E-01 .104407E-01 .528688E-01 .108563E-01 .05461 .020955 aline .09525 .183515 aline .103505 .216535 aline .10414 .21717 aline .10414 .22352 aline .10287 .22479 aline .100965 .225425 aline .10033 .22606 aline .097155 .22606 aline .09652 .226695 aline .090805 .226695 aline .09017 .22733 aline .07366 .22733 aline .07239 .227965 aline .07112 .230505 aline .07112 .231775 aline .071755 .234315 aline .07239 .235585 aline .074295 .23749 aline .306705 .23749 closepath ! end of curve fill dfont endchar dfont char=6 !-------------- Beginning of new char. dfont wid=.779863 hei=.683332 dep=0 italic=.0576382 dfont fby=127 kadd=.0833359 set path ! start of curve newpath ! start of curve amove .281305 .23876 aline .28321 .236855 bezier .280245 .211331 .278415 .185636 .273685 .160655 aline .272415 .16002 aline .268605 .16002 aline .2667 .161925 bezier .268082 .18147 .271417 .205585 .254 .21971 bezier .239928 .227051 .224996 .227196 .210185 .2286 aline .114935 .2286 bezier .128338 .192468 .146236 .156682 .16129 .12065 aline .16129 .117475 bezier .123499 .825448E-01 .847849E-01 .488949E-01 .04699 .01397 aline .047625 .013335 aline .153035 .013335 bezier .178804 .145244E-01 .210089 .176796E-01 .22606 .042545 bezier .236116 .537035E-01 .239501 .700601E-01 .24765 .081915 aline .25146 .081915 aline .253365 .08001 bezier .245714 .529769E-01 .234224 .264519E-01 .224155 0 aline .222885 -.000635 aline .023495 -.000635 aline .02159 .00127 aline .02159 .004445 bezier .581702E-01 .390339E-01 .097462 .715221E-01 .133112 .106362 bezier .115285 .147836 .967851E-01 .189096 .07874 .230505 aline .07874 .234315 aline .079375 .23622 aline .08001 .23749 aline .080645 .238125 aline .081915 .23876 aline .281305 .23876 closepath ! end of curve fill dfont endchar dfont char=7 !-------------- Beginning of new char. dfont wid=.583333 hei=.683332 dep=0 italic=.13889 dfont fby=":" kadd=-.111112 dfont fby=";" kadd=-.111112 dfont fby="=" kadd=-.0555553 dfont fby=127 kadd=.0555573 set path ! start of curve newpath ! start of curve amove .0762 .24638 bezier .10345 .245059 .118521 .215825 .11938 .19177 aline .11938 .182245 aline .120015 .18161 aline .120015 .174625 aline .11938 .17399 aline .11938 .16256 aline .118957 .16129 aline .11938 .16002 bezier .135247 .197892 .160849 .240546 .205105 .24638 bezier .22497 .250186 .244984 .233954 .244475 .21336 aline .24511 .212725 aline .24511 .20193 aline .244475 .201295 aline .244475 .197485 aline .24384 .19685 bezier .246546 .189846 .235163 .182744 .23241 .1905 bezier .238744 .206558 .221669 .22263 .20574 .22098 bezier .178913 .222156 .156746 .198476 .14478 .175895 bezier .135073 .157249 .127761 .137383 .12319 .11684 aline .099695 .02286 bezier .956574E-01 .016341 .101386 .943981E-02 .108585 .010795 aline .10922 .01016 aline .11684 .01016 aline .117475 .009525 aline .137795 .009525 aline .139065 .00889 aline .1397 .008255 aline .140335 .006985 aline .140335 .00508 aline .1397 .00254 aline .13843 0 aline .13716 -.000635 aline .125095 -.000635 aline .12446 0 aline .088265 0 aline .08763 .000635 aline .07112 .000635 aline .070485 0 aline .033655 0 aline .03302 -.000635 aline .02286 -.000635 aline .02159 0 aline .02032 .00254 aline .02032 .003175 aline .020955 .005715 aline .02159 .00762 aline .023495 .009525 bezier .383129E-01 .103562E-01 .539729E-01 .717217E-02 .066675 .01524 aline .06731 .01651 aline .067945 .017145 aline .06985 .020955 aline .094615 .120015 bezier .1015 .149277 .1084 .18237 .090805 .20955 bezier .701805E-01 .23262 .278862E-01 .218995 .02032 .189865 aline .018415 .18796 aline .01651 .187325 aline .0127 .187325 aline .01143 .18796 aline .010795 .188595 bezier .142857E-01 .214346 .350393E-01 .239059 .06096 .245745 aline .064135 .245745 aline .06477 .24638 aline .0762 .24638 closepath ! end of curve fill dfont endchar dfont char=8 !-------------- Beginning of new char. dfont wid=.666667 hei=.683332 dep=0 italic=0 dfont fby=127 kadd=.0833359 set path ! start of curve newpath ! start of curve amove .100965 .23876 aline .1016 .238125 aline .13716 .238125 aline .137795 .23749 aline .154305 .23749 aline .15494 .238125 aline .191135 .238125 aline .19177 .23876 aline .20193 .23876 aline .203835 .236855 aline .203835 .23368 aline .2032 .23114 aline .202565 .22987 bezier .188727 .226604 .173352 .230658 .16002 .22479 aline .156845 .221615 aline .15494 .217805 aline .154305 .2159 aline .14859 .19304 aline .148114 .192088 bezier .178252 .188848 .218272 .17427 .22479 .139065 bezier .229582 .101399 .194572 .721713E-01 .16256 .059055 bezier .14663 .050854 .127097 .493721E-01 .11176 .04572 aline .106045 .02286 bezier .102007 .016341 .107736 .943981E-02 .114935 .010795 aline .11557 .01016 aline .12319 .01016 aline .123825 .009525 aline .144145 .009525 aline .145415 .00889 aline .14605 .008255 aline .146685 .006985 aline .146685 .00508 aline .14605 .00254 aline .14478 0 aline .14351 -.000635 aline .13208 -.000635 aline .131445 0 aline .09525 0 aline .094615 .000635 aline .078105 .000635 aline .07747 0 aline .041275 0 aline .04064 -.000635 aline .031115 -.000635 aline .029845 0 aline .028575 .00254 aline .028575 .003175 aline .02921 .005715 aline .029845 .00762 aline .03175 .009525 bezier .465679E-01 .103562E-01 .622279E-01 .717217E-02 .07493 .01524 aline .075565 .01651 aline .0762 .017145 aline .078105 .020955 aline .842169E-01 .454025E-01 bezier .743061E-01 .499934E-01 .600713E-01 .491837E-01 .048895 .055245 bezier .212979E-01 .652182E-01 -.288244E-03 .962826E-01 .012065 .125095 bezier .030089 .166662 .780774E-01 .187626 .12065 .191135 aline .127 .216535 aline .127635 .21717 aline .127635 .22352 aline .127 .224155 aline .126365 .225425 aline .12446 .22606 aline .12192 .226695 aline .121285 .22733 aline .11811 .22733 aline .117475 .227965 aline .10922 .227965 aline .108585 .2286 aline .088265 .2286 aline .08636 .230505 aline .08636 .234315 aline .086995 .236855 aline .0889 .23876 aline .100965 .23876 closepath ! end of curve ! start of curve amove .117475 .183515 bezier .815288E-01 .180442 .487513E-01 .154101 .042545 .117475 bezier .367737E-01 .986564E-01 .397289E-01 .745972E-01 .05842 .0635 aline .06731 .059055 aline .073025 .05715 aline .078105 .05588 aline .08128 .055245 aline .081915 .05461 aline .08509 .05461 aline .860425E-01 .541338E-01 aline .864507E-01 .543379E-01 aline .118507 .182563 aline .11811 .18415 aline .117475 .183515 closepath ! end of curve ! start of curve amove .14605 .18288 aline .145415 .18034 aline .1143 .05588 aline .113824 .549275E-01 bezier .147233 .555245E-01 .18236 .801278E-01 .189865 .114935 bezier .197604 .135875 .19594 .16431 .173355 .175895 aline .169545 .1778 aline .16764 .178435 aline .16637 .17907 aline .15875 .18161 aline .1524 .18288 aline .151765 .183515 aline .14859 .183515 aline .14732 .183938 aline .146431 .183642 closepath ! end of curve fill dfont endchar dfont char=9 !-------------- Beginning of new char. dfont wid=.612223 hei=.683332 dep=0 italic=.110001 dfont fby=":" kadd=-.0555553 dfont fby=";" kadd=-.0555553 dfont fby="=" kadd=-.0555553 dfont fby=127 kadd=.0555573 set path ! start of curve newpath ! start of curve amove .09271 .23876 aline .093345 .238125 aline .128905 .238125 aline .12954 .23749 aline .14605 .23749 aline .146685 .238125 aline .18288 .238125 aline .183515 .23876 aline .193675 .23876 aline .19558 .236855 aline .19558 .23368 aline .194945 .23114 aline .19431 .22987 bezier .180472 .226604 .165097 .230658 .151765 .22479 aline .14859 .221615 aline .146685 .217805 aline .14605 .2159 aline .106283 .568325E-01 aline .106589 .556078E-01 bezier .149171 .646628E-01 .171149 .108433 .179705 .147955 bezier .185482 .166668 .194358 .18871 .215265 .193675 aline .240665 .193675 aline .24257 .19177 aline .24257 .188595 aline .240665 .18669 bezier .216948 .185207 .209825 .157167 .20447 .137795 bezier .193411 .901883E-01 .153316 .506054E-01 .103858 .464256E-01 aline .103505 .04572 aline .09779 .02286 bezier .937524E-01 .016341 .099481 .943981E-02 .10668 .010795 aline .107315 .01016 aline .114935 .01016 aline .11557 .009525 aline .13589 .009525 aline .13716 .00889 aline .137795 .008255 aline .13843 .006985 aline .13843 .00508 aline .137795 .00254 aline .136525 0 aline .135255 -.000635 aline .123825 -.000635 aline .12319 0 aline .086995 0 aline .08636 .000635 aline .06985 .000635 aline .069215 0 aline .03302 0 aline .032385 -.000635 aline .02286 -.000635 aline .02159 0 aline .02032 .00254 aline .02032 .003175 aline .020955 .005715 aline .02159 .00762 aline .023495 .009525 bezier .383129E-01 .103562E-01 .539729E-01 .717217E-02 .066675 .01524 aline .06731 .01651 aline .067945 .017145 aline .06985 .020955 aline .759619E-01 .454025E-01 aline .075565 .04699 bezier .476635E-01 .492439E-01 .205134E-01 .716947E-01 .02032 .100965 bezier .015019 .126454 .308559E-01 .151899 .026035 .17653 bezier .250389E-01 .184751 .168146E-01 .186168 .010795 .18796 aline .01016 .18923 aline .01016 .191135 aline .010795 .192405 aline .01143 .19304 bezier .248738E-01 .193432 .441325E-01 .198091 .051435 .18288 bezier .613712E-01 .149348 .357321E-01 .116002 .04826 .08255 bezier .517548E-01 .680605E-01 .642743E-01 .582393E-01 .078105 .05461 aline .07874 .056515 aline .118745 .216535 aline .11938 .21717 aline .11938 .22352 aline .118745 .224155 aline .11811 .225425 aline .116205 .22606 aline .113665 .226695 aline .11303 .22733 aline .109855 .22733 aline .10922 .227965 aline .100965 .227965 aline .10033 .2286 aline .08001 .2286 aline .078105 .230505 aline .078105 .234315 aline .07874 .236855 aline .080645 .23876 aline .09271 .23876 closepath ! end of curve fill dfont endchar dfont char=10 !-------------- Beginning of new char. dfont wid=.772398 hei=.683332 dep=0 italic=.0501728 dfont fby=127 kadd=.0833359 set path ! start of curve newpath ! start of curve amove .197485 .24638 bezier .232549 .2451 .271666 .221258 .27559 .183515 bezier .279262 .136109 .241036 .101779 .212725 .069215 bezier .199538 .542551E-01 .184447 .388515E-01 .1778 .02032 aline .21336 .02032 bezier .219908 .210496E-01 .228321 .218646E-01 .230505 .029845 aline .23114 .03048 aline .23368 .03556 aline .234315 .036195 aline .243205 .053975 aline .244475 .05461 aline .248285 .05461 aline .249555 .053975 aline .250825 .051435 aline .250825 .0508 aline .25019 .048895 aline .23876 .026035 aline .238125 .02413 aline .22606 0 aline .22479 -.000635 aline .1651 -.000635 aline .163195 .00127 bezier .175354 .613574E-01 .226967 .103235 .240665 .163195 bezier .249088 .189933 .238978 .227857 .207645 .23622 bezier .158743 .250239 .107225 .210297 .09525 .16256 bezier .786395E-01 .10836 .108395 .541772E-01 .092075 0 aline .090805 -.000635 aline .031115 -.000635 aline .02921 .00127 aline .02921 .051435 aline .03048 .053975 aline .03175 .05461 aline .03556 .05461 aline .03683 .053975 aline .0381 .051435 aline .0381 .0508 aline .037465 .050165 aline .037465 .036195 aline .0381 .03556 aline .0381 .026035 aline .038735 .0254 aline .392994E-01 .225778E-01 aline .040005 .022225 aline .04318 .02159 aline .043815 .020955 aline .048895 .020955 aline .04953 .02032 aline .08763 .02032 bezier .090907 .637735E-01 .518651E-01 .102663 .05842 .146685 bezier .636253E-01 .202564 .120045 .239213 .17145 .245745 aline .1778 .245745 aline .178435 .24638 aline .197485 .24638 closepath ! end of curve fill dfont endchar dfont char=11 !-------------- Beginning of new char. dfont wid=.639702 hei=.430555 dep=0 italic=.00370216 dfont fby=127 kadd=.0277786 set path ! start of curve newpath ! start of curve amove .11557 .15367 bezier .144311 .151704 .165269 .124019 .167005 .09652 aline .167005 .06858 aline .16764 .067945 aline .16764 .061595 bezier .176589 .698188E-01 .183465 .849824E-01 .189865 .097155 bezier .196081 .109399 .199126 .124006 .20447 .13589 aline .205105 .136525 aline .20955 .136525 aline .211455 .13462 bezier .205005 .102219 .188925 .716129E-01 .16764 .04699 bezier .168391 .316432E-01 .164874 .140432E-01 .17653 .00254 bezier .188508 .16991E-02 .196185 .129719E-01 .200025 .02286 aline .201295 .023495 aline .205105 .023495 aline .206375 .02286 bezier .208205 .413503E-02 .183494 -.103441E-01 .16637 -.00254 bezier .154914 .002069 .148622 .133954E-01 .145415 .024765 bezier .116319 .211778E-03 .692248E-01 -.176854E-01 .03556 .00762 bezier .149712E-02 .379491E-01 .151301E-01 .938598E-01 .04445 .122555 bezier .620637E-01 .142096 .886632E-01 .155768 .11557 .15367 closepath ! end of curve ! start of curve amove .10414 .14605 bezier .649127E-01 .138438 .497289E-01 .949403E-01 .04318 .05969 bezier .374916E-01 .394322E-01 .415503E-01 .722037E-02 .06731 .00254 bezier .953796E-01 .140341E-02 .123371 .149234E-01 .144145 .033655 aline .144145 .08763 bezier .142427 .106913 .141372 .133408 .121285 .144145 aline .117475 .145415 aline .1143 .14605 aline .113665 .146685 aline .104775 .146685 aline .10414 .14605 closepath ! end of curve fill dfont endchar dfont char=12 !-------------- Beginning of new char. dfont wid=.565626 hei=.694445 dep=.194445 italic=.0527782 dfont fby=127 kadd=.0833359 set path ! start of curve newpath ! start of curve amove .16637 .24638 bezier .191532 .245102 .211681 .21908 .20574 .19431 bezier .204031 .171268 .187438 .152258 .16891 .140335 bezier .202673 .116795 .19626 .668614E-01 .17399 .037465 bezier .150211 .260483E-02 .098155 -.202257E-01 .061595 .00762 bezier .528548E-01 .150909E-01 .046553 .245696E-01 .04318 .03556 aline .01778 -.06604 aline .017145 -.067945 aline .01651 -.06858 aline .01524 -.069215 aline .010795 -.069215 aline .009525 -.067945 aline .00889 -.066675 aline .00889 -.065405 aline .04953 .097155 aline .064135 .155575 bezier .076512 .197951 .108346 .240315 .154305 .24638 aline .16637 .24638 closepath ! end of curve ! start of curve amove .154305 .23876 bezier .111356 .232954 .840186E-01 .191397 .07239 .1524 aline .051435 .06858 bezier .434694E-01 .423637E-01 .594218E-01 .647945E-02 .09017 .003175 bezier .124159 -.267707E-02 .150005 .030338 .158115 .060325 bezier .164571 .848857E-01 .175125 .113323 .15621 .13462 bezier .141718 .128791 .124717 .1286 .109855 .132715 aline .10668 .13589 aline .106045 .137795 aline .106045 .140335 aline .10668 .14224 aline .107315 .14351 aline .109855 .14605 bezier .12472 .151938 .142575 .151337 .15748 .14605 bezier .177739 .164019 .186409 .19364 .184785 .219075 bezier .181868 .232552 .167709 .242533 .154305 .23876 closepath ! end of curve ! start of curve amove .12446 .14224 aline .120015 .14224 aline .11938 .141605 aline .11557 .140335 aline .115094 .139382 bezier .12452 .13592 .137124 .135908 .146685 .140335 aline .14605 .14097 aline .144145 .141605 aline .14097 .14224 aline .140335 .142875 aline .125095 .142875 aline .12446 .14224 closepath ! end of curve fill dfont endchar dfont char=13 !-------------- Beginning of new char. dfont wid=.517731 hei=.430555 dep=.194445 italic=.0555553 set path ! start of curve newpath ! start of curve amove .080645 .15367 bezier .112542 .149654 .124088 .114272 .13081 .086995 bezier .134435 .729655E-01 .134275 .059192 .136525 .04572 bezier .145353 .701025E-01 .155611 .938923E-01 .16637 .117475 aline .18161 .147955 aline .183515 .14986 aline .18796 .14986 aline .188595 .149225 aline .189865 .14859 aline .189865 .14478 aline .17526 .11557 bezier .159272 .805675E-01 .143729 .441664E-01 .13335 .00762 bezier .130545 -.019007 .124102 -.476872E-01 .1143 -.07366 aline .11176 -.0762 aline .11049 -.076835 aline .10795 -.076835 aline .10668 -.0762 aline .10541 -.07493 bezier .105178 -.047673 .116472 -.203452E-01 .12319 .00635 bezier .130493 .301357E-01 .127884 .566141E-01 .12319 .08001 bezier .11971 .10911 .922819E-01 .134576 .062865 .12827 bezier .410147E-01 .125461 .205958E-01 .10943 .014605 .08763 aline .012065 .08636 aline .009525 .08636 aline .008255 .086995 bezier .478553E-02 .950657E-01 .118511E-01 .104828 .01524 .112395 bezier .279067E-01 .135776 .526554E-01 .156317 .080645 .15367 closepath ! end of curve fill dfont endchar dfont char=14 !-------------- Beginning of new char. dfont wid=.444445 hei=.694445 dep=0 italic=.0378466 dfont fby=":" kadd=-.0555553 dfont fby=";" kadd=-.0555553 dfont fby=127 kadd=.0555573 set path ! start of curve newpath ! start of curve amove .127635 .24638 bezier .142445 .245015 .160656 .232024 .15875 .2159 bezier .149402 .211929 .150041 .225567 .14478 .22987 bezier .119723 .257118 .703353E-01 .220347 .08509 .188595 bezier .104742 .165977 .139115 .15158 .14224 .117475 bezier .144496 .772869E-01 .130812 .302707E-01 .09779 .00381 bezier .669887E-01 -.190468E-01 .171682E-01 .563626E-02 .01651 .04445 bezier .102405E-01 .909222E-01 .448721E-01 .136523 .088265 .15113 bezier .077845 .160726 .623718E-01 .16902 .061595 .184785 bezier .590741E-01 .219353 .939133E-01 .249597 .127635 .24638 closepath ! end of curve ! start of curve amove .094615 .14351 bezier .058301 .128581 .047886 .849969E-01 .041275 .0508 bezier .387732E-01 .03256 .444769E-01 .788831E-02 .065405 .00254 bezier .938122E-01 -.109356E-02 .10985 .027473 .118745 .050165 bezier .127614 .738079E-01 .1359 .101123 .11811 .122555 aline .117475 .123825 aline .11557 .12573 aline .114935 .127 aline .102235 .1397 aline .100965 .140335 aline .09779 .14351 aline .962025E-01 .143907 closepath ! end of curve fill dfont endchar dfont char=15 !-------------- Beginning of new char. dfont wid=.405904 hei=.430555 dep=0 italic=0 dfont fby=127 kadd=.0555573 set path ! start of curve newpath ! start of curve amove .12954 .14986 aline .13081 .149225 aline .13208 .147955 aline .132715 .14605 aline .132715 .14478 aline .13208 .14224 aline .13081 .14097 aline .12827 .1397 bezier .105114 .141599 .793519E-01 .138338 .06477 .11811 bezier .579977E-01 .109909 .526483E-01 .099081 .0508 .0889 aline .114935 .0889 aline .11684 .086995 aline .117475 .08509 aline .117475 .08382 aline .11684 .08128 aline .116205 .080645 aline .114935 .08001 aline .1143 .079375 aline .112395 .07874 aline .047625 .07874 bezier .410875E-01 .554671E-01 .391631E-01 .244902E-01 .061595 .008255 bezier .820062E-01 -.52692E-02 .105317 .808357E-02 .123825 .018415 bezier .131211 .144186E-01 .123587 .81937E-02 .118745 .00635 bezier .847418E-01 -.167793E-01 .305554E-01 -.197764E-02 .02032 .040005 bezier .102294E-01 .762567E-01 .271311E-01 .117582 .060325 .13589 bezier .072253 .143846 .870892E-01 .14818 .100965 .14986 closepath ! end of curve fill dfont endchar dfont char=16 !-------------- Beginning of new char. dfont wid=.437502 hei=.694445 dep=.194445 italic=.0737839 dfont fby=127 kadd=.0833359 set path ! start of curve newpath ! start of curve amove .11176 .24384 aline .113665 .243205 aline .114935 .241935 bezier .114992 .232761 .111293 .222625 .116205 .21336 aline .11684 .21209 bezier .130714 .218119 .147424 .216726 .161925 .21336 bezier .171317 .208816 .163703 .197595 .155575 .197485 bezier .142315 .196909 .124981 .192158 .113665 .202565 bezier .679772E-01 .172827 .369005E-01 .117981 .034925 .064135 bezier .355765E-01 .446742E-01 .469818E-01 .233404E-01 .06731 .017145 bezier .871295E-01 .865681E-02 .110878 .671831E-02 .127 -.008255 bezier .149887 -.348953E-01 .119939 -.083055 .085725 -.071755 bezier .770491E-01 -.686745E-01 .657893E-01 -.642625E-01 .062865 -.055245 bezier .678251E-01 -.479555E-01 .734631E-01 -.593486E-01 .07874 -.06096 bezier .891846E-01 -.672802E-01 .10448 -.691553E-01 .11176 -.05715 bezier .12197 -.441577E-01 .115276 -.246037E-01 .099695 -.019685 aline .05969 -.00635 bezier .350027E-01 .118747E-02 .169729E-01 .248459E-01 .01651 .050165 bezier .144111E-01 .114518 .553441E-01 .176117 .108373 .20955 aline .10668 .21463 aline .10541 .22098 aline .10541 .231775 aline .106045 .23241 aline .106045 .23622 aline .10668 .239395 aline .107315 .2413 aline .10922 .243205 aline .111125 .24384 closepath ! end of curve ! start of curve amove .12954 .20828 aline .126365 .207645 aline .123825 .20701 aline .122555 .206375 aline .12192 .20574 bezier .133027 .201038 .14641 .202757 .15748 .206375 aline .15621 .20701 aline .15367 .207645 aline .153035 .20828 aline .14859 .20828 aline .147955 .208915 aline .130175 .208915 closepath ! end of curve fill dfont endchar dfont char=17 !-------------- Beginning of new char. dfont wid=.496531 hei=.430555 dep=.194445 italic=.0358791 dfont fby=127 kadd=.0555573 set path ! start of curve newpath ! start of curve amove .051435 .15367 bezier .066738 .152215 .789739E-01 .138745 .079375 .123825 bezier .097342 .150876 .139489 .165803 .165735 .14224 bezier .176117 .130022 .174611 .113335 .172085 .09906 aline .131445 -.0635 bezier .131875 -.757851E-01 .111366 -.830871E-01 .107315 -.06985 aline .107315 -.06604 aline .10795 -.062865 aline .14859 .099695 bezier .152229 .11448 .156831 .136518 .140335 .145415 bezier .111648 .151797 .864019E-01 .1264 .075565 .1016 aline .051435 .00508 bezier .490482E-01 -.465312E-02 .330649E-01 -.872363E-02 .028575 .00127 aline .028575 .008255 aline .05588 .117475 bezier .578901E-01 .12689 .603257E-01 .141668 .048895 .146685 bezier .302423E-01 .146642 .262901E-01 .12357 .02159 .10922 aline .01905 .09906 aline .018415 .09779 aline .01778 .097155 aline .01651 .09652 aline .0127 .09652 aline .012065 .097155 aline .010795 .09779 bezier .139408E-01 .118027 .190329E-01 .144216 .040005 .153035 aline .04318 .15367 closepath ! end of curve fill dfont endchar dfont char=18 !-------------- Beginning of new char. dfont wid=.469444 hei=.694445 dep=0 italic=.0277786 dfont fby=127 kadd=.0833359 set path ! start of curve newpath ! start of curve amove .122555 .24638 bezier .153077 .241326 .158658 .204311 .16002 .179705 bezier .158709 .116423 .136162 .442332E-01 .083185 .00381 bezier .658983E-01 -.912086E-02 .384446E-01 -.724123E-02 .027305 .0127 bezier .549045E-02 .582043E-01 .170862E-01 .107532 .032385 .15367 bezier .477702E-01 .190171 .068487 .230065 .107315 .24511 aline .109855 .245745 aline .11303 .245745 aline .113665 .24638 closepath ! end of curve ! start of curve amove .1143 .23876 bezier .091371 .231122 .820256E-01 .205943 .071755 .186055 bezier .636349E-01 .166994 .566589E-01 .146636 .05334 .126365 aline .125095 .126365 bezier .133759 .159956 .142986 .193703 .132715 .22733 aline .12954 .23368 aline .126365 .236855 aline .123825 .238125 aline .12192 .23876 aline .121285 .239395 aline .114935 .239395 closepath ! end of curve ! start of curve amove .04953 .1143 bezier .416219E-01 .789975E-01 .299045E-01 .425835E-01 .04572 .008255 bezier .591466E-01 -.634746E-02 .780457E-01 .109953E-01 .085725 .023495 bezier .10406 .508098E-01 .115941 .833195E-01 .12192 .11557 aline .050165 .11557 closepath ! end of curve fill dfont endchar dfont char=19 !-------------- Beginning of new char. dfont wid=.353937 hei=.430555 dep=0 italic=0 dfont fby=127 kadd=.0555573 set path ! start of curve newpath ! start of curve amove .06985 .15367 aline .07239 .153035 aline .073025 .1524 aline .074295 .151765 aline .0762 .14986 aline .076835 .14859 bezier .771868E-01 .129935 .068446 .111709 .06477 .093345 bezier .585278E-01 .660092E-01 .445874E-01 .397811E-01 .04064 .0127 bezier .407145E-01 .585842E-02 .478255E-01 -.136884E-03 .05461 .003175 bezier .793936E-01 .61114E-02 .995015E-01 .270028E-01 .106045 .0508 aline .10795 .052705 aline .11176 .052705 aline .11303 .05207 aline .1143 .0508 bezier .108405 .172291E-01 .716426E-01 -.116233E-01 .037465 -.00254 bezier .166277E-01 .568216E-02 .017692 .314312E-01 .02667 .04826 bezier .038944 .809739E-01 .045852 .115674 .056515 .14859 aline .057785 .14986 aline .059055 .150495 aline .060325 .151765 aline .062865 .153035 aline .065405 .15367 closepath ! end of curve fill dfont endchar dfont char=20 !-------------- Beginning of new char. dfont wid=.576159 hei=.430555 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .06985 .15367 aline .07239 .153035 aline .073025 .1524 aline .074295 .151765 aline .0762 .14986 aline .076835 .14859 aline .07747 .146685 aline .07747 .142875 aline .076835 .1397 aline .06477 .09144 aline .642937E-01 .904875E-01 bezier .850555E-01 .095473 .102225 .115321 .120015 .12827 bezier .134767 .140711 .154547 .153726 .174625 .14859 bezier .191041 .137255 .169956 .111002 .154305 .121285 aline .153035 .12192 aline .150495 .12446 aline .14986 .12573 aline .149225 .127635 aline .149225 .135255 aline .14986 .137795 aline .150495 .13843 bezier .122775 .128378 .104233 .101476 .078105 .08763 bezier .10017 .844535E-01 .133256 .857353E-01 .144145 .060325 bezier .149958 .420668E-01 .132384 .210972E-01 .14605 .004445 bezier .161963 -.311202E-02 .173477 .167002E-01 .1778 .029845 aline .180975 .03937 aline .18161 .04191 aline .182245 .043815 aline .183515 .048895 aline .18415 .0508 aline .186055 .052705 aline .189865 .052705 aline .191135 .05207 aline .192405 .0508 bezier .188227 .293148E-01 .180057 .170539E-02 .15621 -.004445 bezier .134828 -.82978E-02 .115828 .130552E-01 .120015 .03302 bezier .12025 .439734E-01 .125556 .540793E-01 .117475 .0635 bezier .102655 .776628E-01 .811115E-01 .793072E-01 .06223 .08001 aline .061595 .07874 aline .04318 .00508 bezier .407932E-01 -.465312E-02 .248099E-01 -.872363E-02 .02032 .00127 aline .02032 .008255 aline .05461 .145415 aline .055245 .146685 aline .05588 .14732 aline .056515 .14859 aline .057785 .14986 aline .059055 .150495 aline .060325 .151765 aline .062865 .153035 aline .065405 .15367 closepath ! end of curve fill dfont endchar dfont char=21 !-------------- Beginning of new char. dfont wid=.583336 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .07366 .24257 bezier .089147 .241631 .107858 .233878 .11176 .216535 bezier .137804 .145742 .161025 .735896E-01 .18923 .00381 aline .192405 .000635 aline .192405 -.003175 aline .191135 -.00381 aline .1905 -.004445 aline .17145 -.004445 bezier .155642 .458488E-02 .155231 .250015E-01 .147955 .040005 bezier .140613 .603289E-01 .133888 .810982E-01 .12573 .100965 bezier .956445E-01 .664814E-01 .669724E-01 .305153E-01 .036195 -.003175 bezier .026448 -.106401E-01 .133257E-01 .272517E-02 .02159 .012065 aline .046355 .03683 aline .047625 .037465 aline .09652 .08636 aline .09779 .086995 aline .12192 .111125 bezier .109311 .148913 .958862E-01 .18807 .080645 .225425 aline .08001 .22606 aline .079375 .22733 aline .07874 .227965 aline .078105 .229235 aline .074295 .233045 aline .073025 .23368 aline .069215 .23495 aline .06858 .235585 aline .064135 .235585 aline .06223 .23749 aline .06223 .240665 aline .0635 .241935 aline .06477 .24257 aline .07366 .24257 closepath ! end of curve fill dfont endchar dfont char=22 !-------------- Beginning of new char. dfont wid=.60255 hei=.430555 dep=.194445 italic=0 dfont fby=127 kadd=.0277786 set path ! start of curve newpath ! start of curve amove .079375 .15367 aline .081915 .153035 aline .08255 .1524 aline .08382 .151765 aline .085725 .14986 aline .08636 .14859 aline .086995 .146685 aline .086995 .142875 aline .08636 .1397 aline .06477 .05334 bezier .601495E-01 .369133E-01 .592114E-01 .101717E-01 .08001 .00381 bezier .102904 -.251776E-02 .123852 .170917E-01 .133985 .036195 aline .16002 .140335 bezier .162407 .150068 .17839 .154139 .18288 .144145 aline .18288 .13716 aline .156845 .03302 bezier .154214 .233029E-01 .152189 .008314 .163195 .00254 bezier .181558 .208581E-02 .185823 .247136E-01 .1905 .038735 aline .19304 .048895 aline .193675 .0508 aline .19558 .052705 aline .19939 .052705 aline .20066 .05207 aline .20193 .0508 bezier .197638 .303008E-01 .192991 .173118E-02 .169545 -.004445 bezier .153263 -.672397E-02 .1367 .413634E-02 .13335 .02032 bezier .116148 -.401479E-02 .813321E-01 -.125595E-01 .05588 .00381 aline .05334 .00635 aline .052705 .00508 aline .03429 -.06858 bezier .306754E-01 -.796373E-01 .94732E-02 -.800786E-01 .01143 -.06604 aline .012065 -.062865 aline .052705 .099695 aline .064135 .145415 aline .06477 .146685 aline .065405 .14732 aline .06604 .14859 aline .06731 .14986 aline .06858 .150495 aline .06985 .151765 aline .07239 .153035 aline .07493 .15367 closepath ! end of curve fill dfont endchar dfont char=23 !-------------- Beginning of new char. dfont wid=.493983 hei=.430555 dep=0 italic=.0636578 dfont fby=":" kadd=-.0555553 dfont fby=";" kadd=-.0555553 dfont fby=127 kadd=.0277786 set path ! start of curve newpath ! start of curve amove .076835 .15367 aline .078105 .153035 aline .079375 .150495 aline .079375 .14986 aline .045085 .0127 aline .446617E-01 .01143 aline .045085 .01016 bezier .105941 .311224E-01 .146008 .883086E-01 .16256 .14859 bezier .168301 .156873 .185548 .155011 .183515 .142875 bezier .165533 .706047E-01 .102037 .130029E-01 .02921 -.000635 aline .276225E-01 -.238125E-03 aline .026035 -.000635 aline .02159 -.000635 aline .02032 0 aline .01905 .00254 aline .01905 .003175 aline .050165 .127635 aline .0508 .12827 aline .0508 .131445 aline .051181 .13335 aline .0508 .135255 aline .050165 .13716 aline .04826 .137795 aline .04572 .13843 aline .045085 .139065 aline .04064 .139065 aline .040005 .1397 aline .027305 .1397 aline .0254 .141605 aline .0254 .145415 aline .026035 .147955 aline .02794 .14986 bezier .423685E-01 .151045 .569465E-01 .151869 .07112 .15367 closepath ! end of curve fill dfont endchar dfont char=24 !-------------- Beginning of new char. dfont wid=.437502 hei=.694445 dep=.194445 italic=.0460072 dfont fby=127 kadd=.111115 set path ! start of curve newpath ! start of curve amove .1016 .24384 aline .103505 .243205 aline .104775 .241935 bezier .10508 .23304 .100768 .222857 .106045 .213995 bezier .120811 .216351 .139053 .218229 .15367 .21209 bezier .161333 .204973 .14986 .196133 .14224 .197485 bezier .1296 .195711 .113037 .193505 .102235 .202988 bezier .723902E-01 .188709 .500411E-01 .143898 .07493 .116205 bezier .919293E-01 .122254 .111671 .122497 .128905 .117475 aline .13208 .1143 aline .13208 .10922 aline .131445 .10795 aline .12827 .104775 bezier .108846 .097808 .873217E-01 .100994 .067945 .104775 bezier .452029E-01 .917603E-01 .260311E-01 .670244E-01 .026035 .040005 bezier .345822E-01 .122141E-01 .681507E-01 .99431E-02 .090805 -.00127 bezier .106519 -.823251E-02 .130143 -.110696E-01 .132715 -.03175 bezier .135823 -.563031E-01 .110703 -.787371E-01 .086995 -.07239 bezier .762526E-01 -.705373E-01 .666021E-01 -.651766E-01 .05842 -.05842 aline .05842 -.05461 aline .060325 -.052705 aline .062865 -.052705 bezier .756189E-01 -.621392E-01 .976793E-01 -.741005E-01 .109855 -.05842 bezier .117826 -.493319E-01 .113605 -.347494E-01 .1016 -.03175 bezier .758751E-01 -.205185E-01 .470251E-01 -.144783E-01 .02413 .001905 bezier -.317748E-02 .238831E-01 .996212E-02 .634619E-01 .029845 .085725 bezier .385928E-01 .951403E-01 .048207 .103354 .059055 .109855 bezier .320323E-01 .123082 .300805E-01 .160647 .048895 .18161 bezier .060349 .197609 .794868E-01 .206433 .969433E-01 .21336 aline .09652 .21463 aline .09525 .22098 aline .09525 .231775 aline .095885 .23241 aline .095885 .23622 aline .09652 .239395 aline .097155 .2413 aline .09906 .243205 aline .100965 .24384 closepath ! end of curve ! start of curve amove .11811 .20828 aline .114935 .20828 aline .1143 .207645 aline .11176 .20701 aline .111125 .206375 bezier .122014 .200609 .136096 .20281 .14732 .206375 aline .14605 .20701 aline .14351 .207645 aline .142875 .20828 aline .13843 .20828 aline .137795 .208915 aline .118745 .208915 aline .11811 .20828 closepath ! end of curve ! start of curve amove .09398 .11303 aline .089535 .11303 aline .0889 .112395 aline .085725 .11176 aline .084201 .111252 bezier .939685E-01 .105655 .109372 .107733 .12065 .109855 aline .12319 .111125 aline .122555 .11176 aline .120015 .112395 aline .11938 .11303 aline .1143 .11303 aline .113665 .113665 aline .094615 .113665 aline .09398 .11303 closepath ! end of curve fill dfont endchar dfont char=25 !-------------- Beginning of new char. dfont wid=.570027 hei=.430555 dep=0 italic=.0358791 set path ! start of curve newpath ! start of curve amove .192405 .14986 bezier .203162 .147338 .198735 .131254 .18923 .130175 aline .14224 .130175 bezier .132447 .917811E-01 .13072 .502539E-01 .14732 .012065 bezier .151557 -.153208E-02 .128807 -.120418E-01 .123825 .00254 bezier .110017 .452952E-01 .124236 .873628E-01 .13208 .130175 aline .09398 .130175 aline .093345 .12827 aline .080645 .07747 bezier .073069 .519025E-01 .686975E-01 .249268E-01 .057785 .000635 bezier .051374 -.914225E-02 .322556E-01 -.39131E-02 .037465 .00889 bezier .554488E-01 .048146 .743028E-01 .881198E-01 .08382 .130175 bezier .662861E-01 .130681 .476292E-01 .131605 .033655 .11938 bezier .267465E-01 .113467 .218637E-01 .106094 .01651 .09906 aline .01143 .09906 bezier .736483E-02 .106158 .017015 .112933 .019685 .11938 bezier .029685 .13283 .420568E-01 .147052 .05969 .14986 closepath ! end of curve fill dfont endchar dfont char=26 !-------------- Beginning of new char. dfont wid=.517015 hei=.430555 dep=.194445 italic=0 dfont fby=127 kadd=.0833359 set path ! start of curve newpath ! start of curve amove .13335 .15367 bezier .157198 .151706 .175233 .129155 .17653 .106045 bezier .18065 .056991 .145929 .371194E-02 .095885 -.004445 bezier .793344E-01 -.687639E-02 .636254E-01 .318636E-02 .561975E-01 .176213E-01 aline .557893E-01 .174171E-01 aline .03429 -.06858 bezier .306754E-01 -.796373E-01 .94732E-02 -.800786E-01 .01143 -.06604 aline .012065 -.062865 aline .047625 .079375 bezier .586095E-01 .117176 .912615E-01 .15538 .13335 .15367 closepath ! end of curve ! start of curve amove .123825 .14605 bezier .935099E-01 .139266 .786505E-01 .106618 .07112 .07874 aline .060325 .03556 bezier .604678E-01 .150247E-01 .826534E-01 -.579146E-02 .10287 .005715 bezier .137579 .240459E-01 .144255 .686419E-01 .151765 .10287 bezier .153241 .119438 .150079 .141783 .131445 .146685 aline .12446 .146685 aline .123825 .14605 closepath ! end of curve fill dfont endchar dfont char=27 !-------------- Beginning of new char. dfont wid=.571414 hei=.430555 dep=0 italic=.0358791 dfont fby=":" kadd=-.0555553 dfont fby=";" kadd=-.0555553 set path ! start of curve newpath ! start of curve amove .19304 .14986 bezier .203797 .147338 .19937 .131254 .189865 .130175 aline .14478 .130175 bezier .148402 .121534 .153626 .111004 .154305 .100965 bezier .16055 .472817E-01 .112134 -.106537E-01 .056515 -.00381 bezier .277005E-01 .179345E-03 .988068E-02 .315368E-01 .01524 .05842 bezier .193121E-01 .102032 .541804E-01 .143274 .09779 .14986 closepath ! end of curve ! start of curve amove .094615 .12954 bezier .549753E-01 .125023 .397084E-01 .799286E-01 .03556 .046355 bezier .033495 .280886E-01 .042881 .523325E-02 .062865 .00254 bezier .100534 .202773E-02 .123107 .408095E-01 .12954 .074295 bezier .134715 .919726E-01 .135551 .117452 .11557 .127 aline .109855 .128905 aline .10922 .12954 aline .10541 .12954 aline .104775 .130175 aline .09525 .130175 aline .094615 .12954 closepath ! end of curve fill dfont endchar dfont char=28 !-------------- Beginning of new char. dfont wid=.437155 hei=.430555 dep=0 italic=.113195 dfont fby=":" kadd=-.0555553 dfont fby=";" kadd=-.0555553 dfont fby=127 kadd=.0277786 set path ! start of curve newpath ! start of curve amove .173355 .14986 bezier .184112 .147338 .179685 .131254 .17018 .130175 aline .10414 .130175 bezier .942745E-01 .874796E-01 .884107E-01 .432972E-01 .07747 .000635 bezier .719872E-01 -.777113E-02 .548311E-01 -.696022E-02 .05588 .00508 bezier .675672E-01 .467928E-01 .818952E-01 .089375 .093345 .130175 aline .056515 .130175 bezier .391263E-01 .126678 .257526E-01 .113521 .01651 .09906 aline .01143 .09906 bezier .736483E-02 .106158 .017015 .112933 .019685 .11938 bezier .029685 .13283 .420568E-01 .147052 .05969 .14986 closepath ! end of curve fill dfont endchar dfont char=29 !-------------- Beginning of new char. dfont wid=.54028 hei=.430555 dep=0 italic=.0358791 dfont fby=127 kadd=.0277786 set path ! start of curve newpath ! start of curve amove .06096 .15367 bezier .814682E-01 .151967 .906419E-01 .127755 .08255 .11049 bezier .736226E-01 .081387 .545639E-01 .504129E-01 .06477 .02032 bezier .762984E-01 -.341415E-02 .109539 -.11262E-02 .127 .014605 bezier .151157 .375039E-01 .169235 .708396E-01 .169545 .104775 bezier .16696 .115564 .160194 .124424 .1524 .13208 bezier .146152 .147744 .170897 .162708 .18034 .14732 bezier .18966 .125026 .179889 .101605 .17526 .07874 bezier .164128 .437642E-01 .143176 .600616E-02 .10541 -.00381 bezier .802315E-01 -.751263E-02 .447627E-01 .936834E-03 .040005 .031115 bezier .356206E-01 .654265E-01 .569333E-01 .978862E-01 .06477 .130175 aline .06477 .139065 bezier .620633E-01 .150388 .488735E-01 .14689 .04191 .141605 bezier .285146E-01 .130325 .235381E-01 .11289 .01778 .097155 aline .01651 .09652 aline .0127 .09652 aline .012065 .097155 aline .010795 .09779 bezier .138195E-01 .121109 .274305E-01 .147868 .05207 .15367 closepath ! end of curve fill dfont endchar dfont char=30 !-------------- Beginning of new char. dfont wid=.595835 hei=.694445 dep=.194445 italic=0 dfont fby=127 kadd=.0833359 set path ! start of curve newpath ! start of curve amove .153035 .24257 aline .15367 .241935 aline .15494 .2413 aline .15494 .23749 aline .13462 .15621 aline .134197 .15494 bezier .147097 .152023 .165082 .15006 .17653 .1397 bezier .212022 .116296 .206223 .627463E-01 .178435 .03556 bezier .15777 .117827E-01 .126038 -.413177E-02 .094615 -.004445 aline .09398 -.00635 aline .078105 -.06985 aline .07747 -.071755 aline .076835 -.07239 aline .075565 -.073025 aline .07112 -.073025 aline .06985 -.071755 aline .069215 -.070485 aline .069215 -.069215 aline .08509 -.005715 aline .085725 -.00508 bezier .551721E-01 -.444619E-02 .021633 .016797 .018415 .04953 bezier .130742E-01 .107566 .717871E-01 .152238 .125095 .154305 aline .146685 .240665 aline .14859 .24257 aline .153035 .24257 closepath ! end of curve ! start of curve amove .118745 .14605 bezier .067541 .139859 .314035E-01 .816569E-01 .04318 .033655 bezier .486905E-01 .014727 .683684E-01 .28541E-02 .086995 .00254 aline .08763 .004445 aline .122555 .144145 aline .122978 .145415 aline .122555 .146685 aline .11938 .146685 aline .118745 .14605 closepath ! end of curve ! start of curve amove .13208 .14605 aline .131445 .14351 aline .09652 .00381 aline .095885 .003175 bezier .129944 .410676E-02 .161265 .314482E-01 .172085 .064135 bezier .181947 .887898E-01 .183727 .121905 .15875 .13843 bezier .150736 .143068 .140794 .147565 .13208 .14605 closepath ! end of curve fill dfont endchar dfont char=31 !-------------- Beginning of new char. dfont wid=.625692 hei=.430555 dep=.194445 italic=0 dfont fby=127 kadd=.0555573 set path ! start of curve newpath ! start of curve amove .05715 .15367 bezier .756828E-01 .152852 .923515E-01 .139846 .09652 .121285 bezier .105682 .100414 .111382 .778911E-01 .118745 .056515 bezier .147105 .874212E-01 .174108 .119777 .2032 .14986 aline .20574 .14986 aline .20701 .149225 aline .20828 .147955 aline .20828 .14351 bezier .179326 .110872 .148868 .790049E-01 .121523 .454025E-01 bezier .131998 .945768E-02 .142158 -.274645E-01 .16129 -.05969 bezier .170032 -.734471E-01 .188343 -.608922E-01 .1905 -.04826 aline .19304 -.04699 bezier .203087 -.464033E-01 .196628 -.582556E-01 .19304 -.06223 bezier .173488 -.833189E-01 .132159 -.724391E-01 .125095 -.04445 bezier .115341 -.221351E-01 .108364 .135777E-02 .1016 .024765 bezier .736359E-01 -.663835E-02 .457958E-01 -.386019E-01 .017145 -.069215 aline .01397 -.069215 aline .013335 -.06858 aline .012065 -.067945 aline .01143 -.066675 bezier .138651E-01 -.566633E-01 .249175E-01 -.505754E-01 .03048 -.04191 bezier .535242E-01 -.165751E-01 .763777E-01 .889729E-02 .989012E-01 .346075E-01 bezier .866599E-01 .072041 .783043E-01 .112932 .05461 .14478 bezier .434433E-01 .15106 .032114 .138126 .028575 .12827 aline .027305 .127635 bezier .179045E-01 .126287 .223591E-01 .137798 .026035 .141605 aline .031115 .146685 aline .032385 .14732 aline .033655 .14859 aline .034925 .149225 aline .03556 .14986 aline .03937 .151765 aline .04318 .153035 aline .046355 .15367 aline .05715 .15367 closepath ! end of curve fill dfont endchar dfont char=32 !-------------- Beginning of new char. dfont wid=.651392 hei=.694445 dep=.194445 italic=.0358791 dfont fby=127 kadd=.111115 set path ! start of curve newpath ! start of curve amove .168275 .24257 aline .169545 .241935 aline .17018 .2413 aline .17018 .236855 aline .12954 .074295 aline .111998 .41275E-02 aline .112395 .00254 bezier .160116 .302543E-02 .197271 .468836E-01 .20828 .090805 bezier .210603 .106814 .202762 .121625 .191135 .13208 bezier .184887 .147744 .209632 .162708 .219075 .14732 bezier .228193 .125854 .219118 .103293 .21463 .08128 bezier .2021 .407765E-01 .169317 .532459E-02 .127 -.00381 aline .122555 -.00381 aline .12192 -.004445 aline .109855 -.004445 aline .093345 -.070485 aline .09271 -.071755 aline .09144 -.073025 aline .086995 -.073025 aline .085725 -.07239 aline .08509 -.071755 aline .08509 -.06731 aline .10033 -.00635 aline .100753 -.507998E-02 bezier .905825E-01 -.160046E-02 .754618E-01 -.202557E-02 .06477 .00508 bezier .384726E-01 .160804E-01 .350796E-01 .488995E-01 .045085 .07239 bezier .501037E-01 .951397E-01 .660661E-01 .116773 .064135 .1397 bezier .617788E-01 .150876 .483608E-01 .146316 .04191 .141605 bezier .285146E-01 .130325 .235381E-01 .11289 .01778 .097155 aline .01651 .09652 aline .0127 .09652 aline .012065 .097155 aline .010795 .09779 bezier .138195E-01 .121109 .274305E-01 .147868 .05207 .15367 bezier .713621E-01 .157231 .890996E-01 .139317 .08509 .120015 bezier .785851E-01 .901372E-01 .571799E-01 .606993E-01 .064135 .03048 bezier .682101E-01 .131687E-01 .871307E-01 .449135E-02 .10287 .00381 aline .14351 .16637 aline .161925 .24003 aline .16256 .2413 aline .16383 .24257 aline .168275 .24257 closepath ! end of curve fill dfont endchar dfont char=33 !-------------- Beginning of new char. dfont wid=.622455 hei=.430555 dep=0 italic=.0358791 set path ! start of curve newpath ! start of curve amove .20066 .15367 bezier .217795 .145738 .212298 .123439 .21082 .10922 bezier .202828 .652785E-01 .185775 .140153E-01 .140335 -.00254 bezier .122366 -.910085E-02 .098348 -.116255E-02 .094615 .019685 aline .093345 .026035 aline .09271 .027305 bezier .785581E-01 .459549E-02 .481572E-01 -.141722E-01 .022225 .000635 bezier .799023E-03 .164862E-01 .44269E-02 .468446E-01 .006985 .069215 bezier .118412E-01 .987013E-01 .240932E-01 .127312 .04318 .14986 aline .046355 .14986 bezier .534369E-01 .144596 .042642 .1376 .04064 .13208 bezier .229449E-01 .101919 .405965E-02 .623505E-01 .024765 .029845 bezier .442733E-01 .883318E-02 .768336E-01 .261069E-01 .089535 .046355 bezier .960659E-01 .053223 .933997E-01 .632857E-01 .095885 .071755 bezier .992158E-01 .820209E-01 .982569E-01 .101369 .11303 .100965 bezier .123128 .953661E-01 .11496 .819328E-01 .113665 .073025 bezier .111132 .605754E-01 .100255 .489453E-01 .107315 .036195 bezier .114248 .158367E-01 .140075 .174949E-01 .15494 .027305 bezier .180657 .425815E-01 .19841 .730691E-01 .19812 .10287 bezier .195916 .114261 .189164 .124053 .180975 .13208 aline .18034 .133985 aline .18034 .140335 aline .18161 .144145 aline .182245 .14478 aline .18288 .14605 aline .18669 .14986 aline .18796 .150495 aline .18923 .151765 aline .19177 .153035 aline .19431 .15367 closepath ! end of curve fill dfont endchar dfont char=34 !-------------- Beginning of new char. dfont wid=.466318 hei=.430555 dep=0 italic=0 dfont fby=127 kadd=.0833359 set path ! start of curve newpath ! start of curve amove .112395 .15748 bezier .125901 .155511 .143181 .150765 .150495 .13843 bezier .150812 .129241 .138735 .125841 .13335 .132715 bezier .107504 .149631 .737488E-01 .14234 .04826 .127635 bezier .371871E-01 .120638 .319061E-01 .105156 .041275 .094615 aline .04572 .09017 bezier .530868E-01 .845804E-01 .614701E-01 .943713E-01 .06985 .09271 aline .070485 .093345 aline .075565 .093345 aline .0762 .09398 aline .090805 .09398 aline .09144 .093345 aline .097155 .093345 aline .10033 .09271 aline .102235 .092075 aline .104775 .090805 aline .107315 .088265 aline .10795 .085725 aline .10795 .084455 aline .107315 .08128 aline .103505 .07747 bezier .858312E-01 .710969E-01 .661127E-01 .747384E-01 .04826 .078105 bezier .294512E-01 .681479E-01 .915287E-02 .420564E-01 .024765 .02159 bezier .436624E-01 .296806E-02 .733974E-01 .57992E-02 .09652 .009525 bezier .109182 .118504E-01 .121291 .187242E-01 .127 .03048 aline .12827 .031115 aline .13081 .031115 aline .132715 .02921 bezier .127484 .82058E-02 .103882 -.295678E-02 .08382 -.006985 bezier .566989E-01 -.124666E-01 .174703E-01 -.414888E-02 .010795 .02794 bezier .632807E-02 .506572E-01 .226299E-01 .724673E-01 .04191 .083185 bezier .259319E-01 .924726E-01 .234471E-01 .115507 .03556 .128905 bezier .545927E-01 .150587 .847067E-01 .158765 .112395 .15748 closepath ! end of curve ! start of curve amove .0762 .08636 aline .07112 .08636 aline .070485 .085725 aline .06731 .085725 aline .066675 .08509 aline .064135 .084455 aline .06223 .08382 aline .061595 .083185 bezier .732581E-01 .080755 .880814E-01 .791318E-01 .09906 .084455 aline .098425 .08509 aline .09652 .085725 aline .095885 .08636 aline .09017 .08636 aline .089535 .086995 aline .076835 .086995 aline .0762 .08636 closepath ! end of curve fill dfont endchar dfont char=35 !-------------- Beginning of new char. dfont wid=.59144 hei=.694445 dep=0 italic=0 dfont fby=127 kadd=.0833359 set path ! start of curve newpath ! start of curve amove .1524 .24638 bezier .178555 .241698 .183932 .210366 .186055 .18923 bezier .187301 .166263 .183555 .145954 .18034 .123825 aline .18288 .12319 aline .19558 .12065 aline .197485 .118745 aline .197485 .11557 aline .19558 .113665 aline .192405 .113665 aline .19177 .1143 aline .188595 .1143 aline .186055 .114935 aline .179705 .116205 aline .178435 .116628 bezier .164174 .720304E-01 .144734 .212659E-01 .100965 -.001905 bezier .793925E-01 -.829516E-02 .482356E-01 -.397855E-02 .040005 .02032 bezier .367051E-01 .325125E-01 .038377 .443559E-01 .04064 .056515 aline .05588 .117475 bezier .578901E-01 .12689 .603257E-01 .141668 .048895 .146685 bezier .302423E-01 .146642 .262901E-01 .12357 .02159 .10922 aline .01905 .09906 aline .018415 .09779 aline .01778 .097155 aline .01651 .09652 aline .0127 .09652 aline .012065 .097155 aline .010795 .09779 bezier .139408E-01 .118027 .190329E-01 .144216 .040005 .153035 bezier .598446E-01 .158557 .821931E-01 .140608 .07874 .12065 aline .07874 .114935 aline .078105 .11176 aline .0635 .05334 bezier .593946E-01 .379934E-01 .555218E-01 .136354E-01 .07366 .00508 bezier .920586E-01 -.447552E-02 .109603 .129107E-01 .117475 .028575 bezier .136303 .568408E-01 .144573 .909029E-01 .15367 .12319 bezier .128824 .131879 .999106E-01 .147237 .09652 .175895 bezier .942107E-01 .205707 .112304 .240251 .14351 .24638 closepath ! end of curve ! start of curve amove .14351 .23876 bezier .117215 .232245 .104003 .201361 .104775 .17653 bezier .109519 .152092 .133122 .138085 .155067 .131191 bezier .162947 .164923 .172499 .199226 .159385 .23241 aline .15875 .233045 aline .158115 .234315 aline .155575 .236855 aline .153035 .238125 aline .15113 .23876 aline .150495 .239395 aline .144145 .239395 closepath ! end of curve fill dfont endchar dfont char=36 !-------------- Beginning of new char. dfont wid=.82813 hei=.430555 dep=0 italic=.0277786 set path ! start of curve newpath ! start of curve amove .28067 .14986 bezier .291427 .147338 .287 .131254 .277495 .130175 aline .26162 .130175 bezier .273056 .860353E-01 .251451 .323074E-01 .213995 .00508 bezier .194557 -.90695E-02 .160031 -.953773E-02 .150495 .01651 bezier .146362 .285813E-01 .1467 .408326E-01 .146685 .05334 bezier .13032 .217881E-01 .974459E-01 -.124497E-01 .05842 -.00254 bezier .359245E-01 .846655E-02 .394451E-01 .372959E-01 .04191 .05715 bezier .458589E-01 .841491E-01 .593521E-01 .108621 .760413E-01 .129222 bezier .538242E-01 .135134 .290597E-01 .121382 .018415 .100965 aline .01651 .09906 aline .01143 .09906 bezier .736483E-02 .106158 .017015 .112933 .019685 .11938 bezier .029685 .13283 .420568E-01 .147052 .05969 .14986 closepath ! end of curve ! start of curve amove .084455 .126365 bezier .639253E-01 .996553E-01 .04253 .638801E-01 .05334 .029845 bezier .598203E-01 .111787E-01 .821456E-01 .013525 .09652 .02032 bezier .129278 .352794E-01 .145695 .700709E-01 .156845 .102235 aline .16129 .102235 aline .16256 .1016 bezier .163866 .895072E-01 .157111 .781737E-01 .158115 .06604 bezier .155286 .474077E-01 .158841 .194215E-01 .18161 .01524 bezier .223642 .140713E-01 .249998 .585791E-01 .25654 .09525 aline .25654 .112395 aline .255905 .11303 aline .255905 .11684 aline .25527 .117475 aline .254 .123825 aline .253365 .12573 aline .25273 .12827 aline .252095 .130175 aline .088265 .130175 aline .084455 .126365 closepath ! end of curve fill dfont endchar dfont char=37 !-------------- Beginning of new char. dfont wid=.517015 hei=.430555 dep=.194445 italic=0 dfont fby=127 kadd=.0833359 set path ! start of curve newpath ! start of curve amove .13335 .15367 bezier .157198 .151706 .175233 .129155 .17653 .106045 bezier .18065 .056991 .145929 .371194E-02 .095885 -.004445 bezier .726281E-01 -.767892E-02 .050394 .957328E-02 .04572 .032385 bezier .410452E-01 .115038E-01 .349426E-01 -.806637E-02 .038735 -.02921 bezier .428721E-01 -.403305E-01 .056546 -.412378E-01 .06604 -.042545 aline .103505 -.042545 bezier .11418 -.444668E-01 .133133 -.410743E-01 .135255 -.056515 aline .135255 -.06223 aline .13462 -.062865 aline .13462 -.06604 aline .133985 -.067945 aline .13335 -.06858 aline .13208 -.069215 aline .127635 -.069215 aline .126365 -.067945 aline .12573 -.066675 aline .12573 -.065405 aline .126365 -.06477 aline .12573 -.064135 aline .125095 -.062865 bezier .960347E-01 -.557769E-01 .627138E-01 -.714053E-01 .036195 -.052705 bezier .208029E-01 -.377082E-01 .292599E-01 -.148846E-01 .03048 .003175 bezier .390566E-01 .398916E-01 .425663E-01 .817371E-01 .064135 .1143 bezier .080166 .136048 .104788 .15605 .13335 .15367 closepath ! end of curve ! start of curve amove .123825 .14605 bezier .877428E-01 .137194 .743571E-01 .958517E-01 .06731 .062865 bezier .624812E-01 .440924E-01 .611578E-01 .017847 .08001 .00508 bezier .101824 -.407904E-02 .121692 .174231E-01 .131445 .034925 bezier .143647 .061994 .15248 .091378 .151765 .12065 bezier .149637 .133996 .13897 .150175 .123825 .14605 closepath ! end of curve fill dfont endchar dfont char=38 !-------------- Beginning of new char. dfont wid=.362848 hei=.430555 dep=.0972233 italic=.0798597 dfont fby=127 kadd=.0833359 set path ! start of curve newpath ! start of curve amove .11684 .15367 bezier .125308 .152043 .136916 .152531 .14351 .145415 aline .14351 .14224 aline .142875 .14097 aline .140335 .13843 bezier .130443 .138711 .121258 .14577 .11176 .146685 bezier .739076E-01 .148804 .281872E-01 .12128 .029845 .079375 bezier .330663E-01 .613577E-01 .490593E-01 .507398E-01 .06477 .043815 bezier .804085E-01 .328662E-01 .101912 .283283E-01 .112395 .01143 bezier .12384 -.151346E-01 .945063E-01 -.484617E-01 .06604 -.03683 bezier .611933E-01 -.365086E-01 .537135E-01 -.305872E-01 .06096 -.027305 bezier .709551E-01 -.310202E-01 .838464E-01 -.358013E-01 .09144 -.024765 bezier .993694E-01 -.145569E-01 .948555E-01 .388729E-04 .083185 .00508 bezier .596453E-01 .202206E-01 .275506E-01 .276783E-01 .01524 .055245 bezier .100325E-02 .958794E-01 .359245E-01 .135414 .073025 .147955 aline .076835 .149225 aline .079375 .14986 aline .08128 .150495 aline .08382 .15113 aline .09017 .1524 aline .093345 .1524 aline .09398 .153035 aline .09906 .153035 aline .099695 .15367 aline .11684 .15367 closepath ! end of curve fill dfont endchar dfont char=39 !-------------- Beginning of new char. dfont wid=.654167 hei=.430555 dep=.194445 italic=0 dfont fby=127 kadd=.0833359 set path ! start of curve newpath ! start of curve amove .18288 .15367 bezier .211426 .150806 .221636 .116735 .2159 .093345 bezier .208684 .356887E-01 .150579 -.978807E-02 .093345 -.004445 bezier .884657E-01 -.264866E-01 .085948 -.492587E-01 .08001 -.07112 bezier .744709E-01 -.812236E-01 .551583E-01 -.078821 .05842 -.065405 bezier .651525E-01 -.442641E-01 .711329E-01 -.226002E-01 .07874 -.001905 bezier .049269 .44045E-02 .208937E-01 .265255E-01 .01778 .057785 bezier .171476E-01 .907687E-01 .289279E-01 .125938 .05207 .14986 aline .056515 .14986 aline .05715 .149225 aline .05842 .14859 bezier .581496E-01 .140754 .488451E-01 .136453 .046355 .128905 bezier .035125 .108759 .247401E-01 .842789E-01 .027305 .061595 bezier .320559E-01 .348823E-01 .608861E-01 .211236E-01 .084455 .01778 bezier .999091E-01 .633687E-01 .109622 .117562 .15113 .146685 aline .15748 .14986 aline .159385 .150495 aline .160655 .15113 aline .16256 .151765 aline .1651 .1524 aline .168275 .153035 aline .17145 .153035 aline .172085 .15367 closepath ! end of curve ! start of curve amove .16891 .13335 bezier .129709 .126751 .111798 .084195 .10287 .04953 bezier .102181 .381489E-01 .980361E-01 .274711E-01 .976745E-01 .163368E-01 bezier .148107 .891949E-02 .209885 .497747E-01 .207645 .104775 bezier .204974 .122904 .186849 .137726 .16891 .13335 closepath ! end of curve fill dfont endchar dfont char=40 !-------------- Beginning of new char. dfont wid=1 hei=.366875 dep=-.133125 italic=0 set path ! start of curve newpath ! start of curve amove .084455 .149225 aline .085725 .14859 aline .086995 .14732 bezier .087044 .137055 .779994E-01 .128115 .073025 .11938 bezier .665192E-01 .109954 .556879E-01 .10098 .048895 .09398 aline .325755 .09398 aline .328295 .09271 aline .329565 .09144 aline .330835 .0889 aline .330835 .08509 aline .329565 .08255 aline .328295 .08128 aline .325755 .08001 aline .022225 .08001 aline .02032 .081915 bezier .017833 .092962 .322109E-01 .936654E-01 .0381 .099695 bezier .559295E-01 .111896 .689018E-01 .129581 .07874 .14859 aline .08001 .149225 closepath ! end of curve fill dfont endchar dfont char=")" !-------------- Beginning of new char. dfont wid=1 hei=.366875 dep=-.133125 italic=0 set path ! start of curve newpath ! start of curve amove .325755 .09398 aline .327025 .093345 aline .328295 .09271 aline .329565 .09144 aline .330835 .0889 aline .330835 .08509 aline .329565 .08255 aline .328295 .08128 aline .325755 .08001 aline .048895 .08001 bezier .634228E-01 .666223E-01 .809431E-01 .487375E-01 .08763 .02794 aline .086995 .02667 aline .085725 .0254 bezier .748564E-01 .213421E-01 .745644E-01 .372003E-01 .06858 .042545 bezier .573908E-01 .616762E-01 .386394E-01 .743294E-01 .02032 .085725 aline .02032 .092075 aline .022225 .09398 closepath ! end of curve fill dfont endchar dfont char="*" !-------------- Beginning of new char. dfont wid=1 hei=.366875 dep=-.133125 italic=0 set path ! start of curve newpath ! start of curve amove .271145 .149225 bezier .279414 .139249 .283845 .125748 .294005 .11684 bezier .303697 .104298 .318367 .969565E-01 .330835 .088265 aline .330835 .081915 aline .32893 .08001 aline .0254 .08001 aline .02286 .08128 aline .02159 .08255 aline .02032 .08509 aline .02032 .0889 aline .02159 .09144 aline .02286 .09271 aline .0254 .09398 aline .30226 .09398 bezier .287732 .107368 .270212 .125253 .263525 .14605 aline .26416 .14732 aline .26543 .14859 aline .2667 .149225 closepath ! end of curve fill dfont endchar dfont char="+" !-------------- Beginning of new char. dfont wid=1 hei=.366875 dep=-.133125 italic=0 set path ! start of curve newpath ! start of curve amove .32893 .09398 aline .330835 .092075 bezier .333607 .813754E-01 .319957 .807863E-01 .314325 .07493 bezier .295608 .631569E-01 .282589 .446583E-01 .272415 .0254 aline .271145 .024765 aline .2667 .024765 aline .26543 .0254 aline .26416 .02667 bezier .264111 .369346E-01 .273156 .458754E-01 .27813 .05461 bezier .284636 .640365E-01 .295467 .730102E-01 .30226 .08001 aline .0254 .08001 aline .02286 .08128 aline .02159 .08255 aline .02032 .08509 aline .02032 .0889 aline .02159 .09144 aline .02286 .09271 aline .0254 .09398 aline .32893 .09398 closepath ! end of curve fill dfont endchar dfont char="," !-------------- Beginning of new char. dfont wid=.277779 hei=.463748 dep=-.036252 italic=0 set path ! start of curve newpath ! start of curve amove .07239 .16256 aline .07366 .161925 aline .07493 .16129 aline .0762 .16002 aline .07747 .15748 aline .07747 .15367 aline .0762 .15113 aline .07493 .14986 bezier .596532E-01 .148005 .386496E-01 .143703 .034925 .125095 bezier .313015E-01 .105342 .551975E-01 .925006E-01 .07239 .09398 aline .07493 .09271 aline .0762 .09144 aline .07747 .0889 aline .07747 .08509 aline .0762 .08255 bezier .658715E-01 .764109E-01 .522578E-01 .082226 .04191 .086995 bezier .176304E-01 .977631E-01 .120825E-01 .13521 .034925 .150495 bezier .427505E-01 .157781 .539979E-01 .161115 .064135 .16256 closepath ! end of curve fill dfont endchar dfont char="-" !-------------- Beginning of new char. dfont wid=.277779 hei=.463748 dep=-.036252 italic=0 set path ! start of curve newpath ! start of curve amove .033655 .16256 bezier .583849E-01 .161128 .845221E-01 .137901 .0762 .111125 bezier .695855E-01 .897737E-01 .438244E-01 .764987E-01 .02286 .08128 aline .02159 .08255 aline .02032 .08509 aline .02032 .0889 aline .02159 .09144 aline .02286 .09271 bezier .381368E-01 .945649E-01 .591404E-01 .988671E-01 .062865 .117475 bezier .664885E-01 .137228 .425925E-01 .150069 .0254 .14859 aline .02286 .14986 aline .02159 .15113 aline .02032 .15367 aline .02032 .15748 aline .02159 .16002 aline .02286 .16129 aline .0254 .16256 aline .033655 .16256 closepath ! end of curve fill dfont endchar dfont char="." !-------------- Beginning of new char. dfont wid=.500002 hei=.465279 dep=-.0347214 italic=0 set path ! start of curve newpath ! start of curve amove .01905 .175895 bezier .675907E-01 .147839 .116455 .120232 .164465 .09144 bezier .17025 .803774E-01 .154181 .776083E-01 .147955 .07239 bezier .104825 .478497E-01 .621981E-01 .226105E-01 .01905 -.001905 aline .01524 -.001905 aline .0127 -.000635 aline .01143 .000635 aline .01016 .003175 aline .01016 .170815 aline .01143 .173355 aline .0127 .174625 aline .01397 .17526 aline .01524 .175895 closepath ! end of curve ! start of curve amove .02413 .155575 aline .02413 .018415 bezier .064475 .391934E-01 .104387 .646958E-01 .14478 .086995 bezier .104387 .109294 .644754E-01 .134796 .02413 .155575 closepath ! end of curve fill dfont endchar dfont char="/" !-------------- Beginning of new char. dfont wid=.500002 hei=.465279 dep=-.0347214 italic=0 set path ! start of curve newpath ! start of curve amove .160655 .175895 aline .161925 .17526 aline .163195 .174625 aline .164465 .173355 aline .165735 .170815 aline .165735 .003175 bezier .161597 -.714534E-02 .150596 .118654E-02 .14478 .00508 bezier .100251 .307943E-01 .554143E-01 .560805E-01 .01143 .08255 bezier .564523E-02 .936126E-01 .217143E-01 .963817E-01 .02794 .1016 bezier .710588E-01 .126156 .113696 .15138 .156845 .175895 closepath ! end of curve ! start of curve amove .14986 .155575 bezier .1103 .132685 .070844 .109651 .031115 .086995 bezier .715051E-01 .064692 .111417 .391885E-01 .151765 .018415 aline .151765 .155575 aline .150813 .156051 aline .14986 .155575 closepath ! end of curve fill dfont endchar dfont char="0" !-------------- Beginning of new char. dfont wid=.500002 hei=.430555 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .095885 .15748 bezier .123821 .156757 .151372 .137245 .15748 .108585 bezier .164316 .740132E-01 .165533 .302314E-01 .135255 .00508 bezier .108481 -.126279E-01 .722984E-01 -.128579E-01 .04445 .00254 bezier .011625 .245912E-01 .118136E-01 .693526E-01 .017145 .103505 bezier .219565E-01 .133507 .490635E-01 .157417 .079375 .156845 aline .08001 .15748 aline .095885 .15748 closepath ! end of curve ! start of curve amove .08128 .14986 bezier .617412E-01 .149524 .448656E-01 .132553 .04445 .11303 aline .043815 .112395 aline .043815 .107315 aline .04318 .10668 aline .04318 .098425 aline .042545 .09779 aline .042545 .05588 bezier .437693E-01 .367419E-01 .04615 .100493E-01 .06858 .00254 bezier .930377E-01 -.879315E-02 .129195 .457794E-02 .13081 .034925 aline .131445 .03556 aline .131445 .03937 aline .13208 .040005 aline .13208 .045085 aline .132715 .04572 aline .132715 .055245 aline .13335 .05588 aline .13335 .09779 bezier .132218 .115104 .12935 .13829 .109855 .14605 aline .102235 .14859 aline .09906 .149225 aline .098425 .14986 aline .094615 .14986 aline .09398 .150495 aline .081915 .150495 aline .08128 .14986 closepath ! end of curve fill dfont endchar dfont char="1" !-------------- Beginning of new char. dfont wid=.500002 hei=.430555 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .1016 .15748 aline .103505 .155575 aline .103505 .019685 bezier .105362 .908545E-02 .117444 .109744E-01 .125095 .009525 aline .145415 .009525 aline .14732 .00762 aline .14732 .00127 aline .145415 -.000635 aline .13462 -.000635 aline .133985 0 aline .099695 0 aline .09906 .000635 aline .08382 .000635 aline .083185 0 aline .048895 0 aline .04826 -.000635 aline .037465 -.000635 aline .03556 .00127 aline .03556 .00762 aline .037465 .009525 aline .057785 .009525 bezier .654365E-01 .109744E-01 .775182E-01 .908545E-02 .079375 .019685 aline .079375 .136525 bezier .065475 .133906 .499807E-01 .13098 .034925 .132715 aline .033655 .133985 aline .033655 .140335 aline .03556 .14224 bezier .574027E-01 .142319 .796362E-01 .144275 .098425 .15748 aline .1016 .15748 closepath ! end of curve fill dfont endchar dfont char="2" !-------------- Beginning of new char. dfont wid=.500002 hei=.430555 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .09271 .15748 bezier .11883 .156327 .154584 .144464 .15748 .113665 bezier .161164 .897151E-01 .140519 .072463 .121285 .062865 bezier .969026E-01 .515602E-01 .746181E-01 .373448E-01 .05207 .023495 aline .052705 .02286 aline .12954 .02286 aline .130175 .023495 aline .141605 .023495 aline .142875 .024765 aline .14478 .028575 aline .145415 .03048 aline .14605 .03175 aline .146685 .03429 aline .14732 .036195 aline .149225 .043815 aline .15113 .04572 aline .155575 .04572 aline .15748 .043815 aline .15748 .04064 aline .155575 .03302 aline .15494 .029845 aline .15113 .014605 aline .150495 .01143 aline .147955 .00127 aline .14605 -.000635 aline .01905 -.000635 aline .01778 0 bezier .117445E-01 .108209E-01 .280411E-01 .140369E-01 .033655 .02032 bezier .618288E-01 .413786E-01 .940876E-01 .574101E-01 .11811 .08382 bezier .135057 .102756 .126521 .135736 .1016 .142875 bezier .792063E-01 .15171 .490735E-01 .147995 .03429 .127 bezier .473049E-01 .125848 .514534E-01 .105995 .038735 .100965 aline .03683 .10033 aline .029845 .10033 bezier .01336 .106093 .020798 .129042 .029845 .13843 bezier .462629E-01 .155023 .705314E-01 .158469 .09271 .15748 closepath ! end of curve fill dfont endchar dfont char="3" !-------------- Beginning of new char. dfont wid=.500002 hei=.430555 dep=.194445 italic=0 set path ! start of curve newpath ! start of curve amove .094615 .15748 bezier .121073 .155848 .155101 .136835 .15113 .10541 bezier .148991 .792567E-01 .12717 .585854E-01 .10287 .0508 bezier .139016 .457103E-01 .169947 .920999E-02 .15875 -.027305 bezier .146823 -.686709E-01 .968375E-01 -.857063E-01 .059055 -.073025 bezier .330113E-01 -.664245E-01 .695335E-02 -.393661E-01 .01778 -.01143 bezier .263837E-01 .121467E-02 .494007E-01 -.258037E-02 .051435 -.018415 bezier .539922E-01 -.304666E-01 .434817E-01 -.422933E-01 .031115 -.040005 bezier .383705E-01 -.576468E-01 .622754E-01 -.657148E-01 .08001 -.067945 bezier .106773 -.721265E-01 .126792 -.446674E-01 .126365 -.02032 bezier .130368 .531857E-02 .120434 .401948E-01 .090805 .04572 aline .06096 .04572 aline .060325 .046355 aline .059055 .04699 aline .059055 .0508 bezier .687905E-01 .559453E-01 .816135E-01 .517764E-01 .092075 .056515 bezier .116919 .683057E-01 .124515 .101055 .118745 .125095 bezier .11298 .148769 .846019E-01 .1537 .065405 .14605 bezier .554778E-01 .142767 .426466E-01 .13763 .03937 .127635 bezier .580338E-01 .131461 .655864E-01 .102919 .048895 .095885 bezier .357652E-01 .897068E-01 .210174E-01 .102167 .024765 .116205 bezier .295969E-01 .148186 .667464E-01 .15985 .094615 .15748 closepath ! end of curve fill dfont endchar dfont char="4" !-------------- Beginning of new char. dfont wid=.500002 hei=.430555 dep=.194445 italic=0 set path ! start of curve newpath ! start of curve amove .127 .16129 aline .12827 .160655 aline .128905 .16002 aline .12954 .15875 aline .12954 .01016 aline .130175 .009525 aline .16383 .009525 aline .165735 .00762 aline .165735 .00127 aline .16383 -.000635 aline .130175 -.000635 aline .12954 -.00127 aline .12954 -.050165 bezier .130794 -.586412E-01 .139869 -.578791E-01 .14605 -.059055 aline .16129 -.059055 aline .16256 -.05969 aline .163195 -.060325 aline .16383 -.061595 aline .16383 -.066675 aline .163195 -.067945 aline .16256 -.06858 bezier .132756 -.689096E-01 .102408 -.674972E-01 .07239 -.069215 aline .07112 -.06858 aline .070485 -.067945 aline .06985 -.066675 aline .06985 -.061595 aline .070485 -.060325 bezier .803959E-01 -.570464E-01 .922394E-01 -.611105E-01 .1016 -.05588 aline .10287 -.05334 aline .103505 -.0508 aline .10414 -.050165 aline .10414 -.00127 aline .103505 -.000635 aline .0127 -.000635 bezier .56924E-02 .54409E-02 .013186 .149151E-01 .01778 .02032 bezier .520764E-01 .672465E-01 .854563E-01 .115306 .12065 .16129 closepath ! end of curve ! start of curve amove .104775 .127 bezier .766677E-01 .881139E-01 .464683E-01 .482979E-01 .02032 .009525 aline .10541 .009525 aline .106045 .01016 aline .106045 .127635 aline .10541 .12827 closepath ! end of curve fill dfont endchar dfont char="5" !-------------- Beginning of new char. dfont wid=.500002 hei=.430555 dep=.194445 italic=0 set path ! start of curve newpath ! start of curve amove .04064 .15748 bezier .734602E-01 .141994 .109234 .144554 .14224 .15748 aline .142875 .156845 aline .144145 .15621 bezier .143745 .14609 .131969 .140292 .125095 .133985 bezier .101947 .117139 .714895E-01 .117078 .046355 .123825 aline .046355 .056515 bezier .562004E-01 .644637E-01 .708473E-01 .732033E-01 .08509 .07366 bezier .123387 .783979E-01 .156028 .424717E-01 .15748 .00635 bezier .163486 -.387802E-01 .12009 -.830294E-01 .07493 -.0762 bezier .406557E-01 -.747282E-01 .011103 -.378071E-01 .02032 -.004445 bezier .292889E-01 .100007E-01 .549122E-01 .148746E-02 .0508 -.01651 bezier .499552E-01 -.276165E-01 .364101E-01 -.306783E-01 .293688E-01 -.295275E-01 bezier .391456E-01 -.660935E-01 .927008E-01 -.829128E-01 .116205 -.050165 bezier .132943 -.251762E-01 .130852 .69751E-02 .125095 .034925 bezier .120869 .523953E-01 .104844 .705516E-01 .085725 .06604 bezier .678662E-01 .655686E-01 .520469E-01 .536311E-01 .042545 .03937 aline .038735 .03937 aline .037465 .040005 aline .03683 .04064 aline .036195 .04191 aline .036195 .155575 aline .0381 .15748 closepath ! end of curve fill dfont endchar dfont char="6" !-------------- Beginning of new char. dfont wid=.500002 hei=.644444 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .1143 .233045 bezier .13688 .232969 .159211 .209746 .14986 .18669 bezier .141243 .173394 .11726 .181668 .121285 .19812 bezier .122059 .206959 .131712 .211278 .139065 .21082 bezier .12098 .234193 .829417E-01 .22607 .06731 .2032 bezier .047453 .177901 .440262E-01 .144563 .04572 .1143 bezier .521618E-01 .133266 .712394E-01 .150267 .09144 .147955 bezier .128145 .149889 .158713 .113787 .160655 .079375 bezier .163902 .500085E-01 .151521 .196206E-01 .126365 .003175 bezier .968359E-01 -.191429E-01 .504478E-01 -.797223E-02 .03302 .024765 bezier .128575E-01 .633217E-01 .012186 .107275 .01905 .14859 bezier .281635E-01 .19309 .661614E-01 .237024 .1143 .233045 closepath ! end of curve ! start of curve amove .08255 .140335 bezier .526249E-01 .132736 .436607E-01 .959504E-01 .046355 .06985 bezier .460354E-01 .449147E-01 .051714 .108155E-01 .08001 .001905 bezier .105613 -.607152E-02 .128776 .199535E-01 .12954 .04445 aline .130175 .045085 aline .130175 .05207 aline .13081 .052705 aline .13081 .0889 bezier .130143 .10952 .120216 .135714 .097155 .14097 aline .083185 .14097 closepath ! end of curve fill dfont endchar dfont char="7" !-------------- Beginning of new char. dfont wid=.500002 hei=.430555 dep=.194445 italic=0 set path ! start of curve newpath ! start of curve amove .0381 .16129 aline .040005 .159385 aline .040005 .15621 bezier .483444E-01 .148503 .603689E-01 .151875 .070485 .14986 aline .168275 .14986 bezier .17485 .141377 .162574 .1336 .15875 .126365 bezier .134788 .09175 .102022 .591949E-01 .09779 .014605 bezier .094483 .544396E-03 .947141E-01 -.149817E-01 .093345 -.029845 aline .093345 -.06477 bezier .911414E-01 -.807776E-01 .650686E-01 -.807776E-01 .062865 -.06477 bezier .604808E-01 -.343782E-02 .912567E-01 .561655E-01 .12954 .10287 bezier .133926 .11014 .141601 .117378 .144145 .12446 aline .05588 .12446 aline .055245 .123825 aline .041275 .123825 aline .04064 .12319 aline .03683 .12319 aline .03556 .12065 aline .034925 .118745 aline .03429 .117475 aline .033655 .11557 aline .03175 .10795 aline .028575 .092075 aline .02667 .09017 aline .022225 .09017 aline .02032 .092075 bezier .239132E-01 .115236 .273543E-01 .138073 .03302 .160655 aline .03429 .16129 aline .0381 .16129 closepath ! end of curve fill dfont endchar dfont char="8" !-------------- Beginning of new char. dfont wid=.500002 hei=.644444 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .094615 .233045 bezier .123367 .231818 .156809 .207043 .150495 .17526 bezier .149585 .150886 .125165 .13695 .108373 .125518 bezier .131316 .1118 .159139 .094476 .16002 .064135 bezier .166369 .269397E-01 .13099 -.617849E-02 .09525 -.008255 bezier .607597E-01 -.117001E-01 .191293E-01 .906415E-02 .01524 .046355 bezier .113795E-01 .796438E-01 .392891E-01 .105225 .06731 .117475 bezier .474222E-01 .128527 .264836E-01 .144939 .024765 .169545 bezier .200308E-01 .207467 .587102E-01 .237627 .094615 .233045 closepath ! end of curve ! start of curve amove .08128 .224155 bezier .573463E-01 .224021 .302026E-01 .199299 .042545 .174625 bezier .536233E-01 .154965 .770569E-01 .148111 .09398 .13462 aline .09652 .13335 bezier .101608 .128117 .108042 .137 .11303 .1397 bezier .134401 .154132 .14529 .185775 .127 .20701 bezier .115806 .219963 .976209E-01 .226956 .08128 .224155 closepath ! end of curve ! start of curve amove .074295 .11176 bezier .401579E-01 .978032E-01 .165498E-01 .509473E-01 .043815 .02032 bezier .706216E-01 -.117723E-01 .131352 -.332983E-02 .14351 .0381 bezier .148272 .060778 .129752 .804403E-01 .11049 .089535 bezier .988068E-01 .971912E-01 .872458E-01 .105017 .752475E-01 .112236 closepath ! end of curve fill dfont endchar dfont char="9" !-------------- Beginning of new char. dfont wid=.500002 hei=.430555 dep=.194445 italic=0 set path ! start of curve newpath ! start of curve amove .095885 .15748 bezier .136243 .153196 .1572 .109607 .15875 .073025 bezier .166319 .239542E-01 .155885 -.361759E-01 .11049 -.06604 bezier .855894E-01 -.811401E-01 .479415E-01 -.828748E-01 .028575 -.05842 bezier .227313E-01 -.478067E-01 .202019E-01 -.292217E-01 .034925 -.024765 aline .043815 -.024765 bezier .602217E-01 -.028216 .571536E-01 -.562868E-01 .040005 -.05461 bezier .345827E-01 -.553217E-01 .440239E-01 -.613247E-01 .04699 -.062865 bezier .718067E-01 -.755221E-01 .104154 -.645576E-01 .116205 -.038735 bezier .129697 -.145658E-01 .131763 .121565E-01 .130175 .038735 bezier .12345 .201478E-01 .104447 .340625E-02 .084455 .005715 bezier .482196E-01 .370338E-02 .169987E-01 .386191E-01 .01524 .073025 bezier .124758E-01 .996572E-01 .230864E-01 .127401 .04572 .142875 bezier .594839E-01 .155194 .781682E-01 .158395 .095885 .15748 closepath ! end of curve ! start of curve amove .08382 .14859 bezier .591694E-01 .147148 .458656E-01 .119745 .045085 .098425 aline .045085 .062865 bezier .459563E-01 .427623E-01 .560754E-01 .172344E-01 .07874 .0127 bezier .105405 .817973E-02 .124877 .328589E-01 .12827 .05715 bezier .131666 .081242 .131349 .107206 .11938 .130175 bezier .112661 .142517 .977223E-01 .151923 .08382 .14859 closepath ! end of curve fill dfont endchar dfont char=":" !-------------- Beginning of new char. dfont wid=.277779 hei=.105556 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .05207 .03556 bezier .707024E-01 .033691 .728738E-01 .436431E-02 .05461 0 bezier .370705E-01 -.636072E-02 .226261E-01 .181321E-01 .036195 .03048 aline .037465 .031115 aline .03937 .03302 aline .04191 .03429 aline .043815 .034925 aline .046355 .03556 closepath ! end of curve fill dfont endchar dfont char=";" !-------------- Beginning of new char. dfont wid=.277779 hei=.105556 dep=.194445 italic=0 set path ! start of curve newpath ! start of curve amove .052705 .03556 bezier .744693E-01 .286338E-01 .719298E-01 .35721E-03 .06985 -.017145 bezier .06628 -.372217E-01 .563972E-01 -.563946E-01 .04064 -.069215 aline .0381 -.069215 aline .036195 -.06731 bezier .038064 -.588526E-01 .476945E-01 -.533093E-01 .051435 -.045085 bezier .600433E-01 -.294045E-01 .660684E-01 -.116185E-01 .0635 .005715 bezier .525706E-01 -.884516E-02 .265468E-01 .276842E-02 .031115 .020955 aline .03175 .023495 aline .032385 .0254 aline .033655 .02794 aline .0381 .032385 aline .03937 .03302 aline .040005 .033655 aline .041275 .03429 aline .04318 .034925 aline .04572 .03556 closepath ! end of curve fill dfont endchar dfont char="<" !-------------- Beginning of new char. dfont wid=.777781 hei=.539098 dep=.0390978 italic=0 set path ! start of curve newpath ! start of curve amove .238125 .188595 aline .239395 .18796 aline .240665 .187325 aline .241935 .186055 aline .243205 .183515 aline .243205 .179705 aline .241935 .177165 bezier .179806 .146022 .116122 .117138 .05334 .086995 bezier .116122 .568521E-01 .179806 .279675E-01 .241935 -.003175 aline .243205 -.005715 aline .243205 -.009525 aline .241935 -.012065 aline .240665 -.013335 aline .238125 -.014605 aline .234315 -.014605 bezier .166699 .017949 .981046E-01 .490599E-01 .031115 .08255 aline .029845 .08509 aline .029845 .0889 aline .031115 .09144 bezier .981046E-01 .12493 .166699 .156041 .234315 .188595 aline .238125 .188595 closepath ! end of curve fill dfont endchar dfont char="=" !-------------- Beginning of new char. dfont wid=.500002 hei=.75 dep=.25 italic=0 dfont fby=1 kadd=-.0555553 dfont fby="A" kadd=-.0555553 dfont fby="M" kadd=-.0555553 dfont fby="N" kadd=-.0555553 dfont fby="Y" kadd=.0555553 dfont fby="Z" kadd=-.0555553 set path ! start of curve newpath ! start of curve amove .150495 .262255 aline .151765 .26162 aline .153035 .260985 aline .154305 .259715 aline .155575 .257175 bezier .13148 .181361 .101704 .106588 .075565 .031115 bezier .604949E-01 -.801486E-02 .483176E-01 -.487238E-01 .03175 -.086995 aline .02921 -.088265 aline .0254 -.088265 aline .02286 -.086995 aline .02159 -.085725 aline .02032 -.083185 bezier .444152E-01 -.737131E-02 .741909E-01 .674023E-01 .10033 .142875 bezier .1154 .182005 .127577 .222714 .144145 .260985 aline .145415 .26162 aline .146685 .262255 closepath ! end of curve fill dfont endchar dfont char=">" !-------------- Beginning of new char. dfont wid=.777781 hei=.539098 dep=.0390978 italic=0 set path ! start of curve newpath ! start of curve amove .038735 .188595 bezier .106351 .156041 .174945 .12493 .241935 .09144 aline .243205 .0889 aline .243205 .08509 aline .241935 .08255 bezier .174945 .04906 .106351 .179489E-01 .038735 -.014605 aline .034925 -.014605 aline .032385 -.013335 aline .031115 -.012065 aline .029845 -.009525 aline .029845 -.005715 aline .031115 -.003175 bezier .932442E-01 .279675E-01 .156928 .056852 .21971 .086995 bezier .156928 .117138 .932442E-01 .146022 .031115 .177165 aline .029845 .179705 aline .029845 .183515 aline .031115 .186055 aline .032385 .187325 aline .033655 .18796 aline .034925 .188595 closepath ! end of curve fill dfont endchar dfont char="?" !-------------- Beginning of new char. dfont wid=.500002 hei=.465279 dep=-.0347214 italic=0 set path ! start of curve newpath ! start of curve amove .089535 .169545 aline .09144 .16764 bezier .939498E-01 .143833 .973184E-01 .120382 .099695 .09652 aline .1016 .096139 aline .13208 .102235 aline .135255 .102235 aline .13589 .10287 aline .16764 .10922 aline .172085 .10922 aline .173355 .108585 aline .17399 .107315 aline .17399 .10414 bezier .152554 .092341 .12937 .083271 .107315 .07239 bezier .11961 .051401 .131967 .298809E-01 .142875 .008255 aline .14224 .006985 aline .140335 .00508 aline .137795 .00508 bezier .120682 .221932E-01 .105365 .409541E-01 .879475E-01 .576263E-01 bezier .705296E-01 .409541E-01 .552132E-01 .221932E-01 .0381 .00508 aline .03556 .00508 aline .033655 .006985 bezier .340515E-01 .158687E-01 .423783E-01 .237539E-01 .04572 .032385 bezier .535788E-01 .455479E-01 .602767E-01 .595475E-01 .06858 .07239 bezier .465254E-01 .083271 .233411E-01 .092341 .001905 .10414 aline .001905 .107315 aline .00254 .108585 aline .00381 .10922 aline .008255 .10922 aline .040005 .10287 aline .04064 .102235 aline .043815 .102235 aline .074295 .096139 aline .0762 .09652 bezier .078941 .120625 .812774E-01 .144095 .08509 .168275 aline .085725 .16891 aline .086995 .169545 aline .089535 .169545 closepath ! end of curve fill dfont endchar dfont char="@" !-------------- Beginning of new char. dfont wid=.530904 hei=.694445 dep=0 italic=.0555553 dfont fby=127 kadd=.0833359 set path ! start of curve newpath ! start of curve amove .130175 .25019 bezier .170307 .247593 .198794 .207306 .19812 .16891 bezier .200545 .123799 .184158 .757381E-01 .15875 .037465 bezier .134863 .183219E-02 .849479E-01 -.221272E-01 .04445 0 bezier .196285E-01 .153259E-01 .933448E-02 .472712E-01 .017145 .074295 bezier .254922E-01 .114763 .592772E-01 .146836 .098425 .15748 bezier .117558 .161188 .14197 .159864 .154305 .14097 bezier .158887 .133993 .161483 .125407 .16256 .117475 bezier .171455 .152915 .182037 .192416 .15875 .22479 bezier .136592 .253193 .890275E-01 .243925 .07239 .213995 aline .739775E-01 .213598 bezier .838195E-01 .21591 .916338E-01 .204934 .08763 .19558 bezier .841548E-01 .182854 .061949 .177442 .05715 .19177 bezier .576241E-01 .228376 .959067E-01 .254417 .130175 .25019 closepath ! end of curve ! start of curve amove .108585 .15113 bezier .772805E-01 .145228 .578608E-01 .115514 .0508 .08636 bezier .448611E-01 .618125E-01 .339612E-01 .343602E-01 .051435 .012065 bezier .772908E-01 -.137413E-01 .119348 .821643E-02 .133985 .036195 bezier .14749 .618984E-01 .160613 .922914E-01 .15494 .12065 bezier .152094 .135935 .140472 .149065 .125095 .151765 aline .10922 .151765 closepath ! end of curve fill dfont endchar dfont char="A" !-------------- Beginning of new char. dfont wid=.750002 hei=.683332 dep=0 italic=0 dfont fby=127 kadd=.138893 set path ! start of curve newpath ! start of curve amove .197485 .25019 aline .198755 .249555 bezier .20288 .240718 .200839 .229733 .2032 .220345 bezier .209719 .151818 .215192 .832839E-01 .22352 .01524 bezier .23031 .618401E-02 .243572 .119618E-01 .25273 .008255 aline .253365 .006985 aline .253365 .004445 aline .25273 .001905 aline .252095 .000635 aline .25146 0 aline .25019 -.000635 aline .2413 -.000635 aline .240665 0 aline .215265 0 aline .21463 .000635 aline .201295 .000635 aline .20066 0 aline .17018 0 aline .169545 -.000635 aline .160655 -.000635 aline .15875 .00127 aline .15875 .004445 aline .159385 .006985 aline .16002 .008255 aline .160655 .00889 bezier .171257 .108125E-01 .186963 .765091E-02 .192405 .019685 bezier .191437 .401916E-01 .18932 .606621E-01 .18669 .080645 aline .09906 .080645 bezier .881582E-01 .621392E-01 .759745E-01 .441604E-01 .066675 .024765 bezier .646882E-01 .134126E-01 .07805 .893388E-02 .086995 .009525 aline .0889 .00762 aline .0889 .00381 aline .088265 .001905 aline .08763 .000635 aline .086995 0 bezier .632716E-01 -.619741E-03 .390362E-01 .001362 .01524 -.000635 aline .01397 0 aline .013335 .000635 aline .0127 .001905 aline .0127 .00381 aline .013335 .00635 aline .01397 .00762 aline .015875 .009525 bezier .398841E-01 .762221E-02 .586873E-01 .270918E-01 .067945 .047625 bezier .109131 .114482 .147472 .183863 .189865 .249555 aline .191135 .25019 closepath ! end of curve ! start of curve amove .17399 .206375 bezier .151468 .167988 .126605 .129462 .106045 .090805 aline .18542 .090805 bezier .183233 .129285 .178534 .169002 .174625 .207645 closepath ! end of curve fill dfont endchar dfont char="B" !-------------- Beginning of new char. dfont wid=.75851 hei=.683332 dep=0 italic=.0501728 dfont fby=127 kadd=.0833359 set path ! start of curve newpath ! start of curve amove .20955 .23876 bezier .233529 .237604 .26216 .222513 .26543 .196215 bezier .26839 .157589 .229074 .131722 .194945 .125095 aline .192405 .12446 bezier .219363 .123433 .250202 .100907 .245745 .071755 bezier .241326 .298269E-01 .197447 .251882E-02 .15875 -.000635 aline .01778 -.000635 aline .015875 .00127 aline .015875 .005715 aline .01651 .00762 aline .018415 .009525 aline .03556 .009525 bezier .430756E-01 .104407E-01 .541388E-01 .108563E-01 .05588 .020955 aline .09652 .183515 aline .104775 .216535 aline .10541 .21971 bezier .108713 .228048 .965141E-01 .227643 .09144 .2286 aline .07493 .2286 aline .073025 .230505 aline .073025 .234315 aline .07366 .23622 aline .074295 .23749 aline .07493 .238125 aline .0762 .23876 aline .20955 .23876 closepath ! end of curve ! start of curve amove .14224 .227965 aline .139065 .22733 aline .13716 .226695 aline .135255 .22479 aline .133985 .22225 aline .132715 .21844 aline .11049 .12954 aline .110014 .128587 aline .11049 .127635 aline .172085 .127635 bezier .208104 .132405 .244285 .17057 .23114 .207645 bezier .226909 .21932 .215192 .226625 .203835 .2286 aline .142875 .2286 closepath ! end of curve ! start of curve amove .10795 .11938 aline .107315 .11684 aline .083185 .02032 aline .08255 .017145 aline .081915 .01651 aline .081915 .01143 aline .08255 .010795 aline .085725 .01016 aline .08636 .009525 aline .14986 .009525 bezier .192514 .137577E-01 .230815 .655957E-01 .206375 .10541 bezier .200273 .114756 .188642 .119433 .178435 .12065 aline .108585 .12065 closepath ! end of curve fill dfont endchar dfont char="C" !-------------- Beginning of new char. dfont wid=.714722 hei=.683332 dep=0 italic=.0715275 dfont fby=":" kadd=-.0555553 dfont fby=";" kadd=-.0555553 dfont fby="=" kadd=-.0277786 dfont fby=127 kadd=.0833359 set path ! start of curve newpath ! start of curve amove .18288 .24638 bezier .202672 .244768 .222739 .232903 .233045 .215265 bezier .242098 .225825 .251372 .236225 .260985 .24638 aline .264795 .24638 aline .26543 .245745 aline .2667 .24511 aline .2667 .2413 aline .24384 .14986 aline .243205 .147955 aline .24257 .14732 aline .2413 .146685 aline .23495 .146685 aline .23368 .147955 bezier .237289 .175024 .233472 .210307 .207645 .227965 bezier .168565 .249372 .121095 .224709 .093345 .19431 bezier .637048E-01 .157998 .485834E-01 .109524 .050165 .0635 bezier .529668E-01 .361955E-01 .725991E-01 .881618E-02 .1016 .00381 bezier .152996 -.694141E-02 .206286 .353618E-01 .219075 .085725 aline .220345 .086995 aline .22479 .086995 aline .22606 .08636 bezier .226896 .070126 .215683 .544857E-01 .20701 .041275 bezier .17345 -.447942E-02 .104681 -.258845E-01 .056515 .00889 bezier .186745E-01 .338823E-01 .117624E-01 .849759E-01 .023495 .125095 bezier .436636E-01 .193454 .110802 .249124 .18288 .24638 closepath ! end of curve fill dfont endchar dfont char="D" !-------------- Beginning of new char. dfont wid=.827917 hei=.683332 dep=0 italic=.0277786 dfont fby=127 kadd=.0555573 set path ! start of curve newpath ! start of curve amove .208915 .23876 bezier .249235 .23712 .280384 .199345 .28194 .160655 bezier .287204 .084597 .22565 .74528E-02 .149225 -.000635 aline .017145 -.000635 aline .01524 .00127 aline .01524 .005715 aline .015875 .00762 aline .01778 .009525 aline .034925 .009525 bezier .424406E-01 .104407E-01 .535038E-01 .108563E-01 .055245 .020955 aline .095885 .183515 aline .10414 .216535 aline .104775 .21971 bezier .108078 .228048 .958791E-01 .227643 .090805 .2286 aline .074295 .2286 aline .07239 .230505 aline .07239 .234315 aline .073025 .23622 aline .07366 .23749 aline .074295 .238125 aline .075565 .23876 aline .208915 .23876 closepath ! end of curve ! start of curve amove .14224 .227965 aline .139065 .22733 aline .13716 .226695 aline .135255 .22479 aline .133985 .22225 aline .132715 .21844 aline .092075 .05588 aline .083185 .02032 aline .08255 .017145 aline .081915 .01651 aline .081915 .01143 aline .08255 .010795 aline .085725 .01016 aline .08636 .009525 aline .142875 .009525 bezier .185769 .140076E-01 .222744 .471249E-01 .23622 .088265 bezier .24785 .126752 .263418 .169303 .24003 .20574 bezier .230077 .219587 .21253 .22654 .19685 .2286 aline .142875 .2286 closepath ! end of curve fill dfont endchar dfont char="E" !-------------- Beginning of new char. dfont wid=.738195 hei=.683332 dep=0 italic=.0576382 dfont fby=127 kadd=.0833359 set path ! start of curve newpath ! start of curve amove .266065 .23749 aline .267335 .236855 bezier .268516 .218241 .262997 .198892 .262255 .179705 aline .26162 .17907 aline .26162 .17399 aline .260985 .173355 aline .260985 .16891 aline .26035 .168275 aline .26035 .163195 aline .259715 .160655 aline .25781 .15875 aline .254 .15875 aline .25273 .159385 aline .252095 .16002 bezier .25179 .179075 .259749 .203455 .24257 .219075 bezier .232677 .225167 .220863 .226141 .210185 .22733 aline .14351 .22733 aline .142875 .226695 aline .1397 .226695 aline .139065 .22606 aline .136525 .22479 aline .13589 .224155 aline .133985 .220345 aline .13335 .21844 aline .111125 .12954 aline .11049 .128905 aline .111125 .12827 aline .153035 .12827 bezier .166642 .128874 .18221 .135581 .186055 .150495 aline .18796 .15621 aline .188595 .15875 aline .18923 .160655 aline .1905 .165735 aline .191135 .16764 aline .19304 .169545 aline .19685 .169545 aline .19812 .16891 aline .198755 .168275 aline .19939 .167005 aline .19939 .1651 aline .1778 .07874 aline .175895 .076835 aline .17145 .076835 aline .169545 .07874 bezier .170039 .906976E-01 .1789 .105025 .16764 .1143 aline .165735 .114935 aline .164465 .11557 aline .161925 .116205 aline .15875 .11684 aline .158115 .117475 aline .1524 .117475 aline .151765 .11811 aline .108585 .11811 aline .10795 .11684 aline .08382 .02032 aline .083185 .017145 aline .08255 .01651 aline .08255 .01143 aline .083185 .010795 aline .08636 .01016 aline .086995 .009525 aline .15621 .009525 bezier .182126 .101701E-01 .211406 .022216 .22352 .047625 bezier .232518 .604511E-01 .236392 .771005E-01 .24511 .089535 aline .24892 .089535 bezier .25405 .835625E-01 .245605 .758355E-01 .244475 .069215 bezier .233593 .462654E-01 .225657 .021109 .21336 -.000635 aline .01651 -.000635 aline .014605 .00127 aline .014605 .005715 aline .01524 .00762 aline .017145 .009525 aline .03429 .009525 bezier .418056E-01 .104407E-01 .528688E-01 .108563E-01 .05461 .020955 aline .09525 .183515 aline .103505 .216535 aline .10414 .21717 aline .10414 .22352 aline .10287 .22479 aline .100965 .225425 aline .10033 .22606 aline .097155 .22606 aline .09652 .226695 aline .090805 .226695 aline .09017 .22733 aline .07366 .22733 aline .07239 .227965 aline .07112 .230505 aline .07112 .231775 aline .071755 .234315 aline .07239 .235585 aline .074295 .23749 closepath ! end of curve fill dfont endchar dfont char="F" !-------------- Beginning of new char. dfont wid=.643057 hei=.683332 dep=0 italic=.13889 dfont fby=":" kadd=-.111112 dfont fby=";" kadd=-.111112 dfont fby="=" kadd=-.0555553 dfont fby=127 kadd=.0833359 set path ! start of curve newpath ! start of curve amove .260985 .23749 aline .262255 .236855 bezier .263436 .218241 .257917 .198892 .257175 .179705 aline .25654 .17907 aline .25654 .17399 aline .255905 .173355 aline .255905 .16891 aline .25527 .168275 aline .25527 .163195 aline .254635 .160655 aline .25273 .15875 aline .24892 .15875 aline .24765 .159385 aline .247015 .16002 bezier .246577 .179208 .254905 .203332 .238125 .219075 bezier .228644 .225048 .217311 .22626 .20701 .22733 aline .14351 .22733 aline .142875 .226695 aline .1397 .226695 aline .139065 .22606 aline .136525 .22479 aline .13589 .224155 aline .133985 .220345 aline .13335 .21844 aline .110093 .125412 aline .11049 .123825 aline .14986 .123825 bezier .163208 .124105 .178109 .13085 .182245 .145415 aline .18415 .15113 aline .184785 .15367 aline .18542 .155575 aline .187325 .163195 aline .18923 .1651 aline .193675 .1651 aline .19558 .163195 aline .19558 .16002 aline .174625 .0762 aline .17399 .074295 aline .172085 .07239 aline .168275 .07239 aline .167005 .073025 bezier .16389 .825758E-01 .172518 .930781E-01 .16891 .10287 aline .16764 .10668 aline .1651 .10922 aline .16129 .111125 aline .15875 .11176 aline .155575 .112395 aline .15494 .11303 aline .14986 .11303 aline .149225 .113665 aline .107315 .113665 aline .10668 .11176 aline .084455 .02286 bezier .804174E-01 .016341 .086146 .943981E-02 .093345 .010795 aline .09398 .01016 aline .1016 .01016 aline .102235 .009525 aline .122555 .009525 aline .123825 .00889 aline .12446 .008255 aline .125095 .006985 aline .125095 .00508 aline .12446 .00254 aline .12319 0 aline .12192 -.000635 aline .109855 -.000635 aline .10922 0 aline .073025 0 aline .07239 .000635 aline .05715 .000635 aline .056515 0 aline .0254 0 aline .024765 -.000635 aline .01651 -.000635 aline .014605 .00127 aline .014605 .005715 aline .01524 .00762 aline .017145 .009525 aline .03429 .009525 bezier .418056E-01 .104407E-01 .528688E-01 .108563E-01 .05461 .020955 aline .09525 .183515 aline .103505 .216535 aline .10414 .21717 aline .10414 .22352 aline .10287 .22479 aline .100965 .225425 aline .10033 .22606 aline .097155 .22606 aline .09652 .226695 aline .090805 .226695 aline .09017 .22733 aline .07366 .22733 aline .07239 .227965 aline .07112 .230505 aline .07112 .231775 aline .071755 .234315 aline .07239 .235585 aline .074295 .23749 closepath ! end of curve fill dfont endchar dfont char="G" !-------------- Beginning of new char. dfont wid=.786249 hei=.683332 dep=0 italic=0 dfont fby=127 kadd=.0833359 set path ! start of curve newpath ! start of curve amove .18288 .24638 bezier .202672 .244768 .222739 .232903 .233045 .215265 bezier .242098 .225825 .251372 .236225 .260985 .24638 aline .264795 .24638 aline .26543 .245745 aline .2667 .24511 aline .2667 .2413 aline .24384 .14986 aline .243205 .147955 aline .24257 .14732 aline .2413 .146685 aline .23495 .146685 aline .23368 .147955 bezier .237289 .175024 .233472 .210307 .207645 .227965 bezier .168565 .249372 .121095 .224709 .093345 .19431 bezier .631073E-01 .15701 .472097E-01 .106599 .0508 .05969 bezier .552772E-01 .293871E-01 .812839E-01 .340961E-02 .112395 .00254 bezier .140404 -.218167E-03 .177297 .112349E-01 .187325 .041275 aline .194945 .071755 aline .19558 .07239 aline .19558 .075565 bezier .196771 .854785E-01 .1837 .826136E-01 .1778 .084455 aline .15748 .084455 aline .155575 .08636 aline .155575 .09017 aline .15621 .092075 aline .156845 .093345 aline .15748 .09398 aline .15875 .094615 aline .17018 .094615 aline .170815 .09398 aline .206375 .09398 aline .20701 .093345 aline .220345 .093345 aline .22098 .09398 aline .24384 .09398 aline .244475 .094615 aline .250825 .094615 aline .252095 .09398 aline .25273 .093345 aline .253365 .092075 aline .253365 .09017 aline .25273 .08763 aline .252095 .08636 aline .25019 .084455 aline .23876 .084455 aline .238125 .08382 aline .234315 .08382 aline .23368 .083185 aline .23114 .08255 aline .229235 .081915 aline .22733 .08001 aline .22606 .07747 aline .22479 .07366 aline .20701 .00254 aline .206375 .000635 bezier .19973 -.376517E-02 .196046 .746579E-02 .192405 .01143 aline .189865 .01651 aline .18923 .018415 aline .18796 .020955 bezier .160106 -.947009E-02 .113256 -.145341E-01 .0762 -.001905 bezier .338427E-01 .129812E-01 .116275E-01 .617597E-01 .019685 .103505 bezier .289148E-01 .181728 .1039 .249236 .18288 .24638 closepath ! end of curve fill dfont endchar dfont char="H" !-------------- Beginning of new char. dfont wid=.831251 hei=.683332 dep=0 italic=.0812483 dfont fby=":" kadd=-.0555553 dfont fby=";" kadd=-.0555553 dfont fby="=" kadd=-.0555553 dfont fby=127 kadd=.0555573 set path ! start of curve newpath ! start of curve amove .08509 .23876 aline .085725 .238125 aline .116205 .238125 aline .11684 .23749 aline .13081 .23749 aline .131445 .238125 aline .161925 .238125 aline .16256 .23876 aline .170815 .23876 aline .172085 .238125 aline .17272 .23749 aline .173355 .23622 aline .173355 .23368 aline .17272 .231775 aline .17145 .229235 bezier .158896 .226456 .141345 .232837 .133985 .21971 aline .132715 .2159 aline .111363 .130492 aline .11176 .128905 aline .21717 .128905 aline .217805 .130175 aline .239395 .216535 aline .24003 .21971 bezier .243333 .228048 .231134 .227643 .22606 .2286 aline .20955 .2286 aline .207645 .230505 aline .207645 .234315 aline .20828 .23622 aline .208915 .23749 aline .20955 .238125 aline .21082 .23876 aline .22098 .23876 aline .221615 .238125 aline .252095 .238125 aline .25273 .23749 aline .2667 .23749 aline .267335 .238125 aline .297815 .238125 aline .29845 .23876 aline .306705 .23876 aline .307975 .238125 aline .30861 .23749 aline .309245 .23622 aline .309245 .23368 aline .30861 .231775 aline .30734 .229235 bezier .294786 .226456 .277235 .232837 .269875 .21971 aline .268605 .2159 aline .227965 .05334 aline .21971 .02032 aline .219075 .019685 aline .219075 .013335 aline .220345 .012065 aline .22225 .01143 aline .222885 .010795 aline .22606 .010795 aline .226695 .01016 aline .23241 .01016 aline .233045 .009525 aline .249555 .009525 aline .250825 .00889 aline .252095 .00635 aline .252095 .00508 aline .25146 .00254 aline .250825 .00127 aline .24892 -.000635 aline .23876 -.000635 aline .238125 0 aline .207645 0 aline .20701 .000635 aline .19304 .000635 aline .192405 0 aline .16129 0 aline .160655 -.000635 aline .1524 -.000635 aline .150495 .00127 aline .150495 .005715 aline .15113 .00762 aline .153035 .009525 aline .17018 .009525 bezier .177696 .104407E-01 .188759 .108563E-01 .1905 .020955 aline .21463 .117475 aline .215265 .11811 aline .21463 .118745 aline .108585 .118745 aline .10795 .11684 aline .08382 .02032 aline .083185 .019685 aline .083185 .013335 aline .084455 .012065 aline .08636 .01143 aline .086995 .010795 aline .09017 .010795 aline .090805 .01016 aline .09652 .01016 aline .097155 .009525 aline .113665 .009525 aline .114935 .00889 aline .116205 .00635 aline .116205 .00508 aline .11557 .00254 aline .114935 .00127 aline .11303 -.000635 aline .10287 -.000635 aline .102235 0 aline .071755 0 aline .07112 .000635 aline .05715 .000635 aline .056515 0 aline .0254 0 aline .024765 -.000635 aline .01651 -.000635 aline .014605 .00127 aline .014605 .005715 aline .01524 .00762 aline .017145 .009525 aline .03429 .009525 bezier .418056E-01 .104407E-01 .528688E-01 .108563E-01 .05461 .020955 aline .09525 .183515 aline .103505 .216535 aline .10414 .21971 bezier .107443 .228048 .952441E-01 .227643 .09017 .2286 aline .07366 .2286 aline .071755 .230505 aline .071755 .234315 aline .07239 .23622 aline .073025 .23749 aline .07366 .238125 aline .07493 .23876 aline .08509 .23876 closepath ! end of curve fill dfont endchar dfont char="I" !-------------- Beginning of new char. dfont wid=.439585 hei=.683332 dep=0 italic=.0784712 dfont fby=127 kadd=.111115 set path ! start of curve newpath ! start of curve amove .083185 .23876 aline .08382 .238125 aline .11557 .238125 aline .116205 .23749 aline .13081 .23749 aline .131445 .238125 aline .163195 .238125 aline .16383 .23876 aline .17272 .23876 aline .17399 .238125 aline .174625 .23749 aline .17526 .23622 aline .17526 .234315 aline .174625 .231775 aline .17399 .230505 aline .172085 .2286 aline .15494 .2286 bezier .146641 .227668 .134181 .227325 .132715 .2159 aline .092075 .05334 aline .08382 .02032 bezier .795771E-01 .112493E-01 .911492E-01 .941954E-02 .09779 .01016 aline .098425 .009525 aline .11557 .009525 aline .117475 .00762 aline .117475 .003175 aline .11684 .00127 aline .114935 -.000635 aline .10414 -.000635 aline .103505 0 aline .071755 0 aline .07112 .000635 aline .056515 .000635 aline .05588 0 aline .02413 0 aline .023495 -.000635 aline .014605 -.000635 aline .0127 .00127 aline .0127 .00508 aline .013335 .006985 aline .01397 .008255 bezier .260339E-01 .119568E-01 .407595E-01 .647941E-02 .051435 .014605 aline .05207 .015875 aline .052705 .01651 aline .053975 .01905 aline .05461 .020955 aline .09525 .183515 aline .103505 .216535 aline .10414 .21717 aline .10414 .220345 aline .104537 .221933 aline .10414 .22352 aline .103505 .225425 aline .10287 .22606 aline .10033 .226695 aline .097155 .22733 aline .09652 .227965 aline .09017 .227965 aline .089535 .2286 aline .07239 .2286 aline .07112 .229235 aline .070485 .22987 aline .06985 .23114 aline .06985 .23368 aline .070485 .23622 aline .07112 .23749 aline .071755 .238125 aline .073025 .23876 aline .083185 .23876 closepath ! end of curve fill dfont endchar dfont char="J" !-------------- Beginning of new char. dfont wid=.554514 hei=.683332 dep=0 italic=.0961809 dfont fby=":" kadd=-.111112 dfont fby=";" kadd=-.111112 dfont fby="=" kadd=-.0555553 dfont fby=127 kadd=.166672 set path ! start of curve newpath ! start of curve amove .13462 .23876 aline .135255 .238125 aline .17272 .238125 aline .173355 .23749 aline .187325 .23749 aline .18796 .238125 aline .212725 .238125 aline .21336 .23876 aline .21971 .23876 aline .22098 .238125 aline .22225 .235585 aline .22225 .234315 aline .221615 .231775 aline .22098 .230505 aline .219075 .2286 aline .206375 .2286 aline .20574 .227965 aline .201295 .227965 aline .20066 .22733 aline .197485 .226695 aline .194945 .225425 aline .193675 .224155 aline .19177 .220345 aline .191135 .21844 aline .150495 .05588 bezier .14268 .812086E-02 .809716E-01 -.263554E-01 .03937 .001905 bezier .212267E-01 .015222 .210091E-01 .515773E-01 .04572 .05715 bezier .588813E-01 .604876E-01 .697719E-01 .460063E-01 .062865 .03429 bezier .586183E-01 .253389E-01 .048834 .193951E-01 .038735 .020955 bezier .424622E-01 .191326E-02 .068098 -.61187E-02 .084455 .001905 bezier .102276 .104136E-01 .114185 .276551E-01 .120015 .046355 aline .160655 .208915 aline .16256 .216535 aline .163195 .21717 aline .163195 .22352 aline .16129 .225425 aline .16002 .22606 aline .156845 .226695 aline .15621 .22733 aline .1524 .22733 aline .151765 .227965 aline .144145 .227965 aline .14351 .2286 aline .12192 .2286 aline .120015 .230505 aline .120015 .234315 aline .12065 .23622 aline .121285 .23749 aline .12192 .238125 aline .12319 .23876 aline .13462 .23876 closepath ! end of curve fill dfont endchar dfont char="K" !-------------- Beginning of new char. dfont wid=.849307 hei=.683332 dep=0 italic=.0715275 dfont fby=":" kadd=-.0555553 dfont fby=";" kadd=-.0555553 dfont fby="=" kadd=-.0555553 dfont fby=127 kadd=.0555573 set path ! start of curve newpath ! start of curve amove .08509 .23876 aline .085725 .238125 aline .116205 .238125 aline .11684 .23749 aline .13081 .23749 aline .131445 .238125 aline .161925 .238125 aline .16256 .23876 aline .170815 .23876 aline .172085 .238125 aline .17272 .23749 aline .173355 .23622 aline .173355 .23368 aline .17272 .231775 aline .17145 .229235 bezier .158896 .226456 .141345 .232837 .133985 .21971 aline .132715 .2159 aline .10414 .1016 aline .103664 .100648 bezier .109707 .101559 .115542 .109792 .12192 .11303 bezier .164045 .147057 .208311 .178111 .249555 .21336 bezier .255193 .218441 .252752 .228055 .244475 .227965 aline .24384 .2286 aline .239395 .2286 aline .23749 .230505 aline .23749 .23495 aline .238125 .236855 aline .24003 .23876 aline .25019 .23876 aline .250825 .238125 aline .2794 .238125 aline .280035 .23749 aline .28956 .23749 aline .290195 .238125 aline .3048 .238125 aline .305435 .23876 aline .30988 .23876 aline .311785 .236855 aline .311785 .233045 aline .31115 .23114 aline .310515 .22987 bezier .270192 .225485 .240034 .193325 .20828 .170815 bezier .198517 .162067 .184897 .154053 .177165 .145415 bezier .196123 .10233 .213144 .580684E-01 .23368 .015875 aline .23622 .013335 aline .24003 .01143 aline .24257 .010795 aline .243205 .01016 aline .247015 .01016 aline .24765 .009525 aline .257175 .009525 aline .258445 .00889 aline .25908 .008255 aline .259715 .006985 aline .259715 .004445 aline .25908 .00254 aline .25781 0 aline .25654 -.000635 aline .24892 -.000635 aline .248285 0 aline .22733 0 aline .226695 .000635 aline .21463 .000635 aline .213995 0 aline .18288 0 aline .182245 -.000635 aline .17399 -.000635 aline .17272 0 aline .172085 .000635 aline .17145 .001905 aline .17145 .004445 aline .172085 .00635 aline .173355 .00889 bezier .182684 .969321E-02 .198787 .942543E-02 .19812 .02286 bezier .182911 .574597E-01 .168692 .932933E-01 .152718 .127476 bezier .135272 .113829 .116904 .100809 .10033 .08636 aline .08382 .02032 aline .083185 .019685 aline .083185 .013335 aline .084455 .012065 aline .08636 .01143 aline .086995 .010795 aline .09017 .010795 aline .090805 .01016 aline .09652 .01016 aline .097155 .009525 aline .113665 .009525 aline .114935 .00889 aline .116205 .00635 aline .116205 .00508 aline .11557 .00254 aline .114935 .00127 aline .11303 -.000635 aline .10287 -.000635 aline .102235 0 aline .071755 0 aline .07112 .000635 aline .05715 .000635 aline .056515 0 aline .0254 0 aline .024765 -.000635 aline .01651 -.000635 aline .014605 .00127 aline .014605 .005715 aline .01524 .00762 aline .017145 .009525 aline .03429 .009525 bezier .418056E-01 .104407E-01 .528688E-01 .108563E-01 .05461 .020955 aline .09525 .183515 aline .103505 .216535 aline .10414 .21971 bezier .107443 .228048 .952441E-01 .227643 .09017 .2286 aline .07366 .2286 aline .071755 .230505 aline .071755 .234315 aline .07239 .23622 aline .073025 .23749 aline .07366 .238125 aline .07493 .23876 aline .08509 .23876 closepath ! end of curve fill dfont endchar dfont char="L" !-------------- Beginning of new char. dfont wid=.680557 hei=.683332 dep=0 italic=0 dfont fby=127 kadd=.0277786 set path ! start of curve newpath ! start of curve amove .08509 .23876 aline .085725 .238125 aline .116205 .238125 aline .11684 .23749 aline .13208 .23749 aline .132715 .238125 aline .169545 .238125 aline .17018 .23876 aline .18034 .23876 aline .182245 .236855 aline .182245 .23368 aline .18161 .23114 aline .180975 .22987 bezier .167137 .226604 .151762 .230658 .13843 .22479 aline .135255 .221615 aline .13335 .217805 aline .132715 .2159 aline .092075 .05334 aline .08382 .02032 aline .083185 .017145 aline .08255 .01651 aline .08255 .01143 aline .083185 .010795 aline .08636 .01016 aline .086995 .009525 aline .136525 .009525 bezier .162345 .112164E-01 .189642 .253082E-01 .20193 .04953 bezier .209376 .619603E-01 .212797 .766038E-01 .21971 .0889 aline .22098 .089535 aline .222885 .089535 aline .225425 .088265 bezier .225812 .761688E-01 .217499 .646531E-01 .21463 .052705 bezier .207207 .352276E-01 .20283 .155057E-01 .193675 -.000635 aline .01651 -.000635 aline .014605 .00127 aline .014605 .005715 aline .01524 .00762 aline .017145 .009525 aline .03429 .009525 bezier .418056E-01 .104407E-01 .528688E-01 .108563E-01 .05461 .020955 aline .09525 .183515 aline .103505 .216535 aline .10414 .21971 bezier .107443 .228048 .952441E-01 .227643 .09017 .2286 aline .07366 .2286 aline .071755 .230505 aline .071755 .234315 aline .07239 .23622 aline .073025 .23749 aline .07366 .238125 aline .07493 .23876 aline .08509 .23876 closepath ! end of curve fill dfont endchar dfont char="M" !-------------- Beginning of new char. dfont wid=.97014 hei=.683332 dep=0 italic=.109027 dfont fby=":" kadd=-.0555553 dfont fby=";" kadd=-.0555553 dfont fby="=" kadd=-.0555553 dfont fby=127 kadd=.0833359 set path ! start of curve newpath ! start of curve amove .139065 .23876 bezier .144682 .234278 .141645 .225551 .144145 .21971 bezier .152213 .156892 .160647 .942245E-01 .169545 .03175 bezier .213816 .100365 .256168 .170364 .301625 .238125 aline .30353 .23876 aline .36322 .23876 aline .36449 .238125 aline .365125 .23749 aline .36576 .23622 aline .36576 .23368 aline .365125 .231775 aline .363855 .229235 bezier .351301 .226456 .33375 .232837 .32639 .21971 aline .32512 .2159 aline .28448 .05334 aline .276225 .02032 aline .27559 .019685 aline .27559 .013335 aline .27686 .012065 aline .278765 .01143 aline .2794 .010795 aline .282575 .010795 aline .28321 .01016 aline .288925 .01016 aline .28956 .009525 aline .30607 .009525 aline .30734 .00889 aline .30861 .00635 aline .30861 .00508 aline .307975 .00254 aline .30734 .00127 aline .305435 -.000635 aline .295275 -.000635 aline .29464 0 aline .26543 0 aline .264795 .000635 aline .25146 .000635 aline .250825 0 aline .22098 0 aline .220345 -.000635 aline .21209 -.000635 aline .210185 .00127 aline .210185 .005715 aline .21082 .00762 aline .212725 .009525 aline .22987 .009525 bezier .237386 .104407E-01 .248449 .108563E-01 .25019 .020955 aline .29083 .183515 aline .301387 .225743 aline .30099 .22733 bezier .252224 .151766 .20548 .747438E-01 .155575 0 bezier .146458 -.003832 .148267 .866967E-02 .146685 .013335 bezier .137647 .842332E-01 .128013 .154885 .11811 .225425 aline .117475 .22352 aline .076835 .06096 aline .069215 .03048 bezier .655973E-01 .213902E-01 .725829E-01 .114003E-01 .08255 .010795 aline .083185 .01016 aline .08763 .01016 aline .088265 .009525 aline .09652 .009525 aline .09779 .00889 aline .09906 .00635 aline .09906 .00508 aline .098425 .00254 aline .09779 .00127 aline .095885 -.000635 aline .086995 -.000635 aline .08636 0 aline .062865 0 aline .06223 .000635 aline .0508 .000635 aline .050165 0 aline .026035 0 aline .0254 -.000635 aline .018415 -.000635 aline .01651 .00127 aline .01651 .005715 aline .017145 .00762 aline .01905 .009525 bezier .346174E-01 .873193E-02 .542618E-01 .138957E-01 .059055 .031115 aline .099695 .193675 aline .10541 .216535 aline .106045 .21971 bezier .109348 .228048 .971491E-01 .227643 .092075 .2286 aline .075565 .2286 aline .07366 .230505 aline .07366 .234315 aline .074295 .23622 aline .07493 .23749 aline .075565 .238125 aline .076835 .23876 closepath ! end of curve ! start of curve amove .301149 .227647 aline .301625 .226695 aline .302101 .227647 aline .301625 .2286 closepath ! end of curve fill dfont endchar dfont char="N" !-------------- Beginning of new char. dfont wid=.803473 hei=.683332 dep=0 italic=.109027 dfont fby=":" kadd=-.0555553 dfont fby=";" kadd=-.0555553 dfont fby="=" kadd=-.083334 dfont fby=127 kadd=.0833359 set path ! start of curve newpath ! start of curve amove .13589 .23876 bezier .164702 .176724 .188768 .111602 .216535 .048895 aline .255905 .206375 bezier .261593 .21797 .249618 .229002 .238125 .227965 aline .23749 .2286 aline .2286 .2286 aline .226695 .230505 aline .226695 .234315 aline .22733 .23622 aline .227965 .23749 aline .2286 .238125 bezier .25441 .23854 .2807 .236984 .306705 .23876 aline .307975 .238125 aline .30861 .23749 aline .309245 .23622 aline .309245 .23368 aline .30861 .231775 aline .30734 .229235 bezier .291488 .228733 .270144 .224712 .266065 .20574 aline .225425 .04318 aline .215265 .00254 aline .213995 0 bezier .203794 -.440722E-02 .203135 .970594E-02 .19939 .015875 bezier .170889 .830041E-01 .143778 .152529 .114209 .218077 aline .07366 .05588 aline .06731 .03048 bezier .636923E-01 .213902E-01 .706779E-01 .114002E-01 .080645 .010795 aline .08128 .01016 aline .085725 .01016 aline .08636 .009525 aline .094615 .009525 aline .095885 .00889 aline .097155 .00635 aline .097155 .00508 aline .09652 .00254 aline .095885 .00127 aline .09398 -.000635 aline .08509 -.000635 aline .084455 0 aline .06096 0 aline .060325 .000635 aline .048895 .000635 aline .04826 0 aline .02413 0 aline .023495 -.000635 aline .01651 -.000635 aline .014605 .00127 aline .014605 .005715 aline .01524 .00762 aline .017145 .009525 bezier .327124E-01 .873193E-02 .523568E-01 .138957E-01 .05715 .031115 aline .09779 .193675 aline .10541 .224155 aline .105833 .225425 aline .105583 .226175 aline .103505 .226695 aline .10287 .22733 aline .099695 .22733 aline .09906 .227965 aline .092075 .227965 aline .09144 .2286 aline .07366 .2286 aline .071755 .230505 aline .071755 .234315 aline .07239 .23622 aline .073025 .23749 aline .07366 .238125 aline .07493 .23876 aline .13589 .23876 closepath ! end of curve fill dfont endchar dfont char="O" !-------------- Beginning of new char. dfont wid=.762776 hei=.683332 dep=0 italic=.0277786 dfont fby=127 kadd=.0833359 set path ! start of curve newpath ! start of curve amove .178435 .24638 bezier .22258 .244767 .259602 .203036 .258445 .159385 bezier .263292 .751295E-01 .186191 -.114417E-01 .09906 -.008255 bezier .581274E-01 -.680577E-02 .209248E-01 .290856E-01 .01905 .070485 bezier .980682E-02 .152672 .800858E-01 .238076 .16256 .24638 aline .178435 .24638 closepath ! end of curve ! start of curve amove .16129 .23749 bezier .104045 .229722 .678321E-01 .173512 .056515 .120015 bezier .475143E-01 .849135E-01 .443464E-01 .409013E-01 .07366 .0127 bezier .106033 -.141839E-01 .151829 .006489 .17653 .03429 bezier .207345 .659754E-01 .221992 .112548 .227965 .154305 bezier .23093 .185644 .220692 .224272 .187325 .23495 aline .184785 .235585 aline .18288 .23622 aline .179705 .236855 aline .17907 .23749 aline .17526 .23749 aline .174625 .238125 aline .161925 .238125 aline .16129 .23749 closepath ! end of curve fill dfont endchar dfont char="P" !-------------- Beginning of new char. dfont wid=.642014 hei=.683332 dep=0 italic=.13889 dfont fby=":" kadd=-.111112 dfont fby=";" kadd=-.111112 dfont fby="=" kadd=-.0555553 dfont fby=127 kadd=.0833359 set path ! start of curve newpath ! start of curve amove .20447 .23876 bezier .230521 .237855 .260812 .220739 .26416 .192405 bezier .267176 .148995 .223783 .118551 .184785 .11176 aline .18161 .11176 aline .180975 .111125 aline .177165 .111125 aline .17653 .11049 aline .107315 .11049 aline .10668 .10922 aline .084455 .02032 aline .08382 .019685 aline .08382 .013335 aline .08509 .012065 aline .086995 .01143 aline .08763 .010795 aline .090805 .010795 aline .09144 .01016 aline .097155 .01016 aline .09779 .009525 aline .1143 .009525 aline .11557 .00889 aline .11684 .00635 aline .11684 .00508 aline .116205 .00254 aline .11557 .00127 aline .113665 -.000635 aline .103505 -.000635 aline .10287 0 aline .07239 0 aline .071755 .000635 aline .057785 .000635 aline .05715 0 aline .026035 0 aline .0254 -.000635 aline .017145 -.000635 aline .01524 .00127 aline .01524 .005715 aline .015875 .00762 aline .01778 .009525 aline .034925 .009525 bezier .424406E-01 .104407E-01 .535038E-01 .108563E-01 .055245 .020955 aline .095885 .183515 aline .10414 .216535 aline .104775 .21971 bezier .108078 .228048 .958791E-01 .227643 .090805 .2286 aline .074295 .2286 aline .07239 .230505 aline .07239 .234315 aline .073025 .23622 aline .07366 .23749 aline .074295 .238125 aline .075565 .23876 aline .20447 .23876 closepath ! end of curve ! start of curve amove .14224 .227965 aline .139065 .22733 aline .13716 .226695 aline .135255 .22479 aline .133985 .22225 aline .132715 .21844 aline .108188 .120333 aline .108585 .118745 aline .16637 .118745 bezier .190423 .120943 .217503 .134426 .22479 .16002 bezier .23104 .179888 .240174 .205801 .21971 .220345 aline .21209 .224155 aline .20828 .225425 aline .2032 .226695 aline .202565 .22733 aline .19939 .22733 aline .198755 .227965 aline .19431 .227965 aline .193675 .2286 aline .142875 .2286 closepath ! end of curve fill dfont endchar dfont char="Q" !-------------- Beginning of new char. dfont wid=.790555 hei=.683332 dep=.194445 italic=0 dfont fby=127 kadd=.0833359 set path ! start of curve newpath ! start of curve amove .178435 .24638 bezier .22258 .244767 .259602 .203036 .258445 .159385 bezier .262843 .921427E-01 .214236 .266877E-01 .153194 .3175E-03 bezier .155266 -.126845E-01 .156994 -.323196E-01 .173355 -.03556 bezier .194984 -.371748E-01 .214905 -.201755E-01 .21971 .000635 aline .221615 .00254 aline .22479 .00254 aline .226695 .000635 bezier .221097 -.282291E-01 .205328 -.622812E-01 .17399 -.069215 bezier .156211 -.729773E-01 .138376 -.584426E-01 .140335 -.040005 aline .1397 -.03937 aline .1397 -.024765 aline .140335 -.02413 aline .140335 -.01524 aline .14097 -.014605 aline .14097 -.008255 aline .141605 -.00762 aline .141605 -.00381 bezier .106518 -.132863E-01 .628873E-01 -.905252E-02 .038735 .022225 bezier -.236449E-02 .746617E-01 .224944E-01 .150131 .064135 .194945 bezier .933993E-01 .226211 .135112 .249059 .178435 .24638 closepath ! end of curve ! start of curve amove .16129 .23749 bezier .105879 .229571 .695958E-01 .175974 .056515 .12446 bezier .466501E-01 .901968E-01 .418284E-01 .510386E-01 .06477 .02032 bezier .070814 .136577E-01 .799505E-01 .591388E-02 .874713E-01 .47625E-02 bezier .762869E-01 .321248E-01 .11204 .631024E-01 .13716 .046355 bezier .147339 .038738 .149925 .251268E-01 .151765 .01397 bezier .190749 .345458E-01 .213 .792419E-01 .222885 .12192 bezier .231822 .156685 .233817 .201722 .20193 .22733 bezier .189987 .235308 .175168 .240031 .16129 .23749 closepath ! end of curve ! start of curve amove .11684 .04318 bezier .098749 .409834E-01 .825903E-01 .132254E-01 .10033 .00127 bezier .114074 -.21302E-02 .13016 .189784E-02 .14224 .00889 bezier .144072 .212475E-01 .141613 .424012E-01 .125095 .04318 aline .12446 .043815 aline .117475 .043815 closepath ! end of curve fill dfont endchar dfont char="R" !-------------- Beginning of new char. dfont wid=.75929 hei=.683332 dep=0 italic=.00772572 dfont fby=127 kadd=.0833359 set path ! start of curve newpath ! start of curve amove .191135 .23876 bezier .221137 .237857 .260728 .219234 .259715 .18415 bezier .255193 .146404 .215319 .126202 .18161 .11811 bezier .202499 .112224 .219553 .905441E-01 .213995 .06858 bezier .21464 .469362E-01 .205717 .239874E-01 .21463 .003175 bezier .226312 -.839809E-02 .24384 .552317E-02 .25019 .017145 aline .25273 .022225 aline .253365 .02413 aline .254 .0254 aline .25654 .03302 aline .257175 .03429 aline .25781 .034925 aline .25908 .03556 aline .262255 .03556 aline .263525 .034925 bezier .266765 .263703E-01 .258896 .168082E-01 .254635 .009525 bezier .237011 -.207198E-01 .180863 -.110186E-01 .17653 .02413 aline .17653 .03429 aline .177165 .034925 aline .177165 .0381 aline .1778 .041275 aline .186055 .074295 bezier .192476 .924043E-01 .177228 .114623 .15748 .114935 aline .156845 .11557 aline .107315 .11557 aline .10668 .1143 aline .083185 .02032 aline .08255 .019685 aline .08255 .013335 aline .08382 .012065 aline .085725 .01143 aline .08636 .010795 aline .089535 .010795 aline .09017 .01016 aline .095885 .01016 aline .09652 .009525 aline .11303 .009525 aline .1143 .00889 aline .11557 .00635 aline .11557 .00508 aline .114935 .00254 aline .1143 .00127 aline .112395 -.000635 aline .102235 -.000635 aline .1016 0 aline .071755 0 aline .07112 .000635 aline .05715 .000635 aline .056515 0 aline .026035 0 aline .0254 -.000635 aline .017145 -.000635 aline .01524 .00127 aline .01524 .005715 aline .015875 .00762 aline .01778 .009525 aline .034925 .009525 bezier .424406E-01 .104407E-01 .535038E-01 .108563E-01 .055245 .020955 aline .095885 .183515 aline .10414 .216535 aline .104775 .21971 bezier .108078 .228048 .958791E-01 .227643 .090805 .2286 aline .074295 .2286 aline .07239 .230505 aline .07239 .234315 aline .073025 .23622 aline .07366 .23749 aline .074295 .238125 aline .075565 .23876 aline .191135 .23876 closepath ! end of curve ! start of curve amove .14224 .227965 aline .139065 .22733 aline .13716 .226695 aline .135255 .22479 aline .133985 .22225 aline .132715 .21844 aline .10922 .12446 aline .108744 .123507 aline .10922 .122555 aline .15748 .122555 bezier .182145 .124649 .21162 .136826 .220345 .163195 bezier .227889 .181889 .232942 .209553 .211455 .22098 bezier .202862 .225723 .192982 .227182 .18415 .2286 aline .142875 .2286 closepath ! end of curve fill dfont endchar dfont char="S" !-------------- Beginning of new char. dfont wid=.613195 hei=.683332 dep=0 italic=.0576382 dfont fby=":" kadd=-.0555553 dfont fby=";" kadd=-.0555553 dfont fby="=" kadd=-.0555553 dfont fby=127 kadd=.0833359 set path ! start of curve newpath ! start of curve amove .15621 .24638 bezier .172712 .245232 .190784 .236994 .19939 .221615 bezier .206316 .229912 .212878 .238472 .220345 .24638 aline .224155 .24638 aline .22479 .245745 aline .22606 .24511 aline .22606 .2413 aline .206375 .16256 aline .20574 .16129 aline .20447 .16002 aline .200025 .16002 aline .198755 .160655 bezier .19884 .17921 .202325 .200664 .1905 .217805 bezier .168697 .248798 .119113 .240505 .099695 .21082 bezier .842202E-01 .192557 .819057E-01 .160706 .10541 .147955 bezier .132165 .136761 .168501 .139485 .18542 .112395 bezier .215518 .546359E-01 .151939 -.200194E-01 .090805 -.006985 bezier .734077E-01 -.62647E-02 .571348E-01 .298021E-02 .460375E-01 .157163E-01 bezier .382921E-01 .851108E-02 .326657E-01 -.123385E-02 .024765 -.008255 aline .020955 -.008255 aline .019685 -.006985 aline .01905 -.005715 aline .01905 -.004445 aline .03937 .076835 aline .04064 .07747 aline .041275 .078105 aline .04572 .078105 aline .047625 .0762 bezier .411824E-01 .538807E-01 .440097E-01 .245992E-01 .066675 .01143 bezier .094454 -.440027E-02 .132473 -.956567E-03 .1524 .026035 bezier .169871 .457102E-01 .177777 .807138E-01 .15367 .098425 bezier .125251 .1124 .833884E-01 .107476 .067945 .140335 bezier .471036E-01 .193561 .102344 .251616 .15621 .24638 closepath ! end of curve fill dfont endchar dfont char="T" !-------------- Beginning of new char. dfont wid=.584376 hei=.683332 dep=0 italic=.13889 dfont fby=":" kadd=-.0555553 dfont fby=";" kadd=-.0555553 dfont fby="=" kadd=-.0277786 dfont fby=127 kadd=.0833359 set path ! start of curve newpath ! start of curve amove .24511 .236855 aline .247015 .23495 bezier .2444 .209503 .239369 .185578 .23622 .16002 aline .234315 .158115 aline .22987 .158115 aline .227965 .16002 bezier .228863 .178012 .236214 .197416 .227965 .215265 aline .22352 .21971 aline .22225 .220345 aline .221615 .22098 aline .219075 .22225 aline .21336 .224155 aline .20701 .225425 aline .206375 .22606 aline .20066 .22606 aline .200025 .226695 aline .16129 .226695 aline .160655 .22606 aline .15748 .225425 aline .155575 .22479 aline .15367 .222885 aline .153035 .221615 aline .15113 .2159 aline .11049 .05334 aline .10287 .02286 aline .102235 .019685 aline .101838 .180975E-01 aline .10287 .01397 aline .10414 .0127 aline .106045 .012065 aline .10922 .01143 aline .109855 .010795 aline .113665 .010795 aline .1143 .01016 aline .12319 .01016 aline .123825 .009525 aline .14732 .009525 aline .149225 .00762 aline .149225 .00381 aline .14859 .001905 aline .147955 .000635 aline .14732 0 aline .14605 -.000635 aline .13335 -.000635 aline .132715 0 aline .09271 0 aline .092075 .000635 aline .073025 .000635 aline .07239 0 aline .03175 0 aline .031115 -.000635 aline .02032 -.000635 aline .01905 0 aline .018415 .000635 aline .01778 .001905 aline .01778 .004445 aline .018415 .006985 aline .01905 .008255 bezier .350041E-01 .117318E-01 .526641E-01 .698159E-02 .067945 .01397 aline .070485 .01651 aline .07112 .01778 aline .071755 .018415 aline .073025 .020955 aline .113665 .183515 aline .12192 .216535 aline .122555 .21971 aline .12319 .220345 aline .12319 .22479 aline .12192 .225425 aline .118745 .22606 aline .11811 .226695 aline .079375 .226695 bezier .626757E-01 .225312 .424607E-01 .218835 .03429 .20193 bezier .260413E-01 .188177 .226046E-01 .171879 .01524 .158115 aline .010795 .158115 aline .00889 .16002 bezier .158892E-01 .18569 .256051E-01 .211294 .034925 .23622 aline .036195 .236855 aline .24511 .236855 closepath ! end of curve fill dfont endchar dfont char="U" !-------------- Beginning of new char. dfont wid=.682777 hei=.683332 dep=0 italic=.109027 dfont fby=":" kadd=-.111112 dfont fby=";" kadd=-.111112 dfont fby="=" kadd=-.0555553 dfont fby=127 kadd=.0277786 set path ! start of curve newpath ! start of curve amove .042545 .23876 aline .04318 .238125 aline .07366 .238125 aline .074295 .23749 aline .088265 .23749 aline .0889 .238125 aline .11938 .238125 aline .120015 .23876 aline .12827 .23876 aline .12954 .238125 aline .130175 .23749 aline .13081 .23622 aline .13081 .23368 aline .130175 .231775 aline .128905 .229235 bezier .116351 .226456 .0988 .232837 .09144 .21971 aline .09017 .2159 aline .05461 .07366 bezier .477855E-01 .502178E-01 .492824E-01 .154617E-01 .076835 .00508 bezier .113437 -.680117E-02 .152489 .205496E-01 .17018 .05207 aline .174625 .06096 aline .17526 .062865 aline .17653 .065405 aline .1778 .069215 aline .178435 .070485 aline .17907 .07239 aline .179705 .07493 aline .18034 .076835 aline .212725 .206375 bezier .218413 .21797 .206438 .229002 .194945 .227965 aline .19431 .2286 aline .18542 .2286 aline .183515 .230505 aline .183515 .234315 aline .18415 .23622 aline .184785 .23749 aline .18542 .238125 bezier .211438 .238547 .237957 .236951 .26416 .23876 aline .26543 .238125 aline .266065 .23749 aline .2667 .23622 aline .2667 .23368 aline .266065 .231775 aline .264795 .229235 bezier .248943 .228733 .227599 .224712 .22352 .20574 aline .191135 .0762 bezier .177672 .259156E-01 .125619 -.019772 .071755 -.005715 bezier .388138E-01 .209628E-02 .184696E-01 .038611 .0254 .06985 aline .0254 .07366 aline .026035 .076835 aline .06096 .216535 aline .061595 .21971 bezier .064898 .228048 .526991E-01 .227643 .047625 .2286 aline .031115 .2286 aline .02921 .230505 aline .02921 .234315 aline .029845 .23622 aline .03048 .23749 aline .031115 .238125 aline .032385 .23876 aline .042545 .23876 closepath ! end of curve fill dfont endchar dfont char="V" !-------------- Beginning of new char. dfont wid=.583334 hei=.683332 dep=0 italic=.222223 dfont fby=":" kadd=-.166667 dfont fby=";" kadd=-.166667 dfont fby="=" kadd=-.111112 set path ! start of curve newpath ! start of curve amove .03175 .23876 aline .032385 .238125 aline .05715 .238125 aline .057785 .23749 aline .070485 .23749 aline .07112 .238125 aline .102235 .238125 aline .10287 .23876 aline .111125 .23876 aline .112395 .238125 aline .113665 .235585 aline .113665 .234315 aline .11303 .231775 aline .112395 .230505 aline .11049 .2286 bezier .998274E-01 .228468 .861931E-01 .229437 .08001 .219075 bezier .874667E-01 .156179 .955264E-01 .935321E-01 .10414 .031115 bezier .141386 .913603E-01 .180397 .150545 .216535 .211455 bezier .222135 .222605 .207569 .229886 .19812 .2286 aline .19685 .229235 aline .19558 .231775 aline .19558 .23241 aline .196215 .23495 aline .19685 .236855 aline .198755 .23876 bezier .222332 .237393 .246049 .238137 .26924 .238125 aline .27051 .235585 aline .27051 .234315 aline .269875 .231775 aline .26924 .230505 aline .267335 .2286 bezier .243545 .230353 .225966 .210613 .2159 .191135 bezier .173993 .125245 .13326 .585099E-01 .090805 -.006985 aline .088265 -.008255 aline .08128 -.008255 aline .07874 -.005715 bezier .689139E-01 .705888E-01 .602232E-01 .146937 .048895 .222885 bezier .042509 .231857 .296945E-01 .226168 .020955 .22987 aline .02032 .23114 aline .02032 .23368 aline .020955 .235585 aline .022225 .238125 aline .023495 .23876 aline .03175 .23876 closepath ! end of curve fill dfont endchar dfont char="W" !-------------- Beginning of new char. dfont wid=.944446 hei=.683332 dep=0 italic=.13889 dfont fby=":" kadd=-.166667 dfont fby=";" kadd=-.166667 dfont fby="=" kadd=-.111112 set path ! start of curve newpath ! start of curve amove .031115 .23876 aline .03175 .238125 aline .055245 .238125 aline .05588 .23749 aline .067945 .23749 aline .06858 .238125 aline .099695 .238125 aline .10033 .23876 aline .108585 .23876 aline .109855 .238125 aline .11049 .23749 aline .111125 .23622 aline .111125 .234315 aline .11049 .231775 aline .10922 .229235 bezier .985102E-01 .227663 .851327E-01 .229867 .07747 .220345 bezier .771018E-01 .180743 .831514E-01 .141881 .084455 .102235 bezier .871099E-01 .809556E-01 .869615E-01 .585151E-01 .09017 .037465 bezier .119786 .0897 .149819 .141635 .179705 .193675 aline .179705 .20193 bezier .177067 .210306 .182199 .224766 .170815 .227965 aline .16637 .227965 aline .165735 .2286 aline .153035 .2286 aline .15113 .230505 aline .15113 .23368 aline .151765 .23622 aline .1524 .23749 aline .153035 .238125 aline .154305 .23876 aline .16256 .23876 aline .163195 .238125 aline .186055 .238125 aline .18669 .23749 aline .19939 .23749 aline .200025 .238125 aline .230505 .238125 aline .23114 .23876 aline .24003 .23876 aline .241935 .236855 aline .241935 .23368 aline .2413 .23114 aline .240665 .22987 bezier .229982 .226779 .214618 .230589 .207645 .219075 bezier .211383 .158245 .215715 .976621E-01 .22098 .037465 bezier .253997 .095226 .287564 .152803 .32004 .21082 bezier .323447 .223572 .307008 .229503 .296545 .2286 aline .295275 .229235 aline .29464 .22987 aline .294005 .23114 aline .294005 .233045 aline .29464 .235585 aline .295275 .236855 aline .29718 .23876 aline .30607 .23876 aline .306705 .238125 aline .33274 .238125 aline .333375 .23749 aline .343535 .23749 aline .34417 .238125 aline .36068 .238125 aline .361315 .23876 aline .366395 .23876 aline .3683 .236855 aline .3683 .23368 aline .367665 .23114 aline .36703 .22987 bezier .354482 .227648 .339227 .224544 .33147 .21209 bezier .286831 .140574 .247709 .650821E-01 .203835 -.006985 aline .201295 -.008255 aline .19685 -.008255 aline .194945 -.00635 bezier .189268 .554092E-01 .186751 .117495 .18034 .17907 bezier .144226 .117298 .109621 .544389E-01 .073025 -.006985 aline .070485 -.008255 aline .06604 -.008255 aline .06477 -.00762 bezier .569555E-01 .639148E-01 .054274 .137086 .047625 .208915 bezier .476152E-01 .216231 .048605 .226521 .03937 .227965 aline .03556 .227965 aline .034925 .2286 aline .022225 .2286 aline .02032 .230505 aline .02032 .234315 aline .020955 .236855 aline .02286 .23876 aline .031115 .23876 closepath ! end of curve fill dfont endchar dfont char="X" !-------------- Beginning of new char. dfont wid=.828474 hei=.683332 dep=0 italic=.0784712 dfont fby=":" kadd=-.0555553 dfont fby=";" kadd=-.0555553 dfont fby="=" kadd=-.083334 dfont fby=127 kadd=.0833359 set path ! start of curve newpath ! start of curve amove .08382 .23876 aline .084455 .238125 aline .109855 .238125 aline .11049 .23749 aline .12319 .23749 aline .123825 .238125 aline .15494 .238125 aline .155575 .23876 aline .164465 .23876 aline .16637 .236855 aline .16637 .23241 aline .165735 .230505 bezier .158058 .226463 .145735 .228402 .1397 .21971 bezier .138051 .214218 .1443 .20791 .145415 .20193 bezier .154123 .182704 .161522 .162524 .170498 .143669 bezier .191413 .165011 .21183 .187287 .231775 .20955 bezier .239814 .218711 .229061 .230347 .21844 .2286 aline .21717 .229235 aline .216535 .22987 aline .2159 .23114 aline .2159 .23368 aline .216535 .235585 aline .217805 .238125 bezier .24389 .238867 .270423 .236697 .296545 .23876 aline .297815 .238125 aline .29845 .23749 aline .299085 .23622 aline .299085 .23368 aline .29845 .23114 aline .297815 .22987 bezier .280806 .227578 .261028 .223935 .24765 .21082 bezier .221606 .186699 .198654 .159033 .17399 .13335 bezier .192723 .940636E-01 .206465 .516443E-01 .226695 .013335 aline .229235 .012065 aline .23114 .01143 aline .234315 .010795 aline .23495 .01016 aline .24003 .01016 aline .240665 .009525 aline .254 .009525 aline .25527 .00889 aline .255905 .008255 aline .25654 .006985 aline .25654 .00508 aline .255905 .00254 aline .254635 0 aline .253365 -.000635 aline .244475 -.000635 aline .24384 0 aline .219075 0 aline .21844 .000635 aline .205105 .000635 aline .20447 0 aline .173355 0 aline .17272 -.000635 aline .16383 -.000635 aline .161925 .00127 aline .161925 .00508 aline .16256 .006985 aline .163195 .008255 bezier .171766 .110509E-01 .184408 .010375 .189706 .200025E-01 bezier .176959 .496766E-01 .164885 .798198E-01 .151765 .10922 bezier .126435 .812298E-01 .987526E-01 .549346E-01 .075565 .0254 bezier .701845E-01 .159382E-01 .082173 .825107E-02 .090805 .009525 aline .09271 .00762 aline .09271 .00381 aline .092075 .00127 aline .09017 -.000635 aline .080645 -.000635 aline .08001 0 aline .052705 0 aline .05207 .000635 aline .04064 .000635 aline .040005 0 aline .018415 0 aline .01778 -.000635 aline .012065 -.000635 aline .01016 .00127 aline .01016 .005715 aline .010795 .00762 aline .0127 .009525 bezier .042525 .788854E-02 .671909E-01 .293704E-01 .08509 .051435 bezier .106188 .739114E-01 .127763 .961875E-01 .147743 .11938 bezier .133205 .153668 .119121 .188145 .10414 .22225 aline .1016 .22479 aline .09906 .22606 aline .097155 .226695 aline .09398 .22733 aline .093345 .227965 aline .0889 .227965 aline .088265 .2286 aline .074295 .2286 aline .073025 .229235 aline .071755 .231775 aline .071755 .23241 aline .07239 .23495 aline .073025 .236855 aline .07493 .23876 aline .08382 .23876 closepath ! end of curve fill dfont endchar dfont char="Y" !-------------- Beginning of new char. dfont wid=.580557 hei=.683332 dep=0 italic=.222223 dfont fby=":" kadd=-.166667 dfont fby=";" kadd=-.166667 dfont fby="=" kadd=-.111112 set path ! start of curve newpath ! start of curve amove .024765 .23876 aline .0254 .238125 aline .0508 .238125 aline .051435 .23749 aline .064135 .23749 aline .06477 .238125 aline .09652 .238125 aline .097155 .23876 aline .106045 .23876 aline .10795 .236855 aline .10795 .23368 aline .107315 .23114 aline .10668 .22987 bezier .976903E-01 .226824 .860164E-01 .230598 .07874 .22225 bezier .899722E-01 .184455 .106408 .147001 .11938 .10922 bezier .149095 .143087 .17926 .17663 .207645 .211455 aline .20955 .215265 bezier .215225 .224583 .202525 .22983 .194945 .2286 aline .19304 .230505 aline .19304 .23368 aline .193675 .23622 aline .19431 .23749 aline .194945 .238125 bezier .218248 .238825 .242101 .236675 .26543 .23876 aline .2667 .238125 aline .267335 .23749 aline .26797 .23622 aline .26797 .234315 aline .267335 .231775 aline .2667 .230505 aline .264795 .2286 bezier .229545 .229525 .208096 .196407 .187325 .17272 bezier .164647 .14631 .140441 .120786 .11938 .093345 aline .102235 .024765 aline .100965 .018415 bezier .097662 .100774E-01 .109861 .104819E-01 .114935 .009525 aline .131445 .009525 aline .13335 .00762 aline .13335 .004445 aline .132715 .001905 aline .13208 .000635 aline .131445 0 aline .130175 -.000635 aline .120015 -.000635 aline .11938 0 aline .089535 0 aline .0889 .000635 aline .07493 .000635 aline .074295 0 aline .043815 0 aline .04318 -.000635 aline .034925 -.000635 aline .03302 .00127 aline .03302 .005715 aline .033655 .00762 aline .03556 .009525 aline .052705 .009525 bezier .612384E-01 .994213E-02 .730084E-01 .121119E-01 .07366 .023495 aline .074295 .0254 aline .09144 .09398 bezier .772181E-01 .136545 .060103 .17962 .04445 .22225 bezier .365265E-01 .231585 .232847E-01 .226364 .013335 .22987 aline .0127 .23114 aline .0127 .23368 aline .013335 .23622 aline .01397 .23749 aline .014605 .238125 aline .015875 .23876 aline .024765 .23876 closepath ! end of curve fill dfont endchar dfont char="Z" !-------------- Beginning of new char. dfont wid=.68264 hei=.683332 dep=0 italic=.0715275 dfont fby=":" kadd=-.0555553 dfont fby=";" kadd=-.0555553 dfont fby="=" kadd=-.0555553 dfont fby=127 kadd=.0833359 set path ! start of curve newpath ! start of curve amove .252095 .23876 aline .253365 .23749 aline .253365 .234315 bezier .244146 .218605 .228963 .206394 .217805 .19177 bezier .163967 .131863 .110541 .716588E-01 .05715 .01143 aline .057785 .010795 aline .126365 .010795 bezier .151907 .116855E-01 .181117 .227574E-01 .193675 .047625 bezier .202367 .615757E-01 .204981 .079014 .212725 .09271 aline .216535 .09271 aline .217805 .092075 aline .219075 .089535 bezier .20976 .596954E-01 .200825 .295127E-01 .1905 0 aline .18923 -.000635 aline .02286 -.000635 aline .02159 0 bezier .199241E-01 .117791E-01 .340496E-01 .180539E-01 .03937 .027305 bezier .986083E-01 .942722E-01 .160563 .161719 .217805 .2286 aline .151765 .2286 bezier .125832 .227969 .971055E-01 .215127 .08509 .189865 bezier .798649E-01 .180642 .772464E-01 .170142 .073025 .160655 aline .071755 .16002 aline .067945 .16002 aline .06604 .161925 bezier .719027E-01 .187535 .801861E-01 .213359 .0889 .238125 aline .09017 .23876 aline .252095 .23876 closepath ! end of curve fill dfont endchar dfont char="[" !-------------- Beginning of new char. dfont wid=.38889 hei=.75 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .02667 .262255 aline .028575 .26035 aline .028575 .14605 bezier .493822E-01 .164427 .091243 .167339 .10795 .1397 bezier .12805 .107047 .108883 .659384E-01 .085725 .040005 bezier .681325E-01 .210151E-01 .475924E-01 .611485E-02 .02667 -.008255 aline .022225 -.008255 aline .02032 -.00635 aline .02032 .259715 aline .020955 .260985 aline .02159 .26162 aline .02286 .262255 aline .02667 .262255 closepath ! end of curve ! start of curve amove .06223 .14732 bezier .491327E-01 .146963 .317276E-01 .141144 .028575 .126365 aline .028575 .005715 bezier .422287E-01 .146225E-01 .542382E-01 .308894E-01 .06477 .04445 bezier .830039E-01 .721292E-01 .097939 .109366 .080645 .140335 aline .0762 .14478 aline .07239 .146685 aline .069215 .14732 aline .06858 .147955 aline .062865 .147955 aline .06223 .14732 closepath ! end of curve fill dfont endchar dfont char="\" !-------------- Beginning of new char. dfont wid=.38889 hei=.694445 dep=.194445 italic=0 set path ! start of curve newpath ! start of curve amove .03429 .254635 aline .03556 .254 aline .036195 .253365 aline .03683 .252095 aline .03683 .153035 bezier .598418E-01 .159556 .826223E-01 .172335 .106045 .178435 aline .10795 .17653 aline .10795 -.07493 aline .106045 -.076835 aline .10414 -.07747 aline .102235 -.07747 aline .100965 -.076835 aline .10033 -.0762 aline .099695 -.07493 aline .099695 -.00381 bezier .766836E-01 -.103307E-01 .539026E-01 -.231098E-01 .03048 -.02921 aline .028575 -.027305 aline .028575 .252095 aline .03048 .254 aline .032385 .254635 closepath ! end of curve ! start of curve amove .09779 .14732 bezier .774515E-01 .139321 .570685E-01 .13143 .03683 .12319 aline .03683 .001905 bezier .576475E-01 .838181E-02 .788379E-01 .180679E-01 .099695 .026035 aline .099695 .14732 aline .987425E-01 .147796 aline .09779 .14732 closepath ! end of curve fill dfont endchar dfont char="]" !-------------- Beginning of new char. dfont wid=.38889 hei=.694445 dep=.194445 italic=0 set path ! start of curve newpath ! start of curve amove .098425 .250825 aline .099695 .25019 aline .100965 .249555 aline .1016 .248285 aline .1016 .175895 aline .102553 .175419 aline .103505 .175895 aline .111125 .178435 aline .1143 .178435 aline .116205 .17653 aline .116205 .1524 aline .1143 .150495 aline .11176 .14986 aline .102235 .146685 aline .1016 .14605 aline .1016 .024765 aline .102553 .242887E-01 aline .103505 .024765 aline .111125 .027305 aline .1143 .027305 aline .116205 .0254 aline .116205 .00127 aline .1143 -.000635 aline .11176 -.00127 aline .102235 -.004445 aline .1016 -.00508 aline .1016 -.05588 aline .099695 -.057785 aline .098425 -.05842 aline .09525 -.05842 aline .093345 -.056515 aline .093345 -.00762 aline .09271 -.006985 aline .092075 -.00762 aline .07874 -.012065 aline .0762 -.0127 aline .06096 -.01778 aline .05842 -.018415 aline .04318 -.023495 aline .04318 -.07493 aline .041275 -.076835 aline .038735 -.07747 aline .0381 -.07747 aline .03556 -.0762 aline .034925 -.07493 aline .034925 -.02667 aline .339725E-01 -.261938E-01 aline .03302 -.02667 aline .0254 -.02921 aline .022225 -.02921 aline .02032 -.027305 aline .02032 -.00381 aline .020955 -.00254 aline .02159 -.001905 aline .02286 -.00127 aline .03429 .00254 aline .034925 .003175 aline .034925 .12446 aline .339725E-01 .124936 aline .03302 .12446 aline .0254 .12192 aline .022225 .12192 aline .02032 .123825 aline .02032 .14732 aline .020955 .14859 aline .02159 .149225 aline .02286 .14986 aline .03429 .15367 aline .034925 .154305 aline .034925 .229235 aline .03683 .23114 aline .0381 .231775 aline .041275 .231775 aline .04318 .22987 aline .04318 .156845 aline .043815 .15621 aline .04445 .156845 aline .057785 .16129 aline .060325 .161925 aline .075565 .167005 aline .078105 .16764 aline .093345 .17272 aline .093345 .248285 aline .09525 .25019 aline .09779 .250825 closepath ! end of curve ! start of curve amove .092075 .14351 aline .09017 .142875 aline .07874 .139065 aline .0762 .13843 aline .06096 .13335 aline .05842 .132715 aline .04318 .127635 aline .04318 .005715 aline .043815 .00508 aline .04445 .005715 aline .057785 .01016 aline .060325 .010795 aline .075565 .015875 aline .078105 .01651 aline .093345 .02159 aline .093345 .14351 aline .09271 .144145 aline .092075 .14351 closepath ! end of curve fill dfont endchar dfont char="^" !-------------- Beginning of new char. dfont wid=1 hei=.35764 dep=-.14236 italic=0 set path ! start of curve newpath ! start of curve amove .026035 .128905 bezier .056644 .852968E-01 .112869 .064009 .163195 .061595 bezier .215756 .596029E-01 .272653 .729918E-01 .31115 .112395 bezier .315998 .117716 .319985 .124081 .32512 .128905 bezier .333072 .130202 .331281 .120808 .327025 .117475 bezier .278638 .543009E-01 .190158 .323152E-01 .11684 .05461 bezier .780955E-01 .663424E-01 .432436E-01 .901039E-01 .02032 .12319 aline .02032 .126365 aline .020955 .127635 aline .022225 .12827 aline .02286 .128905 aline .026035 .128905 aline .02667 .12827 closepath ! end of curve fill dfont endchar dfont char="_" !-------------- Beginning of new char. dfont wid=1 hei=.35764 dep=-.14236 italic=0 set path ! start of curve newpath ! start of curve amove .18669 .132715 bezier .242457 .129847 .300097 .992956E-01 .330835 .0508 bezier .332226 .422229E-01 .321556 .448157E-01 .32004 .0508 bezier .277939 .110057 .195459 .127477 .12954 .112395 bezier .876926E-01 .103962 .498196E-01 .797372E-01 .026035 .045085 bezier .171895E-01 .044023 .206906E-01 .054185 .024765 .057785 bezier .615497E-01 .108379 .125366 .136577 .18669 .132715 closepath ! end of curve fill dfont endchar dfont char="`" !-------------- Beginning of new char. dfont wid=.41667 hei=.694445 dep=0 italic=0 dfont fby=127 kadd=.111115 set path ! start of curve newpath ! start of curve amove .12319 .24638 bezier .142433 .242702 .140573 .219278 .13843 .205105 bezier .128694 .149294 .090334 .106557 .052705 .06731 bezier .523019E-01 .461613E-01 .486851E-01 .208974E-01 .06477 .004445 bezier .835521E-01 -.292576E-02 .100922 .140925E-01 .1143 .0254 aline .121285 .032385 aline .123825 .033655 aline .12446 .033655 aline .12573 .03302 aline .127635 .031115 aline .12827 .029845 aline .12827 .02794 bezier .110526 .929634E-02 .834849E-01 -.143331E-01 .056515 -.000635 bezier .401512E-01 .958467E-02 .364875E-01 .031589 .333375E-01 .481013E-01 aline .032385 .047625 aline .019685 .034925 aline .018415 .03429 aline .01016 .026035 aline .008255 .0254 aline .00635 .026035 aline .004445 .02794 aline .00381 .02921 aline .00381 .031115 aline .004445 .032385 aline .00762 .03556 aline .00889 .036195 aline .022225 .04953 aline .023495 .050165 aline .03302 .05969 bezier .332561E-01 .118428 .532472E-01 .180623 .0889 .2286 aline .098425 .238125 aline .099695 .23876 aline .100965 .24003 aline .102235 .240665 aline .10287 .2413 aline .10414 .241935 aline .104775 .24257 aline .108585 .244475 aline .112395 .245745 aline .11557 .24638 closepath ! end of curve ! start of curve amove .116205 .23876 bezier .972697E-01 .227758 .916363E-01 .203647 .08255 .184785 bezier .710421E-01 .151891 .617249E-01 .116786 .05588 .083185 bezier .935369E-01 .122669 .131919 .171552 .131445 .2286 aline .13081 .229235 aline .12954 .233045 aline .128905 .234315 aline .12827 .23495 aline .127635 .23622 aline .127 .236855 aline .12319 .23876 aline .122555 .239395 aline .11684 .239395 closepath ! end of curve fill dfont endchar dfont char="a" !-------------- Beginning of new char. dfont wid=.52859 hei=.430555 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .10414 .15367 bezier .116472 .152079 .126517 .143098 .131445 .13208 bezier .132188 .143151 .147541 .152923 .155575 .14224 aline .15621 .140335 aline .15621 .13462 aline .13081 .03302 bezier .128179 .233029E-01 .126154 .008314 .13716 .00254 bezier .155523 .208581E-02 .159788 .247136E-01 .164465 .038735 aline .167005 .048895 aline .16764 .0508 aline .169545 .052705 aline .173355 .052705 aline .174625 .05207 aline .175895 .0508 bezier .171603 .303008E-01 .166956 .173118E-02 .14351 -.004445 bezier .126937 -.676785E-02 .109573 .461572E-02 .107315 .02159 bezier .915018E-01 .485324E-04 .591061E-01 -.143901E-01 .03556 .00381 bezier .817805E-02 .260016E-01 .122284E-01 .658589E-01 .024765 .09525 bezier .379327E-01 .12333 .628698E-01 .149373 .094615 .15367 closepath ! end of curve ! start of curve amove .09525 .14605 bezier .606945E-01 .135097 .514399E-01 .949528E-01 .043815 .0635 bezier .393374E-01 .447927E-01 .352422E-01 .207227E-01 .051435 .005715 bezier .718976E-01 -.447854E-02 .924745E-01 .015131 .10414 .03048 aline .104775 .03175 aline .106045 .03302 aline .10668 .03429 aline .107315 .034925 aline .10795 .036195 aline .127 .112395 bezier .128393 .128511 .114425 .149325 .095885 .146685 closepath ! end of curve fill dfont endchar dfont char="b" !-------------- Beginning of new char. dfont wid=.429167 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .08255 .24257 aline .08382 .241935 aline .08509 .239395 aline .08509 .23876 aline .592931E-01 .135573 aline .05969 .133985 bezier .763165E-01 .153038 .108401 .162313 .12827 .142875 bezier .149814 .123635 .148231 .918495E-01 .14097 .066675 bezier .129331 .302028E-01 .972959E-01 -.591785E-02 .056515 -.004445 bezier .034143 -.23247E-02 .190956E-01 .201561E-01 .01778 .041275 aline .01778 .05969 aline .018415 .060325 aline .018415 .064135 aline .01905 .06477 aline .01905 .067945 aline .02032 .074295 aline .05588 .216535 aline .056515 .21717 aline .056515 .220345 aline .056896 .22225 aline .056515 .224155 aline .05588 .22606 aline .053975 .226695 aline .051435 .22733 aline .0508 .227965 aline .046355 .227965 aline .04572 .2286 aline .03302 .2286 aline .031115 .230505 aline .031115 .234315 aline .03175 .236855 aline .033655 .23876 bezier .480835E-01 .239945 .626615E-01 .240769 .076835 .24257 closepath ! end of curve ! start of curve amove .094615 .14605 bezier .762816E-01 .142259 .062061 .127383 .05334 .11176 aline .04191 .06604 bezier .369763E-01 .458478E-01 .331358E-01 .017975 .05334 .004445 bezier .732797E-01 -.279241E-02 .907525E-01 .171938E-01 .099695 .03302 bezier .112294 .602446E-01 .120696 .902938E-01 .121285 .11938 bezier .12003 .132324 .111142 .149455 .09525 .146685 closepath ! end of curve ! start of curve amove .059055 .13335 aline .05969 .133985 aline .059055 .13462 aline .05842 .133985 aline .059055 .13335 closepath ! end of curve fill dfont endchar dfont char="c" !-------------- Beginning of new char. dfont wid=.432756 hei=.430555 dep=0 italic=0 dfont fby=127 kadd=.0555573 set path ! start of curve newpath ! start of curve amove .11557 .15367 bezier .132509 .152951 .154049 .139042 .149225 .120015 bezier .151278 .103865 .1235 .934128E-01 .11811 .11049 bezier .11548 .123135 .127368 .133598 .139065 .132715 bezier .124915 .152921 .943811E-01 .149305 .078105 .13335 bezier .539588E-01 .113232 .469785E-01 .788716E-01 .041275 .050165 bezier .390279E-01 .314204E-01 .449958E-01 .671817E-02 .066675 .003175 bezier .965167E-01 .162843E-03 .127998 .167443E-01 .14605 .041275 bezier .154427 .419712E-01 .15184 .319775E-01 .146685 .02921 bezier .121663 .242724E-03 .755918E-01 -.151115E-01 .04064 .00381 bezier .431093E-02 .283931E-01 .011683 .825869E-01 .036195 .11303 bezier .544358E-01 .137511 .843386E-01 .156057 .11557 .15367 closepath ! end of curve fill dfont endchar dfont char="d" !-------------- Beginning of new char. dfont wid=.520488 hei=.694445 dep=0 italic=0 dfont fby="Y" kadd=.0555553 dfont fby="Z" kadd=-.0555553 dfont fby="f" kadd=-.166667 dfont fby="j" kadd=-.111112 dfont fby=127 kadd=.166672 set path ! start of curve newpath ! start of curve amove .179705 .24257 aline .180975 .241935 aline .182245 .239395 aline .182245 .23876 aline .141605 .0762 aline .13081 .03302 bezier .128179 .233029E-01 .126154 .008314 .13716 .00254 bezier .155523 .208581E-02 .159788 .247136E-01 .164465 .038735 aline .167005 .048895 aline .16764 .0508 aline .169545 .052705 aline .173355 .052705 aline .174625 .05207 aline .175895 .0508 bezier .171603 .303008E-01 .166956 .173118E-02 .14351 -.004445 bezier .126937 -.676785E-02 .109573 .461572E-02 .107315 .02159 bezier .915018E-01 .485324E-04 .591061E-01 -.143901E-01 .03556 .00381 bezier .817805E-02 .260016E-01 .122284E-01 .658589E-01 .024765 .09525 bezier .039629 .126964 .720151E-01 .159558 .109855 .1524 bezier .120103 .14992 .127337 .139031 .13208 .132715 aline .153035 .216535 aline .15367 .21717 aline .15367 .220345 aline .154051 .22225 aline .15367 .224155 aline .153035 .22606 aline .15113 .226695 aline .14859 .22733 aline .147955 .227965 aline .14351 .227965 aline .142875 .2286 aline .130175 .2286 aline .12827 .230505 aline .12827 .234315 aline .128905 .236855 aline .13081 .23876 bezier .145239 .239945 .159816 .240769 .17399 .24257 closepath ! end of curve ! start of curve amove .09525 .14605 bezier .606945E-01 .135097 .514399E-01 .949528E-01 .043815 .0635 bezier .393374E-01 .447927E-01 .352422E-01 .207227E-01 .051435 .005715 bezier .718976E-01 -.447854E-02 .924745E-01 .015131 .10414 .03048 aline .104775 .03175 aline .106045 .03302 aline .10668 .03429 aline .107315 .034925 aline .10795 .036195 aline .127 .112395 bezier .128393 .128511 .114425 .149325 .095885 .146685 closepath ! end of curve fill dfont endchar dfont char="e" !-------------- Beginning of new char. dfont wid=.465627 hei=.430555 dep=0 italic=0 dfont fby=127 kadd=.0555573 set path ! start of curve newpath ! start of curve amove .114935 .15367 bezier .132991 .153002 .151081 .135778 .145415 .11684 bezier .138468 .872975E-01 .103248 .811693E-01 .078105 .08128 aline .07747 .080645 aline .04826 .080645 bezier .041786 .566516E-01 .361041E-01 .284603E-01 .055245 .008255 bezier .764519E-01 -.486015E-02 .102531 .723054E-02 .122555 .018415 bezier .131669 .245073E-01 .138921 .330219E-01 .14605 .041275 bezier .154427 .419712E-01 .15184 .319775E-01 .146685 .02921 bezier .122557 .141704E-02 .786974E-01 -.145026E-01 .04445 .00254 bezier .159267E-01 .201733E-01 .130495E-01 .582088E-01 .020955 .086995 bezier .327277E-01 .126755 .734589E-01 .156127 .114935 .15367 closepath ! end of curve ! start of curve amove .10414 .14605 bezier .075629 .142314 .550818E-01 .114833 .0508 .08763 bezier .770958E-01 .880791E-01 .105149 .859068E-01 .126365 .10414 bezier .137399 .115746 .137786 .137464 .121285 .144145 aline .117475 .145415 aline .1143 .14605 aline .113665 .146685 aline .104775 .146685 aline .10414 .14605 closepath ! end of curve fill dfont endchar dfont char="f" !-------------- Beginning of new char. dfont wid=.489586 hei=.694445 dep=.194445 italic=.10764 dfont fby=":" kadd=-.0555553 dfont fby=";" kadd=-.0555553 dfont fby=127 kadd=.166672 set path ! start of curve newpath ! start of curve amove .168275 .24638 bezier .183185 .245754 .19888 .232288 .193675 .2159 bezier .191618 .201534 .166456 .195325 .16256 .211455 bezier .161026 .222553 .170322 .231981 .180975 .233045 bezier .171459 .241989 .155094 .241603 .14859 .229235 bezier .139333 .203638 .13638 .175246 .131445 .14986 aline .16764 .14986 aline .16891 .149225 aline .17018 .146685 aline .17018 .14605 aline .169545 .14351 aline .16891 .141605 aline .167005 .1397 aline .12954 .1397 bezier .115997 .081631 .111939 .208271E-01 .09017 -.03683 bezier .814778E-01 -.056629 .620791E-01 -.794227E-01 .0381 -.071755 bezier .021294 -.689229E-01 .124675E-01 -.472014E-01 .02413 -.03429 bezier .319095E-01 -.243785E-01 .534439E-01 -.273921E-01 .0508 -.042545 bezier .049887 -.522159E-01 .410564E-01 -.589256E-01 .03175 -.05969 bezier .414302E-01 -.688977E-01 .588142E-01 -.682463E-01 .064135 -.05461 bezier .713601E-01 -.430222E-01 .728407E-01 -.028924 .0762 -.015875 aline .083185 .01905 bezier .905338E-01 .591499E-01 .990957E-01 .998057E-01 .10541 .1397 aline .075565 .1397 aline .074295 .140335 aline .073025 .142875 aline .073025 .14351 aline .07366 .14605 aline .074295 .147955 aline .0762 .14986 aline .107315 .14986 bezier .115967 .180008 .113498 .221121 .14351 .240665 aline .14986 .24384 aline .15367 .24511 aline .15875 .24638 aline .168275 .24638 closepath ! end of curve fill dfont endchar dfont char="g" !-------------- Beginning of new char. dfont wid=.476969 hei=.430555 dep=.194445 italic=.0358791 dfont fby=127 kadd=.0277786 set path ! start of curve newpath ! start of curve amove .114935 .15367 bezier .127122 .152092 .136404 .142807 .14224 .132715 bezier .141912 .144855 .16124 .15318 .16637 .140335 aline .16637 .13462 aline .12573 -.02794 bezier .112871 -.641734E-01 .687646E-01 -.786294E-01 .03429 -.071755 bezier .214417E-01 -.721328E-01 .003043 -.643273E-01 .00635 -.04826 bezier .627106E-02 -.318345E-01 .352808E-01 -.238743E-01 .0381 -.042545 bezier .385496E-01 -.513381E-01 .323091E-01 -.059161 .02413 -.06223 bezier .474548E-01 -.702678E-01 .780382E-01 -.067485 .09271 -.04445 aline .09398 -.04318 aline .094615 -.04191 aline .09525 -.041275 aline .09652 -.038735 aline .097155 -.0381 aline .10033 -.03175 aline .100965 -.029845 aline .1016 -.028575 aline .10287 -.024765 aline .113427 .174625E-01 aline .11303 .01905 bezier .09657 -.420238E-03 .648497E-01 -.86893E-02 .04445 .009525 bezier .141625E-01 .386754E-01 .261028E-01 .890119E-01 .04953 .118745 bezier .629103E-01 .13628 .826356E-01 .15076 .104775 .15367 closepath ! end of curve ! start of curve amove .106045 .14605 bezier .708643E-01 .135579 .619852E-01 .945347E-01 .05461 .062865 bezier .501872E-01 .456548E-01 .472623E-01 .199492E-01 .065405 .008255 bezier .087396 .11843E-02 .107464 .218607E-01 .118745 .038735 aline .137795 .114935 bezier .136939 .130794 .124475 .149109 .10668 .146685 closepath ! end of curve ! start of curve amove .11303 .01905 aline .113665 .018415 aline .1143 .01905 aline .113665 .019685 aline .11303 .01905 closepath ! end of curve fill dfont endchar dfont char="h" !-------------- Beginning of new char. dfont wid=.576159 hei=.694445 dep=0 italic=0 dfont fby=127 kadd=-.0277786 set path ! start of curve newpath ! start of curve amove .09906 .24257 aline .10033 .241935 aline .1016 .239395 aline .1016 .23876 aline .074295 .12954 aline .738188E-01 .128587 aline .074295 .127635 bezier .930222E-01 .153537 .137208 .165617 .16002 .139065 bezier .174773 .109155 .156342 .766042E-01 .14732 .04699 bezier .143362 .330414E-01 .132767 .173993E-01 .141393 .423333E-02 bezier .154604 -.171424E-02 .167447 .119807E-01 .173355 .02286 aline .177165 .03048 aline .1778 .032385 aline .178435 .033655 aline .17907 .03556 aline .179705 .03683 aline .18288 .046355 aline .183515 .048895 aline .18415 .0508 aline .186055 .052705 aline .189865 .052705 aline .191135 .05207 bezier .19434 .450548E-01 .187924 .364458E-01 .186055 .02921 bezier .178169 .930325E-02 .157952 -.011547 .13462 -.00254 bezier .114709 .523103E-02 .114391 .300152E-01 .12319 .046355 bezier .131898 .746254E-01 .147405 .103942 .14224 .13335 bezier .13805 .150136 .11832 .148246 .106045 .142875 bezier .876863E-01 .135441 .757086E-01 .118787 .06731 .1016 aline .04318 .00508 bezier .405413E-01 -.469536E-02 .243781E-01 -.903696E-02 .02032 .001905 aline .02032 .008255 aline .06096 .170815 aline .07239 .216535 aline .073025 .21717 aline .073025 .220345 aline .073406 .22225 aline .073025 .224155 aline .07239 .22606 aline .070485 .226695 aline .067945 .22733 aline .06731 .227965 aline .062865 .227965 aline .06223 .2286 aline .04953 .2286 aline .047625 .230505 aline .047625 .234315 aline .04826 .236855 aline .050165 .23876 bezier .645935E-01 .239945 .791715E-01 .240769 .093345 .24257 closepath ! end of curve fill dfont endchar dfont char="i" !-------------- Beginning of new char. dfont wid=.344513 hei=.659525 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .09017 .23114 bezier .106236 .227372 .100236 .203846 .08636 .201295 aline .08382 .20066 bezier .697906E-01 .197514 .635825E-01 .216125 .073025 .22479 aline .07366 .225425 aline .07493 .22606 aline .076835 .227965 aline .078105 .2286 aline .07874 .229235 aline .08001 .22987 aline .081915 .230505 aline .084455 .23114 closepath ! end of curve ! start of curve amove .06096 .15367 bezier .814682E-01 .151967 .906419E-01 .127755 .08255 .11049 bezier .718318E-01 .789055E-01 .564693E-01 .478091E-01 .048895 .015875 bezier .479398E-01 .891761E-02 .535706E-01 -.67995E-03 .061595 .003175 bezier .08419 .866863E-02 .885057E-01 .350165E-01 .097155 .052705 aline .100965 .052705 aline .102235 .05207 bezier .10544 .450548E-01 .990236E-01 .364458E-01 .097155 .02921 bezier .892695E-01 .930325E-02 .690517E-01 -.011547 .04572 -.00254 bezier .248711E-01 .568698E-02 .259628E-01 .314247E-01 .034925 .04826 bezier .447123E-01 .755046E-01 .570393E-01 .10281 .06477 .130175 aline .06477 .139065 bezier .620633E-01 .150388 .488735E-01 .14689 .04191 .141605 bezier .285146E-01 .130325 .235381E-01 .11289 .01778 .097155 aline .01651 .09652 aline .0127 .09652 aline .012065 .097155 aline .010795 .09779 bezier .138195E-01 .121109 .274305E-01 .147868 .05207 .15367 closepath ! end of curve fill dfont endchar dfont char="j" !-------------- Beginning of new char. dfont wid=.411807 hei=.659525 dep=.194445 italic=.0572433 dfont fby=":" kadd=-.0555553 dfont fby=";" kadd=-.0555553 set path ! start of curve newpath ! start of curve amove .128905 .23114 bezier .144671 .228264 .14015 .206085 .127635 .20193 bezier .117718 .196843 .10469 .204963 .10795 .216535 aline .108585 .219075 aline .109855 .221615 aline .11049 .22225 aline .111125 .22352 aline .1143 .226695 aline .11557 .22733 aline .11684 .2286 aline .11938 .22987 aline .121285 .230505 aline .123825 .23114 closepath ! end of curve ! start of curve amove .098425 .15367 bezier .117588 .152199 .129482 .132255 .12573 .114935 aline .125095 .11176 aline .09144 -.02286 bezier .817098E-01 -.576386E-01 .382499E-01 -.853595E-01 .004445 -.06731 bezier -.124115E-01 -.575115E-01 -.187771E-02 -.278945E-01 .01778 -.03175 bezier .354515E-01 -.354967E-01 .271351E-01 -.611834E-01 .012065 -.06223 bezier .335326E-01 -.748264E-01 .563426E-01 -.534743E-01 .0635 -.033655 aline .06477 -.031115 aline .065405 -.02921 aline .06604 -.02794 aline .067945 -.022225 aline .10287 .117475 bezier .10488 .12689 .107316 .141668 .095885 .146685 bezier .688218E-01 .146761 .055449 .118461 .04572 .097155 aline .04445 .09652 aline .04064 .09652 aline .040005 .097155 aline .038735 .09779 bezier .429926E-01 .120047 .589436E-01 .140894 .079375 .15113 aline .083185 .1524 aline .085725 .153035 aline .0889 .15367 closepath ! end of curve fill dfont endchar dfont char="k" !-------------- Beginning of new char. dfont wid=.520604 hei=.694445 dep=0 italic=.0314808 set path ! start of curve newpath ! start of curve amove .09906 .24257 aline .10033 .241935 aline .1016 .239395 aline .1016 .23876 aline .650081E-01 .923925E-01 aline .653143E-01 .911679E-01 bezier .977558E-01 .105079 .113008 .147686 .14986 .15367 bezier .165224 .156702 .182097 .144152 .178435 .127635 bezier .178514 .11121 .149504 .103249 .146685 .12192 bezier .146089 .13241 .155062 .141599 .165735 .14224 bezier .15149 .153593 .132975 .140584 .121285 .13081 bezier .105724 .115995 .924005E-01 .984598E-01 .074295 .086995 bezier .929037E-01 .834595E-01 .120233 .786545E-01 .125095 .05588 bezier .128015 .039189 .113644 .196359E-01 .126365 .004445 bezier .142278 -.311202E-02 .153792 .167002E-01 .158115 .029845 aline .16129 .03937 aline .161925 .04191 aline .16256 .043815 aline .16383 .048895 aline .164465 .0508 aline .16637 .052705 aline .17018 .052705 aline .17145 .05207 aline .17272 .0508 bezier .168542 .293148E-01 .160372 .17054E-02 .136525 -.004445 bezier .115143 -.829781E-02 .961425E-01 .130553E-01 .10033 .03302 bezier .100709 .436397E-01 .105723 .552108E-01 .097155 .064135 bezier .891348E-01 .746117E-01 .742485E-01 .784573E-01 .061976 .079502 aline .061595 .07874 aline .04318 .00508 bezier .405413E-01 -.469536E-02 .243781E-01 -.903696E-02 .02032 .001905 aline .02032 .008255 aline .06096 .170815 aline .07239 .216535 aline .073025 .21717 aline .073025 .220345 aline .073406 .22225 aline .073025 .224155 aline .07239 .22606 aline .070485 .226695 aline .067945 .22733 aline .06731 .227965 aline .062865 .227965 aline .06223 .2286 aline .04953 .2286 aline .047625 .230505 aline .047625 .234315 aline .04826 .236855 aline .050165 .23876 bezier .645935E-01 .239945 .791715E-01 .240769 .093345 .24257 closepath ! end of curve ! start of curve amove .06477 .09017 aline .065405 .090805 aline .06477 .09144 aline .064135 .090805 aline .06477 .09017 closepath ! end of curve fill dfont endchar dfont char="l" !-------------- Beginning of new char. dfont wid=.29838 hei=.694445 dep=0 italic=.0196781 dfont fby=127 kadd=.0833359 set path ! start of curve newpath ! start of curve amove .089535 .24257 aline .090805 .241935 aline .092075 .239395 aline .092075 .23876 aline .051435 .0762 aline .04064 .03302 bezier .380089E-01 .233029E-01 .359844E-01 .008314 .04699 .00254 bezier .642378E-01 .203171E-02 .685647E-01 .230158E-01 .073025 .036195 aline .0762 .048895 aline .076835 .0508 aline .07874 .052705 aline .08255 .052705 aline .08382 .05207 aline .08509 .0508 bezier .807925E-01 .304179E-01 .766091E-01 .215036E-02 .05334 -.004445 bezier .322039E-01 -.81467E-02 .121405E-01 .127082E-01 .01778 .03302 aline .01778 .036195 aline .05842 .198755 aline .062865 .216535 aline .0635 .21717 aline .0635 .220345 aline .063881 .22225 aline .0635 .224155 aline .062865 .22606 aline .06096 .226695 aline .05842 .22733 aline .057785 .227965 aline .05334 .227965 aline .052705 .2286 aline .040005 .2286 aline .0381 .230505 aline .0381 .234315 aline .038735 .236855 aline .04064 .23876 bezier .550685E-01 .239945 .696465E-01 .240769 .08382 .24257 closepath ! end of curve fill dfont endchar dfont char="m" !-------------- Beginning of new char. dfont wid=.878014 hei=.430555 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .051435 .15367 bezier .669825E-01 .152217 .793113E-01 .138357 .079375 .12319 bezier .965751E-01 .149299 .1343 .163923 .161925 .14605 aline .168275 .1397 aline .16891 .13843 aline .169545 .137795 aline .172085 .132715 aline .17272 .13081 aline .173355 .12827 aline .17399 .125095 aline .17399 .121285 bezier .180451 .125441 .185559 .135983 .193675 .140335 bezier .213451 .157022 .248509 .160485 .266065 .139065 bezier .280818 .109155 .262387 .766042E-01 .253365 .04699 bezier .249407 .330414E-01 .238812 .173993E-01 .247438 .423335E-02 bezier .260649 -.171426E-02 .273492 .119807E-01 .2794 .02286 aline .28321 .03048 aline .283845 .032385 aline .28448 .033655 aline .285115 .03556 aline .28575 .03683 aline .288925 .046355 aline .28956 .048895 aline .290195 .0508 aline .2921 .052705 aline .29591 .052705 aline .29718 .05207 bezier .300385 .450548E-01 .293969 .364458E-01 .2921 .02921 bezier .284214 .930326E-02 .263997 -.115469E-01 .240665 -.00254 bezier .220754 .523103E-02 .220436 .300152E-01 .229235 .046355 bezier .237943 .746254E-01 .25345 .103942 .248285 .13335 bezier .244095 .150136 .224365 .148246 .21209 .142875 bezier .193236 .134968 .179911 .117469 .17272 .09906 aline .149225 .00508 bezier .146838 -.465312E-02 .130855 -.872363E-02 .126365 .00127 aline .126365 .008255 aline .14986 .102235 bezier .152925 .116075 .156585 .135619 .14224 .14478 bezier .115813 .152559 .898256E-01 .130311 .07874 .107315 aline .078105 .10668 aline .075565 .1016 aline .051435 .00508 bezier .490482E-01 -.465312E-02 .330649E-01 -.872363E-02 .028575 .00127 aline .028575 .008255 aline .05588 .117475 bezier .578901E-01 .12689 .603257E-01 .141668 .048895 .146685 bezier .302423E-01 .146642 .262901E-01 .12357 .02159 .10922 aline .01905 .09906 aline .018415 .09779 aline .01778 .097155 aline .01651 .09652 aline .0127 .09652 aline .012065 .097155 aline .010795 .09779 bezier .139408E-01 .118027 .190329E-01 .144216 .040005 .153035 aline .04318 .15367 closepath ! end of curve fill dfont endchar dfont char="n" !-------------- Beginning of new char. dfont wid=.600235 hei=.430555 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .051435 .15367 bezier .066738 .152215 .789739E-01 .138745 .079375 .123825 bezier .097342 .150876 .139489 .165803 .165735 .14224 bezier .184364 .115634 .166716 .832686E-01 .15875 .055245 bezier .154228 .391192E-01 .141644 .021658 .14859 .005715 bezier .157424 -.251203E-02 .172045 .761274E-02 .177165 .01651 bezier .186221 .266518E-01 .187879 .414171E-01 .19431 .052705 aline .19812 .052705 aline .19939 .05207 bezier .202595 .450548E-01 .196179 .364458E-01 .19431 .02921 bezier .186424 .930325E-02 .166207 -.011547 .142875 -.00254 bezier .122964 .523099E-02 .122646 .300152E-01 .131445 .046355 bezier .140153 .746254E-01 .15566 .103942 .150495 .13335 bezier .146305 .150136 .126575 .148246 .1143 .142875 bezier .959413E-01 .135441 .839636E-01 .118787 .075565 .1016 aline .051435 .00508 bezier .490482E-01 -.465312E-02 .330649E-01 -.872363E-02 .028575 .00127 aline .028575 .008255 aline .05588 .117475 bezier .578901E-01 .12689 .603257E-01 .141668 .048895 .146685 bezier .302423E-01 .146642 .262901E-01 .12357 .02159 .10922 aline .01905 .09906 aline .018415 .09779 aline .01778 .097155 aline .01651 .09652 aline .0127 .09652 aline .012065 .097155 aline .010795 .09779 bezier .139408E-01 .118027 .190329E-01 .144216 .040005 .153035 aline .04318 .15367 closepath ! end of curve fill dfont endchar dfont char="o" !-------------- Beginning of new char. dfont wid=.484723 hei=.430555 dep=0 italic=0 dfont fby=127 kadd=.0555573 set path ! start of curve newpath ! start of curve amove .11557 .15367 bezier .142603 .151901 .164612 .127083 .1651 .10033 bezier .168604 .439846E-01 .113143 -.150243E-01 .055245 -.00254 bezier .264343E-01 .450799E-02 .111434E-01 .367775E-01 .01651 .064135 bezier .213087E-01 .112357 .662112E-01 .156183 .11557 .15367 closepath ! end of curve ! start of curve amove .10414 .14605 bezier .650682E-01 .138266 .496742E-01 .950158E-01 .04318 .05969 bezier .377595E-01 .398352E-01 .410796E-01 .774965E-02 .066675 .003175 bezier .955729E-01 .653679E-04 .118462 .278861E-01 .127635 .05334 bezier .135405 .080542 .148578 .11115 .13081 .136525 aline .126365 .14097 aline .125095 .141605 aline .12446 .14224 aline .12065 .144145 aline .11684 .145415 aline .113665 .14605 aline .11303 .146685 aline .104775 .146685 aline .10414 .14605 closepath ! end of curve fill dfont endchar dfont char="p" !-------------- Beginning of new char. dfont wid=.503126 hei=.430555 dep=.194445 italic=0 dfont fby=127 kadd=.0833359 set path ! start of curve newpath ! start of curve amove .05207 .15367 bezier .657138E-01 .152218 .07712 .141579 .796925E-01 .128429 bezier .959393E-01 .147768 .124781 .162963 .14859 .14732 bezier .174584 .130256 .175223 .955734E-01 .16764 .069215 bezier .156834 .315985E-01 .124163 -.568792E-02 .08255 -.004445 bezier .701408E-01 -.269611E-02 .601916E-01 .666512E-02 .055245 .01778 aline .038735 -.04826 aline .0381 -.048895 aline .0381 -.05207 aline .377031E-01 -.536575E-01 bezier .421769E-01 -.629046E-01 .556884E-01 -.563667E-01 .0635 -.060325 aline .064135 -.061595 aline .064135 -.0635 aline .0635 -.06604 aline .06223 -.06858 bezier .387069E-01 -.692131E-01 .147128E-01 -.672489E-01 -.00889 -.069215 aline -.010795 -.06731 aline -.010795 -.064135 aline -.01016 -.061595 bezier -.450531E-02 -.555165E-01 .71646E-02 -.625134E-01 .0127 -.05461 aline .01397 -.05207 aline .014605 -.050165 aline .055245 .112395 bezier .057921 .123214 .617702E-01 .136984 .05207 .145415 bezier .361856E-01 .151042 .286178E-01 .130333 .024765 .11811 aline .02413 .11557 aline .023495 .113665 aline .02286 .111125 aline .022225 .10922 aline .019685 .09906 aline .01905 .09779 aline .018415 .097155 aline .017145 .09652 aline .013335 .09652 aline .0127 .097155 aline .01143 .09779 bezier .145758E-01 .118027 .196679E-01 .144216 .04064 .153035 aline .043815 .15367 closepath ! end of curve ! start of curve amove .12065 .14605 bezier .102101 .142348 .087559 .127554 .07874 .11176 aline .592931E-01 .339725E-01 bezier .609958E-01 .159915E-01 .774309E-01 -.404573E-02 .09652 .004445 bezier .132558 .217817E-01 .13841 .067445 .146685 .1016 bezier .148797 .11772 .146891 .140912 .12827 .146685 aline .121285 .146685 closepath ! end of curve fill dfont endchar dfont char="q" !-------------- Beginning of new char. dfont wid=.446414 hei=.430555 dep=.194445 italic=.0358791 dfont fby=127 kadd=.0833359 set path ! start of curve newpath ! start of curve amove .10414 .15367 bezier .117296 .151803 .127285 .141468 .13208 .12954 bezier .138451 .138684 .146099 .150232 .156845 .15367 aline .158115 .153035 aline .159385 .150495 aline .159385 .14986 aline .118745 -.0127 aline .109855 -.04826 aline .10922 -.048895 aline .10922 -.05207 aline .108823 -.536575E-01 bezier .113297 -.629046E-01 .126808 -.563667E-01 .13462 -.060325 aline .135255 -.061595 aline .135255 -.0635 aline .13462 -.06604 aline .13335 -.06858 bezier .10754 -.689949E-01 .812496E-01 -.674387E-01 .055245 -.069215 aline .053975 -.06858 aline .052705 -.06604 aline .052705 -.065405 aline .05334 -.062865 aline .053975 -.06096 aline .05588 -.059055 bezier .667359E-01 -.585449E-01 .083442 -.616993E-01 .08636 -.047625 aline .1016 .013335 aline .102023 .014605 aline .1016 .015875 bezier .851352E-01 -.392692E-02 .535857E-01 -.127252E-01 .03302 .005715 bezier .481359E-02 .330051E-01 .138229E-01 .778405E-01 .03175 .108585 bezier .459017E-01 .130182 .067452 .150275 .09398 .15367 closepath ! end of curve ! start of curve amove .09525 .14605 bezier .605021E-01 .135411 .515683E-01 .949138E-01 .043815 .0635 bezier .392383E-01 .446968E-01 .351695E-01 .204078E-01 .051435 .005715 bezier .711262E-01 -.420506E-02 .918499E-01 .145804E-01 .10287 .029845 aline .10414 .031115 aline .104775 .032385 aline .10541 .03302 aline .106045 .03429 aline .10668 .034925 aline .107315 .036195 aline .126365 .112395 bezier .127717 .128382 .114295 .149189 .095885 .146685 closepath ! end of curve fill dfont endchar dfont char="r" !-------------- Beginning of new char. dfont wid=.451159 hei=.430555 dep=0 italic=.0277786 dfont fby=":" kadd=-.0555553 dfont fby=";" kadd=-.0555553 dfont fby=127 kadd=.0555573 set path ! start of curve newpath ! start of curve amove .051435 .15367 bezier .655218E-01 .152255 .766286E-01 .141035 .079375 .127635 bezier .929258E-01 .148169 .122 .162482 .14478 .147955 bezier .161417 .137421 .151692 .107446 .131445 .111125 bezier .113774 .114872 .12209 .140558 .13716 .141605 aline .139065 .14224 bezier .11536 .156344 .903357E-01 .133864 .08001 .11303 aline .076835 .10668 aline .051435 .00508 bezier .490482E-01 -.465312E-02 .330649E-01 -.872363E-02 .028575 .00127 aline .028575 .008255 aline .05588 .117475 bezier .578901E-01 .12689 .603257E-01 .141668 .048895 .146685 bezier .302423E-01 .146642 .262901E-01 .12357 .02159 .10922 aline .01905 .09906 aline .018415 .09779 aline .01778 .097155 aline .01651 .09652 aline .0127 .09652 aline .012065 .097155 aline .010795 .09779 bezier .139408E-01 .118027 .190329E-01 .144216 .040005 .153035 aline .04318 .15367 closepath ! end of curve fill dfont endchar dfont char="s" !-------------- Beginning of new char. dfont wid=.46875 hei=.430555 dep=0 italic=0 dfont fby=127 kadd=.0555573 set path ! start of curve newpath ! start of curve amove .112395 .15367 bezier .13083 .15308 .151911 .137206 .14605 .11684 bezier .145128 .104827 .124648 .098976 .12065 .11176 bezier .118529 .12185 .127725 .129735 .13716 .130175 bezier .12239 .157071 .736979E-01 .15039 .06731 .11938 bezier .629729E-01 .106415 .764518E-01 .952204E-01 .0889 .094615 bezier .110496 .923694E-01 .138081 .818978E-01 .13843 .056515 bezier .141685 .234264E-01 .108163 -.390613E-02 .076835 -.004445 bezier .553479E-01 -.565737E-02 .260411E-01 -.150985E-02 .01905 .02286 bezier .152547E-01 .361737E-01 .242262E-01 .547376E-01 .04064 .05207 bezier .583115E-01 .483233E-01 .499951E-01 .226366E-01 .034925 .02159 aline .02921 .02159 bezier .326369E-01 .911405E-02 .501112E-01 .423667E-02 .061595 .00254 bezier .849009E-01 .122417E-03 .113284 .104393E-01 .118745 .036195 bezier .123571 .530665E-01 .105732 .657329E-01 .09017 .066675 bezier .713319E-01 .683618E-01 .471976E-01 .780718E-01 .047625 .10033 bezier .449443E-01 .128083 .071744 .153022 .09906 .15367 aline .112395 .15367 closepath ! end of curve fill dfont endchar dfont char="t" !-------------- Beginning of new char. dfont wid=.361113 hei=.61508 dep=0 italic=0 dfont fby=127 kadd=.0833359 set path ! start of curve newpath ! start of curve amove .08255 .21844 aline .084455 .217805 aline .085725 .21717 aline .086995 .2159 aline .088265 .215265 aline .089535 .212725 aline .089535 .20574 aline .0762 .1524 aline .757767E-01 .15113 aline .0762 .14986 aline .113665 .14986 aline .11557 .147955 aline .11557 .14478 aline .114935 .14224 aline .1143 .14097 aline .113665 .140335 aline .112395 .1397 aline .073025 .1397 aline .046355 .03302 bezier .437239E-01 .233029E-01 .416994E-01 .008314 .052705 .00254 bezier .790918E-01 .247791E-02 .933348E-01 .292804E-01 .102235 .0508 aline .10414 .052705 aline .10795 .052705 aline .10922 .05207 aline .11049 .0508 bezier .103171 .240403E-01 .814452E-01 -.675795E-02 .050165 -.004445 bezier .304366E-01 -.260581E-02 .186835E-01 .183388E-01 .023495 .036195 aline .048895 .137795 aline .493712E-01 .138747 aline .048895 .1397 aline .010795 .1397 aline .00889 .141605 aline .00889 .145415 aline .009525 .14732 aline .01016 .14859 aline .010795 .149225 aline .012065 .14986 aline .051435 .14986 aline .05207 .150495 aline .066675 .208915 aline .06731 .21082 aline .067945 .21209 aline .071755 .2159 aline .073025 .216535 aline .07366 .21717 aline .075565 .217805 aline .07747 .21844 closepath ! end of curve fill dfont endchar dfont char="u" !-------------- Beginning of new char. dfont wid=.572458 hei=.430555 dep=0 italic=0 dfont fby=127 kadd=.0277786 set path ! start of curve newpath ! start of curve amove .06096 .15367 bezier .814682E-01 .151967 .906419E-01 .127755 .08255 .11049 bezier .728077E-01 .800739E-01 .546744E-01 .478928E-01 .062865 .01651 bezier .692841E-01 -.252014E-02 .936144E-01 .513443E-03 .106045 .01143 bezier .112977 .186448E-01 .121634 .262272E-01 .12319 .036195 aline .149225 .140335 bezier .151612 .150068 .167595 .154139 .172085 .144145 aline .172085 .13716 aline .14605 .03302 bezier .143419 .233029E-01 .141394 .008314 .1524 .00254 bezier .170763 .208581E-02 .175028 .247136E-01 .179705 .038735 aline .182245 .048895 aline .18288 .0508 aline .184785 .052705 aline .188595 .052705 aline .189865 .05207 aline .191135 .0508 bezier .186843 .303008E-01 .182196 .173118E-02 .15875 -.004445 bezier .143306 -.650959E-02 .127032 .304628E-02 .12319 .018415 bezier .106453 -.753938E-02 .649703E-01 -.136486E-01 .045085 .01143 bezier .280778E-01 .450613E-01 .493721E-01 .821837E-01 .060325 .114935 bezier .633832E-01 .125063 .698132E-01 .139941 .05842 .146685 bezier .336937E-01 .146237 .245978E-01 .117696 .018415 .09779 aline .01778 .097155 aline .01651 .09652 aline .0127 .09652 aline .012065 .097155 aline .010795 .09779 bezier .138195E-01 .121109 .274305E-01 .147868 .05207 .15367 closepath ! end of curve fill dfont endchar dfont char="v" !-------------- Beginning of new char. dfont wid=.484724 hei=.430555 dep=0 italic=.0358791 dfont fby=127 kadd=.0277786 set path ! start of curve newpath ! start of curve amove .06096 .15367 bezier .814682E-01 .151967 .906419E-01 .127755 .08255 .11049 bezier .730577E-01 .800256E-01 .05382 .047927 .064135 .01651 bezier .741448E-01 -.50115E-02 .104469 .118239E-02 .116205 .01778 bezier .134435 .377898E-01 .142643 .651929E-01 .14986 .090805 bezier .152183 .106814 .144342 .121625 .132715 .13208 bezier .126467 .147744 .151212 .162708 .160655 .14732 bezier .170238 .123571 .159512 .985524E-01 .154305 .074295 bezier .144317 .430477E-01 .12934 .638066E-02 .09525 -.00381 bezier .726137E-01 -.808224E-02 .421529E-01 .262039E-02 .03937 .02921 bezier .355431E-01 .638933E-01 .564475E-01 .972756E-01 .06477 .130175 aline .06477 .139065 bezier .620633E-01 .150388 .488735E-01 .14689 .04191 .141605 bezier .285146E-01 .130325 .235381E-01 .11289 .01778 .097155 aline .01651 .09652 aline .0127 .09652 aline .012065 .097155 aline .010795 .09779 bezier .138195E-01 .121109 .274305E-01 .147868 .05207 .15367 closepath ! end of curve fill dfont endchar dfont char="w" !-------------- Beginning of new char. dfont wid=.715918 hei=.430555 dep=0 italic=.0269089 dfont fby=127 kadd=.0833359 set path ! start of curve newpath ! start of curve amove .06096 .15367 bezier .814682E-01 .151967 .906419E-01 .127755 .08255 .11049 bezier .733276E-01 .805926E-01 .054235 .491847E-01 .064135 .018415 bezier .727761E-01 -.338586E-02 .105739 -.164575E-02 .114935 .01905 aline .11557 .02032 bezier .125329 .315665E-01 .12047 .459157E-01 .12446 .059055 aline .14478 .140335 bezier .147167 .150068 .16315 .154139 .16764 .144145 aline .16764 .13716 aline .146685 .05334 bezier .141492 .364218E-01 .141628 .654316E-02 .1651 .003175 bezier .190159 -.967775E-03 .206242 .251228E-01 .213995 .04572 bezier .221505 .070237 .237494 .991296E-01 .21971 .122555 aline .211455 .13081 bezier .203111 .146543 .228951 .163289 .23876 .14732 bezier .248537 .122726 .237103 .968555E-01 .231775 .071755 bezier .222695 .412537E-01 .210056 .226602E-02 .174625 -.004445 bezier .155807 -.595865E-02 .133311 .144569E-03 .125095 .01905 bezier .116778 .406824E-02 .996486E-01 -.851896E-02 .081915 -.00381 bezier .062145 -.432857E-02 .412055E-01 .010082 .03937 .031115 bezier .364367E-01 .659499E-01 .566164E-01 .977874E-01 .06477 .130175 aline .06477 .139065 bezier .620633E-01 .150388 .488735E-01 .14689 .04191 .141605 bezier .285146E-01 .130325 .235381E-01 .11289 .01778 .097155 aline .01651 .09652 aline .0127 .09652 aline .012065 .097155 aline .010795 .09779 bezier .138195E-01 .121109 .274305E-01 .147868 .05207 .15367 closepath ! end of curve fill dfont endchar dfont char="x" !-------------- Beginning of new char. dfont wid=.571528 hei=.430555 dep=0 italic=0 dfont fby=127 kadd=.0277786 set path ! start of curve newpath ! start of curve amove .08255 .15367 bezier .972523E-01 .15238 .110383 .141476 .11557 .127635 bezier .124145 .146941 .1465 .159332 .167005 .151765 bezier .182995 .149072 .19144 .127769 .17907 .116205 bezier .171567 .106806 .150226 .110648 .15367 .12446 bezier .152926 .133792 .16177 .139858 .169545 .14224 bezier .153584 .152354 .13229 .144239 .125095 .127 aline .12446 .126365 aline .122555 .122555 aline .12192 .12065 aline .121285 .11938 aline .12065 .117475 aline .120015 .116205 aline .11938 .113665 aline .118745 .11176 aline .1016 .04318 bezier .968776E-01 .028891 .974612E-01 .780819E-02 .114935 .00254 bezier .141654 .166169E-02 .160013 .271343E-01 .16637 .0508 aline .168275 .052705 aline .172085 .052705 aline .173355 .05207 aline .174625 .0508 bezier .169892 .180538E-01 .13519 -.152099E-01 .100965 -.00127 bezier .911045E-01 .327693E-02 .831357E-01 .011681 .08001 .022225 bezier .714744E-01 .135205E-02 .465581E-01 -.112373E-01 .0254 -.00127 bezier .722971E-02 .393289E-02 .579255E-02 .314191E-01 .02413 .037465 bezier .337155E-01 .411694E-01 .455681E-01 .338245E-01 .042545 .02286 bezier .419529E-01 .142833E-01 .032519 .965663E-02 .270933E-01 .677334E-02 bezier .428674E-01 -.362766E-02 .629651E-01 .603066E-02 .070485 .022225 aline .073025 .027305 aline .07366 .02921 aline .074295 .03048 aline .0762 .036195 aline .093345 .104775 bezier .979082E-01 .118961 .985722E-01 .141442 .080645 .146685 bezier .529404E-01 .147731 .358887E-01 .120635 .028575 .097155 aline .027305 .09652 aline .023495 .09652 aline .02286 .097155 bezier .019111 .105135 .270587E-01 .115361 .03048 .12319 bezier .415911E-01 .140576 .604442E-01 .15618 .08255 .15367 closepath ! end of curve fill dfont endchar dfont char="y" !-------------- Beginning of new char. dfont wid=.490282 hei=.430555 dep=.194445 italic=.0358791 dfont fby=127 kadd=.0555573 set path ! start of curve newpath ! start of curve amove .06096 .15367 bezier .814682E-01 .151967 .906419E-01 .127755 .08255 .11049 bezier .728776E-01 .806652E-01 .556379E-01 .049245 .06223 .018415 bezier .663629E-01 -.96483E-03 .909058E-01 -.743277E-03 .103505 .01016 bezier .111223 .153149E-01 .116687 .231739E-01 .121285 .031115 aline .14859 .140335 bezier .150977 .150068 .16696 .154139 .17145 .144145 aline .17145 .13716 aline .13589 -.00508 bezier .124375 -.458922E-01 .080474 -.840081E-01 .03683 -.06985 bezier .158186E-01 -.632334E-01 .100412E-01 -.276321E-01 .03302 -.02032 aline .03683 -.02032 bezier .459473E-01 -.178419E-01 .535059E-01 -.292455E-01 .04953 -.0381 bezier .467244E-01 -.472511E-01 .364999E-01 -.506516E-01 .287338E-01 -.511175E-01 bezier .409002E-01 -.749778E-01 .755367E-01 -.670551E-01 .0889 -.04826 bezier .103317 -.321593E-01 .112398 -.104623E-01 .11557 .010795 bezier .953518E-01 -.139798E-01 .451098E-01 -.884218E-02 .03937 .026035 bezier .345849E-01 .621055E-01 .056139 .963623E-01 .06477 .130175 aline .06477 .139065 bezier .620633E-01 .150388 .488735E-01 .14689 .04191 .141605 bezier .285146E-01 .130325 .235381E-01 .11289 .01778 .097155 aline .01651 .09652 aline .0127 .09652 aline .012065 .097155 aline .010795 .09779 bezier .138195E-01 .121109 .274305E-01 .147868 .05207 .15367 closepath ! end of curve fill dfont endchar dfont char="z" !-------------- Beginning of new char. dfont wid=.46505 hei=.430555 dep=0 italic=.0439806 dfont fby=127 kadd=.0555573 set path ! start of curve newpath ! start of curve amove .090805 .15367 bezier .109159 .151207 .114291 .120812 .135255 .128905 bezier .146095 .133749 .150475 .145759 .158115 .15367 aline .16256 .15367 bezier .16775 .148176 .158747 .142379 .156845 .13716 bezier .133112 .104298 .100268 .791041E-01 .070485 .05207 aline .04826 .029845 aline .477838E-01 .288925E-01 bezier .620005E-01 .030869 .785191E-01 .245717E-01 .09271 .01905 bezier .115203 .146381E-01 .138955 .301545E-01 .14605 .05207 aline .14732 .052705 aline .150495 .052705 aline .151765 .05207 bezier .154814 .432171E-01 .14709 .335326E-01 .14351 .0254 bezier .131603 .644944E-02 .105659 -.135112E-01 .083185 0 bezier .073034 .776526E-02 .655373E-01 .266275E-01 .050165 .020955 bezier .370301E-01 .176487E-01 .298645E-01 .537634E-02 .022225 -.004445 aline .01778 -.004445 bezier .120447E-01 .850035E-03 .220806E-01 .778389E-02 .02413 .013335 bezier .292325E-01 .020033 .345362E-01 .026586 .040005 .03302 aline .062865 .05588 bezier .860763E-01 .770074E-01 .110838 .965565E-01 .13208 .120015 bezier .11045 .117846 .892002E-01 .138611 .067945 .127635 bezier .601155E-01 .125006 .545292E-01 .118754 .05207 .111125 aline .0508 .11049 aline .046355 .11049 aline .045085 .111125 bezier .449271E-01 .129227 .606166E-01 .146315 .07747 .1524 aline .08001 .153035 aline .08255 .15367 closepath ! end of curve fill dfont endchar dfont char="{" !-------------- Beginning of new char. dfont wid=.322456 hei=.430555 dep=0 italic=0 dfont fby=127 kadd=.0277786 set path ! start of curve newpath ! start of curve amove .06096 .15367 bezier .814682E-01 .151967 .906419E-01 .127755 .08255 .11049 bezier .718318E-01 .789055E-01 .564693E-01 .478091E-01 .048895 .015875 bezier .479398E-01 .891761E-02 .535707E-01 -.679949E-03 .061595 .003175 bezier .08419 .866863E-02 .885057E-01 .350165E-01 .097155 .052705 aline .100965 .052705 aline .102235 .05207 bezier .10544 .450548E-01 .990236E-01 .364458E-01 .097155 .02921 bezier .892695E-01 .930325E-02 .690517E-01 -.011547 .04572 -.00254 bezier .248711E-01 .568698E-02 .259628E-01 .314247E-01 .034925 .04826 bezier .447123E-01 .755046E-01 .570393E-01 .10281 .06477 .130175 aline .06477 .139065 bezier .620633E-01 .150388 .488735E-01 .14689 .04191 .141605 bezier .285146E-01 .130325 .235381E-01 .11289 .01778 .097155 aline .01651 .09652 aline .0127 .09652 aline .012065 .097155 aline .010795 .09779 bezier .138195E-01 .121109 .274305E-01 .147868 .05207 .15367 closepath ! end of curve fill dfont endchar dfont char="|" !-------------- Beginning of new char. dfont wid=.38403 hei=.430555 dep=.194445 italic=0 dfont fby=127 kadd=.0833359 set path ! start of curve newpath ! start of curve amove .098425 .15367 bezier .117588 .152199 .129482 .132255 .12573 .114935 aline .125095 .11176 aline .09144 -.02286 bezier .820993E-01 -.590496E-01 .362068E-01 -.875787E-01 .00254 -.065405 bezier -.131321E-01 -.535821E-01 .156525E-02 -.256659E-01 .02032 -.032385 bezier .035072 -.390021E-01 .258785E-01 -.609286E-01 .012065 -.06223 bezier .297088E-01 -.725734E-01 .509475E-01 -.611979E-01 .059055 -.043815 aline .062865 -.036195 aline .0635 -.03429 aline .06477 -.03175 aline .067945 -.022225 aline .10287 .117475 bezier .10488 .12689 .107316 .141668 .095885 .146685 bezier .688218E-01 .146761 .055449 .118461 .04572 .097155 aline .04445 .09652 aline .04064 .09652 aline .040005 .097155 aline .038735 .09779 bezier .429926E-01 .120047 .589436E-01 .140894 .079375 .15113 aline .083185 .1524 aline .085725 .153035 aline .0889 .15367 closepath ! end of curve fill dfont endchar dfont char="}" !-------------- Beginning of new char. dfont wid=.636459 hei=.430555 dep=.194445 italic=0 dfont fby=127 kadd=.111115 set path ! start of curve newpath ! start of curve amove .0889 .15748 aline .09017 .156845 aline .090805 .15621 aline .090805 .151765 bezier .065215 .146422 .535563E-01 .117514 .047625 .09398 bezier .440306E-01 .794982E-01 .042343 .617032E-01 .05334 .04953 bezier .764807E-01 .967669E-01 .120286 .145086 .177165 .14224 bezier .20505 .139438 .220145 .108496 .2159 .08382 bezier .213769 .405034E-01 .177506 -.587978E-02 .131445 -.004445 bezier .111399 -.317807E-02 .981682E-01 .210882E-01 .108585 .0381 aline .109855 .038735 aline .11049 .03937 aline .11176 .040005 aline .117475 .040005 aline .118745 .03937 aline .12065 .037465 aline .121285 .036195 aline .121285 .03175 aline .12065 .029845 aline .117475 .02667 aline .113665 .024765 bezier .112734 .756691E-02 .133685 -.275363E-02 .147955 .00508 bezier .180807 .204605E-01 .189513 .610468E-01 .19558 .09271 bezier .197085 .109055 .193193 .131074 .174625 .135255 bezier .126263 .136414 .088195 .963796E-01 .066675 .056515 aline .05969 .042545 bezier .688988E-01 .263585E-01 .863551E-01 .117796E-01 .094615 -.00635 bezier .102138 -.371357E-01 .804943E-01 -.776527E-01 .046355 -.076835 bezier .352288E-01 -.760671E-01 .277611E-01 -.654115E-01 .027305 -.055245 bezier .269765E-01 -.278766E-01 .341197E-01 -.497319E-04 .043815 .026035 bezier .206129E-01 .049603 .292525E-01 .852868E-01 .040005 .11303 bezier .497164E-01 .132817 .645202E-01 .156446 .0889 .15748 closepath ! end of curve ! start of curve amove .04953 .017145 bezier .430312E-01 -.788845E-02 .327702E-01 -.332924E-01 .036195 -.057785 bezier .380939E-01 -.719791E-01 .555386E-01 -.725509E-01 .064135 -.064135 bezier .795382E-01 -.498091E-01 .883021E-01 -.230418E-01 .06985 -.00762 bezier .633574E-01 .441508E-03 .564369E-01 .114893E-01 .04953 .017145 closepath ! end of curve fill dfont endchar dfont char="~" !-------------- Beginning of new char. dfont wid=.500002 hei=.714444 dep=0 italic=.153819 set path ! start of curve newpath ! start of curve amove .19431 .25019 bezier .203343 .246991 .200545 .233834 .20828 .2286 bezier .211834 .2227 .224142 .21969 .21844 .21082 bezier .20417 .203864 .192547 .192721 .182245 .180975 bezier .172944 .177047 .16842 .191163 .17653 .19558 aline .177165 .19685 aline .18796 .207645 aline .187325 .20828 aline .069215 .20828 bezier .625292E-01 .210186 .625292E-01 .220344 .069215 .22225 aline .193675 .22225 bezier .191648 .229364 .178941 .245228 .19177 .25019 aline .19431 .25019 closepath ! end of curve fill dfont endchar dfont char=127 !-------------- Beginning of new char. dfont wid=.277779 hei=.694445 dep=0 italic=.399462 set path ! start of curve newpath ! start of curve amove .178435 .23241 bezier .199388 .23127 .230496 .220029 .2286 .193675 aline .227965 .1905 aline .22733 .18923 aline .22479 .18796 aline .22225 .18796 aline .22098 .188595 aline .21971 .189865 bezier .223061 .21247 .19504 .221002 .1778 .221615 bezier .152574 .223956 .122368 .218051 .104775 .197485 aline .102235 .192405 aline .1016 .1905 aline .100965 .18923 aline .098425 .18796 bezier .890091E-01 .187657 .949086E-01 .199864 .098425 .203835 bezier .117685 .226784 .149847 .233881 .178435 .23241 closepath ! end of curve fill dfont endchar gle-graphics-4.2.4c/src/fonts/plcs.afm0000664000000000000000000001225111676336540016313 0ustar rootrootStartFontMetrics 2.0 Comment Made from HERSHEY font file using SPLITFONT.BAS FontName plCS EncodingScheme TEXENCODING FullName plCS FamilyName plCS Weight Medium ItalicAngle 0 IsFixedPitch false UnderlinePosition -97 UnderlineThickness 73 FontBBox 0 -400 1001 1001 CapHeight 729 XHeight 151 Descender -219 Ascender 729 StartCharMetrics 95 C 32 ; WX 400 ; N C32 ; B 0 0 0 0 ; C 33 ; WX 318 ; N C33 ; B 133 0 199 700 ; C 34 ; WX 518 ; N C34 ; B 99 466 433 700 ; C 35 ; WX 784 ; N C35 ; B 133 0 666 566 ; C 36 ; WX 518 ; N C36 ; B 99 299 433 700 ; C 37 ; WX 784 ; N C37 ; B 99 0 700 700 ; C 38 ; WX 784 ; N C38 ; B 133 0 666 566 ; C 39 ; WX 251 ; N C39 ; B 99 466 166 700 ; C 40 ; WX 451 ; N C40 ; B 133 -233 366 833 ; C 41 ; WX 451 ; N C41 ; B 99 -233 333 833 ; C 42 ; WX 451 ; N C42 ; B 133 -233 366 833 ; C 43 ; WX 485 ; N C43 ; B 166 -233 333 833 ; C 44 ; WX 318 ; N C44 ; B 133 -133 199 66 ; C 45 ; WX 451 ; N C45 ; B 99 -233 333 833 ; C 46 ; WX 318 ; N C46 ; B 133 0 199 66 ; C 47 ; WX 718 ; N C47 ; B 66 -233 666 833 ; C 48 ; WX 651 ; N C48 ; B 99 0 566 700 ; C 49 ; WX 651 ; N C49 ; B 199 0 500 700 ; C 50 ; WX 651 ; N C50 ; B 99 0 566 700 ; C 51 ; WX 651 ; N C51 ; B 99 0 566 700 ; C 52 ; WX 651 ; N C52 ; B 66 0 600 700 ; C 53 ; WX 651 ; N C53 ; B 99 0 566 700 ; C 54 ; WX 651 ; N C54 ; B 99 0 566 700 ; C 55 ; WX 651 ; N C55 ; B 99 0 566 699 ; C 56 ; WX 651 ; N C56 ; B 99 0 566 700 ; C 57 ; WX 651 ; N C57 ; B 99 0 566 700 ; C 58 ; WX 318 ; N C58 ; B 133 0 199 466 ; C 59 ; WX 318 ; N C59 ; B 133 -133 199 466 ; C 60 ; WX 784 ; N C60 ; B 133 0 666 600 ; C 61 ; WX 485 ; N C61 ; B 166 -233 333 833 ; C 62 ; WX 784 ; N C62 ; B 133 0 666 600 ; C 63 ; WX 585 ; N C63 ; B 99 0 500 700 ; C 64 ; WX 884 ; N C64 ; B 99 0 799 700 ; C 65 ; WX 751 ; N C65 ; B -33 0 633 700 ; C 66 ; WX 784 ; N C66 ; B 32 0 700 700 ; C 67 ; WX 685 ; N C67 ; B 66 0 600 700 ; C 68 ; WX 751 ; N C68 ; B 32 0 666 700 ; C 69 ; WX 618 ; N C69 ; B 66 0 566 700 ; C 70 ; WX 685 ; N C70 ; B 32 0 666 700 ; C 71 ; WX 718 ; N C71 ; B 66 0 633 700 ; C 72 ; WX 784 ; N C72 ; B 0 0 799 700 ; C 73 ; WX 518 ; N C73 ; B 0 0 532 700 ; C 74 ; WX 551 ; N C74 ; B 32 -133 532 700 ; C 75 ; WX 784 ; N C75 ; B 0 0 799 700 ; C 76 ; WX 585 ; N C76 ; B -33 0 600 700 ; C 77 ; WX 918 ; N C77 ; B -67 0 866 700 ; C 78 ; WX 751 ; N C78 ; B -67 0 866 700 ; C 79 ; WX 685 ; N C79 ; B 99 0 600 700 ; C 80 ; WX 751 ; N C80 ; B 32 0 700 700 ; C 81 ; WX 685 ; N C81 ; B 0 0 600 700 ; C 82 ; WX 784 ; N C82 ; B 32 0 766 700 ; C 83 ; WX 651 ; N C83 ; B 0 0 666 700 ; C 84 ; WX 585 ; N C84 ; B 32 0 633 700 ; C 85 ; WX 718 ; N C85 ; B 32 0 700 700 ; C 86 ; WX 685 ; N C86 ; B 32 0 733 700 ; C 87 ; WX 751 ; N C87 ; B 32 0 866 700 ; C 88 ; WX 651 ; N C88 ; B -33 0 733 700 ; C 89 ; WX 718 ; N C89 ; B 66 0 733 700 ; C 90 ; WX 685 ; N C90 ; B 0 0 733 700 ; C 91 ; WX 451 ; N C91 ; B 133 -233 366 833 ; C 92 ; WX 300 ; N C92 ; B 0 0 0 0 ; C 93 ; WX 451 ; N C93 ; B 99 -233 333 833 ; C 94 ; WX 300 ; N C94 ; B 0 0 0 0 ; C 95 ; WX 300 ; N C95 ; B 0 0 0 0 ; C 96 ; WX 318 ; N C96 ; B 133 500 199 700 ; C 97 ; WX 518 ; N C97 ; B 32 0 532 299 ; C 98 ; WX 451 ; N C98 ; B 0 0 466 700 ; C 99 ; WX 384 ; N C99 ; B 32 0 399 299 ; C 100 ; WX 518 ; N C100 ; B 32 0 532 700 ; C 101 ; WX 384 ; N C101 ; B 32 0 399 299 ; C 102 ; WX 284 ; N C102 ; B -133 -400 299 700 ; C 103 ; WX 518 ; N C103 ; B 32 -400 532 299 ; C 104 ; WX 485 ; N C104 ; B 0 0 500 700 ; C 105 ; WX 251 ; N C105 ; B 32 0 266 500 ; C 106 ; WX 251 ; N C106 ; B -233 -400 266 500 ; C 107 ; WX 451 ; N C107 ; B 0 0 466 700 ; C 108 ; WX 251 ; N C108 ; B 0 0 266 700 ; C 109 ; WX 818 ; N C109 ; B 0 0 833 299 ; C 110 ; WX 585 ; N C110 ; B 0 0 600 299 ; C 111 ; WX 451 ; N C111 ; B 32 0 466 299 ; C 112 ; WX 485 ; N C112 ; B -133 -400 500 500 ; C 113 ; WX 518 ; N C113 ; B 32 -400 532 299 ; C 114 ; WX 451 ; N C114 ; B 0 0 466 299 ; C 115 ; WX 384 ; N C115 ; B 0 0 399 333 ; C 116 ; WX 251 ; N C116 ; B 0 0 266 700 ; C 117 ; WX 518 ; N C117 ; B 32 0 532 299 ; C 118 ; WX 485 ; N C118 ; B 32 0 500 299 ; C 119 ; WX 685 ; N C119 ; B 32 0 700 299 ; C 120 ; WX 518 ; N C120 ; B 0 0 532 299 ; C 121 ; WX 518 ; N C121 ; B 32 -400 532 299 ; C 122 ; WX 418 ; N C122 ; B -33 -400 433 299 ; C 123 ; WX 485 ; N C123 ; B 166 -233 333 833 ; C 124 ; WX 451 ; N C124 ; B 133 -233 366 833 ; C 125 ; WX 485 ; N C125 ; B 166 -233 333 833 ; C 126 ; WX 451 ; N C126 ; B 99 433 366 700 ; EndCharMetrics EndFontMetrics gle-graphics-4.2.4c/src/fonts/plss.afm0000664000000000000000000001224411676336540016335 0ustar rootrootStartFontMetrics 2.0 Comment Made from HERSHEY font file using SPLITFONT.BAS FontName plSS EncodingScheme TEXENCODING FullName plSS FamilyName plSS Weight Medium ItalicAngle 0 IsFixedPitch false UnderlinePosition -97 UnderlineThickness 73 FontBBox 0 -400 1001 1001 CapHeight 729 XHeight 151 Descender -219 Ascender 729 StartCharMetrics 95 C 32 ; WX 400 ; N C32 ; B 0 0 0 0 ; C 33 ; WX 318 ; N C33 ; B 133 0 199 700 ; C 34 ; WX 518 ; N C34 ; B 133 466 399 700 ; C 35 ; WX 685 ; N C35 ; B 99 -233 600 833 ; C 36 ; WX 651 ; N C36 ; B 99 -133 566 833 ; C 37 ; WX 784 ; N C37 ; B 99 0 700 700 ; C 38 ; WX 851 ; N C38 ; B 99 0 766 700 ; C 39 ; WX 251 ; N C39 ; B 133 466 133 700 ; C 40 ; WX 451 ; N C40 ; B 133 -233 366 833 ; C 41 ; WX 451 ; N C41 ; B 99 -233 333 833 ; C 42 ; WX 518 ; N C42 ; B 99 99 433 500 ; C 43 ; WX 851 ; N C43 ; B 133 0 733 600 ; C 44 ; WX 318 ; N C44 ; B 133 -133 199 66 ; C 45 ; WX 851 ; N C45 ; B 133 299 733 299 ; C 46 ; WX 318 ; N C46 ; B 133 0 199 66 ; C 47 ; WX 718 ; N C47 ; B 66 -233 666 833 ; C 48 ; WX 651 ; N C48 ; B 99 0 566 700 ; C 49 ; WX 651 ; N C49 ; B 199 0 366 700 ; C 50 ; WX 651 ; N C50 ; B 99 0 566 700 ; C 51 ; WX 651 ; N C51 ; B 99 0 566 700 ; C 52 ; WX 651 ; N C52 ; B 99 0 600 700 ; C 53 ; WX 651 ; N C53 ; B 99 0 566 700 ; C 54 ; WX 651 ; N C54 ; B 133 0 566 700 ; C 55 ; WX 651 ; N C55 ; B 99 0 566 700 ; C 56 ; WX 651 ; N C56 ; B 99 0 566 700 ; C 57 ; WX 651 ; N C57 ; B 99 0 532 700 ; C 58 ; WX 318 ; N C58 ; B 133 0 199 466 ; C 59 ; WX 318 ; N C59 ; B 133 -133 199 466 ; C 60 ; WX 784 ; N C60 ; B 133 0 666 600 ; C 61 ; WX 851 ; N C61 ; B 133 199 733 399 ; C 62 ; WX 784 ; N C62 ; B 133 0 666 600 ; C 63 ; WX 585 ; N C63 ; B 99 0 500 700 ; C 64 ; WX 884 ; N C64 ; B 99 0 799 700 ; C 65 ; WX 651 ; N C65 ; B 0 0 600 700 ; C 66 ; WX 751 ; N C66 ; B 99 0 700 700 ; C 67 ; WX 651 ; N C67 ; B 99 0 600 700 ; C 68 ; WX 751 ; N C68 ; B -33 0 700 700 ; C 69 ; WX 651 ; N C69 ; B 99 0 600 700 ; C 70 ; WX 651 ; N C70 ; B 32 0 700 700 ; C 71 ; WX 751 ; N C71 ; B 0 0 633 700 ; C 72 ; WX 784 ; N C72 ; B 32 0 799 700 ; C 73 ; WX 551 ; N C73 ; B 32 0 466 700 ; C 74 ; WX 485 ; N C74 ; B 32 -400 433 700 ; C 75 ; WX 784 ; N C75 ; B 32 0 799 700 ; C 76 ; WX 618 ; N C76 ; B 0 0 600 700 ; C 77 ; WX 1085 ; N C77 ; B 66 0 1100 700 ; C 78 ; WX 784 ; N C78 ; B 66 0 799 700 ; C 79 ; WX 685 ; N C79 ; B 99 0 666 700 ; C 80 ; WX 818 ; N C80 ; B 99 0 799 700 ; C 81 ; WX 718 ; N C81 ; B 0 0 633 699 ; C 82 ; WX 818 ; N C82 ; B 99 0 766 700 ; C 83 ; WX 651 ; N C83 ; B 0 0 566 700 ; C 84 ; WX 618 ; N C84 ; B 32 0 700 700 ; C 85 ; WX 784 ; N C85 ; B 66 0 799 700 ; C 86 ; WX 751 ; N C86 ; B 66 0 700 700 ; C 87 ; WX 918 ; N C87 ; B 66 0 1000 700 ; C 88 ; WX 784 ; N C88 ; B 32 0 766 700 ; C 89 ; WX 751 ; N C89 ; B 66 -400 700 700 ; C 90 ; WX 685 ; N C90 ; B 66 -400 600 699 ; C 91 ; WX 451 ; N C91 ; B 133 -233 366 833 ; C 92 ; WX 300 ; N C92 ; B 0 0 0 0 ; C 93 ; WX 451 ; N C93 ; B 99 -233 333 833 ; C 94 ; WX 300 ; N C94 ; B 0 0 0 0 ; C 95 ; WX 300 ; N C95 ; B 0 0 0 0 ; C 96 ; WX 318 ; N C96 ; B 133 500 199 700 ; C 97 ; WX 518 ; N C97 ; B 0 0 532 299 ; C 98 ; WX 451 ; N C98 ; B 0 0 466 700 ; C 99 ; WX 351 ; N C99 ; B 0 0 366 299 ; C 100 ; WX 518 ; N C100 ; B 0 0 532 700 ; C 101 ; WX 318 ; N C101 ; B 0 0 333 299 ; C 102 ; WX 251 ; N C102 ; B -167 -400 266 700 ; C 103 ; WX 485 ; N C103 ; B 0 -400 500 299 ; C 104 ; WX 485 ; N C104 ; B 0 0 500 700 ; C 105 ; WX 218 ; N C105 ; B 0 0 233 466 ; C 106 ; WX 218 ; N C106 ; B -266 -400 233 466 ; C 107 ; WX 451 ; N C107 ; B 0 0 466 700 ; C 108 ; WX 251 ; N C108 ; B 0 0 266 700 ; C 109 ; WX 818 ; N C109 ; B 0 0 833 299 ; C 110 ; WX 585 ; N C110 ; B 0 0 600 299 ; C 111 ; WX 451 ; N C111 ; B 0 0 466 299 ; C 112 ; WX 485 ; N C112 ; B -133 -400 500 333 ; C 113 ; WX 485 ; N C113 ; B 0 -400 500 299 ; C 114 ; WX 418 ; N C114 ; B 0 0 433 333 ; C 115 ; WX 351 ; N C115 ; B 0 0 366 333 ; C 116 ; WX 284 ; N C116 ; B 0 0 299 700 ; C 117 ; WX 485 ; N C117 ; B 0 0 500 299 ; C 118 ; WX 485 ; N C118 ; B 0 0 500 299 ; C 119 ; WX 685 ; N C119 ; B 0 0 700 299 ; C 120 ; WX 518 ; N C120 ; B 0 0 532 299 ; C 121 ; WX 485 ; N C121 ; B 0 -400 500 299 ; C 122 ; WX 451 ; N C122 ; B 0 -400 466 299 ; C 123 ; WX 485 ; N C123 ; B 166 -233 333 833 ; C 124 ; WX 251 ; N C124 ; B 133 -233 133 833 ; C 125 ; WX 485 ; N C125 ; B 166 -233 333 833 ; C 126 ; WX 451 ; N C126 ; B 99 433 366 700 ; EndCharMetrics EndFontMetrics gle-graphics-4.2.4c/src/fonts/texcmss.gle0000664000000000000000000036660711676336540017065 0ustar rootrootdfont file_name="CMSS10" dfont font_name="CMSS10" dfont design= .35146 dfont slant= 0 dfont space= .117153 dfont stretch= .585767E-01 dfont shrink= .390513E-01 dfont x_hei= .156204 dfont quad= .351461 dfont extra_space= .390513E-01 dfont paint="FILL" !------------------ end of main parameters dfont char=0 !-------------- Beginning of new char. dfont wid=.541669 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .17526 .2413 aline .17526 .219075 aline .11303 .219075 aline .112395 .21971 aline .065405 .21971 aline .06477 .219075 aline .06477 -.000635 aline .03429 -.000635 aline .03429 .2413 aline .17526 .2413 closepath ! end of curve fill dfont endchar dfont char=1 !-------------- Beginning of new char. dfont wid=.833336 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .161925 .24257 bezier .201033 .161887 .238836 .803534E-01 .277495 -.000635 aline .01524 -.000635 bezier .538844E-01 .803594E-01 .917101E-01 .161883 .13081 .24257 aline .161925 .24257 closepath ! end of curve ! start of curve amove .14224 .21844 bezier .117468 .153543 .832473E-01 .091407 .056515 .02794 aline .229235 .02794 bezier .201707 .908276E-01 .167797 .154032 .142875 .219075 aline .14224 .21844 closepath ! end of curve fill dfont endchar dfont char=2 !-------------- Beginning of new char. dfont wid=.777781 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .144145 .25019 bezier .204494 .246316 .250588 .18747 .25273 .12954 bezier .258312 .675849E-01 .214919 .590185E-03 .150495 -.00762 bezier .912942E-01 -.162117E-01 .347541E-01 .311062E-01 .023495 .0889 bezier .784083E-02 .152643 .441476E-01 .231512 .112395 .24765 aline .118745 .24892 aline .12192 .24892 aline .122555 .249555 aline .12827 .249555 aline .128905 .25019 aline .144145 .25019 closepath ! end of curve ! start of curve amove .12954 .2286 bezier .807084E-01 .224657 .512102E-01 .173591 .048895 .12954 bezier .452994E-01 .823481E-01 .069891 .261672E-01 .12065 .01524 bezier .16344 .444576E-02 .207694 .391477E-01 .21844 .08128 bezier .234046 .131075 .218613 .197615 .16764 .22225 bezier .155355 .227115 .142333 .230893 .12954 .2286 closepath ! end of curve ! start of curve amove .2032 .13589 aline .2032 .107315 aline .06985 .107315 aline .06985 .13589 aline .2032 .13589 closepath ! end of curve fill dfont endchar dfont char=3 !-------------- Beginning of new char. dfont wid=.611115 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .122555 .24257 aline .12319 .240665 aline .12827 .225425 aline .128905 .224155 aline .15494 .14605 aline .155575 .14478 aline .180975 .06858 aline .18161 .06731 aline .203835 .000635 aline .203835 -.000635 aline .172085 -.000635 aline .17145 0 aline .14097 .09144 bezier .127832 .133711 .112489 .176073 .103505 .219075 bezier .967453E-01 .179986 .081913 .141801 .070485 .103505 aline .05461 .05588 aline .053975 .05334 aline .050165 .04191 aline .04953 .04064 aline .036195 .000635 aline .03556 -.000635 aline .010795 -.000635 aline .010795 .000635 aline .03302 .06731 aline .033655 .06858 aline .05969 .146685 aline .060325 .147955 aline .085725 .224155 aline .08636 .225425 aline .09144 .240665 aline .092075 .24257 closepath ! end of curve fill dfont endchar dfont char=4 !-------------- Beginning of new char. dfont wid=.666669 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .21717 .240665 aline .21717 .215265 aline .017145 .215265 aline .017145 .240665 aline .21717 .240665 closepath ! end of curve ! start of curve amove .194945 .137795 aline .194945 .112395 aline .03937 .112395 aline .03937 .137795 aline .194945 .137795 closepath ! end of curve ! start of curve amove .219075 .024765 aline .219075 -.000635 aline .01524 -.000635 aline .01524 .024765 aline .219075 .024765 closepath ! end of curve fill dfont endchar dfont char=5 !-------------- Beginning of new char. dfont wid=.708338 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .21463 .2413 aline .21463 -.000635 aline .18415 -.000635 aline .18415 .21971 aline .183515 .220345 aline .065405 .220345 aline .06477 .21971 aline .06477 -.000635 aline .03429 -.000635 aline .03429 .2413 aline .21463 .2413 closepath ! end of curve fill dfont endchar dfont char=6 !-------------- Beginning of new char. dfont wid=.722224 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .23368 .24257 aline .23368 .220345 aline .13716 .220345 aline .136525 .22098 aline .060325 .22098 bezier .834769E-01 .187181 .112421 .15422 .13716 .12065 bezier .115081 .882518E-01 .905025E-01 .055219 .070485 .02286 aline .142875 .02286 aline .14351 .023495 aline .23368 .023495 aline .23368 -.000635 aline .02032 -.000635 bezier .047569 .384111E-01 .744932E-01 .776914E-01 .1016 .11684 bezier .742316E-01 .151143 .476688E-01 .186027 .02032 .220345 aline .02032 .24257 aline .23368 .24257 closepath ! end of curve fill dfont endchar dfont char=7 !-------------- Beginning of new char. dfont wid=.777781 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .08128 .25019 bezier .118356 .246413 .133093 .203729 .13589 .172085 aline .136525 .17145 bezier .140669 .20215 .153297 .246448 .191135 .249555 bezier .222484 .255428 .254244 .225993 .25273 .19431 aline .22606 .19431 bezier .227304 .213915 .207215 .233705 .187325 .22606 bezier .160735 .218944 .156254 .186256 .153035 .164465 aline .153035 .156845 aline .1524 .15621 aline .1524 .144145 aline .151765 .14351 aline .151765 -.000635 aline .121285 -.000635 aline .121285 .14351 bezier .119241 .168904 .118995 .197522 .10033 .21844 bezier .850084E-01 .232974 .560931E-01 .229628 .04953 .207645 aline .048895 .20574 aline .04826 .2032 aline .047625 .202565 aline .047625 .19939 aline .04699 .198755 aline .04699 .19431 aline .02032 .19431 bezier .190177E-01 .225999 .495994E-01 .254247 .08128 .25019 closepath ! end of curve fill dfont endchar dfont char=8 !-------------- Beginning of new char. dfont wid=.722224 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .140335 .24257 aline .140335 .20574 bezier .182539 .201668 .229024 .172634 .23368 .127 bezier .237654 .772246E-01 .188073 .406578E-01 .142875 .03683 aline .140335 .036195 aline .140335 -.000635 aline .11176 -.000635 aline .11176 .036195 bezier .721973E-01 .413417E-01 .286451E-01 .669131E-01 .020955 .109855 bezier .135293E-01 .155219 .542009E-01 .193959 .09652 .202565 aline .10287 .203835 aline .106045 .203835 aline .10668 .20447 aline .11049 .20447 aline .11176 .20574 aline .11176 .24257 aline .140335 .24257 closepath ! end of curve ! start of curve amove .140335 .183515 aline .140335 .05842 bezier .170697 .598283E-01 .201379 .834408E-01 .20447 .114935 bezier .207963 .148885 .179469 .179023 .14605 .18288 aline .145415 .183515 aline .14224 .183515 aline .141288 .183991 aline .140335 .183515 closepath ! end of curve ! start of curve amove .10795 .18288 bezier .728408E-01 .179135 .435233E-01 .145427 .050165 .11049 bezier .557084E-01 .817093E-01 .829177E-01 .060516 .11176 .059055 aline .11176 .18288 aline .109855 .183261 aline .10795 .18288 closepath ! end of curve fill dfont endchar dfont char=9 !-------------- Beginning of new char. dfont wid=.777781 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .14986 .24257 aline .14986 .05969 bezier .184434 .064424 .198589 .104399 .200025 .133985 aline .200025 .168275 bezier .202032 .183946 .200654 .208889 .220345 .21463 aline .25273 .21463 aline .25273 .193675 bezier .233593 .192845 .230082 .169314 .2286 .15494 bezier .230694 .115538 .221172 .685579E-01 .183515 .047625 aline .175895 .043815 aline .17399 .04318 aline .17272 .042545 aline .1651 .040005 aline .15748 .0381 aline .154305 .037465 aline .150495 .037465 aline .14986 .03683 aline .14986 -.000635 aline .121285 -.000635 aline .121285 .03683 bezier .797452E-01 .404556E-01 .048476 .789997E-01 .046355 .11938 bezier .415335E-01 .142303 .499731E-01 .170649 .03175 .189865 aline .02667 .192405 aline .02413 .19304 aline .023495 .193675 aline .02032 .193675 aline .02032 .21463 aline .052705 .21463 bezier .723955E-01 .208889 .710178E-01 .183946 .073025 .168275 aline .073025 .133985 bezier .742985E-01 .105032 .875149E-01 .652321E-01 .121285 .05969 aline .121285 .24257 aline .14986 .24257 closepath ! end of curve fill dfont endchar dfont char=10 !-------------- Beginning of new char. dfont wid=.722224 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .13589 .25019 bezier .185268 .248556 .238672 .208031 .23368 .154305 bezier .229484 .105649 .188099 .693539E-01 .177165 .02286 aline .23749 .02286 aline .23749 -.000635 aline .1524 -.000635 bezier .151561 .629253E-01 .216902 .116515 .200025 .180975 bezier .180269 .242419 .819675E-01 .245664 .056515 .187325 bezier .370611E-01 .13858 .745053E-01 .919837E-01 .09144 .04699 bezier .980363E-01 .315803E-01 .10143 .154412E-01 .1016 -.000635 aline .01651 -.000635 aline .01651 .02286 aline .076835 .02286 bezier .651772E-01 .735305E-01 .149379E-01 .114103 .020955 .16891 bezier .248648E-01 .216766 .738965E-01 .247969 .11811 .25019 aline .13589 .25019 closepath ! end of curve fill dfont endchar dfont char=11 !-------------- Beginning of new char. dfont wid=.583336 hei=.694445 dep=0 italic=.0694447 dfont fby=33 kadd=.0694447 dfont fby=39 kadd=.0694447 dfont fby=")" kadd=.0694447 dfont fby="?" kadd=.0694447 dfont fby="]" kadd=.0694447 dfont fby="i" ligrep=14 dfont fby="l" ligrep=15 set path ! start of curve newpath ! start of curve amove .1016 .24638 aline .102235 .245745 aline .10795 .245745 aline .108585 .24511 aline .11176 .24511 aline .11811 .24384 aline .12065 .243205 aline .12192 .24257 aline .12192 .21971 bezier .10229 .227646 .743143E-01 .230166 .06223 .208915 aline .061595 .20701 aline .06096 .20447 aline .060325 .203835 aline .060325 .155575 aline .06096 .15494 aline .100965 .15494 aline .100965 .135255 aline .06223 .135255 aline .061595 .13462 aline .061595 -.000635 aline .036195 -.000635 aline .036195 .13462 aline .03556 .135255 aline .009525 .135255 aline .009525 .15494 aline .03556 .15494 aline .036195 .155575 aline .036195 .19431 bezier .386281E-01 .22589 .700212E-01 .251187 .1016 .24638 closepath ! end of curve ! start of curve amove .198755 .24638 aline .19939 .245745 aline .205105 .245745 aline .20574 .24511 aline .208915 .24511 aline .215265 .24384 aline .217805 .243205 aline .219075 .24257 aline .219075 .21971 bezier .199445 .227646 .171469 .230166 .159385 .208915 aline .15875 .20701 aline .158115 .20447 aline .15748 .203835 aline .15748 .155575 aline .158115 .15494 aline .19812 .15494 aline .19812 .135255 aline .159385 .135255 aline .15875 .13462 aline .15875 -.000635 aline .13335 -.000635 aline .13335 .19431 bezier .135783 .22589 .167176 .251187 .198755 .24638 closepath ! end of curve fill dfont endchar dfont char=12 !-------------- Beginning of new char. dfont wid=.536113 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .088265 .24638 aline .0889 .245745 aline .09271 .245745 aline .095885 .24511 aline .098425 .244475 aline .102235 .243205 aline .103505 .24257 aline .103505 .21971 bezier .904773E-01 .227314 .694444E-01 .229207 .062865 .21209 aline .061595 .20828 aline .06096 .205105 aline .060325 .20447 aline .060325 .155575 aline .06096 .15494 aline .103505 .15494 aline .103505 .135255 aline .06223 .135255 aline .061595 .13462 aline .061595 -.000635 aline .036195 -.000635 aline .036195 .13462 aline .03556 .135255 aline .009525 .135255 aline .009525 .15494 aline .03556 .15494 aline .036195 .155575 aline .036195 .194945 bezier .375838E-01 .221196 .589682E-01 .250599 .088265 .24638 closepath ! end of curve ! start of curve amove .160655 .243205 aline .160655 .21463 aline .13208 .21463 aline .13208 .243205 aline .160655 .243205 closepath ! end of curve ! start of curve amove .159385 .15494 aline .159385 -.000635 aline .133985 -.000635 aline .133985 .15494 aline .159385 .15494 closepath ! end of curve fill dfont endchar dfont char=13 !-------------- Beginning of new char. dfont wid=.536113 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .088265 .24638 aline .0889 .245745 aline .09271 .245745 aline .095885 .24511 aline .098425 .244475 aline .102235 .243205 aline .103505 .24257 aline .103505 .21971 bezier .905823E-01 .227743 .693844E-01 .228948 .062865 .21209 aline .061595 .20828 aline .06096 .205105 aline .060325 .20447 aline .060325 .155575 aline .06096 .15494 aline .103505 .15494 aline .103505 .135255 aline .06223 .135255 aline .061595 .13462 aline .061595 -.000635 aline .036195 -.000635 aline .036195 .13462 aline .03556 .135255 aline .009525 .135255 aline .009525 .15494 aline .03556 .15494 aline .036195 .155575 aline .036195 .194945 bezier .375838E-01 .221196 .589682E-01 .250599 .088265 .24638 closepath ! end of curve ! start of curve amove .159385 .24257 aline .159385 -.000635 aline .133985 -.000635 aline .133985 .24257 aline .159385 .24257 closepath ! end of curve fill dfont endchar dfont char=14 !-------------- Beginning of new char. dfont wid=.813891 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .094615 .24638 aline .09525 .245745 aline .10033 .245745 aline .103505 .24511 aline .111125 .243205 aline .112395 .24257 aline .112395 .21971 bezier .957002E-01 .228369 .688054E-01 .22908 .061595 .207645 aline .06096 .205105 aline .060325 .20447 aline .060325 .155575 aline .06096 .15494 aline .10287 .15494 aline .10287 .135255 aline .06223 .135255 aline .061595 .13462 aline .061595 -.000635 aline .036195 -.000635 aline .036195 .13462 aline .03556 .135255 aline .009525 .135255 aline .009525 .15494 aline .03556 .15494 aline .036195 .155575 aline .036195 .19431 bezier .377705E-01 .223255 .642426E-01 .250949 .094615 .24638 closepath ! end of curve ! start of curve amove .186055 .24638 aline .18669 .245745 aline .1905 .245745 aline .193675 .24511 aline .19558 .244475 aline .19812 .24384 aline .200025 .243205 aline .20066 .24257 aline .20066 .21971 bezier .187649 .228132 .165865 .228581 .16002 .21082 aline .159385 .20828 aline .15875 .205105 aline .158115 .20447 aline .158115 .155575 aline .15875 .15494 aline .20066 .15494 aline .20066 .135255 aline .16002 .135255 aline .159385 .13462 aline .159385 -.000635 aline .133985 -.000635 aline .133985 .194945 bezier .135267 .221325 .157004 .250768 .186055 .24638 closepath ! end of curve ! start of curve amove .25781 .243205 aline .25781 .21463 aline .229235 .21463 aline .229235 .243205 aline .25781 .243205 closepath ! end of curve ! start of curve amove .25654 .15494 aline .25654 -.000635 aline .23114 -.000635 aline .23114 .15494 aline .25654 .15494 closepath ! end of curve fill dfont endchar dfont char=15 !-------------- Beginning of new char. dfont wid=.813891 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .094615 .24638 aline .09525 .245745 aline .10033 .245745 aline .103505 .24511 aline .111125 .243205 aline .112395 .24257 aline .112395 .21971 bezier .957002E-01 .228369 .688054E-01 .22908 .061595 .207645 aline .06096 .205105 aline .060325 .20447 aline .060325 .155575 aline .06096 .15494 aline .10287 .15494 aline .10287 .135255 aline .06223 .135255 aline .061595 .13462 aline .061595 -.000635 aline .036195 -.000635 aline .036195 .13462 aline .03556 .135255 aline .009525 .135255 aline .009525 .15494 aline .03556 .15494 aline .036195 .155575 aline .036195 .19431 bezier .377705E-01 .223255 .642426E-01 .250949 .094615 .24638 closepath ! end of curve ! start of curve amove .18542 .24638 aline .186055 .245745 aline .189865 .245745 aline .19304 .24511 aline .19558 .244475 aline .19939 .243205 aline .20066 .24257 aline .20066 .21971 bezier .187464 .228315 .165889 .228426 .16002 .21082 aline .159385 .20828 aline .15875 .205105 aline .158115 .20447 aline .158115 .155575 aline .15875 .15494 aline .20066 .15494 aline .20066 .135255 aline .16002 .135255 aline .159385 .13462 aline .159385 -.000635 aline .133985 -.000635 aline .133985 .194945 bezier .135309 .221019 .156596 .250491 .18542 .24638 closepath ! end of curve ! start of curve amove .25654 .24257 aline .25654 -.000635 aline .23114 -.000635 aline .23114 .24257 aline .25654 .24257 closepath ! end of curve fill dfont endchar dfont char=16 !-------------- Beginning of new char. dfont wid=.23889 hei=.444445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .05461 .15494 aline .05461 -.000635 aline .02921 -.000635 aline .02921 .15494 aline .05461 .15494 closepath ! end of curve fill dfont endchar dfont char=17 !-------------- Beginning of new char. dfont wid=.266668 hei=.444445 dep=.194445 italic=0 set path ! start of curve newpath ! start of curve amove .06477 .15494 aline .06477 -.029845 bezier .630814E-01 -.539303E-01 .399697E-01 -.780971E-01 .014605 -.07239 bezier .214029E-02 -.721707E-01 -.115573E-01 -.676862E-01 -.020955 -.060325 aline -.014605 -.041275 aline -.01397 -.040005 bezier .913379E-03 -.558943E-01 .320748E-01 -.555725E-01 .03937 -.032385 aline .03937 .15494 aline .06477 .15494 closepath ! end of curve fill dfont endchar dfont char=18 !-------------- Beginning of new char. dfont wid=.500002 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .056515 .24257 bezier .722792E-01 .223381 .878389E-01 .204045 .103505 .184785 aline .08255 .184785 bezier .649344E-01 .204013 .474055E-01 .223303 .029845 .24257 aline .056515 .24257 closepath ! end of curve fill dfont endchar dfont char=19 !-------------- Beginning of new char. dfont wid=.500002 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .14605 .24257 bezier .12849 .223303 .110961 .204013 .093345 .184785 aline .07239 .184785 bezier .880561E-01 .204045 .103616 .223381 .11938 .24257 aline .14605 .24257 closepath ! end of curve fill dfont endchar dfont char=20 !-------------- Beginning of new char. dfont wid=.500002 hei=.631945 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .048895 .2286 bezier .620044E-01 .214369 .745467E-01 .199378 .879475E-01 .185579 bezier .101348 .199378 .113891 .214369 .127 .2286 aline .147955 .2286 bezier .131473 .209106 .114956 .189638 .098425 .17018 aline .07747 .17018 bezier .609393E-01 .189638 .444218E-01 .209106 .02794 .2286 aline .048895 .2286 closepath ! end of curve fill dfont endchar dfont char=21 !-------------- Beginning of new char. dfont wid=.500002 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .04953 .24257 bezier .480479E-01 .213562 .853597E-01 .191242 .10922 .210185 bezier .119965 .216969 .126279 .230359 .126365 .24257 aline .14732 .24257 bezier .149323 .20457 .109406 .170489 .07239 .182245 bezier .463149E-01 .189509 .279176E-01 .21604 .028575 .24257 aline .04953 .24257 closepath ! end of curve fill dfont endchar dfont char=22 !-------------- Beginning of new char. dfont wid=.500002 hei=.608887 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .15113 .220345 aline .15113 .19812 aline .024765 .19812 aline .024765 .220345 aline .15113 .220345 closepath ! end of curve fill dfont endchar dfont char=23 !-------------- Beginning of new char. dfont wid=.66667 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .122555 .24257 bezier .14169 .24226 .165158 .22223 .153035 .20193 bezier .136168 .176313 .870802E-01 .178771 .078105 .210185 bezier .076024 .233451 .102948 .245075 .122555 .24257 closepath ! end of curve ! start of curve amove .111125 .22733 bezier .964932E-01 .227608 .916165E-01 .205785 .106045 .201295 bezier .117717 .196159 .139173 .200095 .13716 .216535 aline .136525 .21717 aline .13589 .219075 aline .13462 .221615 aline .13208 .224155 aline .12827 .22606 aline .126365 .226695 aline .12319 .22733 aline .122555 .227965 aline .11176 .227965 closepath ! end of curve fill dfont endchar dfont char=24 !-------------- Beginning of new char. dfont wid=.444446 hei=0 dep=.170138 italic=0 set path ! start of curve newpath ! start of curve amove .098425 -.01016 bezier .911245E-01 -.029554 .830404E-01 -.486234E-01 .075565 -.067945 aline .051435 -.067945 bezier .600549E-01 -.486825E-01 .684472E-01 -.291365E-01 .07747 -.01016 closepath ! end of curve fill dfont endchar dfont char=25 !-------------- Beginning of new char. dfont wid=.480558 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .09525 .24638 bezier .126928 .245149 .157732 .213229 .146685 .180975 bezier .141926 .164598 .129242 .151858 .114935 .14351 bezier .160507 .117119 .17765 .416407E-01 .13208 .006985 bezier .112983 -.750302E-02 .855621E-01 -.774512E-02 .065405 .00254 aline .06858 .012065 aline .069215 .013335 aline .071755 .020955 aline .07239 .022225 bezier .900624E-01 .129893E-01 .115302 .142332E-01 .12573 .033655 bezier .141957 .663066E-01 .129221 .112953 .09525 .12954 aline .08763 .13208 aline .08509 .132715 aline .084455 .13335 aline .080645 .13335 aline .08001 .133985 aline .07493 .133985 aline .07493 .15494 bezier .10125 .152745 .130626 .178368 .12065 .20574 bezier .109679 .234907 .593745E-01 .230902 .05461 .19939 aline .05461 -.000635 aline .02921 -.000635 aline .02921 .20066 bezier .332819E-01 .230866 .663456E-01 .249711 .09525 .24638 closepath ! end of curve fill dfont endchar dfont char=26 !-------------- Beginning of new char. dfont wid=.722224 hei=.444445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .089535 .160655 bezier .106798 .159125 .122844 .147975 .13208 .13335 bezier .15386 .164506 .207042 .172604 .229235 .137795 bezier .241677 .11946 .243777 .097257 .24384 .0762 aline .14097 .0762 bezier .138627 .468336E-01 .16579 .110057E-01 .19812 .017145 bezier .21323 .182734E-01 .228732 .256499E-01 .24003 .036195 aline .24003 .03302 aline .240665 .032385 bezier .239278 .242158E-01 .246231 .136531E-01 .23622 .009525 bezier .204848 -.132049E-01 .158374 -.764007E-02 .133668 .220663E-01 bezier .113576 -.281745E-02 .787148E-01 -.424206E-02 .04953 -.004445 bezier .171155E-01 .672046E-03 .372565E-02 .517315E-01 .034925 .067945 bezier .587557E-01 .832861E-01 .878346E-01 .834376E-01 .113665 .08636 bezier .115187 .106087 .112765 .132055 .090805 .139065 bezier .069761 .143533 .473122E-01 .135213 .029845 .122555 aline .029845 .126365 aline .02921 .127 aline .02921 .133985 aline .028575 .13462 aline .028575 .141605 aline .02794 .14224 aline .02794 .145415 bezier .464885E-01 .157559 .680287E-01 .161571 .089535 .160655 closepath ! end of curve ! start of curve amove .180975 .139065 bezier .159928 .135658 .145632 .115082 .142875 .09525 aline .222885 .09525 bezier .222856 .117537 .206094 .142441 .18161 .1397 closepath ! end of curve ! start of curve amove .106045 .06604 bezier .862919E-01 .655605E-01 .660524E-01 .627476E-01 .04826 .05207 bezier .333484E-01 .04016 .479065E-01 .186887E-01 .064135 .01778 bezier .799933E-01 .146391E-01 .994993E-01 .172057E-01 .11176 .029845 bezier .118374 .412766E-01 .114504 .547673E-01 .113665 .066675 aline .10668 .066675 aline .106045 .06604 closepath ! end of curve fill dfont endchar dfont char=27 !-------------- Beginning of new char. dfont wid=.777781 hei=.444445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .090805 .160655 bezier .113077 .158868 .133316 .144562 .145733 .126524 bezier .163983 .156212 .207709 .173123 .23749 .14986 bezier .258838 .131671 .26314 .102076 .26289 .0762 aline .16002 .0762 bezier .157677 .468338E-01 .18484 .110059E-01 .21717 .017145 bezier .23228 .182734E-01 .247782 .256499E-01 .25908 .036195 aline .25908 .03302 aline .259715 .032385 bezier .258328 .242158E-01 .265281 .136531E-01 .25527 .009525 bezier .220873 -.158409E-01 .168965 -.54019E-02 .146368 .303213E-01 bezier .126983 -.482552E-03 .828914E-01 -.159204E-01 .0508 .00508 bezier -.208722E-02 .035508 -.146086E-02 .121624 .051435 .151765 aline .059055 .155575 aline .06096 .15621 aline .06223 .156845 aline .06604 .158115 aline .07112 .159385 aline .074295 .16002 aline .078105 .16002 aline .07874 .160655 aline .090805 .160655 closepath ! end of curve ! start of curve amove .079375 .139065 bezier .536147E-01 .137312 .378918E-01 .110961 .036195 .08763 bezier .339215E-01 .594656E-01 .045196 .243694E-01 .0762 .017145 bezier .102934 .114044E-01 .127897 .350527E-01 .13081 .061595 bezier .137937 .903119E-01 .127812 .131392 .09398 .139065 aline .090805 .139065 aline .09017 .1397 aline .08001 .1397 aline .079375 .139065 closepath ! end of curve ! start of curve amove .200025 .139065 bezier .178978 .135658 .164682 .115082 .161925 .09525 aline .241935 .09525 bezier .241906 .117537 .225144 .142441 .20066 .1397 closepath ! end of curve fill dfont endchar dfont char=28 !-------------- Beginning of new char. dfont wid=.500002 hei=.541667 dep=.0972233 italic=0 set path ! start of curve newpath ! start of curve amove .14224 .19431 bezier .148025 .190635 .155405 .188093 .16002 .183515 bezier .152718 .169123 .142115 .155226 .13716 .140335 bezier .180143 .102183 .170043 .220624E-01 .114935 .000635 bezier .962728E-01 -.707893E-02 .759752E-01 -.533132E-02 .057531 .139699E-02 bezier .495817E-01 -.123087E-01 .042208 -.272583E-01 .033655 -.040005 aline .031115 -.038735 aline .03048 -.0381 aline .0254 -.03556 aline .024765 -.034925 aline .019685 -.032385 aline .01905 -.03175 aline .01651 -.03048 bezier .217349E-01 -.016089 .324296E-01 -.111353E-02 .040005 .013335 bezier -.594342E-02 .516456E-01 .699353E-02 .134235 .062865 .15621 bezier .811549E-01 .163282 .101317 .161515 .118957 .154093 bezier .126585 .167442 .134007 .18094 .141605 .19431 closepath ! end of curve ! start of curve amove .08255 .139065 bezier .550339E-01 .137138 .390712E-01 .108217 .037465 .08382 bezier .367365E-01 .661066E-01 .394517E-01 .476637E-01 .051435 .033655 bezier .694794E-01 .677138E-01 .908547E-01 .101198 .107315 .135255 aline .106045 .13589 aline .10033 .137795 aline .09779 .13843 aline .097155 .139065 aline .093345 .139065 aline .09271 .1397 aline .083185 .1397 aline .08255 .139065 closepath ! end of curve ! start of curve amove .12446 .12065 bezier .106604 .870313E-01 .085582 .538681E-01 .069215 .02032 bezier .972207E-01 .727947E-02 .132415 .281569E-01 .136525 .059055 bezier .141145 .795715E-01 .137749 .103103 .125095 .121285 aline .12446 .12065 closepath ! end of curve fill dfont endchar dfont char=29 !-------------- Beginning of new char. dfont wid=.861115 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .282575 .24257 aline .282575 .220345 aline .222885 .220345 aline .22225 .22098 aline .178435 .22098 aline .1778 .220345 aline .1778 .13716 aline .178435 .136525 aline .27305 .136525 aline .27305 .11557 aline .178435 .11557 aline .1778 .114935 aline .1778 .023495 aline .178435 .02286 aline .220345 .02286 aline .22098 .023495 aline .287655 .023495 aline .287655 -.000635 aline .147955 -.000635 aline .147955 .076835 aline .14732 .07747 aline .06858 .07747 bezier .057487 .515584E-01 .474378E-01 .252145E-01 .036195 -.000635 aline .010795 -.000635 bezier .043412 .804619E-01 .076583 .161958 .11049 .24257 aline .282575 .24257 closepath ! end of curve ! start of curve amove .127 .220345 bezier .110574 .17917 .092102 .13706 .076835 .09652 aline .14732 .09652 aline .147955 .097155 aline .147955 .220345 aline .14732 .22098 aline .127635 .22098 aline .127 .220345 closepath ! end of curve fill dfont endchar dfont char=30 !-------------- Beginning of new char. dfont wid=.972226 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .13335 .25019 bezier .146785 .248632 .161674 .244656 .174625 .24257 aline .32131 .24257 aline .32131 .220345 aline .25146 .220345 aline .250825 .22098 aline .19685 .22098 aline .196215 .220345 aline .196215 .13716 aline .19685 .136525 aline .311785 .136525 aline .311785 .11557 aline .19685 .11557 aline .196215 .114935 aline .196215 .023495 aline .19685 .02286 aline .24765 .02286 aline .248285 .023495 aline .32639 .023495 aline .32639 -.000635 aline .174625 -.000635 bezier .145491 -.734058E-02 .113086 -.136302E-01 .08382 .000635 bezier .020183 .028731 -.522784E-02 .110246 .02032 .172085 bezier .370319E-01 .218129 .836862E-01 .253662 .13335 .25019 closepath ! end of curve ! start of curve amove .120015 .2286 bezier .734078E-01 .224867 .428797E-01 .177172 .040005 .13462 bezier .367151E-01 .849416E-01 .625728E-01 .245537E-01 .116205 .013335 bezier .133102 .110961E-01 .158486 .123292E-01 .16256 .033655 aline .163195 .036195 aline .16383 .03937 aline .164465 .040005 aline .164465 .043815 aline .1651 .04445 aline .1651 .048895 aline .165735 .04953 aline .165735 .05842 aline .16637 .059055 aline .16637 .18288 bezier .16451 .198032 .165101 .221197 .14605 .226695 aline .14097 .227965 aline .140335 .2286 aline .13589 .2286 aline .135255 .229235 aline .12065 .229235 aline .120015 .2286 closepath ! end of curve fill dfont endchar dfont char=31 !-------------- Beginning of new char. dfont wid=.777781 hei=.743055 dep=.0486116 italic=0 set path ! start of curve newpath ! start of curve amove .207645 .264795 aline .208915 .26416 aline .211455 .26289 aline .21209 .262255 aline .2159 .26035 aline .216535 .259715 aline .220345 .25781 aline .22098 .257175 aline .22479 .25527 aline .22606 .254 bezier .220601 .24328 .212577 .233059 .208788 .221996 bezier .272903 .166598 .2662 .521184E-01 .19304 .00762 bezier .159513 -.013295 .117161 -.128897E-01 .829734E-01 .529167E-02 bezier .772879E-01 -.427431E-02 .721711E-01 -.142502E-01 .06604 -.023495 aline .065405 -.02286 aline .061595 -.020955 aline .06096 -.02032 aline .05715 -.018415 aline .056515 -.01778 aline .052705 -.015875 aline .05207 -.01524 aline .04826 -.013335 aline .04699 -.012065 bezier .523804E-01 -.146495E-02 .605127E-01 .895089E-02 .064135 .019685 bezier -.14161E-02 .753238E-01 .804554E-02 .191976 .08255 .235585 bezier .115787 .255605 .156607 .253972 .190119 .236728 bezier .195792 .246265 .200896 .256211 .20701 .26543 aline .207645 .264795 closepath ! end of curve ! start of curve amove .12954 .2286 bezier .865258E-01 .225724 .555968E-01 .183372 .051435 .142875 bezier .454957E-01 .107885 .526042E-01 .684008E-01 .076835 .040005 bezier .110534 .988118E-01 .145428 .157771 .178012 .216747 bezier .163401 .225717 .146105 .231067 .12954 .2286 closepath ! end of curve ! start of curve amove .194945 .200025 bezier .162146 .141521 .126395 .833167E-01 .09525 .024765 bezier .132957 -.576744E-03 .186614 .016535 .207645 .05588 bezier .231838 .101541 .229253 .15945 .19685 .20066 aline .195898 .201136 aline .195368 .200872 closepath ! end of curve fill dfont endchar dfont char=32 !-------------- Beginning of new char. dfont wid=.23889 hei=.444445 dep=0 italic=0 dfont fby="L" kadd=-.258336 dfont fby="l" kadd=-.23889 set path ! start of curve newpath ! start of curve amove .079375 .13843 aline .08001 .137795 aline .085725 .12065 aline .085725 .120015 aline .08509 .11938 aline .05461 .10922 aline .05207 .108585 aline .004445 .09271 aline .00381 .09398 aline -.001905 .111125 aline -.001905 .11176 aline .062865 .13335 aline .065405 .133985 aline .07874 .13843 aline .079375 .13843 closepath ! end of curve fill dfont endchar dfont char=33 !-------------- Beginning of new char. dfont wid=.319446 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .070485 .24257 aline .070485 .222885 aline .06985 .22225 aline .06985 .182245 aline .069215 .18161 aline .069215 .14224 aline .06858 .141605 aline .06858 .1016 aline .067945 .100965 aline .067945 .061595 aline .06731 .06096 aline .045085 .06096 aline .04445 .061595 aline .04445 .100965 aline .043815 .1016 aline .043815 .141605 aline .04318 .14224 aline .04318 .18161 aline .042545 .182245 aline .042545 .22225 aline .04191 .222885 aline .04191 .24257 aline .070485 .24257 closepath ! end of curve ! start of curve amove .070485 .02794 aline .070485 -.000635 aline .04191 -.000635 aline .04191 .02794 aline .070485 .02794 closepath ! end of curve fill dfont endchar dfont char=34 !-------------- Beginning of new char. dfont wid=.500002 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .04064 .24257 aline .04064 .21336 aline .036195 .200025 aline .03556 .198755 aline .026035 .17018 aline .01143 .17018 bezier .143565E-01 .184704 .018177 .199756 .02032 .213995 aline .012065 .213995 aline .012065 .24257 aline .04064 .24257 closepath ! end of curve ! start of curve amove .10922 .24257 aline .10922 .21336 aline .104775 .200025 aline .10414 .198755 aline .094615 .17018 aline .08001 .17018 bezier .829365E-01 .184704 .086757 .199756 .0889 .213995 aline .080645 .213995 aline .080645 .24257 aline .10922 .24257 closepath ! end of curve fill dfont endchar dfont char=35 !-------------- Beginning of new char. dfont wid=.833336 hei=.694445 dep=.194443 italic=0 set path ! start of curve newpath ! start of curve amove .147955 .24257 aline .149225 .241935 aline .150495 .2413 aline .151765 .24003 aline .153035 .23749 bezier .146317 .201264 .133458 .165505 .126365 .12954 aline .191135 .12954 bezier .201571 .166213 .209891 .203623 .22098 .24003 aline .22225 .2413 aline .22479 .24257 aline .2286 .24257 aline .23114 .2413 aline .23241 .24003 aline .23368 .23749 bezier .226962 .201264 .214103 .165505 .20701 .12954 aline .266065 .12954 bezier .273366 .128898 .275111 .117848 .26797 .11557 aline .20193 .11557 bezier .197225 .966682E-01 .191362 .076519 .187325 .05842 aline .26797 .05842 bezier .275111 .561421E-01 .273366 .450925E-01 .266065 .04445 aline .18288 .04445 bezier .172224 .756781E-02 .163689 -.300531E-01 .1524 -.066675 aline .15113 -.067945 aline .14859 -.069215 aline .14478 -.069215 aline .14224 -.067945 aline .14097 -.066675 aline .1397 -.064135 bezier .146612 -.276925E-01 .159668 .828318E-02 .167005 .04445 aline .102235 .04445 bezier .915787E-01 .756782E-02 .830437E-01 -.300531E-01 .071755 -.066675 aline .070485 -.067945 aline .067945 -.069215 aline .064135 -.069215 aline .061595 -.067945 aline .060325 -.066675 aline .059055 -.064135 bezier .659674E-01 -.276926E-01 .790234E-01 .828355E-02 .08636 .04445 aline .02667 .04445 bezier .193688E-01 .450925E-01 .176236E-01 .561421E-01 .024765 .05842 aline .09144 .05842 bezier .961453E-01 .773218E-01 .102008 .097471 .106045 .11557 aline .024765 .11557 bezier .176236E-01 .117848 .193688E-01 .128898 .02667 .12954 aline .11049 .12954 bezier .120926 .166213 .129246 .203623 .140335 .24003 aline .141605 .2413 aline .142875 .241935 aline .144145 .24257 closepath ! end of curve ! start of curve amove .12065 .11303 bezier .116098 .949914E-01 .110519 .756688E-01 .10668 .05842 aline .172085 .05842 bezier .17679 .773218E-01 .182653 .097471 .18669 .11557 aline .121285 .11557 closepath ! end of curve fill dfont endchar dfont char=36 !-------------- Beginning of new char. dfont wid=.500002 hei=.75 dep=.0555553 italic=0 set path ! start of curve newpath ! start of curve amove .09779 .262255 aline .09779 .24638 bezier .115474 .244788 .13724 .238662 .14986 .225425 bezier .147967 .218832 .147965 .210391 .145415 .20447 bezier .132447 .215382 .114278 .224342 .09779 .22352 aline .09779 .1397 bezier .139368 .132545 .164934 .085807 .153035 .04699 bezier .145902 .210136E-01 .123987 .770359E-03 .09779 -.004445 aline .09779 -.02032 aline .078105 -.02032 aline .078105 -.004445 bezier .571516E-01 -.187072E-02 .316259E-01 .535071E-02 .01651 .020955 bezier .184235E-01 .277539E-01 .186786E-01 .362831E-01 .020955 .042545 bezier .364553E-01 .291015E-01 .581917E-01 .187559E-01 .078105 .018415 aline .078105 .112395 bezier .346033E-01 .118064 .643976E-02 .169222 .02667 .20828 bezier .036409 .228361 .561975E-01 .242196 .078105 .24638 aline .078105 .262255 aline .09779 .262255 closepath ! end of curve ! start of curve amove .075565 .222885 bezier .479587E-01 .216266 .356397E-01 .180406 .053975 .15875 bezier .602392E-01 .151874 .689297E-01 .145491 .078105 .14478 aline .078105 .222885 aline .076835 .223308 aline .075565 .222885 closepath ! end of curve ! start of curve amove .09779 .10668 aline .09779 .01905 bezier .129917 .254366E-01 .141318 .707711E-01 .11938 .09398 bezier .114198 .100298 .106095 .10624 .09779 .10668 closepath ! end of curve fill dfont endchar dfont char=37 !-------------- Beginning of new char. dfont wid=.833336 hei=.75 dep=.0555553 italic=0 set path ! start of curve newpath ! start of curve amove .073025 .262255 bezier .101044 .257439 .115057 .22542 .11684 .200025 bezier .118877 .170186 .10855 .13231 .076835 .12192 bezier .435269E-01 .115856 .021126 .153763 .020955 .18288 bezier .169152E-01 .213518 .303377E-01 .254978 .06477 .262255 aline .073025 .262255 closepath ! end of curve ! start of curve amove .226695 .262255 bezier .23753 .257594 .227801 .246373 .224155 .24003 bezier .174007 .153658 .124544 .667917E-01 .07366 -.01905 aline .07112 -.02032 aline .06731 -.02032 bezier .564751E-01 -.156589E-01 .662042E-01 -.44376E-02 .06985 .001905 bezier .119998 .882775E-01 .169461 .175143 .220345 .260985 aline .221615 .26162 aline .222885 .262255 closepath ! end of curve ! start of curve amove .065405 .240665 bezier .499001E-01 .235336 .475735E-01 .215775 .04572 .202565 bezier .457141E-01 .182626 .442281E-01 .160499 .05969 .145415 bezier .714244E-01 .136347 .084055 .148529 .08763 .16002 bezier .967142E-01 .185222 .964218E-01 .215684 .07874 .23749 aline .07747 .238125 aline .076835 .23876 aline .074295 .24003 aline .07239 .240665 aline .071755 .2413 aline .06604 .2413 closepath ! end of curve ! start of curve amove .2286 .12065 bezier .256619 .115834 .270632 .838153E-01 .272415 .05842 bezier .274452 .285814E-01 .264125 -.92947E-02 .23241 -.019685 bezier .199102 -.257487E-01 .176701 .121574E-01 .17653 .041275 bezier .17249 .719131E-01 .185913 .113373 .220345 .12065 aline .2286 .12065 closepath ! end of curve ! start of curve amove .22098 .09906 bezier .205475 .937307E-01 .203149 .741696E-01 .201295 .06096 bezier .201289 .410209E-01 .199803 .188935E-01 .215265 .00381 bezier .226999 -.525819E-02 .23963 .692363E-02 .243205 .018415 bezier .252289 .436173E-01 .251997 .740791E-01 .234315 .095885 aline .233045 .09652 aline .23241 .097155 aline .22987 .098425 aline .227965 .09906 aline .22733 .099695 aline .221615 .099695 closepath ! end of curve fill dfont endchar dfont char=38 !-------------- Beginning of new char. dfont wid=.758336 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .11049 .25019 bezier .149171 .24451 .163892 .189615 .13843 .161925 bezier .127623 .145551 .111572 .132965 .979488E-01 .119063 bezier .112106 .901028E-01 .131722 .650773E-01 .153035 .041275 bezier .183909 .665014E-01 .201636 .104178 .21336 .14097 aline .22098 .139065 aline .222885 .13843 aline .233045 .13589 aline .234315 .135255 bezier .223512 .937056E-01 .201534 .554872E-01 .169704 .269875E-01 bezier .19132 .796438E-02 .221055 .121605E-01 .24638 .02032 aline .24638 -.00254 bezier .214303 -.123178E-01 .17686 -.109596E-01 .149543 .119063E-01 bezier .116305 -.710195E-02 .072442 -.018866 .038735 .004445 bezier .918933E-02 .244287E-01 .712762E-02 .716537E-01 .03556 .093345 bezier .046069 .103757 .587649E-01 .112191 .683683E-01 .12319 bezier .560237E-01 .159479 .499847E-01 .202265 .074295 .23495 aline .080645 .2413 aline .081915 .241935 aline .083185 .243205 aline .084455 .24384 aline .08509 .244475 aline .09144 .24765 aline .09525 .24892 aline .09779 .249555 aline .100965 .25019 aline .11049 .25019 closepath ! end of curve ! start of curve amove .102235 .2286 bezier .810074E-01 .224185 .776057E-01 .197937 .080645 .18034 bezier .081288 .166933 .847349E-01 .153662 .089535 .140335 bezier .107308 .157944 .132184 .178102 .127 .20574 bezier .124729 .217306 .115923 .232643 .102235 .2286 closepath ! end of curve ! start of curve amove .07366 .098425 bezier .575075E-01 .861395E-01 .377378E-01 .692341E-01 .042545 .04699 bezier .441122E-01 .257911E-01 .665216E-01 .879835E-02 .086995 .01397 bezier .102245 .146723E-01 .118325 .197088E-01 .13208 .027305 bezier .111007 .502134E-01 .920101E-01 .074618 .07747 .102235 aline .07366 .098425 closepath ! end of curve fill dfont endchar dfont char=39 !-------------- Beginning of new char. dfont wid=.277779 hei=.694445 dep=0 italic=0 dfont fby=33 kadd=.111112 dfont fby=39 ligrep=34 dfont fby="?" kadd=.111112 set path ! start of curve newpath ! start of curve amove .0635 .24257 aline .0635 .21336 aline .059055 .200025 aline .05842 .198755 aline .048895 .17018 aline .03429 .17018 bezier .372165E-01 .184704 .041037 .199756 .04318 .213995 aline .034925 .213995 aline .034925 .24257 aline .0635 .24257 closepath ! end of curve fill dfont endchar dfont char=40 !-------------- Beginning of new char. dfont wid=.38889 hei=.75 dep=.25 italic=0 set path ! start of curve newpath ! start of curve amove .116205 .262255 bezier .726926E-01 .221512 .572126E-01 .158334 .05461 .10287 aline .05461 .07112 bezier .572126E-01 .156559E-01 .726926E-01 -.475224E-01 .116205 -.088265 aline .09525 -.088265 bezier .486708E-01 -.490665E-01 .302593E-01 .155462E-01 .02794 .07239 bezier .266015E-01 .126477 .343185E-01 .181757 .065405 .2286 bezier .739252E-01 .240811 .836893E-01 .252523 .09525 .262255 aline .116205 .262255 aline .107315 .253365 closepath ! end of curve fill dfont endchar dfont char=")" !-------------- Beginning of new char. dfont wid=.38889 hei=.75 dep=.25 italic=0 set path ! start of curve newpath ! start of curve amove .041275 .262255 bezier .878542E-01 .223056 .106266 .158444 .108585 .1016 bezier .109924 .475129E-01 .102207 -.776667E-02 .07112 -.05461 bezier .625998E-01 -.066821 .528357E-01 -.785327E-01 .041275 -.088265 aline .02032 -.088265 bezier .638324E-01 -.475223E-01 .793125E-01 .156559E-01 .081915 .07112 aline .081915 .10287 bezier .793124E-01 .158334 .638324E-01 .221512 .02032 .262255 aline .041275 .262255 closepath ! end of curve fill dfont endchar dfont char="*" !-------------- Beginning of new char. dfont wid=.500002 hei=.75 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .09017 .262255 bezier .103875 .259488 .990475E-01 .243103 .098425 .23368 aline .098425 .22352 aline .09779 .222885 aline .09779 .21209 aline .097155 .211455 aline .097155 .20193 bezier .111408 .20871 .124257 .221827 .139065 .229235 bezier .151249 .231684 .158787 .212835 .14732 .20701 bezier .133786 .199213 .117754 .192411 .105833 .183938 bezier .12095 .175568 .137071 .168588 .15113 .15875 bezier .159349 .147032 .141684 .132576 .13208 .14351 bezier .120496 .151116 .108937 .161256 .097155 .167005 bezier .097008 .14902 .100301 .131494 .09906 .113665 bezier .951829E-01 .103422 .078306 .104726 .0762 .11557 bezier .760486E-01 .132836 .798412E-01 .151063 .777875E-01 .167481 bezier .640456E-01 .158381 .513121E-01 .147587 .03683 .1397 bezier .246457E-01 .137251 .171076E-01 .1561 .028575 .161925 bezier .421085E-01 .169722 .581413E-01 .176525 .700617E-01 .184997 bezier .549446E-01 .193368 .388244E-01 .200347 .024765 .210185 bezier .165457E-01 .221903 .034211 .236359 .043815 .225425 bezier .553989E-01 .217819 .669585E-01 .207679 .07874 .20193 bezier .078887 .219915 .755937E-01 .237441 .076835 .25527 aline .07747 .25654 aline .078105 .257175 aline .07874 .258445 aline .08001 .259715 aline .08128 .26035 aline .081915 .260985 aline .083185 .26162 aline .085725 .262255 closepath ! end of curve fill dfont endchar dfont char="+" !-------------- Beginning of new char. dfont wid=.777781 hei=.583334 dep=.083334 italic=0 set path ! start of curve newpath ! start of curve amove .13843 .203835 aline .1397 .2032 aline .14097 .202565 aline .14224 .201295 aline .14351 .198755 aline .14351 .094615 aline .144145 .09398 aline .24765 .09398 aline .25019 .09271 aline .25146 .09144 aline .25273 .0889 aline .25273 .08509 aline .25146 .08255 aline .25019 .08128 aline .24765 .08001 aline .144145 .08001 aline .14351 .079375 aline .14351 -.024765 aline .14224 -.027305 aline .14097 -.028575 aline .13843 -.029845 aline .13462 -.029845 aline .13208 -.028575 aline .13081 -.027305 aline .12954 -.024765 aline .12954 .079375 aline .128905 .08001 aline .0254 .08001 aline .02286 .08128 aline .02159 .08255 aline .02032 .08509 aline .02032 .0889 aline .02159 .09144 aline .02286 .09271 aline .0254 .09398 aline .128905 .09398 aline .12954 .094615 aline .12954 .198755 aline .13081 .201295 aline .13208 .202565 aline .13335 .2032 aline .13462 .203835 closepath ! end of curve fill dfont endchar dfont char="," !-------------- Beginning of new char. dfont wid=.277779 hei=.083333 dep=.125 italic=0 set path ! start of curve newpath ! start of curve amove .0635 .02794 aline .0635 -.00127 aline .059055 -.014605 aline .05842 -.015875 aline .048895 -.04445 aline .03429 -.04445 bezier .372165E-01 -.299258E-01 .041037 -.148741E-01 .04318 -.000635 aline .034925 -.000635 aline .034925 .02794 aline .0635 .02794 closepath ! end of curve fill dfont endchar dfont char="-" !-------------- Beginning of new char. dfont wid=.333334 hei=.444445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .09652 .086995 aline .09652 .06731 aline .004445 .06731 aline .004445 .086995 aline .09652 .086995 closepath ! end of curve fill dfont endchar dfont char="." !-------------- Beginning of new char. dfont wid=.277779 hei=.083333 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .0635 .02794 aline .0635 -.000635 aline .034925 -.000635 aline .034925 .02794 aline .0635 .02794 closepath ! end of curve fill dfont endchar dfont char="/" !-------------- Beginning of new char. dfont wid=.500002 hei=.75 dep=.25 italic=0 set path ! start of curve newpath ! start of curve amove .150495 .262255 aline .151765 .26162 aline .153035 .260985 aline .154305 .259715 aline .155575 .257175 bezier .13148 .181361 .101704 .106588 .075565 .031115 bezier .604949E-01 -.801486E-02 .483176E-01 -.487238E-01 .03175 -.086995 aline .02921 -.088265 aline .0254 -.088265 aline .02286 -.086995 aline .02159 -.085725 aline .02032 -.083185 bezier .444152E-01 -.737131E-02 .741909E-01 .674023E-01 .10033 .142875 bezier .1154 .182005 .127577 .222714 .144145 .260985 aline .145415 .26162 aline .146685 .262255 closepath ! end of curve fill dfont endchar dfont char="0" !-------------- Beginning of new char. dfont wid=.500002 hei=.655556 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .09398 .236855 bezier .127256 .234378 .14949 .203775 .155575 .17272 bezier .158698 .15865 .15939 .145376 .160655 .131445 aline .160655 .09525 bezier .159191 .589637E-01 .150267 .106582E-01 .11049 -.004445 bezier .762342E-01 -.181343E-01 .357472E-01 .368544E-02 .0254 .038735 bezier .179127E-01 .573306E-01 .168743E-01 .076471 .01524 .09525 aline .01524 .131445 bezier .168914E-01 .167791 .248834E-01 .216293 .064135 .23241 aline .06604 .233045 aline .06731 .23368 aline .069215 .234315 aline .074295 .235585 aline .07747 .23622 aline .08128 .23622 aline .081915 .236855 aline .09398 .236855 closepath ! end of curve ! start of curve amove .083185 .215265 bezier .534326E-01 .211739 .448331E-01 .176415 .042545 .1524 aline .042545 .142875 aline .04191 .14224 aline .04191 .093345 bezier .442782E-01 .680451E-01 .457053E-01 .353106E-01 .069215 .018415 bezier .905401E-01 .368188E-02 .118873 .200863E-01 .125095 .04318 bezier .13116 .059921 .1328 .765204E-01 .133985 .093345 aline .133985 .14224 bezier .132053 .167656 .128346 .203604 .09906 .213995 aline .09652 .21463 aline .095885 .215265 aline .09271 .215265 aline .092075 .2159 aline .08382 .2159 aline .083185 .215265 closepath ! end of curve fill dfont endchar dfont char="1" !-------------- Beginning of new char. dfont wid=.500002 hei=.655556 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .104775 .236855 aline .104775 .019685 aline .10541 .01905 aline .14859 .01905 aline .14859 -.000635 aline .03429 -.000635 aline .03429 .01905 aline .07747 .01905 aline .078105 .019685 aline .078105 .20193 bezier .634322E-01 .197004 .481279E-01 .193675 .032385 .19431 aline .032385 .213995 bezier .557645E-01 .21336 .809129E-01 .2197 .098425 .236855 aline .104775 .236855 closepath ! end of curve fill dfont endchar dfont char="2" !-------------- Beginning of new char. dfont wid=.500002 hei=.655556 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .09017 .236855 bezier .131066 .235548 .163228 .193849 .156845 .154305 bezier .152614 .115222 .115686 .926175E-01 .089535 .067945 aline .078105 .056515 aline .076835 .05588 aline .062865 .04191 aline .061595 .041275 aline .047625 .027305 aline .046355 .02667 aline .04318 .023495 aline .043815 .02286 aline .15748 .02286 aline .15748 -.000635 aline .018415 -.000635 aline .018415 .020955 aline .07493 .07747 bezier .102087 .101003 .133853 .131564 .128905 .17018 bezier .126167 .192915 .107004 .213368 .08382 .215265 bezier .602044E-01 .218634 .039623 .200249 .03429 .1778 aline .033655 .17653 aline .03302 .17399 aline .03175 .17018 aline .029845 .16256 aline .02921 .160655 bezier .244514E-01 .166891 .192174E-01 .173133 .01524 .179705 bezier .223306E-01 .208586 .455341E-01 .235598 .0762 .236855 aline .09017 .236855 closepath ! end of curve fill dfont endchar dfont char="3" !-------------- Beginning of new char. dfont wid=.500002 hei=.655556 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .094615 .236855 bezier .125751 .235376 .157829 .206811 .150495 .17399 bezier .146956 .152146 .131671 .133645 .112395 .123825 bezier .143584 .114175 .167677 .810238E-01 .159385 .04826 bezier .150982 .564646E-02 .102147 -.181626E-01 .062865 -.00508 bezier .437734E-01 .882775E-03 .244763E-01 .129409E-01 .01524 .03048 bezier .173957E-01 .356976E-01 .166619E-01 .449445E-01 .01905 .04826 bezier .377868E-01 .209822E-01 .077054 .245926E-02 .10795 .01778 bezier .141882 .392794E-01 .136548 .101716 .095885 .112395 aline .09271 .112395 aline .092075 .11303 aline .059055 .11303 aline .059055 .133985 bezier .793304E-01 .134346 .104233 .137063 .11557 .15748 bezier .127406 .175615 .126313 .205103 .103505 .213995 bezier .076512 .224548 .430674E-01 .207087 .03302 .179705 bezier .286877E-01 .185772 .243727E-01 .191851 .02032 .19812 bezier .347202E-01 .22404 .651225E-01 .239521 .094615 .236855 closepath ! end of curve fill dfont endchar dfont char="4" !-------------- Beginning of new char. dfont wid=.500002 hei=.655556 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .130175 .229235 aline .130175 .08128 aline .13081 .080645 aline .165735 .080645 aline .165735 .05969 aline .13081 .05969 aline .130175 .059055 aline .130175 -.000635 aline .103505 -.000635 aline .103505 .059055 aline .10287 .05969 aline .01016 .05969 aline .01016 .08128 bezier .396861E-01 .130523 .689455E-01 .179958 .098425 .229235 aline .130175 .229235 closepath ! end of curve ! start of curve amove .10414 .2159 bezier .973446E-01 .179519 .745984E-01 .148305 .057785 .116205 bezier .512894E-01 .104444 .424361E-01 .919833E-01 .037465 .080645 aline .104775 .080645 aline .10541 .08128 aline .10541 .2159 aline .104775 .216535 aline .10414 .2159 closepath ! end of curve fill dfont endchar dfont char="5" !-------------- Beginning of new char. dfont wid=.500002 hei=.655556 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .14605 .229235 aline .14605 .207645 aline .05461 .207645 aline .053975 .20701 aline .053975 .135255 bezier .623036E-01 .140665 .743455E-01 .148139 .085725 .14859 bezier .125184 .152787 .155839 .113739 .15748 .07747 bezier .163192 .313181E-01 .12013 -.014721 .07366 -.00762 bezier .502985E-01 -.683432E-02 .279705E-01 .725354E-02 .014605 .026035 bezier .183826E-01 .316218E-01 .216739E-01 .407445E-01 .026035 .043815 bezier .427862E-01 .114486E-01 .096083 -.175874E-02 .117475 .032385 bezier .131238 .581483E-01 .130804 .909753E-01 .114935 .11557 bezier .096881 .139031 .604821E-01 .124741 .05207 .099695 aline .02921 .099695 aline .02921 .229235 aline .14605 .229235 closepath ! end of curve fill dfont endchar dfont char="6" !-------------- Beginning of new char. dfont wid=.500002 hei=.655556 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .11684 .236855 bezier .12596 .235432 .136463 .234331 .145415 .22987 aline .145415 .20955 bezier .121007 .220192 .896206E-01 .221746 .070485 .200025 bezier .534809E-01 .1821 .457122E-01 .15564 .045085 .13208 bezier .654817E-01 .158969 .11143 .174288 .136525 .14605 bezier .161605 .11738 .165691 .756226E-01 .154305 .04064 bezier .142272 .124911E-01 .113822 -.134129E-01 .081915 -.00762 bezier .393133E-01 -.402891E-02 .197397E-01 .440829E-01 .01778 .080645 bezier .971032E-02 .132472 .218854E-01 .197334 .07112 .226695 aline .071755 .22733 aline .079375 .23114 aline .08128 .231775 aline .08255 .23241 aline .088265 .234315 aline .093345 .235585 aline .09652 .23622 aline .10033 .23622 aline .100965 .236855 aline .11684 .236855 closepath ! end of curve ! start of curve amove .08255 .139065 bezier .519943E-01 .133618 .041966 .969174E-01 .04572 .071755 bezier .477494E-01 .482957E-01 .567474E-01 .171349E-01 .08382 .012065 bezier .112761 .808383E-02 .131349 .392363E-01 .13208 .064135 bezier .133212 .893749E-01 .132102 .11843 .109855 .13462 aline .104775 .13716 aline .100965 .13843 aline .09779 .139065 aline .097155 .1397 aline .083185 .1397 closepath ! end of curve fill dfont endchar dfont char="7" !-------------- Beginning of new char. dfont wid=.500002 hei=.655556 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .160655 .229235 aline .160655 .20701 bezier .110962 .148998 .828657E-01 .701974E-01 .083185 -.004445 aline .05461 -.004445 bezier .538198E-01 .07093 .845033E-01 .149928 .137795 .205105 aline .13716 .20574 aline .01524 .20574 aline .01524 .229235 aline .160655 .229235 aline .160655 .20701 closepath ! end of curve fill dfont endchar dfont char="8" !-------------- Beginning of new char. dfont wid=.500002 hei=.655556 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .094615 .236855 bezier .132139 .235348 .167064 .19537 .1524 .158115 bezier .146124 .140783 .128549 .130261 .114088 .122978 bezier .149736 .112442 .171737 .704826E-01 .155575 .036195 bezier .138482 -.910191E-02 .074573 -.229607E-01 .03937 .009525 bezier .767054E-02 .350587E-01 .638297E-02 .897338E-01 .04191 .112395 bezier .471574E-01 .117981 .569917E-01 .119714 .618067E-01 .124037 bezier .311194E-01 .132812 .102094E-01 .168233 .024765 .19812 bezier .364502E-01 .224635 .663525E-01 .239518 .094615 .236855 closepath ! end of curve ! start of curve amove .08128 .216535 bezier .0552 .216013 .371808E-01 .186499 .04572 .163195 bezier .561245E-01 .123253 .123039 .124767 .13081 .165735 bezier .137856 .188492 .119595 .216066 .094615 .216535 aline .09398 .21717 aline .081915 .21717 aline .08128 .216535 closepath ! end of curve ! start of curve amove .081915 .112395 bezier .513654E-01 .110008 .036319 .737559E-01 .04445 .047625 bezier .497475E-01 .108102E-01 .102425 -.601977E-03 .12319 .02921 bezier .143367 .564306E-01 .133552 .104751 .097155 .112395 aline .09398 .112395 aline .093345 .11303 aline .08255 .11303 aline .081915 .112395 closepath ! end of curve fill dfont endchar dfont char="9" !-------------- Beginning of new char. dfont wid=.500002 hei=.655556 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .09525 .236855 bezier .137605 .232175 .155923 .184444 .15875 .147955 bezier .163717 .100321 .157967 .449285E-01 .11938 .010795 bezier .948981E-01 -.138878E-01 .052328 -.145945E-01 .026035 .00762 bezier .295104E-01 .135484E-01 .032716 .204504E-01 .03683 .0254 bezier .595689E-01 .349086E-02 .997071E-01 .96548E-02 .1143 .0381 bezier .125038 .555223E-01 .131141 .774522E-01 .13081 .09652 bezier .110335 .697778E-01 .644922E-01 .542407E-01 .03937 .08255 bezier .142153E-01 .111623 .978965E-02 .154039 .022225 .18923 bezier .351786E-01 .216885 .629917E-01 .240996 .09525 .236855 closepath ! end of curve ! start of curve amove .08382 .216535 bezier .586826E-01 .214584 .453653E-01 .186311 .043815 .164465 bezier .426409E-01 .139218 .439232E-01 .110232 .06604 .09398 bezier .903282E-01 .790776E-01 .122158 .097143 .127635 .123825 bezier .134492 .149879 .130217 .177557 .11684 .20193 bezier .109571 .212188 .961788E-01 .219596 .08382 .216535 closepath ! end of curve fill dfont endchar dfont char=":" !-------------- Beginning of new char. dfont wid=.277779 hei=.444445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .0635 .15494 aline .0635 .126365 aline .034925 .126365 aline .034925 .15494 aline .0635 .15494 closepath ! end of curve ! start of curve amove .0635 .02794 aline .0635 -.000635 aline .034925 -.000635 aline .034925 .02794 aline .0635 .02794 closepath ! end of curve fill dfont endchar dfont char=";" !-------------- Beginning of new char. dfont wid=.277779 hei=.444445 dep=.125 italic=0 set path ! start of curve newpath ! start of curve amove .0635 .15494 aline .0635 .126365 aline .034925 .126365 aline .034925 .15494 aline .0635 .15494 closepath ! end of curve ! start of curve amove .0635 .02794 aline .0635 -.00127 aline .059055 -.014605 aline .05842 -.015875 aline .048895 -.04445 aline .03429 -.04445 bezier .372165E-01 -.299258E-01 .041037 -.148741E-01 .04318 -.000635 aline .034925 -.000635 aline .034925 .02794 aline .0635 .02794 closepath ! end of curve fill dfont endchar dfont char="<" !-------------- Beginning of new char. dfont wid=.319446 hei=.5 dep=.194445 italic=0 set path ! start of curve newpath ! start of curve amove .070485 .174625 aline .070485 .14605 aline .04191 .14605 aline .04191 .174625 aline .070485 .174625 closepath ! end of curve ! start of curve amove .06731 .11303 aline .067945 .112395 aline .067945 .07239 aline .06858 .071755 aline .06858 .032385 aline .069215 .03175 aline .069215 -.008255 aline .06985 -.00889 aline .06985 -.048895 aline .070485 -.04953 aline .070485 -.069215 aline .04191 -.069215 aline .04191 -.04953 aline .042545 -.048895 aline .042545 -.00889 aline .04318 -.008255 aline .04318 .03175 aline .043815 .032385 aline .043815 .071755 aline .04445 .07239 aline .04445 .112395 aline .045085 .11303 aline .06731 .11303 closepath ! end of curve fill dfont endchar dfont char="=" !-------------- Beginning of new char. dfont wid=.777781 hei=.37 dep=-.13 italic=0 set path ! start of curve newpath ! start of curve amove .24638 .12954 bezier .253681 .128898 .255426 .117848 .248285 .11557 aline .024765 .11557 aline .023495 .116205 aline .02286 .11684 aline .02159 .117475 aline .02032 .120015 aline .02032 .12446 aline .02159 .127 aline .02286 .127635 aline .023495 .12827 aline .024765 .128905 aline .02667 .12954 closepath ! end of curve ! start of curve amove .248285 .05842 bezier .255426 .561421E-01 .253681 .450925E-01 .24638 .04445 aline .02667 .04445 aline .024765 .045085 aline .023495 .04572 aline .02286 .046355 aline .02159 .04699 aline .02032 .04953 aline .02032 .053975 aline .02159 .056515 aline .02286 .05715 aline .023495 .057785 aline .024765 .05842 closepath ! end of curve fill dfont endchar dfont char=">" !-------------- Beginning of new char. dfont wid=.472224 hei=.5 dep=.194445 italic=0 set path ! start of curve newpath ! start of curve amove .092075 .174625 aline .092075 .14605 aline .0635 .14605 aline .0635 .174625 aline .092075 .174625 closepath ! end of curve ! start of curve amove .0889 .11303 bezier .093048 .736397E-01 .804638E-01 .310252E-01 .05207 .001905 bezier .442568E-01 -.014044 .432693E-01 -.390714E-01 .06096 -.048895 bezier .868151E-01 -.573381E-01 .11513 -.475954E-01 .137795 -.03302 aline .139065 -.03683 aline .1397 -.0381 aline .141605 -.043815 aline .14224 -.045085 aline .144145 -.0508 aline .14478 -.05207 aline .145415 -.053975 bezier .118472 -.714746E-01 .832538E-01 -.778868E-01 .05207 -.069215 bezier .126359E-01 -.551048E-01 .990242E-02 .43497E-02 .04191 .02794 bezier .620372E-01 .513311E-01 .684382E-01 .822487E-01 .06604 .112395 aline .066675 .11303 aline .0889 .11303 closepath ! end of curve fill dfont endchar dfont char="?" !-------------- Beginning of new char. dfont wid=.472224 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .086995 .24638 bezier .113189 .246128 .14436 .228381 .14478 .198755 bezier .148068 .180563 .139875 .159566 .123825 .149225 bezier .983377E-01 .127697 .08579 .944865E-01 .089535 .061595 aline .0889 .06096 aline .066675 .06096 bezier .062414 .993209E-01 .754681E-01 .142132 .107315 .167005 bezier .127231 .182927 .120759 .221994 .09271 .224155 bezier .07057 .228743 .453708E-01 .221708 .02794 .206375 aline .02667 .210185 aline .026035 .211455 aline .02413 .21717 bezier .226437E-01 .222113 .172887E-01 .228953 .024765 .23114 bezier .432935E-01 .243377 .653669E-01 .247445 .086995 .24638 closepath ! end of curve ! start of curve amove .092075 .02794 aline .092075 -.000635 aline .0635 -.000635 aline .0635 .02794 aline .092075 .02794 closepath ! end of curve fill dfont endchar dfont char="@" !-------------- Beginning of new char. dfont wid=.666669 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .14351 .24638 bezier .17549 .244811 .200789 .21853 .207645 .18796 bezier .214171 .156893 .217344 .124262 .210185 .09271 bezier .201133 .576873E-01 .161422 .028682 .126365 .046355 bezier .681302E-01 .076229 .715878E-01 .17661 .13462 .198755 bezier .149409 .203036 .165414 .199983 .178647 .192828 bezier .172068 .219829 .13938 .232082 .114935 .22225 bezier .592025E-01 .206281 .337991E-01 .138314 .0508 .086995 bezier .618668E-01 .430779E-01 .107628 .850355E-02 .1524 .01778 bezier .165347 .187042E-01 .178831 .231608E-01 .191135 .028575 aline .213995 .028575 bezier .171735 -.177703E-01 .929303E-01 -.141588E-01 .05334 .033655 bezier -.152773E-02 .911237E-01 .139325E-01 .19651 .08509 .23368 bezier .103525 .243383 .123269 .247117 .14351 .24638 closepath ! end of curve ! start of curve amove .17907 .19304 aline .178435 .192405 aline .17907 .19177 aline .179705 .192405 aline .17907 .19304 closepath ! end of curve ! start of curve amove .145415 .17907 bezier .122101 .174861 .11299 .14806 .11049 .12827 bezier .109359 .104111 .116343 .726703E-01 .14224 .0635 bezier .165786 .569082E-01 .183429 .825258E-01 .18669 .103505 bezier .192385 .129485 .185878 .167496 .156845 .178435 aline .15367 .17907 aline .153035 .179705 aline .14605 .179705 closepath ! end of curve fill dfont endchar dfont char="A" !-------------- Beginning of new char. dfont wid=.66667 hei=.694445 dep=0 italic=0 dfont fby="C" kadd=-.0277786 dfont fby="G" kadd=-.0277786 dfont fby="O" kadd=-.0277786 dfont fby="Q" kadd=-.0277786 dfont fby="T" kadd=-.083334 dfont fby="U" kadd=-.0277786 dfont fby="V" kadd=-.111112 dfont fby="W" kadd=-.111112 dfont fby="Y" kadd=-.083334 dfont fby="t" kadd=-.0277786 set path ! start of curve newpath ! start of curve amove .132715 .24257 bezier .162667 .161404 .194173 .806126E-01 .22352 -.000635 aline .192405 -.000635 bezier .182587 .228438E-01 .174427 .473184E-01 .1651 .07112 aline .062865 .07112 bezier .542677E-01 .470804E-01 .449082E-01 .233566E-01 .036195 -.000635 aline .010795 -.000635 bezier .401444E-01 .806118E-01 .716472E-01 .161405 .1016 .24257 closepath ! end of curve ! start of curve amove .113665 .217805 aline .11303 .21463 aline .112395 .211455 aline .11176 .20955 aline .111125 .20701 aline .109855 .2032 aline .10922 .20066 aline .099695 .172085 bezier .903003E-01 .144859 .792633E-01 .116536 .070485 .09017 aline .15748 .09017 bezier .149112 .116744 .138064 .143912 .128905 .170815 aline .118745 .201295 aline .11811 .203835 aline .11684 .207645 aline .114935 .215265 aline .114935 .21844 aline .1143 .219075 closepath ! end of curve fill dfont endchar dfont char="B" !-------------- Beginning of new char. dfont wid=.66667 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .126365 .24257 bezier .160893 .240941 .206916 .217843 .20447 .177165 bezier .200317 .149833 .173157 .133281 .147955 .127 bezier .180379 .12087 .217431 .967621E-01 .213995 .05969 bezier .208863 .228847E-01 .169333 .11053E-02 .135255 -.000635 aline .034925 -.000635 aline .034925 .24257 aline .126365 .24257 closepath ! end of curve ! start of curve amove .0635 .222885 aline .0635 .13716 aline .064135 .136525 aline .11811 .136525 bezier .143624 .139435 .179968 .154472 .1778 .186055 bezier .170188 .211986 .139417 .220887 .116205 .22352 aline .064135 .22352 aline .0635 .222885 closepath ! end of curve ! start of curve amove .0635 .114935 aline .0635 .01905 aline .064135 .018415 aline .125095 .018415 bezier .15133 .205372E-01 .186489 .364501E-01 .18669 .06731 bezier .182318 .992947E-01 .14532 .114089 .117475 .11557 aline .064135 .11557 aline .0635 .114935 closepath ! end of curve fill dfont endchar dfont char="C" !-------------- Beginning of new char. dfont wid=.638891 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .149225 .25019 bezier .166689 .248638 .185412 .245722 .202565 .238125 bezier .200849 .228991 .199572 .219469 .197485 .210185 bezier .166329 .231864 .121429 .237201 .09144 .21082 bezier .411029E-01 .163342 .419304E-01 .739469E-01 .094615 .028575 bezier .127268 .379148E-02 .173487 .106805E-01 .20447 .034925 aline .20447 .031115 aline .205105 .03048 aline .205105 .023495 aline .20574 .02286 aline .20574 .015875 aline .206375 .01524 aline .206375 .01143 bezier .16095 -.209418E-01 .919715E-01 -.139969E-01 .056515 .03048 bezier .127592E-02 .925135E-01 .178421E-01 .204946 .09525 .2413 bezier .112481 .249451 .130546 .250867 .149225 .25019 closepath ! end of curve fill dfont endchar dfont char="D" !-------------- Beginning of new char. dfont wid=.722226 hei=.694445 dep=0 italic=0 dfont fby="A" kadd=-.0277786 dfont fby="V" kadd=-.0277786 dfont fby="W" kadd=-.0277786 dfont fby="X" kadd=-.0277786 dfont fby="Y" kadd=-.0277786 set path ! start of curve newpath ! start of curve amove .13462 .24257 bezier .190926 .238127 .231629 .181753 .23368 .12827 bezier .239063 .711241E-01 .199994 .823325E-02 .140335 0 aline .135255 0 aline .13462 -.000635 aline .034925 -.000635 aline .034925 .24257 aline .13462 .24257 closepath ! end of curve ! start of curve amove .064135 .222885 aline .064135 .01905 aline .06477 .018415 aline .126365 .018415 bezier .165552 .223204E-01 .196744 .562546E-01 .20193 .09525 bezier .211496 .1418 .19265 .20541 .140335 .220345 aline .135255 .221615 aline .13462 .22225 aline .131445 .22225 aline .13081 .222885 aline .126365 .222885 aline .12573 .22352 aline .06477 .22352 aline .064135 .222885 closepath ! end of curve fill dfont endchar dfont char="E" !-------------- Beginning of new char. dfont wid=.597224 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .189865 .2413 aline .189865 .219075 aline .120015 .219075 aline .11938 .21971 aline .065405 .21971 aline .06477 .219075 aline .06477 .136525 aline .065405 .13589 aline .18034 .13589 aline .18034 .114935 aline .065405 .114935 aline .06477 .1143 aline .06477 .023495 aline .065405 .02286 aline .116205 .02286 aline .11684 .023495 aline .194945 .023495 aline .194945 -.000635 aline .03429 -.000635 aline .03429 .2413 aline .189865 .2413 closepath ! end of curve fill dfont endchar dfont char="F" !-------------- Beginning of new char. dfont wid=.569448 hei=.694445 dep=0 italic=0 dfont fby="A" kadd=-.083334 dfont fby="C" kadd=-.0277786 dfont fby="G" kadd=-.0277786 dfont fby="O" kadd=-.0277786 dfont fby="Q" kadd=-.0277786 dfont fby="a" kadd=-.0277786 dfont fby="e" kadd=-.0277786 dfont fby="o" kadd=-.0277786 dfont fby="r" kadd=-.0277786 dfont fby="u" kadd=-.0277786 set path ! start of curve newpath ! start of curve amove .184785 .2413 aline .184785 .219075 aline .117475 .219075 aline .11684 .21971 aline .065405 .21971 aline .06477 .219075 aline .06477 .131445 aline .065405 .13081 aline .17018 .13081 aline .17018 .109855 aline .065405 .109855 aline .06477 .10922 aline .06477 -.000635 aline .03429 -.000635 aline .03429 .2413 aline .184785 .2413 closepath ! end of curve fill dfont endchar dfont char="G" !-------------- Beginning of new char. dfont wid=.666669 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .147955 .25019 bezier .16761 .248771 .188931 .243631 .20701 .233045 bezier .205294 .223911 .204017 .214389 .20193 .205105 bezier .168509 .235523 .110052 .238716 .08128 .200025 bezier .417548E-01 .150459 .455325E-01 .707872E-01 .094615 .028575 bezier .120479 .775325E-02 .154411 .115824E-01 .183515 .020955 aline .183515 .08255 aline .18288 .083185 aline .13716 .083185 aline .13716 .10414 aline .210185 .10414 aline .210185 .00889 bezier .165815 -.132029E-01 .107963 -.179152E-01 .069215 .01778 bezier .232757E-02 .739898E-01 .108017E-01 .193973 .08763 .23749 bezier .106288 .248146 .127018 .251237 .147955 .25019 closepath ! end of curve fill dfont endchar dfont char="H" !-------------- Beginning of new char. dfont wid=.708338 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .06477 .24257 aline .06477 .13716 aline .065405 .136525 aline .183515 .136525 aline .18415 .13716 aline .18415 .24257 aline .21463 .24257 aline .21463 -.000635 aline .18415 -.000635 aline .18415 .114935 aline .183515 .11557 aline .065405 .11557 aline .06477 .114935 aline .06477 -.000635 aline .03429 -.000635 aline .03429 .24257 aline .06477 .24257 closepath ! end of curve fill dfont endchar dfont char="I" !-------------- Beginning of new char. dfont wid=.277781 hei=.694445 dep=0 italic=0 dfont fby="I" kadd=.0277786 set path ! start of curve newpath ! start of curve amove .064135 .24257 aline .064135 -.000635 aline .033655 -.000635 aline .033655 .24257 aline .064135 .24257 closepath ! end of curve fill dfont endchar dfont char="J" !-------------- Beginning of new char. dfont wid=.472224 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .13589 .24257 aline .13589 .04318 bezier .134831 .164611E-01 .110618 -.802865E-02 .083185 -.00762 bezier .602531E-01 -.985751E-02 .362363E-01 -.478712E-02 .01524 .00635 bezier .016842 .146412E-01 .179558E-01 .230075E-01 .019685 .03175 bezier .404115E-01 .01018 .812444E-01 .342633E-02 .100965 .02921 aline .103505 .03429 aline .104775 .0381 aline .10541 .04064 aline .106045 .041275 aline .106045 .04445 aline .10668 .045085 aline .10668 .24257 aline .13589 .24257 closepath ! end of curve fill dfont endchar dfont char="K" !-------------- Beginning of new char. dfont wid=.694448 hei=.694445 dep=0 italic=0 dfont fby="C" kadd=-.0277786 dfont fby="G" kadd=-.0277786 dfont fby="O" kadd=-.0277786 dfont fby="Q" kadd=-.0277786 set path ! start of curve newpath ! start of curve amove .064135 .24257 aline .064135 .11303 aline .06477 .112395 aline .081915 .12954 aline .08255 .13081 aline .104775 .153035 aline .10541 .154305 aline .127635 .17653 aline .12827 .1778 aline .150495 .200025 aline .15113 .201295 aline .173355 .22352 aline .17399 .22479 aline .19177 .24257 aline .22352 .24257 aline .201295 .220345 aline .20066 .219075 aline .178435 .19685 aline .1778 .19558 aline .15494 .17272 aline .154305 .17145 aline .13208 .149225 bezier .128317 .143303 .137595 .137761 .1397 .13208 bezier .169126 .876925E-01 .198959 .435979E-01 .2286 -.000635 aline .19685 -.000635 bezier .167661 .414661E-01 .14007 .849159E-01 .110808 .126841 aline .109855 .126365 aline .10922 .12573 aline .108585 .12446 aline .08636 .102235 aline .085725 .100965 aline .064135 .079375 aline .064135 -.000635 aline .034925 -.000635 aline .034925 .24257 aline .064135 .24257 closepath ! end of curve fill dfont endchar dfont char="L" !-------------- Beginning of new char. dfont wid=.541669 hei=.694445 dep=0 italic=0 dfont fby="T" kadd=-.083334 dfont fby="V" kadd=-.111112 dfont fby="W" kadd=-.111112 dfont fby="Y" kadd=-.083334 set path ! start of curve newpath ! start of curve amove .06477 .24257 aline .06477 .02159 aline .065405 .020955 aline .11938 .020955 aline .120015 .02159 aline .17526 .02159 aline .17526 -.000635 aline .03429 -.000635 aline .03429 .24257 aline .06477 .24257 closepath ! end of curve fill dfont endchar dfont char="M" !-------------- Beginning of new char. dfont wid=.875005 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .075565 .24257 bezier .101954 .172043 .131299 .102553 .15367 .03048 bezier .176041 .102554 .205386 .172043 .231775 .24257 aline .271145 .24257 aline .271145 -.000635 aline .244475 -.000635 aline .244475 .21844 aline .24384 .219075 bezier .220876 .147182 .192175 .771736E-01 .1651 .006985 aline .14097 .006985 bezier .114166 .770923E-01 .848075E-01 .146786 .0635 .219075 aline .062865 .21844 aline .062865 -.000635 aline .036195 -.000635 aline .036195 .24257 closepath ! end of curve fill dfont endchar dfont char="N" !-------------- Beginning of new char. dfont wid=.708338 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .078105 .24257 aline .07874 .2413 aline .11938 .16002 aline .16002 .07874 aline .167005 .06477 aline .16764 .062865 aline .1778 .042545 aline .178435 .04064 aline .18288 .03175 aline .183515 .029845 aline .18542 .026035 aline .186055 .02413 aline .18669 .02286 aline .187325 .023495 aline .187325 .24257 aline .213995 .24257 aline .213995 -.000635 aline .170815 -.000635 aline .130175 .080645 aline .089535 .161925 aline .081915 .177165 aline .08128 .17907 aline .07112 .19939 aline .070485 .201295 aline .06604 .210185 aline .065405 .21209 aline .0635 .2159 aline .062865 .217805 aline .06223 .219075 aline .061595 .21844 aline .061595 -.000635 aline .034925 -.000635 aline .034925 .24257 closepath ! end of curve fill dfont endchar dfont char="O" !-------------- Beginning of new char. dfont wid=.736113 hei=.694445 dep=0 italic=0 dfont fby="A" kadd=-.0277786 dfont fby="V" kadd=-.0277786 dfont fby="W" kadd=-.0277786 dfont fby="X" kadd=-.0277786 dfont fby="Y" kadd=-.0277786 set path ! start of curve newpath ! start of curve amove .136525 .25019 bezier .195531 .245432 .236412 .184753 .238125 .12954 bezier .243276 .698095E-01 .205303 .180366E-02 .14224 -.00762 bezier .879562E-01 -.156923E-01 .381443E-01 .285372E-01 .0254 .08001 bezier .862263E-02 .139705 .317041E-01 .215412 .092075 .24257 bezier .1064 .248993 .121169 .250669 .136525 .25019 closepath ! end of curve ! start of curve amove .122555 .22733 bezier .779729E-01 .222882 .530177E-01 .175083 .0508 .135255 bezier .048772 .914469E-01 .631327E-01 .03758 .107315 .018415 bezier .145285 .195187E-02 .185747 .336288E-01 .197485 .06985 bezier .214777 .115178 .21186 .170699 .177165 .207645 bezier .162596 .220849 .142092 .230477 .122555 .22733 closepath ! end of curve fill dfont endchar dfont char="P" !-------------- Beginning of new char. dfont wid=.638891 hei=.694445 dep=0 italic=0 dfont fby="," kadd=-.083334 dfont fby="." kadd=-.083334 dfont fby="A" kadd=-.083334 dfont fby="a" kadd=-.0277786 dfont fby="e" kadd=-.0277786 dfont fby="o" kadd=-.0277786 set path ! start of curve newpath ! start of curve amove .130175 .24257 bezier .168453 .240921 .209859 .206768 .203835 .165735 bezier .201407 .129875 .166409 .104076 .132715 .100965 aline .06604 .100965 aline .065405 .10033 aline .065405 -.000635 aline .034925 -.000635 aline .034925 .24257 aline .130175 .24257 closepath ! end of curve ! start of curve amove .064135 .222885 aline .064135 .121285 aline .06477 .12065 aline .12192 .12065 bezier .147249 .122054 .176267 .140479 .17653 .16891 bezier .179591 .194133 .157528 .218247 .13208 .221615 aline .131445 .22225 aline .12827 .22225 aline .127635 .222885 aline .122555 .222885 aline .12192 .22352 aline .06477 .22352 aline .064135 .222885 closepath ! end of curve fill dfont endchar dfont char="Q" !-------------- Beginning of new char. dfont wid=.736113 hei=.694445 dep=.125 italic=0 set path ! start of curve newpath ! start of curve amove .136525 .25019 bezier .195531 .245432 .236412 .184753 .238125 .12954 bezier .240904 .852754E-01 .223452 .376838E-01 .18669 .010795 bezier .201115 -.729188E-02 .214345 -.262402E-01 .2286 -.04445 aline .19304 -.04445 bezier .182969 -.303578E-01 .173265 -.158053E-01 .162878 -.206375E-02 bezier .111445 -.235335E-01 .518278E-01 .110254E-01 .032385 .06096 bezier .602663E-02 .120324 .223719E-01 .198917 .07874 .235585 bezier .096217 .246523 .116352 .251353 .136525 .25019 closepath ! end of curve ! start of curve amove .122555 .22733 bezier .761425E-01 .222117 .518588E-01 .17129 .04953 .130175 bezier .466623E-01 .856446E-01 .649074E-01 .030673 .112395 .01651 bezier .124409 .126066E-01 .13738 .130977E-01 .149225 .01778 bezier .137514 .342403E-01 .125922 .507855E-01 .1143 .06731 aline .14478 .06731 bezier .153806 .549791E-01 .162964 .425486E-01 .172403 .306388E-01 bezier .209577 .630387E-01 .216014 .118709 .202565 .163195 bezier .19319 .198446 .160591 .232161 .122555 .22733 closepath ! end of curve fill dfont endchar dfont char="R" !-------------- Beginning of new char. dfont wid=.645836 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .127 .24257 bezier .163997 .241168 .209716 .214323 .206375 .172085 bezier .202561 .142028 .174912 .120691 .146685 .113665 bezier .170342 .758346E-01 .193104 .373582E-01 .216535 -.000635 aline .186055 -.000635 bezier .163628 .361083E-01 .141962 .734008E-01 .120015 .11049 aline .06477 .11049 aline .064135 .109855 aline .064135 -.000635 aline .034925 -.000635 aline .034925 .24257 aline .127 .24257 closepath ! end of curve ! start of curve amove .064135 .222885 aline .064135 .13208 aline .06477 .131445 aline .12319 .131445 bezier .146782 .133093 .177112 .147014 .178435 .174625 bezier .181182 .199084 .156999 .218977 .13335 .221615 aline .132715 .22225 aline .12954 .22225 aline .128905 .222885 aline .123825 .222885 aline .12319 .22352 aline .06477 .22352 aline .064135 .222885 closepath ! end of curve fill dfont endchar dfont char="S" !-------------- Beginning of new char. dfont wid=.555557 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .10795 .25019 bezier .126303 .248965 .146109 .243347 .16256 .233045 bezier .160844 .223911 .159567 .214389 .15748 .205105 bezier .130338 .231343 .788953E-01 .239539 .053975 .206375 bezier .379728E-01 .183716 .547886E-01 .151887 .080645 .14605 aline .118745 .136525 bezier .163017 .125865 .190082 .709267E-01 .165735 .031115 bezier .149138 -.914498E-03 .108537 -.014401 .075565 -.00635 bezier .548566E-01 -.434423E-02 .339202E-01 .431138E-02 .01651 .015875 bezier .182258E-01 .250085E-01 .195027E-01 .345308E-01 .02159 .043815 bezier .497519E-01 .020561 .918996E-01 .489543E-02 .12573 .023495 bezier .152998 .395159E-01 .154242 .814919E-01 .127635 .09906 aline .126365 .099695 aline .12573 .10033 aline .11811 .10414 aline .116205 .104775 aline .114935 .10541 aline .11303 .106045 aline .07493 .11557 bezier .367517E-01 .124507 .826344E-02 .167554 .024765 .205105 bezier .382157E-01 .237323 .746482E-01 .253611 .10795 .25019 closepath ! end of curve fill dfont endchar dfont char="T" !-------------- Beginning of new char. dfont wid=.680557 hei=.694445 dep=0 italic=0 dfont fby="A" kadd=-.083334 dfont fby="a" kadd=-.083334 dfont fby="e" kadd=-.083334 dfont fby="o" kadd=-.083334 dfont fby="r" kadd=-.083334 dfont fby="u" kadd=-.083334 dfont fby="y" kadd=-.083334 set path ! start of curve newpath ! start of curve amove .22606 .240665 aline .22606 .21844 aline .173355 .21844 aline .17272 .219075 aline .13589 .219075 aline .135255 .21844 aline .135255 -.000635 aline .104775 -.000635 aline .104775 .21844 aline .10414 .219075 aline .066675 .219075 aline .06604 .21844 aline .013335 .21844 aline .013335 .240665 aline .22606 .240665 closepath ! end of curve fill dfont endchar dfont char="U" !-------------- Beginning of new char. dfont wid=.687505 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .06477 .24257 aline .06477 .07239 bezier .662729E-01 .044911 .851881E-01 .137218E-01 .11557 .01143 bezier .145609 .664106E-02 .175136 .319097E-01 .17907 .06223 aline .179705 .062865 aline .179705 .06604 aline .18034 .066675 aline .18034 .071755 aline .180975 .07239 aline .180975 .24257 aline .207645 .24257 aline .207645 .073025 bezier .205481 .271924E-01 .160502 -.014398 .1143 -.00762 bezier .724789E-01 -.597526E-02 .371341E-01 .318871E-01 .03429 .073025 aline .03429 .24257 aline .06477 .24257 closepath ! end of curve fill dfont endchar dfont char="V" !-------------- Beginning of new char. dfont wid=.66667 hei=.694445 dep=0 italic=.0138884 dfont fby="A" kadd=-.083334 dfont fby="C" kadd=-.0277786 dfont fby="G" kadd=-.0277786 dfont fby="O" kadd=-.0277786 dfont fby="Q" kadd=-.0277786 dfont fby="a" kadd=-.0277786 dfont fby="e" kadd=-.0277786 dfont fby="o" kadd=-.0277786 dfont fby="r" kadd=-.0277786 dfont fby="u" kadd=-.0277786 set path ! start of curve newpath ! start of curve amove .037465 .24257 bezier .656841E-01 .169682 .962271E-01 .972894E-01 .120015 .02286 bezier .142462 .973684E-01 .174219 .169623 .20193 .24257 aline .2286 .24257 bezier .197013 .161471 .165415 .799679E-01 .132715 -.000635 aline .1016 -.000635 bezier .689004E-01 .799679E-01 .373022E-01 .161471 .005715 .24257 closepath ! end of curve fill dfont endchar dfont char="W" !-------------- Beginning of new char. dfont wid=.944448 hei=.694445 dep=0 italic=.0138884 dfont fby="A" kadd=-.083334 dfont fby="C" kadd=-.0277786 dfont fby="G" kadd=-.0277786 dfont fby="O" kadd=-.0277786 dfont fby="Q" kadd=-.0277786 dfont fby="a" kadd=-.0277786 dfont fby="e" kadd=-.0277786 dfont fby="o" kadd=-.0277786 dfont fby="r" kadd=-.0277786 dfont fby="u" kadd=-.0277786 set path ! start of curve newpath ! start of curve amove .034925 .24257 bezier .055765 .172168 .078015 .100936 .093345 .02921 aline .093345 .023495 aline .09398 .02286 aline .094615 .024765 aline .09525 .0254 aline .09525 .029845 aline .095885 .03048 aline .095885 .033655 aline .09779 .04318 aline .098425 .04572 aline .09906 .048895 aline .10668 .079375 bezier .121654 .133936 .136687 .188785 .15367 .24257 aline .18161 .24257 bezier .202818 .169854 .226348 .963938E-01 .241935 .02286 bezier .257244 .963818E-01 .280843 .170115 .30226 .24257 aline .32639 .24257 bezier .303288 .161429 .279055 .803932E-01 .25527 -.000635 aline .225425 -.000635 bezier .204742 .722718E-01 .180761 .14555 .1651 .219075 bezier .149172 .145179 .125218 .072417 .104775 -.000635 aline .076835 -.000635 bezier .530613E-01 .803966E-01 .288102E-01 .161427 .005715 .24257 aline .034925 .24257 closepath ! end of curve fill dfont endchar dfont char="X" !-------------- Beginning of new char. dfont wid=.66667 hei=.694445 dep=0 italic=0 dfont fby="C" kadd=-.0277786 dfont fby="G" kadd=-.0277786 dfont fby="O" kadd=-.0277786 dfont fby="Q" kadd=-.0277786 set path ! start of curve newpath ! start of curve amove .046355 .24257 bezier .693915E-01 .212391 .913799E-01 .181101 .114618 .151289 bezier .137257 .181076 .158558 .212402 .180975 .24257 aline .213995 .24257 bezier .186471 .204051 .155764 .165389 .130175 .127 bezier .162754 .842895E-01 .195868 .419651E-01 .2286 -.000635 aline .19304 -.000635 bezier .166145 .343545E-01 .141178 .725352E-01 .114088 .106257 bezier .890498E-01 .705692E-01 .639951E-01 .348929E-01 .038735 -.000635 aline .005715 -.000635 bezier .036383 .423513E-01 .703237E-01 .854167E-01 .09906 .12827 bezier .698863E-01 .166549 .398865E-01 .204232 .010795 .24257 aline .046355 .24257 closepath ! end of curve fill dfont endchar dfont char="Y" !-------------- Beginning of new char. dfont wid=.66667 hei=.694445 dep=0 italic=.0249996 dfont fby="A" kadd=-.083334 dfont fby="a" kadd=-.083334 dfont fby="e" kadd=-.083334 dfont fby="o" kadd=-.083334 dfont fby="r" kadd=-.083334 dfont fby="u" kadd=-.083334 set path ! start of curve newpath ! start of curve amove .037465 .24257 bezier .657434E-01 .202479 .935389E-01 .16204 .120015 .12065 bezier .146134 .162297 .174525 .202307 .202565 .24257 aline .23241 .24257 bezier .19903 .193688 .165413 .144977 .131445 .09652 aline .131445 -.000635 aline .102235 -.000635 aline .102235 .09652 bezier .687134E-01 .145147 .351462E-01 .193741 .001905 .24257 aline .037465 .24257 closepath ! end of curve fill dfont endchar dfont char="Z" !-------------- Beginning of new char. dfont wid=.611113 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .19431 .24257 aline .19431 .2286 bezier .149858 .159462 .102938 .902746E-01 .060325 .020955 aline .11684 .020955 aline .117475 .02159 aline .196215 .02159 aline .196215 -.000635 aline .02032 -.000635 bezier .196389E-01 .829923E-02 .199378E-01 .169982E-01 .02667 .023495 bezier .068869 .898444E-01 .114026 .1565 .15494 .22225 aline .100965 .22225 aline .10033 .221615 aline .024765 .221615 aline .024765 .24257 aline .19431 .24257 aline .19431 .2286 closepath ! end of curve fill dfont endchar dfont char="[" !-------------- Beginning of new char. dfont wid=.28889 hei=.75 dep=.25 italic=0 set path ! start of curve newpath ! start of curve amove .093345 .262255 aline .093345 .2413 aline .061595 .2413 aline .06096 .240665 aline .06096 -.066675 aline .061595 -.06731 aline .093345 -.06731 aline .093345 -.088265 aline .036195 -.088265 aline .036195 .262255 aline .093345 .262255 closepath ! end of curve fill dfont endchar dfont char="\" !-------------- Beginning of new char. dfont wid=.500002 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .095885 .24257 bezier .929585E-01 .228046 .891381E-01 .212994 .086995 .198755 aline .09525 .198755 aline .09525 .17018 aline .066675 .17018 aline .066675 .19939 aline .07112 .212725 aline .071755 .213995 aline .080645 .240665 aline .08128 .24257 closepath ! end of curve ! start of curve amove .164465 .24257 bezier .161539 .228046 .157718 .212995 .155575 .198755 aline .16383 .198755 aline .16383 .17018 aline .135255 .17018 aline .135255 .19939 aline .1397 .212725 aline .140335 .213995 aline .149225 .240665 aline .14986 .24257 closepath ! end of curve fill dfont endchar dfont char="]" !-------------- Beginning of new char. dfont wid=.28889 hei=.75 dep=.25 italic=0 set path ! start of curve newpath ! start of curve amove .065405 .262255 aline .065405 -.088265 aline .008255 -.088265 aline .008255 -.06731 aline .040005 -.06731 aline .04064 -.066675 aline .04064 .240665 aline .040005 .2413 aline .008255 .2413 aline .008255 .262255 aline .065405 .262255 closepath ! end of curve fill dfont endchar dfont char="^" !-------------- Beginning of new char. dfont wid=.500002 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .098425 .24257 bezier .114985 .223344 .13149 .204079 .147955 .184785 aline .127 .184785 bezier .113817 .198751 .101586 .213755 .879475E-01 .227171 bezier .743089E-01 .213755 .620777E-01 .198751 .048895 .184785 aline .02794 .184785 bezier .444053E-01 .204079 .609104E-01 .223344 .07747 .24257 aline .098425 .24257 closepath ! end of curve fill dfont endchar dfont char="_" !-------------- Beginning of new char. dfont wid=.277779 hei=.679365 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .064135 .238125 aline .064135 .207645 aline .033655 .207645 aline .033655 .238125 aline .064135 .238125 closepath ! end of curve fill dfont endchar dfont char="`" !-------------- Beginning of new char. dfont wid=.277779 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .064135 .24257 bezier .612085E-01 .228046 .573881E-01 .212994 .055245 .198755 aline .0635 .198755 aline .0635 .17018 aline .034925 .17018 aline .034925 .19939 aline .03937 .212725 aline .040005 .213995 aline .048895 .240665 aline .04953 .24257 closepath ! end of curve fill dfont endchar dfont char="a" !-------------- Beginning of new char. dfont wid=.480557 hei=.444445 dep=0 italic=0 dfont fby="r" kadd=-.0277786 dfont fby="w" kadd=-.0277786 dfont fby="y" kadd=-.0277786 set path ! start of curve newpath ! start of curve amove .089535 .160655 bezier .11579 .158277 .138093 .134604 .140335 .108585 aline .140335 -.000635 aline .114935 -.000635 aline .114935 .01143 bezier .100807 .300125E-02 .815364E-01 -.421204E-02 .064135 -.00381 bezier .403602E-01 -.104768E-01 .017613 .111864E-01 .01651 .03429 bezier .134403E-01 .630489E-01 .453129E-01 .758648E-01 .06858 .080645 bezier .836666E-01 .839332E-01 .986292E-01 .083869 .113665 .085725 bezier .114941 .104772 .113537 .1277 .094615 .137795 bezier .725153E-01 .14494 .482712E-01 .135856 .029845 .122555 aline .029845 .126365 aline .02921 .127 aline .02921 .133985 aline .028575 .13462 aline .028575 .141605 aline .02794 .14224 aline .02794 .145415 bezier .046256 .157521 .681309E-01 .161729 .089535 .160655 closepath ! end of curve ! start of curve amove .112395 .06731 bezier .906658E-01 .673139E-01 .685689E-01 .644861E-01 .048895 .05334 bezier .347784E-01 .440691E-01 .426431E-01 .234258E-01 .05715 .019685 bezier .752705E-01 .132081E-01 .100486 .159932E-01 .11176 .033655 aline .112395 .03556 aline .11303 .0381 aline .113665 .038735 aline .113665 .06731 aline .11303 .067945 aline .112395 .06731 closepath ! end of curve fill dfont endchar dfont char="b" !-------------- Beginning of new char. dfont wid=.516668 hei=.694445 dep=0 italic=0 dfont fby="c" kadd=.0277786 dfont fby="d" kadd=.0277786 dfont fby="e" kadd=.0277786 dfont fby="o" kadd=.0277786 dfont fby="q" kadd=.0277786 dfont fby="r" kadd=-.0277786 dfont fby="w" kadd=-.0277786 dfont fby="x" kadd=-.0277786 dfont fby="y" kadd=-.0277786 set path ! start of curve newpath ! start of curve amove .05461 .24257 aline .05461 .13843 bezier .762933E-01 .154553 .111552 .168367 .13716 .150495 bezier .169604 .124048 .175183 .076562 .16129 .03937 bezier .150156 .102085E-01 .118288 -.012179 .086995 -.00254 bezier .750193E-01 .689666E-04 .642434E-01 .904559E-02 .05588 .01524 aline .05588 -.000635 aline .02921 -.000635 aline .02921 .24257 aline .05461 .24257 closepath ! end of curve ! start of curve amove .088265 .13716 bezier .752637E-01 .135905 .632219E-01 .12761 .05588 .11684 aline .05588 .03937 bezier .648283E-01 .195728E-01 .894259E-01 .107259E-01 .108585 .02032 bezier .140018 .323768E-01 .146828 .727798E-01 .13843 .100965 bezier .13358 .123489 .110663 .141126 .088265 .13716 closepath ! end of curve fill dfont endchar dfont char="c" !-------------- Beginning of new char. dfont wid=.444446 hei=.444445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .099695 .160655 bezier .114671 .159601 .133187 .154592 .144145 .144145 bezier .142252 .137552 .14225 .129111 .1397 .12319 bezier .114072 .141264 .729996E-01 .147665 .05207 .11938 bezier .322653E-01 .895072E-01 .354832E-01 .409205E-01 .069215 .022225 bezier .939589E-01 .116804E-01 .122672 .211887E-01 .144145 .036195 aline .144145 .03302 aline .14478 .032385 bezier .142915 .247479E-01 .15051 .142902E-01 .141605 .01016 bezier .106762 -.122612E-01 .545171E-01 -.104976E-01 .029845 .026035 bezier -.569689E-02 .707145E-01 .180467E-01 .149493 .076835 .16002 aline .08128 .16002 aline .081915 .160655 aline .099695 .160655 closepath ! end of curve fill dfont endchar dfont char="d" !-------------- Beginning of new char. dfont wid=.516668 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .1524 .24257 aline .1524 -.000635 aline .12573 -.000635 aline .12573 .017145 bezier .105958 -.115131E-02 .697587E-01 -.145317E-01 .045085 .00508 bezier .358659E-02 .381183E-01 .256881E-02 .108154 .040005 .14478 bezier .643332E-01 .167541 .103433 .160338 .126365 .139065 aline .127 .1397 aline .127 .24257 aline .1524 .24257 closepath ! end of curve ! start of curve amove .085725 .13716 bezier .590304E-01 .135626 .412649E-01 .108726 .040005 .084455 bezier .377014E-01 .576475E-01 .485374E-01 .023505 .07874 .01778 bezier .970592E-01 .122082E-01 .117611 .246829E-01 .12573 .04191 aline .12573 .11811 bezier .117477 .13122 .100955 .140341 .085725 .13716 closepath ! end of curve fill dfont endchar dfont char="e" !-------------- Beginning of new char. dfont wid=.444446 hei=.444445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .0889 .160655 bezier .121675 .158884 .143691 .126039 .144145 .09525 aline .14478 .094615 aline .14478 .08763 aline .145415 .086995 aline .145415 .0762 aline .03683 .0762 bezier .351939E-01 .459068E-01 .627239E-01 .111911E-01 .09525 .017145 bezier .11187 .180133E-01 .129056 .256572E-01 .14224 .036195 aline .14224 .03302 aline .142875 .032385 aline .142875 .0254 aline .14351 .024765 aline .14351 .01778 aline .144145 .017145 aline .144145 .01397 bezier .11084 -.122648E-01 .056212 -.118422E-01 .03048 .024765 bezier -.522253E-02 .681382E-01 .140515E-01 .147676 .07239 .16002 aline .076835 .16002 aline .07747 .160655 aline .0889 .160655 closepath ! end of curve ! start of curve amove .078105 .139065 bezier .567835E-01 .136454 .418881E-01 .114504 .038735 .09525 aline .12573 .09525 bezier .124858 .115135 .109264 .13754 .08763 .1397 aline .07874 .1397 aline .078105 .139065 closepath ! end of curve fill dfont endchar dfont char="f" !-------------- Beginning of new char. dfont wid=.305557 hei=.694445 dep=0 italic=.0694447 dfont fby=33 kadd=.0694447 dfont fby=39 kadd=.0694447 dfont fby=")" kadd=.0694447 dfont fby="?" kadd=.0694447 dfont fby="]" kadd=.0694447 dfont fby="f" ligrep=11 dfont fby="i" ligrep=12 dfont fby="l" ligrep=13 set path ! start of curve newpath ! start of curve amove .100965 .24638 aline .1016 .245745 aline .107315 .245745 aline .10795 .24511 aline .111125 .24511 aline .117475 .24384 aline .120015 .243205 aline .121285 .24257 aline .121285 .21971 bezier .102102 .227653 .739709E-01 .230008 .06223 .208915 aline .061595 .20701 aline .06096 .20447 aline .060325 .203835 aline .060325 .155575 aline .06096 .15494 aline .10033 .15494 aline .10033 .135255 aline .06223 .135255 aline .061595 .13462 aline .061595 -.000635 aline .036195 -.000635 aline .036195 .13462 aline .03556 .135255 aline .009525 .135255 aline .009525 .15494 aline .03556 .15494 aline .036195 .155575 aline .036195 .19431 bezier .386566E-01 .225575 .695211E-01 .25121 .100965 .24638 closepath ! end of curve fill dfont endchar dfont char="g" !-------------- Beginning of new char. dfont wid=.500002 hei=.444445 dep=.194445 italic=.0138884 dfont fby="j" kadd=.0277786 set path ! start of curve newpath ! start of curve amove .08382 .15875 bezier .935703E-01 .158177 .104215 .151933 .11176 .147955 bezier .129423 .155429 .147873 .158764 .16637 .15875 bezier .16786 .151273 .168789 .144293 .17018 .13716 aline .16637 .13716 aline .165735 .137795 aline .133985 .137795 aline .13335 .13716 aline .126365 .13716 aline .12573 .136525 aline .122908 .135961 bezier .145186 .105774 .130447 .561429E-01 .09271 .046355 bezier .772607E-01 .419987E-01 .599586E-01 .448367E-01 .466725E-01 .544513E-01 bezier .038155 .447775E-01 .426229E-01 .260454E-01 .05588 .02286 aline .10287 .02286 bezier .12771 .225114E-01 .160824 .123447E-01 .1651 -.017145 bezier .171436 -.444691E-01 .143519 -.639745E-01 .120015 -.06985 bezier .844154E-01 -.780479E-01 .385868E-01 -.751325E-01 .014605 -.042545 bezier .269578E-02 -.233158E-01 .015639 .933324E-03 .328613E-01 .111125E-01 bezier .202179E-01 .027215 .222341E-01 .503774E-01 .341313E-01 .663575E-01 bezier .899956E-02 .981648E-01 .276871E-01 .151478 .06858 .158115 aline .071755 .158115 aline .07239 .15875 aline .08382 .15875 closepath ! end of curve ! start of curve amove .073025 .13843 bezier .441557E-01 .134028 .394158E-01 .947851E-01 .05461 .07493 bezier .700054E-01 .549471E-01 .106605 .647391E-01 .108585 .090805 bezier .11385 .109645 .105039 .136117 .08255 .139065 aline .07366 .139065 closepath ! end of curve ! start of curve amove .05461 -.001905 bezier .345134E-01 -.358596E-02 .251361E-01 -.341235E-01 .045085 -.04318 bezier .072586 -.583926E-01 .107168 -.580126E-01 .133985 -.041275 bezier .148368 -.319347E-01 .141689 -.102432E-01 .126365 -.00635 aline .12065 -.004445 aline .1143 -.003175 aline .113665 -.00254 aline .11049 -.00254 aline .109855 -.001905 aline .103505 -.001905 aline .10287 -.00127 aline .055245 -.00127 closepath ! end of curve fill dfont endchar dfont char="h" !-------------- Beginning of new char. dfont wid=.516668 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .053975 .24257 aline .053975 .13335 bezier .064111 .144875 .809129E-01 .157815 .098425 .15875 bezier .120187 .161472 .145518 .151187 .150495 .127635 aline .151765 .122555 aline .151765 .118745 aline .1524 .11811 aline .1524 .11303 aline .153035 .112395 aline .153035 -.000635 aline .126365 -.000635 aline .126365 .10922 bezier .124954 .121811 .116542 .135346 .102235 .136525 bezier .853275E-01 .14234 .653512E-01 .131394 .060325 .113665 aline .05842 .10795 aline .05715 .10287 aline .056515 .102235 aline .056515 .09906 aline .05588 .098425 aline .05588 .09398 aline .055245 .093345 aline .055245 -.000635 aline .028575 -.000635 aline .028575 .24257 aline .053975 .24257 closepath ! end of curve fill dfont endchar dfont char="i" !-------------- Beginning of new char. dfont wid=.23889 hei=.679365 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .05715 .238125 aline .05715 .207645 aline .02667 .207645 aline .02667 .238125 aline .05715 .238125 closepath ! end of curve ! start of curve amove .05461 .15494 aline .05461 -.000635 aline .02921 -.000635 aline .02921 .15494 aline .05461 .15494 closepath ! end of curve fill dfont endchar dfont char="j" !-------------- Beginning of new char. dfont wid=.266668 hei=.679365 dep=.194445 italic=0 set path ! start of curve newpath ! start of curve amove .06477 .238125 aline .06477 .207645 aline .03429 .207645 aline .03429 .238125 aline .06477 .238125 closepath ! end of curve ! start of curve amove .06477 .15494 aline .06477 -.029845 bezier .630814E-01 -.539303E-01 .399697E-01 -.780971E-01 .014605 -.07239 bezier .199479E-02 -.724025E-01 -.104328E-01 -.674112E-01 -.020955 -.06096 aline -.020955 -.05969 aline -.01651 -.04191 aline -.015875 -.040005 bezier -.105706E-02 -.547177E-01 .288914E-01 -.564762E-01 .0381 -.034925 aline .038735 -.032385 aline .03937 -.03175 aline .03937 .15494 aline .06477 .15494 closepath ! end of curve fill dfont endchar dfont char="k" !-------------- Beginning of new char. dfont wid=.488892 hei=.694445 dep=0 italic=0 dfont fby="a" kadd=-.0277786 dfont fby="c" kadd=-.0277786 dfont fby="e" kadd=-.0277786 dfont fby="o" kadd=-.0277786 set path ! start of curve newpath ! start of curve amove .053975 .24257 aline .053975 .081915 aline .05461 .08128 aline .05842 .08509 aline .059055 .08636 aline .09144 .118745 aline .092075 .120015 aline .125095 .153035 aline .12573 .154305 aline .126365 .15494 aline .15748 .15494 aline .12446 .12192 aline .123825 .12065 aline .09906 .095885 bezier .116653 .656576E-01 .140444 .369272E-01 .16002 .006985 aline .16129 .005715 aline .161925 .004445 aline .16256 .00381 aline .163195 .00254 aline .164465 .00127 aline .1651 0 aline .165735 -.000635 aline .13843 -.000635 bezier .119167 .251324E-01 .101501 .524043E-01 .822325E-01 .779463E-01 aline .08128 .07747 aline .057785 .053975 aline .05715 .052705 aline .05334 .048895 aline .05334 -.000635 aline .029845 -.000635 aline .029845 .24257 aline .053975 .24257 closepath ! end of curve fill dfont endchar dfont char="l" !-------------- Beginning of new char. dfont wid=.23889 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .05461 .24257 aline .05461 -.000635 aline .02921 -.000635 aline .02921 .24257 aline .05461 .24257 closepath ! end of curve fill dfont endchar dfont char="m" !-------------- Beginning of new char. dfont wid=.794447 hei=.444445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .111125 .15875 bezier .128141 .158088 .145462 .14695 .14986 .12954 bezier .167813 .159607 .215674 .170848 .240665 .14351 bezier .247652 .134653 .249575 .122655 .250825 .112395 aline .250825 -.000635 aline .224155 -.000635 aline .224155 .10922 bezier .222744 .121811 .214332 .135346 .200025 .136525 bezier .183118 .14234 .163141 .131394 .158115 .113665 aline .15621 .10795 aline .15494 .10287 aline .154305 .102235 aline .154305 .09906 aline .15367 .098425 aline .15367 .09398 aline .153035 .093345 aline .153035 -.000635 aline .126365 -.000635 aline .126365 .10922 bezier .124954 .121811 .116542 .135346 .102235 .136525 bezier .853275E-01 .14234 .653512E-01 .131394 .060325 .113665 aline .05842 .10795 aline .05715 .10287 aline .056515 .102235 aline .056515 .09906 aline .05588 .098425 aline .05588 .09398 aline .055245 .093345 aline .055245 -.000635 aline .028575 -.000635 aline .028575 .156845 aline .05334 .156845 aline .05334 .132715 bezier .637491E-01 .143805 .796063E-01 .158246 .09779 .158115 aline .098425 .15875 aline .111125 .15875 closepath ! end of curve fill dfont endchar dfont char="n" !-------------- Beginning of new char. dfont wid=.516668 hei=.444445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .111125 .15875 bezier .134883 .158878 .154005 .136253 .1524 .11303 aline .153035 .112395 aline .153035 -.000635 aline .126365 -.000635 aline .126365 .10922 bezier .124954 .121811 .116542 .135346 .102235 .136525 bezier .853275E-01 .14234 .653512E-01 .131394 .060325 .113665 aline .05842 .10795 aline .05715 .10287 aline .056515 .102235 aline .056515 .09906 aline .05588 .098425 aline .05588 .09398 aline .055245 .093345 aline .055245 -.000635 aline .028575 -.000635 aline .028575 .156845 aline .05334 .156845 aline .05334 .132715 bezier .637491E-01 .143805 .796063E-01 .158246 .09779 .158115 aline .098425 .15875 aline .111125 .15875 closepath ! end of curve fill dfont endchar dfont char="o" !-------------- Beginning of new char. dfont wid=.500002 hei=.444445 dep=0 italic=0 dfont fby="c" kadd=.0277786 dfont fby="d" kadd=.0277786 dfont fby="e" kadd=.0277786 dfont fby="o" kadd=.0277786 dfont fby="q" kadd=.0277786 dfont fby="r" kadd=-.0277786 dfont fby="w" kadd=-.0277786 dfont fby="x" kadd=-.0277786 dfont fby="y" kadd=-.0277786 set path ! start of curve newpath ! start of curve amove .09398 .160655 bezier .144631 .156471 .175917 .098221 .16129 .05207 bezier .149417 .583805E-02 .914237E-01 -.204369E-01 .0508 .005715 bezier -.312694E-02 .350969E-01 -.538582E-03 .122434 .052705 .15113 aline .05334 .151765 aline .05969 .15494 aline .061595 .155575 aline .062865 .15621 aline .06858 .158115 aline .07366 .159385 aline .076835 .16002 aline .08128 .16002 aline .081915 .160655 aline .09398 .160655 closepath ! end of curve ! start of curve amove .081915 .139065 bezier .500845E-01 .136211 .338456E-01 .997072E-01 .038735 .071755 bezier .383398E-01 .432329E-01 .640103E-01 .127718E-01 .09398 .018415 bezier .130327 .226493E-01 .143682 .671195E-01 .13589 .097155 bezier .132443 .122631 .106994 .1437 .081915 .139065 closepath ! end of curve fill dfont endchar dfont char="p" !-------------- Beginning of new char. dfont wid=.516668 hei=.444445 dep=.194445 italic=0 dfont fby="c" kadd=.0277786 dfont fby="d" kadd=.0277786 dfont fby="e" kadd=.0277786 dfont fby="o" kadd=.0277786 dfont fby="q" kadd=.0277786 dfont fby="r" kadd=-.0277786 dfont fby="w" kadd=-.0277786 dfont fby="x" kadd=-.0277786 dfont fby="y" kadd=-.0277786 set path ! start of curve newpath ! start of curve amove .118745 .15875 bezier .151501 .152263 .166455 .115163 .168275 .085725 bezier .171549 .488893E-01 .152526 .462753E-02 .11303 -.00381 bezier .928666E-01 -.71533E-02 .706092E-01 .475479E-03 .056515 .015875 aline .05588 .01524 aline .05588 -.069215 aline .02921 -.069215 aline .02921 .15494 aline .05461 .15494 aline .05461 .137795 bezier .681656E-01 .148501 .883748E-01 .157748 .10668 .15875 closepath ! end of curve ! start of curve amove .088265 .13589 bezier .753627E-01 .134708 .629262E-01 .126547 .05588 .11557 aline .05588 .03937 bezier .644127E-01 .020749 .874434E-01 .108378E-01 .106045 .019685 bezier .153495 .386076E-01 .153619 .117802 .104775 .13462 aline .102235 .135255 aline .09906 .13589 aline .098425 .136525 aline .0889 .136525 aline .088265 .13589 closepath ! end of curve fill dfont endchar dfont char="q" !-------------- Beginning of new char. dfont wid=.516668 hei=.444445 dep=.194445 italic=0 set path ! start of curve newpath ! start of curve amove .08382 .15875 bezier .100292 .157119 .116132 .147729 .126365 .13462 aline .127 .135255 aline .127 .15875 aline .1524 .15875 aline .1524 -.069215 aline .12573 -.069215 aline .12573 .01651 bezier .113513 .704597E-02 .961532E-01 -.42206E-02 .07874 -.00381 bezier .428888E-01 -.960461E-02 .167805E-01 .294009E-01 .014605 .061595 bezier .678101E-02 .100645 .285759E-01 .15266 .07239 .15875 aline .08382 .15875 closepath ! end of curve ! start of curve amove .08636 .13589 bezier .469838E-01 .131178 .298868E-01 .813422E-01 .04572 .048895 bezier .543559E-01 .209107E-01 .928305E-01 .477142E-02 .114935 .027305 bezier .120398 .310054E-01 .123253 .373161E-01 .127 .042545 aline .127 .10287 bezier .122176 .120993 .10776 .139404 .086995 .136525 aline .08636 .13589 closepath ! end of curve fill dfont endchar dfont char="r" !-------------- Beginning of new char. dfont wid=.341669 hei=.444445 dep=0 italic=.0138884 set path ! start of curve newpath ! start of curve amove .1143 .15875 aline .1143 .13589 bezier .845307E-01 .136598 .576309E-01 .111189 .05461 .081915 aline .05461 -.000635 aline .02921 -.000635 aline .02921 .156845 aline .052705 .156845 aline .052705 .12573 bezier .061398 .134705 .724409E-01 .148281 .08636 .153035 aline .0889 .154305 aline .094615 .15621 aline .099695 .15748 aline .10287 .158115 aline .107315 .158115 aline .10795 .15875 aline .1143 .15875 closepath ! end of curve fill dfont endchar dfont char="s" !-------------- Beginning of new char. dfont wid=.383334 hei=.444445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .079375 .160655 bezier .923483E-01 .158858 .109634 .157285 .120015 .14859 bezier .118122 .141997 .11812 .133556 .11557 .127635 bezier .093873 .139283 .674904E-01 .14613 .04445 .135255 bezier .029426 .124326 .370184E-01 .100652 .05461 .09779 bezier .787777E-01 .929192E-01 .107371 .896675E-01 .12065 .06604 bezier .136151 .399171E-01 .12007 .243984E-02 .089535 -.00254 bezier .062691 -.758441E-02 .341157E-01 -.287804E-02 .01016 .01143 bezier .118079E-01 .187289E-01 .123136E-01 .027607 .014605 .03429 bezier .381913E-01 .195711E-01 .702464E-01 .899558E-02 .09525 .024765 bezier .108481 .371465E-01 .101139 .595808E-01 .08382 .0635 bezier .602502E-01 .069237 .317165E-01 .710964E-01 .01778 .09398 bezier .532846E-03 .121105 .226622E-01 .159585 .05461 .159385 aline .055245 .16002 aline .060325 .16002 aline .06096 .160655 aline .079375 .160655 closepath ! end of curve fill dfont endchar dfont char="t" !-------------- Beginning of new char. dfont wid=.361112 hei=.571431 dep=0 italic=0 dfont fby="w" kadd=-.0277786 dfont fby="y" kadd=-.0277786 set path ! start of curve newpath ! start of curve amove .061595 .19939 aline .061595 .155575 aline .06223 .15494 aline .11049 .15494 aline .11049 .135255 aline .06223 .135255 aline .061595 .13462 aline .061595 .03937 bezier .630282E-01 .031163 .066012 .203501E-01 .075565 .01778 bezier .880106E-01 .170962E-01 .100521 .214402E-01 .11049 .02921 aline .111125 .02794 aline .11176 .0254 aline .112395 .023495 aline .11303 .020955 aline .113665 .01905 aline .114935 .01397 bezier .119297 .592747E-02 .106499 .525877E-02 .1016 .001905 bezier .085439 -.27588E-02 .682472E-01 -.823477E-02 .05207 -.00127 bezier .407011E-01 .611233E-02 .037995 .210814E-01 .03683 .03302 aline .03683 .13462 aline .036195 .135255 aline .006985 .135255 aline .006985 .15494 aline .037465 .15494 aline .0381 .155575 aline .0381 .19939 aline .061595 .19939 closepath ! end of curve fill dfont endchar dfont char="u" !-------------- Beginning of new char. dfont wid=.516668 hei=.444445 dep=0 italic=0 dfont fby="w" kadd=-.0277786 set path ! start of curve newpath ! start of curve amove .055245 .15494 aline .055245 .03175 bezier .055539 .212853E-01 .662395E-01 .152123E-01 .075565 .014605 bezier .972287E-01 .011552 .122592 .228648E-01 .126365 .046355 aline .126365 .15494 aline .153035 .15494 aline .153035 -.000635 aline .127635 -.000635 aline .127635 .015875 bezier .106647 -.641191E-04 .762678E-01 -.870561E-02 .04953 -.00254 bezier .360618E-01 .163608E-02 .291961E-01 .163136E-01 .028575 .02921 aline .028575 .15494 aline .055245 .15494 closepath ! end of curve fill dfont endchar dfont char="v" !-------------- Beginning of new char. dfont wid=.461113 hei=.444445 dep=0 italic=.0138884 set path ! start of curve newpath ! start of curve amove .03175 .15494 bezier .492524E-01 .109469 .068985 .635668E-01 .08128 .01651 bezier .943201E-01 .638108E-01 .11384 .10902 .13081 .15494 aline .15621 .15494 bezier .136493 .103045 .116599 .508128E-01 .095885 -.000635 aline .06604 -.000635 bezier .453265E-01 .508128E-01 .254324E-01 .103045 .005715 .15494 aline .03175 .15494 closepath ! end of curve fill dfont endchar dfont char="w" !-------------- Beginning of new char. dfont wid=.683336 hei=.444445 dep=0 italic=.0138884 dfont fby="a" kadd=-.0277786 dfont fby="c" kadd=-.0277786 dfont fby="e" kadd=-.0277786 dfont fby="o" kadd=-.0277786 set path ! start of curve newpath ! start of curve amove .031115 .15494 bezier .045338 .109378 .610066E-01 .632937E-01 .069215 .01651 bezier .769895E-01 .625236E-01 .927571E-01 .109775 .107315 .15494 aline .13081 .15494 bezier .145086 .10952 .160991 .627353E-01 .17018 .01651 bezier .180183 .629453E-01 .195871 .109056 .20955 .15494 aline .234315 .15494 bezier .218721 .10308 .20275 .507996E-01 .186055 -.000635 aline .156845 -.000635 bezier .142382 .445625E-01 .126645 .917861E-01 .118745 .137795 bezier .111456 .913025E-01 .947288E-01 .450606E-01 .08128 -.000635 aline .053975 -.000635 bezier .372796E-01 .507996E-01 .213087E-01 .10308 .005715 .15494 closepath ! end of curve fill dfont endchar dfont char="x" !-------------- Beginning of new char. dfont wid=.461113 hei=.444445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .031115 .15494 bezier .473989E-01 .135456 .638725E-01 .116109 .08001 .09652 bezier .953912E-01 .116197 .111619 .135263 .127 .15494 aline .15494 .15494 bezier .1343 .129441 .111801 .105138 .916517E-01 .079375 bezier .114281 .052392 .137911 .258977E-01 .16129 -.000635 aline .132715 -.000635 bezier .115298 .216989E-01 .972317E-01 .435651E-01 .08001 .06604 bezier .629812E-01 .437312E-01 .046022 .213723E-01 .028575 -.000635 aline .000635 -.000635 bezier .023371 .260395E-01 .464787E-01 .524461E-01 .684213E-01 .796925E-01 bezier .471073E-01 .105043 .243298E-01 .129704 .003175 .15494 aline .031115 .15494 closepath ! end of curve fill dfont endchar dfont char="y" !-------------- Beginning of new char. dfont wid=.461113 hei=.444445 dep=.194445 italic=.0138884 dfont fby="," kadd=-.083334 dfont fby="." kadd=-.083334 dfont fby="a" kadd=-.0277786 dfont fby="e" kadd=-.0277786 dfont fby="o" kadd=-.0277786 set path ! start of curve newpath ! start of curve amove .032385 .15494 bezier .508816E-01 .111774 .720021E-01 .068588 .08255 .02286 aline .08255 .017145 aline .083185 .01651 bezier .917365E-01 .638775E-01 .113093 .109758 .13081 .15494 aline .15621 .15494 bezier .127733 .858089E-01 .101575 .153092E-01 .070485 -.052705 bezier .648468E-01 -.617247E-01 .570747E-01 -.713885E-01 .04572 -.073025 aline .03302 -.073025 aline .032385 -.07239 aline .026035 -.07239 aline .0254 -.071755 aline .020955 -.071755 aline .02032 -.07112 aline .017145 -.07112 aline .01524 -.070485 aline .01524 -.066675 aline .014605 -.06604 aline .014605 -.05969 aline .01397 -.059055 aline .01397 -.05207 aline .013335 -.051435 aline .013335 -.04826 bezier .267305E-01 -.521849E-01 .462339E-01 -.606566E-01 .05461 -.04445 bezier .621083E-01 -.302419E-01 .693569E-01 -.146828E-01 .073025 .000635 bezier .506234E-01 .520677E-01 .277025E-01 .10342 .005715 .15494 closepath ! end of curve fill dfont endchar dfont char="z" !-------------- Beginning of new char. dfont wid=.434723 hei=.444445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .1397 .15494 aline .1397 .141605 bezier .109425 .10118 .758802E-01 .060675 .047625 .02032 aline .083185 .02032 aline .08382 .020955 aline .14097 .020955 aline .14097 -.000635 aline .01016 -.000635 aline .01016 .013335 bezier .405235E-01 .540599E-01 .740351E-01 .949537E-01 .10287 .135255 aline .06985 .135255 aline .069215 .13462 aline .01524 .13462 aline .01524 .15494 aline .1397 .15494 closepath ! end of curve fill dfont endchar dfont char="{" !-------------- Beginning of new char. dfont wid=.500002 hei=.444445 dep=0 italic=.0277786 set path ! start of curve newpath ! start of curve amove .17526 .106045 aline .17526 .08509 aline .000635 .08509 aline .000635 .106045 aline .17526 .106045 closepath ! end of curve fill dfont endchar dfont char="|" !-------------- Beginning of new char. dfont wid=1 hei=.444445 dep=0 italic=.0277786 set path ! start of curve newpath ! start of curve amove .35052 .106045 aline .35052 .08509 aline .000635 .08509 aline .000635 .106045 aline .35052 .106045 closepath ! end of curve fill dfont endchar dfont char="}" !-------------- Beginning of new char. dfont wid=.500002 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .08763 .24257 aline .08763 .241935 aline .07874 .224155 aline .078105 .22225 aline .06985 .20574 aline .069215 .203835 aline .05969 .184785 aline .038735 .184785 bezier .458358E-01 .204073 .532811E-01 .223437 .06096 .24257 aline .08763 .24257 closepath ! end of curve ! start of curve amove .14605 .24257 aline .14605 .241935 aline .13716 .224155 aline .136525 .22225 aline .12827 .20574 aline .127635 .203835 aline .11811 .184785 aline .097155 .184785 bezier .104256 .204073 .111701 .223437 .11938 .24257 aline .14605 .24257 closepath ! end of curve fill dfont endchar dfont char="~" !-------------- Beginning of new char. dfont wid=.500002 hei=.676588 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .067945 .23622 bezier .085704 .233368 .981212E-01 .211623 .11684 .21717 aline .117475 .217805 aline .118745 .21844 aline .12065 .220345 aline .122555 .224155 aline .123825 .227965 aline .12446 .23114 aline .125095 .231775 aline .125095 .23622 aline .14605 .23622 bezier .148025 .213551 .125843 .187067 .1016 .19685 bezier .087092 .202188 .073427 .221397 .05715 .212725 aline .055245 .21082 aline .05334 .20701 aline .05207 .2032 aline .051435 .200025 aline .0508 .19939 aline .0508 .194945 aline .029845 .194945 bezier .290958E-01 .21303 .409705E-01 .23358 .060325 .23622 closepath ! end of curve fill dfont endchar dfont char=127 !-------------- Beginning of new char. dfont wid=.500002 hei=.679365 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .06858 .238125 aline .06858 .20955 aline .040005 .20955 aline .040005 .238125 aline .06858 .238125 closepath ! end of curve ! start of curve amove .13589 .238125 aline .13589 .20955 aline .107315 .20955 aline .107315 .238125 aline .13589 .238125 closepath ! end of curve fill dfont endchar gle-graphics-4.2.4c/src/fonts/Makefile.os20000664000000000000000000001044611676336540017033 0ustar rootroot######################################################################## # # # GLE - Graphics Layout Engine # # # # Modified BSD License # # # # Copyright (C) 2009 GLE. # # # # Redistribution and use in source and binary forms, with or without # # modification, are permitted provided that the following conditions # # are met: # # # # 1. Redistributions of source code must retain the above copyright # # notice, this list of conditions and the following disclaimer. # # # # 2. Redistributions in binary form must reproduce the above # # copyright notice, this list of conditions and the following # # disclaimer in the documentation and/or other materials provided with # # the distribution. # # # # 3. The name of the author may not be used to endorse or promote # # products derived from this software without specific prior written # # permission. # # # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR # # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY # # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE # # GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER # # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN # # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # # ######################################################################## # FONT MAKEFILE # makes font files *.fmt from *.afm using makefmt # makes *.fve fron *.gle using fbuild # also makes font.dat # include ../../config.os2 FVE = \ glemark.fve plba.fve plcc.fve plcg.fve plci.fve \ plcr.fve plcs.fve pldr.fve plge.fve \ plgg.fve plgi.fve plsa.fve plsg.fve \ plsr.fve plss.fve plsym1.fve plsym2.fve \ plti.fve pltr.fve texcmb.fve texcmex.fve \ texcmitt.fve texcmmi.fve texcmr.fve texcmss.fve \ texcmssb.fve texcmssi.fve texcmsy.fve texcmti.fve \ texcmtt.fve FMT = \ glemark.fmt plba.fmt plcc.fmt plcg.fmt \ plci.fmt plcr.fmt plcs.fmt pldr.fmt \ plge.fmt plgg.fmt plgi.fmt plsa.fmt plsg.fmt \ plsr.fmt plss.fmt plsym1.fmt plsym2.fmt plti.fmt \ pltr.fmt psagb.fmt psagbo.fmt psagd.fmt psagdo.fmt \ psbd.fmt psbdi.fmt psbli.fmt psc.fmt pscb.fmt \ pscbo.fmt psco.fmt psh.fmt pshb.fmt pshbo.fmt \ pshc.fmt pshcb.fmt pshcbo.fmt pshcdo.fmt pshn.fmt \ pshnb.fmt pshnbo.fmt pshno.fmt psho.fmt psncsb.fmt \ psncsbi.fmt psncsi.fmt psncsr.fmt pspb.fmt pspbi.fmt \ pspi.fmt pspr.fmt pssym.fmt pstb.fmt pstbi.fmt \ psti.fmt pstr.fmt pszcmi.fmt pszd.fmt texcmb.fmt \ texcmex.fmt texcmitt.fmt texcmmi.fmt texcmr.fmt texcmsl.fmt \ texcmss.fmt texcmssb.fmt texcmssi.fmt texcmsy.fmt texcmti.fmt \ texcmtt.fmt all: $(FVE) $(FMT) movefonts .SUFFIXES: .fve .fmt .afm .gle .afm.fmt: $(PROJECT_BINDIR)/bin/makefmt.exe $< .gle.fve: $(PROJECT_BINDIR)/bin/fbuild.exe $< clean: -$(RM) *.fve *.fmt movefonts: $(FVE) $(FMT) $(PROJECT_BINDIR)/bin/makefmt.exe $(PROJECT_BINDIR)/bin/fbuild.exe -mkdir.exe $(PROJECT_BINDIR)/font -cp.exe *.fve *.fmt $(PROJECT_BINDIR)/font -cp.exe font.dat $(PROJECT_BINDIR)/font -cp.exe psfont.dat $(PROJECT_BINDIR)/font gle-graphics-4.2.4c/src/fonts/texcmmi.afm0000664000000000000000000001722411676336540017025 0ustar rootrootStartFontMetrics 2.0 Comment Made from TEX tfm file using TFMTOAFM.bas FontName CMMI10 EncodingScheme TEXENCODING FullName CMMI10 FamilyName CMMI10 Weight Medium ItalicAngle 14.0363 IsFixedPitch false UnderlinePosition -97 UnderlineThickness 73 FontBBox 0 -300 1001 1001 CapHeight 729 XHeight 151 Descender -219 Ascender 729 StartCharMetrics 127 C 1 ; WX 833 ; N C1 ; B 0 0 833 683 ; C 2 ; WX 762 ; N C2 ; B 0 0 762 683 ; C 3 ; WX 694 ; N C3 ; B 0 0 694 683 ; C 4 ; WX 742 ; N C4 ; B 0 0 742 683 ; C 5 ; WX 831 ; N C5 ; B 0 0 831 683 ; C 6 ; WX 779 ; N C6 ; B 0 0 779 683 ; C 7 ; WX 583 ; N C7 ; B 0 0 583 683 ; C 8 ; WX 666 ; N C8 ; B 0 0 666 683 ; C 9 ; WX 612 ; N C9 ; B 0 0 612 683 ; C 10 ; WX 772 ; N C10 ; B 0 0 772 683 ; C 11 ; WX 639 ; N C11 ; B 0 0 639 430 ; C 12 ; WX 565 ; N C12 ; B 0 -194 565 694 ; C 13 ; WX 517 ; N C13 ; B 0 -194 517 430 ; C 14 ; WX 444 ; N C14 ; B 0 0 444 694 ; C 15 ; WX 405 ; N C15 ; B 0 0 405 430 ; C 16 ; WX 437 ; N C16 ; B 0 -194 437 694 ; C 17 ; WX 496 ; N C17 ; B 0 -194 496 430 ; C 18 ; WX 469 ; N C18 ; B 0 0 469 694 ; C 19 ; WX 353 ; N C19 ; B 0 0 353 430 ; C 20 ; WX 576 ; N C20 ; B 0 0 576 430 ; C 21 ; WX 583 ; N C21 ; B 0 0 583 694 ; C 22 ; WX 602 ; N C22 ; B 0 -194 602 430 ; C 23 ; WX 493 ; N C23 ; B 0 0 493 430 ; C 24 ; WX 437 ; N C24 ; B 0 -194 437 694 ; C 25 ; WX 570 ; N C25 ; B 0 0 570 430 ; C 26 ; WX 517 ; N C26 ; B 0 -194 517 430 ; C 27 ; WX 571 ; N C27 ; B 0 0 571 430 ; C 28 ; WX 437 ; N C28 ; B 0 0 437 430 ; C 29 ; WX 540 ; N C29 ; B 0 0 540 430 ; C 30 ; WX 595 ; N C30 ; B 0 -194 595 694 ; C 31 ; WX 625 ; N C31 ; B 0 -194 625 430 ; C 32 ; WX 0 ; N C32 ; B 0 -194 0 694 ; C 33 ; WX 622 ; N C33 ; B 0 0 622 430 ; C 34 ; WX 466 ; N C34 ; B 0 0 466 430 ; C 35 ; WX 591 ; N C35 ; B 0 0 591 694 ; C 36 ; WX 828 ; N C36 ; B 0 0 828 430 ; C 37 ; WX 517 ; N C37 ; B 0 -194 517 430 ; C 38 ; WX 362 ; N C38 ; B 0 -97 362 430 ; C 39 ; WX 654 ; N C39 ; B 0 -194 654 430 ; C 40 ; WX 1000 ; N C40 ; B 0 134 1000 366 ; C 41 ; WX 1000 ; N C41 ; B 0 134 1000 366 ; C 42 ; WX 1000 ; N C42 ; B 0 134 1000 366 ; C 43 ; WX 1000 ; N C43 ; B 0 134 1000 366 ; C 44 ; WX 277 ; N C44 ; B 0 37 277 463 ; C 45 ; WX 277 ; N C45 ; B 0 37 277 463 ; C 46 ; WX 500 ; N C46 ; B 0 35 500 465 ; C 47 ; WX 500 ; N C47 ; B 0 35 500 465 ; C 48 ; WX 500 ; N C48 ; B 0 0 500 430 ; C 49 ; WX 500 ; N C49 ; B 0 0 500 430 ; C 50 ; WX 500 ; N C50 ; B 0 0 500 430 ; C 51 ; WX 500 ; N C51 ; B 0 -194 500 430 ; C 52 ; WX 500 ; N C52 ; B 0 -194 500 430 ; C 53 ; WX 500 ; N C53 ; B 0 -194 500 430 ; C 54 ; WX 500 ; N C54 ; B 0 0 500 644 ; C 55 ; WX 500 ; N C55 ; B 0 -194 500 430 ; C 56 ; WX 500 ; N C56 ; B 0 0 500 644 ; C 57 ; WX 500 ; N C57 ; B 0 -194 500 430 ; C 58 ; WX 277 ; N C58 ; B 0 0 277 105 ; C 59 ; WX 277 ; N C59 ; B 0 -194 277 105 ; C 60 ; WX 777 ; N C60 ; B 0 -39 777 539 ; C 61 ; WX 500 ; N C61 ; B 0 -250 500 750 ; C 62 ; WX 777 ; N C62 ; B 0 -39 777 539 ; C 63 ; WX 500 ; N C63 ; B 0 35 500 465 ; C 64 ; WX 530 ; N C64 ; B 0 0 530 694 ; C 65 ; WX 750 ; N A ; B 0 0 750 683 ; C 66 ; WX 758 ; N B ; B 0 0 758 683 ; C 67 ; WX 714 ; N C ; B 0 0 714 683 ; C 68 ; WX 827 ; N D ; B 0 0 827 683 ; C 69 ; WX 738 ; N E ; B 0 0 738 683 ; C 70 ; WX 643 ; N F ; B 0 0 643 683 ; C 71 ; WX 786 ; N G ; B 0 0 786 683 ; C 72 ; WX 831 ; N H ; B 0 0 831 683 ; C 73 ; WX 439 ; N I ; B 0 0 439 683 ; C 74 ; WX 554 ; N J ; B 0 0 554 683 ; C 75 ; WX 849 ; N K ; B 0 0 849 683 ; C 76 ; WX 680 ; N L ; B 0 0 680 683 ; C 77 ; WX 970 ; N M ; B 0 0 970 683 ; C 78 ; WX 803 ; N N ; B 0 0 803 683 ; C 79 ; WX 762 ; N O ; B 0 0 762 683 ; C 80 ; WX 642 ; N P ; B 0 0 642 683 ; C 81 ; WX 790 ; N Q ; B 0 -194 790 683 ; C 82 ; WX 759 ; N R ; B 0 0 759 683 ; C 83 ; WX 613 ; N S ; B 0 0 613 683 ; C 84 ; WX 584 ; N T ; B 0 0 584 683 ; C 85 ; WX 682 ; N U ; B 0 0 682 683 ; C 86 ; WX 583 ; N V ; B 0 0 583 683 ; C 87 ; WX 944 ; N W ; B 0 0 944 683 ; C 88 ; WX 828 ; N X ; B 0 0 828 683 ; C 89 ; WX 580 ; N Y ; B 0 0 580 683 ; C 90 ; WX 682 ; N Z ; B 0 0 682 683 ; C 91 ; WX 388 ; N C91 ; B 0 0 388 750 ; C 92 ; WX 388 ; N C92 ; B 0 -194 388 694 ; C 93 ; WX 388 ; N C93 ; B 0 -194 388 694 ; C 94 ; WX 1000 ; N C94 ; B 0 143 1000 357 ; C 95 ; WX 1000 ; N C95 ; B 0 143 1000 357 ; C 96 ; WX 416 ; N C96 ; B 0 0 416 694 ; C 97 ; WX 528 ; N a ; B 0 0 528 430 ; C 98 ; WX 429 ; N b ; B 0 0 429 694 ; C 99 ; WX 432 ; N c ; B 0 0 432 430 ; C 100 ; WX 520 ; N d ; B 0 0 520 694 ; C 101 ; WX 465 ; N e ; B 0 0 465 430 ; C 102 ; WX 489 ; N f ; B 0 -194 489 694 ; C 103 ; WX 476 ; N g ; B 0 -194 476 430 ; C 104 ; WX 576 ; N h ; B 0 0 576 694 ; C 105 ; WX 344 ; N i ; B 0 0 344 659 ; C 106 ; WX 411 ; N j ; B 0 -194 411 659 ; C 107 ; WX 520 ; N k ; B 0 0 520 694 ; C 108 ; WX 298 ; N l ; B 0 0 298 694 ; C 109 ; WX 878 ; N m ; B 0 0 878 430 ; C 110 ; WX 600 ; N n ; B 0 0 600 430 ; C 111 ; WX 484 ; N o ; B 0 0 484 430 ; C 112 ; WX 503 ; N p ; B 0 -194 503 430 ; C 113 ; WX 446 ; N q ; B 0 -194 446 430 ; C 114 ; WX 451 ; N r ; B 0 0 451 430 ; C 115 ; WX 468 ; N s ; B 0 0 468 430 ; C 116 ; WX 361 ; N t ; B 0 0 361 615 ; C 117 ; WX 572 ; N u ; B 0 0 572 430 ; C 118 ; WX 484 ; N v ; B 0 0 484 430 ; C 119 ; WX 715 ; N w ; B 0 0 715 430 ; C 120 ; WX 571 ; N x ; B 0 0 571 430 ; C 121 ; WX 490 ; N y ; B 0 -194 490 430 ; C 122 ; WX 465 ; N z ; B 0 0 465 430 ; C 123 ; WX 322 ; N C123 ; B 0 0 322 430 ; C 124 ; WX 384 ; N C124 ; B 0 -194 384 430 ; C 125 ; WX 636 ; N C125 ; B 0 -194 636 430 ; C 126 ; WX 500 ; N C126 ; B 0 0 500 714 ; C 127 ; WX 277 ; N C127 ; B 0 0 277 694 ; EndCharMetrics StartKernData StartKernPairs 81 KPX C5 C58 -56 KPX C5 C59 -56 KPX C5 C61 -56 KPX C7 C58 -112 KPX C7 C59 -112 KPX C7 C61 -56 KPX C9 C58 -56 KPX C9 C59 -56 KPX C9 C61 -56 KPX C14 C58 -56 KPX C14 C59 -56 KPX C23 C58 -56 KPX C23 C59 -56 KPX C27 C58 -56 KPX C27 C59 -56 KPX C28 C58 -56 KPX C28 C59 -56 KPX C61 C1 -56 KPX C61 A -56 KPX C61 M -56 KPX C61 N -56 KPX C61 Y 55 KPX C61 Z -56 KPX C C58 -56 KPX C C59 -56 KPX C C61 -28 KPX F C58 -112 KPX F C59 -112 KPX F C61 -56 KPX H C58 -56 KPX H C59 -56 KPX H C61 -56 KPX J C58 -112 KPX J C59 -112 KPX J C61 -56 KPX K C58 -56 KPX K C59 -56 KPX K C61 -56 KPX M C58 -56 KPX M C59 -56 KPX M C61 -56 KPX N C58 -56 KPX N C59 -56 KPX N C61 -84 KPX P C58 -112 KPX P C59 -112 KPX P C61 -56 KPX S C58 -56 KPX S C59 -56 KPX S C61 -56 KPX T C58 -56 KPX T C59 -56 KPX T C61 -28 KPX U C58 -112 KPX U C59 -112 KPX U C61 -56 KPX V C58 -167 KPX V C59 -167 KPX V C61 -112 KPX W C58 -167 KPX W C59 -167 KPX W C61 -112 KPX X C58 -56 KPX X C59 -56 KPX X C61 -84 KPX Y C58 -167 KPX Y C59 -167 KPX Y C61 -112 KPX Z C58 -56 KPX Z C59 -56 KPX Z C61 -56 KPX d Y 55 KPX d Z -56 KPX d f -167 KPX d j -112 KPX f C58 -56 KPX f C59 -56 KPX j C58 -56 KPX j C59 -56 KPX r C58 -56 KPX r C59 -56 EndKernPairs EndKernData EndFontMetrics gle-graphics-4.2.4c/src/fonts/plsym1.gle0000664000000000000000000013153511676336540016612 0ustar rootrootdfont design= 1428 dfont char=1 amove 142 95 aline 190 190 aline 285 238 aline 380 238 aline 476 190 aline 666 47 aline 761 0 aline 857 0 aline 952 47 aline 1000 190 aline 952 95 aline 857 47 aline 761 47 aline 666 95 aline 476 238 aline 380 285 aline 285 285 aline 190 238 aline 142 95 amove 142 380 aline 190 476 aline 285 523 aline 380 523 aline 476 476 aline 666 333 aline 761 285 aline 857 285 aline 952 333 aline 1000 476 aline 952 380 aline 857 333 aline 761 333 aline 666 380 aline 476 523 aline 380 571 aline 285 571 aline 190 523 aline 142 380 stroke dfont endchar dfont char=2 amove 142 0 aline 1000 0 amove 1000 190 aline 142 190 amove 142 380 aline 190 476 aline 285 523 aline 380 523 aline 476 476 aline 666 333 aline 761 285 aline 857 285 aline 952 333 aline 1000 476 aline 952 380 aline 857 333 aline 761 333 aline 666 380 aline 476 523 aline 380 571 aline 285 571 aline 190 523 aline 142 380 stroke dfont endchar dfont char=3 amove 190 571 aline 1238 571 aline 1000 857 amove 428 0 aline 190 285 aline 1238 285 stroke dfont endchar dfont char=4 amove 95 -143 aline 1238 -143 aline 1238 999 aline 95 999 aline 95 -143 stroke dfont endchar dfont char=5 amove 190 285 aline 476 571 amove 523 476 aline 285 238 aline 380 238 aline 476 285 aline 523 380 aline 523 476 aline 476 571 aline 380 619 aline 285 619 aline 190 571 aline 142 476 aline 142 380 aline 190 285 aline 285 238 amove 380 238 aline 523 380 amove 380 619 aline 142 380 amove 142 476 aline 285 619 stroke dfont endchar dfont char=6 amove 95 0 aline 238 95 aline 380 95 aline 476 47 aline 523 -48 aline 523 -143 aline 476 -239 aline 380 -286 aline 238 -286 aline 142 -239 aline 95 -143 aline 95 95 aline 142 238 aline 190 285 aline 285 333 aline 380 333 aline 476 285 aline 523 238 aline 523 190 aline 476 190 aline 476 238 amove 380 95 aline 428 47 aline 476 -48 aline 476 -143 aline 428 -239 aline 380 -286 amove 238 -286 aline 190 -239 aline 142 -143 aline 142 95 aline 190 238 aline 285 333 amove 380 523 aline 428 571 aline 476 666 aline 476 809 aline 428 904 aline 380 952 amove 476 1142 aline 333 1095 aline 142 1095 amove 142 1142 aline 476 1142 amove 142 1142 aline 95 857 aline 142 904 aline 238 952 aline 380 952 aline 476 904 aline 523 809 aline 523 666 aline 476 571 aline 380 523 aline 238 523 aline 142 571 aline 95 619 aline 95 666 aline 142 666 aline 142 619 amove 47 428 aline 571 428 stroke dfont endchar dfont char=7 amove 95 -239 aline 142 -191 aline 190 -191 aline 333 -239 aline 476 -239 aline 523 -191 amove 523 -143 aline 523 -191 aline 476 -286 aline 333 -286 aline 190 -191 amove 95 -286 aline 95 -143 aline 142 -48 aline 238 0 aline 380 47 aline 476 95 aline 523 190 aline 476 285 aline 380 333 aline 238 333 aline 142 285 aline 95 238 aline 95 190 aline 142 190 aline 142 238 amove 47 428 aline 571 428 amove 476 523 aline 142 523 amove 285 523 aline 285 1095 amove 190 1000 aline 333 1142 aline 333 523 amove 380 333 aline 428 285 aline 476 190 aline 428 95 aline 380 47 stroke dfont endchar dfont char=8 amove 142 -191 aline 142 -143 aline 95 -143 aline 95 -191 aline 142 -239 aline 238 -286 aline 380 -286 aline 476 -239 aline 523 -143 aline 523 -96 aline 476 -1 aline 380 47 aline 285 47 amove 380 47 aline 476 95 aline 523 190 aline 476 285 aline 380 333 aline 238 333 aline 142 285 aline 95 238 aline 95 190 aline 142 190 aline 142 238 amove 47 428 aline 571 428 amove 476 523 aline 142 523 amove 285 523 aline 285 1095 amove 190 999 aline 333 1142 aline 333 523 amove 380 333 aline 428 285 aline 476 190 aline 428 95 aline 380 47 aline 428 0 aline 476 -96 aline 476 -143 aline 428 -239 aline 380 -286 stroke dfont endchar dfont char=9 amove 95 0 aline 238 95 aline 380 95 aline 476 47 aline 523 -48 aline 523 -143 aline 476 -239 aline 380 -286 aline 238 -286 aline 142 -239 aline 95 -143 aline 95 95 aline 142 238 aline 190 285 aline 285 333 aline 380 333 aline 476 285 aline 523 238 aline 523 190 aline 476 190 aline 476 238 amove 380 95 aline 428 47 aline 476 -48 aline 476 -143 aline 428 -239 aline 380 -286 amove 238 -286 aline 190 -239 aline 142 -143 aline 142 95 aline 190 238 aline 285 333 amove 285 523 aline 285 1095 amove 190 1000 aline 333 1142 aline 333 523 amove 476 523 aline 142 523 amove 47 428 aline 571 428 stroke dfont endchar dfont char=10 amove 238 47 aline 190 95 aline 142 190 aline 190 285 aline 238 333 aline 380 333 aline 476 285 aline 523 190 aline 476 95 aline 380 47 aline 238 47 aline 142 95 aline 95 190 aline 142 285 aline 238 333 amove 380 333 aline 428 285 aline 476 190 aline 428 95 aline 380 47 aline 476 0 aline 523 -96 aline 523 -143 aline 476 -239 aline 380 -286 aline 238 -286 aline 142 -239 aline 95 -143 aline 95 -96 aline 142 0 aline 238 47 aline 190 0 aline 142 -96 aline 142 -143 aline 190 -239 aline 238 -286 amove 380 -286 aline 428 -239 aline 476 -143 aline 476 -96 aline 428 0 aline 380 47 amove 571 428 aline 47 428 amove 142 523 aline 476 523 amove 333 523 aline 333 1142 aline 190 1000 amove 285 1095 aline 285 523 stroke dfont endchar dfont char=11 amove 142 -191 aline 142 -143 aline 95 -143 aline 95 -191 aline 142 -239 aline 238 -286 aline 380 -286 aline 476 -239 aline 523 -143 aline 523 -96 aline 476 -1 aline 380 47 aline 285 47 amove 380 47 aline 476 95 aline 523 190 aline 476 285 aline 380 333 aline 238 333 aline 142 285 aline 95 238 aline 95 190 aline 142 190 aline 142 238 amove 47 428 aline 571 428 amove 523 619 aline 476 571 aline 333 571 aline 190 619 aline 142 619 aline 95 571 amove 95 523 aline 95 666 aline 142 761 aline 238 809 aline 380 857 aline 476 904 aline 523 999 aline 476 1095 aline 380 1142 aline 238 1142 aline 142 1095 aline 95 1047 aline 95 999 aline 142 999 aline 142 1047 amove 380 1142 aline 428 1095 aline 476 999 aline 428 904 aline 380 857 amove 523 666 aline 523 619 aline 476 523 aline 333 523 aline 190 619 amove 380 333 aline 428 285 aline 476 190 aline 428 95 aline 380 47 aline 428 -1 aline 476 -96 aline 476 -143 aline 428 -239 aline 380 -286 stroke dfont endchar dfont char=12 amove 238 47 aline 190 95 aline 142 190 aline 190 285 aline 238 333 aline 380 333 aline 476 285 aline 523 190 aline 476 95 aline 380 47 aline 238 47 aline 142 95 aline 95 190 aline 142 285 aline 238 333 amove 380 333 aline 428 285 aline 476 190 aline 428 95 aline 380 47 aline 476 0 aline 523 -96 aline 523 -143 aline 476 -239 aline 380 -286 aline 238 -286 aline 142 -239 aline 95 -143 aline 95 -96 aline 142 0 aline 238 47 aline 190 0 aline 142 -96 aline 142 -143 aline 190 -239 aline 238 -286 amove 380 -286 aline 428 -239 aline 476 -143 aline 476 -96 aline 428 0 aline 380 47 amove 571 428 aline 47 428 amove 142 619 aline 142 666 aline 95 666 aline 95 619 aline 142 571 aline 238 523 aline 380 523 aline 476 571 aline 523 666 aline 523 714 aline 476 809 aline 380 857 aline 285 857 amove 380 857 aline 476 904 aline 523 1000 aline 476 1095 aline 380 1142 aline 238 1142 aline 142 1095 aline 95 1047 aline 95 1000 aline 142 1000 aline 142 1047 amove 380 1142 aline 428 1095 aline 476 1000 aline 428 904 aline 380 857 aline 428 809 aline 476 714 aline 476 666 aline 428 571 aline 380 523 stroke dfont endchar dfont char=13 amove 238 47 aline 190 95 aline 142 190 aline 190 285 aline 238 333 aline 380 333 aline 476 285 aline 523 190 aline 476 95 aline 380 47 aline 238 47 aline 142 95 aline 95 190 aline 142 285 aline 238 333 amove 380 333 aline 428 285 aline 476 190 aline 428 95 aline 380 47 aline 476 0 aline 523 -96 aline 523 -143 aline 476 -239 aline 380 -286 aline 238 -286 aline 142 -239 aline 95 -143 aline 95 -96 aline 142 0 aline 238 47 aline 190 0 aline 142 -96 aline 142 -143 aline 190 -239 aline 238 -286 amove 380 -286 aline 428 -239 aline 476 -143 aline 476 -96 aline 428 0 aline 380 47 amove 571 428 aline 47 428 amove 142 619 aline 142 666 aline 95 666 aline 95 619 aline 142 571 aline 238 523 aline 380 523 aline 476 571 aline 523 666 aline 523 809 aline 476 904 aline 380 952 aline 238 952 aline 142 904 aline 95 857 aline 142 1142 aline 476 1142 aline 333 1095 aline 142 1095 amove 380 952 aline 428 904 aline 476 809 aline 476 666 aline 428 571 aline 380 523 stroke dfont endchar dfont char=14 amove 238 47 aline 190 95 aline 142 190 aline 190 285 aline 238 333 aline 380 333 aline 476 285 aline 523 190 aline 476 95 aline 380 47 aline 238 47 aline 142 95 aline 95 190 aline 142 285 aline 238 333 amove 380 333 aline 428 285 aline 476 190 aline 428 95 aline 380 47 aline 476 0 aline 523 -96 aline 523 -143 aline 476 -239 aline 380 -286 aline 238 -286 aline 142 -239 aline 95 -143 aline 95 -96 aline 142 0 aline 238 47 aline 190 0 aline 142 -96 aline 142 -143 aline 190 -239 aline 238 -286 amove 380 -286 aline 428 -239 aline 476 -143 aline 476 -96 aline 428 0 aline 380 47 amove 571 428 aline 47 428 amove 190 523 aline 285 714 aline 476 1047 aline 428 1047 aline 285 1095 aline 190 1095 aline 95 1047 aline 190 1142 aline 285 1142 aline 428 1047 amove 523 1142 aline 380 857 aline 238 523 amove 95 952 aline 95 1142 stroke dfont endchar dfont char=15 amove 95 0 aline 238 95 aline 380 95 aline 476 47 aline 523 -48 aline 523 -143 aline 476 -239 aline 380 -286 aline 238 -286 aline 142 -239 aline 95 -143 aline 95 95 aline 142 238 aline 190 285 aline 285 333 aline 380 333 aline 476 285 aline 523 238 aline 523 190 aline 476 190 aline 476 238 amove 380 95 aline 428 47 aline 476 -48 aline 476 -143 aline 428 -239 aline 380 -286 amove 238 -286 aline 190 -239 aline 142 -143 aline 142 95 aline 190 238 aline 285 333 amove 380 523 aline 428 571 aline 476 666 aline 476 809 aline 428 904 aline 380 952 amove 476 1142 aline 333 1095 aline 142 1095 amove 142 1142 aline 476 1142 amove 142 1142 aline 95 857 aline 142 904 aline 238 952 aline 380 952 aline 476 904 aline 523 809 aline 523 666 aline 476 571 aline 380 523 aline 238 523 aline 142 571 aline 95 619 aline 95 666 aline 142 666 aline 142 619 amove 47 428 aline 571 428 stroke dfont endchar dfont char=16 amove 238 -286 aline 476 -286 amove 380 -286 aline 380 333 aline 47 -96 aline 571 -96 amove 333 -286 aline 333 238 amove 333 523 aline 333 1142 aline 190 1000 amove 285 1095 aline 285 523 amove 142 523 aline 476 523 amove 571 428 aline 47 428 stroke dfont endchar dfont char=17 amove 238 -286 aline 476 -286 amove 380 -286 aline 380 333 aline 47 -96 aline 571 -96 amove 333 -286 aline 333 238 amove 380 523 aline 428 571 aline 476 666 aline 476 714 aline 428 809 aline 380 857 aline 476 904 aline 523 1000 aline 476 1095 aline 380 1142 aline 238 1142 aline 142 1095 aline 95 1047 aline 95 1000 aline 142 1000 aline 142 1047 amove 285 857 aline 380 857 aline 476 809 aline 523 714 aline 523 666 aline 476 571 aline 380 523 aline 238 523 aline 142 571 aline 95 619 aline 95 666 aline 142 666 aline 142 619 amove 47 428 aline 571 428 amove 380 857 aline 428 904 aline 476 1000 aline 428 1095 aline 380 1142 stroke dfont endchar dfont char=18 amove 333 47 aline 380 47 aline 476 238 aline 571 523 aline 666 714 aline 761 904 aline 809 952 aline 904 1000 aline 952 1000 aline 1000 1000 aline 1000 952 aline 952 904 aline 1000 857 aline 1047 904 aline 1000 952 aline 952 1000 aline 904 1000 aline 809 952 aline 666 761 aline 571 476 aline 476 285 aline 428 190 aline 333 47 aline 238 0 aline 142 0 aline 95 47 aline 95 142 aline 142 190 aline 238 190 aline 333 142 aline 476 47 aline 571 0 aline 714 0 aline 809 47 aline 904 142 amove 714 523 aline 428 523 stroke dfont endchar dfont char=19 amove 333 190 aline 571 190 amove 476 190 aline 476 809 amove 428 809 aline 428 190 amove 523 0 aline 380 47 aline 238 142 aline 142 285 aline 95 428 aline 95 571 aline 142 714 aline 238 857 aline 380 952 aline 523 1000 aline 714 1000 aline 857 952 aline 952 857 aline 1047 714 aline 1095 571 aline 1095 428 aline 1047 285 aline 952 142 aline 809 47 aline 666 0 aline 523 0 amove 857 190 aline 809 238 aline 761 428 aline 666 476 aline 761 523 aline 809 619 aline 809 666 aline 761 761 aline 666 809 amove 333 809 aline 666 809 aline 809 761 aline 857 666 aline 857 619 aline 809 523 aline 666 476 aline 476 476 amove 666 476 aline 714 428 aline 761 238 aline 809 190 aline 857 190 aline 904 238 stroke dfont endchar dfont char=20 amove 523 0 aline 380 47 aline 238 142 aline 142 285 aline 95 428 aline 95 571 aline 142 714 aline 238 857 aline 380 952 aline 523 1000 aline 714 1000 aline 857 952 aline 952 857 aline 1047 714 aline 1095 571 aline 1095 428 aline 1047 285 aline 952 142 aline 809 47 aline 666 0 aline 523 0 amove 523 190 aline 428 285 aline 380 428 aline 380 571 aline 428 714 aline 523 809 amove 761 761 aline 809 809 aline 809 619 aline 761 761 aline 666 809 aline 523 809 aline 428 761 aline 380 714 aline 333 571 aline 333 428 aline 380 285 aline 428 238 aline 523 190 aline 666 190 aline 761 238 aline 809 333 stroke dfont endchar dfont char=21 amove 190 190 aline 1047 190 amove 1047 428 aline 190 428 amove 190 666 aline 1047 666 amove 952 857 aline 285 0 stroke dfont endchar dfont char=22 amove 238 476 aline 190 428 aline 238 380 aline 285 428 aline 238 476 amove 714 476 aline 666 428 aline 714 380 aline 761 428 aline 714 476 amove 1190 476 aline 1142 428 aline 1190 380 aline 1238 428 aline 1190 476 stroke dfont endchar dfont char=23 amove 428 190 aline 333 333 aline 190 428 aline 333 523 aline 428 666 amove 333 523 aline 238 428 aline 333 333 amove 238 428 aline 1000 428 amove 809 190 aline 904 333 aline 1047 428 aline 904 523 aline 809 666 amove 904 523 aline 1000 428 aline 904 333 stroke dfont endchar dfont char=24 amove 142 238 aline 285 142 aline 380 -1 aline 476 142 aline 619 238 amove 476 142 aline 380 47 aline 285 142 amove 380 47 aline 380 809 amove 285 714 aline 380 809 aline 476 714 amove 619 619 aline 476 714 aline 380 857 aline 285 714 aline 142 619 stroke dfont endchar dfont char=25 amove 619 -143 aline 619 999 amove 952 809 aline 619 809 aline 428 761 aline 333 714 aline 238 619 aline 190 476 aline 190 380 aline 238 238 aline 333 142 aline 428 95 aline 619 47 aline 952 47 stroke dfont endchar dfont char=26 amove 190 47 aline 523 47 aline 714 95 aline 809 142 aline 904 238 aline 952 380 aline 952 476 aline 904 619 aline 809 714 aline 714 761 aline 523 809 aline 190 809 amove 523 1000 aline 523 -143 stroke dfont endchar dfont char=27 amove 190 47 aline 523 47 aline 714 95 aline 809 142 aline 904 238 aline 952 380 aline 952 476 aline 904 619 aline 809 714 aline 714 761 aline 523 809 aline 190 809 amove 428 428 aline 952 428 stroke dfont endchar dfont char=28 amove 190 0 aline 190 1190 amove 476 1190 aline 476 0 amove 761 0 aline 761 1190 stroke dfont endchar dfont char=29 amove 190 0 aline 190 1190 amove 476 1190 aline 476 0 stroke dfont endchar dfont char=30 amove 571 1190 aline 571 0 amove 142 0 aline 1000 0 stroke dfont endchar dfont char=31 amove 1000 1190 aline 142 0 aline 1000 0 stroke dfont endchar dfont char=32 amove 619 857 aline 571 809 aline 619 761 aline 666 809 aline 619 857 amove 190 95 aline 142 47 aline 190 0 aline 238 47 aline 190 95 amove 1047 95 aline 1000 47 aline 1047 0 aline 1095 47 aline 1047 95 stroke dfont endchar dfont char=33 amove 476 -48 aline 523 95 aline 571 285 aline 619 95 aline 666 -48 aline 476 -48 amove 571 285 aline 619 190 aline 714 142 aline 809 142 aline 904 190 aline 952 285 aline 952 380 aline 904 523 aline 761 714 aline 571 904 aline 380 714 aline 238 523 aline 190 380 aline 190 285 aline 238 190 aline 333 142 aline 428 142 aline 523 190 aline 571 285 stroke dfont endchar dfont char=34 amove 571 -48 aline 380 190 aline 285 333 aline 238 428 aline 190 571 aline 190 761 aline 238 857 aline 333 904 aline 380 904 aline 476 857 aline 523 761 aline 571 619 aline 619 761 aline 666 857 aline 761 904 aline 809 904 aline 904 857 aline 952 761 aline 952 571 aline 904 428 aline 857 333 aline 761 190 aline 571 -48 stroke dfont endchar dfont char=35 amove 142 428 aline 285 285 aline 476 47 aline 571 -96 aline 666 47 aline 857 285 aline 1000 428 aline 857 571 aline 666 809 aline 571 952 aline 476 809 aline 285 571 aline 142 428 stroke dfont endchar dfont char=36 amove 476 -48 aline 523 95 aline 571 333 aline 666 190 aline 761 142 aline 857 142 aline 952 190 aline 1000 285 aline 1000 380 aline 952 476 aline 857 523 aline 761 523 aline 619 476 aline 714 571 aline 761 666 aline 761 761 aline 714 857 aline 619 904 aline 523 904 aline 428 857 aline 380 761 aline 380 666 aline 428 571 aline 523 476 aline 380 523 aline 285 523 aline 190 476 aline 142 380 aline 142 285 aline 190 190 aline 285 142 aline 380 142 aline 476 190 aline 571 333 aline 619 95 aline 666 -48 aline 476 -48 stroke dfont endchar dfont char=37 amove 190 428 aline 142 476 aline 142 571 aline 190 619 aline 285 619 aline 380 571 aline 571 428 aline 571 0 aline 523 -48 aline 571 238 amove 571 428 aline 428 619 aline 380 761 aline 380 857 aline 428 904 aline 523 904 aline 571 857 aline 619 904 aline 714 904 aline 761 857 aline 761 761 aline 714 619 aline 571 428 aline 380 285 aline 285 238 aline 190 238 aline 142 285 aline 142 380 aline 190 428 amove 571 428 aline 761 571 aline 857 619 aline 952 619 aline 1000 571 aline 1000 476 aline 952 428 aline 1000 380 aline 1000 285 aline 952 238 aline 857 238 aline 761 285 aline 571 428 stroke dfont endchar dfont char=38 amove 285 47 aline 333 142 aline 333 238 aline 285 333 aline 190 380 aline 142 380 aline 142 428 aline 190 476 aline 285 476 aline 333 428 aline 380 333 aline 380 190 aline 333 95 aline 285 47 amove 238 238 aline 904 238 amove 999 380 aline 999 428 aline 952 476 aline 857 476 aline 809 428 aline 761 333 aline 761 190 aline 809 95 aline 857 47 aline 809 142 aline 809 238 aline 857 333 aline 952 380 aline 999 380 amove 571 -48 aline 476 47 aline 523 142 aline 523 285 aline 428 571 aline 428 714 aline 476 857 aline 571 952 aline 666 857 aline 714 714 aline 714 571 aline 619 285 aline 619 142 aline 666 47 aline 571 -48 stroke dfont endchar dfont char=39 amove 0 47 aline 47 0 aline 142 -48 aline 285 -48 aline 380 0 aline 428 47 aline 476 142 aline 476 238 aline 428 333 aline 380 380 aline 95 571 aline 47 619 aline 0 714 aline 0 809 aline 47 904 aline 95 952 aline 190 1000 aline 333 1000 aline 428 952 aline 476 904 stroke dfont endchar dfont char=40 amove 95 190 aline 47 238 aline 0 333 aline 0 476 aline 47 571 aline 95 619 aline 190 666 aline 285 666 aline 380 619 aline 428 571 aline 619 285 aline 666 238 aline 761 190 aline 857 190 aline 952 238 aline 1000 285 aline 1047 380 aline 1047 523 aline 1000 619 aline 952 666 stroke dfont endchar dfont char=41 amove 523 428 aline 619 285 aline 666 238 aline 761 190 aline 857 190 aline 952 238 aline 1000 285 aline 1047 380 aline 1047 476 aline 1000 571 aline 952 619 aline 857 666 aline 761 666 aline 666 619 aline 619 571 aline 428 285 aline 380 238 aline 285 190 aline 190 190 aline 95 238 aline 47 285 aline 0 380 aline 0 476 aline 47 571 aline 95 619 aline 190 666 aline 285 666 aline 380 619 aline 428 571 aline 523 428 stroke dfont endchar dfont char=42 amove 142 0 aline 142 1000 amove 0 1000 aline 904 1000 aline 428 523 aline 904 47 amove 857 95 aline 714 95 aline 857 47 aline 952 0 aline 904 95 aline 857 238 aline 857 95 stroke dfont endchar dfont char=43 amove 190 -286 aline 333 -239 aline 428 -191 aline 523 -96 aline 619 47 aline 666 238 aline 666 523 aline 619 666 aline 523 761 aline 380 809 aline 285 809 aline 142 761 aline 47 666 aline 0 523 amove 666 428 aline 619 285 aline 523 190 aline 380 142 aline 285 142 aline 142 190 aline 47 285 aline 0 428 aline 0 714 aline 47 904 aline 142 1047 aline 238 1142 aline 333 1190 aline 476 1238 stroke dfont endchar dfont char=44 amove 0 428 aline 1904 428 stroke dfont endchar dfont char=45 amove 0 -239 aline 1333 1095 stroke dfont endchar dfont char=46 amove 0 1380 aline 0 -524 stroke dfont endchar dfont char=47 amove 0 1095 aline 1333 -239 stroke dfont endchar dfont char=48 amove 0 428 aline 1333 428 stroke dfont endchar dfont char=49 amove 0 95 aline 1142 761 stroke dfont endchar dfont char=50 amove 0 -143 aline 666 999 stroke dfont endchar dfont char=51 amove 0 1095 aline 0 -239 stroke dfont endchar dfont char=52 amove 0 1000 aline 666 -143 stroke dfont endchar dfont char=53 amove 0 761 aline 1142 95 stroke dfont endchar dfont char=54 amove 0 428 aline 666 428 stroke dfont endchar dfont char=55 amove 0 190 aline 476 666 stroke dfont endchar dfont char=56 amove 0 761 aline 0 95 stroke dfont endchar dfont char=57 amove 0 666 aline 476 190 stroke dfont endchar dfont char=58 amove 0 428 aline 0 523 aline 47 666 aline 142 809 aline 285 904 aline 428 952 aline 523 952 stroke dfont endchar dfont char=59 amove 0 428 aline 0 333 aline 47 190 aline 142 47 aline 285 -48 aline 428 -96 aline 523 -96 stroke dfont endchar dfont char=60 amove 0 -96 aline 95 -96 aline 238 -48 aline 380 47 aline 476 190 aline 523 333 aline 523 428 stroke dfont endchar dfont char=61 amove 523 428 aline 523 523 aline 476 666 aline 380 809 aline 238 904 aline 95 952 aline 0 952 stroke dfont endchar dfont char=62 amove 0 571 aline 142 476 aline 333 380 aline 571 333 aline 761 333 aline 1000 380 aline 1190 476 aline 1333 571 stroke dfont endchar dfont char=63 amove 238 1095 aline 142 952 aline 47 761 aline -1 523 aline -1 333 aline 47 95 aline 142 -96 aline 238 -239 stroke dfont endchar dfont char=64 amove 0 -239 aline 95 -96 aline 190 95 aline 238 333 aline 238 523 aline 190 761 aline 95 952 aline 0 1095 stroke dfont endchar dfont char=65 amove 0 285 aline 142 380 aline 333 476 aline 571 523 aline 761 523 aline 1000 476 aline 1190 380 aline 1333 285 stroke dfont endchar dfont char=66 amove 333 809 aline 666 619 aline 0 238 aline 333 47 stroke dfont endchar dfont char=67 amove 0 428 aline 190 761 aline 571 95 aline 761 428 stroke dfont endchar dfont char=68 amove 0 238 aline 0 619 aline 666 238 aline 666 619 stroke dfont endchar dfont char=69 amove 95 142 aline 0 523 aline 761 333 aline 666 714 stroke dfont endchar dfont char=70 amove 0 -96 aline 95 -96 aline 238 -48 aline 333 0 aline 476 142 aline 523 238 aline 571 380 aline 571 571 aline 523 714 aline 476 809 aline 428 857 aline 333 857 aline 285 809 aline 238 714 aline 190 571 aline 190 380 aline 238 238 aline 285 142 aline 428 0 aline 523 -48 aline 666 -96 aline 761 -96 stroke dfont endchar dfont char=71 amove 952 47 aline 952 142 aline 904 285 aline 857 380 aline 714 523 aline 619 571 aline 476 619 aline 285 619 aline 142 571 aline 47 523 aline 0 476 aline 0 380 aline 47 333 aline 142 285 aline 285 238 aline 476 238 aline 619 285 aline 714 333 aline 857 476 aline 904 571 aline 952 714 aline 952 809 stroke dfont endchar dfont char=72 amove 0 952 aline 95 952 aline 238 904 aline 333 857 aline 476 714 aline 523 619 aline 571 476 aline 571 285 aline 523 142 aline 476 47 aline 428 0 aline 333 0 aline 285 47 aline 238 142 aline 190 285 aline 190 476 aline 238 619 aline 285 714 aline 428 857 aline 523 904 aline 666 952 aline 761 952 stroke dfont endchar dfont char=73 amove 0 47 aline 0 142 aline 47 285 aline 95 380 aline 238 523 aline 333 571 aline 476 619 aline 666 619 aline 809 571 aline 904 523 aline 952 476 aline 952 380 aline 904 333 aline 809 285 aline 666 238 aline 476 238 aline 333 285 aline 238 333 aline 95 476 aline 47 571 aline 0 714 aline 0 809 stroke dfont endchar dfont char=74 amove 0 523 aline 47 428 aline 142 333 aline 238 285 aline 380 238 aline 571 238 aline 761 285 aline 904 380 aline 1000 523 aline 1047 619 aline 1000 714 aline 857 714 aline 666 666 aline 571 619 aline 428 523 aline 333 380 aline 285 238 aline 285 95 aline 333 -48 aline 380 -143 stroke dfont endchar dfont char=75 amove 0 333 aline 142 238 aline 285 190 aline 523 190 aline 666 238 aline 809 333 aline 904 476 aline 952 619 aline 952 714 aline 904 761 aline 809 761 aline 666 714 aline 523 619 aline 428 476 aline 380 333 aline 380 95 aline 428 -48 aline 523 -191 stroke dfont endchar dfont char=76 amove 95 571 aline 0 476 aline 0 380 aline 95 285 aline 190 285 aline 285 380 aline 285 476 aline 190 571 aline 95 571 amove 95 523 aline 47 476 aline 47 380 aline 95 333 aline 190 333 aline 238 380 aline 238 476 aline 190 523 aline 95 523 amove 142 476 aline 95 428 aline 142 380 aline 190 428 aline 142 476 stroke dfont endchar dfont char=77 amove 0 190 aline 47 190 aline 142 238 aline 190 285 aline 238 380 aline 238 476 aline 190 571 aline 142 619 aline 47 666 aline 0 666 stroke dfont endchar dfont char=78 amove 0 428 aline 285 428 amove 523 428 aline 809 428 amove 1047 428 aline 1333 428 stroke dfont endchar dfont char=79 amove 0 285 aline 0 571 aline 1333 571 aline 1333 285 stroke dfont endchar dfont char=80 amove 0 428 aline 380 1095 aline 761 428 stroke dfont endchar dfont char=81 amove 285 95 aline 1047 95 amove 1333 428 aline 0 428 amove 571 -239 aline 761 -239 stroke dfont endchar dfont char=82 amove 0 428 aline 666 -334 aline 1333 428 aline 0 428 stroke dfont endchar dfont char=83 amove 285 761 aline 142 714 aline 47 619 aline 0 476 aline 0 380 aline 47 238 aline 142 142 aline 285 95 aline 380 95 aline 523 142 aline 619 238 aline 666 380 aline 666 476 aline 619 619 aline 523 714 aline 380 761 aline 285 761 stroke dfont endchar dfont char=84 amove 0 714 aline 0 142 aline 571 142 aline 571 714 aline 0 714 stroke dfont endchar dfont char=85 amove 333 809 aline 0 238 aline 666 238 aline 333 809 stroke dfont endchar dfont char=86 amove 285 904 aline 0 428 aline 285 -48 aline 571 428 aline 285 904 stroke dfont endchar dfont char=87 amove 380 857 aline 285 571 aline 0 571 aline 238 380 aline 142 95 aline 380 285 aline 619 95 aline 523 380 aline 761 571 aline 476 571 aline 380 857 stroke dfont endchar dfont char=88 amove 333 95 aline 333 761 amove 0 428 aline 666 428 stroke dfont endchar dfont char=89 amove 0 190 aline 476 666 amove 0 666 aline 476 190 stroke dfont endchar dfont char=90 amove 238 142 aline 238 714 amove -1 571 aline 476 285 amove 476 571 aline 0 285 stroke dfont endchar dfont char=91 amove 142 285 aline 142 571 amove 142 619 aline 47 571 aline 0 476 aline 0 380 aline 47 285 aline 142 238 aline 238 238 aline 333 285 aline 380 380 aline 380 476 aline 333 571 aline 238 619 aline 142 619 amove 190 571 aline 190 285 amove 238 285 aline 238 571 amove 285 523 aline 285 333 amove 333 380 aline 333 476 amove 95 523 aline 95 333 amove 47 380 aline 47 476 stroke dfont endchar dfont char=92 amove 47 285 aline 47 571 amove 95 571 aline 95 285 amove 142 285 aline 142 571 amove 190 571 aline 190 285 amove 238 285 aline 238 571 amove 285 571 aline 285 285 amove 333 285 aline 333 571 amove 0 619 aline 0 238 aline 380 238 aline 380 619 aline 0 619 stroke dfont endchar dfont char=93 amove 95 333 aline 238 571 aline 380 333 amove 285 333 aline 238 428 aline 190 333 amove 238 714 aline 0 285 aline 476 285 aline 238 714 stroke dfont endchar dfont char=94 amove 0 428 aline 428 190 aline 428 666 aline 0 428 amove 142 428 aline 380 285 amove 380 380 aline 285 428 aline 380 476 amove 380 571 aline 142 428 stroke dfont endchar dfont char=95 amove 238 142 aline 476 571 aline 0 571 aline 238 142 amove 238 285 aline 380 523 amove 285 523 aline 238 428 aline 190 523 amove 95 523 aline 238 285 stroke dfont endchar dfont char=96 amove 47 285 aline 285 428 aline 47 571 amove 47 476 aline 142 428 aline 47 380 amove 428 428 aline 0 666 aline 0 190 aline 428 428 stroke dfont endchar dfont char=97 amove 95 190 aline 285 428 aline 285 714 aline 476 190 aline 0 523 aline 571 523 aline 95 190 aline 285 714 amove 285 428 aline 0 523 amove 285 428 aline 476 190 amove 285 428 aline 571 523 stroke dfont endchar dfont char=98 amove 0 95 aline 0 761 aline 333 619 aline 0 476 amove 47 571 aline 190 619 aline 47 666 stroke dfont endchar dfont char=99 amove 238 142 aline 238 714 amove 95 571 aline 380 571 amove 476 285 aline 380 190 aline 285 142 aline 190 142 aline 95 190 aline 0 285 stroke dfont endchar dfont char=100 amove 190 190 aline 380 190 amove 285 142 aline 285 714 amove 0 476 aline 47 571 aline 523 571 aline 571 476 stroke dfont endchar dfont char=101 amove 95 142 aline 571 619 amove 476 714 aline 619 571 aline 666 476 amove 571 142 aline 95 619 amove 190 714 aline 47 571 aline 0 476 stroke dfont endchar dfont char=102 amove 0 0 aline 238 857 aline 619 857 aline 857 0 aline 190 666 aline 666 666 aline 0 0 stroke dfont endchar dfont char=103 amove 142 -48 aline 0 238 aline 857 238 aline 714 -48 aline 142 -48 amove 428 238 aline 428 952 amove 190 809 aline 666 523 amove 666 809 aline 190 523 stroke dfont endchar dfont char=104 amove 0 -48 aline 952 -48 aline 952 428 aline 0 -48 amove 190 523 aline 571 714 amove 285 809 aline 571 238 stroke dfont endchar dfont char=105 amove 190 714 aline 190 523 aline 0 523 aline 0 333 aline 190 333 aline 190 142 aline 380 142 aline 380 333 aline 571 333 aline 571 523 aline 380 523 aline 380 714 aline 190 714 stroke dfont endchar dfont char=106 amove 666 333 aline 619 238 aline 523 142 aline 380 95 aline 285 95 aline 142 142 aline 47 238 aline 0 380 aline 0 476 aline 47 619 aline 142 714 aline 285 761 aline 380 761 aline 523 714 aline 619 619 aline 666 523 aline 571 619 aline 476 666 aline 380 666 aline 285 619 aline 238 571 aline 190 476 aline 190 380 aline 238 285 aline 285 238 aline 380 190 aline 476 190 aline 571 238 aline 666 333 stroke dfont endchar dfont char=107 amove 333 809 aline 0 238 aline 666 238 aline 333 809 amove 333 47 aline 666 619 aline 0 619 aline 333 47 stroke dfont endchar dfont char=108 amove 0 47 aline 47 142 aline 142 238 aline 190 333 aline 238 523 aline 238 761 aline 285 809 aline 380 857 aline 666 857 aline 761 809 aline 809 761 aline 809 523 aline 857 333 aline 904 238 aline 1000 142 aline 1047 47 aline 0 47 amove 476 47 aline 428 0 aline 476 -48 aline 571 -48 aline 619 0 aline 571 47 amove 619 857 aline 619 952 aline 571 1000 aline 476 1000 aline 428 952 aline 428 857 stroke dfont endchar dfont char=109 amove 333 -48 aline 428 -48 aline 380 380 aline 333 -48 amove 380 380 aline 380 666 aline 333 809 aline 285 904 aline 190 952 aline 333 809 amove 428 809 aline 571 952 aline 476 904 aline 428 809 aline 380 666 aline 190 761 aline 95 761 aline 0 666 aline 95 714 aline 285 714 amove 380 666 aline 571 761 aline 666 761 aline 761 666 aline 666 714 aline 476 714 amove 380 666 aline 285 619 aline 238 571 aline 238 428 aline 285 571 aline 380 666 aline 476 619 aline 523 571 aline 523 428 aline 476 571 aline 380 666 stroke dfont endchar dfont char=110 amove 95 47 aline 0 95 aline 0 190 aline 47 95 aline 95 47 aline 142 47 aline 238 95 aline 285 142 aline 380 285 aline 380 380 amove 380 285 aline 476 142 aline 523 95 aline 619 47 aline 666 47 aline 714 95 aline 761 190 aline 761 95 aline 666 47 amove 619 47 aline 523 47 aline 380 95 aline 238 47 aline 142 47 amove 333 -48 aline 380 95 aline 428 -48 aline 333 -48 amove 190 333 aline 285 333 aline 380 380 aline 476 333 aline 571 333 amove 666 333 aline 714 380 aline 714 428 aline 666 333 aline 571 333 aline 476 380 aline 380 523 aline 380 619 amove 380 523 aline 285 380 aline 190 333 aline 95 333 aline 47 428 aline 47 380 aline 95 333 amove 190 571 aline 285 571 aline 380 619 aline 476 571 aline 571 571 amove 619 619 aline 571 571 aline 476 619 aline 380 761 aline 380 857 amove 380 761 aline 285 619 aline 190 571 aline 142 619 amove 285 809 aline 333 857 aline 380 952 aline 428 857 aline 476 809 aline 380 857 aline 285 809 stroke dfont endchar dfont char=111 amove 333 -48 aline 380 95 aline 428 -48 aline 333 -48 amove 380 95 aline 523 47 aline 666 47 aline 761 142 aline 761 285 aline 714 333 aline 619 333 aline 714 428 aline 761 571 aline 714 666 aline 619 714 aline 523 666 aline 571 809 aline 523 904 aline 428 952 aline 333 952 aline 238 904 aline 190 809 aline 238 666 aline 142 714 aline 47 666 aline 0 571 aline 47 428 aline 142 333 aline 47 333 aline 0 285 aline 0 142 aline 95 47 aline 238 47 aline 380 95 stroke dfont endchar dfont char=112 amove 333 -48 aline 380 95 aline 428 -48 aline 333 -48 amove 380 95 aline 571 142 aline 571 238 aline 666 285 aline 666 428 aline 761 476 aline 761 714 aline 714 857 aline 666 904 aline 571 904 aline 476 952 aline 285 952 aline 190 904 aline 95 904 aline 47 857 aline 0 714 aline 0 476 aline 95 428 aline 95 285 aline 190 238 aline 190 142 aline 380 95 stroke dfont endchar dfont char=113 amove 95 428 aline 0 523 amove 238 523 aline 142 761 amove 428 952 aline 428 571 amove 619 523 aline 714 761 amove 857 523 aline 761 428 stroke dfont endchar dfont char=114 amove 952 -381 aline 857 -286 aline 714 -239 aline 428 -239 aline 285 -191 aline 190 -96 aline 142 47 aline 142 666 aline 95 809 aline 0 904 aline 333 1238 aline 428 1142 aline 571 1095 aline 714 1095 aline 857 1142 aline 952 1238 aline 1047 1142 aline 1190 1095 aline 1333 1095 aline 1476 1142 aline 1571 1238 aline 1904 904 aline 1809 809 aline 1761 666 aline 1761 47 aline 1714 -96 aline 1619 -191 aline 1476 -239 aline 1190 -239 aline 1047 -286 aline 952 -381 stroke dfont endchar dfont char=115 amove 809 -381 aline 523 -239 aline 285 -48 aline 142 142 aline 47 333 aline 0 523 aline 0 761 aline 47 952 aline 190 1238 aline 285 1142 aline 428 1095 aline 571 1095 aline 714 1142 aline 809 1238 aline 904 1142 aline 1047 1095 aline 1190 1095 aline 1333 1142 aline 1428 1238 aline 1571 952 aline 1619 761 aline 1619 523 aline 1571 333 aline 1476 142 aline 1333 -48 aline 1095 -239 aline 809 -381 amove 47 904 aline 1571 904 stroke dfont endchar dfont char=116 amove 190 -334 aline 761 1000 amove 428 666 aline 333 619 aline 238 523 aline 190 380 aline 190 285 aline 238 142 aline 333 47 aline 428 0 amove 761 142 aline 666 47 aline 523 0 aline 428 0 aline 285 47 aline 190 142 aline 142 285 aline 142 380 aline 190 523 aline 285 619 aline 428 666 aline 571 666 aline 666 619 aline 761 523 aline 761 476 aline 714 428 aline 666 476 aline 714 523 stroke dfont endchar dfont char=117 amove 307 1000 aline 230 923 aline 230 769 aline 307 692 aline 461 692 aline 538 769 aline 538 923 aline 461 1000 aline 307 1000 stroke dfont endchar dfont char=118 amove 153 692 aline 615 1000 amove 384 1076 aline 384 615 amove 615 692 aline 153 1000 stroke dfont endchar dfont char=119 amove 153 -308 aline 1000 1230 stroke dfont endchar dfont char=120 amove 461 -154 aline 384 0 aline 307 307 aline 307 615 aline 384 923 aline 461 1076 amove 615 1230 aline 461 1076 aline 307 846 aline 230 615 aline 230 307 aline 307 76 aline 461 -154 aline 615 -308 stroke dfont endchar dfont char=121 amove 153 -308 aline 307 -154 aline 461 76 aline 538 307 aline 538 615 aline 461 846 aline 307 1076 aline 153 1230 amove 307 1076 aline 384 923 aline 461 615 aline 461 307 aline 384 0 aline 307 -154 stroke dfont endchar dfont char=122 amove 230 -308 aline 230 1230 aline 615 1230 amove 307 1230 aline 307 -308 amove 230 -308 aline 615 -308 stroke dfont endchar dfont char=123 amove 153 -308 aline 538 -308 aline 538 1230 aline 153 1230 amove 461 1230 aline 461 -308 stroke dfont endchar dfont char=124 amove 384 -77 aline 461 230 amove 384 76 aline 461 -231 amove 538 -308 aline 461 -231 aline 384 -77 aline 384 76 aline 461 230 aline 461 307 aline 307 461 aline 461 615 aline 461 692 aline 384 846 aline 384 999 aline 461 1153 aline 538 1230 amove 461 1153 aline 384 846 amove 384 999 aline 461 692 stroke dfont endchar dfont char=125 amove 307 -308 aline 384 -231 aline 461 -77 aline 461 76 aline 384 230 aline 384 307 aline 538 461 aline 384 615 aline 384 692 aline 461 846 aline 461 999 aline 384 1153 aline 307 1230 amove 384 1153 aline 461 846 amove 461 1000 aline 384 692 amove 384 230 aline 461 -77 amove 461 76 aline 384 -231 stroke dfont endchar dfont char=126 amove 538 1230 aline 230 461 aline 538 -308 stroke dfont endchar dfont char=127 amove 230 -308 aline 538 461 aline 230 1230 stroke dfont endchar dfont char=128 amove 230 1230 aline 230 -308 stroke dfont endchar dfont char=129 amove 230 -308 aline 230 1230 amove 538 1230 aline 538 -308 stroke dfont endchar dfont char=130 amove 230 461 aline 1153 461 stroke dfont endchar dfont char=131 amove 230 461 aline 1153 461 amove 692 923 aline 692 0 stroke dfont endchar dfont char=132 amove 230 0 aline 999 0 amove 615 0 aline 615 846 amove 230 461 aline 999 461 stroke dfont endchar dfont char=133 amove 230 461 aline 999 461 amove 999 846 aline 230 846 amove 615 846 aline 615 -1 stroke dfont endchar dfont char=134 amove 230 76 aline 999 846 amove 230 846 aline 999 76 stroke dfont endchar dfont char=135 amove 307 538 aline 230 461 aline 307 384 aline 384 461 aline 307 538 stroke dfont endchar dfont char=136 amove 230 461 aline 1153 461 amove 692 153 aline 615 76 aline 692 -1 aline 769 76 aline 692 153 amove 692 923 aline 615 846 aline 692 769 aline 769 846 aline 692 923 stroke dfont endchar dfont char=137 amove 230 307 aline 1153 307 amove 1153 615 aline 230 615 stroke dfont endchar dfont char=138 amove 307 0 aline 1076 923 amove 1153 615 aline 230 615 amove 230 307 aline 1153 307 stroke dfont endchar dfont char=139 amove 230 153 aline 1153 153 amove 1153 461 aline 230 461 amove 230 769 aline 1153 769 stroke dfont endchar dfont char=140 amove 1000 923 aline 230 461 aline 1000 -1 stroke dfont endchar dfont char=141 amove 230 0 aline 999 461 aline 230 923 stroke dfont endchar dfont char=142 amove 230 0 aline 999 0 amove 999 307 aline 230 307 amove 999 384 aline 230 692 aline 999 1000 stroke dfont endchar dfont char=143 amove 230 0 aline 999 0 amove 999 307 aline 230 307 amove 230 384 aline 999 692 aline 230 1000 stroke dfont endchar dfont char=144 amove 1307 230 aline 1153 230 aline 1000 307 aline 923 384 aline 769 615 aline 692 692 aline 538 769 aline 461 769 aline 307 692 aline 230 538 aline 230 461 aline 307 307 aline 461 230 aline 538 230 aline 692 307 aline 769 384 aline 923 615 aline 1000 692 aline 1153 769 aline 1307 769 stroke dfont endchar dfont char=145 amove 153 307 aline 153 461 aline 230 615 aline 384 615 aline 846 384 aline 1000 384 aline 1076 461 amove 1076 615 aline 1076 461 aline 1000 307 aline 846 307 aline 384 538 aline 230 538 aline 153 461 stroke dfont endchar dfont char=146 amove 230 384 aline 615 615 aline 1000 384 aline 615 538 aline 230 384 stroke dfont endchar dfont char=147 amove 153 692 aline 384 1000 aline 461 923 aline 153 692 stroke dfont endchar dfont char=148 amove 461 692 aline 230 1000 aline 153 923 aline 461 692 stroke dfont endchar dfont char=149 amove 153 1000 aline 230 846 aline 384 769 aline 538 769 aline 692 846 aline 769 1000 aline 692 769 aline 538 692 aline 384 692 aline 230 769 aline 153 1000 stroke dfont endchar dfont char=150 amove 230 615 aline 384 769 aline 384 923 aline 307 1000 aline 230 923 aline 307 846 aline 384 923 stroke dfont endchar dfont char=151 amove 230 692 aline 307 769 aline 384 692 aline 307 615 aline 230 692 aline 230 846 aline 384 1000 stroke dfont endchar dfont char=152 amove 230 923 aline 307 846 aline 384 923 aline 307 1000 aline 230 923 aline 230 769 aline 384 615 stroke dfont endchar dfont char=153 amove 230 1000 aline 384 846 aline 384 692 aline 307 615 aline 230 692 aline 307 769 aline 384 692 stroke dfont endchar gle-graphics-4.2.4c/src/fonts/pldr.afm0000664000000000000000000001226111676336540016314 0ustar rootrootStartFontMetrics 2.0 Comment Made from HERSHEY font file using SPLITFONT.BAS FontName plDR EncodingScheme TEXENCODING FullName plDR FamilyName plDR Weight Medium ItalicAngle 0 IsFixedPitch false UnderlinePosition -97 UnderlineThickness 73 FontBBox 0 -400 1001 1001 CapHeight 729 XHeight 151 Descender -219 Ascender 729 StartCharMetrics 95 C 32 ; WX 400 ; N C32 ; B 0 0 0 0 ; C 33 ; WX 351 ; N C33 ; B 133 0 233 700 ; C 34 ; WX 351 ; N C34 ; B 133 466 233 700 ; C 35 ; WX 300 ; N C35 ; B 0 0 0 0 ; C 36 ; WX 618 ; N C36 ; B 99 -133 532 833 ; C 37 ; WX 784 ; N C37 ; B 99 0 700 700 ; C 38 ; WX 300 ; N C38 ; B 0 0 0 0 ; C 39 ; WX 351 ; N C39 ; B 133 466 233 700 ; C 40 ; WX 451 ; N C40 ; B 99 -233 366 833 ; C 41 ; WX 451 ; N C41 ; B 99 -233 366 833 ; C 42 ; WX 585 ; N C42 ; B 133 466 500 700 ; C 43 ; WX 818 ; N C43 ; B 133 32 700 600 ; C 44 ; WX 351 ; N C44 ; B 133 -133 233 99 ; C 45 ; WX 818 ; N C45 ; B 133 299 700 333 ; C 46 ; WX 351 ; N C46 ; B 133 0 233 99 ; C 47 ; WX 751 ; N C47 ; B 66 -233 700 833 ; C 48 ; WX 651 ; N C48 ; B 99 0 566 700 ; C 49 ; WX 651 ; N C49 ; B 199 0 366 700 ; C 50 ; WX 651 ; N C50 ; B 99 0 566 700 ; C 51 ; WX 651 ; N C51 ; B 99 0 566 700 ; C 52 ; WX 651 ; N C52 ; B 99 0 600 700 ; C 53 ; WX 651 ; N C53 ; B 99 0 566 700 ; C 54 ; WX 651 ; N C54 ; B 133 0 566 700 ; C 55 ; WX 651 ; N C55 ; B 99 0 566 700 ; C 56 ; WX 651 ; N C56 ; B 99 0 566 700 ; C 57 ; WX 651 ; N C57 ; B 99 0 532 700 ; C 58 ; WX 351 ; N C58 ; B 133 0 233 466 ; C 59 ; WX 351 ; N C59 ; B 133 -133 233 466 ; C 60 ; WX 784 ; N C60 ; B 133 0 666 600 ; C 61 ; WX 818 ; N C61 ; B 133 166 700 466 ; C 62 ; WX 784 ; N C62 ; B 133 0 666 600 ; C 63 ; WX 618 ; N C63 ; B 99 0 532 700 ; C 64 ; WX 884 ; N C64 ; B 99 0 799 700 ; C 65 ; WX 651 ; N C65 ; B 66 0 600 700 ; C 66 ; WX 651 ; N C66 ; B 133 0 566 700 ; C 67 ; WX 685 ; N C67 ; B 99 0 600 700 ; C 68 ; WX 685 ; N C68 ; B 133 0 600 700 ; C 69 ; WX 618 ; N C69 ; B 133 0 532 700 ; C 70 ; WX 585 ; N C70 ; B 133 0 532 700 ; C 71 ; WX 685 ; N C71 ; B 99 0 600 700 ; C 72 ; WX 718 ; N C72 ; B 133 0 600 700 ; C 73 ; WX 284 ; N C73 ; B 133 0 166 700 ; C 74 ; WX 551 ; N C74 ; B 99 0 433 700 ; C 75 ; WX 685 ; N C75 ; B 133 0 600 700 ; C 76 ; WX 551 ; N C76 ; B 133 0 532 700 ; C 77 ; WX 784 ; N C77 ; B 133 0 666 700 ; C 78 ; WX 718 ; N C78 ; B 133 0 600 700 ; C 79 ; WX 718 ; N C79 ; B 99 0 633 700 ; C 80 ; WX 651 ; N C80 ; B 133 0 566 700 ; C 81 ; WX 718 ; N C81 ; B 99 -67 633 700 ; C 82 ; WX 651 ; N C82 ; B 133 0 566 700 ; C 83 ; WX 651 ; N C83 ; B 99 0 566 700 ; C 84 ; WX 551 ; N C84 ; B 66 0 500 700 ; C 85 ; WX 718 ; N C85 ; B 133 0 600 700 ; C 86 ; WX 651 ; N C86 ; B 66 0 600 700 ; C 87 ; WX 851 ; N C87 ; B 66 0 799 700 ; C 88 ; WX 651 ; N C88 ; B 99 0 566 700 ; C 89 ; WX 618 ; N C89 ; B 66 0 566 700 ; C 90 ; WX 651 ; N C90 ; B 99 0 566 700 ; C 91 ; WX 451 ; N C91 ; B 133 -233 366 833 ; C 92 ; WX 300 ; N C92 ; B 0 0 0 0 ; C 93 ; WX 451 ; N C93 ; B 99 -233 333 833 ; C 94 ; WX 300 ; N C94 ; B 0 0 0 0 ; C 95 ; WX 300 ; N C95 ; B 0 0 0 0 ; C 96 ; WX 318 ; N C96 ; B 133 500 199 700 ; C 97 ; WX 651 ; N C97 ; B 99 0 532 466 ; C 98 ; WX 651 ; N C98 ; B 133 0 566 700 ; C 99 ; WX 585 ; N C99 ; B 99 0 500 466 ; C 100 ; WX 651 ; N C100 ; B 99 0 532 700 ; C 101 ; WX 585 ; N C101 ; B 99 0 500 466 ; C 102 ; WX 451 ; N C102 ; B 99 0 366 700 ; C 103 ; WX 651 ; N C103 ; B 99 -233 532 466 ; C 104 ; WX 651 ; N C104 ; B 133 0 532 700 ; C 105 ; WX 284 ; N C105 ; B 99 0 199 700 ; C 106 ; WX 284 ; N C106 ; B 99 -233 199 700 ; C 107 ; WX 618 ; N C107 ; B 133 0 532 700 ; C 108 ; WX 284 ; N C108 ; B 133 0 166 700 ; C 109 ; WX 1018 ; N C109 ; B 133 0 899 466 ; C 110 ; WX 651 ; N C110 ; B 133 0 532 466 ; C 111 ; WX 618 ; N C111 ; B 99 0 532 466 ; C 112 ; WX 651 ; N C112 ; B 133 -233 566 466 ; C 113 ; WX 651 ; N C113 ; B 99 -233 532 466 ; C 114 ; WX 451 ; N C114 ; B 133 0 433 466 ; C 115 ; WX 551 ; N C115 ; B 99 0 466 466 ; C 116 ; WX 351 ; N C116 ; B 66 0 299 700 ; C 117 ; WX 651 ; N C117 ; B 133 0 532 466 ; C 118 ; WX 518 ; N C118 ; B 66 0 466 466 ; C 119 ; WX 784 ; N C119 ; B 99 0 700 466 ; C 120 ; WX 585 ; N C120 ; B 99 0 500 466 ; C 121 ; WX 518 ; N C121 ; B 66 -233 466 466 ; C 122 ; WX 585 ; N C122 ; B 99 0 500 466 ; C 123 ; WX 485 ; N C123 ; B 166 -233 333 833 ; C 124 ; WX 518 ; N C124 ; B 99 299 433 700 ; C 125 ; WX 485 ; N C125 ; B 166 -233 333 833 ; C 126 ; WX 818 ; N C126 ; B 99 0 733 700 ; EndCharMetrics EndFontMetrics gle-graphics-4.2.4c/src/fonts/texcmitt.gle0000664000000000000000000052041511676336540017225 0ustar rootrootdfont file_name="CMITT10" dfont font_name="CMITT10" dfont design= .35146 dfont slant= .25 dfont space= .184515 dfont stretch= 0 dfont shrink= 0 dfont x_hei= .151323 dfont quad= .369029 dfont extra_space= .184515 dfont paint="FILL" !------------------ end of main parameters dfont char=0 !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=.173612 set path ! start of curve newpath ! start of curve amove .215265 .21336 aline .21717 .212725 aline .21844 .21209 aline .22098 .20955 aline .22225 .20701 aline .222885 .205105 aline .222885 .202565 aline .213995 .167005 bezier .211028 .154375 .187171 .157427 .1905 .17145 aline .195342 .190818 aline .194945 .192405 aline .111125 .192405 aline .070485 .029845 aline .06858 .022225 aline .681038E-01 .212725E-01 aline .06858 .02032 aline .092075 .02032 bezier .101952 .175784E-01 .101131 .187479E-02 .09144 -.000635 aline .02159 -.000635 bezier .110784E-01 .152463E-02 .119106E-01 .176645E-01 .02159 .02032 aline .04318 .02032 aline .043815 .02159 aline .084455 .18415 aline .861219E-01 .190818 aline .085725 .192405 aline .06985 .192405 bezier .593384E-01 .194565 .601706E-01 .210704 .06985 .21336 closepath ! end of curve fill dfont endchar dfont char=1 !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=.173612 set path ! start of curve newpath ! start of curve amove .15494 .217805 aline .156845 .21717 aline .159385 .2159 aline .160655 .21463 aline .16129 .21336 aline .161925 .212725 bezier .167768 .144429 .169756 .075823 .174625 .00762 aline .17399 .005715 aline .17272 .003175 aline .170815 .00127 aline .167005 -.000635 aline .01778 -.000635 bezier .847396E-02 .575257E-02 .020652 .155104E-01 .02286 .02286 bezier .577559E-01 .849585E-01 .922782E-01 .147326 .127 .20955 aline .13208 .21463 aline .13335 .215265 aline .133985 .2159 aline .135255 .216535 aline .13716 .21717 aline .139065 .217805 closepath ! end of curve ! start of curve amove .139065 .188595 bezier .110207 .132587 .767644E-01 .770967E-01 .04826 .022225 aline .14859 .022225 bezier .146078 .778428E-01 .142829 .134128 .1397 .189865 closepath ! end of curve fill dfont endchar dfont char=2 !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=.173612 set path ! start of curve newpath ! start of curve amove .1651 .21717 bezier .180275 .216521 .203174 .212589 .205105 .19304 bezier .206389 .170307 .201506 .148244 .196215 .125095 aline .187325 .089535 bezier .17809 .600817E-01 .173112 .247563E-01 .14732 .00508 bezier .135764 -.200282E-02 .122221 -.322117E-02 .109855 -.004445 aline .07366 -.004445 bezier .580568E-01 -.405504E-02 .329561E-01 .620246E-03 .033655 .02159 bezier .316413E-01 .442339E-01 .376464E-01 .659244E-01 .042545 .0889 aline .051435 .12446 bezier .610258E-01 .154019 .657024E-01 .190805 .093345 .208915 bezier .104486 .215211 .117247 .215803 .128905 .21717 aline .1651 .21717 closepath ! end of curve ! start of curve amove .12954 .19558 bezier .110777 .19646 .935045E-01 .1835 .088265 .1651 bezier .826887E-01 .151316 .788497E-01 .136891 .07493 .122555 aline .066675 .089535 bezier .063174 .682156E-01 .536119E-01 .471876E-01 .061595 .02667 bezier .749363E-01 .122374E-01 .973009E-01 .017154 .114935 .017145 bezier .130654 .195195E-01 .144724 .299157E-01 .149225 .04572 bezier .155278 .595902E-01 .159109 .074349 .163195 .0889 aline .17145 .12192 bezier .175132 .143756 .185016 .165402 .17653 .18669 bezier .164226 .199019 .145344 .196277 .12954 .19558 closepath ! end of curve ! start of curve amove .10287 .128905 aline .10541 .12827 aline .10795 .127 aline .11049 .12446 aline .11176 .12192 aline .11176 .118745 aline .112395 .11811 aline .13208 .11811 bezier .132061 .133657 .159919 .13204 .15621 .116205 aline .14986 .090805 bezier .145675 .796238E-01 .125859 .819819E-01 .12573 .094615 aline .10668 .094615 bezier .106024 .800371E-01 .080287 .800168E-01 .081915 .09525 aline .088265 .12065 aline .0889 .122555 aline .09017 .125095 aline .09144 .126365 aline .09271 .127 aline .093345 .127635 aline .094615 .12827 aline .097155 .128905 closepath ! end of curve fill dfont endchar dfont char=3 !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=.173612 set path ! start of curve newpath ! start of curve amove .155575 .217805 aline .15748 .21717 aline .15875 .216535 aline .16129 .213995 aline .16256 .211455 aline .16256 .18161 aline .161925 .180975 aline .161925 .145415 aline .16129 .14478 aline .16129 .10922 aline .160655 .108585 aline .160655 .073025 aline .16002 .07239 aline .16002 .037465 aline .159385 .03683 aline .159385 .020955 aline .16002 .02032 aline .169545 .02032 bezier .180056 .180742E-01 .178954 .143102E-02 .16891 -.000635 aline .117475 -.000635 bezier .107572 .210012E-02 .108518 .017779 .11811 .02032 aline .13462 .02032 aline .135255 .020955 aline .135255 .03683 aline .13589 .037465 aline .13589 .06985 bezier .137192 .109667 .13815 .151027 .1397 .189865 bezier .115987 .132523 .857899E-01 .760844E-01 .06096 .02032 aline .07239 .02032 bezier .829013E-01 .180742E-01 .817994E-01 .143102E-02 .071755 -.000635 aline .02032 -.000635 bezier .010417 .210012E-02 .113629E-01 .017779 .020955 .02032 aline .03556 .02032 bezier .681124E-01 .843087E-01 .966727E-01 .15102 .13081 .213995 aline .13208 .21463 aline .132715 .215265 aline .136525 .21717 aline .13843 .217805 closepath ! end of curve fill dfont endchar dfont char=4 !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=.173612 set path ! start of curve newpath ! start of curve amove .21463 .21336 aline .216535 .212725 aline .217805 .21209 aline .220345 .20955 aline .221615 .20701 aline .22225 .205105 aline .22225 .202565 aline .21844 .187325 bezier .21605 .173006 .189184 .177849 .195421 .192723 aline .194945 .193675 aline .086995 .193675 aline .08636 .192405 aline .08509 .187325 bezier .828264E-01 .173672 .572572E-01 .177127 .061595 .19177 aline .065405 .20701 aline .06604 .20828 aline .066675 .208915 aline .06731 .210185 aline .06858 .211455 aline .07112 .212725 aline .07239 .21336 closepath ! end of curve ! start of curve amove .085725 .13335 aline .08763 .132715 aline .09017 .131445 aline .09271 .128905 aline .093345 .127635 aline .09398 .12573 aline .09398 .121285 aline .094615 .12065 aline .151765 .12065 bezier .150685 .134474 .17268 .138702 .17653 .12573 aline .17653 .121285 aline .17018 .095885 bezier .16719 .834602E-01 .143637 .865307E-01 .146685 .10033 aline .14605 .100965 aline .0889 .100965 bezier .08998 .871405E-01 .679852E-01 .829125E-01 .064135 .095885 aline .064135 .10033 aline .070485 .12573 aline .07112 .127635 aline .071755 .128905 aline .074295 .131445 aline .076835 .132715 aline .079375 .13335 closepath ! end of curve ! start of curve amove .034925 .03556 aline .03683 .034925 aline .0381 .03429 aline .04064 .03175 aline .04191 .02921 aline .042545 .027305 aline .042545 .024765 aline .415131E-01 .206375E-01 aline .04191 .01905 aline .15367 .01905 aline .15621 .02921 bezier .160281 .397945E-01 .181057 .375471E-01 .179705 .024765 aline .17526 .006985 aline .174625 .00508 aline .17399 .00381 aline .170815 .000635 aline .169545 0 aline .16764 -.000635 aline .02159 -.000635 aline .01905 .000635 aline .018415 .00127 aline .017145 .001905 aline .01651 .003175 aline .015875 .00381 aline .014605 .00635 aline .014605 .01143 aline .01905 .02921 aline .02032 .03175 aline .022225 .033655 aline .024765 .034925 aline .026035 .03556 closepath ! end of curve fill dfont endchar dfont char=5 !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=.173612 set path ! start of curve newpath ! start of curve amove .220345 .21336 bezier .230945 .211137 .229872 .19517 .220345 .192405 aline .202565 .192405 aline .161925 .029845 aline .16002 .022225 aline .159544 .212725E-01 aline .16002 .02032 aline .172085 .02032 bezier .182685 .180967E-01 .181612 .213014E-02 .172085 -.000635 aline .11684 -.000635 bezier .106672 .171945E-02 .10781 .182009E-01 .117475 .02032 aline .13462 .02032 aline .135255 .02159 aline .175895 .18415 aline .177562 .190818 aline .177165 .192405 aline .103505 .192405 aline .062865 .029845 aline .06096 .022225 aline .604838E-01 .212725E-01 aline .06096 .02032 aline .073025 .02032 bezier .836249E-01 .180967E-01 .825523E-01 .213014E-02 .073025 -.000635 aline .01778 -.000635 bezier .761161E-02 .171945E-02 .875022E-02 .182009E-01 .018415 .02032 aline .03556 .02032 aline .036195 .02159 aline .076835 .18415 aline .785019E-01 .190818 aline .078105 .192405 aline .06604 .192405 bezier .558716E-01 .194759 .570102E-01 .211241 .066675 .21336 closepath ! end of curve fill dfont endchar dfont char=6 !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=.173612 set path ! start of curve newpath ! start of curve amove .213995 .21336 aline .2159 .212725 aline .21717 .21209 aline .21971 .20955 aline .22098 .20701 aline .221615 .205105 aline .221615 .202565 aline .212725 .167005 bezier .209758 .154375 .185901 .157427 .18923 .17145 aline .194072 .190818 aline .193675 .192405 aline .09398 .192405 bezier .102135 .164232 .114792 .134567 .122555 .10541 bezier .111854 .869502E-01 .952364E-01 .071951 .08255 .05461 bezier .735159E-01 .436368E-01 .622772E-01 .318493E-01 .055245 .020955 aline .15113 .020955 aline .151765 .02159 aline .158115 .04699 bezier .161486 .058643 .18396 .558878E-01 .18161 .042545 aline .17272 .006985 aline .172085 .00508 aline .17145 .00381 aline .168275 .000635 aline .167005 0 aline .1651 -.000635 aline .02413 -.000635 bezier .149956E-01 .217101E-02 .156059E-01 .138416E-01 .022225 .01905 bezier .470109E-01 .488897E-01 .727545E-01 .783521E-01 .962819E-01 .108903 bezier .086255 .139146 .756913E-01 .16923 .065405 .19939 aline .065405 .20447 aline .06604 .20701 aline .066675 .20828 aline .06731 .208915 aline .067945 .210185 aline .069215 .211455 aline .071755 .212725 aline .073025 .21336 closepath ! end of curve fill dfont endchar dfont char=7 !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=.173612 set path ! start of curve newpath ! start of curve amove .11303 .21717 bezier .12601 .216296 .133915 .203381 .13462 .19177 aline .13462 .170815 aline .134239 .16891 aline .13462 .167005 bezier .143404 .191634 .162375 .222774 .19304 .216535 bezier .215113 .211445 .221439 .181265 .210185 .164465 aline .208915 .16383 aline .20828 .163195 aline .20447 .16129 aline .194945 .16129 bezier .185442 .165154 .192318 .176217 .192405 .18288 aline .192405 .186055 bezier .192592 .194688 .183997 .202744 .17526 .198755 bezier .150513 .1869 .145864 .155868 .137795 .13208 aline .136525 .127 aline .13589 .125095 aline .131445 .107315 aline .13081 .10668 aline .13081 .103505 aline .11049 .022225 aline .110014 .212725E-01 aline .11049 .02032 aline .126365 .02032 bezier .136927 .180564E-01 .135797 .145934E-02 .12573 -.000635 aline .0635 -.000635 bezier .536187E-01 .19719E-02 .543336E-01 .179667E-01 .064135 .02032 aline .08509 .02032 aline .085725 .02159 aline .107315 .10795 bezier .113468 .135735 .124579 .163133 .117475 .1905 bezier .111958 .204765 .933291E-01 .200512 .08763 .188595 bezier .811375E-01 .179861 .830535E-01 .165102 .07112 .16129 aline .061595 .16129 aline .059055 .16256 bezier .521756E-01 .172244 .625065E-01 .184451 .06731 .19304 bezier .759078E-01 .205222 .892896E-01 .21525 .10414 .21717 closepath ! end of curve fill dfont endchar dfont char=8 !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=.173612 set path ! start of curve newpath ! start of curve amove .17653 .21336 bezier .18713 .211137 .186057 .19517 .17653 .192405 aline .153035 .192405 aline .145018 .160338 bezier .151139 .156313 .161596 .157284 .16891 .153035 bezier .189627 .145413 .20584 .121423 .194945 .099695 bezier .181072 .711322E-01 .147952 .574262E-01 .118473 .534307E-01 aline .11811 .052705 aline .11049 .022225 aline .110014 .212725E-01 aline .11049 .02032 aline .12827 .02032 bezier .13887 .180967E-01 .137797 .213014E-02 .12827 -.000635 aline .061595 -.000635 bezier .514052E-01 .17173E-02 .525643E-01 .181649E-01 .06223 .02032 aline .08509 .02032 aline .085725 .02159 aline .093345 .05207 aline .938213E-01 .530225E-01 bezier .714423E-01 .564847E-01 .411911E-01 .687861E-01 .04064 .095885 bezier .393444E-01 .122852 .662199E-01 .14256 .089535 .151765 aline .09906 .15494 aline .1016 .155575 aline .103505 .15621 aline .11303 .158115 aline .11684 .158115 aline .117475 .15875 aline .120149 .159285 aline .128032 .190818 aline .127635 .192405 aline .109855 .192405 bezier .996652E-01 .194757 .100824 .211205 .11049 .21336 closepath ! end of curve ! start of curve amove .11303 .13716 bezier .928148E-01 .134066 .655199E-01 .12345 .064135 .099695 bezier .676984E-01 .841125E-01 .850834E-01 .769593E-01 .991507E-01 .752929E-01 aline .1143 .13589 aline .114776 .136843 aline .114512 .137372 aline .113983 .137636 aline .11303 .13716 closepath ! end of curve ! start of curve amove .139065 .136525 aline .13843 .133985 aline .124063 .765175E-01 aline .12446 .07493 bezier .144837 .788164E-01 .17508 .893183E-01 .17399 .114935 bezier .169052 .129128 .153177 .13557 .139488 .137372 closepath ! end of curve fill dfont endchar dfont char=9 !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=.173612 set path ! start of curve newpath ! start of curve amove .174625 .21336 bezier .185187 .211096 .184057 .194499 .17399 .192405 aline .153035 .192405 aline .12446 .078105 aline .123825 .07747 bezier .150193 .837484E-01 .16233 .113083 .16764 .137795 bezier .171369 .154809 .185666 .173474 .205105 .16764 bezier .215531 .163348 .210545 .145269 .19939 .14732 bezier .186552 .13299 .1884 .110849 .177165 .09525 bezier .165834 .072969 .143065 .570576E-01 .118491 .053467 aline .11811 .052705 aline .11049 .022225 aline .110014 .212725E-01 aline .11049 .02032 aline .126365 .02032 bezier .136927 .180564E-01 .135797 .145934E-02 .12573 -.000635 aline .0635 -.000635 bezier .536187E-01 .19719E-02 .543336E-01 .179667E-01 .064135 .02032 aline .08509 .02032 aline .085725 .02159 aline .937419E-01 .536575E-01 bezier .765339E-01 .587007E-01 .583468E-01 .731985E-01 .057785 .093345 bezier .537709E-01 .110776 .612915E-01 .128715 .062865 .14605 bezier .531049E-01 .147964 .496302E-01 .161614 .05842 .167005 bezier .694784E-01 .171648 .845666E-01 .165984 .08636 .153035 bezier .089321 .127939 .696337E-01 .1022 .088265 .080645 aline .089535 .08001 aline .09017 .079375 aline .09144 .07874 aline .092075 .078105 aline .09398 .07747 aline .09525 .076835 aline .098425 .757767E-01 aline .992188E-01 .760413E-01 aline .099695 .07747 aline .128032 .190818 aline .127635 .192405 aline .11176 .192405 bezier .101879 .195012 .102594 .211007 .112395 .21336 closepath ! end of curve fill dfont endchar dfont char=10 !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=.173612 set path ! start of curve newpath ! start of curve amove .151765 .21717 bezier .179156 .215575 .204834 .193527 .207645 .165735 bezier .211176 .11312 .167107 .076501 .144145 .03429 aline .14351 .033655 aline .13843 .023495 aline .137795 .02159 aline .13716 .020955 aline .137795 .02032 aline .158115 .02032 aline .15875 .02159 aline .160655 .02921 bezier .163137 .417949E-01 .183121 .372156E-01 .179705 .024765 aline .17526 .006985 aline .174625 .00508 aline .17399 .00381 aline .170815 .000635 aline .169545 0 aline .16764 -.000635 aline .118745 -.000635 bezier .105911 .449189E-02 .11439 .194278E-01 .117475 .028575 bezier .135611 .716887E-01 .173717 .104196 .18415 .150495 bezier .18703 .170231 .175156 .191795 .154305 .194945 bezier .114914 .202502 .741224E-01 .166084 .07112 .127 bezier .686348E-01 .847179E-01 .898733E-01 .455328E-01 .076835 .00381 aline .07366 .000635 aline .07239 0 aline .070485 -.000635 aline .02159 -.000635 aline .01905 .000635 aline .018415 .00127 aline .017145 .001905 aline .01651 .003175 aline .015875 .00381 aline .014605 .00635 aline .014605 .01143 aline .01905 .02921 bezier .215323E-01 .417949E-01 .415162E-01 .372156E-01 .0381 .024765 aline .037465 .022225 aline .369888E-01 .212725E-01 aline .037465 .02032 aline .05842 .02032 bezier .646012E-01 .567435E-01 .430165E-01 .923437E-01 .04826 .128905 bezier .508831E-01 .179776 .101912 .221035 .151765 .21717 closepath ! end of curve fill dfont endchar dfont char=11 !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=.173612 set path ! start of curve newpath ! start of curve amove .14605 .21336 bezier .156694 .208758 .155288 .193715 .163195 .186055 bezier .172044 .174373 .1844 .166278 .19812 .16129 bezier .209521 .153789 .196605 .135119 .18542 .14351 bezier .171065 .149274 .158367 .158271 .14859 .17018 aline .147955 .169545 aline .10795 .009525 bezier .105874 -.236343E-02 .871594E-01 -.469159E-02 .08382 .00762 aline .08382 .01397 aline .121682 .165418 aline .121285 .167005 bezier .105665 .155477 .873826E-01 .145206 .067945 .141605 bezier .549885E-01 .143956 .586441E-01 .164023 .07112 .16383 bezier .990512E-01 .172437 .120905 .19222 .140335 .212725 aline .141605 .21336 closepath ! end of curve ! start of curve amove .121285 .167005 aline .12192 .16637 aline .122555 .167005 aline .12192 .16764 aline .121285 .167005 closepath ! end of curve fill dfont endchar dfont char=12 !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=.173612 set path ! start of curve newpath ! start of curve amove .146685 .21336 aline .14859 .212725 aline .14986 .21209 aline .150495 .211455 aline .151765 .21082 aline .153035 .20955 aline .15494 .20574 aline .155575 .203835 aline .155575 .200025 aline .117475 .047625 aline .116999 .466725E-01 bezier .125487 .498609E-01 .136085 .593226E-01 .146685 .062865 bezier .155958 .659523E-01 .167076 .748263E-01 .17653 .06858 bezier .181336 .629647E-01 .17966 .524179E-01 .172085 .050165 bezier .142549 .419234E-01 .118952 .221179E-01 .09906 0 bezier .859786E-01 -.464024E-02 .850948E-01 .121665E-01 .08001 .019685 bezier .721284E-01 .368923E-01 .544817E-01 .452743E-01 .038735 .05334 bezier .316036E-01 .622062E-01 .434681E-01 .076606 .05334 .069215 bezier .680136E-01 .634437E-01 .810385E-01 .542676E-01 .090805 .04191 aline .131445 .20447 aline .13335 .20828 aline .13589 .21082 aline .13716 .211455 aline .137795 .21209 aline .139065 .212725 aline .141605 .21336 closepath ! end of curve fill dfont endchar dfont char=13 !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=.173612 set path ! start of curve newpath ! start of curve amove .14732 .21717 bezier .160276 .215117 .160532 .199967 .155575 .1905 bezier .147687 .166674 .141167 .14233 .132715 .118745 bezier .125914 .10773 .107251 .118301 .1143 .12954 bezier .118112 .155277 .123718 .1802 .12827 .20574 aline .130175 .20955 aline .13081 .210185 aline .131445 .211455 aline .13335 .21336 aline .13462 .213995 aline .135255 .21463 aline .139065 .216535 aline .141605 .21717 closepath ! end of curve fill dfont endchar dfont char=14 !-------------- Beginning of new char. dfont wid=.524996 hei=.388888 dep=.222223 italic=.173612 set path ! start of curve newpath ! start of curve amove .127635 .135255 bezier .145405 .13173 .142099 .105789 .126365 .1016 bezier .113591 .967676E-01 .100953 .110019 .106045 .122555 aline .10795 .126365 aline .10922 .127635 aline .109855 .128905 aline .111125 .130175 aline .112395 .13081 aline .113665 .13208 aline .118745 .13462 aline .121285 .135255 closepath ! end of curve ! start of curve amove .114935 .070485 bezier .128199 .651473E-01 .118393 .493547E-01 .117475 .03937 bezier .108237 .161246E-02 .102325 -.373302E-01 .090805 -.074295 bezier .832559E-01 -.086359 .614752E-01 -.852886E-01 .059055 -.06985 bezier .681814E-01 -.250165E-01 .831697E-01 .189975E-01 .094615 .0635 aline .09652 .06731 aline .09779 .06858 aline .09906 .069215 aline .099695 .06985 aline .1016 .070485 closepath ! end of curve fill dfont endchar dfont char=15 !-------------- Beginning of new char. dfont wid=.524996 hei=.388888 dep=.222223 italic=.173612 set path ! start of curve newpath ! start of curve amove .127635 .135255 bezier .145405 .13173 .142099 .105789 .126365 .1016 bezier .113591 .967676E-01 .100953 .110019 .106045 .122555 aline .10795 .126365 aline .10922 .127635 aline .109855 .128905 aline .111125 .130175 aline .112395 .13081 aline .113665 .13208 aline .118745 .13462 aline .121285 .135255 closepath ! end of curve ! start of curve amove .11303 .070485 bezier .135037 .669201E-01 .139052 .377435E-01 .12573 .02286 bezier .103974 .651787E-03 .698233E-01 -.00499 .048895 -.02794 bezier .388532E-01 -.396914E-01 .468123E-01 -.572033E-01 .061595 -.05969 bezier .841443E-01 -.650654E-01 .111287 -.581457E-01 .127635 -.040005 bezier .117462 -.244422E-01 .143087 -.60301E-02 .154305 -.02159 bezier .161544 -.411751E-01 .143008 -.597768E-01 .127635 -.069215 bezier .998472E-01 -.837461E-01 .638541E-01 -.899257E-01 .03683 -.07112 bezier .176049E-01 -.568907E-01 .018112 -.274085E-01 .033655 -.010795 bezier .543332E-01 .118919E-01 .870748E-01 .018493 .10922 .038735 aline .109855 .040005 aline .11049 .04191 aline .111125 .042545 aline .111125 .047625 bezier .103497 .524738E-01 .091807 .046828 .085725 .04064 aline .08509 .03937 aline .084455 .038735 bezier .837372E-01 .247202E-01 .585604E-01 .246576E-01 .05969 .03937 bezier .639043E-01 .578684E-01 .829596E-01 .683214E-01 .10033 .070485 closepath ! end of curve fill dfont endchar dfont char=16 !-------------- Beginning of new char. dfont wid=.524996 hei=.430555 dep=0 italic=.173612 set path ! start of curve newpath ! start of curve amove .111125 .151765 bezier .13167 .150651 .146866 .127092 .13716 .10795 bezier .12714 .811876E-01 .115141 .550932E-01 .106299 .02794 bezier .108091 .133058E-01 .126845 .183745E-01 .133985 .026035 bezier .142969 .341022E-01 .146182 .460031E-01 .15113 .056515 bezier .159243 .634464E-01 .176437 .573677E-01 .17145 .045085 bezier .163568 .148859E-01 .129476 -.141159E-01 .09779 .001905 bezier .809662E-01 .109433E-01 .788893E-01 .329164E-01 .088265 .04826 bezier .974537E-01 .715714E-01 .106359 .09519 .116205 .11811 bezier .119072 .130387 .10299 .134153 .09525 .127635 bezier .824621E-01 .120959 .768811E-01 .106952 .07239 .09398 bezier .647063E-01 .848771E-01 .455547E-01 .918013E-01 .051435 .104775 bezier .589129E-01 .130644 .828085E-01 .154333 .111125 .151765 closepath ! end of curve fill dfont endchar dfont char=17 !-------------- Beginning of new char. dfont wid=.524996 hei=.430555 dep=.222223 italic=.173612 set path ! start of curve newpath ! start of curve amove .139065 .151765 bezier .158572 .149873 .174022 .130687 .16891 .111125 aline .13589 -.020955 bezier .126902 -.056228 .929988E-01 -.877506E-01 .055245 -.08001 bezier .406822E-01 -.793536E-01 .270961E-01 -.065594 .033655 -.0508 bezier .387224E-01 -.354078E-01 .656182E-01 -.382475E-01 .0635 -.05588 aline .631031E-01 -.574675E-01 aline .0635 -.059055 bezier .880638E-01 -.632937E-01 .106604 -.380947E-01 .112395 -.01651 aline .145415 .11557 bezier .14945 .126501 .134883 .134479 .12573 .12954 bezier .107254 .125 .979306E-01 .107251 .089535 .092075 bezier .809939E-01 .861242E-01 .653823E-01 .925319E-01 .070485 .10414 bezier .801745E-01 .128024 .101701 .148263 .127635 .151765 closepath ! end of curve fill dfont endchar dfont char=18 !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=.173612 set path ! start of curve newpath ! start of curve amove .107315 .21336 bezier .124644 .204311 .143797 .196661 .159385 .18542 bezier .165178 .177572 .154631 .16363 .145415 .167005 aline .125095 .177165 aline .12446 .1778 aline .1016 .18923 aline .100965 .189865 aline .097155 .19177 aline .09398 .194945 aline .09271 .197485 aline .09271 .20447 aline .094615 .20828 aline .09779 .211455 aline .10033 .212725 aline .102235 .21336 closepath ! end of curve fill dfont endchar dfont char=19 !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=.173612 set path ! start of curve newpath ! start of curve amove .184785 .21336 bezier .19825 .21051 .194968 .19052 .182245 .18923 bezier .162563 .181771 .143427 .171584 .12319 .16637 bezier .110565 .169288 .111571 .190115 .125095 .191135 bezier .14329 .198564 .161433 .206117 .179705 .21336 closepath ! end of curve fill dfont endchar dfont char=20 !-------------- Beginning of new char. dfont wid=.524996 hei=.565973 dep=0 italic=.173612 set path ! start of curve newpath ! start of curve amove .09779 .19939 bezier .110565 .193864 .124327 .186479 .136525 .182245 bezier .153783 .187437 .170122 .197201 .18796 .19939 bezier .197308 .196288 .198828 .179632 .188595 .17653 aline .180975 .17399 aline .179705 .173355 aline .160655 .167005 bezier .148441 .163585 .135356 .154083 .12319 .16256 bezier .110271 .168973 .950247E-01 .171835 .08382 .180975 aline .083185 .182245 aline .08255 .184785 aline .08255 .187325 aline .083185 .18923 aline .084455 .19177 aline .08509 .192405 aline .08636 .194945 aline .089535 .19812 aline .090805 .198755 aline .092075 .19939 closepath ! end of curve fill dfont endchar dfont char=21 !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=.173612 set path ! start of curve newpath ! start of curve amove .095885 .21336 aline .09779 .212725 aline .09906 .21209 aline .1016 .20955 aline .10287 .20701 aline .103505 .205105 aline .103505 .202565 aline .103108 .200978 aline .103414 .199753 aline .10541 .198755 aline .107315 .19812 aline .109855 .197485 aline .11049 .19685 aline .1143 .19685 aline .114935 .196215 aline .12192 .196215 aline .122555 .19558 aline .15621 .19558 bezier .166213 .197377 .182499 .196243 .18542 .20955 bezier .192914 .219442 .210525 .209716 .203835 .19812 bezier .197003 .179258 .174465 .174943 .15748 .17399 aline .120015 .17399 bezier .106078 .175034 .854501E-01 .177551 .081915 .194945 aline .081915 .20447 aline .08255 .20701 aline .083185 .20828 aline .08382 .208915 aline .084455 .210185 aline .085725 .211455 aline .088265 .212725 aline .089535 .21336 closepath ! end of curve fill dfont endchar dfont char=22 !-------------- Beginning of new char. dfont wid=.524996 hei=.565555 dep=0 italic=.173612 set path ! start of curve newpath ! start of curve amove .19939 .201295 bezier .210301 .19904 .208886 .181936 .198755 .179705 aline .080645 .179705 bezier .706391E-01 .182607 .717049E-01 .198475 .08128 .201295 closepath ! end of curve fill dfont endchar dfont char=23 !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=.173612 set path ! start of curve newpath ! start of curve amove .15113 .216535 bezier .165331 .216209 .173934 .198973 .164465 .18796 bezier .153365 .172827 .123677 .16743 .114935 .187325 bezier .11242 .203257 .128041 .214529 .14224 .216535 closepath ! end of curve ! start of curve amove .140335 .20574 bezier .130628 .205226 .121769 .190754 .13335 .186055 bezier .143105 .180392 .161941 .192931 .1524 .203835 aline .14986 .205105 aline .147955 .20574 aline .14732 .206375 aline .14097 .206375 closepath ! end of curve fill dfont endchar dfont char=24 !-------------- Beginning of new char. dfont wid=.524996 hei=0 dep=.194446 italic=.173612 set path ! start of curve newpath ! start of curve amove .109855 .014605 aline .11176 .01397 aline .11303 .013335 aline .11557 .010795 aline .11684 .008255 aline .117475 .005715 aline .117475 .004445 aline .11684 .00127 aline .11557 -.00381 aline .114935 -.004445 bezier .13109 -.797551E-02 .145886 -.235617E-01 .14097 -.04064 bezier .134568 -.665845E-01 .103757 -.072273 .081915 -.07366 aline .055245 -.07366 bezier .427369E-01 -.788439E-01 .360757E-01 -.577806E-01 .04826 -.05334 bezier .709643E-01 -.507929E-01 .970762E-01 -.571632E-01 .11557 -.04064 bezier .121093 -.337197E-01 .115031 -.259315E-01 .107315 -.0254 aline .10668 -.024765 aline .103505 -.024765 aline .10287 -.02413 aline .095885 -.02413 aline .092075 -.022225 aline .090805 -.020955 aline .0889 -.017145 aline .0889 -.012065 aline .09398 .008255 aline .09525 .010795 aline .097155 .0127 aline .099695 .01397 aline .100965 .014605 closepath ! end of curve fill dfont endchar dfont char=25 !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=.222223 italic=.173612 set path ! start of curve newpath ! start of curve amove .158115 .215265 bezier .176212 .214865 .199073 .200945 .19304 .179705 bezier .1871 .158391 .183138 .133429 .164465 .11938 bezier .155675 .112085 .145945 .100589 .154305 .089535 bezier .161453 .789589E-01 .171633 .694602E-01 .173355 .05588 bezier .177123 .249841E-01 .147261 -.129725E-01 .1143 0 bezier .965674E-01 .47639E-02 .089803 .350119E-01 .10922 .04191 aline .116205 .04191 aline .11811 .041275 aline .12065 .040005 aline .123825 .03683 aline .12573 .03302 aline .12573 .026035 aline .125095 .02413 aline .123349 .206375E-01 bezier .133821 .131739E-01 .144269 .028696 .14732 .0381 bezier .157346 .564573E-01 .13553 .682153E-01 .130175 .08382 bezier .124621 .975886E-01 .127445 .11446 .137795 .125095 bezier .14937 .135813 .160946 .146939 .16383 .163195 aline .1651 .167005 aline .16637 .172085 aline .167005 .17399 aline .169545 .18415 bezier .171217 .192055 .159975 .192984 .15494 .19431 aline .1397 .19431 aline .139065 .193675 aline .13462 .193675 aline .133985 .19304 aline .13081 .192405 aline .128905 .19177 aline .126365 .1905 aline .12192 .186055 aline .11938 .180975 aline .117475 .17526 aline .116205 .17018 aline .095885 .06858 aline .09525 .067945 aline .09525 .06477 aline .08763 .02667 bezier .786166E-01 -.719332E-02 .774981E-01 -.465471E-01 .05334 -.07366 bezier .406466E-01 -.866844E-01 .147891E-01 -.809867E-01 .0127 -.061595 bezier .950916E-02 -.484025E-01 .206356E-01 -.032809 .034925 -.037465 aline .038735 -.03937 aline .041275 -.04191 aline .04191 -.04318 aline .042545 -.043815 aline .04318 -.045085 aline .043688 -.046609 bezier .551408E-01 -.144534E-01 .622248E-01 .229252E-01 .069215 .05715 aline .083185 .127 aline .836613E-01 .127953 aline .083185 .128905 aline .06477 .128905 bezier .548887E-01 .131512 .556036E-01 .147507 .065405 .14986 aline .08763 .14986 bezier .923398E-01 .1726 .948931E-01 .202038 .120015 .211455 aline .12573 .21336 aline .12827 .213995 aline .131445 .213995 aline .13208 .21463 aline .136525 .21463 aline .13716 .215265 aline .158115 .215265 closepath ! end of curve fill dfont endchar dfont char=26 !-------------- Beginning of new char. dfont wid=.524996 hei=.430555 dep=0 italic=.173612 set path ! start of curve newpath ! start of curve amove .130175 .1524 aline .13208 .151765 aline .13335 .15113 aline .136525 .147955 aline .13843 .144145 aline .13843 .1397 bezier .151701 .149377 .175203 .158781 .1905 .14478 bezier .212226 .122556 .197525 .831676E-01 .169545 .074295 bezier .153768 .671896E-01 .136102 .653514E-01 .120015 .06604 bezier .116409 .507469E-01 .116787 .296613E-01 .131445 .019685 bezier .148576 .154845E-01 .167249 .246563E-01 .179705 .03683 aline .18161 .037465 aline .186055 .037465 aline .189865 .03556 bezier .199862 .251192E-01 .184806 .146615E-01 .17653 .009525 bezier .156555 -.415304E-02 .122374 -.106966E-01 .10795 .01397 aline .106998 .144463E-01 aline .106589 .142421E-01 aline .10414 .004445 bezier .101039 -.674075E-02 .847571E-01 -.312356E-02 .841375E-01 .746125E-02 bezier .654716E-01 -.113803E-01 .299041E-01 -.218483E-02 .02286 .023495 bezier .148021E-01 .601019E-01 .410971E-01 .949359E-01 .06731 .11811 bezier .846917E-01 .132388 .104356 .144196 .12573 .1524 closepath ! end of curve ! start of curve amove .16637 .130175 bezier .146439 .124781 .132405 .105219 .126365 .086995 bezier .144659 .874902E-01 .167801 .895252E-01 .17907 .10668 bezier .184863 .116261 .180561 .133174 .167005 .13081 closepath ! end of curve ! start of curve amove .11176 .122555 bezier .789024E-01 .104369 .469369E-01 .728992E-01 .04445 .033655 bezier .453556E-01 .230047E-01 .577591E-01 .136372E-01 .06731 .020955 bezier .857604E-01 .329279E-01 .955683E-01 .542333E-01 .1016 .07493 aline .11303 .12065 aline .113453 .12192 aline .113157 .122809 aline .112713 .123031 closepath ! end of curve fill dfont endchar dfont char=27 !-------------- Beginning of new char. dfont wid=.524996 hei=.430555 dep=0 italic=.173612 set path ! start of curve newpath ! start of curve amove .09398 .153035 bezier .110084 .153107 .120161 .137328 .123825 .12319 bezier .137353 .142301 .164758 .161304 .18796 .146685 bezier .213208 .126204 .198613 .831115E-01 .169545 .074295 bezier .153768 .671896E-01 .136102 .653514E-01 .120015 .06604 bezier .116409 .507469E-01 .116787 .296613E-01 .131445 .019685 bezier .148576 .154845E-01 .167249 .246563E-01 .179705 .03683 aline .18161 .037465 aline .186055 .037465 aline .189865 .03556 bezier .199862 .251192E-01 .184806 .146615E-01 .17653 .009525 bezier .156263 -.445088E-02 .121711 -.105444E-01 .107315 .014605 aline .103505 .022225 aline .102235 .026035 aline .1016 .02667 bezier .895564E-01 .770991E-02 .652522E-01 -.132552E-01 .042545 .00127 bezier .198781E-01 .206825E-01 .237534E-01 .054425 .029845 .08001 bezier .387346E-01 .10982 .553121E-01 .142703 .086995 .1524 aline .092075 .1524 aline .09271 .153035 aline .09398 .153035 closepath ! end of curve ! start of curve amove .0889 .13081 bezier .06329 .115762 .541677E-01 .827006E-01 .048895 .05588 bezier .484569E-01 .429354E-01 .470557E-01 .276808E-01 .05715 .01778 bezier .076352 .187776E-01 .863488E-01 .394456E-01 .094615 .05461 bezier .103578 .788211E-01 .113485 .107204 .09779 .130175 aline .09652 .13081 aline .095885 .131445 aline .089535 .131445 closepath ! end of curve ! start of curve amove .16637 .130175 bezier .146439 .124781 .132405 .105219 .126365 .086995 bezier .144659 .874902E-01 .167801 .895252E-01 .17907 .10668 bezier .184863 .116261 .180561 .133174 .167005 .13081 closepath ! end of curve fill dfont endchar dfont char=28 !-------------- Beginning of new char. dfont wid=.524996 hei=.541667 dep=.111112 italic=.173612 set path ! start of curve newpath ! start of curve amove .193675 .19939 bezier .204391 .196841 .203705 .183542 .196215 .1778 bezier .186651 .16264 .173704 .147501 .165735 .132715 bezier .191758 .852827E-01 .161751 .020421 .113665 0 bezier .100178 -.546239E-02 .846596E-01 -.416298E-02 .07239 .00127 bezier .060506 -.151608E-01 .498425E-01 -.329374E-01 .03683 -.04826 bezier .268125E-01 -.543869E-01 .150992E-01 -.403739E-01 .023495 -.03175 bezier .348474E-01 -.159039E-01 .461576E-01 -.274235E-04 .569913E-01 .161925E-01 bezier .302306E-01 .644019E-01 .617691E-01 .131897 .112395 .150495 bezier .124925 .154432 .138801 .153 .14986 .147955 bezier .161347 .164576 .172804 .18122 .184785 .197485 aline .187325 .198755 aline .188595 .19939 closepath ! end of curve ! start of curve amove .121285 .13081 bezier .827826E-01 .120237 .580593E-01 .726496E-01 .06985 .03556 bezier .838949E-01 .518712E-01 .970778E-01 .742858E-01 .111125 .09271 bezier .119144 .105226 .129856 .118208 .136525 .130175 aline .133985 .13081 aline .13335 .131445 aline .12192 .131445 closepath ! end of curve ! start of curve amove .15113 .11303 bezier .128789 .821512E-01 .107649 .504064E-01 .08509 .019685 bezier .109059 .117671E-01 .132239 .332041E-01 .14351 .052705 bezier .154045 .713658E-01 .161173 .943711E-01 .152083 .114141 aline .151553 .113877 closepath ! end of curve fill dfont endchar dfont char=29 !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=.173612 set path ! start of curve newpath ! start of curve amove .216535 .21336 aline .21844 .212725 aline .21971 .21209 aline .22225 .20955 aline .22352 .20701 aline .224155 .205105 aline .224155 .202565 aline .215265 .167005 bezier .212783 .15442 .192799 .158999 .196215 .17145 aline .201057 .190818 aline .20066 .192405 aline .16129 .192405 aline .143748 .122238 aline .144145 .12065 aline .18796 .12065 bezier .197841 .118043 .197126 .102048 .187325 .099695 aline .13843 .099695 aline .137795 .098425 aline .118745 .022225 aline .118269 .212725E-01 aline .118745 .02032 aline .160655 .02032 aline .16129 .02159 aline .16891 .05207 bezier .171702 .637039E-01 .190546 .594047E-01 .18796 .047625 aline .1778 .006985 aline .177165 .00508 aline .17653 .00381 aline .173355 .000635 aline .172085 0 aline .17018 -.000635 aline .0889 -.000635 aline .08509 .00127 aline .08382 .00254 aline .081915 .00635 aline .081915 .01143 aline .08255 .01397 aline .08382 .01651 aline .085725 .018415 aline .089535 .02032 aline .09779 .02032 aline .098425 .02159 aline .108585 .06223 aline .10922 .062865 aline .108585 .0635 aline .070485 .0635 bezier .637552E-01 .495335E-01 .561463E-01 .345854E-01 .051435 .02032 bezier .064946 .240999E-01 .691326E-01 .272448E-02 .056515 -.000635 aline .018415 -.000635 bezier .785331E-02 .162863E-02 .898264E-02 .182257E-01 .01905 .02032 aline .03048 .02032 bezier .565005E-01 .772347E-01 .083453 .135855 .10795 .192405 aline .10414 .192405 aline .10033 .19431 aline .098425 .196215 aline .097155 .198755 aline .097155 .205105 aline .09779 .20701 aline .09906 .20955 aline .1016 .21209 aline .10287 .212725 aline .104775 .21336 closepath ! end of curve ! start of curve amove .127635 .191135 bezier .112054 .155675 .945439E-01 .119234 .08001 .084455 aline .113665 .084455 aline .1143 .08509 aline .140732 .190818 aline .140335 .192405 aline .12827 .192405 closepath ! end of curve fill dfont endchar dfont char=30 !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=.173612 set path ! start of curve newpath ! start of curve amove .131445 .21717 aline .13208 .216535 aline .13589 .216535 aline .14224 .215265 aline .142875 .21463 aline .14605 .21463 aline .146685 .213995 aline .150495 .213995 aline .15113 .21336 aline .217805 .21336 aline .21971 .212725 aline .22098 .21209 aline .22352 .20955 aline .22479 .20701 aline .225425 .205105 aline .225425 .202565 aline .216535 .167005 bezier .214053 .15442 .194069 .158999 .197485 .17145 aline .202327 .190818 aline .20193 .192405 aline .160655 .192405 aline .143113 .122238 aline .14351 .12065 aline .189865 .12065 bezier .199746 .118043 .199031 .102048 .18923 .099695 aline .137795 .099695 aline .13716 .098425 aline .11811 .022225 aline .117634 .212725E-01 aline .11811 .02032 aline .161925 .02032 aline .16256 .02159 aline .17018 .05207 bezier .172972 .637039E-01 .191816 .594047E-01 .18923 .047625 aline .17907 .006985 aline .178435 .00508 aline .1778 .00381 aline .174625 .000635 aline .173355 0 aline .17145 -.000635 aline .097155 -.000635 bezier .762916E-01 -.475196E-02 .051484 -.833415E-02 .031115 .00254 bezier .174706E-01 .014421 .234508E-01 .035683 .0254 .050165 bezier .262569E-01 .620624E-01 .299073E-01 .743578E-01 .032385 .08636 aline .04191 .12446 bezier .509309E-01 .152856 .552684E-01 .186255 .078105 .20701 bezier .940382E-01 .218073 .112882 .217039 .131445 .21717 closepath ! end of curve ! start of curve amove .111125 .19558 bezier .931724E-01 .196361 .782774E-01 .182216 .07366 .1651 aline .06731 .14605 aline .066675 .14351 aline .06604 .141605 aline .065405 .139065 aline .06477 .13716 aline .062865 .12954 aline .06223 .127635 aline .05334 .092075 bezier .497415E-01 .696827E-01 .395558E-01 .478313E-01 .04699 .026035 bezier .594778E-01 .140729E-01 .828554E-01 .120483E-01 .09525 .0254 aline .099695 .03429 aline .10033 .036195 aline .100965 .037465 aline .103505 .045085 aline .10414 .047625 aline .104775 .04953 aline .13335 .16383 bezier .135115 .173555 .141005 .190513 .127635 .194945 aline .125095 .19558 aline .12446 .196215 aline .11176 .196215 aline .111125 .19558 closepath ! end of curve fill dfont endchar dfont char=31 !-------------- Beginning of new char. dfont wid=.524996 hei=.666667 dep=.0555553 italic=.173612 set path ! start of curve newpath ! start of curve amove .19304 .243205 bezier .201586 .242381 .205576 .231444 .19939 .225425 aline .197485 .221615 aline .19685 .22098 aline .194945 .21717 aline .19431 .216535 aline .191929 .211773 bezier .20271 .206803 .20691 .193268 .205105 .18288 bezier .205097 .163407 .200585 .144778 .196215 .125095 aline .187325 .089535 bezier .17809 .600817E-01 .173112 .247563E-01 .14732 .00508 bezier .135764 -.200282E-02 .122221 -.322117E-02 .109855 -.004445 aline .07366 -.004445 bezier .651352E-01 -.127407E-02 .638921E-01 -.148203E-01 .059055 -.019685 bezier .570998E-01 -.297457E-01 .043435 -.348951E-01 .037465 -.0254 bezier .03151 -.153886E-01 .467206E-01 -.665457E-02 .045085 .001905 bezier .274214E-01 .125122E-01 .033271 .367903E-01 .03556 .052705 aline .03556 .05588 aline .036195 .056515 aline .036195 .05969 aline .0381 .069215 aline .038735 .071755 aline .040005 .078105 aline .04191 .085725 aline .042545 .0889 aline .051435 .12446 bezier .610258E-01 .154019 .657024E-01 .190805 .093345 .208915 bezier .104486 .215211 .117247 .215803 .128905 .21717 aline .1651 .21717 aline .165735 .216535 aline .17018 .216535 bezier .176653 .225208 .178971 .238522 .18923 .243205 closepath ! end of curve ! start of curve amove .127 .19558 bezier .106206 .196969 .879079E-01 .181286 .08255 .16129 aline .081915 .159385 aline .08128 .158115 aline .0762 .142875 aline .075565 .140335 aline .074295 .136525 aline .07366 .133985 aline .073025 .13208 aline .07112 .12446 aline .070485 .122555 aline .062865 .092075 bezier .591738E-01 .698584E-01 .487698E-01 .474539E-01 .05842 .026035 aline .059055 .0254 bezier .647443E-01 .284435E-01 .670945E-01 .387486E-01 .071755 .04445 bezier .100356 .947489E-01 .128916 .145077 .158115 .194945 aline .15621 .19558 aline .155575 .196215 aline .127635 .196215 aline .127 .19558 closepath ! end of curve ! start of curve amove .1778 .187325 bezier .145639 .130807 .112287 .741304E-01 .810683E-01 .175683E-01 bezier .103287 .154927E-01 .131106 .134204E-01 .146685 .03302 bezier .157357 .499083E-01 .162159 .697857E-01 .16764 .0889 aline .175895 .12192 bezier .179628 .143062 .188261 .163532 .18161 .18415 aline .180975 .184785 aline .18034 .186055 aline .179705 .18669 aline .17907 .18796 aline .178435 .188595 closepath ! end of curve fill dfont endchar dfont char=32 !-------------- Beginning of new char. dfont wid=.524996 hei=.219444 dep=.111112 italic=.173612 set path ! start of curve newpath ! start of curve amove .046355 .083185 aline .047625 .08255 aline .04953 .080645 aline .050165 .07874 aline .050165 .076835 aline .023495 -.029845 aline .230717E-01 -.031115 aline .023495 -.032385 aline .14605 -.032385 aline .146685 -.03048 aline .173355 .0762 bezier .174611 .838656E-01 .189131 .866612E-01 .188595 .076835 aline .159385 -.040005 aline .158115 -.042545 aline .15494 -.04572 aline .15367 -.046355 aline .151765 -.04699 aline .009525 -.04699 aline .008255 -.046355 aline .006985 -.045085 aline .005715 -.042545 aline .005715 -.04064 aline .034925 .0762 aline .036195 .07874 aline .03683 .079375 aline .037465 .080645 aline .038735 .08128 aline .03937 .081915 aline .04064 .08255 aline .042545 .083185 aline .046355 .083185 closepath ! end of curve fill dfont endchar dfont char=33 !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=.173612 set path ! start of curve newpath ! start of curve amove .147955 .21717 bezier .161392 .21476 .162873 .19885 .15748 .188595 bezier .145647 .148063 .136164 .106422 .122555 .066675 aline .121285 .06604 aline .12065 .065405 aline .11811 .064135 aline .104775 .064135 bezier .092032 .686328E-01 .10034 .839706E-01 .1016 .093345 bezier .110717 .131327 .117215 .170439 .12827 .207645 aline .128905 .208915 aline .133985 .213995 aline .139065 .216535 aline .141605 .21717 closepath ! end of curve ! start of curve amove .102235 .033655 bezier .119268 .304102E-01 .117201 .546543E-02 .102235 .000635 bezier .894218E-01 -.57657E-02 .752648E-01 .789297E-02 .080645 .020955 aline .08255 .024765 aline .08382 .026035 aline .084455 .027305 aline .085725 .028575 aline .086995 .02921 aline .088265 .03048 aline .093345 .03302 aline .095885 .033655 closepath ! end of curve fill dfont endchar dfont char=34 !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=.173612 set path ! start of curve newpath ! start of curve amove .116205 .21717 bezier .129194 .214756 .128765 .199233 .123825 .189865 bezier .116219 .165957 .109638 .141631 .100965 .11811 bezier .942869E-01 .109615 .787749E-01 .115868 .081915 .127 bezier .878585E-01 .154113 .910124E-01 .182011 .098425 .208915 aline .09906 .20955 aline .099695 .21082 aline .10287 .213995 aline .10414 .21463 aline .104775 .215265 aline .106045 .2159 aline .10795 .216535 aline .109855 .21717 closepath ! end of curve ! start of curve amove .17907 .21717 aline .180975 .216535 aline .184785 .21463 bezier .196716 .203805 .184187 .187921 .182245 .17526 bezier .174839 .155878 .171779 .134229 .161925 .116205 bezier .153798 .110316 .1417 .1175 .14478 .127635 bezier .151121 .154996 .153393 .183385 .161925 .210185 aline .165735 .213995 aline .167005 .21463 aline .16764 .215265 aline .16891 .2159 aline .170815 .216535 aline .17272 .21717 closepath ! end of curve fill dfont endchar dfont char=35 !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=.173612 set path ! start of curve newpath ! start of curve amove .127 .21336 bezier .138142 .210647 .138032 .197243 .132715 .18923 bezier .1292 .178523 .123683 .166904 .121285 .156845 aline .15621 .156845 bezier .162489 .173808 .168595 .190842 .17526 .207645 bezier .18236 .219812 .202379 .210755 .197485 .197485 bezier .192797 .184078 .186317 .169657 .18288 .156845 aline .198755 .156845 bezier .211487 .154665 .211487 .134895 .198755 .132715 aline .17272 .132715 bezier .166789 .115401 .15899 .978194E-01 .154305 .080645 aline .179705 .080645 bezier .192437 .784655E-01 .192437 .586945E-01 .179705 .056515 aline .144145 .056515 bezier .137447 .392149E-01 .131436 .216302E-01 .12446 .004445 bezier .117486 -.641372E-02 .099198 .142742E-02 .102235 .01397 bezier .106864 .028123 .113615 .431561E-01 .117475 .056515 aline .08255 .056515 bezier .758517E-01 .392149E-01 .698405E-01 .216302E-01 .062865 .004445 bezier .558912E-01 -.641372E-02 .037603 .142742E-02 .04064 .01397 bezier .452689E-01 .028123 .520205E-01 .431561E-01 .05588 .056515 aline .03937 .056515 bezier .027043 .589457E-01 .027043 .782143E-01 .03937 .080645 aline .065405 .080645 bezier .723402E-01 .973987E-01 .079305 .116216 .084455 .132715 aline .05842 .132715 bezier .046093 .135146 .046093 .154414 .05842 .156845 aline .094615 .156845 bezier .100894 .173808 .107 .190842 .113665 .207645 aline .117475 .211455 aline .120015 .212725 aline .12192 .21336 closepath ! end of curve ! start of curve amove .11049 .13081 bezier .104654 .114179 .972093E-01 .971731E-01 .09271 .080645 aline .127 .080645 bezier .133935 .973987E-01 .1409 .116216 .14605 .132715 aline .111125 .132715 closepath ! end of curve fill dfont endchar dfont char=36 !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=.173612 set path ! start of curve newpath ! start of curve amove .155575 .216535 bezier .172264 .216759 .18526 .200621 .186055 .184785 aline .186055 .170815 aline .18542 .17018 bezier .18772 .155965 .174349 .13833 .159385 .146685 bezier .148769 .152872 .152513 .169355 .16256 .17399 aline .16256 .1778 aline .162941 .179705 aline .16256 .18161 aline .16256 .18669 aline .161925 .187325 bezier .159903 .200678 .143761 .193944 .137795 .187325 bezier .129253 .180386 .123797 .170024 .12065 .159385 aline .11049 .118745 aline .110014 .117793 aline .11049 .11684 aline .13208 .11684 bezier .141983 .114105 .141037 .098426 .131445 .095885 aline .104775 .095885 aline .09271 .047625 aline .090805 .04191 aline .09017 .04064 aline .089535 .038735 aline .08636 .032385 aline .085725 .03175 bezier .100206 .238788E-01 .122128 .104235E-01 .133985 .028575 bezier .141151 .348158E-01 .139063 .477684E-01 .14859 .051435 aline .15748 .051435 bezier .171487 .466769E-01 .162497 .297072E-01 .156845 .02159 bezier .144346 -.844801E-03 .115345 -.896388E-02 .09271 .00254 aline .07366 .012065 aline .073025 .0127 bezier .063826 .810832E-02 .541578E-01 -.228656E-02 .04191 -.001905 bezier .277083E-01 -.715707E-02 .134878E-01 .912228E-02 .02032 .02286 bezier .270212E-01 .394743E-01 .485081E-01 .458248E-01 .064135 .040005 aline .066675 .045085 aline .06731 .04699 aline .067945 .04826 aline .069215 .05207 aline .797719E-01 .942975E-01 aline .079375 .095885 aline .06604 .095885 bezier .555284E-01 .980446E-01 .563606E-01 .114184 .06604 .11684 aline .08509 .11684 aline .085725 .11811 aline .097155 .16383 bezier .104511 .190308 .126874 .215881 .155575 .216535 closepath ! end of curve fill dfont endchar dfont char=37 !-------------- Beginning of new char. dfont wid=.524996 hei=.694445 dep=.083333 italic=.173612 set path ! start of curve newpath ! start of curve amove .104775 .24257 bezier .125873 .238036 .127433 .21187 .12319 .194945 bezier .117946 .17442 .104365 .148434 .08001 .149225 bezier .589117E-01 .153759 .573516E-01 .179925 .061595 .19685 bezier .665364E-01 .216077 .776529E-01 .237599 .098425 .24257 closepath ! end of curve ! start of curve amove .20193 .24257 bezier .213894 .239956 .213498 .224693 .20574 .217805 bezier .152232 .136011 .100773 .527405E-01 .04572 -.02794 bezier .344036E-01 -.362682E-01 .201136E-01 -.019454 .029845 -.009525 bezier .841891E-01 .737582E-01 .136839 .158263 .192405 .240665 aline .194945 .241935 aline .19685 .24257 aline .20193 .24257 closepath ! end of curve ! start of curve amove .09906 .22098 bezier .083818 .211306 .756424E-01 .189126 .08128 .172085 bezier .880799E-01 .167589 .940807E-01 .178107 .09779 .18288 bezier .103342 .194377 .109693 .209425 .102235 .22098 aline .100648 .221377 closepath ! end of curve ! start of curve amove .15875 .062865 bezier .180622 .574799E-01 .181107 .295252E-01 .175895 .012065 bezier .170077 -.826194E-02 .153663 -.354408E-01 .128905 -.028575 bezier .107661 -.166115E-01 .111762 .126619E-01 .120015 .03175 bezier .125977 .454199E-01 .136271 .596192E-01 .151765 .062865 closepath ! end of curve ! start of curve amove .153035 .041275 bezier .137268 .319716E-01 .1286 .931286E-02 .135255 -.00762 bezier .142067 -.105301E-01 .147385 -.147278E-02 .15113 .003175 bezier .157081 .150716E-01 .162874 .291892E-01 .15621 .041275 aline .154623 .416719E-01 aline .153035 .041275 closepath ! end of curve fill dfont endchar dfont char=38 !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=.173612 set path ! start of curve newpath ! start of curve amove .114935 .21717 bezier .133866 .216431 .153645 .198003 .14605 .1778 bezier .141753 .164424 .120517 .162256 .116205 .17653 aline .116205 .18415 aline .11684 .186055 aline .118745 .189865 aline .120015 .191135 aline .120491 .192088 bezier .103596 .204072 .834209E-01 .186308 .07493 .17145 bezier .704022E-01 .162123 .649601E-01 .151451 .066675 .141605 bezier .808302E-01 .151555 .107436 .155899 .1143 .135255 bezier .120931 .111994 .969055E-01 .866285E-01 .07366 .09525 bezier .674089E-01 .961758E-01 .623071E-01 .101559 .05715 .10287 bezier .427523E-01 .829963E-01 .318492E-01 .503466E-01 .05461 .032385 bezier .856082E-01 .811481E-02 .131768 .012731 .16256 .03556 bezier .187184 .584287E-01 .200032 .968338E-01 .18542 .127635 aline .184785 .12827 bezier .175018 .124834 .15804 .116673 .161925 .103505 bezier .164977 .937325E-01 .178181 .104828 .182245 .09525 bezier .19059 .854062E-01 .176715 .717727E-01 .16637 .076835 bezier .142458 .770156E-01 .128845 .107806 .14351 .126365 bezier .158905 .147115 .189216 .151771 .20066 .17653 aline .20574 .18669 aline .206375 .188595 aline .20701 .189865 aline .210185 .19939 bezier .209652 .212327 .229004 .219526 .234315 .206375 bezier .235306 .18833 .224532 .170989 .215265 .15621 aline .213995 .15494 aline .21336 .15367 aline .211455 .151765 aline .21082 .150495 aline .203835 .14351 bezier .223293 .114134 .216072 .760935E-01 .20066 .046355 bezier .173527 -.196683E-02 .10842 -.152086E-01 .05969 .003175 bezier .295673E-01 .141598E-01 .925212E-02 .480092E-01 .02032 .079375 bezier .244795E-01 .962899E-01 .346885E-01 .110859 .044196 .12446 bezier .337074E-01 .167314 .684538E-01 .219933 .114935 .21717 closepath ! end of curve ! start of curve amove .09017 .12827 aline .086995 .127635 aline .083185 .126365 aline .078105 .123825 aline .07747 .12319 aline .0762 .122555 bezier .688831E-01 .119205 .793968E-01 .116301 .08255 .114935 bezier .890387E-01 .114289 .922903E-01 .124334 .911225E-01 .128746 closepath ! end of curve fill dfont endchar dfont char=39 !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=.173612 set path ! start of curve newpath ! start of curve amove .14732 .21336 bezier .167568 .209615 .16804 .185156 .163195 .169545 bezier .154695 .140913 .133289 .117069 .106045 .10541 bezier .956347E-01 .102916 .881842E-01 .119009 .09779 .12446 bezier .119695 .134651 .13923 .15466 .142875 .17907 bezier .128123 .17588 .118577 .195001 .12827 .20574 aline .13208 .20955 aline .13335 .210185 aline .133985 .21082 aline .136525 .21209 aline .13843 .212725 aline .14097 .21336 aline .14732 .21336 closepath ! end of curve fill dfont endchar dfont char=40 !-------------- Beginning of new char. dfont wid=.524996 hei=.694445 dep=.0833311 italic=.173612 set path ! start of curve newpath ! start of curve amove .205105 .24257 bezier .215 .23985 .213896 .225424 .20447 .222885 bezier .140548 .188097 .928257E-01 .108954 .11176 .03683 bezier .117289 .160529E-01 .130441 -.139502E-02 .14732 -.01397 bezier .154888 -.242376E-01 .13893 -.348167E-01 .13081 -.02667 bezier .085059 .494394E-02 .746799E-01 .676528E-01 .090805 .117475 bezier .108066 .171789 .147915 .217798 .198755 .24257 closepath ! end of curve fill dfont endchar dfont char=")" !-------------- Beginning of new char. dfont wid=.524996 hei=.694445 dep=.0833311 italic=.173612 set path ! start of curve newpath ! start of curve amove .103505 .24257 bezier .148824 .215605 .162628 .155961 .15113 .108585 bezier .13685 .486416E-01 .944292E-01 -.230614E-02 .040005 -.02921 bezier .029731 -.325667E-01 .215241E-01 -.190278E-01 .029845 -.012065 bezier .989772E-01 .239689E-01 .15167 .110618 .12319 .187325 bezier .116903 .204651 .103073 .217033 .09017 .229235 aline .089535 .23114 aline .089535 .23495 aline .09017 .236855 aline .090805 .238125 aline .09398 .2413 aline .09525 .241935 aline .097155 .24257 closepath ! end of curve fill dfont endchar dfont char="*" !-------------- Beginning of new char. dfont wid=.524996 hei=.520834 dep=0 italic=.173612 set path ! start of curve newpath ! start of curve amove .140335 .18161 aline .14224 .180975 aline .14351 .18034 aline .145415 .178435 bezier .148906 .166736 .140956 .154602 .139065 .142875 aline .13716 .135255 aline .136525 .13335 aline .135255 .12827 aline .13462 .126365 aline .134144 .125413 aline .134408 .124883 aline .134938 .124619 aline .14478 .12954 aline .145415 .130175 aline .163195 .139065 aline .16383 .1397 aline .18288 .149225 bezier .193667 .153838 .200014 .138656 .19177 .13208 bezier .176069 .121776 .157291 .115782 .141129 .106363 bezier .152714 .966194E-01 .168878 .911814E-01 .17907 .08001 bezier .182127 .669757E-01 .16338 .056553 .15494 .067945 bezier .144752 .741786E-01 .135389 .825689E-01 .125024 .879122E-01 bezier .120621 .711755E-01 .118427 .536271E-01 .112395 .037465 aline .108585 .033655 aline .104775 .03175 aline .10287 .031115 aline .09779 .031115 bezier .871373E-01 .350108E-01 .933093E-01 .469633E-01 .09525 .05461 aline .097155 .06223 aline .09779 .064135 aline .09906 .069215 aline .099695 .07112 aline .100965 .0762 aline .1016 .078105 aline .103505 .085725 aline .103928 .086995 aline .103505 .088265 aline .10287 .08763 aline .08382 .078105 aline .083185 .07747 aline .065405 .06858 bezier .592591E-01 .637583E-01 .463785E-01 .586657E-01 .04318 .069215 bezier .414654E-01 .837289E-01 .587426E-01 .086745 .06858 .092075 aline .08128 .098425 aline .083185 .09906 aline .094615 .104775 bezier .101442 .10659 .910863E-01 .110079 .0889 .112395 bezier .792212E-01 .11896 .677331E-01 .123654 .05969 .13208 bezier .552749E-01 .1455 .749913E-01 .156213 .08382 .14478 bezier .935964E-01 .138271 .103254 .130221 .113242 .124883 bezier .118447 .141829 .119451 .160522 .127 .17653 aline .12827 .1778 aline .12954 .178435 aline .13081 .179705 aline .13335 .180975 aline .13589 .18161 closepath ! end of curve ! start of curve amove .103505 .088265 aline .10414 .08763 aline .104775 .088265 aline .10414 .0889 aline .103505 .088265 closepath ! end of curve fill dfont endchar dfont char="+" !-------------- Beginning of new char. dfont wid=.524996 hei=.530554 dep=-.0805569 italic=.173612 set path ! start of curve newpath ! start of curve amove .139065 .18542 aline .14097 .184785 aline .14224 .18415 aline .142875 .183515 aline .144145 .18288 aline .14605 .180975 aline .147955 .177165 aline .14859 .174625 aline .14859 .172085 aline .13589 .121285 aline .135467 .120015 aline .13589 .118745 aline .18796 .118745 bezier .200692 .116565 .200692 .967945E-01 .18796 .094615 aline .12954 .094615 aline .128905 .093345 aline .114935 .037465 bezier .112278 .224085E-01 .877709E-01 .267634E-01 .090805 .04191 aline .09144 .045085 aline .103505 .093345 aline .10414 .09398 aline .103505 .094615 aline .050165 .094615 bezier .037838 .970457E-01 .037838 .116314 .050165 .118745 aline .109855 .118745 aline .123825 .174625 aline .125095 .178435 aline .12573 .179705 aline .12954 .183515 aline .13208 .184785 aline .133985 .18542 closepath ! end of curve fill dfont endchar dfont char="," !-------------- Beginning of new char. dfont wid=.524996 hei=.125 dep=.138888 italic=.173612 set path ! start of curve newpath ! start of curve amove .104775 .042545 bezier .125888 .039478 .1294 .130641E-01 .121285 -.003175 bezier .11086 -.265706E-01 .891051E-01 -.468057E-01 .062865 -.04953 bezier .051723 -.467854E-01 .522053E-01 -.293604E-01 .064135 -.028575 bezier .786387E-01 -.246772E-01 .929107E-01 -.133569E-01 .098425 -.000635 bezier .834411E-01 -.391467E-02 .713229E-01 .124046E-01 .07747 .026035 aline .08001 .031115 aline .08128 .032385 aline .081915 .033655 aline .085725 .037465 aline .086995 .0381 aline .08763 .038735 aline .09271 .041275 aline .094615 .04191 aline .097155 .042545 closepath ! end of curve fill dfont endchar dfont char="-" !-------------- Beginning of new char. dfont wid=.524996 hei=.530554 dep=-.0805569 italic=.173612 set path ! start of curve newpath ! start of curve amove .18161 .118745 bezier .194342 .116565 .194342 .967945E-01 .18161 .094615 aline .056515 .094615 bezier .044188 .970457E-01 .044188 .116314 .056515 .118745 closepath ! end of curve fill dfont endchar dfont char="." !-------------- Beginning of new char. dfont wid=.524996 hei=.125 dep=0 italic=.173612 set path ! start of curve newpath ! start of curve amove .104775 .042545 bezier .123495 .397733E-01 .124661 .130704E-01 .109855 .004445 bezier .097428 -.772765E-02 .726477E-01 .266889E-02 .0762 .020955 bezier .779278E-01 .318713E-01 .869448E-01 .406536E-01 .09779 .042545 closepath ! end of curve fill dfont endchar dfont char="/" !-------------- Beginning of new char. dfont wid=.524996 hei=.694445 dep=.0833311 italic=.173612 set path ! start of curve newpath ! start of curve amove .21209 .24257 bezier .224146 .239979 .223853 .224165 .215265 .217805 bezier .15546 .135821 .966447E-01 .531223E-01 .03556 -.02794 bezier .023858 -.365534E-01 .942968E-02 -.018414 .02032 -.00889 bezier .809997E-01 .743445E-01 .141046 .158036 .202565 .240665 aline .205105 .241935 aline .20701 .24257 closepath ! end of curve fill dfont endchar dfont char="0" !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=.173612 set path ! start of curve newpath ! start of curve amove .1524 .21717 bezier .180597 .214064 .195602 .183252 .197485 .158115 bezier .20072 .968069E-01 .171002 .280489E-01 .113665 0 bezier .910231E-01 -.010821 .619654E-01 -.204014E-02 .0508 .020955 bezier .286524E-01 .689797E-01 .453156E-01 .124857 .073025 .16764 bezier .915582E-01 .192912 .118554 .219448 .1524 .21717 closepath ! end of curve ! start of curve amove .13716 .19558 bezier .102525 .187218 .836468E-01 .151177 .073025 .11938 bezier .641982E-01 .877334E-01 .579775E-01 .516165E-01 .079375 .023495 bezier .978143E-01 .704362E-02 .123036 .023634 .135255 .040005 bezier .161969 .725108E-01 .177367 .116843 .17399 .158115 bezier .1714 .175997 .159439 .198957 .137795 .196215 aline .13716 .19558 closepath ! end of curve fill dfont endchar dfont char="1" !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=.173612 set path ! start of curve newpath ! start of curve amove .15367 .216535 aline .155575 .2159 aline .156845 .215265 aline .16002 .21209 aline .160655 .21082 aline .16129 .208915 aline .16129 .205105 aline .12065 .042545 aline .11557 .022225 aline .115094 .212725E-01 aline .11557 .02032 aline .15113 .02032 bezier .161298 .179655E-01 .16016 .148407E-02 .150495 -.000635 aline .04953 -.000635 bezier .389962E-01 .157444E-02 .400413E-01 .175777E-01 .04953 .02032 aline .09017 .02032 aline .090805 .02159 aline .126365 .16383 aline .126841 .164783 bezier .118983 .162534 .109528 .154879 .099695 .15367 bezier .918675E-01 .152055 .797039E-01 .15045 .078105 .16129 bezier .077143 .171381 .087047 .175207 .09525 .17399 bezier .117288 .179772 .13253 .197758 .145415 .215265 aline .146685 .2159 aline .14859 .216535 closepath ! end of curve fill dfont endchar dfont char="2" !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=.173612 set path ! start of curve newpath ! start of curve amove .14224 .21717 bezier .17059 .215406 .198081 .194043 .201295 .164465 bezier .205965 .130677 .180987 .10205 .1524 .088265 bezier .121942 .070639 .848434E-01 .636871E-01 .061595 .03556 bezier .879073E-01 .349216E-01 .113735 .164359E-01 .1397 .01905 bezier .161239 .227681E-01 .172836 .439982E-01 .17907 .062865 aline .18034 .064135 aline .18415 .06604 aline .19304 .06604 aline .19685 .064135 aline .198755 .06223 bezier .203704 .496893E-01 .193143 .366211E-01 .187325 .026035 bezier .170894 .632695E-03 .137835 -.116306E-01 .10922 -.000635 bezier .909611E-01 .458497E-02 .728178E-01 .162953E-01 .053975 .013335 aline .050165 .01143 aline .04572 .006985 aline .04445 .004445 bezier .429644E-01 -.101907E-01 .153739E-01 -.63069E-02 .020955 .00889 bezier .340105E-01 .056407 .787107E-01 .835691E-01 .122555 .09906 bezier .145236 .110085 .173315 .123262 .1778 .150495 bezier .181318 .173298 .162636 .195376 .1397 .19558 bezier .107964 .199353 .758822E-01 .174522 .067945 .14351 aline .06731 .142875 aline .06604 .14224 aline .065405 .141605 aline .064135 .14097 aline .05334 .14097 aline .0508 .14224 bezier .412476E-01 .152244 .052235 .167043 .057785 .17653 bezier .076297 .203669 .109738 .21969 .14224 .21717 closepath ! end of curve fill dfont endchar dfont char="3" !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=.173612 set path ! start of curve newpath ! start of curve amove .1524 .21717 bezier .179486 .216179 .209251 .192786 .20447 .16383 bezier .202799 .138224 .181379 .118748 .159385 .108585 bezier .190557 .847306E-01 .182759 .325798E-01 .149225 .014605 bezier .118702 -.479531E-02 .773354E-01 -.131498E-01 .045085 .00635 bezier .276652E-01 .176922E-01 .191113E-01 .047676 .036195 .06223 bezier .464256E-01 .069891 .622763E-01 .604576E-01 .059055 .047625 aline .057785 .043815 aline .05715 .042545 aline .056515 .04191 aline .05588 .04064 aline .052705 .037465 aline .519995E-01 .371122E-01 bezier .522678E-01 .023838 .681987E-01 .183393E-01 .07874 .01651 bezier .106753 .015746 .142148 .257936E-01 .15367 .05461 bezier .161634 .741936E-01 .146288 .100126 .123825 .099695 aline .12319 .10033 aline .097155 .10033 bezier .086656 .102602 .883392E-01 .119726 .098425 .121285 bezier .125956 .119087 .1573 .123406 .17399 .147955 bezier .186493 .16216 .18248 .185543 .16383 .192405 bezier .139676 .200923 .109329 .194607 .09144 .17526 bezier .862803E-01 .17002 .876307E-01 .159741 .079375 .15748 aline .06985 .15748 bezier .557175E-01 .163786 .669233E-01 .180848 .073025 .18923 bezier .926998E-01 .211616 .124069 .218407 .1524 .21717 closepath ! end of curve fill dfont endchar dfont char="4" !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=.222223 italic=.173612 set path ! start of curve newpath ! start of curve amove .156845 .21717 bezier .172124 .212845 .16366 .195129 .160655 .184785 bezier .142577 .123649 .105682 .681865E-01 .060325 .02667 bezier .786034E-01 .270868E-01 .969857E-01 .210698E-01 .1143 .014605 aline .114935 .01651 aline .127635 .06731 bezier .131133 .805048E-01 .153521 .771758E-01 .15113 .062865 aline .13843 .012065 aline .138007 .010795 bezier .148364 .575531E-02 .160638 .149356E-01 .172085 .01524 bezier .182942 .128499E-01 .183078 -.438893E-02 .17145 -.005715 aline .17018 -.00635 aline .16256 -.00889 aline .15748 -.01016 aline .154305 -.010795 aline .150495 -.010795 aline .14986 -.01143 aline .135255 -.01143 aline .133668 -.110331E-01 aline .132588 -.011303 aline .11811 -.069215 bezier .115926 -.080803 .977778E-01 -.823353E-01 .094615 -.070485 aline .094615 -.06477 aline .108982 -.73025E-02 aline .108585 -.005715 bezier .825073E-01 .430755E-02 .546733E-01 .962691E-02 .02794 .003175 bezier .197151E-01 -.70695E-02 .257494E-02 .497555E-02 .01016 .015875 bezier .776198E-01 .593892E-01 .123766 .130635 .142875 .208915 aline .144145 .211455 aline .14478 .21209 aline .145415 .21336 aline .146685 .21463 aline .150495 .216535 aline .1524 .21717 closepath ! end of curve fill dfont endchar dfont char="5" !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=.173612 set path ! start of curve newpath ! start of curve amove .197485 .21336 bezier .208047 .211096 .206917 .194499 .19685 .192405 aline .10414 .192405 aline .103505 .1905 aline .878681E-01 .127953 aline .088265 .126365 bezier .116345 .139878 .156981 .14104 .175895 .11176 bezier .197979 .753095E-01 .174195 .284035E-01 .1397 .009525 bezier .109124 -.814438E-02 .653796E-01 -.125518E-01 .03937 .01524 bezier .281173E-01 .288288E-01 .247223E-01 .569015E-01 .043815 .06477 bezier .572559E-01 .698379E-01 .680248E-01 .527442E-01 .05969 .04191 bezier .487874E-01 .349483E-01 .619225E-01 .231981E-01 .06985 .02032 bezier .113394 .274388E-02 .174683 .049245 .15748 .097155 bezier .147985 .11797 .122128 .116494 .10414 .11049 bezier .913226E-01 .107563 .822863E-01 .978867E-01 .071755 .09144 aline .064135 .09144 aline .061595 .09271 aline .06096 .093345 aline .05969 .09398 aline .059055 .09525 aline .05842 .095885 aline .05715 .098425 aline .05715 .103505 aline .08255 .205105 aline .083185 .20701 aline .084455 .20955 aline .086995 .21209 aline .088265 .212725 aline .09017 .21336 closepath ! end of curve fill dfont endchar dfont char="6" !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=.173612 set path ! start of curve newpath ! start of curve amove .17272 .21717 bezier .190349 .216772 .209381 .202563 .20574 .18288 bezier .205917 .168408 .186095 .158953 .17653 .170815 aline .174625 .174625 aline .17399 .177165 aline .17399 .18161 aline .174625 .18415 aline .17653 .18796 aline .177165 .188595 aline .1778 .189865 aline .17907 .191135 aline .179546 .192088 bezier .158306 .203329 .131542 .188967 .113665 .17526 bezier .967649E-01 .1607 .809157E-01 .140352 .752475E-01 .120174 bezier .10296 .139631 .146738 .147653 .17145 .11938 bezier .200152 .857349E-01 .179169 .329639E-01 .14478 .012065 bezier .11686 -.010051 .675616E-01 -.013182 .047625 .020955 bezier .319209E-01 .550014E-01 .404652E-01 .921862E-01 .051435 .126365 bezier .706827E-01 .175357 .117062 .220135 .17272 .21717 closepath ! end of curve ! start of curve amove .117475 .11557 bezier .908507E-01 .112265 .634561E-01 .905003E-01 .0635 .06223 aline .06223 .06096 bezier .619763E-01 .435839E-01 .068256 .188785E-01 .089535 .017145 bezier .12929 .012212 .172306 .057428 .158115 .097155 bezier .151634 .113099 .133097 .119237 .117475 .11557 closepath ! end of curve fill dfont endchar dfont char="7" !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=.222223 italic=.173612 set path ! start of curve newpath ! start of curve amove .083185 .21717 aline .08509 .216535 aline .08636 .2159 aline .0889 .21336 aline .09017 .21082 aline .091313 .207391 bezier .109297 .214022 .131814 .223408 .14986 .21209 bezier .15865 .206274 .16192 .188842 .174625 .19304 bezier .190887 .194301 .204208 .205287 .215265 .216535 aline .21717 .21717 aline .22606 .21717 bezier .236748 .213812 .233466 .200645 .22606 .19558 bezier .20394 .167337 .183833 .137644 .16637 .106045 aline .1524 .078105 bezier .140652 .532526E-01 .132705 .267461E-01 .12446 .000635 bezier .118081 -.955246E-02 .100111 -.342537E-02 .10287 .00889 bezier .116937 .679377E-01 .147468 .122826 .17907 .172085 bezier .165305 .168558 .149949 .174596 .142875 .187325 bezier .133631 .200653 .117155 .191563 .104775 .18796 bezier .832964E-01 .179266 .678403E-01 .16083 .05588 .14224 aline .055245 .141605 aline .053975 .14097 aline .04318 .14097 aline .04064 .14224 aline .0381 .14478 aline .03683 .14732 aline .03683 .153035 bezier .478854E-01 .173896 .582474E-01 .195256 .070485 .215265 aline .073025 .216535 aline .074295 .21717 closepath ! end of curve fill dfont endchar dfont char="8" !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=.173612 set path ! start of curve newpath ! start of curve amove .154305 .21717 bezier .180251 .216753 .210229 .19516 .205105 .167005 bezier .2023 .138787 .174097 .12237 .149225 .114935 bezier .172831 .108435 .191904 .840769E-01 .18415 .059055 bezier .166941 .532584E-02 .926085E-01 -.241987E-01 .046355 .01016 bezier .238227E-01 .283491E-01 .251542E-01 .642604E-01 .043815 .084455 bezier .571235E-01 .993397E-01 .747264E-01 .109543 .09398 .114935 bezier .704244E-01 .120266 .514269E-01 .146322 .064135 .169545 bezier .804025E-01 .202297 .118989 .219559 .154305 .21717 closepath ! end of curve ! start of curve amove .13462 .19558 bezier .111064 .193979 .801085E-01 .175237 .08509 .14859 bezier .093101 .124113 .124851 .121945 .145415 .128905 bezier .166684 .134667 .191223 .158298 .177165 .180975 bezier .16736 .193616 .149504 .198004 .13462 .19558 closepath ! end of curve ! start of curve amove .11684 .10414 bezier .086426 .104288 .492945E-01 .784116E-01 .05461 .045085 bezier .605745E-01 .179664E-01 .945014E-01 .011647 .11684 .019685 bezier .144979 .267564E-01 .174002 .592534E-01 .15621 .08763 bezier .147332 .996552E-01 .131219 .105161 .11684 .10414 closepath ! end of curve fill dfont endchar dfont char="9" !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=.173612 set path ! start of curve newpath ! start of curve amove .153035 .21717 bezier .17943 .215105 .199132 .18953 .198755 .16383 bezier .204072 .944619E-01 .163751 .118896E-01 .09017 -.00381 bezier .703898E-01 -.564448E-02 .042211 -.547653E-02 .033655 .017145 aline .03302 .019685 aline .03302 .031115 bezier .331162E-01 .474209E-01 .590211E-01 .540178E-01 .064135 .037465 aline .064135 .029845 aline .0635 .02794 aline .061595 .02413 aline .05842 .020955 bezier .930403E-01 .563648E-02 .130132 .344191E-01 .14859 .062865 bezier .154428 .719741E-01 .161408 .820651E-01 .163195 .09271 bezier .135869 .733995E-01 .940872E-01 .655912E-01 .06858 .09144 bezier .371904E-01 .125152 .589633E-01 .180494 .09525 .201295 bezier .111898 .213772 .132719 .218402 .153035 .21717 closepath ! end of curve ! start of curve amove .139065 .19558 bezier .102767 .19213 .674801E-01 .152272 .08001 .116205 bezier .846533E-01 .106407 .933771E-01 .983953E-01 .10414 .09652 bezier .136423 .929414E-01 .174418 .116038 .17526 .150495 bezier .178466 .168294 .170711 .19378 .14986 .196215 aline .1397 .196215 aline .139065 .19558 closepath ! end of curve ! start of curve amove .163195 .09271 aline .16383 .092075 aline .164465 .09271 aline .16383 .093345 aline .163195 .09271 closepath ! end of curve fill dfont endchar dfont char=":" !-------------- Beginning of new char. dfont wid=.524996 hei=.430555 dep=0 italic=.173612 set path ! start of curve newpath ! start of curve amove .131445 .14986 bezier .151166 .147067 .15106 .118653 .135255 .11049 bezier .121155 .993014E-01 .975742E-01 .112672 .103505 .13081 aline .10414 .132715 aline .10668 .137795 aline .107315 .13843 aline .10795 .1397 aline .11303 .14478 aline .1143 .145415 aline .114935 .14605 aline .120015 .14859 aline .12192 .149225 aline .12446 .14986 closepath ! end of curve ! start of curve amove .104775 .042545 bezier .123495 .397733E-01 .124661 .130704E-01 .109855 .004445 bezier .097428 -.772765E-02 .726477E-01 .266889E-02 .0762 .020955 bezier .779278E-01 .318713E-01 .869448E-01 .406536E-01 .09779 .042545 closepath ! end of curve fill dfont endchar dfont char=";" !-------------- Beginning of new char. dfont wid=.524996 hei=.430555 dep=.138888 italic=.173612 set path ! start of curve newpath ! start of curve amove .131445 .14986 bezier .151166 .147067 .15106 .118653 .135255 .11049 bezier .121155 .993014E-01 .975742E-01 .112672 .103505 .13081 aline .10414 .132715 aline .10668 .137795 aline .107315 .13843 aline .10795 .1397 aline .11303 .14478 aline .1143 .145415 aline .114935 .14605 aline .120015 .14859 aline .12192 .149225 aline .12446 .14986 closepath ! end of curve ! start of curve amove .104775 .042545 bezier .125012 .376187E-01 .121715 .117065E-01 .11557 -.003175 bezier .105889 -.249458E-01 .870062E-01 -.455993E-01 .062865 -.04953 bezier .524656E-01 -.468964E-01 .051747 -.307599E-01 .062865 -.028575 bezier .758889E-01 -.234606E-01 .862307E-01 -.130371E-01 .093345 -.00127 bezier .761767E-01 -.504371E-04 .708703E-01 .022252 .081915 .033655 aline .085725 .037465 aline .086995 .0381 aline .08763 .038735 aline .09271 .041275 aline .094615 .04191 aline .097155 .042545 aline .104775 .042545 closepath ! end of curve fill dfont endchar dfont char="<" !-------------- Beginning of new char. dfont wid=.524996 hei=.555555 dep=-.0555553 italic=.173612 set path ! start of curve newpath ! start of curve amove .198755 .194945 bezier .211823 .194769 .214509 .175064 .202565 .170815 bezier .162554 .149024 .122089 .12759 .827088E-01 .105093 bezier .111153 .810017E-01 .143711 .611624E-01 .17145 .036195 bezier .178301 .02306 .158211 .116841E-01 .14986 .023495 bezier .116279 .484923E-01 .826374E-01 .734056E-01 .04953 .09906 bezier .424007E-01 .108433 .513832E-01 .118308 .060325 .121285 bezier .106279 .145392 .151015 .172175 .197485 .194945 closepath ! end of curve fill dfont endchar dfont char="=" !-------------- Beginning of new char. dfont wid=.524996 hei=.415624 dep=-.195488 italic=.173612 set path ! start of curve newpath ! start of curve amove .194945 .145415 bezier .207475 .143244 .207475 .123456 .194945 .121285 aline .05715 .121285 bezier .445824E-01 .12348 .445824E-01 .143219 .05715 .145415 closepath ! end of curve ! start of curve amove .18161 .092075 bezier .19414 .089904 .19414 .070116 .18161 .067945 aline .043815 .067945 bezier .312474E-01 .701405E-01 .312474E-01 .898795E-01 .043815 .092075 closepath ! end of curve fill dfont endchar dfont char=">" !-------------- Beginning of new char. dfont wid=.524996 hei=.555555 dep=-.0555553 italic=.173612 set path ! start of curve newpath ! start of curve amove .07874 .194945 bezier .965071E-01 .187398 .110084 .172239 .126365 .161925 bezier .14731 .144684 .171086 .130716 .1905 .11176 bezier .195639 .978639E-01 .179102 .931736E-01 .17018 .08763 bezier .126906 .650682E-01 .850646E-01 .398267E-01 .041275 .018415 bezier .283154E-01 .170746E-01 .228385E-01 .365936E-01 .034925 .04191 bezier .754018E-01 .638541E-01 .116113 .857489E-01 .156051 .108268 bezier .127532 .131621 .963319E-01 .152052 .067945 .175895 aline .066675 .178435 aline .06604 .180975 aline .06604 .18415 aline .066675 .18669 aline .067945 .18923 aline .071755 .19304 aline .073025 .193675 aline .07493 .19431 aline .07747 .194945 aline .07874 .194945 closepath ! end of curve fill dfont endchar dfont char="?" !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=.173612 set path ! start of curve newpath ! start of curve amove .151765 .21717 bezier .177659 .216473 .204301 .19209 .19558 .164465 bezier .184668 .130626 .146639 .121906 .120015 .10414 aline .116205 .102235 aline .11557 .1016 aline .1143 .100965 aline .11049 .097155 aline .108585 .093345 aline .10795 .09271 aline .10795 .086995 bezier .115679 .820324E-01 .127099 .880434E-01 .13335 .09398 aline .135255 .09779 bezier .137519 .111443 .163088 .107988 .15875 .093345 bezier .150837 .069297 .118741 .573326E-01 .09652 .067945 bezier .756886E-01 .826052E-01 .874158E-01 .115929 .108585 .123825 bezier .128592 .136899 .152924 .144554 .169545 .161925 bezier .179555 .172854 .173516 .190164 .159385 .193675 bezier .136492 .200241 .10748 .193355 .915988E-01 .174308 bezier .101017 .158938 .763378E-01 .141157 .065405 .155575 bezier .573724E-01 .166119 .669917E-01 .179576 .073025 .188595 bezier .925659E-01 .21072 .123496 .218599 .151765 .21717 closepath ! end of curve ! start of curve amove .102235 .033655 bezier .119268 .304102E-01 .117201 .546543E-02 .102235 .000635 bezier .894218E-01 -.57657E-02 .752648E-01 .789297E-02 .080645 .020955 aline .08255 .024765 aline .08382 .026035 aline .084455 .027305 aline .085725 .028575 aline .086995 .02921 aline .088265 .03048 aline .093345 .03302 aline .095885 .033655 closepath ! end of curve fill dfont endchar dfont char="@" !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=.173612 set path ! start of curve newpath ! start of curve amove .1651 .215265 bezier .187178 .213707 .203294 .192305 .203835 .17145 bezier .204346 .137239 .198597 .101667 .180975 .07112 bezier .167193 .048521 .136861 .258511E-01 .11049 .042545 bezier .845883E-01 .632783E-01 .896963E-01 .101169 .1016 .12827 bezier .113749 .154132 .14027 .183465 .172085 .17399 aline .178435 .170815 aline .17907 .17018 aline .18034 .169545 aline .182245 .16764 aline .183198 .167164 bezier .186295 .178642 .175253 .193418 .16256 .19431 bezier .995865E-01 .193104 .506824E-01 .123451 .05969 .064135 bezier .624636E-01 .033392 .951418E-01 .109258E-01 .123825 .02032 bezier .136332 .228064E-01 .146494 .030247 .156845 .03683 aline .168275 .03683 bezier .17853 .338005E-01 .176544 .198655E-01 .16764 .01651 bezier .134935 -.79115E-02 .809946E-01 -.012296 .055245 .02413 bezier .226314E-01 .705402E-01 .426764E-01 .134275 .07747 .17399 bezier .997585E-01 .1984 .1314 .217444 .1651 .215265 closepath ! end of curve ! start of curve amove .155575 .154305 bezier .124561 .144673 .107748 .106216 .112395 .076835 bezier .113586 .632317E-01 .127854 .525858E-01 .140335 .060325 bezier .169096 .752141E-01 .186123 .114565 .174625 .14478 aline .17399 .145415 aline .17272 .147955 aline .16891 .151765 aline .16764 .1524 aline .167005 .153035 aline .163195 .154305 aline .16256 .15494 aline .15621 .15494 closepath ! end of curve fill dfont endchar dfont char="A" !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=.173612 set path ! start of curve newpath ! start of curve amove .15494 .217805 aline .156845 .21717 aline .159385 .2159 aline .160655 .21463 aline .161925 .21209 aline .16256 .210185 aline .16256 .19812 aline .161925 .197485 aline .161925 .16256 aline .16129 .161925 aline .16129 .127635 aline .160655 .127 aline .160655 .092075 aline .16002 .09144 aline .16002 .05715 aline .159385 .056515 aline .159385 .02159 aline .15875 .020955 aline .159385 .02032 aline .17018 .02032 aline .17399 .018415 aline .175895 .01651 aline .177165 .01397 aline .177165 .00762 aline .17653 .005715 aline .17526 .003175 aline .17272 .000635 aline .17145 0 aline .169545 -.000635 aline .11938 -.000635 bezier .108818 .162863E-02 .109948 .182257E-01 .120015 .02032 aline .133985 .02032 aline .135255 .02159 aline .135255 .05461 aline .135678 .05588 aline .135255 .05715 aline .07874 .05715 aline .078105 .056515 aline .074295 .048895 aline .07366 .04699 aline .06604 .03175 aline .065405 .029845 aline .611188E-01 .212725E-01 aline .061595 .02032 aline .07112 .02032 bezier .810013E-01 .177131E-01 .802864E-01 .171829E-02 .070485 -.000635 aline .02032 -.000635 bezier .98688E-02 .144085E-02 .105489E-01 .177918E-01 .02032 .02032 aline .036195 .02032 bezier .669623E-01 .837649E-01 .972312E-01 .147607 .12827 .21082 aline .13208 .21463 aline .13335 .215265 aline .133985 .2159 aline .136525 .21717 aline .139065 .217805 closepath ! end of curve ! start of curve amove .139065 .18796 bezier .124144 .150818 .104569 .113823 .0889 .078105 aline .135255 .078105 bezier .138142 .114652 .136716 .152986 .140335 .18923 aline .1397 .189865 closepath ! end of curve fill dfont endchar dfont char="B" !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=.173612 set path ! start of curve newpath ! start of curve amove .163195 .21336 bezier .181997 .211982 .200379 .198075 .2032 .178435 bezier .207261 .147187 .181443 .120284 .153035 .11176 bezier .177573 .106487 .191955 .796643E-01 .18415 .056515 bezier .175267 .265325E-01 .147685 .296997E-02 .11684 -.000635 aline .01905 -.000635 bezier .851618E-02 .157444E-02 .956134E-02 .175777E-01 .01905 .02032 aline .037465 .02032 aline .0381 .02159 aline .07874 .18415 aline .804069E-01 .190818 aline .08001 .192405 aline .06731 .192405 bezier .567762E-01 .194614 .578213E-01 .210618 .06731 .21336 aline .163195 .21336 closepath ! end of curve ! start of curve amove .104775 .189865 aline .10414 .187325 aline .088265 .123825 aline .878417E-01 .122555 aline .088265 .121285 aline .13335 .121285 bezier .158942 .124787 .188829 .152183 .175895 .179705 bezier .172088 .187168 .163735 .190397 .15621 .192405 aline .10541 .192405 closepath ! end of curve ! start of curve amove .081915 .098425 aline .08128 .095885 aline .062865 .022225 aline .623888E-01 .212725E-01 aline .062865 .02032 aline .1143 .02032 bezier .143424 .232006E-01 .17226 .546685E-01 .15875 .084455 bezier .15439 .934448E-01 .144486 .990461E-01 .135255 .10033 aline .08255 .10033 closepath ! end of curve fill dfont endchar dfont char="C" !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=.173612 set path ! start of curve newpath ! start of curve amove .158115 .21717 bezier .171255 .215616 .184773 .209761 .193675 .19939 bezier .199638 .206853 .205643 .222161 .217805 .2159 aline .21844 .215265 aline .21971 .21463 aline .220345 .213995 aline .22225 .210185 aline .22225 .205105 aline .207645 .146685 bezier .204217 .134133 .179544 .138854 .184785 .1524 bezier .187637 .171264 .177283 .193959 .156845 .196215 bezier .115341 .195953 .848515E-01 .157888 .070485 .12192 bezier .587552E-01 .906143E-01 .533123E-01 .505995E-01 .079375 .024765 bezier .110461 .227539E-02 .155398 .03086 .163195 .065405 bezier .16942 .742669E-01 .18833 .704035E-01 .18542 .057785 bezier .172608 .891635E-02 .106199 -.236426E-01 .0635 .008255 bezier .296932E-01 .384353E-01 .032984 .894434E-01 .047625 .12827 bezier .065501 .173637 .105485 .219532 .158115 .21717 closepath ! end of curve fill dfont endchar dfont char="D" !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=.173612 set path ! start of curve newpath ! start of curve amove .15494 .21336 bezier .183847 .210337 .199881 .179002 .201295 .153035 bezier .20451 .927669E-01 .172791 .247552E-01 .113665 .001905 aline .108585 .000635 aline .10541 0 aline .102235 0 aline .1016 -.000635 aline .01778 -.000635 bezier .732881E-02 .144085E-02 .800887E-02 .177918E-01 .01778 .02032 aline .03429 .02032 aline .034925 .02159 aline .075565 .18415 aline .772319E-01 .190818 aline .076835 .192405 aline .06604 .192405 bezier .555888E-01 .194481 .562689E-01 .210832 .06604 .21336 aline .15494 .21336 closepath ! end of curve ! start of curve amove .1016 .189865 aline .100965 .187325 aline .060325 .024765 aline .05969 .022225 aline .592138E-01 .212725E-01 aline .05969 .02032 aline .099695 .02032 bezier .146759 .308403E-01 .171977 .830449E-01 .177165 .127 bezier .178693 .151422 .172838 .183103 .14605 .19177 aline .142875 .19177 aline .14224 .192405 aline .102235 .192405 closepath ! end of curve fill dfont endchar dfont char="E" !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=.173612 set path ! start of curve newpath ! start of curve amove .212725 .21336 aline .21463 .212725 aline .2159 .21209 aline .21844 .20955 aline .21971 .20701 aline .220345 .205105 aline .220345 .202565 aline .211455 .167005 bezier .208488 .154375 .184631 .157427 .18796 .17145 aline .192802 .190818 aline .192405 .192405 aline .107315 .192405 aline .897731E-01 .122238 aline .09017 .12065 aline .13462 .12065 aline .137795 .13335 bezier .141166 .145003 .16364 .142248 .16129 .128905 aline .15113 .088265 bezier .148866 .746115E-01 .123297 .780672E-01 .127635 .09271 aline .128905 .09779 aline .129381 .987425E-01 aline .128905 .099695 aline .084455 .099695 aline .08382 .098425 aline .06477 .022225 aline .642938E-01 .212725E-01 aline .06477 .02032 aline .15748 .02032 aline .158115 .02159 aline .165735 .05207 bezier .169106 .063723 .19158 .609678E-01 .18923 .047625 aline .17907 .006985 aline .178435 .00508 aline .1778 .00381 aline .174625 .000635 aline .173355 0 aline .17145 -.000635 aline .019685 -.000635 bezier .951661E-02 .171945E-02 .106552E-01 .182009E-01 .02032 .02032 aline .03937 .02032 aline .040005 .02159 aline .080645 .18415 aline .823119E-01 .190818 aline .081915 .192405 aline .067945 .192405 bezier .577766E-01 .194759 .589152E-01 .211241 .06858 .21336 closepath ! end of curve fill dfont endchar dfont char="F" !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=.173612 set path ! start of curve newpath ! start of curve amove .2159 .21336 aline .217805 .212725 aline .219075 .21209 aline .221615 .20955 aline .222885 .20701 aline .22352 .205105 aline .22352 .202565 aline .21463 .167005 bezier .211663 .154375 .187806 .157427 .191135 .17145 aline .195977 .190818 aline .19558 .192405 aline .10922 .192405 aline .090805 .118745 aline .903288E-01 .117793 aline .090805 .11684 aline .13716 .11684 aline .137795 .11811 aline .140335 .12827 bezier .142599 .141923 .168168 .138468 .16383 .123825 aline .15367 .083185 bezier .150299 .071532 .127825 .742872E-01 .130175 .08763 aline .131842 .942975E-01 aline .131445 .095885 aline .08509 .095885 aline .066675 .022225 aline .661988E-01 .212725E-01 aline .066675 .02032 aline .088265 .02032 bezier .987988E-01 .181106E-01 .977537E-01 .210732E-02 .088265 -.000635 aline .02032 -.000635 bezier .010417 .210012E-02 .113629E-01 .017779 .020955 .02032 aline .041275 .02032 aline .04191 .02159 aline .08255 .18415 aline .842169E-01 .190818 aline .08382 .192405 aline .06858 .192405 bezier .058677 .19514 .596229E-01 .210819 .069215 .21336 closepath ! end of curve fill dfont endchar dfont char="G" !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=.173612 set path ! start of curve newpath ! start of curve amove .14986 .21717 bezier .161666 .215984 .173494 .210027 .181928 .201454 bezier .187931 .207942 .19367 .222192 .205105 .2159 aline .20574 .215265 aline .20701 .21463 aline .207645 .213995 aline .20955 .210185 aline .20955 .205105 aline .194945 .146685 bezier .191517 .134133 .166844 .138854 .172085 .1524 bezier .174301 .168617 .169897 .192363 .14986 .19558 bezier .121969 .19828 .989973E-01 .173389 .084455 .151765 bezier .632607E-01 .115342 .483835E-01 .683002E-01 .070485 .029845 bezier .082315 .116623E-01 .107434 .140889E-01 .12192 .027305 bezier .135179 .396436E-01 .146108 .557938E-01 .150495 .073025 aline .132715 .073025 bezier .122115 .752483E-01 .123188 .912149E-01 .132715 .09398 aline .18796 .09398 bezier .198471 .917342E-01 .197369 .075091 .187325 .073025 aline .17653 .073025 aline .16002 .006985 bezier .15726 -.530607E-02 .133768 -.286312E-02 .136525 .010795 bezier .119896 -.376595E-03 .956868E-01 -.101447E-01 .07493 -.00127 bezier .375052E-01 .140291E-01 .320251E-01 .618181E-01 .0381 .095885 bezier .479306E-01 .147936 .797046E-01 .203073 .133985 .216535 aline .13716 .216535 aline .137795 .21717 aline .14986 .21717 closepath ! end of curve fill dfont endchar dfont char="H" !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=.173612 set path ! start of curve newpath ! start of curve amove .121285 .21336 bezier .131885 .211137 .130812 .19517 .121285 .192405 aline .103505 .192405 aline .08636 .123825 aline .859367E-01 .122555 aline .08636 .121285 aline .16002 .121285 aline .160655 .12319 aline .177562 .190818 aline .177165 .192405 aline .1651 .192405 bezier .154932 .194759 .15607 .211241 .165735 .21336 aline .220345 .21336 bezier .230945 .211137 .229872 .19517 .220345 .192405 aline .202565 .192405 aline .161925 .029845 aline .16002 .022225 aline .159544 .212725E-01 aline .16002 .02032 aline .172085 .02032 bezier .182685 .180967E-01 .181612 .213014E-02 .172085 -.000635 aline .11684 -.000635 bezier .106672 .171945E-02 .10781 .182009E-01 .117475 .02032 aline .13462 .02032 aline .135255 .02159 aline .154305 .09779 aline .154728 .09906 aline .154305 .10033 aline .080645 .10033 aline .08001 .098425 aline .06096 .022225 aline .604838E-01 .212725E-01 aline .06096 .02032 aline .073025 .02032 bezier .836249E-01 .180967E-01 .825523E-01 .213014E-02 .073025 -.000635 aline .01778 -.000635 bezier .761161E-02 .171945E-02 .875022E-02 .182009E-01 .018415 .02032 aline .03556 .02032 aline .036195 .02159 aline .076835 .18415 aline .785019E-01 .190818 aline .078105 .192405 aline .06604 .192405 bezier .558716E-01 .194759 .570102E-01 .211241 .066675 .21336 closepath ! end of curve fill dfont endchar dfont char="I" !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=.173612 set path ! start of curve newpath ! start of curve amove .200025 .21336 bezier .210476 .211284 .209796 .194933 .200025 .192405 aline .153035 .192405 aline .112395 .029845 aline .11049 .022225 aline .110014 .212725E-01 aline .11049 .02032 aline .151765 .02032 bezier .162216 .182441E-01 .161536 .189322E-02 .151765 -.000635 aline .0381 -.000635 aline .03429 .00127 aline .032385 .003175 aline .031115 .005715 aline .031115 .012065 aline .03175 .01397 aline .03302 .01651 aline .03556 .01905 aline .03683 .019685 aline .038735 .02032 aline .08509 .02032 aline .085725 .02159 aline .126365 .18415 aline .128032 .190818 aline .127635 .192405 aline .08636 .192405 aline .08255 .19431 aline .080645 .196215 aline .079375 .198755 aline .079375 .205105 aline .08001 .20701 aline .08128 .20955 aline .08382 .21209 aline .08509 .212725 aline .086995 .21336 closepath ! end of curve fill dfont endchar dfont char="J" !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=.173612 set path ! start of curve newpath ! start of curve amove .211455 .21336 bezier .222055 .211137 .220982 .19517 .211455 .192405 aline .19177 .192405 aline .15367 .040005 bezier .138443 -.402868E-02 .738174E-01 -.197646E-01 .040005 .01143 bezier .286965E-01 .239807E-01 .334686E-01 .523293E-01 .053975 .050165 bezier .674098E-01 .485853E-01 .681902E-01 .309994E-01 .607483E-01 .232833E-01 bezier .837035E-01 .86695E-02 .119438 .183746E-01 .130175 .04445 aline .166767 .190818 aline .16637 .192405 aline .133985 .192405 bezier .124082 .19514 .125028 .210819 .13462 .21336 closepath ! end of curve fill dfont endchar dfont char="K" !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=.173612 set path ! start of curve newpath ! start of curve amove .11684 .21336 bezier .127099 .211058 .125831 .194531 .116205 .192405 aline .099695 .192405 aline .076835 .100965 aline .763588E-01 .100013 aline .076835 .09906 bezier .109117 .130106 .141751 .160664 .17399 .19177 bezier .163782 .190957 .158403 .204646 .16637 .211455 aline .17018 .21336 aline .21463 .21336 bezier .225141 .211114 .224039 .194471 .213995 .192405 aline .19939 .192405 bezier .175936 .169435 .151348 .147548 .128429 .124143 bezier .139807 .896931E-01 .150107 .548553E-01 .16129 .02032 aline .169545 .02032 bezier .180056 .180742E-01 .178954 .143102E-02 .16891 -.000635 aline .12954 -.000635 bezier .119089 .144085E-02 .119769 .177918E-01 .12954 .02032 aline .13843 .02032 bezier .130367 .488476E-01 .120075 .793174E-01 .111125 .108585 aline .099695 .097155 aline .098425 .09652 aline .08636 .084455 aline .08509 .08382 aline .073025 .071755 aline .071755 .07112 aline .06858 .067945 aline .05715 .022225 aline .566738E-01 .212725E-01 aline .05715 .02032 aline .06858 .02032 aline .07239 .018415 aline .074295 .01651 aline .075565 .01397 aline .075565 .00762 aline .07493 .005715 aline .07366 .003175 aline .07112 .000635 aline .06985 0 aline .067945 -.000635 aline .019685 -.000635 bezier .923381E-02 .144085E-02 .991387E-02 .177918E-01 .019685 .02032 aline .036195 .02032 aline .03683 .02159 aline .07747 .18415 aline .791369E-01 .190818 aline .07874 .192405 aline .067945 .192405 bezier .574938E-01 .194481 .581739E-01 .210832 .067945 .21336 closepath ! end of curve fill dfont endchar dfont char="L" !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=.173612 set path ! start of curve newpath ! start of curve amove .140335 .21336 bezier .150212 .210618 .149391 .194915 .1397 .192405 aline .111125 .192405 aline .070485 .029845 aline .06858 .022225 aline .681038E-01 .212725E-01 aline .06858 .02032 aline .1524 .02032 aline .153035 .02159 aline .160655 .05207 bezier .164122 .063654 .186435 .610147E-01 .18415 .047625 aline .17399 .006985 aline .173355 .00508 aline .17272 .00381 aline .169545 .000635 aline .168275 0 aline .16637 -.000635 aline .02159 -.000635 bezier .110784E-01 .152463E-02 .119106E-01 .176645E-01 .02159 .02032 aline .04318 .02032 aline .043815 .02159 aline .084455 .18415 aline .861219E-01 .190818 aline .085725 .192405 aline .06985 .192405 bezier .593384E-01 .194565 .601706E-01 .210704 .06985 .21336 closepath ! end of curve fill dfont endchar dfont char="M" !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=.173612 set path ! start of curve newpath ! start of curve amove .10033 .21336 bezier .112934 .210256 .107712 .195428 .11049 .18669 bezier .112567 .156194 .114914 .125809 .11684 .09525 bezier .136011 .132842 .158095 .168679 .17907 .205105 aline .18415 .210185 aline .18542 .21082 aline .186055 .211455 aline .187325 .21209 aline .191135 .21336 aline .22225 .21336 bezier .232153 .210625 .231207 .194946 .221615 .192405 aline .20828 .192405 aline .16764 .029845 aline .165735 .022225 aline .165259 .212725E-01 aline .165735 .02032 aline .17399 .02032 bezier .183893 .175849E-01 .182947 .001906 .173355 -.000635 aline .131445 -.000635 bezier .120934 .161081E-02 .122036 .018254 .13208 .02032 aline .14478 .02032 aline .145415 .02159 aline .186055 .18415 aline .186452 .185738 aline .186055 .187325 bezier .167163 .150312 .1455 .115297 .125095 .079375 aline .120015 .074295 aline .114935 .071755 aline .112395 .07112 aline .10795 .07112 aline .106045 .071755 bezier .952321E-01 .787212E-01 .101234 .935332E-01 .09779 .103505 bezier .958994E-01 .131451 .940944E-01 .159432 .092075 .187325 aline .051435 .024765 aline .0508 .022225 aline .503238E-01 .212725E-01 aline .0508 .02032 aline .059055 .02032 bezier .068958 .175849E-01 .680121E-01 .001906 .05842 -.000635 aline .01651 -.000635 bezier .599875E-02 .161081E-02 .710057E-02 .018254 .017145 .02032 aline .029845 .02032 aline .03048 .02159 aline .07112 .18415 aline .727869E-01 .190818 aline .07239 .192405 aline .06477 .192405 bezier .542588E-01 .194651 .553606E-01 .211294 .065405 .21336 closepath ! end of curve ! start of curve amove .923131E-01 .188278 aline .09271 .18669 aline .931069E-01 .188278 aline .09271 .189865 closepath ! end of curve ! start of curve amove .186214 .187643 aline .18669 .18669 aline .187166 .187643 aline .18669 .188595 closepath ! end of curve ! start of curve amove .116205 .094615 aline .11684 .09525 aline .116205 .095885 aline .11557 .09525 aline .116205 .094615 closepath ! end of curve fill dfont endchar dfont char="N" !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=.173612 set path ! start of curve newpath ! start of curve amove .108585 .21336 bezier .120596 .210666 .116821 .196784 .11938 .188595 bezier .125436 .133673 .131555 .793088E-01 .137795 .02413 aline .178435 .18669 aline .179467 .190818 aline .17907 .192405 aline .167005 .192405 bezier .156837 .194759 .157975 .211241 .16764 .21336 aline .217805 .21336 bezier .228405 .211137 .227332 .19517 .217805 .192405 aline .200025 .192405 aline .159385 .029845 aline .15367 .006985 aline .153035 .00508 aline .1524 .00381 aline .149225 .000635 bezier .14063 -.893041E-03 .12754 -.367638E-02 .12192 .00508 bezier .113861 .669475E-01 .107276 .127873 .100965 .189865 aline .060325 .027305 aline .059055 .022225 aline .585788E-01 .212725E-01 aline .059055 .02032 aline .07112 .02032 bezier .817199E-01 .180967E-01 .806473E-01 .213014E-02 .07112 -.000635 aline .02032 -.000635 bezier .101516E-01 .171945E-02 .112902E-01 .182009E-01 .020955 .02032 aline .0381 .02032 aline .038735 .02159 aline .079375 .18415 aline .810419E-01 .190818 aline .080645 .192405 aline .06858 .192405 bezier .584116E-01 .194759 .595502E-01 .211241 .069215 .21336 closepath ! end of curve fill dfont endchar dfont char="O" !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=.173612 set path ! start of curve newpath ! start of curve amove .1651 .21717 bezier .180275 .216521 .203174 .212589 .205105 .19304 bezier .206389 .170307 .201506 .148244 .196215 .125095 aline .187325 .089535 bezier .17809 .600817E-01 .173112 .247563E-01 .14732 .00508 bezier .135764 -.200282E-02 .122221 -.322117E-02 .109855 -.004445 aline .07366 -.004445 bezier .580568E-01 -.405504E-02 .329561E-01 .620246E-03 .033655 .02159 bezier .316413E-01 .442339E-01 .376464E-01 .659244E-01 .042545 .0889 aline .051435 .12446 bezier .610258E-01 .154019 .657024E-01 .190805 .093345 .208915 bezier .104486 .215211 .117247 .215803 .128905 .21717 aline .1651 .21717 closepath ! end of curve ! start of curve amove .12827 .19558 bezier .109029 .196438 .924885E-01 .182213 .08763 .16383 bezier .827046E-01 .152165 .797412E-01 .139774 .0762 .127635 aline .067945 .094615 bezier .063944 .071745 .543139E-01 .498522E-01 .061595 .027305 bezier .074447 .01262 .970958E-01 .163898E-01 .1143 .01778 bezier .133333 .184968E-01 .146565 .348031E-01 .151765 .05207 bezier .156359 .650079E-01 .160256 .781761E-01 .16383 .09144 aline .17272 .127 bezier .175913 .147474 .185691 .167893 .17653 .187325 aline .173355 .1905 aline .168275 .19304 aline .16637 .193675 aline .16383 .19431 aline .160655 .194945 aline .16002 .19558 aline .15494 .19558 aline .154305 .196215 aline .128905 .196215 aline .12827 .19558 closepath ! end of curve fill dfont endchar dfont char="P" !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=.173612 set path ! start of curve newpath ! start of curve amove .16383 .21336 bezier .185946 .212063 .206301 .193805 .20828 .17145 bezier .211857 .128133 .173023 .893587E-01 .131445 .08509 aline .080645 .08509 aline .08001 .083185 aline .06477 .022225 aline .642938E-01 .212725E-01 aline .06477 .02032 aline .07874 .02032 bezier .893399E-01 .180967E-01 .882673E-01 .213014E-02 .07874 -.000635 aline .019685 -.000635 bezier .951661E-02 .171945E-02 .106552E-01 .182009E-01 .02032 .02032 aline .03937 .02032 aline .040005 .02159 aline .080645 .18415 aline .823119E-01 .190818 aline .081915 .192405 aline .067945 .192405 bezier .577766E-01 .194759 .589152E-01 .211241 .06858 .21336 aline .16383 .21336 closepath ! end of curve ! start of curve amove .10668 .189865 aline .106045 .187325 aline .08636 .108585 aline .859367E-01 .107315 aline .08636 .106045 aline .130175 .106045 bezier .160417 .109324 .194093 .140707 .180975 .17272 bezier .175963 .18437 .163149 .190386 .151765 .192405 aline .107315 .192405 closepath ! end of curve fill dfont endchar dfont char="Q" !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=.138888 italic=.173612 set path ! start of curve newpath ! start of curve amove .1651 .21717 bezier .180275 .216521 .203174 .212589 .205105 .19304 bezier .206389 .170307 .201506 .148244 .196215 .125095 aline .187325 .089535 bezier .17809 .600817E-01 .173112 .247563E-01 .14732 .00508 aline .1397 .00127 aline .138271 .793731E-03 bezier .140778 -.141794E-01 .148951 -.293124E-01 .149225 -.04445 aline .14859 -.04572 aline .14605 -.04826 aline .14351 -.04953 aline .127 -.04953 bezier .118606 -.043957 .12002 -.310511E-01 .116205 -.022225 aline .11557 -.02032 aline .1143 -.01524 aline .113665 -.013335 aline .112395 -.008255 aline .11176 -.00635 aline .111216 -.417287E-02 aline .110808 -.396875E-02 aline .109855 -.004445 aline .07366 -.004445 bezier .580568E-01 -.405504E-02 .329561E-01 .620246E-03 .033655 .02159 bezier .316413E-01 .442339E-01 .376464E-01 .659244E-01 .042545 .0889 aline .051435 .12446 bezier .610258E-01 .154019 .657024E-01 .190805 .093345 .208915 bezier .104486 .215211 .117247 .215803 .128905 .21717 aline .1651 .21717 closepath ! end of curve ! start of curve amove .12954 .19558 bezier .110777 .19646 .935045E-01 .1835 .088265 .1651 bezier .826887E-01 .151316 .788497E-01 .136891 .07493 .122555 aline .066675 .089535 bezier .063174 .682156E-01 .536119E-01 .471876E-01 .061595 .02667 bezier .721201E-01 .142054E-01 .899242E-01 .169443E-01 .104775 .01651 bezier .10379 .285981E-01 .973986E-01 .404144E-01 .09652 .052705 aline .09779 .055245 aline .10033 .057785 aline .10287 .059055 aline .11938 .059055 bezier .12596 .507452E-01 .126069 .379807E-01 .130175 .02794 bezier .130654 .181433E-01 .139466 .285742E-01 .14224 .032385 bezier .15306 .493929E-01 .157568 .696648E-01 .163195 .0889 aline .17145 .12192 bezier .175132 .143756 .185016 .165402 .17653 .18669 bezier .164226 .199019 .145344 .196277 .12954 .19558 closepath ! end of curve fill dfont endchar dfont char="R" !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=.173612 set path ! start of curve newpath ! start of curve amove .145415 .21336 bezier .170841 .212831 .197165 .189667 .192405 .163195 bezier .190959 .136818 .169929 .116319 .147955 .104775 bezier .159658 .952534E-01 .163423 .793023E-01 .16002 .065405 aline .153035 .037465 bezier .151901 .303272E-01 .148314 .218622E-01 .15367 .01651 bezier .16782 .169877E-01 .164304 .374746E-01 .17526 .042545 aline .18542 .042545 bezier .198593 .359789E-01 .188336 .190189E-01 .182245 .010795 bezier .171279 -.845894E-02 .13771 -.108468E-01 .12954 .012065 bezier .121474 .350505E-01 .138837 .587952E-01 .136525 .08128 bezier .134145 .090439 .124085 .941985E-01 .116205 .095885 aline .079375 .095885 aline .06096 .022225 aline .604838E-01 .212725E-01 aline .06096 .02032 aline .073025 .02032 bezier .836249E-01 .180967E-01 .825523E-01 .213014E-02 .073025 -.000635 aline .01778 -.000635 bezier .761161E-02 .171945E-02 .875022E-02 .182009E-01 .018415 .02032 aline .03556 .02032 aline .036195 .02159 aline .076835 .18415 aline .785019E-01 .190818 aline .078105 .192405 aline .06604 .192405 bezier .558716E-01 .194759 .570102E-01 .211241 .066675 .21336 aline .145415 .21336 closepath ! end of curve ! start of curve amove .10287 .189865 aline .102235 .187325 aline .08509 .118745 aline .846138E-01 .117793 aline .08509 .11684 aline .117475 .11684 bezier .142466 .119496 .172553 .140468 .168275 .168275 bezier .164475 .182611 .149905 .190422 .136525 .192405 aline .103505 .192405 closepath ! end of curve fill dfont endchar dfont char="S" !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=.173612 set path ! start of curve newpath ! start of curve amove .14351 .21717 bezier .156947 .21584 .1719 .211066 .181928 .200819 bezier .187159 .207186 .190118 .21991 .201295 .21717 aline .203835 .2159 aline .20447 .215265 aline .20574 .21463 aline .206375 .213995 aline .20828 .210185 aline .20828 .205105 aline .19431 .149225 bezier .190406 .13803 .167751 .141636 .17145 .154305 bezier .173853 .170676 .167938 .191139 .149225 .19431 bezier .120246 .203039 .079954 .181197 .080645 .147955 bezier .830083E-01 .138707 .900579E-01 .13063 .099695 .12827 aline .135255 .11938 bezier .15784 .116666 .178516 .100128 .18161 .076835 bezier .186824 .265804E-01 .132072 -.139127E-01 .085725 -.003175 bezier .713069E-01 -.310195E-02 .573617E-01 .434367E-02 .461433E-01 .116417E-01 bezier .424934E-01 .317628E-02 .035836 -.913171E-02 .024765 -.003175 aline .022225 -.000635 aline .020955 .001905 aline .02032 .00381 aline .02032 .00635 aline .03429 .06223 bezier .372566E-01 .748604E-01 .061114 .718081E-01 .057785 .057785 bezier .509065E-01 .418776E-01 .615891E-01 .226616E-01 .079375 .019685 bezier .111933 .710874E-02 .155164 .291162E-01 .159385 .065405 bezier .159726 .774156E-01 .152239 .902153E-01 .1397 .093345 aline .10668 .1016 bezier .801302E-01 .10398 .548019E-01 .125672 .057785 .15367 bezier .625017E-01 .193541 .104815 .221014 .14351 .21717 closepath ! end of curve fill dfont endchar dfont char="T" !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=.173612 set path ! start of curve newpath ! start of curve amove .21844 .21336 aline .220345 .212725 aline .221615 .21209 aline .224155 .20955 aline .225425 .20701 aline .22606 .205105 aline .22606 .202565 aline .21717 .167005 bezier .214203 .154375 .190346 .157427 .193675 .17145 aline .198517 .190818 aline .19812 .192405 aline .153035 .192405 aline .112395 .029845 aline .11049 .022225 aline .110014 .212725E-01 aline .11049 .02032 aline .13208 .02032 bezier .142614 .181106E-01 .141569 .210732E-02 .13208 -.000635 aline .057785 -.000635 bezier .476166E-01 .171945E-02 .487552E-01 .182009E-01 .05842 .02032 aline .08509 .02032 aline .085725 .02159 aline .126365 .18415 aline .128032 .190818 aline .127635 .192405 aline .08255 .192405 aline .0762 .167005 bezier .732334E-01 .154375 .049376 .157427 .052705 .17145 aline .061595 .20701 aline .06223 .20828 aline .062865 .208915 aline .0635 .210185 aline .06477 .211455 aline .06731 .212725 aline .06858 .21336 closepath ! end of curve fill dfont endchar dfont char="U" !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=.173612 set path ! start of curve newpath ! start of curve amove .11938 .21336 bezier .12998 .211137 .128907 .19517 .11938 .192405 aline .099695 .192405 aline .067945 .065405 bezier .624976E-01 .476881E-01 .686696E-01 .02034 .090805 .01651 bezier .120204 .162068E-01 .143234 .430189E-01 .15113 .06985 aline .181372 .190818 aline .180975 .192405 aline .167005 .192405 bezier .156837 .194759 .157975 .211241 .16764 .21336 aline .22606 .21336 bezier .23666 .211137 .235587 .19517 .22606 .192405 aline .206375 .192405 aline .174625 .065405 bezier .163312 .244998E-01 .121026 -.145808E-01 .076835 -.001905 bezier .475879E-01 .808567E-02 .037823 .430874E-01 .04445 .06985 aline .746919E-01 .190818 aline .074295 .192405 aline .060325 .192405 bezier .501566E-01 .194759 .512952E-01 .211241 .06096 .21336 closepath ! end of curve fill dfont endchar dfont char="V" !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=.173612 set path ! start of curve newpath ! start of curve amove .114935 .21336 aline .116205 .212725 aline .118745 .211455 aline .120015 .210185 aline .12192 .206375 aline .12192 .201295 aline .121285 .198755 aline .120015 .196215 aline .11811 .19431 aline .1143 .192405 aline .10033 .192405 aline .099695 .19177 aline .099695 .0635 aline .09906 .062865 aline .09906 .034925 aline .098425 .03429 aline .098425 .0254 aline .980017E-01 .02413 aline .098425 .02286 bezier .106959 .042868 .117163 .621838E-01 .126365 .081915 aline .167005 .163195 aline .169545 .168275 aline .17018 .16891 aline .181451 .191453 aline .180975 .192405 aline .172085 .192405 bezier .161523 .194669 .162653 .211266 .17272 .21336 aline .221615 .21336 bezier .232126 .211114 .231024 .194471 .22098 .192405 aline .206375 .192405 aline .18161 .142875 aline .180975 .14224 aline .14732 .07493 aline .146685 .074295 aline .112395 .005715 aline .11176 .00508 aline .111125 .00381 aline .106045 -.00127 aline .102235 -.003175 aline .099695 -.00381 aline .083185 -.00381 aline .08128 -.003175 aline .080645 -.00254 aline .079375 -.001905 aline .07747 0 aline .0762 .00254 aline .0762 .03937 aline .075565 .040005 aline .075565 .17653 aline .07493 .177165 aline .07493 .19177 aline .074295 .192405 aline .06477 .192405 bezier .548934E-01 .195147 .557142E-01 .21085 .065405 .21336 closepath ! end of curve fill dfont endchar dfont char="W" !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=.173612 set path ! start of curve newpath ! start of curve amove .10414 .21336 bezier .114399 .211058 .113131 .194531 .103505 .192405 aline .085725 .192405 bezier .788443E-01 .136179 .725648E-01 .794421E-01 .065405 .023495 bezier .077213 .567392E-01 .934883E-01 .088133 .108585 .120015 aline .113665 .125095 aline .117475 .127 aline .11938 .127635 aline .12954 .127635 aline .131445 .127 aline .132715 .126365 aline .135255 .123825 aline .13589 .122555 bezier .137229 .890082E-01 .134652 .552332E-01 .13208 .02286 bezier .150827 .801263E-01 .175631 .135918 .194945 .192405 aline .18288 .192405 bezier .172429 .194481 .173109 .210832 .18288 .21336 aline .224155 .21336 bezier .234323 .211006 .233185 .194524 .22352 .192405 aline .2159 .192405 bezier .189909 .129193 .167082 .641695E-01 .140335 .00127 bezier .134202 -.55531E-02 .118196 -.722787E-02 .114935 .003175 bezier .115399 .366903E-01 .116842 .711991E-01 .11811 .103505 bezier .104469 .069335 .879076E-01 .361854E-01 .071755 .003175 aline .06731 -.00127 aline .0635 -.003175 aline .06096 -.00381 aline .051435 -.00381 bezier .400335E-01 .116249E-02 .482144E-01 .139038E-01 .04699 .02286 bezier .535378E-01 .079036 .602767E-01 .135191 .655108E-01 .191876 bezier .532076E-01 .191778 .519528E-01 .210173 .062865 .21336 closepath ! end of curve ! start of curve amove .11811 .103505 aline .118745 .10287 aline .11938 .103505 aline .118745 .10414 aline .11811 .103505 closepath ! end of curve ! start of curve amove .06477 .02286 aline .065405 .023495 aline .06477 .02413 aline .064135 .023495 aline .06477 .02286 closepath ! end of curve fill dfont endchar dfont char="X" !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=.173612 set path ! start of curve newpath ! start of curve amove .122555 .21336 bezier .132458 .210625 .131512 .194946 .12192 .192405 aline .11176 .192405 bezier .11581 .176251 .120702 .15746 .126365 .14097 bezier .138183 .158145 .153302 .175366 .163195 .192405 bezier .149789 .188796 .145604 .210005 .158115 .21336 aline .207645 .21336 bezier .218096 .211284 .217416 .194933 .207645 .192405 aline .1905 .192405 bezier .17111 .165749 .148876 .139319 .131445 .112395 bezier .139919 .816438E-01 .148996 .510682E-01 .15748 .02032 aline .169545 .02032 bezier .179996 .182441E-01 .179316 .189322E-02 .169545 -.000635 aline .120015 -.000635 bezier .109564 .144085E-02 .110244 .177918E-01 .120015 .02032 aline .130175 .02032 bezier .126086 .431924E-01 .1183 .659866E-01 .11303 .0889 bezier .968142E-01 .662828E-01 .078326 .428719E-01 .064135 .02032 bezier .767943E-01 .240823E-01 .082546 .503287E-02 .07112 0 aline .069215 -.000635 aline .019685 -.000635 aline .015875 .00127 aline .014605 .00254 aline .0127 .00635 aline .0127 .01143 aline .013335 .01397 aline .014605 .01651 aline .01651 .018415 aline .02032 .02032 aline .037465 .02032 bezier .603014E-01 .516883E-01 .084524 .822009E-01 .107103 .113665 bezier .993444E-01 .139851 .092121 .166192 .084455 .192405 aline .07239 .192405 bezier .618784E-01 .194565 .627106E-01 .210704 .07239 .21336 closepath ! end of curve fill dfont endchar dfont char="Y" !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=.173612 set path ! start of curve newpath ! start of curve amove .11557 .21336 bezier .125473 .210625 .124527 .194946 .114935 .192405 aline .10414 .192405 bezier .108983 .164931 .11731 .136065 .120015 .10922 bezier .137067 .138085 .159792 .165296 .177165 .192405 bezier .164513 .188618 .158808 .207706 .17018 .212725 aline .172085 .21336 aline .221615 .21336 bezier .231783 .211006 .230645 .194524 .22098 .192405 aline .20447 .192405 bezier .178178 .156455 .151521 .120767 .12573 .084455 aline .110093 .219075E-01 aline .11049 .02032 aline .122555 .02032 bezier .133155 .180967E-01 .132082 .213014E-02 .122555 -.000635 aline .06731 -.000635 bezier .571416E-01 .171945E-02 .582802E-01 .182009E-01 .067945 .02032 aline .085725 .02032 aline .1016 .08382 bezier .944058E-01 .1197 .850889E-01 .156302 .076835 .192405 aline .065405 .192405 bezier .548051E-01 .194628 .558777E-01 .210595 .065405 .21336 closepath ! end of curve fill dfont endchar dfont char="Z" !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=.173612 set path ! start of curve newpath ! start of curve amove .213995 .21336 aline .215265 .212725 aline .216535 .21209 aline .217805 .21082 aline .219075 .20828 aline .219075 .203835 aline .217805 .198755 bezier .164751 .138214 .108248 .801593E-01 .05334 .020955 aline .053975 .02032 aline .14986 .02032 aline .150495 .02159 aline .158115 .05207 bezier .160379 .657235E-01 .185948 .622678E-01 .18161 .047625 aline .17145 .006985 aline .170815 .00508 aline .17018 .00381 aline .167005 .000635 aline .165735 0 aline .16383 -.000635 aline .024765 -.000635 bezier .153119E-01 .255122E-02 .197647E-01 .01505 .024765 .02032 bezier .078457 .772163E-01 .131363 .134679 .184785 .19177 aline .18415 .192405 aline .09398 .192405 aline .08763 .167005 bezier .846634E-01 .154375 .060806 .157427 .064135 .17145 aline .073025 .20701 aline .07366 .20828 aline .074295 .208915 aline .07493 .210185 aline .0762 .211455 aline .07874 .212725 aline .08001 .21336 closepath ! end of curve fill dfont endchar dfont char="[" !-------------- Beginning of new char. dfont wid=.524996 hei=.694445 dep=.0833311 italic=.173612 set path ! start of curve newpath ! start of curve amove .221615 .24257 bezier .231496 .239963 .230781 .223968 .22098 .221615 aline .15875 .221615 aline .158115 .220345 aline .117475 .057785 aline .101203 -.73025E-02 aline .1016 -.00889 aline .15875 -.00889 bezier .168631 -.114969E-01 .167916 -.274917E-01 .158115 -.029845 aline .08128 -.029845 aline .079375 -.02921 aline .078105 -.028575 aline .075565 -.026035 aline .074295 -.023495 aline .07366 -.02159 aline .07366 -.01905 aline .1143 .14351 aline .13716 .23495 aline .137795 .236855 aline .13843 .238125 aline .141605 .2413 aline .142875 .241935 aline .14478 .24257 closepath ! end of curve fill dfont endchar dfont char="\" !-------------- Beginning of new char. dfont wid=.524996 hei=.694445 dep=.0833311 italic=.173612 set path ! start of curve newpath ! start of curve amove .093345 .24257 bezier .106443 .238324 .104087 .221522 .10795 .21082 bezier .125239 .135922 .142132 .609357E-01 .159385 -.01397 bezier .16371 -.271398E-01 .143721 -.364447E-01 .13716 -.02413 bezier .11624 .596195E-01 .983247E-01 .14441 .07874 .2286 aline .07874 .23241 aline .079375 .23495 aline .080645 .23749 aline .08382 .240665 aline .08636 .241935 aline .088265 .24257 closepath ! end of curve fill dfont endchar dfont char="]" !-------------- Beginning of new char. dfont wid=.524996 hei=.694445 dep=.0833311 italic=.173612 set path ! start of curve newpath ! start of curve amove .15748 .24257 aline .15875 .241935 aline .16002 .2413 aline .160655 .240665 aline .161925 .24003 aline .16256 .239395 aline .164465 .235585 aline .164465 .230505 aline .123825 .067945 aline .100965 -.023495 aline .099695 -.026035 aline .09779 -.02794 aline .09398 -.029845 aline .017145 -.029845 bezier .658331E-02 -.275814E-01 .771263E-02 -.109843E-01 .01778 -.00889 aline .08001 -.00889 aline .12065 .15367 aline .13716 .21971 aline .137636 .220663 aline .13716 .221615 aline .08001 .221615 bezier .694483E-01 .223879 .705776E-01 .240476 .080645 .24257 closepath ! end of curve fill dfont endchar dfont char="^" !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=.173612 set path ! start of curve newpath ! start of curve amove .14605 .21336 bezier .161711 .203702 .177822 .194669 .192405 .183515 bezier .198958 .172239 .180927 .157311 .172085 .16891 bezier .161188 .174699 .151815 .185468 .140335 .188595 aline .131445 .18415 aline .13081 .183515 aline .10541 .170815 aline .104775 .17018 aline .094615 .1651 bezier .832739E-01 .160931 .753177E-01 .179544 .084455 .186055 aline .098425 .19304 aline .10033 .193675 aline .1143 .20066 aline .116205 .201295 aline .130175 .20828 aline .13208 .208915 aline .1397 .212725 aline .141605 .21336 aline .14605 .21336 closepath ! end of curve fill dfont endchar dfont char="_" !-------------- Beginning of new char. dfont wid=.524996 hei=0 dep=.0951357 italic=.173612 set path ! start of curve newpath ! start of curve amove .14986 -.01016 bezier .162187 -.125907E-01 .162187 -.318593E-01 .14986 -.03429 aline .024765 -.03429 bezier .012033 -.321105E-01 .012033 -.123395E-01 .024765 -.01016 closepath ! end of curve fill dfont endchar dfont char="`" !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=.173612 set path ! start of curve newpath ! start of curve amove .17018 .238125 bezier .178344 .236047 .181899 .223574 .17399 .219075 bezier .152085 .208884 .13255 .188875 .128905 .164465 bezier .143657 .167655 .153203 .148534 .14351 .137795 bezier .132169 .121901 .105103 .132675 .10668 .151765 bezier .104318 .188699 .132461 .223888 .165735 .238125 closepath ! end of curve fill dfont endchar dfont char="a" !-------------- Beginning of new char. dfont wid=.524996 hei=.430555 dep=0 italic=.173612 set path ! start of curve newpath ! start of curve amove .12446 .151765 bezier .134384 .151246 .143281 .143298 .149225 .13843 bezier .153304 .151343 .174593 .148135 .17272 .133985 aline .147955 .034925 bezier .144259 .288956E-01 .149289 .142637E-01 .158115 .019685 bezier .168782 .297495E-01 .165733 .477222E-01 .17526 .057785 aline .17653 .05842 aline .178435 .059055 aline .18669 .059055 bezier .200654 .542706E-01 .191171 .381719E-01 .188595 .028575 bezier .183207 .946608E-02 .16399 -.959545E-02 .142875 -.000635 bezier .1345 .107606E-02 .128981 .107861E-01 .125095 .01524 bezier .107877 -.270819E-02 .749059E-01 -.114648E-01 .05715 .010795 bezier .332757E-01 .450645E-01 .472892E-01 .920718E-01 .070485 .12319 bezier .818606E-01 .136712 .961728E-01 .149007 .1143 .151765 closepath ! end of curve ! start of curve amove .11557 .130175 bezier .863156E-01 .120269 .737992E-01 .865881E-01 .06858 .059055 bezier .680344E-01 .444267E-01 .680458E-01 .246312E-01 .08382 .018415 bezier .110421 .208976E-01 .125175 .492328E-01 .132715 .07239 bezier .137799 .907012E-01 .141348 .112861 .127 .12827 aline .12446 .12954 aline .122555 .130175 aline .12192 .13081 aline .116205 .13081 closepath ! end of curve fill dfont endchar dfont char="b" !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=.173612 set path ! start of curve newpath ! start of curve amove .099695 .21336 aline .1016 .212725 aline .10287 .21209 aline .10541 .20955 aline .10668 .20701 aline .107315 .205105 aline .107315 .202565 aline .092075 .141605 aline .916517E-01 .140335 aline .091948 .139446 bezier .112413 .154666 .146261 .158309 .16256 .13462 bezier .187829 .967491E-01 .168855 .044777 .137795 .015875 bezier .118093 -.34451E-02 .807413E-01 -.119809E-01 .061595 .0127 bezier .467966E-01 .299224E-01 .463465E-01 .054282 .0508 .07493 aline .797719E-01 .190818 aline .079375 .192405 aline .05334 .192405 bezier .431716E-01 .194759 .443102E-01 .211241 .053975 .21336 closepath ! end of curve ! start of curve amove .123825 .130175 bezier .876503E-01 .120099 .692805E-01 .766966E-01 .07239 .042545 bezier .074494 .300234E-01 .849053E-01 .149519E-01 .09906 .01905 bezier .13416 .294036E-01 .152216 .702355E-01 .150495 .10414 bezier .149025 .116852 .139791 .1331 .12446 .13081 closepath ! end of curve fill dfont endchar dfont char="c" !-------------- Beginning of new char. dfont wid=.524996 hei=.430555 dep=0 italic=.173612 set path ! start of curve newpath ! start of curve amove .144145 .151765 bezier .16477 .151127 .185762 .131037 .1778 .10922 bezier .174218 .956249E-01 .151673 .932316E-01 .147955 .10795 aline .147955 .11557 aline .14859 .117475 aline .150495 .121285 aline .15367 .12446 bezier .135427 .1398 .109776 .124153 .09525 .109855 bezier .748466E-01 .877147E-01 .603607E-01 .470818E-01 .08636 .02413 bezier .102691 .142921E-01 .12336 .187513E-01 .140335 .02159 bezier .152565 .231627E-01 .161578 .315902E-01 .17145 .037465 bezier .183097 .392103E-01 .191406 .215308E-01 .179705 .01524 bezier .153454 -.458694E-02 .119289 -.454757E-02 .088265 -.000635 bezier .539583E-01 .826745E-02 .418846E-01 .493931E-01 .05207 .08001 bezier .638439E-01 .119594 .101211 .154498 .144145 .151765 closepath ! end of curve fill dfont endchar dfont char="d" !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=.173612 set path ! start of curve newpath ! start of curve amove .182245 .21336 aline .18415 .212725 aline .18542 .21209 aline .18796 .20955 aline .18923 .20701 aline .189865 .205105 aline .189865 .202565 aline .149225 .040005 bezier .146752 .032799 .144441 .224201E-01 .153035 .018415 bezier .163696 .192867E-01 .165045 .335909E-01 .168275 .04191 aline .170815 .05207 bezier .174306 .636286E-01 .196618 .610104E-01 .19431 .047625 bezier .189141 .276886E-01 .181715 .224816E-02 .15875 -.00254 bezier .145102 -.435084E-02 .130801 .287499E-02 .12573 .015875 bezier .109773 -.270513E-03 .817265E-01 -.108276E-01 .06223 .005715 bezier .371494E-01 .029829 .430757E-01 .686866E-01 .055245 .09779 bezier .06821 .12606 .095398 .15809 .130175 .150495 bezier .137866 .149075 .144393 .141701 .149225 .13843 aline .162322 .190818 aline .161925 .192405 aline .140335 .192405 bezier .129735 .194628 .130808 .210595 .140335 .21336 closepath ! end of curve ! start of curve amove .11557 .130175 bezier .863156E-01 .120269 .737992E-01 .865881E-01 .06858 .059055 bezier .680344E-01 .444267E-01 .680458E-01 .246312E-01 .08382 .018415 bezier .110421 .208976E-01 .125175 .492328E-01 .132715 .07239 bezier .137799 .907012E-01 .141348 .112861 .127 .12827 aline .12446 .12954 aline .122555 .130175 aline .12192 .13081 aline .116205 .13081 closepath ! end of curve fill dfont endchar dfont char="e" !-------------- Beginning of new char. dfont wid=.524996 hei=.430555 dep=0 italic=.173612 set path ! start of curve newpath ! start of curve amove .144145 .151765 bezier .166472 .150826 .187069 .128499 .179705 .106045 bezier .172087 .748607E-01 .135494 .675778E-01 .10922 .06604 aline .08763 .06604 aline .086995 .065405 aline .074295 .065405 aline .07366 .06604 bezier .691688E-01 .475963E-01 .783946E-01 .021523 .10033 .018415 bezier .124735 .178786E-01 .150603 .191801E-01 .169545 .03683 bezier .181676 .415297E-01 .192294 .021844 .179705 .01524 bezier .153454 -.458694E-02 .119289 -.454757E-02 .088265 -.000635 bezier .575527E-01 .755481E-02 .443284E-01 .043248 .050165 .07112 bezier .576753E-01 .115219 .981695E-01 .154615 .144145 .151765 closepath ! end of curve ! start of curve amove .132715 .130175 bezier .109163 .127315 .877773E-01 .107308 .08001 .08636 bezier .104553 .08833 .132506 .841035E-01 .1524 .102235 bezier .160383 .111757 .157776 .126869 .14478 .130175 aline .141605 .130175 aline .14097 .13081 aline .13335 .13081 aline .132715 .130175 closepath ! end of curve fill dfont endchar dfont char="f" !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=.222223 italic=.173612 set path ! start of curve newpath ! start of curve amove .16764 .215265 bezier .183575 .215294 .205418 .204145 .200025 .184785 bezier .197727 .170157 .17451 .165864 .169545 .180975 aline .169545 .18923 aline .17018 .191135 aline .170656 .192088 bezier .162108 .196593 .143932 .195615 .14224 .182245 bezier .139777 .171113 .136926 .160957 .136525 .14986 aline .17018 .14986 aline .17399 .147955 aline .17526 .146685 aline .177165 .142875 aline .177165 .137795 aline .17653 .135255 aline .17526 .132715 aline .173355 .13081 aline .169545 .128905 aline .132715 .128905 bezier .120023 .715857E-01 .115969 .136621E-01 .09779 -.04572 bezier .894041E-01 -.652267E-01 .699788E-01 -.085445 .04699 -.08001 bezier .288649E-01 -.816599E-01 .868394E-02 -.634123E-01 .01905 -.045085 bezier .248008E-01 -.338699E-01 .443779E-01 -.337639E-01 .047625 -.04699 aline .047625 -.053975 aline .04699 -.05588 aline .046355 -.05715 aline .04572 -.057785 bezier .580542E-01 -.653328E-01 .698008E-01 -.517124E-01 .074295 -.04064 bezier .917276E-01 .163896E-01 .972372E-01 .715083E-01 .107696 .127 aline .107315 .128905 aline .08128 .128905 bezier .706801E-01 .131128 .717527E-01 .147095 .08128 .14986 aline .111125 .14986 bezier .117628 .170043 .11437 .203021 .140335 .21209 aline .141605 .212725 aline .14351 .21336 aline .14859 .21463 aline .1524 .21463 aline .153035 .215265 aline .16764 .215265 closepath ! end of curve fill dfont endchar dfont char="g" !-------------- Beginning of new char. dfont wid=.524996 hei=.430555 dep=.222223 italic=.173612 set path ! start of curve newpath ! start of curve amove .13335 .151765 bezier .144716 .151095 .154693 .143234 .162651 .136253 bezier .164221 .149323 .185668 .150554 .18669 .136525 aline .18669 .133985 aline .14605 -.028575 bezier .138783 -.057623 .110518 -.772638E-01 .081915 -.080645 bezier .630187E-01 -.795602E-01 .398293E-01 -.847718E-01 .02667 -.067945 bezier .181059E-01 -.537245E-01 .034155 -.336147E-01 .04953 -.042545 bezier .551422E-01 -.460112E-01 .564112E-01 -.529564E-01 .05588 -.059055 bezier .814369E-01 -.638647E-01 .112958 -.536898E-01 .12192 -.02667 aline .131207 .104775E-01 aline .13081 .012065 bezier .108552 -.686319E-02 .698469E-01 -.531006E-02 .05588 .02286 bezier .339038E-01 .719014E-01 .666115E-01 .13762 .118745 .15113 aline .12192 .15113 aline .122555 .151765 aline .13335 .151765 closepath ! end of curve ! start of curve amove .123825 .130175 bezier .933191E-01 .122869 .768013E-01 .895516E-01 .07239 .061595 bezier .709207E-01 .458417E-01 .745008E-01 .251768E-01 .092075 .02032 bezier .12593 .218901E-01 .145415 .586246E-01 .150495 .088265 bezier .152283 .103773 .149133 .126162 .13081 .13081 aline .12446 .13081 closepath ! end of curve ! start of curve amove .13081 .012065 aline .131445 .01143 aline .13208 .012065 aline .131445 .0127 aline .13081 .012065 closepath ! end of curve fill dfont endchar dfont char="h" !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=.173612 set path ! start of curve newpath ! start of curve amove .09652 .21336 aline .098425 .212725 aline .099695 .21209 aline .102235 .20955 aline .103505 .20701 aline .10414 .205105 aline .10414 .202565 aline .885031E-01 .140018 aline .888093E-01 .138793 bezier .108546 .153552 .143421 .159815 .16002 .136525 bezier .173995 .107185 .15633 .756568E-01 .147955 .04699 aline .145415 .03937 aline .14478 .0381 aline .142875 .032385 aline .14224 .029845 aline .141605 .02921 aline .141605 .022225 bezier .147127 .128618E-01 .158284 .023649 .161925 .029845 bezier .169643 .038384 .166814 .546119E-01 .178435 .059055 aline .18669 .059055 bezier .199931 .549091E-01 .192123 .039757 .188595 .031115 bezier .179791 .976037E-02 .154646 -.118507E-01 .13081 .00127 bezier .116077 .106706E-01 .115166 .312287E-01 .122555 .04572 bezier .129992 .704053E-01 .142355 .949989E-01 .141605 .12065 bezier .13655 .136552 .115618 .131027 .10541 .12319 bezier .709149E-01 .929336E-01 .675717E-01 .427791E-01 .052705 .001905 bezier .457011E-01 -.787094E-02 .286258E-01 -.559024E-03 .03175 .01143 aline .07239 .17399 aline .765969E-01 .190818 aline .0762 .192405 aline .05461 .192405 bezier .440101E-01 .194628 .450827E-01 .210595 .05461 .21336 closepath ! end of curve ! start of curve amove .088265 .137795 aline .0889 .13843 aline .088265 .139065 aline .08763 .13843 aline .088265 .137795 closepath ! end of curve fill dfont endchar dfont char="i" !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=.173612 set path ! start of curve newpath ! start of curve amove .146685 .213995 bezier .163478 .210599 .159381 .184916 .14351 .183515 bezier .128156 .180098 .120757 .202491 .13335 .210185 aline .13462 .211455 aline .13843 .21336 aline .14097 .213995 closepath ! end of curve ! start of curve amove .111125 .151765 bezier .13167 .150651 .146866 .127092 .13716 .10795 bezier .12714 .811876E-01 .115141 .550932E-01 .106299 .02794 bezier .108091 .133058E-01 .126845 .183745E-01 .133985 .026035 bezier .142969 .341022E-01 .146182 .460031E-01 .15113 .056515 bezier .159243 .634464E-01 .176437 .573677E-01 .17145 .045085 bezier .163568 .148859E-01 .129476 -.141159E-01 .09779 .001905 bezier .809662E-01 .109433E-01 .788893E-01 .329164E-01 .088265 .04826 bezier .974537E-01 .715714E-01 .106359 .09519 .116205 .11811 bezier .119072 .130387 .10299 .134153 .09525 .127635 bezier .824621E-01 .120959 .768811E-01 .106952 .07239 .09398 bezier .647063E-01 .848771E-01 .455547E-01 .918013E-01 .051435 .104775 bezier .589129E-01 .130644 .828085E-01 .154333 .111125 .151765 closepath ! end of curve fill dfont endchar dfont char="j" !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=.222223 italic=.173612 set path ! start of curve newpath ! start of curve amove .17907 .213995 bezier .196219 .211242 .192346 .18539 .17653 .183515 aline .170815 .183515 bezier .154871 .18631 .157028 .210018 .17145 .21336 aline .173355 .213995 closepath ! end of curve ! start of curve amove .139065 .151765 bezier .158572 .149873 .174022 .130687 .16891 .111125 aline .13589 -.020955 bezier .126077 -.606005E-01 .803741E-01 -.951512E-01 .04064 -.07493 bezier .248082E-01 -.065543 .329383E-01 -.371319E-01 .05207 -.04064 bezier .611542E-01 -.041954 .647084E-01 -.515947E-01 .0635 -.05969 bezier .877061E-01 -.603938E-01 .106138 -.383496E-01 .112395 -.01651 aline .145415 .11557 bezier .14945 .126501 .134883 .134479 .12573 .12954 bezier .107254 .125 .979306E-01 .107251 .089535 .092075 bezier .809939E-01 .861242E-01 .653823E-01 .925319E-01 .070485 .10414 bezier .801745E-01 .128024 .101701 .148263 .127635 .151765 closepath ! end of curve fill dfont endchar dfont char="k" !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=.173612 set path ! start of curve newpath ! start of curve amove .099695 .21336 aline .1016 .212725 aline .10287 .21209 aline .10541 .20955 aline .10668 .20701 aline .107315 .205105 aline .107315 .202565 aline .08001 .093345 aline .795338E-01 .923925E-01 bezier .874838E-01 .947094E-01 .967961E-01 .104662 .103505 .11176 bezier .122694 .13104 .145233 .157551 .17526 .150495 bezier .193334 .14232 .192343 .118029 .18542 .10287 bezier .179562 .924189E-01 .161316 .924411E-01 .15748 .104775 aline .15748 .11303 bezier .157867 .120857 .170852 .122927 .165735 .13081 bezier .138505 .126742 .123242 .996658E-01 .103664 .828675E-01 bezier .12223 .078284 .143423 .620771E-01 .13843 .04064 bezier .136858 .033121 .135188 .213462E-01 .145415 .01905 bezier .157014 .158261E-01 .163449 .303235E-01 .167005 .03937 aline .169545 .04699 bezier .168846 .606305E-01 .190637 .642709E-01 .19431 .051435 bezier .191259 .260057E-01 .172869 -.539573E-02 .14351 -.00254 bezier .123626 -.122449E-02 .107868 .207905E-01 .114935 .040005 bezier .119257 .552874E-01 .100599 .619108E-01 .088265 .0635 aline .08763 .064135 aline .08382 .064135 aline .083185 .06477 aline .07747 .06477 aline .076835 .065405 aline .073025 .065405 aline .05842 .006985 bezier .562363E-01 -.460297E-02 .380878E-01 -.613532E-02 .034925 .005715 aline .034925 .01143 aline .075565 .17399 aline .797719E-01 .190818 aline .079375 .192405 aline .05334 .192405 bezier .431716E-01 .194759 .443102E-01 .211241 .053975 .21336 closepath ! end of curve fill dfont endchar dfont char="l" !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=.173612 set path ! start of curve newpath ! start of curve amove .135255 .21336 aline .13716 .212725 aline .13843 .21209 aline .14097 .20955 aline .14224 .20701 aline .142875 .205105 aline .142875 .202565 aline .102235 .040005 bezier .098132 .323098E-01 .100716 .225917E-01 .109855 .02032 bezier .119863 .152868E-01 .131512 .204067E-01 .136525 .03048 bezier .143664 .390994E-01 .140994 .547846E-01 .1524 .059055 aline .160655 .059055 bezier .17341 .552585E-01 .166543 .407853E-01 .163195 .032385 bezier .155185 .127454E-01 .135888 -.711897E-02 .11303 -.001905 bezier .919877E-01 -.20964E-02 .710813E-01 .174063E-01 .07747 .03937 aline .115332 .190818 aline .114935 .192405 aline .076835 .192405 bezier .662733E-01 .194669 .674026E-01 .211266 .07747 .21336 aline .135255 .21336 closepath ! end of curve fill dfont endchar dfont char="m" !-------------- Beginning of new char. dfont wid=.524996 hei=.430555 dep=0 italic=.173612 set path ! start of curve newpath ! start of curve amove .10922 .151765 bezier .120421 .150022 .128815 .141381 .13208 .13081 bezier .145099 .148544 .176035 .161812 .19304 .14224 bezier .206509 .124368 .198934 .101734 .193675 .081915 aline .18415 .05334 bezier .180844 .425913E-01 .174743 .309729E-01 .179705 .02032 bezier .192791 .228119E-01 .195013 .17371E-02 .18288 -.000635 bezier .165426 -.343828E-02 .154677 .166691E-01 .15875 .031115 bezier .161327 .623529E-01 .182993 .915345E-01 .18034 .122555 bezier .178957 .134458 .164692 .1313 .158115 .12573 bezier .131844 .995127E-01 .125328 .605406E-01 .114935 .026035 aline .109855 .005715 bezier .107591 -.793846E-02 .820222E-01 -.448279E-02 .08636 .01016 bezier .938155E-01 .441756E-01 .106475 .776854E-01 .113665 .111125 aline .113665 .12192 bezier .111832 .133785 .979108E-01 .131957 .090805 .12573 bezier .645337E-01 .995127E-01 .580182E-01 .605406E-01 .047625 .026035 aline .042545 .005715 bezier .402815E-01 -.793846E-02 .147122E-01 -.448279E-02 .01905 .01016 bezier .248649E-01 .336608E-01 .309376E-01 .570865E-01 .038735 .08001 aline .05461 .14351 bezier .583036E-01 .153609 .732572E-01 .150725 .074295 .140335 bezier .813069E-01 .146127 .898592E-01 .150421 .09906 .151765 closepath ! end of curve fill dfont endchar dfont char="n" !-------------- Beginning of new char. dfont wid=.524996 hei=.430555 dep=0 italic=.173612 set path ! start of curve newpath ! start of curve amove .070485 .151765 aline .07366 .15113 aline .07747 .14986 aline .08128 .147955 aline .081915 .14732 aline .083185 .146685 aline .0889 .14097 aline .089535 .1397 aline .09017 .139065 aline .093345 .132715 bezier .110538 .152267 .147015 .161594 .164465 .137795 bezier .177153 .115087 .165589 .899934E-01 .159385 .066675 aline .151765 .043815 aline .15113 .042545 aline .14732 .031115 bezier .144748 .263535E-01 .14568 .144287E-01 .15367 .019685 bezier .167573 .277913E-01 .165823 .470838E-01 .17526 .057785 bezier .183879 .627112E-01 .198284 .563439E-01 .193675 .045085 bezier .187776 .209736E-01 .168402 -.913795E-02 .1397 -.00127 bezier .118759 .65336E-02 .120454 .334988E-01 .128905 .050165 bezier .135449 .732873E-01 .147191 .972337E-01 .14605 .12065 bezier .14477 .13586 .125533 .131261 .117475 .12446 bezier .900366E-01 .100157 .832377E-01 .061239 .073025 .027305 bezier .069296 .161935E-01 .699667E-01 -.439223E-02 .05334 -.00254 aline .051435 -.001905 aline .048895 -.000635 aline .046355 .001905 aline .04445 .005715 aline .04445 .01143 aline .070485 .11557 aline .07112 .116205 aline .07112 .12573 aline .070485 .126365 aline .06985 .12827 bezier .064215 .135001 .594783E-01 .12351 .057785 .118745 bezier .529233E-01 .109488 .556013E-01 .939233E-01 .043815 .09017 bezier .355906E-01 .882085E-01 .261907E-01 .935076E-01 .028575 .10287 bezier .334733E-01 .122074 .039693 .147451 .06223 .151765 closepath ! end of curve fill dfont endchar dfont char="o" !-------------- Beginning of new char. dfont wid=.524996 hei=.430555 dep=0 italic=.173612 set path ! start of curve newpath ! start of curve amove .133985 .151765 bezier .164003 .148816 .181629 .115113 .17653 .08763 bezier .173453 .043178 .136518 -.445267E-02 .0889 -.00254 bezier .572619E-01 .274436E-03 .403877E-01 .363429E-01 .046355 .06477 bezier .050875 .108508 .874425E-01 .153759 .133985 .151765 closepath ! end of curve ! start of curve amove .12319 .130175 bezier .854742E-01 .120528 .626861E-01 .749408E-01 .07112 .038735 bezier .745846E-01 .218997E-01 .938172E-01 .133124E-01 .108585 .02159 bezier .141259 .379061E-01 .16192 .805174E-01 .14986 .114935 bezier .146083 .125586 .134775 .132049 .123825 .13081 closepath ! end of curve fill dfont endchar dfont char="p" !-------------- Beginning of new char. dfont wid=.524996 hei=.430555 dep=.222223 italic=.173612 set path ! start of curve newpath ! start of curve amove .073025 .151765 bezier .836812E-01 .150277 .924811E-01 .142678 .097155 .13335 bezier .113422 .151567 .147222 .160936 .164465 .139065 bezier .189245 .106844 .176146 .610502E-01 .15494 .029845 bezier .139613 .772598E-02 .108223 -.137261E-01 .081915 .00381 aline .080645 .00508 aline .079375 .005715 aline .074295 .010795 aline .07366 .012065 aline .056515 -.056515 aline .05588 -.05715 aline .056515 -.057785 aline .07874 -.057785 bezier .893017E-01 -.600486E-01 .881724E-01 -.766457E-01 .078105 -.07874 aline .012065 -.07874 bezier .150331E-02 -.764764E-01 .263263E-02 -.598793E-01 .0127 -.057785 aline .031115 -.057785 aline .03175 -.05715 aline .07239 .10541 aline .07493 .11557 bezier .785316E-01 .122247 .714692E-01 .135852 .0635 .128905 bezier .546722E-01 .118431 .560363E-01 .102787 .04826 .092075 bezier .401111E-01 .867306E-01 .255771E-01 .913764E-01 .028575 .10287 bezier .338036E-01 .122439 .041328 .147634 .064135 .151765 closepath ! end of curve ! start of curve amove .132715 .130175 bezier .103461 .120269 .909442E-01 .865881E-01 .085725 .059055 bezier .851794E-01 .444267E-01 .851908E-01 .246312E-01 .100965 .018415 bezier .127566 .208976E-01 .14232 .492328E-01 .14986 .07239 bezier .154944 .907012E-01 .158493 .112861 .144145 .12827 aline .141605 .12954 aline .1397 .130175 aline .139065 .13081 aline .13335 .13081 closepath ! end of curve fill dfont endchar dfont char="q" !-------------- Beginning of new char. dfont wid=.524996 hei=.430555 dep=.222223 italic=.173612 set path ! start of curve newpath ! start of curve amove .13335 .151765 bezier .145353 .150479 .156686 .143279 .16383 .13335 aline .164465 .133985 aline .1651 .13589 aline .16637 .13843 aline .167005 .140335 aline .170815 .147955 aline .173355 .150495 aline .174625 .15113 aline .17653 .151765 aline .180975 .151765 aline .184785 .14986 aline .18669 .147955 aline .18796 .145415 aline .18796 .139065 aline .14732 -.023495 aline .139065 -.056515 aline .13843 -.05715 aline .139065 -.057785 aline .165735 -.057785 bezier .175638 -.605201E-01 .174692 -.076199 .1651 -.07874 aline .081915 -.07874 bezier .072012 -.760049E-01 .729579E-01 -.060326 .08255 -.057785 aline .113665 -.057785 aline .1143 -.05715 aline .13081 .00889 aline .131286 .98425E-02 bezier .123241 .666564E-02 .11174 -.265944E-02 .10033 -.001905 bezier .714158E-01 -.806935E-02 .481289E-01 .214798E-01 .04826 .04826 bezier .468917E-01 .092822 .763632E-01 .143154 .122555 .151765 aline .13335 .151765 closepath ! end of curve ! start of curve amove .123825 .130175 bezier .876503E-01 .120099 .692805E-01 .766966E-01 .07239 .042545 bezier .074494 .300234E-01 .849053E-01 .149519E-01 .09906 .01905 bezier .13416 .294036E-01 .152216 .702355E-01 .150495 .10414 bezier .149025 .116852 .139791 .1331 .12446 .13081 closepath ! end of curve fill dfont endchar dfont char="r" !-------------- Beginning of new char. dfont wid=.524996 hei=.430555 dep=0 italic=.173612 set path ! start of curve newpath ! start of curve amove .08001 .151765 bezier .092025 .150202 .102812 .142716 .107315 .131445 bezier .12964 .157135 .17524 .159904 .19812 .133985 bezier .208783 .120827 .203638 .924497E-01 .18288 .09525 bezier .170333 .974611E-01 .168414 .114896 .1778 .12192 bezier .160024 .138654 .129677 .130323 .118745 .10922 bezier .973313E-01 .773305E-01 .924671E-01 .374559E-01 .08001 .001905 bezier .730061E-01 -.787094E-02 .559308E-01 -.559023E-03 .059055 .01143 aline .08509 .11557 bezier .905594E-01 .126555 .721969E-01 .137922 .066675 .125095 bezier .592625E-01 .115435 .606362E-01 .101489 .05334 .092075 bezier .451911E-01 .867306E-01 .306571E-01 .913764E-01 .033655 .10287 bezier .388973E-01 .122878 .479091E-01 .147017 .070485 .151765 closepath ! end of curve fill dfont endchar dfont char="s" !-------------- Beginning of new char. dfont wid=.524996 hei=.430555 dep=0 italic=.173612 set path ! start of curve newpath ! start of curve amove .13716 .151765 bezier .152314 .150446 .17356 .14511 .177165 .127 bezier .17847 .117412 .17593 .105365 .1651 .10287 bezier .152087 .993038E-01 .142612 .115181 .150971 .125413 bezier .133361 .134505 .109668 .132568 .093345 .12065 bezier .868302E-01 .114308 .081414 .101787 .092075 .09652 bezier .115587 .859768E-01 .147158 .921611E-01 .164465 .06858 bezier .182476 .434928E-01 .158508 .107001E-01 .132715 .003175 bezier .107123 -.502202E-02 .079194 -.498265E-02 .053975 .00381 bezier .359819E-01 .944779E-02 .273168E-01 .355387E-01 .04191 .048895 bezier .052854 .581468E-01 .712423E-01 .470028E-01 .065405 .03302 aline .0635 .02921 aline .062865 .028575 aline .06223 .027305 aline .06096 .026035 bezier .813671E-01 .014685 .106674 .167857E-01 .12827 .02413 bezier .141502 .287185E-01 .157953 .476806E-01 .144145 .05969 bezier .121006 .748646E-01 .872598E-01 .644021E-01 .069215 .089535 bezier .540984E-01 .11604 .801725E-01 .145931 .10668 .14986 aline .11303 .15113 aline .11811 .15113 aline .118745 .151765 aline .13716 .151765 closepath ! end of curve fill dfont endchar dfont char="t" !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=.173612 set path ! start of curve newpath ! start of curve amove .131445 .215265 aline .13335 .21463 aline .13462 .213995 aline .135255 .21336 aline .136525 .212725 aline .137795 .211455 aline .1397 .207645 aline .140335 .205105 aline .140335 .202565 aline .127635 .151765 aline .127159 .150813 aline .127635 .14986 aline .16129 .14986 bezier .171852 .147596 .170722 .130999 .160655 .128905 aline .12192 .128905 aline .098425 .034925 bezier .934124E-01 .023296 .108257 .145347E-01 .11811 .019685 bezier .136419 .246013E-01 .144799 .427954E-01 .15367 .05715 bezier .161983 .636682E-01 .178594 .557941E-01 .172085 .04445 bezier .160207 .125555E-01 .120282 -.015671 .08763 .00381 bezier .759893E-01 .113603E-01 .719809E-01 .262002E-01 .07493 .03937 aline .969169E-01 .127318 aline .09652 .128905 aline .062865 .128905 bezier .528926E-01 .131578 .538625E-01 .147389 .0635 .14986 aline .102235 .14986 aline .10287 .15113 aline .11684 .20701 aline .11811 .20955 aline .12192 .21336 aline .12446 .21463 aline .126365 .215265 aline .131445 .215265 closepath ! end of curve fill dfont endchar dfont char="u" !-------------- Beginning of new char. dfont wid=.524996 hei=.430555 dep=0 italic=.173612 set path ! start of curve newpath ! start of curve amove .079375 .151765 bezier .100053 .148995 .106779 .123405 .098425 .10668 bezier .910349E-01 .808875E-01 .754393E-01 .540238E-01 .08128 .02794 bezier .879311E-01 .107747E-01 .111672 .199479E-01 .11811 .03302 bezier .127758 .469428E-01 .132552 .637574E-01 .13716 .08001 aline .1524 .14097 bezier .155664 .154961 .178959 .151245 .175895 .136525 aline .150495 .034925 bezier .14738 .294818E-01 .149584 .154318E-01 .15875 .019685 bezier .168579 .301554E-01 .16583 .477414E-01 .17526 .057785 aline .17653 .05842 aline .178435 .059055 aline .18669 .059055 aline .188595 .05842 aline .189865 .057785 aline .19304 .05461 aline .193675 .05334 bezier .194006 .362659E-01 .186317 .180355E-01 .17526 .00508 bezier .162088 -.807309E-02 .137612 -.363734E-02 .129223 .125413E-01 bezier .110951 -.858436E-02 .696332E-01 -.883867E-02 .059055 .02032 bezier .497661E-01 .539234E-01 .675832E-01 .875865E-01 .078105 .11938 aline .078105 .12827 bezier .729548E-01 .135222 .640026E-01 .12594 .06096 .12065 bezier .535323E-01 .111973 .557158E-01 .969643E-01 .04572 .090805 bezier .374035E-01 .875252E-01 .025897 .926187E-01 .028575 .10287 bezier .343649E-01 .124072 .470811E-01 .147425 .070485 .151765 closepath ! end of curve fill dfont endchar dfont char="v" !-------------- Beginning of new char. dfont wid=.524996 hei=.430555 dep=0 italic=.173612 set path ! start of curve newpath ! start of curve amove .084455 .151765 bezier .106528 .149507 .116375 .123027 .106045 .104775 bezier .988966E-01 .807763E-01 .083184 .561682E-01 .09017 .031115 bezier .989603E-01 .130358E-01 .127132 .150927E-01 .13589 .032385 bezier .15271 .565754E-01 .15829 .881037E-01 .164465 .11557 aline .164465 .130175 bezier .156923 .139696 .166025 .156056 .178435 .15113 bezier .192011 .142051 .188299 .122687 .187325 .10922 bezier .178818 .694504E-01 .168639 .199964E-01 .128905 0 bezier .103274 -.924287E-02 .673446E-01 .450716E-02 .06477 .034925 bezier .625728E-01 .642693E-01 .765187E-01 .918142E-01 .08636 .118745 aline .08636 .12573 bezier .788056E-01 .138022 .636448E-01 .124486 .059055 .11557 bezier .526101E-01 .107813 .548495E-01 .933554E-01 .043815 .09017 bezier .355906E-01 .882085E-01 .261907E-01 .935076E-01 .028575 .10287 bezier .345189E-01 .125452 .510483E-01 .147793 .07493 .151765 closepath ! end of curve fill dfont endchar dfont char="w" !-------------- Beginning of new char. dfont wid=.524996 hei=.430555 dep=0 italic=.173612 set path ! start of curve newpath ! start of curve amove .196215 .151765 bezier .211833 .145487 .206504 .12432 .20574 .11176 bezier .19798 .783863E-01 .192427 .416362E-01 .17272 .0127 bezier .157414 -.964196E-02 .119741 -.688826E-02 .10795 .017145 bezier .940945E-01 -.110818E-01 .483589E-01 -.799131E-02 .037465 .020955 bezier .264324E-01 .051879 .456053E-01 .824163E-01 .053975 .11176 aline .053975 .12319 bezier .522017E-01 .131846 .397976E-01 .126555 .0381 .13589 bezier .353781E-01 .147203 .480041E-01 .153295 .05715 .14859 bezier .784217E-01 .139723 .759537E-01 .111645 .06858 .09398 bezier .624734E-01 .715823E-01 .045884 .480837E-01 .057785 .026035 bezier .672608E-01 .150188E-01 .862849E-01 .161334E-01 .09271 .029845 bezier .10041 .429256E-01 .104476 .578138E-01 .108585 .07239 aline .126365 .14351 bezier .129782 .154165 .147072 .15028 .145415 .139065 aline .125095 .057785 bezier .120731 .440832E-01 .12002 .213911E-01 .139065 .01905 bezier .155501 .150797E-01 .163969 .03483 .16891 .047625 bezier .176294 .737444E-01 .187405 .100467 .184785 .127 aline .18415 .12954 aline .18288 .13335 aline .182245 .13462 aline .18161 .136525 aline .18161 .142875 aline .183515 .146685 aline .18669 .14986 aline .18923 .15113 aline .191135 .151765 closepath ! end of curve fill dfont endchar dfont char="x" !-------------- Beginning of new char. dfont wid=.524996 hei=.430555 dep=0 italic=.173612 set path ! start of curve newpath ! start of curve amove .09525 .151765 bezier .105871 .15063 .115017 .144721 .122238 .137319 bezier .139829 .15396 .172397 .159148 .18796 .13716 bezier .196202 .124204 .196668 .993771E-01 .178435 .09525 bezier .164882 .922645E-01 .156464 .109583 .1651 .11938 aline .168275 .122555 bezier .167095 .133491 .151556 .132021 .14478 .126365 aline .14351 .12573 aline .14224 .12446 aline .14097 .123825 aline .137795 .12065 aline .13716 .11938 aline .13589 .11811 aline .13335 .11303 aline .132715 .111125 aline .11684 .047625 bezier .111113 .341355E-01 .120962 .154362E-01 .13716 .018415 bezier .155493 .220808E-01 .167409 .383177E-01 .17272 .055245 bezier .179384 .642582E-01 .199135 .577985E-01 .193675 .045085 bezier .184209 .942095E-02 .137218 -.178125E-01 .10541 .006985 aline .100965 .01143 aline .10033 .0127 bezier .822987E-01 -.835048E-02 .394082E-01 -.933389E-02 .03048 .020955 bezier .257726E-01 .345794E-01 .031581 .563175E-01 .04953 .053975 bezier .633567E-01 .520714E-01 .644413E-01 .322679E-01 .05334 .026035 bezier .622102E-01 .975232E-02 .849283E-01 .232598E-01 .089535 .03683 aline .106045 .10287 bezier .111691 .115492 .100222 .134955 .08509 .130175 bezier .668273E-01 .127337 .551122E-01 .110635 .050165 .09398 bezier .431606E-01 .858191E-01 .252001E-01 .903554E-01 .028575 .10287 bezier .035587 .127988 .580385E-01 .148536 .08382 .151765 closepath ! end of curve fill dfont endchar dfont char="y" !-------------- Beginning of new char. dfont wid=.524996 hei=.430555 dep=.222223 italic=.173612 set path ! start of curve newpath ! start of curve amove .08255 .151765 bezier .10441 .149459 .113271 .12301 .103505 .10541 bezier .960337E-01 .080412 .804883E-01 .546079E-01 .086995 .028575 bezier .958129E-01 .106425E-01 .121189 .193736E-01 .12954 .033655 bezier .140658 .476602E-01 .146155 .654215E-01 .15113 .08255 aline .165735 .14097 bezier .168999 .154961 .192294 .151245 .18923 .136525 aline .15367 -.005715 bezier .143179 -.043416 .112446 -.830797E-01 .06985 -.080645 bezier .451393E-01 -.799852E-01 .280628E-01 -.448099E-01 .047625 -.027305 bezier .059316 -.185046E-01 .769347E-01 -.315718E-01 .06985 -.045085 aline .06858 -.047625 aline .06731 -.048895 aline .066675 -.050165 aline .06604 -.0508 aline .06477 -.051435 bezier .652192E-01 -.612124E-01 .788425E-01 -.608214E-01 .085725 -.057785 bezier .111411 -.482078E-01 .127103 -.194953E-01 .131128 .555625E-02 bezier .107662 -.114249E-01 .666176E-01 -.193297E-02 .06223 .029845 bezier .569533E-01 .630054E-01 .781045E-01 .941358E-01 .08382 .12573 bezier .782486E-01 .137385 .064413 .125633 .060325 .11811 bezier .052721 .109987 .555708E-01 .939833E-01 .043815 .09017 bezier .355906E-01 .882085E-01 .261907E-01 .935076E-01 .028575 .10287 bezier .346637E-01 .124954 .495327E-01 .147741 .07366 .151765 closepath ! end of curve fill dfont endchar dfont char="z" !-------------- Beginning of new char. dfont wid=.524996 hei=.430555 dep=0 italic=.173612 set path ! start of curve newpath ! start of curve amove .113665 .151765 bezier .129326 .150885 .139602 .133173 .15494 .135255 bezier .161296 .139722 .162296 .149386 .17018 .151765 aline .17907 .151765 bezier .190868 .148156 .185443 .134306 .17907 .12827 bezier .153963 .915169E-01 .115365 .675899E-01 .084455 .036195 bezier .103331 .033877 .120234 .121018E-01 .139065 .0254 bezier .152596 .328603E-01 .159808 .472338E-01 .164465 .061595 bezier .17148 .069767 .189316 .065215 .186055 .052705 bezier .17781 .200196E-01 .143209 -.128605E-01 .10795 .000635 bezier .957002E-01 .652116E-02 .083657 .203147E-01 .069215 .0127 bezier .605609E-01 .104177E-01 .058315 .91491E-03 .0508 -.00254 aline .04191 -.00254 bezier .318829E-01 -.188043E-03 .330288E-01 .121714E-01 .03937 .01778 bezier .439641E-01 .252678E-01 .498415E-01 .318306E-01 .055245 .038735 aline .078105 .061595 bezier .978683E-01 .796389E-01 .120741 .957241E-01 .138049 .115697 bezier .124188 .121241 .108804 .135398 .094615 .12319 aline .0889 .117475 aline .088265 .116205 aline .08763 .11557 aline .086995 .1143 aline .08636 .113665 aline .084455 .109855 aline .08255 .10414 aline .08128 .1016 aline .07874 .09906 aline .0762 .09779 aline .06604 .09779 aline .0635 .09906 bezier .538308E-01 .108811 .649118E-01 .123403 .07112 .13208 bezier .789738E-01 .142304 .906254E-01 .149598 .103505 .151765 closepath ! end of curve fill dfont endchar dfont char="{" !-------------- Beginning of new char. dfont wid=.524996 hei=.694445 dep=.0833311 italic=.173612 set path ! start of curve newpath ! start of curve amove .2159 .24257 bezier .225781 .239963 .225066 .223968 .215265 .221615 bezier .195355 .22104 .172201 .221659 .15748 .20574 aline .155575 .20193 aline .15494 .200025 aline .139065 .136525 bezier .13607 .12139 .122163 .11148 .110913 .104563 bezier .121496 .983324E-01 .12593 .844615E-01 .12319 .073025 aline .107315 .009525 aline .10668 .00889 aline .10668 .001905 bezier .119901 -.111913E-01 .139344 -.665063E-02 .155575 -.01016 aline .15621 -.010795 aline .15748 -.01143 aline .158115 -.012065 aline .16002 -.015875 aline .16002 -.020955 aline .159385 -.023495 aline .158115 -.026035 aline .15621 -.02794 aline .1524 -.029845 bezier .130103 -.294211E-01 .103413 -.304129E-01 .08763 -.01143 bezier .826525E-01 -.46849E-02 .819832E-01 .37555E-02 .083185 .01143 aline .09906 .07493 bezier .105035 .881442E-01 .866477E-01 .928189E-01 .07747 .094615 aline .07366 .094615 aline .073025 .09525 aline .066675 .09525 aline .06604 .095885 aline .053975 .095885 bezier .440937E-01 .984919E-01 .448086E-01 .114487 .05461 .11684 bezier .748316E-01 .117244 .985976E-01 .117813 .11303 .13462 aline .1143 .13716 aline .11557 .14097 aline .131445 .20447 bezier .139201 .233508 .173622 .241126 .198755 .24257 closepath ! end of curve fill dfont endchar dfont char="|" !-------------- Beginning of new char. dfont wid=.524996 hei=.694445 dep=.0833311 italic=.173612 set path ! start of curve newpath ! start of curve amove .153035 .24257 aline .15494 .241935 aline .15748 .240665 aline .160655 .23749 aline .161925 .23495 aline .16256 .233045 aline .16256 .227965 aline .12192 .065405 aline .10033 -.020955 bezier .969199E-01 -.350066E-01 .742703E-01 -.310227E-01 .0762 -.01651 aline .076835 -.013335 aline .117475 .149225 aline .13843 .233045 aline .139065 .23495 aline .140335 .23749 aline .14351 .240665 aline .14605 .241935 aline .147955 .24257 closepath ! end of curve fill dfont endchar dfont char="}" !-------------- Beginning of new char. dfont wid=.524996 hei=.694445 dep=.0833311 italic=.173612 set path ! start of curve newpath ! start of curve amove .10287 .24257 bezier .122366 .241212 .150964 .236575 .155575 .212725 aline .155575 .2032 aline .15494 .200025 aline .139065 .136525 bezier .134875 .122711 .154549 .119154 .164465 .11811 aline .1651 .117475 aline .172085 .117475 aline .17272 .11684 aline .18415 .11684 bezier .194712 .114576 .193582 .979793E-01 .183515 .095885 bezier .163322 .953817E-01 .139187 .948924E-01 .125095 .07747 aline .123825 .07493 aline .12319 .073025 aline .10668 .006985 bezier .097977 -.213708E-01 .641996E-01 -.284018E-01 .03937 -.029845 aline .02286 -.029845 bezier .122983E-01 -.275814E-01 .134276E-01 -.109843E-01 .023495 -.00889 bezier .432021E-01 -.837794E-02 .653535E-01 -.867733E-02 .080645 .00635 aline .083185 .01143 aline .099695 .07747 bezier .103486 .916226E-01 .115106 .101365 .127476 .107633 bezier .117013 .11501 .1124 .12842 .11557 .14097 aline .131445 .20447 bezier .135093 .215876 .118692 .218322 .111125 .220345 aline .10668 .220345 aline .106045 .22098 aline .09906 .22098 aline .098425 .221615 aline .085725 .221615 bezier .751633E-01 .223879 .762926E-01 .240476 .08636 .24257 aline .10287 .24257 closepath ! end of curve fill dfont endchar dfont char="~" !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=.173612 set path ! start of curve newpath ! start of curve amove .13081 .21336 bezier .143175 .212336 .14717 .199185 .15621 .193887 bezier .170094 .196422 .17994 .206868 .19177 .21336 bezier .204186 .216114 .209719 .196363 .197485 .192405 bezier .182122 .180991 .160997 .163888 .14097 .17526 bezier .133407 .178948 .131459 .193712 .121285 .189865 bezier .109133 .186357 .100258 .17712 .089535 .17145 bezier .779041E-01 .168807 .715571E-01 .187665 .083185 .19177 bezier .949653E-01 .20103 .107952 .210324 .12319 .21336 closepath ! end of curve fill dfont endchar dfont char=127 !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=.173612 set path ! start of curve newpath ! start of curve amove .111125 .213995 bezier .126424 .211515 .127373 .189699 .114935 .18288 bezier .102864 .173213 .834799E-01 .185705 .089535 .20066 aline .092075 .20574 aline .097155 .21082 aline .100965 .212725 aline .10287 .21336 aline .104775 .213995 closepath ! end of curve ! start of curve amove .182245 .213995 bezier .200572 .211006 .197455 .183701 .180975 .18034 bezier .166219 .174331 .152928 .194497 .16383 .20574 aline .164465 .20701 aline .167005 .20955 aline .168275 .210185 aline .169545 .211455 aline .172085 .212725 aline .17399 .21336 aline .17653 .213995 closepath ! end of curve fill dfont endchar gle-graphics-4.2.4c/src/fonts/plcr.gle0000664000000000000000000007301211676336540016320 0ustar rootrootdfont design= 1428 dfont char=33 amove 307 1000 aline 230 923 aline 307 384 aline 384 923 aline 307 1000 amove 307 923 aline 307 692 amove 307 153 aline 230 76 aline 307 0 aline 384 76 aline 307 153 stroke dfont endchar dfont char=34 amove 230 615 aline 230 1000 amove 307 1000 aline 230 615 amove 692 615 aline 692 1000 amove 769 1000 aline 692 615 stroke dfont endchar dfont char=35 amove 230 0 aline 999 0 amove 615 0 aline 615 846 amove 230 461 aline 999 461 stroke dfont endchar dfont char=36 amove 153 692 aline 615 1000 amove 384 1076 aline 384 615 amove 615 692 aline 153 1000 stroke dfont endchar dfont char=37 amove 142 0 aline 1000 1000 aline 904 952 aline 761 904 aline 619 904 aline 476 952 aline 380 1000 aline 285 1000 aline 190 952 aline 142 857 aline 142 761 aline 238 666 aline 333 666 aline 428 714 aline 476 809 aline 476 904 aline 380 1000 amove 809 333 aline 714 285 aline 666 190 aline 666 95 aline 761 0 aline 857 0 aline 952 47 aline 1000 142 aline 1000 238 aline 904 333 aline 809 333 stroke dfont endchar dfont char=38 amove 230 461 aline 999 461 amove 999 846 aline 230 846 amove 615 846 aline 615 -1 stroke dfont endchar dfont char=39 amove 230 615 aline 230 1000 amove 307 1000 aline 230 615 stroke dfont endchar dfont char=40 amove 461 -154 aline 384 0 aline 307 307 aline 307 615 aline 384 923 aline 461 1076 amove 615 1230 aline 461 1076 aline 307 846 aline 230 615 aline 230 307 aline 307 76 aline 461 -154 aline 615 -308 stroke dfont endchar dfont char=41 amove 153 -308 aline 307 -154 aline 461 76 aline 538 307 aline 538 615 aline 461 846 aline 307 1076 aline 153 1230 amove 307 1076 aline 384 923 aline 461 615 aline 461 307 aline 384 0 aline 307 -154 stroke dfont endchar dfont char=42 amove 230 -308 aline 538 461 aline 230 1230 stroke dfont endchar dfont char=43 amove 384 -77 aline 461 230 amove 384 76 aline 461 -231 amove 538 -308 aline 461 -231 aline 384 -77 aline 384 76 aline 461 230 aline 461 307 aline 307 461 aline 461 615 aline 461 692 aline 384 846 aline 384 999 aline 461 1153 aline 538 1230 amove 461 1153 aline 384 846 amove 384 999 aline 461 692 stroke dfont endchar dfont char=44 amove 230 -231 aline 384 -77 aline 384 76 aline 307 153 aline 230 76 aline 307 -1 aline 384 76 stroke dfont endchar dfont char=45 amove 153 -308 aline 538 -308 aline 538 1230 aline 153 1230 amove 461 1230 aline 461 -308 stroke dfont endchar dfont char=46 amove 307 153 aline 230 76 aline 307 -1 aline 384 76 aline 307 153 stroke dfont endchar dfont char=47 amove 153 -308 aline 1000 1230 stroke dfont endchar dfont char=48 amove 384 0 aline 307 76 aline 230 307 aline 230 692 aline 307 923 aline 384 1000 aline 615 1000 aline 769 923 aline 846 692 aline 846 307 aline 769 76 aline 615 0 aline 384 0 aline 230 76 aline 153 307 aline 153 692 aline 230 923 aline 384 1000 amove 615 1000 aline 692 923 aline 769 692 aline 769 307 aline 692 76 aline 615 0 stroke dfont endchar dfont char=49 amove 230 0 aline 769 0 amove 538 0 aline 538 1000 aline 307 769 amove 461 923 aline 461 0 stroke dfont endchar dfont char=50 amove 153 0 aline 153 230 aline 230 384 aline 384 461 aline 615 538 aline 769 615 aline 846 769 aline 769 923 aline 615 1000 aline 384 1000 aline 230 923 aline 153 846 aline 153 769 aline 230 769 aline 230 846 amove 615 1000 aline 692 923 aline 769 769 aline 692 615 aline 615 538 amove 846 230 aline 846 153 aline 769 0 aline 538 0 aline 307 153 amove 153 76 aline 230 153 aline 307 153 aline 538 76 aline 769 76 aline 846 153 stroke dfont endchar dfont char=51 amove 230 153 aline 230 230 aline 153 230 aline 153 153 aline 230 76 aline 384 -1 aline 615 -1 aline 769 76 aline 846 230 aline 846 307 aline 769 461 aline 615 538 aline 461 538 amove 615 538 aline 769 615 aline 846 769 aline 769 923 aline 615 1000 aline 384 1000 aline 230 923 aline 153 846 aline 153 769 aline 230 769 aline 230 846 amove 615 1000 aline 692 923 aline 769 769 aline 692 615 aline 615 538 aline 692 461 aline 769 307 aline 769 230 aline 692 76 aline 615 0 stroke dfont endchar dfont char=52 amove 384 0 aline 769 0 amove 615 0 aline 615 1000 aline 76 307 aline 923 307 amove 538 0 aline 538 846 stroke dfont endchar dfont char=53 amove 230 153 aline 230 230 aline 153 230 aline 153 153 aline 230 76 aline 384 -1 aline 615 -1 aline 769 76 aline 846 230 aline 846 461 aline 769 615 aline 615 692 aline 384 692 aline 230 615 aline 153 538 aline 230 1000 aline 769 1000 aline 538 923 aline 230 923 amove 615 692 aline 692 615 aline 769 461 aline 769 230 aline 692 76 aline 615 0 stroke dfont endchar dfont char=54 amove 384 0 aline 307 76 aline 230 230 aline 230 615 aline 307 846 aline 461 1000 amove 769 846 aline 769 769 aline 846 769 aline 846 846 aline 769 923 aline 615 1000 aline 461 1000 aline 307 923 aline 230 846 aline 153 615 aline 153 230 aline 230 76 aline 384 0 aline 615 0 aline 769 76 aline 846 230 aline 846 384 aline 769 538 aline 615 615 aline 384 615 aline 153 461 amove 615 615 aline 692 538 aline 769 384 aline 769 230 aline 692 76 aline 615 0 stroke dfont endchar dfont char=55 amove 307 0 aline 461 307 aline 769 846 aline 692 846 aline 461 923 aline 307 923 aline 153 846 aline 307 999 aline 461 999 aline 692 846 amove 846 1000 aline 615 538 aline 384 0 amove 153 692 aline 153 1000 stroke dfont endchar dfont char=56 amove 384 0 aline 307 76 aline 230 230 aline 230 307 aline 307 461 aline 384 538 aline 307 615 aline 230 769 aline 307 923 aline 384 1000 aline 615 1000 aline 769 923 aline 846 769 aline 769 615 aline 615 538 aline 384 538 aline 230 615 aline 153 769 aline 230 923 aline 384 1000 amove 615 1000 aline 692 923 aline 769 769 aline 692 615 aline 615 538 aline 769 461 aline 846 307 aline 846 230 aline 769 76 aline 615 0 aline 384 0 aline 230 76 aline 153 230 aline 153 307 aline 230 461 aline 384 538 amove 615 538 aline 692 461 aline 769 307 aline 769 230 aline 692 76 aline 615 0 stroke dfont endchar dfont char=57 amove 230 153 aline 230 230 aline 153 230 aline 153 153 aline 230 76 aline 384 -1 aline 538 -1 aline 692 76 aline 769 153 aline 846 384 aline 846 769 aline 769 923 aline 615 1000 aline 384 1000 aline 230 923 aline 153 769 aline 153 615 aline 230 461 aline 384 384 aline 615 384 aline 846 538 amove 384 384 aline 307 461 aline 230 615 aline 230 769 aline 307 923 aline 384 1000 amove 615 1000 aline 692 923 aline 769 769 aline 769 384 aline 692 153 aline 538 0 stroke dfont endchar dfont char=58 amove 307 692 aline 230 615 aline 307 538 aline 384 615 aline 307 692 amove 307 153 aline 230 76 aline 307 0 aline 384 76 aline 307 153 stroke dfont endchar dfont char=59 amove 230 -231 aline 384 -77 aline 384 76 aline 307 153 aline 230 76 aline 307 -1 aline 384 76 amove 307 692 aline 230 615 aline 307 538 aline 384 615 aline 307 692 stroke dfont endchar dfont char=60 amove 952 857 aline 190 428 aline 952 0 stroke dfont endchar dfont char=61 amove 307 -308 aline 384 -231 aline 461 -77 aline 461 76 aline 384 230 aline 384 307 aline 538 461 aline 384 615 aline 384 692 aline 461 846 aline 461 999 aline 384 1153 aline 307 1230 amove 384 1153 aline 461 846 amove 461 1000 aline 384 692 amove 384 230 aline 461 -77 amove 461 76 aline 384 -231 stroke dfont endchar dfont char=62 amove 190 0 aline 952 428 aline 190 857 stroke dfont endchar dfont char=63 amove 461 76 aline 461 -1 aline 538 -1 aline 538 76 aline 461 76 amove 538 307 aline 461 307 aline 461 384 aline 538 461 aline 769 538 aline 846 692 aline 846 769 aline 769 923 aline 615 1000 aline 384 1000 aline 230 923 aline 153 769 aline 153 692 aline 230 692 aline 230 769 aline 153 769 amove 538 461 aline 692 538 aline 769 615 aline 769 846 aline 615 1000 stroke dfont endchar dfont char=64 amove 523 238 aline 476 285 aline 428 380 aline 428 523 aline 476 666 aline 571 761 amove 857 761 aline 809 380 aline 809 285 aline 904 238 aline 999 238 aline 1095 333 aline 1142 476 aline 1142 571 aline 1095 714 aline 1047 809 aline 952 904 aline 857 952 aline 714 1000 aline 571 1000 aline 428 952 aline 333 904 aline 238 809 aline 190 714 aline 142 571 aline 142 428 aline 190 285 aline 238 190 aline 333 95 aline 428 47 aline 571 0 aline 714 0 aline 857 47 aline 952 95 aline 1000 142 amove 904 238 aline 857 285 aline 857 380 aline 904 761 amove 857 619 aline 809 714 aline 714 761 aline 571 761 aline 476 714 aline 428 666 aline 380 523 aline 380 380 aline 428 285 aline 523 238 aline 666 238 aline 761 285 aline 809 380 stroke dfont endchar dfont char=65 amove 0 0 aline 384 0 amove 153 0 aline 538 1000 aline 923 0 amove 846 0 aline 538 769 amove 692 307 aline 307 307 amove 692 0 aline 1076 0 stroke dfont endchar dfont char=66 amove 153 0 aline 692 0 aline 923 76 aline 1000 230 aline 1000 307 aline 923 461 aline 692 538 aline 384 538 amove 692 538 aline 923 615 aline 1000 769 aline 923 923 aline 692 1000 aline 153 1000 amove 307 1000 aline 307 0 amove 384 0 aline 384 1000 amove 692 1000 aline 846 923 aline 923 769 aline 846 615 aline 692 538 aline 846 461 aline 923 307 aline 923 230 aline 846 76 aline 692 0 stroke dfont endchar dfont char=67 amove 461 0 aline 307 153 aline 230 384 aline 230 615 aline 307 846 aline 461 1000 amove 846 923 aline 923 1000 aline 923 692 aline 846 923 aline 692 1000 aline 461 1000 aline 307 923 aline 230 846 aline 153 615 aline 153 384 aline 230 153 aline 307 76 aline 461 -1 aline 692 -1 aline 846 76 aline 923 230 stroke dfont endchar dfont char=68 amove 153 0 aline 692 0 aline 923 76 aline 1000 153 aline 1076 384 aline 1076 615 aline 1000 846 aline 923 923 aline 692 1000 aline 153 1000 amove 307 1000 aline 307 0 amove 384 0 aline 384 1000 amove 692 1000 aline 846 923 aline 923 846 aline 1000 615 aline 1000 384 aline 923 153 aline 846 76 aline 692 0 stroke dfont endchar dfont char=69 amove 153 0 aline 923 0 aline 923 307 aline 846 0 amove 692 384 aline 692 692 amove 692 538 aline 384 538 amove 384 1000 aline 384 0 amove 307 0 aline 307 1000 amove 153 1000 aline 923 1000 aline 923 692 aline 846 1000 stroke dfont endchar dfont char=70 amove 153 0 aline 538 0 amove 384 0 aline 384 1000 amove 307 1000 aline 307 0 amove 692 384 aline 692 692 amove 692 538 aline 384 538 amove 153 1000 aline 923 1000 aline 923 692 aline 846 1000 stroke dfont endchar dfont char=71 amove 461 0 aline 307 153 aline 230 384 aline 230 615 aline 307 846 aline 461 1000 amove 846 923 aline 923 1000 aline 923 692 aline 846 923 aline 692 1000 aline 461 1000 aline 307 923 aline 230 846 aline 153 615 aline 153 384 aline 230 153 aline 307 76 aline 461 -1 aline 692 -1 aline 846 76 amove 846 -1 aline 846 384 amove 923 384 aline 923 -1 amove 692 -1 aline 769 76 aline 846 230 amove 692 384 aline 1076 384 stroke dfont endchar dfont char=72 amove 153 0 aline 538 0 amove 384 0 aline 384 1000 amove 307 1000 aline 307 0 amove 769 0 aline 1153 0 amove 1000 0 aline 1000 1000 amove 923 1000 aline 923 0 amove 923 538 aline 384 538 amove 538 1000 aline 153 1000 amove 769 1000 aline 1153 1000 stroke dfont endchar dfont char=73 amove 153 0 aline 538 0 amove 384 0 aline 384 1000 amove 307 1000 aline 307 0 amove 153 1000 aline 538 1000 stroke dfont endchar dfont char=74 amove 153 153 aline 230 230 aline 153 307 aline 76 230 aline 153 76 aline 307 -1 aline 384 -1 aline 538 76 aline 615 230 aline 615 1000 amove 538 1000 aline 538 230 aline 461 76 aline 384 0 amove 384 1000 aline 769 1000 stroke dfont endchar dfont char=75 amove 153 0 aline 538 0 amove 384 0 aline 384 1000 amove 307 1000 aline 307 0 amove 384 384 aline 1000 1000 amove 1153 1000 aline 769 1000 amove 538 1000 aline 153 1000 amove 538 538 aline 923 0 amove 1000 0 aline 615 538 amove 769 0 aline 1153 0 stroke dfont endchar dfont char=76 amove 153 0 aline 923 0 aline 923 307 aline 846 0 amove 384 0 aline 384 1000 amove 307 1000 aline 307 0 amove 153 1000 aline 538 1000 stroke dfont endchar dfont char=77 amove 153 0 aline 461 0 amove 307 0 aline 307 1000 amove 384 1000 aline 692 230 amove 692 0 aline 384 769 amove 384 1000 aline 153 1000 amove 1076 1000 aline 692 0 amove 923 0 aline 1307 0 amove 1153 0 aline 1153 1000 amove 1076 1000 aline 1076 0 amove 1076 1000 aline 1307 1000 stroke dfont endchar dfont char=78 amove 153 0 aline 461 0 amove 307 0 aline 307 1000 amove 384 1000 aline 923 153 amove 923 -1 aline 384 846 amove 384 1000 aline 153 1000 amove 769 1000 aline 1076 1000 amove 923 1000 aline 923 0 stroke dfont endchar dfont char=79 amove 461 0 aline 307 153 aline 230 384 aline 230 615 aline 307 846 aline 461 1000 aline 692 1000 aline 846 923 aline 923 846 aline 1000 615 aline 1000 384 aline 923 153 aline 846 76 aline 692 -1 aline 461 -1 aline 307 76 aline 230 153 aline 153 384 aline 153 615 aline 230 846 aline 307 923 aline 461 1000 amove 692 1000 aline 846 846 aline 923 615 aline 923 384 aline 846 153 aline 692 0 stroke dfont endchar dfont char=80 amove 153 0 aline 538 0 amove 384 0 aline 384 1000 amove 307 1000 aline 307 0 amove 384 461 aline 692 461 aline 923 538 aline 1000 692 aline 1000 769 aline 923 923 aline 692 1000 aline 153 1000 amove 692 1000 aline 846 923 aline 923 769 aline 923 692 aline 846 538 aline 692 461 stroke dfont endchar dfont char=81 amove 384 76 aline 384 230 aline 461 307 aline 615 307 aline 692 230 aline 769 -154 aline 846 -231 aline 923 -231 aline 1000 -154 amove 923 -231 aline 846 -154 aline 769 0 aline 692 230 amove 692 0 aline 846 153 aline 923 384 aline 923 615 aline 846 846 aline 692 1000 amove 461 1000 aline 692 1000 aline 846 923 aline 923 846 aline 1000 615 aline 1000 384 aline 923 153 aline 846 76 aline 692 0 aline 461 0 aline 307 76 aline 230 153 aline 153 384 aline 153 615 aline 230 846 aline 307 923 aline 461 1000 aline 307 846 aline 230 615 aline 230 384 aline 307 153 aline 461 0 stroke dfont endchar dfont char=82 amove 153 0 aline 538 0 amove 384 0 aline 384 1000 amove 307 1000 aline 307 0 amove 384 461 aline 692 461 aline 923 538 aline 1000 692 aline 1000 769 aline 923 923 aline 692 1000 aline 153 1000 amove 692 1000 aline 846 923 aline 923 769 aline 923 692 aline 846 538 aline 692 461 aline 769 384 aline 846 76 aline 923 0 aline 1000 0 aline 1076 76 amove 1000 0 aline 923 76 aline 846 384 aline 692 461 stroke dfont endchar dfont char=83 amove 307 153 aline 230 -1 aline 230 307 aline 307 153 aline 384 76 aline 538 0 aline 692 0 aline 846 76 aline 923 153 aline 923 384 aline 846 461 aline 692 538 aline 461 615 aline 307 692 aline 230 769 amove 846 846 aline 923 1000 aline 923 692 aline 846 846 aline 769 923 aline 615 1000 aline 461 1000 aline 307 923 aline 230 846 aline 230 692 aline 307 615 aline 461 538 aline 692 461 aline 846 384 aline 923 307 stroke dfont endchar dfont char=84 amove 384 0 aline 769 0 amove 615 0 aline 615 1000 amove 538 1000 aline 538 0 amove 230 1000 aline 153 692 aline 153 1000 aline 999 1000 aline 999 692 aline 923 1000 stroke dfont endchar dfont char=85 amove 538 0 aline 461 76 aline 384 230 aline 384 1000 amove 307 1000 aline 307 230 aline 384 76 aline 538 0 aline 769 0 aline 923 76 aline 1000 230 aline 1000 1000 amove 846 1000 aline 1153 1000 amove 538 1000 aline 153 1000 stroke dfont endchar dfont char=86 amove 538 0 aline 153 1000 amove 230 1000 aline 538 230 amove 538 0 aline 923 1000 amove 1076 1000 aline 692 1000 amove 384 1000 aline 0 1000 stroke dfont endchar dfont char=87 amove 461 0 aline 230 1000 amove 307 1000 aline 461 307 amove 461 0 aline 692 1000 aline 923 0 aline 1153 1000 amove 1000 1000 aline 1307 1000 amove 769 1000 aline 923 307 amove 461 1000 aline 76 1000 stroke dfont endchar dfont char=88 amove 76 0 aline 461 0 amove 230 0 aline 923 1000 amove 1076 1000 aline 692 1000 amove 461 1000 aline 76 1000 amove 230 1000 aline 846 0 amove 923 0 aline 307 1000 amove 692 0 aline 1076 0 stroke dfont endchar dfont char=89 amove 307 0 aline 692 0 amove 538 0 aline 538 461 aline 846 1000 amove 1000 1000 aline 615 1000 amove 384 1000 aline 0 1000 amove 153 1000 aline 461 461 aline 461 0 amove 538 461 aline 230 1000 stroke dfont endchar dfont char=90 amove 153 0 aline 769 1000 amove 846 1000 aline 230 0 amove 153 0 aline 846 0 aline 846 307 aline 769 0 amove 846 1000 aline 153 1000 aline 153 692 aline 230 1000 stroke dfont endchar dfont char=91 amove 190 -334 aline 190 1190 aline 523 1190 amove 238 1190 aline 238 -334 amove 190 -334 aline 523 -334 stroke dfont endchar stroke dfont endchar dfont char=93 amove 142 -334 aline 476 -334 aline 476 1190 aline 142 1190 amove 428 1190 aline 428 -334 stroke dfont endchar stroke dfont endchar stroke dfont endchar dfont char=96 amove 238 904 aline 285 952 aline 238 1000 aline 190 952 aline 190 857 aline 238 761 aline 285 714 stroke dfont endchar dfont char=97 amove 384 0 aline 307 76 aline 307 230 aline 461 384 amove 692 461 aline 461 384 aline 307 307 aline 230 230 aline 230 76 aline 307 -1 aline 538 -1 aline 615 76 aline 692 230 amove 846 -1 aline 692 76 aline 692 538 aline 615 692 amove 384 692 aline 307 615 aline 307 538 aline 230 538 aline 230 615 aline 384 692 aline 615 692 aline 769 538 aline 769 76 aline 846 -1 aline 923 -1 stroke dfont endchar dfont char=98 amove 307 0 aline 307 1000 amove 384 1000 aline 384 0 amove 384 230 aline 461 76 aline 615 0 aline 769 0 aline 923 76 aline 1000 230 aline 1000 461 aline 923 615 aline 769 692 aline 615 692 aline 461 615 aline 384 461 amove 769 692 aline 846 615 aline 923 461 aline 923 230 aline 846 76 aline 769 0 amove 384 1000 aline 153 1000 stroke dfont endchar dfont char=99 amove 384 0 aline 307 76 aline 230 230 aline 230 461 aline 307 615 aline 384 692 amove 769 538 aline 692 538 aline 692 461 aline 769 461 aline 769 538 aline 692 615 aline 538 692 aline 384 692 aline 230 615 aline 153 461 aline 153 230 aline 230 76 aline 384 0 aline 538 0 aline 692 76 aline 769 153 stroke dfont endchar dfont char=100 amove 384 0 aline 307 76 aline 230 230 aline 230 461 aline 307 615 aline 384 692 amove 615 1000 aline 846 1000 aline 846 0 amove 769 0 aline 769 1000 amove 769 461 aline 692 615 aline 538 692 aline 384 692 aline 230 615 aline 153 461 aline 153 230 aline 230 76 aline 384 0 aline 538 0 aline 692 76 aline 769 230 amove 769 0 aline 1000 0 stroke dfont endchar dfont char=101 amove 230 384 aline 769 384 aline 769 461 aline 692 615 aline 538 692 aline 384 692 aline 230 615 aline 153 461 aline 153 230 aline 230 76 aline 384 0 aline 538 0 aline 692 76 aline 769 153 amove 692 384 aline 692 538 aline 538 692 amove 384 692 aline 307 615 aline 230 461 aline 230 230 aline 307 76 aline 384 0 stroke dfont endchar dfont char=102 amove 153 0 aline 538 0 amove 384 0 aline 384 846 aline 461 1000 amove 615 1000 aline 692 923 aline 692 846 aline 769 846 aline 769 923 aline 615 1000 aline 461 1000 aline 307 846 aline 307 0 amove 153 692 aline 538 692 stroke dfont endchar dfont char=103 amove 230 76 aline 307 -1 aline 615 -1 aline 769 -77 aline 769 -231 aline 615 -308 aline 307 -308 aline 153 -231 aline 153 -77 aline 307 -1 amove 384 230 aline 307 384 aline 307 538 aline 384 692 aline 538 692 aline 692 538 aline 692 384 aline 538 230 aline 384 230 aline 230 384 aline 230 538 aline 384 692 amove 538 692 aline 615 538 aline 615 384 aline 538 230 amove 307 307 aline 230 230 aline 230 0 aline 307 -77 aline 615 -77 aline 769 -154 amove 615 615 aline 692 692 aline 769 692 stroke dfont endchar dfont char=104 amove 153 0 aline 538 0 amove 384 0 aline 384 1000 aline 153 1000 amove 307 1000 aline 307 0 amove 769 0 aline 1153 0 amove 1000 0 aline 1000 461 aline 923 615 aline 769 692 aline 615 692 aline 461 615 aline 384 461 amove 769 692 aline 846 615 aline 923 461 aline 923 0 stroke dfont endchar dfont char=105 amove 153 0 aline 538 0 amove 384 0 aline 384 692 aline 153 692 amove 307 692 aline 307 0 amove 307 1000 aline 307 923 aline 384 923 aline 384 1000 aline 307 1000 stroke dfont endchar dfont char=106 amove 76 -231 aline 153 -231 aline 153 -154 aline 76 -154 aline 76 -231 aline 153 -308 aline 307 -308 aline 461 -154 aline 461 692 aline 230 692 amove 384 692 aline 384 -154 aline 307 -308 amove 384 999 aline 384 923 aline 461 923 aline 461 1000 aline 384 1000 stroke dfont endchar dfont char=107 amove 153 0 aline 538 0 amove 384 0 aline 384 1000 aline 153 1000 amove 307 1000 aline 307 0 amove 384 230 aline 1000 692 amove 1153 692 aline 769 692 amove 692 384 aline 1000 0 amove 923 0 aline 615 384 amove 769 0 aline 1153 0 stroke dfont endchar dfont char=108 amove 153 0 aline 538 0 amove 384 0 aline 384 1000 aline 153 1000 amove 307 1000 aline 307 0 stroke dfont endchar dfont char=109 amove 153 0 aline 538 0 amove 384 0 aline 384 692 aline 153 692 amove 307 692 aline 307 0 amove 769 0 aline 1153 0 amove 1000 0 aline 1000 461 aline 923 615 aline 769 692 aline 615 692 aline 461 615 aline 384 461 amove 769 692 aline 846 615 aline 923 461 aline 923 0 amove 1384 0 aline 1769 0 amove 1615 0 aline 1615 461 aline 1538 615 aline 1384 692 aline 1230 692 aline 1076 615 aline 1000 461 amove 1384 692 aline 1461 615 aline 1538 461 aline 1538 0 stroke dfont endchar dfont char=110 amove 153 0 aline 538 0 amove 384 0 aline 384 692 aline 153 692 amove 307 692 aline 307 0 amove 769 0 aline 1153 0 amove 1000 0 aline 1000 461 aline 923 615 aline 769 692 aline 615 692 aline 461 615 aline 384 461 amove 769 692 aline 846 615 aline 923 461 aline 923 0 stroke dfont endchar dfont char=111 amove 384 0 aline 307 76 aline 230 230 aline 230 461 aline 307 615 aline 384 692 aline 615 692 aline 769 615 aline 846 461 aline 846 230 aline 769 76 aline 615 0 aline 384 0 aline 230 76 aline 153 230 aline 153 461 aline 230 615 aline 384 692 amove 615 692 aline 692 615 aline 769 461 aline 769 230 aline 692 76 aline 615 0 stroke dfont endchar dfont char=112 amove 153 -308 aline 538 -308 amove 384 -308 aline 384 692 aline 153 692 amove 307 692 aline 307 -308 amove 384 230 aline 461 76 aline 615 -1 aline 769 -1 aline 923 76 aline 1000 230 aline 1000 461 aline 923 615 aline 769 692 aline 615 692 aline 461 615 aline 384 461 amove 769 692 aline 846 615 aline 923 461 aline 923 230 aline 846 76 aline 769 0 stroke dfont endchar dfont char=113 amove 384 0 aline 307 76 aline 230 230 aline 230 461 aline 307 615 aline 384 692 amove 769 692 aline 769 -308 amove 846 -308 aline 846 692 amove 769 461 aline 692 615 aline 538 692 aline 384 692 aline 230 615 aline 153 461 aline 153 230 aline 230 76 aline 384 -1 aline 538 -1 aline 692 76 aline 769 230 amove 615 -308 aline 1000 -308 stroke dfont endchar dfont char=114 amove 153 0 aline 538 0 amove 384 0 aline 384 692 aline 153 692 amove 307 692 aline 307 0 amove 384 461 aline 461 615 aline 615 692 aline 769 692 aline 846 615 aline 846 538 aline 769 538 aline 769 615 aline 846 615 stroke dfont endchar dfont char=115 amove 384 0 aline 307 76 aline 307 153 aline 230 153 aline 230 76 aline 384 0 aline 615 0 aline 769 76 aline 769 307 aline 615 384 aline 384 461 aline 230 538 amove 615 692 aline 692 615 aline 692 538 aline 769 538 aline 769 615 aline 615 692 aline 384 692 aline 230 615 aline 230 461 aline 384 384 aline 615 307 aline 769 230 stroke dfont endchar dfont char=116 amove 461 0 aline 384 153 aline 384 1000 amove 307 1000 aline 307 153 aline 461 -1 aline 615 -1 aline 692 76 aline 692 153 amove 615 692 aline 153 692 stroke dfont endchar dfont char=117 amove 538 0 aline 461 76 aline 384 230 aline 384 692 aline 153 692 amove 307 692 aline 307 230 aline 384 76 aline 538 -1 aline 692 -1 aline 846 76 aline 923 230 amove 923 -1 aline 923 692 amove 999 692 aline 999 0 amove 923 0 aline 1153 0 amove 1000 692 aline 769 692 stroke dfont endchar dfont char=118 amove 538 0 aline 230 692 amove 307 692 aline 538 153 amove 538 0 aline 846 692 amove 692 692 aline 1000 692 amove 461 692 aline 76 692 stroke dfont endchar dfont char=119 amove 461 0 aline 230 692 amove 307 692 aline 461 230 amove 461 -1 aline 692 692 aline 923 -1 aline 1153 692 amove 1000 692 aline 1307 692 amove 769 692 aline 923 230 amove 461 692 aline 76 692 stroke dfont endchar dfont char=120 amove 76 0 aline 384 0 amove 230 0 aline 846 692 amove 692 692 aline 1000 692 amove 461 692 aline 76 692 amove 230 692 aline 769 0 amove 846 0 aline 307 692 amove 615 0 aline 1000 0 stroke dfont endchar dfont char=121 amove 76 -231 aline 153 -231 aline 153 -154 aline 76 -154 aline 76 -231 aline 153 -308 aline 230 -308 aline 384 -231 aline 538 -1 aline 846 692 amove 692 692 aline 1000 692 amove 461 692 aline 76 692 amove 230 692 aline 538 0 amove 538 153 aline 307 692 stroke dfont endchar dfont char=122 amove 153 0 aline 692 692 amove 769 692 aline 230 0 amove 153 0 aline 769 0 aline 769 153 aline 692 0 amove 769 692 aline 153 692 aline 153 538 aline 230 692 stroke dfont endchar dfont char=123 amove 380 238 aline 333 95 aline 333 -96 aline 380 -239 amove 476 -334 aline 333 -191 aline 285 -48 aline 285 47 aline 333 190 aline 428 285 aline 428 333 aline 238 428 aline 428 523 aline 428 571 aline 333 666 aline 285 809 aline 285 904 aline 333 1047 aline 476 1190 amove 380 1095 aline 333 952 aline 333 761 aline 380 619 stroke dfont endchar dfont char=124 amove 230 -308 aline 230 1230 aline 615 1230 amove 307 1230 aline 307 -308 amove 230 -308 aline 615 -308 stroke dfont endchar dfont char=125 amove 238 -334 aline 380 -191 aline 428 -48 aline 428 47 aline 380 190 aline 285 285 aline 285 333 aline 476 428 aline 285 523 aline 285 571 aline 380 666 aline 428 809 aline 428 904 aline 380 1047 aline 238 1190 amove 333 1095 aline 380 952 aline 380 761 aline 333 619 amove 333 238 aline 380 95 aline 380 -96 aline 333 -239 stroke dfont endchar dfont char=126 amove 307 1000 aline 230 923 aline 230 769 aline 307 692 aline 461 692 aline 538 769 aline 538 923 aline 461 1000 aline 307 1000 stroke dfont endchar gle-graphics-4.2.4c/src/fonts/plgi.gle0000664000000000000000000015041111676336540016312 0ustar rootrootdfont design= 1428 dfont char=33 amove 285 95 aline 238 47 aline 333 47 aline 285 95 amove 285 142 aline 190 47 aline 285 0 aline 380 47 aline 285 142 amove 285 333 aline 285 857 aline 238 904 aline 285 952 aline 333 904 aline 285 857 amove 285 1000 aline 238 952 aline 142 904 aline 238 857 aline 285 333 aline 333 857 aline 428 904 aline 333 952 aline 285 1000 stroke dfont endchar dfont char=34 amove 190 666 aline 285 714 aline 333 809 aline 333 904 aline 285 1000 aline 190 904 aline 285 809 aline 285 714 amove 285 952 aline 238 904 aline 285 857 aline 285 952 stroke dfont endchar stroke dfont endchar dfont char=36 amove 238 95 aline 190 190 amove 380 0 aline 285 47 aline 238 142 aline 238 238 aline 142 190 aline 190 95 aline 238 47 aline 380 0 aline 571 0 aline 714 47 aline 761 95 aline 809 190 aline 809 333 aline 761 428 aline 619 523 aline 333 619 aline 238 666 aline 190 761 aline 190 857 aline 238 952 amove 190 714 aline 238 619 aline 333 571 aline 619 476 aline 714 428 aline 761 333 amove 714 47 aline 761 142 aline 761 285 aline 714 380 aline 619 428 aline 333 523 aline 190 619 aline 142 714 aline 142 857 aline 238 952 aline 380 1000 aline 571 1000 aline 714 952 aline 761 904 aline 809 809 aline 714 761 aline 714 857 aline 666 952 aline 571 1000 amove 714 904 aline 761 809 amove 571 1190 aline 571 -191 amove 380 -191 aline 380 1190 stroke dfont endchar dfont char=37 amove 142 0 aline 1000 1000 aline 904 952 aline 761 904 aline 619 904 aline 476 952 aline 380 1000 aline 285 1000 aline 190 952 aline 142 857 aline 142 761 aline 238 666 aline 333 666 aline 428 714 aline 476 809 aline 476 904 aline 380 1000 amove 809 333 aline 714 285 aline 666 190 aline 666 95 aline 761 0 aline 857 0 aline 952 47 aline 1000 142 aline 1000 238 aline 904 333 aline 809 333 stroke dfont endchar stroke dfont endchar dfont char=39 amove 285 809 aline 285 714 aline 333 761 aline 285 809 amove 285 952 aline 285 857 aline 380 761 aline 285 666 aline 238 761 aline 238 857 aline 285 952 aline 380 1000 stroke dfont endchar dfont char=40 amove 285 -48 aline 238 95 aline 190 285 aline 190 571 aline 238 761 aline 285 904 amove 380 1095 aline 333 1000 aline 285 857 aline 238 571 aline 238 285 aline 285 0 aline 333 -143 aline 380 -239 amove 476 -334 aline 380 -239 aline 285 -96 aline 190 95 aline 142 333 aline 142 523 aline 190 761 aline 285 952 aline 380 1095 aline 476 1190 stroke dfont endchar dfont char=41 amove 285 -239 aline 333 -143 aline 380 0 aline 428 285 aline 428 571 aline 380 857 aline 333 1000 aline 285 1095 amove 190 1190 aline 285 1095 aline 380 952 aline 476 761 aline 523 523 aline 523 333 aline 476 95 aline 380 -96 aline 285 -239 aline 190 -334 amove 380 -48 aline 428 95 aline 476 285 aline 476 571 aline 428 761 aline 380 904 stroke dfont endchar dfont char=42 amove 190 666 aline 238 952 amove 238 1000 aline 190 952 aline 190 666 aline 285 952 aline 238 1000 amove 666 1000 aline 619 952 aline 619 666 aline 666 952 amove 666 1000 aline 714 952 aline 619 666 stroke dfont endchar dfont char=43 amove 190 476 aline 1000 476 aline 1000 428 aline 190 428 aline 190 476 amove 571 857 aline 571 47 aline 619 47 aline 619 857 aline 571 857 stroke dfont endchar dfont char=44 amove 190 -191 aline 285 -143 aline 333 -48 aline 333 47 aline 285 142 aline 190 47 aline 285 -48 aline 285 -143 amove 285 95 aline 238 47 aline 285 0 aline 285 95 stroke dfont endchar dfont char=45 amove 190 476 aline 1000 476 aline 1000 428 aline 190 428 aline 190 476 stroke dfont endchar dfont char=46 amove 285 142 aline 190 47 aline 285 0 aline 380 47 aline 285 142 amove 285 95 aline 238 47 aline 333 47 aline 285 95 stroke dfont endchar dfont char=47 amove 142 -334 aline 95 -334 aline 952 1190 aline 1000 1190 aline 142 -334 stroke dfont endchar dfont char=48 amove 95 95 aline 190 142 aline 190 904 aline 285 904 aline 523 952 aline 619 1000 aline 666 952 aline 761 904 aline 857 904 aline 761 857 aline 761 95 aline 666 95 aline 428 47 aline 333 0 aline 285 47 aline 190 95 aline 95 95 amove 380 47 aline 238 142 aline 238 857 amove 285 904 aline 285 142 aline 380 95 aline 428 47 amove 666 95 aline 666 857 aline 571 904 aline 523 952 amove 571 952 aline 714 857 aline 714 142 stroke dfont endchar dfont char=49 amove 333 95 aline 428 142 aline 428 761 aline 380 857 aline 333 904 aline 476 1000 aline 523 904 aline 523 142 aline 619 95 aline 666 95 aline 571 47 aline 523 0 aline 476 47 aline 380 95 aline 333 95 amove 571 47 aline 476 95 aline 476 857 aline 428 952 aline 380 904 aline 428 857 stroke dfont endchar dfont char=50 amove 142 0 aline 142 238 aline 190 380 aline 285 476 aline 428 523 aline 761 523 aline 761 904 aline 666 904 aline 523 952 aline 428 1000 aline 380 952 aline 285 904 aline 190 904 aline 285 857 aline 380 857 aline 476 904 aline 523 952 amove 476 952 aline 380 904 amove 666 904 aline 666 523 amove 714 571 aline 714 857 amove 857 95 aline 666 142 aline 523 142 aline 333 95 aline 142 -1 aline 380 47 aline 619 47 aline 761 -1 aline 857 95 amove 809 47 aline 666 95 aline 428 95 aline 285 47 stroke dfont endchar dfont char=51 amove 142 95 aline 238 95 aline 333 47 aline 380 0 aline 476 47 aline 666 95 aline 761 95 aline 761 428 aline 666 428 aline 523 476 aline 428 523 amove 428 476 aline 523 523 aline 666 571 aline 761 571 aline 761 904 aline 666 904 aline 476 952 aline 380 1000 aline 333 952 aline 238 904 aline 190 904 aline 285 857 aline 380 857 aline 476 952 amove 428 952 aline 333 904 amove 666 904 aline 666 571 amove 714 619 aline 714 857 amove 666 428 aline 666 95 amove 714 142 aline 714 380 amove 476 47 aline 428 95 aline 333 142 aline 238 142 aline 142 95 amove 333 95 aline 428 47 stroke dfont endchar dfont char=52 amove 238 285 aline 238 619 amove 190 523 aline 190 333 amove 476 95 aline 523 95 aline 619 47 aline 666 0 aline 714 47 aline 809 95 aline 761 95 aline 666 142 aline 666 809 aline 714 904 aline 619 1000 aline 142 523 aline 142 285 aline 571 285 amove 666 285 aline 857 285 aline 904 238 aline 904 333 aline 857 285 amove 714 47 aline 619 95 aline 619 952 aline 666 904 aline 619 809 amove 571 952 aline 571 142 aline 476 95 stroke dfont endchar dfont char=53 amove 142 95 aline 238 95 aline 333 47 aline 380 0 aline 476 47 aline 666 95 aline 761 95 aline 761 571 aline 857 619 aline 809 619 aline 714 666 aline 666 714 aline 619 666 aline 523 619 aline 333 571 aline 190 571 aline 190 1000 aline 761 1000 aline 714 952 aline 619 904 aline 190 904 amove 238 952 aline 666 952 amove 619 666 aline 714 619 aline 714 142 amove 666 95 aline 666 571 aline 571 619 aline 523 619 amove 333 95 aline 428 47 amove 476 47 aline 428 95 aline 333 142 aline 238 142 aline 142 95 stroke dfont endchar dfont char=54 amove 95 95 aline 190 142 aline 190 904 aline 285 904 aline 476 952 aline 571 1000 aline 619 952 aline 714 904 aline 761 904 aline 666 857 aline 571 857 aline 476 952 amove 523 952 aline 619 904 amove 666 666 aline 714 619 aline 809 571 aline 857 571 aline 761 523 aline 761 95 aline 666 95 aline 428 47 aline 333 0 aline 285 47 aline 190 95 aline 95 95 amove 380 47 aline 238 142 aline 238 857 amove 285 904 aline 285 142 aline 380 95 aline 428 47 amove 666 95 aline 666 523 aline 571 571 aline 523 571 amove 619 619 aline 714 523 aline 714 142 amove 666 666 aline 619 619 aline 523 571 aline 333 523 aline 285 523 stroke dfont endchar dfont char=55 amove 428 0 aline 380 142 aline 380 285 aline 428 428 aline 523 571 aline 714 761 aline 809 904 aline 857 1000 aline 666 904 aline 476 857 aline 333 857 aline 142 904 aline 238 1000 aline 380 952 aline 619 952 aline 857 1000 amove 714 952 aline 571 904 aline 333 904 aline 190 952 amove 619 666 aline 523 523 aline 476 380 aline 476 238 aline 523 95 aline 428 -1 amove 476 47 aline 428 190 aline 428 333 aline 476 476 stroke dfont endchar dfont char=56 amove 95 95 aline 190 142 aline 190 428 aline 285 428 aline 666 571 aline 761 571 aline 761 857 aline 857 904 aline 809 904 aline 714 952 aline 666 1000 aline 619 952 aline 523 904 aline 285 857 aline 190 857 aline 190 571 aline 285 571 aline 666 428 aline 761 428 aline 761 95 aline 666 95 aline 428 47 aline 333 0 aline 285 47 aline 190 95 aline 95 95 amove 380 47 aline 238 142 aline 238 380 amove 285 428 aline 285 142 aline 380 95 aline 428 47 amove 666 95 aline 666 428 amove 714 380 aline 714 142 amove 666 571 aline 666 857 aline 571 904 aline 523 904 amove 619 952 aline 714 904 aline 714 619 amove 285 571 aline 285 857 amove 238 809 aline 238 619 stroke dfont endchar dfont char=57 amove 142 95 aline 238 95 aline 333 47 aline 380 0 aline 476 47 aline 666 95 aline 761 95 aline 761 857 aline 857 904 aline 761 904 aline 666 952 aline 619 1000 aline 523 952 aline 285 904 aline 190 904 aline 190 476 aline 95 428 aline 142 428 aline 238 380 aline 285 333 aline 333 380 aline 428 428 aline 619 476 aline 666 476 amove 428 428 aline 380 428 aline 285 476 aline 285 904 amove 238 857 aline 238 428 aline 333 380 amove 333 95 aline 428 47 amove 476 47 aline 428 95 aline 333 142 aline 238 142 aline 142 95 amove 666 95 aline 666 857 aline 571 904 aline 523 952 amove 571 952 aline 714 857 aline 714 142 stroke dfont endchar dfont char=58 amove 285 666 aline 190 571 aline 285 523 aline 380 571 aline 285 666 amove 285 619 aline 238 571 aline 333 571 aline 285 619 amove 285 142 aline 190 47 aline 285 -1 aline 380 47 aline 285 142 amove 285 95 aline 238 47 aline 333 47 aline 285 95 stroke dfont endchar dfont char=59 amove 190 -191 aline 285 -143 aline 333 -48 aline 333 47 aline 285 142 aline 190 47 aline 285 -48 aline 285 -143 amove 285 95 aline 238 47 aline 285 0 aline 285 95 amove 285 619 aline 238 571 aline 333 571 aline 285 619 amove 285 666 aline 190 571 aline 285 523 aline 380 571 aline 285 666 stroke dfont endchar dfont char=60 amove 952 857 aline 190 428 aline 952 0 stroke dfont endchar dfont char=61 amove 190 285 aline 1000 285 aline 1000 238 aline 190 238 aline 190 285 amove 190 666 aline 1000 666 aline 1000 619 aline 190 619 aline 190 666 stroke dfont endchar dfont char=62 amove 190 0 aline 952 428 aline 190 857 stroke dfont endchar dfont char=63 amove 428 95 aline 380 47 aline 476 47 aline 428 95 amove 428 142 aline 333 47 aline 428 0 aline 523 47 aline 428 142 amove 428 333 aline 380 476 aline 476 476 aline 428 333 aline 428 476 amove 476 476 aline 571 523 aline 666 619 aline 714 714 aline 714 809 aline 666 904 aline 619 952 aline 476 1000 aline 380 1000 aline 238 952 aline 190 904 aline 142 809 aline 238 761 aline 238 857 aline 285 952 aline 380 1000 amove 476 1000 aline 571 952 aline 619 857 aline 619 666 aline 571 571 aline 476 476 amove 619 619 aline 666 666 aline 666 857 aline 619 904 amove 238 904 aline 190 809 stroke dfont endchar dfont char=64 amove 523 238 aline 476 285 aline 428 380 aline 428 523 aline 476 666 aline 571 761 amove 857 761 aline 809 380 aline 809 285 aline 904 238 aline 999 238 aline 1095 333 aline 1142 476 aline 1142 571 aline 1095 714 aline 1047 809 aline 952 904 aline 857 952 aline 714 1000 aline 571 1000 aline 428 952 aline 333 904 aline 238 809 aline 190 714 aline 142 571 aline 142 428 aline 190 285 aline 238 190 aline 333 95 aline 428 47 aline 571 0 aline 714 0 aline 857 47 aline 952 95 aline 1000 142 amove 904 238 aline 857 285 aline 857 380 aline 904 761 amove 857 619 aline 809 714 aline 714 761 aline 571 761 aline 476 714 aline 428 666 aline 380 523 aline 380 380 aline 428 285 aline 523 238 aline 666 238 aline 761 285 aline 809 380 stroke dfont endchar dfont char=65 amove 142 0 aline 238 47 aline 285 142 aline 285 238 aline 238 428 aline 238 571 aline 285 714 aline 333 809 aline 428 904 aline 333 857 aline 238 761 aline 190 666 aline 142 523 aline 142 380 aline 190 285 aline 285 238 amove 238 285 aline 190 380 aline 190 571 aline 238 714 amove 238 523 aline 904 523 amove 952 904 aline 952 95 amove 1000 47 aline 1000 952 amove 1095 1000 aline 1000 952 aline 809 904 aline 571 904 aline 285 952 aline 142 1000 amove 809 904 aline 904 904 aline 904 95 aline 809 95 amove 1095 0 aline 1000 47 aline 809 95 aline 571 95 aline 285 47 aline 142 0 stroke dfont endchar dfont char=66 amove 142 190 aline 238 95 aline 333 47 aline 523 0 aline 714 0 aline 857 47 aline 952 95 aline 1047 190 aline 1095 333 aline 1095 476 aline 1047 571 aline 952 666 aline 809 714 aline 666 714 aline 523 666 aline 476 619 aline 428 523 aline 428 428 aline 476 333 aline 571 285 amove 523 -1 aline 428 47 aline 428 952 aline 523 1000 amove 380 952 aline 380 47 amove 333 47 aline 333 952 amove 142 809 aline 238 904 aline 333 952 aline 523 1000 aline 761 1000 aline 904 952 aline 999 857 aline 999 761 aline 952 666 amove 904 666 aline 952 761 aline 952 857 aline 904 904 amove 761 1000 aline 857 952 aline 904 857 aline 904 761 aline 857 714 amove 809 714 aline 952 619 aline 999 476 aline 999 285 aline 952 142 aline 857 47 amove 999 190 aline 1047 285 aline 1047 476 aline 999 571 stroke dfont endchar dfont char=67 amove 238 238 aline 190 380 aline 190 619 aline 238 761 amove 428 952 aline 333 857 aline 285 761 aline 238 619 aline 238 380 aline 285 238 aline 333 142 aline 428 47 amove 809 47 aline 904 142 aline 952 238 aline 1000 380 amove 1000 238 aline 952 190 amove 1047 95 aline 1000 333 aline 1000 666 aline 1047 904 amove 1095 1000 aline 1047 904 aline 1000 809 aline 904 904 aline 809 952 aline 666 1000 aline 571 1000 aline 428 952 aline 333 904 aline 238 809 aline 190 714 aline 142 571 aline 142 428 aline 190 285 aline 238 190 aline 333 95 aline 428 47 aline 571 0 aline 666 0 aline 809 47 aline 904 95 aline 1000 190 aline 1047 95 aline 1095 0 amove 1000 619 aline 952 761 aline 904 857 aline 809 952 amove 952 809 aline 1000 761 stroke dfont endchar dfont char=68 amove 142 238 aline 190 142 aline 285 47 aline 428 -1 aline 666 -1 aline 809 47 aline 904 95 aline 1000 190 aline 1047 285 aline 1095 428 aline 1095 571 aline 1047 714 aline 1000 809 aline 904 904 aline 809 952 aline 666 1000 aline 428 1000 aline 285 952 aline 190 857 aline 142 761 amove 285 952 aline 285 47 amove 333 47 aline 333 952 amove 428 1000 aline 380 952 aline 380 47 aline 428 -1 amove 809 47 aline 904 142 aline 952 238 aline 1000 380 aline 1000 619 aline 952 761 aline 904 857 aline 809 952 amove 1000 761 aline 1047 619 aline 1047 380 aline 1000 238 stroke dfont endchar dfont char=69 amove 238 238 aline 190 380 aline 190 619 aline 238 761 amove 238 523 aline 285 571 aline 428 571 aline 761 476 aline 904 476 aline 999 523 aline 952 428 aline 857 380 aline 761 380 aline 619 428 aline 380 571 amove 523 523 aline 619 476 aline 761 428 aline 857 428 aline 952 476 amove 1000 380 aline 952 238 aline 904 142 aline 809 47 amove 952 190 aline 1000 238 amove 1047 95 aline 1000 333 aline 1000 666 aline 1047 904 amove 1095 1000 aline 1047 904 aline 1000 809 aline 904 904 aline 809 952 aline 666 1000 aline 571 1000 aline 428 952 aline 333 904 aline 238 809 aline 190 714 aline 142 571 aline 142 428 aline 190 285 aline 238 190 aline 333 95 aline 428 47 aline 571 0 aline 666 0 aline 809 47 aline 904 95 aline 1000 190 aline 1047 95 aline 1095 0 amove 428 47 aline 333 142 aline 285 238 aline 238 380 aline 238 619 aline 285 761 aline 333 857 aline 428 952 amove 809 952 aline 904 857 aline 1000 666 aline 952 714 aline 904 714 aline 857 666 aline 904 619 aline 952 666 amove 1000 761 aline 952 809 stroke dfont endchar dfont char=70 amove 142 0 aline 238 47 aline 428 95 aline 666 95 aline 952 47 aline 1095 0 amove 1095 285 aline 1047 380 aline 1000 571 aline 1000 714 aline 1047 904 aline 1095 1000 aline 952 857 aline 904 904 aline 809 952 aline 666 1000 aline 476 1000 aline 333 952 aline 238 904 aline 142 809 amove 238 904 aline 238 47 amove 285 95 aline 285 904 aline 380 952 amove 476 1000 aline 380 952 aline 333 857 aline 333 95 aline 428 95 amove 333 523 aline 380 571 aline 476 571 aline 714 523 aline 857 523 aline 952 571 amove 1000 571 aline 952 714 aline 904 857 aline 809 952 amove 1000 857 aline 952 761 amove 904 714 aline 857 666 aline 809 714 aline 857 761 aline 904 761 aline 952 714 aline 952 571 aline 904 476 aline 809 428 aline 714 428 aline 428 571 amove 571 523 aline 714 476 aline 809 476 aline 904 523 stroke dfont endchar dfont char=71 amove 238 238 aline 190 380 aline 190 619 aline 238 761 amove 285 571 aline 380 619 aline 476 619 aline 619 571 aline 714 523 amove 857 476 aline 761 523 aline 619 619 aline 476 666 aline 380 666 aline 285 619 aline 238 523 aline 333 571 aline 476 571 aline 761 476 aline 952 476 aline 1000 523 amove 1000 619 aline 952 761 aline 904 857 aline 809 952 amove 952 809 aline 1000 761 amove 1047 904 aline 1000 666 aline 1000 333 aline 1047 95 amove 1095 -1 aline 1047 95 aline 1000 238 aline 952 142 aline 904 95 aline 809 47 aline 714 -1 aline 571 -1 aline 428 47 aline 333 95 aline 238 190 aline 190 285 aline 142 428 aline 142 571 aline 190 714 aline 238 809 aline 333 904 aline 428 952 aline 571 1000 aline 666 1000 aline 809 952 aline 904 904 aline 1000 809 aline 1047 904 aline 1095 999 amove 904 476 aline 904 238 aline 857 95 aline 809 47 amove 904 142 aline 952 238 aline 952 428 amove 428 47 aline 333 142 aline 285 238 aline 238 380 aline 238 619 aline 285 761 aline 333 857 aline 428 952 amove 285 380 aline 333 428 aline 380 380 aline 333 333 aline 285 333 aline 238 380 stroke dfont endchar dfont char=72 amove 142 0 aline 238 47 aline 238 952 amove 285 904 aline 285 47 amove 333 47 aline 333 904 aline 428 904 amove 142 1000 aline 238 952 aline 428 904 aline 666 904 aline 952 952 aline 1095 1000 amove 809 761 aline 904 714 aline 952 666 aline 1000 571 aline 1000 380 aline 952 238 aline 952 142 aline 1000 47 aline 1095 0 amove 952 238 aline 1047 285 aline 1095 333 aline 1095 476 aline 1047 619 aline 952 714 aline 809 761 aline 619 761 aline 476 714 aline 380 619 aline 333 523 amove 142 0 aline 333 47 aline 523 47 aline 761 0 amove 1000 285 aline 1047 380 aline 1047 523 aline 1000 619 stroke dfont endchar dfont char=73 amove 142 0 aline 285 47 aline 476 95 aline 761 95 aline 952 47 aline 1095 0 amove 666 95 aline 666 857 amove 619 809 aline 619 142 amove 571 95 aline 571 857 amove 142 1000 aline 333 904 aline 523 857 aline 714 857 aline 904 904 aline 1095 1000 stroke dfont endchar dfont char=74 amove 285 95 aline 238 142 aline 190 285 amove 142 380 aline 238 285 aline 285 142 aline 333 47 aline 428 0 amove 666 0 aline 761 47 aline 809 142 aline 809 857 aline 714 857 amove 857 857 aline 857 142 aline 809 95 amove 904 95 aline 904 904 amove 1095 1000 aline 904 904 aline 714 857 aline 523 857 aline 333 904 aline 142 1000 amove 190 571 aline 142 476 aline 142 285 aline 190 142 aline 285 47 aline 428 0 aline 666 0 aline 809 47 aline 904 95 aline 1000 190 aline 1095 333 stroke dfont endchar dfont char=75 amove 142 0 aline 238 47 aline 238 952 amove 285 904 aline 285 47 amove 333 47 aline 333 904 aline 428 904 amove 142 1000 aline 238 952 aline 428 904 aline 666 904 aline 952 952 aline 1095 1000 amove 857 714 aline 904 666 aline 904 571 aline 857 523 amove 857 380 aline 952 285 aline 952 190 amove 952 142 aline 1000 190 aline 1000 285 aline 952 380 aline 809 428 aline 666 428 aline 809 523 aline 857 571 aline 857 666 aline 761 761 amove 666 428 aline 809 380 aline 904 285 aline 952 142 aline 1000 47 aline 1047 0 aline 1095 0 amove 761 0 aline 523 47 aline 333 47 aline 142 0 amove 571 333 aline 619 285 aline 571 238 aline 523 285 aline 523 333 aline 571 380 aline 666 428 aline 904 523 aline 952 571 aline 952 666 aline 904 714 aline 761 761 aline 619 761 aline 476 714 aline 380 619 aline 333 523 stroke dfont endchar dfont char=76 amove 142 0 aline 238 47 aline 428 95 aline 666 95 aline 952 47 aline 1095 0 aline 1047 142 aline 1000 333 aline 1000 476 aline 1047 666 aline 1095 761 aline 1000 619 aline 952 523 aline 904 380 aline 904 285 aline 952 190 aline 1047 142 amove 1000 190 aline 952 285 aline 952 428 aline 1000 571 amove 1095 1000 aline 952 952 aline 666 904 aline 428 904 aline 238 952 aline 142 1000 amove 238 952 aline 238 47 amove 285 95 aline 285 904 amove 428 904 aline 333 904 aline 333 95 aline 428 95 stroke dfont endchar dfont char=77 amove 142 0 aline 285 47 aline 476 95 aline 761 95 aline 952 47 aline 1095 0 amove 904 190 aline 952 285 aline 1000 428 aline 1000 714 aline 952 857 aline 857 952 amove 1000 809 aline 1047 666 aline 1047 428 aline 1000 285 amove 809 95 aline 904 190 aline 1000 238 aline 1047 285 aline 1095 428 aline 1095 666 aline 1047 809 aline 952 904 aline 857 952 aline 714 1000 aline 523 1000 aline 380 952 aline 285 904 aline 190 809 aline 142 666 aline 142 428 aline 190 285 aline 238 238 aline 333 190 aline 428 95 amove 333 190 aline 285 285 aline 238 428 aline 238 714 aline 285 857 aline 380 952 amove 238 809 aline 190 666 aline 190 428 aline 238 285 amove 571 95 aline 571 857 amove 619 809 aline 619 142 amove 666 95 aline 666 857 amove 1095 999 aline 904 904 aline 714 857 aline 523 857 aline 333 904 aline 142 999 stroke dfont endchar dfont char=78 amove 142 0 aline 238 47 aline 238 904 amove 333 904 aline 285 857 aline 285 47 amove 333 47 aline 333 857 aline 380 952 aline 476 1000 amove 809 952 aline 904 857 aline 952 761 aline 1000 619 aline 1000 428 aline 952 238 aline 952 142 aline 1000 47 aline 1047 0 aline 1095 0 amove 952 238 aline 1047 285 aline 1095 380 aline 1095 571 aline 1047 714 aline 1000 809 aline 904 904 aline 809 952 aline 666 1000 aline 476 1000 aline 333 952 aline 238 904 aline 142 809 amove 142 0 aline 333 47 aline 523 47 aline 761 0 amove 999 285 aline 1047 428 aline 1047 619 aline 999 761 stroke dfont endchar dfont char=79 amove 238 238 aline 190 380 aline 190 619 aline 238 761 amove 428 952 aline 333 857 aline 285 761 aline 238 619 aline 238 380 aline 285 238 aline 333 142 aline 428 47 amove 809 47 aline 904 142 aline 952 238 aline 1000 380 aline 1000 619 aline 952 761 aline 904 857 aline 809 952 amove 571 1000 aline 428 952 aline 333 904 aline 238 809 aline 190 714 aline 142 571 aline 142 428 aline 190 285 aline 238 190 aline 333 95 aline 428 47 aline 571 0 aline 666 0 aline 809 47 aline 904 95 aline 1000 190 aline 1047 285 aline 1095 428 aline 1095 571 aline 1047 714 aline 1000 809 aline 904 904 aline 809 952 aline 666 1000 aline 571 1000 amove 1000 761 aline 1047 619 aline 1047 380 aline 1000 238 stroke dfont endchar dfont char=80 amove 142 0 aline 238 47 aline 428 95 aline 666 95 aline 952 47 aline 1095 0 amove 809 285 aline 952 380 aline 1000 523 aline 1000 714 aline 952 857 aline 857 952 amove 1000 809 aline 1047 714 aline 1047 523 aline 1000 428 amove 428 95 aline 333 95 aline 333 761 aline 380 857 aline 476 952 aline 571 1000 amove 380 904 aline 285 809 aline 285 95 amove 238 47 aline 238 857 amove 142 761 aline 238 857 aline 428 952 aline 571 1000 aline 714 1000 aline 857 952 aline 952 904 aline 1047 809 aline 1095 666 aline 1095 571 aline 1047 428 aline 952 333 aline 809 285 aline 619 285 aline 476 333 aline 380 428 aline 333 571 stroke dfont endchar dfont char=81 amove 238 238 aline 190 380 aline 190 619 aline 238 761 amove 428 952 aline 333 857 aline 285 761 aline 238 619 aline 238 380 aline 285 238 aline 333 142 aline 428 47 amove 523 190 aline 619 190 amove 714 190 aline 666 142 aline 571 142 aline 428 190 aline 285 285 amove 238 380 aline 285 285 aline 428 238 aline 714 190 aline 1047 190 aline 1095 142 aline 1095 47 aline 1047 0 aline 1047 47 aline 1095 95 amove 1000 238 aline 1047 380 aline 1047 619 aline 1000 761 amove 809 952 aline 904 857 aline 952 761 aline 1000 619 aline 1000 380 aline 952 238 aline 904 142 aline 809 47 amove 571 1000 aline 428 952 aline 333 904 aline 238 809 aline 190 714 aline 142 571 aline 142 428 aline 190 285 aline 238 190 aline 333 95 aline 428 47 aline 571 0 aline 666 0 aline 809 47 aline 904 95 aline 1000 190 aline 1047 285 aline 1095 428 aline 1095 571 aline 1047 714 aline 1000 809 aline 904 904 aline 809 952 aline 666 1000 aline 571 1000 stroke dfont endchar dfont char=82 amove 142 0 aline 238 47 aline 238 857 amove 285 857 aline 285 47 amove 333 47 aline 333 904 amove 142 761 aline 238 857 aline 333 904 aline 428 952 aline 571 1000 aline 761 1000 aline 952 952 aline 1047 857 aline 1095 761 aline 1095 619 aline 1047 523 aline 1000 476 amove 1000 523 aline 1047 619 aline 1047 761 aline 1000 857 aline 952 904 amove 761 1000 aline 857 952 aline 952 857 aline 1000 761 aline 1000 571 aline 952 476 amove 904 476 aline 952 428 aline 1047 238 aline 1047 190 aline 1000 333 amove 904 428 aline 761 380 aline 619 380 aline 523 428 aline 523 523 aline 619 571 aline 761 571 aline 904 523 aline 1000 428 aline 1095 285 aline 1095 190 aline 1047 142 aline 1000 142 amove 1095 0 aline 1047 47 aline 1000 142 aline 952 333 aline 904 428 aline 809 523 aline 714 571 amove 761 0 aline 523 47 aline 333 47 aline 142 0 stroke dfont endchar dfont char=83 amove 190 47 aline 238 95 aline 190 190 amove 333 476 aline 380 476 aline 428 523 aline 523 619 aline 619 666 aline 761 666 aline 857 619 aline 952 523 aline 1000 428 aline 1000 285 aline 952 142 aline 857 47 amove 1000 190 aline 1047 285 aline 1047 428 aline 1000 571 aline 904 666 aline 761 714 aline 619 714 aline 523 666 amove 428 523 aline 428 571 aline 476 666 aline 523 714 aline 619 761 aline 761 761 aline 904 714 aline 1047 571 aline 1095 428 aline 1095 333 aline 1047 190 aline 952 95 aline 857 47 aline 714 0 aline 523 0 aline 380 47 aline 285 95 aline 190 190 aline 190 95 aline 142 0 aline 238 47 aline 523 0 amove 714 380 aline 619 333 aline 476 333 aline 333 380 aline 285 428 aline 238 523 amove 285 857 aline 238 761 aline 238 619 aline 285 523 aline 380 428 aline 523 380 aline 619 380 aline 714 428 aline 809 523 aline 857 571 aline 904 571 amove 809 523 aline 809 476 aline 761 380 aline 714 333 aline 619 285 aline 476 285 aline 333 333 aline 238 428 aline 190 571 aline 190 666 aline 238 809 aline 380 952 aline 523 1000 aline 714 1000 aline 857 952 aline 952 904 aline 1047 809 aline 1047 904 aline 1095 1000 aline 1000 952 aline 714 1000 amove 1047 952 aline 1000 904 aline 1047 809 stroke dfont endchar dfont char=84 amove 190 380 aline 238 238 aline 333 142 aline 428 95 aline 571 47 aline 714 47 aline 857 95 amove 1095 428 aline 1047 333 aline 952 190 aline 857 142 aline 714 95 aline 571 95 aline 428 142 aline 333 190 aline 238 333 aline 190 476 aline 190 619 aline 238 809 amove 285 857 aline 142 1000 amove 190 952 aline 238 952 aline 285 1000 aline 380 952 aline 571 904 aline 857 904 aline 1000 952 aline 1095 1000 amove 857 904 aline 952 857 aline 1047 761 aline 1095 619 aline 1095 428 aline 1047 285 aline 1000 190 aline 904 95 aline 809 47 aline 666 0 aline 523 0 aline 380 47 aline 285 95 aline 238 142 aline 190 238 aline 142 380 aline 142 571 aline 190 714 aline 238 809 aline 285 857 aline 380 904 aline 571 904 amove 761 904 aline 714 857 aline 714 761 aline 761 714 aline 809 761 aline 761 809 amove 333 952 aline 285 904 stroke dfont endchar dfont char=85 amove 238 238 aline 190 380 aline 190 571 aline 238 714 aline 285 809 amove 285 857 aline 333 809 aline 333 761 aline 285 666 aline 238 523 aline 238 380 aline 285 238 aline 333 142 aline 428 47 amove 761 0 aline 857 47 aline 904 142 aline 904 904 aline 809 904 amove 952 904 aline 952 142 aline 904 95 amove 1000 95 aline 904 47 aline 761 0 aline 571 0 aline 428 47 aline 333 95 aline 238 190 aline 190 285 aline 142 428 aline 142 571 aline 190 714 aline 238 809 aline 333 904 amove 142 1000 aline 285 952 aline 571 904 aline 809 904 aline 1000 952 aline 1095 1000 amove 1000 952 aline 1000 95 aline 1095 0 stroke dfont endchar dfont char=86 amove 619 0 aline 1095 1000 aline 1000 952 aline 761 904 aline 476 904 aline 238 952 aline 142 1000 aline 619 0 amove 619 95 aline 571 190 aline 238 904 aline 190 952 amove 238 952 aline 285 904 aline 619 190 aline 666 142 amove 714 238 aline 714 333 aline 761 476 aline 952 714 amove 857 619 aline 761 380 stroke dfont endchar dfont char=87 amove 285 190 aline 238 285 aline 190 428 aline 190 571 aline 238 714 amove 238 809 aline 285 761 aline 285 714 aline 238 571 aline 238 428 aline 285 238 aline 333 142 aline 428 47 amove 571 0 aline 571 857 amove 619 809 aline 619 47 amove 666 0 aline 666 857 amove 904 904 aline 1000 809 aline 1047 714 aline 1095 571 aline 1095 428 aline 1047 285 aline 1000 190 aline 904 95 aline 809 47 aline 666 0 aline 571 0 aline 428 47 aline 333 95 aline 238 190 aline 190 285 aline 142 428 aline 142 571 aline 190 714 aline 238 809 aline 333 904 amove 142 1000 aline 333 904 aline 523 857 aline 714 857 aline 904 904 aline 1095 1000 amove 1000 809 aline 952 761 aline 952 714 aline 1000 571 aline 1000 428 aline 952 238 aline 904 142 aline 809 47 amove 952 190 aline 1000 285 aline 1047 428 aline 1047 571 aline 1000 714 stroke dfont endchar dfont char=88 amove 142 0 aline 238 47 aline 428 95 aline 666 95 aline 952 47 aline 1095 0 aline 333 904 amove 190 952 aline 285 904 aline 1000 47 amove 952 47 aline 904 95 aline 142 1000 aline 333 904 aline 523 857 aline 714 857 aline 904 904 aline 1095 1000 aline 666 523 amove 571 428 aline 238 47 amove 285 95 aline 285 190 aline 333 285 aline 380 333 aline 571 428 amove 523 380 aline 380 285 aline 333 190 stroke dfont endchar dfont char=89 amove 142 190 aline 238 95 aline 333 47 aline 523 0 aline 714 0 aline 904 47 aline 1095 142 amove 1000 95 aline 1000 952 amove 952 904 aline 952 95 amove 904 47 aline 904 904 amove 1095 1000 aline 904 904 aline 714 857 aline 523 857 aline 333 904 aline 142 1000 amove 285 904 aline 190 809 aline 142 666 aline 142 523 aline 190 380 aline 285 285 aline 380 238 aline 523 190 aline 666 190 aline 809 238 aline 904 285 amove 809 238 aline 714 285 aline 428 285 aline 285 333 aline 190 428 aline 142 523 amove 333 285 aline 476 238 aline 761 238 stroke dfont endchar dfont char=90 amove 476 571 aline 428 523 aline 476 476 aline 523 523 aline 523 619 aline 428 666 aline 333 666 aline 238 619 aline 190 571 aline 142 428 aline 142 333 aline 190 190 aline 285 95 aline 380 47 aline 523 -1 aline 714 -1 aline 857 47 aline 952 95 aline 1047 190 aline 1095 333 aline 1095 428 aline 1047 571 aline 952 666 aline 1000 761 aline 1000 857 aline 952 952 aline 809 1000 aline 666 1000 aline 428 904 aline 285 904 aline 190 952 aline 142 1000 amove 714 761 aline 809 714 aline 857 666 aline 809 619 aline 714 571 amove 904 619 aline 714 571 aline 619 571 aline 523 619 aline 523 714 aline 619 761 aline 714 761 aline 904 714 aline 904 857 aline 857 952 aline 809 999 amove 904 952 aline 952 857 aline 952 761 aline 904 666 aline 1000 571 aline 1047 476 aline 1047 285 aline 1000 190 amove 857 47 aline 952 142 aline 1000 285 aline 1000 476 aline 952 571 aline 904 619 stroke dfont endchar dfont char=91 amove 190 -334 aline 190 1190 aline 523 1190 amove 238 1190 aline 238 -334 amove 190 -334 aline 523 -334 stroke dfont endchar stroke dfont endchar dfont char=93 amove 142 -334 aline 476 -334 aline 476 1190 aline 142 1190 amove 428 1190 aline 428 -334 stroke dfont endchar stroke dfont endchar stroke dfont endchar dfont char=96 amove 238 904 aline 285 952 aline 238 1000 aline 190 952 aline 190 857 aline 238 761 aline 285 714 stroke dfont endchar dfont char=97 amove 285 47 aline 190 142 aline 190 333 amove 238 428 aline 238 190 aline 380 47 amove 476 95 aline 285 0 aline 142 142 aline 142 333 aline 285 476 amove 380 380 aline 142 619 aline 190 666 aline 238 619 aline 190 571 amove 238 619 aline 428 619 aline 523 666 aline 619 571 aline 619 142 aline 666 95 aline 571 0 aline 476 95 aline 523 142 aline 523 523 aline 428 619 amove 523 619 aline 571 571 aline 571 142 aline 523 95 aline 571 47 aline 619 95 aline 571 142 stroke dfont endchar dfont char=98 amove 333 47 aline 238 142 aline 238 904 aline 142 1000 aline 190 809 aline 190 142 aline 333 0 aline 571 95 aline 666 142 aline 666 523 aline 523 666 aline 285 571 amove 428 619 aline 571 476 aline 571 95 amove 619 142 aline 619 523 aline 523 619 amove 238 904 aline 333 1000 aline 285 809 aline 285 190 aline 428 47 stroke dfont endchar dfont char=99 amove 238 47 aline 190 95 aline 190 523 amove 142 523 aline 142 95 aline 238 0 aline 333 95 aline 285 95 aline 238 142 aline 238 571 amove 142 523 aline 428 666 aline 523 571 aline 428 523 aline 333 619 amove 380 619 aline 476 571 stroke dfont endchar dfont char=100 amove 285 47 aline 190 142 aline 190 523 amove 238 571 aline 238 190 aline 380 47 amove 523 95 aline 523 523 aline 285 809 aline 142 857 aline 285 857 aline 285 1000 aline 333 857 aline 619 523 aline 619 95 aline 523 95 aline 380 47 aline 285 0 aline 142 142 aline 142 523 aline 380 666 amove 285 857 aline 571 523 aline 571 142 stroke dfont endchar dfont char=101 amove 238 47 aline 190 95 aline 190 523 amove 142 523 aline 142 95 aline 238 0 aline 333 95 aline 285 95 aline 238 142 aline 238 571 amove 142 523 aline 428 666 aline 571 476 aline 238 285 amove 476 428 aline 333 619 amove 380 619 aline 523 476 stroke dfont endchar dfont char=102 amove 238 0 aline 333 95 aline 285 142 aline 285 904 amove 238 857 aline 238 142 aline 190 95 aline 238 47 aline 285 95 aline 238 142 amove 238 0 aline 142 95 aline 190 142 aline 190 857 aline 476 1000 aline 571 904 aline 476 857 aline 380 952 amove 428 952 aline 523 904 amove 476 666 aline 285 666 amove 190 666 aline 47 666 stroke dfont endchar dfont char=103 amove 285 47 aline 190 142 aline 190 523 amove 142 523 aline 142 142 aline 285 0 aline 523 95 amove 380 47 aline 238 190 aline 238 571 amove 142 523 aline 238 571 aline 476 666 aline 619 523 aline 619 -96 aline 571 -191 aline 523 -239 aline 428 -286 aline 333 -286 aline 238 -239 aline 142 -286 aline 238 -334 aline 333 -286 amove 285 -286 aline 190 -286 amove 428 -286 aline 476 -239 aline 523 -143 aline 523 476 aline 380 619 amove 476 619 aline 571 523 aline 571 -96 aline 523 -191 stroke dfont endchar dfont char=104 amove 238 0 aline 142 95 aline 190 142 aline 190 809 aline 142 1000 aline 238 904 aline 238 142 aline 190 95 aline 238 47 aline 285 95 aline 238 142 amove 238 0 aline 333 95 aline 285 142 aline 285 809 aline 333 1000 aline 238 904 amove 285 571 aline 428 619 aline 523 666 aline 666 523 aline 666 95 aline 523 -96 aline 523 -239 aline 571 -334 aline 619 -334 aline 523 -239 amove 523 -96 aline 571 47 aline 571 476 aline 428 619 amove 523 619 aline 619 523 aline 619 95 aline 571 0 stroke dfont endchar dfont char=105 amove 238 0 aline 142 95 aline 190 142 aline 190 523 aline 142 571 aline 238 666 aline 333 571 aline 285 523 aline 285 142 aline 333 95 aline 238 0 amove 238 142 aline 285 95 aline 238 47 aline 190 95 aline 238 142 aline 238 523 aline 190 571 aline 238 619 aline 285 571 aline 238 523 amove 238 952 aline 190 904 aline 238 857 aline 285 904 aline 238 952 amove 238 1000 aline 142 904 aline 238 809 aline 333 904 aline 238 1000 stroke dfont endchar dfont char=106 amove 285 0 aline 238 95 aline 238 523 aline 190 571 aline 238 619 aline 285 571 aline 238 523 amove 238 666 aline 142 571 aline 190 523 aline 190 95 aline 333 -96 amove 238 -334 aline 142 -334 aline 142 -286 aline 238 -334 aline 333 -239 aline 333 -96 aline 285 47 aline 285 523 aline 333 571 aline 238 666 amove 238 952 aline 190 904 aline 238 857 aline 285 904 aline 238 952 amove 238 1000 aline 142 904 aline 238 809 aline 333 904 aline 238 1000 stroke dfont endchar dfont char=107 amove 238 0 aline 142 95 aline 190 142 aline 190 809 aline 142 1000 aline 238 904 aline 238 142 aline 190 95 aline 238 47 aline 285 95 aline 238 142 amove 238 0 aline 333 95 aline 285 142 aline 285 809 aline 333 1000 aline 238 904 amove 428 619 aline 523 476 amove 571 523 aline 476 619 amove 476 428 aline 523 380 aline 619 142 aline 666 95 aline 714 95 aline 619 0 aline 523 95 aline 476 333 aline 428 380 amove 476 380 aline 523 285 aline 571 95 aline 619 47 amove 285 285 aline 476 428 aline 619 523 aline 523 666 aline 428 619 aline 285 523 stroke dfont endchar dfont char=108 amove 238 0 aline 142 95 aline 190 142 aline 190 809 aline 142 1000 aline 238 904 aline 238 142 aline 190 95 aline 238 47 aline 285 95 aline 238 142 amove 238 0 aline 333 95 aline 285 142 aline 285 809 aline 333 1000 aline 238 904 stroke dfont endchar dfont char=109 amove 238 0 aline 142 95 aline 190 142 aline 190 523 aline 142 571 aline 95 571 aline 190 666 aline 285 571 aline 285 142 aline 333 95 aline 238 0 amove 238 142 aline 285 95 aline 238 47 aline 190 95 aline 238 142 aline 238 571 aline 190 619 amove 285 571 aline 428 619 aline 523 666 aline 666 571 aline 666 142 aline 714 95 aline 619 0 aline 523 95 aline 571 142 aline 571 523 aline 428 619 amove 523 619 aline 619 571 aline 619 142 aline 571 95 aline 619 47 aline 666 95 aline 619 142 amove 1000 142 aline 1047 95 aline 1000 47 aline 952 95 aline 1000 142 aline 1000 571 aline 904 619 amove 809 619 aline 952 523 aline 952 142 aline 904 95 aline 1000 0 aline 1095 95 aline 1047 142 aline 1047 571 aline 904 666 aline 809 619 aline 666 571 stroke dfont endchar dfont char=110 amove 238 0 aline 142 95 aline 190 142 aline 190 523 aline 142 571 aline 95 571 aline 190 666 aline 285 571 aline 285 142 aline 333 95 aline 238 0 amove 238 142 aline 285 95 aline 238 47 aline 190 95 aline 238 142 aline 238 571 aline 190 619 amove 285 571 aline 428 619 aline 523 666 aline 666 571 aline 666 142 aline 714 95 aline 619 0 aline 523 95 aline 571 142 aline 571 523 aline 428 619 amove 523 619 aline 619 571 aline 619 142 aline 571 95 aline 619 47 aline 666 95 aline 619 142 stroke dfont endchar dfont char=111 amove 285 47 aline 190 142 aline 190 523 amove 142 523 aline 142 142 aline 285 0 aline 523 95 aline 619 142 aline 619 523 aline 476 666 aline 238 571 aline 142 523 amove 238 571 aline 238 190 aline 380 47 amove 523 95 aline 523 476 aline 380 619 amove 476 619 aline 571 523 aline 571 142 stroke dfont endchar dfont char=112 amove 238 95 aline 285 95 aline 380 47 amove 428 47 aline 380 95 aline 285 142 aline 285 571 aline 238 619 aline 142 666 aline 190 571 aline 190 142 aline 95 95 aline 190 95 aline 190 -191 aline 142 -334 aline 238 -239 aline 238 571 amove 285 571 aline 428 619 aline 523 666 aline 666 523 aline 666 142 aline 571 95 aline 333 0 aline 285 47 aline 285 -191 aline 333 -334 aline 238 -239 amove 571 95 aline 571 476 aline 428 619 amove 523 619 aline 619 523 aline 619 142 stroke dfont endchar dfont char=113 amove 285 47 aline 190 142 aline 190 523 amove 142 523 aline 142 142 aline 285 0 aline 523 95 amove 380 47 aline 238 190 aline 238 571 amove 142 523 aline 238 571 aline 476 666 aline 619 523 aline 619 -191 aline 666 -334 aline 571 -239 aline 571 523 aline 476 619 amove 380 619 aline 523 476 aline 523 -191 aline 476 -334 aline 571 -239 stroke dfont endchar dfont char=114 amove 238 0 aline 142 95 aline 190 142 aline 190 523 aline 142 571 aline 95 571 aline 190 666 aline 285 571 aline 285 142 aline 333 95 aline 238 0 amove 238 142 aline 285 95 aline 238 47 aline 190 95 aline 238 142 aline 238 571 aline 190 619 amove 285 571 aline 476 666 aline 571 571 aline 476 523 aline 380 619 amove 428 619 aline 523 571 stroke dfont endchar dfont char=115 amove 238 95 aline 333 47 amove 428 47 aline 238 142 aline 142 95 aline 333 0 aline 619 142 aline 619 333 aline 523 428 aline 238 285 aline 142 380 aline 142 523 aline 428 666 aline 571 619 aline 476 571 aline 333 619 amove 380 619 aline 523 619 amove 523 380 aline 571 333 aline 571 142 amove 523 95 aline 523 333 aline 476 380 amove 285 333 aline 238 380 aline 238 571 amove 190 523 aline 190 380 aline 238 333 stroke dfont endchar dfont char=116 amove 238 0 aline 142 95 aline 190 142 aline 190 809 aline 142 1000 aline 238 904 aline 238 142 aline 190 95 aline 238 47 aline 285 95 aline 238 142 amove 238 0 aline 333 95 aline 285 142 aline 285 809 aline 333 1000 aline 238 904 amove 190 666 aline 47 666 amove 285 666 aline 428 666 stroke dfont endchar dfont char=117 amove 333 47 aline 238 95 aline 238 571 aline 190 619 amove 95 571 aline 142 571 aline 190 523 aline 190 95 aline 333 -1 aline 571 95 amove 666 47 aline 619 95 aline 619 523 aline 571 571 aline 619 619 aline 666 571 aline 619 523 amove 619 666 aline 714 571 aline 666 523 aline 666 142 aline 714 95 aline 761 95 aline 666 -1 aline 571 95 aline 571 523 aline 523 571 aline 619 666 amove 95 571 aline 190 666 aline 285 571 aline 285 142 aline 428 47 stroke dfont endchar dfont char=118 amove 380 47 aline 238 142 aline 238 571 aline 190 619 amove 142 666 aline 238 619 aline 285 571 aline 285 190 aline 428 95 aline 476 95 amove 571 142 aline 571 523 aline 523 571 aline 619 666 aline 714 571 aline 666 523 aline 666 190 aline 476 95 aline 380 -1 aline 190 142 aline 190 571 aline 142 666 amove 619 523 aline 666 571 aline 619 619 aline 571 571 aline 619 523 aline 619 190 stroke dfont endchar dfont char=119 amove 380 47 aline 238 142 aline 238 571 aline 190 619 amove 142 666 aline 190 571 aline 190 142 aline 380 0 aline 476 95 aline 571 142 amove 476 95 aline 428 95 aline 285 190 aline 285 571 aline 238 619 aline 142 666 amove 619 666 aline 714 571 aline 666 523 aline 666 190 aline 809 95 aline 857 95 amove 952 142 aline 952 523 aline 904 571 aline 1000 666 aline 1095 571 aline 1047 523 aline 1047 190 aline 857 95 aline 761 0 aline 571 142 aline 571 523 aline 523 571 aline 619 666 amove 619 523 aline 666 571 aline 619 619 aline 571 571 aline 619 523 aline 619 142 aline 761 47 amove 1000 190 aline 1000 523 aline 952 571 aline 1000 619 aline 1047 571 aline 1000 523 stroke dfont endchar dfont char=120 amove 142 0 aline 142 95 aline 238 95 aline 238 0 aline 142 0 aline 238 95 aline 380 285 amove 380 333 aline 238 333 amove 476 333 aline 619 333 amove 476 380 aline 619 571 aline 714 666 aline 714 571 aline 619 571 aline 619 666 aline 714 666 amove 190 619 aline 285 571 aline 571 95 aline 666 47 amove 714 95 aline 619 -1 aline 571 47 aline 238 523 aline 142 571 aline 238 666 aline 285 619 aline 619 142 aline 714 95 stroke dfont endchar dfont char=121 amove 333 47 aline 238 95 aline 238 571 aline 190 619 amove 95 571 aline 142 571 aline 190 523 aline 190 95 aline 333 -1 aline 571 95 amove 428 47 aline 285 142 aline 285 571 aline 190 666 aline 95 571 amove 619 523 aline 666 571 aline 619 619 aline 571 571 aline 619 523 aline 619 -143 aline 571 -191 amove 476 -286 aline 523 -239 aline 571 -143 aline 571 523 aline 523 571 aline 619 666 aline 714 571 aline 666 523 aline 666 -96 aline 619 -191 aline 571 -239 aline 476 -286 aline 380 -286 aline 285 -239 aline 190 -286 aline 285 -334 aline 380 -286 amove 333 -286 aline 238 -286 stroke dfont endchar dfont char=122 amove 95 -286 aline 190 -286 amove 238 -286 aline 142 -334 aline 47 -286 aline 142 -239 aline 238 -286 aline 333 -286 aline 428 -239 aline 476 -191 aline 523 -96 aline 523 190 aline 285 285 aline 523 380 aline 523 571 aline 380 666 aline 285 619 aline 142 571 aline 142 523 aline 285 619 aline 428 523 aline 428 380 aline 380 333 amove 380 238 aline 428 190 aline 428 -143 aline 380 -239 aline 333 -286 amove 428 -191 aline 476 -143 aline 476 190 amove 476 380 aline 476 571 aline 380 619 stroke dfont endchar dfont char=123 amove 380 238 aline 333 95 aline 333 -96 aline 380 -239 amove 476 -334 aline 333 -191 aline 285 -48 aline 285 47 aline 333 190 aline 428 285 aline 428 333 aline 238 428 aline 428 523 aline 428 571 aline 333 666 aline 285 809 aline 285 904 aline 333 1047 aline 476 1190 amove 380 1095 aline 333 952 aline 333 761 aline 380 619 stroke dfont endchar dfont char=124 amove 380 428 aline 380 1000 aline 333 952 aline 428 476 aline 380 428 aline 333 476 aline 428 952 aline 380 1000 amove 142 857 aline 619 571 aline 571 571 aline 190 857 aline 142 857 aline 142 809 aline 619 619 aline 619 571 amove 619 857 aline 142 571 aline 190 571 aline 571 857 aline 619 857 aline 619 809 aline 142 619 aline 142 571 stroke dfont endchar dfont char=125 amove 238 -334 aline 380 -191 aline 428 -48 aline 428 47 aline 380 190 aline 285 285 aline 285 333 aline 476 428 aline 285 523 aline 285 571 aline 380 666 aline 428 809 aline 428 904 aline 380 1047 aline 238 1190 amove 333 1095 aline 380 952 aline 380 761 aline 333 619 amove 333 238 aline 380 95 aline 380 -96 aline 333 -239 stroke dfont endchar dfont char=126 amove 190 238 aline 333 47 amove 380 47 aline 190 285 amove 428 523 aline 142 238 aline 333 0 aline 619 285 amove 666 333 aline 952 619 aline 1000 571 aline 1047 571 aline 1095 619 aline 1047 523 aline 1000 476 aline 952 476 aline 904 523 amove 904 571 aline 952 523 aline 1047 523 amove 1095 142 aline 1047 47 aline 1000 0 aline 904 0 aline 809 47 aline 714 142 aline 523 428 aline 238 714 aline 476 1000 aline 666 761 aline 476 571 amove 619 714 aline 428 952 amove 476 952 aline 619 761 amove 285 761 aline 571 476 aline 761 190 aline 809 142 aline 904 95 aline 1047 95 aline 1095 142 amove 1047 47 aline 904 47 aline 809 95 aline 714 190 aline 523 476 aline 285 714 stroke dfont endchar gle-graphics-4.2.4c/src/fonts/adobestd.enc0000664000000000000000000002120011676336540017133 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !$FFFF, 45; hyphen !$FFFF, 164; fraction !$FFFF, 197; macron $0020, 32; space $0021, 33; exclam $0022, 34; quotedbl $0023, 35; numbersign $0024, 36; dollar $0025, 37; percent $0026, 38; ampersand $2019, 39; quoteright $0028, 40; parenleft $0029, 41; parenright $002A, 42; asterisk $002B, 43; plus $002C, 44; comma $FFFF, 45; hyphen $002E, 46; period $002F, 47; slash $0030, 48; zero $0031, 49; one $0032, 50; two $0033, 51; three $0034, 52; four $0035, 53; five $0036, 54; six $0037, 55; seven $0038, 56; eight $0039, 57; nine $003A, 58; colon $003B, 59; semicolon $003C, 60; less $003D, 61; equal $003E, 62; greater $003F, 63; question $0040, 64; at $0041, 65; A $0042, 66; B $0043, 67; C $0044, 68; D $0045, 69; E $0046, 70; F $0047, 71; G $0048, 72; H $0049, 73; I $004A, 74; J $004B, 75; K $004C, 76; L $004D, 77; M $004E, 78; N $004F, 79; O $0050, 80; P $0051, 81; Q $0052, 82; R $0053, 83; S $0054, 84; T $0055, 85; U $0056, 86; V $0057, 87; W $0058, 88; X $0059, 89; Y $005A, 90; Z $005B, 91; bracketleft $005C, 92; backslash $005D, 93; bracketright $005E, 94; asciicircum $005F, 95; underscore $2018, 96; quoteleft $0061, 97; a $0062, 98; b $0063, 99; c $0064, 100; d $0065, 101; e $0066, 102; f $0067, 103; g $0068, 104; h $0069, 105; i $006A, 106; j $006B, 107; k $006C, 108; l $006D, 109; m $006E, 110; n $006F, 111; o $0070, 112; p $0071, 113; q $0072, 114; r $0073, 115; s $0074, 116; t $0075, 117; u $0076, 118; v $0077, 119; w $0078, 120; x $0079, 121; y $007A, 122; z $007B, 123; braceleft $007C, 124; bar $007D, 125; braceright $007E, 126; asciitilde $00A1, 161; exclamdown $00A2, 162; cent $00A3, 163; sterling $FFFF, 164; fraction $00A5, 165; yen $0192, 166; florin $00A7, 167; section $00A4, 168; currency $0027, 169; quotesingle $201C, 170; quotedblleft $00AB, 171; guillemotleft $2039, 172; guilsinglleft $203A, 173; guilsinglright $FB01, 174; fi $FB02, 175; fl $2013, 177; endash $2020, 178; dagger $2021, 179; daggerdbl $2219, 180; periodcentered $00B6, 182; paragraph $2022, 183; bullet $201A, 184; quotesinglbase $201E, 185; quotedblbase $201D, 186; quotedblright $00BB, 187; guillemotright $2026, 188; ellipsis $2030, 189; perthousand $00BF, 191; questiondown $0060, 193; grave $00B4, 194; acute $02C6, 195; circumflex $02DC, 196; tilde $FFFF, 197; macron $02D8, 198; breve $02D9, 199; dotaccent $00A8, 200; dieresis $02DA, 202; ring $00B8, 203; cedilla $02DD, 205; hungarumlaut $02DB, 206; ogonek $02C7, 207; caron $2014, 208; emdash $00C6, 225; AE $00AA, 227; ordfeminine $0141, 232; Lslash $00D8, 233; Oslash $0152, 234; OE $00BA, 235; ordmasculine $00E6, 241; ae $0131, 245; dotlessi $0142, 248; lslash $00F8, 249; oslash $0153, 250; oe $00DF, 251; germandbls $00C1, 256; Aacute $0102, 257; Abreve $00C2, 258; Acircumflex $00C4, 259; Adieresis $00C0, 260; Agrave $0100, 261; Amacron $0104, 262; Aogonek $00C5, 263; Aring $00C3, 264; Atilde $0106, 265; Cacute $010C, 266; Ccaron $00C7, 267; Ccedilla $010E, 268; Dcaron $0110, 269; Dcroat $0394, 270; Delta $00C9, 271; Eacute $011A, 272; Ecaron $00CA, 273; Ecircumflex $00CB, 274; Edieresis $0116, 275; Edotaccent $00C8, 276; Egrave $0112, 277; Emacron $0118, 278; Eogonek $00D0, 279; Eth $011E, 280; Gbreve $0122, 281; Gcommaaccent $00CD, 282; Iacute $00CE, 283; Icircumflex $00CF, 284; Idieresis $0130, 285; Idotaccent $00CC, 286; Igrave $012A, 287; Imacron $012E, 288; Iogonek $0136, 289; Kcommaaccent $0139, 290; Lacute $013D, 291; Lcaron $013B, 292; Lcommaaccent $0143, 293; Nacute $0147, 294; Ncaron $0145, 295; Ncommaaccent $00D1, 296; Ntilde $00D3, 297; Oacute $00D4, 298; Ocircumflex $00D6, 299; Odieresis $00D2, 300; Ograve $0150, 301; Ohungarumlaut $014C, 302; Omacron $00D5, 303; Otilde $0154, 304; Racute $0158, 305; Rcaron $0156, 306; Rcommaaccent $015A, 307; Sacute $0160, 308; Scaron $015E, 309; Scedilla $0218, 310; Scommaaccent $0164, 311; Tcaron $016A, 312; Tcommaaccent $00DE, 313; Thorn $00DA, 314; Uacute $00DB, 315; Ucircumflex $00DC, 316; Udieresis $00D9, 317; Ugrave $0170, 318; Uhungarumlaut $016A, 319; Umacron $0172, 320; Uogonek $016E, 321; Uring $00DD, 322; Yacute $0178, 323; Ydieresis $0179, 324; Zacute $017D, 325; Zcaron $017B, 326; Zdotaccent $00E1, 327; aacute $0103, 328; abreve $00E2, 329; acircumflex $00E4, 330; adieresis $00E0, 331; agrave $0101, 332; amacron $0105, 333; aogonek $00E5, 334; aring $00E3, 335; atilde $00A6, 336; brokenbar $0107, 337; cacute $010D, 338; ccaron $00E7, 339; ccedilla $F6C3, 340; commaaccent $00A9, 341; copyright $010F, 342; dcaron $0111, 343; dcroat $00B0, 344; degree $00F7, 345; divide $00E9, 346; eacute $011B, 347; ecaron $00EA, 348; ecircumflex $00EB, 349; edieresis $0117, 350; edotaccent $00E8, 351; egrave $0113, 352; emacron $0119, 353; eogonek $00F0, 354; eth $011F, 355; gbreve $0123, 356; gcommaaccent $2265, 357; greaterequal $00ED, 358; iacute $00EE, 359; icircumflex $00EF, 360; idieresis $00EC, 361; igrave $012B, 362; imacron $012F, 363; iogonek $0137, 364; kcommaaccent $013A, 365; lacute $013E, 366; lcaron $013C, 367; lcommaaccent $2264, 368; lessequal $00AC, 369; logicalnot $25CA, 370; lozenge $2212, 371; minus $03BC, 372; mu $00D7, 373; multiply $0144, 374; nacute $0148, 375; ncaron $0146, 376; ncommaaccent $2260, 377; notequal $00F1, 378; ntilde $00F3, 379; oacute $00F4, 380; ocircumflex $00F6, 381; odieresis $00F2, 382; ograve $0151, 383; ohungarumlaut $014D, 384; omacron $00BD, 385; onehalf $00BC, 386; onequarter $00B9, 387; onesuperior $00F5, 388; otilde $2202, 389; partialdiff $00B1, 390; plusminus $0155, 391; racute $221A, 392; radical $0159, 393; rcaron $0157, 394; rcommaaccent $00AE, 395; registered $015B, 396; sacute $0161, 397; scaron $015F, 398; scedilla $0219, 399; scommaaccent $2211, 400; summation $0165, 401; tcaron $0163, 402; tcommaaccent $00FE, 403; thorn $00BE, 404; threequarters $00B3, 405; threesuperior $2122, 406; trademark $00B2, 407; twosuperior $00FA, 408; uacute $00FB, 409; ucircumflex $00FC, 410; udieresis $00F9, 411; ugrave $0171, 412; uhungarumlaut $016B, 413; umacron $0173, 414; uogonek $016F, 415; uring $00FD, 416; yacute $00FF, 417; ydieresis $017A, 418; zacute $017E, 419; zcaron $017C, 420; zdotaccent gle-graphics-4.2.4c/src/fonts/texcmti.gle0000664000000000000000000066650411676336540017053 0ustar rootrootdfont file_name="CMTI10" dfont font_name="CMTI10" dfont design= .35146 dfont slant= .25 dfont space= .125744 dfont stretch= .538903E-01 dfont shrink= .359267E-01 dfont x_hei= .151323 dfont quad= .359268 dfont extra_space= .359267E-01 dfont paint="FILL" !------------------ end of main parameters dfont char=0 !-------------- Beginning of new char. dfont wid=.627218 hei=.683332 dep=0 italic=.133055 set path ! start of curve newpath ! start of curve amove .24511 .23749 aline .24638 .236855 bezier .248147 .224371 .243319 .211186 .243205 .19812 bezier .240784 .185879 .240096 .173388 .238125 .160655 aline .23622 .15875 aline .230505 .15875 aline .229235 .159385 aline .2286 .16002 bezier .227492 .178775 .237915 .203893 .221615 .21971 bezier .21358 .225213 .203714 .226133 .194945 .22733 aline .14605 .22733 aline .145415 .226695 aline .14224 .22606 aline .14097 .225425 aline .1397 .224155 aline .137795 .220345 aline .13716 .21844 aline .09652 .05588 aline .088265 .02286 aline .08763 .019685 bezier .840536E-01 .103992E-01 .970086E-01 .976037E-02 .103505 .01016 aline .10414 .009525 aline .12319 .009525 aline .125095 .00762 aline .125095 .004445 aline .12446 .001905 aline .123825 .000635 aline .12319 0 aline .12192 -.000635 aline .111125 -.000635 aline .11049 0 aline .076835 0 aline .0762 .000635 aline .061595 .000635 aline .06096 0 aline .032385 0 aline .03175 -.000635 aline .02413 -.000635 aline .02286 0 aline .022225 .000635 aline .02159 .001905 aline .02159 .00381 aline .022225 .00635 aline .023495 .00889 bezier .357018E-01 .115426E-01 .545197E-01 .516735E-02 .059055 .020955 aline .099695 .183515 aline .10795 .216535 aline .108585 .21717 aline .108585 .224155 aline .106045 .225425 aline .10287 .22606 aline .102235 .226695 aline .09652 .226695 aline .095885 .22733 aline .080645 .22733 aline .07874 .229235 aline .07874 .23241 aline .079375 .23495 aline .08001 .23622 aline .080645 .236855 aline .081915 .23749 closepath ! end of curve fill dfont endchar dfont char=1 !-------------- Beginning of new char. dfont wid=.817774 hei=.683332 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .210185 .25019 aline .211455 .249555 bezier .224199 .203052 .231707 .154097 .24257 .10668 bezier .24905 .713318E-01 .258718 .357872E-01 .263525 .000635 aline .26289 0 aline .26162 -.000635 aline .026035 -.000635 bezier .255204E-01 .744158E-02 .351979E-01 .140401E-01 .038735 .02159 bezier .093648 .971485E-01 .145515 .175374 .20193 .249555 aline .2032 .25019 closepath ! end of curve ! start of curve amove .187325 .215265 bezier .142726 .151084 .951152E-01 .866357E-01 .05207 .02286 aline .227965 .02286 bezier .215844 .870755E-01 .201996 .152055 .18796 .2159 aline .187325 .215265 closepath ! end of curve fill dfont endchar dfont char=2 !-------------- Beginning of new char. dfont wid=.766663 hei=.683332 dep=0 italic=.0940275 set path ! start of curve newpath ! start of curve amove .203835 .24638 bezier .243354 .244348 .274785 .206443 .27559 .16764 bezier .282515 .909813E-01 .226756 .997126E-02 .14986 -.006985 bezier .11321 -.151039E-01 .708165E-01 .581916E-02 .059055 .04318 bezier .345039E-01 .119858 .851823E-01 .207814 .15748 .23876 aline .16891 .24257 aline .17653 .244475 aline .179705 .24511 aline .18288 .24511 aline .183515 .245745 aline .188595 .245745 aline .18923 .24638 aline .203835 .24638 closepath ! end of curve ! start of curve amove .188595 .23876 bezier .137253 .230282 .106069 .180063 .092075 .13335 bezier .806223E-01 .945249E-01 .713796E-01 .505399E-01 .09779 .015875 bezier .121744 -.011524 .163086 -.540553E-03 .18669 .02159 bezier .226625 .551205E-01 .242838 .110822 .248285 .159385 bezier .249645 .187713 .242567 .222796 .21336 .235585 aline .207645 .23749 aline .205105 .238125 aline .20447 .23876 aline .20066 .23876 aline .200025 .239395 aline .18923 .239395 aline .188595 .23876 closepath ! end of curve ! start of curve amove .118745 .14351 aline .12065 .142875 aline .12192 .141605 aline .12192 .13716 aline .120888 .133033 aline .121285 .131445 aline .21463 .131445 aline .215265 .132715 aline .21717 .140335 aline .217805 .141605 aline .219075 .142875 aline .220345 .14351 aline .224155 .14351 aline .22606 .142875 aline .22733 .141605 aline .22733 .13716 aline .217805 .09906 aline .21717 .097155 aline .2159 .095885 aline .213995 .09525 aline .210185 .09525 aline .208915 .095885 aline .207645 .097155 aline .20701 .098425 aline .20701 .099695 aline .20828 .104775 aline .208703 .106045 aline .20828 .107315 aline .114935 .107315 aline .1143 .10668 aline .112395 .09906 aline .11176 .097155 aline .11049 .095885 aline .108585 .09525 aline .104775 .09525 aline .103505 .095885 aline .102235 .097155 aline .1016 .098425 aline .1016 .099695 aline .11176 .140335 aline .112395 .141605 aline .113665 .142875 aline .114935 .14351 closepath ! end of curve fill dfont endchar dfont char=3 !-------------- Beginning of new char. dfont wid=.692218 hei=.683332 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .187325 .25019 aline .188595 .249555 aline .189865 .248285 bezier .193883 .17069 .196347 .924502E-01 .201295 .01524 aline .20193 .013335 aline .2032 .012065 aline .20447 .01143 aline .206375 .010795 aline .20701 .01016 aline .21082 .01016 aline .211455 .009525 aline .222885 .009525 aline .224155 .00889 aline .225425 .00635 aline .225425 .005715 aline .22479 .003175 aline .224155 .00127 aline .22225 -.000635 bezier .195022 .118086E-02 .167447 -.471418E-03 .140335 0 aline .1397 .000635 aline .139065 .001905 aline .139065 .004445 aline .1397 .006985 aline .140335 .008255 bezier .149899 .113818E-01 .163446 .762134E-02 .17018 .01778 aline .170815 .019685 bezier .169001 .079347 .165876 .140743 .16256 .20066 bezier .131644 .14242 .983601E-01 .854603E-01 .06858 .02667 bezier .640806E-01 .155215E-01 .076873 .833172E-02 .08636 .009525 aline .088265 .00762 aline .088265 .004445 aline .08763 .001905 aline .086995 .000635 aline .08636 0 bezier .653408E-01 -.766923E-03 .438794E-01 .143133E-02 .02286 -.000635 aline .020955 .00127 aline .020955 .00508 aline .02159 .00762 aline .023495 .009525 bezier .048609 .813397E-02 .614623E-01 .033864 .07112 .05334 bezier .107793 .118401 .141764 .185409 .179705 .249555 aline .180975 .25019 closepath ! end of curve fill dfont endchar dfont char=4 !-------------- Beginning of new char. dfont wid=.664441 hei=.683332 dep=0 italic=.152944 set path ! start of curve newpath ! start of curve amove .26289 .236855 aline .264795 .23495 aline .264795 .230505 aline .262255 .217805 aline .26162 .21717 aline .26162 .213995 aline .25781 .194945 aline .257175 .19431 aline .257175 .191135 aline .25654 .18796 aline .255905 .186055 aline .254 .18415 aline .248285 .18415 bezier .242746 .187737 .248256 .195278 .248285 .200025 aline .248285 .2032 aline .24892 .203835 aline .24892 .212725 aline .247015 .21336 aline .24638 .213995 aline .238125 .213995 aline .23749 .21463 aline .106045 .21463 aline .10541 .213995 aline .09652 .213995 aline .095885 .21336 aline .09271 .21336 aline .092075 .212725 aline .088265 .205105 aline .086995 .201295 aline .08636 .200025 aline .08509 .196215 aline .084455 .193675 aline .081915 .186055 aline .08001 .18415 aline .074295 .18415 aline .073025 .184785 aline .07239 .18542 bezier .737455E-01 .201689 .818283E-01 .218005 .085725 .234315 aline .08636 .235585 aline .086995 .23622 aline .088265 .236855 aline .26289 .236855 closepath ! end of curve ! start of curve amove .099695 .150495 aline .1016 .14859 aline .1016 .14478 aline .992981E-01 .135573 aline .099695 .133985 aline .20193 .133985 aline .202565 .135255 aline .20574 .147955 aline .206375 .149225 aline .20701 .14986 aline .20828 .150495 aline .213995 .150495 aline .2159 .14859 aline .2159 .14478 aline .20447 .09906 aline .203835 .097155 aline .20193 .09525 aline .196215 .09525 aline .194945 .095885 aline .19431 .09652 aline .193675 .09779 aline .193675 .099695 aline .196215 .109855 aline .196691 .110808 aline .196215 .11176 aline .093345 .11176 aline .09017 .09906 aline .089535 .097155 aline .08763 .09525 aline .081915 .09525 aline .080645 .095885 aline .08001 .09652 aline .079375 .09779 aline .079375 .099695 aline .09144 .147955 aline .092075 .149225 aline .09271 .14986 aline .09398 .150495 aline .099695 .150495 closepath ! end of curve ! start of curve amove .04445 .05588 aline .046355 .053975 aline .046355 .050165 aline .04445 .04064 aline .043815 .040005 aline .043815 .03683 aline .04318 .036195 aline .04318 .032385 aline .042545 .03175 aline .042545 .023495 aline .04572 .02286 aline .046355 .022225 aline .05461 .022225 aline .055245 .02159 aline .18796 .02159 aline .188595 .022225 aline .197485 .022225 bezier .207476 .235438E-01 .20799 .376433E-01 .211455 .04572 aline .21336 .051435 aline .213995 .053975 aline .2159 .05588 aline .22225 .05588 aline .224155 .053975 bezier .220446 .357899E-01 .214147 .176953E-01 .20828 0 aline .20701 -.000635 aline .028575 -.000635 aline .02667 .00127 aline .02667 .00635 aline .036195 .053975 aline .0381 .05588 aline .04445 .05588 closepath ! end of curve fill dfont endchar dfont char=5 !-------------- Beginning of new char. dfont wid=.743329 hei=.683332 dep=0 italic=.16389 set path ! start of curve newpath ! start of curve amove .296545 .23749 aline .297815 .236855 aline .29845 .23622 aline .299085 .23495 aline .299085 .233045 aline .29845 .230505 aline .29718 .227965 bezier .284973 .225312 .266155 .231688 .26162 .2159 aline .22098 .05334 aline .212725 .02032 aline .21209 .019685 aline .21209 .0127 aline .21463 .01143 aline .217805 .010795 aline .21844 .01016 aline .224155 .01016 aline .22479 .009525 aline .24003 .009525 aline .241935 .00762 aline .241935 .004445 aline .2413 .001905 aline .240665 .000635 aline .24003 0 bezier .209986 -.462549E-03 .179459 .120853E-02 .149225 -.000635 aline .147955 0 aline .14732 .000635 aline .146685 .001905 aline .146685 .00381 aline .14732 .00635 aline .14859 .00889 bezier .160797 .115426E-01 .179615 .516739E-02 .18415 .020955 aline .22479 .183515 aline .235347 .225743 aline .23495 .22733 aline .1397 .22733 aline .139065 .22606 aline .098425 .0635 aline .08763 .02032 aline .086995 .019685 aline .086995 .0127 aline .089535 .01143 aline .09271 .010795 aline .093345 .01016 aline .09906 .01016 aline .099695 .009525 aline .114935 .009525 aline .11684 .00762 aline .11684 .004445 aline .116205 .001905 aline .11557 .000635 aline .114935 0 bezier .848913E-01 -.462542E-03 .054364 .120853E-02 .02413 -.000635 aline .02286 0 aline .022225 .000635 aline .02159 .001905 aline .02159 .00381 aline .022225 .00635 aline .023495 .00889 bezier .357018E-01 .115426E-01 .545197E-01 .516735E-02 .059055 .020955 aline .099695 .183515 aline .10795 .216535 aline .108585 .21717 aline .108585 .224155 aline .106045 .225425 aline .10287 .22606 aline .102235 .226695 aline .09652 .226695 aline .095885 .22733 aline .080645 .22733 aline .07874 .229235 aline .07874 .23241 aline .079375 .23495 aline .08001 .23622 aline .080645 .236855 aline .081915 .23749 closepath ! end of curve fill dfont endchar dfont char=6 !-------------- Beginning of new char. dfont wid=.715551 hei=.683332 dep=0 italic=.120277 set path ! start of curve newpath ! start of curve amove .272415 .23876 aline .27432 .236855 bezier .271298 .211267 .26899 .185682 .26416 .160655 aline .26289 .16002 aline .257175 .16002 aline .25527 .161925 bezier .256591 .181237 .261916 .206143 .24384 .220345 bezier .23172 .226869 .218427 .227233 .20574 .2286 aline .120015 .2286 bezier .131537 .19159 .149643 .154932 .160655 .117475 bezier .124632 .825227E-01 .881514E-01 .048206 .05207 .013335 aline .052705 .0127 aline .147955 .0127 bezier .172568 .013582 .202616 .187335E-01 .216535 .04318 bezier .225095 .545367E-01 .228684 .692527E-01 .235585 .08128 aline .241935 .08128 aline .24384 .079375 bezier .236127 .525684E-01 .225106 .262617E-01 .215265 0 aline .213995 -.000635 aline .03048 -.000635 aline .028575 .00127 aline .028575 .004445 bezier .633044E-01 .038636 .991692E-01 .717443E-01 .133826 .105728 bezier .117435 .147172 .101779 .188921 .085725 .230505 aline .085725 .234315 aline .08636 .23622 aline .086995 .23749 aline .08763 .238125 aline .0889 .23876 aline .272415 .23876 closepath ! end of curve fill dfont endchar dfont char=7 !-------------- Beginning of new char. dfont wid=.766663 hei=.683332 dep=0 italic=.111112 set path ! start of curve newpath ! start of curve amove .13716 .24638 bezier .163083 .245062 .177055 .216745 .175895 .193675 aline .17653 .19304 aline .17653 .174625 aline .175895 .17399 aline .175895 .16637 aline .175498 .164782 aline .175895 .163195 bezier .18998 .198165 .211378 .237402 .25146 .245745 bezier .26582 .24892 .283359 .244011 .288925 .2286 bezier .293479 .216157 .293118 .20244 .28956 .189865 aline .287655 .18796 aline .28575 .187325 aline .28194 .187325 aline .28067 .18796 aline .280035 .188595 aline .2794 .189865 bezier .284771 .20376 .274658 .220408 .259715 .22225 bezier .223056 .224234 .201234 .187457 .1905 .156845 bezier .18547 .143876 .181495 .130436 .178435 .11684 aline .15494 .02286 aline .154305 .019685 bezier .150729 .103992E-01 .163684 .976037E-02 .17018 .01016 aline .170815 .009525 aline .189865 .009525 aline .19177 .00762 aline .19177 .004445 aline .191135 .001905 aline .1905 .000635 aline .189865 0 aline .188595 -.000635 aline .1778 -.000635 aline .177165 0 aline .14351 0 aline .142875 .000635 aline .127 .000635 aline .126365 0 aline .092075 0 aline .09144 -.000635 aline .08255 -.000635 aline .08128 0 aline .080645 .000635 aline .08001 .001905 aline .08001 .00381 aline .080645 .00635 aline .081915 .00889 bezier .957434E-01 .114341E-01 .11185 .617131E-02 .12319 .015875 aline .12573 .020955 aline .150495 .120015 bezier .15716 .150156 .16684 .182201 .150495 .21082 bezier .131267 .234613 .908581E-01 .217783 .08509 .189865 aline .083185 .18796 aline .08128 .187325 aline .07747 .187325 aline .0762 .18796 aline .075565 .188595 bezier .796949E-01 .217392 .104835 .249363 .13716 .24638 closepath ! end of curve fill dfont endchar dfont char=8 !-------------- Beginning of new char. dfont wid=.715551 hei=.683332 dep=0 italic=.0598621 set path ! start of curve newpath ! start of curve amove .14224 .23876 aline .142875 .238125 aline .17653 .238125 aline .177165 .23749 aline .192405 .23749 aline .19304 .238125 aline .22606 .238125 aline .226695 .23876 aline .23622 .23876 aline .238125 .236855 aline .238125 .233045 aline .23749 .230505 aline .235585 .2286 bezier .221845 .22773 .207054 .23088 .19558 .222885 aline .19304 .217805 aline .192405 .2159 aline .18669 .19304 aline .186214 .192088 bezier .215328 .1889 .25321 .1716 .25527 .13716 bezier .25891 .100291 .225278 .709891E-01 .193675 .057785 bezier .180103 .505721E-01 .162875 .492941E-01 .14986 .04572 aline .144145 .02286 aline .14351 .019685 bezier .139934 .103992E-01 .152889 .976037E-02 .159385 .01016 aline .16002 .009525 aline .17907 .009525 aline .180975 .00762 aline .180975 .004445 aline .18034 .001905 aline .179705 .000635 aline .17907 0 aline .1778 -.000635 aline .167005 -.000635 aline .16637 0 aline .13335 0 aline .132715 .000635 aline .117475 .000635 aline .11684 0 aline .083185 0 aline .08255 -.000635 aline .07366 -.000635 aline .07239 0 aline .071755 .000635 aline .07112 .001905 aline .07112 .00381 aline .071755 .00635 aline .073025 .00889 bezier .868534E-01 .114341E-01 .10296 .617131E-02 .1143 .015875 aline .11684 .020955 aline .122952 .454025E-01 aline .122646 .466271E-01 bezier .939583E-01 .498049E-01 .601829E-01 .673862E-01 .05588 .09906 bezier .523562E-01 .142456 .093388 .17332 .13081 .18542 aline .13335 .186055 aline .135255 .18669 aline .142875 .188595 aline .149225 .189865 aline .1524 .189865 aline .153035 .1905 aline .15748 .1905 aline .158115 .191135 aline .1595 .191597 aline .165735 .216535 aline .16637 .21717 aline .16637 .224155 aline .164465 .22606 aline .161925 .226695 aline .16129 .22733 aline .158115 .22733 aline .15748 .227965 aline .150495 .227965 aline .14986 .2286 aline .13081 .2286 aline .12954 .229235 aline .12827 .231775 aline .12827 .23241 aline .128905 .23495 aline .12954 .236855 aline .131445 .23876 aline .14224 .23876 closepath ! end of curve ! start of curve amove .18415 .18288 aline .183515 .18034 aline .1524 .05588 aline .151924 .549275E-01 bezier .183886 .056186 .214503 .817648E-01 .221615 .1143 bezier .228403 .135054 .230048 .162852 .20828 .175895 aline .20066 .179705 aline .194945 .18161 aline .192405 .182245 aline .186055 .183515 aline .185103 .183991 aline .184573 .183727 closepath ! end of curve ! start of curve amove .15367 .18288 bezier .120045 .177859 .940177E-01 .15065 .088265 .117475 bezier .810063E-01 .965771E-01 .856253E-01 .672869E-01 .109855 .059055 aline .111125 .05842 aline .11684 .056515 aline .12192 .055245 aline .123825 .054864 aline .125276 .551543E-01 aline .12573 .056515 aline .156845 .180975 aline .157268 .182245 aline .157026 .182971 aline .155575 .183261 closepath ! end of curve fill dfont endchar dfont char=9 !-------------- Beginning of new char. dfont wid=.766663 hei=.683332 dep=0 italic=.111112 set path ! start of curve newpath ! start of curve amove .15113 .23876 aline .151765 .238125 aline .18542 .238125 aline .186055 .23749 aline .201295 .23749 aline .20193 .238125 aline .23495 .238125 aline .235585 .23876 aline .24511 .23876 aline .247015 .236855 aline .247015 .233045 aline .24638 .230505 aline .244475 .2286 bezier .230735 .22773 .215944 .23088 .20447 .222885 aline .20193 .217805 aline .201295 .2159 aline .161528 .568325E-01 aline .161925 .055245 bezier .203974 .681373E-01 .222365 .112651 .23114 .1524 bezier .236462 .16906 .244089 .1891 .26289 .193675 aline .287655 .193675 aline .28956 .19177 aline .28956 .188595 aline .287655 .18669 bezier .267983 .186113 .261431 .163166 .25654 .14732 bezier .247462 .988179E-01 .211852 .523559E-01 .160655 .04699 aline .159131 .046482 aline .15875 .04572 aline .153035 .02286 aline .1524 .019685 bezier .148824 .103992E-01 .161779 .976037E-02 .168275 .01016 aline .16891 .009525 aline .18796 .009525 aline .189865 .00762 aline .189865 .004445 aline .18923 .001905 aline .188595 .000635 aline .18796 0 aline .18669 -.000635 aline .175895 -.000635 aline .17526 0 aline .14224 0 aline .141605 .000635 aline .126365 .000635 aline .12573 0 aline .092075 0 aline .09144 -.000635 aline .08255 -.000635 aline .08128 0 aline .080645 .000635 aline .08001 .001905 aline .08001 .00381 aline .080645 .00635 aline .081915 .00889 bezier .957434E-01 .114341E-01 .11185 .617131E-02 .12319 .015875 aline .12573 .020955 aline .13208 .046355 aline .132715 .04699 bezier .105027 .492664E-01 .806794E-01 .739088E-01 .081915 .102235 bezier .774464E-01 .128004 .938282E-01 .15334 .0889 .17907 aline .088265 .18034 bezier .875395E-01 .188854 .723902E-01 .183438 .075565 .192405 aline .0762 .19304 aline .07747 .193675 aline .1016 .193675 bezier .119737 .189424 .116885 .167068 .114935 .15367 bezier .108415 .123712 .974146E-01 .906303E-01 .11811 .064135 aline .11938 .0635 aline .12192 .06096 aline .12319 .060325 aline .123825 .05969 aline .130175 .056515 aline .13335 .554567E-01 aline .134239 .055753 aline .13462 .056515 aline .174625 .216535 aline .17526 .21717 aline .17526 .224155 aline .173355 .22606 aline .170815 .226695 aline .17018 .22733 aline .167005 .22733 aline .16637 .227965 aline .159385 .227965 aline .15875 .2286 aline .1397 .2286 aline .13843 .229235 aline .13716 .231775 aline .13716 .23241 aline .137795 .23495 aline .13843 .236855 aline .140335 .23876 aline .15113 .23876 closepath ! end of curve fill dfont endchar dfont char=10 !-------------- Beginning of new char. dfont wid=.715551 hei=.683332 dep=0 italic=.10257 set path ! start of curve newpath ! start of curve amove .19558 .24638 bezier .229994 .245034 .266884 .217492 .266065 .18034 bezier .268732 .142028 .239826 .109683 .216535 .081915 bezier .199888 .625642E-01 .180699 .432252E-01 .17145 .019685 aline .2032 .019685 aline .203835 .02032 bezier .218008 .184963E-01 .221229 .353167E-01 .226695 .045085 aline .230505 .052705 aline .23114 .05334 aline .23241 .053975 aline .238125 .053975 aline .24003 .05207 aline .24003 .048895 aline .23749 .043815 aline .236855 .04191 aline .230505 .02921 aline .22987 .027305 aline .224155 .015875 aline .22352 .01397 aline .216535 0 aline .215265 -.000635 aline .159385 -.000635 aline .15748 .00127 bezier .169843 .629716E-01 .223217 .107745 .23368 .17018 bezier .241015 .196441 .228525 .233797 .19685 .238125 bezier .155232 .244888 .115482 .20921 .103505 .17018 bezier .894788E-01 .13353 .09714 .941653E-01 .10033 .05715 aline .10033 .026035 bezier .981273E-01 .176857E-01 .100061 .656751E-02 .09398 -.000635 aline .0381 -.000635 aline .036195 .00127 aline .036195 .03048 aline .03683 .031115 aline .03683 .051435 aline .037465 .052705 aline .0381 .05334 aline .03937 .053975 aline .045085 .053975 aline .04699 .05207 aline .04699 .02667 aline .047625 .026035 aline .047625 .022225 aline .048895 .02159 aline .051435 .020955 aline .05207 .02032 aline .056515 .02032 aline .05715 .019685 aline .090805 .019685 bezier .951825E-01 .562349E-01 .067201 .912599E-01 .065405 .12827 bezier .575942E-01 .190844 .119903 .242334 .1778 .24638 aline .19558 .24638 closepath ! end of curve fill dfont endchar dfont char=11 !-------------- Beginning of new char. dfont wid=.61333 hei=.694445 dep=.194445 italic=.211945 dfont fby=33 kadd=.104306 dfont fby=39 kadd=.104306 dfont fby=")" kadd=.104306 dfont fby="?" kadd=.104306 dfont fby="]" kadd=.104306 dfont fby="i" ligrep=14 dfont fby="l" ligrep=15 set path ! start of curve newpath ! start of curve amove .154305 .24638 bezier .169041 .245917 .188933 .236595 .184785 .21844 bezier .18335 .205172 .161374 .197993 .15621 .21209 bezier .154303 .221532 .160854 .2307 .17018 .23241 bezier .149512 .248728 .113561 .235602 .111125 .207645 bezier .106443 .188433 .101779 .168907 .099695 .14986 aline .18034 .14986 bezier .188691 .177926 .186945 .212308 .20828 .23495 bezier .223331 .251271 .257844 .251344 .26543 .227965 aline .26543 .21844 bezier .263995 .205172 .242019 .197993 .236855 .21209 bezier .234713 .222174 .242311 .230641 .25146 .233045 bezier .242416 .242241 .226234 .241241 .22098 .2286 bezier .216304 .220835 .215792 .211225 .21336 .202565 aline .20701 .170815 aline .206375 .17018 aline .206375 .167005 aline .203835 .154305 aline .2032 .15367 aline .2032 .150495 aline .203835 .14986 aline .236855 .14986 aline .23876 .147955 aline .23876 .144145 aline .238125 .14224 aline .23749 .14097 aline .236855 .140335 aline .235585 .1397 aline .201295 .1397 bezier .187722 .822736E-01 .183313 .021479 .16129 -.034925 bezier .148124 -.634122E-01 .11007 -.855579E-01 .08128 -.065405 bezier .668011E-01 -.553371E-01 .752972E-01 -.278415E-01 .09398 -.031115 bezier .109664 -.342221E-01 .102929 -.057843 .892629E-01 -.589643E-01 bezier .976055E-01 -.685493E-01 .114426 -.679391E-01 .12446 -.05969 bezier .146193 -.420003E-01 .14763 -.120135E-01 .154305 .013335 aline .160655 .045085 bezier .166357 .076401 .173535 .108559 .178435 .1397 aline .097155 .1397 bezier .911679E-01 .109858 .854851E-01 .803812E-01 .08001 .0508 aline .07366 .01905 bezier .651193E-01 -.133634E-01 .060647 -.549955E-01 .02794 -.071755 bezier .010816 -.779286E-01 -.129561E-01 -.653173E-01 -.008255 -.045085 bezier -.681984E-02 -.318172E-01 .151563E-01 -.246385E-01 .02032 -.038735 bezier .224424E-01 -.489461E-01 .147011E-01 -.057709 .00508 -.05969 bezier .126131E-01 -.069277 .280341E-01 -.674493E-01 .032385 -.05588 bezier .503452E-01 -.60046E-02 .551836E-01 .473492E-01 .06731 .09779 aline .06731 .100965 aline .06985 .113665 aline .070485 .1143 aline .070485 .117475 aline .07366 .13335 aline .074295 .133985 aline .074295 .13716 aline .747183E-01 .13843 aline .074295 .1397 aline .04699 .1397 aline .04572 .140335 aline .04445 .142875 aline .04445 .14351 aline .045085 .14605 aline .04572 .147955 aline .047625 .14986 aline .076835 .14986 bezier .843291E-01 .181195 .838816E-01 .224769 .11811 .240665 aline .120015 .2413 aline .121285 .241935 aline .127 .24384 aline .13208 .24511 aline .135255 .245745 aline .1397 .245745 aline .140335 .24638 aline .154305 .24638 closepath ! end of curve fill dfont endchar dfont char=12 !-------------- Beginning of new char. dfont wid=.56222 hei=.694445 dep=.194445 italic=.103334 set path ! start of curve newpath ! start of curve amove .169545 .24638 bezier .185849 .245635 .212391 .238557 .208915 .216535 bezier .209314 .201672 .183988 .193162 .179705 .20955 bezier .17828 .219226 .186277 .227182 .194945 .229235 bezier .176117 .243377 .14956 .241969 .128905 .23241 bezier .107889 .219238 .109083 .190148 .102235 .16891 aline .102235 .165735 aline .099695 .153035 aline .992981E-01 .151448 aline .099695 .14986 aline .18923 .14986 aline .189865 .149225 aline .191135 .14859 aline .191135 .14478 aline .163195 .03302 bezier .161022 .231564E-01 .15694 .85486E-02 .168275 .00254 bezier .183644 .295029E-02 .186797 .022468 .191135 .03429 aline .19177 .03683 aline .192405 .038735 aline .194945 .048895 aline .19558 .0508 aline .197485 .052705 aline .2032 .052705 aline .20447 .05207 aline .20574 .0508 bezier .201353 .03046 .197259 .213025E-02 .17399 -.004445 bezier .153172 -.812466E-02 .135874 .136921E-01 .141605 .03302 aline .141605 .036195 aline .167005 .137795 aline .167481 .138747 aline .167005 .1397 aline .097155 .1397 bezier .841647E-01 .811573E-01 .783112E-01 .203252E-01 .057785 -.037465 bezier .499078E-01 -.573232E-01 .309803E-01 -.805274E-01 .006985 -.07112 bezier -.012039 -.669582E-01 -.014586 -.353643E-01 .005715 -.031115 aline .01143 -.031115 bezier .272912E-01 -.343202E-01 .201979E-01 -.581669E-01 .00635 -.059055 aline .00508 -.05969 bezier .122653E-01 -.685202E-01 .268351E-01 -.679683E-01 .03175 -.05715 bezier .408424E-01 -.384887E-01 .432362E-01 -.174384E-01 .04826 .00254 aline .056515 .043815 bezier .621581E-01 .756192E-01 .697771E-01 .107688 .074295 .1397 aline .04699 .1397 aline .045085 .141605 aline .045085 .14605 aline .04572 .147955 aline .047625 .14986 aline .076835 .14986 bezier .837171E-01 .182587 .857903E-01 .226064 .12192 .240665 aline .123825 .2413 aline .125095 .241935 aline .127 .24257 aline .13462 .244475 aline .137795 .24511 aline .141605 .24511 aline .14224 .245745 aline .147955 .245745 aline .14859 .24638 aline .169545 .24638 closepath ! end of curve fill dfont endchar dfont char=13 !-------------- Beginning of new char. dfont wid=.587774 hei=.694445 dep=.194445 italic=.103334 set path ! start of curve newpath ! start of curve amove .161925 .24638 bezier .175275 .245358 .198027 .240586 .196215 .22225 aline .19685 .221615 aline .201295 .239395 aline .20193 .2413 aline .202565 .241935 aline .203835 .24257 aline .221615 .24257 aline .222885 .2413 aline .22352 .24003 aline .22352 .23876 aline .18288 .0762 aline .172085 .03302 bezier .169912 .231564E-01 .16583 .85486E-02 .177165 .00254 bezier .192534 .295029E-02 .195687 .022468 .200025 .03429 aline .20066 .03683 aline .201295 .038735 aline .203835 .048895 aline .20447 .0508 aline .206375 .052705 aline .21209 .052705 aline .21336 .05207 aline .21463 .0508 bezier .210243 .03046 .206149 .213025E-02 .18288 -.004445 bezier .162062 -.812466E-02 .144764 .136921E-01 .150495 .03302 aline .150495 .036195 aline .175895 .137795 aline .176371 .138747 aline .175895 .1397 aline .097155 .1397 bezier .838224E-01 .080521 .078342 .193827E-01 .05715 -.038735 bezier .049252 -.574423E-01 .318596E-01 -.079209 .00889 -.071755 bezier -.947649E-02 -.689082E-01 -.156577E-01 -.406561E-01 .001905 -.032385 bezier .110927E-01 -.275122E-01 .235953E-01 -.347256E-01 .02032 -.04572 bezier .189809E-01 -.532615E-01 .119945E-01 -.578003E-01 .00508 -.05969 bezier .122274E-01 -.686118E-01 .268567E-01 -.067916 .03175 -.05715 bezier .479198E-01 -.150301E-01 .529789E-01 .031113 .06223 .074295 bezier .662547E-01 .962337E-01 .714793E-01 .117686 .074295 .1397 aline .04699 .1397 aline .04572 .140335 aline .04445 .142875 aline .04445 .14351 aline .045085 .14605 aline .04572 .147955 aline .047625 .14986 aline .076835 .14986 bezier .840967E-01 .181775 .847013E-01 .225432 .120015 .240665 aline .12192 .2413 aline .12319 .241935 aline .127 .243205 aline .13208 .244475 aline .135255 .24511 aline .13843 .24511 aline .139065 .245745 aline .144145 .245745 aline .14478 .24638 aline .161925 .24638 closepath ! end of curve ! start of curve amove .14732 .23876 bezier .133856 .237846 .118585 .230489 .1143 .216535 bezier .107033 .194688 .102624 .172105 .099695 .14986 aline .178435 .14986 aline .17907 .150495 aline .194072 .210503 aline .193675 .21209 bezier .188173 .203084 .171425 .200648 .16764 .21209 bezier .165733 .221532 .172284 .2307 .18161 .23241 bezier .171313 .238747 .158749 .240465 .14732 .23876 closepath ! end of curve ! start of curve amove .193834 .212407 aline .19431 .211455 aline .194786 .212407 aline .19431 .21336 closepath ! end of curve fill dfont endchar dfont char=14 !-------------- Beginning of new char. dfont wid=.881662 hei=.694445 dep=.194445 italic=.103334 set path ! start of curve newpath ! start of curve amove .160655 .24638 bezier .172706 .244957 .19016 .242247 .19431 .227965 aline .19431 .21844 bezier .192875 .205172 .170899 .197993 .165735 .21209 bezier .163828 .221532 .170379 .2307 .179705 .23241 bezier .15766 .246459 .118897 .24023 .112395 .21082 bezier .106893 .190712 .102481 .169618 .099695 .14986 aline .18415 .14986 bezier .191827 .18026 .192425 .221377 .22479 .238125 bezier .250215 .249318 .27923 .248805 .305435 .2413 bezier .321856 .237159 .327938 .212634 .313055 .2032 bezier .303939 .195701 .287455 .204182 .292735 .216535 aline .29337 .21844 aline .29464 .22098 aline .299085 .225425 aline .300355 .22606 aline .30099 .226695 aline .30226 .22733 aline .304165 .227965 aline .306705 .2286 aline .30734 .229235 bezier .289394 .242599 .26474 .241203 .244475 .235585 bezier .21834 .227571 .216579 .195652 .211455 .173355 aline .20828 .15748 aline .207645 .156845 aline .207645 .15367 aline .207264 .151765 aline .207645 .14986 aline .301625 .14986 aline .30226 .149225 aline .30353 .14859 aline .30353 .14478 aline .27559 .03302 bezier .273417 .231564E-01 .269335 .854861E-02 .28067 .00254 bezier .296039 .295029E-02 .299192 .022468 .30353 .03429 aline .304165 .03683 aline .3048 .038735 aline .30734 .048895 aline .307975 .0508 aline .30988 .052705 aline .315595 .052705 aline .316865 .05207 aline .318135 .0508 bezier .313748 .03046 .309654 .213026E-02 .286385 -.004445 bezier .265567 -.812466E-02 .248269 .136921E-01 .254 .03302 aline .254 .036195 aline .2794 .137795 aline .279876 .138747 aline .2794 .1397 aline .205105 .1397 bezier .199161 .111245 .193889 .829126E-01 .188595 .05461 aline .182245 .02286 bezier .174899 -.010138 .167314 -.487152E-01 .135255 -.06604 bezier .116923 -.765689E-01 .887655E-01 -.768644E-01 .075565 -.05842 bezier .686237E-01 -.044544 .823736E-01 -.253228E-01 .09779 -.032385 bezier .109196 -.398444E-01 .100586 -.057466 .890587E-01 -.593725E-01 bezier .108979 -.760692E-01 .137279 -.586311E-01 .14478 -.03683 aline .145415 -.03556 aline .14859 -.026035 aline .149225 -.023495 aline .14986 -.02159 aline .15494 -.00127 aline .155575 .001905 aline .15621 .004445 aline .15748 .010795 aline .158115 .013335 aline .1651 .04826 bezier .170689 .785259E-01 .177554 .109675 .182245 .1397 aline .09779 .1397 bezier .833582E-01 .807491E-01 .788541E-01 .177148E-01 .056515 -.04064 bezier .485383E-01 -.598371E-01 .283172E-01 -.810561E-01 .005715 -.070485 bezier -.124453E-01 -.065683 -.138998E-01 -.350571E-01 .005715 -.031115 aline .01143 -.031115 bezier .272912E-01 -.343202E-01 .201979E-01 -.581669E-01 .00635 -.059055 aline .00508 -.05969 bezier .122285E-01 -.068217 .270912E-01 -.683722E-01 .03175 -.05715 bezier .476819E-01 -.187059E-01 .509981E-01 .239925E-01 .06096 .0635 bezier .641776E-01 .891564E-01 .716308E-01 .114251 .074295 .1397 aline .04699 .1397 aline .045085 .141605 aline .045085 .145415 aline .04572 .14732 aline .046355 .14859 aline .04699 .149225 aline .04826 .14986 aline .076835 .14986 bezier .845217E-01 .180067 .838638E-01 .219174 .113665 .23749 aline .121285 .2413 aline .128905 .24384 aline .131445 .244475 aline .13462 .24511 aline .137795 .24511 aline .13843 .245745 aline .14351 .245745 aline .144145 .24638 aline .160655 .24638 closepath ! end of curve fill dfont endchar dfont char=15 !-------------- Beginning of new char. dfont wid=.89444 hei=.694445 dep=.194445 italic=.103334 set path ! start of curve newpath ! start of curve amove .15494 .24638 bezier .169676 .245917 .189568 .236595 .18542 .21844 bezier .183985 .205172 .162009 .197993 .156845 .21209 bezier .154938 .221532 .161489 .2307 .170815 .23241 bezier .150557 .248241 .114681 .236469 .11176 .208915 bezier .106591 .189386 .102509 .169389 .099695 .14986 aline .18415 .14986 bezier .192348 .179914 .191417 .219605 .221615 .23749 bezier .243913 .248853 .270351 .249369 .29337 .240665 aline .294005 .24003 aline .295275 .239395 aline .29591 .23876 aline .29718 .238125 aline .30226 .233045 aline .302895 .231775 aline .304165 .227965 aline .304165 .22225 aline .3048 .221615 aline .309245 .239395 aline .30988 .2413 aline .310515 .241935 aline .311785 .24257 aline .329565 .24257 aline .330835 .2413 aline .33147 .24003 aline .33147 .23876 aline .29083 .0762 aline .280035 .03302 bezier .277862 .231564E-01 .27378 .854861E-02 .285115 .00254 bezier .300484 .295029E-02 .303637 .022468 .307975 .03429 aline .30861 .03683 aline .309245 .038735 aline .311785 .048895 aline .31242 .0508 aline .314325 .052705 aline .32004 .052705 aline .32131 .05207 aline .32258 .0508 bezier .318193 .03046 .314099 .213026E-02 .29083 -.004445 bezier .270012 -.812466E-02 .252714 .136921E-01 .258445 .03302 aline .258445 .036195 aline .283845 .137795 aline .284321 .138747 aline .283845 .1397 aline .205105 .1397 bezier .191878 .833162E-01 .187146 .238959E-01 .16637 -.03175 bezier .153156 -.636979E-01 .110525 -.868298E-01 .08001 -.064135 bezier .660203E-01 -.527353E-01 .779586E-01 -.253065E-01 .09652 -.03175 bezier .109618 -.038081 .101165 -.575848E-01 .890587E-01 -.593725E-01 bezier .108979 -.760692E-01 .137279 -.586311E-01 .14478 -.03683 bezier .151075 -.206819E-01 .15414 -.348838E-02 .158115 .013335 aline .1651 .04826 bezier .170585 .785164E-01 .177574 .109568 .182245 .1397 aline .09779 .1397 bezier .832968E-01 .806338E-01 .788343E-01 .177727E-01 .056515 -.04064 bezier .485383E-01 -.598371E-01 .283172E-01 -.810561E-01 .005715 -.070485 bezier -.124453E-01 -.065683 -.138998E-01 -.350571E-01 .005715 -.031115 aline .01143 -.031115 bezier .272912E-01 -.343202E-01 .201979E-01 -.581669E-01 .00635 -.059055 aline .00508 -.05969 bezier .122285E-01 -.068217 .270912E-01 -.683722E-01 .03175 -.05715 bezier .409536E-01 -.038777 .432335E-01 -.178522E-01 .04826 .001905 aline .056515 .04318 bezier .621444E-01 .751293E-01 .699971E-01 .107518 .074295 .1397 aline .04699 .1397 aline .045085 .141605 aline .045085 .145415 aline .04572 .14732 aline .046355 .14859 aline .04699 .149225 aline .04826 .14986 aline .076835 .14986 bezier .847679E-01 .18004 .835608E-01 .220096 .113665 .238125 aline .121285 .241935 aline .127 .24384 aline .12954 .244475 aline .13589 .245745 aline .140335 .245745 aline .14097 .24638 aline .15494 .24638 closepath ! end of curve ! start of curve amove .254635 .23876 bezier .237398 .238002 .221806 .225285 .219075 .207645 bezier .214316 .188561 .20933 .168481 .207645 .14986 aline .286385 .14986 aline .28702 .150495 aline .302022 .210503 aline .301625 .21209 bezier .296123 .203084 .279375 .200648 .27559 .21209 bezier .273683 .221532 .280234 .2307 .28956 .23241 bezier .279087 .238909 .266311 .240516 .254635 .23876 closepath ! end of curve ! start of curve amove .301784 .212407 aline .30226 .211455 aline .302736 .212407 aline .30226 .21336 closepath ! end of curve fill dfont endchar dfont char=16 !-------------- Beginning of new char. dfont wid=.306665 hei=.430555 dep=0 italic=.0767136 set path ! start of curve newpath ! start of curve amove .078105 .15367 bezier .989184E-01 .151163 .104837 .126361 .097155 .109855 bezier .867987E-01 .769781E-01 .697906E-01 .448971E-01 .064135 .01143 aline .06477 .010795 bezier .649366E-01 -.600005E-03 .782985E-01 .184865E-02 .084455 .006985 bezier .098338 .184456E-01 .100418 .377757E-01 .10795 .052705 aline .113665 .052705 aline .114935 .05207 aline .116205 .0508 bezier .112029 .263792E-01 .971334E-01 -.623283E-02 .067945 -.004445 bezier .457265E-01 -.215228E-02 .408384E-01 .251231E-01 .04953 .04191 bezier .597011E-01 .717978E-01 .728131E-01 .101583 .08128 .131445 aline .08128 .140335 bezier .764568E-01 .153452 .590603E-01 .143402 .05461 .13462 bezier .461901E-01 .123783 .438237E-01 .1095 .038735 .097155 aline .037465 .09652 aline .03175 .09652 aline .031115 .097155 bezier .274723E-01 .104153 .342159E-01 .113707 .036195 .121285 bezier .427564E-01 .135735 .530791E-01 .15078 .06985 .15367 closepath ! end of curve fill dfont endchar dfont char=17 !-------------- Beginning of new char. dfont wid=.33222 hei=.430555 dep=.194445 italic=.0373611 set path ! start of curve newpath ! start of curve amove .086995 .15367 bezier .107105 .151762 .116313 .128919 .111125 .11176 aline .07747 -.02286 bezier .692938E-01 -.565106E-01 .029292 -.860669E-01 -.00381 -.06731 bezier -.194529E-01 -.582447E-01 -.104476E-01 -.308924E-01 .008255 -.03429 bezier .235735E-01 -.037737 .169669E-01 -.594459E-01 .004445 -.06223 bezier .200308E-01 -.723726E-01 .387962E-01 -.608603E-01 .04572 -.04572 aline .050165 -.03683 aline .0508 -.034925 aline .051435 -.033655 aline .055245 -.022225 aline .09017 .117475 bezier .921826E-01 .126356 .954191E-01 .140915 .08509 .146685 bezier .586822E-01 .146668 .481432E-01 .117395 .038735 .097155 aline .037465 .09652 aline .03175 .09652 aline .031115 .097155 aline .029845 .09779 bezier .339876E-01 .11917 .481695E-01 .139742 .06731 .150495 aline .069215 .15113 aline .070485 .151765 aline .07239 .1524 aline .07493 .153035 aline .078105 .15367 aline .086995 .15367 closepath ! end of curve fill dfont endchar dfont char=18 !-------------- Beginning of new char. dfont wid=.511108 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .118745 .243205 aline .12065 .24257 aline .121285 .241935 aline .122555 .2413 aline .12319 .240665 aline .123825 .239395 aline .12446 .23876 aline .12954 .2286 aline .130175 .226695 aline .141605 .203835 aline .14224 .20193 aline .15113 .18415 aline .15113 .18034 aline .149225 .178435 bezier .141715 .172296 .137852 .185023 .13335 .18923 bezier .123188 .201776 .113052 .214341 .103505 .22733 aline .103505 .23368 aline .10414 .235585 aline .104775 .23622 aline .10541 .23749 aline .108585 .240665 aline .109855 .2413 aline .11049 .241935 aline .11176 .24257 aline .113665 .243205 closepath ! end of curve fill dfont endchar dfont char=19 !-------------- Beginning of new char. dfont wid=.511108 hei=.694445 dep=0 italic=.0969448 set path ! start of curve newpath ! start of curve amove .186055 .243205 bezier .196093 .240834 .194606 .226401 .186055 .222885 bezier .166303 .207232 .146388 .191806 .126365 .17653 aline .123825 .17653 aline .120015 .18034 aline .120015 .183515 aline .12065 .184785 aline .16383 .227965 aline .164465 .229235 aline .17526 .24003 aline .17653 .240665 aline .1778 .241935 aline .17907 .24257 aline .180975 .243205 closepath ! end of curve fill dfont endchar dfont char=20 !-------------- Beginning of new char. dfont wid=.511108 hei=.628473 dep=0 italic=.0829525 set path ! start of curve newpath ! start of curve amove .10668 .22098 bezier .117373 .212654 .127498 .203539 .138113 .195104 bezier .153886 .203191 .168442 .214952 .184785 .22098 bezier .18969 .217816 .189184 .211352 .183515 .20955 bezier .166712 .199404 .151456 .185116 .133985 .177165 aline .12319 .18796 aline .122555 .18923 aline .11176 .200025 aline .111125 .201295 aline .10033 .21209 aline .09906 .21463 aline .09906 .215265 aline .10033 .217805 aline .1016 .219075 aline .10287 .21971 aline .10414 .22098 aline .10668 .22098 closepath ! end of curve fill dfont endchar dfont char=21 !-------------- Beginning of new char. dfont wid=.511108 hei=.694445 dep=0 italic=.108057 set path ! start of curve newpath ! start of curve amove .10668 .24257 aline .10795 .241935 bezier .11028 .234384 .104652 .225487 .108585 .217805 bezier .112887 .195845 .13932 .189758 .156845 .19939 bezier .174376 .207263 .186376 .223748 .19177 .241935 aline .19304 .24257 aline .19558 .24257 aline .19685 .241935 bezier .199192 .23129 .190625 .220438 .18542 .211455 bezier .170593 .189254 .138422 .172676 .1143 .189865 bezier .993341E-01 .20225 .972774E-01 .223735 .102235 .240665 aline .10414 .24257 closepath ! end of curve fill dfont endchar dfont char=22 !-------------- Beginning of new char. dfont wid=.511108 hei=.561666 dep=0 italic=.103334 set path ! start of curve newpath ! start of curve amove .19685 .20574 aline .198755 .203835 aline .198755 .20066 aline .19812 .19812 aline .197485 .19685 aline .19685 .196215 aline .19558 .19558 aline .08382 .19558 aline .081915 .197485 aline .081915 .201295 aline .08255 .203835 aline .084455 .20574 aline .19685 .20574 closepath ! end of curve fill dfont endchar dfont char=23 !-------------- Beginning of new char. dfont wid=.831291 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .21336 .25019 bezier .23389 .248448 .239938 .221644 .22733 .207645 bezier .216085 .188194 .179762 .179721 .169545 .20447 bezier .163671 .22584 .183177 .247299 .20447 .25019 closepath ! end of curve ! start of curve amove .20193 .24257 bezier .183433 .240786 .173938 .216427 .180975 .201295 bezier .196323 .188446 .221819 .200965 .222885 .22098 bezier .227169 .230362 .222122 .241773 .211455 .243205 aline .202565 .243205 closepath ! end of curve fill dfont endchar dfont char=24 !-------------- Beginning of new char. dfont wid=.459997 hei=0 dep=.170138 italic=0 set path ! start of curve newpath ! start of curve amove .09779 -.00127 aline .099695 -.003175 aline .099695 -.006985 aline .967581E-01 -.187325E-01 bezier .103805 -.223427E-01 .115439 -.247918E-01 .117475 -.034925 bezier .120725 -.05837 .925853E-01 -.670951E-01 .074295 -.066675 aline .07366 -.06731 aline .064135 -.06731 aline .0635 -.067945 aline .038735 -.067945 aline .037465 -.06731 aline .03683 -.066675 aline .036195 -.065405 aline .036195 -.0635 aline .03683 -.06223 bezier .054059 -.590699E-01 .730631E-01 -.630927E-01 .0889 -.052705 bezier .098803 -.459477E-01 .982238E-01 -.290784E-01 .08509 -.02667 aline .081915 -.026035 aline .08128 -.0254 aline .0762 -.0254 aline .07493 -.024765 aline .07366 -.022225 aline .07366 -.02159 aline .078105 -.00381 aline .07874 -.00254 aline .079375 -.001905 aline .080645 -.00127 aline .09779 -.00127 closepath ! end of curve fill dfont endchar dfont char=25 !-------------- Beginning of new char. dfont wid=.536664 hei=.694445 dep=.194445 italic=.105138 set path ! start of curve newpath ! start of curve amove .16256 .24638 bezier .184617 .245521 .207852 .225116 .202565 .20193 bezier .199649 .169601 .172553 .148831 .156845 .12319 bezier .150649 .107606 .168122 .954085E-01 .17526 .083185 bezier .207191 .037406 .139231 -.280785E-01 .094615 .00381 bezier .082861 .119931E-01 .834413E-01 .378978E-01 .100965 .037465 bezier .114001 .356968E-01 .108742 .169135E-01 .09779 .015875 bezier .106103 -.209215E-02 .133997 -.135776E-02 .14224 .01651 bezier .15238 .343724E-01 .164393 .582549E-01 .14859 .0762 bezier .134732 .930985E-01 .134676 .119819 .14859 .136525 bezier .169492 .152001 .175695 .177804 .180975 .20193 bezier .184665 .216875 .176898 .23667 .16002 .239395 bezier .142622 .240156 .120726 .234599 .1143 .2159 bezier .973537E-01 .15801 .911741E-01 .987396E-01 .07747 .04064 bezier .714268E-01 .812234E-02 .663459E-01 -.271911E-01 .04699 -.05461 bezier .369765E-01 -.679447E-01 .017177 -.801117E-01 .00127 -.06858 bezier -.137746E-01 -.580782E-01 -.719264E-02 -.283957E-01 .013335 -.031115 bezier .291962E-01 -.343202E-01 .221029E-01 -.581669E-01 .008255 -.059055 aline .00508 -.05969 bezier .012167 -.718733E-01 .027669 -.639336E-01 .03175 -.05334 bezier .474292E-01 -.185393E-01 .050913 .212732E-01 .059055 .057785 bezier .641272E-01 .085233 .704369E-01 .112173 .074295 .1397 aline .04699 .1397 aline .04572 .140335 aline .04445 .142875 aline .04445 .14351 aline .045085 .14605 aline .04572 .147955 aline .047625 .14986 aline .076835 .14986 bezier .838603E-01 .182046 .851953E-01 .225614 .12065 .240665 aline .12446 .241935 aline .12573 .24257 aline .13335 .244475 aline .136525 .24511 aline .1397 .24511 aline .140335 .245745 aline .14605 .245745 aline .146685 .24638 aline .16256 .24638 closepath ! end of curve fill dfont endchar dfont char=26 !-------------- Beginning of new char. dfont wid=.715551 hei=.430555 dep=0 italic=.075139 set path ! start of curve newpath ! start of curve amove .165735 .15367 aline .16764 .153035 aline .168275 .1524 aline .169545 .151765 aline .170815 .150495 aline .17145 .149225 aline .17145 .14224 aline .17018 .13716 aline .169704 .136208 bezier .177506 .140032 .188462 .149008 .19939 .15113 bezier .218861 .158122 .248506 .15239 .252095 .12827 bezier .255418 .100176 .225405 .825171E-01 .20066 .08255 aline .200025 .081915 aline .194945 .081915 aline .19431 .08128 aline .18542 .08128 aline .184785 .080645 aline .15621 .080645 bezier .149822 .567802E-01 .145457 .263095E-01 .165735 .006985 bezier .189682 -.593175E-02 .216571 .138123E-01 .231775 .032385 bezier .234712 .035455 .235868 .421952E-01 .2413 .041275 aline .24511 .037465 bezier .242529 .023968 .228365 .148966E-01 .217805 .006985 bezier .194742 -.875669E-02 .158091 -.010382 .142875 .01651 aline .14097 .02032 bezier .138117 .106401E-01 .137918 -.611992E-02 .123825 -.004445 aline .12192 -.00381 aline .12065 -.003175 aline .11811 -.000635 aline .117475 .00127 aline .117475 .005715 aline .120015 .015875 aline .120438 .017145 aline .120015 .018415 bezier .107749 .231121E-02 .870735E-01 -.915482E-02 .066675 -.003175 bezier .447437E-01 .885368E-04 .270384E-01 .221672E-01 .033655 .043815 bezier .487085E-01 .984847E-01 .10437 .125429 .1524 .145415 aline .153035 .14732 aline .15367 .14859 aline .156845 .151765 aline .159385 .153035 aline .16129 .15367 closepath ! end of curve ! start of curve amove .21209 .14605 bezier .18417 .141317 .163899 .114249 .15875 .08763 bezier .183642 .880433E-01 .210833 .08668 .230505 .10414 bezier .244252 .115968 .241933 .14352 .221615 .14605 aline .22098 .146685 aline .212725 .146685 aline .21209 .14605 closepath ! end of curve ! start of curve amove .147955 .13462 bezier .102061 .114623 .587746E-01 .722169E-01 .057785 .019685 bezier .622681E-01 .107884E-02 .870807E-01 -.232544E-02 .099695 .01016 bezier .112 .194413E-01 .120546 .327467E-01 .127635 .046355 aline .149225 .132715 aline .149648 .133985 aline .149352 .134874 aline .148907 .135096 closepath ! end of curve fill dfont endchar dfont char=27 !-------------- Beginning of new char. dfont wid=.715551 hei=.430555 dep=0 italic=.075139 set path ! start of curve newpath ! start of curve amove .11938 .154305 bezier .13687 .154249 .15176 .139783 .15621 .12319 bezier .176537 .146176 .213549 .16488 .241935 .14605 bezier .262802 .129152 .248944 .956856E-01 .22606 .088265 bezier .203632 .799506E-01 .181091 .807177E-01 .15748 .080645 bezier .150891 .567569E-01 .146321 .02782 .1651 .00762 bezier .187706 -.616585E-02 .215087 .124511E-01 .22987 .03048 bezier .234334 .334364E-01 .234854 .420053E-01 .2413 .041275 aline .24511 .037465 bezier .242529 .023968 .228365 .148966E-01 .217805 .006985 bezier .194275 -.917905E-02 .157121 -.100342E-01 .141605 .017145 aline .13843 .023495 aline .137795 .0254 aline .13716 .02667 aline .13589 .03048 bezier .119575 .630722E-02 .855881E-01 -.171239E-01 .057785 .00254 bezier .310787E-01 .247054E-01 .361399E-01 .648928E-01 .047625 .09398 bezier .603051E-01 .12332 .856641E-01 .152448 .11938 .154305 closepath ! end of curve ! start of curve amove .113665 .14605 bezier .804326E-01 .132347 .732282E-01 .919225E-01 .065405 .060325 bezier .608288E-01 .422962E-01 .567057E-01 .168584E-01 .074295 .00381 bezier .093316 -.205781E-02 .10861 .172493E-01 .117475 .03175 bezier .131236 .593832E-01 .139994 .899229E-01 .1397 .120015 bezier .13816 .132426 .130298 .150361 .1143 .146685 closepath ! end of curve ! start of curve amove .21209 .14605 bezier .183985 .141107 .16494 .114011 .16002 .08763 bezier .185398 .881841E-01 .213755 .867881E-01 .233045 .10668 bezier .244055 .119461 .240451 .14375 .221615 .14605 aline .22098 .146685 aline .212725 .146685 closepath ! end of curve fill dfont endchar dfont char=28 !-------------- Beginning of new char. dfont wid=.511108 hei=.527779 dep=.0972233 italic=.0919447 set path ! start of curve newpath ! start of curve amove .191135 .18796 bezier .196835 .181603 .185869 .175463 .183515 .169545 bezier .176307 .159805 .168418 .150249 .162163 .140017 bezier .19183 .0998 .170815 .402444E-01 .13335 .012065 bezier .113898 -.434984E-02 .083095 -.122824E-01 .061595 .004445 bezier .504927E-01 -.972685E-02 .404807E-01 -.246845E-01 .02921 -.038735 bezier .207909E-01 -.395919E-01 .252442E-01 -.300067E-01 .02921 -.027305 bezier .371612E-01 -.145137E-01 .491143E-01 -.280192E-02 .055245 .01016 bezier .279819E-01 .448317E-01 .438568E-01 .095768 .07112 .12573 bezier .919371E-01 .149197 .128797 .164431 .156422 .145203 bezier .167164 .159385 .177221 .174529 .188595 .18796 aline .191135 .18796 closepath ! end of curve ! start of curve amove .121285 .14605 bezier .798403E-01 .134326 .667257E-01 .08529 .06096 .04826 aline .06096 .03556 aline .061595 .034925 aline .061595 .03048 aline .06223 .029845 aline .0635 .024765 aline .06477 .020955 bezier .927775E-01 .591589E-01 .120825 .973342E-01 .149225 .135255 aline .14732 .13716 aline .146685 .13843 aline .14351 .141605 aline .14224 .14224 aline .141605 .142875 aline .137795 .14478 aline .133985 .14605 aline .13335 .146685 aline .12192 .146685 closepath ! end of curve ! start of curve amove .151765 .127 bezier .124306 .892732E-01 .963264E-01 .519216E-01 .687388E-01 .142875E-01 bezier .796915E-01 -.461752E-02 .105372 .230085E-02 .118745 .014605 bezier .145786 .406578E-01 .156806 .805695E-01 .15621 .11684 aline .155575 .117475 aline .15494 .12065 aline .15367 .12573 aline .153035 .127 aline .1524 .127635 aline .151765 .127 closepath ! end of curve fill dfont endchar dfont char=29 !-------------- Beginning of new char. dfont wid=.882772 hei=.683332 dep=0 italic=.120277 set path ! start of curve newpath ! start of curve amove .33147 .23876 aline .333375 .236855 bezier .330353 .211267 .328045 .185682 .323215 .160655 aline .321945 .16002 aline .31623 .16002 aline .314325 .161925 bezier .31424 .181303 .324037 .205822 .30734 .221615 aline .30226 .224155 aline .296545 .22606 aline .29337 .226695 aline .292735 .22733 aline .28956 .22733 aline .288925 .227965 aline .282575 .227965 aline .28194 .2286 aline .235585 .2286 aline .23495 .227965 aline .231775 .22733 aline .229235 .22606 aline .22733 .22225 aline .22606 .21844 aline .20193 .12192 aline .201507 .12065 aline .20193 .11938 aline .23622 .11938 bezier .248363 .120189 .261576 .12713 .264795 .140335 aline .2667 .14605 aline .267335 .14859 aline .26797 .150495 aline .269875 .158115 aline .27051 .159385 aline .271145 .16002 aline .272415 .160655 aline .27813 .160655 aline .280035 .15875 aline .280035 .15494 aline .25908 .07112 aline .25781 .06858 aline .25654 .067945 aline .250825 .067945 aline .249555 .06858 bezier .24662 .804943E-01 .259148 .950043E-01 .248285 .10541 aline .245745 .10668 aline .24384 .107315 aline .240665 .10795 aline .24003 .108585 aline .235585 .108585 aline .23495 .10922 aline .198755 .10922 aline .175895 .01778 aline .17526 .017145 aline .17526 .01143 aline .175895 .010795 aline .178435 .01016 aline .17907 .009525 aline .22606 .009525 bezier .248629 .109178E-01 .274441 .021438 .283845 .04445 bezier .292981 .584776E-01 .297107 .760543E-01 .30607 .089535 aline .311785 .089535 bezier .316905 .829159E-01 .307992 .745406E-01 .306705 .06731 bezier .296615 .449306E-01 .289197 .204574E-01 .277495 -.000635 aline .12319 -.000635 aline .12192 0 aline .121285 .000635 aline .12065 .001905 aline .12065 .00381 aline .121285 .00635 aline .12192 .00762 bezier .129566 .126923E-01 .144526 .562416E-02 .14859 .017145 aline .149225 .018415 aline .17145 .107315 aline .171926 .108268 aline .17145 .10922 aline .120015 .10922 bezier .10448 .803388E-01 .854067E-01 .531611E-01 .071755 .023495 bezier .700252E-01 .125553E-01 .826508E-01 .934405E-02 .090805 .00889 aline .092075 .00635 aline .092075 .005715 aline .09144 .003175 aline .090805 .00127 aline .0889 -.000635 aline .080645 -.000635 aline .08001 0 aline .057785 0 aline .05715 .000635 aline .047625 .000635 aline .04699 0 aline .02921 0 aline .028575 -.000635 aline .02286 -.000635 aline .020955 .00127 aline .020955 .004445 aline .02159 .006985 aline .022225 .008255 bezier .319949E-01 .105822E-01 .434124E-01 .01124 .05207 .018415 bezier .736961E-01 .411267E-01 .850362E-01 .712522E-01 .102235 .097155 bezier .127046 .14075 .153109 .183586 .177588 .22733 aline .177165 .2286 aline .154305 .2286 aline .153035 .229235 aline .1524 .22987 aline .151765 .23114 aline .151765 .233045 aline .1524 .235585 aline .15367 .238125 aline .15494 .23876 aline .33147 .23876 closepath ! end of curve ! start of curve amove .188595 .226695 bezier .168417 .190896 .145641 .155144 .127 .11938 aline .17399 .11938 aline .174625 .120015 aline .198755 .216535 aline .19939 .21717 aline .19939 .22225 aline .198755 .222885 aline .19812 .22479 aline .19558 .22606 aline .1905 .227076 aline .188595 .226695 closepath ! end of curve fill dfont endchar dfont char=30 !-------------- Beginning of new char. dfont wid=.984995 hei=.683332 dep=0 italic=.120277 set path ! start of curve newpath ! start of curve amove .20701 .24638 bezier .218582 .244873 .231328 .240799 .24257 .23876 aline .36703 .23876 aline .368935 .236855 bezier .365913 .211267 .363605 .185682 .358775 .160655 aline .357505 .16002 aline .35179 .16002 aline .349885 .161925 bezier .350191 .180625 .357899 .202191 .34544 .219075 bezier .337218 .226074 .325945 .227438 .31623 .2286 aline .264795 .2286 aline .26416 .227965 aline .260985 .22733 aline .258445 .22606 aline .25654 .22225 aline .25527 .21844 aline .233283 .130492 aline .23368 .128905 aline .274955 .128905 bezier .288272 .129207 .303273 .13588 .30734 .150495 aline .309245 .15621 aline .30988 .15875 aline .310515 .160655 aline .31242 .168275 aline .314325 .17018 aline .320675 .17018 aline .32258 .168275 aline .32258 .1651 aline .301625 .08128 aline .30099 .079375 aline .299085 .07747 aline .29337 .07747 aline .2921 .078105 bezier .288985 .876558E-01 .297613 .981581E-01 .294005 .10795 aline .292735 .11176 aline .290195 .1143 aline .286385 .116205 aline .283845 .11684 aline .28067 .117475 aline .280035 .11811 aline .274955 .11811 aline .27432 .118745 aline .230505 .118745 aline .22987 .11684 aline .205105 .01778 aline .20447 .017145 aline .20447 .01143 aline .205105 .010795 aline .207645 .01016 aline .20828 .009525 aline .26035 .009525 bezier .283817 .107667E-01 .310223 .219845E-01 .32004 .04572 bezier .328969 .059323 .332815 .765031E-01 .34163 .089535 aline .347345 .089535 bezier .352465 .829159E-01 .343552 .745406E-01 .342265 .06731 bezier .332175 .449306E-01 .324757 .204574E-01 .313055 -.000635 aline .182245 -.000635 bezier .153738 -.757618E-02 .120483 -.148953E-01 .09398 .004445 bezier .554095E-01 .030381 .515101E-01 .832936E-01 .0635 .123825 bezier .806055E-01 .181985 .127363 .234973 .188595 .245745 aline .193675 .245745 aline .19431 .24638 aline .20701 .24638 closepath ! end of curve ! start of curve amove .193675 .23876 bezier .148668 .230922 .119582 .189046 .10287 .149225 bezier .874482E-01 .105846 .785606E-01 .565284E-01 .10541 .015875 bezier .123819 -.100437E-01 .17005 -.626376E-02 .179705 .026035 aline .18034 .02794 aline .180975 .02921 aline .18161 .031115 aline .182245 .032385 aline .187325 .047625 aline .18796 .050165 aline .188595 .05207 aline .18923 .05461 aline .189865 .056515 aline .22098 .180975 bezier .223724 .197748 .230985 .215165 .222885 .23114 bezier .215304 .2389 .203645 .240674 .193675 .23876 closepath ! end of curve fill dfont endchar dfont char=31 !-------------- Beginning of new char. dfont wid=.766663 hei=.731944 dep=.0486116 italic=.0940275 set path ! start of curve newpath ! start of curve amove .28448 .26035 aline .28575 .259715 aline .28702 .25908 aline .28829 .25781 aline .28829 .254 bezier .278035 .24192 .26662 .230533 .257387 .217805 bezier .29474 .163714 .272818 .894798E-01 .23241 .04318 bezier .199086 .479969E-02 .141482 -.247005E-01 .09271 .001905 bezier .869311E-01 .456473E-02 .822498E-01 .111034E-01 .076835 .0127 bezier .066679 .960193E-03 .567808E-01 -.114323E-01 .04572 -.022225 aline .04445 -.022225 aline .04318 -.02159 aline .04064 -.01905 aline .04064 -.01651 bezier .510248E-01 -.430191E-02 .615996E-01 .776923E-02 .07239 .019685 bezier .037776 .655161E-01 .524375E-01 .129636 .081915 .174625 bezier .112007 .220767 .171195 .261651 .22733 .240665 bezier .236731 .237465 .244201 .229138 .252095 .225425 bezier .262991 .236784 .272077 .249914 .283845 .26035 closepath ! end of curve ! start of curve amove .18796 .23876 bezier .132981 .231306 .998187E-01 .177317 .08763 .127 bezier .794342E-01 .957737E-01 .714253E-01 .638923E-01 .08382 .03302 bezier .136068 .093166 .189063 .152774 .241141 .213042 bezier .230971 .231467 .208053 .242163 .18796 .23876 closepath ! end of curve ! start of curve amove .2413 .20066 bezier .190864 .141706 .136892 .828625E-01 .088265 .02413 bezier .104693 -.354846E-02 .141703 -.717437E-02 .168275 .006985 bezier .225019 .347394E-01 .244179 .104318 .25146 .160655 bezier .251825 .176018 .251414 .190448 .24511 .20447 aline .2413 .20066 closepath ! end of curve fill dfont endchar dfont char=32 !-------------- Beginning of new char. dfont wid=.255554 hei=.430555 dep=0 italic=0 dfont fby="L" kadd=-.320554 dfont fby="l" kadd=-.255554 set path ! start of curve newpath ! start of curve amove .11684 .136525 bezier .122537 .133654 .119797 .125323 .113665 .125095 bezier .873152E-01 .116437 .615737E-01 .104712 .034925 .09779 aline .03302 .099695 aline .032385 .10287 aline .032385 .104775 bezier .411765E-01 .112372 .547544E-01 .113586 .065405 .118745 bezier .817549E-01 .124547 .980556E-01 .130468 .1143 .136525 closepath ! end of curve fill dfont endchar dfont char=33 !-------------- Beginning of new char. dfont wid=.306665 hei=.694445 dep=0 italic=.124168 set path ! start of curve newpath ! start of curve amove .11938 .25019 aline .12192 .249555 aline .12573 .24765 aline .12954 .24384 aline .13081 .2413 aline .131445 .23876 aline .131445 .23368 aline .13081 .23114 aline .126365 .217805 aline .12573 .215265 aline .108585 .16383 aline .10795 .16129 aline .09017 .10795 aline .089535 .10541 aline .076835 .06731 aline .0762 .06604 aline .07493 .065405 aline .067945 .065405 bezier .648343E-01 .740791E-01 .707076E-01 .840873E-01 .070485 .093345 bezier .798898E-01 .141903 .085921 .190359 .09652 .239395 aline .09779 .240665 aline .098425 .241935 aline .10033 .24384 aline .1016 .244475 aline .103505 .24638 aline .106045 .24765 aline .10668 .248285 aline .11049 .249555 aline .11303 .25019 closepath ! end of curve ! start of curve amove .06604 .03556 bezier .08453 .310546E-01 .078019 .506315E-02 .062865 .000635 bezier .544939E-01 -.298507E-02 .433683E-01 .297474E-03 .04064 .009525 bezier .383196E-01 .217246E-01 .475149E-01 .033044 .059055 .03556 closepath ! end of curve fill dfont endchar dfont char=34 !-------------- Beginning of new char. dfont wid=.514442 hei=.694445 dep=0 italic=.0696125 set path ! start of curve newpath ! start of curve amove .1016 .24257 bezier .119085 .238021 .115617 .21656 .112395 .2032 bezier .105143 .176666 .087995 .154316 .066675 .137795 aline .064135 .137795 aline .062865 .13843 aline .061595 .1397 aline .061595 .142875 bezier .831477E-01 .160202 .101821 .18421 .106045 .21209 bezier .979374E-01 .20353 .788873E-01 .203677 .0762 .21717 bezier .738357E-01 .231516 .873504E-01 .244802 .1016 .24257 closepath ! end of curve ! start of curve amove .1651 .24257 bezier .182585 .238021 .179117 .21656 .175895 .2032 bezier .168643 .176666 .151495 .154316 .130175 .137795 aline .127635 .137795 aline .126365 .13843 aline .125095 .1397 aline .125095 .142875 bezier .146648 .160202 .165321 .18421 .169545 .21209 bezier .161437 .20353 .142387 .203677 .1397 .21717 bezier .137336 .231516 .15085 .244802 .1651 .24257 closepath ! end of curve fill dfont endchar dfont char=35 !-------------- Beginning of new char. dfont wid=.817774 hei=.694445 dep=.194443 italic=.066164 set path ! start of curve newpath ! start of curve amove .20447 .24257 aline .20574 .241935 aline .20701 .2413 aline .20828 .24003 aline .20955 .23749 aline .20955 .23368 aline .202565 .21971 aline .20193 .217805 aline .174625 .163195 aline .17399 .16129 aline .158115 .12954 aline .15748 .128905 aline .158115 .12827 aline .215265 .12827 aline .23368 .1651 aline .234315 .167005 aline .26162 .221615 aline .262255 .22352 aline .27051 .24003 aline .27178 .2413 aline .27432 .24257 aline .27813 .24257 aline .28067 .2413 aline .28194 .24003 aline .28321 .23749 aline .28321 .23368 aline .276225 .21971 aline .27559 .217805 aline .248285 .163195 aline .24765 .16129 aline .231775 .12954 aline .23114 .128905 aline .231775 .12827 aline .28575 .12827 aline .28829 .127 aline .28956 .12573 aline .29083 .12319 aline .29083 .11938 aline .28956 .11684 aline .28829 .11557 aline .28575 .1143 aline .224155 .1143 bezier .215057 .966317E-01 .20515 .772202E-01 .19812 .05969 aline .268605 .05969 aline .271145 .05842 aline .272415 .05715 aline .273685 .05461 aline .273685 .0508 aline .272415 .04826 aline .271145 .04699 aline .268605 .04572 aline .189865 .04572 aline .187325 .04064 aline .18669 .038735 aline .164465 -.005715 aline .16383 -.00762 aline .141605 -.05207 aline .14097 -.053975 aline .13462 -.066675 aline .13335 -.067945 aline .13081 -.069215 aline .127 -.069215 aline .12446 -.067945 aline .12319 -.066675 aline .12192 -.064135 aline .12192 -.060325 aline .127 -.050165 aline .127635 -.04826 aline .14986 -.00381 aline .150495 -.001905 aline .17272 .042545 aline .173355 .04445 aline .17399 .045085 aline .173355 .04572 aline .116205 .04572 aline .113665 .04064 aline .11303 .038735 aline .090805 -.005715 aline .09017 -.00762 aline .067945 -.05207 aline .06731 -.053975 aline .06096 -.066675 aline .05969 -.067945 aline .05715 -.069215 aline .05334 -.069215 aline .0508 -.067945 aline .04953 -.066675 aline .04826 -.064135 aline .04826 -.060325 aline .05334 -.050165 aline .053975 -.04826 aline .0762 -.00381 aline .076835 -.001905 aline .09906 .042545 aline .099695 .04445 aline .10033 .045085 aline .099695 .04572 aline .04572 .04572 aline .04318 .04699 aline .04191 .04826 aline .041275 .04953 aline .04064 .051435 aline .04064 .053975 aline .041275 .05588 aline .04191 .05715 aline .04318 .05842 aline .04572 .05969 aline .10795 .05969 aline .111125 .06604 aline .11176 .067945 aline .11938 .083185 aline .120015 .08509 aline .127635 .10033 aline .12827 .102235 aline .133826 .113348 aline .13335 .1143 aline .062865 .1143 aline .060325 .11557 aline .059055 .11684 aline .05842 .11811 aline .057785 .120015 aline .057785 .122555 aline .05842 .12446 aline .059055 .12573 aline .060325 .127 aline .062865 .12827 aline .141605 .12827 aline .16002 .1651 aline .160655 .167005 aline .18796 .221615 aline .188595 .22352 aline .19685 .24003 aline .19812 .2413 aline .19939 .241935 aline .20066 .24257 closepath ! end of curve ! start of curve amove .14986 .113665 bezier .141453 .958675E-01 .131205 .770621E-01 .12446 .05969 aline .18161 .05969 aline .184785 .06604 aline .18542 .067945 aline .19304 .083185 aline .193675 .08509 aline .201295 .10033 aline .20193 .102235 aline .207486 .113348 aline .20701 .1143 aline .150495 .1143 aline .14986 .113665 closepath ! end of curve fill dfont endchar dfont char=36 !-------------- Beginning of new char. dfont wid=.769094 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .205105 .247015 bezier .227508 .247951 .246543 .22642 .24511 .20447 bezier .246048 .192118 .246114 .172383 .230505 .168275 bezier .22197 .165528 .211166 .173475 .215265 .183515 bezier .217466 .192742 .22737 .196545 .235585 .196215 bezier .237092 .213466 .229907 .235287 .21082 .239395 bezier .180788 .24205 .163163 .210898 .156845 .18542 aline .142478 .127953 aline .142875 .126365 aline .175895 .126365 aline .17653 .12573 aline .1778 .125095 aline .1778 .121285 aline .177165 .118745 aline .17653 .117475 aline .17526 .116205 aline .1397 .116205 aline .139065 .1143 aline .12446 .05588 aline .12192 .04826 aline .121285 .04699 aline .12065 .045085 aline .11684 .037465 bezier .111845 .316744E-01 .122523 .300424E-01 .125095 .026035 bezier .142558 .122027E-01 .167162 .175406E-02 .187325 .015875 bezier .201176 .228112E-01 .207863 .377229E-01 .213995 .0508 aline .220345 .0508 bezier .22552 .461742E-01 .218832 .378978E-01 .21717 .032385 bezier .200672 -.18042E-04 .155437 -.173037E-01 .125095 .006985 bezier .117759 .106631E-01 .111643 .184485E-01 .10414 .02032 bezier .879967E-01 .288235E-02 .060629 -.124287E-01 .037465 0 bezier .228036E-01 .112038E-01 .359868E-01 .326754E-01 .048895 .03937 bezier .631704E-01 .491585E-01 .823164E-01 .502592E-01 .09779 .04318 aline .098425 .04445 aline .100965 .05207 aline .1016 .05461 aline .102235 .056515 aline .11684 .114935 aline .117475 .11557 aline .11684 .116205 aline .092075 .116205 aline .090805 .11684 aline .09017 .117475 aline .09017 .12192 aline .090805 .12446 aline .09271 .126365 aline .11938 .126365 aline .120015 .127635 aline .13462 .186055 bezier .143829 .217447 .171501 .245511 .205105 .247015 closepath ! end of curve ! start of curve amove .067945 .033655 bezier .556712E-01 .332108E-01 .398172E-01 .204265E-01 .045085 .006985 bezier .564865E-01 -.387783E-02 .734018E-01 .828002E-02 .08255 .017145 bezier .854981E-01 .211777E-01 .888253E-01 .024937 .09144 .02921 aline .089535 .029845 aline .088265 .03048 aline .08255 .032385 aline .079375 .03302 aline .07874 .033655 aline .074295 .033655 aline .07366 .03429 aline .06858 .03429 aline .067945 .033655 closepath ! end of curve fill dfont endchar dfont char=37 !-------------- Beginning of new char. dfont wid=.817774 hei=.75 dep=.0555553 italic=.136389 set path ! start of curve newpath ! start of curve amove .14351 .262255 bezier .160042 .259445 .164433 .239989 .17907 .23368 bezier .214898 .21363 .261107 .2301 .28575 .260985 bezier .294158 .267216 .302102 .253197 .29337 .248285 bezier .21679 .158989 .139991 .698516E-01 .062865 -.01905 bezier .545436E-01 -.251606E-01 .464862E-01 -.113002E-01 .055245 -.00635 bezier .122019 .717773E-01 .189422 .149451 .25654 .22733 bezier .228767 .215602 .193649 .212151 .168275 .23241 bezier .171408 .192556 .156332 .144734 .118745 .123825 bezier .957155E-01 .112709 .071863 .135554 .073025 .15875 bezier .691606E-01 .19913 .907256E-01 .248386 .13208 .26162 aline .135255 .262255 closepath ! end of curve ! start of curve amove .13589 .254635 bezier .107693 .243518 .100294 .209568 .093345 .18288 bezier .893095E-01 .165732 .854237E-01 .145399 .098425 .13081 bezier .114713 .122351 .129307 .141077 .137795 .153035 bezier .154036 .181706 .167858 .218229 .15113 .24892 aline .14732 .25273 aline .14478 .254 aline .142875 .254635 aline .14224 .25527 aline .136525 .25527 closepath ! end of curve ! start of curve amove .255905 .227965 aline .25654 .22733 aline .257175 .227965 aline .25654 .2286 aline .255905 .227965 closepath ! end of curve ! start of curve amove .25146 .12065 bezier .273677 .116043 .27851 .088843 .276225 .070485 bezier .273955 .348051E-01 .256406 -.623656E-02 .22098 -.019685 bezier .197931 -.257188E-01 .179826 -.185004E-02 .180975 .01905 bezier .17783 .059514 .200596 .109829 .243205 .12065 closepath ! end of curve ! start of curve amove .24384 .11303 bezier .214618 .100952 .207576 .654207E-01 .20066 .037465 bezier .196923 .218881E-01 .194536 .283828E-02 .206375 -.010795 bezier .223565 -.195104E-01 .238443 .652075E-03 .247015 .013335 bezier .262861 .420255E-01 .276474 .793825E-01 .25781 .10922 aline .25654 .11049 aline .25273 .112395 aline .250825 .11303 aline .25019 .113665 aline .244475 .113665 closepath ! end of curve fill dfont endchar dfont char=38 !-------------- Beginning of new char. dfont wid=.766663 hei=.694445 dep=0 italic=.0969448 set path ! start of curve newpath ! start of curve amove .15367 .25019 bezier .173769 .248944 .188593 .227023 .18542 .20828 bezier .187541 .196334 .179141 .180769 .16637 .18288 bezier .151858 .182213 .152998 .203491 .16383 .20828 aline .16637 .20955 aline .16891 .210185 aline .172085 .210185 aline .17272 .21082 aline .174307 .210423 aline .175895 .21082 bezier .177162 .227192 .162826 .247324 .14478 .24257 bezier .109055 .232003 .100449 .188618 .09398 .15748 aline .09398 .149225 bezier .109162 .15669 .132938 .168269 .14732 .151765 bezier .160513 .128738 .132931 .101799 .10922 .108585 aline .10414 .109855 aline .102235 .11049 aline .095885 .113665 aline .09525 .1143 aline .09398 .114935 aline .09271 .116205 aline .09144 .11684 aline .0889 .11938 bezier .762185E-01 .897347E-01 .609672E-01 .05505 .078105 .024765 bezier .984208E-01 -.492259E-02 .139519 -.519129E-02 .17018 .00381 bezier .219937 .160259E-01 .252161 .717426E-01 .245745 .120015 bezier .243041 .133271 .23717 .147094 .22733 .155998 bezier .207424 .144259 .179452 .129837 .18288 .102235 aline .183515 .1016 aline .18415 .10033 bezier .187347 .111581 .20671 .11637 .21082 .103505 bezier .214236 .875359E-01 .192906 .785436E-01 .18161 .088265 bezier .163056 .104395 .175334 .134546 .193675 .145415 bezier .216849 .163077 .245652 .175864 .259715 .2032 aline .26543 .21463 aline .266065 .215265 bezier .251701 .214516 .250148 .234693 .26162 .24003 aline .262255 .240665 aline .264795 .241935 aline .267335 .24257 aline .27305 .24257 aline .274955 .241935 aline .277495 .240665 aline .280035 .238125 bezier .284167 .220949 .271921 .203983 .263525 .189865 bezier .256299 .179644 .246847 .171094 .237649 .162878 bezier .281966 .109311 .245804 .216474E-01 .183515 0 bezier .141524 -.141644E-01 .886361E-01 -.131408E-01 .05715 .02286 bezier .297511E-01 .583193E-01 .521892E-01 .106321 .778669E-01 .135573 bezier .636339E-01 .181023 .932949E-01 .236932 .1397 .249555 aline .142875 .249555 aline .14351 .25019 aline .15367 .25019 closepath ! end of curve ! start of curve amove .125095 .1524 bezier .113394 .149977 .101709 .140392 .097155 .13081 bezier .101618 .113661 .126246 .10925 .135255 .125095 bezier .141217 .133286 .144113 .148817 .13208 .153035 aline .12573 .153035 closepath ! end of curve fill dfont endchar dfont char=39 !-------------- Beginning of new char. dfont wid=.306665 hei=.694445 dep=0 italic=.124168 dfont fby=33 kadd=.102221 dfont fby=39 ligrep=34 dfont fby="?" kadd=.102221 set path ! start of curve newpath ! start of curve amove .117475 .24257 bezier .13496 .238021 .131492 .21656 .12827 .2032 bezier .121018 .176666 .10387 .154316 .08255 .137795 aline .08001 .137795 aline .07874 .13843 aline .07747 .1397 aline .07747 .142875 bezier .990227E-01 .160202 .117696 .18421 .12192 .21209 bezier .113812 .20353 .947623E-01 .203677 .092075 .21717 bezier .897107E-01 .231516 .103225 .244802 .117475 .24257 closepath ! end of curve fill dfont endchar dfont char=40 !-------------- Beginning of new char. dfont wid=.408887 hei=.75 dep=.25 italic=.161944 set path ! start of curve newpath ! start of curve amove .17907 .262255 aline .18034 .26162 aline .180975 .260985 aline .180975 .257175 bezier .110426 .200182 .794114E-01 .103959 .070485 .018415 bezier .687421E-01 -.174682E-01 .737372E-01 -.536806E-01 .09525 -.08382 aline .09525 -.08636 bezier .885111E-01 -.924848E-01 .838581E-01 -.800924E-01 .079375 -.0762 bezier .063117 -.543142E-01 .561659E-01 -.256509E-01 .053975 0 aline .053975 .03175 bezier .608895E-01 .118338 .101557 .211001 .175895 .262255 closepath ! end of curve fill dfont endchar dfont char=")" !-------------- Beginning of new char. dfont wid=.408887 hei=.75 dep=.25 italic=.0369444 set path ! start of curve newpath ! start of curve amove .097155 .262255 bezier .132998 .227187 .137706 .172118 .131445 .126365 bezier .121919 .043765 .810259E-01 -.402049E-01 .01143 -.088265 aline .008255 -.088265 aline .00762 -.08763 aline .00635 -.086995 aline .00635 -.083185 bezier .765563E-01 -.268754E-01 .107432 .685884E-01 .11684 .153035 bezier .119167 .189298 .114034 .227416 .092075 .258445 aline .092075 .259715 aline .09271 .260985 aline .09398 .262255 closepath ! end of curve fill dfont endchar dfont char="*" !-------------- Beginning of new char. dfont wid=.511108 hei=.75 dep=0 italic=.149167 set path ! start of curve newpath ! start of curve amove .15748 .262255 aline .159385 .26162 aline .161925 .25908 aline .16256 .25781 aline .16256 .254635 aline .155575 .23368 aline .15494 .23114 aline .14351 .19685 bezier .143345 .192638 .148851 .199462 .15113 .200025 bezier .166148 .209271 .180443 .21952 .19558 .2286 bezier .205535 .231628 .208247 .216896 .200025 .21336 bezier .181897 .204133 .162721 .196446 .144939 .187008 bezier .158429 .176351 .176083 .170027 .188595 .158115 aline .188595 .15494 aline .18796 .153035 aline .18669 .150495 aline .183515 .14732 aline .179705 .145415 aline .17526 .145415 aline .17272 .146685 aline .1524 .167005 aline .15113 .16764 aline .139065 .179705 bezier .134558 .15874 .132661 .138105 .127635 .11684 aline .12446 .113665 aline .12192 .112395 aline .120015 .11176 aline .116205 .11176 aline .1143 .112395 aline .11176 .114935 aline .111125 .116205 aline .111125 .11938 aline .11811 .140335 aline .118745 .142875 aline .130175 .177165 bezier .13034 .181377 .124834 .174553 .122555 .17399 bezier .107537 .164744 .932421E-01 .154495 .078105 .145415 bezier .681504E-01 .142387 .654385E-01 .157119 .07366 .160655 bezier .917874E-01 .169883 .110966 .177568 .128746 .187008 bezier .115255 .197664 .976021E-01 .203988 .08509 .2159 aline .08509 .219075 aline .085725 .22098 aline .086995 .22352 aline .09017 .226695 aline .09398 .2286 aline .098425 .2286 aline .100965 .22733 aline .121285 .20701 aline .122555 .206375 aline .13462 .19431 bezier .139127 .215275 .141024 .23591 .14605 .257175 aline .149225 .26035 aline .151765 .26162 aline .15367 .262255 aline .15748 .262255 closepath ! end of curve fill dfont endchar dfont char="+" !-------------- Beginning of new char. dfont wid=.766663 hei=.561666 dep=.0566654 italic=.0369444 set path ! start of curve newpath ! start of curve amove .183515 .19431 aline .184785 .193675 aline .186055 .19304 aline .187325 .19177 aline .188595 .18923 aline .188595 .18542 aline .16637 .09652 aline .165947 .09525 aline .16637 .09398 aline .25908 .09398 bezier .265526 .918421E-01 .265526 .821479E-01 .25908 .08001 aline .16256 .08001 aline .161925 .07874 aline .13843 -.01524 aline .13716 -.01778 aline .13589 -.01905 aline .13335 -.02032 aline .12954 -.02032 aline .127 -.01905 aline .12573 -.01778 aline .125095 -.01651 aline .12446 -.014605 aline .12446 -.012065 aline .125095 -.00889 aline .146685 .07747 aline .147108 .07874 aline .146685 .08001 aline .05461 .08001 aline .05207 .08128 aline .050165 .083185 aline .04953 .084455 aline .04953 .089535 aline .050165 .090805 aline .05207 .09271 aline .05461 .09398 aline .150495 .09398 aline .15113 .09525 aline .174625 .18923 aline .175895 .19177 aline .177165 .19304 aline .178435 .193675 aline .179705 .19431 closepath ! end of curve fill dfont endchar dfont char="," !-------------- Beginning of new char. dfont wid=.306665 hei=.105556 dep=.194445 italic=0 set path ! start of curve newpath ! start of curve amove .06604 .03556 bezier .819943E-01 .310963E-01 .788217E-01 .121009E-01 .076835 0 bezier .702118E-01 -.279263E-01 .529742E-01 -.521421E-01 .03048 -.069215 aline .02794 -.069215 aline .026035 -.06731 aline .026035 -.0635 bezier .476756E-01 -.465441E-01 .650267E-01 -.220659E-01 .06985 .00508 bezier .609019E-01 -.627421E-02 .365821E-01 -.302082E-03 .04064 .01524 bezier .404381E-01 .027849 .539812E-01 .037416 .06604 .03556 closepath ! end of curve fill dfont endchar dfont char="-" !-------------- Beginning of new char. dfont wid=.357776 hei=.430555 dep=0 italic=.028264 set path ! start of curve newpath ! start of curve amove .11684 .08382 aline .118745 .081915 aline .118745 .07874 aline .116205 .06858 aline .11557 .066675 aline .1143 .065405 aline .112395 .06477 aline .033655 .06477 aline .032385 .065405 aline .031115 .066675 aline .03048 .067945 aline .03048 .069215 aline .033655 .081915 aline .03556 .08382 aline .11684 .08382 closepath ! end of curve fill dfont endchar dfont char="." !-------------- Beginning of new char. dfont wid=.306665 hei=.105556 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .065405 .03556 bezier .825156E-01 .328834E-01 .798586E-01 .885797E-02 .066675 .00254 bezier .581863E-01 -.335653E-02 .435402E-01 -.152151E-02 .04064 .009525 bezier .381215E-01 .220203E-01 .476245E-01 .335643E-01 .05969 .03556 closepath ! end of curve fill dfont endchar dfont char="/" !-------------- Beginning of new char. dfont wid=.511108 hei=.75 dep=.25 italic=.161944 set path ! start of curve newpath ! start of curve amove .211455 .262255 bezier .222725 .257035 .211528 .245681 .20828 .23876 bezier .144679 .130401 .828022E-01 .020798 .018415 -.086995 aline .015875 -.088265 bezier .666263E-02 -.900125E-01 .487156E-02 -.780884E-01 .010795 -.073025 bezier .755752E-01 .383043E-01 .139503 .150248 .205105 .260985 aline .207645 .262255 aline .211455 .262255 closepath ! end of curve fill dfont endchar dfont char="0" !-------------- Beginning of new char. dfont wid=.511108 hei=.644444 dep=0 italic=.135556 set path ! start of curve newpath ! start of curve amove .15367 .233045 bezier .177288 .231777 .193885 .208549 .19431 .186055 bezier .19631 .143583 .184078 .998498E-01 .168275 .059055 bezier .153665 .243847E-01 .12362 -.111623E-01 .08255 -.008255 bezier .567266E-01 -.687455E-02 .398683E-01 .201334E-01 .04191 .04445 bezier .406586E-01 .848931E-01 .533759E-01 .12736 .06858 .16637 bezier .833611E-01 .200485 .113022 .235862 .15367 .233045 closepath ! end of curve ! start of curve amove .141605 .225425 bezier .104906 .217498 .953369E-01 .176066 .08636 .14478 aline .084455 .13716 aline .08382 .135255 aline .074295 .097155 bezier .069302 .068882 .05751 .421846E-01 .066675 .014605 bezier .07397 -.513813E-02 .100198 -.481698E-02 .113665 .008255 bezier .139911 .295594E-01 .144747 .657871E-01 .154305 .09652 aline .16383 .13462 bezier .168363 .162044 .181555 .189175 .16764 .215265 aline .165735 .21717 aline .1651 .21844 aline .164465 .219075 aline .163195 .21971 aline .16129 .221615 aline .15621 .224155 aline .154305 .22479 aline .15113 .225425 aline .150495 .22606 aline .14224 .22606 closepath ! end of curve fill dfont endchar dfont char="1" !-------------- Beginning of new char. dfont wid=.511108 hei=.644444 dep=0 italic=.135556 set path ! start of curve newpath ! start of curve amove .159385 .233045 aline .160655 .23241 aline .16129 .231775 aline .161925 .230505 aline .161925 .2286 aline .121285 .06604 aline .109855 .02032 bezier .105861 .109359E-01 .118344 .940015E-02 .125095 .01016 aline .12573 .009525 aline .144145 .009525 aline .14605 .00762 aline .14605 .003175 aline .145415 .00127 aline .14351 -.000635 aline .132715 -.000635 aline .13208 0 aline .100965 0 aline .10033 .000635 aline .085725 .000635 aline .08509 0 aline .05334 0 aline .052705 -.000635 aline .043815 -.000635 aline .04191 .00127 aline .04191 .00508 aline .042545 .006985 aline .04318 .008255 bezier .562676E-01 .122999E-01 .728387E-01 .569997E-02 .08382 .015875 aline .084455 .017145 aline .08509 .01778 aline .085725 .019685 aline .08636 .020955 aline .127 .183515 aline .128667 .190183 aline .12827 .19177 bezier .116131 .183293 .995571E-01 .174667 .08509 .17907 aline .084455 .18034 aline .084455 .182245 aline .08509 .184785 aline .085725 .186055 aline .086995 .187325 bezier .116497 .188146 .139874 .210322 .15621 .233045 closepath ! end of curve ! start of curve amove .12827 .19177 aline .128905 .191135 aline .12954 .19177 aline .128905 .192405 aline .12827 .19177 closepath ! end of curve fill dfont endchar dfont char="2" !-------------- Beginning of new char. dfont wid=.511108 hei=.644444 dep=0 italic=.135556 set path ! start of curve newpath ! start of curve amove .14478 .233045 bezier .171197 .231295 .192641 .206987 .193675 .180975 bezier .19607 .155388 .18542 .12932 .164465 .113665 bezier .130196 .817554E-01 .078205 .070235 .05461 .02667 aline .05334 .0254 bezier .081362 .285643E-01 .109064 .116934E-01 .136525 .01651 bezier .155574 .223722E-01 .165546 .04148 .17145 .059055 aline .17272 .05969 aline .178435 .05969 aline .179705 .059055 aline .18034 .05842 bezier .176952 .320298E-01 .161381 .304386E-02 .135255 -.006985 bezier .111785 -.143652E-01 .932576E-01 .526935E-02 .074295 .01524 bezier .648418E-01 .019755 .521479E-01 .020395 .04699 .009525 aline .046355 .008255 aline .04572 .00762 aline .043815 .00381 aline .04318 .001905 aline .042545 .000635 aline .040005 -.006985 aline .03937 -.00762 aline .0381 -.008255 aline .03175 -.008255 aline .03048 -.006985 bezier .353193E-01 .281947E-01 .616398E-01 .578469E-01 .09017 .07747 bezier .126721 .963603E-01 .163431 .126991 .16764 .170815 bezier .17367 .190855 .166848 .222083 .14224 .22606 bezier .106991 .227197 .849894E-01 .192394 .074295 .16256 bezier .713361E-01 .150099 .621895E-01 .134137 .07366 .12446 bezier .964809E-01 .124932 .105794 .151019 .111125 .169545 aline .111125 .175895 aline .11049 .17653 aline .109855 .17907 aline .108585 .18288 aline .107315 .18542 aline .10668 .187325 aline .10668 .188595 aline .107315 .189865 aline .10795 .1905 aline .10922 .191135 aline .112395 .191135 bezier .126041 .170411 .112336 .143454 .09779 .127 bezier .882125E-01 .116345 .651803E-01 .111681 .05969 .128905 bezier .550404E-01 .156008 .704614E-01 .183838 .08636 .205105 bezier .100949 .222157 .121663 .235579 .14478 .233045 closepath ! end of curve fill dfont endchar dfont char="3" !-------------- Beginning of new char. dfont wid=.511108 hei=.644444 dep=0 italic=.135556 set path ! start of curve newpath ! start of curve amove .15367 .233045 bezier .180128 .232148 .203157 .205611 .19685 .17907 bezier .193657 .148489 .168285 .124608 .140335 .114935 bezier .176829 .100183 .17525 .484537E-01 .14986 .02413 bezier .126607 -.236631E-02 .836743E-01 -.194284E-01 .051435 0 bezier .335257E-01 .121919E-01 .295308E-01 .369748E-01 .037465 .05588 bezier .432812E-01 .643266E-01 .586925E-01 .673366E-01 .0635 .056515 bezier .066167 .451216E-01 .562594E-01 .335317E-01 .04445 .03556 bezier .422957E-01 .184975E-01 .575345E-01 .455619E-03 .07493 -.00127 bezier .106696 -.345073E-02 .133002 .238276E-01 .139065 .053975 bezier .143994 .717892E-01 .14932 .932488E-01 .13335 .107315 aline .12827 .109855 aline .126365 .11049 aline .123825 .111125 aline .12319 .11176 aline .099695 .11176 aline .09779 .113665 aline .09779 .11684 aline .098425 .11938 aline .09906 .12065 aline .10033 .12192 bezier .124166 .119274 .150868 .12559 .163195 .147955 bezier .174414 .168103 .184033 .194106 .170815 .215265 bezier .15001 .237264 .115745 .221498 .09779 .2032 bezier .869564E-01 .18976 .738384E-01 .169845 .08382 .153035 bezier .101001 .144957 .119928 .171096 .107315 .18542 aline .10668 .187325 aline .10668 .188595 aline .107315 .189865 aline .10795 .1905 aline .10922 .191135 aline .112395 .191135 bezier .130426 .171284 .106865 .136341 .08128 .145415 bezier .062439 .156614 .708866E-01 .183748 .08128 .19812 bezier .977632E-01 .220677 .125772 .235201 .15367 .233045 closepath ! end of curve fill dfont endchar dfont char="4" !-------------- Beginning of new char. dfont wid=.511108 hei=.644444 dep=.194445 italic=.135556 set path ! start of curve newpath ! start of curve amove .15875 .233045 bezier .171937 .229491 .163047 .213438 .16129 .20447 bezier .140882 .135025 .10386 .071409 .0508 .02286 bezier .673808E-01 .224241E-01 .847848E-01 .213062E-01 .10033 .013335 aline .10414 .012065 aline .10541 .01143 aline .107315 .010795 aline .10795 .01016 aline .108585 .010795 aline .12446 .074295 bezier .126491 .853191E-01 .146291 .879628E-01 .146685 .07493 aline .14605 .074295 aline .14605 .07112 aline .129778 .60325E-02 aline .130175 .004445 bezier .141786 .305583E-02 .151989 .765866E-02 .163195 .009525 aline .16637 .00635 aline .167005 .00508 aline .167005 .00254 bezier .155426 -.502292E-02 .140211 -.63051E-02 .126909 -.544287E-02 aline .11303 -.06096 bezier .10973 -.072635 .881662E-01 -.718827E-01 .09144 -.057785 aline .10541 -.001905 aline .105886 -.9525E-03 bezier .836497E-01 .010548 .548524E-01 .181336E-01 .03175 .006985 bezier .273119E-01 .357401E-02 .199806E-01 -.531067E-02 .015875 .003175 bezier .145355E-01 .139439E-01 .294435E-01 .157301E-01 .034925 .02286 bezier .952086E-01 .751528E-01 .125365 .152332 .14605 .227965 aline .147955 .22987 aline .149225 .230505 aline .150495 .231775 aline .1524 .23241 aline .154305 .233045 closepath ! end of curve fill dfont endchar dfont char="5" !-------------- Beginning of new char. dfont wid=.511108 hei=.644444 dep=0 italic=.135556 set path ! start of curve newpath ! start of curve amove .10414 .233045 bezier .132294 .216113 .165956 .219595 .194945 .233045 aline .197485 .233045 aline .19939 .23114 bezier .196591 .220834 .184466 .215363 .17653 .208915 bezier .15459 .19563 .126667 .190678 .10287 .20066 aline .085725 .13208 aline .852488E-01 .131128 bezier .930121E-01 .135131 .104315 .143997 .11557 .145415 bezier .140858 .152917 .16933 .135793 .173355 .10922 bezier .184943 .526385E-01 .135917 -.011094 .076835 -.008255 bezier .523809E-01 -.669783E-02 .345263E-01 .195427E-01 .0381 .042545 bezier .364374E-01 .559962E-01 .433823E-01 .073801 .05969 .07239 bezier .772626E-01 .701326E-01 .710553E-01 .044429 .056515 .042545 aline .053975 .04191 aline .050165 .04191 aline .492125E-01 .423862E-01 bezier .448446E-01 .246546E-01 .595799E-01 .223681E-02 .07874 .000635 bezier .113081 -.720662E-03 .135035 .338087E-01 .14224 .064135 bezier .147571 .881636E-01 .159061 .116236 .1397 .136525 bezier .119289 .145525 .954687E-01 .131692 .08128 .116205 aline .080645 .114935 aline .07747 .11176 aline .073025 .11176 aline .07112 .113665 aline .07112 .117475 aline .099695 .231775 aline .100965 .23241 aline .1016 .233045 aline .10414 .233045 closepath ! end of curve fill dfont endchar dfont char="6" !-------------- Beginning of new char. dfont wid=.511108 hei=.644444 dep=0 italic=.135556 set path ! start of curve newpath ! start of curve amove .17145 .233045 bezier .186869 .232886 .203028 .218504 .198755 .202565 bezier .202 .187225 .179186 .174715 .17018 .188595 bezier .16594 .200409 .177696 .21198 .188595 .21082 bezier .182473 .227369 .161549 .227074 .147955 .22098 bezier .109207 .202794 .910286E-01 .158979 .08255 .11938 bezier .968739E-01 .14504 .132637 .158357 .15748 .1397 bezier .190648 .110924 .178954 .586972E-01 .15494 .02794 bezier .134541 .307714E-02 .997184E-01 -.189649E-01 .06731 -.003175 bezier .382478E-01 .145628E-01 .405424E-01 .544236E-01 .045085 .08255 bezier .524114E-01 .145047 .877103E-01 .213175 .151765 .231775 aline .15494 .23241 aline .15875 .23241 aline .159385 .233045 aline .17145 .233045 closepath ! end of curve ! start of curve amove .12065 .140335 bezier .823828E-01 .129042 .721796E-01 .827598E-01 .06604 .04953 bezier .637972E-01 .334429E-01 .635503E-01 .116264E-01 .080645 .00254 bezier .106194 -.599973E-02 .128787 .189554E-01 .13716 .041275 bezier .14431 .662942E-01 .154512 .921881E-01 .1524 .117475 bezier .150593 .127674 .145209 .138282 .13462 .14097 aline .121285 .14097 closepath ! end of curve fill dfont endchar dfont char="7" !-------------- Beginning of new char. dfont wid=.511108 hei=.644444 dep=.194445 italic=.135556 set path ! start of curve newpath ! start of curve amove .097155 .233045 aline .098425 .231775 aline .09906 .22987 aline .098425 .22733 aline .09398 .21844 aline .093345 .216535 aline .915987E-01 .213042 bezier .958406E-01 .214116 .101884 .221293 .107315 .224155 bezier .119961 .230738 .137341 .238305 .14986 .2286 bezier .158226 .217524 .149831 .200056 .161925 .19177 bezier .186161 .191869 .197798 .217435 .211455 .233045 aline .217805 .233045 bezier .223177 .227121 .212998 .220923 .21082 .215265 bezier .168261 .15024 .141641 .753249E-01 .12192 0 bezier .116166 -.955468E-02 .985418E-01 -.012475 .094615 0 bezier .103002 .517294E-01 .128585 .994843E-01 .15367 .14478 bezier .161765 .159228 .171819 .173267 .179282 .187537 bezier .168745 .183173 .153648 .182925 .147955 .194945 bezier .144796 .203014 .137943 .212983 .12827 .208915 bezier .953927E-01 .204234 .746423E-01 .174166 .05969 .14732 aline .052705 .14732 aline .051435 .14859 bezier .558384E-01 .166899 .673757E-01 .183526 .074295 .201295 aline .078105 .208915 aline .07874 .21082 aline .083185 .21971 aline .08382 .221615 aline .0889 .231775 aline .089535 .23241 aline .090805 .233045 aline .097155 .233045 closepath ! end of curve ! start of curve amove .09144 .211455 aline .092075 .21209 aline .09144 .212725 aline .090805 .21209 aline .09144 .211455 closepath ! end of curve ! start of curve amove .17907 .18796 aline .179705 .187325 aline .18034 .18796 aline .179705 .188595 aline .17907 .18796 closepath ! end of curve fill dfont endchar dfont char="8" !-------------- Beginning of new char. dfont wid=.511108 hei=.644444 dep=0 italic=.135556 set path ! start of curve newpath ! start of curve amove .15367 .233045 bezier .176623 .232254 .199698 .210402 .19431 .18669 bezier .191831 .156629 .163887 .13844 .1397 .12573 bezier .15383 .113118 .172891 .100861 .17272 .079375 bezier .18051 .197322E-01 .100112 -.336913E-01 .050165 .004445 bezier .216326E-01 .287269E-01 .357086E-01 .733315E-01 .06223 .093345 bezier .731448E-01 .104077 .08684 .110951 .10033 .11811 bezier .884636E-01 .127619 .754612E-01 .138356 .074295 .15494 bezier .698291E-01 .197719 .111816 .236457 .15367 .233045 closepath ! end of curve ! start of curve amove .14097 .224155 bezier .113745 .222173 .823494E-01 .192791 .095885 .1651 bezier .106217 .151927 .12037 .141841 .13335 .131657 bezier .158569 .143988 .184746 .170906 .17907 .20066 bezier .175871 .217812 .156707 .22783 .14097 .224155 closepath ! end of curve ! start of curve amove .106045 .11176 bezier .758388E-01 .968889E-01 .481652E-01 .647712E-01 .05207 .029845 bezier .562127E-01 .107714E-01 .076549 -.289343E-02 .09525 .00127 bezier .127832 .359837E-02 .162754 .038618 .14986 .071755 bezier .139761 .889052E-01 .121292 .989459E-01 .106997 .112236 closepath ! end of curve fill dfont endchar dfont char="9" !-------------- Beginning of new char. dfont wid=.511108 hei=.644444 dep=0 italic=.135556 set path ! start of curve newpath ! start of curve amove .154305 .233045 bezier .180999 .230883 .19525 .201805 .193675 .1778 bezier .194788 .109559 .165825 .275567E-01 .09906 -.00381 bezier .795004E-01 -.107334E-01 .520383E-01 -.119932E-01 .03937 .00762 bezier .350756E-01 .019563 .03619 .379889E-01 .0508 .04191 aline .059055 .04191 bezier .744734E-01 .368852E-01 .645281E-01 .01232 .050165 .014605 bezier .479882E-01 .688325E-02 .601375E-01 .330626E-02 .06604 .00127 bezier .956224E-01 -.40905E-02 .119256 .222003E-01 .132715 .04572 bezier .142479 .064394 .15038 .847992E-01 .15367 .10541 bezier .139652 .801031E-01 .105462 .672052E-01 .080645 .08382 bezier .474841E-01 .109921 .055966 .159189 .076835 .1905 bezier .950454E-01 .214402 .122495 .23612 .154305 .233045 closepath ! end of curve ! start of curve amove .14351 .224155 bezier .115146 .2203 .099696 .190701 .093345 .1651 bezier .882862E-01 .139317 .731366E-01 .109567 .09398 .08763 bezier .116177 .749791E-01 .140806 .947832E-01 .15113 .1143 bezier .165199 .141637 .172579 .172149 .17145 .201295 bezier .169323 .214292 .157824 .228681 .14351 .224155 closepath ! end of curve ! start of curve amove .15367 .10541 aline .154305 .104775 aline .15494 .10541 aline .154305 .106045 aline .15367 .10541 closepath ! end of curve fill dfont endchar dfont char=":" !-------------- Beginning of new char. dfont wid=.306665 hei=.430555 dep=0 italic=.0581951 set path ! start of curve newpath ! start of curve amove .09398 .14986 bezier .111091 .147183 .108434 .123158 .09525 .11684 bezier .867613E-01 .110943 .721152E-01 .112778 .069215 .123825 bezier .666965E-01 .13632 .761995E-01 .147864 .088265 .14986 closepath ! end of curve ! start of curve amove .065405 .03556 bezier .825156E-01 .328834E-01 .798586E-01 .885797E-02 .066675 .00254 bezier .581863E-01 -.335653E-02 .435402E-01 -.152151E-02 .04064 .009525 bezier .381215E-01 .220203E-01 .476245E-01 .335643E-01 .05969 .03556 closepath ! end of curve fill dfont endchar dfont char=";" !-------------- Beginning of new char. dfont wid=.306665 hei=.430555 dep=.194445 italic=.0581951 set path ! start of curve newpath ! start of curve amove .09398 .14986 bezier .111091 .147183 .108434 .123158 .09525 .11684 bezier .867613E-01 .110943 .721152E-01 .112778 .069215 .123825 bezier .666965E-01 .13632 .761995E-01 .147864 .088265 .14986 closepath ! end of curve ! start of curve amove .065405 .03556 bezier .800436E-01 .319287E-01 .763314E-01 .138258E-01 .074295 .003175 bezier .684264E-01 -.252944E-01 .522572E-01 -.506189E-01 .03048 -.069215 aline .02794 -.069215 aline .026035 -.06731 aline .026035 -.0635 bezier .04521 -.468575E-01 .611829E-01 -.221064E-01 .657225E-01 .174625E-02 bezier .553729E-01 -.520549E-02 .369523E-01 .207937E-02 .04064 .01524 bezier .404284E-01 .275534E-01 .535288E-01 .372499E-01 .065405 .03556 closepath ! end of curve fill dfont endchar dfont char="<" !-------------- Beginning of new char. dfont wid=.306665 hei=.5 dep=.194445 italic=.0755568 set path ! start of curve newpath ! start of curve amove .10033 .174625 bezier .117852 .171375 .114182 .146736 .10033 .14097 bezier .886159E-01 .132691 .702631E-01 .143572 .075565 .158115 bezier .782573E-01 .166371 .854331E-01 .172876 .09398 .174625 closepath ! end of curve ! start of curve amove .084455 .108585 bezier .878765E-01 .100495 .820942E-01 .917879E-01 .08255 .083185 bezier .728107E-01 .334764E-01 .667004E-01 -.159672E-01 .05588 -.06604 bezier .489239E-01 -.786022E-01 .249137E-01 -.082333 .020955 -.065405 aline .020955 -.060325 aline .02159 -.057785 aline .0254 -.046355 aline .026035 -.043815 aline .042545 .005715 aline .04318 .008255 aline .059055 .05588 aline .05969 .05842 aline .075565 .106045 aline .0762 .107315 aline .07747 .108585 aline .084455 .108585 closepath ! end of curve fill dfont endchar dfont char="=" !-------------- Beginning of new char. dfont wid=.766663 hei=.366875 dep=-.133125 italic=.066164 set path ! start of curve newpath ! start of curve amove .267335 .12827 aline .268605 .127635 aline .269875 .127 aline .271145 .12573 aline .272415 .12319 aline .272415 .11938 aline .271145 .11684 aline .269875 .11557 aline .267335 .1143 aline .062865 .1143 aline .060325 .11557 aline .059055 .11684 aline .05842 .11811 aline .057785 .120015 aline .057785 .122555 aline .05842 .12446 aline .059055 .12573 aline .060325 .127 aline .061595 .127635 aline .062865 .12827 closepath ! end of curve ! start of curve amove .25019 .05969 aline .25146 .059055 aline .25273 .05842 aline .254 .05715 aline .25527 .05461 aline .25527 .0508 aline .254 .04826 aline .25273 .04699 aline .25019 .04572 aline .04572 .04572 aline .04318 .04699 aline .04191 .04826 aline .041275 .04953 aline .04064 .051435 aline .04064 .053975 aline .041275 .05588 aline .04191 .05715 aline .04318 .05842 aline .04445 .059055 aline .04572 .05969 closepath ! end of curve fill dfont endchar dfont char=">" !-------------- Beginning of new char. dfont wid=.511108 hei=.5 dep=.194445 italic=0 set path ! start of curve newpath ! start of curve amove .13589 .174625 bezier .153412 .171375 .149742 .146736 .13589 .14097 bezier .124176 .132691 .105823 .143572 .111125 .158115 bezier .113817 .166371 .120993 .172876 .12954 .174625 closepath ! end of curve ! start of curve amove .120015 .108585 bezier .142117 .10297 .139299 .729644E-01 .12827 .05842 bezier .105808 .334158E-01 .741912E-01 .178653E-01 .05207 -.00762 bezier .380854E-01 -.250991E-01 .352453E-01 -.057047 .059055 -.06731 bezier .896321E-01 -.779208E-01 .117385 -.504306E-01 .13081 -.0254 aline .135255 -.01651 aline .13589 -.014605 aline .137795 -.010795 aline .139065 -.006985 aline .139541 -.60325E-02 aline .139065 -.00508 bezier .123762 -.719426E-02 .122613 .152168E-01 .13462 .02032 bezier .142227 .268675E-01 .157781 .210274E-01 .15494 .010795 bezier .1476 -.276331E-01 .121647 -.06659 .081915 -.0762 bezier .585367E-01 -.819514E-01 .311263E-01 -.652489E-01 .029845 -.040005 bezier .264915E-01 -.100793E-01 .046503 .163673E-01 .070485 .03175 bezier .086334 .458505E-01 .104649 .571441E-01 .11938 .07239 bezier .124915 .810913E-01 .12949 .958796E-01 .11811 .1016 bezier .101604 .102411 .909209E-01 .861139E-01 .085725 .073025 aline .08509 .07239 aline .07874 .07239 aline .076835 .074295 bezier .789666E-01 .915836E-01 .949786E-01 .105625 .11176 .108585 closepath ! end of curve fill dfont endchar dfont char="?" !-------------- Beginning of new char. dfont wid=.511108 hei=.694445 dep=0 italic=.1225 set path ! start of curve newpath ! start of curve amove .15748 .25019 bezier .176061 .248512 .192526 .232126 .193675 .21336 bezier .1973 .182041 .175121 .155667 .150495 .1397 bezier .134671 .124876 .113722 .114879 .1016 .09652 bezier .974768E-01 .888104E-01 .963038E-01 .775726E-01 .104775 .07239 bezier .120527 .711837E-01 .132769 .853928E-01 .136525 .099695 aline .13843 .1016 aline .14478 .1016 aline .145415 .100965 bezier .149248 .947064E-01 .141971 .862836E-01 .13843 .080645 bezier .127603 .673911E-01 .103374 .572742E-01 .090805 .07366 bezier .797264E-01 .951044E-01 .939866E-01 .121034 .113665 .13208 bezier .136185 .153697 .169355 .167154 .18034 .198755 bezier .187787 .216853 .176581 .241113 .15621 .243205 bezier .12009 .244726 .938811E-01 .209683 .084455 .178435 bezier .997583E-01 .180549 .100907 .158138 .0889 .153035 bezier .081293 .146487 .657391E-01 .152328 .06858 .16256 bezier .759203E-01 .200988 .101873 .239945 .141605 .249555 aline .145415 .249555 aline .14605 .25019 aline .15748 .25019 closepath ! end of curve ! start of curve amove .1016 .03556 bezier .12009 .310546E-01 .113579 .506315E-02 .098425 .000635 bezier .900539E-01 -.298507E-02 .789283E-01 .297473E-03 .0762 .009525 bezier .738796E-01 .217246E-01 .830749E-01 .033044 .094615 .03556 closepath ! end of curve fill dfont endchar dfont char="@" !-------------- Beginning of new char. dfont wid=.766663 hei=.694445 dep=0 italic=.0959721 set path ! start of curve newpath ! start of curve amove .2032 .24638 bezier .243796 .244266 .276656 .205322 .276225 .1651 bezier .278539 .13117 .268672 .951052E-01 .25273 .064135 bezier .242903 .440326E-01 .210469 .356172E-01 .19685 .056515 aline .196215 .057785 aline .19558 .05969 aline .194945 .06223 aline .194945 .066675 bezier .183241 .580093E-01 .16837 .454887E-01 .151765 .04445 bezier .124537 .405833E-01 .998474E-01 .064296 .098425 .090805 bezier .937032E-01 .141601 .134784 .198855 .188595 .197485 bezier .204593 .195552 .217895 .183204 .222885 .168275 aline .236855 .168275 aline .23876 .16764 aline .24003 .16637 aline .24003 .16256 aline .216535 .06858 bezier .213691 .625361E-01 .214964 .482315E-01 .22479 .05207 bezier .246124 .584185E-01 .250803 .841871E-01 .257175 .10287 bezier .269238 .139741 .273241 .181829 .248285 .21463 bezier .226273 .242355 .187052 .245254 .156845 .230505 bezier .961644E-01 .202566 .553043E-01 .130392 .065405 .065405 bezier .697462E-01 .331606E-01 .961375E-01 .497461E-02 .12827 .00254 bezier .16409 .150542E-02 .199083 .105507E-01 .23241 .026035 aline .245745 .026035 aline .247015 .0254 bezier .250373 .178375E-01 .238206 .177081E-01 .23368 .014605 bezier .193498 .210082E-03 .151869 -.96128E-02 .11049 -.00127 bezier .693487E-01 .101147E-01 .485252E-01 .566052E-01 .053975 .095885 bezier .583133E-01 .165594 .112185 .233067 .182245 .245745 aline .187325 .245745 aline .18796 .24638 aline .2032 .24638 closepath ! end of curve ! start of curve amove .17907 .189865 bezier .14252 .180076 .125886 .138972 .11938 .10541 bezier .11755 .867977E-01 .119916 .616786E-01 .1397 .052705 bezier .164622 .473072E-01 .187428 .692738E-01 .19939 .089535 aline .215265 .153035 bezier .216168 .171314 .20025 .193171 .179705 .1905 closepath ! end of curve fill dfont endchar dfont char="A" !-------------- Beginning of new char. dfont wid=.743329 hei=.683332 dep=0 italic=0 dfont fby="C" kadd=-.0255556 dfont fby="G" kadd=-.0255556 dfont fby="O" kadd=-.0255556 dfont fby="Q" kadd=-.0255556 dfont fby="T" kadd=-.0766659 dfont fby="U" kadd=-.0255556 dfont fby="V" kadd=-.102221 dfont fby="W" kadd=-.102221 dfont fby="Y" kadd=-.0766659 dfont fby="a" kadd=-.0511112 dfont fby="b" kadd=-.0255556 dfont fby="c" kadd=-.0511112 dfont fby="d" kadd=-.0511112 dfont fby="e" kadd=-.0511112 dfont fby="g" kadd=-.0511112 dfont fby="h" kadd=-.0255556 dfont fby="i" kadd=-.0255556 dfont fby="k" kadd=-.0255556 dfont fby="l" kadd=-.0255556 dfont fby="m" kadd=-.0255556 dfont fby="n" kadd=-.0255556 dfont fby="o" kadd=-.0511112 dfont fby="q" kadd=-.0511112 dfont fby="r" kadd=-.0255556 dfont fby="t" kadd=-.0255556 dfont fby="u" kadd=-.0255556 dfont fby="v" kadd=-.0255556 dfont fby="w" kadd=-.0255556 set path ! start of curve newpath ! start of curve amove .196215 .25019 aline .197485 .249555 aline .198755 .248285 bezier .205046 .170177 .208098 .09202 .2159 .014605 aline .216535 .013335 aline .217805 .012065 aline .219075 .01143 aline .22225 .010795 aline .222885 .01016 aline .22733 .01016 aline .227965 .009525 aline .240665 .009525 aline .24257 .00762 aline .24257 .003175 aline .241935 .00127 aline .24003 -.000635 bezier .211905 .109395E-02 .183516 -.34204E-03 .155575 0 aline .15494 .000635 aline .154305 .001905 aline .154305 .004445 aline .15494 .006985 aline .155575 .008255 bezier .164981 .112321E-01 .17785 .783549E-02 .184785 .017145 aline .18542 .01905 bezier .185627 .038934 .183465 .601044E-01 .18161 .08001 aline .102235 .08001 bezier .917621E-01 .608084E-01 .07795 .420358E-01 .07112 .02159 aline .071755 .020955 aline .07239 .01778 aline .073025 .015875 aline .0762 .0127 aline .07874 .01143 aline .080645 .010795 aline .08382 .01016 aline .084455 .009525 aline .089535 .009525 aline .09144 .00762 aline .09144 .003175 aline .090805 .00127 aline .0889 -.000635 aline .080645 -.000635 aline .08001 0 aline .057785 0 aline .05715 .000635 aline .047625 .000635 aline .04699 0 aline .028575 0 aline .02794 -.000635 aline .02286 -.000635 aline .020955 .00127 aline .020955 .00508 aline .02159 .006985 aline .022225 .008255 bezier .358348E-01 .103439E-01 .525996E-01 .141187E-01 .060325 .02794 bezier .104829 .100552 .14381 .177146 .188595 .249555 aline .189865 .25019 closepath ! end of curve ! start of curve amove .172085 .2032 bezier .151064 .165722 .127777 .127441 .108585 .09017 aline .180975 .09017 bezier .178793 .127508 .176928 .166828 .17272 .20447 closepath ! end of curve fill dfont endchar dfont char="B" !-------------- Beginning of new char. dfont wid=.703885 hei=.683332 dep=0 italic=.10257 set path ! start of curve newpath ! start of curve amove .20701 .23876 bezier .229322 .237482 .254509 .222649 .25781 .19812 bezier .261674 .158904 .223906 .131417 .18923 .12446 bezier .215804 .123255 .242849 .988172E-01 .23749 .07112 bezier .233028 .312224E-01 .193093 .282027E-02 .155575 -.000635 aline .0254 -.000635 aline .02413 0 aline .023495 .000635 aline .02286 .001905 aline .02286 .00381 aline .023495 .00635 aline .024765 .00889 bezier .369718E-01 .115426E-01 .557897E-01 .516735E-02 .060325 .020955 aline .100965 .183515 aline .10922 .216535 aline .109855 .21971 aline .11049 .220345 aline .11049 .224155 aline .109855 .22479 aline .10922 .22606 aline .107315 .226695 aline .10414 .22733 aline .103505 .227965 aline .098425 .227965 aline .09779 .2286 aline .08255 .2286 aline .08128 .229235 aline .08001 .231775 aline .08001 .23241 aline .080645 .23495 aline .08128 .236855 aline .083185 .23876 aline .20701 .23876 closepath ! end of curve ! start of curve amove .145415 .227965 aline .14224 .22733 aline .1397 .22606 aline .137795 .22225 aline .136525 .21844 aline .1143 .12954 aline .113824 .128587 aline .1143 .127635 aline .17018 .127635 bezier .208 .133604 .241992 .179554 .221615 .2159 aline .220345 .21717 aline .21971 .21844 aline .2159 .22225 aline .21463 .222885 aline .213995 .22352 aline .207645 .226695 aline .205105 .22733 aline .20193 .227965 aline .201295 .2286 aline .14605 .2286 closepath ! end of curve ! start of curve amove .11176 .11938 aline .111125 .11684 aline .08636 .01778 aline .085725 .017145 aline .085725 .01143 aline .08636 .010795 aline .0889 .01016 aline .089535 .009525 aline .14732 .009525 bezier .189923 .152451E-01 .222674 .691236E-01 .19939 .10795 aline .19304 .1143 aline .19177 .114935 aline .191135 .11557 aline .186055 .11811 aline .18415 .118745 aline .18161 .11938 aline .180975 .120015 aline .17653 .120015 aline .175895 .12065 aline .112395 .12065 closepath ! end of curve fill dfont endchar dfont char="C" !-------------- Beginning of new char. dfont wid=.715551 hei=.683332 dep=0 italic=.145277 set path ! start of curve newpath ! start of curve amove .207645 .24638 bezier .226438 .244908 .244313 .233133 .253365 .216535 bezier .26176 .226688 .270429 .236643 .2794 .24638 aline .28321 .24638 aline .283845 .245745 aline .285115 .24511 aline .285115 .2413 aline .262255 .14986 aline .26162 .147955 aline .260985 .14732 aline .259715 .146685 aline .253365 .146685 aline .252095 .147955 bezier .255306 .175171 .254571 .211015 .2286 .229235 bezier .194536 .247755 .152986 .225292 .12954 .198755 bezier .101112 .167974 .890072E-01 .123471 .083185 .08382 bezier .799313E-01 .529248E-01 .090939 .152708E-01 .123825 .00508 bezier .167307 -.853821E-02 .21224 .270401E-01 .2286 .066675 aline .22987 .069215 aline .230505 .07112 aline .23114 .07239 aline .234315 .081915 aline .23495 .084455 aline .235585 .085725 aline .236855 .086995 aline .243205 .086995 aline .244475 .08636 bezier .244884 .068441 .232887 .511792E-01 .222885 .03683 bezier .193635 -.249726E-02 .135403 -.240119E-01 .092075 .00508 bezier .574088E-01 .262521E-01 .482483E-01 .716726E-01 .05461 .10795 bezier .661743E-01 .174892 .120058 .234644 .187325 .245745 aline .192405 .245745 aline .19304 .24638 aline .207645 .24638 closepath ! end of curve fill dfont endchar dfont char="D" !-------------- Beginning of new char. dfont wid=.754995 hei=.683332 dep=0 italic=.0940275 dfont fby="A" kadd=-.0255556 dfont fby="V" kadd=-.0255556 dfont fby="W" kadd=-.0255556 dfont fby="X" kadd=-.0255556 dfont fby="Y" kadd=-.0255556 set path ! start of curve newpath ! start of curve amove .206375 .23876 bezier .24515 .23657 .272576 .19723 .27178 .160655 bezier .276021 .899081E-01 .224764 .138373E-01 .1524 0 aline .14732 0 aline .146685 -.000635 aline .024765 -.000635 aline .023495 0 aline .02286 .000635 aline .022225 .001905 aline .022225 .00381 aline .02286 .00635 aline .02413 .00889 bezier .363368E-01 .115426E-01 .551547E-01 .516735E-02 .05969 .020955 aline .10033 .183515 aline .108585 .216535 aline .10922 .21971 aline .109855 .220345 aline .109855 .224155 aline .10922 .22479 aline .108585 .22606 aline .10668 .226695 aline .103505 .22733 aline .10287 .227965 aline .09779 .227965 aline .097155 .2286 aline .081915 .2286 aline .080645 .229235 aline .079375 .231775 aline .079375 .23241 aline .08001 .23495 aline .080645 .236855 aline .08255 .23876 aline .206375 .23876 closepath ! end of curve ! start of curve amove .145415 .227965 aline .14224 .22733 aline .1397 .22606 aline .137795 .22225 aline .136525 .21844 aline .095885 .05588 aline .08636 .01778 aline .085725 .017145 aline .085725 .01143 aline .08636 .010795 aline .0889 .01016 aline .089535 .009525 aline .140335 .009525 bezier .181566 .142543E-01 .214837 .484462E-01 .22733 .08763 bezier .238308 .126483 .254827 .168329 .23368 .20574 bezier .225355 .21905 .209622 .22642 .194945 .2286 aline .14605 .2286 closepath ! end of curve fill dfont endchar dfont char="E" !-------------- Beginning of new char. dfont wid=.678329 hei=.683332 dep=0 italic=.120277 set path ! start of curve newpath ! start of curve amove .258445 .23749 aline .259715 .236855 bezier .261482 .224371 .256654 .211186 .25654 .19812 bezier .254119 .185879 .253431 .173388 .25146 .160655 aline .249555 .15875 aline .24384 .15875 aline .24257 .159385 aline .241935 .16002 bezier .24122 .178948 .250888 .204101 .23368 .21971 aline .22733 .222885 aline .22352 .224155 aline .22098 .22479 aline .217805 .225425 aline .21717 .22606 aline .21336 .22606 aline .212725 .226695 aline .206375 .226695 aline .20574 .22733 aline .14605 .22733 aline .145415 .226695 aline .14224 .22606 aline .14097 .225425 aline .1397 .224155 aline .137795 .220345 aline .13716 .21844 aline .114935 .12954 aline .1143 .128905 aline .114935 .12827 aline .15113 .12827 bezier .163403 .12907 .177278 .135088 .180975 .14859 aline .18415 .158115 aline .186055 .165735 aline .18669 .16764 aline .188595 .169545 aline .19431 .169545 aline .19558 .16891 aline .196215 .168275 aline .19685 .167005 aline .19685 .1651 aline .17526 .07874 aline .173355 .076835 aline .167005 .076835 aline .1651 .07874 bezier .165356 .905341E-01 .173873 .10341 .1651 .113665 aline .16129 .11557 aline .159385 .116205 aline .15621 .11684 aline .155575 .117475 aline .15113 .117475 aline .150495 .11811 aline .112395 .11811 aline .11176 .11684 aline .086995 .01778 aline .08636 .017145 aline .08636 .01143 aline .086995 .010795 aline .089535 .01016 aline .09017 .009525 aline .14859 .009525 bezier .173167 .101396E-01 .20073 .215437E-01 .21209 .04572 bezier .220888 .594029E-01 .224935 .764558E-01 .23368 .089535 aline .239395 .089535 bezier .244515 .829159E-01 .235602 .745406E-01 .234315 .06731 bezier .224225 .449306E-01 .216807 .204574E-01 .205105 -.000635 aline .02413 -.000635 aline .02286 0 aline .022225 .000635 aline .02159 .001905 aline .02159 .00381 aline .022225 .00635 aline .023495 .00889 bezier .357018E-01 .115426E-01 .545197E-01 .516735E-02 .059055 .020955 aline .099695 .183515 aline .10795 .216535 aline .108585 .21717 aline .108585 .224155 aline .106045 .225425 aline .10287 .22606 aline .102235 .226695 aline .09652 .226695 aline .095885 .22733 aline .080645 .22733 aline .07874 .229235 aline .07874 .23241 aline .079375 .23495 aline .08001 .23622 aline .080645 .236855 aline .081915 .23749 aline .258445 .23749 closepath ! end of curve fill dfont endchar dfont char="F" !-------------- Beginning of new char. dfont wid=.652774 hei=.683332 dep=0 italic=.133055 dfont fby="A" kadd=-.102221 dfont fby="C" kadd=-.0255556 dfont fby="G" kadd=-.0255556 dfont fby="O" kadd=-.0255556 dfont fby="Q" kadd=-.0255556 dfont fby="a" kadd=-.0766659 dfont fby="e" kadd=-.0766659 dfont fby="o" kadd=-.0766659 dfont fby="r" kadd=-.0766659 dfont fby="u" kadd=-.0766659 set path ! start of curve newpath ! start of curve amove .254 .23749 aline .25527 .236855 bezier .257037 .224371 .252209 .211186 .252095 .19812 bezier .249674 .185879 .248986 .173388 .247015 .160655 aline .24511 .15875 aline .239395 .15875 aline .238125 .159385 aline .23749 .16002 bezier .236687 .17869 .246214 .203036 .230505 .219075 bezier .222114 .224883 .211766 .226135 .202565 .22733 aline .14605 .22733 aline .145415 .226695 aline .14224 .22606 aline .14097 .225425 aline .1397 .224155 aline .137795 .220345 aline .13716 .21844 aline .113903 .125412 aline .1143 .123825 aline .14859 .123825 bezier .161281 .124559 .175293 .131414 .178435 .145415 aline .18034 .15113 aline .180975 .15367 aline .18161 .155575 aline .183515 .163195 aline .18542 .1651 aline .19177 .1651 aline .193675 .163195 aline .193675 .16002 aline .17272 .0762 aline .172085 .074295 aline .17018 .07239 aline .164465 .07239 bezier .158574 .769942E-01 .165603 .862997E-01 .165735 .092075 bezier .167493 .101151 .164803 .112106 .15367 .112395 aline .153035 .11303 aline .14859 .11303 aline .147955 .113665 aline .111125 .113665 aline .11049 .11176 aline .088265 .02286 aline .08763 .019685 bezier .840536E-01 .103992E-01 .970086E-01 .976037E-02 .103505 .01016 aline .10414 .009525 aline .12319 .009525 aline .125095 .00762 aline .125095 .004445 aline .12446 .001905 aline .123825 .000635 aline .12319 0 aline .12192 -.000635 aline .111125 -.000635 aline .11049 0 aline .076835 0 aline .0762 .000635 aline .061595 .000635 aline .06096 0 aline .032385 0 aline .03175 -.000635 aline .02413 -.000635 aline .02286 0 aline .022225 .000635 aline .02159 .001905 aline .02159 .00381 aline .022225 .00635 aline .023495 .00889 bezier .357018E-01 .115426E-01 .545197E-01 .516735E-02 .059055 .020955 aline .099695 .183515 aline .10795 .216535 aline .108585 .21717 aline .108585 .224155 aline .106045 .225425 aline .10287 .22606 aline .102235 .226695 aline .09652 .226695 aline .095885 .22733 aline .080645 .22733 aline .07874 .229235 aline .07874 .23241 aline .079375 .23495 aline .08001 .23622 aline .080645 .236855 aline .081915 .23749 closepath ! end of curve fill dfont endchar dfont char="G" !-------------- Beginning of new char. dfont wid=.773607 hei=.683332 dep=0 italic=.0872221 set path ! start of curve newpath ! start of curve amove .207645 .24638 bezier .22624 .244828 .243853 .23306 .25273 .216535 bezier .261125 .226688 .269794 .236643 .278765 .24638 aline .282575 .24638 aline .28321 .245745 aline .28448 .24511 aline .28448 .2413 aline .26162 .14986 aline .260985 .147955 aline .26035 .14732 aline .25908 .146685 aline .25273 .146685 aline .25146 .147955 bezier .254601 .174894 .254119 .209675 .229235 .2286 bezier .192931 .249147 .148706 .223299 .125095 .193675 bezier .997189E-01 .16311 .088487 .120909 .083185 .083185 bezier .802858E-01 .053365 .905491E-01 .178179E-01 .121285 .00635 bezier .151803 -.584105E-02 .194387 .822889E-02 .20574 .041275 aline .21336 .071755 aline .213995 .07493 bezier .217096 .835883E-01 .204788 .840295E-01 .198755 .08382 aline .19812 .084455 aline .179705 .084455 aline .178435 .08509 aline .177165 .08763 aline .177165 .0889 aline .1778 .09144 aline .178435 .09271 aline .18034 .094615 aline .191135 .094615 aline .19177 .09398 aline .22479 .09398 aline .225425 .093345 aline .238125 .093345 aline .23876 .09398 aline .26035 .09398 aline .260985 .094615 aline .2667 .094615 aline .26797 .09398 aline .26924 .09144 aline .26924 .090805 aline .268605 .088265 aline .26797 .08636 aline .266065 .084455 aline .25527 .084455 aline .254635 .08382 aline .250825 .08382 aline .25019 .083185 aline .248285 .08255 aline .247015 .081915 aline .24511 .08001 aline .24384 .07747 aline .24257 .07366 aline .22479 .00254 aline .224155 .000635 bezier .217756 -.378639E-02 .214331 .699659E-02 .21082 .010795 aline .20828 .015875 aline .20701 .019685 bezier .195527 .991528E-02 .180606 -.178288E-02 .16383 -.00508 bezier .122704 -.177405E-01 .724205E-01 .411774E-02 .059055 .04699 bezier .302584E-01 .137804 .110835 .248542 .207645 .24638 closepath ! end of curve fill dfont endchar dfont char="H" !-------------- Beginning of new char. dfont wid=.743329 hei=.683332 dep=0 italic=.16389 set path ! start of curve newpath ! start of curve amove .09144 .23876 aline .092075 .238125 aline .12065 .238125 aline .121285 .23749 aline .133985 .23749 aline .13462 .238125 aline .163195 .238125 aline .16383 .23876 aline .172085 .23876 aline .17399 .236855 aline .17399 .233045 aline .173355 .230505 aline .17145 .2286 aline .155575 .2286 aline .15494 .227965 aline .149225 .227965 aline .14859 .22733 aline .145415 .226695 aline .141605 .225425 aline .1397 .22352 aline .137795 .21971 aline .136525 .2159 aline .115173 .130492 aline .11557 .128905 aline .21082 .128905 aline .211455 .130175 aline .233045 .216535 aline .23368 .21971 aline .234315 .220345 aline .234315 .224155 aline .23368 .22479 aline .233045 .22606 aline .23114 .226695 aline .227965 .22733 aline .22733 .227965 aline .22225 .227965 aline .221615 .2286 aline .206375 .2286 aline .205105 .229235 aline .203835 .231775 aline .203835 .23241 aline .20447 .23495 aline .205105 .236855 aline .20701 .23876 aline .216535 .23876 aline .21717 .238125 aline .245745 .238125 aline .24638 .23749 aline .25908 .23749 aline .259715 .238125 aline .28829 .238125 aline .288925 .23876 aline .29718 .23876 aline .299085 .236855 aline .299085 .233045 aline .29845 .230505 aline .296545 .2286 aline .28067 .2286 aline .280035 .227965 aline .27432 .227965 aline .273685 .22733 aline .27051 .226695 aline .2667 .225425 aline .264795 .22352 aline .26289 .21971 aline .26162 .2159 aline .22098 .05334 aline .212725 .02032 aline .21209 .019685 aline .21209 .0127 aline .21463 .01143 aline .217805 .010795 aline .21844 .01016 aline .224155 .01016 aline .22479 .009525 aline .24003 .009525 aline .241935 .00762 aline .241935 .004445 aline .2413 .001905 aline .240665 .000635 aline .24003 0 bezier .209986 -.462549E-03 .179459 .120853E-02 .149225 -.000635 aline .147955 0 aline .14732 .000635 aline .146685 .001905 aline .146685 .00381 aline .14732 .00635 aline .14859 .00889 bezier .160797 .115426E-01 .179615 .516739E-02 .18415 .020955 aline .20828 .117475 aline .208915 .11811 aline .20828 .118745 aline .112395 .118745 aline .11176 .11684 aline .08763 .02032 aline .086995 .019685 aline .086995 .0127 aline .089535 .01143 aline .09271 .010795 aline .093345 .01016 aline .09906 .01016 aline .099695 .009525 aline .114935 .009525 aline .11684 .00762 aline .11684 .004445 aline .116205 .001905 aline .11557 .000635 aline .114935 0 bezier .848913E-01 -.462542E-03 .054364 .120853E-02 .02413 -.000635 aline .02286 0 aline .022225 .000635 aline .02159 .001905 aline .02159 .00381 aline .022225 .00635 aline .023495 .00889 bezier .357018E-01 .115426E-01 .545197E-01 .516735E-02 .059055 .020955 aline .099695 .183515 aline .10795 .216535 aline .108585 .21971 aline .10922 .220345 aline .10922 .224155 aline .108585 .22479 aline .10795 .22606 aline .106045 .226695 aline .10287 .22733 aline .102235 .227965 aline .097155 .227965 aline .09652 .2286 aline .08128 .2286 aline .08001 .229235 aline .07874 .231775 aline .07874 .23241 aline .079375 .23495 aline .08001 .236855 aline .081915 .23876 aline .09144 .23876 closepath ! end of curve fill dfont endchar dfont char="I" !-------------- Beginning of new char. dfont wid=.385553 hei=.683332 dep=0 italic=.158055 set path ! start of curve newpath ! start of curve amove .09017 .23876 aline .090805 .238125 aline .12065 .238125 aline .121285 .23749 aline .13462 .23749 aline .135255 .238125 aline .1651 .238125 aline .165735 .23876 aline .173355 .23876 aline .174625 .238125 aline .17526 .23749 aline .175895 .23622 aline .175895 .23368 aline .17526 .231775 aline .17399 .229235 aline .17272 .2286 aline .156845 .2286 aline .15621 .227965 aline .14986 .227965 aline .149225 .22733 aline .14605 .226695 aline .14351 .22606 aline .14097 .22479 aline .1397 .22352 aline .137795 .21971 aline .136525 .2159 aline .095885 .05334 aline .08763 .02032 aline .086995 .019685 aline .086995 .013335 aline .088265 .012065 aline .09017 .01143 aline .093345 .010795 aline .09398 .01016 aline .099695 .01016 aline .10033 .009525 aline .116205 .009525 aline .117475 .00889 aline .118745 .00635 aline .118745 .00508 aline .11811 .00254 aline .117475 .00127 aline .11557 -.000635 aline .10541 -.000635 aline .104775 0 aline .075565 0 aline .07493 .000635 aline .061595 .000635 aline .06096 0 aline .031115 0 aline .03048 -.000635 aline .022225 -.000635 aline .02032 .00127 aline .02032 .005715 aline .020955 .00762 aline .02286 .009525 aline .03937 .009525 aline .040005 .01016 aline .04572 .01016 aline .046355 .010795 aline .04953 .010795 aline .050165 .01143 aline .053975 .0127 aline .056515 .01524 aline .05842 .01905 aline .059055 .020955 aline .099695 .183515 aline .10795 .216535 aline .108585 .21971 bezier .111858 .22808 .10038 .227721 .09525 .2286 aline .079375 .2286 aline .07747 .230505 aline .07747 .234315 aline .078105 .23622 aline .07874 .23749 aline .079375 .238125 aline .080645 .23876 aline .09017 .23876 closepath ! end of curve fill dfont endchar dfont char="J" !-------------- Beginning of new char. dfont wid=.524997 hei=.683332 dep=0 italic=.140279 set path ! start of curve newpath ! start of curve amove .136525 .23876 aline .13716 .238125 aline .172085 .238125 aline .17272 .23749 aline .18542 .23749 aline .186055 .238125 aline .208915 .238125 aline .20955 .23876 aline .2159 .23876 aline .217805 .236855 aline .217805 .233045 aline .21717 .23114 aline .216535 .22987 bezier .207574 .226525 .191802 .231904 .18923 .21844 aline .14859 .05588 bezier .141814 .122619E-01 .883214E-01 -.247082E-01 .047625 -.000635 bezier .028739 .011304 .255898E-01 .488021E-01 .050165 .05588 bezier .586263E-01 .586666E-01 .715639E-01 .051435 .06858 .041275 bezier .688495E-01 .287574E-01 .554603E-01 .020342 .442686E-01 .216807E-01 bezier .475501E-01 -.134549E-02 .791647E-01 -.821095E-02 .094615 .00762 bezier .106294 .179409E-01 .114299 .314126E-01 .118745 .046355 aline .159385 .208915 aline .16129 .216535 aline .161925 .21717 aline .161925 .224155 aline .160655 .225425 aline .159385 .22606 aline .156845 .226695 aline .15621 .22733 aline .153035 .22733 aline .1524 .227965 aline .14478 .227965 aline .144145 .2286 aline .12446 .2286 aline .122555 .230505 aline .122555 .234315 aline .12319 .23622 aline .123825 .23749 aline .12446 .238125 aline .12573 .23876 aline .136525 .23876 closepath ! end of curve fill dfont endchar dfont char="K" !-------------- Beginning of new char. dfont wid=.768885 hei=.683332 dep=0 italic=.145277 dfont fby="C" kadd=-.0255556 dfont fby="G" kadd=-.0255556 dfont fby="O" kadd=-.0255556 dfont fby="Q" kadd=-.0255556 set path ! start of curve newpath ! start of curve amove .09144 .23876 aline .092075 .238125 aline .12065 .238125 aline .121285 .23749 aline .133985 .23749 aline .13462 .238125 aline .163195 .238125 aline .16383 .23876 aline .172085 .23876 aline .17399 .236855 aline .17399 .233045 aline .173355 .230505 aline .17145 .2286 aline .155575 .2286 aline .15494 .227965 aline .149225 .227965 aline .14859 .22733 aline .145415 .226695 aline .141605 .225425 aline .1397 .22352 aline .137795 .21971 aline .136525 .2159 aline .108585 .10414 aline .108109 .103188 bezier .113153 .104124 .119377 .112119 .125095 .11557 bezier .163317 .149008 .20441 .179118 .2413 .213995 bezier .246256 .219376 .24369 .227715 .23622 .2286 aline .23241 .2286 aline .23114 .229235 aline .230505 .22987 aline .22987 .23114 aline .22987 .23368 aline .230505 .235585 aline .231775 .238125 bezier .254264 .239197 .277383 .2364 .29972 .23876 aline .301625 .236855 aline .301625 .233045 aline .30099 .230505 aline .299085 .2286 bezier .263209 .225997 .238136 .195375 .21082 .17526 bezier .199858 .164727 .184726 .15534 .175895 .14478 bezier .192404 .102111 .207142 .587076E-01 .22479 .01651 aline .2286 .0127 aline .23114 .01143 aline .233045 .010795 aline .23368 .01016 aline .23749 .01016 aline .238125 .009525 aline .247015 .009525 aline .24892 .00762 aline .24892 .004445 aline .248285 .001905 aline .24765 .000635 aline .247015 0 bezier .221319 -.743744E-04 .194993 .844631E-03 .16891 -.000635 aline .167005 .00127 aline .167005 .00508 aline .16764 .00762 bezier .174322 .119156E-01 .186555 .730689E-02 .1905 .017145 bezier .193493 .273677E-01 .184433 .378545E-01 .182245 .04826 bezier .171846 .740069E-01 .163446 .101323 .152083 .126206 bezier .136049 .112997 .119947 .998831E-01 .10414 .08636 aline .08763 .02032 aline .086995 .019685 aline .086995 .0127 aline .089535 .01143 aline .09271 .010795 aline .093345 .01016 aline .09906 .01016 aline .099695 .009525 aline .114935 .009525 aline .11684 .00762 aline .11684 .004445 aline .116205 .001905 aline .11557 .000635 aline .114935 0 bezier .848913E-01 -.462542E-03 .054364 .120853E-02 .02413 -.000635 aline .02286 0 aline .022225 .000635 aline .02159 .001905 aline .02159 .00381 aline .022225 .00635 aline .023495 .00889 bezier .357018E-01 .115426E-01 .545197E-01 .516735E-02 .059055 .020955 aline .099695 .183515 aline .10795 .216535 aline .108585 .21971 aline .10922 .220345 aline .10922 .224155 aline .108585 .22479 aline .10795 .22606 aline .106045 .226695 aline .10287 .22733 aline .102235 .227965 aline .097155 .227965 aline .09652 .2286 aline .08128 .2286 aline .08001 .229235 aline .07874 .231775 aline .07874 .23241 aline .079375 .23495 aline .08001 .236855 aline .081915 .23876 aline .09144 .23876 closepath ! end of curve fill dfont endchar dfont char="L" !-------------- Beginning of new char. dfont wid=.627218 hei=.683332 dep=0 italic=0 dfont fby="T" kadd=-.0766659 dfont fby="V" kadd=-.102221 dfont fby="W" kadd=-.102221 dfont fby="Y" kadd=-.0766659 dfont fby="a" kadd=-.0511112 dfont fby="c" kadd=-.0511112 dfont fby="d" kadd=-.0511112 dfont fby="e" kadd=-.0511112 dfont fby="g" kadd=-.0511112 dfont fby="o" kadd=-.0511112 dfont fby="q" kadd=-.0511112 set path ! start of curve newpath ! start of curve amove .09144 .23876 aline .092075 .238125 aline .12065 .238125 aline .121285 .23749 aline .135255 .23749 aline .13589 .238125 aline .17018 .238125 aline .170815 .23876 aline .18034 .23876 aline .182245 .236855 aline .182245 .233045 aline .18161 .230505 aline .179705 .2286 bezier .165965 .22773 .151174 .23088 .1397 .222885 aline .13716 .217805 aline .136525 .2159 aline .095885 .05334 aline .086995 .01778 aline .08636 .017145 aline .08636 .01143 aline .086995 .010795 aline .089535 .01016 aline .09017 .009525 aline .13335 .009525 bezier .15635 .01171 .18062 .247142E-01 .19177 .046355 bezier .199867 .059748 .20354 .755238E-01 .21082 .0889 aline .21209 .089535 aline .2159 .089535 aline .21844 .088265 aline .219075 .086995 bezier .210653 .576795E-01 .199159 .287651E-01 .188595 0 aline .187325 -.000635 aline .02413 -.000635 aline .02286 0 aline .022225 .000635 aline .02159 .001905 aline .02159 .00381 aline .022225 .00635 aline .023495 .00889 bezier .357018E-01 .115426E-01 .545197E-01 .516735E-02 .059055 .020955 aline .099695 .183515 aline .10795 .216535 aline .108585 .21971 aline .10922 .220345 aline .10922 .224155 aline .108585 .22479 aline .10795 .22606 aline .106045 .226695 aline .10287 .22733 aline .102235 .227965 aline .097155 .227965 aline .09652 .2286 aline .08128 .2286 aline .08001 .229235 aline .07874 .231775 aline .07874 .23241 aline .079375 .23495 aline .08001 .236855 aline .081915 .23876 aline .09144 .23876 closepath ! end of curve fill dfont endchar dfont char="M" !-------------- Beginning of new char. dfont wid=.896662 hei=.683332 dep=0 italic=.16389 set path ! start of curve newpath ! start of curve amove .14351 .23876 aline .14478 .238125 bezier .14887 .229699 .14686 .219147 .149225 .210185 bezier .154785 .151552 .1598 .931851E-01 .167005 .034925 bezier .208438 .102333 .247442 .171964 .290195 .238125 aline .291465 .23876 aline .34925 .23876 aline .351155 .236855 aline .351155 .233045 aline .35052 .230505 aline .348615 .2286 aline .33274 .2286 aline .332105 .227965 aline .32639 .227965 aline .325755 .22733 aline .32258 .226695 aline .31877 .225425 aline .316865 .22352 aline .31496 .21971 aline .31369 .2159 aline .27305 .05334 aline .264795 .02032 aline .26416 .019685 aline .26416 .0127 aline .2667 .01143 aline .269875 .010795 aline .27051 .01016 aline .276225 .01016 aline .27686 .009525 aline .2921 .009525 aline .294005 .00762 aline .294005 .004445 aline .29337 .001905 aline .292735 .000635 aline .2921 0 bezier .263137 -.407233E-03 .23362 .120498E-02 .20447 -.000635 aline .2032 0 aline .202565 .000635 aline .20193 .001905 aline .20193 .00381 aline .202565 .00635 aline .203835 .00889 bezier .216042 .115426E-01 .23486 .516739E-02 .239395 .020955 aline .280035 .183515 aline .28956 .221615 aline .289983 .222885 aline .28956 .224155 bezier .244515 .149772 .200782 .744432E-01 .15494 .000635 aline .1524 -.000635 aline .147955 -.000635 aline .146685 0 bezier .141317 .268335E-01 .141286 .553904E-01 .13716 .08255 bezier .132862 .128842 .128778 .175222 .12319 .22098 aline .08255 .05842 aline .075565 .03048 bezier .070728 .199268E-01 .081094 .909089E-02 .092075 .01016 aline .09271 .009525 aline .10033 .009525 aline .102235 .00762 aline .102235 .004445 aline .1016 .001905 aline .100965 .000635 aline .10033 0 bezier .757773E-01 -.42662E-03 .507801E-01 .115914E-02 .026035 -.000635 aline .024765 0 aline .02413 .000635 aline .023495 .001905 aline .023495 .00381 aline .02413 .00635 aline .0254 .00889 bezier .402579E-01 .917717E-02 .594102E-01 .138703E-01 .0635 .031115 aline .10414 .193675 aline .109855 .216535 aline .11049 .21971 aline .111125 .220345 aline .111125 .224155 aline .11049 .22479 aline .109855 .22606 aline .10795 .226695 aline .104775 .22733 aline .10414 .227965 aline .09906 .227965 aline .098425 .2286 aline .083185 .2286 aline .081915 .229235 aline .080645 .231775 aline .080645 .23241 aline .08128 .23495 aline .081915 .236855 aline .08382 .23876 closepath ! end of curve fill dfont endchar dfont char="N" !-------------- Beginning of new char. dfont wid=.743329 hei=.683332 dep=0 italic=.16389 set path ! start of curve newpath ! start of curve amove .139065 .23876 bezier .164193 .177739 .184055 .113262 .207962 .515938E-01 aline .208371 .517978E-01 aline .247015 .206375 bezier .252461 .217154 .242658 .229084 .23114 .227965 aline .230505 .2286 aline .222885 .2286 aline .221615 .229235 aline .220345 .231775 aline .220345 .23241 aline .22098 .23495 aline .221615 .236855 aline .22352 .23876 aline .231775 .23876 aline .23241 .238125 aline .25527 .238125 aline .255905 .23749 aline .266065 .23749 aline .2667 .238125 aline .290195 .238125 aline .29083 .23876 aline .29718 .23876 aline .299085 .236855 aline .299085 .233045 aline .29845 .230505 aline .296545 .2286 bezier .281987 .2295 .264499 .223831 .259715 .20828 aline .219075 .04572 aline .20828 .00254 aline .20701 0 aline .20574 -.000635 aline .198755 -.000635 bezier .186348 .245737E-01 .178938 .534597E-01 .168275 .08001 bezier .152345 .124948 .136029 .169726 .120015 .21463 aline .11938 .21336 aline .07874 .0508 bezier .770747E-01 .038131 .660908E-01 .217957E-01 .079375 .0127 aline .083185 .01143 aline .085725 .010795 aline .08636 .01016 aline .09017 .01016 aline .090805 .009525 aline .098425 .009525 aline .10033 .00762 aline .10033 .004445 aline .099695 .001905 aline .09906 .000635 aline .098425 0 bezier .738723E-01 -.426624E-03 .488751E-01 .115914E-02 .02413 -.000635 aline .02286 0 aline .022225 .000635 aline .02159 .001905 aline .02159 .00381 aline .022225 .00635 aline .023495 .00889 bezier .383529E-01 .917717E-02 .575052E-01 .138703E-01 .061595 .031115 aline .102235 .193675 aline .109855 .224155 aline .110278 .225425 aline .110014 .226219 aline .108585 .226695 aline .10795 .22733 aline .104775 .22733 aline .10414 .227965 aline .098425 .227965 aline .09779 .2286 aline .08128 .2286 aline .08001 .229235 aline .07874 .231775 aline .07874 .23241 aline .079375 .23495 aline .08001 .236855 aline .081915 .23876 aline .139065 .23876 closepath ! end of curve fill dfont endchar dfont char="O" !-------------- Beginning of new char. dfont wid=.766663 hei=.683332 dep=0 italic=.0940275 dfont fby="A" kadd=-.0255556 dfont fby="V" kadd=-.0255556 dfont fby="W" kadd=-.0255556 dfont fby="X" kadd=-.0255556 dfont fby="Y" kadd=-.0255556 set path ! start of curve newpath ! start of curve amove .203835 .24638 bezier .243354 .244348 .274785 .206443 .27559 .16764 bezier .282515 .909813E-01 .226756 .997126E-02 .14986 -.006985 bezier .11321 -.151039E-01 .708165E-01 .581916E-02 .059055 .04318 bezier .345039E-01 .119858 .851823E-01 .207814 .15748 .23876 aline .16891 .24257 aline .17653 .244475 aline .179705 .24511 aline .18288 .24511 aline .183515 .245745 aline .188595 .245745 aline .18923 .24638 aline .203835 .24638 closepath ! end of curve ! start of curve amove .18796 .23749 bezier .136102 .228921 .105307 .177783 .09271 .130175 bezier .829718E-01 .926192E-01 .749943E-01 .510712E-01 .09906 .017145 bezier .119609 -.881593E-02 .157328 -.168594E-02 .179705 .01778 bezier .222185 .505516E-01 .239868 .107999 .247015 .158115 bezier .249111 .186591 .242482 .221553 .21336 .234315 aline .207645 .23622 aline .20447 .236855 aline .203835 .23749 aline .20066 .23749 aline .200025 .238125 aline .188595 .238125 aline .18796 .23749 closepath ! end of curve fill dfont endchar dfont char="P" !-------------- Beginning of new char. dfont wid=.678329 hei=.683332 dep=0 italic=.10257 dfont fby="A" kadd=-.0766659 set path ! start of curve newpath ! start of curve amove .202565 .23876 bezier .226408 .237338 .252478 .220839 .255905 .194945 bezier .260509 .149219 .214574 .114836 .173355 .11049 aline .111125 .11049 aline .11049 .10922 aline .088265 .02032 aline .08763 .019685 aline .08763 .0127 aline .09017 .01143 aline .093345 .010795 aline .09398 .01016 aline .099695 .01016 aline .10033 .009525 aline .11557 .009525 aline .117475 .00762 aline .117475 .004445 aline .11684 .001905 aline .116205 .000635 aline .11557 0 bezier .855263E-01 -.462542E-03 .054999 .120853E-02 .024765 -.000635 aline .023495 0 aline .02286 .000635 aline .022225 .001905 aline .022225 .00381 aline .02286 .00635 aline .02413 .00889 bezier .363368E-01 .115426E-01 .551547E-01 .516735E-02 .05969 .020955 aline .10033 .183515 aline .108585 .216535 aline .10922 .21971 aline .109855 .220345 aline .109855 .224155 aline .10922 .22479 aline .108585 .22606 aline .10668 .226695 aline .103505 .22733 aline .10287 .227965 aline .09779 .227965 aline .097155 .2286 aline .081915 .2286 aline .080645 .229235 aline .079375 .231775 aline .079375 .23241 aline .08001 .23495 aline .080645 .236855 aline .08255 .23876 aline .202565 .23876 closepath ! end of curve ! start of curve amove .145415 .227965 aline .14224 .22733 aline .1397 .22606 aline .137795 .22225 aline .136525 .21844 aline .111998 .120333 aline .112395 .118745 aline .16383 .118745 bezier .188517 .120814 .213909 .137543 .219075 .16383 bezier .224612 .18289 .232926 .206914 .213995 .22098 bezier .207164 .22544 .198537 .227172 .191135 .2286 aline .14605 .2286 closepath ! end of curve fill dfont endchar dfont char="Q" !-------------- Beginning of new char. dfont wid=.766663 hei=.683332 dep=.194445 italic=.0940275 set path ! start of curve newpath ! start of curve amove .203835 .24638 bezier .243354 .244348 .274785 .206443 .27559 .16764 bezier .282197 .991787E-01 .23796 .296375E-01 .175895 .000635 bezier .176458 -.127848E-01 .176743 -.327326E-01 .19304 -.03683 bezier .214591 -.384225E-01 .232467 -.195024E-01 .236855 .000635 aline .23876 .00254 aline .241935 .00254 aline .24384 .000635 bezier .238207 -.275418E-01 .224774 -.622287E-01 .193675 -.069215 bezier .176682 -.727777E-01 .159482 -.590363E-01 .161925 -.041275 bezier .160457 -.288088E-01 .164088 -.160859E-01 .164624 -.365125E-02 bezier .131261 -.145591E-01 .886653E-01 -.70879E-02 .06858 .024765 bezier .344608E-01 .794533E-01 .587448E-01 .150994 .098425 .196215 bezier .125141 .225713 .163119 .248906 .203835 .24638 closepath ! end of curve ! start of curve amove .18796 .23749 bezier .135864 .228641 .105082 .17701 .09144 .12954 bezier .811606E-01 .924437E-01 .729366E-01 .511487E-01 .097155 .01778 bezier .102147 .129123E-01 .108493 .568345E-02 .114776 .53975E-02 bezier .104716 .311787E-01 .139562 .649193E-01 .16383 .045085 bezier .173682 .038135 .173124 .231506E-01 .175895 .141817E-01 bezier .223279 .456573E-01 .242056 .107476 .24765 .16002 bezier .249479 .189993 .238787 .229855 .20447 .236855 aline .203835 .23749 aline .20066 .23749 aline .200025 .238125 aline .188595 .238125 aline .18796 .23749 closepath ! end of curve ! start of curve amove .14351 .04318 bezier .125081 .407237E-01 .110169 .100554E-01 .12954 0 bezier .142229 -.886509E-03 .154146 .269146E-02 .165806 .797277E-02 bezier .169357 .210979E-01 .167217 .421388E-01 .150495 .043815 aline .144145 .043815 closepath ! end of curve fill dfont endchar dfont char="R" !-------------- Beginning of new char. dfont wid=.729441 hei=.683332 dep=0 italic=.038681 dfont fby="C" kadd=-.0255556 dfont fby="G" kadd=-.0255556 dfont fby="O" kadd=-.0255556 dfont fby="Q" kadd=-.0255556 dfont fby="T" kadd=-.0766659 dfont fby="U" kadd=-.0255556 dfont fby="V" kadd=-.102221 dfont fby="W" kadd=-.102221 dfont fby="Y" kadd=-.0766659 dfont fby="a" kadd=-.0511112 dfont fby="b" kadd=-.0255556 dfont fby="c" kadd=-.0511112 dfont fby="d" kadd=-.0511112 dfont fby="e" kadd=-.0511112 dfont fby="g" kadd=-.0511112 dfont fby="h" kadd=-.0255556 dfont fby="i" kadd=-.0255556 dfont fby="k" kadd=-.0255556 dfont fby="l" kadd=-.0255556 dfont fby="m" kadd=-.0255556 dfont fby="n" kadd=-.0255556 dfont fby="o" kadd=-.0511112 dfont fby="q" kadd=-.0511112 dfont fby="r" kadd=-.0255556 dfont fby="t" kadd=-.0255556 dfont fby="u" kadd=-.0255556 dfont fby="v" kadd=-.0255556 dfont fby="w" kadd=-.0255556 set path ! start of curve newpath ! start of curve amove .189865 .23876 bezier .218826 .238289 .255079 .217033 .252095 .183515 bezier .247407 .147538 .211277 .126184 .178435 .11811 bezier .198427 .111633 .21285 .901043E-01 .207645 .069215 bezier .207738 .472919E-01 .19867 .248047E-01 .206375 .003175 bezier .216327 -.762407E-02 .231568 .365652E-02 .236855 .01397 aline .240665 .02159 aline .2413 .023495 aline .241935 .024765 aline .243205 .028575 bezier .2417 .363964E-01 .255633 .389406E-01 .254635 .03048 bezier .249493 .966971E-02 .231243 -.134197E-01 .207645 -.00762 bezier .185704 -.845301E-02 .165658 .132892E-01 .17145 .034925 aline .17145 .0381 aline .172085 .041275 aline .18034 .074295 bezier .18601 .912141E-01 .175659 .113533 .15621 .11557 aline .111125 .11557 aline .11049 .1143 aline .086995 .02032 aline .08636 .019685 aline .08636 .0127 aline .0889 .01143 aline .092075 .010795 aline .09271 .01016 aline .098425 .01016 aline .09906 .009525 aline .1143 .009525 aline .116205 .00762 aline .116205 .004445 aline .11557 .001905 aline .114935 .000635 aline .1143 0 bezier .846799E-01 -.465114E-03 .545712E-01 .122061E-02 .024765 -.000635 aline .023495 0 aline .02286 .000635 aline .022225 .001905 aline .022225 .00381 aline .02286 .00635 aline .02413 .00889 bezier .363368E-01 .115426E-01 .551547E-01 .516735E-02 .05969 .020955 aline .10033 .183515 aline .108585 .216535 aline .10922 .21971 aline .109855 .220345 aline .109855 .224155 aline .10922 .22479 aline .108585 .22606 aline .10668 .226695 aline .103505 .22733 aline .10287 .227965 aline .09779 .227965 aline .097155 .2286 aline .081915 .2286 aline .080645 .229235 aline .079375 .231775 aline .079375 .23241 aline .08001 .23495 aline .080645 .236855 aline .08255 .23876 aline .189865 .23876 closepath ! end of curve ! start of curve amove .145415 .227965 aline .14224 .22733 aline .1397 .22606 aline .137795 .22225 aline .136525 .21844 aline .11303 .12446 aline .112554 .123507 aline .11303 .122555 aline .15621 .122555 bezier .183023 .12436 .211452 .141898 .216535 .170815 bezier .222166 .187381 .225379 .210423 .207645 .22098 aline .201295 .224155 aline .19558 .22606 aline .18923 .22733 aline .188595 .227965 aline .183515 .227965 aline .18288 .2286 aline .14605 .2286 closepath ! end of curve fill dfont endchar dfont char="S" !-------------- Beginning of new char. dfont wid=.56222 hei=.683332 dep=0 italic=.119722 set path ! start of curve newpath ! start of curve amove .158115 .24638 bezier .17339 .245073 .189621 .237164 .19685 .222885 bezier .203785 .230448 .209416 .23895 .216535 .24638 aline .220345 .24638 aline .22098 .245745 aline .22225 .24511 aline .22225 .2413 aline .202565 .16256 aline .20193 .16129 aline .20066 .16002 aline .19431 .16002 aline .19304 .160655 bezier .192711 .177796 .197807 .197163 .18923 .213995 bezier .178583 .241651 .140369 .243794 .120015 .22606 bezier .971552E-01 .209287 .817993E-01 .169747 .10668 .14859 bezier .132487 .135165 .171122 .138874 .18415 .10795 bezier .206823 .486401E-01 .143966 -.260587E-01 .08128 -.00508 bezier .693205E-01 -.188219E-02 .596321E-01 .60973E-02 .517525E-01 .150813E-01 bezier .446881E-01 .790233E-02 .391826E-01 -.141397E-02 .03175 -.008255 aline .02794 -.008255 aline .02667 -.006985 aline .026035 -.005715 aline .026035 -.004445 aline .046355 .076835 aline .047625 .07747 aline .04826 .078105 aline .05461 .078105 aline .056515 .0762 bezier .505498E-01 .05375 .512643E-01 .243626E-01 .07366 .01016 bezier .970033E-01 -.350286E-02 .128213 -.135135E-03 .145415 .02159 bezier .164403 .420826E-01 .176178 .791372E-01 .151765 .099695 bezier .125722 .112707 .865897E-01 .109507 .074295 .14097 bezier .558858E-01 .191848 .105081 .250903 .158115 .24638 closepath ! end of curve fill dfont endchar dfont char="T" !-------------- Beginning of new char. dfont wid=.715551 hei=.683332 dep=0 italic=.133055 dfont fby="A" kadd=-.0766659 dfont fby="a" kadd=-.0766659 dfont fby="e" kadd=-.0766659 dfont fby="o" kadd=-.0766659 dfont fby="r" kadd=-.0766659 dfont fby="u" kadd=-.0766659 dfont fby="y" kadd=-.0766659 set path ! start of curve newpath ! start of curve amove .28067 .236855 bezier .285302 .230363 .279452 .222009 .280035 .21463 bezier .276884 .196444 .273783 .17875 .271145 .16002 aline .26924 .158115 aline .26289 .158115 aline .260985 .16002 bezier .261723 .178629 .270625 .199075 .260985 .21717 bezier .25458 .223794 .244945 .225405 .236855 .226695 aline .203835 .226695 aline .2032 .22606 aline .200025 .225425 aline .197908 .224367 aline .197485 .22352 aline .19685 .222885 aline .196215 .221615 aline .19558 .21971 aline .194945 .21844 aline .154305 .05588 aline .14605 .02286 aline .145415 .019685 bezier .142162 .128522E-01 .1514 .106536E-01 .15621 .01016 aline .164465 .01016 aline .1651 .009525 aline .186055 .009525 aline .187325 .00889 aline .188595 .00635 aline .188595 .00508 aline .18796 .00254 aline .187325 .00127 aline .18542 -.000635 aline .173355 -.000635 aline .17272 0 aline .135255 0 aline .13462 .000635 aline .117475 .000635 aline .11684 0 aline .07874 0 aline .078105 -.000635 aline .067945 -.000635 aline .06604 .00127 aline .06604 .005715 aline .066675 .00762 aline .06858 .009525 bezier .838508E-01 .102111E-01 .994917E-01 .754012E-02 .11303 .014605 aline .113665 .015875 aline .114935 .017145 aline .11684 .020955 aline .15748 .183515 aline .165735 .216535 aline .16637 .21971 aline .167005 .220345 aline .167005 .22479 aline .16637 .225425 aline .16383 .22606 aline .163195 .226695 aline .130175 .226695 bezier .114909 .224979 .962519E-01 .218907 .0889 .2032 bezier .805684E-01 .189058 .773786E-01 .172234 .06985 .158115 aline .0635 .158115 aline .061595 .16002 aline .061595 .16256 aline .07493 .202565 aline .075565 .203835 aline .085725 .234315 aline .08636 .235585 aline .086995 .23622 aline .088265 .236855 aline .28067 .236855 closepath ! end of curve fill dfont endchar dfont char="U" !-------------- Beginning of new char. dfont wid=.743329 hei=.683332 dep=0 italic=.16389 set path ! start of curve newpath ! start of curve amove .09144 .23876 aline .092075 .238125 aline .12065 .238125 aline .121285 .23749 aline .133985 .23749 aline .13462 .238125 aline .163195 .238125 aline .16383 .23876 aline .172085 .23876 aline .17399 .236855 aline .17399 .233045 aline .173355 .230505 aline .17145 .2286 aline .155575 .2286 aline .15494 .227965 aline .149225 .227965 aline .14859 .22733 aline .145415 .226695 aline .141605 .225425 aline .1397 .22352 aline .137795 .21971 aline .136525 .2159 aline .100965 .07366 bezier .094656 .050856 .932673E-01 .186648E-01 .11811 .005715 bezier .15104 -.738777E-02 .186522 .191759E-01 .2032 .04699 bezier .208572 .563753E-01 .213092 .663222E-01 .2159 .076835 aline .248285 .206375 bezier .253731 .217154 .243928 .229084 .23241 .227965 aline .231775 .2286 aline .224155 .2286 aline .222885 .229235 aline .221615 .231775 aline .221615 .23241 aline .22225 .23495 aline .222885 .236855 aline .22479 .23876 aline .233045 .23876 aline .23368 .238125 aline .255905 .238125 aline .25654 .23749 aline .2667 .23749 aline .267335 .238125 aline .290195 .238125 aline .29083 .23876 aline .29718 .23876 aline .299085 .236855 aline .299085 .233045 aline .29845 .230505 aline .296545 .2286 bezier .281987 .2295 .264499 .223831 .259715 .20828 aline .226695 .0762 bezier .214456 .308205E-01 .172441 -.141058E-01 .122555 -.00762 bezier .884273E-01 -.334075E-02 .661558E-01 .328515E-01 .071755 .06477 aline .071755 .06985 aline .07239 .070485 aline .07239 .07366 aline .073025 .076835 aline .10795 .216535 aline .108585 .21971 aline .10922 .220345 aline .10922 .224155 aline .108585 .22479 aline .10795 .22606 aline .106045 .226695 aline .10287 .22733 aline .102235 .227965 aline .097155 .227965 aline .09652 .2286 aline .08128 .2286 aline .08001 .229235 aline .07874 .231775 aline .07874 .23241 aline .079375 .23495 aline .08001 .236855 aline .081915 .23876 aline .09144 .23876 closepath ! end of curve fill dfont endchar dfont char="V" !-------------- Beginning of new char. dfont wid=.743329 hei=.683332 dep=0 italic=.183611 dfont fby="A" kadd=-.102221 dfont fby="C" kadd=-.0255556 dfont fby="G" kadd=-.0255556 dfont fby="O" kadd=-.0255556 dfont fby="Q" kadd=-.0255556 dfont fby="a" kadd=-.0766659 dfont fby="e" kadd=-.0766659 dfont fby="o" kadd=-.0766659 dfont fby="r" kadd=-.0766659 dfont fby="u" kadd=-.0766659 set path ! start of curve newpath ! start of curve amove .08509 .23876 aline .085725 .238125 aline .108585 .238125 aline .10922 .23749 aline .12065 .23749 aline .121285 .238125 aline .14986 .238125 aline .150495 .23876 aline .15875 .23876 aline .160655 .236855 aline .160655 .233045 aline .16002 .230505 aline .158115 .2286 bezier .147773 .228727 .130221 .228936 .12954 .215265 bezier .136329 .154998 .141136 .939096E-01 .147955 .033655 bezier .18386 .930702E-01 .220093 .152461 .254635 .212725 bezier .25758 .223046 .246614 .22982 .23749 .2286 aline .23622 .229235 aline .23495 .231775 aline .23495 .23241 aline .235585 .23495 aline .23622 .236855 aline .238125 .23876 aline .24638 .23876 aline .247015 .238125 aline .26924 .238125 aline .269875 .23749 aline .278765 .23749 aline .2794 .238125 aline .296545 .238125 aline .29718 .23876 aline .30226 .23876 aline .304165 .236855 aline .304165 .23241 aline .30353 .230505 aline .301625 .2286 bezier .27584 .230169 .260848 .205426 .25019 .18542 bezier .210883 .121392 .174012 .551362E-01 .13335 -.00762 aline .13208 -.008255 aline .12573 -.008255 aline .12446 -.00762 bezier .120341 .100739E-02 .122371 .117771E-01 .120015 .020955 bezier .113596 .886851E-01 .107792 .156177 .099695 .22352 bezier .939231E-01 .231738 .821585E-01 .22619 .074295 .22987 aline .07366 .23114 aline .07366 .233045 aline .074295 .235585 aline .07493 .236855 aline .076835 .23876 aline .08509 .23876 closepath ! end of curve fill dfont endchar dfont char="W" !-------------- Beginning of new char. dfont wid=.998883 hei=.683332 dep=0 italic=.183611 dfont fby="A" kadd=-.0766659 set path ! start of curve newpath ! start of curve amove .084455 .23876 aline .08509 .238125 aline .10668 .238125 aline .107315 .23749 aline .118745 .23749 aline .11938 .238125 aline .147955 .238125 aline .14859 .23876 aline .15621 .23876 aline .15748 .238125 aline .158115 .23749 aline .15875 .23622 aline .15875 .234315 aline .158115 .231775 aline .156845 .229235 bezier .146363 .227746 .132289 .229747 .126365 .21844 bezier .129159 .159191 .131272 .996596E-01 .13462 .04064 bezier .163436 .913844E-01 .1904 .143464 .219075 .19431 aline .219075 .205105 aline .21844 .20574 aline .21844 .219075 bezier .217854 .230375 .204178 .228501 .19558 .2286 aline .193675 .230505 aline .193675 .234315 aline .19431 .23622 aline .194945 .23749 aline .19558 .238125 bezier .222142 .23833 .24933 .237144 .276225 .23876 aline .277495 .238125 aline .27813 .23749 aline .278765 .23622 aline .278765 .234315 aline .27813 .231775 aline .277495 .230505 aline .27559 .2286 bezier .265175 .228747 .252062 .228869 .24638 .21844 bezier .24912 .158957 .251277 .099232 .254635 .040005 bezier .285516 .978476E-01 .318761 .1549 .34798 .21336 bezier .348696 .225562 .334511 .228659 .32512 .229235 aline .32385 .231775 aline .32385 .233045 aline .324485 .235585 aline .32512 .236855 aline .327025 .23876 bezier .34933 .237591 .37188 .237907 .3937 .238125 aline .394335 .23749 aline .39497 .23622 aline .39497 .23368 aline .394335 .231775 aline .393065 .229235 bezier .373046 .229591 .35798 .213217 .35052 .19558 bezier .313102 .12833 .277317 .599019E-01 .239395 -.006985 aline .236855 -.008255 aline .230505 -.008255 aline .229235 -.00762 bezier .22522 .301442E-01 .225867 .688646E-01 .222885 .10668 bezier .22231 .129952 .22136 .153068 .21971 .175895 bezier .186035 .115102 .15373 .533215E-01 .11938 -.006985 aline .11684 -.008255 aline .11049 -.008255 aline .108585 -.00635 bezier .103911 .702083E-01 .10264 .147153 .097155 .22352 aline .09652 .225425 aline .095885 .22606 aline .094615 .226695 aline .092075 .22733 aline .09144 .227965 aline .08763 .227965 aline .086995 .2286 aline .075565 .2286 aline .07366 .230505 aline .07366 .234315 aline .074295 .23622 aline .07493 .23749 aline .075565 .238125 aline .076835 .23876 aline .084455 .23876 closepath ! end of curve fill dfont endchar dfont char="X" !-------------- Beginning of new char. dfont wid=.743329 hei=.683332 dep=0 italic=.158055 dfont fby="C" kadd=-.0255556 dfont fby="G" kadd=-.0255556 dfont fby="O" kadd=-.0255556 dfont fby="Q" kadd=-.0255556 set path ! start of curve newpath ! start of curve amove .090805 .23876 aline .09144 .238125 aline .114935 .238125 aline .11557 .23749 aline .127635 .23749 aline .12827 .238125 aline .156845 .238125 aline .15748 .23876 aline .165735 .23876 aline .167005 .238125 aline .168275 .235585 aline .168275 .23495 aline .16764 .23241 aline .167005 .230505 aline .1651 .2286 bezier .157028 .22874 .144119 .225458 .14224 .21717 bezier .151553 .19294 .159628 .168006 .169545 .144145 bezier .188674 .167465 .210997 .188482 .227965 .21336 aline .228997 .217487 aline .227965 .221615 aline .226695 .224155 aline .225425 .225425 aline .221615 .22733 aline .219075 .227965 aline .21844 .2286 aline .213995 .2286 aline .21209 .230505 aline .21209 .234315 aline .212725 .23622 aline .21336 .23749 aline .213995 .238125 bezier .238136 .238759 .262809 .236743 .28702 .23876 aline .28829 .238125 aline .288925 .23749 aline .28956 .23622 aline .28956 .23368 aline .288925 .231775 aline .287655 .229235 bezier .264553 .229059 .242685 .216104 .2286 .197485 bezier .209746 .176414 .191176 .155139 .172879 .133667 bezier .187518 .942275E-01 .201669 .545856E-01 .216535 .01524 bezier .223945 .681058E-02 .236006 .116491E-01 .24511 .008255 aline .245745 .006985 aline .245745 .004445 aline .24511 .001905 aline .244475 .000635 aline .24384 0 bezier .216205 -.239579E-03 .187958 .102149E-02 .16002 -.000635 aline .15875 0 aline .158115 .000635 aline .15748 .001905 aline .15748 .004445 aline .158115 .006985 aline .15875 .008255 bezier .166636 .011055 .179154 .105131E-01 .183277 .200025E-01 bezier .172858 .495712E-01 .162017 .793746E-01 .150813 .108426 bezier .127327 .081146 .101889 .546954E-01 .08001 .026035 bezier .746084E-01 .172209E-01 .843503E-01 .807313E-02 .093345 .009525 aline .09525 .00762 aline .09525 .003175 aline .094615 .00127 aline .09271 -.000635 bezier .680794E-01 .704466E-03 .043266 .178691E-04 .01905 0 aline .01778 .00254 aline .01778 .003175 aline .018415 .005715 aline .01905 .00762 aline .020955 .009525 bezier .526078E-01 .798421E-02 .751507E-01 .034648 .093345 .05715 bezier .11143 .777572E-01 .130213 .980048E-01 .147108 .11938 bezier .133539 .154345 .122458 .190715 .107315 .22479 aline .103505 .226695 aline .10033 .22733 aline .099695 .227965 aline .09525 .227965 aline .094615 .2286 aline .081915 .2286 aline .08001 .230505 aline .08001 .234315 aline .080645 .236855 aline .08255 .23876 aline .090805 .23876 closepath ! end of curve fill dfont endchar dfont char="Y" !-------------- Beginning of new char. dfont wid=.743329 hei=.683332 dep=0 italic=.193832 dfont fby="A" kadd=-.0766659 dfont fby="a" kadd=-.0766659 dfont fby="e" kadd=-.0766659 dfont fby="o" kadd=-.0766659 dfont fby="r" kadd=-.0766659 dfont fby="u" kadd=-.0766659 set path ! start of curve newpath ! start of curve amove .08255 .23876 aline .083185 .238125 aline .10668 .238125 aline .107315 .23749 aline .11938 .23749 aline .120015 .238125 aline .149225 .238125 aline .14986 .23876 aline .158115 .23876 aline .16002 .236855 aline .16002 .233045 aline .159385 .230505 bezier .151844 .225934 .139335 .231161 .13335 .22225 aline .132715 .221615 bezier .143151 .184283 .156256 .146682 .16764 .10922 bezier .195409 .144632 .226064 .177965 .252095 .21463 aline .25273 .216535 bezier .256832 .224771 .246348 .229701 .239395 .2286 aline .23749 .230505 aline .23749 .234315 aline .238125 .23622 aline .23876 .23749 aline .239395 .238125 bezier .261028 .23885 .283139 .23668 .3048 .23876 aline .306705 .236855 aline .306705 .233045 aline .30607 .230505 aline .304165 .2286 bezier .269783 .22923 .250793 .195133 .23114 .172085 bezier .209925 .1459 .18733 .120495 .16764 .093345 aline .150495 .024765 aline .149225 .018415 aline .14859 .01778 aline .14859 .01397 aline .149225 .013335 aline .14986 .012065 aline .151765 .01143 aline .15494 .010795 aline .155575 .01016 aline .160655 .01016 aline .16129 .009525 aline .17653 .009525 aline .178435 .00762 aline .178435 .003175 aline .1778 .00127 aline .175895 -.000635 bezier .145856 .103123E-02 .11552 -.246946E-03 .085725 0 aline .08509 .000635 aline .084455 .001905 aline .084455 .00381 aline .08509 .00635 aline .08636 .00889 bezier .985669E-01 .115426E-01 .117385 .516739E-02 .12192 .020955 aline .122555 .023495 aline .12319 .0254 aline .140335 .09398 bezier .127667 .137021 .113953 .181472 .09906 .224155 aline .09779 .225425 aline .09652 .22606 aline .094615 .226695 aline .092075 .22733 aline .09144 .227965 aline .086995 .227965 aline .08636 .2286 aline .07366 .2286 aline .07239 .229235 aline .07112 .231775 aline .07112 .23241 aline .071755 .23495 aline .07239 .236855 aline .074295 .23876 aline .08255 .23876 closepath ! end of curve fill dfont endchar dfont char="Z" !-------------- Beginning of new char. dfont wid=.61333 hei=.683332 dep=0 italic=.145277 set path ! start of curve newpath ! start of curve amove .245745 .23876 bezier .250364 .229679 .237352 .223317 .23368 .2159 bezier .176856 .147753 .117698 .788514E-01 .062865 .010795 aline .122555 .010795 bezier .146459 .118903E-01 .173998 .227137E-01 .18542 .046355 bezier .194229 .606754E-01 .196553 .786714E-01 .20447 .09271 aline .210185 .09271 aline .211455 .092075 aline .212725 .089535 bezier .203623 .596951E-01 .19492 .295062E-01 .184785 0 aline .183515 -.000635 aline .029845 -.000635 bezier .242695E-01 .520256E-02 .336873E-01 .121113E-01 .03683 .017145 bezier .959545E-01 .872157E-01 .154488 .157712 .21336 .227965 aline .212725 .2286 aline .15621 .2286 bezier .133636 .227383 .10822 .217039 .09652 .19558 bezier .09009 .184605 .866274E-01 .172188 .081915 .160655 aline .080645 .16002 aline .07493 .16002 aline .073025 .161925 bezier .788877E-01 .187535 .871711E-01 .213359 .095885 .238125 aline .097155 .23876 aline .245745 .23876 closepath ! end of curve fill dfont endchar dfont char="[" !-------------- Beginning of new char. dfont wid=.306665 hei=.75 dep=.25 italic=.1875 set path ! start of curve newpath ! start of curve amove .154305 .262255 aline .15621 .26035 aline .15621 .25654 aline .15494 .25146 aline .15367 .24892 aline .1524 .248285 aline .12319 .248285 aline .122555 .24638 aline .081915 .08382 aline .427831E-01 -.727075E-01 aline .04318 -.074295 aline .06985 -.074295 aline .07112 -.07493 aline .071755 -.075565 aline .07239 -.076835 aline .07239 -.07874 aline .070485 -.08636 aline .06858 -.088265 aline .027305 -.088265 aline .0254 -.08636 aline .0254 -.083185 aline .06604 .079375 aline .10668 .241935 aline .111125 .259715 aline .11176 .260985 aline .112395 .26162 aline .113665 .262255 aline .154305 .262255 closepath ! end of curve fill dfont endchar dfont char="\" !-------------- Beginning of new char. dfont wid=.514442 hei=.694445 dep=0 italic=.1685 set path ! start of curve newpath ! start of curve amove .149225 .24257 aline .15113 .240665 aline .15113 .236855 bezier .12902 .220205 .111272 .195284 .10668 .16764 bezier .115427 .179132 .139017 .174894 .13716 .15875 bezier .137716 .140628 .108021 .128246 .099695 .14732 bezier .931381E-01 .184798 .118151 .220805 .146685 .24257 aline .149225 .24257 closepath ! end of curve ! start of curve amove .212725 .24257 aline .21463 .240665 aline .21463 .236855 bezier .19252 .220205 .174772 .195284 .17018 .16764 bezier .178927 .179132 .202517 .174894 .20066 .15875 bezier .201216 .140628 .171521 .128246 .163195 .14732 bezier .156638 .184798 .181651 .220805 .210185 .24257 aline .212725 .24257 closepath ! end of curve fill dfont endchar dfont char="]" !-------------- Beginning of new char. dfont wid=.306665 hei=.75 dep=.25 italic=.105278 set path ! start of curve newpath ! start of curve amove .12446 .262255 aline .126365 .26035 aline .126365 .25654 aline .085725 .09398 aline .045085 -.06858 aline .04064 -.08636 aline .038735 -.088265 aline -.00254 -.088265 aline -.004445 -.08636 aline -.004445 -.083185 aline -.003175 -.078105 aline -.00254 -.0762 aline -.000635 -.074295 aline .028575 -.074295 aline .02921 -.073025 aline .06985 .089535 aline .10922 .247015 aline .109855 .24765 aline .10922 .248285 aline .081915 .248285 aline .080645 .24892 aline .079375 .25146 aline .079375 .252095 aline .08128 .259715 aline .081915 .260985 aline .08255 .26162 aline .08382 .262255 aline .12446 .262255 closepath ! end of curve fill dfont endchar dfont char="^" !-------------- Beginning of new char. dfont wid=.511108 hei=.694445 dep=0 italic=.0664597 set path ! start of curve newpath ! start of curve amove .15113 .24257 bezier .162666 .227735 .172101 .210621 .18288 .194945 aline .18288 .19177 aline .179705 .188595 bezier .172343 .184523 .170021 .196571 .1651 .200025 bezier .159195 .208236 .152837 .216122 .146685 .224155 bezier .130571 .212042 .115359 .197665 .098425 .187325 aline .097155 .18796 aline .094615 .1905 aline .09398 .19177 aline .09398 .194945 bezier .111981 .211101 .130224 .226921 .14859 .24257 closepath ! end of curve fill dfont endchar dfont char="_" !-------------- Beginning of new char. dfont wid=.306665 hei=.667859 dep=0 italic=.117521 set path ! start of curve newpath ! start of curve amove .114935 .234315 bezier .132457 .231065 .128787 .206426 .114935 .20066 bezier .103221 .192381 .848681E-01 .203262 .09017 .217805 bezier .928623E-01 .226061 .100038 .232566 .108585 .234315 closepath ! end of curve fill dfont endchar dfont char="`" !-------------- Beginning of new char. dfont wid=.306665 hei=.694445 dep=0 italic=.124168 set path ! start of curve newpath ! start of curve amove .12446 .24257 aline .126365 .240665 aline .126365 .236855 bezier .104255 .220205 .865072E-01 .195284 .081915 .16764 bezier .906625E-01 .179132 .114252 .174894 .112395 .15875 bezier .11295 .140628 .832564E-01 .128246 .07493 .14732 bezier .683731E-01 .184798 .933855E-01 .220805 .12192 .24257 aline .12446 .24257 closepath ! end of curve fill dfont endchar dfont char="a" !-------------- Beginning of new char. dfont wid=.511108 hei=.430555 dep=0 italic=.0767136 set path ! start of curve newpath ! start of curve amove .12319 .15367 bezier .134507 .151946 .143599 .143626 .147955 .13335 bezier .147697 .144763 .165694 .152714 .170815 .14097 aline .170815 .13462 aline .145415 .03302 bezier .143242 .231564E-01 .13916 .85486E-02 .150495 .00254 bezier .165864 .295029E-02 .169017 .022468 .173355 .03429 aline .17399 .03683 aline .174625 .038735 aline .177165 .048895 aline .1778 .0508 aline .179705 .052705 aline .18542 .052705 aline .18669 .05207 aline .18796 .0508 bezier .183573 .03046 .179479 .213027E-02 .15621 -.004445 bezier .140669 -.671904E-02 .125056 .457372E-02 .12319 .02032 bezier .108688 .618776E-04 .781251E-01 -.142973E-01 .056515 .00381 bezier .302045E-01 .279893E-01 .366312E-01 .687479E-01 .04953 .098425 bezier .621439E-01 .124088 .842985E-01 .149004 .113665 .15367 closepath ! end of curve ! start of curve amove .114935 .14605 bezier .886139E-01 .13753 .780718E-01 .108277 .07112 .08382 bezier .656612E-01 .587196E-01 .540808E-01 .325695E-01 .06858 .00889 bezier .815904E-01 -.572294E-02 .102391 .892982E-02 .11176 .020955 bezier .116799 .026301 .12077 .324166E-01 .12446 .038735 aline .142875 .112395 bezier .142645 .126354 .134094 .148986 .11557 .146685 closepath ! end of curve fill dfont endchar dfont char="b" !-------------- Beginning of new char. dfont wid=.459997 hei=.694445 dep=0 italic=.0631237 dfont fby="a" kadd=-.0511112 dfont fby="c" kadd=-.0511112 dfont fby="d" kadd=-.0511112 dfont fby="e" kadd=-.0511112 dfont fby="g" kadd=-.0511112 dfont fby="o" kadd=-.0511112 dfont fby="q" kadd=-.0511112 set path ! start of curve newpath ! start of curve amove .104775 .24257 aline .106045 .241935 aline .107315 .239395 aline .107315 .23876 aline .081915 .13716 aline .814388E-01 .136208 bezier .858944E-01 .13698 .914933E-01 .144779 .097155 .14732 bezier .120479 .16359 .153625 .147479 .15875 .12065 bezier .169798 .711377E-01 .14066 .102636E-01 .089535 -.00381 bezier .651047E-01 -.101292E-01 .420604E-01 .127088E-01 .04191 .03683 aline .041275 .037465 aline .041275 .043815 aline .04064 .04445 aline .04064 .052705 aline .041275 .05334 aline .041275 .060325 aline .04191 .06096 aline .04191 .06477 aline .043815 .074295 aline .079375 .216535 aline .08001 .21717 aline .08001 .220345 aline .080391 .22225 aline .08001 .224155 aline .079375 .22606 aline .07747 .226695 aline .07493 .22733 aline .074295 .227965 aline .06985 .227965 aline .069215 .2286 aline .056515 .2286 aline .05461 .230505 aline .05461 .234315 aline .055245 .236855 aline .05715 .23876 bezier .713523E-01 .23998 .857282E-01 .240781 .099695 .24257 closepath ! end of curve ! start of curve amove .1143 .14605 bezier .959669E-01 .141441 .832378E-01 .125033 .07493 .10922 aline .064135 .06604 bezier .594349E-01 .460217E-01 .552012E-01 .022363 .07112 .005715 bezier .898709E-01 -.484871E-02 .107087 .016344 .11557 .031115 bezier .127601 .540793E-01 .132602 .811883E-01 .137795 .10541 bezier .13847 .120254 .13812 .140445 .12192 .146685 aline .114935 .146685 closepath ! end of curve fill dfont endchar dfont char="c" !-------------- Beginning of new char. dfont wid=.459997 hei=.430555 dep=0 italic=.0565281 dfont fby="a" kadd=-.0511112 dfont fby="c" kadd=-.0511112 dfont fby="d" kadd=-.0511112 dfont fby="e" kadd=-.0511112 dfont fby="g" kadd=-.0511112 dfont fby="o" kadd=-.0511112 dfont fby="q" kadd=-.0511112 set path ! start of curve newpath ! start of curve amove .13335 .15367 bezier .151534 .153146 .170193 .136041 .164465 .11684 bezier .162998 .10362 .140649 .965328E-01 .13589 .111125 bezier .133521 .122068 .143558 .131554 .15367 .131445 bezier .143375 .153199 .113227 .14901 .09906 .13335 bezier .749308E-01 .111599 .683404E-01 .075656 .062865 .04572 bezier .612618E-01 .286789E-01 .673111E-01 .657775E-02 .08636 .00254 bezier .114959 .126051E-02 .141648 .191003E-01 .158115 .041275 aline .160655 .041275 aline .164465 .037465 bezier .162348 .251702E-01 .148982 .176004E-01 .1397 .01016 bezier .112258 -.769784E-02 .689081E-01 -.134146E-01 .04826 .017145 bezier .017256 .736214E-01 .687584E-01 .155752 .13335 .15367 closepath ! end of curve fill dfont endchar dfont char="d" !-------------- Beginning of new char. dfont wid=.511108 hei=.694445 dep=0 italic=.103334 dfont fby="l" kadd=.0511112 set path ! start of curve newpath ! start of curve amove .19431 .24257 aline .19558 .241935 aline .19685 .239395 aline .19685 .23876 aline .15621 .0762 aline .145415 .03302 bezier .143242 .231564E-01 .13916 .85486E-02 .150495 .00254 bezier .165864 .295029E-02 .169017 .022468 .173355 .03429 aline .17399 .03683 aline .174625 .038735 aline .177165 .048895 aline .1778 .0508 aline .179705 .052705 aline .18542 .052705 aline .18669 .05207 aline .18796 .0508 bezier .183573 .03046 .179479 .213027E-02 .15621 -.004445 bezier .140669 -.671904E-02 .125056 .457372E-02 .12319 .02032 bezier .108688 .618776E-04 .781251E-01 -.142973E-01 .056515 .00381 bezier .302045E-01 .279893E-01 .366312E-01 .687479E-01 .04953 .098425 bezier .637811E-01 .127357 .092849 .159414 .12827 .1524 bezier .137321 .149341 .144185 .141973 .147955 .13335 aline .14859 .135255 aline .16891 .216535 aline .169545 .21717 aline .169545 .220345 aline .169926 .22225 aline .169545 .224155 aline .16891 .22606 aline .167005 .226695 aline .164465 .22733 aline .16383 .227965 aline .159385 .227965 aline .15875 .2286 aline .14605 .2286 aline .144145 .230505 aline .144145 .234315 aline .14478 .236855 aline .146685 .23876 bezier .160887 .23998 .175263 .240781 .18923 .24257 closepath ! end of curve ! start of curve amove .114935 .14605 bezier .886139E-01 .13753 .780718E-01 .108277 .07112 .08382 bezier .656612E-01 .587196E-01 .540808E-01 .325695E-01 .06858 .00889 bezier .815904E-01 -.572294E-02 .102391 .892982E-02 .11176 .020955 bezier .116799 .026301 .12077 .324166E-01 .12446 .038735 aline .142875 .112395 bezier .142645 .126354 .134094 .148986 .11557 .146685 closepath ! end of curve fill dfont endchar dfont char="e" !-------------- Beginning of new char. dfont wid=.459997 hei=.430555 dep=0 italic=.075139 dfont fby="a" kadd=-.0511112 dfont fby="c" kadd=-.0511112 dfont fby="d" kadd=-.0511112 dfont fby="e" kadd=-.0511112 dfont fby="g" kadd=-.0511112 dfont fby="o" kadd=-.0511112 dfont fby="q" kadd=-.0511112 set path ! start of curve newpath ! start of curve amove .13335 .15367 bezier .152738 .152687 .168217 .132895 .16129 .1143 bezier .152602 .862043E-01 .118583 .821698E-01 .094615 .080645 aline .070485 .080645 bezier .640612E-01 .566061E-01 .574371E-01 .272183E-01 .076835 .006985 bezier .953165E-01 -.387674E-02 .117887 .764308E-02 .13462 .01778 bezier .143881 .241006E-01 .150737 .332635E-01 .158115 .041275 aline .160655 .041275 aline .164465 .037465 bezier .162348 .251702E-01 .148982 .176004E-01 .1397 .01016 bezier .113793 -.626996E-02 .735947E-01 -.138179E-01 .052705 .01397 bezier .333184E-01 .438594E-01 .381703E-01 .838758E-01 .056515 .11303 bezier .073826 .137411 .1026 .155927 .13335 .15367 closepath ! end of curve ! start of curve amove .122555 .14605 bezier .944853E-01 .141218 .776973E-01 .112506 .07239 .08763 bezier .969015E-01 .880584E-01 .123927 .874807E-01 .142875 .106045 bezier .154499 .118586 .151355 .143568 .13208 .14605 aline .131445 .146685 aline .12319 .146685 closepath ! end of curve fill dfont endchar dfont char="f" !-------------- Beginning of new char. dfont wid=.306665 hei=.694445 dep=.194445 italic=.211945 dfont fby=33 kadd=.104306 dfont fby=39 kadd=.104306 dfont fby=")" kadd=.104306 dfont fby="?" kadd=.104306 dfont fby="]" kadd=.104306 dfont fby="f" ligrep=11 dfont fby="i" ligrep=12 dfont fby="l" ligrep=13 set path ! start of curve newpath ! start of curve amove .13462 .24638 bezier .149797 .24548 .162726 .231238 .15748 .2159 bezier .154095 .204184 .134165 .19901 .12954 .21209 bezier .127418 .222301 .135159 .231064 .14478 .233045 bezier .136756 .242317 .1217 .240983 .11684 .229235 bezier .108154 .203542 .104036 .175843 .099695 .14986 aline .132715 .14986 aline .133985 .149225 aline .135255 .146685 aline .135255 .14605 aline .13462 .14351 aline .133985 .141605 aline .13208 .1397 aline .097155 .1397 bezier .916896E-01 .111129 .858919E-01 .820016E-01 .080645 .05334 aline .07366 .018415 bezier .654126E-01 -.135315E-01 .060745 -.531401E-01 .029845 -.07112 bezier .125868E-01 -.786523E-01 -.131117E-01 -.661508E-01 -.008255 -.045085 bezier -.681984E-02 -.318172E-01 .151563E-01 -.246385E-01 .02032 -.038735 bezier .224424E-01 -.489461E-01 .147011E-01 -.057709 .00508 -.05969 bezier .123029E-01 -.682706E-01 .269809E-01 -.682926E-01 .03175 -.05715 bezier .477957E-01 -.163647E-01 .525536E-01 .285572E-01 .061595 .070485 bezier .657428E-01 .936714E-01 .715674E-01 .116668 .074295 .1397 aline .04699 .1397 aline .045085 .141605 aline .045085 .145415 aline .04572 .147955 aline .047625 .14986 aline .076835 .14986 bezier .845602E-01 .178735 .832739E-01 .213566 .10541 .23622 aline .10668 .236855 aline .108585 .23876 aline .109855 .239395 aline .111125 .240665 aline .113665 .241935 aline .1143 .24257 aline .11684 .24384 aline .122555 .245745 aline .12573 .24638 closepath ! end of curve fill dfont endchar dfont char="g" !-------------- Beginning of new char. dfont wid=.459997 hei=.430555 dep=.194445 italic=.0884724 set path ! start of curve newpath ! start of curve amove .12319 .15367 bezier .13416 .151917 .143528 .143993 .147955 .133985 bezier .148303 .145027 .165806 .152497 .170815 .14097 aline .170815 .13462 aline .130175 -.02794 bezier .118438 -.623239E-01 .777265E-01 -.790822E-01 .04445 -.071755 bezier .310144E-01 -.724984E-01 .143716E-01 -.622431E-01 .01905 -.047625 bezier .206078E-01 -.343652E-01 .433792E-01 -.028012 .047625 -.042545 aline .047625 -.04826 aline .04699 -.0508 aline .045085 -.05461 aline .040005 -.05969 aline .037465 -.06096 aline .03556 -.061595 bezier .575853E-01 -.071222 .871784E-01 -.660056E-01 .099695 -.04318 aline .10033 -.042545 aline .100965 -.041275 aline .1016 -.04064 aline .106045 -.03175 aline .10668 -.029845 aline .107315 -.028575 aline .108585 -.024765 aline .118745 .015875 aline .119221 .168275E-01 bezier .1147 .015374 .10853 .752016E-02 .102235 .00508 bezier .777023E-01 -.111932E-01 .440413E-01 .808168E-02 .04064 .036195 bezier .325199E-01 .837153E-01 .610328E-01 .139995 .109855 .153035 aline .11303 .153035 aline .113665 .15367 closepath ! end of curve ! start of curve amove .114935 .14605 bezier .821335E-01 .135052 .743066E-01 .960579E-01 .066675 .06604 bezier .622469E-01 .474738E-01 .575896E-01 .252829E-01 .07239 .009525 bezier .906457E-01 -.409586E-03 .109245 .184603E-01 .11938 .032385 aline .120015 .033655 aline .12065 .03429 aline .121285 .03556 aline .12192 .036195 aline .122555 .037465 aline .12319 .0381 aline .123825 .03937 aline .12446 .040005 aline .125095 .041275 aline .142875 .112395 bezier .143317 .127501 .13368 .148721 .11557 .146685 closepath ! end of curve fill dfont endchar dfont char="h" !-------------- Beginning of new char. dfont wid=.511108 hei=.694445 dep=0 italic=.0767136 set path ! start of curve newpath ! start of curve amove .104775 .24257 aline .106045 .241935 aline .107315 .239395 aline .107315 .23876 aline .808831E-01 .133033 aline .08128 .131445 bezier .991731E-01 .153871 .138772 .16442 .15875 .1397 bezier .172721 .108936 .154132 .761111E-01 .145415 .04572 bezier .141456 .322226E-01 .131632 .174486E-01 .138853 .423333E-02 bezier .154305 -.218476E-02 .165972 .165403E-01 .170815 .02921 aline .17145 .031115 aline .172085 .032385 aline .17526 .04191 aline .175895 .04445 aline .17653 .046355 aline .177165 .048895 aline .1778 .0508 aline .179705 .052705 aline .18542 .052705 aline .18669 .05207 aline .18796 .0508 bezier .183784 .263792E-01 .168888 -.623291E-02 .1397 -.004445 bezier .117482 -.215228E-02 .112593 .025123 .121285 .04191 bezier .130574 .713583E-01 .145247 .1017 .142875 .13208 bezier .141177 .141647 .13151 .149658 .12192 .14605 bezier .965041E-01 .142808 .810925E-01 .118371 .071755 .09652 aline .048895 .00508 bezier .470278E-01 -.629919E-02 .262627E-01 -.869947E-02 .02667 .00508 aline .027305 .008255 aline .067945 .170815 aline .079375 .216535 aline .08001 .21717 aline .08001 .220345 aline .080391 .22225 aline .08001 .224155 aline .079375 .22606 aline .07747 .226695 aline .07493 .22733 aline .074295 .227965 aline .06985 .227965 aline .069215 .2286 aline .056515 .2286 aline .05461 .230505 aline .05461 .234315 aline .055245 .236855 aline .05715 .23876 bezier .713523E-01 .23998 .857282E-01 .240781 .099695 .24257 closepath ! end of curve ! start of curve amove .080645 .13081 aline .08128 .131445 aline .080645 .13208 aline .08001 .131445 aline .080645 .13081 closepath ! end of curve fill dfont endchar dfont char="i" !-------------- Beginning of new char. dfont wid=.306665 hei=.655359 dep=0 italic=.101896 set path ! start of curve newpath ! start of curve amove .10541 .22987 bezier .12121 .226559 .114239 .202899 .10033 .20193 bezier .086277 .198505 .806853E-01 .218137 .09144 .225425 aline .09271 .22606 aline .09398 .22733 aline .09779 .229235 aline .10033 .22987 closepath ! end of curve ! start of curve amove .078105 .15367 bezier .989184E-01 .151163 .104837 .126361 .097155 .109855 bezier .867987E-01 .769781E-01 .697906E-01 .448971E-01 .064135 .01143 aline .06477 .010795 bezier .649366E-01 -.600005E-03 .782985E-01 .184865E-02 .084455 .006985 bezier .098338 .184456E-01 .100418 .377757E-01 .10795 .052705 aline .113665 .052705 aline .114935 .05207 aline .116205 .0508 bezier .112029 .263792E-01 .971334E-01 -.623283E-02 .067945 -.004445 bezier .457265E-01 -.215228E-02 .408384E-01 .251231E-01 .04953 .04191 bezier .597011E-01 .717978E-01 .728131E-01 .101583 .08128 .131445 aline .08128 .140335 bezier .764568E-01 .153452 .590603E-01 .143402 .05461 .13462 bezier .461901E-01 .123783 .438237E-01 .1095 .038735 .097155 aline .037465 .09652 aline .03175 .09652 aline .031115 .097155 bezier .274723E-01 .104153 .342159E-01 .113707 .036195 .121285 bezier .427564E-01 .135735 .530791E-01 .15078 .06985 .15367 closepath ! end of curve fill dfont endchar dfont char="j" !-------------- Beginning of new char. dfont wid=.306665 hei=.655359 dep=.194445 italic=.144673 set path ! start of curve newpath ! start of curve amove .116205 .22987 bezier .130091 .226725 .12638 .207124 .114935 .2032 aline .111125 .20193 aline .10541 .20193 bezier .893924E-01 .20589 .973805E-01 .229104 .111125 .22987 closepath ! end of curve ! start of curve amove .086995 .15367 bezier .107105 .151762 .116313 .128919 .111125 .11176 aline .07747 -.02286 bezier .686376E-01 -.558862E-01 .282055E-01 -.857976E-01 -.004445 -.06731 bezier -.193552E-01 -.574638E-01 -.102256E-01 -.310719E-01 .008255 -.03429 bezier .239733E-01 -.377535E-01 .167241E-01 -.608923E-01 .003175 -.06223 bezier .232246E-01 -.746986E-01 .434714E-01 -.535008E-01 .050165 -.03556 aline .051435 -.03302 aline .05207 -.031115 aline .052705 -.029845 aline .055245 -.022225 aline .09017 .117475 bezier .921826E-01 .126356 .954191E-01 .140915 .08509 .146685 bezier .586822E-01 .146668 .481432E-01 .117395 .038735 .097155 aline .037465 .09652 aline .03175 .09652 aline .031115 .097155 aline .029845 .09779 bezier .339876E-01 .11917 .481695E-01 .139742 .06731 .150495 aline .069215 .15113 aline .070485 .151765 aline .07239 .1524 aline .07493 .153035 aline .078105 .15367 aline .086995 .15367 closepath ! end of curve fill dfont endchar dfont char="k" !-------------- Beginning of new char. dfont wid=.459997 hei=.694445 dep=0 italic=.107638 set path ! start of curve newpath ! start of curve amove .104775 .24257 aline .106045 .241935 aline .107315 .239395 aline .107315 .23876 aline .707231E-01 .923925E-01 aline .710293E-01 .911679E-01 bezier .101701 .105295 .114093 .147094 .14986 .15367 bezier .163845 .156899 .179824 .14427 .175895 .130175 bezier .178011 .115139 .151981 .106088 .14732 .12192 aline .14732 .127635 aline .147955 .130175 aline .14986 .133985 aline .15494 .139065 aline .15748 .140335 aline .162814 .142113 bezier .155776 .151853 .140562 .143863 .13208 .13843 bezier .112987 .123024 .998081E-01 .100754 .795337E-01 .866775E-01 bezier .970069E-01 .833651E-01 .121566 .768021E-01 .12573 .05588 bezier .128417 .038065 .114692 .206064E-01 .125095 .004445 bezier .138543 -.293582E-02 .148662 .135347E-01 .1524 .024765 aline .15494 .032385 aline .155575 .034925 aline .15621 .03683 aline .156845 .03937 aline .15748 .041275 aline .159385 .048895 aline .16002 .0508 aline .161925 .052705 aline .16764 .052705 aline .16891 .05207 aline .17018 .0508 bezier .165899 .295207E-01 .158822 .100732E-02 .13462 -.004445 bezier .113361 -.818728E-02 .974911E-01 .148977E-01 .102235 .033655 bezier .103306 .446626E-01 .10742 .573354E-01 .09779 .06604 bezier .909513E-01 .744638E-01 .767337E-01 .796474E-01 .06731 .07874 aline .048895 .00508 bezier .470278E-01 -.629919E-02 .262627E-01 -.869947E-02 .02667 .00508 aline .027305 .008255 aline .067945 .170815 aline .079375 .216535 aline .08001 .21717 aline .08001 .220345 aline .080391 .22225 aline .08001 .224155 aline .079375 .22606 aline .07747 .226695 aline .07493 .22733 aline .074295 .227965 aline .06985 .227965 aline .069215 .2286 aline .056515 .2286 aline .05461 .230505 aline .05461 .234315 aline .055245 .236855 aline .05715 .23876 bezier .731098E-01 .239825 .887556E-01 .241649 .104775 .24257 closepath ! end of curve ! start of curve amove .070485 .09017 aline .07112 .090805 aline .070485 .09144 aline .06985 .090805 aline .070485 .09017 closepath ! end of curve fill dfont endchar dfont char="l" !-------------- Beginning of new char. dfont wid=.255554 hei=.694445 dep=0 italic=.103334 dfont fby="l" kadd=.0511112 set path ! start of curve newpath ! start of curve amove .104775 .24257 aline .106045 .241935 aline .107315 .239395 aline .107315 .23876 aline .066675 .0762 aline .05588 .03302 bezier .537068E-01 .231564E-01 .049625 .85486E-02 .06096 .00254 bezier .760557E-01 .321738E-02 .790175E-01 .225657E-01 .083185 .03429 aline .08382 .036195 aline .086995 .048895 aline .08763 .0508 aline .089535 .052705 aline .09525 .052705 aline .09652 .05207 aline .09779 .0508 bezier .934472E-01 .306123E-01 .896069E-01 .227328E-02 .066675 -.004445 bezier .458572E-01 -.812466E-02 .285585E-01 .136921E-01 .03429 .03302 aline .03429 .036195 aline .07493 .198755 aline .079375 .216535 aline .08001 .21717 aline .08001 .220345 aline .080391 .22225 aline .08001 .224155 aline .079375 .22606 aline .07747 .226695 aline .07493 .22733 aline .074295 .227965 aline .06985 .227965 aline .069215 .2286 aline .056515 .2286 aline .05461 .230505 aline .05461 .234315 aline .055245 .236855 aline .05715 .23876 bezier .713523E-01 .23998 .857282E-01 .240781 .099695 .24257 closepath ! end of curve fill dfont endchar dfont char="m" !-------------- Beginning of new char. dfont wid=.817774 hei=.430555 dep=0 italic=.0767136 set path ! start of curve newpath ! start of curve amove .069215 .15367 bezier .833153E-01 .152367 .940021E-01 .139142 .094615 .12573 bezier .111144 .150552 .149538 .164836 .17399 .14351 bezier .179656 .138188 .180631 .129696 .18288 .12319 bezier .198902 .149824 .240047 .166298 .264795 .14224 bezier .281237 .115493 .264982 .841825E-01 .257175 .056515 bezier .252882 .396797E-01 .239607 .217834E-01 .24638 .00508 bezier .256722 -.002646 .27014 .103963E-01 .27432 .02032 bezier .281082 .299799E-01 .281645 .430237E-01 .287655 .052705 aline .29337 .052705 aline .29464 .05207 aline .29591 .0508 bezier .291734 .263792E-01 .276838 -.623285E-02 .24765 -.004445 bezier .225431 -.215226E-02 .220543 .251231E-01 .229235 .04191 bezier .238524 .713583E-01 .253197 .1017 .250825 .13208 bezier .249127 .141647 .23946 .149658 .22987 .14605 bezier .204454 .142808 .189042 .118371 .179705 .09652 aline .156845 .00508 bezier .155103 -.633444E-02 .133929 -.869333E-02 .13462 .00508 aline .135255 .008255 aline .15875 .102235 bezier .161984 .116125 .165921 .134305 .153035 .14478 bezier .128677 .152652 .106478 .130052 .095885 .109855 aline .09017 .098425 aline .089535 .09652 aline .066675 .00508 bezier .649329E-01 -.633444E-02 .437594E-01 -.869333E-02 .04445 .00508 aline .045085 .008255 aline .07239 .117475 bezier .744026E-01 .126356 .776391E-01 .140915 .06731 .146685 bezier .051382 .146278 .481593E-01 .125941 .043815 .113665 aline .04318 .11176 aline .040005 .09906 aline .03937 .09779 aline .038735 .097155 aline .037465 .09652 aline .03175 .09652 aline .031115 .097155 aline .029845 .09779 bezier .331115E-01 .117909 .377613E-01 .14403 .05842 .153035 aline .061595 .15367 closepath ! end of curve fill dfont endchar dfont char="n" !-------------- Beginning of new char. dfont wid=.56222 hei=.430555 dep=0 italic=.0767136 dfont fby=39 kadd=-.102221 set path ! start of curve newpath ! start of curve amove .069215 .15367 bezier .833153E-01 .152367 .940021E-01 .139142 .094615 .12573 bezier .111006 .151033 .150961 .165367 .174625 .14224 bezier .191067 .115493 .174812 .841825E-01 .167005 .056515 bezier .162712 .396797E-01 .149437 .217834E-01 .15621 .00508 bezier .166552 -.264599E-02 .17997 .103963E-01 .18415 .02032 bezier .190912 .299799E-01 .191475 .430237E-01 .197485 .052705 aline .2032 .052705 aline .20447 .05207 aline .20574 .0508 bezier .201564 .263792E-01 .186668 -.623288E-02 .15748 -.004445 bezier .135261 -.215226E-02 .130373 .251231E-01 .139065 .04191 bezier .148354 .713583E-01 .163027 .1017 .160655 .13208 bezier .158957 .141647 .14929 .149658 .1397 .14605 bezier .114284 .142808 .988725E-01 .118371 .089535 .09652 aline .066675 .00508 bezier .649329E-01 -.633444E-02 .437594E-01 -.869333E-02 .04445 .00508 aline .045085 .008255 aline .07239 .117475 bezier .744026E-01 .126356 .776391E-01 .140915 .06731 .146685 bezier .051382 .146278 .481593E-01 .125941 .043815 .113665 aline .04318 .11176 aline .040005 .09906 aline .03937 .09779 aline .038735 .097155 aline .037465 .09652 aline .03175 .09652 aline .031115 .097155 aline .029845 .09779 bezier .331115E-01 .117909 .377613E-01 .14403 .05842 .153035 aline .061595 .15367 closepath ! end of curve fill dfont endchar dfont char="o" !-------------- Beginning of new char. dfont wid=.511108 hei=.430555 dep=0 italic=.0631237 dfont fby="a" kadd=-.0511112 dfont fby="c" kadd=-.0511112 dfont fby="d" kadd=-.0511112 dfont fby="e" kadd=-.0511112 dfont fby="g" kadd=-.0511112 dfont fby="o" kadd=-.0511112 dfont fby="q" kadd=-.0511112 set path ! start of curve newpath ! start of curve amove .13335 .15367 bezier .158232 .151944 .177464 .1279 .178435 .10414 bezier .182596 .516754E-01 .139254 -.644742E-02 .08382 -.004445 bezier .539462E-01 -.220101E-02 .348975E-01 .304661E-01 .03937 .057785 bezier .411924E-01 .105926 .829367E-01 .155586 .13335 .15367 closepath ! end of curve ! start of curve amove .12319 .14605 bezier .081626 .136 .709973E-01 .872698E-01 .0635 .051435 bezier .606182E-01 .332844E-01 .648569E-01 .71957E-02 .08636 .00254 bezier .121037 .299724E-02 .139792 .393968E-01 .14732 .069215 bezier .153105 .916979E-01 .160447 .115888 .146685 .13716 aline .141605 .14224 aline .136525 .14478 aline .13462 .145415 aline .13208 .14605 aline .131445 .146685 aline .123825 .146685 closepath ! end of curve fill dfont endchar dfont char="p" !-------------- Beginning of new char. dfont wid=.511108 hei=.430555 dep=.194445 italic=.0631237 dfont fby="a" kadd=-.0511112 dfont fby="c" kadd=-.0511112 dfont fby="d" kadd=-.0511112 dfont fby="e" kadd=-.0511112 dfont fby="g" kadd=-.0511112 dfont fby="o" kadd=-.0511112 dfont fby="q" kadd=-.0511112 set path ! start of curve newpath ! start of curve amove .069215 .15367 bezier .818925E-01 .152464 .918986E-01 .141577 .942975E-01 .129699 bezier .108871 .147444 .136362 .163075 .158115 .14732 bezier .183145 .129747 .181701 .947836E-01 .174625 .06858 bezier .163874 .328982E-01 .134868 -.498079E-02 .094615 -.004445 bezier .829824E-01 -.357652E-02 .747301E-01 .676142E-02 .691243E-01 .148771E-01 aline .05334 -.04826 aline .052705 -.048895 aline .052705 -.05207 aline .523081E-01 -.536575E-01 bezier .567819E-01 -.629046E-01 .702934E-01 -.563667E-01 .078105 -.060325 aline .07874 -.061595 aline .07874 -.0635 aline .078105 -.06604 aline .076835 -.06858 bezier .053735 -.06921 .301601E-01 -.672368E-01 .006985 -.069215 aline .00508 -.06731 aline .00508 -.064135 aline .005715 -.061595 bezier .113697E-01 -.555165E-01 .230396E-01 -.625134E-01 .028575 -.05461 aline .029845 -.05207 aline .03048 -.050165 aline .07112 .112395 bezier .737394E-01 .122702 .774986E-01 .135073 .070485 .14478 bezier .593862E-01 .15173 .515055E-01 .136512 .04826 .127635 aline .04445 .116205 aline .043815 .113665 aline .04318 .11176 aline .040005 .09906 aline .03937 .09779 aline .038735 .097155 aline .037465 .09652 aline .03175 .09652 aline .031115 .097155 aline .029845 .09779 bezier .331115E-01 .117909 .377613E-01 .14403 .05842 .153035 aline .061595 .15367 closepath ! end of curve ! start of curve amove .13208 .14605 bezier .113747 .141441 .101018 .125033 .09271 .10922 aline .07493 .0381 bezier .738647E-01 .234129E-01 .834076E-01 .103746E-03 .102235 .00254 bezier .135898 .152653E-01 .14386 .554554E-01 .151765 .086995 bezier .156185 .105228 .159997 .127852 .14605 .14351 aline .14224 .145415 aline .140335 .14605 aline .1397 .146685 aline .132715 .146685 closepath ! end of curve fill dfont endchar dfont char="q" !-------------- Beginning of new char. dfont wid=.459997 hei=.430555 dep=.194445 italic=.0884724 set path ! start of curve newpath ! start of curve amove .12319 .15367 bezier .135588 .151993 .144242 .142116 .149225 .131445 bezier .155363 .139714 .161894 .150838 .172085 .15367 aline .173355 .153035 aline .174625 .150495 aline .174625 .14986 aline .133985 -.0127 aline .125095 -.04826 aline .12446 -.048895 aline .12446 -.05207 aline .124063 -.536575E-01 bezier .128537 -.629046E-01 .142048 -.563667E-01 .14986 -.060325 aline .150495 -.061595 aline .150495 -.0635 aline .14986 -.06604 aline .14859 -.06858 bezier .123207 -.689917E-01 .973243E-01 -.673895E-01 .071755 -.069215 aline .070485 -.06858 aline .069215 -.06604 aline .069215 -.065405 aline .06985 -.062865 aline .070485 -.06096 aline .07239 -.059055 bezier .832459E-01 -.585449E-01 .099952 -.616993E-01 .10287 -.047625 aline .117872 .123825E-01 aline .117475 .01397 bezier .102842 -.311917E-02 .075202 -.120294E-01 .056515 .00381 bezier .302045E-01 .279893E-01 .366312E-01 .687479E-01 .04953 .098425 bezier .621439E-01 .124088 .842985E-01 .149004 .113665 .15367 closepath ! end of curve ! start of curve amove .114935 .14605 bezier .886139E-01 .13753 .780718E-01 .108277 .07112 .08382 bezier .656612E-01 .587196E-01 .540808E-01 .325695E-01 .06858 .00889 bezier .815904E-01 -.572294E-02 .102391 .892982E-02 .11176 .020955 bezier .116799 .026301 .12077 .324166E-01 .12446 .038735 aline .142875 .112395 bezier .142645 .126354 .134094 .148986 .11557 .146685 closepath ! end of curve ! start of curve amove .117475 .01397 aline .11811 .013335 aline .118745 .01397 aline .11811 .014605 aline .117475 .01397 closepath ! end of curve fill dfont endchar dfont char="r" !-------------- Beginning of new char. dfont wid=.421664 hei=.430555 dep=0 italic=.107638 dfont fby="a" kadd=-.0511112 dfont fby="c" kadd=-.0511112 dfont fby="d" kadd=-.0511112 dfont fby="e" kadd=-.0511112 dfont fby="g" kadd=-.0511112 dfont fby="o" kadd=-.0511112 dfont fby="q" kadd=-.0511112 set path ! start of curve newpath ! start of curve amove .069215 .15367 bezier .823299E-01 .152474 .920479E-01 .141045 .094615 .128905 bezier .108696 .152195 .140571 .161594 .16383 .146685 bezier .178863 .136904 .169564 .110432 .15113 .113665 bezier .13562 .11708 .142475 .139543 .155575 .141605 bezier .135639 .154644 .110566 .140996 .100965 .121285 aline .10033 .12065 aline .09906 .11811 aline .098425 .117475 aline .09144 .103505 aline .090805 .1016 aline .066675 .00508 bezier .649329E-01 -.633444E-02 .437594E-01 -.869333E-02 .04445 .00508 aline .045085 .008255 aline .07239 .117475 bezier .744026E-01 .126356 .776391E-01 .140915 .06731 .146685 bezier .051382 .146278 .481593E-01 .125941 .043815 .113665 aline .04318 .11176 aline .040005 .09906 aline .03937 .09779 aline .038735 .097155 aline .037465 .09652 aline .03175 .09652 aline .031115 .097155 aline .029845 .09779 bezier .331115E-01 .117909 .377613E-01 .14403 .05842 .153035 aline .061595 .15367 closepath ! end of curve fill dfont endchar dfont char="s" !-------------- Beginning of new char. dfont wid=.408887 hei=.430555 dep=0 italic=.0820827 set path ! start of curve newpath ! start of curve amove .11557 .15367 bezier .133544 .152934 .151598 .135731 .14605 .11684 aline .145415 .1143 aline .144145 .11176 aline .1397 .107315 aline .13716 .106045 aline .135255 .10541 aline .12827 .10541 bezier .115863 .110153 .123086 .128564 .13462 .128905 bezier .135885 .135777 .126009 .144035 .11811 .145415 bezier .100175 .151028 .779168E-01 .139351 .074295 .11938 bezier .697835E-01 .106413 .821213E-01 .940843E-01 .09525 .09398 bezier .115392 .920645E-01 .137112 .789687E-01 .137795 .05715 bezier .139545 .249455E-01 .110554 -.338336E-02 .079375 -.004445 bezier .059373 -.623204E-02 .331566E-01 .710788E-04 .027305 .022225 bezier .249954E-01 .330662E-01 .282926E-01 .489046E-01 .04191 .0508 bezier .512553E-01 .529637E-01 .588393E-01 .437912E-01 .05588 .03556 bezier .543528E-01 .271039E-01 .450707E-01 .230425E-01 .382587E-01 .219075E-01 bezier .538287E-01 -.103243E-01 .108808 -.382236E-03 .11684 .033655 bezier .123733 .503576E-01 .107949 .067179 .090805 .06731 bezier .729959E-01 .687417E-01 .543253E-01 .806237E-01 .053975 .099695 bezier .528327E-01 .126854 .756771E-01 .152305 .10287 .15367 aline .11557 .15367 closepath ! end of curve fill dfont endchar dfont char="t" !-------------- Beginning of new char. dfont wid=.33222 hei=.61508 dep=0 italic=.094861 set path ! start of curve newpath ! start of curve amove .1016 .21844 aline .103505 .217805 aline .104775 .21717 aline .107315 .21463 aline .10795 .21336 aline .108585 .21082 aline .108585 .208915 aline .10795 .20574 aline .094615 .1524 aline .941917E-01 .15113 aline .094615 .14986 aline .128905 .14986 aline .13081 .147955 aline .13081 .14478 aline .130175 .14224 aline .12954 .14097 aline .128905 .140335 aline .127635 .1397 aline .09144 .1397 aline .06477 .03302 bezier .625968E-01 .231564E-01 .058515 .85486E-02 .06985 .00254 bezier .953333E-01 .279394E-02 .106409 .305799E-01 .114935 .0508 aline .11684 .052705 aline .122555 .052705 aline .123825 .05207 aline .125095 .0508 bezier .118681 .268674E-01 .102265 .778853E-03 .0762 -.004445 bezier .602892E-01 -.692066E-02 .439733E-01 .463265E-02 .042545 .020955 aline .042545 .032385 aline .04318 .03302 aline .04318 .036195 aline .06858 .137795 aline .690563E-01 .138747 aline .06858 .1397 aline .03429 .1397 aline .032385 .141605 aline .032385 .145415 aline .03302 .14732 aline .033655 .14859 aline .03429 .149225 aline .03556 .14986 aline .07112 .14986 aline .071755 .150495 aline .08636 .208915 aline .086995 .21082 aline .08763 .21209 aline .088265 .212725 aline .0889 .213995 aline .089535 .21463 aline .090805 .215265 aline .092075 .216535 aline .094615 .217805 aline .09652 .21844 aline .1016 .21844 closepath ! end of curve fill dfont endchar dfont char="u" !-------------- Beginning of new char. dfont wid=.536664 hei=.430555 dep=0 italic=.0767136 set path ! start of curve newpath ! start of curve amove .078105 .15367 bezier .989184E-01 .151163 .104837 .126361 .097155 .109855 bezier .876367E-01 .801122E-01 .715889E-01 .491062E-01 .076835 .018415 bezier .788975E-01 .431015E-02 .954023E-01 -.133294E-02 .10668 .00508 bezier .119349 .107186E-01 .129701 .230697E-01 .132715 .036195 aline .15875 .140335 bezier .160492 .151749 .181666 .154108 .180975 .140335 aline .18034 .13716 aline .154305 .03302 bezier .152132 .231564E-01 .14805 .85486E-02 .159385 .00254 bezier .174754 .295029E-02 .177907 .022468 .182245 .03429 aline .18288 .03683 aline .183515 .038735 aline .186055 .048895 aline .18669 .0508 aline .188595 .052705 aline .19431 .052705 aline .19558 .05207 aline .19685 .0508 bezier .192463 .03046 .188369 .213025E-02 .1651 -.004445 bezier .150874 -.643097E-02 .13656 .265064E-02 .132715 .01651 bezier .116756 -.901106E-02 .731413E-01 -.134108E-01 .05842 .01524 bezier .460867E-01 .542406E-01 .720434E-01 .937127E-01 .08128 .131445 aline .08128 .140335 bezier .764568E-01 .153452 .590603E-01 .143402 .05461 .13462 bezier .461901E-01 .123783 .438237E-01 .1095 .038735 .097155 aline .037465 .09652 aline .03175 .09652 aline .031115 .097155 bezier .274723E-01 .104153 .342159E-01 .113707 .036195 .121285 bezier .427564E-01 .135735 .530791E-01 .15078 .06985 .15367 closepath ! end of curve fill dfont endchar dfont char="v" !-------------- Beginning of new char. dfont wid=.459997 hei=.430555 dep=0 italic=.107638 set path ! start of curve newpath ! start of curve amove .078105 .15367 bezier .989184E-01 .151163 .104837 .126361 .097155 .109855 bezier .879744E-01 .799191E-01 .703182E-01 .484598E-01 .078105 .01778 bezier .834859E-01 -.796675E-03 .107786 -.846496E-03 .120015 .010795 bezier .141902 .032893 .149347 .657514E-01 .156845 .094615 bezier .158549 .109277 .152573 .123141 .142875 .133985 bezier .138646 .148608 .160557 .161714 .169545 .147955 bezier .178712 .123012 .167374 .973391E-01 .161925 .071755 bezier .152134 .412968E-01 .138563 .288219E-02 .103505 -.004445 bezier .821974E-01 -.731537E-02 .559516E-01 .568695E-02 .05588 .029845 bezier .522342E-01 .648243E-01 .732448E-01 .983742E-01 .08128 .131445 aline .08128 .140335 bezier .764568E-01 .153452 .590603E-01 .143402 .05461 .13462 bezier .461901E-01 .123783 .438237E-01 .1095 .038735 .097155 aline .037465 .09652 aline .03175 .09652 aline .031115 .097155 bezier .274723E-01 .104153 .342159E-01 .113707 .036195 .121285 bezier .427564E-01 .135735 .530791E-01 .15078 .06985 .15367 closepath ! end of curve fill dfont endchar dfont char="w" !-------------- Beginning of new char. dfont wid=.664441 hei=.430555 dep=0 italic=.107638 dfont fby="l" kadd=.0511112 set path ! start of curve newpath ! start of curve amove .078105 .15367 bezier .989184E-01 .151163 .104837 .126361 .097155 .109855 bezier .881025E-01 .798156E-01 .700075E-01 .490087E-01 .07874 .01778 bezier .845409E-01 -.131492E-04 .111145 -.282066E-02 .120015 .01397 bezier .128162 .241758E-01 .133016 .366826E-01 .13208 .04953 aline .133985 .059055 aline .154305 .140335 bezier .156047 .151749 .177221 .154108 .17653 .140335 aline .175895 .13716 aline .15494 .05334 bezier .151043 .374133E-01 .148265 .157193E-01 .164465 .00508 bezier .184405 -.441068E-02 .203293 .145128E-01 .20955 .032385 bezier .219046 .560693E-01 .228008 .815037E-01 .2286 .10668 bezier .227079 .116631 .221144 .126132 .21463 .133985 bezier .210401 .148608 .232312 .161714 .2413 .147955 bezier .250445 .123018 .23916 .973301E-01 .23368 .071755 bezier .225435 .427741E-01 .215939 .557934E-02 .183515 -.00381 bezier .16546 -.689974E-02 .142454 -.10446E-02 .13462 .01778 bezier .126612 .38836E-02 .110766 -.833857E-02 .09398 -.00381 bezier .073658 -.422168E-02 .554797E-01 .128913E-01 .055245 .03302 bezier .542617E-01 .670233E-01 .730611E-01 .992668E-01 .08128 .131445 aline .08128 .140335 bezier .764568E-01 .153452 .590603E-01 .143402 .05461 .13462 bezier .461901E-01 .123783 .438237E-01 .1095 .038735 .097155 aline .037465 .09652 aline .03175 .09652 aline .031115 .097155 bezier .274723E-01 .104153 .342159E-01 .113707 .036195 .121285 bezier .427564E-01 .135735 .530791E-01 .15078 .06985 .15367 closepath ! end of curve fill dfont endchar dfont char="x" !-------------- Beginning of new char. dfont wid=.463887 hei=.430555 dep=0 italic=.120417 set path ! start of curve newpath ! start of curve amove .088265 .15367 bezier .101349 .151937 .11262 .1426 .11684 .130175 bezier .125845 .149194 .149268 .159761 .16891 .150495 bezier .186488 .145033 .186499 .117054 .16764 .113665 aline .161925 .113665 bezier .146207 .117129 .153456 .140267 .167005 .141605 bezier .153217 .152526 .133696 .144361 .127635 .128905 aline .127 .12827 aline .125095 .12446 aline .12446 .122555 aline .123825 .121285 aline .12319 .11938 aline .122555 .11811 aline .121285 .1143 aline .103505 .04318 bezier .993768E-01 .295861E-01 .980336E-01 .80922E-02 .114935 .00254 bezier .140648 .002274 .155113 .287967E-01 .16129 .0508 aline .163195 .052705 aline .16891 .052705 aline .17018 .05207 aline .17145 .0508 bezier .166858 .199902E-01 .13634 -.141735E-01 .10287 -.001905 bezier .936887E-01 .154621E-02 .873821E-01 .110936E-01 .829733E-01 .179917E-01 bezier .739041E-01 .398361E-03 .525049E-01 -.100865E-01 .033655 -.001905 bezier .171831E-01 .215439E-02 .013105 .270865E-01 .02921 .03429 bezier .372719E-01 .388453E-01 .502288E-01 .032771 .047625 .023495 bezier .483717E-01 .154777E-01 .410401E-01 .893276E-02 .033655 .00762 bezier .471235E-01 -.306752E-02 .661683E-01 .459157E-02 .07239 .019685 aline .073025 .02032 aline .075565 .0254 aline .0762 .027305 aline .076835 .028575 aline .079375 .036195 aline .097155 .107315 bezier .101306 .120446 .102044 .141148 .085725 .146685 bezier .591253E-01 .147034 .459455E-01 .118953 .038735 .097155 aline .037465 .09652 aline .03175 .09652 aline .031115 .097155 aline .029845 .09779 bezier .328105E-01 .123521 .052847 .149099 .07874 .15367 closepath ! end of curve fill dfont endchar dfont char="y" !-------------- Beginning of new char. dfont wid=.485553 hei=.430555 dep=.194445 italic=.0884724 set path ! start of curve newpath ! start of curve amove .078105 .15367 bezier .989184E-01 .151163 .104837 .126361 .097155 .109855 bezier .876367E-01 .801122E-01 .715889E-01 .491062E-01 .076835 .018415 bezier .788975E-01 .431015E-02 .954023E-01 -.133294E-02 .10668 .00508 bezier .118312 .982223E-02 .126103 .202744E-01 .131445 .031115 aline .15875 .140335 bezier .160492 .151749 .181666 .154108 .180975 .140335 aline .18034 .13716 aline .14478 -.00508 bezier .134188 -.423667E-01 .986309E-01 -.797672E-01 .05715 -.071755 bezier .369378E-01 -.678603E-01 .265598E-01 -.393788E-01 .04191 -.024765 bezier .488036E-01 -.194784E-01 .611876E-01 -.194856E-01 .064135 -.02921 bezier .666948E-01 -.398587E-01 .559408E-01 -.506396E-01 .046355 -.048895 bezier .486105E-01 -.665889E-01 .730068E-01 -.705115E-01 .085725 -.06096 bezier .109079 -.463991E-01 .120217 -.177092E-01 .125095 .008255 bezier .105256 -.140977E-01 .576981E-01 -.683372E-02 .05588 .02667 bezier .510833E-01 .618063E-01 .728024E-01 .973682E-01 .08128 .131445 aline .08128 .140335 bezier .764568E-01 .153452 .590603E-01 .143402 .05461 .13462 bezier .461901E-01 .123783 .438237E-01 .1095 .038735 .097155 aline .037465 .09652 aline .03175 .09652 aline .031115 .097155 bezier .274723E-01 .104153 .342159E-01 .113707 .036195 .121285 bezier .427564E-01 .135735 .530791E-01 .15078 .06985 .15367 closepath ! end of curve fill dfont endchar dfont char="z" !-------------- Beginning of new char. dfont wid=.408887 hei=.430555 dep=0 italic=.122917 set path ! start of curve newpath ! start of curve amove .09525 .15367 bezier .112728 .151917 .114916 .123284 .133985 .12827 bezier .144589 .133135 .147041 .146299 .15494 .15367 aline .16129 .15367 bezier .166491 .148007 .157188 .142132 .155575 .136525 bezier .138148 .111653 .115962 .898401E-01 .093345 .069215 aline .064135 .040005 aline .0635 .038735 aline .05842 .033655 aline .057785 .032385 aline .05461 .02921 bezier .075537 .328659E-01 .936364E-01 .996449E-02 .1143 .019685 bezier .128959 .248871E-01 .137369 .385899E-01 .142875 .05207 aline .144145 .052705 aline .149225 .052705 aline .150495 .05207 aline .15113 .051435 bezier .149451 .285981E-01 .132348 .645899E-02 .111125 -.00254 bezier .976208E-01 -.827893E-02 .824135E-01 -.215247E-02 .0762 .010795 bezier .716322E-01 .194853E-01 .603547E-01 .255765E-01 .051435 .01905 bezier .414249E-01 .143183E-01 .372134E-01 .349242E-02 .03048 -.004445 aline .02413 -.004445 bezier .184535E-01 .466054E-03 .027584 .765903E-02 .029845 .0127 bezier .368166E-01 .236325E-01 .045503 .033329 .053975 .04318 aline .08382 .073025 bezier .997693E-01 .876421E-01 .115743 .102775 .12954 .11938 bezier .110398 .120838 .911094E-01 .140978 .07239 .127 bezier .650581E-01 .124149 .635394E-01 .115442 .059055 .11049 aline .052705 .11049 aline .051435 .111125 bezier .514199E-01 .130372 .684981E-01 .149526 .08763 .15367 closepath ! end of curve fill dfont endchar dfont char="{" !-------------- Beginning of new char. dfont wid=.511108 hei=.430555 dep=0 italic=.0920792 set path ! start of curve newpath ! start of curve amove .191135 .095885 aline .192405 .09525 aline .19304 .094615 aline .193675 .093345 aline .193675 .09144 aline .19304 .09017 aline .192405 .089535 aline .191135 .0889 aline .034925 .0889 aline .03302 .090805 aline .03302 .09398 aline .034925 .095885 closepath ! end of curve fill dfont endchar dfont char="|" !-------------- Beginning of new char. dfont wid=1.02222 hei=.430555 dep=0 italic=.0920792 set path ! start of curve newpath ! start of curve amove .36195 .095885 aline .36322 .09525 aline .363855 .094615 aline .36449 .093345 aline .36449 .09144 aline .363855 .09017 aline .36322 .089535 aline .36195 .0889 aline .043815 .0889 aline .04191 .090805 aline .04191 .09398 aline .043815 .095885 closepath ! end of curve fill dfont endchar dfont char="}" !-------------- Beginning of new char. dfont wid=.511108 hei=.694445 dep=0 italic=.1225 set path ! start of curve newpath ! start of curve amove .141605 .243205 bezier .152275 .240512 .149043 .227297 .14224 .22225 bezier .128845 .207417 .116037 .192162 .10287 .177165 aline .09906 .177165 bezier .899162E-01 .180449 .989099E-01 .188735 .1016 .193675 bezier .112479 .209856 .1203 .228706 .133985 .24257 aline .13589 .243205 closepath ! end of curve ! start of curve amove .19558 .243205 bezier .20625 .240512 .203018 .227297 .196215 .22225 bezier .18282 .207417 .170012 .192162 .156845 .177165 aline .153035 .177165 bezier .143891 .180449 .152885 .188735 .155575 .193675 bezier .166454 .209856 .174275 .228706 .18796 .24257 aline .189865 .243205 closepath ! end of curve fill dfont endchar dfont char="~" !-------------- Beginning of new char. dfont wid=.511108 hei=.667859 dep=0 italic=.115854 set path ! start of curve newpath ! start of curve amove .135255 .23368 bezier .149464 .231462 .149558 .206602 .165735 .211455 bezier .177827 .215961 .186939 .22508 .196215 .23368 aline .198755 .23368 aline .200025 .233045 aline .20066 .23241 aline .201295 .23114 aline .201295 .2286 bezier .187278 .216161 .173476 .1984 .153035 .198755 bezier .138826 .200973 .138732 .225833 .122555 .22098 bezier .110463 .216474 .101351 .207355 .092075 .198755 aline .089535 .198755 aline .088265 .19939 aline .08763 .200025 aline .086995 .201295 aline .086995 .203835 bezier .994107E-01 .215571 .111433 .228623 .12827 .23368 closepath ! end of curve fill dfont endchar dfont char=127 !-------------- Beginning of new char. dfont wid=.511108 hei=.667859 dep=0 italic=.104744 set path ! start of curve newpath ! start of curve amove .120015 .234315 bezier .137489 .230023 .131273 .205168 .11684 .201295 aline .11557 .20066 aline .11303 .200025 bezier .984917E-01 .196456 .090014 .215546 .099695 .225425 aline .10033 .226695 aline .10287 .229235 aline .10414 .22987 aline .104775 .230505 aline .106045 .23114 aline .10668 .231775 aline .10922 .233045 aline .111125 .23368 aline .11303 .234315 closepath ! end of curve ! start of curve amove .182245 .234315 bezier .198307 .230848 .194827 .208465 .182245 .202565 bezier .171635 .195072 .15482 .203497 .158115 .21717 aline .159385 .22098 aline .160655 .22352 aline .16129 .224155 aline .161925 .225425 aline .167005 .230505 aline .168275 .23114 aline .16891 .231775 aline .17145 .233045 aline .173355 .23368 aline .175895 .234315 closepath ! end of curve fill dfont endchar gle-graphics-4.2.4c/src/fonts/Makefile.vc0000664000000000000000000001733511676336540016744 0ustar rootroot######################################################################## # # # GLE - Graphics Layout Engine # # # # Modified BSD License # # # # Copyright (C) 2009 GLE. # # # # Redistribution and use in source and binary forms, with or without # # modification, are permitted provided that the following conditions # # are met: # # # # 1. Redistributions of source code must retain the above copyright # # notice, this list of conditions and the following disclaimer. # # # # 2. Redistributions in binary form must reproduce the above # # copyright notice, this list of conditions and the following # # disclaimer in the documentation and/or other materials provided with # # the distribution. # # # # 3. The name of the author may not be used to endorse or promote # # products derived from this software without specific prior written # # permission. # # # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR # # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY # # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE # # GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER # # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN # # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # # ######################################################################## # FONT MAKEFILE # makes font files *.fmt from *.afm using makefmt # makes *.fve fron *.gle using fbuild # also makes font.dat # !include ..\..\config.vc RM = del ADOBE35 = Adobe-Core35_AFMs-314 FVE = \ glemark.fve plba.fve plcc.fve plcg.fve plci.fve \ plcr.fve plcs.fve pldr.fve plge.fve \ plgg.fve plgi.fve plsa.fve plsg.fve \ plsr.fve plss.fve plsym1.fve plsym2.fve \ plti.fve pltr.fve texcmb.fve texcmex.fve \ texcmitt.fve texcmmi.fve texcmr.fve texcmss.fve \ texcmssb.fve texcmssi.fve texcmsy.fve texcmti.fve \ texcmtt.fve FMT = \ glemark.fmt \ texcmb.fmt texcmex.fmt texcmitt.fmt texcmmi.fmt texcmr.fmt \ texcmsl.fmt texcmssb.fmt texcmss.fmt texcmssi.fmt texcmsy.fmt \ texcmti.fmt texcmtt.fmt \ plba.fmt plcc.fmt plcg.fmt plci.fmt plcr.fmt plcs.fmt pldr.fmt \ plge.fmt plgg.fmt plgi.fmt plsa.fmt plsg.fmt plsr.fmt plss.fmt \ plsym1.fmt plsym2.fmt plti.fmt pltr.fmt \ psagb.fmt psagbo.fmt psagd.fmt psagdo.fmt psbd.fmt psbdi.fmt \ psbl.fmt psbli.fmt pscb.fmt pscbo.fmt psc.fmt psco.fmt pshb.fmt pshbo.fmt \ pshcb.fmt pshcbo.fmt pshcdo.fmt pshc.fmt psh.fmt pshnb.fmt \ pshnbo.fmt pshn.fmt pshno.fmt psho.fmt psncsb.fmt psncsbi.fmt \ psncsi.fmt psncsr.fmt pspb.fmt pspbi.fmt pspi.fmt pspr.fmt \ pssym.fmt pstb.fmt pstbi.fmt psti.fmt pstr.fmt pszcmi.fmt pszd.fmt all: $(FVE) $(FMT) movefonts .SUFFIXES: .fve .fmt .afm .gle psagb.fmt: $(ADOBE35)/ITCAvantGarde-Book.afm $(PROJECT_BINDIR)/bin/makefmt -e adobestd.enc -o $@ $< psagbo.fmt: $(ADOBE35)/ITCAvantGarde-BookOblique.afm $(PROJECT_BINDIR)/bin/makefmt -e adobestd.enc -o $@ $< psagd.fmt: $(ADOBE35)/ITCAvantGarde-Demi.afm $(PROJECT_BINDIR)/bin/makefmt -e adobestd.enc -o $@ $< psagdo.fmt: $(ADOBE35)/ITCAvantGarde-DemiOblique.afm $(PROJECT_BINDIR)/bin/makefmt -e adobestd.enc -o $@ $< psbd.fmt: $(ADOBE35)/ITCBookman-Demi.afm $(PROJECT_BINDIR)/bin/makefmt -e adobestd.enc -o $@ $< psbdi.fmt: $(ADOBE35)/ITCBookman-DemiItalic.afm $(PROJECT_BINDIR)/bin/makefmt -e adobestd.enc -o $@ $< psbli.fmt: $(ADOBE35)/ITCBookman-LightItalic.afm $(PROJECT_BINDIR)/bin/makefmt -e adobestd.enc -o $@ $< psbl.fmt: $(ADOBE35)/ITCBookman-Light.afm $(PROJECT_BINDIR)/bin/makefmt -e adobestd.enc -o $@ $< psc.fmt: $(ADOBE35)/Courier.afm $(PROJECT_BINDIR)/bin/makefmt -e adobestd.enc -o $@ $< pscb.fmt: $(ADOBE35)/Courier-Bold.afm $(PROJECT_BINDIR)/bin/makefmt -e adobestd.enc -o $@ $< pscbo.fmt: $(ADOBE35)/Courier-BoldOblique.afm $(PROJECT_BINDIR)/bin/makefmt -e adobestd.enc -o $@ $< psco.fmt: $(ADOBE35)/Courier-Oblique.afm $(PROJECT_BINDIR)/bin/makefmt -e adobestd.enc -o $@ $< psh.fmt: $(ADOBE35)/Helvetica.afm $(PROJECT_BINDIR)/bin/makefmt -e adobestd.enc -o $@ $< pshb.fmt: $(ADOBE35)/Helvetica-Bold.afm $(PROJECT_BINDIR)/bin/makefmt -e adobestd.enc -o $@ $< pshbo.fmt: $(ADOBE35)/Helvetica-BoldOblique.afm $(PROJECT_BINDIR)/bin/makefmt -e adobestd.enc -o $@ $< pshn.fmt: $(ADOBE35)/Helvetica-Narrow.afm $(PROJECT_BINDIR)/bin/makefmt -e adobestd.enc -o $@ $< pshnb.fmt: $(ADOBE35)/Helvetica-NarrowBold.afm $(PROJECT_BINDIR)/bin/makefmt -e adobestd.enc -o $@ $< pshnbo.fmt: $(ADOBE35)/Helvetica-NarrowBoldOblique.afm $(PROJECT_BINDIR)/bin/makefmt -e adobestd.enc -o $@ $< pshno.fmt: $(ADOBE35)/Helvetica-NarrowOblique.afm $(PROJECT_BINDIR)/bin/makefmt -e adobestd.enc -o $@ $< psho.fmt: $(ADOBE35)/Helvetica-Oblique.afm $(PROJECT_BINDIR)/bin/makefmt -e adobestd.enc -o $@ $< psncsb.fmt: $(ADOBE35)/NewCenturySchlbk-Bold.afm $(PROJECT_BINDIR)/bin/makefmt -e adobestd.enc -o $@ $< psncsbi.fmt: $(ADOBE35)/NewCenturySchlbk-BoldItalic.afm $(PROJECT_BINDIR)/bin/makefmt -e adobestd.enc -o $@ $< psncsi.fmt: $(ADOBE35)/NewCenturySchlbk-Italic.afm $(PROJECT_BINDIR)/bin/makefmt -e adobestd.enc -o $@ $< psncsr.fmt: $(ADOBE35)/NewCenturySchlbk-Roman.afm $(PROJECT_BINDIR)/bin/makefmt -e adobestd.enc -o $@ $< pspb.fmt: $(ADOBE35)/Palatino-Bold.afm $(PROJECT_BINDIR)/bin/makefmt -e adobestd.enc -o $@ $< pspbi.fmt: $(ADOBE35)/Palatino-BoldItalic.afm $(PROJECT_BINDIR)/bin/makefmt -e adobestd.enc -o $@ $< pspi.fmt: $(ADOBE35)/Palatino-Italic.afm $(PROJECT_BINDIR)/bin/makefmt -e adobestd.enc -o $@ $< pspr.fmt: $(ADOBE35)/Palatino-Roman.afm $(PROJECT_BINDIR)/bin/makefmt -e adobestd.enc -o $@ $< pstb.fmt: $(ADOBE35)/Times-Bold.afm $(PROJECT_BINDIR)/bin/makefmt -e adobestd.enc -o $@ $< pstbi.fmt: $(ADOBE35)/Times-BoldItalic.afm $(PROJECT_BINDIR)/bin/makefmt -e adobestd.enc -o $@ $< psti.fmt: $(ADOBE35)/Times-Italic.afm $(PROJECT_BINDIR)/bin/makefmt -e adobestd.enc -o $@ $< pstr.fmt: $(ADOBE35)/Times-Roman.afm $(PROJECT_BINDIR)/bin/makefmt -e adobestd.enc -o $@ $< pszcmi.fmt: $(ADOBE35)/ITCZapfChancery-MediumItalic.afm $(PROJECT_BINDIR)/bin/makefmt -e adobestd.enc -o $@ $< pssym.fmt: $(ADOBE35)/Symbol.afm $(PROJECT_BINDIR)/bin/makefmt -o $@ $< pszd.fmt: $(ADOBE35)/ZapfDingbats.afm $(PROJECT_BINDIR)/bin/makefmt -o $@ $< .afm.fmt: $(PROJECT_BINDIR)\bin\makefmt $< .gle.fve: $(PROJECT_BINDIR)\bin\fbuild $< clean: -$(RM) *.fve *.fmt movefonts: -mkdir $(PROJECT_BINDIR)\font -copy *.fve $(PROJECT_BINDIR)\font -copy *.fmt $(PROJECT_BINDIR)\font -copy font.dat $(PROJECT_BINDIR)\font -copy psfont.dat $(PROJECT_BINDIR)\font d2u: d2u -u -z $(AFM) gle-graphics-4.2.4c/src/fonts/texcmsy.gle0000664000000000000000000053323411676336540017063 0ustar rootrootdfont file_name="CMSY10" dfont font_name="CMSY10" dfont design= .35146 dfont slant= .25 dfont space= 0 dfont stretch= 0 dfont shrink= 0 dfont x_hei= .151323 dfont quad= .351461 dfont extra_space= 0 dfont mathspace= 0 dfont num1= .676508 dfont num2= .393732 dfont num3= .443731 dfont denom1= .685951 dfont denom2= .344841 dfont sup1= .412892 dfont sup2= .362892 dfont sup3= .288889 dfont sub1= .15 dfont sub2= .247217 dfont supdrop= .386108 dfont subdrop= .500002E-01 dfont delim1= 2.39 dfont delim2= 1.01 dfont axisheight= .25 dfont paint="FILL" !------------------ end of main parameters dfont char=0 !-------------- Beginning of new char. dfont wid=.777781 hei=.583334 dep=.083334 italic=0 set path ! start of curve newpath ! start of curve amove .238125 .09398 aline .239395 .093345 aline .240665 .09271 aline .241935 .09144 aline .243205 .0889 aline .243205 .08509 aline .241935 .08255 aline .240665 .08128 aline .238125 .08001 aline .034925 .08001 aline .032385 .08128 aline .031115 .08255 aline .029845 .08509 aline .029845 .0889 aline .031115 .09144 aline .032385 .09271 aline .033655 .093345 aline .034925 .09398 closepath ! end of curve fill dfont endchar dfont char=1 !-------------- Beginning of new char. dfont wid=.277779 hei=.444446 dep=-.0555544 italic=0 set path ! start of curve newpath ! start of curve amove .05207 .10541 bezier .707024E-01 .103541 .728738E-01 .742143E-01 .05461 .06985 bezier .370706E-01 .634893E-01 .226261E-01 .087982 .036195 .10033 aline .037465 .100965 aline .03937 .10287 aline .04191 .10414 aline .043815 .104775 aline .046355 .10541 closepath ! end of curve fill dfont endchar dfont char=2 !-------------- Beginning of new char. dfont wid=.777781 hei=.583334 dep=.083334 italic=0 set path ! start of curve newpath ! start of curve amove .06096 .17145 aline .06223 .170815 aline .0635 .17018 aline .136525 .097155 aline .20955 .17018 aline .21209 .17145 aline .2159 .17145 aline .21844 .17018 aline .21971 .16891 aline .22098 .16637 aline .22098 .16256 aline .21971 .16002 aline .146685 .086995 aline .21971 .01397 aline .22098 .01143 aline .22098 .00762 aline .21971 .00508 aline .21844 .00381 aline .2159 .00254 aline .21209 .00254 aline .20955 .00381 aline .136525 .076835 aline .0635 .00381 aline .06096 .00254 aline .05715 .00254 aline .05461 .00381 aline .05334 .00508 aline .05207 .00762 aline .05207 .01143 aline .05334 .01397 aline .126365 .086995 aline .05334 .16002 aline .05207 .16256 aline .05207 .16637 aline .05334 .16891 aline .05461 .17018 aline .05588 .170815 aline .05715 .17145 closepath ! end of curve fill dfont endchar dfont char=3 !-------------- Beginning of new char. dfont wid=.500002 hei=.465279 dep=-.0347214 italic=0 set path ! start of curve newpath ! start of curve amove .09017 .16256 bezier .101142 .159252 .955271E-01 .146238 .09525 .13843 bezier .952399E-01 .123648 .915187E-01 .10902 .09271 .094615 bezier .108902 .106404 .124765 .11865 .141605 .12954 bezier .152359 .132005 .157055 .114139 .14605 .11176 aline .12954 .103505 aline .127635 .10287 aline .112395 .09525 aline .11049 .094615 aline .969433E-01 .878417E-01 bezier .112515 .773048E-01 .1336 .704698E-01 .150495 .060325 bezier .158115 .516396E-01 .143992 .390531E-01 .136525 .04826 bezier .12165 .581374E-01 .106557 .710661E-01 .092075 .079375 bezier .927917E-01 .058423 .964836E-01 .378121E-01 .09652 .017145 bezier .932013E-01 .830594E-02 .770942E-01 .118955E-01 .079375 .020955 bezier .796694E-01 .408721E-01 .839891E-01 .605135E-01 .083185 .08001 bezier .669925E-01 .682214E-01 .511298E-01 .559754E-01 .03429 .045085 bezier .235363E-01 .426204E-01 .188399E-01 .604855E-01 .029845 .062865 aline .046355 .07112 aline .04826 .071755 aline .0635 .079375 aline .065405 .08001 aline .789517E-01 .867833E-01 bezier .633795E-01 .973203E-01 .042295 .104155 .0254 .1143 bezier .177803E-01 .122985 .319028E-01 .135572 .03937 .126365 bezier .542445E-01 .116488 .693384E-01 .103559 .08382 .09525 bezier .830668E-01 .116187 .794624E-01 .136834 .079375 .15748 aline .08001 .158115 aline .080645 .159385 aline .081915 .160655 aline .083185 .16129 aline .08382 .161925 aline .085725 .16256 closepath ! end of curve ! start of curve amove .08382 .09525 aline .083185 .094615 aline .08382 .09398 aline .084455 .094615 aline .08382 .09525 closepath ! end of curve ! start of curve amove .092075 .09398 aline .09271 .094615 aline .092075 .09525 aline .09144 .094615 aline .092075 .09398 closepath ! end of curve ! start of curve amove .083185 .08001 aline .08382 .079375 aline .084455 .08001 aline .08382 .080645 aline .083185 .08001 closepath ! end of curve ! start of curve amove .09144 .08001 aline .092075 .079375 aline .09271 .08001 aline .092075 .080645 aline .09144 .08001 closepath ! end of curve fill dfont endchar dfont char=4 !-------------- Beginning of new char. dfont wid=.777781 hei=.583334 dep=.083334 italic=0 set path ! start of curve newpath ! start of curve amove .140335 .184785 bezier .16196 .182376 .165493 .148963 .14478 .14224 bezier .125321 .133785 .105907 .15908 .118745 .175895 aline .12319 .18034 aline .12446 .180975 aline .125095 .18161 aline .128905 .183515 aline .13081 .18415 aline .13335 .184785 closepath ! end of curve ! start of curve amove .248285 .09398 aline .249555 .093345 aline .250825 .09271 aline .252095 .09144 aline .253365 .0889 aline .253365 .08509 aline .252095 .08255 aline .250825 .08128 aline .248285 .08001 aline .0254 .08001 aline .02286 .08128 aline .02159 .08255 aline .02032 .08509 aline .02032 .0889 aline .02159 .09144 aline .02286 .09271 aline .02413 .093345 aline .0254 .09398 closepath ! end of curve ! start of curve amove .140335 .03302 bezier .16196 .306109E-01 .165493 -.280197E-02 .14478 -.009525 bezier .125321 -.179805E-01 .105907 .731469E-02 .118745 .02413 aline .12319 .028575 aline .12446 .02921 aline .125095 .029845 aline .128905 .03175 aline .13081 .032385 aline .13335 .03302 closepath ! end of curve fill dfont endchar dfont char=5 !-------------- Beginning of new char. dfont wid=.500002 hei=.444446 dep=-.0555544 italic=0 set path ! start of curve newpath ! start of curve amove .09017 .17018 aline .09144 .169545 aline .09271 .16891 aline .17018 .09144 aline .17145 .0889 aline .17145 .08509 aline .17018 .08255 aline .09271 .00508 aline .09017 .00381 aline .08636 .00381 aline .08382 .00508 aline .00635 .08255 aline .00508 .08509 aline .00508 .0889 aline .00635 .09144 aline .08382 .16891 aline .08509 .169545 aline .08636 .17018 closepath ! end of curve ! start of curve amove .022225 .086995 aline .088265 .020955 aline .154305 .086995 aline .088265 .153035 aline .022225 .086995 closepath ! end of curve fill dfont endchar dfont char=6 !-------------- Beginning of new char. dfont wid=.777781 hei=.583334 dep=.083334 italic=0 set path ! start of curve newpath ! start of curve amove .13843 .233045 aline .1397 .23241 aline .14097 .231775 aline .14224 .230505 aline .14351 .227965 aline .14351 .123825 aline .144145 .12319 aline .24765 .12319 aline .25019 .12192 aline .25146 .12065 aline .25273 .11811 aline .25273 .1143 aline .25146 .11176 aline .25019 .11049 aline .24765 .10922 aline .144145 .10922 aline .14351 .108585 aline .14351 .01397 aline .144145 .013335 aline .24765 .013335 aline .25019 .012065 aline .25146 .010795 aline .25273 .008255 aline .25273 .004445 aline .25146 .001905 aline .25019 .000635 aline .24765 -.000635 aline .0254 -.000635 aline .02286 .000635 aline .02159 .001905 aline .02032 .004445 aline .02032 .008255 aline .02159 .010795 aline .02286 .012065 aline .0254 .013335 aline .128905 .013335 aline .12954 .01397 aline .12954 .108585 aline .128905 .10922 aline .0254 .10922 aline .02286 .11049 aline .02159 .11176 aline .02032 .1143 aline .02032 .11811 aline .02159 .12065 aline .02286 .12192 aline .0254 .12319 aline .128905 .12319 aline .12954 .123825 aline .12954 .227965 aline .13081 .230505 aline .13208 .231775 aline .13335 .23241 aline .13462 .233045 closepath ! end of curve fill dfont endchar dfont char=7 !-------------- Beginning of new char. dfont wid=.777781 hei=.583334 dep=.083334 italic=0 set path ! start of curve newpath ! start of curve amove .24765 .174625 aline .24892 .17399 aline .25019 .173355 aline .25146 .172085 aline .25273 .169545 aline .25273 .165735 aline .25146 .163195 aline .25019 .161925 aline .24765 .160655 aline .144145 .160655 aline .14351 .16002 aline .14351 .065405 aline .144145 .06477 aline .24765 .06477 aline .25019 .0635 aline .25146 .06223 aline .25273 .05969 aline .25273 .05588 aline .25146 .05334 aline .25019 .05207 aline .24765 .0508 aline .144145 .0508 aline .14351 .050165 aline .14351 -.053975 aline .14224 -.056515 aline .14097 -.057785 aline .13843 -.059055 aline .13462 -.059055 aline .13208 -.057785 aline .13081 -.056515 aline .12954 -.053975 aline .12954 .050165 aline .128905 .0508 aline .0254 .0508 aline .02286 .05207 aline .02159 .05334 aline .02032 .05588 aline .02032 .05969 aline .02159 .06223 aline .02286 .0635 aline .0254 .06477 aline .128905 .06477 aline .12954 .065405 aline .12954 .16002 aline .128905 .160655 aline .0254 .160655 aline .02286 .161925 aline .02159 .163195 aline .02032 .165735 aline .02032 .169545 aline .02159 .172085 aline .02286 .173355 aline .02413 .17399 aline .0254 .174625 closepath ! end of curve fill dfont endchar dfont char=8 !-------------- Beginning of new char. dfont wid=.777781 hei=.583334 dep=.083334 italic=0 set path ! start of curve newpath ! start of curve amove .145415 .203835 bezier .200427 .200683 .2501 .151974 .252095 .09652 bezier .259936 .035818 .208465 -.270318E-01 .14605 -.02921 bezier .848529E-01 -.372143E-01 .229356E-01 .156344E-01 .020955 .07747 bezier .131144E-01 .138172 .064585 .201022 .127 .2032 aline .127635 .203835 aline .145415 .203835 closepath ! end of curve ! start of curve amove .12827 .194945 bezier .755474E-01 .192707 .289001E-01 .143862 .02921 .09144 aline .13208 .09144 aline .132715 .092075 aline .132715 .194945 aline .13208 .19558 aline .128905 .19558 aline .12827 .194945 closepath ! end of curve ! start of curve amove .14097 .194945 aline .14097 .092075 aline .141605 .09144 aline .24384 .09144 bezier .244211 .145093 .195076 .195183 .14097 .194945 closepath ! end of curve ! start of curve amove .028575 .08255 bezier .298591E-01 .326254E-01 .712686E-01 -.154399E-01 .122555 -.02032 aline .12319 -.020955 aline .12827 -.020955 aline .128905 -.02159 aline .13208 -.02159 aline .132715 -.020955 aline .132715 .08255 aline .13208 .083185 aline .02921 .083185 aline .028575 .08255 closepath ! end of curve ! start of curve amove .14097 .08255 aline .14097 -.020955 bezier .193831 -.211505E-01 .241783 .264676E-01 .24384 .07874 aline .244475 .079375 aline .244475 .08255 aline .24384 .083185 aline .141605 .083185 aline .14097 .08255 closepath ! end of curve fill dfont endchar dfont char=9 !-------------- Beginning of new char. dfont wid=.777781 hei=.583334 dep=.083334 italic=0 set path ! start of curve newpath ! start of curve amove .145415 .203835 bezier .200427 .200683 .2501 .151974 .252095 .09652 bezier .259936 .035818 .208465 -.270318E-01 .14605 -.02921 bezier .848529E-01 -.372143E-01 .229356E-01 .156344E-01 .020955 .07747 bezier .131144E-01 .138172 .064585 .201022 .127 .2032 aline .127635 .203835 aline .145415 .203835 closepath ! end of curve ! start of curve amove .12827 .194945 bezier .755474E-01 .192707 .289001E-01 .143862 .02921 .09144 aline .24384 .09144 bezier .24415 .143862 .197503 .192707 .14478 .194945 aline .144145 .19558 aline .128905 .19558 aline .12827 .194945 closepath ! end of curve ! start of curve amove .028575 .08255 bezier .298591E-01 .326254E-01 .712686E-01 -.154399E-01 .122555 -.02032 bezier .178159 -.301672E-01 .237898 .153034E-01 .243205 .07239 aline .24384 .073025 aline .24384 .07874 aline .244475 .079375 aline .244475 .08255 aline .24384 .083185 aline .02921 .083185 aline .028575 .08255 closepath ! end of curve fill dfont endchar dfont char=10 !-------------- Beginning of new char. dfont wid=.777781 hei=.583334 dep=.083334 italic=0 set path ! start of curve newpath ! start of curve amove .145415 .203835 bezier .200427 .200683 .2501 .151974 .252095 .09652 bezier .259936 .035818 .208465 -.270318E-01 .14605 -.02921 bezier .848529E-01 -.372143E-01 .229356E-01 .156344E-01 .020955 .07747 bezier .131144E-01 .138172 .064585 .201022 .127 .2032 aline .127635 .203835 aline .145415 .203835 closepath ! end of curve ! start of curve amove .12827 .194945 bezier .104964 .193413 .805105E-01 .183237 .636588E-01 .166688 aline .064135 .165735 aline .136525 .093345 aline .208915 .165735 bezier .206572 .171992 .197338 .175764 .19177 .18034 bezier .1723 .191141 .149825 .197487 .12827 .194945 closepath ! end of curve ! start of curve amove .056515 .16002 bezier .019348 .119179 .019589 .538436E-01 .05715 .013335 aline .13081 .086995 aline .05715 .160655 aline .056515 .16002 closepath ! end of curve ! start of curve amove .14224 .086995 aline .2159 .013335 bezier .253689 .540471E-01 .253689 .119943 .2159 .160655 aline .14224 .086995 closepath ! end of curve ! start of curve amove .064135 .008255 bezier .664775E-01 .199865E-02 .757122E-01 -.17742E-02 .08128 -.00635 bezier .121505 -.306368E-01 .175426 -.251737E-01 .209391 .73025E-02 aline .208915 .008255 aline .136525 .080645 aline .064135 .008255 aline .636588E-01 .73025E-02 closepath ! end of curve fill dfont endchar dfont char=11 !-------------- Beginning of new char. dfont wid=.777781 hei=.583334 dep=.083334 italic=0 set path ! start of curve newpath ! start of curve amove .145415 .203835 bezier .200427 .200683 .2501 .151974 .252095 .09652 bezier .259936 .035818 .208465 -.270318E-01 .14605 -.02921 bezier .848529E-01 -.372143E-01 .229356E-01 .156344E-01 .020955 .07747 bezier .131144E-01 .138172 .064585 .201022 .127 .2032 aline .127635 .203835 aline .145415 .203835 closepath ! end of curve ! start of curve amove .12827 .194945 bezier .706363E-01 .192785 .224465E-01 .134921 .02921 .07874 bezier .304029E-01 .553713E-01 .411138E-01 .310508E-01 .05715 .013335 aline .132715 .0889 aline .13335 .09017 aline .208915 .165735 bezier .206572 .171992 .197338 .175764 .19177 .18034 bezier .1723 .191141 .149825 .197487 .12827 .194945 closepath ! end of curve ! start of curve amove .140335 .08509 aline .1397 .08382 aline .064135 .008255 bezier .664775E-01 .199865E-02 .757122E-01 -.17742E-02 .08128 -.00635 bezier .134644 -.401337E-01 .212547 -.149031E-01 .235585 .04445 bezier .252782 .828325E-01 .244264 .129126 .2159 .160655 aline .140335 .08509 closepath ! end of curve fill dfont endchar dfont char=12 !-------------- Beginning of new char. dfont wid=.777781 hei=.583334 dep=.083334 italic=0 set path ! start of curve newpath ! start of curve amove .145415 .203835 bezier .200427 .200683 .2501 .151974 .252095 .09652 bezier .259936 .035818 .208465 -.270318E-01 .14605 -.02921 bezier .848529E-01 -.372143E-01 .229356E-01 .156344E-01 .020955 .07747 bezier .131144E-01 .138172 .064585 .201022 .127 .2032 aline .127635 .203835 aline .145415 .203835 closepath ! end of curve ! start of curve amove .12827 .194945 bezier .706363E-01 .192785 .224465E-01 .134921 .02921 .07874 bezier .310975E-01 .216031E-01 .881735E-01 -.277929E-01 .14478 -.020955 bezier .202414 -.187951E-01 .250604 .390691E-01 .24384 .09525 bezier .241779 .146322 .196245 .192671 .14478 .194945 aline .144145 .19558 aline .128905 .19558 aline .12827 .194945 closepath ! end of curve ! start of curve amove .140335 .11049 bezier .162825 .108304 .167334 .073735 .146685 .065405 bezier .129102 .566327E-01 .107545 .744308E-01 .113665 .093345 aline .114935 .097155 aline .116205 .099695 aline .11684 .10033 aline .117475 .1016 aline .12192 .106045 aline .12319 .10668 aline .123825 .107315 aline .126365 .108585 aline .130175 .109855 aline .132715 .11049 closepath ! end of curve fill dfont endchar dfont char=13 !-------------- Beginning of new char. dfont wid=1 hei=.694445 dep=.194445 italic=0 set path ! start of curve newpath ! start of curve amove .18542 .25019 bezier .254121 .246417 .315338 .189875 .32766 .121285 bezier .341953 .550388E-01 .311993 -.231131E-01 .25019 -.05715 bezier .18462 -.963153E-01 .944676E-01 -.075074 .051435 -.012065 bezier -.24798E-02 .608166E-01 .150603E-01 .174809 .092075 .22479 bezier .119679 .243725 .15281 .251766 .18542 .25019 closepath ! end of curve ! start of curve amove .16637 .235585 bezier .954976E-01 .232818 .365256E-01 .165654 .034925 .09652 bezier .278061E-01 .254156E-01 .808917E-01 -.513709E-01 .15494 -.06096 bezier .222872 -.739414E-01 .295142 -.231007E-01 .31115 .045085 bezier .334629 .12023 .287878 .215035 .206375 .23241 aline .200025 .23368 aline .19939 .234315 aline .196215 .234315 aline .19558 .23495 aline .19177 .23495 aline .191135 .235585 aline .184785 .235585 aline .18415 .23622 aline .167005 .23622 aline .16637 .235585 closepath ! end of curve fill dfont endchar dfont char=14 !-------------- Beginning of new char. dfont wid=.500002 hei=.444446 dep=-.0555544 italic=0 set path ! start of curve newpath ! start of curve amove .094615 .15494 bezier .137924 .151992 .16835 .102 .15113 .06223 bezier .136361 .191105E-01 .762909E-01 .47242E-02 .04318 .03556 bezier .858985E-02 .064264 .143448E-01 .124824 .053975 .14605 aline .061595 .14986 aline .0635 .150495 aline .06477 .15113 aline .06858 .1524 aline .07366 .15367 aline .076835 .154305 aline .080645 .154305 aline .08128 .15494 aline .094615 .15494 closepath ! end of curve ! start of curve amove .081915 .140335 bezier .426379E-01 .137725 .198661E-01 .864699E-01 .04445 .05588 bezier .653034E-01 .232018E-01 .118308 .270318E-01 .135255 .061595 bezier .153669 .092803 .130519 .137775 .09398 .140335 aline .093345 .14097 aline .08255 .14097 aline .081915 .140335 closepath ! end of curve fill dfont endchar dfont char=15 !-------------- Beginning of new char. dfont wid=.500002 hei=.444446 dep=-.0555544 italic=0 set path ! start of curve newpath ! start of curve amove .094615 .15494 bezier .137924 .151992 .16835 .102 .15113 .06223 bezier .136361 .191105E-01 .762909E-01 .47242E-02 .04318 .03556 bezier .858985E-02 .064264 .143448E-01 .124824 .053975 .14605 aline .061595 .14986 aline .0635 .150495 aline .06477 .15113 aline .06858 .1524 aline .07366 .15367 aline .076835 .154305 aline .080645 .154305 aline .08128 .15494 aline .094615 .15494 closepath ! end of curve fill dfont endchar dfont char=16 !-------------- Beginning of new char. dfont wid=.777781 hei=.463748 dep=-.036252 italic=0 set path ! start of curve newpath ! start of curve amove .02921 .169545 bezier .686224E-01 .136713 .123119 .112952 .173355 .130175 bezier .199902 .137653 .222586 .153246 .24384 .169545 aline .24765 .169545 aline .25019 .168275 bezier .258573 .159277 .24428 .153149 .23876 .147955 bezier .191949 .111203 .126801 .976403E-01 .07239 .125095 bezier .536025E-01 .134809 .343466E-01 .145152 .02032 .160655 aline .02032 .164465 aline .02159 .167005 aline .02286 .168275 aline .02413 .16891 aline .0254 .169545 closepath ! end of curve ! start of curve amove .14605 .0635 bezier .184908 .601377E-01 .2251 .409145E-01 .25273 .013335 aline .25273 .009525 bezier .248776 -.543458E-03 .238379 .694044E-02 .23368 .012065 bezier .191699 .454729E-01 .133804 .619387E-01 .08382 .0381 bezier .634985E-01 .302212E-01 .463356E-01 .171174E-01 .02921 .004445 aline .0254 .004445 aline .02286 .005715 bezier .144773E-01 .147128E-01 .287702E-01 .208407E-01 .03429 .026035 bezier .661472E-01 .498778E-01 .106011 .662292E-01 .14605 .0635 closepath ! end of curve fill dfont endchar dfont char=17 !-------------- Beginning of new char. dfont wid=.777781 hei=.463748 dep=-.036252 italic=0 set path ! start of curve newpath ! start of curve amove .24765 .16256 aline .24892 .161925 aline .25019 .16129 aline .25146 .16002 aline .25273 .15748 aline .25273 .15367 aline .25146 .15113 aline .25019 .14986 aline .24765 .14859 aline .0254 .14859 aline .02286 .14986 aline .02159 .15113 aline .02032 .15367 aline .02032 .15748 aline .02159 .16002 aline .02286 .16129 aline .02413 .161925 aline .0254 .16256 closepath ! end of curve ! start of curve amove .24765 .09398 aline .24892 .093345 aline .25019 .09271 aline .25146 .09144 aline .25273 .0889 aline .25273 .08509 aline .25146 .08255 aline .25019 .08128 aline .24765 .08001 aline .0254 .08001 aline .02286 .08128 aline .02159 .08255 aline .02032 .08509 aline .02032 .0889 aline .02159 .09144 aline .02286 .09271 aline .02413 .093345 aline .0254 .09398 closepath ! end of curve ! start of curve amove .24765 .0254 aline .24892 .024765 aline .25019 .02413 aline .25146 .02286 aline .25273 .02032 aline .25273 .01651 aline .25146 .01397 aline .25019 .0127 aline .24765 .01143 aline .0254 .01143 aline .02286 .0127 aline .02159 .01397 aline .02032 .01651 aline .02032 .02032 aline .02159 .02286 aline .02286 .02413 aline .02413 .024765 aline .0254 .0254 closepath ! end of curve fill dfont endchar dfont char=18 !-------------- Beginning of new char. dfont wid=.777781 hei=.635971 dep=.135971 italic=0 set path ! start of curve newpath ! start of curve amove .238125 .22225 aline .239395 .221615 aline .240665 .22098 aline .241935 .21971 aline .243205 .21717 aline .243205 .21336 aline .241935 .21082 aline .240665 .20955 aline .238125 .20828 aline .128905 .20828 bezier .875894E-01 .205492 .466912E-01 .17129 .04445 .12827 bezier .384179E-01 .831908E-01 .772482E-01 .387461E-01 .122555 .03429 aline .12319 .033655 aline .12827 .033655 aline .128905 .03302 aline .238125 .03302 aline .240665 .03175 aline .241935 .03048 aline .243205 .02794 aline .243205 .02413 aline .241935 .02159 aline .240665 .02032 aline .238125 .01905 aline .127635 .01905 bezier .792153E-01 .216853E-01 .327627E-01 .625905E-01 .029845 .112395 bezier .239282E-01 .167641 .719792E-01 .219878 .127 .221615 aline .127635 .22225 closepath ! end of curve ! start of curve amove .238125 -.03556 aline .239395 -.036195 aline .240665 -.03683 aline .241935 -.0381 aline .243205 -.04064 aline .243205 -.04445 aline .241935 -.04699 aline .240665 -.04826 aline .238125 -.04953 aline .04191 -.04953 aline .04064 -.048895 aline .0381 -.046355 aline .037465 -.045085 aline .03683 -.04318 aline .03683 -.04191 aline .037465 -.040005 aline .0381 -.038735 aline .04064 -.036195 aline .04191 -.03556 closepath ! end of curve fill dfont endchar dfont char=19 !-------------- Beginning of new char. dfont wid=.777781 hei=.635971 dep=.135971 italic=0 set path ! start of curve newpath ! start of curve amove .145415 .22225 bezier .193835 .219615 .240287 .178709 .243205 .128905 bezier .249122 .736594E-01 .201071 .021422 .14605 .019685 aline .145415 .01905 aline .034925 .01905 aline .032385 .02032 aline .031115 .02159 aline .029845 .02413 aline .029845 .02794 aline .031115 .03048 aline .032385 .03175 aline .034925 .03302 aline .144145 .03302 bezier .185461 .358078E-01 .226359 .700098E-01 .2286 .11303 bezier .234632 .158109 .195802 .202554 .150495 .20701 aline .14986 .207645 aline .14478 .207645 aline .144145 .20828 aline .034925 .20828 aline .032385 .20955 aline .031115 .21082 aline .029845 .21336 aline .029845 .21717 aline .031115 .21971 aline .032385 .22098 aline .034925 .22225 aline .145415 .22225 closepath ! end of curve ! start of curve amove .23114 -.03556 aline .23241 -.036195 aline .23495 -.038735 aline .235585 -.040005 aline .23622 -.04191 aline .23622 -.04318 aline .235585 -.045085 aline .23495 -.046355 aline .23241 -.048895 aline .23114 -.04953 aline .034925 -.04953 aline .032385 -.04826 aline .031115 -.04699 aline .029845 -.04445 aline .029845 -.04064 aline .031115 -.0381 aline .032385 -.03683 aline .033655 -.036195 aline .034925 -.03556 closepath ! end of curve fill dfont endchar dfont char=20 !-------------- Beginning of new char. dfont wid=.777781 hei=.635971 dep=.135971 italic=0 set path ! start of curve newpath ! start of curve amove .238125 .22225 aline .239395 .221615 aline .240665 .22098 aline .241935 .21971 aline .243205 .21717 aline .243205 .21336 aline .241935 .21082 bezier .179806 .179678 .116122 .150793 .05334 .12065 bezier .116122 .090507 .179806 .616225E-01 .241935 .03048 aline .243205 .02794 aline .243205 .02413 aline .241935 .02159 aline .240665 .02032 aline .238125 .01905 aline .234315 .01905 bezier .166699 .051604 .981046E-01 .827149E-01 .031115 .116205 aline .029845 .118745 aline .029845 .122555 aline .031115 .125095 bezier .981046E-01 .158585 .166699 .189696 .234315 .22225 aline .238125 .22225 closepath ! end of curve ! start of curve amove .238125 -.03556 aline .239395 -.036195 aline .240665 -.03683 aline .241935 -.0381 aline .243205 -.04064 aline .243205 -.04445 aline .241935 -.04699 aline .240665 -.04826 aline .238125 -.04953 aline .034925 -.04953 aline .032385 -.04826 aline .031115 -.04699 aline .029845 -.04445 aline .029845 -.04064 aline .031115 -.0381 aline .032385 -.03683 aline .033655 -.036195 aline .034925 -.03556 closepath ! end of curve fill dfont endchar dfont char=21 !-------------- Beginning of new char. dfont wid=.777781 hei=.635971 dep=.135971 italic=0 set path ! start of curve newpath ! start of curve amove .038735 .22225 bezier .106351 .189696 .174945 .158585 .241935 .125095 aline .243205 .122555 aline .243205 .118745 aline .241935 .116205 bezier .174945 .827149E-01 .106351 .516041E-01 .038735 .01905 aline .034925 .01905 aline .032385 .02032 aline .031115 .02159 aline .029845 .02413 aline .029845 .02794 aline .031115 .03048 bezier .932442E-01 .616225E-01 .156928 .090507 .21971 .12065 bezier .156928 .150793 .932442E-01 .179677 .031115 .21082 aline .029845 .21336 aline .029845 .21717 aline .031115 .21971 aline .032385 .22098 aline .033655 .221615 aline .034925 .22225 closepath ! end of curve ! start of curve amove .238125 -.03556 aline .239395 -.036195 aline .240665 -.03683 aline .241935 -.0381 aline .243205 -.04064 aline .243205 -.04445 aline .241935 -.04699 aline .240665 -.04826 aline .238125 -.04953 aline .034925 -.04953 aline .032385 -.04826 aline .031115 -.04699 aline .029845 -.04445 aline .029845 -.04064 aline .031115 -.0381 aline .032385 -.03683 aline .033655 -.036195 aline .034925 -.03556 closepath ! end of curve fill dfont endchar dfont char=22 !-------------- Beginning of new char. dfont wid=.777781 hei=.635971 dep=.135971 italic=0 set path ! start of curve newpath ! start of curve amove .238125 .22225 aline .239395 .221615 aline .240665 .22098 aline .241935 .21971 bezier .245278 .196377 .230994 .172036 .213995 .15621 bezier .1909 .136445 .160722 .126149 .13081 .12065 bezier .179327 .112755 .234599 .867591E-01 .24257 .03302 aline .24257 .029845 aline .243205 .02921 aline .243205 .02413 aline .241935 .02159 aline .240665 .02032 aline .238125 .01905 aline .234315 .01905 aline .231775 .02032 bezier .22667 .030409 .227446 .437844E-01 .220345 .053975 bezier .196479 .965087E-01 .140657 .10524 .098425 .111125 aline .092075 .111125 aline .09144 .11176 aline .084455 .11176 aline .08382 .112395 aline .074295 .112395 aline .07366 .11303 aline .059055 .11303 aline .05842 .113665 aline .034925 .113665 aline .032385 .114935 aline .031115 .116205 aline .029845 .118745 aline .029845 .122555 aline .031115 .125095 aline .032385 .126365 aline .034925 .127635 bezier .883921E-01 .1283 .140993 .129794 .189865 .15621 bezier .213115 .168997 .227486 .194296 .230505 .21971 aline .231775 .22098 aline .233045 .221615 aline .234315 .22225 closepath ! end of curve ! start of curve amove .238125 -.03556 aline .239395 -.036195 aline .240665 -.03683 aline .241935 -.0381 aline .243205 -.04064 aline .243205 -.04445 aline .241935 -.04699 aline .240665 -.04826 aline .238125 -.04953 aline .034925 -.04953 aline .032385 -.04826 aline .031115 -.04699 aline .029845 -.04445 aline .029845 -.04064 aline .031115 -.0381 aline .032385 -.03683 aline .033655 -.036195 aline .034925 -.03556 closepath ! end of curve fill dfont endchar dfont char=23 !-------------- Beginning of new char. dfont wid=.777781 hei=.635971 dep=.135971 italic=0 set path ! start of curve newpath ! start of curve amove .038735 .22225 aline .040005 .221615 aline .041275 .22098 bezier .463801E-01 .210891 .456039E-01 .197516 .052705 .187325 bezier .765707E-01 .144791 .132393 .13606 .174625 .130175 aline .180975 .130175 aline .18161 .12954 aline .188595 .12954 aline .18923 .128905 aline .198755 .128905 aline .19939 .12827 aline .213995 .12827 aline .21463 .127635 aline .238125 .127635 aline .240665 .126365 aline .241935 .125095 aline .243205 .122555 aline .243205 .118745 aline .241935 .116205 aline .240665 .114935 aline .238125 .113665 bezier .184658 .112999 .132057 .111505 .083185 .08509 bezier .599346E-01 .072303 .455643E-01 .470038E-01 .042545 .02159 aline .041275 .02032 aline .038735 .01905 aline .034925 .01905 aline .032385 .02032 aline .031115 .02159 bezier .277717E-01 .449226E-01 .420556E-01 .692642E-01 .059055 .08509 bezier .821496E-01 .104855 .112328 .115151 .14224 .12065 bezier .937231E-01 .128545 .384511E-01 .154541 .03048 .20828 aline .03048 .211455 aline .029845 .21209 aline .029845 .21717 aline .031115 .21971 aline .032385 .22098 aline .033655 .221615 aline .034925 .22225 closepath ! end of curve ! start of curve amove .238125 -.03556 aline .239395 -.036195 aline .240665 -.03683 aline .241935 -.0381 aline .243205 -.04064 aline .243205 -.04445 aline .241935 -.04699 aline .240665 -.04826 aline .238125 -.04953 aline .034925 -.04953 aline .032385 -.04826 aline .031115 -.04699 aline .029845 -.04445 aline .029845 -.04064 aline .031115 -.0381 aline .032385 -.03683 aline .033655 -.036195 aline .034925 -.03556 closepath ! end of curve fill dfont endchar dfont char=24 !-------------- Beginning of new char. dfont wid=.777781 hei=.366875 dep=-.133125 italic=0 set path ! start of curve newpath ! start of curve amove .084455 .127635 bezier .130142 .12201 .151337 .638688E-01 .19939 .06604 bezier .225348 .691263E-01 .244931 .956897E-01 .243205 .121285 aline .244475 .125095 aline .247015 .127635 aline .24892 .127635 bezier .256563 .119819 .251251 .107314 .250825 .09779 bezier .245252 .671709E-01 .215929 .401116E-01 .18415 .04699 bezier .141055 .561582E-01 .120219 .109954 .07366 .10795 bezier .462427E-01 .104775 .279974E-01 .764654E-01 .02921 .050165 aline .028575 .048895 aline .02794 .04826 aline .027305 .04699 aline .026035 .046355 aline .02413 .046355 aline .02159 .048895 bezier .139428E-01 .856537E-01 .431535E-01 .13257 .084455 .127635 closepath ! end of curve fill dfont endchar dfont char=25 !-------------- Beginning of new char. dfont wid=.777781 hei=.483122 dep=-.0168781 italic=0 set path ! start of curve newpath ! start of curve amove .08509 .168275 bezier .128893 .163104 .158367 .113973 .20447 .12065 bezier .223951 .124739 .244372 .140225 .243205 .161925 aline .244475 .165735 aline .247015 .168275 aline .24892 .168275 bezier .255996 .1616 .251986 .150123 .250825 .141605 bezier .241883 .106228 .198391 .090502 .167005 .106045 bezier .134421 .120213 .10666 .153597 .06858 .147955 bezier .476804E-01 .143894 .281676E-01 .126667 .02921 .10414 bezier .273082E-01 .975001E-01 .202857E-01 .101102 .02032 .10668 bezier .161426E-01 .14206 .502912E-01 .173255 .08509 .168275 closepath ! end of curve ! start of curve amove .08509 .08636 bezier .128893 .811886E-01 .158367 .320581E-01 .20447 .038735 bezier .223951 .428243E-01 .244372 .583099E-01 .243205 .08001 aline .244475 .08382 aline .247015 .08636 aline .24892 .08636 aline .25146 .08382 bezier .260532 .047606 .2228 .118098E-01 .187325 .01905 bezier .143425 .235581E-01 .114529 .730058E-01 .06858 .06604 bezier .476931E-01 .619618E-01 .281608E-01 .447617E-01 .02921 .022225 bezier .273082E-01 .155851E-01 .202857E-01 .191866E-01 .02032 .024765 bezier .016138 .601514E-01 .503082E-01 .913161E-01 .08509 .08636 closepath ! end of curve fill dfont endchar dfont char=26 !-------------- Beginning of new char. dfont wid=.777781 hei=.539098 dep=.0390978 italic=0 set path ! start of curve newpath ! start of curve amove .238125 .188595 aline .239395 .18796 aline .240665 .187325 aline .241935 .186055 aline .243205 .183515 aline .243205 .179705 aline .241935 .177165 aline .240665 .175895 aline .238125 .174625 aline .128905 .174625 bezier .875894E-01 .171837 .466912E-01 .137635 .04445 .094615 bezier .384178E-01 .495359E-01 .772481E-01 .509115E-02 .122555 .000635 aline .12319 0 aline .12827 0 aline .128905 -.000635 aline .238125 -.000635 aline .240665 -.001905 aline .241935 -.003175 aline .243205 -.005715 aline .243205 -.009525 aline .241935 -.012065 aline .240665 -.013335 aline .238125 -.014605 aline .127635 -.014605 bezier .792153E-01 -.119697E-01 .327627E-01 .289355E-01 .029845 .07874 bezier .239282E-01 .133986 .719792E-01 .186223 .127 .18796 aline .127635 .188595 closepath ! end of curve fill dfont endchar dfont char=27 !-------------- Beginning of new char. dfont wid=.777781 hei=.539098 dep=.0390978 italic=0 set path ! start of curve newpath ! start of curve amove .145415 .188595 bezier .193835 .18596 .240287 .145055 .243205 .09525 bezier .249122 .400044E-01 .201071 -.122329E-01 .14605 -.01397 aline .145415 -.014605 aline .034925 -.014605 aline .032385 -.013335 aline .031115 -.012065 aline .029845 -.009525 aline .029845 -.005715 aline .031115 -.003175 aline .032385 -.001905 aline .034925 -.000635 aline .144145 -.000635 bezier .185461 .21528E-02 .226359 .363548E-01 .2286 .079375 bezier .234632 .124454 .195802 .168899 .150495 .173355 aline .14986 .17399 aline .14478 .17399 aline .144145 .174625 aline .034925 .174625 aline .032385 .175895 aline .031115 .177165 aline .029845 .179705 aline .029845 .183515 aline .031115 .186055 aline .032385 .187325 aline .034925 .188595 aline .145415 .188595 closepath ! end of curve fill dfont endchar dfont char=28 !-------------- Beginning of new char. dfont wid=1 hei=.539098 dep=.0390978 italic=0 set path ! start of curve newpath ! start of curve amove .219075 .19812 aline .220345 .197485 aline .221615 .19685 aline .222885 .19558 aline .224155 .19304 aline .224155 .18923 bezier .218001 .180654 .205932 .178287 .197485 .172085 bezier .145458 .143955 .939153E-01 .115154 .04191 .086995 bezier .102245 .537774E-01 .163114 .213005E-01 .222885 -.0127 aline .224155 -.01524 aline .224155 -.01905 aline .222885 -.02159 aline .221615 -.02286 aline .219075 -.02413 bezier .204259 -.210227E-01 .19187 -.983661E-02 .1778 -.00381 bezier .12598 .025324 .730581E-01 .529283E-01 .02159 .08255 aline .02032 .08509 aline .02032 .0889 bezier .264736E-01 .974765E-01 .385434E-01 .998433E-01 .04699 .106045 bezier .10322 .136544 .159072 .167569 .215265 .19812 aline .219075 .19812 closepath ! end of curve ! start of curve amove .325755 .19812 aline .327025 .197485 aline .328295 .19685 aline .329565 .19558 aline .330835 .19304 aline .330835 .18923 bezier .324681 .180654 .312612 .178287 .304165 .172085 bezier .252138 .143955 .200595 .115154 .14859 .086995 bezier .208925 .537775E-01 .269794 .213004E-01 .329565 -.0127 aline .330835 -.01524 aline .330835 -.01905 aline .329565 -.02159 aline .328295 -.02286 aline .325755 -.02413 bezier .310939 -.210227E-01 .29855 -.983661E-02 .28448 -.00381 bezier .23266 .025324 .179738 .529283E-01 .12827 .08255 aline .127 .08509 aline .127 .0889 bezier .133154 .974765E-01 .145223 .998433E-01 .15367 .106045 bezier .2099 .136544 .265752 .167569 .321945 .19812 aline .325755 .19812 closepath ! end of curve fill dfont endchar dfont char=29 !-------------- Beginning of new char. dfont wid=1 hei=.539098 dep=.0390978 italic=0 set path ! start of curve newpath ! start of curve amove .02921 .19812 bezier .937828E-01 .16258 .158862 .127743 .222885 .09144 aline .224155 .0889 aline .224155 .08509 bezier .218001 .765135E-01 .205932 .741467E-01 .197485 .067945 bezier .141255 .374457E-01 .854027E-01 .642145E-02 .02921 -.02413 aline .0254 -.02413 aline .02286 -.02286 aline .02159 -.02159 aline .02032 -.01905 aline .02032 -.01524 bezier .264736E-01 -.666353E-02 .385434E-01 -.42967E-02 .04699 .001905 bezier .990167E-01 .300347E-01 .15056 .588356E-01 .202565 .086995 bezier .14223 .120213 .813608E-01 .152689 .02159 .18669 aline .02032 .18923 aline .02032 .19304 aline .02159 .19558 aline .02286 .19685 aline .02413 .197485 aline .0254 .19812 closepath ! end of curve ! start of curve amove .13589 .19812 bezier .200463 .16258 .265542 .127743 .329565 .09144 aline .330835 .0889 aline .330835 .08509 bezier .324681 .765135E-01 .312612 .741467E-01 .304165 .067945 bezier .247935 .374457E-01 .192083 .642145E-02 .13589 -.02413 aline .13208 -.02413 aline .12954 -.02286 aline .12827 -.02159 aline .127 -.01905 aline .127 -.01524 bezier .133154 -.666353E-02 .145223 -.42967E-02 .15367 .001905 bezier .205697 .300347E-01 .25724 .588356E-01 .309245 .086995 bezier .24891 .120213 .188041 .152689 .12827 .18669 aline .127 .18923 aline .127 .19304 aline .12827 .19558 aline .12954 .19685 aline .13081 .197485 aline .13208 .19812 closepath ! end of curve fill dfont endchar dfont char=30 !-------------- Beginning of new char. dfont wid=.777781 hei=.539098 dep=.0390978 italic=0 set path ! start of curve newpath ! start of curve amove .238125 .18796 aline .239395 .187325 aline .240665 .18669 aline .241935 .18542 bezier .245278 .162087 .230994 .137746 .213995 .12192 bezier .1909 .102155 .160722 .918588E-01 .13081 .08636 bezier .179327 .784645E-01 .234599 .524691E-01 .24257 -.00127 aline .24257 -.004445 aline .243205 -.00508 aline .243205 -.01016 aline .241935 -.0127 aline .240665 -.01397 aline .238125 -.01524 aline .234315 -.01524 aline .231775 -.01397 bezier .22667 -.388099E-02 .227446 .949442E-02 .220345 .019685 bezier .196479 .622187E-01 .140657 .709502E-01 .098425 .076835 aline .092075 .076835 aline .09144 .07747 aline .084455 .07747 aline .08382 .078105 aline .074295 .078105 aline .07366 .07874 aline .059055 .07874 aline .05842 .079375 aline .034925 .079375 aline .032385 .080645 aline .031115 .081915 aline .029845 .084455 aline .029845 .088265 aline .031115 .090805 aline .032385 .092075 aline .034925 .093345 bezier .088392 .940105E-01 .140993 .955045E-01 .189865 .12192 bezier .213115 .134707 .227486 .160006 .230505 .18542 aline .231775 .18669 aline .233045 .187325 aline .234315 .18796 closepath ! end of curve fill dfont endchar dfont char=31 !-------------- Beginning of new char. dfont wid=.777781 hei=.539098 dep=.0390978 italic=0 set path ! start of curve newpath ! start of curve amove .038735 .18796 aline .040005 .187325 aline .041275 .18669 bezier .463801E-01 .176601 .456039E-01 .163226 .052705 .153035 bezier .765706E-01 .110501 .132393 .10177 .174625 .095885 aline .180975 .095885 aline .18161 .09525 aline .188595 .09525 aline .18923 .094615 aline .198755 .094615 aline .19939 .09398 aline .213995 .09398 aline .21463 .093345 aline .238125 .093345 aline .240665 .092075 aline .241935 .090805 aline .243205 .088265 aline .243205 .084455 aline .241935 .081915 aline .240665 .080645 aline .238125 .079375 bezier .184658 .787095E-01 .132057 .772155E-01 .083185 .0508 bezier .599346E-01 .038013 .455644E-01 .127138E-01 .042545 -.0127 aline .041275 -.01397 aline .038735 -.01524 aline .034925 -.01524 aline .032385 -.01397 aline .031115 -.0127 bezier .277717E-01 .106326E-01 .420556E-01 .349742E-01 .059055 .0508 bezier .821496E-01 .705655E-01 .112328 .808612E-01 .14224 .08636 bezier .937231E-01 .942554E-01 .384511E-01 .120251 .03048 .17399 aline .03048 .177165 aline .029845 .1778 aline .029845 .18288 aline .031115 .18542 aline .032385 .18669 aline .033655 .187325 aline .034925 .18796 closepath ! end of curve fill dfont endchar dfont char=32 !-------------- Beginning of new char. dfont wid=1 hei=.366875 dep=-.133125 italic=0 set path ! start of curve newpath ! start of curve amove .084455 .149225 aline .085725 .14859 aline .086995 .14732 bezier .865047E-01 .135251 .769461E-01 .124273 .070485 .1143 aline .067945 .11176 aline .06731 .11049 aline .056515 .099695 aline .055245 .09906 aline .052705 .09652 aline .051435 .095885 aline .050165 .094615 aline .0508 .09398 aline .325755 .09398 aline .328295 .09271 aline .329565 .09144 aline .330835 .0889 aline .330835 .08509 aline .329565 .08255 aline .328295 .08128 aline .325755 .08001 aline .0508 .08001 bezier .588791E-01 .710038E-01 .719593E-01 .607064E-01 .078105 .04826 aline .07874 .047625 aline .08001 .045085 aline .080645 .04445 aline .085725 .03429 aline .08636 .032385 bezier .921709E-01 .244938E-01 .766052E-01 .211784E-01 .0762 .029845 bezier .665976E-01 .055883 .442111E-01 .736209E-01 .02032 .085725 aline .02032 .088265 bezier .453228E-01 .10075 .682495E-01 .119876 .07747 .14732 aline .07874 .14859 aline .08001 .149225 closepath ! end of curve fill dfont endchar dfont char=33 !-------------- Beginning of new char. dfont wid=1 hei=.366875 dep=-.133125 italic=0 set path ! start of curve newpath ! start of curve amove .271145 .149225 bezier .278563 .13966 .281962 .126063 .291465 .117475 bezier .301375 .103848 .317214 .967422E-01 .330835 .088265 aline .330835 .085725 bezier .311315 .753579E-01 .29163 .620419E-01 .28067 .04191 aline .27559 .03175 bezier .276102 .245503E-01 .264362 .214067E-01 .263525 .02921 bezier .270941 .492287E-01 .284243 .663811E-01 .30099 .079375 aline .300355 .08001 aline .0254 .08001 aline .02286 .08128 aline .02159 .08255 aline .02032 .08509 aline .02032 .0889 aline .02159 .09144 aline .02286 .09271 aline .0254 .09398 aline .300355 .09398 bezier .292276 .102986 .279196 .113284 .27305 .12573 aline .272415 .126365 aline .271145 .128905 aline .27051 .12954 aline .26543 .1397 aline .264795 .141605 aline .26416 .142875 aline .263525 .14478 aline .263525 .14605 aline .26416 .14732 aline .26543 .14859 aline .2667 .149225 aline .271145 .149225 closepath ! end of curve fill dfont endchar dfont char=34 !-------------- Beginning of new char. dfont wid=.500002 hei=.694445 dep=.194443 italic=0 set path ! start of curve newpath ! start of curve amove .089535 .24257 bezier .101882 .217798 .121183 .194652 .14859 .18542 aline .14986 .18415 aline .150495 .18288 aline .150495 .178435 aline .14986 .177165 aline .14859 .175895 bezier .134609 .177063 .12228 .188066 .111125 .196215 aline .100965 .206375 aline .10033 .207645 aline .09779 .210185 aline .097155 .211455 aline .095885 .212725 aline .09525 .21209 aline .09525 -.064135 aline .09398 -.066675 aline .09271 -.067945 aline .09017 -.069215 aline .08636 -.069215 aline .08382 -.067945 aline .08255 -.066675 aline .08128 -.064135 aline .08128 .21209 bezier .723506E-01 .203904 .618374E-01 .191124 .04953 .184785 bezier .430073E-01 .181155 .354102E-01 .175281 .02794 .175895 aline .02667 .177165 bezier .223864E-01 .187638 .371278E-01 .187362 .042545 .192405 bezier .632247E-01 .202925 .763512E-01 .222741 .086995 .24257 closepath ! end of curve fill dfont endchar dfont char=35 !-------------- Beginning of new char. dfont wid=.500002 hei=.694445 dep=.194443 italic=0 set path ! start of curve newpath ! start of curve amove .09017 .24257 aline .09144 .241935 aline .09271 .2413 aline .09398 .24003 aline .09525 .23749 aline .09525 -.038735 bezier .104179 -.305494E-01 .114693 -.177686E-01 .127 -.01143 bezier .133523 -.780005E-02 .14112 -.192582E-02 .14859 -.00254 aline .14986 -.00381 bezier .154144 -.142829E-01 .139402 -.014007 .133985 -.01905 bezier .113297 -.295028E-01 .100042 -.496424E-01 .089535 -.069215 aline .086995 -.069215 bezier .745148E-01 -.441818E-01 .055329 -.213755E-01 .02794 -.012065 aline .02667 -.010795 aline .026035 -.009525 aline .026035 -.00508 aline .02667 -.00381 aline .02794 -.00254 bezier .041921 -.37079E-02 .542498E-01 -.147106E-01 .065405 -.02286 aline .075565 -.03302 aline .0762 -.03429 aline .07874 -.03683 aline .079375 -.0381 aline .080645 -.03937 aline .08128 -.038735 aline .08128 .23749 aline .08255 .24003 aline .08382 .2413 aline .08509 .241935 aline .08636 .24257 closepath ! end of curve fill dfont endchar dfont char=36 !-------------- Beginning of new char. dfont wid=1 hei=.366875 dep=-.133125 italic=0 set path ! start of curve newpath ! start of curve amove .084455 .149225 aline .085725 .14859 aline .086995 .14732 bezier .865047E-01 .135251 .769461E-01 .124273 .070485 .1143 aline .067945 .11176 aline .06731 .11049 aline .056515 .099695 aline .055245 .09906 aline .052705 .09652 aline .051435 .095885 aline .050165 .094615 aline .0508 .09398 aline .300355 .09398 bezier .292276 .102986 .279196 .113284 .27305 .12573 aline .272415 .126365 aline .271145 .128905 aline .27051 .12954 aline .26543 .1397 aline .264795 .141605 bezier .258984 .149496 .27455 .152812 .274955 .144145 bezier .284484 .118097 .307192 .100218 .330835 .088265 aline .330835 .085725 bezier .311315 .753579E-01 .29163 .620419E-01 .28067 .04191 aline .27559 .03175 bezier .276102 .245503E-01 .264362 .214067E-01 .263525 .02921 bezier .270941 .492287E-01 .284243 .663811E-01 .30099 .079375 aline .300355 .08001 aline .0508 .08001 bezier .588791E-01 .710038E-01 .719593E-01 .607064E-01 .078105 .04826 aline .07874 .047625 aline .08001 .045085 aline .080645 .04445 aline .085725 .03429 aline .08636 .032385 bezier .921709E-01 .244938E-01 .766052E-01 .211784E-01 .0762 .029845 bezier .665976E-01 .055883 .442111E-01 .736209E-01 .02032 .085725 aline .02032 .088265 bezier .453228E-01 .10075 .682495E-01 .119876 .07747 .14732 aline .07874 .14859 aline .08001 .149225 closepath ! end of curve fill dfont endchar dfont char=37 !-------------- Beginning of new char. dfont wid=1 hei=.694445 dep=.194443 italic=0 set path ! start of curve newpath ! start of curve amove .24638 .24384 bezier .272963 .231242 .301931 .233202 .32893 .24257 aline .330835 .240665 bezier .321898 .214405 .319236 .185988 .33147 .16002 aline .332105 .158115 aline .332105 .156845 aline .33147 .155575 aline .32766 .151765 aline .324485 .151765 bezier .312964 .170968 .312514 .194209 .31369 .215265 aline .03175 -.066675 aline .02921 -.067945 aline .0254 -.067945 aline .02286 -.066675 aline .02159 -.065405 aline .02032 -.062865 aline .02032 -.059055 aline .02159 -.056515 aline .30353 .225425 bezier .282474 .224249 .259233 .224699 .24003 .23622 aline .24003 .239395 aline .24384 .243205 aline .24511 .24384 closepath ! end of curve fill dfont endchar dfont char=38 !-------------- Beginning of new char. dfont wid=1 hei=.694445 dep=.194443 italic=0 set path ! start of curve newpath ! start of curve amove .02921 .2413 aline .03048 .240665 aline .03175 .24003 aline .31369 -.04191 bezier .312514 -.208541E-01 .312964 .238704E-02 .324485 .02159 aline .32766 .02159 aline .33147 .01778 aline .332105 .01651 bezier .321461 -.947514E-02 .319375 -.380617E-01 .330835 -.064135 aline .330835 -.06731 aline .32893 -.069215 bezier .311864 -.647101E-01 .295126 -.590722E-01 .277495 -.06223 bezier .266121 -.615412E-01 .254815 -.692691E-01 .24384 -.06985 aline .24003 -.06604 aline .24003 -.062865 bezier .259233 -.513442E-01 .282474 -.508936E-01 .30353 -.05207 aline .02159 .22987 aline .02032 .23241 aline .02032 .23622 aline .02159 .23876 aline .02286 .24003 aline .02413 .240665 aline .0254 .2413 closepath ! end of curve fill dfont endchar dfont char=39 !-------------- Beginning of new char. dfont wid=.777781 hei=.463748 dep=-.036252 italic=0 set path ! start of curve newpath ! start of curve amove .084455 .161925 bezier .128769 .156814 .153077 .104572 .19939 .10668 bezier .222888 .109188 .244879 .131155 .243205 .155575 aline .244475 .159385 aline .247015 .161925 aline .24892 .161925 bezier .256053 .155675 .251674 .144363 .25146 .136525 bezier .245902 .101429 .206515 .761931E-01 .173355 .090805 bezier .137905 .103923 .11442 .144159 .07366 .14224 bezier .487094E-01 .139733 .278142E-01 .116001 .02921 .090805 aline .028575 .089535 aline .02794 .0889 aline .027305 .08763 aline .026035 .086995 aline .02413 .086995 aline .02159 .089535 bezier .133437E-01 .125607 .459614E-01 .167006 .084455 .161925 closepath ! end of curve ! start of curve amove .24765 .0254 aline .24892 .024765 aline .25019 .02413 aline .25146 .02286 aline .25273 .02032 aline .25273 .01651 aline .25146 .01397 aline .25019 .0127 aline .24765 .01143 aline .0254 .01143 aline .02286 .0127 aline .02159 .01397 aline .02032 .01651 aline .02032 .02032 aline .02159 .02286 aline .02286 .02413 aline .02413 .024765 aline .0254 .0254 closepath ! end of curve fill dfont endchar dfont char=40 !-------------- Beginning of new char. dfont wid=1 hei=.366875 dep=-.133125 italic=0 set path ! start of curve newpath ! start of curve amove .14478 .183515 aline .14605 .18288 aline .14732 .182245 bezier .148131 .172475 .139051 .163961 .13462 .155575 bezier .129084 .145716 .119222 .136594 .113665 .12827 aline .325755 .12827 aline .328295 .127 aline .329565 .12573 aline .330835 .12319 aline .330835 .11938 aline .329565 .11684 aline .328295 .11557 aline .325755 .1143 aline .097155 .1143 bezier .843445E-01 .103165 .674945E-01 .948952E-01 .537633E-01 .867833E-01 bezier .693684E-01 .793356E-01 .084311 .709686E-01 .097155 .05969 aline .325755 .05969 aline .328295 .05842 aline .329565 .05715 aline .330835 .05461 aline .330835 .0508 aline .329565 .04826 aline .328295 .04699 aline .325755 .04572 aline .113665 .04572 bezier .125445 .304036E-01 .141994 .131348E-01 .147955 -.006985 aline .14732 -.008255 aline .14478 -.009525 aline .13716 -.009525 bezier .130195 -.390553E-02 .128023 .700818E-02 .12192 .01397 bezier .989294E-01 .484474E-01 .628927E-01 .737787E-01 .022225 .08382 aline .02032 .085725 aline .02032 .0889 bezier .401174E-01 .967274E-01 .622193E-01 .103283 .079375 .11684 bezier .103614 .133242 .122168 .156849 .135255 .18288 aline .13716 .183515 closepath ! end of curve fill dfont endchar dfont char=")" !-------------- Beginning of new char. dfont wid=1 hei=.366875 dep=-.133125 italic=0 set path ! start of curve newpath ! start of curve amove .213995 .183515 bezier .220442 .179032 .221883 .169118 .22733 .163195 bezier .249994 .127187 .287123 .100897 .32893 .090805 aline .330835 .0889 aline .330835 .085725 bezier .308457 .771522E-01 .283929 .688139E-01 .26543 .052705 bezier .24405 .366046E-01 .227861 .148441E-01 .2159 -.00889 aline .213995 -.009525 aline .206375 -.009525 aline .203835 -.008255 bezier .202995 .118927E-02 .211699 .958034E-02 .2159 .01778 bezier .221878 .027682 .231507 .373417E-01 .23749 .04572 aline .0254 .04572 aline .02286 .04699 aline .02159 .04826 aline .02032 .0508 aline .02032 .05461 aline .02159 .05715 aline .02286 .05842 aline .0254 .05969 aline .254 .05969 bezier .266386 .716523E-01 .283895 .789818E-01 .297392 .878417E-01 bezier .281569 .094558 .267177 .103727 .254 .1143 aline .0254 .1143 aline .02286 .11557 aline .02159 .11684 aline .02032 .11938 aline .02032 .12319 aline .02159 .12573 aline .02286 .127 aline .0254 .12827 aline .23749 .12827 bezier .225808 .143657 .209185 .160873 .2032 .180975 aline .203835 .182245 aline .206375 .183515 aline .213995 .183515 closepath ! end of curve fill dfont endchar dfont char="*" !-------------- Beginning of new char. dfont wid=.611113 hei=.694445 dep=.194443 italic=0 set path ! start of curve newpath ! start of curve amove .10922 .24257 bezier .117684 .220399 .125832 .196248 .141605 .1778 bezier .157726 .155759 .180441 .14013 .203835 .127 aline .203835 .11684 aline .202565 .11557 bezier .192171 .115488 .183163 .124897 .17399 .12954 bezier .165343 .134951 .157129 .144256 .149225 .14859 aline .149225 -.062865 aline .14859 -.06477 aline .147955 -.06604 aline .145415 -.06858 aline .144145 -.069215 aline .1397 -.069215 aline .13843 -.06858 aline .13589 -.06604 aline .135255 -.06477 aline .135255 .1651 bezier .123948 .178177 .115597 .195269 .107103 .209127 bezier .100052 .193149 .906485E-01 .178616 .08001 .1651 aline .08001 -.06477 aline .079375 -.06604 aline .076835 -.06858 aline .075565 -.069215 aline .07112 -.069215 aline .06985 -.06858 aline .06731 -.06604 aline .066675 -.06477 aline .06604 -.062865 aline .06604 .14859 bezier .557202E-01 .14211 .045073 .130646 .03302 .12446 aline .032385 .123825 aline .029845 .122555 aline .02921 .12192 aline .0254 .120015 aline .024765 .11938 aline .015875 .114935 aline .01397 .114935 aline .0127 .11557 aline .01143 .11684 aline .01143 .127 bezier .563188E-01 .149777 .924658E-01 .190624 .10414 .240665 aline .106045 .24257 aline .10922 .24257 closepath ! end of curve fill dfont endchar dfont char="+" !-------------- Beginning of new char. dfont wid=.611113 hei=.694445 dep=.194443 italic=0 set path ! start of curve newpath ! start of curve amove .075565 .24257 aline .076835 .241935 aline .079375 .239395 aline .08001 .238125 aline .08001 .008255 bezier .913171E-01 -.482139E-02 .099668 -.219144E-01 .108162 -.357717E-01 bezier .115213 -.197942E-01 .124616 -.526066E-02 .135255 .008255 aline .135255 .238125 aline .13589 .239395 aline .13843 .241935 aline .1397 .24257 aline .144145 .24257 aline .145415 .241935 aline .147955 .239395 aline .14859 .238125 aline .149225 .23622 aline .149225 .024765 bezier .159545 .312445E-01 .170192 .427094E-01 .182245 .048895 aline .18288 .04953 aline .18542 .0508 aline .186055 .051435 aline .189865 .05334 aline .1905 .053975 aline .19939 .05842 aline .201295 .05842 aline .202565 .057785 aline .203835 .056515 aline .203835 .046355 bezier .158946 .235779E-01 .122799 -.172694E-01 .111125 -.06731 aline .10922 -.069215 aline .106045 -.069215 bezier .975811E-01 -.470444E-01 .894331E-01 -.228932E-01 .07366 -.004445 bezier .575393E-01 .175961E-01 .348244E-01 .332248E-01 .01143 .046355 aline .01143 .056515 aline .0127 .057785 bezier .230945E-01 .578669E-01 .321021E-01 .484576E-01 .041275 .043815 bezier .499217E-01 .384042E-01 .581358E-01 .290986E-01 .06604 .024765 aline .06604 .23622 aline .066675 .238125 aline .06731 .239395 aline .06985 .241935 aline .07112 .24257 aline .075565 .24257 closepath ! end of curve fill dfont endchar dfont char="," !-------------- Beginning of new char. dfont wid=1 hei=.366875 dep=-.133125 italic=0 set path ! start of curve newpath ! start of curve amove .11811 .183515 aline .11938 .18288 aline .12065 .18161 bezier .116805 .161507 .10117 .144002 .09144 .12827 aline .259715 .12827 bezier .249985 .144002 .23435 .161507 .230505 .18161 aline .231775 .18288 aline .233045 .183515 aline .2413 .183515 bezier .248792 .175916 .250777 .163373 .25781 .15494 bezier .275938 .124223 .306339 .103016 .338455 .0889 aline .338455 .085725 bezier .297 .681904E-01 .260652 .360301E-01 .244475 -.006985 aline .24257 -.00889 aline .2413 -.009525 aline .233045 -.009525 aline .231775 -.00889 aline .230505 -.00762 bezier .234452 .124091E-01 .249828 .301014E-01 .259715 .04572 aline .09144 .04572 bezier .101327 .301014E-01 .116703 .124091E-01 .12065 -.00762 aline .11938 -.00889 aline .11811 -.009525 aline .109855 -.009525 bezier .101859 -.800591E-03 .993063E-01 .128937E-01 .09144 .022225 bezier .729822E-01 .513696E-01 .437969E-01 .719938E-01 .0127 .085725 aline .0127 .0889 bezier .541818E-01 .106225 .905504E-01 .138 .10668 .180975 aline .108585 .18288 aline .109855 .183515 closepath ! end of curve ! start of curve amove .07366 .111125 bezier .631921E-01 .10204 .516887E-01 .943926E-01 .040005 .086995 bezier .053421 .794741E-01 .659031E-01 .706575E-01 .076835 .05969 aline .27432 .05969 bezier .285252 .706575E-01 .297734 .794741E-01 .31115 .086995 bezier .298261 .952468E-01 .285377 .103506 .27432 .1143 aline .076835 .1143 aline .07366 .111125 closepath ! end of curve fill dfont endchar dfont char="-" !-------------- Beginning of new char. dfont wid=1 hei=.694445 dep=.194443 italic=0 set path ! start of curve newpath ! start of curve amove .106045 .24384 aline .107315 .243205 aline .111125 .239395 aline .111125 .23622 bezier .919221E-01 .224699 .686809E-01 .224249 .047625 .225425 aline .329565 -.056515 aline .330835 -.059055 aline .330835 -.062865 aline .329565 -.065405 aline .328295 -.066675 aline .325755 -.067945 aline .321945 -.067945 aline .319405 -.066675 aline .037465 .215265 bezier .386414E-01 .194209 .381908E-01 .170968 .02667 .151765 aline .023495 .151765 aline .019685 .155575 aline .01905 .156845 bezier .298926E-01 .183059 .315596E-01 .211725 .02032 .238125 aline .02032 .24003 aline .020955 .2413 aline .02159 .241935 bezier .302581E-01 .242722 .393402E-01 .23618 .04826 .23622 bezier .671018E-01 .232613 .867338E-01 .235981 .104775 .24384 closepath ! end of curve fill dfont endchar dfont char="." !-------------- Beginning of new char. dfont wid=1 hei=.694445 dep=.194443 italic=0 set path ! start of curve newpath ! start of curve amove .325755 .2413 aline .327025 .240665 aline .328295 .24003 aline .329565 .23876 aline .330835 .23622 aline .330835 .23241 aline .329565 .22987 aline .047625 -.05207 bezier .686805E-01 -.508936E-01 .919221E-01 -.513442E-01 .111125 -.062865 aline .111125 -.06604 aline .107315 -.06985 aline .106045 -.070485 bezier .800599E-01 -.598413E-01 .514734E-01 -.577546E-01 .0254 -.069215 aline .02286 -.069215 aline .02159 -.06858 aline .020955 -.067945 bezier .207733E-01 -.577403E-01 .276506E-01 -.471434E-01 .027305 -.03683 bezier .301848E-01 -.185717E-01 .253472E-01 -.862596E-03 .01905 .01651 aline .019685 .01778 aline .023495 .02159 aline .02667 .02159 bezier .381908E-01 .23871E-02 .386414E-01 -.208545E-01 .037465 -.04191 aline .319405 .24003 aline .320675 .240665 aline .321945 .2413 closepath ! end of curve fill dfont endchar dfont char="/" !-------------- Beginning of new char. dfont wid=.777781 hei=.430555 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .086995 .15367 bezier .1212 .150267 .146254 .121861 .16256 .09398 bezier .178597 .127285 .213154 .160773 .25273 .1524 aline .25273 .14351 bezier .214474 .149404 .18379 .114576 .171053 .815975E-01 bezier .188935 .544138E-01 .205072 .017263 .24003 .009525 aline .250825 .009525 aline .25146 .01016 aline .25273 .01016 aline .25273 -.003175 bezier .212141 -.117353E-01 .177595 .225465E-01 .159385 .055245 bezier .142966 .206702E-01 .106271 -.133584E-01 .065405 -.00254 bezier .267818E-01 .101426E-01 .159037E-01 .576644E-01 .02159 .09271 bezier .255189E-01 .125158 .519951E-01 .157947 .086995 .15367 closepath ! end of curve ! start of curve amove .070485 .139065 bezier .384803E-01 .133748 .243934E-01 .094856 .02794 .066675 bezier .028659 .373659E-01 .501927E-01 .836274E-03 .08382 .00508 bezier .116182 .968183E-02 .139239 .386678E-01 .150892 .676275E-01 bezier .13301 .948113E-01 .116873 .131962 .081915 .1397 aline .07112 .1397 aline .070485 .139065 closepath ! end of curve fill dfont endchar dfont char="0" !-------------- Beginning of new char. dfont wid=.275 hei=.555557 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .074295 .194945 bezier .890178E-01 .193887 .963883E-01 .176406 .088265 .164465 bezier .668573E-01 .114759 .463819E-01 .644768E-01 .02413 .01524 bezier .182538E-01 .138715E-01 .634721E-02 .180145E-01 .01143 .026035 bezier .269533E-01 .798744E-01 .397865E-01 .134924 .05715 .18796 aline .05969 .1905 aline .06096 .191135 aline .06223 .192405 aline .06477 .193675 aline .066675 .19431 aline .069215 .194945 closepath ! end of curve fill dfont endchar dfont char="1" !-------------- Beginning of new char. dfont wid=1 hei=.430555 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .09398 .15367 bezier .130371 .150337 .158833 .122663 .178435 .09398 bezier .198783 .129055 .238121 .162666 .281305 .151765 bezier .32718 .136994 .341181 .786241E-01 .32385 .0381 bezier .312108 .742582E-02 .277474 -.118173E-01 .245745 -.00254 bezier .214002 .500324E-02 .190597 .296952E-01 .17272 .055245 bezier .152372 .201701E-01 .113034 -.134407E-01 .06985 -.00254 bezier .023975 .122308E-01 .997435E-02 .070601 .027305 .111125 bezier .379367E-01 .13738 .650974E-01 .157155 .09398 .15367 closepath ! end of curve ! start of curve amove .2667 .142875 bezier .231148 .14249 .201923 .111282 .188595 .08128 bezier .209455 .564866E-01 .226131 .023508 .25908 .0127 bezier .289676 .614689E-02 .318783 .325745E-01 .32258 .062865 bezier .329872 .967477E-01 .306173 .144433 .2667 .142875 closepath ! end of curve ! start of curve amove .07493 .136525 bezier .037492 .131334 .192195E-01 .850294E-01 .03048 .052705 bezier .036694 .248801E-01 .639278E-01 .604781E-03 .09271 .006985 bezier .124858 .119413E-01 .15015 .401814E-01 .16256 .067945 bezier .1417 .927384E-01 .125024 .125717 .092075 .136525 aline .0889 .136525 aline .088265 .13716 aline .075565 .13716 aline .07493 .136525 closepath ! end of curve fill dfont endchar dfont char="2" !-------------- Beginning of new char. dfont wid=.666669 hei=.539098 dep=.0390978 italic=0 set path ! start of curve newpath ! start of curve amove .19939 .188595 aline .20066 .18796 aline .20193 .187325 aline .2032 .186055 aline .20447 .183515 aline .20447 .179705 aline .2032 .177165 aline .20193 .175895 aline .19939 .174625 aline .12954 .174625 bezier .882182E-01 .171709 .471934E-01 .137613 .04445 .094615 aline .045085 .09398 aline .19939 .09398 aline .20193 .09271 aline .2032 .09144 aline .20447 .0889 aline .20447 .08509 aline .2032 .08255 aline .20193 .08128 aline .19939 .08001 aline .045085 .08001 bezier .045969 .416337E-01 .805942E-01 .761401E-02 .118745 .00127 aline .11938 .000635 aline .12319 .000635 aline .123825 0 aline .128905 0 aline .12954 -.000635 aline .19939 -.000635 aline .20193 -.001905 aline .2032 -.003175 aline .20447 -.005715 aline .20447 -.009525 aline .2032 -.012065 aline .20193 -.013335 aline .19939 -.014605 aline .12827 -.014605 bezier .792581E-01 -.118194E-01 .329876E-01 .294704E-01 .029845 .079375 bezier .244899E-01 .134461 .729833E-01 .186059 .127635 .18796 aline .12827 .188595 closepath ! end of curve fill dfont endchar dfont char="3" !-------------- Beginning of new char. dfont wid=.666669 hei=.539098 dep=.0390978 italic=0 set path ! start of curve newpath ! start of curve amove .106045 .188595 bezier .155057 .185809 .201327 .14452 .20447 .094615 bezier .209825 .395294E-01 .161332 -.120689E-01 .10668 -.01397 aline .106045 -.014605 aline .034925 -.014605 aline .032385 -.013335 aline .031115 -.012065 aline .029845 -.009525 aline .029845 -.005715 aline .031115 -.003175 aline .032385 -.001905 aline .034925 -.000635 aline .104775 -.000635 bezier .146097 .228061E-02 .187122 .363765E-01 .189865 .079375 aline .18923 .08001 aline .034925 .08001 aline .032385 .08128 aline .031115 .08255 aline .029845 .08509 aline .029845 .0889 aline .031115 .09144 aline .032385 .09271 aline .034925 .09398 aline .18923 .09398 bezier .188346 .132356 .153721 .166376 .11557 .17272 aline .114935 .173355 aline .111125 .173355 aline .11049 .17399 aline .10541 .17399 aline .104775 .174625 aline .034925 .174625 aline .032385 .175895 aline .031115 .177165 aline .029845 .179705 aline .029845 .183515 aline .031115 .186055 aline .032385 .187325 aline .034925 .188595 aline .106045 .188595 closepath ! end of curve fill dfont endchar dfont char="4" !-------------- Beginning of new char. dfont wid=.888891 hei=.694445 dep=.194445 italic=0 set path ! start of curve newpath ! start of curve amove .158115 .25019 bezier .167245 .243289 .169804 .230197 .17653 .22098 bezier .214632 .14992 .253335 .792939E-01 .291465 .008255 aline .291465 .004445 aline .290195 .001905 aline .288925 .000635 aline .286385 -.000635 aline .026035 -.000635 aline .023495 .000635 aline .022225 .001905 aline .020955 .004445 bezier .238496E-01 .190514E-01 .348311E-01 .031221 .04064 .045085 bezier .780524E-01 .112763 .113827 .181621 .151765 .24892 aline .153035 .249555 aline .154305 .25019 closepath ! end of curve ! start of curve amove .155575 .22733 bezier .117712 .155979 .771472E-01 .841377E-01 .04064 .013335 aline .27178 .013335 bezier .235007 .843104E-01 .194692 .156696 .15621 .227965 aline .155575 .22733 closepath ! end of curve fill dfont endchar dfont char="5" !-------------- Beginning of new char. dfont wid=.888891 hei=.694445 dep=.194445 italic=0 set path ! start of curve newpath ! start of curve amove .286385 .17399 aline .287655 .173355 aline .288925 .17272 aline .290195 .17145 aline .291465 .16891 bezier .28857 .154304 .277589 .142134 .27178 .12827 bezier .234368 .605922E-01 .198593 -.826587E-02 .160655 -.075565 aline .158115 -.076835 aline .154305 -.076835 bezier .145175 -.699341E-01 .142616 -.056842 .13589 -.047625 bezier .977881E-01 .234345E-01 .590855E-01 .940611E-01 .020955 .1651 aline .020955 .16891 aline .022225 .17145 aline .023495 .17272 aline .024765 .173355 aline .026035 .17399 closepath ! end of curve ! start of curve amove .040005 .159385 bezier .790599E-01 .882839E-01 .117204 .165263E-01 .15621 -.05461 bezier .194692 .166586E-01 .235007 .890446E-01 .27178 .16002 aline .04064 .16002 aline .040005 .159385 closepath ! end of curve fill dfont endchar dfont char="6" !-------------- Beginning of new char. dfont wid=0 hei=.694445 dep=.194443 italic=0 set path ! start of curve newpath ! start of curve amove .21844 .25019 aline .21971 .249555 aline .22098 .24892 aline .22225 .24765 aline .22352 .24511 aline .22352 .2413 bezier .169227 .135966 .116044 .298335E-01 .06096 -.07493 aline .05842 -.0762 aline .05461 -.0762 aline .05207 -.07493 aline .0508 -.07366 aline .04953 -.07112 aline .04953 -.06731 bezier .103823 .380237E-01 .157006 .144156 .21209 .24892 aline .21463 .25019 aline .21844 .25019 closepath ! end of curve fill dfont endchar dfont char="7" !-------------- Beginning of new char. dfont wid=0 hei=.366875 dep=-.133125 italic=0 set path ! start of curve newpath ! start of curve amove .02921 .1524 aline .03048 .151765 aline .03175 .15113 aline .03302 .14986 aline .03429 .14732 aline .03429 .094615 aline .034925 .09398 aline .038735 .09398 aline .041275 .09271 aline .04318 .090805 aline .043815 .089535 aline .043815 .084455 aline .04318 .083185 aline .041275 .08128 aline .038735 .08001 aline .034925 .08001 aline .03429 .079375 aline .03429 .02667 aline .03302 .02413 aline .03175 .02286 aline .02921 .02159 aline .0254 .02159 aline .02286 .02286 aline .02159 .02413 aline .02032 .02667 aline .02032 .14732 aline .02159 .14986 aline .02286 .15113 aline .02413 .151765 aline .0254 .1524 closepath ! end of curve fill dfont endchar dfont char="8" !-------------- Beginning of new char. dfont wid=.555557 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .009525 .24257 bezier .183529E-01 .236418 .185576E-01 .223201 .023495 .213995 bezier .307665E-01 .195188 .037857 .176305 .045085 .15748 aline .150495 .15748 bezier .161809 .185245 .17076 .21437 .183515 .2413 aline .186055 .24257 aline .189865 .24257 bezier .200823 .237418 .190545 .225054 .188595 .21717 bezier .159632 .142572 .132788 .667156E-01 .102235 -.006985 bezier .918451E-01 -.012899 .892738E-01 .14683E-02 .08636 .008255 bezier .579422E-01 .834618E-01 .291771E-01 .158525 .000635 .23368 aline .000635 .23749 aline .001905 .24003 aline .003175 .2413 aline .004445 .241935 aline .005715 .24257 closepath ! end of curve ! start of curve amove .050165 .142875 bezier .667682E-01 .102045 .817609E-01 .602374E-01 .09779 .01905 bezier .113291 .603817E-01 .130294 .102873 .14478 .14351 aline .0508 .14351 aline .050165 .142875 closepath ! end of curve fill dfont endchar dfont char="9" !-------------- Beginning of new char. dfont wid=.555557 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .169545 .24257 aline .170815 .241935 aline .172085 .2413 aline .173355 .24003 aline .174625 .23749 aline .174625 .004445 aline .173355 .001905 aline .172085 .000635 aline .169545 -.000635 aline .0254 -.000635 aline .02286 .000635 aline .02159 .001905 aline .02032 .004445 aline .02032 .008255 aline .02159 .010795 aline .02286 .012065 aline .0254 .013335 aline .16002 .013335 aline .160655 .01397 aline .160655 .113665 aline .16002 .1143 aline .029845 .1143 aline .027305 .11557 aline .02667 .116205 aline .0254 .118745 aline .0254 .12319 aline .02667 .12573 aline .027305 .126365 aline .029845 .127635 aline .03175 .12827 aline .16002 .12827 aline .160655 .128905 aline .160655 .227965 aline .16002 .2286 aline .0254 .2286 aline .02286 .22987 aline .02159 .23114 aline .02032 .23368 aline .02032 .23749 aline .02159 .24003 aline .02286 .2413 aline .02413 .241935 aline .0254 .24257 closepath ! end of curve fill dfont endchar dfont char=":" !-------------- Beginning of new char. dfont wid=.666669 hei=.430555 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .208915 .123825 aline .210185 .12319 aline .211455 .122555 aline .212725 .121285 aline .213995 .118745 aline .213995 .03556 aline .212725 .03302 aline .211455 .03175 aline .208915 .03048 aline .205105 .03048 aline .202565 .03175 aline .201295 .03302 aline .200025 .03556 aline .200025 .10922 aline .19939 .109855 aline .0254 .109855 aline .02286 .111125 aline .02159 .112395 aline .02032 .114935 aline .02032 .118745 aline .02159 .121285 aline .02286 .122555 aline .02413 .12319 aline .0254 .123825 closepath ! end of curve fill dfont endchar dfont char=";" !-------------- Beginning of new char. dfont wid=.500002 hei=.75 dep=.0555553 italic=0 set path ! start of curve newpath ! start of curve amove .131445 .269875 bezier .142121 .264786 .132565 .252078 .131445 .24384 aline .13081 .2413 aline .130175 .239395 bezier .125377 .231359 .136547 .227777 .139065 .22098 bezier .154246 .19598 .157059 .1669 .15875 .1397 aline .15875 .10033 bezier .156767 .642001E-01 .150711 .168337E-01 .113665 -.00254 bezier .964297E-01 -.109832E-01 .764273E-01 -.962528E-02 .059563 -.001651 bezier .555702E-01 -.101266E-01 .569166E-01 -.227811E-01 .04826 -.02794 aline .04445 -.02794 bezier .337738E-01 -.228509E-01 .433301E-01 -.010143 .04445 -.001905 aline .045085 .000635 aline .04572 .00254 bezier .501599E-01 .101812E-01 .391834E-01 .139054E-01 .03683 .020955 bezier .214799E-01 .450657E-01 .189632E-01 .738187E-01 .017145 .10033 aline .017145 .1397 bezier .191827E-01 .175078 .024137 .2198 .057785 .241935 bezier .757379E-01 .253123 .979793E-01 .252141 .116364 .243681 bezier .120334 .25213 .118999 .264743 .127635 .269875 closepath ! end of curve ! start of curve amove .08255 .24257 bezier .519065E-01 .238065 .434768E-01 .202686 .041275 .1778 aline .041275 .17018 aline .04064 .169545 aline .04064 .156845 aline .040005 .15621 aline .040005 .09271 bezier .418484E-01 .694391E-01 .412946E-01 .461019E-01 .05207 .02413 bezier .721384E-01 .938541E-01 .937831E-01 .164715 .11303 .23368 bezier .104502 .24006 .930361E-01 .245052 .08255 .24257 closepath ! end of curve ! start of curve amove .123825 .217805 bezier .104129 .147913 .815632E-01 .782332E-01 .0635 .008255 bezier .817514E-01 -.902682E-02 .111674 -.671217E-03 .122555 .020955 bezier .134287 .439738E-01 .134112 .068345 .13589 .09271 aline .13589 .15621 bezier .134407 .177465 .133833 .198642 .12446 .219075 closepath ! end of curve fill dfont endchar dfont char="<" !-------------- Beginning of new char. dfont wid=.722224 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .197485 .25019 bezier .216824 .2204 .232983 .187552 .25146 .156845 aline .25146 .153035 bezier .231759 .142082 .21257 .128946 .1905 .122555 bezier .190948 .943849E-01 .194424 .06657 .19431 .038735 bezier .191064 .261888E-01 .19802 .77821E-02 .21082 .00381 bezier .221409 .106908E-01 .230373 .217677E-01 .241935 .026035 aline .243205 .0254 bezier .250592 .230137E-01 .245639 .164056E-01 .240665 .014605 bezier .230627 .681514E-02 .220179 -.405274E-03 .210185 -.008255 bezier .184164 -.124113E-01 .159605 .133819E-01 .1651 .038735 bezier .166489 .657528E-01 .162225 .927821E-01 .161925 .120015 aline .16129 .12065 aline .121285 .12065 aline .12065 .120015 aline .12065 .08763 bezier .119523 .544738E-01 .113345 .111452E-01 .08001 -.00635 bezier .548907E-01 -.156293E-01 .330336E-01 .716562E-02 .026035 .02921 aline .0254 .028575 aline .02413 .02794 aline .02032 .02667 aline .019685 .02667 aline .017145 .02794 aline .01651 .028575 aline .01651 .032385 aline .01778 .03302 aline .018415 .033655 aline .019685 .03429 aline .02159 .034925 aline .02413 .036195 aline .023495 .03683 aline .02286 .0381 aline .022225 .04064 aline .02286 .042545 aline .0254 .045085 aline .028575 .045085 aline .03048 .04318 aline .031115 .041275 aline .03175 .040005 aline .03302 .395817E-01 aline .03429 .040005 aline .03556 .04064 aline .037465 .041275 aline .04064 .041275 aline .042545 .03937 aline .042545 .036195 aline .041275 .034925 aline .040005 .03429 aline .0381 .033655 aline .03683 .03302 aline .354013E-01 .325437E-01 bezier .390157E-01 .157797E-01 .545674E-01 -.55224E-02 .07366 0 bezier .864317E-01 .111534E-01 .884115E-01 .307107E-01 .090805 .04572 aline .090805 .053975 aline .09144 .05461 aline .09144 .18161 bezier .888992E-01 .201729 .845732E-01 .230584 .06223 .239395 bezier .387782E-01 .241956 .212217E-01 .208999 .036195 .191135 bezier .493975E-01 .177543 .066141 .164893 .06858 .14478 bezier .679536E-01 .12531 .699702E-01 .1021 .05334 .088265 bezier .404828E-01 .781326E-01 .216651E-01 .882667E-01 .020955 .10414 aline .020955 .107315 aline .02032 .10795 aline .02032 .114935 aline .022225 .11684 aline .02667 .11684 aline .028575 .114935 bezier .281315E-01 .105708 .308015E-01 .900213E-01 .04318 .09144 bezier .549794E-01 .095698 .563482E-01 .110571 .057785 .12065 bezier .587971E-01 .136183 .582924E-01 .15286 .04572 .16383 bezier .344021E-01 .176744 .160194E-01 .190125 .020955 .20955 bezier .210959E-01 .239351 .589859E-01 .25743 .08255 .239395 bezier .941573E-01 .233275 .101891 .220668 .108797 .211243 bezier .127579 .240186 .16515 .250704 .197485 .25019 closepath ! end of curve ! start of curve amove .168275 .236855 bezier .145835 .23185 .120356 .219507 .1143 .196215 bezier .121714 .174857 .119628 .152911 .121285 .13081 aline .18034 .13081 bezier .19456 .134063 .209765 .140509 .222091 .148907 bezier .205417 .178431 .18864 .207881 .172085 .23749 aline .16891 .23749 closepath ! end of curve fill dfont endchar dfont char="=" !-------------- Beginning of new char. dfont wid=.722224 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .10414 .24638 bezier .144583 .243782 .180838 .214771 .19685 .1778 bezier .204395 .16882 .217064 .175217 .22606 .17907 bezier .232225 .181883 .232767 .18992 .23495 .19431 aline .235585 .194945 aline .241935 .194945 bezier .246985 .189571 .241683 .178695 .235585 .17526 bezier .210577 .157542 .174287 .167182 .15621 .1905 bezier .138968 .207812 .127151 .234217 .100965 .239395 bezier .652715E-01 .242875 .026852 .212453 .03048 .174625 bezier .344602E-01 .142221 .067806 .119284 .09906 .12065 aline .099695 .120015 aline .100965 .11938 aline .100965 .114935 bezier .619417E-01 .108248 .013521 .143921 .020955 .18669 bezier .237701E-01 .226695 .676611E-01 .250057 .10414 .24638 closepath ! end of curve ! start of curve amove .208915 .14986 bezier .226122 .148558 .245638 .134981 .24384 .11557 aline .241935 .113665 aline .235585 .113665 bezier .232227 .121167 .231102 .132331 .22225 .13716 bezier .212492 .144032 .195074 .1468 .191135 .13208 bezier .184014 .115906 .186966 .962661E-01 .20066 .08382 bezier .212877 .071248 .223787 .540437E-01 .217805 .03556 bezier .21143 .120348E-01 .187361 -.221812E-02 .164465 -.004445 aline .12954 -.004445 bezier .860167E-01 .128285E-02 .661686E-01 .555741E-01 .02159 .05715 aline .02032 .057785 aline .02032 .061595 aline .022225 .0635 bezier .434885E-01 .641051E-01 .666059E-01 .650164E-01 .083185 .04953 bezier .105247 .034472 .121615 .825748E-02 .149225 .003175 bezier .17242 .777862E-02 .195675 .030432 .18923 .055245 bezier .181322 .768116E-01 .153128 .090835 .159385 .11684 bezier .163424 .13917 .187697 .152209 .208915 .14986 closepath ! end of curve fill dfont endchar dfont char=">" !-------------- Beginning of new char. dfont wid=.777781 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .24765 .231775 aline .24892 .23114 aline .25019 .230505 aline .25146 .229235 aline .25273 .226695 aline .25273 .222885 aline .25146 .220345 aline .25019 .219075 aline .24765 .217805 aline .144145 .217805 aline .14351 .21717 aline .14351 .004445 aline .14224 .001905 aline .14097 .000635 aline .13843 -.000635 aline .13462 -.000635 aline .13208 .000635 aline .13081 .001905 aline .12954 .004445 aline .12954 .21717 aline .128905 .217805 aline .0254 .217805 aline .02286 .219075 aline .02159 .220345 aline .02032 .222885 aline .02032 .226695 aline .02159 .229235 aline .02286 .230505 aline .02413 .23114 aline .0254 .231775 closepath ! end of curve fill dfont endchar dfont char="?" !-------------- Beginning of new char. dfont wid=.777781 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .13843 .231775 aline .1397 .23114 aline .14097 .230505 aline .14224 .229235 aline .14351 .226695 aline .14351 .01397 aline .144145 .013335 aline .24765 .013335 aline .25019 .012065 aline .25146 .010795 aline .25273 .008255 aline .25273 .004445 aline .25146 .001905 aline .25019 .000635 aline .24765 -.000635 aline .0254 -.000635 aline .02286 .000635 aline .02159 .001905 aline .02032 .004445 aline .02032 .008255 aline .02159 .010795 aline .02286 .012065 aline .0254 .013335 aline .128905 .013335 aline .12954 .01397 aline .12954 .226695 aline .13081 .229235 aline .13208 .230505 aline .13335 .23114 aline .13462 .231775 closepath ! end of curve fill dfont endchar dfont char="@" !-------------- Beginning of new char. dfont wid=.611113 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .03048 .24257 aline .031115 .241935 bezier .335086E-01 .230771 .378247E-01 .216711 .04699 .207645 bezier .794843E-01 .168954 .112924 .130945 .14605 .09271 bezier .150787 .118077 .15531 .145128 .159385 .170815 aline .159385 .177165 aline .16002 .1778 aline .16002 .182245 bezier .147914 .194116 .132177 .208792 .13716 .22733 aline .13716 .230505 aline .137795 .233045 aline .139065 .236855 aline .1397 .23749 aline .140335 .23876 aline .144145 .24257 aline .146685 .24257 bezier .157816 .222268 .1692 .200321 .18796 .184785 bezier .196791 .174372 .196066 .158232 .1905 .146685 aline .18669 .142875 aline .18415 .142875 aline .183515 .14351 bezier .181339 .152403 .177956 .164186 .17018 .17145 bezier .165271 .141441 .158448 .111352 .15621 .080645 bezier .171162 .060752 .197006 .432127E-01 .19431 .01524 aline .193675 .014605 aline .193675 .01143 aline .19304 .00889 aline .19177 .00508 aline .191135 .004445 aline .1905 .003175 aline .18669 -.000635 aline .18415 -.000635 aline .183515 0 bezier .181121 .111637E-01 .176805 .252244E-01 .16764 .03429 bezier .134346 .740725E-01 .997306E-01 .112903 .06604 .1524 bezier .554851E-01 .127732 .505318E-01 .102237 .053975 .0762 bezier .608988E-01 .053277 .091339 .385935E-01 .083185 .01143 bezier .077985 .269321E-02 .066827 .337089E-03 .057785 -.000635 aline .022225 -.000635 aline .02032 .00127 aline .02032 .00508 bezier .302525E-01 .811523E-02 .454365E-01 .505151E-02 .0508 .017145 bezier .507917E-01 .430666E-01 .243108E-01 .642264E-01 .03048 .090805 bezier .305373E-01 .116808 .470486E-01 .140396 .05715 .16256 bezier .426939E-01 .182109 .017489 .199313 .02032 .226695 aline .020955 .22733 aline .020955 .230505 aline .02159 .233045 aline .02286 .236855 aline .023495 .23749 aline .02413 .23876 aline .02794 .24257 aline .03048 .24257 closepath ! end of curve fill dfont endchar dfont char="A" !-------------- Beginning of new char. dfont wid=.798471 hei=.683332 dep=0 italic=0 dfont fby="0" kadd=.19445 set path ! start of curve newpath ! start of curve amove .22987 .25273 aline .231775 .252095 aline .233045 .250825 aline .233045 .24638 aline .23241 .245745 aline .23241 .188595 bezier .236265 .12865 .233208 .702185E-01 .252095 .0127 bezier .260157 .228208E-02 .269605 .014913 .2794 .01397 aline .28067 .013335 bezier .280726 .41742E-02 .268335 -.201708E-03 .260985 -.004445 bezier .248122 -.114319E-01 .225449 -.163426E-01 .21971 .001905 bezier .213875 .204338E-01 .211841 .394582E-01 .208915 .05715 aline .113665 .05715 bezier .945425E-01 .311028E-01 .781859E-01 -.201854E-03 .048895 -.01651 bezier .256671E-01 -.243161E-01 .503809E-03 .36332E-02 .013335 .0254 aline .01397 .027305 aline .015875 .031115 aline .01651 .03175 aline .017145 .03302 aline .01778 .033655 aline .018415 .034925 aline .020955 .037465 aline .02413 .037465 bezier .269614E-01 .175187E-01 .552337E-01 .546346E-02 .06858 .02286 bezier .103064 .577349E-01 .126925 .101034 .153035 .14224 bezier .162193 .157922 .17096 .173885 .179705 .189865 aline .200025 .230505 aline .20066 .23241 aline .201295 .233045 bezier .205992 .243012 .217613 .250814 .229235 .25273 closepath ! end of curve ! start of curve amove .201295 .20828 aline .20066 .20701 aline .183515 .17272 bezier .165143 .137759 .143898 .103856 .123613 .709083E-01 aline .124142 .706438E-01 aline .126365 .071755 aline .127 .07239 aline .128905 .073025 aline .131445 .074295 aline .13716 .0762 aline .20701 .0762 bezier .205897 .107476 .203476 .140485 .202565 .17272 aline .202565 .208915 aline .20193 .20955 closepath ! end of curve ! start of curve amove .12192 .06985 aline .122555 .069215 aline .12319 .06985 aline .122555 .070485 aline .12192 .06985 closepath ! end of curve fill dfont endchar dfont char="B" !-------------- Beginning of new char. dfont wid=.65681 hei=.683332 dep=0 italic=.0304127 dfont fby="0" kadd=.138893 set path ! start of curve newpath ! start of curve amove .09779 .24638 aline .09906 .245745 bezier .983185E-01 .227991 .933032E-01 .209635 .092075 .19177 bezier .11886 .226187 .165216 .255208 .20955 .243205 bezier .230049 .236961 .238983 .212163 .229235 .193675 bezier .216405 .168 .19033 .153295 .1651 .141605 bezier .195587 .13733 .224487 .109335 .21844 .07747 bezier .214428 .349054E-01 .172941 .969389E-02 .13589 -.00254 bezier .106093 -.112102E-01 .680573E-01 -.132688E-01 .04699 .014605 bezier .492472E-01 .245338E-01 .613545E-01 .294629E-01 .070485 .032385 aline .075565 .032385 bezier .982769E-01 .319885E-02 .142186 .609594E-02 .17018 .0254 bezier .199869 .498486E-01 .193826 .102774 .156845 .11684 bezier .140556 .124343 .12235 .123709 .106045 .12192 bezier .102818 .126787 .1112 .130844 .1143 .133985 bezier .141342 .148942 .177929 .150376 .197485 .17653 bezier .210565 .194609 .200047 .222626 .177165 .22606 bezier .152204 .23275 .12675 .215346 .1143 .193675 bezier .738998E-01 .138071 .730549E-01 .646935E-01 .03937 .005715 aline .03429 .000635 aline .03302 0 aline .03175 -.00127 aline .02921 -.00254 aline .028575 -.003175 aline .022225 -.00635 aline .018415 -.00762 aline .015875 -.008255 aline .012065 -.008255 aline .010795 -.006985 bezier .305612E-01 .315154E-01 .041667 .742409E-01 .050165 .11684 aline .056515 .14859 bezier .609338E-01 .173628 .667305E-01 .198229 .067945 .222885 aline .06731 .22225 aline .05588 .216535 aline .053975 .2159 aline .052705 .215265 aline .050165 .21463 aline .045085 .21463 bezier .431414E-01 .22206 .534004E-01 .225934 .05842 .22987 aline .08636 .24384 aline .088265 .244475 aline .089535 .24511 aline .09144 .245745 aline .09398 .24638 closepath ! end of curve fill dfont endchar dfont char="C" !-------------- Beginning of new char. dfont wid=.526529 hei=.683332 dep=0 italic=.0583363 dfont fby="0" kadd=.138893 set path ! start of curve newpath ! start of curve amove .165735 .24638 bezier .178753 .24655 .19126 .233568 .18669 .220345 bezier .183323 .201552 .174562 .182833 .163195 .16764 bezier .156263 .163054 .147039 .155084 .13843 .15875 bezier .144683 .178708 .164403 .19957 .154305 .22098 bezier .139967 .232491 .120679 .226402 .104775 .221615 bezier .609539E-01 .199696 .431354E-01 .146963 .03556 .102235 bezier .325672E-01 .710012E-01 .376953E-01 .299893E-01 .070485 .01524 bezier .979675E-01 .186346E-02 .132506 .152504E-01 .14605 .042545 bezier .152827 .500086E-01 .162677 .567683E-01 .173355 .056515 bezier .176448 .513917E-01 .168218 .462474E-01 .16637 .041275 bezier .136405 .509504E-02 .817788E-01 -.240089E-01 .036195 0 bezier .443259E-02 .203153E-01 .195916E-02 .631522E-01 .006985 .095885 bezier .174428E-01 .166795 .688328E-01 .233391 .141605 .24511 aline .145415 .24511 aline .14605 .245745 aline .151765 .245745 aline .1524 .24638 aline .165735 .24638 closepath ! end of curve fill dfont endchar dfont char="D" !-------------- Beginning of new char. dfont wid=.771393 hei=.683332 dep=0 italic=.0277786 dfont fby="0" kadd=.0833359 set path ! start of curve newpath ! start of curve amove .169545 .23876 bezier .207911 .237697 .2569 .22105 .2667 .1778 bezier .278171 .120868 .239484 .642881E-01 .191135 .036195 bezier .158513 .146471E-01 .118127 .205403E-02 .080645 -.000635 aline .029845 -.000635 aline .028575 0 aline .02794 .000635 bezier .305542E-01 .010777 .430647E-01 .134767E-01 .050165 .01905 bezier .755429E-01 .838343E-01 .946056E-01 .15395 .097155 .21971 bezier .791508E-01 .218261 .564287E-01 .2172 .043815 .201295 bezier .383975E-01 .192585 .372931E-01 .180889 .02667 .17653 aline .01905 .17272 aline .01524 .17145 aline .012065 .170815 aline .01016 .170815 aline .00889 .17145 bezier .944569E-02 .191599 .286078E-01 .206802 .04445 .21717 bezier .657749E-01 .230557 .918066E-01 .236985 .11557 .23876 aline .169545 .23876 closepath ! end of curve ! start of curve amove .126365 .219075 bezier .1209 .152992 .100107 .821818E-01 .07493 .018415 bezier .128449 .149452E-01 .188471 .322708E-01 .21971 .079375 bezier .241799 .11434 .249549 .164833 .216535 .19558 bezier .190994 .21578 .157313 .221428 .126365 .219075 closepath ! end of curve fill dfont endchar dfont char="E" !-------------- Beginning of new char. dfont wid=.527781 hei=.683332 dep=0 italic=.0894413 dfont fby="0" kadd=.111115 set path ! start of curve newpath ! start of curve amove .1651 .24638 bezier .179363 .245663 .200568 .238943 .197485 .220345 bezier .195234 .203575 .179991 .189802 .163195 .18923 aline .161925 .1905 bezier .165477 .199243 .171142 .209288 .164465 .21844 bezier .142809 .233308 .110138 .229838 .092075 .210185 bezier .770808E-01 .192904 .769962E-01 .16275 .09906 .15113 bezier .112309 .143043 .127244 .139977 .14224 .140335 bezier .145937 .134744 .136592 .130145 .132715 .127 bezier .118393 .117508 .101106 .123556 .08636 .114935 bezier .600606E-01 .103251 .387012E-01 .073688 .04064 .045085 bezier .459651E-01 .156162E-01 .827583E-01 .629709E-02 .107315 .0127 bezier .127663 .163283E-01 .139167 .344479E-01 .151765 .04826 bezier .158281 .520384E-01 .167113 .592172E-01 .174625 .055245 bezier .156461 .230065E-01 .121438 .108904E-02 .08509 -.006985 bezier .057215 -.123057E-01 .165038E-01 -.359777E-02 .01016 .029845 bezier .010328 .739499E-01 .476502E-01 .107232 .08382 .126365 bezier .638734E-01 .132512 .466234E-01 .152437 .05207 .17399 bezier .627756E-01 .215583 .106826 .239389 .14605 .245745 aline .150495 .245745 aline .15113 .24638 aline .1651 .24638 closepath ! end of curve fill dfont endchar dfont char="F" !-------------- Beginning of new char. dfont wid=.718748 hei=.683332 dep=0 italic=.0993061 dfont fby="0" kadd=.111115 set path ! start of curve newpath ! start of curve amove .269875 .23876 bezier .27824 .238129 .292767 .235873 .291465 .224155 bezier .2872 .213075 .273961 .205935 .262255 .20574 aline .260985 .20701 bezier .264829 .216275 .25222 .219185 .245745 .21971 aline .174625 .21971 bezier .167605 .187573 .157247 .154732 .14732 .12446 aline .236855 .12446 bezier .240784 .116667 .229911 .110376 .224155 .10668 aline .219075 .10414 aline .215265 .10287 aline .21209 .102235 aline .20955 .102235 aline .20828 .10287 aline .207645 .103505 aline .20701 .10541 aline .1397 .10541 bezier .126331 .073716 .114406 .040178 .094615 .012065 bezier .749457E-01 -.106064E-01 .357057E-01 -.234323E-01 .013335 .00254 bezier .90762E-02 .820302E-02 .241458E-02 .167232E-01 .010795 .022225 bezier .017791 .269974E-01 .275884E-01 .352451E-01 .036195 .031115 bezier .407486E-01 .166973E-01 .569191E-01 .582223E-02 .07112 .00762 bezier .106197 .738934E-01 .133743 .14566 .146685 .21971 bezier .125583 .218359 .951516E-01 .215238 .088265 .189865 bezier .843198E-01 .17855 .711252E-01 .171997 .05969 .170815 aline .05842 .17145 bezier .601479E-01 .192834 .805841E-01 .208332 .09779 .219075 bezier .118318 .231056 .142732 .236963 .1651 .23876 aline .269875 .23876 closepath ! end of curve fill dfont endchar dfont char="G" !-------------- Beginning of new char. dfont wid=.594866 hei=.683332 dep=.0972233 italic=.0593033 dfont fby="0" kadd=.111115 set path ! start of curve newpath ! start of curve amove .17526 .24638 bezier .187909 .244342 .208174 .243976 .211455 .22733 bezier .211375 .206456 .196027 .189645 .183515 .174625 bezier .176653 .170445 .167704 .16258 .159385 .16637 bezier .162292 .174958 .170535 .181445 .174625 .189865 bezier .181203 .199639 .186345 .215477 .173355 .22225 bezier .136997 .235693 .906239E-01 .223447 .070485 .18796 bezier .467272E-01 .149839 .342936E-01 .977829E-01 .06223 .059055 bezier .844302E-01 .337442E-01 .126806 .388446E-01 .145415 .06604 bezier .158983 .799658E-01 .164233 .997274E-01 .172085 .11684 bezier .17933 .122673 .189025 .130294 .198755 .127635 bezier .186281 .766632E-01 .175451 .199345E-01 .136525 -.01778 bezier .104862 -.471395E-01 .054175 -.509963E-01 .01905 -.026035 bezier .232893E-01 -.157446E-01 .370222E-01 -.850301E-02 .047625 -.00889 bezier .677199E-01 -.201674E-01 .927317E-01 -.284034E-01 .1143 -.02032 bezier .135505 -.117762E-02 .145738 .283756E-01 .153035 .055245 bezier .123031 .296074E-01 .748428E-01 .009618 .03937 .03556 bezier .112001E-01 .611858E-01 .132247E-01 .10266 .02286 .13589 bezier .040994 .201777 .107646 .249905 .17526 .24638 closepath ! end of curve fill dfont endchar dfont char="H" !-------------- Beginning of new char. dfont wid=.844518 hei=.683332 dep=0 italic=.00965405 dfont fby="0" kadd=.111115 set path ! start of curve newpath ! start of curve amove .10922 .23876 bezier .120687 .237839 .130141 .225576 .126365 .21463 bezier .125088 .188619 .118783 .163214 .113665 .136525 aline .1143 .13716 aline .11684 .13843 aline .12065 .1397 aline .12319 .140335 aline .22098 .140335 bezier .232697 .170247 .244567 .20083 .26162 .227965 bezier .268801 .23313 .277622 .240287 .28702 .238125 aline .287655 .236855 bezier .255264 .170495 .223218 .985472E-01 .22479 .024765 bezier .225067 .158359E-01 .227617 .449466E-02 .238125 .001905 aline .24384 .001905 aline .244475 .00254 aline .24765 .003175 aline .249827 .371929E-02 bezier .253835 .161149E-01 .268611 .261264E-01 .281305 .02413 bezier .277156 .326504E-02 .254792 -.747409E-02 .23622 -.01397 bezier .222776 -.185124E-01 .20276 -.202161E-01 .19685 -.00381 bezier .18971 .394386E-01 .202564 .820525E-01 .214757 .124079 aline .214313 .124301 aline .21336 .123825 aline .211455 .12319 aline .210185 .122555 aline .20828 .12192 aline .20574 .121285 aline .10922 .121285 bezier .974193E-01 .825562E-01 .855224E-01 .432069E-01 .06985 .005715 aline .06477 .000635 aline .0635 0 aline .06223 -.00127 aline .05969 -.00254 aline .059055 -.003175 aline .052705 -.00635 aline .048895 -.00762 aline .046355 -.008255 aline .042545 -.008255 aline .041275 -.006985 bezier .659868E-01 .624002E-01 .928634E-01 .135724 .097155 .20701 aline .09652 .207645 bezier .093646 .222587 .754818E-01 .220767 .06477 .217805 bezier .464304E-01 .216034 .414543E-01 .196508 .034925 .18288 bezier .02777 .177321 .176458E-01 .168678 .008255 .172085 bezier .154361E-01 .208697 .525467E-01 .230501 .086995 .23749 aline .09144 .23749 aline .092075 .238125 aline .097155 .238125 aline .09779 .23876 closepath ! end of curve ! start of curve amove .21463 .12446 aline .215265 .123825 aline .2159 .12446 aline .215265 .125095 aline .21463 .12446 closepath ! end of curve fill dfont endchar dfont char="I" !-------------- Beginning of new char. dfont wid=.544516 hei=.683332 dep=0 italic=.073822 dfont fby="0" kadd=.0277786 set path ! start of curve newpath ! start of curve amove .22225 .23876 bezier .226592 .233002 .215908 .227652 .211455 .22479 aline .21082 .224155 aline .20574 .221615 aline .20193 .220345 aline .19939 .21971 aline .15621 .21971 bezier .13928 .195918 .132859 .166323 .125095 .13843 aline .11684 .10541 bezier .107988 .744128E-01 .991074E-01 .403791E-01 .07366 .01905 aline .074295 .018415 aline .1397 .018415 aline .140335 .01905 aline .14351 .01905 aline .144145 .019685 aline .146685 .02032 aline .147955 .020955 bezier .152389 .341169E-01 .165559 .443336E-01 .179705 .04445 bezier .183112 .384699E-01 .175909 .316333E-01 .17272 .02667 bezier .158103 .111923E-01 .136782 .153841E-02 .116205 -.000635 aline -.00635 -.000635 aline -.00762 0 aline -.008255 .000635 bezier -.480446E-02 .105975E-01 .683903E-02 .156067E-01 .01651 .018415 aline .053975 .018415 bezier .734717E-01 .372406E-01 .791519E-01 .661169E-01 .086995 .09144 aline .09525 .12446 bezier .103889 .157747 .113634 .194623 .13589 .21971 aline .09144 .21971 bezier .760453E-01 .217587 .594293E-01 .219425 .04572 .210185 bezier .408603E-01 .201926 .393078E-01 .1912 .02921 .187325 aline .028575 .18669 aline .022225 .183515 aline .018415 .182245 aline .015875 .18161 aline .012065 .18161 bezier .872839E-02 .189678 .171886E-01 .198538 .02159 .205105 bezier .045617 .230956 .826427E-01 .237441 .114935 .23876 aline .22225 .23876 closepath ! end of curve fill dfont endchar dfont char="J" !-------------- Beginning of new char. dfont wid=.67778 hei=.683332 dep=.0972233 italic=.184721 dfont fby="0" kadd=.166672 set path ! start of curve newpath ! start of curve amove .294005 .23876 bezier .297428 .233159 .288243 .228721 .28448 .225425 aline .28194 .224155 aline .281305 .22352 aline .2794 .222885 aline .27686 .221615 aline .271145 .21971 bezier .253154 .222069 .245006 .202306 .236855 .189865 bezier .21002 .140587 .203317 .837649E-01 .18415 .03175 bezier .162221 -.101934E-01 .117114 -.439966E-01 .06858 -.042545 bezier .393082E-01 -.418339E-01 .113048E-01 -.139482E-01 .017145 .015875 bezier .155782E-01 .319022E-01 .340919E-01 .428959E-01 .047625 .042545 aline .048895 .041275 bezier .387469E-01 .146997E-01 .575933E-01 -.185196E-01 .086995 -.022225 bezier .115788 -.303503E-01 .142401 -.659563E-02 .154305 .018415 bezier .172394 .656241E-01 .178523 .117298 .20066 .163195 bezier .21013 .184527 .222732 .204739 .2413 .219075 aline .240665 .21971 aline .18542 .21971 bezier .157188 .217769 .130327 .196416 .123825 .16764 bezier .118051 .158304 .105877 .150283 .094615 .151765 bezier .988628E-01 .181293 .12466 .204138 .149225 .219075 bezier .167403 .229778 .188797 .237029 .208915 .23876 aline .294005 .23876 closepath ! end of curve fill dfont endchar dfont char="K" !-------------- Beginning of new char. dfont wid=.76195 hei=.683332 dep=0 italic=.0144453 dfont fby="0" kadd=.0555573 set path ! start of curve newpath ! start of curve amove .09779 .24638 aline .09906 .245745 bezier .970419E-01 .166002 .068707 .829949E-01 .03937 .005715 aline .03429 .000635 aline .03302 0 aline .03175 -.00127 aline .02921 -.00254 aline .028575 -.003175 aline .022225 -.00635 aline .018415 -.00762 aline .015875 -.008255 aline .012065 -.008255 aline .010795 -.006985 bezier .037167 .674058E-01 .652583E-01 .145902 .069215 .22225 aline .682625E-01 .222726 aline .05588 .216535 aline .053975 .2159 aline .052705 .215265 aline .050165 .21463 aline .045085 .21463 bezier .431414E-01 .22206 .534004E-01 .225934 .05842 .22987 aline .08636 .24384 aline .088265 .244475 aline .089535 .24511 aline .09144 .245745 aline .09398 .24638 closepath ! end of curve ! start of curve amove .240665 .24638 bezier .260573 .244989 .263824 .212617 .24384 .20828 aline .240665 .207645 aline .23876 .207645 aline .236855 .20828 aline .23622 .208915 aline .235585 .210185 bezier .240146 .219927 .232213 .235528 .220345 .23114 bezier .180001 .217813 .144079 .194088 .113665 .1651 bezier .984019E-01 .149919 .110671 .12944 .114935 .11176 bezier .129853 .745506E-01 .145877 .346861E-01 .1778 .009525 bezier .194327 .185381E-02 .215338 .974766E-02 .227965 .022225 bezier .233795 .308521E-01 .235327 .439972E-01 .24765 .046355 aline .250825 .04699 aline .25146 .04699 aline .253365 .046355 aline .254635 .04572 bezier .254173 .027865 .237612 .141747E-01 .22352 .00508 bezier .203482 -.491044E-02 .178201 -.149931E-01 .15748 -.00254 bezier .122788 .027024 .104583 .715405E-01 .09017 .1143 bezier .857399E-01 .130129 .813113E-01 .148879 .094615 .161925 bezier .128945 .198344 .172305 .224883 .219075 .243205 aline .229235 .245745 aline .233045 .245745 aline .23368 .24638 closepath ! end of curve fill dfont endchar dfont char="L" !-------------- Beginning of new char. dfont wid=.689725 hei=.683332 dep=0 italic=0 dfont fby="0" kadd=.138893 set path ! start of curve newpath ! start of curve amove .193675 .24638 bezier .216683 .24341 .221899 .21457 .213995 .19685 bezier .205485 .188614 .194039 .179617 .18161 .180975 bezier .185473 .195909 .184555 .217706 .167005 .224155 bezier .153056 .229384 .139043 .220421 .132715 .207645 bezier .963634E-01 .155195 .988379E-01 .084898 .063881 .032258 bezier .105114 .384539E-01 .145087 .117847E-01 .186055 .0127 bezier .195099 .216859E-01 .195002 .373984E-01 .20828 .042545 bezier .214409 .460608E-01 .222823 .522381E-01 .22987 .048895 bezier .22231 .189145E-01 .192379 -.403493E-04 .16383 -.00762 bezier .124562 -.128957E-01 .862963E-01 .113649E-01 .047625 .012065 bezier .381519E-01 .217059E-02 .264178E-01 -.796225E-02 .012065 -.008255 aline .010795 -.006985 bezier .169426E-01 .641935E-02 .312154E-01 .145576E-01 .03683 .028575 bezier .613226E-01 .707564E-01 .631573E-01 .121967 .084455 .165735 bezier .101016 .206186 .136831 .240258 .180975 .24638 closepath ! end of curve fill dfont endchar dfont char="M" !-------------- Beginning of new char. dfont wid=1.2009 hei=.683332 dep=0 italic=0 dfont fby="0" kadd=.138893 set path ! start of curve newpath ! start of curve amove .15367 .24638 bezier .167495 .185265 .177621 .116643 .202565 .05588 aline .206375 .04826 aline .20701 .046355 aline .207433 .455083E-01 aline .207963 .452438E-01 aline .208915 .04572 aline .210185 .04699 aline .211455 .047625 aline .23495 .07112 bezier .287749 .127735 .336034 .188076 .38608 .24638 aline .38735 .24638 aline .38862 .24511 bezier .386335 .213966 .37732 .185662 .37465 .15621 bezier .368425 .111847 .360441 .659825E-01 .36449 .01905 bezier .364412 .113615E-01 .373807 .51296E-02 .380365 .01143 aline .38227 .012065 aline .38354 .0127 aline .385445 .013335 aline .38862 .01397 aline .39116 .01397 bezier .396482 .101946E-01 .387463 .431876E-02 .384175 .001905 bezier .370883 -.579966E-02 .35135 -.182306E-01 .33782 -.00508 bezier .331455 .982538E-02 .33412 .271339E-01 .333375 .043815 bezier .336903 .903663E-01 .34403 .136025 .35052 .180975 bezier .311937 .134535 .272992 .883565E-01 .231775 .043815 aline .20447 .01651 aline .2032 .015875 aline .19939 .012065 aline .19812 .01143 aline .19431 .01143 bezier .161464 .607483E-01 .152967 .122599 .139065 .179705 aline .13716 .18923 aline .13716 .192405 aline .136525 .19304 aline .13589 .196215 bezier .120931 .129423 .099935 .628227E-01 .066675 .003175 bezier .592937E-01 -.793242E-02 .480471E-01 -.219805E-01 .03302 -.017145 bezier .218434E-01 -.146679E-01 .546404E-02 -.791517E-02 .010795 .00635 aline .013335 .01397 aline .015875 .01905 aline .01651 .019685 aline .017145 .020955 aline .01778 .02159 aline .018415 .02286 bezier .235379E-01 .305662E-01 .283183E-01 .190593E-01 .03429 .018415 bezier .442824E-01 .129936E-01 .576687E-01 .011391 .064135 .02286 bezier .954978E-01 .795401E-01 .113797 .144949 .126365 .207645 bezier .127751 .216842 .128328 .225837 .13081 .23495 bezier .136239 .241545 .144645 .247021 .15367 .24638 closepath ! end of curve fill dfont endchar dfont char="N" !-------------- Beginning of new char. dfont wid=.820491 hei=.683332 dep=0 italic=.14736 dfont fby="0" kadd=.0833359 set path ! start of curve newpath ! start of curve amove .342265 .271145 bezier .346109 .260539 .340285 .246621 .332105 .239395 bezier .313839 .239295 .292861 .238117 .2794 .224155 bezier .265894 .186661 .256981 .147636 .24638 .10922 aline .235585 .06604 bezier .229913 .447849E-01 .226663 .226627E-01 .21971 .001905 bezier .213697 -.572153E-02 .197436 -.156047E-01 .19177 -.00254 bezier .151853 .593991E-01 .13117 .132051 .10795 .20193 bezier .100998 .162479 .914392E-01 .120648 .07874 .08128 aline .06858 .0508 bezier .588439E-01 .266874E-01 .509853E-01 -.138534E-02 .028575 -.01651 bezier .154235E-01 -.201883E-01 -.145592E-02 -.147264E-01 -.009525 -.00381 aline -.009525 .003175 aline -.00889 .00635 aline -.00635 .01397 aline -.003175 .02032 aline -.00254 .020955 aline -.001905 .022225 aline .00127 .0254 aline .00254 .026035 bezier .136618E-01 .175745E-01 .343984E-01 .63527E-02 .04445 .022225 bezier .503131E-01 .314013E-01 .538704E-01 .418822E-01 .057785 .05207 aline .06731 .080645 bezier .838818E-01 .132039 .093567 .185117 .10033 .23495 bezier .105614 .241454 .116097 .249105 .12446 .24511 bezier .148662 .16854 .170872 .896569E-01 .211455 .02032 aline .21209 .019685 aline .212725 .018415 aline .21336 .020955 aline .213995 .02413 aline .215265 .02921 aline .2159 .032385 aline .217805 .040005 aline .21844 .04318 aline .221615 .05588 aline .22225 .059055 aline .233045 .102235 bezier .247371 .150893 .256048 .202098 .278765 .24765 bezier .292779 .26814 .319703 .271643 .342265 .271145 closepath ! end of curve fill dfont endchar dfont char="O" !-------------- Beginning of new char. dfont wid=.796114 hei=.683332 dep=0 italic=.0277786 dfont fby="0" kadd=.111115 set path ! start of curve newpath ! start of curve amove .13843 .24638 bezier .142246 .239813 .131368 .235293 .127 .231775 bezier .601281E-01 .195214 .242022E-01 .983217E-01 .071755 .03429 bezier .103422 -.639567E-03 .159582 .614301E-02 .19177 .03683 bezier .236204 .781283E-01 .257964 .14857 .230505 .203835 bezier .215696 .229653 .172947 .237605 .155575 .210185 bezier .144332 .197596 .137442 .181573 .130175 .16637 bezier .123064 .159347 .113343 .151754 .10287 .153035 aline .1016 .154305 bezier .119155 .202632 .162625 .248247 .21717 .24638 bezier .248186 .245229 .270373 .214706 .271145 .18542 bezier .280855 .114694 .235196 .431241E-01 .17272 .010795 bezier .135009 -.930805E-02 .857482E-01 -.191288E-01 .050165 .009525 bezier .164881E-01 .400265E-01 .154408E-01 .893753E-01 .02667 .12954 bezier .433177E-01 .18195 .846544E-01 .225168 .13462 .24638 aline .13843 .24638 closepath ! end of curve fill dfont endchar dfont char="P" !-------------- Beginning of new char. dfont wid=.69556 hei=.683332 dep=0 italic=.082222 dfont fby="0" kadd=.0833359 set path ! start of curve newpath ! start of curve amove .17907 .23876 bezier .208401 .236572 .248537 .226337 .257175 .192405 bezier .26169 .148247 .224322 .111749 .18796 .09271 bezier .162734 .786403E-01 .133995 .709461E-01 .106045 .07112 bezier .102418 .775535E-01 .113035 .822558E-01 .117475 .085725 bezier .13023 .933106E-01 .14525 .885458E-01 .158115 .093345 bezier .197019 .998758E-01 .231914 .136702 .22733 .17653 bezier .219132 .207856 .181886 .21722 .15494 .21971 aline .127 .21971 bezier .117554 .146232 .984485E-01 .660184E-01 .066675 -.00508 bezier .595248E-01 -.119293E-01 .493533E-01 -.189882E-01 .03937 -.01778 bezier .404804E-01 -.607264E-02 .483012E-01 .531798E-02 .051435 .017145 bezier .755082E-01 .832682E-01 .936162E-01 .153757 .097155 .21971 bezier .791508E-01 .218261 .564287E-01 .2172 .043815 .201295 bezier .383975E-01 .192585 .372931E-01 .180889 .02667 .17653 aline .01905 .17272 aline .01524 .17145 aline .012065 .170815 aline .01016 .170815 aline .00889 .17145 bezier .944569E-02 .191599 .286078E-01 .206802 .04445 .21717 bezier .657749E-01 .230557 .918066E-01 .236985 .11557 .23876 aline .17907 .23876 closepath ! end of curve fill dfont endchar dfont char="Q" !-------------- Beginning of new char. dfont wid=.81667 hei=.683332 dep=.0972233 italic=0 dfont fby="0" kadd=.111115 set path ! start of curve newpath ! start of curve amove .202565 .24638 bezier .241244 .244682 .271341 .207767 .271145 .17018 bezier .2772 .104945 .230224 .444783E-01 .174625 .014605 aline .161925 .008255 aline .16002 .00762 aline .15621 .005715 aline .154305 .00508 aline .151765 .00381 aline .147955 .00254 aline .146685 .001905 aline .13716 -.00127 aline .13462 -.001905 bezier .167587 -.133171E-01 .202278 -.302002E-01 .236855 -.023495 bezier .246713 -.171856E-01 .245382 -.208724E-02 .257175 .00254 aline .258445 .003175 aline .25908 .00381 aline .26416 .00635 aline .266065 .006985 aline .267335 .00762 aline .269875 .008255 aline .27559 .008255 bezier .275782 -.825363E-02 .259759 -.021082 .247015 -.029845 bezier .206066 -.580296E-01 .156652 -.039068 .1143 -.023495 bezier .926005E-01 -.163131E-01 .711665E-01 -.959003E-02 .048895 -.01016 bezier .450788E-01 -.359255E-02 .559571E-01 .927042E-03 .060325 .004445 aline .064135 .00635 aline .06604 .006985 aline .06731 .00762 bezier .100274 .106245E-01 .132313 .68711E-02 .163195 .020955 bezier .227771 .508106E-01 .266116 .140051 .22479 .20193 bezier .197356 .237509 .142607 .233112 .112395 .203835 bezier .777275E-01 .171616 .533262E-01 .114347 .08382 .07239 bezier .104679 .486602E-01 .139999 .509428E-01 .1651 .066675 aline .16891 .067945 aline .17145 .06858 aline .17526 .06858 bezier .178683 .629786E-01 .169498 .585409E-01 .165735 .055245 bezier .132429 .356825E-01 .838485E-01 .228002E-01 .05461 .055245 bezier .022904 .976308E-01 .479111E-01 .155673 .08001 .1905 bezier .111685 .223418 .15619 .248525 .202565 .24638 closepath ! end of curve fill dfont endchar dfont char="R" !-------------- Beginning of new char. dfont wid=.847504 hei=.683332 dep=0 italic=0 dfont fby="0" kadd=.0833359 set path ! start of curve newpath ! start of curve amove .17907 .23876 bezier .203765 .236127 .236258 .237186 .25273 .21336 bezier .266591 .183075 .244662 .149184 .22098 .13081 bezier .207073 .118659 .189848 .110315 .172879 .103187 bezier .194135 .766044E-01 .197494 .379812E-01 .222885 .014605 bezier .238092 .430234E-02 .257429 .160719E-01 .26543 .03048 bezier .272611 .375279E-01 .283768 .470939E-01 .294005 .04318 bezier .278943 .149316E-01 .246356 -.393667E-02 .215265 -.008255 bezier .189193 -.114583E-01 .177596 .166507E-01 .16891 .036195 bezier .158067 .569131E-01 .152913 .853366E-01 .12954 .09525 aline .125095 .09525 bezier .121279 .101817 .132157 .106337 .136525 .109855 bezier .149438 .117184 .163843 .112909 .177165 .11811 bezier .210637 .125663 .238428 .165765 .22225 .19812 bezier .208956 .215014 .185052 .216652 .16637 .219075 aline .155575 .219075 aline .15494 .21971 aline .127 .21971 bezier .118622 .149477 .998912E-01 .735993E-01 .06985 .005715 aline .06477 .000635 aline .0635 0 aline .06223 -.00127 aline .05969 -.00254 aline .059055 -.003175 aline .052705 -.00635 aline .048895 -.00762 aline .046355 -.008255 aline .042545 -.008255 bezier .396271E-01 -.26519E-02 .465807E-01 .407817E-02 .047625 .01016 bezier .741972E-01 .778289E-01 .939026E-01 .151197 .097155 .21971 bezier .791508E-01 .218261 .564287E-01 .2172 .043815 .201295 bezier .383975E-01 .192585 .372931E-01 .180889 .02667 .17653 aline .01905 .17272 aline .01524 .17145 aline .012065 .170815 aline .01016 .170815 aline .00889 .17145 bezier .944569E-02 .191599 .286078E-01 .206802 .04445 .21717 bezier .657749E-01 .230557 .918066E-01 .236985 .11557 .23876 aline .17907 .23876 closepath ! end of curve fill dfont endchar dfont char="S" !-------------- Beginning of new char. dfont wid=.605558 hei=.683332 dep=0 italic=.074995 dfont fby="0" kadd=.138893 set path ! start of curve newpath ! start of curve amove .17653 .24638 bezier .194062 .24394 .221058 .239562 .22479 .217805 bezier .225977 .205265 .222476 .191147 .20955 .186055 aline .20447 .183515 aline .20066 .182245 aline .19812 .18161 aline .19431 .18161 aline .19304 .182245 bezier .195126 .193648 .197654 .208786 .186055 .216535 bezier .160936 .23035 .124775 .23428 .104775 .210185 bezier .088741 .189444 .100048 .159972 .122555 .149225 bezier .150635 .132644 .189806 .123302 .200025 .088265 bezier .205648 .492387E-01 .169934 .190734E-01 .13716 .00508 bezier .101369 -.107683E-01 .564518E-01 -.166014E-01 .02413 .009525 bezier .49101E-02 .237237E-01 .193403E-02 .506138E-01 .01524 .06985 bezier .245703E-01 .827055E-01 .410867E-01 .938292E-01 .05715 .092075 bezier .570466E-01 .803497E-01 .377886E-01 .802807E-01 .0381 .06731 bezier .296917E-01 .367486E-01 .650948E-01 .012286 .09271 .01143 bezier .120948 .839021E-02 .158427 .176022E-01 .168275 .048895 bezier .178461 .736322E-01 .158863 .098958 .136525 .10922 bezier .111759 .123771 .770621E-01 .131568 .067945 .16256 bezier .624461E-01 .198401 .963956E-01 .225051 .126365 .23749 bezier .142736 .24443 .159138 .246881 .17653 .24638 closepath ! end of curve fill dfont endchar dfont char="T" !-------------- Beginning of new char. dfont wid=.544644 hei=.683332 dep=0 italic=.254168 dfont fby="0" kadd=.0277786 set path ! start of curve newpath ! start of curve amove .278765 .250825 aline .280035 .25019 bezier .274294 .23312 .254363 .225282 .238125 .220345 aline .23495 .21971 aline .231775 .21971 aline .23114 .219075 aline .226695 .219075 aline .22606 .21844 aline .216535 .21844 aline .2159 .217805 aline .17653 .217805 bezier .168406 .198755 .16383 .178094 .158115 .158115 aline .14859 .120015 bezier .13863 .839774E-01 .127299 .450778E-01 .097155 .020955 aline .09779 .02032 aline .15113 .02032 aline .1524 .01905 bezier .1471 .845124E-02 .134853 .278923E-02 .123825 -.000635 aline .041275 -.000635 bezier .400833E-01 .750029E-02 .514043E-01 .116531E-01 .05715 .015875 aline .05969 .017145 bezier .678124E-01 .022114 .796377E-01 .174561E-01 .08382 .02794 bezier .999163E-01 .497143E-01 .106903 .769841E-01 .1143 .10287 aline .123825 .14097 bezier .130696 .16694 .138114 .194106 .149225 .217805 aline .06858 .217805 bezier .054255 .209289 .485808E-01 .191683 .04318 .17653 bezier .348136E-01 .168226 .229455E-01 .158883 .010795 .160655 bezier .181043E-01 .199678 .534027E-01 .228659 .090805 .238125 aline .09398 .238125 aline .094615 .23876 aline .241935 .23876 aline .24257 .239395 bezier .25518 .236748 .262903 .249296 .274955 .250825 closepath ! end of curve fill dfont endchar dfont char="U" !-------------- Beginning of new char. dfont wid=.625832 hei=.683332 dep=0 italic=.0993061 dfont fby="0" kadd=.0833359 set path ! start of curve newpath ! start of curve amove .06985 .23876 bezier .086103 .236416 .835147E-01 .217137 .08001 .20574 bezier .648388E-01 .154744 .338595E-01 .107837 .024765 .05588 bezier .234255E-01 .384128E-01 .280597E-01 .148846E-01 .04826 .010795 bezier .750583E-01 .107325E-01 .935877E-01 .345029E-01 .111125 .05207 bezier .155861 .101621 .191862 .159586 .212725 .224155 bezier .219536 .231939 .230394 .240069 .2413 .238125 bezier .240116 .225057 .233548 .211843 .2286 .19939 aline .21717 .1651 bezier .203156 .11578 .184331 .654744E-01 .182245 .015875 aline .18288 .01524 bezier .184951 .589596E-02 .194398 .106359E-01 .200025 .013335 aline .2032 .01397 aline .20574 .01397 bezier .211062 .101946E-01 .202043 .431876E-02 .198755 .001905 bezier .186358 -.511341E-02 .167804 -.170896E-01 .15494 -.00508 bezier .148999 .593146E-02 .155182 .184295E-01 .15494 .029845 bezier .158473 .535567E-01 .167007 .786532E-01 .172085 .102235 bezier .1373 .565638E-01 .968526E-01 .674789E-02 .0381 -.00762 bezier .228734E-01 -.109955E-01 .495296E-02 -.490185E-02 -.00127 .010795 bezier -.141518E-01 .515323E-01 .111241E-01 .918436E-01 .0254 .12954 bezier .359129E-01 .155936 .518374E-01 .182319 .052705 .21082 bezier .04935 .224699 .312039E-01 .220068 .02286 .21336 aline .01524 .20955 aline .01143 .20828 aline .00889 .207645 aline .005715 .207645 aline .004445 .20828 bezier .454785E-02 .217283 .016489 .22111 .02286 .22606 bezier .344585E-01 .232432 .474524E-01 .237451 .060325 .23876 closepath ! end of curve ! start of curve amove .172085 .10287 aline .17272 .102235 aline .173355 .10287 aline .17272 .103505 aline .172085 .10287 closepath ! end of curve fill dfont endchar dfont char="V" !-------------- Beginning of new char. dfont wid=.612782 hei=.683332 dep=0 italic=.082222 dfont fby="0" kadd=.0277786 set path ! start of curve newpath ! start of curve amove .041275 .23876 bezier .794211E-01 .234372 .942913E-01 .190592 .097155 .15748 aline .09779 .156845 aline .09779 .1524 aline .098425 .151765 aline .098425 .14605 aline .09906 .145415 aline .09906 .13843 aline .099695 .137795 aline .099695 .127 aline .10033 .126365 aline .10033 .092075 bezier .990666E-01 .713652E-01 .974352E-01 .508079E-01 .09525 .03048 bezier .117838 .454454E-01 .13851 .671861E-01 .15875 .086995 bezier .181921 .113185 .206764 .139746 .21717 .17399 bezier .218644 .191644 .20264 .208474 .184785 .20701 bezier .18088 .217733 .18716 .23095 .194945 .23876 bezier .213879 .240902 .230744 .224076 .231775 .20574 bezier .233111 .156902 .201625 .114655 .17272 .07874 aline .16891 .07493 aline .168275 .07366 aline .16383 .069215 aline .163195 .067945 aline .15621 .06096 aline .155575 .05969 aline .13081 .034925 bezier .110971 .168191E-01 .908724E-01 -.926799E-03 .069215 -.01651 aline .06604 -.01651 bezier .639984E-01 -.279361E-02 .699522E-01 .989963E-02 .06985 .023495 bezier .730171E-01 .419345E-01 .073334 .615547E-01 .07493 .080645 aline .07493 .1143 bezier .722936E-01 .146922 .698045E-01 .185663 .04445 .211455 bezier .035804 .2199 .229677E-01 .221029 .0127 .22352 bezier .154339E-01 .234863 .301836E-01 .240236 .041275 .23876 closepath ! end of curve ! start of curve amove .09525 .02921 aline .095885 .029845 aline .09525 .03048 aline .094615 .029845 aline .09525 .02921 closepath ! end of curve fill dfont endchar dfont char="W" !-------------- Beginning of new char. dfont wid=.987783 hei=.683332 dep=0 italic=.082222 dfont fby="0" kadd=.0833359 set path ! start of curve newpath ! start of curve amove .041275 .23876 bezier .759516E-01 .23507 .894515E-01 .194816 .090805 .1651 aline .09144 .164465 aline .09144 .15875 aline .092075 .158115 aline .092075 .14859 aline .09271 .147955 aline .09271 .117475 bezier .911442E-01 .929415E-01 .883964E-01 .688975E-01 .08509 .045085 bezier .096401 .555818E-01 .106234 .726067E-01 .11684 .085725 bezier .146093 .127821 .173505 .171387 .196638 .217805 bezier .1904 .228939 .205062 .236348 .213995 .23876 aline .21844 .23876 bezier .239361 .189298 .248832 .132136 .255905 .081915 bezier .257438 .065003 .258694 .047976 .26035 .031115 bezier .294897 .744353E-01 .33032 .11908 .348615 .17272 bezier .352303 .187566 .342834 .20807 .32512 .20701 bezier .321207 .217665 .327223 .231445 .33528 .23876 bezier .351593 .240787 .362773 .224508 .363855 .210185 bezier .364892 .155823 .331027 .107284 .302895 .0635 bezier .283078 .358574E-01 .262499 .876372E-02 .239395 -.01651 aline .23622 -.01651 bezier .233937 .582916E-01 .225335 .127866 .202057 .201549 bezier .160514 .124694 .112478 .500045E-01 .055245 -.01651 aline .05207 -.01651 bezier .499845E-01 .14124E-03 .581614E-01 .169686E-01 .059055 .03302 bezier .664455E-01 .083371 .748356E-01 .140093 .056515 .191135 bezier .499704E-01 .208968 .331941E-01 .223352 .01397 .22225 aline .0127 .22352 bezier .154339E-01 .234863 .301836E-01 .240236 .041275 .23876 closepath ! end of curve ! start of curve amove .08509 .04318 aline .855663E-01 .441325E-01 aline .08509 .045085 aline .846137E-01 .441325E-01 closepath ! end of curve fill dfont endchar dfont char="X" !-------------- Beginning of new char. dfont wid=.713297 hei=.683332 dep=0 italic=.146428 dfont fby="0" kadd=.138893 set path ! start of curve newpath ! start of curve amove .142875 .23876 bezier .164856 .235791 .166953 .208953 .16891 .192405 bezier .170208 .174534 .171484 .156141 .174307 .139224 bezier .200707 .155498 .228187 .170276 .250825 .19177 bezier .256879 .200796 .255083 .220284 .2413 .21971 bezier .23797 .225182 .246895 .229981 .250825 .233045 bezier .260806 .240923 .279603 .241711 .28321 .226695 bezier .288834 .199488 .260551 .183918 .24257 .17018 bezier .220957 .15438 .197008 .141329 .174784 .126683 bezier .17979 .943028E-01 .177375 .616289E-01 .18796 .029845 bezier .1912 .222336E-01 .201725 .153751E-01 .208915 .019685 bezier .215415 .283265E-01 .226818 .357524E-01 .23749 .034925 bezier .23965 .259074E-01 .229071 .174781E-01 .22225 .012065 bezier .205838 .171579E-02 .183792 -.618377E-02 .165735 .00381 bezier .148922 .019764 .153144 .444535E-01 .149225 .064135 bezier .148033 .792118E-01 .147443 .095049 .144462 .109061 bezier .112326 .894291E-01 .785306E-01 .720993E-01 .0508 .046355 bezier .044267 .364662E-01 .472666E-01 .173543E-01 .061595 .01778 bezier .059907 .729483E-02 .468295E-01 .236371E-02 .037465 -.000635 bezier .178746E-01 -.395705E-02 .01249 .223228E-01 .022225 .034925 bezier .490807E-01 .679793E-01 .888181E-01 .086255 .123825 .10922 bezier .130352 .113608 .13894 .116718 .143907 .122238 bezier .140064 .150619 .14147 .178552 .132715 .206375 bezier .129853 .215249 .120019 .222031 .111125 .219075 bezier .105077 .209967 .937907E-01 .202913 .08255 .2032 bezier .795854E-01 .209767 .876935E-01 .216773 .092075 .221615 bezier .103416 .230949 .118117 .237713 .132715 .23876 closepath ! end of curve fill dfont endchar dfont char="Y" !-------------- Beginning of new char. dfont wid=.668337 hei=.683332 dep=.0972233 italic=.082222 dfont fby="0" kadd=.0833359 set path ! start of curve newpath ! start of curve amove .0762 .23876 bezier .115652 .233933 .132055 .190812 .13843 .15621 bezier .141924 .136117 .143483 .115936 .14478 .09525 aline .14478 .055245 aline .144145 .05461 aline .144145 .040005 aline .14351 .03937 aline .14351 .03429 bezier .166651 .540036E-01 .187291 .810117E-01 .205105 .10668 bezier .219571 .130953 .235879 .157624 .238125 .186055 bezier .235974 .20101 .222365 .213311 .20701 .21209 bezier .202527 .220666 .207762 .233037 .215265 .23876 bezier .234691 .240728 .250305 .223156 .25146 .205105 bezier .251351 .158198 .224902 .115219 .200025 .07747 bezier .163768 .288882E-01 .120583 -.192309E-01 .065405 -.046355 bezier .370624E-01 -.570788E-01 .187698E-02 -.265067E-01 .01397 .003175 aline .015875 .006985 aline .01651 .00762 aline .017145 .00889 aline .02032 .012065 aline .02159 .0127 aline .02286 .0127 bezier .271233E-01 .440173E-02 .285948E-01 -.792218E-02 .0381 -.013335 bezier .052081 -.247218E-01 .716419E-01 -.234093E-01 .085725 -.0127 bezier .972002E-01 -.652902E-02 .107149 .176011E-02 .117475 .009525 aline .117475 .017145 aline .11811 .01778 aline .11811 .02794 aline .118745 .028575 aline .118745 .04318 aline .11938 .043815 aline .11938 .083185 bezier .1168 .123228 .114096 .16644 .089535 .20193 bezier .801424E-01 .214636 .643144E-01 .222502 .048895 .22225 bezier .434507E-01 .215352 .339408E-01 .208569 .024765 .21082 bezier .246728E-01 .220498 .367847E-01 .226277 .043815 .231775 aline .047625 .23368 aline .04953 .234315 aline .05207 .235585 aline .057785 .23749 aline .060325 .238125 aline .0635 .23876 aline .0762 .23876 closepath ! end of curve fill dfont endchar dfont char="Z" !-------------- Beginning of new char. dfont wid=.724726 hei=.683332 dep=0 italic=.079443 dfont fby="0" kadd=.138893 set path ! start of curve newpath ! start of curve amove .172085 .23876 bezier .196581 .237002 .22035 .228335 .24511 .22987 bezier .252286 .233845 .260806 .240431 .26924 .238125 bezier .266423 .228539 .256318 .221925 .250825 .21336 bezier .235246 .19579 .219263 .178511 .2032 .16129 aline .179705 .137795 bezier .188809 .134995 .203404 .138955 .208915 .12827 bezier .210544 .118532 .196815 .110094 .188595 .1143 aline .188595 .11811 aline .187325 .11938 aline .183515 .12065 aline .18034 .121285 aline .179705 .12192 aline .173355 .12192 aline .17272 .122555 aline .16383 .122555 bezier .131039 .899475E-01 .966355E-01 .595774E-01 .06223 .02921 bezier .108558 .326268E-01 .150795 .020034 .19685 .02032 bezier .206289 .298619E-01 .210861 .042738 .215265 .055245 bezier .223631 .063549 .2355 .728919E-01 .24765 .07112 bezier .239313 .289002E-01 .195668 -.486189E-02 .1524 -.000635 bezier .114528 .147913E-02 .781704E-01 .010483 .03937 .008255 bezier .307675E-01 .61832E-02 .216758E-01 -.379809E-02 .0127 .000635 bezier .226978E-01 .154254E-01 .397059E-01 .244187E-01 .05207 .037465 bezier .830406E-01 .645628E-01 .116 .935921E-01 .14351 .122555 aline .10541 .122555 aline .10414 .12319 aline .10287 .12446 aline .10287 .126365 aline .10414 .128905 aline .10795 .132715 aline .10922 .13335 aline .109855 .133985 aline .114935 .136525 aline .117475 .13716 aline .159385 .13716 bezier .182088 .160073 .203959 .183585 .224631 .207962 aline .224155 .208915 bezier .186373 .203864 .151179 .22584 .113665 .213995 bezier .101656 .207774 .103288 .190178 .09017 .184785 bezier .835024E-01 .180816 .754124E-01 .175015 .06731 .177165 bezier .739427E-01 .205626 .102533 .221636 .127635 .23241 aline .135255 .23495 aline .142875 .236855 aline .14605 .23749 aline .149225 .23749 aline .14986 .238125 aline .154305 .238125 aline .15494 .23876 aline .172085 .23876 closepath ! end of curve ! start of curve amove .224155 .208915 aline .22479 .20828 aline .225425 .208915 aline .22479 .20955 aline .224155 .208915 closepath ! end of curve fill dfont endchar dfont char="[" !-------------- Beginning of new char. dfont wid=.666669 hei=.555557 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .02921 .208915 aline .03048 .20828 aline .03175 .207645 aline .03302 .206375 aline .03429 .203835 aline .03429 .06096 bezier .387752E-01 .257132E-01 .780729E-01 .780402E-02 .10922 .005715 bezier .14318 .41959E-02 .186939 .163933E-01 .19812 .05334 aline .198755 .05588 aline .19939 .056515 aline .19939 .060325 aline .200025 .06096 aline .200025 .203835 aline .201295 .206375 aline .202565 .207645 aline .205105 .208915 aline .208915 .208915 aline .211455 .207645 aline .212725 .206375 aline .213995 .203835 aline .213995 .05969 bezier .210013 .172989E-01 .164233 -.636737E-02 .126365 -.008255 bezier .848488E-01 -.111064E-01 .327574E-01 .681429E-02 .02159 .05207 aline .020955 .055245 aline .020955 .059055 aline .02032 .05969 aline .02032 .203835 aline .02159 .206375 aline .02286 .207645 aline .02413 .20828 aline .0254 .208915 closepath ! end of curve fill dfont endchar dfont char="\" !-------------- Beginning of new char. dfont wid=.666669 hei=.555557 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .126365 .208915 bezier .164233 .207027 .210013 .183361 .213995 .14097 aline .213995 -.003175 aline .212725 -.005715 aline .211455 -.006985 aline .208915 -.008255 aline .205105 -.008255 aline .202565 -.006985 aline .201295 -.005715 aline .200025 -.003175 aline .200025 .1397 bezier .19554 .174947 .156242 .192856 .125095 .194945 bezier .911351E-01 .196464 .473762E-01 .184267 .036195 .14732 aline .03556 .14478 aline .034925 .144145 aline .034925 .140335 aline .03429 .1397 aline .03429 -.003175 aline .03302 -.005715 aline .03175 -.006985 aline .02921 -.008255 aline .0254 -.008255 aline .02286 -.006985 aline .02159 -.005715 aline .02032 -.003175 aline .02032 .14097 bezier .243016E-01 .183361 .700816E-01 .207027 .10795 .208915 aline .126365 .208915 closepath ! end of curve fill dfont endchar dfont char="]" !-------------- Beginning of new char. dfont wid=.666669 hei=.555557 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .02921 .208915 aline .03048 .20828 aline .03175 .207645 aline .03302 .206375 aline .03429 .203835 aline .03429 .06096 bezier .387752E-01 .257132E-01 .780729E-01 .780402E-02 .10922 .005715 bezier .14318 .41959E-02 .186939 .163933E-01 .19812 .05334 aline .198755 .05588 aline .19939 .056515 aline .19939 .060325 aline .200025 .06096 aline .200025 .203835 aline .201295 .206375 aline .202565 .207645 aline .205105 .208915 aline .208915 .208915 aline .211455 .207645 aline .212725 .206375 aline .213995 .203835 aline .213995 .05969 bezier .210013 .172989E-01 .164233 -.636737E-02 .126365 -.008255 bezier .848488E-01 -.111064E-01 .327574E-01 .681429E-02 .02159 .05207 aline .020955 .055245 aline .020955 .059055 aline .02032 .05969 aline .02032 .203835 aline .02159 .206375 aline .02286 .207645 aline .02413 .20828 aline .0254 .208915 closepath ! end of curve ! start of curve amove .11938 .17399 aline .12065 .173355 aline .12192 .17272 aline .12319 .17145 aline .12446 .16891 aline .12446 .1143 aline .125095 .113665 aline .179705 .113665 aline .182245 .112395 aline .183515 .111125 aline .184785 .108585 aline .184785 .104775 aline .183515 .102235 aline .182245 .100965 aline .179705 .099695 aline .125095 .099695 aline .12446 .09906 aline .12446 .043815 bezier .122614 .371926E-01 .112336 .371926E-01 .11049 .043815 aline .11049 .09906 aline .109855 .099695 aline .05461 .099695 aline .05207 .100965 aline .0508 .102235 aline .04953 .104775 aline .04953 .108585 aline .0508 .111125 aline .05207 .112395 aline .05461 .113665 aline .109855 .113665 aline .11049 .1143 aline .11049 .16891 aline .11176 .17145 aline .11303 .17272 aline .1143 .173355 aline .11557 .17399 closepath ! end of curve fill dfont endchar dfont char="^" !-------------- Beginning of new char. dfont wid=.666669 hei=.555557 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .11938 .208915 bezier .129731 .198317 .132251 .18179 .1397 .16891 bezier .164278 .112741 .18926 .056739 .213995 .000635 aline .213995 -.003175 aline .212725 -.005715 aline .211455 -.006985 aline .208915 -.008255 aline .205105 -.008255 bezier .196102 -.171384E-02 .195119 .116776E-01 .18923 .020955 bezier .16506 .747347E-01 .141913 .131172 .116628 .183092 bezier .088168 .11985 .613392E-01 .055551 .03175 -.006985 aline .02921 -.008255 aline .0254 -.008255 bezier .145644E-01 -.353027E-02 .244565E-01 .794659E-02 .02667 .01524 bezier .549993E-01 .786664E-01 .827865E-01 .142317 .111125 .20574 aline .113665 .20828 aline .114935 .208915 aline .11938 .208915 closepath ! end of curve fill dfont endchar dfont char="_" !-------------- Beginning of new char. dfont wid=.666669 hei=.555557 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .02921 .208915 bezier .382132E-01 .202374 .391962E-01 .188982 .045085 .179705 bezier .692548E-01 .125926 .924026E-01 .694871E-01 .117687 .175683E-01 bezier .146147 .808103E-01 .172976 .145109 .202565 .207645 aline .205105 .208915 aline .208915 .208915 bezier .219751 .20419 .209859 .192713 .207645 .18542 bezier .179316 .121994 .151529 .583426E-01 .12319 -.00508 aline .12065 -.00762 bezier .109117 -.113945E-01 .10782 .493019E-02 .103505 .012065 bezier .756541E-01 .746676E-01 .480711E-01 .137381 .02032 .200025 aline .02032 .203835 aline .02159 .206375 aline .02286 .207645 aline .02413 .20828 aline .0254 .208915 closepath ! end of curve fill dfont endchar dfont char="`" !-------------- Beginning of new char. dfont wid=.611113 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .02921 .24257 aline .03048 .241935 aline .03175 .2413 aline .03302 .24003 aline .03429 .23749 aline .03429 .128905 aline .034925 .12827 aline .18796 .12827 bezier .195261 .127628 .197006 .116578 .189865 .1143 aline .034925 .1143 aline .03429 .113665 aline .03429 .004445 aline .03302 .001905 aline .03175 .000635 aline .02921 -.000635 aline .0254 -.000635 aline .02286 .000635 aline .02159 .001905 aline .02032 .004445 aline .02032 .23749 aline .02159 .24003 aline .02286 .2413 aline .02413 .241935 aline .0254 .24257 closepath ! end of curve fill dfont endchar dfont char="a" !-------------- Beginning of new char. dfont wid=.611113 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .18923 .24257 aline .1905 .241935 aline .19177 .2413 aline .19304 .24003 aline .19431 .23749 aline .19431 .004445 aline .19304 .001905 aline .19177 .000635 aline .18923 -.000635 aline .18542 -.000635 aline .18288 .000635 aline .18161 .001905 aline .18034 .004445 aline .18034 .113665 aline .179705 .1143 aline .024765 .1143 aline .023495 .114935 aline .02159 .11684 aline .02032 .11938 aline .02032 .122555 aline .02159 .125095 aline .023495 .127 aline .024765 .127635 aline .027305 .12827 aline .179705 .12827 aline .18034 .128905 aline .18034 .23749 aline .18161 .24003 aline .18288 .2413 aline .18415 .241935 aline .18542 .24257 closepath ! end of curve fill dfont endchar dfont char="b" !-------------- Beginning of new char. dfont wid=.444446 hei=.75 dep=.25 italic=0 set path ! start of curve newpath ! start of curve amove .070485 .262255 aline .071755 .26162 aline .073025 .260985 aline .074295 .259715 aline .075565 .257175 aline .075565 -.07366 aline .0762 -.074295 aline .14351 -.074295 aline .14605 -.075565 aline .147955 -.07747 aline .14859 -.07874 aline .14859 -.08382 aline .147955 -.08509 aline .14605 -.086995 aline .14351 -.088265 aline .066675 -.088265 aline .064135 -.086995 aline .062865 -.085725 aline .061595 -.083185 aline .061595 .257175 aline .062865 .259715 aline .064135 .260985 aline .065405 .26162 aline .066675 .262255 closepath ! end of curve fill dfont endchar dfont char="c" !-------------- Beginning of new char. dfont wid=.444446 hei=.75 dep=.25 italic=0 set path ! start of curve newpath ! start of curve amove .089535 .262255 aline .090805 .26162 aline .092075 .260985 aline .093345 .259715 aline .094615 .257175 aline .094615 -.083185 aline .093345 -.085725 aline .092075 -.086995 aline .089535 -.088265 aline .0127 -.088265 aline .01016 -.086995 aline .008255 -.08509 aline .00762 -.08382 aline .00762 -.07874 aline .008255 -.07747 aline .01016 -.075565 aline .0127 -.074295 aline .08001 -.074295 aline .080645 -.07366 aline .080645 .257175 aline .081915 .259715 aline .083185 .260985 aline .084455 .26162 aline .085725 .262255 closepath ! end of curve fill dfont endchar dfont char="d" !-------------- Beginning of new char. dfont wid=.444446 hei=.75 dep=.25 italic=0 set path ! start of curve newpath ! start of curve amove .14351 .262255 aline .14478 .26162 aline .14605 .260985 aline .147955 .25908 aline .14859 .25781 aline .14859 .25273 aline .147955 .25146 aline .14605 .249555 aline .14351 .248285 aline .0762 .248285 aline .075565 .24765 aline .075565 -.083185 aline .074295 -.085725 aline .073025 -.086995 aline .070485 -.088265 aline .066675 -.088265 aline .064135 -.086995 aline .062865 -.085725 aline .061595 -.083185 aline .061595 .257175 aline .062865 .259715 aline .064135 .260985 aline .065405 .26162 aline .066675 .262255 closepath ! end of curve fill dfont endchar dfont char="e" !-------------- Beginning of new char. dfont wid=.444446 hei=.75 dep=.25 italic=0 set path ! start of curve newpath ! start of curve amove .089535 .262255 aline .090805 .26162 aline .092075 .260985 aline .093345 .259715 aline .094615 .257175 aline .094615 -.083185 aline .093345 -.085725 aline .092075 -.086995 aline .089535 -.088265 aline .085725 -.088265 aline .083185 -.086995 aline .081915 -.085725 aline .080645 -.083185 aline .080645 .24765 aline .08001 .248285 aline .0127 .248285 aline .01016 .249555 aline .008255 .25146 aline .00762 .25273 aline .00762 .25781 aline .008255 .25908 aline .01016 .260985 aline .01143 .26162 aline .0127 .262255 closepath ! end of curve fill dfont endchar dfont char="f" !-------------- Beginning of new char. dfont wid=.500002 hei=.75 dep=.25 italic=0 set path ! start of curve newpath ! start of curve amove .147955 .262255 aline .14859 .26162 aline .14986 .260985 aline .14986 .25654 aline .14859 .255905 bezier .127787 .255571 .103439 .243352 .099695 .220345 aline .099695 .125095 bezier .969959E-01 .104018 .768819E-01 .915467E-01 .057785 .086995 bezier .768819E-01 .824433E-01 .969959E-01 .069972 .099695 .048895 aline .099695 -.046355 bezier .103439 -.693618E-01 .127787 -.815805E-01 .14859 -.081915 aline .14986 -.08255 aline .14986 -.086995 bezier .124894 -.908098E-01 .092175 -.817478E-01 .079375 -.05715 aline .078105 -.05334 aline .07747 -.0508 aline .07747 -.047625 aline .076835 -.04699 aline .076835 .04826 bezier .726587E-01 .710364E-01 .489121E-01 .840271E-01 .027305 .08382 aline .026035 .08509 aline .026035 .0889 aline .027305 .09017 bezier .489121E-01 .899629E-01 .726586E-01 .102954 .076835 .12573 aline .076835 .22098 bezier .803246E-01 .249014 .112972 .26061 .13716 .262255 aline .147955 .262255 closepath ! end of curve fill dfont endchar dfont char="g" !-------------- Beginning of new char. dfont wid=.500002 hei=.75 dep=.25 italic=0 set path ! start of curve newpath ! start of curve amove .038735 .262255 bezier .627618E-01 .26068 .961883E-01 .249319 .099695 .22098 aline .099695 .12573 bezier .103725 .102989 .127035 .901075E-01 .14859 .09017 aline .14986 .0889 aline .14986 .08509 aline .14859 .08382 bezier .127035 .838825E-01 .103725 .710008E-01 .099695 .04826 aline .099695 -.04699 bezier .961883E-01 -.753293E-01 .627618E-01 -.866898E-01 .038735 -.088265 aline .02794 -.088265 aline .026035 -.08636 aline .026035 -.08255 bezier .453514E-01 -.807118E-01 .703136E-01 -.725216E-01 .075565 -.050165 aline .0762 -.04699 aline .076835 -.046355 aline .076835 .048895 bezier .794054E-01 .697451E-01 .993277E-01 .821924E-01 .11811 .086995 bezier .993277E-01 .917976E-01 .794054E-01 .104245 .076835 .125095 aline .076835 .220345 bezier .729072E-01 .243443 .480806E-01 .255511 .027305 .255905 aline .026035 .25654 aline .026035 .26035 aline .02794 .262255 aline .038735 .262255 closepath ! end of curve fill dfont endchar dfont char="h" !-------------- Beginning of new char. dfont wid=.38889 hei=.75 dep=.25 italic=0 set path ! start of curve newpath ! start of curve amove .111125 .262255 bezier .122293 .256903 .111377 .244433 .109855 .23622 bezier .909287E-01 .186544 .721128E-01 .136822 .535517E-01 .086995 bezier .737423E-01 .300807E-01 .980648E-01 -.259268E-01 .116205 -.083185 aline .114935 -.085725 aline .113665 -.086995 bezier .103118 -.09291 .100394 -.781661E-01 .09779 -.07112 bezier .779332E-01 -.191212E-01 .584318E-01 .330249E-01 .038735 .08509 bezier .567613E-01 .141914 .080796 .197559 .100965 .254 aline .1016 .25527 aline .102235 .257175 aline .103505 .259715 aline .104775 .260985 aline .106045 .26162 aline .107315 .262255 closepath ! end of curve fill dfont endchar dfont char="i" !-------------- Beginning of new char. dfont wid=.38889 hei=.75 dep=.25 italic=0 set path ! start of curve newpath ! start of curve amove .02921 .262255 bezier .378628E-01 .256738 .375441E-01 .244053 .042545 .235585 bezier .060321 .185255 .082105 .135781 .09779 .08509 bezier .755059E-01 .027888 .055547 -.306581E-01 .03175 -.086995 aline .02921 -.088265 aline .0254 -.088265 bezier .142323E-01 -.829129E-01 .251477E-01 -.704434E-01 .02667 -.06223 bezier .455962E-01 -.012554 .644122E-01 .371677E-01 .829733E-01 .086995 bezier .627827E-01 .143909 .384602E-01 .199917 .02032 .257175 aline .02159 .259715 aline .02286 .260985 aline .02413 .26162 aline .0254 .262255 closepath ! end of curve fill dfont endchar dfont char="j" !-------------- Beginning of new char. dfont wid=.277779 hei=.75 dep=.25 italic=0 set path ! start of curve newpath ! start of curve amove .0508 .262255 aline .05207 .26162 aline .05334 .260985 aline .05461 .259715 aline .05588 .257175 aline .05588 -.083185 aline .05461 -.085725 aline .05334 -.086995 aline .0508 -.088265 aline .04699 -.088265 aline .04445 -.086995 aline .04318 -.085725 aline .04191 -.083185 aline .04191 .257175 aline .04318 .259715 aline .04445 .260985 aline .04572 .26162 aline .04699 .262255 closepath ! end of curve fill dfont endchar dfont char="k" !-------------- Beginning of new char. dfont wid=.500002 hei=.75 dep=.25 italic=0 set path ! start of curve newpath ! start of curve amove .055245 .262255 aline .056515 .26162 aline .057785 .260985 aline .05969 .25908 aline .060325 .25781 aline .060325 -.08382 aline .05969 -.08509 aline .057785 -.086995 aline .055245 -.088265 aline .051435 -.088265 aline .050165 -.08763 aline .047625 -.08509 aline .04699 -.08382 aline .046355 -.081915 aline .046355 .255905 aline .04699 .25781 aline .047625 .25908 aline .050165 .26162 aline .051435 .262255 closepath ! end of curve ! start of curve amove .12446 .262255 aline .12573 .26162 aline .12827 .25908 aline .128905 .25781 aline .12954 .255905 aline .12954 -.081915 aline .128905 -.08382 aline .12827 -.08509 aline .12573 -.08763 aline .12446 -.088265 aline .12065 -.088265 aline .11811 -.086995 aline .116205 -.08509 aline .11557 -.08382 aline .11557 .25781 aline .116205 .25908 aline .11811 .260985 aline .11938 .26162 aline .12065 .262255 closepath ! end of curve fill dfont endchar dfont char="l" !-------------- Beginning of new char. dfont wid=.500002 hei=.75 dep=.25 italic=0 set path ! start of curve newpath ! start of curve amove .089535 .269875 bezier .101882 .245103 .121183 .221957 .14859 .212725 aline .14986 .211455 aline .150495 .210185 aline .150495 .20574 aline .14986 .20447 aline .14859 .2032 bezier .134609 .204368 .12228 .215371 .111125 .22352 aline .100965 .23368 aline .10033 .23495 aline .09779 .23749 aline .097155 .23876 aline .095885 .24003 aline .09525 .239395 aline .09525 -.065405 bezier .104179 -.572194E-01 .114693 -.444386E-01 .127 -.0381 bezier .133523 -.03447 .14112 -.285958E-01 .14859 -.02921 aline .14986 -.03048 bezier .154144 -.409529E-01 .139402 -.040677 .133985 -.04572 bezier .113297 -.561728E-01 .100042 -.763124E-01 .089535 -.095885 aline .086995 -.095885 bezier .746484E-01 -.711127E-01 .553467E-01 -.479668E-01 .02794 -.038735 aline .02667 -.037465 aline .026035 -.036195 aline .026035 -.03175 aline .02667 -.03048 aline .02794 -.02921 bezier .041921 -.303779E-01 .542498E-01 -.413806E-01 .065405 -.04953 aline .075565 -.05969 aline .0762 -.06096 aline .07874 -.0635 aline .079375 -.06477 aline .080645 -.06604 aline .08128 -.065405 aline .08128 .239395 bezier .723506E-01 .231209 .618374E-01 .218429 .04953 .21209 bezier .430073E-01 .20846 .354102E-01 .202586 .02794 .2032 aline .02667 .20447 bezier .223864E-01 .214943 .371278E-01 .214667 .042545 .21971 bezier .632334E-01 .230163 .764884E-01 .250302 .086995 .269875 closepath ! end of curve fill dfont endchar dfont char="m" !-------------- Beginning of new char. dfont wid=.611113 hei=.75 dep=.25 italic=0 set path ! start of curve newpath ! start of curve amove .10922 .269875 bezier .126678 .228197 .158807 .192108 .20193 .175895 aline .203835 .17399 aline .203835 .16383 aline .20193 .161925 bezier .182156 .166214 .164614 .181117 .149225 .191135 aline .149225 -.017145 bezier .164614 -.712674E-02 .182156 .777606E-02 .20193 .012065 aline .203835 .01016 aline .203835 0 bezier .162457 -.181126E-01 .12664 -.505421E-01 .111125 -.09398 aline .10922 -.095885 aline .106045 -.095885 bezier .885873E-01 -.054207 .056458 -.181178E-01 .013335 -.001905 aline .01143 0 aline .01143 .01016 aline .013335 .012065 bezier .331089E-01 .777606E-02 .506509E-01 -.712673E-02 .06604 -.017145 aline .06604 .191135 bezier .506509E-01 .181117 .331089E-01 .166214 .013335 .161925 aline .01143 .16383 aline .01143 .17399 bezier .528077E-01 .192103 .886247E-01 .224532 .10414 .26797 aline .106045 .269875 aline .10922 .269875 closepath ! end of curve ! start of curve amove .10668 .2413 bezier .993483E-01 .228112 .090148 .21627 .08001 .205105 aline .08001 -.031115 bezier .909263E-01 -.042139 .995973E-01 -.565642E-01 .108162 -.681567E-01 bezier .115608 -.546671E-01 .124886 -.042498 .135255 -.031115 aline .135255 .205105 bezier .124339 .216129 .115668 .230553 .107103 .242147 closepath ! end of curve fill dfont endchar dfont char="n" !-------------- Beginning of new char. dfont wid=.500002 hei=.75 dep=.25 italic=0 set path ! start of curve newpath ! start of curve amove .02921 .262255 bezier .376973E-01 .256968 .372952E-01 .244549 .04191 .23622 bezier .796645E-01 .130966 .117719 .258366E-01 .155575 -.079375 aline .155575 -.083185 aline .154305 -.085725 aline .153035 -.086995 aline .150495 -.088265 aline .146685 -.088265 aline .144145 -.086995 bezier .100928 .253679E-01 .06192 .140094 .02032 .253365 aline .02032 .257175 aline .02159 .259715 aline .02286 .260985 aline .02413 .26162 aline .0254 .262255 closepath ! end of curve fill dfont endchar dfont char="o" !-------------- Beginning of new char. dfont wid=.277779 hei=.694445 dep=.194443 italic=0 set path ! start of curve newpath ! start of curve amove .036195 .203835 bezier .620753E-01 .20193 .763547E-01 .174026 .07747 .15113 bezier .082995 .101661 .290139E-01 .628817E-01 .04191 .01397 bezier .447221E-01 -.235041E-02 .548549E-01 -.218805E-01 .07366 -.020955 aline .0762 -.022225 aline .076835 -.02286 aline .07747 -.02413 aline .07747 -.026035 aline .076835 -.027305 bezier .05631 -.364976E-01 .321547E-01 -.203833E-01 .0254 0 bezier .134912E-01 .300243E-01 .235266E-01 .627426E-01 .040005 .089535 bezier .574057E-01 .118874 .664183E-01 .156199 .045085 .18542 aline .04064 .189865 aline .03937 .1905 aline .038735 .191135 aline .034925 .19304 aline .03302 .193675 aline .032385 .19431 aline .02667 .19431 aline .02286 .19558 aline .02032 .19812 aline .02032 .200025 aline .02286 .202565 aline .02667 .203835 aline .036195 .203835 closepath ! end of curve fill dfont endchar dfont char="p" !-------------- Beginning of new char. dfont wid=.833336 hei=.039999 dep=.960001 italic=0 set path ! start of curve newpath ! start of curve amove .29464 .013335 aline .29591 .0127 aline .29718 .012065 aline .29845 .010795 aline .29972 .008255 aline .29972 .004445 bezier .244503 -.109096 .19072 -.223613 .13462 -.33655 aline .13208 -.33782 aline .125095 -.33782 bezier .996105E-01 -.286105 .770933E-01 -.232232 .052705 -.179705 bezier .443551E-01 -.184852 .373605E-01 -.194109 .02794 -.196215 bezier .216991E-01 -.18956 .346541E-01 -.186006 .0381 -.18161 bezier .493324E-01 -.174532 .590405E-01 -.163389 .07112 -.15875 bezier .094648 -.204705 .114628 -.25374 .136525 -.30099 bezier .187491 -.196842 .236648 -.915643E-01 .28829 .012065 aline .28956 .0127 aline .29083 .013335 closepath ! end of curve fill dfont endchar dfont char="q" !-------------- Beginning of new char. dfont wid=.750002 hei=.683332 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .024765 .23876 aline .0254 .238125 aline .056515 .238125 aline .05715 .23749 aline .070485 .23749 aline .07112 .238125 aline .102235 .238125 aline .10287 .23876 aline .11176 .23876 aline .11303 .238125 aline .113665 .23749 aline .1143 .23622 aline .1143 .23114 aline .113665 .22987 bezier .102795 .225879 .877979E-01 .232289 .079375 .222885 aline .07874 .21971 aline .078105 .219075 aline .078105 .01016 aline .07874 .009525 aline .184785 .009525 aline .18542 .01016 aline .18542 .219075 bezier .18444 .227911 .174692 .227635 .168275 .2286 aline .151765 .2286 aline .150495 .229235 aline .14986 .22987 aline .149225 .23114 aline .149225 .23622 aline .14986 .23749 aline .150495 .238125 aline .151765 .23876 aline .160655 .23876 aline .16129 .238125 aline .192405 .238125 aline .19304 .23749 aline .206375 .23749 aline .20701 .238125 aline .238125 .238125 aline .23876 .23876 aline .24765 .23876 aline .24892 .238125 aline .249555 .23749 aline .25019 .23622 aline .25019 .23114 aline .249555 .22987 bezier .238685 .225879 .223688 .232289 .215265 .222885 aline .21463 .21971 aline .213995 .219075 aline .213995 .01905 bezier .214975 .102141E-01 .224723 .104901E-01 .23114 .009525 aline .24765 .009525 aline .24892 .00889 aline .249555 .008255 aline .25019 .006985 aline .25019 .001905 aline .249555 .000635 aline .24892 0 aline .24765 -.000635 aline .015875 -.000635 aline .014605 0 aline .01397 .000635 aline .013335 .001905 aline .013335 .006985 aline .01397 .008255 bezier .248399E-01 .122461E-01 .398371E-01 .583618E-02 .04826 .01524 aline .048895 .018415 aline .04953 .01905 aline .04953 .219075 bezier .485501E-01 .227911 .388022E-01 .227635 .032385 .2286 aline .015875 .2286 aline .014605 .229235 aline .01397 .22987 aline .013335 .23114 aline .013335 .23622 aline .01397 .23749 aline .014605 .238125 aline .015875 .23876 aline .024765 .23876 closepath ! end of curve fill dfont endchar dfont char="r" !-------------- Beginning of new char. dfont wid=.833336 hei=.683332 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .27432 .23876 aline .27559 .23749 aline .27559 .23495 aline .23495 .15367 aline .20828 .10033 aline .207645 .098425 aline .167005 .017145 aline .15367 -.009525 aline .1524 -.010795 aline .14986 -.012065 aline .142875 -.012065 aline .140335 -.010795 aline .139065 -.009525 aline .098425 .071755 aline .08509 .098425 aline .084455 .10033 aline .043815 .18161 aline .017145 .23495 aline .017145 .23749 aline .018415 .23876 aline .27432 .23876 closepath ! end of curve ! start of curve amove .05969 .213995 aline .060325 .21336 aline .094615 .14478 aline .09525 .142875 aline .13589 .061595 aline .15621 .020955 aline .156845 .02032 aline .196215 .09906 aline .19685 .100965 aline .23749 .182245 aline .253206 .213677 aline .25273 .21463 aline .060325 .21463 aline .05969 .213995 closepath ! end of curve fill dfont endchar dfont char="s" !-------------- Beginning of new char. dfont wid=.416669 hei=.694445 dep=.194445 italic=.111112 set path ! start of curve newpath ! start of curve amove .14224 .25019 bezier .159224 .248037 .172805 .224715 .160655 .21082 bezier .149714 .201209 .131799 .213614 .137795 .22733 aline .139065 .22987 aline .141605 .23241 aline .142875 .233045 aline .14351 .23368 aline .14605 .23495 aline .14859 .235585 aline .151765 .23622 bezier .145512 .244979 .131577 .245801 .126365 .235585 bezier .113456 .207965 .115818 .178859 .111125 .150495 bezier .104925 .835137E-01 .958823E-01 .209408E-01 .080645 -.046355 bezier .759596E-01 -.650612E-01 .573203E-01 -.836314E-01 .03683 -.07493 bezier .022903 -.695178E-01 .127969E-01 -.464722E-01 .02667 -.036195 bezier .380859E-01 -.288619E-01 .531121E-01 -.413368E-01 .047625 -.053975 aline .046355 -.056515 aline .043815 -.059055 aline .042545 -.05969 aline .04191 -.060325 aline .03937 -.061595 aline .03683 -.06223 aline .033655 -.062865 bezier .039908 -.716241E-01 .538433E-01 -.724464E-01 .059055 -.06223 bezier .719636E-01 -.346104E-01 .696024E-01 -.550415E-02 .074295 .02286 bezier .080495 .898413E-01 .895376E-01 .152414 .104775 .21971 bezier .109359 .233489 .118387 .247941 .133985 .25019 closepath ! end of curve fill dfont endchar dfont char="t" !-------------- Beginning of new char. dfont wid=.666669 hei=.555557 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .031115 .208915 aline .032385 .20828 aline .033655 .207645 aline .034925 .206375 aline .036195 .203835 aline .036195 .01397 aline .03683 .013335 aline .197485 .013335 aline .19812 .01397 aline .19812 .203835 aline .19939 .206375 aline .20066 .207645 aline .2032 .208915 aline .20701 .208915 aline .20955 .207645 aline .21082 .206375 aline .21209 .203835 aline .21209 .004445 aline .21082 .001905 aline .20955 .000635 aline .20701 -.000635 aline .027305 -.000635 aline .024765 .000635 aline .023495 .001905 aline .022225 .004445 aline .022225 .203835 aline .023495 .206375 aline .024765 .207645 aline .026035 .20828 aline .027305 .208915 closepath ! end of curve fill dfont endchar dfont char="u" !-------------- Beginning of new char. dfont wid=.666669 hei=.555557 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .20701 .208915 aline .20828 .20828 aline .20955 .207645 aline .21082 .206375 aline .21209 .203835 aline .21209 .004445 aline .21082 .001905 aline .20955 .000635 aline .20701 -.000635 aline .2032 -.000635 aline .20066 .000635 aline .19939 .001905 aline .19812 .004445 aline .19812 .19431 aline .197485 .194945 aline .03683 .194945 aline .036195 .19431 aline .036195 .004445 aline .034925 .001905 aline .033655 .000635 aline .031115 -.000635 aline .027305 -.000635 aline .024765 .000635 aline .023495 .001905 aline .022225 .004445 aline .022225 .203835 aline .023495 .206375 aline .024765 .207645 aline .026035 .20828 aline .027305 .208915 closepath ! end of curve fill dfont endchar dfont char="v" !-------------- Beginning of new char. dfont wid=.777781 hei=.635971 dep=.135971 italic=0 set path ! start of curve newpath ! start of curve amove .245745 .22225 aline .247015 .221615 aline .249555 .219075 aline .25019 .217805 aline .250825 .2159 aline .250825 .21463 aline .25019 .212725 aline .249555 .211455 aline .247015 .208915 aline .245745 .20828 aline .04826 .20828 aline .047625 .207645 aline .047625 .033655 aline .04826 .03302 aline .24511 .03302 aline .24765 .03175 aline .249555 .029845 aline .25019 .028575 aline .250825 .02667 aline .250825 .0254 aline .25019 .023495 aline .249555 .022225 aline .247015 .019685 aline .245745 .01905 aline .038735 .01905 aline .036195 .02032 aline .034925 .02159 aline .033655 .02413 aline .033655 .21717 aline .034925 .21971 aline .036195 .22098 aline .037465 .221615 aline .038735 .22225 closepath ! end of curve ! start of curve amove .24511 -.03556 bezier .252103 -.372841E-01 .252388 -.471147E-01 .245745 -.04953 aline .034925 -.04953 aline .032385 -.04826 aline .031115 -.04699 aline .029845 -.04445 aline .029845 -.04064 aline .031115 -.0381 aline .032385 -.03683 aline .033655 -.036195 aline .034925 -.03556 closepath ! end of curve fill dfont endchar dfont char="w" !-------------- Beginning of new char. dfont wid=.777781 hei=.635971 dep=.135971 italic=0 set path ! start of curve newpath ! start of curve amove .234315 .22225 aline .235585 .221615 aline .236855 .22098 aline .238125 .21971 aline .239395 .21717 aline .239395 .02413 aline .238125 .02159 aline .236855 .02032 aline .234315 .01905 aline .027305 .01905 aline .026035 .019685 aline .023495 .022225 aline .02286 .023495 aline .022225 .0254 aline .022225 .02667 aline .02286 .028575 aline .023495 .029845 aline .0254 .03175 aline .02794 .03302 aline .22479 .03302 aline .225425 .033655 aline .225425 .207645 aline .22479 .20828 aline .027305 .20828 aline .026035 .208915 aline .023495 .211455 aline .02286 .212725 aline .022225 .21463 aline .022225 .2159 aline .02286 .217805 aline .023495 .219075 aline .026035 .221615 aline .027305 .22225 closepath ! end of curve ! start of curve amove .238125 -.03556 aline .239395 -.036195 aline .240665 -.03683 aline .241935 -.0381 aline .243205 -.04064 aline .243205 -.04445 aline .241935 -.04699 aline .240665 -.04826 aline .238125 -.04953 aline .027305 -.04953 aline .026035 -.048895 aline .023495 -.046355 aline .02286 -.045085 aline .022225 -.04318 aline .022225 -.04191 aline .02286 -.040005 aline .023495 -.038735 aline .0254 -.03683 aline .02667 -.036195 aline .02794 -.03556 closepath ! end of curve fill dfont endchar dfont char="x" !-------------- Beginning of new char. dfont wid=.444448 hei=.694445 dep=.194445 italic=0 set path ! start of curve newpath ! start of curve amove .08382 .24638 bezier .107015 .244809 .13233 .222589 .125095 .197485 bezier .118478 .187016 .100131 .19384 .103505 .206375 aline .10414 .208915 aline .104775 .210185 aline .10795 .21336 aline .11049 .21463 aline .112395 .215265 aline .115217 .215829 bezier .105972 .24208 .629179E-01 .249081 .0508 .22098 bezier .334208E-01 .191712 .501134E-01 .151133 .08255 .14097 bezier .107764 .130261 .135327 .10933 .131445 .07874 bezier .129527 .570468E-01 .112505 .380217E-01 .09144 .032385 bezier .114892 .217529E-01 .136975 -.187228E-02 .13081 -.02921 bezier .125472 -.068607 .729419E-01 -.871797E-01 .043815 -.06096 bezier .335168E-01 -.522758E-01 .268019E-01 -.374398E-01 .031115 -.02413 bezier .377319E-01 -.136608E-01 .560787E-01 -.204854E-01 .052705 -.03302 aline .05207 -.03556 aline .051435 -.03683 aline .04826 -.040005 aline .04572 -.041275 aline .043815 -.04191 aline .409928E-01 -.424745E-01 bezier .502387E-01 -.687244E-01 .932919E-01 -.757259E-01 .10541 -.047625 bezier .122789 -.018357 .106097 .222221E-01 .07366 .032385 bezier .484455E-01 .430937E-01 .208835E-01 .640246E-01 .024765 .094615 bezier .266835E-01 .116308 .437053E-01 .135333 .06477 .14097 bezier .413184E-01 .151602 .192353E-01 .175227 .0254 .202565 bezier .029533 .229769 .569907E-01 .249502 .08382 .24638 closepath ! end of curve ! start of curve amove .07366 .13462 bezier .479817E-01 .128951 .390343E-01 .955152E-01 .046355 .07366 bezier .518064E-01 .573534E-01 .649652E-01 .416341E-01 .081915 .0381 bezier .109468 .449874E-01 .118752 .814027E-01 .10795 .104775 bezier .101744 .118837 .894787E-01 .132284 .074295 .135255 closepath ! end of curve fill dfont endchar dfont char="y" !-------------- Beginning of new char. dfont wid=.444446 hei=.694445 dep=.194445 italic=0 set path ! start of curve newpath ! start of curve amove .080645 .24638 aline .08255 .245745 aline .08509 .244475 aline .088265 .2413 bezier .923389E-01 .213135 .821901E-01 .187636 .081915 .16002 aline .08128 .159385 aline .08128 .15367 bezier .977272E-01 .153334 .114965 .166005 .131445 .159385 aline .13462 .15621 aline .135255 .15494 aline .13589 .1524 aline .13589 .14732 aline .135255 .14478 bezier .126952 .132732 .11066 .140504 .09906 .142875 aline .09144 .14478 aline .088265 .145415 aline .08763 .14605 aline .08382 .14605 aline .08255 .146473 aline .08128 .14605 bezier .825685E-01 .12836 .876708E-01 .110301 .089535 .09271 aline .089535 .05207 bezier .879028E-01 .909586E-02 .864213E-01 -.335148E-01 .081915 -.075565 aline .080645 -.076835 aline .075565 -.076835 bezier .712207E-01 -.665197E-01 .735463E-01 -.540335E-01 .07112 -.04318 bezier .692289E-01 -.115996E-01 .678525E-01 .020194 .066675 .05207 aline .066675 .09271 bezier .685392E-01 .110301 .736415E-01 .12836 .07493 .14605 bezier .584828E-01 .146386 .041245 .133715 .024765 .140335 aline .02159 .14351 aline .020955 .14478 aline .02032 .14732 aline .02032 .1524 aline .020955 .15494 bezier .292579E-01 .166988 .455503E-01 .159216 .05715 .156845 aline .06477 .15494 aline .067945 .154305 aline .06858 .15367 aline .07239 .15367 aline .07366 .153247 aline .07493 .15367 bezier .747378E-01 .183523 .640125E-01 .210992 .067945 .2413 aline .07112 .244475 aline .07366 .245745 aline .075565 .24638 closepath ! end of curve fill dfont endchar dfont char="z" !-------------- Beginning of new char. dfont wid=.444446 hei=.694445 dep=.194445 italic=0 set path ! start of curve newpath ! start of curve amove .080645 .24638 bezier .946711E-01 .242584 .882996E-01 .225727 .088265 .2159 bezier .861415E-01 .200753 .811125E-01 .185281 .081915 .17018 bezier .988204E-01 .170744 .118863 .184909 .133985 .17399 aline .135255 .17145 aline .13589 .16891 aline .13589 .164465 aline .135255 .161925 aline .133985 .159385 bezier .11989 .149352 .101788 .160818 .08636 .16256 aline .085725 .163195 aline .081915 .163195 bezier .807203E-01 .139744 .929481E-01 .116517 .088265 .092075 aline .08509 .0889 aline .08255 .08763 aline .080645 .086995 aline .075565 .086995 bezier .615389E-01 .907911E-01 .679104E-01 .107648 .067945 .117475 bezier .700685E-01 .132622 .750975E-01 .148094 .074295 .163195 bezier .578495E-01 .162312 .396401E-01 .150131 .023495 .158115 bezier .015627 .165173 .226822E-01 .180357 .032385 .1778 aline .040005 .1778 aline .046355 .17653 aline .056515 .17399 aline .05842 .173355 aline .0635 .172085 aline .06985 .170815 aline .070485 .17018 aline .074295 .17018 bezier .754897E-01 .193631 .632619E-01 .216858 .067945 .2413 aline .07112 .244475 aline .07366 .245745 aline .075565 .24638 closepath ! end of curve ! start of curve amove .080645 .085725 bezier .946711E-01 .819289E-01 .882996E-01 .650717E-01 .088265 .055245 bezier .08572 .403163E-01 .821452E-01 .253876E-01 .08128 .01016 bezier .977268E-01 .98235E-02 .114965 .224953E-01 .131445 .015875 aline .13462 .0127 aline .135255 .01143 aline .13589 .00889 aline .13589 .00381 aline .135255 .00127 bezier .126952 -.107784E-01 .11066 -.300572E-02 .09906 -.000635 aline .09144 .00127 aline .088265 .001905 aline .08763 .00254 aline .08382 .00254 aline .08255 .296333E-02 aline .08128 .00254 bezier .818032E-01 -.211341E-01 .925275E-01 -.437626E-01 .088265 -.067945 aline .08509 -.07112 aline .08255 -.07239 aline .080645 -.073025 aline .075565 -.073025 bezier .615389E-01 -.692289E-01 .679104E-01 -.523717E-01 .067945 -.042545 bezier .07049 -.276163E-01 .740648E-01 -.126876E-01 .07493 .00254 bezier .584832E-01 .28765E-02 .041245 -.979525E-02 .024765 -.003175 aline .02159 0 aline .020955 .00127 aline .02032 .00381 aline .02032 .00889 aline .020955 .01143 bezier .292578E-01 .234784E-01 .455503E-01 .157057E-01 .05715 .013335 aline .06477 .01143 aline .067945 .010795 aline .06858 .01016 aline .07239 .01016 aline .07366 .973665E-02 aline .07493 .01016 bezier .744068E-01 .338341E-01 .636825E-01 .564626E-01 .067945 .080645 aline .07112 .08382 aline .07366 .08509 aline .075565 .085725 closepath ! end of curve fill dfont endchar dfont char="{" !-------------- Beginning of new char. dfont wid=.611113 hei=.694445 dep=.194445 italic=0 set path ! start of curve newpath ! start of curve amove .19939 .24257 aline .20066 .241935 aline .20193 .2413 aline .2032 .24003 aline .20447 .23749 aline .20447 .23368 aline .2032 .23114 aline .20193 .22987 aline .19939 .2286 aline .175895 .2286 aline .17526 .227965 aline .17526 -.064135 aline .17399 -.066675 aline .17272 -.067945 aline .17018 -.069215 aline .16637 -.069215 aline .16383 -.067945 aline .16256 -.066675 aline .16129 -.064135 aline .16129 .227965 aline .160655 .2286 aline .136525 .2286 aline .13589 .227965 aline .13589 -.064135 aline .13462 -.066675 aline .13335 -.067945 aline .13081 -.069215 aline .127 -.069215 aline .12446 -.067945 aline .12319 -.066675 aline .12192 -.064135 aline .12192 .07874 bezier .805151E-01 .813529E-01 .286318E-01 .102896 .020955 .14986 bezier .127863E-01 .195969 .537435E-01 .24045 .099695 .24257 closepath ! end of curve fill dfont endchar dfont char="|" !-------------- Beginning of new char. dfont wid=.777781 hei=.694445 dep=.129629 italic=0 set path ! start of curve newpath ! start of curve amove .14224 .254 bezier .186974 .249842 .21037 .19477 .192405 .15621 bezier .187884 .145647 .180702 .136668 .172244 .129222 aline .177165 .11938 aline .1778 .117475 aline .179705 .113665 bezier .19866 .137543 .239124 .130728 .252095 .10414 bezier .27316 .677444E-01 .264307 .118933E-01 .22225 -.00508 bezier .200585 -.134076E-01 .167312 -.648178E-02 .161925 .019685 aline .161925 .023495 aline .16129 .02413 aline .144145 .02413 bezier .141699 .191287E-02 .149094 -.189314E-01 .153035 -.041275 aline .151765 -.043815 aline .150495 -.045085 aline .147955 -.046355 aline .125095 -.046355 aline .122555 -.045085 aline .121285 -.043815 bezier .117946 -.329933E-01 .126386 -.218094E-01 .126365 -.010795 bezier .128256 .247473E-03 .1304 .125586E-01 .128905 .02413 aline .11176 .02413 bezier .110043 -.493607E-02 .725457E-01 -.149696E-01 .04953 -.004445 bezier .136576E-02 .160964E-01 -.310575E-02 .906174E-01 .03683 .121285 bezier .542657E-01 .133165 .798925E-01 .130087 .093345 .113665 aline .09525 .117475 aline .095885 .11938 aline .100806 .129222 bezier .595624E-01 .160769 .688888E-01 .236962 .12065 .252095 aline .12319 .25273 aline .126365 .253365 aline .130175 .253365 aline .13081 .254 aline .14224 .254 closepath ! end of curve fill dfont endchar dfont char="}" !-------------- Beginning of new char. dfont wid=.777781 hei=.694445 dep=.129629 italic=0 set path ! start of curve newpath ! start of curve amove .13843 .254 aline .1397 .253365 bezier .151933 .235764 .160199 .214538 .17272 .19685 bezier .194634 .161326 .222559 .129326 .25273 .10033 aline .25273 .095885 bezier .206112 .525153E-01 .16954 .446452E-03 .14097 -.056515 aline .13843 -.057785 aline .13462 -.057785 aline .13208 -.056515 bezier .103439 -.495161E-03 .686716E-01 .515426E-01 .02159 .09398 aline .02032 .09652 aline .02032 .099695 bezier .657145E-01 .143782 .103502 .194049 .13081 .25146 aline .13208 .25273 aline .13335 .253365 aline .13462 .254 closepath ! end of curve ! start of curve amove .13589 .22987 bezier .110508 .180846 .784544E-01 .136159 .382587E-01 .981075E-01 bezier .787723E-01 .597092E-01 .111057 .146127E-01 .136525 -.034925 bezier .161993 .146127E-01 .194278 .597091E-01 .234791 .981075E-01 bezier .194278 .136506 .161993 .181602 .136525 .23114 closepath ! end of curve fill dfont endchar dfont char="~" !-------------- Beginning of new char. dfont wid=.777781 hei=.694445 dep=.129629 italic=0 set path ! start of curve newpath ! start of curve amove .084455 .25019 bezier .106902 .24793 .127647 .232386 .136525 .211455 bezier .151285 .250946 .211164 .265683 .23749 .22987 bezier .26453 .186421 .254489 .128173 .22098 .090805 aline .220345 .089535 aline .217805 .086995 aline .21717 .085725 aline .213995 .08255 aline .21336 .08128 aline .207645 .075565 aline .20701 .074295 aline .18288 .050165 bezier .162855 .345111E-01 .151064 .118508E-01 .14097 -.010795 bezier .132389 -.016226 .128154 -.527858E-02 .126365 .00127 bezier .118098 .201073E-01 .106094 .370134E-01 .09017 .050165 aline .06604 .074295 bezier .391836E-01 .102531 .015303 .140709 .020955 .180975 bezier .202058E-01 .210996 .379788E-01 .247939 .071755 .25019 aline .084455 .25019 closepath ! end of curve ! start of curve amove .07239 .235585 bezier .447795E-01 .233645 .356832E-01 .201219 .03429 .17907 bezier .309746E-01 .14212 .530257E-01 .108984 .07747 .083185 aline .100965 .05969 bezier .116214 .047039 .128047 .311613E-01 .136525 .013335 bezier .145003 .311613E-01 .156836 .047039 .172085 .05969 aline .19558 .083185 bezier .221865 .110464 .245314 .14799 .23749 .18669 bezier .236553 .208045 .223823 .234066 .200025 .23622 bezier .170787 .239462 .145663 .212949 .14351 .184785 aline .14224 .182245 aline .14097 .180975 aline .13843 .179705 bezier .125966 .178687 .130021 .194548 .125095 .20193 bezier .117566 .22321 .945931E-01 .239525 .07239 .235585 closepath ! end of curve fill dfont endchar dfont char=127 !-------------- Beginning of new char. dfont wid=.777781 hei=.694445 dep=.129629 italic=0 gle-graphics-4.2.4c/src/fonts/plcg.afm0000664000000000000000000001235311676336540016302 0ustar rootrootStartFontMetrics 2.0 Comment Made from HERSHEY font file using SPLITFONT.BAS FontName plCG EncodingScheme TEXENCODING FullName plCG FamilyName plCG Weight Medium ItalicAngle 0 IsFixedPitch false UnderlinePosition -97 UnderlineThickness 73 FontBBox 0 -400 1001 1001 CapHeight 729 XHeight 151 Descender -219 Ascender 729 StartCharMetrics 95 C 32 ; WX 400 ; N C32 ; B 0 0 0 0 ; C 33 ; WX 415 ; N C33 ; B 161 0 268 700 ; C 34 ; WX 631 ; N C34 ; B 161 430 538 700 ; C 35 ; WX 846 ; N C35 ; B 161 0 699 592 ; C 36 ; WX 523 ; N C36 ; B 107 430 430 753 ; C 37 ; WX 784 ; N C37 ; B 99 0 700 700 ; C 38 ; WX 846 ; N C38 ; B 161 0 699 592 ; C 39 ; WX 361 ; N C39 ; B 161 430 214 700 ; C 40 ; WX 523 ; N C40 ; B 161 -215 430 861 ; C 41 ; WX 523 ; N C41 ; B 107 -215 376 861 ; C 42 ; WX 523 ; N C42 ; B 161 -215 376 861 ; C 43 ; WX 577 ; N C43 ; B 214 -215 376 861 ; C 44 ; WX 415 ; N C44 ; B 161 -161 268 107 ; C 45 ; WX 523 ; N C45 ; B 107 -215 376 861 ; C 46 ; WX 415 ; N C46 ; B 161 0 268 107 ; C 47 ; WX 792 ; N C47 ; B 107 -215 700 861 ; C 48 ; WX 685 ; N C48 ; B 107 0 592 700 ; C 49 ; WX 685 ; N C49 ; B 161 0 538 700 ; C 50 ; WX 685 ; N C50 ; B 107 0 592 700 ; C 51 ; WX 685 ; N C51 ; B 107 0 592 700 ; C 52 ; WX 685 ; N C52 ; B 53 0 646 700 ; C 53 ; WX 685 ; N C53 ; B 107 0 592 700 ; C 54 ; WX 685 ; N C54 ; B 107 0 592 700 ; C 55 ; WX 685 ; N C55 ; B 107 0 592 700 ; C 56 ; WX 685 ; N C56 ; B 107 0 592 700 ; C 57 ; WX 685 ; N C57 ; B 107 0 592 700 ; C 58 ; WX 415 ; N C58 ; B 161 0 268 484 ; C 59 ; WX 415 ; N C59 ; B 161 -161 268 484 ; C 60 ; WX 784 ; N C60 ; B 133 0 666 600 ; C 61 ; WX 577 ; N C61 ; B 214 -215 376 861 ; C 62 ; WX 784 ; N C62 ; B 133 0 666 600 ; C 63 ; WX 685 ; N C63 ; B 107 0 592 700 ; C 64 ; WX 884 ; N C64 ; B 99 0 799 700 ; C 65 ; WX 739 ; N C65 ; B 0 0 753 700 ; C 66 ; WX 846 ; N C66 ; B 107 0 700 700 ; C 67 ; WX 685 ; N C67 ; B 107 0 646 700 ; C 68 ; WX 739 ; N C68 ; B 53 0 700 700 ; C 69 ; WX 792 ; N C69 ; B 107 0 646 700 ; C 70 ; WX 685 ; N C70 ; B 107 0 592 700 ; C 71 ; WX 900 ; N C71 ; B 107 0 807 700 ; C 72 ; WX 792 ; N C72 ; B 107 0 700 700 ; C 73 ; WX 469 ; N C73 ; B 107 0 376 700 ; C 74 ; WX 846 ; N C74 ; B 107 0 807 700 ; C 75 ; WX 739 ; N C75 ; B 0 0 753 700 ; C 76 ; WX 1008 ; N C76 ; B 107 0 915 700 ; C 77 ; WX 846 ; N C77 ; B 107 0 753 700 ; C 78 ; WX 846 ; N C78 ; B 107 -53 753 753 ; C 79 ; WX 792 ; N C79 ; B 107 0 700 700 ; C 80 ; WX 900 ; N C80 ; B 107 0 807 700 ; C 81 ; WX 792 ; N C81 ; B 107 0 700 700 ; C 82 ; WX 846 ; N C82 ; B 107 0 700 700 ; C 83 ; WX 792 ; N C83 ; B 107 0 699 700 ; C 84 ; WX 792 ; N C84 ; B 107 0 700 700 ; C 85 ; WX 792 ; N C85 ; B 107 0 700 700 ; C 86 ; WX 792 ; N C86 ; B 53 0 753 700 ; C 87 ; WX 900 ; N C87 ; B 107 0 807 700 ; C 88 ; WX 792 ; N C88 ; B 107 0 700 700 ; C 89 ; WX 739 ; N C89 ; B -107 0 646 700 ; C 90 ; WX 792 ; N C90 ; B 0 0 700 700 ; C 91 ; WX 451 ; N C91 ; B 133 -233 366 833 ; C 92 ; WX 300 ; N C92 ; B 0 0 0 0 ; C 93 ; WX 451 ; N C93 ; B 99 -233 333 833 ; C 94 ; WX 300 ; N C94 ; B 0 0 0 0 ; C 95 ; WX 300 ; N C95 ; B 0 0 0 0 ; C 96 ; WX 318 ; N C96 ; B 133 500 199 700 ; C 97 ; WX 846 ; N C97 ; B 107 0 753 484 ; C 98 ; WX 685 ; N C98 ; B 0 -215 592 700 ; C 99 ; WX 739 ; N C99 ; B 53 -215 646 484 ; C 100 ; WX 739 ; N C100 ; B 107 0 592 753 ; C 101 ; WX 631 ; N C101 ; B 107 0 538 484 ; C 102 ; WX 577 ; N C102 ; B 107 -215 538 700 ; C 103 ; WX 846 ; N C103 ; B 53 -215 699 484 ; C 104 ; WX 846 ; N C104 ; B 53 0 753 700 ; C 105 ; WX 469 ; N C105 ; B 107 0 430 484 ; C 106 ; WX 739 ; N C106 ; B 53 0 646 484 ; C 107 ; WX 631 ; N C107 ; B 0 0 592 700 ; C 108 ; WX 792 ; N C108 ; B 0 -215 753 484 ; C 109 ; WX 792 ; N C109 ; B 107 0 700 484 ; C 110 ; WX 577 ; N C110 ; B 107 -215 484 700 ; C 111 ; WX 685 ; N C111 ; B 107 0 592 484 ; C 112 ; WX 900 ; N C112 ; B 107 0 807 484 ; C 113 ; WX 739 ; N C113 ; B 0 -215 646 484 ; C 114 ; WX 846 ; N C114 ; B 107 0 753 484 ; C 115 ; WX 792 ; N C115 ; B 107 0 699 484 ; C 116 ; WX 739 ; N C116 ; B 53 0 646 484 ; C 117 ; WX 792 ; N C117 ; B 107 -215 700 484 ; C 118 ; WX 685 ; N C118 ; B 53 -215 592 484 ; C 119 ; WX 954 ; N C119 ; B 53 -215 861 700 ; C 120 ; WX 846 ; N C120 ; B 107 0 753 484 ; C 121 ; WX 792 ; N C121 ; B 107 0 753 484 ; C 122 ; WX 739 ; N C122 ; B 161 0 646 700 ; C 123 ; WX 485 ; N C123 ; B 166 -233 333 833 ; C 124 ; WX 523 ; N C124 ; B 161 -215 430 861 ; C 125 ; WX 485 ; N C125 ; B 166 -233 333 833 ; C 126 ; WX 523 ; N C126 ; B 161 484 376 700 ; EndCharMetrics EndFontMetrics gle-graphics-4.2.4c/src/fonts/pltr.afm0000664000000000000000000001223611676336540016336 0ustar rootrootStartFontMetrics 2.0 Comment Made from HERSHEY font file using SPLITFONT.BAS FontName plTR EncodingScheme TEXENCODING FullName plTR FamilyName plTR Weight Medium ItalicAngle 0 IsFixedPitch false UnderlinePosition -97 UnderlineThickness 73 FontBBox 0 -400 1001 1001 CapHeight 729 XHeight 151 Descender -219 Ascender 729 StartCharMetrics 95 C 32 ; WX 400 ; N C32 ; B 0 0 0 0 ; C 33 ; WX 351 ; N C33 ; B 133 0 233 700 ; C 34 ; WX 351 ; N C34 ; B 133 466 233 700 ; C 35 ; WX 300 ; N C35 ; B 0 0 0 0 ; C 36 ; WX 651 ; N C36 ; B 99 -133 566 833 ; C 37 ; WX 784 ; N C37 ; B 99 0 700 700 ; C 38 ; WX 300 ; N C38 ; B 0 0 0 0 ; C 39 ; WX 351 ; N C39 ; B 133 466 233 700 ; C 40 ; WX 451 ; N C40 ; B 99 -233 333 833 ; C 41 ; WX 451 ; N C41 ; B 133 -233 366 833 ; C 42 ; WX 585 ; N C42 ; B 133 466 500 700 ; C 43 ; WX 818 ; N C43 ; B 133 32 700 600 ; C 44 ; WX 351 ; N C44 ; B 133 -133 233 99 ; C 45 ; WX 818 ; N C45 ; B 133 299 700 333 ; C 46 ; WX 351 ; N C46 ; B 133 0 233 99 ; C 47 ; WX 751 ; N C47 ; B 66 -233 700 833 ; C 48 ; WX 651 ; N C48 ; B 99 0 566 700 ; C 49 ; WX 651 ; N C49 ; B 166 0 500 700 ; C 50 ; WX 651 ; N C50 ; B 99 0 566 700 ; C 51 ; WX 651 ; N C51 ; B 99 0 566 700 ; C 52 ; WX 651 ; N C52 ; B 66 0 600 700 ; C 53 ; WX 651 ; N C53 ; B 99 0 566 700 ; C 54 ; WX 651 ; N C54 ; B 99 0 566 700 ; C 55 ; WX 651 ; N C55 ; B 99 0 566 700 ; C 56 ; WX 651 ; N C56 ; B 99 0 566 700 ; C 57 ; WX 651 ; N C57 ; B 99 0 566 700 ; C 58 ; WX 351 ; N C58 ; B 133 0 233 466 ; C 59 ; WX 351 ; N C59 ; B 133 -133 233 466 ; C 60 ; WX 784 ; N C60 ; B 133 0 666 600 ; C 61 ; WX 818 ; N C61 ; B 133 166 700 466 ; C 62 ; WX 784 ; N C62 ; B 133 0 666 600 ; C 63 ; WX 618 ; N C63 ; B 99 0 532 700 ; C 64 ; WX 884 ; N C64 ; B 99 0 799 700 ; C 65 ; WX 651 ; N C65 ; B 32 0 633 700 ; C 66 ; WX 718 ; N C66 ; B 66 0 633 700 ; C 67 ; WX 685 ; N C67 ; B 99 0 600 700 ; C 68 ; WX 718 ; N C68 ; B 66 0 633 700 ; C 69 ; WX 685 ; N C69 ; B 66 0 600 700 ; C 70 ; WX 651 ; N C70 ; B 66 0 600 700 ; C 71 ; WX 751 ; N C71 ; B 99 0 700 700 ; C 72 ; WX 784 ; N C72 ; B 66 0 733 700 ; C 73 ; WX 384 ; N C73 ; B 66 0 333 700 ; C 74 ; WX 518 ; N C74 ; B 66 0 466 700 ; C 75 ; WX 718 ; N C75 ; B 66 0 700 700 ; C 76 ; WX 585 ; N C76 ; B 66 0 566 700 ; C 77 ; WX 851 ; N C77 ; B 66 0 799 700 ; C 78 ; WX 784 ; N C78 ; B 66 0 733 700 ; C 79 ; WX 718 ; N C79 ; B 99 0 633 700 ; C 80 ; WX 718 ; N C80 ; B 66 0 633 700 ; C 81 ; WX 718 ; N C81 ; B 99 -167 633 700 ; C 82 ; WX 718 ; N C82 ; B 66 0 666 700 ; C 83 ; WX 651 ; N C83 ; B 99 0 566 700 ; C 84 ; WX 651 ; N C84 ; B 66 0 600 700 ; C 85 ; WX 784 ; N C85 ; B 66 0 733 700 ; C 86 ; WX 651 ; N C86 ; B 32 0 633 700 ; C 87 ; WX 784 ; N C87 ; B 32 0 766 700 ; C 88 ; WX 651 ; N C88 ; B 32 0 633 700 ; C 89 ; WX 718 ; N C89 ; B 32 0 700 700 ; C 90 ; WX 651 ; N C90 ; B 99 0 566 700 ; C 91 ; WX 451 ; N C91 ; B 133 -233 366 833 ; C 92 ; WX 300 ; N C92 ; B 0 0 0 0 ; C 93 ; WX 451 ; N C93 ; B 99 -233 333 833 ; C 94 ; WX 300 ; N C94 ; B 0 0 0 0 ; C 95 ; WX 300 ; N C95 ; B 0 0 0 0 ; C 96 ; WX 318 ; N C96 ; B 133 500 199 700 ; C 97 ; WX 651 ; N C97 ; B 99 0 600 466 ; C 98 ; WX 685 ; N C98 ; B 66 0 600 700 ; C 99 ; WX 618 ; N C99 ; B 99 0 532 466 ; C 100 ; WX 685 ; N C100 ; B 99 0 633 700 ; C 101 ; WX 618 ; N C101 ; B 99 0 532 466 ; C 102 ; WX 451 ; N C102 ; B 66 0 433 700 ; C 103 ; WX 618 ; N C103 ; B 66 -233 566 466 ; C 104 ; WX 751 ; N C104 ; B 66 0 700 700 ; C 105 ; WX 384 ; N C105 ; B 66 0 333 700 ; C 106 ; WX 418 ; N C106 ; B 32 -233 299 700 ; C 107 ; WX 718 ; N C107 ; B 66 0 666 700 ; C 108 ; WX 384 ; N C108 ; B 66 0 333 700 ; C 109 ; WX 1118 ; N C109 ; B 66 0 1066 466 ; C 110 ; WX 751 ; N C110 ; B 66 0 700 466 ; C 111 ; WX 651 ; N C111 ; B 99 0 566 466 ; C 112 ; WX 685 ; N C112 ; B 66 -233 600 466 ; C 113 ; WX 651 ; N C113 ; B 99 -233 633 466 ; C 114 ; WX 551 ; N C114 ; B 66 0 500 466 ; C 115 ; WX 551 ; N C115 ; B 99 0 466 466 ; C 116 ; WX 485 ; N C116 ; B 66 0 466 700 ; C 117 ; WX 751 ; N C117 ; B 66 0 700 466 ; C 118 ; WX 585 ; N C118 ; B 32 0 566 466 ; C 119 ; WX 784 ; N C119 ; B 32 0 766 466 ; C 120 ; WX 651 ; N C120 ; B 66 0 600 466 ; C 121 ; WX 618 ; N C121 ; B 32 -233 600 466 ; C 122 ; WX 585 ; N C122 ; B 99 0 500 466 ; C 123 ; WX 485 ; N C123 ; B 166 -233 333 833 ; C 124 ; WX 518 ; N C124 ; B 99 299 433 700 ; C 125 ; WX 485 ; N C125 ; B 166 -233 333 833 ; C 126 ; WX 851 ; N C126 ; B 133 0 766 700 ; EndCharMetrics EndFontMetrics gle-graphics-4.2.4c/src/fonts/plba.gle0000664000000000000000000006141011676336540016275 0ustar rootrootdfont design= 1428 dfont char=33 amove 181 0 aline 181 181 aline 363 181 aline 363 0 aline 181 0 amove 181 272 aline 181 909 aline 363 909 aline 363 272 aline 181 272 stroke dfont endchar dfont char=34 amove 90 727 aline 90 909 aline 181 909 aline 181 727 aline 90 727 amove 363 727 aline 363 909 aline 454 909 aline 454 727 aline 363 727 stroke dfont endchar dfont char=35 amove 90 90 aline 90 272 aline 0 272 aline 0 363 aline 90 363 aline 90 545 aline 0 545 aline 0 636 aline 90 636 aline 90 818 aline 181 818 aline 181 636 aline 363 636 aline 363 818 aline 454 818 aline 454 636 aline 545 636 aline 545 545 aline 454 545 aline 454 363 aline 545 363 aline 545 272 aline 454 272 aline 454 90 aline 363 90 aline 363 272 aline 181 272 aline 181 90 aline 90 90 amove 181 363 aline 181 545 aline 363 545 aline 363 363 aline 181 363 stroke dfont endchar dfont char=36 amove 0 90 aline 0 272 aline 181 272 aline 181 181 aline 363 181 aline 363 363 aline 90 363 aline -1 454 aline -1 818 aline 90 909 aline 454 909 aline 545 818 aline 545 636 aline 363 636 aline 363 727 aline 181 727 aline 181 545 aline 454 545 aline 545 454 aline 545 90 aline 454 0 aline 90 0 aline 0 90 amove 272 0 aline 272 909 stroke dfont endchar dfont char=37 amove 0 636 aline 0 909 aline 272 909 aline 272 636 aline 0 636 amove 90 727 aline 90 818 aline 181 818 aline 181 727 aline 90 727 amove 90 90 aline 454 909 aline 545 909 aline 545 818 aline 181 0 aline 90 0 aline 90 90 amove 363 0 aline 363 272 aline 636 272 aline 636 0 aline 363 0 amove 454 90 aline 454 181 aline 545 181 aline 545 90 aline 454 90 stroke dfont endchar dfont char=38 amove 181 454 aline 90 545 aline 90 727 aline 181 818 aline 363 818 aline 454 727 aline 454 545 aline 181 272 aline 181 181 aline 363 181 aline 363 272 aline 545 272 aline 545 90 aline 454 0 aline 90 0 aline 0 90 aline 0 272 aline 272 545 aline 272 727 amove 363 454 aline 454 363 aline 363 272 aline 272 363 stroke dfont endchar dfont char=39 amove 272 636 aline 272 909 aline 363 909 aline 363 636 aline 272 636 stroke dfont endchar dfont char=40 amove 181 90 aline 181 818 aline 272 909 aline 454 909 aline 454 727 aline 363 727 aline 363 181 aline 454 181 aline 454 0 aline 272 0 aline 181 90 stroke dfont endchar dfont char=41 amove 90 0 aline 90 181 aline 181 181 aline 181 727 aline 90 727 aline 90 909 aline 272 909 aline 363 818 aline 363 90 aline 272 0 aline 90 0 stroke dfont endchar dfont char=42 amove 90 272 aline 181 363 aline 0 363 aline 0 454 aline 181 454 aline 90 545 aline 181 636 aline 272 454 aline 363 636 aline 454 545 aline 363 454 aline 545 454 aline 545 363 aline 363 363 aline 454 272 aline 363 181 aline 272 363 aline 181 181 aline 90 272 stroke dfont endchar dfont char=43 amove 0 363 aline 0 545 aline 181 545 aline 181 727 aline 363 727 aline 363 545 aline 545 545 aline 545 363 aline 363 363 aline 363 181 aline 181 181 aline 181 363 aline 0 363 stroke dfont endchar dfont char=44 amove 90 0 aline 181 0 aline 181 181 aline 363 181 aline 363 -91 aline 90 -91 aline 90 -1 stroke dfont endchar dfont char=45 amove 0 363 aline 0 545 aline 545 545 aline 545 363 aline 0 363 stroke dfont endchar dfont char=46 amove 181 0 aline 181 181 aline 363 181 aline 363 0 aline 181 0 stroke dfont endchar dfont char=47 amove 0 0 aline 0 90 aline 363 909 aline 545 909 aline 545 818 aline 181 0 aline -1 0 stroke dfont endchar dfont char=48 amove 0 90 aline 0 818 aline 90 909 aline 454 909 aline 545 818 aline 545 90 aline 454 0 aline 90 0 aline 0 90 amove 181 181 aline 181 727 aline 363 727 aline 363 181 aline 181 181 stroke dfont endchar dfont char=49 amove 181 0 aline 181 727 aline 90 727 aline 90 909 aline 363 909 aline 363 0 aline 181 0 stroke dfont endchar dfont char=50 amove 0 0 aline 0 181 aline 363 545 aline 363 727 aline 181 727 aline 181 545 aline 0 545 aline 0 818 aline 90 909 aline 454 909 aline 545 818 aline 545 454 aline 272 181 aline 545 181 aline 545 -1 aline 0 -1 stroke dfont endchar dfont char=51 amove 0 90 aline 0 272 aline 181 272 aline 181 181 aline 363 181 aline 363 363 aline 181 363 aline 181 545 aline 363 545 aline 363 727 aline 181 727 aline 181 636 aline 0 636 aline 0 818 aline 90 909 aline 454 909 aline 545 818 aline 545 545 aline 454 454 aline 545 363 aline 545 90 aline 454 0 aline 90 0 aline 0 90 stroke dfont endchar dfont char=52 amove 0 181 aline 0 454 aline 181 909 aline 454 909 aline 454 363 aline 545 363 aline 545 181 aline 454 181 aline 454 0 aline 272 0 aline 272 181 aline 0 181 amove 181 363 aline 272 636 aline 272 363 aline 181 363 stroke dfont endchar dfont char=53 amove 0 90 aline 0 272 aline 181 272 aline 181 181 aline 363 181 aline 363 454 aline 0 454 aline 0 909 aline 545 909 aline 545 727 aline 181 727 aline 181 636 aline 454 636 aline 545 545 aline 545 90 aline 454 0 aline 90 0 aline 0 90 stroke dfont endchar dfont char=54 amove 0 90 aline 0 818 aline 90 909 aline 454 909 aline 545 818 aline 545 636 aline 363 636 aline 363 727 aline 181 727 aline 181 545 aline 454 545 aline 545 454 aline 545 90 aline 454 0 aline 90 0 aline 0 90 amove 181 181 aline 181 363 aline 363 363 aline 363 181 aline 181 181 stroke dfont endchar dfont char=55 amove 90 0 aline 363 727 aline 0 727 aline 0 909 aline 545 909 aline 545 727 aline 272 0 aline 90 0 stroke dfont endchar dfont char=56 amove 0 90 aline 0 363 aline 90 454 aline 0 545 aline 0 818 aline 90 909 aline 454 909 aline 545 818 aline 545 545 aline 454 454 aline 545 363 aline 545 90 aline 454 0 aline 90 0 aline 0 90 amove 181 181 aline 181 363 aline 363 363 aline 363 181 aline 181 181 amove 181 545 aline 181 727 aline 363 727 aline 363 545 aline 181 545 stroke dfont endchar dfont char=57 amove 0 90 aline 0 272 aline 181 272 aline 181 181 aline 363 181 aline 363 363 aline 90 363 aline -1 454 aline -1 818 aline 90 909 aline 454 909 aline 545 818 aline 545 90 aline 454 0 aline 90 0 aline 0 90 amove 181 545 aline 181 727 aline 363 727 aline 363 545 aline 181 545 stroke dfont endchar dfont char=58 amove 181 0 aline 181 181 aline 363 181 aline 363 0 aline 181 0 amove 181 363 aline 181 545 aline 363 545 aline 363 363 aline 181 363 stroke dfont endchar dfont char=59 amove 90 0 aline 181 0 aline 181 181 aline 363 181 aline 363 -91 aline 90 -91 aline 90 -1 amove 181 363 aline 181 545 aline 363 545 aline 363 363 aline 181 363 stroke dfont endchar dfont char=60 amove 454 0 aline 0 454 aline 454 909 aline 454 727 aline 181 454 aline 454 181 aline 454 -1 stroke dfont endchar dfont char=61 amove 0 272 aline 0 363 aline 545 363 aline 545 272 aline 0 272 amove 0 545 aline 0 636 aline 545 636 aline 545 545 aline 0 545 stroke dfont endchar dfont char=62 amove 90 0 aline 90 181 aline 363 454 aline 90 727 aline 90 909 aline 545 454 aline 90 0 stroke dfont endchar dfont char=63 amove 181 0 aline 181 181 aline 363 181 aline 363 0 aline 181 0 amove 181 272 aline 181 363 aline 363 545 aline 363 727 aline 181 727 aline 181 636 aline 0 636 aline 0 818 aline 90 909 aline 454 909 aline 545 818 aline 545 545 aline 363 272 aline 181 272 stroke dfont endchar dfont char=64 amove 272 363 aline 272 545 aline 363 545 aline 363 363 aline 272 363 amove 545 363 aline 454 363 aline 454 545 aline 363 636 aline 272 636 aline 181 545 aline 181 363 aline 272 272 aline 545 272 aline 545 636 aline 454 727 aline 181 727 aline 90 636 aline 90 272 aline 181 181 aline 545 181 stroke dfont endchar dfont char=65 amove 0 0 aline 0 818 aline 90 909 aline 454 909 aline 545 818 aline 545 0 aline 363 0 aline 363 363 aline 181 363 aline 181 0 aline 0 0 amove 181 545 aline 181 727 aline 363 727 aline 363 545 aline 181 545 stroke dfont endchar dfont char=66 amove 0 0 aline 0 909 aline 454 909 aline 545 818 aline 545 545 aline 454 454 aline 545 363 aline 545 90 aline 454 -1 aline 0 -1 amove 181 181 aline 181 363 aline 363 363 aline 363 181 aline 181 181 amove 181 545 aline 181 727 aline 363 727 aline 363 545 aline 181 545 stroke dfont endchar dfont char=67 amove 0 90 aline 0 818 aline 90 909 aline 454 909 aline 545 818 aline 545 636 aline 363 636 aline 363 727 aline 181 727 aline 181 181 aline 363 181 aline 363 272 aline 545 272 aline 545 90 aline 454 0 aline 90 0 aline 0 90 stroke dfont endchar dfont char=68 amove 0 0 aline 0 909 aline 454 909 aline 545 818 aline 545 90 aline 454 0 aline 0 0 amove 181 181 aline 181 727 aline 363 727 aline 363 181 aline 181 181 stroke dfont endchar dfont char=69 amove 0 0 aline 0 909 aline 545 909 aline 545 727 aline 181 727 aline 181 545 aline 363 545 aline 363 363 aline 181 363 aline 181 181 aline 545 181 aline 545 0 aline 0 0 stroke dfont endchar dfont char=70 amove 0 0 aline 0 909 aline 545 909 aline 545 727 aline 181 727 aline 181 545 aline 363 545 aline 363 363 aline 181 363 aline 181 0 aline 0 0 stroke dfont endchar dfont char=71 amove 0 90 aline 0 818 aline 90 909 aline 454 909 aline 545 818 aline 545 636 aline 363 636 aline 363 727 aline 181 727 aline 181 181 aline 363 181 aline 363 363 aline 272 363 aline 272 545 aline 545 545 aline 545 90 aline 454 0 aline 90 0 aline 0 90 stroke dfont endchar dfont char=72 amove 0 0 aline 0 909 aline 181 909 aline 181 545 aline 363 545 aline 363 909 aline 545 909 aline 545 0 aline 363 0 aline 363 363 aline 181 363 aline 181 0 aline 0 0 stroke dfont endchar dfont char=73 amove 181 0 aline 181 909 aline 363 909 aline 363 0 aline 181 0 stroke dfont endchar dfont char=74 amove 0 90 aline 0 272 aline 181 272 aline 181 181 aline 363 181 aline 363 909 aline 545 909 aline 545 90 aline 454 0 aline 90 0 aline 0 90 stroke dfont endchar dfont char=75 amove 0 0 aline 0 909 aline 181 909 aline 181 545 aline 363 727 aline 363 909 aline 545 909 aline 545 636 aline 363 454 aline 545 272 aline 545 0 aline 363 0 aline 363 181 aline 181 363 aline 181 0 aline 0 0 stroke dfont endchar dfont char=76 amove 0 0 aline 0 909 aline 181 909 aline 181 181 aline 545 181 aline 545 0 aline 0 0 stroke dfont endchar dfont char=77 amove 0 0 aline 0 909 aline 181 909 aline 272 636 aline 363 909 aline 545 909 aline 545 0 aline 363 0 aline 363 545 aline 272 363 aline 181 545 aline 181 0 aline 0 0 stroke dfont endchar dfont char=78 amove 0 0 aline 0 909 aline 181 909 aline 363 454 aline 363 909 aline 545 909 aline 545 0 aline 363 0 aline 181 454 aline 181 0 aline 0 0 stroke dfont endchar dfont char=79 amove 0 90 aline 0 818 aline 90 909 aline 454 909 aline 545 818 aline 545 90 aline 454 0 aline 90 0 aline 0 90 amove 181 181 aline 181 727 aline 363 727 aline 363 181 aline 181 181 stroke dfont endchar dfont char=80 amove 0 0 aline 0 909 aline 454 909 aline 545 818 aline 545 454 aline 454 363 aline 181 363 aline 181 0 aline -1 0 amove 181 545 aline 181 727 aline 363 727 aline 363 545 aline 181 545 stroke dfont endchar dfont char=81 amove 181 181 aline 181 727 aline 363 727 aline 363 181 aline 181 181 amove 454 0 aline 90 0 aline 0 90 aline 0 818 aline 90 909 aline 454 909 aline 545 818 aline 545 90 aline 636 0 aline 545 -91 aline 363 90 aline 454 181 aline 545 90 stroke dfont endchar dfont char=82 amove 0 0 aline 0 909 aline 454 909 aline 545 818 aline 545 545 aline 454 454 aline 545 363 aline 545 0 aline 363 0 aline 363 272 aline 272 363 aline 181 363 aline 181 0 aline 0 0 amove 181 545 aline 181 727 aline 363 727 aline 363 545 aline 181 545 stroke dfont endchar dfont char=83 amove 0 90 aline 0 272 aline 181 272 aline 181 181 aline 363 181 aline 363 363 aline 90 363 aline -1 454 aline -1 818 aline 90 909 aline 454 909 aline 545 818 aline 545 636 aline 363 636 aline 363 727 aline 181 727 aline 181 545 aline 454 545 aline 545 454 aline 545 90 aline 454 0 aline 90 0 aline 0 90 stroke dfont endchar dfont char=84 amove 181 0 aline 181 727 aline 0 727 aline 0 909 aline 545 909 aline 545 727 aline 363 727 aline 363 0 aline 181 0 stroke dfont endchar dfont char=85 amove 0 90 aline 0 909 aline 181 909 aline 181 181 aline 363 181 aline 363 909 aline 545 909 aline 545 90 aline 454 0 aline 90 0 aline 0 90 stroke dfont endchar dfont char=86 amove 181 0 aline 0 272 aline 0 909 aline 181 909 aline 181 363 aline 272 181 aline 363 363 aline 363 909 aline 545 909 aline 545 272 aline 363 0 aline 181 0 stroke dfont endchar dfont char=87 amove 90 0 aline 0 272 aline 0 909 aline 181 909 aline 181 363 aline 272 454 aline 363 363 aline 363 909 aline 545 909 aline 545 272 aline 454 0 aline 363 0 aline 272 181 aline 181 0 aline 90 0 stroke dfont endchar dfont char=88 amove 0 0 aline 0 272 aline 181 454 aline 0 636 aline 0 909 aline 181 909 aline 181 727 aline 272 636 aline 363 727 aline 363 909 aline 545 909 aline 545 636 aline 363 454 aline 545 272 aline 545 0 aline 363 0 aline 363 181 aline 272 272 aline 181 181 aline 181 0 aline 0 0 stroke dfont endchar dfont char=89 amove 181 0 aline 181 363 aline 0 636 aline 0 909 aline 181 909 aline 181 727 aline 272 545 aline 363 727 aline 363 909 aline 545 909 aline 545 636 aline 363 363 aline 363 0 aline 181 0 stroke dfont endchar dfont char=90 amove 0 0 aline 0 272 aline 363 727 aline 0 727 aline 0 909 aline 545 909 aline 545 636 aline 181 181 aline 545 181 aline 545 0 aline 0 0 stroke dfont endchar dfont char=91 amove 90 0 aline 90 909 aline 363 909 aline 363 818 aline 272 818 aline 272 90 aline 363 90 aline 363 0 aline 90 0 stroke dfont endchar dfont char=92 amove 363 0 aline 0 818 aline 0 909 aline 181 909 aline 545 90 aline 545 0 aline 363 0 stroke dfont endchar dfont char=93 amove 181 0 aline 181 90 aline 272 90 aline 272 818 aline 181 818 aline 181 909 aline 454 909 aline 454 0 aline 181 0 stroke dfont endchar dfont char=94 amove 0 272 aline 272 636 aline 545 272 aline 363 272 aline 272 363 aline 181 272 aline 0 272 stroke dfont endchar dfont char=95 amove 0 0 aline 0 181 aline 545 181 aline 545 0 aline 0 0 stroke dfont endchar dfont char=96 amove 272 727 aline 90 909 aline 181 909 aline 363 727 aline 272 727 stroke dfont endchar dfont char=97 amove 0 90 aline 0 272 aline 90 363 aline 363 363 aline 363 454 aline 0 454 aline 0 545 aline 90 636 aline 454 636 aline 545 545 aline 545 0 aline 90 0 aline 0 90 amove 181 181 aline 181 272 aline 363 272 aline 363 181 aline 181 181 stroke dfont endchar dfont char=98 amove 0 0 aline 0 909 aline 181 909 aline 181 545 aline 272 636 aline 454 636 aline 545 545 aline 545 90 aline 454 0 aline 272 0 aline 181 90 aline 181 0 aline 0 0 amove 181 181 aline 181 454 aline 363 454 aline 363 181 aline 181 181 stroke dfont endchar dfont char=99 amove 0 90 aline 0 545 aline 90 636 aline 454 636 aline 545 545 aline 545 363 aline 363 363 aline 363 454 aline 181 454 aline 181 181 aline 363 181 aline 363 272 aline 545 272 aline 545 90 aline 454 0 aline 90 0 aline 0 90 stroke dfont endchar dfont char=100 amove 0 90 aline 0 545 aline 90 636 aline 272 636 aline 363 545 aline 363 909 aline 545 909 aline 545 0 aline 363 0 aline 363 90 aline 272 0 aline 90 0 aline -1 90 amove 181 181 aline 181 454 aline 363 454 aline 363 181 aline 181 181 stroke dfont endchar dfont char=101 amove 0 90 aline 0 545 aline 90 636 aline 454 636 aline 545 545 aline 545 363 aline 454 272 aline 181 272 aline 181 181 aline 545 181 aline 545 90 aline 454 0 aline 90 0 aline 0 90 amove 181 363 aline 181 454 aline 363 454 aline 363 363 aline 181 363 stroke dfont endchar dfont char=102 amove 181 0 aline 181 545 aline 90 545 aline 90 636 aline 181 636 aline 181 818 aline 272 909 aline 545 909 aline 545 818 aline 454 818 aline 363 727 aline 363 636 aline 454 636 aline 454 545 aline 363 545 aline 363 0 aline 181 0 stroke dfont endchar dfont char=103 amove 0 90 aline 0 545 aline 90 636 aline 272 636 aline 363 545 aline 363 636 aline 545 636 aline 545 -91 aline 363 -273 aline 90 -273 aline -1 -182 aline -1 0 aline 90 -91 aline 272 -91 aline 363 0 aline 363 90 aline 272 0 aline 90 0 aline -1 90 amove 181 181 aline 181 454 aline 363 454 aline 363 181 aline 181 181 stroke dfont endchar dfont char=104 amove 0 0 aline 0 909 aline 181 909 aline 181 545 aline 272 636 aline 454 636 aline 545 545 aline 545 0 aline 363 0 aline 363 454 aline 272 454 aline 181 363 aline 181 0 aline 0 0 stroke dfont endchar dfont char=105 amove 181 0 aline 181 636 aline 363 636 aline 363 0 aline 181 0 amove 181 727 aline 181 909 aline 363 909 aline 363 727 aline 181 727 stroke dfont endchar dfont char=106 amove 0 0 aline 90 -91 aline 272 -91 aline 363 0 aline 363 636 aline 545 636 aline 545 -91 aline 363 -273 aline 90 -273 aline -1 -182 aline -1 -1 amove 363 727 aline 363 909 aline 545 909 aline 545 727 aline 363 727 stroke dfont endchar dfont char=107 amove 0 0 aline 0 909 aline 181 909 aline 181 545 aline 272 636 aline 454 636 aline 545 545 aline 545 363 aline 454 272 aline 545 0 aline 363 0 aline 272 272 aline 181 272 aline 181 0 aline 0 0 amove 181 363 aline 181 454 aline 363 454 aline 363 363 aline 181 363 stroke dfont endchar dfont char=108 amove 181 90 aline 181 909 aline 363 909 aline 363 90 aline 454 90 aline 454 0 aline 272 0 aline 181 90 stroke dfont endchar dfont char=109 amove 0 0 aline 0 636 aline 181 636 aline 181 545 aline 272 636 aline 363 545 aline 454 636 aline 545 636 aline 545 0 aline 363 0 aline 363 454 amove 181 454 aline 181 0 aline 0 0 amove 181 0 aline 363 0 stroke dfont endchar dfont char=110 amove 0 0 aline 0 636 aline 181 636 aline 181 545 aline 272 636 aline 454 636 aline 545 545 aline 545 0 aline 363 0 aline 363 454 aline 181 454 aline 181 0 aline 0 0 stroke dfont endchar dfont char=111 amove 0 90 aline 0 545 aline 90 636 aline 454 636 aline 545 545 aline 545 90 aline 454 0 aline 90 0 aline 0 90 amove 181 181 aline 181 454 aline 363 454 aline 363 181 aline 181 181 stroke dfont endchar dfont char=112 amove 181 90 aline 181 -273 aline 0 -273 aline 0 636 aline 181 636 aline 181 545 aline 272 636 aline 454 636 aline 545 545 aline 545 90 aline 454 0 aline 272 0 aline 181 90 amove 181 181 aline 181 454 aline 363 454 aline 363 181 aline 181 181 stroke dfont endchar dfont char=113 amove 0 90 aline 0 545 aline 90 636 aline 272 636 aline 363 545 aline 363 636 aline 545 636 aline 545 -91 aline 636 -91 aline 636 -182 aline 545 -182 aline 545 -273 aline 363 -273 aline 363 -182 aline 272 -182 aline 272 -91 aline 363 -91 aline 363 90 aline 272 0 aline 90 0 aline -1 90 amove 181 181 aline 181 454 aline 363 454 aline 363 181 aline 181 181 stroke dfont endchar dfont char=114 amove 0 0 aline 0 636 aline 181 636 aline 181 545 aline 272 636 aline 454 636 aline 454 454 aline 272 454 aline 181 363 aline 181 0 aline 0 0 stroke dfont endchar dfont char=115 amove 0 90 aline 0 181 aline 363 181 aline 363 272 aline 90 272 aline -1 363 aline -1 545 aline 90 636 aline 454 636 aline 545 545 aline 545 454 aline 181 454 aline 181 363 aline 454 363 aline 545 272 aline 545 90 aline 454 0 aline 90 0 aline 0 90 stroke dfont endchar dfont char=116 amove 181 90 aline 181 636 aline 90 636 aline 90 727 aline 181 727 aline 181 909 aline 363 909 aline 363 727 aline 454 727 aline 454 636 aline 363 636 aline 363 90 aline 454 90 aline 454 0 aline 272 0 aline 181 90 stroke dfont endchar dfont char=117 amove 0 90 aline 0 636 aline 181 636 aline 181 181 aline 363 181 aline 363 636 aline 545 636 aline 545 0 aline 363 0 aline 363 90 aline 272 0 aline 90 0 aline -1 90 stroke dfont endchar dfont char=118 amove 272 0 aline 0 272 aline 0 636 aline 181 636 aline 181 363 aline 272 272 aline 363 363 aline 363 636 aline 545 636 aline 545 272 aline 272 0 stroke dfont endchar dfont char=119 amove 181 0 aline 0 272 aline 0 636 aline 181 636 aline 181 272 aline 272 363 aline 363 272 aline 363 636 aline 545 636 aline 545 272 aline 363 0 aline 272 181 aline 181 0 stroke dfont endchar dfont char=120 amove 0 0 aline 0 181 aline 90 272 aline 90 363 aline 0 454 aline 0 636 aline 181 636 aline 181 454 aline 272 363 aline 363 454 aline 363 636 aline 545 636 aline 545 454 aline 454 363 aline 454 272 aline 545 181 aline 545 0 aline 363 0 aline 363 181 aline 272 272 aline 181 181 aline 181 0 aline 0 0 stroke dfont endchar dfont char=121 amove 0 0 aline 90 -91 aline 272 -91 aline 363 0 aline 363 90 aline 272 0 aline 90 0 aline -1 90 aline -1 636 aline 181 636 aline 181 181 aline 363 181 aline 363 636 aline 545 636 aline 545 -91 aline 363 -273 aline 90 -273 aline -1 -182 aline -1 -1 stroke dfont endchar dfont char=122 amove 0 0 aline 0 181 aline 272 454 aline 0 454 aline 0 636 aline 545 636 aline 545 454 aline 272 181 aline 545 181 aline 545 0 aline 0 0 stroke dfont endchar dfont char=123 amove 272 0 aline 181 90 aline 181 363 aline 0 454 aline 181 545 aline 181 818 aline 272 909 aline 454 909 aline 454 818 aline 363 818 aline 272 727 aline 272 181 aline 363 90 aline 454 90 aline 454 0 aline 272 0 stroke dfont endchar dfont char=124 amove 181 0 aline 181 363 aline 363 363 aline 363 0 aline 181 0 amove 181 545 aline 181 909 aline 363 909 aline 363 545 aline 181 545 stroke dfont endchar dfont char=125 amove 90 0 aline 90 90 aline 181 90 aline 272 181 aline 272 727 aline 181 818 aline 90 818 aline 90 909 aline 272 909 aline 363 818 aline 363 545 aline 545 454 aline 363 363 aline 363 90 aline 272 -1 aline 90 -1 stroke dfont endchar dfont char=126 amove 0 363 aline 0 545 aline 90 636 aline 181 636 aline 363 454 aline 454 454 aline 545 545 aline 545 363 aline 454 272 aline 363 272 aline 181 454 aline 90 454 aline 0 363 stroke dfont endchar dfont char=127 amove 272 181 aline 0 454 aline 272 727 aline 272 545 aline 545 545 aline 545 363 aline 272 363 aline 272 181 stroke dfont endchar gle-graphics-4.2.4c/src/fonts/texcmssi.gle0000664000000000000000000051302711676336540017224 0ustar rootrootdfont file_name="CMSSI10" dfont font_name="CMSSI10" dfont design= .35146 dfont slant= .212555 dfont space= .117153 dfont stretch= .585767E-01 dfont shrink= .390513E-01 dfont x_hei= .156204 dfont quad= .351461 dfont extra_space= .390513E-01 dfont paint="FILL" !------------------ end of main parameters dfont char=0 !-------------- Beginning of new char. dfont wid=.541669 hei=.694445 dep=0 italic=.133718 set path ! start of curve newpath ! start of curve amove .227473 .24114 aline .227473 .240164 aline .226496 .235283 aline .22552 .231378 aline .223567 .221615 aline .222591 .219662 aline .112272 .219662 bezier .953279E-01 .146392 .814207E-01 .722012E-01 .644343E-01 -.976277E-03 aline .341697E-01 -.976277E-03 bezier .510363E-01 .797451E-01 .677257E-01 .160783 .859124E-01 .24114 aline .227473 .24114 closepath ! end of curve fill dfont endchar dfont char=1 !-------------- Beginning of new char. dfont wid=.833336 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .214781 .242117 bezier .235799 .16106 .257561 .801136E-01 .278239 -.976277E-03 aline .156204E-01 -.976277E-03 bezier .714736E-01 .799072E-01 .127237 .160852 .182564 .242117 closepath ! end of curve ! start of curve amove .188421 .216734 bezier .149146 .152199 .104655 .914218E-01 .627258E-01 .288002E-01 aline .063458 .273358E-01 aline .236259 .273358E-01 bezier .230312 .538408E-01 .221849 .835843E-01 .214781 .111296 aline .200137 .169872 aline .199161 .174754 aline .196232 .186469 aline .195255 .19135 aline .194279 .195255 aline .19135 .2099 aline .19135 .214781 aline .190374 .215757 aline .189398 .218686 closepath ! end of curve fill dfont endchar dfont char=2 !-------------- Beginning of new char. dfont wid=.777781 hei=.694445 dep=0 italic=.0755463 set path ! start of curve newpath ! start of curve amove .200137 .249927 bezier .242035 .246992 .278371 .210246 .281168 .16792 bezier .292921 .901958E-01 .232377 .654494E-02 .153276 -.781022E-02 bezier .117472 -.139402E-01 .757525E-01 .561577E-03 .576004E-01 .341697E-01 bezier .205237E-01 .999241E-01 .583329E-01 .185273 .117153 .22552 bezier .141535 .242397 .170828 .25195 .200137 .249927 closepath ! end of curve ! start of curve amove .176706 .228449 bezier .109787 .218197 .688003E-01 .145027 .712682E-01 .820073E-01 bezier .742748E-01 .536786E-01 .904033E-01 .218882E-01 .121058 .146442E-01 bezier .163339 .245496E-02 .207989 .329642E-01 .230401 .683394E-01 bezier .25585 .111538 .267531 .168854 .23333 .2099 bezier .218254 .223839 .196623 .232708 .176706 .228449 closepath ! end of curve ! start of curve amove .23333 .134726 aline .232354 .129845 aline .231378 .124963 aline .230401 .121058 aline .228449 .111296 aline .227473 .10739 aline .226496 .106414 aline .927463E-01 .106414 aline .937226E-01 .110319 aline .956752E-01 .120082 aline .966514E-01 .123987 aline .098604 .13375 aline .995803E-01 .134726 closepath ! end of curve fill dfont endchar dfont char=3 !-------------- Beginning of new char. dfont wid=.611115 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .174754 .242117 bezier .184715 .16042 .194768 .080089 .205018 -.976277E-03 aline .172801 -.976277E-03 bezier .164407 .715426E-01 .15412 .143277 .150347 .21771 aline .14937 .214781 aline .148394 .212828 aline .147418 .2099 aline .145465 .205994 aline .144489 .203066 aline .135703 .185493 aline .134726 .182564 aline .13375 .180611 aline .132774 .179635 aline .117153 .148394 bezier .904383E-01 .983907E-01 .632503E-01 .487289E-01 .361223E-01 -.976277E-03 aline .010739 -.976277E-03 bezier .554308E-01 .799769E-01 .099778 .161176 .144489 .242117 closepath ! end of curve ! start of curve amove .150347 .21771 aline .151323 .216734 aline .152299 .21771 aline .151323 .218686 aline .150347 .21771 closepath ! end of curve fill dfont endchar dfont char=4 !-------------- Beginning of new char. dfont wid=.666669 hei=.694445 dep=0 italic=.128163 set path ! start of curve newpath ! start of curve amove .269453 .240164 aline .268476 .235283 aline .2675 .231378 aline .264571 .216734 aline .263595 .214781 aline .063458 .214781 aline .063458 .215757 aline .663868E-01 .230401 aline .673631E-01 .234307 aline .683394E-01 .239188 aline .693157E-01 .240164 closepath ! end of curve ! start of curve amove .224544 .136679 aline .224544 .134726 aline .222591 .124963 aline .221615 .121058 aline .219662 .111296 aline .644343E-01 .111296 aline .644343E-01 .115201 aline .654106E-01 .120082 aline .663868E-01 .123987 aline .683394E-01 .13375 aline .693157E-01 .136679 aline .224544 .136679 closepath ! end of curve ! start of curve amove .22552 .244069E-01 aline .224544 .195255E-01 aline .223567 .146442E-01 aline .222591 .010739 aline .220639 .976277E-03 aline .219662 -.976277E-03 aline .156204E-01 -.976277E-03 aline .156204E-01 0 aline .017573 .976277E-02 aline .185493E-01 .136679E-01 aline .205018E-01 .234307E-01 aline .214781E-01 .244069E-01 closepath ! end of curve fill dfont endchar dfont char=5 !-------------- Beginning of new char. dfont wid=.708338 hei=.694445 dep=0 italic=.0809383 set path ! start of curve newpath ! start of curve amove .2675 .24114 bezier .250524 .160443 .23383 .794056E-01 .215757 -.976277E-03 aline .185493 -.976277E-03 bezier .199914 .729526E-01 .218092 .146872 .231378 .220639 aline .112272 .220639 bezier .957199E-01 .146925 .813553E-01 .725466E-01 .644343E-01 -.976277E-03 aline .341697E-01 -.976277E-03 bezier .510363E-01 .797451E-01 .677257E-01 .160783 .859124E-01 .24114 aline .2675 .24114 closepath ! end of curve fill dfont endchar dfont char=6 !-------------- Beginning of new char. dfont wid=.722224 hei=.694445 dep=0 italic=.119829 set path ! start of curve newpath ! start of curve amove .286049 .242117 aline .286049 .240164 aline .285073 .235283 aline .284097 .231378 aline .282144 .221615 aline .281168 .220639 aline .10739 .220639 aline .106414 .219662 bezier .125595 .18676 .145416 .153756 .163038 .120082 bezier .133494 .880487E-01 .104757 .554346E-01 .751733E-01 .234307E-01 aline .761496E-01 .224544E-01 aline .239188 .224544E-01 aline .239188 .195255E-01 aline .238212 .146442E-01 aline .237235 .010739 aline .235283 .976277E-03 aline .234307 -.976277E-03 aline .205018E-01 -.976277E-03 bezier .056223 .379986E-01 .920967E-01 .768642E-01 .126672 .116665 bezier .106803 .151251 .868607E-01 .185786 .673631E-01 .220639 aline .693157E-01 .230401 aline .070292 .234307 aline .712682E-01 .239188 aline .722445E-01 .242117 aline .286049 .242117 closepath ! end of curve fill dfont endchar dfont char=7 !-------------- Beginning of new char. dfont wid=.777781 hei=.694445 dep=0 italic=.0903072 set path ! start of curve newpath ! start of curve amove .136679 .249927 bezier .16107 .247446 .172802 .221403 .173777 .200137 aline .173777 .173777 aline .174754 .172801 bezier .186142 .204506 .204241 .239471 .239188 .248951 bezier .261167 .254364 .288013 .243864 .294836 .220639 aline .295812 .216734 aline .295812 .211852 aline .296788 .210876 aline .296788 .200137 aline .295812 .199161 aline .295812 .194279 aline .269453 .194279 bezier .271006 .2072 .267317 .223177 .252856 .226496 bezier .233281 .231095 .213504 .21598 .204042 .199161 bezier .177604 .146314 .173767 .858991E-01 .159133 .292883E-01 aline .156204 .146442E-01 aline .155228 .010739 aline .153276 .976277E-03 aline .152299 -.976277E-03 aline .122035 -.976277E-03 bezier .132675 .546674E-01 .147208 .112477 .156204 .165967 aline .156204 .176706 aline .157181 .177682 bezier .157143 .194921 .155499 .218873 .135703 .22552 bezier .114878 .233544 .927116E-01 .215054 .888412E-01 .194279 aline .624817E-01 .194279 bezier .676325E-01 .222808 .093591 .245427 .122035 .249927 closepath ! end of curve fill dfont endchar dfont char=8 !-------------- Beginning of new char. dfont wid=.722224 hei=.694445 dep=0 italic=.0460253 set path ! start of curve newpath ! start of curve amove .192327 .242117 aline .192327 .240164 aline .19135 .235283 aline .190374 .231378 aline .187445 .216734 aline .186469 .212828 aline .185493 .207947 aline .18476 .206483 aline .185493 .205018 bezier .225623 .204322 .268192 .169604 .261642 .12594 bezier .252155 .739545E-01 .199045 .398995E-01 .14937 .361223E-01 aline .148394 .331934E-01 aline .147418 .292883E-01 aline .144489 .146442E-01 aline .143513 .010739 aline .14156 .976277E-03 aline .140584 -.976277E-03 aline .112272 -.976277E-03 aline .112272 0 aline .114224 .976277E-02 aline .115201 .136679E-01 aline .11813 .028312 aline .119106 .322171E-01 aline .119757 .341697E-01 aline .119372 .353235E-01 bezier .865378E-01 .393647E-01 .488751E-01 .612261E-01 .045885 .976277E-01 bezier .395831E-01 .134447 .682962E-01 .168574 .098604 .186469 aline .116177 .195255 aline .119106 .196232 aline .121058 .197208 aline .132774 .201113 aline .140584 .203066 aline .145465 .204042 aline .150347 .204042 aline .151323 .205018 aline .155662 .205886 aline .156204 .206971 aline .157181 .211852 aline .158157 .215757 aline .161086 .230401 aline .162062 .234307 aline .163038 .239188 aline .164015 .242117 aline .192327 .242117 closepath ! end of curve ! start of curve amove .148394 .18354 bezier .108266 .178612 .721339E-01 .143478 .741971E-01 .102509 bezier .768471E-01 .790898E-01 .980371E-01 .599399E-01 .122035 .576004E-01 aline .123499 .568681E-01 bezier .133599 .983848E-01 .142929 .141783 .150486 .183959 aline .149859 .184272 closepath ! end of curve ! start of curve amove .179635 .180611 bezier .171401 .139539 .16138 .983714E-01 .154057 .574051E-01 bezier .195897 .597822E-01 .235302 .968644E-01 .232354 .139608 bezier .229423 .159407 .213829 .177071 .193303 .181588 aline .185493 .18354 aline .182564 .184126 aline .180406 .183694 closepath ! end of curve fill dfont endchar dfont char=9 !-------------- Beginning of new char. dfont wid=.777781 hei=.694445 dep=0 italic=.0903072 set path ! start of curve newpath ! start of curve amove .202089 .242117 bezier .190253 .180807 .175705 .119369 .16377 .583326E-01 bezier .206831 .665673E-01 .226872 .112732 .23333 .152299 bezier .239552 .174379 .242254 .204543 .266524 .213805 aline .299717 .213805 aline .299717 .212828 aline .297765 .203066 aline .296788 .199161 aline .295812 .194279 aline .294836 .193303 bezier .271424 .189974 .265096 .163137 .260666 .143513 bezier .251156 .928534E-01 .215925 .435257E-01 .162062 .361223E-01 aline .158867 .353235E-01 aline .158157 .331934E-01 aline .157181 .292883E-01 aline .154252 .146442E-01 aline .153276 .010739 aline .151323 .976277E-03 aline .150347 -.976277E-03 aline .122035 -.976277E-03 aline .122035 0 aline .123987 .976277E-02 aline .124963 .136679E-01 aline .127892 .028312 aline .128869 .322171E-01 aline .129519 .341697E-01 aline .129113 .353901E-01 bezier .953023E-01 .389423E-01 .689978E-01 .704193E-01 .722445E-01 .104462 aline .712682E-01 .105438 bezier .723343E-01 .121841 .734226E-01 .138642 .781022E-01 .154252 bezier .789703E-01 .166853 .081814 .183154 .693157E-01 .19135 aline .663868E-01 .192327 aline .615055E-01 .193303 aline .624817E-01 .198184 aline .063458 .202089 aline .654106E-01 .211852 aline .663868E-01 .213805 aline .995803E-01 .213805 aline .103485 .211852 aline .108367 .206971 aline .109343 .205018 bezier .115187 .180821 .105755 .1567 .102509 .132774 bezier .969011E-01 .107455 .100055 .709166E-01 .128869 .595529E-01 aline .131797 .585766E-01 aline .133262 .578444E-01 bezier .148659 .11824 .159316 .181037 .173777 .242117 aline .202089 .242117 closepath ! end of curve fill dfont endchar dfont char=10 !-------------- Beginning of new char. dfont wid=.722224 hei=.694445 dep=0 italic=.0829268 set path ! start of curve newpath ! start of curve amove .19135 .249927 bezier .227187 .248056 .265678 .223955 .270429 .185493 bezier .274145 .134879 .233823 .974546E-01 .205994 .605292E-01 bezier .197496 .488805E-01 .189416 .369301E-01 .182808 .239188E-01 aline .18354 .224544E-01 aline .243093 .224544E-01 aline .243093 .195255E-01 aline .242117 .146442E-01 aline .24114 .010739 aline .239188 .976277E-03 aline .238212 -.976277E-03 aline .153276 -.976277E-03 bezier .168321 .624697E-01 .228359 .103684 .240164 .16792 bezier .243546 .196067 .222128 .223689 .193303 .227473 bezier .148181 .237516 .922974E-01 .206364 .849361E-01 .157181 bezier .762525E-01 .117158 .098926 .760352E-01 .103485 .361223E-01 aline .103485 .781022E-02 aline .102509 .683394E-02 aline .102509 .976277E-03 aline .101533 -.976277E-03 aline .165967E-01 -.976277E-03 aline .165967E-01 0 aline .185493E-01 .976277E-02 aline .195255E-01 .136679E-01 aline .205018E-01 .185493E-01 aline .214781E-01 .224544E-01 aline .820073E-01 .224544E-01 aline .829836E-01 .234307E-01 bezier .790877E-01 .709224E-01 .421695E-01 .116268 .556478E-01 .164991 bezier .727426E-01 .221474 .135222 .254102 .19135 .249927 closepath ! end of curve fill dfont endchar dfont char=11 !-------------- Beginning of new char. dfont wid=.583336 hei=.694445 dep=0 italic=.217052 dfont fby=33 kadd=.0694447 dfont fby=39 kadd=.0694447 dfont fby=")" kadd=.0694447 dfont fby="?" kadd=.0694447 dfont fby="]" kadd=.0694447 dfont fby="i" ligrep=14 dfont fby="l" ligrep=15 set path ! start of curve newpath ! start of curve amove .156204 .246022 aline .157181 .245046 aline .163038 .245046 aline .16792 .244069 aline .171825 .243093 aline .173777 .242117 aline .173777 .240164 aline .172801 .235283 aline .171825 .231378 aline .169872 .221615 aline .168896 .219662 bezier .14866 .229694 .118853 .227816 .106414 .205994 aline .105438 .203066 aline .104462 .199161 aline .102509 .189398 aline .101533 .185493 aline .098604 .170849 aline .976277E-01 .166943 aline .956752E-01 .157181 aline .094943 .155716 aline .956752E-01 .154252 aline .134726 .154252 aline .134726 .153276 aline .131797 .138631 aline .130821 .134726 aline .917701E-01 .134726 bezier .819322E-01 .895303E-01 .731351E-01 .043928 .624817E-01 -.976277E-03 aline .370985E-01 -.976277E-03 bezier .452607E-01 .443367E-01 .578479E-01 .894571E-01 .644343E-01 .134726 aline .390511E-01 .134726 aline .390511E-01 .137655 aline .419799E-01 .152299 aline .429562E-01 .154252 aline .693157E-01 .154252 bezier .075596 .176498 .766181E-01 .20178 .927463E-01 .219662 bezier .108219 .238025 .131874 .248979 .156204 .246022 closepath ! end of curve ! start of curve amove .253832 .246022 aline .254808 .245046 aline .260666 .245046 aline .265547 .244069 aline .269453 .243093 aline .271405 .242117 aline .271405 .240164 aline .270429 .235283 aline .269453 .231378 aline .2675 .221615 aline .266524 .219662 bezier .246945 .228632 .221476 .228287 .205994 .210876 aline .202089 .203066 aline .201113 .199161 aline .199161 .189398 aline .198184 .185493 aline .195255 .170849 aline .194279 .166943 aline .192327 .157181 aline .191594 .155716 aline .192327 .154252 aline .231378 .154252 aline .231378 .153276 aline .228449 .138631 aline .227473 .134726 aline .188421 .134726 bezier .178585 .08953 .169786 .439283E-01 .159133 -.976277E-03 aline .13375 -.976277E-03 bezier .14778 .654176E-01 .160802 .132221 .176706 .198184 bezier .188856 .228584 .220899 .250219 .253832 .246022 closepath ! end of curve fill dfont endchar dfont char=12 !-------------- Beginning of new char. dfont wid=.536113 hei=.694445 dep=0 italic=.0976076 set path ! start of curve newpath ! start of curve amove .142536 .246022 aline .147418 .245046 aline .153276 .243093 aline .155228 .242117 aline .155228 .240164 aline .154252 .235283 aline .153276 .231378 aline .151323 .221615 aline .150347 .218686 bezier .136031 .232003 .111961 .224527 .106414 .205994 aline .105438 .203066 aline .104462 .199161 aline .102509 .189398 aline .101533 .185493 aline .098604 .170849 aline .976277E-01 .166943 aline .956752E-01 .157181 aline .094943 .155716 aline .956752E-01 .154252 aline .136679 .154252 aline .136679 .153276 aline .13375 .138631 aline .132774 .134726 aline .917701E-01 .134726 bezier .819322E-01 .895303E-01 .731351E-01 .043928 .624817E-01 -.976277E-03 aline .370985E-01 -.976277E-03 bezier .452607E-01 .443367E-01 .578479E-01 .894571E-01 .644343E-01 .134726 aline .390511E-01 .134726 aline .390511E-01 .137655 aline .419799E-01 .152299 aline .429562E-01 .154252 aline .693157E-01 .154252 bezier .759032E-01 .178192 .773819E-01 .205327 .946989E-01 .224544 aline .104462 .234307 aline .106414 .235283 aline .108367 .237235 aline .110319 .238212 aline .111296 .239188 aline .119106 .243093 aline .124963 .245046 aline .128869 .246022 closepath ! end of curve ! start of curve amove .211852 .243093 aline .211852 .240164 aline .210876 .235283 aline .2099 .231378 aline .206971 .216734 aline .205994 .214781 aline .177682 .214781 aline .177682 .215757 aline .180611 .230401 aline .181588 .234307 aline .182564 .239188 aline .18354 .243093 aline .211852 .243093 closepath ! end of curve ! start of curve amove .192327 .154252 bezier .181685 .102484 .170994 .504499E-01 .159133 -.976277E-03 aline .13375 -.976277E-03 bezier .144401 .05079 .155095 .102823 .166943 .154252 aline .192327 .154252 closepath ! end of curve fill dfont endchar dfont char=13 !-------------- Beginning of new char. dfont wid=.536113 hei=.694445 dep=0 italic=.0948286 set path ! start of curve newpath ! start of curve amove .142536 .246022 aline .147418 .245046 aline .153276 .243093 aline .155228 .242117 aline .155228 .240164 aline .154252 .235283 aline .153276 .231378 aline .151323 .221615 aline .150347 .219662 bezier .137419 .22859 .119302 .227215 .110319 .213805 aline .106414 .205994 aline .105438 .203066 aline .104462 .199161 aline .102509 .189398 aline .101533 .185493 aline .098604 .170849 aline .976277E-01 .166943 aline .956752E-01 .157181 aline .094943 .155716 aline .956752E-01 .154252 aline .136679 .154252 aline .136679 .153276 aline .13375 .138631 aline .132774 .134726 aline .917701E-01 .134726 bezier .819322E-01 .895303E-01 .731351E-01 .043928 .624817E-01 -.976277E-03 aline .370985E-01 -.976277E-03 bezier .452607E-01 .443367E-01 .578479E-01 .894571E-01 .644343E-01 .134726 aline .390511E-01 .134726 aline .390511E-01 .137655 aline .419799E-01 .152299 aline .429562E-01 .154252 aline .693157E-01 .154252 bezier .759032E-01 .178192 .773819E-01 .205327 .946989E-01 .224544 aline .104462 .234307 aline .106414 .235283 aline .108367 .237235 aline .110319 .238212 aline .111296 .239188 aline .119106 .243093 aline .124963 .245046 aline .128869 .246022 closepath ! end of curve ! start of curve amove .210876 .242117 bezier .194304 .161052 .17714 .797387E-01 .159133 -.976277E-03 aline .13375 -.976277E-03 bezier .150556 .801008E-01 .16768 .161251 .185493 .242117 aline .210876 .242117 closepath ! end of curve fill dfont endchar dfont char=14 !-------------- Beginning of new char. dfont wid=.813891 hei=.694445 dep=0 italic=.0976076 set path ! start of curve newpath ! start of curve amove .14937 .246022 aline .150347 .245046 aline .155228 .245046 aline .159133 .244069 aline .162062 .243093 aline .164015 .242117 aline .164015 .240164 aline .163038 .235283 aline .162062 .231378 aline .160109 .221615 aline .159133 .219662 bezier .141363 .231059 .112263 .225802 .105438 .203066 aline .104462 .199161 aline .102509 .189398 aline .101533 .185493 aline .098604 .170849 aline .976277E-01 .166943 aline .956752E-01 .157181 aline .094943 .155716 aline .956752E-01 .154252 aline .136679 .154252 aline .136679 .153276 aline .13375 .138631 aline .132774 .134726 aline .917701E-01 .134726 bezier .819322E-01 .895303E-01 .731351E-01 .043928 .624817E-01 -.976277E-03 aline .370985E-01 -.976277E-03 bezier .452607E-01 .443367E-01 .578479E-01 .894571E-01 .644343E-01 .134726 aline .390511E-01 .134726 aline .390511E-01 .137655 aline .419799E-01 .152299 aline .429562E-01 .154252 aline .693157E-01 .154252 bezier .756027E-01 .176309 .766774E-01 .201243 .917701E-01 .219662 bezier .105807 .23679 .126428 .249378 .14937 .246022 closepath ! end of curve ! start of curve amove .240164 .246022 aline .245046 .245046 aline .248951 .244069 aline .25188 .243093 aline .252856 .242117 aline .252856 .240164 aline .25188 .235283 aline .250903 .231378 aline .248951 .221615 aline .247974 .219662 bezier .236325 .227521 .218698 .228162 .2099 .215757 bezier .19765 .198498 .199331 .175274 .192571 .155716 aline .193303 .154252 aline .234307 .154252 aline .234307 .153276 aline .231378 .138631 aline .230401 .134726 aline .189398 .134726 bezier .179559 .895305E-01 .170764 .439274E-01 .160109 -.976277E-03 aline .134726 -.976277E-03 bezier .148757 .654056E-01 .161789 .132289 .177682 .198184 bezier .185317 .220373 .202738 .240839 .226496 .246022 closepath ! end of curve ! start of curve amove .30948 .243093 aline .30948 .240164 aline .308504 .235283 aline .307527 .231378 aline .304598 .216734 aline .303622 .214781 aline .27531 .214781 aline .27531 .215757 aline .278239 .230401 aline .279215 .234307 aline .280192 .239188 aline .281168 .243093 aline .30948 .243093 closepath ! end of curve ! start of curve amove .289954 .154252 bezier .279314 .102484 .268622 .05045 .256761 -.976277E-03 aline .231378 -.976277E-03 bezier .242027 .05079 .252722 .102823 .264571 .154252 aline .289954 .154252 closepath ! end of curve fill dfont endchar dfont char=15 !-------------- Beginning of new char. dfont wid=.813891 hei=.694445 dep=0 italic=.0948286 set path ! start of curve newpath ! start of curve amove .14937 .246022 aline .150347 .245046 aline .155228 .245046 aline .159133 .244069 aline .162062 .243093 aline .164015 .242117 aline .164015 .240164 aline .163038 .235283 aline .162062 .231378 aline .160109 .221615 aline .159133 .219662 bezier .141363 .231059 .112263 .225802 .105438 .203066 aline .104462 .199161 aline .102509 .189398 aline .101533 .185493 aline .098604 .170849 aline .976277E-01 .166943 aline .956752E-01 .157181 aline .094943 .155716 aline .956752E-01 .154252 aline .136679 .154252 aline .136679 .153276 aline .13375 .138631 aline .132774 .134726 aline .917701E-01 .134726 bezier .819322E-01 .895303E-01 .731351E-01 .043928 .624817E-01 -.976277E-03 aline .370985E-01 -.976277E-03 bezier .452607E-01 .443367E-01 .578479E-01 .894571E-01 .644343E-01 .134726 aline .390511E-01 .134726 aline .390511E-01 .137655 aline .419799E-01 .152299 aline .429562E-01 .154252 aline .693157E-01 .154252 bezier .756027E-01 .176309 .766774E-01 .201243 .917701E-01 .219662 bezier .105807 .23679 .126428 .249378 .14937 .246022 closepath ! end of curve ! start of curve amove .240164 .246022 aline .245046 .245046 aline .250903 .243093 aline .252856 .242117 aline .252856 .240164 aline .25188 .235283 aline .250903 .231378 aline .248951 .221615 aline .247974 .219662 bezier .235047 .22859 .216929 .227215 .207947 .213805 aline .204042 .205994 aline .203066 .203066 aline .202089 .199161 aline .200137 .189398 aline .199161 .185493 aline .196232 .170849 aline .195255 .166943 aline .193303 .157181 aline .192571 .155716 aline .193303 .154252 aline .234307 .154252 aline .234307 .153276 aline .231378 .138631 aline .230401 .134726 aline .189398 .134726 bezier .179559 .895305E-01 .170764 .439274E-01 .160109 -.976277E-03 aline .134726 -.976277E-03 bezier .148757 .654056E-01 .161789 .132289 .177682 .198184 bezier .185317 .220373 .202738 .240839 .226496 .246022 closepath ! end of curve ! start of curve amove .308504 .242117 bezier .291931 .161052 .274769 .797386E-01 .256761 -.976277E-03 aline .231378 -.976277E-03 bezier .248182 .080101 .26531 .161251 .28312 .242117 aline .308504 .242117 closepath ! end of curve fill dfont endchar dfont char=16 !-------------- Beginning of new char. dfont wid=.23889 hei=.444445 dep=0 italic=.0416899 set path ! start of curve newpath ! start of curve amove .888412E-01 .154252 bezier .782003E-01 .102484 .675088E-01 .504498E-01 .556478E-01 -.976277E-03 aline .302646E-01 -.976277E-03 bezier .040915 .507899E-01 .516092E-01 .102823 .063458 .154252 aline .888412E-01 .154252 closepath ! end of curve fill dfont endchar dfont char=17 !-------------- Beginning of new char. dfont wid=.266668 hei=.444445 dep=.194445 italic=.0416899 set path ! start of curve newpath ! start of curve amove .098604 .154252 bezier .852039E-01 .911214E-01 .730855E-01 .274808E-01 .576004E-01 -.035146 bezier .479286E-01 -.576117E-01 .236046E-01 -.785729E-01 -.195255E-02 -.722445E-01 bezier -.129421E-01 -.722137E-01 -.260018E-01 -.682549E-01 -.331934E-01 -.605292E-01 aline -.322171E-01 -.595529E-01 aline -.028312 -.517427E-01 aline -.273358E-01 -.507664E-01 aline -.234307E-01 -.429562E-01 aline -.214781E-01 -.410036E-01 bezier -.639956E-02 -.599199E-01 .299042E-01 -.522561E-01 .341697E-01 -.273358E-01 bezier .472737E-01 .331524E-01 .593324E-01 .940481E-01 .732208E-01 .154252 aline .098604 .154252 closepath ! end of curve fill dfont endchar dfont char=18 !-------------- Beginning of new char. dfont wid=.500002 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .108367 .242117 bezier .119869 .223067 .132092 .203976 .142536 .184516 aline .122035 .184516 bezier .109185 .204071 .950907E-01 .222732 .820073E-01 .242117 aline .108367 .242117 closepath ! end of curve fill dfont endchar dfont char=19 !-------------- Beginning of new char. dfont wid=.500002 hei=.694445 dep=0 italic=.0920515 set path ! start of curve newpath ! start of curve amove .198184 .242117 bezier .176868 .222692 .154838 .204258 .13375 .184516 aline .112272 .184516 aline .114224 .185493 aline .151323 .222591 aline .153276 .223567 aline .171825 .242117 aline .198184 .242117 closepath ! end of curve fill dfont endchar dfont char=20 !-------------- Beginning of new char. dfont wid=.500002 hei=.631945 dep=0 italic=.0843229 set path ! start of curve newpath ! start of curve amove .976277E-01 .227473 bezier .107919 .213656 .117354 .198684 .12838 .185737 bezier .144796 .199222 .160335 .213926 .176706 .227473 aline .197208 .227473 bezier .176736 .208558 .155829 .190245 .135703 .170849 aline .115201 .170849 bezier .101892 .189278 .897012E-01 .208515 .771259E-01 .227473 aline .976277E-01 .227473 closepath ! end of curve fill dfont endchar dfont char=21 !-------------- Beginning of new char. dfont wid=.500002 hei=.694445 dep=0 italic=.0948286 set path ! start of curve newpath ! start of curve amove .101533 .242117 bezier .974487E-01 .226368 .107945 .205653 .12594 .204042 bezier .14918 .199566 .173219 .219184 .178659 .242117 aline .199161 .242117 bezier .191202 .200396 .141005 .165116 .100557 .187445 bezier .825227E-01 .198883 .765677E-01 .222071 .081031 .242117 aline .101533 .242117 closepath ! end of curve fill dfont endchar dfont char=22 !-------------- Beginning of new char. dfont wid=.500002 hei=.608887 dep=0 italic=.0877552 set path ! start of curve newpath ! start of curve amove .198184 .219662 aline .198184 .216734 aline .197208 .212828 aline .195255 .203066 aline .194279 .199161 aline .193303 .198184 aline .673631E-01 .198184 aline .683394E-01 .202089 aline .070292 .211852 aline .722445E-01 .219662 aline .198184 .219662 closepath ! end of curve fill dfont endchar dfont char=23 !-------------- Beginning of new char. dfont wid=.737521 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .189398 .242117 bezier .20508 .240955 .221069 .226449 .214781 .2099 bezier .202448 .184158 .163445 .175608 .14156 .194279 bezier .128222 .207876 .140102 .228057 .154252 .235283 aline .160109 .238212 aline .165967 .240164 aline .169872 .24114 aline .174754 .242117 closepath ! end of curve ! start of curve amove .171825 .226496 bezier .159296 .226694 .149133 .207616 .162062 .201113 bezier .17549 .195017 .198585 .201673 .196232 .219662 aline .195255 .220639 aline .194279 .222591 aline .193303 .223567 aline .189398 .22552 aline .186469 .226496 aline .185493 .227473 aline .172801 .227473 closepath ! end of curve fill dfont endchar dfont char=24 !-------------- Beginning of new char. dfont wid=.444446 hei=0 dep=.170138 italic=0 set path ! start of curve newpath ! start of curve amove .966514E-01 -.117153E-01 bezier .849206E-01 -.305788E-01 .733427E-01 -.495526E-01 .615055E-01 -.683394E-01 aline .380748E-01 -.683394E-01 bezier .506503E-01 -.049381 .628411E-01 -.301454E-01 .761496E-01 -.117153E-01 closepath ! end of curve fill dfont endchar dfont char=25 !-------------- Beginning of new char. dfont wid=.480558 hei=.694445 dep=0 italic=.0920515 set path ! start of curve newpath ! start of curve amove .150347 .246022 bezier .17229 .24431 .197456 .223024 .19135 .199161 bezier .189553 .173638 .16772 .155267 .147662 .143025 bezier .16275 .130495 .173257 .111298 .174754 .917701E-01 bezier .179475 .049988 .152268 .58818E-02 .110319 -.390511E-02 aline .105438 -.390511E-02 aline .104462 -.488139E-02 aline .888412E-01 -.488139E-02 aline .878649E-01 -.390511E-02 aline .829836E-01 -.390511E-02 aline .781022E-01 -.292883E-02 aline .693157E-01 0 aline .683394E-01 .976277E-03 aline .683394E-01 .195255E-02 aline .712682E-01 .781022E-02 aline .722445E-01 .878649E-02 aline .751733E-01 .146442E-01 aline .761496E-01 .156204E-01 aline .781022E-01 .195255E-01 aline .790785E-01 .205018E-01 bezier .093965 .142173E-01 .110559 .133497E-01 .123987 .234307E-01 bezier .149339 .461644E-01 .155719 .859193E-01 .139608 .115201 aline .137655 .117153 aline .136679 .119106 aline .130821 .124963 aline .128869 .12594 aline .127892 .126916 aline .120082 .130821 aline .112272 .132774 aline .111296 .13375 aline .104462 .13375 aline .105438 .137655 aline .108367 .152299 aline .109343 .154252 bezier .137732 .153497 .16939 .178123 .164991 .208923 bezier .157733 .226569 .135552 .22895 .120082 .221615 bezier .939676E-01 .211865 .962669E-01 .179805 .898175E-01 .157181 bezier .781623E-01 .104543 .679511E-01 .514079E-01 .556478E-01 -.976277E-03 aline .302646E-01 -.976277E-03 bezier .446052E-01 .670481E-01 .580784E-01 .135452 .741971E-01 .203066 bezier .866508E-01 .232242 .119493 .248993 .150347 .246022 closepath ! end of curve fill dfont endchar dfont char=26 !-------------- Beginning of new char. dfont wid=.722224 hei=.444445 dep=0 italic=.0677776 set path ! start of curve newpath ! start of curve amove .124963 .160109 bezier .140375 .158436 .155217 .147737 .161086 .132774 bezier .182225 .154246 .217726 .169966 .246022 .153276 bezier .267793 .137626 .26667 .106187 .261642 .839598E-01 aline .261642 .790785E-01 aline .260666 .761496E-01 aline .158157 .761496E-01 bezier .150406 .536707E-01 .16167 .206415E-01 .188421 .165967E-01 bezier .208885 .128426E-01 .231032 .228641E-01 .247974 .035146 aline .247974 .322171E-01 aline .246998 .312409E-01 aline .246998 .234307E-01 aline .246022 .224544E-01 aline .246022 .156204E-01 bezier .228536 -.192173E-02 .200206 -.733598E-02 .176706 -.390511E-02 bezier .1614 -.647245E-03 .147988 .887429E-02 .139119 .021234 bezier .115103 -.180916E-02 .08012 -.537814E-02 .488139E-01 -.488139E-02 bezier .232326E-01 -.398551E-03 .188483E-01 .344416E-01 .322171E-01 .052719 bezier .524255E-01 .770245E-01 .871198E-01 .816605E-01 .115201 .849361E-01 aline .131797 .849361E-01 bezier .137018 .10219 .142323 .121506 .127892 .135703 bezier .112476 .144989 .953217E-01 .138311 .790785E-01 .13375 aline .771259E-01 .132774 aline .741971E-01 .131797 aline .644343E-01 .126916 aline .063458 .12594 aline .595529E-01 .123987 aline .585766E-01 .123011 aline .566241E-01 .122035 aline .566241E-01 .12594 aline .576004E-01 .126916 aline .576004E-01 .13375 aline .585766E-01 .134726 aline .585766E-01 .14156 aline .595529E-01 .144489 bezier .794292E-01 .156935 .102209 .161029 .124963 .160109 closepath ! end of curve ! start of curve amove .2099 .138631 bezier .187956 .134206 .169737 .113891 .164015 .946989E-01 aline .244069 .946989E-01 aline .245046 .956752E-01 aline .245046 .111296 aline .244069 .112272 aline .243093 .117153 aline .242117 .121058 aline .238212 .128869 aline .232354 .134726 aline .228449 .136679 aline .222591 .138631 aline .221615 .139608 aline .210876 .139608 closepath ! end of curve ! start of curve amove .111296 .654106E-01 aline .103485 .654106E-01 bezier .867769E-01 .609541E-01 .617886E-01 .600598E-01 .517427E-01 .419799E-01 bezier .465821E-01 .293669E-01 .577073E-01 .174545E-01 .070292 .165967E-01 bezier .867676E-01 .135685E-01 .105601 .182707E-01 .119106 .292883E-01 bezier .126275 .407593E-01 .128118 .053444 .127892 .663868E-01 aline .112272 .663868E-01 aline .111296 .654106E-01 closepath ! end of curve fill dfont endchar dfont char=27 !-------------- Beginning of new char. dfont wid=.777781 hei=.444445 dep=0 italic=.0677776 set path ! start of curve newpath ! start of curve amove .126916 .160109 bezier .14701 .158076 .165921 .144027 .173777 .124963 bezier .194372 .151114 .233844 .171437 .265547 .153276 bezier .287318 .137626 .286195 .106188 .281168 .839598E-01 aline .281168 .790785E-01 aline .280192 .761496E-01 aline .177682 .761496E-01 bezier .169933 .536693E-01 .181195 .206411E-01 .207947 .165967E-01 bezier .22841 .128424E-01 .250558 .228648E-01 .2675 .035146 aline .2675 .322171E-01 aline .266524 .312409E-01 aline .266524 .234307E-01 aline .265547 .224544E-01 aline .265547 .156204E-01 bezier .248061 -.192195E-02 .219732 -.733573E-02 .196232 -.390511E-02 bezier .177411 -.837E-04 .161984 .133796E-01 .153764 .300205E-01 bezier .129305 .791421E-03 .824833E-01 -.186567E-01 .488139E-01 .683394E-02 bezier .013675 .369261E-01 .237602E-01 .918935E-01 .507664E-01 .123987 bezier .697167E-01 .146176 .971287E-01 .162945 .126916 .160109 closepath ! end of curve ! start of curve amove .108367 .138631 bezier .666372E-01 .132853 .457181E-01 .828216E-01 .052719 .468613E-01 bezier .550311E-01 .316256E-01 .663987E-01 .018641 .820073E-01 .165967E-01 bezier .108387 .118923E-01 .134341 .333568E-01 .143513 .576004E-01 bezier .153826 .812493E-01 .159636 .110184 .140584 .130821 aline .138631 .131797 aline .137655 .132774 aline .135703 .13375 aline .134726 .134726 aline .132774 .135703 aline .126916 .137655 aline .122035 .138631 aline .121058 .139608 aline .109343 .139608 closepath ! end of curve ! start of curve amove .229425 .138631 bezier .207481 .134204 .189264 .113893 .18354 .946989E-01 aline .263595 .946989E-01 aline .264571 .956752E-01 aline .264571 .111296 aline .263595 .112272 aline .262619 .117153 aline .261642 .121058 aline .257737 .128869 aline .25188 .134726 aline .247974 .136679 aline .242117 .138631 aline .24114 .139608 aline .230401 .139608 closepath ! end of curve fill dfont endchar dfont char=28 !-------------- Beginning of new char. dfont wid=.500002 hei=.541667 dep=.0972233 italic=.0484667 set path ! start of curve newpath ! start of curve amove .184516 .193303 bezier .189134 .189533 .196068 .187349 .199161 .182564 bezier .188133 .168999 .177354 .155257 .167187 .141072 bezier .20087 .098222 .175631 .334165E-01 .131797 .781022E-02 bezier .109758 -.533379E-02 .832513E-01 -.934948E-02 .595529E-01 .650856E-03 bezier .469965E-01 -.109461E-01 .380613E-01 -.270722E-01 .263595E-01 -.400274E-01 bezier .021108 -.372592E-01 .141852E-01 -.339385E-01 .010739 -.292883E-01 bezier .223436E-01 -.156843E-01 .322917E-01 -.886323E-03 .439325E-01 .126916E-01 bezier .117273E-01 .047963 .297778E-01 .105213 .624817E-01 .13375 bezier .849869E-01 .156744 .121595 .168374 .151323 .153601 bezier .163717 .164832 .172088 .182161 .184516 .193303 closepath ! end of curve ! start of curve amove .111296 .138631 bezier .708189E-01 .131964 .504946E-01 .867713E-01 .052719 .497901E-01 aline .536952E-01 .488139E-01 aline .546715E-01 .439325E-01 aline .556478E-01 .400274E-01 aline .585766E-01 .341697E-01 aline .595529E-01 .331934E-01 bezier .849003E-01 .672932E-01 .113072 .10067 .137069 .134922 aline .134726 .135703 aline .132774 .136679 aline .129845 .137655 aline .124963 .138631 aline .123987 .139608 aline .112272 .139608 closepath ! end of curve ! start of curve amove .14937 .119106 bezier .124412 .859305E-01 .988342E-01 .532044E-01 .732208E-01 .205018E-01 bezier .103713 .50439E-02 .140291 .030352 .150347 .605292E-01 bezier .15673 .797899E-01 .16187 .101544 .150835 .119838 aline .14937 .119106 closepath ! end of curve fill dfont endchar dfont char=29 !-------------- Beginning of new char. dfont wid=.861115 hei=.694445 dep=0 italic=.119829 set path ! start of curve newpath ! start of curve amove .334863 .242117 aline .334863 .240164 aline .333887 .235283 aline .332911 .231378 aline .330958 .221615 aline .329982 .220639 aline .226496 .220639 bezier .220429 .192514 .213302 .163498 .208923 .135703 aline .302646 .135703 aline .302646 .134726 aline .300693 .124963 aline .299717 .121058 aline .298741 .116177 aline .297765 .115201 aline .204042 .115201 bezier .197356 .846126E-01 .18995 .518652E-01 .184516 .224544E-01 aline .230401 .224544E-01 aline .231378 .234307E-01 aline .292883 .234307E-01 aline .292883 .195255E-01 aline .291907 .146442E-01 aline .290931 .010739 aline .288978 .976277E-03 aline .288002 -.976277E-03 aline .148394 -.976277E-03 bezier .152847 .250399E-01 .160357 .516002E-01 .164015 .771259E-01 aline .859124E-01 .771259E-01 bezier .682709E-01 .518448E-01 .535747E-01 .244411E-01 .361223E-01 -.976277E-03 aline .010739 -.976277E-03 bezier .613145E-01 .079958 .111766 .160982 .162062 .242117 aline .334863 .242117 closepath ! end of curve ! start of curve amove .173777 .219662 bezier .148763 .178614 .122932 .138155 .978718E-01 .971396E-01 aline .098604 .956752E-01 aline .16792 .956752E-01 bezier .178307 .135765 .185308 .177563 .194889 .218198 aline .194279 .220639 aline .174754 .220639 aline .173777 .219662 closepath ! end of curve fill dfont endchar dfont char=30 !-------------- Beginning of new char. dfont wid=.972226 hei=.694445 dep=0 italic=.119829 set path ! start of curve newpath ! start of curve amove .188421 .249927 aline .189398 .248951 aline .195255 .248951 aline .205018 .246998 aline .212828 .245046 aline .213805 .244069 aline .218686 .244069 aline .219662 .243093 aline .224544 .243093 aline .22552 .242117 aline .373914 .242117 aline .373914 .240164 aline .372938 .235283 aline .371962 .231378 aline .370009 .221615 aline .369033 .220639 aline .244069 .220639 bezier .238002 .192514 .230875 .163498 .226496 .135703 aline .341697 .135703 aline .341697 .134726 aline .339744 .124963 aline .338768 .121058 aline .337792 .116177 aline .336816 .115201 aline .221615 .115201 bezier .214929 .846126E-01 .207523 .518652E-01 .202089 .224544E-01 aline .25969 .224544E-01 aline .260666 .234307E-01 aline .331934 .234307E-01 aline .331934 .195255E-01 aline .330958 .146442E-01 aline .329982 .010739 aline .328029 .976277E-03 aline .327053 -.976277E-03 aline .173777 -.976277E-03 bezier .146757 -.697659E-02 .116653 -.143321E-01 .888412E-01 -.195255E-02 bezier .490671E-01 .139936E-01 .282056E-01 .606878E-01 .341697E-01 .100557 bezier .384292E-01 .168773 .910705E-01 .232054 .158157 .247974 aline .163038 .247974 aline .164015 .248951 aline .169872 .248951 aline .170849 .249927 aline .188421 .249927 closepath ! end of curve ! start of curve amove .166943 .228449 bezier .953953E-01 .217052 .502121E-01 .132931 .673631E-01 .663868E-01 bezier .733055E-01 .390381E-01 .955867E-01 .155058E-01 .123011 .117153E-01 bezier .138879 .110263E-01 .156888 .123379E-01 .166943 .263595E-01 bezier .184236 .06097 .186437 .100626 .196232 .137655 bezier .199924 .163344 .210686 .187913 .206971 .212828 aline .205994 .216734 aline .204042 .220639 aline .200137 .224544 aline .198184 .22552 aline .192327 .227473 aline .19135 .228449 aline .186469 .228449 aline .185493 .229425 aline .16792 .229425 aline .166943 .228449 closepath ! end of curve fill dfont endchar dfont char=31 !-------------- Beginning of new char. dfont wid=.777781 hei=.743055 dep=.0486116 italic=.0755463 set path ! start of curve newpath ! start of curve amove .266524 .264571 bezier .27104 .26066 .277718 .258119 .281168 .253832 bezier .272867 .243759 .264639 .233633 .257005 .223079 bezier .276005 .20082 .285927 .169652 .282144 .14156 bezier .278975 .710767E-01 .223364 .543736E-02 .153276 -.781022E-02 bezier .130343 -.104073E-01 .104598 -.872761E-02 .849361E-01 .585766E-02 bezier .774488E-01 -.446325E-02 .689429E-01 -.140501E-01 .615055E-01 -.244069E-01 bezier .559203E-01 -.209007E-01 .505491E-01 -.170977E-01 .449088E-01 -.136679E-01 bezier .523657E-01 -.26611E-02 .617731E-01 .694007E-02 .690716E-01 .180611E-01 bezier .238452E-01 .698035E-01 .422839E-01 .150019 .859124E-01 .197208 bezier .121913 .240864 .190011 .268714 .24114 .235283 bezier .249007 .245005 .256266 .255165 .264571 .264571 aline .266524 .264571 aline .2675 .263595 closepath ! end of curve ! start of curve amove .176706 .228449 bezier .121751 .221039 .843349E-01 .168546 .751733E-01 .116177 bezier .691468E-01 .912448E-01 .713081E-01 .621302E-01 .859124E-01 .390511E-01 bezier .132536 .097996 .17976 .156502 .225276 .216245 bezier .211834 .226847 .193139 .231788 .176706 .228449 closepath ! end of curve ! start of curve amove .238212 .200137 bezier .19296 .141325 .145713 .839522E-01 .100801 .248951E-01 bezier .132966 -.664679E-03 .178811 .147137E-01 .206971 .400274E-01 bezier .241034 .729608E-01 .257839 .123168 .252856 .168896 bezier .249052 .179339 .247513 .192278 .239676 .200869 aline .238212 .200137 closepath ! end of curve fill dfont endchar dfont char=32 !-------------- Beginning of new char. dfont wid=.23889 hei=.444445 dep=0 italic=0 dfont fby="L" kadd=-.258336 dfont fby="l" kadd=-.23889 set path ! start of curve newpath ! start of curve amove .109343 .137655 aline .110319 .134726 aline .110319 .127892 aline .111296 .126916 aline .111296 .119106 bezier .829018E-01 .109769 .540635E-01 .101074 .253832E-01 .927463E-01 aline .244069E-01 .937226E-01 aline .244069E-01 .100557 aline .234307E-01 .101533 aline .234307E-01 .109343 aline .224544E-01 .110319 bezier .492202E-01 .120838 .799791E-01 .128517 .108367 .137655 closepath ! end of curve fill dfont endchar dfont char=33 !-------------- Beginning of new char. dfont wid=.319446 hei=.694445 dep=0 italic=.0573292 set path ! start of curve newpath ! start of curve amove .123011 .242117 bezier .110134 .181832 .957021E-01 .121687 .820073E-01 .615055E-01 aline .595529E-01 .615055E-01 aline .595529E-01 .654106E-01 aline .693157E-01 .114224 aline .070292 .115201 aline .070292 .120082 aline .800547E-01 .168896 aline .081031 .169872 aline .081031 .174754 aline .898175E-01 .218686 aline .907938E-01 .219662 aline .907938E-01 .224544 aline .937226E-01 .239188 aline .946989E-01 .242117 aline .123011 .242117 closepath ! end of curve ! start of curve amove .771259E-01 .273358E-01 aline .771259E-01 .244069E-01 aline .751733E-01 .146442E-01 aline .741971E-01 .010739 aline .722445E-01 .976277E-03 aline .712682E-01 -.976277E-03 aline .429562E-01 -.976277E-03 aline .429562E-01 0 aline .449088E-01 .976277E-02 aline .045885 .136679E-01 aline .478376E-01 .234307E-01 aline .488139E-01 .273358E-01 aline .771259E-01 .273358E-01 closepath ! end of curve fill dfont endchar dfont char=34 !-------------- Beginning of new char. dfont wid=.500002 hei=.694445 dep=0 italic=.00316143 set path ! start of curve newpath ! start of curve amove .927463E-01 .242117 aline .927463E-01 .240164 aline .917701E-01 .235283 aline .907938E-01 .231378 bezier .883535E-01 .20809 .722255E-01 .190204 .624817E-01 .169872 aline .488139E-01 .169872 bezier .539157E-01 .184114 .613045E-01 .197742 .670377E-01 .211852 aline .663868E-01 .213805 aline .585766E-01 .213805 aline .585766E-01 .215757 aline .615055E-01 .230401 aline .624817E-01 .234307 aline .063458 .239188 aline .644343E-01 .242117 aline .927463E-01 .242117 closepath ! end of curve ! start of curve amove .161086 .242117 aline .161086 .240164 aline .160109 .235283 aline .159133 .231378 bezier .156693 .20809 .140565 .190204 .130821 .169872 aline .117153 .169872 bezier .122256 .184113 .129643 .197743 .135377 .211852 aline .134726 .213805 aline .126916 .213805 aline .126916 .215757 aline .129845 .230401 aline .130821 .234307 aline .131797 .239188 aline .132774 .242117 aline .161086 .242117 closepath ! end of curve fill dfont endchar dfont char=35 !-------------- Beginning of new char. dfont wid=.833336 hei=.694445 dep=.194443 italic=.0508671 set path ! start of curve newpath ! start of curve amove .199161 .242117 aline .201113 .24114 aline .202089 .240164 aline .204042 .236259 bezier .189647 .200383 .170507 .165799 .154496 .130333 aline .155228 .128869 aline .218686 .128869 aline .22552 .142536 aline .226496 .145465 aline .236259 .164991 aline .237235 .16792 aline .247974 .189398 aline .248951 .192327 aline .25969 .213805 aline .260666 .216734 aline .271405 .238212 aline .274334 .24114 aline .276286 .242117 aline .280192 .242117 aline .282144 .24114 aline .28312 .240164 aline .285073 .236259 bezier .270678 .200383 .251538 .165799 .235527 .130333 aline .236259 .128869 aline .294836 .128869 aline .296788 .127892 aline .298741 .12594 aline .299717 .123987 aline .299717 .120082 aline .298741 .11813 aline .296788 .116177 aline .294836 .115201 aline .227473 .115201 bezier .218336 .968327E-01 .210507 .776315E-01 .201113 .595529E-01 aline .202089 .585766E-01 aline .280192 .585766E-01 aline .282144 .576004E-01 aline .28312 .566241E-01 aline .285073 .052719 aline .285073 .507664E-01 aline .28312 .468613E-01 aline .282144 .045885 aline .280192 .449088E-01 aline .194279 .449088E-01 bezier .174645 .790063E-02 .15884 -.317523E-01 .138631 -.683394E-01 aline .136679 -.693157E-01 aline .132774 -.693157E-01 aline .130821 -.683394E-01 aline .127892 -.654106E-01 aline .127892 -.595529E-01 bezier .144488 -.250938E-01 .160513 .989383E-02 .177682 .439325E-01 aline .176706 .449088E-01 aline .113248 .449088E-01 bezier .936146E-01 .790033E-02 .778082E-01 -.317519E-01 .576004E-01 -.683394E-01 aline .556478E-01 -.693157E-01 aline .517427E-01 -.693157E-01 aline .497901E-01 -.683394E-01 aline .468613E-01 -.654106E-01 aline .468613E-01 -.595529E-01 bezier .063457 -.250938E-01 .794819E-01 .989432E-02 .966514E-01 .439325E-01 aline .956752E-01 .449088E-01 aline .370985E-01 .449088E-01 aline .035146 .045885 aline .322171E-01 .488139E-01 aline .322171E-01 .546715E-01 aline .035146 .576004E-01 aline .370985E-01 .585766E-01 aline .103485 .585766E-01 bezier .11309 .763707E-01 .120884 .953906E-01 .129601 .113736 aline .128869 .115201 aline .517427E-01 .115201 aline .497901E-01 .116177 aline .468613E-01 .119106 aline .468613E-01 .124963 aline .497901E-01 .127892 aline .517427E-01 .128869 aline .137655 .128869 aline .144489 .142536 aline .145465 .145465 aline .155228 .164991 aline .156204 .16792 aline .166943 .189398 aline .16792 .192327 aline .178659 .213805 aline .179635 .216734 aline .190374 .238212 aline .193303 .24114 aline .195255 .242117 closepath ! end of curve ! start of curve amove .145465 .113248 bezier .136776 .954802E-01 .129129 .769896E-01 .120082 .595529E-01 aline .121058 .585766E-01 aline .184516 .585766E-01 bezier .194121 .763707E-01 .201915 .953906E-01 .210632 .113736 aline .2099 .115201 aline .146442 .115201 closepath ! end of curve fill dfont endchar dfont char=36 !-------------- Beginning of new char. dfont wid=.500002 hei=.75 dep=.0555553 italic=.111563 set path ! start of curve newpath ! start of curve amove .154252 .261642 aline .154252 .258713 aline .152299 .248951 aline .151567 .247486 aline .152299 .246022 bezier .169018 .244793 .186314 .237754 .199161 .226496 aline .198184 .224544 aline .196232 .218686 aline .195255 .216734 aline .194279 .213805 aline .193303 .211852 aline .192327 .208923 aline .19135 .206971 aline .190374 .204042 bezier .17916 .215815 .162487 .222039 .147418 .224544 bezier .141104 .196023 .133783 .167148 .129691 .138426 bezier .157531 .133728 .176987 .103558 .171825 .771259E-01 bezier .169946 .374541E-01 .136566 .339814E-02 .984265E-01 -.461515E-02 aline .976277E-01 -.781022E-02 aline .966514E-01 -.126916E-01 aline .946989E-01 -.205018E-01 aline .751733E-01 -.205018E-01 aline .751733E-01 -.017573 aline .761496E-01 -.136679E-01 aline .771259E-01 -.878649E-02 aline .777768E-01 -.683394E-02 aline .771259E-01 -.488139E-02 bezier .578485E-01 -.23482E-02 .357727E-01 .428697E-02 .214781E-01 .195255E-01 aline .214781E-01 .214781E-01 aline .224544E-01 .234307E-01 aline .244069E-01 .292883E-01 aline .253832E-01 .312409E-01 aline .263595E-01 .341697E-01 aline .273358E-01 .361223E-01 aline .028312 .390511E-01 aline .292883E-01 .410036E-01 aline .302646E-01 .419799E-01 bezier .436737E-01 .280709E-01 .630417E-01 .191288E-01 .820073E-01 .017573 bezier .906922E-01 .479614E-01 .946405E-01 .809429E-01 .103485 .111296 bezier .811359E-01 .115988 .608614E-01 .132761 .576004E-01 .156204 bezier .526802E-01 .199634 .890943E-01 .239067 .1311 .245882 aline .131797 .247974 aline .13375 .257737 aline .134726 .261642 aline .154252 .261642 closepath ! end of curve ! start of curve amove .123987 .222591 bezier .929259E-01 .216467 .683633E-01 .174464 .946989E-01 .150347 aline .966514E-01 .14937 aline .976277E-01 .148394 aline .101533 .146442 aline .10739 .144489 aline .108855 .143757 bezier .115813 .169272 .12062 .197097 .126265 .222917 aline .125452 .223323 closepath ! end of curve ! start of curve amove .121058 .102509 bezier .115859 .747354E-01 .108003 .470275E-01 .104322 .192466E-01 bezier .138085 .258869E-01 .162071 .757401E-01 .13375 .101533 aline .129845 .103485 aline .128869 .104462 aline .12594 .105438 aline .122523 .107146 aline .121926 .106848 closepath ! end of curve fill dfont endchar dfont char=37 !-------------- Beginning of new char. dfont wid=.833336 hei=.75 dep=.0555553 italic=.0312634 set path ! start of curve newpath ! start of curve amove .129845 .261642 bezier .148034 .25877 .157923 .239712 .160109 .223567 bezier .163679 .183391 .144411 .136569 .104462 .122035 bezier .809639E-01 .11486 .614622E-01 .137288 .595529E-01 .159133 bezier .055792 .199543 .756299E-01 .245711 .115201 .260666 aline .120082 .261642 closepath ! end of curve ! start of curve amove .282144 .261642 aline .284097 .260666 bezier .292895 .252253 .278743 .244544 .27531 .237235 bezier .206403 .152058 .139637 .653358E-01 .070292 -.195255E-01 aline .683394E-01 -.205018E-01 aline .644343E-01 -.205018E-01 aline .624817E-01 -.195255E-01 bezier .542996E-01 -.104378E-01 .686401E-01 -.282896E-02 .722445E-01 .488139E-02 bezier .140712 .898149E-01 .207459 .175991 .276286 .260666 aline .278239 .261642 closepath ! end of curve ! start of curve amove .116177 .240164 bezier .091997 .229828 .895178E-01 .19834 .839598E-01 .176706 aline .839598E-01 .159133 aline .849361E-01 .158157 aline .859124E-01 .154252 aline .868887E-01 .151323 aline .888412E-01 .147418 bezier .994778E-01 .133588 .115991 .147986 .122035 .159133 bezier .134569 .18302 .144722 .213924 .128869 .238212 aline .124963 .240164 aline .123987 .24114 aline .117153 .24114 closepath ! end of curve ! start of curve amove .256761 .120082 bezier .279939 .114798 .289272 .086463 .286049 .663868E-01 bezier .285233 .304818E-01 .263597 -.108911E-01 .226496 -.205018E-01 bezier .203744 -.240523E-01 .187684 -.187396E-02 .185493 .185493E-01 bezier .182087 .586728E-01 .2022 .104925 .242117 .119106 aline .246022 .120082 closepath ! end of curve ! start of curve amove .243093 .098604 bezier .219718 .902485E-01 .217223 .614124E-01 .210876 .410036E-01 bezier .2094 .271883E-01 .207314 .749427E-02 .222591 0 bezier .242548 .100066E-03 .251879 .225727E-01 .257737 .390511E-01 bezier .263232 .577844E-01 .267375 .796438E-01 .254808 .966514E-01 aline .250903 .098604 aline .249927 .995803E-01 aline .244069 .995803E-01 closepath ! end of curve fill dfont endchar dfont char=38 !-------------- Beginning of new char. dfont wid=.758336 hei=.694445 dep=0 italic=.0305786 set path ! start of curve newpath ! start of curve amove .164991 .249927 bezier .194108 .245577 .200312 .208616 .190374 .185493 bezier .17545 .156939 .147363 .138172 .123255 .118618 bezier .132145 .910644E-01 .145485 .064042 .16255 .412477E-01 bezier .198209 .659734E-01 .22372 .102136 .243093 .140584 aline .244069 .140584 aline .247974 .139608 aline .250903 .138631 aline .254808 .137655 aline .263595 .134726 bezier .242887 .924689E-01 .213347 .547512E-01 .17573 .263595E-01 bezier .189475 .127387E-01 .21114 .994598E-02 .228449 .146442E-01 aline .23333 .146442E-01 aline .234307 .156204E-01 aline .239188 .165967E-01 aline .246998 .185493E-01 aline .249927 .195255E-01 aline .25188 .195255E-01 aline .250903 .146442E-01 aline .249927 .010739 aline .247974 .976277E-03 aline .246998 -.292883E-02 bezier .21744 -.107711E-01 .182086 -.142794E-01 .157181 .781022E-02 aline .155228 .878649E-02 aline .152299 .117153E-01 bezier .122705 -.455876E-02 .870541E-01 -.148742E-01 .546715E-01 -.488139E-02 bezier .256996E-01 .456508E-02 .168208E-01 .432242E-01 .331934E-01 .673631E-01 bezier .470393E-01 .918113E-01 .735045E-01 .104383 .946989E-01 .121058 aline .946989E-01 .127892 aline .937226E-01 .128869 bezier .901305E-01 .166274 .965759E-01 .20861 .12594 .236259 bezier .133905 .24257 .142786 .248486 .153276 .249927 closepath ! end of curve ! start of curve amove .14937 .228449 bezier .127451 .222675 .120793 .197095 .11813 .178659 aline .11813 .165967 aline .117153 .164991 aline .117153 .157181 aline .11813 .156204 aline .11813 .143513 aline .119106 .142536 aline .120082 .139608 bezier .142568 .158947 .175104 .179668 .170849 .213805 aline .169872 .214781 aline .168896 .218686 aline .16792 .221615 aline .166943 .222591 aline .165967 .224544 aline .164015 .226496 aline .162062 .227473 aline .159133 .228449 aline .158157 .229425 aline .150347 .229425 aline .14937 .228449 closepath ! end of curve ! start of curve amove .956752E-01 .098604 bezier .787877E-01 .863844E-01 .574112E-01 .074702 .536952E-01 .517427E-01 bezier .490878E-01 .366354E-01 .579377E-01 .164425E-01 .751733E-01 .136679E-01 bezier .959748E-01 .102582E-01 .117777 .179926E-01 .137655 .263595E-01 aline .138631 .273358E-01 bezier .121115 .489236E-01 .108371 .075156 .990921E-01 .101289 aline .976277E-01 .100557 aline .956752E-01 .098604 closepath ! end of curve fill dfont endchar dfont char=39 !-------------- Beginning of new char. dfont wid=.277779 hei=.694445 dep=0 italic=.0781631 dfont fby=33 kadd=.111112 dfont fby=39 ligrep=34 dfont fby="?" kadd=.111112 set path ! start of curve newpath ! start of curve amove .115201 .242117 aline .115201 .240164 aline .114224 .235283 aline .113248 .231378 bezier .110808 .20809 .09468 .190203 .849361E-01 .169872 aline .712682E-01 .169872 bezier .763702E-01 .184114 .837589E-01 .197742 .894921E-01 .211852 aline .888412E-01 .213805 aline .081031 .213805 aline .081031 .215757 aline .839598E-01 .230401 aline .849361E-01 .234307 aline .859124E-01 .239188 aline .868887E-01 .242117 aline .115201 .242117 closepath ! end of curve fill dfont endchar dfont char=40 !-------------- Beginning of new char. dfont wid=.38889 hei=.75 dep=.25 italic=.131638 set path ! start of curve newpath ! start of curve amove .172801 .261642 bezier .104103 .207667 .742567E-01 .115028 .663868E-01 .331934E-01 aline .663868E-01 -.976277E-03 bezier .069502 -.303635E-01 .783489E-01 -.063665 .098604 -.878649E-01 aline .781022E-01 -.878649E-01 bezier .542984E-01 -.637657E-01 .436081E-01 -.279421E-01 .410036E-01 .390511E-02 aline .410036E-01 .410036E-01 aline .419799E-01 .419799E-01 bezier .469369E-01 .123709 .840311E-01 .211553 .152299 .261642 aline .172801 .261642 closepath ! end of curve fill dfont endchar dfont char=")" !-------------- Beginning of new char. dfont wid=.38889 hei=.75 dep=.25 italic=.0253601 set path ! start of curve newpath ! start of curve amove .966514E-01 .261642 bezier .128227 .230223 .135601 .183549 .134726 .14156 aline .13375 .140584 bezier .130626 .055812 .937083E-01 -.363073E-01 .224544E-01 -.878649E-01 aline .195255E-02 -.878649E-01 aline .292883E-02 -.868887E-01 aline .488139E-02 -.859124E-01 aline .878649E-02 -.820073E-01 aline .010739 -.081031 aline .331934E-01 -.585766E-01 bezier .787434E-01 -.598554E-02 .100429 .675014E-01 .108367 .13375 aline .108367 .150347 aline .109343 .151323 bezier .109589 .188604 .10237 .227317 .790785E-01 .258713 aline .761496E-01 .261642 aline .966514E-01 .261642 closepath ! end of curve fill dfont endchar dfont char="*" !-------------- Beginning of new char. dfont wid=.500002 hei=.75 dep=0 italic=.117749 set path ! start of curve newpath ! start of curve amove .147418 .261642 aline .14937 .260666 aline .151323 .25969 aline .152299 .258713 aline .153276 .256761 aline .154252 .253832 bezier .15146 .236261 .144194 .21895 .141365 .201699 bezier .15689 .208974 .171586 .220784 .187445 .228449 aline .193303 .228449 aline .195255 .227473 aline .199161 .223567 aline .200137 .220639 aline .200137 .21771 aline .199161 .214781 aline .197208 .210876 aline .194279 .207947 aline .170849 .196232 aline .16792 .195255 aline .148394 .185493 aline .146051 .184712 bezier .154643 .176332 .16906 .170726 .179635 .163038 aline .181588 .162062 aline .185493 .158157 aline .186469 .154252 aline .185493 .14937 aline .184516 .147418 aline .178659 .14156 aline .174754 .139608 aline .16792 .139608 bezier .156151 .148519 .144908 .15816 .13375 .16792 bezier .129074 .149588 .128986 .131629 .123987 .113248 aline .119106 .108367 aline .117153 .10739 aline .114224 .106414 aline .108367 .106414 aline .104462 .108367 aline .103485 .109343 aline .101533 .113248 bezier .103685 .131168 .111121 .148945 .11455 .166293 bezier .988175E-01 .159522 .841798E-01 .147295 .683394E-01 .139608 aline .624817E-01 .139608 aline .585766E-01 .14156 aline .576004E-01 .142536 aline .556478E-01 .146442 aline .556478E-01 .151323 aline .566241E-01 .154252 aline .576004E-01 .156204 aline .624817E-01 .161086 aline .683394E-01 .164015 aline .712682E-01 .164991 aline .907938E-01 .174754 aline .937226E-01 .17573 aline .109343 .18354 aline .110319 .184516 bezier .971327E-01 .192092 .841237E-01 .199912 .712682E-01 .207947 bezier .625508E-01 .22079 .848371E-01 .236946 .937226E-01 .223567 bezier .103439 .216145 .112691 .208076 .122035 .200137 bezier .12645 .217981 .126373 .236809 .131797 .254808 aline .136679 .25969 aline .138631 .260666 aline .14156 .261642 closepath ! end of curve fill dfont endchar dfont char="+" !-------------- Beginning of new char. dfont wid=.777781 hei=.583334 dep=.083334 italic=.0253601 set path ! start of curve newpath ! start of curve amove .181588 .203066 aline .18354 .202089 aline .186469 .199161 bezier .182288 .163843 .17101 .128377 .165967 .937226E-01 aline .2675 .937226E-01 aline .269453 .927463E-01 aline .272381 .898175E-01 aline .272381 .839598E-01 aline .269453 .081031 aline .2675 .800547E-01 aline .163038 .800547E-01 bezier .153907 .04534 .148365 .949831E-02 .139608 -.253832E-01 aline .136679 -.028312 aline .134726 -.292883E-01 aline .130821 -.292883E-01 aline .128869 -.028312 aline .127892 -.273358E-01 aline .12594 -.234307E-01 bezier .131687 .111226E-01 .141934 .455992E-01 .146442 .800547E-01 aline .439325E-01 .800547E-01 aline .419799E-01 .081031 aline .400274E-01 .829836E-01 aline .390511E-01 .849361E-01 aline .390511E-01 .888412E-01 aline .400274E-01 .907938E-01 aline .419799E-01 .927463E-01 aline .439325E-01 .937226E-01 aline .150347 .937226E-01 bezier .158596 .129074 .164639 .165093 .173777 .200137 aline .17573 .202089 aline .177682 .203066 closepath ! end of curve fill dfont endchar dfont char="," !-------------- Beginning of new char. dfont wid=.277779 hei=.083333 dep=.125 italic=0 set path ! start of curve newpath ! start of curve amove .693157E-01 .273358E-01 bezier .06848 -.484868E-04 .516183E-01 -.219821E-01 .390511E-01 -.449088E-01 aline .253832E-01 -.449088E-01 bezier .030695 -.303861E-01 .400659E-01 -.145176E-01 .439325E-01 -.976277E-03 aline .035146 -.976277E-03 aline .035146 0 aline .370985E-01 .976277E-02 aline .380748E-01 .136679E-01 aline .400274E-01 .234307E-01 aline .410036E-01 .273358E-01 aline .693157E-01 .273358E-01 closepath ! end of curve fill dfont endchar dfont char="-" !-------------- Beginning of new char. dfont wid=.333334 hei=.444445 dep=0 italic=.0194569 set path ! start of curve newpath ! start of curve amove .116177 .868887E-01 aline .116177 .839598E-01 aline .115201 .790785E-01 aline .114224 .751733E-01 aline .113248 .070292 aline .112272 .673631E-01 aline .195255E-01 .673631E-01 aline .195255E-01 .693157E-01 aline .205018E-01 .741971E-01 aline .214781E-01 .781022E-01 aline .224544E-01 .829836E-01 aline .234307E-01 .868887E-01 aline .116177 .868887E-01 closepath ! end of curve fill dfont endchar dfont char="." !-------------- Beginning of new char. dfont wid=.277779 hei=.083333 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .693157E-01 .273358E-01 aline .693157E-01 .244069E-01 aline .673631E-01 .146442E-01 aline .663868E-01 .010739 aline .644343E-01 .976277E-03 aline .063458 -.976277E-03 aline .035146 -.976277E-03 aline .035146 0 aline .370985E-01 .976277E-02 aline .380748E-01 .136679E-01 aline .400274E-01 .234307E-01 aline .410036E-01 .273358E-01 aline .693157E-01 .273358E-01 closepath ! end of curve fill dfont endchar dfont char="/" !-------------- Beginning of new char. dfont wid=.500002 hei=.75 dep=.25 italic=.131638 set path ! start of curve newpath ! start of curve amove .205994 .261642 aline .207947 .260666 aline .2099 .258713 aline .210876 .256761 bezier .209185 .244516 .199043 .234978 .194279 .223567 bezier .133517 .120157 .759091E-01 .144769E-01 .136679E-01 -.878649E-01 aline .117153E-01 -.888412E-01 aline .781022E-02 -.888412E-01 aline .585766E-02 -.878649E-01 aline .488139E-02 -.868887E-01 aline .292883E-02 -.829836E-01 bezier .293649E-01 -.030591 .616337E-01 .01943 .898175E-01 .712682E-01 bezier .12727 .133913 .161641 .198775 .200137 .260666 aline .202089 .261642 aline .205994 .261642 closepath ! end of curve fill dfont endchar dfont char="0" !-------------- Beginning of new char. dfont wid=.500002 hei=.655556 dep=0 italic=.111563 set path ! start of curve newpath ! start of curve amove .146442 .236259 bezier .17269 .233854 .192045 .209336 .19135 .18354 aline .192327 .182564 aline .192327 .152299 bezier .184595 .100867 .17414 .357886E-01 .126916 .292883E-02 bezier .101052 -.141972E-01 .059389 -.147012E-01 .419799E-01 .146442E-01 aline .390511E-01 .205018E-01 aline .380748E-01 .234307E-01 aline .370985E-01 .253832E-01 aline .341697E-01 .370985E-01 aline .341697E-01 .429562E-01 aline .331934E-01 .439325E-01 aline .331934E-01 .751733E-01 bezier .412642E-01 .127694 .521536E-01 .192891 .100557 .22552 aline .110319 .230401 aline .113248 .231378 aline .115201 .232354 aline .121058 .234307 aline .12594 .235283 aline .130821 .235283 aline .131797 .236259 closepath ! end of curve ! start of curve amove .127892 .214781 bezier .896119E-01 .206589 .779363E-01 .163276 .070292 .129845 bezier .641905E-01 .944265E-01 .498162E-01 .592569E-01 .663868E-01 .253832E-01 bezier .750277E-01 .115608E-01 .935127E-01 .822341E-02 .10739 .156204E-01 bezier .141717 .332669E-01 .149625 .757111E-01 .158157 .110319 bezier .163845 .140974 .175108 .171237 .161086 .201113 aline .160109 .202089 aline .159133 .204042 aline .154252 .208923 aline .152299 .2099 aline .151323 .210876 aline .147418 .212828 aline .144489 .213805 aline .140584 .214781 aline .139608 .215757 aline .128869 .215757 closepath ! end of curve fill dfont endchar dfont char="1" !-------------- Beginning of new char. dfont wid=.500002 hei=.655556 dep=0 italic=.111563 set path ! start of curve newpath ! start of curve amove .157181 .236259 bezier .142923 .163665 .124748 .911452E-01 .112272 .185493E-01 aline .154252 .185493E-01 aline .154252 .146442E-01 aline .153276 .010739 aline .151323 .976277E-03 aline .150347 -.976277E-03 aline .035146 -.976277E-03 aline .035146 0 aline .370985E-01 .976277E-02 aline .380748E-01 .136679E-01 aline .390511E-01 .185493E-01 aline .829836E-01 .185493E-01 bezier .952809E-01 .797139E-01 .110246 .141112 .121058 .202089 aline .120082 .201113 aline .111296 .198184 aline .103485 .196232 aline .098604 .195255 aline .927463E-01 .195255 aline .917701E-01 .194279 aline .800547E-01 .194279 aline .790785E-01 .193303 aline .741971E-01 .193303 aline .751733E-01 .198184 aline .761496E-01 .202089 aline .781022E-01 .211852 aline .790785E-01 .212828 bezier .103429 .213711 .130569 .219435 .150347 .236259 aline .157181 .236259 closepath ! end of curve fill dfont endchar dfont char="2" !-------------- Beginning of new char. dfont wid=.500002 hei=.655556 dep=0 italic=.111563 set path ! start of curve newpath ! start of curve amove .142536 .236259 bezier .167616 .234818 .191676 .214606 .194279 .188421 bezier .196442 .165498 .190127 .142359 .174754 .124963 bezier .142059 .901423E-01 .100695 .673513E-01 .654106E-01 .361223E-01 aline .063458 .035146 aline .615055E-01 .331934E-01 aline .595529E-01 .322171E-01 aline .566241E-01 .292883E-01 aline .546715E-01 .028312 aline .517427E-01 .253832E-01 aline .497901E-01 .244069E-01 aline .488139E-01 .234307E-01 aline .497901E-01 .224544E-01 aline .163038 .224544E-01 aline .163038 .195255E-01 aline .162062 .146442E-01 aline .161086 .010739 aline .159133 .976277E-03 aline .158157 -.976277E-03 aline .185493E-01 -.976277E-03 aline .185493E-01 0 aline .205018E-01 .976277E-02 bezier .206753E-01 .235976E-01 .348178E-01 .284058E-01 .429562E-01 .370985E-01 bezier .766431E-01 .663541E-01 .114588 .904596E-01 .145465 .123011 bezier .162634 .144196 .174661 .175304 .158157 .200137 bezier .135673 .22638 .924162E-01 .214312 .781022E-01 .185493 aline .771259E-01 .184516 aline .741971E-01 .178659 aline .732208E-01 .177682 aline .663868E-01 .164015 aline .654106E-01 .161086 aline .644343E-01 .160109 aline .063458 .162062 aline .624817E-01 .163038 aline .595529E-01 .168896 aline .585766E-01 .169872 aline .556478E-01 .17573 aline .546715E-01 .176706 aline .536952E-01 .178659 bezier .067307 .206861 .926623E-01 .233036 .124963 .236259 aline .142536 .236259 closepath ! end of curve fill dfont endchar dfont char="3" !-------------- Beginning of new char. dfont wid=.500002 hei=.655556 dep=0 italic=.111563 set path ! start of curve newpath ! start of curve amove .146442 .236259 bezier .166274 .234386 .187297 .221262 .19135 .200137 bezier .194544 .166077 .168152 .137055 .139608 .123011 bezier .162071 .114341 .179718 .917143E-01 .17573 .663868E-01 bezier .166536 .753291E-02 .909235E-01 -.310665E-01 .410036E-01 .488139E-02 bezier .329371E-01 .108384E-01 .263804E-01 .186855E-01 .214781E-01 .273358E-01 aline .224544E-01 .302646E-01 aline .234307E-01 .322171E-01 aline .244069E-01 .035146 aline .263595E-01 .390511E-01 aline .273358E-01 .419799E-01 aline .028312 .439325E-01 aline .292883E-01 .468613E-01 aline .302646E-01 .478376E-01 bezier .466263E-01 .100376E-01 .10559 -.263736E-02 .130821 .331934E-01 bezier .146282 .536974E-01 .15401 .877863E-01 .131797 .106414 aline .12594 .109343 aline .123011 .110319 aline .11813 .111296 aline .117153 .112272 aline .839598E-01 .112272 aline .839598E-01 .115201 aline .849361E-01 .120082 aline .859124E-01 .123987 aline .868887E-01 .128869 aline .878649E-01 .132774 bezier .10562 .133696 .124479 .134513 .139608 .146442 bezier .153669 .158432 .163561 .17594 .164015 .194279 aline .163038 .195255 bezier .161215 .212563 .14017 .21984 .12594 .215757 bezier .103631 .213127 .834508E-01 .198294 .712682E-01 .179635 aline .070292 .181588 aline .693157E-01 .184516 aline .624817E-01 .198184 bezier .831738E-01 .222622 .114118 .239184 .146442 .236259 closepath ! end of curve fill dfont endchar dfont char="4" !-------------- Beginning of new char. dfont wid=.500002 hei=.655556 dep=0 italic=.111563 set path ! start of curve newpath ! start of curve amove .179635 .228449 bezier .170756 .178574 .157222 .128808 .14937 .790785E-01 aline .18354 .790785E-01 aline .182564 .751733E-01 aline .180611 .654106E-01 aline .179635 .615055E-01 aline .178659 .585766E-01 aline .144489 .585766E-01 aline .143513 .566241E-01 aline .14156 .468613E-01 aline .140584 .429562E-01 aline .138631 .331934E-01 aline .137655 .292883E-01 aline .134726 .146442E-01 aline .13375 .010739 aline .131797 .976277E-03 aline .130821 -.976277E-03 aline .103485 -.976277E-03 bezier .106618 .188631E-01 .112828 .039235 .115201 .585766E-01 aline .234307E-01 .585766E-01 aline .234307E-01 .605292E-01 aline .244069E-01 .644343E-01 bezier .247252E-01 .778714E-01 .336276E-01 .087368 .419799E-01 .966514E-01 bezier .771239E-01 .14082 .112658 .184708 .148394 .228449 aline .179635 .228449 closepath ! end of curve ! start of curve amove .14937 .213805 bezier .131189 .171446 .099217 .137966 .722445E-01 .101533 aline .693157E-01 .098604 aline .683394E-01 .966514E-01 aline .654106E-01 .937226E-01 aline .644343E-01 .917701E-01 aline .615055E-01 .888412E-01 aline .605292E-01 .868887E-01 aline .576004E-01 .839598E-01 aline .566241E-01 .820073E-01 aline .546715E-01 .800547E-01 aline .556478E-01 .790785E-01 aline .122035 .790785E-01 bezier .131393 .124891 .143036 .170918 .150347 .216734 closepath ! end of curve fill dfont endchar dfont char="5" !-------------- Beginning of new char. dfont wid=.500002 hei=.655556 dep=0 italic=.111563 set path ! start of curve newpath ! start of curve amove .195255 .228449 aline .195255 .226496 aline .193303 .216734 aline .192327 .212828 aline .19135 .207947 aline .190374 .206971 aline .098604 .206971 bezier .934136E-01 .183212 .875495E-01 .159017 .837646E-01 .135312 bezier .10357 .148791 .133393 .155153 .154252 .138631 bezier .186955 .110307 .178773 .585874E-01 .153276 .028312 bezier .126475 -.522763E-02 .750306E-01 -.223925E-01 .380748E-01 .390511E-02 aline .253832E-01 .165967E-01 aline .244069E-01 .185493E-01 aline .234307E-01 .195255E-01 aline .224544E-01 .214781E-01 aline .214781E-01 .224544E-01 aline .205018E-01 .244069E-01 aline .205018E-01 .253832E-01 aline .214781E-01 .273358E-01 aline .244069E-01 .302646E-01 aline .253832E-01 .322171E-01 aline .028312 .035146 aline .292883E-01 .370985E-01 aline .322171E-01 .400274E-01 aline .331934E-01 .419799E-01 aline .035146 .439325E-01 bezier .469422E-01 .113287E-01 .917921E-01 .139106E-02 .117153 .244069E-01 bezier .139626 .430454E-01 .146854 .746166E-01 .145465 .102509 bezier .142334 .112769 .137544 .125431 .124963 .126916 bezier .104846 .131051 .841587E-01 .11622 .732208E-01 .995803E-01 aline .507664E-01 .995803E-01 bezier .592409E-01 .142579 .684942E-01 .18565 .781022E-01 .228449 aline .195255 .228449 closepath ! end of curve fill dfont endchar dfont char="6" !-------------- Beginning of new char. dfont wid=.500002 hei=.655556 dep=0 italic=.111563 set path ! start of curve newpath ! start of curve amove .168896 .236259 aline .169872 .235283 aline .176706 .235283 aline .184516 .23333 aline .193303 .230401 aline .194279 .229425 aline .194279 .226496 aline .192327 .216734 aline .19135 .212828 aline .190374 .2099 bezier .166689 .219528 .138835 .220317 .11813 .203066 bezier .952509E-01 .186489 .800915E-01 .158692 .741971E-01 .131797 bezier .952193E-01 .153767 .130697 .169231 .159133 .155228 bezier .184017 .133166 .182684 .961404E-01 .174754 .673631E-01 bezier .165008 .324414E-01 .136826 .173103E-02 .101533 -.781022E-02 bezier .080787 -.124149E-01 .555817E-01 -.544136E-02 .449088E-01 .146442E-01 aline .439325E-01 .156204E-01 bezier .028478 .478699E-01 .350669E-01 .819766E-01 .410036E-01 .115201 bezier .533236E-01 .168546 .893188E-01 .221276 .144489 .235283 aline .14937 .235283 aline .150347 .236259 aline .168896 .236259 closepath ! end of curve ! start of curve amove .110319 .138631 bezier .802636E-01 .131066 .646533E-01 .100171 .615055E-01 .712682E-01 aline .605292E-01 .070292 aline .605292E-01 .045885 aline .615055E-01 .449088E-01 bezier .607531E-01 .262188E-01 .795597E-01 .619427E-02 .098604 .126916E-01 bezier .133644 .189788E-01 .147554 .057978 .151323 .888412E-01 bezier .155538 .107133 .150133 .133951 .128869 .139608 aline .111296 .139608 closepath ! end of curve fill dfont endchar dfont char="7" !-------------- Beginning of new char. dfont wid=.500002 hei=.655556 dep=0 italic=.111563 set path ! start of curve newpath ! start of curve amove .2099 .228449 aline .2099 .226496 aline .207947 .216734 aline .206971 .212828 aline .205994 .207947 bezier .146114 .15063 .100866 .773964E-01 .820073E-01 -.488139E-02 aline .536952E-01 -.488139E-02 bezier .671133E-01 .593074E-01 .100352 .117652 .142536 .165967 aline .17573 .199161 aline .177682 .200137 aline .181588 .204042 aline .180611 .205018 aline .595529E-01 .205018 aline .595529E-01 .206971 aline .605292E-01 .211852 aline .615055E-01 .215757 aline .063458 .22552 aline .644343E-01 .228449 aline .2099 .228449 closepath ! end of curve fill dfont endchar dfont char="8" !-------------- Beginning of new char. dfont wid=.500002 hei=.655556 dep=0 italic=.111563 set path ! start of curve newpath ! start of curve amove .147418 .236259 bezier .17085 .23427 .194018 .214659 .195255 .190374 bezier .197321 .158125 .169133 .131554 .139608 .123011 bezier .164796 .115015 .181704 .877113E-01 .174754 .615055E-01 bezier .163304 .936695E-02 .970197E-01 -.284272E-01 .497901E-01 .195255E-02 bezier .205907E-01 .230044E-01 .216615E-01 .669111E-01 .439325E-01 .927463E-01 bezier .564207E-01 .106758 .071845 .117374 .898175E-01 .123011 bezier .662549E-01 .129725 .511411E-01 .155863 .585766E-01 .178659 bezier .699408E-01 .215796 .109538 .239758 .147418 .236259 closepath ! end of curve ! start of curve amove .126916 .215757 bezier .924469E-01 .214804 .638472E-01 .166451 .917701E-01 .140584 bezier .120357 .122235 .163855 .14067 .169872 .174754 bezier .17526 .190315 .166288 .211768 .147418 .214781 aline .142536 .215757 aline .14156 .216734 aline .127892 .216734 aline .126916 .215757 closepath ! end of curve ! start of curve amove .102509 .111296 bezier .668061E-01 .10426 .045379 .602465E-01 .595529E-01 .028312 bezier .779736E-01 -.758292E-05 .122534 .116838E-01 .137655 .380748E-01 bezier .149702 .591555E-01 .156404 .091848 .132774 .10739 aline .128869 .109343 aline .12594 .110319 aline .122035 .111296 aline .121058 .112272 aline .103485 .112272 closepath ! end of curve fill dfont endchar dfont char="9" !-------------- Beginning of new char. dfont wid=.500002 hei=.655556 dep=0 italic=.111563 set path ! start of curve newpath ! start of curve amove .147418 .236259 bezier .174216 .232882 .191221 .205323 .190374 .179635 bezier .193475 .161657 .189302 .14321 .187445 .12594 bezier .178229 .706656E-01 .146751 .147345E-01 .927463E-01 -.585766E-02 bezier .709147E-01 -.118614E-01 .447944E-01 -.986737E-02 .028312 .781022E-02 bezier .332914E-01 .134587E-01 .373378E-01 .209944E-01 .429562E-01 .253832E-01 bezier .666571E-01 -.291544E-03 .107545 .140884E-01 .124963 .400274E-01 bezier .137662 .557569E-01 .148089 .758204E-01 .151323 .956752E-01 bezier .130118 .751454E-01 .964976E-01 .600107E-01 .683394E-01 .722445E-01 bezier .044133 .909593E-01 .429866E-01 .125455 .488139E-01 .152299 bezier .056464 .189974 .849673E-01 .221966 .121058 .234307 aline .12594 .235283 aline .130821 .235283 aline .131797 .236259 closepath ! end of curve ! start of curve amove .128869 .215757 bezier .950389E-01 .210171 .794448E-01 .174329 .751733E-01 .143513 bezier .696578E-01 .124674 .744882E-01 .954243E-01 .966514E-01 .888412E-01 bezier .128508 .837242E-01 .157033 .113355 .162062 .144489 aline .163038 .145465 aline .163038 .152299 aline .164991 .154252 bezier .166441 .173576 .167774 .195371 .153276 .210876 aline .151323 .211852 aline .150347 .212828 aline .148394 .213805 aline .142536 .215757 aline .14156 .216734 aline .129845 .216734 closepath ! end of curve ! start of curve amove .151323 .956752E-01 aline .152299 .946989E-01 aline .153276 .956752E-01 aline .152299 .966514E-01 aline .151323 .956752E-01 closepath ! end of curve fill dfont endchar dfont char=":" !-------------- Beginning of new char. dfont wid=.277779 hei=.444445 dep=0 italic=.0250244 set path ! start of curve newpath ! start of curve amove .966514E-01 .154252 aline .966514E-01 .153276 aline .937226E-01 .138631 aline .927463E-01 .134726 aline .917701E-01 .129845 aline .907938E-01 .12594 aline .624817E-01 .12594 aline .624817E-01 .128869 aline .063458 .13375 aline .644343E-01 .137655 aline .673631E-01 .152299 aline .683394E-01 .154252 aline .966514E-01 .154252 closepath ! end of curve ! start of curve amove .693157E-01 .273358E-01 aline .693157E-01 .244069E-01 aline .673631E-01 .146442E-01 aline .663868E-01 .010739 aline .644343E-01 .976277E-03 aline .063458 -.976277E-03 aline .035146 -.976277E-03 aline .035146 0 aline .370985E-01 .976277E-02 aline .380748E-01 .136679E-01 aline .400274E-01 .234307E-01 aline .410036E-01 .273358E-01 aline .693157E-01 .273358E-01 closepath ! end of curve fill dfont endchar dfont char=";" !-------------- Beginning of new char. dfont wid=.277779 hei=.444445 dep=.125 italic=.0250244 set path ! start of curve newpath ! start of curve amove .966514E-01 .154252 aline .966514E-01 .153276 aline .937226E-01 .138631 aline .927463E-01 .134726 aline .917701E-01 .129845 aline .907938E-01 .12594 aline .624817E-01 .12594 aline .624817E-01 .128869 aline .063458 .13375 aline .644343E-01 .137655 aline .673631E-01 .152299 aline .683394E-01 .154252 aline .966514E-01 .154252 closepath ! end of curve ! start of curve amove .693157E-01 .273358E-01 bezier .06848 -.484868E-04 .516183E-01 -.219821E-01 .390511E-01 -.449088E-01 aline .253832E-01 -.449088E-01 bezier .030695 -.303861E-01 .400659E-01 -.145176E-01 .439325E-01 -.976277E-03 aline .035146 -.976277E-03 aline .035146 0 aline .370985E-01 .976277E-02 aline .380748E-01 .136679E-01 aline .400274E-01 .234307E-01 aline .410036E-01 .273358E-01 aline .693157E-01 .273358E-01 closepath ! end of curve fill dfont endchar dfont char="<" !-------------- Beginning of new char. dfont wid=.319446 hei=.5 dep=.194445 italic=.0159988 set path ! start of curve newpath ! start of curve amove .108367 .173777 aline .108367 .170849 aline .10739 .166943 aline .105438 .157181 aline .104462 .153276 aline .103485 .148394 aline .102509 .145465 aline .741971E-01 .145465 aline .741971E-01 .147418 aline .751733E-01 .152299 aline .761496E-01 .156204 aline .781022E-01 .165967 aline .800547E-01 .173777 aline .108367 .173777 closepath ! end of curve ! start of curve amove .927463E-01 .111296 aline .917701E-01 .106414 aline .859124E-01 .771259E-01 aline .849361E-01 .761496E-01 aline .849361E-01 .712682E-01 aline .751733E-01 .224544E-01 aline .741971E-01 .214781E-01 aline .741971E-01 .165967E-01 aline .644343E-01 -.322171E-01 aline .063458 -.331934E-01 aline .063458 -.380748E-01 aline .576004E-01 -.673631E-01 aline .566241E-01 -.693157E-01 aline .028312 -.693157E-01 bezier .422334E-01 -.921647E-02 .549076E-01 .518501E-01 .070292 .111296 closepath ! end of curve fill dfont endchar dfont char="=" !-------------- Beginning of new char. dfont wid=.777781 hei=.37 dep=-.13 italic=.0508671 set path ! start of curve newpath ! start of curve amove .27531 .128869 aline .277263 .127892 aline .279215 .12594 aline .280192 .123987 aline .280192 .120082 aline .279215 .11813 aline .277263 .116177 aline .27531 .115201 aline .517427E-01 .115201 aline .497901E-01 .116177 aline .468613E-01 .119106 aline .468613E-01 .124963 aline .497901E-01 .127892 aline .517427E-01 .128869 closepath ! end of curve ! start of curve amove .260666 .585766E-01 aline .262619 .576004E-01 aline .263595 .566241E-01 aline .265547 .052719 aline .265547 .507664E-01 aline .263595 .468613E-01 aline .262619 .045885 aline .260666 .449088E-01 aline .370985E-01 .449088E-01 aline .035146 .045885 aline .322171E-01 .488139E-01 aline .322171E-01 .546715E-01 aline .035146 .576004E-01 aline .370985E-01 .585766E-01 closepath ! end of curve fill dfont endchar dfont char=">" !-------------- Beginning of new char. dfont wid=.472224 hei=.5 dep=.194445 italic=0 set path ! start of curve newpath ! start of curve amove .129845 .173777 aline .129845 .170849 aline .128869 .166943 aline .126916 .157181 aline .12594 .153276 aline .124963 .148394 aline .123987 .145465 aline .956752E-01 .145465 aline .956752E-01 .147418 aline .966514E-01 .152299 aline .976277E-01 .156204 aline .995803E-01 .165967 aline .101533 .173777 aline .129845 .173777 closepath ! end of curve ! start of curve amove .114224 .111296 bezier .108317 .683859E-01 .860412E-01 .297481E-01 .536952E-01 .195255E-02 bezier .043773 -.102692E-01 .384302E-01 -.283376E-01 .439325E-01 -.429562E-01 bezier .532886E-01 -.559138E-01 .728174E-01 -.534493E-01 .859124E-01 -.507664E-01 bezier .102103 -.478391E-01 .118205 -.422944E-01 .131797 -.331934E-01 aline .132774 -.361223E-01 aline .132774 -.419799E-01 aline .13375 -.429562E-01 aline .13375 -.478376E-01 aline .134726 -.488139E-01 aline .134726 -.546715E-01 bezier .105846 -.707303E-01 .718063E-01 -.776072E-01 .400274E-01 -.070292 bezier .254512E-01 -.065208 .013683 -.512564E-01 .156204E-01 -.035146 bezier .133732E-01 -.126337E-01 .268031E-01 .129744E-01 .468613E-01 .253832E-01 bezier .715297E-01 .470493E-01 .860413E-01 .778522E-01 .907938E-01 .110319 aline .917701E-01 .111296 closepath ! end of curve fill dfont endchar dfont char="?" !-------------- Beginning of new char. dfont wid=.472224 hei=.694445 dep=0 italic=.118086 set path ! start of curve newpath ! start of curve amove .142536 .246022 bezier .164038 .245378 .191469 .23039 .188421 .205018 bezier .190645 .182359 .174498 .158496 .154252 .147418 bezier .12641 .127221 .107713 .960811E-01 .103485 .615055E-01 aline .081031 .615055E-01 bezier .851713E-01 .10835 .114886 .148105 .152299 .173777 bezier .162629 .187131 .168935 .212424 .150347 .221615 bezier .124411 .231915 .950957E-01 .221317 .722445E-01 .206971 aline .712682E-01 .210876 aline .712682E-01 .216734 aline .070292 .21771 aline .070292 .222591 aline .693157E-01 .223567 aline .693157E-01 .227473 bezier .907383E-01 .242071 .117113 .247465 .142536 .246022 closepath ! end of curve ! start of curve amove .098604 .273358E-01 aline .098604 .244069E-01 aline .966514E-01 .146442E-01 aline .956752E-01 .010739 aline .937226E-01 .976277E-03 aline .927463E-01 -.976277E-03 aline .644343E-01 -.976277E-03 aline .644343E-01 0 aline .663868E-01 .976277E-02 aline .673631E-01 .136679E-01 aline .693157E-01 .234307E-01 aline .070292 .273358E-01 aline .098604 .273358E-01 closepath ! end of curve fill dfont endchar dfont char="@" !-------------- Beginning of new char. dfont wid=.666669 hei=.694445 dep=0 italic=.0755463 set path ! start of curve newpath ! start of curve amove .198184 .246022 bezier .220331 .244179 .241838 .228062 .246022 .205018 bezier .25234 .174343 .245956 .146316 .240164 .116177 bezier .229658 .773327E-01 .196062 .038367 .153276 .410036E-01 bezier .122584 .443118E-01 .105283 .792236E-01 .110319 .106414 bezier .111838 .152328 .150384 .202908 .200137 .200137 aline .205018 .199161 aline .210876 .197208 aline .216734 .194279 aline .21771 .193303 aline .219662 .192327 aline .220639 .19135 bezier .220631 .206889 .208728 .222566 .192327 .224544 bezier .161736 .228717 .130319 .210608 .108367 .189398 bezier .713899E-01 .149594 .523389E-01 .838669E-01 .888412E-01 .380748E-01 bezier .109956 .149099E-01 .144136 .113255E-01 .171825 .195255E-01 aline .179635 .214781E-01 aline .19135 .253832E-01 aline .193303 .263595E-01 aline .196232 .273358E-01 aline .198184 .028312 aline .220639 .028312 bezier .180078 -.100162E-01 .107305 -.201974E-01 .673631E-01 .244069E-01 bezier .452704E-01 .049014 .392515E-01 .852543E-01 .045885 .115201 bezier .556662E-01 .178744 .108505 .23307 .171825 .245046 aline .178659 .245046 aline .179635 .246022 aline .198184 .246022 closepath ! end of curve ! start of curve amove .18354 .178659 bezier .150987 .16979 .13655 .132096 .135092 .102021 bezier .135351 .859544E-01 .142018 .066487 .159133 .615055E-01 bezier .191768 .613531E-01 .211041 .960261E-01 .215757 .124963 bezier .220065 .140749 .216613 .159163 .205994 .172801 aline .204042 .173777 aline .202089 .17573 aline .200137 .176706 aline .194279 .178659 aline .193303 .179635 aline .184516 .179635 closepath ! end of curve fill dfont endchar dfont char="A" !-------------- Beginning of new char. dfont wid=.66667 hei=.694445 dep=0 italic=0 dfont fby="C" kadd=-.0277786 dfont fby="G" kadd=-.0277786 dfont fby="O" kadd=-.0277786 dfont fby="Q" kadd=-.0277786 dfont fby="T" kadd=-.083334 dfont fby="U" kadd=-.0277786 dfont fby="V" kadd=-.111112 dfont fby="W" kadd=-.111112 dfont fby="Y" kadd=-.083334 dfont fby="t" kadd=-.0277786 set path ! start of curve newpath ! start of curve amove .184516 .242117 bezier .198088 .160688 .211028 .800644E-01 .224544 -.976277E-03 aline .193303 -.976277E-03 bezier .188336 .232346E-01 .186406 .472179E-01 .180611 .712682E-01 aline .790785E-01 .712682E-01 bezier .643405E-01 .047489 .507927E-01 .228518E-01 .361223E-01 -.976277E-03 aline .010739 -.976277E-03 bezier .587426E-01 .799353E-01 .106107 .161307 .154252 .242117 closepath ! end of curve ! start of curve amove .160109 .216734 bezier .13903 .173304 .114088 .132129 .898175E-01 .907938E-01 aline .907938E-01 .898175E-01 aline .177682 .898175E-01 bezier .177905 .101996 .173232 .115616 .172801 .128869 aline .171825 .129845 bezier .169553 .154524 .164218 .177935 .163038 .203066 aline .162062 .204042 aline .162062 .21771 aline .161086 .218686 closepath ! end of curve fill dfont endchar dfont char="B" !-------------- Beginning of new char. dfont wid=.66667 hei=.694445 dep=0 italic=.0829268 set path ! start of curve newpath ! start of curve amove .180611 .242117 bezier .209982 .240386 .247349 .220872 .245046 .186469 bezier .240629 .153125 .205947 .135316 .176706 .12594 bezier .199992 .12202 .223617 .10696 .229425 .829836E-01 bezier .234286 .464618E-01 .202486 .190393E-01 .171825 .683394E-02 aline .160109 .292883E-02 aline .156204 .195255E-02 aline .151323 .976277E-03 aline .146442 .976277E-03 aline .145465 0 aline .138631 0 aline .137655 -.976277E-03 aline .035146 -.976277E-03 bezier .519519E-01 .801009E-01 .690768E-01 .161251 .868887E-01 .242117 aline .180611 .242117 closepath ! end of curve ! start of curve amove .111296 .221615 bezier .105622 .193076 .980351E-01 .163838 .937226E-01 .135703 aline .147418 .135703 bezier .174409 .13991 .208131 .151404 .21771 .180611 bezier .221289 .204761 .195474 .218652 .174754 .221615 aline .173777 .222591 aline .166943 .222591 aline .165967 .223567 aline .112272 .223567 closepath ! end of curve ! start of curve amove .878649E-01 .111296 bezier .081473 .803163E-01 .736119E-01 .473445E-01 .683394E-01 .017573 aline .131797 .017573 bezier .159623 .215076E-01 .193288 .354288E-01 .202089 .654106E-01 bezier .205802 .917736E-01 .180033 .110208 .156204 .113248 aline .155228 .114224 aline .148394 .114224 aline .147418 .115201 aline .888412E-01 .115201 closepath ! end of curve fill dfont endchar dfont char="C" !-------------- Beginning of new char. dfont wid=.638891 hei=.694445 dep=0 italic=.119829 set path ! start of curve newpath ! start of curve amove .205018 .249927 aline .205994 .248951 aline .214781 .248951 aline .215757 .247974 aline .220639 .247974 aline .22552 .246998 aline .23333 .245046 aline .247974 .240164 aline .253832 .237235 bezier .250162 .228379 .24777 .216986 .242117 .2099 bezier .20861 .238019 .157178 .23289 .126916 .202089 bezier .937408E-01 .172852 .764663E-01 .126737 .771259E-01 .839598E-01 bezier .796932E-01 .557716E-01 .945959E-01 .206037E-01 .126916 .146442E-01 bezier .156714 .768204E-02 .187278 .180501E-01 .212828 .341697E-01 aline .212828 .331934E-01 aline .211852 .322171E-01 aline .211852 .253832E-01 aline .210876 .244069E-01 aline .210876 .017573 aline .2099 .165967E-01 aline .2099 .010739 bezier .177595 -.894693E-02 .138252 -.014962 .102509 -.292883E-02 bezier .628513E-01 .128356E-01 .418389E-01 .595097E-01 .478376E-01 .995803E-01 bezier .514986E-01 .171118 .109288 .240829 .181588 .249927 aline .205018 .249927 closepath ! end of curve fill dfont endchar dfont char="D" !-------------- Beginning of new char. dfont wid=.722226 hei=.694445 dep=0 italic=.0755463 dfont fby="A" kadd=-.0277786 dfont fby="V" kadd=-.0277786 dfont fby="W" kadd=-.0277786 dfont fby="X" kadd=-.0277786 dfont fby="Y" kadd=-.0277786 set path ! start of curve newpath ! start of curve amove .188421 .242117 bezier .227421 .238846 .259736 .203232 .261642 .164015 bezier .272528 .886145E-01 .212275 .811902E-02 .136679 -.976277E-03 aline .035146 -.976277E-03 bezier .519519E-01 .801009E-01 .690768E-01 .161251 .868887E-01 .242117 aline .188421 .242117 closepath ! end of curve ! start of curve amove .112272 .221615 bezier .981053E-01 .153858 .824142E-01 .841086E-01 .693157E-01 .017573 aline .131797 .017573 bezier .180774 .242176E-01 .219652 .670617E-01 .229425 .115201 bezier .238335 .148074 .234914 .1915 .204042 .212828 bezier .195439 .218274 .184892 .221361 .17573 .223567 aline .113248 .223567 closepath ! end of curve fill dfont endchar dfont char="E" !-------------- Beginning of new char. dfont wid=.597224 hei=.694445 dep=0 italic=.119829 set path ! start of curve newpath ! start of curve amove .242117 .24114 aline .242117 .240164 aline .24114 .235283 aline .240164 .231378 aline .238212 .221615 aline .237235 .219662 aline .112272 .219662 bezier .105866 .191606 .988011E-01 .162804 .946989E-01 .134726 aline .2099 .134726 aline .207947 .124963 aline .206971 .121058 aline .205994 .116177 aline .205018 .114224 aline .898175E-01 .114224 bezier .827413E-01 .840791E-01 .757902E-01 .515194E-01 .070292 .224544E-01 aline .126916 .224544E-01 aline .127892 .234307E-01 aline .200137 .234307E-01 aline .200137 .195255E-01 aline .199161 .146442E-01 aline .198184 .010739 aline .196232 .976277E-03 aline .195255 -.976277E-03 aline .341697E-01 -.976277E-03 bezier .510363E-01 .797451E-01 .677257E-01 .160783 .859124E-01 .24114 aline .242117 .24114 closepath ! end of curve fill dfont endchar dfont char="F" !-------------- Beginning of new char. dfont wid=.569448 hei=.694445 dep=0 italic=.133718 dfont fby="A" kadd=-.083334 dfont fby="C" kadd=-.0277786 dfont fby="G" kadd=-.0277786 dfont fby="O" kadd=-.0277786 dfont fby="Q" kadd=-.0277786 dfont fby="a" kadd=-.0277786 dfont fby="e" kadd=-.0277786 dfont fby="o" kadd=-.0277786 dfont fby="r" kadd=-.0277786 dfont fby="u" kadd=-.0277786 set path ! start of curve newpath ! start of curve amove .237235 .24114 aline .237235 .240164 aline .236259 .235283 aline .235283 .231378 aline .23333 .221615 aline .232354 .219662 aline .112272 .219662 bezier .105493 .190316 .984315E-01 .160137 .937226E-01 .130821 aline .199161 .130821 aline .199161 .129845 aline .198184 .124963 aline .197208 .121058 aline .195255 .111296 aline .194279 .110319 aline .888412E-01 .110319 bezier .800479E-01 .07342 .073561 .357649E-01 .644343E-01 -.976277E-03 aline .341697E-01 -.976277E-03 bezier .510363E-01 .797451E-01 .677257E-01 .160783 .859124E-01 .24114 aline .237235 .24114 closepath ! end of curve fill dfont endchar dfont char="G" !-------------- Beginning of new char. dfont wid=.666669 hei=.694445 dep=0 italic=.119829 set path ! start of curve newpath ! start of curve amove .204042 .249927 aline .205018 .248951 aline .212828 .248951 aline .213805 .247974 aline .218686 .247974 aline .223567 .246998 aline .227473 .246022 aline .239188 .242117 aline .256761 .23333 aline .257737 .232354 bezier .25396 .223542 .251639 .212119 .246022 .205018 bezier .214173 .238825 .158276 .234239 .126916 .202089 bezier .937408E-01 .172852 .764663E-01 .126737 .771259E-01 .839598E-01 bezier .796932E-01 .557716E-01 .945959E-01 .206037E-01 .126916 .146442E-01 bezier .147716 .941792E-02 .167949 .150553E-01 .188421 .205018E-01 bezier .193042 .411237E-01 .198689 .622984E-01 .201113 .829836E-01 aline .155228 .829836E-01 aline .156204 .878649E-01 aline .157181 .917701E-01 aline .159133 .101533 aline .160109 .103485 aline .23333 .103485 bezier .226766 .719278E-01 .220715 .399782E-01 .212828 .878649E-02 bezier .178452 -.71992E-02 .138805 -.151505E-01 .102509 -.292883E-02 bezier .628513E-01 .128356E-01 .418389E-01 .595097E-01 .478376E-01 .995803E-01 bezier .514986E-01 .171118 .109288 .240829 .181588 .249927 aline .204042 .249927 closepath ! end of curve fill dfont endchar dfont char="H" !-------------- Beginning of new char. dfont wid=.708338 hei=.694445 dep=0 italic=.0809383 set path ! start of curve newpath ! start of curve amove .116177 .242117 bezier .110101 .206639 .100158 .17069 .946989E-01 .135703 aline .213805 .135703 bezier .222563 .170827 .228634 .206875 .237235 .242117 aline .2675 .242117 bezier .250929 .161052 .233764 .797381E-01 .215757 -.976277E-03 aline .185493 -.976277E-03 bezier .19243 .378073E-01 .203177 .765662E-01 .208923 .115201 aline .898175E-01 .115201 bezier .808103E-01 .766195E-01 .738675E-01 .374014E-01 .644343E-01 -.976277E-03 aline .341697E-01 -.976277E-03 bezier .509757E-01 .080101 .681006E-01 .161251 .859124E-01 .242117 aline .116177 .242117 closepath ! end of curve fill dfont endchar dfont char="I" !-------------- Beginning of new char. dfont wid=.277781 hei=.694445 dep=0 italic=.133718 dfont fby="I" kadd=.0277786 set path ! start of curve newpath ! start of curve amove .116177 .242117 bezier .996054E-01 .161052 .824412E-01 .797385E-01 .644343E-01 -.976277E-03 aline .341697E-01 -.976277E-03 bezier .509757E-01 .080101 .681006E-01 .161251 .859124E-01 .242117 aline .116177 .242117 closepath ! end of curve fill dfont endchar dfont char="J" !-------------- Beginning of new char. dfont wid=.472224 hei=.694445 dep=0 italic=.0809383 set path ! start of curve newpath ! start of curve amove .188421 .242117 bezier .173904 .173135 .160801 .10351 .143513 .035146 bezier .133293 .107513E-01 .109066 -.676934E-02 .829836E-01 -.878649E-02 aline .063458 -.878649E-02 aline .624817E-01 -.781022E-02 aline .556478E-01 -.781022E-02 aline .045885 -.585766E-02 aline .419799E-01 -.488139E-02 aline .302646E-01 -.976277E-03 aline .185493E-01 .488139E-02 bezier .171003E-01 .129567E-01 .243205E-01 .218664E-01 .263595E-01 .302646E-01 aline .273358E-01 .312409E-01 bezier .494728E-01 .139096E-02 .103026 .686748E-02 .116177 .429562E-01 bezier .131108 .109201 .144083 .175925 .159133 .242117 aline .188421 .242117 closepath ! end of curve fill dfont endchar dfont char="K" !-------------- Beginning of new char. dfont wid=.694448 hei=.694445 dep=0 italic=.119829 dfont fby="C" kadd=-.0277786 dfont fby="G" kadd=-.0277786 dfont fby="O" kadd=-.0277786 dfont fby="Q" kadd=-.0277786 set path ! start of curve newpath ! start of curve amove .116177 .242117 bezier .10848 .198791 .967871E-01 .155321 .898175E-01 .112272 bezier .141151 .15567 .192658 .198827 .244069 .242117 aline .276286 .242117 bezier .238085 .210445 .199509 .178535 .162306 .145953 bezier .18448 .968938E-01 .207123 .480297E-01 .229425 -.976277E-03 aline .197208 -.976277E-03 bezier .177368 .415242E-01 .157864 .841638E-01 .138631 .126916 bezier .119915 .110751 .100879 .095028 .820073E-01 .790785E-01 bezier .758077E-01 .524918E-01 .712692E-01 .253596E-01 .644343E-01 -.976277E-03 aline .035146 -.976277E-03 bezier .519519E-01 .801009E-01 .690768E-01 .161251 .868887E-01 .242117 aline .116177 .242117 closepath ! end of curve fill dfont endchar dfont char="L" !-------------- Beginning of new char. dfont wid=.541669 hei=.694445 dep=0 italic=0 dfont fby="T" kadd=-.083334 dfont fby="V" kadd=-.111112 dfont fby="W" kadd=-.111112 dfont fby="Y" kadd=-.083334 set path ! start of curve newpath ! start of curve amove .116177 .242117 bezier .101989 .168197 .837764E-01 .941394E-01 .070292 .205018E-01 aline .162062 .205018E-01 aline .163038 .214781E-01 aline .180611 .214781E-01 aline .180611 .195255E-01 aline .179635 .146442E-01 aline .178659 .010739 aline .176706 .976277E-03 aline .17573 -.976277E-03 aline .341697E-01 -.976277E-03 bezier .509757E-01 .080101 .681006E-01 .161251 .859124E-01 .242117 aline .116177 .242117 closepath ! end of curve fill dfont endchar dfont char="M" !-------------- Beginning of new char. dfont wid=.875005 hei=.694445 dep=0 italic=.0809383 set path ! start of curve newpath ! start of curve amove .126916 .242117 bezier .13029 .230407 .130375 .21859 .13375 .206971 bezier .134553 .19579 .138176 .184993 .138631 .173777 bezier .146976 .132848 .152319 .918347E-01 .159133 .507664E-01 aline .159133 .429562E-01 aline .160109 .419799E-01 aline .160109 .312409E-01 aline .161086 .302646E-01 bezier .199645 .102632 .242852 .172184 .285073 .242117 aline .324124 .242117 bezier .307553 .161052 .290388 .079738 .272381 -.976277E-03 aline .246022 -.976277E-03 bezier .260569 .722228E-01 .277885 .146039 .291907 .218686 bezier .253158 .146455 .20993 .769205E-01 .16792 .683394E-02 aline .143513 .683394E-02 bezier .140405 .176799E-01 .139694 .296968E-01 .136679 .410036E-01 bezier .133596 .623599E-01 .130057 .838062E-01 .12594 .104462 bezier .120631 .143103 .113051 .179489 .110319 .218686 bezier .930019E-01 .145925 .079529 .718457E-01 .624817E-01 -.976277E-03 aline .361223E-01 -.976277E-03 bezier .529281E-01 .080101 .700532E-01 .161251 .878649E-01 .242117 closepath ! end of curve fill dfont endchar dfont char="N" !-------------- Beginning of new char. dfont wid=.708338 hei=.694445 dep=0 italic=.0809383 set path ! start of curve newpath ! start of curve amove .129845 .242117 bezier .151934 .169621 .173573 .961901E-01 .192327 .224544E-01 bezier .209798 .09489 .223332 .169198 .240164 .242117 aline .266524 .242117 bezier .249951 .161052 .232789 .797387E-01 .214781 -.976277E-03 aline .171825 -.976277E-03 bezier .149842 .718328E-01 .128303 .144963 .109343 .218686 bezier .920255E-01 .145925 .785527E-01 .718458E-01 .615055E-01 -.976277E-03 aline .035146 -.976277E-03 bezier .519519E-01 .801009E-01 .690768E-01 .161251 .868887E-01 .242117 aline .129845 .242117 closepath ! end of curve fill dfont endchar dfont char="O" !-------------- Beginning of new char. dfont wid=.736113 hei=.694445 dep=0 italic=.0755463 dfont fby="A" kadd=-.0277786 dfont fby="V" kadd=-.0277786 dfont fby="W" kadd=-.0277786 dfont fby="X" kadd=-.0277786 dfont fby="Y" kadd=-.0277786 set path ! start of curve newpath ! start of curve amove .192327 .249927 bezier .234624 .246609 .267387 .205288 .2675 .164015 bezier .274954 .890169E-01 .220758 .775582E-02 .144489 -.781022E-02 bezier .110387 -.143253E-01 .715727E-01 .183743E-02 .556478E-01 .341697E-01 bezier .247731E-01 .946182E-01 .526393E-01 .170413 .100557 .214781 bezier .125361 .23691 .158362 .25279 .192327 .249927 closepath ! end of curve ! start of curve amove .169872 .227473 bezier .114005 .218469 .800124E-01 .159632 .751733E-01 .10739 aline .741971E-01 .106414 aline .741971E-01 .761496E-01 bezier .781224E-01 .493199E-01 .938429E-01 .170396E-01 .124963 .136679E-01 bezier .154368 .918978E-02 .184624 .293076E-01 .202089 .052719 bezier .226864 .838711E-01 .240343 .124951 .239188 .164015 bezier .236369 .190291 .22154 .220696 .192327 .226496 aline .19135 .227473 aline .186469 .227473 aline .185493 .228449 aline .170849 .228449 aline .169872 .227473 closepath ! end of curve fill dfont endchar dfont char="P" !-------------- Beginning of new char. dfont wid=.638891 hei=.694445 dep=0 italic=.0829268 dfont fby="," kadd=-.083334 dfont fby="." kadd=-.083334 dfont fby="A" kadd=-.083334 dfont fby="a" kadd=-.0277786 dfont fby="e" kadd=-.0277786 dfont fby="o" kadd=-.0277786 set path ! start of curve newpath ! start of curve amove .18354 .242117 bezier .210593 .240175 .239213 .221262 .243093 .192327 bezier .247463 .143047 .19885 .104545 .153276 .100557 aline .878649E-01 .100557 bezier .794814E-01 .669661E-01 .739325E-01 .325007E-01 .654106E-01 -.976277E-03 aline .035146 -.976277E-03 bezier .519519E-01 .801009E-01 .690768E-01 .161251 .868887E-01 .242117 aline .18354 .242117 closepath ! end of curve ! start of curve amove .112272 .221615 bezier .105708 .1878 .964175E-01 .153871 .917701E-01 .120082 aline .150347 .120082 bezier .177369 .123777 .207187 .140483 .213805 .169872 bezier .221493 .190609 .206508 .216702 .18354 .220639 aline .178659 .221615 aline .177682 .222591 aline .172801 .222591 aline .171825 .223567 aline .113248 .223567 closepath ! end of curve fill dfont endchar dfont char="Q" !-------------- Beginning of new char. dfont wid=.736113 hei=.694445 dep=.125 italic=.0755463 set path ! start of curve newpath ! start of curve amove .192327 .249927 bezier .234624 .246609 .267387 .205288 .2675 .164015 bezier .273878 .105264 .240741 .432292E-01 .191155 .111296E-01 bezier .197932 -.785956E-02 .211293 -.260915E-01 .219662 -.449088E-01 aline .184516 -.449088E-01 aline .18354 -.439325E-01 aline .182564 -.410036E-01 aline .164015 -.390511E-02 aline .162062 -.325427E-02 bezier .125457 -.170137E-01 .789839E-01 -.616576E-02 .585766E-01 .292883E-01 bezier .270236E-01 .815763E-01 .460146E-01 .149466 .820073E-01 .195255 bezier .108868 .227677 .14887 .253388 .192327 .249927 closepath ! end of curve ! start of curve amove .169872 .227473 bezier .111037 .217113 .792644E-01 .154579 .722445E-01 .101533 bezier .697836E-01 .700029E-01 .783367E-01 .314927E-01 .110319 .017573 bezier .124403 .113392E-01 .140025 .109801E-01 .154252 .165967E-01 aline .153276 .017573 aline .146442 .312409E-01 aline .145465 .341697E-01 aline .129845 .654106E-01 aline .129845 .663868E-01 aline .160109 .663868E-01 aline .165967 .546715E-01 aline .166943 .536952E-01 aline .171825 .439325E-01 aline .172801 .429562E-01 aline .178659 .312409E-01 aline .180611 .03059 bezier .221941 .059576 .240995 .114301 .239188 .163038 bezier .235704 .189262 .221604 .220102 .192327 .226496 aline .19135 .227473 aline .186469 .227473 aline .185493 .228449 aline .170849 .228449 closepath ! end of curve fill dfont endchar dfont char="R" !-------------- Beginning of new char. dfont wid=.645836 hei=.694445 dep=0 italic=.0829268 set path ! start of curve newpath ! start of curve amove .181588 .242117 bezier .209444 .240145 .242045 .223942 .246998 .193303 bezier .249654 .15136 .209075 .122588 .172383 .113388 bezier .186734 .754722E-01 .20289 .371787E-01 .21771 -.976277E-03 aline .187445 -.976277E-03 bezier .171824 .354617E-01 .159558 .740568E-01 .143513 .110319 aline .888412E-01 .110319 bezier .800479E-01 .07342 .073561 .357649E-01 .644343E-01 -.976277E-03 aline .035146 -.976277E-03 bezier .519519E-01 .801009E-01 .690768E-01 .161251 .868887E-01 .242117 aline .181588 .242117 closepath ! end of curve ! start of curve amove .112272 .221615 bezier .106278 .191411 .983008E-01 .160822 .937226E-01 .130821 aline .154252 .130821 bezier .181197 .134092 .215421 .149762 .218686 .180611 bezier .222084 .195714 .210277 .212572 .195255 .21771 aline .186469 .220639 aline .181588 .221615 aline .180611 .222591 aline .173777 .222591 aline .172801 .223567 aline .113248 .223567 closepath ! end of curve fill dfont endchar dfont char="S" !-------------- Beginning of new char. dfont wid=.555557 hei=.694445 dep=0 italic=.0920515 set path ! start of curve newpath ! start of curve amove .164015 .249927 aline .164991 .248951 aline .172801 .248951 aline .182564 .246998 aline .194279 .243093 aline .207947 .236259 aline .208923 .235283 aline .212828 .23333 aline .213805 .232354 bezier .210027 .223543 .207707 .212118 .202089 .205018 bezier .172104 .239814 .106307 .234234 .888412E-01 .189398 bezier .080701 .1698 .961906E-01 .147022 .117153 .144489 bezier .142119 .138093 .171296 .132918 .184516 .108367 bezier .206514 .652177E-01 .173169 .147418E-01 .131797 -.195255E-02 bezier .949204E-01 -.158476E-01 .051866 -.841267E-02 .205018E-01 .156204E-01 bezier .231768E-01 .247684E-01 .266822E-01 .034513 .312409E-01 .429562E-01 bezier .623602E-01 .119154E-01 .11942 .139964E-02 .150347 .380748E-01 bezier .162673 .541219E-01 .168519 .769288E-01 .154252 .937226E-01 aline .153276 .956752E-01 bezier .129523 .115912 .895752E-01 .107636 .070292 .134726 bezier .497932E-01 .157382 .568183E-01 .192022 .751733E-01 .213805 bezier .968463E-01 .23962 .130717 .25318 .164015 .249927 closepath ! end of curve fill dfont endchar dfont char="T" !-------------- Beginning of new char. dfont wid=.680557 hei=.694445 dep=0 italic=.133718 dfont fby="A" kadd=-.083334 dfont fby="a" kadd=-.083334 dfont fby="e" kadd=-.083334 dfont fby="o" kadd=-.083334 dfont fby="r" kadd=-.083334 dfont fby="u" kadd=-.083334 dfont fby="y" kadd=-.083334 set path ! start of curve newpath ! start of curve amove .278239 .240164 aline .277263 .235283 aline .276286 .231378 aline .274334 .221615 aline .273358 .218686 aline .18354 .218686 bezier .166223 .145925 .152749 .718459E-01 .135703 -.976277E-03 aline .105438 -.976277E-03 bezier .119985 .722228E-01 .137301 .146039 .151323 .218686 aline .605292E-01 .218686 aline .605292E-01 .220639 aline .624817E-01 .230401 aline .063458 .234307 aline .644343E-01 .239188 aline .654106E-01 .240164 closepath ! end of curve fill dfont endchar dfont char="U" !-------------- Beginning of new char. dfont wid=.687505 hei=.694445 dep=0 italic=.0809383 set path ! start of curve newpath ! start of curve amove .116177 .242117 bezier .104802 .182627 .901936E-01 .122006 .790785E-01 .063458 bezier .780665E-01 .421632E-01 .886653E-01 .166457E-01 .112272 .117153E-01 bezier .15128 .184782E-02 .189939 .363816E-01 .198184 .741971E-01 bezier .210495 .130105 .221574 .186329 .234307 .242117 aline .260666 .242117 bezier .248055 .182587 .237246 .12229 .221615 .063458 bezier .201285 .110545E-01 .135004 -.281535E-01 .820073E-01 .976277E-03 bezier .057392 .148231E-01 .449708E-01 .461562E-01 .507664E-01 .732208E-01 bezier .604538E-01 .129731 .738833E-01 .185958 .859124E-01 .242117 aline .116177 .242117 closepath ! end of curve fill dfont endchar dfont char="V" !-------------- Beginning of new char. dfont wid=.66667 hei=.694445 dep=0 italic=.161496 dfont fby="A" kadd=-.083334 dfont fby="C" kadd=-.0277786 dfont fby="G" kadd=-.0277786 dfont fby="O" kadd=-.0277786 dfont fby="Q" kadd=-.0277786 dfont fby="a" kadd=-.0277786 dfont fby="e" kadd=-.0277786 dfont fby="o" kadd=-.0277786 dfont fby="r" kadd=-.0277786 dfont fby="u" kadd=-.0277786 set path ! start of curve newpath ! start of curve amove .898175E-01 .242117 bezier .980274E-01 .191825 .10837 .142004 .115201 .927463E-01 bezier .120443 .700045E-01 .12197 .045723 .12594 .224544E-01 bezier .165009 .982294E-01 .211144 .169447 .254808 .242117 aline .281168 .242117 bezier .232067 .16106 .182868 .08007 .13375 -.976277E-03 aline .101533 -.976277E-03 bezier .932189E-01 .475055E-01 .841955E-01 .963013E-01 .751733E-01 .144489 bezier .695811E-01 .177335 .634631E-01 .209692 .576004E-01 .242117 aline .898175E-01 .242117 closepath ! end of curve fill dfont endchar dfont char="W" !-------------- Beginning of new char. dfont wid=.944448 hei=.694445 dep=0 italic=.161496 dfont fby="A" kadd=-.083334 dfont fby="C" kadd=-.0277786 dfont fby="G" kadd=-.0277786 dfont fby="O" kadd=-.0277786 dfont fby="Q" kadd=-.0277786 dfont fby="a" kadd=-.0277786 dfont fby="e" kadd=-.0277786 dfont fby="o" kadd=-.0277786 dfont fby="r" kadd=-.0277786 dfont fby="u" kadd=-.0277786 set path ! start of curve newpath ! start of curve amove .868887E-01 .242117 aline .878649E-01 .24114 aline .878649E-01 .230401 bezier .912728E-01 .19624 .941676E-01 .161865 .956752E-01 .126916 aline .966514E-01 .12594 aline .966514E-01 .112272 aline .976277E-01 .111296 aline .976277E-01 .966514E-01 aline .098604 .956752E-01 aline .098604 .781022E-01 aline .995803E-01 .771259E-01 aline .995803E-01 .488139E-01 aline .100557 .478376E-01 aline .100557 .361223E-01 aline .995803E-01 .035146 aline .995803E-01 .234307E-01 aline .100557 .224544E-01 bezier .109138 .04958 .123267 .745632E-01 .134726 .100557 aline .197208 .22552 aline .205018 .24114 aline .205994 .242117 aline .23333 .242117 bezier .237662 .193775 .241793 .146412 .244069 .976277E-01 aline .245046 .966514E-01 aline .245046 .081031 aline .246022 .800547E-01 aline .246022 .615055E-01 aline .246998 .605292E-01 aline .246998 .244069E-01 aline .247974 .234307E-01 bezier .255116 .439634E-01 .265592 .631142E-01 .274334 .829836E-01 aline .296788 .127892 aline .297765 .130821 aline .323148 .181588 aline .324124 .182564 aline .353412 .24114 aline .354389 .242117 aline .378796 .242117 aline .350484 .185493 aline .349507 .184516 aline .312409 .110319 aline .311432 .109343 aline .27531 .370985E-01 aline .274334 .361223E-01 aline .255785 -.976277E-03 aline .22552 -.976277E-03 aline .22552 .976277E-02 aline .224544 .010739 aline .224544 .214781E-01 aline .223567 .224544E-01 aline .223567 .331934E-01 aline .222591 .341697E-01 aline .222591 .045885 aline .221615 .468613E-01 aline .221615 .585766E-01 aline .220639 .595529E-01 aline .220639 .070292 aline .219662 .712682E-01 aline .219662 .839598E-01 aline .218686 .849361E-01 aline .218686 .966514E-01 aline .21771 .976277E-01 aline .21771 .110319 aline .216734 .111296 aline .216734 .123987 aline .215757 .124963 aline .215757 .138631 aline .214781 .139608 aline .214781 .155228 aline .213805 .156204 aline .213805 .172801 aline .212828 .173777 aline .212828 .21771 aline .211852 .218686 bezier .204945 .198843 .194952 .180277 .186469 .161086 aline .168896 .12594 aline .16792 .123011 aline .128869 .449088E-01 aline .127892 .439325E-01 aline .105438 -.976277E-03 aline .771259E-01 -.976277E-03 aline .771259E-01 .976277E-02 aline .761496E-01 .010739 aline .761496E-01 .224544E-01 aline .751733E-01 .234307E-01 aline .751733E-01 .341697E-01 aline .741971E-01 .035146 aline .741971E-01 .045885 aline .732208E-01 .468613E-01 aline .732208E-01 .576004E-01 aline .722445E-01 .585766E-01 aline .722445E-01 .070292 aline .712682E-01 .712682E-01 aline .712682E-01 .820073E-01 aline .070292 .829836E-01 aline .070292 .937226E-01 aline .693157E-01 .946989E-01 aline .693157E-01 .106414 aline .683394E-01 .10739 aline .683394E-01 .11813 aline .673631E-01 .119106 aline .673631E-01 .129845 aline .663868E-01 .130821 aline .663868E-01 .14156 aline .654106E-01 .142536 aline .654106E-01 .154252 aline .644343E-01 .155228 aline .644343E-01 .165967 aline .063458 .166943 aline .063458 .177682 aline .624817E-01 .178659 aline .624817E-01 .189398 aline .615055E-01 .190374 aline .615055E-01 .202089 aline .605292E-01 .203066 aline .605292E-01 .213805 aline .595529E-01 .214781 aline .595529E-01 .22552 aline .585766E-01 .226496 aline .585766E-01 .238212 aline .576004E-01 .239188 aline .576004E-01 .242117 aline .868887E-01 .242117 closepath ! end of curve ! start of curve amove .246998 .224544E-01 aline .247974 .234307E-01 aline .246998 .244069E-01 aline .246022 .234307E-01 aline .246998 .224544E-01 closepath ! end of curve fill dfont endchar dfont char="X" !-------------- Beginning of new char. dfont wid=.66667 hei=.694445 dep=0 italic=.133718 dfont fby="C" kadd=-.0277786 dfont fby="G" kadd=-.0277786 dfont fby="O" kadd=-.0277786 dfont fby="Q" kadd=-.0277786 set path ! start of curve newpath ! start of curve amove .098604 .242117 bezier .115098 .211687 .130918 .180772 .147418 .150347 bezier .176356 .18072 .204749 .211486 .23333 .242117 aline .266524 .242117 bezier .229744 .203956 .193364 .165508 .157181 .126916 bezier .181752 .846387E-01 .205178 .415354E-01 .229425 -.976277E-03 aline .193303 -.976277E-03 aline .184516 .165967E-01 aline .18354 .017573 aline .166943 .507664E-01 aline .165967 .517427E-01 aline .148394 .868887E-01 aline .147418 .878649E-01 aline .138631 .105438 aline .137655 .106414 bezier .104883 .070548 .719367E-01 .348074E-01 .390511E-01 -.976277E-03 aline .585766E-02 -.976277E-03 bezier .471356E-01 .412221E-01 .866139E-01 .847171E-01 .127892 .126916 bezier .105789 .1651 .084621 .203959 .624817E-01 .242117 closepath ! end of curve fill dfont endchar dfont char="Y" !-------------- Beginning of new char. dfont wid=.66667 hei=.694445 dep=0 italic=.172607 dfont fby="A" kadd=-.083334 dfont fby="a" kadd=-.083334 dfont fby="e" kadd=-.083334 dfont fby="o" kadd=-.083334 dfont fby="r" kadd=-.083334 dfont fby="u" kadd=-.083334 set path ! start of curve newpath ! start of curve amove .898175E-01 .242117 bezier .109435 .201783 .128553 .160948 .146442 .120082 bezier .181102 .161814 .218668 .20145 .254808 .242117 aline .285073 .242117 bezier .240882 .193816 .196976 .145308 .153276 .966514E-01 bezier .145476 .642743E-01 .13996 .312108E-01 .131797 -.976277E-03 aline .102509 -.976277E-03 bezier .108704 .318932E-01 .116758 .652899E-01 .123011 .976277E-01 bezier .987937E-01 .14511 .771616E-01 .19414 .536952E-01 .242117 closepath ! end of curve fill dfont endchar dfont char="Z" !-------------- Beginning of new char. dfont wid=.611113 hei=.694445 dep=0 italic=.119829 set path ! start of curve newpath ! start of curve amove .246998 .242117 bezier .247363 .224958 .23101 .21587 .222591 .203066 bezier .169408 .142872 .117559 .817151E-01 .644343E-01 .214781E-01 aline .654106E-01 .205018E-01 aline .122035 .205018E-01 aline .123011 .214781E-01 aline .202089 .214781E-01 aline .202089 .195255E-01 aline .201113 .146442E-01 aline .200137 .010739 aline .198184 .976277E-03 aline .197208 -.976277E-03 aline .205018E-01 -.976277E-03 aline .205018E-01 0 aline .224544E-01 .976277E-02 aline .234307E-01 .136679E-01 bezier .836523E-01 .824113E-01 .143479 .151437 .203066 .220639 aline .202089 .221615 aline .732208E-01 .221615 aline .732208E-01 .22552 aline .741971E-01 .230401 aline .751733E-01 .234307 aline .761496E-01 .239188 aline .771259E-01 .242117 aline .246998 .242117 closepath ! end of curve fill dfont endchar dfont char="[" !-------------- Beginning of new char. dfont wid=.28889 hei=.75 dep=.25 italic=.159416 set path ! start of curve newpath ! start of curve amove .150347 .261642 aline .150347 .258713 aline .148394 .248951 aline .146442 .24114 aline .113248 .24114 bezier .898788E-01 .139538 .694355E-01 .363295E-01 .472274E-01 -.658987E-01 aline .478376E-01 -.683394E-01 aline .800547E-01 -.683394E-01 aline .800547E-01 -.722445E-01 aline .790785E-01 -.771259E-01 aline .781022E-01 -.081031 aline .771259E-01 -.859124E-01 aline .761496E-01 -.888412E-01 aline .017573 -.888412E-01 bezier .415395E-01 .280624E-01 .669706E-01 .144845 .917701E-01 .261642 aline .150347 .261642 closepath ! end of curve fill dfont endchar dfont char="\" !-------------- Beginning of new char. dfont wid=.500002 hei=.694445 dep=0 italic=.142052 set path ! start of curve newpath ! start of curve amove .148394 .242117 bezier .142433 .227577 .133438 .212697 .129845 .198184 aline .137655 .198184 aline .137655 .194279 aline .136679 .189398 aline .135703 .185493 aline .132774 .170849 aline .131797 .169872 aline .103485 .169872 aline .106414 .184516 bezier .109489 .205352 .124347 .221328 .132774 .240164 aline .134726 .242117 closepath ! end of curve ! start of curve amove .216734 .242117 bezier .210771 .227577 .201777 .212697 .198184 .198184 aline .205994 .198184 aline .205994 .194279 aline .205018 .189398 aline .204042 .185493 aline .201113 .170849 aline .200137 .169872 aline .171825 .169872 aline .174754 .184516 bezier .177828 .205351 .192687 .221327 .201113 .240164 aline .203066 .242117 closepath ! end of curve fill dfont endchar dfont char="]" !-------------- Beginning of new char. dfont wid=.28889 hei=.75 dep=.25 italic=.0871935 set path ! start of curve newpath ! start of curve amove .122035 .261642 bezier .984852E-01 .144698 .730345E-01 .278279E-01 .478376E-01 -.888412E-01 aline -.010739 -.888412E-01 aline -.010739 -.868887E-01 aline -.976277E-02 -.820073E-01 aline -.878649E-02 -.781022E-01 aline -.683394E-02 -.683394E-01 aline .273358E-01 -.683394E-01 bezier .490266E-01 .345543E-01 .720875E-01 .139476 .927463E-01 .24114 aline .595529E-01 .24114 aline .595529E-01 .244069 aline .605292E-01 .247974 aline .624817E-01 .257737 aline .063458 .261642 aline .122035 .261642 closepath ! end of curve fill dfont endchar dfont char="^" !-------------- Beginning of new char. dfont wid=.500002 hei=.694445 dep=0 italic=.079895 set path ! start of curve newpath ! start of curve amove .150347 .242117 bezier .162866 .223097 .17604 .203987 .187445 .184516 aline .166943 .184516 bezier .157226 .199101 .147226 .213484 .136679 .227473 bezier .120969 .212826 .104366 .19942 .888412E-01 .184516 aline .673631E-01 .184516 bezier .885591E-01 .203205 .108952 .223007 .129845 .242117 aline .150347 .242117 closepath ! end of curve fill dfont endchar dfont char="_" !-------------- Beginning of new char. dfont wid=.277779 hei=.679365 dep=0 italic=.0777359 set path ! start of curve newpath ! start of curve amove .115201 .238212 aline .115201 .235283 aline .114224 .231378 aline .111296 .216734 aline .110319 .212828 aline .109343 .207947 aline .790785E-01 .207947 aline .790785E-01 .211852 aline .800547E-01 .215757 aline .829836E-01 .230401 aline .849361E-01 .238212 aline .115201 .238212 closepath ! end of curve fill dfont endchar dfont char="`" !-------------- Beginning of new char. dfont wid=.277779 hei=.694445 dep=0 italic=.0781631 set path ! start of curve newpath ! start of curve amove .116177 .242117 bezier .110216 .227577 .10122 .212697 .976277E-01 .198184 aline .105438 .198184 aline .105438 .194279 aline .104462 .189398 aline .103485 .185493 aline .100557 .170849 aline .995803E-01 .169872 aline .712682E-01 .169872 aline .741971E-01 .184516 bezier .772726E-01 .205351 .921296E-01 .221328 .100557 .240164 aline .102509 .242117 closepath ! end of curve fill dfont endchar dfont char="a" !-------------- Beginning of new char. dfont wid=.480557 hei=.444445 dep=0 italic=.00980663 dfont fby="r" kadd=-.0277786 dfont fby="w" kadd=-.0277786 dfont fby="y" kadd=-.0277786 set path ! start of curve newpath ! start of curve amove .124963 .160109 bezier .149465 .158375 .169509 .131418 .163038 .10739 bezier .157452 .711004E-01 .148649 .034848 .140584 -.976277E-03 aline .115201 -.976277E-03 aline .115201 0 aline .116763 .781022E-02 aline .116177 .010739 bezier .944213E-01 -.275855E-02 .686462E-01 -.670387E-02 .439325E-01 -.390511E-02 bezier .175509E-01 .610981E-02 .178871E-01 .479659E-01 .410036E-01 .615055E-01 bezier .661635E-01 .811758E-01 .997667E-01 .822468E-01 .128869 .849361E-01 aline .132064 .857349E-01 bezier .136668 .101812 .141568 .118233 .130821 .132774 bezier .116187 .14644 .961446E-01 .138543 .790785E-01 .13375 aline .771259E-01 .132774 aline .741971E-01 .131797 aline .644343E-01 .126916 aline .063458 .12594 aline .595529E-01 .123987 aline .585766E-01 .123011 aline .566241E-01 .122035 aline .566241E-01 .12594 aline .576004E-01 .126916 aline .576004E-01 .13375 aline .585766E-01 .134726 aline .585766E-01 .14156 aline .595529E-01 .144489 bezier .794292E-01 .156935 .102209 .161029 .124963 .160109 closepath ! end of curve ! start of curve amove .115201 .663868E-01 bezier .959756E-01 .659565E-01 .761466E-01 .615219E-01 .585766E-01 .517427E-01 bezier .457314E-01 .437381E-01 .467968E-01 .222021E-01 .624817E-01 .185493E-01 bezier .808479E-01 .118726E-01 .101962 .170767E-01 .117153 .292883E-01 aline .11813 .312409E-01 aline .119106 .322171E-01 aline .122035 .380748E-01 aline .123987 .045885 aline .126916 .605292E-01 aline .127892 .644343E-01 aline .128625 .658987E-01 aline .127892 .673631E-01 aline .116177 .673631E-01 aline .115201 .663868E-01 closepath ! end of curve ! start of curve amove .116177 .010739 aline .117153 .976277E-02 aline .11813 .010739 aline .117153 .117153E-01 aline .116177 .010739 closepath ! end of curve fill dfont endchar dfont char="b" !-------------- Beginning of new char. dfont wid=.516668 hei=.694445 dep=0 italic=.0305681 dfont fby="c" kadd=.0277786 dfont fby="d" kadd=.0277786 dfont fby="e" kadd=.0277786 dfont fby="o" kadd=.0277786 dfont fby="q" kadd=.0277786 dfont fby="r" kadd=-.0277786 dfont fby="w" kadd=-.0277786 dfont fby="x" kadd=-.0277786 dfont fby="y" kadd=-.0277786 set path ! start of curve newpath ! start of curve amove .10739 .242117 bezier .101616 .207725 .918264E-01 .173465 .867492E-01 .139189 bezier .107482 .152045 .134152 .162906 .159133 .156204 bezier .186243 .144252 .192134 .108883 .186469 .839598E-01 bezier .182131 .446747E-01 .153857 .702069E-02 .115201 -.390511E-02 bezier .959389E-01 -.777292E-02 .736127E-01 -.202997E-02 .610173E-01 .144001E-01 aline .603897E-01 .140863E-01 aline .595529E-01 .010739 aline .576004E-01 .976277E-03 aline .566241E-01 -.976277E-03 aline .302646E-01 -.976277E-03 bezier .470706E-01 .080101 .641955E-01 .161251 .820073E-01 .242117 aline .10739 .242117 closepath ! end of curve ! start of curve amove .117153 .136679 bezier .103307 .13466 .904351E-01 .126921 .820073E-01 .116177 bezier .766452E-01 .089863 .703081E-01 .629622E-01 .654106E-01 .370985E-01 aline .663868E-01 .361223E-01 bezier .704026E-01 .213398E-01 .087513 .121129E-01 .101533 .165967E-01 bezier .131956 .020153 .154313 .485122E-01 .159133 .781022E-01 bezier .164986 .983423E-01 .160342 .129083 .135703 .135703 aline .130821 .136679 aline .129845 .137655 aline .11813 .137655 closepath ! end of curve fill dfont endchar dfont char="c" !-------------- Beginning of new char. dfont wid=.444446 hei=.444445 dep=0 italic=.0833569 set path ! start of curve newpath ! start of curve amove .136679 .160109 bezier .150374 .159138 .164555 .152992 .17573 .144489 aline .174754 .14156 aline .173777 .139608 aline .172801 .136679 aline .171825 .134726 aline .169872 .128869 aline .168896 .126916 aline .16792 .123987 aline .166943 .122035 bezier .139491 .148333 .899211E-01 .143136 .070292 .109343 bezier .545814E-01 .835209E-01 .449359E-01 .461393E-01 .070292 .234307E-01 bezier .967139E-01 .822215E-02 .127726 .211965E-01 .152299 .035146 aline .152299 .322171E-01 aline .151323 .312409E-01 aline .151323 .244069E-01 aline .150347 .234307E-01 aline .150347 .165967E-01 aline .14937 .126916E-01 bezier .117401 -.706921E-02 .692578E-01 -.160474E-01 .419799E-01 .156204E-01 bezier .981095E-02 .596576E-01 .381533E-01 .123622 .820073E-01 .148394 aline .829836E-01 .14937 aline .907938E-01 .153276 aline .937226E-01 .154252 aline .956752E-01 .155228 aline .104462 .158157 aline .109343 .159133 aline .114224 .159133 aline .115201 .160109 aline .136679 .160109 closepath ! end of curve fill dfont endchar dfont char="d" !-------------- Beginning of new char. dfont wid=.516668 hei=.694445 dep=0 italic=.0948286 set path ! start of curve newpath ! start of curve amove .204042 .242117 bezier .18747 .161052 .170306 .797381E-01 .152299 -.976277E-03 aline .12594 -.976277E-03 aline .12594 0 aline .127892 .976277E-02 aline .128869 .136679E-01 aline .129601 .151323E-01 aline .128869 .165967E-01 bezier .107649 -.607699E-03 .752721E-01 -.137156E-01 .497901E-01 .195255E-02 bezier .327137E-01 .150445E-01 .253194E-01 .388469E-01 .028312 .585766E-01 bezier .287725E-01 .10049 .564508E-01 .144199 .976277E-01 .157181 bezier .118095 .160683 .141941 .155654 .156204 .138631 bezier .163979 .173056 .170498 .207804 .178659 .242117 aline .204042 .242117 closepath ! end of curve ! start of curve amove .114224 .136679 bezier .811677E-01 .133032 .582388E-01 .998318E-01 .556478E-01 .683394E-01 bezier .505038E-01 .477547E-01 .604654E-01 .019234 .849361E-01 .165967E-01 bezier .10398 .122781E-01 .124754 .025506 .134726 .419799E-01 bezier .139728 .067632 .146871 .936317E-01 .150347 .119106 aline .148394 .123011 aline .147418 .123987 aline .146442 .12594 aline .140584 .131797 aline .132774 .135703 aline .127892 .136679 aline .126916 .137655 aline .115201 .137655 aline .114224 .136679 closepath ! end of curve fill dfont endchar dfont char="e" !-------------- Beginning of new char. dfont wid=.444446 hei=.444445 dep=0 italic=.0677776 set path ! start of curve newpath ! start of curve amove .124963 .160109 bezier .148762 .158626 .1684 .135674 .165967 .111296 aline .166943 .110319 aline .166943 .102509 aline .165967 .101533 aline .165967 .917701E-01 aline .164991 .907938E-01 aline .164991 .849361E-01 aline .164015 .839598E-01 aline .164015 .790785E-01 aline .163038 .761496E-01 aline .536952E-01 .761496E-01 bezier .460039E-01 .533651E-01 .581613E-01 .205413E-01 .849361E-01 .165967E-01 bezier .10719 .128899E-01 .131026 .229263E-01 .150347 .035146 aline .150347 .322171E-01 aline .14937 .312409E-01 aline .14937 .234307E-01 aline .148394 .224544E-01 aline .148394 .156204E-01 bezier .13716 .448294E-02 .119909 -.37602E-03 .104462 -.390511E-02 bezier .835737E-01 -.697513E-02 .581837E-01 -.429592E-02 .439325E-01 .136679E-01 bezier .014857 .455189E-01 .275654E-01 .955555E-01 .052719 .12594 bezier .707448E-01 .146784 .967787E-01 .162912 .124963 .160109 closepath ! end of curve ! start of curve amove .10739 .138631 bezier .848446E-01 .134937 .065757 .114182 .595529E-01 .946989E-01 aline .147418 .946989E-01 aline .148394 .956752E-01 bezier .149689 .113671 .14119 .136615 .120082 .138631 aline .119106 .139608 aline .108367 .139608 closepath ! end of curve fill dfont endchar dfont char="f" !-------------- Beginning of new char. dfont wid=.305557 hei=.694445 dep=0 italic=.217052 dfont fby=33 kadd=.0694447 dfont fby=39 kadd=.0694447 dfont fby=")" kadd=.0694447 dfont fby="?" kadd=.0694447 dfont fby="]" kadd=.0694447 dfont fby="f" ligrep=11 dfont fby="i" ligrep=12 dfont fby="l" ligrep=13 set path ! start of curve newpath ! start of curve amove .156204 .246022 aline .157181 .245046 aline .163038 .245046 aline .16792 .244069 aline .171825 .243093 aline .173777 .242117 aline .173777 .240164 aline .172801 .235283 aline .171825 .231378 aline .169872 .221615 aline .168896 .219662 bezier .14866 .229694 .118853 .227816 .106414 .205994 aline .105438 .203066 aline .104462 .199161 aline .102509 .189398 aline .101533 .185493 aline .098604 .170849 aline .976277E-01 .166943 aline .956752E-01 .157181 aline .094943 .155716 aline .956752E-01 .154252 aline .13375 .154252 aline .13375 .153276 aline .130821 .138631 aline .129845 .134726 aline .917701E-01 .134726 bezier .819322E-01 .895303E-01 .731351E-01 .043928 .624817E-01 -.976277E-03 aline .370985E-01 -.976277E-03 bezier .452607E-01 .443367E-01 .578479E-01 .894571E-01 .644343E-01 .134726 aline .390511E-01 .134726 aline .390511E-01 .137655 aline .419799E-01 .152299 aline .429562E-01 .154252 aline .693157E-01 .154252 bezier .075596 .176498 .766181E-01 .20178 .927463E-01 .219662 bezier .108219 .238025 .131874 .248979 .156204 .246022 closepath ! end of curve fill dfont endchar dfont char="g" !-------------- Beginning of new char. dfont wid=.500002 hei=.444445 dep=.194445 italic=.108357 dfont fby="j" kadd=.0277786 set path ! start of curve newpath ! start of curve amove .119106 .158157 bezier .128605 .157568 .136089 .151672 .144001 .147784 aline .146442 .148394 aline .158157 .152299 aline .169872 .155228 aline .174754 .156204 aline .179635 .156204 aline .180611 .157181 aline .188421 .157181 aline .189398 .158157 aline .201113 .158157 aline .201113 .147418 aline .200137 .146442 aline .200137 .136679 aline .194279 .136679 aline .193303 .137655 aline .164991 .137655 aline .164015 .136679 aline .152299 .136679 aline .151323 .135703 bezier .169098 .102679 .142989 .615403E-01 .110319 .488139E-01 bezier .936601E-01 .421637E-01 .733759E-01 .432887E-01 .590648E-01 .544275E-01 bezier .497919E-01 .468284E-01 .047564 .026404 .615055E-01 .224544E-01 aline .111296 .224544E-01 bezier .128958 .207968E-01 .153155 .162384E-01 .160109 -.390511E-02 bezier .165351 -.215316E-01 .158896 -.422988E-01 .142536 -.052719 bezier .111937 -.757838E-01 .708634E-01 -.794999E-01 .035146 -.683394E-01 bezier .169949E-01 -.616398E-01 -.991961E-03 -.444807E-01 .585766E-02 -.234307E-01 bezier .106135E-01 -.832786E-02 .023083 .243126E-02 .358782E-01 .102509E-01 bezier .264279E-01 .293067E-01 .347404E-01 .528429E-01 .497901E-01 .663868E-01 bezier .295913E-01 .105065 .650387E-01 .15267 .105438 .158157 closepath ! end of curve ! start of curve amove .102509 .138631 bezier .773656E-01 .134797 .064526 .104731 .683394E-01 .829836E-01 bezier .699072E-01 .669552E-01 .892793E-01 .594084E-01 .102509 .654106E-01 bezier .125123 .713919E-01 .134086 .975687E-01 .13375 .11813 aline .132774 .119106 aline .131797 .123987 aline .127892 .131797 aline .12594 .13375 aline .123987 .134726 aline .123011 .135703 aline .121058 .136679 aline .11813 .137655 aline .114224 .138631 aline .113248 .139608 aline .103485 .139608 closepath ! end of curve ! start of curve amove .536952E-01 -.292883E-02 bezier .360259E-01 -.561863E-02 .190437E-01 -.299747E-01 .035146 -.439325E-01 bezier .648474E-01 -.626244E-01 .106079 -.591011E-01 .132774 -.361223E-01 bezier .141135 -.266175E-01 .137689 -.107236E-01 .124963 -.683394E-02 aline .122035 -.585766E-02 aline .114224 -.390511E-02 aline .113248 -.292883E-02 aline .106414 -.292883E-02 aline .105438 -.195255E-02 aline .546715E-01 -.195255E-02 closepath ! end of curve fill dfont endchar dfont char="h" !-------------- Beginning of new char. dfont wid=.516668 hei=.694445 dep=0 italic=.0177784 set path ! start of curve newpath ! start of curve amove .106414 .242117 bezier .100449 .205912 .896801E-01 .169852 .849361E-01 .13375 bezier .106094 .156155 .14537 .168972 .170849 .147418 bezier .185005 .126959 .174515 .101524 .170849 .790785E-01 bezier .164649 .052492 .16011 .253599E-01 .153276 -.976277E-03 aline .126916 -.976277E-03 bezier .134385 .351019E-01 .141412 .071967 .150347 .10739 aline .150347 .120082 aline .14937 .121058 bezier .1457 .137694 .123646 .140337 .110319 .135703 bezier .756793E-01 .121477 .737752E-01 .787562E-01 .663868E-01 .468613E-01 aline .654106E-01 .429562E-01 aline .063458 .331934E-01 aline .624817E-01 .292883E-01 aline .595529E-01 .146442E-01 aline .585766E-01 .010739 aline .566241E-01 .976277E-03 aline .556478E-01 -.976277E-03 aline .292883E-01 -.976277E-03 bezier .460943E-01 .801009E-01 .632192E-01 .161251 .081031 .242117 aline .106414 .242117 closepath ! end of curve ! start of curve amove .839598E-01 .132774 aline .849361E-01 .13375 aline .839598E-01 .134726 aline .829836E-01 .13375 aline .839598E-01 .132774 closepath ! end of curve fill dfont endchar dfont char="i" !-------------- Beginning of new char. dfont wid=.23889 hei=.679365 dep=0 italic=.0971804 set path ! start of curve newpath ! start of curve amove .108367 .238212 aline .108367 .235283 aline .10739 .231378 aline .104462 .216734 aline .103485 .212828 aline .102509 .207947 aline .722445E-01 .207947 aline .722445E-01 .211852 aline .732208E-01 .215757 aline .761496E-01 .230401 aline .781022E-01 .238212 aline .108367 .238212 closepath ! end of curve ! start of curve amove .888412E-01 .154252 bezier .782003E-01 .102484 .675088E-01 .504498E-01 .556478E-01 -.976277E-03 aline .302646E-01 -.976277E-03 bezier .040915 .507899E-01 .516092E-01 .102823 .063458 .154252 aline .888412E-01 .154252 closepath ! end of curve fill dfont endchar dfont char="j" !-------------- Beginning of new char. dfont wid=.266668 hei=.679365 dep=.194445 italic=.0916243 set path ! start of curve newpath ! start of curve amove .116177 .238212 aline .116177 .235283 aline .115201 .231378 aline .112272 .216734 aline .111296 .212828 aline .110319 .207947 aline .800547E-01 .207947 aline .800547E-01 .211852 aline .081031 .215757 aline .839598E-01 .230401 aline .859124E-01 .238212 aline .116177 .238212 closepath ! end of curve ! start of curve amove .098604 .154252 bezier .852039E-01 .911214E-01 .730855E-01 .274808E-01 .576004E-01 -.035146 bezier .479286E-01 -.576117E-01 .236046E-01 -.785729E-01 -.195255E-02 -.722445E-01 bezier -.129421E-01 -.722137E-01 -.260018E-01 -.682549E-01 -.331934E-01 -.605292E-01 aline -.292883E-01 -.052719 aline -.028312 -.497901E-01 aline -.244069E-01 -.419799E-01 aline -.234307E-01 -.410036E-01 bezier -.741093E-02 -.059761 .293827E-01 -.527273E-01 .341697E-01 -.273358E-01 bezier .472737E-01 .331524E-01 .593324E-01 .940481E-01 .732208E-01 .154252 aline .098604 .154252 closepath ! end of curve fill dfont endchar dfont char="k" !-------------- Beginning of new char. dfont wid=.488892 hei=.694445 dep=0 italic=.0833569 dfont fby="a" kadd=-.0277786 dfont fby="c" kadd=-.0277786 dfont fby="e" kadd=-.0277786 dfont fby="o" kadd=-.0277786 set path ! start of curve newpath ! start of curve amove .106414 .242117 bezier .963976E-01 .188424 .827823E-01 .134196 .732208E-01 .081031 bezier .101815 .105949 .13133 .129591 .160109 .154252 aline .190374 .154252 bezier .167023 .133513 .14229 .114693 .119106 .937226E-01 aline .120082 .927463E-01 aline .131797 .693157E-01 aline .132774 .663868E-01 aline .154252 .234307E-01 aline .155228 .205018E-01 aline .165967 -.976277E-03 aline .137655 -.976277E-03 aline .134726 .488139E-02 aline .13375 .781022E-02 aline .112272 .507664E-01 aline .111296 .536952E-01 aline .999057E-01 .076475 bezier .914662E-01 .736043E-01 .851376E-01 .643652E-01 .771259E-01 .595529E-01 aline .722445E-01 .546715E-01 aline .070292 .536952E-01 aline .663868E-01 .497901E-01 aline .652153E-01 .492044E-01 aline .644343E-01 .468613E-01 aline .063458 .429562E-01 aline .615055E-01 .331934E-01 aline .605292E-01 .292883E-01 aline .576004E-01 .146442E-01 aline .566241E-01 .010739 aline .546715E-01 .976277E-03 aline .536952E-01 -.976277E-03 aline .302646E-01 -.976277E-03 bezier .470706E-01 .080101 .641955E-01 .161251 .820073E-01 .242117 aline .106414 .242117 closepath ! end of curve fill dfont endchar dfont char="l" !-------------- Beginning of new char. dfont wid=.23889 hei=.694445 dep=0 italic=.0948286 set path ! start of curve newpath ! start of curve amove .10739 .242117 bezier .908193E-01 .161052 .736545E-01 .797385E-01 .556478E-01 -.976277E-03 aline .302646E-01 -.976277E-03 bezier .470706E-01 .080101 .641955E-01 .161251 .820073E-01 .242117 aline .10739 .242117 closepath ! end of curve fill dfont endchar dfont char="m" !-------------- Beginning of new char. dfont wid=.794447 hei=.444445 dep=0 italic=.0177784 set path ! start of curve newpath ! start of curve amove .147418 .158157 bezier .161394 .15699 .176248 .147199 .177682 .131797 aline .178659 .129845 bezier .199456 .153886 .237096 .168339 .265547 .150347 bezier .28209 .133946 .274287 .108924 .270429 .888412E-01 bezier .263824 .589451E-01 .258336 .286252E-01 .250903 -.976277E-03 aline .224544 -.976277E-03 bezier .232011 .351022E-01 .239041 .719656E-01 .247974 .10739 aline .247974 .120082 aline .246998 .121058 bezier .243328 .137694 .221274 .140337 .207947 .135703 bezier .173307 .121478 .171402 .787563E-01 .164015 .468613E-01 aline .163038 .429562E-01 aline .161086 .331934E-01 aline .160109 .292883E-01 aline .157181 .146442E-01 aline .156204 .010739 aline .154252 .976277E-03 aline .153276 -.976277E-03 aline .126916 -.976277E-03 bezier .134385 .351019E-01 .141412 .071967 .150347 .10739 aline .150347 .120082 aline .14937 .121058 bezier .1457 .137694 .123646 .140337 .110319 .135703 bezier .756793E-01 .121477 .737752E-01 .787562E-01 .663868E-01 .468613E-01 aline .654106E-01 .429562E-01 aline .063458 .331934E-01 aline .624817E-01 .292883E-01 aline .595529E-01 .146442E-01 aline .585766E-01 .010739 aline .566241E-01 .976277E-03 aline .556478E-01 -.976277E-03 aline .292883E-01 -.976277E-03 bezier .398122E-01 .514906E-01 .513972E-01 .103823 .624817E-01 .156204 aline .868887E-01 .156204 aline .868887E-01 .153276 aline .839598E-01 .138631 aline .829836E-01 .134726 aline .822513E-01 .133262 aline .829836E-01 .131797 bezier .992919E-01 .149627 .123197 .160617 .147418 .158157 closepath ! end of curve fill dfont endchar dfont char="n" !-------------- Beginning of new char. dfont wid=.516668 hei=.444445 dep=0 italic=.0177784 set path ! start of curve newpath ! start of curve amove .147418 .158157 bezier .161394 .15699 .176248 .147199 .177682 .131797 bezier .177863 .923667E-01 .163471 .538272E-01 .157181 .146442E-01 aline .156204 .010739 aline .154252 .976277E-03 aline .153276 -.976277E-03 aline .126916 -.976277E-03 bezier .134385 .351019E-01 .141412 .071967 .150347 .10739 aline .150347 .120082 aline .14937 .121058 bezier .1457 .137694 .123646 .140337 .110319 .135703 bezier .756793E-01 .121477 .737752E-01 .787562E-01 .663868E-01 .468613E-01 aline .654106E-01 .429562E-01 aline .063458 .331934E-01 aline .624817E-01 .292883E-01 aline .595529E-01 .146442E-01 aline .585766E-01 .010739 aline .566241E-01 .976277E-03 aline .556478E-01 -.976277E-03 aline .292883E-01 -.976277E-03 bezier .398122E-01 .514906E-01 .513972E-01 .103823 .624817E-01 .156204 aline .868887E-01 .156204 aline .868887E-01 .153276 aline .839598E-01 .138631 aline .829836E-01 .134726 aline .822513E-01 .133262 aline .829836E-01 .131797 bezier .992919E-01 .149627 .123197 .160617 .147418 .158157 closepath ! end of curve fill dfont endchar dfont char="o" !-------------- Beginning of new char. dfont wid=.500002 hei=.444445 dep=0 italic=.0661287 dfont fby="c" kadd=.0277786 dfont fby="d" kadd=.0277786 dfont fby="e" kadd=.0277786 dfont fby="o" kadd=.0277786 dfont fby="q" kadd=.0277786 dfont fby="r" kadd=-.0277786 dfont fby="w" kadd=-.0277786 dfont fby="x" kadd=-.0277786 dfont fby="y" kadd=-.0277786 set path ! start of curve newpath ! start of curve amove .130821 .160109 bezier .159041 .15758 .181487 .13113 .18354 .103485 bezier .188761 .469957E-01 .137434 -.923284E-02 .800547E-01 -.488139E-02 bezier .523866E-01 -.305765E-02 .287001E-01 .214723E-01 .263595E-01 .488139E-01 bezier .213699E-01 .105701 .724858E-01 .164424 .130821 .160109 closepath ! end of curve ! start of curve amove .110319 .138631 bezier .680442E-01 .131803 .460556E-01 .808937E-01 .556478E-01 .439325E-01 bezier .614128E-01 .199669E-01 .090565 .105286E-01 .111296 .205018E-01 bezier .144916 .343965E-01 .160925 .751977E-01 .157181 .108367 bezier .153284 .123264 .142298 .136798 .12594 .138631 aline .124963 .139608 aline .111296 .139608 closepath ! end of curve fill dfont endchar dfont char="p" !-------------- Beginning of new char. dfont wid=.516668 hei=.444445 dep=.194445 italic=.0389004 dfont fby="c" kadd=.0277786 dfont fby="d" kadd=.0277786 dfont fby="e" kadd=.0277786 dfont fby="o" kadd=.0277786 dfont fby="q" kadd=.0277786 dfont fby="r" kadd=-.0277786 dfont fby="w" kadd=-.0277786 dfont fby="x" kadd=-.0277786 dfont fby="y" kadd=-.0277786 set path ! start of curve newpath ! start of curve amove .153276 .158157 bezier .181844 .152193 .191675 .117316 .187445 .927463E-01 bezier .186101 .507681E-01 .1569 .776579E-02 .115201 -.390511E-02 bezier .095651 -.786216E-02 .736406E-01 -.184692E-02 .605292E-01 .146442E-01 bezier .053944 -.132306E-01 .493472E-01 -.417247E-01 .419799E-01 -.693157E-01 aline .156204E-01 -.693157E-01 bezier .313911E-01 .517656E-02 .466781E-01 .800545E-01 .063458 .154252 aline .888412E-01 .154252 aline .888412E-01 .153276 aline .863029E-01 .140584 aline .868887E-01 .137655 bezier .101296 .149436 .120695 .155942 .138631 .158157 closepath ! end of curve ! start of curve amove .116177 .135703 bezier .101323 .132142 .822767E-01 .124246 .800547E-01 .10739 bezier .755336E-01 .839553E-01 .695977E-01 .600563E-01 .654106E-01 .370985E-01 bezier .695576E-01 .276451E-01 .764322E-01 .177184E-01 .878649E-01 .165967E-01 bezier .111849 .125039E-01 .136629 .302166E-01 .148394 .507664E-01 bezier .163305 .750835E-01 .167896 .109232 .144489 .129845 aline .142536 .130821 aline .14156 .131797 aline .139608 .132774 aline .136679 .13375 aline .134726 .134726 aline .129845 .135703 aline .128869 .136679 aline .117153 .136679 closepath ! end of curve fill dfont endchar dfont char="q" !-------------- Beginning of new char. dfont wid=.516668 hei=.444445 dep=.194445 italic=.0416899 set path ! start of curve newpath ! start of curve amove .120082 .158157 bezier .134783 .1564 .14773 .147125 .155228 .134726 aline .156204 .137655 aline .159133 .152299 aline .160109 .156204 aline .161086 .158157 aline .186469 .158157 bezier .170296 .823802E-01 .155005 .612837E-02 .137655 -.693157E-01 aline .111296 -.693157E-01 bezier .116646 -.040752 .124229 -.011457 .128869 .165967E-01 bezier .108041 -.620129E-03 .763266E-01 -.129101E-01 .507664E-01 .976277E-03 bezier .321926E-01 .134476E-01 .257555E-01 .386337E-01 .028312 .585766E-01 bezier .287668E-01 .101233 .583239E-01 .14535 .100557 .157181 aline .105438 .157181 aline .106414 .158157 closepath ! end of curve ! start of curve amove .114224 .135703 bezier .068504 .12764 .388738E-01 .682396E-01 .644343E-01 .292883E-01 bezier .792278E-01 .960385E-02 .107175 .138273E-01 .123987 .028312 aline .132774 .370985E-01 bezier .14072 .539045E-01 .141246 .737761E-01 .146442 .917701E-01 bezier .150972 .105249 .147819 .120108 .138631 .130821 aline .136679 .131797 aline .135703 .132774 aline .13375 .13375 aline .127892 .135703 aline .126916 .136679 aline .115201 .136679 closepath ! end of curve fill dfont endchar dfont char="r" !-------------- Beginning of new char. dfont wid=.341669 hei=.444445 dep=0 italic=.108357 set path ! start of curve newpath ! start of curve amove .14937 .158157 aline .14937 .157181 aline .148394 .153276 aline .145465 .138631 aline .144489 .135703 bezier .107086 .13482 .739818E-01 .102976 .070292 .654106E-01 aline .693157E-01 .615055E-01 aline .663868E-01 .468613E-01 aline .654106E-01 .429562E-01 aline .063458 .331934E-01 aline .624817E-01 .292883E-01 aline .595529E-01 .146442E-01 aline .585766E-01 .010739 aline .566241E-01 .976277E-03 aline .556478E-01 -.976277E-03 aline .302646E-01 -.976277E-03 bezier .407885E-01 .514905E-01 .523735E-01 .103823 .063458 .156204 aline .868887E-01 .156204 aline .868887E-01 .153276 aline .839598E-01 .138631 aline .829836E-01 .134726 aline .820073E-01 .129845 aline .813971E-01 .127404 aline .820073E-01 .124963 bezier .989468E-01 .144201 .123514 .158864 .14937 .158157 closepath ! end of curve fill dfont endchar dfont char="s" !-------------- Beginning of new char. dfont wid=.383334 hei=.444445 dep=0 italic=.0778017 set path ! start of curve newpath ! start of curve amove .116177 .160109 aline .117153 .159133 aline .123987 .159133 aline .124963 .158157 aline .129845 .158157 aline .13375 .157181 aline .145465 .153276 aline .153276 .14937 aline .151323 .143513 aline .150347 .14156 aline .14937 .138631 aline .148394 .136679 aline .147418 .13375 aline .146442 .131797 aline .145465 .128869 aline .144489 .126916 bezier .12317 .13921 .959374E-01 .145581 .732208E-01 .13375 bezier .060234 .126078 .575172E-01 .102781 .741971E-01 .976277E-01 bezier .961249E-01 .922557E-01 .124155 .909309E-01 .134726 .673631E-01 bezier .147273 .331369E-01 .114879 -.45556E-02 .800547E-01 -.390511E-02 bezier .578963E-01 -.716645E-02 .327444E-01 -.268349E-02 .136679E-01 .010739 aline .136679E-01 .126916E-01 aline .146442E-01 .146442E-01 aline .156204E-01 .017573 aline .165967E-01 .195255E-01 aline .185493E-01 .253832E-01 aline .195255E-01 .273358E-01 aline .205018E-01 .302646E-01 aline .224544E-01 .341697E-01 bezier .448534E-01 .169037E-01 .780084E-01 .902103E-02 .102509 .253832E-01 bezier .112548 .346751E-01 .116391 .521668E-01 .103485 .605292E-01 bezier .825783E-01 .698047E-01 .542172E-01 .666257E-01 .410036E-01 .888412E-01 bezier .237252E-01 .121486 .584755E-01 .160422 .927463E-01 .159133 aline .937226E-01 .160109 aline .116177 .160109 closepath ! end of curve fill dfont endchar dfont char="t" !-------------- Beginning of new char. dfont wid=.361112 hei=.571431 dep=0 italic=.0722475 dfont fby="w" kadd=-.0277786 dfont fby="y" kadd=-.0277786 set path ! start of curve newpath ! start of curve amove .104462 .199161 aline .103485 .194279 aline .102509 .189398 aline .101533 .185493 aline .098604 .170849 aline .976277E-01 .166943 aline .956752E-01 .157181 aline .094943 .155716 aline .956752E-01 .154252 aline .144489 .154252 aline .144489 .153276 aline .14156 .138631 aline .140584 .134726 aline .907938E-01 .134726 bezier .838664E-01 .103579 .782026E-01 .715653E-01 .070292 .410036E-01 aline .070292 .263595E-01 bezier .735539E-01 .145418E-01 .878569E-01 .152882E-01 .966514E-01 .185493E-01 aline .995803E-01 .195255E-01 aline .103485 .205018E-01 aline .105438 .214781E-01 aline .108367 .224544E-01 aline .112272 .244069E-01 aline .113248 .253832E-01 aline .117153 .273358E-01 aline .11813 .028312 aline .119106 .273358E-01 aline .119106 .878649E-02 bezier .999818E-01 -.190748E-02 .778942E-01 -.674608E-02 .566241E-01 -.390511E-02 aline .052719 -.195255E-02 aline .478376E-01 .292883E-02 bezier .374477E-01 .273199E-01 .499348E-01 .531849E-01 .536952E-01 .781022E-01 aline .556478E-01 .878649E-01 aline .566241E-01 .917701E-01 aline .595529E-01 .106414 aline .605292E-01 .110319 aline .624817E-01 .120082 aline .063458 .123987 aline .650201E-01 .131797 aline .644343E-01 .134726 aline .370985E-01 .134726 aline .370985E-01 .137655 aline .400274E-01 .152299 aline .410036E-01 .154252 aline .070292 .154252 aline .712682E-01 .156204 aline .732208E-01 .165967 aline .741971E-01 .169872 aline .771259E-01 .184516 aline .781022E-01 .188421 aline .800547E-01 .198184 aline .081031 .199161 closepath ! end of curve fill dfont endchar dfont char="u" !-------------- Beginning of new char. dfont wid=.516668 hei=.444445 dep=0 italic=.0416899 dfont fby="w" kadd=-.0277786 set path ! start of curve newpath ! start of curve amove .888412E-01 .154252 bezier .809681E-01 .11129 .693851E-01 .674628E-01 .624817E-01 .253832E-01 aline .063458 .244069E-01 aline .644343E-01 .214781E-01 aline .654106E-01 .195255E-01 bezier .907685E-01 .375827E-02 .131757 .202175E-01 .137655 .507664E-01 bezier .145208 .085225 .151788 .120074 .160109 .154252 aline .186469 .154252 bezier .175828 .102484 .165136 .05045 .153276 -.976277E-03 aline .127892 -.976277E-03 aline .127892 0 aline .129845 .976277E-02 aline .130455 .122035E-01 aline .129984 .140863E-01 bezier .114344 .479421E-02 .949911E-01 -.410103E-02 .761496E-01 -.390511E-02 bezier .061907 -.726326E-02 .400008E-01 -.504052E-02 .361223E-01 .126916E-01 bezier .337916E-01 .389536E-01 .445352E-01 .654651E-01 .488139E-01 .917701E-01 aline .517427E-01 .106414 aline .052719 .110319 aline .546715E-01 .120082 aline .556478E-01 .123987 aline .576004E-01 .13375 aline .585766E-01 .137655 aline .615055E-01 .152299 aline .624817E-01 .154252 aline .888412E-01 .154252 closepath ! end of curve ! start of curve amove .129845 .146442E-01 aline .130821 .136679E-01 aline .131797 .146442E-01 aline .130821 .156204E-01 aline .129845 .146442E-01 closepath ! end of curve fill dfont endchar dfont char="v" !-------------- Beginning of new char. dfont wid=.461113 hei=.444445 dep=0 italic=.108357 set path ! start of curve newpath ! start of curve amove .654106E-01 .154252 bezier .733733E-01 .107649 .820928E-01 .630931E-01 .859124E-01 .156204E-01 bezier .108882 .640297E-01 .137774 .108698 .164991 .154252 aline .190374 .154252 bezier .158814 .10274 .128451 .503635E-01 .966514E-01 -.976277E-03 aline .663868E-01 -.976277E-03 bezier .573213E-01 .482655E-01 .495838E-01 .972453E-01 .400274E-01 .146442 aline .400274E-01 .151323 aline .390511E-01 .152299 aline .390511E-01 .154252 closepath ! end of curve fill dfont endchar dfont char="w" !-------------- Beginning of new char. dfont wid=.683336 hei=.444445 dep=0 italic=.108357 dfont fby="a" kadd=-.0277786 dfont fby="c" kadd=-.0277786 dfont fby="e" kadd=-.0277786 dfont fby="o" kadd=-.0277786 set path ! start of curve newpath ! start of curve amove .644343E-01 .154252 bezier .685617E-01 .121718 .702554E-01 .892308E-01 .732208E-01 .566241E-01 aline .732208E-01 .205018E-01 aline .726106E-01 .180611E-01 aline .732208E-01 .156204E-01 bezier .781891E-01 .299821E-01 .846271E-01 .437351E-01 .907938E-01 .576004E-01 aline .120082 .116177 aline .121058 .117153 aline .13375 .142536 aline .134726 .143513 aline .139608 .153276 aline .140584 .154252 aline .164991 .154252 aline .164991 .14937 bezier .167521 .132171 .168875 .114485 .169872 .966514E-01 bezier .172963 .712238E-01 .17465 .452142E-01 .174754 .185493E-01 aline .174021 .170848E-01 aline .174754 .156204E-01 aline .17573 .165967E-01 aline .177682 .224544E-01 aline .178659 .244069E-01 aline .179635 .273358E-01 aline .181588 .312409E-01 aline .182564 .341697E-01 aline .188421 .045885 aline .189398 .488139E-01 aline .213805 .976277E-01 aline .214781 .098604 aline .229425 .127892 aline .230401 .128869 aline .24114 .150347 aline .242117 .151323 aline .243093 .153276 aline .244069 .154252 aline .268476 .154252 bezier .241405 .102553 .214517 .507223E-01 .187445 -.976277E-03 aline .157181 -.976277E-03 aline .157181 .585766E-02 aline .156204 .683394E-02 aline .156204 .165967E-01 bezier .151873 .539563E-01 .148576 .917432E-01 .148394 .130821 aline .14937 .131797 aline .14937 .136679 aline .148394 .137655 aline .145465 .128869 aline .144489 .126916 aline .143513 .123987 aline .142536 .122035 aline .14156 .119106 aline .138631 .113248 aline .137655 .110319 aline .130821 .966514E-01 aline .129845 .937226E-01 aline .106414 .468613E-01 aline .105438 .045885 aline .917701E-01 .185493E-01 aline .907938E-01 .017573 aline .820073E-01 0 aline .081031 -.976277E-03 aline .536952E-01 -.976277E-03 aline .536952E-01 .781022E-02 aline .052719 .878649E-02 bezier .521672E-01 .290828E-01 .484932E-01 .048086 .478376E-01 .683394E-01 aline .468613E-01 .693157E-01 bezier .463096E-01 .896123E-01 .426354E-01 .108616 .419799E-01 .128869 aline .410036E-01 .129845 aline .410036E-01 .139608 aline .400274E-01 .140584 aline .400274E-01 .14937 aline .390511E-01 .150347 aline .390511E-01 .154252 closepath ! end of curve fill dfont endchar dfont char="x" !-------------- Beginning of new char. dfont wid=.461113 hei=.444445 dep=0 italic=.0916901 set path ! start of curve newpath ! start of curve amove .644343E-01 .154252 bezier .776028E-01 .13563 .885286E-01 .115392 .101533 .966514E-01 aline .111296 .106414 aline .113248 .10739 aline .147418 .14156 aline .14937 .142536 aline .161086 .154252 aline .188421 .154252 bezier .162046 .128765 .135342 .103733 .108367 .790785E-01 bezier .12715 .530314E-01 .143592 .025297 .162062 -.976277E-03 aline .13375 -.976277E-03 bezier .120087 .206882E-01 .107601 .431976E-01 .946989E-01 .654106E-01 aline .683394E-01 .390511E-01 aline .673631E-01 .370985E-01 aline .292883E-01 -.976277E-03 aline .195255E-02 -.976277E-03 bezier .299122E-01 .261976E-01 .584121E-01 .526218E-01 .868887E-01 .790785E-01 bezier .692708E-01 .103635 .533739E-01 .129432 .361223E-01 .154252 aline .644343E-01 .154252 closepath ! end of curve fill dfont endchar dfont char="y" !-------------- Beginning of new char. dfont wid=.461113 hei=.444445 dep=.194445 italic=.108357 dfont fby="," kadd=-.083334 dfont fby="." kadd=-.083334 dfont fby="a" kadd=-.0277786 dfont fby="e" kadd=-.0277786 dfont fby="o" kadd=-.0277786 set path ! start of curve newpath ! start of curve amove .663868E-01 .154252 aline .673631E-01 .14937 aline .683394E-01 .145465 aline .693157E-01 .140584 aline .070292 .136679 aline .712682E-01 .131797 aline .722445E-01 .127892 aline .732208E-01 .123011 aline .741971E-01 .119106 aline .820073E-01 .800547E-01 bezier .831051E-01 .658422E-01 .871487E-01 .528498E-01 .868887E-01 .380748E-01 aline .878649E-01 .370985E-01 aline .878649E-01 .205018E-01 aline .872548E-01 .180611E-01 aline .878649E-01 .156204E-01 bezier .107014 .653866E-01 .137313 .109575 .164991 .154252 aline .190374 .154252 bezier .146678 .855604E-01 .10564 .149521E-01 .605292E-01 -.052719 aline .468613E-01 -.663868E-01 aline .449088E-01 -.673631E-01 aline .439325E-01 -.683394E-01 aline .380748E-01 -.712682E-01 aline .322171E-01 -.732208E-01 aline .165967E-01 -.732208E-01 aline .156204E-01 -.722445E-01 aline .878649E-02 -.722445E-01 aline .390511E-02 -.712682E-01 aline .976277E-03 -.070292 aline .976277E-03 -.663868E-01 aline .195255E-02 -.654106E-01 aline .195255E-02 -.595529E-01 aline .292883E-02 -.585766E-01 aline .292883E-02 -.517427E-01 aline .390511E-02 -.478376E-01 bezier .160316E-01 -.515544E-01 .293316E-01 -.579809E-01 .410036E-01 -.497901E-01 bezier .054989 -.356066E-01 .644829E-01 -.017714 .073831 -.488139E-03 bezier .623351E-01 .511058E-01 .501568E-01 .10261 .390511E-01 .154252 closepath ! end of curve fill dfont endchar dfont char="z" !-------------- Beginning of new char. dfont wid=.434723 hei=.444445 dep=0 italic=.0875244 set path ! start of curve newpath ! start of curve amove .174754 .154252 aline .174754 .153276 aline .172801 .143513 aline .171825 .140584 aline .170849 .139608 aline .168896 .138631 aline .100557 .070292 aline .098604 .693157E-01 aline .497901E-01 .205018E-01 aline .507664E-01 .195255E-01 aline .147418 .195255E-01 aline .146442 .146442E-01 aline .145465 .010739 aline .143513 .976277E-03 aline .142536 -.976277E-03 aline .010739 -.976277E-03 aline .010739 0 aline .126916E-01 .976277E-02 aline .136679E-01 .126916E-01 aline .507664E-01 .497901E-01 aline .052719 .507664E-01 aline .120082 .11813 aline .122035 .119106 aline .136679 .13375 aline .135703 .134726 aline .449088E-01 .134726 aline .449088E-01 .137655 aline .478376E-01 .152299 aline .488139E-01 .154252 aline .174754 .154252 closepath ! end of curve fill dfont endchar dfont char="{" !-------------- Beginning of new char. dfont wid=.500002 hei=.444445 dep=0 italic=.0861635 set path ! start of curve newpath ! start of curve amove .198184 .105438 aline .198184 .102509 aline .196232 .927463E-01 aline .194279 .849361E-01 aline .195255E-01 .849361E-01 aline .195255E-01 .878649E-01 aline .205018E-01 .917701E-01 aline .224544E-01 .101533 aline .234307E-01 .105438 aline .198184 .105438 closepath ! end of curve fill dfont endchar dfont char="|" !-------------- Beginning of new char. dfont wid=1 hei=.444445 dep=0 italic=.0861635 set path ! start of curve newpath ! start of curve amove .373914 .105438 aline .373914 .102509 aline .371962 .927463E-01 aline .370009 .849361E-01 aline .195255E-01 .849361E-01 aline .195255E-01 .878649E-01 aline .205018E-01 .917701E-01 aline .224544E-01 .101533 aline .234307E-01 .105438 aline .373914 .105438 closepath ! end of curve fill dfont endchar dfont char="}" !-------------- Beginning of new char. dfont wid=.500002 hei=.694445 dep=0 italic=.0920515 set path ! start of curve newpath ! start of curve amove .139608 .242117 bezier .126054 .222835 .113071 .20314 .098604 .184516 aline .781022E-01 .184516 bezier .904083E-01 .203291 .101168 .223179 .113248 .242117 closepath ! end of curve ! start of curve amove .198184 .242117 bezier .184631 .222835 .171647 .203141 .157181 .184516 aline .136679 .184516 bezier .148985 .203291 .159744 .22318 .171825 .242117 closepath ! end of curve fill dfont endchar dfont char="~" !-------------- Beginning of new char. dfont wid=.500002 hei=.676588 dep=0 italic=.0882568 set path ! start of curve newpath ! start of curve amove .119106 .236259 bezier .135727 .233193 .146943 .209446 .164991 .21771 aline .165967 .218686 aline .16792 .219662 aline .169872 .221615 aline .170849 .223567 aline .171825 .224544 aline .173777 .228449 aline .17573 .234307 aline .176706 .236259 aline .197208 .236259 bezier .19254 .213915 .171161 .190137 .146442 .196232 bezier .132564 .201167 .122173 .219353 .106414 .214781 aline .102509 .212828 aline .098604 .208923 aline .976277E-01 .206971 aline .966514E-01 .205994 aline .956752E-01 .204042 aline .927463E-01 .195255 aline .722445E-01 .195255 bezier .755147E-01 .214269 .909713E-01 .23244 .110319 .236259 closepath ! end of curve fill dfont endchar dfont char=127 !-------------- Beginning of new char. dfont wid=.500002 hei=.679365 dep=0 italic=.0638475 set path ! start of curve newpath ! start of curve amove .119106 .238212 aline .119106 .235283 aline .11813 .231378 aline .115201 .216734 aline .114224 .212828 aline .113248 .2099 aline .849361E-01 .2099 aline .849361E-01 .211852 aline .859124E-01 .215757 aline .888412E-01 .230401 aline .907938E-01 .238212 aline .119106 .238212 closepath ! end of curve ! start of curve amove .187445 .238212 aline .187445 .235283 aline .186469 .231378 aline .18354 .216734 aline .182564 .212828 aline .181588 .2099 aline .153276 .2099 aline .153276 .211852 aline .154252 .215757 aline .157181 .230401 aline .159133 .238212 aline .187445 .238212 closepath ! end of curve fill dfont endchar gle-graphics-4.2.4c/src/fonts/cyrillic/arialbd8.afm0000664000000000000000000002372711405446017020653 0ustar rootrootStartFontMetrics 3.0 FontName ArialCyrMT-Bold FullName Arial KOI 8 Bold FamilyName Arial KOI-8 Weight Bold ItalicAngle 0 IsFixedPitch false FontBBox -48 -211 993 892 UnderlinePosition -217 UnderlineThickness 215 Version 1.1 Notice Typeface The Monotype Corporation plc. 1990-92. Changes 1997 by Eugene V. Demidov EncodingScheme FontSpecific CapHeight 728 XHeight 531 Ascender 728 Descender -211 StartCharMetrics 224 C 32 ; WX 278 ; N space ; B 0 0 0 0 ; C 33 ; WX 333 ; N exclam ; B 89 0 238 716 ; C 34 ; WX 474 ; N quotedbl ; B 52 461 422 716 ; C 35 ; WX 556 ; N numbersign ; B 11 -12 547 728 ; C 36 ; WX 556 ; N dollar ; B 36 -100 514 773 ; C 37 ; WX 889 ; N percent ; B 45 -29 845 728 ; C 38 ; WX 722 ; N ampersand ; B 45 -19 708 728 ; C 39 ; WX 240 ; N quoteright ; B 45 461 195 716 ; C 40 ; WX 333 ; N parenleft ; B 52 -210 301 728 ; C 41 ; WX 333 ; N parenright ; B 33 -210 281 728 ; C 42 ; WX 389 ; N asterisk ; B 16 387 370 728 ; C 43 ; WX 584 ; N plus ; B 42 103 542 604 ; C 44 ; WX 276 ; N comma ; B 55 -160 204 138 ; C 45 ; WX 333 ; N hyphen ; B 32 191 302 329 ; C 46 ; WX 276 ; N period ; B 69 0 207 138 ; C 47 ; WX 278 ; N slash ; B -2 -12 279 728 ; C 48 ; WX 556 ; N zero ; B 44 -12 509 719 ; C 49 ; WX 556 ; N one ; B 81 0 396 719 ; C 50 ; WX 556 ; N two ; B 27 0 508 719 ; C 51 ; WX 556 ; N three ; B 40 -12 515 719 ; C 52 ; WX 556 ; N four ; B 21 0 535 719 ; C 53 ; WX 556 ; N five ; B 46 -12 528 706 ; C 54 ; WX 556 ; N six ; B 44 -12 523 719 ; C 55 ; WX 556 ; N seven ; B 44 0 514 706 ; C 56 ; WX 556 ; N eight ; B 42 -13 513 719 ; C 57 ; WX 556 ; N nine ; B 34 -13 512 719 ; C 58 ; WX 333 ; N colon ; B 97 0 235 519 ; C 59 ; WX 333 ; N semicolon ; B 83 -160 232 519 ; C 60 ; WX 584 ; N less ; B 47 82 538 625 ; C 61 ; WX 584 ; N equal ; B 41 181 542 524 ; C 62 ; WX 584 ; N greater ; B 46 81 538 625 ; C 63 ; WX 611 ; N question ; B 50 0 564 723 ; C 64 ; WX 975 ; N at ; B 28 -211 970 729 ; C 65 ; WX 722 ; N A ; B 2 0 721 716 ; C 66 ; WX 722 ; N B ; B 74 0 675 716 ; C 67 ; WX 722 ; N C ; B 49 -12 673 728 ; C 68 ; WX 722 ; N D ; B 74 0 675 716 ; C 69 ; WX 669 ; N E ; B 73 0 618 716 ; C 70 ; WX 611 ; N F ; B 72 0 563 716 ; C 71 ; WX 775 ; N G ; B 45 -12 714 728 ; C 72 ; WX 722 ; N H ; B 75 0 648 716 ; C 73 ; WX 276 ; N I ; B 66 0 211 716 ; C 74 ; WX 556 ; N J ; B 19 -12 478 716 ; C 75 ; WX 722 ; N K ; B 76 0 722 716 ; C 76 ; WX 611 ; N L ; B 75 0 579 710 ; C 77 ; WX 833 ; N M ; B 70 0 763 716 ; C 78 ; WX 722 ; N N ; B 76 0 644 716 ; C 79 ; WX 775 ; N O ; B 40 -12 735 728 ; C 80 ; WX 669 ; N P ; B 73 0 622 716 ; C 81 ; WX 775 ; N Q ; B 40 -72 761 728 ; C 82 ; WX 722 ; N R ; B 75 0 719 716 ; C 83 ; WX 669 ; N S ; B 38 -13 620 728 ; C 84 ; WX 611 ; N T ; B 20 0 588 716 ; C 85 ; WX 722 ; N U ; B 73 -12 645 716 ; C 86 ; WX 669 ; N V ; B 0 0 667 716 ; C 87 ; WX 945 ; N W ; B 2 0 942 716 ; C 88 ; WX 669 ; N X ; B 1 0 667 716 ; C 89 ; WX 669 ; N Y ; B 0 0 669 716 ; C 90 ; WX 611 ; N Z ; B 9 0 591 716 ; C 91 ; WX 333 ; N bracketleft ; B 71 -202 314 716 ; C 92 ; WX 278 ; N backslash ; B -2 -12 279 728 ; C 93 ; WX 333 ; N bracketright ; B 19 -202 262 716 ; C 94 ; WX 584 ; N asciicircum ; B 56 338 528 728 ; C 95 ; WX 556 ; N underscore ; B -6 -198 562 -109 ; C 96 ; WX 333 ; N quoteleft ; B 20 582 242 728 ; C 97 ; WX 556 ; N a ; B 38 -12 525 530 ; C 98 ; WX 611 ; N b ; B 64 -12 570 716 ; C 99 ; WX 556 ; N c ; B 43 -12 533 530 ; C 100 ; WX 611 ; N d ; B 39 -12 546 716 ; C 101 ; WX 556 ; N e ; B 33 -12 518 530 ; C 102 ; WX 333 ; N f ; B 12 0 362 728 ; C 103 ; WX 611 ; N g ; B 39 -210 546 530 ; C 104 ; WX 611 ; N h ; B 69 0 542 716 ; C 105 ; WX 276 ; N i ; B 69 0 207 716 ; C 106 ; WX 276 ; N j ; B -48 -210 204 716 ; C 107 ; WX 556 ; N k ; B 68 0 548 716 ; C 108 ; WX 276 ; N l ; B 69 0 207 716 ; C 109 ; WX 889 ; N m ; B 63 0 827 530 ; C 110 ; WX 611 ; N n ; B 69 0 542 530 ; C 111 ; WX 611 ; N o ; B 38 -12 574 530 ; C 112 ; WX 611 ; N p ; B 66 -197 572 531 ; C 113 ; WX 611 ; N q ; B 42 -197 546 531 ; C 114 ; WX 389 ; N r ; B 67 0 404 530 ; C 115 ; WX 556 ; N s ; B 26 -12 511 530 ; C 116 ; WX 333 ; N t ; B 15 -12 321 702 ; C 117 ; WX 611 ; N u ; B 66 -12 539 519 ; C 118 ; WX 556 ; N v ; B 7 0 546 519 ; C 119 ; WX 775 ; N w ; B 1 0 774 519 ; C 120 ; WX 556 ; N x ; B 8 0 549 519 ; C 121 ; WX 556 ; N y ; B 8 -211 542 519 ; C 122 ; WX 499 ; N z ; B 16 0 479 519 ; C 123 ; WX 389 ; N braceleft ; B 31 -211 365 728 ; C 124 ; WX 281 ; N bar ; B 86 -210 195 728 ; C 125 ; WX 389 ; N braceright ; B 24 -211 358 728 ; C 126 ; WX 584 ; N asciitilde ; B 32 253 551 451 ; C 128 ; WX 278 ; N c128 ; B 0 0 0 0 ; C 129 ; WX 278 ; N c129 ; B 0 0 0 0 ; C 130 ; WX 278 ; N c130 ; B 0 0 0 0 ; C 131 ; WX 278 ; N c131 ; B 0 0 0 0 ; C 132 ; WX 278 ; N c132 ; B 0 0 0 0 ; C 133 ; WX 278 ; N c133 ; B 0 0 0 0 ; C 134 ; WX 278 ; N c134 ; B 0 0 0 0 ; C 135 ; WX 278 ; N c135 ; B 0 0 0 0 ; C 136 ; WX 278 ; N c136 ; B 0 0 0 0 ; C 137 ; WX 278 ; N c137 ; B 0 0 0 0 ; C 138 ; WX 278 ; N c138 ; B 0 0 0 0 ; C 139 ; WX 278 ; N c139 ; B 0 0 0 0 ; C 140 ; WX 278 ; N c140 ; B 0 0 0 0 ; C 141 ; WX 278 ; N c141 ; B 0 0 0 0 ; C 142 ; WX 278 ; N c142 ; B 0 0 0 0 ; C 143 ; WX 278 ; N c143 ; B 0 0 0 0 ; C 144 ; WX 278 ; N c144 ; B 0 0 0 0 ; C 145 ; WX 278 ; N c145 ; B 0 0 0 0 ; C 146 ; WX 278 ; N c146 ; B 0 0 0 0 ; C 147 ; WX 278 ; N c147 ; B 0 0 0 0 ; C 148 ; WX 278 ; N c148 ; B 0 0 0 0 ; C 149 ; WX 278 ; N c149 ; B 0 0 0 0 ; C 150 ; WX 278 ; N c150 ; B 0 0 0 0 ; C 151 ; WX 278 ; N c151 ; B 0 0 0 0 ; C 152 ; WX 278 ; N c152 ; B 0 0 0 0 ; C 153 ; WX 278 ; N c153 ; B 0 0 0 0 ; C 154 ; WX 278 ; N c154 ; B 0 0 0 0 ; C 155 ; WX 278 ; N c155 ; B 0 0 0 0 ; C 156 ; WX 278 ; N c156 ; B 0 0 0 0 ; C 157 ; WX 278 ; N c157 ; B 0 0 0 0 ; C 158 ; WX 278 ; N c158 ; B 0 0 0 0 ; C 159 ; WX 278 ; N c159 ; B 0 0 0 0 ; C 160 ; WX 278 ; N nbspace ; B 0 0 0 0 ; C 161 ; WX 278 ; N exclamdown ; B 0 0 0 0 ; C 162 ; WX 278 ; N cent ; B 0 0 0 0 ; C 163 ; WX 556 ; N sterling ; B 34 -12 518 728 ; C 164 ; WX 278 ; N currency ; B 0 0 0 0 ; C 165 ; WX 278 ; N yen ; B 0 0 0 0 ; C 166 ; WX 278 ; N brokenbar ; B 0 0 0 0 ; C 167 ; WX 278 ; N section ; B 0 0 0 0 ; C 168 ; WX 278 ; N dieresis ; B 0 0 0 0 ; C 169 ; WX 278 ; N copyright ; B 0 0 0 0 ; C 170 ; WX 278 ; N ordfeminine ; B 0 0 0 0 ; C 171 ; WX 278 ; N guillemotleft ; B 0 0 0 0 ; C 172 ; WX 278 ; N logicalnot ; B 0 0 0 0 ; C 173 ; WX 278 ; N softhyphen ; B 0 0 0 0 ; C 174 ; WX 278 ; N registered ; B 0 0 0 0 ; C 175 ; WX 278 ; N macron ; B 0 0 0 0 ; C 176 ; WX 278 ; N degree ; B 0 0 0 0 ; C 177 ; WX 278 ; N plusminus ; B 0 0 0 0 ; C 178 ; WX 278 ; N twosuperior ; B 0 0 0 0 ; C 179 ; WX 669 ; N threesuperior ; B 73 0 618 871 ; C 180 ; WX 278 ; N acute ; B 0 0 0 0 ; C 181 ; WX 278 ; N mu ; B 0 0 0 0 ; C 182 ; WX 278 ; N paragraph ; B 0 0 0 0 ; C 183 ; WX 278 ; N periodcentered ; B 0 0 0 0 ; C 184 ; WX 278 ; N cedilla ; B 0 0 0 0 ; C 185 ; WX 278 ; N onesuperior ; B 0 0 0 0 ; C 186 ; WX 278 ; N ordmasculine ; B 0 0 0 0 ; C 187 ; WX 278 ; N guillemotright ; B 0 0 0 0 ; C 188 ; WX 278 ; N onequarter ; B 0 0 0 0 ; C 189 ; WX 278 ; N onehalf ; B 0 0 0 0 ; C 190 ; WX 278 ; N threequarters ; B 0 0 0 0 ; C 191 ; WX 278 ; N questiondown ; B 0 0 0 0 ; C 192 ; WX 854 ; N Agrave ; B 70 -12 815 530 ; C 193 ; WX 556 ; N Aacute ; B 38 -12 525 530 ; C 194 ; WX 618 ; N Acircumflex ; B 45 -12 575 732 ; C 195 ; WX 615 ; N Atilde ; B 66 -137 591 519 ; C 196 ; WX 635 ; N Adieresis ; B -4 -137 612 519 ; C 197 ; WX 556 ; N Aring ; B 33 -12 518 530 ; C 198 ; WX 875 ; N AE ; B 41 -197 835 716 ; C 199 ; WX 417 ; N Ccedilla ; B 66 0 417 519 ; C 200 ; WX 556 ; N Egrave ; B 8 0 549 519 ; C 201 ; WX 615 ; N Eacute ; B 68 0 546 519 ; C 202 ; WX 615 ; N Ecircumflex ; B 68 0 546 722 ; C 203 ; WX 500 ; N Edieresis ; B 66 0 501 522 ; C 204 ; WX 635 ; N Igrave ; B 12 -9 568 519 ; C 205 ; WX 740 ; N Iacute ; B 75 0 674 519 ; C 206 ; WX 604 ; N Icircumflex ; B 66 0 538 519 ; C 207 ; WX 611 ; N Idieresis ; B 38 -12 574 530 ; C 208 ; WX 604 ; N Eth ; B 66 0 527 519 ; C 209 ; WX 583 ; N Ntilde ; B -2 0 516 519 ; C 210 ; WX 611 ; N Ograve ; B 66 -197 572 531 ; C 211 ; WX 556 ; N Oacute ; B 43 -12 533 530 ; C 212 ; WX 490 ; N Ocircumflex ; B 10 0 479 519 ; C 213 ; WX 556 ; N Otilde ; B 8 -211 542 519 ; C 214 ; WX 709 ; N Odieresis ; B 0 0 710 522 ; C 215 ; WX 615 ; N multiply ; B 73 0 576 519 ; C 216 ; WX 615 ; N Oslash ; B 74 0 575 519 ; C 217 ; WX 854 ; N Ugrave ; B 72 0 789 519 ; C 218 ; WX 497 ; N Uacute ; B 12 -12 459 531 ; C 219 ; WX 833 ; N Ucircumflex ; B 68 0 765 519 ; C 220 ; WX 552 ; N Udieresis ; B 27 -12 512 531 ; C 221 ; WX 844 ; N Yacute ; B 69 -137 822 519 ; C 222 ; WX 581 ; N Thorn ; B 55 0 516 519 ; C 223 ; WX 729 ; N germandbls ; B 14 0 689 519 ; C 224 ; WX 1031 ; N agrave ; B 73 -12 985 728 ; C 225 ; WX 722 ; N aacute ; B 2 0 721 716 ; C 226 ; WX 719 ; N acircumflex ; B 75 0 674 716 ; C 227 ; WX 730 ; N atilde ; B 75 -156 704 716 ; C 228 ; WX 712 ; N adieresis ; B -3 -156 688 716 ; C 229 ; WX 669 ; N aring ; B 73 0 618 716 ; C 230 ; WX 854 ; N ae ; B 43 0 810 715 ; C 231 ; WX 567 ; N ccedilla ; B 80 0 565 716 ; C 232 ; WX 669 ; N egrave ; B 1 0 667 716 ; C 233 ; WX 719 ; N eacute ; B 74 0 644 716 ; C 234 ; WX 719 ; N ecircumflex ; B 74 0 644 892 ; C 235 ; WX 610 ; N edieresis ; B 75 0 602 721 ; C 236 ; WX 702 ; N igrave ; B 16 -4 626 716 ; C 237 ; WX 833 ; N iacute ; B 70 0 763 716 ; C 238 ; WX 722 ; N icircumflex ; B 75 0 648 716 ; C 239 ; WX 775 ; N idieresis ; B 40 -12 735 728 ; C 240 ; WX 719 ; N eth ; B 74 0 644 716 ; C 241 ; WX 719 ; N ntilde ; B 2 0 646 716 ; C 242 ; WX 669 ; N ograve ; B 73 0 622 716 ; C 243 ; WX 722 ; N oacute ; B 49 -12 673 728 ; C 244 ; WX 611 ; N ocircumflex ; B 20 0 588 716 ; C 245 ; WX 622 ; N otilde ; B 0 -9 623 716 ; C 246 ; WX 904 ; N odieresis ; B 11 0 893 721 ; C 247 ; WX 722 ; N divide ; B 74 0 675 716 ; C 248 ; WX 719 ; N oslash ; B 75 0 673 716 ; C 249 ; WX 979 ; N ugrave ; B 76 0 902 716 ; C 250 ; WX 626 ; N uacute ; B 21 -13 573 728 ; C 251 ; WX 1005 ; N ucircumflex ; B 75 0 930 716 ; C 252 ; WX 711 ; N udieresis ; B 42 -12 668 728 ; C 253 ; WX 1019 ; N yacute ; B 75 -156 993 716 ; C 254 ; WX 703 ; N thorn ; B 61 0 627 716 ; C 255 ; WX 870 ; N ydieresis ; B 13 0 824 716 ; C -1 ; WX 333 ; N minus ; B 32 191 302 329 ; EndCharMetrics EndFontMetrics gle-graphics-4.2.4c/src/fonts/cyrillic/arialbi8.afm0000664000000000000000000002404111405446017020646 0ustar rootrootStartFontMetrics 3.0 FontName ArialCyrMT-BoldItalic FullName Arial KOI 8 Bold Italic FamilyName Arial KOI-8 Weight BoldItalic ItalicAngle 0 IsFixedPitch false FontBBox -137 -211 1040 893 UnderlinePosition -217 UnderlineThickness 215 Version 1.1 Notice Typeface The Monotype Corporation plc. 1990-92. Changes 1997 by Eugene V. Demidov EncodingScheme FontSpecific CapHeight 728 XHeight 531 Ascender 728 Descender -211 StartCharMetrics 224 C 32 ; WX 278 ; N space ; B 0 0 0 0 ; C 33 ; WX 333 ; N exclam ; B 35 0 326 716 ; C 34 ; WX 474 ; N quotedbl ; B 120 461 517 716 ; C 35 ; WX 556 ; N numbersign ; B 29 -12 564 728 ; C 36 ; WX 556 ; N dollar ; B 20 -99 552 770 ; C 37 ; WX 889 ; N percent ; B 66 -31 840 728 ; C 38 ; WX 722 ; N ampersand ; B 59 -17 682 728 ; C 39 ; WX 238 ; N quoteright ; B 114 461 291 716 ; C 40 ; WX 333 ; N parenleft ; B 40 -210 409 728 ; C 41 ; WX 333 ; N parenright ; B -76 -210 293 728 ; C 42 ; WX 389 ; N asterisk ; B 68 341 421 681 ; C 43 ; WX 584 ; N plus ; B 60 103 560 604 ; C 44 ; WX 278 ; N comma ; B -18 -155 184 136 ; C 45 ; WX 333 ; N hyphen ; B 12 190 312 326 ; C 46 ; WX 278 ; N period ; B 16 0 183 136 ; C 47 ; WX 278 ; N slash ; B -70 -12 382 728 ; C 48 ; WX 556 ; N zero ; B 40 -13 547 719 ; C 49 ; WX 556 ; N one ; B 94 0 486 720 ; C 50 ; WX 556 ; N two ; B 30 0 540 719 ; C 51 ; WX 556 ; N three ; B 27 -13 536 719 ; C 52 ; WX 556 ; N four ; B 4 0 536 716 ; C 53 ; WX 556 ; N five ; B 27 -13 542 706 ; C 54 ; WX 556 ; N six ; B 57 -13 551 719 ; C 55 ; WX 556 ; N seven ; B 79 0 578 706 ; C 56 ; WX 556 ; N eight ; B 42 -13 543 719 ; C 57 ; WX 556 ; N nine ; B 39 -12 533 719 ; C 58 ; WX 333 ; N colon ; B 44 0 290 519 ; C 59 ; WX 333 ; N semicolon ; B 14 -155 293 519 ; C 60 ; WX 584 ; N less ; B 65 82 555 625 ; C 61 ; WX 584 ; N equal ; B 60 181 560 524 ; C 62 ; WX 584 ; N greater ; B 65 81 556 625 ; C 63 ; WX 611 ; N question ; B 95 0 590 728 ; C 64 ; WX 975 ; N at ; B 10 -211 952 728 ; C 65 ; WX 722 ; N A ; B -35 0 649 716 ; C 66 ; WX 722 ; N B ; B 16 0 686 716 ; C 67 ; WX 722 ; N C ; B 71 -12 721 728 ; C 68 ; WX 722 ; N D ; B 19 0 700 716 ; C 69 ; WX 667 ; N E ; B 15 0 695 716 ; C 70 ; WX 611 ; N F ; B 11 0 661 716 ; C 71 ; WX 778 ; N G ; B 61 -12 758 728 ; C 72 ; WX 722 ; N H ; B 19 0 740 716 ; C 73 ; WX 278 ; N I ; B 7 0 303 716 ; C 74 ; WX 556 ; N J ; B 5 -12 575 716 ; C 75 ; WX 722 ; N K ; B 15 0 776 716 ; C 76 ; WX 611 ; N L ; B 17 0 553 716 ; C 77 ; WX 833 ; N M ; B 15 0 852 716 ; C 78 ; WX 722 ; N N ; B 21 0 738 716 ; C 79 ; WX 778 ; N O ; B 60 -12 756 728 ; C 80 ; WX 667 ; N P ; B 15 0 676 716 ; C 81 ; WX 778 ; N Q ; B 60 -95 756 728 ; C 82 ; WX 722 ; N R ; B 20 0 716 716 ; C 83 ; WX 667 ; N S ; B 38 -12 651 728 ; C 84 ; WX 611 ; N T ; B 93 0 681 716 ; C 85 ; WX 722 ; N U ; B 67 -12 740 716 ; C 86 ; WX 667 ; N V ; B 87 0 767 716 ; C 87 ; WX 944 ; N W ; B 90 0 1040 716 ; C 88 ; WX 667 ; N X ; B -56 0 757 716 ; C 89 ; WX 667 ; N Y ; B 89 0 758 716 ; C 90 ; WX 611 ; N Z ; B -3 0 640 716 ; C 91 ; WX 333 ; N bracketleft ; B -17 -198 412 716 ; C 92 ; WX 278 ; N backslash ; B 95 -12 232 728 ; C 93 ; WX 333 ; N bracketright ; B -82 -198 348 716 ; C 94 ; WX 584 ; N asciicircum ; B 74 338 545 728 ; C 95 ; WX 556 ; N underscore ; B -32 -198 535 -109 ; C 96 ; WX 333 ; N quoteleft ; B 112 586 309 732 ; C 97 ; WX 556 ; N a ; B 21 -12 509 530 ; C 98 ; WX 611 ; N b ; B 8 -12 573 716 ; C 99 ; WX 556 ; N c ; B 36 -12 540 530 ; C 100 ; WX 611 ; N d ; B 31 -12 641 716 ; C 101 ; WX 556 ; N e ; B 34 -12 530 530 ; C 102 ; WX 333 ; N f ; B 27 0 444 728 ; C 103 ; WX 611 ; N g ; B 3 -210 595 530 ; C 104 ; WX 611 ; N h ; B 15 0 563 716 ; C 105 ; WX 278 ; N i ; B 12 0 301 716 ; C 106 ; WX 278 ; N j ; B -137 -210 303 716 ; C 107 ; WX 556 ; N k ; B 14 0 590 716 ; C 108 ; WX 278 ; N l ; B 12 0 301 716 ; C 109 ; WX 889 ; N m ; B 11 0 844 530 ; C 110 ; WX 611 ; N n ; B 14 0 563 530 ; C 111 ; WX 611 ; N o ; B 33 -12 571 530 ; C 112 ; WX 611 ; N p ; B -33 -199 578 530 ; C 113 ; WX 611 ; N q ; B 32 -199 597 530 ; C 114 ; WX 389 ; N r ; B 8 0 449 530 ; C 115 ; WX 556 ; N s ; B -2 -12 527 531 ; C 116 ; WX 333 ; N t ; B 49 -12 364 698 ; C 117 ; WX 611 ; N u ; B 43 -12 591 519 ; C 118 ; WX 556 ; N v ; B 51 0 594 519 ; C 119 ; WX 778 ; N w ; B 44 0 812 519 ; C 120 ; WX 556 ; N x ; B -46 0 588 519 ; C 121 ; WX 556 ; N y ; B -17 -211 597 519 ; C 122 ; WX 500 ; N z ; B -9 0 492 519 ; C 123 ; WX 389 ; N braceleft ; B 24 -210 472 728 ; C 124 ; WX 280 ; N bar ; B 104 -210 212 728 ; C 125 ; WX 389 ; N braceright ; B -80 -211 368 728 ; C 126 ; WX 584 ; N asciitilde ; B 51 253 569 451 ; C 128 ; WX 278 ; N c128 ; B 0 0 0 0 ; C 129 ; WX 278 ; N c129 ; B 0 0 0 0 ; C 130 ; WX 278 ; N c130 ; B 0 0 0 0 ; C 131 ; WX 278 ; N c131 ; B 0 0 0 0 ; C 132 ; WX 278 ; N c132 ; B 0 0 0 0 ; C 133 ; WX 278 ; N c133 ; B 0 0 0 0 ; C 134 ; WX 278 ; N c134 ; B 0 0 0 0 ; C 135 ; WX 278 ; N c135 ; B 0 0 0 0 ; C 136 ; WX 278 ; N c136 ; B 0 0 0 0 ; C 137 ; WX 278 ; N c137 ; B 0 0 0 0 ; C 138 ; WX 278 ; N c138 ; B 0 0 0 0 ; C 139 ; WX 278 ; N c139 ; B 0 0 0 0 ; C 140 ; WX 278 ; N c140 ; B 0 0 0 0 ; C 141 ; WX 278 ; N c141 ; B 0 0 0 0 ; C 142 ; WX 278 ; N c142 ; B 0 0 0 0 ; C 143 ; WX 278 ; N c143 ; B 0 0 0 0 ; C 144 ; WX 278 ; N c144 ; B 0 0 0 0 ; C 145 ; WX 278 ; N c145 ; B 0 0 0 0 ; C 146 ; WX 278 ; N c146 ; B 0 0 0 0 ; C 147 ; WX 278 ; N c147 ; B 0 0 0 0 ; C 148 ; WX 278 ; N c148 ; B 0 0 0 0 ; C 149 ; WX 278 ; N c149 ; B 0 0 0 0 ; C 150 ; WX 278 ; N c150 ; B 0 0 0 0 ; C 151 ; WX 278 ; N c151 ; B 0 0 0 0 ; C 152 ; WX 278 ; N c152 ; B 0 0 0 0 ; C 153 ; WX 278 ; N c153 ; B 0 0 0 0 ; C 154 ; WX 278 ; N c154 ; B 0 0 0 0 ; C 155 ; WX 278 ; N c155 ; B 0 0 0 0 ; C 156 ; WX 278 ; N c156 ; B 0 0 0 0 ; C 157 ; WX 278 ; N c157 ; B 0 0 0 0 ; C 158 ; WX 278 ; N c158 ; B 0 0 0 0 ; C 159 ; WX 278 ; N c159 ; B 0 0 0 0 ; C 160 ; WX 278 ; N nbspace ; B 0 0 0 0 ; C 161 ; WX 278 ; N exclamdown ; B 0 0 0 0 ; C 162 ; WX 278 ; N cent ; B 0 0 0 0 ; C 163 ; WX 556 ; N sterling ; B 34 -12 530 716 ; C 164 ; WX 278 ; N currency ; B 0 0 0 0 ; C 165 ; WX 278 ; N yen ; B 0 0 0 0 ; C 166 ; WX 278 ; N brokenbar ; B 0 0 0 0 ; C 167 ; WX 278 ; N section ; B 0 0 0 0 ; C 168 ; WX 278 ; N dieresis ; B 0 0 0 0 ; C 169 ; WX 278 ; N copyright ; B 0 0 0 0 ; C 170 ; WX 278 ; N ordfeminine ; B 0 0 0 0 ; C 171 ; WX 278 ; N guillemotleft ; B 0 0 0 0 ; C 172 ; WX 278 ; N logicalnot ; B 0 0 0 0 ; C 173 ; WX 278 ; N softhyphen ; B 0 0 0 0 ; C 174 ; WX 278 ; N registered ; B 0 0 0 0 ; C 175 ; WX 278 ; N macron ; B 0 0 0 0 ; C 176 ; WX 278 ; N degree ; B 0 0 0 0 ; C 177 ; WX 278 ; N plusminus ; B 0 0 0 0 ; C 178 ; WX 278 ; N twosuperior ; B 0 0 0 0 ; C 179 ; WX 667 ; N threesuperior ; B 15 0 695 876 ; C 180 ; WX 278 ; N acute ; B 0 0 0 0 ; C 181 ; WX 278 ; N mu ; B 0 0 0 0 ; C 182 ; WX 278 ; N paragraph ; B 0 0 0 0 ; C 183 ; WX 278 ; N periodcentered ; B 0 0 0 0 ; C 184 ; WX 278 ; N cedilla ; B 0 0 0 0 ; C 185 ; WX 278 ; N onesuperior ; B 0 0 0 0 ; C 186 ; WX 278 ; N ordmasculine ; B 0 0 0 0 ; C 187 ; WX 278 ; N guillemotright ; B 0 0 0 0 ; C 188 ; WX 278 ; N onequarter ; B 0 0 0 0 ; C 189 ; WX 278 ; N onehalf ; B 0 0 0 0 ; C 190 ; WX 278 ; N threequarters ; B 0 0 0 0 ; C 191 ; WX 278 ; N questiondown ; B 0 0 0 0 ; C 192 ; WX 865 ; N Agrave ; B 15 -12 824 531 ; C 193 ; WX 556 ; N Aacute ; B 21 -12 509 530 ; C 194 ; WX 619 ; N Acircumflex ; B 40 -12 630 748 ; C 195 ; WX 646 ; N Atilde ; B 36 -161 593 519 ; C 196 ; WX 618 ; N Adieresis ; B 35 -12 601 748 ; C 197 ; WX 556 ; N Aring ; B 34 -12 530 530 ; C 198 ; WX 885 ; N AE ; B 39 -203 851 728 ; C 199 ; WX 534 ; N Ccedilla ; B 8 -12 490 530 ; C 200 ; WX 556 ; N Egrave ; B -46 0 588 519 ; C 201 ; WX 611 ; N Eacute ; B 43 -12 591 519 ; C 202 ; WX 611 ; N Ecircumflex ; B 43 -12 591 728 ; C 203 ; WX 507 ; N Edieresis ; B 10 0 540 519 ; C 204 ; WX 622 ; N Igrave ; B -49 -12 608 519 ; C 205 ; WX 740 ; N Iacute ; B 14 0 723 519 ; C 206 ; WX 604 ; N Icircumflex ; B 11 0 591 519 ; C 207 ; WX 611 ; N Idieresis ; B 33 -12 571 530 ; C 208 ; WX 611 ; N Eth ; B 14 0 563 530 ; C 209 ; WX 589 ; N Ntilde ; B -44 0 574 519 ; C 210 ; WX 611 ; N Ograve ; B -33 -199 578 530 ; C 211 ; WX 556 ; N Oacute ; B 36 -12 540 530 ; C 212 ; WX 889 ; N Ocircumflex ; B 11 0 844 530 ; C 213 ; WX 556 ; N Otilde ; B -17 -211 597 519 ; C 214 ; WX 736 ; N Odieresis ; B -48 0 765 519 ; C 215 ; WX 604 ; N multiply ; B 39 -12 542 530 ; C 216 ; WX 594 ; N Oslash ; B 8 0 543 519 ; C 217 ; WX 854 ; N Ugrave ; B 14 0 841 519 ; C 218 ; WX 510 ; N Uacute ; B -7 -12 468 530 ; C 219 ; WX 889 ; N Ucircumflex ; B 45 -12 875 519 ; C 220 ; WX 552 ; N Udieresis ; B 6 -12 509 530 ; C 221 ; WX 935 ; N Yacute ; B 44 -159 885 519 ; C 222 ; WX 583 ; N Thorn ; B 74 0 569 519 ; C 223 ; WX 707 ; N germandbls ; B 43 0 654 519 ; C 224 ; WX 1042 ; N agrave ; B 16 -12 1017 728 ; C 225 ; WX 722 ; N aacute ; B -35 0 649 716 ; C 226 ; WX 708 ; N acircumflex ; B 21 0 685 716 ; C 227 ; WX 729 ; N atilde ; B 14 -198 736 716 ; C 228 ; WX 722 ; N adieresis ; B -101 -198 730 716 ; C 229 ; WX 667 ; N aring ; B 15 0 695 716 ; C 230 ; WX 781 ; N ae ; B 59 -6 764 716 ; C 231 ; WX 614 ; N ccedilla ; B 21 0 699 716 ; C 232 ; WX 667 ; N egrave ; B -56 0 757 716 ; C 233 ; WX 719 ; N eacute ; B 17 0 738 716 ; C 234 ; WX 719 ; N ecircumflex ; B 17 0 738 893 ; C 235 ; WX 615 ; N edieresis ; B 19 0 676 716 ; C 236 ; WX 687 ; N igrave ; B -52 -11 698 716 ; C 237 ; WX 833 ; N iacute ; B 15 0 852 716 ; C 238 ; WX 722 ; N icircumflex ; B 19 0 740 716 ; C 239 ; WX 778 ; N idieresis ; B 60 -12 756 728 ; C 240 ; WX 719 ; N eth ; B 19 0 739 716 ; C 241 ; WX 729 ; N ntilde ; B -47 0 748 716 ; C 242 ; WX 667 ; N ograve ; B 15 0 676 716 ; C 243 ; WX 722 ; N oacute ; B 71 -12 721 728 ; C 244 ; WX 611 ; N ocircumflex ; B 93 0 681 716 ; C 245 ; WX 677 ; N otilde ; B 51 -11 769 716 ; C 246 ; WX 927 ; N odieresis ; B -41 0 989 720 ; C 247 ; WX 722 ; N divide ; B 16 0 686 716 ; C 248 ; WX 708 ; N oslash ; B 21 0 662 716 ; C 249 ; WX 1000 ; N ugrave ; B 18 0 1014 716 ; C 250 ; WX 643 ; N uacute ; B 12 -12 624 728 ; C 251 ; WX 979 ; N ucircumflex ; B 19 0 997 716 ; C 252 ; WX 719 ; N udieresis ; B 42 -12 694 728 ; C 253 ; WX 989 ; N yacute ; B 19 -198 997 716 ; C 254 ; WX 708 ; N thorn ; B 103 0 726 716 ; C 255 ; WX 854 ; N ydieresis ; B 81 0 808 716 ; C -1 ; WX 333 ; N minus ; B 12 190 312 326 ; EndCharMetrics EndFontMetrics gle-graphics-4.2.4c/src/fonts/cyrillic/timesbd8.afm0000664000000000000000000002401711405446017020675 0ustar rootrootStartFontMetrics 3.0 FontName TimesNRCyrMT-Bold FullName Times New Roman KOI 8 Bold FamilyName Times New Roman KOI-8 Weight Bold ItalicAngle 0 IsFixedPitch false FontBBox -20 -224 1115 878 UnderlinePosition -205 UnderlineThickness 102 Version 1.0 Notice Typeface The Monotype Corporation plc. 1990-92. Changes 1997 by Eugene V. Demidov EncodingScheme FontSpecific CapHeight 702 XHeight 475 Ascender 702 Descender -212 StartCharMetrics 224 C 32 ; WX 250 ; N space ; B 0 0 0 0 ; C 33 ; WX 271 ; N exclam ; B 54 -14 217 702 ; C 34 ; WX 552 ; N quotedbl ; B 86 376 466 702 ; C 35 ; WX 667 ; N numbersign ; B 38 0 628 704 ; C 36 ; WX 500 ; N dollar ; B 24 -68 475 698 ; C 37 ; WX 875 ; N percent ; B 48 -27 828 703 ; C 38 ; WX 771 ; N ampersand ; B 29 -14 716 702 ; C 39 ; WX 281 ; N quoteright ; B 69 377 213 702 ; C 40 ; WX 333 ; N parenleft ; B 33 -196 317 704 ; C 41 ; WX 333 ; N parenright ; B 16 -196 300 704 ; C 42 ; WX 500 ; N asterisk ; B 56 325 445 702 ; C 43 ; WX 667 ; N plus ; B 62 72 605 615 ; C 44 ; WX 271 ; N comma ; B 45 -179 229 149 ; C 45 ; WX 333 ; N hyphen ; B 24 180 310 283 ; C 46 ; WX 271 ; N period ; B 55 -14 215 148 ; C 47 ; WX 281 ; N slash ; B 0 -14 281 702 ; C 48 ; WX 500 ; N zero ; B 23 -12 477 698 ; C 49 ; WX 500 ; N one ; B 61 0 425 698 ; C 50 ; WX 500 ; N two ; B 20 0 477 698 ; C 51 ; WX 500 ; N three ; B 21 -12 475 698 ; C 52 ; WX 500 ; N four ; B 15 0 480 698 ; C 53 ; WX 500 ; N five ; B 23 -12 475 687 ; C 54 ; WX 500 ; N six ; B 26 -12 481 698 ; C 55 ; WX 500 ; N seven ; B 14 -12 482 686 ; C 56 ; WX 500 ; N eight ; B 23 -12 477 698 ; C 57 ; WX 500 ; N nine ; B 19 -12 475 698 ; C 58 ; WX 271 ; N colon ; B 55 -14 215 475 ; C 59 ; WX 271 ; N semicolon ; B 45 -179 229 475 ; C 60 ; WX 667 ; N less ; B 62 71 604 616 ; C 61 ; WX 667 ; N equal ; B 62 176 605 510 ; C 62 ; WX 667 ; N greater ; B 62 71 604 616 ; C 63 ; WX 385 ; N question ; B 14 -14 368 702 ; C 64 ; WX 958 ; N at ; B 45 -224 940 702 ; C 65 ; WX 719 ; N A ; B 14 0 704 698 ; C 66 ; WX 667 ; N B ; B 12 0 640 686 ; C 67 ; WX 719 ; N C ; B 46 -14 679 702 ; C 68 ; WX 771 ; N D ; B 18 0 736 687 ; C 69 ; WX 667 ; N E ; B 18 0 646 687 ; C 70 ; WX 604 ; N F ; B 12 0 582 686 ; C 71 ; WX 771 ; N G ; B 43 -14 757 702 ; C 72 ; WX 823 ; N H ; B 17 0 806 686 ; C 73 ; WX 385 ; N I ; B 17 0 369 686 ; C 74 ; WX 552 ; N J ; B 22 -14 536 686 ; C 75 ; WX 719 ; N K ; B 14 0 706 686 ; C 76 ; WX 667 ; N L ; B 16 0 644 686 ; C 77 ; WX 990 ; N M ; B 14 0 976 686 ; C 78 ; WX 771 ; N N ; B 15 -10 757 686 ; C 79 ; WX 823 ; N O ; B 41 -14 781 702 ; C 80 ; WX 667 ; N P ; B 18 0 643 686 ; C 81 ; WX 823 ; N Q ; B 41 -189 781 702 ; C 82 ; WX 719 ; N R ; B 19 0 701 686 ; C 83 ; WX 604 ; N S ; B 34 -14 570 702 ; C 84 ; WX 667 ; N T ; B 24 0 643 686 ; C 85 ; WX 771 ; N U ; B 14 -13 757 687 ; C 86 ; WX 719 ; N V ; B 17 -16 703 686 ; C 87 ; WX 990 ; N W ; B 12 -15 980 686 ; C 88 ; WX 719 ; N X ; B 17 0 702 686 ; C 89 ; WX 719 ; N Y ; B 14 0 705 686 ; C 90 ; WX 719 ; N Z ; B 32 0 687 686 ; C 91 ; WX 271 ; N bracketleft ; B 63 -179 256 687 ; C 92 ; WX 281 ; N backslash ; B 0 -14 281 702 ; C 93 ; WX 271 ; N bracketright ; B 15 -179 208 687 ; C 94 ; WX 510 ; N asciicircum ; B 38 337 471 687 ; C 95 ; WX 500 ; N underscore ; B -6 -125 506 -75 ; C 96 ; WX 333 ; N quoteleft ; B 51 533 255 704 ; C 97 ; WX 500 ; N a ; B 40 -14 486 475 ; C 98 ; WX 500 ; N b ; B 14 -14 481 687 ; C 99 ; WX 437 ; N c ; B 24 -14 425 475 ; C 100 ; WX 500 ; N d ; B 23 -14 486 687 ; C 101 ; WX 437 ; N e ; B 23 -14 418 475 ; C 102 ; WX 333 ; N f ; B 20 0 392 698 ; C 103 ; WX 500 ; N g ; B 31 -212 478 475 ; C 104 ; WX 500 ; N h ; B 17 0 489 687 ; C 105 ; WX 271 ; N i ; B 13 0 257 702 ; C 106 ; WX 271 ; N j ; B -20 -212 214 702 ; C 107 ; WX 552 ; N k ; B 14 0 538 687 ; C 108 ; WX 271 ; N l ; B 13 0 260 687 ; C 109 ; WX 771 ; N m ; B 13 0 757 475 ; C 110 ; WX 500 ; N n ; B 20 0 486 475 ; C 111 ; WX 500 ; N o ; B 28 -14 471 475 ; C 112 ; WX 500 ; N p ; B 14 -211 476 475 ; C 113 ; WX 505 ; N q ; B 24 -211 489 475 ; C 114 ; WX 385 ; N r ; B 11 0 364 475 ; C 115 ; WX 385 ; N s ; B 21 -14 370 475 ; C 116 ; WX 333 ; N t ; B 17 -14 316 631 ; C 117 ; WX 500 ; N u ; B 14 -14 483 464 ; C 118 ; WX 437 ; N v ; B 10 -13 428 464 ; C 119 ; WX 667 ; N w ; B 20 -12 647 464 ; C 120 ; WX 552 ; N x ; B 20 0 533 464 ; C 121 ; WX 500 ; N y ; B 17 -212 483 464 ; C 122 ; WX 437 ; N z ; B 13 0 422 464 ; C 123 ; WX 396 ; N braceleft ; B 81 -175 352 704 ; C 124 ; WX 219 ; N bar ; B 57 -212 163 702 ; C 125 ; WX 396 ; N braceright ; B 44 -176 315 704 ; C 126 ; WX 667 ; N asciitilde ; B 63 255 604 431 ; C 128 ; WX 250 ; N c128 ; B 0 0 0 0 ; C 129 ; WX 250 ; N c129 ; B 0 0 0 0 ; C 130 ; WX 250 ; N c130 ; B 0 0 0 0 ; C 131 ; WX 250 ; N c131 ; B 0 0 0 0 ; C 132 ; WX 250 ; N c132 ; B 0 0 0 0 ; C 133 ; WX 250 ; N c133 ; B 0 0 0 0 ; C 134 ; WX 250 ; N c134 ; B 0 0 0 0 ; C 135 ; WX 250 ; N c135 ; B 0 0 0 0 ; C 136 ; WX 250 ; N c136 ; B 0 0 0 0 ; C 137 ; WX 250 ; N c137 ; B 0 0 0 0 ; C 138 ; WX 250 ; N c138 ; B 0 0 0 0 ; C 139 ; WX 250 ; N c139 ; B 0 0 0 0 ; C 140 ; WX 250 ; N c140 ; B 0 0 0 0 ; C 141 ; WX 250 ; N c141 ; B 0 0 0 0 ; C 142 ; WX 250 ; N c142 ; B 0 0 0 0 ; C 143 ; WX 250 ; N c143 ; B 0 0 0 0 ; C 144 ; WX 250 ; N c144 ; B 0 0 0 0 ; C 145 ; WX 250 ; N c145 ; B 0 0 0 0 ; C 146 ; WX 250 ; N c146 ; B 0 0 0 0 ; C 147 ; WX 250 ; N c147 ; B 0 0 0 0 ; C 148 ; WX 250 ; N c148 ; B 0 0 0 0 ; C 149 ; WX 250 ; N c149 ; B 0 0 0 0 ; C 150 ; WX 250 ; N c150 ; B 0 0 0 0 ; C 151 ; WX 250 ; N c151 ; B 0 0 0 0 ; C 152 ; WX 250 ; N c152 ; B 0 0 0 0 ; C 153 ; WX 250 ; N c153 ; B 0 0 0 0 ; C 154 ; WX 250 ; N c154 ; B 0 0 0 0 ; C 155 ; WX 250 ; N c155 ; B 0 0 0 0 ; C 156 ; WX 250 ; N c156 ; B 0 0 0 0 ; C 157 ; WX 250 ; N c157 ; B 0 0 0 0 ; C 158 ; WX 250 ; N c158 ; B 0 0 0 0 ; C 159 ; WX 250 ; N c159 ; B 0 0 0 0 ; C 160 ; WX 250 ; N nbspace ; B 0 0 0 0 ; C 161 ; WX 250 ; N exclamdown ; B 0 0 0 0 ; C 162 ; WX 250 ; N cent ; B 0 0 0 0 ; C 163 ; WX 437 ; N sterling ; B 23 -14 418 676 ; C 164 ; WX 250 ; N currency ; B 0 0 0 0 ; C 165 ; WX 250 ; N yen ; B 0 0 0 0 ; C 166 ; WX 250 ; N brokenbar ; B 0 0 0 0 ; C 167 ; WX 250 ; N section ; B 0 0 0 0 ; C 168 ; WX 250 ; N dieresis ; B 0 0 0 0 ; C 169 ; WX 250 ; N copyright ; B 0 0 0 0 ; C 170 ; WX 250 ; N ordfeminine ; B 0 0 0 0 ; C 171 ; WX 250 ; N guillemotleft ; B 0 0 0 0 ; C 172 ; WX 250 ; N logicalnot ; B 0 0 0 0 ; C 173 ; WX 250 ; N softhyphen ; B 0 0 0 0 ; C 174 ; WX 250 ; N registered ; B 0 0 0 0 ; C 175 ; WX 250 ; N macron ; B 0 0 0 0 ; C 176 ; WX 250 ; N degree ; B 0 0 0 0 ; C 177 ; WX 250 ; N plusminus ; B 0 0 0 0 ; C 178 ; WX 250 ; N twosuperior ; B 0 0 0 0 ; C 179 ; WX 667 ; N threesuperior ; B 18 0 646 878 ; C 180 ; WX 250 ; N acute ; B 0 0 0 0 ; C 181 ; WX 250 ; N mu ; B 0 0 0 0 ; C 182 ; WX 250 ; N paragraph ; B 0 0 0 0 ; C 183 ; WX 250 ; N periodcentered ; B 0 0 0 0 ; C 184 ; WX 250 ; N cedilla ; B 0 0 0 0 ; C 185 ; WX 250 ; N onesuperior ; B 0 0 0 0 ; C 186 ; WX 250 ; N ordmasculine ; B 0 0 0 0 ; C 187 ; WX 250 ; N guillemotright ; B 0 0 0 0 ; C 188 ; WX 250 ; N onequarter ; B 0 0 0 0 ; C 189 ; WX 250 ; N onehalf ; B 0 0 0 0 ; C 190 ; WX 250 ; N threequarters ; B 0 0 0 0 ; C 191 ; WX 250 ; N questiondown ; B 0 0 0 0 ; C 192 ; WX 771 ; N Agrave ; B 21 -14 743 474 ; C 193 ; WX 500 ; N Aacute ; B 40 -14 486 475 ; C 194 ; WX 500 ; N Acircumflex ; B 27 -14 474 702 ; C 195 ; WX 552 ; N Atilde ; B 33 -122 530 464 ; C 196 ; WX 515 ; N Adieresis ; B 0 -122 494 464 ; C 197 ; WX 437 ; N Aring ; B 23 -14 418 475 ; C 198 ; WX 667 ; N AE ; B 29 -211 638 687 ; C 199 ; WX 423 ; N Ccedilla ; B 34 0 416 464 ; C 200 ; WX 552 ; N Egrave ; B 20 0 533 464 ; C 201 ; WX 545 ; N Eacute ; B 33 0 512 464 ; C 202 ; WX 545 ; N Ecircumflex ; B 33 0 512 677 ; C 203 ; WX 560 ; N Edieresis ; B 25 0 543 468 ; C 204 ; WX 542 ; N Igrave ; B 4 -4 521 464 ; C 205 ; WX 647 ; N Iacute ; B 21 0 625 464 ; C 206 ; WX 543 ; N Icircumflex ; B 33 0 511 464 ; C 207 ; WX 500 ; N Idieresis ; B 28 -14 471 475 ; C 208 ; WX 549 ; N Eth ; B 36 0 514 464 ; C 209 ; WX 499 ; N Ntilde ; B 16 0 482 464 ; C 210 ; WX 500 ; N Ograve ; B 14 -211 476 475 ; C 211 ; WX 437 ; N Oacute ; B 24 -14 425 475 ; C 212 ; WX 490 ; N Ocircumflex ; B 22 0 468 464 ; C 213 ; WX 500 ; N Otilde ; B 17 -212 483 464 ; C 214 ; WX 719 ; N Odieresis ; B 19 0 701 468 ; C 215 ; WX 507 ; N multiply ; B 27 0 475 464 ; C 216 ; WX 501 ; N Oslash ; B 26 0 475 464 ; C 217 ; WX 734 ; N Ugrave ; B 26 0 713 464 ; C 218 ; WX 417 ; N Uacute ; B 11 -14 388 475 ; C 219 ; WX 814 ; N Ucircumflex ; B 33 0 781 464 ; C 220 ; WX 437 ; N Udieresis ; B 20 -14 409 475 ; C 221 ; WX 816 ; N Yacute ; B 32 -122 796 464 ; C 222 ; WX 515 ; N Thorn ; B 14 0 482 464 ; C 223 ; WX 552 ; N germandbls ; B 17 0 526 464 ; C 224 ; WX 1152 ; N agrave ; B 17 -14 1115 702 ; C 225 ; WX 719 ; N aacute ; B 14 0 704 698 ; C 226 ; WX 668 ; N acircumflex ; B 19 0 640 687 ; C 227 ; WX 833 ; N atilde ; B 29 -192 804 687 ; C 228 ; WX 719 ; N adieresis ; B 1 -192 701 687 ; C 229 ; WX 667 ; N aring ; B 18 0 646 687 ; C 230 ; WX 878 ; N ae ; B 39 0 840 686 ; C 231 ; WX 646 ; N ccedilla ; B 18 0 636 687 ; C 232 ; WX 719 ; N egrave ; B 17 0 702 686 ; C 233 ; WX 833 ; N eacute ; B 18 0 815 686 ; C 234 ; WX 833 ; N ecircumflex ; B 18 0 815 877 ; C 235 ; WX 756 ; N edieresis ; B 18 0 740 695 ; C 236 ; WX 720 ; N igrave ; B -1 -8 703 687 ; C 237 ; WX 990 ; N iacute ; B 14 0 976 686 ; C 238 ; WX 823 ; N icircumflex ; B 17 0 806 686 ; C 239 ; WX 823 ; N idieresis ; B 41 -14 781 702 ; C 240 ; WX 833 ; N eth ; B 19 0 814 687 ; C 241 ; WX 719 ; N ntilde ; B 20 0 702 686 ; C 242 ; WX 667 ; N ograve ; B 18 0 643 686 ; C 243 ; WX 719 ; N oacute ; B 46 -14 679 702 ; C 244 ; WX 667 ; N ocircumflex ; B 24 0 643 686 ; C 245 ; WX 760 ; N otilde ; B 12 -14 747 686 ; C 246 ; WX 980 ; N odieresis ; B 15 0 965 694 ; C 247 ; WX 667 ; N divide ; B 12 0 640 686 ; C 248 ; WX 667 ; N oslash ; B 17 0 641 686 ; C 249 ; WX 1000 ; N ugrave ; B 19 0 982 686 ; C 250 ; WX 546 ; N uacute ; B 24 -14 511 702 ; C 251 ; WX 1096 ; N ucircumflex ; B 18 0 1079 687 ; C 252 ; WX 698 ; N udieresis ; B 30 -14 661 702 ; C 253 ; WX 1096 ; N yacute ; B 18 -192 1079 687 ; C 254 ; WX 771 ; N thorn ; B 12 0 756 687 ; C 255 ; WX 771 ; N ydieresis ; B 17 0 738 687 ; C -1 ; WX 333 ; N minus ; B 24 180 310 283 ; EndCharMetrics EndFontMetrics gle-graphics-4.2.4c/src/fonts/cyrillic/cokoi8n.afm0000664000000000000000000002522011405446017020525 0ustar rootrootStartFontMetrics 3.0 FontName ERKurierKOI8RRegular FullName ER Kurier KOI8 R FamilyName ER Kurier KOI8-R Weight Regular ItalicAngle 0 IsFixedPitch false FontBBox -49 -298 649 777 UnderlinePosition -475 UnderlineThickness 132 Version 5.0 Notice Gavin Helf, 1995. Changes 1996 by Andrey A.Chernov. Changes 1997 by E.V.Demidov EncodingScheme FontSpecific CapHeight 596 XHeight 450 Ascender 645 Descender -200 StartCharMetrics 224 C 32 ; WX 600 ; N space ; B 0 0 0 0 ; C 33 ; WX 600 ; N exclam ; B 228 -27 373 640 ; C 34 ; WX 600 ; N quotedbl ; B 130 332 469 603 ; C 35 ; WX 600 ; N numbersign ; B 79 -75 520 670 ; C 36 ; WX 600 ; N dollar ; B 99 -105 500 677 ; C 37 ; WX 600 ; N percent ; B 79 -24 522 634 ; C 38 ; WX 600 ; N ampersand ; B 112 -28 511 539 ; C 39 ; WX 600 ; N quoteright ; B 235 320 364 613 ; C 40 ; WX 600 ; N parenleft ; B 226 -139 416 625 ; C 41 ; WX 600 ; N parenright ; B 184 -139 373 625 ; C 42 ; WX 600 ; N asterisk ; B 100 241 500 625 ; C 43 ; WX 600 ; N plus ; B 58 21 542 550 ; C 44 ; WX 600 ; N comma ; B 146 -146 352 147 ; C 45 ; WX 600 ; N hyphen ; B 79 241 521 324 ; C 46 ; WX 600 ; N period ; B 225 -15 375 118 ; C 47 ; WX 600 ; N slash ; B 100 -95 501 690 ; C 48 ; WX 600 ; N zero ; B 100 -27 501 639 ; C 49 ; WX 600 ; N one ; B 99 -12 500 638 ; C 50 ; WX 600 ; N two ; B 71 -12 492 639 ; C 51 ; WX 600 ; N three ; B 83 -27 512 639 ; C 52 ; WX 600 ; N four ; B 92 -12 492 625 ; C 53 ; WX 600 ; N five ; B 83 -27 512 625 ; C 54 ; WX 600 ; N six ; B 122 -27 525 639 ; C 55 ; WX 600 ; N seven ; B 91 -13 491 625 ; C 56 ; WX 600 ; N eight ; B 101 -27 500 639 ; C 57 ; WX 600 ; N nine ; B 122 -27 523 639 ; C 58 ; WX 600 ; N colon ; B 225 -15 375 423 ; C 59 ; WX 600 ; N semicolon ; B 153 -104 375 423 ; C 60 ; WX 600 ; N less ; B 33 20 550 550 ; C 61 ; WX 600 ; N equal ; B 37 180 563 393 ; C 62 ; WX 600 ; N greater ; B 37 20 554 550 ; C 63 ; WX 600 ; N question ; B 120 -15 499 598 ; C 64 ; WX 600 ; N at ; B 93 -75 492 645 ; C 65 ; WX 600 ; N A ; B -4 -12 605 583 ; C 66 ; WX 600 ; N B ; B 30 -12 556 583 ; C 67 ; WX 600 ; N C ; B 50 -28 549 596 ; C 68 ; WX 600 ; N D ; B 65 -12 570 583 ; C 69 ; WX 600 ; N E ; B 31 -12 535 583 ; C 70 ; WX 600 ; N F ; B 65 -12 568 583 ; C 71 ; WX 600 ; N G ; B 51 -28 577 596 ; C 72 ; WX 600 ; N H ; B 40 -12 566 583 ; C 73 ; WX 600 ; N I ; B 100 -12 501 583 ; C 74 ; WX 600 ; N J ; B 57 -28 583 583 ; C 75 ; WX 600 ; N K ; B 31 -12 587 583 ; C 76 ; WX 600 ; N L ; B 50 -12 555 583 ; C 77 ; WX 600 ; N M ; B 0 -12 606 583 ; C 78 ; WX 600 ; N N ; B 10 -12 575 583 ; C 79 ; WX 600 ; N O ; B 38 -28 562 596 ; C 80 ; WX 600 ; N P ; B 75 -12 556 583 ; C 81 ; WX 600 ; N Q ; B 39 -129 563 596 ; C 82 ; WX 600 ; N R ; B 31 -12 605 583 ; C 83 ; WX 600 ; N S ; B 78 -28 522 596 ; C 84 ; WX 600 ; N T ; B 58 -12 541 583 ; C 85 ; WX 600 ; N U ; B 28 -28 573 583 ; C 86 ; WX 600 ; N V ; B -4 -12 605 583 ; C 87 ; WX 600 ; N W ; B 8 -12 594 583 ; C 88 ; WX 600 ; N X ; B 27 -12 574 583 ; C 89 ; WX 600 ; N Y ; B 36 -12 563 583 ; C 90 ; WX 600 ; N Z ; B 92 -12 511 583 ; C 91 ; WX 600 ; N bracketleft ; B 235 -138 427 625 ; C 92 ; WX 600 ; N backslash ; B 86 -98 487 688 ; C 93 ; WX 600 ; N bracketright ; B 173 -138 365 625 ; C 94 ; WX 600 ; N asciicircum ; B 100 347 501 645 ; C 95 ; WX 600 ; N underscore ; B -25 -298 625 -233 ; C 96 ; WX 600 ; N quoteleft ; B 205 486 396 661 ; C 97 ; WX 600 ; N a ; B 58 -28 554 449 ; C 98 ; WX 600 ; N b ; B 10 -28 554 625 ; C 99 ; WX 600 ; N c ; B 72 -28 549 449 ; C 100 ; WX 600 ; N d ; B 50 -28 596 625 ; C 101 ; WX 600 ; N e ; B 51 -28 535 449 ; C 102 ; WX 600 ; N f ; B 93 -12 556 625 ; C 103 ; WX 600 ; N g ; B 49 -200 574 449 ; C 104 ; WX 600 ; N h ; B 29 -12 565 625 ; C 105 ; WX 600 ; N i ; B 80 -12 523 645 ; C 106 ; WX 600 ; N j ; B 76 -200 414 645 ; C 107 ; WX 600 ; N k ; B 81 -12 584 625 ; C 108 ; WX 600 ; N l ; B 79 -12 522 625 ; C 109 ; WX 600 ; N m ; B -2 -12 605 450 ; C 110 ; WX 600 ; N n ; B 41 -12 555 449 ; C 111 ; WX 600 ; N o ; B 59 -28 541 449 ; C 112 ; WX 600 ; N p ; B 10 -200 554 449 ; C 113 ; WX 600 ; N q ; B 51 -200 595 449 ; C 114 ; WX 600 ; N r ; B 71 -12 556 445 ; C 115 ; WX 600 ; N s ; B 89 -28 511 449 ; C 116 ; WX 600 ; N t ; B 59 -28 541 583 ; C 117 ; WX 600 ; N u ; B 32 -28 556 435 ; C 118 ; WX 600 ; N v ; B 17 -12 583 435 ; C 119 ; WX 600 ; N w ; B 15 -13 584 435 ; C 120 ; WX 600 ; N x ; B 38 -12 564 435 ; C 121 ; WX 600 ; N y ; B 61 -200 586 435 ; C 122 ; WX 600 ; N z ; B 104 -12 503 435 ; C 123 ; WX 600 ; N braceleft ; B 190 -136 420 628 ; C 124 ; WX 600 ; N bar ; B 268 -139 333 625 ; C 125 ; WX 600 ; N braceright ; B 180 -139 410 625 ; C 126 ; WX 600 ; N asciitilde ; B 79 199 521 371 ; C 128 ; WX 600 ; N c128 ; B -48 104 622 167 ; C 129 ; WX 600 ; N c129 ; B 254 -220 318 684 ; C 130 ; WX 600 ; N c130 ; B 255 -220 622 167 ; C 131 ; WX 600 ; N c131 ; B -49 -220 318 167 ; C 132 ; WX 600 ; N c132 ; B 255 104 622 684 ; C 133 ; WX 600 ; N c133 ; B -49 104 318 684 ; C 134 ; WX 600 ; N c134 ; B 255 -220 622 684 ; C 135 ; WX 600 ; N c135 ; B -49 -220 318 684 ; C 136 ; WX 600 ; N c136 ; B -49 -220 622 167 ; C 137 ; WX 600 ; N c137 ; B -49 104 622 684 ; C 138 ; WX 600 ; N c138 ; B -49 -220 622 684 ; C 139 ; WX 600 ; N c139 ; B -48 232 649 684 ; C 140 ; WX 600 ; N c140 ; B -48 -220 649 232 ; C 141 ; WX 600 ; N c141 ; B -48 -220 649 684 ; C 142 ; WX 600 ; N c142 ; B -49 -220 300 684 ; C 143 ; WX 600 ; N c143 ; B 300 -220 649 684 ; C 144 ; WX 600 ; N c144 ; B 75 -220 601 682 ; C 145 ; WX 600 ; N c145 ; B 0 -220 601 682 ; C 146 ; WX 600 ; N c146 ; B 0 -220 601 682 ; C 147 ; WX 600 ; N c147 ; B 273 -220 457 777 ; C 148 ; WX 600 ; N c148 ; B 101 -12 506 583 ; C 149 ; WX 600 ; N c149 ; B 180 190 421 431 ; C 150 ; WX 600 ; N c150 ; B 41 -95 604 690 ; C 151 ; WX 600 ; N c151 ; B 79 121 521 454 ; C 152 ; WX 600 ; N c152 ; B 25 -12 542 618 ; C 153 ; WX 600 ; N c153 ; B 56 -12 573 618 ; C 154 ; WX 600 ; N c154 ; B 0 0 0 0 ; C 155 ; WX 600 ; N c155 ; B 157 -220 339 777 ; C 156 ; WX 600 ; N c156 ; B 153 445 448 740 ; C 157 ; WX 600 ; N c157 ; B 154 347 424 698 ; C 158 ; WX 600 ; N c158 ; B 225 245 375 377 ; C 159 ; WX 600 ; N c159 ; B 79 63 521 501 ; C 160 ; WX 600 ; N nbspace ; B -7 141 607 369 ; C 161 ; WX 600 ; N exclamdown ; B 186 -255 414 766 ; C 162 ; WX 600 ; N cent ; B 265 -255 607 369 ; C 163 ; WX 600 ; N sterling ; B 51 -28 535 645 ; C 164 ; WX 600 ; N currency ; B 186 -255 607 291 ; C 165 ; WX 600 ; N yen ; B 186 -255 607 369 ; C 166 ; WX 600 ; N brokenbar ; B -7 -255 336 369 ; C 167 ; WX 600 ; N section ; B -7 -255 414 291 ; C 168 ; WX 600 ; N dieresis ; B -7 -255 414 369 ; C 169 ; WX 600 ; N copyright ; B 265 141 607 766 ; C 170 ; WX 600 ; N ordfeminine ; B 186 219 607 766 ; C 171 ; WX 600 ; N guillemotleft ; B 186 141 607 766 ; C 172 ; WX 600 ; N logicalnot ; B -7 141 336 766 ; C 173 ; WX 600 ; N softhyphen ; B -7 219 414 766 ; C 174 ; WX 600 ; N registered ; B -7 141 414 766 ; C 175 ; WX 600 ; N macron ; B 265 -255 607 766 ; C 176 ; WX 600 ; N degree ; B 186 -255 607 766 ; C 177 ; WX 600 ; N plusminus ; B 186 -255 607 766 ; C 178 ; WX 600 ; N twosuperior ; B -7 -255 336 766 ; C 179 ; WX 600 ; N threesuperior ; B 31 -12 535 777 ; C 180 ; WX 600 ; N acute ; B -7 -255 414 766 ; C 181 ; WX 600 ; N mu ; B -7 -255 414 766 ; C 182 ; WX 600 ; N paragraph ; B -7 -255 607 369 ; C 183 ; WX 600 ; N periodcentered ; B -7 -255 607 291 ; C 184 ; WX 600 ; N cedilla ; B -7 -255 607 369 ; C 185 ; WX 600 ; N onesuperior ; B -7 141 607 766 ; C 186 ; WX 600 ; N ordmasculine ; B -7 219 607 766 ; C 187 ; WX 600 ; N guillemotright ; B -7 141 607 766 ; C 188 ; WX 600 ; N onequarter ; B -7 -255 607 766 ; C 189 ; WX 600 ; N onehalf ; B -7 -255 607 766 ; C 190 ; WX 600 ; N threequarters ; B -7 -255 607 766 ; C 191 ; WX 600 ; N questiondown ; B -12 -25 609 596 ; C 192 ; WX 600 ; N Agrave ; B 4 -26 591 448 ; C 193 ; WX 600 ; N Aacute ; B 58 -28 554 449 ; C 194 ; WX 600 ; N Acircumflex ; B 68 -28 530 703 ; C 195 ; WX 600 ; N Atilde ; B 41 -139 566 435 ; C 196 ; WX 600 ; N Adieresis ; B 28 -139 559 435 ; C 197 ; WX 600 ; N Aring ; B 51 -28 535 449 ; C 198 ; WX 600 ; N AE ; B 45 -201 563 630 ; C 199 ; WX 600 ; N Ccedilla ; B 60 -12 512 435 ; C 200 ; WX 600 ; N Egrave ; B 38 -12 564 435 ; C 201 ; WX 600 ; N Eacute ; B 41 -12 566 434 ; C 202 ; WX 600 ; N Ecircumflex ; B 41 -12 566 630 ; C 203 ; WX 600 ; N Edieresis ; B 81 -12 584 434 ; C 204 ; WX 600 ; N Igrave ; B 17 -12 585 435 ; C 205 ; WX 600 ; N Iacute ; B -1 -12 605 435 ; C 206 ; WX 600 ; N Icircumflex ; B 41 -12 566 434 ; C 207 ; WX 600 ; N Idieresis ; B 59 -28 541 449 ; C 208 ; WX 600 ; N Eth ; B 41 -12 566 435 ; C 209 ; WX 600 ; N Ntilde ; B 42 -12 551 435 ; C 210 ; WX 600 ; N Ograve ; B 10 -200 554 449 ; C 211 ; WX 600 ; N Oacute ; B 72 -28 549 449 ; C 212 ; WX 600 ; N Ocircumflex ; B 58 -12 541 435 ; C 213 ; WX 600 ; N Otilde ; B 61 -200 586 435 ; C 214 ; WX 600 ; N Odieresis ; B -8 -12 603 440 ; C 215 ; WX 600 ; N multiply ; B 73 -12 544 435 ; C 216 ; WX 600 ; N Oslash ; B 73 -12 544 435 ; C 217 ; WX 600 ; N Ugrave ; B 3 -12 599 435 ; C 218 ; WX 600 ; N Uacute ; B 89 -28 511 450 ; C 219 ; WX 600 ; N Ucircumflex ; B 28 -12 579 435 ; C 220 ; WX 600 ; N Udieresis ; B 63 -28 540 449 ; C 221 ; WX 600 ; N Yacute ; B 28 -139 578 435 ; C 222 ; WX 600 ; N Thorn ; B 32 -12 568 435 ; C 223 ; WX 600 ; N germandbls ; B 35 -12 574 435 ; C 224 ; WX 600 ; N agrave ; B 4 -27 593 598 ; C 225 ; WX 600 ; N aacute ; B -4 -12 605 583 ; C 226 ; WX 600 ; N acircumflex ; B 30 -12 556 583 ; C 227 ; WX 600 ; N atilde ; B 30 -203 557 583 ; C 228 ; WX 600 ; N adieresis ; B 28 -203 559 583 ; C 229 ; WX 600 ; N aring ; B 31 -12 535 583 ; C 230 ; WX 600 ; N ae ; B 4 -12 596 583 ; C 231 ; WX 600 ; N ccedilla ; B 50 -12 555 583 ; C 232 ; WX 600 ; N egrave ; B 27 -12 574 583 ; C 233 ; WX 600 ; N eacute ; B 19 -12 587 583 ; C 234 ; WX 600 ; N ecircumflex ; B 19 -12 587 720 ; C 235 ; WX 600 ; N edieresis ; B 31 -12 587 583 ; C 236 ; WX 600 ; N igrave ; B -3 -12 566 583 ; C 237 ; WX 600 ; N iacute ; B 0 -12 606 583 ; C 238 ; WX 600 ; N icircumflex ; B 40 -12 566 583 ; C 239 ; WX 600 ; N idieresis ; B 38 -28 562 596 ; C 240 ; WX 600 ; N eth ; B 40 -12 566 583 ; C 241 ; WX 600 ; N ntilde ; B 5 -12 580 583 ; C 242 ; WX 600 ; N ograve ; B 75 -12 556 583 ; C 243 ; WX 600 ; N oacute ; B 50 -28 549 596 ; C 244 ; WX 600 ; N ocircumflex ; B 58 -12 541 583 ; C 245 ; WX 600 ; N otilde ; B 32 -29 576 586 ; C 246 ; WX 600 ; N odieresis ; B -5 -12 601 585 ; C 247 ; WX 600 ; N divide ; B 30 -12 556 583 ; C 248 ; WX 600 ; N oslash ; B 75 -12 556 583 ; C 249 ; WX 600 ; N ugrave ; B 7 -12 589 583 ; C 250 ; WX 600 ; N uacute ; B 79 -16 528 585 ; C 251 ; WX 600 ; N ucircumflex ; B 2 -12 590 583 ; C 252 ; WX 600 ; N udieresis ; B 53 -28 552 596 ; C 253 ; WX 600 ; N yacute ; B 2 -203 592 583 ; C 254 ; WX 600 ; N thorn ; B 34 -12 570 582 ; C 255 ; WX 600 ; N ydieresis ; B 30 -12 576 583 ; C -1 ; WX 600 ; N minus ; B 79 241 521 324 ; EndCharMetrics EndFontMetrics gle-graphics-4.2.4c/src/fonts/cyrillic/cokoi8bi.afm0000664000000000000000000002531211405446017020664 0ustar rootrootStartFontMetrics 3.0 FontName ERKurierKOI8RBoldItalic FullName ER Kurier KOI8 R Bold Italic FamilyName ER Kurier KOI8-R Weight BoldItalic ItalicAngle 0 IsFixedPitch false FontBBox -108 -323 747 801 UnderlinePosition -475 UnderlineThickness 132 Version 5.0 Notice Gavin Helf, 1995. Changes 1996 by Andrey A.Chernov. Changes 1997 by E.V.Demidov EncodingScheme FontSpecific CapHeight 621 XHeight 475 Ascender 670 Descender -225 StartCharMetrics 224 C 32 ; WX 600 ; N space ; B 0 0 0 0 ; C 33 ; WX 600 ; N exclam ; B 208 -51 504 664 ; C 34 ; WX 600 ; N quotedbl ; B 217 307 631 627 ; C 35 ; WX 600 ; N numbersign ; B 99 -100 628 695 ; C 36 ; WX 600 ; N dollar ; B 93 -130 622 701 ; C 37 ; WX 600 ; N percent ; B 106 -48 626 659 ; C 38 ; WX 600 ; N ampersand ; B 113 -53 586 563 ; C 39 ; WX 600 ; N quoteright ; B 320 295 529 637 ; C 40 ; WX 600 ; N parenleft ; B 242 -164 567 649 ; C 41 ; WX 600 ; N parenright ; B 135 -164 461 649 ; C 42 ; WX 600 ; N asterisk ; B 176 217 627 649 ; C 43 ; WX 600 ; N plus ; B 94 -4 629 574 ; C 44 ; WX 600 ; N comma ; B 96 -171 430 172 ; C 45 ; WX 600 ; N hyphen ; B 101 217 621 349 ; C 46 ; WX 600 ; N period ; B 209 -39 413 142 ; C 47 ; WX 600 ; N slash ; B 61 -119 667 715 ; C 48 ; WX 600 ; N zero ; B 120 -51 613 664 ; C 49 ; WX 600 ; N one ; B 78 -36 530 671 ; C 50 ; WX 600 ; N two ; B 39 -36 618 664 ; C 51 ; WX 600 ; N three ; B 72 -51 620 664 ; C 52 ; WX 600 ; N four ; B 96 -36 593 649 ; C 53 ; WX 600 ; N five ; B 76 -51 624 649 ; C 54 ; WX 600 ; N six ; B 149 -51 675 664 ; C 55 ; WX 600 ; N seven ; B 179 -38 655 649 ; C 56 ; WX 600 ; N eight ; B 107 -51 617 664 ; C 57 ; WX 600 ; N nine ; B 103 -51 627 664 ; C 58 ; WX 600 ; N colon ; B 209 -39 478 447 ; C 59 ; WX 600 ; N semicolon ; B 110 -129 478 447 ; C 60 ; WX 600 ; N less ; B 44 -5 687 574 ; C 61 ; WX 600 ; N equal ; B 58 156 666 417 ; C 62 ; WX 600 ; N greater ; B 22 -5 666 574 ; C 63 ; WX 600 ; N question ; B 193 -39 618 623 ; C 64 ; WX 600 ; N at ; B 102 -100 602 670 ; C 65 ; WX 600 ; N A ; B -25 -37 635 608 ; C 66 ; WX 600 ; N B ; B 10 -36 632 608 ; C 67 ; WX 600 ; N C ; B 71 -53 676 621 ; C 68 ; WX 600 ; N D ; B 44 -36 669 608 ; C 69 ; WX 600 ; N E ; B 10 -36 668 608 ; C 70 ; WX 600 ; N F ; B 45 -36 723 608 ; C 71 ; WX 600 ; N G ; B 69 -53 678 621 ; C 72 ; WX 600 ; N H ; B 19 -37 689 608 ; C 73 ; WX 600 ; N I ; B 79 -36 644 608 ; C 74 ; WX 600 ; N J ; B 45 -53 726 608 ; C 75 ; WX 600 ; N K ; B 11 -36 709 608 ; C 76 ; WX 600 ; N L ; B 30 -36 625 608 ; C 77 ; WX 600 ; N M ; B -21 -36 740 608 ; C 78 ; WX 600 ; N N ; B 10 -36 719 608 ; C 79 ; WX 600 ; N O ; B 64 -53 657 621 ; C 80 ; WX 600 ; N P ; B 55 -36 672 608 ; C 81 ; WX 600 ; N Q ; B 65 -153 658 621 ; C 82 ; WX 600 ; N R ; B 10 -36 635 608 ; C 83 ; WX 600 ; N S ; B 58 -53 643 621 ; C 84 ; WX 600 ; N T ; B 112 -36 696 608 ; C 85 ; WX 600 ; N U ; B 100 -53 716 608 ; C 86 ; WX 600 ; N V ; B 87 -37 747 608 ; C 87 ; WX 600 ; N W ; B 82 -37 737 608 ; C 88 ; WX 600 ; N X ; B 6 -37 705 608 ; C 89 ; WX 600 ; N Y ; B 113 -36 706 608 ; C 90 ; WX 600 ; N Z ; B 59 -36 643 608 ; C 91 ; WX 600 ; N bracketleft ; B 175 -163 579 649 ; C 92 ; WX 600 ; N backslash ; B 201 -122 498 712 ; C 93 ; WX 600 ; N bracketright ; B 125 -163 529 649 ; C 94 ; WX 600 ; N asciicircum ; B 154 323 607 685 ; C 95 ; WX 600 ; N underscore ; B -108 -323 594 -209 ; C 96 ; WX 600 ; N quoteleft ; B 313 462 532 686 ; C 97 ; WX 600 ; N a ; B 54 -53 584 474 ; C 98 ; WX 600 ; N b ; B -11 -53 631 649 ; C 99 ; WX 600 ; N c ; B 85 -53 636 474 ; C 100 ; WX 600 ; N d ; B 64 -53 677 649 ; C 101 ; WX 600 ; N e ; B 66 -53 607 474 ; C 102 ; WX 600 ; N f ; B 72 -36 705 649 ; C 103 ; WX 600 ; N g ; B 66 -225 685 474 ; C 104 ; WX 600 ; N h ; B 17 -37 595 649 ; C 105 ; WX 600 ; N i ; B 60 -36 553 670 ; C 106 ; WX 600 ; N j ; B 15 -225 539 670 ; C 107 ; WX 600 ; N k ; B 60 -36 642 649 ; C 108 ; WX 600 ; N l ; B 59 -36 552 649 ; C 109 ; WX 600 ; N m ; B -23 -37 644 475 ; C 110 ; WX 600 ; N n ; B 20 -37 585 474 ; C 111 ; WX 600 ; N o ; B 72 -53 617 474 ; C 112 ; WX 600 ; N p ; B -51 -225 633 474 ; C 113 ; WX 600 ; N q ; B 68 -225 707 474 ; C 114 ; WX 600 ; N r ; B 51 -36 661 470 ; C 115 ; WX 600 ; N s ; B 68 -53 600 474 ; C 116 ; WX 600 ; N t ; B 119 -53 589 608 ; C 117 ; WX 600 ; N u ; B 92 -53 616 459 ; C 118 ; WX 600 ; N v ; B 77 -37 695 459 ; C 119 ; WX 600 ; N w ; B 76 -38 696 459 ; C 120 ; WX 600 ; N x ; B 16 -37 653 459 ; C 121 ; WX 600 ; N y ; B 1 -225 698 459 ; C 122 ; WX 600 ; N z ; B 71 -36 614 459 ; C 123 ; WX 600 ; N braceleft ; B 217 -160 572 652 ; C 124 ; WX 600 ; N bar ; B 220 -163 485 649 ; C 125 ; WX 600 ; N braceright ; B 132 -164 489 649 ; C 126 ; WX 600 ; N asciitilde ; B 110 174 613 396 ; C 128 ; WX 600 ; N c128 ; B -49 104 622 167 ; C 129 ; WX 600 ; N c129 ; B 254 -220 318 684 ; C 130 ; WX 600 ; N c130 ; B 255 -220 622 167 ; C 131 ; WX 600 ; N c131 ; B -49 -220 318 167 ; C 132 ; WX 600 ; N c132 ; B 255 104 622 684 ; C 133 ; WX 600 ; N c133 ; B -49 104 319 684 ; C 134 ; WX 600 ; N c134 ; B 255 -220 622 684 ; C 135 ; WX 600 ; N c135 ; B -49 -220 319 684 ; C 136 ; WX 600 ; N c136 ; B -49 -220 622 167 ; C 137 ; WX 600 ; N c137 ; B -49 104 622 684 ; C 138 ; WX 600 ; N c138 ; B -49 -220 622 684 ; C 139 ; WX 600 ; N c139 ; B -49 232 649 684 ; C 140 ; WX 600 ; N c140 ; B -49 -220 649 232 ; C 141 ; WX 600 ; N c141 ; B -49 -220 649 684 ; C 142 ; WX 600 ; N c142 ; B -49 -220 300 684 ; C 143 ; WX 600 ; N c143 ; B 300 -220 649 684 ; C 144 ; WX 600 ; N c144 ; B 75 -220 601 682 ; C 145 ; WX 600 ; N c145 ; B 0 -220 602 682 ; C 146 ; WX 600 ; N c146 ; B 0 -220 602 682 ; C 147 ; WX 600 ; N c147 ; B 249 -245 481 801 ; C 148 ; WX 600 ; N c148 ; B 76 -37 530 608 ; C 149 ; WX 600 ; N c149 ; B 155 166 446 456 ; C 150 ; WX 600 ; N c150 ; B 17 -127 629 715 ; C 151 ; WX 600 ; N c151 ; B 55 96 546 479 ; C 152 ; WX 600 ; N c152 ; B -26 -36 567 643 ; C 153 ; WX 600 ; N c153 ; B 31 -36 624 643 ; C 154 ; WX 600 ; N c154 ; B 0 0 0 0 ; C 155 ; WX 600 ; N c155 ; B 132 -244 364 801 ; C 156 ; WX 600 ; N c156 ; B 128 420 472 765 ; C 157 ; WX 600 ; N c157 ; B 130 323 449 723 ; C 158 ; WX 600 ; N c158 ; B 201 220 400 401 ; C 159 ; WX 600 ; N c159 ; B 54 39 546 525 ; C 160 ; WX 600 ; N nbspace ; B -7 141 608 369 ; C 161 ; WX 600 ; N exclamdown ; B 186 -255 414 766 ; C 162 ; WX 600 ; N cent ; B 264 -255 607 369 ; C 163 ; WX 600 ; N sterling ; B 66 -53 607 669 ; C 164 ; WX 600 ; N currency ; B 186 -255 607 291 ; C 165 ; WX 600 ; N yen ; B 186 -255 607 369 ; C 166 ; WX 600 ; N brokenbar ; B -7 -255 336 369 ; C 167 ; WX 600 ; N section ; B -7 -255 414 291 ; C 168 ; WX 600 ; N dieresis ; B -7 -255 414 369 ; C 169 ; WX 600 ; N copyright ; B 264 141 607 766 ; C 170 ; WX 600 ; N ordfeminine ; B 186 219 607 766 ; C 171 ; WX 600 ; N guillemotleft ; B 186 141 607 766 ; C 172 ; WX 600 ; N logicalnot ; B -7 141 336 766 ; C 173 ; WX 600 ; N softhyphen ; B -7 219 414 766 ; C 174 ; WX 600 ; N registered ; B -7 141 414 766 ; C 175 ; WX 600 ; N macron ; B 264 -255 607 766 ; C 176 ; WX 600 ; N degree ; B -7 -255 414 766 ; C 177 ; WX 600 ; N plusminus ; B -7 -255 414 766 ; C 178 ; WX 600 ; N twosuperior ; B -7 -255 607 369 ; C 179 ; WX 600 ; N threesuperior ; B 10 -36 668 801 ; C 180 ; WX 600 ; N acute ; B -7 -255 414 766 ; C 181 ; WX 600 ; N mu ; B -7 -255 414 766 ; C 182 ; WX 600 ; N paragraph ; B -7 -255 607 369 ; C 183 ; WX 600 ; N periodcentered ; B -7 -255 607 291 ; C 184 ; WX 600 ; N cedilla ; B -7 -255 607 369 ; C 185 ; WX 600 ; N onesuperior ; B -7 141 607 766 ; C 186 ; WX 600 ; N ordmasculine ; B -7 219 607 766 ; C 187 ; WX 600 ; N guillemotright ; B -7 141 607 766 ; C 188 ; WX 600 ; N onequarter ; B -7 -255 607 766 ; C 189 ; WX 600 ; N onehalf ; B -7 -255 607 766 ; C 190 ; WX 600 ; N threequarters ; B -7 -255 607 766 ; C 191 ; WX 600 ; N questiondown ; B 16 -50 703 620 ; C 192 ; WX 600 ; N Agrave ; B -16 -51 668 473 ; C 193 ; WX 600 ; N Aacute ; B 54 -53 584 474 ; C 194 ; WX 600 ; N Acircumflex ; B 81 -53 660 727 ; C 195 ; WX 600 ; N Atilde ; B 94 -163 617 459 ; C 196 ; WX 600 ; N Adieresis ; B 87 -53 639 727 ; C 197 ; WX 600 ; N Aring ; B 66 -53 607 474 ; C 198 ; WX 600 ; N AE ; B 58 -225 639 654 ; C 199 ; WX 600 ; N Ccedilla ; B 68 -53 568 474 ; C 200 ; WX 600 ; N Egrave ; B 16 -37 653 459 ; C 201 ; WX 600 ; N Eacute ; B 94 -53 617 459 ; C 202 ; WX 600 ; N Ecircumflex ; B 94 -53 617 654 ; C 203 ; WX 600 ; N Edieresis ; B 60 -36 642 459 ; C 204 ; WX 600 ; N Igrave ; B -5 -37 685 459 ; C 205 ; WX 600 ; N Iacute ; B -22 -37 716 459 ; C 206 ; WX 600 ; N Icircumflex ; B 20 -37 677 459 ; C 207 ; WX 600 ; N Idieresis ; B 72 -53 617 474 ; C 208 ; WX 600 ; N Eth ; B 20 -37 585 474 ; C 209 ; WX 600 ; N Ntilde ; B 21 -37 663 460 ; C 210 ; WX 600 ; N Ograve ; B -51 -225 633 474 ; C 211 ; WX 600 ; N Oacute ; B 85 -53 636 474 ; C 212 ; WX 600 ; N Ocircumflex ; B -23 -37 644 475 ; C 213 ; WX 600 ; N Otilde ; B 1 -225 698 459 ; C 214 ; WX 600 ; N Odieresis ; B -29 -37 675 464 ; C 215 ; WX 600 ; N multiply ; B 52 -36 598 459 ; C 216 ; WX 600 ; N Oslash ; B 52 -36 598 459 ; C 217 ; WX 600 ; N Ugrave ; B -18 -36 710 459 ; C 218 ; WX 600 ; N Uacute ; B 86 -53 584 474 ; C 219 ; WX 600 ; N Ucircumflex ; B -32 -56 635 456 ; C 220 ; WX 600 ; N Udieresis ; B 56 -53 616 474 ; C 221 ; WX 600 ; N Yacute ; B -32 -167 635 456 ; C 222 ; WX 600 ; N Thorn ; B 93 -37 671 459 ; C 223 ; WX 600 ; N germandbls ; B 68 -36 627 459 ; C 224 ; WX 600 ; N agrave ; B -16 -51 696 622 ; C 225 ; WX 600 ; N aacute ; B -25 -37 635 608 ; C 226 ; WX 600 ; N acircumflex ; B 10 -36 668 608 ; C 227 ; WX 600 ; N atilde ; B 29 -227 700 608 ; C 228 ; WX 600 ; N adieresis ; B -33 -227 689 608 ; C 229 ; WX 600 ; N aring ; B 10 -36 668 608 ; C 230 ; WX 600 ; N ae ; B 35 -37 687 608 ; C 231 ; WX 600 ; N ccedilla ; B 29 -36 710 608 ; C 232 ; WX 600 ; N egrave ; B 6 -37 705 608 ; C 233 ; WX 600 ; N eacute ; B -2 -36 730 608 ; C 234 ; WX 600 ; N ecircumflex ; B -2 -36 730 768 ; C 235 ; WX 600 ; N edieresis ; B 11 -36 709 608 ; C 236 ; WX 600 ; N igrave ; B -24 -37 689 608 ; C 237 ; WX 600 ; N iacute ; B -21 -36 740 608 ; C 238 ; WX 600 ; N icircumflex ; B 19 -37 689 608 ; C 239 ; WX 600 ; N idieresis ; B 64 -53 657 621 ; C 240 ; WX 600 ; N eth ; B 19 -37 689 608 ; C 241 ; WX 600 ; N ntilde ; B -16 -36 723 608 ; C 242 ; WX 600 ; N ograve ; B 55 -36 672 608 ; C 243 ; WX 600 ; N oacute ; B 71 -53 676 621 ; C 244 ; WX 600 ; N ocircumflex ; B 112 -36 696 608 ; C 245 ; WX 600 ; N otilde ; B 8 -54 720 611 ; C 246 ; WX 600 ; N odieresis ; B -26 -37 729 610 ; C 247 ; WX 600 ; N divide ; B 10 -36 632 608 ; C 248 ; WX 600 ; N oslash ; B 53 -36 621 608 ; C 249 ; WX 600 ; N ugrave ; B -15 -36 732 608 ; C 250 ; WX 600 ; N uacute ; B 79 -41 604 610 ; C 251 ; WX 600 ; N ucircumflex ; B -15 -36 733 608 ; C 252 ; WX 600 ; N udieresis ; B 51 -53 654 621 ; C 253 ; WX 600 ; N yacute ; B -15 -227 733 608 ; C 254 ; WX 600 ; N thorn ; B 127 -36 705 607 ; C 255 ; WX 600 ; N ydieresis ; B 73 -36 641 608 ; C -1 ; WX 600 ; N minus ; B 101 217 621 349 ; EndCharMetrics EndFontMetrics gle-graphics-4.2.4c/src/fonts/cyrillic/cokoi8i.afm0000664000000000000000000002526511405446017020531 0ustar rootrootStartFontMetrics 3.0 FontName ERKurierKOI8RItalic FullName ER Kurier KOI8 R Italic FamilyName ER Kurier KOI8-R Weight Italic ItalicAngle 0 IsFixedPitch false FontBBox -83 -298 723 777 UnderlinePosition -475 UnderlineThickness 132 Version 5.0 Notice Gavin Helf, 1995. Changes 1996 by Andrey A.Chernov. Changes 1997 by E.V.Demidov EncodingScheme FontSpecific CapHeight 596 XHeight 450 Ascender 645 Descender -200 StartCharMetrics 224 C 32 ; WX 600 ; N space ; B 0 0 0 0 ; C 33 ; WX 600 ; N exclam ; B 233 -27 479 640 ; C 34 ; WX 600 ; N quotedbl ; B 242 332 598 603 ; C 35 ; WX 600 ; N numbersign ; B 124 -75 603 670 ; C 36 ; WX 600 ; N dollar ; B 117 -105 597 677 ; C 37 ; WX 600 ; N percent ; B 131 -24 602 634 ; C 38 ; WX 600 ; N ampersand ; B 138 -28 562 539 ; C 39 ; WX 600 ; N quoteright ; B 345 320 496 613 ; C 40 ; WX 600 ; N parenleft ; B 267 -139 543 625 ; C 41 ; WX 600 ; N parenright ; B 160 -139 437 625 ; C 42 ; WX 600 ; N asterisk ; B 200 241 602 625 ; C 43 ; WX 600 ; N plus ; B 119 21 604 550 ; C 44 ; WX 600 ; N comma ; B 121 -146 384 147 ; C 45 ; WX 600 ; N hyphen ; B 130 241 591 324 ; C 46 ; WX 600 ; N period ; B 234 -15 388 118 ; C 47 ; WX 600 ; N slash ; B 86 -95 642 690 ; C 48 ; WX 600 ; N zero ; B 145 -27 588 639 ; C 49 ; WX 600 ; N one ; B 103 -12 506 638 ; C 50 ; WX 600 ; N two ; B 69 -12 593 639 ; C 51 ; WX 600 ; N three ; B 97 -27 595 639 ; C 52 ; WX 600 ; N four ; B 126 -12 564 625 ; C 53 ; WX 600 ; N five ; B 101 -27 599 625 ; C 54 ; WX 600 ; N six ; B 174 -27 650 639 ; C 55 ; WX 600 ; N seven ; B 204 -13 626 625 ; C 56 ; WX 600 ; N eight ; B 131 -27 592 639 ; C 57 ; WX 600 ; N nine ; B 128 -27 602 639 ; C 58 ; WX 600 ; N colon ; B 234 -15 453 423 ; C 59 ; WX 600 ; N semicolon ; B 135 -104 453 423 ; C 60 ; WX 600 ; N less ; B 94 20 662 550 ; C 61 ; WX 600 ; N equal ; B 82 180 641 393 ; C 62 ; WX 600 ; N greater ; B 47 20 616 550 ; C 63 ; WX 600 ; N question ; B 218 -15 593 598 ; C 64 ; WX 600 ; N at ; B 126 -75 577 645 ; C 65 ; WX 600 ; N A ; B 0 -12 611 583 ; C 66 ; WX 600 ; N B ; B 34 -12 606 583 ; C 67 ; WX 600 ; N C ; B 96 -28 651 596 ; C 68 ; WX 600 ; N D ; B 69 -12 644 583 ; C 69 ; WX 600 ; N E ; B 34 -12 638 583 ; C 70 ; WX 600 ; N F ; B 69 -12 693 583 ; C 71 ; WX 600 ; N G ; B 94 -28 653 596 ; C 72 ; WX 600 ; N H ; B 44 -12 664 583 ; C 73 ; WX 600 ; N I ; B 103 -12 619 583 ; C 74 ; WX 600 ; N J ; B 71 -28 701 583 ; C 75 ; WX 600 ; N K ; B 35 -12 684 583 ; C 76 ; WX 600 ; N L ; B 54 -12 601 583 ; C 77 ; WX 600 ; N M ; B 3 -12 715 583 ; C 78 ; WX 600 ; N N ; B 35 -12 694 583 ; C 79 ; WX 600 ; N O ; B 89 -28 632 596 ; C 80 ; WX 600 ; N P ; B 79 -12 647 583 ; C 81 ; WX 600 ; N Q ; B 90 -129 633 596 ; C 82 ; WX 600 ; N R ; B 35 -12 610 583 ; C 83 ; WX 600 ; N S ; B 83 -28 618 596 ; C 84 ; WX 600 ; N T ; B 136 -12 666 583 ; C 85 ; WX 600 ; N U ; B 125 -28 691 583 ; C 86 ; WX 600 ; N V ; B 112 -12 723 583 ; C 87 ; WX 600 ; N W ; B 110 -12 713 583 ; C 88 ; WX 600 ; N X ; B 31 -12 681 583 ; C 89 ; WX 600 ; N Y ; B 138 -12 681 583 ; C 90 ; WX 600 ; N Z ; B 89 -12 613 583 ; C 91 ; WX 600 ; N bracketleft ; B 205 -138 554 625 ; C 92 ; WX 600 ; N backslash ; B 225 -98 474 688 ; C 93 ; WX 600 ; N bracketright ; B 150 -138 500 625 ; C 94 ; WX 600 ; N asciicircum ; B 179 347 583 645 ; C 95 ; WX 600 ; N underscore ; B -83 -298 569 -233 ; C 96 ; WX 600 ; N quoteleft ; B 338 486 508 661 ; C 97 ; WX 600 ; N a ; B 79 -28 559 449 ; C 98 ; WX 600 ; N b ; B 14 -28 606 625 ; C 99 ; WX 600 ; N c ; B 109 -28 611 449 ; C 100 ; WX 600 ; N d ; B 89 -28 647 625 ; C 101 ; WX 600 ; N e ; B 91 -28 583 449 ; C 102 ; WX 600 ; N f ; B 96 -12 680 625 ; C 103 ; WX 600 ; N g ; B 91 -200 660 449 ; C 104 ; WX 600 ; N h ; B 42 -12 571 625 ; C 105 ; WX 600 ; N i ; B 84 -12 528 645 ; C 106 ; WX 600 ; N j ; B 39 -200 509 645 ; C 107 ; WX 600 ; N k ; B 85 -12 618 625 ; C 108 ; WX 600 ; N l ; B 83 -12 527 625 ; C 109 ; WX 600 ; N m ; B 2 -12 616 450 ; C 110 ; WX 600 ; N n ; B 45 -12 560 449 ; C 111 ; WX 600 ; N o ; B 98 -28 593 449 ; C 112 ; WX 600 ; N p ; B -27 -200 608 449 ; C 113 ; WX 600 ; N q ; B 93 -200 682 449 ; C 114 ; WX 600 ; N r ; B 75 -12 636 445 ; C 115 ; WX 600 ; N s ; B 93 -28 576 449 ; C 116 ; WX 600 ; N t ; B 144 -28 564 583 ; C 117 ; WX 600 ; N u ; B 118 -28 587 435 ; C 118 ; WX 600 ; N v ; B 102 -12 670 435 ; C 119 ; WX 600 ; N w ; B 101 -13 671 435 ; C 120 ; WX 600 ; N x ; B 41 -12 629 435 ; C 121 ; WX 600 ; N y ; B 26 -200 673 435 ; C 122 ; WX 600 ; N z ; B 101 -12 585 435 ; C 123 ; WX 600 ; N braceleft ; B 242 -136 548 628 ; C 124 ; WX 600 ; N bar ; B 244 -139 460 625 ; C 125 ; WX 600 ; N braceright ; B 157 -139 463 625 ; C 126 ; WX 600 ; N asciitilde ; B 135 199 588 371 ; C 128 ; WX 600 ; N c128 ; B -49 104 622 167 ; C 129 ; WX 600 ; N c129 ; B 254 -220 318 684 ; C 130 ; WX 600 ; N c130 ; B 255 -220 622 167 ; C 131 ; WX 600 ; N c131 ; B -49 -220 318 167 ; C 132 ; WX 600 ; N c132 ; B 255 104 622 684 ; C 133 ; WX 600 ; N c133 ; B -49 104 319 684 ; C 134 ; WX 600 ; N c134 ; B 255 -220 622 684 ; C 135 ; WX 600 ; N c135 ; B -49 -220 319 684 ; C 136 ; WX 600 ; N c136 ; B -49 -220 622 167 ; C 137 ; WX 600 ; N c137 ; B -49 104 622 684 ; C 138 ; WX 600 ; N c138 ; B -49 -220 622 684 ; C 139 ; WX 600 ; N c139 ; B -49 232 649 684 ; C 140 ; WX 600 ; N c140 ; B -49 -220 649 232 ; C 141 ; WX 600 ; N c141 ; B -49 -220 649 684 ; C 142 ; WX 600 ; N c142 ; B -49 -220 300 684 ; C 143 ; WX 600 ; N c143 ; B 300 -220 649 684 ; C 144 ; WX 600 ; N c144 ; B 75 -220 601 682 ; C 145 ; WX 600 ; N c145 ; B 0 -220 602 682 ; C 146 ; WX 600 ; N c146 ; B 0 -220 602 682 ; C 147 ; WX 600 ; N c147 ; B 273 -220 457 777 ; C 148 ; WX 600 ; N c148 ; B 101 -12 506 583 ; C 149 ; WX 600 ; N c149 ; B 179 190 421 431 ; C 150 ; WX 600 ; N c150 ; B 41 -95 604 690 ; C 151 ; WX 600 ; N c151 ; B 79 121 522 454 ; C 152 ; WX 600 ; N c152 ; B 25 -12 543 618 ; C 153 ; WX 600 ; N c153 ; B 56 -12 574 618 ; C 154 ; WX 600 ; N c154 ; B 0 0 0 0 ; C 155 ; WX 600 ; N c155 ; B 157 -220 340 777 ; C 156 ; WX 600 ; N c156 ; B 152 445 448 740 ; C 157 ; WX 600 ; N c157 ; B 154 347 424 698 ; C 158 ; WX 600 ; N c158 ; B 225 245 376 377 ; C 159 ; WX 600 ; N c159 ; B 79 63 522 501 ; C 160 ; WX 600 ; N nbspace ; B -7 141 608 369 ; C 161 ; WX 600 ; N exclamdown ; B 186 -255 414 766 ; C 162 ; WX 600 ; N cent ; B 264 -255 607 369 ; C 163 ; WX 600 ; N sterling ; B 91 -28 583 645 ; C 164 ; WX 600 ; N currency ; B 186 -255 607 291 ; C 165 ; WX 600 ; N yen ; B 186 -255 607 369 ; C 166 ; WX 600 ; N brokenbar ; B -7 -255 336 369 ; C 167 ; WX 600 ; N section ; B -7 -255 414 291 ; C 168 ; WX 600 ; N dieresis ; B -7 -255 414 369 ; C 169 ; WX 600 ; N copyright ; B 264 141 607 766 ; C 170 ; WX 600 ; N ordfeminine ; B 186 219 607 766 ; C 171 ; WX 600 ; N guillemotleft ; B 186 141 607 766 ; C 172 ; WX 600 ; N logicalnot ; B -7 141 336 766 ; C 173 ; WX 600 ; N softhyphen ; B -7 219 414 766 ; C 174 ; WX 600 ; N registered ; B -7 141 414 766 ; C 175 ; WX 600 ; N macron ; B 264 -255 607 766 ; C 176 ; WX 600 ; N degree ; B 186 -255 607 766 ; C 177 ; WX 600 ; N plusminus ; B 186 -255 607 766 ; C 178 ; WX 600 ; N twosuperior ; B -7 -255 336 766 ; C 179 ; WX 600 ; N threesuperior ; B 34 -12 638 777 ; C 180 ; WX 600 ; N acute ; B -7 -255 414 766 ; C 181 ; WX 600 ; N mu ; B -7 -255 414 766 ; C 182 ; WX 600 ; N paragraph ; B -7 -255 607 369 ; C 183 ; WX 600 ; N periodcentered ; B -7 -255 607 291 ; C 184 ; WX 600 ; N cedilla ; B -7 -255 607 369 ; C 185 ; WX 600 ; N onesuperior ; B -7 141 607 766 ; C 186 ; WX 600 ; N ordmasculine ; B -7 219 607 766 ; C 187 ; WX 600 ; N guillemotright ; B -7 141 607 766 ; C 188 ; WX 600 ; N onequarter ; B -7 -255 607 766 ; C 189 ; WX 600 ; N onehalf ; B -7 -255 607 766 ; C 190 ; WX 600 ; N threequarters ; B -7 -255 607 766 ; C 191 ; WX 600 ; N questiondown ; B 42 -25 678 596 ; C 192 ; WX 600 ; N Agrave ; B 8 -26 643 449 ; C 193 ; WX 600 ; N Aacute ; B 79 -28 559 449 ; C 194 ; WX 600 ; N Acircumflex ; B 106 -28 635 703 ; C 195 ; WX 600 ; N Atilde ; B 118 -139 587 435 ; C 196 ; WX 600 ; N Adieresis ; B 111 -28 615 703 ; C 197 ; WX 600 ; N Aring ; B 91 -28 583 449 ; C 198 ; WX 600 ; N AE ; B 82 -201 614 630 ; C 199 ; WX 600 ; N Ccedilla ; B 92 -28 543 449 ; C 200 ; WX 600 ; N Egrave ; B 41 -12 629 435 ; C 201 ; WX 600 ; N Eacute ; B 118 -28 587 435 ; C 202 ; WX 600 ; N Ecircumflex ; B 118 -28 587 630 ; C 203 ; WX 600 ; N Edieresis ; B 85 -12 618 434 ; C 204 ; WX 600 ; N Igrave ; B 21 -12 661 435 ; C 205 ; WX 600 ; N Iacute ; B 3 -12 692 435 ; C 206 ; WX 600 ; N Icircumflex ; B 44 -12 652 434 ; C 207 ; WX 600 ; N Idieresis ; B 98 -28 593 449 ; C 208 ; WX 600 ; N Eth ; B 45 -12 560 449 ; C 209 ; WX 600 ; N Ntilde ; B 46 -12 638 435 ; C 210 ; WX 600 ; N Ograve ; B -27 -200 608 449 ; C 211 ; WX 600 ; N Oacute ; B 109 -28 611 449 ; C 212 ; WX 600 ; N Ocircumflex ; B 2 -12 616 450 ; C 213 ; WX 600 ; N Otilde ; B 26 -200 673 435 ; C 214 ; WX 600 ; N Odieresis ; B -5 -12 650 440 ; C 215 ; WX 600 ; N multiply ; B 77 -12 573 435 ; C 216 ; WX 600 ; N Oslash ; B 76 -12 572 435 ; C 217 ; WX 600 ; N Ugrave ; B 7 -12 685 435 ; C 218 ; WX 600 ; N Uacute ; B 111 -28 560 450 ; C 219 ; WX 600 ; N Ucircumflex ; B 14 -30 628 432 ; C 220 ; WX 600 ; N Udieresis ; B 81 -28 591 449 ; C 221 ; WX 600 ; N Yacute ; B 14 -141 628 432 ; C 222 ; WX 600 ; N Thorn ; B 117 -12 646 435 ; C 223 ; WX 600 ; N germandbls ; B 93 -12 602 435 ; C 224 ; WX 600 ; N agrave ; B 8 -27 671 598 ; C 225 ; WX 600 ; N aacute ; B 0 -12 611 583 ; C 226 ; WX 600 ; N acircumflex ; B 34 -12 638 583 ; C 227 ; WX 600 ; N atilde ; B 54 -203 675 583 ; C 228 ; WX 600 ; N adieresis ; B -9 -203 664 583 ; C 229 ; WX 600 ; N aring ; B 34 -12 638 583 ; C 230 ; WX 600 ; N ae ; B 60 -12 662 583 ; C 231 ; WX 600 ; N ccedilla ; B 54 -12 680 583 ; C 232 ; WX 600 ; N egrave ; B 31 -12 681 583 ; C 233 ; WX 600 ; N eacute ; B 23 -12 705 583 ; C 234 ; WX 600 ; N ecircumflex ; B 23 -12 705 720 ; C 235 ; WX 600 ; N edieresis ; B 35 -12 684 583 ; C 236 ; WX 600 ; N igrave ; B 1 -12 664 583 ; C 237 ; WX 600 ; N iacute ; B 3 -12 715 583 ; C 238 ; WX 600 ; N icircumflex ; B 44 -12 664 583 ; C 239 ; WX 600 ; N idieresis ; B 89 -28 632 596 ; C 240 ; WX 600 ; N eth ; B 44 -12 664 583 ; C 241 ; WX 600 ; N ntilde ; B 9 -12 699 583 ; C 242 ; WX 600 ; N ograve ; B 79 -12 647 583 ; C 243 ; WX 600 ; N oacute ; B 96 -28 651 596 ; C 244 ; WX 600 ; N ocircumflex ; B 136 -12 666 583 ; C 245 ; WX 600 ; N otilde ; B 33 -29 695 586 ; C 246 ; WX 600 ; N odieresis ; B -2 -12 705 585 ; C 247 ; WX 600 ; N divide ; B 34 -12 606 583 ; C 248 ; WX 600 ; N oslash ; B 78 -12 596 583 ; C 249 ; WX 600 ; N ugrave ; B 10 -12 707 583 ; C 250 ; WX 600 ; N uacute ; B 104 -16 579 585 ; C 251 ; WX 600 ; N ucircumflex ; B 10 -12 708 583 ; C 252 ; WX 600 ; N udieresis ; B 76 -28 628 596 ; C 253 ; WX 600 ; N yacute ; B 10 -203 709 583 ; C 254 ; WX 600 ; N thorn ; B 151 -12 680 582 ; C 255 ; WX 600 ; N ydieresis ; B 98 -12 616 583 ; C -1 ; WX 600 ; N minus ; B 130 241 591 324 ; EndCharMetrics EndFontMetrics gle-graphics-4.2.4c/src/fonts/cyrillic/timesi8.afm0000664000000000000000000002415111405446017020537 0ustar rootrootStartFontMetrics 3.0 FontName TimesNRCyrMT-Inclined FullName Times New Roman KOI 8 Italic FamilyName Times New Roman KOI-8 Weight Italic ItalicAngle -1 IsFixedPitch false FontBBox -159 -220 1179 871 UnderlinePosition -205 UnderlineThickness 102 Version 1.0 Notice Typeface The Monotype Corporation plc. 1990-92. Changes 1997 by Eugene V. Demidov EncodingScheme FontSpecific CapHeight 691 XHeight 458 Ascender 717 Descender -214 StartCharMetrics 224 C 32 ; WX 250 ; N space ; B 0 0 0 0 ; C 33 ; WX 271 ; N exclam ; B 47 -12 291 687 ; C 34 ; WX 417 ; N quotedbl ; B 161 405 469 690 ; C 35 ; WX 667 ; N numbersign ; B 78 -9 658 686 ; C 36 ; WX 500 ; N dollar ; B 32 -69 484 717 ; C 37 ; WX 823 ; N percent ; B 55 -26 838 691 ; C 38 ; WX 719 ; N ampersand ; B 42 -15 692 690 ; C 39 ; WX 219 ; N quoteright ; B 152 405 282 690 ; C 40 ; WX 500 ; N parenleft ; B 157 -205 499 717 ; C 41 ; WX 500 ; N parenright ; B 24 -205 365 717 ; C 42 ; WX 500 ; N asterisk ; B 152 309 510 717 ; C 43 ; WX 667 ; N plus ; B 103 72 633 603 ; C 44 ; WX 267 ; N comma ; B -12 -128 131 88 ; C 45 ; WX 333 ; N hyphen ; B 47 193 295 272 ; C 46 ; WX 271 ; N period ; B 34 -12 135 89 ; C 47 ; WX 281 ; N slash ; B -66 -15 425 717 ; C 48 ; WX 500 ; N zero ; B 58 -15 510 690 ; C 49 ; WX 500 ; N one ; B 67 0 434 690 ; C 50 ; WX 500 ; N two ; B 8 0 479 690 ; C 51 ; WX 500 ; N three ; B 36 -15 485 690 ; C 52 ; WX 500 ; N four ; B 43 -16 514 686 ; C 53 ; WX 500 ; N five ; B 30 -15 492 675 ; C 54 ; WX 500 ; N six ; B 57 -15 538 690 ; C 55 ; WX 500 ; N seven ; B 126 -14 551 675 ; C 56 ; WX 500 ; N eight ; B 40 -15 505 690 ; C 57 ; WX 500 ; N nine ; B 44 -15 509 690 ; C 58 ; WX 333 ; N colon ; B 52 -12 266 458 ; C 59 ; WX 333 ; N semicolon ; B 35 -128 286 458 ; C 60 ; WX 667 ; N less ; B 103 86 633 589 ; C 61 ; WX 667 ; N equal ; B 103 192 633 483 ; C 62 ; WX 667 ; N greater ; B 103 86 633 589 ; C 63 ; WX 385 ; N question ; B 92 -12 437 691 ; C 64 ; WX 917 ; N at ; B 56 -220 905 690 ; C 65 ; WX 719 ; N A ; B -15 0 629 690 ; C 66 ; WX 667 ; N B ; B 0 0 655 675 ; C 67 ; WX 719 ; N C ; B 85 -15 749 691 ; C 68 ; WX 771 ; N D ; B 5 0 737 675 ; C 69 ; WX 667 ; N E ; B 0 0 696 675 ; C 70 ; WX 604 ; N F ; B 2 0 691 675 ; C 71 ; WX 719 ; N G ; B 75 -15 722 691 ; C 72 ; WX 823 ; N H ; B 13 0 881 675 ; C 73 ; WX 385 ; N I ; B 1 0 461 675 ; C 74 ; WX 500 ; N J ; B 10 -15 564 675 ; C 75 ; WX 719 ; N K ; B 10 0 794 675 ; C 76 ; WX 667 ; N L ; B 8 0 648 675 ; C 77 ; WX 990 ; N M ; B 20 0 1036 675 ; C 78 ; WX 771 ; N N ; B 10 -16 831 675 ; C 79 ; WX 771 ; N O ; B 90 -15 751 690 ; C 80 ; WX 667 ; N P ; B 22 0 672 675 ; C 81 ; WX 771 ; N Q ; B 90 -211 750 691 ; C 82 ; WX 719 ; N R ; B -1 0 681 675 ; C 83 ; WX 604 ; N S ; B 35 -15 619 691 ; C 84 ; WX 667 ; N T ; B 102 0 755 675 ; C 85 ; WX 771 ; N U ; B 142 -15 841 675 ; C 86 ; WX 719 ; N V ; B 162 -16 821 675 ; C 87 ; WX 990 ; N W ; B 164 -15 1100 675 ; C 88 ; WX 719 ; N X ; B 5 0 797 675 ; C 89 ; WX 719 ; N Y ; B 163 0 809 675 ; C 90 ; WX 719 ; N Z ; B 20 0 741 675 ; C 91 ; WX 500 ; N bracketleft ; B 55 -199 499 704 ; C 92 ; WX 281 ; N backslash ; B 144 -15 214 717 ; C 93 ; WX 500 ; N bracketright ; B 21 -199 465 704 ; C 94 ; WX 583 ; N asciicircum ; B 161 324 599 675 ; C 95 ; WX 500 ; N underscore ; B -5 -125 506 -75 ; C 96 ; WX 333 ; N quoteleft ; B 140 520 303 690 ; C 97 ; WX 500 ; N a ; B 17 -12 474 458 ; C 98 ; WX 500 ; N b ; B 22 -12 468 717 ; C 99 ; WX 438 ; N c ; B 36 -11 413 457 ; C 100 ; WX 500 ; N d ; B 23 -12 559 717 ; C 101 ; WX 438 ; N e ; B 27 -12 418 458 ; C 102 ; WX 333 ; N f ; B -159 -214 494 717 ; C 103 ; WX 500 ; N g ; B -27 -205 493 457 ; C 104 ; WX 500 ; N h ; B 8 -12 462 717 ; C 105 ; WX 271 ; N i ; B 47 -12 279 657 ; C 106 ; WX 271 ; N j ; B -148 -214 297 657 ; C 107 ; WX 531 ; N k ; B 8 -12 533 717 ; C 108 ; WX 271 ; N l ; B 40 -12 306 717 ; C 109 ; WX 771 ; N m ; B 11 -12 745 457 ; C 110 ; WX 500 ; N n ; B 13 -12 472 458 ; C 111 ; WX 500 ; N o ; B 37 -12 461 457 ; C 112 ; WX 500 ; N p ; B -101 -211 459 457 ; C 113 ; WX 500 ; N q ; B 30 -211 483 457 ; C 114 ; WX 385 ; N r ; B 29 0 369 458 ; C 115 ; WX 385 ; N s ; B 2 -12 371 457 ; C 116 ; WX 333 ; N t ; B 62 -12 314 568 ; C 117 ; WX 500 ; N u ; B 27 -12 482 452 ; C 118 ; WX 438 ; N v ; B 58 -12 417 458 ; C 119 ; WX 667 ; N w ; B 47 -12 642 458 ; C 120 ; WX 552 ; N x ; B 4 -12 526 458 ; C 121 ; WX 500 ; N y ; B -38 -214 472 458 ; C 122 ; WX 438 ; N z ; B -1 0 430 446 ; C 123 ; WX 479 ; N braceleft ; B 172 -196 445 714 ; C 124 ; WX 271 ; N bar ; B 137 -212 202 717 ; C 125 ; WX 479 ; N braceright ; B 121 -196 393 714 ; C 126 ; WX 667 ; N asciitilde ; B 104 263 631 412 ; C 128 ; WX 250 ; N c128 ; B 0 0 0 0 ; C 129 ; WX 250 ; N c129 ; B 0 0 0 0 ; C 130 ; WX 250 ; N c130 ; B 0 0 0 0 ; C 131 ; WX 250 ; N c131 ; B 0 0 0 0 ; C 132 ; WX 250 ; N c132 ; B 0 0 0 0 ; C 133 ; WX 250 ; N c133 ; B 0 0 0 0 ; C 134 ; WX 250 ; N c134 ; B 0 0 0 0 ; C 135 ; WX 250 ; N c135 ; B 0 0 0 0 ; C 136 ; WX 250 ; N c136 ; B 0 0 0 0 ; C 137 ; WX 250 ; N c137 ; B 0 0 0 0 ; C 138 ; WX 250 ; N c138 ; B 0 0 0 0 ; C 139 ; WX 250 ; N c139 ; B 0 0 0 0 ; C 140 ; WX 250 ; N c140 ; B 0 0 0 0 ; C 141 ; WX 250 ; N c141 ; B 0 0 0 0 ; C 142 ; WX 250 ; N c142 ; B 0 0 0 0 ; C 143 ; WX 250 ; N c143 ; B 0 0 0 0 ; C 144 ; WX 250 ; N c144 ; B 0 0 0 0 ; C 145 ; WX 250 ; N c145 ; B 0 0 0 0 ; C 146 ; WX 250 ; N c146 ; B 0 0 0 0 ; C 147 ; WX 250 ; N c147 ; B 0 0 0 0 ; C 148 ; WX 250 ; N c148 ; B 0 0 0 0 ; C 149 ; WX 250 ; N c149 ; B 0 0 0 0 ; C 150 ; WX 250 ; N c150 ; B 0 0 0 0 ; C 151 ; WX 250 ; N c151 ; B 0 0 0 0 ; C 152 ; WX 250 ; N c152 ; B 0 0 0 0 ; C 153 ; WX 250 ; N c153 ; B 0 0 0 0 ; C 154 ; WX 250 ; N c154 ; B 0 0 0 0 ; C 155 ; WX 250 ; N c155 ; B 0 0 0 0 ; C 156 ; WX 250 ; N c156 ; B 0 0 0 0 ; C 157 ; WX 250 ; N c157 ; B 0 0 0 0 ; C 158 ; WX 250 ; N c158 ; B 0 0 0 0 ; C 159 ; WX 250 ; N c159 ; B 0 0 0 0 ; C 160 ; WX 250 ; N nbspace ; B 0 0 0 0 ; C 161 ; WX 250 ; N exclamdown ; B 0 0 0 0 ; C 162 ; WX 250 ; N cent ; B 0 0 0 0 ; C 163 ; WX 438 ; N sterling ; B 27 -12 472 658 ; C 164 ; WX 250 ; N currency ; B 0 0 0 0 ; C 165 ; WX 250 ; N yen ; B 0 0 0 0 ; C 166 ; WX 250 ; N brokenbar ; B 0 0 0 0 ; C 167 ; WX 250 ; N section ; B 0 0 0 0 ; C 168 ; WX 250 ; N dieresis ; B 0 0 0 0 ; C 169 ; WX 250 ; N copyright ; B 0 0 0 0 ; C 170 ; WX 250 ; N ordfeminine ; B 0 0 0 0 ; C 171 ; WX 250 ; N guillemotleft ; B 0 0 0 0 ; C 172 ; WX 250 ; N logicalnot ; B 0 0 0 0 ; C 173 ; WX 250 ; N softhyphen ; B 0 0 0 0 ; C 174 ; WX 250 ; N registered ; B 0 0 0 0 ; C 175 ; WX 250 ; N macron ; B 0 0 0 0 ; C 176 ; WX 250 ; N degree ; B 0 0 0 0 ; C 177 ; WX 250 ; N plusminus ; B 0 0 0 0 ; C 178 ; WX 250 ; N twosuperior ; B 0 0 0 0 ; C 179 ; WX 667 ; N threesuperior ; B 0 0 696 871 ; C 180 ; WX 250 ; N acute ; B 0 0 0 0 ; C 181 ; WX 250 ; N mu ; B 0 0 0 0 ; C 182 ; WX 250 ; N paragraph ; B 0 0 0 0 ; C 183 ; WX 250 ; N periodcentered ; B 0 0 0 0 ; C 184 ; WX 250 ; N cedilla ; B 0 0 0 0 ; C 185 ; WX 250 ; N onesuperior ; B 0 0 0 0 ; C 186 ; WX 250 ; N ordmasculine ; B 0 0 0 0 ; C 187 ; WX 250 ; N guillemotright ; B 0 0 0 0 ; C 188 ; WX 250 ; N onequarter ; B 0 0 0 0 ; C 189 ; WX 250 ; N onehalf ; B 0 0 0 0 ; C 190 ; WX 250 ; N threequarters ; B 0 0 0 0 ; C 191 ; WX 250 ; N questiondown ; B 0 0 0 0 ; C 192 ; WX 706 ; N Agrave ; B 17 -12 664 457 ; C 193 ; WX 500 ; N Aacute ; B 17 -12 474 458 ; C 194 ; WX 507 ; N Acircumflex ; B 47 -11 525 717 ; C 195 ; WX 500 ; N Atilde ; B 27 -192 482 452 ; C 196 ; WX 500 ; N Adieresis ; B 37 -12 473 717 ; C 197 ; WX 438 ; N Aring ; B 27 -12 418 458 ; C 198 ; WX 704 ; N AE ; B 35 -211 669 717 ; C 199 ; WX 406 ; N Ccedilla ; B 16 -12 386 458 ; C 200 ; WX 552 ; N Egrave ; B 4 -12 526 458 ; C 201 ; WX 500 ; N Eacute ; B 27 -12 482 452 ; C 202 ; WX 500 ; N Ecircumflex ; B 27 -12 482 639 ; C 203 ; WX 498 ; N Edieresis ; B 18 0 483 458 ; C 204 ; WX 454 ; N Igrave ; B -34 -12 430 446 ; C 205 ; WX 655 ; N Iacute ; B -34 -12 632 458 ; C 206 ; WX 505 ; N Icircumflex ; B 17 -6 477 458 ; C 207 ; WX 500 ; N Idieresis ; B 37 -12 461 457 ; C 208 ; WX 500 ; N Eth ; B 13 -12 472 458 ; C 209 ; WX 474 ; N Ntilde ; B -49 -12 447 446 ; C 210 ; WX 500 ; N Ograve ; B -101 -211 459 457 ; C 211 ; WX 438 ; N Oacute ; B 36 -11 413 457 ; C 212 ; WX 771 ; N Ocircumflex ; B 11 -12 745 457 ; C 213 ; WX 500 ; N Otilde ; B -38 -214 472 458 ; C 214 ; WX 998 ; N Odieresis ; B 22 -12 974 458 ; C 215 ; WX 438 ; N multiply ; B 39 -12 418 458 ; C 216 ; WX 440 ; N Oslash ; B 44 -11 391 458 ; C 217 ; WX 648 ; N Ugrave ; B 44 -11 625 458 ; C 218 ; WX 404 ; N Uacute ; B 0 -12 381 457 ; C 219 ; WX 756 ; N Ucircumflex ; B 29 -12 738 458 ; C 220 ; WX 437 ; N Udieresis ; B 17 -12 392 457 ; C 221 ; WX 756 ; N Yacute ; B 28 -189 737 458 ; C 222 ; WX 471 ; N Thorn ; B 28 -12 448 458 ; C 223 ; WX 509 ; N germandbls ; B 33 -11 459 446 ; C 224 ; WX 1106 ; N agrave ; B -6 -15 1084 690 ; C 225 ; WX 719 ; N aacute ; B -15 0 629 690 ; C 226 ; WX 655 ; N acircumflex ; B -2 0 697 675 ; C 227 ; WX 804 ; N atilde ; B 2 -192 867 675 ; C 228 ; WX 675 ; N adieresis ; B -99 -192 738 675 ; C 229 ; WX 667 ; N aring ; B 0 0 696 675 ; C 230 ; WX 796 ; N ae ; B 75 0 787 675 ; C 231 ; WX 631 ; N ccedilla ; B -7 0 718 675 ; C 232 ; WX 719 ; N egrave ; B 5 0 797 675 ; C 233 ; WX 805 ; N eacute ; B 1 0 868 675 ; C 234 ; WX 805 ; N ecircumflex ; B 1 0 868 848 ; C 235 ; WX 713 ; N edieresis ; B 5 0 773 683 ; C 236 ; WX 714 ; N igrave ; B -35 -8 782 675 ; C 237 ; WX 990 ; N iacute ; B 20 0 1036 675 ; C 238 ; WX 823 ; N icircumflex ; B 13 0 881 675 ; C 239 ; WX 771 ; N idieresis ; B 90 -15 751 690 ; C 240 ; WX 805 ; N eth ; B 4 0 868 675 ; C 241 ; WX 709 ; N ntilde ; B -40 0 773 675 ; C 242 ; WX 667 ; N ograve ; B 22 0 672 675 ; C 243 ; WX 719 ; N oacute ; B 85 -15 749 691 ; C 244 ; WX 667 ; N ocircumflex ; B 102 0 755 675 ; C 245 ; WX 688 ; N otilde ; B 107 -15 822 675 ; C 246 ; WX 947 ; N odieresis ; B -36 0 1003 683 ; C 247 ; WX 667 ; N divide ; B 0 0 655 675 ; C 248 ; WX 655 ; N oslash ; B -5 0 590 675 ; C 249 ; WX 964 ; N ugrave ; B -5 0 1038 675 ; C 250 ; WX 527 ; N uacute ; B -1 -15 514 690 ; C 251 ; WX 1125 ; N ucircumflex ; B 10 0 1179 675 ; C 252 ; WX 704 ; N udieresis ; B 41 -15 670 690 ; C 253 ; WX 1125 ; N yacute ; B 10 -192 1179 675 ; C 254 ; WX 727 ; N thorn ; B 101 0 789 675 ; C 255 ; WX 729 ; N ydieresis ; B 70 0 665 675 ; C -1 ; WX 333 ; N minus ; B 47 193 295 272 ; EndCharMetrics EndFontMetrics gle-graphics-4.2.4c/src/fonts/cyrillic/cokoi8b.afm0000664000000000000000000002522311405446017020514 0ustar rootrootStartFontMetrics 3.0 FontName ERKurierKOI8RBold FullName ER Kurier KOI8 R Bold FamilyName ER Kurier KOI8-R Weight Bold ItalicAngle 0 IsFixedPitch false FontBBox -49 -323 650 801 UnderlinePosition -475 UnderlineThickness 132 Version 5.0 Notice Gavin Helf, 1995. Changes 1996 by Andrey A.Chernov. Changes 1997 by E.V.Demidov EncodingScheme FontSpecific CapHeight 621 XHeight 475 Ascender 670 Descender -225 StartCharMetrics 224 C 32 ; WX 600 ; N space ; B 0 0 0 0 ; C 33 ; WX 600 ; N exclam ; B 203 -51 397 664 ; C 34 ; WX 600 ; N quotedbl ; B 102 307 497 627 ; C 35 ; WX 600 ; N numbersign ; B 55 -100 545 695 ; C 36 ; WX 600 ; N dollar ; B 75 -130 525 701 ; C 37 ; WX 600 ; N percent ; B 55 -48 546 659 ; C 38 ; WX 600 ; N ampersand ; B 88 -53 536 563 ; C 39 ; WX 600 ; N quoteright ; B 207 295 393 637 ; C 40 ; WX 600 ; N parenleft ; B 202 -164 440 649 ; C 41 ; WX 600 ; N parenright ; B 160 -164 398 649 ; C 42 ; WX 600 ; N asterisk ; B 76 217 524 649 ; C 43 ; WX 600 ; N plus ; B 34 -4 566 574 ; C 44 ; WX 600 ; N comma ; B 122 -171 393 172 ; C 45 ; WX 600 ; N hyphen ; B 55 217 546 349 ; C 46 ; WX 600 ; N period ; B 201 -39 400 142 ; C 47 ; WX 600 ; N slash ; B 76 -119 526 715 ; C 48 ; WX 600 ; N zero ; B 76 -51 525 664 ; C 49 ; WX 600 ; N one ; B 75 -36 525 671 ; C 50 ; WX 600 ; N two ; B 47 -36 516 664 ; C 51 ; WX 600 ; N three ; B 59 -51 537 664 ; C 52 ; WX 600 ; N four ; B 68 -36 519 649 ; C 53 ; WX 600 ; N five ; B 59 -51 537 649 ; C 54 ; WX 600 ; N six ; B 97 -51 549 664 ; C 55 ; WX 600 ; N seven ; B 67 -38 516 649 ; C 56 ; WX 600 ; N eight ; B 76 -51 524 664 ; C 57 ; WX 600 ; N nine ; B 98 -51 548 664 ; C 58 ; WX 600 ; N colon ; B 201 -39 400 447 ; C 59 ; WX 600 ; N semicolon ; B 128 -129 399 447 ; C 60 ; WX 600 ; N less ; B -17 -5 575 574 ; C 61 ; WX 600 ; N equal ; B 13 156 588 417 ; C 62 ; WX 600 ; N greater ; B 12 -5 605 574 ; C 63 ; WX 600 ; N question ; B 95 -39 524 622 ; C 64 ; WX 600 ; N at ; B 68 -100 517 670 ; C 65 ; WX 600 ; N A ; B -28 -37 630 608 ; C 66 ; WX 600 ; N B ; B 6 -36 580 608 ; C 67 ; WX 600 ; N C ; B 26 -53 574 621 ; C 68 ; WX 600 ; N D ; B 41 -36 594 608 ; C 69 ; WX 600 ; N E ; B 6 -36 559 608 ; C 70 ; WX 600 ; N F ; B 41 -36 593 608 ; C 71 ; WX 600 ; N G ; B 26 -53 602 621 ; C 72 ; WX 600 ; N H ; B 16 -37 591 608 ; C 73 ; WX 600 ; N I ; B 75 -36 525 608 ; C 74 ; WX 600 ; N J ; B 33 -53 607 608 ; C 75 ; WX 600 ; N K ; B 7 -36 611 608 ; C 76 ; WX 600 ; N L ; B 26 -36 579 608 ; C 77 ; WX 600 ; N M ; B -25 -36 630 608 ; C 78 ; WX 600 ; N N ; B -14 -36 600 608 ; C 79 ; WX 600 ; N O ; B 13 -53 586 621 ; C 80 ; WX 600 ; N P ; B 51 -36 581 608 ; C 81 ; WX 600 ; N Q ; B 14 -153 587 621 ; C 82 ; WX 600 ; N R ; B 6 -36 629 608 ; C 83 ; WX 600 ; N S ; B 54 -53 546 621 ; C 84 ; WX 600 ; N T ; B 33 -36 566 608 ; C 85 ; WX 600 ; N U ; B 4 -53 597 608 ; C 86 ; WX 600 ; N V ; B -29 -37 629 608 ; C 87 ; WX 600 ; N W ; B -16 -37 619 608 ; C 88 ; WX 600 ; N X ; B 3 -37 599 608 ; C 89 ; WX 600 ; N Y ; B 12 -36 587 608 ; C 90 ; WX 600 ; N Z ; B 67 -36 536 608 ; C 91 ; WX 600 ; N bracketleft ; B 210 -163 451 649 ; C 92 ; WX 600 ; N backslash ; B 61 -122 511 712 ; C 93 ; WX 600 ; N bracketright ; B 149 -163 390 649 ; C 94 ; WX 600 ; N asciicircum ; B 75 323 525 685 ; C 95 ; WX 600 ; N underscore ; B -49 -323 650 -209 ; C 96 ; WX 600 ; N quoteleft ; B 180 462 420 686 ; C 97 ; WX 600 ; N a ; B 34 -53 579 474 ; C 98 ; WX 600 ; N b ; B -15 -53 579 649 ; C 99 ; WX 600 ; N c ; B 47 -53 573 474 ; C 100 ; WX 600 ; N d ; B 25 -53 620 649 ; C 101 ; WX 600 ; N e ; B 26 -53 559 474 ; C 102 ; WX 600 ; N f ; B 68 -36 581 649 ; C 103 ; WX 600 ; N g ; B 25 -225 598 474 ; C 104 ; WX 600 ; N h ; B 5 -37 590 649 ; C 105 ; WX 600 ; N i ; B 56 -36 547 670 ; C 106 ; WX 600 ; N j ; B 51 -225 439 670 ; C 107 ; WX 600 ; N k ; B 57 -36 608 649 ; C 108 ; WX 600 ; N l ; B 55 -36 546 649 ; C 109 ; WX 600 ; N m ; B -26 -37 630 475 ; C 110 ; WX 600 ; N n ; B 16 -37 579 474 ; C 111 ; WX 600 ; N o ; B 34 -53 566 474 ; C 112 ; WX 600 ; N p ; B -15 -225 579 474 ; C 113 ; WX 600 ; N q ; B 26 -225 620 474 ; C 114 ; WX 600 ; N r ; B 47 -36 581 470 ; C 115 ; WX 600 ; N s ; B 65 -53 536 474 ; C 116 ; WX 600 ; N t ; B 35 -53 565 608 ; C 117 ; WX 600 ; N u ; B 8 -53 580 459 ; C 118 ; WX 600 ; N v ; B -7 -37 608 459 ; C 119 ; WX 600 ; N w ; B -9 -38 609 459 ; C 120 ; WX 600 ; N x ; B 13 -37 588 459 ; C 121 ; WX 600 ; N y ; B 36 -225 610 459 ; C 122 ; WX 600 ; N z ; B 79 -36 527 459 ; C 123 ; WX 600 ; N braceleft ; B 166 -160 444 652 ; C 124 ; WX 600 ; N bar ; B 243 -163 357 649 ; C 125 ; WX 600 ; N braceright ; B 156 -164 435 649 ; C 126 ; WX 600 ; N asciitilde ; B 55 174 546 396 ; C 128 ; WX 600 ; N c128 ; B -49 104 622 167 ; C 129 ; WX 600 ; N c129 ; B 254 -220 318 684 ; C 130 ; WX 600 ; N c130 ; B 255 -220 622 167 ; C 131 ; WX 600 ; N c131 ; B -49 -220 318 167 ; C 132 ; WX 600 ; N c132 ; B 255 104 622 684 ; C 133 ; WX 600 ; N c133 ; B -49 104 318 684 ; C 134 ; WX 600 ; N c134 ; B 255 -220 622 684 ; C 135 ; WX 600 ; N c135 ; B -49 -220 318 684 ; C 136 ; WX 600 ; N c136 ; B -49 -220 622 167 ; C 137 ; WX 600 ; N c137 ; B -49 104 622 684 ; C 138 ; WX 600 ; N c138 ; B -49 -220 622 684 ; C 139 ; WX 600 ; N c139 ; B -48 232 649 684 ; C 140 ; WX 600 ; N c140 ; B -48 -220 649 232 ; C 141 ; WX 600 ; N c141 ; B -48 -220 649 684 ; C 142 ; WX 600 ; N c142 ; B -49 -220 300 684 ; C 143 ; WX 600 ; N c143 ; B 300 -220 649 684 ; C 144 ; WX 600 ; N c144 ; B 75 -220 601 682 ; C 145 ; WX 600 ; N c145 ; B 0 -220 601 682 ; C 146 ; WX 600 ; N c146 ; B 0 -220 601 682 ; C 147 ; WX 600 ; N c147 ; B 249 -245 481 801 ; C 148 ; WX 600 ; N c148 ; B 76 -37 530 608 ; C 149 ; WX 600 ; N c149 ; B 155 166 445 456 ; C 150 ; WX 600 ; N c150 ; B 17 -127 629 715 ; C 151 ; WX 600 ; N c151 ; B 55 96 546 479 ; C 152 ; WX 600 ; N c152 ; B -25 -36 567 643 ; C 153 ; WX 600 ; N c153 ; B 32 -36 624 643 ; C 154 ; WX 600 ; N c154 ; B 0 0 0 0 ; C 155 ; WX 600 ; N c155 ; B 132 -244 364 801 ; C 156 ; WX 600 ; N c156 ; B 128 420 472 765 ; C 157 ; WX 600 ; N c157 ; B 130 323 449 723 ; C 158 ; WX 600 ; N c158 ; B 201 220 400 401 ; C 159 ; WX 600 ; N c159 ; B 54 39 546 525 ; C 160 ; WX 600 ; N nbspace ; B -7 141 607 369 ; C 161 ; WX 600 ; N exclamdown ; B 186 -255 414 766 ; C 162 ; WX 600 ; N cent ; B 264 -255 607 369 ; C 163 ; WX 600 ; N sterling ; B 26 -53 560 669 ; C 164 ; WX 600 ; N currency ; B 186 -255 607 291 ; C 165 ; WX 600 ; N yen ; B 186 -255 607 369 ; C 166 ; WX 600 ; N brokenbar ; B -7 -255 336 369 ; C 167 ; WX 600 ; N section ; B -7 -255 414 291 ; C 168 ; WX 600 ; N dieresis ; B -7 -255 414 369 ; C 169 ; WX 600 ; N copyright ; B 264 141 607 766 ; C 170 ; WX 600 ; N ordfeminine ; B 186 219 607 766 ; C 171 ; WX 600 ; N guillemotleft ; B 186 141 607 766 ; C 172 ; WX 600 ; N logicalnot ; B -7 141 336 766 ; C 173 ; WX 600 ; N softhyphen ; B -7 219 414 766 ; C 174 ; WX 600 ; N registered ; B -7 141 414 766 ; C 175 ; WX 600 ; N macron ; B 264 -255 607 766 ; C 176 ; WX 600 ; N degree ; B -7 -255 414 766 ; C 177 ; WX 600 ; N plusminus ; B -7 -255 414 766 ; C 178 ; WX 600 ; N twosuperior ; B -7 -255 607 369 ; C 179 ; WX 600 ; N threesuperior ; B 6 -36 559 801 ; C 180 ; WX 600 ; N acute ; B -7 -255 414 766 ; C 181 ; WX 600 ; N mu ; B -7 -255 414 766 ; C 182 ; WX 600 ; N paragraph ; B -7 -255 607 369 ; C 183 ; WX 600 ; N periodcentered ; B -7 -255 607 291 ; C 184 ; WX 600 ; N cedilla ; B -7 -255 607 369 ; C 185 ; WX 600 ; N onesuperior ; B -7 141 607 766 ; C 186 ; WX 600 ; N ordmasculine ; B -7 219 607 766 ; C 187 ; WX 600 ; N guillemotright ; B -7 141 607 766 ; C 188 ; WX 600 ; N onequarter ; B -7 -255 607 766 ; C 189 ; WX 600 ; N onehalf ; B -7 -255 607 766 ; C 190 ; WX 600 ; N threequarters ; B -7 -255 607 766 ; C 191 ; WX 600 ; N questiondown ; B -37 -50 634 620 ; C 192 ; WX 600 ; N Agrave ; B -20 -51 616 473 ; C 193 ; WX 600 ; N Aacute ; B 34 -53 579 474 ; C 194 ; WX 600 ; N Acircumflex ; B 43 -53 554 727 ; C 195 ; WX 600 ; N Atilde ; B 16 -163 590 459 ; C 196 ; WX 600 ; N Adieresis ; B 4 -164 584 459 ; C 197 ; WX 600 ; N Aring ; B 26 -53 559 474 ; C 198 ; WX 600 ; N AE ; B 20 -225 587 654 ; C 199 ; WX 600 ; N Ccedilla ; B 36 -37 536 459 ; C 200 ; WX 600 ; N Egrave ; B 13 -37 588 459 ; C 201 ; WX 600 ; N Eacute ; B 16 -37 590 459 ; C 202 ; WX 600 ; N Ecircumflex ; B 16 -37 590 654 ; C 203 ; WX 600 ; N Edieresis ; B 57 -36 608 459 ; C 204 ; WX 600 ; N Igrave ; B -8 -37 610 459 ; C 205 ; WX 600 ; N Iacute ; B -25 -37 629 459 ; C 206 ; WX 600 ; N Icircumflex ; B 16 -37 590 459 ; C 207 ; WX 600 ; N Idieresis ; B 34 -53 566 474 ; C 208 ; WX 600 ; N Eth ; B 16 -37 590 459 ; C 209 ; WX 600 ; N Ntilde ; B 18 -37 576 460 ; C 210 ; WX 600 ; N Ograve ; B -15 -225 579 474 ; C 211 ; WX 600 ; N Oacute ; B 47 -53 573 474 ; C 212 ; WX 600 ; N Ocircumflex ; B 33 -36 566 459 ; C 213 ; WX 600 ; N Otilde ; B 36 -225 610 459 ; C 214 ; WX 600 ; N Odieresis ; B -33 -37 627 464 ; C 215 ; WX 600 ; N multiply ; B 48 -36 569 459 ; C 216 ; WX 600 ; N Oslash ; B 48 -36 569 459 ; C 217 ; WX 600 ; N Ugrave ; B -21 -36 623 459 ; C 218 ; WX 600 ; N Uacute ; B 65 -53 536 474 ; C 219 ; WX 600 ; N Ucircumflex ; B 3 -36 603 459 ; C 220 ; WX 600 ; N Udieresis ; B 38 -53 564 474 ; C 221 ; WX 600 ; N Yacute ; B 3 -163 603 459 ; C 222 ; WX 600 ; N Thorn ; B 8 -37 593 459 ; C 223 ; WX 600 ; N germandbls ; B 10 -36 598 459 ; C 224 ; WX 600 ; N agrave ; B -20 -51 618 622 ; C 225 ; WX 600 ; N aacute ; B -28 -37 630 608 ; C 226 ; WX 600 ; N acircumflex ; B 6 -36 580 608 ; C 227 ; WX 600 ; N atilde ; B 6 -227 581 608 ; C 228 ; WX 600 ; N adieresis ; B 4 -227 584 608 ; C 229 ; WX 600 ; N aring ; B 6 -36 559 608 ; C 230 ; WX 600 ; N ae ; B -21 -37 621 608 ; C 231 ; WX 600 ; N ccedilla ; B 26 -36 579 608 ; C 232 ; WX 600 ; N egrave ; B 3 -37 599 608 ; C 233 ; WX 600 ; N eacute ; B -5 -36 611 608 ; C 234 ; WX 600 ; N ecircumflex ; B -5 -36 611 768 ; C 235 ; WX 600 ; N edieresis ; B 7 -36 611 608 ; C 236 ; WX 600 ; N igrave ; B -27 -37 591 608 ; C 237 ; WX 600 ; N iacute ; B -25 -36 630 608 ; C 238 ; WX 600 ; N icircumflex ; B 16 -37 591 608 ; C 239 ; WX 600 ; N idieresis ; B 13 -53 586 621 ; C 240 ; WX 600 ; N eth ; B 16 -37 591 608 ; C 241 ; WX 600 ; N ntilde ; B -19 -36 604 608 ; C 242 ; WX 600 ; N ograve ; B 51 -36 581 608 ; C 243 ; WX 600 ; N oacute ; B 26 -53 574 621 ; C 244 ; WX 600 ; N ocircumflex ; B 33 -36 566 608 ; C 245 ; WX 600 ; N otilde ; B 8 -54 601 611 ; C 246 ; WX 600 ; N odieresis ; B -30 -37 625 610 ; C 247 ; WX 600 ; N divide ; B 6 -36 580 608 ; C 248 ; WX 600 ; N oslash ; B 51 -36 581 608 ; C 249 ; WX 600 ; N ugrave ; B -18 -36 613 608 ; C 250 ; WX 600 ; N uacute ; B 54 -41 552 610 ; C 251 ; WX 600 ; N ucircumflex ; B -22 -36 614 608 ; C 252 ; WX 600 ; N udieresis ; B 29 -53 577 621 ; C 253 ; WX 600 ; N yacute ; B -22 -227 617 608 ; C 254 ; WX 600 ; N thorn ; B 10 -36 595 607 ; C 255 ; WX 600 ; N ydieresis ; B 6 -36 601 608 ; C -1 ; WX 600 ; N minus ; B 55 217 546 349 ; EndCharMetrics EndFontMetrics gle-graphics-4.2.4c/src/fonts/cyrillic/times8.afm0000664000000000000000000002400511405446017020364 0ustar rootrootStartFontMetrics 3.0 FontName TimesNRCyrMT FullName Times New Roman KOI 8 FamilyName Times New Roman KOI-8 Weight Regular ItalicAngle 0 IsFixedPitch false FontBBox -73 -212 1086 887 UnderlinePosition -205 UnderlineThickness 102 Version 1.0 Notice Typeface The Monotype Corporation plc. 1990-92. Changes 1997 by Eugene V. Demidov EncodingScheme FontSpecific CapHeight 703 XHeight 475 Ascender 720 Descender -212 StartCharMetrics 224 C 32 ; WX 250 ; N space ; B 0 0 0 0 ; C 33 ; WX 271 ; N exclam ; B 83 -14 197 702 ; C 34 ; WX 406 ; N quotedbl ; B 64 417 341 702 ; C 35 ; WX 667 ; N numbersign ; B 43 0 623 695 ; C 36 ; WX 500 ; N dollar ; B 52 -70 456 729 ; C 37 ; WX 823 ; N percent ; B 21 -28 802 701 ; C 38 ; WX 771 ; N ampersand ; B 33 -15 754 702 ; C 39 ; WX 177 ; N quoteright ; B 40 417 138 702 ; C 40 ; WX 333 ; N parenleft ; B 45 -211 317 717 ; C 41 ; WX 333 ; N parenright ; B 16 -211 288 717 ; C 42 ; WX 500 ; N asterisk ; B 71 310 429 721 ; C 43 ; WX 667 ; N plus ; B 68 79 599 608 ; C 44 ; WX 271 ; N comma ; B 63 -167 207 100 ; C 45 ; WX 333 ; N hyphen ; B 43 193 291 272 ; C 46 ; WX 271 ; N period ; B 80 -14 190 97 ; C 47 ; WX 281 ; N slash ; B 0 -15 280 717 ; C 48 ; WX 500 ; N zero ; B 33 -12 467 698 ; C 49 ; WX 500 ; N one ; B 116 0 380 698 ; C 50 ; WX 500 ; N two ; B 28 0 474 698 ; C 51 ; WX 500 ; N three ; B 58 -11 434 698 ; C 52 ; WX 500 ; N four ; B 22 0 478 698 ; C 53 ; WX 500 ; N five ; B 62 -12 451 687 ; C 54 ; WX 500 ; N six ; B 47 -12 467 697 ; C 55 ; WX 500 ; N seven ; B 42 -12 461 686 ; C 56 ; WX 500 ; N eight ; B 58 -12 440 698 ; C 57 ; WX 500 ; N nine ; B 37 -12 455 698 ; C 58 ; WX 271 ; N colon ; B 81 -14 191 475 ; C 59 ; WX 271 ; N semicolon ; B 63 -167 207 475 ; C 60 ; WX 667 ; N less ; B 69 91 598 594 ; C 61 ; WX 667 ; N equal ; B 69 197 598 489 ; C 62 ; WX 667 ; N greater ; B 69 91 598 594 ; C 63 ; WX 385 ; N question ; B 22 -14 364 702 ; C 64 ; WX 917 ; N at ; B 48 -208 896 702 ; C 65 ; WX 771 ; N A ; B 13 0 756 717 ; C 66 ; WX 667 ; N B ; B 43 0 624 686 ; C 67 ; WX 719 ; N C ; B 41 -15 695 703 ; C 68 ; WX 823 ; N D ; B 32 0 783 686 ; C 69 ; WX 667 ; N E ; B 36 0 645 686 ; C 70 ; WX 667 ; N F ; B 43 0 633 686 ; C 71 ; WX 823 ; N G ; B 43 -15 813 702 ; C 72 ; WX 823 ; N H ; B 35 0 788 687 ; C 73 ; WX 385 ; N I ; B 35 0 351 687 ; C 74 ; WX 438 ; N J ; B 17 -15 412 687 ; C 75 ; WX 823 ; N K ; B 40 0 818 686 ; C 76 ; WX 667 ; N L ; B 42 0 649 687 ; C 77 ; WX 990 ; N M ; B 43 0 946 687 ; C 78 ; WX 823 ; N N ; B 12 -8 809 686 ; C 79 ; WX 771 ; N O ; B 37 -15 734 702 ; C 80 ; WX 604 ; N P ; B 24 0 585 687 ; C 81 ; WX 771 ; N Q ; B 39 -197 736 702 ; C 82 ; WX 771 ; N R ; B 34 0 741 687 ; C 83 ; WX 552 ; N S ; B 51 -15 501 702 ; C 84 ; WX 667 ; N T ; B 23 0 645 686 ; C 85 ; WX 823 ; N U ; B 32 -15 804 687 ; C 86 ; WX 719 ; N V ; B 13 -15 708 686 ; C 87 ; WX 990 ; N W ; B 9 -15 984 686 ; C 88 ; WX 771 ; N X ; B 14 0 758 686 ; C 89 ; WX 771 ; N Y ; B 11 0 757 686 ; C 90 ; WX 667 ; N Z ; B 22 0 647 687 ; C 91 ; WX 271 ; N bracketleft ; B 59 -199 257 704 ; C 92 ; WX 281 ; N backslash ; B 0 -15 280 717 ; C 93 ; WX 271 ; N bracketright ; B 14 -199 212 704 ; C 94 ; WX 583 ; N asciicircum ; B 73 336 511 687 ; C 95 ; WX 500 ; N underscore ; B -5 -125 506 -75 ; C 96 ; WX 333 ; N quoteleft ; B 85 549 248 717 ; C 97 ; WX 500 ; N a ; B 40 -14 483 474 ; C 98 ; WX 552 ; N b ; B 21 -14 517 717 ; C 99 ; WX 438 ; N c ; B 26 -14 427 474 ; C 100 ; WX 552 ; N d ; B 33 -14 534 717 ; C 101 ; WX 438 ; N e ; B 32 -14 414 475 ; C 102 ; WX 333 ; N f ; B 24 0 410 717 ; C 103 ; WX 500 ; N g ; B 32 -212 484 474 ; C 104 ; WX 552 ; N h ; B 20 0 536 717 ; C 105 ; WX 271 ; N i ; B 23 0 249 720 ; C 106 ; WX 271 ; N j ; B -73 -212 199 720 ; C 107 ; WX 552 ; N k ; B 26 0 535 717 ; C 108 ; WX 271 ; N l ; B 22 0 248 717 ; C 109 ; WX 823 ; N m ; B 8 0 811 475 ; C 110 ; WX 552 ; N n ; B 19 0 530 475 ; C 111 ; WX 552 ; N o ; B 45 -14 507 475 ; C 112 ; WX 552 ; N p ; B 17 -211 522 475 ; C 113 ; WX 552 ; N q ; B 37 -211 532 475 ; C 114 ; WX 385 ; N r ; B 27 0 373 475 ; C 115 ; WX 385 ; N s ; B 41 -14 344 475 ; C 116 ; WX 333 ; N t ; B 29 -14 321 611 ; C 117 ; WX 552 ; N u ; B 18 -13 539 464 ; C 118 ; WX 500 ; N v ; B 14 -14 488 464 ; C 119 ; WX 719 ; N w ; B 15 -14 709 464 ; C 120 ; WX 500 ; N x ; B 17 0 483 464 ; C 121 ; WX 500 ; N y ; B 17 -212 484 464 ; C 122 ; WX 437 ; N z ; B 15 0 419 464 ; C 123 ; WX 479 ; N braceleft ; B 138 -193 410 717 ; C 124 ; WX 198 ; N bar ; B 66 -212 131 717 ; C 125 ; WX 479 ; N braceright ; B 86 -193 359 717 ; C 126 ; WX 667 ; N asciitilde ; B 70 269 596 417 ; C 128 ; WX 250 ; N c128 ; B 0 0 0 0 ; C 129 ; WX 250 ; N c129 ; B 0 0 0 0 ; C 130 ; WX 250 ; N c130 ; B 0 0 0 0 ; C 131 ; WX 250 ; N c131 ; B 0 0 0 0 ; C 132 ; WX 250 ; N c132 ; B 0 0 0 0 ; C 133 ; WX 250 ; N c133 ; B 0 0 0 0 ; C 134 ; WX 250 ; N c134 ; B 0 0 0 0 ; C 135 ; WX 250 ; N c135 ; B 0 0 0 0 ; C 136 ; WX 250 ; N c136 ; B 0 0 0 0 ; C 137 ; WX 250 ; N c137 ; B 0 0 0 0 ; C 138 ; WX 250 ; N c138 ; B 0 0 0 0 ; C 139 ; WX 250 ; N c139 ; B 0 0 0 0 ; C 140 ; WX 250 ; N c140 ; B 0 0 0 0 ; C 141 ; WX 250 ; N c141 ; B 0 0 0 0 ; C 142 ; WX 250 ; N c142 ; B 0 0 0 0 ; C 143 ; WX 250 ; N c143 ; B 0 0 0 0 ; C 144 ; WX 250 ; N c144 ; B 0 0 0 0 ; C 145 ; WX 250 ; N c145 ; B 0 0 0 0 ; C 146 ; WX 250 ; N c146 ; B 0 0 0 0 ; C 147 ; WX 250 ; N c147 ; B 0 0 0 0 ; C 148 ; WX 250 ; N c148 ; B 0 0 0 0 ; C 149 ; WX 250 ; N c149 ; B 0 0 0 0 ; C 150 ; WX 250 ; N c150 ; B 0 0 0 0 ; C 151 ; WX 250 ; N c151 ; B 0 0 0 0 ; C 152 ; WX 250 ; N c152 ; B 0 0 0 0 ; C 153 ; WX 250 ; N c153 ; B 0 0 0 0 ; C 154 ; WX 250 ; N c154 ; B 0 0 0 0 ; C 155 ; WX 250 ; N c155 ; B 0 0 0 0 ; C 156 ; WX 250 ; N c156 ; B 0 0 0 0 ; C 157 ; WX 250 ; N c157 ; B 0 0 0 0 ; C 158 ; WX 250 ; N c158 ; B 0 0 0 0 ; C 159 ; WX 250 ; N c159 ; B 0 0 0 0 ; C 160 ; WX 250 ; N nbspace ; B 0 0 0 0 ; C 161 ; WX 250 ; N exclamdown ; B 0 0 0 0 ; C 162 ; WX 250 ; N cent ; B 0 0 0 0 ; C 163 ; WX 438 ; N sterling ; B 32 -14 414 689 ; C 164 ; WX 250 ; N currency ; B 0 0 0 0 ; C 165 ; WX 250 ; N yen ; B 0 0 0 0 ; C 166 ; WX 250 ; N brokenbar ; B 0 0 0 0 ; C 167 ; WX 250 ; N section ; B 0 0 0 0 ; C 168 ; WX 250 ; N dieresis ; B 0 0 0 0 ; C 169 ; WX 250 ; N copyright ; B 0 0 0 0 ; C 170 ; WX 250 ; N ordfeminine ; B 0 0 0 0 ; C 171 ; WX 250 ; N guillemotleft ; B 0 0 0 0 ; C 172 ; WX 250 ; N logicalnot ; B 0 0 0 0 ; C 173 ; WX 250 ; N softhyphen ; B 0 0 0 0 ; C 174 ; WX 250 ; N registered ; B 0 0 0 0 ; C 175 ; WX 250 ; N macron ; B 0 0 0 0 ; C 176 ; WX 250 ; N degree ; B 0 0 0 0 ; C 177 ; WX 250 ; N plusminus ; B 0 0 0 0 ; C 178 ; WX 250 ; N twosuperior ; B 0 0 0 0 ; C 179 ; WX 667 ; N threesuperior ; B 36 0 645 870 ; C 180 ; WX 250 ; N acute ; B 0 0 0 0 ; C 181 ; WX 250 ; N mu ; B 0 0 0 0 ; C 182 ; WX 250 ; N paragraph ; B 0 0 0 0 ; C 183 ; WX 250 ; N periodcentered ; B 0 0 0 0 ; C 184 ; WX 250 ; N cedilla ; B 0 0 0 0 ; C 185 ; WX 250 ; N onesuperior ; B 0 0 0 0 ; C 186 ; WX 250 ; N ordmasculine ; B 0 0 0 0 ; C 187 ; WX 250 ; N guillemotright ; B 0 0 0 0 ; C 188 ; WX 250 ; N onequarter ; B 0 0 0 0 ; C 189 ; WX 250 ; N onehalf ; B 0 0 0 0 ; C 190 ; WX 250 ; N threequarters ; B 0 0 0 0 ; C 191 ; WX 250 ; N questiondown ; B 0 0 0 0 ; C 192 ; WX 783 ; N Agrave ; B 26 -14 752 474 ; C 193 ; WX 500 ; N Aacute ; B 40 -14 483 474 ; C 194 ; WX 552 ; N Acircumflex ; B 49 -14 507 711 ; C 195 ; WX 567 ; N Atilde ; B 27 -124 539 464 ; C 196 ; WX 531 ; N Adieresis ; B 5 -124 506 464 ; C 197 ; WX 438 ; N Aring ; B 32 -14 414 475 ; C 198 ; WX 667 ; N AE ; B 36 -211 631 717 ; C 199 ; WX 443 ; N Ccedilla ; B 25 0 430 464 ; C 200 ; WX 500 ; N Egrave ; B 17 0 483 464 ; C 201 ; WX 565 ; N Eacute ; B 25 0 539 464 ; C 202 ; WX 565 ; N Ecircumflex ; B 25 0 539 680 ; C 203 ; WX 525 ; N Edieresis ; B 27 0 502 469 ; C 204 ; WX 530 ; N Igrave ; B 4 -14 503 464 ; C 205 ; WX 666 ; N Iacute ; B 25 0 640 464 ; C 206 ; WX 565 ; N Icircumflex ; B 25 0 539 464 ; C 207 ; WX 552 ; N Idieresis ; B 45 -14 507 475 ; C 208 ; WX 565 ; N Eth ; B 25 0 539 464 ; C 209 ; WX 487 ; N Ntilde ; B 13 0 462 464 ; C 210 ; WX 552 ; N Ograve ; B 17 -211 522 475 ; C 211 ; WX 438 ; N Oacute ; B 26 -14 427 474 ; C 212 ; WX 476 ; N Ocircumflex ; B 16 0 460 464 ; C 213 ; WX 500 ; N Otilde ; B 17 -212 484 464 ; C 214 ; WX 716 ; N Odieresis ; B 21 0 696 468 ; C 215 ; WX 500 ; N multiply ; B 29 0 461 464 ; C 216 ; WX 491 ; N Oslash ; B 27 0 454 464 ; C 217 ; WX 719 ; N Ugrave ; B 25 0 693 464 ; C 218 ; WX 417 ; N Uacute ; B 16 -14 385 475 ; C 219 ; WX 810 ; N Ucircumflex ; B 25 0 784 464 ; C 220 ; WX 445 ; N Udieresis ; B 21 -14 413 475 ; C 221 ; WX 810 ; N Yacute ; B 25 -124 784 464 ; C 222 ; WX 531 ; N Thorn ; B 19 0 506 464 ; C 223 ; WX 556 ; N germandbls ; B 21 0 526 464 ; C 224 ; WX 1104 ; N agrave ; B 38 -15 1068 702 ; C 225 ; WX 771 ; N aacute ; B 13 0 756 717 ; C 226 ; WX 646 ; N acircumflex ; B 39 0 608 686 ; C 227 ; WX 823 ; N atilde ; B 37 -192 782 686 ; C 228 ; WX 747 ; N adieresis ; B 13 -192 714 686 ; C 229 ; WX 667 ; N aring ; B 36 0 645 686 ; C 230 ; WX 869 ; N ae ; B 39 0 831 686 ; C 231 ; WX 626 ; N ccedilla ; B 42 0 607 686 ; C 232 ; WX 771 ; N egrave ; B 14 0 758 686 ; C 233 ; WX 824 ; N eacute ; B 35 0 789 686 ; C 234 ; WX 824 ; N ecircumflex ; B 35 0 789 887 ; C 235 ; WX 750 ; N edieresis ; B 35 0 742 693 ; C 236 ; WX 750 ; N igrave ; B 21 -7 714 686 ; C 237 ; WX 990 ; N iacute ; B 43 0 946 687 ; C 238 ; WX 823 ; N icircumflex ; B 35 0 788 687 ; C 239 ; WX 771 ; N idieresis ; B 37 -15 734 702 ; C 240 ; WX 818 ; N eth ; B 35 0 783 686 ; C 241 ; WX 749 ; N ntilde ; B 7 0 714 687 ; C 242 ; WX 604 ; N ograve ; B 24 0 585 687 ; C 243 ; WX 719 ; N oacute ; B 41 -15 695 703 ; C 244 ; WX 667 ; N ocircumflex ; B 23 0 645 686 ; C 245 ; WX 731 ; N otilde ; B 3 -15 728 686 ; C 246 ; WX 997 ; N odieresis ; B 22 0 975 693 ; C 247 ; WX 667 ; N divide ; B 43 0 624 686 ; C 248 ; WX 646 ; N oslash ; B 35 0 604 686 ; C 249 ; WX 981 ; N ugrave ; B 38 0 948 686 ; C 250 ; WX 532 ; N uacute ; B 32 -15 488 702 ; C 251 ; WX 1122 ; N ucircumflex ; B 36 0 1086 686 ; C 252 ; WX 698 ; N udieresis ; B 22 -15 662 702 ; C 253 ; WX 1122 ; N yacute ; B 36 -192 1086 686 ; C 254 ; WX 747 ; N thorn ; B 18 0 712 687 ; C 255 ; WX 757 ; N ydieresis ; B 19 0 718 686 ; C -1 ; WX 333 ; N minus ; B 43 193 291 272 ; EndCharMetrics EndFontMetrics gle-graphics-4.2.4c/src/fonts/cyrillic/ariali8.afm0000664000000000000000000002403011405446017020502 0ustar rootrootStartFontMetrics 3.0 FontName ArialCyrMT-Italic FullName Arial KOI 8 Italic FamilyName Arial KOI-8 Weight Italic ItalicAngle 0 IsFixedPitch false FontBBox -138 -211 1041 877 UnderlinePosition -217 UnderlineThickness 150 Version 1.1 Notice Typeface The Monotype Corporation plc. 1990-92. Changes 1997 by Eugene V. Demidov EncodingScheme FontSpecific CapHeight 728 XHeight 530 Ascender 728 Descender -208 StartCharMetrics 224 C 32 ; WX 278 ; N space ; B 0 0 0 0 ; C 33 ; WX 278 ; N exclam ; B 38 0 285 716 ; C 34 ; WX 355 ; N quotedbl ; B 112 462 404 716 ; C 35 ; WX 556 ; N numbersign ; B 32 -12 565 728 ; C 36 ; WX 556 ; N dollar ; B 34 -96 556 764 ; C 37 ; WX 889 ; N percent ; B 86 -27 841 728 ; C 38 ; WX 667 ; N ampersand ; B 52 -17 624 728 ; C 39 ; WX 191 ; N quoteright ; B 110 462 241 716 ; C 40 ; WX 333 ; N parenleft ; B 66 -210 394 728 ; C 41 ; WX 333 ; N parenright ; B -62 -210 267 728 ; C 42 ; WX 389 ; N asterisk ; B 102 423 424 728 ; C 43 ; WX 584 ; N plus ; B 75 116 548 589 ; C 44 ; WX 278 ; N comma ; B 5 -145 156 100 ; C 45 ; WX 333 ; N hyphen ; B 23 215 311 303 ; C 46 ; WX 278 ; N period ; B 35 0 156 100 ; C 47 ; WX 278 ; N slash ; B -71 -12 390 728 ; C 48 ; WX 556 ; N zero ; B 51 -12 545 719 ; C 49 ; WX 556 ; N one ; B 128 0 459 719 ; C 50 ; WX 556 ; N two ; B 39 0 542 719 ; C 51 ; WX 556 ; N three ; B 35 -12 537 719 ; C 52 ; WX 556 ; N four ; B 25 0 522 716 ; C 53 ; WX 556 ; N five ; B 38 -12 541 706 ; C 54 ; WX 556 ; N six ; B 63 -12 547 719 ; C 55 ; WX 556 ; N seven ; B 101 0 575 706 ; C 56 ; WX 556 ; N eight ; B 55 -12 544 719 ; C 57 ; WX 556 ; N nine ; B 47 -12 531 719 ; C 58 ; WX 278 ; N colon ; B 37 0 245 519 ; C 59 ; WX 278 ; N semicolon ; B 6 -145 244 519 ; C 60 ; WX 584 ; N less ; B 78 110 552 595 ; C 61 ; WX 584 ; N equal ; B 76 204 548 503 ; C 62 ; WX 584 ; N greater ; B 78 110 552 595 ; C 63 ; WX 556 ; N question ; B 119 0 553 728 ; C 64 ; WX 1015 ; N at ; B 38 -210 962 729 ; C 65 ; WX 667 ; N A ; B -38 0 598 716 ; C 66 ; WX 667 ; N B ; B 25 0 636 716 ; C 67 ; WX 722 ; N C ; B 74 -12 713 728 ; C 68 ; WX 722 ; N D ; B 27 0 695 716 ; C 69 ; WX 667 ; N E ; B 26 0 692 716 ; C 70 ; WX 611 ; N F ; B 25 0 639 716 ; C 71 ; WX 778 ; N G ; B 77 -12 746 728 ; C 72 ; WX 722 ; N H ; B 25 0 737 716 ; C 73 ; WX 278 ; N I ; B 37 0 282 716 ; C 74 ; WX 500 ; N J ; B 14 -12 517 716 ; C 75 ; WX 667 ; N K ; B 26 0 722 716 ; C 76 ; WX 556 ; N L ; B 23 0 507 716 ; C 77 ; WX 833 ; N M ; B 23 0 851 716 ; C 78 ; WX 722 ; N N ; B 28 0 736 716 ; C 79 ; WX 778 ; N O ; B 69 -12 750 728 ; C 80 ; WX 667 ; N P ; B 24 0 679 716 ; C 81 ; WX 778 ; N Q ; B 69 -82 750 728 ; C 82 ; WX 722 ; N R ; B 30 0 713 716 ; C 83 ; WX 667 ; N S ; B 45 -12 646 728 ; C 84 ; WX 611 ; N T ; B 103 0 683 716 ; C 85 ; WX 722 ; N U ; B 77 -12 734 716 ; C 86 ; WX 667 ; N V ; B 105 0 737 716 ; C 87 ; WX 944 ; N W ; B 105 0 1041 716 ; C 88 ; WX 667 ; N X ; B -47 0 753 716 ; C 89 ; WX 667 ; N Y ; B 98 0 754 716 ; C 90 ; WX 611 ; N Z ; B 4 0 616 716 ; C 91 ; WX 278 ; N bracketleft ; B -17 -196 367 716 ; C 92 ; WX 278 ; N backslash ; B 84 -12 236 728 ; C 93 ; WX 278 ; N bracketright ; B -89 -196 298 716 ; C 94 ; WX 469 ; N asciicircum ; B 49 337 465 728 ; C 95 ; WX 556 ; N underscore ; B -60 -198 507 -135 ; C 96 ; WX 333 ; N quoteleft ; B 127 582 291 716 ; C 97 ; WX 556 ; N a ; B 27 -12 509 530 ; C 98 ; WX 556 ; N b ; B 17 -12 519 716 ; C 99 ; WX 500 ; N c ; B 38 -12 492 530 ; C 100 ; WX 556 ; N d ; B 36 -12 581 716 ; C 101 ; WX 556 ; N e ; B 35 -12 515 530 ; C 102 ; WX 278 ; N f ; B 26 0 388 728 ; C 103 ; WX 556 ; N g ; B 9 -208 548 530 ; C 104 ; WX 556 ; N h ; B 17 0 512 716 ; C 105 ; WX 222 ; N i ; B 13 0 250 716 ; C 106 ; WX 222 ; N j ; B -138 -208 250 716 ; C 107 ; WX 500 ; N k ; B 15 0 534 716 ; C 108 ; WX 222 ; N l ; B 13 0 250 716 ; C 109 ; WX 833 ; N m ; B 14 0 793 530 ; C 110 ; WX 556 ; N n ; B 17 0 511 530 ; C 111 ; WX 556 ; N o ; B 32 -12 523 530 ; C 112 ; WX 556 ; N p ; B -27 -199 518 530 ; C 113 ; WX 556 ; N q ; B 35 -199 536 530 ; C 114 ; WX 333 ; N r ; B 15 0 401 530 ; C 115 ; WX 500 ; N s ; B 10 -12 470 530 ; C 116 ; WX 278 ; N t ; B 36 -9 300 707 ; C 117 ; WX 556 ; N u ; B 44 -12 539 519 ; C 118 ; WX 500 ; N v ; B 60 0 540 519 ; C 119 ; WX 722 ; N w ; B 61 0 760 519 ; C 120 ; WX 500 ; N x ; B -20 0 519 519 ; C 121 ; WX 500 ; N y ; B -19 -208 542 519 ; C 122 ; WX 500 ; N z ; B 1 0 493 519 ; C 123 ; WX 334 ; N braceleft ; B 34 -211 427 728 ; C 124 ; WX 260 ; N bar ; B 115 -210 191 728 ; C 125 ; WX 334 ; N braceright ; B -92 -211 301 728 ; C 126 ; WX 584 ; N asciitilde ; B 61 272 560 432 ; C 128 ; WX 278 ; N c128 ; B 0 0 0 0 ; C 129 ; WX 278 ; N c129 ; B 0 0 0 0 ; C 130 ; WX 278 ; N c130 ; B 0 0 0 0 ; C 131 ; WX 278 ; N c131 ; B 0 0 0 0 ; C 132 ; WX 278 ; N c132 ; B 0 0 0 0 ; C 133 ; WX 278 ; N c133 ; B 0 0 0 0 ; C 134 ; WX 278 ; N c134 ; B 0 0 0 0 ; C 135 ; WX 278 ; N c135 ; B 0 0 0 0 ; C 136 ; WX 278 ; N c136 ; B 0 0 0 0 ; C 137 ; WX 278 ; N c137 ; B 0 0 0 0 ; C 138 ; WX 278 ; N c138 ; B 0 0 0 0 ; C 139 ; WX 278 ; N c139 ; B 0 0 0 0 ; C 140 ; WX 278 ; N c140 ; B 0 0 0 0 ; C 141 ; WX 278 ; N c141 ; B 0 0 0 0 ; C 142 ; WX 278 ; N c142 ; B 0 0 0 0 ; C 143 ; WX 278 ; N c143 ; B 0 0 0 0 ; C 144 ; WX 278 ; N c144 ; B 0 0 0 0 ; C 145 ; WX 278 ; N c145 ; B 0 0 0 0 ; C 146 ; WX 278 ; N c146 ; B 0 0 0 0 ; C 147 ; WX 278 ; N c147 ; B 0 0 0 0 ; C 148 ; WX 278 ; N c148 ; B 0 0 0 0 ; C 149 ; WX 278 ; N c149 ; B 0 0 0 0 ; C 150 ; WX 278 ; N c150 ; B 0 0 0 0 ; C 151 ; WX 278 ; N c151 ; B 0 0 0 0 ; C 152 ; WX 278 ; N c152 ; B 0 0 0 0 ; C 153 ; WX 278 ; N c153 ; B 0 0 0 0 ; C 154 ; WX 278 ; N c154 ; B 0 0 0 0 ; C 155 ; WX 278 ; N c155 ; B 0 0 0 0 ; C 156 ; WX 278 ; N c156 ; B 0 0 0 0 ; C 157 ; WX 278 ; N c157 ; B 0 0 0 0 ; C 158 ; WX 278 ; N c158 ; B 0 0 0 0 ; C 159 ; WX 278 ; N c159 ; B 0 0 0 0 ; C 160 ; WX 278 ; N nbspace ; B 0 0 0 0 ; C 161 ; WX 278 ; N exclamdown ; B 0 0 0 0 ; C 162 ; WX 278 ; N cent ; B 0 0 0 0 ; C 163 ; WX 556 ; N sterling ; B 35 -12 515 699 ; C 164 ; WX 278 ; N currency ; B 0 0 0 0 ; C 165 ; WX 278 ; N yen ; B 0 0 0 0 ; C 166 ; WX 278 ; N brokenbar ; B 0 0 0 0 ; C 167 ; WX 278 ; N section ; B 0 0 0 0 ; C 168 ; WX 278 ; N dieresis ; B 0 0 0 0 ; C 169 ; WX 278 ; N copyright ; B 0 0 0 0 ; C 170 ; WX 278 ; N ordfeminine ; B 0 0 0 0 ; C 171 ; WX 278 ; N guillemotleft ; B 0 0 0 0 ; C 172 ; WX 278 ; N logicalnot ; B 0 0 0 0 ; C 173 ; WX 278 ; N softhyphen ; B 0 0 0 0 ; C 174 ; WX 278 ; N registered ; B 0 0 0 0 ; C 175 ; WX 278 ; N macron ; B 0 0 0 0 ; C 176 ; WX 278 ; N degree ; B 0 0 0 0 ; C 177 ; WX 278 ; N plusminus ; B 0 0 0 0 ; C 178 ; WX 278 ; N twosuperior ; B 0 0 0 0 ; C 179 ; WX 667 ; N threesuperior ; B 26 0 692 859 ; C 180 ; WX 278 ; N acute ; B 0 0 0 0 ; C 181 ; WX 278 ; N mu ; B 0 0 0 0 ; C 182 ; WX 278 ; N paragraph ; B 0 0 0 0 ; C 183 ; WX 278 ; N periodcentered ; B 0 0 0 0 ; C 184 ; WX 278 ; N cedilla ; B 0 0 0 0 ; C 185 ; WX 278 ; N onesuperior ; B 0 0 0 0 ; C 186 ; WX 278 ; N ordmasculine ; B 0 0 0 0 ; C 187 ; WX 278 ; N guillemotright ; B 0 0 0 0 ; C 188 ; WX 278 ; N onequarter ; B 0 0 0 0 ; C 189 ; WX 278 ; N onehalf ; B 0 0 0 0 ; C 190 ; WX 278 ; N threequarters ; B 0 0 0 0 ; C 191 ; WX 278 ; N questiondown ; B 0 0 0 0 ; C 192 ; WX 752 ; N Agrave ; B 14 -12 722 530 ; C 193 ; WX 556 ; N Aacute ; B 27 -12 509 530 ; C 194 ; WX 563 ; N Acircumflex ; B 41 -12 579 728 ; C 195 ; WX 572 ; N Atilde ; B 44 -151 538 519 ; C 196 ; WX 553 ; N Adieresis ; B 32 -12 530 728 ; C 197 ; WX 556 ; N Aring ; B 35 -12 515 530 ; C 198 ; WX 835 ; N AE ; B 30 -199 806 716 ; C 199 ; WX 493 ; N Ccedilla ; B 16 -12 458 530 ; C 200 ; WX 500 ; N Egrave ; B -20 0 519 519 ; C 201 ; WX 556 ; N Eacute ; B 44 -12 539 519 ; C 202 ; WX 556 ; N Ecircumflex ; B 44 -12 539 719 ; C 203 ; WX 472 ; N Edieresis ; B 14 0 503 519 ; C 204 ; WX 564 ; N Igrave ; B -36 -7 553 519 ; C 205 ; WX 686 ; N Iacute ; B 14 0 675 519 ; C 206 ; WX 550 ; N Icircumflex ; B 14 0 538 519 ; C 207 ; WX 556 ; N Idieresis ; B 32 -12 523 530 ; C 208 ; WX 550 ; N Eth ; B 14 0 538 518 ; C 209 ; WX 534 ; N Ntilde ; B -29 0 525 519 ; C 210 ; WX 556 ; N Ograve ; B -27 -199 518 530 ; C 211 ; WX 500 ; N Oacute ; B 38 -12 492 530 ; C 212 ; WX 833 ; N Ocircumflex ; B 14 0 793 530 ; C 213 ; WX 500 ; N Otilde ; B -19 -208 542 519 ; C 214 ; WX 688 ; N Odieresis ; B -46 0 724 519 ; C 215 ; WX 522 ; N multiply ; B 28 -12 488 530 ; C 216 ; WX 526 ; N Oslash ; B 14 0 475 519 ; C 217 ; WX 736 ; N Ugrave ; B 14 0 726 519 ; C 218 ; WX 465 ; N Uacute ; B -7 -12 433 530 ; C 219 ; WX 830 ; N Ucircumflex ; B 42 -12 818 519 ; C 220 ; WX 492 ; N Udieresis ; B 9 -12 461 530 ; C 221 ; WX 851 ; N Yacute ; B 42 -151 818 519 ; C 222 ; WX 518 ; N Thorn ; B 57 0 506 519 ; C 223 ; WX 621 ; N germandbls ; B 42 0 571 519 ; C 224 ; WX 1022 ; N agrave ; B 25 -12 995 728 ; C 225 ; WX 667 ; N aacute ; B -38 0 598 716 ; C 226 ; WX 651 ; N acircumflex ; B 25 0 640 716 ; C 227 ; WX 727 ; N atilde ; B 26 -143 742 716 ; C 228 ; WX 704 ; N adieresis ; B -80 -143 716 716 ; C 229 ; WX 667 ; N aring ; B 26 0 692 716 ; C 230 ; WX 795 ; N ae ; B 63 0 776 716 ; C 231 ; WX 544 ; N ccedilla ; B 26 0 639 716 ; C 232 ; WX 667 ; N egrave ; B -47 0 753 716 ; C 233 ; WX 715 ; N eacute ; B 25 0 734 716 ; C 234 ; WX 715 ; N ecircumflex ; B 25 0 734 877 ; C 235 ; WX 589 ; N edieresis ; B 26 0 657 721 ; C 236 ; WX 686 ; N igrave ; B -27 -8 706 716 ; C 237 ; WX 833 ; N iacute ; B 23 0 851 716 ; C 238 ; WX 722 ; N icircumflex ; B 25 0 737 716 ; C 239 ; WX 778 ; N idieresis ; B 69 -12 750 728 ; C 240 ; WX 723 ; N eth ; B 26 0 743 716 ; C 241 ; WX 682 ; N ntilde ; B -43 0 703 716 ; C 242 ; WX 667 ; N ograve ; B 24 0 679 716 ; C 243 ; WX 722 ; N oacute ; B 74 -12 713 728 ; C 244 ; WX 611 ; N ocircumflex ; B 103 0 683 716 ; C 245 ; WX 639 ; N otilde ; B 96 -10 734 716 ; C 246 ; WX 917 ; N odieresis ; B -52 0 985 721 ; C 247 ; WX 667 ; N divide ; B 25 0 636 716 ; C 248 ; WX 651 ; N oslash ; B 25 0 609 716 ; C 249 ; WX 886 ; N ugrave ; B 25 0 904 716 ; C 250 ; WX 614 ; N uacute ; B 24 -12 589 728 ; C 251 ; WX 920 ; N ucircumflex ; B 26 0 939 716 ; C 252 ; WX 694 ; N udieresis ; B 27 -12 670 728 ; C 253 ; WX 923 ; N yacute ; B 26 -143 939 716 ; C 254 ; WX 673 ; N thorn ; B 90 0 692 716 ; C 255 ; WX 805 ; N ydieresis ; B 96 0 764 716 ; C -1 ; WX 333 ; N minus ; B 23 215 311 303 ; EndCharMetrics EndFontMetrics gle-graphics-4.2.4c/src/fonts/cyrillic/timesbi8.afm0000664000000000000000000002416311405446017020704 0ustar rootrootStartFontMetrics 3.0 FontName TimesNRCyrMT-BoldInclined FullName Times New Roman KOI 8 Bold Italic FamilyName Times New Roman KOI-8 Weight BoldItalic ItalicAngle -1 IsFixedPitch false FontBBox -164 -215 1236 877 UnderlinePosition -205 UnderlineThickness 102 Version 1.0 Notice Typeface The Monotype Corporation plc. 1990-92. Changes 1997 by Eugene V. Demidov EncodingScheme FontSpecific CapHeight 702 XHeight 458 Ascender 705 Descender -212 StartCharMetrics 224 C 32 ; WX 250 ; N space ; B 0 0 0 0 ; C 33 ; WX 271 ; N exclam ; B 12 -12 315 705 ; C 34 ; WX 552 ; N quotedbl ; B 182 376 577 702 ; C 35 ; WX 667 ; N numbersign ; B 75 0 666 704 ; C 36 ; WX 500 ; N dollar ; B 24 -76 500 740 ; C 37 ; WX 875 ; N percent ; B 64 -28 878 702 ; C 38 ; WX 719 ; N ampersand ; B 17 -15 679 702 ; C 39 ; WX 281 ; N quoteright ; B 173 377 332 702 ; C 40 ; WX 500 ; N parenleft ; B 137 -187 524 692 ; C 41 ; WX 500 ; N parenright ; B -7 -187 380 692 ; C 42 ; WX 500 ; N asterisk ; B 142 325 532 705 ; C 43 ; WX 667 ; N plus ; B 97 72 640 615 ; C 44 ; WX 271 ; N comma ; B -43 -187 162 121 ; C 45 ; WX 333 ; N hyphen ; B 26 180 312 283 ; C 46 ; WX 271 ; N period ; B 11 -12 172 148 ; C 47 ; WX 281 ; N slash ; B -69 -15 419 705 ; C 48 ; WX 500 ; N zero ; B 52 -12 516 698 ; C 49 ; WX 500 ; N one ; B 37 0 463 698 ; C 50 ; WX 500 ; N two ; B 33 0 482 702 ; C 51 ; WX 500 ; N three ; B 35 -12 484 702 ; C 52 ; WX 500 ; N four ; B 36 -15 518 698 ; C 53 ; WX 500 ; N five ; B 37 -12 510 687 ; C 54 ; WX 500 ; N six ; B 40 -12 549 698 ; C 55 ; WX 500 ; N seven ; B 99 -15 555 687 ; C 56 ; WX 500 ; N eight ; B 37 -12 513 702 ; C 57 ; WX 500 ; N nine ; B 26 -16 512 698 ; C 58 ; WX 333 ; N colon ; B 42 -12 291 457 ; C 59 ; WX 333 ; N semicolon ; B -4 -187 299 457 ; C 60 ; WX 667 ; N less ; B 75 71 617 616 ; C 61 ; WX 667 ; N equal ; B 97 176 640 510 ; C 62 ; WX 667 ; N greater ; B 119 71 661 616 ; C 63 ; WX 385 ; N question ; B 68 -12 448 705 ; C 64 ; WX 958 ; N at ; B 44 -215 934 705 ; C 65 ; WX 719 ; N A ; B -10 0 616 702 ; C 66 ; WX 667 ; N B ; B -5 0 666 686 ; C 67 ; WX 719 ; N C ; B 67 -15 785 702 ; C 68 ; WX 771 ; N D ; B -6 0 738 686 ; C 69 ; WX 667 ; N E ; B 7 0 697 687 ; C 70 ; WX 604 ; N F ; B 4 0 661 686 ; C 71 ; WX 719 ; N G ; B 39 -15 752 702 ; C 72 ; WX 823 ; N H ; B 4 0 893 686 ; C 73 ; WX 385 ; N I ; B -2 0 461 686 ; C 74 ; WX 500 ; N J ; B 2 -15 563 686 ; C 75 ; WX 719 ; N K ; B -6 0 786 686 ; C 76 ; WX 667 ; N L ; B -5 0 616 686 ; C 77 ; WX 990 ; N M ; B -7 0 1056 686 ; C 78 ; WX 771 ; N N ; B -5 -6 849 687 ; C 79 ; WX 771 ; N O ; B 70 -15 768 702 ; C 80 ; WX 667 ; N P ; B 4 0 674 686 ; C 81 ; WX 771 ; N Q ; B 71 -209 770 702 ; C 82 ; WX 719 ; N R ; B -1 0 679 686 ; C 83 ; WX 604 ; N S ; B 0 -15 632 702 ; C 84 ; WX 667 ; N T ; B 90 0 754 686 ; C 85 ; WX 771 ; N U ; B 115 -15 844 686 ; C 86 ; WX 719 ; N V ; B 166 -15 787 687 ; C 87 ; WX 990 ; N W ; B 139 -15 1071 687 ; C 88 ; WX 719 ; N X ; B -13 0 780 687 ; C 89 ; WX 719 ; N Y ; B 124 0 781 686 ; C 90 ; WX 719 ; N Z ; B 7 0 770 686 ; C 91 ; WX 500 ; N bracketleft ; B 52 -180 543 686 ; C 92 ; WX 281 ; N backslash ; B 107 -15 243 705 ; C 93 ; WX 500 ; N bracketright ; B -26 -181 465 686 ; C 94 ; WX 510 ; N asciicircum ; B 81 337 515 687 ; C 95 ; WX 500 ; N underscore ; B -26 -125 486 -75 ; C 96 ; WX 333 ; N quoteleft ; B 130 521 330 693 ; C 97 ; WX 500 ; N a ; B 20 -12 484 458 ; C 98 ; WX 500 ; N b ; B 21 -12 475 702 ; C 99 ; WX 437 ; N c ; B 27 -12 419 458 ; C 100 ; WX 500 ; N d ; B 19 -12 560 702 ; C 101 ; WX 437 ; N e ; B 23 -12 416 458 ; C 102 ; WX 333 ; N f ; B -159 -212 509 705 ; C 103 ; WX 500 ; N g ; B -43 -212 503 453 ; C 104 ; WX 500 ; N h ; B -12 -5 459 702 ; C 105 ; WX 271 ; N i ; B 18 -12 304 705 ; C 106 ; WX 271 ; N j ; B -164 -209 291 705 ; C 107 ; WX 552 ; N k ; B 7 -6 534 702 ; C 108 ; WX 271 ; N l ; B 13 -12 328 702 ; C 109 ; WX 771 ; N m ; B -3 -6 745 458 ; C 110 ; WX 500 ; N n ; B -4 -6 467 458 ; C 111 ; WX 500 ; N o ; B 26 -12 474 457 ; C 112 ; WX 500 ; N p ; B -117 -211 462 458 ; C 113 ; WX 500 ; N q ; B 19 -211 485 458 ; C 114 ; WX 385 ; N r ; B 17 0 383 458 ; C 115 ; WX 385 ; N s ; B 2 -6 357 458 ; C 116 ; WX 333 ; N t ; B 28 -12 323 572 ; C 117 ; WX 500 ; N u ; B 17 -12 488 458 ; C 118 ; WX 438 ; N v ; B 46 -11 405 458 ; C 119 ; WX 667 ; N w ; B 49 -12 631 458 ; C 120 ; WX 552 ; N x ; B 2 -12 514 458 ; C 121 ; WX 500 ; N y ; B -66 -212 472 458 ; C 122 ; WX 437 ; N z ; B -2 -89 421 446 ; C 123 ; WX 396 ; N braceleft ; B 64 -187 335 692 ; C 124 ; WX 219 ; N bar ; B 58 -211 164 705 ; C 125 ; WX 396 ; N braceright ; B 64 -187 335 692 ; C 126 ; WX 667 ; N asciitilde ; B 98 255 639 431 ; C 128 ; WX 250 ; N c128 ; B 0 0 0 0 ; C 129 ; WX 250 ; N c129 ; B 0 0 0 0 ; C 130 ; WX 250 ; N c130 ; B 0 0 0 0 ; C 131 ; WX 250 ; N c131 ; B 0 0 0 0 ; C 132 ; WX 250 ; N c132 ; B 0 0 0 0 ; C 133 ; WX 250 ; N c133 ; B 0 0 0 0 ; C 134 ; WX 250 ; N c134 ; B 0 0 0 0 ; C 135 ; WX 250 ; N c135 ; B 0 0 0 0 ; C 136 ; WX 250 ; N c136 ; B 0 0 0 0 ; C 137 ; WX 250 ; N c137 ; B 0 0 0 0 ; C 138 ; WX 250 ; N c138 ; B 0 0 0 0 ; C 139 ; WX 250 ; N c139 ; B 0 0 0 0 ; C 140 ; WX 250 ; N c140 ; B 0 0 0 0 ; C 141 ; WX 250 ; N c141 ; B 0 0 0 0 ; C 142 ; WX 250 ; N c142 ; B 0 0 0 0 ; C 143 ; WX 250 ; N c143 ; B 0 0 0 0 ; C 144 ; WX 250 ; N c144 ; B 0 0 0 0 ; C 145 ; WX 250 ; N c145 ; B 0 0 0 0 ; C 146 ; WX 250 ; N c146 ; B 0 0 0 0 ; C 147 ; WX 250 ; N c147 ; B 0 0 0 0 ; C 148 ; WX 250 ; N c148 ; B 0 0 0 0 ; C 149 ; WX 250 ; N c149 ; B 0 0 0 0 ; C 150 ; WX 250 ; N c150 ; B 0 0 0 0 ; C 151 ; WX 250 ; N c151 ; B 0 0 0 0 ; C 152 ; WX 250 ; N c152 ; B 0 0 0 0 ; C 153 ; WX 250 ; N c153 ; B 0 0 0 0 ; C 154 ; WX 250 ; N c154 ; B 0 0 0 0 ; C 155 ; WX 250 ; N c155 ; B 0 0 0 0 ; C 156 ; WX 250 ; N c156 ; B 0 0 0 0 ; C 157 ; WX 250 ; N c157 ; B 0 0 0 0 ; C 158 ; WX 250 ; N c158 ; B 0 0 0 0 ; C 159 ; WX 250 ; N c159 ; B 0 0 0 0 ; C 160 ; WX 250 ; N nbspace ; B 0 0 0 0 ; C 161 ; WX 250 ; N exclamdown ; B 0 0 0 0 ; C 162 ; WX 250 ; N cent ; B 0 0 0 0 ; C 163 ; WX 437 ; N sterling ; B 21 -12 473 672 ; C 164 ; WX 250 ; N currency ; B 0 0 0 0 ; C 165 ; WX 250 ; N yen ; B 0 0 0 0 ; C 166 ; WX 250 ; N brokenbar ; B 0 0 0 0 ; C 167 ; WX 250 ; N section ; B 0 0 0 0 ; C 168 ; WX 250 ; N dieresis ; B 0 0 0 0 ; C 169 ; WX 250 ; N copyright ; B 0 0 0 0 ; C 170 ; WX 250 ; N ordfeminine ; B 0 0 0 0 ; C 171 ; WX 250 ; N guillemotleft ; B 0 0 0 0 ; C 172 ; WX 250 ; N logicalnot ; B 0 0 0 0 ; C 173 ; WX 250 ; N softhyphen ; B 0 0 0 0 ; C 174 ; WX 250 ; N registered ; B 0 0 0 0 ; C 175 ; WX 250 ; N macron ; B 0 0 0 0 ; C 176 ; WX 250 ; N degree ; B 0 0 0 0 ; C 177 ; WX 250 ; N plusminus ; B 0 0 0 0 ; C 178 ; WX 250 ; N twosuperior ; B 0 0 0 0 ; C 179 ; WX 667 ; N threesuperior ; B -1 0 689 877 ; C 180 ; WX 250 ; N acute ; B 0 0 0 0 ; C 181 ; WX 250 ; N mu ; B 0 0 0 0 ; C 182 ; WX 250 ; N paragraph ; B 0 0 0 0 ; C 183 ; WX 250 ; N periodcentered ; B 0 0 0 0 ; C 184 ; WX 250 ; N cedilla ; B 0 0 0 0 ; C 185 ; WX 250 ; N onesuperior ; B 0 0 0 0 ; C 186 ; WX 250 ; N ordmasculine ; B 0 0 0 0 ; C 187 ; WX 250 ; N guillemotright ; B 0 0 0 0 ; C 188 ; WX 250 ; N onequarter ; B 0 0 0 0 ; C 189 ; WX 250 ; N onehalf ; B 0 0 0 0 ; C 190 ; WX 250 ; N threequarters ; B 0 0 0 0 ; C 191 ; WX 250 ; N questiondown ; B 0 0 0 0 ; C 192 ; WX 693 ; N Agrave ; B -3 -6 668 457 ; C 193 ; WX 500 ; N Aacute ; B 20 -12 484 458 ; C 194 ; WX 495 ; N Acircumflex ; B 30 -12 523 702 ; C 195 ; WX 500 ; N Atilde ; B 18 -188 487 458 ; C 196 ; WX 497 ; N Adieresis ; B 21 -12 471 702 ; C 197 ; WX 437 ; N Aring ; B 23 -12 416 458 ; C 198 ; WX 714 ; N AE ; B 26 -211 688 702 ; C 199 ; WX 397 ; N Ccedilla ; B -1 -12 388 457 ; C 200 ; WX 552 ; N Egrave ; B 2 -12 514 458 ; C 201 ; WX 500 ; N Eacute ; B 17 -12 488 458 ; C 202 ; WX 500 ; N Ecircumflex ; B 17 -12 488 638 ; C 203 ; WX 493 ; N Edieresis ; B -3 0 482 458 ; C 204 ; WX 481 ; N Igrave ; B -43 -12 474 446 ; C 205 ; WX 652 ; N Iacute ; B -43 -12 640 458 ; C 206 ; WX 512 ; N Icircumflex ; B -4 -6 501 458 ; C 207 ; WX 500 ; N Idieresis ; B 26 -12 474 457 ; C 208 ; WX 500 ; N Eth ; B -4 -6 467 458 ; C 209 ; WX 494 ; N Ntilde ; B -53 -12 481 446 ; C 210 ; WX 500 ; N Ograve ; B -117 -211 462 458 ; C 211 ; WX 437 ; N Oacute ; B 27 -12 419 458 ; C 212 ; WX 771 ; N Ocircumflex ; B -3 -6 745 458 ; C 213 ; WX 500 ; N Otilde ; B -66 -212 472 458 ; C 214 ; WX 982 ; N Odieresis ; B 6 -12 968 458 ; C 215 ; WX 458 ; N multiply ; B 31 -12 433 458 ; C 216 ; WX 449 ; N Oslash ; B 30 -12 399 458 ; C 217 ; WX 667 ; N Ugrave ; B 30 -12 660 458 ; C 218 ; WX 416 ; N Uacute ; B -8 -12 382 458 ; C 219 ; WX 776 ; N Ucircumflex ; B 19 -12 764 458 ; C 220 ; WX 415 ; N Udieresis ; B -3 -12 388 458 ; C 221 ; WX 776 ; N Yacute ; B 19 -188 764 458 ; C 222 ; WX 485 ; N Thorn ; B 54 -12 474 458 ; C 223 ; WX 522 ; N germandbls ; B 32 -12 473 446 ; C 224 ; WX 1118 ; N agrave ; B 0 -15 1118 702 ; C 225 ; WX 719 ; N aacute ; B -10 0 616 702 ; C 226 ; WX 667 ; N acircumflex ; B -4 0 694 687 ; C 227 ; WX 808 ; N atilde ; B -2 -192 884 686 ; C 228 ; WX 708 ; N adieresis ; B -100 -192 786 687 ; C 229 ; WX 667 ; N aring ; B 7 0 697 687 ; C 230 ; WX 862 ; N ae ; B 76 0 856 686 ; C 231 ; WX 619 ; N ccedilla ; B -1 0 723 687 ; C 232 ; WX 721 ; N egrave ; B -13 0 780 687 ; C 233 ; WX 812 ; N eacute ; B -2 0 892 686 ; C 234 ; WX 812 ; N ecircumflex ; B -2 0 892 875 ; C 235 ; WX 717 ; N edieresis ; B -2 0 771 694 ; C 236 ; WX 724 ; N igrave ; B -33 -8 803 687 ; C 237 ; WX 990 ; N iacute ; B -7 0 1056 686 ; C 238 ; WX 823 ; N icircumflex ; B 4 0 893 686 ; C 239 ; WX 771 ; N idieresis ; B 70 -15 768 702 ; C 240 ; WX 811 ; N eth ; B -1 0 893 687 ; C 241 ; WX 708 ; N ntilde ; B -52 0 785 686 ; C 242 ; WX 667 ; N ograve ; B 4 0 674 686 ; C 243 ; WX 719 ; N oacute ; B 67 -15 785 702 ; C 244 ; WX 688 ; N ocircumflex ; B 90 0 754 686 ; C 245 ; WX 711 ; N otilde ; B 106 -15 832 686 ; C 246 ; WX 953 ; N odieresis ; B -49 0 1007 694 ; C 247 ; WX 667 ; N divide ; B -5 0 666 686 ; C 248 ; WX 662 ; N oslash ; B -4 0 609 686 ; C 249 ; WX 998 ; N ugrave ; B -4 0 1063 686 ; C 250 ; WX 538 ; N uacute ; B -11 -15 538 702 ; C 251 ; WX 1162 ; N ucircumflex ; B -1 0 1236 686 ; C 252 ; WX 693 ; N udieresis ; B 29 -15 682 702 ; C 253 ; WX 1162 ; N yacute ; B -1 -194 1236 686 ; C 254 ; WX 749 ; N thorn ; B 117 0 828 686 ; C 255 ; WX 738 ; N ydieresis ; B 69 0 689 686 ; C -1 ; WX 333 ; N minus ; B 26 180 312 283 ; EndCharMetrics EndFontMetrics gle-graphics-4.2.4c/src/fonts/cyrillic/arial8.afm0000664000000000000000000002372211405446017020340 0ustar rootrootStartFontMetrics 3.0 FontName ArialCyrMT FullName Arial KOI 8 FamilyName Arial KOI-8 Weight Regular ItalicAngle 0 IsFixedPitch false FontBBox -44 -210 981 881 UnderlinePosition -217 UnderlineThickness 150 Version 1.1 Notice Typeface The Monotype Corporation plc. 1990-92. Changes 1997 by Eugene V. Demidov EncodingScheme FontSpecific CapHeight 728 XHeight 530 Ascender 728 Descender -210 StartCharMetrics 224 C 32 ; WX 278 ; N space ; B 0 0 0 0 ; C 33 ; WX 279 ; N exclam ; B 84 0 193 716 ; C 34 ; WX 354 ; N quotedbl ; B 46 462 309 716 ; C 35 ; WX 556 ; N numbersign ; B 12 -12 545 728 ; C 36 ; WX 556 ; N dollar ; B 38 -103 511 782 ; C 37 ; WX 889 ; N percent ; B 60 -26 830 728 ; C 38 ; WX 667 ; N ampersand ; B 43 -17 644 728 ; C 39 ; WX 189 ; N quoteright ; B 45 462 145 716 ; C 40 ; WX 333 ; N parenleft ; B 61 -210 297 728 ; C 41 ; WX 333 ; N parenright ; B 36 -210 272 728 ; C 42 ; WX 389 ; N asterisk ; B 33 423 356 728 ; C 43 ; WX 584 ; N plus ; B 56 116 528 589 ; C 44 ; WX 279 ; N comma ; B 81 -142 187 100 ; C 45 ; WX 333 ; N hyphen ; B 32 215 302 303 ; C 46 ; WX 279 ; N period ; B 89 0 189 100 ; C 47 ; WX 278 ; N slash ; B 0 -12 278 728 ; C 48 ; WX 556 ; N zero ; B 44 -12 510 718 ; C 49 ; WX 556 ; N one ; B 111 0 375 719 ; C 50 ; WX 556 ; N two ; B 31 0 504 718 ; C 51 ; WX 556 ; N three ; B 44 -12 513 719 ; C 52 ; WX 556 ; N four ; B 15 0 510 716 ; C 53 ; WX 556 ; N five ; B 43 -12 518 706 ; C 54 ; WX 556 ; N six ; B 42 -12 514 719 ; C 55 ; WX 556 ; N seven ; B 50 0 513 706 ; C 56 ; WX 556 ; N eight ; B 43 -12 514 719 ; C 57 ; WX 556 ; N nine ; B 44 -12 514 718 ; C 58 ; WX 279 ; N colon ; B 89 0 189 519 ; C 59 ; WX 279 ; N semicolon ; B 81 -142 187 519 ; C 60 ; WX 584 ; N less ; B 55 110 529 595 ; C 61 ; WX 584 ; N equal ; B 55 204 528 503 ; C 62 ; WX 584 ; N greater ; B 55 110 529 595 ; C 63 ; WX 556 ; N question ; B 46 0 508 728 ; C 64 ; WX 1015 ; N at ; B 57 -210 981 729 ; C 65 ; WX 667 ; N A ; B -1 0 669 716 ; C 66 ; WX 667 ; N B ; B 74 0 614 716 ; C 67 ; WX 722 ; N C ; B 51 -12 684 728 ; C 68 ; WX 722 ; N D ; B 78 0 671 716 ; C 69 ; WX 667 ; N E ; B 79 0 613 716 ; C 70 ; WX 612 ; N F ; B 80 0 563 716 ; C 71 ; WX 778 ; N G ; B 52 -12 714 728 ; C 72 ; WX 722 ; N H ; B 80 0 642 716 ; C 73 ; WX 279 ; N I ; B 92 0 187 716 ; C 74 ; WX 500 ; N J ; B 29 -12 422 716 ; C 75 ; WX 667 ; N K ; B 74 0 666 716 ; C 76 ; WX 556 ; N L ; B 75 0 522 716 ; C 77 ; WX 833 ; N M ; B 75 0 758 716 ; C 78 ; WX 722 ; N N ; B 79 0 643 716 ; C 79 ; WX 778 ; N O ; B 47 -12 732 728 ; C 80 ; WX 667 ; N P ; B 77 0 624 716 ; C 81 ; WX 778 ; N Q ; B 47 -56 745 728 ; C 82 ; WX 722 ; N R ; B 80 0 711 716 ; C 83 ; WX 667 ; N S ; B 45 -12 615 728 ; C 84 ; WX 612 ; N T ; B 21 0 589 716 ; C 85 ; WX 722 ; N U ; B 79 -12 643 716 ; C 86 ; WX 667 ; N V ; B 5 0 660 716 ; C 87 ; WX 944 ; N W ; B 10 0 931 716 ; C 88 ; WX 667 ; N X ; B 5 0 661 716 ; C 89 ; WX 667 ; N Y ; B 3 0 659 716 ; C 90 ; WX 612 ; N Z ; B 18 0 584 716 ; C 91 ; WX 279 ; N bracketleft ; B 66 -198 260 715 ; C 92 ; WX 278 ; N backslash ; B 0 -12 278 728 ; C 93 ; WX 279 ; N bracketright ; B 18 -198 211 715 ; C 94 ; WX 469 ; N asciicircum ; B 26 337 443 728 ; C 95 ; WX 556 ; N underscore ; B -6 -198 562 -135 ; C 96 ; WX 333 ; N quoteleft ; B 43 583 227 719 ; C 97 ; WX 556 ; N a ; B 38 -12 516 530 ; C 98 ; WX 556 ; N b ; B 67 -12 517 716 ; C 99 ; WX 500 ; N c ; B 39 -12 491 530 ; C 100 ; WX 556 ; N d ; B 36 -12 486 716 ; C 101 ; WX 556 ; N e ; B 38 -12 517 530 ; C 102 ; WX 279 ; N f ; B 8 0 311 728 ; C 103 ; WX 556 ; N g ; B 34 -210 491 530 ; C 104 ; WX 556 ; N h ; B 67 0 490 716 ; C 105 ; WX 222 ; N i ; B 67 0 155 716 ; C 106 ; WX 222 ; N j ; B -44 -210 155 716 ; C 107 ; WX 500 ; N k ; B 66 0 496 716 ; C 108 ; WX 222 ; N l ; B 66 0 154 716 ; C 109 ; WX 833 ; N m ; B 65 0 768 530 ; C 110 ; WX 556 ; N n ; B 68 0 489 530 ; C 111 ; WX 556 ; N o ; B 35 -12 521 530 ; C 112 ; WX 556 ; N p ; B 68 -199 518 530 ; C 113 ; WX 556 ; N q ; B 37 -199 486 530 ; C 114 ; WX 333 ; N r ; B 65 0 347 530 ; C 115 ; WX 500 ; N s ; B 31 -12 461 530 ; C 116 ; WX 279 ; N t ; B 16 -7 269 700 ; C 117 ; WX 556 ; N u ; B 66 -11 486 519 ; C 118 ; WX 500 ; N v ; B 12 0 488 519 ; C 119 ; WX 722 ; N w ; B 5 0 717 519 ; C 120 ; WX 500 ; N x ; B 8 0 493 519 ; C 121 ; WX 500 ; N y ; B 16 -210 491 519 ; C 122 ; WX 500 ; N z ; B 20 0 479 518 ; C 123 ; WX 333 ; N braceleft ; B 28 -210 311 728 ; C 124 ; WX 260 ; N bar ; B 92 -210 169 728 ; C 125 ; WX 333 ; N braceright ; B 23 -210 306 728 ; C 126 ; WX 584 ; N asciitilde ; B 42 272 542 432 ; C 128 ; WX 278 ; N c128 ; B 0 0 0 0 ; C 129 ; WX 278 ; N c129 ; B 0 0 0 0 ; C 130 ; WX 278 ; N c130 ; B 0 0 0 0 ; C 131 ; WX 278 ; N c131 ; B 0 0 0 0 ; C 132 ; WX 278 ; N c132 ; B 0 0 0 0 ; C 133 ; WX 278 ; N c133 ; B 0 0 0 0 ; C 134 ; WX 278 ; N c134 ; B 0 0 0 0 ; C 135 ; WX 278 ; N c135 ; B 0 0 0 0 ; C 136 ; WX 278 ; N c136 ; B 0 0 0 0 ; C 137 ; WX 278 ; N c137 ; B 0 0 0 0 ; C 138 ; WX 278 ; N c138 ; B 0 0 0 0 ; C 139 ; WX 278 ; N c139 ; B 0 0 0 0 ; C 140 ; WX 278 ; N c140 ; B 0 0 0 0 ; C 141 ; WX 278 ; N c141 ; B 0 0 0 0 ; C 142 ; WX 278 ; N c142 ; B 0 0 0 0 ; C 143 ; WX 278 ; N c143 ; B 0 0 0 0 ; C 144 ; WX 278 ; N c144 ; B 0 0 0 0 ; C 145 ; WX 278 ; N c145 ; B 0 0 0 0 ; C 146 ; WX 278 ; N c146 ; B 0 0 0 0 ; C 147 ; WX 278 ; N c147 ; B 0 0 0 0 ; C 148 ; WX 278 ; N c148 ; B 0 0 0 0 ; C 149 ; WX 278 ; N c149 ; B 0 0 0 0 ; C 150 ; WX 278 ; N c150 ; B 0 0 0 0 ; C 151 ; WX 278 ; N c151 ; B 0 0 0 0 ; C 152 ; WX 278 ; N c152 ; B 0 0 0 0 ; C 153 ; WX 278 ; N c153 ; B 0 0 0 0 ; C 154 ; WX 278 ; N c154 ; B 0 0 0 0 ; C 155 ; WX 278 ; N c155 ; B 0 0 0 0 ; C 156 ; WX 278 ; N c156 ; B 0 0 0 0 ; C 157 ; WX 278 ; N c157 ; B 0 0 0 0 ; C 158 ; WX 278 ; N c158 ; B 0 0 0 0 ; C 159 ; WX 278 ; N c159 ; B 0 0 0 0 ; C 160 ; WX 278 ; N nbspace ; B 0 0 0 0 ; C 161 ; WX 278 ; N exclamdown ; B 0 0 0 0 ; C 162 ; WX 278 ; N cent ; B 0 0 0 0 ; C 163 ; WX 556 ; N sterling ; B 38 -12 517 720 ; C 164 ; WX 278 ; N currency ; B 0 0 0 0 ; C 165 ; WX 278 ; N yen ; B 0 0 0 0 ; C 166 ; WX 278 ; N brokenbar ; B 0 0 0 0 ; C 167 ; WX 278 ; N section ; B 0 0 0 0 ; C 168 ; WX 278 ; N dieresis ; B 0 0 0 0 ; C 169 ; WX 278 ; N copyright ; B 0 0 0 0 ; C 170 ; WX 278 ; N ordfeminine ; B 0 0 0 0 ; C 171 ; WX 278 ; N guillemotleft ; B 0 0 0 0 ; C 172 ; WX 278 ; N logicalnot ; B 0 0 0 0 ; C 173 ; WX 278 ; N softhyphen ; B 0 0 0 0 ; C 174 ; WX 278 ; N registered ; B 0 0 0 0 ; C 175 ; WX 278 ; N macron ; B 0 0 0 0 ; C 176 ; WX 278 ; N degree ; B 0 0 0 0 ; C 177 ; WX 278 ; N plusminus ; B 0 0 0 0 ; C 178 ; WX 278 ; N twosuperior ; B 0 0 0 0 ; C 179 ; WX 667 ; N threesuperior ; B 79 0 613 860 ; C 180 ; WX 278 ; N acute ; B 0 0 0 0 ; C 181 ; WX 278 ; N mu ; B 0 0 0 0 ; C 182 ; WX 278 ; N paragraph ; B 0 0 0 0 ; C 183 ; WX 278 ; N periodcentered ; B 0 0 0 0 ; C 184 ; WX 278 ; N cedilla ; B 0 0 0 0 ; C 185 ; WX 278 ; N onesuperior ; B 0 0 0 0 ; C 186 ; WX 278 ; N ordmasculine ; B 0 0 0 0 ; C 187 ; WX 278 ; N guillemotright ; B 0 0 0 0 ; C 188 ; WX 278 ; N onequarter ; B 0 0 0 0 ; C 189 ; WX 278 ; N onehalf ; B 0 0 0 0 ; C 190 ; WX 278 ; N threequarters ; B 0 0 0 0 ; C 191 ; WX 278 ; N questiondown ; B 0 0 0 0 ; C 192 ; WX 750 ; N Agrave ; B 67 -12 709 530 ; C 193 ; WX 556 ; N Aacute ; B 38 -12 516 530 ; C 194 ; WX 573 ; N Acircumflex ; B 45 -12 533 733 ; C 195 ; WX 573 ; N Atilde ; B 67 -199 543 519 ; C 196 ; WX 583 ; N Adieresis ; B 0 -147 553 518 ; C 197 ; WX 556 ; N Aring ; B 38 -12 517 530 ; C 198 ; WX 823 ; N AE ; B 37 -199 786 716 ; C 199 ; WX 365 ; N Ccedilla ; B 66 0 365 518 ; C 200 ; WX 500 ; N Egrave ; B 8 0 493 519 ; C 201 ; WX 559 ; N Eacute ; B 66 0 492 519 ; C 202 ; WX 559 ; N Ecircumflex ; B 66 0 492 716 ; C 203 ; WX 438 ; N Edieresis ; B 65 0 445 518 ; C 204 ; WX 583 ; N Igrave ; B 12 -3 517 518 ; C 205 ; WX 688 ; N Iacute ; B 68 0 619 519 ; C 206 ; WX 552 ; N Icircumflex ; B 66 0 486 519 ; C 207 ; WX 556 ; N Idieresis ; B 35 -12 521 530 ; C 208 ; WX 542 ; N Eth ; B 66 0 476 518 ; C 209 ; WX 542 ; N Ntilde ; B 15 0 474 518 ; C 210 ; WX 556 ; N Ograve ; B 68 -199 518 530 ; C 211 ; WX 500 ; N Oacute ; B 39 -12 491 530 ; C 212 ; WX 458 ; N Ocircumflex ; B 19 0 440 518 ; C 213 ; WX 500 ; N Otilde ; B 16 -210 491 519 ; C 214 ; WX 669 ; N Odieresis ; B -2 0 672 518 ; C 215 ; WX 531 ; N multiply ; B 66 0 492 518 ; C 216 ; WX 521 ; N Oslash ; B 64 0 490 519 ; C 217 ; WX 719 ; N Ugrave ; B 68 0 648 519 ; C 218 ; WX 458 ; N Uacute ; B 24 -12 423 530 ; C 219 ; WX 802 ; N Ucircumflex ; B 69 0 733 519 ; C 220 ; WX 510 ; N Udieresis ; B 24 -12 473 530 ; C 221 ; WX 823 ; N Yacute ; B 69 -199 791 519 ; C 222 ; WX 521 ; N Thorn ; B 34 0 455 519 ; C 223 ; WX 625 ; N germandbls ; B 0 0 589 518 ; C 224 ; WX 1010 ; N agrave ; B 80 -12 959 728 ; C 225 ; WX 667 ; N aacute ; B -1 0 669 716 ; C 226 ; WX 656 ; N acircumflex ; B 81 0 621 716 ; C 227 ; WX 740 ; N atilde ; B 77 -199 706 716 ; C 228 ; WX 677 ; N adieresis ; B 0 -167 642 716 ; C 229 ; WX 667 ; N aring ; B 79 0 613 716 ; C 230 ; WX 760 ; N ae ; B 40 0 720 722 ; C 231 ; WX 542 ; N ccedilla ; B 78 0 542 716 ; C 232 ; WX 667 ; N egrave ; B 5 0 661 716 ; C 233 ; WX 719 ; N eacute ; B 79 0 641 716 ; C 234 ; WX 719 ; N ecircumflex ; B 79 0 641 881 ; C 235 ; WX 583 ; N edieresis ; B 78 0 579 716 ; C 236 ; WX 656 ; N igrave ; B 9 -12 578 716 ; C 237 ; WX 833 ; N iacute ; B 75 0 758 716 ; C 238 ; WX 722 ; N icircumflex ; B 80 0 642 716 ; C 239 ; WX 778 ; N idieresis ; B 47 -12 732 728 ; C 240 ; WX 719 ; N eth ; B 78 0 641 716 ; C 241 ; WX 718 ; N ntilde ; B 9 0 640 716 ; C 242 ; WX 667 ; N ograve ; B 77 0 624 716 ; C 243 ; WX 722 ; N oacute ; B 51 -12 684 728 ; C 244 ; WX 613 ; N ocircumflex ; B 22 0 590 716 ; C 245 ; WX 635 ; N otilde ; B 5 -10 633 716 ; C 246 ; WX 923 ; N odieresis ; B 3 0 919 716 ; C 247 ; WX 667 ; N divide ; B 74 0 614 716 ; C 248 ; WX 656 ; N oslash ; B 80 0 620 716 ; C 249 ; WX 885 ; N ugrave ; B 82 0 802 716 ; C 250 ; WX 604 ; N uacute ; B 38 -12 564 728 ; C 251 ; WX 917 ; N ucircumflex ; B 78 0 839 716 ; C 252 ; WX 719 ; N udieresis ; B 42 -12 670 728 ; C 253 ; WX 938 ; N yacute ; B 78 -199 904 716 ; C 254 ; WX 667 ; N thorn ; B 42 0 588 716 ; C 255 ; WX 792 ; N ydieresis ; B 0 0 757 716 ; C -1 ; WX 333 ; N minus ; B 32 215 302 303 ; EndCharMetrics EndFontMetrics gle-graphics-4.2.4c/src/fonts/plti.afm0000664000000000000000000001222511676336540016323 0ustar rootrootStartFontMetrics 2.0 Comment Made from HERSHEY font file using SPLITFONT.BAS FontName plTI EncodingScheme TEXENCODING FullName plTI FamilyName plTI Weight Medium ItalicAngle 0 IsFixedPitch false UnderlinePosition -97 UnderlineThickness 73 FontBBox 0 -400 1001 1001 CapHeight 729 XHeight 151 Descender -219 Ascender 729 StartCharMetrics 95 C 32 ; WX 400 ; N C32 ; B 0 0 0 0 ; C 33 ; WX 351 ; N C33 ; B 66 0 333 700 ; C 34 ; WX 351 ; N C34 ; B 199 466 333 700 ; C 35 ; WX 300 ; N C35 ; B 0 0 0 0 ; C 36 ; WX 685 ; N C36 ; B 66 -133 633 833 ; C 37 ; WX 784 ; N C37 ; B 99 0 700 700 ; C 38 ; WX 300 ; N C38 ; B 0 0 0 0 ; C 39 ; WX 351 ; N C39 ; B 199 466 333 700 ; C 40 ; WX 518 ; N C40 ; B 99 -233 532 833 ; C 41 ; WX 518 ; N C41 ; B 0 -233 433 833 ; C 42 ; WX 651 ; N C42 ; B 166 466 633 700 ; C 43 ; WX 818 ; N C43 ; B 133 32 700 600 ; C 44 ; WX 351 ; N C44 ; B 32 -133 166 99 ; C 45 ; WX 818 ; N C45 ; B 133 299 700 333 ; C 46 ; WX 351 ; N C46 ; B 66 0 166 99 ; C 47 ; WX 751 ; N C47 ; B -67 -233 833 833 ; C 48 ; WX 685 ; N C48 ; B 99 0 600 700 ; C 49 ; WX 685 ; N C49 ; B 233 0 500 700 ; C 50 ; WX 685 ; N C50 ; B 32 0 600 700 ; C 51 ; WX 685 ; N C51 ; B 66 0 600 700 ; C 52 ; WX 685 ; N C52 ; B 66 0 600 700 ; C 53 ; WX 685 ; N C53 ; B 66 0 633 700 ; C 54 ; WX 685 ; N C54 ; B 99 0 600 700 ; C 55 ; WX 685 ; N C55 ; B 133 0 633 700 ; C 56 ; WX 685 ; N C56 ; B 66 0 600 700 ; C 57 ; WX 685 ; N C57 ; B 99 0 600 700 ; C 58 ; WX 351 ; N C58 ; B 66 0 266 466 ; C 59 ; WX 351 ; N C59 ; B 32 -133 266 466 ; C 60 ; WX 784 ; N C60 ; B 133 0 666 600 ; C 61 ; WX 818 ; N C61 ; B 133 166 700 466 ; C 62 ; WX 784 ; N C62 ; B 133 0 666 600 ; C 63 ; WX 685 ; N C63 ; B 199 0 633 700 ; C 64 ; WX 884 ; N C64 ; B 99 0 799 700 ; C 65 ; WX 651 ; N C65 ; B -67 0 532 700 ; C 66 ; WX 784 ; N C66 ; B 0 0 700 700 ; C 67 ; WX 685 ; N C67 ; B 99 0 666 700 ; C 68 ; WX 751 ; N C68 ; B 0 0 666 700 ; C 69 ; WX 751 ; N C69 ; B 0 0 699 700 ; C 70 ; WX 718 ; N C70 ; B 0 0 699 700 ; C 71 ; WX 718 ; N C71 ; B 99 0 666 700 ; C 72 ; WX 851 ; N C72 ; B 0 0 866 700 ; C 73 ; WX 418 ; N C73 ; B 0 0 433 700 ; C 74 ; WX 585 ; N C74 ; B 32 0 600 700 ; C 75 ; WX 751 ; N C75 ; B 0 0 833 700 ; C 76 ; WX 651 ; N C76 ; B 0 0 566 700 ; C 77 ; WX 884 ; N C77 ; B 0 0 899 700 ; C 78 ; WX 818 ; N C78 ; B 0 0 833 700 ; C 79 ; WX 718 ; N C79 ; B 99 0 633 700 ; C 80 ; WX 751 ; N C80 ; B 0 0 733 700 ; C 81 ; WX 718 ; N C81 ; B 99 -167 633 700 ; C 82 ; WX 784 ; N C82 ; B 0 0 700 700 ; C 83 ; WX 751 ; N C83 ; B 66 0 700 700 ; C 84 ; WX 685 ; N C84 ; B 133 0 700 700 ; C 85 ; WX 818 ; N C85 ; B 133 0 833 700 ; C 86 ; WX 651 ; N C86 ; B 133 0 733 700 ; C 87 ; WX 851 ; N C87 ; B 166 0 899 700 ; C 88 ; WX 718 ; N C88 ; B -33 0 766 700 ; C 89 ; WX 685 ; N C89 ; B 133 0 766 700 ; C 90 ; WX 718 ; N C90 ; B 32 0 700 700 ; C 91 ; WX 451 ; N C91 ; B 133 -233 366 833 ; C 92 ; WX 300 ; N C92 ; B 0 0 0 0 ; C 93 ; WX 451 ; N C93 ; B 99 -233 333 833 ; C 94 ; WX 300 ; N C94 ; B 0 0 0 0 ; C 95 ; WX 300 ; N C95 ; B 0 0 0 0 ; C 96 ; WX 318 ; N C96 ; B 133 500 199 700 ; C 97 ; WX 685 ; N C97 ; B 99 0 666 466 ; C 98 ; WX 618 ; N C98 ; B 133 0 532 700 ; C 99 ; WX 585 ; N C99 ; B 99 0 500 466 ; C 100 ; WX 685 ; N C100 ; B 99 0 666 700 ; C 101 ; WX 585 ; N C101 ; B 99 0 500 466 ; C 102 ; WX 485 ; N C102 ; B -67 -233 532 700 ; C 103 ; WX 651 ; N C103 ; B 32 -233 566 466 ; C 104 ; WX 685 ; N C104 ; B 66 0 666 700 ; C 105 ; WX 418 ; N C105 ; B 32 0 399 700 ; C 106 ; WX 418 ; N C106 ; B -67 -233 366 700 ; C 107 ; WX 651 ; N C107 ; B 66 0 566 700 ; C 108 ; WX 384 ; N C108 ; B 99 0 333 700 ; C 109 ; WX 1085 ; N C109 ; B 32 0 1066 466 ; C 110 ; WX 751 ; N C110 ; B 32 0 733 466 ; C 111 ; WX 585 ; N C111 ; B 99 0 500 466 ; C 112 ; WX 685 ; N C112 ; B -33 -233 600 466 ; C 113 ; WX 651 ; N C113 ; B 99 -233 566 466 ; C 114 ; WX 551 ; N C114 ; B 32 0 532 466 ; C 115 ; WX 551 ; N C115 ; B 66 0 500 466 ; C 116 ; WX 451 ; N C116 ; B 99 0 399 700 ; C 117 ; WX 751 ; N C117 ; B 32 0 733 466 ; C 118 ; WX 651 ; N C118 ; B 32 0 566 466 ; C 119 ; WX 952 ; N C119 ; B 32 0 866 466 ; C 120 ; WX 651 ; N C120 ; B 66 0 600 466 ; C 121 ; WX 685 ; N C121 ; B 32 -233 633 466 ; C 122 ; WX 651 ; N C122 ; B 99 0 566 466 ; C 123 ; WX 485 ; N C123 ; B 166 -233 333 833 ; C 124 ; WX 551 ; N C124 ; B 166 299 500 700 ; C 125 ; WX 485 ; N C125 ; B 166 -233 333 833 ; C 126 ; WX 851 ; N C126 ; B 66 0 799 700 ; EndCharMetrics EndFontMetrics gle-graphics-4.2.4c/src/fonts/plge.gle0000664000000000000000000017161011676336540016312 0ustar rootrootdfont design= 1428 dfont char=33 amove 285 95 aline 238 47 aline 333 47 aline 285 95 amove 285 142 aline 190 47 aline 285 0 aline 380 47 aline 285 142 amove 285 333 aline 285 857 aline 238 904 aline 285 952 aline 333 904 aline 285 857 amove 285 1000 aline 238 952 aline 142 904 aline 238 857 aline 285 333 aline 333 857 aline 428 904 aline 333 952 aline 285 1000 stroke dfont endchar dfont char=34 amove 190 666 aline 285 714 aline 333 809 aline 333 904 aline 285 1000 aline 190 904 aline 285 809 aline 285 714 amove 285 952 aline 238 904 aline 285 857 aline 285 952 stroke dfont endchar stroke dfont endchar dfont char=36 amove 238 95 aline 190 190 amove 380 0 aline 285 47 aline 238 142 aline 238 238 aline 142 190 aline 190 95 aline 238 47 aline 380 0 aline 571 0 aline 714 47 aline 761 95 aline 809 190 aline 809 333 aline 761 428 aline 619 523 aline 333 619 aline 238 666 aline 190 761 aline 190 857 aline 238 952 amove 190 714 aline 238 619 aline 333 571 aline 619 476 aline 714 428 aline 761 333 amove 714 47 aline 761 142 aline 761 285 aline 714 380 aline 619 428 aline 333 523 aline 190 619 aline 142 714 aline 142 857 aline 238 952 aline 380 1000 aline 571 1000 aline 714 952 aline 761 904 aline 809 809 aline 714 761 aline 714 857 aline 666 952 aline 571 1000 amove 714 904 aline 761 809 amove 571 1190 aline 571 -191 amove 380 -191 aline 380 1190 stroke dfont endchar dfont char=37 amove 142 0 aline 1000 1000 aline 904 952 aline 761 904 aline 619 904 aline 476 952 aline 380 1000 aline 285 1000 aline 190 952 aline 142 857 aline 142 761 aline 238 666 aline 333 666 aline 428 714 aline 476 809 aline 476 904 aline 380 1000 amove 809 333 aline 714 285 aline 666 190 aline 666 95 aline 761 0 aline 857 0 aline 952 47 aline 1000 142 aline 1000 238 aline 904 333 aline 809 333 stroke dfont endchar stroke dfont endchar dfont char=39 amove 285 809 aline 285 714 aline 333 761 aline 285 809 amove 285 952 aline 285 857 aline 380 761 aline 285 666 aline 238 761 aline 238 857 aline 285 952 aline 380 1000 stroke dfont endchar dfont char=40 amove 285 -48 aline 238 95 aline 190 285 aline 190 571 aline 238 761 aline 285 904 amove 380 1095 aline 333 1000 aline 285 857 aline 238 571 aline 238 285 aline 285 0 aline 333 -143 aline 380 -239 amove 476 -334 aline 380 -239 aline 285 -96 aline 190 95 aline 142 333 aline 142 523 aline 190 761 aline 285 952 aline 380 1095 aline 476 1190 stroke dfont endchar dfont char=41 amove 285 -239 aline 333 -143 aline 380 0 aline 428 285 aline 428 571 aline 380 857 aline 333 1000 aline 285 1095 amove 190 1190 aline 285 1095 aline 380 952 aline 476 761 aline 523 523 aline 523 333 aline 476 95 aline 380 -96 aline 285 -239 aline 190 -334 amove 380 -48 aline 428 95 aline 476 285 aline 476 571 aline 428 761 aline 380 904 stroke dfont endchar dfont char=42 amove 190 666 aline 238 952 amove 238 1000 aline 190 952 aline 190 666 aline 285 952 aline 238 1000 amove 666 1000 aline 619 952 aline 619 666 aline 666 952 amove 666 1000 aline 714 952 aline 619 666 stroke dfont endchar dfont char=43 amove 190 476 aline 1000 476 aline 1000 428 aline 190 428 aline 190 476 amove 571 857 aline 571 47 aline 619 47 aline 619 857 aline 571 857 stroke dfont endchar dfont char=44 amove 190 -191 aline 285 -143 aline 333 -48 aline 333 47 aline 285 142 aline 190 47 aline 285 -48 aline 285 -143 amove 285 95 aline 238 47 aline 285 0 aline 285 95 stroke dfont endchar dfont char=45 amove 190 476 aline 1000 476 aline 1000 428 aline 190 428 aline 190 476 stroke dfont endchar dfont char=46 amove 285 142 aline 190 47 aline 285 0 aline 380 47 aline 285 142 amove 285 95 aline 238 47 aline 333 47 aline 285 95 stroke dfont endchar dfont char=47 amove 142 -334 aline 95 -334 aline 952 1190 aline 1000 1190 aline 142 -334 stroke dfont endchar dfont char=48 amove 95 95 aline 190 142 aline 190 904 aline 285 904 aline 523 952 aline 619 1000 aline 666 952 aline 761 904 aline 857 904 aline 761 857 aline 761 95 aline 666 95 aline 428 47 aline 333 0 aline 285 47 aline 190 95 aline 95 95 amove 380 47 aline 238 142 aline 238 857 amove 285 904 aline 285 142 aline 380 95 aline 428 47 amove 666 95 aline 666 857 aline 571 904 aline 523 952 amove 571 952 aline 714 857 aline 714 142 stroke dfont endchar dfont char=49 amove 333 95 aline 428 142 aline 428 761 aline 380 857 aline 333 904 aline 476 1000 aline 523 904 aline 523 142 aline 619 95 aline 666 95 aline 571 47 aline 523 0 aline 476 47 aline 380 95 aline 333 95 amove 571 47 aline 476 95 aline 476 857 aline 428 952 aline 380 904 aline 428 857 stroke dfont endchar dfont char=50 amove 142 0 aline 142 238 aline 190 380 aline 285 476 aline 428 523 aline 761 523 aline 761 904 aline 666 904 aline 523 952 aline 428 1000 aline 380 952 aline 285 904 aline 190 904 aline 285 857 aline 380 857 aline 476 904 aline 523 952 amove 476 952 aline 380 904 amove 666 904 aline 666 523 amove 714 571 aline 714 857 amove 857 95 aline 666 142 aline 523 142 aline 333 95 aline 142 -1 aline 380 47 aline 619 47 aline 761 -1 aline 857 95 amove 809 47 aline 666 95 aline 428 95 aline 285 47 stroke dfont endchar dfont char=51 amove 142 95 aline 238 95 aline 333 47 aline 380 0 aline 476 47 aline 666 95 aline 761 95 aline 761 428 aline 666 428 aline 523 476 aline 428 523 amove 428 476 aline 523 523 aline 666 571 aline 761 571 aline 761 904 aline 666 904 aline 476 952 aline 380 1000 aline 333 952 aline 238 904 aline 190 904 aline 285 857 aline 380 857 aline 476 952 amove 428 952 aline 333 904 amove 666 904 aline 666 571 amove 714 619 aline 714 857 amove 666 428 aline 666 95 amove 714 142 aline 714 380 amove 476 47 aline 428 95 aline 333 142 aline 238 142 aline 142 95 amove 333 95 aline 428 47 stroke dfont endchar dfont char=52 amove 238 285 aline 238 619 amove 190 523 aline 190 333 amove 476 95 aline 523 95 aline 619 47 aline 666 0 aline 714 47 aline 809 95 aline 761 95 aline 666 142 aline 666 809 aline 714 904 aline 619 1000 aline 142 523 aline 142 285 aline 571 285 amove 666 285 aline 857 285 aline 904 238 aline 904 333 aline 857 285 amove 714 47 aline 619 95 aline 619 952 aline 666 904 aline 619 809 amove 571 952 aline 571 142 aline 476 95 stroke dfont endchar dfont char=53 amove 142 95 aline 238 95 aline 333 47 aline 380 0 aline 476 47 aline 666 95 aline 761 95 aline 761 571 aline 857 619 aline 809 619 aline 714 666 aline 666 714 aline 619 666 aline 523 619 aline 333 571 aline 190 571 aline 190 1000 aline 761 1000 aline 714 952 aline 619 904 aline 190 904 amove 238 952 aline 666 952 amove 619 666 aline 714 619 aline 714 142 amove 666 95 aline 666 571 aline 571 619 aline 523 619 amove 333 95 aline 428 47 amove 476 47 aline 428 95 aline 333 142 aline 238 142 aline 142 95 stroke dfont endchar dfont char=54 amove 95 95 aline 190 142 aline 190 904 aline 285 904 aline 476 952 aline 571 1000 aline 619 952 aline 714 904 aline 761 904 aline 666 857 aline 571 857 aline 476 952 amove 523 952 aline 619 904 amove 666 666 aline 714 619 aline 809 571 aline 857 571 aline 761 523 aline 761 95 aline 666 95 aline 428 47 aline 333 0 aline 285 47 aline 190 95 aline 95 95 amove 380 47 aline 238 142 aline 238 857 amove 285 904 aline 285 142 aline 380 95 aline 428 47 amove 666 95 aline 666 523 aline 571 571 aline 523 571 amove 619 619 aline 714 523 aline 714 142 amove 666 666 aline 619 619 aline 523 571 aline 333 523 aline 285 523 stroke dfont endchar dfont char=55 amove 428 0 aline 380 142 aline 380 285 aline 428 428 aline 523 571 aline 714 761 aline 809 904 aline 857 1000 aline 666 904 aline 476 857 aline 333 857 aline 142 904 aline 238 1000 aline 380 952 aline 619 952 aline 857 1000 amove 714 952 aline 571 904 aline 333 904 aline 190 952 amove 619 666 aline 523 523 aline 476 380 aline 476 238 aline 523 95 aline 428 -1 amove 476 47 aline 428 190 aline 428 333 aline 476 476 stroke dfont endchar dfont char=56 amove 95 95 aline 190 142 aline 190 428 aline 285 428 aline 666 571 aline 761 571 aline 761 857 aline 857 904 aline 809 904 aline 714 952 aline 666 1000 aline 619 952 aline 523 904 aline 285 857 aline 190 857 aline 190 571 aline 285 571 aline 666 428 aline 761 428 aline 761 95 aline 666 95 aline 428 47 aline 333 0 aline 285 47 aline 190 95 aline 95 95 amove 380 47 aline 238 142 aline 238 380 amove 285 428 aline 285 142 aline 380 95 aline 428 47 amove 666 95 aline 666 428 amove 714 380 aline 714 142 amove 666 571 aline 666 857 aline 571 904 aline 523 904 amove 619 952 aline 714 904 aline 714 619 amove 285 571 aline 285 857 amove 238 809 aline 238 619 stroke dfont endchar dfont char=57 amove 142 95 aline 238 95 aline 333 47 aline 380 0 aline 476 47 aline 666 95 aline 761 95 aline 761 857 aline 857 904 aline 761 904 aline 666 952 aline 619 1000 aline 523 952 aline 285 904 aline 190 904 aline 190 476 aline 95 428 aline 142 428 aline 238 380 aline 285 333 aline 333 380 aline 428 428 aline 619 476 aline 666 476 amove 428 428 aline 380 428 aline 285 476 aline 285 904 amove 238 857 aline 238 428 aline 333 380 amove 333 95 aline 428 47 amove 476 47 aline 428 95 aline 333 142 aline 238 142 aline 142 95 amove 666 95 aline 666 857 aline 571 904 aline 523 952 amove 571 952 aline 714 857 aline 714 142 stroke dfont endchar dfont char=58 amove 285 666 aline 190 571 aline 285 523 aline 380 571 aline 285 666 amove 285 619 aline 238 571 aline 333 571 aline 285 619 amove 285 142 aline 190 47 aline 285 -1 aline 380 47 aline 285 142 amove 285 95 aline 238 47 aline 333 47 aline 285 95 stroke dfont endchar dfont char=59 amove 190 -191 aline 285 -143 aline 333 -48 aline 333 47 aline 285 142 aline 190 47 aline 285 -48 aline 285 -143 amove 285 95 aline 238 47 aline 285 0 aline 285 95 amove 285 619 aline 238 571 aline 333 571 aline 285 619 amove 285 666 aline 190 571 aline 285 523 aline 380 571 aline 285 666 stroke dfont endchar dfont char=60 amove 952 857 aline 190 428 aline 952 0 stroke dfont endchar dfont char=61 amove 190 285 aline 1000 285 aline 1000 238 aline 190 238 aline 190 285 amove 190 666 aline 1000 666 aline 1000 619 aline 190 619 aline 190 666 stroke dfont endchar dfont char=62 amove 190 0 aline 952 428 aline 190 857 stroke dfont endchar dfont char=63 amove 428 95 aline 380 47 aline 476 47 aline 428 95 amove 428 142 aline 333 47 aline 428 0 aline 523 47 aline 428 142 amove 428 333 aline 380 476 aline 476 476 aline 428 333 aline 428 476 amove 476 476 aline 571 523 aline 666 619 aline 714 714 aline 714 809 aline 666 904 aline 619 952 aline 476 1000 aline 380 1000 aline 238 952 aline 190 904 aline 142 809 aline 238 761 aline 238 857 aline 285 952 aline 380 1000 amove 476 1000 aline 571 952 aline 619 857 aline 619 666 aline 571 571 aline 476 476 amove 619 619 aline 666 666 aline 666 857 aline 619 904 amove 238 904 aline 190 809 stroke dfont endchar dfont char=64 amove 523 238 aline 476 285 aline 428 380 aline 428 523 aline 476 666 aline 571 761 amove 857 761 aline 809 380 aline 809 285 aline 904 238 aline 999 238 aline 1095 333 aline 1142 476 aline 1142 571 aline 1095 714 aline 1047 809 aline 952 904 aline 857 952 aline 714 1000 aline 571 1000 aline 428 952 aline 333 904 aline 238 809 aline 190 714 aline 142 571 aline 142 428 aline 190 285 aline 238 190 aline 333 95 aline 428 47 aline 571 0 aline 714 0 aline 857 47 aline 952 95 aline 1000 142 amove 904 238 aline 857 285 aline 857 380 aline 904 761 amove 857 619 aline 809 714 aline 714 761 aline 571 761 aline 476 714 aline 428 666 aline 380 523 aline 380 380 aline 428 285 aline 523 238 aline 666 238 aline 761 285 aline 809 380 stroke dfont endchar dfont char=65 amove 0 0 aline 95 95 aline 190 142 aline 333 142 aline 428 95 aline 333 0 aline 285 47 aline 142 47 aline 0 0 amove 142 95 aline 333 95 aline 380 47 amove 238 142 aline 523 809 amove 476 714 aline 428 761 aline 380 761 aline 285 714 aline 238 666 amove 285 714 aline 380 714 aline 428 619 amove 428 666 aline 428 714 amove 238 857 aline 333 952 aline 428 1000 aline 523 1000 aline 571 952 aline 904 190 aline 952 142 aline 1047 142 aline 952 -1 aline 904 -1 aline 857 47 aline 809 142 aline 476 904 aline 428 952 aline 333 952 amove 476 952 aline 523 904 aline 857 142 aline 904 47 aline 952 95 aline 857 142 amove 714 380 aline 333 380 stroke dfont endchar dfont char=66 amove 190 0 aline 380 47 aline 619 47 aline 714 0 aline 809 95 aline 904 142 aline 1000 142 aline 1000 428 aline 952 523 aline 809 619 aline 904 714 aline 904 857 aline 857 904 aline 761 952 amove 857 952 aline 952 857 aline 952 761 amove 809 619 aline 857 571 aline 904 476 aline 904 142 amove 952 190 aline 952 428 aline 904 523 amove 904 428 aline 714 428 amove 714 571 aline 904 666 aline 1000 761 aline 1000 857 aline 952 952 aline 857 1000 aline 571 857 aline 523 809 aline 476 714 aline 476 285 aline 523 333 aline 571 428 aline 571 857 amove 523 761 aline 523 380 amove 714 285 aline 904 285 amove 809 95 aline 666 142 aline 476 142 aline 333 95 aline 190 0 amove 285 47 aline 428 95 aline 666 95 aline 761 47 amove 714 142 aline 714 571 amove 333 761 aline 285 714 aline 238 619 aline 238 571 aline 142 571 aline 95 523 aline 95 428 aline 142 476 aline 238 476 aline 238 190 aline 285 238 aline 333 333 aline 333 761 amove 285 666 aline 285 285 amove 285 523 aline 142 523 amove 95 904 aline 190 1000 aline 333 1000 aline 428 952 aline 523 1000 aline 428 904 aline 285 904 aline 190 952 aline 95 904 amove 238 952 aline 380 952 stroke dfont endchar dfont char=67 amove 523 238 aline 571 285 aline 619 380 aline 619 857 amove 666 904 aline 761 857 aline 857 857 aline 952 904 aline 1000 1000 aline 952 952 aline 857 952 aline 761 1000 aline 619 857 aline 523 809 aline 523 238 amove 571 333 aline 571 809 amove 428 952 aline 333 904 aline 238 809 aline 190 714 aline 142 571 aline 142 380 aline 190 238 aline 238 142 aline 380 47 aline 523 0 aline 666 0 aline 809 47 aline 904 95 aline 1000 190 aline 1047 285 aline 952 190 aline 857 142 aline 714 95 aline 571 95 aline 428 142 aline 285 285 aline 238 428 aline 238 619 aline 285 761 aline 333 857 aline 428 952 amove 238 761 aline 190 619 aline 190 380 aline 285 190 aline 428 95 aline 571 47 aline 714 47 aline 857 95 amove 857 142 aline 857 857 amove 904 904 aline 809 904 aline 714 952 stroke dfont endchar dfont char=68 amove 95 0 aline 285 47 aline 523 47 aline 619 0 aline 714 95 aline 809 142 aline 904 142 aline 904 857 aline 857 952 aline 761 1000 aline 95 1000 aline 142 952 aline 238 904 aline 761 904 aline 809 857 aline 809 142 amove 857 190 aline 857 857 aline 761 952 aline 190 952 amove 380 761 aline 333 714 aline 285 619 aline 285 571 aline 190 571 aline 142 523 aline 142 428 aline 190 476 aline 285 476 aline 285 238 aline 333 285 aline 380 380 aline 380 761 amove 333 666 aline 333 333 amove 333 523 aline 190 523 amove 523 666 aline 619 619 aline 714 619 aline 809 666 amove 809 380 aline 714 428 aline 619 428 aline 523 380 amove 523 142 aline 523 904 amove 714 95 aline 571 142 aline 380 142 aline 238 95 aline 95 -1 amove 190 47 aline 333 95 aline 571 95 aline 666 47 stroke dfont endchar dfont char=69 amove 190 0 aline 333 95 aline 523 142 aline 761 142 aline 952 95 aline 857 0 aline 714 47 aline 380 47 aline 190 0 amove 285 47 aline 428 95 aline 761 95 aline 904 47 amove 476 142 aline 476 666 aline 523 809 aline 571 904 aline 619 952 aline 714 1000 aline 809 1000 aline 952 952 aline 857 857 aline 761 904 aline 666 904 aline 571 857 aline 523 809 amove 619 904 aline 714 952 aline 809 952 aline 904 904 amove 809 523 aline 714 571 aline 619 571 aline 571 523 aline 523 428 aline 476 285 amove 523 428 aline 571 476 aline 666 476 aline 714 428 aline 809 523 amove 761 476 aline 714 523 aline 619 523 amove 285 523 aline 142 523 amove 285 666 aline 285 285 amove 238 190 aline 238 476 aline 142 476 aline 95 428 aline 95 523 aline 142 571 aline 238 571 aline 238 619 aline 285 714 aline 333 761 aline 333 333 aline 285 238 aline 238 190 amove 95 904 aline 190 1000 aline 285 1000 aline 380 952 aline 476 1000 aline 380 904 aline 285 904 aline 190 952 aline 95 904 amove 238 952 aline 333 952 stroke dfont endchar dfont char=70 amove 47 0 aline 190 47 aline 285 47 aline 380 0 aline 476 0 aline 666 95 aline 714 190 aline 714 476 aline 857 476 amove 857 523 aline 666 523 amove 857 571 aline 714 571 aline 714 857 amove 761 904 aline 857 857 aline 952 857 aline 1047 904 aline 1095 1000 aline 1047 952 aline 952 952 aline 857 1000 aline 714 857 aline 619 809 aline 619 95 aline 571 47 aline 523 47 aline 333 142 aline 238 142 aline 142 95 aline 47 -1 amove 190 95 aline 333 95 aline 428 47 aline 476 47 amove 380 238 aline 380 476 aline 285 476 aline 238 428 aline 238 523 aline 285 571 aline 380 571 aline 380 619 aline 428 714 aline 476 761 aline 476 380 aline 428 285 aline 380 238 amove 428 333 aline 428 666 amove 428 523 aline 285 523 amove 190 904 aline 285 1000 aline 428 1000 aline 523 952 aline 619 1000 aline 523 904 aline 380 904 aline 285 952 aline 190 904 amove 333 952 aline 476 952 amove 666 809 aline 666 142 amove 857 190 aline 857 857 amove 809 952 aline 904 904 aline 1000 904 stroke dfont endchar dfont char=71 amove 238 238 aline 190 380 aline 190 619 aline 238 761 amove 428 952 aline 333 857 aline 285 761 aline 238 619 aline 238 380 aline 285 238 aline 333 142 aline 428 47 amove 523 190 aline 571 238 aline 619 333 aline 619 857 amove 666 904 aline 761 857 aline 857 857 aline 952 904 aline 1000 1000 aline 952 952 aline 857 952 aline 761 1000 aline 619 857 aline 523 809 aline 523 190 amove 571 285 aline 571 809 amove 428 952 aline 333 904 aline 238 809 aline 190 714 aline 142 571 aline 142 428 aline 190 285 aline 238 190 aline 333 95 aline 428 47 aline 571 0 aline 761 0 aline 904 47 aline 1000 142 aline 1047 238 aline 1047 380 aline 1000 476 aline 952 523 aline 857 571 aline 761 571 aline 857 523 aline 904 476 aline 952 380 aline 952 190 aline 904 95 aline 857 47 aline 761 0 aline 761 571 aline 952 904 amove 904 904 aline 809 904 aline 714 952 amove 952 476 aline 1000 380 aline 1000 190 aline 952 142 amove 952 238 aline 761 238 amove 761 380 aline 952 380 stroke dfont endchar dfont char=72 amove 190 0 aline 380 47 aline 523 47 aline 619 0 aline 714 95 aline 619 142 aline 476 142 aline 333 95 aline 190 0 amove 285 47 aline 428 95 aline 571 95 aline 666 47 amove 714 95 aline 714 571 aline 809 619 aline 904 714 aline 952 666 aline 1000 523 aline 1000 333 aline 952 142 aline 857 -1 aline 904 285 aline 904 523 aline 857 619 aline 809 619 amove 857 666 aline 904 619 aline 952 523 aline 952 285 aline 904 142 amove 904 285 aline 714 285 amove 714 428 aline 904 428 amove 523 380 aline 523 761 amove 571 857 aline 523 809 aline 476 714 aline 476 285 aline 523 333 aline 571 428 aline 571 857 aline 666 952 aline 761 1000 aline 857 1000 aline 952 952 aline 857 857 aline 761 952 aline 666 952 amove 809 952 aline 857 952 aline 904 904 amove 523 1000 aline 428 952 aline 333 1000 aline 190 1000 aline 95 904 aline 190 952 aline 285 904 aline 428 904 aline 523 1000 amove 380 952 aline 238 952 amove 333 761 aline 285 714 aline 238 619 aline 238 571 aline 142 571 aline 95 523 aline 95 428 aline 142 476 aline 238 476 aline 238 190 aline 285 238 aline 333 333 aline 333 761 amove 285 666 aline 285 285 amove 285 523 aline 142 523 stroke dfont endchar dfont char=73 amove 0 0 aline 95 95 aline 190 142 aline 285 142 aline 476 47 aline 571 47 aline 619 142 aline 619 666 aline 666 809 aline 761 904 aline 714 809 aline 714 238 aline 666 142 aline 571 47 aline 476 -1 aline 333 -1 aline 238 47 aline 95 47 aline 0 -1 amove 142 95 aline 285 95 aline 380 47 aline 428 47 amove 380 238 aline 380 476 aline 285 476 aline 238 428 aline 238 523 aline 285 571 aline 380 571 aline 380 619 aline 428 714 aline 476 761 aline 476 380 aline 428 285 aline 380 238 amove 428 333 aline 428 666 amove 428 523 aline 285 523 amove 142 904 aline 238 1000 aline 380 1000 aline 523 952 aline 619 1000 aline 523 904 aline 380 904 aline 238 952 aline 142 904 amove 285 952 aline 476 952 amove 666 761 aline 666 190 stroke dfont endchar dfont char=74 amove 142 190 aline 190 190 aline 238 238 aline 190 285 aline 142 285 aline 95 238 aline 95 142 aline 190 47 aline 333 0 aline 476 0 aline 619 47 aline 714 142 aline 761 238 aline 761 809 aline 809 904 aline 714 809 aline 666 666 aline 666 142 aline 619 47 amove 714 190 aline 714 761 amove 523 761 aline 476 714 aline 428 619 aline 428 571 aline 333 571 aline 285 523 aline 285 428 aline 333 476 aline 428 476 aline 428 238 aline 476 285 aline 523 380 aline 523 761 amove 476 666 aline 476 333 amove 476 523 aline 333 523 amove 238 238 aline 95 238 amove 190 904 aline 285 1000 aline 428 1000 aline 571 952 aline 666 1000 aline 571 904 aline 428 904 aline 285 952 aline 190 904 amove 333 952 aline 523 952 stroke dfont endchar dfont char=75 amove 190 0 aline 380 47 aline 523 47 aline 619 0 aline 714 95 aline 619 142 aline 476 142 aline 333 95 aline 190 0 amove 285 47 aline 380 95 aline 571 95 aline 666 47 amove 714 95 aline 714 571 aline 857 714 aline 904 666 aline 1000 619 aline 904 619 aline 809 666 amove 1000 619 aline 904 476 aline 809 380 aline 714 285 amove 809 380 aline 904 333 aline 952 142 aline 1000 47 aline 1047 47 aline 1000 -1 aline 952 -1 aline 904 47 aline 857 333 aline 809 380 amove 904 238 aline 952 47 amove 476 285 aline 476 714 aline 523 809 aline 571 857 aline 571 428 aline 523 333 aline 476 285 amove 523 380 aline 523 761 amove 571 857 aline 666 952 aline 761 1000 aline 857 1000 aline 952 952 aline 857 857 aline 761 952 aline 666 952 amove 809 952 aline 857 952 aline 904 904 amove 523 1000 aline 428 952 aline 333 1000 aline 190 1000 aline 95 904 aline 190 952 aline 285 904 aline 428 904 aline 523 1000 amove 380 952 aline 238 952 amove 333 761 aline 285 714 aline 238 619 aline 238 571 aline 142 571 aline 95 523 aline 95 428 aline 142 476 aline 238 476 aline 238 190 aline 285 238 aline 333 333 aline 333 761 amove 285 666 aline 285 285 amove 285 523 aline 142 523 stroke dfont endchar dfont char=76 amove 190 0 aline 333 95 aline 523 142 aline 761 142 aline 952 95 aline 857 0 aline 714 47 aline 380 47 aline 190 0 amove 285 47 aline 428 95 aline 761 95 aline 904 47 amove 761 142 aline 761 952 amove 809 952 aline 857 952 aline 904 904 amove 952 952 aline 857 1000 aline 761 1000 aline 666 952 aline 571 857 aline 523 809 aline 476 714 aline 476 285 aline 523 333 aline 571 428 aline 571 857 amove 523 761 aline 523 380 amove 285 285 aline 285 666 amove 333 761 aline 285 714 aline 238 619 aline 238 571 aline 142 571 aline 95 523 aline 95 428 aline 142 476 aline 238 476 aline 238 190 aline 285 238 aline 333 333 aline 333 761 amove 380 952 aline 238 952 amove 95 904 aline 190 1000 aline 333 1000 aline 428 952 aline 523 1000 aline 428 904 aline 285 904 aline 190 952 aline 95 904 amove 142 523 aline 285 523 amove 666 952 aline 761 952 aline 857 857 aline 952 952 stroke dfont endchar dfont char=77 amove 47 0 aline 142 47 aline 285 47 aline 380 0 aline 428 0 aline 476 47 aline 523 142 aline 476 95 aline 428 95 aline 333 142 aline 238 142 aline 142 95 aline 47 0 amove 190 95 aline 333 95 aline 428 47 amove 523 142 aline 523 904 amove 476 904 aline 523 904 aline 666 761 aline 666 571 aline 523 571 amove 571 523 aline 714 523 amove 523 476 aline 666 476 aline 666 142 aline 619 95 aline 714 -1 aline 857 95 aline 904 142 aline 904 904 amove 857 904 aline 904 904 aline 1047 761 aline 1047 571 aline 904 571 amove 952 523 aline 1095 523 amove 904 476 aline 1047 476 aline 1047 95 aline 1142 -1 aline 1238 95 aline 1190 95 aline 1142 190 aline 1142 809 aline 952 1000 aline 761 809 amove 571 952 aline 714 809 aline 714 142 aline 666 95 aline 714 47 aline 761 95 aline 714 142 amove 857 95 aline 809 95 aline 761 190 aline 761 809 aline 571 1000 aline 380 809 aline 333 761 aline 285 666 aline 285 571 aline 190 571 aline 142 523 aline 142 428 aline 190 476 aline 285 476 aline 285 285 aline 333 333 aline 380 428 aline 380 809 amove 333 714 aline 333 380 amove 333 523 aline 190 523 amove 952 952 aline 1095 809 aline 1095 142 aline 1190 47 stroke dfont endchar dfont char=78 amove 95 0 aline 190 95 aline 285 142 aline 428 142 aline 523 95 aline 428 0 aline 380 47 aline 238 47 aline 95 0 amove 238 95 aline 380 95 aline 476 47 amove 285 142 aline 285 952 amove 380 952 aline 476 857 aline 523 761 aline 809 190 aline 952 47 amove 952 95 aline 904 142 aline 809 285 aline 571 809 aline 476 952 aline 380 1000 aline 285 1000 aline 190 952 aline 95 857 amove 190 952 aline 285 952 aline 380 904 aline 476 761 aline 714 238 aline 809 95 aline 857 47 aline 952 0 aline 952 857 amove 1047 904 aline 952 904 aline 857 952 amove 809 904 aline 904 857 aline 1000 857 aline 1095 904 aline 1142 1000 aline 1095 952 aline 1000 952 aline 904 1000 aline 809 904 amove 619 714 aline 666 666 aline 761 619 aline 857 619 aline 952 666 amove 666 333 aline 571 380 aline 380 380 aline 285 333 amove 285 476 aline 190 476 aline 142 428 aline 142 523 aline 190 571 aline 285 571 amove 285 523 aline 190 523 stroke dfont endchar dfont char=79 amove 238 238 aline 190 380 aline 190 666 aline 238 809 amove 476 809 aline 619 857 aline 761 952 aline 809 1000 aline 904 952 aline 1000 857 aline 1047 761 aline 1095 619 aline 1095 428 aline 1047 285 aline 1000 190 aline 904 95 aline 809 47 aline 666 0 aline 571 0 aline 428 47 aline 333 95 aline 238 190 aline 190 285 aline 142 428 aline 142 619 aline 190 761 aline 238 857 aline 333 952 aline 428 1000 aline 333 904 aline 285 809 aline 238 666 aline 238 380 aline 285 238 aline 333 142 aline 428 47 amove 476 190 aline 476 809 amove 523 809 aline 523 285 amove 476 190 aline 523 238 aline 571 333 aline 571 809 amove 761 952 aline 857 904 aline 952 761 aline 1000 666 aline 1000 380 aline 952 238 aline 904 142 aline 809 47 amove 761 47 aline 761 952 amove 904 904 aline 952 857 aline 1047 666 aline 1047 380 aline 1000 238 amove 1000 380 aline 904 428 aline 857 428 aline 761 380 amove 761 666 aline 857 619 aline 904 619 aline 1000 666 stroke dfont endchar dfont char=80 amove 285 -239 aline 285 809 aline 238 904 amove 142 1000 aline 190 952 aline 238 857 aline 238 571 aline 142 571 aline 95 523 aline 95 428 aline 142 476 aline 238 476 aline 238 95 aline 95 -1 aline 238 47 aline 238 -334 aline 333 -239 aline 333 809 aline 285 904 aline 238 952 aline 142 1000 amove 333 761 aline 476 857 aline 666 1000 aline 857 809 aline 857 142 aline 761 95 aline 666 0 aline 571 47 aline 476 47 amove 523 95 aline 619 95 aline 714 47 amove 761 95 aline 761 761 aline 619 904 aline 571 904 amove 666 952 aline 809 809 aline 809 142 amove 761 95 aline 619 142 aline 476 142 amove 476 380 aline 571 428 aline 666 428 aline 761 380 amove 761 666 aline 666 619 aline 571 619 aline 476 666 amove 476 857 aline 476 -191 amove 285 523 aline 142 523 stroke dfont endchar dfont char=81 amove 238 238 aline 190 380 aline 190 666 aline 238 809 amove 476 809 aline 619 857 aline 761 952 aline 809 1000 aline 904 952 aline 1000 857 aline 1047 761 aline 1095 619 aline 1095 428 aline 1047 285 aline 1000 190 aline 904 95 aline 809 47 aline 714 0 aline 523 0 aline 428 47 aline 333 95 aline 238 190 aline 190 285 aline 142 428 aline 142 619 aline 190 761 aline 238 857 aline 333 952 aline 428 1000 aline 333 904 aline 285 809 aline 238 666 aline 238 380 aline 285 238 aline 333 142 aline 428 47 amove 523 0 aline 571 47 aline 619 47 aline 714 0 aline 904 -239 aline 1000 -286 aline 1047 -286 aline 1000 -334 aline 904 -334 aline 809 -286 aline 666 -1 aline 619 47 amove 714 -48 aline 809 -191 aline 904 -286 aline 952 -286 amove 809 47 aline 904 142 aline 952 238 aline 1000 380 aline 1000 666 aline 952 761 aline 857 904 aline 761 952 aline 761 47 amove 1000 238 aline 1047 380 aline 1047 666 aline 952 857 aline 904 904 amove 1000 666 aline 904 619 aline 857 619 aline 761 666 amove 571 809 aline 571 333 aline 523 238 aline 476 190 aline 476 809 amove 523 809 aline 523 285 amove 761 380 aline 857 428 aline 904 428 aline 1000 380 stroke dfont endchar dfont char=82 amove 190 0 aline 333 95 aline 476 142 aline 571 142 aline 714 95 aline 619 0 aline 523 47 aline 380 47 aline 190 0 amove 285 47 aline 380 95 aline 571 95 aline 666 47 amove 476 285 aline 476 714 aline 523 809 aline 571 857 aline 571 428 aline 523 333 aline 476 285 amove 523 380 aline 523 761 amove 571 857 aline 714 952 aline 809 1000 aline 904 952 aline 952 857 aline 952 714 aline 904 619 aline 857 571 aline 666 476 aline 571 428 amove 666 476 aline 809 571 aline 857 666 aline 857 809 aline 809 904 aline 714 952 amove 809 952 aline 857 952 aline 904 857 aline 904 666 aline 857 619 amove 666 476 aline 761 428 aline 809 380 aline 952 142 aline 1000 95 aline 1047 95 aline 952 0 aline 857 95 aline 761 380 aline 666 476 amove 809 333 aline 904 142 aline 1000 47 amove 285 285 aline 285 666 amove 333 761 aline 285 714 aline 238 619 aline 238 571 aline 142 571 aline 95 523 aline 95 428 aline 142 476 aline 238 476 aline 238 190 aline 285 238 aline 333 333 aline 333 761 amove 380 952 aline 238 952 amove 95 904 aline 190 1000 aline 333 1000 aline 428 952 aline 523 1000 aline 428 904 aline 285 904 aline 190 952 aline 95 904 amove 142 523 aline 285 523 stroke dfont endchar dfont char=83 amove 95 0 aline 285 47 aline 523 47 aline 666 0 aline 857 285 aline 1000 476 aline 1000 571 aline 952 666 aline 857 714 aline 380 714 aline 238 761 aline 190 809 aline 190 904 amove 190 761 aline 238 714 aline 380 666 aline 809 666 aline 904 619 aline 952 571 aline 952 476 aline 904 380 amove 857 285 aline 904 428 aline 904 523 aline 857 571 aline 761 619 aline 380 619 aline 238 666 aline 190 714 aline 142 809 aline 190 904 aline 238 952 aline 380 1000 aline 571 1000 aline 761 952 aline 666 857 aline 571 714 amove 523 619 aline 428 476 amove 380 380 aline 285 285 aline 190 238 aline 142 238 aline 142 285 aline 190 238 amove 190 47 aline 333 95 aline 523 95 aline 666 47 amove 714 95 aline 571 142 aline 428 142 aline 238 95 aline 95 0 amove 142 476 aline 238 428 aline 619 428 aline 666 380 amove 666 285 aline 714 380 aline 714 428 aline 666 476 aline 238 476 aline 142 523 aline 95 571 aline 95 523 aline 142 428 aline 238 380 aline 571 380 aline 666 333 aline 666 285 amove 666 857 aline 619 904 aline 523 952 aline 380 1000 amove 619 952 aline 714 904 stroke dfont endchar dfont char=84 amove 190 380 aline 238 238 aline 333 142 aline 428 95 aline 571 47 aline 714 47 aline 857 95 amove 857 142 aline 857 857 amove 904 904 aline 714 904 aline 523 952 amove 666 857 aline 619 809 aline 523 761 aline 523 238 aline 571 285 aline 619 380 aline 619 809 amove 571 761 aline 571 333 amove 1047 285 aline 1000 190 aline 904 95 aline 809 47 aline 666 -1 aline 523 -1 aline 380 47 aline 285 95 aline 190 238 aline 142 380 aline 142 571 aline 190 714 aline 238 809 aline 190 666 aline 190 476 aline 238 333 aline 333 190 aline 428 142 aline 571 95 aline 714 95 aline 857 142 aline 952 190 aline 1047 285 amove 1047 999 aline 952 952 aline 761 952 aline 476 999 aline 285 999 aline 190 952 aline 142 857 aline 190 904 aline 285 952 aline 428 952 aline 714 857 aline 857 857 aline 952 904 aline 1047 999 stroke dfont endchar dfont char=85 amove 190 380 aline 238 238 aline 380 95 aline 523 47 aline 666 47 amove 714 95 aline 714 857 aline 523 809 aline 476 714 aline 476 238 aline 523 285 aline 571 380 aline 571 809 amove 523 761 aline 523 333 amove 714 428 aline 857 428 amove 857 619 aline 714 619 amove 714 857 aline 809 904 aline 904 1000 aline 952 952 aline 1047 904 aline 952 857 aline 952 190 aline 1000 95 aline 1047 95 aline 952 0 aline 857 95 aline 761 47 aline 619 0 aline 476 0 aline 333 47 aline 238 142 aline 190 238 aline 142 380 aline 142 571 aline 190 714 aline 238 809 aline 190 619 aline 190 476 aline 238 333 aline 285 238 aline 380 142 aline 523 95 aline 714 95 aline 857 142 aline 857 857 aline 809 904 amove 904 857 aline 952 904 aline 904 952 aline 857 904 aline 904 857 aline 904 142 aline 1000 47 amove 523 1000 aline 428 952 aline 285 1000 aline 190 1000 aline 95 904 aline 190 952 aline 333 904 aline 428 904 aline 523 1000 amove 380 952 aline 238 952 stroke dfont endchar dfont char=86 amove 142 95 aline 238 142 aline 238 476 aline 142 476 aline 95 428 aline 95 523 aline 142 571 aline 238 571 aline 238 857 aline 190 952 aline 142 1000 aline 238 952 aline 285 904 aline 333 809 aline 333 142 aline 523 142 aline 666 95 amove 571 47 aline 476 95 aline 333 95 amove 285 142 aline 285 809 aline 238 904 amove 523 809 aline 666 857 aline 761 904 aline 857 999 aline 904 952 aline 1000 904 aline 904 857 aline 904 142 aline 809 142 aline 666 95 aline 523 -1 aline 428 47 aline 285 95 aline 142 95 amove 523 142 aline 523 809 amove 523 666 aline 619 619 aline 714 619 aline 809 666 amove 857 857 aline 904 904 aline 857 952 aline 809 904 aline 857 857 aline 857 190 amove 809 142 aline 809 857 aline 761 904 amove 809 380 aline 714 428 aline 619 428 aline 523 380 amove 285 523 aline 142 523 stroke dfont endchar dfont char=87 amove 142 95 aline 238 142 aline 238 476 aline 142 476 aline 95 428 aline 95 523 aline 142 571 aline 238 571 aline 238 857 aline 190 952 aline 142 1000 aline 238 952 aline 285 904 aline 333 809 aline 333 142 aline 476 142 aline 571 95 aline 619 142 aline 619 857 aline 571 904 aline 476 904 aline 619 999 aline 714 904 aline 714 142 aline 857 142 aline 952 95 aline 1000 142 aline 1000 857 aline 952 904 aline 857 904 aline 1000 999 aline 1095 904 aline 1095 142 aline 952 95 aline 857 -1 aline 809 95 aline 714 142 aline 571 95 aline 476 -1 aline 428 47 aline 285 95 aline 142 95 amove 285 142 aline 285 809 aline 238 904 amove 476 904 aline 476 142 amove 523 47 aline 428 95 aline 333 95 amove 666 142 aline 666 904 aline 619 952 amove 857 904 aline 857 142 amove 857 95 aline 904 47 amove 1047 142 aline 1047 904 aline 1000 952 amove 1000 619 aline 857 619 amove 857 428 aline 1000 428 amove 619 428 aline 476 428 amove 476 619 aline 619 619 amove 285 523 aline 142 523 stroke dfont endchar dfont char=88 amove 47 0 aline 95 95 aline 190 142 aline 285 142 aline 333 95 amove 285 47 aline 238 95 aline 142 95 amove 47 0 aline 95 47 aline 190 47 aline 285 0 aline 476 428 amove 428 523 aline 238 523 amove 571 523 aline 809 523 amove 571 571 aline 761 1000 aline 857 952 aline 952 952 aline 1000 1000 aline 952 904 aline 857 857 aline 761 857 aline 714 904 amove 761 952 aline 809 904 aline 904 904 amove 285 952 aline 333 904 aline 714 95 aline 761 47 amove 904 47 aline 809 47 aline 761 95 aline 380 952 aline 333 1000 aline 238 1000 aline 142 952 aline 47 857 amove 142 952 aline 238 952 aline 285 904 aline 666 47 aline 714 0 aline 809 0 aline 904 47 aline 1000 142 stroke dfont endchar dfont char=89 amove 142 95 aline 238 142 aline 238 476 aline 142 476 aline 95 428 aline 95 523 aline 142 571 aline 238 571 aline 238 857 aline 190 952 aline 142 1000 aline 238 952 aline 285 904 aline 333 809 aline 333 142 aline 523 142 aline 666 95 amove 571 47 aline 476 95 aline 333 95 amove 285 142 aline 285 809 aline 238 904 amove 523 809 aline 666 857 aline 761 904 aline 857 999 aline 904 952 aline 1000 904 aline 904 857 aline 904 -143 aline 857 -239 aline 761 -334 aline 666 -286 aline 476 -239 aline 238 -239 aline 428 -191 aline 714 -191 aline 857 -239 amove 809 -286 aline 714 -239 aline 571 -239 amove 523 142 aline 523 809 amove 523 666 aline 619 619 aline 714 619 aline 809 666 amove 857 857 aline 904 904 aline 857 952 aline 809 904 aline 857 857 aline 857 95 amove 809 142 aline 666 95 aline 523 -1 aline 428 47 aline 285 95 aline 142 95 amove 142 523 aline 285 523 amove 523 380 aline 619 428 aline 714 428 aline 809 380 amove 904 0 aline 809 142 aline 809 857 aline 761 904 stroke dfont endchar dfont char=90 amove 95 0 aline 238 190 aline 333 380 aline 476 571 aline 714 857 aline 761 952 aline 666 904 aline 476 857 aline 285 857 aline 95 904 aline 190 999 aline 333 952 aline 619 952 aline 857 999 aline 714 809 aline 619 619 aline 476 428 aline 238 142 aline 190 47 aline 285 95 aline 476 142 aline 666 142 aline 857 95 aline 761 -1 aline 619 47 aline 333 47 aline 95 -1 amove 238 47 aline 428 95 aline 619 95 aline 809 47 amove 761 523 aline 571 523 amove 428 523 aline 238 523 amove 285 238 aline 666 761 amove 714 952 aline 523 904 aline 333 904 aline 142 952 stroke dfont endchar dfont char=91 amove 190 -334 aline 190 1190 aline 523 1190 amove 238 1190 aline 238 -334 amove 190 -334 aline 523 -334 stroke dfont endchar stroke dfont endchar dfont char=93 amove 142 -334 aline 476 -334 aline 476 1190 aline 142 1190 amove 428 1190 aline 428 -334 stroke dfont endchar stroke dfont endchar stroke dfont endchar dfont char=96 amove 238 904 aline 285 952 aline 238 1000 aline 190 952 aline 190 857 aline 238 761 aline 285 714 stroke dfont endchar dfont char=97 amove 142 238 aline 190 142 aline 238 95 aline 333 47 amove 380 95 aline 333 95 aline 238 142 aline 190 238 aline 190 333 amove 285 428 aline 190 333 aline 142 238 aline 142 142 aline 190 47 aline 285 0 aline 380 95 aline 523 142 amove 619 47 aline 571 95 aline 571 619 aline 619 571 aline 476 571 amove 333 571 aline 190 571 aline 238 619 amove 190 523 aline 285 523 aline 428 571 aline 523 619 aline 571 666 aline 666 571 aline 619 523 aline 619 142 aline 666 95 aline 714 95 aline 619 0 aline 523 95 aline 523 523 aline 380 571 aline 285 619 aline 238 666 aline 142 571 aline 380 333 stroke dfont endchar dfont char=98 amove 95 95 aline 190 142 aline 190 809 aline 142 904 aline 285 1000 aline 285 142 aline 380 95 aline 428 47 amove 380 47 aline 238 142 aline 238 952 aline 190 904 aline 238 809 amove 285 523 aline 428 571 aline 523 619 aline 571 666 aline 619 619 aline 714 571 aline 761 571 aline 666 523 aline 666 95 aline 571 95 aline 428 47 aline 333 0 aline 285 47 aline 190 95 aline 95 95 amove 571 95 aline 571 523 aline 476 571 aline 428 571 amove 523 619 aline 619 571 aline 619 142 stroke dfont endchar dfont char=99 amove 285 0 aline 238 47 aline 142 95 aline 95 95 aline 190 142 aline 190 571 aline 380 619 aline 476 666 aline 523 619 aline 619 571 aline 666 571 aline 571 523 aline 476 523 aline 380 619 aline 285 571 aline 285 142 aline 380 95 aline 428 95 aline 333 47 aline 285 -1 amove 333 47 aline 238 95 aline 238 571 amove 428 619 aline 476 571 aline 571 571 stroke dfont endchar dfont char=100 amove 95 95 aline 190 142 aline 190 571 aline 333 619 aline 428 666 aline 285 571 aline 285 142 aline 380 95 aline 428 47 amove 380 47 aline 238 142 aline 238 571 amove 333 857 aline 238 904 aline 285 952 aline 333 857 aline 619 571 aline 619 142 amove 666 95 aline 571 95 aline 428 47 aline 333 0 aline 285 47 aline 190 95 aline 95 95 amove 571 95 aline 571 523 aline 190 904 aline 333 1000 aline 380 857 aline 666 571 aline 666 95 stroke dfont endchar dfont char=101 amove 285 0 aline 238 47 aline 142 95 aline 95 95 aline 190 142 aline 190 571 aline 380 619 aline 476 666 aline 619 476 aline 523 428 aline 285 285 amove 333 47 aline 238 95 aline 238 571 amove 285 571 aline 285 142 aline 380 95 aline 428 95 aline 333 47 aline 285 0 amove 523 428 aline 380 619 aline 285 571 amove 428 619 aline 571 476 stroke dfont endchar dfont char=102 amove 285 0 aline 238 47 aline 142 95 aline 95 95 aline 190 142 aline 190 904 aline 333 952 aline 428 1000 aline 476 952 aline 571 904 aline 619 904 aline 523 857 aline 428 857 aline 333 952 aline 285 904 aline 285 142 aline 380 95 aline 428 95 aline 333 47 aline 285 -1 amove 333 47 aline 238 95 aline 238 904 amove 380 952 aline 428 904 aline 523 904 amove 476 666 aline 285 666 amove 190 666 aline 47 666 stroke dfont endchar dfont char=103 amove 190 -239 aline 285 -239 aline 380 -286 aline 428 -334 aline 523 -286 aline 619 -191 aline 666 -48 aline 666 523 aline 761 571 aline 666 571 aline 571 619 aline 523 666 aline 428 619 aline 285 571 aline 190 571 aline 190 142 aline 95 95 aline 142 95 aline 238 47 aline 285 0 aline 333 47 aline 428 95 aline 571 142 amove 428 95 aline 380 95 aline 285 142 aline 285 571 amove 238 523 aline 238 95 aline 333 47 amove 333 -239 aline 380 -239 aline 476 -286 amove 523 -286 aline 476 -239 aline 380 -191 aline 285 -191 aline 190 -239 amove 619 -191 aline 619 -96 aline 571 47 aline 571 523 aline 476 571 aline 428 619 amove 476 619 aline 619 523 aline 619 -48 stroke dfont endchar dfont char=104 amove 285 0 aline 238 47 aline 142 95 aline 95 95 aline 190 142 aline 190 809 aline 142 904 aline 285 999 aline 285 142 aline 380 95 aline 285 -1 amove 333 47 aline 238 95 aline 238 952 aline 190 904 aline 238 809 amove 285 523 aline 428 571 aline 523 619 aline 571 666 aline 619 619 aline 714 571 aline 761 571 aline 666 523 aline 666 95 aline 571 -1 aline 523 -96 amove 571 -1 aline 619 95 aline 619 571 aline 523 619 amove 428 571 aline 476 571 aline 571 523 aline 571 95 aline 523 -96 aline 523 -239 aline 571 -334 aline 619 -334 aline 523 -239 stroke dfont endchar dfont char=105 amove 285 47 aline 238 95 aline 238 523 aline 190 571 aline 238 619 aline 285 571 aline 238 523 amove 238 666 aline 190 619 aline 95 571 aline 190 523 aline 190 95 aline 285 -1 aline 380 95 aline 333 95 aline 285 142 aline 285 523 aline 380 571 aline 285 619 aline 238 666 amove 238 952 aline 190 904 aline 285 904 aline 238 952 amove 238 1000 aline 142 904 aline 238 857 aline 333 904 aline 238 1000 stroke dfont endchar dfont char=106 amove 285 0 aline 238 95 aline 238 523 aline 190 571 aline 238 619 aline 285 571 aline 238 523 amove 238 666 aline 190 619 aline 95 571 aline 190 523 aline 190 95 aline 285 -1 aline 333 -96 amove 238 -334 aline 142 -286 aline 142 -334 aline 238 -334 aline 333 -239 aline 333 -96 aline 285 95 aline 285 523 aline 380 571 aline 285 619 aline 238 666 amove 238 952 aline 190 904 aline 285 904 aline 238 952 amove 238 1000 aline 142 904 aline 238 857 aline 333 904 aline 238 1000 stroke dfont endchar dfont char=107 amove 285 0 aline 238 47 aline 142 95 aline 95 95 aline 190 142 aline 190 809 aline 142 904 aline 285 999 aline 285 142 aline 380 95 aline 285 -1 amove 333 47 aline 238 95 aline 238 952 aline 190 904 aline 238 809 amove 428 619 aline 523 476 amove 571 523 aline 476 619 amove 476 428 aline 523 380 aline 619 142 aline 666 95 aline 714 95 aline 619 -1 aline 523 95 aline 476 333 aline 428 380 amove 476 380 aline 523 333 aline 571 95 aline 619 47 amove 285 285 aline 476 428 aline 619 523 aline 523 666 aline 428 619 aline 285 523 stroke dfont endchar dfont char=108 amove 285 0 aline 238 47 aline 142 95 aline 95 95 aline 190 142 aline 190 809 aline 142 904 aline 285 999 aline 285 142 aline 380 95 aline 428 95 aline 333 47 aline 285 -1 amove 333 47 aline 238 95 aline 238 952 aline 190 904 aline 238 809 stroke dfont endchar dfont char=109 amove 285 0 aline 238 47 aline 142 95 aline 95 95 aline 190 142 aline 190 523 aline 142 571 aline 95 571 aline 190 666 aline 285 571 aline 285 142 aline 380 95 aline 285 0 amove 333 47 aline 238 95 aline 238 571 aline 190 619 amove 285 523 aline 428 571 aline 523 619 aline 571 666 aline 666 571 aline 666 142 aline 761 95 aline 666 0 aline 619 47 aline 523 95 aline 571 142 aline 571 523 aline 476 571 aline 428 571 amove 523 619 aline 619 571 aline 619 95 aline 714 47 amove 1047 47 aline 1000 95 aline 1000 571 aline 904 619 amove 809 571 aline 857 571 aline 952 523 aline 952 95 aline 1047 0 aline 1142 95 aline 1095 95 aline 1047 142 aline 1047 523 aline 1142 571 aline 1095 571 aline 1000 619 aline 952 666 aline 904 619 aline 809 571 aline 666 523 stroke dfont endchar dfont char=110 amove 285 0 aline 238 47 aline 142 95 aline 95 95 aline 190 142 aline 190 523 aline 142 571 aline 95 571 aline 190 666 aline 285 571 aline 285 142 aline 380 95 aline 285 0 amove 333 47 aline 238 95 aline 238 571 aline 190 619 amove 285 523 aline 428 571 aline 523 619 aline 571 666 aline 619 619 aline 714 571 aline 761 571 aline 666 523 aline 666 142 aline 714 95 aline 761 95 aline 666 0 aline 571 95 aline 571 523 aline 476 571 aline 428 571 amove 523 619 aline 619 571 aline 619 95 aline 666 47 stroke dfont endchar dfont char=111 amove 95 95 aline 190 95 aline 285 47 aline 333 0 aline 428 47 aline 571 95 aline 666 95 aline 666 523 aline 761 571 aline 666 571 aline 571 619 aline 523 666 aline 428 619 aline 285 571 aline 190 571 aline 190 142 aline 95 95 amove 380 47 aline 238 142 aline 238 523 amove 285 571 aline 285 142 aline 380 95 aline 428 47 amove 571 95 aline 571 523 aline 476 571 aline 428 619 amove 476 619 aline 619 523 aline 619 142 stroke dfont endchar dfont char=112 amove 238 95 aline 285 95 aline 380 47 amove 428 47 aline 380 95 aline 285 142 aline 285 571 aline 238 619 aline 142 666 aline 190 571 aline 190 142 aline 95 95 aline 190 95 aline 190 -334 aline 333 -239 aline 285 -143 aline 285 47 aline 333 0 aline 428 47 aline 571 95 aline 666 95 aline 666 523 aline 761 571 aline 714 571 aline 619 619 aline 571 666 aline 523 619 aline 428 571 aline 285 523 amove 190 619 aline 238 571 aline 238 -286 aline 285 -239 aline 238 -143 amove 571 95 aline 571 523 aline 476 571 aline 428 571 amove 523 619 aline 619 571 aline 619 142 stroke dfont endchar dfont char=113 amove 95 95 aline 142 95 aline 238 47 aline 285 0 aline 333 47 aline 428 95 aline 571 142 amove 428 95 aline 380 95 aline 285 142 aline 285 571 amove 238 523 aline 238 95 aline 333 47 amove 95 95 aline 190 142 aline 190 571 aline 285 571 aline 428 619 aline 523 666 aline 571 619 aline 666 571 aline 761 571 aline 666 523 aline 666 -334 aline 523 -239 aline 571 -143 aline 571 523 aline 476 571 aline 428 619 amove 476 619 aline 619 523 aline 619 -286 aline 571 -239 aline 619 -143 stroke dfont endchar dfont char=114 amove 285 0 aline 238 47 aline 142 95 aline 95 95 aline 190 142 aline 190 523 aline 142 571 aline 95 571 aline 190 666 aline 285 571 aline 285 142 aline 380 95 aline 428 95 aline 333 47 aline 285 0 amove 333 47 aline 238 95 aline 238 571 aline 142 619 amove 285 571 aline 476 666 aline 523 619 aline 619 571 aline 666 571 aline 571 523 aline 476 523 aline 380 619 amove 428 619 aline 476 571 aline 571 571 stroke dfont endchar dfont char=115 amove 95 0 aline 238 95 aline 380 95 aline 476 47 aline 523 95 aline 523 285 aline 428 333 amove 333 333 aline 238 380 aline 238 571 aline 285 619 aline 380 571 aline 476 571 aline 571 619 amove 619 666 aline 571 619 aline 476 619 aline 380 666 aline 285 619 aline 142 571 aline 142 380 aline 238 333 aline 523 333 aline 619 285 aline 619 95 aline 476 47 aline 380 0 aline 285 47 aline 190 47 aline 95 0 aline 238 190 aline 476 428 aline 571 571 aline 619 666 amove 428 619 aline 333 619 amove 190 571 aline 190 380 amove 333 47 aline 428 47 amove 571 95 aline 571 285 stroke dfont endchar dfont char=116 amove 285 0 aline 238 47 aline 142 95 aline 95 95 aline 190 142 aline 190 809 aline 142 904 aline 285 999 aline 285 142 aline 380 95 aline 428 95 aline 333 47 aline 285 -1 amove 333 47 aline 238 95 aline 238 952 aline 190 904 aline 238 809 amove 190 666 aline 47 666 amove 285 666 aline 428 666 stroke dfont endchar dfont char=117 amove 95 95 aline 190 142 aline 190 523 aline 142 571 aline 95 571 aline 190 666 aline 285 571 aline 285 142 aline 380 95 aline 428 95 amove 333 47 aline 238 95 aline 238 571 aline 142 619 amove 523 619 aline 619 571 aline 619 95 aline 666 47 amove 761 95 aline 714 95 aline 666 142 aline 666 523 aline 761 571 aline 714 571 aline 619 619 aline 571 666 aline 476 571 aline 571 523 aline 571 95 aline 666 0 aline 761 95 amove 571 142 aline 428 95 aline 333 47 aline 285 0 aline 238 47 aline 142 95 aline 95 95 stroke dfont endchar dfont char=118 amove 380 47 aline 238 142 aline 238 571 aline 190 619 amove 142 666 aline 238 619 aline 285 571 aline 285 190 aline 333 142 aline 428 95 amove 571 142 aline 571 523 aline 476 571 aline 571 666 aline 619 619 aline 714 571 aline 761 571 aline 666 523 aline 666 142 aline 571 142 aline 428 95 aline 333 -1 aline 190 142 aline 190 571 aline 142 666 amove 523 619 aline 619 571 aline 619 190 stroke dfont endchar dfont char=119 amove 380 47 aline 238 142 aline 238 571 aline 190 619 amove 142 666 aline 190 571 aline 190 142 aline 333 0 aline 428 95 aline 571 142 amove 428 95 aline 333 142 aline 285 190 aline 285 571 aline 238 619 aline 142 666 amove 523 619 aline 619 571 aline 619 142 aline 761 47 amove 809 95 aline 714 142 aline 666 190 aline 666 523 aline 714 571 aline 619 619 aline 571 666 aline 476 571 aline 571 523 aline 571 142 aline 714 0 aline 809 95 aline 952 142 aline 1047 142 aline 1047 523 aline 1142 571 aline 1095 571 aline 1000 619 aline 952 666 aline 857 571 aline 952 523 aline 952 142 amove 1000 190 aline 1000 571 aline 904 619 stroke dfont endchar dfont char=120 amove 95 0 aline 142 47 aline 238 47 aline 285 0 aline 428 285 amove 380 333 aline 238 333 amove 476 380 aline 619 666 aline 666 619 aline 761 619 aline 809 666 aline 761 571 aline 666 523 aline 571 571 amove 619 619 aline 666 571 aline 714 571 amove 666 333 aline 523 333 amove 333 95 aline 238 142 aline 142 95 aline 95 0 amove 190 95 aline 238 95 aline 285 47 amove 666 47 aline 571 95 aline 333 571 aline 238 619 amove 142 571 aline 190 571 aline 285 523 aline 333 476 aline 523 95 aline 571 47 aline 666 0 aline 761 95 aline 714 95 aline 619 142 aline 571 190 aline 380 571 aline 333 619 aline 238 666 aline 142 571 stroke dfont endchar dfont char=121 amove 95 95 aline 190 142 aline 190 523 aline 142 571 aline 95 571 aline 190 666 aline 285 571 aline 285 142 aline 380 95 aline 428 95 amove 333 47 aline 238 95 aline 238 571 aline 142 619 amove 523 619 aline 619 571 aline 619 -48 amove 619 -191 aline 619 -96 aline 571 47 aline 571 523 aline 476 571 aline 571 666 aline 619 619 aline 714 571 aline 761 571 aline 666 523 aline 666 -48 aline 619 -191 aline 523 -286 aline 428 -334 aline 380 -286 aline 285 -239 aline 190 -239 aline 285 -191 aline 380 -191 aline 476 -239 aline 523 -286 amove 476 -286 aline 380 -239 aline 333 -239 amove 95 95 aline 142 95 aline 238 47 aline 285 -1 aline 333 47 aline 428 95 aline 571 142 stroke dfont endchar dfont char=122 amove 142 0 aline 714 666 aline 523 619 aline 333 619 aline 238 666 aline 142 571 aline 238 523 aline 380 523 aline 523 571 aline 714 666 amove 476 571 aline 285 571 aline 190 619 amove 238 333 aline 619 333 amove 714 95 aline 619 142 aline 476 142 aline 333 95 aline 142 0 aline 333 47 aline 523 47 aline 619 0 aline 714 95 amove 666 47 aline 571 95 aline 380 95 stroke dfont endchar dfont char=123 amove 380 238 aline 333 95 aline 333 -96 aline 380 -239 amove 476 -334 aline 333 -191 aline 285 -48 aline 285 47 aline 333 190 aline 428 285 aline 428 333 aline 238 428 aline 428 523 aline 428 571 aline 333 666 aline 285 809 aline 285 904 aline 333 1047 aline 476 1190 amove 380 1095 aline 333 952 aline 333 761 aline 380 619 stroke dfont endchar dfont char=124 amove 380 428 aline 380 1000 aline 333 952 aline 428 476 aline 380 428 aline 333 476 aline 428 952 aline 380 1000 amove 142 857 aline 619 571 aline 571 571 aline 190 857 aline 142 857 aline 142 809 aline 619 619 aline 619 571 amove 619 857 aline 142 571 aline 190 571 aline 571 857 aline 619 857 aline 619 809 aline 142 619 aline 142 571 stroke dfont endchar dfont char=125 amove 238 -334 aline 380 -191 aline 428 -48 aline 428 47 aline 380 190 aline 285 285 aline 285 333 aline 476 428 aline 285 523 aline 285 571 aline 380 666 aline 428 809 aline 428 904 aline 380 1047 aline 238 1190 amove 333 1095 aline 380 952 aline 380 761 aline 333 619 amove 333 238 aline 380 95 aline 380 -96 aline 333 -239 stroke dfont endchar dfont char=126 amove 190 238 aline 333 47 amove 380 47 aline 190 285 amove 428 523 aline 142 238 aline 333 0 aline 619 285 amove 666 333 aline 952 619 aline 1000 571 aline 1047 571 aline 1095 619 aline 1047 523 aline 1000 476 aline 952 476 aline 904 523 amove 904 571 aline 952 523 aline 1047 523 amove 1095 142 aline 1047 47 aline 1000 0 aline 904 0 aline 809 47 aline 714 142 aline 523 428 aline 238 714 aline 476 1000 aline 666 761 aline 476 571 amove 619 714 aline 428 952 amove 476 952 aline 619 761 amove 285 761 aline 571 476 aline 761 190 aline 809 142 aline 904 95 aline 1047 95 aline 1095 142 amove 1047 47 aline 904 47 aline 809 95 aline 714 190 aline 523 476 aline 285 714 stroke dfont endchar gle-graphics-4.2.4c/src/fonts/plsym1.afm0000664000000000000000000002046111676336540016601 0ustar rootrootStartFontMetrics 2.0 Comment Made from HERSHEY font file using SPLITFONT.BAS FontName PLSYM1 EncodingScheme TEXENCODING FullName PLSYM1 FamilyName PLSYM1 Weight Medium ItalicAngle 0 IsFixedPitch false UnderlinePosition -97 UnderlineThickness 73 FontBBox 0 -400 1001 1001 CapHeight 729 XHeight 151 Descender -219 Ascender 729 StartCharMetrics 154 C 32 ; WX 400 ; N C32 ; B 0 0 0 0 ; C 1 ; WX 784 ; N C1 ; B 99 0 700 399 ; C 2 ; WX 784 ; N C2 ; B 99 0 700 399 ; C 3 ; WX 985 ; N C3 ; B 133 0 866 600 ; C 4 ; WX 918 ; N C4 ; B 66 -100 866 699 ; C 5 ; WX 451 ; N C5 ; B 99 166 366 433 ; C 6 ; WX 418 ; N C6 ; B 32 -200 399 799 ; C 7 ; WX 418 ; N C7 ; B 32 -200 399 799 ; C 8 ; WX 418 ; N C8 ; B 32 -200 399 799 ; C 9 ; WX 418 ; N C9 ; B 32 -200 399 799 ; C 10 ; WX 418 ; N C10 ; B 32 -200 399 799 ; C 11 ; WX 418 ; N C11 ; B 32 -200 399 799 ; C 12 ; WX 418 ; N C12 ; B 32 -200 399 799 ; C 13 ; WX 418 ; N C13 ; B 32 -200 399 799 ; C 14 ; WX 418 ; N C14 ; B 32 -200 399 799 ; C 15 ; WX 418 ; N C15 ; B 32 -200 399 799 ; C 16 ; WX 418 ; N C16 ; B 32 -200 399 799 ; C 17 ; WX 418 ; N C17 ; B 32 -200 399 799 ; C 18 ; WX 784 ; N C18 ; B 66 0 733 700 ; C 19 ; WX 818 ; N C19 ; B 66 0 766 700 ; C 20 ; WX 818 ; N C20 ; B 66 0 766 700 ; C 21 ; WX 851 ; N C21 ; B 133 0 733 600 ; C 22 ; WX 985 ; N C22 ; B 133 266 866 333 ; C 23 ; WX 851 ; N C23 ; B 133 133 733 466 ; C 24 ; WX 518 ; N C24 ; B 99 0 433 600 ; C 25 ; WX 784 ; N C25 ; B 133 -100 666 699 ; C 26 ; WX 784 ; N C26 ; B 133 -100 666 700 ; C 27 ; WX 784 ; N C27 ; B 133 32 666 566 ; C 28 ; WX 651 ; N C28 ; B 133 0 532 833 ; C 29 ; WX 451 ; N C29 ; B 133 0 333 833 ; C 30 ; WX 784 ; N C30 ; B 99 0 700 833 ; C 31 ; WX 784 ; N C31 ; B 99 0 700 833 ; C 32 ; WX 851 ; N C32 ; B 99 0 766 600 ; C 33 ; WX 784 ; N C33 ; B 133 -33 666 633 ; C 34 ; WX 784 ; N C34 ; B 133 -33 666 633 ; C 35 ; WX 784 ; N C35 ; B 99 -67 700 666 ; C 36 ; WX 784 ; N C36 ; B 99 -33 700 633 ; C 37 ; WX 784 ; N C37 ; B 99 -33 700 633 ; C 38 ; WX 784 ; N C38 ; B 99 -33 699 666 ; C 39 ; WX 318 ; N C39 ; B 0 -33 333 700 ; C 40 ; WX 718 ; N C40 ; B 0 133 733 466 ; C 41 ; WX 718 ; N C41 ; B 0 133 733 466 ; C 42 ; WX 651 ; N C42 ; B 0 0 666 700 ; C 43 ; WX 451 ; N C43 ; B 0 -200 466 866 ; C 44 ; WX 1318 ; N C44 ; B 0 299 1333 299 ; C 45 ; WX 918 ; N C45 ; B 0 -167 933 766 ; C 46 ; WX -15 ; N C46 ; B 0 -366 0 966 ; C 47 ; WX 918 ; N C47 ; B 0 -167 933 766 ; C 48 ; WX 918 ; N C48 ; B 0 299 933 299 ; C 49 ; WX 784 ; N C49 ; B 0 66 799 532 ; C 50 ; WX 451 ; N C50 ; B 0 -100 466 699 ; C 51 ; WX -15 ; N C51 ; B 0 -167 0 766 ; C 52 ; WX 451 ; N C52 ; B 0 -100 466 700 ; C 53 ; WX 784 ; N C53 ; B 0 66 799 532 ; C 54 ; WX 451 ; N C54 ; B 0 299 466 299 ; C 55 ; WX 318 ; N C55 ; B 0 133 333 466 ; C 56 ; WX -15 ; N C56 ; B 0 66 0 532 ; C 57 ; WX 318 ; N C57 ; B 0 133 333 466 ; C 58 ; WX 351 ; N C58 ; B 0 299 366 666 ; C 59 ; WX 351 ; N C59 ; B 0 -67 366 299 ; C 60 ; WX 351 ; N C60 ; B 0 -67 366 299 ; C 61 ; WX 351 ; N C61 ; B 0 299 366 666 ; C 62 ; WX 918 ; N C62 ; B 0 233 933 399 ; C 63 ; WX 151 ; N C63 ; B 0 -167 166 766 ; C 64 ; WX 151 ; N C64 ; B 0 -167 166 766 ; C 65 ; WX 918 ; N C65 ; B 0 199 933 366 ; C 66 ; WX 451 ; N C66 ; B 0 32 466 566 ; C 67 ; WX 518 ; N C67 ; B 0 66 532 532 ; C 68 ; WX 451 ; N C68 ; B 0 166 466 433 ; C 69 ; WX 518 ; N C69 ; B 0 99 532 500 ; C 70 ; WX 518 ; N C70 ; B 0 -67 532 600 ; C 71 ; WX 651 ; N C71 ; B 0 32 666 566 ; C 72 ; WX 518 ; N C72 ; B 0 0 532 666 ; C 73 ; WX 651 ; N C73 ; B 0 32 666 566 ; C 74 ; WX 718 ; N C74 ; B 0 -100 733 500 ; C 75 ; WX 651 ; N C75 ; B 0 -133 666 532 ; C 76 ; WX 184 ; N C76 ; B 0 199 199 399 ; C 77 ; WX 151 ; N C77 ; B 0 133 166 466 ; C 78 ; WX 918 ; N C78 ; B 0 299 933 299 ; C 79 ; WX 918 ; N C79 ; B 0 199 933 399 ; C 80 ; WX 518 ; N C80 ; B 0 299 532 766 ; C 81 ; WX 918 ; N C81 ; B 0 -167 933 299 ; C 82 ; WX 918 ; N C82 ; B 0 -233 933 299 ; C 83 ; WX 451 ; N C83 ; B 0 66 466 532 ; C 84 ; WX 384 ; N C84 ; B 0 99 399 500 ; C 85 ; WX 451 ; N C85 ; B 0 166 466 566 ; C 86 ; WX 384 ; N C86 ; B 0 -33 399 633 ; C 87 ; WX 518 ; N C87 ; B 0 66 532 600 ; C 88 ; WX 451 ; N C88 ; B 0 66 466 532 ; C 89 ; WX 318 ; N C89 ; B 0 133 333 466 ; C 90 ; WX 318 ; N C90 ; B 0 99 333 500 ; C 91 ; WX 251 ; N C91 ; B 0 166 266 433 ; C 92 ; WX 251 ; N C92 ; B 0 166 266 433 ; C 93 ; WX 318 ; N C93 ; B 0 199 333 500 ; C 94 ; WX 284 ; N C94 ; B 0 133 299 466 ; C 95 ; WX 318 ; N C95 ; B 0 99 333 399 ; C 96 ; WX 284 ; N C96 ; B 0 133 299 466 ; C 97 ; WX 384 ; N C97 ; B 0 133 399 500 ; C 98 ; WX 218 ; N C98 ; B 0 66 233 532 ; C 99 ; WX 318 ; N C99 ; B 0 99 333 500 ; C 100 ; WX 384 ; N C100 ; B 0 99 399 500 ; C 101 ; WX 451 ; N C101 ; B 0 99 466 500 ; C 102 ; WX 585 ; N C102 ; B 0 0 600 600 ; C 103 ; WX 585 ; N C103 ; B 0 -33 600 666 ; C 104 ; WX 651 ; N C104 ; B 0 -33 666 566 ; C 105 ; WX 384 ; N C105 ; B 0 99 399 500 ; C 106 ; WX 451 ; N C106 ; B 0 66 466 532 ; C 107 ; WX 451 ; N C107 ; B 0 32 466 566 ; C 108 ; WX 718 ; N C108 ; B 0 -33 733 700 ; C 109 ; WX 518 ; N C109 ; B 0 -33 532 666 ; C 110 ; WX 518 ; N C110 ; B 0 -33 532 666 ; C 111 ; WX 518 ; N C111 ; B 0 -33 532 666 ; C 112 ; WX 518 ; N C112 ; B 0 -33 532 666 ; C 113 ; WX 585 ; N C113 ; B 0 299 600 666 ; C 114 ; WX 1318 ; N C114 ; B 0 -266 1333 866 ; C 115 ; WX 1118 ; N C115 ; B 0 -266 1133 866 ; C 116 ; WX 618 ; N C116 ; B 99 -233 532 700 ; C 117 ; WX 523 ; N C117 ; B 161 484 376 700 ; C 118 ; WX 523 ; N C118 ; B 107 430 430 753 ; C 119 ; WX 792 ; N C119 ; B 107 -215 700 861 ; C 120 ; WX 523 ; N C120 ; B 161 -215 430 861 ; C 121 ; WX 523 ; N C121 ; B 107 -215 376 861 ; C 122 ; WX 523 ; N C122 ; B 161 -215 430 861 ; C 123 ; WX 523 ; N C123 ; B 107 -215 376 861 ; C 124 ; WX 577 ; N C124 ; B 214 -215 376 861 ; C 125 ; WX 577 ; N C125 ; B 214 -215 376 861 ; C 126 ; WX 523 ; N C126 ; B 161 -215 376 861 ; C 127 ; WX 523 ; N C127 ; B 161 -215 376 861 ; C 128 ; WX 307 ; N C128 ; B 161 -215 161 861 ; C 129 ; WX 523 ; N C129 ; B 161 -215 376 861 ; C 130 ; WX 954 ; N C130 ; B 161 322 807 322 ; C 131 ; WX 954 ; N C131 ; B 161 0 807 646 ; C 132 ; WX 846 ; N C132 ; B 161 0 699 592 ; C 133 ; WX 846 ; N C133 ; B 161 0 699 592 ; C 134 ; WX 846 ; N C134 ; B 161 53 699 592 ; C 135 ; WX 415 ; N C135 ; B 161 268 268 376 ; C 136 ; WX 954 ; N C136 ; B 161 0 807 646 ; C 137 ; WX 954 ; N C137 ; B 161 214 807 430 ; C 138 ; WX 954 ; N C138 ; B 161 0 807 646 ; C 139 ; WX 954 ; N C139 ; B 161 107 807 538 ; C 140 ; WX 846 ; N C140 ; B 161 0 700 646 ; C 141 ; WX 846 ; N C141 ; B 161 0 699 646 ; C 142 ; WX 846 ; N C142 ; B 161 0 699 700 ; C 143 ; WX 846 ; N C143 ; B 161 0 699 700 ; C 144 ; WX 1008 ; N C144 ; B 161 161 915 538 ; C 145 ; WX 846 ; N C145 ; B 107 214 753 430 ; C 146 ; WX 846 ; N C146 ; B 161 268 700 430 ; C 147 ; WX 415 ; N C147 ; B 107 484 322 700 ; C 148 ; WX 415 ; N C148 ; B 107 484 322 700 ; C 149 ; WX 631 ; N C149 ; B 107 484 538 700 ; C 150 ; WX 415 ; N C150 ; B 161 430 268 700 ; C 151 ; WX 415 ; N C151 ; B 161 430 268 700 ; C 152 ; WX 415 ; N C152 ; B 161 430 268 700 ; C 153 ; WX 415 ; N C153 ; B 161 430 268 700 ; EndCharMetrics EndFontMetrics gle-graphics-4.2.4c/src/fonts/plgi.afm0000664000000000000000000001223411676336540016306 0ustar rootrootStartFontMetrics 2.0 Comment Made from HERSHEY font file using SPLITFONT.BAS FontName plGI EncodingScheme TEXENCODING FullName plGI FamilyName plGI Weight Medium ItalicAngle 0 IsFixedPitch false UnderlinePosition -97 UnderlineThickness 73 FontBBox 0 -400 1001 1001 CapHeight 729 XHeight 151 Descender -219 Ascender 729 StartCharMetrics 95 C 32 ; WX 400 ; N C32 ; B 0 0 0 0 ; C 33 ; WX 384 ; N C33 ; B 99 0 299 700 ; C 34 ; WX 384 ; N C34 ; B 133 466 233 700 ; C 35 ; WX 300 ; N C35 ; B 0 0 0 0 ; C 36 ; WX 651 ; N C36 ; B 99 -133 566 833 ; C 37 ; WX 784 ; N C37 ; B 99 0 700 700 ; C 38 ; WX 300 ; N C38 ; B 0 0 0 0 ; C 39 ; WX 384 ; N C39 ; B 166 466 266 700 ; C 40 ; WX 451 ; N C40 ; B 99 -233 333 833 ; C 41 ; WX 451 ; N C41 ; B 133 -233 366 833 ; C 42 ; WX 585 ; N C42 ; B 133 466 500 700 ; C 43 ; WX 818 ; N C43 ; B 133 32 700 600 ; C 44 ; WX 384 ; N C44 ; B 133 -133 233 99 ; C 45 ; WX 818 ; N C45 ; B 133 299 700 333 ; C 46 ; WX 384 ; N C46 ; B 133 0 266 99 ; C 47 ; WX 751 ; N C47 ; B 66 -233 700 833 ; C 48 ; WX 651 ; N C48 ; B 66 0 600 700 ; C 49 ; WX 651 ; N C49 ; B 233 0 466 700 ; C 50 ; WX 651 ; N C50 ; B 99 0 600 700 ; C 51 ; WX 651 ; N C51 ; B 99 0 532 700 ; C 52 ; WX 651 ; N C52 ; B 99 0 633 700 ; C 53 ; WX 651 ; N C53 ; B 99 0 600 700 ; C 54 ; WX 651 ; N C54 ; B 66 0 600 700 ; C 55 ; WX 651 ; N C55 ; B 99 0 600 700 ; C 56 ; WX 651 ; N C56 ; B 66 0 600 700 ; C 57 ; WX 651 ; N C57 ; B 66 0 600 700 ; C 58 ; WX 384 ; N C58 ; B 133 0 266 466 ; C 59 ; WX 384 ; N C59 ; B 133 -133 266 466 ; C 60 ; WX 784 ; N C60 ; B 133 0 666 600 ; C 61 ; WX 818 ; N C61 ; B 133 166 700 466 ; C 62 ; WX 784 ; N C62 ; B 133 0 666 600 ; C 63 ; WX 585 ; N C63 ; B 99 0 500 700 ; C 64 ; WX 884 ; N C64 ; B 99 0 799 700 ; C 65 ; WX 851 ; N C65 ; B 99 0 766 700 ; C 66 ; WX 851 ; N C66 ; B 99 0 766 700 ; C 67 ; WX 851 ; N C67 ; B 99 0 766 700 ; C 68 ; WX 851 ; N C68 ; B 99 0 766 700 ; C 69 ; WX 851 ; N C69 ; B 99 0 766 700 ; C 70 ; WX 851 ; N C70 ; B 99 0 766 700 ; C 71 ; WX 851 ; N C71 ; B 99 0 766 700 ; C 72 ; WX 851 ; N C72 ; B 99 0 766 700 ; C 73 ; WX 851 ; N C73 ; B 99 0 766 700 ; C 74 ; WX 851 ; N C74 ; B 99 0 766 700 ; C 75 ; WX 851 ; N C75 ; B 99 0 766 700 ; C 76 ; WX 851 ; N C76 ; B 99 0 766 700 ; C 77 ; WX 851 ; N C77 ; B 99 0 766 700 ; C 78 ; WX 851 ; N C78 ; B 99 0 766 700 ; C 79 ; WX 851 ; N C79 ; B 99 0 766 700 ; C 80 ; WX 851 ; N C80 ; B 99 0 766 700 ; C 81 ; WX 851 ; N C81 ; B 99 0 766 700 ; C 82 ; WX 851 ; N C82 ; B 99 0 766 700 ; C 83 ; WX 851 ; N C83 ; B 99 0 766 700 ; C 84 ; WX 851 ; N C84 ; B 99 0 766 700 ; C 85 ; WX 851 ; N C85 ; B 99 0 766 700 ; C 86 ; WX 851 ; N C86 ; B 99 0 766 700 ; C 87 ; WX 851 ; N C87 ; B 99 0 766 700 ; C 88 ; WX 851 ; N C88 ; B 99 0 766 700 ; C 89 ; WX 851 ; N C89 ; B 99 0 766 700 ; C 90 ; WX 851 ; N C90 ; B 99 0 766 700 ; C 91 ; WX 451 ; N C91 ; B 133 -233 366 833 ; C 92 ; WX 300 ; N C92 ; B 0 0 0 0 ; C 93 ; WX 451 ; N C93 ; B 99 -233 333 833 ; C 94 ; WX 300 ; N C94 ; B 0 0 0 0 ; C 95 ; WX 300 ; N C95 ; B 0 0 0 0 ; C 96 ; WX 318 ; N C96 ; B 133 500 199 700 ; C 97 ; WX 551 ; N C97 ; B 99 0 466 466 ; C 98 ; WX 551 ; N C98 ; B 99 0 466 700 ; C 99 ; WX 384 ; N C99 ; B 99 0 366 466 ; C 100 ; WX 518 ; N C100 ; B 99 0 433 700 ; C 101 ; WX 418 ; N C101 ; B 99 0 399 466 ; C 102 ; WX 384 ; N C102 ; B 32 0 399 700 ; C 103 ; WX 551 ; N C103 ; B 99 -233 433 466 ; C 104 ; WX 585 ; N C104 ; B 99 -233 466 700 ; C 105 ; WX 318 ; N C105 ; B 99 0 233 700 ; C 106 ; WX 318 ; N C106 ; B 99 -233 233 700 ; C 107 ; WX 551 ; N C107 ; B 99 0 500 700 ; C 108 ; WX 318 ; N C108 ; B 99 0 233 700 ; C 109 ; WX 851 ; N C109 ; B 66 0 766 466 ; C 110 ; WX 585 ; N C110 ; B 66 0 500 466 ; C 111 ; WX 518 ; N C111 ; B 99 0 433 466 ; C 112 ; WX 551 ; N C112 ; B 66 -233 466 466 ; C 113 ; WX 551 ; N C113 ; B 99 -233 466 466 ; C 114 ; WX 418 ; N C114 ; B 66 0 399 466 ; C 115 ; WX 518 ; N C115 ; B 99 0 433 466 ; C 116 ; WX 318 ; N C116 ; B 32 0 299 700 ; C 117 ; WX 585 ; N C117 ; B 66 0 532 466 ; C 118 ; WX 585 ; N C118 ; B 99 0 500 466 ; C 119 ; WX 851 ; N C119 ; B 99 0 766 466 ; C 120 ; WX 585 ; N C120 ; B 99 0 500 466 ; C 121 ; WX 585 ; N C121 ; B 66 -233 500 466 ; C 122 ; WX 485 ; N C122 ; B 32 -233 366 466 ; C 123 ; WX 485 ; N C123 ; B 166 -233 333 833 ; C 124 ; WX 518 ; N C124 ; B 99 299 433 700 ; C 125 ; WX 485 ; N C125 ; B 166 -233 333 833 ; C 126 ; WX 851 ; N C126 ; B 99 0 766 700 ; EndCharMetrics EndFontMetrics gle-graphics-4.2.4c/src/fonts/plgg.gle0000664000000000000000000020276511676336540016322 0ustar rootrootdfont design= 1428 dfont char=33 amove 285 95 aline 238 47 aline 333 47 aline 285 95 amove 285 142 aline 190 47 aline 285 0 aline 380 47 aline 285 142 amove 285 333 aline 285 857 aline 238 904 aline 285 952 aline 333 904 aline 285 857 amove 285 1000 aline 238 952 aline 142 904 aline 238 857 aline 285 333 aline 333 857 aline 428 904 aline 333 952 aline 285 1000 stroke dfont endchar dfont char=34 amove 190 666 aline 285 714 aline 333 809 aline 333 904 aline 285 1000 aline 190 904 aline 285 809 aline 285 714 amove 285 952 aline 238 904 aline 285 857 aline 285 952 stroke dfont endchar stroke dfont endchar dfont char=36 amove 238 95 aline 190 190 amove 380 0 aline 285 47 aline 238 142 aline 238 238 aline 142 190 aline 190 95 aline 238 47 aline 380 0 aline 571 0 aline 714 47 aline 761 95 aline 809 190 aline 809 333 aline 761 428 aline 619 523 aline 333 619 aline 238 666 aline 190 761 aline 190 857 aline 238 952 amove 190 714 aline 238 619 aline 333 571 aline 619 476 aline 714 428 aline 761 333 amove 714 47 aline 761 142 aline 761 285 aline 714 380 aline 619 428 aline 333 523 aline 190 619 aline 142 714 aline 142 857 aline 238 952 aline 380 1000 aline 571 1000 aline 714 952 aline 761 904 aline 809 809 aline 714 761 aline 714 857 aline 666 952 aline 571 1000 amove 714 904 aline 761 809 amove 571 1190 aline 571 -191 amove 380 -191 aline 380 1190 stroke dfont endchar dfont char=37 amove 142 0 aline 1000 1000 aline 904 952 aline 761 904 aline 619 904 aline 476 952 aline 380 1000 aline 285 1000 aline 190 952 aline 142 857 aline 142 761 aline 238 666 aline 333 666 aline 428 714 aline 476 809 aline 476 904 aline 380 1000 amove 809 333 aline 714 285 aline 666 190 aline 666 95 aline 761 0 aline 857 0 aline 952 47 aline 1000 142 aline 1000 238 aline 904 333 aline 809 333 stroke dfont endchar stroke dfont endchar dfont char=39 amove 285 809 aline 285 714 aline 333 761 aline 285 809 amove 285 952 aline 285 857 aline 380 761 aline 285 666 aline 238 761 aline 238 857 aline 285 952 aline 380 1000 stroke dfont endchar dfont char=40 amove 285 -48 aline 238 95 aline 190 285 aline 190 571 aline 238 761 aline 285 904 amove 380 1095 aline 333 1000 aline 285 857 aline 238 571 aline 238 285 aline 285 0 aline 333 -143 aline 380 -239 amove 476 -334 aline 380 -239 aline 285 -96 aline 190 95 aline 142 333 aline 142 523 aline 190 761 aline 285 952 aline 380 1095 aline 476 1190 stroke dfont endchar dfont char=41 amove 285 -239 aline 333 -143 aline 380 0 aline 428 285 aline 428 571 aline 380 857 aline 333 1000 aline 285 1095 amove 190 1190 aline 285 1095 aline 380 952 aline 476 761 aline 523 523 aline 523 333 aline 476 95 aline 380 -96 aline 285 -239 aline 190 -334 amove 380 -48 aline 428 95 aline 476 285 aline 476 571 aline 428 761 aline 380 904 stroke dfont endchar dfont char=42 amove 190 666 aline 238 952 amove 238 1000 aline 190 952 aline 190 666 aline 285 952 aline 238 1000 amove 666 1000 aline 619 952 aline 619 666 aline 666 952 amove 666 1000 aline 714 952 aline 619 666 stroke dfont endchar dfont char=43 amove 190 476 aline 1000 476 aline 1000 428 aline 190 428 aline 190 476 amove 571 857 aline 571 47 aline 619 47 aline 619 857 aline 571 857 stroke dfont endchar dfont char=44 amove 190 -191 aline 285 -143 aline 333 -48 aline 333 47 aline 285 142 aline 190 47 aline 285 -48 aline 285 -143 amove 285 95 aline 238 47 aline 285 0 aline 285 95 stroke dfont endchar dfont char=45 amove 190 476 aline 1000 476 aline 1000 428 aline 190 428 aline 190 476 stroke dfont endchar dfont char=46 amove 285 142 aline 190 47 aline 285 0 aline 380 47 aline 285 142 amove 285 95 aline 238 47 aline 333 47 aline 285 95 stroke dfont endchar dfont char=47 amove 142 -334 aline 95 -334 aline 952 1190 aline 1000 1190 aline 142 -334 stroke dfont endchar dfont char=48 amove 95 95 aline 190 142 aline 190 904 aline 285 904 aline 523 952 aline 619 1000 aline 666 952 aline 761 904 aline 857 904 aline 761 857 aline 761 95 aline 666 95 aline 428 47 aline 333 0 aline 285 47 aline 190 95 aline 95 95 amove 380 47 aline 238 142 aline 238 857 amove 285 904 aline 285 142 aline 380 95 aline 428 47 amove 666 95 aline 666 857 aline 571 904 aline 523 952 amove 571 952 aline 714 857 aline 714 142 stroke dfont endchar dfont char=49 amove 333 95 aline 428 142 aline 428 761 aline 380 857 aline 333 904 aline 476 1000 aline 523 904 aline 523 142 aline 619 95 aline 666 95 aline 571 47 aline 523 0 aline 476 47 aline 380 95 aline 333 95 amove 571 47 aline 476 95 aline 476 857 aline 428 952 aline 380 904 aline 428 857 stroke dfont endchar dfont char=50 amove 142 0 aline 142 238 aline 190 380 aline 285 476 aline 428 523 aline 761 523 aline 761 904 aline 666 904 aline 523 952 aline 428 1000 aline 380 952 aline 285 904 aline 190 904 aline 285 857 aline 380 857 aline 476 904 aline 523 952 amove 476 952 aline 380 904 amove 666 904 aline 666 523 amove 714 571 aline 714 857 amove 857 95 aline 666 142 aline 523 142 aline 333 95 aline 142 -1 aline 380 47 aline 619 47 aline 761 -1 aline 857 95 amove 809 47 aline 666 95 aline 428 95 aline 285 47 stroke dfont endchar dfont char=51 amove 142 95 aline 238 95 aline 333 47 aline 380 0 aline 476 47 aline 666 95 aline 761 95 aline 761 428 aline 666 428 aline 523 476 aline 428 523 amove 428 476 aline 523 523 aline 666 571 aline 761 571 aline 761 904 aline 666 904 aline 476 952 aline 380 1000 aline 333 952 aline 238 904 aline 190 904 aline 285 857 aline 380 857 aline 476 952 amove 428 952 aline 333 904 amove 666 904 aline 666 571 amove 714 619 aline 714 857 amove 666 428 aline 666 95 amove 714 142 aline 714 380 amove 476 47 aline 428 95 aline 333 142 aline 238 142 aline 142 95 amove 333 95 aline 428 47 stroke dfont endchar dfont char=52 amove 238 285 aline 238 619 amove 190 523 aline 190 333 amove 476 95 aline 523 95 aline 619 47 aline 666 0 aline 714 47 aline 809 95 aline 761 95 aline 666 142 aline 666 809 aline 714 904 aline 619 1000 aline 142 523 aline 142 285 aline 571 285 amove 666 285 aline 857 285 aline 904 238 aline 904 333 aline 857 285 amove 714 47 aline 619 95 aline 619 952 aline 666 904 aline 619 809 amove 571 952 aline 571 142 aline 476 95 stroke dfont endchar dfont char=53 amove 142 95 aline 238 95 aline 333 47 aline 380 0 aline 476 47 aline 666 95 aline 761 95 aline 761 571 aline 857 619 aline 809 619 aline 714 666 aline 666 714 aline 619 666 aline 523 619 aline 333 571 aline 190 571 aline 190 1000 aline 761 1000 aline 714 952 aline 619 904 aline 190 904 amove 238 952 aline 666 952 amove 619 666 aline 714 619 aline 714 142 amove 666 95 aline 666 571 aline 571 619 aline 523 619 amove 333 95 aline 428 47 amove 476 47 aline 428 95 aline 333 142 aline 238 142 aline 142 95 stroke dfont endchar dfont char=54 amove 95 95 aline 190 142 aline 190 904 aline 285 904 aline 476 952 aline 571 1000 aline 619 952 aline 714 904 aline 761 904 aline 666 857 aline 571 857 aline 476 952 amove 523 952 aline 619 904 amove 666 666 aline 714 619 aline 809 571 aline 857 571 aline 761 523 aline 761 95 aline 666 95 aline 428 47 aline 333 0 aline 285 47 aline 190 95 aline 95 95 amove 380 47 aline 238 142 aline 238 857 amove 285 904 aline 285 142 aline 380 95 aline 428 47 amove 666 95 aline 666 523 aline 571 571 aline 523 571 amove 619 619 aline 714 523 aline 714 142 amove 666 666 aline 619 619 aline 523 571 aline 333 523 aline 285 523 stroke dfont endchar dfont char=55 amove 428 0 aline 380 142 aline 380 285 aline 428 428 aline 523 571 aline 714 761 aline 809 904 aline 857 1000 aline 666 904 aline 476 857 aline 333 857 aline 142 904 aline 238 1000 aline 380 952 aline 619 952 aline 857 1000 amove 714 952 aline 571 904 aline 333 904 aline 190 952 amove 619 666 aline 523 523 aline 476 380 aline 476 238 aline 523 95 aline 428 -1 amove 476 47 aline 428 190 aline 428 333 aline 476 476 stroke dfont endchar dfont char=56 amove 95 95 aline 190 142 aline 190 428 aline 285 428 aline 666 571 aline 761 571 aline 761 857 aline 857 904 aline 809 904 aline 714 952 aline 666 1000 aline 619 952 aline 523 904 aline 285 857 aline 190 857 aline 190 571 aline 285 571 aline 666 428 aline 761 428 aline 761 95 aline 666 95 aline 428 47 aline 333 0 aline 285 47 aline 190 95 aline 95 95 amove 380 47 aline 238 142 aline 238 380 amove 285 428 aline 285 142 aline 380 95 aline 428 47 amove 666 95 aline 666 428 amove 714 380 aline 714 142 amove 666 571 aline 666 857 aline 571 904 aline 523 904 amove 619 952 aline 714 904 aline 714 619 amove 285 571 aline 285 857 amove 238 809 aline 238 619 stroke dfont endchar dfont char=57 amove 142 95 aline 238 95 aline 333 47 aline 380 0 aline 476 47 aline 666 95 aline 761 95 aline 761 857 aline 857 904 aline 761 904 aline 666 952 aline 619 1000 aline 523 952 aline 285 904 aline 190 904 aline 190 476 aline 95 428 aline 142 428 aline 238 380 aline 285 333 aline 333 380 aline 428 428 aline 619 476 aline 666 476 amove 428 428 aline 380 428 aline 285 476 aline 285 904 amove 238 857 aline 238 428 aline 333 380 amove 333 95 aline 428 47 amove 476 47 aline 428 95 aline 333 142 aline 238 142 aline 142 95 amove 666 95 aline 666 857 aline 571 904 aline 523 952 amove 571 952 aline 714 857 aline 714 142 stroke dfont endchar dfont char=58 amove 285 666 aline 190 571 aline 285 523 aline 380 571 aline 285 666 amove 285 619 aline 238 571 aline 333 571 aline 285 619 amove 285 142 aline 190 47 aline 285 -1 aline 380 47 aline 285 142 amove 285 95 aline 238 47 aline 333 47 aline 285 95 stroke dfont endchar dfont char=59 amove 190 -191 aline 285 -143 aline 333 -48 aline 333 47 aline 285 142 aline 190 47 aline 285 -48 aline 285 -143 amove 285 95 aline 238 47 aline 285 0 aline 285 95 amove 285 619 aline 238 571 aline 333 571 aline 285 619 amove 285 666 aline 190 571 aline 285 523 aline 380 571 aline 285 666 stroke dfont endchar dfont char=60 amove 952 857 aline 190 428 aline 952 0 stroke dfont endchar dfont char=61 amove 190 285 aline 1000 285 aline 1000 238 aline 190 238 aline 190 285 amove 190 666 aline 1000 666 aline 1000 619 aline 190 619 aline 190 666 stroke dfont endchar dfont char=62 amove 190 0 aline 952 428 aline 190 857 stroke dfont endchar dfont char=63 amove 428 95 aline 380 47 aline 476 47 aline 428 95 amove 428 142 aline 333 47 aline 428 0 aline 523 47 aline 428 142 amove 428 333 aline 380 476 aline 476 476 aline 428 333 aline 428 476 amove 476 476 aline 571 523 aline 666 619 aline 714 714 aline 714 809 aline 666 904 aline 619 952 aline 476 1000 aline 380 1000 aline 238 952 aline 190 904 aline 142 809 aline 238 761 aline 238 857 aline 285 952 aline 380 1000 amove 476 1000 aline 571 952 aline 619 857 aline 619 666 aline 571 571 aline 476 476 amove 619 619 aline 666 666 aline 666 857 aline 619 904 amove 238 904 aline 190 809 stroke dfont endchar dfont char=64 amove 523 238 aline 476 285 aline 428 380 aline 428 523 aline 476 666 aline 571 761 amove 857 761 aline 809 380 aline 809 285 aline 904 238 aline 999 238 aline 1095 333 aline 1142 476 aline 1142 571 aline 1095 714 aline 1047 809 aline 952 904 aline 857 952 aline 714 1000 aline 571 1000 aline 428 952 aline 333 904 aline 238 809 aline 190 714 aline 142 571 aline 142 428 aline 190 285 aline 238 190 aline 333 95 aline 428 47 aline 571 0 aline 714 0 aline 857 47 aline 952 95 aline 1000 142 amove 904 238 aline 857 285 aline 857 380 aline 904 761 amove 857 619 aline 809 714 aline 714 761 aline 571 761 aline 476 714 aline 428 666 aline 380 523 aline 380 380 aline 428 285 aline 523 238 aline 666 238 aline 761 285 aline 809 380 stroke dfont endchar dfont char=65 amove 142 238 aline 285 285 aline 380 333 aline 476 428 aline 523 571 aline 523 761 aline 476 904 aline 428 952 aline 333 1000 aline 238 1000 aline 142 952 aline 95 857 aline 142 809 aline 190 857 aline 142 904 amove 333 999 aline 380 952 aline 428 809 aline 428 523 aline 380 380 aline 285 285 amove 285 238 aline 428 95 amove 428 47 aline 238 238 amove 142 238 aline 380 -1 aline 714 238 amove 857 47 aline 761 142 aline 761 809 aline 809 904 amove 904 999 aline 857 952 aline 809 809 aline 809 190 aline 904 95 amove 1000 190 aline 809 -1 aline 714 95 aline 714 809 aline 761 904 aline 809 952 aline 904 999 aline 1000 999 aline 1047 952 aline 1047 904 aline 1000 904 aline 1047 952 amove 428 904 aline 476 761 aline 476 523 aline 428 428 stroke dfont endchar dfont char=66 amove 142 142 aline 190 190 aline 238 190 aline 523 47 aline 666 0 aline 809 0 aline 952 47 aline 1047 142 aline 1095 285 aline 1095 428 aline 1047 571 aline 952 666 amove 904 619 aline 952 619 aline 1047 523 amove 1095 380 aline 1047 476 aline 952 571 aline 809 619 amove 619 523 aline 1095 761 aline 1047 809 aline 1000 904 aline 952 952 aline 857 1000 aline 761 1000 aline 666 952 aline 619 857 amove 523 904 aline 571 809 aline 571 333 amove 476 190 aline 571 285 aline 619 428 aline 619 809 aline 571 904 aline 523 952 aline 428 1000 aline 285 1000 aline 190 952 aline 142 857 aline 142 761 aline 190 666 aline 285 523 aline 285 428 aline 238 380 amove 95 476 aline 95 428 aline 142 380 aline 238 380 aline 333 428 aline 333 571 aline 285 666 aline 190 809 aline 190 904 aline 285 1000 amove 428 1000 aline 476 952 aline 523 809 aline 523 285 aline 476 190 amove 285 190 aline 333 190 aline 619 47 aline 714 47 amove 1000 95 aline 904 47 aline 761 47 aline 619 95 aline 428 190 aline 285 238 aline 190 238 aline 142 142 aline 142 47 aline 190 0 aline 238 47 aline 190 95 amove 285 571 aline 190 761 amove 857 1000 aline 904 952 aline 952 809 aline 1000 761 aline 1095 761 amove 1000 809 aline 952 904 stroke dfont endchar dfont char=67 amove 476 47 aline 333 95 aline 238 238 aline 190 428 aline 190 666 aline 238 809 aline 285 904 amove 380 1000 aline 333 952 aline 285 857 aline 238 666 aline 238 476 aline 285 285 aline 333 190 aline 428 95 aline 571 47 aline 714 47 aline 857 95 aline 1000 190 aline 904 95 aline 809 47 aline 666 0 aline 523 0 aline 380 47 aline 285 95 aline 190 238 aline 142 428 aline 142 619 aline 190 809 aline 285 952 aline 380 1000 aline 476 1000 aline 571 904 amove 523 857 aline 523 809 aline 571 714 aline 714 619 aline 761 523 aline 761 428 aline 714 333 aline 619 285 aline 571 285 aline 476 333 aline 428 428 amove 714 476 aline 714 523 aline 523 714 aline 523 761 amove 666 952 aline 761 857 aline 857 857 aline 952 904 aline 1000 952 amove 952 904 aline 857 904 aline 761 952 aline 714 1000 aline 571 904 aline 523 857 aline 476 761 aline 476 714 aline 523 619 aline 666 523 aline 714 428 aline 714 333 amove 809 904 aline 761 904 aline 714 952 stroke dfont endchar dfont char=68 amove 142 142 aline 190 190 aline 238 190 aline 523 47 aline 666 0 aline 809 0 aline 952 47 aline 1047 142 aline 1095 285 aline 1095 476 aline 1047 666 aline 952 809 aline 857 904 aline 761 952 aline 619 1000 aline 428 1000 aline 285 952 aline 190 857 aline 142 761 aline 142 714 amove 142 761 aline 238 857 aline 380 904 aline 619 904 aline 761 857 aline 857 809 aline 952 714 aline 1047 571 aline 1095 428 amove 1047 619 aline 952 761 aline 857 857 aline 761 904 aline 619 952 aline 380 952 aline 285 904 amove 380 761 aline 380 666 aline 476 476 aline 476 380 aline 428 285 aline 380 238 aline 285 238 aline 238 285 aline 238 333 amove 285 190 aline 333 190 aline 619 47 aline 714 47 amove 1000 95 aline 904 47 aline 761 47 aline 619 95 aline 428 190 aline 285 238 aline 190 238 aline 142 142 aline 142 47 aline 190 0 aline 238 47 aline 190 95 amove 428 285 aline 428 380 aline 333 571 aline 333 666 aline 380 761 aline 523 904 amove 380 619 aline 380 571 aline 428 476 aline 428 428 stroke dfont endchar dfont char=69 amove 476 47 aline 333 95 aline 238 238 aline 190 428 aline 190 666 aline 238 809 aline 285 904 amove 380 1000 aline 333 952 aline 285 857 aline 238 666 aline 238 476 aline 285 285 aline 333 190 aline 428 95 aline 571 47 aline 714 47 aline 857 95 aline 1000 190 aline 904 95 aline 809 47 aline 666 0 aline 523 0 aline 380 47 aline 285 95 aline 190 238 aline 142 428 aline 142 619 aline 190 809 aline 285 952 aline 380 1000 aline 476 1000 aline 571 904 amove 523 857 aline 523 809 aline 571 714 aline 714 619 aline 761 523 aline 761 428 aline 714 333 aline 619 285 aline 571 285 aline 476 333 aline 428 428 amove 714 476 aline 714 523 aline 523 714 aline 523 761 amove 666 952 aline 761 857 aline 857 857 aline 952 904 aline 1000 952 amove 952 904 aline 857 904 aline 761 952 aline 714 1000 aline 571 904 aline 523 857 aline 476 761 aline 476 714 aline 523 619 aline 666 523 aline 714 428 aline 714 333 amove 714 619 aline 904 761 aline 952 714 aline 1047 714 aline 952 619 aline 857 619 aline 809 666 amove 857 714 aline 904 666 aline 952 666 amove 809 904 aline 761 904 aline 714 952 stroke dfont endchar dfont char=70 amove 285 -48 aline 238 -1 aline 238 190 aline 285 285 amove 142 380 aline 142 428 aline 190 476 aline 285 476 aline 333 428 aline 333 333 aline 285 190 aline 285 0 aline 333 -96 aline 428 -143 amove 619 -143 aline 714 -96 aline 761 -48 aline 809 95 aline 809 238 aline 761 380 aline 571 571 aline 523 666 aline 523 761 aline 571 857 aline 619 904 amove 714 904 aline 571 952 aline 333 952 aline 238 904 amove 190 761 aline 238 857 aline 333 904 aline 571 904 aline 857 857 aline 952 857 aline 1000 904 aline 1000 952 aline 952 1000 aline 904 1000 amove 857 857 aline 666 952 aline 523 1000 aline 380 1000 aline 238 952 aline 190 857 aline 190 761 aline 238 666 aline 333 619 amove 238 476 aline 285 428 aline 285 333 aline 190 190 aline 190 47 aline 238 -48 aline 285 -96 aline 428 -143 aline 619 -143 aline 761 -96 aline 857 0 aline 904 95 aline 904 238 aline 857 380 aline 761 476 aline 619 571 aline 523 666 amove 666 523 aline 809 380 aline 857 238 aline 857 95 aline 809 0 amove 714 523 aline 904 714 aline 952 666 aline 1047 666 aline 952 571 aline 857 571 aline 809 619 amove 857 666 aline 904 619 aline 952 619 stroke dfont endchar dfont char=71 amove 285 190 aline 238 285 aline 190 428 aline 190 666 aline 238 809 aline 285 904 amove 428 1000 aline 333 952 aline 285 857 aline 238 666 aline 238 428 aline 285 238 aline 333 142 aline 428 47 amove 428 380 aline 476 285 aline 571 238 aline 619 238 aline 714 285 aline 761 380 aline 761 476 aline 714 571 aline 571 666 aline 523 761 aline 523 809 amove 523 714 aline 523 666 aline 714 476 aline 714 428 amove 714 285 aline 714 380 aline 666 476 aline 523 571 aline 476 666 aline 476 714 aline 523 809 aline 619 904 aline 761 1000 amove 761 809 aline 714 904 aline 666 952 aline 571 1000 aline 428 1000 aline 285 952 aline 190 809 aline 142 619 aline 142 428 aline 190 285 aline 238 190 aline 333 95 aline 428 47 aline 571 0 aline 714 0 aline 857 47 aline 952 95 aline 1047 190 aline 1095 333 aline 1095 476 aline 1047 619 aline 952 714 amove 952 666 aline 1000 619 aline 1047 476 aline 1047 285 aline 1000 190 amove 857 47 aline 952 142 aline 1000 285 aline 1000 476 aline 952 571 aline 857 666 amove 714 571 aline 952 714 aline 1000 809 aline 1095 1000 aline 1047 952 aline 952 952 aline 1000 904 aline 1000 809 aline 1047 857 aline 1142 857 aline 1095 904 aline 1095 1000 amove 952 952 aline 1142 857 stroke dfont endchar dfont char=72 amove 380 47 aline 476 47 aline 571 0 aline 761 47 aline 904 95 aline 1000 190 aline 1047 333 aline 1047 476 aline 1000 619 aline 904 761 aline 571 523 amove 523 428 aline 523 476 aline 380 666 aline 380 714 amove 380 857 aline 380 761 aline 428 666 aline 523 571 aline 571 476 aline 571 380 aline 523 285 aline 476 238 aline 380 190 aline 285 190 aline 190 238 aline 142 285 aline 95 380 aline 95 476 aline 142 523 aline 190 476 aline 142 428 amove 523 285 aline 523 380 aline 476 476 aline 380 571 aline 333 666 aline 333 761 aline 380 857 aline 476 952 aline 571 1000 aline 666 904 aline 761 904 aline 857 952 aline 714 857 aline 619 857 aline 523 904 aline 476 952 amove 523 952 aline 619 904 amove 761 666 aline 809 666 aline 904 571 aline 952 428 aline 952 238 aline 904 142 aline 857 95 aline 761 47 aline 666 47 aline 571 95 aline 476 95 aline 380 47 aline 333 -48 aline 380 -143 aline 476 -191 aline 571 -191 aline 666 -143 amove 619 47 aline 523 47 amove 952 190 aline 1000 285 aline 1000 476 aline 952 619 aline 857 714 stroke dfont endchar dfont char=73 amove 190 142 aline 238 95 aline 190 47 aline 142 95 aline 142 190 aline 190 238 aline 285 238 aline 380 190 aline 476 95 aline 571 -48 aline 666 -143 amove 571 -96 aline 523 -48 aline 428 95 aline 380 142 amove 285 238 aline 333 190 aline 380 95 aline 476 -48 aline 523 -96 aline 619 -143 aline 761 -143 aline 857 -96 aline 904 -48 aline 952 47 aline 952 190 aline 904 285 aline 809 428 aline 761 523 aline 761 571 amove 761 476 aline 761 428 aline 904 190 aline 904 142 amove 857 -96 aline 904 0 aline 904 95 aline 857 190 aline 761 333 aline 714 428 aline 714 523 aline 809 619 aline 904 619 aline 952 571 aline 952 523 amove 904 761 aline 809 809 aline 666 952 aline 523 1000 aline 428 1000 aline 285 952 aline 238 904 aline 190 809 aline 190 714 aline 238 619 aline 285 571 aline 380 523 aline 476 523 amove 190 809 aline 238 857 aline 333 904 aline 523 904 aline 666 857 aline 761 809 aline 904 761 aline 1000 761 aline 1047 809 aline 1047 904 aline 1000 952 aline 904 952 amove 714 857 aline 666 904 aline 571 952 aline 380 952 aline 285 904 stroke dfont endchar dfont char=74 amove 190 142 aline 238 95 aline 190 47 aline 142 95 aline 142 190 aline 190 238 aline 285 238 aline 380 190 aline 476 95 aline 571 -48 aline 666 -143 amove 571 -96 aline 523 -48 aline 428 95 aline 380 142 amove 285 238 aline 333 190 aline 380 95 aline 476 -48 aline 523 -96 aline 619 -143 aline 761 -143 aline 857 -96 aline 904 -48 aline 952 47 aline 952 190 aline 904 285 aline 809 428 aline 761 523 aline 761 571 amove 761 476 aline 761 428 aline 904 190 aline 904 142 amove 857 -96 aline 904 0 aline 904 95 aline 857 190 aline 761 333 aline 714 428 aline 714 523 aline 809 619 aline 904 619 aline 952 571 aline 952 523 amove 904 761 aline 809 809 aline 666 952 aline 523 1000 aline 428 1000 aline 285 952 aline 238 904 aline 190 809 aline 190 714 aline 238 619 aline 285 571 aline 380 523 aline 476 523 amove 190 809 aline 238 857 aline 333 904 aline 523 904 aline 666 857 aline 761 809 aline 904 761 aline 1000 761 aline 1047 809 aline 1047 904 aline 1000 952 aline 904 952 amove 714 857 aline 666 904 aline 571 952 aline 380 952 aline 285 904 stroke dfont endchar dfont char=75 amove 95 95 aline 285 190 amove 238 47 aline 333 0 aline 428 0 aline 523 47 aline 571 142 aline 571 238 aline 523 380 aline 428 571 aline 380 666 aline 380 809 aline 428 904 amove 619 809 aline 714 761 aline 761 714 aline 809 619 amove 857 666 aline 761 761 amove 761 571 aline 952 142 aline 1000 95 aline 1047 95 amove 1000 47 aline 904 142 aline 714 523 amove 666 523 aline 857 95 aline 952 0 aline 1095 142 amove 952 666 aline 904 666 aline 809 761 aline 714 809 aline 571 809 aline 476 761 aline 428 666 aline 428 571 amove 380 619 aline 380 571 aline 523 285 aline 523 238 amove 523 476 aline 952 666 amove 1047 761 aline 1000 857 aline 904 952 aline 761 1000 aline 619 1000 aline 476 952 aline 380 857 aline 333 761 aline 333 619 aline 380 476 aline 523 190 aline 523 95 aline 428 0 amove 238 47 aline 142 238 aline 142 142 aline 95 95 aline 190 95 aline 238 47 aline 238 142 aline 285 190 aline 190 190 aline 142 238 stroke dfont endchar dfont char=76 amove 142 95 aline 285 190 aline 380 285 aline 428 380 aline 428 476 aline 380 571 aline 285 714 aline 238 809 aline 238 904 amove 238 761 aline 238 714 aline 380 476 aline 380 428 amove 333 238 aline 380 333 aline 380 380 aline 333 476 aline 238 619 aline 190 714 aline 190 809 aline 238 904 aline 285 952 aline 428 1000 aline 666 1000 aline 809 952 aline 857 904 aline 904 809 aline 904 714 aline 857 619 aline 761 523 aline 714 428 aline 714 380 aline 761 333 amove 904 380 aline 857 333 aline 714 333 aline 666 380 aline 666 476 aline 714 571 aline 809 714 aline 857 809 aline 857 904 amove 857 761 aline 857 714 aline 714 523 aline 714 476 amove 952 190 aline 904 95 aline 857 47 aline 714 0 aline 619 0 aline 476 47 aline 285 142 aline 238 142 aline 142 95 amove 285 190 aline 380 190 aline 523 95 aline 666 47 aline 809 47 aline 904 95 amove 619 47 aline 571 47 aline 380 142 aline 333 142 stroke dfont endchar dfont char=77 amove 190 0 aline 333 142 aline 380 142 aline 428 95 aline 476 142 aline 523 238 aline 571 428 aline 571 761 aline 523 904 aline 428 1000 amove 333 1000 aline 238 904 aline 238 809 aline 333 666 aline 380 571 aline 380 428 aline 285 380 aline 190 380 aline 142 428 aline 142 476 amove 285 380 aline 333 428 aline 333 523 aline 238 666 aline 190 761 aline 190 857 aline 238 952 aline 333 1000 aline 428 1000 aline 523 952 aline 619 857 aline 666 714 aline 666 428 aline 619 285 aline 571 190 aline 476 95 aline 333 0 aline 285 47 aline 238 47 amove 285 95 aline 333 95 aline 380 47 amove 571 0 aline 714 142 aline 761 142 aline 809 95 aline 857 190 aline 904 380 aline 904 761 aline 857 904 aline 761 1000 amove 904 904 aline 952 952 aline 1047 1000 aline 1142 1000 aline 1238 952 aline 1285 904 aline 1333 809 aline 1380 761 aline 1285 761 aline 1238 809 aline 1190 952 aline 1142 1000 amove 1238 904 aline 1285 809 amove 1380 761 aline 1238 666 aline 1190 619 aline 1142 476 aline 1142 333 aline 1190 142 aline 1285 0 aline 1428 142 amove 1380 95 aline 1285 190 aline 1238 380 aline 1238 571 aline 1285 666 aline 1380 761 amove 1238 619 aline 1190 523 aline 1190 333 aline 1238 190 aline 1333 47 amove 904 238 aline 952 428 aline 952 714 aline 904 857 amove 571 857 aline 619 714 aline 619 428 aline 571 285 aline 523 190 amove 619 47 aline 666 47 aline 714 0 aline 809 95 aline 904 190 aline 952 285 aline 1000 428 aline 1000 714 aline 952 857 aline 857 952 aline 761 1000 aline 666 1000 aline 571 952 amove 238 761 aline 333 571 amove 666 95 aline 714 95 aline 761 47 stroke dfont endchar dfont char=78 amove 142 0 aline 238 47 aline 333 47 aline 380 0 aline 523 95 aline 619 190 aline 666 285 aline 714 428 aline 714 714 aline 666 857 aline 571 952 aline 476 1000 aline 333 1000 aline 238 952 aline 190 857 aline 190 761 aline 238 666 aline 333 523 aline 333 428 aline 285 380 amove 142 476 aline 142 428 aline 190 380 aline 285 380 aline 380 428 aline 380 571 aline 333 666 aline 238 809 aline 238 904 aline 333 1000 amove 476 1000 aline 571 904 aline 619 761 aline 619 428 aline 571 238 aline 476 95 aline 380 142 aline 285 142 aline 142 0 amove 238 95 aline 333 95 aline 428 47 amove 523 142 aline 571 190 aline 619 285 aline 666 428 aline 666 761 aline 619 857 amove 666 904 aline 714 952 aline 809 1000 aline 904 1000 aline 1000 952 aline 1047 904 aline 1095 809 aline 1142 761 aline 1047 761 aline 1000 809 aline 952 952 aline 904 1000 amove 1000 904 aline 1047 809 amove 1142 761 aline 1000 666 aline 952 619 aline 904 476 aline 904 333 aline 952 142 aline 1047 0 aline 1190 142 amove 1142 95 aline 1047 190 aline 1000 380 aline 1000 571 aline 1047 666 aline 1142 761 amove 1000 619 aline 952 523 aline 952 333 aline 1000 190 aline 1095 47 amove 333 571 aline 238 761 stroke dfont endchar dfont char=79 amove 142 142 aline 190 190 aline 238 190 aline 523 47 aline 666 0 aline 809 0 aline 952 47 aline 1047 142 aline 1095 238 aline 1142 380 aline 1142 523 aline 1095 666 aline 1047 761 aline 904 857 aline 619 952 aline 571 1000 aline 476 952 aline 380 857 aline 333 761 aline 333 666 aline 428 476 aline 428 380 amove 428 523 aline 428 571 aline 380 666 aline 380 714 amove 380 857 aline 380 761 aline 476 571 aline 476 476 aline 428 380 aline 380 333 aline 285 333 aline 238 380 aline 238 428 amove 285 190 aline 333 190 aline 619 47 aline 714 47 amove 1000 95 aline 904 47 aline 761 47 aline 619 95 aline 428 190 aline 285 238 aline 190 238 aline 142 142 aline 142 47 aline 190 0 aline 238 47 aline 190 95 amove 571 952 aline 619 904 aline 904 809 aline 1000 761 aline 1047 714 amove 1142 523 aline 1095 619 aline 1000 714 aline 904 761 aline 619 857 aline 571 904 aline 571 1000 stroke dfont endchar dfont char=80 amove 380 -96 aline 428 -48 aline 380 0 aline 333 -48 aline 333 -143 aline 380 -191 aline 523 -191 aline 619 -143 aline 666 -48 aline 666 190 aline 714 142 aline 809 0 aline 952 142 aline 1047 285 aline 1095 428 aline 1095 571 aline 1047 761 aline 1000 857 aline 904 1000 aline 666 809 amove 571 904 aline 619 809 aline 619 -48 aline 571 -143 amove 476 -191 aline 523 -143 aline 571 -48 aline 571 190 aline 476 190 aline 380 142 aline 476 238 aline 571 285 aline 571 809 aline 523 952 aline 476 1000 amove 333 1000 aline 238 904 aline 238 809 aline 333 666 aline 380 571 aline 380 428 aline 285 380 aline 190 380 aline 142 428 aline 142 476 amove 285 380 aline 333 428 aline 333 523 aline 238 666 aline 190 761 aline 190 857 aline 238 952 aline 333 1000 aline 476 1000 aline 571 952 aline 619 904 aline 666 809 aline 666 285 aline 761 238 aline 857 95 amove 857 47 aline 761 190 aline 666 238 aline 523 238 amove 333 571 aline 238 761 amove 809 904 aline 904 809 aline 1000 666 aline 1047 523 aline 1047 380 aline 1000 238 aline 952 142 amove 1047 571 aline 1047 619 aline 1000 761 aline 857 952 stroke dfont endchar dfont char=81 amove 142 142 aline 190 190 aline 238 190 aline 523 47 aline 666 0 aline 809 0 aline 952 47 aline 761 47 aline 619 95 aline 428 190 aline 285 238 aline 190 238 aline 142 142 aline 142 47 aline 190 0 aline 238 47 aline 190 95 amove 285 190 aline 333 190 aline 619 47 aline 714 47 amove 761 142 aline 857 238 aline 952 238 aline 1142 47 aline 1190 47 amove 1238 95 aline 1142 0 aline 1047 0 aline 857 190 aline 809 190 amove 904 190 aline 952 190 aline 1095 47 amove 1047 142 aline 1095 238 aline 1142 380 aline 1142 523 aline 1095 666 aline 1047 761 aline 904 857 aline 619 952 aline 571 1000 aline 476 952 aline 380 857 aline 333 761 aline 333 666 aline 428 476 aline 428 380 amove 428 523 aline 428 571 aline 380 666 aline 380 714 amove 380 857 aline 380 761 aline 476 571 aline 476 476 aline 428 380 aline 380 333 aline 285 333 aline 238 380 aline 238 428 amove 571 952 aline 619 904 aline 904 809 aline 1000 761 aline 1047 714 amove 1142 523 aline 1095 619 aline 1000 714 aline 904 761 aline 619 857 aline 571 904 aline 571 1000 stroke dfont endchar dfont char=82 amove 95 95 aline 285 190 amove 238 47 aline 333 0 aline 428 0 aline 523 47 aline 619 142 aline 666 238 aline 666 809 aline 619 904 aline 571 952 aline 476 1000 aline 333 1000 aline 238 952 aline 190 857 aline 190 761 aline 238 666 aline 333 523 aline 333 428 aline 285 380 amove 142 476 aline 142 428 aline 190 380 aline 285 380 aline 380 428 aline 380 571 aline 333 666 aline 238 809 aline 238 904 aline 333 1000 amove 476 1000 aline 523 952 aline 571 809 aline 571 238 aline 523 95 aline 428 0 amove 238 47 aline 142 238 aline 142 142 aline 95 95 aline 190 95 aline 238 47 aline 238 142 aline 285 190 aline 190 190 aline 142 238 amove 333 571 aline 238 761 amove 571 904 aline 619 809 aline 619 238 aline 571 142 amove 666 523 aline 1142 761 aline 1095 809 aline 1047 904 aline 1000 952 aline 904 1000 aline 809 1000 aline 714 952 aline 666 857 amove 904 1000 aline 952 952 aline 1000 809 aline 1047 761 aline 1142 761 amove 1047 809 aline 1000 904 amove 857 619 aline 1047 142 aline 1095 95 aline 1142 95 amove 1190 142 aline 1047 -1 aline 952 95 aline 761 571 amove 809 571 aline 1000 142 aline 1095 47 stroke dfont endchar dfont char=83 amove 190 285 aline 285 190 aline 380 142 aline 523 95 aline 761 95 aline 952 142 aline 1047 190 aline 1095 238 aline 1142 333 amove 1142 476 aline 1047 571 aline 952 571 aline 857 523 aline 761 380 aline 666 333 aline 571 333 aline 476 380 aline 428 476 aline 428 571 aline 476 666 aline 571 714 amove 333 904 aline 476 952 aline 666 952 aline 809 904 aline 952 809 amove 1095 904 aline 1047 952 aline 1095 1000 aline 1142 952 aline 1142 857 aline 1095 761 aline 1000 761 aline 809 857 aline 666 904 aline 476 904 aline 285 857 aline 190 761 amove 476 380 aline 571 380 aline 666 428 aline 761 571 aline 857 619 aline 1000 619 aline 1095 571 aline 1142 476 aline 1142 333 aline 1095 190 aline 1000 95 aline 904 47 aline 761 0 aline 571 0 aline 428 47 aline 333 95 aline 238 190 aline 190 285 aline 142 428 aline 142 619 aline 190 761 aline 238 857 aline 333 952 aline 476 1000 aline 666 1000 aline 809 952 aline 1000 809 aline 1095 809 aline 1142 857 amove 904 571 aline 857 571 aline 666 380 aline 619 380 amove 333 142 aline 428 95 aline 571 47 aline 761 47 aline 952 95 stroke dfont endchar dfont char=84 amove 142 142 aline 190 190 aline 238 190 aline 333 142 aline 523 47 aline 666 0 aline 809 0 aline 952 47 aline 1047 142 amove 1000 95 aline 904 47 aline 761 47 aline 619 95 aline 428 190 aline 285 238 aline 190 238 aline 142 142 aline 142 47 aline 190 0 aline 238 47 aline 190 95 amove 285 190 aline 333 190 aline 619 47 aline 714 47 amove 619 238 aline 619 333 aline 523 523 aline 523 619 aline 571 714 aline 714 857 amove 857 809 aline 714 904 aline 571 952 aline 285 952 aline 190 904 amove 142 761 aline 190 857 aline 285 904 aline 571 904 aline 714 857 aline 904 761 aline 1000 761 aline 1047 857 aline 1047 952 aline 1000 1000 aline 952 952 aline 1000 904 amove 1047 857 aline 1000 809 aline 904 809 aline 714 952 aline 571 1000 aline 333 1000 aline 190 952 aline 142 857 aline 142 761 aline 190 666 aline 285 619 amove 571 571 aline 571 523 aline 619 428 aline 619 380 amove 428 333 aline 428 238 aline 476 190 aline 571 190 aline 619 238 aline 666 333 aline 666 428 aline 571 619 aline 571 714 stroke dfont endchar dfont char=85 amove 142 142 aline 238 190 aline 238 857 aline 190 904 aline 142 904 amove 190 952 aline 285 904 aline 285 142 aline 428 47 amove 523 95 aline 428 95 aline 333 190 aline 333 904 aline 238 999 aline 95 857 amove 571 857 aline 714 999 aline 857 904 aline 809 857 aline 809 142 aline 857 95 aline 904 95 amove 952 142 aline 809 0 aline 714 95 aline 714 857 aline 666 904 aline 619 904 amove 666 952 aline 761 904 aline 761 95 aline 857 47 amove 714 238 aline 523 95 aline 380 0 aline 285 95 aline 190 142 aline 142 142 stroke dfont endchar dfont char=86 amove 190 142 aline 238 190 aline 285 190 aline 571 47 aline 714 0 aline 904 0 aline 1000 47 aline 1095 142 aline 1142 238 aline 1142 428 aline 1095 523 aline 952 619 aline 904 666 amove 952 571 aline 1095 476 amove 1142 333 aline 1095 428 aline 952 523 aline 904 619 aline 904 714 aline 952 761 aline 1047 761 amove 1047 809 aline 1000 904 amove 904 1000 aline 952 952 aline 1000 809 aline 1047 761 aline 1142 761 aline 1095 809 aline 1000 952 aline 904 1000 aline 809 1000 aline 714 952 aline 666 857 amove 571 904 aline 619 809 aline 619 333 amove 523 190 aline 619 285 aline 666 428 aline 666 809 aline 619 904 aline 571 952 aline 476 1000 aline 333 1000 aline 238 952 aline 190 857 aline 190 761 aline 238 666 aline 333 523 aline 333 428 aline 285 380 amove 142 476 aline 142 428 aline 190 380 aline 285 380 aline 380 428 aline 380 571 aline 333 666 aline 238 809 aline 238 904 aline 333 1000 amove 476 1000 aline 523 952 aline 571 809 aline 571 285 aline 523 190 amove 333 190 aline 380 190 aline 666 47 aline 761 47 amove 1047 95 aline 952 47 aline 809 47 aline 666 95 aline 476 190 aline 333 238 aline 238 238 aline 190 142 aline 190 47 aline 238 0 aline 285 47 aline 238 95 amove 333 571 aline 238 761 stroke dfont endchar dfont char=87 amove 190 142 aline 238 190 aline 333 190 aline 428 142 aline 523 47 aline 619 0 aline 809 0 aline 904 47 aline 1000 142 aline 1047 238 aline 1047 333 aline 1000 476 aline 904 619 aline 857 714 aline 857 857 aline 904 952 aline 1000 1000 aline 857 952 aline 809 857 aline 809 666 aline 857 523 aline 952 380 aline 1000 285 aline 1000 190 aline 952 95 aline 1047 47 aline 1095 47 amove 1000 142 aline 1047 95 aline 1142 47 aline 1238 47 aline 1333 95 amove 1380 333 aline 1333 428 aline 1190 523 aline 1142 619 aline 1142 714 aline 1190 761 aline 1285 761 amove 1285 809 aline 1238 904 amove 1142 999 aline 1190 952 aline 1238 809 aline 1285 761 aline 1380 761 aline 1333 809 aline 1238 952 aline 1142 999 aline 1000 999 amove 904 952 aline 809 999 aline 666 999 aline 571 952 amove 571 904 aline 619 809 aline 619 571 aline 571 428 amove 428 238 aline 523 333 aline 619 476 aline 666 619 aline 666 809 aline 619 904 aline 571 952 aline 476 1000 aline 333 1000 aline 238 952 aline 190 857 aline 190 761 aline 238 666 aline 333 523 aline 333 428 aline 285 380 amove 142 476 aline 142 428 aline 190 380 aline 285 380 aline 380 428 aline 380 571 aline 333 666 aline 238 809 aline 238 904 aline 333 1000 amove 476 1000 aline 523 952 aline 571 809 aline 571 571 aline 523 380 aline 428 238 amove 380 190 aline 428 190 aline 571 47 amove 714 0 aline 619 47 aline 476 190 aline 380 238 aline 238 238 aline 190 142 aline 190 47 aline 238 0 aline 285 47 aline 238 95 amove 333 571 aline 238 761 amove 857 666 aline 857 619 aline 1000 380 aline 1000 333 amove 904 47 aline 1047 0 aline 1190 0 aline 1285 47 aline 1333 95 aline 1380 190 aline 1380 428 aline 1333 523 aline 1190 619 aline 1142 666 amove 1190 571 aline 1333 476 stroke dfont endchar dfont char=88 amove 142 0 aline 238 47 aline 333 0 aline 476 142 aline 523 285 aline 523 476 aline 333 476 aline 238 380 aline 333 571 aline 523 571 aline 523 666 aline 476 809 aline 428 857 aline 333 904 aline 238 904 amove 333 952 aline 476 904 aline 523 857 aline 571 714 aline 571 285 aline 619 190 aline 714 95 aline 809 47 amove 904 95 aline 809 95 aline 714 142 aline 666 190 aline 619 333 aline 619 476 aline 809 476 aline 904 666 aline 809 571 aline 619 571 aline 619 714 aline 571 857 aline 476 952 aline 380 1000 aline 142 857 amove 333 523 aline 809 523 amove 619 714 aline 666 857 aline 809 1000 aline 904 952 aline 1000 1000 aline 857 857 aline 761 904 aline 714 904 amove 761 952 aline 857 904 aline 904 904 amove 523 285 aline 571 142 aline 666 47 aline 761 0 aline 1000 142 amove 428 95 aline 380 95 aline 285 142 aline 142 0 amove 238 95 aline 285 95 aline 380 47 stroke dfont endchar dfont char=89 amove 285 0 aline 333 47 aline 285 95 aline 238 47 aline 285 -48 aline 380 -143 aline 523 -191 aline 714 -191 aline 857 -143 aline 952 -48 aline 1000 47 aline 1047 238 aline 1047 1000 aline 666 809 amove 571 904 aline 619 809 aline 619 523 aline 571 380 aline 523 285 aline 666 142 amove 714 190 aline 666 190 aline 571 285 aline 571 333 aline 619 428 aline 666 571 aline 666 809 aline 619 904 aline 571 952 aline 476 1000 aline 333 1000 aline 238 952 aline 190 857 aline 190 761 aline 238 666 aline 333 523 aline 333 428 aline 285 380 amove 142 476 aline 142 428 aline 190 380 aline 285 380 aline 380 428 aline 380 571 aline 333 666 aline 238 809 aline 238 904 aline 333 1000 amove 476 1000 aline 523 952 aline 571 809 aline 571 523 aline 523 333 aline 476 238 aline 619 95 aline 761 238 amove 952 0 aline 1000 142 aline 1000 952 amove 952 952 aline 952 47 aline 904 -96 amove 333 571 aline 238 761 stroke dfont endchar dfont char=90 amove 190 95 aline 238 47 aline 380 -143 aline 476 -191 aline 666 -191 aline 809 -143 aline 904 -48 aline 952 47 aline 952 238 aline 904 333 aline 809 428 aline 666 476 aline 523 476 aline 428 428 aline 380 380 aline 333 285 amove 238 95 aline 285 47 aline 380 -96 aline 428 -143 amove 571 -191 aline 476 -143 aline 428 -96 aline 333 47 aline 285 95 aline 142 95 aline 95 47 aline 95 -48 aline 142 -96 aline 190 -96 amove 666 -191 aline 761 -143 aline 809 -96 aline 857 -1 aline 857 285 aline 809 380 aline 666 476 aline 761 523 aline 809 571 aline 857 666 aline 857 809 aline 809 904 aline 761 952 aline 666 1000 aline 523 1000 aline 428 952 aline 380 857 amove 380 619 aline 428 523 aline 523 476 amove 666 476 aline 714 523 aline 761 619 aline 761 857 aline 714 952 aline 666 1000 amove 761 904 aline 809 857 aline 809 619 aline 761 571 amove 857 333 aline 904 238 aline 904 47 aline 857 -48 stroke dfont endchar dfont char=91 amove 190 -334 aline 190 1190 aline 523 1190 amove 238 1190 aline 238 -334 amove 190 -334 aline 523 -334 stroke dfont endchar stroke dfont endchar dfont char=93 amove 142 -334 aline 476 -334 aline 476 1190 aline 142 1190 amove 428 1190 aline 428 -334 stroke dfont endchar stroke dfont endchar stroke dfont endchar dfont char=96 amove 238 904 aline 285 952 aline 238 1000 aline 190 952 aline 190 857 aline 238 761 aline 285 714 stroke dfont endchar dfont char=97 amove 285 47 aline 238 95 aline 190 238 amove 333 47 aline 238 142 aline 190 285 aline 190 380 aline 238 523 aline 333 619 amove 380 619 aline 428 571 aline 523 523 aline 523 95 aline 619 -1 aline 761 142 amove 714 95 aline 666 95 aline 619 142 aline 619 523 aline 666 571 aline 619 571 aline 523 619 aline 476 666 aline 333 619 aline 238 571 aline 190 523 aline 142 380 aline 142 238 aline 190 95 aline 238 -1 aline 523 142 amove 666 47 aline 571 142 aline 571 523 aline 428 619 stroke dfont endchar dfont char=98 amove 142 95 aline 190 142 aline 190 761 aline 238 857 aline 333 952 aline 476 1000 aline 380 952 aline 333 904 aline 285 761 aline 285 142 aline 380 95 aline 428 47 amove 476 47 aline 333 0 aline 285 47 aline 190 95 aline 142 95 amove 380 47 aline 238 142 aline 238 761 aline 285 857 amove 190 761 aline 142 857 aline 95 904 amove 285 523 aline 571 666 aline 619 571 aline 666 428 aline 666 285 aline 619 142 aline 571 95 aline 476 47 aline 571 142 aline 619 285 aline 619 380 aline 571 523 aline 476 619 amove 523 619 aline 571 571 aline 619 476 stroke dfont endchar dfont char=99 amove 285 47 aline 238 95 aline 190 190 aline 190 428 aline 238 523 amove 285 571 aline 238 476 aline 238 238 aline 285 142 aline 380 47 amove 476 95 aline 285 0 aline 190 95 aline 142 190 aline 142 428 aline 190 523 aline 333 619 aline 428 666 aline 523 571 aline 428 523 aline 333 619 amove 380 619 aline 476 571 stroke dfont endchar dfont char=100 amove 142 95 aline 190 95 aline 285 47 aline 333 0 aline 476 47 aline 619 142 aline 666 285 aline 666 428 aline 619 571 aline 523 666 aline 285 809 aline 238 857 aline 238 904 amove 238 809 aline 238 761 aline 428 666 aline 571 571 aline 619 523 amove 380 619 aline 190 523 aline 190 142 aline 142 95 amove 380 47 aline 238 142 aline 238 523 amove 285 571 aline 285 142 aline 380 95 aline 428 47 amove 476 47 aline 571 142 aline 619 285 aline 619 428 aline 571 523 aline 428 619 aline 238 714 aline 190 761 aline 190 857 aline 333 1000 stroke dfont endchar dfont char=101 amove 285 47 aline 238 95 aline 190 190 aline 190 428 aline 238 523 amove 333 619 aline 476 476 amove 428 428 aline 333 571 aline 285 571 aline 238 476 aline 238 238 aline 285 142 aline 380 47 amove 476 95 aline 285 0 aline 190 95 aline 142 190 aline 142 428 aline 190 523 aline 380 666 aline 523 476 aline 238 285 stroke dfont endchar dfont char=102 amove 238 0 aline 238 619 aline 190 571 aline 333 571 amove 285 523 aline 285 333 aline 238 -239 aline 190 333 aline 190 523 aline 95 523 aline 142 571 aline 190 666 aline 190 904 aline 238 1000 aline 333 1000 aline 428 952 aline 523 952 aline 571 1000 aline 523 904 aline 476 857 aline 380 857 aline 285 904 aline 238 904 aline 190 857 amove 190 761 aline 238 666 aline 285 619 aline 380 571 aline 476 571 aline 476 523 aline 285 523 amove 476 904 aline 380 904 aline 285 952 aline 238 952 stroke dfont endchar dfont char=103 amove 190 -143 aline 190 -96 aline 142 -96 aline 142 -143 aline 190 -191 aline 285 -239 aline 428 -239 aline 523 -191 aline 571 -143 aline 619 -48 aline 619 523 aline 666 571 aline 619 571 aline 523 619 aline 476 666 aline 333 619 aline 238 571 aline 190 523 aline 142 380 aline 142 238 aline 190 95 aline 238 -1 aline 523 142 amove 571 47 aline 571 523 aline 428 619 amove 380 619 aline 428 571 aline 523 523 aline 523 142 aline 571 -1 aline 571 -96 aline 523 -191 amove 333 47 aline 238 142 aline 190 285 aline 190 380 aline 238 523 aline 333 619 amove 190 190 aline 238 95 aline 285 47 stroke dfont endchar dfont char=104 amove 142 95 aline 190 142 aline 190 761 aline 238 857 aline 333 952 aline 476 1000 aline 380 952 aline 333 904 aline 285 761 aline 285 142 aline 333 95 aline 380 95 amove 428 142 aline 285 0 aline 238 47 aline 142 95 amove 285 47 aline 238 95 aline 238 761 aline 285 857 amove 190 761 aline 142 857 aline 95 904 amove 285 523 aline 571 666 aline 619 571 aline 666 380 aline 666 190 aline 619 47 aline 571 -48 aline 476 -143 aline 333 -239 amove 476 -143 aline 571 0 aline 619 190 aline 619 333 aline 571 476 aline 476 619 amove 523 619 aline 571 571 aline 619 428 stroke dfont endchar dfont char=105 amove 333 47 aline 238 142 aline 238 571 aline 142 619 amove 95 571 aline 142 571 aline 190 523 aline 190 95 aline 285 -1 aline 428 142 amove 380 95 aline 333 95 aline 285 142 aline 285 523 aline 333 571 aline 238 619 aline 190 666 aline 47 523 amove 190 904 aline 285 952 amove 285 904 aline 190 952 amove 238 1000 aline 190 952 aline 190 904 aline 238 857 aline 285 904 aline 285 952 aline 238 1000 stroke dfont endchar dfont char=106 amove 190 -96 aline 238 0 aline 238 571 aline 142 619 amove 95 571 aline 142 571 aline 190 523 aline 190 0 aline 142 -143 aline 95 -191 aline 0 -239 aline 142 -191 aline 238 -96 aline 285 -1 aline 285 523 aline 333 571 aline 238 619 aline 190 666 aline 47 523 amove 190 904 aline 285 952 amove 285 904 aline 190 952 amove 238 1000 aline 190 952 aline 190 904 aline 238 857 aline 285 904 aline 285 952 aline 238 1000 amove 285 0 aline 333 -96 aline 380 -143 stroke dfont endchar dfont char=107 amove 190 95 aline 285 47 aline 333 0 aline 476 142 amove 428 95 aline 380 95 aline 333 142 aline 333 523 aline 571 523 aline 571 571 aline 333 571 aline 333 761 aline 380 904 aline 476 1000 aline 380 952 aline 285 857 aline 238 761 aline 238 666 aline 190 571 aline 142 523 aline 238 523 aline 238 142 aline 190 95 amove 380 47 aline 285 142 aline 285 666 aline 238 571 aline 285 571 amove 285 666 aline 285 761 aline 333 857 amove 238 761 aline 190 857 aline 142 904 amove 333 714 aline 523 857 aline 571 809 aline 571 714 aline 476 619 aline 380 571 amove 476 619 aline 523 714 aline 523 761 aline 476 809 stroke dfont endchar dfont char=108 amove 142 95 aline 190 142 aline 190 761 aline 238 857 aline 333 952 aline 476 1000 aline 380 952 aline 333 904 aline 285 761 aline 285 142 aline 333 95 aline 380 95 amove 428 142 aline 285 0 aline 238 47 aline 142 95 amove 333 47 aline 238 95 aline 238 761 aline 285 857 amove 190 761 aline 142 857 aline 95 904 stroke dfont endchar dfont char=109 amove 238 0 aline 142 95 aline 190 142 aline 190 523 aline 142 571 aline 95 571 amove 47 523 aline 190 666 aline 285 571 aline 285 142 aline 333 95 aline 238 0 amove 238 142 aline 285 95 aline 238 47 aline 190 95 aline 238 142 aline 238 523 aline 142 619 amove 285 523 aline 428 619 aline 523 666 aline 619 619 aline 666 523 aline 666 142 aline 714 95 aline 619 0 aline 523 95 aline 571 142 aline 571 476 aline 523 571 aline 428 619 amove 523 619 aline 571 571 aline 619 476 aline 619 142 aline 571 95 aline 619 47 aline 666 95 aline 619 142 amove 666 523 aline 809 619 aline 904 666 aline 952 619 aline 1047 571 aline 1095 571 aline 1047 523 aline 1047 142 aline 1095 95 aline 1142 95 amove 1190 142 aline 1047 0 aline 952 95 aline 952 523 aline 857 571 aline 809 619 amove 857 619 aline 1000 523 aline 1000 142 aline 1095 47 stroke dfont endchar dfont char=110 amove 238 0 aline 142 95 aline 190 142 aline 190 523 aline 142 571 aline 95 571 amove 47 523 aline 190 666 aline 285 571 aline 285 142 aline 333 95 aline 238 0 amove 238 142 aline 285 95 aline 238 47 aline 190 95 aline 238 142 aline 238 523 aline 142 619 amove 285 523 aline 428 619 aline 523 666 aline 571 619 aline 666 571 aline 714 571 aline 666 523 aline 666 142 aline 714 95 aline 761 95 amove 809 142 aline 666 0 aline 571 95 aline 571 523 aline 476 571 aline 428 619 amove 476 619 aline 619 523 aline 619 142 aline 714 47 stroke dfont endchar dfont char=111 amove 142 95 aline 190 142 aline 190 523 aline 333 571 aline 571 666 aline 619 571 aline 666 428 aline 666 285 aline 619 142 aline 571 95 aline 476 47 aline 333 0 aline 285 47 aline 190 95 aline 142 95 amove 380 47 aline 238 142 aline 238 523 amove 333 571 aline 285 523 aline 285 142 aline 380 95 aline 428 47 amove 476 47 aline 571 142 aline 619 285 aline 619 380 aline 571 523 aline 476 619 amove 523 619 aline 571 571 aline 619 476 stroke dfont endchar dfont char=112 amove 95 47 aline 190 142 aline 190 476 aline 142 619 aline 142 714 aline 238 809 amove 190 761 aline 190 714 aline 238 619 aline 285 476 aline 285 142 aline 333 142 aline 428 95 aline 476 47 aline 380 0 aline 285 95 aline 238 -239 aline 190 95 aline 95 47 amove 238 0 aline 238 476 aline 190 619 aline 190 666 amove 285 523 aline 571 666 aline 619 571 aline 666 428 aline 666 285 aline 619 142 aline 571 95 aline 476 47 aline 571 142 aline 619 285 aline 619 380 aline 571 523 aline 476 619 amove 523 619 aline 571 571 aline 619 476 amove 428 47 aline 333 95 stroke dfont endchar dfont char=113 amove 190 190 aline 238 95 aline 285 47 amove 333 47 aline 238 142 aline 190 285 aline 190 380 aline 238 523 aline 333 619 amove 380 619 aline 428 571 aline 523 523 aline 523 142 aline 571 -239 aline 619 142 aline 619 523 aline 666 571 aline 619 571 aline 523 619 aline 476 666 aline 333 619 aline 238 571 aline 190 523 aline 142 380 aline 142 238 aline 190 95 aline 238 -1 aline 523 142 amove 571 -1 aline 571 523 aline 428 619 stroke dfont endchar dfont char=114 amove 190 95 aline 238 142 aline 238 523 aline 190 571 aline 142 571 amove 190 619 aline 285 523 aline 285 95 aline 380 47 amove 428 95 aline 380 95 aline 333 142 aline 333 571 aline 238 666 aline 95 523 amove 333 571 aline 523 666 aline 571 571 aline 476 523 aline 428 619 amove 476 619 aline 523 571 amove 476 142 aline 333 0 aline 285 47 aline 190 95 stroke dfont endchar dfont char=115 amove 238 0 aline 238 619 aline 190 571 aline 238 571 amove 190 523 aline 95 523 aline 142 571 aline 190 666 aline 190 904 aline 238 1000 aline 333 1000 aline 428 952 aline 523 952 aline 571 1000 aline 523 904 aline 476 857 aline 380 857 aline 285 904 aline 238 904 aline 190 857 amove 190 761 aline 285 523 aline 285 333 aline 238 -239 aline 190 333 aline 190 523 amove 238 952 aline 285 952 aline 380 904 aline 476 904 stroke dfont endchar dfont char=116 amove 190 95 aline 238 142 aline 238 523 aline 95 523 aline 190 571 aline 238 619 aline 285 714 aline 333 857 aline 333 571 aline 476 571 aline 476 523 aline 333 523 aline 333 142 aline 380 95 aline 428 95 amove 476 142 aline 333 0 aline 285 47 aline 190 95 amove 380 47 aline 285 142 aline 285 666 aline 238 571 aline 285 571 stroke dfont endchar dfont char=117 amove 142 95 aline 190 142 aline 190 523 aline 142 571 aline 95 571 amove 142 619 aline 238 523 aline 238 142 aline 333 47 amove 428 47 aline 380 95 aline 285 142 aline 285 571 aline 190 666 aline 47 523 amove 142 95 aline 190 95 aline 285 47 aline 333 0 aline 428 47 aline 571 142 amove 714 47 aline 619 142 aline 619 523 aline 571 571 aline 619 619 aline 666 571 aline 619 523 amove 619 666 aline 523 571 aline 571 523 aline 571 95 aline 666 0 aline 809 142 amove 761 95 aline 714 95 aline 666 142 aline 666 523 aline 714 571 aline 619 666 stroke dfont endchar dfont char=118 amove 142 95 aline 190 142 aline 190 428 aline 142 571 aline 142 666 aline 238 761 amove 190 714 aline 190 666 aline 238 571 aline 285 428 aline 285 142 aline 380 95 aline 428 47 amove 476 47 aline 333 0 aline 285 47 aline 190 95 aline 142 95 amove 380 47 aline 238 142 aline 238 428 aline 190 571 aline 190 619 amove 285 523 aline 571 666 aline 619 571 aline 666 428 aline 666 285 aline 619 142 aline 571 95 aline 476 47 aline 571 142 aline 619 285 aline 619 380 aline 571 523 aline 476 619 amove 523 619 aline 571 571 aline 619 476 stroke dfont endchar dfont char=119 amove 238 0 aline 142 95 aline 190 142 aline 190 428 aline 142 571 aline 142 666 aline 238 761 amove 190 714 aline 190 666 aline 238 571 aline 285 428 aline 285 142 aline 333 95 aline 238 0 amove 238 142 aline 285 95 aline 238 47 aline 190 95 aline 238 142 aline 238 428 aline 190 571 aline 190 619 amove 285 523 aline 428 619 aline 523 666 aline 619 619 aline 666 523 aline 666 142 aline 761 95 aline 809 47 amove 857 47 aline 714 0 aline 666 47 aline 571 95 aline 523 95 aline 571 142 aline 571 476 aline 523 571 aline 428 619 amove 523 619 aline 571 571 aline 619 476 aline 619 142 aline 761 47 amove 857 47 aline 952 95 aline 1000 142 aline 1047 333 aline 1047 428 aline 1000 571 aline 952 666 aline 666 523 amove 857 619 aline 952 523 aline 1000 380 aline 1000 285 aline 952 142 aline 857 47 amove 1000 476 aline 952 571 aline 904 619 stroke dfont endchar dfont char=120 amove 95 0 aline 190 95 aline 285 95 aline 380 47 aline 428 0 aline 619 95 amove 523 47 aline 476 95 aline 380 142 aline 380 571 aline 285 666 aline 142 523 amove 190 571 aline 238 571 aline 285 523 aline 285 142 aline 238 142 aline 142 95 aline 95 -1 aline 95 -96 aline 142 -191 aline 238 -239 aline 380 -239 aline 523 -191 aline 523 -143 aline 476 -143 aline 476 -191 amove 476 47 aline 333 142 aline 333 523 aline 238 619 amove 380 571 aline 571 666 aline 619 571 aline 523 523 aline 476 619 amove 523 619 aline 571 571 stroke dfont endchar dfont char=121 amove 142 95 aline 190 142 aline 190 428 aline 142 571 aline 142 666 aline 238 761 amove 190 714 aline 190 666 aline 238 571 aline 285 428 aline 285 142 aline 333 95 aline 380 95 amove 428 142 aline 285 0 aline 238 47 aline 142 95 amove 333 47 aline 238 95 aline 238 428 aline 190 571 aline 190 619 amove 285 523 aline 571 666 aline 619 571 aline 666 380 aline 666 190 aline 619 47 aline 571 -48 aline 476 -143 aline 333 -239 amove 476 -143 aline 571 0 aline 619 190 aline 619 333 aline 571 476 aline 476 619 amove 523 619 aline 571 571 aline 619 428 stroke dfont endchar dfont char=122 amove 142 523 aline 380 666 aline 476 619 aline 523 523 aline 523 428 aline 476 333 aline 285 238 amove 380 619 aline 476 571 amove 333 619 aline 428 571 aline 476 476 aline 476 428 aline 428 333 aline 380 285 aline 476 190 aline 523 95 aline 523 -96 aline 476 -191 aline 380 -239 aline 285 -239 aline 190 -191 aline 142 -96 aline 142 -1 aline 190 95 aline 285 142 aline 571 238 amove 333 238 aline 428 190 aline 476 95 amove 285 238 aline 428 142 aline 476 47 aline 476 -96 aline 428 -191 aline 380 -239 stroke dfont endchar dfont char=123 amove 380 238 aline 333 95 aline 333 -96 aline 380 -239 amove 476 -334 aline 333 -191 aline 285 -48 aline 285 47 aline 333 190 aline 428 285 aline 428 333 aline 238 428 aline 428 523 aline 428 571 aline 333 666 aline 285 809 aline 285 904 aline 333 1047 aline 476 1190 amove 380 1095 aline 333 952 aline 333 761 aline 380 619 stroke dfont endchar dfont char=124 amove 380 428 aline 380 1000 aline 333 952 aline 428 476 aline 380 428 aline 333 476 aline 428 952 aline 380 1000 amove 142 857 aline 619 571 aline 571 571 aline 190 857 aline 142 857 aline 142 809 aline 619 619 aline 619 571 amove 619 857 aline 142 571 aline 190 571 aline 571 857 aline 619 857 aline 619 809 aline 142 619 aline 142 571 stroke dfont endchar dfont char=125 amove 238 -334 aline 380 -191 aline 428 -48 aline 428 47 aline 380 190 aline 285 285 aline 285 333 aline 476 428 aline 285 523 aline 285 571 aline 380 666 aline 428 809 aline 428 904 aline 380 1047 aline 238 1190 amove 333 1095 aline 380 952 aline 380 761 aline 333 619 amove 333 238 aline 380 95 aline 380 -96 aline 333 -239 stroke dfont endchar dfont char=126 amove 190 238 aline 333 47 amove 380 47 aline 190 285 amove 428 523 aline 142 238 aline 333 0 aline 619 285 amove 666 333 aline 952 619 aline 1000 571 aline 1047 571 aline 1095 619 aline 1047 523 aline 1000 476 aline 952 476 aline 904 523 amove 904 571 aline 952 523 aline 1047 523 amove 1095 142 aline 1047 47 aline 1000 0 aline 904 0 aline 809 47 aline 714 142 aline 523 428 aline 238 714 aline 476 1000 aline 666 761 aline 476 571 amove 619 714 aline 428 952 amove 476 952 aline 619 761 amove 285 761 aline 571 476 aline 761 190 aline 809 142 aline 904 95 aline 1047 95 aline 1095 142 amove 1047 47 aline 904 47 aline 809 95 aline 714 190 aline 523 476 aline 285 714 stroke dfont endchar gle-graphics-4.2.4c/src/fonts/pshcdo.afm0000664000000000000000000003632211676336540016637 0ustar rootrootStartFontMetrics 2.0 Comment Copyright (c) 1984 Adobe Systems Incorporated. All Rights Reserved. Comment Creation Date:Mon Mar 30 17:13:40 PST 1987 FontName Helvetica-Condensed-Oblique EncodingScheme AdobeStandardEncoding FullName Helvetica.Condensed Oblique FamilyName Helvetica Weight MediumCondensed ItalicAngle -12.0 IsFixedPitch false UnderlinePosition -90 UnderlineThickness 58 Version 001.001 Notice Helvetica is a trademark of Allied Corporation. FontBBox -174 -224 1118 990 CapHeight 750 XHeight 556 Descender -188 Ascender 750 StartCharMetrics 228 C 32 ; WX 250 ; N space ; B 0 0 0 0 ; C 33 ; WX 333 ; N exclam ; B 121 0 371 750 ; C 34 ; WX 250 ; N quotedbl ; B 153 513 364 739 ; C 35 ; WX 500 ; N numbersign ; B 33 0 621 750 ; C 36 ; WX 500 ; N dollar ; B 69 -116 569 815 ; C 37 ; WX 833 ; N percent ; B 164 -15 803 750 ; C 38 ; WX 667 ; N ampersand ; B 111 -18 648 750 ; C 39 ; WX 222 ; N quoteright ; B 171 504 317 750 ; C 40 ; WX 333 ; N parenleft ; B 116 -215 443 750 ; C 41 ; WX 333 ; N parenright ; B 3 -215 331 750 ; C 42 ; WX 500 ; N asterisk ; B 229 455 537 750 ; C 43 ; WX 500 ; N plus ; B 91 0 518 505 ; C 44 ; WX 250 ; N comma ; B 49 -146 192 100 ; C 45 ; WX 333 ; N hyphen ; B 103 275 364 358 ; C 46 ; WX 250 ; N period ; B 80 0 192 100 ; C 47 ; WX 278 ; N slash ; B -19 -27 450 750 ; C 48 ; WX 500 ; N zero ; B 98 -15 563 750 ; C 49 ; WX 500 ; N one ; B 190 0 476 750 ; C 50 ; WX 500 ; N two ; B 44 0 562 750 ; C 51 ; WX 500 ; N three ; B 73 -15 552 750 ; C 52 ; WX 500 ; N four ; B 68 0 543 750 ; C 53 ; WX 500 ; N five ; B 75 -15 575 735 ; C 54 ; WX 500 ; N six ; B 91 -15 566 750 ; C 55 ; WX 500 ; N seven ; B 116 0 612 735 ; C 56 ; WX 500 ; N eight ; B 83 -15 559 750 ; C 57 ; WX 500 ; N nine ; B 91 -15 566 750 ; C 58 ; WX 250 ; N colon ; B 80 0 287 547 ; C 59 ; WX 250 ; N semicolon ; B 49 -146 287 547 ; C 60 ; WX 500 ; N less ; B 89 -10 569 518 ; C 61 ; WX 500 ; N equal ; B 70 124 539 384 ; C 62 ; WX 500 ; N greater ; B 40 -10 520 518 ; C 63 ; WX 500 ; N question ; B 169 0 586 750 ; C 64 ; WX 800 ; N at ; B 106 -15 863 750 ; C 65 ; WX 556 ; N A ; B 11 0 546 750 ; C 66 ; WX 556 ; N B ; B 80 0 610 750 ; C 67 ; WX 556 ; N C ; B 106 -18 624 765 ; C 68 ; WX 611 ; N D ; B 82 0 653 750 ; C 69 ; WX 500 ; N E ; B 74 0 608 750 ; C 70 ; WX 444 ; N F ; B 74 0 585 750 ; C 71 ; WX 611 ; N G ; B 109 -18 646 765 ; C 72 ; WX 611 ; N H ; B 79 0 691 750 ; C 73 ; WX 278 ; N I ; B 98 0 340 750 ; C 74 ; WX 444 ; N J ; B 52 -15 527 750 ; C 75 ; WX 556 ; N K ; B 79 0 698 750 ; C 76 ; WX 500 ; N L ; B 83 0 488 750 ; C 77 ; WX 778 ; N M ; B 76 0 861 750 ; C 78 ; WX 611 ; N N ; B 77 0 693 750 ; C 79 ; WX 611 ; N O ; B 116 -18 658 765 ; C 80 ; WX 556 ; N P ; B 86 0 641 750 ; C 81 ; WX 611 ; N Q ; B 116 -34 659 765 ; C 82 ; WX 611 ; N R ; B 86 0 655 750 ; C 83 ; WX 556 ; N S ; B 86 -18 611 765 ; C 84 ; WX 500 ; N T ; B 158 0 645 750 ; C 85 ; WX 611 ; N U ; B 114 -18 690 750 ; C 86 ; WX 556 ; N V ; B 170 0 704 750 ; C 87 ; WX 833 ; N W ; B 176 0 975 750 ; C 88 ; WX 556 ; N X ; B 17 0 692 750 ; C 89 ; WX 556 ; N Y ; B 170 0 705 750 ; C 90 ; WX 500 ; N Z ; B 28 0 627 750 ; C 91 ; WX 333 ; N bracketleft ; B 56 -209 434 750 ; C 92 ; WX 250 ; N backslash ; B 128 0 281 750 ; C 93 ; WX 333 ; N bracketright ; B 14 -209 392 750 ; C 94 ; WX 500 ; N asciicircum ; B 141 333 502 750 ; C 95 ; WX 500 ; N underscore ; B -25 -119 487 -61 ; C 96 ; WX 222 ; N quoteleft ; B 175 521 321 767 ; C 97 ; WX 444 ; N a ; B 55 -15 465 571 ; C 98 ; WX 500 ; N b ; B 75 -15 525 750 ; C 99 ; WX 444 ; N c ; B 85 -15 488 571 ; C 100 ; WX 500 ; N d ; B 88 -15 583 750 ; C 101 ; WX 444 ; N e ; B 86 -15 476 571 ; C 102 ; WX 278 ; N f ; B 93 0 418 752 ; L i fi ; L l fl ; C 103 ; WX 500 ; N g ; B 53 -189 544 571 ; C 104 ; WX 500 ; N h ; B 73 0 524 750 ; C 105 ; WX 222 ; N i ; B 72 0 310 750 ; C 106 ; WX 222 ; N j ; B -27 -190 313 750 ; C 107 ; WX 444 ; N k ; B 69 0 552 750 ; C 108 ; WX 222 ; N l ; B 72 0 310 750 ; C 109 ; WX 778 ; N m ; B 76 0 799 571 ; C 110 ; WX 500 ; N n ; B 73 0 524 571 ; C 111 ; WX 500 ; N o ; B 96 -15 524 571 ; C 112 ; WX 500 ; N p ; B 32 -188 524 571 ; C 113 ; WX 500 ; N q ; B 100 -184 544 571 ; C 114 ; WX 333 ; N r ; B 81 0 441 563 ; C 115 ; WX 444 ; N s ; B 68 -15 473 571 ; C 116 ; WX 278 ; N t ; B 101 0 375 707 ; C 117 ; WX 500 ; N u ; B 99 -15 542 556 ; C 118 ; WX 444 ; N v ; B 131 0 549 556 ; C 119 ; WX 667 ; N w ; B 137 0 767 556 ; C 120 ; WX 444 ; N x ; B 9 0 548 556 ; C 121 ; WX 444 ; N y ; B -13 -190 543 556 ; C 122 ; WX 389 ; N z ; B 24 0 482 556 ; C 123 ; WX 274 ; N braceleft ; B 77 -95 425 750 ; C 124 ; WX 250 ; N bar ; B 93 0 316 750 ; C 125 ; WX 274 ; N braceright ; B -12 -95 337 750 ; C 126 ; WX 500 ; N asciitilde ; B 89 166 520 345 ; C 161 ; WX 333 ; N exclamdown ; B 83 -179 333 571 ; C 162 ; WX 500 ; N cent ; B 94 -137 499 667 ; C 163 ; WX 500 ; N sterling ; B 40 -15 589 750 ; C 164 ; WX 167 ; N fraction ; B -174 0 500 750 ; C 165 ; WX 500 ; N yen ; B 88 0 677 750 ; C 166 ; WX 500 ; N florin ; B -28 -192 645 750 ; C 167 ; WX 500 ; N section ; B 51 -208 552 750 ; C 168 ; WX 500 ; N currency ; B 51 50 576 553 ; C 169 ; WX 250 ; N quotesingle ; B 208 513 308 739 ; C 170 ; WX 389 ; N quotedblleft ; B 173 521 490 767 ; C 171 ; WX 500 ; N guillemotleft ; B 145 125 520 495 ; C 172 ; WX 278 ; N guilsinglleft ; B 124 125 320 495 ; C 173 ; WX 278 ; N guilsinglright ; B 90 125 286 495 ; C 174 ; WX 500 ; N fi ; B 93 0 584 752 ; C 175 ; WX 500 ; N fl ; B 93 0 584 752 ; C 177 ; WX 500 ; N endash ; B 58 275 573 345 ; C 178 ; WX 500 ; N dagger ; B 137 -176 573 750 ; C 179 ; WX 500 ; N daggerdbl ; B 50 -176 572 750 ; C 180 ; WX 250 ; N periodcentered ; B 123 204 236 304 ; C 182 ; WX 440 ; N paragraph ; B 113 -116 550 750 ; C 183 ; WX 333 ; N bullet ; B 91 222 401 529 ; C 184 ; WX 222 ; N quotesinglbase ; B 33 -146 179 100 ; C 185 ; WX 389 ; N quotedblbase ; B 31 -146 348 100 ; C 186 ; WX 389 ; N quotedblright ; B 169 504 486 750 ; C 187 ; WX 500 ; N guillemotright ; B 112 125 487 495 ; C 188 ; WX 1000 ; N ellipsis ; B 121 0 899 100 ; C 189 ; WX 1111 ; N perthousand ; B 157 -16 1118 750 ; C 191 ; WX 500 ; N questiondown ; B 33 -190 450 559 ; C 193 ; WX 333 ; N grave ; B 198 624 366 765 ; C 194 ; WX 333 ; N acute ; B 233 624 461 765 ; C 195 ; WX 333 ; N circumflex ; B 154 624 446 765 ; C 196 ; WX 333 ; N tilde ; B 132 634 496 750 ; C 197 ; WX 333 ; N macron ; B 150 657 475 715 ; C 198 ; WX 333 ; N breve ; B 172 629 484 765 ; C 199 ; WX 250 ; N dotaccent ; B 224 650 324 750 ; C 200 ; WX 333 ; N dieresis ; B 190 650 440 750 ; C 202 ; WX 250 ; N ring ; B 168 593 377 796 ; C 203 ; WX 333 ; N cedilla ; B 23 -224 255 0 ; C 205 ; WX 333 ; N hungarumlaut ; B 194 624 603 765 ; C 206 ; WX 333 ; N ogonek ; B -23 -191 188 13 ; C 207 ; WX 333 ; N caron ; B 184 624 476 765 ; C 208 ; WX 1000 ; N emdash ; B 58 275 1073 345 ; C 225 ; WX 833 ; N AE ; B 0 0 944 750 ; C 227 ; WX 300 ; N ordfeminine ; B 90 305 392 765 ; C 232 ; WX 500 ; N Lslash ; B 39 0 488 750 ; C 233 ; WX 611 ; N Oslash ; B 25 -43 738 796 ; C 234 ; WX 833 ; N OE ; B 113 -18 946 765 ; C 235 ; WX 300 ; N ordmasculine ; B 85 305 413 765 ; C 241 ; WX 667 ; N ae ; B 50 -15 711 571 ; C 245 ; WX 222 ; N dotlessi ; B 72 0 269 556 ; C 248 ; WX 222 ; N lslash ; B 59 0 347 750 ; C 249 ; WX 500 ; N oslash ; B 19 -46 591 582 ; C 250 ; WX 722 ; N oe ; B 81 -15 758 571 ; C 251 ; WX 500 ; N germandbls ; B 71 -5 548 765 ; C -1 ; WX 556 ; N Aacute ; B 11 0 614 959 ; C -1 ; WX 556 ; N Acircumflex ; B 11 0 599 959 ; C -1 ; WX 556 ; N Adieresis ; B 11 0 593 944 ; C -1 ; WX 556 ; N Agrave ; B 11 0 546 959 ; C -1 ; WX 556 ; N Aring ; B 11 0 571 990 ; C -1 ; WX 556 ; N Atilde ; B 11 0 649 944 ; C -1 ; WX 556 ; N Ccedilla ; B 106 -224 624 765 ; C -1 ; WX 500 ; N Eacute ; B 74 0 608 959 ; C -1 ; WX 500 ; N Ecircumflex ; B 74 0 608 959 ; C -1 ; WX 500 ; N Edieresis ; B 74 0 608 944 ; C -1 ; WX 500 ; N Egrave ; B 74 0 608 959 ; C -1 ; WX 611 ; N Eth ; B 67 0 653 750 ; C -1 ; WX 278 ; N Iacute ; B 98 0 475 959 ; C -1 ; WX 278 ; N Icircumflex ; B 98 0 460 959 ; C -1 ; WX 278 ; N Idieresis ; B 98 0 454 944 ; C -1 ; WX 278 ; N Igrave ; B 98 0 380 959 ; C -1 ; WX 611 ; N Ntilde ; B 77 0 693 944 ; C -1 ; WX 611 ; N Oacute ; B 116 -18 658 959 ; C -1 ; WX 611 ; N Ocircumflex ; B 116 -18 658 959 ; C -1 ; WX 611 ; N Odieresis ; B 116 -18 658 944 ; C -1 ; WX 611 ; N Ograve ; B 116 -18 658 959 ; C -1 ; WX 611 ; N Otilde ; B 116 -18 676 944 ; C -1 ; WX 556 ; N Scaron ; B 86 -18 629 959 ; C -1 ; WX 556 ; N Thorn ; B 86 0 607 750 ; C -1 ; WX 611 ; N Uacute ; B 114 -18 690 959 ; C -1 ; WX 611 ; N Ucircumflex ; B 114 -18 690 959 ; C -1 ; WX 611 ; N Udieresis ; B 114 -18 690 944 ; C -1 ; WX 611 ; N Ugrave ; B 114 -18 690 959 ; C -1 ; WX 556 ; N Yacute ; B 170 0 705 959 ; C -1 ; WX 556 ; N Ydieresis ; B 170 0 705 944 ; C -1 ; WX 500 ; N Zcaron ; B 28 0 627 959 ; C -1 ; WX 444 ; N aacute ; B 55 -15 517 765 ; C -1 ; WX 444 ; N acircumflex ; B 55 -15 502 765 ; C -1 ; WX 444 ; N adieresis ; B 55 -15 496 750 ; C -1 ; WX 444 ; N agrave ; B 55 -15 465 765 ; C -1 ; WX 444 ; N aring ; B 55 -15 474 796 ; C -1 ; WX 444 ; N atilde ; B 55 -15 552 750 ; C -1 ; WX 250 ; N brokenbar ; B 93 0 316 750 ; C -1 ; WX 444 ; N ccedilla ; B 79 -224 488 571 ; C -1 ; WX 800 ; N copyright ; B 79 -18 880 765 ; C -1 ; WX 400 ; N degree ; B 174 450 481 750 ; C -1 ; WX 500 ; N divide ; B 91 3 518 505 ; C -1 ; WX 444 ; N eacute ; B 86 -15 517 765 ; C -1 ; WX 444 ; N ecircumflex ; B 86 -15 502 765 ; C -1 ; WX 444 ; N edieresis ; B 86 -15 496 750 ; C -1 ; WX 444 ; N egrave ; B 86 -15 476 765 ; C -1 ; WX 500 ; N eth ; B 87 -15 548 770 ; C -1 ; WX 222 ; N iacute ; B 72 0 406 765 ; C -1 ; WX 222 ; N icircumflex ; B 72 0 391 765 ; C -1 ; WX 222 ; N idieresis ; B 72 0 385 750 ; C -1 ; WX 222 ; N igrave ; B 72 0 311 765 ; C -1 ; WX 500 ; N logicalnot ; B 111 117 539 384 ; C -1 ; WX 500 ; N minus ; B 91 219 518 289 ; C -1 ; WX 500 ; N mu ; B 35 -189 540 556 ; C -1 ; WX 500 ; N multiply ; B 65 48 544 461 ; C -1 ; WX 500 ; N ntilde ; B 73 0 580 750 ; C -1 ; WX 500 ; N oacute ; B 96 -15 545 765 ; C -1 ; WX 500 ; N ocircumflex ; B 96 -15 530 765 ; C -1 ; WX 500 ; N odieresis ; B 96 -15 524 750 ; C -1 ; WX 500 ; N ograve ; B 96 -15 524 765 ; C -1 ; WX 750 ; N onehalf ; B 91 0 777 750 ; C -1 ; WX 750 ; N onequarter ; B 143 0 817 750 ; C -1 ; WX 300 ; N onesuperior ; B 200 300 392 750 ; C -1 ; WX 500 ; N otilde ; B 96 -15 580 750 ; C -1 ; WX 500 ; N plusminus ; B 44 0 531 505 ; C -1 ; WX 800 ; N registered ; B 79 -18 881 765 ; C -1 ; WX 444 ; N scaron ; B 68 -15 532 765 ; C -1 ; WX 500 ; N thorn ; B 32 -188 524 750 ; C -1 ; WX 750 ; N threequarters ; B 106 0 831 750 ; C -1 ; WX 300 ; N threesuperior ; B 102 291 409 750 ; C -1 ; WX 750 ; N trademark ; B 147 329 878 750 ; C -1 ; WX 300 ; N twosuperior ; B 83 300 413 750 ; C -1 ; WX 500 ; N uacute ; B 99 -15 545 765 ; C -1 ; WX 500 ; N ucircumflex ; B 99 -15 542 765 ; C -1 ; WX 500 ; N udieresis ; B 99 -15 542 750 ; C -1 ; WX 500 ; N ugrave ; B 99 -15 542 765 ; C -1 ; WX 444 ; N yacute ; B -13 -190 543 765 ; C -1 ; WX 444 ; N ydieresis ; B -13 -190 543 750 ; C -1 ; WX 389 ; N zcaron ; B 24 0 504 765 ; EndCharMetrics StartKernData StartKernPairs 115 KPX A y -18 KPX A w -18 KPX A v -18 KPX A quoteright -55 KPX A Y -55 KPX A W -37 KPX A V -37 KPX A T -55 KPX F period -111 KPX F comma -111 KPX F A -37 KPX L y -37 KPX L quoteright -92 KPX L Y -92 KPX L W -74 KPX L V -74 KPX L T -74 KPX P period -129 KPX P comma -129 KPX P A -37 KPX R y 0 KPX R Y -18 KPX R W 0 KPX R V 0 KPX R T -18 KPX T y -55 KPX T w -74 KPX T u -74 KPX T semicolon -74 KPX T s -74 KPX T r -74 KPX T period -92 KPX T o -74 KPX T i -18 KPX T hyphen -55 KPX T e -74 KPX T comma -92 KPX T colon -74 KPX T c -74 KPX T a -74 KPX T A -55 KPX V y 0 KPX V u -18 KPX V semicolon -18 KPX V r -18 KPX V period -92 KPX V o -18 KPX V i 0 KPX V hyphen -18 KPX V e -18 KPX V comma -92 KPX V colon -18 KPX V a -18 KPX V A -37 KPX W y 0 KPX W u 0 KPX W semicolon 0 KPX W r 0 KPX W period -74 KPX W o -18 KPX W i 0 KPX W hyphen -18 KPX W e -18 KPX W comma -74 KPX W colon 0 KPX W a -18 KPX W A -18 KPX Y v -18 KPX Y u -37 KPX Y semicolon -37 KPX Y q -55 KPX Y period -111 KPX Y p -37 KPX Y o -55 KPX Y i -18 KPX Y hyphen -74 KPX Y e -55 KPX Y comma -111 KPX Y colon -37 KPX Y a -55 KPX Y A -55 KPX f quoteright 18 KPX f f 0 KPX quoteleft quoteleft -18 KPX quoteright t 0 KPX quoteright s -55 KPX quoteright quoteright -18 KPX r z 20 KPX r y 18 KPX r x 20 KPX r w 18 KPX r v 18 KPX r u 0 KPX r t 0 KPX r r 0 KPX r quoteright 0 KPX r q 0 KPX r period -74 KPX r o 0 KPX r n 0 KPX r m 0 KPX r hyphen -37 KPX r h 0 KPX r g 0 KPX r f 20 KPX r e 0 KPX r d 0 KPX r comma -74 KPX r c -20 KPX v period -55 KPX v comma -55 KPX w period -37 KPX w comma -37 KPX y period -55 KPX y comma -55 EndKernPairs EndKernData StartComposites 58 CC Zcaron 2 ; PCC Z 0 0 ; PCC caron 83 194 ; CC zcaron 2 ; PCC z 0 0 ; PCC caron 28 0 ; CC Scaron 2 ; PCC S 0 0 ; PCC caron 111 194 ; CC scaron 2 ; PCC s 0 0 ; PCC caron 55 0 ; CC Ccedilla 2 ; PCC C 0 0 ; PCC cedilla 111 0 ; CC ccedilla 2 ; PCC c 0 0 ; PCC cedilla 55 0 ; CC Yacute 2 ; PCC Y 0 0 ; PCC acute 111 194 ; CC yacute 2 ; PCC y 0 0 ; PCC acute 55 0 ; CC Ydieresis 2 ; PCC Y 0 0 ; PCC dieresis 111 194 ; CC ydieresis 2 ; PCC y 0 0 ; PCC dieresis 55 0 ; CC Uacute 2 ; PCC U 0 0 ; PCC acute 139 194 ; CC Ucircumflex 2 ; PCC U 0 0 ; PCC circumflex 139 194 ; CC Udieresis 2 ; PCC U 0 0 ; PCC dieresis 139 194 ; CC Ugrave 2 ; PCC U 0 0 ; PCC grave 139 194 ; CC uacute 2 ; PCC u 0 0 ; PCC acute 83 0 ; CC ucircumflex 2 ; PCC u 0 0 ; PCC circumflex 83 0 ; CC udieresis 2 ; PCC u 0 0 ; PCC dieresis 83 0 ; CC ugrave 2 ; PCC u 0 0 ; PCC grave 83 0 ; CC Iacute 2 ; PCC I 0 0 ; PCC acute -27 194 ; CC Icircumflex 2 ; PCC I 0 0 ; PCC circumflex -27 194 ; CC Idieresis 2 ; PCC I 0 0 ; PCC dieresis -27 194 ; CC Igrave 2 ; PCC I 0 0 ; PCC grave -27 194 ; CC iacute 2 ; PCC dotlessi 0 0 ; PCC acute -55 0 ; CC icircumflex 2 ; PCC dotlessi 0 0 ; PCC circumflex -55 0 ; CC idieresis 2 ; PCC dotlessi 0 0 ; PCC dieresis -55 0 ; CC igrave 2 ; PCC dotlessi 0 0 ; PCC grave -55 0 ; CC Eacute 2 ; PCC E 0 0 ; PCC acute 83 194 ; CC Ecircumflex 2 ; PCC E 0 0 ; PCC circumflex 83 194 ; CC Edieresis 2 ; PCC E 0 0 ; PCC dieresis 83 194 ; CC Egrave 2 ; PCC E 0 0 ; PCC grave 83 194 ; CC eacute 2 ; PCC e 0 0 ; PCC acute 55 0 ; CC ecircumflex 2 ; PCC e 0 0 ; PCC circumflex 55 0 ; CC edieresis 2 ; PCC e 0 0 ; PCC dieresis 55 0 ; CC egrave 2 ; PCC e 0 0 ; PCC grave 55 0 ; CC Aacute 2 ; PCC A 0 0 ; PCC acute 111 194 ; CC Acircumflex 2 ; PCC A 0 0 ; PCC circumflex 111 194 ; CC Adieresis 2 ; PCC A 0 0 ; PCC dieresis 111 194 ; CC Agrave 2 ; PCC A 0 0 ; PCC grave 111 194 ; CC aacute 2 ; PCC a 0 0 ; PCC acute 55 0 ; CC acircumflex 2 ; PCC a 0 0 ; PCC circumflex 55 0 ; CC adieresis 2 ; PCC a 0 0 ; PCC dieresis 55 0 ; CC agrave 2 ; PCC a 0 0 ; PCC grave 55 0 ; CC Oacute 2 ; PCC O 0 0 ; PCC acute 139 194 ; CC Ocircumflex 2 ; PCC O 0 0 ; PCC circumflex 139 194 ; CC Odieresis 2 ; PCC O 0 0 ; PCC dieresis 139 194 ; CC Ograve 2 ; PCC O 0 0 ; PCC grave 139 194 ; CC oacute 2 ; PCC o 0 0 ; PCC acute 83 0 ; CC ocircumflex 2 ; PCC o 0 0 ; PCC circumflex 83 0 ; CC odieresis 2 ; PCC o 0 0 ; PCC dieresis 83 0 ; CC ograve 2 ; PCC o 0 0 ; PCC grave 83 0 ; CC Atilde 2 ; PCC A 0 0 ; PCC tilde 111 194 ; CC atilde 2 ; PCC a 0 0 ; PCC tilde 55 0 ; CC Ntilde 2 ; PCC N 0 0 ; PCC tilde 139 194 ; CC ntilde 2 ; PCC n 0 0 ; PCC tilde 83 0 ; CC Otilde 2 ; PCC O 0 0 ; PCC tilde 139 194 ; CC otilde 2 ; PCC o 0 0 ; PCC tilde 83 0 ; CC Aring 2 ; PCC A 0 0 ; PCC ring 153 194 ; CC aring 2 ; PCC a 0 0 ; PCC ring 97 0 ; EndComposites EndFontMetrics gle-graphics-4.2.4c/src/fonts/koi8r.enc0000775000000000000000000001456111676336540016421 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! $0020, 32; space $0021, 33; exclam $0022, 34; quotedbl $0023, 35; numbersign $0024, 36; dollar $0025, 37; percent $0026, 38; ampersand $2019, 39; quoteright $0028, 40; parenleft $0029, 41; parenright $002A, 42; asterisk $002B, 43; plus $002C, 44; comma $FFFF, 45; hyphen $002E, 46; period $002F, 47; slash $0030, 48; zero $0031, 49; one $0032, 50; two $0033, 51; three $0034, 52; four $0035, 53; five $0036, 54; six $0037, 55; seven $0038, 56; eight $0039, 57; nine $003A, 58; colon $003B, 59; semicolon $003C, 60; less $003D, 61; equal $003E, 62; greater $003F, 63; question $0040, 64; at $0041, 65; A $0042, 66; B $0043, 67; C $0044, 68; D $0045, 69; E $0046, 70; F $0047, 71; G $0048, 72; H $0049, 73; I $004A, 74; J $004B, 75; K $004C, 76; L $004D, 77; M $004E, 78; N $004F, 79; O $0050, 80; P $0051, 81; Q $0052, 82; R $0053, 83; S $0054, 84; T $0055, 85; U $0056, 86; V $0057, 87; W $0058, 88; X $0059, 89; Y $005A, 90; Z $005B, 91; bracketleft $005C, 92; backslash $005D, 93; bracketright $005E, 94; asciicircum $005F, 95; underscore $2018, 96; quoteleft $0061, 97; a $0062, 98; b $0063, 99; c $0064, 100; d $0065, 101; e $0066, 102; f $0067, 103; g $0068, 104; h $0069, 105; i $006A, 106; j $006B, 107; k $006C, 108; l $006D, 109; m $006E, 110; n $006F, 111; o $0070, 112; p $0071, 113; q $0072, 114; r $0073, 115; s $0074, 116; t $0075, 117; u $0076, 118; v $0077, 119; w $0078, 120; x $0079, 121; y $007A, 122; z $007B, 123; braceleft $007C, 124; bar $007D, 125; braceright $007E, 126; asciitilde $2500, 128; u2500 $2502, 129; u2502 $250c, 130; u250c $2510, 131; u2510 $2514, 132; u2514 $2518, 133; u2518 $251c, 134; u251c $2524, 135; u2524 $252c, 136; u252c $2534, 137; u2534 $253c, 138; u253c $2580, 139; u2580 $2584, 140; u2584 $2588, 141; u2588 $258c, 142; u258c $2590, 143; u2590 $2591, 144; u2591 $2592, 145; u2592 $2593, 146; u2593 $2320, 147; u2320 $25a0, 148; u25a0 $2219, 149; u2219 $221a, 150; u221a $2248, 151; u2248 $2264, 152; u2264 $2265, 153; u2265 $00a0, 154; u00a0 $2321, 155; u2321 $00b0, 156; u00b0 $00b2, 157; u00b2 $00b7, 158; u00b7 $00f7, 159; u00f7 $2550, 160; u2550 $2551, 161; u2551 $2552, 162; u2552 $0451, 163; u0451 $2553, 164; u2553 $2554, 165; u2554 $2555, 166; u2555 $2556, 167; u2556 $2557, 168; u2557 $2558, 169; u2558 $2559, 170; u2559 $255a, 171; u255a $255b, 172; u255b $255c, 173; u255c $255d, 174; u255d $255e, 175; u255e $255f, 176; u255f $2560, 177; u2560 $2561, 178; u2561 $0401, 179; u0401 $2562, 180; u2562 $2563, 181; u2563 $2564, 182; u2564 $2565, 183; u2565 $2566, 184; u2566 $2567, 185; u2567 $2568, 186; u2568 $2569, 187; u2569 $256a, 188; u256a $256b, 189; u256b $256c, 190; u256c $00a9, 191; u00a9 $044e, 192; u044e $0430, 193; u0430 $0431, 194; u0431 $0446, 195; u0446 $0434, 196; u0434 $0435, 197; u0435 $0444, 198; u0444 $0433, 199; u0433 $0445, 200; u0445 $0438, 201; u0438 $0439, 202; u0439 $043a, 203; u043a $043b, 204; u043b $043c, 205; u043c $043d, 206; u043d $043e, 207; u043e $043f, 208; u043f $044f, 209; u044f $0440, 210; u0440 $0441, 211; u0441 $0442, 212; u0442 $0443, 213; u0443 $0436, 214; u0436 $0432, 215; u0432 $044c, 216; u044c $044b, 217; u044b $0437, 218; u0437 $0448, 219; u0448 $044d, 220; u044d $0449, 221; u0449 $0447, 222; u0447 $044a, 223; u044a $042e, 224; u042e $0410, 225; u0410 $0411, 226; u0411 $0426, 227; u0426 $0414, 228; u0414 $0415, 229; u0415 $0424, 230; u0424 $0413, 231; u0413 $0425, 232; u0425 $0418, 233; u0418 $0419, 234; u0419 $041a, 235; u041a $041b, 236; u041b $041c, 237; u041c $041d, 238; u041d $041e, 239; u041e $041f, 240; u041f $042f, 241; u042f $0420, 242; u0420 $0421, 243; u0421 $0422, 244; u0422 $0423, 245; u0423 $0416, 246; u0416 $0412, 247; u0412 $042c, 248; u042c $042b, 249; u042b $0417, 250; u0417 $0428, 251; u0428 $042d, 252; u042d $0429, 253; u0429 $0427, 254; u0427 $042a, 255; u042a gle-graphics-4.2.4c/src/fonts/pshcb.afm0000664000000000000000000003633111676336540016456 0ustar rootrootStartFontMetrics 2.0 Comment Copyright (c) 1985, 1987 Adobe Systems Incorporated. All rights reserved. Comment Creation Date:Thu Aug 13 15:58:23 PDT 1987 FontName Helvetica-Condensed-Bold EncodingScheme AdobeStandardEncoding FullName Helvetica Condensed Bold FamilyName Helvetica Weight BoldCondensed ItalicAngle 0.0 IsFixedPitch false UnderlinePosition -90 UnderlineThickness 58 Version 001.002 Notice Copyright (c) 1985, 1987 Adobe Systems Incorporated. All rights reserved. Helvetica is a trademark of Allied Corporation. FontBBox -169 -228 1091 971 CapHeight 750 XHeight 564 Descender -189 Ascender 750 StartCharMetrics 228 C 32 ; WX 250 ; N space ; B 0 0 0 0 ; C 33 ; WX 333 ; N exclam ; B 101 0 232 750 ; C 34 ; WX 333 ; N quotedbl ; B 16 468 318 739 ; C 35 ; WX 500 ; N numbersign ; B 31 0 469 738 ; C 36 ; WX 500 ; N dollar ; B 34 -124 465 803 ; C 37 ; WX 833 ; N percent ; B 31 -15 803 750 ; C 38 ; WX 667 ; N ampersand ; B 63 -18 615 768 ; C 39 ; WX 278 ; N quoteright ; B 81 479 202 750 ; C 40 ; WX 333 ; N parenleft ; B 52 -198 281 768 ; C 41 ; WX 333 ; N parenright ; B 52 -198 281 768 ; C 42 ; WX 500 ; N asterisk ; B 79 412 422 738 ; C 43 ; WX 500 ; N plus ; B 26 0 475 492 ; C 44 ; WX 333 ; N comma ; B 101 -145 233 132 ; C 45 ; WX 333 ; N hyphen ; B 48 255 286 370 ; C 46 ; WX 333 ; N period ; B 101 0 233 132 ; C 47 ; WX 278 ; N slash ; B -11 -94 312 750 ; C 48 ; WX 500 ; N zero ; B 48 -15 453 753 ; C 49 ; WX 500 ; N one ; B 44 0 353 750 ; C 50 ; WX 500 ; N two ; B 32 0 453 753 ; C 51 ; WX 500 ; N three ; B 28 -15 453 753 ; C 52 ; WX 500 ; N four ; B 23 0 470 738 ; C 53 ; WX 500 ; N five ; B 37 -15 458 738 ; C 54 ; WX 500 ; N six ; B 42 -15 459 753 ; C 55 ; WX 500 ; N seven ; B 32 0 454 738 ; C 56 ; WX 500 ; N eight ; B 41 -15 460 753 ; C 57 ; WX 500 ; N nine ; B 42 -15 459 753 ; C 58 ; WX 278 ; N colon ; B 73 0 205 556 ; C 59 ; WX 278 ; N semicolon ; B 73 -145 205 556 ; C 60 ; WX 500 ; N less ; B 42 -24 459 527 ; C 61 ; WX 500 ; N equal ; B 26 96 475 401 ; C 62 ; WX 500 ; N greater ; B 42 -24 459 527 ; C 63 ; WX 500 ; N question ; B 51 0 440 768 ; C 64 ; WX 833 ; N at ; B 38 -18 795 768 ; C 65 ; WX 556 ; N A ; B 9 0 547 750 ; C 66 ; WX 556 ; N B ; B 65 0 506 750 ; C 67 ; WX 556 ; N C ; B 55 -18 512 768 ; C 68 ; WX 611 ; N D ; B 72 0 550 750 ; C 69 ; WX 500 ; N E ; B 64 0 458 750 ; C 70 ; WX 500 ; N F ; B 73 0 470 750 ; C 71 ; WX 611 ; N G ; B 55 -18 542 768 ; C 72 ; WX 611 ; N H ; B 68 0 544 750 ; C 73 ; WX 278 ; N I ; B 69 0 209 750 ; C 74 ; WX 444 ; N J ; B 7 -18 384 750 ; C 75 ; WX 556 ; N K ; B 68 0 547 750 ; C 76 ; WX 500 ; N L ; B 68 0 468 750 ; C 77 ; WX 778 ; N M ; B 67 0 712 750 ; C 78 ; WX 611 ; N N ; B 68 0 543 750 ; C 79 ; WX 611 ; N O ; B 61 -18 551 768 ; C 80 ; WX 556 ; N P ; B 68 0 529 750 ; C 81 ; WX 611 ; N Q ; B 61 -71 587 768 ; C 82 ; WX 611 ; N R ; B 66 0 567 750 ; C 83 ; WX 556 ; N S ; B 49 -18 508 768 ; C 84 ; WX 500 ; N T ; B 17 0 484 750 ; C 85 ; WX 611 ; N U ; B 68 -18 544 750 ; C 86 ; WX 556 ; N V ; B 21 0 536 750 ; C 87 ; WX 833 ; N W ; B 24 0 810 750 ; C 88 ; WX 556 ; N X ; B 11 0 545 750 ; C 89 ; WX 556 ; N Y ; B 12 0 545 750 ; C 90 ; WX 500 ; N Z ; B 33 0 468 750 ; C 91 ; WX 333 ; N bracketleft ; B 81 -94 280 750 ; C 92 ; WX 250 ; N backslash ; B -89 0 340 750 ; C 93 ; WX 333 ; N bracketright ; B 53 -94 252 750 ; C 94 ; WX 500 ; N asciicircum ; B 10 326 490 750 ; C 95 ; WX 500 ; N underscore ; B 0 -119 500 -61 ; C 96 ; WX 278 ; N quoteleft ; B 76 495 197 766 ; C 97 ; WX 500 ; N a ; B 42 -15 440 579 ; C 98 ; WX 500 ; N b ; B 64 -15 444 750 ; C 99 ; WX 444 ; N c ; B 48 -15 402 579 ; C 100 ; WX 500 ; N d ; B 53 -15 433 750 ; C 101 ; WX 500 ; N e ; B 52 -15 442 579 ; C 102 ; WX 278 ; N f ; B 21 0 257 750 ; L i fi ; L l fl ; C 103 ; WX 500 ; N g ; B 53 -190 433 579 ; C 104 ; WX 500 ; N h ; B 61 0 440 750 ; C 105 ; WX 278 ; N i ; B 74 0 204 750 ; C 106 ; WX 278 ; N j ; B 31 -192 210 750 ; C 107 ; WX 444 ; N k ; B 48 0 443 750 ; C 108 ; WX 278 ; N l ; B 74 0 204 750 ; C 109 ; WX 778 ; N m ; B 66 0 712 579 ; C 110 ; WX 500 ; N n ; B 61 0 440 579 ; C 111 ; WX 500 ; N o ; B 53 -15 447 579 ; C 112 ; WX 500 ; N p ; B 58 -189 438 579 ; C 113 ; WX 500 ; N q ; B 50 -188 430 579 ; C 114 ; WX 333 ; N r ; B 60 0 319 574 ; C 115 ; WX 444 ; N s ; B 27 -15 406 579 ; C 116 ; WX 278 ; N t ; B 14 -7 252 719 ; C 117 ; WX 500 ; N u ; B 58 -15 431 564 ; C 118 ; WX 444 ; N v ; B 10 0 434 564 ; C 119 ; WX 667 ; N w ; B 11 0 645 564 ; C 120 ; WX 444 ; N x ; B 8 0 436 564 ; C 121 ; WX 444 ; N y ; B 5 -195 429 564 ; C 122 ; WX 389 ; N z ; B 23 0 367 564 ; C 123 ; WX 274 ; N braceleft ; B -32 -92 240 750 ; C 124 ; WX 250 ; N bar ; B 75 0 175 750 ; C 125 ; WX 274 ; N braceright ; B 34 -94 306 750 ; C 126 ; WX 500 ; N asciitilde ; B 26 153 475 359 ; C 161 ; WX 333 ; N exclamdown ; B 101 -170 232 579 ; C 162 ; WX 500 ; N cent ; B 72 -122 428 671 ; C 163 ; WX 500 ; N sterling ; B 35 -15 487 768 ; C 164 ; WX 167 ; N fraction ; B -169 0 331 738 ; C 165 ; WX 500 ; N yen ; B -18 0 518 750 ; C 166 ; WX 500 ; N florin ; B 9 -185 492 763 ; C 167 ; WX 500 ; N section ; B 37 -183 463 768 ; C 168 ; WX 500 ; N currency ; B 9 58 492 560 ; C 169 ; WX 250 ; N quotesingle ; B 66 468 185 739 ; C 170 ; WX 500 ; N quotedblleft ; B 87 495 405 766 ; C 171 ; WX 500 ; N guillemotleft ; B 74 62 419 447 ; C 172 ; WX 278 ; N guilsinglleft ; B 58 62 215 447 ; C 173 ; WX 278 ; N guilsinglright ; B 63 62 220 447 ; C 174 ; WX 500 ; N fi ; B 10 0 446 750 ; C 175 ; WX 500 ; N fl ; B 10 0 443 750 ; C 177 ; WX 500 ; N endash ; B 0 259 500 369 ; C 178 ; WX 500 ; N dagger ; B 37 -155 463 768 ; C 179 ; WX 500 ; N daggerdbl ; B 35 -161 466 768 ; C 180 ; WX 333 ; N periodcentered ; B 101 183 233 315 ; C 182 ; WX 550 ; N paragraph ; B 23 -116 526 750 ; C 183 ; WX 420 ; N bullet ; B 22 186 398 562 ; C 184 ; WX 278 ; N quotesinglbase ; B 87 -138 207 132 ; C 185 ; WX 500 ; N quotedblbase ; B 96 -138 413 132 ; C 186 ; WX 500 ; N quotedblright ; B 95 479 413 750 ; C 187 ; WX 500 ; N guillemotright ; B 81 62 426 447 ; C 188 ; WX 1000 ; N ellipsis ; B 101 0 899 132 ; C 189 ; WX 1111 ; N perthousand ; B 21 -18 1091 748 ; C 191 ; WX 500 ; N questiondown ; B 60 -190 449 579 ; C 193 ; WX 333 ; N grave ; B 1 629 250 775 ; C 194 ; WX 333 ; N acute ; B 83 629 332 775 ; C 195 ; WX 333 ; N circumflex ; B -10 644 343 790 ; C 196 ; WX 333 ; N tilde ; B -16 636 350 764 ; C 197 ; WX 333 ; N macron ; B -6 666 340 740 ; C 198 ; WX 333 ; N breve ; B -1 635 335 780 ; C 199 ; WX 333 ; N dotaccent ; B 103 644 230 759 ; C 200 ; WX 333 ; N dieresis ; B 5 644 328 759 ; C 202 ; WX 333 ; N ring ; B 60 632 273 845 ; C 203 ; WX 333 ; N cedilla ; B 39 -228 275 0 ; C 205 ; WX 333 ; N hungarumlaut ; B -17 634 447 780 ; C 206 ; WX 333 ; N ogonek ; B 88 -205 278 0 ; C 207 ; WX 333 ; N caron ; B -10 634 343 780 ; C 208 ; WX 1000 ; N emdash ; B 0 259 1000 369 ; C 225 ; WX 778 ; N AE ; B -22 0 750 750 ; C 227 ; WX 300 ; N ordfeminine ; B 20 291 281 768 ; C 232 ; WX 500 ; N Lslash ; B 0 0 474 750 ; C 233 ; WX 611 ; N Oslash ; B 36 -38 578 779 ; C 234 ; WX 833 ; N OE ; B 60 -18 791 768 ; C 235 ; WX 300 ; N ordmasculine ; B 22 291 278 768 ; C 241 ; WX 722 ; N ae ; B 44 -15 672 579 ; C 245 ; WX 278 ; N dotlessi ; B 74 0 204 564 ; C 248 ; WX 278 ; N lslash ; B 2 0 272 750 ; C 249 ; WX 500 ; N oslash ; B 7 -58 492 617 ; C 250 ; WX 722 ; N oe ; B 46 -15 678 579 ; C 251 ; WX 500 ; N germandbls ; B 60 -15 445 768 ; C -1 ; WX 556 ; N Aacute ; B 9 0 547 961 ; C -1 ; WX 556 ; N Acircumflex ; B 9 0 547 956 ; C -1 ; WX 556 ; N Adieresis ; B 9 0 547 945 ; C -1 ; WX 556 ; N Agrave ; B 9 0 547 961 ; C -1 ; WX 556 ; N Aring ; B 9 0 547 971 ; C -1 ; WX 556 ; N Atilde ; B 9 0 547 930 ; C -1 ; WX 556 ; N Ccedilla ; B 55 -228 512 768 ; C -1 ; WX 500 ; N Eacute ; B 64 0 458 961 ; C -1 ; WX 500 ; N Ecircumflex ; B 64 0 458 956 ; C -1 ; WX 500 ; N Edieresis ; B 64 0 458 945 ; C -1 ; WX 500 ; N Egrave ; B 64 0 458 961 ; C -1 ; WX 611 ; N Eth ; B -6 0 550 750 ; C -1 ; WX 278 ; N Iacute ; B 56 0 305 961 ; C -1 ; WX 278 ; N Icircumflex ; B -37 0 316 956 ; C -1 ; WX 278 ; N Idieresis ; B -22 0 301 945 ; C -1 ; WX 278 ; N Igrave ; B -26 0 223 961 ; C -1 ; WX 611 ; N Ntilde ; B 68 0 543 930 ; C -1 ; WX 611 ; N Oacute ; B 61 -18 551 961 ; C -1 ; WX 611 ; N Ocircumflex ; B 61 -18 551 956 ; C -1 ; WX 611 ; N Odieresis ; B 61 -18 551 945 ; C -1 ; WX 611 ; N Ograve ; B 61 -18 551 961 ; C -1 ; WX 611 ; N Otilde ; B 61 -18 551 930 ; C -1 ; WX 556 ; N Scaron ; B 49 -18 508 946 ; C -1 ; WX 556 ; N Thorn ; B 68 0 529 750 ; C -1 ; WX 611 ; N Uacute ; B 68 -18 544 961 ; C -1 ; WX 611 ; N Ucircumflex ; B 68 -18 544 956 ; C -1 ; WX 611 ; N Udieresis ; B 68 -18 544 945 ; C -1 ; WX 611 ; N Ugrave ; B 68 -18 544 961 ; C -1 ; WX 556 ; N Yacute ; B 12 0 545 961 ; C -1 ; WX 556 ; N Ydieresis ; B 12 0 545 945 ; C -1 ; WX 500 ; N Zcaron ; B 33 0 468 946 ; C -1 ; WX 500 ; N aacute ; B 42 -15 440 775 ; C -1 ; WX 500 ; N acircumflex ; B 42 -15 440 770 ; C -1 ; WX 500 ; N adieresis ; B 42 -15 440 759 ; C -1 ; WX 500 ; N agrave ; B 42 -15 440 775 ; C -1 ; WX 500 ; N aring ; B 42 -15 440 845 ; C -1 ; WX 500 ; N atilde ; B 42 -15 440 744 ; C -1 ; WX 250 ; N brokenbar ; B 75 0 175 750 ; C -1 ; WX 444 ; N ccedilla ; B 48 -228 402 579 ; C -1 ; WX 830 ; N copyright ; B 22 -18 808 768 ; C -1 ; WX 400 ; N degree ; B 50 450 350 750 ; C -1 ; WX 500 ; N divide ; B 26 6 475 492 ; C -1 ; WX 500 ; N eacute ; B 52 -15 442 775 ; C -1 ; WX 500 ; N ecircumflex ; B 52 -15 442 770 ; C -1 ; WX 500 ; N edieresis ; B 52 -15 442 759 ; C -1 ; WX 500 ; N egrave ; B 52 -15 442 775 ; C -1 ; WX 500 ; N eth ; B 46 -15 443 777 ; C -1 ; WX 278 ; N iacute ; B 56 0 305 775 ; C -1 ; WX 278 ; N icircumflex ; B -47 0 306 770 ; C -1 ; WX 278 ; N idieresis ; B -22 0 301 759 ; C -1 ; WX 278 ; N igrave ; B -26 0 223 775 ; C -1 ; WX 500 ; N logicalnot ; B 26 105 475 401 ; C -1 ; WX 500 ; N minus ; B 26 194 475 304 ; C -1 ; WX 500 ; N mu ; B 58 -189 431 564 ; C -1 ; WX 500 ; N multiply ; B 26 22 475 476 ; C -1 ; WX 500 ; N ntilde ; B 61 0 440 744 ; C -1 ; WX 500 ; N oacute ; B 53 -15 447 775 ; C -1 ; WX 500 ; N ocircumflex ; B 53 -15 447 770 ; C -1 ; WX 500 ; N odieresis ; B 53 -15 447 759 ; C -1 ; WX 500 ; N ograve ; B 53 -15 447 775 ; C -1 ; WX 750 ; N onehalf ; B 12 0 739 750 ; C -1 ; WX 750 ; N onequarter ; B 20 0 729 750 ; C -1 ; WX 300 ; N onesuperior ; B 50 300 251 750 ; C -1 ; WX 500 ; N otilde ; B 53 -15 447 744 ; C -1 ; WX 500 ; N plusminus ; B 26 -15 475 513 ; C -1 ; WX 830 ; N registered ; B 22 -18 808 768 ; C -1 ; WX 444 ; N scaron ; B 27 -15 406 760 ; C -1 ; WX 500 ; N thorn ; B 58 -189 438 750 ; C -1 ; WX 750 ; N threequarters ; B 12 0 739 750 ; C -1 ; WX 300 ; N threesuperior ; B 12 290 288 750 ; C -1 ; WX 860 ; N trademark ; B 1 346 774 750 ; C -1 ; WX 300 ; N twosuperior ; B 13 300 287 752 ; C -1 ; WX 500 ; N uacute ; B 58 -15 431 775 ; C -1 ; WX 500 ; N ucircumflex ; B 58 -15 431 780 ; C -1 ; WX 500 ; N udieresis ; B 58 -15 431 759 ; C -1 ; WX 500 ; N ugrave ; B 58 -15 431 775 ; C -1 ; WX 444 ; N yacute ; B 5 -195 429 775 ; C -1 ; WX 444 ; N ydieresis ; B 5 -195 429 759 ; C -1 ; WX 389 ; N zcaron ; B 18 0 371 760 ; EndCharMetrics StartKernData StartKernPairs 115 KPX A y -18 KPX A w -18 KPX A v -18 KPX A quoteright -55 KPX A Y -55 KPX A W -37 KPX A V -37 KPX A T -55 KPX F period -111 KPX F comma -111 KPX F A -37 KPX L y -37 KPX L quoteright -92 KPX L Y -92 KPX L W -74 KPX L V -74 KPX L T -74 KPX P period -129 KPX P comma -129 KPX P A -37 KPX R y 0 KPX R Y -18 KPX R W 0 KPX R V 0 KPX R T -18 KPX T y -55 KPX T w -74 KPX T u -74 KPX T semicolon -74 KPX T s -74 KPX T r -74 KPX T period -92 KPX T o -74 KPX T i -18 KPX T hyphen -55 KPX T e -74 KPX T comma -92 KPX T colon -74 KPX T c -74 KPX T a -74 KPX T A -55 KPX V y 0 KPX V u -18 KPX V semicolon -18 KPX V r -18 KPX V period -92 KPX V o -18 KPX V i 0 KPX V hyphen -18 KPX V e -18 KPX V comma -92 KPX V colon -18 KPX V a -18 KPX V A -37 KPX W y 0 KPX W u 0 KPX W semicolon 0 KPX W r 0 KPX W period -74 KPX W o -18 KPX W i 0 KPX W hyphen -18 KPX W e -18 KPX W comma -74 KPX W colon 0 KPX W a -18 KPX W A -18 KPX Y v -18 KPX Y u -37 KPX Y semicolon -37 KPX Y q -55 KPX Y period -111 KPX Y p -37 KPX Y o -55 KPX Y i -18 KPX Y hyphen -74 KPX Y e -55 KPX Y comma -111 KPX Y colon -37 KPX Y a -55 KPX Y A -55 KPX f quoteright 18 KPX f f 0 KPX quoteleft quoteleft -18 KPX quoteright t 0 KPX quoteright s -55 KPX quoteright quoteright -18 KPX r z 20 KPX r y 18 KPX r x 20 KPX r w 18 KPX r v 18 KPX r u 0 KPX r t 0 KPX r r 0 KPX r quoteright 0 KPX r q 0 KPX r period -74 KPX r o 0 KPX r n 0 KPX r m 0 KPX r hyphen -37 KPX r h 0 KPX r g 0 KPX r f 0 KPX r e 0 KPX r d 0 KPX r comma -74 KPX r c 0 KPX v period -55 KPX v comma -55 KPX w period -37 KPX w comma -37 KPX y period -55 KPX y comma -55 EndKernPairs EndKernData StartComposites 58 CC Zcaron 2 ; PCC Z 0 0 ; PCC caron 83 166 ; CC zcaron 2 ; PCC z 0 0 ; PCC caron 28 -20 ; CC Scaron 2 ; PCC S 0 0 ; PCC caron 111 166 ; CC scaron 2 ; PCC s 0 0 ; PCC caron 45 -20 ; CC Ccedilla 2 ; PCC C 0 0 ; PCC cedilla 111 0 ; CC ccedilla 2 ; PCC c 0 0 ; PCC cedilla 55 0 ; CC Yacute 2 ; PCC Y 0 0 ; PCC acute 111 186 ; CC yacute 2 ; PCC y 0 0 ; PCC acute 55 0 ; CC Ydieresis 2 ; PCC Y 0 0 ; PCC dieresis 111 186 ; CC ydieresis 2 ; PCC y 0 0 ; PCC dieresis 55 0 ; CC Uacute 2 ; PCC U 0 0 ; PCC acute 139 186 ; CC Ucircumflex 2 ; PCC U 0 0 ; PCC circumflex 139 166 ; CC Udieresis 2 ; PCC U 0 0 ; PCC dieresis 139 186 ; CC Ugrave 2 ; PCC U 0 0 ; PCC grave 139 186 ; CC uacute 2 ; PCC u 0 0 ; PCC acute 83 0 ; CC ucircumflex 2 ; PCC u 0 0 ; PCC circumflex 83 -10 ; CC udieresis 2 ; PCC u 0 0 ; PCC dieresis 83 0 ; CC ugrave 2 ; PCC u 0 0 ; PCC grave 83 0 ; CC Iacute 2 ; PCC I 0 0 ; PCC acute -27 186 ; CC Icircumflex 2 ; PCC I 0 0 ; PCC circumflex -27 166 ; CC Idieresis 2 ; PCC I 0 0 ; PCC dieresis -27 186 ; CC Igrave 2 ; PCC I 0 0 ; PCC grave -27 186 ; CC iacute 2 ; PCC dotlessi 0 0 ; PCC acute -27 0 ; CC icircumflex 2 ; PCC dotlessi 0 0 ; PCC circumflex -37 -20 ; CC idieresis 2 ; PCC dotlessi 0 0 ; PCC dieresis -27 0 ; CC igrave 2 ; PCC dotlessi 0 0 ; PCC grave -27 0 ; CC Eacute 2 ; PCC E 0 0 ; PCC acute 83 186 ; CC Ecircumflex 2 ; PCC E 0 0 ; PCC circumflex 83 166 ; CC Edieresis 2 ; PCC E 0 0 ; PCC dieresis 83 186 ; CC Egrave 2 ; PCC E 0 0 ; PCC grave 83 186 ; CC eacute 2 ; PCC e 0 0 ; PCC acute 83 0 ; CC ecircumflex 2 ; PCC e 0 0 ; PCC circumflex 83 -20 ; CC edieresis 2 ; PCC e 0 0 ; PCC dieresis 83 0 ; CC egrave 2 ; PCC e 0 0 ; PCC grave 83 0 ; CC Aacute 2 ; PCC A 0 0 ; PCC acute 111 186 ; CC Acircumflex 2 ; PCC A 0 0 ; PCC circumflex 101 166 ; CC Adieresis 2 ; PCC A 0 0 ; PCC dieresis 111 186 ; CC Agrave 2 ; PCC A 0 0 ; PCC grave 111 186 ; CC aacute 2 ; PCC a 0 0 ; PCC acute 83 0 ; CC acircumflex 2 ; PCC a 0 0 ; PCC circumflex 83 -20 ; CC adieresis 2 ; PCC a 0 0 ; PCC dieresis 83 0 ; CC agrave 2 ; PCC a 0 0 ; PCC grave 83 0 ; CC Oacute 2 ; PCC O 0 0 ; PCC acute 139 186 ; CC Ocircumflex 2 ; PCC O 0 0 ; PCC circumflex 139 166 ; CC Odieresis 2 ; PCC O 0 0 ; PCC dieresis 139 186 ; CC Ograve 2 ; PCC O 0 0 ; PCC grave 139 186 ; CC oacute 2 ; PCC o 0 0 ; PCC acute 83 0 ; CC ocircumflex 2 ; PCC o 0 0 ; PCC circumflex 83 -20 ; CC odieresis 2 ; PCC o 0 0 ; PCC dieresis 83 0 ; CC ograve 2 ; PCC o 0 0 ; PCC grave 83 0 ; CC Atilde 2 ; PCC A 0 0 ; PCC tilde 111 166 ; CC atilde 2 ; PCC a 0 0 ; PCC tilde 83 -20 ; CC Ntilde 2 ; PCC N 0 0 ; PCC tilde 139 166 ; CC ntilde 2 ; PCC n 0 0 ; PCC tilde 83 -20 ; CC Otilde 2 ; PCC O 0 0 ; PCC tilde 139 166 ; CC otilde 2 ; PCC o 0 0 ; PCC tilde 83 -20 ; CC Aring 2 ; PCC A 0 0 ; PCC ring 111 126 ; CC aring 2 ; PCC a 0 0 ; PCC ring 83 0 ; EndComposites EndFontMetrics gle-graphics-4.2.4c/src/fonts/pshc.afm0000664000000000000000000003616411676336540016320 0ustar rootrootStartFontMetrics 2.0 Comment Copyright (c) 1984 Adobe Systems Incorporated. All Rights Reserved. Comment Creation Date:Mon Mar 30 16:27:29 PST 1987 FontName Helvetica-Condensed EncodingScheme AdobeStandardEncoding FullName Helvetica Condensed Medium FamilyName Helvetica Weight MediumCondensed ItalicAngle 0.0 IsFixedPitch false UnderlinePosition -90 UnderlineThickness 58 Version 001.001 Notice Helvetica is a trademark of Allied Corporation. FontBBox -174 -224 1071 990 CapHeight 750 XHeight 556 Descender -188 Ascender 750 StartCharMetrics 228 C 32 ; WX 250 ; N space ; B 0 0 0 0 ; C 33 ; WX 333 ; N exclam ; B 121 0 212 750 ; C 34 ; WX 250 ; N quotedbl ; B 44 513 207 739 ; C 35 ; WX 500 ; N numbersign ; B 5 0 495 750 ; C 36 ; WX 500 ; N dollar ; B 35 -116 465 815 ; C 37 ; WX 833 ; N percent ; B 55 -15 756 750 ; C 38 ; WX 667 ; N ampersand ; B 75 -18 620 750 ; C 39 ; WX 222 ; N quoteright ; B 64 504 158 750 ; C 40 ; WX 333 ; N parenleft ; B 76 -215 289 750 ; C 41 ; WX 333 ; N parenright ; B 44 -215 257 750 ; C 42 ; WX 500 ; N asterisk ; B 96 455 405 750 ; C 43 ; WX 500 ; N plus ; B 44 0 457 505 ; C 44 ; WX 250 ; N comma ; B 80 -146 171 100 ; C 45 ; WX 333 ; N hyphen ; B 45 275 288 358 ; C 46 ; WX 250 ; N period ; B 80 0 171 100 ; C 47 ; WX 278 ; N slash ; B -13 -27 291 750 ; C 48 ; WX 500 ; N zero ; B 46 -15 455 750 ; C 49 ; WX 500 ; N one ; B 74 0 317 750 ; C 50 ; WX 500 ; N two ; B 44 0 447 750 ; C 51 ; WX 500 ; N three ; B 38 -15 447 750 ; C 52 ; WX 500 ; N four ; B 28 0 451 750 ; C 53 ; WX 500 ; N five ; B 43 -15 446 735 ; C 54 ; WX 500 ; N six ; B 43 -15 458 750 ; C 55 ; WX 500 ; N seven ; B 44 0 456 735 ; C 56 ; WX 500 ; N eight ; B 46 -15 454 750 ; C 57 ; WX 500 ; N nine ; B 43 -15 458 750 ; C 58 ; WX 250 ; N colon ; B 80 0 171 547 ; C 59 ; WX 250 ; N semicolon ; B 80 -146 171 547 ; C 60 ; WX 500 ; N less ; B 42 -10 459 518 ; C 61 ; WX 500 ; N equal ; B 44 124 457 384 ; C 62 ; WX 500 ; N greater ; B 42 -10 459 518 ; C 63 ; WX 500 ; N question ; B 60 0 462 750 ; C 64 ; WX 800 ; N at ; B 36 -15 764 750 ; C 65 ; WX 556 ; N A ; B 11 0 546 750 ; C 66 ; WX 556 ; N B ; B 80 0 503 750 ; C 67 ; WX 556 ; N C ; B 53 -18 503 765 ; C 68 ; WX 611 ; N D ; B 82 0 548 750 ; C 69 ; WX 500 ; N E ; B 74 0 451 750 ; C 70 ; WX 444 ; N F ; B 74 0 426 750 ; C 71 ; WX 611 ; N G ; B 54 -18 532 765 ; C 72 ; WX 611 ; N H ; B 79 0 532 750 ; C 73 ; WX 278 ; N I ; B 98 0 181 750 ; C 74 ; WX 444 ; N J ; B 21 -15 368 750 ; C 75 ; WX 556 ; N K ; B 79 0 546 750 ; C 76 ; WX 500 ; N L ; B 83 0 472 750 ; C 77 ; WX 778 ; N M ; B 76 0 702 750 ; C 78 ; WX 611 ; N N ; B 77 0 534 750 ; C 79 ; WX 611 ; N O ; B 59 -18 553 765 ; C 80 ; WX 556 ; N P ; B 86 0 519 750 ; C 81 ; WX 611 ; N Q ; B 59 -34 582 765 ; C 82 ; WX 611 ; N R ; B 86 0 565 750 ; C 83 ; WX 556 ; N S ; B 51 -18 505 765 ; C 84 ; WX 500 ; N T ; B 15 0 486 750 ; C 85 ; WX 611 ; N U ; B 81 -18 531 750 ; C 86 ; WX 556 ; N V ; B 11 0 545 750 ; C 87 ; WX 833 ; N W ; B 17 0 816 750 ; C 88 ; WX 556 ; N X ; B 17 0 539 750 ; C 89 ; WX 556 ; N Y ; B 11 0 546 750 ; C 90 ; WX 500 ; N Z ; B 28 0 473 750 ; C 91 ; WX 333 ; N bracketleft ; B 100 -209 275 750 ; C 92 ; WX 250 ; N backslash ; B -31 0 281 750 ; C 93 ; WX 333 ; N bracketright ; B 58 -209 233 750 ; C 94 ; WX 500 ; N asciicircum ; B 70 333 431 750 ; C 95 ; WX 500 ; N underscore ; B 0 -119 500 -61 ; C 96 ; WX 222 ; N quoteleft ; B 64 521 158 767 ; C 97 ; WX 444 ; N a ; B 31 -15 417 571 ; C 98 ; WX 500 ; N b ; B 75 -15 447 750 ; C 99 ; WX 444 ; N c ; B 44 -15 405 571 ; C 100 ; WX 500 ; N d ; B 48 -15 424 750 ; C 101 ; WX 444 ; N e ; B 43 -15 395 571 ; C 102 ; WX 278 ; N f ; B 12 0 259 752 ; L i fi ; L l fl ; C 103 ; WX 500 ; N g ; B 45 -189 426 571 ; C 104 ; WX 500 ; N h ; B 73 0 428 750 ; C 105 ; WX 222 ; N i ; B 72 0 151 750 ; C 106 ; WX 222 ; N j ; B 13 -190 154 750 ; C 107 ; WX 444 ; N k ; B 69 0 439 750 ; C 108 ; WX 222 ; N l ; B 72 0 151 750 ; C 109 ; WX 778 ; N m ; B 76 0 703 571 ; C 110 ; WX 500 ; N n ; B 73 0 428 571 ; C 111 ; WX 500 ; N o ; B 51 -15 449 571 ; C 112 ; WX 500 ; N p ; B 72 -188 447 571 ; C 113 ; WX 500 ; N q ; B 55 -184 426 571 ; C 114 ; WX 333 ; N r ; B 81 0 322 563 ; C 115 ; WX 444 ; N s ; B 43 -15 400 571 ; C 116 ; WX 278 ; N t ; B 9 0 257 707 ; C 117 ; WX 500 ; N u ; B 77 -15 424 556 ; C 118 ; WX 444 ; N v ; B 13 0 431 556 ; C 119 ; WX 667 ; N w ; B 19 0 649 556 ; C 120 ; WX 444 ; N x ; B 9 0 436 556 ; C 121 ; WX 444 ; N y ; B 5 -190 425 556 ; C 122 ; WX 389 ; N z ; B 24 0 366 556 ; C 123 ; WX 274 ; N braceleft ; B 7 -95 266 750 ; C 124 ; WX 250 ; N bar ; B 93 0 157 750 ; C 125 ; WX 274 ; N braceright ; B 8 -95 267 750 ; C 126 ; WX 500 ; N asciitilde ; B 44 166 457 345 ; C 161 ; WX 333 ; N exclamdown ; B 121 -179 212 571 ; C 162 ; WX 500 ; N cent ; B 58 -137 418 667 ; C 163 ; WX 500 ; N sterling ; B 30 -15 485 750 ; C 164 ; WX 167 ; N fraction ; B -174 0 341 750 ; C 165 ; WX 500 ; N yen ; B -17 0 518 750 ; C 166 ; WX 500 ; N florin ; B 10 -192 488 750 ; C 167 ; WX 500 ; N section ; B 35 -208 466 750 ; C 168 ; WX 500 ; N currency ; B 24 50 475 553 ; C 169 ; WX 250 ; N quotesingle ; B 99 513 151 739 ; C 170 ; WX 389 ; N quotedblleft ; B 62 521 327 767 ; C 171 ; WX 500 ; N guillemotleft ; B 85 125 415 495 ; C 172 ; WX 278 ; N guilsinglleft ; B 64 125 215 495 ; C 173 ; WX 278 ; N guilsinglright ; B 63 125 214 495 ; C 174 ; WX 500 ; N fi ; B 12 0 427 752 ; C 175 ; WX 500 ; N fl ; B 12 0 425 752 ; C 177 ; WX 500 ; N endash ; B 0 275 500 345 ; C 178 ; WX 500 ; N dagger ; B 40 -176 461 750 ; C 179 ; WX 500 ; N daggerdbl ; B 39 -176 462 750 ; C 180 ; WX 250 ; N periodcentered ; B 80 204 171 304 ; C 182 ; WX 440 ; N paragraph ; B 0 -116 391 750 ; C 183 ; WX 333 ; N bullet ; B 15 222 318 529 ; C 184 ; WX 222 ; N quotesinglbase ; B 64 -146 158 100 ; C 185 ; WX 389 ; N quotedblbase ; B 62 -146 327 100 ; C 186 ; WX 389 ; N quotedblright ; B 62 504 327 750 ; C 187 ; WX 500 ; N guillemotright ; B 85 125 415 495 ; C 188 ; WX 1000 ; N ellipsis ; B 121 0 878 100 ; C 189 ; WX 1111 ; N perthousand ; B 47 -16 1071 750 ; C 191 ; WX 500 ; N questiondown ; B 38 -190 440 559 ; C 193 ; WX 333 ; N grave ; B 35 624 233 765 ; C 194 ; WX 333 ; N acute ; B 100 624 298 765 ; C 195 ; WX 333 ; N circumflex ; B 21 624 313 765 ; C 196 ; WX 333 ; N tilde ; B -3 634 337 750 ; C 197 ; WX 333 ; N macron ; B 10 657 323 715 ; C 198 ; WX 333 ; N breve ; B 12 629 321 765 ; C 199 ; WX 250 ; N dotaccent ; B 86 650 165 750 ; C 200 ; WX 333 ; N dieresis ; B 52 650 281 750 ; C 202 ; WX 250 ; N ring ; B 23 593 227 796 ; C 203 ; WX 333 ; N cedilla ; B 66 -224 281 0 ; C 205 ; WX 333 ; N hungarumlaut ; B 61 624 440 765 ; C 206 ; WX 333 ; N ogonek ; B 0 -191 208 13 ; C 207 ; WX 333 ; N caron ; B 21 624 313 765 ; C 208 ; WX 1000 ; N emdash ; B 0 275 1000 345 ; C 225 ; WX 833 ; N AE ; B 0 0 785 750 ; C 227 ; WX 300 ; N ordfeminine ; B 25 305 276 765 ; C 232 ; WX 500 ; N Lslash ; B -13 0 472 750 ; C 233 ; WX 611 ; N Oslash ; B 29 -43 573 796 ; C 234 ; WX 833 ; N OE ; B 56 -18 787 765 ; C 235 ; WX 300 ; N ordmasculine ; B 20 305 279 765 ; C 241 ; WX 667 ; N ae ; B 26 -15 630 571 ; C 245 ; WX 222 ; N dotlessi ; B 72 0 151 556 ; C 248 ; WX 222 ; N lslash ; B -8 0 231 750 ; C 249 ; WX 500 ; N oslash ; B 25 -46 472 582 ; C 250 ; WX 722 ; N oe ; B 40 -15 676 571 ; C 251 ; WX 500 ; N germandbls ; B 71 -5 445 765 ; C -1 ; WX 556 ; N Aacute ; B 11 0 546 959 ; C -1 ; WX 556 ; N Acircumflex ; B 11 0 546 959 ; C -1 ; WX 556 ; N Adieresis ; B 11 0 546 944 ; C -1 ; WX 556 ; N Agrave ; B 11 0 546 959 ; C -1 ; WX 556 ; N Aring ; B 11 0 546 990 ; C -1 ; WX 556 ; N Atilde ; B 11 0 546 944 ; C -1 ; WX 556 ; N Ccedilla ; B 53 -224 503 765 ; C -1 ; WX 500 ; N Eacute ; B 74 0 451 959 ; C -1 ; WX 500 ; N Ecircumflex ; B 74 0 451 959 ; C -1 ; WX 500 ; N Edieresis ; B 74 0 451 944 ; C -1 ; WX 500 ; N Egrave ; B 74 0 451 959 ; C -1 ; WX 611 ; N Eth ; B -6 0 548 750 ; C -1 ; WX 278 ; N Iacute ; B 73 0 271 959 ; C -1 ; WX 278 ; N Icircumflex ; B -6 0 286 959 ; C -1 ; WX 278 ; N Idieresis ; B 25 0 254 944 ; C -1 ; WX 278 ; N Igrave ; B 8 0 206 959 ; C -1 ; WX 611 ; N Ntilde ; B 77 0 534 944 ; C -1 ; WX 611 ; N Oacute ; B 59 -18 553 959 ; C -1 ; WX 611 ; N Ocircumflex ; B 59 -18 553 959 ; C -1 ; WX 611 ; N Odieresis ; B 59 -18 553 944 ; C -1 ; WX 611 ; N Ograve ; B 59 -18 553 959 ; C -1 ; WX 611 ; N Otilde ; B 59 -18 553 944 ; C -1 ; WX 556 ; N Scaron ; B 51 -18 505 959 ; C -1 ; WX 556 ; N Thorn ; B 86 0 519 750 ; C -1 ; WX 611 ; N Uacute ; B 81 -18 531 959 ; C -1 ; WX 611 ; N Ucircumflex ; B 81 -18 531 959 ; C -1 ; WX 611 ; N Udieresis ; B 81 -18 531 944 ; C -1 ; WX 611 ; N Ugrave ; B 81 -18 531 959 ; C -1 ; WX 556 ; N Yacute ; B 11 0 546 959 ; C -1 ; WX 556 ; N Ydieresis ; B 11 0 546 944 ; C -1 ; WX 500 ; N Zcaron ; B 28 0 473 959 ; C -1 ; WX 444 ; N aacute ; B 31 -15 417 765 ; C -1 ; WX 444 ; N acircumflex ; B 31 -15 417 765 ; C -1 ; WX 444 ; N adieresis ; B 31 -15 417 750 ; C -1 ; WX 444 ; N agrave ; B 31 -15 417 765 ; C -1 ; WX 444 ; N aring ; B 31 -15 417 796 ; C -1 ; WX 444 ; N atilde ; B 31 -15 417 750 ; C -1 ; WX 250 ; N brokenbar ; B 93 0 157 750 ; C -1 ; WX 444 ; N ccedilla ; B 44 -224 405 571 ; C -1 ; WX 800 ; N copyright ; B 8 -18 792 765 ; C -1 ; WX 400 ; N degree ; B 50 450 350 750 ; C -1 ; WX 500 ; N divide ; B 44 3 457 505 ; C -1 ; WX 444 ; N eacute ; B 43 -15 395 765 ; C -1 ; WX 444 ; N ecircumflex ; B 43 -15 395 765 ; C -1 ; WX 444 ; N edieresis ; B 43 -15 395 750 ; C -1 ; WX 444 ; N egrave ; B 43 -15 395 765 ; C -1 ; WX 500 ; N eth ; B 42 -15 440 770 ; C -1 ; WX 222 ; N iacute ; B 45 0 243 765 ; C -1 ; WX 222 ; N icircumflex ; B -34 0 258 765 ; C -1 ; WX 222 ; N idieresis ; B -3 0 226 750 ; C -1 ; WX 222 ; N igrave ; B -20 0 178 765 ; C -1 ; WX 500 ; N logicalnot ; B 44 117 457 384 ; C -1 ; WX 500 ; N minus ; B 44 219 457 289 ; C -1 ; WX 500 ; N mu ; B 75 -189 422 556 ; C -1 ; WX 500 ; N multiply ; B 44 48 457 461 ; C -1 ; WX 500 ; N ntilde ; B 73 0 428 750 ; C -1 ; WX 500 ; N oacute ; B 51 -15 449 765 ; C -1 ; WX 500 ; N ocircumflex ; B 51 -15 449 765 ; C -1 ; WX 500 ; N odieresis ; B 51 -15 449 750 ; C -1 ; WX 500 ; N ograve ; B 51 -15 449 765 ; C -1 ; WX 750 ; N onehalf ; B 42 0 709 750 ; C -1 ; WX 750 ; N onequarter ; B 34 0 716 750 ; C -1 ; WX 300 ; N onesuperior ; B 67 300 233 750 ; C -1 ; WX 500 ; N otilde ; B 51 -15 449 750 ; C -1 ; WX 500 ; N plusminus ; B 44 0 457 505 ; C -1 ; WX 800 ; N registered ; B 8 -18 792 765 ; C -1 ; WX 444 ; N scaron ; B 43 -15 400 765 ; C -1 ; WX 500 ; N thorn ; B 72 -188 447 750 ; C -1 ; WX 750 ; N threequarters ; B 21 0 730 750 ; C -1 ; WX 300 ; N threesuperior ; B 17 291 283 750 ; C -1 ; WX 750 ; N trademark ; B 0 329 719 750 ; C -1 ; WX 300 ; N twosuperior ; B 19 300 281 750 ; C -1 ; WX 500 ; N uacute ; B 77 -15 424 765 ; C -1 ; WX 500 ; N ucircumflex ; B 77 -15 424 765 ; C -1 ; WX 500 ; N udieresis ; B 77 -15 424 750 ; C -1 ; WX 500 ; N ugrave ; B 77 -15 424 765 ; C -1 ; WX 444 ; N yacute ; B 5 -190 425 765 ; C -1 ; WX 444 ; N ydieresis ; B 5 -190 425 750 ; C -1 ; WX 389 ; N zcaron ; B 24 0 366 765 ; EndCharMetrics StartKernData StartKernPairs 115 KPX A y -18 KPX A w -18 KPX A v -18 KPX A quoteright -55 KPX A Y -55 KPX A W -37 KPX A V -37 KPX A T -55 KPX F period -111 KPX F comma -111 KPX F A -37 KPX L y -37 KPX L quoteright -92 KPX L Y -92 KPX L W -74 KPX L V -74 KPX L T -74 KPX P period -129 KPX P comma -129 KPX P A -37 KPX R y 0 KPX R Y -18 KPX R W 0 KPX R V 0 KPX R T -18 KPX T y -55 KPX T w -74 KPX T u -74 KPX T semicolon -74 KPX T s -74 KPX T r -74 KPX T period -92 KPX T o -74 KPX T i -18 KPX T hyphen -55 KPX T e -74 KPX T comma -92 KPX T colon -74 KPX T c -74 KPX T a -74 KPX T A -55 KPX V y 0 KPX V u -18 KPX V semicolon -18 KPX V r -18 KPX V period -92 KPX V o -18 KPX V i 0 KPX V hyphen -18 KPX V e -18 KPX V comma -92 KPX V colon -18 KPX V a -18 KPX V A -37 KPX W y 0 KPX W u 0 KPX W semicolon 0 KPX W r 0 KPX W period -74 KPX W o -18 KPX W i 0 KPX W hyphen -18 KPX W e -18 KPX W comma -74 KPX W colon 0 KPX W a -18 KPX W A -18 KPX Y v -18 KPX Y u -37 KPX Y semicolon -37 KPX Y q -55 KPX Y period -111 KPX Y p -37 KPX Y o -55 KPX Y i -18 KPX Y hyphen -74 KPX Y e -55 KPX Y comma -111 KPX Y colon -37 KPX Y a -55 KPX Y A -55 KPX f quoteright 18 KPX f f 0 KPX quoteleft quoteleft -18 KPX quoteright t 0 KPX quoteright s -55 KPX quoteright quoteright -18 KPX r z 20 KPX r y 18 KPX r x 20 KPX r w 18 KPX r v 18 KPX r u 0 KPX r t 0 KPX r r 0 KPX r quoteright 0 KPX r q 0 KPX r period -74 KPX r o 0 KPX r n 0 KPX r m 0 KPX r hyphen -37 KPX r h 0 KPX r g 0 KPX r f 20 KPX r e 0 KPX r d 0 KPX r comma -74 KPX r c -20 KPX v period -55 KPX v comma -55 KPX w period -37 KPX w comma -37 KPX y period -55 KPX y comma -55 EndKernPairs EndKernData StartComposites 58 CC Zcaron 2 ; PCC Z 0 0 ; PCC caron 83 194 ; CC zcaron 2 ; PCC z 0 0 ; PCC caron 28 0 ; CC Scaron 2 ; PCC S 0 0 ; PCC caron 111 194 ; CC scaron 2 ; PCC s 0 0 ; PCC caron 55 0 ; CC Ccedilla 2 ; PCC C 0 0 ; PCC cedilla 111 0 ; CC ccedilla 2 ; PCC c 0 0 ; PCC cedilla 55 0 ; CC Yacute 2 ; PCC Y 0 0 ; PCC acute 111 194 ; CC yacute 2 ; PCC y 0 0 ; PCC acute 55 0 ; CC Ydieresis 2 ; PCC Y 0 0 ; PCC dieresis 111 194 ; CC ydieresis 2 ; PCC y 0 0 ; PCC dieresis 55 0 ; CC Uacute 2 ; PCC U 0 0 ; PCC acute 139 194 ; CC Ucircumflex 2 ; PCC U 0 0 ; PCC circumflex 139 194 ; CC Udieresis 2 ; PCC U 0 0 ; PCC dieresis 139 194 ; CC Ugrave 2 ; PCC U 0 0 ; PCC grave 139 194 ; CC uacute 2 ; PCC u 0 0 ; PCC acute 83 0 ; CC ucircumflex 2 ; PCC u 0 0 ; PCC circumflex 83 0 ; CC udieresis 2 ; PCC u 0 0 ; PCC dieresis 83 0 ; CC ugrave 2 ; PCC u 0 0 ; PCC grave 83 0 ; CC Iacute 2 ; PCC I 0 0 ; PCC acute -27 194 ; CC Icircumflex 2 ; PCC I 0 0 ; PCC circumflex -27 194 ; CC Idieresis 2 ; PCC I 0 0 ; PCC dieresis -27 194 ; CC Igrave 2 ; PCC I 0 0 ; PCC grave -27 194 ; CC iacute 2 ; PCC dotlessi 0 0 ; PCC acute -55 0 ; CC icircumflex 2 ; PCC dotlessi 0 0 ; PCC circumflex -55 0 ; CC idieresis 2 ; PCC dotlessi 0 0 ; PCC dieresis -55 0 ; CC igrave 2 ; PCC dotlessi 0 0 ; PCC grave -55 0 ; CC Eacute 2 ; PCC E 0 0 ; PCC acute 83 194 ; CC Ecircumflex 2 ; PCC E 0 0 ; PCC circumflex 83 194 ; CC Edieresis 2 ; PCC E 0 0 ; PCC dieresis 83 194 ; CC Egrave 2 ; PCC E 0 0 ; PCC grave 83 194 ; CC eacute 2 ; PCC e 0 0 ; PCC acute 55 0 ; CC ecircumflex 2 ; PCC e 0 0 ; PCC circumflex 55 0 ; CC edieresis 2 ; PCC e 0 0 ; PCC dieresis 55 0 ; CC egrave 2 ; PCC e 0 0 ; PCC grave 55 0 ; CC Aacute 2 ; PCC A 0 0 ; PCC acute 111 194 ; CC Acircumflex 2 ; PCC A 0 0 ; PCC circumflex 111 194 ; CC Adieresis 2 ; PCC A 0 0 ; PCC dieresis 111 194 ; CC Agrave 2 ; PCC A 0 0 ; PCC grave 111 194 ; CC aacute 2 ; PCC a 0 0 ; PCC acute 55 0 ; CC acircumflex 2 ; PCC a 0 0 ; PCC circumflex 55 0 ; CC adieresis 2 ; PCC a 0 0 ; PCC dieresis 55 0 ; CC agrave 2 ; PCC a 0 0 ; PCC grave 55 0 ; CC Oacute 2 ; PCC O 0 0 ; PCC acute 139 194 ; CC Ocircumflex 2 ; PCC O 0 0 ; PCC circumflex 139 194 ; CC Odieresis 2 ; PCC O 0 0 ; PCC dieresis 139 194 ; CC Ograve 2 ; PCC O 0 0 ; PCC grave 139 194 ; CC oacute 2 ; PCC o 0 0 ; PCC acute 83 0 ; CC ocircumflex 2 ; PCC o 0 0 ; PCC circumflex 83 0 ; CC odieresis 2 ; PCC o 0 0 ; PCC dieresis 83 0 ; CC ograve 2 ; PCC o 0 0 ; PCC grave 83 0 ; CC Atilde 2 ; PCC A 0 0 ; PCC tilde 111 194 ; CC atilde 2 ; PCC a 0 0 ; PCC tilde 55 0 ; CC Ntilde 2 ; PCC N 0 0 ; PCC tilde 139 194 ; CC ntilde 2 ; PCC n 0 0 ; PCC tilde 83 0 ; CC Otilde 2 ; PCC O 0 0 ; PCC tilde 139 194 ; CC otilde 2 ; PCC o 0 0 ; PCC tilde 83 0 ; CC Aring 2 ; PCC A 0 0 ; PCC ring 153 194 ; CC aring 2 ; PCC a 0 0 ; PCC ring 97 0 ; EndComposites EndFontMetrics gle-graphics-4.2.4c/src/fonts/mkencoding.pl0000775000000000000000000000565511676336540017355 0ustar rootroot######################################################################## # # # GLE - Graphics Layout Engine # # # # Modified BSD License # # # # Copyright (C) 2009 GLE. # # # # Redistribution and use in source and binary forms, with or without # # modification, are permitted provided that the following conditions # # are met: # # # # 1. Redistributions of source code must retain the above copyright # # notice, this list of conditions and the following disclaimer. # # # # 2. Redistributions in binary form must reproduce the above # # copyright notice, this list of conditions and the following # # disclaimer in the documentation and/or other materials provided with # # the distribution. # # # # 3. The name of the author may not be used to endorse or promote # # products derived from this software without specific prior written # # permission. # # # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR # # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY # # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE # # GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER # # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN # # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # # ######################################################################## open(FILE, "<:utf8", $ARGV[0]); open(OUT, ">:utf8", "$ARGV[0].2"); while ($line = ) { $line =~ s/[\n\r]+$//g; $x = sprintf("%04x",ord($line)); print OUT "\$$x, ; cyr$x ! $line\n"; } close(OUT); close(FILE); gle-graphics-4.2.4c/src/fonts/font.dat0000664000000000000000000001256511676336540016335 0ustar rootroot! font number metricfile vectorfile bitmapfile name rm 1 pstr.fmt texcmr.fve tr.fmt % Times rmb 3 pstb.fmt texcmb.fve tb.fmt - B(rm) rmi 2 psti.fmt texcmmi.fve ti.fmt - I(rm) rmbi 4 pstbi.fmt texcmb.fve tbi.fmt - BI(rm) ss 5 psh.fmt texcmitt.fve h.fmt % Sans Serif ssb 7 pshb.fmt texcmitt.fve hb.fmt - B(ss) ssi 6 psho.fmt texcmitt.fve hi.fmt - I(ss) ssbi 8 pshbo.fmt texcmitt.fve hbi.fmt - BI(ss) tt 82 psc.fmt texcmr.fve tr.fmt % Typewriter ttb 84 pscb.fmt texcmb.fve tb.fmt - B(tt) tti 83 psco.fmt texcmmi.fve ti.fmt - I(tt) ttbi 85 pscbo.fmt texcmb.fve tbi.fmt - BI(tt) pstr 59 pstr.fmt pstr.fve pstr.fmt % PS Times pstb 56 pstb.fmt pstb.fve pstb.fmt - B(pstr) psti 58 psti.fmt psti.fve psti.fmt - I(pstr) pstbi 57 pstbi.fmt pstbi.fve pstbi.fmt - BI(pstr) psh 35 psh.fmt psh.fve psh.fmt % PS Helvetica pshb 36 pshb.fmt pshb.fve pshb.fmt - B(psh) psho 42 psho.fmt psho.fve psho.fmt - I(psh) pshbo 37 pshbo.fmt pshbo.fve pshbo.fmt - BI(psh) pshc 38 pshc.fmt pshc.fve pshc.fmt % PS Helvetica Condensed pshcb 39 pshcb.fmt pshcb.fve pshcb.fmt - B(pshc) pshcdo 41 pshcdo.fmt pshcdo.fve pshcdo.fmt - I(pshc) pshcbo 40 pshcbo.fmt pshcbo.fve pshcbo.fmt - BI(pshc) pshn 43 pshn.fmt pshn.fve pshn.fmt % PS Helvetica Narrow pshnb 44 pshnb.fmt pshnb.fve pshnb.fmt - B(pshn) pshno 46 pshno.fmt pshno.fve pshno.fmt - I(pshn) pshnbo 45 pshnbo.fmt pshnbo.fve pshnbo.fmt - BI(pshn) psncsr 50 psncsr.fmt psncsr.fve psncsr.fmt % PS New Century Schoolbook psncsb 47 psncsb.fmt psncsb.fve psncsb.fmt - B(psncsr) psncsi 49 psncsi.fmt psncsi.fve psncsi.fmt - I(psncsr) psncsbi 48 psncsbi.fmt psncsbi.fve psncsbi.fmt - BI(psncsr) pspr 54 pspr.fmt pspr.fve pspr.fmt % PS Palatino pspb 51 pspb.fmt pspb.fve pspb.fmt - B(pspr) pspi 53 pspi.fmt pspi.fve pspi.fmt - I(pspr) pspbi 52 pspbi.fmt pspbi.fve pspbi.fmt - BI(pspr) psagb 24 psagb.fmt psagb.fve psagb.fmt % PS AvantGarde psagd 26 psagd.fmt psagd.fve psagd.fmt - B(psagb) psagbo 25 psagbo.fmt psagbo.fve psagbo.fmt - I(psagb) psagdo 27 psagdo.fmt psagdo.fve psagdo.fmt - BI(psagb) psbl 86 psbl.fmt psbl.fve psbl.fmt % PS Bookman psbd 28 psbd.fmt psbd.fve psbd.fmt - B(psbl) psbli 30 psbli.fmt psbli.fve psbli.fmt - I(psbl) psbdi 29 psbdi.fmt psbdi.fve psbdi.fmt - BI(psbl) psc 31 psc.fmt psc.fve psc.fmt % PS Courier pscb 32 pscb.fmt pscb.fve pscb.fmt - B(psc) psco 34 psco.fmt psco.fve psco.fmt - I(psc) pscbo 33 pscbo.fmt pscbo.fve pscbo.fmt - BI(psc) pssym 55 pssym.fmt pssym.fve pssym.fmt % PS Symbol pszcmi 60 pszcmi.fmt pszcmi.fve pszcmi.fmt % PS ZapfChancery pszd 61 pszd.fmt pszd.fve pszd.fmt % PS ZapfDingbats glemark 12 glemark.fmt glemark.fve glemark.fmt % GLE Marker texcmr 17 texcmr.fmt texcmr.fve texcmr.fmt % TeX CM texcmb 13 texcmb.fmt texcmb.fve texcmb.fmt - B(texcmr) texcmti 22 texcmti.fmt texcmti.fve texcmti.fmt - I(texcmr) texcmss 18 texcmss.fmt texcmss.fve texcmss.fmt % TeX CM Sans Serif texcmssb 19 texcmssb.fmt texcmssb.fve texcmssb.fmt - B(texcmss) texcmssi 20 texcmssi.fmt texcmssi.fve texcmssi.fmt - I(texcmss) texcmtt 23 texcmtt.fmt texcmtt.fve texcmtt.fmt % TeX CM Typewriter texcmitt 15 texcmitt.fmt texcmitt.fve texcmitt.fmt - I(texcmtt) texcmsy 21 texcmsy.fmt texcmsy.fve texcmsy.fmt % TeX CM Symbol texcmex 14 texcmex.fmt texcmex.fve texcmex.fmt % TeX CM Extensible texcmmi 16 texcmmi.fmt texcmmi.fve texcmmi.fmt % TeX CM Maths Italic texmi 9 texcmmi.fmt texcmmi.fve texcmmi.fmt % TeX Math Italic texsy 10 texcmsy.fmt texcmsy.fve texcmsy.fmt % TeX Math Greek Symbols texex 11 texcmex.fmt texcmex.fve texcmex.fmt % TeX Math Extensible Characters plba 62 plba.fmt plba.fve plba.fmt % Plotter Block Ascii plcr 66 plcr.fmt plcr.fve plcr.fmt % Plotter Complex plci 65 plci.fmt plci.fve plci.fmt - I(plcr) plcc 63 plcc.fmt plcc.fve plcc.fmt % Plotter Complex Cartographic plcg 64 plcg.fmt plcg.fve plcg.fmt % Plotter Complex Gothic plcs 67 plcs.fmt plcs.fve plcs.fmt % Plotter Complex Script pldr 68 pldr.fmt pldr.fve pldr.fmt % Plotter Duplex plge 69 plge.fmt plge.fve plge.fmt % Plotter Gothic English plgg 70 plgg.fmt plgg.fve plgg.fmt % Plotter Gothic German plgi 71 plgi.fmt plgi.fve plgi.fmt % Plotter Gothic Italian plsa 72 plsa.fmt plsa.fve plsa.fmt % Plotter Simplex Ascii plsg 73 plsg.fmt plsg.fve plsg.fmt % Plotter Simplex German plsr 74 plsr.fmt plsr.fve plsr.fmt % Plotter Simplex plss 75 plss.fmt plss.fve plss.fmt % Plotter Simplex Script plsym1 76 plsym1.fmt plsym1.fve plsym1.fmt % Plotter Symbols One plsym2 77 plsym2.fmt plsym2.fve plsym2.fmt % Plotter Symbols Two pltr 79 pltr.fmt pltr.fve pltr.fmt % Plotter Triplex plti 78 plti.fmt plti.fve plti.fmt - I(pltr) plba 80 plba.fmt plba.fve plba.fmt % Plotter Block Ascii plsa 81 plsa.fmt plsa.fve plsa.fmt % Plotter Simplex Ascii arial8 87 arial8.fmt arial8.fve arial8.fmt % Arial Cyrillic arial8b 88 arialbd8.fmt arialbd8.fve arialbd8.fmt - B(arial8) arial8i 89 ariali8.fmt ariali8.fve ariali8.fmt - I(arial8) arial8bi 90 arialbi8.fmt arialbi8.fve arialbi8.fmt - BI(arial8) cour8 91 cour8.fmt cour8.fve cour8.fmt % Courier Cyrillic cour8b 92 courbd8.fmt courbd8.fve courbd8.fmt - B(cour8) cour8i 93 couri8.fmt couri8.fve couri8.fmt - I(cour8) cour8bi 94 courbi8.fmt courbi8.fve courbi8.fmt - BI(cour8) times8 95 times8.fmt times8.fve times8.fmt % Times Cyrillic times8b 96 timesbd8.fmt timesbd8.fve timesbd8.fmt - B(times8) times8i 97 timesi8.fmt timesi8.fve timesi8.fmt - I(times8) times8bi 98 timesbi8.fmt timesbi8.fve timesbi8.fmt - BI(times8) gle-graphics-4.2.4c/src/fonts/texcmss.afm0000664000000000000000000002066111676336540017044 0ustar rootrootStartFontMetrics 2.0 Comment Made from TEX tfm file using TFMTOAFM.bas FontName CMSS10 EncodingScheme TEXENCODING FullName CMSS10 FamilyName CMSS10 Weight Medium ItalicAngle 0 IsFixedPitch false UnderlinePosition -97 UnderlineThickness 73 FontBBox 0 -300 1001 1001 CapHeight 729 XHeight 156 Descender -219 Ascender 729 StartCharMetrics 127 C 1 ; WX 833 ; N C1 ; B 0 0 833 694 ; C 2 ; WX 777 ; N C2 ; B 0 0 777 694 ; C 3 ; WX 611 ; N C3 ; B 0 0 611 694 ; C 4 ; WX 666 ; N C4 ; B 0 0 666 694 ; C 5 ; WX 708 ; N C5 ; B 0 0 708 694 ; C 6 ; WX 722 ; N C6 ; B 0 0 722 694 ; C 7 ; WX 777 ; N C7 ; B 0 0 777 694 ; C 8 ; WX 722 ; N C8 ; B 0 0 722 694 ; C 9 ; WX 777 ; N C9 ; B 0 0 777 694 ; C 10 ; WX 722 ; N C10 ; B 0 0 722 694 ; C 11 ; WX 583 ; N C11 ; B 0 0 583 694 ; L i C14 L l C15 C 12 ; WX 536 ; N C12 ; B 0 0 536 694 ; C 13 ; WX 536 ; N C13 ; B 0 0 536 694 ; C 14 ; WX 813 ; N C14 ; B 0 0 813 694 ; C 15 ; WX 813 ; N C15 ; B 0 0 813 694 ; C 16 ; WX 238 ; N C16 ; B 0 0 238 444 ; C 17 ; WX 266 ; N C17 ; B 0 -194 266 444 ; C 18 ; WX 500 ; N C18 ; B 0 0 500 694 ; C 19 ; WX 500 ; N C19 ; B 0 0 500 694 ; C 20 ; WX 500 ; N C20 ; B 0 0 500 631 ; C 21 ; WX 500 ; N C21 ; B 0 0 500 694 ; C 22 ; WX 500 ; N C22 ; B 0 0 500 608 ; C 23 ; WX 666 ; N C23 ; B 0 0 666 694 ; C 24 ; WX 444 ; N C24 ; B 0 -170 444 0 ; C 25 ; WX 480 ; N C25 ; B 0 0 480 694 ; C 26 ; WX 722 ; N C26 ; B 0 0 722 444 ; C 27 ; WX 777 ; N C27 ; B 0 0 777 444 ; C 28 ; WX 500 ; N C28 ; B 0 -97 500 541 ; C 29 ; WX 861 ; N C29 ; B 0 0 861 694 ; C 30 ; WX 972 ; N C30 ; B 0 0 972 694 ; C 31 ; WX 777 ; N C31 ; B 0 -48 777 743 ; C 32 ; WX 234 ; N C32 ; B 0 0 234 444 ; C 33 ; WX 319 ; N C33 ; B 0 0 319 694 ; C 34 ; WX 500 ; N C34 ; B 0 0 500 694 ; C 35 ; WX 833 ; N C35 ; B 0 -194 833 694 ; C 36 ; WX 500 ; N C36 ; B 0 -55 500 750 ; C 37 ; WX 833 ; N C37 ; B 0 -55 833 750 ; C 38 ; WX 758 ; N C38 ; B 0 0 758 694 ; C 39 ; WX 277 ; N C39 ; B 0 0 277 694 ; L C39 C34 C 40 ; WX 388 ; N C40 ; B 0 -250 388 750 ; C 41 ; WX 388 ; N C41 ; B 0 -250 388 750 ; C 42 ; WX 500 ; N C42 ; B 0 0 500 750 ; C 43 ; WX 777 ; N C43 ; B 0 -83 777 583 ; C 44 ; WX 277 ; N C44 ; B 0 -125 277 83 ; C 45 ; WX 333 ; N C45 ; B 0 0 333 444 ; C 46 ; WX 277 ; N C46 ; B 0 0 277 83 ; C 47 ; WX 500 ; N C47 ; B 0 -250 500 750 ; C 48 ; WX 500 ; N C48 ; B 0 0 500 655 ; C 49 ; WX 500 ; N C49 ; B 0 0 500 655 ; C 50 ; WX 500 ; N C50 ; B 0 0 500 655 ; C 51 ; WX 500 ; N C51 ; B 0 0 500 655 ; C 52 ; WX 500 ; N C52 ; B 0 0 500 655 ; C 53 ; WX 500 ; N C53 ; B 0 0 500 655 ; C 54 ; WX 500 ; N C54 ; B 0 0 500 655 ; C 55 ; WX 500 ; N C55 ; B 0 0 500 655 ; C 56 ; WX 500 ; N C56 ; B 0 0 500 655 ; C 57 ; WX 500 ; N C57 ; B 0 0 500 655 ; C 58 ; WX 277 ; N C58 ; B 0 0 277 444 ; C 59 ; WX 277 ; N C59 ; B 0 -125 277 444 ; C 60 ; WX 319 ; N C60 ; B 0 -194 319 500 ; C 61 ; WX 777 ; N C61 ; B 0 131 777 369 ; C 62 ; WX 472 ; N C62 ; B 0 -194 472 500 ; C 63 ; WX 472 ; N C63 ; B 0 0 472 694 ; C 64 ; WX 666 ; N C64 ; B 0 0 666 694 ; C 65 ; WX 666 ; N A ; B 0 0 666 694 ; C 66 ; WX 666 ; N B ; B 0 0 666 694 ; C 67 ; WX 638 ; N C ; B 0 0 638 694 ; C 68 ; WX 722 ; N D ; B 0 0 722 694 ; C 69 ; WX 597 ; N E ; B 0 0 597 694 ; C 70 ; WX 569 ; N F ; B 0 0 569 694 ; C 71 ; WX 666 ; N G ; B 0 0 666 694 ; C 72 ; WX 708 ; N H ; B 0 0 708 694 ; C 73 ; WX 277 ; N I ; B 0 0 277 694 ; C 74 ; WX 472 ; N J ; B 0 0 472 694 ; C 75 ; WX 694 ; N K ; B 0 0 694 694 ; C 76 ; WX 541 ; N L ; B 0 0 541 694 ; C 77 ; WX 875 ; N M ; B 0 0 875 694 ; C 78 ; WX 708 ; N N ; B 0 0 708 694 ; C 79 ; WX 736 ; N O ; B 0 0 736 694 ; C 80 ; WX 638 ; N P ; B 0 0 638 694 ; C 81 ; WX 736 ; N Q ; B 0 -125 736 694 ; C 82 ; WX 645 ; N R ; B 0 0 645 694 ; C 83 ; WX 555 ; N S ; B 0 0 555 694 ; C 84 ; WX 680 ; N T ; B 0 0 680 694 ; C 85 ; WX 687 ; N U ; B 0 0 687 694 ; C 86 ; WX 666 ; N V ; B 0 0 666 694 ; C 87 ; WX 944 ; N W ; B 0 0 944 694 ; C 88 ; WX 666 ; N X ; B 0 0 666 694 ; C 89 ; WX 666 ; N Y ; B 0 0 666 694 ; C 90 ; WX 611 ; N Z ; B 0 0 611 694 ; C 91 ; WX 288 ; N C91 ; B 0 -250 288 750 ; C 92 ; WX 500 ; N C92 ; B 0 0 500 694 ; C 93 ; WX 288 ; N C93 ; B 0 -250 288 750 ; C 94 ; WX 500 ; N C94 ; B 0 0 500 694 ; C 95 ; WX 277 ; N C95 ; B 0 0 277 679 ; C 96 ; WX 277 ; N C96 ; B 0 0 277 694 ; C 97 ; WX 480 ; N a ; B 0 0 480 444 ; C 98 ; WX 516 ; N b ; B 0 0 516 694 ; C 99 ; WX 444 ; N c ; B 0 0 444 444 ; C 100 ; WX 516 ; N d ; B 0 0 516 694 ; C 101 ; WX 444 ; N e ; B 0 0 444 444 ; C 102 ; WX 305 ; N f ; B 0 0 305 694 ; L f C11 L i C12 L l C13 C 103 ; WX 500 ; N g ; B 0 -194 500 444 ; C 104 ; WX 516 ; N h ; B 0 0 516 694 ; C 105 ; WX 238 ; N i ; B 0 0 238 679 ; C 106 ; WX 266 ; N j ; B 0 -194 266 679 ; C 107 ; WX 488 ; N k ; B 0 0 488 694 ; C 108 ; WX 238 ; N l ; B 0 0 238 694 ; C 109 ; WX 794 ; N m ; B 0 0 794 444 ; C 110 ; WX 516 ; N n ; B 0 0 516 444 ; C 111 ; WX 500 ; N o ; B 0 0 500 444 ; C 112 ; WX 516 ; N p ; B 0 -194 516 444 ; C 113 ; WX 516 ; N q ; B 0 -194 516 444 ; C 114 ; WX 341 ; N r ; B 0 0 341 444 ; C 115 ; WX 383 ; N s ; B 0 0 383 444 ; C 116 ; WX 361 ; N t ; B 0 0 361 571 ; C 117 ; WX 516 ; N u ; B 0 0 516 444 ; C 118 ; WX 461 ; N v ; B 0 0 461 444 ; C 119 ; WX 683 ; N w ; B 0 0 683 444 ; C 120 ; WX 461 ; N x ; B 0 0 461 444 ; C 121 ; WX 461 ; N y ; B 0 -194 461 444 ; C 122 ; WX 434 ; N z ; B 0 0 434 444 ; C 123 ; WX 500 ; N C123 ; B 0 0 500 444 ; C 124 ; WX 1000 ; N C124 ; B 0 0 1000 444 ; C 125 ; WX 500 ; N C125 ; B 0 0 500 694 ; C 126 ; WX 500 ; N C126 ; B 0 0 500 676 ; C 127 ; WX 500 ; N C127 ; B 0 0 500 679 ; EndCharMetrics StartKernData StartKernPairs 143 KPX C11 C33 69 KPX C11 C39 69 KPX C11 C41 69 KPX C11 C63 69 KPX C11 C93 69 KPX C32 L -259 KPX C32 l -239 KPX C39 C33 111 KPX C39 C63 111 KPX A C -28 KPX A G -28 KPX A O -28 KPX A Q -28 KPX A T -84 KPX A U -28 KPX A V -112 KPX A W -112 KPX A Y -84 KPX A t -28 KPX D A -28 KPX D V -28 KPX D W -28 KPX D X -28 KPX D Y -28 KPX F A -84 KPX F C -28 KPX F G -28 KPX F O -28 KPX F Q -28 KPX F a -28 KPX F e -28 KPX F o -28 KPX F r -28 KPX F u -28 KPX I I 27 KPX K C -28 KPX K G -28 KPX K O -28 KPX K Q -28 KPX L T -84 KPX L V -112 KPX L W -112 KPX L Y -84 KPX O A -28 KPX O V -28 KPX O W -28 KPX O X -28 KPX O Y -28 KPX P C44 -84 KPX P C46 -84 KPX P A -84 KPX P a -28 KPX P e -28 KPX P o -28 KPX T A -84 KPX T a -84 KPX T e -84 KPX T o -84 KPX T r -84 KPX T u -84 KPX T y -84 KPX V A -84 KPX V C -28 KPX V G -28 KPX V O -28 KPX V Q -28 KPX V a -28 KPX V e -28 KPX V o -28 KPX V r -28 KPX V u -28 KPX W A -84 KPX W C -28 KPX W G -28 KPX W O -28 KPX W Q -28 KPX W a -28 KPX W e -28 KPX W o -28 KPX W r -28 KPX W u -28 KPX X C -28 KPX X G -28 KPX X O -28 KPX X Q -28 KPX Y A -84 KPX Y a -84 KPX Y e -84 KPX Y o -84 KPX Y r -84 KPX Y u -84 KPX a r -28 KPX a w -28 KPX a y -28 KPX b c 27 KPX b d 27 KPX b e 27 KPX b o 27 KPX b q 27 KPX b r -28 KPX b w -28 KPX b x -28 KPX b y -28 KPX f C33 69 KPX f C39 69 KPX f C41 69 KPX f C63 69 KPX f C93 69 KPX g j 27 KPX k a -28 KPX k c -28 KPX k e -28 KPX k o -28 KPX o c 27 KPX o d 27 KPX o e 27 KPX o o 27 KPX o q 27 KPX o r -28 KPX o w -28 KPX o x -28 KPX o y -28 KPX p c 27 KPX p d 27 KPX p e 27 KPX p o 27 KPX p q 27 KPX p r -28 KPX p w -28 KPX p x -28 KPX p y -28 KPX t w -28 KPX t y -28 KPX u w -28 KPX w a -28 KPX w c -28 KPX w e -28 KPX w o -28 KPX y C44 -84 KPX y C46 -84 KPX y a -28 KPX y e -28 KPX y o -28 EndKernPairs EndKernData EndFontMetrics gle-graphics-4.2.4c/src/fonts/plcr.afm0000664000000000000000000001235511676336540016317 0ustar rootrootStartFontMetrics 2.0 Comment Made from HERSHEY font file using SPLITFONT.BAS FontName plCR EncodingScheme TEXENCODING FullName plCR FamilyName plCR Weight Medium ItalicAngle 0 IsFixedPitch false UnderlinePosition -97 UnderlineThickness 73 FontBBox 0 -400 1001 1001 CapHeight 729 XHeight 151 Descender -219 Ascender 729 StartCharMetrics 95 C 32 ; WX 400 ; N C32 ; B 0 0 0 0 ; C 33 ; WX 415 ; N C33 ; B 161 0 268 700 ; C 34 ; WX 631 ; N C34 ; B 161 430 538 700 ; C 35 ; WX 846 ; N C35 ; B 161 0 699 592 ; C 36 ; WX 523 ; N C36 ; B 107 430 430 753 ; C 37 ; WX 784 ; N C37 ; B 99 0 700 700 ; C 38 ; WX 846 ; N C38 ; B 161 0 699 592 ; C 39 ; WX 361 ; N C39 ; B 161 430 214 700 ; C 40 ; WX 523 ; N C40 ; B 161 -215 430 861 ; C 41 ; WX 523 ; N C41 ; B 107 -215 376 861 ; C 42 ; WX 523 ; N C42 ; B 161 -215 376 861 ; C 43 ; WX 577 ; N C43 ; B 214 -215 376 861 ; C 44 ; WX 415 ; N C44 ; B 161 -161 268 107 ; C 45 ; WX 523 ; N C45 ; B 107 -215 376 861 ; C 46 ; WX 415 ; N C46 ; B 161 0 268 107 ; C 47 ; WX 792 ; N C47 ; B 107 -215 700 861 ; C 48 ; WX 685 ; N C48 ; B 107 0 592 700 ; C 49 ; WX 685 ; N C49 ; B 161 0 538 700 ; C 50 ; WX 685 ; N C50 ; B 107 0 592 700 ; C 51 ; WX 685 ; N C51 ; B 107 0 592 700 ; C 52 ; WX 685 ; N C52 ; B 53 0 646 700 ; C 53 ; WX 685 ; N C53 ; B 107 0 592 700 ; C 54 ; WX 685 ; N C54 ; B 107 0 592 700 ; C 55 ; WX 685 ; N C55 ; B 107 0 592 700 ; C 56 ; WX 685 ; N C56 ; B 107 0 592 700 ; C 57 ; WX 685 ; N C57 ; B 107 0 592 700 ; C 58 ; WX 415 ; N C58 ; B 161 0 268 484 ; C 59 ; WX 415 ; N C59 ; B 161 -161 268 484 ; C 60 ; WX 784 ; N C60 ; B 133 0 666 600 ; C 61 ; WX 577 ; N C61 ; B 214 -215 376 861 ; C 62 ; WX 784 ; N C62 ; B 133 0 666 600 ; C 63 ; WX 685 ; N C63 ; B 107 0 592 700 ; C 64 ; WX 884 ; N C64 ; B 99 0 799 700 ; C 65 ; WX 739 ; N C65 ; B 0 0 753 700 ; C 66 ; WX 846 ; N C66 ; B 107 0 700 700 ; C 67 ; WX 739 ; N C67 ; B 107 0 646 700 ; C 68 ; WX 846 ; N C68 ; B 107 0 753 700 ; C 69 ; WX 792 ; N C69 ; B 107 0 646 700 ; C 70 ; WX 739 ; N C70 ; B 107 0 646 700 ; C 71 ; WX 846 ; N C71 ; B 107 0 753 700 ; C 72 ; WX 900 ; N C72 ; B 107 0 807 700 ; C 73 ; WX 469 ; N C73 ; B 107 0 376 700 ; C 74 ; WX 631 ; N C74 ; B 53 0 538 700 ; C 75 ; WX 846 ; N C75 ; B 107 0 807 700 ; C 76 ; WX 685 ; N C76 ; B 107 0 646 700 ; C 77 ; WX 1008 ; N C77 ; B 107 0 915 700 ; C 78 ; WX 846 ; N C78 ; B 107 0 753 700 ; C 79 ; WX 792 ; N C79 ; B 107 0 700 700 ; C 80 ; WX 792 ; N C80 ; B 107 0 700 700 ; C 81 ; WX 792 ; N C81 ; B 107 -161 700 700 ; C 82 ; WX 846 ; N C82 ; B 107 0 753 700 ; C 83 ; WX 792 ; N C83 ; B 161 0 646 700 ; C 84 ; WX 792 ; N C84 ; B 107 0 699 700 ; C 85 ; WX 900 ; N C85 ; B 107 0 807 700 ; C 86 ; WX 739 ; N C86 ; B 0 0 753 700 ; C 87 ; WX 954 ; N C87 ; B 53 0 915 700 ; C 88 ; WX 792 ; N C88 ; B 53 0 753 700 ; C 89 ; WX 685 ; N C89 ; B 0 0 700 700 ; C 90 ; WX 685 ; N C90 ; B 107 0 592 700 ; C 91 ; WX 451 ; N C91 ; B 133 -233 366 833 ; C 92 ; WX 300 ; N C92 ; B 0 0 0 0 ; C 93 ; WX 451 ; N C93 ; B 99 -233 333 833 ; C 94 ; WX 300 ; N C94 ; B 0 0 0 0 ; C 95 ; WX 300 ; N C95 ; B 0 0 0 0 ; C 96 ; WX 318 ; N C96 ; B 133 500 199 700 ; C 97 ; WX 739 ; N C97 ; B 161 0 646 484 ; C 98 ; WX 792 ; N C98 ; B 107 0 700 700 ; C 99 ; WX 631 ; N C99 ; B 107 0 538 484 ; C 100 ; WX 792 ; N C100 ; B 107 0 700 700 ; C 101 ; WX 631 ; N C101 ; B 107 0 538 484 ; C 102 ; WX 577 ; N C102 ; B 107 0 538 700 ; C 103 ; WX 685 ; N C103 ; B 107 -215 538 484 ; C 104 ; WX 900 ; N C104 ; B 107 0 807 700 ; C 105 ; WX 469 ; N C105 ; B 107 0 376 700 ; C 106 ; WX 469 ; N C106 ; B 53 -215 322 700 ; C 107 ; WX 846 ; N C107 ; B 107 0 807 700 ; C 108 ; WX 469 ; N C108 ; B 107 0 376 700 ; C 109 ; WX 1331 ; N C109 ; B 107 0 1238 484 ; C 110 ; WX 900 ; N C110 ; B 107 0 807 484 ; C 111 ; WX 685 ; N C111 ; B 107 0 592 484 ; C 112 ; WX 792 ; N C112 ; B 107 -215 700 484 ; C 113 ; WX 739 ; N C113 ; B 107 -215 700 484 ; C 114 ; WX 685 ; N C114 ; B 107 0 592 484 ; C 115 ; WX 685 ; N C115 ; B 161 0 538 484 ; C 116 ; WX 577 ; N C116 ; B 107 0 484 700 ; C 117 ; WX 900 ; N C117 ; B 107 0 807 484 ; C 118 ; WX 739 ; N C118 ; B 53 0 700 484 ; C 119 ; WX 954 ; N C119 ; B 53 0 915 484 ; C 120 ; WX 739 ; N C120 ; B 53 0 700 484 ; C 121 ; WX 739 ; N C121 ; B 53 -215 700 484 ; C 122 ; WX 631 ; N C122 ; B 107 0 538 484 ; C 123 ; WX 485 ; N C123 ; B 166 -233 333 833 ; C 124 ; WX 523 ; N C124 ; B 161 -215 430 861 ; C 125 ; WX 485 ; N C125 ; B 166 -233 333 833 ; C 126 ; WX 523 ; N C126 ; B 161 484 376 700 ; EndCharMetrics EndFontMetrics gle-graphics-4.2.4c/src/fonts/checkfonts.pl0000664000000000000000000000650411676336540017355 0ustar rootroot######################################################################## # # # GLE - Graphics Layout Engine # # # # Modified BSD License # # # # Copyright (C) 2009 GLE. # # # # Redistribution and use in source and binary forms, with or without # # modification, are permitted provided that the following conditions # # are met: # # # # 1. Redistributions of source code must retain the above copyright # # notice, this list of conditions and the following disclaimer. # # # # 2. Redistributions in binary form must reproduce the above # # copyright notice, this list of conditions and the following # # disclaimer in the documentation and/or other materials provided with # # the distribution. # # # # 3. The name of the author may not be used to endorse or promote # # products derived from this software without specific prior written # # permission. # # # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR # # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY # # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE # # GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER # # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN # # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # # ######################################################################## $files1 = `/bin/ls *.gle`; $files2 = `/bin/ls *.afm`; $files = "$files1 $files2"; $files =~ s/\.gle//g; $files =~ s/\.afm//g; @LIST = split(/\s+/, $files); foreach $f (@LIST) { $FONT{$f} = 1; } open(IN, "font.dat") || die "Can't open font.dat"; while ($line = ) { chomp($line); if (!($line =~ /^\s*\!/)) { if ($line =~ /^([^\s]+)\s/) { $HAS{$1} = 1; } } } close(IN); foreach $f (sort keys %FONT) { if ($HAS{$f} != 1) { print "Missing: $f\n"; } } @AFM = split(/\s+/, $files2); $count = 0; foreach $afm (@AFM) { $file = $afm; $file =~ s/\.afm//g; if (-f "$file.gle") { print "$afm [GLE]\n"; } else { print "$afm\n"; } $count++; } print "Total: $count\n"; gle-graphics-4.2.4c/src/fonts/pldr.gle0000664000000000000000000010706511676336540016327 0ustar rootrootdfont design= 1428 dfont char=33 amove 238 95 aline 238 47 aline 285 47 aline 285 95 aline 238 95 amove 238 142 aline 190 95 aline 190 47 aline 238 0 aline 285 0 aline 333 47 aline 333 95 aline 285 142 aline 238 142 amove 285 333 aline 238 333 aline 238 1000 aline 285 1000 aline 285 333 stroke dfont endchar dfont char=34 amove 190 666 aline 285 714 aline 333 809 aline 333 952 aline 285 1000 aline 238 1000 aline 190 952 aline 190 904 aline 238 857 aline 285 857 aline 333 904 aline 285 714 amove 333 809 aline 285 857 amove 238 952 aline 238 904 aline 285 904 aline 285 952 aline 238 952 stroke dfont endchar stroke dfont endchar dfont char=36 amove 238 142 aline 285 95 aline 380 47 aline 523 47 aline 666 95 aline 714 190 aline 714 285 aline 666 380 aline 619 428 aline 238 619 aline 190 666 aline 142 761 aline 142 857 aline 238 952 aline 380 1000 aline 523 1000 aline 666 952 aline 761 857 aline 666 857 aline 619 904 aline 523 952 aline 380 952 aline 238 904 aline 190 857 aline 190 761 aline 238 666 aline 619 476 aline 714 380 aline 761 285 aline 761 190 aline 714 95 aline 666 47 aline 523 0 aline 380 0 aline 238 47 aline 142 142 aline 238 142 amove 571 47 aline 714 142 amove 476 -191 aline 428 -191 aline 428 1190 aline 476 1190 aline 476 -191 stroke dfont endchar dfont char=37 amove 142 0 aline 1000 1000 aline 904 952 aline 761 904 aline 619 904 aline 476 952 aline 380 1000 aline 285 1000 aline 190 952 aline 142 857 aline 142 761 aline 238 666 aline 333 666 aline 428 714 aline 476 809 aline 476 904 aline 380 1000 amove 809 333 aline 714 285 aline 666 190 aline 666 95 aline 761 0 aline 857 0 aline 952 47 aline 1000 142 aline 1000 238 aline 904 333 aline 809 333 stroke dfont endchar stroke dfont endchar dfont char=39 amove 190 761 aline 238 809 aline 285 809 aline 333 761 aline 333 714 aline 285 666 aline 238 666 aline 190 714 aline 190 857 aline 238 952 aline 333 1000 amove 238 952 aline 190 761 amove 238 761 aline 238 714 aline 285 714 aline 285 761 aline 238 761 amove 238 809 aline 190 857 stroke dfont endchar dfont char=40 amove 523 -334 aline 476 -334 aline 380 -239 aline 285 -96 aline 190 95 aline 142 333 aline 142 523 aline 190 761 aline 285 952 aline 380 1095 aline 476 1190 aline 523 1190 aline 428 1095 aline 333 952 aline 238 761 aline 190 523 aline 190 333 aline 238 95 aline 333 -96 aline 428 -239 aline 523 -334 stroke dfont endchar dfont char=41 amove 190 -334 aline 142 -334 aline 238 -239 aline 333 -96 aline 428 95 aline 476 333 aline 476 523 aline 428 761 aline 333 952 aline 238 1095 aline 142 1190 aline 190 1190 aline 285 1095 aline 380 952 aline 476 761 aline 523 523 aline 523 333 aline 476 95 aline 380 -96 aline 285 -239 aline 190 -334 stroke dfont endchar dfont char=42 amove 190 666 aline 238 952 amove 238 1000 aline 190 952 aline 190 666 aline 285 952 aline 238 1000 amove 666 1000 aline 619 952 aline 619 666 aline 666 952 amove 666 1000 aline 714 952 aline 619 666 stroke dfont endchar dfont char=43 amove 190 476 aline 1000 476 aline 1000 428 aline 190 428 aline 190 476 amove 571 857 aline 571 47 aline 619 47 aline 619 857 aline 571 857 stroke dfont endchar dfont char=44 amove 238 95 aline 238 47 aline 285 47 aline 285 95 aline 238 95 amove 333 47 aline 285 0 aline 238 0 aline 190 47 aline 190 95 aline 238 142 aline 285 142 aline 333 95 aline 333 -48 aline 285 -143 aline 190 -191 amove 285 -143 aline 333 47 amove 285 0 aline 333 -48 stroke dfont endchar dfont char=45 amove 190 476 aline 1000 476 aline 1000 428 aline 190 428 aline 190 476 stroke dfont endchar dfont char=46 amove 238 95 aline 238 47 aline 285 47 aline 285 95 aline 238 95 amove 238 142 aline 190 95 aline 190 47 aline 238 0 aline 285 0 aline 333 47 aline 333 95 aline 285 142 aline 238 142 stroke dfont endchar dfont char=47 amove 142 -334 aline 95 -334 aline 952 1190 aline 1000 1190 aline 142 -334 stroke dfont endchar dfont char=48 amove 428 1000 aline 285 952 aline 190 809 aline 142 571 aline 142 428 aline 190 190 aline 285 47 aline 428 0 aline 523 0 aline 666 47 aline 761 190 aline 809 428 aline 809 571 aline 761 809 aline 666 952 aline 523 1000 aline 428 1000 amove 333 952 aline 238 809 aline 190 571 aline 190 428 aline 238 190 aline 333 47 amove 285 95 aline 428 47 aline 523 47 aline 666 95 amove 619 47 aline 714 190 aline 761 428 aline 761 571 aline 714 809 aline 619 952 amove 666 904 aline 523 952 aline 428 952 aline 285 904 stroke dfont endchar dfont char=49 amove 523 0 aline 523 1000 aline 380 857 aline 285 809 aline 285 761 aline 380 809 aline 476 904 aline 476 -1 aline 523 -1 stroke dfont endchar dfont char=50 amove 142 0 aline 571 476 aline 666 619 aline 714 714 aline 714 809 aline 666 904 aline 571 952 aline 380 952 aline 285 904 aline 238 809 aline 238 761 aline 190 761 aline 190 809 aline 238 904 aline 285 952 aline 380 1000 aline 571 1000 aline 666 952 aline 714 904 aline 761 809 aline 761 714 aline 714 619 aline 619 476 aline 190 0 amove 142 0 aline 809 0 aline 809 47 aline 190 47 stroke dfont endchar dfont char=51 amove 190 142 aline 333 47 amove 190 190 aline 142 190 aline 190 95 aline 238 47 aline 380 0 aline 523 0 aline 666 47 aline 761 142 aline 809 285 aline 809 333 aline 761 476 aline 666 571 aline 523 619 aline 428 619 amove 428 571 aline 761 1000 aline 238 1000 aline 238 952 aline 714 952 amove 714 1000 aline 380 571 aline 523 571 aline 666 523 aline 761 380 amove 761 238 aline 666 95 aline 523 47 aline 380 47 aline 238 95 aline 190 190 amove 571 47 aline 714 142 aline 761 285 aline 761 333 aline 714 476 aline 571 571 stroke dfont endchar dfont char=52 amove 190 238 aline 619 857 aline 619 0 aline 666 0 aline 666 1000 aline 142 238 aline 857 238 aline 857 285 aline 190 285 stroke dfont endchar dfont char=53 amove 190 142 aline 333 47 amove 190 190 aline 142 190 aline 190 95 aline 238 47 aline 380 0 aline 523 0 aline 666 47 aline 761 142 aline 809 285 aline 809 380 aline 761 523 aline 666 619 aline 523 666 aline 380 666 aline 238 619 aline 285 952 aline 714 952 aline 714 1000 aline 238 1000 aline 190 571 aline 238 571 aline 333 619 aline 523 619 aline 666 571 aline 761 428 amove 761 238 aline 666 95 aline 523 47 aline 380 47 aline 238 95 aline 190 190 amove 571 47 aline 714 142 aline 761 285 aline 761 380 aline 714 523 aline 571 619 stroke dfont endchar dfont char=54 amove 238 238 aline 333 95 aline 476 47 aline 523 47 aline 666 95 aline 761 238 amove 761 380 aline 666 523 aline 523 571 aline 476 571 aline 333 523 aline 238 380 amove 238 333 aline 285 476 aline 428 571 amove 571 571 aline 714 476 aline 761 333 aline 761 285 aline 714 142 aline 571 47 amove 428 47 aline 285 142 aline 238 333 aline 238 571 aline 285 809 aline 380 952 amove 333 904 aline 476 952 aline 571 952 aline 714 904 amove 666 952 aline 714 857 aline 761 857 aline 714 952 aline 571 1000 aline 476 1000 aline 333 952 aline 238 809 aline 190 571 aline 190 333 aline 238 142 aline 333 47 aline 476 0 aline 523 0 aline 666 47 aline 761 142 aline 809 285 aline 809 333 aline 761 476 aline 666 571 aline 523 619 aline 476 619 aline 333 571 aline 238 476 stroke dfont endchar dfont char=55 amove 333 0 aline 809 1000 aline 142 1000 aline 142 952 aline 761 952 amove 761 1000 aline 285 0 aline 333 0 stroke dfont endchar dfont char=56 amove 380 1000 aline 238 952 aline 190 857 aline 190 761 aline 238 666 aline 285 619 aline 380 571 aline 571 523 aline 666 476 aline 714 428 aline 761 333 aline 761 190 aline 714 95 aline 571 47 aline 380 47 aline 238 95 aline 190 190 aline 190 333 aline 238 428 aline 285 476 aline 380 523 aline 571 571 aline 666 619 aline 714 666 aline 761 761 aline 761 857 aline 714 952 aline 571 1000 aline 380 1000 amove 285 952 aline 238 857 aline 238 761 aline 285 666 aline 380 619 aline 571 571 aline 666 523 aline 761 428 aline 809 333 aline 809 190 aline 761 95 aline 714 47 aline 571 0 aline 380 0 aline 238 47 aline 190 95 aline 142 190 aline 142 333 aline 190 428 aline 285 523 aline 380 571 aline 571 619 aline 666 666 aline 714 761 aline 714 857 aline 666 952 amove 714 904 aline 571 952 aline 380 952 aline 238 904 amove 190 142 aline 333 47 amove 619 47 aline 761 142 stroke dfont endchar dfont char=57 amove 238 95 aline 380 47 aline 476 47 aline 619 95 amove 571 47 aline 666 190 aline 714 428 aline 714 666 aline 666 857 aline 523 952 amove 380 952 aline 238 857 aline 190 714 aline 190 666 aline 238 523 aline 380 428 amove 523 428 aline 666 523 aline 714 666 amove 714 619 aline 619 476 aline 476 428 aline 428 428 aline 285 476 aline 190 619 amove 190 761 aline 285 904 aline 428 952 aline 476 952 aline 619 904 aline 714 761 amove 714 523 aline 619 428 aline 476 380 aline 428 380 aline 285 428 aline 190 523 aline 142 666 aline 142 714 aline 190 857 aline 285 952 aline 428 1000 aline 476 1000 aline 619 952 aline 714 857 aline 761 666 aline 761 428 aline 714 190 aline 619 47 aline 476 0 aline 380 0 aline 238 47 aline 190 142 aline 238 142 aline 285 47 stroke dfont endchar dfont char=58 amove 238 95 aline 238 47 aline 285 47 aline 285 95 aline 238 95 amove 238 142 aline 190 95 aline 190 47 aline 238 0 aline 285 0 aline 333 47 aline 333 95 aline 285 142 aline 238 142 amove 238 619 aline 238 571 aline 285 571 aline 285 619 aline 238 619 amove 238 666 aline 190 619 aline 190 571 aline 238 523 aline 285 523 aline 333 571 aline 333 619 aline 285 666 aline 238 666 stroke dfont endchar dfont char=59 amove 238 95 aline 238 47 aline 285 47 aline 285 95 aline 238 95 amove 333 47 aline 285 0 aline 238 0 aline 190 47 aline 190 95 aline 238 142 aline 285 142 aline 333 95 aline 333 -48 aline 285 -143 aline 190 -191 amove 285 -143 aline 333 47 amove 285 0 aline 333 -48 amove 238 619 aline 238 571 aline 285 571 aline 285 619 aline 238 619 amove 238 666 aline 190 619 aline 190 571 aline 238 523 aline 285 523 aline 333 571 aline 333 619 aline 285 666 aline 238 666 stroke dfont endchar dfont char=60 amove 952 857 aline 190 428 aline 952 0 stroke dfont endchar dfont char=61 amove 190 285 aline 1000 285 aline 1000 238 aline 190 238 aline 190 285 amove 190 666 aline 1000 666 aline 1000 619 aline 190 619 aline 190 666 stroke dfont endchar dfont char=62 amove 190 0 aline 952 428 aline 190 857 stroke dfont endchar dfont char=63 amove 428 95 aline 428 47 aline 476 47 aline 476 95 aline 428 95 amove 428 142 aline 380 95 aline 380 47 aline 428 0 aline 476 0 aline 523 47 aline 523 95 aline 476 142 aline 428 142 amove 428 476 aline 571 523 aline 666 571 aline 714 619 aline 761 714 aline 761 809 aline 714 904 aline 666 952 aline 523 1000 aline 380 1000 aline 238 952 aline 190 904 aline 142 809 aline 142 761 aline 190 761 aline 190 809 aline 238 904 aline 380 952 aline 523 952 aline 666 904 aline 714 809 aline 714 714 aline 666 619 aline 571 571 aline 428 523 aline 428 333 aline 476 333 aline 476 523 amove 523 523 aline 714 666 amove 714 857 aline 571 952 amove 333 952 aline 190 857 stroke dfont endchar dfont char=64 amove 523 238 aline 476 285 aline 428 380 aline 428 523 aline 476 666 aline 571 761 amove 857 761 aline 809 380 aline 809 285 aline 904 238 aline 999 238 aline 1095 333 aline 1142 476 aline 1142 571 aline 1095 714 aline 1047 809 aline 952 904 aline 857 952 aline 714 1000 aline 571 1000 aline 428 952 aline 333 904 aline 238 809 aline 190 714 aline 142 571 aline 142 428 aline 190 285 aline 238 190 aline 333 95 aline 428 47 aline 571 0 aline 714 0 aline 857 47 aline 952 95 aline 1000 142 amove 904 238 aline 857 285 aline 857 380 aline 904 761 amove 857 619 aline 809 714 aline 714 761 aline 571 761 aline 476 714 aline 428 666 aline 380 523 aline 380 380 aline 428 285 aline 523 238 aline 666 238 aline 761 285 aline 809 380 stroke dfont endchar dfont char=65 amove 95 0 aline 142 0 aline 476 857 aline 809 0 aline 857 0 aline 476 1000 aline 95 0 amove 190 238 aline 761 238 amove 714 285 aline 238 285 stroke dfont endchar dfont char=66 amove 190 0 aline 190 1000 aline 571 1000 aline 714 952 aline 761 904 aline 809 809 aline 809 666 aline 761 571 aline 714 523 aline 571 476 amove 571 523 aline 714 571 aline 761 666 aline 761 809 aline 714 904 aline 571 952 aline 238 952 aline 238 47 aline 571 47 aline 714 95 aline 761 190 aline 761 333 aline 714 428 aline 571 476 aline 238 476 amove 238 523 aline 571 523 aline 714 476 aline 761 428 aline 809 333 aline 809 190 aline 761 95 aline 714 47 aline 571 -1 aline 190 -1 stroke dfont endchar dfont char=67 amove 857 238 aline 809 142 aline 714 47 aline 619 -1 aline 428 -1 aline 333 47 aline 238 142 aline 190 238 aline 142 380 aline 142 619 aline 190 761 aline 238 857 aline 333 952 aline 428 1000 aline 619 1000 aline 714 952 aline 809 857 aline 857 761 aline 809 761 aline 761 857 aline 714 904 aline 619 952 aline 428 952 aline 333 904 aline 238 761 aline 190 619 aline 190 380 aline 238 238 aline 333 95 aline 428 47 aline 619 47 aline 714 95 aline 761 142 aline 809 238 aline 857 238 stroke dfont endchar dfont char=68 amove 190 0 aline 190 1000 aline 523 1000 aline 666 952 aline 761 857 aline 809 761 aline 857 619 aline 857 380 aline 809 238 aline 761 142 aline 666 47 aline 523 0 aline 190 0 amove 238 47 aline 238 952 aline 523 952 aline 666 904 aline 714 857 aline 761 761 aline 809 619 aline 809 380 aline 761 238 aline 714 142 aline 666 95 aline 523 47 aline 238 47 stroke dfont endchar dfont char=69 amove 190 0 aline 190 1000 aline 761 1000 aline 761 952 aline 238 952 aline 238 47 aline 761 47 aline 761 -1 aline 190 -1 amove 238 476 aline 523 476 aline 523 523 aline 238 523 stroke dfont endchar dfont char=70 amove 190 0 aline 190 1000 aline 761 1000 aline 761 952 aline 238 952 aline 238 0 aline 190 0 amove 238 476 aline 523 476 aline 523 523 aline 238 523 stroke dfont endchar dfont char=71 amove 619 428 aline 857 428 aline 857 238 aline 809 142 aline 714 47 aline 619 0 aline 428 0 aline 333 47 aline 238 142 aline 190 238 aline 142 380 aline 142 619 aline 190 761 aline 238 857 aline 333 952 aline 428 1000 aline 619 1000 aline 714 952 aline 809 857 aline 857 761 aline 809 761 aline 761 857 aline 714 904 aline 619 952 aline 428 952 aline 333 904 aline 285 857 aline 238 761 aline 190 619 aline 190 380 aline 238 238 aline 285 142 aline 333 95 aline 428 47 aline 619 47 aline 714 95 aline 761 142 aline 809 238 aline 809 380 aline 619 380 aline 619 428 stroke dfont endchar dfont char=72 amove 190 0 aline 190 1000 aline 238 1000 aline 238 0 aline 190 0 amove 238 476 aline 809 476 amove 809 523 aline 238 523 amove 857 1000 aline 809 1000 aline 809 0 aline 857 0 aline 857 1000 stroke dfont endchar dfont char=73 amove 238 0 aline 190 0 aline 190 1000 aline 238 1000 aline 238 0 stroke dfont endchar dfont char=74 amove 142 238 aline 190 238 aline 238 95 aline 333 47 aline 428 47 aline 523 95 aline 571 238 aline 571 1000 aline 619 1000 aline 619 238 aline 571 95 aline 523 47 aline 428 -1 aline 333 -1 aline 238 47 aline 190 95 aline 142 238 stroke dfont endchar dfont char=75 amove 238 0 aline 190 0 aline 190 1000 aline 238 1000 aline 238 0 amove 238 380 aline 857 1000 aline 809 1000 aline 238 428 amove 380 571 aline 809 0 aline 857 0 aline 428 571 stroke dfont endchar dfont char=76 amove 190 0 aline 190 1000 aline 238 1000 aline 238 47 aline 761 47 aline 761 0 aline 190 0 stroke dfont endchar dfont char=77 amove 190 0 aline 238 0 aline 238 761 aline 571 0 aline 904 761 aline 904 0 aline 952 0 aline 952 1000 aline 571 142 aline 190 1000 aline 190 0 stroke dfont endchar dfont char=78 amove 190 0 aline 190 1000 aline 809 142 aline 809 1000 aline 857 1000 aline 857 0 aline 238 857 aline 238 0 aline 190 0 stroke dfont endchar dfont char=79 amove 428 1000 aline 333 952 aline 238 857 aline 190 761 aline 142 619 aline 142 380 aline 190 238 aline 238 142 aline 333 47 aline 428 0 aline 619 0 aline 714 47 aline 809 142 aline 857 238 aline 904 380 aline 904 619 aline 857 761 aline 809 857 aline 714 952 aline 619 1000 aline 428 1000 amove 476 952 aline 333 904 aline 238 761 aline 190 619 aline 190 380 aline 238 238 aline 333 95 aline 476 47 aline 571 47 aline 714 95 aline 809 238 aline 857 380 aline 857 619 aline 809 761 aline 714 904 aline 571 952 aline 476 952 stroke dfont endchar dfont char=80 amove 190 0 aline 190 1000 aline 619 1000 aline 714 952 aline 761 904 aline 809 809 aline 809 666 aline 761 571 aline 714 523 aline 619 476 aline 238 476 amove 238 523 aline 619 523 aline 714 571 aline 761 666 aline 761 809 aline 714 904 aline 619 952 aline 238 952 aline 238 0 aline 190 0 stroke dfont endchar dfont char=81 amove 571 142 aline 809 -96 aline 857 -96 aline 619 142 aline 571 142 amove 476 952 aline 333 904 aline 238 761 aline 190 619 aline 190 380 aline 238 238 aline 333 95 aline 476 47 aline 571 47 aline 714 95 aline 809 238 aline 857 380 aline 857 619 aline 809 761 aline 714 904 aline 571 952 aline 476 952 amove 428 1000 aline 333 952 aline 238 857 aline 190 761 aline 142 619 aline 142 380 aline 190 238 aline 238 142 aline 333 47 aline 428 0 aline 619 0 aline 714 47 aline 809 142 aline 857 238 aline 904 380 aline 904 619 aline 857 761 aline 809 857 aline 714 952 aline 619 1000 aline 428 1000 stroke dfont endchar dfont char=82 amove 190 0 aline 190 1000 aline 571 1000 aline 714 952 aline 761 904 aline 809 809 aline 809 666 aline 761 571 aline 714 523 aline 571 476 aline 238 476 amove 238 523 aline 571 523 aline 714 571 aline 761 666 aline 761 809 aline 714 904 aline 571 952 aline 238 952 aline 238 0 aline 190 0 amove 476 476 aline 761 0 aline 809 0 aline 523 476 stroke dfont endchar dfont char=83 amove 142 142 aline 238 142 aline 285 95 aline 380 47 aline 571 47 aline 714 95 aline 761 142 aline 761 285 aline 714 380 aline 666 428 aline 571 476 aline 333 571 aline 238 619 aline 190 666 aline 142 761 aline 142 857 aline 238 952 aline 380 1000 aline 571 1000 aline 714 952 aline 809 857 aline 714 857 aline 666 904 aline 571 952 aline 380 952 aline 238 904 aline 190 857 aline 190 761 aline 238 666 aline 333 619 aline 571 523 aline 666 476 aline 761 380 aline 809 285 aline 809 142 aline 714 47 aline 571 0 aline 380 0 aline 238 47 aline 142 142 stroke dfont endchar dfont char=84 amove 380 0 aline 380 952 amove 428 952 aline 428 0 aline 380 0 amove 714 952 aline 714 1000 aline 95 1000 aline 95 952 aline 714 952 stroke dfont endchar dfont char=85 amove 190 1000 aline 190 285 aline 238 142 aline 333 47 aline 476 0 aline 571 0 aline 714 47 aline 809 142 aline 857 285 aline 857 1000 aline 809 1000 aline 809 285 aline 761 142 aline 714 95 aline 571 47 aline 476 47 aline 333 95 aline 285 142 aline 238 285 aline 238 1000 aline 190 1000 stroke dfont endchar dfont char=86 amove 476 0 aline 95 1000 aline 142 1000 aline 476 142 aline 809 1000 aline 857 1000 aline 476 0 stroke dfont endchar dfont char=87 amove 380 0 aline 95 1000 aline 142 1000 aline 380 142 aline 619 1000 aline 857 142 aline 1095 1000 aline 1142 1000 aline 857 0 aline 619 857 aline 380 0 stroke dfont endchar dfont char=88 amove 142 0 aline 761 1000 aline 809 1000 aline 190 0 aline 142 0 amove 809 0 aline 761 0 aline 142 1000 aline 190 1000 aline 809 0 stroke dfont endchar dfont char=89 amove 476 0 aline 428 0 aline 428 523 aline 95 1000 aline 142 1000 aline 476 523 amove 428 523 aline 761 1000 aline 809 1000 aline 476 523 aline 476 0 stroke dfont endchar dfont char=90 amove 142 0 aline 761 1000 amove 809 1000 aline 190 0 amove 142 0 aline 809 0 aline 809 47 aline 190 47 amove 142 1000 aline 809 1000 amove 761 952 aline 142 952 aline 142 1000 stroke dfont endchar dfont char=91 amove 190 -334 aline 190 1190 aline 523 1190 amove 238 1190 aline 238 -334 amove 190 -334 aline 523 -334 stroke dfont endchar stroke dfont endchar dfont char=93 amove 142 -334 aline 476 -334 aline 476 1190 aline 142 1190 amove 428 1190 aline 428 -334 stroke dfont endchar stroke dfont endchar stroke dfont endchar dfont char=96 amove 238 904 aline 285 952 aline 238 1000 aline 190 952 aline 190 857 aline 238 761 aline 285 714 stroke dfont endchar dfont char=97 amove 714 142 aline 619 47 aline 523 0 aline 380 0 aline 285 47 aline 190 142 aline 142 285 aline 142 380 aline 190 523 aline 285 619 aline 380 666 aline 523 666 aline 619 619 aline 714 523 aline 523 619 aline 380 619 aline 285 571 aline 238 523 aline 190 380 aline 190 285 aline 238 142 aline 285 95 aline 380 47 aline 523 47 aline 714 142 amove 761 0 aline 714 0 aline 714 666 aline 761 666 aline 761 0 stroke dfont endchar dfont char=98 amove 238 0 aline 190 0 aline 190 1000 aline 238 1000 aline 238 0 amove 238 142 aline 333 47 aline 428 0 aline 571 0 aline 666 47 aline 761 142 aline 809 285 aline 809 380 aline 761 523 aline 666 619 aline 571 666 aline 428 666 aline 333 619 aline 238 523 aline 428 619 aline 571 619 aline 666 571 aline 714 523 aline 761 380 aline 761 285 aline 714 142 aline 666 95 aline 571 47 aline 428 47 aline 238 142 stroke dfont endchar dfont char=99 amove 714 142 aline 619 47 aline 523 0 aline 380 0 aline 285 47 aline 190 142 aline 142 285 aline 142 380 aline 190 523 aline 285 619 aline 380 666 aline 523 666 aline 619 619 aline 714 523 aline 666 476 aline 619 571 aline 523 619 aline 380 619 aline 285 571 aline 238 523 aline 190 380 aline 190 285 aline 238 142 aline 285 95 aline 380 47 aline 523 47 aline 619 95 aline 666 190 aline 714 142 stroke dfont endchar dfont char=100 amove 714 142 aline 619 47 aline 523 0 aline 380 0 aline 285 47 aline 190 142 aline 142 285 aline 142 380 aline 190 523 aline 285 619 aline 380 666 aline 523 666 aline 619 619 aline 714 523 aline 523 619 aline 380 619 aline 285 571 aline 238 523 aline 190 380 aline 190 285 aline 238 142 aline 285 95 aline 380 47 aline 523 47 aline 714 142 amove 761 0 aline 714 0 aline 714 1000 aline 761 1000 aline 761 0 stroke dfont endchar dfont char=101 amove 190 333 aline 714 333 aline 714 476 aline 666 571 aline 619 619 aline 523 666 aline 380 666 aline 285 619 aline 190 523 aline 142 380 aline 142 285 aline 190 142 aline 285 47 aline 380 0 aline 523 0 aline 619 47 aline 714 142 aline 666 190 aline 619 95 aline 523 47 aline 380 47 aline 285 95 aline 238 142 aline 190 285 aline 190 380 aline 238 523 aline 285 571 aline 380 619 aline 523 619 aline 619 571 aline 666 476 aline 666 380 aline 190 380 stroke dfont endchar dfont char=102 amove 333 0 aline 285 0 aline 285 809 aline 333 952 aline 428 1000 aline 523 1000 aline 523 952 aline 428 952 aline 333 904 amove 380 952 aline 333 809 aline 333 0 amove 476 619 aline 476 666 aline 142 666 aline 142 619 aline 476 619 stroke dfont endchar dfont char=103 amove 190 -191 aline 285 -191 aline 333 -239 aline 428 -286 aline 523 -286 aline 619 -239 aline 666 -191 aline 714 -48 aline 714 666 aline 761 666 aline 761 -48 aline 714 -191 aline 619 -286 aline 523 -334 aline 380 -334 aline 285 -286 aline 190 -191 amove 714 142 aline 619 47 aline 523 -1 aline 380 -1 aline 285 47 aline 190 142 aline 142 285 aline 142 380 aline 190 523 aline 285 619 aline 380 666 aline 523 666 aline 619 619 aline 714 523 aline 523 619 aline 380 619 aline 285 571 aline 238 523 aline 190 380 aline 190 285 aline 238 142 aline 285 95 aline 380 47 aline 523 47 aline 714 142 stroke dfont endchar dfont char=104 amove 238 0 aline 190 0 aline 190 1000 aline 238 1000 aline 238 0 amove 238 476 aline 380 619 aline 476 666 aline 619 666 aline 714 619 aline 761 476 aline 761 0 aline 714 0 aline 714 476 aline 666 571 aline 571 619 aline 476 619 aline 380 571 aline 238 476 stroke dfont endchar dfont char=105 amove 238 0 aline 190 0 aline 190 666 aline 238 666 aline 238 0 amove 190 952 aline 190 904 aline 238 904 aline 238 952 aline 190 952 amove 190 1000 aline 142 952 aline 142 904 aline 190 857 aline 238 857 aline 285 904 aline 285 952 aline 238 1000 aline 190 1000 stroke dfont endchar dfont char=106 amove 238 -334 aline 190 -334 aline 190 666 aline 238 666 aline 238 -334 amove 190 952 aline 190 904 aline 238 904 aline 238 952 aline 190 952 amove 190 1000 aline 142 952 aline 142 904 aline 190 857 aline 238 857 aline 285 904 aline 285 952 aline 238 1000 aline 190 1000 stroke dfont endchar dfont char=107 amove 238 0 aline 190 0 aline 190 1000 aline 238 1000 aline 238 0 amove 238 142 aline 761 666 aline 714 666 aline 238 190 amove 380 333 aline 666 0 aline 761 0 aline 428 380 stroke dfont endchar dfont char=108 amove 238 0 aline 190 0 aline 190 1000 aline 238 1000 aline 238 0 stroke dfont endchar dfont char=109 amove 238 0 aline 190 0 aline 190 666 aline 238 666 aline 238 0 amove 238 476 aline 380 619 aline 476 666 aline 619 666 aline 714 619 aline 761 476 aline 761 0 aline 714 0 aline 714 476 aline 666 571 aline 571 619 aline 476 619 aline 380 571 aline 238 476 amove 761 476 aline 904 619 aline 999 666 aline 1142 666 aline 1238 619 aline 1285 476 aline 1285 0 aline 1238 0 aline 1238 476 aline 1190 571 aline 1095 619 aline 1000 619 aline 904 571 aline 761 476 stroke dfont endchar dfont char=110 amove 238 0 aline 190 0 aline 190 666 aline 238 666 aline 238 0 amove 238 476 aline 380 619 aline 476 666 aline 619 666 aline 714 619 aline 761 476 aline 761 0 aline 714 0 aline 714 476 aline 666 571 aline 571 619 aline 476 619 aline 380 571 aline 238 476 stroke dfont endchar dfont char=111 amove 380 619 aline 285 571 aline 238 523 aline 190 380 aline 190 285 aline 238 142 aline 285 95 aline 380 47 aline 523 47 aline 619 95 aline 666 142 aline 714 285 aline 714 380 aline 666 523 aline 619 571 aline 523 619 aline 380 619 amove 380 666 aline 285 619 aline 190 523 aline 142 380 aline 142 285 aline 190 142 aline 285 47 aline 380 0 aline 523 0 aline 619 47 aline 714 142 aline 761 285 aline 761 380 aline 714 523 aline 619 619 aline 523 666 aline 380 666 stroke dfont endchar dfont char=112 amove 238 142 aline 333 47 aline 428 0 aline 571 0 aline 666 47 aline 761 142 aline 809 285 aline 809 380 aline 761 523 aline 666 619 aline 571 666 aline 428 666 aline 333 619 aline 238 523 aline 428 619 aline 571 619 aline 666 571 aline 714 523 aline 761 380 aline 761 285 aline 714 142 aline 666 95 aline 571 47 aline 428 47 aline 238 142 amove 238 -334 aline 190 -334 aline 190 666 aline 238 666 aline 238 -334 stroke dfont endchar dfont char=113 amove 714 142 aline 619 47 aline 523 0 aline 380 0 aline 285 47 aline 190 142 aline 142 285 aline 142 380 aline 190 523 aline 285 619 aline 380 666 aline 523 666 aline 619 619 aline 714 523 aline 523 619 aline 380 619 aline 285 571 aline 238 523 aline 190 380 aline 190 285 aline 238 142 aline 285 95 aline 380 47 aline 523 47 aline 714 142 amove 761 -334 aline 714 -334 aline 714 666 aline 761 666 aline 761 -334 stroke dfont endchar dfont char=114 amove 238 0 aline 190 0 aline 190 666 aline 238 666 aline 238 0 amove 238 380 aline 285 523 aline 380 619 aline 476 666 aline 619 666 aline 619 619 aline 476 619 aline 380 571 aline 285 476 aline 238 380 stroke dfont endchar dfont char=115 amove 142 142 aline 190 142 aline 238 47 amove 190 95 aline 333 47 aline 476 47 aline 619 95 amove 571 47 aline 619 142 aline 619 190 aline 571 285 amove 619 238 aline 523 285 aline 285 380 aline 190 428 aline 142 523 aline 190 619 aline 333 666 aline 476 666 aline 619 619 aline 666 523 aline 619 523 aline 571 619 amove 619 571 aline 476 619 aline 333 619 aline 190 571 amove 238 619 aline 190 523 aline 238 428 amove 190 476 aline 285 428 aline 523 333 aline 619 285 aline 666 190 aline 666 142 aline 619 47 aline 476 0 aline 333 0 aline 190 47 aline 142 142 stroke dfont endchar dfont char=116 amove 285 0 aline 238 0 aline 238 1000 aline 285 1000 aline 285 0 amove 428 619 aline 428 666 aline 95 666 aline 95 619 aline 428 619 stroke dfont endchar dfont char=117 amove 190 666 aline 190 190 aline 238 47 aline 333 -1 aline 476 -1 aline 571 47 aline 714 190 aline 571 95 aline 476 47 aline 380 47 aline 285 95 aline 238 190 aline 238 666 aline 190 666 amove 714 666 aline 714 0 aline 761 0 aline 761 666 aline 714 666 stroke dfont endchar dfont char=118 amove 380 0 aline 95 666 aline 142 666 aline 380 95 aline 619 666 aline 666 666 aline 380 0 stroke dfont endchar dfont char=119 amove 380 0 aline 142 666 aline 190 666 aline 380 142 aline 571 666 aline 761 142 aline 952 666 aline 1000 666 aline 761 0 aline 571 523 aline 380 0 stroke dfont endchar dfont char=120 amove 142 0 aline 666 666 aline 714 666 aline 190 0 aline 142 0 amove 714 0 aline 666 0 aline 142 666 aline 190 666 aline 714 0 stroke dfont endchar dfont char=121 amove 380 0 aline 95 666 aline 142 666 aline 380 95 amove 190 -334 aline 380 95 aline 619 666 aline 666 666 aline 380 0 aline 238 -334 aline 190 -334 stroke dfont endchar dfont char=122 amove 142 0 aline 619 619 aline 142 619 aline 142 666 aline 714 666 aline 238 47 aline 714 47 aline 714 0 aline 142 0 stroke dfont endchar dfont char=123 amove 380 238 aline 333 95 aline 333 -96 aline 380 -239 amove 476 -334 aline 333 -191 aline 285 -48 aline 285 47 aline 333 190 aline 428 285 aline 428 333 aline 238 428 aline 428 523 aline 428 571 aline 333 666 aline 285 809 aline 285 904 aline 333 1047 aline 476 1190 amove 380 1095 aline 333 952 aline 333 761 aline 380 619 stroke dfont endchar dfont char=124 amove 380 428 aline 380 1000 aline 333 952 aline 428 476 aline 380 428 aline 333 476 aline 428 952 aline 380 1000 amove 142 857 aline 619 571 aline 571 571 aline 190 857 aline 142 857 aline 142 809 aline 619 619 aline 619 571 amove 619 857 aline 142 571 aline 190 571 aline 571 857 aline 619 857 aline 619 809 aline 142 619 aline 142 571 stroke dfont endchar dfont char=125 amove 238 -334 aline 380 -191 aline 428 -48 aline 428 47 aline 380 190 aline 285 285 aline 285 333 aline 476 428 aline 285 523 aline 285 571 aline 380 666 aline 428 809 aline 428 904 aline 380 1047 aline 238 1190 amove 333 1095 aline 380 952 aline 380 761 aline 333 619 amove 333 238 aline 380 95 aline 380 -96 aline 333 -239 stroke dfont endchar dfont char=126 amove 380 904 aline 476 952 aline 523 952 aline 619 904 amove 571 952 aline 619 857 aline 619 761 aline 571 666 aline 523 619 aline 285 476 aline 190 380 aline 142 285 aline 142 190 aline 190 95 aline 238 47 aline 333 0 aline 523 0 aline 619 47 aline 714 142 aline 761 238 aline 857 523 aline 904 619 amove 857 571 aline 952 619 aline 1047 619 aline 1047 666 aline 952 666 aline 857 619 aline 809 523 aline 714 238 aline 666 142 aline 619 95 aline 523 47 aline 333 47 aline 238 95 aline 190 190 aline 190 285 aline 238 380 aline 285 428 aline 523 571 aline 619 666 aline 666 761 aline 666 857 aline 619 952 aline 523 1000 aline 476 1000 aline 380 952 aline 333 857 aline 333 761 aline 380 619 aline 476 476 aline 714 190 aline 857 47 aline 952 0 aline 1047 0 aline 1047 47 aline 952 47 aline 857 95 aline 761 190 aline 523 476 aline 428 619 aline 380 761 aline 380 857 aline 428 952 stroke dfont endchar gle-graphics-4.2.4c/src/fonts/texcmti.afm0000664000000000000000000002177611676336540017043 0ustar rootrootStartFontMetrics 2.0 Comment Made from TEX tfm file using TFMTOAFM.bas FontName CMTI10 EncodingScheme TEXENCODING FullName CMTI10 FamilyName CMTI10 Weight Medium ItalicAngle 14.0363 IsFixedPitch false UnderlinePosition -97 UnderlineThickness 73 FontBBox 0 -300 1001 1001 CapHeight 729 XHeight 151 Descender -219 Ascender 729 StartCharMetrics 127 C 1 ; WX 817 ; N C1 ; B 0 0 817 683 ; C 2 ; WX 766 ; N C2 ; B 0 0 766 683 ; C 3 ; WX 692 ; N C3 ; B 0 0 692 683 ; C 4 ; WX 664 ; N C4 ; B 0 0 664 683 ; C 5 ; WX 743 ; N C5 ; B 0 0 743 683 ; C 6 ; WX 715 ; N C6 ; B 0 0 715 683 ; C 7 ; WX 766 ; N C7 ; B 0 0 766 683 ; C 8 ; WX 715 ; N C8 ; B 0 0 715 683 ; C 9 ; WX 766 ; N C9 ; B 0 0 766 683 ; C 10 ; WX 715 ; N C10 ; B 0 0 715 683 ; C 11 ; WX 613 ; N C11 ; B 0 -194 613 694 ; L i C14 L l C15 C 12 ; WX 562 ; N C12 ; B 0 -194 562 694 ; C 13 ; WX 587 ; N C13 ; B 0 -194 587 694 ; C 14 ; WX 881 ; N C14 ; B 0 -194 881 694 ; C 15 ; WX 894 ; N C15 ; B 0 -194 894 694 ; C 16 ; WX 306 ; N C16 ; B 0 0 306 430 ; C 17 ; WX 332 ; N C17 ; B 0 -194 332 430 ; C 18 ; WX 511 ; N C18 ; B 0 0 511 694 ; C 19 ; WX 511 ; N C19 ; B 0 0 511 694 ; C 20 ; WX 511 ; N C20 ; B 0 0 511 628 ; C 21 ; WX 511 ; N C21 ; B 0 0 511 694 ; C 22 ; WX 511 ; N C22 ; B 0 0 511 561 ; C 23 ; WX 831 ; N C23 ; B 0 0 831 694 ; C 24 ; WX 459 ; N C24 ; B 0 -170 459 0 ; C 25 ; WX 536 ; N C25 ; B 0 -194 536 694 ; C 26 ; WX 715 ; N C26 ; B 0 0 715 430 ; C 27 ; WX 715 ; N C27 ; B 0 0 715 430 ; C 28 ; WX 511 ; N C28 ; B 0 -97 511 527 ; C 29 ; WX 882 ; N C29 ; B 0 0 882 683 ; C 30 ; WX 984 ; N C30 ; B 0 0 984 683 ; C 31 ; WX 766 ; N C31 ; B 0 -48 766 731 ; C 32 ; WX 251 ; N C32 ; B 0 0 251 430 ; C 33 ; WX 306 ; N C33 ; B 0 0 306 694 ; C 34 ; WX 514 ; N C34 ; B 0 0 514 694 ; C 35 ; WX 817 ; N C35 ; B 0 -194 817 694 ; C 36 ; WX 769 ; N C36 ; B 0 0 769 694 ; C 37 ; WX 817 ; N C37 ; B 0 -55 817 750 ; C 38 ; WX 766 ; N C38 ; B 0 0 766 694 ; C 39 ; WX 306 ; N C39 ; B 0 0 306 694 ; L C39 C34 C 40 ; WX 408 ; N C40 ; B 0 -250 408 750 ; C 41 ; WX 408 ; N C41 ; B 0 -250 408 750 ; C 42 ; WX 511 ; N C42 ; B 0 0 511 750 ; C 43 ; WX 766 ; N C43 ; B 0 -56 766 561 ; C 44 ; WX 306 ; N C44 ; B 0 -194 306 105 ; C 45 ; WX 357 ; N C45 ; B 0 0 357 430 ; C 46 ; WX 306 ; N C46 ; B 0 0 306 105 ; C 47 ; WX 511 ; N C47 ; B 0 -250 511 750 ; C 48 ; WX 511 ; N C48 ; B 0 0 511 644 ; C 49 ; WX 511 ; N C49 ; B 0 0 511 644 ; C 50 ; WX 511 ; N C50 ; B 0 0 511 644 ; C 51 ; WX 511 ; N C51 ; B 0 0 511 644 ; C 52 ; WX 511 ; N C52 ; B 0 -194 511 644 ; C 53 ; WX 511 ; N C53 ; B 0 0 511 644 ; C 54 ; WX 511 ; N C54 ; B 0 0 511 644 ; C 55 ; WX 511 ; N C55 ; B 0 -194 511 644 ; C 56 ; WX 511 ; N C56 ; B 0 0 511 644 ; C 57 ; WX 511 ; N C57 ; B 0 0 511 644 ; C 58 ; WX 306 ; N C58 ; B 0 0 306 430 ; C 59 ; WX 306 ; N C59 ; B 0 -194 306 430 ; C 60 ; WX 306 ; N C60 ; B 0 -194 306 500 ; C 61 ; WX 766 ; N C61 ; B 0 134 766 366 ; C 62 ; WX 511 ; N C62 ; B 0 -194 511 500 ; C 63 ; WX 511 ; N C63 ; B 0 0 511 694 ; C 64 ; WX 766 ; N C64 ; B 0 0 766 694 ; C 65 ; WX 743 ; N A ; B 0 0 743 683 ; C 66 ; WX 703 ; N B ; B 0 0 703 683 ; C 67 ; WX 715 ; N C ; B 0 0 715 683 ; C 68 ; WX 754 ; N D ; B 0 0 754 683 ; C 69 ; WX 678 ; N E ; B 0 0 678 683 ; C 70 ; WX 652 ; N F ; B 0 0 652 683 ; C 71 ; WX 773 ; N G ; B 0 0 773 683 ; C 72 ; WX 743 ; N H ; B 0 0 743 683 ; C 73 ; WX 385 ; N I ; B 0 0 385 683 ; C 74 ; WX 524 ; N J ; B 0 0 524 683 ; C 75 ; WX 768 ; N K ; B 0 0 768 683 ; C 76 ; WX 627 ; N L ; B 0 0 627 683 ; C 77 ; WX 896 ; N M ; B 0 0 896 683 ; C 78 ; WX 743 ; N N ; B 0 0 743 683 ; C 79 ; WX 766 ; N O ; B 0 0 766 683 ; C 80 ; WX 678 ; N P ; B 0 0 678 683 ; C 81 ; WX 766 ; N Q ; B 0 -194 766 683 ; C 82 ; WX 729 ; N R ; B 0 0 729 683 ; C 83 ; WX 562 ; N S ; B 0 0 562 683 ; C 84 ; WX 715 ; N T ; B 0 0 715 683 ; C 85 ; WX 743 ; N U ; B 0 0 743 683 ; C 86 ; WX 743 ; N V ; B 0 0 743 683 ; C 87 ; WX 998 ; N W ; B 0 0 998 683 ; C 88 ; WX 743 ; N X ; B 0 0 743 683 ; C 89 ; WX 743 ; N Y ; B 0 0 743 683 ; C 90 ; WX 613 ; N Z ; B 0 0 613 683 ; C 91 ; WX 306 ; N C91 ; B 0 -250 306 750 ; C 92 ; WX 514 ; N C92 ; B 0 0 514 694 ; C 93 ; WX 306 ; N C93 ; B 0 -250 306 750 ; C 94 ; WX 511 ; N C94 ; B 0 0 511 694 ; C 95 ; WX 306 ; N C95 ; B 0 0 306 667 ; C 96 ; WX 306 ; N C96 ; B 0 0 306 694 ; C 97 ; WX 511 ; N a ; B 0 0 511 430 ; C 98 ; WX 459 ; N b ; B 0 0 459 694 ; C 99 ; WX 459 ; N c ; B 0 0 459 430 ; C 100 ; WX 511 ; N d ; B 0 0 511 694 ; C 101 ; WX 459 ; N e ; B 0 0 459 430 ; C 102 ; WX 306 ; N f ; B 0 -194 306 694 ; L f C11 L i C12 L l C13 C 103 ; WX 459 ; N g ; B 0 -194 459 430 ; C 104 ; WX 511 ; N h ; B 0 0 511 694 ; C 105 ; WX 306 ; N i ; B 0 0 306 655 ; C 106 ; WX 306 ; N j ; B 0 -194 306 655 ; C 107 ; WX 459 ; N k ; B 0 0 459 694 ; C 108 ; WX 255 ; N l ; B 0 0 255 694 ; C 109 ; WX 817 ; N m ; B 0 0 817 430 ; C 110 ; WX 562 ; N n ; B 0 0 562 430 ; C 111 ; WX 511 ; N o ; B 0 0 511 430 ; C 112 ; WX 511 ; N p ; B 0 -194 511 430 ; C 113 ; WX 459 ; N q ; B 0 -194 459 430 ; C 114 ; WX 421 ; N r ; B 0 0 421 430 ; C 115 ; WX 408 ; N s ; B 0 0 408 430 ; C 116 ; WX 332 ; N t ; B 0 0 332 615 ; C 117 ; WX 536 ; N u ; B 0 0 536 430 ; C 118 ; WX 459 ; N v ; B 0 0 459 430 ; C 119 ; WX 664 ; N w ; B 0 0 664 430 ; C 120 ; WX 463 ; N x ; B 0 0 463 430 ; C 121 ; WX 485 ; N y ; B 0 -194 485 430 ; C 122 ; WX 408 ; N z ; B 0 0 408 430 ; C 123 ; WX 511 ; N C123 ; B 0 0 511 430 ; C 124 ; WX 1022 ; N C124 ; B 0 0 1022 430 ; C 125 ; WX 511 ; N C125 ; B 0 0 511 694 ; C 126 ; WX 511 ; N C126 ; B 0 0 511 667 ; C 127 ; WX 511 ; N C127 ; B 0 0 511 667 ; EndCharMetrics StartKernData StartKernPairs 180 KPX C11 C33 104 KPX C11 C39 104 KPX C11 C41 104 KPX C11 C63 104 KPX C11 C93 104 KPX C32 L -321 KPX C32 l -256 KPX C39 C33 102 KPX C39 C63 102 KPX A C -26 KPX A G -26 KPX A O -26 KPX A Q -26 KPX A T -77 KPX A U -26 KPX A V -103 KPX A W -103 KPX A Y -77 KPX A a -52 KPX A b -26 KPX A c -52 KPX A d -52 KPX A e -52 KPX A g -52 KPX A h -26 KPX A i -26 KPX A k -26 KPX A l -26 KPX A m -26 KPX A n -26 KPX A o -52 KPX A q -52 KPX A r -26 KPX A t -26 KPX A u -26 KPX A v -26 KPX A w -26 KPX D A -26 KPX D V -26 KPX D W -26 KPX D X -26 KPX D Y -26 KPX F A -103 KPX F C -26 KPX F G -26 KPX F O -26 KPX F Q -26 KPX F a -77 KPX F e -77 KPX F o -77 KPX F r -77 KPX F u -77 KPX K C -26 KPX K G -26 KPX K O -26 KPX K Q -26 KPX L T -77 KPX L V -103 KPX L W -103 KPX L Y -77 KPX L a -52 KPX L c -52 KPX L d -52 KPX L e -52 KPX L g -52 KPX L o -52 KPX L q -52 KPX O A -26 KPX O V -26 KPX O W -26 KPX O X -26 KPX O Y -26 KPX P A -77 KPX R C -26 KPX R G -26 KPX R O -26 KPX R Q -26 KPX R T -77 KPX R U -26 KPX R V -103 KPX R W -103 KPX R Y -77 KPX R a -52 KPX R b -26 KPX R c -52 KPX R d -52 KPX R e -52 KPX R g -52 KPX R h -26 KPX R i -26 KPX R k -26 KPX R l -26 KPX R m -26 KPX R n -26 KPX R o -52 KPX R q -52 KPX R r -26 KPX R t -26 KPX R u -26 KPX R v -26 KPX R w -26 KPX T A -77 KPX T a -77 KPX T e -77 KPX T o -77 KPX T r -77 KPX T u -77 KPX T y -77 KPX V A -103 KPX V C -26 KPX V G -26 KPX V O -26 KPX V Q -26 KPX V a -77 KPX V e -77 KPX V o -77 KPX V r -77 KPX V u -77 KPX W A -77 KPX X C -26 KPX X G -26 KPX X O -26 KPX X Q -26 KPX Y A -77 KPX Y a -77 KPX Y e -77 KPX Y o -77 KPX Y r -77 KPX Y u -77 KPX b a -52 KPX b c -52 KPX b d -52 KPX b e -52 KPX b g -52 KPX b o -52 KPX b q -52 KPX c a -52 KPX c c -52 KPX c d -52 KPX c e -52 KPX c g -52 KPX c o -52 KPX c q -52 KPX d l 51 KPX e a -52 KPX e c -52 KPX e d -52 KPX e e -52 KPX e g -52 KPX e o -52 KPX e q -52 KPX f C33 104 KPX f C39 104 KPX f C41 104 KPX f C63 104 KPX f C93 104 KPX l l 51 KPX n C39 -103 KPX o a -52 KPX o c -52 KPX o d -52 KPX o e -52 KPX o g -52 KPX o o -52 KPX o q -52 KPX p a -52 KPX p c -52 KPX p d -52 KPX p e -52 KPX p g -52 KPX p o -52 KPX p q -52 KPX r a -52 KPX r c -52 KPX r d -52 KPX r e -52 KPX r g -52 KPX r o -52 KPX r q -52 KPX w l 51 EndKernPairs EndKernData EndFontMetrics gle-graphics-4.2.4c/src/fonts/Makefile.gcc0000664000000000000000000002240011676336540017055 0ustar rootroot######################################################################## # # # GLE - Graphics Layout Engine # # # # Modified BSD License # # # # Copyright (C) 2009 GLE. # # # # Redistribution and use in source and binary forms, with or without # # modification, are permitted provided that the following conditions # # are met: # # # # 1. Redistributions of source code must retain the above copyright # # notice, this list of conditions and the following disclaimer. # # # # 2. Redistributions in binary form must reproduce the above # # copyright notice, this list of conditions and the following # # disclaimer in the documentation and/or other materials provided with # # the distribution. # # # # 3. The name of the author may not be used to endorse or promote # # products derived from this software without specific prior written # # permission. # # # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR # # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY # # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE # # GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER # # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN # # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # # ######################################################################## # TODO: find free AFMs for these: # pshc.fmt # pshcb.fmt # pshcbo.fmt # pshcdo.fmt # FONT MAKEFILE # makes font files *.fmt from *.afm using makefmt # makes *.fve from *.gle using fbuild # also makes font.dat include ../../config.gcc ADOBE35 = Adobe-Core35_AFMs-314 FVE_BASE = \ glemark.fve \ texcmb.fve texcmex.fve texcmitt.fve texcmmi.fve \ texcmr.fve texcmss.fve texcmssb.fve texcmssi.fve \ texcmsy.fve texcmti.fve texcmtt.fve FVE_EXTRA = \ plba.fve plcc.fve plcg.fve plci.fve \ plcr.fve plcs.fve pldr.fve plge.fve \ plgg.fve plgi.fve plsa.fve plsg.fve \ plsr.fve plss.fve plsym1.fve plsym2.fve \ plti.fve pltr.fve FMT_BASE = \ glemark.fmt \ texcmb.fmt texcmex.fmt texcmitt.fmt texcmmi.fmt texcmr.fmt \ texcmsl.fmt texcmssb.fmt texcmss.fmt texcmssi.fmt texcmsy.fmt \ texcmti.fmt texcmtt.fmt \ psagb.fmt psagbo.fmt psagd.fmt psagdo.fmt psbd.fmt psbdi.fmt \ psbl.fmt psbli.fmt pscb.fmt pscbo.fmt psc.fmt psco.fmt pshb.fmt \ pshbo.fmt psh.fmt pshnb.fmt pshnbo.fmt pshn.fmt pshno.fmt psho.fmt \ psncsb.fmt psncsbi.fmt psncsi.fmt psncsr.fmt pspb.fmt pspbi.fmt \ pspi.fmt pspr.fmt pssym.fmt pstb.fmt pstbi.fmt psti.fmt pstr.fmt \ pszcmi.fmt pszd.fmt FMT_EXTRA = \ plba.fmt plcc.fmt plcg.fmt plci.fmt plcr.fmt plcs.fmt pldr.fmt \ plge.fmt plgg.fmt plgi.fmt plsa.fmt plsg.fmt plsr.fmt plss.fmt \ plsym1.fmt plsym2.fmt plti.fmt pltr.fmt \ pshc.fmt pshcb.fmt pshcbo.fmt pshcdo.fmt FMT_KOI8 = arial8.fmt arialbd8.fmt arialbi8.fmt ariali8.fmt \ cour8.fmt courbd8.fmt courbi8.fmt couri8.fmt times8.fmt \ timesbd8.fmt timesbi8.fmt timesi8.fmt COMPILE_EXTRA_FONTS= ifeq ($(HAVE_EXTRA_FONTS),1) COMPILE_EXTRA_FONTS=$(FVE_EXTRA) $(FMT_EXTRA) $(FMT_KOI8) endif all: $(FVE_BASE) $(FMT_BASE) $(COMPILE_EXTRA_FONTS) movefonts .SUFFIXES: .fve .fmt .afm .gle psagb.fmt: $(ADOBE35)/ITCAvantGarde-Book.afm $(PROJECT_BINDIR)/bin/makefmt -e adobestd.enc -o $@ $< psagbo.fmt: $(ADOBE35)/ITCAvantGarde-BookOblique.afm $(PROJECT_BINDIR)/bin/makefmt -e adobestd.enc -o $@ $< psagd.fmt: $(ADOBE35)/ITCAvantGarde-Demi.afm $(PROJECT_BINDIR)/bin/makefmt -e adobestd.enc -o $@ $< psagdo.fmt: $(ADOBE35)/ITCAvantGarde-DemiOblique.afm $(PROJECT_BINDIR)/bin/makefmt -e adobestd.enc -o $@ $< psbd.fmt: $(ADOBE35)/ITCBookman-Demi.afm $(PROJECT_BINDIR)/bin/makefmt -e adobestd.enc -o $@ $< psbdi.fmt: $(ADOBE35)/ITCBookman-DemiItalic.afm $(PROJECT_BINDIR)/bin/makefmt -e adobestd.enc -o $@ $< psbli.fmt: $(ADOBE35)/ITCBookman-LightItalic.afm $(PROJECT_BINDIR)/bin/makefmt -e adobestd.enc -o $@ $< psbl.fmt: $(ADOBE35)/ITCBookman-Light.afm $(PROJECT_BINDIR)/bin/makefmt -e adobestd.enc -o $@ $< psc.fmt: $(ADOBE35)/Courier.afm $(PROJECT_BINDIR)/bin/makefmt -e adobestd.enc -o $@ $< pscb.fmt: $(ADOBE35)/Courier-Bold.afm $(PROJECT_BINDIR)/bin/makefmt -e adobestd.enc -o $@ $< pscbo.fmt: $(ADOBE35)/Courier-BoldOblique.afm $(PROJECT_BINDIR)/bin/makefmt -e adobestd.enc -o $@ $< psco.fmt: $(ADOBE35)/Courier-Oblique.afm $(PROJECT_BINDIR)/bin/makefmt -e adobestd.enc -o $@ $< psh.fmt: $(ADOBE35)/Helvetica.afm $(PROJECT_BINDIR)/bin/makefmt -e adobestd.enc -o $@ $< pshb.fmt: $(ADOBE35)/Helvetica-Bold.afm $(PROJECT_BINDIR)/bin/makefmt -e adobestd.enc -o $@ $< pshbo.fmt: $(ADOBE35)/Helvetica-BoldOblique.afm $(PROJECT_BINDIR)/bin/makefmt -e adobestd.enc -o $@ $< pshn.fmt: $(ADOBE35)/Helvetica-Narrow.afm $(PROJECT_BINDIR)/bin/makefmt -e adobestd.enc -o $@ $< pshnb.fmt: $(ADOBE35)/Helvetica-NarrowBold.afm $(PROJECT_BINDIR)/bin/makefmt -e adobestd.enc -o $@ $< pshnbo.fmt: $(ADOBE35)/Helvetica-NarrowBoldOblique.afm $(PROJECT_BINDIR)/bin/makefmt -e adobestd.enc -o $@ $< pshno.fmt: $(ADOBE35)/Helvetica-NarrowOblique.afm $(PROJECT_BINDIR)/bin/makefmt -e adobestd.enc -o $@ $< psho.fmt: $(ADOBE35)/Helvetica-Oblique.afm $(PROJECT_BINDIR)/bin/makefmt -e adobestd.enc -o $@ $< psncsb.fmt: $(ADOBE35)/NewCenturySchlbk-Bold.afm $(PROJECT_BINDIR)/bin/makefmt -e adobestd.enc -o $@ $< psncsbi.fmt: $(ADOBE35)/NewCenturySchlbk-BoldItalic.afm $(PROJECT_BINDIR)/bin/makefmt -e adobestd.enc -o $@ $< psncsi.fmt: $(ADOBE35)/NewCenturySchlbk-Italic.afm $(PROJECT_BINDIR)/bin/makefmt -e adobestd.enc -o $@ $< psncsr.fmt: $(ADOBE35)/NewCenturySchlbk-Roman.afm $(PROJECT_BINDIR)/bin/makefmt -e adobestd.enc -o $@ $< pspb.fmt: $(ADOBE35)/Palatino-Bold.afm $(PROJECT_BINDIR)/bin/makefmt -e adobestd.enc -o $@ $< pspbi.fmt: $(ADOBE35)/Palatino-BoldItalic.afm $(PROJECT_BINDIR)/bin/makefmt -e adobestd.enc -o $@ $< pspi.fmt: $(ADOBE35)/Palatino-Italic.afm $(PROJECT_BINDIR)/bin/makefmt -e adobestd.enc -o $@ $< pspr.fmt: $(ADOBE35)/Palatino-Roman.afm $(PROJECT_BINDIR)/bin/makefmt -e adobestd.enc -o $@ $< pstb.fmt: $(ADOBE35)/Times-Bold.afm $(PROJECT_BINDIR)/bin/makefmt -e adobestd.enc -o $@ $< pstbi.fmt: $(ADOBE35)/Times-BoldItalic.afm $(PROJECT_BINDIR)/bin/makefmt -e adobestd.enc -o $@ $< psti.fmt: $(ADOBE35)/Times-Italic.afm $(PROJECT_BINDIR)/bin/makefmt -e adobestd.enc -o $@ $< pstr.fmt: $(ADOBE35)/Times-Roman.afm $(PROJECT_BINDIR)/bin/makefmt -e adobestd.enc -o $@ $< pszcmi.fmt: $(ADOBE35)/ITCZapfChancery-MediumItalic.afm $(PROJECT_BINDIR)/bin/makefmt -e adobestd.enc -o $@ $< pssym.fmt: $(ADOBE35)/Symbol.afm $(PROJECT_BINDIR)/bin/makefmt -o $@ $< pszd.fmt: $(ADOBE35)/ZapfDingbats.afm $(PROJECT_BINDIR)/bin/makefmt -o $@ $< arial8.fmt: cyrillic/arial8.afm $(PROJECT_BINDIR)/bin/makefmt -e koi8r.enc -o $@ $< arialbd8.fmt: cyrillic/arialbd8.afm $(PROJECT_BINDIR)/bin/makefmt -e koi8r.enc -o $@ $< arialbi8.fmt: cyrillic/arialbi8.afm $(PROJECT_BINDIR)/bin/makefmt -e koi8r.enc -o $@ $< ariali8.fmt: cyrillic/ariali8.afm $(PROJECT_BINDIR)/bin/makefmt -e koi8r.enc -o $@ $< cour8.fmt: cyrillic/cokoi8n.afm $(PROJECT_BINDIR)/bin/makefmt -e koi8r.enc -o $@ $< courbd8.fmt: cyrillic/cokoi8b.afm $(PROJECT_BINDIR)/bin/makefmt -e koi8r.enc -o $@ $< courbi8.fmt: cyrillic/cokoi8bi.afm $(PROJECT_BINDIR)/bin/makefmt -e koi8r.enc -o $@ $< couri8.fmt: cyrillic/cokoi8i.afm $(PROJECT_BINDIR)/bin/makefmt -e koi8r.enc -o $@ $< times8.fmt: cyrillic/times8.afm $(PROJECT_BINDIR)/bin/makefmt -e koi8r.enc -o $@ $< timesbd8.fmt: cyrillic/timesbd8.afm $(PROJECT_BINDIR)/bin/makefmt -e koi8r.enc -o $@ $< timesbi8.fmt: cyrillic/timesbi8.afm $(PROJECT_BINDIR)/bin/makefmt -e koi8r.enc -o $@ $< timesi8.fmt: cyrillic/timesi8.afm $(PROJECT_BINDIR)/bin/makefmt -e koi8r.enc -o $@ $< .afm.fmt: $(PROJECT_BINDIR)/bin/makefmt $< .gle.fve: $(PROJECT_BINDIR)/bin/fbuild $< clean: -$(RM) *.fve *.fmt movefonts movefonts: $(FVE) $(FMT) $(PROJECT_BINDIR)/bin/makefmt $(PROJECT_BINDIR)/bin/fbuild -mkdir -p $(PROJECT_BINDIR)/font -cp -p *.fve *.fmt $(PROJECT_BINDIR)/font -cp -p font.dat $(PROJECT_BINDIR)/font -cp -p psfont.dat $(PROJECT_BINDIR)/font touch movefonts gle-graphics-4.2.4c/src/fonts/plsym2.afm0000664000000000000000000001744211676336540016607 0ustar rootrootStartFontMetrics 2.0 Comment Made from HERSHEY font file using SPLITFONT.BAS FontName PLSYM2 EncodingScheme TEXENCODING FullName PLSYM2 FamilyName PLSYM2 Weight Medium ItalicAngle 0 IsFixedPitch false UnderlinePosition -97 UnderlineThickness 73 FontBBox 0 -400 1001 1001 CapHeight 729 XHeight 151 Descender -219 Ascender 729 StartCharMetrics 142 C 32 ; WX 400 ; N C32 ; B 0 0 0 0 ; C 1 ; WX 846 ; N C1 ; B 161 53 700 592 ; C 2 ; WX 846 ; N C2 ; B 161 53 700 592 ; C 3 ; WX 846 ; N C3 ; B 161 53 700 592 ; C 4 ; WX 846 ; N C4 ; B 161 53 700 592 ; C 5 ; WX 846 ; N C5 ; B 161 53 700 592 ; C 6 ; WX 954 ; N C6 ; B 161 161 807 484 ; C 7 ; WX 523 ; N C7 ; B 107 0 430 646 ; C 8 ; WX 954 ; N C8 ; B 161 161 807 484 ; C 9 ; WX 523 ; N C9 ; B 107 0 430 646 ; C 10 ; WX 739 ; N C10 ; B 107 0 646 700 ; C 11 ; WX 846 ; N C11 ; B 107 0 753 700 ; C 12 ; WX 1062 ; N C12 ; B 107 0 1077 969 ; C 13 ; WX 954 ; N C13 ; B 107 -215 861 861 ; C 14 ; WX 954 ; N C14 ; B 107 -215 861 861 ; C 15 ; WX 1062 ; N C15 ; B 107 161 969 538 ; C 16 ; WX 846 ; N C16 ; B 107 0 753 700 ; C 17 ; WX 900 ; N C17 ; B 107 0 807 700 ; C 18 ; WX 900 ; N C18 ; B 107 0 807 700 ; C 19 ; WX 792 ; N C19 ; B 161 -215 646 861 ; C 20 ; WX 739 ; N C20 ; B 107 -215 646 700 ; C 21 ; WX 631 ; N C21 ; B 161 -215 484 700 ; C 22 ; WX 631 ; N C22 ; B 107 -215 538 700 ; C 23 ; WX 631 ; N C23 ; B 107 -215 538 700 ; C 24 ; WX 685 ; N C24 ; B 107 0 538 700 ; C 25 ; WX 1062 ; N C25 ; B 161 -53 915 700 ; C 26 ; WX 685 ; N C26 ; B 161 -53 538 700 ; C 27 ; WX 685 ; N C27 ; B 161 0 538 700 ; C 28 ; WX 1062 ; N C28 ; B 161 -53 915 700 ; C 29 ; WX 792 ; N C29 ; B 107 0 700 592 ; C 30 ; WX 846 ; N C30 ; B 107 0 753 700 ; C 31 ; WX 792 ; N C31 ; B 107 -53 700 700 ; C 32 ; WX 685 ; N C32 ; B 161 0 538 700 ; C 33 ; WX 846 ; N C33 ; B 107 -53 753 700 ; C 34 ; WX 792 ; N C34 ; B 107 0 699 700 ; C 35 ; WX 685 ; N C35 ; B 107 -53 592 700 ; C 36 ; WX 846 ; N C36 ; B 107 0 753 646 ; C 37 ; WX 739 ; N C37 ; B 107 53 646 592 ; C 38 ; WX 900 ; N C38 ; B 107 -53 807 700 ; C 39 ; WX 900 ; N C39 ; B 107 -53 807 700 ; C 40 ; WX 1277 ; N C40 ; B 107 -215 1184 861 ; C 41 ; WX 1115 ; N C41 ; B 107 -215 969 861 ; C 42 ; WX 739 ; N C42 ; B 214 -539 592 1184 ; C 43 ; WX 739 ; N C43 ; B 161 -539 538 1184 ; C 44 ; WX 739 ; N C44 ; B 214 -539 592 1184 ; C 45 ; WX 739 ; N C45 ; B 161 -539 538 1184 ; C 46 ; WX 792 ; N C46 ; B 268 -539 538 1184 ; C 47 ; WX 792 ; N C47 ; B 268 -539 538 1184 ; C 48 ; WX 739 ; N C48 ; B 214 -647 538 1292 ; C 49 ; WX 739 ; N C49 ; B 214 -647 538 1292 ; C 50 ; WX 1223 ; N C50 ; B 107 -539 1238 1615 ; C 51 ; WX 1277 ; N C51 ; B 107 -539 1184 1184 ; C 52 ; WX 851 ; N C52 ; B 133 133 733 466 ; C 53 ; WX 518 ; N C53 ; B 99 0 433 600 ; C 54 ; WX 851 ; N C54 ; B 133 133 733 466 ; C 55 ; WX 518 ; N C55 ; B 99 0 433 600 ; C 56 ; WX 618 ; N C56 ; B 99 0 532 700 ; C 57 ; WX 651 ; N C57 ; B 66 0 600 700 ; C 58 ; WX 1085 ; N C58 ; B 99 0 1100 1100 ; C 59 ; WX 784 ; N C59 ; B 66 -233 733 833 ; C 60 ; WX 784 ; N C60 ; B 66 -233 733 833 ; C 61 ; WX 818 ; N C61 ; B 99 166 733 433 ; C 62 ; WX 784 ; N C62 ; B 99 0 700 700 ; C 63 ; WX 818 ; N C63 ; B 99 0 733 700 ; C 64 ; WX 884 ; N C64 ; B 99 0 799 700 ; C 65 ; WX 651 ; N C65 ; B 99 -133 566 833 ; C 66 ; WX 685 ; N C66 ; B 99 -233 600 700 ; C 67 ; WX 518 ; N C67 ; B 99 -233 433 700 ; C 68 ; WX 518 ; N C68 ; B 66 -233 466 700 ; C 69 ; WX 518 ; N C69 ; B 66 -233 466 699 ; C 70 ; WX 618 ; N C70 ; B 66 0 500 700 ; C 71 ; WX 884 ; N C71 ; B 99 0 799 700 ; C 72 ; WX 551 ; N C72 ; B 99 0 466 700 ; C 73 ; WX 618 ; N C73 ; B 99 0 532 700 ; C 74 ; WX 918 ; N C74 ; B 99 -33 833 700 ; C 75 ; WX 818 ; N C75 ; B 99 32 733 666 ; C 76 ; WX 718 ; N C76 ; B 99 0 633 700 ; C 77 ; WX 618 ; N C77 ; B 66 0 532 700 ; C 78 ; WX 618 ; N C78 ; B 99 0 532 700 ; C 79 ; WX 751 ; N C79 ; B 99 0 666 700 ; C 80 ; WX 718 ; N C80 ; B 66 0 633 700 ; C 81 ; WX 618 ; N C81 ; B 99 -33 566 666 ; C 82 ; WX 818 ; N C82 ; B 99 0 733 633 ; C 83 ; WX 651 ; N C83 ; B 99 66 566 532 ; C 84 ; WX 784 ; N C84 ; B 66 -33 733 666 ; C 85 ; WX 784 ; N C85 ; B 66 -33 733 666 ; C 86 ; WX 585 ; N C86 ; B 66 66 532 532 ; C 87 ; WX 585 ; N C87 ; B 66 66 532 532 ; C 88 ; WX 585 ; N C88 ; B 66 66 532 532 ; C 89 ; WX 585 ; N C89 ; B 66 66 532 532 ; C 90 ; WX 818 ; N C90 ; B 99 0 733 666 ; C 91 ; WX 784 ; N C91 ; B 99 0 700 666 ; C 92 ; WX 784 ; N C92 ; B 99 66 700 666 ; C 93 ; WX 784 ; N C93 ; B 99 99 700 600 ; C 94 ; WX 751 ; N C94 ; B 99 0 666 666 ; C 95 ; WX 784 ; N C95 ; B 32 0 700 633 ; C 96 ; WX 784 ; N C96 ; B 99 66 700 666 ; C 97 ; WX 818 ; N C97 ; B 32 32 766 600 ; C 98 ; WX 718 ; N C98 ; B 99 66 633 600 ; C 99 ; WX 784 ; N C99 ; B 66 32 700 633 ; C 100 ; WX 784 ; N C100 ; B 99 199 700 500 ; C 101 ; WX 784 ; N C101 ; B 99 66 700 633 ; C 102 ; WX 251 ; N C102 ; B 99 266 166 333 ; C 103 ; WX 518 ; N C103 ; B 99 -100 433 366 ; C 104 ; WX 518 ; N C104 ; B 99 233 433 700 ; C 105 ; WX 651 ; N C105 ; B 99 133 566 466 ; C 106 ; WX 651 ; N C106 ; B 99 133 566 466 ; C 107 ; WX 551 ; N C107 ; B 99 133 466 466 ; C 108 ; WX 518 ; N C108 ; B 99 -100 433 700 ; C 109 ; WX 518 ; N C109 ; B 133 -100 399 700 ; C 110 ; WX 518 ; N C110 ; B 133 133 433 833 ; C 111 ; WX 851 ; N C111 ; B 99 500 766 600 ; C 112 ; WX 518 ; N C112 ; B 99 333 433 433 ; C 113 ; WX 518 ; N C113 ; B 99 66 433 532 ; C 114 ; WX 518 ; N C114 ; B 99 66 433 532 ; C 115 ; WX 952 ; N C115 ; B 99 -467 866 1567 ; C 116 ; WX 1085 ; N C116 ; B 99 -366 1000 633 ; C 117 ; WX 918 ; N C117 ; B 133 -300 799 899 ; C 118 ; WX 651 ; N C118 ; B 99 133 566 466 ; C 119 ; WX 651 ; N C119 ; B 99 133 566 466 ; C 120 ; WX 551 ; N C120 ; B 99 133 466 466 ; C 121 ; WX 518 ; N C121 ; B 99 -100 433 700 ; C 122 ; WX 518 ; N C122 ; B 133 -100 399 700 ; C 123 ; WX 518 ; N C123 ; B 133 133 433 833 ; C 124 ; WX 851 ; N C124 ; B 99 500 766 600 ; C 125 ; WX 518 ; N C125 ; B 99 333 433 433 ; C 126 ; WX 518 ; N C126 ; B 133 -200 433 799 ; C 127 ; WX 518 ; N C127 ; B 99 66 433 532 ; C 128 ; WX 1085 ; N C128 ; B 133 -533 1000 633 ; C 129 ; WX 918 ; N C129 ; B 133 -366 799 966 ; C 130 ; WX 1118 ; N C130 ; B 99 -233 1033 833 ; C 131 ; WX 1018 ; N C131 ; B 99 -233 933 833 ; C 132 ; WX 585 ; N C132 ; B 133 -1000 500 1600 ; C 133 ; WX 585 ; N C133 ; B 99 -1000 466 1600 ; C 134 ; WX 585 ; N C134 ; B 133 -1000 500 1600 ; C 135 ; WX 585 ; N C135 ; B 99 -1000 466 1600 ; C 136 ; WX 618 ; N C136 ; B 166 -1000 466 1600 ; C 137 ; WX 618 ; N C137 ; B 166 -1000 466 1600 ; C 138 ; WX 585 ; N C138 ; B 166 -900 433 1500 ; C 139 ; WX 585 ; N C139 ; B 166 -900 433 1500 ; C 140 ; WX 1151 ; N C140 ; B 99 -767 1166 1900 ; C 141 ; WX 985 ; N C141 ; B 99 -1000 899 1600 ; EndCharMetrics EndFontMetrics gle-graphics-4.2.4c/src/fonts/plgg.afm0000664000000000000000000001226211676336540016305 0ustar rootrootStartFontMetrics 2.0 Comment Made from HERSHEY font file using SPLITFONT.BAS FontName plGG EncodingScheme TEXENCODING FullName plGG FamilyName plGG Weight Medium ItalicAngle 0 IsFixedPitch false UnderlinePosition -97 UnderlineThickness 73 FontBBox 0 -400 1001 1001 CapHeight 729 XHeight 151 Descender -219 Ascender 729 StartCharMetrics 95 C 32 ; WX 400 ; N C32 ; B 0 0 0 0 ; C 33 ; WX 384 ; N C33 ; B 99 0 299 700 ; C 34 ; WX 384 ; N C34 ; B 133 466 233 700 ; C 35 ; WX 300 ; N C35 ; B 0 0 0 0 ; C 36 ; WX 651 ; N C36 ; B 99 -133 566 833 ; C 37 ; WX 784 ; N C37 ; B 99 0 700 700 ; C 38 ; WX 300 ; N C38 ; B 0 0 0 0 ; C 39 ; WX 384 ; N C39 ; B 166 466 266 700 ; C 40 ; WX 451 ; N C40 ; B 99 -233 333 833 ; C 41 ; WX 451 ; N C41 ; B 133 -233 366 833 ; C 42 ; WX 585 ; N C42 ; B 133 466 500 700 ; C 43 ; WX 818 ; N C43 ; B 133 32 700 600 ; C 44 ; WX 384 ; N C44 ; B 133 -133 233 99 ; C 45 ; WX 818 ; N C45 ; B 133 299 700 333 ; C 46 ; WX 384 ; N C46 ; B 133 0 266 99 ; C 47 ; WX 751 ; N C47 ; B 66 -233 700 833 ; C 48 ; WX 651 ; N C48 ; B 66 0 600 700 ; C 49 ; WX 651 ; N C49 ; B 233 0 466 700 ; C 50 ; WX 651 ; N C50 ; B 99 0 600 700 ; C 51 ; WX 651 ; N C51 ; B 99 0 532 700 ; C 52 ; WX 651 ; N C52 ; B 99 0 633 700 ; C 53 ; WX 651 ; N C53 ; B 99 0 600 700 ; C 54 ; WX 651 ; N C54 ; B 66 0 600 700 ; C 55 ; WX 651 ; N C55 ; B 99 0 600 700 ; C 56 ; WX 651 ; N C56 ; B 66 0 600 700 ; C 57 ; WX 651 ; N C57 ; B 66 0 600 700 ; C 58 ; WX 384 ; N C58 ; B 133 0 266 466 ; C 59 ; WX 384 ; N C59 ; B 133 -133 266 466 ; C 60 ; WX 784 ; N C60 ; B 133 0 666 600 ; C 61 ; WX 818 ; N C61 ; B 133 166 700 466 ; C 62 ; WX 784 ; N C62 ; B 133 0 666 600 ; C 63 ; WX 585 ; N C63 ; B 99 0 500 700 ; C 64 ; WX 884 ; N C64 ; B 99 0 799 700 ; C 65 ; WX 784 ; N C65 ; B 66 0 733 700 ; C 66 ; WX 851 ; N C66 ; B 66 0 766 700 ; C 67 ; WX 784 ; N C67 ; B 99 0 700 700 ; C 68 ; WX 851 ; N C68 ; B 99 0 766 700 ; C 69 ; WX 784 ; N C69 ; B 99 0 733 700 ; C 70 ; WX 784 ; N C70 ; B 99 -100 733 700 ; C 71 ; WX 851 ; N C71 ; B 99 0 799 700 ; C 72 ; WX 818 ; N C72 ; B 66 -133 733 700 ; C 73 ; WX 818 ; N C73 ; B 99 -100 733 700 ; C 74 ; WX 818 ; N C74 ; B 99 -100 733 700 ; C 75 ; WX 851 ; N C75 ; B 66 0 766 700 ; C 76 ; WX 751 ; N C76 ; B 99 0 666 700 ; C 77 ; WX 1051 ; N C77 ; B 99 0 1000 700 ; C 78 ; WX 918 ; N C78 ; B 99 0 833 700 ; C 79 ; WX 918 ; N C79 ; B 99 0 799 700 ; C 80 ; WX 884 ; N C80 ; B 99 -133 766 700 ; C 81 ; WX 918 ; N C81 ; B 99 0 866 700 ; C 82 ; WX 918 ; N C82 ; B 66 0 833 700 ; C 83 ; WX 884 ; N C83 ; B 99 0 799 700 ; C 84 ; WX 818 ; N C84 ; B 99 0 733 700 ; C 85 ; WX 718 ; N C85 ; B 66 0 666 699 ; C 86 ; WX 918 ; N C86 ; B 99 0 799 700 ; C 87 ; WX 1085 ; N C87 ; B 99 0 966 700 ; C 88 ; WX 784 ; N C88 ; B 99 0 700 700 ; C 89 ; WX 851 ; N C89 ; B 99 -133 733 700 ; C 90 ; WX 784 ; N C90 ; B 66 -133 666 700 ; C 91 ; WX 451 ; N C91 ; B 133 -233 366 833 ; C 92 ; WX 300 ; N C92 ; B 0 0 0 0 ; C 93 ; WX 451 ; N C93 ; B 99 -233 333 833 ; C 94 ; WX 300 ; N C94 ; B 0 0 0 0 ; C 95 ; WX 300 ; N C95 ; B 0 0 0 0 ; C 96 ; WX 318 ; N C96 ; B 133 500 199 700 ; C 97 ; WX 551 ; N C97 ; B 99 0 532 466 ; C 98 ; WX 551 ; N C98 ; B 66 0 466 700 ; C 99 ; WX 418 ; N C99 ; B 99 0 366 466 ; C 100 ; WX 551 ; N C100 ; B 99 0 466 700 ; C 101 ; WX 418 ; N C101 ; B 99 0 366 466 ; C 102 ; WX 418 ; N C102 ; B 66 -167 399 700 ; C 103 ; WX 551 ; N C103 ; B 99 -167 466 466 ; C 104 ; WX 551 ; N C104 ; B 66 -167 466 700 ; C 105 ; WX 318 ; N C105 ; B 32 0 299 700 ; C 106 ; WX 318 ; N C106 ; B 0 -167 266 700 ; C 107 ; WX 451 ; N C107 ; B 99 0 399 700 ; C 108 ; WX 318 ; N C108 ; B 66 0 333 700 ; C 109 ; WX 851 ; N C109 ; B 32 0 833 466 ; C 110 ; WX 585 ; N C110 ; B 32 0 566 466 ; C 111 ; WX 551 ; N C111 ; B 99 0 466 466 ; C 112 ; WX 551 ; N C112 ; B 66 -167 466 566 ; C 113 ; WX 551 ; N C113 ; B 99 -167 466 466 ; C 114 ; WX 451 ; N C114 ; B 66 0 399 466 ; C 115 ; WX 351 ; N C115 ; B 66 -167 399 700 ; C 116 ; WX 384 ; N C116 ; B 66 0 333 600 ; C 117 ; WX 585 ; N C117 ; B 32 0 566 466 ; C 118 ; WX 551 ; N C118 ; B 99 0 466 532 ; C 119 ; WX 818 ; N C119 ; B 99 0 733 532 ; C 120 ; WX 485 ; N C120 ; B 66 -167 433 466 ; C 121 ; WX 551 ; N C121 ; B 99 -167 466 532 ; C 122 ; WX 451 ; N C122 ; B 99 -167 399 466 ; C 123 ; WX 485 ; N C123 ; B 166 -233 333 833 ; C 124 ; WX 518 ; N C124 ; B 99 299 433 700 ; C 125 ; WX 485 ; N C125 ; B 166 -233 333 833 ; C 126 ; WX 851 ; N C126 ; B 99 0 766 700 ; EndCharMetrics EndFontMetrics gle-graphics-4.2.4c/src/fonts/Adobe-Core35_AFMs-314/Palatino-BoldItalic.afm0000664000000000000000000010713511405446017024345 0ustar rootrootStartFontMetrics 4.1 Comment Copyright (c) 1985, 1987, 1989, 1990, 1992, 1997 Adobe Systems Incorporated. All Rights Reserved. Comment Creation Date: Thu May 1 13:37:00 1997 Comment UniqueID 43076 Comment VMusage 51697 66722 FontName Palatino-BoldItalic FullName Palatino Bold Italic FamilyName Palatino Weight Bold ItalicAngle -10 IsFixedPitch false FontBBox -170 -271 1073 926 UnderlinePosition -100 UnderlineThickness 50 Version 002.000 Notice Copyright (c) 1985, 1987, 1989, 1990, 1992, 1997 Adobe Systems Incorporated. All Rights Reserved.Palatino is a trademark of Linotype-Hell AG and/or its subsidiaries. EncodingScheme AdobeStandardEncoding CapHeight 681 XHeight 469 Ascender 726 Descender -281 StdHW 55 StdVW 122 StartCharMetrics 314 C 32 ; WX 250 ; N space ; B 0 0 0 0 ; C 33 ; WX 333 ; N exclam ; B 58 -17 322 695 ; C 34 ; WX 500 ; N quotedbl ; B 137 467 493 720 ; C 35 ; WX 500 ; N numbersign ; B 4 0 496 673 ; C 36 ; WX 500 ; N dollar ; B 20 -108 477 737 ; C 37 ; WX 889 ; N percent ; B 56 -17 790 697 ; C 38 ; WX 833 ; N ampersand ; B 74 -17 811 695 ; C 39 ; WX 278 ; N quoteright ; B 76 431 302 720 ; C 40 ; WX 333 ; N parenleft ; B 58 -129 368 723 ; C 41 ; WX 333 ; N parenright ; B -12 -129 298 723 ; C 42 ; WX 444 ; N asterisk ; B 84 332 439 695 ; C 43 ; WX 606 ; N plus ; B 50 -5 556 501 ; C 44 ; WX 250 ; N comma ; B -33 -164 208 147 ; C 45 ; WX 389 ; N hyphen ; B 37 198 362 300 ; C 46 ; WX 250 ; N period ; B 48 -17 187 135 ; C 47 ; WX 315 ; N slash ; B 1 -17 315 720 ; C 48 ; WX 500 ; N zero ; B 42 -17 490 683 ; C 49 ; WX 500 ; N one ; B 41 -3 434 678 ; C 50 ; WX 500 ; N two ; B 1 -3 454 683 ; C 51 ; WX 500 ; N three ; B 8 -17 450 683 ; C 52 ; WX 500 ; N four ; B 3 -3 487 683 ; C 53 ; WX 500 ; N five ; B 14 -17 481 675 ; C 54 ; WX 500 ; N six ; B 39 -17 488 683 ; C 55 ; WX 500 ; N seven ; B 69 -3 544 674 ; C 56 ; WX 500 ; N eight ; B 26 -17 484 683 ; C 57 ; WX 500 ; N nine ; B 27 -17 491 683 ; C 58 ; WX 250 ; N colon ; B 38 -17 236 452 ; C 59 ; WX 250 ; N semicolon ; B -33 -164 247 452 ; C 60 ; WX 606 ; N less ; B 49 -21 558 517 ; C 61 ; WX 606 ; N equal ; B 51 106 555 390 ; C 62 ; WX 606 ; N greater ; B 48 -21 557 517 ; C 63 ; WX 444 ; N question ; B 91 -17 450 695 ; C 64 ; WX 833 ; N at ; B 82 -12 744 681 ; C 65 ; WX 722 ; N A ; B -35 -3 685 683 ; C 66 ; WX 667 ; N B ; B 8 -3 629 681 ; C 67 ; WX 685 ; N C ; B 69 -17 695 695 ; C 68 ; WX 778 ; N D ; B 0 -3 747 682 ; C 69 ; WX 611 ; N E ; B 11 -3 606 681 ; C 70 ; WX 556 ; N F ; B -6 -3 593 681 ; C 71 ; WX 778 ; N G ; B 72 -17 750 695 ; C 72 ; WX 778 ; N H ; B -12 -3 826 681 ; C 73 ; WX 389 ; N I ; B -1 -3 412 681 ; C 74 ; WX 389 ; N J ; B -29 -207 417 681 ; C 75 ; WX 722 ; N K ; B -10 -3 746 681 ; C 76 ; WX 611 ; N L ; B 26 -3 578 681 ; C 77 ; WX 944 ; N M ; B -23 -17 985 681 ; C 78 ; WX 778 ; N N ; B -2 -3 829 681 ; C 79 ; WX 833 ; N O ; B 76 -17 794 695 ; C 80 ; WX 667 ; N P ; B 11 -3 673 681 ; C 81 ; WX 833 ; N Q ; B 76 -222 794 695 ; C 82 ; WX 722 ; N R ; B 4 -3 697 681 ; C 83 ; WX 556 ; N S ; B 50 -17 517 695 ; C 84 ; WX 611 ; N T ; B 56 -3 674 681 ; C 85 ; WX 778 ; N U ; B 83 -17 825 681 ; C 86 ; WX 667 ; N V ; B 67 -3 745 681 ; C 87 ; WX 1000 ; N W ; B 67 -3 1073 689 ; C 88 ; WX 722 ; N X ; B -9 -3 772 681 ; C 89 ; WX 611 ; N Y ; B 54 -3 675 695 ; C 90 ; WX 667 ; N Z ; B 1 -3 676 681 ; C 91 ; WX 333 ; N bracketleft ; B 45 -102 381 723 ; C 92 ; WX 606 ; N backslash ; B 72 0 534 720 ; C 93 ; WX 333 ; N bracketright ; B -21 -102 315 723 ; C 94 ; WX 606 ; N asciicircum ; B 63 275 543 678 ; C 95 ; WX 500 ; N underscore ; B 0 -125 500 -75 ; C 96 ; WX 278 ; N quoteleft ; B 65 431 291 720 ; C 97 ; WX 556 ; N a ; B 44 -17 519 470 ; C 98 ; WX 537 ; N b ; B 44 -17 494 726 ; C 99 ; WX 444 ; N c ; B 32 -17 436 469 ; C 100 ; WX 556 ; N d ; B 38 -17 550 726 ; C 101 ; WX 444 ; N e ; B 28 -17 418 469 ; C 102 ; WX 333 ; N f ; B -130 -271 449 726 ; L i fi ; L l fl ; C 103 ; WX 500 ; N g ; B -50 -271 529 469 ; C 104 ; WX 556 ; N h ; B 22 -17 522 726 ; C 105 ; WX 333 ; N i ; B 26 -17 312 695 ; C 106 ; WX 333 ; N j ; B -64 -271 323 695 ; C 107 ; WX 556 ; N k ; B 34 -17 528 726 ; C 108 ; WX 333 ; N l ; B 64 -17 318 726 ; C 109 ; WX 833 ; N m ; B 19 -17 803 469 ; C 110 ; WX 556 ; N n ; B 17 -17 521 469 ; C 111 ; WX 556 ; N o ; B 48 -17 502 469 ; C 112 ; WX 556 ; N p ; B -21 -271 516 469 ; C 113 ; WX 537 ; N q ; B 32 -271 513 469 ; C 114 ; WX 389 ; N r ; B 20 -17 411 469 ; C 115 ; WX 444 ; N s ; B 25 -17 406 469 ; C 116 ; WX 389 ; N t ; B 42 -17 409 636 ; C 117 ; WX 556 ; N u ; B 22 -17 521 469 ; C 118 ; WX 556 ; N v ; B 19 -17 513 469 ; C 119 ; WX 833 ; N w ; B 27 -17 802 469 ; C 120 ; WX 500 ; N x ; B -8 -17 500 469 ; C 121 ; WX 556 ; N y ; B 13 -271 541 469 ; C 122 ; WX 500 ; N z ; B 31 -17 470 469 ; C 123 ; WX 333 ; N braceleft ; B 18 -105 334 720 ; C 124 ; WX 606 ; N bar ; B 259 -250 347 750 ; C 125 ; WX 333 ; N braceright ; B -1 -105 315 720 ; C 126 ; WX 606 ; N asciitilde ; B 51 151 555 346 ; C 161 ; WX 333 ; N exclamdown ; B 2 -225 259 479 ; C 162 ; WX 500 ; N cent ; B 52 -105 456 547 ; C 163 ; WX 500 ; N sterling ; B 21 -5 501 683 ; C 164 ; WX 167 ; N fraction ; B -170 0 338 683 ; C 165 ; WX 500 ; N yen ; B 11 -3 538 695 ; C 166 ; WX 500 ; N florin ; B 8 -242 479 690 ; C 167 ; WX 556 ; N section ; B 47 -151 497 695 ; C 168 ; WX 500 ; N currency ; B 32 96 468 533 ; C 169 ; WX 250 ; N quotesingle ; B 127 467 293 720 ; C 170 ; WX 500 ; N quotedblleft ; B 65 431 511 720 ; C 171 ; WX 500 ; N guillemotleft ; B 35 43 458 446 ; C 172 ; WX 333 ; N guilsinglleft ; B 60 43 292 446 ; C 173 ; WX 333 ; N guilsinglright ; B 35 40 267 443 ; C 174 ; WX 611 ; N fi ; B -130 -271 588 726 ; C 175 ; WX 611 ; N fl ; B -130 -271 631 726 ; C 177 ; WX 500 ; N endash ; B -12 214 512 282 ; C 178 ; WX 556 ; N dagger ; B 67 -3 499 685 ; C 179 ; WX 556 ; N daggerdbl ; B 33 -153 537 693 ; C 180 ; WX 250 ; N periodcentered ; B 67 172 206 324 ; C 182 ; WX 556 ; N paragraph ; B 14 -204 629 681 ; C 183 ; WX 606 ; N bullet ; B 131 172 475 516 ; C 184 ; WX 250 ; N quotesinglbase ; B -3 -144 220 145 ; C 185 ; WX 500 ; N quotedblbase ; B -18 -144 424 145 ; C 186 ; WX 500 ; N quotedblright ; B 73 431 519 720 ; C 187 ; WX 500 ; N guillemotright ; B 35 40 458 443 ; C 188 ; WX 1000 ; N ellipsis ; B 91 -17 896 135 ; C 189 ; WX 1000 ; N perthousand ; B 65 -17 912 691 ; C 191 ; WX 444 ; N questiondown ; B -12 -226 347 479 ; C 193 ; WX 333 ; N grave ; B 110 518 322 699 ; C 194 ; WX 333 ; N acute ; B 153 518 392 699 ; C 195 ; WX 333 ; N circumflex ; B 88 518 415 692 ; C 196 ; WX 333 ; N tilde ; B 82 537 441 656 ; C 197 ; WX 333 ; N macron ; B 76 538 418 608 ; C 198 ; WX 333 ; N breve ; B 96 518 412 680 ; C 199 ; WX 333 ; N dotaccent ; B 202 564 325 695 ; C 200 ; WX 333 ; N dieresis ; B 90 564 426 695 ; C 202 ; WX 556 ; N ring ; B 277 514 477 714 ; C 203 ; WX 333 ; N cedilla ; B 12 -218 248 5 ; C 205 ; WX 333 ; N hungarumlaut ; B -28 518 409 699 ; C 206 ; WX 333 ; N ogonek ; B 76 -226 260 -18 ; C 207 ; WX 333 ; N caron ; B 113 518 445 692 ; C 208 ; WX 1000 ; N emdash ; B -12 214 1012 282 ; C 225 ; WX 944 ; N AE ; B -29 -3 927 681 ; C 227 ; WX 333 ; N ordfeminine ; B 47 391 355 684 ; C 232 ; WX 611 ; N Lslash ; B 6 -3 578 681 ; C 233 ; WX 833 ; N Oslash ; B 57 -54 797 730 ; C 234 ; WX 944 ; N OE ; B 39 -17 961 695 ; C 235 ; WX 333 ; N ordmasculine ; B 51 391 346 683 ; C 241 ; WX 738 ; N ae ; B 44 -17 711 469 ; C 245 ; WX 333 ; N dotlessi ; B 26 -17 293 469 ; C 248 ; WX 333 ; N lslash ; B 13 -17 365 726 ; C 249 ; WX 556 ; N oslash ; B 14 -50 522 506 ; C 250 ; WX 778 ; N oe ; B 48 -17 755 469 ; C 251 ; WX 556 ; N germandbls ; B -131 -271 549 726 ; C -1 ; WX 389 ; N Idieresis ; B -1 -3 454 880 ; C -1 ; WX 444 ; N eacute ; B 28 -17 448 719 ; C -1 ; WX 556 ; N abreve ; B 44 -17 524 700 ; C -1 ; WX 556 ; N uhungarumlaut ; B 22 -17 621 719 ; C -1 ; WX 444 ; N ecaron ; B 28 -17 501 712 ; C -1 ; WX 611 ; N Ydieresis ; B 54 -3 675 880 ; C -1 ; WX 606 ; N divide ; B 50 -5 556 501 ; C -1 ; WX 611 ; N Yacute ; B 54 -3 675 911 ; C -1 ; WX 722 ; N Acircumflex ; B -35 -3 685 904 ; C -1 ; WX 556 ; N aacute ; B 44 -17 519 719 ; C -1 ; WX 778 ; N Ucircumflex ; B 83 -17 825 904 ; C -1 ; WX 556 ; N yacute ; B 13 -271 541 719 ; C -1 ; WX 444 ; N scommaaccent ; B 25 -271 406 469 ; C -1 ; WX 444 ; N ecircumflex ; B 28 -17 471 712 ; C -1 ; WX 778 ; N Uring ; B 83 -17 825 926 ; C -1 ; WX 778 ; N Udieresis ; B 83 -17 825 880 ; C -1 ; WX 556 ; N aogonek ; B 44 -216 519 470 ; C -1 ; WX 778 ; N Uacute ; B 83 -17 825 911 ; C -1 ; WX 556 ; N uogonek ; B 22 -210 521 469 ; C -1 ; WX 611 ; N Edieresis ; B 11 -3 606 880 ; C -1 ; WX 778 ; N Dcroat ; B 0 -3 747 682 ; C -1 ; WX 250 ; N commaaccent ; B -52 -271 102 -50 ; C -1 ; WX 747 ; N copyright ; B 26 -17 720 695 ; C -1 ; WX 611 ; N Emacron ; B 11 -3 606 820 ; C -1 ; WX 444 ; N ccaron ; B 32 -17 501 712 ; C -1 ; WX 556 ; N aring ; B 44 -17 519 734 ; C -1 ; WX 778 ; N Ncommaaccent ; B -2 -271 829 681 ; C -1 ; WX 333 ; N lacute ; B 64 -17 392 896 ; C -1 ; WX 556 ; N agrave ; B 44 -17 519 719 ; C -1 ; WX 611 ; N Tcommaaccent ; B 56 -271 674 681 ; C -1 ; WX 685 ; N Cacute ; B 69 -17 695 911 ; C -1 ; WX 556 ; N atilde ; B 44 -17 553 676 ; C -1 ; WX 611 ; N Edotaccent ; B 11 -3 606 880 ; C -1 ; WX 444 ; N scaron ; B 25 -17 489 712 ; C -1 ; WX 444 ; N scedilla ; B 25 -218 406 469 ; C -1 ; WX 333 ; N iacute ; B 26 -17 392 719 ; C -1 ; WX 471 ; N lozenge ; B 7 0 465 732 ; C -1 ; WX 722 ; N Rcaron ; B 4 -3 697 904 ; C -1 ; WX 778 ; N Gcommaaccent ; B 72 -271 750 695 ; C -1 ; WX 556 ; N ucircumflex ; B 22 -17 521 712 ; C -1 ; WX 556 ; N acircumflex ; B 44 -17 527 712 ; C -1 ; WX 722 ; N Amacron ; B -35 -3 685 820 ; C -1 ; WX 389 ; N rcaron ; B 20 -17 473 712 ; C -1 ; WX 444 ; N ccedilla ; B 27 -218 436 469 ; C -1 ; WX 667 ; N Zdotaccent ; B 1 -3 676 880 ; C -1 ; WX 667 ; N Thorn ; B 11 -3 644 681 ; C -1 ; WX 833 ; N Omacron ; B 76 -17 794 820 ; C -1 ; WX 722 ; N Racute ; B 4 -3 697 911 ; C -1 ; WX 556 ; N Sacute ; B 50 -17 517 911 ; C -1 ; WX 616 ; N dcaron ; B 38 -17 720 726 ; C -1 ; WX 778 ; N Umacron ; B 83 -17 825 820 ; C -1 ; WX 556 ; N uring ; B 22 -17 521 734 ; C -1 ; WX 300 ; N threesuperior ; B 23 263 310 683 ; C -1 ; WX 833 ; N Ograve ; B 76 -17 794 911 ; C -1 ; WX 722 ; N Agrave ; B -35 -3 685 911 ; C -1 ; WX 722 ; N Abreve ; B -35 -3 685 892 ; C -1 ; WX 606 ; N multiply ; B 72 17 534 479 ; C -1 ; WX 556 ; N uacute ; B 22 -17 521 719 ; C -1 ; WX 611 ; N Tcaron ; B 56 -3 674 904 ; C -1 ; WX 476 ; N partialdiff ; B 9 -38 467 718 ; C -1 ; WX 556 ; N ydieresis ; B 13 -271 541 668 ; C -1 ; WX 778 ; N Nacute ; B -2 -3 829 911 ; C -1 ; WX 333 ; N icircumflex ; B 26 -17 403 712 ; C -1 ; WX 611 ; N Ecircumflex ; B 11 -3 606 904 ; C -1 ; WX 556 ; N adieresis ; B 44 -17 538 688 ; C -1 ; WX 444 ; N edieresis ; B 28 -17 482 668 ; C -1 ; WX 444 ; N cacute ; B 32 -17 448 719 ; C -1 ; WX 556 ; N nacute ; B 17 -17 521 719 ; C -1 ; WX 556 ; N umacron ; B 22 -17 530 628 ; C -1 ; WX 778 ; N Ncaron ; B -2 -3 829 922 ; C -1 ; WX 389 ; N Iacute ; B -1 -3 420 911 ; C -1 ; WX 606 ; N plusminus ; B 50 0 556 501 ; C -1 ; WX 606 ; N brokenbar ; B 259 -175 347 675 ; C -1 ; WX 747 ; N registered ; B 26 -17 720 695 ; C -1 ; WX 778 ; N Gbreve ; B 72 -17 750 892 ; C -1 ; WX 389 ; N Idotaccent ; B -1 -3 412 880 ; C -1 ; WX 600 ; N summation ; B 15 -10 586 706 ; C -1 ; WX 611 ; N Egrave ; B 11 -3 606 911 ; C -1 ; WX 389 ; N racute ; B 20 -17 460 719 ; C -1 ; WX 556 ; N omacron ; B 48 -17 530 628 ; C -1 ; WX 667 ; N Zacute ; B 1 -3 676 911 ; C -1 ; WX 667 ; N Zcaron ; B 1 -3 676 904 ; C -1 ; WX 549 ; N greaterequal ; B 26 0 523 682 ; C -1 ; WX 778 ; N Eth ; B 0 -3 747 682 ; C -1 ; WX 685 ; N Ccedilla ; B 69 -218 695 695 ; C -1 ; WX 333 ; N lcommaaccent ; B 10 -271 318 726 ; C -1 ; WX 389 ; N tcaron ; B 42 -17 507 767 ; C -1 ; WX 444 ; N eogonek ; B 28 -216 418 469 ; C -1 ; WX 778 ; N Uogonek ; B 83 -210 825 681 ; C -1 ; WX 722 ; N Aacute ; B -35 -3 685 911 ; C -1 ; WX 722 ; N Adieresis ; B -35 -3 685 880 ; C -1 ; WX 444 ; N egrave ; B 28 -17 418 719 ; C -1 ; WX 500 ; N zacute ; B 31 -17 476 719 ; C -1 ; WX 333 ; N iogonek ; B 26 -214 312 695 ; C -1 ; WX 833 ; N Oacute ; B 76 -17 794 911 ; C -1 ; WX 556 ; N oacute ; B 48 -17 504 719 ; C -1 ; WX 556 ; N amacron ; B 44 -17 530 628 ; C -1 ; WX 444 ; N sacute ; B 25 -17 448 719 ; C -1 ; WX 333 ; N idieresis ; B 26 -17 426 668 ; C -1 ; WX 833 ; N Ocircumflex ; B 76 -17 794 904 ; C -1 ; WX 778 ; N Ugrave ; B 83 -17 825 911 ; C -1 ; WX 614 ; N Delta ; B 6 0 608 688 ; C -1 ; WX 556 ; N thorn ; B -21 -271 516 726 ; C -1 ; WX 300 ; N twosuperior ; B 26 271 321 683 ; C -1 ; WX 833 ; N Odieresis ; B 76 -17 794 880 ; C -1 ; WX 556 ; N mu ; B -15 -232 521 469 ; C -1 ; WX 333 ; N igrave ; B 26 -17 322 719 ; C -1 ; WX 556 ; N ohungarumlaut ; B 48 -17 631 719 ; C -1 ; WX 611 ; N Eogonek ; B 11 -207 606 681 ; C -1 ; WX 556 ; N dcroat ; B 38 -17 604 726 ; C -1 ; WX 750 ; N threequarters ; B 18 -2 732 683 ; C -1 ; WX 556 ; N Scedilla ; B 50 -218 517 695 ; C -1 ; WX 383 ; N lcaron ; B 64 -17 488 726 ; C -1 ; WX 722 ; N Kcommaaccent ; B -10 -271 746 681 ; C -1 ; WX 611 ; N Lacute ; B 26 -3 578 911 ; C -1 ; WX 1000 ; N trademark ; B 38 274 961 678 ; C -1 ; WX 444 ; N edotaccent ; B 28 -17 418 668 ; C -1 ; WX 389 ; N Igrave ; B -1 -3 412 911 ; C -1 ; WX 389 ; N Imacron ; B -1 -3 446 820 ; C -1 ; WX 611 ; N Lcaron ; B 26 -3 623 695 ; C -1 ; WX 750 ; N onehalf ; B 14 -2 736 683 ; C -1 ; WX 549 ; N lessequal ; B 26 0 523 682 ; C -1 ; WX 556 ; N ocircumflex ; B 48 -17 527 712 ; C -1 ; WX 556 ; N ntilde ; B 17 -17 553 676 ; C -1 ; WX 778 ; N Uhungarumlaut ; B 83 -17 825 911 ; C -1 ; WX 611 ; N Eacute ; B 11 -3 606 911 ; C -1 ; WX 444 ; N emacron ; B 28 -17 474 628 ; C -1 ; WX 500 ; N gbreve ; B -50 -271 529 700 ; C -1 ; WX 750 ; N onequarter ; B 18 -2 732 683 ; C -1 ; WX 556 ; N Scaron ; B 50 -17 557 904 ; C -1 ; WX 556 ; N Scommaaccent ; B 50 -271 517 695 ; C -1 ; WX 833 ; N Ohungarumlaut ; B 76 -17 794 911 ; C -1 ; WX 400 ; N degree ; B 50 383 350 683 ; C -1 ; WX 556 ; N ograve ; B 48 -17 502 719 ; C -1 ; WX 685 ; N Ccaron ; B 69 -17 695 904 ; C -1 ; WX 556 ; N ugrave ; B 22 -17 521 719 ; C -1 ; WX 453 ; N radical ; B -9 -91 463 765 ; C -1 ; WX 778 ; N Dcaron ; B 0 -3 747 904 ; C -1 ; WX 389 ; N rcommaaccent ; B -22 -271 411 469 ; C -1 ; WX 778 ; N Ntilde ; B -2 -3 829 868 ; C -1 ; WX 556 ; N otilde ; B 48 -17 553 676 ; C -1 ; WX 722 ; N Rcommaaccent ; B 4 -271 697 681 ; C -1 ; WX 611 ; N Lcommaaccent ; B 26 -271 578 681 ; C -1 ; WX 722 ; N Atilde ; B -35 -3 685 868 ; C -1 ; WX 722 ; N Aogonek ; B -35 -210 696 683 ; C -1 ; WX 722 ; N Aring ; B -35 -3 685 926 ; C -1 ; WX 833 ; N Otilde ; B 76 -17 794 868 ; C -1 ; WX 500 ; N zdotaccent ; B 31 -17 470 668 ; C -1 ; WX 611 ; N Ecaron ; B 11 -3 606 904 ; C -1 ; WX 389 ; N Iogonek ; B -1 -210 412 681 ; C -1 ; WX 556 ; N kcommaaccent ; B 34 -271 528 726 ; C -1 ; WX 606 ; N minus ; B 51 204 555 292 ; C -1 ; WX 389 ; N Icircumflex ; B -1 -3 443 904 ; C -1 ; WX 556 ; N ncaron ; B 17 -17 557 712 ; C -1 ; WX 389 ; N tcommaaccent ; B 18 -271 409 636 ; C -1 ; WX 606 ; N logicalnot ; B 51 107 555 390 ; C -1 ; WX 556 ; N odieresis ; B 48 -17 538 668 ; C -1 ; WX 556 ; N udieresis ; B 22 -17 538 668 ; C -1 ; WX 549 ; N notequal ; B 12 -40 537 554 ; C -1 ; WX 500 ; N gcommaaccent ; B -50 -271 529 719 ; C -1 ; WX 556 ; N eth ; B 48 -17 546 726 ; C -1 ; WX 500 ; N zcaron ; B 31 -17 517 712 ; C -1 ; WX 556 ; N ncommaaccent ; B 17 -271 521 469 ; C -1 ; WX 300 ; N onesuperior ; B 41 271 298 680 ; C -1 ; WX 333 ; N imacron ; B 26 -17 375 608 ; EndCharMetrics StartKernData StartKernPairs 972 KPX A T -55 KPX A Tcaron -55 KPX A Tcommaaccent -55 KPX A V -74 KPX A W -74 KPX A Y -74 KPX A Yacute -74 KPX A Ydieresis -74 KPX A quoteright -55 KPX A space -55 KPX A v -55 KPX A w -37 KPX A y -55 KPX A yacute -55 KPX A ydieresis -55 KPX Aacute T -55 KPX Aacute Tcaron -55 KPX Aacute Tcommaaccent -55 KPX Aacute V -74 KPX Aacute W -74 KPX Aacute Y -74 KPX Aacute Yacute -74 KPX Aacute Ydieresis -74 KPX Aacute quoteright -55 KPX Aacute space -55 KPX Aacute v -55 KPX Aacute w -37 KPX Aacute y -55 KPX Aacute yacute -55 KPX Aacute ydieresis -55 KPX Abreve T -55 KPX Abreve Tcaron -55 KPX Abreve Tcommaaccent -55 KPX Abreve V -74 KPX Abreve W -74 KPX Abreve Y -74 KPX Abreve Yacute -74 KPX Abreve Ydieresis -74 KPX Abreve quoteright -55 KPX Abreve space -55 KPX Abreve v -55 KPX Abreve w -37 KPX Abreve y -55 KPX Abreve yacute -55 KPX Abreve ydieresis -55 KPX Acircumflex T -55 KPX Acircumflex Tcaron -55 KPX Acircumflex Tcommaaccent -55 KPX Acircumflex V -74 KPX Acircumflex W -74 KPX Acircumflex Y -74 KPX Acircumflex Yacute -74 KPX Acircumflex Ydieresis -74 KPX Acircumflex quoteright -55 KPX Acircumflex space -55 KPX Acircumflex v -55 KPX Acircumflex w -37 KPX Acircumflex y -55 KPX Acircumflex yacute -55 KPX Acircumflex ydieresis -55 KPX Adieresis T -55 KPX Adieresis Tcaron -55 KPX Adieresis Tcommaaccent -55 KPX Adieresis V -74 KPX Adieresis W -74 KPX Adieresis Y -74 KPX Adieresis Yacute -74 KPX Adieresis Ydieresis -74 KPX Adieresis quoteright -55 KPX Adieresis space -55 KPX Adieresis v -55 KPX Adieresis w -37 KPX Adieresis y -55 KPX Adieresis yacute -55 KPX Adieresis ydieresis -55 KPX Agrave T -55 KPX Agrave Tcaron -55 KPX Agrave Tcommaaccent -55 KPX Agrave V -74 KPX Agrave W -74 KPX Agrave Y -74 KPX Agrave Yacute -74 KPX Agrave Ydieresis -74 KPX Agrave quoteright -55 KPX Agrave space -55 KPX Agrave v -55 KPX Agrave w -37 KPX Agrave y -55 KPX Agrave yacute -55 KPX Agrave ydieresis -55 KPX Amacron T -55 KPX Amacron Tcaron -55 KPX Amacron Tcommaaccent -55 KPX Amacron V -74 KPX Amacron W -74 KPX Amacron Y -74 KPX Amacron Yacute -74 KPX Amacron Ydieresis -74 KPX Amacron quoteright -55 KPX Amacron space -55 KPX Amacron v -55 KPX Amacron w -37 KPX Amacron y -55 KPX Amacron yacute -55 KPX Amacron ydieresis -55 KPX Aogonek T -55 KPX Aogonek Tcaron -55 KPX Aogonek Tcommaaccent -55 KPX Aogonek V -74 KPX Aogonek W -74 KPX Aogonek Y -74 KPX Aogonek Yacute -74 KPX Aogonek Ydieresis -74 KPX Aogonek quoteright -55 KPX Aogonek space -55 KPX Aogonek v -55 KPX Aogonek w -37 KPX Aogonek y -55 KPX Aogonek yacute -55 KPX Aogonek ydieresis -55 KPX Aring T -55 KPX Aring Tcaron -55 KPX Aring Tcommaaccent -55 KPX Aring V -74 KPX Aring W -74 KPX Aring Y -74 KPX Aring Yacute -74 KPX Aring Ydieresis -74 KPX Aring quoteright -55 KPX Aring space -55 KPX Aring v -55 KPX Aring w -37 KPX Aring y -55 KPX Aring yacute -55 KPX Aring ydieresis -55 KPX Atilde T -55 KPX Atilde Tcaron -55 KPX Atilde Tcommaaccent -55 KPX Atilde V -74 KPX Atilde W -74 KPX Atilde Y -74 KPX Atilde Yacute -74 KPX Atilde Ydieresis -74 KPX Atilde quoteright -55 KPX Atilde space -55 KPX Atilde v -55 KPX Atilde w -37 KPX Atilde y -55 KPX Atilde yacute -55 KPX Atilde ydieresis -55 KPX F A -74 KPX F Aacute -74 KPX F Abreve -74 KPX F Acircumflex -74 KPX F Adieresis -74 KPX F Agrave -74 KPX F Amacron -74 KPX F Aogonek -74 KPX F Aring -74 KPX F Atilde -74 KPX F comma -111 KPX F period -111 KPX F space -18 KPX L T -74 KPX L Tcaron -74 KPX L Tcommaaccent -74 KPX L V -74 KPX L W -74 KPX L Y -74 KPX L Yacute -74 KPX L Ydieresis -74 KPX L quoteright -55 KPX L space -18 KPX L y -37 KPX L yacute -37 KPX L ydieresis -37 KPX Lacute T -74 KPX Lacute Tcaron -74 KPX Lacute Tcommaaccent -74 KPX Lacute V -74 KPX Lacute W -74 KPX Lacute Y -74 KPX Lacute Yacute -74 KPX Lacute Ydieresis -74 KPX Lacute quoteright -55 KPX Lacute space -18 KPX Lacute y -37 KPX Lacute yacute -37 KPX Lacute ydieresis -37 KPX Lcaron quoteright -55 KPX Lcaron space -18 KPX Lcaron y -37 KPX Lcaron yacute -37 KPX Lcaron ydieresis -37 KPX Lcommaaccent T -74 KPX Lcommaaccent Tcaron -74 KPX Lcommaaccent Tcommaaccent -74 KPX Lcommaaccent V -74 KPX Lcommaaccent W -74 KPX Lcommaaccent Y -74 KPX Lcommaaccent Yacute -74 KPX Lcommaaccent Ydieresis -74 KPX Lcommaaccent quoteright -55 KPX Lcommaaccent space -18 KPX Lcommaaccent y -37 KPX Lcommaaccent yacute -37 KPX Lcommaaccent ydieresis -37 KPX Lslash T -74 KPX Lslash Tcaron -74 KPX Lslash Tcommaaccent -74 KPX Lslash V -74 KPX Lslash W -74 KPX Lslash Y -74 KPX Lslash Yacute -74 KPX Lslash Ydieresis -74 KPX Lslash quoteright -55 KPX Lslash space -18 KPX Lslash y -37 KPX Lslash yacute -37 KPX Lslash ydieresis -37 KPX P A -92 KPX P Aacute -92 KPX P Abreve -92 KPX P Acircumflex -92 KPX P Adieresis -92 KPX P Agrave -92 KPX P Amacron -92 KPX P Aogonek -92 KPX P Aring -92 KPX P Atilde -92 KPX P comma -129 KPX P period -129 KPX P space -55 KPX R T -37 KPX R Tcaron -37 KPX R Tcommaaccent -37 KPX R V -55 KPX R W -55 KPX R Y -37 KPX R Yacute -37 KPX R Ydieresis -37 KPX R y -20 KPX R yacute -20 KPX R ydieresis -20 KPX Racute T -37 KPX Racute Tcaron -37 KPX Racute Tcommaaccent -37 KPX Racute V -55 KPX Racute W -55 KPX Racute Y -37 KPX Racute Yacute -37 KPX Racute Ydieresis -37 KPX Racute y -20 KPX Racute yacute -20 KPX Racute ydieresis -20 KPX Rcaron T -37 KPX Rcaron Tcaron -37 KPX Rcaron Tcommaaccent -37 KPX Rcaron V -55 KPX Rcaron W -55 KPX Rcaron Y -37 KPX Rcaron Yacute -37 KPX Rcaron Ydieresis -37 KPX Rcaron y -20 KPX Rcaron yacute -20 KPX Rcaron ydieresis -20 KPX Rcommaaccent T -37 KPX Rcommaaccent Tcaron -37 KPX Rcommaaccent Tcommaaccent -37 KPX Rcommaaccent V -55 KPX Rcommaaccent W -55 KPX Rcommaaccent Y -37 KPX Rcommaaccent Yacute -37 KPX Rcommaaccent Ydieresis -37 KPX Rcommaaccent y -20 KPX Rcommaaccent yacute -20 KPX Rcommaaccent ydieresis -20 KPX T A -55 KPX T Aacute -55 KPX T Abreve -55 KPX T Acircumflex -55 KPX T Adieresis -55 KPX T Agrave -55 KPX T Amacron -55 KPX T Aogonek -55 KPX T Aring -55 KPX T Atilde -55 KPX T O -18 KPX T Oacute -18 KPX T Ocircumflex -18 KPX T Odieresis -18 KPX T Ograve -18 KPX T Ohungarumlaut -18 KPX T Omacron -18 KPX T Oslash -18 KPX T Otilde -18 KPX T a -111 KPX T aacute -111 KPX T abreve -111 KPX T acircumflex -111 KPX T adieresis -111 KPX T agrave -111 KPX T amacron -111 KPX T aogonek -111 KPX T aring -111 KPX T atilde -111 KPX T c -92 KPX T cacute -92 KPX T ccaron -92 KPX T ccedilla -92 KPX T colon -55 KPX T comma -55 KPX T e -111 KPX T eacute -111 KPX T ecaron -111 KPX T ecircumflex -71 KPX T edieresis -71 KPX T edotaccent -111 KPX T egrave -71 KPX T emacron -71 KPX T eogonek -111 KPX T hyphen -92 KPX T i -74 KPX T iacute -74 KPX T icircumflex -34 KPX T idieresis -34 KPX T igrave -34 KPX T imacron -34 KPX T iogonek -74 KPX T o -111 KPX T oacute -111 KPX T ocircumflex -111 KPX T odieresis -111 KPX T ograve -111 KPX T ohungarumlaut -111 KPX T omacron -111 KPX T oslash -111 KPX T otilde -111 KPX T period -55 KPX T r -92 KPX T racute -92 KPX T rcaron -92 KPX T rcommaaccent -92 KPX T s -92 KPX T sacute -92 KPX T scaron -92 KPX T scedilla -92 KPX T scommaaccent -92 KPX T semicolon -55 KPX T u -92 KPX T uacute -92 KPX T ucircumflex -92 KPX T udieresis -92 KPX T ugrave -92 KPX T uhungarumlaut -92 KPX T umacron -92 KPX T uogonek -92 KPX T uring -92 KPX T w -50 KPX T y -80 KPX T yacute -80 KPX T ydieresis -80 KPX Tcaron A -55 KPX Tcaron Aacute -55 KPX Tcaron Abreve -55 KPX Tcaron Acircumflex -55 KPX Tcaron Adieresis -55 KPX Tcaron Agrave -55 KPX Tcaron Amacron -55 KPX Tcaron Aogonek -55 KPX Tcaron Aring -55 KPX Tcaron Atilde -55 KPX Tcaron O -18 KPX Tcaron Oacute -18 KPX Tcaron Ocircumflex -18 KPX Tcaron Odieresis -18 KPX Tcaron Ograve -18 KPX Tcaron Ohungarumlaut -18 KPX Tcaron Omacron -18 KPX Tcaron Oslash -18 KPX Tcaron Otilde -18 KPX Tcaron a -111 KPX Tcaron aacute -111 KPX Tcaron abreve -111 KPX Tcaron acircumflex -111 KPX Tcaron adieresis -111 KPX Tcaron agrave -111 KPX Tcaron amacron -111 KPX Tcaron aogonek -111 KPX Tcaron aring -111 KPX Tcaron atilde -111 KPX Tcaron c -92 KPX Tcaron cacute -92 KPX Tcaron ccaron -92 KPX Tcaron ccedilla -92 KPX Tcaron colon -55 KPX Tcaron comma -55 KPX Tcaron e -111 KPX Tcaron eacute -111 KPX Tcaron ecaron -111 KPX Tcaron ecircumflex -71 KPX Tcaron edieresis -71 KPX Tcaron edotaccent -111 KPX Tcaron egrave -71 KPX Tcaron emacron -71 KPX Tcaron eogonek -111 KPX Tcaron hyphen -92 KPX Tcaron i -74 KPX Tcaron iacute -74 KPX Tcaron icircumflex -34 KPX Tcaron idieresis -34 KPX Tcaron igrave -34 KPX Tcaron imacron -34 KPX Tcaron iogonek -74 KPX Tcaron o -111 KPX Tcaron oacute -111 KPX Tcaron ocircumflex -111 KPX Tcaron odieresis -111 KPX Tcaron ograve -111 KPX Tcaron ohungarumlaut -111 KPX Tcaron omacron -111 KPX Tcaron oslash -111 KPX Tcaron otilde -111 KPX Tcaron period -55 KPX Tcaron r -92 KPX Tcaron racute -92 KPX Tcaron rcaron -92 KPX Tcaron rcommaaccent -92 KPX Tcaron s -92 KPX Tcaron sacute -92 KPX Tcaron scaron -92 KPX Tcaron scedilla -92 KPX Tcaron scommaaccent -92 KPX Tcaron semicolon -55 KPX Tcaron u -92 KPX Tcaron uacute -92 KPX Tcaron ucircumflex -92 KPX Tcaron udieresis -92 KPX Tcaron ugrave -92 KPX Tcaron uhungarumlaut -92 KPX Tcaron umacron -92 KPX Tcaron uogonek -92 KPX Tcaron uring -92 KPX Tcaron w -50 KPX Tcaron y -80 KPX Tcaron yacute -80 KPX Tcaron ydieresis -80 KPX Tcommaaccent A -55 KPX Tcommaaccent Aacute -55 KPX Tcommaaccent Abreve -55 KPX Tcommaaccent Acircumflex -55 KPX Tcommaaccent Adieresis -55 KPX Tcommaaccent Agrave -55 KPX Tcommaaccent Amacron -55 KPX Tcommaaccent Aogonek -55 KPX Tcommaaccent Aring -55 KPX Tcommaaccent Atilde -55 KPX Tcommaaccent O -18 KPX Tcommaaccent Oacute -18 KPX Tcommaaccent Ocircumflex -18 KPX Tcommaaccent Odieresis -18 KPX Tcommaaccent Ograve -18 KPX Tcommaaccent Ohungarumlaut -18 KPX Tcommaaccent Omacron -18 KPX Tcommaaccent Oslash -18 KPX Tcommaaccent Otilde -18 KPX Tcommaaccent a -111 KPX Tcommaaccent aacute -111 KPX Tcommaaccent abreve -111 KPX Tcommaaccent acircumflex -111 KPX Tcommaaccent adieresis -111 KPX Tcommaaccent agrave -111 KPX Tcommaaccent amacron -111 KPX Tcommaaccent aogonek -111 KPX Tcommaaccent aring -111 KPX Tcommaaccent atilde -111 KPX Tcommaaccent c -92 KPX Tcommaaccent cacute -92 KPX Tcommaaccent ccaron -92 KPX Tcommaaccent ccedilla -92 KPX Tcommaaccent colon -55 KPX Tcommaaccent comma -55 KPX Tcommaaccent e -111 KPX Tcommaaccent eacute -111 KPX Tcommaaccent ecaron -111 KPX Tcommaaccent ecircumflex -71 KPX Tcommaaccent edieresis -71 KPX Tcommaaccent edotaccent -111 KPX Tcommaaccent egrave -71 KPX Tcommaaccent emacron -71 KPX Tcommaaccent eogonek -111 KPX Tcommaaccent hyphen -92 KPX Tcommaaccent i -74 KPX Tcommaaccent iacute -74 KPX Tcommaaccent icircumflex -34 KPX Tcommaaccent idieresis -34 KPX Tcommaaccent igrave -34 KPX Tcommaaccent imacron -34 KPX Tcommaaccent iogonek -74 KPX Tcommaaccent o -111 KPX Tcommaaccent oacute -111 KPX Tcommaaccent ocircumflex -111 KPX Tcommaaccent odieresis -111 KPX Tcommaaccent ograve -111 KPX Tcommaaccent ohungarumlaut -111 KPX Tcommaaccent omacron -111 KPX Tcommaaccent oslash -111 KPX Tcommaaccent otilde -111 KPX Tcommaaccent period -55 KPX Tcommaaccent r -92 KPX Tcommaaccent racute -92 KPX Tcommaaccent rcaron -92 KPX Tcommaaccent rcommaaccent -92 KPX Tcommaaccent s -92 KPX Tcommaaccent sacute -92 KPX Tcommaaccent scaron -92 KPX Tcommaaccent scedilla -92 KPX Tcommaaccent scommaaccent -92 KPX Tcommaaccent semicolon -55 KPX Tcommaaccent u -92 KPX Tcommaaccent uacute -92 KPX Tcommaaccent ucircumflex -92 KPX Tcommaaccent udieresis -92 KPX Tcommaaccent ugrave -92 KPX Tcommaaccent uhungarumlaut -92 KPX Tcommaaccent umacron -92 KPX Tcommaaccent uogonek -92 KPX Tcommaaccent uring -92 KPX Tcommaaccent w -50 KPX Tcommaaccent y -80 KPX Tcommaaccent yacute -80 KPX Tcommaaccent ydieresis -80 KPX V A -74 KPX V Aacute -74 KPX V Abreve -74 KPX V Acircumflex -74 KPX V Adieresis -74 KPX V Agrave -74 KPX V Amacron -74 KPX V Aogonek -74 KPX V Aring -74 KPX V Atilde -74 KPX V a -92 KPX V aacute -92 KPX V abreve -92 KPX V acircumflex -92 KPX V adieresis -92 KPX V agrave -92 KPX V amacron -92 KPX V aogonek -92 KPX V aring -92 KPX V atilde -92 KPX V colon -37 KPX V comma -111 KPX V e -74 KPX V eacute -74 KPX V ecaron -74 KPX V ecircumflex -74 KPX V edieresis -74 KPX V edotaccent -74 KPX V egrave -34 KPX V emacron -34 KPX V eogonek -74 KPX V hyphen -37 KPX V i -50 KPX V iacute -50 KPX V iogonek -50 KPX V o -74 KPX V oacute -74 KPX V ocircumflex -74 KPX V odieresis -74 KPX V ograve -74 KPX V ohungarumlaut -74 KPX V omacron -74 KPX V oslash -74 KPX V otilde -74 KPX V period -111 KPX V r -74 KPX V racute -74 KPX V rcaron -74 KPX V rcommaaccent -74 KPX V semicolon -37 KPX V u -50 KPX V uacute -50 KPX V ucircumflex -50 KPX V udieresis -50 KPX V ugrave -50 KPX V uhungarumlaut -50 KPX V umacron -50 KPX V uogonek -50 KPX V uring -50 KPX V y -50 KPX V yacute -50 KPX V ydieresis -50 KPX W A -74 KPX W Aacute -74 KPX W Abreve -74 KPX W Acircumflex -74 KPX W Adieresis -74 KPX W Agrave -74 KPX W Amacron -74 KPX W Aogonek -74 KPX W Aring -74 KPX W Atilde -74 KPX W a -74 KPX W aacute -74 KPX W abreve -74 KPX W acircumflex -74 KPX W adieresis -74 KPX W agrave -74 KPX W amacron -74 KPX W aogonek -74 KPX W aring -74 KPX W atilde -74 KPX W colon -28 KPX W comma -55 KPX W e -55 KPX W eacute -55 KPX W ecaron -55 KPX W ecircumflex -55 KPX W edieresis -55 KPX W edotaccent -55 KPX W egrave -55 KPX W emacron -55 KPX W eogonek -55 KPX W i -30 KPX W iacute -30 KPX W iogonek -30 KPX W o -55 KPX W oacute -55 KPX W ocircumflex -55 KPX W odieresis -55 KPX W ograve -55 KPX W ohungarumlaut -55 KPX W omacron -55 KPX W oslash -55 KPX W otilde -55 KPX W period -55 KPX W r -30 KPX W racute -30 KPX W rcaron -30 KPX W rcommaaccent -30 KPX W semicolon -18 KPX W u -30 KPX W uacute -30 KPX W ucircumflex -30 KPX W udieresis -30 KPX W ugrave -30 KPX W uhungarumlaut -30 KPX W umacron -30 KPX W uogonek -30 KPX W uring -30 KPX W y -30 KPX W yacute -30 KPX W ydieresis -30 KPX Y A -55 KPX Y Aacute -55 KPX Y Abreve -55 KPX Y Acircumflex -55 KPX Y Adieresis -55 KPX Y Agrave -55 KPX Y Amacron -55 KPX Y Aogonek -55 KPX Y Aring -55 KPX Y Atilde -55 KPX Y a -111 KPX Y aacute -111 KPX Y abreve -111 KPX Y acircumflex -111 KPX Y adieresis -111 KPX Y agrave -111 KPX Y amacron -111 KPX Y aogonek -111 KPX Y aring -111 KPX Y atilde -111 KPX Y colon -55 KPX Y comma -55 KPX Y e -92 KPX Y eacute -92 KPX Y ecaron -92 KPX Y ecircumflex -92 KPX Y edieresis -92 KPX Y edotaccent -92 KPX Y egrave -92 KPX Y emacron -92 KPX Y eogonek -92 KPX Y hyphen -55 KPX Y i -54 KPX Y iacute -54 KPX Y iogonek -54 KPX Y o -111 KPX Y oacute -111 KPX Y ocircumflex -111 KPX Y odieresis -111 KPX Y ograve -111 KPX Y ohungarumlaut -111 KPX Y omacron -111 KPX Y oslash -111 KPX Y otilde -111 KPX Y p -74 KPX Y period -55 KPX Y q -92 KPX Y semicolon -55 KPX Y u -50 KPX Y uacute -50 KPX Y ucircumflex -50 KPX Y udieresis -50 KPX Y ugrave -50 KPX Y uhungarumlaut -50 KPX Y umacron -50 KPX Y uogonek -50 KPX Y uring -50 KPX Y v -30 KPX Yacute A -55 KPX Yacute Aacute -55 KPX Yacute Abreve -55 KPX Yacute Acircumflex -55 KPX Yacute Adieresis -55 KPX Yacute Agrave -55 KPX Yacute Amacron -55 KPX Yacute Aogonek -55 KPX Yacute Aring -55 KPX Yacute Atilde -55 KPX Yacute a -111 KPX Yacute aacute -111 KPX Yacute abreve -111 KPX Yacute acircumflex -111 KPX Yacute adieresis -111 KPX Yacute agrave -111 KPX Yacute amacron -111 KPX Yacute aogonek -111 KPX Yacute aring -111 KPX Yacute atilde -111 KPX Yacute colon -55 KPX Yacute comma -55 KPX Yacute e -92 KPX Yacute eacute -92 KPX Yacute ecaron -92 KPX Yacute ecircumflex -92 KPX Yacute edieresis -92 KPX Yacute edotaccent -92 KPX Yacute egrave -92 KPX Yacute emacron -92 KPX Yacute eogonek -92 KPX Yacute hyphen -55 KPX Yacute i -54 KPX Yacute iacute -54 KPX Yacute iogonek -54 KPX Yacute o -111 KPX Yacute oacute -111 KPX Yacute ocircumflex -111 KPX Yacute odieresis -111 KPX Yacute ograve -111 KPX Yacute ohungarumlaut -111 KPX Yacute omacron -111 KPX Yacute oslash -111 KPX Yacute otilde -111 KPX Yacute p -74 KPX Yacute period -55 KPX Yacute q -92 KPX Yacute semicolon -55 KPX Yacute u -50 KPX Yacute uacute -50 KPX Yacute ucircumflex -50 KPX Yacute udieresis -50 KPX Yacute ugrave -50 KPX Yacute uhungarumlaut -50 KPX Yacute umacron -50 KPX Yacute uogonek -50 KPX Yacute uring -50 KPX Yacute v -30 KPX Ydieresis A -55 KPX Ydieresis Aacute -55 KPX Ydieresis Abreve -55 KPX Ydieresis Acircumflex -55 KPX Ydieresis Adieresis -55 KPX Ydieresis Agrave -55 KPX Ydieresis Amacron -55 KPX Ydieresis Aogonek -55 KPX Ydieresis Aring -55 KPX Ydieresis Atilde -55 KPX Ydieresis a -111 KPX Ydieresis aacute -111 KPX Ydieresis abreve -111 KPX Ydieresis acircumflex -111 KPX Ydieresis adieresis -111 KPX Ydieresis agrave -111 KPX Ydieresis amacron -111 KPX Ydieresis aogonek -111 KPX Ydieresis aring -111 KPX Ydieresis atilde -111 KPX Ydieresis colon -55 KPX Ydieresis comma -55 KPX Ydieresis e -92 KPX Ydieresis eacute -92 KPX Ydieresis ecaron -92 KPX Ydieresis ecircumflex -92 KPX Ydieresis edieresis -92 KPX Ydieresis edotaccent -92 KPX Ydieresis egrave -92 KPX Ydieresis emacron -92 KPX Ydieresis eogonek -92 KPX Ydieresis hyphen -55 KPX Ydieresis i -54 KPX Ydieresis iacute -54 KPX Ydieresis iogonek -54 KPX Ydieresis o -111 KPX Ydieresis oacute -111 KPX Ydieresis ocircumflex -111 KPX Ydieresis odieresis -111 KPX Ydieresis ograve -111 KPX Ydieresis ohungarumlaut -111 KPX Ydieresis omacron -111 KPX Ydieresis oslash -111 KPX Ydieresis otilde -111 KPX Ydieresis p -74 KPX Ydieresis period -55 KPX Ydieresis q -92 KPX Ydieresis semicolon -55 KPX Ydieresis u -50 KPX Ydieresis uacute -50 KPX Ydieresis ucircumflex -50 KPX Ydieresis udieresis -50 KPX Ydieresis ugrave -50 KPX Ydieresis uhungarumlaut -50 KPX Ydieresis umacron -50 KPX Ydieresis uogonek -50 KPX Ydieresis uring -50 KPX Ydieresis v -30 KPX f f -37 KPX f quoteright 37 KPX one one -55 KPX quoteleft quoteleft -55 KPX quoteright quoteright -55 KPX quoteright s -37 KPX quoteright sacute -37 KPX quoteright scaron -37 KPX quoteright scedilla -37 KPX quoteright scommaaccent -37 KPX quoteright space -37 KPX quoteright t -18 KPX quoteright tcommaaccent -18 KPX r c -18 KPX r cacute -18 KPX r ccaron -18 KPX r ccedilla -18 KPX r comma -55 KPX r e -18 KPX r eacute -18 KPX r ecaron -18 KPX r ecircumflex -18 KPX r edieresis -18 KPX r edotaccent -18 KPX r egrave -18 KPX r emacron -18 KPX r eogonek -18 KPX r g -18 KPX r gbreve -18 KPX r gcommaaccent -18 KPX r h -18 KPX r o -18 KPX r oacute -18 KPX r ocircumflex -18 KPX r odieresis -18 KPX r ograve -18 KPX r ohungarumlaut -18 KPX r omacron -18 KPX r oslash -18 KPX r otilde -18 KPX r period -55 KPX r q -18 KPX r quoteright 55 KPX racute c -18 KPX racute cacute -18 KPX racute ccaron -18 KPX racute ccedilla -18 KPX racute comma -55 KPX racute e -18 KPX racute eacute -18 KPX racute ecaron -18 KPX racute ecircumflex -18 KPX racute edieresis -18 KPX racute edotaccent -18 KPX racute egrave -18 KPX racute emacron -18 KPX racute eogonek -18 KPX racute g -18 KPX racute gbreve -18 KPX racute gcommaaccent -18 KPX racute h -18 KPX racute o -18 KPX racute oacute -18 KPX racute ocircumflex -18 KPX racute odieresis -18 KPX racute ograve -18 KPX racute ohungarumlaut -18 KPX racute omacron -18 KPX racute oslash -18 KPX racute otilde -18 KPX racute period -55 KPX racute q -18 KPX racute quoteright 55 KPX rcaron c -18 KPX rcaron cacute -18 KPX rcaron ccaron -18 KPX rcaron ccedilla -18 KPX rcaron comma -55 KPX rcaron e -18 KPX rcaron eacute -18 KPX rcaron ecaron -18 KPX rcaron ecircumflex -18 KPX rcaron edieresis -18 KPX rcaron edotaccent -18 KPX rcaron egrave -18 KPX rcaron emacron -18 KPX rcaron eogonek -18 KPX rcaron g -18 KPX rcaron gbreve -18 KPX rcaron gcommaaccent -18 KPX rcaron h -18 KPX rcaron o -18 KPX rcaron oacute -18 KPX rcaron ocircumflex -18 KPX rcaron odieresis -18 KPX rcaron ograve -18 KPX rcaron ohungarumlaut -18 KPX rcaron omacron -18 KPX rcaron oslash -18 KPX rcaron otilde -18 KPX rcaron period -55 KPX rcaron q -18 KPX rcaron quoteright 55 KPX rcommaaccent c -18 KPX rcommaaccent cacute -18 KPX rcommaaccent ccaron -18 KPX rcommaaccent ccedilla -18 KPX rcommaaccent comma -55 KPX rcommaaccent e -18 KPX rcommaaccent eacute -18 KPX rcommaaccent ecaron -18 KPX rcommaaccent ecircumflex -18 KPX rcommaaccent edieresis -18 KPX rcommaaccent edotaccent -18 KPX rcommaaccent egrave -18 KPX rcommaaccent emacron -18 KPX rcommaaccent eogonek -18 KPX rcommaaccent g -18 KPX rcommaaccent gbreve -18 KPX rcommaaccent gcommaaccent -18 KPX rcommaaccent h -18 KPX rcommaaccent o -18 KPX rcommaaccent oacute -18 KPX rcommaaccent ocircumflex -18 KPX rcommaaccent odieresis -18 KPX rcommaaccent ograve -18 KPX rcommaaccent ohungarumlaut -18 KPX rcommaaccent omacron -18 KPX rcommaaccent oslash -18 KPX rcommaaccent otilde -18 KPX rcommaaccent period -55 KPX rcommaaccent q -18 KPX rcommaaccent quoteright 55 KPX v comma -55 KPX v period -55 KPX w comma -55 KPX w period -55 KPX y comma -37 KPX y period -37 KPX yacute comma -37 KPX yacute period -37 KPX ydieresis comma -37 KPX ydieresis period -37 EndKernPairs EndKernData EndFontMetrics gle-graphics-4.2.4c/src/fonts/Adobe-Core35_AFMs-314/Palatino-Italic.afm0000664000000000000000000010652511405446017023546 0ustar rootrootStartFontMetrics 4.1 Comment Copyright (c) 1985, 1987, 1989, 1990, 1992, 1997 Adobe Systems Incorporated. All Rights Reserved. Comment Creation Date: Thu May 1 13:32:34 1997 Comment UniqueID 43074 Comment VMusage 54574 69599 FontName Palatino-Italic FullName Palatino Italic FamilyName Palatino Weight Medium ItalicAngle -10 IsFixedPitch false FontBBox -170 -276 1010 918 UnderlinePosition -100 UnderlineThickness 50 Version 002.000 Notice Copyright (c) 1985, 1987, 1989, 1990, 1992, 1997 Adobe Systems Incorporated. All Rights Reserved.Palatino is a trademark of Linotype-Hell AG and/or its subsidiaries. EncodingScheme AdobeStandardEncoding CapHeight 692 XHeight 482 Ascender 726 Descender -281 StdHW 42 StdVW 84 StartCharMetrics 314 C 32 ; WX 250 ; N space ; B 0 0 0 0 ; C 33 ; WX 333 ; N exclam ; B 76 -8 292 733 ; C 34 ; WX 500 ; N quotedbl ; B 140 508 455 733 ; C 35 ; WX 500 ; N numbersign ; B 4 0 495 692 ; C 36 ; WX 500 ; N dollar ; B 15 -113 452 733 ; C 37 ; WX 889 ; N percent ; B 74 -7 809 710 ; C 38 ; WX 778 ; N ampersand ; B 47 -18 766 692 ; C 39 ; WX 278 ; N quoteright ; B 78 488 258 733 ; C 40 ; WX 333 ; N parenleft ; B 54 -106 331 733 ; C 41 ; WX 333 ; N parenright ; B 2 -106 279 733 ; C 42 ; WX 389 ; N asterisk ; B 76 368 400 706 ; C 43 ; WX 606 ; N plus ; B 51 0 555 504 ; C 44 ; WX 250 ; N comma ; B 8 -143 203 123 ; C 45 ; WX 333 ; N hyphen ; B 19 223 304 281 ; C 46 ; WX 250 ; N period ; B 53 -5 158 112 ; C 47 ; WX 296 ; N slash ; B -40 -119 392 733 ; C 48 ; WX 500 ; N zero ; B 36 -11 480 699 ; C 49 ; WX 500 ; N one ; B 54 -3 398 699 ; C 50 ; WX 500 ; N two ; B 12 -3 437 699 ; C 51 ; WX 500 ; N three ; B 22 -11 447 699 ; C 52 ; WX 500 ; N four ; B 15 -3 478 699 ; C 53 ; WX 500 ; N five ; B 14 -11 491 693 ; C 54 ; WX 500 ; N six ; B 49 -11 469 699 ; C 55 ; WX 500 ; N seven ; B 53 -3 502 692 ; C 56 ; WX 500 ; N eight ; B 36 -11 469 699 ; C 57 ; WX 500 ; N nine ; B 32 -11 468 699 ; C 58 ; WX 250 ; N colon ; B 44 -5 207 458 ; C 59 ; WX 250 ; N semicolon ; B -9 -146 219 456 ; C 60 ; WX 606 ; N less ; B 53 -6 554 516 ; C 61 ; WX 606 ; N equal ; B 51 126 555 378 ; C 62 ; WX 606 ; N greater ; B 53 -6 554 516 ; C 63 ; WX 500 ; N question ; B 114 -8 427 706 ; C 64 ; WX 747 ; N at ; B 27 -18 718 706 ; C 65 ; WX 722 ; N A ; B -19 -3 677 705 ; C 66 ; WX 611 ; N B ; B 26 -6 559 692 ; C 67 ; WX 667 ; N C ; B 45 -18 651 706 ; C 68 ; WX 778 ; N D ; B 28 -3 741 692 ; C 69 ; WX 611 ; N E ; B 30 -3 570 692 ; C 70 ; WX 556 ; N F ; B 0 -3 548 692 ; C 71 ; WX 722 ; N G ; B 50 -18 694 706 ; C 72 ; WX 778 ; N H ; B -3 -3 800 692 ; C 73 ; WX 333 ; N I ; B 7 -3 354 692 ; C 74 ; WX 333 ; N J ; B -35 -206 358 692 ; C 75 ; WX 667 ; N K ; B 13 -3 683 692 ; C 76 ; WX 556 ; N L ; B 16 -3 523 692 ; C 77 ; WX 944 ; N M ; B -19 -18 940 692 ; C 78 ; WX 778 ; N N ; B 2 -11 804 692 ; C 79 ; WX 778 ; N O ; B 53 -18 748 706 ; C 80 ; WX 611 ; N P ; B 9 -3 594 692 ; C 81 ; WX 778 ; N Q ; B 53 -201 748 706 ; C 82 ; WX 667 ; N R ; B 9 -3 639 692 ; C 83 ; WX 556 ; N S ; B 42 -18 506 706 ; C 84 ; WX 611 ; N T ; B 53 -3 635 692 ; C 85 ; WX 778 ; N U ; B 88 -18 798 692 ; C 86 ; WX 722 ; N V ; B 75 -8 754 692 ; C 87 ; WX 944 ; N W ; B 71 -8 980 700 ; C 88 ; WX 722 ; N X ; B 20 -3 734 692 ; C 89 ; WX 667 ; N Y ; B 52 -3 675 705 ; C 90 ; WX 667 ; N Z ; B 20 -3 637 692 ; C 91 ; WX 333 ; N bracketleft ; B 18 -100 326 733 ; C 92 ; WX 606 ; N backslash ; B 81 0 513 733 ; C 93 ; WX 333 ; N bracketright ; B 7 -100 315 733 ; C 94 ; WX 606 ; N asciicircum ; B 51 283 554 689 ; C 95 ; WX 500 ; N underscore ; B 0 -125 500 -75 ; C 96 ; WX 278 ; N quoteleft ; B 78 488 258 733 ; C 97 ; WX 444 ; N a ; B 4 -11 406 482 ; C 98 ; WX 463 ; N b ; B 37 -11 433 733 ; C 99 ; WX 407 ; N c ; B 25 -11 389 482 ; C 100 ; WX 500 ; N d ; B 17 -11 483 733 ; C 101 ; WX 389 ; N e ; B 15 -11 374 482 ; C 102 ; WX 278 ; N f ; B -162 -276 413 733 ; L i fi ; L l fl ; C 103 ; WX 500 ; N g ; B -37 -276 498 482 ; C 104 ; WX 500 ; N h ; B 10 -9 471 733 ; C 105 ; WX 278 ; N i ; B 34 -9 264 712 ; C 106 ; WX 278 ; N j ; B -70 -276 265 712 ; C 107 ; WX 444 ; N k ; B 8 -9 449 733 ; C 108 ; WX 278 ; N l ; B 36 -9 251 733 ; C 109 ; WX 778 ; N m ; B 24 -9 740 482 ; C 110 ; WX 556 ; N n ; B 24 -9 514 482 ; C 111 ; WX 444 ; N o ; B 17 -11 411 482 ; C 112 ; WX 500 ; N p ; B -7 -276 465 482 ; C 113 ; WX 463 ; N q ; B 24 -276 432 482 ; C 114 ; WX 389 ; N r ; B 26 -9 384 482 ; C 115 ; WX 389 ; N s ; B 9 -11 345 482 ; C 116 ; WX 333 ; N t ; B 41 -9 310 646 ; C 117 ; WX 556 ; N u ; B 32 -11 512 482 ; C 118 ; WX 500 ; N v ; B 21 -11 477 482 ; C 119 ; WX 722 ; N w ; B 21 -11 699 482 ; C 120 ; WX 500 ; N x ; B 9 -11 484 482 ; C 121 ; WX 500 ; N y ; B -8 -276 490 482 ; C 122 ; WX 444 ; N z ; B -1 -11 416 482 ; C 123 ; WX 333 ; N braceleft ; B 15 -100 319 733 ; C 124 ; WX 606 ; N bar ; B 275 -250 331 750 ; C 125 ; WX 333 ; N braceright ; B 14 -100 318 733 ; C 126 ; WX 606 ; N asciitilde ; B 51 168 555 339 ; C 161 ; WX 333 ; N exclamdown ; B 15 -276 233 467 ; C 162 ; WX 500 ; N cent ; B 56 -96 418 551 ; C 163 ; WX 500 ; N sterling ; B 2 -18 479 708 ; C 164 ; WX 167 ; N fraction ; B -170 0 337 699 ; C 165 ; WX 500 ; N yen ; B 35 -3 512 699 ; C 166 ; WX 500 ; N florin ; B 5 -276 470 708 ; C 167 ; WX 500 ; N section ; B 14 -220 463 706 ; C 168 ; WX 500 ; N currency ; B 14 115 486 577 ; C 169 ; WX 333 ; N quotesingle ; B 140 508 288 733 ; C 170 ; WX 500 ; N quotedblleft ; B 98 488 475 733 ; C 171 ; WX 500 ; N guillemotleft ; B 57 70 437 440 ; C 172 ; WX 333 ; N guilsinglleft ; B 57 70 270 440 ; C 173 ; WX 333 ; N guilsinglright ; B 63 70 276 440 ; C 174 ; WX 528 ; N fi ; B -162 -276 502 733 ; C 175 ; WX 545 ; N fl ; B -162 -276 520 733 ; C 177 ; WX 500 ; N endash ; B -10 228 510 278 ; C 178 ; WX 500 ; N dagger ; B 48 0 469 692 ; C 179 ; WX 500 ; N daggerdbl ; B 10 -162 494 692 ; C 180 ; WX 250 ; N periodcentered ; B 53 195 158 312 ; C 182 ; WX 500 ; N paragraph ; B 33 -224 611 692 ; C 183 ; WX 500 ; N bullet ; B 86 182 430 526 ; C 184 ; WX 278 ; N quotesinglbase ; B 27 -122 211 120 ; C 185 ; WX 500 ; N quotedblbase ; B 43 -122 424 120 ; C 186 ; WX 500 ; N quotedblright ; B 98 488 475 733 ; C 187 ; WX 500 ; N guillemotright ; B 63 70 443 440 ; C 188 ; WX 1000 ; N ellipsis ; B 102 -5 873 112 ; C 189 ; WX 1000 ; N perthousand ; B 72 -6 929 717 ; C 191 ; WX 500 ; N questiondown ; B 57 -246 370 467 ; C 193 ; WX 333 ; N grave ; B 86 518 310 687 ; C 194 ; WX 333 ; N acute ; B 122 518 346 687 ; C 195 ; WX 333 ; N circumflex ; B 56 510 350 679 ; C 196 ; WX 333 ; N tilde ; B 63 535 390 638 ; C 197 ; WX 333 ; N macron ; B 74 538 386 589 ; C 198 ; WX 333 ; N breve ; B 92 518 393 677 ; C 199 ; WX 333 ; N dotaccent ; B 189 604 283 712 ; C 200 ; WX 333 ; N dieresis ; B 88 604 382 712 ; C 202 ; WX 333 ; N ring ; B 159 508 359 708 ; C 203 ; WX 333 ; N cedilla ; B -9 -216 202 0 ; C 205 ; WX 333 ; N hungarumlaut ; B 16 518 407 687 ; C 206 ; WX 333 ; N ogonek ; B 31 -226 213 -18 ; C 207 ; WX 333 ; N caron ; B 104 510 409 679 ; C 208 ; WX 1000 ; N emdash ; B -10 228 1010 278 ; C 225 ; WX 941 ; N AE ; B -4 -3 902 692 ; C 227 ; WX 333 ; N ordfeminine ; B 60 404 321 699 ; C 232 ; WX 556 ; N Lslash ; B -16 -3 523 692 ; C 233 ; WX 778 ; N Oslash ; B 32 -39 762 721 ; C 234 ; WX 1028 ; N OE ; B 56 -18 989 706 ; C 235 ; WX 333 ; N ordmasculine ; B 66 404 322 699 ; C 241 ; WX 638 ; N ae ; B 1 -11 623 482 ; C 245 ; WX 278 ; N dotlessi ; B 34 -9 241 482 ; C 248 ; WX 278 ; N lslash ; B -10 -9 302 733 ; C 249 ; WX 444 ; N oslash ; B -18 -24 460 510 ; C 250 ; WX 669 ; N oe ; B 17 -11 654 482 ; C 251 ; WX 500 ; N germandbls ; B -160 -276 488 733 ; C -1 ; WX 333 ; N Idieresis ; B 7 -3 422 847 ; C -1 ; WX 389 ; N eacute ; B 15 -11 394 707 ; C -1 ; WX 444 ; N abreve ; B 4 -11 461 697 ; C -1 ; WX 556 ; N uhungarumlaut ; B 32 -11 599 707 ; C -1 ; WX 389 ; N ecaron ; B 15 -11 437 699 ; C -1 ; WX 667 ; N Ydieresis ; B 52 -3 675 847 ; C -1 ; WX 606 ; N divide ; B 51 0 555 504 ; C -1 ; WX 667 ; N Yacute ; B 52 -3 675 897 ; C -1 ; WX 722 ; N Acircumflex ; B -19 -3 677 889 ; C -1 ; WX 444 ; N aacute ; B 4 -11 414 707 ; C -1 ; WX 778 ; N Ucircumflex ; B 88 -18 798 889 ; C -1 ; WX 500 ; N yacute ; B -8 -276 492 707 ; C -1 ; WX 389 ; N scommaaccent ; B 9 -276 345 482 ; C -1 ; WX 389 ; N ecircumflex ; B 15 -11 398 699 ; C -1 ; WX 778 ; N Uring ; B 88 -18 798 918 ; C -1 ; WX 778 ; N Udieresis ; B 88 -18 798 847 ; C -1 ; WX 444 ; N aogonek ; B 4 -226 406 482 ; C -1 ; WX 778 ; N Uacute ; B 88 -18 798 897 ; C -1 ; WX 556 ; N uogonek ; B 32 -212 512 482 ; C -1 ; WX 611 ; N Edieresis ; B 30 -3 570 847 ; C -1 ; WX 778 ; N Dcroat ; B 19 -3 741 692 ; C -1 ; WX 250 ; N commaaccent ; B 43 -276 188 -50 ; C -1 ; WX 747 ; N copyright ; B 11 -18 736 706 ; C -1 ; WX 611 ; N Emacron ; B 30 -3 570 799 ; C -1 ; WX 407 ; N ccaron ; B 25 -11 446 699 ; C -1 ; WX 444 ; N aring ; B 4 -11 406 728 ; C -1 ; WX 778 ; N Ncommaaccent ; B 2 -276 804 692 ; C -1 ; WX 278 ; N lacute ; B 36 -9 391 917 ; C -1 ; WX 444 ; N agrave ; B 4 -11 406 707 ; C -1 ; WX 611 ; N Tcommaaccent ; B 53 -276 635 692 ; C -1 ; WX 667 ; N Cacute ; B 45 -18 651 897 ; C -1 ; WX 444 ; N atilde ; B 4 -11 446 658 ; C -1 ; WX 611 ; N Edotaccent ; B 30 -3 570 847 ; C -1 ; WX 389 ; N scaron ; B 9 -11 389 699 ; C -1 ; WX 389 ; N scedilla ; B -4 -216 345 482 ; C -1 ; WX 278 ; N iacute ; B 34 -9 330 707 ; C -1 ; WX 471 ; N lozenge ; B 21 0 451 710 ; C -1 ; WX 667 ; N Rcaron ; B 9 -3 639 889 ; C -1 ; WX 722 ; N Gcommaaccent ; B 50 -276 694 706 ; C -1 ; WX 556 ; N ucircumflex ; B 32 -11 512 699 ; C -1 ; WX 444 ; N acircumflex ; B 4 -11 406 699 ; C -1 ; WX 722 ; N Amacron ; B -19 -3 677 799 ; C -1 ; WX 389 ; N rcaron ; B 26 -9 437 699 ; C -1 ; WX 407 ; N ccedilla ; B 19 -216 389 482 ; C -1 ; WX 667 ; N Zdotaccent ; B 20 -3 637 847 ; C -1 ; WX 611 ; N Thorn ; B 9 -3 570 692 ; C -1 ; WX 778 ; N Omacron ; B 53 -18 748 799 ; C -1 ; WX 667 ; N Racute ; B 9 -3 639 897 ; C -1 ; WX 556 ; N Sacute ; B 42 -18 556 897 ; C -1 ; WX 580 ; N dcaron ; B 17 -11 634 733 ; C -1 ; WX 778 ; N Umacron ; B 88 -18 798 799 ; C -1 ; WX 556 ; N uring ; B 32 -11 512 728 ; C -1 ; WX 300 ; N threesuperior ; B 28 273 304 699 ; C -1 ; WX 778 ; N Ograve ; B 53 -18 748 897 ; C -1 ; WX 722 ; N Agrave ; B -19 -3 677 897 ; C -1 ; WX 722 ; N Abreve ; B -19 -3 677 887 ; C -1 ; WX 606 ; N multiply ; B 83 36 523 474 ; C -1 ; WX 556 ; N uacute ; B 32 -11 520 707 ; C -1 ; WX 611 ; N Tcaron ; B 53 -3 635 889 ; C -1 ; WX 476 ; N partialdiff ; B 34 -21 450 711 ; C -1 ; WX 500 ; N ydieresis ; B -8 -276 490 657 ; C -1 ; WX 778 ; N Nacute ; B 2 -11 804 897 ; C -1 ; WX 278 ; N icircumflex ; B 29 -9 323 699 ; C -1 ; WX 611 ; N Ecircumflex ; B 30 -3 570 889 ; C -1 ; WX 444 ; N adieresis ; B 4 -11 438 657 ; C -1 ; WX 389 ; N edieresis ; B 15 -11 410 657 ; C -1 ; WX 407 ; N cacute ; B 25 -11 403 707 ; C -1 ; WX 556 ; N nacute ; B 24 -9 514 707 ; C -1 ; WX 556 ; N umacron ; B 32 -11 512 609 ; C -1 ; WX 778 ; N Ncaron ; B 2 -11 804 889 ; C -1 ; WX 333 ; N Iacute ; B 7 -3 406 897 ; C -1 ; WX 606 ; N plusminus ; B 51 0 555 504 ; C -1 ; WX 606 ; N brokenbar ; B 275 -175 331 675 ; C -1 ; WX 747 ; N registered ; B 11 -18 736 706 ; C -1 ; WX 722 ; N Gbreve ; B 50 -18 694 887 ; C -1 ; WX 333 ; N Idotaccent ; B 7 -3 354 847 ; C -1 ; WX 600 ; N summation ; B 15 -10 586 706 ; C -1 ; WX 611 ; N Egrave ; B 30 -3 570 897 ; C -1 ; WX 389 ; N racute ; B 26 -9 386 707 ; C -1 ; WX 444 ; N omacron ; B 17 -11 442 609 ; C -1 ; WX 667 ; N Zacute ; B 20 -3 637 897 ; C -1 ; WX 667 ; N Zcaron ; B 20 -3 637 889 ; C -1 ; WX 549 ; N greaterequal ; B 26 0 523 643 ; C -1 ; WX 778 ; N Eth ; B 19 -3 741 692 ; C -1 ; WX 667 ; N Ccedilla ; B 45 -216 651 706 ; C -1 ; WX 278 ; N lcommaaccent ; B -43 -276 251 733 ; C -1 ; WX 353 ; N tcaron ; B 41 -9 420 752 ; C -1 ; WX 389 ; N eogonek ; B 15 -226 374 482 ; C -1 ; WX 778 ; N Uogonek ; B 88 -226 798 692 ; C -1 ; WX 722 ; N Aacute ; B -19 -3 677 897 ; C -1 ; WX 722 ; N Adieresis ; B -19 -3 677 847 ; C -1 ; WX 389 ; N egrave ; B 15 -11 374 707 ; C -1 ; WX 444 ; N zacute ; B -1 -11 416 707 ; C -1 ; WX 278 ; N iogonek ; B 16 -212 264 712 ; C -1 ; WX 778 ; N Oacute ; B 53 -18 748 897 ; C -1 ; WX 444 ; N oacute ; B 17 -11 414 707 ; C -1 ; WX 444 ; N amacron ; B 4 -11 442 609 ; C -1 ; WX 389 ; N sacute ; B 9 -11 374 707 ; C -1 ; WX 278 ; N idieresis ; B 34 -9 355 657 ; C -1 ; WX 778 ; N Ocircumflex ; B 53 -18 748 889 ; C -1 ; WX 778 ; N Ugrave ; B 88 -18 798 897 ; C -1 ; WX 600 ; N Delta ; B 66 0 668 688 ; C -1 ; WX 500 ; N thorn ; B -39 -276 433 733 ; C -1 ; WX 300 ; N twosuperior ; B 13 278 290 699 ; C -1 ; WX 778 ; N Odieresis ; B 53 -18 748 847 ; C -1 ; WX 556 ; N mu ; B 15 -226 512 482 ; C -1 ; WX 278 ; N igrave ; B 34 -9 270 707 ; C -1 ; WX 444 ; N ohungarumlaut ; B 17 -11 523 707 ; C -1 ; WX 611 ; N Eogonek ; B 30 -207 570 692 ; C -1 ; WX 500 ; N dcroat ; B 17 -11 526 733 ; C -1 ; WX 750 ; N threequarters ; B 35 -2 715 699 ; C -1 ; WX 556 ; N Scedilla ; B 42 -216 506 706 ; C -1 ; WX 348 ; N lcaron ; B 36 -9 402 733 ; C -1 ; WX 667 ; N Kcommaaccent ; B 13 -276 683 692 ; C -1 ; WX 556 ; N Lacute ; B 16 -3 523 897 ; C -1 ; WX 1000 ; N trademark ; B 52 285 951 689 ; C -1 ; WX 389 ; N edotaccent ; B 15 -11 374 657 ; C -1 ; WX 333 ; N Igrave ; B 7 -3 354 897 ; C -1 ; WX 333 ; N Imacron ; B 7 -3 426 799 ; C -1 ; WX 556 ; N Lcaron ; B 16 -3 541 712 ; C -1 ; WX 750 ; N onehalf ; B 31 -2 721 699 ; C -1 ; WX 549 ; N lessequal ; B 26 0 523 642 ; C -1 ; WX 444 ; N ocircumflex ; B 17 -11 411 699 ; C -1 ; WX 556 ; N ntilde ; B 24 -9 514 658 ; C -1 ; WX 778 ; N Uhungarumlaut ; B 88 -18 798 897 ; C -1 ; WX 611 ; N Eacute ; B 30 -3 570 897 ; C -1 ; WX 389 ; N emacron ; B 15 -11 434 609 ; C -1 ; WX 500 ; N gbreve ; B -37 -276 498 697 ; C -1 ; WX 750 ; N onequarter ; B 31 -2 715 699 ; C -1 ; WX 556 ; N Scaron ; B 42 -18 539 889 ; C -1 ; WX 556 ; N Scommaaccent ; B 42 -276 506 706 ; C -1 ; WX 778 ; N Ohungarumlaut ; B 53 -18 748 897 ; C -1 ; WX 400 ; N degree ; B 90 389 390 689 ; C -1 ; WX 444 ; N ograve ; B 17 -11 411 707 ; C -1 ; WX 667 ; N Ccaron ; B 45 -18 651 889 ; C -1 ; WX 556 ; N ugrave ; B 32 -11 512 707 ; C -1 ; WX 453 ; N radical ; B 12 -55 442 747 ; C -1 ; WX 778 ; N Dcaron ; B 28 -3 741 889 ; C -1 ; WX 389 ; N rcommaaccent ; B -28 -276 384 482 ; C -1 ; WX 778 ; N Ntilde ; B 2 -11 804 848 ; C -1 ; WX 444 ; N otilde ; B 17 -11 446 658 ; C -1 ; WX 667 ; N Rcommaaccent ; B 9 -276 639 692 ; C -1 ; WX 556 ; N Lcommaaccent ; B 16 -276 523 692 ; C -1 ; WX 722 ; N Atilde ; B -19 -3 677 848 ; C -1 ; WX 722 ; N Aogonek ; B -19 -210 695 705 ; C -1 ; WX 722 ; N Aring ; B -19 -3 677 918 ; C -1 ; WX 778 ; N Otilde ; B 53 -18 748 848 ; C -1 ; WX 444 ; N zdotaccent ; B -1 -11 416 657 ; C -1 ; WX 611 ; N Ecaron ; B 30 -3 588 889 ; C -1 ; WX 333 ; N Iogonek ; B 7 -210 354 692 ; C -1 ; WX 444 ; N kcommaaccent ; B 8 -276 449 733 ; C -1 ; WX 606 ; N minus ; B 51 224 555 280 ; C -1 ; WX 333 ; N Icircumflex ; B 7 -3 390 889 ; C -1 ; WX 556 ; N ncaron ; B 24 -9 533 699 ; C -1 ; WX 333 ; N tcommaaccent ; B -16 -276 310 646 ; C -1 ; WX 606 ; N logicalnot ; B 51 118 555 378 ; C -1 ; WX 444 ; N odieresis ; B 17 -11 438 657 ; C -1 ; WX 556 ; N udieresis ; B 32 -11 512 657 ; C -1 ; WX 549 ; N notequal ; B 12 -16 537 538 ; C -1 ; WX 500 ; N gcommaaccent ; B -37 -276 498 761 ; C -1 ; WX 444 ; N eth ; B 17 -11 478 733 ; C -1 ; WX 444 ; N zcaron ; B -1 -11 447 699 ; C -1 ; WX 556 ; N ncommaaccent ; B 24 -276 514 482 ; C -1 ; WX 300 ; N onesuperior ; B 61 278 285 699 ; C -1 ; WX 278 ; N imacron ; B 34 -9 324 579 ; EndCharMetrics StartKernData StartKernPairs 962 KPX A T -55 KPX A Tcaron -55 KPX A Tcommaaccent -55 KPX A V -74 KPX A W -55 KPX A Y -55 KPX A Yacute -55 KPX A Ydieresis -55 KPX A quoteright -55 KPX A space -37 KPX A v -37 KPX A w -37 KPX A y -55 KPX A yacute -55 KPX A ydieresis -55 KPX Aacute T -55 KPX Aacute Tcaron -55 KPX Aacute Tcommaaccent -55 KPX Aacute V -74 KPX Aacute W -55 KPX Aacute Y -55 KPX Aacute Yacute -55 KPX Aacute Ydieresis -55 KPX Aacute quoteright -55 KPX Aacute space -37 KPX Aacute v -37 KPX Aacute w -37 KPX Aacute y -55 KPX Aacute yacute -55 KPX Aacute ydieresis -55 KPX Abreve T -55 KPX Abreve Tcaron -55 KPX Abreve Tcommaaccent -55 KPX Abreve V -74 KPX Abreve W -55 KPX Abreve Y -55 KPX Abreve Yacute -55 KPX Abreve Ydieresis -55 KPX Abreve quoteright -55 KPX Abreve space -37 KPX Abreve v -37 KPX Abreve w -37 KPX Abreve y -55 KPX Abreve yacute -55 KPX Abreve ydieresis -55 KPX Acircumflex T -55 KPX Acircumflex Tcaron -55 KPX Acircumflex Tcommaaccent -55 KPX Acircumflex V -74 KPX Acircumflex W -55 KPX Acircumflex Y -55 KPX Acircumflex Yacute -55 KPX Acircumflex Ydieresis -55 KPX Acircumflex quoteright -55 KPX Acircumflex space -37 KPX Acircumflex v -37 KPX Acircumflex w -37 KPX Acircumflex y -55 KPX Acircumflex yacute -55 KPX Acircumflex ydieresis -55 KPX Adieresis T -55 KPX Adieresis Tcaron -55 KPX Adieresis Tcommaaccent -55 KPX Adieresis V -74 KPX Adieresis W -55 KPX Adieresis Y -55 KPX Adieresis Yacute -55 KPX Adieresis Ydieresis -55 KPX Adieresis quoteright -55 KPX Adieresis space -37 KPX Adieresis v -37 KPX Adieresis w -37 KPX Adieresis y -55 KPX Adieresis yacute -55 KPX Adieresis ydieresis -55 KPX Agrave T -55 KPX Agrave Tcaron -55 KPX Agrave Tcommaaccent -55 KPX Agrave V -74 KPX Agrave W -55 KPX Agrave Y -55 KPX Agrave Yacute -55 KPX Agrave Ydieresis -55 KPX Agrave quoteright -55 KPX Agrave space -37 KPX Agrave v -37 KPX Agrave w -37 KPX Agrave y -55 KPX Agrave yacute -55 KPX Agrave ydieresis -55 KPX Amacron T -55 KPX Amacron Tcaron -55 KPX Amacron Tcommaaccent -55 KPX Amacron V -74 KPX Amacron W -55 KPX Amacron Y -55 KPX Amacron Yacute -55 KPX Amacron Ydieresis -55 KPX Amacron quoteright -55 KPX Amacron space -37 KPX Amacron v -37 KPX Amacron w -37 KPX Amacron y -55 KPX Amacron yacute -55 KPX Amacron ydieresis -55 KPX Aogonek T -55 KPX Aogonek Tcaron -55 KPX Aogonek Tcommaaccent -55 KPX Aogonek V -74 KPX Aogonek W -55 KPX Aogonek Y -55 KPX Aogonek Yacute -55 KPX Aogonek Ydieresis -55 KPX Aogonek quoteright -55 KPX Aogonek space -37 KPX Aogonek v -37 KPX Aogonek w -37 KPX Aogonek y -55 KPX Aogonek yacute -55 KPX Aogonek ydieresis -55 KPX Aring T -55 KPX Aring Tcaron -55 KPX Aring Tcommaaccent -55 KPX Aring V -74 KPX Aring W -55 KPX Aring Y -55 KPX Aring Yacute -55 KPX Aring Ydieresis -55 KPX Aring quoteright -55 KPX Aring space -37 KPX Aring v -37 KPX Aring w -37 KPX Aring y -55 KPX Aring yacute -55 KPX Aring ydieresis -55 KPX Atilde T -55 KPX Atilde Tcaron -55 KPX Atilde Tcommaaccent -55 KPX Atilde V -74 KPX Atilde W -55 KPX Atilde Y -55 KPX Atilde Yacute -55 KPX Atilde Ydieresis -55 KPX Atilde quoteright -55 KPX Atilde space -37 KPX Atilde v -37 KPX Atilde w -37 KPX Atilde y -55 KPX Atilde yacute -55 KPX Atilde ydieresis -55 KPX F A -111 KPX F Aacute -111 KPX F Abreve -111 KPX F Acircumflex -111 KPX F Adieresis -111 KPX F Agrave -111 KPX F Amacron -111 KPX F Aogonek -111 KPX F Aring -111 KPX F Atilde -111 KPX F comma -111 KPX F period -111 KPX L T -74 KPX L Tcaron -74 KPX L Tcommaaccent -74 KPX L V -74 KPX L W -74 KPX L Y -74 KPX L Yacute -74 KPX L Ydieresis -74 KPX L quoteright -37 KPX L space -18 KPX L y -37 KPX L yacute -37 KPX L ydieresis -37 KPX Lacute T -74 KPX Lacute Tcaron -74 KPX Lacute Tcommaaccent -74 KPX Lacute V -74 KPX Lacute W -74 KPX Lacute Y -74 KPX Lacute Yacute -74 KPX Lacute Ydieresis -74 KPX Lacute quoteright -37 KPX Lacute space -18 KPX Lacute y -37 KPX Lacute yacute -37 KPX Lacute ydieresis -37 KPX Lcaron quoteright -37 KPX Lcaron space -18 KPX Lcaron y -37 KPX Lcaron yacute -37 KPX Lcaron ydieresis -37 KPX Lcommaaccent T -74 KPX Lcommaaccent Tcaron -74 KPX Lcommaaccent Tcommaaccent -74 KPX Lcommaaccent V -74 KPX Lcommaaccent W -74 KPX Lcommaaccent Y -74 KPX Lcommaaccent Yacute -74 KPX Lcommaaccent Ydieresis -74 KPX Lcommaaccent quoteright -37 KPX Lcommaaccent space -18 KPX Lcommaaccent y -37 KPX Lcommaaccent yacute -37 KPX Lcommaaccent ydieresis -37 KPX Lslash T -74 KPX Lslash Tcaron -74 KPX Lslash Tcommaaccent -74 KPX Lslash V -74 KPX Lslash W -74 KPX Lslash Y -74 KPX Lslash Yacute -74 KPX Lslash Ydieresis -74 KPX Lslash quoteright -37 KPX Lslash space -18 KPX Lslash y -37 KPX Lslash yacute -37 KPX Lslash ydieresis -37 KPX P A -129 KPX P Aacute -129 KPX P Abreve -129 KPX P Acircumflex -129 KPX P Adieresis -129 KPX P Agrave -129 KPX P Amacron -129 KPX P Aogonek -129 KPX P Aring -129 KPX P Atilde -129 KPX P comma -129 KPX P period -129 KPX R T -55 KPX R Tcaron -55 KPX R Tcommaaccent -55 KPX R V -74 KPX R W -55 KPX R Y -55 KPX R Yacute -55 KPX R Ydieresis -55 KPX R y -37 KPX R yacute -37 KPX R ydieresis -37 KPX Racute T -55 KPX Racute Tcaron -55 KPX Racute Tcommaaccent -55 KPX Racute V -74 KPX Racute W -55 KPX Racute Y -55 KPX Racute Yacute -55 KPX Racute Ydieresis -55 KPX Racute y -37 KPX Racute yacute -37 KPX Racute ydieresis -37 KPX Rcaron T -55 KPX Rcaron Tcaron -55 KPX Rcaron Tcommaaccent -55 KPX Rcaron V -74 KPX Rcaron W -55 KPX Rcaron Y -55 KPX Rcaron Yacute -55 KPX Rcaron Ydieresis -55 KPX Rcaron y -37 KPX Rcaron yacute -37 KPX Rcaron ydieresis -37 KPX Rcommaaccent T -55 KPX Rcommaaccent Tcaron -55 KPX Rcommaaccent Tcommaaccent -55 KPX Rcommaaccent V -74 KPX Rcommaaccent W -55 KPX Rcommaaccent Y -55 KPX Rcommaaccent Yacute -55 KPX Rcommaaccent Ydieresis -55 KPX Rcommaaccent y -37 KPX Rcommaaccent yacute -37 KPX Rcommaaccent ydieresis -37 KPX T A -92 KPX T Aacute -92 KPX T Abreve -92 KPX T Acircumflex -92 KPX T Adieresis -92 KPX T Agrave -92 KPX T Amacron -92 KPX T Aogonek -92 KPX T Aring -92 KPX T Atilde -92 KPX T O -18 KPX T Oacute -18 KPX T Ocircumflex -18 KPX T Odieresis -18 KPX T Ograve -18 KPX T Ohungarumlaut -18 KPX T Omacron -18 KPX T Oslash -18 KPX T Otilde -18 KPX T a -111 KPX T aacute -111 KPX T abreve -71 KPX T acircumflex -71 KPX T adieresis -71 KPX T agrave -71 KPX T amacron -71 KPX T aogonek -111 KPX T aring -71 KPX T atilde -71 KPX T c -111 KPX T cacute -111 KPX T ccaron -111 KPX T ccedilla -111 KPX T colon -74 KPX T comma -74 KPX T e -111 KPX T eacute -111 KPX T ecaron -111 KPX T ecircumflex -71 KPX T edieresis -71 KPX T edotaccent -111 KPX T egrave -71 KPX T emacron -71 KPX T eogonek -111 KPX T hyphen -55 KPX T i -55 KPX T iacute -55 KPX T iogonek -55 KPX T o -111 KPX T oacute -111 KPX T ocircumflex -71 KPX T odieresis -71 KPX T ograve -71 KPX T ohungarumlaut -111 KPX T omacron -71 KPX T oslash -111 KPX T otilde -71 KPX T period -74 KPX T r -111 KPX T racute -111 KPX T rcaron -111 KPX T rcommaaccent -111 KPX T s -111 KPX T sacute -111 KPX T scaron -71 KPX T scedilla -111 KPX T scommaaccent -111 KPX T semicolon -74 KPX T u -111 KPX T uacute -111 KPX T ucircumflex -111 KPX T udieresis -111 KPX T ugrave -111 KPX T uhungarumlaut -111 KPX T umacron -111 KPX T uogonek -111 KPX T uring -111 KPX T w -92 KPX T y -92 KPX T yacute -92 KPX T ydieresis -92 KPX Tcaron A -92 KPX Tcaron Aacute -92 KPX Tcaron Abreve -92 KPX Tcaron Acircumflex -92 KPX Tcaron Adieresis -92 KPX Tcaron Agrave -92 KPX Tcaron Amacron -92 KPX Tcaron Aogonek -92 KPX Tcaron Aring -92 KPX Tcaron Atilde -92 KPX Tcaron O -18 KPX Tcaron Oacute -18 KPX Tcaron Ocircumflex -18 KPX Tcaron Odieresis -18 KPX Tcaron Ograve -18 KPX Tcaron Ohungarumlaut -18 KPX Tcaron Omacron -18 KPX Tcaron Oslash -18 KPX Tcaron Otilde -18 KPX Tcaron a -111 KPX Tcaron aacute -111 KPX Tcaron abreve -71 KPX Tcaron acircumflex -71 KPX Tcaron adieresis -71 KPX Tcaron agrave -71 KPX Tcaron amacron -71 KPX Tcaron aogonek -111 KPX Tcaron aring -71 KPX Tcaron atilde -71 KPX Tcaron c -111 KPX Tcaron cacute -111 KPX Tcaron ccaron -111 KPX Tcaron ccedilla -111 KPX Tcaron colon -74 KPX Tcaron comma -74 KPX Tcaron e -111 KPX Tcaron eacute -111 KPX Tcaron ecaron -111 KPX Tcaron ecircumflex -71 KPX Tcaron edieresis -71 KPX Tcaron edotaccent -111 KPX Tcaron egrave -71 KPX Tcaron emacron -71 KPX Tcaron eogonek -111 KPX Tcaron hyphen -55 KPX Tcaron i -55 KPX Tcaron iacute -55 KPX Tcaron iogonek -55 KPX Tcaron o -111 KPX Tcaron oacute -111 KPX Tcaron ocircumflex -71 KPX Tcaron odieresis -71 KPX Tcaron ograve -71 KPX Tcaron ohungarumlaut -111 KPX Tcaron omacron -71 KPX Tcaron oslash -111 KPX Tcaron otilde -71 KPX Tcaron period -74 KPX Tcaron r -111 KPX Tcaron racute -111 KPX Tcaron rcaron -111 KPX Tcaron rcommaaccent -111 KPX Tcaron s -111 KPX Tcaron sacute -111 KPX Tcaron scaron -71 KPX Tcaron scedilla -111 KPX Tcaron scommaaccent -111 KPX Tcaron semicolon -74 KPX Tcaron u -111 KPX Tcaron uacute -111 KPX Tcaron ucircumflex -111 KPX Tcaron udieresis -111 KPX Tcaron ugrave -111 KPX Tcaron uhungarumlaut -111 KPX Tcaron umacron -111 KPX Tcaron uogonek -111 KPX Tcaron uring -111 KPX Tcaron w -92 KPX Tcaron y -92 KPX Tcaron yacute -92 KPX Tcaron ydieresis -92 KPX Tcommaaccent A -92 KPX Tcommaaccent Aacute -92 KPX Tcommaaccent Abreve -92 KPX Tcommaaccent Acircumflex -92 KPX Tcommaaccent Adieresis -92 KPX Tcommaaccent Agrave -92 KPX Tcommaaccent Amacron -92 KPX Tcommaaccent Aogonek -92 KPX Tcommaaccent Aring -92 KPX Tcommaaccent Atilde -92 KPX Tcommaaccent O -18 KPX Tcommaaccent Oacute -18 KPX Tcommaaccent Ocircumflex -18 KPX Tcommaaccent Odieresis -18 KPX Tcommaaccent Ograve -18 KPX Tcommaaccent Ohungarumlaut -18 KPX Tcommaaccent Omacron -18 KPX Tcommaaccent Oslash -18 KPX Tcommaaccent Otilde -18 KPX Tcommaaccent a -111 KPX Tcommaaccent aacute -111 KPX Tcommaaccent abreve -71 KPX Tcommaaccent acircumflex -71 KPX Tcommaaccent adieresis -71 KPX Tcommaaccent agrave -71 KPX Tcommaaccent amacron -71 KPX Tcommaaccent aogonek -111 KPX Tcommaaccent aring -71 KPX Tcommaaccent atilde -71 KPX Tcommaaccent c -111 KPX Tcommaaccent cacute -111 KPX Tcommaaccent ccaron -111 KPX Tcommaaccent ccedilla -111 KPX Tcommaaccent colon -74 KPX Tcommaaccent comma -74 KPX Tcommaaccent e -111 KPX Tcommaaccent eacute -111 KPX Tcommaaccent ecaron -111 KPX Tcommaaccent ecircumflex -71 KPX Tcommaaccent edieresis -71 KPX Tcommaaccent edotaccent -111 KPX Tcommaaccent egrave -71 KPX Tcommaaccent emacron -71 KPX Tcommaaccent eogonek -111 KPX Tcommaaccent hyphen -55 KPX Tcommaaccent i -55 KPX Tcommaaccent iacute -55 KPX Tcommaaccent iogonek -55 KPX Tcommaaccent o -111 KPX Tcommaaccent oacute -111 KPX Tcommaaccent ocircumflex -111 KPX Tcommaaccent odieresis -111 KPX Tcommaaccent ograve -111 KPX Tcommaaccent ohungarumlaut -111 KPX Tcommaaccent omacron -111 KPX Tcommaaccent oslash -111 KPX Tcommaaccent otilde -111 KPX Tcommaaccent period -74 KPX Tcommaaccent r -111 KPX Tcommaaccent racute -111 KPX Tcommaaccent rcaron -111 KPX Tcommaaccent rcommaaccent -111 KPX Tcommaaccent s -111 KPX Tcommaaccent sacute -111 KPX Tcommaaccent scaron -71 KPX Tcommaaccent scedilla -111 KPX Tcommaaccent scommaaccent -111 KPX Tcommaaccent semicolon -74 KPX Tcommaaccent u -111 KPX Tcommaaccent uacute -111 KPX Tcommaaccent ucircumflex -111 KPX Tcommaaccent udieresis -111 KPX Tcommaaccent ugrave -111 KPX Tcommaaccent uhungarumlaut -111 KPX Tcommaaccent umacron -111 KPX Tcommaaccent uogonek -111 KPX Tcommaaccent uring -111 KPX Tcommaaccent w -92 KPX Tcommaaccent y -92 KPX Tcommaaccent yacute -92 KPX Tcommaaccent ydieresis -92 KPX V A -210 KPX V Aacute -210 KPX V Abreve -210 KPX V Acircumflex -210 KPX V Adieresis -210 KPX V Agrave -210 KPX V Amacron -210 KPX V Aogonek -210 KPX V Aring -210 KPX V Atilde -210 KPX V a -74 KPX V aacute -74 KPX V abreve -74 KPX V acircumflex -74 KPX V adieresis -74 KPX V agrave -74 KPX V amacron -74 KPX V aogonek -74 KPX V aring -74 KPX V atilde -74 KPX V colon -37 KPX V comma -129 KPX V e -92 KPX V eacute -92 KPX V ecaron -92 KPX V ecircumflex -52 KPX V edieresis -52 KPX V edotaccent -92 KPX V egrave -52 KPX V emacron -52 KPX V eogonek -92 KPX V hyphen -55 KPX V i -74 KPX V iacute -74 KPX V icircumflex -34 KPX V idieresis -34 KPX V igrave -34 KPX V imacron -34 KPX V iogonek -74 KPX V o -74 KPX V oacute -74 KPX V ocircumflex -74 KPX V odieresis -74 KPX V ograve -74 KPX V ohungarumlaut -74 KPX V omacron -74 KPX V oslash -74 KPX V otilde -74 KPX V period -129 KPX V r -92 KPX V racute -92 KPX V rcaron -92 KPX V rcommaaccent -92 KPX V semicolon -37 KPX V u -74 KPX V uacute -74 KPX V ucircumflex -74 KPX V udieresis -74 KPX V ugrave -74 KPX V uhungarumlaut -74 KPX V umacron -74 KPX V uogonek -74 KPX V uring -74 KPX V y -74 KPX V yacute -74 KPX V ydieresis -74 KPX W A -92 KPX W Aacute -92 KPX W Abreve -92 KPX W Acircumflex -92 KPX W Adieresis -92 KPX W Agrave -92 KPX W Amacron -92 KPX W Aogonek -92 KPX W Aring -92 KPX W Atilde -92 KPX W a -20 KPX W aacute -20 KPX W abreve -20 KPX W acircumflex -20 KPX W adieresis -20 KPX W agrave -20 KPX W amacron -20 KPX W aogonek -20 KPX W aring -20 KPX W atilde -20 KPX W colon -18 KPX W comma -55 KPX W e -20 KPX W eacute -20 KPX W ecaron -20 KPX W ecircumflex -20 KPX W edieresis -20 KPX W edotaccent -20 KPX W egrave -20 KPX W emacron -20 KPX W eogonek -20 KPX W hyphen -18 KPX W i -20 KPX W iacute -20 KPX W iogonek -20 KPX W o -20 KPX W oacute -20 KPX W ocircumflex -20 KPX W odieresis -20 KPX W ograve -20 KPX W ohungarumlaut -20 KPX W omacron -20 KPX W oslash -20 KPX W otilde -20 KPX W period -55 KPX W r -20 KPX W racute -20 KPX W rcaron -20 KPX W rcommaaccent -20 KPX W semicolon -18 KPX W u -20 KPX W uacute -20 KPX W ucircumflex -20 KPX W udieresis -20 KPX W ugrave -20 KPX W uhungarumlaut -20 KPX W umacron -20 KPX W uogonek -20 KPX W uring -20 KPX W y -20 KPX W yacute -20 KPX W ydieresis -20 KPX Y A -92 KPX Y Aacute -92 KPX Y Abreve -92 KPX Y Acircumflex -92 KPX Y Adieresis -92 KPX Y Agrave -92 KPX Y Amacron -92 KPX Y Aogonek -92 KPX Y Aring -92 KPX Y Atilde -92 KPX Y a -92 KPX Y aacute -92 KPX Y abreve -92 KPX Y acircumflex -92 KPX Y adieresis -92 KPX Y agrave -92 KPX Y amacron -92 KPX Y aogonek -92 KPX Y aring -92 KPX Y atilde -92 KPX Y colon -74 KPX Y comma -92 KPX Y e -111 KPX Y eacute -111 KPX Y ecaron -111 KPX Y ecircumflex -71 KPX Y edieresis -71 KPX Y edotaccent -111 KPX Y egrave -71 KPX Y emacron -71 KPX Y eogonek -111 KPX Y hyphen -74 KPX Y i -55 KPX Y iacute -55 KPX Y iogonek -55 KPX Y o -111 KPX Y oacute -111 KPX Y ocircumflex -111 KPX Y odieresis -111 KPX Y ograve -111 KPX Y ohungarumlaut -111 KPX Y omacron -111 KPX Y oslash -111 KPX Y otilde -111 KPX Y p -74 KPX Y period -92 KPX Y q -92 KPX Y semicolon -74 KPX Y u -92 KPX Y uacute -92 KPX Y ucircumflex -92 KPX Y udieresis -92 KPX Y ugrave -92 KPX Y uhungarumlaut -92 KPX Y umacron -92 KPX Y uogonek -92 KPX Y uring -92 KPX Y v -74 KPX Yacute A -92 KPX Yacute Aacute -92 KPX Yacute Abreve -92 KPX Yacute Acircumflex -92 KPX Yacute Adieresis -92 KPX Yacute Agrave -92 KPX Yacute Amacron -92 KPX Yacute Aogonek -92 KPX Yacute Aring -92 KPX Yacute Atilde -92 KPX Yacute a -92 KPX Yacute aacute -92 KPX Yacute abreve -92 KPX Yacute acircumflex -92 KPX Yacute adieresis -92 KPX Yacute agrave -92 KPX Yacute amacron -92 KPX Yacute aogonek -92 KPX Yacute aring -92 KPX Yacute atilde -92 KPX Yacute colon -74 KPX Yacute comma -92 KPX Yacute e -111 KPX Yacute eacute -111 KPX Yacute ecaron -111 KPX Yacute ecircumflex -71 KPX Yacute edieresis -71 KPX Yacute edotaccent -111 KPX Yacute egrave -71 KPX Yacute emacron -71 KPX Yacute eogonek -111 KPX Yacute hyphen -74 KPX Yacute i -55 KPX Yacute iacute -55 KPX Yacute iogonek -55 KPX Yacute o -111 KPX Yacute oacute -111 KPX Yacute ocircumflex -111 KPX Yacute odieresis -111 KPX Yacute ograve -111 KPX Yacute ohungarumlaut -111 KPX Yacute omacron -111 KPX Yacute oslash -111 KPX Yacute otilde -111 KPX Yacute p -74 KPX Yacute period -92 KPX Yacute q -92 KPX Yacute semicolon -74 KPX Yacute u -92 KPX Yacute uacute -92 KPX Yacute ucircumflex -92 KPX Yacute udieresis -92 KPX Yacute ugrave -92 KPX Yacute uhungarumlaut -92 KPX Yacute umacron -92 KPX Yacute uogonek -92 KPX Yacute uring -92 KPX Yacute v -74 KPX Ydieresis A -92 KPX Ydieresis Aacute -92 KPX Ydieresis Abreve -92 KPX Ydieresis Acircumflex -92 KPX Ydieresis Adieresis -92 KPX Ydieresis Agrave -92 KPX Ydieresis Amacron -92 KPX Ydieresis Aogonek -92 KPX Ydieresis Aring -92 KPX Ydieresis Atilde -92 KPX Ydieresis a -92 KPX Ydieresis aacute -92 KPX Ydieresis abreve -92 KPX Ydieresis acircumflex -92 KPX Ydieresis adieresis -92 KPX Ydieresis agrave -92 KPX Ydieresis amacron -92 KPX Ydieresis aogonek -92 KPX Ydieresis aring -92 KPX Ydieresis atilde -92 KPX Ydieresis colon -74 KPX Ydieresis comma -92 KPX Ydieresis e -111 KPX Ydieresis eacute -111 KPX Ydieresis ecaron -111 KPX Ydieresis ecircumflex -71 KPX Ydieresis edieresis -71 KPX Ydieresis edotaccent -111 KPX Ydieresis egrave -71 KPX Ydieresis emacron -71 KPX Ydieresis eogonek -111 KPX Ydieresis hyphen -74 KPX Ydieresis i -55 KPX Ydieresis iacute -55 KPX Ydieresis iogonek -55 KPX Ydieresis o -111 KPX Ydieresis oacute -111 KPX Ydieresis ocircumflex -111 KPX Ydieresis odieresis -111 KPX Ydieresis ograve -111 KPX Ydieresis ohungarumlaut -111 KPX Ydieresis omacron -111 KPX Ydieresis oslash -111 KPX Ydieresis otilde -111 KPX Ydieresis p -74 KPX Ydieresis period -92 KPX Ydieresis q -92 KPX Ydieresis semicolon -74 KPX Ydieresis u -92 KPX Ydieresis uacute -92 KPX Ydieresis ucircumflex -92 KPX Ydieresis udieresis -92 KPX Ydieresis ugrave -92 KPX Ydieresis uhungarumlaut -92 KPX Ydieresis umacron -92 KPX Ydieresis uogonek -92 KPX Ydieresis uring -92 KPX Ydieresis v -74 KPX f quoteright 55 KPX one one -55 KPX quoteleft quoteleft -74 KPX quoteright quoteright -74 KPX quoteright s -55 KPX quoteright sacute -55 KPX quoteright scaron -55 KPX quoteright scedilla -55 KPX quoteright scommaaccent -55 KPX quoteright space -55 KPX quoteright t -37 KPX quoteright tcommaaccent -37 KPX r c -18 KPX r cacute -18 KPX r ccaron -18 KPX r ccedilla -18 KPX r comma -74 KPX r e -18 KPX r eacute -18 KPX r ecaron -18 KPX r ecircumflex -18 KPX r edieresis -18 KPX r edotaccent -18 KPX r egrave -18 KPX r emacron -18 KPX r eogonek -18 KPX r g -18 KPX r gbreve -18 KPX r gcommaaccent -18 KPX r h -18 KPX r o -18 KPX r oacute -18 KPX r ocircumflex -18 KPX r odieresis -18 KPX r ograve -18 KPX r ohungarumlaut -18 KPX r omacron -18 KPX r oslash -18 KPX r otilde -18 KPX r period -74 KPX r q -18 KPX r quoteright 37 KPX racute c -18 KPX racute cacute -18 KPX racute ccaron -18 KPX racute ccedilla -18 KPX racute comma -74 KPX racute e -18 KPX racute eacute -18 KPX racute ecaron -18 KPX racute ecircumflex -18 KPX racute edieresis -18 KPX racute edotaccent -18 KPX racute egrave -18 KPX racute emacron -18 KPX racute eogonek -18 KPX racute g -18 KPX racute gbreve -18 KPX racute gcommaaccent -18 KPX racute h -18 KPX racute o -18 KPX racute oacute -18 KPX racute ocircumflex -18 KPX racute odieresis -18 KPX racute ograve -18 KPX racute ohungarumlaut -18 KPX racute omacron -18 KPX racute oslash -18 KPX racute otilde -18 KPX racute period -74 KPX racute q -18 KPX racute quoteright 37 KPX rcaron c -18 KPX rcaron cacute -18 KPX rcaron ccaron -18 KPX rcaron ccedilla -18 KPX rcaron comma -74 KPX rcaron e -18 KPX rcaron eacute -18 KPX rcaron ecaron -18 KPX rcaron ecircumflex -18 KPX rcaron edieresis -18 KPX rcaron edotaccent -18 KPX rcaron egrave -18 KPX rcaron emacron -18 KPX rcaron eogonek -18 KPX rcaron g -18 KPX rcaron gbreve -18 KPX rcaron gcommaaccent -18 KPX rcaron h -18 KPX rcaron o -18 KPX rcaron oacute -18 KPX rcaron ocircumflex -18 KPX rcaron odieresis -18 KPX rcaron ograve -18 KPX rcaron ohungarumlaut -18 KPX rcaron omacron -18 KPX rcaron oslash -18 KPX rcaron otilde -18 KPX rcaron period -74 KPX rcaron q -18 KPX rcaron quoteright 37 KPX rcommaaccent c -18 KPX rcommaaccent cacute -18 KPX rcommaaccent ccaron -18 KPX rcommaaccent ccedilla -18 KPX rcommaaccent comma -74 KPX rcommaaccent e -18 KPX rcommaaccent eacute -18 KPX rcommaaccent ecaron -18 KPX rcommaaccent ecircumflex -18 KPX rcommaaccent edieresis -18 KPX rcommaaccent edotaccent -18 KPX rcommaaccent egrave -18 KPX rcommaaccent emacron -18 KPX rcommaaccent eogonek -18 KPX rcommaaccent g -18 KPX rcommaaccent gbreve -18 KPX rcommaaccent gcommaaccent -18 KPX rcommaaccent h -18 KPX rcommaaccent o -18 KPX rcommaaccent oacute -18 KPX rcommaaccent ocircumflex -18 KPX rcommaaccent odieresis -18 KPX rcommaaccent ograve -18 KPX rcommaaccent ohungarumlaut -18 KPX rcommaaccent omacron -18 KPX rcommaaccent oslash -18 KPX rcommaaccent otilde -18 KPX rcommaaccent period -74 KPX rcommaaccent q -18 KPX rcommaaccent quoteright 37 KPX v comma -55 KPX v period -55 KPX w comma -55 KPX w period -55 KPX y comma -37 KPX y period -37 KPX yacute comma -37 KPX yacute period -37 KPX ydieresis comma -37 KPX ydieresis period -37 EndKernPairs EndKernData EndFontMetrics gle-graphics-4.2.4c/src/fonts/Adobe-Core35_AFMs-314/Helvetica-NarrowBoldOblique.afm0000664000000000000000000020722311405446017026065 0ustar rootrootStartFontMetrics 4.1 Comment Copyright (c) 1985, 1987, 1989, 1990, 1997 Adobe Systems Incorporated. All Rights Reserved. Comment Creation Date: Fri May 2 16:58:06 1997 Comment UniqueID 43182 Comment VMusage 14482 68586 FontName Helvetica-Narrow-BoldOblique FullName Helvetica Narrow Bold Oblique FamilyName Helvetica Weight Bold ItalicAngle -12 IsFixedPitch false FontBBox -143 -228 913 962 UnderlinePosition -100 UnderlineThickness 50 Version 002.000 Notice Copyright (c) 1985, 1987, 1989, 1990, 1997 Adobe Systems Incorporated. All Rights Reserved.Helvetica is a trademark of Linotype-Hell AG and/or its subsidiaries. EncodingScheme AdobeStandardEncoding CapHeight 718 XHeight 532 Ascender 718 Descender -207 StdHW 118 StdVW 140 StartCharMetrics 314 C 32 ; WX 228 ; N space ; B 0 0 0 0 ; C 33 ; WX 273 ; N exclam ; B 77 0 325 718 ; C 34 ; WX 389 ; N quotedbl ; B 158 447 433 718 ; C 35 ; WX 456 ; N numbersign ; B 49 0 528 698 ; C 36 ; WX 456 ; N dollar ; B 55 -115 510 775 ; C 37 ; WX 729 ; N percent ; B 112 -19 739 710 ; C 38 ; WX 592 ; N ampersand ; B 73 -19 600 718 ; C 39 ; WX 228 ; N quoteright ; B 137 445 297 718 ; C 40 ; WX 273 ; N parenleft ; B 62 -208 385 734 ; C 41 ; WX 273 ; N parenright ; B -21 -208 302 734 ; C 42 ; WX 319 ; N asterisk ; B 120 387 394 718 ; C 43 ; WX 479 ; N plus ; B 67 0 500 506 ; C 44 ; WX 228 ; N comma ; B 23 -168 201 146 ; C 45 ; WX 273 ; N hyphen ; B 60 215 311 345 ; C 46 ; WX 228 ; N period ; B 52 0 201 146 ; C 47 ; WX 228 ; N slash ; B -30 -19 383 737 ; C 48 ; WX 456 ; N zero ; B 71 -19 506 710 ; C 49 ; WX 456 ; N one ; B 142 0 434 710 ; C 50 ; WX 456 ; N two ; B 21 0 508 710 ; C 51 ; WX 456 ; N three ; B 54 -19 499 710 ; C 52 ; WX 456 ; N four ; B 50 0 490 710 ; C 53 ; WX 456 ; N five ; B 53 -19 522 698 ; C 54 ; WX 456 ; N six ; B 70 -19 507 710 ; C 55 ; WX 456 ; N seven ; B 103 0 555 698 ; C 56 ; WX 456 ; N eight ; B 57 -19 505 710 ; C 57 ; WX 456 ; N nine ; B 64 -19 504 710 ; C 58 ; WX 273 ; N colon ; B 75 0 288 512 ; C 59 ; WX 273 ; N semicolon ; B 46 -168 288 512 ; C 60 ; WX 479 ; N less ; B 67 -8 537 514 ; C 61 ; WX 479 ; N equal ; B 48 87 519 419 ; C 62 ; WX 479 ; N greater ; B 30 -8 500 514 ; C 63 ; WX 501 ; N question ; B 135 0 550 727 ; C 64 ; WX 800 ; N at ; B 152 -19 782 737 ; C 65 ; WX 592 ; N A ; B 16 0 576 718 ; C 66 ; WX 592 ; N B ; B 62 0 626 718 ; C 67 ; WX 592 ; N C ; B 88 -19 647 737 ; C 68 ; WX 592 ; N D ; B 62 0 637 718 ; C 69 ; WX 547 ; N E ; B 62 0 620 718 ; C 70 ; WX 501 ; N F ; B 62 0 606 718 ; C 71 ; WX 638 ; N G ; B 89 -19 670 737 ; C 72 ; WX 592 ; N H ; B 58 0 659 718 ; C 73 ; WX 228 ; N I ; B 52 0 301 718 ; C 74 ; WX 456 ; N J ; B 49 -18 522 718 ; C 75 ; WX 592 ; N K ; B 71 0 703 718 ; C 76 ; WX 501 ; N L ; B 62 0 501 718 ; C 77 ; WX 683 ; N M ; B 57 0 752 718 ; C 78 ; WX 592 ; N N ; B 57 0 661 718 ; C 79 ; WX 638 ; N O ; B 88 -19 675 737 ; C 80 ; WX 547 ; N P ; B 62 0 605 718 ; C 81 ; WX 638 ; N Q ; B 88 -52 675 737 ; C 82 ; WX 592 ; N R ; B 62 0 638 718 ; C 83 ; WX 547 ; N S ; B 66 -19 588 737 ; C 84 ; WX 501 ; N T ; B 114 0 616 718 ; C 85 ; WX 592 ; N U ; B 96 -19 659 718 ; C 86 ; WX 547 ; N V ; B 141 0 657 718 ; C 87 ; WX 774 ; N W ; B 138 0 887 718 ; C 88 ; WX 547 ; N X ; B 11 0 648 718 ; C 89 ; WX 547 ; N Y ; B 137 0 661 718 ; C 90 ; WX 501 ; N Z ; B 21 0 604 718 ; C 91 ; WX 273 ; N bracketleft ; B 17 -196 379 722 ; C 92 ; WX 228 ; N backslash ; B 101 -19 252 737 ; C 93 ; WX 273 ; N bracketright ; B -14 -196 347 722 ; C 94 ; WX 479 ; N asciicircum ; B 107 323 484 698 ; C 95 ; WX 456 ; N underscore ; B -22 -125 443 -75 ; C 96 ; WX 228 ; N quoteleft ; B 136 454 296 727 ; C 97 ; WX 456 ; N a ; B 45 -14 478 546 ; C 98 ; WX 501 ; N b ; B 50 -14 529 718 ; C 99 ; WX 456 ; N c ; B 65 -14 491 546 ; C 100 ; WX 501 ; N d ; B 67 -14 577 718 ; C 101 ; WX 456 ; N e ; B 58 -14 486 546 ; C 102 ; WX 273 ; N f ; B 71 0 385 727 ; L i fi ; L l fl ; C 103 ; WX 501 ; N g ; B 31 -217 546 546 ; C 104 ; WX 501 ; N h ; B 53 0 516 718 ; C 105 ; WX 228 ; N i ; B 57 0 298 725 ; C 106 ; WX 228 ; N j ; B -35 -214 298 725 ; C 107 ; WX 456 ; N k ; B 57 0 549 718 ; C 108 ; WX 228 ; N l ; B 57 0 297 718 ; C 109 ; WX 729 ; N m ; B 52 0 746 546 ; C 110 ; WX 501 ; N n ; B 53 0 516 546 ; C 111 ; WX 501 ; N o ; B 67 -14 527 546 ; C 112 ; WX 501 ; N p ; B 15 -207 529 546 ; C 113 ; WX 501 ; N q ; B 66 -207 545 546 ; C 114 ; WX 319 ; N r ; B 52 0 401 546 ; C 115 ; WX 456 ; N s ; B 52 -14 479 546 ; C 116 ; WX 273 ; N t ; B 82 -6 346 676 ; C 117 ; WX 501 ; N u ; B 80 -14 540 532 ; C 118 ; WX 456 ; N v ; B 103 0 538 532 ; C 119 ; WX 638 ; N w ; B 101 0 723 532 ; C 120 ; WX 456 ; N x ; B 12 0 531 532 ; C 121 ; WX 456 ; N y ; B 34 -214 535 532 ; C 122 ; WX 410 ; N z ; B 16 0 478 532 ; C 123 ; WX 319 ; N braceleft ; B 77 -196 425 722 ; C 124 ; WX 230 ; N bar ; B 30 -225 296 775 ; C 125 ; WX 319 ; N braceright ; B -14 -196 333 722 ; C 126 ; WX 479 ; N asciitilde ; B 94 163 473 343 ; C 161 ; WX 273 ; N exclamdown ; B 41 -186 290 532 ; C 162 ; WX 456 ; N cent ; B 65 -118 491 628 ; C 163 ; WX 456 ; N sterling ; B 41 -16 520 718 ; C 164 ; WX 137 ; N fraction ; B -143 -19 399 710 ; C 165 ; WX 456 ; N yen ; B 49 0 585 698 ; C 166 ; WX 456 ; N florin ; B -41 -210 548 737 ; C 167 ; WX 456 ; N section ; B 50 -184 491 727 ; C 168 ; WX 456 ; N currency ; B 22 76 558 636 ; C 169 ; WX 195 ; N quotesingle ; B 135 447 263 718 ; C 170 ; WX 410 ; N quotedblleft ; B 132 454 482 727 ; C 171 ; WX 456 ; N guillemotleft ; B 111 76 468 484 ; C 172 ; WX 273 ; N guilsinglleft ; B 106 76 289 484 ; C 173 ; WX 273 ; N guilsinglright ; B 81 76 264 484 ; C 174 ; WX 501 ; N fi ; B 71 0 571 727 ; C 175 ; WX 501 ; N fl ; B 71 0 570 727 ; C 177 ; WX 456 ; N endash ; B 40 227 514 333 ; C 178 ; WX 456 ; N dagger ; B 97 -171 513 718 ; C 179 ; WX 456 ; N daggerdbl ; B 38 -171 515 718 ; C 180 ; WX 228 ; N periodcentered ; B 90 172 226 334 ; C 182 ; WX 456 ; N paragraph ; B 80 -191 564 700 ; C 183 ; WX 287 ; N bullet ; B 68 194 345 524 ; C 184 ; WX 228 ; N quotesinglbase ; B 34 -146 194 127 ; C 185 ; WX 410 ; N quotedblbase ; B 29 -146 380 127 ; C 186 ; WX 410 ; N quotedblright ; B 133 445 483 718 ; C 187 ; WX 456 ; N guillemotright ; B 85 76 443 484 ; C 188 ; WX 820 ; N ellipsis ; B 75 0 770 146 ; C 189 ; WX 820 ; N perthousand ; B 62 -19 851 710 ; C 191 ; WX 501 ; N questiondown ; B 44 -195 459 532 ; C 193 ; WX 273 ; N grave ; B 112 604 290 750 ; C 194 ; WX 273 ; N acute ; B 194 604 423 750 ; C 195 ; WX 273 ; N circumflex ; B 97 604 387 750 ; C 196 ; WX 273 ; N tilde ; B 92 610 415 737 ; C 197 ; WX 273 ; N macron ; B 100 604 396 678 ; C 198 ; WX 273 ; N breve ; B 128 604 405 750 ; C 199 ; WX 273 ; N dotaccent ; B 192 614 316 729 ; C 200 ; WX 273 ; N dieresis ; B 112 614 395 729 ; C 202 ; WX 273 ; N ring ; B 164 568 344 776 ; C 203 ; WX 273 ; N cedilla ; B -30 -228 180 0 ; C 205 ; WX 273 ; N hungarumlaut ; B 113 604 529 750 ; C 206 ; WX 273 ; N ogonek ; B 33 -228 216 0 ; C 207 ; WX 273 ; N caron ; B 123 604 412 750 ; C 208 ; WX 820 ; N emdash ; B 40 227 878 333 ; C 225 ; WX 820 ; N AE ; B 4 0 902 718 ; C 227 ; WX 303 ; N ordfeminine ; B 102 401 381 737 ; C 232 ; WX 501 ; N Lslash ; B 28 0 501 718 ; C 233 ; WX 638 ; N Oslash ; B 29 -27 733 745 ; C 234 ; WX 820 ; N OE ; B 81 -19 913 737 ; C 235 ; WX 299 ; N ordmasculine ; B 101 401 398 737 ; C 241 ; WX 729 ; N ae ; B 46 -14 757 546 ; C 245 ; WX 228 ; N dotlessi ; B 57 0 264 532 ; C 248 ; WX 228 ; N lslash ; B 33 0 334 718 ; C 249 ; WX 501 ; N oslash ; B 18 -29 575 560 ; C 250 ; WX 774 ; N oe ; B 67 -14 801 546 ; C 251 ; WX 501 ; N germandbls ; B 57 -14 539 731 ; C -1 ; WX 228 ; N Idieresis ; B 52 0 405 915 ; C -1 ; WX 456 ; N eacute ; B 58 -14 514 750 ; C -1 ; WX 456 ; N abreve ; B 45 -14 497 750 ; C -1 ; WX 501 ; N uhungarumlaut ; B 80 -14 643 750 ; C -1 ; WX 456 ; N ecaron ; B 58 -14 504 750 ; C -1 ; WX 547 ; N Ydieresis ; B 137 0 661 915 ; C -1 ; WX 479 ; N divide ; B 67 -42 500 548 ; C -1 ; WX 547 ; N Yacute ; B 137 0 661 936 ; C -1 ; WX 592 ; N Acircumflex ; B 16 0 579 936 ; C -1 ; WX 456 ; N aacute ; B 45 -14 514 750 ; C -1 ; WX 592 ; N Ucircumflex ; B 96 -19 659 936 ; C -1 ; WX 456 ; N yacute ; B 34 -214 535 750 ; C -1 ; WX 456 ; N scommaaccent ; B 52 -228 479 546 ; C -1 ; WX 456 ; N ecircumflex ; B 58 -14 486 750 ; C -1 ; WX 592 ; N Uring ; B 96 -19 659 962 ; C -1 ; WX 592 ; N Udieresis ; B 96 -19 659 915 ; C -1 ; WX 456 ; N aogonek ; B 45 -224 478 546 ; C -1 ; WX 592 ; N Uacute ; B 96 -19 659 936 ; C -1 ; WX 501 ; N uogonek ; B 80 -228 540 532 ; C -1 ; WX 547 ; N Edieresis ; B 62 0 620 915 ; C -1 ; WX 592 ; N Dcroat ; B 51 0 637 718 ; C -1 ; WX 205 ; N commaaccent ; B 13 -228 154 -50 ; C -1 ; WX 604 ; N copyright ; B 46 -19 685 737 ; C -1 ; WX 547 ; N Emacron ; B 62 0 620 864 ; C -1 ; WX 456 ; N ccaron ; B 65 -14 504 750 ; C -1 ; WX 456 ; N aring ; B 45 -14 478 776 ; C -1 ; WX 592 ; N Ncommaaccent ; B 57 -228 661 718 ; C -1 ; WX 228 ; N lacute ; B 57 0 433 936 ; C -1 ; WX 456 ; N agrave ; B 45 -14 478 750 ; C -1 ; WX 501 ; N Tcommaaccent ; B 114 -228 616 718 ; C -1 ; WX 592 ; N Cacute ; B 88 -19 647 936 ; C -1 ; WX 456 ; N atilde ; B 45 -14 507 737 ; C -1 ; WX 547 ; N Edotaccent ; B 62 0 620 915 ; C -1 ; WX 456 ; N scaron ; B 52 -14 504 750 ; C -1 ; WX 456 ; N scedilla ; B 52 -228 479 546 ; C -1 ; WX 228 ; N iacute ; B 57 0 401 750 ; C -1 ; WX 405 ; N lozenge ; B 74 0 463 745 ; C -1 ; WX 592 ; N Rcaron ; B 62 0 638 936 ; C -1 ; WX 638 ; N Gcommaaccent ; B 89 -228 670 737 ; C -1 ; WX 501 ; N ucircumflex ; B 80 -14 540 750 ; C -1 ; WX 456 ; N acircumflex ; B 45 -14 478 750 ; C -1 ; WX 592 ; N Amacron ; B 16 0 588 864 ; C -1 ; WX 319 ; N rcaron ; B 52 0 435 750 ; C -1 ; WX 456 ; N ccedilla ; B 65 -228 491 546 ; C -1 ; WX 501 ; N Zdotaccent ; B 21 0 604 915 ; C -1 ; WX 547 ; N Thorn ; B 62 0 588 718 ; C -1 ; WX 638 ; N Omacron ; B 88 -19 675 864 ; C -1 ; WX 592 ; N Racute ; B 62 0 638 936 ; C -1 ; WX 547 ; N Sacute ; B 66 -19 592 936 ; C -1 ; WX 609 ; N dcaron ; B 67 -14 740 718 ; C -1 ; WX 592 ; N Umacron ; B 96 -19 659 864 ; C -1 ; WX 501 ; N uring ; B 80 -14 540 776 ; C -1 ; WX 273 ; N threesuperior ; B 75 271 361 710 ; C -1 ; WX 638 ; N Ograve ; B 88 -19 675 936 ; C -1 ; WX 592 ; N Agrave ; B 16 0 576 936 ; C -1 ; WX 592 ; N Abreve ; B 16 0 598 936 ; C -1 ; WX 479 ; N multiply ; B 47 1 520 505 ; C -1 ; WX 501 ; N uacute ; B 80 -14 540 750 ; C -1 ; WX 501 ; N Tcaron ; B 114 0 616 936 ; C -1 ; WX 405 ; N partialdiff ; B 35 -21 480 750 ; C -1 ; WX 456 ; N ydieresis ; B 34 -214 535 729 ; C -1 ; WX 592 ; N Nacute ; B 57 0 661 936 ; C -1 ; WX 228 ; N icircumflex ; B 57 0 364 750 ; C -1 ; WX 547 ; N Ecircumflex ; B 62 0 620 936 ; C -1 ; WX 456 ; N adieresis ; B 45 -14 487 729 ; C -1 ; WX 456 ; N edieresis ; B 58 -14 487 729 ; C -1 ; WX 456 ; N cacute ; B 65 -14 514 750 ; C -1 ; WX 501 ; N nacute ; B 53 0 537 750 ; C -1 ; WX 501 ; N umacron ; B 80 -14 540 678 ; C -1 ; WX 592 ; N Ncaron ; B 57 0 661 936 ; C -1 ; WX 228 ; N Iacute ; B 52 0 433 936 ; C -1 ; WX 479 ; N plusminus ; B 33 0 512 506 ; C -1 ; WX 230 ; N brokenbar ; B 43 -150 283 700 ; C -1 ; WX 604 ; N registered ; B 45 -19 684 737 ; C -1 ; WX 638 ; N Gbreve ; B 89 -19 670 936 ; C -1 ; WX 228 ; N Idotaccent ; B 52 0 326 915 ; C -1 ; WX 492 ; N summation ; B 11 -10 549 706 ; C -1 ; WX 547 ; N Egrave ; B 62 0 620 936 ; C -1 ; WX 319 ; N racute ; B 52 0 446 750 ; C -1 ; WX 501 ; N omacron ; B 67 -14 527 678 ; C -1 ; WX 501 ; N Zacute ; B 21 0 604 936 ; C -1 ; WX 501 ; N Zcaron ; B 21 0 604 936 ; C -1 ; WX 450 ; N greaterequal ; B 21 0 516 704 ; C -1 ; WX 592 ; N Eth ; B 51 0 637 718 ; C -1 ; WX 592 ; N Ccedilla ; B 88 -228 647 737 ; C -1 ; WX 228 ; N lcommaaccent ; B 24 -228 297 718 ; C -1 ; WX 319 ; N tcaron ; B 82 -6 498 878 ; C -1 ; WX 456 ; N eogonek ; B 58 -228 486 546 ; C -1 ; WX 592 ; N Uogonek ; B 96 -228 659 718 ; C -1 ; WX 592 ; N Aacute ; B 16 0 615 936 ; C -1 ; WX 592 ; N Adieresis ; B 16 0 588 915 ; C -1 ; WX 456 ; N egrave ; B 58 -14 486 750 ; C -1 ; WX 410 ; N zacute ; B 16 0 492 750 ; C -1 ; WX 228 ; N iogonek ; B -11 -224 298 725 ; C -1 ; WX 638 ; N Oacute ; B 88 -19 675 936 ; C -1 ; WX 501 ; N oacute ; B 67 -14 537 750 ; C -1 ; WX 456 ; N amacron ; B 45 -14 488 678 ; C -1 ; WX 456 ; N sacute ; B 52 -14 514 750 ; C -1 ; WX 228 ; N idieresis ; B 57 0 373 729 ; C -1 ; WX 638 ; N Ocircumflex ; B 88 -19 675 936 ; C -1 ; WX 592 ; N Ugrave ; B 96 -19 659 936 ; C -1 ; WX 502 ; N Delta ; B 5 0 499 688 ; C -1 ; WX 501 ; N thorn ; B 15 -208 529 718 ; C -1 ; WX 273 ; N twosuperior ; B 57 283 368 710 ; C -1 ; WX 638 ; N Odieresis ; B 88 -19 675 915 ; C -1 ; WX 501 ; N mu ; B 18 -207 540 532 ; C -1 ; WX 228 ; N igrave ; B 57 0 268 750 ; C -1 ; WX 501 ; N ohungarumlaut ; B 67 -14 643 750 ; C -1 ; WX 547 ; N Eogonek ; B 62 -224 620 718 ; C -1 ; WX 501 ; N dcroat ; B 67 -14 647 718 ; C -1 ; WX 684 ; N threequarters ; B 82 -19 688 710 ; C -1 ; WX 547 ; N Scedilla ; B 66 -228 588 737 ; C -1 ; WX 328 ; N lcaron ; B 57 0 460 718 ; C -1 ; WX 592 ; N Kcommaaccent ; B 71 -228 703 718 ; C -1 ; WX 501 ; N Lacute ; B 62 0 501 936 ; C -1 ; WX 820 ; N trademark ; B 146 306 909 718 ; C -1 ; WX 456 ; N edotaccent ; B 58 -14 486 729 ; C -1 ; WX 228 ; N Igrave ; B 52 0 301 936 ; C -1 ; WX 228 ; N Imacron ; B 52 0 406 864 ; C -1 ; WX 501 ; N Lcaron ; B 62 0 527 718 ; C -1 ; WX 684 ; N onehalf ; B 108 -19 704 710 ; C -1 ; WX 450 ; N lessequal ; B 24 0 554 704 ; C -1 ; WX 501 ; N ocircumflex ; B 67 -14 527 750 ; C -1 ; WX 501 ; N ntilde ; B 53 0 529 737 ; C -1 ; WX 592 ; N Uhungarumlaut ; B 96 -19 722 936 ; C -1 ; WX 547 ; N Eacute ; B 62 0 620 936 ; C -1 ; WX 456 ; N emacron ; B 58 -14 488 678 ; C -1 ; WX 501 ; N gbreve ; B 31 -217 546 750 ; C -1 ; WX 684 ; N onequarter ; B 108 -19 661 710 ; C -1 ; WX 547 ; N Scaron ; B 66 -19 588 936 ; C -1 ; WX 547 ; N Scommaaccent ; B 66 -228 588 737 ; C -1 ; WX 638 ; N Ohungarumlaut ; B 88 -19 745 936 ; C -1 ; WX 328 ; N degree ; B 143 426 383 712 ; C -1 ; WX 501 ; N ograve ; B 67 -14 527 750 ; C -1 ; WX 592 ; N Ccaron ; B 88 -19 647 936 ; C -1 ; WX 501 ; N ugrave ; B 80 -14 540 750 ; C -1 ; WX 450 ; N radical ; B 92 -46 565 850 ; C -1 ; WX 592 ; N Dcaron ; B 62 0 637 936 ; C -1 ; WX 319 ; N rcommaaccent ; B 21 -228 401 546 ; C -1 ; WX 592 ; N Ntilde ; B 57 0 661 923 ; C -1 ; WX 501 ; N otilde ; B 67 -14 529 737 ; C -1 ; WX 592 ; N Rcommaaccent ; B 62 -228 638 718 ; C -1 ; WX 501 ; N Lcommaaccent ; B 62 -228 501 718 ; C -1 ; WX 592 ; N Atilde ; B 16 0 608 923 ; C -1 ; WX 592 ; N Aogonek ; B 16 -224 576 718 ; C -1 ; WX 592 ; N Aring ; B 16 0 576 962 ; C -1 ; WX 638 ; N Otilde ; B 88 -19 675 923 ; C -1 ; WX 410 ; N zdotaccent ; B 16 0 478 729 ; C -1 ; WX 547 ; N Ecaron ; B 62 0 620 936 ; C -1 ; WX 228 ; N Iogonek ; B -34 -228 301 718 ; C -1 ; WX 456 ; N kcommaaccent ; B 57 -228 549 718 ; C -1 ; WX 479 ; N minus ; B 67 197 500 309 ; C -1 ; WX 228 ; N Icircumflex ; B 52 0 397 936 ; C -1 ; WX 501 ; N ncaron ; B 53 0 526 750 ; C -1 ; WX 273 ; N tcommaaccent ; B 47 -228 346 676 ; C -1 ; WX 479 ; N logicalnot ; B 86 108 519 419 ; C -1 ; WX 501 ; N odieresis ; B 67 -14 527 729 ; C -1 ; WX 501 ; N udieresis ; B 80 -14 540 729 ; C -1 ; WX 450 ; N notequal ; B 26 -49 517 570 ; C -1 ; WX 501 ; N gcommaaccent ; B 31 -217 546 850 ; C -1 ; WX 501 ; N eth ; B 67 -14 549 737 ; C -1 ; WX 410 ; N zcaron ; B 16 0 481 750 ; C -1 ; WX 501 ; N ncommaaccent ; B 53 -228 516 546 ; C -1 ; WX 273 ; N onesuperior ; B 121 283 318 710 ; C -1 ; WX 228 ; N imacron ; B 57 0 352 678 ; EndCharMetrics StartKernData StartKernPairs 2481 KPX A C -40 KPX A Cacute -40 KPX A Ccaron -40 KPX A Ccedilla -40 KPX A G -50 KPX A Gbreve -50 KPX A Gcommaaccent -50 KPX A O -40 KPX A Oacute -40 KPX A Ocircumflex -40 KPX A Odieresis -40 KPX A Ograve -40 KPX A Ohungarumlaut -40 KPX A Omacron -40 KPX A Oslash -40 KPX A Otilde -40 KPX A Q -40 KPX A T -90 KPX A Tcaron -90 KPX A Tcommaaccent -90 KPX A U -50 KPX A Uacute -50 KPX A Ucircumflex -50 KPX A Udieresis -50 KPX A Ugrave -50 KPX A Uhungarumlaut -50 KPX A Umacron -50 KPX A Uogonek -50 KPX A Uring -50 KPX A V -80 KPX A W -60 KPX A Y -110 KPX A Yacute -110 KPX A Ydieresis -110 KPX A u -30 KPX A uacute -30 KPX A ucircumflex -30 KPX A udieresis -30 KPX A ugrave -30 KPX A uhungarumlaut -30 KPX A umacron -30 KPX A uogonek -30 KPX A uring -30 KPX A v -40 KPX A w -30 KPX A y -30 KPX A yacute -30 KPX A ydieresis -30 KPX Aacute C -40 KPX Aacute Cacute -40 KPX Aacute Ccaron -40 KPX Aacute Ccedilla -40 KPX Aacute G -50 KPX Aacute Gbreve -50 KPX Aacute Gcommaaccent -50 KPX Aacute O -40 KPX Aacute Oacute -40 KPX Aacute Ocircumflex -40 KPX Aacute Odieresis -40 KPX Aacute Ograve -40 KPX Aacute Ohungarumlaut -40 KPX Aacute Omacron -40 KPX Aacute Oslash -40 KPX Aacute Otilde -40 KPX Aacute Q -40 KPX Aacute T -90 KPX Aacute Tcaron -90 KPX Aacute Tcommaaccent -90 KPX Aacute U -50 KPX Aacute Uacute -50 KPX Aacute Ucircumflex -50 KPX Aacute Udieresis -50 KPX Aacute Ugrave -50 KPX Aacute Uhungarumlaut -50 KPX Aacute Umacron -50 KPX Aacute Uogonek -50 KPX Aacute Uring -50 KPX Aacute V -80 KPX Aacute W -60 KPX Aacute Y -110 KPX Aacute Yacute -110 KPX Aacute Ydieresis -110 KPX Aacute u -30 KPX Aacute uacute -30 KPX Aacute ucircumflex -30 KPX Aacute udieresis -30 KPX Aacute ugrave -30 KPX Aacute uhungarumlaut -30 KPX Aacute umacron -30 KPX Aacute uogonek -30 KPX Aacute uring -30 KPX Aacute v -40 KPX Aacute w -30 KPX Aacute y -30 KPX Aacute yacute -30 KPX Aacute ydieresis -30 KPX Abreve C -40 KPX Abreve Cacute -40 KPX Abreve Ccaron -40 KPX Abreve Ccedilla -40 KPX Abreve G -50 KPX Abreve Gbreve -50 KPX Abreve Gcommaaccent -50 KPX Abreve O -40 KPX Abreve Oacute -40 KPX Abreve Ocircumflex -40 KPX Abreve Odieresis -40 KPX Abreve Ograve -40 KPX Abreve Ohungarumlaut -40 KPX Abreve Omacron -40 KPX Abreve Oslash -40 KPX Abreve Otilde -40 KPX Abreve Q -40 KPX Abreve T -90 KPX Abreve Tcaron -90 KPX Abreve Tcommaaccent -90 KPX Abreve U -50 KPX Abreve Uacute -50 KPX Abreve Ucircumflex -50 KPX Abreve Udieresis -50 KPX Abreve Ugrave -50 KPX Abreve Uhungarumlaut -50 KPX Abreve Umacron -50 KPX Abreve Uogonek -50 KPX Abreve Uring -50 KPX Abreve V -80 KPX Abreve W -60 KPX Abreve Y -110 KPX Abreve Yacute -110 KPX Abreve Ydieresis -110 KPX Abreve u -30 KPX Abreve uacute -30 KPX Abreve ucircumflex -30 KPX Abreve udieresis -30 KPX Abreve ugrave -30 KPX Abreve uhungarumlaut -30 KPX Abreve umacron -30 KPX Abreve uogonek -30 KPX Abreve uring -30 KPX Abreve v -40 KPX Abreve w -30 KPX Abreve y -30 KPX Abreve yacute -30 KPX Abreve ydieresis -30 KPX Acircumflex C -40 KPX Acircumflex Cacute -40 KPX Acircumflex Ccaron -40 KPX Acircumflex Ccedilla -40 KPX Acircumflex G -50 KPX Acircumflex Gbreve -50 KPX Acircumflex Gcommaaccent -50 KPX Acircumflex O -40 KPX Acircumflex Oacute -40 KPX Acircumflex Ocircumflex -40 KPX Acircumflex Odieresis -40 KPX Acircumflex Ograve -40 KPX Acircumflex Ohungarumlaut -40 KPX Acircumflex Omacron -40 KPX Acircumflex Oslash -40 KPX Acircumflex Otilde -40 KPX Acircumflex Q -40 KPX Acircumflex T -90 KPX Acircumflex Tcaron -90 KPX Acircumflex Tcommaaccent -90 KPX Acircumflex U -50 KPX Acircumflex Uacute -50 KPX Acircumflex Ucircumflex -50 KPX Acircumflex Udieresis -50 KPX Acircumflex Ugrave -50 KPX Acircumflex Uhungarumlaut -50 KPX Acircumflex Umacron -50 KPX Acircumflex Uogonek -50 KPX Acircumflex Uring -50 KPX Acircumflex V -80 KPX Acircumflex W -60 KPX Acircumflex Y -110 KPX Acircumflex Yacute -110 KPX Acircumflex Ydieresis -110 KPX Acircumflex u -30 KPX Acircumflex uacute -30 KPX Acircumflex ucircumflex -30 KPX Acircumflex udieresis -30 KPX Acircumflex ugrave -30 KPX Acircumflex uhungarumlaut -30 KPX Acircumflex umacron -30 KPX Acircumflex uogonek -30 KPX Acircumflex uring -30 KPX Acircumflex v -40 KPX Acircumflex w -30 KPX Acircumflex y -30 KPX Acircumflex yacute -30 KPX Acircumflex ydieresis -30 KPX Adieresis C -40 KPX Adieresis Cacute -40 KPX Adieresis Ccaron -40 KPX Adieresis Ccedilla -40 KPX Adieresis G -50 KPX Adieresis Gbreve -50 KPX Adieresis Gcommaaccent -50 KPX Adieresis O -40 KPX Adieresis Oacute -40 KPX Adieresis Ocircumflex -40 KPX Adieresis Odieresis -40 KPX Adieresis Ograve -40 KPX Adieresis Ohungarumlaut -40 KPX Adieresis Omacron -40 KPX Adieresis Oslash -40 KPX Adieresis Otilde -40 KPX Adieresis Q -40 KPX Adieresis T -90 KPX Adieresis Tcaron -90 KPX Adieresis Tcommaaccent -90 KPX Adieresis U -50 KPX Adieresis Uacute -50 KPX Adieresis Ucircumflex -50 KPX Adieresis Udieresis -50 KPX Adieresis Ugrave -50 KPX Adieresis Uhungarumlaut -50 KPX Adieresis Umacron -50 KPX Adieresis Uogonek -50 KPX Adieresis Uring -50 KPX Adieresis V -80 KPX Adieresis W -60 KPX Adieresis Y -110 KPX Adieresis Yacute -110 KPX Adieresis Ydieresis -110 KPX Adieresis u -30 KPX Adieresis uacute -30 KPX Adieresis ucircumflex -30 KPX Adieresis udieresis -30 KPX Adieresis ugrave -30 KPX Adieresis uhungarumlaut -30 KPX Adieresis umacron -30 KPX Adieresis uogonek -30 KPX Adieresis uring -30 KPX Adieresis v -40 KPX Adieresis w -30 KPX Adieresis y -30 KPX Adieresis yacute -30 KPX Adieresis ydieresis -30 KPX Agrave C -40 KPX Agrave Cacute -40 KPX Agrave Ccaron -40 KPX Agrave Ccedilla -40 KPX Agrave G -50 KPX Agrave Gbreve -50 KPX Agrave Gcommaaccent -50 KPX Agrave O -40 KPX Agrave Oacute -40 KPX Agrave Ocircumflex -40 KPX Agrave Odieresis -40 KPX Agrave Ograve -40 KPX Agrave Ohungarumlaut -40 KPX Agrave Omacron -40 KPX Agrave Oslash -40 KPX Agrave Otilde -40 KPX Agrave Q -40 KPX Agrave T -90 KPX Agrave Tcaron -90 KPX Agrave Tcommaaccent -90 KPX Agrave U -50 KPX Agrave Uacute -50 KPX Agrave Ucircumflex -50 KPX Agrave Udieresis -50 KPX Agrave Ugrave -50 KPX Agrave Uhungarumlaut -50 KPX Agrave Umacron -50 KPX Agrave Uogonek -50 KPX Agrave Uring -50 KPX Agrave V -80 KPX Agrave W -60 KPX Agrave Y -110 KPX Agrave Yacute -110 KPX Agrave Ydieresis -110 KPX Agrave u -30 KPX Agrave uacute -30 KPX Agrave ucircumflex -30 KPX Agrave udieresis -30 KPX Agrave ugrave -30 KPX Agrave uhungarumlaut -30 KPX Agrave umacron -30 KPX Agrave uogonek -30 KPX Agrave uring -30 KPX Agrave v -40 KPX Agrave w -30 KPX Agrave y -30 KPX Agrave yacute -30 KPX Agrave ydieresis -30 KPX Amacron C -40 KPX Amacron Cacute -40 KPX Amacron Ccaron -40 KPX Amacron Ccedilla -40 KPX Amacron G -50 KPX Amacron Gbreve -50 KPX Amacron Gcommaaccent -50 KPX Amacron O -40 KPX Amacron Oacute -40 KPX Amacron Ocircumflex -40 KPX Amacron Odieresis -40 KPX Amacron Ograve -40 KPX Amacron Ohungarumlaut -40 KPX Amacron Omacron -40 KPX Amacron Oslash -40 KPX Amacron Otilde -40 KPX Amacron Q -40 KPX Amacron T -90 KPX Amacron Tcaron -90 KPX Amacron Tcommaaccent -90 KPX Amacron U -50 KPX Amacron Uacute -50 KPX Amacron Ucircumflex -50 KPX Amacron Udieresis -50 KPX Amacron Ugrave -50 KPX Amacron Uhungarumlaut -50 KPX Amacron Umacron -50 KPX Amacron Uogonek -50 KPX Amacron Uring -50 KPX Amacron V -80 KPX Amacron W -60 KPX Amacron Y -110 KPX Amacron Yacute -110 KPX Amacron Ydieresis -110 KPX Amacron u -30 KPX Amacron uacute -30 KPX Amacron ucircumflex -30 KPX Amacron udieresis -30 KPX Amacron ugrave -30 KPX Amacron uhungarumlaut -30 KPX Amacron umacron -30 KPX Amacron uogonek -30 KPX Amacron uring -30 KPX Amacron v -40 KPX Amacron w -30 KPX Amacron y -30 KPX Amacron yacute -30 KPX Amacron ydieresis -30 KPX Aogonek C -40 KPX Aogonek Cacute -40 KPX Aogonek Ccaron -40 KPX Aogonek Ccedilla -40 KPX Aogonek G -50 KPX Aogonek Gbreve -50 KPX Aogonek Gcommaaccent -50 KPX Aogonek O -40 KPX Aogonek Oacute -40 KPX Aogonek Ocircumflex -40 KPX Aogonek Odieresis -40 KPX Aogonek Ograve -40 KPX Aogonek Ohungarumlaut -40 KPX Aogonek Omacron -40 KPX Aogonek Oslash -40 KPX Aogonek Otilde -40 KPX Aogonek Q -40 KPX Aogonek T -90 KPX Aogonek Tcaron -90 KPX Aogonek Tcommaaccent -90 KPX Aogonek U -50 KPX Aogonek Uacute -50 KPX Aogonek Ucircumflex -50 KPX Aogonek Udieresis -50 KPX Aogonek Ugrave -50 KPX Aogonek Uhungarumlaut -50 KPX Aogonek Umacron -50 KPX Aogonek Uogonek -50 KPX Aogonek Uring -50 KPX Aogonek V -80 KPX Aogonek W -60 KPX Aogonek Y -110 KPX Aogonek Yacute -110 KPX Aogonek Ydieresis -110 KPX Aogonek u -30 KPX Aogonek uacute -30 KPX Aogonek ucircumflex -30 KPX Aogonek udieresis -30 KPX Aogonek ugrave -30 KPX Aogonek uhungarumlaut -30 KPX Aogonek umacron -30 KPX Aogonek uogonek -30 KPX Aogonek uring -30 KPX Aogonek v -40 KPX Aogonek w -30 KPX Aogonek y -30 KPX Aogonek yacute -30 KPX Aogonek ydieresis -30 KPX Aring C -40 KPX Aring Cacute -40 KPX Aring Ccaron -40 KPX Aring Ccedilla -40 KPX Aring G -50 KPX Aring Gbreve -50 KPX Aring Gcommaaccent -50 KPX Aring O -40 KPX Aring Oacute -40 KPX Aring Ocircumflex -40 KPX Aring Odieresis -40 KPX Aring Ograve -40 KPX Aring Ohungarumlaut -40 KPX Aring Omacron -40 KPX Aring Oslash -40 KPX Aring Otilde -40 KPX Aring Q -40 KPX Aring T -90 KPX Aring Tcaron -90 KPX Aring Tcommaaccent -90 KPX Aring U -50 KPX Aring Uacute -50 KPX Aring Ucircumflex -50 KPX Aring Udieresis -50 KPX Aring Ugrave -50 KPX Aring Uhungarumlaut -50 KPX Aring Umacron -50 KPX Aring Uogonek -50 KPX Aring Uring -50 KPX Aring V -80 KPX Aring W -60 KPX Aring Y -110 KPX Aring Yacute -110 KPX Aring Ydieresis -110 KPX Aring u -30 KPX Aring uacute -30 KPX Aring ucircumflex -30 KPX Aring udieresis -30 KPX Aring ugrave -30 KPX Aring uhungarumlaut -30 KPX Aring umacron -30 KPX Aring uogonek -30 KPX Aring uring -30 KPX Aring v -40 KPX Aring w -30 KPX Aring y -30 KPX Aring yacute -30 KPX Aring ydieresis -30 KPX Atilde C -40 KPX Atilde Cacute -40 KPX Atilde Ccaron -40 KPX Atilde Ccedilla -40 KPX Atilde G -50 KPX Atilde Gbreve -50 KPX Atilde Gcommaaccent -50 KPX Atilde O -40 KPX Atilde Oacute -40 KPX Atilde Ocircumflex -40 KPX Atilde Odieresis -40 KPX Atilde Ograve -40 KPX Atilde Ohungarumlaut -40 KPX Atilde Omacron -40 KPX Atilde Oslash -40 KPX Atilde Otilde -40 KPX Atilde Q -40 KPX Atilde T -90 KPX Atilde Tcaron -90 KPX Atilde Tcommaaccent -90 KPX Atilde U -50 KPX Atilde Uacute -50 KPX Atilde Ucircumflex -50 KPX Atilde Udieresis -50 KPX Atilde Ugrave -50 KPX Atilde Uhungarumlaut -50 KPX Atilde Umacron -50 KPX Atilde Uogonek -50 KPX Atilde Uring -50 KPX Atilde V -80 KPX Atilde W -60 KPX Atilde Y -110 KPX Atilde Yacute -110 KPX Atilde Ydieresis -110 KPX Atilde u -30 KPX Atilde uacute -30 KPX Atilde ucircumflex -30 KPX Atilde udieresis -30 KPX Atilde ugrave -30 KPX Atilde uhungarumlaut -30 KPX Atilde umacron -30 KPX Atilde uogonek -30 KPX Atilde uring -30 KPX Atilde v -40 KPX Atilde w -30 KPX Atilde y -30 KPX Atilde yacute -30 KPX Atilde ydieresis -30 KPX B A -30 KPX B Aacute -30 KPX B Abreve -30 KPX B Acircumflex -30 KPX B Adieresis -30 KPX B Agrave -30 KPX B Amacron -30 KPX B Aogonek -30 KPX B Aring -30 KPX B Atilde -30 KPX B U -10 KPX B Uacute -10 KPX B Ucircumflex -10 KPX B Udieresis -10 KPX B Ugrave -10 KPX B Uhungarumlaut -10 KPX B Umacron -10 KPX B Uogonek -10 KPX B Uring -10 KPX D A -40 KPX D Aacute -40 KPX D Abreve -40 KPX D Acircumflex -40 KPX D Adieresis -40 KPX D Agrave -40 KPX D Amacron -40 KPX D Aogonek -40 KPX D Aring -40 KPX D Atilde -40 KPX D V -40 KPX D W -40 KPX D Y -70 KPX D Yacute -70 KPX D Ydieresis -70 KPX D comma -30 KPX D period -30 KPX Dcaron A -40 KPX Dcaron Aacute -40 KPX Dcaron Abreve -40 KPX Dcaron Acircumflex -40 KPX Dcaron Adieresis -40 KPX Dcaron Agrave -40 KPX Dcaron Amacron -40 KPX Dcaron Aogonek -40 KPX Dcaron Aring -40 KPX Dcaron Atilde -40 KPX Dcaron V -40 KPX Dcaron W -40 KPX Dcaron Y -70 KPX Dcaron Yacute -70 KPX Dcaron Ydieresis -70 KPX Dcaron comma -30 KPX Dcaron period -30 KPX Dcroat A -40 KPX Dcroat Aacute -40 KPX Dcroat Abreve -40 KPX Dcroat Acircumflex -40 KPX Dcroat Adieresis -40 KPX Dcroat Agrave -40 KPX Dcroat Amacron -40 KPX Dcroat Aogonek -40 KPX Dcroat Aring -40 KPX Dcroat Atilde -40 KPX Dcroat V -40 KPX Dcroat W -40 KPX Dcroat Y -70 KPX Dcroat Yacute -70 KPX Dcroat Ydieresis -70 KPX Dcroat comma -30 KPX Dcroat period -30 KPX F A -80 KPX F Aacute -80 KPX F Abreve -80 KPX F Acircumflex -80 KPX F Adieresis -80 KPX F Agrave -80 KPX F Amacron -80 KPX F Aogonek -80 KPX F Aring -80 KPX F Atilde -80 KPX F a -20 KPX F aacute -20 KPX F abreve -20 KPX F acircumflex -20 KPX F adieresis -20 KPX F agrave -20 KPX F amacron -20 KPX F aogonek -20 KPX F aring -20 KPX F atilde -20 KPX F comma -100 KPX F period -100 KPX J A -20 KPX J Aacute -20 KPX J Abreve -20 KPX J Acircumflex -20 KPX J Adieresis -20 KPX J Agrave -20 KPX J Amacron -20 KPX J Aogonek -20 KPX J Aring -20 KPX J Atilde -20 KPX J comma -20 KPX J period -20 KPX J u -20 KPX J uacute -20 KPX J ucircumflex -20 KPX J udieresis -20 KPX J ugrave -20 KPX J uhungarumlaut -20 KPX J umacron -20 KPX J uogonek -20 KPX J uring -20 KPX K O -30 KPX K Oacute -30 KPX K Ocircumflex -30 KPX K Odieresis -30 KPX K Ograve -30 KPX K Ohungarumlaut -30 KPX K Omacron -30 KPX K Oslash -30 KPX K Otilde -30 KPX K e -15 KPX K eacute -15 KPX K ecaron -15 KPX K ecircumflex -15 KPX K edieresis -15 KPX K edotaccent -15 KPX K egrave -15 KPX K emacron -15 KPX K eogonek -15 KPX K o -35 KPX K oacute -35 KPX K ocircumflex -35 KPX K odieresis -35 KPX K ograve -35 KPX K ohungarumlaut -35 KPX K omacron -35 KPX K oslash -35 KPX K otilde -35 KPX K u -30 KPX K uacute -30 KPX K ucircumflex -30 KPX K udieresis -30 KPX K ugrave -30 KPX K uhungarumlaut -30 KPX K umacron -30 KPX K uogonek -30 KPX K uring -30 KPX K y -40 KPX K yacute -40 KPX K ydieresis -40 KPX Kcommaaccent O -30 KPX Kcommaaccent Oacute -30 KPX Kcommaaccent Ocircumflex -30 KPX Kcommaaccent Odieresis -30 KPX Kcommaaccent Ograve -30 KPX Kcommaaccent Ohungarumlaut -30 KPX Kcommaaccent Omacron -30 KPX Kcommaaccent Oslash -30 KPX Kcommaaccent Otilde -30 KPX Kcommaaccent e -15 KPX Kcommaaccent eacute -15 KPX Kcommaaccent ecaron -15 KPX Kcommaaccent ecircumflex -15 KPX Kcommaaccent edieresis -15 KPX Kcommaaccent edotaccent -15 KPX Kcommaaccent egrave -15 KPX Kcommaaccent emacron -15 KPX Kcommaaccent eogonek -15 KPX Kcommaaccent o -35 KPX Kcommaaccent oacute -35 KPX Kcommaaccent ocircumflex -35 KPX Kcommaaccent odieresis -35 KPX Kcommaaccent ograve -35 KPX Kcommaaccent ohungarumlaut -35 KPX Kcommaaccent omacron -35 KPX Kcommaaccent oslash -35 KPX Kcommaaccent otilde -35 KPX Kcommaaccent u -30 KPX Kcommaaccent uacute -30 KPX Kcommaaccent ucircumflex -30 KPX Kcommaaccent udieresis -30 KPX Kcommaaccent ugrave -30 KPX Kcommaaccent uhungarumlaut -30 KPX Kcommaaccent umacron -30 KPX Kcommaaccent uogonek -30 KPX Kcommaaccent uring -30 KPX Kcommaaccent y -40 KPX Kcommaaccent yacute -40 KPX Kcommaaccent ydieresis -40 KPX L T -90 KPX L Tcaron -90 KPX L Tcommaaccent -90 KPX L V -110 KPX L W -80 KPX L Y -120 KPX L Yacute -120 KPX L Ydieresis -120 KPX L quotedblright -140 KPX L quoteright -140 KPX L y -30 KPX L yacute -30 KPX L ydieresis -30 KPX Lacute T -90 KPX Lacute Tcaron -90 KPX Lacute Tcommaaccent -90 KPX Lacute V -110 KPX Lacute W -80 KPX Lacute Y -120 KPX Lacute Yacute -120 KPX Lacute Ydieresis -120 KPX Lacute quotedblright -140 KPX Lacute quoteright -140 KPX Lacute y -30 KPX Lacute yacute -30 KPX Lacute ydieresis -30 KPX Lcommaaccent T -90 KPX Lcommaaccent Tcaron -90 KPX Lcommaaccent Tcommaaccent -90 KPX Lcommaaccent V -110 KPX Lcommaaccent W -80 KPX Lcommaaccent Y -120 KPX Lcommaaccent Yacute -120 KPX Lcommaaccent Ydieresis -120 KPX Lcommaaccent quotedblright -140 KPX Lcommaaccent quoteright -140 KPX Lcommaaccent y -30 KPX Lcommaaccent yacute -30 KPX Lcommaaccent ydieresis -30 KPX Lslash T -90 KPX Lslash Tcaron -90 KPX Lslash Tcommaaccent -90 KPX Lslash V -110 KPX Lslash W -80 KPX Lslash Y -120 KPX Lslash Yacute -120 KPX Lslash Ydieresis -120 KPX Lslash quotedblright -140 KPX Lslash quoteright -140 KPX Lslash y -30 KPX Lslash yacute -30 KPX Lslash ydieresis -30 KPX O A -50 KPX O Aacute -50 KPX O Abreve -50 KPX O Acircumflex -50 KPX O Adieresis -50 KPX O Agrave -50 KPX O Amacron -50 KPX O Aogonek -50 KPX O Aring -50 KPX O Atilde -50 KPX O T -40 KPX O Tcaron -40 KPX O Tcommaaccent -40 KPX O V -50 KPX O W -50 KPX O X -50 KPX O Y -70 KPX O Yacute -70 KPX O Ydieresis -70 KPX O comma -40 KPX O period -40 KPX Oacute A -50 KPX Oacute Aacute -50 KPX Oacute Abreve -50 KPX Oacute Acircumflex -50 KPX Oacute Adieresis -50 KPX Oacute Agrave -50 KPX Oacute Amacron -50 KPX Oacute Aogonek -50 KPX Oacute Aring -50 KPX Oacute Atilde -50 KPX Oacute T -40 KPX Oacute Tcaron -40 KPX Oacute Tcommaaccent -40 KPX Oacute V -50 KPX Oacute W -50 KPX Oacute X -50 KPX Oacute Y -70 KPX Oacute Yacute -70 KPX Oacute Ydieresis -70 KPX Oacute comma -40 KPX Oacute period -40 KPX Ocircumflex A -50 KPX Ocircumflex Aacute -50 KPX Ocircumflex Abreve -50 KPX Ocircumflex Acircumflex -50 KPX Ocircumflex Adieresis -50 KPX Ocircumflex Agrave -50 KPX Ocircumflex Amacron -50 KPX Ocircumflex Aogonek -50 KPX Ocircumflex Aring -50 KPX Ocircumflex Atilde -50 KPX Ocircumflex T -40 KPX Ocircumflex Tcaron -40 KPX Ocircumflex Tcommaaccent -40 KPX Ocircumflex V -50 KPX Ocircumflex W -50 KPX Ocircumflex X -50 KPX Ocircumflex Y -70 KPX Ocircumflex Yacute -70 KPX Ocircumflex Ydieresis -70 KPX Ocircumflex comma -40 KPX Ocircumflex period -40 KPX Odieresis A -50 KPX Odieresis Aacute -50 KPX Odieresis Abreve -50 KPX Odieresis Acircumflex -50 KPX Odieresis Adieresis -50 KPX Odieresis Agrave -50 KPX Odieresis Amacron -50 KPX Odieresis Aogonek -50 KPX Odieresis Aring -50 KPX Odieresis Atilde -50 KPX Odieresis T -40 KPX Odieresis Tcaron -40 KPX Odieresis Tcommaaccent -40 KPX Odieresis V -50 KPX Odieresis W -50 KPX Odieresis X -50 KPX Odieresis Y -70 KPX Odieresis Yacute -70 KPX Odieresis Ydieresis -70 KPX Odieresis comma -40 KPX Odieresis period -40 KPX Ograve A -50 KPX Ograve Aacute -50 KPX Ograve Abreve -50 KPX Ograve Acircumflex -50 KPX Ograve Adieresis -50 KPX Ograve Agrave -50 KPX Ograve Amacron -50 KPX Ograve Aogonek -50 KPX Ograve Aring -50 KPX Ograve Atilde -50 KPX Ograve T -40 KPX Ograve Tcaron -40 KPX Ograve Tcommaaccent -40 KPX Ograve V -50 KPX Ograve W -50 KPX Ograve X -50 KPX Ograve Y -70 KPX Ograve Yacute -70 KPX Ograve Ydieresis -70 KPX Ograve comma -40 KPX Ograve period -40 KPX Ohungarumlaut A -50 KPX Ohungarumlaut Aacute -50 KPX Ohungarumlaut Abreve -50 KPX Ohungarumlaut Acircumflex -50 KPX Ohungarumlaut Adieresis -50 KPX Ohungarumlaut Agrave -50 KPX Ohungarumlaut Amacron -50 KPX Ohungarumlaut Aogonek -50 KPX Ohungarumlaut Aring -50 KPX Ohungarumlaut Atilde -50 KPX Ohungarumlaut T -40 KPX Ohungarumlaut Tcaron -40 KPX Ohungarumlaut Tcommaaccent -40 KPX Ohungarumlaut V -50 KPX Ohungarumlaut W -50 KPX Ohungarumlaut X -50 KPX Ohungarumlaut Y -70 KPX Ohungarumlaut Yacute -70 KPX Ohungarumlaut Ydieresis -70 KPX Ohungarumlaut comma -40 KPX Ohungarumlaut period -40 KPX Omacron A -50 KPX Omacron Aacute -50 KPX Omacron Abreve -50 KPX Omacron Acircumflex -50 KPX Omacron Adieresis -50 KPX Omacron Agrave -50 KPX Omacron Amacron -50 KPX Omacron Aogonek -50 KPX Omacron Aring -50 KPX Omacron Atilde -50 KPX Omacron T -40 KPX Omacron Tcaron -40 KPX Omacron Tcommaaccent -40 KPX Omacron V -50 KPX Omacron W -50 KPX Omacron X -50 KPX Omacron Y -70 KPX Omacron Yacute -70 KPX Omacron Ydieresis -70 KPX Omacron comma -40 KPX Omacron period -40 KPX Oslash A -50 KPX Oslash Aacute -50 KPX Oslash Abreve -50 KPX Oslash Acircumflex -50 KPX Oslash Adieresis -50 KPX Oslash Agrave -50 KPX Oslash Amacron -50 KPX Oslash Aogonek -50 KPX Oslash Aring -50 KPX Oslash Atilde -50 KPX Oslash T -40 KPX Oslash Tcaron -40 KPX Oslash Tcommaaccent -40 KPX Oslash V -50 KPX Oslash W -50 KPX Oslash X -50 KPX Oslash Y -70 KPX Oslash Yacute -70 KPX Oslash Ydieresis -70 KPX Oslash comma -40 KPX Oslash period -40 KPX Otilde A -50 KPX Otilde Aacute -50 KPX Otilde Abreve -50 KPX Otilde Acircumflex -50 KPX Otilde Adieresis -50 KPX Otilde Agrave -50 KPX Otilde Amacron -50 KPX Otilde Aogonek -50 KPX Otilde Aring -50 KPX Otilde Atilde -50 KPX Otilde T -40 KPX Otilde Tcaron -40 KPX Otilde Tcommaaccent -40 KPX Otilde V -50 KPX Otilde W -50 KPX Otilde X -50 KPX Otilde Y -70 KPX Otilde Yacute -70 KPX Otilde Ydieresis -70 KPX Otilde comma -40 KPX Otilde period -40 KPX P A -100 KPX P Aacute -100 KPX P Abreve -100 KPX P Acircumflex -100 KPX P Adieresis -100 KPX P Agrave -100 KPX P Amacron -100 KPX P Aogonek -100 KPX P Aring -100 KPX P Atilde -100 KPX P a -30 KPX P aacute -30 KPX P abreve -30 KPX P acircumflex -30 KPX P adieresis -30 KPX P agrave -30 KPX P amacron -30 KPX P aogonek -30 KPX P aring -30 KPX P atilde -30 KPX P comma -120 KPX P e -30 KPX P eacute -30 KPX P ecaron -30 KPX P ecircumflex -30 KPX P edieresis -30 KPX P edotaccent -30 KPX P egrave -30 KPX P emacron -30 KPX P eogonek -30 KPX P o -40 KPX P oacute -40 KPX P ocircumflex -40 KPX P odieresis -40 KPX P ograve -40 KPX P ohungarumlaut -40 KPX P omacron -40 KPX P oslash -40 KPX P otilde -40 KPX P period -120 KPX Q U -10 KPX Q Uacute -10 KPX Q Ucircumflex -10 KPX Q Udieresis -10 KPX Q Ugrave -10 KPX Q Uhungarumlaut -10 KPX Q Umacron -10 KPX Q Uogonek -10 KPX Q Uring -10 KPX Q comma 20 KPX Q period 20 KPX R O -20 KPX R Oacute -20 KPX R Ocircumflex -20 KPX R Odieresis -20 KPX R Ograve -20 KPX R Ohungarumlaut -20 KPX R Omacron -20 KPX R Oslash -20 KPX R Otilde -20 KPX R T -20 KPX R Tcaron -20 KPX R Tcommaaccent -20 KPX R U -20 KPX R Uacute -20 KPX R Ucircumflex -20 KPX R Udieresis -20 KPX R Ugrave -20 KPX R Uhungarumlaut -20 KPX R Umacron -20 KPX R Uogonek -20 KPX R Uring -20 KPX R V -50 KPX R W -40 KPX R Y -50 KPX R Yacute -50 KPX R Ydieresis -50 KPX Racute O -20 KPX Racute Oacute -20 KPX Racute Ocircumflex -20 KPX Racute Odieresis -20 KPX Racute Ograve -20 KPX Racute Ohungarumlaut -20 KPX Racute Omacron -20 KPX Racute Oslash -20 KPX Racute Otilde -20 KPX Racute T -20 KPX Racute Tcaron -20 KPX Racute Tcommaaccent -20 KPX Racute U -20 KPX Racute Uacute -20 KPX Racute Ucircumflex -20 KPX Racute Udieresis -20 KPX Racute Ugrave -20 KPX Racute Uhungarumlaut -20 KPX Racute Umacron -20 KPX Racute Uogonek -20 KPX Racute Uring -20 KPX Racute V -50 KPX Racute W -40 KPX Racute Y -50 KPX Racute Yacute -50 KPX Racute Ydieresis -50 KPX Rcaron O -20 KPX Rcaron Oacute -20 KPX Rcaron Ocircumflex -20 KPX Rcaron Odieresis -20 KPX Rcaron Ograve -20 KPX Rcaron Ohungarumlaut -20 KPX Rcaron Omacron -20 KPX Rcaron Oslash -20 KPX Rcaron Otilde -20 KPX Rcaron T -20 KPX Rcaron Tcaron -20 KPX Rcaron Tcommaaccent -20 KPX Rcaron U -20 KPX Rcaron Uacute -20 KPX Rcaron Ucircumflex -20 KPX Rcaron Udieresis -20 KPX Rcaron Ugrave -20 KPX Rcaron Uhungarumlaut -20 KPX Rcaron Umacron -20 KPX Rcaron Uogonek -20 KPX Rcaron Uring -20 KPX Rcaron V -50 KPX Rcaron W -40 KPX Rcaron Y -50 KPX Rcaron Yacute -50 KPX Rcaron Ydieresis -50 KPX Rcommaaccent O -20 KPX Rcommaaccent Oacute -20 KPX Rcommaaccent Ocircumflex -20 KPX Rcommaaccent Odieresis -20 KPX Rcommaaccent Ograve -20 KPX Rcommaaccent Ohungarumlaut -20 KPX Rcommaaccent Omacron -20 KPX Rcommaaccent Oslash -20 KPX Rcommaaccent Otilde -20 KPX Rcommaaccent T -20 KPX Rcommaaccent Tcaron -20 KPX Rcommaaccent Tcommaaccent -20 KPX Rcommaaccent U -20 KPX Rcommaaccent Uacute -20 KPX Rcommaaccent Ucircumflex -20 KPX Rcommaaccent Udieresis -20 KPX Rcommaaccent Ugrave -20 KPX Rcommaaccent Uhungarumlaut -20 KPX Rcommaaccent Umacron -20 KPX Rcommaaccent Uogonek -20 KPX Rcommaaccent Uring -20 KPX Rcommaaccent V -50 KPX Rcommaaccent W -40 KPX Rcommaaccent Y -50 KPX Rcommaaccent Yacute -50 KPX Rcommaaccent Ydieresis -50 KPX T A -90 KPX T Aacute -90 KPX T Abreve -90 KPX T Acircumflex -90 KPX T Adieresis -90 KPX T Agrave -90 KPX T Amacron -90 KPX T Aogonek -90 KPX T Aring -90 KPX T Atilde -90 KPX T O -40 KPX T Oacute -40 KPX T Ocircumflex -40 KPX T Odieresis -40 KPX T Ograve -40 KPX T Ohungarumlaut -40 KPX T Omacron -40 KPX T Oslash -40 KPX T Otilde -40 KPX T a -80 KPX T aacute -80 KPX T abreve -80 KPX T acircumflex -80 KPX T adieresis -80 KPX T agrave -80 KPX T amacron -80 KPX T aogonek -80 KPX T aring -80 KPX T atilde -80 KPX T colon -40 KPX T comma -80 KPX T e -60 KPX T eacute -60 KPX T ecaron -60 KPX T ecircumflex -60 KPX T edieresis -60 KPX T edotaccent -60 KPX T egrave -60 KPX T emacron -60 KPX T eogonek -60 KPX T hyphen -120 KPX T o -80 KPX T oacute -80 KPX T ocircumflex -80 KPX T odieresis -80 KPX T ograve -80 KPX T ohungarumlaut -80 KPX T omacron -80 KPX T oslash -80 KPX T otilde -80 KPX T period -80 KPX T r -80 KPX T racute -80 KPX T rcommaaccent -80 KPX T semicolon -40 KPX T u -90 KPX T uacute -90 KPX T ucircumflex -90 KPX T udieresis -90 KPX T ugrave -90 KPX T uhungarumlaut -90 KPX T umacron -90 KPX T uogonek -90 KPX T uring -90 KPX T w -60 KPX T y -60 KPX T yacute -60 KPX T ydieresis -60 KPX Tcaron A -90 KPX Tcaron Aacute -90 KPX Tcaron Abreve -90 KPX Tcaron Acircumflex -90 KPX Tcaron Adieresis -90 KPX Tcaron Agrave -90 KPX Tcaron Amacron -90 KPX Tcaron Aogonek -90 KPX Tcaron Aring -90 KPX Tcaron Atilde -90 KPX Tcaron O -40 KPX Tcaron Oacute -40 KPX Tcaron Ocircumflex -40 KPX Tcaron Odieresis -40 KPX Tcaron Ograve -40 KPX Tcaron Ohungarumlaut -40 KPX Tcaron Omacron -40 KPX Tcaron Oslash -40 KPX Tcaron Otilde -40 KPX Tcaron a -80 KPX Tcaron aacute -80 KPX Tcaron abreve -80 KPX Tcaron acircumflex -80 KPX Tcaron adieresis -80 KPX Tcaron agrave -80 KPX Tcaron amacron -80 KPX Tcaron aogonek -80 KPX Tcaron aring -80 KPX Tcaron atilde -80 KPX Tcaron colon -40 KPX Tcaron comma -80 KPX Tcaron e -60 KPX Tcaron eacute -60 KPX Tcaron ecaron -60 KPX Tcaron ecircumflex -60 KPX Tcaron edieresis -60 KPX Tcaron edotaccent -60 KPX Tcaron egrave -60 KPX Tcaron emacron -60 KPX Tcaron eogonek -60 KPX Tcaron hyphen -120 KPX Tcaron o -80 KPX Tcaron oacute -80 KPX Tcaron ocircumflex -80 KPX Tcaron odieresis -80 KPX Tcaron ograve -80 KPX Tcaron ohungarumlaut -80 KPX Tcaron omacron -80 KPX Tcaron oslash -80 KPX Tcaron otilde -80 KPX Tcaron period -80 KPX Tcaron r -80 KPX Tcaron racute -80 KPX Tcaron rcommaaccent -80 KPX Tcaron semicolon -40 KPX Tcaron u -90 KPX Tcaron uacute -90 KPX Tcaron ucircumflex -90 KPX Tcaron udieresis -90 KPX Tcaron ugrave -90 KPX Tcaron uhungarumlaut -90 KPX Tcaron umacron -90 KPX Tcaron uogonek -90 KPX Tcaron uring -90 KPX Tcaron w -60 KPX Tcaron y -60 KPX Tcaron yacute -60 KPX Tcaron ydieresis -60 KPX Tcommaaccent A -90 KPX Tcommaaccent Aacute -90 KPX Tcommaaccent Abreve -90 KPX Tcommaaccent Acircumflex -90 KPX Tcommaaccent Adieresis -90 KPX Tcommaaccent Agrave -90 KPX Tcommaaccent Amacron -90 KPX Tcommaaccent Aogonek -90 KPX Tcommaaccent Aring -90 KPX Tcommaaccent Atilde -90 KPX Tcommaaccent O -40 KPX Tcommaaccent Oacute -40 KPX Tcommaaccent Ocircumflex -40 KPX Tcommaaccent Odieresis -40 KPX Tcommaaccent Ograve -40 KPX Tcommaaccent Ohungarumlaut -40 KPX Tcommaaccent Omacron -40 KPX Tcommaaccent Oslash -40 KPX Tcommaaccent Otilde -40 KPX Tcommaaccent a -80 KPX Tcommaaccent aacute -80 KPX Tcommaaccent abreve -80 KPX Tcommaaccent acircumflex -80 KPX Tcommaaccent adieresis -80 KPX Tcommaaccent agrave -80 KPX Tcommaaccent amacron -80 KPX Tcommaaccent aogonek -80 KPX Tcommaaccent aring -80 KPX Tcommaaccent atilde -80 KPX Tcommaaccent colon -40 KPX Tcommaaccent comma -80 KPX Tcommaaccent e -60 KPX Tcommaaccent eacute -60 KPX Tcommaaccent ecaron -60 KPX Tcommaaccent ecircumflex -60 KPX Tcommaaccent edieresis -60 KPX Tcommaaccent edotaccent -60 KPX Tcommaaccent egrave -60 KPX Tcommaaccent emacron -60 KPX Tcommaaccent eogonek -60 KPX Tcommaaccent hyphen -120 KPX Tcommaaccent o -80 KPX Tcommaaccent oacute -80 KPX Tcommaaccent ocircumflex -80 KPX Tcommaaccent odieresis -80 KPX Tcommaaccent ograve -80 KPX Tcommaaccent ohungarumlaut -80 KPX Tcommaaccent omacron -80 KPX Tcommaaccent oslash -80 KPX Tcommaaccent otilde -80 KPX Tcommaaccent period -80 KPX Tcommaaccent r -80 KPX Tcommaaccent racute -80 KPX Tcommaaccent rcommaaccent -80 KPX Tcommaaccent semicolon -40 KPX Tcommaaccent u -90 KPX Tcommaaccent uacute -90 KPX Tcommaaccent ucircumflex -90 KPX Tcommaaccent udieresis -90 KPX Tcommaaccent ugrave -90 KPX Tcommaaccent uhungarumlaut -90 KPX Tcommaaccent umacron -90 KPX Tcommaaccent uogonek -90 KPX Tcommaaccent uring -90 KPX Tcommaaccent w -60 KPX Tcommaaccent y -60 KPX Tcommaaccent yacute -60 KPX Tcommaaccent ydieresis -60 KPX U A -50 KPX U Aacute -50 KPX U Abreve -50 KPX U Acircumflex -50 KPX U Adieresis -50 KPX U Agrave -50 KPX U Amacron -50 KPX U Aogonek -50 KPX U Aring -50 KPX U Atilde -50 KPX U comma -30 KPX U period -30 KPX Uacute A -50 KPX Uacute Aacute -50 KPX Uacute Abreve -50 KPX Uacute Acircumflex -50 KPX Uacute Adieresis -50 KPX Uacute Agrave -50 KPX Uacute Amacron -50 KPX Uacute Aogonek -50 KPX Uacute Aring -50 KPX Uacute Atilde -50 KPX Uacute comma -30 KPX Uacute period -30 KPX Ucircumflex A -50 KPX Ucircumflex Aacute -50 KPX Ucircumflex Abreve -50 KPX Ucircumflex Acircumflex -50 KPX Ucircumflex Adieresis -50 KPX Ucircumflex Agrave -50 KPX Ucircumflex Amacron -50 KPX Ucircumflex Aogonek -50 KPX Ucircumflex Aring -50 KPX Ucircumflex Atilde -50 KPX Ucircumflex comma -30 KPX Ucircumflex period -30 KPX Udieresis A -50 KPX Udieresis Aacute -50 KPX Udieresis Abreve -50 KPX Udieresis Acircumflex -50 KPX Udieresis Adieresis -50 KPX Udieresis Agrave -50 KPX Udieresis Amacron -50 KPX Udieresis Aogonek -50 KPX Udieresis Aring -50 KPX Udieresis Atilde -50 KPX Udieresis comma -30 KPX Udieresis period -30 KPX Ugrave A -50 KPX Ugrave Aacute -50 KPX Ugrave Abreve -50 KPX Ugrave Acircumflex -50 KPX Ugrave Adieresis -50 KPX Ugrave Agrave -50 KPX Ugrave Amacron -50 KPX Ugrave Aogonek -50 KPX Ugrave Aring -50 KPX Ugrave Atilde -50 KPX Ugrave comma -30 KPX Ugrave period -30 KPX Uhungarumlaut A -50 KPX Uhungarumlaut Aacute -50 KPX Uhungarumlaut Abreve -50 KPX Uhungarumlaut Acircumflex -50 KPX Uhungarumlaut Adieresis -50 KPX Uhungarumlaut Agrave -50 KPX Uhungarumlaut Amacron -50 KPX Uhungarumlaut Aogonek -50 KPX Uhungarumlaut Aring -50 KPX Uhungarumlaut Atilde -50 KPX Uhungarumlaut comma -30 KPX Uhungarumlaut period -30 KPX Umacron A -50 KPX Umacron Aacute -50 KPX Umacron Abreve -50 KPX Umacron Acircumflex -50 KPX Umacron Adieresis -50 KPX Umacron Agrave -50 KPX Umacron Amacron -50 KPX Umacron Aogonek -50 KPX Umacron Aring -50 KPX Umacron Atilde -50 KPX Umacron comma -30 KPX Umacron period -30 KPX Uogonek A -50 KPX Uogonek Aacute -50 KPX Uogonek Abreve -50 KPX Uogonek Acircumflex -50 KPX Uogonek Adieresis -50 KPX Uogonek Agrave -50 KPX Uogonek Amacron -50 KPX Uogonek Aogonek -50 KPX Uogonek Aring -50 KPX Uogonek Atilde -50 KPX Uogonek comma -30 KPX Uogonek period -30 KPX Uring A -50 KPX Uring Aacute -50 KPX Uring Abreve -50 KPX Uring Acircumflex -50 KPX Uring Adieresis -50 KPX Uring Agrave -50 KPX Uring Amacron -50 KPX Uring Aogonek -50 KPX Uring Aring -50 KPX Uring Atilde -50 KPX Uring comma -30 KPX Uring period -30 KPX V A -80 KPX V Aacute -80 KPX V Abreve -80 KPX V Acircumflex -80 KPX V Adieresis -80 KPX V Agrave -80 KPX V Amacron -80 KPX V Aogonek -80 KPX V Aring -80 KPX V Atilde -80 KPX V G -50 KPX V Gbreve -50 KPX V Gcommaaccent -50 KPX V O -50 KPX V Oacute -50 KPX V Ocircumflex -50 KPX V Odieresis -50 KPX V Ograve -50 KPX V Ohungarumlaut -50 KPX V Omacron -50 KPX V Oslash -50 KPX V Otilde -50 KPX V a -60 KPX V aacute -60 KPX V abreve -60 KPX V acircumflex -60 KPX V adieresis -60 KPX V agrave -60 KPX V amacron -60 KPX V aogonek -60 KPX V aring -60 KPX V atilde -60 KPX V colon -40 KPX V comma -120 KPX V e -50 KPX V eacute -50 KPX V ecaron -50 KPX V ecircumflex -50 KPX V edieresis -50 KPX V edotaccent -50 KPX V egrave -50 KPX V emacron -50 KPX V eogonek -50 KPX V hyphen -80 KPX V o -90 KPX V oacute -90 KPX V ocircumflex -90 KPX V odieresis -90 KPX V ograve -90 KPX V ohungarumlaut -90 KPX V omacron -90 KPX V oslash -90 KPX V otilde -90 KPX V period -120 KPX V semicolon -40 KPX V u -60 KPX V uacute -60 KPX V ucircumflex -60 KPX V udieresis -60 KPX V ugrave -60 KPX V uhungarumlaut -60 KPX V umacron -60 KPX V uogonek -60 KPX V uring -60 KPX W A -60 KPX W Aacute -60 KPX W Abreve -60 KPX W Acircumflex -60 KPX W Adieresis -60 KPX W Agrave -60 KPX W Amacron -60 KPX W Aogonek -60 KPX W Aring -60 KPX W Atilde -60 KPX W O -20 KPX W Oacute -20 KPX W Ocircumflex -20 KPX W Odieresis -20 KPX W Ograve -20 KPX W Ohungarumlaut -20 KPX W Omacron -20 KPX W Oslash -20 KPX W Otilde -20 KPX W a -40 KPX W aacute -40 KPX W abreve -40 KPX W acircumflex -40 KPX W adieresis -40 KPX W agrave -40 KPX W amacron -40 KPX W aogonek -40 KPX W aring -40 KPX W atilde -40 KPX W colon -10 KPX W comma -80 KPX W e -35 KPX W eacute -35 KPX W ecaron -35 KPX W ecircumflex -35 KPX W edieresis -35 KPX W edotaccent -35 KPX W egrave -35 KPX W emacron -35 KPX W eogonek -35 KPX W hyphen -40 KPX W o -60 KPX W oacute -60 KPX W ocircumflex -60 KPX W odieresis -60 KPX W ograve -60 KPX W ohungarumlaut -60 KPX W omacron -60 KPX W oslash -60 KPX W otilde -60 KPX W period -80 KPX W semicolon -10 KPX W u -45 KPX W uacute -45 KPX W ucircumflex -45 KPX W udieresis -45 KPX W ugrave -45 KPX W uhungarumlaut -45 KPX W umacron -45 KPX W uogonek -45 KPX W uring -45 KPX W y -20 KPX W yacute -20 KPX W ydieresis -20 KPX Y A -110 KPX Y Aacute -110 KPX Y Abreve -110 KPX Y Acircumflex -110 KPX Y Adieresis -110 KPX Y Agrave -110 KPX Y Amacron -110 KPX Y Aogonek -110 KPX Y Aring -110 KPX Y Atilde -110 KPX Y O -70 KPX Y Oacute -70 KPX Y Ocircumflex -70 KPX Y Odieresis -70 KPX Y Ograve -70 KPX Y Ohungarumlaut -70 KPX Y Omacron -70 KPX Y Oslash -70 KPX Y Otilde -70 KPX Y a -90 KPX Y aacute -90 KPX Y abreve -90 KPX Y acircumflex -90 KPX Y adieresis -90 KPX Y agrave -90 KPX Y amacron -90 KPX Y aogonek -90 KPX Y aring -90 KPX Y atilde -90 KPX Y colon -50 KPX Y comma -100 KPX Y e -80 KPX Y eacute -80 KPX Y ecaron -80 KPX Y ecircumflex -80 KPX Y edieresis -80 KPX Y edotaccent -80 KPX Y egrave -80 KPX Y emacron -80 KPX Y eogonek -80 KPX Y o -100 KPX Y oacute -100 KPX Y ocircumflex -100 KPX Y odieresis -100 KPX Y ograve -100 KPX Y ohungarumlaut -100 KPX Y omacron -100 KPX Y oslash -100 KPX Y otilde -100 KPX Y period -100 KPX Y semicolon -50 KPX Y u -100 KPX Y uacute -100 KPX Y ucircumflex -100 KPX Y udieresis -100 KPX Y ugrave -100 KPX Y uhungarumlaut -100 KPX Y umacron -100 KPX Y uogonek -100 KPX Y uring -100 KPX Yacute A -110 KPX Yacute Aacute -110 KPX Yacute Abreve -110 KPX Yacute Acircumflex -110 KPX Yacute Adieresis -110 KPX Yacute Agrave -110 KPX Yacute Amacron -110 KPX Yacute Aogonek -110 KPX Yacute Aring -110 KPX Yacute Atilde -110 KPX Yacute O -70 KPX Yacute Oacute -70 KPX Yacute Ocircumflex -70 KPX Yacute Odieresis -70 KPX Yacute Ograve -70 KPX Yacute Ohungarumlaut -70 KPX Yacute Omacron -70 KPX Yacute Oslash -70 KPX Yacute Otilde -70 KPX Yacute a -90 KPX Yacute aacute -90 KPX Yacute abreve -90 KPX Yacute acircumflex -90 KPX Yacute adieresis -90 KPX Yacute agrave -90 KPX Yacute amacron -90 KPX Yacute aogonek -90 KPX Yacute aring -90 KPX Yacute atilde -90 KPX Yacute colon -50 KPX Yacute comma -100 KPX Yacute e -80 KPX Yacute eacute -80 KPX Yacute ecaron -80 KPX Yacute ecircumflex -80 KPX Yacute edieresis -80 KPX Yacute edotaccent -80 KPX Yacute egrave -80 KPX Yacute emacron -80 KPX Yacute eogonek -80 KPX Yacute o -100 KPX Yacute oacute -100 KPX Yacute ocircumflex -100 KPX Yacute odieresis -100 KPX Yacute ograve -100 KPX Yacute ohungarumlaut -100 KPX Yacute omacron -100 KPX Yacute oslash -100 KPX Yacute otilde -100 KPX Yacute period -100 KPX Yacute semicolon -50 KPX Yacute u -100 KPX Yacute uacute -100 KPX Yacute ucircumflex -100 KPX Yacute udieresis -100 KPX Yacute ugrave -100 KPX Yacute uhungarumlaut -100 KPX Yacute umacron -100 KPX Yacute uogonek -100 KPX Yacute uring -100 KPX Ydieresis A -110 KPX Ydieresis Aacute -110 KPX Ydieresis Abreve -110 KPX Ydieresis Acircumflex -110 KPX Ydieresis Adieresis -110 KPX Ydieresis Agrave -110 KPX Ydieresis Amacron -110 KPX Ydieresis Aogonek -110 KPX Ydieresis Aring -110 KPX Ydieresis Atilde -110 KPX Ydieresis O -70 KPX Ydieresis Oacute -70 KPX Ydieresis Ocircumflex -70 KPX Ydieresis Odieresis -70 KPX Ydieresis Ograve -70 KPX Ydieresis Ohungarumlaut -70 KPX Ydieresis Omacron -70 KPX Ydieresis Oslash -70 KPX Ydieresis Otilde -70 KPX Ydieresis a -90 KPX Ydieresis aacute -90 KPX Ydieresis abreve -90 KPX Ydieresis acircumflex -90 KPX Ydieresis adieresis -90 KPX Ydieresis agrave -90 KPX Ydieresis amacron -90 KPX Ydieresis aogonek -90 KPX Ydieresis aring -90 KPX Ydieresis atilde -90 KPX Ydieresis colon -50 KPX Ydieresis comma -100 KPX Ydieresis e -80 KPX Ydieresis eacute -80 KPX Ydieresis ecaron -80 KPX Ydieresis ecircumflex -80 KPX Ydieresis edieresis -80 KPX Ydieresis edotaccent -80 KPX Ydieresis egrave -80 KPX Ydieresis emacron -80 KPX Ydieresis eogonek -80 KPX Ydieresis o -100 KPX Ydieresis oacute -100 KPX Ydieresis ocircumflex -100 KPX Ydieresis odieresis -100 KPX Ydieresis ograve -100 KPX Ydieresis ohungarumlaut -100 KPX Ydieresis omacron -100 KPX Ydieresis oslash -100 KPX Ydieresis otilde -100 KPX Ydieresis period -100 KPX Ydieresis semicolon -50 KPX Ydieresis u -100 KPX Ydieresis uacute -100 KPX Ydieresis ucircumflex -100 KPX Ydieresis udieresis -100 KPX Ydieresis ugrave -100 KPX Ydieresis uhungarumlaut -100 KPX Ydieresis umacron -100 KPX Ydieresis uogonek -100 KPX Ydieresis uring -100 KPX a g -10 KPX a gbreve -10 KPX a gcommaaccent -10 KPX a v -15 KPX a w -15 KPX a y -20 KPX a yacute -20 KPX a ydieresis -20 KPX aacute g -10 KPX aacute gbreve -10 KPX aacute gcommaaccent -10 KPX aacute v -15 KPX aacute w -15 KPX aacute y -20 KPX aacute yacute -20 KPX aacute ydieresis -20 KPX abreve g -10 KPX abreve gbreve -10 KPX abreve gcommaaccent -10 KPX abreve v -15 KPX abreve w -15 KPX abreve y -20 KPX abreve yacute -20 KPX abreve ydieresis -20 KPX acircumflex g -10 KPX acircumflex gbreve -10 KPX acircumflex gcommaaccent -10 KPX acircumflex v -15 KPX acircumflex w -15 KPX acircumflex y -20 KPX acircumflex yacute -20 KPX acircumflex ydieresis -20 KPX adieresis g -10 KPX adieresis gbreve -10 KPX adieresis gcommaaccent -10 KPX adieresis v -15 KPX adieresis w -15 KPX adieresis y -20 KPX adieresis yacute -20 KPX adieresis ydieresis -20 KPX agrave g -10 KPX agrave gbreve -10 KPX agrave gcommaaccent -10 KPX agrave v -15 KPX agrave w -15 KPX agrave y -20 KPX agrave yacute -20 KPX agrave ydieresis -20 KPX amacron g -10 KPX amacron gbreve -10 KPX amacron gcommaaccent -10 KPX amacron v -15 KPX amacron w -15 KPX amacron y -20 KPX amacron yacute -20 KPX amacron ydieresis -20 KPX aogonek g -10 KPX aogonek gbreve -10 KPX aogonek gcommaaccent -10 KPX aogonek v -15 KPX aogonek w -15 KPX aogonek y -20 KPX aogonek yacute -20 KPX aogonek ydieresis -20 KPX aring g -10 KPX aring gbreve -10 KPX aring gcommaaccent -10 KPX aring v -15 KPX aring w -15 KPX aring y -20 KPX aring yacute -20 KPX aring ydieresis -20 KPX atilde g -10 KPX atilde gbreve -10 KPX atilde gcommaaccent -10 KPX atilde v -15 KPX atilde w -15 KPX atilde y -20 KPX atilde yacute -20 KPX atilde ydieresis -20 KPX b l -10 KPX b lacute -10 KPX b lcommaaccent -10 KPX b lslash -10 KPX b u -20 KPX b uacute -20 KPX b ucircumflex -20 KPX b udieresis -20 KPX b ugrave -20 KPX b uhungarumlaut -20 KPX b umacron -20 KPX b uogonek -20 KPX b uring -20 KPX b v -20 KPX b y -20 KPX b yacute -20 KPX b ydieresis -20 KPX c h -10 KPX c k -20 KPX c kcommaaccent -20 KPX c l -20 KPX c lacute -20 KPX c lcommaaccent -20 KPX c lslash -20 KPX c y -10 KPX c yacute -10 KPX c ydieresis -10 KPX cacute h -10 KPX cacute k -20 KPX cacute kcommaaccent -20 KPX cacute l -20 KPX cacute lacute -20 KPX cacute lcommaaccent -20 KPX cacute lslash -20 KPX cacute y -10 KPX cacute yacute -10 KPX cacute ydieresis -10 KPX ccaron h -10 KPX ccaron k -20 KPX ccaron kcommaaccent -20 KPX ccaron l -20 KPX ccaron lacute -20 KPX ccaron lcommaaccent -20 KPX ccaron lslash -20 KPX ccaron y -10 KPX ccaron yacute -10 KPX ccaron ydieresis -10 KPX ccedilla h -10 KPX ccedilla k -20 KPX ccedilla kcommaaccent -20 KPX ccedilla l -20 KPX ccedilla lacute -20 KPX ccedilla lcommaaccent -20 KPX ccedilla lslash -20 KPX ccedilla y -10 KPX ccedilla yacute -10 KPX ccedilla ydieresis -10 KPX colon space -40 KPX comma quotedblright -120 KPX comma quoteright -120 KPX comma space -40 KPX d d -10 KPX d dcroat -10 KPX d v -15 KPX d w -15 KPX d y -15 KPX d yacute -15 KPX d ydieresis -15 KPX dcroat d -10 KPX dcroat dcroat -10 KPX dcroat v -15 KPX dcroat w -15 KPX dcroat y -15 KPX dcroat yacute -15 KPX dcroat ydieresis -15 KPX e comma 10 KPX e period 20 KPX e v -15 KPX e w -15 KPX e x -15 KPX e y -15 KPX e yacute -15 KPX e ydieresis -15 KPX eacute comma 10 KPX eacute period 20 KPX eacute v -15 KPX eacute w -15 KPX eacute x -15 KPX eacute y -15 KPX eacute yacute -15 KPX eacute ydieresis -15 KPX ecaron comma 10 KPX ecaron period 20 KPX ecaron v -15 KPX ecaron w -15 KPX ecaron x -15 KPX ecaron y -15 KPX ecaron yacute -15 KPX ecaron ydieresis -15 KPX ecircumflex comma 10 KPX ecircumflex period 20 KPX ecircumflex v -15 KPX ecircumflex w -15 KPX ecircumflex x -15 KPX ecircumflex y -15 KPX ecircumflex yacute -15 KPX ecircumflex ydieresis -15 KPX edieresis comma 10 KPX edieresis period 20 KPX edieresis v -15 KPX edieresis w -15 KPX edieresis x -15 KPX edieresis y -15 KPX edieresis yacute -15 KPX edieresis ydieresis -15 KPX edotaccent comma 10 KPX edotaccent period 20 KPX edotaccent v -15 KPX edotaccent w -15 KPX edotaccent x -15 KPX edotaccent y -15 KPX edotaccent yacute -15 KPX edotaccent ydieresis -15 KPX egrave comma 10 KPX egrave period 20 KPX egrave v -15 KPX egrave w -15 KPX egrave x -15 KPX egrave y -15 KPX egrave yacute -15 KPX egrave ydieresis -15 KPX emacron comma 10 KPX emacron period 20 KPX emacron v -15 KPX emacron w -15 KPX emacron x -15 KPX emacron y -15 KPX emacron yacute -15 KPX emacron ydieresis -15 KPX eogonek comma 10 KPX eogonek period 20 KPX eogonek v -15 KPX eogonek w -15 KPX eogonek x -15 KPX eogonek y -15 KPX eogonek yacute -15 KPX eogonek ydieresis -15 KPX f comma -10 KPX f e -10 KPX f eacute -10 KPX f ecaron -10 KPX f ecircumflex -10 KPX f edieresis -10 KPX f edotaccent -10 KPX f egrave -10 KPX f emacron -10 KPX f eogonek -10 KPX f o -20 KPX f oacute -20 KPX f ocircumflex -20 KPX f odieresis -20 KPX f ograve -20 KPX f ohungarumlaut -20 KPX f omacron -20 KPX f oslash -20 KPX f otilde -20 KPX f period -10 KPX f quotedblright 30 KPX f quoteright 30 KPX g e 10 KPX g eacute 10 KPX g ecaron 10 KPX g ecircumflex 10 KPX g edieresis 10 KPX g edotaccent 10 KPX g egrave 10 KPX g emacron 10 KPX g eogonek 10 KPX g g -10 KPX g gbreve -10 KPX g gcommaaccent -10 KPX gbreve e 10 KPX gbreve eacute 10 KPX gbreve ecaron 10 KPX gbreve ecircumflex 10 KPX gbreve edieresis 10 KPX gbreve edotaccent 10 KPX gbreve egrave 10 KPX gbreve emacron 10 KPX gbreve eogonek 10 KPX gbreve g -10 KPX gbreve gbreve -10 KPX gbreve gcommaaccent -10 KPX gcommaaccent e 10 KPX gcommaaccent eacute 10 KPX gcommaaccent ecaron 10 KPX gcommaaccent ecircumflex 10 KPX gcommaaccent edieresis 10 KPX gcommaaccent edotaccent 10 KPX gcommaaccent egrave 10 KPX gcommaaccent emacron 10 KPX gcommaaccent eogonek 10 KPX gcommaaccent g -10 KPX gcommaaccent gbreve -10 KPX gcommaaccent gcommaaccent -10 KPX h y -20 KPX h yacute -20 KPX h ydieresis -20 KPX k o -15 KPX k oacute -15 KPX k ocircumflex -15 KPX k odieresis -15 KPX k ograve -15 KPX k ohungarumlaut -15 KPX k omacron -15 KPX k oslash -15 KPX k otilde -15 KPX kcommaaccent o -15 KPX kcommaaccent oacute -15 KPX kcommaaccent ocircumflex -15 KPX kcommaaccent odieresis -15 KPX kcommaaccent ograve -15 KPX kcommaaccent ohungarumlaut -15 KPX kcommaaccent omacron -15 KPX kcommaaccent oslash -15 KPX kcommaaccent otilde -15 KPX l w -15 KPX l y -15 KPX l yacute -15 KPX l ydieresis -15 KPX lacute w -15 KPX lacute y -15 KPX lacute yacute -15 KPX lacute ydieresis -15 KPX lcommaaccent w -15 KPX lcommaaccent y -15 KPX lcommaaccent yacute -15 KPX lcommaaccent ydieresis -15 KPX lslash w -15 KPX lslash y -15 KPX lslash yacute -15 KPX lslash ydieresis -15 KPX m u -20 KPX m uacute -20 KPX m ucircumflex -20 KPX m udieresis -20 KPX m ugrave -20 KPX m uhungarumlaut -20 KPX m umacron -20 KPX m uogonek -20 KPX m uring -20 KPX m y -30 KPX m yacute -30 KPX m ydieresis -30 KPX n u -10 KPX n uacute -10 KPX n ucircumflex -10 KPX n udieresis -10 KPX n ugrave -10 KPX n uhungarumlaut -10 KPX n umacron -10 KPX n uogonek -10 KPX n uring -10 KPX n v -40 KPX n y -20 KPX n yacute -20 KPX n ydieresis -20 KPX nacute u -10 KPX nacute uacute -10 KPX nacute ucircumflex -10 KPX nacute udieresis -10 KPX nacute ugrave -10 KPX nacute uhungarumlaut -10 KPX nacute umacron -10 KPX nacute uogonek -10 KPX nacute uring -10 KPX nacute v -40 KPX nacute y -20 KPX nacute yacute -20 KPX nacute ydieresis -20 KPX ncaron u -10 KPX ncaron uacute -10 KPX ncaron ucircumflex -10 KPX ncaron udieresis -10 KPX ncaron ugrave -10 KPX ncaron uhungarumlaut -10 KPX ncaron umacron -10 KPX ncaron uogonek -10 KPX ncaron uring -10 KPX ncaron v -40 KPX ncaron y -20 KPX ncaron yacute -20 KPX ncaron ydieresis -20 KPX ncommaaccent u -10 KPX ncommaaccent uacute -10 KPX ncommaaccent ucircumflex -10 KPX ncommaaccent udieresis -10 KPX ncommaaccent ugrave -10 KPX ncommaaccent uhungarumlaut -10 KPX ncommaaccent umacron -10 KPX ncommaaccent uogonek -10 KPX ncommaaccent uring -10 KPX ncommaaccent v -40 KPX ncommaaccent y -20 KPX ncommaaccent yacute -20 KPX ncommaaccent ydieresis -20 KPX ntilde u -10 KPX ntilde uacute -10 KPX ntilde ucircumflex -10 KPX ntilde udieresis -10 KPX ntilde ugrave -10 KPX ntilde uhungarumlaut -10 KPX ntilde umacron -10 KPX ntilde uogonek -10 KPX ntilde uring -10 KPX ntilde v -40 KPX ntilde y -20 KPX ntilde yacute -20 KPX ntilde ydieresis -20 KPX o v -20 KPX o w -15 KPX o x -30 KPX o y -20 KPX o yacute -20 KPX o ydieresis -20 KPX oacute v -20 KPX oacute w -15 KPX oacute x -30 KPX oacute y -20 KPX oacute yacute -20 KPX oacute ydieresis -20 KPX ocircumflex v -20 KPX ocircumflex w -15 KPX ocircumflex x -30 KPX ocircumflex y -20 KPX ocircumflex yacute -20 KPX ocircumflex ydieresis -20 KPX odieresis v -20 KPX odieresis w -15 KPX odieresis x -30 KPX odieresis y -20 KPX odieresis yacute -20 KPX odieresis ydieresis -20 KPX ograve v -20 KPX ograve w -15 KPX ograve x -30 KPX ograve y -20 KPX ograve yacute -20 KPX ograve ydieresis -20 KPX ohungarumlaut v -20 KPX ohungarumlaut w -15 KPX ohungarumlaut x -30 KPX ohungarumlaut y -20 KPX ohungarumlaut yacute -20 KPX ohungarumlaut ydieresis -20 KPX omacron v -20 KPX omacron w -15 KPX omacron x -30 KPX omacron y -20 KPX omacron yacute -20 KPX omacron ydieresis -20 KPX oslash v -20 KPX oslash w -15 KPX oslash x -30 KPX oslash y -20 KPX oslash yacute -20 KPX oslash ydieresis -20 KPX otilde v -20 KPX otilde w -15 KPX otilde x -30 KPX otilde y -20 KPX otilde yacute -20 KPX otilde ydieresis -20 KPX p y -15 KPX p yacute -15 KPX p ydieresis -15 KPX period quotedblright -120 KPX period quoteright -120 KPX period space -40 KPX quotedblright space -80 KPX quoteleft quoteleft -46 KPX quoteright d -80 KPX quoteright dcroat -80 KPX quoteright l -20 KPX quoteright lacute -20 KPX quoteright lcommaaccent -20 KPX quoteright lslash -20 KPX quoteright quoteright -46 KPX quoteright r -40 KPX quoteright racute -40 KPX quoteright rcaron -40 KPX quoteright rcommaaccent -40 KPX quoteright s -60 KPX quoteright sacute -60 KPX quoteright scaron -60 KPX quoteright scedilla -60 KPX quoteright scommaaccent -60 KPX quoteright space -80 KPX quoteright v -20 KPX r c -20 KPX r cacute -20 KPX r ccaron -20 KPX r ccedilla -20 KPX r comma -60 KPX r d -20 KPX r dcroat -20 KPX r g -15 KPX r gbreve -15 KPX r gcommaaccent -15 KPX r hyphen -20 KPX r o -20 KPX r oacute -20 KPX r ocircumflex -20 KPX r odieresis -20 KPX r ograve -20 KPX r ohungarumlaut -20 KPX r omacron -20 KPX r oslash -20 KPX r otilde -20 KPX r period -60 KPX r q -20 KPX r s -15 KPX r sacute -15 KPX r scaron -15 KPX r scedilla -15 KPX r scommaaccent -15 KPX r t 20 KPX r tcommaaccent 20 KPX r v 10 KPX r y 10 KPX r yacute 10 KPX r ydieresis 10 KPX racute c -20 KPX racute cacute -20 KPX racute ccaron -20 KPX racute ccedilla -20 KPX racute comma -60 KPX racute d -20 KPX racute dcroat -20 KPX racute g -15 KPX racute gbreve -15 KPX racute gcommaaccent -15 KPX racute hyphen -20 KPX racute o -20 KPX racute oacute -20 KPX racute ocircumflex -20 KPX racute odieresis -20 KPX racute ograve -20 KPX racute ohungarumlaut -20 KPX racute omacron -20 KPX racute oslash -20 KPX racute otilde -20 KPX racute period -60 KPX racute q -20 KPX racute s -15 KPX racute sacute -15 KPX racute scaron -15 KPX racute scedilla -15 KPX racute scommaaccent -15 KPX racute t 20 KPX racute tcommaaccent 20 KPX racute v 10 KPX racute y 10 KPX racute yacute 10 KPX racute ydieresis 10 KPX rcaron c -20 KPX rcaron cacute -20 KPX rcaron ccaron -20 KPX rcaron ccedilla -20 KPX rcaron comma -60 KPX rcaron d -20 KPX rcaron dcroat -20 KPX rcaron g -15 KPX rcaron gbreve -15 KPX rcaron gcommaaccent -15 KPX rcaron hyphen -20 KPX rcaron o -20 KPX rcaron oacute -20 KPX rcaron ocircumflex -20 KPX rcaron odieresis -20 KPX rcaron ograve -20 KPX rcaron ohungarumlaut -20 KPX rcaron omacron -20 KPX rcaron oslash -20 KPX rcaron otilde -20 KPX rcaron period -60 KPX rcaron q -20 KPX rcaron s -15 KPX rcaron sacute -15 KPX rcaron scaron -15 KPX rcaron scedilla -15 KPX rcaron scommaaccent -15 KPX rcaron t 20 KPX rcaron tcommaaccent 20 KPX rcaron v 10 KPX rcaron y 10 KPX rcaron yacute 10 KPX rcaron ydieresis 10 KPX rcommaaccent c -20 KPX rcommaaccent cacute -20 KPX rcommaaccent ccaron -20 KPX rcommaaccent ccedilla -20 KPX rcommaaccent comma -60 KPX rcommaaccent d -20 KPX rcommaaccent dcroat -20 KPX rcommaaccent g -15 KPX rcommaaccent gbreve -15 KPX rcommaaccent gcommaaccent -15 KPX rcommaaccent hyphen -20 KPX rcommaaccent o -20 KPX rcommaaccent oacute -20 KPX rcommaaccent ocircumflex -20 KPX rcommaaccent odieresis -20 KPX rcommaaccent ograve -20 KPX rcommaaccent ohungarumlaut -20 KPX rcommaaccent omacron -20 KPX rcommaaccent oslash -20 KPX rcommaaccent otilde -20 KPX rcommaaccent period -60 KPX rcommaaccent q -20 KPX rcommaaccent s -15 KPX rcommaaccent sacute -15 KPX rcommaaccent scaron -15 KPX rcommaaccent scedilla -15 KPX rcommaaccent scommaaccent -15 KPX rcommaaccent t 20 KPX rcommaaccent tcommaaccent 20 KPX rcommaaccent v 10 KPX rcommaaccent y 10 KPX rcommaaccent yacute 10 KPX rcommaaccent ydieresis 10 KPX s w -15 KPX sacute w -15 KPX scaron w -15 KPX scedilla w -15 KPX scommaaccent w -15 KPX semicolon space -40 KPX space T -100 KPX space Tcaron -100 KPX space Tcommaaccent -100 KPX space V -80 KPX space W -80 KPX space Y -120 KPX space Yacute -120 KPX space Ydieresis -120 KPX space quotedblleft -80 KPX space quoteleft -60 KPX v a -20 KPX v aacute -20 KPX v abreve -20 KPX v acircumflex -20 KPX v adieresis -20 KPX v agrave -20 KPX v amacron -20 KPX v aogonek -20 KPX v aring -20 KPX v atilde -20 KPX v comma -80 KPX v o -30 KPX v oacute -30 KPX v ocircumflex -30 KPX v odieresis -30 KPX v ograve -30 KPX v ohungarumlaut -30 KPX v omacron -30 KPX v oslash -30 KPX v otilde -30 KPX v period -80 KPX w comma -40 KPX w o -20 KPX w oacute -20 KPX w ocircumflex -20 KPX w odieresis -20 KPX w ograve -20 KPX w ohungarumlaut -20 KPX w omacron -20 KPX w oslash -20 KPX w otilde -20 KPX w period -40 KPX x e -10 KPX x eacute -10 KPX x ecaron -10 KPX x ecircumflex -10 KPX x edieresis -10 KPX x edotaccent -10 KPX x egrave -10 KPX x emacron -10 KPX x eogonek -10 KPX y a -30 KPX y aacute -30 KPX y abreve -30 KPX y acircumflex -30 KPX y adieresis -30 KPX y agrave -30 KPX y amacron -30 KPX y aogonek -30 KPX y aring -30 KPX y atilde -30 KPX y comma -80 KPX y e -10 KPX y eacute -10 KPX y ecaron -10 KPX y ecircumflex -10 KPX y edieresis -10 KPX y edotaccent -10 KPX y egrave -10 KPX y emacron -10 KPX y eogonek -10 KPX y o -25 KPX y oacute -25 KPX y ocircumflex -25 KPX y odieresis -25 KPX y ograve -25 KPX y ohungarumlaut -25 KPX y omacron -25 KPX y oslash -25 KPX y otilde -25 KPX y period -80 KPX yacute a -30 KPX yacute aacute -30 KPX yacute abreve -30 KPX yacute acircumflex -30 KPX yacute adieresis -30 KPX yacute agrave -30 KPX yacute amacron -30 KPX yacute aogonek -30 KPX yacute aring -30 KPX yacute atilde -30 KPX yacute comma -80 KPX yacute e -10 KPX yacute eacute -10 KPX yacute ecaron -10 KPX yacute ecircumflex -10 KPX yacute edieresis -10 KPX yacute edotaccent -10 KPX yacute egrave -10 KPX yacute emacron -10 KPX yacute eogonek -10 KPX yacute o -25 KPX yacute oacute -25 KPX yacute ocircumflex -25 KPX yacute odieresis -25 KPX yacute ograve -25 KPX yacute ohungarumlaut -25 KPX yacute omacron -25 KPX yacute oslash -25 KPX yacute otilde -25 KPX yacute period -80 KPX ydieresis a -30 KPX ydieresis aacute -30 KPX ydieresis abreve -30 KPX ydieresis acircumflex -30 KPX ydieresis adieresis -30 KPX ydieresis agrave -30 KPX ydieresis amacron -30 KPX ydieresis aogonek -30 KPX ydieresis aring -30 KPX ydieresis atilde -30 KPX ydieresis comma -80 KPX ydieresis e -10 KPX ydieresis eacute -10 KPX ydieresis ecaron -10 KPX ydieresis ecircumflex -10 KPX ydieresis edieresis -10 KPX ydieresis edotaccent -10 KPX ydieresis egrave -10 KPX ydieresis emacron -10 KPX ydieresis eogonek -10 KPX ydieresis o -25 KPX ydieresis oacute -25 KPX ydieresis ocircumflex -25 KPX ydieresis odieresis -25 KPX ydieresis ograve -25 KPX ydieresis ohungarumlaut -25 KPX ydieresis omacron -25 KPX ydieresis oslash -25 KPX ydieresis otilde -25 KPX ydieresis period -80 KPX z e 10 KPX z eacute 10 KPX z ecaron 10 KPX z ecircumflex 10 KPX z edieresis 10 KPX z edotaccent 10 KPX z egrave 10 KPX z emacron 10 KPX z eogonek 10 KPX zacute e 10 KPX zacute eacute 10 KPX zacute ecaron 10 KPX zacute ecircumflex 10 KPX zacute edieresis 10 KPX zacute edotaccent 10 KPX zacute egrave 10 KPX zacute emacron 10 KPX zacute eogonek 10 KPX zcaron e 10 KPX zcaron eacute 10 KPX zcaron ecaron 10 KPX zcaron ecircumflex 10 KPX zcaron edieresis 10 KPX zcaron edotaccent 10 KPX zcaron egrave 10 KPX zcaron emacron 10 KPX zcaron eogonek 10 KPX zdotaccent e 10 KPX zdotaccent eacute 10 KPX zdotaccent ecaron 10 KPX zdotaccent ecircumflex 10 KPX zdotaccent edieresis 10 KPX zdotaccent edotaccent 10 KPX zdotaccent egrave 10 KPX zdotaccent emacron 10 KPX zdotaccent eogonek 10 EndKernPairs EndKernData EndFontMetrics gle-graphics-4.2.4c/src/fonts/Adobe-Core35_AFMs-314/ITCZapfChancery-MediumItalic.afm0000664000000000000000000012126111405446017026047 0ustar rootrootStartFontMetrics 4.1 Comment Copyright (c) 1985, 1987, 1989, 1990, 1997 Adobe Systems Incorporated. All Rights Reserved. Comment Creation Date: Thu May 1 15:04:18 1997 Comment UniqueID 43081 Comment VMusage 45650 56675 FontName ZapfChancery-MediumItalic FullName ITC Zapf Chancery Medium Italic FamilyName ITC Zapf Chancery Weight Medium ItalicAngle -14 IsFixedPitch false FontBBox -181 -314 1065 831 UnderlinePosition -100 UnderlineThickness 50 Version 002.000 Notice Copyright (c) 1985, 1987, 1989, 1990, 1997 Adobe Systems Incorporated. All Rights Reserved.ITC Zapf Chancery is a registered trademark of International Typeface Corporation. EncodingScheme AdobeStandardEncoding CapHeight 708 XHeight 438 Ascender 714 Descender -314 StdHW 34 StdVW 70 StartCharMetrics 314 C 32 ; WX 220 ; N space ; B 0 0 0 0 ; C 33 ; WX 280 ; N exclam ; B 119 -14 353 610 ; C 34 ; WX 220 ; N quotedbl ; B 120 343 333 610 ; C 35 ; WX 440 ; N numbersign ; B 83 0 521 594 ; C 36 ; WX 440 ; N dollar ; B 60 -144 508 709 ; C 37 ; WX 680 ; N percent ; B 132 -160 710 700 ; C 38 ; WX 780 ; N ampersand ; B 126 -16 915 610 ; C 39 ; WX 240 ; N quoteright ; B 168 343 338 610 ; C 40 ; WX 260 ; N parenleft ; B 96 -216 411 664 ; C 41 ; WX 220 ; N parenright ; B -13 -216 302 664 ; C 42 ; WX 420 ; N asterisk ; B 139 263 479 610 ; C 43 ; WX 520 ; N plus ; B 117 0 543 426 ; C 44 ; WX 220 ; N comma ; B 25 -140 213 148 ; C 45 ; WX 280 ; N hyphen ; B 69 190 334 248 ; C 46 ; WX 220 ; N period ; B 102 -14 228 128 ; C 47 ; WX 340 ; N slash ; B 74 -16 458 610 ; C 48 ; WX 440 ; N zero ; B 79 -16 538 610 ; C 49 ; WX 440 ; N one ; B 41 0 428 610 ; C 50 ; WX 440 ; N two ; B 17 -16 485 610 ; C 51 ; WX 440 ; N three ; B 1 -16 485 610 ; C 52 ; WX 440 ; N four ; B 77 -35 499 610 ; C 53 ; WX 440 ; N five ; B 60 -16 595 679 ; C 54 ; WX 440 ; N six ; B 90 -16 556 610 ; C 55 ; WX 440 ; N seven ; B 157 -33 561 645 ; C 56 ; WX 440 ; N eight ; B 65 -16 529 610 ; C 57 ; WX 440 ; N nine ; B 32 -16 517 610 ; C 58 ; WX 260 ; N colon ; B 98 -14 296 438 ; C 59 ; WX 240 ; N semicolon ; B 29 -140 299 438 ; C 60 ; WX 520 ; N less ; B 139 0 527 468 ; C 61 ; WX 520 ; N equal ; B 117 86 543 340 ; C 62 ; WX 520 ; N greater ; B 139 0 527 468 ; C 63 ; WX 380 ; N question ; B 150 -14 455 610 ; C 64 ; WX 700 ; N at ; B 127 -16 753 610 ; C 65 ; WX 620 ; N A ; B 13 -16 697 632 ; C 66 ; WX 600 ; N B ; B 85 -6 674 640 ; C 67 ; WX 520 ; N C ; B 93 -16 631 610 ; C 68 ; WX 700 ; N D ; B 86 -6 768 640 ; C 69 ; WX 620 ; N E ; B 91 -12 709 618 ; C 70 ; WX 580 ; N F ; B 120 -118 793 629 ; C 71 ; WX 620 ; N G ; B 148 -242 709 610 ; C 72 ; WX 680 ; N H ; B 18 -16 878 708 ; C 73 ; WX 380 ; N I ; B 99 0 504 594 ; C 74 ; WX 400 ; N J ; B -14 -147 538 594 ; C 75 ; WX 660 ; N K ; B 53 -153 844 610 ; C 76 ; WX 580 ; N L ; B 53 -16 657 610 ; C 77 ; WX 840 ; N M ; B 58 -16 1020 722 ; C 78 ; WX 700 ; N N ; B 85 -168 915 708 ; C 79 ; WX 600 ; N O ; B 94 -16 660 610 ; C 80 ; WX 540 ; N P ; B 42 0 658 628 ; C 81 ; WX 600 ; N Q ; B 84 -177 775 610 ; C 82 ; WX 600 ; N R ; B 58 -168 805 640 ; C 83 ; WX 460 ; N S ; B 45 -81 558 610 ; C 84 ; WX 500 ; N T ; B 63 0 744 667 ; C 85 ; WX 740 ; N U ; B 126 -16 792 617 ; C 86 ; WX 640 ; N V ; B 124 -16 810 714 ; C 87 ; WX 880 ; N W ; B 94 -16 1046 723 ; C 88 ; WX 560 ; N X ; B -30 -16 699 610 ; C 89 ; WX 560 ; N Y ; B 41 -168 774 647 ; C 90 ; WX 620 ; N Z ; B 42 -19 669 624 ; C 91 ; WX 240 ; N bracketleft ; B -13 -207 405 655 ; C 92 ; WX 480 ; N backslash ; B 140 -16 524 610 ; C 93 ; WX 320 ; N bracketright ; B -27 -207 391 655 ; C 94 ; WX 520 ; N asciicircum ; B 132 239 532 594 ; C 95 ; WX 500 ; N underscore ; B 0 -125 500 -75 ; C 96 ; WX 240 ; N quoteleft ; B 169 343 339 610 ; C 97 ; WX 420 ; N a ; B 92 -15 485 438 ; C 98 ; WX 420 ; N b ; B 82 -23 492 714 ; C 99 ; WX 340 ; N c ; B 87 -14 406 438 ; C 100 ; WX 440 ; N d ; B 102 -14 651 714 ; C 101 ; WX 340 ; N e ; B 87 -14 403 438 ; C 102 ; WX 320 ; N f ; B -119 -314 547 714 ; L i fi ; L l fl ; C 103 ; WX 400 ; N g ; B -108 -314 503 438 ; C 104 ; WX 440 ; N h ; B 55 -14 524 714 ; C 105 ; WX 240 ; N i ; B 100 -14 341 635 ; C 106 ; WX 220 ; N j ; B -112 -314 332 635 ; C 107 ; WX 440 ; N k ; B 87 -184 628 714 ; C 108 ; WX 240 ; N l ; B 102 -14 480 714 ; C 109 ; WX 620 ; N m ; B 86 -14 704 438 ; C 110 ; WX 460 ; N n ; B 101 -14 544 438 ; C 111 ; WX 400 ; N o ; B 87 -14 449 438 ; C 112 ; WX 440 ; N p ; B -23 -314 484 432 ; C 113 ; WX 400 ; N q ; B 87 -300 490 510 ; C 114 ; WX 300 ; N r ; B 101 -14 424 438 ; C 115 ; WX 320 ; N s ; B 46 -14 403 438 ; C 116 ; WX 320 ; N t ; B 106 -14 426 539 ; C 117 ; WX 460 ; N u ; B 102 -14 528 438 ; C 118 ; WX 440 ; N v ; B 87 -14 533 488 ; C 119 ; WX 680 ; N w ; B 87 -14 782 488 ; C 120 ; WX 420 ; N x ; B 70 -195 589 438 ; C 121 ; WX 400 ; N y ; B -24 -314 483 438 ; C 122 ; WX 440 ; N z ; B 26 -14 508 445 ; C 123 ; WX 240 ; N braceleft ; B 55 -207 383 655 ; C 124 ; WX 520 ; N bar ; B 320 -250 378 750 ; C 125 ; WX 240 ; N braceright ; B -10 -207 318 655 ; C 126 ; WX 520 ; N asciitilde ; B 123 186 539 320 ; C 161 ; WX 280 ; N exclamdown ; B 72 -186 306 438 ; C 162 ; WX 440 ; N cent ; B 122 -134 476 543 ; C 163 ; WX 440 ; N sterling ; B -16 -52 506 610 ; C 164 ; WX 60 ; N fraction ; B -181 -16 320 610 ; C 165 ; WX 440 ; N yen ; B -1 -168 613 647 ; C 166 ; WX 440 ; N florin ; B -64 -314 582 610 ; C 167 ; WX 420 ; N section ; B 53 -215 514 610 ; C 168 ; WX 440 ; N currency ; B 50 85 474 509 ; C 169 ; WX 160 ; N quotesingle ; B 145 343 215 610 ; C 170 ; WX 340 ; N quotedblleft ; B 169 343 464 610 ; C 171 ; WX 340 ; N guillemotleft ; B 98 24 356 414 ; C 172 ; WX 240 ; N guilsinglleft ; B 98 24 258 414 ; C 173 ; WX 260 ; N guilsinglright ; B 106 24 266 414 ; C 174 ; WX 520 ; N fi ; B -124 -314 605 714 ; C 175 ; WX 520 ; N fl ; B -124 -314 670 714 ; C 177 ; WX 500 ; N endash ; B 51 199 565 239 ; C 178 ; WX 460 ; N dagger ; B 138 -37 568 610 ; C 179 ; WX 480 ; N daggerdbl ; B 138 -59 533 610 ; C 180 ; WX 220 ; N periodcentered ; B 139 208 241 310 ; C 182 ; WX 500 ; N paragraph ; B 105 -199 638 594 ; C 183 ; WX 600 ; N bullet ; B 228 149 524 445 ; C 184 ; WX 180 ; N quotesinglbase ; B 21 -121 191 146 ; C 185 ; WX 280 ; N quotedblbase ; B -14 -121 281 146 ; C 186 ; WX 360 ; N quotedblright ; B 158 343 453 610 ; C 187 ; WX 380 ; N guillemotright ; B 117 24 375 414 ; C 188 ; WX 1000 ; N ellipsis ; B 124 -14 916 128 ; C 189 ; WX 960 ; N perthousand ; B 112 -160 1005 700 ; C 191 ; WX 400 ; N questiondown ; B 82 -186 387 438 ; C 193 ; WX 220 ; N grave ; B 193 492 339 659 ; C 194 ; WX 300 ; N acute ; B 265 492 422 659 ; C 195 ; WX 340 ; N circumflex ; B 223 482 443 649 ; C 196 ; WX 440 ; N tilde ; B 243 543 522 619 ; C 197 ; WX 440 ; N macron ; B 292 544 537 584 ; C 198 ; WX 440 ; N breve ; B 253 522 501 631 ; C 199 ; WX 220 ; N dotaccent ; B 236 515 342 635 ; C 200 ; WX 360 ; N dieresis ; B 233 515 503 635 ; C 202 ; WX 300 ; N ring ; B 240 483 416 659 ; C 203 ; WX 300 ; N cedilla ; B 12 -191 184 6 ; C 205 ; WX 400 ; N hungarumlaut ; B 208 492 495 659 ; C 206 ; WX 280 ; N ogonek ; B 114 -191 320 40 ; C 207 ; WX 340 ; N caron ; B 254 492 474 659 ; C 208 ; WX 1000 ; N emdash ; B 51 199 1065 239 ; C 225 ; WX 740 ; N AE ; B -21 -16 799 594 ; C 227 ; WX 260 ; N ordfeminine ; B 111 338 386 610 ; C 232 ; WX 580 ; N Lslash ; B 49 -16 657 610 ; C 233 ; WX 660 ; N Oslash ; B 83 -78 751 672 ; C 234 ; WX 820 ; N OE ; B 63 -16 909 610 ; C 235 ; WX 260 ; N ordmasculine ; B 128 339 373 610 ; C 241 ; WX 540 ; N ae ; B 67 -14 624 468 ; C 245 ; WX 240 ; N dotlessi ; B 100 -14 306 438 ; C 248 ; WX 300 ; N lslash ; B 74 -14 480 714 ; C 249 ; WX 440 ; N oslash ; B 46 -64 540 488 ; C 250 ; WX 560 ; N oe ; B 78 -14 628 438 ; C 251 ; WX 420 ; N germandbls ; B -127 -314 542 714 ; C -1 ; WX 380 ; N Idieresis ; B 99 0 553 762 ; C -1 ; WX 340 ; N eacute ; B 87 -14 462 659 ; C -1 ; WX 420 ; N abreve ; B 92 -15 501 631 ; C -1 ; WX 460 ; N uhungarumlaut ; B 102 -14 565 659 ; C -1 ; WX 340 ; N ecaron ; B 87 -14 474 659 ; C -1 ; WX 560 ; N Ydieresis ; B 41 -168 774 762 ; C -1 ; WX 520 ; N divide ; B 117 -14 543 440 ; C -1 ; WX 560 ; N Yacute ; B 41 -168 774 821 ; C -1 ; WX 620 ; N Acircumflex ; B 13 -16 697 821 ; C -1 ; WX 420 ; N aacute ; B 92 -15 492 659 ; C -1 ; WX 740 ; N Ucircumflex ; B 126 -16 792 821 ; C -1 ; WX 400 ; N yacute ; B -24 -314 483 659 ; C -1 ; WX 320 ; N scommaaccent ; B 42 -304 403 438 ; C -1 ; WX 340 ; N ecircumflex ; B 87 -14 433 649 ; C -1 ; WX 740 ; N Uring ; B 126 -16 792 831 ; C -1 ; WX 740 ; N Udieresis ; B 126 -16 792 762 ; C -1 ; WX 420 ; N aogonek ; B 92 -191 485 438 ; C -1 ; WX 740 ; N Uacute ; B 126 -16 792 821 ; C -1 ; WX 460 ; N uogonek ; B 102 -178 528 438 ; C -1 ; WX 620 ; N Edieresis ; B 91 -12 709 762 ; C -1 ; WX 700 ; N Dcroat ; B 86 -6 768 640 ; C -1 ; WX 180 ; N commaaccent ; B 52 -304 201 -72 ; C -1 ; WX 740 ; N copyright ; B 137 -16 763 610 ; C -1 ; WX 620 ; N Emacron ; B 91 -12 709 746 ; C -1 ; WX 340 ; N ccaron ; B 87 -14 474 659 ; C -1 ; WX 420 ; N aring ; B 92 -15 485 659 ; C -1 ; WX 700 ; N Ncommaaccent ; B 85 -274 915 708 ; C -1 ; WX 240 ; N lacute ; B 102 -14 522 831 ; C -1 ; WX 420 ; N agrave ; B 92 -15 485 659 ; C -1 ; WX 500 ; N Tcommaaccent ; B 63 -304 744 667 ; C -1 ; WX 520 ; N Cacute ; B 93 -16 631 821 ; C -1 ; WX 420 ; N atilde ; B 92 -15 522 619 ; C -1 ; WX 620 ; N Edotaccent ; B 91 -12 709 762 ; C -1 ; WX 320 ; N scaron ; B 46 -14 464 659 ; C -1 ; WX 320 ; N scedilla ; B 42 -191 403 438 ; C -1 ; WX 240 ; N iacute ; B 100 -14 392 659 ; C -1 ; WX 471 ; N lozenge ; B 15 0 457 719 ; C -1 ; WX 600 ; N Rcaron ; B 58 -168 805 821 ; C -1 ; WX 620 ; N Gcommaaccent ; B 148 -304 709 610 ; C -1 ; WX 460 ; N ucircumflex ; B 102 -14 528 649 ; C -1 ; WX 420 ; N acircumflex ; B 92 -15 485 649 ; C -1 ; WX 620 ; N Amacron ; B 13 -16 717 746 ; C -1 ; WX 300 ; N rcaron ; B 101 -14 444 659 ; C -1 ; WX 340 ; N ccedilla ; B 62 -191 406 438 ; C -1 ; WX 620 ; N Zdotaccent ; B 42 -19 669 762 ; C -1 ; WX 540 ; N Thorn ; B 52 0 647 623 ; C -1 ; WX 600 ; N Omacron ; B 94 -16 660 746 ; C -1 ; WX 600 ; N Racute ; B 58 -168 805 821 ; C -1 ; WX 460 ; N Sacute ; B 45 -81 558 821 ; C -1 ; WX 490 ; N dcaron ; B 102 -14 651 714 ; C -1 ; WX 740 ; N Umacron ; B 126 -16 792 746 ; C -1 ; WX 460 ; N uring ; B 102 -14 528 659 ; C -1 ; WX 264 ; N threesuperior ; B 59 234 348 610 ; C -1 ; WX 600 ; N Ograve ; B 94 -16 660 821 ; C -1 ; WX 620 ; N Agrave ; B 13 -16 697 821 ; C -1 ; WX 620 ; N Abreve ; B 13 -16 761 793 ; C -1 ; WX 520 ; N multiply ; B 133 16 527 410 ; C -1 ; WX 460 ; N uacute ; B 102 -14 528 659 ; C -1 ; WX 500 ; N Tcaron ; B 63 0 744 821 ; C -1 ; WX 476 ; N partialdiff ; B 17 -38 459 710 ; C -1 ; WX 400 ; N ydieresis ; B -24 -314 503 610 ; C -1 ; WX 700 ; N Nacute ; B 85 -168 915 821 ; C -1 ; WX 240 ; N icircumflex ; B 100 -14 363 649 ; C -1 ; WX 620 ; N Ecircumflex ; B 91 -12 709 821 ; C -1 ; WX 420 ; N adieresis ; B 92 -15 513 610 ; C -1 ; WX 340 ; N edieresis ; B 87 -14 483 610 ; C -1 ; WX 340 ; N cacute ; B 87 -14 452 659 ; C -1 ; WX 460 ; N nacute ; B 101 -14 544 659 ; C -1 ; WX 460 ; N umacron ; B 102 -14 528 584 ; C -1 ; WX 700 ; N Ncaron ; B 85 -168 915 821 ; C -1 ; WX 380 ; N Iacute ; B 99 0 532 821 ; C -1 ; WX 520 ; N plusminus ; B 117 0 543 436 ; C -1 ; WX 520 ; N brokenbar ; B 320 -175 378 675 ; C -1 ; WX 740 ; N registered ; B 137 -16 763 610 ; C -1 ; WX 620 ; N Gbreve ; B 148 -242 709 793 ; C -1 ; WX 380 ; N Idotaccent ; B 99 0 504 762 ; C -1 ; WX 600 ; N summation ; B 15 -10 585 706 ; C -1 ; WX 620 ; N Egrave ; B 91 -12 709 821 ; C -1 ; WX 300 ; N racute ; B 101 -14 442 659 ; C -1 ; WX 400 ; N omacron ; B 87 -14 507 584 ; C -1 ; WX 620 ; N Zacute ; B 42 -19 669 821 ; C -1 ; WX 620 ; N Zcaron ; B 42 -19 669 821 ; C -1 ; WX 549 ; N greaterequal ; B 26 0 523 658 ; C -1 ; WX 700 ; N Eth ; B 86 -6 768 640 ; C -1 ; WX 520 ; N Ccedilla ; B 93 -191 631 610 ; C -1 ; WX 240 ; N lcommaaccent ; B 42 -304 480 714 ; C -1 ; WX 320 ; N tcaron ; B 106 -14 501 678 ; C -1 ; WX 340 ; N eogonek ; B 87 -191 403 438 ; C -1 ; WX 740 ; N Uogonek ; B 126 -191 792 617 ; C -1 ; WX 620 ; N Aacute ; B 13 -16 702 821 ; C -1 ; WX 620 ; N Adieresis ; B 13 -16 743 762 ; C -1 ; WX 340 ; N egrave ; B 87 -14 403 659 ; C -1 ; WX 440 ; N zacute ; B 26 -14 512 659 ; C -1 ; WX 240 ; N iogonek ; B 94 -191 341 635 ; C -1 ; WX 600 ; N Oacute ; B 94 -16 660 821 ; C -1 ; WX 400 ; N oacute ; B 87 -14 482 659 ; C -1 ; WX 420 ; N amacron ; B 92 -15 507 584 ; C -1 ; WX 320 ; N sacute ; B 46 -14 442 659 ; C -1 ; WX 240 ; N idieresis ; B 100 -14 403 610 ; C -1 ; WX 600 ; N Ocircumflex ; B 94 -16 660 821 ; C -1 ; WX 740 ; N Ugrave ; B 126 -16 792 821 ; C -1 ; WX 612 ; N Delta ; B 6 0 608 688 ; C -1 ; WX 440 ; N thorn ; B -38 -314 505 714 ; C -1 ; WX 264 ; N twosuperior ; B 72 234 354 610 ; C -1 ; WX 600 ; N Odieresis ; B 94 -16 660 762 ; C -1 ; WX 460 ; N mu ; B 7 -314 523 438 ; C -1 ; WX 240 ; N igrave ; B 100 -14 306 659 ; C -1 ; WX 400 ; N ohungarumlaut ; B 87 -14 535 659 ; C -1 ; WX 620 ; N Eogonek ; B 91 -191 709 618 ; C -1 ; WX 440 ; N dcroat ; B 102 -14 651 714 ; C -1 ; WX 660 ; N threequarters ; B 39 -16 706 610 ; C -1 ; WX 460 ; N Scedilla ; B 45 -251 558 610 ; C -1 ; WX 280 ; N lcaron ; B 102 -14 480 714 ; C -1 ; WX 660 ; N Kcommaaccent ; B 53 -274 844 610 ; C -1 ; WX 580 ; N Lacute ; B 53 -16 657 821 ; C -1 ; WX 1000 ; N trademark ; B 127 187 1046 594 ; C -1 ; WX 340 ; N edotaccent ; B 87 -14 403 610 ; C -1 ; WX 380 ; N Igrave ; B 99 0 504 821 ; C -1 ; WX 380 ; N Imacron ; B 99 0 547 746 ; C -1 ; WX 580 ; N Lcaron ; B 53 -16 721 610 ; C -1 ; WX 660 ; N onehalf ; B 56 -16 702 610 ; C -1 ; WX 549 ; N lessequal ; B 26 0 523 658 ; C -1 ; WX 400 ; N ocircumflex ; B 87 -14 453 649 ; C -1 ; WX 460 ; N ntilde ; B 101 -14 544 619 ; C -1 ; WX 740 ; N Uhungarumlaut ; B 126 -16 792 821 ; C -1 ; WX 620 ; N Eacute ; B 91 -12 709 821 ; C -1 ; WX 340 ; N emacron ; B 87 -14 477 584 ; C -1 ; WX 400 ; N gbreve ; B -108 -314 503 631 ; C -1 ; WX 660 ; N onequarter ; B 56 -16 702 610 ; C -1 ; WX 460 ; N Scaron ; B 45 -81 594 821 ; C -1 ; WX 460 ; N Scommaaccent ; B 45 -314 558 610 ; C -1 ; WX 600 ; N Ohungarumlaut ; B 94 -16 660 821 ; C -1 ; WX 400 ; N degree ; B 171 324 457 610 ; C -1 ; WX 400 ; N ograve ; B 87 -14 449 659 ; C -1 ; WX 520 ; N Ccaron ; B 93 -16 631 821 ; C -1 ; WX 460 ; N ugrave ; B 102 -14 528 659 ; C -1 ; WX 453 ; N radical ; B 2 -60 452 768 ; C -1 ; WX 700 ; N Dcaron ; B 86 -6 768 821 ; C -1 ; WX 300 ; N rcommaaccent ; B 32 -304 424 438 ; C -1 ; WX 700 ; N Ntilde ; B 85 -168 915 781 ; C -1 ; WX 400 ; N otilde ; B 87 -14 502 619 ; C -1 ; WX 600 ; N Rcommaaccent ; B 58 -304 805 640 ; C -1 ; WX 580 ; N Lcommaaccent ; B 53 -304 657 610 ; C -1 ; WX 620 ; N Atilde ; B 13 -16 702 781 ; C -1 ; WX 620 ; N Aogonek ; B 13 -191 697 632 ; C -1 ; WX 620 ; N Aring ; B 13 -16 697 831 ; C -1 ; WX 600 ; N Otilde ; B 94 -16 660 781 ; C -1 ; WX 440 ; N zdotaccent ; B 26 -14 508 610 ; C -1 ; WX 620 ; N Ecaron ; B 91 -12 709 821 ; C -1 ; WX 380 ; N Iogonek ; B 99 -191 504 594 ; C -1 ; WX 440 ; N kcommaaccent ; B 87 -304 628 714 ; C -1 ; WX 520 ; N minus ; B 117 184 543 242 ; C -1 ; WX 380 ; N Icircumflex ; B 99 0 504 821 ; C -1 ; WX 460 ; N ncaron ; B 101 -14 544 659 ; C -1 ; WX 320 ; N tcommaaccent ; B 72 -304 426 539 ; C -1 ; WX 520 ; N logicalnot ; B 117 86 543 340 ; C -1 ; WX 400 ; N odieresis ; B 87 -14 513 610 ; C -1 ; WX 460 ; N udieresis ; B 102 -14 528 610 ; C -1 ; WX 549 ; N notequal ; B 12 -29 537 541 ; C -1 ; WX 400 ; N gcommaaccent ; B -108 -314 506 714 ; C -1 ; WX 400 ; N eth ; B 87 -14 522 714 ; C -1 ; WX 440 ; N zcaron ; B 26 -14 514 659 ; C -1 ; WX 460 ; N ncommaaccent ; B 101 -304 544 438 ; C -1 ; WX 264 ; N onesuperior ; B 83 244 311 610 ; C -1 ; WX 240 ; N imacron ; B 100 -14 330 584 ; EndCharMetrics StartKernData StartKernPairs 1207 KPX A C 20 KPX A Cacute 20 KPX A Ccaron 20 KPX A Ccedilla 20 KPX A G -30 KPX A Gbreve -30 KPX A Gcommaaccent -30 KPX A O 10 KPX A Oacute 10 KPX A Ocircumflex 10 KPX A Odieresis 10 KPX A Ograve 10 KPX A Ohungarumlaut 10 KPX A Omacron 10 KPX A Oslash 10 KPX A Otilde 10 KPX A Q 10 KPX A T 10 KPX A Tcaron 10 KPX A Tcommaaccent 10 KPX A U -10 KPX A Uacute -10 KPX A Ucircumflex -10 KPX A Udieresis -10 KPX A Ugrave -10 KPX A Uhungarumlaut -10 KPX A Umacron -10 KPX A Uogonek -10 KPX A Uring -10 KPX A quotedblright -40 KPX A quoteright -40 KPX Aacute C 20 KPX Aacute Cacute 20 KPX Aacute Ccaron 20 KPX Aacute Ccedilla 20 KPX Aacute G -30 KPX Aacute Gbreve -30 KPX Aacute Gcommaaccent -30 KPX Aacute O 10 KPX Aacute Oacute 10 KPX Aacute Ocircumflex 10 KPX Aacute Odieresis 10 KPX Aacute Ograve 10 KPX Aacute Ohungarumlaut 10 KPX Aacute Omacron 10 KPX Aacute Oslash 10 KPX Aacute Otilde 10 KPX Aacute Q 10 KPX Aacute T 10 KPX Aacute Tcaron 10 KPX Aacute Tcommaaccent 10 KPX Aacute U -10 KPX Aacute Uacute -10 KPX Aacute Ucircumflex -10 KPX Aacute Udieresis -10 KPX Aacute Ugrave -10 KPX Aacute Uhungarumlaut -10 KPX Aacute Umacron -10 KPX Aacute Uogonek -10 KPX Aacute Uring -10 KPX Abreve C 20 KPX Abreve Cacute 20 KPX Abreve Ccaron 20 KPX Abreve Ccedilla 20 KPX Abreve G -30 KPX Abreve Gbreve -30 KPX Abreve Gcommaaccent -30 KPX Abreve O 10 KPX Abreve Oacute 10 KPX Abreve Ocircumflex 10 KPX Abreve Odieresis 10 KPX Abreve Ograve 10 KPX Abreve Ohungarumlaut 10 KPX Abreve Omacron 10 KPX Abreve Oslash 10 KPX Abreve Otilde 10 KPX Abreve Q 10 KPX Abreve T 10 KPX Abreve Tcaron 10 KPX Abreve Tcommaaccent 10 KPX Abreve U -10 KPX Abreve Uacute -10 KPX Abreve Ucircumflex -10 KPX Abreve Udieresis -10 KPX Abreve Ugrave -10 KPX Abreve Uhungarumlaut -10 KPX Abreve Umacron -10 KPX Abreve Uogonek -10 KPX Abreve Uring -10 KPX Acircumflex C 20 KPX Acircumflex Cacute 20 KPX Acircumflex Ccaron 20 KPX Acircumflex Ccedilla 20 KPX Acircumflex G -30 KPX Acircumflex Gbreve -30 KPX Acircumflex Gcommaaccent -30 KPX Acircumflex O 10 KPX Acircumflex Oacute 10 KPX Acircumflex Ocircumflex 10 KPX Acircumflex Odieresis 10 KPX Acircumflex Ograve 10 KPX Acircumflex Ohungarumlaut 10 KPX Acircumflex Omacron 10 KPX Acircumflex Oslash 10 KPX Acircumflex Otilde 10 KPX Acircumflex Q 10 KPX Acircumflex T 10 KPX Acircumflex Tcaron 10 KPX Acircumflex Tcommaaccent 10 KPX Acircumflex U -10 KPX Acircumflex Uacute -10 KPX Acircumflex Ucircumflex -10 KPX Acircumflex Udieresis -10 KPX Acircumflex Ugrave -10 KPX Acircumflex Uhungarumlaut -10 KPX Acircumflex Umacron -10 KPX Acircumflex Uogonek -10 KPX Acircumflex Uring -10 KPX Adieresis C 20 KPX Adieresis Cacute 20 KPX Adieresis Ccaron 20 KPX Adieresis Ccedilla 20 KPX Adieresis G -30 KPX Adieresis Gbreve -30 KPX Adieresis Gcommaaccent -30 KPX Adieresis O 10 KPX Adieresis Oacute 10 KPX Adieresis Ocircumflex 10 KPX Adieresis Odieresis 10 KPX Adieresis Ograve 10 KPX Adieresis Ohungarumlaut 10 KPX Adieresis Omacron 10 KPX Adieresis Oslash 10 KPX Adieresis Otilde 10 KPX Adieresis Q 10 KPX Adieresis T 10 KPX Adieresis Tcaron 10 KPX Adieresis Tcommaaccent 10 KPX Adieresis U -10 KPX Adieresis Uacute -10 KPX Adieresis Ucircumflex -10 KPX Adieresis Udieresis -10 KPX Adieresis Ugrave -10 KPX Adieresis Uhungarumlaut -10 KPX Adieresis Umacron -10 KPX Adieresis Uogonek -10 KPX Adieresis Uring -10 KPX Agrave C 20 KPX Agrave Cacute 20 KPX Agrave Ccaron 20 KPX Agrave Ccedilla 20 KPX Agrave G -30 KPX Agrave Gbreve -30 KPX Agrave Gcommaaccent -30 KPX Agrave O 10 KPX Agrave Oacute 10 KPX Agrave Ocircumflex 10 KPX Agrave Odieresis 10 KPX Agrave Ograve 10 KPX Agrave Ohungarumlaut 10 KPX Agrave Omacron 10 KPX Agrave Oslash 10 KPX Agrave Otilde 10 KPX Agrave Q 10 KPX Agrave T 10 KPX Agrave Tcaron 10 KPX Agrave Tcommaaccent 10 KPX Agrave U -10 KPX Agrave Uacute -10 KPX Agrave Ucircumflex -10 KPX Agrave Udieresis -10 KPX Agrave Ugrave -10 KPX Agrave Uhungarumlaut -10 KPX Agrave Umacron -10 KPX Agrave Uogonek -10 KPX Agrave Uring -10 KPX Amacron C 20 KPX Amacron Cacute 20 KPX Amacron Ccaron 20 KPX Amacron Ccedilla 20 KPX Amacron G -30 KPX Amacron Gbreve -30 KPX Amacron Gcommaaccent -30 KPX Amacron O 10 KPX Amacron Oacute 10 KPX Amacron Ocircumflex 10 KPX Amacron Odieresis 10 KPX Amacron Ograve 10 KPX Amacron Ohungarumlaut 10 KPX Amacron Omacron 10 KPX Amacron Oslash 10 KPX Amacron Otilde 10 KPX Amacron Q 10 KPX Amacron T 10 KPX Amacron Tcaron 10 KPX Amacron Tcommaaccent 10 KPX Amacron U -10 KPX Amacron Uacute -10 KPX Amacron Ucircumflex -10 KPX Amacron Udieresis -10 KPX Amacron Ugrave -10 KPX Amacron Uhungarumlaut -10 KPX Amacron Umacron -10 KPX Amacron Uogonek -10 KPX Amacron Uring -10 KPX Aogonek C 20 KPX Aogonek Cacute 20 KPX Aogonek Ccaron 20 KPX Aogonek Ccedilla 20 KPX Aogonek G -30 KPX Aogonek Gbreve -30 KPX Aogonek Gcommaaccent -30 KPX Aogonek O 10 KPX Aogonek Oacute 10 KPX Aogonek Ocircumflex 10 KPX Aogonek Odieresis 10 KPX Aogonek Ograve 10 KPX Aogonek Ohungarumlaut 10 KPX Aogonek Omacron 10 KPX Aogonek Oslash 10 KPX Aogonek Otilde 10 KPX Aogonek Q 10 KPX Aogonek T 10 KPX Aogonek Tcaron 10 KPX Aogonek Tcommaaccent 10 KPX Aogonek U -10 KPX Aogonek Uacute -10 KPX Aogonek Ucircumflex -10 KPX Aogonek Udieresis -10 KPX Aogonek Ugrave -10 KPX Aogonek Uhungarumlaut -10 KPX Aogonek Umacron -10 KPX Aogonek Uogonek -10 KPX Aogonek Uring -10 KPX Aogonek y -10 KPX Aogonek yacute -10 KPX Aogonek ydieresis -10 KPX Aring C 20 KPX Aring Cacute 20 KPX Aring Ccaron 20 KPX Aring Ccedilla 20 KPX Aring G -30 KPX Aring Gbreve -30 KPX Aring Gcommaaccent -30 KPX Aring O 10 KPX Aring Oacute 10 KPX Aring Ocircumflex 10 KPX Aring Odieresis 10 KPX Aring Ograve 10 KPX Aring Ohungarumlaut 10 KPX Aring Omacron 10 KPX Aring Oslash 10 KPX Aring Otilde 10 KPX Aring Q 10 KPX Aring T 10 KPX Aring Tcaron 10 KPX Aring Tcommaaccent 10 KPX Aring U -10 KPX Aring Uacute -10 KPX Aring Ucircumflex -10 KPX Aring Udieresis -10 KPX Aring Ugrave -10 KPX Aring Uhungarumlaut -10 KPX Aring Umacron -10 KPX Aring Uogonek -10 KPX Aring Uring -10 KPX Atilde C 20 KPX Atilde Cacute 20 KPX Atilde Ccaron 20 KPX Atilde Ccedilla 20 KPX Atilde G -30 KPX Atilde Gbreve -30 KPX Atilde Gcommaaccent -30 KPX Atilde O 10 KPX Atilde Oacute 10 KPX Atilde Ocircumflex 10 KPX Atilde Odieresis 10 KPX Atilde Ograve 10 KPX Atilde Ohungarumlaut 10 KPX Atilde Omacron 10 KPX Atilde Oslash 10 KPX Atilde Otilde 10 KPX Atilde Q 10 KPX Atilde T 10 KPX Atilde Tcaron 10 KPX Atilde Tcommaaccent 10 KPX Atilde U -10 KPX Atilde Uacute -10 KPX Atilde Ucircumflex -10 KPX Atilde Udieresis -10 KPX Atilde Ugrave -10 KPX Atilde Uhungarumlaut -10 KPX Atilde Umacron -10 KPX Atilde Uogonek -10 KPX Atilde Uring -10 KPX D A -10 KPX D Aacute -10 KPX D Abreve -10 KPX D Acircumflex -10 KPX D Adieresis -10 KPX D Agrave -10 KPX D Amacron -10 KPX D Aogonek -10 KPX D Aring -10 KPX D Atilde -10 KPX D Y 10 KPX D Yacute 10 KPX D Ydieresis 10 KPX D comma -20 KPX D period -30 KPX Dcaron A -10 KPX Dcaron Aacute -10 KPX Dcaron Abreve -10 KPX Dcaron Acircumflex -10 KPX Dcaron Adieresis -10 KPX Dcaron Agrave -10 KPX Dcaron Amacron -10 KPX Dcaron Aogonek -10 KPX Dcaron Aring -10 KPX Dcaron Atilde -10 KPX Dcaron Y 10 KPX Dcaron Yacute 10 KPX Dcaron Ydieresis 10 KPX Dcaron comma -20 KPX Dcaron period -30 KPX Dcroat A -10 KPX Dcroat Aacute -10 KPX Dcroat Abreve -10 KPX Dcroat Acircumflex -10 KPX Dcroat Adieresis -10 KPX Dcroat Agrave -10 KPX Dcroat Amacron -10 KPX Dcroat Aogonek -10 KPX Dcroat Aring -10 KPX Dcroat Atilde -10 KPX Dcroat Y 10 KPX Dcroat Yacute 10 KPX Dcroat Ydieresis 10 KPX Dcroat comma -20 KPX Dcroat period -30 KPX F comma -30 KPX F i 10 KPX F period -40 KPX G comma -10 KPX G period -20 KPX J comma -10 KPX J period -20 KPX K e -20 KPX K eacute -20 KPX K ecaron -20 KPX K ecircumflex -20 KPX K edieresis -20 KPX K edotaccent -20 KPX K egrave -20 KPX K emacron -20 KPX K eogonek -20 KPX K o -20 KPX K oacute -20 KPX K ocircumflex -20 KPX K odieresis -20 KPX K ograve -20 KPX K ohungarumlaut -20 KPX K omacron -20 KPX K otilde -20 KPX K u -20 KPX K uacute -20 KPX K ucircumflex -20 KPX K udieresis -20 KPX K ugrave -20 KPX K uhungarumlaut -20 KPX K umacron -20 KPX K uogonek -20 KPX K uring -20 KPX Kcommaaccent e -20 KPX Kcommaaccent eacute -20 KPX Kcommaaccent ecaron -20 KPX Kcommaaccent ecircumflex -20 KPX Kcommaaccent edieresis -20 KPX Kcommaaccent edotaccent -20 KPX Kcommaaccent egrave -20 KPX Kcommaaccent emacron -20 KPX Kcommaaccent eogonek -20 KPX Kcommaaccent o -20 KPX Kcommaaccent oacute -20 KPX Kcommaaccent ocircumflex -20 KPX Kcommaaccent odieresis -20 KPX Kcommaaccent ograve -20 KPX Kcommaaccent ohungarumlaut -20 KPX Kcommaaccent omacron -20 KPX Kcommaaccent otilde -20 KPX Kcommaaccent u -20 KPX Kcommaaccent uacute -20 KPX Kcommaaccent ucircumflex -20 KPX Kcommaaccent udieresis -20 KPX Kcommaaccent ugrave -20 KPX Kcommaaccent uhungarumlaut -20 KPX Kcommaaccent umacron -20 KPX Kcommaaccent uogonek -20 KPX Kcommaaccent uring -20 KPX L V -20 KPX L W -10 KPX L quotedblright -25 KPX L quoteright -25 KPX L y -10 KPX L yacute -10 KPX L ydieresis -10 KPX Lacute V -20 KPX Lacute W -10 KPX Lacute quotedblright -25 KPX Lacute quoteright -25 KPX Lacute y -10 KPX Lacute yacute -10 KPX Lacute ydieresis -10 KPX Lcommaaccent V -20 KPX Lcommaaccent W -10 KPX Lcommaaccent quotedblright -25 KPX Lcommaaccent quoteright -25 KPX Lcommaaccent y -10 KPX Lcommaaccent yacute -10 KPX Lcommaaccent ydieresis -10 KPX O A -20 KPX O Aacute -20 KPX O Abreve -20 KPX O Acircumflex -20 KPX O Adieresis -20 KPX O Agrave -20 KPX O Amacron -20 KPX O Aogonek -20 KPX O Aring -20 KPX O Atilde -20 KPX O T 20 KPX O Tcaron 20 KPX O Tcommaaccent 20 KPX O Y 10 KPX O Yacute 10 KPX O Ydieresis 10 KPX O comma -10 KPX O period -20 KPX Oacute A -20 KPX Oacute Aacute -20 KPX Oacute Abreve -20 KPX Oacute Acircumflex -20 KPX Oacute Adieresis -20 KPX Oacute Agrave -20 KPX Oacute Amacron -20 KPX Oacute Aogonek -20 KPX Oacute Aring -20 KPX Oacute Atilde -20 KPX Oacute T 20 KPX Oacute Tcaron 20 KPX Oacute Tcommaaccent 20 KPX Oacute Y 10 KPX Oacute Yacute 10 KPX Oacute Ydieresis 10 KPX Oacute comma -10 KPX Oacute period -20 KPX Ocircumflex A -20 KPX Ocircumflex Aacute -20 KPX Ocircumflex Abreve -20 KPX Ocircumflex Acircumflex -20 KPX Ocircumflex Adieresis -20 KPX Ocircumflex Agrave -20 KPX Ocircumflex Amacron -20 KPX Ocircumflex Aogonek -20 KPX Ocircumflex Aring -20 KPX Ocircumflex Atilde -20 KPX Ocircumflex T 20 KPX Ocircumflex Tcaron 20 KPX Ocircumflex Tcommaaccent 20 KPX Ocircumflex Y 10 KPX Ocircumflex Yacute 10 KPX Ocircumflex Ydieresis 10 KPX Ocircumflex comma -10 KPX Ocircumflex period -20 KPX Odieresis A -20 KPX Odieresis Aacute -20 KPX Odieresis Abreve -20 KPX Odieresis Acircumflex -20 KPX Odieresis Adieresis -20 KPX Odieresis Agrave -20 KPX Odieresis Amacron -20 KPX Odieresis Aogonek -20 KPX Odieresis Aring -20 KPX Odieresis Atilde -20 KPX Odieresis T 20 KPX Odieresis Tcaron 20 KPX Odieresis Tcommaaccent 20 KPX Odieresis Y 10 KPX Odieresis Yacute 10 KPX Odieresis Ydieresis 10 KPX Odieresis comma -10 KPX Odieresis period -20 KPX Ograve A -20 KPX Ograve Aacute -20 KPX Ograve Abreve -20 KPX Ograve Acircumflex -20 KPX Ograve Adieresis -20 KPX Ograve Agrave -20 KPX Ograve Amacron -20 KPX Ograve Aogonek -20 KPX Ograve Aring -20 KPX Ograve Atilde -20 KPX Ograve T 20 KPX Ograve Tcaron 20 KPX Ograve Tcommaaccent 20 KPX Ograve Y 10 KPX Ograve Yacute 10 KPX Ograve Ydieresis 10 KPX Ograve comma -10 KPX Ograve period -20 KPX Ohungarumlaut A -20 KPX Ohungarumlaut Aacute -20 KPX Ohungarumlaut Abreve -20 KPX Ohungarumlaut Acircumflex -20 KPX Ohungarumlaut Adieresis -20 KPX Ohungarumlaut Agrave -20 KPX Ohungarumlaut Amacron -20 KPX Ohungarumlaut Aogonek -20 KPX Ohungarumlaut Aring -20 KPX Ohungarumlaut Atilde -20 KPX Ohungarumlaut T 20 KPX Ohungarumlaut Tcaron 20 KPX Ohungarumlaut Tcommaaccent 20 KPX Ohungarumlaut Y 10 KPX Ohungarumlaut Yacute 10 KPX Ohungarumlaut Ydieresis 10 KPX Ohungarumlaut comma -10 KPX Ohungarumlaut period -20 KPX Omacron A -20 KPX Omacron Aacute -20 KPX Omacron Abreve -20 KPX Omacron Acircumflex -20 KPX Omacron Adieresis -20 KPX Omacron Agrave -20 KPX Omacron Amacron -20 KPX Omacron Aogonek -20 KPX Omacron Aring -20 KPX Omacron Atilde -20 KPX Omacron T 20 KPX Omacron Tcaron 20 KPX Omacron Tcommaaccent 20 KPX Omacron Y 10 KPX Omacron Yacute 10 KPX Omacron Ydieresis 10 KPX Omacron comma -10 KPX Omacron period -20 KPX Oslash A -20 KPX Oslash Aacute -20 KPX Oslash Abreve -20 KPX Oslash Acircumflex -20 KPX Oslash Adieresis -20 KPX Oslash Agrave -20 KPX Oslash Amacron -20 KPX Oslash Aogonek -20 KPX Oslash Aring -20 KPX Oslash Atilde -20 KPX Oslash T 20 KPX Oslash Tcaron 20 KPX Oslash Tcommaaccent 20 KPX Oslash Y 10 KPX Oslash Yacute 10 KPX Oslash Ydieresis 10 KPX Oslash comma -10 KPX Oslash period -20 KPX Otilde A -20 KPX Otilde Aacute -20 KPX Otilde Abreve -20 KPX Otilde Acircumflex -20 KPX Otilde Adieresis -20 KPX Otilde Agrave -20 KPX Otilde Amacron -20 KPX Otilde Aogonek -20 KPX Otilde Aring -20 KPX Otilde Atilde -20 KPX Otilde T 20 KPX Otilde Tcaron 20 KPX Otilde Tcommaaccent 20 KPX Otilde Y 10 KPX Otilde Yacute 10 KPX Otilde Ydieresis 10 KPX Otilde comma -10 KPX Otilde period -20 KPX P A -10 KPX P Aacute -10 KPX P Abreve -10 KPX P Acircumflex -10 KPX P Adieresis -10 KPX P Agrave -10 KPX P Amacron -10 KPX P Aogonek -10 KPX P Aring -10 KPX P Atilde -10 KPX P a -20 KPX P aacute -20 KPX P abreve -20 KPX P acircumflex -20 KPX P adieresis -20 KPX P agrave -20 KPX P amacron -20 KPX P aogonek -20 KPX P aring -20 KPX P atilde -20 KPX P comma -40 KPX P e -10 KPX P eacute -10 KPX P ecaron -10 KPX P ecircumflex -10 KPX P edieresis -10 KPX P edotaccent -10 KPX P egrave -10 KPX P emacron -10 KPX P eogonek -10 KPX P o -10 KPX P oacute -10 KPX P ocircumflex -10 KPX P odieresis -10 KPX P ograve -10 KPX P ohungarumlaut -10 KPX P omacron -10 KPX P otilde -10 KPX P period -50 KPX Q U -10 KPX Q Uacute -10 KPX Q Ucircumflex -10 KPX Q Udieresis -10 KPX Q Ugrave -10 KPX Q Uhungarumlaut -10 KPX Q Umacron -10 KPX Q Uogonek -10 KPX Q Uring -10 KPX R T 20 KPX R Tcaron 20 KPX R Tcommaaccent 20 KPX R W 10 KPX R Y 10 KPX R Yacute 10 KPX R Ydieresis 10 KPX Racute T 20 KPX Racute Tcaron 20 KPX Racute Tcommaaccent 20 KPX Racute W 10 KPX Racute Y 10 KPX Racute Yacute 10 KPX Racute Ydieresis 10 KPX Rcaron T 20 KPX Rcaron Tcaron 20 KPX Rcaron Tcommaaccent 20 KPX Rcaron W 10 KPX Rcaron Y 10 KPX Rcaron Yacute 10 KPX Rcaron Ydieresis 10 KPX Rcommaaccent T 20 KPX Rcommaaccent Tcaron 20 KPX Rcommaaccent Tcommaaccent 20 KPX Rcommaaccent W 10 KPX Rcommaaccent Y 10 KPX Rcommaaccent Yacute 10 KPX Rcommaaccent Ydieresis 10 KPX T A 10 KPX T Aacute 10 KPX T Abreve 10 KPX T Acircumflex 10 KPX T Adieresis 10 KPX T Agrave 10 KPX T Amacron 10 KPX T Aogonek 10 KPX T Aring 10 KPX T Atilde 10 KPX T O 30 KPX T Oacute 30 KPX T Ocircumflex 30 KPX T Odieresis 30 KPX T Ograve 30 KPX T Ohungarumlaut 30 KPX T Omacron 30 KPX T Oslash 30 KPX T Otilde 30 KPX T a -20 KPX T aacute -20 KPX T acircumflex -20 KPX T agrave -20 KPX T amacron -20 KPX T aogonek -20 KPX T aring -20 KPX T e -20 KPX T eacute -20 KPX T eogonek -20 KPX T h 20 KPX T hyphen -20 KPX T i 20 KPX T o -20 KPX T oacute -20 KPX T ocircumflex -20 KPX T ohungarumlaut -20 KPX T omacron -20 KPX Tcaron A 10 KPX Tcaron Aacute 10 KPX Tcaron Abreve 10 KPX Tcaron Acircumflex 10 KPX Tcaron Adieresis 10 KPX Tcaron Agrave 10 KPX Tcaron Amacron 10 KPX Tcaron Aogonek 10 KPX Tcaron Aring 10 KPX Tcaron Atilde 10 KPX Tcaron O 30 KPX Tcaron Oacute 30 KPX Tcaron Ocircumflex 30 KPX Tcaron Odieresis 30 KPX Tcaron Ograve 30 KPX Tcaron Ohungarumlaut 30 KPX Tcaron Omacron 30 KPX Tcaron Oslash 30 KPX Tcaron Otilde 30 KPX Tcaron a -20 KPX Tcaron aacute -20 KPX Tcaron acircumflex -20 KPX Tcaron agrave -20 KPX Tcaron amacron -20 KPX Tcaron aogonek -20 KPX Tcaron aring -20 KPX Tcaron e -20 KPX Tcaron eacute -20 KPX Tcaron eogonek -20 KPX Tcaron hyphen -20 KPX Tcaron o -20 KPX Tcaron oacute -20 KPX Tcaron ocircumflex -20 KPX Tcaron ohungarumlaut -20 KPX Tcaron omacron -20 KPX Tcommaaccent A 10 KPX Tcommaaccent Aacute 10 KPX Tcommaaccent Abreve 10 KPX Tcommaaccent Acircumflex 10 KPX Tcommaaccent Adieresis 10 KPX Tcommaaccent Agrave 10 KPX Tcommaaccent Amacron 10 KPX Tcommaaccent Aogonek 10 KPX Tcommaaccent Aring 10 KPX Tcommaaccent Atilde 10 KPX Tcommaaccent O 30 KPX Tcommaaccent Oacute 30 KPX Tcommaaccent Ocircumflex 30 KPX Tcommaaccent Odieresis 30 KPX Tcommaaccent Ograve 30 KPX Tcommaaccent Ohungarumlaut 30 KPX Tcommaaccent Omacron 30 KPX Tcommaaccent Oslash 30 KPX Tcommaaccent Otilde 30 KPX Tcommaaccent a -20 KPX Tcommaaccent aacute -20 KPX Tcommaaccent acircumflex -20 KPX Tcommaaccent agrave -20 KPX Tcommaaccent amacron -20 KPX Tcommaaccent aogonek -20 KPX Tcommaaccent aring -20 KPX Tcommaaccent e -20 KPX Tcommaaccent eacute -20 KPX Tcommaaccent eogonek -20 KPX Tcommaaccent hyphen -20 KPX Tcommaaccent o -20 KPX Tcommaaccent oacute -20 KPX Tcommaaccent ocircumflex -20 KPX Tcommaaccent ohungarumlaut -20 KPX Tcommaaccent omacron -20 KPX V G -20 KPX V Gbreve -20 KPX V Gcommaaccent -20 KPX V O 10 KPX V Oacute 10 KPX V Ocircumflex 10 KPX V Odieresis 10 KPX V Ograve 10 KPX V Ohungarumlaut 10 KPX V Omacron 10 KPX V Oslash 10 KPX V Otilde 10 KPX V a -20 KPX V aacute -20 KPX V abreve -20 KPX V acircumflex -20 KPX V adieresis -20 KPX V agrave -20 KPX V amacron -20 KPX V aogonek -20 KPX V aring -20 KPX V atilde -20 KPX V comma -90 KPX V e -20 KPX V eacute -20 KPX V ecaron -20 KPX V ecircumflex -20 KPX V edieresis -20 KPX V edotaccent -20 KPX V egrave -20 KPX V emacron -20 KPX V eogonek -20 KPX V o -20 KPX V oacute -20 KPX V ocircumflex -20 KPX V odieresis -20 KPX V ograve -20 KPX V ohungarumlaut -20 KPX V omacron -20 KPX V otilde -20 KPX V period -100 KPX W O 10 KPX W Oacute 10 KPX W Ocircumflex 10 KPX W Odieresis 10 KPX W Ograve 10 KPX W Ohungarumlaut 10 KPX W Omacron 10 KPX W Oslash 10 KPX W Otilde 10 KPX W a -20 KPX W aacute -20 KPX W abreve -20 KPX W acircumflex -20 KPX W adieresis -20 KPX W agrave -20 KPX W amacron -20 KPX W aogonek -20 KPX W aring -20 KPX W atilde -20 KPX W comma -40 KPX W e -20 KPX W eacute -20 KPX W ecaron -20 KPX W ecircumflex -20 KPX W edieresis -20 KPX W edotaccent -20 KPX W egrave -20 KPX W emacron -20 KPX W eogonek -20 KPX W h 10 KPX W i 10 KPX W o -20 KPX W oacute -20 KPX W ocircumflex -20 KPX W odieresis -20 KPX W ograve -20 KPX W ohungarumlaut -20 KPX W omacron -20 KPX W otilde -20 KPX W period -50 KPX Y a -60 KPX Y aacute -60 KPX Y abreve -60 KPX Y acircumflex -20 KPX Y adieresis -20 KPX Y agrave -20 KPX Y amacron -20 KPX Y aogonek -60 KPX Y aring -60 KPX Y atilde -20 KPX Y comma -40 KPX Y e -40 KPX Y eacute -40 KPX Y ecaron -40 KPX Y edotaccent -40 KPX Y eogonek -40 KPX Y i 10 KPX Y iacute 10 KPX Y icircumflex 30 KPX Y idieresis 30 KPX Y igrave 30 KPX Y imacron 30 KPX Y iogonek 10 KPX Y o -50 KPX Y oacute -20 KPX Y ocircumflex -20 KPX Y odieresis -20 KPX Y ograve -20 KPX Y ohungarumlaut -20 KPX Y omacron -20 KPX Y otilde -20 KPX Y period -50 KPX Y u -20 KPX Y uacute -20 KPX Y ucircumflex -20 KPX Y udieresis -20 KPX Y ugrave -20 KPX Y uhungarumlaut -20 KPX Y umacron -20 KPX Y uogonek -20 KPX Y uring -20 KPX Yacute a -60 KPX Yacute aacute -60 KPX Yacute abreve -60 KPX Yacute acircumflex -60 KPX Yacute adieresis -20 KPX Yacute agrave -20 KPX Yacute amacron -20 KPX Yacute aogonek -60 KPX Yacute aring -60 KPX Yacute atilde -20 KPX Yacute comma -40 KPX Yacute e -40 KPX Yacute eacute -40 KPX Yacute ecaron -40 KPX Yacute ecircumflex -40 KPX Yacute edotaccent -40 KPX Yacute eogonek -40 KPX Yacute i 10 KPX Yacute iacute 10 KPX Yacute icircumflex 10 KPX Yacute idieresis 30 KPX Yacute igrave 30 KPX Yacute imacron 30 KPX Yacute iogonek 10 KPX Yacute o -50 KPX Yacute oacute -50 KPX Yacute ocircumflex -20 KPX Yacute odieresis -20 KPX Yacute ograve -20 KPX Yacute ohungarumlaut -50 KPX Yacute omacron -20 KPX Yacute otilde -20 KPX Yacute period -50 KPX Yacute u -20 KPX Yacute uacute -20 KPX Yacute ucircumflex -20 KPX Yacute udieresis -20 KPX Yacute ugrave -20 KPX Yacute uhungarumlaut -20 KPX Yacute umacron -20 KPX Yacute uogonek -20 KPX Yacute uring -20 KPX Ydieresis a -60 KPX Ydieresis aacute -60 KPX Ydieresis abreve -60 KPX Ydieresis acircumflex -20 KPX Ydieresis adieresis -20 KPX Ydieresis agrave -20 KPX Ydieresis amacron -20 KPX Ydieresis aogonek -60 KPX Ydieresis aring -60 KPX Ydieresis atilde -20 KPX Ydieresis comma -40 KPX Ydieresis e -40 KPX Ydieresis eacute -40 KPX Ydieresis ecaron -40 KPX Ydieresis ecircumflex -40 KPX Ydieresis edotaccent -40 KPX Ydieresis eogonek -40 KPX Ydieresis i 10 KPX Ydieresis iacute 10 KPX Ydieresis icircumflex 30 KPX Ydieresis idieresis 30 KPX Ydieresis igrave 30 KPX Ydieresis imacron 30 KPX Ydieresis iogonek 10 KPX Ydieresis o -50 KPX Ydieresis oacute -50 KPX Ydieresis ocircumflex -50 KPX Ydieresis odieresis -20 KPX Ydieresis ograve -20 KPX Ydieresis ohungarumlaut -50 KPX Ydieresis omacron -20 KPX Ydieresis otilde -20 KPX Ydieresis period -50 KPX Ydieresis u -20 KPX Ydieresis uacute -20 KPX Ydieresis ucircumflex -20 KPX Ydieresis udieresis -20 KPX Ydieresis ugrave -20 KPX Ydieresis uhungarumlaut -20 KPX Ydieresis umacron -20 KPX Ydieresis uogonek -20 KPX Ydieresis uring -20 KPX b b -20 KPX b comma -20 KPX b l -20 KPX b lacute -20 KPX b lcommaaccent -20 KPX b period -30 KPX c k -10 KPX c kcommaaccent -10 KPX cacute k -10 KPX cacute kcommaaccent -10 KPX ccaron k -10 KPX ccaron kcommaaccent -10 KPX ccedilla k -10 KPX ccedilla kcommaaccent -10 KPX comma quotedblright -70 KPX comma quoteright -70 KPX d d -40 KPX d v -10 KPX d w -20 KPX e y 10 KPX e yacute 10 KPX e ydieresis 10 KPX eacute y 10 KPX eacute yacute 10 KPX eacute ydieresis 10 KPX ecaron y 10 KPX ecaron yacute 10 KPX ecaron ydieresis 10 KPX ecircumflex y 10 KPX ecircumflex yacute 10 KPX ecircumflex ydieresis 10 KPX edieresis y 10 KPX edieresis yacute 10 KPX edieresis ydieresis 10 KPX edotaccent y 10 KPX edotaccent yacute 10 KPX edotaccent ydieresis 10 KPX egrave y 10 KPX egrave yacute 10 KPX egrave ydieresis 10 KPX emacron y 10 KPX emacron yacute 10 KPX emacron ydieresis 10 KPX eogonek y 10 KPX eogonek yacute 10 KPX eogonek ydieresis 10 KPX f a -20 KPX f aacute -20 KPX f abreve -20 KPX f acircumflex -20 KPX f adieresis -20 KPX f agrave -20 KPX f amacron -20 KPX f aogonek -20 KPX f aring -20 KPX f atilde -20 KPX f comma -40 KPX f e -10 KPX f eacute -10 KPX f ecaron -10 KPX f ecircumflex -10 KPX f edieresis -10 KPX f edotaccent -10 KPX f egrave -10 KPX f emacron -10 KPX f eogonek -10 KPX f f -50 KPX f period -50 KPX f quotedblright 30 KPX f quoteright 30 KPX g a 10 KPX g comma -20 KPX g e 10 KPX g i 10 KPX g period -30 KPX g y 10 KPX k e -20 KPX k eacute -20 KPX k ecaron -20 KPX k ecircumflex -20 KPX k edieresis -20 KPX k edotaccent -20 KPX k egrave -20 KPX k emacron -20 KPX k eogonek -20 KPX k o -10 KPX k oacute -10 KPX k ocircumflex -10 KPX k odieresis -10 KPX k ograve -10 KPX k ohungarumlaut -10 KPX k omacron -10 KPX k otilde -10 KPX k y 10 KPX kcommaaccent e -20 KPX kcommaaccent eacute -20 KPX kcommaaccent ecaron -20 KPX kcommaaccent ecircumflex -20 KPX kcommaaccent edieresis -20 KPX kcommaaccent edotaccent -20 KPX kcommaaccent egrave -20 KPX kcommaaccent emacron -20 KPX kcommaaccent eogonek -20 KPX kcommaaccent o -10 KPX kcommaaccent oacute -10 KPX kcommaaccent ocircumflex -10 KPX kcommaaccent odieresis -10 KPX kcommaaccent ograve -10 KPX kcommaaccent ohungarumlaut -10 KPX kcommaaccent omacron -10 KPX kcommaaccent otilde -10 KPX m u 10 KPX m uacute 10 KPX m ucircumflex 10 KPX m udieresis 10 KPX m ugrave 10 KPX m uhungarumlaut 10 KPX m umacron 10 KPX m uogonek 10 KPX m uring 10 KPX m y 10 KPX m yacute 10 KPX m ydieresis 10 KPX n y 20 KPX n yacute 20 KPX n ydieresis 20 KPX nacute y 20 KPX nacute yacute 20 KPX nacute ydieresis 20 KPX ncaron y 20 KPX ncaron yacute 20 KPX ncaron ydieresis 20 KPX ncommaaccent y 20 KPX ncommaaccent yacute 20 KPX ncommaaccent ydieresis 20 KPX ntilde y 20 KPX ntilde yacute 20 KPX ntilde ydieresis 20 KPX o comma -20 KPX o period -30 KPX oacute comma -20 KPX oacute period -30 KPX ocircumflex comma -20 KPX ocircumflex period -30 KPX odieresis comma -20 KPX odieresis period -30 KPX ograve comma -20 KPX ograve period -30 KPX ohungarumlaut comma -20 KPX ohungarumlaut period -30 KPX omacron comma -20 KPX omacron period -30 KPX otilde comma -20 KPX otilde period -30 KPX p comma -20 KPX p p -10 KPX p period -30 KPX period quotedblright -80 KPX period quoteright -80 KPX quotedblleft A 10 KPX quotedblleft quoteleft 20 KPX quoteleft A 10 KPX quoteleft quoteleft -115 KPX quoteright l 20 KPX quoteright quotedblright 20 KPX quoteright quoteright -115 KPX quoteright r 30 KPX quoteright racute 30 KPX quoteright rcaron 30 KPX quoteright rcommaaccent 30 KPX quoteright s -25 KPX quoteright sacute -25 KPX quoteright scaron -25 KPX quoteright scedilla -25 KPX quoteright scommaaccent -25 KPX quoteright t 20 KPX quoteright v 30 KPX r comma -40 KPX r i 10 KPX r iacute 10 KPX r icircumflex 10 KPX r idieresis 10 KPX r igrave 10 KPX r imacron 10 KPX r iogonek 10 KPX r period -50 KPX racute comma -40 KPX racute i 10 KPX racute iacute 10 KPX racute icircumflex 10 KPX racute idieresis 10 KPX racute igrave 10 KPX racute imacron 10 KPX racute iogonek 10 KPX racute period -50 KPX rcaron comma -40 KPX rcaron i 10 KPX rcaron iacute 10 KPX rcaron icircumflex 10 KPX rcaron idieresis 10 KPX rcaron igrave 10 KPX rcaron imacron 10 KPX rcaron iogonek 10 KPX rcaron period -50 KPX rcommaaccent comma -40 KPX rcommaaccent i 10 KPX rcommaaccent iacute 10 KPX rcommaaccent icircumflex 10 KPX rcommaaccent idieresis 10 KPX rcommaaccent igrave 10 KPX rcommaaccent imacron 10 KPX rcommaaccent iogonek 10 KPX rcommaaccent period -50 KPX s comma -10 KPX s period -20 KPX sacute comma -10 KPX sacute period -20 KPX scaron comma -10 KPX scaron period -20 KPX scedilla comma -10 KPX scedilla period -20 KPX scommaaccent comma -10 KPX scommaaccent period -20 KPX v comma -20 KPX v period -30 KPX w comma -20 KPX w h 20 KPX w o 10 KPX w oacute 10 KPX w ocircumflex 10 KPX w odieresis 10 KPX w ograve 10 KPX w ohungarumlaut 10 KPX w omacron 10 KPX w otilde 10 KPX w period -30 EndKernPairs EndKernData EndFontMetrics gle-graphics-4.2.4c/src/fonts/Adobe-Core35_AFMs-314/Courier.afm0000664000000000000000000003564711405446017022212 0ustar rootrootStartFontMetrics 4.1 Comment Copyright (c) 1989, 1990, 1991, 1992, 1993, 1997 Adobe Systems Incorporated. All Rights Reserved. Comment Creation Date: Thu May 1 17:27:09 1997 Comment UniqueID 43050 Comment VMusage 39754 50779 FontName Courier FullName Courier FamilyName Courier Weight Medium ItalicAngle 0 IsFixedPitch true FontBBox -23 -250 715 805 UnderlinePosition -100 UnderlineThickness 50 Version 003.000 Notice Copyright (c) 1989, 1990, 1991, 1992, 1993, 1997 Adobe Systems Incorporated. All Rights Reserved. EncodingScheme AdobeStandardEncoding CapHeight 562 XHeight 426 Ascender 629 Descender -157 StdHW 51 StdVW 51 StartCharMetrics 314 C 32 ; WX 600 ; N space ; B 0 0 0 0 ; C 33 ; WX 600 ; N exclam ; B 236 -15 364 572 ; C 34 ; WX 600 ; N quotedbl ; B 187 328 413 562 ; C 35 ; WX 600 ; N numbersign ; B 93 -32 507 639 ; C 36 ; WX 600 ; N dollar ; B 105 -126 496 662 ; C 37 ; WX 600 ; N percent ; B 81 -15 518 622 ; C 38 ; WX 600 ; N ampersand ; B 63 -15 538 543 ; C 39 ; WX 600 ; N quoteright ; B 213 328 376 562 ; C 40 ; WX 600 ; N parenleft ; B 269 -108 440 622 ; C 41 ; WX 600 ; N parenright ; B 160 -108 331 622 ; C 42 ; WX 600 ; N asterisk ; B 116 257 484 607 ; C 43 ; WX 600 ; N plus ; B 80 44 520 470 ; C 44 ; WX 600 ; N comma ; B 181 -112 344 122 ; C 45 ; WX 600 ; N hyphen ; B 103 231 497 285 ; C 46 ; WX 600 ; N period ; B 229 -15 371 109 ; C 47 ; WX 600 ; N slash ; B 125 -80 475 629 ; C 48 ; WX 600 ; N zero ; B 106 -15 494 622 ; C 49 ; WX 600 ; N one ; B 96 0 505 622 ; C 50 ; WX 600 ; N two ; B 70 0 471 622 ; C 51 ; WX 600 ; N three ; B 75 -15 466 622 ; C 52 ; WX 600 ; N four ; B 78 0 500 622 ; C 53 ; WX 600 ; N five ; B 92 -15 497 607 ; C 54 ; WX 600 ; N six ; B 111 -15 497 622 ; C 55 ; WX 600 ; N seven ; B 82 0 483 607 ; C 56 ; WX 600 ; N eight ; B 102 -15 498 622 ; C 57 ; WX 600 ; N nine ; B 96 -15 489 622 ; C 58 ; WX 600 ; N colon ; B 229 -15 371 385 ; C 59 ; WX 600 ; N semicolon ; B 181 -112 371 385 ; C 60 ; WX 600 ; N less ; B 41 42 519 472 ; C 61 ; WX 600 ; N equal ; B 80 138 520 376 ; C 62 ; WX 600 ; N greater ; B 66 42 544 472 ; C 63 ; WX 600 ; N question ; B 129 -15 492 572 ; C 64 ; WX 600 ; N at ; B 77 -15 533 622 ; C 65 ; WX 600 ; N A ; B 3 0 597 562 ; C 66 ; WX 600 ; N B ; B 43 0 559 562 ; C 67 ; WX 600 ; N C ; B 41 -18 540 580 ; C 68 ; WX 600 ; N D ; B 43 0 574 562 ; C 69 ; WX 600 ; N E ; B 53 0 550 562 ; C 70 ; WX 600 ; N F ; B 53 0 545 562 ; C 71 ; WX 600 ; N G ; B 31 -18 575 580 ; C 72 ; WX 600 ; N H ; B 32 0 568 562 ; C 73 ; WX 600 ; N I ; B 96 0 504 562 ; C 74 ; WX 600 ; N J ; B 34 -18 566 562 ; C 75 ; WX 600 ; N K ; B 38 0 582 562 ; C 76 ; WX 600 ; N L ; B 47 0 554 562 ; C 77 ; WX 600 ; N M ; B 4 0 596 562 ; C 78 ; WX 600 ; N N ; B 7 -13 593 562 ; C 79 ; WX 600 ; N O ; B 43 -18 557 580 ; C 80 ; WX 600 ; N P ; B 79 0 558 562 ; C 81 ; WX 600 ; N Q ; B 43 -138 557 580 ; C 82 ; WX 600 ; N R ; B 38 0 588 562 ; C 83 ; WX 600 ; N S ; B 72 -20 529 580 ; C 84 ; WX 600 ; N T ; B 38 0 563 562 ; C 85 ; WX 600 ; N U ; B 17 -18 583 562 ; C 86 ; WX 600 ; N V ; B -4 -13 604 562 ; C 87 ; WX 600 ; N W ; B -3 -13 603 562 ; C 88 ; WX 600 ; N X ; B 23 0 577 562 ; C 89 ; WX 600 ; N Y ; B 24 0 576 562 ; C 90 ; WX 600 ; N Z ; B 86 0 514 562 ; C 91 ; WX 600 ; N bracketleft ; B 269 -108 442 622 ; C 92 ; WX 600 ; N backslash ; B 118 -80 482 629 ; C 93 ; WX 600 ; N bracketright ; B 158 -108 331 622 ; C 94 ; WX 600 ; N asciicircum ; B 94 354 506 622 ; C 95 ; WX 600 ; N underscore ; B 0 -125 600 -75 ; C 96 ; WX 600 ; N quoteleft ; B 224 328 387 562 ; C 97 ; WX 600 ; N a ; B 53 -15 559 441 ; C 98 ; WX 600 ; N b ; B 14 -15 575 629 ; C 99 ; WX 600 ; N c ; B 66 -15 529 441 ; C 100 ; WX 600 ; N d ; B 45 -15 591 629 ; C 101 ; WX 600 ; N e ; B 66 -15 548 441 ; C 102 ; WX 600 ; N f ; B 114 0 531 629 ; L i fi ; L l fl ; C 103 ; WX 600 ; N g ; B 45 -157 566 441 ; C 104 ; WX 600 ; N h ; B 18 0 582 629 ; C 105 ; WX 600 ; N i ; B 95 0 505 657 ; C 106 ; WX 600 ; N j ; B 82 -157 410 657 ; C 107 ; WX 600 ; N k ; B 43 0 580 629 ; C 108 ; WX 600 ; N l ; B 95 0 505 629 ; C 109 ; WX 600 ; N m ; B -5 0 605 441 ; C 110 ; WX 600 ; N n ; B 26 0 575 441 ; C 111 ; WX 600 ; N o ; B 62 -15 538 441 ; C 112 ; WX 600 ; N p ; B 9 -157 555 441 ; C 113 ; WX 600 ; N q ; B 45 -157 591 441 ; C 114 ; WX 600 ; N r ; B 60 0 559 441 ; C 115 ; WX 600 ; N s ; B 80 -15 513 441 ; C 116 ; WX 600 ; N t ; B 87 -15 530 561 ; C 117 ; WX 600 ; N u ; B 21 -15 562 426 ; C 118 ; WX 600 ; N v ; B 10 -10 590 426 ; C 119 ; WX 600 ; N w ; B -4 -10 604 426 ; C 120 ; WX 600 ; N x ; B 20 0 580 426 ; C 121 ; WX 600 ; N y ; B 7 -157 592 426 ; C 122 ; WX 600 ; N z ; B 99 0 502 426 ; C 123 ; WX 600 ; N braceleft ; B 182 -108 437 622 ; C 124 ; WX 600 ; N bar ; B 275 -250 326 750 ; C 125 ; WX 600 ; N braceright ; B 163 -108 418 622 ; C 126 ; WX 600 ; N asciitilde ; B 63 197 540 320 ; C 161 ; WX 600 ; N exclamdown ; B 236 -157 364 430 ; C 162 ; WX 600 ; N cent ; B 96 -49 500 614 ; C 163 ; WX 600 ; N sterling ; B 84 -21 521 611 ; C 164 ; WX 600 ; N fraction ; B 92 -57 509 665 ; C 165 ; WX 600 ; N yen ; B 26 0 574 562 ; C 166 ; WX 600 ; N florin ; B 4 -143 539 622 ; C 167 ; WX 600 ; N section ; B 113 -78 488 580 ; C 168 ; WX 600 ; N currency ; B 73 58 527 506 ; C 169 ; WX 600 ; N quotesingle ; B 259 328 341 562 ; C 170 ; WX 600 ; N quotedblleft ; B 143 328 471 562 ; C 171 ; WX 600 ; N guillemotleft ; B 37 70 563 446 ; C 172 ; WX 600 ; N guilsinglleft ; B 149 70 451 446 ; C 173 ; WX 600 ; N guilsinglright ; B 149 70 451 446 ; C 174 ; WX 600 ; N fi ; B 3 0 597 629 ; C 175 ; WX 600 ; N fl ; B 3 0 597 629 ; C 177 ; WX 600 ; N endash ; B 75 231 525 285 ; C 178 ; WX 600 ; N dagger ; B 141 -78 459 580 ; C 179 ; WX 600 ; N daggerdbl ; B 141 -78 459 580 ; C 180 ; WX 600 ; N periodcentered ; B 222 189 378 327 ; C 182 ; WX 600 ; N paragraph ; B 50 -78 511 562 ; C 183 ; WX 600 ; N bullet ; B 172 130 428 383 ; C 184 ; WX 600 ; N quotesinglbase ; B 213 -134 376 100 ; C 185 ; WX 600 ; N quotedblbase ; B 143 -134 457 100 ; C 186 ; WX 600 ; N quotedblright ; B 143 328 457 562 ; C 187 ; WX 600 ; N guillemotright ; B 37 70 563 446 ; C 188 ; WX 600 ; N ellipsis ; B 37 -15 563 111 ; C 189 ; WX 600 ; N perthousand ; B 3 -15 600 622 ; C 191 ; WX 600 ; N questiondown ; B 108 -157 471 430 ; C 193 ; WX 600 ; N grave ; B 151 497 378 672 ; C 194 ; WX 600 ; N acute ; B 242 497 469 672 ; C 195 ; WX 600 ; N circumflex ; B 124 477 476 654 ; C 196 ; WX 600 ; N tilde ; B 105 489 503 606 ; C 197 ; WX 600 ; N macron ; B 120 525 480 565 ; C 198 ; WX 600 ; N breve ; B 153 501 447 609 ; C 199 ; WX 600 ; N dotaccent ; B 249 537 352 640 ; C 200 ; WX 600 ; N dieresis ; B 148 537 453 640 ; C 202 ; WX 600 ; N ring ; B 218 463 382 627 ; C 203 ; WX 600 ; N cedilla ; B 224 -151 362 10 ; C 205 ; WX 600 ; N hungarumlaut ; B 133 497 540 672 ; C 206 ; WX 600 ; N ogonek ; B 211 -172 407 4 ; C 207 ; WX 600 ; N caron ; B 124 492 476 669 ; C 208 ; WX 600 ; N emdash ; B 0 231 600 285 ; C 225 ; WX 600 ; N AE ; B 3 0 550 562 ; C 227 ; WX 600 ; N ordfeminine ; B 156 249 442 580 ; C 232 ; WX 600 ; N Lslash ; B 47 0 554 562 ; C 233 ; WX 600 ; N Oslash ; B 43 -80 557 629 ; C 234 ; WX 600 ; N OE ; B 7 0 567 562 ; C 235 ; WX 600 ; N ordmasculine ; B 157 249 443 580 ; C 241 ; WX 600 ; N ae ; B 19 -15 570 441 ; C 245 ; WX 600 ; N dotlessi ; B 95 0 505 426 ; C 248 ; WX 600 ; N lslash ; B 95 0 505 629 ; C 249 ; WX 600 ; N oslash ; B 62 -80 538 506 ; C 250 ; WX 600 ; N oe ; B 19 -15 559 441 ; C 251 ; WX 600 ; N germandbls ; B 48 -15 588 629 ; C -1 ; WX 600 ; N Idieresis ; B 96 0 504 753 ; C -1 ; WX 600 ; N eacute ; B 66 -15 548 672 ; C -1 ; WX 600 ; N abreve ; B 53 -15 559 609 ; C -1 ; WX 600 ; N uhungarumlaut ; B 21 -15 580 672 ; C -1 ; WX 600 ; N ecaron ; B 66 -15 548 669 ; C -1 ; WX 600 ; N Ydieresis ; B 24 0 576 753 ; C -1 ; WX 600 ; N divide ; B 87 48 513 467 ; C -1 ; WX 600 ; N Yacute ; B 24 0 576 805 ; C -1 ; WX 600 ; N Acircumflex ; B 3 0 597 787 ; C -1 ; WX 600 ; N aacute ; B 53 -15 559 672 ; C -1 ; WX 600 ; N Ucircumflex ; B 17 -18 583 787 ; C -1 ; WX 600 ; N yacute ; B 7 -157 592 672 ; C -1 ; WX 600 ; N scommaaccent ; B 80 -250 513 441 ; C -1 ; WX 600 ; N ecircumflex ; B 66 -15 548 654 ; C -1 ; WX 600 ; N Uring ; B 17 -18 583 760 ; C -1 ; WX 600 ; N Udieresis ; B 17 -18 583 753 ; C -1 ; WX 600 ; N aogonek ; B 53 -172 587 441 ; C -1 ; WX 600 ; N Uacute ; B 17 -18 583 805 ; C -1 ; WX 600 ; N uogonek ; B 21 -172 590 426 ; C -1 ; WX 600 ; N Edieresis ; B 53 0 550 753 ; C -1 ; WX 600 ; N Dcroat ; B 30 0 574 562 ; C -1 ; WX 600 ; N commaaccent ; B 198 -250 335 -58 ; C -1 ; WX 600 ; N copyright ; B 0 -18 600 580 ; C -1 ; WX 600 ; N Emacron ; B 53 0 550 698 ; C -1 ; WX 600 ; N ccaron ; B 66 -15 529 669 ; C -1 ; WX 600 ; N aring ; B 53 -15 559 627 ; C -1 ; WX 600 ; N Ncommaaccent ; B 7 -250 593 562 ; C -1 ; WX 600 ; N lacute ; B 95 0 505 805 ; C -1 ; WX 600 ; N agrave ; B 53 -15 559 672 ; C -1 ; WX 600 ; N Tcommaaccent ; B 38 -250 563 562 ; C -1 ; WX 600 ; N Cacute ; B 41 -18 540 805 ; C -1 ; WX 600 ; N atilde ; B 53 -15 559 606 ; C -1 ; WX 600 ; N Edotaccent ; B 53 0 550 753 ; C -1 ; WX 600 ; N scaron ; B 80 -15 513 669 ; C -1 ; WX 600 ; N scedilla ; B 80 -151 513 441 ; C -1 ; WX 600 ; N iacute ; B 95 0 505 672 ; C -1 ; WX 600 ; N lozenge ; B 18 0 443 706 ; C -1 ; WX 600 ; N Rcaron ; B 38 0 588 802 ; C -1 ; WX 600 ; N Gcommaaccent ; B 31 -250 575 580 ; C -1 ; WX 600 ; N ucircumflex ; B 21 -15 562 654 ; C -1 ; WX 600 ; N acircumflex ; B 53 -15 559 654 ; C -1 ; WX 600 ; N Amacron ; B 3 0 597 698 ; C -1 ; WX 600 ; N rcaron ; B 60 0 559 669 ; C -1 ; WX 600 ; N ccedilla ; B 66 -151 529 441 ; C -1 ; WX 600 ; N Zdotaccent ; B 86 0 514 753 ; C -1 ; WX 600 ; N Thorn ; B 79 0 538 562 ; C -1 ; WX 600 ; N Omacron ; B 43 -18 557 698 ; C -1 ; WX 600 ; N Racute ; B 38 0 588 805 ; C -1 ; WX 600 ; N Sacute ; B 72 -20 529 805 ; C -1 ; WX 600 ; N dcaron ; B 45 -15 715 629 ; C -1 ; WX 600 ; N Umacron ; B 17 -18 583 698 ; C -1 ; WX 600 ; N uring ; B 21 -15 562 627 ; C -1 ; WX 600 ; N threesuperior ; B 155 240 406 622 ; C -1 ; WX 600 ; N Ograve ; B 43 -18 557 805 ; C -1 ; WX 600 ; N Agrave ; B 3 0 597 805 ; C -1 ; WX 600 ; N Abreve ; B 3 0 597 732 ; C -1 ; WX 600 ; N multiply ; B 87 43 515 470 ; C -1 ; WX 600 ; N uacute ; B 21 -15 562 672 ; C -1 ; WX 600 ; N Tcaron ; B 38 0 563 802 ; C -1 ; WX 600 ; N partialdiff ; B 17 -38 459 710 ; C -1 ; WX 600 ; N ydieresis ; B 7 -157 592 620 ; C -1 ; WX 600 ; N Nacute ; B 7 -13 593 805 ; C -1 ; WX 600 ; N icircumflex ; B 94 0 505 654 ; C -1 ; WX 600 ; N Ecircumflex ; B 53 0 550 787 ; C -1 ; WX 600 ; N adieresis ; B 53 -15 559 620 ; C -1 ; WX 600 ; N edieresis ; B 66 -15 548 620 ; C -1 ; WX 600 ; N cacute ; B 66 -15 529 672 ; C -1 ; WX 600 ; N nacute ; B 26 0 575 672 ; C -1 ; WX 600 ; N umacron ; B 21 -15 562 565 ; C -1 ; WX 600 ; N Ncaron ; B 7 -13 593 802 ; C -1 ; WX 600 ; N Iacute ; B 96 0 504 805 ; C -1 ; WX 600 ; N plusminus ; B 87 44 513 558 ; C -1 ; WX 600 ; N brokenbar ; B 275 -175 326 675 ; C -1 ; WX 600 ; N registered ; B 0 -18 600 580 ; C -1 ; WX 600 ; N Gbreve ; B 31 -18 575 732 ; C -1 ; WX 600 ; N Idotaccent ; B 96 0 504 753 ; C -1 ; WX 600 ; N summation ; B 15 -10 585 706 ; C -1 ; WX 600 ; N Egrave ; B 53 0 550 805 ; C -1 ; WX 600 ; N racute ; B 60 0 559 672 ; C -1 ; WX 600 ; N omacron ; B 62 -15 538 565 ; C -1 ; WX 600 ; N Zacute ; B 86 0 514 805 ; C -1 ; WX 600 ; N Zcaron ; B 86 0 514 802 ; C -1 ; WX 600 ; N greaterequal ; B 98 0 502 710 ; C -1 ; WX 600 ; N Eth ; B 30 0 574 562 ; C -1 ; WX 600 ; N Ccedilla ; B 41 -151 540 580 ; C -1 ; WX 600 ; N lcommaaccent ; B 95 -250 505 629 ; C -1 ; WX 600 ; N tcaron ; B 87 -15 530 717 ; C -1 ; WX 600 ; N eogonek ; B 66 -172 548 441 ; C -1 ; WX 600 ; N Uogonek ; B 17 -172 583 562 ; C -1 ; WX 600 ; N Aacute ; B 3 0 597 805 ; C -1 ; WX 600 ; N Adieresis ; B 3 0 597 753 ; C -1 ; WX 600 ; N egrave ; B 66 -15 548 672 ; C -1 ; WX 600 ; N zacute ; B 99 0 502 672 ; C -1 ; WX 600 ; N iogonek ; B 95 -172 505 657 ; C -1 ; WX 600 ; N Oacute ; B 43 -18 557 805 ; C -1 ; WX 600 ; N oacute ; B 62 -15 538 672 ; C -1 ; WX 600 ; N amacron ; B 53 -15 559 565 ; C -1 ; WX 600 ; N sacute ; B 80 -15 513 672 ; C -1 ; WX 600 ; N idieresis ; B 95 0 505 620 ; C -1 ; WX 600 ; N Ocircumflex ; B 43 -18 557 787 ; C -1 ; WX 600 ; N Ugrave ; B 17 -18 583 805 ; C -1 ; WX 600 ; N Delta ; B 6 0 598 688 ; C -1 ; WX 600 ; N thorn ; B -6 -157 555 629 ; C -1 ; WX 600 ; N twosuperior ; B 177 249 424 622 ; C -1 ; WX 600 ; N Odieresis ; B 43 -18 557 753 ; C -1 ; WX 600 ; N mu ; B 21 -157 562 426 ; C -1 ; WX 600 ; N igrave ; B 95 0 505 672 ; C -1 ; WX 600 ; N ohungarumlaut ; B 62 -15 580 672 ; C -1 ; WX 600 ; N Eogonek ; B 53 -172 561 562 ; C -1 ; WX 600 ; N dcroat ; B 45 -15 591 629 ; C -1 ; WX 600 ; N threequarters ; B 8 -56 593 666 ; C -1 ; WX 600 ; N Scedilla ; B 72 -151 529 580 ; C -1 ; WX 600 ; N lcaron ; B 95 0 533 629 ; C -1 ; WX 600 ; N Kcommaaccent ; B 38 -250 582 562 ; C -1 ; WX 600 ; N Lacute ; B 47 0 554 805 ; C -1 ; WX 600 ; N trademark ; B -23 263 623 562 ; C -1 ; WX 600 ; N edotaccent ; B 66 -15 548 620 ; C -1 ; WX 600 ; N Igrave ; B 96 0 504 805 ; C -1 ; WX 600 ; N Imacron ; B 96 0 504 698 ; C -1 ; WX 600 ; N Lcaron ; B 47 0 554 562 ; C -1 ; WX 600 ; N onehalf ; B 0 -57 611 665 ; C -1 ; WX 600 ; N lessequal ; B 98 0 502 710 ; C -1 ; WX 600 ; N ocircumflex ; B 62 -15 538 654 ; C -1 ; WX 600 ; N ntilde ; B 26 0 575 606 ; C -1 ; WX 600 ; N Uhungarumlaut ; B 17 -18 590 805 ; C -1 ; WX 600 ; N Eacute ; B 53 0 550 805 ; C -1 ; WX 600 ; N emacron ; B 66 -15 548 565 ; C -1 ; WX 600 ; N gbreve ; B 45 -157 566 609 ; C -1 ; WX 600 ; N onequarter ; B 0 -57 600 665 ; C -1 ; WX 600 ; N Scaron ; B 72 -20 529 802 ; C -1 ; WX 600 ; N Scommaaccent ; B 72 -250 529 580 ; C -1 ; WX 600 ; N Ohungarumlaut ; B 43 -18 580 805 ; C -1 ; WX 600 ; N degree ; B 123 269 477 622 ; C -1 ; WX 600 ; N ograve ; B 62 -15 538 672 ; C -1 ; WX 600 ; N Ccaron ; B 41 -18 540 802 ; C -1 ; WX 600 ; N ugrave ; B 21 -15 562 672 ; C -1 ; WX 600 ; N radical ; B 3 -15 597 792 ; C -1 ; WX 600 ; N Dcaron ; B 43 0 574 802 ; C -1 ; WX 600 ; N rcommaaccent ; B 60 -250 559 441 ; C -1 ; WX 600 ; N Ntilde ; B 7 -13 593 729 ; C -1 ; WX 600 ; N otilde ; B 62 -15 538 606 ; C -1 ; WX 600 ; N Rcommaaccent ; B 38 -250 588 562 ; C -1 ; WX 600 ; N Lcommaaccent ; B 47 -250 554 562 ; C -1 ; WX 600 ; N Atilde ; B 3 0 597 729 ; C -1 ; WX 600 ; N Aogonek ; B 3 -172 608 562 ; C -1 ; WX 600 ; N Aring ; B 3 0 597 750 ; C -1 ; WX 600 ; N Otilde ; B 43 -18 557 729 ; C -1 ; WX 600 ; N zdotaccent ; B 99 0 502 620 ; C -1 ; WX 600 ; N Ecaron ; B 53 0 550 802 ; C -1 ; WX 600 ; N Iogonek ; B 96 -172 504 562 ; C -1 ; WX 600 ; N kcommaaccent ; B 43 -250 580 629 ; C -1 ; WX 600 ; N minus ; B 80 232 520 283 ; C -1 ; WX 600 ; N Icircumflex ; B 96 0 504 787 ; C -1 ; WX 600 ; N ncaron ; B 26 0 575 669 ; C -1 ; WX 600 ; N tcommaaccent ; B 87 -250 530 561 ; C -1 ; WX 600 ; N logicalnot ; B 87 108 513 369 ; C -1 ; WX 600 ; N odieresis ; B 62 -15 538 620 ; C -1 ; WX 600 ; N udieresis ; B 21 -15 562 620 ; C -1 ; WX 600 ; N notequal ; B 15 -16 540 529 ; C -1 ; WX 600 ; N gcommaaccent ; B 45 -157 566 708 ; C -1 ; WX 600 ; N eth ; B 62 -15 538 629 ; C -1 ; WX 600 ; N zcaron ; B 99 0 502 669 ; C -1 ; WX 600 ; N ncommaaccent ; B 26 -250 575 441 ; C -1 ; WX 600 ; N onesuperior ; B 172 249 428 622 ; C -1 ; WX 600 ; N imacron ; B 95 0 505 565 ; EndCharMetrics EndFontMetrics gle-graphics-4.2.4c/src/fonts/Adobe-Core35_AFMs-314/Palatino-Bold.afm0000664000000000000000000010056511405446017023217 0ustar rootrootStartFontMetrics 4.1 Comment Copyright (c) 1985, 1987, 1989, 1990, 1992, 1997 Adobe Systems Incorporated. All Rights Reserved. Comment Creation Date: Thu May 1 13:25:14 1997 Comment UniqueID 43075 Comment VMusage 51499 66524 FontName Palatino-Bold FullName Palatino Bold FamilyName Palatino Weight Bold ItalicAngle 0 IsFixedPitch false FontBBox -152 -266 1000 924 UnderlinePosition -100 UnderlineThickness 50 Version 002.000 Notice Copyright (c) 1985, 1987, 1989, 1990, 1992, 1997 Adobe Systems Incorporated. All Rights Reserved.Palatino is a trademark of Linotype-Hell AG and/or its subsidiaries. EncodingScheme AdobeStandardEncoding CapHeight 681 XHeight 471 Ascender 726 Descender -281 StdHW 55 StdVW 122 StartCharMetrics 314 C 32 ; WX 250 ; N space ; B 0 0 0 0 ; C 33 ; WX 278 ; N exclam ; B 63 -12 219 688 ; C 34 ; WX 402 ; N quotedbl ; B 22 376 380 695 ; C 35 ; WX 500 ; N numbersign ; B 4 0 496 673 ; C 36 ; WX 500 ; N dollar ; B 28 -114 472 721 ; C 37 ; WX 889 ; N percent ; B 61 -9 828 714 ; C 38 ; WX 833 ; N ampersand ; B 52 -17 813 684 ; C 39 ; WX 278 ; N quoteright ; B 29 405 249 695 ; C 40 ; WX 333 ; N parenleft ; B 65 -104 305 723 ; C 41 ; WX 333 ; N parenright ; B 28 -104 268 723 ; C 42 ; WX 444 ; N asterisk ; B 44 332 399 695 ; C 43 ; WX 606 ; N plus ; B 51 0 555 505 ; C 44 ; WX 250 ; N comma ; B -6 -166 227 141 ; C 45 ; WX 333 ; N hyphen ; B 16 195 317 305 ; C 46 ; WX 250 ; N period ; B 47 -12 203 144 ; C 47 ; WX 296 ; N slash ; B -9 -17 305 720 ; C 48 ; WX 500 ; N zero ; B 33 -17 468 660 ; C 49 ; WX 500 ; N one ; B 35 -3 455 670 ; C 50 ; WX 500 ; N two ; B 25 -3 472 660 ; C 51 ; WX 500 ; N three ; B 22 -17 458 660 ; C 52 ; WX 500 ; N four ; B 12 -3 473 672 ; C 53 ; WX 500 ; N five ; B 42 -17 472 656 ; C 54 ; WX 500 ; N six ; B 37 -17 469 660 ; C 55 ; WX 500 ; N seven ; B 46 -3 493 656 ; C 56 ; WX 500 ; N eight ; B 34 -17 467 660 ; C 57 ; WX 500 ; N nine ; B 31 -17 463 660 ; C 58 ; WX 250 ; N colon ; B 47 -12 203 454 ; C 59 ; WX 250 ; N semicolon ; B -6 -166 227 454 ; C 60 ; WX 606 ; N less ; B 49 -15 558 519 ; C 61 ; WX 606 ; N equal ; B 51 114 555 396 ; C 62 ; WX 606 ; N greater ; B 49 -15 558 519 ; C 63 ; WX 444 ; N question ; B 43 -12 411 687 ; C 64 ; WX 747 ; N at ; B 42 -12 704 681 ; C 65 ; WX 778 ; N A ; B 24 -3 757 686 ; C 66 ; WX 667 ; N B ; B 39 -3 611 681 ; C 67 ; WX 722 ; N C ; B 44 -17 695 695 ; C 68 ; WX 833 ; N D ; B 35 -3 786 681 ; C 69 ; WX 611 ; N E ; B 39 -4 577 681 ; C 70 ; WX 556 ; N F ; B 28 -3 539 681 ; C 71 ; WX 833 ; N G ; B 47 -17 776 695 ; C 72 ; WX 833 ; N H ; B 36 -3 796 681 ; C 73 ; WX 389 ; N I ; B 39 -3 350 681 ; C 74 ; WX 389 ; N J ; B -11 -213 350 681 ; C 75 ; WX 778 ; N K ; B 39 -3 763 681 ; C 76 ; WX 611 ; N L ; B 39 -4 577 681 ; C 77 ; WX 1000 ; N M ; B 32 -10 968 681 ; C 78 ; WX 833 ; N N ; B 35 -16 798 681 ; C 79 ; WX 833 ; N O ; B 47 -17 787 695 ; C 80 ; WX 611 ; N P ; B 39 -3 594 681 ; C 81 ; WX 833 ; N Q ; B 47 -184 787 695 ; C 82 ; WX 722 ; N R ; B 39 -3 708 681 ; C 83 ; WX 611 ; N S ; B 57 -17 559 695 ; C 84 ; WX 667 ; N T ; B 17 -3 650 681 ; C 85 ; WX 778 ; N U ; B 26 -17 760 681 ; C 86 ; WX 778 ; N V ; B 20 -3 763 681 ; C 87 ; WX 1000 ; N W ; B 17 -3 988 686 ; C 88 ; WX 667 ; N X ; B 17 -3 650 695 ; C 89 ; WX 667 ; N Y ; B 15 -3 660 695 ; C 90 ; WX 667 ; N Z ; B 24 -3 627 681 ; C 91 ; WX 333 ; N bracketleft ; B 73 -104 291 720 ; C 92 ; WX 606 ; N backslash ; B 72 0 534 720 ; C 93 ; WX 333 ; N bracketright ; B 42 -104 260 720 ; C 94 ; WX 606 ; N asciicircum ; B 52 275 554 678 ; C 95 ; WX 500 ; N underscore ; B 0 -125 500 -75 ; C 96 ; WX 278 ; N quoteleft ; B 29 405 249 695 ; C 97 ; WX 500 ; N a ; B 40 -17 478 471 ; C 98 ; WX 611 ; N b ; B 10 -17 556 720 ; C 99 ; WX 444 ; N c ; B 37 -17 414 471 ; C 100 ; WX 611 ; N d ; B 42 -17 577 720 ; C 101 ; WX 500 ; N e ; B 42 -17 461 471 ; C 102 ; WX 389 ; N f ; B 34 -3 381 720 ; L i fi ; L l fl ; C 103 ; WX 556 ; N g ; B 26 -266 535 471 ; C 104 ; WX 611 ; N h ; B 24 -3 587 720 ; C 105 ; WX 333 ; N i ; B 34 -3 298 706 ; C 106 ; WX 333 ; N j ; B 3 -266 241 706 ; C 107 ; WX 611 ; N k ; B 21 -3 597 720 ; C 108 ; WX 333 ; N l ; B 24 -3 296 720 ; C 109 ; WX 889 ; N m ; B 24 -3 864 471 ; C 110 ; WX 611 ; N n ; B 24 -3 587 471 ; C 111 ; WX 556 ; N o ; B 40 -17 517 471 ; C 112 ; WX 611 ; N p ; B 29 -258 567 471 ; C 113 ; WX 611 ; N q ; B 52 -258 589 471 ; C 114 ; WX 389 ; N r ; B 30 -3 389 471 ; C 115 ; WX 444 ; N s ; B 39 -17 405 471 ; C 116 ; WX 333 ; N t ; B 22 -17 324 632 ; C 117 ; WX 611 ; N u ; B 25 -17 583 471 ; C 118 ; WX 556 ; N v ; B 11 -3 545 459 ; C 119 ; WX 833 ; N w ; B 13 -3 820 471 ; C 120 ; WX 500 ; N x ; B 20 -3 483 471 ; C 121 ; WX 556 ; N y ; B 10 -266 546 459 ; C 122 ; WX 500 ; N z ; B 16 -3 464 459 ; C 123 ; WX 310 ; N braceleft ; B 5 -117 288 725 ; C 124 ; WX 606 ; N bar ; B 260 -250 346 750 ; C 125 ; WX 310 ; N braceright ; B 22 -117 305 725 ; C 126 ; WX 606 ; N asciitilde ; B 51 155 555 342 ; C 161 ; WX 278 ; N exclamdown ; B 59 -227 215 471 ; C 162 ; WX 500 ; N cent ; B 73 -106 450 554 ; C 163 ; WX 500 ; N sterling ; B -2 -19 501 676 ; C 164 ; WX 167 ; N fraction ; B -152 0 320 660 ; C 165 ; WX 500 ; N yen ; B 17 -3 483 695 ; C 166 ; WX 500 ; N florin ; B 11 -242 490 703 ; C 167 ; WX 500 ; N section ; B 30 -217 471 695 ; C 168 ; WX 500 ; N currency ; B 32 96 468 533 ; C 169 ; WX 227 ; N quotesingle ; B 45 376 181 695 ; C 170 ; WX 500 ; N quotedblleft ; B 34 405 466 695 ; C 171 ; WX 500 ; N guillemotleft ; B 36 44 463 438 ; C 172 ; WX 389 ; N guilsinglleft ; B 82 44 307 438 ; C 173 ; WX 389 ; N guilsinglright ; B 82 44 307 438 ; C 174 ; WX 611 ; N fi ; B 10 -3 595 720 ; C 175 ; WX 611 ; N fl ; B 17 -3 593 720 ; C 177 ; WX 500 ; N endash ; B 0 208 500 291 ; C 178 ; WX 500 ; N dagger ; B 29 -6 472 682 ; C 179 ; WX 500 ; N daggerdbl ; B 32 -245 468 682 ; C 180 ; WX 250 ; N periodcentered ; B 47 179 203 335 ; C 182 ; WX 641 ; N paragraph ; B 19 -161 599 683 ; C 183 ; WX 606 ; N bullet ; B 131 172 475 516 ; C 184 ; WX 333 ; N quotesinglbase ; B 56 -160 276 130 ; C 185 ; WX 500 ; N quotedblbase ; B 34 -160 466 130 ; C 186 ; WX 500 ; N quotedblright ; B 34 405 466 695 ; C 187 ; WX 500 ; N guillemotright ; B 37 44 464 438 ; C 188 ; WX 1000 ; N ellipsis ; B 89 -12 911 144 ; C 189 ; WX 1000 ; N perthousand ; B 33 -9 982 724 ; C 191 ; WX 444 ; N questiondown ; B 33 -231 401 471 ; C 193 ; WX 333 ; N grave ; B 18 506 256 691 ; C 194 ; WX 333 ; N acute ; B 78 506 316 691 ; C 195 ; WX 333 ; N circumflex ; B -2 506 335 681 ; C 196 ; WX 333 ; N tilde ; B -16 535 349 661 ; C 197 ; WX 333 ; N macron ; B 1 538 332 609 ; C 198 ; WX 333 ; N breve ; B 15 506 318 669 ; C 199 ; WX 333 ; N dotaccent ; B 92 556 242 706 ; C 200 ; WX 333 ; N dieresis ; B -8 556 341 690 ; C 202 ; WX 333 ; N ring ; B 67 500 267 700 ; C 203 ; WX 333 ; N cedilla ; B 73 -225 300 -7 ; C 205 ; WX 333 ; N hungarumlaut ; B -56 506 390 691 ; C 206 ; WX 333 ; N ogonek ; B 49 -225 287 -20 ; C 207 ; WX 333 ; N caron ; B -2 510 335 685 ; C 208 ; WX 1000 ; N emdash ; B 0 208 1000 291 ; C 225 ; WX 1000 ; N AE ; B 12 -4 954 681 ; C 227 ; WX 438 ; N ordfeminine ; B 77 367 361 660 ; C 232 ; WX 611 ; N Lslash ; B 16 -4 577 681 ; C 233 ; WX 833 ; N Oslash ; B 32 -20 808 698 ; C 234 ; WX 1000 ; N OE ; B 43 -17 985 695 ; C 235 ; WX 488 ; N ordmasculine ; B 89 367 399 660 ; C 241 ; WX 778 ; N ae ; B 46 -17 731 471 ; C 245 ; WX 333 ; N dotlessi ; B 34 -3 298 471 ; C 248 ; WX 333 ; N lslash ; B -4 -3 334 720 ; C 249 ; WX 556 ; N oslash ; B 23 -18 534 471 ; C 250 ; WX 833 ; N oe ; B 48 -17 799 471 ; C 251 ; WX 611 ; N germandbls ; B 30 -17 565 720 ; C -1 ; WX 389 ; N Idieresis ; B 20 -3 369 895 ; C -1 ; WX 500 ; N eacute ; B 42 -17 461 711 ; C -1 ; WX 500 ; N abreve ; B 40 -17 478 689 ; C -1 ; WX 611 ; N uhungarumlaut ; B 25 -17 583 711 ; C -1 ; WX 500 ; N ecaron ; B 42 -17 461 725 ; C -1 ; WX 667 ; N Ydieresis ; B 15 -3 660 895 ; C -1 ; WX 606 ; N divide ; B 51 0 555 510 ; C -1 ; WX 667 ; N Yacute ; B 15 -3 660 915 ; C -1 ; WX 778 ; N Acircumflex ; B 24 -3 757 905 ; C -1 ; WX 500 ; N aacute ; B 40 -17 478 711 ; C -1 ; WX 778 ; N Ucircumflex ; B 26 -17 760 905 ; C -1 ; WX 556 ; N yacute ; B 10 -266 546 711 ; C -1 ; WX 444 ; N scommaaccent ; B 39 -266 405 471 ; C -1 ; WX 500 ; N ecircumflex ; B 42 -17 461 721 ; C -1 ; WX 778 ; N Uring ; B 26 -17 760 924 ; C -1 ; WX 778 ; N Udieresis ; B 26 -17 760 895 ; C -1 ; WX 500 ; N aogonek ; B 40 -225 478 471 ; C -1 ; WX 778 ; N Uacute ; B 26 -17 760 915 ; C -1 ; WX 611 ; N uogonek ; B 25 -201 642 471 ; C -1 ; WX 611 ; N Edieresis ; B 39 -4 577 895 ; C -1 ; WX 833 ; N Dcroat ; B 10 -3 786 681 ; C -1 ; WX 250 ; N commaaccent ; B 48 -266 203 -50 ; C -1 ; WX 747 ; N copyright ; B 26 -17 720 695 ; C -1 ; WX 611 ; N Emacron ; B 39 -4 577 833 ; C -1 ; WX 444 ; N ccaron ; B 37 -17 421 705 ; C -1 ; WX 500 ; N aring ; B 40 -17 478 720 ; C -1 ; WX 833 ; N Ncommaaccent ; B 35 -266 798 681 ; C -1 ; WX 333 ; N lacute ; B 24 -3 336 924 ; C -1 ; WX 500 ; N agrave ; B 40 -17 478 711 ; C -1 ; WX 667 ; N Tcommaaccent ; B 17 -266 650 681 ; C -1 ; WX 722 ; N Cacute ; B 44 -17 695 915 ; C -1 ; WX 500 ; N atilde ; B 40 -17 478 693 ; C -1 ; WX 611 ; N Edotaccent ; B 39 -4 577 910 ; C -1 ; WX 444 ; N scaron ; B 39 -17 405 705 ; C -1 ; WX 444 ; N scedilla ; B 39 -225 405 471 ; C -1 ; WX 333 ; N iacute ; B 34 -3 316 711 ; C -1 ; WX 471 ; N lozenge ; B 7 0 465 732 ; C -1 ; WX 722 ; N Rcaron ; B 39 -3 708 909 ; C -1 ; WX 833 ; N Gcommaaccent ; B 47 -266 776 695 ; C -1 ; WX 611 ; N ucircumflex ; B 25 -17 583 701 ; C -1 ; WX 500 ; N acircumflex ; B 40 -17 478 701 ; C -1 ; WX 778 ; N Amacron ; B 24 -3 757 833 ; C -1 ; WX 389 ; N rcaron ; B 30 -3 389 705 ; C -1 ; WX 444 ; N ccedilla ; B 37 -225 414 471 ; C -1 ; WX 667 ; N Zdotaccent ; B 24 -3 627 910 ; C -1 ; WX 611 ; N Thorn ; B 39 -3 574 681 ; C -1 ; WX 833 ; N Omacron ; B 47 -17 787 833 ; C -1 ; WX 722 ; N Racute ; B 39 -3 708 915 ; C -1 ; WX 611 ; N Sacute ; B 57 -17 559 915 ; C -1 ; WX 675 ; N dcaron ; B 42 -17 698 724 ; C -1 ; WX 778 ; N Umacron ; B 26 -17 760 833 ; C -1 ; WX 611 ; N uring ; B 25 -17 583 720 ; C -1 ; WX 300 ; N threesuperior ; B 9 261 292 667 ; C -1 ; WX 833 ; N Ograve ; B 47 -17 787 915 ; C -1 ; WX 778 ; N Agrave ; B 24 -3 757 915 ; C -1 ; WX 778 ; N Abreve ; B 24 -3 757 893 ; C -1 ; WX 606 ; N multiply ; B 72 21 534 483 ; C -1 ; WX 611 ; N uacute ; B 25 -17 583 711 ; C -1 ; WX 667 ; N Tcaron ; B 17 -3 650 909 ; C -1 ; WX 476 ; N partialdiff ; B 9 -38 467 718 ; C -1 ; WX 556 ; N ydieresis ; B 10 -266 546 710 ; C -1 ; WX 833 ; N Nacute ; B 35 -16 798 915 ; C -1 ; WX 333 ; N icircumflex ; B -2 -3 335 701 ; C -1 ; WX 611 ; N Ecircumflex ; B 39 -4 577 905 ; C -1 ; WX 500 ; N adieresis ; B 40 -17 478 691 ; C -1 ; WX 500 ; N edieresis ; B 42 -17 461 691 ; C -1 ; WX 444 ; N cacute ; B 37 -17 414 731 ; C -1 ; WX 611 ; N nacute ; B 24 -3 587 711 ; C -1 ; WX 611 ; N umacron ; B 25 -17 583 609 ; C -1 ; WX 833 ; N Ncaron ; B 35 -16 798 909 ; C -1 ; WX 389 ; N Iacute ; B 39 -3 350 915 ; C -1 ; WX 606 ; N plusminus ; B 51 0 555 505 ; C -1 ; WX 606 ; N brokenbar ; B 260 -175 346 675 ; C -1 ; WX 747 ; N registered ; B 26 -17 720 695 ; C -1 ; WX 833 ; N Gbreve ; B 47 -17 776 893 ; C -1 ; WX 389 ; N Idotaccent ; B 39 -3 350 910 ; C -1 ; WX 600 ; N summation ; B 15 -10 586 706 ; C -1 ; WX 611 ; N Egrave ; B 39 -4 577 915 ; C -1 ; WX 389 ; N racute ; B 30 -3 404 711 ; C -1 ; WX 556 ; N omacron ; B 40 -17 517 609 ; C -1 ; WX 667 ; N Zacute ; B 24 -3 627 915 ; C -1 ; WX 667 ; N Zcaron ; B 24 -3 627 909 ; C -1 ; WX 549 ; N greaterequal ; B 26 0 523 682 ; C -1 ; WX 833 ; N Eth ; B 10 -3 786 681 ; C -1 ; WX 722 ; N Ccedilla ; B 44 -225 695 695 ; C -1 ; WX 333 ; N lcommaaccent ; B 24 -266 296 720 ; C -1 ; WX 403 ; N tcaron ; B 22 -17 430 741 ; C -1 ; WX 500 ; N eogonek ; B 42 -215 461 471 ; C -1 ; WX 778 ; N Uogonek ; B 26 -225 760 681 ; C -1 ; WX 778 ; N Aacute ; B 24 -3 757 915 ; C -1 ; WX 778 ; N Adieresis ; B 24 -3 757 895 ; C -1 ; WX 500 ; N egrave ; B 42 -17 461 711 ; C -1 ; WX 500 ; N zacute ; B 16 -3 464 711 ; C -1 ; WX 333 ; N iogonek ; B 34 -225 300 706 ; C -1 ; WX 833 ; N Oacute ; B 47 -17 787 915 ; C -1 ; WX 556 ; N oacute ; B 40 -17 517 711 ; C -1 ; WX 500 ; N amacron ; B 40 -17 478 609 ; C -1 ; WX 444 ; N sacute ; B 39 -17 405 711 ; C -1 ; WX 333 ; N idieresis ; B -8 -3 341 710 ; C -1 ; WX 833 ; N Ocircumflex ; B 47 -17 787 905 ; C -1 ; WX 778 ; N Ugrave ; B 26 -17 760 915 ; C -1 ; WX 614 ; N Delta ; B 6 0 608 688 ; C -1 ; WX 611 ; N thorn ; B 17 -258 563 720 ; C -1 ; WX 300 ; N twosuperior ; B 5 261 295 660 ; C -1 ; WX 833 ; N Odieresis ; B 47 -17 787 895 ; C -1 ; WX 611 ; N mu ; B 25 -225 583 471 ; C -1 ; WX 333 ; N igrave ; B 18 -3 298 711 ; C -1 ; WX 556 ; N ohungarumlaut ; B 40 -17 562 711 ; C -1 ; WX 611 ; N Eogonek ; B 39 -225 581 681 ; C -1 ; WX 611 ; N dcroat ; B 42 -17 607 720 ; C -1 ; WX 750 ; N threequarters ; B 15 -2 735 667 ; C -1 ; WX 611 ; N Scedilla ; B 57 -225 559 695 ; C -1 ; WX 393 ; N lcaron ; B 24 -3 415 724 ; C -1 ; WX 778 ; N Kcommaaccent ; B 39 -266 763 681 ; C -1 ; WX 611 ; N Lacute ; B 39 -4 577 915 ; C -1 ; WX 998 ; N trademark ; B 38 274 961 678 ; C -1 ; WX 500 ; N edotaccent ; B 42 -17 461 707 ; C -1 ; WX 389 ; N Igrave ; B 39 -3 350 915 ; C -1 ; WX 389 ; N Imacron ; B 29 -3 360 833 ; C -1 ; WX 611 ; N Lcaron ; B 39 -4 577 695 ; C -1 ; WX 750 ; N onehalf ; B 9 -2 745 665 ; C -1 ; WX 549 ; N lessequal ; B 26 0 523 682 ; C -1 ; WX 556 ; N ocircumflex ; B 40 -17 517 701 ; C -1 ; WX 611 ; N ntilde ; B 24 -3 587 693 ; C -1 ; WX 778 ; N Uhungarumlaut ; B 26 -17 760 915 ; C -1 ; WX 611 ; N Eacute ; B 39 -4 577 915 ; C -1 ; WX 500 ; N emacron ; B 42 -17 461 629 ; C -1 ; WX 556 ; N gbreve ; B 26 -266 535 689 ; C -1 ; WX 750 ; N onequarter ; B 19 -2 735 665 ; C -1 ; WX 611 ; N Scaron ; B 57 -17 559 909 ; C -1 ; WX 611 ; N Scommaaccent ; B 57 -266 559 695 ; C -1 ; WX 833 ; N Ohungarumlaut ; B 47 -17 787 915 ; C -1 ; WX 400 ; N degree ; B 50 360 350 660 ; C -1 ; WX 556 ; N ograve ; B 40 -17 517 711 ; C -1 ; WX 722 ; N Ccaron ; B 44 -17 695 909 ; C -1 ; WX 611 ; N ugrave ; B 25 -17 583 711 ; C -1 ; WX 453 ; N radical ; B -9 -91 463 765 ; C -1 ; WX 833 ; N Dcaron ; B 35 -3 786 909 ; C -1 ; WX 389 ; N rcommaaccent ; B 30 -266 389 471 ; C -1 ; WX 833 ; N Ntilde ; B 35 -16 798 885 ; C -1 ; WX 556 ; N otilde ; B 40 -17 517 693 ; C -1 ; WX 722 ; N Rcommaaccent ; B 39 -266 708 681 ; C -1 ; WX 611 ; N Lcommaaccent ; B 39 -266 577 681 ; C -1 ; WX 778 ; N Atilde ; B 24 -3 757 885 ; C -1 ; WX 778 ; N Aogonek ; B 24 -225 767 686 ; C -1 ; WX 778 ; N Aring ; B 24 -3 757 924 ; C -1 ; WX 833 ; N Otilde ; B 47 -17 787 885 ; C -1 ; WX 500 ; N zdotaccent ; B 16 -3 464 707 ; C -1 ; WX 611 ; N Ecaron ; B 39 -4 577 909 ; C -1 ; WX 389 ; N Iogonek ; B 39 -225 352 681 ; C -1 ; WX 611 ; N kcommaaccent ; B 21 -266 597 720 ; C -1 ; WX 606 ; N minus ; B 51 212 555 298 ; C -1 ; WX 389 ; N Icircumflex ; B 26 -3 363 905 ; C -1 ; WX 611 ; N ncaron ; B 24 -3 587 705 ; C -1 ; WX 333 ; N tcommaaccent ; B 22 -266 324 632 ; C -1 ; WX 606 ; N logicalnot ; B 51 114 555 396 ; C -1 ; WX 556 ; N odieresis ; B 40 -17 517 710 ; C -1 ; WX 611 ; N udieresis ; B 25 -17 583 710 ; C -1 ; WX 549 ; N notequal ; B 12 -40 537 554 ; C -1 ; WX 556 ; N gcommaaccent ; B 26 -266 535 740 ; C -1 ; WX 556 ; N eth ; B 40 -17 517 720 ; C -1 ; WX 500 ; N zcaron ; B 16 -3 464 705 ; C -1 ; WX 611 ; N ncommaaccent ; B 24 -266 587 471 ; C -1 ; WX 300 ; N onesuperior ; B 14 261 287 665 ; C -1 ; WX 333 ; N imacron ; B 34 -3 298 609 ; EndCharMetrics StartKernData StartKernPairs 828 KPX A T -92 KPX A Tcaron -92 KPX A Tcommaaccent -92 KPX A V -129 KPX A W -90 KPX A Y -111 KPX A Yacute -111 KPX A Ydieresis -111 KPX A quoteright -92 KPX A space -18 KPX A v -70 KPX A w -70 KPX A y -70 KPX A yacute -70 KPX A ydieresis -70 KPX Aacute T -92 KPX Aacute Tcaron -92 KPX Aacute Tcommaaccent -92 KPX Aacute V -129 KPX Aacute W -90 KPX Aacute Y -111 KPX Aacute Yacute -111 KPX Aacute Ydieresis -111 KPX Aacute quoteright -92 KPX Aacute space -18 KPX Aacute v -70 KPX Aacute w -70 KPX Aacute y -70 KPX Aacute yacute -70 KPX Aacute ydieresis -70 KPX Abreve T -92 KPX Abreve Tcaron -92 KPX Abreve Tcommaaccent -92 KPX Abreve V -129 KPX Abreve W -90 KPX Abreve Y -111 KPX Abreve Yacute -111 KPX Abreve Ydieresis -111 KPX Abreve quoteright -92 KPX Abreve space -18 KPX Abreve v -70 KPX Abreve w -70 KPX Abreve y -70 KPX Abreve yacute -70 KPX Abreve ydieresis -70 KPX Acircumflex T -92 KPX Acircumflex Tcaron -92 KPX Acircumflex Tcommaaccent -92 KPX Acircumflex V -129 KPX Acircumflex W -90 KPX Acircumflex Y -111 KPX Acircumflex Yacute -111 KPX Acircumflex Ydieresis -111 KPX Acircumflex quoteright -92 KPX Acircumflex space -18 KPX Acircumflex v -70 KPX Acircumflex w -70 KPX Acircumflex y -70 KPX Acircumflex yacute -70 KPX Acircumflex ydieresis -70 KPX Adieresis T -92 KPX Adieresis Tcaron -92 KPX Adieresis Tcommaaccent -92 KPX Adieresis V -129 KPX Adieresis W -90 KPX Adieresis Y -111 KPX Adieresis Yacute -111 KPX Adieresis Ydieresis -111 KPX Adieresis quoteright -92 KPX Adieresis space -18 KPX Adieresis v -70 KPX Adieresis w -70 KPX Adieresis y -70 KPX Adieresis yacute -70 KPX Adieresis ydieresis -70 KPX Agrave T -92 KPX Agrave Tcaron -92 KPX Agrave Tcommaaccent -92 KPX Agrave V -129 KPX Agrave W -90 KPX Agrave Y -111 KPX Agrave Yacute -111 KPX Agrave Ydieresis -111 KPX Agrave quoteright -92 KPX Agrave space -18 KPX Agrave v -70 KPX Agrave w -70 KPX Agrave y -70 KPX Agrave yacute -70 KPX Agrave ydieresis -70 KPX Amacron T -92 KPX Amacron Tcaron -92 KPX Amacron Tcommaaccent -92 KPX Amacron V -129 KPX Amacron W -90 KPX Amacron Y -111 KPX Amacron Yacute -111 KPX Amacron Ydieresis -111 KPX Amacron quoteright -92 KPX Amacron space -18 KPX Amacron v -70 KPX Amacron w -70 KPX Amacron y -70 KPX Amacron yacute -70 KPX Amacron ydieresis -70 KPX Aogonek T -92 KPX Aogonek Tcaron -92 KPX Aogonek Tcommaaccent -92 KPX Aogonek V -129 KPX Aogonek W -90 KPX Aogonek Y -111 KPX Aogonek Yacute -111 KPX Aogonek Ydieresis -111 KPX Aogonek quoteright -92 KPX Aogonek space -18 KPX Aogonek v -70 KPX Aogonek w -70 KPX Aogonek y -70 KPX Aogonek yacute -70 KPX Aogonek ydieresis -70 KPX Aring T -92 KPX Aring Tcaron -92 KPX Aring Tcommaaccent -92 KPX Aring V -129 KPX Aring W -90 KPX Aring Y -111 KPX Aring Yacute -111 KPX Aring Ydieresis -111 KPX Aring quoteright -92 KPX Aring space -18 KPX Aring v -70 KPX Aring w -70 KPX Aring y -70 KPX Aring yacute -70 KPX Aring ydieresis -70 KPX Atilde T -92 KPX Atilde Tcaron -92 KPX Atilde Tcommaaccent -92 KPX Atilde V -129 KPX Atilde W -90 KPX Atilde Y -111 KPX Atilde Yacute -111 KPX Atilde Ydieresis -111 KPX Atilde quoteright -92 KPX Atilde space -18 KPX Atilde v -70 KPX Atilde w -70 KPX Atilde y -70 KPX Atilde yacute -70 KPX Atilde ydieresis -70 KPX F A -55 KPX F Aacute -55 KPX F Abreve -55 KPX F Acircumflex -55 KPX F Adieresis -55 KPX F Agrave -55 KPX F Amacron -55 KPX F Aogonek -55 KPX F Aring -55 KPX F Atilde -55 KPX F comma -111 KPX F period -111 KPX L T -74 KPX L Tcaron -74 KPX L Tcommaaccent -74 KPX L V -92 KPX L W -92 KPX L Y -92 KPX L Yacute -92 KPX L Ydieresis -92 KPX L quoteright -74 KPX L space -18 KPX L y -74 KPX L yacute -74 KPX L ydieresis -74 KPX Lacute T -74 KPX Lacute Tcaron -74 KPX Lacute Tcommaaccent -74 KPX Lacute V -92 KPX Lacute W -92 KPX Lacute Y -92 KPX Lacute Yacute -92 KPX Lacute Ydieresis -92 KPX Lacute quoteright -74 KPX Lacute space -18 KPX Lacute y -74 KPX Lacute yacute -74 KPX Lacute ydieresis -74 KPX Lcaron quoteright -74 KPX Lcaron space -18 KPX Lcaron y -74 KPX Lcaron yacute -74 KPX Lcaron ydieresis -74 KPX Lcommaaccent T -74 KPX Lcommaaccent Tcaron -74 KPX Lcommaaccent Tcommaaccent -74 KPX Lcommaaccent V -92 KPX Lcommaaccent W -92 KPX Lcommaaccent Y -92 KPX Lcommaaccent Yacute -92 KPX Lcommaaccent Ydieresis -92 KPX Lcommaaccent quoteright -74 KPX Lcommaaccent space -18 KPX Lcommaaccent y -74 KPX Lcommaaccent yacute -74 KPX Lcommaaccent ydieresis -74 KPX Lslash T -74 KPX Lslash Tcaron -74 KPX Lslash Tcommaaccent -74 KPX Lslash V -92 KPX Lslash W -92 KPX Lslash Y -92 KPX Lslash Yacute -92 KPX Lslash Ydieresis -92 KPX Lslash quoteright -74 KPX Lslash space -18 KPX Lslash y -74 KPX Lslash yacute -74 KPX Lslash ydieresis -74 KPX P A -74 KPX P Aacute -74 KPX P Abreve -74 KPX P Acircumflex -74 KPX P Adieresis -74 KPX P Agrave -74 KPX P Amacron -74 KPX P Aogonek -74 KPX P Aring -74 KPX P Atilde -74 KPX P comma -129 KPX P period -129 KPX R T -55 KPX R Tcaron -55 KPX R Tcommaaccent -55 KPX R V -74 KPX R W -37 KPX R Y -55 KPX R Yacute -55 KPX R Ydieresis -55 KPX R y -30 KPX R yacute -30 KPX R ydieresis -30 KPX Racute T -55 KPX Racute Tcaron -55 KPX Racute Tcommaaccent -55 KPX Racute V -74 KPX Racute W -37 KPX Racute Y -55 KPX Racute Yacute -55 KPX Racute Ydieresis -55 KPX Racute y -30 KPX Racute yacute -30 KPX Racute ydieresis -30 KPX Rcaron T -55 KPX Rcaron Tcaron -55 KPX Rcaron Tcommaaccent -55 KPX Rcaron V -74 KPX Rcaron W -37 KPX Rcaron Y -55 KPX Rcaron Yacute -55 KPX Rcaron Ydieresis -55 KPX Rcaron y -30 KPX Rcaron yacute -30 KPX Rcaron ydieresis -30 KPX Rcommaaccent T -55 KPX Rcommaaccent Tcaron -55 KPX Rcommaaccent Tcommaaccent -55 KPX Rcommaaccent V -74 KPX Rcommaaccent W -37 KPX Rcommaaccent Y -55 KPX Rcommaaccent Yacute -55 KPX Rcommaaccent Ydieresis -55 KPX Rcommaaccent y -30 KPX Rcommaaccent yacute -30 KPX Rcommaaccent ydieresis -30 KPX T A -92 KPX T Aacute -92 KPX T Abreve -92 KPX T Acircumflex -92 KPX T Adieresis -92 KPX T Agrave -92 KPX T Amacron -92 KPX T Aogonek -92 KPX T Aring -92 KPX T Atilde -92 KPX T a -111 KPX T aacute -111 KPX T abreve -71 KPX T acircumflex -71 KPX T adieresis -71 KPX T agrave -71 KPX T amacron -71 KPX T aogonek -111 KPX T aring -111 KPX T atilde -111 KPX T c -129 KPX T cacute -129 KPX T ccaron -129 KPX T ccedilla -129 KPX T colon -74 KPX T comma -92 KPX T e -111 KPX T eacute -111 KPX T ecaron -111 KPX T ecircumflex -71 KPX T edieresis -71 KPX T edotaccent -111 KPX T egrave -71 KPX T emacron -71 KPX T eogonek -111 KPX T hyphen -92 KPX T i -55 KPX T iacute -55 KPX T iogonek -55 KPX T o -111 KPX T oacute -111 KPX T ocircumflex -111 KPX T odieresis -111 KPX T ograve -111 KPX T ohungarumlaut -111 KPX T omacron -111 KPX T oslash -111 KPX T otilde -111 KPX T period -92 KPX T r -111 KPX T racute -111 KPX T rcaron -71 KPX T rcommaaccent -111 KPX T s -111 KPX T sacute -111 KPX T scaron -71 KPX T scedilla -111 KPX T scommaaccent -111 KPX T semicolon -74 KPX T u -129 KPX T uacute -129 KPX T ucircumflex -129 KPX T udieresis -129 KPX T ugrave -129 KPX T uhungarumlaut -129 KPX T umacron -129 KPX T uogonek -129 KPX T uring -129 KPX T w -90 KPX T y -90 KPX T yacute -90 KPX T ydieresis -90 KPX Tcaron A -92 KPX Tcaron Aacute -92 KPX Tcaron Abreve -92 KPX Tcaron Acircumflex -92 KPX Tcaron Adieresis -92 KPX Tcaron Agrave -92 KPX Tcaron Amacron -92 KPX Tcaron Aogonek -92 KPX Tcaron Aring -92 KPX Tcaron Atilde -92 KPX Tcaron a -111 KPX Tcaron aacute -111 KPX Tcaron abreve -71 KPX Tcaron acircumflex -71 KPX Tcaron adieresis -71 KPX Tcaron agrave -71 KPX Tcaron amacron -71 KPX Tcaron aogonek -111 KPX Tcaron aring -111 KPX Tcaron atilde -111 KPX Tcaron c -129 KPX Tcaron cacute -129 KPX Tcaron ccaron -129 KPX Tcaron ccedilla -129 KPX Tcaron colon -74 KPX Tcaron comma -92 KPX Tcaron e -111 KPX Tcaron eacute -111 KPX Tcaron ecaron -111 KPX Tcaron ecircumflex -71 KPX Tcaron edieresis -71 KPX Tcaron edotaccent -111 KPX Tcaron egrave -71 KPX Tcaron emacron -71 KPX Tcaron eogonek -111 KPX Tcaron hyphen -92 KPX Tcaron i -55 KPX Tcaron iacute -55 KPX Tcaron iogonek -55 KPX Tcaron o -111 KPX Tcaron oacute -111 KPX Tcaron ocircumflex -111 KPX Tcaron odieresis -111 KPX Tcaron ograve -111 KPX Tcaron ohungarumlaut -111 KPX Tcaron omacron -111 KPX Tcaron oslash -111 KPX Tcaron otilde -111 KPX Tcaron period -92 KPX Tcaron r -111 KPX Tcaron racute -111 KPX Tcaron rcaron -71 KPX Tcaron rcommaaccent -111 KPX Tcaron s -111 KPX Tcaron sacute -111 KPX Tcaron scaron -71 KPX Tcaron scedilla -111 KPX Tcaron scommaaccent -111 KPX Tcaron semicolon -74 KPX Tcaron u -129 KPX Tcaron uacute -129 KPX Tcaron ucircumflex -129 KPX Tcaron udieresis -129 KPX Tcaron ugrave -129 KPX Tcaron uhungarumlaut -129 KPX Tcaron umacron -129 KPX Tcaron uogonek -129 KPX Tcaron uring -129 KPX Tcaron w -90 KPX Tcaron y -90 KPX Tcaron yacute -90 KPX Tcaron ydieresis -90 KPX Tcommaaccent A -92 KPX Tcommaaccent Aacute -92 KPX Tcommaaccent Abreve -92 KPX Tcommaaccent Acircumflex -92 KPX Tcommaaccent Adieresis -92 KPX Tcommaaccent Agrave -92 KPX Tcommaaccent Amacron -92 KPX Tcommaaccent Aogonek -92 KPX Tcommaaccent Aring -92 KPX Tcommaaccent Atilde -92 KPX Tcommaaccent a -111 KPX Tcommaaccent aacute -111 KPX Tcommaaccent abreve -71 KPX Tcommaaccent acircumflex -71 KPX Tcommaaccent adieresis -71 KPX Tcommaaccent agrave -71 KPX Tcommaaccent amacron -71 KPX Tcommaaccent aogonek -111 KPX Tcommaaccent aring -111 KPX Tcommaaccent atilde -111 KPX Tcommaaccent c -129 KPX Tcommaaccent cacute -129 KPX Tcommaaccent ccaron -129 KPX Tcommaaccent ccedilla -129 KPX Tcommaaccent colon -74 KPX Tcommaaccent comma -92 KPX Tcommaaccent e -111 KPX Tcommaaccent eacute -111 KPX Tcommaaccent ecaron -111 KPX Tcommaaccent ecircumflex -71 KPX Tcommaaccent edieresis -71 KPX Tcommaaccent edotaccent -111 KPX Tcommaaccent egrave -71 KPX Tcommaaccent emacron -71 KPX Tcommaaccent eogonek -111 KPX Tcommaaccent hyphen -92 KPX Tcommaaccent i -55 KPX Tcommaaccent iacute -55 KPX Tcommaaccent iogonek -55 KPX Tcommaaccent o -111 KPX Tcommaaccent oacute -111 KPX Tcommaaccent ocircumflex -111 KPX Tcommaaccent odieresis -111 KPX Tcommaaccent ograve -111 KPX Tcommaaccent ohungarumlaut -111 KPX Tcommaaccent omacron -111 KPX Tcommaaccent oslash -111 KPX Tcommaaccent otilde -111 KPX Tcommaaccent period -92 KPX Tcommaaccent r -111 KPX Tcommaaccent racute -111 KPX Tcommaaccent rcaron -71 KPX Tcommaaccent rcommaaccent -111 KPX Tcommaaccent s -111 KPX Tcommaaccent sacute -111 KPX Tcommaaccent scaron -71 KPX Tcommaaccent scedilla -111 KPX Tcommaaccent scommaaccent -111 KPX Tcommaaccent semicolon -74 KPX Tcommaaccent u -129 KPX Tcommaaccent uacute -129 KPX Tcommaaccent ucircumflex -129 KPX Tcommaaccent udieresis -129 KPX Tcommaaccent ugrave -129 KPX Tcommaaccent uhungarumlaut -129 KPX Tcommaaccent umacron -129 KPX Tcommaaccent uogonek -129 KPX Tcommaaccent uring -129 KPX Tcommaaccent w -90 KPX Tcommaaccent y -90 KPX Tcommaaccent yacute -90 KPX Tcommaaccent ydieresis -90 KPX V A -129 KPX V Aacute -129 KPX V Abreve -129 KPX V Acircumflex -129 KPX V Adieresis -129 KPX V Agrave -129 KPX V Amacron -129 KPX V Aogonek -129 KPX V Aring -129 KPX V Atilde -129 KPX V a -111 KPX V aacute -111 KPX V abreve -71 KPX V acircumflex -111 KPX V adieresis -111 KPX V agrave -111 KPX V amacron -111 KPX V aogonek -111 KPX V aring -111 KPX V atilde -71 KPX V colon -74 KPX V comma -129 KPX V e -111 KPX V eacute -111 KPX V ecaron -111 KPX V ecircumflex -111 KPX V edieresis -111 KPX V edotaccent -111 KPX V egrave -111 KPX V emacron -111 KPX V eogonek -111 KPX V hyphen -92 KPX V i -55 KPX V iacute -55 KPX V iogonek -55 KPX V o -111 KPX V oacute -111 KPX V ocircumflex -111 KPX V odieresis -111 KPX V ograve -111 KPX V ohungarumlaut -111 KPX V omacron -111 KPX V oslash -111 KPX V otilde -111 KPX V period -129 KPX V r -111 KPX V racute -111 KPX V rcaron -71 KPX V rcommaaccent -111 KPX V semicolon -74 KPX V u -92 KPX V uacute -92 KPX V ucircumflex -92 KPX V udieresis -92 KPX V ugrave -92 KPX V uhungarumlaut -92 KPX V umacron -92 KPX V uogonek -92 KPX V uring -92 KPX V y -90 KPX V yacute -90 KPX V ydieresis -90 KPX W A -90 KPX W Aacute -90 KPX W Abreve -90 KPX W Acircumflex -90 KPX W Adieresis -90 KPX W Agrave -90 KPX W Amacron -90 KPX W Aogonek -90 KPX W Aring -90 KPX W Atilde -90 KPX W a -74 KPX W aacute -74 KPX W abreve -74 KPX W acircumflex -74 KPX W adieresis -74 KPX W agrave -74 KPX W amacron -74 KPX W aogonek -74 KPX W aring -74 KPX W atilde -74 KPX W colon -37 KPX W comma -92 KPX W e -74 KPX W eacute -74 KPX W ecaron -74 KPX W ecircumflex -74 KPX W edieresis -74 KPX W edotaccent -74 KPX W egrave -74 KPX W emacron -74 KPX W eogonek -74 KPX W hyphen -37 KPX W i -37 KPX W iacute -37 KPX W iogonek -37 KPX W o -74 KPX W oacute -74 KPX W ocircumflex -74 KPX W odieresis -74 KPX W ograve -74 KPX W ohungarumlaut -74 KPX W omacron -74 KPX W oslash -74 KPX W otilde -74 KPX W period -37 KPX W r -74 KPX W racute -74 KPX W rcaron -74 KPX W rcommaaccent -74 KPX W semicolon -37 KPX W u -74 KPX W uacute -74 KPX W ucircumflex -74 KPX W udieresis -74 KPX W ugrave -74 KPX W uhungarumlaut -74 KPX W umacron -74 KPX W uogonek -74 KPX W uring -74 KPX W y -74 KPX W yacute -74 KPX W ydieresis -74 KPX Y A -55 KPX Y Aacute -55 KPX Y Abreve -55 KPX Y Acircumflex -55 KPX Y Adieresis -55 KPX Y Agrave -55 KPX Y Amacron -55 KPX Y Aogonek -55 KPX Y Aring -55 KPX Y Atilde -55 KPX Y a -74 KPX Y aacute -74 KPX Y abreve -74 KPX Y acircumflex -74 KPX Y adieresis -74 KPX Y agrave -74 KPX Y amacron -74 KPX Y aogonek -74 KPX Y aring -74 KPX Y atilde -74 KPX Y colon -55 KPX Y comma -74 KPX Y e -74 KPX Y eacute -74 KPX Y ecaron -74 KPX Y ecircumflex -74 KPX Y edieresis -74 KPX Y edotaccent -74 KPX Y egrave -74 KPX Y emacron -74 KPX Y eogonek -74 KPX Y hyphen -74 KPX Y i -55 KPX Y iacute -55 KPX Y iogonek -55 KPX Y o -74 KPX Y oacute -74 KPX Y ocircumflex -74 KPX Y odieresis -74 KPX Y ograve -74 KPX Y ohungarumlaut -74 KPX Y omacron -74 KPX Y oslash -74 KPX Y otilde -74 KPX Y p -74 KPX Y period -74 KPX Y q -92 KPX Y semicolon -55 KPX Y u -74 KPX Y uacute -74 KPX Y ucircumflex -74 KPX Y udieresis -74 KPX Y ugrave -74 KPX Y uhungarumlaut -74 KPX Y umacron -74 KPX Y uogonek -74 KPX Y uring -74 KPX Y v -74 KPX Yacute A -55 KPX Yacute Aacute -55 KPX Yacute Abreve -55 KPX Yacute Acircumflex -55 KPX Yacute Adieresis -55 KPX Yacute Agrave -55 KPX Yacute Amacron -55 KPX Yacute Aogonek -55 KPX Yacute Aring -55 KPX Yacute Atilde -55 KPX Yacute a -74 KPX Yacute aacute -74 KPX Yacute abreve -74 KPX Yacute acircumflex -74 KPX Yacute adieresis -74 KPX Yacute agrave -74 KPX Yacute amacron -74 KPX Yacute aogonek -74 KPX Yacute aring -74 KPX Yacute atilde -74 KPX Yacute colon -55 KPX Yacute comma -74 KPX Yacute e -74 KPX Yacute eacute -74 KPX Yacute ecaron -74 KPX Yacute ecircumflex -74 KPX Yacute edieresis -74 KPX Yacute edotaccent -74 KPX Yacute egrave -74 KPX Yacute emacron -74 KPX Yacute eogonek -74 KPX Yacute hyphen -74 KPX Yacute i -55 KPX Yacute iacute -55 KPX Yacute iogonek -55 KPX Yacute o -74 KPX Yacute oacute -74 KPX Yacute ocircumflex -74 KPX Yacute odieresis -74 KPX Yacute ograve -74 KPX Yacute ohungarumlaut -74 KPX Yacute omacron -74 KPX Yacute oslash -74 KPX Yacute otilde -74 KPX Yacute p -74 KPX Yacute period -74 KPX Yacute q -92 KPX Yacute semicolon -55 KPX Yacute u -74 KPX Yacute uacute -74 KPX Yacute ucircumflex -74 KPX Yacute udieresis -74 KPX Yacute ugrave -74 KPX Yacute uhungarumlaut -74 KPX Yacute umacron -74 KPX Yacute uogonek -74 KPX Yacute uring -74 KPX Yacute v -74 KPX Ydieresis A -55 KPX Ydieresis Aacute -55 KPX Ydieresis Abreve -55 KPX Ydieresis Acircumflex -55 KPX Ydieresis Adieresis -55 KPX Ydieresis Agrave -55 KPX Ydieresis Amacron -55 KPX Ydieresis Aogonek -55 KPX Ydieresis Aring -55 KPX Ydieresis Atilde -55 KPX Ydieresis a -74 KPX Ydieresis aacute -74 KPX Ydieresis abreve -74 KPX Ydieresis acircumflex -74 KPX Ydieresis adieresis -74 KPX Ydieresis agrave -74 KPX Ydieresis amacron -74 KPX Ydieresis aogonek -74 KPX Ydieresis aring -74 KPX Ydieresis atilde -74 KPX Ydieresis colon -55 KPX Ydieresis comma -74 KPX Ydieresis e -74 KPX Ydieresis eacute -74 KPX Ydieresis ecaron -74 KPX Ydieresis ecircumflex -74 KPX Ydieresis edieresis -74 KPX Ydieresis edotaccent -74 KPX Ydieresis egrave -74 KPX Ydieresis emacron -74 KPX Ydieresis eogonek -74 KPX Ydieresis hyphen -74 KPX Ydieresis i -55 KPX Ydieresis iacute -55 KPX Ydieresis iogonek -55 KPX Ydieresis o -74 KPX Ydieresis oacute -74 KPX Ydieresis ocircumflex -74 KPX Ydieresis odieresis -74 KPX Ydieresis ograve -74 KPX Ydieresis ohungarumlaut -74 KPX Ydieresis omacron -74 KPX Ydieresis oslash -74 KPX Ydieresis otilde -74 KPX Ydieresis p -74 KPX Ydieresis period -74 KPX Ydieresis q -92 KPX Ydieresis semicolon -55 KPX Ydieresis u -74 KPX Ydieresis uacute -74 KPX Ydieresis ucircumflex -74 KPX Ydieresis udieresis -74 KPX Ydieresis ugrave -74 KPX Ydieresis uhungarumlaut -74 KPX Ydieresis umacron -74 KPX Ydieresis uogonek -74 KPX Ydieresis uring -74 KPX Ydieresis v -74 KPX f f -18 KPX f quoteright 37 KPX one one -37 KPX quoteleft quoteleft -55 KPX quoteright quoteright -55 KPX quoteright s -55 KPX quoteright sacute -55 KPX quoteright scaron -55 KPX quoteright scedilla -55 KPX quoteright scommaaccent -55 KPX quoteright space -55 KPX quoteright t -18 KPX quoteright tcommaaccent -18 KPX r comma -55 KPX r hyphen -18 KPX r period -55 KPX r quoteright 55 KPX racute comma -55 KPX racute hyphen -18 KPX racute period -55 KPX racute quoteright 55 KPX rcaron comma -55 KPX rcaron hyphen -18 KPX rcaron period -55 KPX rcaron quoteright 55 KPX rcommaaccent comma -55 KPX rcommaaccent hyphen -18 KPX rcommaaccent period -55 KPX rcommaaccent quoteright 55 KPX v comma -111 KPX v period -111 KPX w comma -92 KPX w period -92 KPX y comma -92 KPX y period -92 KPX yacute comma -92 KPX yacute period -92 KPX ydieresis comma -92 KPX ydieresis period -92 EndKernPairs EndKernData EndFontMetrics gle-graphics-4.2.4c/src/fonts/Adobe-Core35_AFMs-314/Helvetica-Oblique.afm0000664000000000000000000022113011405446017024064 0ustar rootrootStartFontMetrics 4.1 Comment Copyright (c) 1985, 1987, 1989, 1990, 1997 Adobe Systems Incorporated. All Rights Reserved. Comment Creation Date: Thu May 1 12:44:31 1997 Comment UniqueID 43055 Comment VMusage 14960 69346 FontName Helvetica-Oblique FullName Helvetica Oblique FamilyName Helvetica Weight Medium ItalicAngle -12 IsFixedPitch false FontBBox -170 -225 1116 931 UnderlinePosition -100 UnderlineThickness 50 Version 002.000 Notice Copyright (c) 1985, 1987, 1989, 1990, 1997 Adobe Systems Incorporated. All Rights Reserved.Helvetica is a trademark of Linotype-Hell AG and/or its subsidiaries. EncodingScheme AdobeStandardEncoding CapHeight 718 XHeight 523 Ascender 718 Descender -207 StdHW 76 StdVW 88 StartCharMetrics 314 C 32 ; WX 278 ; N space ; B 0 0 0 0 ; C 33 ; WX 278 ; N exclam ; B 90 0 340 718 ; C 34 ; WX 355 ; N quotedbl ; B 168 463 438 718 ; C 35 ; WX 556 ; N numbersign ; B 73 0 631 688 ; C 36 ; WX 556 ; N dollar ; B 69 -115 617 775 ; C 37 ; WX 889 ; N percent ; B 147 -19 889 703 ; C 38 ; WX 667 ; N ampersand ; B 77 -15 647 718 ; C 39 ; WX 222 ; N quoteright ; B 151 463 310 718 ; C 40 ; WX 333 ; N parenleft ; B 108 -207 454 733 ; C 41 ; WX 333 ; N parenright ; B -9 -207 337 733 ; C 42 ; WX 389 ; N asterisk ; B 165 431 475 718 ; C 43 ; WX 584 ; N plus ; B 85 0 606 505 ; C 44 ; WX 278 ; N comma ; B 56 -147 214 106 ; C 45 ; WX 333 ; N hyphen ; B 93 232 357 322 ; C 46 ; WX 278 ; N period ; B 87 0 214 106 ; C 47 ; WX 278 ; N slash ; B -21 -19 452 737 ; C 48 ; WX 556 ; N zero ; B 93 -19 608 703 ; C 49 ; WX 556 ; N one ; B 207 0 508 703 ; C 50 ; WX 556 ; N two ; B 26 0 617 703 ; C 51 ; WX 556 ; N three ; B 75 -19 610 703 ; C 52 ; WX 556 ; N four ; B 61 0 576 703 ; C 53 ; WX 556 ; N five ; B 68 -19 621 688 ; C 54 ; WX 556 ; N six ; B 91 -19 615 703 ; C 55 ; WX 556 ; N seven ; B 137 0 669 688 ; C 56 ; WX 556 ; N eight ; B 74 -19 607 703 ; C 57 ; WX 556 ; N nine ; B 82 -19 609 703 ; C 58 ; WX 278 ; N colon ; B 87 0 301 516 ; C 59 ; WX 278 ; N semicolon ; B 56 -147 301 516 ; C 60 ; WX 584 ; N less ; B 94 11 641 495 ; C 61 ; WX 584 ; N equal ; B 63 115 628 390 ; C 62 ; WX 584 ; N greater ; B 50 11 597 495 ; C 63 ; WX 556 ; N question ; B 161 0 610 727 ; C 64 ; WX 1015 ; N at ; B 215 -19 965 737 ; C 65 ; WX 667 ; N A ; B 14 0 654 718 ; C 66 ; WX 667 ; N B ; B 74 0 712 718 ; C 67 ; WX 722 ; N C ; B 108 -19 782 737 ; C 68 ; WX 722 ; N D ; B 81 0 764 718 ; C 69 ; WX 667 ; N E ; B 86 0 762 718 ; C 70 ; WX 611 ; N F ; B 86 0 736 718 ; C 71 ; WX 778 ; N G ; B 111 -19 799 737 ; C 72 ; WX 722 ; N H ; B 77 0 799 718 ; C 73 ; WX 278 ; N I ; B 91 0 341 718 ; C 74 ; WX 500 ; N J ; B 47 -19 581 718 ; C 75 ; WX 667 ; N K ; B 76 0 808 718 ; C 76 ; WX 556 ; N L ; B 76 0 555 718 ; C 77 ; WX 833 ; N M ; B 73 0 914 718 ; C 78 ; WX 722 ; N N ; B 76 0 799 718 ; C 79 ; WX 778 ; N O ; B 105 -19 826 737 ; C 80 ; WX 667 ; N P ; B 86 0 737 718 ; C 81 ; WX 778 ; N Q ; B 105 -56 826 737 ; C 82 ; WX 722 ; N R ; B 88 0 773 718 ; C 83 ; WX 667 ; N S ; B 90 -19 713 737 ; C 84 ; WX 611 ; N T ; B 148 0 750 718 ; C 85 ; WX 722 ; N U ; B 123 -19 797 718 ; C 86 ; WX 667 ; N V ; B 173 0 800 718 ; C 87 ; WX 944 ; N W ; B 169 0 1081 718 ; C 88 ; WX 667 ; N X ; B 19 0 790 718 ; C 89 ; WX 667 ; N Y ; B 167 0 806 718 ; C 90 ; WX 611 ; N Z ; B 23 0 741 718 ; C 91 ; WX 278 ; N bracketleft ; B 21 -196 403 722 ; C 92 ; WX 278 ; N backslash ; B 140 -19 291 737 ; C 93 ; WX 278 ; N bracketright ; B -14 -196 368 722 ; C 94 ; WX 469 ; N asciicircum ; B 42 264 539 688 ; C 95 ; WX 556 ; N underscore ; B -27 -125 540 -75 ; C 96 ; WX 222 ; N quoteleft ; B 165 470 323 725 ; C 97 ; WX 556 ; N a ; B 61 -15 559 538 ; C 98 ; WX 556 ; N b ; B 58 -15 584 718 ; C 99 ; WX 500 ; N c ; B 74 -15 553 538 ; C 100 ; WX 556 ; N d ; B 84 -15 652 718 ; C 101 ; WX 556 ; N e ; B 84 -15 578 538 ; C 102 ; WX 278 ; N f ; B 86 0 416 728 ; L i fi ; L l fl ; C 103 ; WX 556 ; N g ; B 42 -220 610 538 ; C 104 ; WX 556 ; N h ; B 65 0 573 718 ; C 105 ; WX 222 ; N i ; B 67 0 308 718 ; C 106 ; WX 222 ; N j ; B -60 -210 308 718 ; C 107 ; WX 500 ; N k ; B 67 0 600 718 ; C 108 ; WX 222 ; N l ; B 67 0 308 718 ; C 109 ; WX 833 ; N m ; B 65 0 852 538 ; C 110 ; WX 556 ; N n ; B 65 0 573 538 ; C 111 ; WX 556 ; N o ; B 83 -14 585 538 ; C 112 ; WX 556 ; N p ; B 14 -207 584 538 ; C 113 ; WX 556 ; N q ; B 84 -207 605 538 ; C 114 ; WX 333 ; N r ; B 77 0 446 538 ; C 115 ; WX 500 ; N s ; B 63 -15 529 538 ; C 116 ; WX 278 ; N t ; B 102 -7 368 669 ; C 117 ; WX 556 ; N u ; B 94 -15 600 523 ; C 118 ; WX 500 ; N v ; B 119 0 603 523 ; C 119 ; WX 722 ; N w ; B 125 0 820 523 ; C 120 ; WX 500 ; N x ; B 11 0 594 523 ; C 121 ; WX 500 ; N y ; B 15 -214 600 523 ; C 122 ; WX 500 ; N z ; B 31 0 571 523 ; C 123 ; WX 334 ; N braceleft ; B 92 -196 445 722 ; C 124 ; WX 260 ; N bar ; B 46 -225 332 775 ; C 125 ; WX 334 ; N braceright ; B 0 -196 354 722 ; C 126 ; WX 584 ; N asciitilde ; B 111 180 580 326 ; C 161 ; WX 333 ; N exclamdown ; B 77 -195 326 523 ; C 162 ; WX 556 ; N cent ; B 95 -115 584 623 ; C 163 ; WX 556 ; N sterling ; B 49 -16 634 718 ; C 164 ; WX 167 ; N fraction ; B -170 -19 482 703 ; C 165 ; WX 556 ; N yen ; B 81 0 699 688 ; C 166 ; WX 556 ; N florin ; B -52 -207 654 737 ; C 167 ; WX 556 ; N section ; B 76 -191 584 737 ; C 168 ; WX 556 ; N currency ; B 60 99 646 603 ; C 169 ; WX 191 ; N quotesingle ; B 157 463 285 718 ; C 170 ; WX 333 ; N quotedblleft ; B 138 470 461 725 ; C 171 ; WX 556 ; N guillemotleft ; B 146 108 554 446 ; C 172 ; WX 333 ; N guilsinglleft ; B 137 108 340 446 ; C 173 ; WX 333 ; N guilsinglright ; B 111 108 314 446 ; C 174 ; WX 500 ; N fi ; B 86 0 587 728 ; C 175 ; WX 500 ; N fl ; B 86 0 585 728 ; C 177 ; WX 556 ; N endash ; B 51 240 623 313 ; C 178 ; WX 556 ; N dagger ; B 135 -159 622 718 ; C 179 ; WX 556 ; N daggerdbl ; B 52 -159 623 718 ; C 180 ; WX 278 ; N periodcentered ; B 129 190 257 315 ; C 182 ; WX 537 ; N paragraph ; B 126 -173 650 718 ; C 183 ; WX 350 ; N bullet ; B 91 202 413 517 ; C 184 ; WX 222 ; N quotesinglbase ; B 21 -149 180 106 ; C 185 ; WX 333 ; N quotedblbase ; B -6 -149 318 106 ; C 186 ; WX 333 ; N quotedblright ; B 124 463 448 718 ; C 187 ; WX 556 ; N guillemotright ; B 120 108 528 446 ; C 188 ; WX 1000 ; N ellipsis ; B 115 0 908 106 ; C 189 ; WX 1000 ; N perthousand ; B 88 -19 1029 703 ; C 191 ; WX 611 ; N questiondown ; B 85 -201 534 525 ; C 193 ; WX 333 ; N grave ; B 170 593 337 734 ; C 194 ; WX 333 ; N acute ; B 248 593 475 734 ; C 195 ; WX 333 ; N circumflex ; B 147 593 438 734 ; C 196 ; WX 333 ; N tilde ; B 125 606 490 722 ; C 197 ; WX 333 ; N macron ; B 143 627 468 684 ; C 198 ; WX 333 ; N breve ; B 167 595 476 731 ; C 199 ; WX 333 ; N dotaccent ; B 249 604 362 706 ; C 200 ; WX 333 ; N dieresis ; B 168 604 443 706 ; C 202 ; WX 333 ; N ring ; B 214 572 402 756 ; C 203 ; WX 333 ; N cedilla ; B 2 -225 232 0 ; C 205 ; WX 333 ; N hungarumlaut ; B 157 593 565 734 ; C 206 ; WX 333 ; N ogonek ; B 43 -225 249 0 ; C 207 ; WX 333 ; N caron ; B 177 593 468 734 ; C 208 ; WX 1000 ; N emdash ; B 51 240 1067 313 ; C 225 ; WX 1000 ; N AE ; B 8 0 1097 718 ; C 227 ; WX 370 ; N ordfeminine ; B 127 405 449 737 ; C 232 ; WX 556 ; N Lslash ; B 41 0 555 718 ; C 233 ; WX 778 ; N Oslash ; B 43 -19 890 737 ; C 234 ; WX 1000 ; N OE ; B 98 -19 1116 737 ; C 235 ; WX 365 ; N ordmasculine ; B 141 405 468 737 ; C 241 ; WX 889 ; N ae ; B 61 -15 909 538 ; C 245 ; WX 278 ; N dotlessi ; B 95 0 294 523 ; C 248 ; WX 222 ; N lslash ; B 41 0 347 718 ; C 249 ; WX 611 ; N oslash ; B 29 -22 647 545 ; C 250 ; WX 944 ; N oe ; B 83 -15 964 538 ; C 251 ; WX 611 ; N germandbls ; B 67 -15 658 728 ; C -1 ; WX 278 ; N Idieresis ; B 91 0 458 901 ; C -1 ; WX 556 ; N eacute ; B 84 -15 587 734 ; C -1 ; WX 556 ; N abreve ; B 61 -15 578 731 ; C -1 ; WX 556 ; N uhungarumlaut ; B 94 -15 677 734 ; C -1 ; WX 556 ; N ecaron ; B 84 -15 580 734 ; C -1 ; WX 667 ; N Ydieresis ; B 167 0 806 901 ; C -1 ; WX 584 ; N divide ; B 85 -19 606 524 ; C -1 ; WX 667 ; N Yacute ; B 167 0 806 929 ; C -1 ; WX 667 ; N Acircumflex ; B 14 0 654 929 ; C -1 ; WX 556 ; N aacute ; B 61 -15 587 734 ; C -1 ; WX 722 ; N Ucircumflex ; B 123 -19 797 929 ; C -1 ; WX 500 ; N yacute ; B 15 -214 600 734 ; C -1 ; WX 500 ; N scommaaccent ; B 63 -225 529 538 ; C -1 ; WX 556 ; N ecircumflex ; B 84 -15 578 734 ; C -1 ; WX 722 ; N Uring ; B 123 -19 797 931 ; C -1 ; WX 722 ; N Udieresis ; B 123 -19 797 901 ; C -1 ; WX 556 ; N aogonek ; B 61 -220 559 538 ; C -1 ; WX 722 ; N Uacute ; B 123 -19 797 929 ; C -1 ; WX 556 ; N uogonek ; B 94 -225 600 523 ; C -1 ; WX 667 ; N Edieresis ; B 86 0 762 901 ; C -1 ; WX 722 ; N Dcroat ; B 69 0 764 718 ; C -1 ; WX 250 ; N commaaccent ; B 39 -225 172 -40 ; C -1 ; WX 737 ; N copyright ; B 54 -19 837 737 ; C -1 ; WX 667 ; N Emacron ; B 86 0 762 879 ; C -1 ; WX 500 ; N ccaron ; B 74 -15 553 734 ; C -1 ; WX 556 ; N aring ; B 61 -15 559 756 ; C -1 ; WX 722 ; N Ncommaaccent ; B 76 -225 799 718 ; C -1 ; WX 222 ; N lacute ; B 67 0 461 929 ; C -1 ; WX 556 ; N agrave ; B 61 -15 559 734 ; C -1 ; WX 611 ; N Tcommaaccent ; B 148 -225 750 718 ; C -1 ; WX 722 ; N Cacute ; B 108 -19 782 929 ; C -1 ; WX 556 ; N atilde ; B 61 -15 592 722 ; C -1 ; WX 667 ; N Edotaccent ; B 86 0 762 901 ; C -1 ; WX 500 ; N scaron ; B 63 -15 552 734 ; C -1 ; WX 500 ; N scedilla ; B 63 -225 529 538 ; C -1 ; WX 278 ; N iacute ; B 95 0 448 734 ; C -1 ; WX 471 ; N lozenge ; B 88 0 540 728 ; C -1 ; WX 722 ; N Rcaron ; B 88 0 773 929 ; C -1 ; WX 778 ; N Gcommaaccent ; B 111 -225 799 737 ; C -1 ; WX 556 ; N ucircumflex ; B 94 -15 600 734 ; C -1 ; WX 556 ; N acircumflex ; B 61 -15 559 734 ; C -1 ; WX 667 ; N Amacron ; B 14 0 677 879 ; C -1 ; WX 333 ; N rcaron ; B 77 0 508 734 ; C -1 ; WX 500 ; N ccedilla ; B 74 -225 553 538 ; C -1 ; WX 611 ; N Zdotaccent ; B 23 0 741 901 ; C -1 ; WX 667 ; N Thorn ; B 86 0 712 718 ; C -1 ; WX 778 ; N Omacron ; B 105 -19 826 879 ; C -1 ; WX 722 ; N Racute ; B 88 0 773 929 ; C -1 ; WX 667 ; N Sacute ; B 90 -19 713 929 ; C -1 ; WX 643 ; N dcaron ; B 84 -15 808 718 ; C -1 ; WX 722 ; N Umacron ; B 123 -19 797 879 ; C -1 ; WX 556 ; N uring ; B 94 -15 600 756 ; C -1 ; WX 333 ; N threesuperior ; B 90 270 436 703 ; C -1 ; WX 778 ; N Ograve ; B 105 -19 826 929 ; C -1 ; WX 667 ; N Agrave ; B 14 0 654 929 ; C -1 ; WX 667 ; N Abreve ; B 14 0 685 926 ; C -1 ; WX 584 ; N multiply ; B 50 0 642 506 ; C -1 ; WX 556 ; N uacute ; B 94 -15 600 734 ; C -1 ; WX 611 ; N Tcaron ; B 148 0 750 929 ; C -1 ; WX 476 ; N partialdiff ; B 41 -38 550 714 ; C -1 ; WX 500 ; N ydieresis ; B 15 -214 600 706 ; C -1 ; WX 722 ; N Nacute ; B 76 0 799 929 ; C -1 ; WX 278 ; N icircumflex ; B 95 0 411 734 ; C -1 ; WX 667 ; N Ecircumflex ; B 86 0 762 929 ; C -1 ; WX 556 ; N adieresis ; B 61 -15 559 706 ; C -1 ; WX 556 ; N edieresis ; B 84 -15 578 706 ; C -1 ; WX 500 ; N cacute ; B 74 -15 559 734 ; C -1 ; WX 556 ; N nacute ; B 65 0 587 734 ; C -1 ; WX 556 ; N umacron ; B 94 -15 600 684 ; C -1 ; WX 722 ; N Ncaron ; B 76 0 799 929 ; C -1 ; WX 278 ; N Iacute ; B 91 0 489 929 ; C -1 ; WX 584 ; N plusminus ; B 39 0 618 506 ; C -1 ; WX 260 ; N brokenbar ; B 62 -150 316 700 ; C -1 ; WX 737 ; N registered ; B 54 -19 837 737 ; C -1 ; WX 778 ; N Gbreve ; B 111 -19 799 926 ; C -1 ; WX 278 ; N Idotaccent ; B 91 0 377 901 ; C -1 ; WX 600 ; N summation ; B 15 -10 671 706 ; C -1 ; WX 667 ; N Egrave ; B 86 0 762 929 ; C -1 ; WX 333 ; N racute ; B 77 0 475 734 ; C -1 ; WX 556 ; N omacron ; B 83 -14 585 684 ; C -1 ; WX 611 ; N Zacute ; B 23 0 741 929 ; C -1 ; WX 611 ; N Zcaron ; B 23 0 741 929 ; C -1 ; WX 549 ; N greaterequal ; B 26 0 620 674 ; C -1 ; WX 722 ; N Eth ; B 69 0 764 718 ; C -1 ; WX 722 ; N Ccedilla ; B 108 -225 782 737 ; C -1 ; WX 222 ; N lcommaaccent ; B 25 -225 308 718 ; C -1 ; WX 317 ; N tcaron ; B 102 -7 501 808 ; C -1 ; WX 556 ; N eogonek ; B 84 -225 578 538 ; C -1 ; WX 722 ; N Uogonek ; B 123 -225 797 718 ; C -1 ; WX 667 ; N Aacute ; B 14 0 683 929 ; C -1 ; WX 667 ; N Adieresis ; B 14 0 654 901 ; C -1 ; WX 556 ; N egrave ; B 84 -15 578 734 ; C -1 ; WX 500 ; N zacute ; B 31 0 571 734 ; C -1 ; WX 222 ; N iogonek ; B -61 -225 308 718 ; C -1 ; WX 778 ; N Oacute ; B 105 -19 826 929 ; C -1 ; WX 556 ; N oacute ; B 83 -14 587 734 ; C -1 ; WX 556 ; N amacron ; B 61 -15 580 684 ; C -1 ; WX 500 ; N sacute ; B 63 -15 559 734 ; C -1 ; WX 278 ; N idieresis ; B 95 0 416 706 ; C -1 ; WX 778 ; N Ocircumflex ; B 105 -19 826 929 ; C -1 ; WX 722 ; N Ugrave ; B 123 -19 797 929 ; C -1 ; WX 612 ; N Delta ; B 6 0 608 688 ; C -1 ; WX 556 ; N thorn ; B 14 -207 584 718 ; C -1 ; WX 333 ; N twosuperior ; B 64 281 449 703 ; C -1 ; WX 778 ; N Odieresis ; B 105 -19 826 901 ; C -1 ; WX 556 ; N mu ; B 24 -207 600 523 ; C -1 ; WX 278 ; N igrave ; B 95 0 310 734 ; C -1 ; WX 556 ; N ohungarumlaut ; B 83 -14 677 734 ; C -1 ; WX 667 ; N Eogonek ; B 86 -220 762 718 ; C -1 ; WX 556 ; N dcroat ; B 84 -15 689 718 ; C -1 ; WX 834 ; N threequarters ; B 130 -19 861 703 ; C -1 ; WX 667 ; N Scedilla ; B 90 -225 713 737 ; C -1 ; WX 299 ; N lcaron ; B 67 0 464 718 ; C -1 ; WX 667 ; N Kcommaaccent ; B 76 -225 808 718 ; C -1 ; WX 556 ; N Lacute ; B 76 0 555 929 ; C -1 ; WX 1000 ; N trademark ; B 186 306 1056 718 ; C -1 ; WX 556 ; N edotaccent ; B 84 -15 578 706 ; C -1 ; WX 278 ; N Igrave ; B 91 0 351 929 ; C -1 ; WX 278 ; N Imacron ; B 91 0 483 879 ; C -1 ; WX 556 ; N Lcaron ; B 76 0 570 718 ; C -1 ; WX 834 ; N onehalf ; B 114 -19 839 703 ; C -1 ; WX 549 ; N lessequal ; B 26 0 666 674 ; C -1 ; WX 556 ; N ocircumflex ; B 83 -14 585 734 ; C -1 ; WX 556 ; N ntilde ; B 65 0 592 722 ; C -1 ; WX 722 ; N Uhungarumlaut ; B 123 -19 801 929 ; C -1 ; WX 667 ; N Eacute ; B 86 0 762 929 ; C -1 ; WX 556 ; N emacron ; B 84 -15 580 684 ; C -1 ; WX 556 ; N gbreve ; B 42 -220 610 731 ; C -1 ; WX 834 ; N onequarter ; B 150 -19 802 703 ; C -1 ; WX 667 ; N Scaron ; B 90 -19 713 929 ; C -1 ; WX 667 ; N Scommaaccent ; B 90 -225 713 737 ; C -1 ; WX 778 ; N Ohungarumlaut ; B 105 -19 829 929 ; C -1 ; WX 400 ; N degree ; B 169 411 468 703 ; C -1 ; WX 556 ; N ograve ; B 83 -14 585 734 ; C -1 ; WX 722 ; N Ccaron ; B 108 -19 782 929 ; C -1 ; WX 556 ; N ugrave ; B 94 -15 600 734 ; C -1 ; WX 453 ; N radical ; B 79 -80 617 762 ; C -1 ; WX 722 ; N Dcaron ; B 81 0 764 929 ; C -1 ; WX 333 ; N rcommaaccent ; B 30 -225 446 538 ; C -1 ; WX 722 ; N Ntilde ; B 76 0 799 917 ; C -1 ; WX 556 ; N otilde ; B 83 -14 602 722 ; C -1 ; WX 722 ; N Rcommaaccent ; B 88 -225 773 718 ; C -1 ; WX 556 ; N Lcommaaccent ; B 76 -225 555 718 ; C -1 ; WX 667 ; N Atilde ; B 14 0 699 917 ; C -1 ; WX 667 ; N Aogonek ; B 14 -225 654 718 ; C -1 ; WX 667 ; N Aring ; B 14 0 654 931 ; C -1 ; WX 778 ; N Otilde ; B 105 -19 826 917 ; C -1 ; WX 500 ; N zdotaccent ; B 31 0 571 706 ; C -1 ; WX 667 ; N Ecaron ; B 86 0 762 929 ; C -1 ; WX 278 ; N Iogonek ; B -33 -225 341 718 ; C -1 ; WX 500 ; N kcommaaccent ; B 67 -225 600 718 ; C -1 ; WX 584 ; N minus ; B 85 216 606 289 ; C -1 ; WX 278 ; N Icircumflex ; B 91 0 452 929 ; C -1 ; WX 556 ; N ncaron ; B 65 0 580 734 ; C -1 ; WX 278 ; N tcommaaccent ; B 63 -225 368 669 ; C -1 ; WX 584 ; N logicalnot ; B 106 108 628 390 ; C -1 ; WX 556 ; N odieresis ; B 83 -14 585 706 ; C -1 ; WX 556 ; N udieresis ; B 94 -15 600 706 ; C -1 ; WX 549 ; N notequal ; B 34 -35 623 551 ; C -1 ; WX 556 ; N gcommaaccent ; B 42 -220 610 822 ; C -1 ; WX 556 ; N eth ; B 81 -15 617 737 ; C -1 ; WX 500 ; N zcaron ; B 31 0 571 734 ; C -1 ; WX 556 ; N ncommaaccent ; B 65 -225 573 538 ; C -1 ; WX 333 ; N onesuperior ; B 166 281 371 703 ; C -1 ; WX 278 ; N imacron ; B 95 0 417 684 ; EndCharMetrics StartKernData StartKernPairs 2705 KPX A C -30 KPX A Cacute -30 KPX A Ccaron -30 KPX A Ccedilla -30 KPX A G -30 KPX A Gbreve -30 KPX A Gcommaaccent -30 KPX A O -30 KPX A Oacute -30 KPX A Ocircumflex -30 KPX A Odieresis -30 KPX A Ograve -30 KPX A Ohungarumlaut -30 KPX A Omacron -30 KPX A Oslash -30 KPX A Otilde -30 KPX A Q -30 KPX A T -120 KPX A Tcaron -120 KPX A Tcommaaccent -120 KPX A U -50 KPX A Uacute -50 KPX A Ucircumflex -50 KPX A Udieresis -50 KPX A Ugrave -50 KPX A Uhungarumlaut -50 KPX A Umacron -50 KPX A Uogonek -50 KPX A Uring -50 KPX A V -70 KPX A W -50 KPX A Y -100 KPX A Yacute -100 KPX A Ydieresis -100 KPX A u -30 KPX A uacute -30 KPX A ucircumflex -30 KPX A udieresis -30 KPX A ugrave -30 KPX A uhungarumlaut -30 KPX A umacron -30 KPX A uogonek -30 KPX A uring -30 KPX A v -40 KPX A w -40 KPX A y -40 KPX A yacute -40 KPX A ydieresis -40 KPX Aacute C -30 KPX Aacute Cacute -30 KPX Aacute Ccaron -30 KPX Aacute Ccedilla -30 KPX Aacute G -30 KPX Aacute Gbreve -30 KPX Aacute Gcommaaccent -30 KPX Aacute O -30 KPX Aacute Oacute -30 KPX Aacute Ocircumflex -30 KPX Aacute Odieresis -30 KPX Aacute Ograve -30 KPX Aacute Ohungarumlaut -30 KPX Aacute Omacron -30 KPX Aacute Oslash -30 KPX Aacute Otilde -30 KPX Aacute Q -30 KPX Aacute T -120 KPX Aacute Tcaron -120 KPX Aacute Tcommaaccent -120 KPX Aacute U -50 KPX Aacute Uacute -50 KPX Aacute Ucircumflex -50 KPX Aacute Udieresis -50 KPX Aacute Ugrave -50 KPX Aacute Uhungarumlaut -50 KPX Aacute Umacron -50 KPX Aacute Uogonek -50 KPX Aacute Uring -50 KPX Aacute V -70 KPX Aacute W -50 KPX Aacute Y -100 KPX Aacute Yacute -100 KPX Aacute Ydieresis -100 KPX Aacute u -30 KPX Aacute uacute -30 KPX Aacute ucircumflex -30 KPX Aacute udieresis -30 KPX Aacute ugrave -30 KPX Aacute uhungarumlaut -30 KPX Aacute umacron -30 KPX Aacute uogonek -30 KPX Aacute uring -30 KPX Aacute v -40 KPX Aacute w -40 KPX Aacute y -40 KPX Aacute yacute -40 KPX Aacute ydieresis -40 KPX Abreve C -30 KPX Abreve Cacute -30 KPX Abreve Ccaron -30 KPX Abreve Ccedilla -30 KPX Abreve G -30 KPX Abreve Gbreve -30 KPX Abreve Gcommaaccent -30 KPX Abreve O -30 KPX Abreve Oacute -30 KPX Abreve Ocircumflex -30 KPX Abreve Odieresis -30 KPX Abreve Ograve -30 KPX Abreve Ohungarumlaut -30 KPX Abreve Omacron -30 KPX Abreve Oslash -30 KPX Abreve Otilde -30 KPX Abreve Q -30 KPX Abreve T -120 KPX Abreve Tcaron -120 KPX Abreve Tcommaaccent -120 KPX Abreve U -50 KPX Abreve Uacute -50 KPX Abreve Ucircumflex -50 KPX Abreve Udieresis -50 KPX Abreve Ugrave -50 KPX Abreve Uhungarumlaut -50 KPX Abreve Umacron -50 KPX Abreve Uogonek -50 KPX Abreve Uring -50 KPX Abreve V -70 KPX Abreve W -50 KPX Abreve Y -100 KPX Abreve Yacute -100 KPX Abreve Ydieresis -100 KPX Abreve u -30 KPX Abreve uacute -30 KPX Abreve ucircumflex -30 KPX Abreve udieresis -30 KPX Abreve ugrave -30 KPX Abreve uhungarumlaut -30 KPX Abreve umacron -30 KPX Abreve uogonek -30 KPX Abreve uring -30 KPX Abreve v -40 KPX Abreve w -40 KPX Abreve y -40 KPX Abreve yacute -40 KPX Abreve ydieresis -40 KPX Acircumflex C -30 KPX Acircumflex Cacute -30 KPX Acircumflex Ccaron -30 KPX Acircumflex Ccedilla -30 KPX Acircumflex G -30 KPX Acircumflex Gbreve -30 KPX Acircumflex Gcommaaccent -30 KPX Acircumflex O -30 KPX Acircumflex Oacute -30 KPX Acircumflex Ocircumflex -30 KPX Acircumflex Odieresis -30 KPX Acircumflex Ograve -30 KPX Acircumflex Ohungarumlaut -30 KPX Acircumflex Omacron -30 KPX Acircumflex Oslash -30 KPX Acircumflex Otilde -30 KPX Acircumflex Q -30 KPX Acircumflex T -120 KPX Acircumflex Tcaron -120 KPX Acircumflex Tcommaaccent -120 KPX Acircumflex U -50 KPX Acircumflex Uacute -50 KPX Acircumflex Ucircumflex -50 KPX Acircumflex Udieresis -50 KPX Acircumflex Ugrave -50 KPX Acircumflex Uhungarumlaut -50 KPX Acircumflex Umacron -50 KPX Acircumflex Uogonek -50 KPX Acircumflex Uring -50 KPX Acircumflex V -70 KPX Acircumflex W -50 KPX Acircumflex Y -100 KPX Acircumflex Yacute -100 KPX Acircumflex Ydieresis -100 KPX Acircumflex u -30 KPX Acircumflex uacute -30 KPX Acircumflex ucircumflex -30 KPX Acircumflex udieresis -30 KPX Acircumflex ugrave -30 KPX Acircumflex uhungarumlaut -30 KPX Acircumflex umacron -30 KPX Acircumflex uogonek -30 KPX Acircumflex uring -30 KPX Acircumflex v -40 KPX Acircumflex w -40 KPX Acircumflex y -40 KPX Acircumflex yacute -40 KPX Acircumflex ydieresis -40 KPX Adieresis C -30 KPX Adieresis Cacute -30 KPX Adieresis Ccaron -30 KPX Adieresis Ccedilla -30 KPX Adieresis G -30 KPX Adieresis Gbreve -30 KPX Adieresis Gcommaaccent -30 KPX Adieresis O -30 KPX Adieresis Oacute -30 KPX Adieresis Ocircumflex -30 KPX Adieresis Odieresis -30 KPX Adieresis Ograve -30 KPX Adieresis Ohungarumlaut -30 KPX Adieresis Omacron -30 KPX Adieresis Oslash -30 KPX Adieresis Otilde -30 KPX Adieresis Q -30 KPX Adieresis T -120 KPX Adieresis Tcaron -120 KPX Adieresis Tcommaaccent -120 KPX Adieresis U -50 KPX Adieresis Uacute -50 KPX Adieresis Ucircumflex -50 KPX Adieresis Udieresis -50 KPX Adieresis Ugrave -50 KPX Adieresis Uhungarumlaut -50 KPX Adieresis Umacron -50 KPX Adieresis Uogonek -50 KPX Adieresis Uring -50 KPX Adieresis V -70 KPX Adieresis W -50 KPX Adieresis Y -100 KPX Adieresis Yacute -100 KPX Adieresis Ydieresis -100 KPX Adieresis u -30 KPX Adieresis uacute -30 KPX Adieresis ucircumflex -30 KPX Adieresis udieresis -30 KPX Adieresis ugrave -30 KPX Adieresis uhungarumlaut -30 KPX Adieresis umacron -30 KPX Adieresis uogonek -30 KPX Adieresis uring -30 KPX Adieresis v -40 KPX Adieresis w -40 KPX Adieresis y -40 KPX Adieresis yacute -40 KPX Adieresis ydieresis -40 KPX Agrave C -30 KPX Agrave Cacute -30 KPX Agrave Ccaron -30 KPX Agrave Ccedilla -30 KPX Agrave G -30 KPX Agrave Gbreve -30 KPX Agrave Gcommaaccent -30 KPX Agrave O -30 KPX Agrave Oacute -30 KPX Agrave Ocircumflex -30 KPX Agrave Odieresis -30 KPX Agrave Ograve -30 KPX Agrave Ohungarumlaut -30 KPX Agrave Omacron -30 KPX Agrave Oslash -30 KPX Agrave Otilde -30 KPX Agrave Q -30 KPX Agrave T -120 KPX Agrave Tcaron -120 KPX Agrave Tcommaaccent -120 KPX Agrave U -50 KPX Agrave Uacute -50 KPX Agrave Ucircumflex -50 KPX Agrave Udieresis -50 KPX Agrave Ugrave -50 KPX Agrave Uhungarumlaut -50 KPX Agrave Umacron -50 KPX Agrave Uogonek -50 KPX Agrave Uring -50 KPX Agrave V -70 KPX Agrave W -50 KPX Agrave Y -100 KPX Agrave Yacute -100 KPX Agrave Ydieresis -100 KPX Agrave u -30 KPX Agrave uacute -30 KPX Agrave ucircumflex -30 KPX Agrave udieresis -30 KPX Agrave ugrave -30 KPX Agrave uhungarumlaut -30 KPX Agrave umacron -30 KPX Agrave uogonek -30 KPX Agrave uring -30 KPX Agrave v -40 KPX Agrave w -40 KPX Agrave y -40 KPX Agrave yacute -40 KPX Agrave ydieresis -40 KPX Amacron C -30 KPX Amacron Cacute -30 KPX Amacron Ccaron -30 KPX Amacron Ccedilla -30 KPX Amacron G -30 KPX Amacron Gbreve -30 KPX Amacron Gcommaaccent -30 KPX Amacron O -30 KPX Amacron Oacute -30 KPX Amacron Ocircumflex -30 KPX Amacron Odieresis -30 KPX Amacron Ograve -30 KPX Amacron Ohungarumlaut -30 KPX Amacron Omacron -30 KPX Amacron Oslash -30 KPX Amacron Otilde -30 KPX Amacron Q -30 KPX Amacron T -120 KPX Amacron Tcaron -120 KPX Amacron Tcommaaccent -120 KPX Amacron U -50 KPX Amacron Uacute -50 KPX Amacron Ucircumflex -50 KPX Amacron Udieresis -50 KPX Amacron Ugrave -50 KPX Amacron Uhungarumlaut -50 KPX Amacron Umacron -50 KPX Amacron Uogonek -50 KPX Amacron Uring -50 KPX Amacron V -70 KPX Amacron W -50 KPX Amacron Y -100 KPX Amacron Yacute -100 KPX Amacron Ydieresis -100 KPX Amacron u -30 KPX Amacron uacute -30 KPX Amacron ucircumflex -30 KPX Amacron udieresis -30 KPX Amacron ugrave -30 KPX Amacron uhungarumlaut -30 KPX Amacron umacron -30 KPX Amacron uogonek -30 KPX Amacron uring -30 KPX Amacron v -40 KPX Amacron w -40 KPX Amacron y -40 KPX Amacron yacute -40 KPX Amacron ydieresis -40 KPX Aogonek C -30 KPX Aogonek Cacute -30 KPX Aogonek Ccaron -30 KPX Aogonek Ccedilla -30 KPX Aogonek G -30 KPX Aogonek Gbreve -30 KPX Aogonek Gcommaaccent -30 KPX Aogonek O -30 KPX Aogonek Oacute -30 KPX Aogonek Ocircumflex -30 KPX Aogonek Odieresis -30 KPX Aogonek Ograve -30 KPX Aogonek Ohungarumlaut -30 KPX Aogonek Omacron -30 KPX Aogonek Oslash -30 KPX Aogonek Otilde -30 KPX Aogonek Q -30 KPX Aogonek T -120 KPX Aogonek Tcaron -120 KPX Aogonek Tcommaaccent -120 KPX Aogonek U -50 KPX Aogonek Uacute -50 KPX Aogonek Ucircumflex -50 KPX Aogonek Udieresis -50 KPX Aogonek Ugrave -50 KPX Aogonek Uhungarumlaut -50 KPX Aogonek Umacron -50 KPX Aogonek Uogonek -50 KPX Aogonek Uring -50 KPX Aogonek V -70 KPX Aogonek W -50 KPX Aogonek Y -100 KPX Aogonek Yacute -100 KPX Aogonek Ydieresis -100 KPX Aogonek u -30 KPX Aogonek uacute -30 KPX Aogonek ucircumflex -30 KPX Aogonek udieresis -30 KPX Aogonek ugrave -30 KPX Aogonek uhungarumlaut -30 KPX Aogonek umacron -30 KPX Aogonek uogonek -30 KPX Aogonek uring -30 KPX Aogonek v -40 KPX Aogonek w -40 KPX Aogonek y -40 KPX Aogonek yacute -40 KPX Aogonek ydieresis -40 KPX Aring C -30 KPX Aring Cacute -30 KPX Aring Ccaron -30 KPX Aring Ccedilla -30 KPX Aring G -30 KPX Aring Gbreve -30 KPX Aring Gcommaaccent -30 KPX Aring O -30 KPX Aring Oacute -30 KPX Aring Ocircumflex -30 KPX Aring Odieresis -30 KPX Aring Ograve -30 KPX Aring Ohungarumlaut -30 KPX Aring Omacron -30 KPX Aring Oslash -30 KPX Aring Otilde -30 KPX Aring Q -30 KPX Aring T -120 KPX Aring Tcaron -120 KPX Aring Tcommaaccent -120 KPX Aring U -50 KPX Aring Uacute -50 KPX Aring Ucircumflex -50 KPX Aring Udieresis -50 KPX Aring Ugrave -50 KPX Aring Uhungarumlaut -50 KPX Aring Umacron -50 KPX Aring Uogonek -50 KPX Aring Uring -50 KPX Aring V -70 KPX Aring W -50 KPX Aring Y -100 KPX Aring Yacute -100 KPX Aring Ydieresis -100 KPX Aring u -30 KPX Aring uacute -30 KPX Aring ucircumflex -30 KPX Aring udieresis -30 KPX Aring ugrave -30 KPX Aring uhungarumlaut -30 KPX Aring umacron -30 KPX Aring uogonek -30 KPX Aring uring -30 KPX Aring v -40 KPX Aring w -40 KPX Aring y -40 KPX Aring yacute -40 KPX Aring ydieresis -40 KPX Atilde C -30 KPX Atilde Cacute -30 KPX Atilde Ccaron -30 KPX Atilde Ccedilla -30 KPX Atilde G -30 KPX Atilde Gbreve -30 KPX Atilde Gcommaaccent -30 KPX Atilde O -30 KPX Atilde Oacute -30 KPX Atilde Ocircumflex -30 KPX Atilde Odieresis -30 KPX Atilde Ograve -30 KPX Atilde Ohungarumlaut -30 KPX Atilde Omacron -30 KPX Atilde Oslash -30 KPX Atilde Otilde -30 KPX Atilde Q -30 KPX Atilde T -120 KPX Atilde Tcaron -120 KPX Atilde Tcommaaccent -120 KPX Atilde U -50 KPX Atilde Uacute -50 KPX Atilde Ucircumflex -50 KPX Atilde Udieresis -50 KPX Atilde Ugrave -50 KPX Atilde Uhungarumlaut -50 KPX Atilde Umacron -50 KPX Atilde Uogonek -50 KPX Atilde Uring -50 KPX Atilde V -70 KPX Atilde W -50 KPX Atilde Y -100 KPX Atilde Yacute -100 KPX Atilde Ydieresis -100 KPX Atilde u -30 KPX Atilde uacute -30 KPX Atilde ucircumflex -30 KPX Atilde udieresis -30 KPX Atilde ugrave -30 KPX Atilde uhungarumlaut -30 KPX Atilde umacron -30 KPX Atilde uogonek -30 KPX Atilde uring -30 KPX Atilde v -40 KPX Atilde w -40 KPX Atilde y -40 KPX Atilde yacute -40 KPX Atilde ydieresis -40 KPX B U -10 KPX B Uacute -10 KPX B Ucircumflex -10 KPX B Udieresis -10 KPX B Ugrave -10 KPX B Uhungarumlaut -10 KPX B Umacron -10 KPX B Uogonek -10 KPX B Uring -10 KPX B comma -20 KPX B period -20 KPX C comma -30 KPX C period -30 KPX Cacute comma -30 KPX Cacute period -30 KPX Ccaron comma -30 KPX Ccaron period -30 KPX Ccedilla comma -30 KPX Ccedilla period -30 KPX D A -40 KPX D Aacute -40 KPX D Abreve -40 KPX D Acircumflex -40 KPX D Adieresis -40 KPX D Agrave -40 KPX D Amacron -40 KPX D Aogonek -40 KPX D Aring -40 KPX D Atilde -40 KPX D V -70 KPX D W -40 KPX D Y -90 KPX D Yacute -90 KPX D Ydieresis -90 KPX D comma -70 KPX D period -70 KPX Dcaron A -40 KPX Dcaron Aacute -40 KPX Dcaron Abreve -40 KPX Dcaron Acircumflex -40 KPX Dcaron Adieresis -40 KPX Dcaron Agrave -40 KPX Dcaron Amacron -40 KPX Dcaron Aogonek -40 KPX Dcaron Aring -40 KPX Dcaron Atilde -40 KPX Dcaron V -70 KPX Dcaron W -40 KPX Dcaron Y -90 KPX Dcaron Yacute -90 KPX Dcaron Ydieresis -90 KPX Dcaron comma -70 KPX Dcaron period -70 KPX Dcroat A -40 KPX Dcroat Aacute -40 KPX Dcroat Abreve -40 KPX Dcroat Acircumflex -40 KPX Dcroat Adieresis -40 KPX Dcroat Agrave -40 KPX Dcroat Amacron -40 KPX Dcroat Aogonek -40 KPX Dcroat Aring -40 KPX Dcroat Atilde -40 KPX Dcroat V -70 KPX Dcroat W -40 KPX Dcroat Y -90 KPX Dcroat Yacute -90 KPX Dcroat Ydieresis -90 KPX Dcroat comma -70 KPX Dcroat period -70 KPX F A -80 KPX F Aacute -80 KPX F Abreve -80 KPX F Acircumflex -80 KPX F Adieresis -80 KPX F Agrave -80 KPX F Amacron -80 KPX F Aogonek -80 KPX F Aring -80 KPX F Atilde -80 KPX F a -50 KPX F aacute -50 KPX F abreve -50 KPX F acircumflex -50 KPX F adieresis -50 KPX F agrave -50 KPX F amacron -50 KPX F aogonek -50 KPX F aring -50 KPX F atilde -50 KPX F comma -150 KPX F e -30 KPX F eacute -30 KPX F ecaron -30 KPX F ecircumflex -30 KPX F edieresis -30 KPX F edotaccent -30 KPX F egrave -30 KPX F emacron -30 KPX F eogonek -30 KPX F o -30 KPX F oacute -30 KPX F ocircumflex -30 KPX F odieresis -30 KPX F ograve -30 KPX F ohungarumlaut -30 KPX F omacron -30 KPX F oslash -30 KPX F otilde -30 KPX F period -150 KPX F r -45 KPX F racute -45 KPX F rcaron -45 KPX F rcommaaccent -45 KPX J A -20 KPX J Aacute -20 KPX J Abreve -20 KPX J Acircumflex -20 KPX J Adieresis -20 KPX J Agrave -20 KPX J Amacron -20 KPX J Aogonek -20 KPX J Aring -20 KPX J Atilde -20 KPX J a -20 KPX J aacute -20 KPX J abreve -20 KPX J acircumflex -20 KPX J adieresis -20 KPX J agrave -20 KPX J amacron -20 KPX J aogonek -20 KPX J aring -20 KPX J atilde -20 KPX J comma -30 KPX J period -30 KPX J u -20 KPX J uacute -20 KPX J ucircumflex -20 KPX J udieresis -20 KPX J ugrave -20 KPX J uhungarumlaut -20 KPX J umacron -20 KPX J uogonek -20 KPX J uring -20 KPX K O -50 KPX K Oacute -50 KPX K Ocircumflex -50 KPX K Odieresis -50 KPX K Ograve -50 KPX K Ohungarumlaut -50 KPX K Omacron -50 KPX K Oslash -50 KPX K Otilde -50 KPX K e -40 KPX K eacute -40 KPX K ecaron -40 KPX K ecircumflex -40 KPX K edieresis -40 KPX K edotaccent -40 KPX K egrave -40 KPX K emacron -40 KPX K eogonek -40 KPX K o -40 KPX K oacute -40 KPX K ocircumflex -40 KPX K odieresis -40 KPX K ograve -40 KPX K ohungarumlaut -40 KPX K omacron -40 KPX K oslash -40 KPX K otilde -40 KPX K u -30 KPX K uacute -30 KPX K ucircumflex -30 KPX K udieresis -30 KPX K ugrave -30 KPX K uhungarumlaut -30 KPX K umacron -30 KPX K uogonek -30 KPX K uring -30 KPX K y -50 KPX K yacute -50 KPX K ydieresis -50 KPX Kcommaaccent O -50 KPX Kcommaaccent Oacute -50 KPX Kcommaaccent Ocircumflex -50 KPX Kcommaaccent Odieresis -50 KPX Kcommaaccent Ograve -50 KPX Kcommaaccent Ohungarumlaut -50 KPX Kcommaaccent Omacron -50 KPX Kcommaaccent Oslash -50 KPX Kcommaaccent Otilde -50 KPX Kcommaaccent e -40 KPX Kcommaaccent eacute -40 KPX Kcommaaccent ecaron -40 KPX Kcommaaccent ecircumflex -40 KPX Kcommaaccent edieresis -40 KPX Kcommaaccent edotaccent -40 KPX Kcommaaccent egrave -40 KPX Kcommaaccent emacron -40 KPX Kcommaaccent eogonek -40 KPX Kcommaaccent o -40 KPX Kcommaaccent oacute -40 KPX Kcommaaccent ocircumflex -40 KPX Kcommaaccent odieresis -40 KPX Kcommaaccent ograve -40 KPX Kcommaaccent ohungarumlaut -40 KPX Kcommaaccent omacron -40 KPX Kcommaaccent oslash -40 KPX Kcommaaccent otilde -40 KPX Kcommaaccent u -30 KPX Kcommaaccent uacute -30 KPX Kcommaaccent ucircumflex -30 KPX Kcommaaccent udieresis -30 KPX Kcommaaccent ugrave -30 KPX Kcommaaccent uhungarumlaut -30 KPX Kcommaaccent umacron -30 KPX Kcommaaccent uogonek -30 KPX Kcommaaccent uring -30 KPX Kcommaaccent y -50 KPX Kcommaaccent yacute -50 KPX Kcommaaccent ydieresis -50 KPX L T -110 KPX L Tcaron -110 KPX L Tcommaaccent -110 KPX L V -110 KPX L W -70 KPX L Y -140 KPX L Yacute -140 KPX L Ydieresis -140 KPX L quotedblright -140 KPX L quoteright -160 KPX L y -30 KPX L yacute -30 KPX L ydieresis -30 KPX Lacute T -110 KPX Lacute Tcaron -110 KPX Lacute Tcommaaccent -110 KPX Lacute V -110 KPX Lacute W -70 KPX Lacute Y -140 KPX Lacute Yacute -140 KPX Lacute Ydieresis -140 KPX Lacute quotedblright -140 KPX Lacute quoteright -160 KPX Lacute y -30 KPX Lacute yacute -30 KPX Lacute ydieresis -30 KPX Lcaron T -110 KPX Lcaron Tcaron -110 KPX Lcaron Tcommaaccent -110 KPX Lcaron V -110 KPX Lcaron W -70 KPX Lcaron Y -140 KPX Lcaron Yacute -140 KPX Lcaron Ydieresis -140 KPX Lcaron quotedblright -140 KPX Lcaron quoteright -160 KPX Lcaron y -30 KPX Lcaron yacute -30 KPX Lcaron ydieresis -30 KPX Lcommaaccent T -110 KPX Lcommaaccent Tcaron -110 KPX Lcommaaccent Tcommaaccent -110 KPX Lcommaaccent V -110 KPX Lcommaaccent W -70 KPX Lcommaaccent Y -140 KPX Lcommaaccent Yacute -140 KPX Lcommaaccent Ydieresis -140 KPX Lcommaaccent quotedblright -140 KPX Lcommaaccent quoteright -160 KPX Lcommaaccent y -30 KPX Lcommaaccent yacute -30 KPX Lcommaaccent ydieresis -30 KPX Lslash T -110 KPX Lslash Tcaron -110 KPX Lslash Tcommaaccent -110 KPX Lslash V -110 KPX Lslash W -70 KPX Lslash Y -140 KPX Lslash Yacute -140 KPX Lslash Ydieresis -140 KPX Lslash quotedblright -140 KPX Lslash quoteright -160 KPX Lslash y -30 KPX Lslash yacute -30 KPX Lslash ydieresis -30 KPX O A -20 KPX O Aacute -20 KPX O Abreve -20 KPX O Acircumflex -20 KPX O Adieresis -20 KPX O Agrave -20 KPX O Amacron -20 KPX O Aogonek -20 KPX O Aring -20 KPX O Atilde -20 KPX O T -40 KPX O Tcaron -40 KPX O Tcommaaccent -40 KPX O V -50 KPX O W -30 KPX O X -60 KPX O Y -70 KPX O Yacute -70 KPX O Ydieresis -70 KPX O comma -40 KPX O period -40 KPX Oacute A -20 KPX Oacute Aacute -20 KPX Oacute Abreve -20 KPX Oacute Acircumflex -20 KPX Oacute Adieresis -20 KPX Oacute Agrave -20 KPX Oacute Amacron -20 KPX Oacute Aogonek -20 KPX Oacute Aring -20 KPX Oacute Atilde -20 KPX Oacute T -40 KPX Oacute Tcaron -40 KPX Oacute Tcommaaccent -40 KPX Oacute V -50 KPX Oacute W -30 KPX Oacute X -60 KPX Oacute Y -70 KPX Oacute Yacute -70 KPX Oacute Ydieresis -70 KPX Oacute comma -40 KPX Oacute period -40 KPX Ocircumflex A -20 KPX Ocircumflex Aacute -20 KPX Ocircumflex Abreve -20 KPX Ocircumflex Acircumflex -20 KPX Ocircumflex Adieresis -20 KPX Ocircumflex Agrave -20 KPX Ocircumflex Amacron -20 KPX Ocircumflex Aogonek -20 KPX Ocircumflex Aring -20 KPX Ocircumflex Atilde -20 KPX Ocircumflex T -40 KPX Ocircumflex Tcaron -40 KPX Ocircumflex Tcommaaccent -40 KPX Ocircumflex V -50 KPX Ocircumflex W -30 KPX Ocircumflex X -60 KPX Ocircumflex Y -70 KPX Ocircumflex Yacute -70 KPX Ocircumflex Ydieresis -70 KPX Ocircumflex comma -40 KPX Ocircumflex period -40 KPX Odieresis A -20 KPX Odieresis Aacute -20 KPX Odieresis Abreve -20 KPX Odieresis Acircumflex -20 KPX Odieresis Adieresis -20 KPX Odieresis Agrave -20 KPX Odieresis Amacron -20 KPX Odieresis Aogonek -20 KPX Odieresis Aring -20 KPX Odieresis Atilde -20 KPX Odieresis T -40 KPX Odieresis Tcaron -40 KPX Odieresis Tcommaaccent -40 KPX Odieresis V -50 KPX Odieresis W -30 KPX Odieresis X -60 KPX Odieresis Y -70 KPX Odieresis Yacute -70 KPX Odieresis Ydieresis -70 KPX Odieresis comma -40 KPX Odieresis period -40 KPX Ograve A -20 KPX Ograve Aacute -20 KPX Ograve Abreve -20 KPX Ograve Acircumflex -20 KPX Ograve Adieresis -20 KPX Ograve Agrave -20 KPX Ograve Amacron -20 KPX Ograve Aogonek -20 KPX Ograve Aring -20 KPX Ograve Atilde -20 KPX Ograve T -40 KPX Ograve Tcaron -40 KPX Ograve Tcommaaccent -40 KPX Ograve V -50 KPX Ograve W -30 KPX Ograve X -60 KPX Ograve Y -70 KPX Ograve Yacute -70 KPX Ograve Ydieresis -70 KPX Ograve comma -40 KPX Ograve period -40 KPX Ohungarumlaut A -20 KPX Ohungarumlaut Aacute -20 KPX Ohungarumlaut Abreve -20 KPX Ohungarumlaut Acircumflex -20 KPX Ohungarumlaut Adieresis -20 KPX Ohungarumlaut Agrave -20 KPX Ohungarumlaut Amacron -20 KPX Ohungarumlaut Aogonek -20 KPX Ohungarumlaut Aring -20 KPX Ohungarumlaut Atilde -20 KPX Ohungarumlaut T -40 KPX Ohungarumlaut Tcaron -40 KPX Ohungarumlaut Tcommaaccent -40 KPX Ohungarumlaut V -50 KPX Ohungarumlaut W -30 KPX Ohungarumlaut X -60 KPX Ohungarumlaut Y -70 KPX Ohungarumlaut Yacute -70 KPX Ohungarumlaut Ydieresis -70 KPX Ohungarumlaut comma -40 KPX Ohungarumlaut period -40 KPX Omacron A -20 KPX Omacron Aacute -20 KPX Omacron Abreve -20 KPX Omacron Acircumflex -20 KPX Omacron Adieresis -20 KPX Omacron Agrave -20 KPX Omacron Amacron -20 KPX Omacron Aogonek -20 KPX Omacron Aring -20 KPX Omacron Atilde -20 KPX Omacron T -40 KPX Omacron Tcaron -40 KPX Omacron Tcommaaccent -40 KPX Omacron V -50 KPX Omacron W -30 KPX Omacron X -60 KPX Omacron Y -70 KPX Omacron Yacute -70 KPX Omacron Ydieresis -70 KPX Omacron comma -40 KPX Omacron period -40 KPX Oslash A -20 KPX Oslash Aacute -20 KPX Oslash Abreve -20 KPX Oslash Acircumflex -20 KPX Oslash Adieresis -20 KPX Oslash Agrave -20 KPX Oslash Amacron -20 KPX Oslash Aogonek -20 KPX Oslash Aring -20 KPX Oslash Atilde -20 KPX Oslash T -40 KPX Oslash Tcaron -40 KPX Oslash Tcommaaccent -40 KPX Oslash V -50 KPX Oslash W -30 KPX Oslash X -60 KPX Oslash Y -70 KPX Oslash Yacute -70 KPX Oslash Ydieresis -70 KPX Oslash comma -40 KPX Oslash period -40 KPX Otilde A -20 KPX Otilde Aacute -20 KPX Otilde Abreve -20 KPX Otilde Acircumflex -20 KPX Otilde Adieresis -20 KPX Otilde Agrave -20 KPX Otilde Amacron -20 KPX Otilde Aogonek -20 KPX Otilde Aring -20 KPX Otilde Atilde -20 KPX Otilde T -40 KPX Otilde Tcaron -40 KPX Otilde Tcommaaccent -40 KPX Otilde V -50 KPX Otilde W -30 KPX Otilde X -60 KPX Otilde Y -70 KPX Otilde Yacute -70 KPX Otilde Ydieresis -70 KPX Otilde comma -40 KPX Otilde period -40 KPX P A -120 KPX P Aacute -120 KPX P Abreve -120 KPX P Acircumflex -120 KPX P Adieresis -120 KPX P Agrave -120 KPX P Amacron -120 KPX P Aogonek -120 KPX P Aring -120 KPX P Atilde -120 KPX P a -40 KPX P aacute -40 KPX P abreve -40 KPX P acircumflex -40 KPX P adieresis -40 KPX P agrave -40 KPX P amacron -40 KPX P aogonek -40 KPX P aring -40 KPX P atilde -40 KPX P comma -180 KPX P e -50 KPX P eacute -50 KPX P ecaron -50 KPX P ecircumflex -50 KPX P edieresis -50 KPX P edotaccent -50 KPX P egrave -50 KPX P emacron -50 KPX P eogonek -50 KPX P o -50 KPX P oacute -50 KPX P ocircumflex -50 KPX P odieresis -50 KPX P ograve -50 KPX P ohungarumlaut -50 KPX P omacron -50 KPX P oslash -50 KPX P otilde -50 KPX P period -180 KPX Q U -10 KPX Q Uacute -10 KPX Q Ucircumflex -10 KPX Q Udieresis -10 KPX Q Ugrave -10 KPX Q Uhungarumlaut -10 KPX Q Umacron -10 KPX Q Uogonek -10 KPX Q Uring -10 KPX R O -20 KPX R Oacute -20 KPX R Ocircumflex -20 KPX R Odieresis -20 KPX R Ograve -20 KPX R Ohungarumlaut -20 KPX R Omacron -20 KPX R Oslash -20 KPX R Otilde -20 KPX R T -30 KPX R Tcaron -30 KPX R Tcommaaccent -30 KPX R U -40 KPX R Uacute -40 KPX R Ucircumflex -40 KPX R Udieresis -40 KPX R Ugrave -40 KPX R Uhungarumlaut -40 KPX R Umacron -40 KPX R Uogonek -40 KPX R Uring -40 KPX R V -50 KPX R W -30 KPX R Y -50 KPX R Yacute -50 KPX R Ydieresis -50 KPX Racute O -20 KPX Racute Oacute -20 KPX Racute Ocircumflex -20 KPX Racute Odieresis -20 KPX Racute Ograve -20 KPX Racute Ohungarumlaut -20 KPX Racute Omacron -20 KPX Racute Oslash -20 KPX Racute Otilde -20 KPX Racute T -30 KPX Racute Tcaron -30 KPX Racute Tcommaaccent -30 KPX Racute U -40 KPX Racute Uacute -40 KPX Racute Ucircumflex -40 KPX Racute Udieresis -40 KPX Racute Ugrave -40 KPX Racute Uhungarumlaut -40 KPX Racute Umacron -40 KPX Racute Uogonek -40 KPX Racute Uring -40 KPX Racute V -50 KPX Racute W -30 KPX Racute Y -50 KPX Racute Yacute -50 KPX Racute Ydieresis -50 KPX Rcaron O -20 KPX Rcaron Oacute -20 KPX Rcaron Ocircumflex -20 KPX Rcaron Odieresis -20 KPX Rcaron Ograve -20 KPX Rcaron Ohungarumlaut -20 KPX Rcaron Omacron -20 KPX Rcaron Oslash -20 KPX Rcaron Otilde -20 KPX Rcaron T -30 KPX Rcaron Tcaron -30 KPX Rcaron Tcommaaccent -30 KPX Rcaron U -40 KPX Rcaron Uacute -40 KPX Rcaron Ucircumflex -40 KPX Rcaron Udieresis -40 KPX Rcaron Ugrave -40 KPX Rcaron Uhungarumlaut -40 KPX Rcaron Umacron -40 KPX Rcaron Uogonek -40 KPX Rcaron Uring -40 KPX Rcaron V -50 KPX Rcaron W -30 KPX Rcaron Y -50 KPX Rcaron Yacute -50 KPX Rcaron Ydieresis -50 KPX Rcommaaccent O -20 KPX Rcommaaccent Oacute -20 KPX Rcommaaccent Ocircumflex -20 KPX Rcommaaccent Odieresis -20 KPX Rcommaaccent Ograve -20 KPX Rcommaaccent Ohungarumlaut -20 KPX Rcommaaccent Omacron -20 KPX Rcommaaccent Oslash -20 KPX Rcommaaccent Otilde -20 KPX Rcommaaccent T -30 KPX Rcommaaccent Tcaron -30 KPX Rcommaaccent Tcommaaccent -30 KPX Rcommaaccent U -40 KPX Rcommaaccent Uacute -40 KPX Rcommaaccent Ucircumflex -40 KPX Rcommaaccent Udieresis -40 KPX Rcommaaccent Ugrave -40 KPX Rcommaaccent Uhungarumlaut -40 KPX Rcommaaccent Umacron -40 KPX Rcommaaccent Uogonek -40 KPX Rcommaaccent Uring -40 KPX Rcommaaccent V -50 KPX Rcommaaccent W -30 KPX Rcommaaccent Y -50 KPX Rcommaaccent Yacute -50 KPX Rcommaaccent Ydieresis -50 KPX S comma -20 KPX S period -20 KPX Sacute comma -20 KPX Sacute period -20 KPX Scaron comma -20 KPX Scaron period -20 KPX Scedilla comma -20 KPX Scedilla period -20 KPX Scommaaccent comma -20 KPX Scommaaccent period -20 KPX T A -120 KPX T Aacute -120 KPX T Abreve -120 KPX T Acircumflex -120 KPX T Adieresis -120 KPX T Agrave -120 KPX T Amacron -120 KPX T Aogonek -120 KPX T Aring -120 KPX T Atilde -120 KPX T O -40 KPX T Oacute -40 KPX T Ocircumflex -40 KPX T Odieresis -40 KPX T Ograve -40 KPX T Ohungarumlaut -40 KPX T Omacron -40 KPX T Oslash -40 KPX T Otilde -40 KPX T a -120 KPX T aacute -120 KPX T abreve -60 KPX T acircumflex -120 KPX T adieresis -120 KPX T agrave -120 KPX T amacron -60 KPX T aogonek -120 KPX T aring -120 KPX T atilde -60 KPX T colon -20 KPX T comma -120 KPX T e -120 KPX T eacute -120 KPX T ecaron -120 KPX T ecircumflex -120 KPX T edieresis -120 KPX T edotaccent -120 KPX T egrave -60 KPX T emacron -60 KPX T eogonek -120 KPX T hyphen -140 KPX T o -120 KPX T oacute -120 KPX T ocircumflex -120 KPX T odieresis -120 KPX T ograve -120 KPX T ohungarumlaut -120 KPX T omacron -60 KPX T oslash -120 KPX T otilde -60 KPX T period -120 KPX T r -120 KPX T racute -120 KPX T rcaron -120 KPX T rcommaaccent -120 KPX T semicolon -20 KPX T u -120 KPX T uacute -120 KPX T ucircumflex -120 KPX T udieresis -120 KPX T ugrave -120 KPX T uhungarumlaut -120 KPX T umacron -60 KPX T uogonek -120 KPX T uring -120 KPX T w -120 KPX T y -120 KPX T yacute -120 KPX T ydieresis -60 KPX Tcaron A -120 KPX Tcaron Aacute -120 KPX Tcaron Abreve -120 KPX Tcaron Acircumflex -120 KPX Tcaron Adieresis -120 KPX Tcaron Agrave -120 KPX Tcaron Amacron -120 KPX Tcaron Aogonek -120 KPX Tcaron Aring -120 KPX Tcaron Atilde -120 KPX Tcaron O -40 KPX Tcaron Oacute -40 KPX Tcaron Ocircumflex -40 KPX Tcaron Odieresis -40 KPX Tcaron Ograve -40 KPX Tcaron Ohungarumlaut -40 KPX Tcaron Omacron -40 KPX Tcaron Oslash -40 KPX Tcaron Otilde -40 KPX Tcaron a -120 KPX Tcaron aacute -120 KPX Tcaron abreve -60 KPX Tcaron acircumflex -120 KPX Tcaron adieresis -120 KPX Tcaron agrave -120 KPX Tcaron amacron -60 KPX Tcaron aogonek -120 KPX Tcaron aring -120 KPX Tcaron atilde -60 KPX Tcaron colon -20 KPX Tcaron comma -120 KPX Tcaron e -120 KPX Tcaron eacute -120 KPX Tcaron ecaron -120 KPX Tcaron ecircumflex -120 KPX Tcaron edieresis -120 KPX Tcaron edotaccent -120 KPX Tcaron egrave -60 KPX Tcaron emacron -60 KPX Tcaron eogonek -120 KPX Tcaron hyphen -140 KPX Tcaron o -120 KPX Tcaron oacute -120 KPX Tcaron ocircumflex -120 KPX Tcaron odieresis -120 KPX Tcaron ograve -120 KPX Tcaron ohungarumlaut -120 KPX Tcaron omacron -60 KPX Tcaron oslash -120 KPX Tcaron otilde -60 KPX Tcaron period -120 KPX Tcaron r -120 KPX Tcaron racute -120 KPX Tcaron rcaron -120 KPX Tcaron rcommaaccent -120 KPX Tcaron semicolon -20 KPX Tcaron u -120 KPX Tcaron uacute -120 KPX Tcaron ucircumflex -120 KPX Tcaron udieresis -120 KPX Tcaron ugrave -120 KPX Tcaron uhungarumlaut -120 KPX Tcaron umacron -60 KPX Tcaron uogonek -120 KPX Tcaron uring -120 KPX Tcaron w -120 KPX Tcaron y -120 KPX Tcaron yacute -120 KPX Tcaron ydieresis -60 KPX Tcommaaccent A -120 KPX Tcommaaccent Aacute -120 KPX Tcommaaccent Abreve -120 KPX Tcommaaccent Acircumflex -120 KPX Tcommaaccent Adieresis -120 KPX Tcommaaccent Agrave -120 KPX Tcommaaccent Amacron -120 KPX Tcommaaccent Aogonek -120 KPX Tcommaaccent Aring -120 KPX Tcommaaccent Atilde -120 KPX Tcommaaccent O -40 KPX Tcommaaccent Oacute -40 KPX Tcommaaccent Ocircumflex -40 KPX Tcommaaccent Odieresis -40 KPX Tcommaaccent Ograve -40 KPX Tcommaaccent Ohungarumlaut -40 KPX Tcommaaccent Omacron -40 KPX Tcommaaccent Oslash -40 KPX Tcommaaccent Otilde -40 KPX Tcommaaccent a -120 KPX Tcommaaccent aacute -120 KPX Tcommaaccent abreve -60 KPX Tcommaaccent acircumflex -120 KPX Tcommaaccent adieresis -120 KPX Tcommaaccent agrave -120 KPX Tcommaaccent amacron -60 KPX Tcommaaccent aogonek -120 KPX Tcommaaccent aring -120 KPX Tcommaaccent atilde -60 KPX Tcommaaccent colon -20 KPX Tcommaaccent comma -120 KPX Tcommaaccent e -120 KPX Tcommaaccent eacute -120 KPX Tcommaaccent ecaron -120 KPX Tcommaaccent ecircumflex -120 KPX Tcommaaccent edieresis -120 KPX Tcommaaccent edotaccent -120 KPX Tcommaaccent egrave -60 KPX Tcommaaccent emacron -60 KPX Tcommaaccent eogonek -120 KPX Tcommaaccent hyphen -140 KPX Tcommaaccent o -120 KPX Tcommaaccent oacute -120 KPX Tcommaaccent ocircumflex -120 KPX Tcommaaccent odieresis -120 KPX Tcommaaccent ograve -120 KPX Tcommaaccent ohungarumlaut -120 KPX Tcommaaccent omacron -60 KPX Tcommaaccent oslash -120 KPX Tcommaaccent otilde -60 KPX Tcommaaccent period -120 KPX Tcommaaccent r -120 KPX Tcommaaccent racute -120 KPX Tcommaaccent rcaron -120 KPX Tcommaaccent rcommaaccent -120 KPX Tcommaaccent semicolon -20 KPX Tcommaaccent u -120 KPX Tcommaaccent uacute -120 KPX Tcommaaccent ucircumflex -120 KPX Tcommaaccent udieresis -120 KPX Tcommaaccent ugrave -120 KPX Tcommaaccent uhungarumlaut -120 KPX Tcommaaccent umacron -60 KPX Tcommaaccent uogonek -120 KPX Tcommaaccent uring -120 KPX Tcommaaccent w -120 KPX Tcommaaccent y -120 KPX Tcommaaccent yacute -120 KPX Tcommaaccent ydieresis -60 KPX U A -40 KPX U Aacute -40 KPX U Abreve -40 KPX U Acircumflex -40 KPX U Adieresis -40 KPX U Agrave -40 KPX U Amacron -40 KPX U Aogonek -40 KPX U Aring -40 KPX U Atilde -40 KPX U comma -40 KPX U period -40 KPX Uacute A -40 KPX Uacute Aacute -40 KPX Uacute Abreve -40 KPX Uacute Acircumflex -40 KPX Uacute Adieresis -40 KPX Uacute Agrave -40 KPX Uacute Amacron -40 KPX Uacute Aogonek -40 KPX Uacute Aring -40 KPX Uacute Atilde -40 KPX Uacute comma -40 KPX Uacute period -40 KPX Ucircumflex A -40 KPX Ucircumflex Aacute -40 KPX Ucircumflex Abreve -40 KPX Ucircumflex Acircumflex -40 KPX Ucircumflex Adieresis -40 KPX Ucircumflex Agrave -40 KPX Ucircumflex Amacron -40 KPX Ucircumflex Aogonek -40 KPX Ucircumflex Aring -40 KPX Ucircumflex Atilde -40 KPX Ucircumflex comma -40 KPX Ucircumflex period -40 KPX Udieresis A -40 KPX Udieresis Aacute -40 KPX Udieresis Abreve -40 KPX Udieresis Acircumflex -40 KPX Udieresis Adieresis -40 KPX Udieresis Agrave -40 KPX Udieresis Amacron -40 KPX Udieresis Aogonek -40 KPX Udieresis Aring -40 KPX Udieresis Atilde -40 KPX Udieresis comma -40 KPX Udieresis period -40 KPX Ugrave A -40 KPX Ugrave Aacute -40 KPX Ugrave Abreve -40 KPX Ugrave Acircumflex -40 KPX Ugrave Adieresis -40 KPX Ugrave Agrave -40 KPX Ugrave Amacron -40 KPX Ugrave Aogonek -40 KPX Ugrave Aring -40 KPX Ugrave Atilde -40 KPX Ugrave comma -40 KPX Ugrave period -40 KPX Uhungarumlaut A -40 KPX Uhungarumlaut Aacute -40 KPX Uhungarumlaut Abreve -40 KPX Uhungarumlaut Acircumflex -40 KPX Uhungarumlaut Adieresis -40 KPX Uhungarumlaut Agrave -40 KPX Uhungarumlaut Amacron -40 KPX Uhungarumlaut Aogonek -40 KPX Uhungarumlaut Aring -40 KPX Uhungarumlaut Atilde -40 KPX Uhungarumlaut comma -40 KPX Uhungarumlaut period -40 KPX Umacron A -40 KPX Umacron Aacute -40 KPX Umacron Abreve -40 KPX Umacron Acircumflex -40 KPX Umacron Adieresis -40 KPX Umacron Agrave -40 KPX Umacron Amacron -40 KPX Umacron Aogonek -40 KPX Umacron Aring -40 KPX Umacron Atilde -40 KPX Umacron comma -40 KPX Umacron period -40 KPX Uogonek A -40 KPX Uogonek Aacute -40 KPX Uogonek Abreve -40 KPX Uogonek Acircumflex -40 KPX Uogonek Adieresis -40 KPX Uogonek Agrave -40 KPX Uogonek Amacron -40 KPX Uogonek Aogonek -40 KPX Uogonek Aring -40 KPX Uogonek Atilde -40 KPX Uogonek comma -40 KPX Uogonek period -40 KPX Uring A -40 KPX Uring Aacute -40 KPX Uring Abreve -40 KPX Uring Acircumflex -40 KPX Uring Adieresis -40 KPX Uring Agrave -40 KPX Uring Amacron -40 KPX Uring Aogonek -40 KPX Uring Aring -40 KPX Uring Atilde -40 KPX Uring comma -40 KPX Uring period -40 KPX V A -80 KPX V Aacute -80 KPX V Abreve -80 KPX V Acircumflex -80 KPX V Adieresis -80 KPX V Agrave -80 KPX V Amacron -80 KPX V Aogonek -80 KPX V Aring -80 KPX V Atilde -80 KPX V G -40 KPX V Gbreve -40 KPX V Gcommaaccent -40 KPX V O -40 KPX V Oacute -40 KPX V Ocircumflex -40 KPX V Odieresis -40 KPX V Ograve -40 KPX V Ohungarumlaut -40 KPX V Omacron -40 KPX V Oslash -40 KPX V Otilde -40 KPX V a -70 KPX V aacute -70 KPX V abreve -70 KPX V acircumflex -70 KPX V adieresis -70 KPX V agrave -70 KPX V amacron -70 KPX V aogonek -70 KPX V aring -70 KPX V atilde -70 KPX V colon -40 KPX V comma -125 KPX V e -80 KPX V eacute -80 KPX V ecaron -80 KPX V ecircumflex -80 KPX V edieresis -80 KPX V edotaccent -80 KPX V egrave -80 KPX V emacron -80 KPX V eogonek -80 KPX V hyphen -80 KPX V o -80 KPX V oacute -80 KPX V ocircumflex -80 KPX V odieresis -80 KPX V ograve -80 KPX V ohungarumlaut -80 KPX V omacron -80 KPX V oslash -80 KPX V otilde -80 KPX V period -125 KPX V semicolon -40 KPX V u -70 KPX V uacute -70 KPX V ucircumflex -70 KPX V udieresis -70 KPX V ugrave -70 KPX V uhungarumlaut -70 KPX V umacron -70 KPX V uogonek -70 KPX V uring -70 KPX W A -50 KPX W Aacute -50 KPX W Abreve -50 KPX W Acircumflex -50 KPX W Adieresis -50 KPX W Agrave -50 KPX W Amacron -50 KPX W Aogonek -50 KPX W Aring -50 KPX W Atilde -50 KPX W O -20 KPX W Oacute -20 KPX W Ocircumflex -20 KPX W Odieresis -20 KPX W Ograve -20 KPX W Ohungarumlaut -20 KPX W Omacron -20 KPX W Oslash -20 KPX W Otilde -20 KPX W a -40 KPX W aacute -40 KPX W abreve -40 KPX W acircumflex -40 KPX W adieresis -40 KPX W agrave -40 KPX W amacron -40 KPX W aogonek -40 KPX W aring -40 KPX W atilde -40 KPX W comma -80 KPX W e -30 KPX W eacute -30 KPX W ecaron -30 KPX W ecircumflex -30 KPX W edieresis -30 KPX W edotaccent -30 KPX W egrave -30 KPX W emacron -30 KPX W eogonek -30 KPX W hyphen -40 KPX W o -30 KPX W oacute -30 KPX W ocircumflex -30 KPX W odieresis -30 KPX W ograve -30 KPX W ohungarumlaut -30 KPX W omacron -30 KPX W oslash -30 KPX W otilde -30 KPX W period -80 KPX W u -30 KPX W uacute -30 KPX W ucircumflex -30 KPX W udieresis -30 KPX W ugrave -30 KPX W uhungarumlaut -30 KPX W umacron -30 KPX W uogonek -30 KPX W uring -30 KPX W y -20 KPX W yacute -20 KPX W ydieresis -20 KPX Y A -110 KPX Y Aacute -110 KPX Y Abreve -110 KPX Y Acircumflex -110 KPX Y Adieresis -110 KPX Y Agrave -110 KPX Y Amacron -110 KPX Y Aogonek -110 KPX Y Aring -110 KPX Y Atilde -110 KPX Y O -85 KPX Y Oacute -85 KPX Y Ocircumflex -85 KPX Y Odieresis -85 KPX Y Ograve -85 KPX Y Ohungarumlaut -85 KPX Y Omacron -85 KPX Y Oslash -85 KPX Y Otilde -85 KPX Y a -140 KPX Y aacute -140 KPX Y abreve -70 KPX Y acircumflex -140 KPX Y adieresis -140 KPX Y agrave -140 KPX Y amacron -70 KPX Y aogonek -140 KPX Y aring -140 KPX Y atilde -140 KPX Y colon -60 KPX Y comma -140 KPX Y e -140 KPX Y eacute -140 KPX Y ecaron -140 KPX Y ecircumflex -140 KPX Y edieresis -140 KPX Y edotaccent -140 KPX Y egrave -140 KPX Y emacron -70 KPX Y eogonek -140 KPX Y hyphen -140 KPX Y i -20 KPX Y iacute -20 KPX Y iogonek -20 KPX Y o -140 KPX Y oacute -140 KPX Y ocircumflex -140 KPX Y odieresis -140 KPX Y ograve -140 KPX Y ohungarumlaut -140 KPX Y omacron -140 KPX Y oslash -140 KPX Y otilde -140 KPX Y period -140 KPX Y semicolon -60 KPX Y u -110 KPX Y uacute -110 KPX Y ucircumflex -110 KPX Y udieresis -110 KPX Y ugrave -110 KPX Y uhungarumlaut -110 KPX Y umacron -110 KPX Y uogonek -110 KPX Y uring -110 KPX Yacute A -110 KPX Yacute Aacute -110 KPX Yacute Abreve -110 KPX Yacute Acircumflex -110 KPX Yacute Adieresis -110 KPX Yacute Agrave -110 KPX Yacute Amacron -110 KPX Yacute Aogonek -110 KPX Yacute Aring -110 KPX Yacute Atilde -110 KPX Yacute O -85 KPX Yacute Oacute -85 KPX Yacute Ocircumflex -85 KPX Yacute Odieresis -85 KPX Yacute Ograve -85 KPX Yacute Ohungarumlaut -85 KPX Yacute Omacron -85 KPX Yacute Oslash -85 KPX Yacute Otilde -85 KPX Yacute a -140 KPX Yacute aacute -140 KPX Yacute abreve -70 KPX Yacute acircumflex -140 KPX Yacute adieresis -140 KPX Yacute agrave -140 KPX Yacute amacron -70 KPX Yacute aogonek -140 KPX Yacute aring -140 KPX Yacute atilde -70 KPX Yacute colon -60 KPX Yacute comma -140 KPX Yacute e -140 KPX Yacute eacute -140 KPX Yacute ecaron -140 KPX Yacute ecircumflex -140 KPX Yacute edieresis -140 KPX Yacute edotaccent -140 KPX Yacute egrave -140 KPX Yacute emacron -70 KPX Yacute eogonek -140 KPX Yacute hyphen -140 KPX Yacute i -20 KPX Yacute iacute -20 KPX Yacute iogonek -20 KPX Yacute o -140 KPX Yacute oacute -140 KPX Yacute ocircumflex -140 KPX Yacute odieresis -140 KPX Yacute ograve -140 KPX Yacute ohungarumlaut -140 KPX Yacute omacron -70 KPX Yacute oslash -140 KPX Yacute otilde -140 KPX Yacute period -140 KPX Yacute semicolon -60 KPX Yacute u -110 KPX Yacute uacute -110 KPX Yacute ucircumflex -110 KPX Yacute udieresis -110 KPX Yacute ugrave -110 KPX Yacute uhungarumlaut -110 KPX Yacute umacron -110 KPX Yacute uogonek -110 KPX Yacute uring -110 KPX Ydieresis A -110 KPX Ydieresis Aacute -110 KPX Ydieresis Abreve -110 KPX Ydieresis Acircumflex -110 KPX Ydieresis Adieresis -110 KPX Ydieresis Agrave -110 KPX Ydieresis Amacron -110 KPX Ydieresis Aogonek -110 KPX Ydieresis Aring -110 KPX Ydieresis Atilde -110 KPX Ydieresis O -85 KPX Ydieresis Oacute -85 KPX Ydieresis Ocircumflex -85 KPX Ydieresis Odieresis -85 KPX Ydieresis Ograve -85 KPX Ydieresis Ohungarumlaut -85 KPX Ydieresis Omacron -85 KPX Ydieresis Oslash -85 KPX Ydieresis Otilde -85 KPX Ydieresis a -140 KPX Ydieresis aacute -140 KPX Ydieresis abreve -70 KPX Ydieresis acircumflex -140 KPX Ydieresis adieresis -140 KPX Ydieresis agrave -140 KPX Ydieresis amacron -70 KPX Ydieresis aogonek -140 KPX Ydieresis aring -140 KPX Ydieresis atilde -70 KPX Ydieresis colon -60 KPX Ydieresis comma -140 KPX Ydieresis e -140 KPX Ydieresis eacute -140 KPX Ydieresis ecaron -140 KPX Ydieresis ecircumflex -140 KPX Ydieresis edieresis -140 KPX Ydieresis edotaccent -140 KPX Ydieresis egrave -140 KPX Ydieresis emacron -70 KPX Ydieresis eogonek -140 KPX Ydieresis hyphen -140 KPX Ydieresis i -20 KPX Ydieresis iacute -20 KPX Ydieresis iogonek -20 KPX Ydieresis o -140 KPX Ydieresis oacute -140 KPX Ydieresis ocircumflex -140 KPX Ydieresis odieresis -140 KPX Ydieresis ograve -140 KPX Ydieresis ohungarumlaut -140 KPX Ydieresis omacron -140 KPX Ydieresis oslash -140 KPX Ydieresis otilde -140 KPX Ydieresis period -140 KPX Ydieresis semicolon -60 KPX Ydieresis u -110 KPX Ydieresis uacute -110 KPX Ydieresis ucircumflex -110 KPX Ydieresis udieresis -110 KPX Ydieresis ugrave -110 KPX Ydieresis uhungarumlaut -110 KPX Ydieresis umacron -110 KPX Ydieresis uogonek -110 KPX Ydieresis uring -110 KPX a v -20 KPX a w -20 KPX a y -30 KPX a yacute -30 KPX a ydieresis -30 KPX aacute v -20 KPX aacute w -20 KPX aacute y -30 KPX aacute yacute -30 KPX aacute ydieresis -30 KPX abreve v -20 KPX abreve w -20 KPX abreve y -30 KPX abreve yacute -30 KPX abreve ydieresis -30 KPX acircumflex v -20 KPX acircumflex w -20 KPX acircumflex y -30 KPX acircumflex yacute -30 KPX acircumflex ydieresis -30 KPX adieresis v -20 KPX adieresis w -20 KPX adieresis y -30 KPX adieresis yacute -30 KPX adieresis ydieresis -30 KPX agrave v -20 KPX agrave w -20 KPX agrave y -30 KPX agrave yacute -30 KPX agrave ydieresis -30 KPX amacron v -20 KPX amacron w -20 KPX amacron y -30 KPX amacron yacute -30 KPX amacron ydieresis -30 KPX aogonek v -20 KPX aogonek w -20 KPX aogonek y -30 KPX aogonek yacute -30 KPX aogonek ydieresis -30 KPX aring v -20 KPX aring w -20 KPX aring y -30 KPX aring yacute -30 KPX aring ydieresis -30 KPX atilde v -20 KPX atilde w -20 KPX atilde y -30 KPX atilde yacute -30 KPX atilde ydieresis -30 KPX b b -10 KPX b comma -40 KPX b l -20 KPX b lacute -20 KPX b lcommaaccent -20 KPX b lslash -20 KPX b period -40 KPX b u -20 KPX b uacute -20 KPX b ucircumflex -20 KPX b udieresis -20 KPX b ugrave -20 KPX b uhungarumlaut -20 KPX b umacron -20 KPX b uogonek -20 KPX b uring -20 KPX b v -20 KPX b y -20 KPX b yacute -20 KPX b ydieresis -20 KPX c comma -15 KPX c k -20 KPX c kcommaaccent -20 KPX cacute comma -15 KPX cacute k -20 KPX cacute kcommaaccent -20 KPX ccaron comma -15 KPX ccaron k -20 KPX ccaron kcommaaccent -20 KPX ccedilla comma -15 KPX ccedilla k -20 KPX ccedilla kcommaaccent -20 KPX colon space -50 KPX comma quotedblright -100 KPX comma quoteright -100 KPX e comma -15 KPX e period -15 KPX e v -30 KPX e w -20 KPX e x -30 KPX e y -20 KPX e yacute -20 KPX e ydieresis -20 KPX eacute comma -15 KPX eacute period -15 KPX eacute v -30 KPX eacute w -20 KPX eacute x -30 KPX eacute y -20 KPX eacute yacute -20 KPX eacute ydieresis -20 KPX ecaron comma -15 KPX ecaron period -15 KPX ecaron v -30 KPX ecaron w -20 KPX ecaron x -30 KPX ecaron y -20 KPX ecaron yacute -20 KPX ecaron ydieresis -20 KPX ecircumflex comma -15 KPX ecircumflex period -15 KPX ecircumflex v -30 KPX ecircumflex w -20 KPX ecircumflex x -30 KPX ecircumflex y -20 KPX ecircumflex yacute -20 KPX ecircumflex ydieresis -20 KPX edieresis comma -15 KPX edieresis period -15 KPX edieresis v -30 KPX edieresis w -20 KPX edieresis x -30 KPX edieresis y -20 KPX edieresis yacute -20 KPX edieresis ydieresis -20 KPX edotaccent comma -15 KPX edotaccent period -15 KPX edotaccent v -30 KPX edotaccent w -20 KPX edotaccent x -30 KPX edotaccent y -20 KPX edotaccent yacute -20 KPX edotaccent ydieresis -20 KPX egrave comma -15 KPX egrave period -15 KPX egrave v -30 KPX egrave w -20 KPX egrave x -30 KPX egrave y -20 KPX egrave yacute -20 KPX egrave ydieresis -20 KPX emacron comma -15 KPX emacron period -15 KPX emacron v -30 KPX emacron w -20 KPX emacron x -30 KPX emacron y -20 KPX emacron yacute -20 KPX emacron ydieresis -20 KPX eogonek comma -15 KPX eogonek period -15 KPX eogonek v -30 KPX eogonek w -20 KPX eogonek x -30 KPX eogonek y -20 KPX eogonek yacute -20 KPX eogonek ydieresis -20 KPX f a -30 KPX f aacute -30 KPX f abreve -30 KPX f acircumflex -30 KPX f adieresis -30 KPX f agrave -30 KPX f amacron -30 KPX f aogonek -30 KPX f aring -30 KPX f atilde -30 KPX f comma -30 KPX f dotlessi -28 KPX f e -30 KPX f eacute -30 KPX f ecaron -30 KPX f ecircumflex -30 KPX f edieresis -30 KPX f edotaccent -30 KPX f egrave -30 KPX f emacron -30 KPX f eogonek -30 KPX f o -30 KPX f oacute -30 KPX f ocircumflex -30 KPX f odieresis -30 KPX f ograve -30 KPX f ohungarumlaut -30 KPX f omacron -30 KPX f oslash -30 KPX f otilde -30 KPX f period -30 KPX f quotedblright 60 KPX f quoteright 50 KPX g r -10 KPX g racute -10 KPX g rcaron -10 KPX g rcommaaccent -10 KPX gbreve r -10 KPX gbreve racute -10 KPX gbreve rcaron -10 KPX gbreve rcommaaccent -10 KPX gcommaaccent r -10 KPX gcommaaccent racute -10 KPX gcommaaccent rcaron -10 KPX gcommaaccent rcommaaccent -10 KPX h y -30 KPX h yacute -30 KPX h ydieresis -30 KPX k e -20 KPX k eacute -20 KPX k ecaron -20 KPX k ecircumflex -20 KPX k edieresis -20 KPX k edotaccent -20 KPX k egrave -20 KPX k emacron -20 KPX k eogonek -20 KPX k o -20 KPX k oacute -20 KPX k ocircumflex -20 KPX k odieresis -20 KPX k ograve -20 KPX k ohungarumlaut -20 KPX k omacron -20 KPX k oslash -20 KPX k otilde -20 KPX kcommaaccent e -20 KPX kcommaaccent eacute -20 KPX kcommaaccent ecaron -20 KPX kcommaaccent ecircumflex -20 KPX kcommaaccent edieresis -20 KPX kcommaaccent edotaccent -20 KPX kcommaaccent egrave -20 KPX kcommaaccent emacron -20 KPX kcommaaccent eogonek -20 KPX kcommaaccent o -20 KPX kcommaaccent oacute -20 KPX kcommaaccent ocircumflex -20 KPX kcommaaccent odieresis -20 KPX kcommaaccent ograve -20 KPX kcommaaccent ohungarumlaut -20 KPX kcommaaccent omacron -20 KPX kcommaaccent oslash -20 KPX kcommaaccent otilde -20 KPX m u -10 KPX m uacute -10 KPX m ucircumflex -10 KPX m udieresis -10 KPX m ugrave -10 KPX m uhungarumlaut -10 KPX m umacron -10 KPX m uogonek -10 KPX m uring -10 KPX m y -15 KPX m yacute -15 KPX m ydieresis -15 KPX n u -10 KPX n uacute -10 KPX n ucircumflex -10 KPX n udieresis -10 KPX n ugrave -10 KPX n uhungarumlaut -10 KPX n umacron -10 KPX n uogonek -10 KPX n uring -10 KPX n v -20 KPX n y -15 KPX n yacute -15 KPX n ydieresis -15 KPX nacute u -10 KPX nacute uacute -10 KPX nacute ucircumflex -10 KPX nacute udieresis -10 KPX nacute ugrave -10 KPX nacute uhungarumlaut -10 KPX nacute umacron -10 KPX nacute uogonek -10 KPX nacute uring -10 KPX nacute v -20 KPX nacute y -15 KPX nacute yacute -15 KPX nacute ydieresis -15 KPX ncaron u -10 KPX ncaron uacute -10 KPX ncaron ucircumflex -10 KPX ncaron udieresis -10 KPX ncaron ugrave -10 KPX ncaron uhungarumlaut -10 KPX ncaron umacron -10 KPX ncaron uogonek -10 KPX ncaron uring -10 KPX ncaron v -20 KPX ncaron y -15 KPX ncaron yacute -15 KPX ncaron ydieresis -15 KPX ncommaaccent u -10 KPX ncommaaccent uacute -10 KPX ncommaaccent ucircumflex -10 KPX ncommaaccent udieresis -10 KPX ncommaaccent ugrave -10 KPX ncommaaccent uhungarumlaut -10 KPX ncommaaccent umacron -10 KPX ncommaaccent uogonek -10 KPX ncommaaccent uring -10 KPX ncommaaccent v -20 KPX ncommaaccent y -15 KPX ncommaaccent yacute -15 KPX ncommaaccent ydieresis -15 KPX ntilde u -10 KPX ntilde uacute -10 KPX ntilde ucircumflex -10 KPX ntilde udieresis -10 KPX ntilde ugrave -10 KPX ntilde uhungarumlaut -10 KPX ntilde umacron -10 KPX ntilde uogonek -10 KPX ntilde uring -10 KPX ntilde v -20 KPX ntilde y -15 KPX ntilde yacute -15 KPX ntilde ydieresis -15 KPX o comma -40 KPX o period -40 KPX o v -15 KPX o w -15 KPX o x -30 KPX o y -30 KPX o yacute -30 KPX o ydieresis -30 KPX oacute comma -40 KPX oacute period -40 KPX oacute v -15 KPX oacute w -15 KPX oacute x -30 KPX oacute y -30 KPX oacute yacute -30 KPX oacute ydieresis -30 KPX ocircumflex comma -40 KPX ocircumflex period -40 KPX ocircumflex v -15 KPX ocircumflex w -15 KPX ocircumflex x -30 KPX ocircumflex y -30 KPX ocircumflex yacute -30 KPX ocircumflex ydieresis -30 KPX odieresis comma -40 KPX odieresis period -40 KPX odieresis v -15 KPX odieresis w -15 KPX odieresis x -30 KPX odieresis y -30 KPX odieresis yacute -30 KPX odieresis ydieresis -30 KPX ograve comma -40 KPX ograve period -40 KPX ograve v -15 KPX ograve w -15 KPX ograve x -30 KPX ograve y -30 KPX ograve yacute -30 KPX ograve ydieresis -30 KPX ohungarumlaut comma -40 KPX ohungarumlaut period -40 KPX ohungarumlaut v -15 KPX ohungarumlaut w -15 KPX ohungarumlaut x -30 KPX ohungarumlaut y -30 KPX ohungarumlaut yacute -30 KPX ohungarumlaut ydieresis -30 KPX omacron comma -40 KPX omacron period -40 KPX omacron v -15 KPX omacron w -15 KPX omacron x -30 KPX omacron y -30 KPX omacron yacute -30 KPX omacron ydieresis -30 KPX oslash a -55 KPX oslash aacute -55 KPX oslash abreve -55 KPX oslash acircumflex -55 KPX oslash adieresis -55 KPX oslash agrave -55 KPX oslash amacron -55 KPX oslash aogonek -55 KPX oslash aring -55 KPX oslash atilde -55 KPX oslash b -55 KPX oslash c -55 KPX oslash cacute -55 KPX oslash ccaron -55 KPX oslash ccedilla -55 KPX oslash comma -95 KPX oslash d -55 KPX oslash dcroat -55 KPX oslash e -55 KPX oslash eacute -55 KPX oslash ecaron -55 KPX oslash ecircumflex -55 KPX oslash edieresis -55 KPX oslash edotaccent -55 KPX oslash egrave -55 KPX oslash emacron -55 KPX oslash eogonek -55 KPX oslash f -55 KPX oslash g -55 KPX oslash gbreve -55 KPX oslash gcommaaccent -55 KPX oslash h -55 KPX oslash i -55 KPX oslash iacute -55 KPX oslash icircumflex -55 KPX oslash idieresis -55 KPX oslash igrave -55 KPX oslash imacron -55 KPX oslash iogonek -55 KPX oslash j -55 KPX oslash k -55 KPX oslash kcommaaccent -55 KPX oslash l -55 KPX oslash lacute -55 KPX oslash lcommaaccent -55 KPX oslash lslash -55 KPX oslash m -55 KPX oslash n -55 KPX oslash nacute -55 KPX oslash ncaron -55 KPX oslash ncommaaccent -55 KPX oslash ntilde -55 KPX oslash o -55 KPX oslash oacute -55 KPX oslash ocircumflex -55 KPX oslash odieresis -55 KPX oslash ograve -55 KPX oslash ohungarumlaut -55 KPX oslash omacron -55 KPX oslash oslash -55 KPX oslash otilde -55 KPX oslash p -55 KPX oslash period -95 KPX oslash q -55 KPX oslash r -55 KPX oslash racute -55 KPX oslash rcaron -55 KPX oslash rcommaaccent -55 KPX oslash s -55 KPX oslash sacute -55 KPX oslash scaron -55 KPX oslash scedilla -55 KPX oslash scommaaccent -55 KPX oslash t -55 KPX oslash tcommaaccent -55 KPX oslash u -55 KPX oslash uacute -55 KPX oslash ucircumflex -55 KPX oslash udieresis -55 KPX oslash ugrave -55 KPX oslash uhungarumlaut -55 KPX oslash umacron -55 KPX oslash uogonek -55 KPX oslash uring -55 KPX oslash v -70 KPX oslash w -70 KPX oslash x -85 KPX oslash y -70 KPX oslash yacute -70 KPX oslash ydieresis -70 KPX oslash z -55 KPX oslash zacute -55 KPX oslash zcaron -55 KPX oslash zdotaccent -55 KPX otilde comma -40 KPX otilde period -40 KPX otilde v -15 KPX otilde w -15 KPX otilde x -30 KPX otilde y -30 KPX otilde yacute -30 KPX otilde ydieresis -30 KPX p comma -35 KPX p period -35 KPX p y -30 KPX p yacute -30 KPX p ydieresis -30 KPX period quotedblright -100 KPX period quoteright -100 KPX period space -60 KPX quotedblright space -40 KPX quoteleft quoteleft -57 KPX quoteright d -50 KPX quoteright dcroat -50 KPX quoteright quoteright -57 KPX quoteright r -50 KPX quoteright racute -50 KPX quoteright rcaron -50 KPX quoteright rcommaaccent -50 KPX quoteright s -50 KPX quoteright sacute -50 KPX quoteright scaron -50 KPX quoteright scedilla -50 KPX quoteright scommaaccent -50 KPX quoteright space -70 KPX r a -10 KPX r aacute -10 KPX r abreve -10 KPX r acircumflex -10 KPX r adieresis -10 KPX r agrave -10 KPX r amacron -10 KPX r aogonek -10 KPX r aring -10 KPX r atilde -10 KPX r colon 30 KPX r comma -50 KPX r i 15 KPX r iacute 15 KPX r icircumflex 15 KPX r idieresis 15 KPX r igrave 15 KPX r imacron 15 KPX r iogonek 15 KPX r k 15 KPX r kcommaaccent 15 KPX r l 15 KPX r lacute 15 KPX r lcommaaccent 15 KPX r lslash 15 KPX r m 25 KPX r n 25 KPX r nacute 25 KPX r ncaron 25 KPX r ncommaaccent 25 KPX r ntilde 25 KPX r p 30 KPX r period -50 KPX r semicolon 30 KPX r t 40 KPX r tcommaaccent 40 KPX r u 15 KPX r uacute 15 KPX r ucircumflex 15 KPX r udieresis 15 KPX r ugrave 15 KPX r uhungarumlaut 15 KPX r umacron 15 KPX r uogonek 15 KPX r uring 15 KPX r v 30 KPX r y 30 KPX r yacute 30 KPX r ydieresis 30 KPX racute a -10 KPX racute aacute -10 KPX racute abreve -10 KPX racute acircumflex -10 KPX racute adieresis -10 KPX racute agrave -10 KPX racute amacron -10 KPX racute aogonek -10 KPX racute aring -10 KPX racute atilde -10 KPX racute colon 30 KPX racute comma -50 KPX racute i 15 KPX racute iacute 15 KPX racute icircumflex 15 KPX racute idieresis 15 KPX racute igrave 15 KPX racute imacron 15 KPX racute iogonek 15 KPX racute k 15 KPX racute kcommaaccent 15 KPX racute l 15 KPX racute lacute 15 KPX racute lcommaaccent 15 KPX racute lslash 15 KPX racute m 25 KPX racute n 25 KPX racute nacute 25 KPX racute ncaron 25 KPX racute ncommaaccent 25 KPX racute ntilde 25 KPX racute p 30 KPX racute period -50 KPX racute semicolon 30 KPX racute t 40 KPX racute tcommaaccent 40 KPX racute u 15 KPX racute uacute 15 KPX racute ucircumflex 15 KPX racute udieresis 15 KPX racute ugrave 15 KPX racute uhungarumlaut 15 KPX racute umacron 15 KPX racute uogonek 15 KPX racute uring 15 KPX racute v 30 KPX racute y 30 KPX racute yacute 30 KPX racute ydieresis 30 KPX rcaron a -10 KPX rcaron aacute -10 KPX rcaron abreve -10 KPX rcaron acircumflex -10 KPX rcaron adieresis -10 KPX rcaron agrave -10 KPX rcaron amacron -10 KPX rcaron aogonek -10 KPX rcaron aring -10 KPX rcaron atilde -10 KPX rcaron colon 30 KPX rcaron comma -50 KPX rcaron i 15 KPX rcaron iacute 15 KPX rcaron icircumflex 15 KPX rcaron idieresis 15 KPX rcaron igrave 15 KPX rcaron imacron 15 KPX rcaron iogonek 15 KPX rcaron k 15 KPX rcaron kcommaaccent 15 KPX rcaron l 15 KPX rcaron lacute 15 KPX rcaron lcommaaccent 15 KPX rcaron lslash 15 KPX rcaron m 25 KPX rcaron n 25 KPX rcaron nacute 25 KPX rcaron ncaron 25 KPX rcaron ncommaaccent 25 KPX rcaron ntilde 25 KPX rcaron p 30 KPX rcaron period -50 KPX rcaron semicolon 30 KPX rcaron t 40 KPX rcaron tcommaaccent 40 KPX rcaron u 15 KPX rcaron uacute 15 KPX rcaron ucircumflex 15 KPX rcaron udieresis 15 KPX rcaron ugrave 15 KPX rcaron uhungarumlaut 15 KPX rcaron umacron 15 KPX rcaron uogonek 15 KPX rcaron uring 15 KPX rcaron v 30 KPX rcaron y 30 KPX rcaron yacute 30 KPX rcaron ydieresis 30 KPX rcommaaccent a -10 KPX rcommaaccent aacute -10 KPX rcommaaccent abreve -10 KPX rcommaaccent acircumflex -10 KPX rcommaaccent adieresis -10 KPX rcommaaccent agrave -10 KPX rcommaaccent amacron -10 KPX rcommaaccent aogonek -10 KPX rcommaaccent aring -10 KPX rcommaaccent atilde -10 KPX rcommaaccent colon 30 KPX rcommaaccent comma -50 KPX rcommaaccent i 15 KPX rcommaaccent iacute 15 KPX rcommaaccent icircumflex 15 KPX rcommaaccent idieresis 15 KPX rcommaaccent igrave 15 KPX rcommaaccent imacron 15 KPX rcommaaccent iogonek 15 KPX rcommaaccent k 15 KPX rcommaaccent kcommaaccent 15 KPX rcommaaccent l 15 KPX rcommaaccent lacute 15 KPX rcommaaccent lcommaaccent 15 KPX rcommaaccent lslash 15 KPX rcommaaccent m 25 KPX rcommaaccent n 25 KPX rcommaaccent nacute 25 KPX rcommaaccent ncaron 25 KPX rcommaaccent ncommaaccent 25 KPX rcommaaccent ntilde 25 KPX rcommaaccent p 30 KPX rcommaaccent period -50 KPX rcommaaccent semicolon 30 KPX rcommaaccent t 40 KPX rcommaaccent tcommaaccent 40 KPX rcommaaccent u 15 KPX rcommaaccent uacute 15 KPX rcommaaccent ucircumflex 15 KPX rcommaaccent udieresis 15 KPX rcommaaccent ugrave 15 KPX rcommaaccent uhungarumlaut 15 KPX rcommaaccent umacron 15 KPX rcommaaccent uogonek 15 KPX rcommaaccent uring 15 KPX rcommaaccent v 30 KPX rcommaaccent y 30 KPX rcommaaccent yacute 30 KPX rcommaaccent ydieresis 30 KPX s comma -15 KPX s period -15 KPX s w -30 KPX sacute comma -15 KPX sacute period -15 KPX sacute w -30 KPX scaron comma -15 KPX scaron period -15 KPX scaron w -30 KPX scedilla comma -15 KPX scedilla period -15 KPX scedilla w -30 KPX scommaaccent comma -15 KPX scommaaccent period -15 KPX scommaaccent w -30 KPX semicolon space -50 KPX space T -50 KPX space Tcaron -50 KPX space Tcommaaccent -50 KPX space V -50 KPX space W -40 KPX space Y -90 KPX space Yacute -90 KPX space Ydieresis -90 KPX space quotedblleft -30 KPX space quoteleft -60 KPX v a -25 KPX v aacute -25 KPX v abreve -25 KPX v acircumflex -25 KPX v adieresis -25 KPX v agrave -25 KPX v amacron -25 KPX v aogonek -25 KPX v aring -25 KPX v atilde -25 KPX v comma -80 KPX v e -25 KPX v eacute -25 KPX v ecaron -25 KPX v ecircumflex -25 KPX v edieresis -25 KPX v edotaccent -25 KPX v egrave -25 KPX v emacron -25 KPX v eogonek -25 KPX v o -25 KPX v oacute -25 KPX v ocircumflex -25 KPX v odieresis -25 KPX v ograve -25 KPX v ohungarumlaut -25 KPX v omacron -25 KPX v oslash -25 KPX v otilde -25 KPX v period -80 KPX w a -15 KPX w aacute -15 KPX w abreve -15 KPX w acircumflex -15 KPX w adieresis -15 KPX w agrave -15 KPX w amacron -15 KPX w aogonek -15 KPX w aring -15 KPX w atilde -15 KPX w comma -60 KPX w e -10 KPX w eacute -10 KPX w ecaron -10 KPX w ecircumflex -10 KPX w edieresis -10 KPX w edotaccent -10 KPX w egrave -10 KPX w emacron -10 KPX w eogonek -10 KPX w o -10 KPX w oacute -10 KPX w ocircumflex -10 KPX w odieresis -10 KPX w ograve -10 KPX w ohungarumlaut -10 KPX w omacron -10 KPX w oslash -10 KPX w otilde -10 KPX w period -60 KPX x e -30 KPX x eacute -30 KPX x ecaron -30 KPX x ecircumflex -30 KPX x edieresis -30 KPX x edotaccent -30 KPX x egrave -30 KPX x emacron -30 KPX x eogonek -30 KPX y a -20 KPX y aacute -20 KPX y abreve -20 KPX y acircumflex -20 KPX y adieresis -20 KPX y agrave -20 KPX y amacron -20 KPX y aogonek -20 KPX y aring -20 KPX y atilde -20 KPX y comma -100 KPX y e -20 KPX y eacute -20 KPX y ecaron -20 KPX y ecircumflex -20 KPX y edieresis -20 KPX y edotaccent -20 KPX y egrave -20 KPX y emacron -20 KPX y eogonek -20 KPX y o -20 KPX y oacute -20 KPX y ocircumflex -20 KPX y odieresis -20 KPX y ograve -20 KPX y ohungarumlaut -20 KPX y omacron -20 KPX y oslash -20 KPX y otilde -20 KPX y period -100 KPX yacute a -20 KPX yacute aacute -20 KPX yacute abreve -20 KPX yacute acircumflex -20 KPX yacute adieresis -20 KPX yacute agrave -20 KPX yacute amacron -20 KPX yacute aogonek -20 KPX yacute aring -20 KPX yacute atilde -20 KPX yacute comma -100 KPX yacute e -20 KPX yacute eacute -20 KPX yacute ecaron -20 KPX yacute ecircumflex -20 KPX yacute edieresis -20 KPX yacute edotaccent -20 KPX yacute egrave -20 KPX yacute emacron -20 KPX yacute eogonek -20 KPX yacute o -20 KPX yacute oacute -20 KPX yacute ocircumflex -20 KPX yacute odieresis -20 KPX yacute ograve -20 KPX yacute ohungarumlaut -20 KPX yacute omacron -20 KPX yacute oslash -20 KPX yacute otilde -20 KPX yacute period -100 KPX ydieresis a -20 KPX ydieresis aacute -20 KPX ydieresis abreve -20 KPX ydieresis acircumflex -20 KPX ydieresis adieresis -20 KPX ydieresis agrave -20 KPX ydieresis amacron -20 KPX ydieresis aogonek -20 KPX ydieresis aring -20 KPX ydieresis atilde -20 KPX ydieresis comma -100 KPX ydieresis e -20 KPX ydieresis eacute -20 KPX ydieresis ecaron -20 KPX ydieresis ecircumflex -20 KPX ydieresis edieresis -20 KPX ydieresis edotaccent -20 KPX ydieresis egrave -20 KPX ydieresis emacron -20 KPX ydieresis eogonek -20 KPX ydieresis o -20 KPX ydieresis oacute -20 KPX ydieresis ocircumflex -20 KPX ydieresis odieresis -20 KPX ydieresis ograve -20 KPX ydieresis ohungarumlaut -20 KPX ydieresis omacron -20 KPX ydieresis oslash -20 KPX ydieresis otilde -20 KPX ydieresis period -100 KPX z e -15 KPX z eacute -15 KPX z ecaron -15 KPX z ecircumflex -15 KPX z edieresis -15 KPX z edotaccent -15 KPX z egrave -15 KPX z emacron -15 KPX z eogonek -15 KPX z o -15 KPX z oacute -15 KPX z ocircumflex -15 KPX z odieresis -15 KPX z ograve -15 KPX z ohungarumlaut -15 KPX z omacron -15 KPX z oslash -15 KPX z otilde -15 KPX zacute e -15 KPX zacute eacute -15 KPX zacute ecaron -15 KPX zacute ecircumflex -15 KPX zacute edieresis -15 KPX zacute edotaccent -15 KPX zacute egrave -15 KPX zacute emacron -15 KPX zacute eogonek -15 KPX zacute o -15 KPX zacute oacute -15 KPX zacute ocircumflex -15 KPX zacute odieresis -15 KPX zacute ograve -15 KPX zacute ohungarumlaut -15 KPX zacute omacron -15 KPX zacute oslash -15 KPX zacute otilde -15 KPX zcaron e -15 KPX zcaron eacute -15 KPX zcaron ecaron -15 KPX zcaron ecircumflex -15 KPX zcaron edieresis -15 KPX zcaron edotaccent -15 KPX zcaron egrave -15 KPX zcaron emacron -15 KPX zcaron eogonek -15 KPX zcaron o -15 KPX zcaron oacute -15 KPX zcaron ocircumflex -15 KPX zcaron odieresis -15 KPX zcaron ograve -15 KPX zcaron ohungarumlaut -15 KPX zcaron omacron -15 KPX zcaron oslash -15 KPX zcaron otilde -15 KPX zdotaccent e -15 KPX zdotaccent eacute -15 KPX zdotaccent ecaron -15 KPX zdotaccent ecircumflex -15 KPX zdotaccent edieresis -15 KPX zdotaccent edotaccent -15 KPX zdotaccent egrave -15 KPX zdotaccent emacron -15 KPX zdotaccent eogonek -15 KPX zdotaccent o -15 KPX zdotaccent oacute -15 KPX zdotaccent ocircumflex -15 KPX zdotaccent odieresis -15 KPX zdotaccent ograve -15 KPX zdotaccent ohungarumlaut -15 KPX zdotaccent omacron -15 KPX zdotaccent oslash -15 KPX zdotaccent otilde -15 EndKernPairs EndKernData EndFontMetrics gle-graphics-4.2.4c/src/fonts/Adobe-Core35_AFMs-314/ITCAvantGarde-DemiOblique.afm0000664000000000000000000010466111405446017025344 0ustar rootrootStartFontMetrics 4.1 Comment Copyright (c) 1985, 1987, 1989, 1990, 1991, 1992, 1997 Adobe Systems Incorporated. All Rights Reserved. Comment Creation Date: Mon Jun 23 16:39:52 1997 Comment UniqueID 43086 Comment VMusage 12316 64111 FontName AvantGarde-DemiOblique FullName ITC Avant Garde Gothic Demi Oblique FamilyName ITC Avant Garde Gothic Weight Demi ItalicAngle -10.5 IsFixedPitch false FontBBox -123 -251 1256 1021 UnderlinePosition -100 UnderlineThickness 50 Version 002.000 Notice Copyright (c) 1985, 1987, 1989, 1990, 1991, 1992, 1997 Adobe Systems Incorporated. All Rights Reserved.ITC Avant Garde Gothic is a registered trademark of International Typeface Corporation. EncodingScheme AdobeStandardEncoding CapHeight 740 XHeight 555 Ascender 740 Descender -192 StdHW 122 StdVW 133 StartCharMetrics 314 C 32 ; WX 280 ; N space ; B 0 0 0 0 ; C 33 ; WX 280 ; N exclam ; B 73 0 344 740 ; C 34 ; WX 360 ; N quotedbl ; B 127 444 479 740 ; C 35 ; WX 560 ; N numbersign ; B 65 0 619 700 ; C 36 ; WX 560 ; N dollar ; B 99 -86 582 857 ; C 37 ; WX 860 ; N percent ; B 139 -15 856 755 ; C 38 ; WX 680 ; N ampersand ; B 70 -15 742 755 ; C 39 ; WX 280 ; N quoteright ; B 159 466 343 740 ; C 40 ; WX 380 ; N parenleft ; B 119 -157 490 754 ; C 41 ; WX 380 ; N parenright ; B 7 -157 378 754 ; C 42 ; WX 440 ; N asterisk ; B 173 457 493 755 ; C 43 ; WX 600 ; N plus ; B 83 0 611 506 ; C 44 ; WX 280 ; N comma ; B 47 -141 231 133 ; C 45 ; WX 420 ; N hyphen ; B 113 230 414 348 ; C 46 ; WX 280 ; N period ; B 73 0 231 133 ; C 47 ; WX 460 ; N slash ; B -13 -100 592 740 ; C 48 ; WX 560 ; N zero ; B 69 -15 628 755 ; C 49 ; WX 560 ; N one ; B 230 0 501 740 ; C 50 ; WX 560 ; N two ; B 44 0 622 755 ; C 51 ; WX 560 ; N three ; B 67 -15 586 755 ; C 52 ; WX 560 ; N four ; B 35 0 605 740 ; C 53 ; WX 560 ; N five ; B 63 -15 601 740 ; C 54 ; WX 560 ; N six ; B 64 -15 588 739 ; C 55 ; WX 560 ; N seven ; B 83 0 636 740 ; C 56 ; WX 560 ; N eight ; B 70 -15 590 755 ; C 57 ; WX 560 ; N nine ; B 109 0 633 754 ; C 58 ; WX 280 ; N colon ; B 73 0 309 555 ; C 59 ; WX 280 ; N semicolon ; B 47 -141 309 555 ; C 60 ; WX 600 ; N less ; B 84 -8 650 514 ; C 61 ; WX 600 ; N equal ; B 63 81 631 425 ; C 62 ; WX 600 ; N greater ; B 44 -8 610 514 ; C 63 ; WX 560 ; N question ; B 135 0 594 755 ; C 64 ; WX 740 ; N at ; B 108 -12 832 712 ; C 65 ; WX 740 ; N A ; B 7 0 732 740 ; C 66 ; WX 580 ; N B ; B 70 0 611 740 ; C 67 ; WX 780 ; N C ; B 96 -15 865 755 ; C 68 ; WX 700 ; N D ; B 63 0 732 740 ; C 69 ; WX 520 ; N E ; B 61 0 597 740 ; C 70 ; WX 480 ; N F ; B 61 0 576 740 ; C 71 ; WX 840 ; N G ; B 89 -15 887 755 ; C 72 ; WX 680 ; N H ; B 71 0 748 740 ; C 73 ; WX 280 ; N I ; B 72 0 347 740 ; C 74 ; WX 480 ; N J ; B 34 -15 547 740 ; C 75 ; WX 620 ; N K ; B 89 0 758 740 ; C 76 ; WX 440 ; N L ; B 72 0 459 740 ; C 77 ; WX 900 ; N M ; B 63 0 975 740 ; C 78 ; WX 740 ; N N ; B 70 0 809 740 ; C 79 ; WX 840 ; N O ; B 94 -15 882 755 ; C 80 ; WX 560 ; N P ; B 72 0 645 740 ; C 81 ; WX 840 ; N Q ; B 93 -15 882 755 ; C 82 ; WX 580 ; N R ; B 64 0 657 740 ; C 83 ; WX 520 ; N S ; B 48 -15 579 755 ; C 84 ; WX 420 ; N T ; B 119 0 556 740 ; C 85 ; WX 640 ; N U ; B 96 -15 723 740 ; C 86 ; WX 700 ; N V ; B 145 0 833 740 ; C 87 ; WX 900 ; N W ; B 144 0 1037 740 ; C 88 ; WX 680 ; N X ; B 4 0 814 740 ; C 89 ; WX 620 ; N Y ; B 135 0 760 740 ; C 90 ; WX 500 ; N Z ; B 19 0 600 740 ; C 91 ; WX 320 ; N bracketleft ; B 88 -157 424 754 ; C 92 ; WX 640 ; N backslash ; B 233 -100 526 740 ; C 93 ; WX 320 ; N bracketright ; B 6 -157 342 754 ; C 94 ; WX 600 ; N asciicircum ; B 142 375 597 740 ; C 95 ; WX 500 ; N underscore ; B -24 -125 487 -75 ; C 96 ; WX 280 ; N quoteleft ; B 158 466 342 740 ; C 97 ; WX 660 ; N a ; B 72 -18 716 574 ; C 98 ; WX 660 ; N b ; B 47 -18 689 740 ; C 99 ; WX 640 ; N c ; B 83 -18 679 574 ; C 100 ; WX 660 ; N d ; B 79 -18 756 740 ; C 101 ; WX 640 ; N e ; B 76 -18 668 574 ; C 102 ; WX 280 ; N f ; B 62 0 420 755 ; L i fi ; L l fl ; C 103 ; WX 660 ; N g ; B 33 -226 726 574 ; C 104 ; WX 600 ; N h ; B 54 0 614 740 ; C 105 ; WX 240 ; N i ; B 53 0 324 740 ; C 106 ; WX 260 ; N j ; B -19 -185 343 740 ; C 107 ; WX 580 ; N k ; B 80 0 648 740 ; C 108 ; WX 240 ; N l ; B 54 0 325 740 ; C 109 ; WX 940 ; N m ; B 54 0 955 574 ; C 110 ; WX 600 ; N n ; B 54 0 614 574 ; C 111 ; WX 640 ; N o ; B 71 -18 672 574 ; C 112 ; WX 660 ; N p ; B 12 -185 687 574 ; C 113 ; WX 660 ; N q ; B 78 -185 716 574 ; C 114 ; WX 320 ; N r ; B 63 0 424 574 ; C 115 ; WX 440 ; N s ; B 49 -18 483 574 ; C 116 ; WX 300 ; N t ; B 86 0 402 740 ; C 117 ; WX 600 ; N u ; B 86 -18 647 555 ; C 118 ; WX 560 ; N v ; B 105 0 659 555 ; C 119 ; WX 800 ; N w ; B 113 0 892 555 ; C 120 ; WX 560 ; N x ; B 3 0 632 555 ; C 121 ; WX 580 ; N y ; B 74 -185 674 555 ; C 122 ; WX 460 ; N z ; B 20 0 528 555 ; C 123 ; WX 340 ; N braceleft ; B 40 -191 456 747 ; C 124 ; WX 600 ; N bar ; B 186 -250 505 750 ; C 125 ; WX 340 ; N braceright ; B -13 -191 405 747 ; C 126 ; WX 600 ; N asciitilde ; B 114 160 580 347 ; C 161 ; WX 280 ; N exclamdown ; B 39 -185 310 555 ; C 162 ; WX 560 ; N cent ; B 110 39 600 715 ; C 163 ; WX 560 ; N sterling ; B 38 0 616 755 ; C 164 ; WX 160 ; N fraction ; B -123 0 420 740 ; C 165 ; WX 560 ; N yen ; B 83 0 708 740 ; C 166 ; WX 560 ; N florin ; B -27 -151 665 824 ; C 167 ; WX 560 ; N section ; B 65 -158 602 755 ; C 168 ; WX 560 ; N currency ; B 52 69 628 577 ; C 169 ; WX 220 ; N quotesingle ; B 152 444 315 740 ; C 170 ; WX 480 ; N quotedblleft ; B 156 466 547 740 ; C 171 ; WX 460 ; N guillemotleft ; B 105 108 487 469 ; C 172 ; WX 240 ; N guilsinglleft ; B 94 108 277 469 ; C 173 ; WX 240 ; N guilsinglright ; B 70 108 254 469 ; C 174 ; WX 520 ; N fi ; B 72 0 599 755 ; C 175 ; WX 520 ; N fl ; B 72 0 599 755 ; C 177 ; WX 500 ; N endash ; B 77 230 530 348 ; C 178 ; WX 560 ; N dagger ; B 132 -142 612 740 ; C 179 ; WX 560 ; N daggerdbl ; B 63 -142 618 740 ; C 180 ; WX 280 ; N periodcentered ; B 107 187 266 320 ; C 182 ; WX 600 ; N paragraph ; B 89 -103 745 740 ; C 183 ; WX 600 ; N bullet ; B 215 222 526 532 ; C 184 ; WX 280 ; N quotesinglbase ; B 46 -141 230 133 ; C 185 ; WX 480 ; N quotedblbase ; B 44 -141 435 133 ; C 186 ; WX 480 ; N quotedblright ; B 157 466 548 740 ; C 187 ; WX 460 ; N guillemotright ; B 81 108 464 469 ; C 188 ; WX 1000 ; N ellipsis ; B 100 0 924 133 ; C 189 ; WX 1280 ; N perthousand ; B 139 -15 1256 755 ; C 191 ; WX 560 ; N questiondown ; B 68 -200 527 555 ; C 193 ; WX 420 ; N grave ; B 188 624 462 851 ; C 194 ; WX 420 ; N acute ; B 221 624 507 851 ; C 195 ; WX 540 ; N circumflex ; B 188 636 588 774 ; C 196 ; WX 480 ; N tilde ; B 178 636 564 767 ; C 197 ; WX 420 ; N macron ; B 192 648 490 759 ; C 198 ; WX 480 ; N breve ; B 184 633 582 770 ; C 199 ; WX 280 ; N dotaccent ; B 191 636 350 769 ; C 200 ; WX 500 ; N dieresis ; B 195 636 565 769 ; C 202 ; WX 360 ; N ring ; B 205 619 425 834 ; C 203 ; WX 340 ; N cedilla ; B 66 -251 272 6 ; C 205 ; WX 700 ; N hungarumlaut ; B 247 610 767 849 ; C 206 ; WX 340 ; N ogonek ; B 59 -195 243 9 ; C 207 ; WX 540 ; N caron ; B 214 636 614 774 ; C 208 ; WX 1000 ; N emdash ; B 77 230 1030 348 ; C 225 ; WX 900 ; N AE ; B -5 0 962 740 ; C 227 ; WX 360 ; N ordfeminine ; B 126 438 473 755 ; C 232 ; WX 480 ; N Lslash ; B 67 0 484 740 ; C 233 ; WX 840 ; N Oslash ; B 93 -71 891 814 ; C 234 ; WX 1060 ; N OE ; B 98 -15 1145 755 ; C 235 ; WX 360 ; N ordmasculine ; B 130 438 452 755 ; C 241 ; WX 1080 ; N ae ; B 75 -18 1106 574 ; C 245 ; WX 240 ; N dotlessi ; B 53 0 289 555 ; C 248 ; WX 320 ; N lslash ; B 74 0 405 740 ; C 249 ; WX 660 ; N oslash ; B 81 -50 685 608 ; C 250 ; WX 1080 ; N oe ; B 76 -18 1109 574 ; C 251 ; WX 600 ; N germandbls ; B 51 -18 629 755 ; C -1 ; WX 280 ; N Idieresis ; B 72 0 487 939 ; C -1 ; WX 640 ; N eacute ; B 76 -18 668 851 ; C -1 ; WX 660 ; N abreve ; B 72 -18 716 770 ; C -1 ; WX 600 ; N uhungarumlaut ; B 86 -18 717 849 ; C -1 ; WX 640 ; N ecaron ; B 76 -18 674 774 ; C -1 ; WX 620 ; N Ydieresis ; B 135 0 760 939 ; C -1 ; WX 600 ; N divide ; B 83 -20 611 526 ; C -1 ; WX 620 ; N Yacute ; B 135 0 760 1021 ; C -1 ; WX 740 ; N Acircumflex ; B 7 0 732 944 ; C -1 ; WX 660 ; N aacute ; B 72 -18 716 851 ; C -1 ; WX 640 ; N Ucircumflex ; B 96 -15 723 944 ; C -1 ; WX 580 ; N yacute ; B 74 -185 674 851 ; C -1 ; WX 440 ; N scommaaccent ; B 49 -229 483 574 ; C -1 ; WX 640 ; N ecircumflex ; B 76 -18 668 774 ; C -1 ; WX 640 ; N Uring ; B 96 -15 723 969 ; C -1 ; WX 640 ; N Udieresis ; B 96 -15 723 939 ; C -1 ; WX 660 ; N aogonek ; B 72 -195 716 574 ; C -1 ; WX 640 ; N Uacute ; B 96 -15 723 1021 ; C -1 ; WX 600 ; N uogonek ; B 86 -195 647 555 ; C -1 ; WX 520 ; N Edieresis ; B 61 0 607 939 ; C -1 ; WX 742 ; N Dcroat ; B 82 0 766 740 ; C -1 ; WX 351 ; N commaaccent ; B 5 -229 213 -54 ; C -1 ; WX 740 ; N copyright ; B 50 -12 828 752 ; C -1 ; WX 520 ; N Emacron ; B 61 0 597 944 ; C -1 ; WX 640 ; N ccaron ; B 83 -18 679 774 ; C -1 ; WX 660 ; N aring ; B 72 -18 716 834 ; C -1 ; WX 740 ; N Ncommaaccent ; B 70 -209 809 740 ; C -1 ; WX 240 ; N lacute ; B 54 0 447 1011 ; C -1 ; WX 660 ; N agrave ; B 72 -18 716 851 ; C -1 ; WX 420 ; N Tcommaaccent ; B 40 -229 556 740 ; C -1 ; WX 780 ; N Cacute ; B 96 -15 865 1021 ; C -1 ; WX 660 ; N atilde ; B 72 -18 716 767 ; C -1 ; WX 520 ; N Edotaccent ; B 61 0 597 954 ; C -1 ; WX 440 ; N scaron ; B 49 -18 564 774 ; C -1 ; WX 440 ; N scedilla ; B 49 -251 483 574 ; C -1 ; WX 240 ; N iacute ; B 53 0 442 851 ; C -1 ; WX 494 ; N lozenge ; B 79 0 554 745 ; C -1 ; WX 580 ; N Rcaron ; B 64 0 668 959 ; C -1 ; WX 840 ; N Gcommaaccent ; B 89 -229 887 755 ; C -1 ; WX 600 ; N ucircumflex ; B 86 -18 647 774 ; C -1 ; WX 660 ; N acircumflex ; B 72 -18 716 774 ; C -1 ; WX 740 ; N Amacron ; B 7 0 732 944 ; C -1 ; WX 320 ; N rcaron ; B 63 0 504 774 ; C -1 ; WX 640 ; N ccedilla ; B 83 -251 679 574 ; C -1 ; WX 500 ; N Zdotaccent ; B 19 0 600 954 ; C -1 ; WX 560 ; N Thorn ; B 72 0 619 740 ; C -1 ; WX 840 ; N Omacron ; B 94 -15 882 944 ; C -1 ; WX 580 ; N Racute ; B 64 0 657 1021 ; C -1 ; WX 520 ; N Sacute ; B 48 -15 589 1021 ; C -1 ; WX 800 ; N dcaron ; B 79 -18 966 740 ; C -1 ; WX 640 ; N Umacron ; B 96 -15 723 944 ; C -1 ; WX 600 ; N uring ; B 86 -18 647 834 ; C -1 ; WX 336 ; N threesuperior ; B 87 287 414 749 ; C -1 ; WX 840 ; N Ograve ; B 94 -15 882 1021 ; C -1 ; WX 740 ; N Agrave ; B 7 0 732 1021 ; C -1 ; WX 740 ; N Abreve ; B 7 0 746 955 ; C -1 ; WX 600 ; N multiply ; B 76 12 618 494 ; C -1 ; WX 600 ; N uacute ; B 86 -18 647 851 ; C -1 ; WX 420 ; N Tcaron ; B 119 0 588 959 ; C -1 ; WX 494 ; N partialdiff ; B 39 -21 573 750 ; C -1 ; WX 580 ; N ydieresis ; B 74 -185 674 769 ; C -1 ; WX 740 ; N Nacute ; B 70 0 809 1021 ; C -1 ; WX 240 ; N icircumflex ; B 38 0 438 774 ; C -1 ; WX 520 ; N Ecircumflex ; B 61 0 610 944 ; C -1 ; WX 660 ; N adieresis ; B 72 -18 716 769 ; C -1 ; WX 640 ; N edieresis ; B 76 -18 668 769 ; C -1 ; WX 640 ; N cacute ; B 83 -18 679 851 ; C -1 ; WX 600 ; N nacute ; B 54 0 614 851 ; C -1 ; WX 600 ; N umacron ; B 86 -18 647 759 ; C -1 ; WX 740 ; N Ncaron ; B 70 0 809 959 ; C -1 ; WX 280 ; N Iacute ; B 72 0 494 1021 ; C -1 ; WX 600 ; N plusminus ; B 36 -62 627 556 ; C -1 ; WX 600 ; N brokenbar ; B 200 -175 492 675 ; C -1 ; WX 740 ; N registered ; B 50 -12 828 752 ; C -1 ; WX 840 ; N Gbreve ; B 89 -15 887 955 ; C -1 ; WX 280 ; N Idotaccent ; B 72 0 384 954 ; C -1 ; WX 713 ; N summation ; B -5 -108 756 752 ; C -1 ; WX 520 ; N Egrave ; B 61 0 597 1021 ; C -1 ; WX 320 ; N racute ; B 63 0 487 851 ; C -1 ; WX 640 ; N omacron ; B 71 -18 672 759 ; C -1 ; WX 500 ; N Zacute ; B 19 0 600 1021 ; C -1 ; WX 500 ; N Zcaron ; B 19 0 650 944 ; C -1 ; WX 549 ; N greaterequal ; B 26 0 616 704 ; C -1 ; WX 742 ; N Eth ; B 82 0 766 740 ; C -1 ; WX 780 ; N Ccedilla ; B 96 -251 865 755 ; C -1 ; WX 240 ; N lcommaaccent ; B -50 -229 325 740 ; C -1 ; WX 400 ; N tcaron ; B 86 0 584 786 ; C -1 ; WX 640 ; N eogonek ; B 76 -195 668 574 ; C -1 ; WX 640 ; N Uogonek ; B 96 -195 723 740 ; C -1 ; WX 740 ; N Aacute ; B 7 0 732 1021 ; C -1 ; WX 740 ; N Adieresis ; B 7 0 732 939 ; C -1 ; WX 640 ; N egrave ; B 76 -18 668 851 ; C -1 ; WX 460 ; N zacute ; B 20 0 528 851 ; C -1 ; WX 240 ; N iogonek ; B -34 -195 324 740 ; C -1 ; WX 840 ; N Oacute ; B 94 -15 882 1021 ; C -1 ; WX 640 ; N oacute ; B 71 -18 672 851 ; C -1 ; WX 660 ; N amacron ; B 72 -18 716 759 ; C -1 ; WX 440 ; N sacute ; B 49 -18 517 851 ; C -1 ; WX 240 ; N idieresis ; B 53 0 435 769 ; C -1 ; WX 840 ; N Ocircumflex ; B 94 -15 882 944 ; C -1 ; WX 640 ; N Ugrave ; B 96 -15 723 1021 ; C -1 ; WX 612 ; N Delta ; B 2 0 612 692 ; C -1 ; WX 660 ; N thorn ; B 12 -185 687 740 ; C -1 ; WX 336 ; N twosuperior ; B 72 296 436 749 ; C -1 ; WX 840 ; N Odieresis ; B 94 -15 882 939 ; C -1 ; WX 576 ; N mu ; B 3 -187 642 555 ; C -1 ; WX 240 ; N igrave ; B 53 0 347 851 ; C -1 ; WX 640 ; N ohungarumlaut ; B 71 -18 737 849 ; C -1 ; WX 520 ; N Eogonek ; B 61 -195 597 740 ; C -1 ; WX 660 ; N dcroat ; B 79 -18 829 740 ; C -1 ; WX 840 ; N threequarters ; B 97 0 837 749 ; C -1 ; WX 520 ; N Scedilla ; B 49 -251 579 755 ; C -1 ; WX 380 ; N lcaron ; B 54 0 536 740 ; C -1 ; WX 620 ; N Kcommaaccent ; B 89 -209 758 740 ; C -1 ; WX 440 ; N Lacute ; B 72 0 549 1021 ; C -1 ; WX 1000 ; N trademark ; B 130 296 959 740 ; C -1 ; WX 640 ; N edotaccent ; B 76 -18 668 769 ; C -1 ; WX 280 ; N Igrave ; B 72 0 399 1021 ; C -1 ; WX 280 ; N Imacron ; B 72 0 454 944 ; C -1 ; WX 440 ; N Lcaron ; B 72 0 626 740 ; C -1 ; WX 840 ; N onehalf ; B 157 0 831 740 ; C -1 ; WX 549 ; N lessequal ; B 29 0 657 704 ; C -1 ; WX 640 ; N ocircumflex ; B 71 -18 672 774 ; C -1 ; WX 600 ; N ntilde ; B 54 0 624 767 ; C -1 ; WX 640 ; N Uhungarumlaut ; B 96 -15 769 1019 ; C -1 ; WX 520 ; N Eacute ; B 61 0 597 1021 ; C -1 ; WX 640 ; N emacron ; B 76 -18 668 759 ; C -1 ; WX 660 ; N gbreve ; B 33 -226 726 770 ; C -1 ; WX 840 ; N onequarter ; B 187 0 780 740 ; C -1 ; WX 520 ; N Scaron ; B 48 -15 635 944 ; C -1 ; WX 520 ; N Scommaaccent ; B 48 -229 579 755 ; C -1 ; WX 840 ; N Ohungarumlaut ; B 94 -15 882 1019 ; C -1 ; WX 400 ; N degree ; B 159 426 451 712 ; C -1 ; WX 640 ; N ograve ; B 71 -18 672 851 ; C -1 ; WX 780 ; N Ccaron ; B 96 -15 865 959 ; C -1 ; WX 600 ; N ugrave ; B 86 -18 647 851 ; C -1 ; WX 549 ; N radical ; B 99 -46 667 850 ; C -1 ; WX 700 ; N Dcaron ; B 63 0 732 959 ; C -1 ; WX 320 ; N rcommaaccent ; B -51 -229 424 574 ; C -1 ; WX 740 ; N Ntilde ; B 70 0 809 937 ; C -1 ; WX 640 ; N otilde ; B 71 -18 672 767 ; C -1 ; WX 580 ; N Rcommaaccent ; B 64 -209 657 740 ; C -1 ; WX 440 ; N Lcommaaccent ; B 72 -229 459 740 ; C -1 ; WX 740 ; N Atilde ; B 7 0 732 937 ; C -1 ; WX 740 ; N Aogonek ; B 7 -195 732 740 ; C -1 ; WX 740 ; N Aring ; B 7 0 732 969 ; C -1 ; WX 840 ; N Otilde ; B 94 -15 882 937 ; C -1 ; WX 460 ; N zdotaccent ; B 20 0 528 769 ; C -1 ; WX 520 ; N Ecaron ; B 61 0 638 959 ; C -1 ; WX 280 ; N Iogonek ; B -9 -195 347 740 ; C -1 ; WX 580 ; N kcommaaccent ; B 80 -209 648 740 ; C -1 ; WX 600 ; N minus ; B 83 193 611 313 ; C -1 ; WX 280 ; N Icircumflex ; B 72 0 490 944 ; C -1 ; WX 600 ; N ncaron ; B 54 0 644 774 ; C -1 ; WX 300 ; N tcommaaccent ; B -1 -229 402 740 ; C -1 ; WX 600 ; N logicalnot ; B 104 108 631 425 ; C -1 ; WX 640 ; N odieresis ; B 71 -18 672 769 ; C -1 ; WX 600 ; N udieresis ; B 86 -18 647 769 ; C -1 ; WX 549 ; N notequal ; B 30 -49 619 570 ; C -1 ; WX 660 ; N gcommaaccent ; B 33 -226 726 800 ; C -1 ; WX 640 ; N eth ; B 73 -18 699 754 ; C -1 ; WX 460 ; N zcaron ; B 20 0 599 774 ; C -1 ; WX 600 ; N ncommaaccent ; B 54 -209 614 574 ; C -1 ; WX 336 ; N onesuperior ; B 181 296 361 740 ; C -1 ; WX 240 ; N imacron ; B 53 0 400 759 ; EndCharMetrics StartKernData StartKernPairs 933 KPX A T -73 KPX A Tcaron -73 KPX A Tcommaaccent -73 KPX A V -127 KPX A W -96 KPX A Y -139 KPX A Yacute -139 KPX A Ydieresis -139 KPX A v -50 KPX A w -50 KPX A y -50 KPX A yacute -50 KPX A ydieresis -50 KPX Aacute T -73 KPX Aacute Tcaron -73 KPX Aacute Tcommaaccent -73 KPX Aacute V -127 KPX Aacute W -96 KPX Aacute Y -139 KPX Aacute Yacute -139 KPX Aacute Ydieresis -139 KPX Aacute v -50 KPX Aacute w -50 KPX Aacute y -50 KPX Aacute yacute -50 KPX Aacute ydieresis -50 KPX Abreve T -73 KPX Abreve Tcaron -73 KPX Abreve Tcommaaccent -73 KPX Abreve V -127 KPX Abreve W -96 KPX Abreve Y -139 KPX Abreve Yacute -139 KPX Abreve Ydieresis -139 KPX Abreve v -50 KPX Abreve w -50 KPX Abreve y -50 KPX Abreve yacute -50 KPX Abreve ydieresis -50 KPX Acircumflex T -73 KPX Acircumflex Tcaron -73 KPX Acircumflex Tcommaaccent -73 KPX Acircumflex V -127 KPX Acircumflex W -96 KPX Acircumflex Y -139 KPX Acircumflex Yacute -139 KPX Acircumflex Ydieresis -139 KPX Acircumflex v -50 KPX Acircumflex w -50 KPX Acircumflex y -50 KPX Acircumflex yacute -50 KPX Acircumflex ydieresis -50 KPX Adieresis T -73 KPX Adieresis Tcaron -73 KPX Adieresis Tcommaaccent -73 KPX Adieresis V -127 KPX Adieresis W -96 KPX Adieresis Y -139 KPX Adieresis Yacute -139 KPX Adieresis Ydieresis -139 KPX Adieresis v -50 KPX Adieresis w -50 KPX Adieresis y -50 KPX Adieresis yacute -50 KPX Adieresis ydieresis -50 KPX Agrave T -73 KPX Agrave Tcaron -73 KPX Agrave Tcommaaccent -73 KPX Agrave V -127 KPX Agrave W -96 KPX Agrave Y -139 KPX Agrave Yacute -139 KPX Agrave Ydieresis -139 KPX Agrave v -50 KPX Agrave w -50 KPX Agrave y -50 KPX Agrave yacute -50 KPX Agrave ydieresis -50 KPX Amacron T -73 KPX Amacron Tcaron -73 KPX Amacron Tcommaaccent -73 KPX Amacron V -127 KPX Amacron W -96 KPX Amacron Y -139 KPX Amacron Yacute -139 KPX Amacron Ydieresis -139 KPX Amacron v -50 KPX Amacron w -50 KPX Amacron y -50 KPX Amacron yacute -50 KPX Amacron ydieresis -50 KPX Aogonek T -73 KPX Aogonek Tcaron -73 KPX Aogonek Tcommaaccent -73 KPX Aogonek V -127 KPX Aogonek W -96 KPX Aogonek Y -139 KPX Aogonek Yacute -139 KPX Aogonek Ydieresis -139 KPX Aogonek v -50 KPX Aogonek w -50 KPX Aogonek y -50 KPX Aogonek yacute -50 KPX Aogonek ydieresis -50 KPX Aring T -73 KPX Aring Tcaron -73 KPX Aring Tcommaaccent -73 KPX Aring V -127 KPX Aring W -96 KPX Aring Y -139 KPX Aring Yacute -139 KPX Aring Ydieresis -139 KPX Aring v -50 KPX Aring w -50 KPX Aring y -50 KPX Aring yacute -50 KPX Aring ydieresis -50 KPX Atilde T -73 KPX Atilde Tcaron -73 KPX Atilde Tcommaaccent -73 KPX Atilde V -127 KPX Atilde W -96 KPX Atilde Y -139 KPX Atilde Yacute -139 KPX Atilde Ydieresis -139 KPX Atilde v -50 KPX Atilde w -50 KPX Atilde y -50 KPX Atilde yacute -50 KPX Atilde ydieresis -50 KPX F A -95 KPX F Aacute -95 KPX F Abreve -95 KPX F Acircumflex -95 KPX F Adieresis -95 KPX F Agrave -95 KPX F Amacron -95 KPX F Aogonek -95 KPX F Aring -95 KPX F Atilde -95 KPX F comma -42 KPX F period -42 KPX L T -50 KPX L Tcaron -50 KPX L Tcommaaccent -50 KPX L V -90 KPX L W -90 KPX L Y -90 KPX L Yacute -90 KPX L Ydieresis -90 KPX L y -75 KPX L yacute -75 KPX L ydieresis -75 KPX Lacute T -50 KPX Lacute Tcaron -50 KPX Lacute Tcommaaccent -50 KPX Lacute V -90 KPX Lacute W -90 KPX Lacute Y -90 KPX Lacute Yacute -90 KPX Lacute Ydieresis -90 KPX Lacute y -75 KPX Lacute yacute -75 KPX Lacute ydieresis -75 KPX Lcommaaccent T -50 KPX Lcommaaccent Tcaron -50 KPX Lcommaaccent Tcommaaccent -50 KPX Lcommaaccent V -90 KPX Lcommaaccent W -90 KPX Lcommaaccent Y -90 KPX Lcommaaccent Yacute -90 KPX Lcommaaccent Ydieresis -90 KPX Lcommaaccent y -75 KPX Lcommaaccent yacute -75 KPX Lcommaaccent ydieresis -75 KPX Lslash T -50 KPX Lslash Tcaron -50 KPX Lslash Tcommaaccent -50 KPX Lslash V -90 KPX Lslash W -90 KPX Lslash Y -90 KPX Lslash Yacute -90 KPX Lslash Ydieresis -90 KPX Lslash y -75 KPX Lslash yacute -75 KPX Lslash ydieresis -75 KPX P A -100 KPX P Aacute -100 KPX P Abreve -100 KPX P Acircumflex -100 KPX P Adieresis -100 KPX P Agrave -100 KPX P Amacron -100 KPX P Aogonek -100 KPX P Aring -100 KPX P Atilde -100 KPX P comma -16 KPX P period -16 KPX R T 16 KPX R Tcaron 16 KPX R Tcommaaccent 16 KPX R V -26 KPX R W -20 KPX R Y -20 KPX R Yacute -20 KPX R Ydieresis -20 KPX R y 31 KPX R yacute 31 KPX R ydieresis 31 KPX Racute T 16 KPX Racute Tcaron 16 KPX Racute Tcommaaccent 16 KPX Racute V -26 KPX Racute W -20 KPX Racute Y -20 KPX Racute Yacute -20 KPX Racute Ydieresis -20 KPX Racute y 31 KPX Racute yacute 31 KPX Racute ydieresis 31 KPX Rcaron T 16 KPX Rcaron Tcaron 16 KPX Rcaron Tcommaaccent 16 KPX Rcaron V -26 KPX Rcaron W -20 KPX Rcaron Y -20 KPX Rcaron Yacute -20 KPX Rcaron Ydieresis -20 KPX Rcaron y 31 KPX Rcaron yacute 31 KPX Rcaron ydieresis 31 KPX Rcommaaccent T 16 KPX Rcommaaccent Tcaron 16 KPX Rcommaaccent Tcommaaccent 16 KPX Rcommaaccent V -26 KPX Rcommaaccent W -20 KPX Rcommaaccent Y -20 KPX Rcommaaccent Yacute -20 KPX Rcommaaccent Ydieresis -20 KPX Rcommaaccent y 31 KPX Rcommaaccent yacute 31 KPX Rcommaaccent ydieresis 31 KPX T A -70 KPX T Aacute -70 KPX T Abreve -70 KPX T Acircumflex -70 KPX T Adieresis -70 KPX T Agrave -70 KPX T Amacron -70 KPX T Aogonek -70 KPX T Aring -70 KPX T Atilde -70 KPX T a -40 KPX T aacute -40 KPX T abreve -40 KPX T acircumflex -40 KPX T adieresis -40 KPX T agrave -40 KPX T amacron -40 KPX T aogonek -40 KPX T aring -40 KPX T atilde -40 KPX T c -50 KPX T cacute -50 KPX T ccaron -50 KPX T ccedilla -50 KPX T colon -12 KPX T comma 4 KPX T e -50 KPX T eacute -50 KPX T ecaron -50 KPX T ecircumflex -50 KPX T edieresis -50 KPX T edotaccent -50 KPX T egrave -50 KPX T emacron -50 KPX T eogonek -50 KPX T hyphen -10 KPX T i -5 KPX T iacute 10 KPX T icircumflex 10 KPX T idieresis 10 KPX T igrave 10 KPX T imacron 10 KPX T iogonek -5 KPX T o -50 KPX T oacute -50 KPX T ocircumflex -50 KPX T odieresis -50 KPX T ograve -50 KPX T ohungarumlaut -50 KPX T omacron -50 KPX T oslash -50 KPX T otilde -50 KPX T period 4 KPX T r -42 KPX T rcommaaccent -42 KPX T s -43 KPX T sacute -43 KPX T scedilla -43 KPX T scommaaccent -43 KPX T semicolon -12 KPX T u -56 KPX T uacute -56 KPX T ucircumflex -56 KPX T udieresis -56 KPX T ugrave -56 KPX T uhungarumlaut -56 KPX T umacron -56 KPX T uogonek -56 KPX T uring -56 KPX T w -15 KPX T y -12 KPX T yacute -12 KPX T ydieresis -12 KPX Tcaron A -70 KPX Tcaron Aacute -70 KPX Tcaron Abreve -70 KPX Tcaron Acircumflex -70 KPX Tcaron Adieresis -70 KPX Tcaron Agrave -70 KPX Tcaron Amacron -70 KPX Tcaron Aogonek -70 KPX Tcaron Aring -70 KPX Tcaron Atilde -70 KPX Tcaron a -40 KPX Tcaron aacute -40 KPX Tcaron abreve -40 KPX Tcaron acircumflex -40 KPX Tcaron adieresis -40 KPX Tcaron agrave -40 KPX Tcaron amacron -40 KPX Tcaron aogonek -40 KPX Tcaron aring -40 KPX Tcaron atilde -40 KPX Tcaron c -50 KPX Tcaron cacute -50 KPX Tcaron ccaron -50 KPX Tcaron ccedilla -50 KPX Tcaron colon -12 KPX Tcaron comma 4 KPX Tcaron e -50 KPX Tcaron eacute -50 KPX Tcaron ecaron -50 KPX Tcaron ecircumflex -50 KPX Tcaron edieresis -50 KPX Tcaron edotaccent -50 KPX Tcaron egrave -50 KPX Tcaron emacron -50 KPX Tcaron eogonek -50 KPX Tcaron hyphen -10 KPX Tcaron i -5 KPX Tcaron iacute 10 KPX Tcaron icircumflex 10 KPX Tcaron idieresis 10 KPX Tcaron igrave 10 KPX Tcaron imacron 10 KPX Tcaron iogonek -5 KPX Tcaron o -50 KPX Tcaron oacute -50 KPX Tcaron ocircumflex -50 KPX Tcaron odieresis -50 KPX Tcaron ograve -50 KPX Tcaron ohungarumlaut -50 KPX Tcaron omacron -50 KPX Tcaron oslash -50 KPX Tcaron otilde -50 KPX Tcaron period 4 KPX Tcaron r -42 KPX Tcaron racute -42 KPX Tcaron rcaron -42 KPX Tcaron rcommaaccent -42 KPX Tcaron s -43 KPX Tcaron sacute -43 KPX Tcaron scaron -43 KPX Tcaron scedilla -43 KPX Tcaron scommaaccent -43 KPX Tcaron semicolon -12 KPX Tcaron u -56 KPX Tcaron uacute -56 KPX Tcaron ucircumflex -56 KPX Tcaron udieresis -56 KPX Tcaron ugrave -56 KPX Tcaron uhungarumlaut -56 KPX Tcaron umacron -56 KPX Tcaron uogonek -56 KPX Tcaron uring -56 KPX Tcaron w -15 KPX Tcaron y -12 KPX Tcaron yacute -12 KPX Tcaron ydieresis -12 KPX Tcommaaccent A -70 KPX Tcommaaccent Aacute -70 KPX Tcommaaccent Abreve -70 KPX Tcommaaccent Acircumflex -70 KPX Tcommaaccent Adieresis -70 KPX Tcommaaccent Agrave -70 KPX Tcommaaccent Amacron -70 KPX Tcommaaccent Aogonek -70 KPX Tcommaaccent Aring -70 KPX Tcommaaccent Atilde -70 KPX Tcommaaccent a -40 KPX Tcommaaccent aacute -40 KPX Tcommaaccent abreve -40 KPX Tcommaaccent acircumflex -40 KPX Tcommaaccent adieresis -40 KPX Tcommaaccent agrave -40 KPX Tcommaaccent amacron -40 KPX Tcommaaccent aogonek -40 KPX Tcommaaccent aring -40 KPX Tcommaaccent atilde -40 KPX Tcommaaccent c -50 KPX Tcommaaccent cacute -50 KPX Tcommaaccent ccaron -50 KPX Tcommaaccent ccedilla -50 KPX Tcommaaccent colon -12 KPX Tcommaaccent comma 4 KPX Tcommaaccent e -50 KPX Tcommaaccent eacute -50 KPX Tcommaaccent ecaron -50 KPX Tcommaaccent ecircumflex -50 KPX Tcommaaccent edieresis -50 KPX Tcommaaccent edotaccent -50 KPX Tcommaaccent egrave -50 KPX Tcommaaccent emacron -50 KPX Tcommaaccent eogonek -50 KPX Tcommaaccent hyphen -10 KPX Tcommaaccent i -5 KPX Tcommaaccent iacute 10 KPX Tcommaaccent icircumflex 10 KPX Tcommaaccent idieresis 10 KPX Tcommaaccent igrave 10 KPX Tcommaaccent imacron 10 KPX Tcommaaccent iogonek -5 KPX Tcommaaccent o -50 KPX Tcommaaccent oacute -50 KPX Tcommaaccent ocircumflex -50 KPX Tcommaaccent odieresis -50 KPX Tcommaaccent ograve -50 KPX Tcommaaccent ohungarumlaut -50 KPX Tcommaaccent omacron -50 KPX Tcommaaccent oslash -50 KPX Tcommaaccent otilde -50 KPX Tcommaaccent period 4 KPX Tcommaaccent r -42 KPX Tcommaaccent racute -42 KPX Tcommaaccent rcaron -42 KPX Tcommaaccent rcommaaccent -42 KPX Tcommaaccent s -43 KPX Tcommaaccent sacute -43 KPX Tcommaaccent scaron -43 KPX Tcommaaccent scedilla -43 KPX Tcommaaccent scommaaccent -43 KPX Tcommaaccent semicolon -12 KPX Tcommaaccent u -56 KPX Tcommaaccent uacute -56 KPX Tcommaaccent ucircumflex -56 KPX Tcommaaccent udieresis -56 KPX Tcommaaccent ugrave -56 KPX Tcommaaccent uhungarumlaut -56 KPX Tcommaaccent umacron -56 KPX Tcommaaccent uogonek -56 KPX Tcommaaccent uring -56 KPX Tcommaaccent w -15 KPX Tcommaaccent y -12 KPX Tcommaaccent yacute -12 KPX Tcommaaccent ydieresis -12 KPX V A -125 KPX V Aacute -125 KPX V Abreve -125 KPX V Acircumflex -125 KPX V Adieresis -125 KPX V Agrave -125 KPX V Amacron -125 KPX V Aogonek -125 KPX V Aring -125 KPX V Atilde -125 KPX V a -80 KPX V aacute -80 KPX V abreve -80 KPX V acircumflex -80 KPX V adieresis -80 KPX V agrave -80 KPX V amacron -80 KPX V aogonek -80 KPX V aring -80 KPX V atilde -80 KPX V colon -13 KPX V comma -13 KPX V e -80 KPX V eacute -80 KPX V ecaron -80 KPX V ecircumflex -80 KPX V edieresis -80 KPX V edotaccent -80 KPX V egrave -80 KPX V emacron -80 KPX V eogonek -80 KPX V hyphen -20 KPX V i -9 KPX V iacute -9 KPX V iogonek -9 KPX V o -80 KPX V oacute -80 KPX V ocircumflex -80 KPX V odieresis -80 KPX V ograve -80 KPX V ohungarumlaut -80 KPX V omacron -80 KPX V oslash -80 KPX V otilde -80 KPX V period -13 KPX V r -40 KPX V racute -40 KPX V rcaron -40 KPX V rcommaaccent -40 KPX V semicolon -13 KPX V u -68 KPX V uacute -68 KPX V ucircumflex -68 KPX V udieresis -68 KPX V ugrave -68 KPX V uhungarumlaut -68 KPX V umacron -68 KPX V uogonek -68 KPX V uring -68 KPX V y -15 KPX V yacute -15 KPX V ydieresis -15 KPX W A -94 KPX W Aacute -94 KPX W Abreve -94 KPX W Acircumflex -94 KPX W Adieresis -94 KPX W Agrave -94 KPX W Amacron -94 KPX W Aogonek -94 KPX W Aring -94 KPX W Atilde -94 KPX W a -50 KPX W aacute -50 KPX W abreve -50 KPX W acircumflex -50 KPX W adieresis -50 KPX W agrave -50 KPX W amacron -50 KPX W aogonek -50 KPX W aring -50 KPX W atilde -50 KPX W colon -12 KPX W comma -12 KPX W e -50 KPX W eacute -50 KPX W ecaron -50 KPX W ecircumflex -50 KPX W edieresis -50 KPX W edotaccent -50 KPX W egrave -50 KPX W emacron -50 KPX W eogonek -50 KPX W hyphen -10 KPX W i -7 KPX W iacute 10 KPX W icircumflex 10 KPX W idieresis 10 KPX W igrave 10 KPX W imacron 10 KPX W iogonek -7 KPX W o -50 KPX W oacute -50 KPX W ocircumflex -50 KPX W odieresis -50 KPX W ograve -50 KPX W ohungarumlaut -50 KPX W omacron -50 KPX W oslash -50 KPX W otilde -50 KPX W period -12 KPX W r -39 KPX W racute -39 KPX W rcommaaccent -39 KPX W semicolon -12 KPX W u -40 KPX W uacute -40 KPX W ucircumflex -40 KPX W udieresis -40 KPX W ugrave -40 KPX W uhungarumlaut -40 KPX W umacron -40 KPX W uogonek -40 KPX W uring -40 KPX W y 1 KPX W yacute 1 KPX W ydieresis 1 KPX Y A -138 KPX Y Aacute -138 KPX Y Abreve -138 KPX Y Acircumflex -138 KPX Y Adieresis -138 KPX Y Agrave -138 KPX Y Amacron -138 KPX Y Aogonek -138 KPX Y Aring -138 KPX Y Atilde -138 KPX Y a -100 KPX Y aacute -100 KPX Y abreve -100 KPX Y acircumflex -100 KPX Y adieresis -100 KPX Y agrave -100 KPX Y amacron -100 KPX Y aogonek -100 KPX Y aring -100 KPX Y atilde -100 KPX Y colon -8 KPX Y comma -8 KPX Y e -100 KPX Y eacute -100 KPX Y ecaron -100 KPX Y ecircumflex -100 KPX Y edieresis -100 KPX Y edotaccent -100 KPX Y egrave -100 KPX Y emacron -100 KPX Y eogonek -100 KPX Y hyphen -60 KPX Y i -5 KPX Y iacute -5 KPX Y icircumflex 10 KPX Y idieresis 10 KPX Y igrave 10 KPX Y imacron 10 KPX Y iogonek -5 KPX Y o -100 KPX Y oacute -100 KPX Y ocircumflex -100 KPX Y odieresis -100 KPX Y ograve -100 KPX Y ohungarumlaut -100 KPX Y omacron -100 KPX Y oslash -100 KPX Y otilde -100 KPX Y p -60 KPX Y period -8 KPX Y q -100 KPX Y semicolon -8 KPX Y u -82 KPX Y uacute -82 KPX Y ucircumflex -82 KPX Y udieresis -82 KPX Y ugrave -82 KPX Y uhungarumlaut -82 KPX Y umacron -82 KPX Y uogonek -82 KPX Y uring -82 KPX Y v -25 KPX Yacute A -138 KPX Yacute Aacute -138 KPX Yacute Abreve -138 KPX Yacute Acircumflex -138 KPX Yacute Adieresis -138 KPX Yacute Agrave -138 KPX Yacute Amacron -138 KPX Yacute Aogonek -138 KPX Yacute Aring -138 KPX Yacute Atilde -138 KPX Yacute a -100 KPX Yacute aacute -100 KPX Yacute abreve -100 KPX Yacute acircumflex -100 KPX Yacute adieresis -100 KPX Yacute agrave -100 KPX Yacute amacron -100 KPX Yacute aogonek -100 KPX Yacute aring -100 KPX Yacute atilde -100 KPX Yacute colon -8 KPX Yacute comma -8 KPX Yacute e -100 KPX Yacute eacute -100 KPX Yacute ecaron -100 KPX Yacute ecircumflex -100 KPX Yacute edieresis -100 KPX Yacute edotaccent -100 KPX Yacute egrave -100 KPX Yacute emacron -100 KPX Yacute eogonek -100 KPX Yacute hyphen -60 KPX Yacute i -5 KPX Yacute iacute -5 KPX Yacute icircumflex 10 KPX Yacute idieresis 10 KPX Yacute igrave 10 KPX Yacute imacron 10 KPX Yacute iogonek -5 KPX Yacute o -100 KPX Yacute oacute -100 KPX Yacute ocircumflex -100 KPX Yacute odieresis -100 KPX Yacute ograve -100 KPX Yacute ohungarumlaut -100 KPX Yacute omacron -100 KPX Yacute oslash -100 KPX Yacute otilde -100 KPX Yacute p -60 KPX Yacute period -8 KPX Yacute q -100 KPX Yacute semicolon -8 KPX Yacute u -82 KPX Yacute uacute -82 KPX Yacute ucircumflex -82 KPX Yacute udieresis -82 KPX Yacute ugrave -82 KPX Yacute uhungarumlaut -82 KPX Yacute umacron -82 KPX Yacute uogonek -82 KPX Yacute uring -82 KPX Yacute v -25 KPX Ydieresis A -138 KPX Ydieresis Aacute -138 KPX Ydieresis Abreve -138 KPX Ydieresis Acircumflex -138 KPX Ydieresis Adieresis -138 KPX Ydieresis Agrave -138 KPX Ydieresis Amacron -138 KPX Ydieresis Aogonek -138 KPX Ydieresis Aring -138 KPX Ydieresis Atilde -138 KPX Ydieresis a -100 KPX Ydieresis aacute -100 KPX Ydieresis abreve -100 KPX Ydieresis acircumflex -100 KPX Ydieresis adieresis -100 KPX Ydieresis agrave -100 KPX Ydieresis amacron -100 KPX Ydieresis aogonek -100 KPX Ydieresis aring -100 KPX Ydieresis atilde -100 KPX Ydieresis colon -8 KPX Ydieresis comma -8 KPX Ydieresis e -100 KPX Ydieresis eacute -100 KPX Ydieresis ecaron -100 KPX Ydieresis ecircumflex -100 KPX Ydieresis edieresis -100 KPX Ydieresis edotaccent -100 KPX Ydieresis egrave -100 KPX Ydieresis emacron -100 KPX Ydieresis eogonek -100 KPX Ydieresis hyphen -60 KPX Ydieresis i -5 KPX Ydieresis iacute -5 KPX Ydieresis icircumflex 10 KPX Ydieresis idieresis 10 KPX Ydieresis igrave 10 KPX Ydieresis imacron 10 KPX Ydieresis iogonek -5 KPX Ydieresis o -100 KPX Ydieresis oacute -100 KPX Ydieresis ocircumflex -100 KPX Ydieresis odieresis -100 KPX Ydieresis ograve -100 KPX Ydieresis ohungarumlaut -100 KPX Ydieresis omacron -100 KPX Ydieresis oslash -100 KPX Ydieresis otilde -100 KPX Ydieresis p -60 KPX Ydieresis period -8 KPX Ydieresis q -100 KPX Ydieresis semicolon -8 KPX Ydieresis u -82 KPX Ydieresis uacute -82 KPX Ydieresis ucircumflex -82 KPX Ydieresis udieresis -82 KPX Ydieresis ugrave -82 KPX Ydieresis uhungarumlaut -82 KPX Ydieresis umacron -82 KPX Ydieresis uogonek -82 KPX Ydieresis uring -82 KPX Ydieresis v -25 KPX f f 38 KPX r c -27 KPX r cacute -27 KPX r ccaron -27 KPX r ccedilla -27 KPX r comma 9 KPX r d -8 KPX r dcroat -8 KPX r e -8 KPX r eacute -8 KPX r ecaron -8 KPX r ecircumflex -8 KPX r edieresis -8 KPX r edotaccent -8 KPX r egrave -8 KPX r emacron -8 KPX r eogonek -8 KPX r f 38 KPX r g -8 KPX r gbreve -8 KPX r gcommaaccent -8 KPX r hyphen -10 KPX r m 5 KPX r n 5 KPX r nacute 5 KPX r ncaron 5 KPX r ncommaaccent 5 KPX r ntilde 5 KPX r o -18 KPX r oacute -18 KPX r ocircumflex -18 KPX r odieresis -18 KPX r ograve -18 KPX r ohungarumlaut -18 KPX r omacron -18 KPX r oslash -18 KPX r otilde -18 KPX r period 9 KPX r q -18 KPX racute c -27 KPX racute cacute -27 KPX racute ccaron -27 KPX racute ccedilla -27 KPX racute comma 9 KPX racute d -8 KPX racute dcroat -8 KPX racute e -8 KPX racute eacute -8 KPX racute ecaron -8 KPX racute ecircumflex -8 KPX racute edieresis -8 KPX racute edotaccent -8 KPX racute egrave -8 KPX racute emacron -8 KPX racute eogonek -8 KPX racute f 38 KPX racute g -8 KPX racute gbreve -8 KPX racute gcommaaccent -8 KPX racute hyphen -10 KPX racute m 5 KPX racute n 5 KPX racute nacute 5 KPX racute ncaron 5 KPX racute ncommaaccent 5 KPX racute ntilde 5 KPX racute o -18 KPX racute oacute -18 KPX racute ocircumflex -18 KPX racute odieresis -18 KPX racute ograve -18 KPX racute ohungarumlaut -18 KPX racute omacron -18 KPX racute oslash -18 KPX racute otilde -18 KPX racute period 9 KPX racute q -18 KPX rcaron c -27 KPX rcaron cacute -27 KPX rcaron ccaron -27 KPX rcaron ccedilla -27 KPX rcaron comma 9 KPX rcaron d -8 KPX rcaron dcroat -8 KPX rcaron e -8 KPX rcaron eacute -8 KPX rcaron ecaron -8 KPX rcaron ecircumflex -8 KPX rcaron edieresis -8 KPX rcaron edotaccent -8 KPX rcaron egrave -8 KPX rcaron emacron -8 KPX rcaron eogonek -8 KPX rcaron f 38 KPX rcaron g -8 KPX rcaron gbreve -8 KPX rcaron gcommaaccent -8 KPX rcaron hyphen -10 KPX rcaron m 5 KPX rcaron n 5 KPX rcaron nacute 5 KPX rcaron ncaron 5 KPX rcaron ncommaaccent 5 KPX rcaron ntilde 5 KPX rcaron o -18 KPX rcaron oacute -18 KPX rcaron ocircumflex -18 KPX rcaron odieresis -18 KPX rcaron ograve -18 KPX rcaron ohungarumlaut -18 KPX rcaron omacron -18 KPX rcaron oslash -18 KPX rcaron otilde -18 KPX rcaron period 9 KPX rcaron q -18 KPX rcommaaccent c -27 KPX rcommaaccent cacute -27 KPX rcommaaccent ccaron -27 KPX rcommaaccent ccedilla -27 KPX rcommaaccent comma 9 KPX rcommaaccent d -8 KPX rcommaaccent dcroat -8 KPX rcommaaccent e -8 KPX rcommaaccent eacute -8 KPX rcommaaccent ecaron -8 KPX rcommaaccent ecircumflex -8 KPX rcommaaccent edieresis -8 KPX rcommaaccent edotaccent -8 KPX rcommaaccent egrave -8 KPX rcommaaccent emacron -8 KPX rcommaaccent eogonek -8 KPX rcommaaccent f 38 KPX rcommaaccent g -8 KPX rcommaaccent gbreve -8 KPX rcommaaccent gcommaaccent -8 KPX rcommaaccent hyphen -10 KPX rcommaaccent m 5 KPX rcommaaccent n 5 KPX rcommaaccent nacute 5 KPX rcommaaccent ncaron 5 KPX rcommaaccent ncommaaccent 5 KPX rcommaaccent ntilde 5 KPX rcommaaccent o -18 KPX rcommaaccent oacute -18 KPX rcommaaccent ocircumflex -18 KPX rcommaaccent odieresis -18 KPX rcommaaccent ograve -18 KPX rcommaaccent ohungarumlaut -18 KPX rcommaaccent omacron -18 KPX rcommaaccent oslash -18 KPX rcommaaccent otilde -18 KPX rcommaaccent period 9 KPX rcommaaccent q -18 EndKernPairs EndKernData EndFontMetrics gle-graphics-4.2.4c/src/fonts/Adobe-Core35_AFMs-314/ZapfDingbats.afm0000664000000000000000000002244711405446017023150 0ustar rootrootStartFontMetrics 4.1 Comment Copyright (c) 1985, 1987, 1988, 1989, 1997 Adobe Systems Incorporated. All Rights Reserved. Comment Creation Date: Thu May 1 15:14:13 1997 Comment UniqueID 43082 Comment VMusage 45775 55535 FontName ZapfDingbats FullName ITC Zapf Dingbats FamilyName ITC Zapf Dingbats Weight Medium ItalicAngle 0 IsFixedPitch false FontBBox -1 -143 981 820 UnderlinePosition -100 UnderlineThickness 50 Version 002.000 Notice Copyright (c) 1985, 1987, 1988, 1989, 1997 Adobe Systems Incorporated. All Rights Reserved.ITC Zapf Dingbats is a registered trademark of International Typeface Corporation. EncodingScheme FontSpecific StdHW 28 StdVW 90 StartCharMetrics 202 C 32 ; WX 278 ; N space ; B 0 0 0 0 ; C 33 ; WX 974 ; N a1 ; B 35 72 939 621 ; C 34 ; WX 961 ; N a2 ; B 35 81 927 611 ; C 35 ; WX 974 ; N a202 ; B 35 72 939 621 ; C 36 ; WX 980 ; N a3 ; B 35 0 945 692 ; C 37 ; WX 719 ; N a4 ; B 34 139 685 566 ; C 38 ; WX 789 ; N a5 ; B 35 -14 755 705 ; C 39 ; WX 790 ; N a119 ; B 35 -14 755 705 ; C 40 ; WX 791 ; N a118 ; B 35 -13 761 705 ; C 41 ; WX 690 ; N a117 ; B 34 138 655 553 ; C 42 ; WX 960 ; N a11 ; B 35 123 925 568 ; C 43 ; WX 939 ; N a12 ; B 35 134 904 559 ; C 44 ; WX 549 ; N a13 ; B 29 -11 516 705 ; C 45 ; WX 855 ; N a14 ; B 34 59 820 632 ; C 46 ; WX 911 ; N a15 ; B 35 50 876 642 ; C 47 ; WX 933 ; N a16 ; B 35 139 899 550 ; C 48 ; WX 911 ; N a105 ; B 35 50 876 642 ; C 49 ; WX 945 ; N a17 ; B 35 139 909 553 ; C 50 ; WX 974 ; N a18 ; B 35 104 938 587 ; C 51 ; WX 755 ; N a19 ; B 34 -13 721 705 ; C 52 ; WX 846 ; N a20 ; B 36 -14 811 705 ; C 53 ; WX 762 ; N a21 ; B 35 0 727 692 ; C 54 ; WX 761 ; N a22 ; B 35 0 727 692 ; C 55 ; WX 571 ; N a23 ; B -1 -68 571 661 ; C 56 ; WX 677 ; N a24 ; B 36 -13 642 705 ; C 57 ; WX 763 ; N a25 ; B 35 0 728 692 ; C 58 ; WX 760 ; N a26 ; B 35 0 726 692 ; C 59 ; WX 759 ; N a27 ; B 35 0 725 692 ; C 60 ; WX 754 ; N a28 ; B 35 0 720 692 ; C 61 ; WX 494 ; N a6 ; B 35 0 460 692 ; C 62 ; WX 552 ; N a7 ; B 35 0 517 692 ; C 63 ; WX 537 ; N a8 ; B 35 0 503 692 ; C 64 ; WX 577 ; N a9 ; B 35 96 542 596 ; C 65 ; WX 692 ; N a10 ; B 35 -14 657 705 ; C 66 ; WX 786 ; N a29 ; B 35 -14 751 705 ; C 67 ; WX 788 ; N a30 ; B 35 -14 752 705 ; C 68 ; WX 788 ; N a31 ; B 35 -14 753 705 ; C 69 ; WX 790 ; N a32 ; B 35 -14 756 705 ; C 70 ; WX 793 ; N a33 ; B 35 -13 759 705 ; C 71 ; WX 794 ; N a34 ; B 35 -13 759 705 ; C 72 ; WX 816 ; N a35 ; B 35 -14 782 705 ; C 73 ; WX 823 ; N a36 ; B 35 -14 787 705 ; C 74 ; WX 789 ; N a37 ; B 35 -14 754 705 ; C 75 ; WX 841 ; N a38 ; B 35 -14 807 705 ; C 76 ; WX 823 ; N a39 ; B 35 -14 789 705 ; C 77 ; WX 833 ; N a40 ; B 35 -14 798 705 ; C 78 ; WX 816 ; N a41 ; B 35 -13 782 705 ; C 79 ; WX 831 ; N a42 ; B 35 -14 796 705 ; C 80 ; WX 923 ; N a43 ; B 35 -14 888 705 ; C 81 ; WX 744 ; N a44 ; B 35 0 710 692 ; C 82 ; WX 723 ; N a45 ; B 35 0 688 692 ; C 83 ; WX 749 ; N a46 ; B 35 0 714 692 ; C 84 ; WX 790 ; N a47 ; B 34 -14 756 705 ; C 85 ; WX 792 ; N a48 ; B 35 -14 758 705 ; C 86 ; WX 695 ; N a49 ; B 35 -14 661 706 ; C 87 ; WX 776 ; N a50 ; B 35 -6 741 699 ; C 88 ; WX 768 ; N a51 ; B 35 -7 734 699 ; C 89 ; WX 792 ; N a52 ; B 35 -14 757 705 ; C 90 ; WX 759 ; N a53 ; B 35 0 725 692 ; C 91 ; WX 707 ; N a54 ; B 35 -13 672 704 ; C 92 ; WX 708 ; N a55 ; B 35 -14 672 705 ; C 93 ; WX 682 ; N a56 ; B 35 -14 647 705 ; C 94 ; WX 701 ; N a57 ; B 35 -14 666 705 ; C 95 ; WX 826 ; N a58 ; B 35 -14 791 705 ; C 96 ; WX 815 ; N a59 ; B 35 -14 780 705 ; C 97 ; WX 789 ; N a60 ; B 35 -14 754 705 ; C 98 ; WX 789 ; N a61 ; B 35 -14 754 705 ; C 99 ; WX 707 ; N a62 ; B 34 -14 673 705 ; C 100 ; WX 687 ; N a63 ; B 36 0 651 692 ; C 101 ; WX 696 ; N a64 ; B 35 0 661 691 ; C 102 ; WX 689 ; N a65 ; B 35 0 655 692 ; C 103 ; WX 786 ; N a66 ; B 34 -14 751 705 ; C 104 ; WX 787 ; N a67 ; B 35 -14 752 705 ; C 105 ; WX 713 ; N a68 ; B 35 -14 678 705 ; C 106 ; WX 791 ; N a69 ; B 35 -14 756 705 ; C 107 ; WX 785 ; N a70 ; B 36 -14 751 705 ; C 108 ; WX 791 ; N a71 ; B 35 -14 757 705 ; C 109 ; WX 873 ; N a72 ; B 35 -14 838 705 ; C 110 ; WX 761 ; N a73 ; B 35 0 726 692 ; C 111 ; WX 762 ; N a74 ; B 35 0 727 692 ; C 112 ; WX 762 ; N a203 ; B 35 0 727 692 ; C 113 ; WX 759 ; N a75 ; B 35 0 725 692 ; C 114 ; WX 759 ; N a204 ; B 35 0 725 692 ; C 115 ; WX 892 ; N a76 ; B 35 0 858 705 ; C 116 ; WX 892 ; N a77 ; B 35 -14 858 692 ; C 117 ; WX 788 ; N a78 ; B 35 -14 754 705 ; C 118 ; WX 784 ; N a79 ; B 35 -14 749 705 ; C 119 ; WX 438 ; N a81 ; B 35 -14 403 705 ; C 120 ; WX 138 ; N a82 ; B 35 0 104 692 ; C 121 ; WX 277 ; N a83 ; B 35 0 242 692 ; C 122 ; WX 415 ; N a84 ; B 35 0 380 692 ; C 123 ; WX 392 ; N a97 ; B 35 263 357 705 ; C 124 ; WX 392 ; N a98 ; B 34 263 357 705 ; C 125 ; WX 668 ; N a99 ; B 35 263 633 705 ; C 126 ; WX 668 ; N a100 ; B 36 263 634 705 ; C 128 ; WX 390 ; N a89 ; B 35 -14 356 705 ; C 129 ; WX 390 ; N a90 ; B 35 -14 355 705 ; C 130 ; WX 317 ; N a93 ; B 35 0 283 692 ; C 131 ; WX 317 ; N a94 ; B 35 0 283 692 ; C 132 ; WX 276 ; N a91 ; B 35 0 242 692 ; C 133 ; WX 276 ; N a92 ; B 35 0 242 692 ; C 134 ; WX 509 ; N a205 ; B 35 0 475 692 ; C 135 ; WX 509 ; N a85 ; B 35 0 475 692 ; C 136 ; WX 410 ; N a206 ; B 35 0 375 692 ; C 137 ; WX 410 ; N a86 ; B 35 0 375 692 ; C 138 ; WX 234 ; N a87 ; B 35 -14 199 705 ; C 139 ; WX 234 ; N a88 ; B 35 -14 199 705 ; C 140 ; WX 334 ; N a95 ; B 35 0 299 692 ; C 141 ; WX 334 ; N a96 ; B 35 0 299 692 ; C 161 ; WX 732 ; N a101 ; B 35 -143 697 806 ; C 162 ; WX 544 ; N a102 ; B 56 -14 488 706 ; C 163 ; WX 544 ; N a103 ; B 34 -14 508 705 ; C 164 ; WX 910 ; N a104 ; B 35 40 875 651 ; C 165 ; WX 667 ; N a106 ; B 35 -14 633 705 ; C 166 ; WX 760 ; N a107 ; B 35 -14 726 705 ; C 167 ; WX 760 ; N a108 ; B 0 121 758 569 ; C 168 ; WX 776 ; N a112 ; B 35 0 741 705 ; C 169 ; WX 595 ; N a111 ; B 34 -14 560 705 ; C 170 ; WX 694 ; N a110 ; B 35 -14 659 705 ; C 171 ; WX 626 ; N a109 ; B 34 0 591 705 ; C 172 ; WX 788 ; N a120 ; B 35 -14 754 705 ; C 173 ; WX 788 ; N a121 ; B 35 -14 754 705 ; C 174 ; WX 788 ; N a122 ; B 35 -14 754 705 ; C 175 ; WX 788 ; N a123 ; B 35 -14 754 705 ; C 176 ; WX 788 ; N a124 ; B 35 -14 754 705 ; C 177 ; WX 788 ; N a125 ; B 35 -14 754 705 ; C 178 ; WX 788 ; N a126 ; B 35 -14 754 705 ; C 179 ; WX 788 ; N a127 ; B 35 -14 754 705 ; C 180 ; WX 788 ; N a128 ; B 35 -14 754 705 ; C 181 ; WX 788 ; N a129 ; B 35 -14 754 705 ; C 182 ; WX 788 ; N a130 ; B 35 -14 754 705 ; C 183 ; WX 788 ; N a131 ; B 35 -14 754 705 ; C 184 ; WX 788 ; N a132 ; B 35 -14 754 705 ; C 185 ; WX 788 ; N a133 ; B 35 -14 754 705 ; C 186 ; WX 788 ; N a134 ; B 35 -14 754 705 ; C 187 ; WX 788 ; N a135 ; B 35 -14 754 705 ; C 188 ; WX 788 ; N a136 ; B 35 -14 754 705 ; C 189 ; WX 788 ; N a137 ; B 35 -14 754 705 ; C 190 ; WX 788 ; N a138 ; B 35 -14 754 705 ; C 191 ; WX 788 ; N a139 ; B 35 -14 754 705 ; C 192 ; WX 788 ; N a140 ; B 35 -14 754 705 ; C 193 ; WX 788 ; N a141 ; B 35 -14 754 705 ; C 194 ; WX 788 ; N a142 ; B 35 -14 754 705 ; C 195 ; WX 788 ; N a143 ; B 35 -14 754 705 ; C 196 ; WX 788 ; N a144 ; B 35 -14 754 705 ; C 197 ; WX 788 ; N a145 ; B 35 -14 754 705 ; C 198 ; WX 788 ; N a146 ; B 35 -14 754 705 ; C 199 ; WX 788 ; N a147 ; B 35 -14 754 705 ; C 200 ; WX 788 ; N a148 ; B 35 -14 754 705 ; C 201 ; WX 788 ; N a149 ; B 35 -14 754 705 ; C 202 ; WX 788 ; N a150 ; B 35 -14 754 705 ; C 203 ; WX 788 ; N a151 ; B 35 -14 754 705 ; C 204 ; WX 788 ; N a152 ; B 35 -14 754 705 ; C 205 ; WX 788 ; N a153 ; B 35 -14 754 705 ; C 206 ; WX 788 ; N a154 ; B 35 -14 754 705 ; C 207 ; WX 788 ; N a155 ; B 35 -14 754 705 ; C 208 ; WX 788 ; N a156 ; B 35 -14 754 705 ; C 209 ; WX 788 ; N a157 ; B 35 -14 754 705 ; C 210 ; WX 788 ; N a158 ; B 35 -14 754 705 ; C 211 ; WX 788 ; N a159 ; B 35 -14 754 705 ; C 212 ; WX 894 ; N a160 ; B 35 58 860 634 ; C 213 ; WX 838 ; N a161 ; B 35 152 803 540 ; C 214 ; WX 1016 ; N a163 ; B 34 152 981 540 ; C 215 ; WX 458 ; N a164 ; B 35 -127 422 820 ; C 216 ; WX 748 ; N a196 ; B 35 94 698 597 ; C 217 ; WX 924 ; N a165 ; B 35 140 890 552 ; C 218 ; WX 748 ; N a192 ; B 35 94 698 597 ; C 219 ; WX 918 ; N a166 ; B 35 166 884 526 ; C 220 ; WX 927 ; N a167 ; B 35 32 892 660 ; C 221 ; WX 928 ; N a168 ; B 35 129 891 562 ; C 222 ; WX 928 ; N a169 ; B 35 128 893 563 ; C 223 ; WX 834 ; N a170 ; B 35 155 799 537 ; C 224 ; WX 873 ; N a171 ; B 35 93 838 599 ; C 225 ; WX 828 ; N a172 ; B 35 104 791 588 ; C 226 ; WX 924 ; N a173 ; B 35 98 889 594 ; C 227 ; WX 924 ; N a162 ; B 35 98 889 594 ; C 228 ; WX 917 ; N a174 ; B 35 0 882 692 ; C 229 ; WX 930 ; N a175 ; B 35 84 896 608 ; C 230 ; WX 931 ; N a176 ; B 35 84 896 608 ; C 231 ; WX 463 ; N a177 ; B 35 -99 429 791 ; C 232 ; WX 883 ; N a178 ; B 35 71 848 623 ; C 233 ; WX 836 ; N a179 ; B 35 44 802 648 ; C 234 ; WX 836 ; N a193 ; B 35 44 802 648 ; C 235 ; WX 867 ; N a180 ; B 35 101 832 591 ; C 236 ; WX 867 ; N a199 ; B 35 101 832 591 ; C 237 ; WX 696 ; N a181 ; B 35 44 661 648 ; C 238 ; WX 696 ; N a200 ; B 35 44 661 648 ; C 239 ; WX 874 ; N a182 ; B 35 77 840 619 ; C 241 ; WX 874 ; N a201 ; B 35 73 840 615 ; C 242 ; WX 760 ; N a183 ; B 35 0 725 692 ; C 243 ; WX 946 ; N a184 ; B 35 160 911 533 ; C 244 ; WX 771 ; N a197 ; B 34 37 736 655 ; C 245 ; WX 865 ; N a185 ; B 35 207 830 481 ; C 246 ; WX 771 ; N a194 ; B 34 37 736 655 ; C 247 ; WX 888 ; N a198 ; B 34 -19 853 712 ; C 248 ; WX 967 ; N a186 ; B 35 124 932 568 ; C 249 ; WX 888 ; N a195 ; B 34 -19 853 712 ; C 250 ; WX 831 ; N a187 ; B 35 113 796 579 ; C 251 ; WX 873 ; N a188 ; B 36 118 838 578 ; C 252 ; WX 927 ; N a189 ; B 35 150 891 542 ; C 253 ; WX 970 ; N a190 ; B 35 76 931 616 ; C 254 ; WX 918 ; N a191 ; B 34 99 884 593 ; EndCharMetrics EndFontMetrics gle-graphics-4.2.4c/src/fonts/Adobe-Core35_AFMs-314/Helvetica-Narrow.afm0000664000000000000000000022075611405446017023751 0ustar rootrootStartFontMetrics 4.1 Comment Copyright (c) 1985, 1987, 1989, 1990, 1997 Adobe Systems Incorporated. All Rights Reserved. Comment Creation Date: Fri May 2 17:00:45 1997 Comment UniqueID 43179 Comment VMusage 14960 69346 FontName Helvetica-Narrow FullName Helvetica Narrow FamilyName Helvetica Weight Medium ItalicAngle 0 IsFixedPitch false FontBBox -136 -225 820 931 UnderlinePosition -100 UnderlineThickness 50 Version 002.000 Notice Copyright (c) 1985, 1987, 1989, 1990, 1997 Adobe Systems Incorporated. All Rights Reserved.Helvetica is a trademark of Linotype-Hell AG and/or its subsidiaries. EncodingScheme AdobeStandardEncoding CapHeight 718 XHeight 523 Ascender 718 Descender -207 StdHW 76 StdVW 88 StartCharMetrics 314 C 32 ; WX 228 ; N space ; B 0 0 0 0 ; C 33 ; WX 228 ; N exclam ; B 74 0 153 718 ; C 34 ; WX 291 ; N quotedbl ; B 57 463 234 718 ; C 35 ; WX 456 ; N numbersign ; B 23 0 434 688 ; C 36 ; WX 456 ; N dollar ; B 26 -115 426 775 ; C 37 ; WX 729 ; N percent ; B 32 -19 697 703 ; C 38 ; WX 547 ; N ampersand ; B 36 -15 529 718 ; C 39 ; WX 182 ; N quoteright ; B 43 463 129 718 ; C 40 ; WX 273 ; N parenleft ; B 56 -207 245 733 ; C 41 ; WX 273 ; N parenright ; B 28 -207 217 733 ; C 42 ; WX 319 ; N asterisk ; B 32 431 286 718 ; C 43 ; WX 479 ; N plus ; B 32 0 447 505 ; C 44 ; WX 228 ; N comma ; B 71 -147 157 106 ; C 45 ; WX 273 ; N hyphen ; B 36 232 237 322 ; C 46 ; WX 228 ; N period ; B 71 0 157 106 ; C 47 ; WX 228 ; N slash ; B -14 -19 242 737 ; C 48 ; WX 456 ; N zero ; B 30 -19 426 703 ; C 49 ; WX 456 ; N one ; B 83 0 294 703 ; C 50 ; WX 456 ; N two ; B 21 0 416 703 ; C 51 ; WX 456 ; N three ; B 28 -19 428 703 ; C 52 ; WX 456 ; N four ; B 21 0 429 703 ; C 53 ; WX 456 ; N five ; B 26 -19 421 688 ; C 54 ; WX 456 ; N six ; B 31 -19 425 703 ; C 55 ; WX 456 ; N seven ; B 30 0 429 688 ; C 56 ; WX 456 ; N eight ; B 31 -19 424 703 ; C 57 ; WX 456 ; N nine ; B 34 -19 421 703 ; C 58 ; WX 228 ; N colon ; B 71 0 157 516 ; C 59 ; WX 228 ; N semicolon ; B 71 -147 157 516 ; C 60 ; WX 479 ; N less ; B 39 11 440 495 ; C 61 ; WX 479 ; N equal ; B 32 115 447 390 ; C 62 ; WX 479 ; N greater ; B 39 11 440 495 ; C 63 ; WX 456 ; N question ; B 46 0 403 727 ; C 64 ; WX 832 ; N at ; B 121 -19 712 737 ; C 65 ; WX 547 ; N A ; B 11 0 536 718 ; C 66 ; WX 547 ; N B ; B 61 0 514 718 ; C 67 ; WX 592 ; N C ; B 36 -19 558 737 ; C 68 ; WX 592 ; N D ; B 66 0 553 718 ; C 69 ; WX 547 ; N E ; B 71 0 505 718 ; C 70 ; WX 501 ; N F ; B 71 0 478 718 ; C 71 ; WX 638 ; N G ; B 39 -19 577 737 ; C 72 ; WX 592 ; N H ; B 63 0 530 718 ; C 73 ; WX 228 ; N I ; B 75 0 154 718 ; C 74 ; WX 410 ; N J ; B 14 -19 351 718 ; C 75 ; WX 547 ; N K ; B 62 0 544 718 ; C 76 ; WX 456 ; N L ; B 62 0 440 718 ; C 77 ; WX 683 ; N M ; B 60 0 624 718 ; C 78 ; WX 592 ; N N ; B 62 0 530 718 ; C 79 ; WX 638 ; N O ; B 32 -19 606 737 ; C 80 ; WX 547 ; N P ; B 71 0 510 718 ; C 81 ; WX 638 ; N Q ; B 32 -56 606 737 ; C 82 ; WX 592 ; N R ; B 72 0 561 718 ; C 83 ; WX 547 ; N S ; B 40 -19 508 737 ; C 84 ; WX 501 ; N T ; B 11 0 490 718 ; C 85 ; WX 592 ; N U ; B 65 -19 528 718 ; C 86 ; WX 547 ; N V ; B 16 0 531 718 ; C 87 ; WX 774 ; N W ; B 13 0 761 718 ; C 88 ; WX 547 ; N X ; B 16 0 531 718 ; C 89 ; WX 547 ; N Y ; B 11 0 535 718 ; C 90 ; WX 501 ; N Z ; B 19 0 482 718 ; C 91 ; WX 228 ; N bracketleft ; B 52 -196 205 722 ; C 92 ; WX 228 ; N backslash ; B -14 -19 242 737 ; C 93 ; WX 228 ; N bracketright ; B 23 -196 176 722 ; C 94 ; WX 385 ; N asciicircum ; B -11 264 396 688 ; C 95 ; WX 456 ; N underscore ; B 0 -125 456 -75 ; C 96 ; WX 182 ; N quoteleft ; B 53 470 139 725 ; C 97 ; WX 456 ; N a ; B 30 -15 435 538 ; C 98 ; WX 456 ; N b ; B 48 -15 424 718 ; C 99 ; WX 410 ; N c ; B 25 -15 391 538 ; C 100 ; WX 456 ; N d ; B 29 -15 409 718 ; C 101 ; WX 456 ; N e ; B 33 -15 423 538 ; C 102 ; WX 228 ; N f ; B 11 0 215 728 ; L i fi ; L l fl ; C 103 ; WX 456 ; N g ; B 33 -220 409 538 ; C 104 ; WX 456 ; N h ; B 53 0 403 718 ; C 105 ; WX 182 ; N i ; B 55 0 127 718 ; C 106 ; WX 182 ; N j ; B -13 -210 127 718 ; C 107 ; WX 410 ; N k ; B 55 0 411 718 ; C 108 ; WX 182 ; N l ; B 55 0 127 718 ; C 109 ; WX 683 ; N m ; B 53 0 631 538 ; C 110 ; WX 456 ; N n ; B 53 0 403 538 ; C 111 ; WX 456 ; N o ; B 29 -14 427 538 ; C 112 ; WX 456 ; N p ; B 48 -207 424 538 ; C 113 ; WX 456 ; N q ; B 29 -207 405 538 ; C 114 ; WX 273 ; N r ; B 63 0 272 538 ; C 115 ; WX 410 ; N s ; B 26 -15 380 538 ; C 116 ; WX 228 ; N t ; B 11 -7 211 669 ; C 117 ; WX 456 ; N u ; B 56 -15 401 523 ; C 118 ; WX 410 ; N v ; B 7 0 403 523 ; C 119 ; WX 592 ; N w ; B 11 0 581 523 ; C 120 ; WX 410 ; N x ; B 9 0 402 523 ; C 121 ; WX 410 ; N y ; B 9 -214 401 523 ; C 122 ; WX 410 ; N z ; B 25 0 385 523 ; C 123 ; WX 274 ; N braceleft ; B 34 -196 239 722 ; C 124 ; WX 213 ; N bar ; B 77 -225 137 775 ; C 125 ; WX 274 ; N braceright ; B 34 -196 239 722 ; C 126 ; WX 479 ; N asciitilde ; B 50 180 429 326 ; C 161 ; WX 273 ; N exclamdown ; B 97 -195 176 523 ; C 162 ; WX 456 ; N cent ; B 42 -115 421 623 ; C 163 ; WX 456 ; N sterling ; B 27 -16 442 718 ; C 164 ; WX 137 ; N fraction ; B -136 -19 273 703 ; C 165 ; WX 456 ; N yen ; B 2 0 453 688 ; C 166 ; WX 456 ; N florin ; B -9 -207 411 737 ; C 167 ; WX 456 ; N section ; B 35 -191 420 737 ; C 168 ; WX 456 ; N currency ; B 23 99 433 603 ; C 169 ; WX 157 ; N quotesingle ; B 48 463 108 718 ; C 170 ; WX 273 ; N quotedblleft ; B 31 470 252 725 ; C 171 ; WX 456 ; N guillemotleft ; B 80 108 376 446 ; C 172 ; WX 273 ; N guilsinglleft ; B 72 108 201 446 ; C 173 ; WX 273 ; N guilsinglright ; B 72 108 201 446 ; C 174 ; WX 410 ; N fi ; B 11 0 356 728 ; C 175 ; WX 410 ; N fl ; B 11 0 354 728 ; C 177 ; WX 456 ; N endash ; B 0 240 456 313 ; C 178 ; WX 456 ; N dagger ; B 35 -159 421 718 ; C 179 ; WX 456 ; N daggerdbl ; B 35 -159 421 718 ; C 180 ; WX 228 ; N periodcentered ; B 63 190 166 315 ; C 182 ; WX 440 ; N paragraph ; B 15 -173 408 718 ; C 183 ; WX 287 ; N bullet ; B 15 202 273 517 ; C 184 ; WX 182 ; N quotesinglbase ; B 43 -149 129 106 ; C 185 ; WX 273 ; N quotedblbase ; B 21 -149 242 106 ; C 186 ; WX 273 ; N quotedblright ; B 21 463 242 718 ; C 187 ; WX 456 ; N guillemotright ; B 80 108 376 446 ; C 188 ; WX 820 ; N ellipsis ; B 94 0 726 106 ; C 189 ; WX 820 ; N perthousand ; B 6 -19 815 703 ; C 191 ; WX 501 ; N questiondown ; B 75 -201 432 525 ; C 193 ; WX 273 ; N grave ; B 11 593 173 734 ; C 194 ; WX 273 ; N acute ; B 100 593 262 734 ; C 195 ; WX 273 ; N circumflex ; B 17 593 256 734 ; C 196 ; WX 273 ; N tilde ; B -3 606 276 722 ; C 197 ; WX 273 ; N macron ; B 8 627 265 684 ; C 198 ; WX 273 ; N breve ; B 11 595 263 731 ; C 199 ; WX 273 ; N dotaccent ; B 99 604 174 706 ; C 200 ; WX 273 ; N dieresis ; B 33 604 240 706 ; C 202 ; WX 273 ; N ring ; B 62 572 212 756 ; C 203 ; WX 273 ; N cedilla ; B 37 -225 212 0 ; C 205 ; WX 273 ; N hungarumlaut ; B 25 593 335 734 ; C 206 ; WX 273 ; N ogonek ; B 60 -225 235 0 ; C 207 ; WX 273 ; N caron ; B 17 593 256 734 ; C 208 ; WX 820 ; N emdash ; B 0 240 820 313 ; C 225 ; WX 820 ; N AE ; B 7 0 780 718 ; C 227 ; WX 303 ; N ordfeminine ; B 20 405 284 737 ; C 232 ; WX 456 ; N Lslash ; B -16 0 440 718 ; C 233 ; WX 638 ; N Oslash ; B 32 -19 607 737 ; C 234 ; WX 820 ; N OE ; B 30 -19 791 737 ; C 235 ; WX 299 ; N ordmasculine ; B 21 405 280 737 ; C 241 ; WX 729 ; N ae ; B 30 -15 695 538 ; C 245 ; WX 228 ; N dotlessi ; B 78 0 150 523 ; C 248 ; WX 182 ; N lslash ; B -16 0 198 718 ; C 249 ; WX 501 ; N oslash ; B 23 -22 440 545 ; C 250 ; WX 774 ; N oe ; B 29 -15 740 538 ; C 251 ; WX 501 ; N germandbls ; B 55 -15 468 728 ; C -1 ; WX 228 ; N Idieresis ; B 11 0 218 901 ; C -1 ; WX 456 ; N eacute ; B 33 -15 423 734 ; C -1 ; WX 456 ; N abreve ; B 30 -15 435 731 ; C -1 ; WX 456 ; N uhungarumlaut ; B 56 -15 427 734 ; C -1 ; WX 456 ; N ecaron ; B 33 -15 423 734 ; C -1 ; WX 547 ; N Ydieresis ; B 11 0 535 901 ; C -1 ; WX 479 ; N divide ; B 32 -19 447 524 ; C -1 ; WX 547 ; N Yacute ; B 11 0 535 929 ; C -1 ; WX 547 ; N Acircumflex ; B 11 0 536 929 ; C -1 ; WX 456 ; N aacute ; B 30 -15 435 734 ; C -1 ; WX 592 ; N Ucircumflex ; B 65 -19 528 929 ; C -1 ; WX 410 ; N yacute ; B 9 -214 401 734 ; C -1 ; WX 410 ; N scommaaccent ; B 26 -225 380 538 ; C -1 ; WX 456 ; N ecircumflex ; B 33 -15 423 734 ; C -1 ; WX 592 ; N Uring ; B 65 -19 528 931 ; C -1 ; WX 592 ; N Udieresis ; B 65 -19 528 901 ; C -1 ; WX 456 ; N aogonek ; B 30 -220 449 538 ; C -1 ; WX 592 ; N Uacute ; B 65 -19 528 929 ; C -1 ; WX 456 ; N uogonek ; B 56 -225 426 523 ; C -1 ; WX 547 ; N Edieresis ; B 71 0 505 901 ; C -1 ; WX 592 ; N Dcroat ; B 0 0 553 718 ; C -1 ; WX 205 ; N commaaccent ; B 71 -225 148 -40 ; C -1 ; WX 604 ; N copyright ; B -11 -19 617 737 ; C -1 ; WX 547 ; N Emacron ; B 71 0 505 879 ; C -1 ; WX 410 ; N ccaron ; B 25 -15 391 734 ; C -1 ; WX 456 ; N aring ; B 30 -15 435 756 ; C -1 ; WX 592 ; N Ncommaaccent ; B 62 -225 530 718 ; C -1 ; WX 182 ; N lacute ; B 55 0 216 929 ; C -1 ; WX 456 ; N agrave ; B 30 -15 435 734 ; C -1 ; WX 501 ; N Tcommaaccent ; B 11 -225 490 718 ; C -1 ; WX 592 ; N Cacute ; B 36 -19 558 929 ; C -1 ; WX 456 ; N atilde ; B 30 -15 435 722 ; C -1 ; WX 547 ; N Edotaccent ; B 71 0 505 901 ; C -1 ; WX 410 ; N scaron ; B 26 -15 380 734 ; C -1 ; WX 410 ; N scedilla ; B 26 -225 380 538 ; C -1 ; WX 228 ; N iacute ; B 78 0 239 734 ; C -1 ; WX 386 ; N lozenge ; B 8 0 379 728 ; C -1 ; WX 592 ; N Rcaron ; B 72 0 561 929 ; C -1 ; WX 638 ; N Gcommaaccent ; B 39 -225 577 737 ; C -1 ; WX 456 ; N ucircumflex ; B 56 -15 401 734 ; C -1 ; WX 456 ; N acircumflex ; B 30 -15 435 734 ; C -1 ; WX 547 ; N Amacron ; B 11 0 536 879 ; C -1 ; WX 273 ; N rcaron ; B 50 0 289 734 ; C -1 ; WX 410 ; N ccedilla ; B 25 -225 391 538 ; C -1 ; WX 501 ; N Zdotaccent ; B 19 0 482 901 ; C -1 ; WX 547 ; N Thorn ; B 71 0 510 718 ; C -1 ; WX 638 ; N Omacron ; B 32 -19 606 879 ; C -1 ; WX 592 ; N Racute ; B 72 0 561 929 ; C -1 ; WX 547 ; N Sacute ; B 40 -19 508 929 ; C -1 ; WX 527 ; N dcaron ; B 29 -15 537 718 ; C -1 ; WX 592 ; N Umacron ; B 65 -19 528 879 ; C -1 ; WX 456 ; N uring ; B 56 -15 401 756 ; C -1 ; WX 273 ; N threesuperior ; B 4 270 267 703 ; C -1 ; WX 638 ; N Ograve ; B 32 -19 606 929 ; C -1 ; WX 547 ; N Agrave ; B 11 0 536 929 ; C -1 ; WX 547 ; N Abreve ; B 11 0 536 926 ; C -1 ; WX 479 ; N multiply ; B 32 0 447 506 ; C -1 ; WX 456 ; N uacute ; B 56 -15 401 734 ; C -1 ; WX 501 ; N Tcaron ; B 11 0 490 929 ; C -1 ; WX 390 ; N partialdiff ; B 11 -38 380 714 ; C -1 ; WX 410 ; N ydieresis ; B 9 -214 401 706 ; C -1 ; WX 592 ; N Nacute ; B 62 0 530 929 ; C -1 ; WX 228 ; N icircumflex ; B -5 0 234 734 ; C -1 ; WX 547 ; N Ecircumflex ; B 71 0 505 929 ; C -1 ; WX 456 ; N adieresis ; B 30 -15 435 706 ; C -1 ; WX 456 ; N edieresis ; B 33 -15 423 706 ; C -1 ; WX 410 ; N cacute ; B 25 -15 391 734 ; C -1 ; WX 456 ; N nacute ; B 53 0 403 734 ; C -1 ; WX 456 ; N umacron ; B 56 -15 401 684 ; C -1 ; WX 592 ; N Ncaron ; B 62 0 530 929 ; C -1 ; WX 228 ; N Iacute ; B 75 0 239 929 ; C -1 ; WX 479 ; N plusminus ; B 32 0 447 506 ; C -1 ; WX 213 ; N brokenbar ; B 77 -150 137 700 ; C -1 ; WX 604 ; N registered ; B -11 -19 617 737 ; C -1 ; WX 638 ; N Gbreve ; B 39 -19 577 926 ; C -1 ; WX 228 ; N Idotaccent ; B 75 0 154 901 ; C -1 ; WX 492 ; N summation ; B 12 -10 481 706 ; C -1 ; WX 547 ; N Egrave ; B 71 0 505 929 ; C -1 ; WX 273 ; N racute ; B 63 0 272 734 ; C -1 ; WX 456 ; N omacron ; B 29 -14 427 684 ; C -1 ; WX 501 ; N Zacute ; B 19 0 482 929 ; C -1 ; WX 501 ; N Zcaron ; B 19 0 482 929 ; C -1 ; WX 450 ; N greaterequal ; B 21 0 429 674 ; C -1 ; WX 592 ; N Eth ; B 0 0 553 718 ; C -1 ; WX 592 ; N Ccedilla ; B 36 -225 558 737 ; C -1 ; WX 182 ; N lcommaaccent ; B 55 -225 137 718 ; C -1 ; WX 260 ; N tcaron ; B 11 -7 270 808 ; C -1 ; WX 456 ; N eogonek ; B 33 -225 423 538 ; C -1 ; WX 592 ; N Uogonek ; B 65 -225 528 718 ; C -1 ; WX 547 ; N Aacute ; B 11 0 536 929 ; C -1 ; WX 547 ; N Adieresis ; B 11 0 536 901 ; C -1 ; WX 456 ; N egrave ; B 33 -15 423 734 ; C -1 ; WX 410 ; N zacute ; B 25 0 385 734 ; C -1 ; WX 182 ; N iogonek ; B -25 -225 150 718 ; C -1 ; WX 638 ; N Oacute ; B 32 -19 606 929 ; C -1 ; WX 456 ; N oacute ; B 29 -14 427 734 ; C -1 ; WX 456 ; N amacron ; B 30 -15 435 684 ; C -1 ; WX 410 ; N sacute ; B 26 -15 380 734 ; C -1 ; WX 228 ; N idieresis ; B 11 0 218 706 ; C -1 ; WX 638 ; N Ocircumflex ; B 32 -19 606 929 ; C -1 ; WX 592 ; N Ugrave ; B 65 -19 528 929 ; C -1 ; WX 502 ; N Delta ; B 5 0 499 688 ; C -1 ; WX 456 ; N thorn ; B 48 -207 424 718 ; C -1 ; WX 273 ; N twosuperior ; B 3 281 265 703 ; C -1 ; WX 638 ; N Odieresis ; B 32 -19 606 901 ; C -1 ; WX 456 ; N mu ; B 56 -207 401 523 ; C -1 ; WX 228 ; N igrave ; B -11 0 151 734 ; C -1 ; WX 456 ; N ohungarumlaut ; B 29 -14 427 734 ; C -1 ; WX 547 ; N Eogonek ; B 71 -220 519 718 ; C -1 ; WX 456 ; N dcroat ; B 29 -15 451 718 ; C -1 ; WX 684 ; N threequarters ; B 37 -19 664 703 ; C -1 ; WX 547 ; N Scedilla ; B 40 -225 508 737 ; C -1 ; WX 245 ; N lcaron ; B 55 0 255 718 ; C -1 ; WX 547 ; N Kcommaaccent ; B 62 -225 544 718 ; C -1 ; WX 456 ; N Lacute ; B 62 0 440 929 ; C -1 ; WX 820 ; N trademark ; B 38 306 740 718 ; C -1 ; WX 456 ; N edotaccent ; B 33 -15 423 706 ; C -1 ; WX 228 ; N Igrave ; B -11 0 154 929 ; C -1 ; WX 228 ; N Imacron ; B -14 0 243 879 ; C -1 ; WX 456 ; N Lcaron ; B 62 0 440 718 ; C -1 ; WX 684 ; N onehalf ; B 35 -19 634 703 ; C -1 ; WX 450 ; N lessequal ; B 21 0 429 674 ; C -1 ; WX 456 ; N ocircumflex ; B 29 -14 427 734 ; C -1 ; WX 456 ; N ntilde ; B 53 0 403 722 ; C -1 ; WX 592 ; N Uhungarumlaut ; B 65 -19 528 929 ; C -1 ; WX 547 ; N Eacute ; B 71 0 505 929 ; C -1 ; WX 456 ; N emacron ; B 33 -15 423 684 ; C -1 ; WX 456 ; N gbreve ; B 33 -220 409 731 ; C -1 ; WX 684 ; N onequarter ; B 60 -19 620 703 ; C -1 ; WX 547 ; N Scaron ; B 40 -19 508 929 ; C -1 ; WX 547 ; N Scommaaccent ; B 40 -225 508 737 ; C -1 ; WX 638 ; N Ohungarumlaut ; B 32 -19 606 929 ; C -1 ; WX 328 ; N degree ; B 44 411 284 703 ; C -1 ; WX 456 ; N ograve ; B 29 -14 427 734 ; C -1 ; WX 592 ; N Ccaron ; B 36 -19 558 929 ; C -1 ; WX 456 ; N ugrave ; B 56 -15 401 734 ; C -1 ; WX 371 ; N radical ; B -3 -80 376 762 ; C -1 ; WX 592 ; N Dcaron ; B 66 0 553 929 ; C -1 ; WX 273 ; N rcommaaccent ; B 63 -225 272 538 ; C -1 ; WX 592 ; N Ntilde ; B 62 0 530 917 ; C -1 ; WX 456 ; N otilde ; B 29 -14 427 722 ; C -1 ; WX 592 ; N Rcommaaccent ; B 72 -225 561 718 ; C -1 ; WX 456 ; N Lcommaaccent ; B 62 -225 440 718 ; C -1 ; WX 547 ; N Atilde ; B 11 0 536 917 ; C -1 ; WX 547 ; N Aogonek ; B 11 -225 536 718 ; C -1 ; WX 547 ; N Aring ; B 11 0 536 931 ; C -1 ; WX 638 ; N Otilde ; B 32 -19 606 917 ; C -1 ; WX 410 ; N zdotaccent ; B 25 0 385 706 ; C -1 ; WX 547 ; N Ecaron ; B 71 0 505 929 ; C -1 ; WX 228 ; N Iogonek ; B -2 -225 173 718 ; C -1 ; WX 410 ; N kcommaaccent ; B 55 -225 411 718 ; C -1 ; WX 479 ; N minus ; B 32 216 447 289 ; C -1 ; WX 228 ; N Icircumflex ; B -5 0 234 929 ; C -1 ; WX 456 ; N ncaron ; B 53 0 403 734 ; C -1 ; WX 228 ; N tcommaaccent ; B 11 -225 211 669 ; C -1 ; WX 479 ; N logicalnot ; B 32 108 447 390 ; C -1 ; WX 456 ; N odieresis ; B 29 -14 427 706 ; C -1 ; WX 456 ; N udieresis ; B 56 -15 401 706 ; C -1 ; WX 450 ; N notequal ; B 10 -35 440 551 ; C -1 ; WX 456 ; N gcommaaccent ; B 33 -220 409 822 ; C -1 ; WX 456 ; N eth ; B 29 -15 428 737 ; C -1 ; WX 410 ; N zcaron ; B 25 0 385 734 ; C -1 ; WX 456 ; N ncommaaccent ; B 53 -225 403 538 ; C -1 ; WX 273 ; N onesuperior ; B 35 281 182 703 ; C -1 ; WX 228 ; N imacron ; B 4 0 223 684 ; EndCharMetrics StartKernData StartKernPairs 2705 KPX A C -30 KPX A Cacute -30 KPX A Ccaron -30 KPX A Ccedilla -30 KPX A G -30 KPX A Gbreve -30 KPX A Gcommaaccent -30 KPX A O -30 KPX A Oacute -30 KPX A Ocircumflex -30 KPX A Odieresis -30 KPX A Ograve -30 KPX A Ohungarumlaut -30 KPX A Omacron -30 KPX A Oslash -30 KPX A Otilde -30 KPX A Q -30 KPX A T -120 KPX A Tcaron -120 KPX A Tcommaaccent -120 KPX A U -50 KPX A Uacute -50 KPX A Ucircumflex -50 KPX A Udieresis -50 KPX A Ugrave -50 KPX A Uhungarumlaut -50 KPX A Umacron -50 KPX A Uogonek -50 KPX A Uring -50 KPX A V -70 KPX A W -50 KPX A Y -100 KPX A Yacute -100 KPX A Ydieresis -100 KPX A u -30 KPX A uacute -30 KPX A ucircumflex -30 KPX A udieresis -30 KPX A ugrave -30 KPX A uhungarumlaut -30 KPX A umacron -30 KPX A uogonek -30 KPX A uring -30 KPX A v -40 KPX A w -40 KPX A y -40 KPX A yacute -40 KPX A ydieresis -40 KPX Aacute C -30 KPX Aacute Cacute -30 KPX Aacute Ccaron -30 KPX Aacute Ccedilla -30 KPX Aacute G -30 KPX Aacute Gbreve -30 KPX Aacute Gcommaaccent -30 KPX Aacute O -30 KPX Aacute Oacute -30 KPX Aacute Ocircumflex -30 KPX Aacute Odieresis -30 KPX Aacute Ograve -30 KPX Aacute Ohungarumlaut -30 KPX Aacute Omacron -30 KPX Aacute Oslash -30 KPX Aacute Otilde -30 KPX Aacute Q -30 KPX Aacute T -120 KPX Aacute Tcaron -120 KPX Aacute Tcommaaccent -120 KPX Aacute U -50 KPX Aacute Uacute -50 KPX Aacute Ucircumflex -50 KPX Aacute Udieresis -50 KPX Aacute Ugrave -50 KPX Aacute Uhungarumlaut -50 KPX Aacute Umacron -50 KPX Aacute Uogonek -50 KPX Aacute Uring -50 KPX Aacute V -70 KPX Aacute W -50 KPX Aacute Y -100 KPX Aacute Yacute -100 KPX Aacute Ydieresis -100 KPX Aacute u -30 KPX Aacute uacute -30 KPX Aacute ucircumflex -30 KPX Aacute udieresis -30 KPX Aacute ugrave -30 KPX Aacute uhungarumlaut -30 KPX Aacute umacron -30 KPX Aacute uogonek -30 KPX Aacute uring -30 KPX Aacute v -40 KPX Aacute w -40 KPX Aacute y -40 KPX Aacute yacute -40 KPX Aacute ydieresis -40 KPX Abreve C -30 KPX Abreve Cacute -30 KPX Abreve Ccaron -30 KPX Abreve Ccedilla -30 KPX Abreve G -30 KPX Abreve Gbreve -30 KPX Abreve Gcommaaccent -30 KPX Abreve O -30 KPX Abreve Oacute -30 KPX Abreve Ocircumflex -30 KPX Abreve Odieresis -30 KPX Abreve Ograve -30 KPX Abreve Ohungarumlaut -30 KPX Abreve Omacron -30 KPX Abreve Oslash -30 KPX Abreve Otilde -30 KPX Abreve Q -30 KPX Abreve T -120 KPX Abreve Tcaron -120 KPX Abreve Tcommaaccent -120 KPX Abreve U -50 KPX Abreve Uacute -50 KPX Abreve Ucircumflex -50 KPX Abreve Udieresis -50 KPX Abreve Ugrave -50 KPX Abreve Uhungarumlaut -50 KPX Abreve Umacron -50 KPX Abreve Uogonek -50 KPX Abreve Uring -50 KPX Abreve V -70 KPX Abreve W -50 KPX Abreve Y -100 KPX Abreve Yacute -100 KPX Abreve Ydieresis -100 KPX Abreve u -30 KPX Abreve uacute -30 KPX Abreve ucircumflex -30 KPX Abreve udieresis -30 KPX Abreve ugrave -30 KPX Abreve uhungarumlaut -30 KPX Abreve umacron -30 KPX Abreve uogonek -30 KPX Abreve uring -30 KPX Abreve v -40 KPX Abreve w -40 KPX Abreve y -40 KPX Abreve yacute -40 KPX Abreve ydieresis -40 KPX Acircumflex C -30 KPX Acircumflex Cacute -30 KPX Acircumflex Ccaron -30 KPX Acircumflex Ccedilla -30 KPX Acircumflex G -30 KPX Acircumflex Gbreve -30 KPX Acircumflex Gcommaaccent -30 KPX Acircumflex O -30 KPX Acircumflex Oacute -30 KPX Acircumflex Ocircumflex -30 KPX Acircumflex Odieresis -30 KPX Acircumflex Ograve -30 KPX Acircumflex Ohungarumlaut -30 KPX Acircumflex Omacron -30 KPX Acircumflex Oslash -30 KPX Acircumflex Otilde -30 KPX Acircumflex Q -30 KPX Acircumflex T -120 KPX Acircumflex Tcaron -120 KPX Acircumflex Tcommaaccent -120 KPX Acircumflex U -50 KPX Acircumflex Uacute -50 KPX Acircumflex Ucircumflex -50 KPX Acircumflex Udieresis -50 KPX Acircumflex Ugrave -50 KPX Acircumflex Uhungarumlaut -50 KPX Acircumflex Umacron -50 KPX Acircumflex Uogonek -50 KPX Acircumflex Uring -50 KPX Acircumflex V -70 KPX Acircumflex W -50 KPX Acircumflex Y -100 KPX Acircumflex Yacute -100 KPX Acircumflex Ydieresis -100 KPX Acircumflex u -30 KPX Acircumflex uacute -30 KPX Acircumflex ucircumflex -30 KPX Acircumflex udieresis -30 KPX Acircumflex ugrave -30 KPX Acircumflex uhungarumlaut -30 KPX Acircumflex umacron -30 KPX Acircumflex uogonek -30 KPX Acircumflex uring -30 KPX Acircumflex v -40 KPX Acircumflex w -40 KPX Acircumflex y -40 KPX Acircumflex yacute -40 KPX Acircumflex ydieresis -40 KPX Adieresis C -30 KPX Adieresis Cacute -30 KPX Adieresis Ccaron -30 KPX Adieresis Ccedilla -30 KPX Adieresis G -30 KPX Adieresis Gbreve -30 KPX Adieresis Gcommaaccent -30 KPX Adieresis O -30 KPX Adieresis Oacute -30 KPX Adieresis Ocircumflex -30 KPX Adieresis Odieresis -30 KPX Adieresis Ograve -30 KPX Adieresis Ohungarumlaut -30 KPX Adieresis Omacron -30 KPX Adieresis Oslash -30 KPX Adieresis Otilde -30 KPX Adieresis Q -30 KPX Adieresis T -120 KPX Adieresis Tcaron -120 KPX Adieresis Tcommaaccent -120 KPX Adieresis U -50 KPX Adieresis Uacute -50 KPX Adieresis Ucircumflex -50 KPX Adieresis Udieresis -50 KPX Adieresis Ugrave -50 KPX Adieresis Uhungarumlaut -50 KPX Adieresis Umacron -50 KPX Adieresis Uogonek -50 KPX Adieresis Uring -50 KPX Adieresis V -70 KPX Adieresis W -50 KPX Adieresis Y -100 KPX Adieresis Yacute -100 KPX Adieresis Ydieresis -100 KPX Adieresis u -30 KPX Adieresis uacute -30 KPX Adieresis ucircumflex -30 KPX Adieresis udieresis -30 KPX Adieresis ugrave -30 KPX Adieresis uhungarumlaut -30 KPX Adieresis umacron -30 KPX Adieresis uogonek -30 KPX Adieresis uring -30 KPX Adieresis v -40 KPX Adieresis w -40 KPX Adieresis y -40 KPX Adieresis yacute -40 KPX Adieresis ydieresis -40 KPX Agrave C -30 KPX Agrave Cacute -30 KPX Agrave Ccaron -30 KPX Agrave Ccedilla -30 KPX Agrave G -30 KPX Agrave Gbreve -30 KPX Agrave Gcommaaccent -30 KPX Agrave O -30 KPX Agrave Oacute -30 KPX Agrave Ocircumflex -30 KPX Agrave Odieresis -30 KPX Agrave Ograve -30 KPX Agrave Ohungarumlaut -30 KPX Agrave Omacron -30 KPX Agrave Oslash -30 KPX Agrave Otilde -30 KPX Agrave Q -30 KPX Agrave T -120 KPX Agrave Tcaron -120 KPX Agrave Tcommaaccent -120 KPX Agrave U -50 KPX Agrave Uacute -50 KPX Agrave Ucircumflex -50 KPX Agrave Udieresis -50 KPX Agrave Ugrave -50 KPX Agrave Uhungarumlaut -50 KPX Agrave Umacron -50 KPX Agrave Uogonek -50 KPX Agrave Uring -50 KPX Agrave V -70 KPX Agrave W -50 KPX Agrave Y -100 KPX Agrave Yacute -100 KPX Agrave Ydieresis -100 KPX Agrave u -30 KPX Agrave uacute -30 KPX Agrave ucircumflex -30 KPX Agrave udieresis -30 KPX Agrave ugrave -30 KPX Agrave uhungarumlaut -30 KPX Agrave umacron -30 KPX Agrave uogonek -30 KPX Agrave uring -30 KPX Agrave v -40 KPX Agrave w -40 KPX Agrave y -40 KPX Agrave yacute -40 KPX Agrave ydieresis -40 KPX Amacron C -30 KPX Amacron Cacute -30 KPX Amacron Ccaron -30 KPX Amacron Ccedilla -30 KPX Amacron G -30 KPX Amacron Gbreve -30 KPX Amacron Gcommaaccent -30 KPX Amacron O -30 KPX Amacron Oacute -30 KPX Amacron Ocircumflex -30 KPX Amacron Odieresis -30 KPX Amacron Ograve -30 KPX Amacron Ohungarumlaut -30 KPX Amacron Omacron -30 KPX Amacron Oslash -30 KPX Amacron Otilde -30 KPX Amacron Q -30 KPX Amacron T -120 KPX Amacron Tcaron -120 KPX Amacron Tcommaaccent -120 KPX Amacron U -50 KPX Amacron Uacute -50 KPX Amacron Ucircumflex -50 KPX Amacron Udieresis -50 KPX Amacron Ugrave -50 KPX Amacron Uhungarumlaut -50 KPX Amacron Umacron -50 KPX Amacron Uogonek -50 KPX Amacron Uring -50 KPX Amacron V -70 KPX Amacron W -50 KPX Amacron Y -100 KPX Amacron Yacute -100 KPX Amacron Ydieresis -100 KPX Amacron u -30 KPX Amacron uacute -30 KPX Amacron ucircumflex -30 KPX Amacron udieresis -30 KPX Amacron ugrave -30 KPX Amacron uhungarumlaut -30 KPX Amacron umacron -30 KPX Amacron uogonek -30 KPX Amacron uring -30 KPX Amacron v -40 KPX Amacron w -40 KPX Amacron y -40 KPX Amacron yacute -40 KPX Amacron ydieresis -40 KPX Aogonek C -30 KPX Aogonek Cacute -30 KPX Aogonek Ccaron -30 KPX Aogonek Ccedilla -30 KPX Aogonek G -30 KPX Aogonek Gbreve -30 KPX Aogonek Gcommaaccent -30 KPX Aogonek O -30 KPX Aogonek Oacute -30 KPX Aogonek Ocircumflex -30 KPX Aogonek Odieresis -30 KPX Aogonek Ograve -30 KPX Aogonek Ohungarumlaut -30 KPX Aogonek Omacron -30 KPX Aogonek Oslash -30 KPX Aogonek Otilde -30 KPX Aogonek Q -30 KPX Aogonek T -120 KPX Aogonek Tcaron -120 KPX Aogonek Tcommaaccent -120 KPX Aogonek U -50 KPX Aogonek Uacute -50 KPX Aogonek Ucircumflex -50 KPX Aogonek Udieresis -50 KPX Aogonek Ugrave -50 KPX Aogonek Uhungarumlaut -50 KPX Aogonek Umacron -50 KPX Aogonek Uogonek -50 KPX Aogonek Uring -50 KPX Aogonek V -70 KPX Aogonek W -50 KPX Aogonek Y -100 KPX Aogonek Yacute -100 KPX Aogonek Ydieresis -100 KPX Aogonek u -30 KPX Aogonek uacute -30 KPX Aogonek ucircumflex -30 KPX Aogonek udieresis -30 KPX Aogonek ugrave -30 KPX Aogonek uhungarumlaut -30 KPX Aogonek umacron -30 KPX Aogonek uogonek -30 KPX Aogonek uring -30 KPX Aogonek v -40 KPX Aogonek w -40 KPX Aogonek y -40 KPX Aogonek yacute -40 KPX Aogonek ydieresis -40 KPX Aring C -30 KPX Aring Cacute -30 KPX Aring Ccaron -30 KPX Aring Ccedilla -30 KPX Aring G -30 KPX Aring Gbreve -30 KPX Aring Gcommaaccent -30 KPX Aring O -30 KPX Aring Oacute -30 KPX Aring Ocircumflex -30 KPX Aring Odieresis -30 KPX Aring Ograve -30 KPX Aring Ohungarumlaut -30 KPX Aring Omacron -30 KPX Aring Oslash -30 KPX Aring Otilde -30 KPX Aring Q -30 KPX Aring T -120 KPX Aring Tcaron -120 KPX Aring Tcommaaccent -120 KPX Aring U -50 KPX Aring Uacute -50 KPX Aring Ucircumflex -50 KPX Aring Udieresis -50 KPX Aring Ugrave -50 KPX Aring Uhungarumlaut -50 KPX Aring Umacron -50 KPX Aring Uogonek -50 KPX Aring Uring -50 KPX Aring V -70 KPX Aring W -50 KPX Aring Y -100 KPX Aring Yacute -100 KPX Aring Ydieresis -100 KPX Aring u -30 KPX Aring uacute -30 KPX Aring ucircumflex -30 KPX Aring udieresis -30 KPX Aring ugrave -30 KPX Aring uhungarumlaut -30 KPX Aring umacron -30 KPX Aring uogonek -30 KPX Aring uring -30 KPX Aring v -40 KPX Aring w -40 KPX Aring y -40 KPX Aring yacute -40 KPX Aring ydieresis -40 KPX Atilde C -30 KPX Atilde Cacute -30 KPX Atilde Ccaron -30 KPX Atilde Ccedilla -30 KPX Atilde G -30 KPX Atilde Gbreve -30 KPX Atilde Gcommaaccent -30 KPX Atilde O -30 KPX Atilde Oacute -30 KPX Atilde Ocircumflex -30 KPX Atilde Odieresis -30 KPX Atilde Ograve -30 KPX Atilde Ohungarumlaut -30 KPX Atilde Omacron -30 KPX Atilde Oslash -30 KPX Atilde Otilde -30 KPX Atilde Q -30 KPX Atilde T -120 KPX Atilde Tcaron -120 KPX Atilde Tcommaaccent -120 KPX Atilde U -50 KPX Atilde Uacute -50 KPX Atilde Ucircumflex -50 KPX Atilde Udieresis -50 KPX Atilde Ugrave -50 KPX Atilde Uhungarumlaut -50 KPX Atilde Umacron -50 KPX Atilde Uogonek -50 KPX Atilde Uring -50 KPX Atilde V -70 KPX Atilde W -50 KPX Atilde Y -100 KPX Atilde Yacute -100 KPX Atilde Ydieresis -100 KPX Atilde u -30 KPX Atilde uacute -30 KPX Atilde ucircumflex -30 KPX Atilde udieresis -30 KPX Atilde ugrave -30 KPX Atilde uhungarumlaut -30 KPX Atilde umacron -30 KPX Atilde uogonek -30 KPX Atilde uring -30 KPX Atilde v -40 KPX Atilde w -40 KPX Atilde y -40 KPX Atilde yacute -40 KPX Atilde ydieresis -40 KPX B U -10 KPX B Uacute -10 KPX B Ucircumflex -10 KPX B Udieresis -10 KPX B Ugrave -10 KPX B Uhungarumlaut -10 KPX B Umacron -10 KPX B Uogonek -10 KPX B Uring -10 KPX B comma -20 KPX B period -20 KPX C comma -30 KPX C period -30 KPX Cacute comma -30 KPX Cacute period -30 KPX Ccaron comma -30 KPX Ccaron period -30 KPX Ccedilla comma -30 KPX Ccedilla period -30 KPX D A -40 KPX D Aacute -40 KPX D Abreve -40 KPX D Acircumflex -40 KPX D Adieresis -40 KPX D Agrave -40 KPX D Amacron -40 KPX D Aogonek -40 KPX D Aring -40 KPX D Atilde -40 KPX D V -70 KPX D W -40 KPX D Y -90 KPX D Yacute -90 KPX D Ydieresis -90 KPX D comma -70 KPX D period -70 KPX Dcaron A -40 KPX Dcaron Aacute -40 KPX Dcaron Abreve -40 KPX Dcaron Acircumflex -40 KPX Dcaron Adieresis -40 KPX Dcaron Agrave -40 KPX Dcaron Amacron -40 KPX Dcaron Aogonek -40 KPX Dcaron Aring -40 KPX Dcaron Atilde -40 KPX Dcaron V -70 KPX Dcaron W -40 KPX Dcaron Y -90 KPX Dcaron Yacute -90 KPX Dcaron Ydieresis -90 KPX Dcaron comma -70 KPX Dcaron period -70 KPX Dcroat A -40 KPX Dcroat Aacute -40 KPX Dcroat Abreve -40 KPX Dcroat Acircumflex -40 KPX Dcroat Adieresis -40 KPX Dcroat Agrave -40 KPX Dcroat Amacron -40 KPX Dcroat Aogonek -40 KPX Dcroat Aring -40 KPX Dcroat Atilde -40 KPX Dcroat V -70 KPX Dcroat W -40 KPX Dcroat Y -90 KPX Dcroat Yacute -90 KPX Dcroat Ydieresis -90 KPX Dcroat comma -70 KPX Dcroat period -70 KPX F A -80 KPX F Aacute -80 KPX F Abreve -80 KPX F Acircumflex -80 KPX F Adieresis -80 KPX F Agrave -80 KPX F Amacron -80 KPX F Aogonek -80 KPX F Aring -80 KPX F Atilde -80 KPX F a -50 KPX F aacute -50 KPX F abreve -50 KPX F acircumflex -50 KPX F adieresis -50 KPX F agrave -50 KPX F amacron -50 KPX F aogonek -50 KPX F aring -50 KPX F atilde -50 KPX F comma -150 KPX F e -30 KPX F eacute -30 KPX F ecaron -30 KPX F ecircumflex -30 KPX F edieresis -30 KPX F edotaccent -30 KPX F egrave -30 KPX F emacron -30 KPX F eogonek -30 KPX F o -30 KPX F oacute -30 KPX F ocircumflex -30 KPX F odieresis -30 KPX F ograve -30 KPX F ohungarumlaut -30 KPX F omacron -30 KPX F oslash -30 KPX F otilde -30 KPX F period -150 KPX F r -45 KPX F racute -45 KPX F rcaron -45 KPX F rcommaaccent -45 KPX J A -20 KPX J Aacute -20 KPX J Abreve -20 KPX J Acircumflex -20 KPX J Adieresis -20 KPX J Agrave -20 KPX J Amacron -20 KPX J Aogonek -20 KPX J Aring -20 KPX J Atilde -20 KPX J a -20 KPX J aacute -20 KPX J abreve -20 KPX J acircumflex -20 KPX J adieresis -20 KPX J agrave -20 KPX J amacron -20 KPX J aogonek -20 KPX J aring -20 KPX J atilde -20 KPX J comma -30 KPX J period -30 KPX J u -20 KPX J uacute -20 KPX J ucircumflex -20 KPX J udieresis -20 KPX J ugrave -20 KPX J uhungarumlaut -20 KPX J umacron -20 KPX J uogonek -20 KPX J uring -20 KPX K O -50 KPX K Oacute -50 KPX K Ocircumflex -50 KPX K Odieresis -50 KPX K Ograve -50 KPX K Ohungarumlaut -50 KPX K Omacron -50 KPX K Oslash -50 KPX K Otilde -50 KPX K e -40 KPX K eacute -40 KPX K ecaron -40 KPX K ecircumflex -40 KPX K edieresis -40 KPX K edotaccent -40 KPX K egrave -40 KPX K emacron -40 KPX K eogonek -40 KPX K o -40 KPX K oacute -40 KPX K ocircumflex -40 KPX K odieresis -40 KPX K ograve -40 KPX K ohungarumlaut -40 KPX K omacron -40 KPX K oslash -40 KPX K otilde -40 KPX K u -30 KPX K uacute -30 KPX K ucircumflex -30 KPX K udieresis -30 KPX K ugrave -30 KPX K uhungarumlaut -30 KPX K umacron -30 KPX K uogonek -30 KPX K uring -30 KPX K y -50 KPX K yacute -50 KPX K ydieresis -50 KPX Kcommaaccent O -50 KPX Kcommaaccent Oacute -50 KPX Kcommaaccent Ocircumflex -50 KPX Kcommaaccent Odieresis -50 KPX Kcommaaccent Ograve -50 KPX Kcommaaccent Ohungarumlaut -50 KPX Kcommaaccent Omacron -50 KPX Kcommaaccent Oslash -50 KPX Kcommaaccent Otilde -50 KPX Kcommaaccent e -40 KPX Kcommaaccent eacute -40 KPX Kcommaaccent ecaron -40 KPX Kcommaaccent ecircumflex -40 KPX Kcommaaccent edieresis -40 KPX Kcommaaccent edotaccent -40 KPX Kcommaaccent egrave -40 KPX Kcommaaccent emacron -40 KPX Kcommaaccent eogonek -40 KPX Kcommaaccent o -40 KPX Kcommaaccent oacute -40 KPX Kcommaaccent ocircumflex -40 KPX Kcommaaccent odieresis -40 KPX Kcommaaccent ograve -40 KPX Kcommaaccent ohungarumlaut -40 KPX Kcommaaccent omacron -40 KPX Kcommaaccent oslash -40 KPX Kcommaaccent otilde -40 KPX Kcommaaccent u -30 KPX Kcommaaccent uacute -30 KPX Kcommaaccent ucircumflex -30 KPX Kcommaaccent udieresis -30 KPX Kcommaaccent ugrave -30 KPX Kcommaaccent uhungarumlaut -30 KPX Kcommaaccent umacron -30 KPX Kcommaaccent uogonek -30 KPX Kcommaaccent uring -30 KPX Kcommaaccent y -50 KPX Kcommaaccent yacute -50 KPX Kcommaaccent ydieresis -50 KPX L T -110 KPX L Tcaron -110 KPX L Tcommaaccent -110 KPX L V -110 KPX L W -70 KPX L Y -140 KPX L Yacute -140 KPX L Ydieresis -140 KPX L quotedblright -140 KPX L quoteright -160 KPX L y -30 KPX L yacute -30 KPX L ydieresis -30 KPX Lacute T -110 KPX Lacute Tcaron -110 KPX Lacute Tcommaaccent -110 KPX Lacute V -110 KPX Lacute W -70 KPX Lacute Y -140 KPX Lacute Yacute -140 KPX Lacute Ydieresis -140 KPX Lacute quotedblright -140 KPX Lacute quoteright -160 KPX Lacute y -30 KPX Lacute yacute -30 KPX Lacute ydieresis -30 KPX Lcaron T -110 KPX Lcaron Tcaron -110 KPX Lcaron Tcommaaccent -110 KPX Lcaron V -110 KPX Lcaron W -70 KPX Lcaron Y -140 KPX Lcaron Yacute -140 KPX Lcaron Ydieresis -140 KPX Lcaron quotedblright -140 KPX Lcaron quoteright -160 KPX Lcaron y -30 KPX Lcaron yacute -30 KPX Lcaron ydieresis -30 KPX Lcommaaccent T -110 KPX Lcommaaccent Tcaron -110 KPX Lcommaaccent Tcommaaccent -110 KPX Lcommaaccent V -110 KPX Lcommaaccent W -70 KPX Lcommaaccent Y -140 KPX Lcommaaccent Yacute -140 KPX Lcommaaccent Ydieresis -140 KPX Lcommaaccent quotedblright -140 KPX Lcommaaccent quoteright -160 KPX Lcommaaccent y -30 KPX Lcommaaccent yacute -30 KPX Lcommaaccent ydieresis -30 KPX Lslash T -110 KPX Lslash Tcaron -110 KPX Lslash Tcommaaccent -110 KPX Lslash V -110 KPX Lslash W -70 KPX Lslash Y -140 KPX Lslash Yacute -140 KPX Lslash Ydieresis -140 KPX Lslash quotedblright -140 KPX Lslash quoteright -160 KPX Lslash y -30 KPX Lslash yacute -30 KPX Lslash ydieresis -30 KPX O A -20 KPX O Aacute -20 KPX O Abreve -20 KPX O Acircumflex -20 KPX O Adieresis -20 KPX O Agrave -20 KPX O Amacron -20 KPX O Aogonek -20 KPX O Aring -20 KPX O Atilde -20 KPX O T -40 KPX O Tcaron -40 KPX O Tcommaaccent -40 KPX O V -50 KPX O W -30 KPX O X -60 KPX O Y -70 KPX O Yacute -70 KPX O Ydieresis -70 KPX O comma -40 KPX O period -40 KPX Oacute A -20 KPX Oacute Aacute -20 KPX Oacute Abreve -20 KPX Oacute Acircumflex -20 KPX Oacute Adieresis -20 KPX Oacute Agrave -20 KPX Oacute Amacron -20 KPX Oacute Aogonek -20 KPX Oacute Aring -20 KPX Oacute Atilde -20 KPX Oacute T -40 KPX Oacute Tcaron -40 KPX Oacute Tcommaaccent -40 KPX Oacute V -50 KPX Oacute W -30 KPX Oacute X -60 KPX Oacute Y -70 KPX Oacute Yacute -70 KPX Oacute Ydieresis -70 KPX Oacute comma -40 KPX Oacute period -40 KPX Ocircumflex A -20 KPX Ocircumflex Aacute -20 KPX Ocircumflex Abreve -20 KPX Ocircumflex Acircumflex -20 KPX Ocircumflex Adieresis -20 KPX Ocircumflex Agrave -20 KPX Ocircumflex Amacron -20 KPX Ocircumflex Aogonek -20 KPX Ocircumflex Aring -20 KPX Ocircumflex Atilde -20 KPX Ocircumflex T -40 KPX Ocircumflex Tcaron -40 KPX Ocircumflex Tcommaaccent -40 KPX Ocircumflex V -50 KPX Ocircumflex W -30 KPX Ocircumflex X -60 KPX Ocircumflex Y -70 KPX Ocircumflex Yacute -70 KPX Ocircumflex Ydieresis -70 KPX Ocircumflex comma -40 KPX Ocircumflex period -40 KPX Odieresis A -20 KPX Odieresis Aacute -20 KPX Odieresis Abreve -20 KPX Odieresis Acircumflex -20 KPX Odieresis Adieresis -20 KPX Odieresis Agrave -20 KPX Odieresis Amacron -20 KPX Odieresis Aogonek -20 KPX Odieresis Aring -20 KPX Odieresis Atilde -20 KPX Odieresis T -40 KPX Odieresis Tcaron -40 KPX Odieresis Tcommaaccent -40 KPX Odieresis V -50 KPX Odieresis W -30 KPX Odieresis X -60 KPX Odieresis Y -70 KPX Odieresis Yacute -70 KPX Odieresis Ydieresis -70 KPX Odieresis comma -40 KPX Odieresis period -40 KPX Ograve A -20 KPX Ograve Aacute -20 KPX Ograve Abreve -20 KPX Ograve Acircumflex -20 KPX Ograve Adieresis -20 KPX Ograve Agrave -20 KPX Ograve Amacron -20 KPX Ograve Aogonek -20 KPX Ograve Aring -20 KPX Ograve Atilde -20 KPX Ograve T -40 KPX Ograve Tcaron -40 KPX Ograve Tcommaaccent -40 KPX Ograve V -50 KPX Ograve W -30 KPX Ograve X -60 KPX Ograve Y -70 KPX Ograve Yacute -70 KPX Ograve Ydieresis -70 KPX Ograve comma -40 KPX Ograve period -40 KPX Ohungarumlaut A -20 KPX Ohungarumlaut Aacute -20 KPX Ohungarumlaut Abreve -20 KPX Ohungarumlaut Acircumflex -20 KPX Ohungarumlaut Adieresis -20 KPX Ohungarumlaut Agrave -20 KPX Ohungarumlaut Amacron -20 KPX Ohungarumlaut Aogonek -20 KPX Ohungarumlaut Aring -20 KPX Ohungarumlaut Atilde -20 KPX Ohungarumlaut T -40 KPX Ohungarumlaut Tcaron -40 KPX Ohungarumlaut Tcommaaccent -40 KPX Ohungarumlaut V -50 KPX Ohungarumlaut W -30 KPX Ohungarumlaut X -60 KPX Ohungarumlaut Y -70 KPX Ohungarumlaut Yacute -70 KPX Ohungarumlaut Ydieresis -70 KPX Ohungarumlaut comma -40 KPX Ohungarumlaut period -40 KPX Omacron A -20 KPX Omacron Aacute -20 KPX Omacron Abreve -20 KPX Omacron Acircumflex -20 KPX Omacron Adieresis -20 KPX Omacron Agrave -20 KPX Omacron Amacron -20 KPX Omacron Aogonek -20 KPX Omacron Aring -20 KPX Omacron Atilde -20 KPX Omacron T -40 KPX Omacron Tcaron -40 KPX Omacron Tcommaaccent -40 KPX Omacron V -50 KPX Omacron W -30 KPX Omacron X -60 KPX Omacron Y -70 KPX Omacron Yacute -70 KPX Omacron Ydieresis -70 KPX Omacron comma -40 KPX Omacron period -40 KPX Oslash A -20 KPX Oslash Aacute -20 KPX Oslash Abreve -20 KPX Oslash Acircumflex -20 KPX Oslash Adieresis -20 KPX Oslash Agrave -20 KPX Oslash Amacron -20 KPX Oslash Aogonek -20 KPX Oslash Aring -20 KPX Oslash Atilde -20 KPX Oslash T -40 KPX Oslash Tcaron -40 KPX Oslash Tcommaaccent -40 KPX Oslash V -50 KPX Oslash W -30 KPX Oslash X -60 KPX Oslash Y -70 KPX Oslash Yacute -70 KPX Oslash Ydieresis -70 KPX Oslash comma -40 KPX Oslash period -40 KPX Otilde A -20 KPX Otilde Aacute -20 KPX Otilde Abreve -20 KPX Otilde Acircumflex -20 KPX Otilde Adieresis -20 KPX Otilde Agrave -20 KPX Otilde Amacron -20 KPX Otilde Aogonek -20 KPX Otilde Aring -20 KPX Otilde Atilde -20 KPX Otilde T -40 KPX Otilde Tcaron -40 KPX Otilde Tcommaaccent -40 KPX Otilde V -50 KPX Otilde W -30 KPX Otilde X -60 KPX Otilde Y -70 KPX Otilde Yacute -70 KPX Otilde Ydieresis -70 KPX Otilde comma -40 KPX Otilde period -40 KPX P A -120 KPX P Aacute -120 KPX P Abreve -120 KPX P Acircumflex -120 KPX P Adieresis -120 KPX P Agrave -120 KPX P Amacron -120 KPX P Aogonek -120 KPX P Aring -120 KPX P Atilde -120 KPX P a -40 KPX P aacute -40 KPX P abreve -40 KPX P acircumflex -40 KPX P adieresis -40 KPX P agrave -40 KPX P amacron -40 KPX P aogonek -40 KPX P aring -40 KPX P atilde -40 KPX P comma -180 KPX P e -50 KPX P eacute -50 KPX P ecaron -50 KPX P ecircumflex -50 KPX P edieresis -50 KPX P edotaccent -50 KPX P egrave -50 KPX P emacron -50 KPX P eogonek -50 KPX P o -50 KPX P oacute -50 KPX P ocircumflex -50 KPX P odieresis -50 KPX P ograve -50 KPX P ohungarumlaut -50 KPX P omacron -50 KPX P oslash -50 KPX P otilde -50 KPX P period -180 KPX Q U -10 KPX Q Uacute -10 KPX Q Ucircumflex -10 KPX Q Udieresis -10 KPX Q Ugrave -10 KPX Q Uhungarumlaut -10 KPX Q Umacron -10 KPX Q Uogonek -10 KPX Q Uring -10 KPX R O -20 KPX R Oacute -20 KPX R Ocircumflex -20 KPX R Odieresis -20 KPX R Ograve -20 KPX R Ohungarumlaut -20 KPX R Omacron -20 KPX R Oslash -20 KPX R Otilde -20 KPX R T -30 KPX R Tcaron -30 KPX R Tcommaaccent -30 KPX R U -40 KPX R Uacute -40 KPX R Ucircumflex -40 KPX R Udieresis -40 KPX R Ugrave -40 KPX R Uhungarumlaut -40 KPX R Umacron -40 KPX R Uogonek -40 KPX R Uring -40 KPX R V -50 KPX R W -30 KPX R Y -50 KPX R Yacute -50 KPX R Ydieresis -50 KPX Racute O -20 KPX Racute Oacute -20 KPX Racute Ocircumflex -20 KPX Racute Odieresis -20 KPX Racute Ograve -20 KPX Racute Ohungarumlaut -20 KPX Racute Omacron -20 KPX Racute Oslash -20 KPX Racute Otilde -20 KPX Racute T -30 KPX Racute Tcaron -30 KPX Racute Tcommaaccent -30 KPX Racute U -40 KPX Racute Uacute -40 KPX Racute Ucircumflex -40 KPX Racute Udieresis -40 KPX Racute Ugrave -40 KPX Racute Uhungarumlaut -40 KPX Racute Umacron -40 KPX Racute Uogonek -40 KPX Racute Uring -40 KPX Racute V -50 KPX Racute W -30 KPX Racute Y -50 KPX Racute Yacute -50 KPX Racute Ydieresis -50 KPX Rcaron O -20 KPX Rcaron Oacute -20 KPX Rcaron Ocircumflex -20 KPX Rcaron Odieresis -20 KPX Rcaron Ograve -20 KPX Rcaron Ohungarumlaut -20 KPX Rcaron Omacron -20 KPX Rcaron Oslash -20 KPX Rcaron Otilde -20 KPX Rcaron T -30 KPX Rcaron Tcaron -30 KPX Rcaron Tcommaaccent -30 KPX Rcaron U -40 KPX Rcaron Uacute -40 KPX Rcaron Ucircumflex -40 KPX Rcaron Udieresis -40 KPX Rcaron Ugrave -40 KPX Rcaron Uhungarumlaut -40 KPX Rcaron Umacron -40 KPX Rcaron Uogonek -40 KPX Rcaron Uring -40 KPX Rcaron V -50 KPX Rcaron W -30 KPX Rcaron Y -50 KPX Rcaron Yacute -50 KPX Rcaron Ydieresis -50 KPX Rcommaaccent O -20 KPX Rcommaaccent Oacute -20 KPX Rcommaaccent Ocircumflex -20 KPX Rcommaaccent Odieresis -20 KPX Rcommaaccent Ograve -20 KPX Rcommaaccent Ohungarumlaut -20 KPX Rcommaaccent Omacron -20 KPX Rcommaaccent Oslash -20 KPX Rcommaaccent Otilde -20 KPX Rcommaaccent T -30 KPX Rcommaaccent Tcaron -30 KPX Rcommaaccent Tcommaaccent -30 KPX Rcommaaccent U -40 KPX Rcommaaccent Uacute -40 KPX Rcommaaccent Ucircumflex -40 KPX Rcommaaccent Udieresis -40 KPX Rcommaaccent Ugrave -40 KPX Rcommaaccent Uhungarumlaut -40 KPX Rcommaaccent Umacron -40 KPX Rcommaaccent Uogonek -40 KPX Rcommaaccent Uring -40 KPX Rcommaaccent V -50 KPX Rcommaaccent W -30 KPX Rcommaaccent Y -50 KPX Rcommaaccent Yacute -50 KPX Rcommaaccent Ydieresis -50 KPX S comma -20 KPX S period -20 KPX Sacute comma -20 KPX Sacute period -20 KPX Scaron comma -20 KPX Scaron period -20 KPX Scedilla comma -20 KPX Scedilla period -20 KPX Scommaaccent comma -20 KPX Scommaaccent period -20 KPX T A -120 KPX T Aacute -120 KPX T Abreve -120 KPX T Acircumflex -120 KPX T Adieresis -120 KPX T Agrave -120 KPX T Amacron -120 KPX T Aogonek -120 KPX T Aring -120 KPX T Atilde -120 KPX T O -40 KPX T Oacute -40 KPX T Ocircumflex -40 KPX T Odieresis -40 KPX T Ograve -40 KPX T Ohungarumlaut -40 KPX T Omacron -40 KPX T Oslash -40 KPX T Otilde -40 KPX T a -120 KPX T aacute -120 KPX T abreve -60 KPX T acircumflex -120 KPX T adieresis -120 KPX T agrave -120 KPX T amacron -60 KPX T aogonek -120 KPX T aring -120 KPX T atilde -60 KPX T colon -20 KPX T comma -120 KPX T e -120 KPX T eacute -120 KPX T ecaron -120 KPX T ecircumflex -120 KPX T edieresis -120 KPX T edotaccent -120 KPX T egrave -60 KPX T emacron -60 KPX T eogonek -120 KPX T hyphen -140 KPX T o -120 KPX T oacute -120 KPX T ocircumflex -120 KPX T odieresis -120 KPX T ograve -120 KPX T ohungarumlaut -120 KPX T omacron -60 KPX T oslash -120 KPX T otilde -60 KPX T period -120 KPX T r -120 KPX T racute -120 KPX T rcaron -120 KPX T rcommaaccent -120 KPX T semicolon -20 KPX T u -120 KPX T uacute -120 KPX T ucircumflex -120 KPX T udieresis -120 KPX T ugrave -120 KPX T uhungarumlaut -120 KPX T umacron -60 KPX T uogonek -120 KPX T uring -120 KPX T w -120 KPX T y -120 KPX T yacute -120 KPX T ydieresis -60 KPX Tcaron A -120 KPX Tcaron Aacute -120 KPX Tcaron Abreve -120 KPX Tcaron Acircumflex -120 KPX Tcaron Adieresis -120 KPX Tcaron Agrave -120 KPX Tcaron Amacron -120 KPX Tcaron Aogonek -120 KPX Tcaron Aring -120 KPX Tcaron Atilde -120 KPX Tcaron O -40 KPX Tcaron Oacute -40 KPX Tcaron Ocircumflex -40 KPX Tcaron Odieresis -40 KPX Tcaron Ograve -40 KPX Tcaron Ohungarumlaut -40 KPX Tcaron Omacron -40 KPX Tcaron Oslash -40 KPX Tcaron Otilde -40 KPX Tcaron a -120 KPX Tcaron aacute -120 KPX Tcaron abreve -60 KPX Tcaron acircumflex -120 KPX Tcaron adieresis -120 KPX Tcaron agrave -120 KPX Tcaron amacron -60 KPX Tcaron aogonek -120 KPX Tcaron aring -120 KPX Tcaron atilde -60 KPX Tcaron colon -20 KPX Tcaron comma -120 KPX Tcaron e -120 KPX Tcaron eacute -120 KPX Tcaron ecaron -120 KPX Tcaron ecircumflex -120 KPX Tcaron edieresis -120 KPX Tcaron edotaccent -120 KPX Tcaron egrave -60 KPX Tcaron emacron -60 KPX Tcaron eogonek -120 KPX Tcaron hyphen -140 KPX Tcaron o -120 KPX Tcaron oacute -120 KPX Tcaron ocircumflex -120 KPX Tcaron odieresis -120 KPX Tcaron ograve -120 KPX Tcaron ohungarumlaut -120 KPX Tcaron omacron -60 KPX Tcaron oslash -120 KPX Tcaron otilde -60 KPX Tcaron period -120 KPX Tcaron r -120 KPX Tcaron racute -120 KPX Tcaron rcaron -120 KPX Tcaron rcommaaccent -120 KPX Tcaron semicolon -20 KPX Tcaron u -120 KPX Tcaron uacute -120 KPX Tcaron ucircumflex -120 KPX Tcaron udieresis -120 KPX Tcaron ugrave -120 KPX Tcaron uhungarumlaut -120 KPX Tcaron umacron -60 KPX Tcaron uogonek -120 KPX Tcaron uring -120 KPX Tcaron w -120 KPX Tcaron y -120 KPX Tcaron yacute -120 KPX Tcaron ydieresis -60 KPX Tcommaaccent A -120 KPX Tcommaaccent Aacute -120 KPX Tcommaaccent Abreve -120 KPX Tcommaaccent Acircumflex -120 KPX Tcommaaccent Adieresis -120 KPX Tcommaaccent Agrave -120 KPX Tcommaaccent Amacron -120 KPX Tcommaaccent Aogonek -120 KPX Tcommaaccent Aring -120 KPX Tcommaaccent Atilde -120 KPX Tcommaaccent O -40 KPX Tcommaaccent Oacute -40 KPX Tcommaaccent Ocircumflex -40 KPX Tcommaaccent Odieresis -40 KPX Tcommaaccent Ograve -40 KPX Tcommaaccent Ohungarumlaut -40 KPX Tcommaaccent Omacron -40 KPX Tcommaaccent Oslash -40 KPX Tcommaaccent Otilde -40 KPX Tcommaaccent a -120 KPX Tcommaaccent aacute -120 KPX Tcommaaccent abreve -60 KPX Tcommaaccent acircumflex -120 KPX Tcommaaccent adieresis -120 KPX Tcommaaccent agrave -120 KPX Tcommaaccent amacron -60 KPX Tcommaaccent aogonek -120 KPX Tcommaaccent aring -120 KPX Tcommaaccent atilde -60 KPX Tcommaaccent colon -20 KPX Tcommaaccent comma -120 KPX Tcommaaccent e -120 KPX Tcommaaccent eacute -120 KPX Tcommaaccent ecaron -120 KPX Tcommaaccent ecircumflex -120 KPX Tcommaaccent edieresis -120 KPX Tcommaaccent edotaccent -120 KPX Tcommaaccent egrave -60 KPX Tcommaaccent emacron -60 KPX Tcommaaccent eogonek -120 KPX Tcommaaccent hyphen -140 KPX Tcommaaccent o -120 KPX Tcommaaccent oacute -120 KPX Tcommaaccent ocircumflex -120 KPX Tcommaaccent odieresis -120 KPX Tcommaaccent ograve -120 KPX Tcommaaccent ohungarumlaut -120 KPX Tcommaaccent omacron -60 KPX Tcommaaccent oslash -120 KPX Tcommaaccent otilde -60 KPX Tcommaaccent period -120 KPX Tcommaaccent r -120 KPX Tcommaaccent racute -120 KPX Tcommaaccent rcaron -120 KPX Tcommaaccent rcommaaccent -120 KPX Tcommaaccent semicolon -20 KPX Tcommaaccent u -120 KPX Tcommaaccent uacute -120 KPX Tcommaaccent ucircumflex -120 KPX Tcommaaccent udieresis -120 KPX Tcommaaccent ugrave -120 KPX Tcommaaccent uhungarumlaut -120 KPX Tcommaaccent umacron -60 KPX Tcommaaccent uogonek -120 KPX Tcommaaccent uring -120 KPX Tcommaaccent w -120 KPX Tcommaaccent y -120 KPX Tcommaaccent yacute -120 KPX Tcommaaccent ydieresis -60 KPX U A -40 KPX U Aacute -40 KPX U Abreve -40 KPX U Acircumflex -40 KPX U Adieresis -40 KPX U Agrave -40 KPX U Amacron -40 KPX U Aogonek -40 KPX U Aring -40 KPX U Atilde -40 KPX U comma -40 KPX U period -40 KPX Uacute A -40 KPX Uacute Aacute -40 KPX Uacute Abreve -40 KPX Uacute Acircumflex -40 KPX Uacute Adieresis -40 KPX Uacute Agrave -40 KPX Uacute Amacron -40 KPX Uacute Aogonek -40 KPX Uacute Aring -40 KPX Uacute Atilde -40 KPX Uacute comma -40 KPX Uacute period -40 KPX Ucircumflex A -40 KPX Ucircumflex Aacute -40 KPX Ucircumflex Abreve -40 KPX Ucircumflex Acircumflex -40 KPX Ucircumflex Adieresis -40 KPX Ucircumflex Agrave -40 KPX Ucircumflex Amacron -40 KPX Ucircumflex Aogonek -40 KPX Ucircumflex Aring -40 KPX Ucircumflex Atilde -40 KPX Ucircumflex comma -40 KPX Ucircumflex period -40 KPX Udieresis A -40 KPX Udieresis Aacute -40 KPX Udieresis Abreve -40 KPX Udieresis Acircumflex -40 KPX Udieresis Adieresis -40 KPX Udieresis Agrave -40 KPX Udieresis Amacron -40 KPX Udieresis Aogonek -40 KPX Udieresis Aring -40 KPX Udieresis Atilde -40 KPX Udieresis comma -40 KPX Udieresis period -40 KPX Ugrave A -40 KPX Ugrave Aacute -40 KPX Ugrave Abreve -40 KPX Ugrave Acircumflex -40 KPX Ugrave Adieresis -40 KPX Ugrave Agrave -40 KPX Ugrave Amacron -40 KPX Ugrave Aogonek -40 KPX Ugrave Aring -40 KPX Ugrave Atilde -40 KPX Ugrave comma -40 KPX Ugrave period -40 KPX Uhungarumlaut A -40 KPX Uhungarumlaut Aacute -40 KPX Uhungarumlaut Abreve -40 KPX Uhungarumlaut Acircumflex -40 KPX Uhungarumlaut Adieresis -40 KPX Uhungarumlaut Agrave -40 KPX Uhungarumlaut Amacron -40 KPX Uhungarumlaut Aogonek -40 KPX Uhungarumlaut Aring -40 KPX Uhungarumlaut Atilde -40 KPX Uhungarumlaut comma -40 KPX Uhungarumlaut period -40 KPX Umacron A -40 KPX Umacron Aacute -40 KPX Umacron Abreve -40 KPX Umacron Acircumflex -40 KPX Umacron Adieresis -40 KPX Umacron Agrave -40 KPX Umacron Amacron -40 KPX Umacron Aogonek -40 KPX Umacron Aring -40 KPX Umacron Atilde -40 KPX Umacron comma -40 KPX Umacron period -40 KPX Uogonek A -40 KPX Uogonek Aacute -40 KPX Uogonek Abreve -40 KPX Uogonek Acircumflex -40 KPX Uogonek Adieresis -40 KPX Uogonek Agrave -40 KPX Uogonek Amacron -40 KPX Uogonek Aogonek -40 KPX Uogonek Aring -40 KPX Uogonek Atilde -40 KPX Uogonek comma -40 KPX Uogonek period -40 KPX Uring A -40 KPX Uring Aacute -40 KPX Uring Abreve -40 KPX Uring Acircumflex -40 KPX Uring Adieresis -40 KPX Uring Agrave -40 KPX Uring Amacron -40 KPX Uring Aogonek -40 KPX Uring Aring -40 KPX Uring Atilde -40 KPX Uring comma -40 KPX Uring period -40 KPX V A -80 KPX V Aacute -80 KPX V Abreve -80 KPX V Acircumflex -80 KPX V Adieresis -80 KPX V Agrave -80 KPX V Amacron -80 KPX V Aogonek -80 KPX V Aring -80 KPX V Atilde -80 KPX V G -40 KPX V Gbreve -40 KPX V Gcommaaccent -40 KPX V O -40 KPX V Oacute -40 KPX V Ocircumflex -40 KPX V Odieresis -40 KPX V Ograve -40 KPX V Ohungarumlaut -40 KPX V Omacron -40 KPX V Oslash -40 KPX V Otilde -40 KPX V a -70 KPX V aacute -70 KPX V abreve -70 KPX V acircumflex -70 KPX V adieresis -70 KPX V agrave -70 KPX V amacron -70 KPX V aogonek -70 KPX V aring -70 KPX V atilde -70 KPX V colon -40 KPX V comma -125 KPX V e -80 KPX V eacute -80 KPX V ecaron -80 KPX V ecircumflex -80 KPX V edieresis -80 KPX V edotaccent -80 KPX V egrave -80 KPX V emacron -80 KPX V eogonek -80 KPX V hyphen -80 KPX V o -80 KPX V oacute -80 KPX V ocircumflex -80 KPX V odieresis -80 KPX V ograve -80 KPX V ohungarumlaut -80 KPX V omacron -80 KPX V oslash -80 KPX V otilde -80 KPX V period -125 KPX V semicolon -40 KPX V u -70 KPX V uacute -70 KPX V ucircumflex -70 KPX V udieresis -70 KPX V ugrave -70 KPX V uhungarumlaut -70 KPX V umacron -70 KPX V uogonek -70 KPX V uring -70 KPX W A -50 KPX W Aacute -50 KPX W Abreve -50 KPX W Acircumflex -50 KPX W Adieresis -50 KPX W Agrave -50 KPX W Amacron -50 KPX W Aogonek -50 KPX W Aring -50 KPX W Atilde -50 KPX W O -20 KPX W Oacute -20 KPX W Ocircumflex -20 KPX W Odieresis -20 KPX W Ograve -20 KPX W Ohungarumlaut -20 KPX W Omacron -20 KPX W Oslash -20 KPX W Otilde -20 KPX W a -40 KPX W aacute -40 KPX W abreve -40 KPX W acircumflex -40 KPX W adieresis -40 KPX W agrave -40 KPX W amacron -40 KPX W aogonek -40 KPX W aring -40 KPX W atilde -40 KPX W comma -80 KPX W e -30 KPX W eacute -30 KPX W ecaron -30 KPX W ecircumflex -30 KPX W edieresis -30 KPX W edotaccent -30 KPX W egrave -30 KPX W emacron -30 KPX W eogonek -30 KPX W hyphen -40 KPX W o -30 KPX W oacute -30 KPX W ocircumflex -30 KPX W odieresis -30 KPX W ograve -30 KPX W ohungarumlaut -30 KPX W omacron -30 KPX W oslash -30 KPX W otilde -30 KPX W period -80 KPX W u -30 KPX W uacute -30 KPX W ucircumflex -30 KPX W udieresis -30 KPX W ugrave -30 KPX W uhungarumlaut -30 KPX W umacron -30 KPX W uogonek -30 KPX W uring -30 KPX W y -20 KPX W yacute -20 KPX W ydieresis -20 KPX Y A -110 KPX Y Aacute -110 KPX Y Abreve -110 KPX Y Acircumflex -110 KPX Y Adieresis -110 KPX Y Agrave -110 KPX Y Amacron -110 KPX Y Aogonek -110 KPX Y Aring -110 KPX Y Atilde -110 KPX Y O -85 KPX Y Oacute -85 KPX Y Ocircumflex -85 KPX Y Odieresis -85 KPX Y Ograve -85 KPX Y Ohungarumlaut -85 KPX Y Omacron -85 KPX Y Oslash -85 KPX Y Otilde -85 KPX Y a -140 KPX Y aacute -140 KPX Y abreve -70 KPX Y acircumflex -140 KPX Y adieresis -140 KPX Y agrave -140 KPX Y amacron -70 KPX Y aogonek -140 KPX Y aring -140 KPX Y atilde -140 KPX Y colon -60 KPX Y comma -140 KPX Y e -140 KPX Y eacute -140 KPX Y ecaron -140 KPX Y ecircumflex -140 KPX Y edieresis -140 KPX Y edotaccent -140 KPX Y egrave -140 KPX Y emacron -70 KPX Y eogonek -140 KPX Y hyphen -140 KPX Y i -20 KPX Y iacute -20 KPX Y iogonek -20 KPX Y o -140 KPX Y oacute -140 KPX Y ocircumflex -140 KPX Y odieresis -140 KPX Y ograve -140 KPX Y ohungarumlaut -140 KPX Y omacron -140 KPX Y oslash -140 KPX Y otilde -140 KPX Y period -140 KPX Y semicolon -60 KPX Y u -110 KPX Y uacute -110 KPX Y ucircumflex -110 KPX Y udieresis -110 KPX Y ugrave -110 KPX Y uhungarumlaut -110 KPX Y umacron -110 KPX Y uogonek -110 KPX Y uring -110 KPX Yacute A -110 KPX Yacute Aacute -110 KPX Yacute Abreve -110 KPX Yacute Acircumflex -110 KPX Yacute Adieresis -110 KPX Yacute Agrave -110 KPX Yacute Amacron -110 KPX Yacute Aogonek -110 KPX Yacute Aring -110 KPX Yacute Atilde -110 KPX Yacute O -85 KPX Yacute Oacute -85 KPX Yacute Ocircumflex -85 KPX Yacute Odieresis -85 KPX Yacute Ograve -85 KPX Yacute Ohungarumlaut -85 KPX Yacute Omacron -85 KPX Yacute Oslash -85 KPX Yacute Otilde -85 KPX Yacute a -140 KPX Yacute aacute -140 KPX Yacute abreve -70 KPX Yacute acircumflex -140 KPX Yacute adieresis -140 KPX Yacute agrave -140 KPX Yacute amacron -70 KPX Yacute aogonek -140 KPX Yacute aring -140 KPX Yacute atilde -70 KPX Yacute colon -60 KPX Yacute comma -140 KPX Yacute e -140 KPX Yacute eacute -140 KPX Yacute ecaron -140 KPX Yacute ecircumflex -140 KPX Yacute edieresis -140 KPX Yacute edotaccent -140 KPX Yacute egrave -140 KPX Yacute emacron -70 KPX Yacute eogonek -140 KPX Yacute hyphen -140 KPX Yacute i -20 KPX Yacute iacute -20 KPX Yacute iogonek -20 KPX Yacute o -140 KPX Yacute oacute -140 KPX Yacute ocircumflex -140 KPX Yacute odieresis -140 KPX Yacute ograve -140 KPX Yacute ohungarumlaut -140 KPX Yacute omacron -70 KPX Yacute oslash -140 KPX Yacute otilde -140 KPX Yacute period -140 KPX Yacute semicolon -60 KPX Yacute u -110 KPX Yacute uacute -110 KPX Yacute ucircumflex -110 KPX Yacute udieresis -110 KPX Yacute ugrave -110 KPX Yacute uhungarumlaut -110 KPX Yacute umacron -110 KPX Yacute uogonek -110 KPX Yacute uring -110 KPX Ydieresis A -110 KPX Ydieresis Aacute -110 KPX Ydieresis Abreve -110 KPX Ydieresis Acircumflex -110 KPX Ydieresis Adieresis -110 KPX Ydieresis Agrave -110 KPX Ydieresis Amacron -110 KPX Ydieresis Aogonek -110 KPX Ydieresis Aring -110 KPX Ydieresis Atilde -110 KPX Ydieresis O -85 KPX Ydieresis Oacute -85 KPX Ydieresis Ocircumflex -85 KPX Ydieresis Odieresis -85 KPX Ydieresis Ograve -85 KPX Ydieresis Ohungarumlaut -85 KPX Ydieresis Omacron -85 KPX Ydieresis Oslash -85 KPX Ydieresis Otilde -85 KPX Ydieresis a -140 KPX Ydieresis aacute -140 KPX Ydieresis abreve -70 KPX Ydieresis acircumflex -140 KPX Ydieresis adieresis -140 KPX Ydieresis agrave -140 KPX Ydieresis amacron -70 KPX Ydieresis aogonek -140 KPX Ydieresis aring -140 KPX Ydieresis atilde -70 KPX Ydieresis colon -60 KPX Ydieresis comma -140 KPX Ydieresis e -140 KPX Ydieresis eacute -140 KPX Ydieresis ecaron -140 KPX Ydieresis ecircumflex -140 KPX Ydieresis edieresis -140 KPX Ydieresis edotaccent -140 KPX Ydieresis egrave -140 KPX Ydieresis emacron -70 KPX Ydieresis eogonek -140 KPX Ydieresis hyphen -140 KPX Ydieresis i -20 KPX Ydieresis iacute -20 KPX Ydieresis iogonek -20 KPX Ydieresis o -140 KPX Ydieresis oacute -140 KPX Ydieresis ocircumflex -140 KPX Ydieresis odieresis -140 KPX Ydieresis ograve -140 KPX Ydieresis ohungarumlaut -140 KPX Ydieresis omacron -140 KPX Ydieresis oslash -140 KPX Ydieresis otilde -140 KPX Ydieresis period -140 KPX Ydieresis semicolon -60 KPX Ydieresis u -110 KPX Ydieresis uacute -110 KPX Ydieresis ucircumflex -110 KPX Ydieresis udieresis -110 KPX Ydieresis ugrave -110 KPX Ydieresis uhungarumlaut -110 KPX Ydieresis umacron -110 KPX Ydieresis uogonek -110 KPX Ydieresis uring -110 KPX a v -20 KPX a w -20 KPX a y -30 KPX a yacute -30 KPX a ydieresis -30 KPX aacute v -20 KPX aacute w -20 KPX aacute y -30 KPX aacute yacute -30 KPX aacute ydieresis -30 KPX abreve v -20 KPX abreve w -20 KPX abreve y -30 KPX abreve yacute -30 KPX abreve ydieresis -30 KPX acircumflex v -20 KPX acircumflex w -20 KPX acircumflex y -30 KPX acircumflex yacute -30 KPX acircumflex ydieresis -30 KPX adieresis v -20 KPX adieresis w -20 KPX adieresis y -30 KPX adieresis yacute -30 KPX adieresis ydieresis -30 KPX agrave v -20 KPX agrave w -20 KPX agrave y -30 KPX agrave yacute -30 KPX agrave ydieresis -30 KPX amacron v -20 KPX amacron w -20 KPX amacron y -30 KPX amacron yacute -30 KPX amacron ydieresis -30 KPX aogonek v -20 KPX aogonek w -20 KPX aogonek y -30 KPX aogonek yacute -30 KPX aogonek ydieresis -30 KPX aring v -20 KPX aring w -20 KPX aring y -30 KPX aring yacute -30 KPX aring ydieresis -30 KPX atilde v -20 KPX atilde w -20 KPX atilde y -30 KPX atilde yacute -30 KPX atilde ydieresis -30 KPX b b -10 KPX b comma -40 KPX b l -20 KPX b lacute -20 KPX b lcommaaccent -20 KPX b lslash -20 KPX b period -40 KPX b u -20 KPX b uacute -20 KPX b ucircumflex -20 KPX b udieresis -20 KPX b ugrave -20 KPX b uhungarumlaut -20 KPX b umacron -20 KPX b uogonek -20 KPX b uring -20 KPX b v -20 KPX b y -20 KPX b yacute -20 KPX b ydieresis -20 KPX c comma -15 KPX c k -20 KPX c kcommaaccent -20 KPX cacute comma -15 KPX cacute k -20 KPX cacute kcommaaccent -20 KPX ccaron comma -15 KPX ccaron k -20 KPX ccaron kcommaaccent -20 KPX ccedilla comma -15 KPX ccedilla k -20 KPX ccedilla kcommaaccent -20 KPX colon space -50 KPX comma quotedblright -100 KPX comma quoteright -100 KPX e comma -15 KPX e period -15 KPX e v -30 KPX e w -20 KPX e x -30 KPX e y -20 KPX e yacute -20 KPX e ydieresis -20 KPX eacute comma -15 KPX eacute period -15 KPX eacute v -30 KPX eacute w -20 KPX eacute x -30 KPX eacute y -20 KPX eacute yacute -20 KPX eacute ydieresis -20 KPX ecaron comma -15 KPX ecaron period -15 KPX ecaron v -30 KPX ecaron w -20 KPX ecaron x -30 KPX ecaron y -20 KPX ecaron yacute -20 KPX ecaron ydieresis -20 KPX ecircumflex comma -15 KPX ecircumflex period -15 KPX ecircumflex v -30 KPX ecircumflex w -20 KPX ecircumflex x -30 KPX ecircumflex y -20 KPX ecircumflex yacute -20 KPX ecircumflex ydieresis -20 KPX edieresis comma -15 KPX edieresis period -15 KPX edieresis v -30 KPX edieresis w -20 KPX edieresis x -30 KPX edieresis y -20 KPX edieresis yacute -20 KPX edieresis ydieresis -20 KPX edotaccent comma -15 KPX edotaccent period -15 KPX edotaccent v -30 KPX edotaccent w -20 KPX edotaccent x -30 KPX edotaccent y -20 KPX edotaccent yacute -20 KPX edotaccent ydieresis -20 KPX egrave comma -15 KPX egrave period -15 KPX egrave v -30 KPX egrave w -20 KPX egrave x -30 KPX egrave y -20 KPX egrave yacute -20 KPX egrave ydieresis -20 KPX emacron comma -15 KPX emacron period -15 KPX emacron v -30 KPX emacron w -20 KPX emacron x -30 KPX emacron y -20 KPX emacron yacute -20 KPX emacron ydieresis -20 KPX eogonek comma -15 KPX eogonek period -15 KPX eogonek v -30 KPX eogonek w -20 KPX eogonek x -30 KPX eogonek y -20 KPX eogonek yacute -20 KPX eogonek ydieresis -20 KPX f a -30 KPX f aacute -30 KPX f abreve -30 KPX f acircumflex -30 KPX f adieresis -30 KPX f agrave -30 KPX f amacron -30 KPX f aogonek -30 KPX f aring -30 KPX f atilde -30 KPX f comma -30 KPX f dotlessi -28 KPX f e -30 KPX f eacute -30 KPX f ecaron -30 KPX f ecircumflex -30 KPX f edieresis -30 KPX f edotaccent -30 KPX f egrave -30 KPX f emacron -30 KPX f eogonek -30 KPX f o -30 KPX f oacute -30 KPX f ocircumflex -30 KPX f odieresis -30 KPX f ograve -30 KPX f ohungarumlaut -30 KPX f omacron -30 KPX f oslash -30 KPX f otilde -30 KPX f period -30 KPX f quotedblright 60 KPX f quoteright 50 KPX g r -10 KPX g racute -10 KPX g rcaron -10 KPX g rcommaaccent -10 KPX gbreve r -10 KPX gbreve racute -10 KPX gbreve rcaron -10 KPX gbreve rcommaaccent -10 KPX gcommaaccent r -10 KPX gcommaaccent racute -10 KPX gcommaaccent rcaron -10 KPX gcommaaccent rcommaaccent -10 KPX h y -30 KPX h yacute -30 KPX h ydieresis -30 KPX k e -20 KPX k eacute -20 KPX k ecaron -20 KPX k ecircumflex -20 KPX k edieresis -20 KPX k edotaccent -20 KPX k egrave -20 KPX k emacron -20 KPX k eogonek -20 KPX k o -20 KPX k oacute -20 KPX k ocircumflex -20 KPX k odieresis -20 KPX k ograve -20 KPX k ohungarumlaut -20 KPX k omacron -20 KPX k oslash -20 KPX k otilde -20 KPX kcommaaccent e -20 KPX kcommaaccent eacute -20 KPX kcommaaccent ecaron -20 KPX kcommaaccent ecircumflex -20 KPX kcommaaccent edieresis -20 KPX kcommaaccent edotaccent -20 KPX kcommaaccent egrave -20 KPX kcommaaccent emacron -20 KPX kcommaaccent eogonek -20 KPX kcommaaccent o -20 KPX kcommaaccent oacute -20 KPX kcommaaccent ocircumflex -20 KPX kcommaaccent odieresis -20 KPX kcommaaccent ograve -20 KPX kcommaaccent ohungarumlaut -20 KPX kcommaaccent omacron -20 KPX kcommaaccent oslash -20 KPX kcommaaccent otilde -20 KPX m u -10 KPX m uacute -10 KPX m ucircumflex -10 KPX m udieresis -10 KPX m ugrave -10 KPX m uhungarumlaut -10 KPX m umacron -10 KPX m uogonek -10 KPX m uring -10 KPX m y -15 KPX m yacute -15 KPX m ydieresis -15 KPX n u -10 KPX n uacute -10 KPX n ucircumflex -10 KPX n udieresis -10 KPX n ugrave -10 KPX n uhungarumlaut -10 KPX n umacron -10 KPX n uogonek -10 KPX n uring -10 KPX n v -20 KPX n y -15 KPX n yacute -15 KPX n ydieresis -15 KPX nacute u -10 KPX nacute uacute -10 KPX nacute ucircumflex -10 KPX nacute udieresis -10 KPX nacute ugrave -10 KPX nacute uhungarumlaut -10 KPX nacute umacron -10 KPX nacute uogonek -10 KPX nacute uring -10 KPX nacute v -20 KPX nacute y -15 KPX nacute yacute -15 KPX nacute ydieresis -15 KPX ncaron u -10 KPX ncaron uacute -10 KPX ncaron ucircumflex -10 KPX ncaron udieresis -10 KPX ncaron ugrave -10 KPX ncaron uhungarumlaut -10 KPX ncaron umacron -10 KPX ncaron uogonek -10 KPX ncaron uring -10 KPX ncaron v -20 KPX ncaron y -15 KPX ncaron yacute -15 KPX ncaron ydieresis -15 KPX ncommaaccent u -10 KPX ncommaaccent uacute -10 KPX ncommaaccent ucircumflex -10 KPX ncommaaccent udieresis -10 KPX ncommaaccent ugrave -10 KPX ncommaaccent uhungarumlaut -10 KPX ncommaaccent umacron -10 KPX ncommaaccent uogonek -10 KPX ncommaaccent uring -10 KPX ncommaaccent v -20 KPX ncommaaccent y -15 KPX ncommaaccent yacute -15 KPX ncommaaccent ydieresis -15 KPX ntilde u -10 KPX ntilde uacute -10 KPX ntilde ucircumflex -10 KPX ntilde udieresis -10 KPX ntilde ugrave -10 KPX ntilde uhungarumlaut -10 KPX ntilde umacron -10 KPX ntilde uogonek -10 KPX ntilde uring -10 KPX ntilde v -20 KPX ntilde y -15 KPX ntilde yacute -15 KPX ntilde ydieresis -15 KPX o comma -40 KPX o period -40 KPX o v -15 KPX o w -15 KPX o x -30 KPX o y -30 KPX o yacute -30 KPX o ydieresis -30 KPX oacute comma -40 KPX oacute period -40 KPX oacute v -15 KPX oacute w -15 KPX oacute x -30 KPX oacute y -30 KPX oacute yacute -30 KPX oacute ydieresis -30 KPX ocircumflex comma -40 KPX ocircumflex period -40 KPX ocircumflex v -15 KPX ocircumflex w -15 KPX ocircumflex x -30 KPX ocircumflex y -30 KPX ocircumflex yacute -30 KPX ocircumflex ydieresis -30 KPX odieresis comma -40 KPX odieresis period -40 KPX odieresis v -15 KPX odieresis w -15 KPX odieresis x -30 KPX odieresis y -30 KPX odieresis yacute -30 KPX odieresis ydieresis -30 KPX ograve comma -40 KPX ograve period -40 KPX ograve v -15 KPX ograve w -15 KPX ograve x -30 KPX ograve y -30 KPX ograve yacute -30 KPX ograve ydieresis -30 KPX ohungarumlaut comma -40 KPX ohungarumlaut period -40 KPX ohungarumlaut v -15 KPX ohungarumlaut w -15 KPX ohungarumlaut x -30 KPX ohungarumlaut y -30 KPX ohungarumlaut yacute -30 KPX ohungarumlaut ydieresis -30 KPX omacron comma -40 KPX omacron period -40 KPX omacron v -15 KPX omacron w -15 KPX omacron x -30 KPX omacron y -30 KPX omacron yacute -30 KPX omacron ydieresis -30 KPX oslash a -55 KPX oslash aacute -55 KPX oslash abreve -55 KPX oslash acircumflex -55 KPX oslash adieresis -55 KPX oslash agrave -55 KPX oslash amacron -55 KPX oslash aogonek -55 KPX oslash aring -55 KPX oslash atilde -55 KPX oslash b -55 KPX oslash c -55 KPX oslash cacute -55 KPX oslash ccaron -55 KPX oslash ccedilla -55 KPX oslash comma -95 KPX oslash d -55 KPX oslash dcroat -55 KPX oslash e -55 KPX oslash eacute -55 KPX oslash ecaron -55 KPX oslash ecircumflex -55 KPX oslash edieresis -55 KPX oslash edotaccent -55 KPX oslash egrave -55 KPX oslash emacron -55 KPX oslash eogonek -55 KPX oslash f -55 KPX oslash g -55 KPX oslash gbreve -55 KPX oslash gcommaaccent -55 KPX oslash h -55 KPX oslash i -55 KPX oslash iacute -55 KPX oslash icircumflex -55 KPX oslash idieresis -55 KPX oslash igrave -55 KPX oslash imacron -55 KPX oslash iogonek -55 KPX oslash j -55 KPX oslash k -55 KPX oslash kcommaaccent -55 KPX oslash l -55 KPX oslash lacute -55 KPX oslash lcommaaccent -55 KPX oslash lslash -55 KPX oslash m -55 KPX oslash n -55 KPX oslash nacute -55 KPX oslash ncaron -55 KPX oslash ncommaaccent -55 KPX oslash ntilde -55 KPX oslash o -55 KPX oslash oacute -55 KPX oslash ocircumflex -55 KPX oslash odieresis -55 KPX oslash ograve -55 KPX oslash ohungarumlaut -55 KPX oslash omacron -55 KPX oslash oslash -55 KPX oslash otilde -55 KPX oslash p -55 KPX oslash period -95 KPX oslash q -55 KPX oslash r -55 KPX oslash racute -55 KPX oslash rcaron -55 KPX oslash rcommaaccent -55 KPX oslash s -55 KPX oslash sacute -55 KPX oslash scaron -55 KPX oslash scedilla -55 KPX oslash scommaaccent -55 KPX oslash t -55 KPX oslash tcommaaccent -55 KPX oslash u -55 KPX oslash uacute -55 KPX oslash ucircumflex -55 KPX oslash udieresis -55 KPX oslash ugrave -55 KPX oslash uhungarumlaut -55 KPX oslash umacron -55 KPX oslash uogonek -55 KPX oslash uring -55 KPX oslash v -70 KPX oslash w -70 KPX oslash x -85 KPX oslash y -70 KPX oslash yacute -70 KPX oslash ydieresis -70 KPX oslash z -55 KPX oslash zacute -55 KPX oslash zcaron -55 KPX oslash zdotaccent -55 KPX otilde comma -40 KPX otilde period -40 KPX otilde v -15 KPX otilde w -15 KPX otilde x -30 KPX otilde y -30 KPX otilde yacute -30 KPX otilde ydieresis -30 KPX p comma -35 KPX p period -35 KPX p y -30 KPX p yacute -30 KPX p ydieresis -30 KPX period quotedblright -100 KPX period quoteright -100 KPX period space -60 KPX quotedblright space -40 KPX quoteleft quoteleft -57 KPX quoteright d -50 KPX quoteright dcroat -50 KPX quoteright quoteright -57 KPX quoteright r -50 KPX quoteright racute -50 KPX quoteright rcaron -50 KPX quoteright rcommaaccent -50 KPX quoteright s -50 KPX quoteright sacute -50 KPX quoteright scaron -50 KPX quoteright scedilla -50 KPX quoteright scommaaccent -50 KPX quoteright space -70 KPX r a -10 KPX r aacute -10 KPX r abreve -10 KPX r acircumflex -10 KPX r adieresis -10 KPX r agrave -10 KPX r amacron -10 KPX r aogonek -10 KPX r aring -10 KPX r atilde -10 KPX r colon 30 KPX r comma -50 KPX r i 15 KPX r iacute 15 KPX r icircumflex 15 KPX r idieresis 15 KPX r igrave 15 KPX r imacron 15 KPX r iogonek 15 KPX r k 15 KPX r kcommaaccent 15 KPX r l 15 KPX r lacute 15 KPX r lcommaaccent 15 KPX r lslash 15 KPX r m 25 KPX r n 25 KPX r nacute 25 KPX r ncaron 25 KPX r ncommaaccent 25 KPX r ntilde 25 KPX r p 30 KPX r period -50 KPX r semicolon 30 KPX r t 40 KPX r tcommaaccent 40 KPX r u 15 KPX r uacute 15 KPX r ucircumflex 15 KPX r udieresis 15 KPX r ugrave 15 KPX r uhungarumlaut 15 KPX r umacron 15 KPX r uogonek 15 KPX r uring 15 KPX r v 30 KPX r y 30 KPX r yacute 30 KPX r ydieresis 30 KPX racute a -10 KPX racute aacute -10 KPX racute abreve -10 KPX racute acircumflex -10 KPX racute adieresis -10 KPX racute agrave -10 KPX racute amacron -10 KPX racute aogonek -10 KPX racute aring -10 KPX racute atilde -10 KPX racute colon 30 KPX racute comma -50 KPX racute i 15 KPX racute iacute 15 KPX racute icircumflex 15 KPX racute idieresis 15 KPX racute igrave 15 KPX racute imacron 15 KPX racute iogonek 15 KPX racute k 15 KPX racute kcommaaccent 15 KPX racute l 15 KPX racute lacute 15 KPX racute lcommaaccent 15 KPX racute lslash 15 KPX racute m 25 KPX racute n 25 KPX racute nacute 25 KPX racute ncaron 25 KPX racute ncommaaccent 25 KPX racute ntilde 25 KPX racute p 30 KPX racute period -50 KPX racute semicolon 30 KPX racute t 40 KPX racute tcommaaccent 40 KPX racute u 15 KPX racute uacute 15 KPX racute ucircumflex 15 KPX racute udieresis 15 KPX racute ugrave 15 KPX racute uhungarumlaut 15 KPX racute umacron 15 KPX racute uogonek 15 KPX racute uring 15 KPX racute v 30 KPX racute y 30 KPX racute yacute 30 KPX racute ydieresis 30 KPX rcaron a -10 KPX rcaron aacute -10 KPX rcaron abreve -10 KPX rcaron acircumflex -10 KPX rcaron adieresis -10 KPX rcaron agrave -10 KPX rcaron amacron -10 KPX rcaron aogonek -10 KPX rcaron aring -10 KPX rcaron atilde -10 KPX rcaron colon 30 KPX rcaron comma -50 KPX rcaron i 15 KPX rcaron iacute 15 KPX rcaron icircumflex 15 KPX rcaron idieresis 15 KPX rcaron igrave 15 KPX rcaron imacron 15 KPX rcaron iogonek 15 KPX rcaron k 15 KPX rcaron kcommaaccent 15 KPX rcaron l 15 KPX rcaron lacute 15 KPX rcaron lcommaaccent 15 KPX rcaron lslash 15 KPX rcaron m 25 KPX rcaron n 25 KPX rcaron nacute 25 KPX rcaron ncaron 25 KPX rcaron ncommaaccent 25 KPX rcaron ntilde 25 KPX rcaron p 30 KPX rcaron period -50 KPX rcaron semicolon 30 KPX rcaron t 40 KPX rcaron tcommaaccent 40 KPX rcaron u 15 KPX rcaron uacute 15 KPX rcaron ucircumflex 15 KPX rcaron udieresis 15 KPX rcaron ugrave 15 KPX rcaron uhungarumlaut 15 KPX rcaron umacron 15 KPX rcaron uogonek 15 KPX rcaron uring 15 KPX rcaron v 30 KPX rcaron y 30 KPX rcaron yacute 30 KPX rcaron ydieresis 30 KPX rcommaaccent a -10 KPX rcommaaccent aacute -10 KPX rcommaaccent abreve -10 KPX rcommaaccent acircumflex -10 KPX rcommaaccent adieresis -10 KPX rcommaaccent agrave -10 KPX rcommaaccent amacron -10 KPX rcommaaccent aogonek -10 KPX rcommaaccent aring -10 KPX rcommaaccent atilde -10 KPX rcommaaccent colon 30 KPX rcommaaccent comma -50 KPX rcommaaccent i 15 KPX rcommaaccent iacute 15 KPX rcommaaccent icircumflex 15 KPX rcommaaccent idieresis 15 KPX rcommaaccent igrave 15 KPX rcommaaccent imacron 15 KPX rcommaaccent iogonek 15 KPX rcommaaccent k 15 KPX rcommaaccent kcommaaccent 15 KPX rcommaaccent l 15 KPX rcommaaccent lacute 15 KPX rcommaaccent lcommaaccent 15 KPX rcommaaccent lslash 15 KPX rcommaaccent m 25 KPX rcommaaccent n 25 KPX rcommaaccent nacute 25 KPX rcommaaccent ncaron 25 KPX rcommaaccent ncommaaccent 25 KPX rcommaaccent ntilde 25 KPX rcommaaccent p 30 KPX rcommaaccent period -50 KPX rcommaaccent semicolon 30 KPX rcommaaccent t 40 KPX rcommaaccent tcommaaccent 40 KPX rcommaaccent u 15 KPX rcommaaccent uacute 15 KPX rcommaaccent ucircumflex 15 KPX rcommaaccent udieresis 15 KPX rcommaaccent ugrave 15 KPX rcommaaccent uhungarumlaut 15 KPX rcommaaccent umacron 15 KPX rcommaaccent uogonek 15 KPX rcommaaccent uring 15 KPX rcommaaccent v 30 KPX rcommaaccent y 30 KPX rcommaaccent yacute 30 KPX rcommaaccent ydieresis 30 KPX s comma -15 KPX s period -15 KPX s w -30 KPX sacute comma -15 KPX sacute period -15 KPX sacute w -30 KPX scaron comma -15 KPX scaron period -15 KPX scaron w -30 KPX scedilla comma -15 KPX scedilla period -15 KPX scedilla w -30 KPX scommaaccent comma -15 KPX scommaaccent period -15 KPX scommaaccent w -30 KPX semicolon space -50 KPX space T -50 KPX space Tcaron -50 KPX space Tcommaaccent -50 KPX space V -50 KPX space W -40 KPX space Y -90 KPX space Yacute -90 KPX space Ydieresis -90 KPX space quotedblleft -30 KPX space quoteleft -60 KPX v a -25 KPX v aacute -25 KPX v abreve -25 KPX v acircumflex -25 KPX v adieresis -25 KPX v agrave -25 KPX v amacron -25 KPX v aogonek -25 KPX v aring -25 KPX v atilde -25 KPX v comma -80 KPX v e -25 KPX v eacute -25 KPX v ecaron -25 KPX v ecircumflex -25 KPX v edieresis -25 KPX v edotaccent -25 KPX v egrave -25 KPX v emacron -25 KPX v eogonek -25 KPX v o -25 KPX v oacute -25 KPX v ocircumflex -25 KPX v odieresis -25 KPX v ograve -25 KPX v ohungarumlaut -25 KPX v omacron -25 KPX v oslash -25 KPX v otilde -25 KPX v period -80 KPX w a -15 KPX w aacute -15 KPX w abreve -15 KPX w acircumflex -15 KPX w adieresis -15 KPX w agrave -15 KPX w amacron -15 KPX w aogonek -15 KPX w aring -15 KPX w atilde -15 KPX w comma -60 KPX w e -10 KPX w eacute -10 KPX w ecaron -10 KPX w ecircumflex -10 KPX w edieresis -10 KPX w edotaccent -10 KPX w egrave -10 KPX w emacron -10 KPX w eogonek -10 KPX w o -10 KPX w oacute -10 KPX w ocircumflex -10 KPX w odieresis -10 KPX w ograve -10 KPX w ohungarumlaut -10 KPX w omacron -10 KPX w oslash -10 KPX w otilde -10 KPX w period -60 KPX x e -30 KPX x eacute -30 KPX x ecaron -30 KPX x ecircumflex -30 KPX x edieresis -30 KPX x edotaccent -30 KPX x egrave -30 KPX x emacron -30 KPX x eogonek -30 KPX y a -20 KPX y aacute -20 KPX y abreve -20 KPX y acircumflex -20 KPX y adieresis -20 KPX y agrave -20 KPX y amacron -20 KPX y aogonek -20 KPX y aring -20 KPX y atilde -20 KPX y comma -100 KPX y e -20 KPX y eacute -20 KPX y ecaron -20 KPX y ecircumflex -20 KPX y edieresis -20 KPX y edotaccent -20 KPX y egrave -20 KPX y emacron -20 KPX y eogonek -20 KPX y o -20 KPX y oacute -20 KPX y ocircumflex -20 KPX y odieresis -20 KPX y ograve -20 KPX y ohungarumlaut -20 KPX y omacron -20 KPX y oslash -20 KPX y otilde -20 KPX y period -100 KPX yacute a -20 KPX yacute aacute -20 KPX yacute abreve -20 KPX yacute acircumflex -20 KPX yacute adieresis -20 KPX yacute agrave -20 KPX yacute amacron -20 KPX yacute aogonek -20 KPX yacute aring -20 KPX yacute atilde -20 KPX yacute comma -100 KPX yacute e -20 KPX yacute eacute -20 KPX yacute ecaron -20 KPX yacute ecircumflex -20 KPX yacute edieresis -20 KPX yacute edotaccent -20 KPX yacute egrave -20 KPX yacute emacron -20 KPX yacute eogonek -20 KPX yacute o -20 KPX yacute oacute -20 KPX yacute ocircumflex -20 KPX yacute odieresis -20 KPX yacute ograve -20 KPX yacute ohungarumlaut -20 KPX yacute omacron -20 KPX yacute oslash -20 KPX yacute otilde -20 KPX yacute period -100 KPX ydieresis a -20 KPX ydieresis aacute -20 KPX ydieresis abreve -20 KPX ydieresis acircumflex -20 KPX ydieresis adieresis -20 KPX ydieresis agrave -20 KPX ydieresis amacron -20 KPX ydieresis aogonek -20 KPX ydieresis aring -20 KPX ydieresis atilde -20 KPX ydieresis comma -100 KPX ydieresis e -20 KPX ydieresis eacute -20 KPX ydieresis ecaron -20 KPX ydieresis ecircumflex -20 KPX ydieresis edieresis -20 KPX ydieresis edotaccent -20 KPX ydieresis egrave -20 KPX ydieresis emacron -20 KPX ydieresis eogonek -20 KPX ydieresis o -20 KPX ydieresis oacute -20 KPX ydieresis ocircumflex -20 KPX ydieresis odieresis -20 KPX ydieresis ograve -20 KPX ydieresis ohungarumlaut -20 KPX ydieresis omacron -20 KPX ydieresis oslash -20 KPX ydieresis otilde -20 KPX ydieresis period -100 KPX z e -15 KPX z eacute -15 KPX z ecaron -15 KPX z ecircumflex -15 KPX z edieresis -15 KPX z edotaccent -15 KPX z egrave -15 KPX z emacron -15 KPX z eogonek -15 KPX z o -15 KPX z oacute -15 KPX z ocircumflex -15 KPX z odieresis -15 KPX z ograve -15 KPX z ohungarumlaut -15 KPX z omacron -15 KPX z oslash -15 KPX z otilde -15 KPX zacute e -15 KPX zacute eacute -15 KPX zacute ecaron -15 KPX zacute ecircumflex -15 KPX zacute edieresis -15 KPX zacute edotaccent -15 KPX zacute egrave -15 KPX zacute emacron -15 KPX zacute eogonek -15 KPX zacute o -15 KPX zacute oacute -15 KPX zacute ocircumflex -15 KPX zacute odieresis -15 KPX zacute ograve -15 KPX zacute ohungarumlaut -15 KPX zacute omacron -15 KPX zacute oslash -15 KPX zacute otilde -15 KPX zcaron e -15 KPX zcaron eacute -15 KPX zcaron ecaron -15 KPX zcaron ecircumflex -15 KPX zcaron edieresis -15 KPX zcaron edotaccent -15 KPX zcaron egrave -15 KPX zcaron emacron -15 KPX zcaron eogonek -15 KPX zcaron o -15 KPX zcaron oacute -15 KPX zcaron ocircumflex -15 KPX zcaron odieresis -15 KPX zcaron ograve -15 KPX zcaron ohungarumlaut -15 KPX zcaron omacron -15 KPX zcaron oslash -15 KPX zcaron otilde -15 KPX zdotaccent e -15 KPX zdotaccent eacute -15 KPX zdotaccent ecaron -15 KPX zdotaccent ecircumflex -15 KPX zdotaccent edieresis -15 KPX zdotaccent edotaccent -15 KPX zdotaccent egrave -15 KPX zdotaccent emacron -15 KPX zdotaccent eogonek -15 KPX zdotaccent o -15 KPX zdotaccent oacute -15 KPX zdotaccent ocircumflex -15 KPX zdotaccent odieresis -15 KPX zdotaccent ograve -15 KPX zdotaccent ohungarumlaut -15 KPX zdotaccent omacron -15 KPX zdotaccent oslash -15 KPX zdotaccent otilde -15 EndKernPairs EndKernData EndFontMetrics gle-graphics-4.2.4c/src/fonts/Adobe-Core35_AFMs-314/ITCBookman-Demi.afm0000664000000000000000000010300411405446017023363 0ustar rootrootStartFontMetrics 4.1 Comment Copyright (c) 1985, 1987, 1989, 1992, 1997 Adobe Systems Incorporated. All Rights Reserved. Comment Creation Date: Thu May 1 13:44:58 1997 Comment UniqueID 43079 Comment VMusage 45854 56879 FontName Bookman-Demi FullName ITC Bookman Demi FamilyName ITC Bookman Weight Demi ItalicAngle 0 IsFixedPitch false FontBBox -194 -250 1346 934 UnderlinePosition -100 UnderlineThickness 50 Version 002.000 Notice Copyright (c) 1985, 1987, 1989, 1992, 1997 Adobe Systems Incorporated. All Rights Reserved.ITC Bookman is a registered trademark of International Typeface Corporation. EncodingScheme AdobeStandardEncoding CapHeight 681 XHeight 502 Ascender 717 Descender -228 StdHW 82 StdVW 167 StartCharMetrics 314 C 32 ; WX 340 ; N space ; B 0 0 0 0 ; C 33 ; WX 360 ; N exclam ; B 82 -8 282 698 ; C 34 ; WX 420 ; N quotedbl ; B 11 379 369 698 ; C 35 ; WX 660 ; N numbersign ; B 84 0 576 681 ; C 36 ; WX 660 ; N dollar ; B 48 -119 620 805 ; C 37 ; WX 940 ; N percent ; B 12 -8 924 698 ; C 38 ; WX 800 ; N ampersand ; B 21 -17 772 698 ; C 39 ; WX 320 ; N quoteright ; B 82 440 242 698 ; C 40 ; WX 320 ; N parenleft ; B 48 -150 289 749 ; C 41 ; WX 320 ; N parenright ; B 20 -150 262 749 ; C 42 ; WX 460 ; N asterisk ; B 62 317 405 697 ; C 43 ; WX 600 ; N plus ; B 51 9 555 514 ; C 44 ; WX 340 ; N comma ; B 78 -124 257 162 ; C 45 ; WX 360 ; N hyphen ; B 20 210 340 318 ; C 46 ; WX 340 ; N period ; B 76 -8 258 172 ; C 47 ; WX 600 ; N slash ; B 50 -149 555 725 ; C 48 ; WX 660 ; N zero ; B 30 -17 639 698 ; C 49 ; WX 660 ; N one ; B 137 0 568 681 ; C 50 ; WX 660 ; N two ; B 41 0 628 698 ; C 51 ; WX 660 ; N three ; B 37 -17 631 698 ; C 52 ; WX 660 ; N four ; B 19 0 649 681 ; C 53 ; WX 660 ; N five ; B 44 -17 623 723 ; C 54 ; WX 660 ; N six ; B 34 -17 634 698 ; C 55 ; WX 660 ; N seven ; B 36 0 632 681 ; C 56 ; WX 660 ; N eight ; B 36 -17 633 698 ; C 57 ; WX 660 ; N nine ; B 33 -17 636 698 ; C 58 ; WX 340 ; N colon ; B 76 -8 258 515 ; C 59 ; WX 340 ; N semicolon ; B 75 -124 259 515 ; C 60 ; WX 600 ; N less ; B 49 -9 558 542 ; C 61 ; WX 600 ; N equal ; B 51 109 555 421 ; C 62 ; WX 600 ; N greater ; B 48 -9 557 542 ; C 63 ; WX 660 ; N question ; B 61 -8 608 698 ; C 64 ; WX 820 ; N at ; B 60 -17 758 698 ; C 65 ; WX 720 ; N A ; B -34 0 763 681 ; C 66 ; WX 720 ; N B ; B 20 0 693 681 ; C 67 ; WX 740 ; N C ; B 35 -17 724 698 ; C 68 ; WX 780 ; N D ; B 20 0 748 681 ; C 69 ; WX 720 ; N E ; B 20 0 724 681 ; C 70 ; WX 680 ; N F ; B 20 0 686 681 ; C 71 ; WX 780 ; N G ; B 35 -17 773 698 ; C 72 ; WX 820 ; N H ; B 20 0 800 681 ; C 73 ; WX 400 ; N I ; B 20 0 379 681 ; C 74 ; WX 640 ; N J ; B -12 -17 622 681 ; C 75 ; WX 800 ; N K ; B 20 0 796 681 ; C 76 ; WX 640 ; N L ; B 20 0 668 681 ; C 77 ; WX 940 ; N M ; B 20 0 924 681 ; C 78 ; WX 740 ; N N ; B 20 0 724 681 ; C 79 ; WX 800 ; N O ; B 35 -17 769 698 ; C 80 ; WX 660 ; N P ; B 20 0 658 681 ; C 81 ; WX 800 ; N Q ; B 35 -226 775 698 ; C 82 ; WX 780 ; N R ; B 20 0 783 681 ; C 83 ; WX 660 ; N S ; B 21 -17 639 698 ; C 84 ; WX 700 ; N T ; B -4 0 703 681 ; C 85 ; WX 740 ; N U ; B 15 -17 724 681 ; C 86 ; WX 720 ; N V ; B -20 0 730 681 ; C 87 ; WX 940 ; N W ; B -20 0 963 681 ; C 88 ; WX 780 ; N X ; B 1 0 770 681 ; C 89 ; WX 700 ; N Y ; B -20 0 718 681 ; C 90 ; WX 640 ; N Z ; B 6 0 635 681 ; C 91 ; WX 300 ; N bracketleft ; B 75 -138 285 725 ; C 92 ; WX 600 ; N backslash ; B 50 0 555 725 ; C 93 ; WX 300 ; N bracketright ; B 21 -138 231 725 ; C 94 ; WX 600 ; N asciicircum ; B 52 281 554 681 ; C 95 ; WX 500 ; N underscore ; B 0 -125 500 -75 ; C 96 ; WX 320 ; N quoteleft ; B 82 440 242 698 ; C 97 ; WX 580 ; N a ; B 28 -8 588 515 ; C 98 ; WX 600 ; N b ; B -20 -8 568 725 ; C 99 ; WX 580 ; N c ; B 31 -8 550 515 ; C 100 ; WX 640 ; N d ; B 31 -8 622 725 ; C 101 ; WX 580 ; N e ; B 31 -8 548 515 ; C 102 ; WX 380 ; N f ; B 22 0 461 741 ; L i fi ; L l fl ; C 103 ; WX 580 ; N g ; B 9 -243 583 595 ; C 104 ; WX 680 ; N h ; B 22 0 654 725 ; C 105 ; WX 360 ; N i ; B 22 0 335 729 ; C 106 ; WX 340 ; N j ; B -94 -221 278 729 ; C 107 ; WX 660 ; N k ; B 22 0 643 725 ; C 108 ; WX 340 ; N l ; B 9 0 322 725 ; C 109 ; WX 1000 ; N m ; B 22 0 980 515 ; C 110 ; WX 680 ; N n ; B 22 0 652 515 ; C 111 ; WX 620 ; N o ; B 31 -8 585 515 ; C 112 ; WX 640 ; N p ; B 22 -212 611 515 ; C 113 ; WX 620 ; N q ; B 31 -212 633 515 ; C 114 ; WX 460 ; N r ; B 22 0 462 502 ; C 115 ; WX 520 ; N s ; B 22 -8 492 515 ; C 116 ; WX 460 ; N t ; B 22 -8 445 660 ; C 117 ; WX 660 ; N u ; B 22 -8 653 502 ; C 118 ; WX 600 ; N v ; B -6 0 593 502 ; C 119 ; WX 800 ; N w ; B -6 0 810 502 ; C 120 ; WX 600 ; N x ; B 8 0 591 502 ; C 121 ; WX 620 ; N y ; B 6 -221 613 502 ; C 122 ; WX 560 ; N z ; B 22 0 547 502 ; C 123 ; WX 320 ; N braceleft ; B 14 -139 301 726 ; C 124 ; WX 600 ; N bar ; B 243 -250 362 750 ; C 125 ; WX 320 ; N braceright ; B 15 -140 302 725 ; C 126 ; WX 600 ; N asciitilde ; B 51 162 555 368 ; C 161 ; WX 360 ; N exclamdown ; B 84 -191 284 515 ; C 162 ; WX 660 ; N cent ; B 133 17 535 674 ; C 163 ; WX 660 ; N sterling ; B 10 -17 659 698 ; C 164 ; WX 120 ; N fraction ; B -194 0 312 681 ; C 165 ; WX 660 ; N yen ; B -28 0 696 681 ; C 166 ; WX 660 ; N florin ; B -46 -209 674 749 ; C 167 ; WX 600 ; N section ; B 36 -153 560 698 ; C 168 ; WX 660 ; N currency ; B 77 88 584 593 ; C 169 ; WX 240 ; N quotesingle ; B 42 379 178 698 ; C 170 ; WX 540 ; N quotedblleft ; B 82 439 449 698 ; C 171 ; WX 400 ; N guillemotleft ; B 34 101 360 457 ; C 172 ; WX 220 ; N guilsinglleft ; B 34 101 188 457 ; C 173 ; WX 220 ; N guilsinglright ; B 34 101 188 457 ; C 174 ; WX 740 ; N fi ; B 22 0 710 741 ; C 175 ; WX 740 ; N fl ; B 22 0 710 741 ; C 177 ; WX 500 ; N endash ; B -25 212 525 318 ; C 178 ; WX 440 ; N dagger ; B 33 -156 398 698 ; C 179 ; WX 380 ; N daggerdbl ; B 8 -156 380 698 ; C 180 ; WX 340 ; N periodcentered ; B 76 175 258 355 ; C 182 ; WX 800 ; N paragraph ; B 51 0 698 681 ; C 183 ; WX 460 ; N bullet ; B 60 170 404 511 ; C 184 ; WX 320 ; N quotesinglbase ; B 82 -114 242 144 ; C 185 ; WX 540 ; N quotedblbase ; B 82 -114 450 144 ; C 186 ; WX 540 ; N quotedblright ; B 82 440 449 698 ; C 187 ; WX 400 ; N guillemotright ; B 34 101 360 457 ; C 188 ; WX 1000 ; N ellipsis ; B 76 -8 924 172 ; C 189 ; WX 1360 ; N perthousand ; B 12 -8 1346 698 ; C 191 ; WX 660 ; N questiondown ; B 62 -191 609 515 ; C 193 ; WX 400 ; N grave ; B 68 547 327 730 ; C 194 ; WX 400 ; N acute ; B 98 547 357 731 ; C 195 ; WX 500 ; N circumflex ; B 68 555 430 731 ; C 196 ; WX 480 ; N tilde ; B 69 556 421 691 ; C 197 ; WX 460 ; N macron ; B 68 577 383 663 ; C 198 ; WX 500 ; N breve ; B 68 553 429 722 ; C 199 ; WX 320 ; N dotaccent ; B 68 535 259 729 ; C 200 ; WX 500 ; N dieresis ; B 68 535 441 673 ; C 202 ; WX 340 ; N ring ; B 68 552 275 755 ; C 203 ; WX 360 ; N cedilla ; B 68 -213 284 0 ; C 205 ; WX 440 ; N hungarumlaut ; B 68 554 365 741 ; C 206 ; WX 320 ; N ogonek ; B 82 -199 314 0 ; C 207 ; WX 500 ; N caron ; B 68 541 430 717 ; C 208 ; WX 1000 ; N emdash ; B -25 212 1025 318 ; C 225 ; WX 1140 ; N AE ; B -34 0 1149 681 ; C 227 ; WX 400 ; N ordfeminine ; B 27 383 396 698 ; C 232 ; WX 640 ; N Lslash ; B 20 0 668 681 ; C 233 ; WX 800 ; N Oslash ; B 35 -110 771 781 ; C 234 ; WX 1220 ; N OE ; B 35 -17 1219 698 ; C 235 ; WX 400 ; N ordmasculine ; B 17 383 383 698 ; C 241 ; WX 880 ; N ae ; B 28 -8 852 515 ; C 245 ; WX 360 ; N dotlessi ; B 22 0 335 502 ; C 248 ; WX 340 ; N lslash ; B 9 0 322 725 ; C 249 ; WX 620 ; N oslash ; B 31 -40 586 551 ; C 250 ; WX 940 ; N oe ; B 31 -8 908 515 ; C 251 ; WX 660 ; N germandbls ; B -61 -91 644 699 ; C -1 ; WX 400 ; N Idieresis ; B 18 0 391 877 ; C -1 ; WX 580 ; N eacute ; B 31 -8 548 731 ; C -1 ; WX 580 ; N abreve ; B 28 -8 588 722 ; C -1 ; WX 660 ; N uhungarumlaut ; B 22 -8 653 741 ; C -1 ; WX 580 ; N ecaron ; B 31 -8 548 717 ; C -1 ; WX 700 ; N Ydieresis ; B -20 0 718 877 ; C -1 ; WX 600 ; N divide ; B 51 9 555 521 ; C -1 ; WX 700 ; N Yacute ; B -20 0 718 910 ; C -1 ; WX 720 ; N Acircumflex ; B -34 0 763 910 ; C -1 ; WX 580 ; N aacute ; B 28 -8 588 731 ; C -1 ; WX 740 ; N Ucircumflex ; B 15 -17 724 910 ; C -1 ; WX 620 ; N yacute ; B 6 -221 613 731 ; C -1 ; WX 520 ; N scommaaccent ; B 22 -249 492 515 ; C -1 ; WX 580 ; N ecircumflex ; B 31 -8 548 731 ; C -1 ; WX 740 ; N Uring ; B 15 -17 724 934 ; C -1 ; WX 740 ; N Udieresis ; B 15 -17 724 877 ; C -1 ; WX 580 ; N aogonek ; B 28 -206 594 515 ; C -1 ; WX 740 ; N Uacute ; B 15 -17 724 910 ; C -1 ; WX 660 ; N uogonek ; B 22 -199 663 502 ; C -1 ; WX 720 ; N Edieresis ; B 20 0 724 877 ; C -1 ; WX 780 ; N Dcroat ; B 20 0 748 681 ; C -1 ; WX 250 ; N commaaccent ; B 53 -249 197 -40 ; C -1 ; WX 740 ; N copyright ; B 23 -17 723 698 ; C -1 ; WX 720 ; N Emacron ; B 20 0 724 842 ; C -1 ; WX 580 ; N ccaron ; B 31 -8 550 717 ; C -1 ; WX 580 ; N aring ; B 28 -8 588 755 ; C -1 ; WX 740 ; N Ncommaaccent ; B 20 -249 724 681 ; C -1 ; WX 340 ; N lacute ; B 9 0 367 930 ; C -1 ; WX 580 ; N agrave ; B 28 -8 588 730 ; C -1 ; WX 700 ; N Tcommaaccent ; B -4 -249 703 681 ; C -1 ; WX 740 ; N Cacute ; B 35 -17 724 910 ; C -1 ; WX 580 ; N atilde ; B 28 -8 588 691 ; C -1 ; WX 720 ; N Edotaccent ; B 20 0 724 933 ; C -1 ; WX 520 ; N scaron ; B 22 -8 492 717 ; C -1 ; WX 520 ; N scedilla ; B 22 -213 492 515 ; C -1 ; WX 360 ; N iacute ; B 22 0 337 731 ; C -1 ; WX 494 ; N lozenge ; B 10 0 484 745 ; C -1 ; WX 780 ; N Rcaron ; B 20 0 783 896 ; C -1 ; WX 780 ; N Gcommaaccent ; B 35 -249 773 698 ; C -1 ; WX 660 ; N ucircumflex ; B 22 -8 653 731 ; C -1 ; WX 580 ; N acircumflex ; B 28 -8 588 731 ; C -1 ; WX 720 ; N Amacron ; B -34 0 763 842 ; C -1 ; WX 460 ; N rcaron ; B 22 0 462 717 ; C -1 ; WX 580 ; N ccedilla ; B 31 -213 550 515 ; C -1 ; WX 640 ; N Zdotaccent ; B 6 0 635 933 ; C -1 ; WX 660 ; N Thorn ; B 20 0 658 681 ; C -1 ; WX 800 ; N Omacron ; B 35 -17 769 842 ; C -1 ; WX 780 ; N Racute ; B 20 0 783 910 ; C -1 ; WX 660 ; N Sacute ; B 21 -17 639 910 ; C -1 ; WX 737 ; N dcaron ; B 31 -8 726 731 ; C -1 ; WX 740 ; N Umacron ; B 15 -17 724 842 ; C -1 ; WX 660 ; N uring ; B 22 -8 653 755 ; C -1 ; WX 396 ; N threesuperior ; B 5 269 391 698 ; C -1 ; WX 800 ; N Ograve ; B 35 -17 769 909 ; C -1 ; WX 720 ; N Agrave ; B -34 0 763 909 ; C -1 ; WX 720 ; N Abreve ; B -34 0 763 901 ; C -1 ; WX 600 ; N multiply ; B 48 10 552 514 ; C -1 ; WX 660 ; N uacute ; B 22 -8 653 731 ; C -1 ; WX 700 ; N Tcaron ; B -4 0 703 896 ; C -1 ; WX 494 ; N partialdiff ; B 11 -21 494 750 ; C -1 ; WX 620 ; N ydieresis ; B 6 -221 613 698 ; C -1 ; WX 740 ; N Nacute ; B 20 0 724 910 ; C -1 ; WX 360 ; N icircumflex ; B -2 0 360 731 ; C -1 ; WX 720 ; N Ecircumflex ; B 20 0 724 910 ; C -1 ; WX 580 ; N adieresis ; B 28 -8 588 698 ; C -1 ; WX 580 ; N edieresis ; B 31 -8 548 698 ; C -1 ; WX 580 ; N cacute ; B 31 -8 550 731 ; C -1 ; WX 680 ; N nacute ; B 22 0 652 731 ; C -1 ; WX 660 ; N umacron ; B 22 -8 653 663 ; C -1 ; WX 740 ; N Ncaron ; B 20 0 724 896 ; C -1 ; WX 400 ; N Iacute ; B 20 0 379 910 ; C -1 ; WX 600 ; N plusminus ; B 51 0 555 514 ; C -1 ; WX 600 ; N brokenbar ; B 243 -175 362 675 ; C -1 ; WX 740 ; N registered ; B 23 -17 723 698 ; C -1 ; WX 780 ; N Gbreve ; B 35 -17 773 901 ; C -1 ; WX 400 ; N Idotaccent ; B 20 0 379 933 ; C -1 ; WX 600 ; N summation ; B 14 -10 585 706 ; C -1 ; WX 720 ; N Egrave ; B 20 0 724 909 ; C -1 ; WX 460 ; N racute ; B 22 0 462 731 ; C -1 ; WX 620 ; N omacron ; B 31 -8 585 663 ; C -1 ; WX 640 ; N Zacute ; B 6 0 635 910 ; C -1 ; WX 640 ; N Zcaron ; B 6 0 635 896 ; C -1 ; WX 549 ; N greaterequal ; B 26 0 523 704 ; C -1 ; WX 780 ; N Eth ; B 20 0 748 681 ; C -1 ; WX 740 ; N Ccedilla ; B 35 -213 724 698 ; C -1 ; WX 340 ; N lcommaaccent ; B 9 -249 322 725 ; C -1 ; WX 460 ; N tcaron ; B 22 -8 445 794 ; C -1 ; WX 580 ; N eogonek ; B 31 -204 548 515 ; C -1 ; WX 740 ; N Uogonek ; B 15 -199 724 681 ; C -1 ; WX 720 ; N Aacute ; B -34 0 763 910 ; C -1 ; WX 720 ; N Adieresis ; B -34 0 763 877 ; C -1 ; WX 580 ; N egrave ; B 31 -8 548 730 ; C -1 ; WX 560 ; N zacute ; B 22 0 547 731 ; C -1 ; WX 360 ; N iogonek ; B 22 -199 335 729 ; C -1 ; WX 800 ; N Oacute ; B 35 -17 769 910 ; C -1 ; WX 620 ; N oacute ; B 31 -8 585 731 ; C -1 ; WX 580 ; N amacron ; B 28 -8 588 663 ; C -1 ; WX 520 ; N sacute ; B 22 -8 492 731 ; C -1 ; WX 360 ; N idieresis ; B -2 0 371 698 ; C -1 ; WX 800 ; N Ocircumflex ; B 35 -17 769 910 ; C -1 ; WX 740 ; N Ugrave ; B 15 -17 724 909 ; C -1 ; WX 612 ; N Delta ; B 6 0 608 688 ; C -1 ; WX 640 ; N thorn ; B 22 -212 611 725 ; C -1 ; WX 396 ; N twosuperior ; B 14 279 396 698 ; C -1 ; WX 800 ; N Odieresis ; B 35 -17 769 877 ; C -1 ; WX 660 ; N mu ; B 22 -221 653 502 ; C -1 ; WX 360 ; N igrave ; B 18 0 335 730 ; C -1 ; WX 620 ; N ohungarumlaut ; B 31 -8 585 741 ; C -1 ; WX 720 ; N Eogonek ; B 20 -204 724 681 ; C -1 ; WX 640 ; N dcroat ; B 31 -8 622 725 ; C -1 ; WX 990 ; N threequarters ; B 15 0 967 692 ; C -1 ; WX 660 ; N Scedilla ; B 21 -213 639 698 ; C -1 ; WX 450 ; N lcaron ; B 9 0 434 731 ; C -1 ; WX 800 ; N Kcommaaccent ; B 20 -249 796 681 ; C -1 ; WX 640 ; N Lacute ; B 20 0 668 910 ; C -1 ; WX 980 ; N trademark ; B 42 277 982 681 ; C -1 ; WX 580 ; N edotaccent ; B 31 -8 548 754 ; C -1 ; WX 400 ; N Igrave ; B 20 0 379 909 ; C -1 ; WX 400 ; N Imacron ; B 20 0 379 842 ; C -1 ; WX 640 ; N Lcaron ; B 20 0 668 698 ; C -1 ; WX 990 ; N onehalf ; B 65 0 980 681 ; C -1 ; WX 549 ; N lessequal ; B 29 0 526 704 ; C -1 ; WX 620 ; N ocircumflex ; B 31 -8 585 731 ; C -1 ; WX 680 ; N ntilde ; B 22 0 652 691 ; C -1 ; WX 740 ; N Uhungarumlaut ; B 15 -17 724 920 ; C -1 ; WX 720 ; N Eacute ; B 20 0 724 910 ; C -1 ; WX 580 ; N emacron ; B 31 -8 548 663 ; C -1 ; WX 580 ; N gbreve ; B 9 -243 583 722 ; C -1 ; WX 990 ; N onequarter ; B 65 0 967 681 ; C -1 ; WX 660 ; N Scaron ; B 21 -17 639 896 ; C -1 ; WX 660 ; N Scommaaccent ; B 21 -249 639 698 ; C -1 ; WX 800 ; N Ohungarumlaut ; B 35 -17 769 920 ; C -1 ; WX 400 ; N degree ; B 50 398 350 698 ; C -1 ; WX 620 ; N ograve ; B 31 -8 585 730 ; C -1 ; WX 740 ; N Ccaron ; B 35 -17 724 896 ; C -1 ; WX 660 ; N ugrave ; B 22 -8 653 730 ; C -1 ; WX 549 ; N radical ; B 10 -46 512 850 ; C -1 ; WX 780 ; N Dcaron ; B 20 0 748 896 ; C -1 ; WX 460 ; N rcommaaccent ; B 22 -249 462 502 ; C -1 ; WX 740 ; N Ntilde ; B 20 0 724 870 ; C -1 ; WX 620 ; N otilde ; B 31 -8 585 691 ; C -1 ; WX 780 ; N Rcommaaccent ; B 20 -249 783 681 ; C -1 ; WX 640 ; N Lcommaaccent ; B 20 -249 668 681 ; C -1 ; WX 720 ; N Atilde ; B -34 0 763 870 ; C -1 ; WX 720 ; N Aogonek ; B -34 -199 763 681 ; C -1 ; WX 720 ; N Aring ; B -34 0 763 934 ; C -1 ; WX 800 ; N Otilde ; B 35 -17 769 870 ; C -1 ; WX 560 ; N zdotaccent ; B 22 0 547 754 ; C -1 ; WX 720 ; N Ecaron ; B 20 0 724 896 ; C -1 ; WX 400 ; N Iogonek ; B 20 -204 379 681 ; C -1 ; WX 660 ; N kcommaaccent ; B 22 -249 643 725 ; C -1 ; WX 600 ; N minus ; B 51 207 555 323 ; C -1 ; WX 400 ; N Icircumflex ; B 18 0 380 910 ; C -1 ; WX 680 ; N ncaron ; B 22 0 652 717 ; C -1 ; WX 460 ; N tcommaaccent ; B 22 -249 445 660 ; C -1 ; WX 600 ; N logicalnot ; B 51 129 555 421 ; C -1 ; WX 620 ; N odieresis ; B 31 -8 585 698 ; C -1 ; WX 660 ; N udieresis ; B 22 -8 653 698 ; C -1 ; WX 549 ; N notequal ; B 15 -49 540 570 ; C -1 ; WX 580 ; N gcommaaccent ; B 9 -243 583 785 ; C -1 ; WX 620 ; N eth ; B 31 -8 585 741 ; C -1 ; WX 560 ; N zcaron ; B 22 0 547 717 ; C -1 ; WX 680 ; N ncommaaccent ; B 22 -249 652 515 ; C -1 ; WX 396 ; N onesuperior ; B 65 279 345 687 ; C -1 ; WX 360 ; N imacron ; B 18 0 335 663 ; EndCharMetrics StartKernData StartKernPairs 912 KPX A T -40 KPX A Tcaron -40 KPX A Tcommaaccent -40 KPX A V -68 KPX A W -20 KPX A Y -52 KPX A Yacute -52 KPX A Ydieresis -52 KPX A v -8 KPX A w -9 KPX A y -1 KPX A yacute -1 KPX A ydieresis -1 KPX Aacute T -40 KPX Aacute Tcaron -40 KPX Aacute Tcommaaccent -40 KPX Aacute V -68 KPX Aacute W -20 KPX Aacute Y -52 KPX Aacute Yacute -52 KPX Aacute Ydieresis -52 KPX Aacute v -8 KPX Aacute w -9 KPX Aacute y -1 KPX Aacute yacute -1 KPX Aacute ydieresis -1 KPX Abreve T -40 KPX Abreve Tcaron -40 KPX Abreve Tcommaaccent -40 KPX Abreve V -68 KPX Abreve W -20 KPX Abreve Y -52 KPX Abreve Yacute -52 KPX Abreve Ydieresis -52 KPX Abreve v -8 KPX Abreve w -9 KPX Abreve y -1 KPX Abreve yacute -1 KPX Abreve ydieresis -1 KPX Acircumflex T -40 KPX Acircumflex Tcaron -40 KPX Acircumflex Tcommaaccent -40 KPX Acircumflex V -68 KPX Acircumflex W -20 KPX Acircumflex Y -52 KPX Acircumflex Yacute -52 KPX Acircumflex Ydieresis -52 KPX Acircumflex v -8 KPX Acircumflex w -9 KPX Acircumflex y -1 KPX Acircumflex yacute -1 KPX Acircumflex ydieresis -1 KPX Adieresis T -40 KPX Adieresis Tcaron -40 KPX Adieresis Tcommaaccent -40 KPX Adieresis V -68 KPX Adieresis W -20 KPX Adieresis Y -52 KPX Adieresis Yacute -52 KPX Adieresis Ydieresis -52 KPX Adieresis v -8 KPX Adieresis w -9 KPX Adieresis y -1 KPX Adieresis yacute -1 KPX Adieresis ydieresis -1 KPX Agrave T -40 KPX Agrave Tcaron -40 KPX Agrave Tcommaaccent -40 KPX Agrave V -68 KPX Agrave W -20 KPX Agrave Y -52 KPX Agrave Yacute -52 KPX Agrave Ydieresis -52 KPX Agrave v -8 KPX Agrave w -9 KPX Agrave y -1 KPX Agrave yacute -1 KPX Agrave ydieresis -1 KPX Amacron T -40 KPX Amacron Tcaron -40 KPX Amacron Tcommaaccent -40 KPX Amacron V -68 KPX Amacron W -20 KPX Amacron Y -52 KPX Amacron Yacute -52 KPX Amacron Ydieresis -52 KPX Amacron v -8 KPX Amacron w -9 KPX Amacron y -1 KPX Amacron yacute -1 KPX Amacron ydieresis -1 KPX Aogonek T -40 KPX Aogonek Tcaron -40 KPX Aogonek Tcommaaccent -40 KPX Aogonek V -68 KPX Aogonek W -20 KPX Aogonek Y -52 KPX Aogonek Yacute -52 KPX Aogonek Ydieresis -52 KPX Aogonek v -8 KPX Aogonek w -9 KPX Aogonek y -1 KPX Aogonek yacute -1 KPX Aogonek ydieresis -1 KPX Aring T -40 KPX Aring Tcaron -40 KPX Aring Tcommaaccent -40 KPX Aring V -68 KPX Aring W -20 KPX Aring Y -52 KPX Aring Yacute -52 KPX Aring Ydieresis -52 KPX Aring v -8 KPX Aring w -9 KPX Aring y -1 KPX Aring yacute -1 KPX Aring ydieresis -1 KPX Atilde T -40 KPX Atilde Tcaron -40 KPX Atilde Tcommaaccent -40 KPX Atilde V -68 KPX Atilde W -20 KPX Atilde Y -52 KPX Atilde Yacute -52 KPX Atilde Ydieresis -52 KPX Atilde v -8 KPX Atilde w -9 KPX Atilde y -1 KPX Atilde yacute -1 KPX Atilde ydieresis -1 KPX F A -59 KPX F Aacute -59 KPX F Abreve -59 KPX F Acircumflex -59 KPX F Adieresis -59 KPX F Agrave -59 KPX F Amacron -59 KPX F Aogonek -59 KPX F Aring -59 KPX F Atilde -59 KPX F comma -130 KPX F period -132 KPX L T -4 KPX L Tcaron -4 KPX L Tcommaaccent -4 KPX L V -50 KPX L W -41 KPX L Y -35 KPX L Yacute -35 KPX L Ydieresis -35 KPX L y 19 KPX L yacute 19 KPX L ydieresis 19 KPX Lacute T -4 KPX Lacute Tcaron -4 KPX Lacute Tcommaaccent -4 KPX Lacute V -50 KPX Lacute W -41 KPX Lacute Y -35 KPX Lacute Yacute -35 KPX Lacute Ydieresis -35 KPX Lacute y 19 KPX Lacute yacute 19 KPX Lacute ydieresis 19 KPX Lcaron T -4 KPX Lcaron Tcaron -4 KPX Lcaron Tcommaaccent -4 KPX Lcaron y 19 KPX Lcaron yacute 19 KPX Lcaron ydieresis 19 KPX Lcommaaccent T -4 KPX Lcommaaccent Tcaron -4 KPX Lcommaaccent Tcommaaccent -4 KPX Lcommaaccent V -50 KPX Lcommaaccent W -41 KPX Lcommaaccent Y -35 KPX Lcommaaccent Yacute -35 KPX Lcommaaccent Ydieresis -35 KPX Lcommaaccent y 19 KPX Lcommaaccent yacute 19 KPX Lcommaaccent ydieresis 19 KPX Lslash T -4 KPX Lslash Tcaron -4 KPX Lslash Tcommaaccent -4 KPX Lslash V -50 KPX Lslash W -41 KPX Lslash Y -35 KPX Lslash Yacute -35 KPX Lslash Ydieresis -35 KPX Lslash y 19 KPX Lslash yacute 19 KPX Lslash ydieresis 19 KPX P A -46 KPX P Aacute -46 KPX P Abreve -46 KPX P Acircumflex -46 KPX P Adieresis -46 KPX P Agrave -46 KPX P Amacron -46 KPX P Aogonek -46 KPX P Aring -46 KPX P Atilde -46 KPX P comma -129 KPX P period -128 KPX R T -4 KPX R Tcaron -4 KPX R Tcommaaccent -4 KPX R V -29 KPX R W -24 KPX R Y -20 KPX R Yacute -20 KPX R Ydieresis -20 KPX R y -8 KPX R yacute -8 KPX R ydieresis -8 KPX Racute T -4 KPX Racute Tcaron -4 KPX Racute Tcommaaccent -4 KPX Racute V -29 KPX Racute W -24 KPX Racute Y -20 KPX Racute Yacute -20 KPX Racute Ydieresis -20 KPX Racute y -8 KPX Racute yacute -8 KPX Racute ydieresis -8 KPX Rcaron T -4 KPX Rcaron Tcaron -4 KPX Rcaron Tcommaaccent -4 KPX Rcaron V -29 KPX Rcaron W -24 KPX Rcaron Y -20 KPX Rcaron Yacute -20 KPX Rcaron Ydieresis -20 KPX Rcaron y -8 KPX Rcaron yacute -8 KPX Rcaron ydieresis -8 KPX Rcommaaccent T -4 KPX Rcommaaccent Tcaron -4 KPX Rcommaaccent Tcommaaccent -4 KPX Rcommaaccent V -29 KPX Rcommaaccent W -24 KPX Rcommaaccent Y -20 KPX Rcommaaccent Yacute -20 KPX Rcommaaccent Ydieresis -20 KPX Rcommaaccent y -8 KPX Rcommaaccent yacute -8 KPX Rcommaaccent ydieresis -8 KPX T A -42 KPX T Aacute -42 KPX T Abreve -42 KPX T Acircumflex -42 KPX T Adieresis -42 KPX T Agrave -42 KPX T Amacron -42 KPX T Aogonek -42 KPX T Aring -42 KPX T Atilde -42 KPX T a -24 KPX T aacute -24 KPX T abreve -24 KPX T acircumflex -24 KPX T adieresis -24 KPX T agrave -24 KPX T amacron -24 KPX T aogonek -24 KPX T aring -24 KPX T atilde -24 KPX T c -29 KPX T cacute -29 KPX T ccaron -29 KPX T ccedilla -29 KPX T colon 7 KPX T comma -122 KPX T e -29 KPX T eacute -29 KPX T ecaron -29 KPX T ecircumflex -29 KPX T edieresis -29 KPX T edotaccent -29 KPX T egrave -29 KPX T emacron -29 KPX T eogonek -29 KPX T hyphen -10 KPX T i 27 KPX T iacute 27 KPX T icircumflex 27 KPX T idieresis 27 KPX T igrave 27 KPX T imacron 27 KPX T iogonek 27 KPX T o -28 KPX T oacute -28 KPX T ocircumflex -28 KPX T odieresis -28 KPX T ograve -28 KPX T ohungarumlaut -28 KPX T omacron -28 KPX T oslash -28 KPX T otilde -28 KPX T period -122 KPX T r 27 KPX T racute 27 KPX T rcaron 27 KPX T rcommaaccent 27 KPX T s -10 KPX T sacute -10 KPX T scaron -10 KPX T scedilla -10 KPX T scommaaccent -10 KPX T semicolon 5 KPX Tcaron A -42 KPX Tcaron Aacute -42 KPX Tcaron Abreve -42 KPX Tcaron Acircumflex -42 KPX Tcaron Adieresis -42 KPX Tcaron Agrave -42 KPX Tcaron Amacron -42 KPX Tcaron Aogonek -42 KPX Tcaron Aring -42 KPX Tcaron Atilde -42 KPX Tcaron a -24 KPX Tcaron aacute -24 KPX Tcaron abreve -24 KPX Tcaron acircumflex -24 KPX Tcaron adieresis -24 KPX Tcaron agrave -24 KPX Tcaron amacron -24 KPX Tcaron aogonek -24 KPX Tcaron aring -24 KPX Tcaron atilde -24 KPX Tcaron c -29 KPX Tcaron cacute -29 KPX Tcaron ccaron -29 KPX Tcaron ccedilla -29 KPX Tcaron colon 7 KPX Tcaron comma -122 KPX Tcaron e -29 KPX Tcaron eacute -29 KPX Tcaron ecaron -29 KPX Tcaron ecircumflex -29 KPX Tcaron edieresis -29 KPX Tcaron edotaccent -29 KPX Tcaron egrave -29 KPX Tcaron emacron -29 KPX Tcaron eogonek -29 KPX Tcaron hyphen -10 KPX Tcaron i 27 KPX Tcaron iacute 27 KPX Tcaron icircumflex 27 KPX Tcaron idieresis 27 KPX Tcaron igrave 27 KPX Tcaron imacron 27 KPX Tcaron iogonek 27 KPX Tcaron o -28 KPX Tcaron oacute -28 KPX Tcaron ocircumflex -28 KPX Tcaron odieresis -28 KPX Tcaron ograve -28 KPX Tcaron ohungarumlaut -28 KPX Tcaron omacron -28 KPX Tcaron oslash -28 KPX Tcaron otilde -28 KPX Tcaron period -122 KPX Tcaron r 27 KPX Tcaron racute 27 KPX Tcaron rcaron 27 KPX Tcaron rcommaaccent 27 KPX Tcaron s -10 KPX Tcaron sacute -10 KPX Tcaron scaron -10 KPX Tcaron scedilla -10 KPX Tcaron scommaaccent -10 KPX Tcaron semicolon 5 KPX Tcommaaccent A -42 KPX Tcommaaccent Aacute -42 KPX Tcommaaccent Abreve -42 KPX Tcommaaccent Acircumflex -42 KPX Tcommaaccent Adieresis -42 KPX Tcommaaccent Agrave -42 KPX Tcommaaccent Amacron -42 KPX Tcommaaccent Aogonek -42 KPX Tcommaaccent Aring -42 KPX Tcommaaccent Atilde -42 KPX Tcommaaccent a -24 KPX Tcommaaccent aacute -24 KPX Tcommaaccent abreve -24 KPX Tcommaaccent acircumflex -24 KPX Tcommaaccent adieresis -24 KPX Tcommaaccent agrave -24 KPX Tcommaaccent amacron -24 KPX Tcommaaccent aogonek -24 KPX Tcommaaccent aring -24 KPX Tcommaaccent atilde -24 KPX Tcommaaccent c -29 KPX Tcommaaccent cacute -29 KPX Tcommaaccent ccaron -29 KPX Tcommaaccent ccedilla -29 KPX Tcommaaccent colon 7 KPX Tcommaaccent comma -122 KPX Tcommaaccent e -29 KPX Tcommaaccent eacute -29 KPX Tcommaaccent ecaron -29 KPX Tcommaaccent ecircumflex -29 KPX Tcommaaccent edieresis -29 KPX Tcommaaccent edotaccent -29 KPX Tcommaaccent egrave -29 KPX Tcommaaccent emacron -29 KPX Tcommaaccent eogonek -29 KPX Tcommaaccent hyphen -10 KPX Tcommaaccent i 27 KPX Tcommaaccent iacute 27 KPX Tcommaaccent icircumflex 27 KPX Tcommaaccent idieresis 27 KPX Tcommaaccent igrave 27 KPX Tcommaaccent imacron 27 KPX Tcommaaccent iogonek 27 KPX Tcommaaccent o -28 KPX Tcommaaccent oacute -28 KPX Tcommaaccent ocircumflex -28 KPX Tcommaaccent odieresis -28 KPX Tcommaaccent ograve -28 KPX Tcommaaccent ohungarumlaut -28 KPX Tcommaaccent omacron -28 KPX Tcommaaccent oslash -28 KPX Tcommaaccent otilde -28 KPX Tcommaaccent period -122 KPX Tcommaaccent r 27 KPX Tcommaaccent racute 27 KPX Tcommaaccent rcaron 27 KPX Tcommaaccent rcommaaccent 27 KPX Tcommaaccent s -10 KPX Tcommaaccent sacute -10 KPX Tcommaaccent scaron -10 KPX Tcommaaccent scedilla -10 KPX Tcommaaccent scommaaccent -10 KPX Tcommaaccent semicolon 5 KPX V A -88 KPX V Aacute -88 KPX V Abreve -88 KPX V Acircumflex -88 KPX V Adieresis -88 KPX V Agrave -88 KPX V Amacron -88 KPX V Aogonek -88 KPX V Aring -88 KPX V Atilde -88 KPX V a -74 KPX V aacute -74 KPX V abreve -74 KPX V acircumflex -74 KPX V adieresis -74 KPX V agrave -74 KPX V amacron -74 KPX V aogonek -74 KPX V aring -74 KPX V atilde -74 KPX V colon -37 KPX V comma -103 KPX V e -80 KPX V eacute -80 KPX V ecaron -80 KPX V ecircumflex -80 KPX V edieresis -80 KPX V edotaccent -80 KPX V egrave -80 KPX V emacron -80 KPX V eogonek -80 KPX V hyphen -10 KPX V i 15 KPX V iacute 15 KPX V icircumflex 15 KPX V idieresis 15 KPX V igrave 15 KPX V imacron 15 KPX V iogonek 15 KPX V o -79 KPX V oacute -79 KPX V ocircumflex -79 KPX V odieresis -79 KPX V ograve -79 KPX V ohungarumlaut -79 KPX V omacron -79 KPX V oslash -79 KPX V otilde -79 KPX V period -105 KPX V r -15 KPX V racute -15 KPX V rcaron -15 KPX V rcommaaccent -15 KPX V semicolon -38 KPX V u -11 KPX V uacute -11 KPX V ucircumflex -11 KPX V udieresis -11 KPX V ugrave -11 KPX V uhungarumlaut -11 KPX V umacron -11 KPX V uogonek -11 KPX V uring -11 KPX V y 12 KPX V yacute 12 KPX V ydieresis 12 KPX W A -60 KPX W Aacute -60 KPX W Abreve -60 KPX W Acircumflex -60 KPX W Adieresis -60 KPX W Agrave -60 KPX W Amacron -60 KPX W Aogonek -60 KPX W Aring -60 KPX W Atilde -60 KPX W a -73 KPX W aacute -73 KPX W abreve -73 KPX W acircumflex -73 KPX W adieresis -73 KPX W agrave -73 KPX W amacron -73 KPX W aogonek -73 KPX W aring -73 KPX W atilde -73 KPX W colon -37 KPX W comma -103 KPX W e -79 KPX W eacute -79 KPX W ecaron -79 KPX W ecircumflex -79 KPX W edieresis -79 KPX W edotaccent -79 KPX W egrave -79 KPX W emacron -79 KPX W eogonek -79 KPX W hyphen -10 KPX W i 15 KPX W iacute 15 KPX W icircumflex 15 KPX W idieresis 15 KPX W igrave 15 KPX W imacron 15 KPX W iogonek 15 KPX W o -78 KPX W oacute -78 KPX W ocircumflex -78 KPX W odieresis -78 KPX W ograve -78 KPX W ohungarumlaut -78 KPX W omacron -78 KPX W oslash -78 KPX W otilde -78 KPX W period -105 KPX W r -15 KPX W racute -15 KPX W rcaron -15 KPX W rcommaaccent -15 KPX W semicolon -38 KPX W u -11 KPX W uacute -11 KPX W ucircumflex -11 KPX W udieresis -11 KPX W ugrave -11 KPX W uhungarumlaut -11 KPX W umacron -11 KPX W uogonek -11 KPX W uring -11 KPX W y 12 KPX W yacute 12 KPX W ydieresis 12 KPX Y A -56 KPX Y Aacute -56 KPX Y Abreve -56 KPX Y Acircumflex -56 KPX Y Adieresis -56 KPX Y Agrave -56 KPX Y Amacron -56 KPX Y Aogonek -56 KPX Y Aring -56 KPX Y Atilde -56 KPX Y a -60 KPX Y aacute -60 KPX Y abreve -60 KPX Y acircumflex -60 KPX Y adieresis -60 KPX Y agrave -60 KPX Y amacron -60 KPX Y aogonek -60 KPX Y aring -60 KPX Y atilde -60 KPX Y colon -32 KPX Y comma -103 KPX Y e -67 KPX Y eacute -67 KPX Y ecaron -67 KPX Y ecircumflex -67 KPX Y edieresis -67 KPX Y edotaccent -67 KPX Y egrave -67 KPX Y emacron -67 KPX Y eogonek -67 KPX Y hyphen -10 KPX Y i 2 KPX Y iacute 2 KPX Y icircumflex 12 KPX Y idieresis 12 KPX Y igrave 12 KPX Y imacron 12 KPX Y iogonek 2 KPX Y o -66 KPX Y oacute -66 KPX Y ocircumflex -66 KPX Y odieresis -66 KPX Y ograve -66 KPX Y ohungarumlaut -66 KPX Y omacron -66 KPX Y oslash -66 KPX Y otilde -66 KPX Y p -23 KPX Y period -105 KPX Y q -66 KPX Y semicolon -34 KPX Y u -13 KPX Y uacute -13 KPX Y ucircumflex -13 KPX Y udieresis -13 KPX Y ugrave -13 KPX Y uhungarumlaut -13 KPX Y umacron -13 KPX Y uogonek -13 KPX Y uring -13 KPX Y v 24 KPX Yacute A -56 KPX Yacute Aacute -56 KPX Yacute Abreve -56 KPX Yacute Acircumflex -56 KPX Yacute Adieresis -56 KPX Yacute Agrave -56 KPX Yacute Amacron -56 KPX Yacute Aogonek -56 KPX Yacute Aring -56 KPX Yacute Atilde -56 KPX Yacute a -60 KPX Yacute aacute -60 KPX Yacute abreve -60 KPX Yacute acircumflex -60 KPX Yacute adieresis -60 KPX Yacute agrave -60 KPX Yacute amacron -60 KPX Yacute aogonek -60 KPX Yacute aring -60 KPX Yacute atilde -60 KPX Yacute colon -32 KPX Yacute comma -103 KPX Yacute e -67 KPX Yacute eacute -67 KPX Yacute ecaron -67 KPX Yacute ecircumflex -67 KPX Yacute edieresis -67 KPX Yacute edotaccent -67 KPX Yacute egrave -67 KPX Yacute emacron -67 KPX Yacute eogonek -67 KPX Yacute hyphen -10 KPX Yacute i 2 KPX Yacute iacute 2 KPX Yacute icircumflex 12 KPX Yacute idieresis 12 KPX Yacute igrave 12 KPX Yacute imacron 12 KPX Yacute iogonek 2 KPX Yacute o -66 KPX Yacute oacute -66 KPX Yacute ocircumflex -66 KPX Yacute odieresis -66 KPX Yacute ograve -66 KPX Yacute ohungarumlaut -66 KPX Yacute omacron -66 KPX Yacute oslash -66 KPX Yacute otilde -66 KPX Yacute p -23 KPX Yacute period -105 KPX Yacute q -66 KPX Yacute semicolon -34 KPX Yacute u -13 KPX Yacute uacute -13 KPX Yacute ucircumflex -13 KPX Yacute udieresis -13 KPX Yacute ugrave -13 KPX Yacute uhungarumlaut -13 KPX Yacute umacron -13 KPX Yacute uogonek -13 KPX Yacute uring -13 KPX Yacute v 24 KPX Ydieresis A -56 KPX Ydieresis Aacute -56 KPX Ydieresis Abreve -56 KPX Ydieresis Acircumflex -56 KPX Ydieresis Adieresis -56 KPX Ydieresis Agrave -56 KPX Ydieresis Amacron -56 KPX Ydieresis Aogonek -56 KPX Ydieresis Aring -56 KPX Ydieresis Atilde -56 KPX Ydieresis a -60 KPX Ydieresis aacute -60 KPX Ydieresis abreve -60 KPX Ydieresis acircumflex -60 KPX Ydieresis adieresis -60 KPX Ydieresis agrave -60 KPX Ydieresis amacron -60 KPX Ydieresis aogonek -60 KPX Ydieresis aring -60 KPX Ydieresis atilde -60 KPX Ydieresis colon -32 KPX Ydieresis comma -103 KPX Ydieresis e -67 KPX Ydieresis eacute -67 KPX Ydieresis ecaron -67 KPX Ydieresis ecircumflex -67 KPX Ydieresis edieresis -67 KPX Ydieresis edotaccent -67 KPX Ydieresis egrave -67 KPX Ydieresis emacron -67 KPX Ydieresis eogonek -67 KPX Ydieresis hyphen -10 KPX Ydieresis i 2 KPX Ydieresis iacute 2 KPX Ydieresis icircumflex 12 KPX Ydieresis idieresis 12 KPX Ydieresis igrave 12 KPX Ydieresis imacron 12 KPX Ydieresis iogonek 2 KPX Ydieresis o -66 KPX Ydieresis oacute -66 KPX Ydieresis ocircumflex -66 KPX Ydieresis odieresis -66 KPX Ydieresis ograve -66 KPX Ydieresis ohungarumlaut -66 KPX Ydieresis omacron -66 KPX Ydieresis oslash -66 KPX Ydieresis otilde -66 KPX Ydieresis p -23 KPX Ydieresis period -105 KPX Ydieresis q -66 KPX Ydieresis semicolon -34 KPX Ydieresis u -13 KPX Ydieresis uacute -13 KPX Ydieresis ucircumflex -13 KPX Ydieresis udieresis -13 KPX Ydieresis ugrave -13 KPX Ydieresis uhungarumlaut -13 KPX Ydieresis umacron -13 KPX Ydieresis uogonek -13 KPX Ydieresis uring -13 KPX Ydieresis v 24 KPX f f 21 KPX r c -9 KPX r cacute -9 KPX r ccaron -9 KPX r ccedilla -9 KPX r comma -101 KPX r d -10 KPX r dcroat -10 KPX r e -10 KPX r eacute -10 KPX r ecaron -10 KPX r ecircumflex -10 KPX r edieresis -10 KPX r edotaccent -10 KPX r egrave -10 KPX r emacron -10 KPX r eogonek -10 KPX r f 20 KPX r g -9 KPX r gbreve -9 KPX r gcommaaccent -9 KPX r h -23 KPX r hyphen -10 KPX r m 20 KPX r n 20 KPX r nacute 20 KPX r ncaron 20 KPX r ncommaaccent 20 KPX r ntilde 20 KPX r o -9 KPX r oacute -9 KPX r ocircumflex -9 KPX r odieresis -9 KPX r ograve -9 KPX r ohungarumlaut -9 KPX r omacron -9 KPX r oslash -9 KPX r otilde -9 KPX r period -102 KPX r q -9 KPX racute c -9 KPX racute cacute -9 KPX racute ccaron -9 KPX racute ccedilla -9 KPX racute comma -101 KPX racute d -10 KPX racute dcroat -10 KPX racute e -10 KPX racute eacute -10 KPX racute ecaron -10 KPX racute ecircumflex -10 KPX racute edieresis -10 KPX racute edotaccent -10 KPX racute egrave -10 KPX racute emacron -10 KPX racute eogonek -10 KPX racute f 20 KPX racute g -9 KPX racute gbreve -9 KPX racute gcommaaccent -9 KPX racute h -23 KPX racute hyphen -10 KPX racute m 20 KPX racute n 20 KPX racute nacute 20 KPX racute ncaron 20 KPX racute ncommaaccent 20 KPX racute ntilde 20 KPX racute o -9 KPX racute oacute -9 KPX racute ocircumflex -9 KPX racute odieresis -9 KPX racute ograve -9 KPX racute ohungarumlaut -9 KPX racute omacron -9 KPX racute oslash -9 KPX racute otilde -9 KPX racute period -102 KPX racute q -9 KPX rcaron c -9 KPX rcaron cacute -9 KPX rcaron ccaron -9 KPX rcaron ccedilla -9 KPX rcaron comma -101 KPX rcaron d -10 KPX rcaron dcroat -10 KPX rcaron e -10 KPX rcaron eacute -10 KPX rcaron ecaron -10 KPX rcaron ecircumflex -10 KPX rcaron edieresis -10 KPX rcaron edotaccent -10 KPX rcaron egrave -10 KPX rcaron emacron -10 KPX rcaron eogonek -10 KPX rcaron f 20 KPX rcaron g -9 KPX rcaron gbreve -9 KPX rcaron gcommaaccent -9 KPX rcaron h -23 KPX rcaron hyphen -10 KPX rcaron m 20 KPX rcaron n 20 KPX rcaron nacute 20 KPX rcaron ncaron 20 KPX rcaron ncommaaccent 20 KPX rcaron ntilde 20 KPX rcaron o -9 KPX rcaron oacute -9 KPX rcaron ocircumflex -9 KPX rcaron odieresis -9 KPX rcaron ograve -9 KPX rcaron ohungarumlaut -9 KPX rcaron omacron -9 KPX rcaron oslash -9 KPX rcaron otilde -9 KPX rcaron period -102 KPX rcaron q -9 KPX rcommaaccent c -9 KPX rcommaaccent cacute -9 KPX rcommaaccent ccaron -9 KPX rcommaaccent ccedilla -9 KPX rcommaaccent comma -101 KPX rcommaaccent d -10 KPX rcommaaccent dcroat -10 KPX rcommaaccent e -10 KPX rcommaaccent eacute -10 KPX rcommaaccent ecaron -10 KPX rcommaaccent ecircumflex -10 KPX rcommaaccent edieresis -10 KPX rcommaaccent edotaccent -10 KPX rcommaaccent egrave -10 KPX rcommaaccent emacron -10 KPX rcommaaccent eogonek -10 KPX rcommaaccent f 20 KPX rcommaaccent g -9 KPX rcommaaccent gbreve -9 KPX rcommaaccent gcommaaccent -9 KPX rcommaaccent h -23 KPX rcommaaccent hyphen -10 KPX rcommaaccent m 20 KPX rcommaaccent n 20 KPX rcommaaccent nacute 20 KPX rcommaaccent ncaron 20 KPX rcommaaccent ncommaaccent 20 KPX rcommaaccent ntilde 20 KPX rcommaaccent o -9 KPX rcommaaccent oacute -9 KPX rcommaaccent ocircumflex -9 KPX rcommaaccent odieresis -9 KPX rcommaaccent ograve -9 KPX rcommaaccent ohungarumlaut -9 KPX rcommaaccent omacron -9 KPX rcommaaccent oslash -9 KPX rcommaaccent otilde -9 KPX rcommaaccent period -102 KPX rcommaaccent q -9 EndKernPairs EndKernData EndFontMetrics gle-graphics-4.2.4c/src/fonts/Adobe-Core35_AFMs-314/Helvetica-NarrowOblique.afm0000664000000000000000000022107511405446017025265 0ustar rootrootStartFontMetrics 4.1 Comment Copyright (c) 1985, 1987, 1989, 1990, 1997 Adobe Systems Incorporated. All Rights Reserved. Comment Creation Date: Fri May 2 17:03:30 1997 Comment UniqueID 43180 Comment VMusage 14960 69346 FontName Helvetica-Narrow-Oblique FullName Helvetica Narrow Oblique FamilyName Helvetica Weight Medium ItalicAngle -12 IsFixedPitch false FontBBox -139 -225 915 931 UnderlinePosition -100 UnderlineThickness 50 Version 002.000 Notice Copyright (c) 1985, 1987, 1989, 1990, 1997 Adobe Systems Incorporated. All Rights Reserved.Helvetica is a trademark of Linotype-Hell AG and/or its subsidiaries. EncodingScheme AdobeStandardEncoding CapHeight 718 XHeight 523 Ascender 718 Descender -207 StdHW 76 StdVW 88 StartCharMetrics 314 C 32 ; WX 228 ; N space ; B 0 0 0 0 ; C 33 ; WX 228 ; N exclam ; B 74 0 278 718 ; C 34 ; WX 291 ; N quotedbl ; B 138 463 359 718 ; C 35 ; WX 456 ; N numbersign ; B 60 0 517 688 ; C 36 ; WX 456 ; N dollar ; B 57 -115 506 775 ; C 37 ; WX 729 ; N percent ; B 120 -19 729 703 ; C 38 ; WX 547 ; N ampersand ; B 63 -15 530 718 ; C 39 ; WX 182 ; N quoteright ; B 124 463 254 718 ; C 40 ; WX 273 ; N parenleft ; B 89 -207 372 733 ; C 41 ; WX 273 ; N parenright ; B -7 -207 276 733 ; C 42 ; WX 319 ; N asterisk ; B 135 431 389 718 ; C 43 ; WX 479 ; N plus ; B 70 0 497 505 ; C 44 ; WX 228 ; N comma ; B 46 -147 175 106 ; C 45 ; WX 273 ; N hyphen ; B 77 232 293 322 ; C 46 ; WX 228 ; N period ; B 71 0 175 106 ; C 47 ; WX 228 ; N slash ; B -17 -19 370 737 ; C 48 ; WX 456 ; N zero ; B 77 -19 499 703 ; C 49 ; WX 456 ; N one ; B 170 0 417 703 ; C 50 ; WX 456 ; N two ; B 21 0 506 703 ; C 51 ; WX 456 ; N three ; B 61 -19 500 703 ; C 52 ; WX 456 ; N four ; B 50 0 472 703 ; C 53 ; WX 456 ; N five ; B 55 -19 509 688 ; C 54 ; WX 456 ; N six ; B 74 -19 505 703 ; C 55 ; WX 456 ; N seven ; B 112 0 549 688 ; C 56 ; WX 456 ; N eight ; B 60 -19 497 703 ; C 57 ; WX 456 ; N nine ; B 67 -19 499 703 ; C 58 ; WX 228 ; N colon ; B 71 0 247 516 ; C 59 ; WX 228 ; N semicolon ; B 46 -147 247 516 ; C 60 ; WX 479 ; N less ; B 77 11 526 495 ; C 61 ; WX 479 ; N equal ; B 52 115 515 390 ; C 62 ; WX 479 ; N greater ; B 41 11 490 495 ; C 63 ; WX 456 ; N question ; B 132 0 500 727 ; C 64 ; WX 832 ; N at ; B 176 -19 791 737 ; C 65 ; WX 547 ; N A ; B 11 0 536 718 ; C 66 ; WX 547 ; N B ; B 61 0 583 718 ; C 67 ; WX 592 ; N C ; B 88 -19 640 737 ; C 68 ; WX 592 ; N D ; B 66 0 626 718 ; C 69 ; WX 547 ; N E ; B 71 0 625 718 ; C 70 ; WX 501 ; N F ; B 71 0 603 718 ; C 71 ; WX 638 ; N G ; B 91 -19 655 737 ; C 72 ; WX 592 ; N H ; B 63 0 655 718 ; C 73 ; WX 228 ; N I ; B 75 0 279 718 ; C 74 ; WX 410 ; N J ; B 39 -19 476 718 ; C 75 ; WX 547 ; N K ; B 62 0 662 718 ; C 76 ; WX 456 ; N L ; B 62 0 455 718 ; C 77 ; WX 683 ; N M ; B 60 0 749 718 ; C 78 ; WX 592 ; N N ; B 62 0 655 718 ; C 79 ; WX 638 ; N O ; B 86 -19 677 737 ; C 80 ; WX 547 ; N P ; B 71 0 604 718 ; C 81 ; WX 638 ; N Q ; B 86 -56 677 737 ; C 82 ; WX 592 ; N R ; B 72 0 634 718 ; C 83 ; WX 547 ; N S ; B 74 -19 584 737 ; C 84 ; WX 501 ; N T ; B 122 0 615 718 ; C 85 ; WX 592 ; N U ; B 101 -19 653 718 ; C 86 ; WX 547 ; N V ; B 142 0 656 718 ; C 87 ; WX 774 ; N W ; B 138 0 886 718 ; C 88 ; WX 547 ; N X ; B 16 0 647 718 ; C 89 ; WX 547 ; N Y ; B 137 0 661 718 ; C 90 ; WX 501 ; N Z ; B 19 0 607 718 ; C 91 ; WX 228 ; N bracketleft ; B 17 -196 331 722 ; C 92 ; WX 228 ; N backslash ; B 115 -19 239 737 ; C 93 ; WX 228 ; N bracketright ; B -11 -196 302 722 ; C 94 ; WX 385 ; N asciicircum ; B 35 264 442 688 ; C 95 ; WX 456 ; N underscore ; B -22 -125 443 -75 ; C 96 ; WX 182 ; N quoteleft ; B 135 470 265 725 ; C 97 ; WX 456 ; N a ; B 50 -15 458 538 ; C 98 ; WX 456 ; N b ; B 48 -15 479 718 ; C 99 ; WX 410 ; N c ; B 61 -15 454 538 ; C 100 ; WX 456 ; N d ; B 69 -15 534 718 ; C 101 ; WX 456 ; N e ; B 69 -15 474 538 ; C 102 ; WX 228 ; N f ; B 71 0 341 728 ; L i fi ; L l fl ; C 103 ; WX 456 ; N g ; B 34 -220 500 538 ; C 104 ; WX 456 ; N h ; B 53 0 470 718 ; C 105 ; WX 182 ; N i ; B 55 0 252 718 ; C 106 ; WX 182 ; N j ; B -49 -210 252 718 ; C 107 ; WX 410 ; N k ; B 55 0 492 718 ; C 108 ; WX 182 ; N l ; B 55 0 252 718 ; C 109 ; WX 683 ; N m ; B 53 0 699 538 ; C 110 ; WX 456 ; N n ; B 53 0 470 538 ; C 111 ; WX 456 ; N o ; B 68 -14 479 538 ; C 112 ; WX 456 ; N p ; B 11 -207 479 538 ; C 113 ; WX 456 ; N q ; B 69 -207 496 538 ; C 114 ; WX 273 ; N r ; B 63 0 365 538 ; C 115 ; WX 410 ; N s ; B 52 -15 434 538 ; C 116 ; WX 228 ; N t ; B 84 -7 302 669 ; C 117 ; WX 456 ; N u ; B 77 -15 492 523 ; C 118 ; WX 410 ; N v ; B 98 0 495 523 ; C 119 ; WX 592 ; N w ; B 103 0 673 523 ; C 120 ; WX 410 ; N x ; B 9 0 487 523 ; C 121 ; WX 410 ; N y ; B 12 -214 492 523 ; C 122 ; WX 410 ; N z ; B 25 0 468 523 ; C 123 ; WX 274 ; N braceleft ; B 75 -196 365 722 ; C 124 ; WX 213 ; N bar ; B 38 -225 272 775 ; C 125 ; WX 274 ; N braceright ; B 0 -196 291 722 ; C 126 ; WX 479 ; N asciitilde ; B 91 180 476 326 ; C 161 ; WX 273 ; N exclamdown ; B 63 -195 267 523 ; C 162 ; WX 456 ; N cent ; B 78 -115 479 623 ; C 163 ; WX 456 ; N sterling ; B 40 -16 520 718 ; C 164 ; WX 137 ; N fraction ; B -139 -19 396 703 ; C 165 ; WX 456 ; N yen ; B 67 0 573 688 ; C 166 ; WX 456 ; N florin ; B -43 -207 537 737 ; C 167 ; WX 456 ; N section ; B 63 -191 479 737 ; C 168 ; WX 456 ; N currency ; B 49 99 530 603 ; C 169 ; WX 157 ; N quotesingle ; B 129 463 233 718 ; C 170 ; WX 273 ; N quotedblleft ; B 113 470 378 725 ; C 171 ; WX 456 ; N guillemotleft ; B 120 108 454 446 ; C 172 ; WX 273 ; N guilsinglleft ; B 112 108 279 446 ; C 173 ; WX 273 ; N guilsinglright ; B 91 108 257 446 ; C 174 ; WX 410 ; N fi ; B 71 0 481 728 ; C 175 ; WX 410 ; N fl ; B 71 0 479 728 ; C 177 ; WX 456 ; N endash ; B 42 240 510 313 ; C 178 ; WX 456 ; N dagger ; B 110 -159 510 718 ; C 179 ; WX 456 ; N daggerdbl ; B 43 -159 511 718 ; C 180 ; WX 228 ; N periodcentered ; B 106 190 211 315 ; C 182 ; WX 440 ; N paragraph ; B 103 -173 533 718 ; C 183 ; WX 287 ; N bullet ; B 74 202 339 517 ; C 184 ; WX 182 ; N quotesinglbase ; B 17 -149 147 106 ; C 185 ; WX 273 ; N quotedblbase ; B -5 -149 260 106 ; C 186 ; WX 273 ; N quotedblright ; B 102 463 367 718 ; C 187 ; WX 456 ; N guillemotright ; B 98 108 433 446 ; C 188 ; WX 820 ; N ellipsis ; B 94 0 744 106 ; C 189 ; WX 820 ; N perthousand ; B 72 -19 844 703 ; C 191 ; WX 501 ; N questiondown ; B 70 -201 438 525 ; C 193 ; WX 273 ; N grave ; B 139 593 276 734 ; C 194 ; WX 273 ; N acute ; B 203 593 390 734 ; C 195 ; WX 273 ; N circumflex ; B 121 593 359 734 ; C 196 ; WX 273 ; N tilde ; B 102 606 402 722 ; C 197 ; WX 273 ; N macron ; B 117 627 384 684 ; C 198 ; WX 273 ; N breve ; B 137 595 391 731 ; C 199 ; WX 273 ; N dotaccent ; B 204 604 297 706 ; C 200 ; WX 273 ; N dieresis ; B 138 604 363 706 ; C 202 ; WX 273 ; N ring ; B 175 572 330 756 ; C 203 ; WX 273 ; N cedilla ; B 2 -225 191 0 ; C 205 ; WX 273 ; N hungarumlaut ; B 129 593 463 734 ; C 206 ; WX 273 ; N ogonek ; B 35 -225 204 0 ; C 207 ; WX 273 ; N caron ; B 145 593 384 734 ; C 208 ; WX 820 ; N emdash ; B 42 240 875 313 ; C 225 ; WX 820 ; N AE ; B 7 0 899 718 ; C 227 ; WX 303 ; N ordfeminine ; B 104 405 368 737 ; C 232 ; WX 456 ; N Lslash ; B 34 0 455 718 ; C 233 ; WX 638 ; N Oslash ; B 35 -19 730 737 ; C 234 ; WX 820 ; N OE ; B 80 -19 915 737 ; C 235 ; WX 299 ; N ordmasculine ; B 115 405 384 737 ; C 241 ; WX 729 ; N ae ; B 50 -15 746 538 ; C 245 ; WX 228 ; N dotlessi ; B 78 0 241 523 ; C 248 ; WX 182 ; N lslash ; B 34 0 284 718 ; C 249 ; WX 501 ; N oslash ; B 24 -22 531 545 ; C 250 ; WX 774 ; N oe ; B 68 -15 791 538 ; C 251 ; WX 501 ; N germandbls ; B 55 -15 539 728 ; C -1 ; WX 228 ; N Idieresis ; B 75 0 375 901 ; C -1 ; WX 456 ; N eacute ; B 69 -15 481 734 ; C -1 ; WX 456 ; N abreve ; B 50 -15 474 731 ; C -1 ; WX 456 ; N uhungarumlaut ; B 77 -15 555 734 ; C -1 ; WX 456 ; N ecaron ; B 69 -15 476 734 ; C -1 ; WX 547 ; N Ydieresis ; B 137 0 661 901 ; C -1 ; WX 479 ; N divide ; B 70 -19 497 524 ; C -1 ; WX 547 ; N Yacute ; B 137 0 661 929 ; C -1 ; WX 547 ; N Acircumflex ; B 11 0 536 929 ; C -1 ; WX 456 ; N aacute ; B 50 -15 481 734 ; C -1 ; WX 592 ; N Ucircumflex ; B 101 -19 653 929 ; C -1 ; WX 410 ; N yacute ; B 12 -214 492 734 ; C -1 ; WX 410 ; N scommaaccent ; B 52 -225 434 538 ; C -1 ; WX 456 ; N ecircumflex ; B 69 -15 474 734 ; C -1 ; WX 592 ; N Uring ; B 101 -19 653 931 ; C -1 ; WX 592 ; N Udieresis ; B 101 -19 653 901 ; C -1 ; WX 456 ; N aogonek ; B 50 -220 458 538 ; C -1 ; WX 592 ; N Uacute ; B 101 -19 653 929 ; C -1 ; WX 456 ; N uogonek ; B 77 -225 492 523 ; C -1 ; WX 547 ; N Edieresis ; B 71 0 625 901 ; C -1 ; WX 592 ; N Dcroat ; B 57 0 626 718 ; C -1 ; WX 205 ; N commaaccent ; B 32 -225 141 -40 ; C -1 ; WX 604 ; N copyright ; B 44 -19 687 737 ; C -1 ; WX 547 ; N Emacron ; B 71 0 625 879 ; C -1 ; WX 410 ; N ccaron ; B 61 -15 454 734 ; C -1 ; WX 456 ; N aring ; B 50 -15 458 756 ; C -1 ; WX 592 ; N Ncommaaccent ; B 62 -225 655 718 ; C -1 ; WX 182 ; N lacute ; B 55 0 378 929 ; C -1 ; WX 456 ; N agrave ; B 50 -15 458 734 ; C -1 ; WX 501 ; N Tcommaaccent ; B 122 -225 615 718 ; C -1 ; WX 592 ; N Cacute ; B 88 -19 640 929 ; C -1 ; WX 456 ; N atilde ; B 50 -15 486 722 ; C -1 ; WX 547 ; N Edotaccent ; B 71 0 625 901 ; C -1 ; WX 410 ; N scaron ; B 52 -15 453 734 ; C -1 ; WX 410 ; N scedilla ; B 52 -225 434 538 ; C -1 ; WX 228 ; N iacute ; B 78 0 367 734 ; C -1 ; WX 386 ; N lozenge ; B 72 0 443 728 ; C -1 ; WX 592 ; N Rcaron ; B 72 0 634 929 ; C -1 ; WX 638 ; N Gcommaaccent ; B 91 -225 655 737 ; C -1 ; WX 456 ; N ucircumflex ; B 77 -15 492 734 ; C -1 ; WX 456 ; N acircumflex ; B 50 -15 458 734 ; C -1 ; WX 547 ; N Amacron ; B 11 0 555 879 ; C -1 ; WX 273 ; N rcaron ; B 63 0 417 734 ; C -1 ; WX 410 ; N ccedilla ; B 62 -225 454 538 ; C -1 ; WX 501 ; N Zdotaccent ; B 19 0 607 901 ; C -1 ; WX 547 ; N Thorn ; B 71 0 584 718 ; C -1 ; WX 638 ; N Omacron ; B 86 -19 677 879 ; C -1 ; WX 592 ; N Racute ; B 72 0 634 929 ; C -1 ; WX 547 ; N Sacute ; B 74 -19 584 929 ; C -1 ; WX 527 ; N dcaron ; B 69 -15 662 718 ; C -1 ; WX 592 ; N Umacron ; B 101 -19 653 879 ; C -1 ; WX 456 ; N uring ; B 77 -15 492 756 ; C -1 ; WX 273 ; N threesuperior ; B 74 270 358 703 ; C -1 ; WX 638 ; N Ograve ; B 86 -19 677 929 ; C -1 ; WX 547 ; N Agrave ; B 11 0 536 929 ; C -1 ; WX 547 ; N Abreve ; B 11 0 562 926 ; C -1 ; WX 479 ; N multiply ; B 41 0 526 506 ; C -1 ; WX 456 ; N uacute ; B 77 -15 492 734 ; C -1 ; WX 501 ; N Tcaron ; B 122 0 615 929 ; C -1 ; WX 390 ; N partialdiff ; B 34 -38 451 714 ; C -1 ; WX 410 ; N ydieresis ; B 12 -214 492 706 ; C -1 ; WX 592 ; N Nacute ; B 62 0 655 929 ; C -1 ; WX 228 ; N icircumflex ; B 78 0 337 734 ; C -1 ; WX 547 ; N Ecircumflex ; B 71 0 625 929 ; C -1 ; WX 456 ; N adieresis ; B 50 -15 458 706 ; C -1 ; WX 456 ; N edieresis ; B 69 -15 474 706 ; C -1 ; WX 410 ; N cacute ; B 61 -15 458 734 ; C -1 ; WX 456 ; N nacute ; B 53 0 481 734 ; C -1 ; WX 456 ; N umacron ; B 77 -15 492 684 ; C -1 ; WX 592 ; N Ncaron ; B 62 0 655 929 ; C -1 ; WX 228 ; N Iacute ; B 75 0 401 929 ; C -1 ; WX 479 ; N plusminus ; B 32 0 507 506 ; C -1 ; WX 213 ; N brokenbar ; B 51 -150 259 700 ; C -1 ; WX 604 ; N registered ; B 44 -19 687 737 ; C -1 ; WX 638 ; N Gbreve ; B 91 -19 655 926 ; C -1 ; WX 228 ; N Idotaccent ; B 75 0 309 901 ; C -1 ; WX 492 ; N summation ; B 12 -10 550 706 ; C -1 ; WX 547 ; N Egrave ; B 71 0 625 929 ; C -1 ; WX 273 ; N racute ; B 63 0 390 734 ; C -1 ; WX 456 ; N omacron ; B 68 -14 479 684 ; C -1 ; WX 501 ; N Zacute ; B 19 0 607 929 ; C -1 ; WX 501 ; N Zcaron ; B 19 0 607 929 ; C -1 ; WX 450 ; N greaterequal ; B 21 0 509 674 ; C -1 ; WX 592 ; N Eth ; B 57 0 626 718 ; C -1 ; WX 592 ; N Ccedilla ; B 88 -225 640 737 ; C -1 ; WX 182 ; N lcommaaccent ; B 21 -225 252 718 ; C -1 ; WX 260 ; N tcaron ; B 84 -7 411 808 ; C -1 ; WX 456 ; N eogonek ; B 69 -225 474 538 ; C -1 ; WX 592 ; N Uogonek ; B 101 -225 653 718 ; C -1 ; WX 547 ; N Aacute ; B 11 0 560 929 ; C -1 ; WX 547 ; N Adieresis ; B 11 0 536 901 ; C -1 ; WX 456 ; N egrave ; B 69 -15 474 734 ; C -1 ; WX 410 ; N zacute ; B 25 0 468 734 ; C -1 ; WX 182 ; N iogonek ; B -50 -225 252 718 ; C -1 ; WX 638 ; N Oacute ; B 86 -19 677 929 ; C -1 ; WX 456 ; N oacute ; B 68 -14 481 734 ; C -1 ; WX 456 ; N amacron ; B 50 -15 476 684 ; C -1 ; WX 410 ; N sacute ; B 52 -15 458 734 ; C -1 ; WX 228 ; N idieresis ; B 78 0 341 706 ; C -1 ; WX 638 ; N Ocircumflex ; B 86 -19 677 929 ; C -1 ; WX 592 ; N Ugrave ; B 101 -19 653 929 ; C -1 ; WX 502 ; N Delta ; B 5 0 499 688 ; C -1 ; WX 456 ; N thorn ; B 11 -207 479 718 ; C -1 ; WX 273 ; N twosuperior ; B 52 281 368 703 ; C -1 ; WX 638 ; N Odieresis ; B 86 -19 677 901 ; C -1 ; WX 456 ; N mu ; B 20 -207 492 523 ; C -1 ; WX 228 ; N igrave ; B 78 0 254 734 ; C -1 ; WX 456 ; N ohungarumlaut ; B 68 -14 555 734 ; C -1 ; WX 547 ; N Eogonek ; B 71 -220 625 718 ; C -1 ; WX 456 ; N dcroat ; B 69 -15 565 718 ; C -1 ; WX 684 ; N threequarters ; B 106 -19 706 703 ; C -1 ; WX 547 ; N Scedilla ; B 74 -225 584 737 ; C -1 ; WX 245 ; N lcaron ; B 55 0 380 718 ; C -1 ; WX 547 ; N Kcommaaccent ; B 62 -225 662 718 ; C -1 ; WX 456 ; N Lacute ; B 62 0 455 929 ; C -1 ; WX 820 ; N trademark ; B 152 306 866 718 ; C -1 ; WX 456 ; N edotaccent ; B 69 -15 474 706 ; C -1 ; WX 228 ; N Igrave ; B 75 0 288 929 ; C -1 ; WX 228 ; N Imacron ; B 75 0 396 879 ; C -1 ; WX 456 ; N Lcaron ; B 62 0 467 718 ; C -1 ; WX 684 ; N onehalf ; B 93 -19 688 703 ; C -1 ; WX 450 ; N lessequal ; B 21 0 546 674 ; C -1 ; WX 456 ; N ocircumflex ; B 68 -14 479 734 ; C -1 ; WX 456 ; N ntilde ; B 53 0 486 722 ; C -1 ; WX 592 ; N Uhungarumlaut ; B 101 -19 657 929 ; C -1 ; WX 547 ; N Eacute ; B 71 0 625 929 ; C -1 ; WX 456 ; N emacron ; B 69 -15 476 684 ; C -1 ; WX 456 ; N gbreve ; B 34 -220 500 731 ; C -1 ; WX 684 ; N onequarter ; B 123 -19 658 703 ; C -1 ; WX 547 ; N Scaron ; B 74 -19 584 929 ; C -1 ; WX 547 ; N Scommaaccent ; B 74 -225 584 737 ; C -1 ; WX 638 ; N Ohungarumlaut ; B 86 -19 680 929 ; C -1 ; WX 328 ; N degree ; B 138 411 384 703 ; C -1 ; WX 456 ; N ograve ; B 68 -14 479 734 ; C -1 ; WX 592 ; N Ccaron ; B 88 -19 640 929 ; C -1 ; WX 456 ; N ugrave ; B 77 -15 492 734 ; C -1 ; WX 371 ; N radical ; B 65 -80 506 762 ; C -1 ; WX 592 ; N Dcaron ; B 66 0 626 929 ; C -1 ; WX 273 ; N rcommaaccent ; B 25 -225 365 538 ; C -1 ; WX 592 ; N Ntilde ; B 62 0 655 917 ; C -1 ; WX 456 ; N otilde ; B 68 -14 494 722 ; C -1 ; WX 592 ; N Rcommaaccent ; B 72 -225 634 718 ; C -1 ; WX 456 ; N Lcommaaccent ; B 62 -225 455 718 ; C -1 ; WX 547 ; N Atilde ; B 11 0 573 917 ; C -1 ; WX 547 ; N Aogonek ; B 11 -225 536 718 ; C -1 ; WX 547 ; N Aring ; B 11 0 536 931 ; C -1 ; WX 638 ; N Otilde ; B 86 -19 677 917 ; C -1 ; WX 410 ; N zdotaccent ; B 25 0 468 706 ; C -1 ; WX 547 ; N Ecaron ; B 71 0 625 929 ; C -1 ; WX 228 ; N Iogonek ; B -27 -225 279 718 ; C -1 ; WX 410 ; N kcommaaccent ; B 55 -225 492 718 ; C -1 ; WX 479 ; N minus ; B 70 216 497 289 ; C -1 ; WX 228 ; N Icircumflex ; B 75 0 371 929 ; C -1 ; WX 456 ; N ncaron ; B 53 0 476 734 ; C -1 ; WX 228 ; N tcommaaccent ; B 52 -225 302 669 ; C -1 ; WX 479 ; N logicalnot ; B 87 108 515 390 ; C -1 ; WX 456 ; N odieresis ; B 68 -14 479 706 ; C -1 ; WX 456 ; N udieresis ; B 77 -15 492 706 ; C -1 ; WX 450 ; N notequal ; B 28 -35 511 551 ; C -1 ; WX 456 ; N gcommaaccent ; B 34 -220 500 822 ; C -1 ; WX 456 ; N eth ; B 67 -15 506 737 ; C -1 ; WX 410 ; N zcaron ; B 25 0 468 734 ; C -1 ; WX 456 ; N ncommaaccent ; B 53 -225 470 538 ; C -1 ; WX 273 ; N onesuperior ; B 136 281 305 703 ; C -1 ; WX 228 ; N imacron ; B 78 0 342 684 ; EndCharMetrics StartKernData StartKernPairs 2705 KPX A C -30 KPX A Cacute -30 KPX A Ccaron -30 KPX A Ccedilla -30 KPX A G -30 KPX A Gbreve -30 KPX A Gcommaaccent -30 KPX A O -30 KPX A Oacute -30 KPX A Ocircumflex -30 KPX A Odieresis -30 KPX A Ograve -30 KPX A Ohungarumlaut -30 KPX A Omacron -30 KPX A Oslash -30 KPX A Otilde -30 KPX A Q -30 KPX A T -120 KPX A Tcaron -120 KPX A Tcommaaccent -120 KPX A U -50 KPX A Uacute -50 KPX A Ucircumflex -50 KPX A Udieresis -50 KPX A Ugrave -50 KPX A Uhungarumlaut -50 KPX A Umacron -50 KPX A Uogonek -50 KPX A Uring -50 KPX A V -70 KPX A W -50 KPX A Y -100 KPX A Yacute -100 KPX A Ydieresis -100 KPX A u -30 KPX A uacute -30 KPX A ucircumflex -30 KPX A udieresis -30 KPX A ugrave -30 KPX A uhungarumlaut -30 KPX A umacron -30 KPX A uogonek -30 KPX A uring -30 KPX A v -40 KPX A w -40 KPX A y -40 KPX A yacute -40 KPX A ydieresis -40 KPX Aacute C -30 KPX Aacute Cacute -30 KPX Aacute Ccaron -30 KPX Aacute Ccedilla -30 KPX Aacute G -30 KPX Aacute Gbreve -30 KPX Aacute Gcommaaccent -30 KPX Aacute O -30 KPX Aacute Oacute -30 KPX Aacute Ocircumflex -30 KPX Aacute Odieresis -30 KPX Aacute Ograve -30 KPX Aacute Ohungarumlaut -30 KPX Aacute Omacron -30 KPX Aacute Oslash -30 KPX Aacute Otilde -30 KPX Aacute Q -30 KPX Aacute T -120 KPX Aacute Tcaron -120 KPX Aacute Tcommaaccent -120 KPX Aacute U -50 KPX Aacute Uacute -50 KPX Aacute Ucircumflex -50 KPX Aacute Udieresis -50 KPX Aacute Ugrave -50 KPX Aacute Uhungarumlaut -50 KPX Aacute Umacron -50 KPX Aacute Uogonek -50 KPX Aacute Uring -50 KPX Aacute V -70 KPX Aacute W -50 KPX Aacute Y -100 KPX Aacute Yacute -100 KPX Aacute Ydieresis -100 KPX Aacute u -30 KPX Aacute uacute -30 KPX Aacute ucircumflex -30 KPX Aacute udieresis -30 KPX Aacute ugrave -30 KPX Aacute uhungarumlaut -30 KPX Aacute umacron -30 KPX Aacute uogonek -30 KPX Aacute uring -30 KPX Aacute v -40 KPX Aacute w -40 KPX Aacute y -40 KPX Aacute yacute -40 KPX Aacute ydieresis -40 KPX Abreve C -30 KPX Abreve Cacute -30 KPX Abreve Ccaron -30 KPX Abreve Ccedilla -30 KPX Abreve G -30 KPX Abreve Gbreve -30 KPX Abreve Gcommaaccent -30 KPX Abreve O -30 KPX Abreve Oacute -30 KPX Abreve Ocircumflex -30 KPX Abreve Odieresis -30 KPX Abreve Ograve -30 KPX Abreve Ohungarumlaut -30 KPX Abreve Omacron -30 KPX Abreve Oslash -30 KPX Abreve Otilde -30 KPX Abreve Q -30 KPX Abreve T -120 KPX Abreve Tcaron -120 KPX Abreve Tcommaaccent -120 KPX Abreve U -50 KPX Abreve Uacute -50 KPX Abreve Ucircumflex -50 KPX Abreve Udieresis -50 KPX Abreve Ugrave -50 KPX Abreve Uhungarumlaut -50 KPX Abreve Umacron -50 KPX Abreve Uogonek -50 KPX Abreve Uring -50 KPX Abreve V -70 KPX Abreve W -50 KPX Abreve Y -100 KPX Abreve Yacute -100 KPX Abreve Ydieresis -100 KPX Abreve u -30 KPX Abreve uacute -30 KPX Abreve ucircumflex -30 KPX Abreve udieresis -30 KPX Abreve ugrave -30 KPX Abreve uhungarumlaut -30 KPX Abreve umacron -30 KPX Abreve uogonek -30 KPX Abreve uring -30 KPX Abreve v -40 KPX Abreve w -40 KPX Abreve y -40 KPX Abreve yacute -40 KPX Abreve ydieresis -40 KPX Acircumflex C -30 KPX Acircumflex Cacute -30 KPX Acircumflex Ccaron -30 KPX Acircumflex Ccedilla -30 KPX Acircumflex G -30 KPX Acircumflex Gbreve -30 KPX Acircumflex Gcommaaccent -30 KPX Acircumflex O -30 KPX Acircumflex Oacute -30 KPX Acircumflex Ocircumflex -30 KPX Acircumflex Odieresis -30 KPX Acircumflex Ograve -30 KPX Acircumflex Ohungarumlaut -30 KPX Acircumflex Omacron -30 KPX Acircumflex Oslash -30 KPX Acircumflex Otilde -30 KPX Acircumflex Q -30 KPX Acircumflex T -120 KPX Acircumflex Tcaron -120 KPX Acircumflex Tcommaaccent -120 KPX Acircumflex U -50 KPX Acircumflex Uacute -50 KPX Acircumflex Ucircumflex -50 KPX Acircumflex Udieresis -50 KPX Acircumflex Ugrave -50 KPX Acircumflex Uhungarumlaut -50 KPX Acircumflex Umacron -50 KPX Acircumflex Uogonek -50 KPX Acircumflex Uring -50 KPX Acircumflex V -70 KPX Acircumflex W -50 KPX Acircumflex Y -100 KPX Acircumflex Yacute -100 KPX Acircumflex Ydieresis -100 KPX Acircumflex u -30 KPX Acircumflex uacute -30 KPX Acircumflex ucircumflex -30 KPX Acircumflex udieresis -30 KPX Acircumflex ugrave -30 KPX Acircumflex uhungarumlaut -30 KPX Acircumflex umacron -30 KPX Acircumflex uogonek -30 KPX Acircumflex uring -30 KPX Acircumflex v -40 KPX Acircumflex w -40 KPX Acircumflex y -40 KPX Acircumflex yacute -40 KPX Acircumflex ydieresis -40 KPX Adieresis C -30 KPX Adieresis Cacute -30 KPX Adieresis Ccaron -30 KPX Adieresis Ccedilla -30 KPX Adieresis G -30 KPX Adieresis Gbreve -30 KPX Adieresis Gcommaaccent -30 KPX Adieresis O -30 KPX Adieresis Oacute -30 KPX Adieresis Ocircumflex -30 KPX Adieresis Odieresis -30 KPX Adieresis Ograve -30 KPX Adieresis Ohungarumlaut -30 KPX Adieresis Omacron -30 KPX Adieresis Oslash -30 KPX Adieresis Otilde -30 KPX Adieresis Q -30 KPX Adieresis T -120 KPX Adieresis Tcaron -120 KPX Adieresis Tcommaaccent -120 KPX Adieresis U -50 KPX Adieresis Uacute -50 KPX Adieresis Ucircumflex -50 KPX Adieresis Udieresis -50 KPX Adieresis Ugrave -50 KPX Adieresis Uhungarumlaut -50 KPX Adieresis Umacron -50 KPX Adieresis Uogonek -50 KPX Adieresis Uring -50 KPX Adieresis V -70 KPX Adieresis W -50 KPX Adieresis Y -100 KPX Adieresis Yacute -100 KPX Adieresis Ydieresis -100 KPX Adieresis u -30 KPX Adieresis uacute -30 KPX Adieresis ucircumflex -30 KPX Adieresis udieresis -30 KPX Adieresis ugrave -30 KPX Adieresis uhungarumlaut -30 KPX Adieresis umacron -30 KPX Adieresis uogonek -30 KPX Adieresis uring -30 KPX Adieresis v -40 KPX Adieresis w -40 KPX Adieresis y -40 KPX Adieresis yacute -40 KPX Adieresis ydieresis -40 KPX Agrave C -30 KPX Agrave Cacute -30 KPX Agrave Ccaron -30 KPX Agrave Ccedilla -30 KPX Agrave G -30 KPX Agrave Gbreve -30 KPX Agrave Gcommaaccent -30 KPX Agrave O -30 KPX Agrave Oacute -30 KPX Agrave Ocircumflex -30 KPX Agrave Odieresis -30 KPX Agrave Ograve -30 KPX Agrave Ohungarumlaut -30 KPX Agrave Omacron -30 KPX Agrave Oslash -30 KPX Agrave Otilde -30 KPX Agrave Q -30 KPX Agrave T -120 KPX Agrave Tcaron -120 KPX Agrave Tcommaaccent -120 KPX Agrave U -50 KPX Agrave Uacute -50 KPX Agrave Ucircumflex -50 KPX Agrave Udieresis -50 KPX Agrave Ugrave -50 KPX Agrave Uhungarumlaut -50 KPX Agrave Umacron -50 KPX Agrave Uogonek -50 KPX Agrave Uring -50 KPX Agrave V -70 KPX Agrave W -50 KPX Agrave Y -100 KPX Agrave Yacute -100 KPX Agrave Ydieresis -100 KPX Agrave u -30 KPX Agrave uacute -30 KPX Agrave ucircumflex -30 KPX Agrave udieresis -30 KPX Agrave ugrave -30 KPX Agrave uhungarumlaut -30 KPX Agrave umacron -30 KPX Agrave uogonek -30 KPX Agrave uring -30 KPX Agrave v -40 KPX Agrave w -40 KPX Agrave y -40 KPX Agrave yacute -40 KPX Agrave ydieresis -40 KPX Amacron C -30 KPX Amacron Cacute -30 KPX Amacron Ccaron -30 KPX Amacron Ccedilla -30 KPX Amacron G -30 KPX Amacron Gbreve -30 KPX Amacron Gcommaaccent -30 KPX Amacron O -30 KPX Amacron Oacute -30 KPX Amacron Ocircumflex -30 KPX Amacron Odieresis -30 KPX Amacron Ograve -30 KPX Amacron Ohungarumlaut -30 KPX Amacron Omacron -30 KPX Amacron Oslash -30 KPX Amacron Otilde -30 KPX Amacron Q -30 KPX Amacron T -120 KPX Amacron Tcaron -120 KPX Amacron Tcommaaccent -120 KPX Amacron U -50 KPX Amacron Uacute -50 KPX Amacron Ucircumflex -50 KPX Amacron Udieresis -50 KPX Amacron Ugrave -50 KPX Amacron Uhungarumlaut -50 KPX Amacron Umacron -50 KPX Amacron Uogonek -50 KPX Amacron Uring -50 KPX Amacron V -70 KPX Amacron W -50 KPX Amacron Y -100 KPX Amacron Yacute -100 KPX Amacron Ydieresis -100 KPX Amacron u -30 KPX Amacron uacute -30 KPX Amacron ucircumflex -30 KPX Amacron udieresis -30 KPX Amacron ugrave -30 KPX Amacron uhungarumlaut -30 KPX Amacron umacron -30 KPX Amacron uogonek -30 KPX Amacron uring -30 KPX Amacron v -40 KPX Amacron w -40 KPX Amacron y -40 KPX Amacron yacute -40 KPX Amacron ydieresis -40 KPX Aogonek C -30 KPX Aogonek Cacute -30 KPX Aogonek Ccaron -30 KPX Aogonek Ccedilla -30 KPX Aogonek G -30 KPX Aogonek Gbreve -30 KPX Aogonek Gcommaaccent -30 KPX Aogonek O -30 KPX Aogonek Oacute -30 KPX Aogonek Ocircumflex -30 KPX Aogonek Odieresis -30 KPX Aogonek Ograve -30 KPX Aogonek Ohungarumlaut -30 KPX Aogonek Omacron -30 KPX Aogonek Oslash -30 KPX Aogonek Otilde -30 KPX Aogonek Q -30 KPX Aogonek T -120 KPX Aogonek Tcaron -120 KPX Aogonek Tcommaaccent -120 KPX Aogonek U -50 KPX Aogonek Uacute -50 KPX Aogonek Ucircumflex -50 KPX Aogonek Udieresis -50 KPX Aogonek Ugrave -50 KPX Aogonek Uhungarumlaut -50 KPX Aogonek Umacron -50 KPX Aogonek Uogonek -50 KPX Aogonek Uring -50 KPX Aogonek V -70 KPX Aogonek W -50 KPX Aogonek Y -100 KPX Aogonek Yacute -100 KPX Aogonek Ydieresis -100 KPX Aogonek u -30 KPX Aogonek uacute -30 KPX Aogonek ucircumflex -30 KPX Aogonek udieresis -30 KPX Aogonek ugrave -30 KPX Aogonek uhungarumlaut -30 KPX Aogonek umacron -30 KPX Aogonek uogonek -30 KPX Aogonek uring -30 KPX Aogonek v -40 KPX Aogonek w -40 KPX Aogonek y -40 KPX Aogonek yacute -40 KPX Aogonek ydieresis -40 KPX Aring C -30 KPX Aring Cacute -30 KPX Aring Ccaron -30 KPX Aring Ccedilla -30 KPX Aring G -30 KPX Aring Gbreve -30 KPX Aring Gcommaaccent -30 KPX Aring O -30 KPX Aring Oacute -30 KPX Aring Ocircumflex -30 KPX Aring Odieresis -30 KPX Aring Ograve -30 KPX Aring Ohungarumlaut -30 KPX Aring Omacron -30 KPX Aring Oslash -30 KPX Aring Otilde -30 KPX Aring Q -30 KPX Aring T -120 KPX Aring Tcaron -120 KPX Aring Tcommaaccent -120 KPX Aring U -50 KPX Aring Uacute -50 KPX Aring Ucircumflex -50 KPX Aring Udieresis -50 KPX Aring Ugrave -50 KPX Aring Uhungarumlaut -50 KPX Aring Umacron -50 KPX Aring Uogonek -50 KPX Aring Uring -50 KPX Aring V -70 KPX Aring W -50 KPX Aring Y -100 KPX Aring Yacute -100 KPX Aring Ydieresis -100 KPX Aring u -30 KPX Aring uacute -30 KPX Aring ucircumflex -30 KPX Aring udieresis -30 KPX Aring ugrave -30 KPX Aring uhungarumlaut -30 KPX Aring umacron -30 KPX Aring uogonek -30 KPX Aring uring -30 KPX Aring v -40 KPX Aring w -40 KPX Aring y -40 KPX Aring yacute -40 KPX Aring ydieresis -40 KPX Atilde C -30 KPX Atilde Cacute -30 KPX Atilde Ccaron -30 KPX Atilde Ccedilla -30 KPX Atilde G -30 KPX Atilde Gbreve -30 KPX Atilde Gcommaaccent -30 KPX Atilde O -30 KPX Atilde Oacute -30 KPX Atilde Ocircumflex -30 KPX Atilde Odieresis -30 KPX Atilde Ograve -30 KPX Atilde Ohungarumlaut -30 KPX Atilde Omacron -30 KPX Atilde Oslash -30 KPX Atilde Otilde -30 KPX Atilde Q -30 KPX Atilde T -120 KPX Atilde Tcaron -120 KPX Atilde Tcommaaccent -120 KPX Atilde U -50 KPX Atilde Uacute -50 KPX Atilde Ucircumflex -50 KPX Atilde Udieresis -50 KPX Atilde Ugrave -50 KPX Atilde Uhungarumlaut -50 KPX Atilde Umacron -50 KPX Atilde Uogonek -50 KPX Atilde Uring -50 KPX Atilde V -70 KPX Atilde W -50 KPX Atilde Y -100 KPX Atilde Yacute -100 KPX Atilde Ydieresis -100 KPX Atilde u -30 KPX Atilde uacute -30 KPX Atilde ucircumflex -30 KPX Atilde udieresis -30 KPX Atilde ugrave -30 KPX Atilde uhungarumlaut -30 KPX Atilde umacron -30 KPX Atilde uogonek -30 KPX Atilde uring -30 KPX Atilde v -40 KPX Atilde w -40 KPX Atilde y -40 KPX Atilde yacute -40 KPX Atilde ydieresis -40 KPX B U -10 KPX B Uacute -10 KPX B Ucircumflex -10 KPX B Udieresis -10 KPX B Ugrave -10 KPX B Uhungarumlaut -10 KPX B Umacron -10 KPX B Uogonek -10 KPX B Uring -10 KPX B comma -20 KPX B period -20 KPX C comma -30 KPX C period -30 KPX Cacute comma -30 KPX Cacute period -30 KPX Ccaron comma -30 KPX Ccaron period -30 KPX Ccedilla comma -30 KPX Ccedilla period -30 KPX D A -40 KPX D Aacute -40 KPX D Abreve -40 KPX D Acircumflex -40 KPX D Adieresis -40 KPX D Agrave -40 KPX D Amacron -40 KPX D Aogonek -40 KPX D Aring -40 KPX D Atilde -40 KPX D V -70 KPX D W -40 KPX D Y -90 KPX D Yacute -90 KPX D Ydieresis -90 KPX D comma -70 KPX D period -70 KPX Dcaron A -40 KPX Dcaron Aacute -40 KPX Dcaron Abreve -40 KPX Dcaron Acircumflex -40 KPX Dcaron Adieresis -40 KPX Dcaron Agrave -40 KPX Dcaron Amacron -40 KPX Dcaron Aogonek -40 KPX Dcaron Aring -40 KPX Dcaron Atilde -40 KPX Dcaron V -70 KPX Dcaron W -40 KPX Dcaron Y -90 KPX Dcaron Yacute -90 KPX Dcaron Ydieresis -90 KPX Dcaron comma -70 KPX Dcaron period -70 KPX Dcroat A -40 KPX Dcroat Aacute -40 KPX Dcroat Abreve -40 KPX Dcroat Acircumflex -40 KPX Dcroat Adieresis -40 KPX Dcroat Agrave -40 KPX Dcroat Amacron -40 KPX Dcroat Aogonek -40 KPX Dcroat Aring -40 KPX Dcroat Atilde -40 KPX Dcroat V -70 KPX Dcroat W -40 KPX Dcroat Y -90 KPX Dcroat Yacute -90 KPX Dcroat Ydieresis -90 KPX Dcroat comma -70 KPX Dcroat period -70 KPX F A -80 KPX F Aacute -80 KPX F Abreve -80 KPX F Acircumflex -80 KPX F Adieresis -80 KPX F Agrave -80 KPX F Amacron -80 KPX F Aogonek -80 KPX F Aring -80 KPX F Atilde -80 KPX F a -50 KPX F aacute -50 KPX F abreve -50 KPX F acircumflex -50 KPX F adieresis -50 KPX F agrave -50 KPX F amacron -50 KPX F aogonek -50 KPX F aring -50 KPX F atilde -50 KPX F comma -150 KPX F e -30 KPX F eacute -30 KPX F ecaron -30 KPX F ecircumflex -30 KPX F edieresis -30 KPX F edotaccent -30 KPX F egrave -30 KPX F emacron -30 KPX F eogonek -30 KPX F o -30 KPX F oacute -30 KPX F ocircumflex -30 KPX F odieresis -30 KPX F ograve -30 KPX F ohungarumlaut -30 KPX F omacron -30 KPX F oslash -30 KPX F otilde -30 KPX F period -150 KPX F r -45 KPX F racute -45 KPX F rcaron -45 KPX F rcommaaccent -45 KPX J A -20 KPX J Aacute -20 KPX J Abreve -20 KPX J Acircumflex -20 KPX J Adieresis -20 KPX J Agrave -20 KPX J Amacron -20 KPX J Aogonek -20 KPX J Aring -20 KPX J Atilde -20 KPX J a -20 KPX J aacute -20 KPX J abreve -20 KPX J acircumflex -20 KPX J adieresis -20 KPX J agrave -20 KPX J amacron -20 KPX J aogonek -20 KPX J aring -20 KPX J atilde -20 KPX J comma -30 KPX J period -30 KPX J u -20 KPX J uacute -20 KPX J ucircumflex -20 KPX J udieresis -20 KPX J ugrave -20 KPX J uhungarumlaut -20 KPX J umacron -20 KPX J uogonek -20 KPX J uring -20 KPX K O -50 KPX K Oacute -50 KPX K Ocircumflex -50 KPX K Odieresis -50 KPX K Ograve -50 KPX K Ohungarumlaut -50 KPX K Omacron -50 KPX K Oslash -50 KPX K Otilde -50 KPX K e -40 KPX K eacute -40 KPX K ecaron -40 KPX K ecircumflex -40 KPX K edieresis -40 KPX K edotaccent -40 KPX K egrave -40 KPX K emacron -40 KPX K eogonek -40 KPX K o -40 KPX K oacute -40 KPX K ocircumflex -40 KPX K odieresis -40 KPX K ograve -40 KPX K ohungarumlaut -40 KPX K omacron -40 KPX K oslash -40 KPX K otilde -40 KPX K u -30 KPX K uacute -30 KPX K ucircumflex -30 KPX K udieresis -30 KPX K ugrave -30 KPX K uhungarumlaut -30 KPX K umacron -30 KPX K uogonek -30 KPX K uring -30 KPX K y -50 KPX K yacute -50 KPX K ydieresis -50 KPX Kcommaaccent O -50 KPX Kcommaaccent Oacute -50 KPX Kcommaaccent Ocircumflex -50 KPX Kcommaaccent Odieresis -50 KPX Kcommaaccent Ograve -50 KPX Kcommaaccent Ohungarumlaut -50 KPX Kcommaaccent Omacron -50 KPX Kcommaaccent Oslash -50 KPX Kcommaaccent Otilde -50 KPX Kcommaaccent e -40 KPX Kcommaaccent eacute -40 KPX Kcommaaccent ecaron -40 KPX Kcommaaccent ecircumflex -40 KPX Kcommaaccent edieresis -40 KPX Kcommaaccent edotaccent -40 KPX Kcommaaccent egrave -40 KPX Kcommaaccent emacron -40 KPX Kcommaaccent eogonek -40 KPX Kcommaaccent o -40 KPX Kcommaaccent oacute -40 KPX Kcommaaccent ocircumflex -40 KPX Kcommaaccent odieresis -40 KPX Kcommaaccent ograve -40 KPX Kcommaaccent ohungarumlaut -40 KPX Kcommaaccent omacron -40 KPX Kcommaaccent oslash -40 KPX Kcommaaccent otilde -40 KPX Kcommaaccent u -30 KPX Kcommaaccent uacute -30 KPX Kcommaaccent ucircumflex -30 KPX Kcommaaccent udieresis -30 KPX Kcommaaccent ugrave -30 KPX Kcommaaccent uhungarumlaut -30 KPX Kcommaaccent umacron -30 KPX Kcommaaccent uogonek -30 KPX Kcommaaccent uring -30 KPX Kcommaaccent y -50 KPX Kcommaaccent yacute -50 KPX Kcommaaccent ydieresis -50 KPX L T -110 KPX L Tcaron -110 KPX L Tcommaaccent -110 KPX L V -110 KPX L W -70 KPX L Y -140 KPX L Yacute -140 KPX L Ydieresis -140 KPX L quotedblright -140 KPX L quoteright -160 KPX L y -30 KPX L yacute -30 KPX L ydieresis -30 KPX Lacute T -110 KPX Lacute Tcaron -110 KPX Lacute Tcommaaccent -110 KPX Lacute V -110 KPX Lacute W -70 KPX Lacute Y -140 KPX Lacute Yacute -140 KPX Lacute Ydieresis -140 KPX Lacute quotedblright -140 KPX Lacute quoteright -160 KPX Lacute y -30 KPX Lacute yacute -30 KPX Lacute ydieresis -30 KPX Lcaron T -110 KPX Lcaron Tcaron -110 KPX Lcaron Tcommaaccent -110 KPX Lcaron V -110 KPX Lcaron W -70 KPX Lcaron Y -140 KPX Lcaron Yacute -140 KPX Lcaron Ydieresis -140 KPX Lcaron quotedblright -140 KPX Lcaron quoteright -160 KPX Lcaron y -30 KPX Lcaron yacute -30 KPX Lcaron ydieresis -30 KPX Lcommaaccent T -110 KPX Lcommaaccent Tcaron -110 KPX Lcommaaccent Tcommaaccent -110 KPX Lcommaaccent V -110 KPX Lcommaaccent W -70 KPX Lcommaaccent Y -140 KPX Lcommaaccent Yacute -140 KPX Lcommaaccent Ydieresis -140 KPX Lcommaaccent quotedblright -140 KPX Lcommaaccent quoteright -160 KPX Lcommaaccent y -30 KPX Lcommaaccent yacute -30 KPX Lcommaaccent ydieresis -30 KPX Lslash T -110 KPX Lslash Tcaron -110 KPX Lslash Tcommaaccent -110 KPX Lslash V -110 KPX Lslash W -70 KPX Lslash Y -140 KPX Lslash Yacute -140 KPX Lslash Ydieresis -140 KPX Lslash quotedblright -140 KPX Lslash quoteright -160 KPX Lslash y -30 KPX Lslash yacute -30 KPX Lslash ydieresis -30 KPX O A -20 KPX O Aacute -20 KPX O Abreve -20 KPX O Acircumflex -20 KPX O Adieresis -20 KPX O Agrave -20 KPX O Amacron -20 KPX O Aogonek -20 KPX O Aring -20 KPX O Atilde -20 KPX O T -40 KPX O Tcaron -40 KPX O Tcommaaccent -40 KPX O V -50 KPX O W -30 KPX O X -60 KPX O Y -70 KPX O Yacute -70 KPX O Ydieresis -70 KPX O comma -40 KPX O period -40 KPX Oacute A -20 KPX Oacute Aacute -20 KPX Oacute Abreve -20 KPX Oacute Acircumflex -20 KPX Oacute Adieresis -20 KPX Oacute Agrave -20 KPX Oacute Amacron -20 KPX Oacute Aogonek -20 KPX Oacute Aring -20 KPX Oacute Atilde -20 KPX Oacute T -40 KPX Oacute Tcaron -40 KPX Oacute Tcommaaccent -40 KPX Oacute V -50 KPX Oacute W -30 KPX Oacute X -60 KPX Oacute Y -70 KPX Oacute Yacute -70 KPX Oacute Ydieresis -70 KPX Oacute comma -40 KPX Oacute period -40 KPX Ocircumflex A -20 KPX Ocircumflex Aacute -20 KPX Ocircumflex Abreve -20 KPX Ocircumflex Acircumflex -20 KPX Ocircumflex Adieresis -20 KPX Ocircumflex Agrave -20 KPX Ocircumflex Amacron -20 KPX Ocircumflex Aogonek -20 KPX Ocircumflex Aring -20 KPX Ocircumflex Atilde -20 KPX Ocircumflex T -40 KPX Ocircumflex Tcaron -40 KPX Ocircumflex Tcommaaccent -40 KPX Ocircumflex V -50 KPX Ocircumflex W -30 KPX Ocircumflex X -60 KPX Ocircumflex Y -70 KPX Ocircumflex Yacute -70 KPX Ocircumflex Ydieresis -70 KPX Ocircumflex comma -40 KPX Ocircumflex period -40 KPX Odieresis A -20 KPX Odieresis Aacute -20 KPX Odieresis Abreve -20 KPX Odieresis Acircumflex -20 KPX Odieresis Adieresis -20 KPX Odieresis Agrave -20 KPX Odieresis Amacron -20 KPX Odieresis Aogonek -20 KPX Odieresis Aring -20 KPX Odieresis Atilde -20 KPX Odieresis T -40 KPX Odieresis Tcaron -40 KPX Odieresis Tcommaaccent -40 KPX Odieresis V -50 KPX Odieresis W -30 KPX Odieresis X -60 KPX Odieresis Y -70 KPX Odieresis Yacute -70 KPX Odieresis Ydieresis -70 KPX Odieresis comma -40 KPX Odieresis period -40 KPX Ograve A -20 KPX Ograve Aacute -20 KPX Ograve Abreve -20 KPX Ograve Acircumflex -20 KPX Ograve Adieresis -20 KPX Ograve Agrave -20 KPX Ograve Amacron -20 KPX Ograve Aogonek -20 KPX Ograve Aring -20 KPX Ograve Atilde -20 KPX Ograve T -40 KPX Ograve Tcaron -40 KPX Ograve Tcommaaccent -40 KPX Ograve V -50 KPX Ograve W -30 KPX Ograve X -60 KPX Ograve Y -70 KPX Ograve Yacute -70 KPX Ograve Ydieresis -70 KPX Ograve comma -40 KPX Ograve period -40 KPX Ohungarumlaut A -20 KPX Ohungarumlaut Aacute -20 KPX Ohungarumlaut Abreve -20 KPX Ohungarumlaut Acircumflex -20 KPX Ohungarumlaut Adieresis -20 KPX Ohungarumlaut Agrave -20 KPX Ohungarumlaut Amacron -20 KPX Ohungarumlaut Aogonek -20 KPX Ohungarumlaut Aring -20 KPX Ohungarumlaut Atilde -20 KPX Ohungarumlaut T -40 KPX Ohungarumlaut Tcaron -40 KPX Ohungarumlaut Tcommaaccent -40 KPX Ohungarumlaut V -50 KPX Ohungarumlaut W -30 KPX Ohungarumlaut X -60 KPX Ohungarumlaut Y -70 KPX Ohungarumlaut Yacute -70 KPX Ohungarumlaut Ydieresis -70 KPX Ohungarumlaut comma -40 KPX Ohungarumlaut period -40 KPX Omacron A -20 KPX Omacron Aacute -20 KPX Omacron Abreve -20 KPX Omacron Acircumflex -20 KPX Omacron Adieresis -20 KPX Omacron Agrave -20 KPX Omacron Amacron -20 KPX Omacron Aogonek -20 KPX Omacron Aring -20 KPX Omacron Atilde -20 KPX Omacron T -40 KPX Omacron Tcaron -40 KPX Omacron Tcommaaccent -40 KPX Omacron V -50 KPX Omacron W -30 KPX Omacron X -60 KPX Omacron Y -70 KPX Omacron Yacute -70 KPX Omacron Ydieresis -70 KPX Omacron comma -40 KPX Omacron period -40 KPX Oslash A -20 KPX Oslash Aacute -20 KPX Oslash Abreve -20 KPX Oslash Acircumflex -20 KPX Oslash Adieresis -20 KPX Oslash Agrave -20 KPX Oslash Amacron -20 KPX Oslash Aogonek -20 KPX Oslash Aring -20 KPX Oslash Atilde -20 KPX Oslash T -40 KPX Oslash Tcaron -40 KPX Oslash Tcommaaccent -40 KPX Oslash V -50 KPX Oslash W -30 KPX Oslash X -60 KPX Oslash Y -70 KPX Oslash Yacute -70 KPX Oslash Ydieresis -70 KPX Oslash comma -40 KPX Oslash period -40 KPX Otilde A -20 KPX Otilde Aacute -20 KPX Otilde Abreve -20 KPX Otilde Acircumflex -20 KPX Otilde Adieresis -20 KPX Otilde Agrave -20 KPX Otilde Amacron -20 KPX Otilde Aogonek -20 KPX Otilde Aring -20 KPX Otilde Atilde -20 KPX Otilde T -40 KPX Otilde Tcaron -40 KPX Otilde Tcommaaccent -40 KPX Otilde V -50 KPX Otilde W -30 KPX Otilde X -60 KPX Otilde Y -70 KPX Otilde Yacute -70 KPX Otilde Ydieresis -70 KPX Otilde comma -40 KPX Otilde period -40 KPX P A -120 KPX P Aacute -120 KPX P Abreve -120 KPX P Acircumflex -120 KPX P Adieresis -120 KPX P Agrave -120 KPX P Amacron -120 KPX P Aogonek -120 KPX P Aring -120 KPX P Atilde -120 KPX P a -40 KPX P aacute -40 KPX P abreve -40 KPX P acircumflex -40 KPX P adieresis -40 KPX P agrave -40 KPX P amacron -40 KPX P aogonek -40 KPX P aring -40 KPX P atilde -40 KPX P comma -180 KPX P e -50 KPX P eacute -50 KPX P ecaron -50 KPX P ecircumflex -50 KPX P edieresis -50 KPX P edotaccent -50 KPX P egrave -50 KPX P emacron -50 KPX P eogonek -50 KPX P o -50 KPX P oacute -50 KPX P ocircumflex -50 KPX P odieresis -50 KPX P ograve -50 KPX P ohungarumlaut -50 KPX P omacron -50 KPX P oslash -50 KPX P otilde -50 KPX P period -180 KPX Q U -10 KPX Q Uacute -10 KPX Q Ucircumflex -10 KPX Q Udieresis -10 KPX Q Ugrave -10 KPX Q Uhungarumlaut -10 KPX Q Umacron -10 KPX Q Uogonek -10 KPX Q Uring -10 KPX R O -20 KPX R Oacute -20 KPX R Ocircumflex -20 KPX R Odieresis -20 KPX R Ograve -20 KPX R Ohungarumlaut -20 KPX R Omacron -20 KPX R Oslash -20 KPX R Otilde -20 KPX R T -30 KPX R Tcaron -30 KPX R Tcommaaccent -30 KPX R U -40 KPX R Uacute -40 KPX R Ucircumflex -40 KPX R Udieresis -40 KPX R Ugrave -40 KPX R Uhungarumlaut -40 KPX R Umacron -40 KPX R Uogonek -40 KPX R Uring -40 KPX R V -50 KPX R W -30 KPX R Y -50 KPX R Yacute -50 KPX R Ydieresis -50 KPX Racute O -20 KPX Racute Oacute -20 KPX Racute Ocircumflex -20 KPX Racute Odieresis -20 KPX Racute Ograve -20 KPX Racute Ohungarumlaut -20 KPX Racute Omacron -20 KPX Racute Oslash -20 KPX Racute Otilde -20 KPX Racute T -30 KPX Racute Tcaron -30 KPX Racute Tcommaaccent -30 KPX Racute U -40 KPX Racute Uacute -40 KPX Racute Ucircumflex -40 KPX Racute Udieresis -40 KPX Racute Ugrave -40 KPX Racute Uhungarumlaut -40 KPX Racute Umacron -40 KPX Racute Uogonek -40 KPX Racute Uring -40 KPX Racute V -50 KPX Racute W -30 KPX Racute Y -50 KPX Racute Yacute -50 KPX Racute Ydieresis -50 KPX Rcaron O -20 KPX Rcaron Oacute -20 KPX Rcaron Ocircumflex -20 KPX Rcaron Odieresis -20 KPX Rcaron Ograve -20 KPX Rcaron Ohungarumlaut -20 KPX Rcaron Omacron -20 KPX Rcaron Oslash -20 KPX Rcaron Otilde -20 KPX Rcaron T -30 KPX Rcaron Tcaron -30 KPX Rcaron Tcommaaccent -30 KPX Rcaron U -40 KPX Rcaron Uacute -40 KPX Rcaron Ucircumflex -40 KPX Rcaron Udieresis -40 KPX Rcaron Ugrave -40 KPX Rcaron Uhungarumlaut -40 KPX Rcaron Umacron -40 KPX Rcaron Uogonek -40 KPX Rcaron Uring -40 KPX Rcaron V -50 KPX Rcaron W -30 KPX Rcaron Y -50 KPX Rcaron Yacute -50 KPX Rcaron Ydieresis -50 KPX Rcommaaccent O -20 KPX Rcommaaccent Oacute -20 KPX Rcommaaccent Ocircumflex -20 KPX Rcommaaccent Odieresis -20 KPX Rcommaaccent Ograve -20 KPX Rcommaaccent Ohungarumlaut -20 KPX Rcommaaccent Omacron -20 KPX Rcommaaccent Oslash -20 KPX Rcommaaccent Otilde -20 KPX Rcommaaccent T -30 KPX Rcommaaccent Tcaron -30 KPX Rcommaaccent Tcommaaccent -30 KPX Rcommaaccent U -40 KPX Rcommaaccent Uacute -40 KPX Rcommaaccent Ucircumflex -40 KPX Rcommaaccent Udieresis -40 KPX Rcommaaccent Ugrave -40 KPX Rcommaaccent Uhungarumlaut -40 KPX Rcommaaccent Umacron -40 KPX Rcommaaccent Uogonek -40 KPX Rcommaaccent Uring -40 KPX Rcommaaccent V -50 KPX Rcommaaccent W -30 KPX Rcommaaccent Y -50 KPX Rcommaaccent Yacute -50 KPX Rcommaaccent Ydieresis -50 KPX S comma -20 KPX S period -20 KPX Sacute comma -20 KPX Sacute period -20 KPX Scaron comma -20 KPX Scaron period -20 KPX Scedilla comma -20 KPX Scedilla period -20 KPX Scommaaccent comma -20 KPX Scommaaccent period -20 KPX T A -120 KPX T Aacute -120 KPX T Abreve -120 KPX T Acircumflex -120 KPX T Adieresis -120 KPX T Agrave -120 KPX T Amacron -120 KPX T Aogonek -120 KPX T Aring -120 KPX T Atilde -120 KPX T O -40 KPX T Oacute -40 KPX T Ocircumflex -40 KPX T Odieresis -40 KPX T Ograve -40 KPX T Ohungarumlaut -40 KPX T Omacron -40 KPX T Oslash -40 KPX T Otilde -40 KPX T a -120 KPX T aacute -120 KPX T abreve -60 KPX T acircumflex -120 KPX T adieresis -120 KPX T agrave -120 KPX T amacron -60 KPX T aogonek -120 KPX T aring -120 KPX T atilde -60 KPX T colon -20 KPX T comma -120 KPX T e -120 KPX T eacute -120 KPX T ecaron -120 KPX T ecircumflex -120 KPX T edieresis -120 KPX T edotaccent -120 KPX T egrave -60 KPX T emacron -60 KPX T eogonek -120 KPX T hyphen -140 KPX T o -120 KPX T oacute -120 KPX T ocircumflex -120 KPX T odieresis -120 KPX T ograve -120 KPX T ohungarumlaut -120 KPX T omacron -60 KPX T oslash -120 KPX T otilde -60 KPX T period -120 KPX T r -120 KPX T racute -120 KPX T rcaron -120 KPX T rcommaaccent -120 KPX T semicolon -20 KPX T u -120 KPX T uacute -120 KPX T ucircumflex -120 KPX T udieresis -120 KPX T ugrave -120 KPX T uhungarumlaut -120 KPX T umacron -60 KPX T uogonek -120 KPX T uring -120 KPX T w -120 KPX T y -120 KPX T yacute -120 KPX T ydieresis -60 KPX Tcaron A -120 KPX Tcaron Aacute -120 KPX Tcaron Abreve -120 KPX Tcaron Acircumflex -120 KPX Tcaron Adieresis -120 KPX Tcaron Agrave -120 KPX Tcaron Amacron -120 KPX Tcaron Aogonek -120 KPX Tcaron Aring -120 KPX Tcaron Atilde -120 KPX Tcaron O -40 KPX Tcaron Oacute -40 KPX Tcaron Ocircumflex -40 KPX Tcaron Odieresis -40 KPX Tcaron Ograve -40 KPX Tcaron Ohungarumlaut -40 KPX Tcaron Omacron -40 KPX Tcaron Oslash -40 KPX Tcaron Otilde -40 KPX Tcaron a -120 KPX Tcaron aacute -120 KPX Tcaron abreve -60 KPX Tcaron acircumflex -120 KPX Tcaron adieresis -120 KPX Tcaron agrave -120 KPX Tcaron amacron -60 KPX Tcaron aogonek -120 KPX Tcaron aring -120 KPX Tcaron atilde -60 KPX Tcaron colon -20 KPX Tcaron comma -120 KPX Tcaron e -120 KPX Tcaron eacute -120 KPX Tcaron ecaron -120 KPX Tcaron ecircumflex -120 KPX Tcaron edieresis -120 KPX Tcaron edotaccent -120 KPX Tcaron egrave -60 KPX Tcaron emacron -60 KPX Tcaron eogonek -120 KPX Tcaron hyphen -140 KPX Tcaron o -120 KPX Tcaron oacute -120 KPX Tcaron ocircumflex -120 KPX Tcaron odieresis -120 KPX Tcaron ograve -120 KPX Tcaron ohungarumlaut -120 KPX Tcaron omacron -60 KPX Tcaron oslash -120 KPX Tcaron otilde -60 KPX Tcaron period -120 KPX Tcaron r -120 KPX Tcaron racute -120 KPX Tcaron rcaron -120 KPX Tcaron rcommaaccent -120 KPX Tcaron semicolon -20 KPX Tcaron u -120 KPX Tcaron uacute -120 KPX Tcaron ucircumflex -120 KPX Tcaron udieresis -120 KPX Tcaron ugrave -120 KPX Tcaron uhungarumlaut -120 KPX Tcaron umacron -60 KPX Tcaron uogonek -120 KPX Tcaron uring -120 KPX Tcaron w -120 KPX Tcaron y -120 KPX Tcaron yacute -120 KPX Tcaron ydieresis -60 KPX Tcommaaccent A -120 KPX Tcommaaccent Aacute -120 KPX Tcommaaccent Abreve -120 KPX Tcommaaccent Acircumflex -120 KPX Tcommaaccent Adieresis -120 KPX Tcommaaccent Agrave -120 KPX Tcommaaccent Amacron -120 KPX Tcommaaccent Aogonek -120 KPX Tcommaaccent Aring -120 KPX Tcommaaccent Atilde -120 KPX Tcommaaccent O -40 KPX Tcommaaccent Oacute -40 KPX Tcommaaccent Ocircumflex -40 KPX Tcommaaccent Odieresis -40 KPX Tcommaaccent Ograve -40 KPX Tcommaaccent Ohungarumlaut -40 KPX Tcommaaccent Omacron -40 KPX Tcommaaccent Oslash -40 KPX Tcommaaccent Otilde -40 KPX Tcommaaccent a -120 KPX Tcommaaccent aacute -120 KPX Tcommaaccent abreve -60 KPX Tcommaaccent acircumflex -120 KPX Tcommaaccent adieresis -120 KPX Tcommaaccent agrave -120 KPX Tcommaaccent amacron -60 KPX Tcommaaccent aogonek -120 KPX Tcommaaccent aring -120 KPX Tcommaaccent atilde -60 KPX Tcommaaccent colon -20 KPX Tcommaaccent comma -120 KPX Tcommaaccent e -120 KPX Tcommaaccent eacute -120 KPX Tcommaaccent ecaron -120 KPX Tcommaaccent ecircumflex -120 KPX Tcommaaccent edieresis -120 KPX Tcommaaccent edotaccent -120 KPX Tcommaaccent egrave -60 KPX Tcommaaccent emacron -60 KPX Tcommaaccent eogonek -120 KPX Tcommaaccent hyphen -140 KPX Tcommaaccent o -120 KPX Tcommaaccent oacute -120 KPX Tcommaaccent ocircumflex -120 KPX Tcommaaccent odieresis -120 KPX Tcommaaccent ograve -120 KPX Tcommaaccent ohungarumlaut -120 KPX Tcommaaccent omacron -60 KPX Tcommaaccent oslash -120 KPX Tcommaaccent otilde -60 KPX Tcommaaccent period -120 KPX Tcommaaccent r -120 KPX Tcommaaccent racute -120 KPX Tcommaaccent rcaron -120 KPX Tcommaaccent rcommaaccent -120 KPX Tcommaaccent semicolon -20 KPX Tcommaaccent u -120 KPX Tcommaaccent uacute -120 KPX Tcommaaccent ucircumflex -120 KPX Tcommaaccent udieresis -120 KPX Tcommaaccent ugrave -120 KPX Tcommaaccent uhungarumlaut -120 KPX Tcommaaccent umacron -60 KPX Tcommaaccent uogonek -120 KPX Tcommaaccent uring -120 KPX Tcommaaccent w -120 KPX Tcommaaccent y -120 KPX Tcommaaccent yacute -120 KPX Tcommaaccent ydieresis -60 KPX U A -40 KPX U Aacute -40 KPX U Abreve -40 KPX U Acircumflex -40 KPX U Adieresis -40 KPX U Agrave -40 KPX U Amacron -40 KPX U Aogonek -40 KPX U Aring -40 KPX U Atilde -40 KPX U comma -40 KPX U period -40 KPX Uacute A -40 KPX Uacute Aacute -40 KPX Uacute Abreve -40 KPX Uacute Acircumflex -40 KPX Uacute Adieresis -40 KPX Uacute Agrave -40 KPX Uacute Amacron -40 KPX Uacute Aogonek -40 KPX Uacute Aring -40 KPX Uacute Atilde -40 KPX Uacute comma -40 KPX Uacute period -40 KPX Ucircumflex A -40 KPX Ucircumflex Aacute -40 KPX Ucircumflex Abreve -40 KPX Ucircumflex Acircumflex -40 KPX Ucircumflex Adieresis -40 KPX Ucircumflex Agrave -40 KPX Ucircumflex Amacron -40 KPX Ucircumflex Aogonek -40 KPX Ucircumflex Aring -40 KPX Ucircumflex Atilde -40 KPX Ucircumflex comma -40 KPX Ucircumflex period -40 KPX Udieresis A -40 KPX Udieresis Aacute -40 KPX Udieresis Abreve -40 KPX Udieresis Acircumflex -40 KPX Udieresis Adieresis -40 KPX Udieresis Agrave -40 KPX Udieresis Amacron -40 KPX Udieresis Aogonek -40 KPX Udieresis Aring -40 KPX Udieresis Atilde -40 KPX Udieresis comma -40 KPX Udieresis period -40 KPX Ugrave A -40 KPX Ugrave Aacute -40 KPX Ugrave Abreve -40 KPX Ugrave Acircumflex -40 KPX Ugrave Adieresis -40 KPX Ugrave Agrave -40 KPX Ugrave Amacron -40 KPX Ugrave Aogonek -40 KPX Ugrave Aring -40 KPX Ugrave Atilde -40 KPX Ugrave comma -40 KPX Ugrave period -40 KPX Uhungarumlaut A -40 KPX Uhungarumlaut Aacute -40 KPX Uhungarumlaut Abreve -40 KPX Uhungarumlaut Acircumflex -40 KPX Uhungarumlaut Adieresis -40 KPX Uhungarumlaut Agrave -40 KPX Uhungarumlaut Amacron -40 KPX Uhungarumlaut Aogonek -40 KPX Uhungarumlaut Aring -40 KPX Uhungarumlaut Atilde -40 KPX Uhungarumlaut comma -40 KPX Uhungarumlaut period -40 KPX Umacron A -40 KPX Umacron Aacute -40 KPX Umacron Abreve -40 KPX Umacron Acircumflex -40 KPX Umacron Adieresis -40 KPX Umacron Agrave -40 KPX Umacron Amacron -40 KPX Umacron Aogonek -40 KPX Umacron Aring -40 KPX Umacron Atilde -40 KPX Umacron comma -40 KPX Umacron period -40 KPX Uogonek A -40 KPX Uogonek Aacute -40 KPX Uogonek Abreve -40 KPX Uogonek Acircumflex -40 KPX Uogonek Adieresis -40 KPX Uogonek Agrave -40 KPX Uogonek Amacron -40 KPX Uogonek Aogonek -40 KPX Uogonek Aring -40 KPX Uogonek Atilde -40 KPX Uogonek comma -40 KPX Uogonek period -40 KPX Uring A -40 KPX Uring Aacute -40 KPX Uring Abreve -40 KPX Uring Acircumflex -40 KPX Uring Adieresis -40 KPX Uring Agrave -40 KPX Uring Amacron -40 KPX Uring Aogonek -40 KPX Uring Aring -40 KPX Uring Atilde -40 KPX Uring comma -40 KPX Uring period -40 KPX V A -80 KPX V Aacute -80 KPX V Abreve -80 KPX V Acircumflex -80 KPX V Adieresis -80 KPX V Agrave -80 KPX V Amacron -80 KPX V Aogonek -80 KPX V Aring -80 KPX V Atilde -80 KPX V G -40 KPX V Gbreve -40 KPX V Gcommaaccent -40 KPX V O -40 KPX V Oacute -40 KPX V Ocircumflex -40 KPX V Odieresis -40 KPX V Ograve -40 KPX V Ohungarumlaut -40 KPX V Omacron -40 KPX V Oslash -40 KPX V Otilde -40 KPX V a -70 KPX V aacute -70 KPX V abreve -70 KPX V acircumflex -70 KPX V adieresis -70 KPX V agrave -70 KPX V amacron -70 KPX V aogonek -70 KPX V aring -70 KPX V atilde -70 KPX V colon -40 KPX V comma -125 KPX V e -80 KPX V eacute -80 KPX V ecaron -80 KPX V ecircumflex -80 KPX V edieresis -80 KPX V edotaccent -80 KPX V egrave -80 KPX V emacron -80 KPX V eogonek -80 KPX V hyphen -80 KPX V o -80 KPX V oacute -80 KPX V ocircumflex -80 KPX V odieresis -80 KPX V ograve -80 KPX V ohungarumlaut -80 KPX V omacron -80 KPX V oslash -80 KPX V otilde -80 KPX V period -125 KPX V semicolon -40 KPX V u -70 KPX V uacute -70 KPX V ucircumflex -70 KPX V udieresis -70 KPX V ugrave -70 KPX V uhungarumlaut -70 KPX V umacron -70 KPX V uogonek -70 KPX V uring -70 KPX W A -50 KPX W Aacute -50 KPX W Abreve -50 KPX W Acircumflex -50 KPX W Adieresis -50 KPX W Agrave -50 KPX W Amacron -50 KPX W Aogonek -50 KPX W Aring -50 KPX W Atilde -50 KPX W O -20 KPX W Oacute -20 KPX W Ocircumflex -20 KPX W Odieresis -20 KPX W Ograve -20 KPX W Ohungarumlaut -20 KPX W Omacron -20 KPX W Oslash -20 KPX W Otilde -20 KPX W a -40 KPX W aacute -40 KPX W abreve -40 KPX W acircumflex -40 KPX W adieresis -40 KPX W agrave -40 KPX W amacron -40 KPX W aogonek -40 KPX W aring -40 KPX W atilde -40 KPX W comma -80 KPX W e -30 KPX W eacute -30 KPX W ecaron -30 KPX W ecircumflex -30 KPX W edieresis -30 KPX W edotaccent -30 KPX W egrave -30 KPX W emacron -30 KPX W eogonek -30 KPX W hyphen -40 KPX W o -30 KPX W oacute -30 KPX W ocircumflex -30 KPX W odieresis -30 KPX W ograve -30 KPX W ohungarumlaut -30 KPX W omacron -30 KPX W oslash -30 KPX W otilde -30 KPX W period -80 KPX W u -30 KPX W uacute -30 KPX W ucircumflex -30 KPX W udieresis -30 KPX W ugrave -30 KPX W uhungarumlaut -30 KPX W umacron -30 KPX W uogonek -30 KPX W uring -30 KPX W y -20 KPX W yacute -20 KPX W ydieresis -20 KPX Y A -110 KPX Y Aacute -110 KPX Y Abreve -110 KPX Y Acircumflex -110 KPX Y Adieresis -110 KPX Y Agrave -110 KPX Y Amacron -110 KPX Y Aogonek -110 KPX Y Aring -110 KPX Y Atilde -110 KPX Y O -85 KPX Y Oacute -85 KPX Y Ocircumflex -85 KPX Y Odieresis -85 KPX Y Ograve -85 KPX Y Ohungarumlaut -85 KPX Y Omacron -85 KPX Y Oslash -85 KPX Y Otilde -85 KPX Y a -140 KPX Y aacute -140 KPX Y abreve -70 KPX Y acircumflex -140 KPX Y adieresis -140 KPX Y agrave -140 KPX Y amacron -70 KPX Y aogonek -140 KPX Y aring -140 KPX Y atilde -140 KPX Y colon -60 KPX Y comma -140 KPX Y e -140 KPX Y eacute -140 KPX Y ecaron -140 KPX Y ecircumflex -140 KPX Y edieresis -140 KPX Y edotaccent -140 KPX Y egrave -140 KPX Y emacron -70 KPX Y eogonek -140 KPX Y hyphen -140 KPX Y i -20 KPX Y iacute -20 KPX Y iogonek -20 KPX Y o -140 KPX Y oacute -140 KPX Y ocircumflex -140 KPX Y odieresis -140 KPX Y ograve -140 KPX Y ohungarumlaut -140 KPX Y omacron -140 KPX Y oslash -140 KPX Y otilde -140 KPX Y period -140 KPX Y semicolon -60 KPX Y u -110 KPX Y uacute -110 KPX Y ucircumflex -110 KPX Y udieresis -110 KPX Y ugrave -110 KPX Y uhungarumlaut -110 KPX Y umacron -110 KPX Y uogonek -110 KPX Y uring -110 KPX Yacute A -110 KPX Yacute Aacute -110 KPX Yacute Abreve -110 KPX Yacute Acircumflex -110 KPX Yacute Adieresis -110 KPX Yacute Agrave -110 KPX Yacute Amacron -110 KPX Yacute Aogonek -110 KPX Yacute Aring -110 KPX Yacute Atilde -110 KPX Yacute O -85 KPX Yacute Oacute -85 KPX Yacute Ocircumflex -85 KPX Yacute Odieresis -85 KPX Yacute Ograve -85 KPX Yacute Ohungarumlaut -85 KPX Yacute Omacron -85 KPX Yacute Oslash -85 KPX Yacute Otilde -85 KPX Yacute a -140 KPX Yacute aacute -140 KPX Yacute abreve -70 KPX Yacute acircumflex -140 KPX Yacute adieresis -140 KPX Yacute agrave -140 KPX Yacute amacron -70 KPX Yacute aogonek -140 KPX Yacute aring -140 KPX Yacute atilde -70 KPX Yacute colon -60 KPX Yacute comma -140 KPX Yacute e -140 KPX Yacute eacute -140 KPX Yacute ecaron -140 KPX Yacute ecircumflex -140 KPX Yacute edieresis -140 KPX Yacute edotaccent -140 KPX Yacute egrave -140 KPX Yacute emacron -70 KPX Yacute eogonek -140 KPX Yacute hyphen -140 KPX Yacute i -20 KPX Yacute iacute -20 KPX Yacute iogonek -20 KPX Yacute o -140 KPX Yacute oacute -140 KPX Yacute ocircumflex -140 KPX Yacute odieresis -140 KPX Yacute ograve -140 KPX Yacute ohungarumlaut -140 KPX Yacute omacron -70 KPX Yacute oslash -140 KPX Yacute otilde -140 KPX Yacute period -140 KPX Yacute semicolon -60 KPX Yacute u -110 KPX Yacute uacute -110 KPX Yacute ucircumflex -110 KPX Yacute udieresis -110 KPX Yacute ugrave -110 KPX Yacute uhungarumlaut -110 KPX Yacute umacron -110 KPX Yacute uogonek -110 KPX Yacute uring -110 KPX Ydieresis A -110 KPX Ydieresis Aacute -110 KPX Ydieresis Abreve -110 KPX Ydieresis Acircumflex -110 KPX Ydieresis Adieresis -110 KPX Ydieresis Agrave -110 KPX Ydieresis Amacron -110 KPX Ydieresis Aogonek -110 KPX Ydieresis Aring -110 KPX Ydieresis Atilde -110 KPX Ydieresis O -85 KPX Ydieresis Oacute -85 KPX Ydieresis Ocircumflex -85 KPX Ydieresis Odieresis -85 KPX Ydieresis Ograve -85 KPX Ydieresis Ohungarumlaut -85 KPX Ydieresis Omacron -85 KPX Ydieresis Oslash -85 KPX Ydieresis Otilde -85 KPX Ydieresis a -140 KPX Ydieresis aacute -140 KPX Ydieresis abreve -70 KPX Ydieresis acircumflex -140 KPX Ydieresis adieresis -140 KPX Ydieresis agrave -140 KPX Ydieresis amacron -70 KPX Ydieresis aogonek -140 KPX Ydieresis aring -140 KPX Ydieresis atilde -70 KPX Ydieresis colon -60 KPX Ydieresis comma -140 KPX Ydieresis e -140 KPX Ydieresis eacute -140 KPX Ydieresis ecaron -140 KPX Ydieresis ecircumflex -140 KPX Ydieresis edieresis -140 KPX Ydieresis edotaccent -140 KPX Ydieresis egrave -140 KPX Ydieresis emacron -70 KPX Ydieresis eogonek -140 KPX Ydieresis hyphen -140 KPX Ydieresis i -20 KPX Ydieresis iacute -20 KPX Ydieresis iogonek -20 KPX Ydieresis o -140 KPX Ydieresis oacute -140 KPX Ydieresis ocircumflex -140 KPX Ydieresis odieresis -140 KPX Ydieresis ograve -140 KPX Ydieresis ohungarumlaut -140 KPX Ydieresis omacron -140 KPX Ydieresis oslash -140 KPX Ydieresis otilde -140 KPX Ydieresis period -140 KPX Ydieresis semicolon -60 KPX Ydieresis u -110 KPX Ydieresis uacute -110 KPX Ydieresis ucircumflex -110 KPX Ydieresis udieresis -110 KPX Ydieresis ugrave -110 KPX Ydieresis uhungarumlaut -110 KPX Ydieresis umacron -110 KPX Ydieresis uogonek -110 KPX Ydieresis uring -110 KPX a v -20 KPX a w -20 KPX a y -30 KPX a yacute -30 KPX a ydieresis -30 KPX aacute v -20 KPX aacute w -20 KPX aacute y -30 KPX aacute yacute -30 KPX aacute ydieresis -30 KPX abreve v -20 KPX abreve w -20 KPX abreve y -30 KPX abreve yacute -30 KPX abreve ydieresis -30 KPX acircumflex v -20 KPX acircumflex w -20 KPX acircumflex y -30 KPX acircumflex yacute -30 KPX acircumflex ydieresis -30 KPX adieresis v -20 KPX adieresis w -20 KPX adieresis y -30 KPX adieresis yacute -30 KPX adieresis ydieresis -30 KPX agrave v -20 KPX agrave w -20 KPX agrave y -30 KPX agrave yacute -30 KPX agrave ydieresis -30 KPX amacron v -20 KPX amacron w -20 KPX amacron y -30 KPX amacron yacute -30 KPX amacron ydieresis -30 KPX aogonek v -20 KPX aogonek w -20 KPX aogonek y -30 KPX aogonek yacute -30 KPX aogonek ydieresis -30 KPX aring v -20 KPX aring w -20 KPX aring y -30 KPX aring yacute -30 KPX aring ydieresis -30 KPX atilde v -20 KPX atilde w -20 KPX atilde y -30 KPX atilde yacute -30 KPX atilde ydieresis -30 KPX b b -10 KPX b comma -40 KPX b l -20 KPX b lacute -20 KPX b lcommaaccent -20 KPX b lslash -20 KPX b period -40 KPX b u -20 KPX b uacute -20 KPX b ucircumflex -20 KPX b udieresis -20 KPX b ugrave -20 KPX b uhungarumlaut -20 KPX b umacron -20 KPX b uogonek -20 KPX b uring -20 KPX b v -20 KPX b y -20 KPX b yacute -20 KPX b ydieresis -20 KPX c comma -15 KPX c k -20 KPX c kcommaaccent -20 KPX cacute comma -15 KPX cacute k -20 KPX cacute kcommaaccent -20 KPX ccaron comma -15 KPX ccaron k -20 KPX ccaron kcommaaccent -20 KPX ccedilla comma -15 KPX ccedilla k -20 KPX ccedilla kcommaaccent -20 KPX colon space -50 KPX comma quotedblright -100 KPX comma quoteright -100 KPX e comma -15 KPX e period -15 KPX e v -30 KPX e w -20 KPX e x -30 KPX e y -20 KPX e yacute -20 KPX e ydieresis -20 KPX eacute comma -15 KPX eacute period -15 KPX eacute v -30 KPX eacute w -20 KPX eacute x -30 KPX eacute y -20 KPX eacute yacute -20 KPX eacute ydieresis -20 KPX ecaron comma -15 KPX ecaron period -15 KPX ecaron v -30 KPX ecaron w -20 KPX ecaron x -30 KPX ecaron y -20 KPX ecaron yacute -20 KPX ecaron ydieresis -20 KPX ecircumflex comma -15 KPX ecircumflex period -15 KPX ecircumflex v -30 KPX ecircumflex w -20 KPX ecircumflex x -30 KPX ecircumflex y -20 KPX ecircumflex yacute -20 KPX ecircumflex ydieresis -20 KPX edieresis comma -15 KPX edieresis period -15 KPX edieresis v -30 KPX edieresis w -20 KPX edieresis x -30 KPX edieresis y -20 KPX edieresis yacute -20 KPX edieresis ydieresis -20 KPX edotaccent comma -15 KPX edotaccent period -15 KPX edotaccent v -30 KPX edotaccent w -20 KPX edotaccent x -30 KPX edotaccent y -20 KPX edotaccent yacute -20 KPX edotaccent ydieresis -20 KPX egrave comma -15 KPX egrave period -15 KPX egrave v -30 KPX egrave w -20 KPX egrave x -30 KPX egrave y -20 KPX egrave yacute -20 KPX egrave ydieresis -20 KPX emacron comma -15 KPX emacron period -15 KPX emacron v -30 KPX emacron w -20 KPX emacron x -30 KPX emacron y -20 KPX emacron yacute -20 KPX emacron ydieresis -20 KPX eogonek comma -15 KPX eogonek period -15 KPX eogonek v -30 KPX eogonek w -20 KPX eogonek x -30 KPX eogonek y -20 KPX eogonek yacute -20 KPX eogonek ydieresis -20 KPX f a -30 KPX f aacute -30 KPX f abreve -30 KPX f acircumflex -30 KPX f adieresis -30 KPX f agrave -30 KPX f amacron -30 KPX f aogonek -30 KPX f aring -30 KPX f atilde -30 KPX f comma -30 KPX f dotlessi -28 KPX f e -30 KPX f eacute -30 KPX f ecaron -30 KPX f ecircumflex -30 KPX f edieresis -30 KPX f edotaccent -30 KPX f egrave -30 KPX f emacron -30 KPX f eogonek -30 KPX f o -30 KPX f oacute -30 KPX f ocircumflex -30 KPX f odieresis -30 KPX f ograve -30 KPX f ohungarumlaut -30 KPX f omacron -30 KPX f oslash -30 KPX f otilde -30 KPX f period -30 KPX f quotedblright 60 KPX f quoteright 50 KPX g r -10 KPX g racute -10 KPX g rcaron -10 KPX g rcommaaccent -10 KPX gbreve r -10 KPX gbreve racute -10 KPX gbreve rcaron -10 KPX gbreve rcommaaccent -10 KPX gcommaaccent r -10 KPX gcommaaccent racute -10 KPX gcommaaccent rcaron -10 KPX gcommaaccent rcommaaccent -10 KPX h y -30 KPX h yacute -30 KPX h ydieresis -30 KPX k e -20 KPX k eacute -20 KPX k ecaron -20 KPX k ecircumflex -20 KPX k edieresis -20 KPX k edotaccent -20 KPX k egrave -20 KPX k emacron -20 KPX k eogonek -20 KPX k o -20 KPX k oacute -20 KPX k ocircumflex -20 KPX k odieresis -20 KPX k ograve -20 KPX k ohungarumlaut -20 KPX k omacron -20 KPX k oslash -20 KPX k otilde -20 KPX kcommaaccent e -20 KPX kcommaaccent eacute -20 KPX kcommaaccent ecaron -20 KPX kcommaaccent ecircumflex -20 KPX kcommaaccent edieresis -20 KPX kcommaaccent edotaccent -20 KPX kcommaaccent egrave -20 KPX kcommaaccent emacron -20 KPX kcommaaccent eogonek -20 KPX kcommaaccent o -20 KPX kcommaaccent oacute -20 KPX kcommaaccent ocircumflex -20 KPX kcommaaccent odieresis -20 KPX kcommaaccent ograve -20 KPX kcommaaccent ohungarumlaut -20 KPX kcommaaccent omacron -20 KPX kcommaaccent oslash -20 KPX kcommaaccent otilde -20 KPX m u -10 KPX m uacute -10 KPX m ucircumflex -10 KPX m udieresis -10 KPX m ugrave -10 KPX m uhungarumlaut -10 KPX m umacron -10 KPX m uogonek -10 KPX m uring -10 KPX m y -15 KPX m yacute -15 KPX m ydieresis -15 KPX n u -10 KPX n uacute -10 KPX n ucircumflex -10 KPX n udieresis -10 KPX n ugrave -10 KPX n uhungarumlaut -10 KPX n umacron -10 KPX n uogonek -10 KPX n uring -10 KPX n v -20 KPX n y -15 KPX n yacute -15 KPX n ydieresis -15 KPX nacute u -10 KPX nacute uacute -10 KPX nacute ucircumflex -10 KPX nacute udieresis -10 KPX nacute ugrave -10 KPX nacute uhungarumlaut -10 KPX nacute umacron -10 KPX nacute uogonek -10 KPX nacute uring -10 KPX nacute v -20 KPX nacute y -15 KPX nacute yacute -15 KPX nacute ydieresis -15 KPX ncaron u -10 KPX ncaron uacute -10 KPX ncaron ucircumflex -10 KPX ncaron udieresis -10 KPX ncaron ugrave -10 KPX ncaron uhungarumlaut -10 KPX ncaron umacron -10 KPX ncaron uogonek -10 KPX ncaron uring -10 KPX ncaron v -20 KPX ncaron y -15 KPX ncaron yacute -15 KPX ncaron ydieresis -15 KPX ncommaaccent u -10 KPX ncommaaccent uacute -10 KPX ncommaaccent ucircumflex -10 KPX ncommaaccent udieresis -10 KPX ncommaaccent ugrave -10 KPX ncommaaccent uhungarumlaut -10 KPX ncommaaccent umacron -10 KPX ncommaaccent uogonek -10 KPX ncommaaccent uring -10 KPX ncommaaccent v -20 KPX ncommaaccent y -15 KPX ncommaaccent yacute -15 KPX ncommaaccent ydieresis -15 KPX ntilde u -10 KPX ntilde uacute -10 KPX ntilde ucircumflex -10 KPX ntilde udieresis -10 KPX ntilde ugrave -10 KPX ntilde uhungarumlaut -10 KPX ntilde umacron -10 KPX ntilde uogonek -10 KPX ntilde uring -10 KPX ntilde v -20 KPX ntilde y -15 KPX ntilde yacute -15 KPX ntilde ydieresis -15 KPX o comma -40 KPX o period -40 KPX o v -15 KPX o w -15 KPX o x -30 KPX o y -30 KPX o yacute -30 KPX o ydieresis -30 KPX oacute comma -40 KPX oacute period -40 KPX oacute v -15 KPX oacute w -15 KPX oacute x -30 KPX oacute y -30 KPX oacute yacute -30 KPX oacute ydieresis -30 KPX ocircumflex comma -40 KPX ocircumflex period -40 KPX ocircumflex v -15 KPX ocircumflex w -15 KPX ocircumflex x -30 KPX ocircumflex y -30 KPX ocircumflex yacute -30 KPX ocircumflex ydieresis -30 KPX odieresis comma -40 KPX odieresis period -40 KPX odieresis v -15 KPX odieresis w -15 KPX odieresis x -30 KPX odieresis y -30 KPX odieresis yacute -30 KPX odieresis ydieresis -30 KPX ograve comma -40 KPX ograve period -40 KPX ograve v -15 KPX ograve w -15 KPX ograve x -30 KPX ograve y -30 KPX ograve yacute -30 KPX ograve ydieresis -30 KPX ohungarumlaut comma -40 KPX ohungarumlaut period -40 KPX ohungarumlaut v -15 KPX ohungarumlaut w -15 KPX ohungarumlaut x -30 KPX ohungarumlaut y -30 KPX ohungarumlaut yacute -30 KPX ohungarumlaut ydieresis -30 KPX omacron comma -40 KPX omacron period -40 KPX omacron v -15 KPX omacron w -15 KPX omacron x -30 KPX omacron y -30 KPX omacron yacute -30 KPX omacron ydieresis -30 KPX oslash a -55 KPX oslash aacute -55 KPX oslash abreve -55 KPX oslash acircumflex -55 KPX oslash adieresis -55 KPX oslash agrave -55 KPX oslash amacron -55 KPX oslash aogonek -55 KPX oslash aring -55 KPX oslash atilde -55 KPX oslash b -55 KPX oslash c -55 KPX oslash cacute -55 KPX oslash ccaron -55 KPX oslash ccedilla -55 KPX oslash comma -95 KPX oslash d -55 KPX oslash dcroat -55 KPX oslash e -55 KPX oslash eacute -55 KPX oslash ecaron -55 KPX oslash ecircumflex -55 KPX oslash edieresis -55 KPX oslash edotaccent -55 KPX oslash egrave -55 KPX oslash emacron -55 KPX oslash eogonek -55 KPX oslash f -55 KPX oslash g -55 KPX oslash gbreve -55 KPX oslash gcommaaccent -55 KPX oslash h -55 KPX oslash i -55 KPX oslash iacute -55 KPX oslash icircumflex -55 KPX oslash idieresis -55 KPX oslash igrave -55 KPX oslash imacron -55 KPX oslash iogonek -55 KPX oslash j -55 KPX oslash k -55 KPX oslash kcommaaccent -55 KPX oslash l -55 KPX oslash lacute -55 KPX oslash lcommaaccent -55 KPX oslash lslash -55 KPX oslash m -55 KPX oslash n -55 KPX oslash nacute -55 KPX oslash ncaron -55 KPX oslash ncommaaccent -55 KPX oslash ntilde -55 KPX oslash o -55 KPX oslash oacute -55 KPX oslash ocircumflex -55 KPX oslash odieresis -55 KPX oslash ograve -55 KPX oslash ohungarumlaut -55 KPX oslash omacron -55 KPX oslash oslash -55 KPX oslash otilde -55 KPX oslash p -55 KPX oslash period -95 KPX oslash q -55 KPX oslash r -55 KPX oslash racute -55 KPX oslash rcaron -55 KPX oslash rcommaaccent -55 KPX oslash s -55 KPX oslash sacute -55 KPX oslash scaron -55 KPX oslash scedilla -55 KPX oslash scommaaccent -55 KPX oslash t -55 KPX oslash tcommaaccent -55 KPX oslash u -55 KPX oslash uacute -55 KPX oslash ucircumflex -55 KPX oslash udieresis -55 KPX oslash ugrave -55 KPX oslash uhungarumlaut -55 KPX oslash umacron -55 KPX oslash uogonek -55 KPX oslash uring -55 KPX oslash v -70 KPX oslash w -70 KPX oslash x -85 KPX oslash y -70 KPX oslash yacute -70 KPX oslash ydieresis -70 KPX oslash z -55 KPX oslash zacute -55 KPX oslash zcaron -55 KPX oslash zdotaccent -55 KPX otilde comma -40 KPX otilde period -40 KPX otilde v -15 KPX otilde w -15 KPX otilde x -30 KPX otilde y -30 KPX otilde yacute -30 KPX otilde ydieresis -30 KPX p comma -35 KPX p period -35 KPX p y -30 KPX p yacute -30 KPX p ydieresis -30 KPX period quotedblright -100 KPX period quoteright -100 KPX period space -60 KPX quotedblright space -40 KPX quoteleft quoteleft -57 KPX quoteright d -50 KPX quoteright dcroat -50 KPX quoteright quoteright -57 KPX quoteright r -50 KPX quoteright racute -50 KPX quoteright rcaron -50 KPX quoteright rcommaaccent -50 KPX quoteright s -50 KPX quoteright sacute -50 KPX quoteright scaron -50 KPX quoteright scedilla -50 KPX quoteright scommaaccent -50 KPX quoteright space -70 KPX r a -10 KPX r aacute -10 KPX r abreve -10 KPX r acircumflex -10 KPX r adieresis -10 KPX r agrave -10 KPX r amacron -10 KPX r aogonek -10 KPX r aring -10 KPX r atilde -10 KPX r colon 30 KPX r comma -50 KPX r i 15 KPX r iacute 15 KPX r icircumflex 15 KPX r idieresis 15 KPX r igrave 15 KPX r imacron 15 KPX r iogonek 15 KPX r k 15 KPX r kcommaaccent 15 KPX r l 15 KPX r lacute 15 KPX r lcommaaccent 15 KPX r lslash 15 KPX r m 25 KPX r n 25 KPX r nacute 25 KPX r ncaron 25 KPX r ncommaaccent 25 KPX r ntilde 25 KPX r p 30 KPX r period -50 KPX r semicolon 30 KPX r t 40 KPX r tcommaaccent 40 KPX r u 15 KPX r uacute 15 KPX r ucircumflex 15 KPX r udieresis 15 KPX r ugrave 15 KPX r uhungarumlaut 15 KPX r umacron 15 KPX r uogonek 15 KPX r uring 15 KPX r v 30 KPX r y 30 KPX r yacute 30 KPX r ydieresis 30 KPX racute a -10 KPX racute aacute -10 KPX racute abreve -10 KPX racute acircumflex -10 KPX racute adieresis -10 KPX racute agrave -10 KPX racute amacron -10 KPX racute aogonek -10 KPX racute aring -10 KPX racute atilde -10 KPX racute colon 30 KPX racute comma -50 KPX racute i 15 KPX racute iacute 15 KPX racute icircumflex 15 KPX racute idieresis 15 KPX racute igrave 15 KPX racute imacron 15 KPX racute iogonek 15 KPX racute k 15 KPX racute kcommaaccent 15 KPX racute l 15 KPX racute lacute 15 KPX racute lcommaaccent 15 KPX racute lslash 15 KPX racute m 25 KPX racute n 25 KPX racute nacute 25 KPX racute ncaron 25 KPX racute ncommaaccent 25 KPX racute ntilde 25 KPX racute p 30 KPX racute period -50 KPX racute semicolon 30 KPX racute t 40 KPX racute tcommaaccent 40 KPX racute u 15 KPX racute uacute 15 KPX racute ucircumflex 15 KPX racute udieresis 15 KPX racute ugrave 15 KPX racute uhungarumlaut 15 KPX racute umacron 15 KPX racute uogonek 15 KPX racute uring 15 KPX racute v 30 KPX racute y 30 KPX racute yacute 30 KPX racute ydieresis 30 KPX rcaron a -10 KPX rcaron aacute -10 KPX rcaron abreve -10 KPX rcaron acircumflex -10 KPX rcaron adieresis -10 KPX rcaron agrave -10 KPX rcaron amacron -10 KPX rcaron aogonek -10 KPX rcaron aring -10 KPX rcaron atilde -10 KPX rcaron colon 30 KPX rcaron comma -50 KPX rcaron i 15 KPX rcaron iacute 15 KPX rcaron icircumflex 15 KPX rcaron idieresis 15 KPX rcaron igrave 15 KPX rcaron imacron 15 KPX rcaron iogonek 15 KPX rcaron k 15 KPX rcaron kcommaaccent 15 KPX rcaron l 15 KPX rcaron lacute 15 KPX rcaron lcommaaccent 15 KPX rcaron lslash 15 KPX rcaron m 25 KPX rcaron n 25 KPX rcaron nacute 25 KPX rcaron ncaron 25 KPX rcaron ncommaaccent 25 KPX rcaron ntilde 25 KPX rcaron p 30 KPX rcaron period -50 KPX rcaron semicolon 30 KPX rcaron t 40 KPX rcaron tcommaaccent 40 KPX rcaron u 15 KPX rcaron uacute 15 KPX rcaron ucircumflex 15 KPX rcaron udieresis 15 KPX rcaron ugrave 15 KPX rcaron uhungarumlaut 15 KPX rcaron umacron 15 KPX rcaron uogonek 15 KPX rcaron uring 15 KPX rcaron v 30 KPX rcaron y 30 KPX rcaron yacute 30 KPX rcaron ydieresis 30 KPX rcommaaccent a -10 KPX rcommaaccent aacute -10 KPX rcommaaccent abreve -10 KPX rcommaaccent acircumflex -10 KPX rcommaaccent adieresis -10 KPX rcommaaccent agrave -10 KPX rcommaaccent amacron -10 KPX rcommaaccent aogonek -10 KPX rcommaaccent aring -10 KPX rcommaaccent atilde -10 KPX rcommaaccent colon 30 KPX rcommaaccent comma -50 KPX rcommaaccent i 15 KPX rcommaaccent iacute 15 KPX rcommaaccent icircumflex 15 KPX rcommaaccent idieresis 15 KPX rcommaaccent igrave 15 KPX rcommaaccent imacron 15 KPX rcommaaccent iogonek 15 KPX rcommaaccent k 15 KPX rcommaaccent kcommaaccent 15 KPX rcommaaccent l 15 KPX rcommaaccent lacute 15 KPX rcommaaccent lcommaaccent 15 KPX rcommaaccent lslash 15 KPX rcommaaccent m 25 KPX rcommaaccent n 25 KPX rcommaaccent nacute 25 KPX rcommaaccent ncaron 25 KPX rcommaaccent ncommaaccent 25 KPX rcommaaccent ntilde 25 KPX rcommaaccent p 30 KPX rcommaaccent period -50 KPX rcommaaccent semicolon 30 KPX rcommaaccent t 40 KPX rcommaaccent tcommaaccent 40 KPX rcommaaccent u 15 KPX rcommaaccent uacute 15 KPX rcommaaccent ucircumflex 15 KPX rcommaaccent udieresis 15 KPX rcommaaccent ugrave 15 KPX rcommaaccent uhungarumlaut 15 KPX rcommaaccent umacron 15 KPX rcommaaccent uogonek 15 KPX rcommaaccent uring 15 KPX rcommaaccent v 30 KPX rcommaaccent y 30 KPX rcommaaccent yacute 30 KPX rcommaaccent ydieresis 30 KPX s comma -15 KPX s period -15 KPX s w -30 KPX sacute comma -15 KPX sacute period -15 KPX sacute w -30 KPX scaron comma -15 KPX scaron period -15 KPX scaron w -30 KPX scedilla comma -15 KPX scedilla period -15 KPX scedilla w -30 KPX scommaaccent comma -15 KPX scommaaccent period -15 KPX scommaaccent w -30 KPX semicolon space -50 KPX space T -50 KPX space Tcaron -50 KPX space Tcommaaccent -50 KPX space V -50 KPX space W -40 KPX space Y -90 KPX space Yacute -90 KPX space Ydieresis -90 KPX space quotedblleft -30 KPX space quoteleft -60 KPX v a -25 KPX v aacute -25 KPX v abreve -25 KPX v acircumflex -25 KPX v adieresis -25 KPX v agrave -25 KPX v amacron -25 KPX v aogonek -25 KPX v aring -25 KPX v atilde -25 KPX v comma -80 KPX v e -25 KPX v eacute -25 KPX v ecaron -25 KPX v ecircumflex -25 KPX v edieresis -25 KPX v edotaccent -25 KPX v egrave -25 KPX v emacron -25 KPX v eogonek -25 KPX v o -25 KPX v oacute -25 KPX v ocircumflex -25 KPX v odieresis -25 KPX v ograve -25 KPX v ohungarumlaut -25 KPX v omacron -25 KPX v oslash -25 KPX v otilde -25 KPX v period -80 KPX w a -15 KPX w aacute -15 KPX w abreve -15 KPX w acircumflex -15 KPX w adieresis -15 KPX w agrave -15 KPX w amacron -15 KPX w aogonek -15 KPX w aring -15 KPX w atilde -15 KPX w comma -60 KPX w e -10 KPX w eacute -10 KPX w ecaron -10 KPX w ecircumflex -10 KPX w edieresis -10 KPX w edotaccent -10 KPX w egrave -10 KPX w emacron -10 KPX w eogonek -10 KPX w o -10 KPX w oacute -10 KPX w ocircumflex -10 KPX w odieresis -10 KPX w ograve -10 KPX w ohungarumlaut -10 KPX w omacron -10 KPX w oslash -10 KPX w otilde -10 KPX w period -60 KPX x e -30 KPX x eacute -30 KPX x ecaron -30 KPX x ecircumflex -30 KPX x edieresis -30 KPX x edotaccent -30 KPX x egrave -30 KPX x emacron -30 KPX x eogonek -30 KPX y a -20 KPX y aacute -20 KPX y abreve -20 KPX y acircumflex -20 KPX y adieresis -20 KPX y agrave -20 KPX y amacron -20 KPX y aogonek -20 KPX y aring -20 KPX y atilde -20 KPX y comma -100 KPX y e -20 KPX y eacute -20 KPX y ecaron -20 KPX y ecircumflex -20 KPX y edieresis -20 KPX y edotaccent -20 KPX y egrave -20 KPX y emacron -20 KPX y eogonek -20 KPX y o -20 KPX y oacute -20 KPX y ocircumflex -20 KPX y odieresis -20 KPX y ograve -20 KPX y ohungarumlaut -20 KPX y omacron -20 KPX y oslash -20 KPX y otilde -20 KPX y period -100 KPX yacute a -20 KPX yacute aacute -20 KPX yacute abreve -20 KPX yacute acircumflex -20 KPX yacute adieresis -20 KPX yacute agrave -20 KPX yacute amacron -20 KPX yacute aogonek -20 KPX yacute aring -20 KPX yacute atilde -20 KPX yacute comma -100 KPX yacute e -20 KPX yacute eacute -20 KPX yacute ecaron -20 KPX yacute ecircumflex -20 KPX yacute edieresis -20 KPX yacute edotaccent -20 KPX yacute egrave -20 KPX yacute emacron -20 KPX yacute eogonek -20 KPX yacute o -20 KPX yacute oacute -20 KPX yacute ocircumflex -20 KPX yacute odieresis -20 KPX yacute ograve -20 KPX yacute ohungarumlaut -20 KPX yacute omacron -20 KPX yacute oslash -20 KPX yacute otilde -20 KPX yacute period -100 KPX ydieresis a -20 KPX ydieresis aacute -20 KPX ydieresis abreve -20 KPX ydieresis acircumflex -20 KPX ydieresis adieresis -20 KPX ydieresis agrave -20 KPX ydieresis amacron -20 KPX ydieresis aogonek -20 KPX ydieresis aring -20 KPX ydieresis atilde -20 KPX ydieresis comma -100 KPX ydieresis e -20 KPX ydieresis eacute -20 KPX ydieresis ecaron -20 KPX ydieresis ecircumflex -20 KPX ydieresis edieresis -20 KPX ydieresis edotaccent -20 KPX ydieresis egrave -20 KPX ydieresis emacron -20 KPX ydieresis eogonek -20 KPX ydieresis o -20 KPX ydieresis oacute -20 KPX ydieresis ocircumflex -20 KPX ydieresis odieresis -20 KPX ydieresis ograve -20 KPX ydieresis ohungarumlaut -20 KPX ydieresis omacron -20 KPX ydieresis oslash -20 KPX ydieresis otilde -20 KPX ydieresis period -100 KPX z e -15 KPX z eacute -15 KPX z ecaron -15 KPX z ecircumflex -15 KPX z edieresis -15 KPX z edotaccent -15 KPX z egrave -15 KPX z emacron -15 KPX z eogonek -15 KPX z o -15 KPX z oacute -15 KPX z ocircumflex -15 KPX z odieresis -15 KPX z ograve -15 KPX z ohungarumlaut -15 KPX z omacron -15 KPX z oslash -15 KPX z otilde -15 KPX zacute e -15 KPX zacute eacute -15 KPX zacute ecaron -15 KPX zacute ecircumflex -15 KPX zacute edieresis -15 KPX zacute edotaccent -15 KPX zacute egrave -15 KPX zacute emacron -15 KPX zacute eogonek -15 KPX zacute o -15 KPX zacute oacute -15 KPX zacute ocircumflex -15 KPX zacute odieresis -15 KPX zacute ograve -15 KPX zacute ohungarumlaut -15 KPX zacute omacron -15 KPX zacute oslash -15 KPX zacute otilde -15 KPX zcaron e -15 KPX zcaron eacute -15 KPX zcaron ecaron -15 KPX zcaron ecircumflex -15 KPX zcaron edieresis -15 KPX zcaron edotaccent -15 KPX zcaron egrave -15 KPX zcaron emacron -15 KPX zcaron eogonek -15 KPX zcaron o -15 KPX zcaron oacute -15 KPX zcaron ocircumflex -15 KPX zcaron odieresis -15 KPX zcaron ograve -15 KPX zcaron ohungarumlaut -15 KPX zcaron omacron -15 KPX zcaron oslash -15 KPX zcaron otilde -15 KPX zdotaccent e -15 KPX zdotaccent eacute -15 KPX zdotaccent ecaron -15 KPX zdotaccent ecircumflex -15 KPX zdotaccent edieresis -15 KPX zdotaccent edotaccent -15 KPX zdotaccent egrave -15 KPX zdotaccent emacron -15 KPX zdotaccent eogonek -15 KPX zdotaccent o -15 KPX zdotaccent oacute -15 KPX zdotaccent ocircumflex -15 KPX zdotaccent odieresis -15 KPX zdotaccent ograve -15 KPX zdotaccent ohungarumlaut -15 KPX zdotaccent omacron -15 KPX zdotaccent oslash -15 KPX zdotaccent otilde -15 EndKernPairs EndKernData EndFontMetrics gle-graphics-4.2.4c/src/fonts/Adobe-Core35_AFMs-314/Helvetica-Bold.afm0000664000000000000000000020712511405446017023354 0ustar rootrootStartFontMetrics 4.1 Comment Copyright (c) 1985, 1987, 1989, 1990, 1997 Adobe Systems Incorporated. All Rights Reserved. Comment Creation Date: Thu May 1 12:43:52 1997 Comment UniqueID 43052 Comment VMusage 37169 48194 FontName Helvetica-Bold FullName Helvetica Bold FamilyName Helvetica Weight Bold ItalicAngle 0 IsFixedPitch false FontBBox -170 -228 1003 962 UnderlinePosition -100 UnderlineThickness 50 Version 002.000 Notice Copyright (c) 1985, 1987, 1989, 1990, 1997 Adobe Systems Incorporated. All Rights Reserved.Helvetica is a trademark of Linotype-Hell AG and/or its subsidiaries. EncodingScheme AdobeStandardEncoding CapHeight 718 XHeight 532 Ascender 718 Descender -207 StdHW 118 StdVW 140 StartCharMetrics 314 C 32 ; WX 278 ; N space ; B 0 0 0 0 ; C 33 ; WX 333 ; N exclam ; B 90 0 244 718 ; C 34 ; WX 474 ; N quotedbl ; B 98 447 376 718 ; C 35 ; WX 556 ; N numbersign ; B 18 0 538 698 ; C 36 ; WX 556 ; N dollar ; B 30 -115 523 775 ; C 37 ; WX 889 ; N percent ; B 28 -19 861 710 ; C 38 ; WX 722 ; N ampersand ; B 54 -19 701 718 ; C 39 ; WX 278 ; N quoteright ; B 69 445 209 718 ; C 40 ; WX 333 ; N parenleft ; B 35 -208 314 734 ; C 41 ; WX 333 ; N parenright ; B 19 -208 298 734 ; C 42 ; WX 389 ; N asterisk ; B 27 387 362 718 ; C 43 ; WX 584 ; N plus ; B 40 0 544 506 ; C 44 ; WX 278 ; N comma ; B 64 -168 214 146 ; C 45 ; WX 333 ; N hyphen ; B 27 215 306 345 ; C 46 ; WX 278 ; N period ; B 64 0 214 146 ; C 47 ; WX 278 ; N slash ; B -33 -19 311 737 ; C 48 ; WX 556 ; N zero ; B 32 -19 524 710 ; C 49 ; WX 556 ; N one ; B 69 0 378 710 ; C 50 ; WX 556 ; N two ; B 26 0 511 710 ; C 51 ; WX 556 ; N three ; B 27 -19 516 710 ; C 52 ; WX 556 ; N four ; B 27 0 526 710 ; C 53 ; WX 556 ; N five ; B 27 -19 516 698 ; C 54 ; WX 556 ; N six ; B 31 -19 520 710 ; C 55 ; WX 556 ; N seven ; B 25 0 528 698 ; C 56 ; WX 556 ; N eight ; B 32 -19 524 710 ; C 57 ; WX 556 ; N nine ; B 30 -19 522 710 ; C 58 ; WX 333 ; N colon ; B 92 0 242 512 ; C 59 ; WX 333 ; N semicolon ; B 92 -168 242 512 ; C 60 ; WX 584 ; N less ; B 38 -8 546 514 ; C 61 ; WX 584 ; N equal ; B 40 87 544 419 ; C 62 ; WX 584 ; N greater ; B 38 -8 546 514 ; C 63 ; WX 611 ; N question ; B 60 0 556 727 ; C 64 ; WX 975 ; N at ; B 118 -19 856 737 ; C 65 ; WX 722 ; N A ; B 20 0 702 718 ; C 66 ; WX 722 ; N B ; B 76 0 669 718 ; C 67 ; WX 722 ; N C ; B 44 -19 684 737 ; C 68 ; WX 722 ; N D ; B 76 0 685 718 ; C 69 ; WX 667 ; N E ; B 76 0 621 718 ; C 70 ; WX 611 ; N F ; B 76 0 587 718 ; C 71 ; WX 778 ; N G ; B 44 -19 713 737 ; C 72 ; WX 722 ; N H ; B 71 0 651 718 ; C 73 ; WX 278 ; N I ; B 64 0 214 718 ; C 74 ; WX 556 ; N J ; B 22 -18 484 718 ; C 75 ; WX 722 ; N K ; B 87 0 722 718 ; C 76 ; WX 611 ; N L ; B 76 0 583 718 ; C 77 ; WX 833 ; N M ; B 69 0 765 718 ; C 78 ; WX 722 ; N N ; B 69 0 654 718 ; C 79 ; WX 778 ; N O ; B 44 -19 734 737 ; C 80 ; WX 667 ; N P ; B 76 0 627 718 ; C 81 ; WX 778 ; N Q ; B 44 -52 737 737 ; C 82 ; WX 722 ; N R ; B 76 0 677 718 ; C 83 ; WX 667 ; N S ; B 39 -19 629 737 ; C 84 ; WX 611 ; N T ; B 14 0 598 718 ; C 85 ; WX 722 ; N U ; B 72 -19 651 718 ; C 86 ; WX 667 ; N V ; B 19 0 648 718 ; C 87 ; WX 944 ; N W ; B 16 0 929 718 ; C 88 ; WX 667 ; N X ; B 14 0 653 718 ; C 89 ; WX 667 ; N Y ; B 15 0 653 718 ; C 90 ; WX 611 ; N Z ; B 25 0 586 718 ; C 91 ; WX 333 ; N bracketleft ; B 63 -196 309 722 ; C 92 ; WX 278 ; N backslash ; B -33 -19 311 737 ; C 93 ; WX 333 ; N bracketright ; B 24 -196 270 722 ; C 94 ; WX 584 ; N asciicircum ; B 62 323 522 698 ; C 95 ; WX 556 ; N underscore ; B 0 -125 556 -75 ; C 96 ; WX 278 ; N quoteleft ; B 69 454 209 727 ; C 97 ; WX 556 ; N a ; B 29 -14 527 546 ; C 98 ; WX 611 ; N b ; B 61 -14 578 718 ; C 99 ; WX 556 ; N c ; B 34 -14 524 546 ; C 100 ; WX 611 ; N d ; B 34 -14 551 718 ; C 101 ; WX 556 ; N e ; B 23 -14 528 546 ; C 102 ; WX 333 ; N f ; B 10 0 318 727 ; L i fi ; L l fl ; C 103 ; WX 611 ; N g ; B 40 -217 553 546 ; C 104 ; WX 611 ; N h ; B 65 0 546 718 ; C 105 ; WX 278 ; N i ; B 69 0 209 725 ; C 106 ; WX 278 ; N j ; B 3 -214 209 725 ; C 107 ; WX 556 ; N k ; B 69 0 562 718 ; C 108 ; WX 278 ; N l ; B 69 0 209 718 ; C 109 ; WX 889 ; N m ; B 64 0 826 546 ; C 110 ; WX 611 ; N n ; B 65 0 546 546 ; C 111 ; WX 611 ; N o ; B 34 -14 578 546 ; C 112 ; WX 611 ; N p ; B 62 -207 578 546 ; C 113 ; WX 611 ; N q ; B 34 -207 552 546 ; C 114 ; WX 389 ; N r ; B 64 0 373 546 ; C 115 ; WX 556 ; N s ; B 30 -14 519 546 ; C 116 ; WX 333 ; N t ; B 10 -6 309 676 ; C 117 ; WX 611 ; N u ; B 66 -14 545 532 ; C 118 ; WX 556 ; N v ; B 13 0 543 532 ; C 119 ; WX 778 ; N w ; B 10 0 769 532 ; C 120 ; WX 556 ; N x ; B 15 0 541 532 ; C 121 ; WX 556 ; N y ; B 10 -214 539 532 ; C 122 ; WX 500 ; N z ; B 20 0 480 532 ; C 123 ; WX 389 ; N braceleft ; B 48 -196 365 722 ; C 124 ; WX 280 ; N bar ; B 84 -225 196 775 ; C 125 ; WX 389 ; N braceright ; B 24 -196 341 722 ; C 126 ; WX 584 ; N asciitilde ; B 61 163 523 343 ; C 161 ; WX 333 ; N exclamdown ; B 90 -186 244 532 ; C 162 ; WX 556 ; N cent ; B 34 -118 524 628 ; C 163 ; WX 556 ; N sterling ; B 28 -16 541 718 ; C 164 ; WX 167 ; N fraction ; B -170 -19 336 710 ; C 165 ; WX 556 ; N yen ; B -9 0 565 698 ; C 166 ; WX 556 ; N florin ; B -10 -210 516 737 ; C 167 ; WX 556 ; N section ; B 34 -184 522 727 ; C 168 ; WX 556 ; N currency ; B -3 76 559 636 ; C 169 ; WX 238 ; N quotesingle ; B 70 447 168 718 ; C 170 ; WX 500 ; N quotedblleft ; B 64 454 436 727 ; C 171 ; WX 556 ; N guillemotleft ; B 88 76 468 484 ; C 172 ; WX 333 ; N guilsinglleft ; B 83 76 250 484 ; C 173 ; WX 333 ; N guilsinglright ; B 83 76 250 484 ; C 174 ; WX 611 ; N fi ; B 10 0 542 727 ; C 175 ; WX 611 ; N fl ; B 10 0 542 727 ; C 177 ; WX 556 ; N endash ; B 0 227 556 333 ; C 178 ; WX 556 ; N dagger ; B 36 -171 520 718 ; C 179 ; WX 556 ; N daggerdbl ; B 36 -171 520 718 ; C 180 ; WX 278 ; N periodcentered ; B 58 172 220 334 ; C 182 ; WX 556 ; N paragraph ; B -8 -191 539 700 ; C 183 ; WX 350 ; N bullet ; B 10 194 340 524 ; C 184 ; WX 278 ; N quotesinglbase ; B 69 -146 209 127 ; C 185 ; WX 500 ; N quotedblbase ; B 64 -146 436 127 ; C 186 ; WX 500 ; N quotedblright ; B 64 445 436 718 ; C 187 ; WX 556 ; N guillemotright ; B 88 76 468 484 ; C 188 ; WX 1000 ; N ellipsis ; B 92 0 908 146 ; C 189 ; WX 1000 ; N perthousand ; B -3 -19 1003 710 ; C 191 ; WX 611 ; N questiondown ; B 55 -195 551 532 ; C 193 ; WX 333 ; N grave ; B -23 604 225 750 ; C 194 ; WX 333 ; N acute ; B 108 604 356 750 ; C 195 ; WX 333 ; N circumflex ; B -10 604 343 750 ; C 196 ; WX 333 ; N tilde ; B -17 610 350 737 ; C 197 ; WX 333 ; N macron ; B -6 604 339 678 ; C 198 ; WX 333 ; N breve ; B -2 604 335 750 ; C 199 ; WX 333 ; N dotaccent ; B 104 614 230 729 ; C 200 ; WX 333 ; N dieresis ; B 6 614 327 729 ; C 202 ; WX 333 ; N ring ; B 59 568 275 776 ; C 203 ; WX 333 ; N cedilla ; B 6 -228 245 0 ; C 205 ; WX 333 ; N hungarumlaut ; B 9 604 486 750 ; C 206 ; WX 333 ; N ogonek ; B 71 -228 304 0 ; C 207 ; WX 333 ; N caron ; B -10 604 343 750 ; C 208 ; WX 1000 ; N emdash ; B 0 227 1000 333 ; C 225 ; WX 1000 ; N AE ; B 5 0 954 718 ; C 227 ; WX 370 ; N ordfeminine ; B 22 401 347 737 ; C 232 ; WX 611 ; N Lslash ; B -20 0 583 718 ; C 233 ; WX 778 ; N Oslash ; B 33 -27 744 745 ; C 234 ; WX 1000 ; N OE ; B 37 -19 961 737 ; C 235 ; WX 365 ; N ordmasculine ; B 6 401 360 737 ; C 241 ; WX 889 ; N ae ; B 29 -14 858 546 ; C 245 ; WX 278 ; N dotlessi ; B 69 0 209 532 ; C 248 ; WX 278 ; N lslash ; B -18 0 296 718 ; C 249 ; WX 611 ; N oslash ; B 22 -29 589 560 ; C 250 ; WX 944 ; N oe ; B 34 -14 912 546 ; C 251 ; WX 611 ; N germandbls ; B 69 -14 579 731 ; C -1 ; WX 278 ; N Idieresis ; B -21 0 300 915 ; C -1 ; WX 556 ; N eacute ; B 23 -14 528 750 ; C -1 ; WX 556 ; N abreve ; B 29 -14 527 750 ; C -1 ; WX 611 ; N uhungarumlaut ; B 66 -14 625 750 ; C -1 ; WX 556 ; N ecaron ; B 23 -14 528 750 ; C -1 ; WX 667 ; N Ydieresis ; B 15 0 653 915 ; C -1 ; WX 584 ; N divide ; B 40 -42 544 548 ; C -1 ; WX 667 ; N Yacute ; B 15 0 653 936 ; C -1 ; WX 722 ; N Acircumflex ; B 20 0 702 936 ; C -1 ; WX 556 ; N aacute ; B 29 -14 527 750 ; C -1 ; WX 722 ; N Ucircumflex ; B 72 -19 651 936 ; C -1 ; WX 556 ; N yacute ; B 10 -214 539 750 ; C -1 ; WX 556 ; N scommaaccent ; B 30 -228 519 546 ; C -1 ; WX 556 ; N ecircumflex ; B 23 -14 528 750 ; C -1 ; WX 722 ; N Uring ; B 72 -19 651 962 ; C -1 ; WX 722 ; N Udieresis ; B 72 -19 651 915 ; C -1 ; WX 556 ; N aogonek ; B 29 -224 545 546 ; C -1 ; WX 722 ; N Uacute ; B 72 -19 651 936 ; C -1 ; WX 611 ; N uogonek ; B 66 -228 545 532 ; C -1 ; WX 667 ; N Edieresis ; B 76 0 621 915 ; C -1 ; WX 722 ; N Dcroat ; B -5 0 685 718 ; C -1 ; WX 250 ; N commaaccent ; B 64 -228 199 -50 ; C -1 ; WX 737 ; N copyright ; B -11 -19 749 737 ; C -1 ; WX 667 ; N Emacron ; B 76 0 621 864 ; C -1 ; WX 556 ; N ccaron ; B 34 -14 524 750 ; C -1 ; WX 556 ; N aring ; B 29 -14 527 776 ; C -1 ; WX 722 ; N Ncommaaccent ; B 69 -228 654 718 ; C -1 ; WX 278 ; N lacute ; B 69 0 329 936 ; C -1 ; WX 556 ; N agrave ; B 29 -14 527 750 ; C -1 ; WX 611 ; N Tcommaaccent ; B 14 -228 598 718 ; C -1 ; WX 722 ; N Cacute ; B 44 -19 684 936 ; C -1 ; WX 556 ; N atilde ; B 29 -14 527 737 ; C -1 ; WX 667 ; N Edotaccent ; B 76 0 621 915 ; C -1 ; WX 556 ; N scaron ; B 30 -14 519 750 ; C -1 ; WX 556 ; N scedilla ; B 30 -228 519 546 ; C -1 ; WX 278 ; N iacute ; B 69 0 329 750 ; C -1 ; WX 494 ; N lozenge ; B 10 0 484 745 ; C -1 ; WX 722 ; N Rcaron ; B 76 0 677 936 ; C -1 ; WX 778 ; N Gcommaaccent ; B 44 -228 713 737 ; C -1 ; WX 611 ; N ucircumflex ; B 66 -14 545 750 ; C -1 ; WX 556 ; N acircumflex ; B 29 -14 527 750 ; C -1 ; WX 722 ; N Amacron ; B 20 0 702 864 ; C -1 ; WX 389 ; N rcaron ; B 18 0 373 750 ; C -1 ; WX 556 ; N ccedilla ; B 34 -228 524 546 ; C -1 ; WX 611 ; N Zdotaccent ; B 25 0 586 915 ; C -1 ; WX 667 ; N Thorn ; B 76 0 627 718 ; C -1 ; WX 778 ; N Omacron ; B 44 -19 734 864 ; C -1 ; WX 722 ; N Racute ; B 76 0 677 936 ; C -1 ; WX 667 ; N Sacute ; B 39 -19 629 936 ; C -1 ; WX 743 ; N dcaron ; B 34 -14 750 718 ; C -1 ; WX 722 ; N Umacron ; B 72 -19 651 864 ; C -1 ; WX 611 ; N uring ; B 66 -14 545 776 ; C -1 ; WX 333 ; N threesuperior ; B 8 271 326 710 ; C -1 ; WX 778 ; N Ograve ; B 44 -19 734 936 ; C -1 ; WX 722 ; N Agrave ; B 20 0 702 936 ; C -1 ; WX 722 ; N Abreve ; B 20 0 702 936 ; C -1 ; WX 584 ; N multiply ; B 40 1 545 505 ; C -1 ; WX 611 ; N uacute ; B 66 -14 545 750 ; C -1 ; WX 611 ; N Tcaron ; B 14 0 598 936 ; C -1 ; WX 494 ; N partialdiff ; B 11 -21 494 750 ; C -1 ; WX 556 ; N ydieresis ; B 10 -214 539 729 ; C -1 ; WX 722 ; N Nacute ; B 69 0 654 936 ; C -1 ; WX 278 ; N icircumflex ; B -37 0 316 750 ; C -1 ; WX 667 ; N Ecircumflex ; B 76 0 621 936 ; C -1 ; WX 556 ; N adieresis ; B 29 -14 527 729 ; C -1 ; WX 556 ; N edieresis ; B 23 -14 528 729 ; C -1 ; WX 556 ; N cacute ; B 34 -14 524 750 ; C -1 ; WX 611 ; N nacute ; B 65 0 546 750 ; C -1 ; WX 611 ; N umacron ; B 66 -14 545 678 ; C -1 ; WX 722 ; N Ncaron ; B 69 0 654 936 ; C -1 ; WX 278 ; N Iacute ; B 64 0 329 936 ; C -1 ; WX 584 ; N plusminus ; B 40 0 544 506 ; C -1 ; WX 280 ; N brokenbar ; B 84 -150 196 700 ; C -1 ; WX 737 ; N registered ; B -11 -19 748 737 ; C -1 ; WX 778 ; N Gbreve ; B 44 -19 713 936 ; C -1 ; WX 278 ; N Idotaccent ; B 64 0 214 915 ; C -1 ; WX 600 ; N summation ; B 14 -10 585 706 ; C -1 ; WX 667 ; N Egrave ; B 76 0 621 936 ; C -1 ; WX 389 ; N racute ; B 64 0 384 750 ; C -1 ; WX 611 ; N omacron ; B 34 -14 578 678 ; C -1 ; WX 611 ; N Zacute ; B 25 0 586 936 ; C -1 ; WX 611 ; N Zcaron ; B 25 0 586 936 ; C -1 ; WX 549 ; N greaterequal ; B 26 0 523 704 ; C -1 ; WX 722 ; N Eth ; B -5 0 685 718 ; C -1 ; WX 722 ; N Ccedilla ; B 44 -228 684 737 ; C -1 ; WX 278 ; N lcommaaccent ; B 69 -228 213 718 ; C -1 ; WX 389 ; N tcaron ; B 10 -6 421 878 ; C -1 ; WX 556 ; N eogonek ; B 23 -228 528 546 ; C -1 ; WX 722 ; N Uogonek ; B 72 -228 651 718 ; C -1 ; WX 722 ; N Aacute ; B 20 0 702 936 ; C -1 ; WX 722 ; N Adieresis ; B 20 0 702 915 ; C -1 ; WX 556 ; N egrave ; B 23 -14 528 750 ; C -1 ; WX 500 ; N zacute ; B 20 0 480 750 ; C -1 ; WX 278 ; N iogonek ; B 16 -224 249 725 ; C -1 ; WX 778 ; N Oacute ; B 44 -19 734 936 ; C -1 ; WX 611 ; N oacute ; B 34 -14 578 750 ; C -1 ; WX 556 ; N amacron ; B 29 -14 527 678 ; C -1 ; WX 556 ; N sacute ; B 30 -14 519 750 ; C -1 ; WX 278 ; N idieresis ; B -21 0 300 729 ; C -1 ; WX 778 ; N Ocircumflex ; B 44 -19 734 936 ; C -1 ; WX 722 ; N Ugrave ; B 72 -19 651 936 ; C -1 ; WX 612 ; N Delta ; B 6 0 608 688 ; C -1 ; WX 611 ; N thorn ; B 62 -208 578 718 ; C -1 ; WX 333 ; N twosuperior ; B 9 283 324 710 ; C -1 ; WX 778 ; N Odieresis ; B 44 -19 734 915 ; C -1 ; WX 611 ; N mu ; B 66 -207 545 532 ; C -1 ; WX 278 ; N igrave ; B -50 0 209 750 ; C -1 ; WX 611 ; N ohungarumlaut ; B 34 -14 625 750 ; C -1 ; WX 667 ; N Eogonek ; B 76 -224 639 718 ; C -1 ; WX 611 ; N dcroat ; B 34 -14 650 718 ; C -1 ; WX 834 ; N threequarters ; B 16 -19 799 710 ; C -1 ; WX 667 ; N Scedilla ; B 39 -228 629 737 ; C -1 ; WX 400 ; N lcaron ; B 69 0 408 718 ; C -1 ; WX 722 ; N Kcommaaccent ; B 87 -228 722 718 ; C -1 ; WX 611 ; N Lacute ; B 76 0 583 936 ; C -1 ; WX 1000 ; N trademark ; B 44 306 956 718 ; C -1 ; WX 556 ; N edotaccent ; B 23 -14 528 729 ; C -1 ; WX 278 ; N Igrave ; B -50 0 214 936 ; C -1 ; WX 278 ; N Imacron ; B -33 0 312 864 ; C -1 ; WX 611 ; N Lcaron ; B 76 0 583 718 ; C -1 ; WX 834 ; N onehalf ; B 26 -19 794 710 ; C -1 ; WX 549 ; N lessequal ; B 29 0 526 704 ; C -1 ; WX 611 ; N ocircumflex ; B 34 -14 578 750 ; C -1 ; WX 611 ; N ntilde ; B 65 0 546 737 ; C -1 ; WX 722 ; N Uhungarumlaut ; B 72 -19 681 936 ; C -1 ; WX 667 ; N Eacute ; B 76 0 621 936 ; C -1 ; WX 556 ; N emacron ; B 23 -14 528 678 ; C -1 ; WX 611 ; N gbreve ; B 40 -217 553 750 ; C -1 ; WX 834 ; N onequarter ; B 26 -19 766 710 ; C -1 ; WX 667 ; N Scaron ; B 39 -19 629 936 ; C -1 ; WX 667 ; N Scommaaccent ; B 39 -228 629 737 ; C -1 ; WX 778 ; N Ohungarumlaut ; B 44 -19 734 936 ; C -1 ; WX 400 ; N degree ; B 57 426 343 712 ; C -1 ; WX 611 ; N ograve ; B 34 -14 578 750 ; C -1 ; WX 722 ; N Ccaron ; B 44 -19 684 936 ; C -1 ; WX 611 ; N ugrave ; B 66 -14 545 750 ; C -1 ; WX 549 ; N radical ; B 10 -46 512 850 ; C -1 ; WX 722 ; N Dcaron ; B 76 0 685 936 ; C -1 ; WX 389 ; N rcommaaccent ; B 64 -228 373 546 ; C -1 ; WX 722 ; N Ntilde ; B 69 0 654 923 ; C -1 ; WX 611 ; N otilde ; B 34 -14 578 737 ; C -1 ; WX 722 ; N Rcommaaccent ; B 76 -228 677 718 ; C -1 ; WX 611 ; N Lcommaaccent ; B 76 -228 583 718 ; C -1 ; WX 722 ; N Atilde ; B 20 0 702 923 ; C -1 ; WX 722 ; N Aogonek ; B 20 -224 742 718 ; C -1 ; WX 722 ; N Aring ; B 20 0 702 962 ; C -1 ; WX 778 ; N Otilde ; B 44 -19 734 923 ; C -1 ; WX 500 ; N zdotaccent ; B 20 0 480 729 ; C -1 ; WX 667 ; N Ecaron ; B 76 0 621 936 ; C -1 ; WX 278 ; N Iogonek ; B -11 -228 222 718 ; C -1 ; WX 556 ; N kcommaaccent ; B 69 -228 562 718 ; C -1 ; WX 584 ; N minus ; B 40 197 544 309 ; C -1 ; WX 278 ; N Icircumflex ; B -37 0 316 936 ; C -1 ; WX 611 ; N ncaron ; B 65 0 546 750 ; C -1 ; WX 333 ; N tcommaaccent ; B 10 -228 309 676 ; C -1 ; WX 584 ; N logicalnot ; B 40 108 544 419 ; C -1 ; WX 611 ; N odieresis ; B 34 -14 578 729 ; C -1 ; WX 611 ; N udieresis ; B 66 -14 545 729 ; C -1 ; WX 549 ; N notequal ; B 15 -49 540 570 ; C -1 ; WX 611 ; N gcommaaccent ; B 40 -217 553 850 ; C -1 ; WX 611 ; N eth ; B 34 -14 578 737 ; C -1 ; WX 500 ; N zcaron ; B 20 0 480 750 ; C -1 ; WX 611 ; N ncommaaccent ; B 65 -228 546 546 ; C -1 ; WX 333 ; N onesuperior ; B 26 283 237 710 ; C -1 ; WX 278 ; N imacron ; B -8 0 285 678 ; EndCharMetrics StartKernData StartKernPairs 2481 KPX A C -40 KPX A Cacute -40 KPX A Ccaron -40 KPX A Ccedilla -40 KPX A G -50 KPX A Gbreve -50 KPX A Gcommaaccent -50 KPX A O -40 KPX A Oacute -40 KPX A Ocircumflex -40 KPX A Odieresis -40 KPX A Ograve -40 KPX A Ohungarumlaut -40 KPX A Omacron -40 KPX A Oslash -40 KPX A Otilde -40 KPX A Q -40 KPX A T -90 KPX A Tcaron -90 KPX A Tcommaaccent -90 KPX A U -50 KPX A Uacute -50 KPX A Ucircumflex -50 KPX A Udieresis -50 KPX A Ugrave -50 KPX A Uhungarumlaut -50 KPX A Umacron -50 KPX A Uogonek -50 KPX A Uring -50 KPX A V -80 KPX A W -60 KPX A Y -110 KPX A Yacute -110 KPX A Ydieresis -110 KPX A u -30 KPX A uacute -30 KPX A ucircumflex -30 KPX A udieresis -30 KPX A ugrave -30 KPX A uhungarumlaut -30 KPX A umacron -30 KPX A uogonek -30 KPX A uring -30 KPX A v -40 KPX A w -30 KPX A y -30 KPX A yacute -30 KPX A ydieresis -30 KPX Aacute C -40 KPX Aacute Cacute -40 KPX Aacute Ccaron -40 KPX Aacute Ccedilla -40 KPX Aacute G -50 KPX Aacute Gbreve -50 KPX Aacute Gcommaaccent -50 KPX Aacute O -40 KPX Aacute Oacute -40 KPX Aacute Ocircumflex -40 KPX Aacute Odieresis -40 KPX Aacute Ograve -40 KPX Aacute Ohungarumlaut -40 KPX Aacute Omacron -40 KPX Aacute Oslash -40 KPX Aacute Otilde -40 KPX Aacute Q -40 KPX Aacute T -90 KPX Aacute Tcaron -90 KPX Aacute Tcommaaccent -90 KPX Aacute U -50 KPX Aacute Uacute -50 KPX Aacute Ucircumflex -50 KPX Aacute Udieresis -50 KPX Aacute Ugrave -50 KPX Aacute Uhungarumlaut -50 KPX Aacute Umacron -50 KPX Aacute Uogonek -50 KPX Aacute Uring -50 KPX Aacute V -80 KPX Aacute W -60 KPX Aacute Y -110 KPX Aacute Yacute -110 KPX Aacute Ydieresis -110 KPX Aacute u -30 KPX Aacute uacute -30 KPX Aacute ucircumflex -30 KPX Aacute udieresis -30 KPX Aacute ugrave -30 KPX Aacute uhungarumlaut -30 KPX Aacute umacron -30 KPX Aacute uogonek -30 KPX Aacute uring -30 KPX Aacute v -40 KPX Aacute w -30 KPX Aacute y -30 KPX Aacute yacute -30 KPX Aacute ydieresis -30 KPX Abreve C -40 KPX Abreve Cacute -40 KPX Abreve Ccaron -40 KPX Abreve Ccedilla -40 KPX Abreve G -50 KPX Abreve Gbreve -50 KPX Abreve Gcommaaccent -50 KPX Abreve O -40 KPX Abreve Oacute -40 KPX Abreve Ocircumflex -40 KPX Abreve Odieresis -40 KPX Abreve Ograve -40 KPX Abreve Ohungarumlaut -40 KPX Abreve Omacron -40 KPX Abreve Oslash -40 KPX Abreve Otilde -40 KPX Abreve Q -40 KPX Abreve T -90 KPX Abreve Tcaron -90 KPX Abreve Tcommaaccent -90 KPX Abreve U -50 KPX Abreve Uacute -50 KPX Abreve Ucircumflex -50 KPX Abreve Udieresis -50 KPX Abreve Ugrave -50 KPX Abreve Uhungarumlaut -50 KPX Abreve Umacron -50 KPX Abreve Uogonek -50 KPX Abreve Uring -50 KPX Abreve V -80 KPX Abreve W -60 KPX Abreve Y -110 KPX Abreve Yacute -110 KPX Abreve Ydieresis -110 KPX Abreve u -30 KPX Abreve uacute -30 KPX Abreve ucircumflex -30 KPX Abreve udieresis -30 KPX Abreve ugrave -30 KPX Abreve uhungarumlaut -30 KPX Abreve umacron -30 KPX Abreve uogonek -30 KPX Abreve uring -30 KPX Abreve v -40 KPX Abreve w -30 KPX Abreve y -30 KPX Abreve yacute -30 KPX Abreve ydieresis -30 KPX Acircumflex C -40 KPX Acircumflex Cacute -40 KPX Acircumflex Ccaron -40 KPX Acircumflex Ccedilla -40 KPX Acircumflex G -50 KPX Acircumflex Gbreve -50 KPX Acircumflex Gcommaaccent -50 KPX Acircumflex O -40 KPX Acircumflex Oacute -40 KPX Acircumflex Ocircumflex -40 KPX Acircumflex Odieresis -40 KPX Acircumflex Ograve -40 KPX Acircumflex Ohungarumlaut -40 KPX Acircumflex Omacron -40 KPX Acircumflex Oslash -40 KPX Acircumflex Otilde -40 KPX Acircumflex Q -40 KPX Acircumflex T -90 KPX Acircumflex Tcaron -90 KPX Acircumflex Tcommaaccent -90 KPX Acircumflex U -50 KPX Acircumflex Uacute -50 KPX Acircumflex Ucircumflex -50 KPX Acircumflex Udieresis -50 KPX Acircumflex Ugrave -50 KPX Acircumflex Uhungarumlaut -50 KPX Acircumflex Umacron -50 KPX Acircumflex Uogonek -50 KPX Acircumflex Uring -50 KPX Acircumflex V -80 KPX Acircumflex W -60 KPX Acircumflex Y -110 KPX Acircumflex Yacute -110 KPX Acircumflex Ydieresis -110 KPX Acircumflex u -30 KPX Acircumflex uacute -30 KPX Acircumflex ucircumflex -30 KPX Acircumflex udieresis -30 KPX Acircumflex ugrave -30 KPX Acircumflex uhungarumlaut -30 KPX Acircumflex umacron -30 KPX Acircumflex uogonek -30 KPX Acircumflex uring -30 KPX Acircumflex v -40 KPX Acircumflex w -30 KPX Acircumflex y -30 KPX Acircumflex yacute -30 KPX Acircumflex ydieresis -30 KPX Adieresis C -40 KPX Adieresis Cacute -40 KPX Adieresis Ccaron -40 KPX Adieresis Ccedilla -40 KPX Adieresis G -50 KPX Adieresis Gbreve -50 KPX Adieresis Gcommaaccent -50 KPX Adieresis O -40 KPX Adieresis Oacute -40 KPX Adieresis Ocircumflex -40 KPX Adieresis Odieresis -40 KPX Adieresis Ograve -40 KPX Adieresis Ohungarumlaut -40 KPX Adieresis Omacron -40 KPX Adieresis Oslash -40 KPX Adieresis Otilde -40 KPX Adieresis Q -40 KPX Adieresis T -90 KPX Adieresis Tcaron -90 KPX Adieresis Tcommaaccent -90 KPX Adieresis U -50 KPX Adieresis Uacute -50 KPX Adieresis Ucircumflex -50 KPX Adieresis Udieresis -50 KPX Adieresis Ugrave -50 KPX Adieresis Uhungarumlaut -50 KPX Adieresis Umacron -50 KPX Adieresis Uogonek -50 KPX Adieresis Uring -50 KPX Adieresis V -80 KPX Adieresis W -60 KPX Adieresis Y -110 KPX Adieresis Yacute -110 KPX Adieresis Ydieresis -110 KPX Adieresis u -30 KPX Adieresis uacute -30 KPX Adieresis ucircumflex -30 KPX Adieresis udieresis -30 KPX Adieresis ugrave -30 KPX Adieresis uhungarumlaut -30 KPX Adieresis umacron -30 KPX Adieresis uogonek -30 KPX Adieresis uring -30 KPX Adieresis v -40 KPX Adieresis w -30 KPX Adieresis y -30 KPX Adieresis yacute -30 KPX Adieresis ydieresis -30 KPX Agrave C -40 KPX Agrave Cacute -40 KPX Agrave Ccaron -40 KPX Agrave Ccedilla -40 KPX Agrave G -50 KPX Agrave Gbreve -50 KPX Agrave Gcommaaccent -50 KPX Agrave O -40 KPX Agrave Oacute -40 KPX Agrave Ocircumflex -40 KPX Agrave Odieresis -40 KPX Agrave Ograve -40 KPX Agrave Ohungarumlaut -40 KPX Agrave Omacron -40 KPX Agrave Oslash -40 KPX Agrave Otilde -40 KPX Agrave Q -40 KPX Agrave T -90 KPX Agrave Tcaron -90 KPX Agrave Tcommaaccent -90 KPX Agrave U -50 KPX Agrave Uacute -50 KPX Agrave Ucircumflex -50 KPX Agrave Udieresis -50 KPX Agrave Ugrave -50 KPX Agrave Uhungarumlaut -50 KPX Agrave Umacron -50 KPX Agrave Uogonek -50 KPX Agrave Uring -50 KPX Agrave V -80 KPX Agrave W -60 KPX Agrave Y -110 KPX Agrave Yacute -110 KPX Agrave Ydieresis -110 KPX Agrave u -30 KPX Agrave uacute -30 KPX Agrave ucircumflex -30 KPX Agrave udieresis -30 KPX Agrave ugrave -30 KPX Agrave uhungarumlaut -30 KPX Agrave umacron -30 KPX Agrave uogonek -30 KPX Agrave uring -30 KPX Agrave v -40 KPX Agrave w -30 KPX Agrave y -30 KPX Agrave yacute -30 KPX Agrave ydieresis -30 KPX Amacron C -40 KPX Amacron Cacute -40 KPX Amacron Ccaron -40 KPX Amacron Ccedilla -40 KPX Amacron G -50 KPX Amacron Gbreve -50 KPX Amacron Gcommaaccent -50 KPX Amacron O -40 KPX Amacron Oacute -40 KPX Amacron Ocircumflex -40 KPX Amacron Odieresis -40 KPX Amacron Ograve -40 KPX Amacron Ohungarumlaut -40 KPX Amacron Omacron -40 KPX Amacron Oslash -40 KPX Amacron Otilde -40 KPX Amacron Q -40 KPX Amacron T -90 KPX Amacron Tcaron -90 KPX Amacron Tcommaaccent -90 KPX Amacron U -50 KPX Amacron Uacute -50 KPX Amacron Ucircumflex -50 KPX Amacron Udieresis -50 KPX Amacron Ugrave -50 KPX Amacron Uhungarumlaut -50 KPX Amacron Umacron -50 KPX Amacron Uogonek -50 KPX Amacron Uring -50 KPX Amacron V -80 KPX Amacron W -60 KPX Amacron Y -110 KPX Amacron Yacute -110 KPX Amacron Ydieresis -110 KPX Amacron u -30 KPX Amacron uacute -30 KPX Amacron ucircumflex -30 KPX Amacron udieresis -30 KPX Amacron ugrave -30 KPX Amacron uhungarumlaut -30 KPX Amacron umacron -30 KPX Amacron uogonek -30 KPX Amacron uring -30 KPX Amacron v -40 KPX Amacron w -30 KPX Amacron y -30 KPX Amacron yacute -30 KPX Amacron ydieresis -30 KPX Aogonek C -40 KPX Aogonek Cacute -40 KPX Aogonek Ccaron -40 KPX Aogonek Ccedilla -40 KPX Aogonek G -50 KPX Aogonek Gbreve -50 KPX Aogonek Gcommaaccent -50 KPX Aogonek O -40 KPX Aogonek Oacute -40 KPX Aogonek Ocircumflex -40 KPX Aogonek Odieresis -40 KPX Aogonek Ograve -40 KPX Aogonek Ohungarumlaut -40 KPX Aogonek Omacron -40 KPX Aogonek Oslash -40 KPX Aogonek Otilde -40 KPX Aogonek Q -40 KPX Aogonek T -90 KPX Aogonek Tcaron -90 KPX Aogonek Tcommaaccent -90 KPX Aogonek U -50 KPX Aogonek Uacute -50 KPX Aogonek Ucircumflex -50 KPX Aogonek Udieresis -50 KPX Aogonek Ugrave -50 KPX Aogonek Uhungarumlaut -50 KPX Aogonek Umacron -50 KPX Aogonek Uogonek -50 KPX Aogonek Uring -50 KPX Aogonek V -80 KPX Aogonek W -60 KPX Aogonek Y -110 KPX Aogonek Yacute -110 KPX Aogonek Ydieresis -110 KPX Aogonek u -30 KPX Aogonek uacute -30 KPX Aogonek ucircumflex -30 KPX Aogonek udieresis -30 KPX Aogonek ugrave -30 KPX Aogonek uhungarumlaut -30 KPX Aogonek umacron -30 KPX Aogonek uogonek -30 KPX Aogonek uring -30 KPX Aogonek v -40 KPX Aogonek w -30 KPX Aogonek y -30 KPX Aogonek yacute -30 KPX Aogonek ydieresis -30 KPX Aring C -40 KPX Aring Cacute -40 KPX Aring Ccaron -40 KPX Aring Ccedilla -40 KPX Aring G -50 KPX Aring Gbreve -50 KPX Aring Gcommaaccent -50 KPX Aring O -40 KPX Aring Oacute -40 KPX Aring Ocircumflex -40 KPX Aring Odieresis -40 KPX Aring Ograve -40 KPX Aring Ohungarumlaut -40 KPX Aring Omacron -40 KPX Aring Oslash -40 KPX Aring Otilde -40 KPX Aring Q -40 KPX Aring T -90 KPX Aring Tcaron -90 KPX Aring Tcommaaccent -90 KPX Aring U -50 KPX Aring Uacute -50 KPX Aring Ucircumflex -50 KPX Aring Udieresis -50 KPX Aring Ugrave -50 KPX Aring Uhungarumlaut -50 KPX Aring Umacron -50 KPX Aring Uogonek -50 KPX Aring Uring -50 KPX Aring V -80 KPX Aring W -60 KPX Aring Y -110 KPX Aring Yacute -110 KPX Aring Ydieresis -110 KPX Aring u -30 KPX Aring uacute -30 KPX Aring ucircumflex -30 KPX Aring udieresis -30 KPX Aring ugrave -30 KPX Aring uhungarumlaut -30 KPX Aring umacron -30 KPX Aring uogonek -30 KPX Aring uring -30 KPX Aring v -40 KPX Aring w -30 KPX Aring y -30 KPX Aring yacute -30 KPX Aring ydieresis -30 KPX Atilde C -40 KPX Atilde Cacute -40 KPX Atilde Ccaron -40 KPX Atilde Ccedilla -40 KPX Atilde G -50 KPX Atilde Gbreve -50 KPX Atilde Gcommaaccent -50 KPX Atilde O -40 KPX Atilde Oacute -40 KPX Atilde Ocircumflex -40 KPX Atilde Odieresis -40 KPX Atilde Ograve -40 KPX Atilde Ohungarumlaut -40 KPX Atilde Omacron -40 KPX Atilde Oslash -40 KPX Atilde Otilde -40 KPX Atilde Q -40 KPX Atilde T -90 KPX Atilde Tcaron -90 KPX Atilde Tcommaaccent -90 KPX Atilde U -50 KPX Atilde Uacute -50 KPX Atilde Ucircumflex -50 KPX Atilde Udieresis -50 KPX Atilde Ugrave -50 KPX Atilde Uhungarumlaut -50 KPX Atilde Umacron -50 KPX Atilde Uogonek -50 KPX Atilde Uring -50 KPX Atilde V -80 KPX Atilde W -60 KPX Atilde Y -110 KPX Atilde Yacute -110 KPX Atilde Ydieresis -110 KPX Atilde u -30 KPX Atilde uacute -30 KPX Atilde ucircumflex -30 KPX Atilde udieresis -30 KPX Atilde ugrave -30 KPX Atilde uhungarumlaut -30 KPX Atilde umacron -30 KPX Atilde uogonek -30 KPX Atilde uring -30 KPX Atilde v -40 KPX Atilde w -30 KPX Atilde y -30 KPX Atilde yacute -30 KPX Atilde ydieresis -30 KPX B A -30 KPX B Aacute -30 KPX B Abreve -30 KPX B Acircumflex -30 KPX B Adieresis -30 KPX B Agrave -30 KPX B Amacron -30 KPX B Aogonek -30 KPX B Aring -30 KPX B Atilde -30 KPX B U -10 KPX B Uacute -10 KPX B Ucircumflex -10 KPX B Udieresis -10 KPX B Ugrave -10 KPX B Uhungarumlaut -10 KPX B Umacron -10 KPX B Uogonek -10 KPX B Uring -10 KPX D A -40 KPX D Aacute -40 KPX D Abreve -40 KPX D Acircumflex -40 KPX D Adieresis -40 KPX D Agrave -40 KPX D Amacron -40 KPX D Aogonek -40 KPX D Aring -40 KPX D Atilde -40 KPX D V -40 KPX D W -40 KPX D Y -70 KPX D Yacute -70 KPX D Ydieresis -70 KPX D comma -30 KPX D period -30 KPX Dcaron A -40 KPX Dcaron Aacute -40 KPX Dcaron Abreve -40 KPX Dcaron Acircumflex -40 KPX Dcaron Adieresis -40 KPX Dcaron Agrave -40 KPX Dcaron Amacron -40 KPX Dcaron Aogonek -40 KPX Dcaron Aring -40 KPX Dcaron Atilde -40 KPX Dcaron V -40 KPX Dcaron W -40 KPX Dcaron Y -70 KPX Dcaron Yacute -70 KPX Dcaron Ydieresis -70 KPX Dcaron comma -30 KPX Dcaron period -30 KPX Dcroat A -40 KPX Dcroat Aacute -40 KPX Dcroat Abreve -40 KPX Dcroat Acircumflex -40 KPX Dcroat Adieresis -40 KPX Dcroat Agrave -40 KPX Dcroat Amacron -40 KPX Dcroat Aogonek -40 KPX Dcroat Aring -40 KPX Dcroat Atilde -40 KPX Dcroat V -40 KPX Dcroat W -40 KPX Dcroat Y -70 KPX Dcroat Yacute -70 KPX Dcroat Ydieresis -70 KPX Dcroat comma -30 KPX Dcroat period -30 KPX F A -80 KPX F Aacute -80 KPX F Abreve -80 KPX F Acircumflex -80 KPX F Adieresis -80 KPX F Agrave -80 KPX F Amacron -80 KPX F Aogonek -80 KPX F Aring -80 KPX F Atilde -80 KPX F a -20 KPX F aacute -20 KPX F abreve -20 KPX F acircumflex -20 KPX F adieresis -20 KPX F agrave -20 KPX F amacron -20 KPX F aogonek -20 KPX F aring -20 KPX F atilde -20 KPX F comma -100 KPX F period -100 KPX J A -20 KPX J Aacute -20 KPX J Abreve -20 KPX J Acircumflex -20 KPX J Adieresis -20 KPX J Agrave -20 KPX J Amacron -20 KPX J Aogonek -20 KPX J Aring -20 KPX J Atilde -20 KPX J comma -20 KPX J period -20 KPX J u -20 KPX J uacute -20 KPX J ucircumflex -20 KPX J udieresis -20 KPX J ugrave -20 KPX J uhungarumlaut -20 KPX J umacron -20 KPX J uogonek -20 KPX J uring -20 KPX K O -30 KPX K Oacute -30 KPX K Ocircumflex -30 KPX K Odieresis -30 KPX K Ograve -30 KPX K Ohungarumlaut -30 KPX K Omacron -30 KPX K Oslash -30 KPX K Otilde -30 KPX K e -15 KPX K eacute -15 KPX K ecaron -15 KPX K ecircumflex -15 KPX K edieresis -15 KPX K edotaccent -15 KPX K egrave -15 KPX K emacron -15 KPX K eogonek -15 KPX K o -35 KPX K oacute -35 KPX K ocircumflex -35 KPX K odieresis -35 KPX K ograve -35 KPX K ohungarumlaut -35 KPX K omacron -35 KPX K oslash -35 KPX K otilde -35 KPX K u -30 KPX K uacute -30 KPX K ucircumflex -30 KPX K udieresis -30 KPX K ugrave -30 KPX K uhungarumlaut -30 KPX K umacron -30 KPX K uogonek -30 KPX K uring -30 KPX K y -40 KPX K yacute -40 KPX K ydieresis -40 KPX Kcommaaccent O -30 KPX Kcommaaccent Oacute -30 KPX Kcommaaccent Ocircumflex -30 KPX Kcommaaccent Odieresis -30 KPX Kcommaaccent Ograve -30 KPX Kcommaaccent Ohungarumlaut -30 KPX Kcommaaccent Omacron -30 KPX Kcommaaccent Oslash -30 KPX Kcommaaccent Otilde -30 KPX Kcommaaccent e -15 KPX Kcommaaccent eacute -15 KPX Kcommaaccent ecaron -15 KPX Kcommaaccent ecircumflex -15 KPX Kcommaaccent edieresis -15 KPX Kcommaaccent edotaccent -15 KPX Kcommaaccent egrave -15 KPX Kcommaaccent emacron -15 KPX Kcommaaccent eogonek -15 KPX Kcommaaccent o -35 KPX Kcommaaccent oacute -35 KPX Kcommaaccent ocircumflex -35 KPX Kcommaaccent odieresis -35 KPX Kcommaaccent ograve -35 KPX Kcommaaccent ohungarumlaut -35 KPX Kcommaaccent omacron -35 KPX Kcommaaccent oslash -35 KPX Kcommaaccent otilde -35 KPX Kcommaaccent u -30 KPX Kcommaaccent uacute -30 KPX Kcommaaccent ucircumflex -30 KPX Kcommaaccent udieresis -30 KPX Kcommaaccent ugrave -30 KPX Kcommaaccent uhungarumlaut -30 KPX Kcommaaccent umacron -30 KPX Kcommaaccent uogonek -30 KPX Kcommaaccent uring -30 KPX Kcommaaccent y -40 KPX Kcommaaccent yacute -40 KPX Kcommaaccent ydieresis -40 KPX L T -90 KPX L Tcaron -90 KPX L Tcommaaccent -90 KPX L V -110 KPX L W -80 KPX L Y -120 KPX L Yacute -120 KPX L Ydieresis -120 KPX L quotedblright -140 KPX L quoteright -140 KPX L y -30 KPX L yacute -30 KPX L ydieresis -30 KPX Lacute T -90 KPX Lacute Tcaron -90 KPX Lacute Tcommaaccent -90 KPX Lacute V -110 KPX Lacute W -80 KPX Lacute Y -120 KPX Lacute Yacute -120 KPX Lacute Ydieresis -120 KPX Lacute quotedblright -140 KPX Lacute quoteright -140 KPX Lacute y -30 KPX Lacute yacute -30 KPX Lacute ydieresis -30 KPX Lcommaaccent T -90 KPX Lcommaaccent Tcaron -90 KPX Lcommaaccent Tcommaaccent -90 KPX Lcommaaccent V -110 KPX Lcommaaccent W -80 KPX Lcommaaccent Y -120 KPX Lcommaaccent Yacute -120 KPX Lcommaaccent Ydieresis -120 KPX Lcommaaccent quotedblright -140 KPX Lcommaaccent quoteright -140 KPX Lcommaaccent y -30 KPX Lcommaaccent yacute -30 KPX Lcommaaccent ydieresis -30 KPX Lslash T -90 KPX Lslash Tcaron -90 KPX Lslash Tcommaaccent -90 KPX Lslash V -110 KPX Lslash W -80 KPX Lslash Y -120 KPX Lslash Yacute -120 KPX Lslash Ydieresis -120 KPX Lslash quotedblright -140 KPX Lslash quoteright -140 KPX Lslash y -30 KPX Lslash yacute -30 KPX Lslash ydieresis -30 KPX O A -50 KPX O Aacute -50 KPX O Abreve -50 KPX O Acircumflex -50 KPX O Adieresis -50 KPX O Agrave -50 KPX O Amacron -50 KPX O Aogonek -50 KPX O Aring -50 KPX O Atilde -50 KPX O T -40 KPX O Tcaron -40 KPX O Tcommaaccent -40 KPX O V -50 KPX O W -50 KPX O X -50 KPX O Y -70 KPX O Yacute -70 KPX O Ydieresis -70 KPX O comma -40 KPX O period -40 KPX Oacute A -50 KPX Oacute Aacute -50 KPX Oacute Abreve -50 KPX Oacute Acircumflex -50 KPX Oacute Adieresis -50 KPX Oacute Agrave -50 KPX Oacute Amacron -50 KPX Oacute Aogonek -50 KPX Oacute Aring -50 KPX Oacute Atilde -50 KPX Oacute T -40 KPX Oacute Tcaron -40 KPX Oacute Tcommaaccent -40 KPX Oacute V -50 KPX Oacute W -50 KPX Oacute X -50 KPX Oacute Y -70 KPX Oacute Yacute -70 KPX Oacute Ydieresis -70 KPX Oacute comma -40 KPX Oacute period -40 KPX Ocircumflex A -50 KPX Ocircumflex Aacute -50 KPX Ocircumflex Abreve -50 KPX Ocircumflex Acircumflex -50 KPX Ocircumflex Adieresis -50 KPX Ocircumflex Agrave -50 KPX Ocircumflex Amacron -50 KPX Ocircumflex Aogonek -50 KPX Ocircumflex Aring -50 KPX Ocircumflex Atilde -50 KPX Ocircumflex T -40 KPX Ocircumflex Tcaron -40 KPX Ocircumflex Tcommaaccent -40 KPX Ocircumflex V -50 KPX Ocircumflex W -50 KPX Ocircumflex X -50 KPX Ocircumflex Y -70 KPX Ocircumflex Yacute -70 KPX Ocircumflex Ydieresis -70 KPX Ocircumflex comma -40 KPX Ocircumflex period -40 KPX Odieresis A -50 KPX Odieresis Aacute -50 KPX Odieresis Abreve -50 KPX Odieresis Acircumflex -50 KPX Odieresis Adieresis -50 KPX Odieresis Agrave -50 KPX Odieresis Amacron -50 KPX Odieresis Aogonek -50 KPX Odieresis Aring -50 KPX Odieresis Atilde -50 KPX Odieresis T -40 KPX Odieresis Tcaron -40 KPX Odieresis Tcommaaccent -40 KPX Odieresis V -50 KPX Odieresis W -50 KPX Odieresis X -50 KPX Odieresis Y -70 KPX Odieresis Yacute -70 KPX Odieresis Ydieresis -70 KPX Odieresis comma -40 KPX Odieresis period -40 KPX Ograve A -50 KPX Ograve Aacute -50 KPX Ograve Abreve -50 KPX Ograve Acircumflex -50 KPX Ograve Adieresis -50 KPX Ograve Agrave -50 KPX Ograve Amacron -50 KPX Ograve Aogonek -50 KPX Ograve Aring -50 KPX Ograve Atilde -50 KPX Ograve T -40 KPX Ograve Tcaron -40 KPX Ograve Tcommaaccent -40 KPX Ograve V -50 KPX Ograve W -50 KPX Ograve X -50 KPX Ograve Y -70 KPX Ograve Yacute -70 KPX Ograve Ydieresis -70 KPX Ograve comma -40 KPX Ograve period -40 KPX Ohungarumlaut A -50 KPX Ohungarumlaut Aacute -50 KPX Ohungarumlaut Abreve -50 KPX Ohungarumlaut Acircumflex -50 KPX Ohungarumlaut Adieresis -50 KPX Ohungarumlaut Agrave -50 KPX Ohungarumlaut Amacron -50 KPX Ohungarumlaut Aogonek -50 KPX Ohungarumlaut Aring -50 KPX Ohungarumlaut Atilde -50 KPX Ohungarumlaut T -40 KPX Ohungarumlaut Tcaron -40 KPX Ohungarumlaut Tcommaaccent -40 KPX Ohungarumlaut V -50 KPX Ohungarumlaut W -50 KPX Ohungarumlaut X -50 KPX Ohungarumlaut Y -70 KPX Ohungarumlaut Yacute -70 KPX Ohungarumlaut Ydieresis -70 KPX Ohungarumlaut comma -40 KPX Ohungarumlaut period -40 KPX Omacron A -50 KPX Omacron Aacute -50 KPX Omacron Abreve -50 KPX Omacron Acircumflex -50 KPX Omacron Adieresis -50 KPX Omacron Agrave -50 KPX Omacron Amacron -50 KPX Omacron Aogonek -50 KPX Omacron Aring -50 KPX Omacron Atilde -50 KPX Omacron T -40 KPX Omacron Tcaron -40 KPX Omacron Tcommaaccent -40 KPX Omacron V -50 KPX Omacron W -50 KPX Omacron X -50 KPX Omacron Y -70 KPX Omacron Yacute -70 KPX Omacron Ydieresis -70 KPX Omacron comma -40 KPX Omacron period -40 KPX Oslash A -50 KPX Oslash Aacute -50 KPX Oslash Abreve -50 KPX Oslash Acircumflex -50 KPX Oslash Adieresis -50 KPX Oslash Agrave -50 KPX Oslash Amacron -50 KPX Oslash Aogonek -50 KPX Oslash Aring -50 KPX Oslash Atilde -50 KPX Oslash T -40 KPX Oslash Tcaron -40 KPX Oslash Tcommaaccent -40 KPX Oslash V -50 KPX Oslash W -50 KPX Oslash X -50 KPX Oslash Y -70 KPX Oslash Yacute -70 KPX Oslash Ydieresis -70 KPX Oslash comma -40 KPX Oslash period -40 KPX Otilde A -50 KPX Otilde Aacute -50 KPX Otilde Abreve -50 KPX Otilde Acircumflex -50 KPX Otilde Adieresis -50 KPX Otilde Agrave -50 KPX Otilde Amacron -50 KPX Otilde Aogonek -50 KPX Otilde Aring -50 KPX Otilde Atilde -50 KPX Otilde T -40 KPX Otilde Tcaron -40 KPX Otilde Tcommaaccent -40 KPX Otilde V -50 KPX Otilde W -50 KPX Otilde X -50 KPX Otilde Y -70 KPX Otilde Yacute -70 KPX Otilde Ydieresis -70 KPX Otilde comma -40 KPX Otilde period -40 KPX P A -100 KPX P Aacute -100 KPX P Abreve -100 KPX P Acircumflex -100 KPX P Adieresis -100 KPX P Agrave -100 KPX P Amacron -100 KPX P Aogonek -100 KPX P Aring -100 KPX P Atilde -100 KPX P a -30 KPX P aacute -30 KPX P abreve -30 KPX P acircumflex -30 KPX P adieresis -30 KPX P agrave -30 KPX P amacron -30 KPX P aogonek -30 KPX P aring -30 KPX P atilde -30 KPX P comma -120 KPX P e -30 KPX P eacute -30 KPX P ecaron -30 KPX P ecircumflex -30 KPX P edieresis -30 KPX P edotaccent -30 KPX P egrave -30 KPX P emacron -30 KPX P eogonek -30 KPX P o -40 KPX P oacute -40 KPX P ocircumflex -40 KPX P odieresis -40 KPX P ograve -40 KPX P ohungarumlaut -40 KPX P omacron -40 KPX P oslash -40 KPX P otilde -40 KPX P period -120 KPX Q U -10 KPX Q Uacute -10 KPX Q Ucircumflex -10 KPX Q Udieresis -10 KPX Q Ugrave -10 KPX Q Uhungarumlaut -10 KPX Q Umacron -10 KPX Q Uogonek -10 KPX Q Uring -10 KPX Q comma 20 KPX Q period 20 KPX R O -20 KPX R Oacute -20 KPX R Ocircumflex -20 KPX R Odieresis -20 KPX R Ograve -20 KPX R Ohungarumlaut -20 KPX R Omacron -20 KPX R Oslash -20 KPX R Otilde -20 KPX R T -20 KPX R Tcaron -20 KPX R Tcommaaccent -20 KPX R U -20 KPX R Uacute -20 KPX R Ucircumflex -20 KPX R Udieresis -20 KPX R Ugrave -20 KPX R Uhungarumlaut -20 KPX R Umacron -20 KPX R Uogonek -20 KPX R Uring -20 KPX R V -50 KPX R W -40 KPX R Y -50 KPX R Yacute -50 KPX R Ydieresis -50 KPX Racute O -20 KPX Racute Oacute -20 KPX Racute Ocircumflex -20 KPX Racute Odieresis -20 KPX Racute Ograve -20 KPX Racute Ohungarumlaut -20 KPX Racute Omacron -20 KPX Racute Oslash -20 KPX Racute Otilde -20 KPX Racute T -20 KPX Racute Tcaron -20 KPX Racute Tcommaaccent -20 KPX Racute U -20 KPX Racute Uacute -20 KPX Racute Ucircumflex -20 KPX Racute Udieresis -20 KPX Racute Ugrave -20 KPX Racute Uhungarumlaut -20 KPX Racute Umacron -20 KPX Racute Uogonek -20 KPX Racute Uring -20 KPX Racute V -50 KPX Racute W -40 KPX Racute Y -50 KPX Racute Yacute -50 KPX Racute Ydieresis -50 KPX Rcaron O -20 KPX Rcaron Oacute -20 KPX Rcaron Ocircumflex -20 KPX Rcaron Odieresis -20 KPX Rcaron Ograve -20 KPX Rcaron Ohungarumlaut -20 KPX Rcaron Omacron -20 KPX Rcaron Oslash -20 KPX Rcaron Otilde -20 KPX Rcaron T -20 KPX Rcaron Tcaron -20 KPX Rcaron Tcommaaccent -20 KPX Rcaron U -20 KPX Rcaron Uacute -20 KPX Rcaron Ucircumflex -20 KPX Rcaron Udieresis -20 KPX Rcaron Ugrave -20 KPX Rcaron Uhungarumlaut -20 KPX Rcaron Umacron -20 KPX Rcaron Uogonek -20 KPX Rcaron Uring -20 KPX Rcaron V -50 KPX Rcaron W -40 KPX Rcaron Y -50 KPX Rcaron Yacute -50 KPX Rcaron Ydieresis -50 KPX Rcommaaccent O -20 KPX Rcommaaccent Oacute -20 KPX Rcommaaccent Ocircumflex -20 KPX Rcommaaccent Odieresis -20 KPX Rcommaaccent Ograve -20 KPX Rcommaaccent Ohungarumlaut -20 KPX Rcommaaccent Omacron -20 KPX Rcommaaccent Oslash -20 KPX Rcommaaccent Otilde -20 KPX Rcommaaccent T -20 KPX Rcommaaccent Tcaron -20 KPX Rcommaaccent Tcommaaccent -20 KPX Rcommaaccent U -20 KPX Rcommaaccent Uacute -20 KPX Rcommaaccent Ucircumflex -20 KPX Rcommaaccent Udieresis -20 KPX Rcommaaccent Ugrave -20 KPX Rcommaaccent Uhungarumlaut -20 KPX Rcommaaccent Umacron -20 KPX Rcommaaccent Uogonek -20 KPX Rcommaaccent Uring -20 KPX Rcommaaccent V -50 KPX Rcommaaccent W -40 KPX Rcommaaccent Y -50 KPX Rcommaaccent Yacute -50 KPX Rcommaaccent Ydieresis -50 KPX T A -90 KPX T Aacute -90 KPX T Abreve -90 KPX T Acircumflex -90 KPX T Adieresis -90 KPX T Agrave -90 KPX T Amacron -90 KPX T Aogonek -90 KPX T Aring -90 KPX T Atilde -90 KPX T O -40 KPX T Oacute -40 KPX T Ocircumflex -40 KPX T Odieresis -40 KPX T Ograve -40 KPX T Ohungarumlaut -40 KPX T Omacron -40 KPX T Oslash -40 KPX T Otilde -40 KPX T a -80 KPX T aacute -80 KPX T abreve -80 KPX T acircumflex -80 KPX T adieresis -80 KPX T agrave -80 KPX T amacron -80 KPX T aogonek -80 KPX T aring -80 KPX T atilde -80 KPX T colon -40 KPX T comma -80 KPX T e -60 KPX T eacute -60 KPX T ecaron -60 KPX T ecircumflex -60 KPX T edieresis -60 KPX T edotaccent -60 KPX T egrave -60 KPX T emacron -60 KPX T eogonek -60 KPX T hyphen -120 KPX T o -80 KPX T oacute -80 KPX T ocircumflex -80 KPX T odieresis -80 KPX T ograve -80 KPX T ohungarumlaut -80 KPX T omacron -80 KPX T oslash -80 KPX T otilde -80 KPX T period -80 KPX T r -80 KPX T racute -80 KPX T rcommaaccent -80 KPX T semicolon -40 KPX T u -90 KPX T uacute -90 KPX T ucircumflex -90 KPX T udieresis -90 KPX T ugrave -90 KPX T uhungarumlaut -90 KPX T umacron -90 KPX T uogonek -90 KPX T uring -90 KPX T w -60 KPX T y -60 KPX T yacute -60 KPX T ydieresis -60 KPX Tcaron A -90 KPX Tcaron Aacute -90 KPX Tcaron Abreve -90 KPX Tcaron Acircumflex -90 KPX Tcaron Adieresis -90 KPX Tcaron Agrave -90 KPX Tcaron Amacron -90 KPX Tcaron Aogonek -90 KPX Tcaron Aring -90 KPX Tcaron Atilde -90 KPX Tcaron O -40 KPX Tcaron Oacute -40 KPX Tcaron Ocircumflex -40 KPX Tcaron Odieresis -40 KPX Tcaron Ograve -40 KPX Tcaron Ohungarumlaut -40 KPX Tcaron Omacron -40 KPX Tcaron Oslash -40 KPX Tcaron Otilde -40 KPX Tcaron a -80 KPX Tcaron aacute -80 KPX Tcaron abreve -80 KPX Tcaron acircumflex -80 KPX Tcaron adieresis -80 KPX Tcaron agrave -80 KPX Tcaron amacron -80 KPX Tcaron aogonek -80 KPX Tcaron aring -80 KPX Tcaron atilde -80 KPX Tcaron colon -40 KPX Tcaron comma -80 KPX Tcaron e -60 KPX Tcaron eacute -60 KPX Tcaron ecaron -60 KPX Tcaron ecircumflex -60 KPX Tcaron edieresis -60 KPX Tcaron edotaccent -60 KPX Tcaron egrave -60 KPX Tcaron emacron -60 KPX Tcaron eogonek -60 KPX Tcaron hyphen -120 KPX Tcaron o -80 KPX Tcaron oacute -80 KPX Tcaron ocircumflex -80 KPX Tcaron odieresis -80 KPX Tcaron ograve -80 KPX Tcaron ohungarumlaut -80 KPX Tcaron omacron -80 KPX Tcaron oslash -80 KPX Tcaron otilde -80 KPX Tcaron period -80 KPX Tcaron r -80 KPX Tcaron racute -80 KPX Tcaron rcommaaccent -80 KPX Tcaron semicolon -40 KPX Tcaron u -90 KPX Tcaron uacute -90 KPX Tcaron ucircumflex -90 KPX Tcaron udieresis -90 KPX Tcaron ugrave -90 KPX Tcaron uhungarumlaut -90 KPX Tcaron umacron -90 KPX Tcaron uogonek -90 KPX Tcaron uring -90 KPX Tcaron w -60 KPX Tcaron y -60 KPX Tcaron yacute -60 KPX Tcaron ydieresis -60 KPX Tcommaaccent A -90 KPX Tcommaaccent Aacute -90 KPX Tcommaaccent Abreve -90 KPX Tcommaaccent Acircumflex -90 KPX Tcommaaccent Adieresis -90 KPX Tcommaaccent Agrave -90 KPX Tcommaaccent Amacron -90 KPX Tcommaaccent Aogonek -90 KPX Tcommaaccent Aring -90 KPX Tcommaaccent Atilde -90 KPX Tcommaaccent O -40 KPX Tcommaaccent Oacute -40 KPX Tcommaaccent Ocircumflex -40 KPX Tcommaaccent Odieresis -40 KPX Tcommaaccent Ograve -40 KPX Tcommaaccent Ohungarumlaut -40 KPX Tcommaaccent Omacron -40 KPX Tcommaaccent Oslash -40 KPX Tcommaaccent Otilde -40 KPX Tcommaaccent a -80 KPX Tcommaaccent aacute -80 KPX Tcommaaccent abreve -80 KPX Tcommaaccent acircumflex -80 KPX Tcommaaccent adieresis -80 KPX Tcommaaccent agrave -80 KPX Tcommaaccent amacron -80 KPX Tcommaaccent aogonek -80 KPX Tcommaaccent aring -80 KPX Tcommaaccent atilde -80 KPX Tcommaaccent colon -40 KPX Tcommaaccent comma -80 KPX Tcommaaccent e -60 KPX Tcommaaccent eacute -60 KPX Tcommaaccent ecaron -60 KPX Tcommaaccent ecircumflex -60 KPX Tcommaaccent edieresis -60 KPX Tcommaaccent edotaccent -60 KPX Tcommaaccent egrave -60 KPX Tcommaaccent emacron -60 KPX Tcommaaccent eogonek -60 KPX Tcommaaccent hyphen -120 KPX Tcommaaccent o -80 KPX Tcommaaccent oacute -80 KPX Tcommaaccent ocircumflex -80 KPX Tcommaaccent odieresis -80 KPX Tcommaaccent ograve -80 KPX Tcommaaccent ohungarumlaut -80 KPX Tcommaaccent omacron -80 KPX Tcommaaccent oslash -80 KPX Tcommaaccent otilde -80 KPX Tcommaaccent period -80 KPX Tcommaaccent r -80 KPX Tcommaaccent racute -80 KPX Tcommaaccent rcommaaccent -80 KPX Tcommaaccent semicolon -40 KPX Tcommaaccent u -90 KPX Tcommaaccent uacute -90 KPX Tcommaaccent ucircumflex -90 KPX Tcommaaccent udieresis -90 KPX Tcommaaccent ugrave -90 KPX Tcommaaccent uhungarumlaut -90 KPX Tcommaaccent umacron -90 KPX Tcommaaccent uogonek -90 KPX Tcommaaccent uring -90 KPX Tcommaaccent w -60 KPX Tcommaaccent y -60 KPX Tcommaaccent yacute -60 KPX Tcommaaccent ydieresis -60 KPX U A -50 KPX U Aacute -50 KPX U Abreve -50 KPX U Acircumflex -50 KPX U Adieresis -50 KPX U Agrave -50 KPX U Amacron -50 KPX U Aogonek -50 KPX U Aring -50 KPX U Atilde -50 KPX U comma -30 KPX U period -30 KPX Uacute A -50 KPX Uacute Aacute -50 KPX Uacute Abreve -50 KPX Uacute Acircumflex -50 KPX Uacute Adieresis -50 KPX Uacute Agrave -50 KPX Uacute Amacron -50 KPX Uacute Aogonek -50 KPX Uacute Aring -50 KPX Uacute Atilde -50 KPX Uacute comma -30 KPX Uacute period -30 KPX Ucircumflex A -50 KPX Ucircumflex Aacute -50 KPX Ucircumflex Abreve -50 KPX Ucircumflex Acircumflex -50 KPX Ucircumflex Adieresis -50 KPX Ucircumflex Agrave -50 KPX Ucircumflex Amacron -50 KPX Ucircumflex Aogonek -50 KPX Ucircumflex Aring -50 KPX Ucircumflex Atilde -50 KPX Ucircumflex comma -30 KPX Ucircumflex period -30 KPX Udieresis A -50 KPX Udieresis Aacute -50 KPX Udieresis Abreve -50 KPX Udieresis Acircumflex -50 KPX Udieresis Adieresis -50 KPX Udieresis Agrave -50 KPX Udieresis Amacron -50 KPX Udieresis Aogonek -50 KPX Udieresis Aring -50 KPX Udieresis Atilde -50 KPX Udieresis comma -30 KPX Udieresis period -30 KPX Ugrave A -50 KPX Ugrave Aacute -50 KPX Ugrave Abreve -50 KPX Ugrave Acircumflex -50 KPX Ugrave Adieresis -50 KPX Ugrave Agrave -50 KPX Ugrave Amacron -50 KPX Ugrave Aogonek -50 KPX Ugrave Aring -50 KPX Ugrave Atilde -50 KPX Ugrave comma -30 KPX Ugrave period -30 KPX Uhungarumlaut A -50 KPX Uhungarumlaut Aacute -50 KPX Uhungarumlaut Abreve -50 KPX Uhungarumlaut Acircumflex -50 KPX Uhungarumlaut Adieresis -50 KPX Uhungarumlaut Agrave -50 KPX Uhungarumlaut Amacron -50 KPX Uhungarumlaut Aogonek -50 KPX Uhungarumlaut Aring -50 KPX Uhungarumlaut Atilde -50 KPX Uhungarumlaut comma -30 KPX Uhungarumlaut period -30 KPX Umacron A -50 KPX Umacron Aacute -50 KPX Umacron Abreve -50 KPX Umacron Acircumflex -50 KPX Umacron Adieresis -50 KPX Umacron Agrave -50 KPX Umacron Amacron -50 KPX Umacron Aogonek -50 KPX Umacron Aring -50 KPX Umacron Atilde -50 KPX Umacron comma -30 KPX Umacron period -30 KPX Uogonek A -50 KPX Uogonek Aacute -50 KPX Uogonek Abreve -50 KPX Uogonek Acircumflex -50 KPX Uogonek Adieresis -50 KPX Uogonek Agrave -50 KPX Uogonek Amacron -50 KPX Uogonek Aogonek -50 KPX Uogonek Aring -50 KPX Uogonek Atilde -50 KPX Uogonek comma -30 KPX Uogonek period -30 KPX Uring A -50 KPX Uring Aacute -50 KPX Uring Abreve -50 KPX Uring Acircumflex -50 KPX Uring Adieresis -50 KPX Uring Agrave -50 KPX Uring Amacron -50 KPX Uring Aogonek -50 KPX Uring Aring -50 KPX Uring Atilde -50 KPX Uring comma -30 KPX Uring period -30 KPX V A -80 KPX V Aacute -80 KPX V Abreve -80 KPX V Acircumflex -80 KPX V Adieresis -80 KPX V Agrave -80 KPX V Amacron -80 KPX V Aogonek -80 KPX V Aring -80 KPX V Atilde -80 KPX V G -50 KPX V Gbreve -50 KPX V Gcommaaccent -50 KPX V O -50 KPX V Oacute -50 KPX V Ocircumflex -50 KPX V Odieresis -50 KPX V Ograve -50 KPX V Ohungarumlaut -50 KPX V Omacron -50 KPX V Oslash -50 KPX V Otilde -50 KPX V a -60 KPX V aacute -60 KPX V abreve -60 KPX V acircumflex -60 KPX V adieresis -60 KPX V agrave -60 KPX V amacron -60 KPX V aogonek -60 KPX V aring -60 KPX V atilde -60 KPX V colon -40 KPX V comma -120 KPX V e -50 KPX V eacute -50 KPX V ecaron -50 KPX V ecircumflex -50 KPX V edieresis -50 KPX V edotaccent -50 KPX V egrave -50 KPX V emacron -50 KPX V eogonek -50 KPX V hyphen -80 KPX V o -90 KPX V oacute -90 KPX V ocircumflex -90 KPX V odieresis -90 KPX V ograve -90 KPX V ohungarumlaut -90 KPX V omacron -90 KPX V oslash -90 KPX V otilde -90 KPX V period -120 KPX V semicolon -40 KPX V u -60 KPX V uacute -60 KPX V ucircumflex -60 KPX V udieresis -60 KPX V ugrave -60 KPX V uhungarumlaut -60 KPX V umacron -60 KPX V uogonek -60 KPX V uring -60 KPX W A -60 KPX W Aacute -60 KPX W Abreve -60 KPX W Acircumflex -60 KPX W Adieresis -60 KPX W Agrave -60 KPX W Amacron -60 KPX W Aogonek -60 KPX W Aring -60 KPX W Atilde -60 KPX W O -20 KPX W Oacute -20 KPX W Ocircumflex -20 KPX W Odieresis -20 KPX W Ograve -20 KPX W Ohungarumlaut -20 KPX W Omacron -20 KPX W Oslash -20 KPX W Otilde -20 KPX W a -40 KPX W aacute -40 KPX W abreve -40 KPX W acircumflex -40 KPX W adieresis -40 KPX W agrave -40 KPX W amacron -40 KPX W aogonek -40 KPX W aring -40 KPX W atilde -40 KPX W colon -10 KPX W comma -80 KPX W e -35 KPX W eacute -35 KPX W ecaron -35 KPX W ecircumflex -35 KPX W edieresis -35 KPX W edotaccent -35 KPX W egrave -35 KPX W emacron -35 KPX W eogonek -35 KPX W hyphen -40 KPX W o -60 KPX W oacute -60 KPX W ocircumflex -60 KPX W odieresis -60 KPX W ograve -60 KPX W ohungarumlaut -60 KPX W omacron -60 KPX W oslash -60 KPX W otilde -60 KPX W period -80 KPX W semicolon -10 KPX W u -45 KPX W uacute -45 KPX W ucircumflex -45 KPX W udieresis -45 KPX W ugrave -45 KPX W uhungarumlaut -45 KPX W umacron -45 KPX W uogonek -45 KPX W uring -45 KPX W y -20 KPX W yacute -20 KPX W ydieresis -20 KPX Y A -110 KPX Y Aacute -110 KPX Y Abreve -110 KPX Y Acircumflex -110 KPX Y Adieresis -110 KPX Y Agrave -110 KPX Y Amacron -110 KPX Y Aogonek -110 KPX Y Aring -110 KPX Y Atilde -110 KPX Y O -70 KPX Y Oacute -70 KPX Y Ocircumflex -70 KPX Y Odieresis -70 KPX Y Ograve -70 KPX Y Ohungarumlaut -70 KPX Y Omacron -70 KPX Y Oslash -70 KPX Y Otilde -70 KPX Y a -90 KPX Y aacute -90 KPX Y abreve -90 KPX Y acircumflex -90 KPX Y adieresis -90 KPX Y agrave -90 KPX Y amacron -90 KPX Y aogonek -90 KPX Y aring -90 KPX Y atilde -90 KPX Y colon -50 KPX Y comma -100 KPX Y e -80 KPX Y eacute -80 KPX Y ecaron -80 KPX Y ecircumflex -80 KPX Y edieresis -80 KPX Y edotaccent -80 KPX Y egrave -80 KPX Y emacron -80 KPX Y eogonek -80 KPX Y o -100 KPX Y oacute -100 KPX Y ocircumflex -100 KPX Y odieresis -100 KPX Y ograve -100 KPX Y ohungarumlaut -100 KPX Y omacron -100 KPX Y oslash -100 KPX Y otilde -100 KPX Y period -100 KPX Y semicolon -50 KPX Y u -100 KPX Y uacute -100 KPX Y ucircumflex -100 KPX Y udieresis -100 KPX Y ugrave -100 KPX Y uhungarumlaut -100 KPX Y umacron -100 KPX Y uogonek -100 KPX Y uring -100 KPX Yacute A -110 KPX Yacute Aacute -110 KPX Yacute Abreve -110 KPX Yacute Acircumflex -110 KPX Yacute Adieresis -110 KPX Yacute Agrave -110 KPX Yacute Amacron -110 KPX Yacute Aogonek -110 KPX Yacute Aring -110 KPX Yacute Atilde -110 KPX Yacute O -70 KPX Yacute Oacute -70 KPX Yacute Ocircumflex -70 KPX Yacute Odieresis -70 KPX Yacute Ograve -70 KPX Yacute Ohungarumlaut -70 KPX Yacute Omacron -70 KPX Yacute Oslash -70 KPX Yacute Otilde -70 KPX Yacute a -90 KPX Yacute aacute -90 KPX Yacute abreve -90 KPX Yacute acircumflex -90 KPX Yacute adieresis -90 KPX Yacute agrave -90 KPX Yacute amacron -90 KPX Yacute aogonek -90 KPX Yacute aring -90 KPX Yacute atilde -90 KPX Yacute colon -50 KPX Yacute comma -100 KPX Yacute e -80 KPX Yacute eacute -80 KPX Yacute ecaron -80 KPX Yacute ecircumflex -80 KPX Yacute edieresis -80 KPX Yacute edotaccent -80 KPX Yacute egrave -80 KPX Yacute emacron -80 KPX Yacute eogonek -80 KPX Yacute o -100 KPX Yacute oacute -100 KPX Yacute ocircumflex -100 KPX Yacute odieresis -100 KPX Yacute ograve -100 KPX Yacute ohungarumlaut -100 KPX Yacute omacron -100 KPX Yacute oslash -100 KPX Yacute otilde -100 KPX Yacute period -100 KPX Yacute semicolon -50 KPX Yacute u -100 KPX Yacute uacute -100 KPX Yacute ucircumflex -100 KPX Yacute udieresis -100 KPX Yacute ugrave -100 KPX Yacute uhungarumlaut -100 KPX Yacute umacron -100 KPX Yacute uogonek -100 KPX Yacute uring -100 KPX Ydieresis A -110 KPX Ydieresis Aacute -110 KPX Ydieresis Abreve -110 KPX Ydieresis Acircumflex -110 KPX Ydieresis Adieresis -110 KPX Ydieresis Agrave -110 KPX Ydieresis Amacron -110 KPX Ydieresis Aogonek -110 KPX Ydieresis Aring -110 KPX Ydieresis Atilde -110 KPX Ydieresis O -70 KPX Ydieresis Oacute -70 KPX Ydieresis Ocircumflex -70 KPX Ydieresis Odieresis -70 KPX Ydieresis Ograve -70 KPX Ydieresis Ohungarumlaut -70 KPX Ydieresis Omacron -70 KPX Ydieresis Oslash -70 KPX Ydieresis Otilde -70 KPX Ydieresis a -90 KPX Ydieresis aacute -90 KPX Ydieresis abreve -90 KPX Ydieresis acircumflex -90 KPX Ydieresis adieresis -90 KPX Ydieresis agrave -90 KPX Ydieresis amacron -90 KPX Ydieresis aogonek -90 KPX Ydieresis aring -90 KPX Ydieresis atilde -90 KPX Ydieresis colon -50 KPX Ydieresis comma -100 KPX Ydieresis e -80 KPX Ydieresis eacute -80 KPX Ydieresis ecaron -80 KPX Ydieresis ecircumflex -80 KPX Ydieresis edieresis -80 KPX Ydieresis edotaccent -80 KPX Ydieresis egrave -80 KPX Ydieresis emacron -80 KPX Ydieresis eogonek -80 KPX Ydieresis o -100 KPX Ydieresis oacute -100 KPX Ydieresis ocircumflex -100 KPX Ydieresis odieresis -100 KPX Ydieresis ograve -100 KPX Ydieresis ohungarumlaut -100 KPX Ydieresis omacron -100 KPX Ydieresis oslash -100 KPX Ydieresis otilde -100 KPX Ydieresis period -100 KPX Ydieresis semicolon -50 KPX Ydieresis u -100 KPX Ydieresis uacute -100 KPX Ydieresis ucircumflex -100 KPX Ydieresis udieresis -100 KPX Ydieresis ugrave -100 KPX Ydieresis uhungarumlaut -100 KPX Ydieresis umacron -100 KPX Ydieresis uogonek -100 KPX Ydieresis uring -100 KPX a g -10 KPX a gbreve -10 KPX a gcommaaccent -10 KPX a v -15 KPX a w -15 KPX a y -20 KPX a yacute -20 KPX a ydieresis -20 KPX aacute g -10 KPX aacute gbreve -10 KPX aacute gcommaaccent -10 KPX aacute v -15 KPX aacute w -15 KPX aacute y -20 KPX aacute yacute -20 KPX aacute ydieresis -20 KPX abreve g -10 KPX abreve gbreve -10 KPX abreve gcommaaccent -10 KPX abreve v -15 KPX abreve w -15 KPX abreve y -20 KPX abreve yacute -20 KPX abreve ydieresis -20 KPX acircumflex g -10 KPX acircumflex gbreve -10 KPX acircumflex gcommaaccent -10 KPX acircumflex v -15 KPX acircumflex w -15 KPX acircumflex y -20 KPX acircumflex yacute -20 KPX acircumflex ydieresis -20 KPX adieresis g -10 KPX adieresis gbreve -10 KPX adieresis gcommaaccent -10 KPX adieresis v -15 KPX adieresis w -15 KPX adieresis y -20 KPX adieresis yacute -20 KPX adieresis ydieresis -20 KPX agrave g -10 KPX agrave gbreve -10 KPX agrave gcommaaccent -10 KPX agrave v -15 KPX agrave w -15 KPX agrave y -20 KPX agrave yacute -20 KPX agrave ydieresis -20 KPX amacron g -10 KPX amacron gbreve -10 KPX amacron gcommaaccent -10 KPX amacron v -15 KPX amacron w -15 KPX amacron y -20 KPX amacron yacute -20 KPX amacron ydieresis -20 KPX aogonek g -10 KPX aogonek gbreve -10 KPX aogonek gcommaaccent -10 KPX aogonek v -15 KPX aogonek w -15 KPX aogonek y -20 KPX aogonek yacute -20 KPX aogonek ydieresis -20 KPX aring g -10 KPX aring gbreve -10 KPX aring gcommaaccent -10 KPX aring v -15 KPX aring w -15 KPX aring y -20 KPX aring yacute -20 KPX aring ydieresis -20 KPX atilde g -10 KPX atilde gbreve -10 KPX atilde gcommaaccent -10 KPX atilde v -15 KPX atilde w -15 KPX atilde y -20 KPX atilde yacute -20 KPX atilde ydieresis -20 KPX b l -10 KPX b lacute -10 KPX b lcommaaccent -10 KPX b lslash -10 KPX b u -20 KPX b uacute -20 KPX b ucircumflex -20 KPX b udieresis -20 KPX b ugrave -20 KPX b uhungarumlaut -20 KPX b umacron -20 KPX b uogonek -20 KPX b uring -20 KPX b v -20 KPX b y -20 KPX b yacute -20 KPX b ydieresis -20 KPX c h -10 KPX c k -20 KPX c kcommaaccent -20 KPX c l -20 KPX c lacute -20 KPX c lcommaaccent -20 KPX c lslash -20 KPX c y -10 KPX c yacute -10 KPX c ydieresis -10 KPX cacute h -10 KPX cacute k -20 KPX cacute kcommaaccent -20 KPX cacute l -20 KPX cacute lacute -20 KPX cacute lcommaaccent -20 KPX cacute lslash -20 KPX cacute y -10 KPX cacute yacute -10 KPX cacute ydieresis -10 KPX ccaron h -10 KPX ccaron k -20 KPX ccaron kcommaaccent -20 KPX ccaron l -20 KPX ccaron lacute -20 KPX ccaron lcommaaccent -20 KPX ccaron lslash -20 KPX ccaron y -10 KPX ccaron yacute -10 KPX ccaron ydieresis -10 KPX ccedilla h -10 KPX ccedilla k -20 KPX ccedilla kcommaaccent -20 KPX ccedilla l -20 KPX ccedilla lacute -20 KPX ccedilla lcommaaccent -20 KPX ccedilla lslash -20 KPX ccedilla y -10 KPX ccedilla yacute -10 KPX ccedilla ydieresis -10 KPX colon space -40 KPX comma quotedblright -120 KPX comma quoteright -120 KPX comma space -40 KPX d d -10 KPX d dcroat -10 KPX d v -15 KPX d w -15 KPX d y -15 KPX d yacute -15 KPX d ydieresis -15 KPX dcroat d -10 KPX dcroat dcroat -10 KPX dcroat v -15 KPX dcroat w -15 KPX dcroat y -15 KPX dcroat yacute -15 KPX dcroat ydieresis -15 KPX e comma 10 KPX e period 20 KPX e v -15 KPX e w -15 KPX e x -15 KPX e y -15 KPX e yacute -15 KPX e ydieresis -15 KPX eacute comma 10 KPX eacute period 20 KPX eacute v -15 KPX eacute w -15 KPX eacute x -15 KPX eacute y -15 KPX eacute yacute -15 KPX eacute ydieresis -15 KPX ecaron comma 10 KPX ecaron period 20 KPX ecaron v -15 KPX ecaron w -15 KPX ecaron x -15 KPX ecaron y -15 KPX ecaron yacute -15 KPX ecaron ydieresis -15 KPX ecircumflex comma 10 KPX ecircumflex period 20 KPX ecircumflex v -15 KPX ecircumflex w -15 KPX ecircumflex x -15 KPX ecircumflex y -15 KPX ecircumflex yacute -15 KPX ecircumflex ydieresis -15 KPX edieresis comma 10 KPX edieresis period 20 KPX edieresis v -15 KPX edieresis w -15 KPX edieresis x -15 KPX edieresis y -15 KPX edieresis yacute -15 KPX edieresis ydieresis -15 KPX edotaccent comma 10 KPX edotaccent period 20 KPX edotaccent v -15 KPX edotaccent w -15 KPX edotaccent x -15 KPX edotaccent y -15 KPX edotaccent yacute -15 KPX edotaccent ydieresis -15 KPX egrave comma 10 KPX egrave period 20 KPX egrave v -15 KPX egrave w -15 KPX egrave x -15 KPX egrave y -15 KPX egrave yacute -15 KPX egrave ydieresis -15 KPX emacron comma 10 KPX emacron period 20 KPX emacron v -15 KPX emacron w -15 KPX emacron x -15 KPX emacron y -15 KPX emacron yacute -15 KPX emacron ydieresis -15 KPX eogonek comma 10 KPX eogonek period 20 KPX eogonek v -15 KPX eogonek w -15 KPX eogonek x -15 KPX eogonek y -15 KPX eogonek yacute -15 KPX eogonek ydieresis -15 KPX f comma -10 KPX f e -10 KPX f eacute -10 KPX f ecaron -10 KPX f ecircumflex -10 KPX f edieresis -10 KPX f edotaccent -10 KPX f egrave -10 KPX f emacron -10 KPX f eogonek -10 KPX f o -20 KPX f oacute -20 KPX f ocircumflex -20 KPX f odieresis -20 KPX f ograve -20 KPX f ohungarumlaut -20 KPX f omacron -20 KPX f oslash -20 KPX f otilde -20 KPX f period -10 KPX f quotedblright 30 KPX f quoteright 30 KPX g e 10 KPX g eacute 10 KPX g ecaron 10 KPX g ecircumflex 10 KPX g edieresis 10 KPX g edotaccent 10 KPX g egrave 10 KPX g emacron 10 KPX g eogonek 10 KPX g g -10 KPX g gbreve -10 KPX g gcommaaccent -10 KPX gbreve e 10 KPX gbreve eacute 10 KPX gbreve ecaron 10 KPX gbreve ecircumflex 10 KPX gbreve edieresis 10 KPX gbreve edotaccent 10 KPX gbreve egrave 10 KPX gbreve emacron 10 KPX gbreve eogonek 10 KPX gbreve g -10 KPX gbreve gbreve -10 KPX gbreve gcommaaccent -10 KPX gcommaaccent e 10 KPX gcommaaccent eacute 10 KPX gcommaaccent ecaron 10 KPX gcommaaccent ecircumflex 10 KPX gcommaaccent edieresis 10 KPX gcommaaccent edotaccent 10 KPX gcommaaccent egrave 10 KPX gcommaaccent emacron 10 KPX gcommaaccent eogonek 10 KPX gcommaaccent g -10 KPX gcommaaccent gbreve -10 KPX gcommaaccent gcommaaccent -10 KPX h y -20 KPX h yacute -20 KPX h ydieresis -20 KPX k o -15 KPX k oacute -15 KPX k ocircumflex -15 KPX k odieresis -15 KPX k ograve -15 KPX k ohungarumlaut -15 KPX k omacron -15 KPX k oslash -15 KPX k otilde -15 KPX kcommaaccent o -15 KPX kcommaaccent oacute -15 KPX kcommaaccent ocircumflex -15 KPX kcommaaccent odieresis -15 KPX kcommaaccent ograve -15 KPX kcommaaccent ohungarumlaut -15 KPX kcommaaccent omacron -15 KPX kcommaaccent oslash -15 KPX kcommaaccent otilde -15 KPX l w -15 KPX l y -15 KPX l yacute -15 KPX l ydieresis -15 KPX lacute w -15 KPX lacute y -15 KPX lacute yacute -15 KPX lacute ydieresis -15 KPX lcommaaccent w -15 KPX lcommaaccent y -15 KPX lcommaaccent yacute -15 KPX lcommaaccent ydieresis -15 KPX lslash w -15 KPX lslash y -15 KPX lslash yacute -15 KPX lslash ydieresis -15 KPX m u -20 KPX m uacute -20 KPX m ucircumflex -20 KPX m udieresis -20 KPX m ugrave -20 KPX m uhungarumlaut -20 KPX m umacron -20 KPX m uogonek -20 KPX m uring -20 KPX m y -30 KPX m yacute -30 KPX m ydieresis -30 KPX n u -10 KPX n uacute -10 KPX n ucircumflex -10 KPX n udieresis -10 KPX n ugrave -10 KPX n uhungarumlaut -10 KPX n umacron -10 KPX n uogonek -10 KPX n uring -10 KPX n v -40 KPX n y -20 KPX n yacute -20 KPX n ydieresis -20 KPX nacute u -10 KPX nacute uacute -10 KPX nacute ucircumflex -10 KPX nacute udieresis -10 KPX nacute ugrave -10 KPX nacute uhungarumlaut -10 KPX nacute umacron -10 KPX nacute uogonek -10 KPX nacute uring -10 KPX nacute v -40 KPX nacute y -20 KPX nacute yacute -20 KPX nacute ydieresis -20 KPX ncaron u -10 KPX ncaron uacute -10 KPX ncaron ucircumflex -10 KPX ncaron udieresis -10 KPX ncaron ugrave -10 KPX ncaron uhungarumlaut -10 KPX ncaron umacron -10 KPX ncaron uogonek -10 KPX ncaron uring -10 KPX ncaron v -40 KPX ncaron y -20 KPX ncaron yacute -20 KPX ncaron ydieresis -20 KPX ncommaaccent u -10 KPX ncommaaccent uacute -10 KPX ncommaaccent ucircumflex -10 KPX ncommaaccent udieresis -10 KPX ncommaaccent ugrave -10 KPX ncommaaccent uhungarumlaut -10 KPX ncommaaccent umacron -10 KPX ncommaaccent uogonek -10 KPX ncommaaccent uring -10 KPX ncommaaccent v -40 KPX ncommaaccent y -20 KPX ncommaaccent yacute -20 KPX ncommaaccent ydieresis -20 KPX ntilde u -10 KPX ntilde uacute -10 KPX ntilde ucircumflex -10 KPX ntilde udieresis -10 KPX ntilde ugrave -10 KPX ntilde uhungarumlaut -10 KPX ntilde umacron -10 KPX ntilde uogonek -10 KPX ntilde uring -10 KPX ntilde v -40 KPX ntilde y -20 KPX ntilde yacute -20 KPX ntilde ydieresis -20 KPX o v -20 KPX o w -15 KPX o x -30 KPX o y -20 KPX o yacute -20 KPX o ydieresis -20 KPX oacute v -20 KPX oacute w -15 KPX oacute x -30 KPX oacute y -20 KPX oacute yacute -20 KPX oacute ydieresis -20 KPX ocircumflex v -20 KPX ocircumflex w -15 KPX ocircumflex x -30 KPX ocircumflex y -20 KPX ocircumflex yacute -20 KPX ocircumflex ydieresis -20 KPX odieresis v -20 KPX odieresis w -15 KPX odieresis x -30 KPX odieresis y -20 KPX odieresis yacute -20 KPX odieresis ydieresis -20 KPX ograve v -20 KPX ograve w -15 KPX ograve x -30 KPX ograve y -20 KPX ograve yacute -20 KPX ograve ydieresis -20 KPX ohungarumlaut v -20 KPX ohungarumlaut w -15 KPX ohungarumlaut x -30 KPX ohungarumlaut y -20 KPX ohungarumlaut yacute -20 KPX ohungarumlaut ydieresis -20 KPX omacron v -20 KPX omacron w -15 KPX omacron x -30 KPX omacron y -20 KPX omacron yacute -20 KPX omacron ydieresis -20 KPX oslash v -20 KPX oslash w -15 KPX oslash x -30 KPX oslash y -20 KPX oslash yacute -20 KPX oslash ydieresis -20 KPX otilde v -20 KPX otilde w -15 KPX otilde x -30 KPX otilde y -20 KPX otilde yacute -20 KPX otilde ydieresis -20 KPX p y -15 KPX p yacute -15 KPX p ydieresis -15 KPX period quotedblright -120 KPX period quoteright -120 KPX period space -40 KPX quotedblright space -80 KPX quoteleft quoteleft -46 KPX quoteright d -80 KPX quoteright dcroat -80 KPX quoteright l -20 KPX quoteright lacute -20 KPX quoteright lcommaaccent -20 KPX quoteright lslash -20 KPX quoteright quoteright -46 KPX quoteright r -40 KPX quoteright racute -40 KPX quoteright rcaron -40 KPX quoteright rcommaaccent -40 KPX quoteright s -60 KPX quoteright sacute -60 KPX quoteright scaron -60 KPX quoteright scedilla -60 KPX quoteright scommaaccent -60 KPX quoteright space -80 KPX quoteright v -20 KPX r c -20 KPX r cacute -20 KPX r ccaron -20 KPX r ccedilla -20 KPX r comma -60 KPX r d -20 KPX r dcroat -20 KPX r g -15 KPX r gbreve -15 KPX r gcommaaccent -15 KPX r hyphen -20 KPX r o -20 KPX r oacute -20 KPX r ocircumflex -20 KPX r odieresis -20 KPX r ograve -20 KPX r ohungarumlaut -20 KPX r omacron -20 KPX r oslash -20 KPX r otilde -20 KPX r period -60 KPX r q -20 KPX r s -15 KPX r sacute -15 KPX r scaron -15 KPX r scedilla -15 KPX r scommaaccent -15 KPX r t 20 KPX r tcommaaccent 20 KPX r v 10 KPX r y 10 KPX r yacute 10 KPX r ydieresis 10 KPX racute c -20 KPX racute cacute -20 KPX racute ccaron -20 KPX racute ccedilla -20 KPX racute comma -60 KPX racute d -20 KPX racute dcroat -20 KPX racute g -15 KPX racute gbreve -15 KPX racute gcommaaccent -15 KPX racute hyphen -20 KPX racute o -20 KPX racute oacute -20 KPX racute ocircumflex -20 KPX racute odieresis -20 KPX racute ograve -20 KPX racute ohungarumlaut -20 KPX racute omacron -20 KPX racute oslash -20 KPX racute otilde -20 KPX racute period -60 KPX racute q -20 KPX racute s -15 KPX racute sacute -15 KPX racute scaron -15 KPX racute scedilla -15 KPX racute scommaaccent -15 KPX racute t 20 KPX racute tcommaaccent 20 KPX racute v 10 KPX racute y 10 KPX racute yacute 10 KPX racute ydieresis 10 KPX rcaron c -20 KPX rcaron cacute -20 KPX rcaron ccaron -20 KPX rcaron ccedilla -20 KPX rcaron comma -60 KPX rcaron d -20 KPX rcaron dcroat -20 KPX rcaron g -15 KPX rcaron gbreve -15 KPX rcaron gcommaaccent -15 KPX rcaron hyphen -20 KPX rcaron o -20 KPX rcaron oacute -20 KPX rcaron ocircumflex -20 KPX rcaron odieresis -20 KPX rcaron ograve -20 KPX rcaron ohungarumlaut -20 KPX rcaron omacron -20 KPX rcaron oslash -20 KPX rcaron otilde -20 KPX rcaron period -60 KPX rcaron q -20 KPX rcaron s -15 KPX rcaron sacute -15 KPX rcaron scaron -15 KPX rcaron scedilla -15 KPX rcaron scommaaccent -15 KPX rcaron t 20 KPX rcaron tcommaaccent 20 KPX rcaron v 10 KPX rcaron y 10 KPX rcaron yacute 10 KPX rcaron ydieresis 10 KPX rcommaaccent c -20 KPX rcommaaccent cacute -20 KPX rcommaaccent ccaron -20 KPX rcommaaccent ccedilla -20 KPX rcommaaccent comma -60 KPX rcommaaccent d -20 KPX rcommaaccent dcroat -20 KPX rcommaaccent g -15 KPX rcommaaccent gbreve -15 KPX rcommaaccent gcommaaccent -15 KPX rcommaaccent hyphen -20 KPX rcommaaccent o -20 KPX rcommaaccent oacute -20 KPX rcommaaccent ocircumflex -20 KPX rcommaaccent odieresis -20 KPX rcommaaccent ograve -20 KPX rcommaaccent ohungarumlaut -20 KPX rcommaaccent omacron -20 KPX rcommaaccent oslash -20 KPX rcommaaccent otilde -20 KPX rcommaaccent period -60 KPX rcommaaccent q -20 KPX rcommaaccent s -15 KPX rcommaaccent sacute -15 KPX rcommaaccent scaron -15 KPX rcommaaccent scedilla -15 KPX rcommaaccent scommaaccent -15 KPX rcommaaccent t 20 KPX rcommaaccent tcommaaccent 20 KPX rcommaaccent v 10 KPX rcommaaccent y 10 KPX rcommaaccent yacute 10 KPX rcommaaccent ydieresis 10 KPX s w -15 KPX sacute w -15 KPX scaron w -15 KPX scedilla w -15 KPX scommaaccent w -15 KPX semicolon space -40 KPX space T -100 KPX space Tcaron -100 KPX space Tcommaaccent -100 KPX space V -80 KPX space W -80 KPX space Y -120 KPX space Yacute -120 KPX space Ydieresis -120 KPX space quotedblleft -80 KPX space quoteleft -60 KPX v a -20 KPX v aacute -20 KPX v abreve -20 KPX v acircumflex -20 KPX v adieresis -20 KPX v agrave -20 KPX v amacron -20 KPX v aogonek -20 KPX v aring -20 KPX v atilde -20 KPX v comma -80 KPX v o -30 KPX v oacute -30 KPX v ocircumflex -30 KPX v odieresis -30 KPX v ograve -30 KPX v ohungarumlaut -30 KPX v omacron -30 KPX v oslash -30 KPX v otilde -30 KPX v period -80 KPX w comma -40 KPX w o -20 KPX w oacute -20 KPX w ocircumflex -20 KPX w odieresis -20 KPX w ograve -20 KPX w ohungarumlaut -20 KPX w omacron -20 KPX w oslash -20 KPX w otilde -20 KPX w period -40 KPX x e -10 KPX x eacute -10 KPX x ecaron -10 KPX x ecircumflex -10 KPX x edieresis -10 KPX x edotaccent -10 KPX x egrave -10 KPX x emacron -10 KPX x eogonek -10 KPX y a -30 KPX y aacute -30 KPX y abreve -30 KPX y acircumflex -30 KPX y adieresis -30 KPX y agrave -30 KPX y amacron -30 KPX y aogonek -30 KPX y aring -30 KPX y atilde -30 KPX y comma -80 KPX y e -10 KPX y eacute -10 KPX y ecaron -10 KPX y ecircumflex -10 KPX y edieresis -10 KPX y edotaccent -10 KPX y egrave -10 KPX y emacron -10 KPX y eogonek -10 KPX y o -25 KPX y oacute -25 KPX y ocircumflex -25 KPX y odieresis -25 KPX y ograve -25 KPX y ohungarumlaut -25 KPX y omacron -25 KPX y oslash -25 KPX y otilde -25 KPX y period -80 KPX yacute a -30 KPX yacute aacute -30 KPX yacute abreve -30 KPX yacute acircumflex -30 KPX yacute adieresis -30 KPX yacute agrave -30 KPX yacute amacron -30 KPX yacute aogonek -30 KPX yacute aring -30 KPX yacute atilde -30 KPX yacute comma -80 KPX yacute e -10 KPX yacute eacute -10 KPX yacute ecaron -10 KPX yacute ecircumflex -10 KPX yacute edieresis -10 KPX yacute edotaccent -10 KPX yacute egrave -10 KPX yacute emacron -10 KPX yacute eogonek -10 KPX yacute o -25 KPX yacute oacute -25 KPX yacute ocircumflex -25 KPX yacute odieresis -25 KPX yacute ograve -25 KPX yacute ohungarumlaut -25 KPX yacute omacron -25 KPX yacute oslash -25 KPX yacute otilde -25 KPX yacute period -80 KPX ydieresis a -30 KPX ydieresis aacute -30 KPX ydieresis abreve -30 KPX ydieresis acircumflex -30 KPX ydieresis adieresis -30 KPX ydieresis agrave -30 KPX ydieresis amacron -30 KPX ydieresis aogonek -30 KPX ydieresis aring -30 KPX ydieresis atilde -30 KPX ydieresis comma -80 KPX ydieresis e -10 KPX ydieresis eacute -10 KPX ydieresis ecaron -10 KPX ydieresis ecircumflex -10 KPX ydieresis edieresis -10 KPX ydieresis edotaccent -10 KPX ydieresis egrave -10 KPX ydieresis emacron -10 KPX ydieresis eogonek -10 KPX ydieresis o -25 KPX ydieresis oacute -25 KPX ydieresis ocircumflex -25 KPX ydieresis odieresis -25 KPX ydieresis ograve -25 KPX ydieresis ohungarumlaut -25 KPX ydieresis omacron -25 KPX ydieresis oslash -25 KPX ydieresis otilde -25 KPX ydieresis period -80 KPX z e 10 KPX z eacute 10 KPX z ecaron 10 KPX z ecircumflex 10 KPX z edieresis 10 KPX z edotaccent 10 KPX z egrave 10 KPX z emacron 10 KPX z eogonek 10 KPX zacute e 10 KPX zacute eacute 10 KPX zacute ecaron 10 KPX zacute ecircumflex 10 KPX zacute edieresis 10 KPX zacute edotaccent 10 KPX zacute egrave 10 KPX zacute emacron 10 KPX zacute eogonek 10 KPX zcaron e 10 KPX zcaron eacute 10 KPX zcaron ecaron 10 KPX zcaron ecircumflex 10 KPX zcaron edieresis 10 KPX zcaron edotaccent 10 KPX zcaron egrave 10 KPX zcaron emacron 10 KPX zcaron eogonek 10 KPX zdotaccent e 10 KPX zdotaccent eacute 10 KPX zdotaccent ecaron 10 KPX zdotaccent ecircumflex 10 KPX zdotaccent edieresis 10 KPX zdotaccent edotaccent 10 KPX zdotaccent egrave 10 KPX zdotaccent emacron 10 KPX zdotaccent eogonek 10 EndKernPairs EndKernData EndFontMetrics gle-graphics-4.2.4c/src/fonts/Adobe-Core35_AFMs-314/NewCenturySchlbk-Italic.afm0000664000000000000000000014635511405446017025236 0ustar rootrootStartFontMetrics 4.1 Comment Copyright (c) 1985, 1987, 1989, 1991, 1992, 1997 Adobe Systems Incorporated. All Rights Reserved. Comment Creation Date: Mon Jun 23 16:46:15 1997 Comment UniqueID 43093 Comment VMusage 43675 54700 FontName NewCenturySchlbk-Italic FullName New Century Schoolbook Italic FamilyName New Century Schoolbook Weight Medium ItalicAngle -16 IsFixedPitch false FontBBox -166 -250 994 958 UnderlinePosition -100 UnderlineThickness 50 Version 002.000 Notice Copyright (c) 1985, 1987, 1989, 1991, 1992, 1997 Adobe Systems Incorporated. All Rights Reserved. EncodingScheme AdobeStandardEncoding CapHeight 722 XHeight 466 Ascender 737 Descender -205 StdHW 45 StdVW 80 StartCharMetrics 314 C 32 ; WX 278 ; N space ; B 0 0 0 0 ; C 33 ; WX 333 ; N exclam ; B 17 -15 303 737 ; C 34 ; WX 400 ; N quotedbl ; B 127 463 363 737 ; C 35 ; WX 556 ; N numbersign ; B 28 0 528 690 ; C 36 ; WX 556 ; N dollar ; B 4 -142 536 808 ; C 37 ; WX 833 ; N percent ; B 43 -15 790 705 ; C 38 ; WX 852 ; N ampersand ; B 24 -15 773 737 ; C 39 ; WX 204 ; N quoteright ; B 39 463 229 737 ; C 40 ; WX 333 ; N parenleft ; B 53 -117 411 745 ; C 41 ; WX 333 ; N parenright ; B -93 -117 265 745 ; C 42 ; WX 500 ; N asterisk ; B 80 318 500 737 ; C 43 ; WX 606 ; N plus ; B 50 0 556 506 ; C 44 ; WX 278 ; N comma ; B -39 -165 151 109 ; C 45 ; WX 333 ; N hyphen ; B 32 202 259 274 ; C 46 ; WX 278 ; N period ; B 17 -15 141 109 ; C 47 ; WX 606 ; N slash ; B 132 -15 474 737 ; C 48 ; WX 556 ; N zero ; B 30 -15 526 705 ; C 49 ; WX 556 ; N one ; B 50 0 459 705 ; C 50 ; WX 556 ; N two ; B -37 0 506 705 ; C 51 ; WX 556 ; N three ; B -2 -15 506 705 ; C 52 ; WX 556 ; N four ; B -8 0 512 705 ; C 53 ; WX 556 ; N five ; B 4 -15 540 705 ; C 54 ; WX 556 ; N six ; B 36 -15 548 705 ; C 55 ; WX 556 ; N seven ; B 69 -15 561 705 ; C 56 ; WX 556 ; N eight ; B 6 -15 526 705 ; C 57 ; WX 556 ; N nine ; B 8 -15 520 705 ; C 58 ; WX 278 ; N colon ; B 17 -15 229 466 ; C 59 ; WX 278 ; N semicolon ; B -39 -165 229 466 ; C 60 ; WX 606 ; N less ; B 36 -8 542 514 ; C 61 ; WX 606 ; N equal ; B 50 117 556 389 ; C 62 ; WX 606 ; N greater ; B 64 -8 570 514 ; C 63 ; WX 444 ; N question ; B 102 -15 417 737 ; C 64 ; WX 747 ; N at ; B -2 -15 750 737 ; C 65 ; WX 704 ; N A ; B -87 0 668 737 ; C 66 ; WX 722 ; N B ; B -33 0 670 722 ; C 67 ; WX 722 ; N C ; B 40 -15 712 737 ; C 68 ; WX 778 ; N D ; B -33 0 738 722 ; C 69 ; WX 722 ; N E ; B -33 0 700 722 ; C 70 ; WX 667 ; N F ; B -33 0 700 722 ; C 71 ; WX 778 ; N G ; B 40 -15 763 737 ; C 72 ; WX 833 ; N H ; B -33 0 866 722 ; C 73 ; WX 407 ; N I ; B -33 0 435 722 ; C 74 ; WX 611 ; N J ; B -14 -15 651 722 ; C 75 ; WX 741 ; N K ; B -33 0 816 722 ; C 76 ; WX 667 ; N L ; B -33 0 627 722 ; C 77 ; WX 944 ; N M ; B -33 0 977 722 ; C 78 ; WX 815 ; N N ; B -51 -15 866 722 ; C 79 ; WX 778 ; N O ; B 40 -15 738 737 ; C 80 ; WX 667 ; N P ; B -33 0 667 722 ; C 81 ; WX 778 ; N Q ; B 40 -190 738 737 ; C 82 ; WX 741 ; N R ; B -45 -15 692 722 ; C 83 ; WX 667 ; N S ; B -6 -15 638 737 ; C 84 ; WX 685 ; N T ; B 40 0 725 722 ; C 85 ; WX 815 ; N U ; B 93 -15 867 722 ; C 86 ; WX 704 ; N V ; B 36 -10 779 722 ; C 87 ; WX 926 ; N W ; B 53 -10 978 722 ; C 88 ; WX 704 ; N X ; B -75 0 779 722 ; C 89 ; WX 685 ; N Y ; B 31 0 760 722 ; C 90 ; WX 667 ; N Z ; B -25 0 667 722 ; C 91 ; WX 333 ; N bracketleft ; B -55 -109 388 737 ; C 92 ; WX 606 ; N backslash ; B 132 -15 474 737 ; C 93 ; WX 333 ; N bracketright ; B -77 -109 366 737 ; C 94 ; WX 606 ; N asciicircum ; B 89 325 517 690 ; C 95 ; WX 500 ; N underscore ; B 0 -125 500 -75 ; C 96 ; WX 204 ; N quoteleft ; B 39 463 229 737 ; C 97 ; WX 574 ; N a ; B 2 -15 524 466 ; C 98 ; WX 556 ; N b ; B 32 -15 488 737 ; C 99 ; WX 444 ; N c ; B 2 -15 394 466 ; C 100 ; WX 611 ; N d ; B 2 -15 585 737 ; C 101 ; WX 444 ; N e ; B -6 -15 388 466 ; C 102 ; WX 333 ; N f ; B -68 -205 470 737 ; L i fi ; L l fl ; C 103 ; WX 537 ; N g ; B -79 -205 523 497 ; C 104 ; WX 611 ; N h ; B 14 -15 562 737 ; C 105 ; WX 333 ; N i ; B 29 -15 282 715 ; C 106 ; WX 315 ; N j ; B -166 -205 318 715 ; C 107 ; WX 556 ; N k ; B 0 -15 497 737 ; C 108 ; WX 333 ; N l ; B 14 -15 292 737 ; C 109 ; WX 889 ; N m ; B 14 -15 840 466 ; C 110 ; WX 611 ; N n ; B 14 -15 562 466 ; C 111 ; WX 500 ; N o ; B 2 -15 450 466 ; C 112 ; WX 574 ; N p ; B -101 -205 506 466 ; C 113 ; WX 556 ; N q ; B 2 -205 500 466 ; C 114 ; WX 444 ; N r ; B 10 0 434 466 ; C 115 ; WX 444 ; N s ; B 2 -15 394 466 ; C 116 ; WX 352 ; N t ; B 24 -15 328 619 ; C 117 ; WX 611 ; N u ; B 44 -15 556 466 ; C 118 ; WX 519 ; N v ; B 31 -15 447 466 ; C 119 ; WX 778 ; N w ; B 31 -15 706 466 ; C 120 ; WX 500 ; N x ; B -33 -15 471 466 ; C 121 ; WX 500 ; N y ; B -83 -205 450 466 ; C 122 ; WX 463 ; N z ; B -33 -15 416 466 ; C 123 ; WX 333 ; N braceleft ; B 38 -109 394 737 ; C 124 ; WX 606 ; N bar ; B 267 -250 339 750 ; C 125 ; WX 333 ; N braceright ; B -87 -109 269 737 ; C 126 ; WX 606 ; N asciitilde ; B 72 184 534 322 ; C 161 ; WX 333 ; N exclamdown ; B -22 -205 264 547 ; C 162 ; WX 556 ; N cent ; B 62 -144 486 580 ; C 163 ; WX 556 ; N sterling ; B -13 -15 544 705 ; C 164 ; WX 167 ; N fraction ; B -134 -15 301 705 ; C 165 ; WX 556 ; N yen ; B 40 0 624 690 ; C 166 ; WX 556 ; N florin ; B -58 -205 569 737 ; C 167 ; WX 500 ; N section ; B -10 -147 480 737 ; C 168 ; WX 556 ; N currency ; B 26 93 530 597 ; C 169 ; WX 278 ; N quotesingle ; B 151 463 237 737 ; C 170 ; WX 389 ; N quotedblleft ; B 39 463 406 737 ; C 171 ; WX 426 ; N guillemotleft ; B -15 74 402 402 ; C 172 ; WX 333 ; N guilsinglleft ; B 40 74 259 402 ; C 173 ; WX 333 ; N guilsinglright ; B 40 74 259 402 ; C 174 ; WX 611 ; N fi ; B -68 -205 555 737 ; C 175 ; WX 611 ; N fl ; B -68 -205 587 737 ; C 177 ; WX 500 ; N endash ; B -27 208 487 268 ; C 178 ; WX 500 ; N dagger ; B 51 -147 506 737 ; C 179 ; WX 500 ; N daggerdbl ; B -54 -147 506 737 ; C 180 ; WX 278 ; N periodcentered ; B 71 238 207 374 ; C 182 ; WX 650 ; N paragraph ; B 48 -132 665 722 ; C 183 ; WX 606 ; N bullet ; B 122 180 484 542 ; C 184 ; WX 204 ; N quotesinglbase ; B -78 -165 112 109 ; C 185 ; WX 389 ; N quotedblbase ; B -78 -165 289 109 ; C 186 ; WX 389 ; N quotedblright ; B 39 463 406 737 ; C 187 ; WX 426 ; N guillemotright ; B -15 74 402 402 ; C 188 ; WX 1000 ; N ellipsis ; B 59 -15 849 109 ; C 189 ; WX 1000 ; N perthousand ; B 6 -15 994 705 ; C 191 ; WX 444 ; N questiondown ; B -3 -205 312 547 ; C 193 ; WX 333 ; N grave ; B 71 518 262 690 ; C 194 ; WX 333 ; N acute ; B 132 518 355 690 ; C 195 ; WX 333 ; N circumflex ; B 37 518 331 690 ; C 196 ; WX 333 ; N tilde ; B 52 547 383 649 ; C 197 ; WX 333 ; N macron ; B 52 560 363 610 ; C 198 ; WX 333 ; N breve ; B 69 518 370 677 ; C 199 ; WX 333 ; N dotaccent ; B 146 606 255 715 ; C 200 ; WX 333 ; N dieresis ; B 59 606 359 708 ; C 202 ; WX 333 ; N ring ; B 114 512 314 712 ; C 203 ; WX 333 ; N cedilla ; B 3 -215 215 0 ; C 205 ; WX 333 ; N hungarumlaut ; B 32 518 455 690 ; C 206 ; WX 333 ; N ogonek ; B 46 -220 334 4 ; C 207 ; WX 333 ; N caron ; B 73 518 378 690 ; C 208 ; WX 1000 ; N emdash ; B -27 208 987 268 ; C 225 ; WX 870 ; N AE ; B -87 0 888 722 ; C 227 ; WX 422 ; N ordfeminine ; B 72 416 420 705 ; C 232 ; WX 667 ; N Lslash ; B -33 0 627 722 ; C 233 ; WX 778 ; N Oslash ; B 16 -68 748 780 ; C 234 ; WX 981 ; N OE ; B 40 0 975 722 ; C 235 ; WX 372 ; N ordmasculine ; B 66 416 370 705 ; C 241 ; WX 722 ; N ae ; B -18 -15 666 466 ; C 245 ; WX 333 ; N dotlessi ; B 29 -15 282 466 ; C 248 ; WX 333 ; N lslash ; B -2 -15 294 737 ; C 249 ; WX 500 ; N oslash ; B 2 -121 450 549 ; C 250 ; WX 778 ; N oe ; B 2 -15 722 466 ; C 251 ; WX 556 ; N germandbls ; B -76 -205 525 737 ; C -1 ; WX 407 ; N Idieresis ; B -33 0 456 902 ; C -1 ; WX 444 ; N eacute ; B -6 -15 411 690 ; C -1 ; WX 574 ; N abreve ; B 2 -15 524 677 ; C -1 ; WX 611 ; N uhungarumlaut ; B 44 -15 594 690 ; C -1 ; WX 444 ; N ecaron ; B -6 -15 434 690 ; C -1 ; WX 685 ; N Ydieresis ; B 31 0 760 902 ; C -1 ; WX 606 ; N divide ; B 50 -22 556 528 ; C -1 ; WX 685 ; N Yacute ; B 31 0 760 946 ; C -1 ; WX 704 ; N Acircumflex ; B -87 0 668 946 ; C -1 ; WX 574 ; N aacute ; B 2 -15 524 690 ; C -1 ; WX 815 ; N Ucircumflex ; B 93 -15 867 946 ; C -1 ; WX 500 ; N yacute ; B -83 -205 450 690 ; C -1 ; WX 444 ; N scommaaccent ; B 2 -250 394 466 ; C -1 ; WX 444 ; N ecircumflex ; B -6 -15 388 690 ; C -1 ; WX 815 ; N Uring ; B 93 -15 867 958 ; C -1 ; WX 815 ; N Udieresis ; B 93 -15 867 902 ; C -1 ; WX 574 ; N aogonek ; B 2 -225 534 466 ; C -1 ; WX 815 ; N Uacute ; B 93 -15 867 946 ; C -1 ; WX 611 ; N uogonek ; B 44 -225 556 466 ; C -1 ; WX 722 ; N Edieresis ; B -33 0 700 902 ; C -1 ; WX 778 ; N Dcroat ; B -33 0 738 722 ; C -1 ; WX 250 ; N commaaccent ; B -24 -250 147 -50 ; C -1 ; WX 747 ; N copyright ; B -2 -15 750 737 ; C -1 ; WX 722 ; N Emacron ; B -33 0 700 866 ; C -1 ; WX 444 ; N ccaron ; B 2 -15 434 690 ; C -1 ; WX 574 ; N aring ; B 2 -15 524 712 ; C -1 ; WX 815 ; N Ncommaaccent ; B -51 -250 866 722 ; C -1 ; WX 333 ; N lacute ; B 14 -15 415 958 ; C -1 ; WX 574 ; N agrave ; B 2 -15 524 690 ; C -1 ; WX 685 ; N Tcommaaccent ; B 40 -250 725 722 ; C -1 ; WX 722 ; N Cacute ; B 40 -15 712 946 ; C -1 ; WX 574 ; N atilde ; B 2 -15 524 649 ; C -1 ; WX 722 ; N Edotaccent ; B -33 0 700 909 ; C -1 ; WX 444 ; N scaron ; B 2 -15 434 690 ; C -1 ; WX 444 ; N scedilla ; B 2 -215 394 466 ; C -1 ; WX 333 ; N iacute ; B 29 -15 355 690 ; C -1 ; WX 471 ; N lozenge ; B 10 0 462 728 ; C -1 ; WX 741 ; N Rcaron ; B -45 -15 692 946 ; C -1 ; WX 778 ; N Gcommaaccent ; B 40 -250 763 737 ; C -1 ; WX 611 ; N ucircumflex ; B 44 -15 556 690 ; C -1 ; WX 574 ; N acircumflex ; B 2 -15 524 690 ; C -1 ; WX 704 ; N Amacron ; B -87 0 668 866 ; C -1 ; WX 444 ; N rcaron ; B 10 0 434 690 ; C -1 ; WX 444 ; N ccedilla ; B 2 -215 394 466 ; C -1 ; WX 667 ; N Zdotaccent ; B -25 0 667 909 ; C -1 ; WX 667 ; N Thorn ; B -33 0 627 722 ; C -1 ; WX 778 ; N Omacron ; B 40 -15 738 866 ; C -1 ; WX 741 ; N Racute ; B -45 -15 692 946 ; C -1 ; WX 667 ; N Sacute ; B -6 -15 638 946 ; C -1 ; WX 651 ; N dcaron ; B 2 -15 729 737 ; C -1 ; WX 815 ; N Umacron ; B 93 -15 867 866 ; C -1 ; WX 611 ; N uring ; B 44 -15 556 712 ; C -1 ; WX 333 ; N threesuperior ; B 22 273 359 705 ; C -1 ; WX 778 ; N Ograve ; B 40 -15 738 946 ; C -1 ; WX 704 ; N Agrave ; B -87 0 668 946 ; C -1 ; WX 704 ; N Abreve ; B -87 0 668 933 ; C -1 ; WX 606 ; N multiply ; B 74 24 532 482 ; C -1 ; WX 611 ; N uacute ; B 44 -15 556 690 ; C -1 ; WX 685 ; N Tcaron ; B 40 0 725 946 ; C -1 ; WX 476 ; N partialdiff ; B 13 -38 463 714 ; C -1 ; WX 500 ; N ydieresis ; B -83 -205 450 646 ; C -1 ; WX 815 ; N Nacute ; B -51 -15 866 946 ; C -1 ; WX 333 ; N icircumflex ; B 29 -15 331 690 ; C -1 ; WX 722 ; N Ecircumflex ; B -33 0 700 946 ; C -1 ; WX 574 ; N adieresis ; B 2 -15 524 646 ; C -1 ; WX 444 ; N edieresis ; B -6 -15 415 646 ; C -1 ; WX 444 ; N cacute ; B 2 -15 411 690 ; C -1 ; WX 611 ; N nacute ; B 14 -15 562 690 ; C -1 ; WX 611 ; N umacron ; B 44 -15 556 610 ; C -1 ; WX 815 ; N Ncaron ; B -51 -15 866 946 ; C -1 ; WX 407 ; N Iacute ; B -33 0 452 946 ; C -1 ; WX 606 ; N plusminus ; B 50 0 556 506 ; C -1 ; WX 606 ; N brokenbar ; B 267 -175 339 675 ; C -1 ; WX 747 ; N registered ; B -2 -15 750 737 ; C -1 ; WX 778 ; N Gbreve ; B 40 -15 763 933 ; C -1 ; WX 407 ; N Idotaccent ; B -33 0 435 909 ; C -1 ; WX 600 ; N summation ; B 15 -10 586 706 ; C -1 ; WX 722 ; N Egrave ; B -33 0 700 946 ; C -1 ; WX 444 ; N racute ; B 10 0 434 690 ; C -1 ; WX 500 ; N omacron ; B 2 -15 450 610 ; C -1 ; WX 667 ; N Zacute ; B -25 0 667 946 ; C -1 ; WX 667 ; N Zcaron ; B -25 0 667 946 ; C -1 ; WX 549 ; N greaterequal ; B 26 0 523 674 ; C -1 ; WX 778 ; N Eth ; B -33 0 738 722 ; C -1 ; WX 722 ; N Ccedilla ; B 40 -215 712 737 ; C -1 ; WX 333 ; N lcommaaccent ; B -43 -250 292 737 ; C -1 ; WX 382 ; N tcaron ; B 24 -15 460 757 ; C -1 ; WX 444 ; N eogonek ; B -6 -225 388 466 ; C -1 ; WX 815 ; N Uogonek ; B 93 -225 867 722 ; C -1 ; WX 704 ; N Aacute ; B -87 0 668 946 ; C -1 ; WX 704 ; N Adieresis ; B -87 0 668 902 ; C -1 ; WX 444 ; N egrave ; B -6 -15 388 690 ; C -1 ; WX 463 ; N zacute ; B -33 -15 420 690 ; C -1 ; WX 333 ; N iogonek ; B -14 -225 282 715 ; C -1 ; WX 778 ; N Oacute ; B 40 -15 738 946 ; C -1 ; WX 500 ; N oacute ; B 2 -15 450 690 ; C -1 ; WX 574 ; N amacron ; B 2 -15 524 610 ; C -1 ; WX 444 ; N sacute ; B 2 -15 411 690 ; C -1 ; WX 333 ; N idieresis ; B 29 -15 359 646 ; C -1 ; WX 778 ; N Ocircumflex ; B 40 -15 738 946 ; C -1 ; WX 815 ; N Ugrave ; B 93 -15 867 946 ; C -1 ; WX 612 ; N Delta ; B 6 0 608 688 ; C -1 ; WX 574 ; N thorn ; B -101 -205 506 737 ; C -1 ; WX 333 ; N twosuperior ; B 0 282 359 705 ; C -1 ; WX 778 ; N Odieresis ; B 40 -15 738 902 ; C -1 ; WX 611 ; N mu ; B -60 -205 556 466 ; C -1 ; WX 333 ; N igrave ; B 29 -15 282 690 ; C -1 ; WX 500 ; N ohungarumlaut ; B 2 -15 539 690 ; C -1 ; WX 722 ; N Eogonek ; B -33 -220 700 722 ; C -1 ; WX 611 ; N dcroat ; B 2 -15 636 737 ; C -1 ; WX 834 ; N threequarters ; B 22 -15 782 705 ; C -1 ; WX 667 ; N Scedilla ; B -6 -215 638 737 ; C -1 ; WX 363 ; N lcaron ; B 14 -15 436 737 ; C -1 ; WX 741 ; N Kcommaaccent ; B -33 -250 816 722 ; C -1 ; WX 667 ; N Lacute ; B -33 0 627 946 ; C -1 ; WX 950 ; N trademark ; B 32 318 968 722 ; C -1 ; WX 444 ; N edotaccent ; B -6 -15 388 653 ; C -1 ; WX 407 ; N Igrave ; B -33 0 435 946 ; C -1 ; WX 407 ; N Imacron ; B -33 0 460 866 ; C -1 ; WX 667 ; N Lcaron ; B -33 0 683 737 ; C -1 ; WX 834 ; N onehalf ; B 34 -15 776 705 ; C -1 ; WX 549 ; N lessequal ; B 26 0 523 674 ; C -1 ; WX 500 ; N ocircumflex ; B 2 -15 450 690 ; C -1 ; WX 611 ; N ntilde ; B 14 -15 562 649 ; C -1 ; WX 815 ; N Uhungarumlaut ; B 93 -15 867 946 ; C -1 ; WX 722 ; N Eacute ; B -33 0 700 946 ; C -1 ; WX 444 ; N emacron ; B -6 -15 419 610 ; C -1 ; WX 537 ; N gbreve ; B -79 -205 523 677 ; C -1 ; WX 834 ; N onequarter ; B 34 -15 782 705 ; C -1 ; WX 667 ; N Scaron ; B -6 -15 638 946 ; C -1 ; WX 667 ; N Scommaaccent ; B -6 -250 638 737 ; C -1 ; WX 778 ; N Ohungarumlaut ; B 40 -15 738 946 ; C -1 ; WX 400 ; N degree ; B 86 419 372 705 ; C -1 ; WX 500 ; N ograve ; B 2 -15 450 690 ; C -1 ; WX 722 ; N Ccaron ; B 40 -15 712 946 ; C -1 ; WX 611 ; N ugrave ; B 44 -15 556 690 ; C -1 ; WX 453 ; N radical ; B -4 -80 458 762 ; C -1 ; WX 778 ; N Dcaron ; B -33 0 738 946 ; C -1 ; WX 444 ; N rcommaaccent ; B -67 -250 434 466 ; C -1 ; WX 815 ; N Ntilde ; B -51 -15 866 905 ; C -1 ; WX 500 ; N otilde ; B 2 -15 467 649 ; C -1 ; WX 741 ; N Rcommaaccent ; B -45 -250 692 722 ; C -1 ; WX 667 ; N Lcommaaccent ; B -33 -250 627 722 ; C -1 ; WX 704 ; N Atilde ; B -87 0 668 905 ; C -1 ; WX 704 ; N Aogonek ; B -87 -220 734 737 ; C -1 ; WX 704 ; N Aring ; B -87 0 668 958 ; C -1 ; WX 778 ; N Otilde ; B 40 -15 738 905 ; C -1 ; WX 463 ; N zdotaccent ; B -33 -15 416 653 ; C -1 ; WX 722 ; N Ecaron ; B -33 0 700 946 ; C -1 ; WX 407 ; N Iogonek ; B -33 -220 435 722 ; C -1 ; WX 556 ; N kcommaaccent ; B 0 -250 497 737 ; C -1 ; WX 606 ; N minus ; B 50 217 556 289 ; C -1 ; WX 407 ; N Icircumflex ; B -33 0 435 946 ; C -1 ; WX 611 ; N ncaron ; B 14 -15 562 690 ; C -1 ; WX 352 ; N tcommaaccent ; B -33 -250 328 619 ; C -1 ; WX 606 ; N logicalnot ; B 50 108 556 389 ; C -1 ; WX 500 ; N odieresis ; B 2 -15 450 646 ; C -1 ; WX 611 ; N udieresis ; B 44 -15 556 646 ; C -1 ; WX 549 ; N notequal ; B 12 -35 537 551 ; C -1 ; WX 537 ; N gcommaaccent ; B -79 -205 523 805 ; C -1 ; WX 500 ; N eth ; B 2 -15 450 737 ; C -1 ; WX 463 ; N zcaron ; B -33 -15 443 690 ; C -1 ; WX 611 ; N ncommaaccent ; B 14 -250 562 466 ; C -1 ; WX 333 ; N onesuperior ; B 34 282 311 705 ; C -1 ; WX 333 ; N imacron ; B 29 -15 300 610 ; EndCharMetrics StartKernData StartKernPairs 1696 KPX A C -18 KPX A Cacute -18 KPX A Ccaron -18 KPX A Ccedilla -18 KPX A G -18 KPX A Gbreve -18 KPX A Gcommaaccent -18 KPX A O -18 KPX A Oacute -18 KPX A Ocircumflex -18 KPX A Odieresis -18 KPX A Ograve -18 KPX A Ohungarumlaut -18 KPX A Omacron -18 KPX A Oslash -18 KPX A Otilde -18 KPX A Q -18 KPX A T -30 KPX A Tcaron -30 KPX A Tcommaaccent -30 KPX A U -37 KPX A Uacute -37 KPX A Ucircumflex -37 KPX A Udieresis -37 KPX A Ugrave -37 KPX A Uhungarumlaut -37 KPX A Umacron -37 KPX A Uogonek -37 KPX A Uring -37 KPX A V -74 KPX A W -74 KPX A Y -55 KPX A Yacute -55 KPX A Ydieresis -55 KPX A quotedblright -125 KPX A quoteright -125 KPX A u -18 KPX A uacute -18 KPX A ucircumflex -18 KPX A udieresis -18 KPX A ugrave -18 KPX A uhungarumlaut -18 KPX A umacron -18 KPX A uogonek -18 KPX A uring -18 KPX A v -18 KPX A w -18 KPX A y -55 KPX A yacute -55 KPX A ydieresis -55 KPX Aacute C -18 KPX Aacute Cacute -18 KPX Aacute Ccaron -18 KPX Aacute Ccedilla -18 KPX Aacute G -18 KPX Aacute Gbreve -18 KPX Aacute Gcommaaccent -18 KPX Aacute O -18 KPX Aacute Oacute -18 KPX Aacute Ocircumflex -18 KPX Aacute Odieresis -18 KPX Aacute Ograve -18 KPX Aacute Ohungarumlaut -18 KPX Aacute Omacron -18 KPX Aacute Oslash -18 KPX Aacute Otilde -18 KPX Aacute Q -18 KPX Aacute T -30 KPX Aacute Tcaron -30 KPX Aacute Tcommaaccent -30 KPX Aacute U -37 KPX Aacute Uacute -37 KPX Aacute Ucircumflex -37 KPX Aacute Udieresis -37 KPX Aacute Ugrave -37 KPX Aacute Uhungarumlaut -37 KPX Aacute Umacron -37 KPX Aacute Uogonek -37 KPX Aacute Uring -37 KPX Aacute V -74 KPX Aacute W -74 KPX Aacute Y -55 KPX Aacute Yacute -55 KPX Aacute Ydieresis -55 KPX Aacute quotedblright -125 KPX Aacute quoteright -125 KPX Aacute u -18 KPX Aacute uacute -18 KPX Aacute ucircumflex -18 KPX Aacute udieresis -18 KPX Aacute ugrave -18 KPX Aacute uhungarumlaut -18 KPX Aacute umacron -18 KPX Aacute uogonek -18 KPX Aacute uring -18 KPX Aacute v -18 KPX Aacute w -18 KPX Aacute y -55 KPX Aacute yacute -55 KPX Aacute ydieresis -55 KPX Abreve C -18 KPX Abreve Cacute -18 KPX Abreve Ccaron -18 KPX Abreve Ccedilla -18 KPX Abreve G -18 KPX Abreve Gbreve -18 KPX Abreve Gcommaaccent -18 KPX Abreve O -18 KPX Abreve Oacute -18 KPX Abreve Ocircumflex -18 KPX Abreve Odieresis -18 KPX Abreve Ograve -18 KPX Abreve Ohungarumlaut -18 KPX Abreve Omacron -18 KPX Abreve Oslash -18 KPX Abreve Otilde -18 KPX Abreve Q -18 KPX Abreve T -30 KPX Abreve Tcaron -30 KPX Abreve Tcommaaccent -30 KPX Abreve U -37 KPX Abreve Uacute -37 KPX Abreve Ucircumflex -37 KPX Abreve Udieresis -37 KPX Abreve Ugrave -37 KPX Abreve Uhungarumlaut -37 KPX Abreve Umacron -37 KPX Abreve Uogonek -37 KPX Abreve Uring -37 KPX Abreve V -74 KPX Abreve W -74 KPX Abreve Y -55 KPX Abreve Yacute -55 KPX Abreve Ydieresis -55 KPX Abreve quotedblright -125 KPX Abreve quoteright -125 KPX Abreve u -18 KPX Abreve uacute -18 KPX Abreve ucircumflex -18 KPX Abreve udieresis -18 KPX Abreve ugrave -18 KPX Abreve uhungarumlaut -18 KPX Abreve umacron -18 KPX Abreve uogonek -18 KPX Abreve uring -18 KPX Abreve v -18 KPX Abreve w -18 KPX Abreve y -55 KPX Abreve yacute -55 KPX Abreve ydieresis -55 KPX Acircumflex C -18 KPX Acircumflex Cacute -18 KPX Acircumflex Ccaron -18 KPX Acircumflex Ccedilla -18 KPX Acircumflex G -18 KPX Acircumflex Gbreve -18 KPX Acircumflex Gcommaaccent -18 KPX Acircumflex O -18 KPX Acircumflex Oacute -18 KPX Acircumflex Ocircumflex -18 KPX Acircumflex Odieresis -18 KPX Acircumflex Ograve -18 KPX Acircumflex Ohungarumlaut -18 KPX Acircumflex Omacron -18 KPX Acircumflex Oslash -18 KPX Acircumflex Otilde -18 KPX Acircumflex Q -18 KPX Acircumflex T -30 KPX Acircumflex Tcaron -30 KPX Acircumflex Tcommaaccent -30 KPX Acircumflex U -37 KPX Acircumflex Uacute -37 KPX Acircumflex Ucircumflex -37 KPX Acircumflex Udieresis -37 KPX Acircumflex Ugrave -37 KPX Acircumflex Uhungarumlaut -37 KPX Acircumflex Umacron -37 KPX Acircumflex Uogonek -37 KPX Acircumflex Uring -37 KPX Acircumflex V -74 KPX Acircumflex W -74 KPX Acircumflex Y -55 KPX Acircumflex Yacute -55 KPX Acircumflex Ydieresis -55 KPX Acircumflex quotedblright -125 KPX Acircumflex quoteright -125 KPX Acircumflex u -18 KPX Acircumflex uacute -18 KPX Acircumflex ucircumflex -18 KPX Acircumflex udieresis -18 KPX Acircumflex ugrave -18 KPX Acircumflex uhungarumlaut -18 KPX Acircumflex umacron -18 KPX Acircumflex uogonek -18 KPX Acircumflex uring -18 KPX Acircumflex v -18 KPX Acircumflex w -18 KPX Acircumflex y -55 KPX Acircumflex yacute -55 KPX Acircumflex ydieresis -55 KPX Adieresis C -18 KPX Adieresis Cacute -18 KPX Adieresis Ccaron -18 KPX Adieresis Ccedilla -18 KPX Adieresis G -18 KPX Adieresis Gbreve -18 KPX Adieresis Gcommaaccent -18 KPX Adieresis O -18 KPX Adieresis Oacute -18 KPX Adieresis Ocircumflex -18 KPX Adieresis Odieresis -18 KPX Adieresis Ograve -18 KPX Adieresis Ohungarumlaut -18 KPX Adieresis Omacron -18 KPX Adieresis Oslash -18 KPX Adieresis Otilde -18 KPX Adieresis Q -18 KPX Adieresis T -30 KPX Adieresis Tcaron -30 KPX Adieresis Tcommaaccent -30 KPX Adieresis U -37 KPX Adieresis Uacute -37 KPX Adieresis Ucircumflex -37 KPX Adieresis Udieresis -37 KPX Adieresis Ugrave -37 KPX Adieresis Uhungarumlaut -37 KPX Adieresis Umacron -37 KPX Adieresis Uogonek -37 KPX Adieresis Uring -37 KPX Adieresis V -74 KPX Adieresis W -74 KPX Adieresis Y -55 KPX Adieresis Yacute -55 KPX Adieresis Ydieresis -55 KPX Adieresis quotedblright -125 KPX Adieresis quoteright -125 KPX Adieresis u -18 KPX Adieresis uacute -18 KPX Adieresis ucircumflex -18 KPX Adieresis udieresis -18 KPX Adieresis ugrave -18 KPX Adieresis uhungarumlaut -18 KPX Adieresis umacron -18 KPX Adieresis uogonek -18 KPX Adieresis uring -18 KPX Adieresis v -18 KPX Adieresis w -18 KPX Adieresis y -55 KPX Adieresis yacute -55 KPX Adieresis ydieresis -55 KPX Agrave C -18 KPX Agrave Cacute -18 KPX Agrave Ccaron -18 KPX Agrave Ccedilla -18 KPX Agrave G -18 KPX Agrave Gbreve -18 KPX Agrave Gcommaaccent -18 KPX Agrave O -18 KPX Agrave Oacute -18 KPX Agrave Ocircumflex -18 KPX Agrave Odieresis -18 KPX Agrave Ograve -18 KPX Agrave Ohungarumlaut -18 KPX Agrave Omacron -18 KPX Agrave Oslash -18 KPX Agrave Otilde -18 KPX Agrave Q -18 KPX Agrave T -30 KPX Agrave Tcaron -30 KPX Agrave Tcommaaccent -30 KPX Agrave U -37 KPX Agrave Uacute -37 KPX Agrave Ucircumflex -37 KPX Agrave Udieresis -37 KPX Agrave Ugrave -37 KPX Agrave Uhungarumlaut -37 KPX Agrave Umacron -37 KPX Agrave Uogonek -37 KPX Agrave Uring -37 KPX Agrave V -74 KPX Agrave W -74 KPX Agrave Y -55 KPX Agrave Yacute -55 KPX Agrave Ydieresis -55 KPX Agrave quotedblright -125 KPX Agrave quoteright -125 KPX Agrave u -18 KPX Agrave uacute -18 KPX Agrave ucircumflex -18 KPX Agrave udieresis -18 KPX Agrave ugrave -18 KPX Agrave uhungarumlaut -18 KPX Agrave umacron -18 KPX Agrave uogonek -18 KPX Agrave uring -18 KPX Agrave v -18 KPX Agrave w -18 KPX Agrave y -55 KPX Agrave yacute -55 KPX Agrave ydieresis -55 KPX Amacron C -18 KPX Amacron Cacute -18 KPX Amacron Ccaron -18 KPX Amacron Ccedilla -18 KPX Amacron G -18 KPX Amacron Gbreve -18 KPX Amacron Gcommaaccent -18 KPX Amacron O -18 KPX Amacron Oacute -18 KPX Amacron Ocircumflex -18 KPX Amacron Odieresis -18 KPX Amacron Ograve -18 KPX Amacron Ohungarumlaut -18 KPX Amacron Omacron -18 KPX Amacron Oslash -18 KPX Amacron Otilde -18 KPX Amacron Q -18 KPX Amacron T -30 KPX Amacron Tcaron -30 KPX Amacron Tcommaaccent -30 KPX Amacron U -37 KPX Amacron Uacute -37 KPX Amacron Ucircumflex -37 KPX Amacron Udieresis -37 KPX Amacron Ugrave -37 KPX Amacron Uhungarumlaut -37 KPX Amacron Umacron -37 KPX Amacron Uogonek -37 KPX Amacron Uring -37 KPX Amacron V -74 KPX Amacron W -74 KPX Amacron Y -55 KPX Amacron Yacute -55 KPX Amacron Ydieresis -55 KPX Amacron quotedblright -125 KPX Amacron quoteright -125 KPX Amacron u -18 KPX Amacron uacute -18 KPX Amacron ucircumflex -18 KPX Amacron udieresis -18 KPX Amacron ugrave -18 KPX Amacron uhungarumlaut -18 KPX Amacron umacron -18 KPX Amacron uogonek -18 KPX Amacron uring -18 KPX Amacron v -18 KPX Amacron w -18 KPX Amacron y -55 KPX Amacron yacute -55 KPX Amacron ydieresis -55 KPX Aogonek C -18 KPX Aogonek Cacute -18 KPX Aogonek Ccaron -18 KPX Aogonek Ccedilla -18 KPX Aogonek G -18 KPX Aogonek Gbreve -18 KPX Aogonek Gcommaaccent -18 KPX Aogonek O -18 KPX Aogonek Oacute -18 KPX Aogonek Ocircumflex -18 KPX Aogonek Odieresis -18 KPX Aogonek Ograve -18 KPX Aogonek Ohungarumlaut -18 KPX Aogonek Omacron -18 KPX Aogonek Oslash -18 KPX Aogonek Otilde -18 KPX Aogonek Q -18 KPX Aogonek T -30 KPX Aogonek Tcaron -30 KPX Aogonek Tcommaaccent -30 KPX Aogonek U -37 KPX Aogonek Uacute -37 KPX Aogonek Ucircumflex -37 KPX Aogonek Udieresis -37 KPX Aogonek Ugrave -37 KPX Aogonek Uhungarumlaut -37 KPX Aogonek Umacron -37 KPX Aogonek Uogonek -37 KPX Aogonek Uring -37 KPX Aogonek V -74 KPX Aogonek W -74 KPX Aogonek Y -55 KPX Aogonek Yacute -55 KPX Aogonek Ydieresis -55 KPX Aogonek quotedblright -125 KPX Aogonek quoteright -125 KPX Aogonek u -18 KPX Aogonek uacute -18 KPX Aogonek ucircumflex -18 KPX Aogonek udieresis -18 KPX Aogonek ugrave -18 KPX Aogonek uhungarumlaut -18 KPX Aogonek umacron -18 KPX Aogonek uogonek -18 KPX Aogonek uring -18 KPX Aogonek v -18 KPX Aogonek w -18 KPX Aring C -18 KPX Aring Cacute -18 KPX Aring Ccaron -18 KPX Aring Ccedilla -18 KPX Aring G -18 KPX Aring Gbreve -18 KPX Aring Gcommaaccent -18 KPX Aring O -18 KPX Aring Oacute -18 KPX Aring Ocircumflex -18 KPX Aring Odieresis -18 KPX Aring Ograve -18 KPX Aring Ohungarumlaut -18 KPX Aring Omacron -18 KPX Aring Oslash -18 KPX Aring Otilde -18 KPX Aring Q -18 KPX Aring T -30 KPX Aring Tcaron -30 KPX Aring Tcommaaccent -30 KPX Aring U -37 KPX Aring Uacute -37 KPX Aring Ucircumflex -37 KPX Aring Udieresis -37 KPX Aring Ugrave -37 KPX Aring Uhungarumlaut -37 KPX Aring Umacron -37 KPX Aring Uogonek -37 KPX Aring Uring -37 KPX Aring V -74 KPX Aring W -74 KPX Aring Y -55 KPX Aring Yacute -55 KPX Aring Ydieresis -55 KPX Aring quotedblright -125 KPX Aring quoteright -125 KPX Aring u -18 KPX Aring uacute -18 KPX Aring ucircumflex -18 KPX Aring udieresis -18 KPX Aring ugrave -18 KPX Aring uhungarumlaut -18 KPX Aring umacron -18 KPX Aring uogonek -18 KPX Aring uring -18 KPX Aring v -18 KPX Aring w -18 KPX Aring y -55 KPX Aring yacute -55 KPX Aring ydieresis -55 KPX Atilde C -18 KPX Atilde Cacute -18 KPX Atilde Ccaron -18 KPX Atilde Ccedilla -18 KPX Atilde G -18 KPX Atilde Gbreve -18 KPX Atilde Gcommaaccent -18 KPX Atilde O -18 KPX Atilde Oacute -18 KPX Atilde Ocircumflex -18 KPX Atilde Odieresis -18 KPX Atilde Ograve -18 KPX Atilde Ohungarumlaut -18 KPX Atilde Omacron -18 KPX Atilde Oslash -18 KPX Atilde Otilde -18 KPX Atilde Q -18 KPX Atilde T -30 KPX Atilde Tcaron -30 KPX Atilde Tcommaaccent -30 KPX Atilde U -37 KPX Atilde Uacute -37 KPX Atilde Ucircumflex -37 KPX Atilde Udieresis -37 KPX Atilde Ugrave -37 KPX Atilde Uhungarumlaut -37 KPX Atilde Umacron -37 KPX Atilde Uogonek -37 KPX Atilde Uring -37 KPX Atilde V -74 KPX Atilde W -74 KPX Atilde Y -55 KPX Atilde Yacute -55 KPX Atilde Ydieresis -55 KPX Atilde quotedblright -125 KPX Atilde quoteright -125 KPX Atilde u -18 KPX Atilde uacute -18 KPX Atilde ucircumflex -18 KPX Atilde udieresis -18 KPX Atilde ugrave -18 KPX Atilde uhungarumlaut -18 KPX Atilde umacron -18 KPX Atilde uogonek -18 KPX Atilde uring -18 KPX Atilde v -18 KPX Atilde w -18 KPX Atilde y -55 KPX Atilde yacute -55 KPX Atilde ydieresis -55 KPX B comma -50 KPX B period -50 KPX C comma -50 KPX C period -50 KPX Cacute comma -50 KPX Cacute period -50 KPX Ccaron comma -50 KPX Ccaron period -50 KPX Ccedilla comma -50 KPX Ccedilla period -50 KPX D V -18 KPX D W -18 KPX D Y -18 KPX D Yacute -18 KPX D Ydieresis -18 KPX D comma -50 KPX D period -50 KPX Dcaron V -18 KPX Dcaron W -18 KPX Dcaron Y -18 KPX Dcaron Yacute -18 KPX Dcaron Ydieresis -18 KPX Dcaron comma -50 KPX Dcaron period -50 KPX Dcroat V -18 KPX Dcroat W -18 KPX Dcroat Y -18 KPX Dcroat Yacute -18 KPX Dcroat Ydieresis -18 KPX Dcroat comma -50 KPX Dcroat period -50 KPX F A -35 KPX F Aacute -35 KPX F Abreve -35 KPX F Acircumflex -35 KPX F Adieresis -35 KPX F Agrave -35 KPX F Amacron -35 KPX F Aogonek -35 KPX F Aring -35 KPX F Atilde -35 KPX F a -55 KPX F aacute -55 KPX F abreve -55 KPX F acircumflex -55 KPX F adieresis -55 KPX F agrave -55 KPX F amacron -55 KPX F aogonek -55 KPX F aring -55 KPX F atilde -55 KPX F comma -125 KPX F e -55 KPX F eacute -55 KPX F ecaron -55 KPX F ecircumflex -55 KPX F edieresis -55 KPX F edotaccent -55 KPX F egrave -55 KPX F emacron -55 KPX F eogonek -55 KPX F i -10 KPX F iacute -10 KPX F icircumflex -10 KPX F idieresis -10 KPX F igrave -10 KPX F imacron -10 KPX F iogonek -10 KPX F o -55 KPX F oacute -55 KPX F ocircumflex -55 KPX F odieresis -55 KPX F ograve -55 KPX F ohungarumlaut -55 KPX F omacron -55 KPX F oslash -55 KPX F otilde -55 KPX F period -125 KPX F r -55 KPX F racute -55 KPX F rcaron -55 KPX F rcommaaccent -55 KPX G comma -50 KPX G period -50 KPX Gbreve comma -50 KPX Gbreve period -50 KPX Gcommaaccent comma -50 KPX Gcommaaccent period -50 KPX J A -18 KPX J Aacute -18 KPX J Abreve -18 KPX J Acircumflex -18 KPX J Adieresis -18 KPX J Agrave -18 KPX J Amacron -18 KPX J Aogonek -18 KPX J Aring -18 KPX J Atilde -18 KPX J a -37 KPX J aacute -37 KPX J abreve -37 KPX J acircumflex -37 KPX J adieresis -37 KPX J agrave -37 KPX J amacron -37 KPX J aogonek -37 KPX J aring -37 KPX J atilde -37 KPX J comma -100 KPX J e -37 KPX J eacute -37 KPX J ecaron -37 KPX J ecircumflex -37 KPX J edieresis -37 KPX J edotaccent -37 KPX J egrave -37 KPX J emacron -37 KPX J eogonek -37 KPX J o -37 KPX J oacute -37 KPX J ocircumflex -37 KPX J odieresis -37 KPX J ograve -37 KPX J ohungarumlaut -37 KPX J omacron -37 KPX J oslash -37 KPX J otilde -37 KPX J period -100 KPX J u -18 KPX J uacute -18 KPX J ucircumflex -18 KPX J udieresis -18 KPX J ugrave -18 KPX J uhungarumlaut -18 KPX J umacron -18 KPX J uogonek -18 KPX J uring -18 KPX L T -100 KPX L Tcaron -100 KPX L Tcommaaccent -100 KPX L V -100 KPX L W -100 KPX L Y -100 KPX L Yacute -100 KPX L Ydieresis -100 KPX L quotedblright -125 KPX L quoteright -125 KPX L y -50 KPX L yacute -50 KPX L ydieresis -50 KPX Lacute T -100 KPX Lacute Tcaron -100 KPX Lacute Tcommaaccent -100 KPX Lacute V -100 KPX Lacute W -100 KPX Lacute Y -100 KPX Lacute Yacute -100 KPX Lacute Ydieresis -100 KPX Lacute quotedblright -125 KPX Lacute quoteright -125 KPX Lacute y -50 KPX Lacute yacute -50 KPX Lacute ydieresis -50 KPX Lcommaaccent T -100 KPX Lcommaaccent Tcaron -100 KPX Lcommaaccent Tcommaaccent -100 KPX Lcommaaccent V -100 KPX Lcommaaccent W -100 KPX Lcommaaccent Y -100 KPX Lcommaaccent Yacute -100 KPX Lcommaaccent Ydieresis -100 KPX Lcommaaccent quotedblright -125 KPX Lcommaaccent quoteright -125 KPX Lcommaaccent y -50 KPX Lcommaaccent yacute -50 KPX Lcommaaccent ydieresis -50 KPX Lslash T -100 KPX Lslash Tcaron -100 KPX Lslash Tcommaaccent -100 KPX Lslash V -100 KPX Lslash W -100 KPX Lslash Y -100 KPX Lslash Yacute -100 KPX Lslash Ydieresis -100 KPX Lslash quotedblright -125 KPX Lslash quoteright -125 KPX Lslash y -50 KPX Lslash yacute -50 KPX Lslash ydieresis -50 KPX N comma -60 KPX N period -60 KPX Nacute comma -60 KPX Nacute period -60 KPX Ncaron comma -60 KPX Ncaron period -60 KPX Ncommaaccent comma -60 KPX Ncommaaccent period -60 KPX Ntilde comma -60 KPX Ntilde period -60 KPX O T 18 KPX O Tcaron 18 KPX O Tcommaaccent 18 KPX O V -18 KPX O X -18 KPX O Y -18 KPX O Yacute -18 KPX O Ydieresis -18 KPX O comma -50 KPX O period -50 KPX Oacute T 18 KPX Oacute Tcaron 18 KPX Oacute Tcommaaccent 18 KPX Oacute V -18 KPX Oacute X -18 KPX Oacute Y -18 KPX Oacute Yacute -18 KPX Oacute Ydieresis -18 KPX Oacute comma -50 KPX Oacute period -50 KPX Ocircumflex T 18 KPX Ocircumflex Tcaron 18 KPX Ocircumflex Tcommaaccent 18 KPX Ocircumflex V -18 KPX Ocircumflex X -18 KPX Ocircumflex Y -18 KPX Ocircumflex Yacute -18 KPX Ocircumflex Ydieresis -18 KPX Ocircumflex comma -50 KPX Ocircumflex period -50 KPX Odieresis T 18 KPX Odieresis Tcaron 18 KPX Odieresis Tcommaaccent 18 KPX Odieresis V -18 KPX Odieresis X -18 KPX Odieresis Y -18 KPX Odieresis Yacute -18 KPX Odieresis Ydieresis -18 KPX Odieresis comma -50 KPX Odieresis period -50 KPX Ograve T 18 KPX Ograve Tcaron 18 KPX Ograve Tcommaaccent 18 KPX Ograve V -18 KPX Ograve X -18 KPX Ograve Y -18 KPX Ograve Yacute -18 KPX Ograve Ydieresis -18 KPX Ograve comma -50 KPX Ograve period -50 KPX Ohungarumlaut T 18 KPX Ohungarumlaut Tcaron 18 KPX Ohungarumlaut Tcommaaccent 18 KPX Ohungarumlaut V -18 KPX Ohungarumlaut X -18 KPX Ohungarumlaut Y -18 KPX Ohungarumlaut Yacute -18 KPX Ohungarumlaut Ydieresis -18 KPX Ohungarumlaut comma -50 KPX Ohungarumlaut period -50 KPX Omacron T 18 KPX Omacron Tcaron 18 KPX Omacron Tcommaaccent 18 KPX Omacron V -18 KPX Omacron X -18 KPX Omacron Y -18 KPX Omacron Yacute -18 KPX Omacron Ydieresis -18 KPX Omacron comma -50 KPX Omacron period -50 KPX Oslash T 18 KPX Oslash Tcaron 18 KPX Oslash Tcommaaccent 18 KPX Oslash V -18 KPX Oslash X -18 KPX Oslash Y -18 KPX Oslash Yacute -18 KPX Oslash Ydieresis -18 KPX Oslash comma -50 KPX Oslash period -50 KPX Otilde T 18 KPX Otilde Tcaron 18 KPX Otilde Tcommaaccent 18 KPX Otilde V -18 KPX Otilde X -18 KPX Otilde Y -18 KPX Otilde Yacute -18 KPX Otilde Ydieresis -18 KPX Otilde comma -50 KPX Otilde period -50 KPX P A -50 KPX P Aacute -50 KPX P Abreve -50 KPX P Acircumflex -50 KPX P Adieresis -50 KPX P Agrave -50 KPX P Amacron -50 KPX P Aogonek -50 KPX P Aring -50 KPX P Atilde -50 KPX P a -55 KPX P aacute -55 KPX P abreve -55 KPX P acircumflex -55 KPX P adieresis -55 KPX P agrave -55 KPX P amacron -55 KPX P aogonek -55 KPX P aring -55 KPX P atilde -55 KPX P comma -125 KPX P e -55 KPX P eacute -55 KPX P ecaron -55 KPX P ecircumflex -55 KPX P edieresis -55 KPX P edotaccent -55 KPX P egrave -55 KPX P emacron -55 KPX P eogonek -55 KPX P o -55 KPX P oacute -55 KPX P ocircumflex -55 KPX P odieresis -55 KPX P ograve -55 KPX P ohungarumlaut -55 KPX P omacron -55 KPX P oslash -55 KPX P otilde -55 KPX P period -125 KPX Q comma -20 KPX Q period -20 KPX R U -18 KPX R Uacute -18 KPX R Ucircumflex -18 KPX R Udieresis -18 KPX R Ugrave -18 KPX R Uhungarumlaut -18 KPX R Umacron -18 KPX R Uogonek -18 KPX R Uring -18 KPX R V -18 KPX R W -18 KPX R Y -18 KPX R Yacute -18 KPX R Ydieresis -18 KPX Racute U -18 KPX Racute Uacute -18 KPX Racute Ucircumflex -18 KPX Racute Udieresis -18 KPX Racute Ugrave -18 KPX Racute Uhungarumlaut -18 KPX Racute Umacron -18 KPX Racute Uogonek -18 KPX Racute Uring -18 KPX Racute V -18 KPX Racute W -18 KPX Racute Y -18 KPX Racute Yacute -18 KPX Racute Ydieresis -18 KPX Rcaron U -18 KPX Rcaron Uacute -18 KPX Rcaron Ucircumflex -18 KPX Rcaron Udieresis -18 KPX Rcaron Ugrave -18 KPX Rcaron Uhungarumlaut -18 KPX Rcaron Umacron -18 KPX Rcaron Uogonek -18 KPX Rcaron Uring -18 KPX Rcaron V -18 KPX Rcaron W -18 KPX Rcaron Y -18 KPX Rcaron Yacute -18 KPX Rcaron Ydieresis -18 KPX Rcommaaccent U -18 KPX Rcommaaccent Uacute -18 KPX Rcommaaccent Ucircumflex -18 KPX Rcommaaccent Udieresis -18 KPX Rcommaaccent Ugrave -18 KPX Rcommaaccent Uhungarumlaut -18 KPX Rcommaaccent Umacron -18 KPX Rcommaaccent Uogonek -18 KPX Rcommaaccent Uring -18 KPX Rcommaaccent V -18 KPX Rcommaaccent W -18 KPX Rcommaaccent Y -18 KPX Rcommaaccent Yacute -18 KPX Rcommaaccent Ydieresis -18 KPX S comma -50 KPX S period -50 KPX Sacute comma -50 KPX Sacute period -50 KPX Scaron comma -50 KPX Scaron period -50 KPX Scedilla comma -50 KPX Scedilla period -50 KPX Scommaaccent comma -50 KPX Scommaaccent period -50 KPX T O 18 KPX T Oacute 18 KPX T Ocircumflex 18 KPX T Odieresis 18 KPX T Ograve 18 KPX T Ohungarumlaut 18 KPX T Omacron 18 KPX T Oslash 18 KPX T Otilde 18 KPX T a -74 KPX T aacute -74 KPX T abreve -74 KPX T acircumflex -74 KPX T adieresis -74 KPX T agrave -74 KPX T amacron -74 KPX T aogonek -74 KPX T aring -74 KPX T atilde -74 KPX T colon -50 KPX T comma -100 KPX T e -74 KPX T eacute -74 KPX T ecaron -34 KPX T ecircumflex -34 KPX T edieresis -34 KPX T edotaccent -74 KPX T egrave -34 KPX T emacron -34 KPX T eogonek -74 KPX T h -25 KPX T hyphen -100 KPX T i -18 KPX T iacute -18 KPX T icircumflex -18 KPX T iogonek -18 KPX T o -74 KPX T oacute -74 KPX T ocircumflex -74 KPX T odieresis -34 KPX T ograve -34 KPX T ohungarumlaut -34 KPX T omacron -34 KPX T oslash -74 KPX T otilde -34 KPX T period -100 KPX T r -50 KPX T racute -50 KPX T rcaron -50 KPX T rcommaaccent -50 KPX T semicolon -50 KPX T u -50 KPX T uacute -50 KPX T ucircumflex -50 KPX T udieresis -50 KPX T ugrave -50 KPX T uhungarumlaut -50 KPX T umacron -50 KPX T uogonek -50 KPX T uring -50 KPX T w -50 KPX T y -50 KPX T yacute -50 KPX T ydieresis -50 KPX Tcaron O 18 KPX Tcaron Oacute 18 KPX Tcaron Ocircumflex 18 KPX Tcaron Odieresis 18 KPX Tcaron Ograve 18 KPX Tcaron Ohungarumlaut 18 KPX Tcaron Omacron 18 KPX Tcaron Oslash 18 KPX Tcaron Otilde 18 KPX Tcaron a -74 KPX Tcaron aacute -74 KPX Tcaron abreve -74 KPX Tcaron acircumflex -74 KPX Tcaron adieresis -74 KPX Tcaron agrave -74 KPX Tcaron amacron -74 KPX Tcaron aogonek -74 KPX Tcaron aring -74 KPX Tcaron atilde -74 KPX Tcaron colon -50 KPX Tcaron comma -100 KPX Tcaron e -74 KPX Tcaron eacute -74 KPX Tcaron ecaron -34 KPX Tcaron ecircumflex -34 KPX Tcaron edieresis -34 KPX Tcaron edotaccent -74 KPX Tcaron egrave -34 KPX Tcaron emacron -34 KPX Tcaron eogonek -74 KPX Tcaron h -25 KPX Tcaron hyphen -100 KPX Tcaron i -18 KPX Tcaron iacute -18 KPX Tcaron icircumflex -18 KPX Tcaron iogonek -18 KPX Tcaron o -74 KPX Tcaron oacute -74 KPX Tcaron ocircumflex -74 KPX Tcaron odieresis -34 KPX Tcaron ograve -34 KPX Tcaron ohungarumlaut -34 KPX Tcaron omacron -34 KPX Tcaron oslash -74 KPX Tcaron otilde -34 KPX Tcaron period -100 KPX Tcaron r -50 KPX Tcaron racute -50 KPX Tcaron rcaron -50 KPX Tcaron rcommaaccent -50 KPX Tcaron semicolon -50 KPX Tcaron u -50 KPX Tcaron uacute -50 KPX Tcaron ucircumflex -50 KPX Tcaron udieresis -50 KPX Tcaron ugrave -50 KPX Tcaron uhungarumlaut -50 KPX Tcaron umacron -50 KPX Tcaron uogonek -50 KPX Tcaron uring -50 KPX Tcaron w -50 KPX Tcaron y -50 KPX Tcaron yacute -50 KPX Tcaron ydieresis -50 KPX Tcommaaccent O 18 KPX Tcommaaccent Oacute 18 KPX Tcommaaccent Ocircumflex 18 KPX Tcommaaccent Odieresis 18 KPX Tcommaaccent Ograve 18 KPX Tcommaaccent Ohungarumlaut 18 KPX Tcommaaccent Omacron 18 KPX Tcommaaccent Oslash 18 KPX Tcommaaccent Otilde 18 KPX Tcommaaccent a -74 KPX Tcommaaccent aacute -74 KPX Tcommaaccent abreve -74 KPX Tcommaaccent acircumflex -74 KPX Tcommaaccent adieresis -74 KPX Tcommaaccent agrave -74 KPX Tcommaaccent amacron -74 KPX Tcommaaccent aogonek -74 KPX Tcommaaccent aring -74 KPX Tcommaaccent atilde -74 KPX Tcommaaccent colon -50 KPX Tcommaaccent comma -100 KPX Tcommaaccent e -74 KPX Tcommaaccent eacute -74 KPX Tcommaaccent ecaron -34 KPX Tcommaaccent ecircumflex -34 KPX Tcommaaccent edieresis -34 KPX Tcommaaccent edotaccent -74 KPX Tcommaaccent egrave -34 KPX Tcommaaccent emacron -34 KPX Tcommaaccent eogonek -74 KPX Tcommaaccent h -25 KPX Tcommaaccent hyphen -100 KPX Tcommaaccent i -18 KPX Tcommaaccent iacute -18 KPX Tcommaaccent icircumflex -18 KPX Tcommaaccent iogonek -18 KPX Tcommaaccent o -74 KPX Tcommaaccent oacute -74 KPX Tcommaaccent ocircumflex -74 KPX Tcommaaccent odieresis -34 KPX Tcommaaccent ograve -34 KPX Tcommaaccent ohungarumlaut -34 KPX Tcommaaccent omacron -34 KPX Tcommaaccent oslash -74 KPX Tcommaaccent otilde -34 KPX Tcommaaccent period -100 KPX Tcommaaccent r -50 KPX Tcommaaccent racute -50 KPX Tcommaaccent rcaron -50 KPX Tcommaaccent rcommaaccent -50 KPX Tcommaaccent semicolon -50 KPX Tcommaaccent u -50 KPX Tcommaaccent uacute -50 KPX Tcommaaccent ucircumflex -50 KPX Tcommaaccent udieresis -50 KPX Tcommaaccent ugrave -50 KPX Tcommaaccent uhungarumlaut -50 KPX Tcommaaccent umacron -50 KPX Tcommaaccent uogonek -50 KPX Tcommaaccent uring -50 KPX Tcommaaccent w -50 KPX Tcommaaccent y -50 KPX Tcommaaccent yacute -50 KPX Tcommaaccent ydieresis -50 KPX U A -18 KPX U Aacute -18 KPX U Abreve -18 KPX U Acircumflex -18 KPX U Adieresis -18 KPX U Agrave -18 KPX U Amacron -18 KPX U Aogonek -18 KPX U Aring -18 KPX U Atilde -18 KPX U comma -100 KPX U period -100 KPX Uacute A -18 KPX Uacute Aacute -18 KPX Uacute Abreve -18 KPX Uacute Acircumflex -18 KPX Uacute Adieresis -18 KPX Uacute Agrave -18 KPX Uacute Amacron -18 KPX Uacute Aogonek -18 KPX Uacute Aring -18 KPX Uacute Atilde -18 KPX Uacute comma -100 KPX Uacute period -100 KPX Ucircumflex A -18 KPX Ucircumflex Aacute -18 KPX Ucircumflex Abreve -18 KPX Ucircumflex Acircumflex -18 KPX Ucircumflex Adieresis -18 KPX Ucircumflex Agrave -18 KPX Ucircumflex Amacron -18 KPX Ucircumflex Aogonek -18 KPX Ucircumflex Aring -18 KPX Ucircumflex Atilde -18 KPX Ucircumflex comma -100 KPX Ucircumflex period -100 KPX Udieresis A -18 KPX Udieresis Aacute -18 KPX Udieresis Abreve -18 KPX Udieresis Acircumflex -18 KPX Udieresis Adieresis -18 KPX Udieresis Agrave -18 KPX Udieresis Amacron -18 KPX Udieresis Aogonek -18 KPX Udieresis Aring -18 KPX Udieresis Atilde -18 KPX Udieresis comma -100 KPX Udieresis period -100 KPX Ugrave A -18 KPX Ugrave Aacute -18 KPX Ugrave Abreve -18 KPX Ugrave Acircumflex -18 KPX Ugrave Adieresis -18 KPX Ugrave Agrave -18 KPX Ugrave Amacron -18 KPX Ugrave Aogonek -18 KPX Ugrave Aring -18 KPX Ugrave Atilde -18 KPX Ugrave comma -100 KPX Ugrave period -100 KPX Uhungarumlaut A -18 KPX Uhungarumlaut Aacute -18 KPX Uhungarumlaut Abreve -18 KPX Uhungarumlaut Acircumflex -18 KPX Uhungarumlaut Adieresis -18 KPX Uhungarumlaut Agrave -18 KPX Uhungarumlaut Amacron -18 KPX Uhungarumlaut Aogonek -18 KPX Uhungarumlaut Aring -18 KPX Uhungarumlaut Atilde -18 KPX Uhungarumlaut comma -100 KPX Uhungarumlaut period -100 KPX Umacron A -18 KPX Umacron Aacute -18 KPX Umacron Abreve -18 KPX Umacron Acircumflex -18 KPX Umacron Adieresis -18 KPX Umacron Agrave -18 KPX Umacron Amacron -18 KPX Umacron Aogonek -18 KPX Umacron Aring -18 KPX Umacron Atilde -18 KPX Umacron comma -100 KPX Umacron period -100 KPX Uogonek A -18 KPX Uogonek Aacute -18 KPX Uogonek Abreve -18 KPX Uogonek Acircumflex -18 KPX Uogonek Adieresis -18 KPX Uogonek Agrave -18 KPX Uogonek Amacron -18 KPX Uogonek Aogonek -18 KPX Uogonek Aring -18 KPX Uogonek Atilde -18 KPX Uogonek comma -100 KPX Uogonek period -100 KPX Uring A -18 KPX Uring Aacute -18 KPX Uring Abreve -18 KPX Uring Acircumflex -18 KPX Uring Adieresis -18 KPX Uring Agrave -18 KPX Uring Amacron -18 KPX Uring Aogonek -18 KPX Uring Aring -18 KPX Uring Atilde -18 KPX Uring comma -100 KPX Uring period -100 KPX V A -37 KPX V Aacute -37 KPX V Abreve -37 KPX V Acircumflex -37 KPX V Adieresis -37 KPX V Agrave -37 KPX V Amacron -37 KPX V Aogonek -37 KPX V Aring -37 KPX V Atilde -37 KPX V a -75 KPX V aacute -75 KPX V abreve -75 KPX V acircumflex -75 KPX V adieresis -75 KPX V agrave -75 KPX V amacron -75 KPX V aogonek -75 KPX V aring -75 KPX V atilde -75 KPX V colon -75 KPX V comma -100 KPX V e -75 KPX V eacute -75 KPX V ecaron -35 KPX V ecircumflex -35 KPX V edieresis -35 KPX V edotaccent -35 KPX V egrave -35 KPX V emacron -35 KPX V eogonek -75 KPX V hyphen -100 KPX V i -50 KPX V iacute -50 KPX V icircumflex -10 KPX V idieresis -10 KPX V igrave -10 KPX V imacron -10 KPX V iogonek -50 KPX V o -75 KPX V oacute -75 KPX V ocircumflex -75 KPX V odieresis -35 KPX V ograve -35 KPX V ohungarumlaut -75 KPX V omacron -35 KPX V oslash -75 KPX V otilde -35 KPX V period -100 KPX V semicolon -75 KPX V u -75 KPX V uacute -75 KPX V ucircumflex -75 KPX V udieresis -75 KPX V ugrave -75 KPX V uhungarumlaut -75 KPX V umacron -75 KPX V uogonek -75 KPX V uring -75 KPX W A -55 KPX W Aacute -55 KPX W Abreve -55 KPX W Acircumflex -55 KPX W Adieresis -55 KPX W Agrave -55 KPX W Amacron -55 KPX W Aogonek -55 KPX W Aring -55 KPX W Atilde -55 KPX W a -55 KPX W aacute -55 KPX W abreve -55 KPX W acircumflex -55 KPX W adieresis -55 KPX W agrave -55 KPX W amacron -55 KPX W aogonek -55 KPX W aring -55 KPX W atilde -55 KPX W colon -75 KPX W comma -100 KPX W e -55 KPX W eacute -55 KPX W ecaron -55 KPX W ecircumflex -55 KPX W edieresis -35 KPX W edotaccent -55 KPX W egrave -35 KPX W emacron -55 KPX W eogonek -55 KPX W h -20 KPX W hyphen -75 KPX W i -20 KPX W iacute -20 KPX W icircumflex -20 KPX W iogonek -20 KPX W o -55 KPX W oacute -55 KPX W ocircumflex -55 KPX W odieresis -55 KPX W ograve -55 KPX W ohungarumlaut -55 KPX W omacron -55 KPX W oslash -55 KPX W otilde -55 KPX W period -100 KPX W semicolon -75 KPX W u -55 KPX W uacute -55 KPX W ucircumflex -55 KPX W udieresis -55 KPX W ugrave -55 KPX W uhungarumlaut -55 KPX W umacron -55 KPX W uogonek -55 KPX W uring -55 KPX W y -55 KPX W yacute -55 KPX W ydieresis -55 KPX Y A -55 KPX Y Aacute -55 KPX Y Abreve -55 KPX Y Acircumflex -55 KPX Y Adieresis -55 KPX Y Agrave -55 KPX Y Amacron -55 KPX Y Aogonek -55 KPX Y Aring -55 KPX Y Atilde -55 KPX Y a -100 KPX Y aacute -100 KPX Y abreve -60 KPX Y acircumflex -100 KPX Y adieresis -60 KPX Y agrave -60 KPX Y amacron -100 KPX Y aogonek -100 KPX Y aring -100 KPX Y atilde -100 KPX Y colon -75 KPX Y comma -100 KPX Y e -100 KPX Y eacute -100 KPX Y ecaron -60 KPX Y ecircumflex -60 KPX Y edieresis -60 KPX Y edotaccent -100 KPX Y egrave -60 KPX Y emacron -60 KPX Y eogonek -100 KPX Y hyphen -100 KPX Y i -25 KPX Y iacute -25 KPX Y iogonek -25 KPX Y o -100 KPX Y oacute -100 KPX Y ocircumflex -100 KPX Y odieresis -60 KPX Y ograve -60 KPX Y ohungarumlaut -100 KPX Y omacron -60 KPX Y oslash -100 KPX Y otilde -60 KPX Y period -100 KPX Y semicolon -75 KPX Y u -100 KPX Y uacute -100 KPX Y ucircumflex -100 KPX Y udieresis -100 KPX Y ugrave -100 KPX Y uhungarumlaut -100 KPX Y umacron -100 KPX Y uogonek -100 KPX Y uring -100 KPX Yacute A -55 KPX Yacute Aacute -55 KPX Yacute Abreve -55 KPX Yacute Acircumflex -55 KPX Yacute Adieresis -55 KPX Yacute Agrave -55 KPX Yacute Amacron -55 KPX Yacute Aogonek -55 KPX Yacute Aring -55 KPX Yacute Atilde -55 KPX Yacute a -100 KPX Yacute aacute -100 KPX Yacute abreve -60 KPX Yacute acircumflex -100 KPX Yacute adieresis -60 KPX Yacute agrave -60 KPX Yacute amacron -60 KPX Yacute aogonek -100 KPX Yacute aring -100 KPX Yacute atilde -100 KPX Yacute colon -75 KPX Yacute comma -100 KPX Yacute e -100 KPX Yacute eacute -100 KPX Yacute ecaron -60 KPX Yacute ecircumflex -60 KPX Yacute edieresis -60 KPX Yacute edotaccent -100 KPX Yacute egrave -60 KPX Yacute emacron -60 KPX Yacute eogonek -100 KPX Yacute hyphen -100 KPX Yacute i -25 KPX Yacute iacute -25 KPX Yacute iogonek -25 KPX Yacute o -100 KPX Yacute oacute -100 KPX Yacute ocircumflex -60 KPX Yacute odieresis -60 KPX Yacute ograve -60 KPX Yacute ohungarumlaut -100 KPX Yacute omacron -60 KPX Yacute oslash -100 KPX Yacute otilde -60 KPX Yacute period -100 KPX Yacute semicolon -75 KPX Yacute u -100 KPX Yacute uacute -100 KPX Yacute ucircumflex -100 KPX Yacute udieresis -100 KPX Yacute ugrave -100 KPX Yacute uhungarumlaut -100 KPX Yacute umacron -100 KPX Yacute uogonek -100 KPX Yacute uring -100 KPX Ydieresis A -55 KPX Ydieresis Aacute -55 KPX Ydieresis Abreve -55 KPX Ydieresis Acircumflex -55 KPX Ydieresis Adieresis -55 KPX Ydieresis Agrave -55 KPX Ydieresis Amacron -55 KPX Ydieresis Aogonek -55 KPX Ydieresis Aring -55 KPX Ydieresis Atilde -55 KPX Ydieresis a -100 KPX Ydieresis aacute -100 KPX Ydieresis abreve -60 KPX Ydieresis acircumflex -100 KPX Ydieresis adieresis -60 KPX Ydieresis agrave -60 KPX Ydieresis amacron -100 KPX Ydieresis aogonek -100 KPX Ydieresis aring -100 KPX Ydieresis atilde -100 KPX Ydieresis colon -75 KPX Ydieresis comma -100 KPX Ydieresis e -100 KPX Ydieresis eacute -100 KPX Ydieresis ecaron -60 KPX Ydieresis ecircumflex -60 KPX Ydieresis edieresis -60 KPX Ydieresis edotaccent -100 KPX Ydieresis egrave -60 KPX Ydieresis emacron -60 KPX Ydieresis eogonek -100 KPX Ydieresis hyphen -100 KPX Ydieresis i -25 KPX Ydieresis iacute -25 KPX Ydieresis iogonek -25 KPX Ydieresis o -100 KPX Ydieresis oacute -100 KPX Ydieresis ocircumflex -100 KPX Ydieresis odieresis -60 KPX Ydieresis ograve -60 KPX Ydieresis ohungarumlaut -100 KPX Ydieresis omacron -60 KPX Ydieresis oslash -100 KPX Ydieresis otilde -60 KPX Ydieresis period -100 KPX Ydieresis semicolon -75 KPX Ydieresis u -100 KPX Ydieresis uacute -100 KPX Ydieresis ucircumflex -100 KPX Ydieresis udieresis -100 KPX Ydieresis ugrave -100 KPX Ydieresis uhungarumlaut -100 KPX Ydieresis umacron -100 KPX Ydieresis uogonek -100 KPX Ydieresis uring -100 KPX b b -10 KPX b comma -50 KPX b period -50 KPX c comma -50 KPX c h -18 KPX c k -18 KPX c kcommaaccent -18 KPX c period -50 KPX cacute comma -50 KPX cacute h -18 KPX cacute k -18 KPX cacute kcommaaccent -18 KPX cacute period -50 KPX ccaron comma -50 KPX ccaron h -18 KPX ccaron k -18 KPX ccaron kcommaaccent -18 KPX ccaron period -50 KPX ccedilla comma -50 KPX ccedilla h -18 KPX ccedilla k -18 KPX ccedilla kcommaaccent -18 KPX ccedilla period -50 KPX colon space -37 KPX comma quotedblright -37 KPX comma quoteright -37 KPX comma space -37 KPX e comma -37 KPX e period -37 KPX eacute comma -37 KPX eacute period -37 KPX ecaron comma -37 KPX ecaron period -37 KPX ecircumflex comma -37 KPX ecircumflex period -37 KPX edieresis comma -37 KPX edieresis period -37 KPX edotaccent comma -37 KPX edotaccent period -37 KPX egrave comma -37 KPX egrave period -37 KPX emacron comma -37 KPX emacron period -37 KPX eogonek comma -37 KPX eogonek period -37 KPX f comma -75 KPX f o -10 KPX f oacute -10 KPX f ocircumflex -10 KPX f odieresis -10 KPX f ograve -10 KPX f ohungarumlaut -10 KPX f omacron -10 KPX f oslash -10 KPX f otilde -10 KPX f period -75 KPX f quotedblright 75 KPX f quoteright 75 KPX g comma -50 KPX g period -50 KPX gbreve comma -50 KPX gbreve period -50 KPX gcommaaccent comma -50 KPX gcommaaccent period -50 KPX l y -10 KPX l yacute -10 KPX l ydieresis -10 KPX lacute y -10 KPX lacute yacute -10 KPX lacute ydieresis -10 KPX lcommaaccent y -10 KPX lcommaaccent yacute -10 KPX lcommaaccent ydieresis -10 KPX lslash y -10 KPX lslash yacute -10 KPX lslash ydieresis -10 KPX o comma -50 KPX o period -50 KPX oacute comma -50 KPX oacute period -50 KPX ocircumflex comma -50 KPX ocircumflex period -50 KPX odieresis comma -50 KPX odieresis period -50 KPX ograve comma -50 KPX ograve period -50 KPX ohungarumlaut comma -50 KPX ohungarumlaut period -50 KPX omacron comma -50 KPX omacron period -50 KPX oslash comma -50 KPX oslash period -50 KPX otilde comma -50 KPX otilde period -50 KPX p comma -50 KPX p period -50 KPX period quotedblright -37 KPX period quoteright -37 KPX period space -37 KPX quotedblleft A -75 KPX quotedblleft Aacute -75 KPX quotedblleft Abreve -75 KPX quotedblleft Acircumflex -75 KPX quotedblleft Adieresis -75 KPX quotedblleft Agrave -75 KPX quotedblleft Amacron -75 KPX quotedblleft Aogonek -75 KPX quotedblleft Aring -75 KPX quotedblleft Atilde -75 KPX quotedblright space -37 KPX quoteleft A -75 KPX quoteleft Aacute -75 KPX quoteleft Abreve -75 KPX quoteleft Acircumflex -75 KPX quoteleft Adieresis -75 KPX quoteleft Agrave -75 KPX quoteleft Amacron -75 KPX quoteleft Aogonek -75 KPX quoteleft Aring -75 KPX quoteleft Atilde -75 KPX quoteleft quoteleft -37 KPX quoteright d -37 KPX quoteright dcroat -37 KPX quoteright quoteright -37 KPX quoteright s -25 KPX quoteright sacute -25 KPX quoteright scaron -25 KPX quoteright scedilla -25 KPX quoteright scommaaccent -25 KPX r colon -25 KPX r comma -125 KPX r hyphen -75 KPX r k -18 KPX r kcommaaccent -18 KPX r period -125 KPX r s -10 KPX r sacute -10 KPX r scaron -10 KPX r scedilla -10 KPX r scommaaccent -10 KPX r semicolon -25 KPX racute colon -25 KPX racute comma -125 KPX racute hyphen -75 KPX racute k -18 KPX racute kcommaaccent -18 KPX racute period -125 KPX racute s -10 KPX racute sacute -10 KPX racute scaron -10 KPX racute scedilla -10 KPX racute scommaaccent -10 KPX racute semicolon -25 KPX rcaron colon -25 KPX rcaron comma -125 KPX rcaron hyphen -75 KPX rcaron k -18 KPX rcaron kcommaaccent -18 KPX rcaron period -125 KPX rcaron s -10 KPX rcaron sacute -10 KPX rcaron scaron -10 KPX rcaron scedilla -10 KPX rcaron scommaaccent -10 KPX rcaron semicolon -25 KPX rcommaaccent colon -25 KPX rcommaaccent comma -125 KPX rcommaaccent hyphen -75 KPX rcommaaccent k -18 KPX rcommaaccent kcommaaccent -18 KPX rcommaaccent period -125 KPX rcommaaccent s -10 KPX rcommaaccent sacute -10 KPX rcommaaccent scaron -10 KPX rcommaaccent scedilla -10 KPX rcommaaccent scommaaccent -10 KPX rcommaaccent semicolon -25 KPX s comma -50 KPX s period -50 KPX sacute comma -50 KPX sacute period -50 KPX scaron comma -50 KPX scaron period -50 KPX scedilla comma -50 KPX scedilla period -50 KPX scommaaccent comma -50 KPX scommaaccent period -50 KPX semicolon space -37 KPX space A -37 KPX space Aacute -37 KPX space Abreve -37 KPX space Acircumflex -37 KPX space Adieresis -37 KPX space Agrave -37 KPX space Amacron -37 KPX space Aogonek -37 KPX space Aring -37 KPX space Atilde -37 KPX space T -37 KPX space Tcaron -37 KPX space Tcommaaccent -37 KPX space V -37 KPX space W -37 KPX space Y -37 KPX space Yacute -37 KPX space Ydieresis -37 KPX space quotedblleft -37 KPX space quoteleft -37 KPX v comma -75 KPX v period -75 KPX w comma -75 KPX w period -75 KPX y comma -75 KPX y period -75 KPX yacute comma -75 KPX yacute period -75 KPX ydieresis comma -75 KPX ydieresis period -75 EndKernPairs EndKernData EndFontMetrics gle-graphics-4.2.4c/src/fonts/Adobe-Core35_AFMs-314/Times-Bold.afm0000664000000000000000000017527311405446017022541 0ustar rootrootStartFontMetrics 4.1 Comment Copyright (c) 1985, 1987, 1989, 1990, 1993, 1997 Adobe Systems Incorporated. All Rights Reserved. Comment Creation Date: Thu May 1 12:52:56 1997 Comment UniqueID 43065 Comment VMusage 41636 52661 FontName Times-Bold FullName Times Bold FamilyName Times Weight Bold ItalicAngle 0 IsFixedPitch false FontBBox -168 -218 1000 935 UnderlinePosition -100 UnderlineThickness 50 Version 002.000 Notice Copyright (c) 1985, 1987, 1989, 1990, 1993, 1997 Adobe Systems Incorporated. All Rights Reserved.Times is a trademark of Linotype-Hell AG and/or its subsidiaries. EncodingScheme AdobeStandardEncoding CapHeight 676 XHeight 461 Ascender 683 Descender -217 StdHW 44 StdVW 139 StartCharMetrics 314 C 32 ; WX 250 ; N space ; B 0 0 0 0 ; C 33 ; WX 333 ; N exclam ; B 81 -13 251 691 ; C 34 ; WX 555 ; N quotedbl ; B 83 404 472 691 ; C 35 ; WX 500 ; N numbersign ; B 4 0 496 700 ; C 36 ; WX 500 ; N dollar ; B 29 -99 472 750 ; C 37 ; WX 1000 ; N percent ; B 124 -14 877 692 ; C 38 ; WX 833 ; N ampersand ; B 62 -16 787 691 ; C 39 ; WX 333 ; N quoteright ; B 79 356 263 691 ; C 40 ; WX 333 ; N parenleft ; B 46 -168 306 694 ; C 41 ; WX 333 ; N parenright ; B 27 -168 287 694 ; C 42 ; WX 500 ; N asterisk ; B 56 255 447 691 ; C 43 ; WX 570 ; N plus ; B 33 0 537 506 ; C 44 ; WX 250 ; N comma ; B 39 -180 223 155 ; C 45 ; WX 333 ; N hyphen ; B 44 171 287 287 ; C 46 ; WX 250 ; N period ; B 41 -13 210 156 ; C 47 ; WX 278 ; N slash ; B -24 -19 302 691 ; C 48 ; WX 500 ; N zero ; B 24 -13 476 688 ; C 49 ; WX 500 ; N one ; B 65 0 442 688 ; C 50 ; WX 500 ; N two ; B 17 0 478 688 ; C 51 ; WX 500 ; N three ; B 16 -14 468 688 ; C 52 ; WX 500 ; N four ; B 19 0 475 688 ; C 53 ; WX 500 ; N five ; B 22 -8 470 676 ; C 54 ; WX 500 ; N six ; B 28 -13 475 688 ; C 55 ; WX 500 ; N seven ; B 17 0 477 676 ; C 56 ; WX 500 ; N eight ; B 28 -13 472 688 ; C 57 ; WX 500 ; N nine ; B 26 -13 473 688 ; C 58 ; WX 333 ; N colon ; B 82 -13 251 472 ; C 59 ; WX 333 ; N semicolon ; B 82 -180 266 472 ; C 60 ; WX 570 ; N less ; B 31 -8 539 514 ; C 61 ; WX 570 ; N equal ; B 33 107 537 399 ; C 62 ; WX 570 ; N greater ; B 31 -8 539 514 ; C 63 ; WX 500 ; N question ; B 57 -13 445 689 ; C 64 ; WX 930 ; N at ; B 108 -19 822 691 ; C 65 ; WX 722 ; N A ; B 9 0 689 690 ; C 66 ; WX 667 ; N B ; B 16 0 619 676 ; C 67 ; WX 722 ; N C ; B 49 -19 687 691 ; C 68 ; WX 722 ; N D ; B 14 0 690 676 ; C 69 ; WX 667 ; N E ; B 16 0 641 676 ; C 70 ; WX 611 ; N F ; B 16 0 583 676 ; C 71 ; WX 778 ; N G ; B 37 -19 755 691 ; C 72 ; WX 778 ; N H ; B 21 0 759 676 ; C 73 ; WX 389 ; N I ; B 20 0 370 676 ; C 74 ; WX 500 ; N J ; B 3 -96 479 676 ; C 75 ; WX 778 ; N K ; B 30 0 769 676 ; C 76 ; WX 667 ; N L ; B 19 0 638 676 ; C 77 ; WX 944 ; N M ; B 14 0 921 676 ; C 78 ; WX 722 ; N N ; B 16 -18 701 676 ; C 79 ; WX 778 ; N O ; B 35 -19 743 691 ; C 80 ; WX 611 ; N P ; B 16 0 600 676 ; C 81 ; WX 778 ; N Q ; B 35 -176 743 691 ; C 82 ; WX 722 ; N R ; B 26 0 715 676 ; C 83 ; WX 556 ; N S ; B 35 -19 513 692 ; C 84 ; WX 667 ; N T ; B 31 0 636 676 ; C 85 ; WX 722 ; N U ; B 16 -19 701 676 ; C 86 ; WX 722 ; N V ; B 16 -18 701 676 ; C 87 ; WX 1000 ; N W ; B 19 -15 981 676 ; C 88 ; WX 722 ; N X ; B 16 0 699 676 ; C 89 ; WX 722 ; N Y ; B 15 0 699 676 ; C 90 ; WX 667 ; N Z ; B 28 0 634 676 ; C 91 ; WX 333 ; N bracketleft ; B 67 -149 301 678 ; C 92 ; WX 278 ; N backslash ; B -25 -19 303 691 ; C 93 ; WX 333 ; N bracketright ; B 32 -149 266 678 ; C 94 ; WX 581 ; N asciicircum ; B 73 311 509 676 ; C 95 ; WX 500 ; N underscore ; B 0 -125 500 -75 ; C 96 ; WX 333 ; N quoteleft ; B 70 356 254 691 ; C 97 ; WX 500 ; N a ; B 25 -14 488 473 ; C 98 ; WX 556 ; N b ; B 17 -14 521 676 ; C 99 ; WX 444 ; N c ; B 25 -14 430 473 ; C 100 ; WX 556 ; N d ; B 25 -14 534 676 ; C 101 ; WX 444 ; N e ; B 25 -14 426 473 ; C 102 ; WX 333 ; N f ; B 14 0 389 691 ; L i fi ; L l fl ; C 103 ; WX 500 ; N g ; B 28 -206 483 473 ; C 104 ; WX 556 ; N h ; B 16 0 534 676 ; C 105 ; WX 278 ; N i ; B 16 0 255 691 ; C 106 ; WX 333 ; N j ; B -57 -203 263 691 ; C 107 ; WX 556 ; N k ; B 22 0 543 676 ; C 108 ; WX 278 ; N l ; B 16 0 255 676 ; C 109 ; WX 833 ; N m ; B 16 0 814 473 ; C 110 ; WX 556 ; N n ; B 21 0 539 473 ; C 111 ; WX 500 ; N o ; B 25 -14 476 473 ; C 112 ; WX 556 ; N p ; B 19 -205 524 473 ; C 113 ; WX 556 ; N q ; B 34 -205 536 473 ; C 114 ; WX 444 ; N r ; B 29 0 434 473 ; C 115 ; WX 389 ; N s ; B 25 -14 361 473 ; C 116 ; WX 333 ; N t ; B 20 -12 332 630 ; C 117 ; WX 556 ; N u ; B 16 -14 537 461 ; C 118 ; WX 500 ; N v ; B 21 -14 485 461 ; C 119 ; WX 722 ; N w ; B 23 -14 707 461 ; C 120 ; WX 500 ; N x ; B 12 0 484 461 ; C 121 ; WX 500 ; N y ; B 16 -205 480 461 ; C 122 ; WX 444 ; N z ; B 21 0 420 461 ; C 123 ; WX 394 ; N braceleft ; B 22 -175 340 698 ; C 124 ; WX 220 ; N bar ; B 66 -218 154 782 ; C 125 ; WX 394 ; N braceright ; B 54 -175 372 698 ; C 126 ; WX 520 ; N asciitilde ; B 29 173 491 333 ; C 161 ; WX 333 ; N exclamdown ; B 82 -203 252 501 ; C 162 ; WX 500 ; N cent ; B 53 -140 458 588 ; C 163 ; WX 500 ; N sterling ; B 21 -14 477 684 ; C 164 ; WX 167 ; N fraction ; B -168 -12 329 688 ; C 165 ; WX 500 ; N yen ; B -64 0 547 676 ; C 166 ; WX 500 ; N florin ; B 0 -155 498 706 ; C 167 ; WX 500 ; N section ; B 57 -132 443 691 ; C 168 ; WX 500 ; N currency ; B -26 61 526 613 ; C 169 ; WX 278 ; N quotesingle ; B 75 404 204 691 ; C 170 ; WX 500 ; N quotedblleft ; B 32 356 486 691 ; C 171 ; WX 500 ; N guillemotleft ; B 23 36 473 415 ; C 172 ; WX 333 ; N guilsinglleft ; B 51 36 305 415 ; C 173 ; WX 333 ; N guilsinglright ; B 28 36 282 415 ; C 174 ; WX 556 ; N fi ; B 14 0 536 691 ; C 175 ; WX 556 ; N fl ; B 14 0 536 691 ; C 177 ; WX 500 ; N endash ; B 0 181 500 271 ; C 178 ; WX 500 ; N dagger ; B 47 -134 453 691 ; C 179 ; WX 500 ; N daggerdbl ; B 45 -132 456 691 ; C 180 ; WX 250 ; N periodcentered ; B 41 248 210 417 ; C 182 ; WX 540 ; N paragraph ; B 0 -186 519 676 ; C 183 ; WX 350 ; N bullet ; B 35 198 315 478 ; C 184 ; WX 333 ; N quotesinglbase ; B 79 -180 263 155 ; C 185 ; WX 500 ; N quotedblbase ; B 14 -180 468 155 ; C 186 ; WX 500 ; N quotedblright ; B 14 356 468 691 ; C 187 ; WX 500 ; N guillemotright ; B 27 36 477 415 ; C 188 ; WX 1000 ; N ellipsis ; B 82 -13 917 156 ; C 189 ; WX 1000 ; N perthousand ; B 7 -29 995 706 ; C 191 ; WX 500 ; N questiondown ; B 55 -201 443 501 ; C 193 ; WX 333 ; N grave ; B 8 528 246 713 ; C 194 ; WX 333 ; N acute ; B 86 528 324 713 ; C 195 ; WX 333 ; N circumflex ; B -2 528 335 704 ; C 196 ; WX 333 ; N tilde ; B -16 547 349 674 ; C 197 ; WX 333 ; N macron ; B 1 565 331 637 ; C 198 ; WX 333 ; N breve ; B 15 528 318 691 ; C 199 ; WX 333 ; N dotaccent ; B 103 536 258 691 ; C 200 ; WX 333 ; N dieresis ; B -2 537 335 667 ; C 202 ; WX 333 ; N ring ; B 60 527 273 740 ; C 203 ; WX 333 ; N cedilla ; B 68 -218 294 0 ; C 205 ; WX 333 ; N hungarumlaut ; B -13 528 425 713 ; C 206 ; WX 333 ; N ogonek ; B 90 -193 319 24 ; C 207 ; WX 333 ; N caron ; B -2 528 335 704 ; C 208 ; WX 1000 ; N emdash ; B 0 181 1000 271 ; C 225 ; WX 1000 ; N AE ; B 4 0 951 676 ; C 227 ; WX 300 ; N ordfeminine ; B -1 397 301 688 ; C 232 ; WX 667 ; N Lslash ; B 19 0 638 676 ; C 233 ; WX 778 ; N Oslash ; B 35 -74 743 737 ; C 234 ; WX 1000 ; N OE ; B 22 -5 981 684 ; C 235 ; WX 330 ; N ordmasculine ; B 18 397 312 688 ; C 241 ; WX 722 ; N ae ; B 33 -14 693 473 ; C 245 ; WX 278 ; N dotlessi ; B 16 0 255 461 ; C 248 ; WX 278 ; N lslash ; B -22 0 303 676 ; C 249 ; WX 500 ; N oslash ; B 25 -92 476 549 ; C 250 ; WX 722 ; N oe ; B 22 -14 696 473 ; C 251 ; WX 556 ; N germandbls ; B 19 -12 517 691 ; C -1 ; WX 389 ; N Idieresis ; B 20 0 370 877 ; C -1 ; WX 444 ; N eacute ; B 25 -14 426 713 ; C -1 ; WX 500 ; N abreve ; B 25 -14 488 691 ; C -1 ; WX 556 ; N uhungarumlaut ; B 16 -14 557 713 ; C -1 ; WX 444 ; N ecaron ; B 25 -14 426 704 ; C -1 ; WX 722 ; N Ydieresis ; B 15 0 699 877 ; C -1 ; WX 570 ; N divide ; B 33 -31 537 537 ; C -1 ; WX 722 ; N Yacute ; B 15 0 699 923 ; C -1 ; WX 722 ; N Acircumflex ; B 9 0 689 914 ; C -1 ; WX 500 ; N aacute ; B 25 -14 488 713 ; C -1 ; WX 722 ; N Ucircumflex ; B 16 -19 701 914 ; C -1 ; WX 500 ; N yacute ; B 16 -205 480 713 ; C -1 ; WX 389 ; N scommaaccent ; B 25 -218 361 473 ; C -1 ; WX 444 ; N ecircumflex ; B 25 -14 426 704 ; C -1 ; WX 722 ; N Uring ; B 16 -19 701 935 ; C -1 ; WX 722 ; N Udieresis ; B 16 -19 701 877 ; C -1 ; WX 500 ; N aogonek ; B 25 -193 504 473 ; C -1 ; WX 722 ; N Uacute ; B 16 -19 701 923 ; C -1 ; WX 556 ; N uogonek ; B 16 -193 539 461 ; C -1 ; WX 667 ; N Edieresis ; B 16 0 641 877 ; C -1 ; WX 722 ; N Dcroat ; B 6 0 690 676 ; C -1 ; WX 250 ; N commaaccent ; B 47 -218 203 -50 ; C -1 ; WX 747 ; N copyright ; B 26 -19 721 691 ; C -1 ; WX 667 ; N Emacron ; B 16 0 641 847 ; C -1 ; WX 444 ; N ccaron ; B 25 -14 430 704 ; C -1 ; WX 500 ; N aring ; B 25 -14 488 740 ; C -1 ; WX 722 ; N Ncommaaccent ; B 16 -188 701 676 ; C -1 ; WX 278 ; N lacute ; B 16 0 297 923 ; C -1 ; WX 500 ; N agrave ; B 25 -14 488 713 ; C -1 ; WX 667 ; N Tcommaaccent ; B 31 -218 636 676 ; C -1 ; WX 722 ; N Cacute ; B 49 -19 687 923 ; C -1 ; WX 500 ; N atilde ; B 25 -14 488 674 ; C -1 ; WX 667 ; N Edotaccent ; B 16 0 641 901 ; C -1 ; WX 389 ; N scaron ; B 25 -14 363 704 ; C -1 ; WX 389 ; N scedilla ; B 25 -218 361 473 ; C -1 ; WX 278 ; N iacute ; B 16 0 289 713 ; C -1 ; WX 494 ; N lozenge ; B 10 0 484 745 ; C -1 ; WX 722 ; N Rcaron ; B 26 0 715 914 ; C -1 ; WX 778 ; N Gcommaaccent ; B 37 -218 755 691 ; C -1 ; WX 556 ; N ucircumflex ; B 16 -14 537 704 ; C -1 ; WX 500 ; N acircumflex ; B 25 -14 488 704 ; C -1 ; WX 722 ; N Amacron ; B 9 0 689 847 ; C -1 ; WX 444 ; N rcaron ; B 29 0 434 704 ; C -1 ; WX 444 ; N ccedilla ; B 25 -218 430 473 ; C -1 ; WX 667 ; N Zdotaccent ; B 28 0 634 901 ; C -1 ; WX 611 ; N Thorn ; B 16 0 600 676 ; C -1 ; WX 778 ; N Omacron ; B 35 -19 743 847 ; C -1 ; WX 722 ; N Racute ; B 26 0 715 923 ; C -1 ; WX 556 ; N Sacute ; B 35 -19 513 923 ; C -1 ; WX 672 ; N dcaron ; B 25 -14 681 682 ; C -1 ; WX 722 ; N Umacron ; B 16 -19 701 847 ; C -1 ; WX 556 ; N uring ; B 16 -14 537 740 ; C -1 ; WX 300 ; N threesuperior ; B 3 268 297 688 ; C -1 ; WX 778 ; N Ograve ; B 35 -19 743 923 ; C -1 ; WX 722 ; N Agrave ; B 9 0 689 923 ; C -1 ; WX 722 ; N Abreve ; B 9 0 689 901 ; C -1 ; WX 570 ; N multiply ; B 48 16 522 490 ; C -1 ; WX 556 ; N uacute ; B 16 -14 537 713 ; C -1 ; WX 667 ; N Tcaron ; B 31 0 636 914 ; C -1 ; WX 494 ; N partialdiff ; B 11 -21 494 750 ; C -1 ; WX 500 ; N ydieresis ; B 16 -205 480 667 ; C -1 ; WX 722 ; N Nacute ; B 16 -18 701 923 ; C -1 ; WX 278 ; N icircumflex ; B -37 0 300 704 ; C -1 ; WX 667 ; N Ecircumflex ; B 16 0 641 914 ; C -1 ; WX 500 ; N adieresis ; B 25 -14 488 667 ; C -1 ; WX 444 ; N edieresis ; B 25 -14 426 667 ; C -1 ; WX 444 ; N cacute ; B 25 -14 430 713 ; C -1 ; WX 556 ; N nacute ; B 21 0 539 713 ; C -1 ; WX 556 ; N umacron ; B 16 -14 537 637 ; C -1 ; WX 722 ; N Ncaron ; B 16 -18 701 914 ; C -1 ; WX 389 ; N Iacute ; B 20 0 370 923 ; C -1 ; WX 570 ; N plusminus ; B 33 0 537 506 ; C -1 ; WX 220 ; N brokenbar ; B 66 -143 154 707 ; C -1 ; WX 747 ; N registered ; B 26 -19 721 691 ; C -1 ; WX 778 ; N Gbreve ; B 37 -19 755 901 ; C -1 ; WX 389 ; N Idotaccent ; B 20 0 370 901 ; C -1 ; WX 600 ; N summation ; B 14 -10 585 706 ; C -1 ; WX 667 ; N Egrave ; B 16 0 641 923 ; C -1 ; WX 444 ; N racute ; B 29 0 434 713 ; C -1 ; WX 500 ; N omacron ; B 25 -14 476 637 ; C -1 ; WX 667 ; N Zacute ; B 28 0 634 923 ; C -1 ; WX 667 ; N Zcaron ; B 28 0 634 914 ; C -1 ; WX 549 ; N greaterequal ; B 26 0 523 704 ; C -1 ; WX 722 ; N Eth ; B 6 0 690 676 ; C -1 ; WX 722 ; N Ccedilla ; B 49 -218 687 691 ; C -1 ; WX 278 ; N lcommaaccent ; B 16 -218 255 676 ; C -1 ; WX 416 ; N tcaron ; B 20 -12 425 815 ; C -1 ; WX 444 ; N eogonek ; B 25 -193 426 473 ; C -1 ; WX 722 ; N Uogonek ; B 16 -193 701 676 ; C -1 ; WX 722 ; N Aacute ; B 9 0 689 923 ; C -1 ; WX 722 ; N Adieresis ; B 9 0 689 877 ; C -1 ; WX 444 ; N egrave ; B 25 -14 426 713 ; C -1 ; WX 444 ; N zacute ; B 21 0 420 713 ; C -1 ; WX 278 ; N iogonek ; B 16 -193 274 691 ; C -1 ; WX 778 ; N Oacute ; B 35 -19 743 923 ; C -1 ; WX 500 ; N oacute ; B 25 -14 476 713 ; C -1 ; WX 500 ; N amacron ; B 25 -14 488 637 ; C -1 ; WX 389 ; N sacute ; B 25 -14 361 713 ; C -1 ; WX 278 ; N idieresis ; B -37 0 300 667 ; C -1 ; WX 778 ; N Ocircumflex ; B 35 -19 743 914 ; C -1 ; WX 722 ; N Ugrave ; B 16 -19 701 923 ; C -1 ; WX 612 ; N Delta ; B 6 0 608 688 ; C -1 ; WX 556 ; N thorn ; B 19 -205 524 676 ; C -1 ; WX 300 ; N twosuperior ; B 0 275 300 688 ; C -1 ; WX 778 ; N Odieresis ; B 35 -19 743 877 ; C -1 ; WX 556 ; N mu ; B 33 -206 536 461 ; C -1 ; WX 278 ; N igrave ; B -27 0 255 713 ; C -1 ; WX 500 ; N ohungarumlaut ; B 25 -14 529 713 ; C -1 ; WX 667 ; N Eogonek ; B 16 -193 644 676 ; C -1 ; WX 556 ; N dcroat ; B 25 -14 534 676 ; C -1 ; WX 750 ; N threequarters ; B 23 -12 733 688 ; C -1 ; WX 556 ; N Scedilla ; B 35 -218 513 692 ; C -1 ; WX 394 ; N lcaron ; B 16 0 412 682 ; C -1 ; WX 778 ; N Kcommaaccent ; B 30 -218 769 676 ; C -1 ; WX 667 ; N Lacute ; B 19 0 638 923 ; C -1 ; WX 1000 ; N trademark ; B 24 271 977 676 ; C -1 ; WX 444 ; N edotaccent ; B 25 -14 426 691 ; C -1 ; WX 389 ; N Igrave ; B 20 0 370 923 ; C -1 ; WX 389 ; N Imacron ; B 20 0 370 847 ; C -1 ; WX 667 ; N Lcaron ; B 19 0 652 682 ; C -1 ; WX 750 ; N onehalf ; B -7 -12 775 688 ; C -1 ; WX 549 ; N lessequal ; B 29 0 526 704 ; C -1 ; WX 500 ; N ocircumflex ; B 25 -14 476 704 ; C -1 ; WX 556 ; N ntilde ; B 21 0 539 674 ; C -1 ; WX 722 ; N Uhungarumlaut ; B 16 -19 701 923 ; C -1 ; WX 667 ; N Eacute ; B 16 0 641 923 ; C -1 ; WX 444 ; N emacron ; B 25 -14 426 637 ; C -1 ; WX 500 ; N gbreve ; B 28 -206 483 691 ; C -1 ; WX 750 ; N onequarter ; B 28 -12 743 688 ; C -1 ; WX 556 ; N Scaron ; B 35 -19 513 914 ; C -1 ; WX 556 ; N Scommaaccent ; B 35 -218 513 692 ; C -1 ; WX 778 ; N Ohungarumlaut ; B 35 -19 743 923 ; C -1 ; WX 400 ; N degree ; B 57 402 343 688 ; C -1 ; WX 500 ; N ograve ; B 25 -14 476 713 ; C -1 ; WX 722 ; N Ccaron ; B 49 -19 687 914 ; C -1 ; WX 556 ; N ugrave ; B 16 -14 537 713 ; C -1 ; WX 549 ; N radical ; B 10 -46 512 850 ; C -1 ; WX 722 ; N Dcaron ; B 14 0 690 914 ; C -1 ; WX 444 ; N rcommaaccent ; B 29 -218 434 473 ; C -1 ; WX 722 ; N Ntilde ; B 16 -18 701 884 ; C -1 ; WX 500 ; N otilde ; B 25 -14 476 674 ; C -1 ; WX 722 ; N Rcommaaccent ; B 26 -218 715 676 ; C -1 ; WX 667 ; N Lcommaaccent ; B 19 -218 638 676 ; C -1 ; WX 722 ; N Atilde ; B 9 0 689 884 ; C -1 ; WX 722 ; N Aogonek ; B 9 -193 699 690 ; C -1 ; WX 722 ; N Aring ; B 9 0 689 935 ; C -1 ; WX 778 ; N Otilde ; B 35 -19 743 884 ; C -1 ; WX 444 ; N zdotaccent ; B 21 0 420 691 ; C -1 ; WX 667 ; N Ecaron ; B 16 0 641 914 ; C -1 ; WX 389 ; N Iogonek ; B 20 -193 370 676 ; C -1 ; WX 556 ; N kcommaaccent ; B 22 -218 543 676 ; C -1 ; WX 570 ; N minus ; B 33 209 537 297 ; C -1 ; WX 389 ; N Icircumflex ; B 20 0 370 914 ; C -1 ; WX 556 ; N ncaron ; B 21 0 539 704 ; C -1 ; WX 333 ; N tcommaaccent ; B 20 -218 332 630 ; C -1 ; WX 570 ; N logicalnot ; B 33 108 537 399 ; C -1 ; WX 500 ; N odieresis ; B 25 -14 476 667 ; C -1 ; WX 556 ; N udieresis ; B 16 -14 537 667 ; C -1 ; WX 549 ; N notequal ; B 15 -49 540 570 ; C -1 ; WX 500 ; N gcommaaccent ; B 28 -206 483 829 ; C -1 ; WX 500 ; N eth ; B 25 -14 476 691 ; C -1 ; WX 444 ; N zcaron ; B 21 0 420 704 ; C -1 ; WX 556 ; N ncommaaccent ; B 21 -218 539 473 ; C -1 ; WX 300 ; N onesuperior ; B 28 275 273 688 ; C -1 ; WX 278 ; N imacron ; B -8 0 272 637 ; EndCharMetrics StartKernData StartKernPairs 2242 KPX A C -55 KPX A Cacute -55 KPX A Ccaron -55 KPX A Ccedilla -55 KPX A G -55 KPX A Gbreve -55 KPX A Gcommaaccent -55 KPX A O -45 KPX A Oacute -45 KPX A Ocircumflex -45 KPX A Odieresis -45 KPX A Ograve -45 KPX A Ohungarumlaut -45 KPX A Omacron -45 KPX A Oslash -45 KPX A Otilde -45 KPX A Q -45 KPX A T -95 KPX A Tcaron -95 KPX A Tcommaaccent -95 KPX A U -50 KPX A Uacute -50 KPX A Ucircumflex -50 KPX A Udieresis -50 KPX A Ugrave -50 KPX A Uhungarumlaut -50 KPX A Umacron -50 KPX A Uogonek -50 KPX A Uring -50 KPX A V -145 KPX A W -130 KPX A Y -100 KPX A Yacute -100 KPX A Ydieresis -100 KPX A p -25 KPX A quoteright -74 KPX A u -50 KPX A uacute -50 KPX A ucircumflex -50 KPX A udieresis -50 KPX A ugrave -50 KPX A uhungarumlaut -50 KPX A umacron -50 KPX A uogonek -50 KPX A uring -50 KPX A v -100 KPX A w -90 KPX A y -74 KPX A yacute -74 KPX A ydieresis -74 KPX Aacute C -55 KPX Aacute Cacute -55 KPX Aacute Ccaron -55 KPX Aacute Ccedilla -55 KPX Aacute G -55 KPX Aacute Gbreve -55 KPX Aacute Gcommaaccent -55 KPX Aacute O -45 KPX Aacute Oacute -45 KPX Aacute Ocircumflex -45 KPX Aacute Odieresis -45 KPX Aacute Ograve -45 KPX Aacute Ohungarumlaut -45 KPX Aacute Omacron -45 KPX Aacute Oslash -45 KPX Aacute Otilde -45 KPX Aacute Q -45 KPX Aacute T -95 KPX Aacute Tcaron -95 KPX Aacute Tcommaaccent -95 KPX Aacute U -50 KPX Aacute Uacute -50 KPX Aacute Ucircumflex -50 KPX Aacute Udieresis -50 KPX Aacute Ugrave -50 KPX Aacute Uhungarumlaut -50 KPX Aacute Umacron -50 KPX Aacute Uogonek -50 KPX Aacute Uring -50 KPX Aacute V -145 KPX Aacute W -130 KPX Aacute Y -100 KPX Aacute Yacute -100 KPX Aacute Ydieresis -100 KPX Aacute p -25 KPX Aacute quoteright -74 KPX Aacute u -50 KPX Aacute uacute -50 KPX Aacute ucircumflex -50 KPX Aacute udieresis -50 KPX Aacute ugrave -50 KPX Aacute uhungarumlaut -50 KPX Aacute umacron -50 KPX Aacute uogonek -50 KPX Aacute uring -50 KPX Aacute v -100 KPX Aacute w -90 KPX Aacute y -74 KPX Aacute yacute -74 KPX Aacute ydieresis -74 KPX Abreve C -55 KPX Abreve Cacute -55 KPX Abreve Ccaron -55 KPX Abreve Ccedilla -55 KPX Abreve G -55 KPX Abreve Gbreve -55 KPX Abreve Gcommaaccent -55 KPX Abreve O -45 KPX Abreve Oacute -45 KPX Abreve Ocircumflex -45 KPX Abreve Odieresis -45 KPX Abreve Ograve -45 KPX Abreve Ohungarumlaut -45 KPX Abreve Omacron -45 KPX Abreve Oslash -45 KPX Abreve Otilde -45 KPX Abreve Q -45 KPX Abreve T -95 KPX Abreve Tcaron -95 KPX Abreve Tcommaaccent -95 KPX Abreve U -50 KPX Abreve Uacute -50 KPX Abreve Ucircumflex -50 KPX Abreve Udieresis -50 KPX Abreve Ugrave -50 KPX Abreve Uhungarumlaut -50 KPX Abreve Umacron -50 KPX Abreve Uogonek -50 KPX Abreve Uring -50 KPX Abreve V -145 KPX Abreve W -130 KPX Abreve Y -100 KPX Abreve Yacute -100 KPX Abreve Ydieresis -100 KPX Abreve p -25 KPX Abreve quoteright -74 KPX Abreve u -50 KPX Abreve uacute -50 KPX Abreve ucircumflex -50 KPX Abreve udieresis -50 KPX Abreve ugrave -50 KPX Abreve uhungarumlaut -50 KPX Abreve umacron -50 KPX Abreve uogonek -50 KPX Abreve uring -50 KPX Abreve v -100 KPX Abreve w -90 KPX Abreve y -74 KPX Abreve yacute -74 KPX Abreve ydieresis -74 KPX Acircumflex C -55 KPX Acircumflex Cacute -55 KPX Acircumflex Ccaron -55 KPX Acircumflex Ccedilla -55 KPX Acircumflex G -55 KPX Acircumflex Gbreve -55 KPX Acircumflex Gcommaaccent -55 KPX Acircumflex O -45 KPX Acircumflex Oacute -45 KPX Acircumflex Ocircumflex -45 KPX Acircumflex Odieresis -45 KPX Acircumflex Ograve -45 KPX Acircumflex Ohungarumlaut -45 KPX Acircumflex Omacron -45 KPX Acircumflex Oslash -45 KPX Acircumflex Otilde -45 KPX Acircumflex Q -45 KPX Acircumflex T -95 KPX Acircumflex Tcaron -95 KPX Acircumflex Tcommaaccent -95 KPX Acircumflex U -50 KPX Acircumflex Uacute -50 KPX Acircumflex Ucircumflex -50 KPX Acircumflex Udieresis -50 KPX Acircumflex Ugrave -50 KPX Acircumflex Uhungarumlaut -50 KPX Acircumflex Umacron -50 KPX Acircumflex Uogonek -50 KPX Acircumflex Uring -50 KPX Acircumflex V -145 KPX Acircumflex W -130 KPX Acircumflex Y -100 KPX Acircumflex Yacute -100 KPX Acircumflex Ydieresis -100 KPX Acircumflex p -25 KPX Acircumflex quoteright -74 KPX Acircumflex u -50 KPX Acircumflex uacute -50 KPX Acircumflex ucircumflex -50 KPX Acircumflex udieresis -50 KPX Acircumflex ugrave -50 KPX Acircumflex uhungarumlaut -50 KPX Acircumflex umacron -50 KPX Acircumflex uogonek -50 KPX Acircumflex uring -50 KPX Acircumflex v -100 KPX Acircumflex w -90 KPX Acircumflex y -74 KPX Acircumflex yacute -74 KPX Acircumflex ydieresis -74 KPX Adieresis C -55 KPX Adieresis Cacute -55 KPX Adieresis Ccaron -55 KPX Adieresis Ccedilla -55 KPX Adieresis G -55 KPX Adieresis Gbreve -55 KPX Adieresis Gcommaaccent -55 KPX Adieresis O -45 KPX Adieresis Oacute -45 KPX Adieresis Ocircumflex -45 KPX Adieresis Odieresis -45 KPX Adieresis Ograve -45 KPX Adieresis Ohungarumlaut -45 KPX Adieresis Omacron -45 KPX Adieresis Oslash -45 KPX Adieresis Otilde -45 KPX Adieresis Q -45 KPX Adieresis T -95 KPX Adieresis Tcaron -95 KPX Adieresis Tcommaaccent -95 KPX Adieresis U -50 KPX Adieresis Uacute -50 KPX Adieresis Ucircumflex -50 KPX Adieresis Udieresis -50 KPX Adieresis Ugrave -50 KPX Adieresis Uhungarumlaut -50 KPX Adieresis Umacron -50 KPX Adieresis Uogonek -50 KPX Adieresis Uring -50 KPX Adieresis V -145 KPX Adieresis W -130 KPX Adieresis Y -100 KPX Adieresis Yacute -100 KPX Adieresis Ydieresis -100 KPX Adieresis p -25 KPX Adieresis quoteright -74 KPX Adieresis u -50 KPX Adieresis uacute -50 KPX Adieresis ucircumflex -50 KPX Adieresis udieresis -50 KPX Adieresis ugrave -50 KPX Adieresis uhungarumlaut -50 KPX Adieresis umacron -50 KPX Adieresis uogonek -50 KPX Adieresis uring -50 KPX Adieresis v -100 KPX Adieresis w -90 KPX Adieresis y -74 KPX Adieresis yacute -74 KPX Adieresis ydieresis -74 KPX Agrave C -55 KPX Agrave Cacute -55 KPX Agrave Ccaron -55 KPX Agrave Ccedilla -55 KPX Agrave G -55 KPX Agrave Gbreve -55 KPX Agrave Gcommaaccent -55 KPX Agrave O -45 KPX Agrave Oacute -45 KPX Agrave Ocircumflex -45 KPX Agrave Odieresis -45 KPX Agrave Ograve -45 KPX Agrave Ohungarumlaut -45 KPX Agrave Omacron -45 KPX Agrave Oslash -45 KPX Agrave Otilde -45 KPX Agrave Q -45 KPX Agrave T -95 KPX Agrave Tcaron -95 KPX Agrave Tcommaaccent -95 KPX Agrave U -50 KPX Agrave Uacute -50 KPX Agrave Ucircumflex -50 KPX Agrave Udieresis -50 KPX Agrave Ugrave -50 KPX Agrave Uhungarumlaut -50 KPX Agrave Umacron -50 KPX Agrave Uogonek -50 KPX Agrave Uring -50 KPX Agrave V -145 KPX Agrave W -130 KPX Agrave Y -100 KPX Agrave Yacute -100 KPX Agrave Ydieresis -100 KPX Agrave p -25 KPX Agrave quoteright -74 KPX Agrave u -50 KPX Agrave uacute -50 KPX Agrave ucircumflex -50 KPX Agrave udieresis -50 KPX Agrave ugrave -50 KPX Agrave uhungarumlaut -50 KPX Agrave umacron -50 KPX Agrave uogonek -50 KPX Agrave uring -50 KPX Agrave v -100 KPX Agrave w -90 KPX Agrave y -74 KPX Agrave yacute -74 KPX Agrave ydieresis -74 KPX Amacron C -55 KPX Amacron Cacute -55 KPX Amacron Ccaron -55 KPX Amacron Ccedilla -55 KPX Amacron G -55 KPX Amacron Gbreve -55 KPX Amacron Gcommaaccent -55 KPX Amacron O -45 KPX Amacron Oacute -45 KPX Amacron Ocircumflex -45 KPX Amacron Odieresis -45 KPX Amacron Ograve -45 KPX Amacron Ohungarumlaut -45 KPX Amacron Omacron -45 KPX Amacron Oslash -45 KPX Amacron Otilde -45 KPX Amacron Q -45 KPX Amacron T -95 KPX Amacron Tcaron -95 KPX Amacron Tcommaaccent -95 KPX Amacron U -50 KPX Amacron Uacute -50 KPX Amacron Ucircumflex -50 KPX Amacron Udieresis -50 KPX Amacron Ugrave -50 KPX Amacron Uhungarumlaut -50 KPX Amacron Umacron -50 KPX Amacron Uogonek -50 KPX Amacron Uring -50 KPX Amacron V -145 KPX Amacron W -130 KPX Amacron Y -100 KPX Amacron Yacute -100 KPX Amacron Ydieresis -100 KPX Amacron p -25 KPX Amacron quoteright -74 KPX Amacron u -50 KPX Amacron uacute -50 KPX Amacron ucircumflex -50 KPX Amacron udieresis -50 KPX Amacron ugrave -50 KPX Amacron uhungarumlaut -50 KPX Amacron umacron -50 KPX Amacron uogonek -50 KPX Amacron uring -50 KPX Amacron v -100 KPX Amacron w -90 KPX Amacron y -74 KPX Amacron yacute -74 KPX Amacron ydieresis -74 KPX Aogonek C -55 KPX Aogonek Cacute -55 KPX Aogonek Ccaron -55 KPX Aogonek Ccedilla -55 KPX Aogonek G -55 KPX Aogonek Gbreve -55 KPX Aogonek Gcommaaccent -55 KPX Aogonek O -45 KPX Aogonek Oacute -45 KPX Aogonek Ocircumflex -45 KPX Aogonek Odieresis -45 KPX Aogonek Ograve -45 KPX Aogonek Ohungarumlaut -45 KPX Aogonek Omacron -45 KPX Aogonek Oslash -45 KPX Aogonek Otilde -45 KPX Aogonek Q -45 KPX Aogonek T -95 KPX Aogonek Tcaron -95 KPX Aogonek Tcommaaccent -95 KPX Aogonek U -50 KPX Aogonek Uacute -50 KPX Aogonek Ucircumflex -50 KPX Aogonek Udieresis -50 KPX Aogonek Ugrave -50 KPX Aogonek Uhungarumlaut -50 KPX Aogonek Umacron -50 KPX Aogonek Uogonek -50 KPX Aogonek Uring -50 KPX Aogonek V -145 KPX Aogonek W -130 KPX Aogonek Y -100 KPX Aogonek Yacute -100 KPX Aogonek Ydieresis -100 KPX Aogonek p -25 KPX Aogonek quoteright -74 KPX Aogonek u -50 KPX Aogonek uacute -50 KPX Aogonek ucircumflex -50 KPX Aogonek udieresis -50 KPX Aogonek ugrave -50 KPX Aogonek uhungarumlaut -50 KPX Aogonek umacron -50 KPX Aogonek uogonek -50 KPX Aogonek uring -50 KPX Aogonek v -100 KPX Aogonek w -90 KPX Aogonek y -34 KPX Aogonek yacute -34 KPX Aogonek ydieresis -34 KPX Aring C -55 KPX Aring Cacute -55 KPX Aring Ccaron -55 KPX Aring Ccedilla -55 KPX Aring G -55 KPX Aring Gbreve -55 KPX Aring Gcommaaccent -55 KPX Aring O -45 KPX Aring Oacute -45 KPX Aring Ocircumflex -45 KPX Aring Odieresis -45 KPX Aring Ograve -45 KPX Aring Ohungarumlaut -45 KPX Aring Omacron -45 KPX Aring Oslash -45 KPX Aring Otilde -45 KPX Aring Q -45 KPX Aring T -95 KPX Aring Tcaron -95 KPX Aring Tcommaaccent -95 KPX Aring U -50 KPX Aring Uacute -50 KPX Aring Ucircumflex -50 KPX Aring Udieresis -50 KPX Aring Ugrave -50 KPX Aring Uhungarumlaut -50 KPX Aring Umacron -50 KPX Aring Uogonek -50 KPX Aring Uring -50 KPX Aring V -145 KPX Aring W -130 KPX Aring Y -100 KPX Aring Yacute -100 KPX Aring Ydieresis -100 KPX Aring p -25 KPX Aring quoteright -74 KPX Aring u -50 KPX Aring uacute -50 KPX Aring ucircumflex -50 KPX Aring udieresis -50 KPX Aring ugrave -50 KPX Aring uhungarumlaut -50 KPX Aring umacron -50 KPX Aring uogonek -50 KPX Aring uring -50 KPX Aring v -100 KPX Aring w -90 KPX Aring y -74 KPX Aring yacute -74 KPX Aring ydieresis -74 KPX Atilde C -55 KPX Atilde Cacute -55 KPX Atilde Ccaron -55 KPX Atilde Ccedilla -55 KPX Atilde G -55 KPX Atilde Gbreve -55 KPX Atilde Gcommaaccent -55 KPX Atilde O -45 KPX Atilde Oacute -45 KPX Atilde Ocircumflex -45 KPX Atilde Odieresis -45 KPX Atilde Ograve -45 KPX Atilde Ohungarumlaut -45 KPX Atilde Omacron -45 KPX Atilde Oslash -45 KPX Atilde Otilde -45 KPX Atilde Q -45 KPX Atilde T -95 KPX Atilde Tcaron -95 KPX Atilde Tcommaaccent -95 KPX Atilde U -50 KPX Atilde Uacute -50 KPX Atilde Ucircumflex -50 KPX Atilde Udieresis -50 KPX Atilde Ugrave -50 KPX Atilde Uhungarumlaut -50 KPX Atilde Umacron -50 KPX Atilde Uogonek -50 KPX Atilde Uring -50 KPX Atilde V -145 KPX Atilde W -130 KPX Atilde Y -100 KPX Atilde Yacute -100 KPX Atilde Ydieresis -100 KPX Atilde p -25 KPX Atilde quoteright -74 KPX Atilde u -50 KPX Atilde uacute -50 KPX Atilde ucircumflex -50 KPX Atilde udieresis -50 KPX Atilde ugrave -50 KPX Atilde uhungarumlaut -50 KPX Atilde umacron -50 KPX Atilde uogonek -50 KPX Atilde uring -50 KPX Atilde v -100 KPX Atilde w -90 KPX Atilde y -74 KPX Atilde yacute -74 KPX Atilde ydieresis -74 KPX B A -30 KPX B Aacute -30 KPX B Abreve -30 KPX B Acircumflex -30 KPX B Adieresis -30 KPX B Agrave -30 KPX B Amacron -30 KPX B Aogonek -30 KPX B Aring -30 KPX B Atilde -30 KPX B U -10 KPX B Uacute -10 KPX B Ucircumflex -10 KPX B Udieresis -10 KPX B Ugrave -10 KPX B Uhungarumlaut -10 KPX B Umacron -10 KPX B Uogonek -10 KPX B Uring -10 KPX D A -35 KPX D Aacute -35 KPX D Abreve -35 KPX D Acircumflex -35 KPX D Adieresis -35 KPX D Agrave -35 KPX D Amacron -35 KPX D Aogonek -35 KPX D Aring -35 KPX D Atilde -35 KPX D V -40 KPX D W -40 KPX D Y -40 KPX D Yacute -40 KPX D Ydieresis -40 KPX D period -20 KPX Dcaron A -35 KPX Dcaron Aacute -35 KPX Dcaron Abreve -35 KPX Dcaron Acircumflex -35 KPX Dcaron Adieresis -35 KPX Dcaron Agrave -35 KPX Dcaron Amacron -35 KPX Dcaron Aogonek -35 KPX Dcaron Aring -35 KPX Dcaron Atilde -35 KPX Dcaron V -40 KPX Dcaron W -40 KPX Dcaron Y -40 KPX Dcaron Yacute -40 KPX Dcaron Ydieresis -40 KPX Dcaron period -20 KPX Dcroat A -35 KPX Dcroat Aacute -35 KPX Dcroat Abreve -35 KPX Dcroat Acircumflex -35 KPX Dcroat Adieresis -35 KPX Dcroat Agrave -35 KPX Dcroat Amacron -35 KPX Dcroat Aogonek -35 KPX Dcroat Aring -35 KPX Dcroat Atilde -35 KPX Dcroat V -40 KPX Dcroat W -40 KPX Dcroat Y -40 KPX Dcroat Yacute -40 KPX Dcroat Ydieresis -40 KPX Dcroat period -20 KPX F A -90 KPX F Aacute -90 KPX F Abreve -90 KPX F Acircumflex -90 KPX F Adieresis -90 KPX F Agrave -90 KPX F Amacron -90 KPX F Aogonek -90 KPX F Aring -90 KPX F Atilde -90 KPX F a -25 KPX F aacute -25 KPX F abreve -25 KPX F acircumflex -25 KPX F adieresis -25 KPX F agrave -25 KPX F amacron -25 KPX F aogonek -25 KPX F aring -25 KPX F atilde -25 KPX F comma -92 KPX F e -25 KPX F eacute -25 KPX F ecaron -25 KPX F ecircumflex -25 KPX F edieresis -25 KPX F edotaccent -25 KPX F egrave -25 KPX F emacron -25 KPX F eogonek -25 KPX F o -25 KPX F oacute -25 KPX F ocircumflex -25 KPX F odieresis -25 KPX F ograve -25 KPX F ohungarumlaut -25 KPX F omacron -25 KPX F oslash -25 KPX F otilde -25 KPX F period -110 KPX J A -30 KPX J Aacute -30 KPX J Abreve -30 KPX J Acircumflex -30 KPX J Adieresis -30 KPX J Agrave -30 KPX J Amacron -30 KPX J Aogonek -30 KPX J Aring -30 KPX J Atilde -30 KPX J a -15 KPX J aacute -15 KPX J abreve -15 KPX J acircumflex -15 KPX J adieresis -15 KPX J agrave -15 KPX J amacron -15 KPX J aogonek -15 KPX J aring -15 KPX J atilde -15 KPX J e -15 KPX J eacute -15 KPX J ecaron -15 KPX J ecircumflex -15 KPX J edieresis -15 KPX J edotaccent -15 KPX J egrave -15 KPX J emacron -15 KPX J eogonek -15 KPX J o -15 KPX J oacute -15 KPX J ocircumflex -15 KPX J odieresis -15 KPX J ograve -15 KPX J ohungarumlaut -15 KPX J omacron -15 KPX J oslash -15 KPX J otilde -15 KPX J period -20 KPX J u -15 KPX J uacute -15 KPX J ucircumflex -15 KPX J udieresis -15 KPX J ugrave -15 KPX J uhungarumlaut -15 KPX J umacron -15 KPX J uogonek -15 KPX J uring -15 KPX K O -30 KPX K Oacute -30 KPX K Ocircumflex -30 KPX K Odieresis -30 KPX K Ograve -30 KPX K Ohungarumlaut -30 KPX K Omacron -30 KPX K Oslash -30 KPX K Otilde -30 KPX K e -25 KPX K eacute -25 KPX K ecaron -25 KPX K ecircumflex -25 KPX K edieresis -25 KPX K edotaccent -25 KPX K egrave -25 KPX K emacron -25 KPX K eogonek -25 KPX K o -25 KPX K oacute -25 KPX K ocircumflex -25 KPX K odieresis -25 KPX K ograve -25 KPX K ohungarumlaut -25 KPX K omacron -25 KPX K oslash -25 KPX K otilde -25 KPX K u -15 KPX K uacute -15 KPX K ucircumflex -15 KPX K udieresis -15 KPX K ugrave -15 KPX K uhungarumlaut -15 KPX K umacron -15 KPX K uogonek -15 KPX K uring -15 KPX K y -45 KPX K yacute -45 KPX K ydieresis -45 KPX Kcommaaccent O -30 KPX Kcommaaccent Oacute -30 KPX Kcommaaccent Ocircumflex -30 KPX Kcommaaccent Odieresis -30 KPX Kcommaaccent Ograve -30 KPX Kcommaaccent Ohungarumlaut -30 KPX Kcommaaccent Omacron -30 KPX Kcommaaccent Oslash -30 KPX Kcommaaccent Otilde -30 KPX Kcommaaccent e -25 KPX Kcommaaccent eacute -25 KPX Kcommaaccent ecaron -25 KPX Kcommaaccent ecircumflex -25 KPX Kcommaaccent edieresis -25 KPX Kcommaaccent edotaccent -25 KPX Kcommaaccent egrave -25 KPX Kcommaaccent emacron -25 KPX Kcommaaccent eogonek -25 KPX Kcommaaccent o -25 KPX Kcommaaccent oacute -25 KPX Kcommaaccent ocircumflex -25 KPX Kcommaaccent odieresis -25 KPX Kcommaaccent ograve -25 KPX Kcommaaccent ohungarumlaut -25 KPX Kcommaaccent omacron -25 KPX Kcommaaccent oslash -25 KPX Kcommaaccent otilde -25 KPX Kcommaaccent u -15 KPX Kcommaaccent uacute -15 KPX Kcommaaccent ucircumflex -15 KPX Kcommaaccent udieresis -15 KPX Kcommaaccent ugrave -15 KPX Kcommaaccent uhungarumlaut -15 KPX Kcommaaccent umacron -15 KPX Kcommaaccent uogonek -15 KPX Kcommaaccent uring -15 KPX Kcommaaccent y -45 KPX Kcommaaccent yacute -45 KPX Kcommaaccent ydieresis -45 KPX L T -92 KPX L Tcaron -92 KPX L Tcommaaccent -92 KPX L V -92 KPX L W -92 KPX L Y -92 KPX L Yacute -92 KPX L Ydieresis -92 KPX L quotedblright -20 KPX L quoteright -110 KPX L y -55 KPX L yacute -55 KPX L ydieresis -55 KPX Lacute T -92 KPX Lacute Tcaron -92 KPX Lacute Tcommaaccent -92 KPX Lacute V -92 KPX Lacute W -92 KPX Lacute Y -92 KPX Lacute Yacute -92 KPX Lacute Ydieresis -92 KPX Lacute quotedblright -20 KPX Lacute quoteright -110 KPX Lacute y -55 KPX Lacute yacute -55 KPX Lacute ydieresis -55 KPX Lcommaaccent T -92 KPX Lcommaaccent Tcaron -92 KPX Lcommaaccent Tcommaaccent -92 KPX Lcommaaccent V -92 KPX Lcommaaccent W -92 KPX Lcommaaccent Y -92 KPX Lcommaaccent Yacute -92 KPX Lcommaaccent Ydieresis -92 KPX Lcommaaccent quotedblright -20 KPX Lcommaaccent quoteright -110 KPX Lcommaaccent y -55 KPX Lcommaaccent yacute -55 KPX Lcommaaccent ydieresis -55 KPX Lslash T -92 KPX Lslash Tcaron -92 KPX Lslash Tcommaaccent -92 KPX Lslash V -92 KPX Lslash W -92 KPX Lslash Y -92 KPX Lslash Yacute -92 KPX Lslash Ydieresis -92 KPX Lslash quotedblright -20 KPX Lslash quoteright -110 KPX Lslash y -55 KPX Lslash yacute -55 KPX Lslash ydieresis -55 KPX N A -20 KPX N Aacute -20 KPX N Abreve -20 KPX N Acircumflex -20 KPX N Adieresis -20 KPX N Agrave -20 KPX N Amacron -20 KPX N Aogonek -20 KPX N Aring -20 KPX N Atilde -20 KPX Nacute A -20 KPX Nacute Aacute -20 KPX Nacute Abreve -20 KPX Nacute Acircumflex -20 KPX Nacute Adieresis -20 KPX Nacute Agrave -20 KPX Nacute Amacron -20 KPX Nacute Aogonek -20 KPX Nacute Aring -20 KPX Nacute Atilde -20 KPX Ncaron A -20 KPX Ncaron Aacute -20 KPX Ncaron Abreve -20 KPX Ncaron Acircumflex -20 KPX Ncaron Adieresis -20 KPX Ncaron Agrave -20 KPX Ncaron Amacron -20 KPX Ncaron Aogonek -20 KPX Ncaron Aring -20 KPX Ncaron Atilde -20 KPX Ncommaaccent A -20 KPX Ncommaaccent Aacute -20 KPX Ncommaaccent Abreve -20 KPX Ncommaaccent Acircumflex -20 KPX Ncommaaccent Adieresis -20 KPX Ncommaaccent Agrave -20 KPX Ncommaaccent Amacron -20 KPX Ncommaaccent Aogonek -20 KPX Ncommaaccent Aring -20 KPX Ncommaaccent Atilde -20 KPX Ntilde A -20 KPX Ntilde Aacute -20 KPX Ntilde Abreve -20 KPX Ntilde Acircumflex -20 KPX Ntilde Adieresis -20 KPX Ntilde Agrave -20 KPX Ntilde Amacron -20 KPX Ntilde Aogonek -20 KPX Ntilde Aring -20 KPX Ntilde Atilde -20 KPX O A -40 KPX O Aacute -40 KPX O Abreve -40 KPX O Acircumflex -40 KPX O Adieresis -40 KPX O Agrave -40 KPX O Amacron -40 KPX O Aogonek -40 KPX O Aring -40 KPX O Atilde -40 KPX O T -40 KPX O Tcaron -40 KPX O Tcommaaccent -40 KPX O V -50 KPX O W -50 KPX O X -40 KPX O Y -50 KPX O Yacute -50 KPX O Ydieresis -50 KPX Oacute A -40 KPX Oacute Aacute -40 KPX Oacute Abreve -40 KPX Oacute Acircumflex -40 KPX Oacute Adieresis -40 KPX Oacute Agrave -40 KPX Oacute Amacron -40 KPX Oacute Aogonek -40 KPX Oacute Aring -40 KPX Oacute Atilde -40 KPX Oacute T -40 KPX Oacute Tcaron -40 KPX Oacute Tcommaaccent -40 KPX Oacute V -50 KPX Oacute W -50 KPX Oacute X -40 KPX Oacute Y -50 KPX Oacute Yacute -50 KPX Oacute Ydieresis -50 KPX Ocircumflex A -40 KPX Ocircumflex Aacute -40 KPX Ocircumflex Abreve -40 KPX Ocircumflex Acircumflex -40 KPX Ocircumflex Adieresis -40 KPX Ocircumflex Agrave -40 KPX Ocircumflex Amacron -40 KPX Ocircumflex Aogonek -40 KPX Ocircumflex Aring -40 KPX Ocircumflex Atilde -40 KPX Ocircumflex T -40 KPX Ocircumflex Tcaron -40 KPX Ocircumflex Tcommaaccent -40 KPX Ocircumflex V -50 KPX Ocircumflex W -50 KPX Ocircumflex X -40 KPX Ocircumflex Y -50 KPX Ocircumflex Yacute -50 KPX Ocircumflex Ydieresis -50 KPX Odieresis A -40 KPX Odieresis Aacute -40 KPX Odieresis Abreve -40 KPX Odieresis Acircumflex -40 KPX Odieresis Adieresis -40 KPX Odieresis Agrave -40 KPX Odieresis Amacron -40 KPX Odieresis Aogonek -40 KPX Odieresis Aring -40 KPX Odieresis Atilde -40 KPX Odieresis T -40 KPX Odieresis Tcaron -40 KPX Odieresis Tcommaaccent -40 KPX Odieresis V -50 KPX Odieresis W -50 KPX Odieresis X -40 KPX Odieresis Y -50 KPX Odieresis Yacute -50 KPX Odieresis Ydieresis -50 KPX Ograve A -40 KPX Ograve Aacute -40 KPX Ograve Abreve -40 KPX Ograve Acircumflex -40 KPX Ograve Adieresis -40 KPX Ograve Agrave -40 KPX Ograve Amacron -40 KPX Ograve Aogonek -40 KPX Ograve Aring -40 KPX Ograve Atilde -40 KPX Ograve T -40 KPX Ograve Tcaron -40 KPX Ograve Tcommaaccent -40 KPX Ograve V -50 KPX Ograve W -50 KPX Ograve X -40 KPX Ograve Y -50 KPX Ograve Yacute -50 KPX Ograve Ydieresis -50 KPX Ohungarumlaut A -40 KPX Ohungarumlaut Aacute -40 KPX Ohungarumlaut Abreve -40 KPX Ohungarumlaut Acircumflex -40 KPX Ohungarumlaut Adieresis -40 KPX Ohungarumlaut Agrave -40 KPX Ohungarumlaut Amacron -40 KPX Ohungarumlaut Aogonek -40 KPX Ohungarumlaut Aring -40 KPX Ohungarumlaut Atilde -40 KPX Ohungarumlaut T -40 KPX Ohungarumlaut Tcaron -40 KPX Ohungarumlaut Tcommaaccent -40 KPX Ohungarumlaut V -50 KPX Ohungarumlaut W -50 KPX Ohungarumlaut X -40 KPX Ohungarumlaut Y -50 KPX Ohungarumlaut Yacute -50 KPX Ohungarumlaut Ydieresis -50 KPX Omacron A -40 KPX Omacron Aacute -40 KPX Omacron Abreve -40 KPX Omacron Acircumflex -40 KPX Omacron Adieresis -40 KPX Omacron Agrave -40 KPX Omacron Amacron -40 KPX Omacron Aogonek -40 KPX Omacron Aring -40 KPX Omacron Atilde -40 KPX Omacron T -40 KPX Omacron Tcaron -40 KPX Omacron Tcommaaccent -40 KPX Omacron V -50 KPX Omacron W -50 KPX Omacron X -40 KPX Omacron Y -50 KPX Omacron Yacute -50 KPX Omacron Ydieresis -50 KPX Oslash A -40 KPX Oslash Aacute -40 KPX Oslash Abreve -40 KPX Oslash Acircumflex -40 KPX Oslash Adieresis -40 KPX Oslash Agrave -40 KPX Oslash Amacron -40 KPX Oslash Aogonek -40 KPX Oslash Aring -40 KPX Oslash Atilde -40 KPX Oslash T -40 KPX Oslash Tcaron -40 KPX Oslash Tcommaaccent -40 KPX Oslash V -50 KPX Oslash W -50 KPX Oslash X -40 KPX Oslash Y -50 KPX Oslash Yacute -50 KPX Oslash Ydieresis -50 KPX Otilde A -40 KPX Otilde Aacute -40 KPX Otilde Abreve -40 KPX Otilde Acircumflex -40 KPX Otilde Adieresis -40 KPX Otilde Agrave -40 KPX Otilde Amacron -40 KPX Otilde Aogonek -40 KPX Otilde Aring -40 KPX Otilde Atilde -40 KPX Otilde T -40 KPX Otilde Tcaron -40 KPX Otilde Tcommaaccent -40 KPX Otilde V -50 KPX Otilde W -50 KPX Otilde X -40 KPX Otilde Y -50 KPX Otilde Yacute -50 KPX Otilde Ydieresis -50 KPX P A -74 KPX P Aacute -74 KPX P Abreve -74 KPX P Acircumflex -74 KPX P Adieresis -74 KPX P Agrave -74 KPX P Amacron -74 KPX P Aogonek -74 KPX P Aring -74 KPX P Atilde -74 KPX P a -10 KPX P aacute -10 KPX P abreve -10 KPX P acircumflex -10 KPX P adieresis -10 KPX P agrave -10 KPX P amacron -10 KPX P aogonek -10 KPX P aring -10 KPX P atilde -10 KPX P comma -92 KPX P e -20 KPX P eacute -20 KPX P ecaron -20 KPX P ecircumflex -20 KPX P edieresis -20 KPX P edotaccent -20 KPX P egrave -20 KPX P emacron -20 KPX P eogonek -20 KPX P o -20 KPX P oacute -20 KPX P ocircumflex -20 KPX P odieresis -20 KPX P ograve -20 KPX P ohungarumlaut -20 KPX P omacron -20 KPX P oslash -20 KPX P otilde -20 KPX P period -110 KPX Q U -10 KPX Q Uacute -10 KPX Q Ucircumflex -10 KPX Q Udieresis -10 KPX Q Ugrave -10 KPX Q Uhungarumlaut -10 KPX Q Umacron -10 KPX Q Uogonek -10 KPX Q Uring -10 KPX Q period -20 KPX R O -30 KPX R Oacute -30 KPX R Ocircumflex -30 KPX R Odieresis -30 KPX R Ograve -30 KPX R Ohungarumlaut -30 KPX R Omacron -30 KPX R Oslash -30 KPX R Otilde -30 KPX R T -40 KPX R Tcaron -40 KPX R Tcommaaccent -40 KPX R U -30 KPX R Uacute -30 KPX R Ucircumflex -30 KPX R Udieresis -30 KPX R Ugrave -30 KPX R Uhungarumlaut -30 KPX R Umacron -30 KPX R Uogonek -30 KPX R Uring -30 KPX R V -55 KPX R W -35 KPX R Y -35 KPX R Yacute -35 KPX R Ydieresis -35 KPX Racute O -30 KPX Racute Oacute -30 KPX Racute Ocircumflex -30 KPX Racute Odieresis -30 KPX Racute Ograve -30 KPX Racute Ohungarumlaut -30 KPX Racute Omacron -30 KPX Racute Oslash -30 KPX Racute Otilde -30 KPX Racute T -40 KPX Racute Tcaron -40 KPX Racute Tcommaaccent -40 KPX Racute U -30 KPX Racute Uacute -30 KPX Racute Ucircumflex -30 KPX Racute Udieresis -30 KPX Racute Ugrave -30 KPX Racute Uhungarumlaut -30 KPX Racute Umacron -30 KPX Racute Uogonek -30 KPX Racute Uring -30 KPX Racute V -55 KPX Racute W -35 KPX Racute Y -35 KPX Racute Yacute -35 KPX Racute Ydieresis -35 KPX Rcaron O -30 KPX Rcaron Oacute -30 KPX Rcaron Ocircumflex -30 KPX Rcaron Odieresis -30 KPX Rcaron Ograve -30 KPX Rcaron Ohungarumlaut -30 KPX Rcaron Omacron -30 KPX Rcaron Oslash -30 KPX Rcaron Otilde -30 KPX Rcaron T -40 KPX Rcaron Tcaron -40 KPX Rcaron Tcommaaccent -40 KPX Rcaron U -30 KPX Rcaron Uacute -30 KPX Rcaron Ucircumflex -30 KPX Rcaron Udieresis -30 KPX Rcaron Ugrave -30 KPX Rcaron Uhungarumlaut -30 KPX Rcaron Umacron -30 KPX Rcaron Uogonek -30 KPX Rcaron Uring -30 KPX Rcaron V -55 KPX Rcaron W -35 KPX Rcaron Y -35 KPX Rcaron Yacute -35 KPX Rcaron Ydieresis -35 KPX Rcommaaccent O -30 KPX Rcommaaccent Oacute -30 KPX Rcommaaccent Ocircumflex -30 KPX Rcommaaccent Odieresis -30 KPX Rcommaaccent Ograve -30 KPX Rcommaaccent Ohungarumlaut -30 KPX Rcommaaccent Omacron -30 KPX Rcommaaccent Oslash -30 KPX Rcommaaccent Otilde -30 KPX Rcommaaccent T -40 KPX Rcommaaccent Tcaron -40 KPX Rcommaaccent Tcommaaccent -40 KPX Rcommaaccent U -30 KPX Rcommaaccent Uacute -30 KPX Rcommaaccent Ucircumflex -30 KPX Rcommaaccent Udieresis -30 KPX Rcommaaccent Ugrave -30 KPX Rcommaaccent Uhungarumlaut -30 KPX Rcommaaccent Umacron -30 KPX Rcommaaccent Uogonek -30 KPX Rcommaaccent Uring -30 KPX Rcommaaccent V -55 KPX Rcommaaccent W -35 KPX Rcommaaccent Y -35 KPX Rcommaaccent Yacute -35 KPX Rcommaaccent Ydieresis -35 KPX T A -90 KPX T Aacute -90 KPX T Abreve -90 KPX T Acircumflex -90 KPX T Adieresis -90 KPX T Agrave -90 KPX T Amacron -90 KPX T Aogonek -90 KPX T Aring -90 KPX T Atilde -90 KPX T O -18 KPX T Oacute -18 KPX T Ocircumflex -18 KPX T Odieresis -18 KPX T Ograve -18 KPX T Ohungarumlaut -18 KPX T Omacron -18 KPX T Oslash -18 KPX T Otilde -18 KPX T a -92 KPX T aacute -92 KPX T abreve -52 KPX T acircumflex -52 KPX T adieresis -52 KPX T agrave -52 KPX T amacron -52 KPX T aogonek -92 KPX T aring -92 KPX T atilde -52 KPX T colon -74 KPX T comma -74 KPX T e -92 KPX T eacute -92 KPX T ecaron -92 KPX T ecircumflex -92 KPX T edieresis -52 KPX T edotaccent -92 KPX T egrave -52 KPX T emacron -52 KPX T eogonek -92 KPX T hyphen -92 KPX T i -18 KPX T iacute -18 KPX T iogonek -18 KPX T o -92 KPX T oacute -92 KPX T ocircumflex -92 KPX T odieresis -92 KPX T ograve -92 KPX T ohungarumlaut -92 KPX T omacron -92 KPX T oslash -92 KPX T otilde -92 KPX T period -90 KPX T r -74 KPX T racute -74 KPX T rcaron -74 KPX T rcommaaccent -74 KPX T semicolon -74 KPX T u -92 KPX T uacute -92 KPX T ucircumflex -92 KPX T udieresis -92 KPX T ugrave -92 KPX T uhungarumlaut -92 KPX T umacron -92 KPX T uogonek -92 KPX T uring -92 KPX T w -74 KPX T y -34 KPX T yacute -34 KPX T ydieresis -34 KPX Tcaron A -90 KPX Tcaron Aacute -90 KPX Tcaron Abreve -90 KPX Tcaron Acircumflex -90 KPX Tcaron Adieresis -90 KPX Tcaron Agrave -90 KPX Tcaron Amacron -90 KPX Tcaron Aogonek -90 KPX Tcaron Aring -90 KPX Tcaron Atilde -90 KPX Tcaron O -18 KPX Tcaron Oacute -18 KPX Tcaron Ocircumflex -18 KPX Tcaron Odieresis -18 KPX Tcaron Ograve -18 KPX Tcaron Ohungarumlaut -18 KPX Tcaron Omacron -18 KPX Tcaron Oslash -18 KPX Tcaron Otilde -18 KPX Tcaron a -92 KPX Tcaron aacute -92 KPX Tcaron abreve -52 KPX Tcaron acircumflex -52 KPX Tcaron adieresis -52 KPX Tcaron agrave -52 KPX Tcaron amacron -52 KPX Tcaron aogonek -92 KPX Tcaron aring -92 KPX Tcaron atilde -52 KPX Tcaron colon -74 KPX Tcaron comma -74 KPX Tcaron e -92 KPX Tcaron eacute -92 KPX Tcaron ecaron -92 KPX Tcaron ecircumflex -92 KPX Tcaron edieresis -52 KPX Tcaron edotaccent -92 KPX Tcaron egrave -52 KPX Tcaron emacron -52 KPX Tcaron eogonek -92 KPX Tcaron hyphen -92 KPX Tcaron i -18 KPX Tcaron iacute -18 KPX Tcaron iogonek -18 KPX Tcaron o -92 KPX Tcaron oacute -92 KPX Tcaron ocircumflex -92 KPX Tcaron odieresis -92 KPX Tcaron ograve -92 KPX Tcaron ohungarumlaut -92 KPX Tcaron omacron -92 KPX Tcaron oslash -92 KPX Tcaron otilde -92 KPX Tcaron period -90 KPX Tcaron r -74 KPX Tcaron racute -74 KPX Tcaron rcaron -74 KPX Tcaron rcommaaccent -74 KPX Tcaron semicolon -74 KPX Tcaron u -92 KPX Tcaron uacute -92 KPX Tcaron ucircumflex -92 KPX Tcaron udieresis -92 KPX Tcaron ugrave -92 KPX Tcaron uhungarumlaut -92 KPX Tcaron umacron -92 KPX Tcaron uogonek -92 KPX Tcaron uring -92 KPX Tcaron w -74 KPX Tcaron y -34 KPX Tcaron yacute -34 KPX Tcaron ydieresis -34 KPX Tcommaaccent A -90 KPX Tcommaaccent Aacute -90 KPX Tcommaaccent Abreve -90 KPX Tcommaaccent Acircumflex -90 KPX Tcommaaccent Adieresis -90 KPX Tcommaaccent Agrave -90 KPX Tcommaaccent Amacron -90 KPX Tcommaaccent Aogonek -90 KPX Tcommaaccent Aring -90 KPX Tcommaaccent Atilde -90 KPX Tcommaaccent O -18 KPX Tcommaaccent Oacute -18 KPX Tcommaaccent Ocircumflex -18 KPX Tcommaaccent Odieresis -18 KPX Tcommaaccent Ograve -18 KPX Tcommaaccent Ohungarumlaut -18 KPX Tcommaaccent Omacron -18 KPX Tcommaaccent Oslash -18 KPX Tcommaaccent Otilde -18 KPX Tcommaaccent a -92 KPX Tcommaaccent aacute -92 KPX Tcommaaccent abreve -52 KPX Tcommaaccent acircumflex -52 KPX Tcommaaccent adieresis -52 KPX Tcommaaccent agrave -52 KPX Tcommaaccent amacron -52 KPX Tcommaaccent aogonek -92 KPX Tcommaaccent aring -92 KPX Tcommaaccent atilde -52 KPX Tcommaaccent colon -74 KPX Tcommaaccent comma -74 KPX Tcommaaccent e -92 KPX Tcommaaccent eacute -92 KPX Tcommaaccent ecaron -92 KPX Tcommaaccent ecircumflex -92 KPX Tcommaaccent edieresis -52 KPX Tcommaaccent edotaccent -92 KPX Tcommaaccent egrave -52 KPX Tcommaaccent emacron -52 KPX Tcommaaccent eogonek -92 KPX Tcommaaccent hyphen -92 KPX Tcommaaccent i -18 KPX Tcommaaccent iacute -18 KPX Tcommaaccent iogonek -18 KPX Tcommaaccent o -92 KPX Tcommaaccent oacute -92 KPX Tcommaaccent ocircumflex -92 KPX Tcommaaccent odieresis -92 KPX Tcommaaccent ograve -92 KPX Tcommaaccent ohungarumlaut -92 KPX Tcommaaccent omacron -92 KPX Tcommaaccent oslash -92 KPX Tcommaaccent otilde -92 KPX Tcommaaccent period -90 KPX Tcommaaccent r -74 KPX Tcommaaccent racute -74 KPX Tcommaaccent rcaron -74 KPX Tcommaaccent rcommaaccent -74 KPX Tcommaaccent semicolon -74 KPX Tcommaaccent u -92 KPX Tcommaaccent uacute -92 KPX Tcommaaccent ucircumflex -92 KPX Tcommaaccent udieresis -92 KPX Tcommaaccent ugrave -92 KPX Tcommaaccent uhungarumlaut -92 KPX Tcommaaccent umacron -92 KPX Tcommaaccent uogonek -92 KPX Tcommaaccent uring -92 KPX Tcommaaccent w -74 KPX Tcommaaccent y -34 KPX Tcommaaccent yacute -34 KPX Tcommaaccent ydieresis -34 KPX U A -60 KPX U Aacute -60 KPX U Abreve -60 KPX U Acircumflex -60 KPX U Adieresis -60 KPX U Agrave -60 KPX U Amacron -60 KPX U Aogonek -60 KPX U Aring -60 KPX U Atilde -60 KPX U comma -50 KPX U period -50 KPX Uacute A -60 KPX Uacute Aacute -60 KPX Uacute Abreve -60 KPX Uacute Acircumflex -60 KPX Uacute Adieresis -60 KPX Uacute Agrave -60 KPX Uacute Amacron -60 KPX Uacute Aogonek -60 KPX Uacute Aring -60 KPX Uacute Atilde -60 KPX Uacute comma -50 KPX Uacute period -50 KPX Ucircumflex A -60 KPX Ucircumflex Aacute -60 KPX Ucircumflex Abreve -60 KPX Ucircumflex Acircumflex -60 KPX Ucircumflex Adieresis -60 KPX Ucircumflex Agrave -60 KPX Ucircumflex Amacron -60 KPX Ucircumflex Aogonek -60 KPX Ucircumflex Aring -60 KPX Ucircumflex Atilde -60 KPX Ucircumflex comma -50 KPX Ucircumflex period -50 KPX Udieresis A -60 KPX Udieresis Aacute -60 KPX Udieresis Abreve -60 KPX Udieresis Acircumflex -60 KPX Udieresis Adieresis -60 KPX Udieresis Agrave -60 KPX Udieresis Amacron -60 KPX Udieresis Aogonek -60 KPX Udieresis Aring -60 KPX Udieresis Atilde -60 KPX Udieresis comma -50 KPX Udieresis period -50 KPX Ugrave A -60 KPX Ugrave Aacute -60 KPX Ugrave Abreve -60 KPX Ugrave Acircumflex -60 KPX Ugrave Adieresis -60 KPX Ugrave Agrave -60 KPX Ugrave Amacron -60 KPX Ugrave Aogonek -60 KPX Ugrave Aring -60 KPX Ugrave Atilde -60 KPX Ugrave comma -50 KPX Ugrave period -50 KPX Uhungarumlaut A -60 KPX Uhungarumlaut Aacute -60 KPX Uhungarumlaut Abreve -60 KPX Uhungarumlaut Acircumflex -60 KPX Uhungarumlaut Adieresis -60 KPX Uhungarumlaut Agrave -60 KPX Uhungarumlaut Amacron -60 KPX Uhungarumlaut Aogonek -60 KPX Uhungarumlaut Aring -60 KPX Uhungarumlaut Atilde -60 KPX Uhungarumlaut comma -50 KPX Uhungarumlaut period -50 KPX Umacron A -60 KPX Umacron Aacute -60 KPX Umacron Abreve -60 KPX Umacron Acircumflex -60 KPX Umacron Adieresis -60 KPX Umacron Agrave -60 KPX Umacron Amacron -60 KPX Umacron Aogonek -60 KPX Umacron Aring -60 KPX Umacron Atilde -60 KPX Umacron comma -50 KPX Umacron period -50 KPX Uogonek A -60 KPX Uogonek Aacute -60 KPX Uogonek Abreve -60 KPX Uogonek Acircumflex -60 KPX Uogonek Adieresis -60 KPX Uogonek Agrave -60 KPX Uogonek Amacron -60 KPX Uogonek Aogonek -60 KPX Uogonek Aring -60 KPX Uogonek Atilde -60 KPX Uogonek comma -50 KPX Uogonek period -50 KPX Uring A -60 KPX Uring Aacute -60 KPX Uring Abreve -60 KPX Uring Acircumflex -60 KPX Uring Adieresis -60 KPX Uring Agrave -60 KPX Uring Amacron -60 KPX Uring Aogonek -60 KPX Uring Aring -60 KPX Uring Atilde -60 KPX Uring comma -50 KPX Uring period -50 KPX V A -135 KPX V Aacute -135 KPX V Abreve -135 KPX V Acircumflex -135 KPX V Adieresis -135 KPX V Agrave -135 KPX V Amacron -135 KPX V Aogonek -135 KPX V Aring -135 KPX V Atilde -135 KPX V G -30 KPX V Gbreve -30 KPX V Gcommaaccent -30 KPX V O -45 KPX V Oacute -45 KPX V Ocircumflex -45 KPX V Odieresis -45 KPX V Ograve -45 KPX V Ohungarumlaut -45 KPX V Omacron -45 KPX V Oslash -45 KPX V Otilde -45 KPX V a -92 KPX V aacute -92 KPX V abreve -92 KPX V acircumflex -92 KPX V adieresis -92 KPX V agrave -92 KPX V amacron -92 KPX V aogonek -92 KPX V aring -92 KPX V atilde -92 KPX V colon -92 KPX V comma -129 KPX V e -100 KPX V eacute -100 KPX V ecaron -100 KPX V ecircumflex -100 KPX V edieresis -100 KPX V edotaccent -100 KPX V egrave -100 KPX V emacron -100 KPX V eogonek -100 KPX V hyphen -74 KPX V i -37 KPX V iacute -37 KPX V icircumflex -37 KPX V idieresis -37 KPX V igrave -37 KPX V imacron -37 KPX V iogonek -37 KPX V o -100 KPX V oacute -100 KPX V ocircumflex -100 KPX V odieresis -100 KPX V ograve -100 KPX V ohungarumlaut -100 KPX V omacron -100 KPX V oslash -100 KPX V otilde -100 KPX V period -145 KPX V semicolon -92 KPX V u -92 KPX V uacute -92 KPX V ucircumflex -92 KPX V udieresis -92 KPX V ugrave -92 KPX V uhungarumlaut -92 KPX V umacron -92 KPX V uogonek -92 KPX V uring -92 KPX W A -120 KPX W Aacute -120 KPX W Abreve -120 KPX W Acircumflex -120 KPX W Adieresis -120 KPX W Agrave -120 KPX W Amacron -120 KPX W Aogonek -120 KPX W Aring -120 KPX W Atilde -120 KPX W O -10 KPX W Oacute -10 KPX W Ocircumflex -10 KPX W Odieresis -10 KPX W Ograve -10 KPX W Ohungarumlaut -10 KPX W Omacron -10 KPX W Oslash -10 KPX W Otilde -10 KPX W a -65 KPX W aacute -65 KPX W abreve -65 KPX W acircumflex -65 KPX W adieresis -65 KPX W agrave -65 KPX W amacron -65 KPX W aogonek -65 KPX W aring -65 KPX W atilde -65 KPX W colon -55 KPX W comma -92 KPX W e -65 KPX W eacute -65 KPX W ecaron -65 KPX W ecircumflex -65 KPX W edieresis -65 KPX W edotaccent -65 KPX W egrave -65 KPX W emacron -65 KPX W eogonek -65 KPX W hyphen -37 KPX W i -18 KPX W iacute -18 KPX W iogonek -18 KPX W o -75 KPX W oacute -75 KPX W ocircumflex -75 KPX W odieresis -75 KPX W ograve -75 KPX W ohungarumlaut -75 KPX W omacron -75 KPX W oslash -75 KPX W otilde -75 KPX W period -92 KPX W semicolon -55 KPX W u -50 KPX W uacute -50 KPX W ucircumflex -50 KPX W udieresis -50 KPX W ugrave -50 KPX W uhungarumlaut -50 KPX W umacron -50 KPX W uogonek -50 KPX W uring -50 KPX W y -60 KPX W yacute -60 KPX W ydieresis -60 KPX Y A -110 KPX Y Aacute -110 KPX Y Abreve -110 KPX Y Acircumflex -110 KPX Y Adieresis -110 KPX Y Agrave -110 KPX Y Amacron -110 KPX Y Aogonek -110 KPX Y Aring -110 KPX Y Atilde -110 KPX Y O -35 KPX Y Oacute -35 KPX Y Ocircumflex -35 KPX Y Odieresis -35 KPX Y Ograve -35 KPX Y Ohungarumlaut -35 KPX Y Omacron -35 KPX Y Oslash -35 KPX Y Otilde -35 KPX Y a -85 KPX Y aacute -85 KPX Y abreve -85 KPX Y acircumflex -85 KPX Y adieresis -85 KPX Y agrave -85 KPX Y amacron -85 KPX Y aogonek -85 KPX Y aring -85 KPX Y atilde -85 KPX Y colon -92 KPX Y comma -92 KPX Y e -111 KPX Y eacute -111 KPX Y ecaron -111 KPX Y ecircumflex -111 KPX Y edieresis -71 KPX Y edotaccent -111 KPX Y egrave -71 KPX Y emacron -71 KPX Y eogonek -111 KPX Y hyphen -92 KPX Y i -37 KPX Y iacute -37 KPX Y iogonek -37 KPX Y o -111 KPX Y oacute -111 KPX Y ocircumflex -111 KPX Y odieresis -111 KPX Y ograve -111 KPX Y ohungarumlaut -111 KPX Y omacron -111 KPX Y oslash -111 KPX Y otilde -111 KPX Y period -92 KPX Y semicolon -92 KPX Y u -92 KPX Y uacute -92 KPX Y ucircumflex -92 KPX Y udieresis -92 KPX Y ugrave -92 KPX Y uhungarumlaut -92 KPX Y umacron -92 KPX Y uogonek -92 KPX Y uring -92 KPX Yacute A -110 KPX Yacute Aacute -110 KPX Yacute Abreve -110 KPX Yacute Acircumflex -110 KPX Yacute Adieresis -110 KPX Yacute Agrave -110 KPX Yacute Amacron -110 KPX Yacute Aogonek -110 KPX Yacute Aring -110 KPX Yacute Atilde -110 KPX Yacute O -35 KPX Yacute Oacute -35 KPX Yacute Ocircumflex -35 KPX Yacute Odieresis -35 KPX Yacute Ograve -35 KPX Yacute Ohungarumlaut -35 KPX Yacute Omacron -35 KPX Yacute Oslash -35 KPX Yacute Otilde -35 KPX Yacute a -85 KPX Yacute aacute -85 KPX Yacute abreve -85 KPX Yacute acircumflex -85 KPX Yacute adieresis -85 KPX Yacute agrave -85 KPX Yacute amacron -85 KPX Yacute aogonek -85 KPX Yacute aring -85 KPX Yacute atilde -85 KPX Yacute colon -92 KPX Yacute comma -92 KPX Yacute e -111 KPX Yacute eacute -111 KPX Yacute ecaron -111 KPX Yacute ecircumflex -111 KPX Yacute edieresis -71 KPX Yacute edotaccent -111 KPX Yacute egrave -71 KPX Yacute emacron -71 KPX Yacute eogonek -111 KPX Yacute hyphen -92 KPX Yacute i -37 KPX Yacute iacute -37 KPX Yacute iogonek -37 KPX Yacute o -111 KPX Yacute oacute -111 KPX Yacute ocircumflex -111 KPX Yacute odieresis -111 KPX Yacute ograve -111 KPX Yacute ohungarumlaut -111 KPX Yacute omacron -111 KPX Yacute oslash -111 KPX Yacute otilde -111 KPX Yacute period -92 KPX Yacute semicolon -92 KPX Yacute u -92 KPX Yacute uacute -92 KPX Yacute ucircumflex -92 KPX Yacute udieresis -92 KPX Yacute ugrave -92 KPX Yacute uhungarumlaut -92 KPX Yacute umacron -92 KPX Yacute uogonek -92 KPX Yacute uring -92 KPX Ydieresis A -110 KPX Ydieresis Aacute -110 KPX Ydieresis Abreve -110 KPX Ydieresis Acircumflex -110 KPX Ydieresis Adieresis -110 KPX Ydieresis Agrave -110 KPX Ydieresis Amacron -110 KPX Ydieresis Aogonek -110 KPX Ydieresis Aring -110 KPX Ydieresis Atilde -110 KPX Ydieresis O -35 KPX Ydieresis Oacute -35 KPX Ydieresis Ocircumflex -35 KPX Ydieresis Odieresis -35 KPX Ydieresis Ograve -35 KPX Ydieresis Ohungarumlaut -35 KPX Ydieresis Omacron -35 KPX Ydieresis Oslash -35 KPX Ydieresis Otilde -35 KPX Ydieresis a -85 KPX Ydieresis aacute -85 KPX Ydieresis abreve -85 KPX Ydieresis acircumflex -85 KPX Ydieresis adieresis -85 KPX Ydieresis agrave -85 KPX Ydieresis amacron -85 KPX Ydieresis aogonek -85 KPX Ydieresis aring -85 KPX Ydieresis atilde -85 KPX Ydieresis colon -92 KPX Ydieresis comma -92 KPX Ydieresis e -111 KPX Ydieresis eacute -111 KPX Ydieresis ecaron -111 KPX Ydieresis ecircumflex -111 KPX Ydieresis edieresis -71 KPX Ydieresis edotaccent -111 KPX Ydieresis egrave -71 KPX Ydieresis emacron -71 KPX Ydieresis eogonek -111 KPX Ydieresis hyphen -92 KPX Ydieresis i -37 KPX Ydieresis iacute -37 KPX Ydieresis iogonek -37 KPX Ydieresis o -111 KPX Ydieresis oacute -111 KPX Ydieresis ocircumflex -111 KPX Ydieresis odieresis -111 KPX Ydieresis ograve -111 KPX Ydieresis ohungarumlaut -111 KPX Ydieresis omacron -111 KPX Ydieresis oslash -111 KPX Ydieresis otilde -111 KPX Ydieresis period -92 KPX Ydieresis semicolon -92 KPX Ydieresis u -92 KPX Ydieresis uacute -92 KPX Ydieresis ucircumflex -92 KPX Ydieresis udieresis -92 KPX Ydieresis ugrave -92 KPX Ydieresis uhungarumlaut -92 KPX Ydieresis umacron -92 KPX Ydieresis uogonek -92 KPX Ydieresis uring -92 KPX a v -25 KPX aacute v -25 KPX abreve v -25 KPX acircumflex v -25 KPX adieresis v -25 KPX agrave v -25 KPX amacron v -25 KPX aogonek v -25 KPX aring v -25 KPX atilde v -25 KPX b b -10 KPX b period -40 KPX b u -20 KPX b uacute -20 KPX b ucircumflex -20 KPX b udieresis -20 KPX b ugrave -20 KPX b uhungarumlaut -20 KPX b umacron -20 KPX b uogonek -20 KPX b uring -20 KPX b v -15 KPX comma quotedblright -45 KPX comma quoteright -55 KPX d w -15 KPX dcroat w -15 KPX e v -15 KPX eacute v -15 KPX ecaron v -15 KPX ecircumflex v -15 KPX edieresis v -15 KPX edotaccent v -15 KPX egrave v -15 KPX emacron v -15 KPX eogonek v -15 KPX f comma -15 KPX f dotlessi -35 KPX f i -25 KPX f o -25 KPX f oacute -25 KPX f ocircumflex -25 KPX f odieresis -25 KPX f ograve -25 KPX f ohungarumlaut -25 KPX f omacron -25 KPX f oslash -25 KPX f otilde -25 KPX f period -15 KPX f quotedblright 50 KPX f quoteright 55 KPX g period -15 KPX gbreve period -15 KPX gcommaaccent period -15 KPX h y -15 KPX h yacute -15 KPX h ydieresis -15 KPX i v -10 KPX iacute v -10 KPX icircumflex v -10 KPX idieresis v -10 KPX igrave v -10 KPX imacron v -10 KPX iogonek v -10 KPX k e -10 KPX k eacute -10 KPX k ecaron -10 KPX k ecircumflex -10 KPX k edieresis -10 KPX k edotaccent -10 KPX k egrave -10 KPX k emacron -10 KPX k eogonek -10 KPX k o -15 KPX k oacute -15 KPX k ocircumflex -15 KPX k odieresis -15 KPX k ograve -15 KPX k ohungarumlaut -15 KPX k omacron -15 KPX k oslash -15 KPX k otilde -15 KPX k y -15 KPX k yacute -15 KPX k ydieresis -15 KPX kcommaaccent e -10 KPX kcommaaccent eacute -10 KPX kcommaaccent ecaron -10 KPX kcommaaccent ecircumflex -10 KPX kcommaaccent edieresis -10 KPX kcommaaccent edotaccent -10 KPX kcommaaccent egrave -10 KPX kcommaaccent emacron -10 KPX kcommaaccent eogonek -10 KPX kcommaaccent o -15 KPX kcommaaccent oacute -15 KPX kcommaaccent ocircumflex -15 KPX kcommaaccent odieresis -15 KPX kcommaaccent ograve -15 KPX kcommaaccent ohungarumlaut -15 KPX kcommaaccent omacron -15 KPX kcommaaccent oslash -15 KPX kcommaaccent otilde -15 KPX kcommaaccent y -15 KPX kcommaaccent yacute -15 KPX kcommaaccent ydieresis -15 KPX n v -40 KPX nacute v -40 KPX ncaron v -40 KPX ncommaaccent v -40 KPX ntilde v -40 KPX o v -10 KPX o w -10 KPX oacute v -10 KPX oacute w -10 KPX ocircumflex v -10 KPX ocircumflex w -10 KPX odieresis v -10 KPX odieresis w -10 KPX ograve v -10 KPX ograve w -10 KPX ohungarumlaut v -10 KPX ohungarumlaut w -10 KPX omacron v -10 KPX omacron w -10 KPX oslash v -10 KPX oslash w -10 KPX otilde v -10 KPX otilde w -10 KPX period quotedblright -55 KPX period quoteright -55 KPX quotedblleft A -10 KPX quotedblleft Aacute -10 KPX quotedblleft Abreve -10 KPX quotedblleft Acircumflex -10 KPX quotedblleft Adieresis -10 KPX quotedblleft Agrave -10 KPX quotedblleft Amacron -10 KPX quotedblleft Aogonek -10 KPX quotedblleft Aring -10 KPX quotedblleft Atilde -10 KPX quoteleft A -10 KPX quoteleft Aacute -10 KPX quoteleft Abreve -10 KPX quoteleft Acircumflex -10 KPX quoteleft Adieresis -10 KPX quoteleft Agrave -10 KPX quoteleft Amacron -10 KPX quoteleft Aogonek -10 KPX quoteleft Aring -10 KPX quoteleft Atilde -10 KPX quoteleft quoteleft -63 KPX quoteright d -20 KPX quoteright dcroat -20 KPX quoteright quoteright -63 KPX quoteright r -20 KPX quoteright racute -20 KPX quoteright rcaron -20 KPX quoteright rcommaaccent -20 KPX quoteright s -37 KPX quoteright sacute -37 KPX quoteright scaron -37 KPX quoteright scedilla -37 KPX quoteright scommaaccent -37 KPX quoteright space -74 KPX quoteright v -20 KPX r c -18 KPX r cacute -18 KPX r ccaron -18 KPX r ccedilla -18 KPX r comma -92 KPX r e -18 KPX r eacute -18 KPX r ecaron -18 KPX r ecircumflex -18 KPX r edieresis -18 KPX r edotaccent -18 KPX r egrave -18 KPX r emacron -18 KPX r eogonek -18 KPX r g -10 KPX r gbreve -10 KPX r gcommaaccent -10 KPX r hyphen -37 KPX r n -15 KPX r nacute -15 KPX r ncaron -15 KPX r ncommaaccent -15 KPX r ntilde -15 KPX r o -18 KPX r oacute -18 KPX r ocircumflex -18 KPX r odieresis -18 KPX r ograve -18 KPX r ohungarumlaut -18 KPX r omacron -18 KPX r oslash -18 KPX r otilde -18 KPX r p -10 KPX r period -100 KPX r q -18 KPX r v -10 KPX racute c -18 KPX racute cacute -18 KPX racute ccaron -18 KPX racute ccedilla -18 KPX racute comma -92 KPX racute e -18 KPX racute eacute -18 KPX racute ecaron -18 KPX racute ecircumflex -18 KPX racute edieresis -18 KPX racute edotaccent -18 KPX racute egrave -18 KPX racute emacron -18 KPX racute eogonek -18 KPX racute g -10 KPX racute gbreve -10 KPX racute gcommaaccent -10 KPX racute hyphen -37 KPX racute n -15 KPX racute nacute -15 KPX racute ncaron -15 KPX racute ncommaaccent -15 KPX racute ntilde -15 KPX racute o -18 KPX racute oacute -18 KPX racute ocircumflex -18 KPX racute odieresis -18 KPX racute ograve -18 KPX racute ohungarumlaut -18 KPX racute omacron -18 KPX racute oslash -18 KPX racute otilde -18 KPX racute p -10 KPX racute period -100 KPX racute q -18 KPX racute v -10 KPX rcaron c -18 KPX rcaron cacute -18 KPX rcaron ccaron -18 KPX rcaron ccedilla -18 KPX rcaron comma -92 KPX rcaron e -18 KPX rcaron eacute -18 KPX rcaron ecaron -18 KPX rcaron ecircumflex -18 KPX rcaron edieresis -18 KPX rcaron edotaccent -18 KPX rcaron egrave -18 KPX rcaron emacron -18 KPX rcaron eogonek -18 KPX rcaron g -10 KPX rcaron gbreve -10 KPX rcaron gcommaaccent -10 KPX rcaron hyphen -37 KPX rcaron n -15 KPX rcaron nacute -15 KPX rcaron ncaron -15 KPX rcaron ncommaaccent -15 KPX rcaron ntilde -15 KPX rcaron o -18 KPX rcaron oacute -18 KPX rcaron ocircumflex -18 KPX rcaron odieresis -18 KPX rcaron ograve -18 KPX rcaron ohungarumlaut -18 KPX rcaron omacron -18 KPX rcaron oslash -18 KPX rcaron otilde -18 KPX rcaron p -10 KPX rcaron period -100 KPX rcaron q -18 KPX rcaron v -10 KPX rcommaaccent c -18 KPX rcommaaccent cacute -18 KPX rcommaaccent ccaron -18 KPX rcommaaccent ccedilla -18 KPX rcommaaccent comma -92 KPX rcommaaccent e -18 KPX rcommaaccent eacute -18 KPX rcommaaccent ecaron -18 KPX rcommaaccent ecircumflex -18 KPX rcommaaccent edieresis -18 KPX rcommaaccent edotaccent -18 KPX rcommaaccent egrave -18 KPX rcommaaccent emacron -18 KPX rcommaaccent eogonek -18 KPX rcommaaccent g -10 KPX rcommaaccent gbreve -10 KPX rcommaaccent gcommaaccent -10 KPX rcommaaccent hyphen -37 KPX rcommaaccent n -15 KPX rcommaaccent nacute -15 KPX rcommaaccent ncaron -15 KPX rcommaaccent ncommaaccent -15 KPX rcommaaccent ntilde -15 KPX rcommaaccent o -18 KPX rcommaaccent oacute -18 KPX rcommaaccent ocircumflex -18 KPX rcommaaccent odieresis -18 KPX rcommaaccent ograve -18 KPX rcommaaccent ohungarumlaut -18 KPX rcommaaccent omacron -18 KPX rcommaaccent oslash -18 KPX rcommaaccent otilde -18 KPX rcommaaccent p -10 KPX rcommaaccent period -100 KPX rcommaaccent q -18 KPX rcommaaccent v -10 KPX space A -55 KPX space Aacute -55 KPX space Abreve -55 KPX space Acircumflex -55 KPX space Adieresis -55 KPX space Agrave -55 KPX space Amacron -55 KPX space Aogonek -55 KPX space Aring -55 KPX space Atilde -55 KPX space T -30 KPX space Tcaron -30 KPX space Tcommaaccent -30 KPX space V -45 KPX space W -30 KPX space Y -55 KPX space Yacute -55 KPX space Ydieresis -55 KPX v a -10 KPX v aacute -10 KPX v abreve -10 KPX v acircumflex -10 KPX v adieresis -10 KPX v agrave -10 KPX v amacron -10 KPX v aogonek -10 KPX v aring -10 KPX v atilde -10 KPX v comma -55 KPX v e -10 KPX v eacute -10 KPX v ecaron -10 KPX v ecircumflex -10 KPX v edieresis -10 KPX v edotaccent -10 KPX v egrave -10 KPX v emacron -10 KPX v eogonek -10 KPX v o -10 KPX v oacute -10 KPX v ocircumflex -10 KPX v odieresis -10 KPX v ograve -10 KPX v ohungarumlaut -10 KPX v omacron -10 KPX v oslash -10 KPX v otilde -10 KPX v period -70 KPX w comma -55 KPX w o -10 KPX w oacute -10 KPX w ocircumflex -10 KPX w odieresis -10 KPX w ograve -10 KPX w ohungarumlaut -10 KPX w omacron -10 KPX w oslash -10 KPX w otilde -10 KPX w period -70 KPX y comma -55 KPX y e -10 KPX y eacute -10 KPX y ecaron -10 KPX y ecircumflex -10 KPX y edieresis -10 KPX y edotaccent -10 KPX y egrave -10 KPX y emacron -10 KPX y eogonek -10 KPX y o -25 KPX y oacute -25 KPX y ocircumflex -25 KPX y odieresis -25 KPX y ograve -25 KPX y ohungarumlaut -25 KPX y omacron -25 KPX y oslash -25 KPX y otilde -25 KPX y period -70 KPX yacute comma -55 KPX yacute e -10 KPX yacute eacute -10 KPX yacute ecaron -10 KPX yacute ecircumflex -10 KPX yacute edieresis -10 KPX yacute edotaccent -10 KPX yacute egrave -10 KPX yacute emacron -10 KPX yacute eogonek -10 KPX yacute o -25 KPX yacute oacute -25 KPX yacute ocircumflex -25 KPX yacute odieresis -25 KPX yacute ograve -25 KPX yacute ohungarumlaut -25 KPX yacute omacron -25 KPX yacute oslash -25 KPX yacute otilde -25 KPX yacute period -70 KPX ydieresis comma -55 KPX ydieresis e -10 KPX ydieresis eacute -10 KPX ydieresis ecaron -10 KPX ydieresis ecircumflex -10 KPX ydieresis edieresis -10 KPX ydieresis edotaccent -10 KPX ydieresis egrave -10 KPX ydieresis emacron -10 KPX ydieresis eogonek -10 KPX ydieresis o -25 KPX ydieresis oacute -25 KPX ydieresis ocircumflex -25 KPX ydieresis odieresis -25 KPX ydieresis ograve -25 KPX ydieresis ohungarumlaut -25 KPX ydieresis omacron -25 KPX ydieresis oslash -25 KPX ydieresis otilde -25 KPX ydieresis period -70 EndKernPairs EndKernData EndFontMetrics gle-graphics-4.2.4c/src/fonts/Adobe-Core35_AFMs-314/NewCenturySchlbk-Roman.afm0000664000000000000000000013402311405446017025072 0ustar rootrootStartFontMetrics 4.1 Comment Copyright (c) 1985, 1987, 1989, 1991, 1992, 1997 Adobe Systems Incorporated. All Rights Reserved. Comment Creation Date: Mon Jun 23 16:42:59 1997 Comment UniqueID 43091 Comment VMusage 42481 53506 FontName NewCenturySchlbk-Roman FullName New Century Schoolbook Roman FamilyName New Century Schoolbook Weight Medium ItalicAngle 0 IsFixedPitch false FontBBox -195 -250 1000 965 UnderlinePosition -100 UnderlineThickness 50 Version 002.000 Notice Copyright (c) 1985, 1987, 1989, 1991, 1992, 1997 Adobe Systems Incorporated. All Rights Reserved. EncodingScheme AdobeStandardEncoding CapHeight 722 XHeight 464 Ascender 737 Descender -205 StdHW 45 StdVW 92 StartCharMetrics 314 C 32 ; WX 278 ; N space ; B 0 0 0 0 ; C 33 ; WX 296 ; N exclam ; B 86 -15 210 737 ; C 34 ; WX 389 ; N quotedbl ; B 61 443 328 737 ; C 35 ; WX 556 ; N numbersign ; B 28 0 528 690 ; C 36 ; WX 556 ; N dollar ; B 45 -138 511 813 ; C 37 ; WX 833 ; N percent ; B 43 -15 790 705 ; C 38 ; WX 815 ; N ampersand ; B 51 -15 775 737 ; C 39 ; WX 204 ; N quoteright ; B 25 443 179 737 ; C 40 ; WX 333 ; N parenleft ; B 40 -117 279 745 ; C 41 ; WX 333 ; N parenright ; B 54 -117 293 745 ; C 42 ; WX 500 ; N asterisk ; B 57 306 443 737 ; C 43 ; WX 606 ; N plus ; B 50 0 556 506 ; C 44 ; WX 278 ; N comma ; B 62 -185 216 109 ; C 45 ; WX 333 ; N hyphen ; B 42 199 291 277 ; C 46 ; WX 278 ; N period ; B 77 -15 201 109 ; C 47 ; WX 278 ; N slash ; B -32 -15 310 737 ; C 48 ; WX 556 ; N zero ; B 42 -15 514 705 ; C 49 ; WX 556 ; N one ; B 100 0 496 705 ; C 50 ; WX 556 ; N two ; B 35 0 505 705 ; C 51 ; WX 556 ; N three ; B 42 -15 498 705 ; C 52 ; WX 556 ; N four ; B 28 0 528 705 ; C 53 ; WX 556 ; N five ; B 46 -15 502 705 ; C 54 ; WX 556 ; N six ; B 41 -15 515 705 ; C 55 ; WX 556 ; N seven ; B 59 -15 508 705 ; C 56 ; WX 556 ; N eight ; B 42 -15 514 705 ; C 57 ; WX 556 ; N nine ; B 41 -15 515 705 ; C 58 ; WX 278 ; N colon ; B 77 -15 201 474 ; C 59 ; WX 278 ; N semicolon ; B 62 -185 216 474 ; C 60 ; WX 606 ; N less ; B 50 -8 556 514 ; C 61 ; WX 606 ; N equal ; B 50 117 556 389 ; C 62 ; WX 606 ; N greater ; B 50 -8 556 514 ; C 63 ; WX 444 ; N question ; B 29 -15 415 737 ; C 64 ; WX 737 ; N at ; B -8 -15 744 737 ; C 65 ; WX 722 ; N A ; B -8 0 730 737 ; C 66 ; WX 722 ; N B ; B 29 0 669 722 ; C 67 ; WX 722 ; N C ; B 45 -15 668 737 ; C 68 ; WX 778 ; N D ; B 29 0 733 722 ; C 69 ; WX 722 ; N E ; B 29 0 663 722 ; C 70 ; WX 667 ; N F ; B 29 0 638 722 ; C 71 ; WX 778 ; N G ; B 45 -15 775 737 ; C 72 ; WX 833 ; N H ; B 29 0 804 722 ; C 73 ; WX 407 ; N I ; B 38 0 369 722 ; C 74 ; WX 556 ; N J ; B 5 -15 540 722 ; C 75 ; WX 778 ; N K ; B 29 0 803 722 ; C 76 ; WX 667 ; N L ; B 29 0 644 722 ; C 77 ; WX 944 ; N M ; B 29 0 915 722 ; C 78 ; WX 815 ; N N ; B 24 -15 791 722 ; C 79 ; WX 778 ; N O ; B 45 -15 733 737 ; C 80 ; WX 667 ; N P ; B 29 0 650 722 ; C 81 ; WX 778 ; N Q ; B 45 -190 748 737 ; C 82 ; WX 722 ; N R ; B 29 -15 713 722 ; C 83 ; WX 630 ; N S ; B 47 -15 583 737 ; C 84 ; WX 667 ; N T ; B 19 0 648 722 ; C 85 ; WX 815 ; N U ; B 16 -15 799 722 ; C 86 ; WX 722 ; N V ; B -8 -10 730 722 ; C 87 ; WX 981 ; N W ; B 5 -10 976 722 ; C 88 ; WX 704 ; N X ; B -8 0 712 722 ; C 89 ; WX 704 ; N Y ; B -11 0 715 722 ; C 90 ; WX 611 ; N Z ; B 24 0 576 722 ; C 91 ; WX 333 ; N bracketleft ; B 126 -109 315 737 ; C 92 ; WX 606 ; N backslash ; B 132 -15 474 737 ; C 93 ; WX 333 ; N bracketright ; B 18 -109 207 737 ; C 94 ; WX 606 ; N asciicircum ; B 89 325 517 690 ; C 95 ; WX 500 ; N underscore ; B 0 -125 500 -75 ; C 96 ; WX 204 ; N quoteleft ; B 25 443 179 737 ; C 97 ; WX 556 ; N a ; B 44 -15 542 479 ; C 98 ; WX 556 ; N b ; B 10 -15 522 737 ; C 99 ; WX 444 ; N c ; B 34 -15 426 479 ; C 100 ; WX 574 ; N d ; B 34 -15 552 737 ; C 101 ; WX 500 ; N e ; B 34 -15 466 479 ; C 102 ; WX 333 ; N f ; B 18 0 437 737 ; L i fi ; L l fl ; C 103 ; WX 537 ; N g ; B 23 -205 542 494 ; C 104 ; WX 611 ; N h ; B 7 0 592 737 ; C 105 ; WX 315 ; N i ; B 18 0 286 722 ; C 106 ; WX 296 ; N j ; B -86 -205 216 722 ; C 107 ; WX 593 ; N k ; B 10 0 589 737 ; C 108 ; WX 315 ; N l ; B 18 0 286 737 ; C 109 ; WX 889 ; N m ; B 26 0 863 479 ; C 110 ; WX 611 ; N n ; B 22 0 589 479 ; C 111 ; WX 500 ; N o ; B 34 -15 466 479 ; C 112 ; WX 574 ; N p ; B 22 -205 540 479 ; C 113 ; WX 556 ; N q ; B 34 -205 552 479 ; C 114 ; WX 444 ; N r ; B 18 0 434 479 ; C 115 ; WX 463 ; N s ; B 46 -15 417 479 ; C 116 ; WX 389 ; N t ; B 18 -15 371 666 ; C 117 ; WX 611 ; N u ; B 22 -15 589 464 ; C 118 ; WX 537 ; N v ; B -6 -10 515 464 ; C 119 ; WX 778 ; N w ; B 1 -10 749 464 ; C 120 ; WX 537 ; N x ; B 8 0 529 464 ; C 121 ; WX 537 ; N y ; B 4 -205 533 464 ; C 122 ; WX 481 ; N z ; B 42 0 439 464 ; C 123 ; WX 333 ; N braceleft ; B 54 -109 279 737 ; C 124 ; WX 606 ; N bar ; B 267 -250 339 750 ; C 125 ; WX 333 ; N braceright ; B 54 -109 279 737 ; C 126 ; WX 606 ; N asciitilde ; B 72 184 534 322 ; C 161 ; WX 296 ; N exclamdown ; B 86 -205 210 547 ; C 162 ; WX 556 ; N cent ; B 74 -141 482 584 ; C 163 ; WX 556 ; N sterling ; B 18 -15 538 705 ; C 164 ; WX 167 ; N fraction ; B -195 -15 362 705 ; C 165 ; WX 556 ; N yen ; B -1 0 557 690 ; C 166 ; WX 556 ; N florin ; B 0 -205 538 737 ; C 167 ; WX 500 ; N section ; B 55 -147 445 737 ; C 168 ; WX 556 ; N currency ; B 26 93 530 597 ; C 169 ; WX 204 ; N quotesingle ; B 59 443 145 737 ; C 170 ; WX 389 ; N quotedblleft ; B 25 443 364 737 ; C 171 ; WX 426 ; N guillemotleft ; B 39 78 387 398 ; C 172 ; WX 259 ; N guilsinglleft ; B 39 78 220 398 ; C 173 ; WX 259 ; N guilsinglright ; B 39 78 220 398 ; C 174 ; WX 611 ; N fi ; B 18 0 582 737 ; C 175 ; WX 611 ; N fl ; B 18 0 582 737 ; C 177 ; WX 556 ; N endash ; B 0 208 556 268 ; C 178 ; WX 500 ; N dagger ; B 42 -147 458 737 ; C 179 ; WX 500 ; N daggerdbl ; B 42 -149 458 737 ; C 180 ; WX 278 ; N periodcentered ; B 71 238 207 374 ; C 182 ; WX 606 ; N paragraph ; B 60 -132 546 722 ; C 183 ; WX 606 ; N bullet ; B 122 180 484 542 ; C 184 ; WX 204 ; N quotesinglbase ; B 25 -185 179 109 ; C 185 ; WX 389 ; N quotedblbase ; B 25 -185 364 109 ; C 186 ; WX 389 ; N quotedblright ; B 25 443 364 737 ; C 187 ; WX 426 ; N guillemotright ; B 39 78 387 398 ; C 188 ; WX 1000 ; N ellipsis ; B 105 -15 895 109 ; C 189 ; WX 1000 ; N perthousand ; B 6 -15 994 705 ; C 191 ; WX 444 ; N questiondown ; B 29 -205 415 547 ; C 193 ; WX 333 ; N grave ; B 17 528 242 699 ; C 194 ; WX 333 ; N acute ; B 91 528 316 699 ; C 195 ; WX 333 ; N circumflex ; B 10 528 323 695 ; C 196 ; WX 333 ; N tilde ; B 1 553 332 655 ; C 197 ; WX 333 ; N macron ; B 10 568 323 623 ; C 198 ; WX 333 ; N breve ; B 25 528 308 685 ; C 199 ; WX 333 ; N dotaccent ; B 116 602 218 704 ; C 200 ; WX 333 ; N dieresis ; B 16 602 317 704 ; C 202 ; WX 333 ; N ring ; B 66 522 266 722 ; C 203 ; WX 333 ; N cedilla ; B 29 -215 237 0 ; C 205 ; WX 333 ; N hungarumlaut ; B -9 528 416 699 ; C 206 ; WX 333 ; N ogonek ; B 81 -220 317 4 ; C 207 ; WX 333 ; N caron ; B 10 528 323 695 ; C 208 ; WX 1000 ; N emdash ; B 0 208 1000 268 ; C 225 ; WX 1000 ; N AE ; B 0 0 962 722 ; C 227 ; WX 334 ; N ordfeminine ; B -4 407 338 705 ; C 232 ; WX 667 ; N Lslash ; B 29 0 644 722 ; C 233 ; WX 778 ; N Oslash ; B 45 -56 733 778 ; C 234 ; WX 1000 ; N OE ; B 21 0 979 722 ; C 235 ; WX 300 ; N ordmasculine ; B 4 407 296 705 ; C 241 ; WX 796 ; N ae ; B 34 -15 762 479 ; C 245 ; WX 315 ; N dotlessi ; B 18 0 286 464 ; C 248 ; WX 315 ; N lslash ; B 18 0 294 737 ; C 249 ; WX 500 ; N oslash ; B 34 -97 466 561 ; C 250 ; WX 833 ; N oe ; B 34 -15 799 479 ; C 251 ; WX 574 ; N germandbls ; B 30 -15 537 737 ; C -1 ; WX 407 ; N Idieresis ; B 38 0 369 883 ; C -1 ; WX 500 ; N eacute ; B 34 -15 466 699 ; C -1 ; WX 556 ; N abreve ; B 44 -15 542 685 ; C -1 ; WX 611 ; N uhungarumlaut ; B 22 -15 595 699 ; C -1 ; WX 500 ; N ecaron ; B 34 -15 466 695 ; C -1 ; WX 704 ; N Ydieresis ; B -11 0 715 883 ; C -1 ; WX 606 ; N divide ; B 50 -22 556 528 ; C -1 ; WX 704 ; N Yacute ; B -11 0 715 937 ; C -1 ; WX 722 ; N Acircumflex ; B -8 0 730 933 ; C -1 ; WX 556 ; N aacute ; B 44 -15 542 699 ; C -1 ; WX 815 ; N Ucircumflex ; B 16 -15 799 933 ; C -1 ; WX 537 ; N yacute ; B 4 -205 533 699 ; C -1 ; WX 463 ; N scommaaccent ; B 46 -250 417 479 ; C -1 ; WX 500 ; N ecircumflex ; B 34 -15 466 695 ; C -1 ; WX 815 ; N Uring ; B 16 -15 799 965 ; C -1 ; WX 815 ; N Udieresis ; B 16 -15 799 883 ; C -1 ; WX 556 ; N aogonek ; B 44 -220 565 479 ; C -1 ; WX 815 ; N Uacute ; B 16 -15 799 937 ; C -1 ; WX 611 ; N uogonek ; B 22 -220 589 464 ; C -1 ; WX 722 ; N Edieresis ; B 29 0 663 883 ; C -1 ; WX 778 ; N Dcroat ; B 29 0 733 722 ; C -1 ; WX 250 ; N commaaccent ; B 66 -250 204 -50 ; C -1 ; WX 737 ; N copyright ; B -8 -15 744 737 ; C -1 ; WX 722 ; N Emacron ; B 29 0 663 861 ; C -1 ; WX 444 ; N ccaron ; B 34 -15 426 695 ; C -1 ; WX 556 ; N aring ; B 44 -15 542 732 ; C -1 ; WX 815 ; N Ncommaaccent ; B 24 -250 791 722 ; C -1 ; WX 315 ; N lacute ; B 18 0 297 957 ; C -1 ; WX 556 ; N agrave ; B 44 -15 542 699 ; C -1 ; WX 667 ; N Tcommaaccent ; B 19 -250 648 722 ; C -1 ; WX 722 ; N Cacute ; B 45 -15 668 937 ; C -1 ; WX 556 ; N atilde ; B 44 -15 542 655 ; C -1 ; WX 722 ; N Edotaccent ; B 29 0 663 883 ; C -1 ; WX 463 ; N scaron ; B 46 -15 417 695 ; C -1 ; WX 463 ; N scedilla ; B 46 -215 417 479 ; C -1 ; WX 315 ; N iacute ; B 18 0 307 699 ; C -1 ; WX 471 ; N lozenge ; B 10 0 462 728 ; C -1 ; WX 722 ; N Rcaron ; B 29 -15 713 933 ; C -1 ; WX 778 ; N Gcommaaccent ; B 45 -250 775 737 ; C -1 ; WX 611 ; N ucircumflex ; B 22 -15 589 695 ; C -1 ; WX 556 ; N acircumflex ; B 44 -15 542 695 ; C -1 ; WX 722 ; N Amacron ; B -8 0 730 861 ; C -1 ; WX 444 ; N rcaron ; B 18 0 434 695 ; C -1 ; WX 444 ; N ccedilla ; B 34 -215 426 479 ; C -1 ; WX 611 ; N Zdotaccent ; B 24 0 576 883 ; C -1 ; WX 667 ; N Thorn ; B 29 0 650 722 ; C -1 ; WX 778 ; N Omacron ; B 45 -15 733 861 ; C -1 ; WX 722 ; N Racute ; B 29 -15 713 937 ; C -1 ; WX 630 ; N Sacute ; B 47 -15 583 937 ; C -1 ; WX 639 ; N dcaron ; B 34 -15 643 737 ; C -1 ; WX 815 ; N Umacron ; B 16 -15 799 861 ; C -1 ; WX 611 ; N uring ; B 22 -15 589 722 ; C -1 ; WX 333 ; N threesuperior ; B 18 273 315 705 ; C -1 ; WX 778 ; N Ograve ; B 45 -15 733 937 ; C -1 ; WX 722 ; N Agrave ; B -8 0 730 937 ; C -1 ; WX 722 ; N Abreve ; B -8 0 730 923 ; C -1 ; WX 606 ; N multiply ; B 74 24 532 482 ; C -1 ; WX 611 ; N uacute ; B 22 -15 589 699 ; C -1 ; WX 667 ; N Tcaron ; B 19 0 648 933 ; C -1 ; WX 476 ; N partialdiff ; B 13 -38 463 714 ; C -1 ; WX 537 ; N ydieresis ; B 4 -205 533 645 ; C -1 ; WX 815 ; N Nacute ; B 24 -15 791 937 ; C -1 ; WX 315 ; N icircumflex ; B 1 0 314 695 ; C -1 ; WX 722 ; N Ecircumflex ; B 29 0 663 933 ; C -1 ; WX 556 ; N adieresis ; B 44 -15 542 645 ; C -1 ; WX 500 ; N edieresis ; B 34 -15 466 645 ; C -1 ; WX 444 ; N cacute ; B 34 -15 426 699 ; C -1 ; WX 611 ; N nacute ; B 22 0 589 699 ; C -1 ; WX 611 ; N umacron ; B 22 -15 589 623 ; C -1 ; WX 815 ; N Ncaron ; B 24 -15 791 933 ; C -1 ; WX 407 ; N Iacute ; B 38 0 369 937 ; C -1 ; WX 606 ; N plusminus ; B 50 0 556 506 ; C -1 ; WX 606 ; N brokenbar ; B 267 -175 339 675 ; C -1 ; WX 737 ; N registered ; B -8 -15 744 737 ; C -1 ; WX 778 ; N Gbreve ; B 45 -15 775 923 ; C -1 ; WX 407 ; N Idotaccent ; B 38 0 369 883 ; C -1 ; WX 600 ; N summation ; B 15 -10 586 706 ; C -1 ; WX 722 ; N Egrave ; B 29 0 663 937 ; C -1 ; WX 444 ; N racute ; B 18 0 434 699 ; C -1 ; WX 500 ; N omacron ; B 34 -15 466 623 ; C -1 ; WX 611 ; N Zacute ; B 24 0 576 937 ; C -1 ; WX 611 ; N Zcaron ; B 24 0 576 933 ; C -1 ; WX 549 ; N greaterequal ; B 26 0 523 674 ; C -1 ; WX 778 ; N Eth ; B 29 0 733 722 ; C -1 ; WX 722 ; N Ccedilla ; B 45 -215 668 737 ; C -1 ; WX 315 ; N lcommaaccent ; B 18 -250 286 737 ; C -1 ; WX 389 ; N tcaron ; B 18 -15 394 777 ; C -1 ; WX 500 ; N eogonek ; B 34 -220 466 479 ; C -1 ; WX 815 ; N Uogonek ; B 16 -220 799 722 ; C -1 ; WX 722 ; N Aacute ; B -8 0 730 937 ; C -1 ; WX 722 ; N Adieresis ; B -8 0 730 883 ; C -1 ; WX 500 ; N egrave ; B 34 -15 466 699 ; C -1 ; WX 481 ; N zacute ; B 42 0 439 699 ; C -1 ; WX 315 ; N iogonek ; B 18 -220 296 722 ; C -1 ; WX 778 ; N Oacute ; B 45 -15 733 937 ; C -1 ; WX 500 ; N oacute ; B 34 -15 466 699 ; C -1 ; WX 556 ; N amacron ; B 44 -15 542 623 ; C -1 ; WX 463 ; N sacute ; B 46 -15 417 699 ; C -1 ; WX 315 ; N idieresis ; B 7 0 308 645 ; C -1 ; WX 778 ; N Ocircumflex ; B 45 -15 733 933 ; C -1 ; WX 815 ; N Ugrave ; B 16 -15 799 937 ; C -1 ; WX 612 ; N Delta ; B 6 0 608 688 ; C -1 ; WX 574 ; N thorn ; B 22 -205 540 737 ; C -1 ; WX 333 ; N twosuperior ; B 14 282 319 705 ; C -1 ; WX 778 ; N Odieresis ; B 45 -15 733 883 ; C -1 ; WX 611 ; N mu ; B 22 -205 589 464 ; C -1 ; WX 315 ; N igrave ; B 8 0 286 699 ; C -1 ; WX 500 ; N ohungarumlaut ; B 34 -15 540 699 ; C -1 ; WX 722 ; N Eogonek ; B 29 -220 663 722 ; C -1 ; WX 574 ; N dcroat ; B 34 -15 552 737 ; C -1 ; WX 834 ; N threequarters ; B 28 -15 795 705 ; C -1 ; WX 630 ; N Scedilla ; B 47 -215 583 737 ; C -1 ; WX 365 ; N lcaron ; B 18 0 377 737 ; C -1 ; WX 778 ; N Kcommaaccent ; B 29 -250 803 722 ; C -1 ; WX 667 ; N Lacute ; B 29 0 644 937 ; C -1 ; WX 1000 ; N trademark ; B 32 318 968 722 ; C -1 ; WX 500 ; N edotaccent ; B 34 -15 466 645 ; C -1 ; WX 407 ; N Igrave ; B 38 0 369 937 ; C -1 ; WX 407 ; N Imacron ; B 38 0 369 861 ; C -1 ; WX 667 ; N Lcaron ; B 29 0 644 737 ; C -1 ; WX 834 ; N onehalf ; B 39 -15 820 705 ; C -1 ; WX 549 ; N lessequal ; B 26 0 523 674 ; C -1 ; WX 500 ; N ocircumflex ; B 34 -15 466 695 ; C -1 ; WX 611 ; N ntilde ; B 22 0 589 655 ; C -1 ; WX 815 ; N Uhungarumlaut ; B 16 -15 799 937 ; C -1 ; WX 722 ; N Eacute ; B 29 0 663 937 ; C -1 ; WX 500 ; N emacron ; B 34 -15 466 623 ; C -1 ; WX 537 ; N gbreve ; B 23 -205 542 685 ; C -1 ; WX 834 ; N onequarter ; B 39 -15 795 705 ; C -1 ; WX 630 ; N Scaron ; B 47 -15 583 933 ; C -1 ; WX 630 ; N Scommaaccent ; B 47 -250 583 737 ; C -1 ; WX 778 ; N Ohungarumlaut ; B 45 -15 733 937 ; C -1 ; WX 400 ; N degree ; B 57 419 343 705 ; C -1 ; WX 500 ; N ograve ; B 34 -15 466 699 ; C -1 ; WX 722 ; N Ccaron ; B 45 -15 668 933 ; C -1 ; WX 611 ; N ugrave ; B 22 -15 589 699 ; C -1 ; WX 453 ; N radical ; B -4 -80 458 762 ; C -1 ; WX 778 ; N Dcaron ; B 29 0 733 933 ; C -1 ; WX 444 ; N rcommaaccent ; B 18 -250 434 479 ; C -1 ; WX 815 ; N Ntilde ; B 24 -15 791 893 ; C -1 ; WX 500 ; N otilde ; B 34 -15 466 655 ; C -1 ; WX 722 ; N Rcommaaccent ; B 29 -250 713 722 ; C -1 ; WX 667 ; N Lcommaaccent ; B 29 -250 644 722 ; C -1 ; WX 722 ; N Atilde ; B -8 0 730 893 ; C -1 ; WX 722 ; N Aogonek ; B -8 -220 730 737 ; C -1 ; WX 722 ; N Aring ; B -8 0 730 965 ; C -1 ; WX 778 ; N Otilde ; B 45 -15 733 893 ; C -1 ; WX 481 ; N zdotaccent ; B 42 0 439 645 ; C -1 ; WX 722 ; N Ecaron ; B 29 0 663 933 ; C -1 ; WX 407 ; N Iogonek ; B 38 -220 369 722 ; C -1 ; WX 593 ; N kcommaaccent ; B 10 -250 589 737 ; C -1 ; WX 606 ; N minus ; B 50 217 556 289 ; C -1 ; WX 407 ; N Icircumflex ; B 38 0 369 933 ; C -1 ; WX 611 ; N ncaron ; B 22 0 589 695 ; C -1 ; WX 389 ; N tcommaaccent ; B 18 -250 371 666 ; C -1 ; WX 606 ; N logicalnot ; B 50 108 556 389 ; C -1 ; WX 500 ; N odieresis ; B 34 -15 466 645 ; C -1 ; WX 611 ; N udieresis ; B 22 -15 589 645 ; C -1 ; WX 549 ; N notequal ; B 12 -35 537 551 ; C -1 ; WX 537 ; N gcommaaccent ; B 23 -205 542 807 ; C -1 ; WX 500 ; N eth ; B 34 -15 466 737 ; C -1 ; WX 481 ; N zcaron ; B 42 0 439 695 ; C -1 ; WX 611 ; N ncommaaccent ; B 22 -250 589 479 ; C -1 ; WX 333 ; N onesuperior ; B 39 282 294 705 ; C -1 ; WX 315 ; N imacron ; B 18 0 291 623 ; EndCharMetrics StartKernData StartKernPairs 1480 KPX A T -18 KPX A Tcaron -18 KPX A Tcommaaccent -18 KPX A U -30 KPX A Uacute -30 KPX A Ucircumflex -30 KPX A Udieresis -30 KPX A Ugrave -30 KPX A Uhungarumlaut -30 KPX A Umacron -30 KPX A Uogonek -30 KPX A Uring -30 KPX A V -75 KPX A W -50 KPX A Y -75 KPX A Yacute -75 KPX A Ydieresis -75 KPX A quotedblright -74 KPX A quoteright -74 KPX A v -37 KPX A w -25 KPX A y -37 KPX A yacute -37 KPX A ydieresis -37 KPX Aacute T -18 KPX Aacute Tcaron -18 KPX Aacute Tcommaaccent -18 KPX Aacute U -30 KPX Aacute Uacute -30 KPX Aacute Ucircumflex -30 KPX Aacute Udieresis -30 KPX Aacute Ugrave -30 KPX Aacute Uhungarumlaut -30 KPX Aacute Umacron -30 KPX Aacute Uogonek -30 KPX Aacute Uring -30 KPX Aacute V -75 KPX Aacute W -50 KPX Aacute Y -75 KPX Aacute Yacute -75 KPX Aacute Ydieresis -75 KPX Aacute quotedblright -74 KPX Aacute quoteright -74 KPX Aacute v -37 KPX Aacute w -25 KPX Aacute y -37 KPX Aacute yacute -37 KPX Aacute ydieresis -37 KPX Abreve T -18 KPX Abreve Tcaron -18 KPX Abreve Tcommaaccent -18 KPX Abreve U -30 KPX Abreve Uacute -30 KPX Abreve Ucircumflex -30 KPX Abreve Udieresis -30 KPX Abreve Ugrave -30 KPX Abreve Uhungarumlaut -30 KPX Abreve Umacron -30 KPX Abreve Uogonek -30 KPX Abreve Uring -30 KPX Abreve V -75 KPX Abreve W -50 KPX Abreve Y -75 KPX Abreve Yacute -75 KPX Abreve Ydieresis -75 KPX Abreve quotedblright -74 KPX Abreve quoteright -74 KPX Abreve v -37 KPX Abreve w -25 KPX Abreve y -37 KPX Abreve yacute -37 KPX Abreve ydieresis -37 KPX Acircumflex T -18 KPX Acircumflex Tcaron -18 KPX Acircumflex Tcommaaccent -18 KPX Acircumflex U -30 KPX Acircumflex Uacute -30 KPX Acircumflex Ucircumflex -30 KPX Acircumflex Udieresis -30 KPX Acircumflex Ugrave -30 KPX Acircumflex Uhungarumlaut -30 KPX Acircumflex Umacron -30 KPX Acircumflex Uogonek -30 KPX Acircumflex Uring -30 KPX Acircumflex V -75 KPX Acircumflex W -50 KPX Acircumflex Y -75 KPX Acircumflex Yacute -75 KPX Acircumflex Ydieresis -75 KPX Acircumflex quotedblright -74 KPX Acircumflex quoteright -74 KPX Acircumflex v -37 KPX Acircumflex w -25 KPX Acircumflex y -37 KPX Acircumflex yacute -37 KPX Acircumflex ydieresis -37 KPX Adieresis T -18 KPX Adieresis Tcaron -18 KPX Adieresis Tcommaaccent -18 KPX Adieresis U -30 KPX Adieresis Uacute -30 KPX Adieresis Ucircumflex -30 KPX Adieresis Udieresis -30 KPX Adieresis Ugrave -30 KPX Adieresis Uhungarumlaut -30 KPX Adieresis Umacron -30 KPX Adieresis Uogonek -30 KPX Adieresis Uring -30 KPX Adieresis V -75 KPX Adieresis W -50 KPX Adieresis Y -75 KPX Adieresis Yacute -75 KPX Adieresis Ydieresis -75 KPX Adieresis quotedblright -74 KPX Adieresis quoteright -74 KPX Adieresis v -37 KPX Adieresis w -25 KPX Adieresis y -37 KPX Adieresis yacute -37 KPX Adieresis ydieresis -37 KPX Agrave T -18 KPX Agrave Tcaron -18 KPX Agrave Tcommaaccent -18 KPX Agrave U -30 KPX Agrave Uacute -30 KPX Agrave Ucircumflex -30 KPX Agrave Udieresis -30 KPX Agrave Ugrave -30 KPX Agrave Uhungarumlaut -30 KPX Agrave Umacron -30 KPX Agrave Uogonek -30 KPX Agrave Uring -30 KPX Agrave V -75 KPX Agrave W -50 KPX Agrave Y -75 KPX Agrave Yacute -75 KPX Agrave Ydieresis -75 KPX Agrave quotedblright -74 KPX Agrave quoteright -74 KPX Agrave v -37 KPX Agrave w -25 KPX Agrave y -37 KPX Agrave yacute -37 KPX Agrave ydieresis -37 KPX Amacron T -18 KPX Amacron Tcaron -18 KPX Amacron Tcommaaccent -18 KPX Amacron U -30 KPX Amacron Uacute -30 KPX Amacron Ucircumflex -30 KPX Amacron Udieresis -30 KPX Amacron Ugrave -30 KPX Amacron Uhungarumlaut -30 KPX Amacron Umacron -30 KPX Amacron Uogonek -30 KPX Amacron Uring -30 KPX Amacron V -75 KPX Amacron W -50 KPX Amacron Y -75 KPX Amacron Yacute -75 KPX Amacron Ydieresis -75 KPX Amacron quotedblright -74 KPX Amacron quoteright -74 KPX Amacron v -37 KPX Amacron w -25 KPX Amacron y -37 KPX Amacron yacute -37 KPX Amacron ydieresis -37 KPX Aogonek T -18 KPX Aogonek Tcaron -18 KPX Aogonek Tcommaaccent -18 KPX Aogonek U -30 KPX Aogonek Uacute -30 KPX Aogonek Ucircumflex -30 KPX Aogonek Udieresis -30 KPX Aogonek Ugrave -30 KPX Aogonek Uhungarumlaut -30 KPX Aogonek Umacron -30 KPX Aogonek Uogonek -30 KPX Aogonek Uring -30 KPX Aogonek V -75 KPX Aogonek W -50 KPX Aogonek Y -75 KPX Aogonek Yacute -75 KPX Aogonek Ydieresis -75 KPX Aogonek quotedblright -74 KPX Aogonek quoteright -74 KPX Aogonek v -37 KPX Aogonek w -25 KPX Aogonek y -17 KPX Aogonek yacute -17 KPX Aogonek ydieresis -17 KPX Aring T -18 KPX Aring Tcaron -18 KPX Aring Tcommaaccent -18 KPX Aring U -30 KPX Aring Uacute -30 KPX Aring Ucircumflex -30 KPX Aring Udieresis -30 KPX Aring Ugrave -30 KPX Aring Uhungarumlaut -30 KPX Aring Umacron -30 KPX Aring Uogonek -30 KPX Aring Uring -30 KPX Aring V -75 KPX Aring W -50 KPX Aring Y -75 KPX Aring Yacute -75 KPX Aring Ydieresis -75 KPX Aring quotedblright -74 KPX Aring quoteright -74 KPX Aring v -37 KPX Aring w -25 KPX Aring y -37 KPX Aring yacute -37 KPX Aring ydieresis -37 KPX Atilde T -18 KPX Atilde Tcaron -18 KPX Atilde Tcommaaccent -18 KPX Atilde U -30 KPX Atilde Uacute -30 KPX Atilde Ucircumflex -30 KPX Atilde Udieresis -30 KPX Atilde Ugrave -30 KPX Atilde Uhungarumlaut -30 KPX Atilde Umacron -30 KPX Atilde Uogonek -30 KPX Atilde Uring -30 KPX Atilde V -75 KPX Atilde W -50 KPX Atilde Y -75 KPX Atilde Yacute -75 KPX Atilde Ydieresis -75 KPX Atilde quotedblright -74 KPX Atilde quoteright -74 KPX Atilde v -37 KPX Atilde w -25 KPX Atilde y -37 KPX Atilde yacute -37 KPX Atilde ydieresis -37 KPX B A -18 KPX B Aacute -18 KPX B Abreve -18 KPX B Acircumflex -18 KPX B Adieresis -18 KPX B Agrave -18 KPX B Amacron -18 KPX B Aogonek -18 KPX B Aring -18 KPX B Atilde -18 KPX B comma -37 KPX B period -37 KPX C A -18 KPX C Aacute -18 KPX C Abreve -18 KPX C Acircumflex -18 KPX C Adieresis -18 KPX C Agrave -18 KPX C Amacron -18 KPX C Aogonek -18 KPX C Aring -18 KPX C Atilde -18 KPX C comma -37 KPX C period -37 KPX Cacute A -18 KPX Cacute Aacute -18 KPX Cacute Abreve -18 KPX Cacute Acircumflex -18 KPX Cacute Adieresis -18 KPX Cacute Agrave -18 KPX Cacute Amacron -18 KPX Cacute Aogonek -18 KPX Cacute Aring -18 KPX Cacute Atilde -18 KPX Cacute comma -37 KPX Cacute period -37 KPX Ccaron A -18 KPX Ccaron Aacute -18 KPX Ccaron Abreve -18 KPX Ccaron Acircumflex -18 KPX Ccaron Adieresis -18 KPX Ccaron Agrave -18 KPX Ccaron Amacron -18 KPX Ccaron Aogonek -18 KPX Ccaron Aring -18 KPX Ccaron Atilde -18 KPX Ccaron comma -37 KPX Ccaron period -37 KPX Ccedilla A -18 KPX Ccedilla Aacute -18 KPX Ccedilla Abreve -18 KPX Ccedilla Acircumflex -18 KPX Ccedilla Adieresis -18 KPX Ccedilla Agrave -18 KPX Ccedilla Amacron -18 KPX Ccedilla Aogonek -18 KPX Ccedilla Aring -18 KPX Ccedilla Atilde -18 KPX Ccedilla comma -37 KPX Ccedilla period -37 KPX D V -18 KPX D Y -18 KPX D Yacute -18 KPX D Ydieresis -18 KPX D comma -37 KPX D period -37 KPX Dcaron V -18 KPX Dcaron Y -18 KPX Dcaron Yacute -18 KPX Dcaron Ydieresis -18 KPX Dcaron comma -37 KPX Dcaron period -37 KPX Dcroat V -18 KPX Dcroat Y -18 KPX Dcroat Yacute -18 KPX Dcroat Ydieresis -18 KPX Dcroat comma -37 KPX Dcroat period -37 KPX F A -50 KPX F Aacute -50 KPX F Abreve -50 KPX F Acircumflex -50 KPX F Adieresis -50 KPX F Agrave -50 KPX F Amacron -50 KPX F Aogonek -50 KPX F Aring -50 KPX F Atilde -50 KPX F a -65 KPX F aacute -65 KPX F abreve -65 KPX F acircumflex -65 KPX F adieresis -65 KPX F agrave -65 KPX F amacron -65 KPX F aogonek -65 KPX F aring -65 KPX F atilde -65 KPX F comma -125 KPX F e -55 KPX F eacute -55 KPX F ecaron -55 KPX F ecircumflex -55 KPX F edieresis -55 KPX F edotaccent -55 KPX F egrave -55 KPX F emacron -55 KPX F eogonek -55 KPX F i -10 KPX F iacute -10 KPX F icircumflex -10 KPX F idieresis -10 KPX F igrave -10 KPX F imacron -10 KPX F iogonek -10 KPX F o -55 KPX F oacute -55 KPX F ocircumflex -55 KPX F odieresis -55 KPX F ograve -55 KPX F ohungarumlaut -55 KPX F omacron -55 KPX F oslash -55 KPX F otilde -55 KPX F period -125 KPX F r -10 KPX F racute -10 KPX F rcaron -10 KPX F rcommaaccent -10 KPX G comma -37 KPX G period -37 KPX Gbreve comma -37 KPX Gbreve period -37 KPX Gcommaaccent comma -37 KPX Gcommaaccent period -37 KPX J A -18 KPX J Aacute -18 KPX J Abreve -18 KPX J Acircumflex -18 KPX J Adieresis -18 KPX J Agrave -18 KPX J Amacron -18 KPX J Aogonek -18 KPX J Aring -18 KPX J Atilde -18 KPX J a -25 KPX J aacute -25 KPX J abreve -25 KPX J acircumflex -25 KPX J adieresis -25 KPX J agrave -25 KPX J amacron -25 KPX J aogonek -25 KPX J aring -25 KPX J atilde -25 KPX J comma -74 KPX J e -25 KPX J eacute -25 KPX J ecaron -25 KPX J ecircumflex -25 KPX J edieresis -25 KPX J edotaccent -25 KPX J egrave -25 KPX J emacron -25 KPX J eogonek -25 KPX J o -25 KPX J oacute -25 KPX J ocircumflex -25 KPX J odieresis -25 KPX J ograve -25 KPX J ohungarumlaut -25 KPX J omacron -25 KPX J oslash -25 KPX J otilde -25 KPX J period -74 KPX J u -25 KPX J uacute -25 KPX J ucircumflex -25 KPX J udieresis -25 KPX J ugrave -25 KPX J uhungarumlaut -25 KPX J umacron -25 KPX J uogonek -25 KPX J uring -25 KPX K e 10 KPX K eacute 10 KPX K ecaron 10 KPX K ecircumflex 10 KPX K edieresis 10 KPX K edotaccent 10 KPX K egrave 10 KPX K emacron 10 KPX K eogonek 10 KPX K o 10 KPX K oacute 10 KPX K ocircumflex 10 KPX K odieresis 10 KPX K ograve 10 KPX K ohungarumlaut 10 KPX K omacron 10 KPX K oslash 10 KPX K otilde 10 KPX K y -25 KPX K yacute -25 KPX K ydieresis -25 KPX Kcommaaccent e 10 KPX Kcommaaccent eacute 10 KPX Kcommaaccent ecaron 10 KPX Kcommaaccent ecircumflex 10 KPX Kcommaaccent edieresis 10 KPX Kcommaaccent edotaccent 10 KPX Kcommaaccent egrave 10 KPX Kcommaaccent emacron 10 KPX Kcommaaccent eogonek 10 KPX Kcommaaccent o 10 KPX Kcommaaccent oacute 10 KPX Kcommaaccent ocircumflex 10 KPX Kcommaaccent odieresis 10 KPX Kcommaaccent ograve 10 KPX Kcommaaccent ohungarumlaut 10 KPX Kcommaaccent omacron 10 KPX Kcommaaccent oslash 10 KPX Kcommaaccent otilde 10 KPX Kcommaaccent y -25 KPX Kcommaaccent yacute -25 KPX Kcommaaccent ydieresis -25 KPX L T -75 KPX L Tcaron -75 KPX L Tcommaaccent -75 KPX L V -91 KPX L W -74 KPX L Y -74 KPX L Yacute -74 KPX L Ydieresis -74 KPX L quotedblright -100 KPX L quoteright -100 KPX L y -25 KPX L yacute -25 KPX L ydieresis -25 KPX Lacute T -75 KPX Lacute Tcaron -75 KPX Lacute Tcommaaccent -75 KPX Lacute V -91 KPX Lacute W -74 KPX Lacute Y -74 KPX Lacute Yacute -74 KPX Lacute Ydieresis -74 KPX Lacute quotedblright -100 KPX Lacute quoteright -100 KPX Lacute y -25 KPX Lacute yacute -25 KPX Lacute ydieresis -25 KPX Lcommaaccent T -75 KPX Lcommaaccent Tcaron -75 KPX Lcommaaccent Tcommaaccent -75 KPX Lcommaaccent V -91 KPX Lcommaaccent W -74 KPX Lcommaaccent Y -74 KPX Lcommaaccent Yacute -74 KPX Lcommaaccent Ydieresis -74 KPX Lcommaaccent quotedblright -100 KPX Lcommaaccent quoteright -100 KPX Lcommaaccent y -25 KPX Lcommaaccent yacute -25 KPX Lcommaaccent ydieresis -25 KPX Lslash T -75 KPX Lslash Tcaron -75 KPX Lslash Tcommaaccent -75 KPX Lslash V -91 KPX Lslash W -74 KPX Lslash Y -74 KPX Lslash Yacute -74 KPX Lslash Ydieresis -74 KPX Lslash quotedblright -100 KPX Lslash quoteright -100 KPX Lslash y -25 KPX Lslash yacute -25 KPX Lslash ydieresis -25 KPX N comma -55 KPX N period -55 KPX Nacute comma -55 KPX Nacute period -55 KPX Ncaron comma -55 KPX Ncaron period -55 KPX Ncommaaccent comma -55 KPX Ncommaaccent period -55 KPX Ntilde comma -55 KPX Ntilde period -55 KPX O T 10 KPX O Tcaron 10 KPX O Tcommaaccent 10 KPX O V -18 KPX O Y -18 KPX O Yacute -18 KPX O Ydieresis -18 KPX O comma -37 KPX O period -37 KPX Oacute T 10 KPX Oacute Tcaron 10 KPX Oacute Tcommaaccent 10 KPX Oacute V -18 KPX Oacute Y -18 KPX Oacute Yacute -18 KPX Oacute Ydieresis -18 KPX Oacute comma -37 KPX Oacute period -37 KPX Ocircumflex T 10 KPX Ocircumflex Tcaron 10 KPX Ocircumflex Tcommaaccent 10 KPX Ocircumflex V -18 KPX Ocircumflex Y -18 KPX Ocircumflex Yacute -18 KPX Ocircumflex Ydieresis -18 KPX Ocircumflex comma -37 KPX Ocircumflex period -37 KPX Odieresis T 10 KPX Odieresis Tcaron 10 KPX Odieresis Tcommaaccent 10 KPX Odieresis V -18 KPX Odieresis Y -18 KPX Odieresis Yacute -18 KPX Odieresis Ydieresis -18 KPX Odieresis comma -37 KPX Odieresis period -37 KPX Ograve T 10 KPX Ograve Tcaron 10 KPX Ograve Tcommaaccent 10 KPX Ograve V -18 KPX Ograve Y -18 KPX Ograve Yacute -18 KPX Ograve Ydieresis -18 KPX Ograve comma -37 KPX Ograve period -37 KPX Ohungarumlaut T 10 KPX Ohungarumlaut Tcaron 10 KPX Ohungarumlaut Tcommaaccent 10 KPX Ohungarumlaut V -18 KPX Ohungarumlaut Y -18 KPX Ohungarumlaut Yacute -18 KPX Ohungarumlaut Ydieresis -18 KPX Ohungarumlaut comma -37 KPX Ohungarumlaut period -37 KPX Omacron T 10 KPX Omacron Tcaron 10 KPX Omacron Tcommaaccent 10 KPX Omacron V -18 KPX Omacron Y -18 KPX Omacron Yacute -18 KPX Omacron Ydieresis -18 KPX Omacron comma -37 KPX Omacron period -37 KPX Oslash T 10 KPX Oslash Tcaron 10 KPX Oslash Tcommaaccent 10 KPX Oslash V -18 KPX Oslash Y -18 KPX Oslash Yacute -18 KPX Oslash Ydieresis -18 KPX Oslash comma -37 KPX Oslash period -37 KPX Otilde T 10 KPX Otilde Tcaron 10 KPX Otilde Tcommaaccent 10 KPX Otilde V -18 KPX Otilde Y -18 KPX Otilde Yacute -18 KPX Otilde Ydieresis -18 KPX Otilde comma -37 KPX Otilde period -37 KPX P A -55 KPX P Aacute -55 KPX P Abreve -55 KPX P Acircumflex -55 KPX P Adieresis -55 KPX P Agrave -55 KPX P Amacron -55 KPX P Aogonek -55 KPX P Aring -55 KPX P Atilde -55 KPX P a -37 KPX P aacute -37 KPX P abreve -37 KPX P acircumflex -37 KPX P adieresis -37 KPX P agrave -37 KPX P amacron -37 KPX P aogonek -37 KPX P aring -37 KPX P atilde -37 KPX P comma -125 KPX P e -37 KPX P eacute -37 KPX P ecaron -37 KPX P ecircumflex -37 KPX P edieresis -37 KPX P edotaccent -37 KPX P egrave -37 KPX P emacron -37 KPX P eogonek -37 KPX P o -37 KPX P oacute -37 KPX P ocircumflex -37 KPX P odieresis -37 KPX P ograve -37 KPX P ohungarumlaut -37 KPX P omacron -37 KPX P oslash -37 KPX P otilde -37 KPX P period -125 KPX Q comma -25 KPX Q period -25 KPX S comma -37 KPX S period -37 KPX Sacute comma -37 KPX Sacute period -37 KPX Scaron comma -37 KPX Scaron period -37 KPX Scedilla comma -37 KPX Scedilla period -37 KPX Scommaaccent comma -37 KPX Scommaaccent period -37 KPX T A -18 KPX T Aacute -18 KPX T Abreve -18 KPX T Acircumflex -18 KPX T Adieresis -18 KPX T Agrave -18 KPX T Amacron -18 KPX T Aogonek -18 KPX T Aring -18 KPX T Atilde -18 KPX T O 10 KPX T Oacute 10 KPX T Ocircumflex 10 KPX T Odieresis 10 KPX T Ograve 10 KPX T Ohungarumlaut 10 KPX T Omacron 10 KPX T Oslash 10 KPX T Otilde 10 KPX T a -55 KPX T aacute -55 KPX T abreve -55 KPX T acircumflex -55 KPX T adieresis -55 KPX T agrave -55 KPX T amacron -55 KPX T aogonek -55 KPX T aring -55 KPX T atilde -55 KPX T colon -37 KPX T comma -125 KPX T e -55 KPX T eacute -55 KPX T ecaron -55 KPX T ecircumflex -55 KPX T edieresis -55 KPX T edotaccent -55 KPX T egrave -55 KPX T emacron -55 KPX T eogonek -55 KPX T hyphen -100 KPX T o -55 KPX T oacute -55 KPX T ocircumflex -55 KPX T odieresis -55 KPX T ograve -55 KPX T ohungarumlaut -55 KPX T omacron -55 KPX T oslash -55 KPX T otilde -55 KPX T period -125 KPX T semicolon -37 KPX Tcaron A -18 KPX Tcaron Aacute -18 KPX Tcaron Abreve -18 KPX Tcaron Acircumflex -18 KPX Tcaron Adieresis -18 KPX Tcaron Agrave -18 KPX Tcaron Amacron -18 KPX Tcaron Aogonek -18 KPX Tcaron Aring -18 KPX Tcaron Atilde -18 KPX Tcaron O 10 KPX Tcaron Oacute 10 KPX Tcaron Ocircumflex 10 KPX Tcaron Odieresis 10 KPX Tcaron Ograve 10 KPX Tcaron Ohungarumlaut 10 KPX Tcaron Omacron 10 KPX Tcaron Oslash 10 KPX Tcaron Otilde 10 KPX Tcaron a -55 KPX Tcaron aacute -55 KPX Tcaron abreve -55 KPX Tcaron acircumflex -55 KPX Tcaron adieresis -55 KPX Tcaron agrave -55 KPX Tcaron amacron -55 KPX Tcaron aogonek -55 KPX Tcaron aring -55 KPX Tcaron atilde -55 KPX Tcaron colon -37 KPX Tcaron comma -125 KPX Tcaron e -55 KPX Tcaron eacute -55 KPX Tcaron ecaron -55 KPX Tcaron ecircumflex -55 KPX Tcaron edieresis -55 KPX Tcaron edotaccent -55 KPX Tcaron egrave -55 KPX Tcaron emacron -55 KPX Tcaron eogonek -55 KPX Tcaron hyphen -100 KPX Tcaron o -55 KPX Tcaron oacute -55 KPX Tcaron ocircumflex -55 KPX Tcaron odieresis -55 KPX Tcaron ograve -55 KPX Tcaron ohungarumlaut -55 KPX Tcaron omacron -55 KPX Tcaron oslash -55 KPX Tcaron otilde -55 KPX Tcaron period -125 KPX Tcaron semicolon -37 KPX Tcommaaccent A -18 KPX Tcommaaccent Aacute -18 KPX Tcommaaccent Abreve -18 KPX Tcommaaccent Acircumflex -18 KPX Tcommaaccent Adieresis -18 KPX Tcommaaccent Agrave -18 KPX Tcommaaccent Amacron -18 KPX Tcommaaccent Aogonek -18 KPX Tcommaaccent Aring -18 KPX Tcommaaccent Atilde -18 KPX Tcommaaccent O 10 KPX Tcommaaccent Oacute 10 KPX Tcommaaccent Ocircumflex 10 KPX Tcommaaccent Odieresis 10 KPX Tcommaaccent Ograve 10 KPX Tcommaaccent Ohungarumlaut 10 KPX Tcommaaccent Omacron 10 KPX Tcommaaccent Oslash 10 KPX Tcommaaccent Otilde 10 KPX Tcommaaccent a -55 KPX Tcommaaccent aacute -55 KPX Tcommaaccent abreve -55 KPX Tcommaaccent acircumflex -55 KPX Tcommaaccent adieresis -55 KPX Tcommaaccent agrave -55 KPX Tcommaaccent amacron -55 KPX Tcommaaccent aogonek -55 KPX Tcommaaccent aring -55 KPX Tcommaaccent atilde -55 KPX Tcommaaccent colon -37 KPX Tcommaaccent comma -125 KPX Tcommaaccent e -55 KPX Tcommaaccent eacute -55 KPX Tcommaaccent ecaron -55 KPX Tcommaaccent ecircumflex -55 KPX Tcommaaccent edieresis -55 KPX Tcommaaccent edotaccent -55 KPX Tcommaaccent egrave -55 KPX Tcommaaccent emacron -55 KPX Tcommaaccent eogonek -55 KPX Tcommaaccent hyphen -100 KPX Tcommaaccent o -55 KPX Tcommaaccent oacute -55 KPX Tcommaaccent ocircumflex -55 KPX Tcommaaccent odieresis -55 KPX Tcommaaccent ograve -55 KPX Tcommaaccent ohungarumlaut -55 KPX Tcommaaccent omacron -55 KPX Tcommaaccent oslash -55 KPX Tcommaaccent otilde -55 KPX Tcommaaccent period -125 KPX Tcommaaccent semicolon -37 KPX U A -30 KPX U Aacute -30 KPX U Abreve -30 KPX U Acircumflex -30 KPX U Adieresis -30 KPX U Agrave -30 KPX U Amacron -30 KPX U Aogonek -30 KPX U Aring -30 KPX U Atilde -30 KPX U comma -100 KPX U period -100 KPX Uacute A -30 KPX Uacute Aacute -30 KPX Uacute Abreve -30 KPX Uacute Acircumflex -30 KPX Uacute Adieresis -30 KPX Uacute Agrave -30 KPX Uacute Amacron -30 KPX Uacute Aogonek -30 KPX Uacute Aring -30 KPX Uacute Atilde -30 KPX Uacute comma -100 KPX Uacute period -100 KPX Ucircumflex A -30 KPX Ucircumflex Aacute -30 KPX Ucircumflex Abreve -30 KPX Ucircumflex Acircumflex -30 KPX Ucircumflex Adieresis -30 KPX Ucircumflex Agrave -30 KPX Ucircumflex Amacron -30 KPX Ucircumflex Aogonek -30 KPX Ucircumflex Aring -30 KPX Ucircumflex Atilde -30 KPX Ucircumflex comma -100 KPX Ucircumflex period -100 KPX Udieresis A -30 KPX Udieresis Aacute -30 KPX Udieresis Abreve -30 KPX Udieresis Acircumflex -30 KPX Udieresis Adieresis -30 KPX Udieresis Agrave -30 KPX Udieresis Amacron -30 KPX Udieresis Aogonek -30 KPX Udieresis Aring -30 KPX Udieresis Atilde -30 KPX Udieresis comma -100 KPX Udieresis period -100 KPX Ugrave A -30 KPX Ugrave Aacute -30 KPX Ugrave Abreve -30 KPX Ugrave Acircumflex -30 KPX Ugrave Adieresis -30 KPX Ugrave Agrave -30 KPX Ugrave Amacron -30 KPX Ugrave Aogonek -30 KPX Ugrave Aring -30 KPX Ugrave Atilde -30 KPX Ugrave comma -100 KPX Ugrave period -100 KPX Uhungarumlaut A -30 KPX Uhungarumlaut Aacute -30 KPX Uhungarumlaut Abreve -30 KPX Uhungarumlaut Acircumflex -30 KPX Uhungarumlaut Adieresis -30 KPX Uhungarumlaut Agrave -30 KPX Uhungarumlaut Amacron -30 KPX Uhungarumlaut Aogonek -30 KPX Uhungarumlaut Aring -30 KPX Uhungarumlaut Atilde -30 KPX Uhungarumlaut comma -100 KPX Uhungarumlaut period -100 KPX Umacron A -30 KPX Umacron Aacute -30 KPX Umacron Abreve -30 KPX Umacron Acircumflex -30 KPX Umacron Adieresis -30 KPX Umacron Agrave -30 KPX Umacron Amacron -30 KPX Umacron Aogonek -30 KPX Umacron Aring -30 KPX Umacron Atilde -30 KPX Umacron comma -100 KPX Umacron period -100 KPX Uogonek A -30 KPX Uogonek Aacute -30 KPX Uogonek Abreve -30 KPX Uogonek Acircumflex -30 KPX Uogonek Adieresis -30 KPX Uogonek Agrave -30 KPX Uogonek Amacron -30 KPX Uogonek Aogonek -30 KPX Uogonek Aring -30 KPX Uogonek Atilde -30 KPX Uogonek comma -100 KPX Uogonek period -100 KPX Uring A -30 KPX Uring Aacute -30 KPX Uring Abreve -30 KPX Uring Acircumflex -30 KPX Uring Adieresis -30 KPX Uring Agrave -30 KPX Uring Amacron -30 KPX Uring Aogonek -30 KPX Uring Aring -30 KPX Uring Atilde -30 KPX Uring comma -100 KPX Uring period -100 KPX V A -74 KPX V Aacute -74 KPX V Abreve -74 KPX V Acircumflex -74 KPX V Adieresis -74 KPX V Agrave -74 KPX V Amacron -74 KPX V Aogonek -74 KPX V Aring -74 KPX V Atilde -74 KPX V O -18 KPX V Oacute -18 KPX V Ocircumflex -18 KPX V Odieresis -18 KPX V Ograve -18 KPX V Ohungarumlaut -18 KPX V Omacron -18 KPX V Oslash -18 KPX V Otilde -18 KPX V a -85 KPX V aacute -85 KPX V abreve -85 KPX V acircumflex -85 KPX V adieresis -85 KPX V agrave -85 KPX V amacron -85 KPX V aogonek -85 KPX V aring -85 KPX V atilde -85 KPX V colon -75 KPX V comma -125 KPX V e -75 KPX V eacute -75 KPX V ecaron -75 KPX V ecircumflex -75 KPX V edieresis -75 KPX V edotaccent -75 KPX V egrave -75 KPX V emacron -75 KPX V eogonek -75 KPX V hyphen -100 KPX V i -18 KPX V iacute -18 KPX V icircumflex -18 KPX V iogonek -18 KPX V o -75 KPX V oacute -75 KPX V ocircumflex -75 KPX V odieresis -75 KPX V ograve -75 KPX V ohungarumlaut -75 KPX V omacron -75 KPX V oslash -75 KPX V otilde -75 KPX V period -125 KPX V semicolon -75 KPX V u -75 KPX V uacute -75 KPX V ucircumflex -75 KPX V udieresis -75 KPX V ugrave -75 KPX V uhungarumlaut -75 KPX V umacron -75 KPX V uogonek -75 KPX V uring -75 KPX W A -50 KPX W Aacute -50 KPX W Abreve -50 KPX W Acircumflex -50 KPX W Adieresis -50 KPX W Agrave -50 KPX W Amacron -50 KPX W Aogonek -50 KPX W Aring -50 KPX W Atilde -50 KPX W a -75 KPX W aacute -75 KPX W abreve -75 KPX W acircumflex -75 KPX W adieresis -75 KPX W agrave -75 KPX W amacron -75 KPX W aogonek -75 KPX W aring -75 KPX W atilde -75 KPX W colon -100 KPX W comma -125 KPX W e -60 KPX W eacute -60 KPX W ecaron -60 KPX W ecircumflex -60 KPX W edieresis -60 KPX W edotaccent -60 KPX W egrave -60 KPX W emacron -60 KPX W eogonek -60 KPX W hyphen -100 KPX W i -18 KPX W iacute -18 KPX W icircumflex -18 KPX W iogonek -18 KPX W o -60 KPX W oacute -60 KPX W ocircumflex -60 KPX W odieresis -60 KPX W ograve -60 KPX W ohungarumlaut -60 KPX W omacron -60 KPX W oslash -60 KPX W otilde -60 KPX W period -125 KPX W semicolon -100 KPX W u -55 KPX W uacute -55 KPX W ucircumflex -55 KPX W udieresis -55 KPX W ugrave -55 KPX W uhungarumlaut -55 KPX W umacron -55 KPX W uogonek -55 KPX W uring -55 KPX W y -55 KPX W yacute -55 KPX W ydieresis -55 KPX Y A -75 KPX Y Aacute -75 KPX Y Abreve -75 KPX Y Acircumflex -75 KPX Y Adieresis -75 KPX Y Agrave -75 KPX Y Amacron -75 KPX Y Aogonek -75 KPX Y Aring -75 KPX Y Atilde -75 KPX Y O -18 KPX Y Oacute -18 KPX Y Ocircumflex -18 KPX Y Odieresis -18 KPX Y Ograve -18 KPX Y Ohungarumlaut -18 KPX Y Omacron -18 KPX Y Oslash -18 KPX Y Otilde -18 KPX Y a -100 KPX Y aacute -100 KPX Y abreve -60 KPX Y acircumflex -100 KPX Y adieresis -100 KPX Y agrave -60 KPX Y amacron -100 KPX Y aogonek -100 KPX Y aring -100 KPX Y atilde -100 KPX Y colon -75 KPX Y comma -100 KPX Y e -100 KPX Y eacute -100 KPX Y ecaron -60 KPX Y ecircumflex -100 KPX Y edieresis -60 KPX Y edotaccent -100 KPX Y egrave -60 KPX Y emacron -100 KPX Y eogonek -100 KPX Y hyphen -125 KPX Y i -18 KPX Y iacute -18 KPX Y icircumflex -18 KPX Y imacron -18 KPX Y iogonek -18 KPX Y o -100 KPX Y oacute -100 KPX Y ocircumflex -100 KPX Y odieresis -60 KPX Y ograve -60 KPX Y ohungarumlaut -100 KPX Y omacron -100 KPX Y oslash -100 KPX Y otilde -100 KPX Y period -100 KPX Y semicolon -75 KPX Y u -91 KPX Y uacute -91 KPX Y ucircumflex -91 KPX Y udieresis -91 KPX Y ugrave -91 KPX Y uhungarumlaut -91 KPX Y umacron -91 KPX Y uogonek -91 KPX Y uring -91 KPX Yacute A -75 KPX Yacute Aacute -75 KPX Yacute Abreve -75 KPX Yacute Acircumflex -75 KPX Yacute Adieresis -75 KPX Yacute Agrave -75 KPX Yacute Amacron -75 KPX Yacute Aogonek -75 KPX Yacute Aring -75 KPX Yacute Atilde -75 KPX Yacute O -18 KPX Yacute Oacute -18 KPX Yacute Ocircumflex -18 KPX Yacute Odieresis -18 KPX Yacute Ograve -18 KPX Yacute Ohungarumlaut -18 KPX Yacute Omacron -18 KPX Yacute Oslash -18 KPX Yacute Otilde -18 KPX Yacute a -100 KPX Yacute aacute -100 KPX Yacute abreve -60 KPX Yacute acircumflex -100 KPX Yacute adieresis -100 KPX Yacute agrave -60 KPX Yacute amacron -100 KPX Yacute aogonek -100 KPX Yacute aring -100 KPX Yacute atilde -100 KPX Yacute colon -75 KPX Yacute comma -100 KPX Yacute e -100 KPX Yacute eacute -100 KPX Yacute ecaron -60 KPX Yacute ecircumflex -100 KPX Yacute edieresis -60 KPX Yacute edotaccent -100 KPX Yacute egrave -60 KPX Yacute emacron -100 KPX Yacute eogonek -100 KPX Yacute hyphen -125 KPX Yacute i -18 KPX Yacute iacute -18 KPX Yacute icircumflex -18 KPX Yacute imacron -18 KPX Yacute iogonek -18 KPX Yacute o -100 KPX Yacute oacute -100 KPX Yacute ocircumflex -100 KPX Yacute odieresis -60 KPX Yacute ograve -60 KPX Yacute ohungarumlaut -100 KPX Yacute omacron -100 KPX Yacute oslash -100 KPX Yacute otilde -100 KPX Yacute period -100 KPX Yacute semicolon -75 KPX Yacute u -91 KPX Yacute uacute -91 KPX Yacute ucircumflex -91 KPX Yacute udieresis -91 KPX Yacute ugrave -91 KPX Yacute uhungarumlaut -91 KPX Yacute umacron -91 KPX Yacute uogonek -91 KPX Yacute uring -91 KPX Ydieresis A -75 KPX Ydieresis Aacute -75 KPX Ydieresis Abreve -75 KPX Ydieresis Acircumflex -75 KPX Ydieresis Adieresis -75 KPX Ydieresis Agrave -75 KPX Ydieresis Amacron -75 KPX Ydieresis Aogonek -75 KPX Ydieresis Aring -75 KPX Ydieresis Atilde -75 KPX Ydieresis O -18 KPX Ydieresis Oacute -18 KPX Ydieresis Ocircumflex -18 KPX Ydieresis Odieresis -18 KPX Ydieresis Ograve -18 KPX Ydieresis Ohungarumlaut -18 KPX Ydieresis Omacron -18 KPX Ydieresis Oslash -18 KPX Ydieresis Otilde -18 KPX Ydieresis a -100 KPX Ydieresis aacute -100 KPX Ydieresis abreve -60 KPX Ydieresis acircumflex -100 KPX Ydieresis adieresis -100 KPX Ydieresis agrave -60 KPX Ydieresis amacron -100 KPX Ydieresis aogonek -100 KPX Ydieresis aring -100 KPX Ydieresis atilde -100 KPX Ydieresis colon -75 KPX Ydieresis comma -100 KPX Ydieresis e -100 KPX Ydieresis eacute -100 KPX Ydieresis ecaron -60 KPX Ydieresis ecircumflex -100 KPX Ydieresis edieresis -60 KPX Ydieresis edotaccent -100 KPX Ydieresis egrave -60 KPX Ydieresis emacron -100 KPX Ydieresis eogonek -100 KPX Ydieresis hyphen -125 KPX Ydieresis i -18 KPX Ydieresis iacute -18 KPX Ydieresis icircumflex -18 KPX Ydieresis imacron -18 KPX Ydieresis iogonek -18 KPX Ydieresis o -100 KPX Ydieresis oacute -100 KPX Ydieresis ocircumflex -100 KPX Ydieresis odieresis -60 KPX Ydieresis ograve -60 KPX Ydieresis ohungarumlaut -100 KPX Ydieresis omacron -100 KPX Ydieresis oslash -100 KPX Ydieresis otilde -100 KPX Ydieresis period -100 KPX Ydieresis semicolon -75 KPX Ydieresis u -91 KPX Ydieresis uacute -91 KPX Ydieresis ucircumflex -91 KPX Ydieresis udieresis -91 KPX Ydieresis ugrave -91 KPX Ydieresis uhungarumlaut -91 KPX Ydieresis umacron -91 KPX Ydieresis uogonek -91 KPX Ydieresis uring -91 KPX a v -10 KPX a w -10 KPX a y -10 KPX a yacute -10 KPX a ydieresis -10 KPX aacute v -10 KPX aacute w -10 KPX aacute y -10 KPX aacute yacute -10 KPX aacute ydieresis -10 KPX abreve v -10 KPX abreve w -10 KPX abreve y -10 KPX abreve yacute -10 KPX abreve ydieresis -10 KPX acircumflex v -10 KPX acircumflex w -10 KPX acircumflex y -10 KPX acircumflex yacute -10 KPX acircumflex ydieresis -10 KPX adieresis v -10 KPX adieresis w -10 KPX adieresis y -10 KPX adieresis yacute -10 KPX adieresis ydieresis -10 KPX agrave v -10 KPX agrave w -10 KPX agrave y -10 KPX agrave yacute -10 KPX agrave ydieresis -10 KPX amacron v -10 KPX amacron w -10 KPX amacron y -10 KPX amacron yacute -10 KPX amacron ydieresis -10 KPX aogonek v -10 KPX aogonek w -10 KPX aring v -10 KPX aring w -10 KPX aring y -10 KPX aring yacute -10 KPX aring ydieresis -10 KPX atilde v -10 KPX atilde w -10 KPX atilde y -10 KPX atilde yacute -10 KPX atilde ydieresis -10 KPX b comma -18 KPX b period -18 KPX c comma -18 KPX c h -7 KPX c k -7 KPX c kcommaaccent -7 KPX c l -7 KPX c lacute -7 KPX c lcommaaccent -7 KPX c lslash -7 KPX c period -18 KPX cacute comma -18 KPX cacute h -7 KPX cacute k -7 KPX cacute kcommaaccent -7 KPX cacute l -7 KPX cacute lacute -7 KPX cacute lcommaaccent -7 KPX cacute lslash -7 KPX cacute period -18 KPX ccaron comma -18 KPX ccaron h -7 KPX ccaron k -7 KPX ccaron kcommaaccent -7 KPX ccaron l -7 KPX ccaron lacute -7 KPX ccaron lcommaaccent -7 KPX ccaron lslash -7 KPX ccaron period -18 KPX ccedilla comma -18 KPX ccedilla h -7 KPX ccedilla k -7 KPX ccedilla kcommaaccent -7 KPX ccedilla l -7 KPX ccedilla lacute -7 KPX ccedilla lcommaaccent -7 KPX ccedilla lslash -7 KPX ccedilla period -18 KPX colon space -37 KPX comma quotedblright -37 KPX comma quoteright -37 KPX comma space -37 KPX e comma -18 KPX e period -18 KPX eacute comma -18 KPX eacute period -18 KPX ecaron comma -18 KPX ecaron period -18 KPX ecircumflex comma -18 KPX ecircumflex period -18 KPX edieresis comma -18 KPX edieresis period -18 KPX edotaccent comma -18 KPX edotaccent period -18 KPX egrave comma -18 KPX egrave period -18 KPX emacron comma -18 KPX emacron period -18 KPX eogonek comma -18 KPX eogonek period -18 KPX f comma -37 KPX f period -37 KPX f quotedblright 100 KPX f quoteright 100 KPX g comma -25 KPX g period -25 KPX gbreve comma -25 KPX gbreve period -25 KPX gcommaaccent comma -25 KPX gcommaaccent period -25 KPX o comma -18 KPX o period -18 KPX oacute comma -18 KPX oacute period -18 KPX ocircumflex comma -18 KPX ocircumflex period -18 KPX odieresis comma -18 KPX odieresis period -18 KPX ograve comma -18 KPX ograve period -18 KPX ohungarumlaut comma -18 KPX ohungarumlaut period -18 KPX omacron comma -18 KPX omacron period -18 KPX oslash comma -18 KPX oslash period -18 KPX otilde comma -18 KPX otilde period -18 KPX p comma -18 KPX p period -18 KPX period quotedblright -37 KPX period quoteright -37 KPX period space -37 KPX quotedblleft A -74 KPX quotedblleft Aacute -74 KPX quotedblleft Abreve -74 KPX quotedblleft Acircumflex -74 KPX quotedblleft Adieresis -74 KPX quotedblleft Agrave -74 KPX quotedblleft Amacron -74 KPX quotedblleft Aogonek -74 KPX quotedblleft Aring -74 KPX quotedblleft Atilde -74 KPX quotedblright space -37 KPX quoteleft A -74 KPX quoteleft Aacute -74 KPX quoteleft Abreve -74 KPX quoteleft Acircumflex -74 KPX quoteleft Adieresis -74 KPX quoteleft Agrave -74 KPX quoteleft Amacron -74 KPX quoteleft Aogonek -74 KPX quoteleft Aring -74 KPX quoteleft Atilde -74 KPX quoteleft quoteleft -25 KPX quoteright d -37 KPX quoteright dcroat -37 KPX quoteright quoteright -25 KPX quoteright s -25 KPX quoteright sacute -25 KPX quoteright scaron -25 KPX quoteright scedilla -25 KPX quoteright scommaaccent -25 KPX r comma -100 KPX r hyphen -37 KPX r period -100 KPX racute comma -100 KPX racute hyphen -37 KPX racute period -100 KPX rcaron comma -100 KPX rcaron hyphen -37 KPX rcaron period -100 KPX rcommaaccent comma -100 KPX rcommaaccent hyphen -37 KPX rcommaaccent period -100 KPX s comma -25 KPX s period -25 KPX sacute comma -25 KPX sacute period -25 KPX scaron comma -25 KPX scaron period -25 KPX scedilla comma -25 KPX scedilla period -25 KPX scommaaccent comma -25 KPX scommaaccent period -25 KPX semicolon space -37 KPX space A -37 KPX space Aacute -37 KPX space Abreve -37 KPX space Acircumflex -37 KPX space Adieresis -37 KPX space Agrave -37 KPX space Amacron -37 KPX space Aogonek -37 KPX space Aring -37 KPX space Atilde -37 KPX space T -37 KPX space Tcaron -37 KPX space Tcommaaccent -37 KPX space V -37 KPX space W -37 KPX space Y -37 KPX space Yacute -37 KPX space Ydieresis -37 KPX space quotedblleft -37 KPX space quoteleft -37 KPX v comma -125 KPX v period -125 KPX w a -18 KPX w aacute -18 KPX w abreve -18 KPX w acircumflex -18 KPX w adieresis -18 KPX w agrave -18 KPX w amacron -18 KPX w aogonek -18 KPX w aring -18 KPX w atilde -18 KPX w comma -125 KPX w period -125 KPX y comma -125 KPX y period -125 KPX yacute comma -125 KPX yacute period -125 KPX ydieresis comma -125 KPX ydieresis period -125 EndKernPairs EndKernData EndFontMetrics gle-graphics-4.2.4c/src/fonts/Adobe-Core35_AFMs-314/Palatino-Roman.afm0000664000000000000000000011120511405446017023404 0ustar rootrootStartFontMetrics 4.1 Comment Copyright (c) 1985, 1987, 1989, 1990, 1992, 1997 Adobe Systems Incorporated. All Rights Reserved. Comment Creation Date: Mon Jun 23 16:33:55 1997 Comment UniqueID 43073 Comment VMusage 50775 65800 FontName Palatino-Roman FullName Palatino Roman FamilyName Palatino Weight Medium ItalicAngle 0 IsFixedPitch false FontBBox -166 -283 1021 927 UnderlinePosition -100 UnderlineThickness 50 Version 002.000 Notice Copyright (c) 1985, 1987, 1989, 1990, 1992, 1997 Adobe Systems Incorporated. All Rights Reserved.Palatino is a trademark of Linotype-Hell AG and/or its subsidiaries. EncodingScheme AdobeStandardEncoding CapHeight 692 XHeight 469 Ascender 726 Descender -281 StdHW 51 StdVW 84 StartCharMetrics 314 C 32 ; WX 250 ; N space ; B 0 0 0 0 ; C 33 ; WX 278 ; N exclam ; B 81 -5 197 694 ; C 34 ; WX 371 ; N quotedbl ; B 51 469 320 709 ; C 35 ; WX 500 ; N numbersign ; B 4 0 495 684 ; C 36 ; WX 500 ; N dollar ; B 30 -116 471 731 ; C 37 ; WX 840 ; N percent ; B 39 -20 802 709 ; C 38 ; WX 778 ; N ampersand ; B 43 -20 753 689 ; C 39 ; WX 278 ; N quoteright ; B 45 446 233 709 ; C 40 ; WX 333 ; N parenleft ; B 60 -215 301 726 ; C 41 ; WX 333 ; N parenright ; B 32 -215 273 726 ; C 42 ; WX 389 ; N asterisk ; B 32 342 359 689 ; C 43 ; WX 606 ; N plus ; B 51 7 555 512 ; C 44 ; WX 250 ; N comma ; B 16 -155 218 123 ; C 45 ; WX 333 ; N hyphen ; B 17 215 312 287 ; C 46 ; WX 250 ; N period ; B 67 -5 183 111 ; C 47 ; WX 606 ; N slash ; B 87 -119 519 726 ; C 48 ; WX 500 ; N zero ; B 29 -20 465 689 ; C 49 ; WX 500 ; N one ; B 60 -3 418 694 ; C 50 ; WX 500 ; N two ; B 16 -3 468 689 ; C 51 ; WX 500 ; N three ; B 15 -20 462 689 ; C 52 ; WX 500 ; N four ; B 2 -3 472 694 ; C 53 ; WX 500 ; N five ; B 13 -20 459 689 ; C 54 ; WX 500 ; N six ; B 32 -20 468 689 ; C 55 ; WX 500 ; N seven ; B 44 -3 497 689 ; C 56 ; WX 500 ; N eight ; B 30 -20 464 689 ; C 57 ; WX 500 ; N nine ; B 20 -20 457 689 ; C 58 ; WX 250 ; N colon ; B 66 -5 182 456 ; C 59 ; WX 250 ; N semicolon ; B 16 -153 218 456 ; C 60 ; WX 606 ; N less ; B 57 0 558 522 ; C 61 ; WX 606 ; N equal ; B 51 136 555 386 ; C 62 ; WX 606 ; N greater ; B 48 0 549 522 ; C 63 ; WX 444 ; N question ; B 43 -5 395 694 ; C 64 ; WX 747 ; N at ; B 24 -20 724 694 ; C 65 ; WX 778 ; N A ; B 15 -3 756 700 ; C 66 ; WX 611 ; N B ; B 26 -3 576 692 ; C 67 ; WX 709 ; N C ; B 22 -20 670 709 ; C 68 ; WX 774 ; N D ; B 22 -4 751 692 ; C 69 ; WX 611 ; N E ; B 22 -4 572 692 ; C 70 ; WX 556 ; N F ; B 22 -3 536 692 ; C 71 ; WX 763 ; N G ; B 22 -20 728 709 ; C 72 ; WX 832 ; N H ; B 22 -3 810 692 ; C 73 ; WX 337 ; N I ; B 22 -3 315 692 ; C 74 ; WX 333 ; N J ; B -15 -194 311 692 ; C 75 ; WX 726 ; N K ; B 22 -3 719 692 ; C 76 ; WX 611 ; N L ; B 22 -4 586 692 ; C 77 ; WX 946 ; N M ; B 16 -13 926 692 ; C 78 ; WX 831 ; N N ; B 17 -20 813 692 ; C 79 ; WX 786 ; N O ; B 22 -20 764 709 ; C 80 ; WX 604 ; N P ; B 22 -3 580 692 ; C 81 ; WX 786 ; N Q ; B 22 -176 764 709 ; C 82 ; WX 668 ; N R ; B 22 -3 669 692 ; C 83 ; WX 525 ; N S ; B 24 -20 503 709 ; C 84 ; WX 613 ; N T ; B 18 -3 595 692 ; C 85 ; WX 778 ; N U ; B 12 -20 759 692 ; C 86 ; WX 722 ; N V ; B 8 -9 706 692 ; C 87 ; WX 1000 ; N W ; B 8 -9 984 700 ; C 88 ; WX 667 ; N X ; B 14 -3 648 700 ; C 89 ; WX 667 ; N Y ; B 9 -3 654 705 ; C 90 ; WX 667 ; N Z ; B 15 -3 638 692 ; C 91 ; WX 333 ; N bracketleft ; B 79 -184 288 726 ; C 92 ; WX 606 ; N backslash ; B 81 0 512 726 ; C 93 ; WX 333 ; N bracketright ; B 45 -184 254 726 ; C 94 ; WX 606 ; N asciicircum ; B 51 283 554 689 ; C 95 ; WX 500 ; N underscore ; B 0 -125 500 -75 ; C 96 ; WX 278 ; N quoteleft ; B 45 446 233 709 ; C 97 ; WX 500 ; N a ; B 32 -12 471 469 ; C 98 ; WX 553 ; N b ; B -15 -12 508 726 ; C 99 ; WX 444 ; N c ; B 26 -20 413 469 ; C 100 ; WX 611 ; N d ; B 35 -12 579 726 ; C 101 ; WX 479 ; N e ; B 26 -20 448 469 ; C 102 ; WX 333 ; N f ; B 23 -3 341 728 ; L i fi ; L l fl ; C 103 ; WX 556 ; N g ; B 32 -283 544 469 ; C 104 ; WX 582 ; N h ; B 6 -3 572 726 ; C 105 ; WX 291 ; N i ; B 21 -3 271 687 ; C 106 ; WX 234 ; N j ; B -40 -283 167 688 ; C 107 ; WX 556 ; N k ; B 21 -12 549 726 ; C 108 ; WX 291 ; N l ; B 21 -3 271 726 ; C 109 ; WX 883 ; N m ; B 16 -3 869 469 ; C 110 ; WX 582 ; N n ; B 6 -3 572 469 ; C 111 ; WX 546 ; N o ; B 32 -20 514 469 ; C 112 ; WX 601 ; N p ; B 8 -281 554 469 ; C 113 ; WX 560 ; N q ; B 35 -281 560 469 ; C 114 ; WX 395 ; N r ; B 21 -3 374 469 ; C 115 ; WX 424 ; N s ; B 30 -20 391 469 ; C 116 ; WX 326 ; N t ; B 22 -12 319 621 ; C 117 ; WX 603 ; N u ; B 18 -12 581 469 ; C 118 ; WX 565 ; N v ; B 6 -7 539 459 ; C 119 ; WX 834 ; N w ; B 6 -7 808 469 ; C 120 ; WX 516 ; N x ; B 20 -3 496 469 ; C 121 ; WX 556 ; N y ; B 12 -283 544 459 ; C 122 ; WX 500 ; N z ; B 16 -3 466 462 ; C 123 ; WX 333 ; N braceleft ; B 58 -175 289 726 ; C 124 ; WX 606 ; N bar ; B 275 -250 331 750 ; C 125 ; WX 333 ; N braceright ; B 44 -175 275 726 ; C 126 ; WX 606 ; N asciitilde ; B 51 176 555 347 ; C 161 ; WX 278 ; N exclamdown ; B 81 -225 197 469 ; C 162 ; WX 500 ; N cent ; B 61 -101 448 562 ; C 163 ; WX 500 ; N sterling ; B 12 -13 478 694 ; C 164 ; WX 167 ; N fraction ; B -166 0 337 689 ; C 165 ; WX 500 ; N yen ; B 5 -3 496 702 ; C 166 ; WX 500 ; N florin ; B 0 -262 473 706 ; C 167 ; WX 500 ; N section ; B 26 -219 465 709 ; C 168 ; WX 500 ; N currency ; B 30 96 470 531 ; C 169 ; WX 208 ; N quotesingle ; B 60 469 148 709 ; C 170 ; WX 500 ; N quotedblleft ; B 51 446 449 709 ; C 171 ; WX 500 ; N guillemotleft ; B 50 71 450 428 ; C 172 ; WX 331 ; N guilsinglleft ; B 66 71 265 428 ; C 173 ; WX 331 ; N guilsinglright ; B 66 71 265 428 ; C 174 ; WX 605 ; N fi ; B 23 -3 587 728 ; C 175 ; WX 608 ; N fl ; B 23 -3 590 728 ; C 177 ; WX 500 ; N endash ; B 0 219 500 277 ; C 178 ; WX 500 ; N dagger ; B 34 -5 466 694 ; C 179 ; WX 500 ; N daggerdbl ; B 34 -249 466 694 ; C 180 ; WX 250 ; N periodcentered ; B 67 203 183 319 ; C 182 ; WX 628 ; N paragraph ; B 39 -150 589 695 ; C 183 ; WX 606 ; N bullet ; B 131 172 475 516 ; C 184 ; WX 278 ; N quotesinglbase ; B 22 -153 210 110 ; C 185 ; WX 500 ; N quotedblbase ; B 51 -153 449 110 ; C 186 ; WX 500 ; N quotedblright ; B 51 446 449 709 ; C 187 ; WX 500 ; N guillemotright ; B 50 71 450 428 ; C 188 ; WX 1000 ; N ellipsis ; B 109 -5 891 111 ; C 189 ; WX 1144 ; N perthousand ; B 123 -20 1021 709 ; C 191 ; WX 444 ; N questiondown ; B 43 -231 395 469 ; C 193 ; WX 333 ; N grave ; B 31 506 255 677 ; C 194 ; WX 333 ; N acute ; B 78 506 302 677 ; C 195 ; WX 333 ; N circumflex ; B 11 510 323 677 ; C 196 ; WX 333 ; N tilde ; B 2 535 332 640 ; C 197 ; WX 333 ; N macron ; B 11 538 323 591 ; C 198 ; WX 333 ; N breve ; B 26 506 308 664 ; C 199 ; WX 250 ; N dotaccent ; B 70 576 181 687 ; C 200 ; WX 333 ; N dieresis ; B 12 576 322 687 ; C 202 ; WX 333 ; N ring ; B 67 496 267 696 ; C 203 ; WX 333 ; N cedilla ; B 96 -225 304 -10 ; C 205 ; WX 380 ; N hungarumlaut ; B 3 506 377 687 ; C 206 ; WX 313 ; N ogonek ; B 50 -225 288 -20 ; C 207 ; WX 333 ; N caron ; B 11 510 323 677 ; C 208 ; WX 1000 ; N emdash ; B 0 219 1000 277 ; C 225 ; WX 944 ; N AE ; B -10 -4 908 692 ; C 227 ; WX 333 ; N ordfeminine ; B 24 422 310 709 ; C 232 ; WX 611 ; N Lslash ; B 6 -4 586 692 ; C 233 ; WX 833 ; N Oslash ; B 30 -20 797 709 ; C 234 ; WX 998 ; N OE ; B 22 -20 962 709 ; C 235 ; WX 333 ; N ordmasculine ; B 10 416 323 709 ; C 241 ; WX 758 ; N ae ; B 30 -20 732 469 ; C 245 ; WX 287 ; N dotlessi ; B 21 -3 271 469 ; C 248 ; WX 291 ; N lslash ; B -14 -3 306 726 ; C 249 ; WX 556 ; N oslash ; B 16 -23 530 474 ; C 250 ; WX 827 ; N oe ; B 32 -20 800 469 ; C 251 ; WX 556 ; N germandbls ; B 23 -9 519 731 ; C -1 ; WX 337 ; N Idieresis ; B 14 -3 324 868 ; C -1 ; WX 479 ; N eacute ; B 26 -20 448 697 ; C -1 ; WX 500 ; N abreve ; B 32 -12 471 684 ; C -1 ; WX 603 ; N uhungarumlaut ; B 18 -12 581 707 ; C -1 ; WX 479 ; N ecaron ; B 26 -20 448 697 ; C -1 ; WX 667 ; N Ydieresis ; B 9 -3 654 868 ; C -1 ; WX 606 ; N divide ; B 51 10 555 512 ; C -1 ; WX 667 ; N Yacute ; B 9 -3 654 908 ; C -1 ; WX 778 ; N Acircumflex ; B 15 -3 756 908 ; C -1 ; WX 500 ; N aacute ; B 32 -12 471 697 ; C -1 ; WX 778 ; N Ucircumflex ; B 12 -20 759 908 ; C -1 ; WX 556 ; N yacute ; B 12 -283 544 697 ; C -1 ; WX 424 ; N scommaaccent ; B 30 -263 391 469 ; C -1 ; WX 479 ; N ecircumflex ; B 26 -20 448 697 ; C -1 ; WX 778 ; N Uring ; B 12 -20 759 927 ; C -1 ; WX 778 ; N Udieresis ; B 12 -20 759 868 ; C -1 ; WX 500 ; N aogonek ; B 32 -225 488 469 ; C -1 ; WX 778 ; N Uacute ; B 12 -20 759 908 ; C -1 ; WX 603 ; N uogonek ; B 18 -225 628 469 ; C -1 ; WX 611 ; N Edieresis ; B 22 -4 572 868 ; C -1 ; WX 774 ; N Dcroat ; B 14 -3 751 692 ; C -1 ; WX 250 ; N commaaccent ; B 53 -283 213 -50 ; C -1 ; WX 747 ; N copyright ; B 11 -18 736 706 ; C -1 ; WX 611 ; N Emacron ; B 22 -4 572 822 ; C -1 ; WX 444 ; N ccaron ; B 26 -20 413 697 ; C -1 ; WX 500 ; N aring ; B 32 -12 471 716 ; C -1 ; WX 831 ; N Ncommaaccent ; B 17 -283 813 692 ; C -1 ; WX 291 ; N lacute ; B 21 -3 321 927 ; C -1 ; WX 500 ; N agrave ; B 32 -12 471 697 ; C -1 ; WX 613 ; N Tcommaaccent ; B 18 -283 595 692 ; C -1 ; WX 709 ; N Cacute ; B 22 -20 670 908 ; C -1 ; WX 500 ; N atilde ; B 32 -12 471 672 ; C -1 ; WX 611 ; N Edotaccent ; B 22 -4 572 868 ; C -1 ; WX 424 ; N scaron ; B 30 -20 391 697 ; C -1 ; WX 424 ; N scedilla ; B 30 -225 391 469 ; C -1 ; WX 287 ; N iacute ; B 21 -3 279 697 ; C -1 ; WX 471 ; N lozenge ; B 21 0 451 710 ; C -1 ; WX 668 ; N Rcaron ; B 22 -3 669 908 ; C -1 ; WX 763 ; N Gcommaaccent ; B 22 -283 728 709 ; C -1 ; WX 603 ; N ucircumflex ; B 18 -12 581 697 ; C -1 ; WX 500 ; N acircumflex ; B 32 -12 471 697 ; C -1 ; WX 778 ; N Amacron ; B 15 -3 756 822 ; C -1 ; WX 395 ; N rcaron ; B 21 -3 374 697 ; C -1 ; WX 444 ; N ccedilla ; B 26 -225 413 469 ; C -1 ; WX 667 ; N Zdotaccent ; B 15 -3 638 868 ; C -1 ; WX 604 ; N Thorn ; B 32 -3 574 692 ; C -1 ; WX 786 ; N Omacron ; B 22 -20 764 822 ; C -1 ; WX 668 ; N Racute ; B 22 -3 669 908 ; C -1 ; WX 525 ; N Sacute ; B 24 -20 503 908 ; C -1 ; WX 671 ; N dcaron ; B 35 -12 684 736 ; C -1 ; WX 778 ; N Umacron ; B 12 -20 759 822 ; C -1 ; WX 603 ; N uring ; B 18 -12 581 716 ; C -1 ; WX 300 ; N threesuperior ; B 1 266 299 689 ; C -1 ; WX 786 ; N Ograve ; B 22 -20 764 908 ; C -1 ; WX 778 ; N Agrave ; B 15 -3 756 908 ; C -1 ; WX 778 ; N Abreve ; B 15 -3 756 915 ; C -1 ; WX 606 ; N multiply ; B 83 36 523 474 ; C -1 ; WX 603 ; N uacute ; B 18 -12 581 697 ; C -1 ; WX 613 ; N Tcaron ; B 18 -3 595 908 ; C -1 ; WX 476 ; N partialdiff ; B 34 -21 450 711 ; C -1 ; WX 556 ; N ydieresis ; B 12 -283 544 657 ; C -1 ; WX 831 ; N Nacute ; B 17 -20 813 908 ; C -1 ; WX 287 ; N icircumflex ; B -12 -3 300 697 ; C -1 ; WX 611 ; N Ecircumflex ; B 22 -4 572 908 ; C -1 ; WX 500 ; N adieresis ; B 32 -12 471 657 ; C -1 ; WX 479 ; N edieresis ; B 26 -20 448 657 ; C -1 ; WX 444 ; N cacute ; B 26 -20 413 697 ; C -1 ; WX 582 ; N nacute ; B 6 -3 572 697 ; C -1 ; WX 603 ; N umacron ; B 18 -12 581 611 ; C -1 ; WX 831 ; N Ncaron ; B 17 -20 813 908 ; C -1 ; WX 337 ; N Iacute ; B 22 -3 315 908 ; C -1 ; WX 606 ; N plusminus ; B 51 0 555 512 ; C -1 ; WX 606 ; N brokenbar ; B 275 -175 331 675 ; C -1 ; WX 747 ; N registered ; B 11 -18 736 706 ; C -1 ; WX 763 ; N Gbreve ; B 22 -20 728 915 ; C -1 ; WX 337 ; N Idotaccent ; B 22 -3 315 868 ; C -1 ; WX 600 ; N summation ; B 15 -10 586 706 ; C -1 ; WX 611 ; N Egrave ; B 22 -4 572 908 ; C -1 ; WX 395 ; N racute ; B 21 -3 374 697 ; C -1 ; WX 546 ; N omacron ; B 32 -20 514 611 ; C -1 ; WX 667 ; N Zacute ; B 15 -3 638 908 ; C -1 ; WX 667 ; N Zcaron ; B 15 -3 638 908 ; C -1 ; WX 549 ; N greaterequal ; B 26 0 523 643 ; C -1 ; WX 774 ; N Eth ; B 14 -3 751 692 ; C -1 ; WX 709 ; N Ccedilla ; B 22 -225 670 709 ; C -1 ; WX 291 ; N lcommaaccent ; B 21 -263 271 726 ; C -1 ; WX 386 ; N tcaron ; B 22 -12 401 746 ; C -1 ; WX 479 ; N eogonek ; B 26 -225 448 469 ; C -1 ; WX 778 ; N Uogonek ; B 12 -225 759 692 ; C -1 ; WX 778 ; N Aacute ; B 15 -3 756 908 ; C -1 ; WX 778 ; N Adieresis ; B 15 -3 756 868 ; C -1 ; WX 479 ; N egrave ; B 26 -20 448 697 ; C -1 ; WX 500 ; N zacute ; B 16 -3 466 697 ; C -1 ; WX 291 ; N iogonek ; B 21 -225 318 687 ; C -1 ; WX 786 ; N Oacute ; B 22 -20 764 908 ; C -1 ; WX 546 ; N oacute ; B 32 -20 514 697 ; C -1 ; WX 500 ; N amacron ; B 32 -12 471 611 ; C -1 ; WX 424 ; N sacute ; B 30 -20 391 697 ; C -1 ; WX 287 ; N idieresis ; B -11 -3 299 657 ; C -1 ; WX 786 ; N Ocircumflex ; B 22 -20 764 908 ; C -1 ; WX 778 ; N Ugrave ; B 12 -20 759 908 ; C -1 ; WX 600 ; N Delta ; B 6 0 608 688 ; C -1 ; WX 601 ; N thorn ; B -2 -281 544 726 ; C -1 ; WX 300 ; N twosuperior ; B 0 273 301 689 ; C -1 ; WX 786 ; N Odieresis ; B 22 -20 764 868 ; C -1 ; WX 603 ; N mu ; B 18 -236 581 469 ; C -1 ; WX 287 ; N igrave ; B 8 -3 271 697 ; C -1 ; WX 546 ; N ohungarumlaut ; B 32 -20 514 707 ; C -1 ; WX 611 ; N Eogonek ; B 22 -225 572 692 ; C -1 ; WX 611 ; N dcroat ; B 35 -12 579 726 ; C -1 ; WX 750 ; N threequarters ; B 15 -3 735 689 ; C -1 ; WX 525 ; N Scedilla ; B 24 -225 503 709 ; C -1 ; WX 371 ; N lcaron ; B 21 -3 376 726 ; C -1 ; WX 726 ; N Kcommaaccent ; B 22 -283 719 692 ; C -1 ; WX 611 ; N Lacute ; B 22 -4 586 908 ; C -1 ; WX 979 ; N trademark ; B 40 285 939 689 ; C -1 ; WX 479 ; N edotaccent ; B 26 -20 448 657 ; C -1 ; WX 337 ; N Igrave ; B 22 -3 315 908 ; C -1 ; WX 337 ; N Imacron ; B 13 -3 325 822 ; C -1 ; WX 611 ; N Lcaron ; B 22 -4 586 716 ; C -1 ; WX 750 ; N onehalf ; B 15 -3 735 692 ; C -1 ; WX 549 ; N lessequal ; B 26 0 523 642 ; C -1 ; WX 546 ; N ocircumflex ; B 32 -20 514 697 ; C -1 ; WX 582 ; N ntilde ; B 6 -3 572 672 ; C -1 ; WX 778 ; N Uhungarumlaut ; B 12 -20 759 918 ; C -1 ; WX 611 ; N Eacute ; B 22 -4 572 908 ; C -1 ; WX 479 ; N emacron ; B 26 -20 448 611 ; C -1 ; WX 556 ; N gbreve ; B 32 -283 544 724 ; C -1 ; WX 750 ; N onequarter ; B 30 -3 727 692 ; C -1 ; WX 525 ; N Scaron ; B 24 -20 503 908 ; C -1 ; WX 525 ; N Scommaaccent ; B 24 -283 503 709 ; C -1 ; WX 786 ; N Ohungarumlaut ; B 22 -20 764 918 ; C -1 ; WX 400 ; N degree ; B 50 389 350 689 ; C -1 ; WX 546 ; N ograve ; B 32 -20 514 697 ; C -1 ; WX 709 ; N Ccaron ; B 22 -20 670 908 ; C -1 ; WX 603 ; N ugrave ; B 18 -12 581 697 ; C -1 ; WX 453 ; N radical ; B 12 -55 442 747 ; C -1 ; WX 774 ; N Dcaron ; B 22 -4 751 908 ; C -1 ; WX 395 ; N rcommaaccent ; B 21 -263 374 469 ; C -1 ; WX 831 ; N Ntilde ; B 17 -20 813 871 ; C -1 ; WX 546 ; N otilde ; B 32 -20 514 672 ; C -1 ; WX 668 ; N Rcommaaccent ; B 22 -283 669 692 ; C -1 ; WX 611 ; N Lcommaaccent ; B 22 -283 586 692 ; C -1 ; WX 778 ; N Atilde ; B 15 -3 756 871 ; C -1 ; WX 778 ; N Aogonek ; B 15 -225 768 700 ; C -1 ; WX 778 ; N Aring ; B 15 -3 756 927 ; C -1 ; WX 786 ; N Otilde ; B 22 -20 764 883 ; C -1 ; WX 500 ; N zdotaccent ; B 16 -3 466 657 ; C -1 ; WX 611 ; N Ecaron ; B 22 -4 572 908 ; C -1 ; WX 337 ; N Iogonek ; B 22 -225 328 692 ; C -1 ; WX 556 ; N kcommaaccent ; B 21 -263 549 726 ; C -1 ; WX 606 ; N minus ; B 51 233 555 289 ; C -1 ; WX 337 ; N Icircumflex ; B 13 -3 325 908 ; C -1 ; WX 582 ; N ncaron ; B 6 -3 572 697 ; C -1 ; WX 326 ; N tcommaaccent ; B 22 -263 319 621 ; C -1 ; WX 606 ; N logicalnot ; B 51 120 551 386 ; C -1 ; WX 546 ; N odieresis ; B 32 -20 514 657 ; C -1 ; WX 603 ; N udieresis ; B 18 -12 581 657 ; C -1 ; WX 549 ; N notequal ; B 12 -16 537 538 ; C -1 ; WX 556 ; N gcommaaccent ; B 32 -283 544 773 ; C -1 ; WX 546 ; N eth ; B 32 -20 504 728 ; C -1 ; WX 500 ; N zcaron ; B 16 -3 466 697 ; C -1 ; WX 582 ; N ncommaaccent ; B 6 -263 572 469 ; C -1 ; WX 300 ; N onesuperior ; B 31 273 269 692 ; C -1 ; WX 291 ; N imacron ; B 21 -3 271 591 ; EndCharMetrics StartKernData StartKernPairs 1031 KPX A T -74 KPX A Tcaron -74 KPX A Tcommaaccent -74 KPX A V -111 KPX A W -74 KPX A Y -111 KPX A Yacute -111 KPX A Ydieresis -111 KPX A quoteright -74 KPX A space -55 KPX A v -92 KPX A w -74 KPX A y -74 KPX A yacute -74 KPX A ydieresis -74 KPX Aacute T -74 KPX Aacute Tcaron -74 KPX Aacute Tcommaaccent -74 KPX Aacute V -111 KPX Aacute W -74 KPX Aacute Y -111 KPX Aacute Yacute -111 KPX Aacute Ydieresis -111 KPX Aacute quoteright -74 KPX Aacute space -55 KPX Aacute v -92 KPX Aacute w -74 KPX Aacute y -74 KPX Aacute yacute -74 KPX Aacute ydieresis -74 KPX Abreve T -74 KPX Abreve Tcaron -74 KPX Abreve Tcommaaccent -74 KPX Abreve V -111 KPX Abreve W -74 KPX Abreve Y -111 KPX Abreve Yacute -111 KPX Abreve Ydieresis -111 KPX Abreve quoteright -74 KPX Abreve space -55 KPX Abreve v -92 KPX Abreve w -74 KPX Abreve y -74 KPX Abreve yacute -74 KPX Abreve ydieresis -74 KPX Acircumflex T -74 KPX Acircumflex Tcaron -74 KPX Acircumflex Tcommaaccent -74 KPX Acircumflex V -111 KPX Acircumflex W -74 KPX Acircumflex Y -111 KPX Acircumflex Yacute -111 KPX Acircumflex Ydieresis -111 KPX Acircumflex quoteright -74 KPX Acircumflex space -55 KPX Acircumflex v -92 KPX Acircumflex w -74 KPX Acircumflex y -74 KPX Acircumflex yacute -74 KPX Acircumflex ydieresis -74 KPX Adieresis T -74 KPX Adieresis Tcaron -74 KPX Adieresis Tcommaaccent -74 KPX Adieresis V -111 KPX Adieresis W -74 KPX Adieresis Y -111 KPX Adieresis Yacute -111 KPX Adieresis Ydieresis -111 KPX Adieresis quoteright -74 KPX Adieresis space -55 KPX Adieresis v -92 KPX Adieresis w -74 KPX Adieresis y -74 KPX Adieresis yacute -74 KPX Adieresis ydieresis -74 KPX Agrave T -74 KPX Agrave Tcaron -74 KPX Agrave Tcommaaccent -74 KPX Agrave V -111 KPX Agrave W -74 KPX Agrave Y -111 KPX Agrave Yacute -111 KPX Agrave Ydieresis -111 KPX Agrave quoteright -74 KPX Agrave space -55 KPX Agrave v -92 KPX Agrave w -74 KPX Agrave y -74 KPX Agrave yacute -74 KPX Agrave ydieresis -74 KPX Amacron T -74 KPX Amacron Tcaron -74 KPX Amacron Tcommaaccent -74 KPX Amacron V -111 KPX Amacron W -74 KPX Amacron Y -111 KPX Amacron Yacute -111 KPX Amacron Ydieresis -111 KPX Amacron quoteright -74 KPX Amacron space -55 KPX Amacron v -92 KPX Amacron w -74 KPX Amacron y -74 KPX Amacron yacute -74 KPX Amacron ydieresis -74 KPX Aogonek T -74 KPX Aogonek Tcaron -74 KPX Aogonek Tcommaaccent -74 KPX Aogonek V -111 KPX Aogonek W -74 KPX Aogonek Y -111 KPX Aogonek Yacute -111 KPX Aogonek Ydieresis -111 KPX Aogonek quoteright -74 KPX Aogonek space -55 KPX Aogonek v -92 KPX Aogonek w -74 KPX Aogonek y -74 KPX Aogonek yacute -74 KPX Aogonek ydieresis -74 KPX Aring T -74 KPX Aring Tcaron -74 KPX Aring Tcommaaccent -74 KPX Aring V -111 KPX Aring W -74 KPX Aring Y -111 KPX Aring Yacute -111 KPX Aring Ydieresis -111 KPX Aring quoteright -74 KPX Aring space -55 KPX Aring v -92 KPX Aring w -74 KPX Aring y -74 KPX Aring yacute -74 KPX Aring ydieresis -74 KPX Atilde T -74 KPX Atilde Tcaron -74 KPX Atilde Tcommaaccent -74 KPX Atilde V -111 KPX Atilde W -74 KPX Atilde Y -111 KPX Atilde Yacute -111 KPX Atilde Ydieresis -111 KPX Atilde quoteright -74 KPX Atilde space -55 KPX Atilde v -92 KPX Atilde w -74 KPX Atilde y -74 KPX Atilde yacute -74 KPX Atilde ydieresis -74 KPX F A -74 KPX F Aacute -74 KPX F Abreve -74 KPX F Acircumflex -74 KPX F Adieresis -74 KPX F Agrave -74 KPX F Amacron -74 KPX F Aogonek -74 KPX F Aring -74 KPX F Atilde -74 KPX F comma -92 KPX F period -92 KPX L T -74 KPX L Tcaron -74 KPX L Tcommaaccent -74 KPX L V -92 KPX L W -74 KPX L Y -92 KPX L Yacute -92 KPX L Ydieresis -92 KPX L quoteright -74 KPX L space -37 KPX L y -55 KPX L yacute -55 KPX L ydieresis -55 KPX Lacute T -74 KPX Lacute Tcaron -74 KPX Lacute Tcommaaccent -74 KPX Lacute V -92 KPX Lacute W -74 KPX Lacute Y -92 KPX Lacute Yacute -92 KPX Lacute Ydieresis -92 KPX Lacute quoteright -74 KPX Lacute space -37 KPX Lacute y -55 KPX Lacute yacute -55 KPX Lacute ydieresis -55 KPX Lcaron T -74 KPX Lcaron Tcaron -74 KPX Lcaron Tcommaaccent -74 KPX Lcaron V -92 KPX Lcaron W -74 KPX Lcaron Y -92 KPX Lcaron Yacute -92 KPX Lcaron Ydieresis -92 KPX Lcaron quoteright -74 KPX Lcaron space -37 KPX Lcaron y -55 KPX Lcaron yacute -55 KPX Lcaron ydieresis -55 KPX Lcommaaccent T -74 KPX Lcommaaccent Tcaron -74 KPX Lcommaaccent Tcommaaccent -74 KPX Lcommaaccent V -92 KPX Lcommaaccent W -74 KPX Lcommaaccent Y -92 KPX Lcommaaccent Yacute -92 KPX Lcommaaccent Ydieresis -92 KPX Lcommaaccent quoteright -74 KPX Lcommaaccent space -37 KPX Lcommaaccent y -55 KPX Lcommaaccent yacute -55 KPX Lcommaaccent ydieresis -55 KPX Lslash T -74 KPX Lslash Tcaron -74 KPX Lslash Tcommaaccent -74 KPX Lslash V -92 KPX Lslash W -74 KPX Lslash Y -92 KPX Lslash Yacute -92 KPX Lslash Ydieresis -92 KPX Lslash quoteright -74 KPX Lslash space -37 KPX Lslash y -55 KPX Lslash yacute -55 KPX Lslash ydieresis -55 KPX P A -92 KPX P Aacute -92 KPX P Abreve -92 KPX P Acircumflex -92 KPX P Adieresis -92 KPX P Agrave -92 KPX P Amacron -92 KPX P Aogonek -92 KPX P Aring -92 KPX P Atilde -92 KPX P comma -129 KPX P period -129 KPX P space -18 KPX R T -37 KPX R Tcaron -37 KPX R Tcommaaccent -37 KPX R V -55 KPX R W -37 KPX R Y -37 KPX R Yacute -37 KPX R Ydieresis -37 KPX R y -37 KPX R yacute -37 KPX R ydieresis -37 KPX Racute T -37 KPX Racute Tcaron -37 KPX Racute Tcommaaccent -37 KPX Racute V -55 KPX Racute W -37 KPX Racute Y -37 KPX Racute Yacute -37 KPX Racute Ydieresis -37 KPX Racute y -37 KPX Racute yacute -37 KPX Racute ydieresis -37 KPX Rcaron T -37 KPX Rcaron Tcaron -37 KPX Rcaron Tcommaaccent -37 KPX Rcaron V -55 KPX Rcaron W -37 KPX Rcaron Y -37 KPX Rcaron Yacute -37 KPX Rcaron Ydieresis -37 KPX Rcaron y -37 KPX Rcaron yacute -37 KPX Rcaron ydieresis -37 KPX Rcommaaccent T -37 KPX Rcommaaccent Tcaron -37 KPX Rcommaaccent Tcommaaccent -37 KPX Rcommaaccent V -55 KPX Rcommaaccent W -37 KPX Rcommaaccent Y -37 KPX Rcommaaccent Yacute -37 KPX Rcommaaccent Ydieresis -37 KPX Rcommaaccent y -37 KPX Rcommaaccent yacute -37 KPX Rcommaaccent ydieresis -37 KPX T A -74 KPX T Aacute -74 KPX T Abreve -74 KPX T Acircumflex -74 KPX T Adieresis -74 KPX T Agrave -74 KPX T Amacron -74 KPX T Aogonek -74 KPX T Aring -74 KPX T Atilde -74 KPX T O -18 KPX T Oacute -18 KPX T Ocircumflex -18 KPX T Odieresis -18 KPX T Ograve -18 KPX T Ohungarumlaut -18 KPX T Omacron -18 KPX T Oslash -18 KPX T Otilde -18 KPX T a -92 KPX T aacute -92 KPX T abreve -92 KPX T acircumflex -92 KPX T adieresis -52 KPX T agrave -52 KPX T amacron -52 KPX T aogonek -92 KPX T aring -92 KPX T atilde -52 KPX T c -111 KPX T cacute -111 KPX T ccaron -71 KPX T ccedilla -111 KPX T colon -55 KPX T comma -74 KPX T e -92 KPX T eacute -92 KPX T ecaron -92 KPX T ecircumflex -92 KPX T edieresis -52 KPX T edotaccent -92 KPX T egrave -92 KPX T emacron -92 KPX T eogonek -92 KPX T hyphen -55 KPX T i -55 KPX T iacute -55 KPX T iogonek -55 KPX T o -92 KPX T oacute -92 KPX T ocircumflex -92 KPX T odieresis -92 KPX T ograve -92 KPX T ohungarumlaut -92 KPX T omacron -92 KPX T oslash -92 KPX T otilde -92 KPX T period -74 KPX T r -90 KPX T racute -90 KPX T rcaron -50 KPX T rcommaaccent -90 KPX T s -90 KPX T sacute -90 KPX T scaron -50 KPX T scedilla -90 KPX T scommaaccent -90 KPX T semicolon -55 KPX T u -90 KPX T uacute -90 KPX T ucircumflex -90 KPX T udieresis -90 KPX T ugrave -90 KPX T uhungarumlaut -90 KPX T umacron -90 KPX T uogonek -90 KPX T uring -90 KPX T w -90 KPX T y -90 KPX T yacute -90 KPX T ydieresis -90 KPX Tcaron A -74 KPX Tcaron Aacute -74 KPX Tcaron Abreve -74 KPX Tcaron Acircumflex -74 KPX Tcaron Adieresis -74 KPX Tcaron Agrave -74 KPX Tcaron Amacron -74 KPX Tcaron Aogonek -74 KPX Tcaron Aring -74 KPX Tcaron Atilde -74 KPX Tcaron O -18 KPX Tcaron Oacute -18 KPX Tcaron Ocircumflex -18 KPX Tcaron Odieresis -18 KPX Tcaron Ograve -18 KPX Tcaron Ohungarumlaut -18 KPX Tcaron Omacron -18 KPX Tcaron Oslash -18 KPX Tcaron Otilde -18 KPX Tcaron a -92 KPX Tcaron aacute -92 KPX Tcaron abreve -92 KPX Tcaron acircumflex -92 KPX Tcaron adieresis -52 KPX Tcaron agrave -52 KPX Tcaron amacron -52 KPX Tcaron aogonek -92 KPX Tcaron aring -92 KPX Tcaron atilde -52 KPX Tcaron c -111 KPX Tcaron cacute -111 KPX Tcaron ccaron -71 KPX Tcaron ccedilla -111 KPX Tcaron colon -55 KPX Tcaron comma -74 KPX Tcaron e -92 KPX Tcaron eacute -92 KPX Tcaron ecaron -92 KPX Tcaron ecircumflex -92 KPX Tcaron edieresis -52 KPX Tcaron edotaccent -92 KPX Tcaron egrave -92 KPX Tcaron emacron -92 KPX Tcaron eogonek -92 KPX Tcaron hyphen -55 KPX Tcaron i -55 KPX Tcaron iacute -55 KPX Tcaron iogonek -55 KPX Tcaron o -92 KPX Tcaron oacute -92 KPX Tcaron ocircumflex -92 KPX Tcaron odieresis -92 KPX Tcaron ograve -92 KPX Tcaron ohungarumlaut -92 KPX Tcaron omacron -92 KPX Tcaron oslash -92 KPX Tcaron otilde -92 KPX Tcaron period -74 KPX Tcaron r -90 KPX Tcaron racute -90 KPX Tcaron rcaron -50 KPX Tcaron rcommaaccent -90 KPX Tcaron s -90 KPX Tcaron sacute -90 KPX Tcaron scaron -50 KPX Tcaron scedilla -90 KPX Tcaron scommaaccent -90 KPX Tcaron semicolon -55 KPX Tcaron u -90 KPX Tcaron uacute -90 KPX Tcaron ucircumflex -90 KPX Tcaron udieresis -90 KPX Tcaron ugrave -90 KPX Tcaron uhungarumlaut -90 KPX Tcaron umacron -90 KPX Tcaron uogonek -90 KPX Tcaron uring -90 KPX Tcaron w -90 KPX Tcaron y -90 KPX Tcaron yacute -90 KPX Tcaron ydieresis -90 KPX Tcommaaccent A -74 KPX Tcommaaccent Aacute -74 KPX Tcommaaccent Abreve -74 KPX Tcommaaccent Acircumflex -74 KPX Tcommaaccent Adieresis -74 KPX Tcommaaccent Agrave -74 KPX Tcommaaccent Amacron -74 KPX Tcommaaccent Aogonek -74 KPX Tcommaaccent Aring -74 KPX Tcommaaccent Atilde -74 KPX Tcommaaccent O -18 KPX Tcommaaccent Oacute -18 KPX Tcommaaccent Ocircumflex -18 KPX Tcommaaccent Odieresis -18 KPX Tcommaaccent Ograve -18 KPX Tcommaaccent Ohungarumlaut -18 KPX Tcommaaccent Omacron -18 KPX Tcommaaccent Oslash -18 KPX Tcommaaccent Otilde -18 KPX Tcommaaccent a -92 KPX Tcommaaccent aacute -92 KPX Tcommaaccent abreve -92 KPX Tcommaaccent acircumflex -92 KPX Tcommaaccent adieresis -52 KPX Tcommaaccent agrave -52 KPX Tcommaaccent amacron -52 KPX Tcommaaccent aogonek -92 KPX Tcommaaccent aring -92 KPX Tcommaaccent atilde -52 KPX Tcommaaccent c -111 KPX Tcommaaccent cacute -111 KPX Tcommaaccent ccaron -71 KPX Tcommaaccent ccedilla -111 KPX Tcommaaccent colon -55 KPX Tcommaaccent comma -74 KPX Tcommaaccent e -92 KPX Tcommaaccent eacute -92 KPX Tcommaaccent ecaron -92 KPX Tcommaaccent ecircumflex -92 KPX Tcommaaccent edieresis -52 KPX Tcommaaccent edotaccent -92 KPX Tcommaaccent egrave -92 KPX Tcommaaccent emacron -92 KPX Tcommaaccent eogonek -92 KPX Tcommaaccent hyphen -55 KPX Tcommaaccent i -55 KPX Tcommaaccent iacute -55 KPX Tcommaaccent iogonek -55 KPX Tcommaaccent o -92 KPX Tcommaaccent oacute -92 KPX Tcommaaccent ocircumflex -92 KPX Tcommaaccent odieresis -92 KPX Tcommaaccent ograve -92 KPX Tcommaaccent ohungarumlaut -92 KPX Tcommaaccent omacron -92 KPX Tcommaaccent oslash -92 KPX Tcommaaccent otilde -92 KPX Tcommaaccent period -74 KPX Tcommaaccent r -90 KPX Tcommaaccent racute -90 KPX Tcommaaccent rcaron -50 KPX Tcommaaccent rcommaaccent -90 KPX Tcommaaccent s -90 KPX Tcommaaccent sacute -90 KPX Tcommaaccent scaron -50 KPX Tcommaaccent scedilla -90 KPX Tcommaaccent scommaaccent -90 KPX Tcommaaccent semicolon -55 KPX Tcommaaccent u -90 KPX Tcommaaccent uacute -90 KPX Tcommaaccent ucircumflex -90 KPX Tcommaaccent udieresis -90 KPX Tcommaaccent ugrave -90 KPX Tcommaaccent uhungarumlaut -90 KPX Tcommaaccent umacron -90 KPX Tcommaaccent uogonek -90 KPX Tcommaaccent uring -90 KPX Tcommaaccent w -90 KPX Tcommaaccent y -90 KPX Tcommaaccent yacute -90 KPX Tcommaaccent ydieresis -90 KPX V A -111 KPX V Aacute -111 KPX V Abreve -111 KPX V Acircumflex -111 KPX V Adieresis -111 KPX V Agrave -111 KPX V Amacron -111 KPX V Aogonek -111 KPX V Aring -111 KPX V Atilde -111 KPX V a -92 KPX V aacute -92 KPX V abreve -92 KPX V acircumflex -92 KPX V adieresis -92 KPX V agrave -92 KPX V amacron -92 KPX V aogonek -92 KPX V aring -92 KPX V atilde -92 KPX V colon -55 KPX V comma -129 KPX V e -111 KPX V eacute -111 KPX V ecaron -111 KPX V ecircumflex -111 KPX V edieresis -71 KPX V edotaccent -111 KPX V egrave -71 KPX V emacron -111 KPX V eogonek -111 KPX V hyphen -74 KPX V i -55 KPX V iacute -55 KPX V iogonek -55 KPX V o -111 KPX V oacute -111 KPX V ocircumflex -111 KPX V odieresis -111 KPX V ograve -71 KPX V ohungarumlaut -111 KPX V omacron -111 KPX V oslash -111 KPX V otilde -111 KPX V period -129 KPX V r -92 KPX V racute -92 KPX V rcaron -92 KPX V rcommaaccent -92 KPX V semicolon -55 KPX V u -92 KPX V uacute -92 KPX V ucircumflex -92 KPX V udieresis -92 KPX V ugrave -92 KPX V uhungarumlaut -92 KPX V umacron -92 KPX V uogonek -92 KPX V uring -92 KPX V y -92 KPX V yacute -92 KPX V ydieresis -92 KPX W A -92 KPX W Aacute -92 KPX W Abreve -92 KPX W Acircumflex -92 KPX W Adieresis -92 KPX W Agrave -92 KPX W Amacron -92 KPX W Aogonek -92 KPX W Aring -92 KPX W Atilde -92 KPX W a -92 KPX W aacute -92 KPX W abreve -92 KPX W acircumflex -92 KPX W adieresis -92 KPX W agrave -92 KPX W amacron -92 KPX W aogonek -92 KPX W aring -92 KPX W atilde -92 KPX W colon -18 KPX W comma -92 KPX W e -92 KPX W eacute -92 KPX W ecaron -92 KPX W ecircumflex -92 KPX W edieresis -92 KPX W edotaccent -92 KPX W egrave -92 KPX W emacron -92 KPX W eogonek -92 KPX W hyphen -55 KPX W i -55 KPX W iacute -55 KPX W icircumflex -55 KPX W idieresis -55 KPX W igrave -55 KPX W imacron -55 KPX W iogonek -55 KPX W o -92 KPX W oacute -92 KPX W ocircumflex -92 KPX W odieresis -92 KPX W ograve -92 KPX W ohungarumlaut -92 KPX W omacron -92 KPX W oslash -92 KPX W otilde -92 KPX W period -92 KPX W r -74 KPX W racute -74 KPX W rcaron -74 KPX W rcommaaccent -74 KPX W semicolon -18 KPX W u -50 KPX W uacute -50 KPX W ucircumflex -50 KPX W udieresis -50 KPX W ugrave -50 KPX W uhungarumlaut -50 KPX W umacron -50 KPX W uogonek -50 KPX W uring -50 KPX W y -50 KPX W yacute -50 KPX W ydieresis -50 KPX Y A -92 KPX Y Aacute -92 KPX Y Abreve -92 KPX Y Acircumflex -92 KPX Y Adieresis -92 KPX Y Agrave -92 KPX Y Amacron -92 KPX Y Aogonek -92 KPX Y Aring -92 KPX Y Atilde -92 KPX Y a -92 KPX Y aacute -92 KPX Y abreve -92 KPX Y acircumflex -92 KPX Y adieresis -92 KPX Y agrave -92 KPX Y amacron -92 KPX Y aogonek -92 KPX Y aring -92 KPX Y atilde -92 KPX Y colon -74 KPX Y comma -111 KPX Y e -92 KPX Y eacute -92 KPX Y ecaron -92 KPX Y ecircumflex -92 KPX Y edieresis -92 KPX Y edotaccent -92 KPX Y egrave -92 KPX Y emacron -92 KPX Y eogonek -92 KPX Y hyphen -92 KPX Y i -55 KPX Y iacute -55 KPX Y imacron -55 KPX Y iogonek -55 KPX Y o -92 KPX Y oacute -92 KPX Y ocircumflex -92 KPX Y odieresis -92 KPX Y ograve -92 KPX Y ohungarumlaut -92 KPX Y omacron -92 KPX Y oslash -92 KPX Y otilde -92 KPX Y p -111 KPX Y period -111 KPX Y q -90 KPX Y semicolon -74 KPX Y space -18 KPX Y u -90 KPX Y uacute -90 KPX Y ucircumflex -90 KPX Y udieresis -90 KPX Y ugrave -90 KPX Y uhungarumlaut -90 KPX Y umacron -90 KPX Y uogonek -90 KPX Y uring -90 KPX Y v -90 KPX Yacute A -92 KPX Yacute Aacute -92 KPX Yacute Abreve -92 KPX Yacute Acircumflex -92 KPX Yacute Adieresis -92 KPX Yacute Agrave -92 KPX Yacute Amacron -92 KPX Yacute Aogonek -92 KPX Yacute Aring -92 KPX Yacute Atilde -92 KPX Yacute a -92 KPX Yacute aacute -92 KPX Yacute abreve -92 KPX Yacute acircumflex -92 KPX Yacute adieresis -92 KPX Yacute agrave -92 KPX Yacute amacron -92 KPX Yacute aogonek -92 KPX Yacute aring -92 KPX Yacute atilde -92 KPX Yacute colon -74 KPX Yacute comma -111 KPX Yacute e -92 KPX Yacute eacute -92 KPX Yacute ecaron -92 KPX Yacute ecircumflex -92 KPX Yacute edieresis -92 KPX Yacute edotaccent -92 KPX Yacute egrave -92 KPX Yacute emacron -92 KPX Yacute eogonek -92 KPX Yacute hyphen -92 KPX Yacute i -55 KPX Yacute iacute -55 KPX Yacute imacron -55 KPX Yacute iogonek -55 KPX Yacute o -92 KPX Yacute oacute -92 KPX Yacute ocircumflex -92 KPX Yacute odieresis -92 KPX Yacute ograve -92 KPX Yacute ohungarumlaut -92 KPX Yacute omacron -92 KPX Yacute oslash -92 KPX Yacute otilde -92 KPX Yacute p -111 KPX Yacute period -111 KPX Yacute q -90 KPX Yacute semicolon -74 KPX Yacute space -18 KPX Yacute u -90 KPX Yacute uacute -90 KPX Yacute ucircumflex -90 KPX Yacute udieresis -90 KPX Yacute ugrave -90 KPX Yacute uhungarumlaut -90 KPX Yacute umacron -90 KPX Yacute uogonek -90 KPX Yacute uring -90 KPX Yacute v -90 KPX Ydieresis A -92 KPX Ydieresis Aacute -92 KPX Ydieresis Abreve -92 KPX Ydieresis Acircumflex -92 KPX Ydieresis Adieresis -92 KPX Ydieresis Agrave -92 KPX Ydieresis Amacron -92 KPX Ydieresis Aogonek -92 KPX Ydieresis Aring -92 KPX Ydieresis Atilde -92 KPX Ydieresis a -92 KPX Ydieresis aacute -92 KPX Ydieresis abreve -92 KPX Ydieresis acircumflex -92 KPX Ydieresis adieresis -92 KPX Ydieresis agrave -92 KPX Ydieresis amacron -92 KPX Ydieresis aogonek -92 KPX Ydieresis aring -92 KPX Ydieresis atilde -92 KPX Ydieresis colon -74 KPX Ydieresis comma -111 KPX Ydieresis e -92 KPX Ydieresis eacute -92 KPX Ydieresis ecaron -92 KPX Ydieresis ecircumflex -92 KPX Ydieresis edieresis -92 KPX Ydieresis edotaccent -92 KPX Ydieresis egrave -92 KPX Ydieresis emacron -92 KPX Ydieresis eogonek -92 KPX Ydieresis hyphen -92 KPX Ydieresis i -55 KPX Ydieresis iacute -55 KPX Ydieresis imacron -55 KPX Ydieresis iogonek -55 KPX Ydieresis o -92 KPX Ydieresis oacute -92 KPX Ydieresis ocircumflex -92 KPX Ydieresis odieresis -92 KPX Ydieresis ograve -92 KPX Ydieresis ohungarumlaut -92 KPX Ydieresis omacron -92 KPX Ydieresis oslash -92 KPX Ydieresis otilde -92 KPX Ydieresis p -111 KPX Ydieresis period -111 KPX Ydieresis q -90 KPX Ydieresis semicolon -74 KPX Ydieresis space -18 KPX Ydieresis u -90 KPX Ydieresis uacute -90 KPX Ydieresis ucircumflex -90 KPX Ydieresis udieresis -90 KPX Ydieresis ugrave -90 KPX Ydieresis uhungarumlaut -90 KPX Ydieresis umacron -90 KPX Ydieresis uogonek -90 KPX Ydieresis uring -90 KPX Ydieresis v -90 KPX f f -18 KPX f quoteright 55 KPX one one -55 KPX quoteleft quoteleft -37 KPX quoteright quoteright -37 KPX r c -18 KPX r cacute -18 KPX r ccaron -18 KPX r ccedilla -18 KPX r comma -74 KPX r d -18 KPX r dcroat -18 KPX r e -18 KPX r eacute -18 KPX r ecaron -18 KPX r ecircumflex -18 KPX r edieresis -18 KPX r edotaccent -18 KPX r egrave -18 KPX r emacron -18 KPX r eogonek -18 KPX r g -18 KPX r gbreve -18 KPX r gcommaaccent -18 KPX r h -18 KPX r hyphen -18 KPX r o -18 KPX r oacute -18 KPX r ocircumflex -18 KPX r odieresis -18 KPX r ograve -18 KPX r ohungarumlaut -18 KPX r omacron -18 KPX r oslash -18 KPX r otilde -18 KPX r period -74 KPX r q -18 KPX r quoteright 74 KPX r u -8 KPX r uacute -8 KPX r ucircumflex -8 KPX r udieresis -8 KPX r ugrave -8 KPX r uhungarumlaut -8 KPX r umacron -8 KPX r uogonek -8 KPX r uring -8 KPX racute c -18 KPX racute cacute -18 KPX racute ccaron -18 KPX racute ccedilla -18 KPX racute comma -74 KPX racute d -18 KPX racute dcroat -18 KPX racute e -18 KPX racute eacute -18 KPX racute ecaron -18 KPX racute ecircumflex -18 KPX racute edieresis -18 KPX racute edotaccent -18 KPX racute egrave -18 KPX racute emacron -18 KPX racute eogonek -18 KPX racute g -18 KPX racute gbreve -18 KPX racute gcommaaccent -18 KPX racute h -18 KPX racute hyphen -18 KPX racute o -18 KPX racute oacute -18 KPX racute ocircumflex -18 KPX racute odieresis -18 KPX racute ograve -18 KPX racute ohungarumlaut -18 KPX racute omacron -18 KPX racute oslash -18 KPX racute otilde -18 KPX racute period -74 KPX racute q -18 KPX racute quoteright 74 KPX racute u -8 KPX racute uacute -8 KPX racute ucircumflex -8 KPX racute udieresis -8 KPX racute ugrave -8 KPX racute uhungarumlaut -8 KPX racute umacron -8 KPX racute uogonek -8 KPX racute uring -8 KPX rcaron c -18 KPX rcaron cacute -18 KPX rcaron ccaron -18 KPX rcaron ccedilla -18 KPX rcaron comma -74 KPX rcaron d -18 KPX rcaron dcroat -18 KPX rcaron e -18 KPX rcaron eacute -18 KPX rcaron ecaron -18 KPX rcaron ecircumflex -18 KPX rcaron edieresis -18 KPX rcaron edotaccent -18 KPX rcaron egrave -18 KPX rcaron emacron -18 KPX rcaron eogonek -18 KPX rcaron g -18 KPX rcaron gbreve -18 KPX rcaron gcommaaccent -18 KPX rcaron h -18 KPX rcaron hyphen -18 KPX rcaron o -18 KPX rcaron oacute -18 KPX rcaron ocircumflex -18 KPX rcaron odieresis -18 KPX rcaron ograve -18 KPX rcaron ohungarumlaut -18 KPX rcaron omacron -18 KPX rcaron oslash -18 KPX rcaron otilde -18 KPX rcaron period -74 KPX rcaron q -18 KPX rcaron quoteright 74 KPX rcaron u -8 KPX rcaron uacute -8 KPX rcaron ucircumflex -8 KPX rcaron udieresis -8 KPX rcaron ugrave -8 KPX rcaron uhungarumlaut -8 KPX rcaron umacron -8 KPX rcaron uogonek -8 KPX rcaron uring -8 KPX rcommaaccent c -18 KPX rcommaaccent cacute -18 KPX rcommaaccent ccaron -18 KPX rcommaaccent ccedilla -18 KPX rcommaaccent comma -74 KPX rcommaaccent d -18 KPX rcommaaccent dcroat -18 KPX rcommaaccent e -18 KPX rcommaaccent eacute -18 KPX rcommaaccent ecaron -18 KPX rcommaaccent ecircumflex -18 KPX rcommaaccent edieresis -18 KPX rcommaaccent edotaccent -18 KPX rcommaaccent egrave -18 KPX rcommaaccent emacron -18 KPX rcommaaccent eogonek -18 KPX rcommaaccent g -18 KPX rcommaaccent gbreve -18 KPX rcommaaccent gcommaaccent -18 KPX rcommaaccent h -18 KPX rcommaaccent hyphen -18 KPX rcommaaccent o -18 KPX rcommaaccent oacute -18 KPX rcommaaccent ocircumflex -18 KPX rcommaaccent odieresis -18 KPX rcommaaccent ograve -18 KPX rcommaaccent ohungarumlaut -18 KPX rcommaaccent omacron -18 KPX rcommaaccent oslash -18 KPX rcommaaccent otilde -18 KPX rcommaaccent period -74 KPX rcommaaccent q -18 KPX rcommaaccent quoteright 74 KPX rcommaaccent u -8 KPX rcommaaccent uacute -8 KPX rcommaaccent ucircumflex -8 KPX rcommaaccent udieresis -8 KPX rcommaaccent ugrave -8 KPX rcommaaccent uhungarumlaut -8 KPX rcommaaccent umacron -8 KPX rcommaaccent uogonek -8 KPX rcommaaccent uring -8 KPX space A -37 KPX space Aacute -37 KPX space Abreve -37 KPX space Acircumflex -37 KPX space Adieresis -37 KPX space Agrave -37 KPX space Amacron -37 KPX space Aogonek -37 KPX space Aring -37 KPX space Atilde -37 KPX space Y -18 KPX space Yacute -18 KPX space Ydieresis -18 KPX v comma -111 KPX v period -111 KPX w comma -92 KPX w period -92 KPX y comma -111 KPX y period -111 KPX yacute comma -111 KPX yacute period -111 KPX ydieresis comma -111 KPX ydieresis period -111 EndKernPairs EndKernData EndFontMetrics gle-graphics-4.2.4c/src/fonts/Adobe-Core35_AFMs-314/Courier-Bold.afm0000664000000000000000000003564511405446017023066 0ustar rootrootStartFontMetrics 4.1 Comment Copyright (c) 1989, 1990, 1991, 1993, 1997 Adobe Systems Incorporated. All Rights Reserved. Comment Creation Date: Mon Jun 23 16:28:00 1997 Comment UniqueID 43048 Comment VMusage 41139 52164 FontName Courier-Bold FullName Courier Bold FamilyName Courier Weight Bold ItalicAngle 0 IsFixedPitch true FontBBox -113 -250 749 801 UnderlinePosition -100 UnderlineThickness 50 Version 003.000 Notice Copyright (c) 1989, 1990, 1991, 1993, 1997 Adobe Systems Incorporated. All Rights Reserved. EncodingScheme AdobeStandardEncoding CapHeight 562 XHeight 439 Ascender 629 Descender -157 StdHW 84 StdVW 106 StartCharMetrics 314 C 32 ; WX 600 ; N space ; B 0 0 0 0 ; C 33 ; WX 600 ; N exclam ; B 202 -15 398 572 ; C 34 ; WX 600 ; N quotedbl ; B 135 277 465 562 ; C 35 ; WX 600 ; N numbersign ; B 56 -45 544 651 ; C 36 ; WX 600 ; N dollar ; B 82 -126 519 666 ; C 37 ; WX 600 ; N percent ; B 5 -15 595 616 ; C 38 ; WX 600 ; N ampersand ; B 36 -15 546 543 ; C 39 ; WX 600 ; N quoteright ; B 171 277 423 562 ; C 40 ; WX 600 ; N parenleft ; B 219 -102 461 616 ; C 41 ; WX 600 ; N parenright ; B 139 -102 381 616 ; C 42 ; WX 600 ; N asterisk ; B 91 219 509 601 ; C 43 ; WX 600 ; N plus ; B 71 39 529 478 ; C 44 ; WX 600 ; N comma ; B 123 -111 393 174 ; C 45 ; WX 600 ; N hyphen ; B 100 203 500 313 ; C 46 ; WX 600 ; N period ; B 192 -15 408 171 ; C 47 ; WX 600 ; N slash ; B 98 -77 502 626 ; C 48 ; WX 600 ; N zero ; B 87 -15 513 616 ; C 49 ; WX 600 ; N one ; B 81 0 539 616 ; C 50 ; WX 600 ; N two ; B 61 0 499 616 ; C 51 ; WX 600 ; N three ; B 63 -15 501 616 ; C 52 ; WX 600 ; N four ; B 53 0 507 616 ; C 53 ; WX 600 ; N five ; B 70 -15 521 601 ; C 54 ; WX 600 ; N six ; B 90 -15 521 616 ; C 55 ; WX 600 ; N seven ; B 55 0 494 601 ; C 56 ; WX 600 ; N eight ; B 83 -15 517 616 ; C 57 ; WX 600 ; N nine ; B 79 -15 510 616 ; C 58 ; WX 600 ; N colon ; B 191 -15 407 425 ; C 59 ; WX 600 ; N semicolon ; B 123 -111 408 425 ; C 60 ; WX 600 ; N less ; B 66 15 523 501 ; C 61 ; WX 600 ; N equal ; B 71 118 529 398 ; C 62 ; WX 600 ; N greater ; B 77 15 534 501 ; C 63 ; WX 600 ; N question ; B 98 -14 501 580 ; C 64 ; WX 600 ; N at ; B 16 -15 584 616 ; C 65 ; WX 600 ; N A ; B -9 0 609 562 ; C 66 ; WX 600 ; N B ; B 30 0 573 562 ; C 67 ; WX 600 ; N C ; B 22 -18 560 580 ; C 68 ; WX 600 ; N D ; B 30 0 594 562 ; C 69 ; WX 600 ; N E ; B 25 0 560 562 ; C 70 ; WX 600 ; N F ; B 39 0 570 562 ; C 71 ; WX 600 ; N G ; B 22 -18 594 580 ; C 72 ; WX 600 ; N H ; B 20 0 580 562 ; C 73 ; WX 600 ; N I ; B 77 0 523 562 ; C 74 ; WX 600 ; N J ; B 37 -18 601 562 ; C 75 ; WX 600 ; N K ; B 21 0 599 562 ; C 76 ; WX 600 ; N L ; B 39 0 578 562 ; C 77 ; WX 600 ; N M ; B -2 0 602 562 ; C 78 ; WX 600 ; N N ; B 8 -12 610 562 ; C 79 ; WX 600 ; N O ; B 22 -18 578 580 ; C 80 ; WX 600 ; N P ; B 48 0 559 562 ; C 81 ; WX 600 ; N Q ; B 32 -138 578 580 ; C 82 ; WX 600 ; N R ; B 24 0 599 562 ; C 83 ; WX 600 ; N S ; B 47 -22 553 582 ; C 84 ; WX 600 ; N T ; B 21 0 579 562 ; C 85 ; WX 600 ; N U ; B 4 -18 596 562 ; C 86 ; WX 600 ; N V ; B -13 0 613 562 ; C 87 ; WX 600 ; N W ; B -18 0 618 562 ; C 88 ; WX 600 ; N X ; B 12 0 588 562 ; C 89 ; WX 600 ; N Y ; B 12 0 589 562 ; C 90 ; WX 600 ; N Z ; B 62 0 539 562 ; C 91 ; WX 600 ; N bracketleft ; B 245 -102 475 616 ; C 92 ; WX 600 ; N backslash ; B 99 -77 503 626 ; C 93 ; WX 600 ; N bracketright ; B 125 -102 355 616 ; C 94 ; WX 600 ; N asciicircum ; B 108 250 492 616 ; C 95 ; WX 600 ; N underscore ; B 0 -125 600 -75 ; C 96 ; WX 600 ; N quoteleft ; B 178 277 428 562 ; C 97 ; WX 600 ; N a ; B 35 -15 570 454 ; C 98 ; WX 600 ; N b ; B 0 -15 584 626 ; C 99 ; WX 600 ; N c ; B 40 -15 545 459 ; C 100 ; WX 600 ; N d ; B 20 -15 591 626 ; C 101 ; WX 600 ; N e ; B 40 -15 563 454 ; C 102 ; WX 600 ; N f ; B 83 0 547 626 ; L i fi ; L l fl ; C 103 ; WX 600 ; N g ; B 30 -146 580 454 ; C 104 ; WX 600 ; N h ; B 5 0 592 626 ; C 105 ; WX 600 ; N i ; B 77 0 523 658 ; C 106 ; WX 600 ; N j ; B 63 -146 440 658 ; C 107 ; WX 600 ; N k ; B 20 0 585 626 ; C 108 ; WX 600 ; N l ; B 77 0 523 626 ; C 109 ; WX 600 ; N m ; B -22 0 626 454 ; C 110 ; WX 600 ; N n ; B 18 0 592 454 ; C 111 ; WX 600 ; N o ; B 30 -15 570 454 ; C 112 ; WX 600 ; N p ; B -1 -142 570 454 ; C 113 ; WX 600 ; N q ; B 20 -142 591 454 ; C 114 ; WX 600 ; N r ; B 47 0 580 454 ; C 115 ; WX 600 ; N s ; B 68 -17 535 459 ; C 116 ; WX 600 ; N t ; B 47 -15 532 562 ; C 117 ; WX 600 ; N u ; B -1 -15 569 439 ; C 118 ; WX 600 ; N v ; B -1 0 601 439 ; C 119 ; WX 600 ; N w ; B -18 0 618 439 ; C 120 ; WX 600 ; N x ; B 6 0 594 439 ; C 121 ; WX 600 ; N y ; B -4 -142 601 439 ; C 122 ; WX 600 ; N z ; B 81 0 520 439 ; C 123 ; WX 600 ; N braceleft ; B 160 -102 464 616 ; C 124 ; WX 600 ; N bar ; B 255 -250 345 750 ; C 125 ; WX 600 ; N braceright ; B 136 -102 440 616 ; C 126 ; WX 600 ; N asciitilde ; B 71 153 530 356 ; C 161 ; WX 600 ; N exclamdown ; B 202 -146 398 449 ; C 162 ; WX 600 ; N cent ; B 66 -49 518 614 ; C 163 ; WX 600 ; N sterling ; B 72 -28 558 611 ; C 164 ; WX 600 ; N fraction ; B 25 -60 576 661 ; C 165 ; WX 600 ; N yen ; B 10 0 590 562 ; C 166 ; WX 600 ; N florin ; B -30 -131 572 616 ; C 167 ; WX 600 ; N section ; B 83 -70 517 580 ; C 168 ; WX 600 ; N currency ; B 54 49 546 517 ; C 169 ; WX 600 ; N quotesingle ; B 227 277 373 562 ; C 170 ; WX 600 ; N quotedblleft ; B 71 277 535 562 ; C 171 ; WX 600 ; N guillemotleft ; B 8 70 553 446 ; C 172 ; WX 600 ; N guilsinglleft ; B 141 70 459 446 ; C 173 ; WX 600 ; N guilsinglright ; B 141 70 459 446 ; C 174 ; WX 600 ; N fi ; B 12 0 593 626 ; C 175 ; WX 600 ; N fl ; B 12 0 593 626 ; C 177 ; WX 600 ; N endash ; B 65 203 535 313 ; C 178 ; WX 600 ; N dagger ; B 106 -70 494 580 ; C 179 ; WX 600 ; N daggerdbl ; B 106 -70 494 580 ; C 180 ; WX 600 ; N periodcentered ; B 196 165 404 351 ; C 182 ; WX 600 ; N paragraph ; B 6 -70 576 580 ; C 183 ; WX 600 ; N bullet ; B 140 132 460 430 ; C 184 ; WX 600 ; N quotesinglbase ; B 175 -142 427 143 ; C 185 ; WX 600 ; N quotedblbase ; B 65 -142 529 143 ; C 186 ; WX 600 ; N quotedblright ; B 61 277 525 562 ; C 187 ; WX 600 ; N guillemotright ; B 47 70 592 446 ; C 188 ; WX 600 ; N ellipsis ; B 26 -15 574 116 ; C 189 ; WX 600 ; N perthousand ; B -113 -15 713 616 ; C 191 ; WX 600 ; N questiondown ; B 99 -146 502 449 ; C 193 ; WX 600 ; N grave ; B 132 508 395 661 ; C 194 ; WX 600 ; N acute ; B 205 508 468 661 ; C 195 ; WX 600 ; N circumflex ; B 103 483 497 657 ; C 196 ; WX 600 ; N tilde ; B 89 493 512 636 ; C 197 ; WX 600 ; N macron ; B 88 505 512 585 ; C 198 ; WX 600 ; N breve ; B 83 468 517 631 ; C 199 ; WX 600 ; N dotaccent ; B 230 498 370 638 ; C 200 ; WX 600 ; N dieresis ; B 128 498 472 638 ; C 202 ; WX 600 ; N ring ; B 198 481 402 678 ; C 203 ; WX 600 ; N cedilla ; B 205 -206 387 0 ; C 205 ; WX 600 ; N hungarumlaut ; B 68 488 588 661 ; C 206 ; WX 600 ; N ogonek ; B 169 -199 400 0 ; C 207 ; WX 600 ; N caron ; B 103 493 497 667 ; C 208 ; WX 600 ; N emdash ; B -10 203 610 313 ; C 225 ; WX 600 ; N AE ; B -29 0 602 562 ; C 227 ; WX 600 ; N ordfeminine ; B 147 196 453 580 ; C 232 ; WX 600 ; N Lslash ; B 39 0 578 562 ; C 233 ; WX 600 ; N Oslash ; B 22 -22 578 584 ; C 234 ; WX 600 ; N OE ; B -25 0 595 562 ; C 235 ; WX 600 ; N ordmasculine ; B 147 196 453 580 ; C 241 ; WX 600 ; N ae ; B -4 -15 601 454 ; C 245 ; WX 600 ; N dotlessi ; B 77 0 523 439 ; C 248 ; WX 600 ; N lslash ; B 77 0 523 626 ; C 249 ; WX 600 ; N oslash ; B 30 -24 570 463 ; C 250 ; WX 600 ; N oe ; B -18 -15 611 454 ; C 251 ; WX 600 ; N germandbls ; B 22 -15 596 626 ; C -1 ; WX 600 ; N Idieresis ; B 77 0 523 761 ; C -1 ; WX 600 ; N eacute ; B 40 -15 563 661 ; C -1 ; WX 600 ; N abreve ; B 35 -15 570 661 ; C -1 ; WX 600 ; N uhungarumlaut ; B -1 -15 628 661 ; C -1 ; WX 600 ; N ecaron ; B 40 -15 563 667 ; C -1 ; WX 600 ; N Ydieresis ; B 12 0 589 761 ; C -1 ; WX 600 ; N divide ; B 71 16 529 500 ; C -1 ; WX 600 ; N Yacute ; B 12 0 589 784 ; C -1 ; WX 600 ; N Acircumflex ; B -9 0 609 780 ; C -1 ; WX 600 ; N aacute ; B 35 -15 570 661 ; C -1 ; WX 600 ; N Ucircumflex ; B 4 -18 596 780 ; C -1 ; WX 600 ; N yacute ; B -4 -142 601 661 ; C -1 ; WX 600 ; N scommaaccent ; B 68 -250 535 459 ; C -1 ; WX 600 ; N ecircumflex ; B 40 -15 563 657 ; C -1 ; WX 600 ; N Uring ; B 4 -18 596 801 ; C -1 ; WX 600 ; N Udieresis ; B 4 -18 596 761 ; C -1 ; WX 600 ; N aogonek ; B 35 -199 586 454 ; C -1 ; WX 600 ; N Uacute ; B 4 -18 596 784 ; C -1 ; WX 600 ; N uogonek ; B -1 -199 585 439 ; C -1 ; WX 600 ; N Edieresis ; B 25 0 560 761 ; C -1 ; WX 600 ; N Dcroat ; B 30 0 594 562 ; C -1 ; WX 600 ; N commaaccent ; B 205 -250 397 -57 ; C -1 ; WX 600 ; N copyright ; B 0 -18 600 580 ; C -1 ; WX 600 ; N Emacron ; B 25 0 560 708 ; C -1 ; WX 600 ; N ccaron ; B 40 -15 545 667 ; C -1 ; WX 600 ; N aring ; B 35 -15 570 678 ; C -1 ; WX 600 ; N Ncommaaccent ; B 8 -250 610 562 ; C -1 ; WX 600 ; N lacute ; B 77 0 523 801 ; C -1 ; WX 600 ; N agrave ; B 35 -15 570 661 ; C -1 ; WX 600 ; N Tcommaaccent ; B 21 -250 579 562 ; C -1 ; WX 600 ; N Cacute ; B 22 -18 560 784 ; C -1 ; WX 600 ; N atilde ; B 35 -15 570 636 ; C -1 ; WX 600 ; N Edotaccent ; B 25 0 560 761 ; C -1 ; WX 600 ; N scaron ; B 68 -17 535 667 ; C -1 ; WX 600 ; N scedilla ; B 68 -206 535 459 ; C -1 ; WX 600 ; N iacute ; B 77 0 523 661 ; C -1 ; WX 600 ; N lozenge ; B 66 0 534 740 ; C -1 ; WX 600 ; N Rcaron ; B 24 0 599 790 ; C -1 ; WX 600 ; N Gcommaaccent ; B 22 -250 594 580 ; C -1 ; WX 600 ; N ucircumflex ; B -1 -15 569 657 ; C -1 ; WX 600 ; N acircumflex ; B 35 -15 570 657 ; C -1 ; WX 600 ; N Amacron ; B -9 0 609 708 ; C -1 ; WX 600 ; N rcaron ; B 47 0 580 667 ; C -1 ; WX 600 ; N ccedilla ; B 40 -206 545 459 ; C -1 ; WX 600 ; N Zdotaccent ; B 62 0 539 761 ; C -1 ; WX 600 ; N Thorn ; B 48 0 557 562 ; C -1 ; WX 600 ; N Omacron ; B 22 -18 578 708 ; C -1 ; WX 600 ; N Racute ; B 24 0 599 784 ; C -1 ; WX 600 ; N Sacute ; B 47 -22 553 784 ; C -1 ; WX 600 ; N dcaron ; B 20 -15 727 626 ; C -1 ; WX 600 ; N Umacron ; B 4 -18 596 708 ; C -1 ; WX 600 ; N uring ; B -1 -15 569 678 ; C -1 ; WX 600 ; N threesuperior ; B 138 222 433 616 ; C -1 ; WX 600 ; N Ograve ; B 22 -18 578 784 ; C -1 ; WX 600 ; N Agrave ; B -9 0 609 784 ; C -1 ; WX 600 ; N Abreve ; B -9 0 609 784 ; C -1 ; WX 600 ; N multiply ; B 81 39 520 478 ; C -1 ; WX 600 ; N uacute ; B -1 -15 569 661 ; C -1 ; WX 600 ; N Tcaron ; B 21 0 579 790 ; C -1 ; WX 600 ; N partialdiff ; B 63 -38 537 728 ; C -1 ; WX 600 ; N ydieresis ; B -4 -142 601 638 ; C -1 ; WX 600 ; N Nacute ; B 8 -12 610 784 ; C -1 ; WX 600 ; N icircumflex ; B 73 0 523 657 ; C -1 ; WX 600 ; N Ecircumflex ; B 25 0 560 780 ; C -1 ; WX 600 ; N adieresis ; B 35 -15 570 638 ; C -1 ; WX 600 ; N edieresis ; B 40 -15 563 638 ; C -1 ; WX 600 ; N cacute ; B 40 -15 545 661 ; C -1 ; WX 600 ; N nacute ; B 18 0 592 661 ; C -1 ; WX 600 ; N umacron ; B -1 -15 569 585 ; C -1 ; WX 600 ; N Ncaron ; B 8 -12 610 790 ; C -1 ; WX 600 ; N Iacute ; B 77 0 523 784 ; C -1 ; WX 600 ; N plusminus ; B 71 24 529 515 ; C -1 ; WX 600 ; N brokenbar ; B 255 -175 345 675 ; C -1 ; WX 600 ; N registered ; B 0 -18 600 580 ; C -1 ; WX 600 ; N Gbreve ; B 22 -18 594 784 ; C -1 ; WX 600 ; N Idotaccent ; B 77 0 523 761 ; C -1 ; WX 600 ; N summation ; B 15 -10 586 706 ; C -1 ; WX 600 ; N Egrave ; B 25 0 560 784 ; C -1 ; WX 600 ; N racute ; B 47 0 580 661 ; C -1 ; WX 600 ; N omacron ; B 30 -15 570 585 ; C -1 ; WX 600 ; N Zacute ; B 62 0 539 784 ; C -1 ; WX 600 ; N Zcaron ; B 62 0 539 790 ; C -1 ; WX 600 ; N greaterequal ; B 26 0 523 696 ; C -1 ; WX 600 ; N Eth ; B 30 0 594 562 ; C -1 ; WX 600 ; N Ccedilla ; B 22 -206 560 580 ; C -1 ; WX 600 ; N lcommaaccent ; B 77 -250 523 626 ; C -1 ; WX 600 ; N tcaron ; B 47 -15 532 703 ; C -1 ; WX 600 ; N eogonek ; B 40 -199 563 454 ; C -1 ; WX 600 ; N Uogonek ; B 4 -199 596 562 ; C -1 ; WX 600 ; N Aacute ; B -9 0 609 784 ; C -1 ; WX 600 ; N Adieresis ; B -9 0 609 761 ; C -1 ; WX 600 ; N egrave ; B 40 -15 563 661 ; C -1 ; WX 600 ; N zacute ; B 81 0 520 661 ; C -1 ; WX 600 ; N iogonek ; B 77 -199 523 658 ; C -1 ; WX 600 ; N Oacute ; B 22 -18 578 784 ; C -1 ; WX 600 ; N oacute ; B 30 -15 570 661 ; C -1 ; WX 600 ; N amacron ; B 35 -15 570 585 ; C -1 ; WX 600 ; N sacute ; B 68 -17 535 661 ; C -1 ; WX 600 ; N idieresis ; B 77 0 523 618 ; C -1 ; WX 600 ; N Ocircumflex ; B 22 -18 578 780 ; C -1 ; WX 600 ; N Ugrave ; B 4 -18 596 784 ; C -1 ; WX 600 ; N Delta ; B 6 0 594 688 ; C -1 ; WX 600 ; N thorn ; B -14 -142 570 626 ; C -1 ; WX 600 ; N twosuperior ; B 143 230 436 616 ; C -1 ; WX 600 ; N Odieresis ; B 22 -18 578 761 ; C -1 ; WX 600 ; N mu ; B -1 -142 569 439 ; C -1 ; WX 600 ; N igrave ; B 77 0 523 661 ; C -1 ; WX 600 ; N ohungarumlaut ; B 30 -15 668 661 ; C -1 ; WX 600 ; N Eogonek ; B 25 -199 576 562 ; C -1 ; WX 600 ; N dcroat ; B 20 -15 591 626 ; C -1 ; WX 600 ; N threequarters ; B -47 -60 648 661 ; C -1 ; WX 600 ; N Scedilla ; B 47 -206 553 582 ; C -1 ; WX 600 ; N lcaron ; B 77 0 597 626 ; C -1 ; WX 600 ; N Kcommaaccent ; B 21 -250 599 562 ; C -1 ; WX 600 ; N Lacute ; B 39 0 578 784 ; C -1 ; WX 600 ; N trademark ; B -9 230 749 562 ; C -1 ; WX 600 ; N edotaccent ; B 40 -15 563 638 ; C -1 ; WX 600 ; N Igrave ; B 77 0 523 784 ; C -1 ; WX 600 ; N Imacron ; B 77 0 523 708 ; C -1 ; WX 600 ; N Lcaron ; B 39 0 637 562 ; C -1 ; WX 600 ; N onehalf ; B -47 -60 648 661 ; C -1 ; WX 600 ; N lessequal ; B 26 0 523 696 ; C -1 ; WX 600 ; N ocircumflex ; B 30 -15 570 657 ; C -1 ; WX 600 ; N ntilde ; B 18 0 592 636 ; C -1 ; WX 600 ; N Uhungarumlaut ; B 4 -18 638 784 ; C -1 ; WX 600 ; N Eacute ; B 25 0 560 784 ; C -1 ; WX 600 ; N emacron ; B 40 -15 563 585 ; C -1 ; WX 600 ; N gbreve ; B 30 -146 580 661 ; C -1 ; WX 600 ; N onequarter ; B -56 -60 656 661 ; C -1 ; WX 600 ; N Scaron ; B 47 -22 553 790 ; C -1 ; WX 600 ; N Scommaaccent ; B 47 -250 553 582 ; C -1 ; WX 600 ; N Ohungarumlaut ; B 22 -18 628 784 ; C -1 ; WX 600 ; N degree ; B 86 243 474 616 ; C -1 ; WX 600 ; N ograve ; B 30 -15 570 661 ; C -1 ; WX 600 ; N Ccaron ; B 22 -18 560 790 ; C -1 ; WX 600 ; N ugrave ; B -1 -15 569 661 ; C -1 ; WX 600 ; N radical ; B -19 -104 473 778 ; C -1 ; WX 600 ; N Dcaron ; B 30 0 594 790 ; C -1 ; WX 600 ; N rcommaaccent ; B 47 -250 580 454 ; C -1 ; WX 600 ; N Ntilde ; B 8 -12 610 759 ; C -1 ; WX 600 ; N otilde ; B 30 -15 570 636 ; C -1 ; WX 600 ; N Rcommaaccent ; B 24 -250 599 562 ; C -1 ; WX 600 ; N Lcommaaccent ; B 39 -250 578 562 ; C -1 ; WX 600 ; N Atilde ; B -9 0 609 759 ; C -1 ; WX 600 ; N Aogonek ; B -9 -199 625 562 ; C -1 ; WX 600 ; N Aring ; B -9 0 609 801 ; C -1 ; WX 600 ; N Otilde ; B 22 -18 578 759 ; C -1 ; WX 600 ; N zdotaccent ; B 81 0 520 638 ; C -1 ; WX 600 ; N Ecaron ; B 25 0 560 790 ; C -1 ; WX 600 ; N Iogonek ; B 77 -199 523 562 ; C -1 ; WX 600 ; N kcommaaccent ; B 20 -250 585 626 ; C -1 ; WX 600 ; N minus ; B 71 203 529 313 ; C -1 ; WX 600 ; N Icircumflex ; B 77 0 523 780 ; C -1 ; WX 600 ; N ncaron ; B 18 0 592 667 ; C -1 ; WX 600 ; N tcommaaccent ; B 47 -250 532 562 ; C -1 ; WX 600 ; N logicalnot ; B 71 103 529 413 ; C -1 ; WX 600 ; N odieresis ; B 30 -15 570 638 ; C -1 ; WX 600 ; N udieresis ; B -1 -15 569 638 ; C -1 ; WX 600 ; N notequal ; B 12 -47 537 563 ; C -1 ; WX 600 ; N gcommaaccent ; B 30 -146 580 714 ; C -1 ; WX 600 ; N eth ; B 58 -27 543 626 ; C -1 ; WX 600 ; N zcaron ; B 81 0 520 667 ; C -1 ; WX 600 ; N ncommaaccent ; B 18 -250 592 454 ; C -1 ; WX 600 ; N onesuperior ; B 153 230 447 616 ; C -1 ; WX 600 ; N imacron ; B 77 0 523 585 ; EndCharMetrics EndFontMetrics gle-graphics-4.2.4c/src/fonts/Adobe-Core35_AFMs-314/Helvetica.afm0000664000000000000000000022076411405446017022502 0ustar rootrootStartFontMetrics 4.1 Comment Copyright (c) 1985, 1987, 1989, 1990, 1997 Adobe Systems Incorporated. All Rights Reserved. Comment Creation Date: Thu May 1 12:38:23 1997 Comment UniqueID 43054 Comment VMusage 37069 48094 FontName Helvetica FullName Helvetica FamilyName Helvetica Weight Medium ItalicAngle 0 IsFixedPitch false FontBBox -166 -225 1000 931 UnderlinePosition -100 UnderlineThickness 50 Version 002.000 Notice Copyright (c) 1985, 1987, 1989, 1990, 1997 Adobe Systems Incorporated. All Rights Reserved.Helvetica is a trademark of Linotype-Hell AG and/or its subsidiaries. EncodingScheme AdobeStandardEncoding CapHeight 718 XHeight 523 Ascender 718 Descender -207 StdHW 76 StdVW 88 StartCharMetrics 314 C 32 ; WX 278 ; N space ; B 0 0 0 0 ; C 33 ; WX 278 ; N exclam ; B 90 0 187 718 ; C 34 ; WX 355 ; N quotedbl ; B 70 463 285 718 ; C 35 ; WX 556 ; N numbersign ; B 28 0 529 688 ; C 36 ; WX 556 ; N dollar ; B 32 -115 520 775 ; C 37 ; WX 889 ; N percent ; B 39 -19 850 703 ; C 38 ; WX 667 ; N ampersand ; B 44 -15 645 718 ; C 39 ; WX 222 ; N quoteright ; B 53 463 157 718 ; C 40 ; WX 333 ; N parenleft ; B 68 -207 299 733 ; C 41 ; WX 333 ; N parenright ; B 34 -207 265 733 ; C 42 ; WX 389 ; N asterisk ; B 39 431 349 718 ; C 43 ; WX 584 ; N plus ; B 39 0 545 505 ; C 44 ; WX 278 ; N comma ; B 87 -147 191 106 ; C 45 ; WX 333 ; N hyphen ; B 44 232 289 322 ; C 46 ; WX 278 ; N period ; B 87 0 191 106 ; C 47 ; WX 278 ; N slash ; B -17 -19 295 737 ; C 48 ; WX 556 ; N zero ; B 37 -19 519 703 ; C 49 ; WX 556 ; N one ; B 101 0 359 703 ; C 50 ; WX 556 ; N two ; B 26 0 507 703 ; C 51 ; WX 556 ; N three ; B 34 -19 522 703 ; C 52 ; WX 556 ; N four ; B 25 0 523 703 ; C 53 ; WX 556 ; N five ; B 32 -19 514 688 ; C 54 ; WX 556 ; N six ; B 38 -19 518 703 ; C 55 ; WX 556 ; N seven ; B 37 0 523 688 ; C 56 ; WX 556 ; N eight ; B 38 -19 517 703 ; C 57 ; WX 556 ; N nine ; B 42 -19 514 703 ; C 58 ; WX 278 ; N colon ; B 87 0 191 516 ; C 59 ; WX 278 ; N semicolon ; B 87 -147 191 516 ; C 60 ; WX 584 ; N less ; B 48 11 536 495 ; C 61 ; WX 584 ; N equal ; B 39 115 545 390 ; C 62 ; WX 584 ; N greater ; B 48 11 536 495 ; C 63 ; WX 556 ; N question ; B 56 0 492 727 ; C 64 ; WX 1015 ; N at ; B 147 -19 868 737 ; C 65 ; WX 667 ; N A ; B 14 0 654 718 ; C 66 ; WX 667 ; N B ; B 74 0 627 718 ; C 67 ; WX 722 ; N C ; B 44 -19 681 737 ; C 68 ; WX 722 ; N D ; B 81 0 674 718 ; C 69 ; WX 667 ; N E ; B 86 0 616 718 ; C 70 ; WX 611 ; N F ; B 86 0 583 718 ; C 71 ; WX 778 ; N G ; B 48 -19 704 737 ; C 72 ; WX 722 ; N H ; B 77 0 646 718 ; C 73 ; WX 278 ; N I ; B 91 0 188 718 ; C 74 ; WX 500 ; N J ; B 17 -19 428 718 ; C 75 ; WX 667 ; N K ; B 76 0 663 718 ; C 76 ; WX 556 ; N L ; B 76 0 537 718 ; C 77 ; WX 833 ; N M ; B 73 0 761 718 ; C 78 ; WX 722 ; N N ; B 76 0 646 718 ; C 79 ; WX 778 ; N O ; B 39 -19 739 737 ; C 80 ; WX 667 ; N P ; B 86 0 622 718 ; C 81 ; WX 778 ; N Q ; B 39 -56 739 737 ; C 82 ; WX 722 ; N R ; B 88 0 684 718 ; C 83 ; WX 667 ; N S ; B 49 -19 620 737 ; C 84 ; WX 611 ; N T ; B 14 0 597 718 ; C 85 ; WX 722 ; N U ; B 79 -19 644 718 ; C 86 ; WX 667 ; N V ; B 20 0 647 718 ; C 87 ; WX 944 ; N W ; B 16 0 928 718 ; C 88 ; WX 667 ; N X ; B 19 0 648 718 ; C 89 ; WX 667 ; N Y ; B 14 0 653 718 ; C 90 ; WX 611 ; N Z ; B 23 0 588 718 ; C 91 ; WX 278 ; N bracketleft ; B 63 -196 250 722 ; C 92 ; WX 278 ; N backslash ; B -17 -19 295 737 ; C 93 ; WX 278 ; N bracketright ; B 28 -196 215 722 ; C 94 ; WX 469 ; N asciicircum ; B -14 264 483 688 ; C 95 ; WX 556 ; N underscore ; B 0 -125 556 -75 ; C 96 ; WX 222 ; N quoteleft ; B 65 470 169 725 ; C 97 ; WX 556 ; N a ; B 36 -15 530 538 ; C 98 ; WX 556 ; N b ; B 58 -15 517 718 ; C 99 ; WX 500 ; N c ; B 30 -15 477 538 ; C 100 ; WX 556 ; N d ; B 35 -15 499 718 ; C 101 ; WX 556 ; N e ; B 40 -15 516 538 ; C 102 ; WX 278 ; N f ; B 14 0 262 728 ; L i fi ; L l fl ; C 103 ; WX 556 ; N g ; B 40 -220 499 538 ; C 104 ; WX 556 ; N h ; B 65 0 491 718 ; C 105 ; WX 222 ; N i ; B 67 0 155 718 ; C 106 ; WX 222 ; N j ; B -16 -210 155 718 ; C 107 ; WX 500 ; N k ; B 67 0 501 718 ; C 108 ; WX 222 ; N l ; B 67 0 155 718 ; C 109 ; WX 833 ; N m ; B 65 0 769 538 ; C 110 ; WX 556 ; N n ; B 65 0 491 538 ; C 111 ; WX 556 ; N o ; B 35 -14 521 538 ; C 112 ; WX 556 ; N p ; B 58 -207 517 538 ; C 113 ; WX 556 ; N q ; B 35 -207 494 538 ; C 114 ; WX 333 ; N r ; B 77 0 332 538 ; C 115 ; WX 500 ; N s ; B 32 -15 464 538 ; C 116 ; WX 278 ; N t ; B 14 -7 257 669 ; C 117 ; WX 556 ; N u ; B 68 -15 489 523 ; C 118 ; WX 500 ; N v ; B 8 0 492 523 ; C 119 ; WX 722 ; N w ; B 14 0 709 523 ; C 120 ; WX 500 ; N x ; B 11 0 490 523 ; C 121 ; WX 500 ; N y ; B 11 -214 489 523 ; C 122 ; WX 500 ; N z ; B 31 0 469 523 ; C 123 ; WX 334 ; N braceleft ; B 42 -196 292 722 ; C 124 ; WX 260 ; N bar ; B 94 -225 167 775 ; C 125 ; WX 334 ; N braceright ; B 42 -196 292 722 ; C 126 ; WX 584 ; N asciitilde ; B 61 180 523 326 ; C 161 ; WX 333 ; N exclamdown ; B 118 -195 215 523 ; C 162 ; WX 556 ; N cent ; B 51 -115 513 623 ; C 163 ; WX 556 ; N sterling ; B 33 -16 539 718 ; C 164 ; WX 167 ; N fraction ; B -166 -19 333 703 ; C 165 ; WX 556 ; N yen ; B 3 0 553 688 ; C 166 ; WX 556 ; N florin ; B -11 -207 501 737 ; C 167 ; WX 556 ; N section ; B 43 -191 512 737 ; C 168 ; WX 556 ; N currency ; B 28 99 528 603 ; C 169 ; WX 191 ; N quotesingle ; B 59 463 132 718 ; C 170 ; WX 333 ; N quotedblleft ; B 38 470 307 725 ; C 171 ; WX 556 ; N guillemotleft ; B 97 108 459 446 ; C 172 ; WX 333 ; N guilsinglleft ; B 88 108 245 446 ; C 173 ; WX 333 ; N guilsinglright ; B 88 108 245 446 ; C 174 ; WX 500 ; N fi ; B 14 0 434 728 ; C 175 ; WX 500 ; N fl ; B 14 0 432 728 ; C 177 ; WX 556 ; N endash ; B 0 240 556 313 ; C 178 ; WX 556 ; N dagger ; B 43 -159 514 718 ; C 179 ; WX 556 ; N daggerdbl ; B 43 -159 514 718 ; C 180 ; WX 278 ; N periodcentered ; B 77 190 202 315 ; C 182 ; WX 537 ; N paragraph ; B 18 -173 497 718 ; C 183 ; WX 350 ; N bullet ; B 18 202 333 517 ; C 184 ; WX 222 ; N quotesinglbase ; B 53 -149 157 106 ; C 185 ; WX 333 ; N quotedblbase ; B 26 -149 295 106 ; C 186 ; WX 333 ; N quotedblright ; B 26 463 295 718 ; C 187 ; WX 556 ; N guillemotright ; B 97 108 459 446 ; C 188 ; WX 1000 ; N ellipsis ; B 115 0 885 106 ; C 189 ; WX 1000 ; N perthousand ; B 7 -19 994 703 ; C 191 ; WX 611 ; N questiondown ; B 91 -201 527 525 ; C 193 ; WX 333 ; N grave ; B 14 593 211 734 ; C 194 ; WX 333 ; N acute ; B 122 593 319 734 ; C 195 ; WX 333 ; N circumflex ; B 21 593 312 734 ; C 196 ; WX 333 ; N tilde ; B -4 606 337 722 ; C 197 ; WX 333 ; N macron ; B 10 627 323 684 ; C 198 ; WX 333 ; N breve ; B 13 595 321 731 ; C 199 ; WX 333 ; N dotaccent ; B 121 604 212 706 ; C 200 ; WX 333 ; N dieresis ; B 40 604 293 706 ; C 202 ; WX 333 ; N ring ; B 75 572 259 756 ; C 203 ; WX 333 ; N cedilla ; B 45 -225 259 0 ; C 205 ; WX 333 ; N hungarumlaut ; B 31 593 409 734 ; C 206 ; WX 333 ; N ogonek ; B 73 -225 287 0 ; C 207 ; WX 333 ; N caron ; B 21 593 312 734 ; C 208 ; WX 1000 ; N emdash ; B 0 240 1000 313 ; C 225 ; WX 1000 ; N AE ; B 8 0 951 718 ; C 227 ; WX 370 ; N ordfeminine ; B 24 405 346 737 ; C 232 ; WX 556 ; N Lslash ; B -20 0 537 718 ; C 233 ; WX 778 ; N Oslash ; B 39 -19 740 737 ; C 234 ; WX 1000 ; N OE ; B 36 -19 965 737 ; C 235 ; WX 365 ; N ordmasculine ; B 25 405 341 737 ; C 241 ; WX 889 ; N ae ; B 36 -15 847 538 ; C 245 ; WX 278 ; N dotlessi ; B 95 0 183 523 ; C 248 ; WX 222 ; N lslash ; B -20 0 242 718 ; C 249 ; WX 611 ; N oslash ; B 28 -22 537 545 ; C 250 ; WX 944 ; N oe ; B 35 -15 902 538 ; C 251 ; WX 611 ; N germandbls ; B 67 -15 571 728 ; C -1 ; WX 278 ; N Idieresis ; B 13 0 266 901 ; C -1 ; WX 556 ; N eacute ; B 40 -15 516 734 ; C -1 ; WX 556 ; N abreve ; B 36 -15 530 731 ; C -1 ; WX 556 ; N uhungarumlaut ; B 68 -15 521 734 ; C -1 ; WX 556 ; N ecaron ; B 40 -15 516 734 ; C -1 ; WX 667 ; N Ydieresis ; B 14 0 653 901 ; C -1 ; WX 584 ; N divide ; B 39 -19 545 524 ; C -1 ; WX 667 ; N Yacute ; B 14 0 653 929 ; C -1 ; WX 667 ; N Acircumflex ; B 14 0 654 929 ; C -1 ; WX 556 ; N aacute ; B 36 -15 530 734 ; C -1 ; WX 722 ; N Ucircumflex ; B 79 -19 644 929 ; C -1 ; WX 500 ; N yacute ; B 11 -214 489 734 ; C -1 ; WX 500 ; N scommaaccent ; B 32 -225 464 538 ; C -1 ; WX 556 ; N ecircumflex ; B 40 -15 516 734 ; C -1 ; WX 722 ; N Uring ; B 79 -19 644 931 ; C -1 ; WX 722 ; N Udieresis ; B 79 -19 644 901 ; C -1 ; WX 556 ; N aogonek ; B 36 -220 547 538 ; C -1 ; WX 722 ; N Uacute ; B 79 -19 644 929 ; C -1 ; WX 556 ; N uogonek ; B 68 -225 519 523 ; C -1 ; WX 667 ; N Edieresis ; B 86 0 616 901 ; C -1 ; WX 722 ; N Dcroat ; B 0 0 674 718 ; C -1 ; WX 250 ; N commaaccent ; B 87 -225 181 -40 ; C -1 ; WX 737 ; N copyright ; B -14 -19 752 737 ; C -1 ; WX 667 ; N Emacron ; B 86 0 616 879 ; C -1 ; WX 500 ; N ccaron ; B 30 -15 477 734 ; C -1 ; WX 556 ; N aring ; B 36 -15 530 756 ; C -1 ; WX 722 ; N Ncommaaccent ; B 76 -225 646 718 ; C -1 ; WX 222 ; N lacute ; B 67 0 264 929 ; C -1 ; WX 556 ; N agrave ; B 36 -15 530 734 ; C -1 ; WX 611 ; N Tcommaaccent ; B 14 -225 597 718 ; C -1 ; WX 722 ; N Cacute ; B 44 -19 681 929 ; C -1 ; WX 556 ; N atilde ; B 36 -15 530 722 ; C -1 ; WX 667 ; N Edotaccent ; B 86 0 616 901 ; C -1 ; WX 500 ; N scaron ; B 32 -15 464 734 ; C -1 ; WX 500 ; N scedilla ; B 32 -225 464 538 ; C -1 ; WX 278 ; N iacute ; B 95 0 292 734 ; C -1 ; WX 471 ; N lozenge ; B 10 0 462 728 ; C -1 ; WX 722 ; N Rcaron ; B 88 0 684 929 ; C -1 ; WX 778 ; N Gcommaaccent ; B 48 -225 704 737 ; C -1 ; WX 556 ; N ucircumflex ; B 68 -15 489 734 ; C -1 ; WX 556 ; N acircumflex ; B 36 -15 530 734 ; C -1 ; WX 667 ; N Amacron ; B 14 0 654 879 ; C -1 ; WX 333 ; N rcaron ; B 61 0 352 734 ; C -1 ; WX 500 ; N ccedilla ; B 30 -225 477 538 ; C -1 ; WX 611 ; N Zdotaccent ; B 23 0 588 901 ; C -1 ; WX 667 ; N Thorn ; B 86 0 622 718 ; C -1 ; WX 778 ; N Omacron ; B 39 -19 739 879 ; C -1 ; WX 722 ; N Racute ; B 88 0 684 929 ; C -1 ; WX 667 ; N Sacute ; B 49 -19 620 929 ; C -1 ; WX 643 ; N dcaron ; B 35 -15 655 718 ; C -1 ; WX 722 ; N Umacron ; B 79 -19 644 879 ; C -1 ; WX 556 ; N uring ; B 68 -15 489 756 ; C -1 ; WX 333 ; N threesuperior ; B 5 270 325 703 ; C -1 ; WX 778 ; N Ograve ; B 39 -19 739 929 ; C -1 ; WX 667 ; N Agrave ; B 14 0 654 929 ; C -1 ; WX 667 ; N Abreve ; B 14 0 654 926 ; C -1 ; WX 584 ; N multiply ; B 39 0 545 506 ; C -1 ; WX 556 ; N uacute ; B 68 -15 489 734 ; C -1 ; WX 611 ; N Tcaron ; B 14 0 597 929 ; C -1 ; WX 476 ; N partialdiff ; B 13 -38 463 714 ; C -1 ; WX 500 ; N ydieresis ; B 11 -214 489 706 ; C -1 ; WX 722 ; N Nacute ; B 76 0 646 929 ; C -1 ; WX 278 ; N icircumflex ; B -6 0 285 734 ; C -1 ; WX 667 ; N Ecircumflex ; B 86 0 616 929 ; C -1 ; WX 556 ; N adieresis ; B 36 -15 530 706 ; C -1 ; WX 556 ; N edieresis ; B 40 -15 516 706 ; C -1 ; WX 500 ; N cacute ; B 30 -15 477 734 ; C -1 ; WX 556 ; N nacute ; B 65 0 491 734 ; C -1 ; WX 556 ; N umacron ; B 68 -15 489 684 ; C -1 ; WX 722 ; N Ncaron ; B 76 0 646 929 ; C -1 ; WX 278 ; N Iacute ; B 91 0 292 929 ; C -1 ; WX 584 ; N plusminus ; B 39 0 545 506 ; C -1 ; WX 260 ; N brokenbar ; B 94 -150 167 700 ; C -1 ; WX 737 ; N registered ; B -14 -19 752 737 ; C -1 ; WX 778 ; N Gbreve ; B 48 -19 704 926 ; C -1 ; WX 278 ; N Idotaccent ; B 91 0 188 901 ; C -1 ; WX 600 ; N summation ; B 15 -10 586 706 ; C -1 ; WX 667 ; N Egrave ; B 86 0 616 929 ; C -1 ; WX 333 ; N racute ; B 77 0 332 734 ; C -1 ; WX 556 ; N omacron ; B 35 -14 521 684 ; C -1 ; WX 611 ; N Zacute ; B 23 0 588 929 ; C -1 ; WX 611 ; N Zcaron ; B 23 0 588 929 ; C -1 ; WX 549 ; N greaterequal ; B 26 0 523 674 ; C -1 ; WX 722 ; N Eth ; B 0 0 674 718 ; C -1 ; WX 722 ; N Ccedilla ; B 44 -225 681 737 ; C -1 ; WX 222 ; N lcommaaccent ; B 67 -225 167 718 ; C -1 ; WX 317 ; N tcaron ; B 14 -7 329 808 ; C -1 ; WX 556 ; N eogonek ; B 40 -225 516 538 ; C -1 ; WX 722 ; N Uogonek ; B 79 -225 644 718 ; C -1 ; WX 667 ; N Aacute ; B 14 0 654 929 ; C -1 ; WX 667 ; N Adieresis ; B 14 0 654 901 ; C -1 ; WX 556 ; N egrave ; B 40 -15 516 734 ; C -1 ; WX 500 ; N zacute ; B 31 0 469 734 ; C -1 ; WX 222 ; N iogonek ; B -31 -225 183 718 ; C -1 ; WX 778 ; N Oacute ; B 39 -19 739 929 ; C -1 ; WX 556 ; N oacute ; B 35 -14 521 734 ; C -1 ; WX 556 ; N amacron ; B 36 -15 530 684 ; C -1 ; WX 500 ; N sacute ; B 32 -15 464 734 ; C -1 ; WX 278 ; N idieresis ; B 13 0 266 706 ; C -1 ; WX 778 ; N Ocircumflex ; B 39 -19 739 929 ; C -1 ; WX 722 ; N Ugrave ; B 79 -19 644 929 ; C -1 ; WX 612 ; N Delta ; B 6 0 608 688 ; C -1 ; WX 556 ; N thorn ; B 58 -207 517 718 ; C -1 ; WX 333 ; N twosuperior ; B 4 281 323 703 ; C -1 ; WX 778 ; N Odieresis ; B 39 -19 739 901 ; C -1 ; WX 556 ; N mu ; B 68 -207 489 523 ; C -1 ; WX 278 ; N igrave ; B -13 0 184 734 ; C -1 ; WX 556 ; N ohungarumlaut ; B 35 -14 521 734 ; C -1 ; WX 667 ; N Eogonek ; B 86 -220 633 718 ; C -1 ; WX 556 ; N dcroat ; B 35 -15 550 718 ; C -1 ; WX 834 ; N threequarters ; B 45 -19 810 703 ; C -1 ; WX 667 ; N Scedilla ; B 49 -225 620 737 ; C -1 ; WX 299 ; N lcaron ; B 67 0 311 718 ; C -1 ; WX 667 ; N Kcommaaccent ; B 76 -225 663 718 ; C -1 ; WX 556 ; N Lacute ; B 76 0 537 929 ; C -1 ; WX 1000 ; N trademark ; B 46 306 903 718 ; C -1 ; WX 556 ; N edotaccent ; B 40 -15 516 706 ; C -1 ; WX 278 ; N Igrave ; B -13 0 188 929 ; C -1 ; WX 278 ; N Imacron ; B -17 0 296 879 ; C -1 ; WX 556 ; N Lcaron ; B 76 0 537 718 ; C -1 ; WX 834 ; N onehalf ; B 43 -19 773 703 ; C -1 ; WX 549 ; N lessequal ; B 26 0 523 674 ; C -1 ; WX 556 ; N ocircumflex ; B 35 -14 521 734 ; C -1 ; WX 556 ; N ntilde ; B 65 0 491 722 ; C -1 ; WX 722 ; N Uhungarumlaut ; B 79 -19 644 929 ; C -1 ; WX 667 ; N Eacute ; B 86 0 616 929 ; C -1 ; WX 556 ; N emacron ; B 40 -15 516 684 ; C -1 ; WX 556 ; N gbreve ; B 40 -220 499 731 ; C -1 ; WX 834 ; N onequarter ; B 73 -19 756 703 ; C -1 ; WX 667 ; N Scaron ; B 49 -19 620 929 ; C -1 ; WX 667 ; N Scommaaccent ; B 49 -225 620 737 ; C -1 ; WX 778 ; N Ohungarumlaut ; B 39 -19 739 929 ; C -1 ; WX 400 ; N degree ; B 54 411 346 703 ; C -1 ; WX 556 ; N ograve ; B 35 -14 521 734 ; C -1 ; WX 722 ; N Ccaron ; B 44 -19 681 929 ; C -1 ; WX 556 ; N ugrave ; B 68 -15 489 734 ; C -1 ; WX 453 ; N radical ; B -4 -80 458 762 ; C -1 ; WX 722 ; N Dcaron ; B 81 0 674 929 ; C -1 ; WX 333 ; N rcommaaccent ; B 77 -225 332 538 ; C -1 ; WX 722 ; N Ntilde ; B 76 0 646 917 ; C -1 ; WX 556 ; N otilde ; B 35 -14 521 722 ; C -1 ; WX 722 ; N Rcommaaccent ; B 88 -225 684 718 ; C -1 ; WX 556 ; N Lcommaaccent ; B 76 -225 537 718 ; C -1 ; WX 667 ; N Atilde ; B 14 0 654 917 ; C -1 ; WX 667 ; N Aogonek ; B 14 -225 654 718 ; C -1 ; WX 667 ; N Aring ; B 14 0 654 931 ; C -1 ; WX 778 ; N Otilde ; B 39 -19 739 917 ; C -1 ; WX 500 ; N zdotaccent ; B 31 0 469 706 ; C -1 ; WX 667 ; N Ecaron ; B 86 0 616 929 ; C -1 ; WX 278 ; N Iogonek ; B -3 -225 211 718 ; C -1 ; WX 500 ; N kcommaaccent ; B 67 -225 501 718 ; C -1 ; WX 584 ; N minus ; B 39 216 545 289 ; C -1 ; WX 278 ; N Icircumflex ; B -6 0 285 929 ; C -1 ; WX 556 ; N ncaron ; B 65 0 491 734 ; C -1 ; WX 278 ; N tcommaaccent ; B 14 -225 257 669 ; C -1 ; WX 584 ; N logicalnot ; B 39 108 545 390 ; C -1 ; WX 556 ; N odieresis ; B 35 -14 521 706 ; C -1 ; WX 556 ; N udieresis ; B 68 -15 489 706 ; C -1 ; WX 549 ; N notequal ; B 12 -35 537 551 ; C -1 ; WX 556 ; N gcommaaccent ; B 40 -220 499 822 ; C -1 ; WX 556 ; N eth ; B 35 -15 522 737 ; C -1 ; WX 500 ; N zcaron ; B 31 0 469 734 ; C -1 ; WX 556 ; N ncommaaccent ; B 65 -225 491 538 ; C -1 ; WX 333 ; N onesuperior ; B 43 281 222 703 ; C -1 ; WX 278 ; N imacron ; B 5 0 272 684 ; EndCharMetrics StartKernData StartKernPairs 2705 KPX A C -30 KPX A Cacute -30 KPX A Ccaron -30 KPX A Ccedilla -30 KPX A G -30 KPX A Gbreve -30 KPX A Gcommaaccent -30 KPX A O -30 KPX A Oacute -30 KPX A Ocircumflex -30 KPX A Odieresis -30 KPX A Ograve -30 KPX A Ohungarumlaut -30 KPX A Omacron -30 KPX A Oslash -30 KPX A Otilde -30 KPX A Q -30 KPX A T -120 KPX A Tcaron -120 KPX A Tcommaaccent -120 KPX A U -50 KPX A Uacute -50 KPX A Ucircumflex -50 KPX A Udieresis -50 KPX A Ugrave -50 KPX A Uhungarumlaut -50 KPX A Umacron -50 KPX A Uogonek -50 KPX A Uring -50 KPX A V -70 KPX A W -50 KPX A Y -100 KPX A Yacute -100 KPX A Ydieresis -100 KPX A u -30 KPX A uacute -30 KPX A ucircumflex -30 KPX A udieresis -30 KPX A ugrave -30 KPX A uhungarumlaut -30 KPX A umacron -30 KPX A uogonek -30 KPX A uring -30 KPX A v -40 KPX A w -40 KPX A y -40 KPX A yacute -40 KPX A ydieresis -40 KPX Aacute C -30 KPX Aacute Cacute -30 KPX Aacute Ccaron -30 KPX Aacute Ccedilla -30 KPX Aacute G -30 KPX Aacute Gbreve -30 KPX Aacute Gcommaaccent -30 KPX Aacute O -30 KPX Aacute Oacute -30 KPX Aacute Ocircumflex -30 KPX Aacute Odieresis -30 KPX Aacute Ograve -30 KPX Aacute Ohungarumlaut -30 KPX Aacute Omacron -30 KPX Aacute Oslash -30 KPX Aacute Otilde -30 KPX Aacute Q -30 KPX Aacute T -120 KPX Aacute Tcaron -120 KPX Aacute Tcommaaccent -120 KPX Aacute U -50 KPX Aacute Uacute -50 KPX Aacute Ucircumflex -50 KPX Aacute Udieresis -50 KPX Aacute Ugrave -50 KPX Aacute Uhungarumlaut -50 KPX Aacute Umacron -50 KPX Aacute Uogonek -50 KPX Aacute Uring -50 KPX Aacute V -70 KPX Aacute W -50 KPX Aacute Y -100 KPX Aacute Yacute -100 KPX Aacute Ydieresis -100 KPX Aacute u -30 KPX Aacute uacute -30 KPX Aacute ucircumflex -30 KPX Aacute udieresis -30 KPX Aacute ugrave -30 KPX Aacute uhungarumlaut -30 KPX Aacute umacron -30 KPX Aacute uogonek -30 KPX Aacute uring -30 KPX Aacute v -40 KPX Aacute w -40 KPX Aacute y -40 KPX Aacute yacute -40 KPX Aacute ydieresis -40 KPX Abreve C -30 KPX Abreve Cacute -30 KPX Abreve Ccaron -30 KPX Abreve Ccedilla -30 KPX Abreve G -30 KPX Abreve Gbreve -30 KPX Abreve Gcommaaccent -30 KPX Abreve O -30 KPX Abreve Oacute -30 KPX Abreve Ocircumflex -30 KPX Abreve Odieresis -30 KPX Abreve Ograve -30 KPX Abreve Ohungarumlaut -30 KPX Abreve Omacron -30 KPX Abreve Oslash -30 KPX Abreve Otilde -30 KPX Abreve Q -30 KPX Abreve T -120 KPX Abreve Tcaron -120 KPX Abreve Tcommaaccent -120 KPX Abreve U -50 KPX Abreve Uacute -50 KPX Abreve Ucircumflex -50 KPX Abreve Udieresis -50 KPX Abreve Ugrave -50 KPX Abreve Uhungarumlaut -50 KPX Abreve Umacron -50 KPX Abreve Uogonek -50 KPX Abreve Uring -50 KPX Abreve V -70 KPX Abreve W -50 KPX Abreve Y -100 KPX Abreve Yacute -100 KPX Abreve Ydieresis -100 KPX Abreve u -30 KPX Abreve uacute -30 KPX Abreve ucircumflex -30 KPX Abreve udieresis -30 KPX Abreve ugrave -30 KPX Abreve uhungarumlaut -30 KPX Abreve umacron -30 KPX Abreve uogonek -30 KPX Abreve uring -30 KPX Abreve v -40 KPX Abreve w -40 KPX Abreve y -40 KPX Abreve yacute -40 KPX Abreve ydieresis -40 KPX Acircumflex C -30 KPX Acircumflex Cacute -30 KPX Acircumflex Ccaron -30 KPX Acircumflex Ccedilla -30 KPX Acircumflex G -30 KPX Acircumflex Gbreve -30 KPX Acircumflex Gcommaaccent -30 KPX Acircumflex O -30 KPX Acircumflex Oacute -30 KPX Acircumflex Ocircumflex -30 KPX Acircumflex Odieresis -30 KPX Acircumflex Ograve -30 KPX Acircumflex Ohungarumlaut -30 KPX Acircumflex Omacron -30 KPX Acircumflex Oslash -30 KPX Acircumflex Otilde -30 KPX Acircumflex Q -30 KPX Acircumflex T -120 KPX Acircumflex Tcaron -120 KPX Acircumflex Tcommaaccent -120 KPX Acircumflex U -50 KPX Acircumflex Uacute -50 KPX Acircumflex Ucircumflex -50 KPX Acircumflex Udieresis -50 KPX Acircumflex Ugrave -50 KPX Acircumflex Uhungarumlaut -50 KPX Acircumflex Umacron -50 KPX Acircumflex Uogonek -50 KPX Acircumflex Uring -50 KPX Acircumflex V -70 KPX Acircumflex W -50 KPX Acircumflex Y -100 KPX Acircumflex Yacute -100 KPX Acircumflex Ydieresis -100 KPX Acircumflex u -30 KPX Acircumflex uacute -30 KPX Acircumflex ucircumflex -30 KPX Acircumflex udieresis -30 KPX Acircumflex ugrave -30 KPX Acircumflex uhungarumlaut -30 KPX Acircumflex umacron -30 KPX Acircumflex uogonek -30 KPX Acircumflex uring -30 KPX Acircumflex v -40 KPX Acircumflex w -40 KPX Acircumflex y -40 KPX Acircumflex yacute -40 KPX Acircumflex ydieresis -40 KPX Adieresis C -30 KPX Adieresis Cacute -30 KPX Adieresis Ccaron -30 KPX Adieresis Ccedilla -30 KPX Adieresis G -30 KPX Adieresis Gbreve -30 KPX Adieresis Gcommaaccent -30 KPX Adieresis O -30 KPX Adieresis Oacute -30 KPX Adieresis Ocircumflex -30 KPX Adieresis Odieresis -30 KPX Adieresis Ograve -30 KPX Adieresis Ohungarumlaut -30 KPX Adieresis Omacron -30 KPX Adieresis Oslash -30 KPX Adieresis Otilde -30 KPX Adieresis Q -30 KPX Adieresis T -120 KPX Adieresis Tcaron -120 KPX Adieresis Tcommaaccent -120 KPX Adieresis U -50 KPX Adieresis Uacute -50 KPX Adieresis Ucircumflex -50 KPX Adieresis Udieresis -50 KPX Adieresis Ugrave -50 KPX Adieresis Uhungarumlaut -50 KPX Adieresis Umacron -50 KPX Adieresis Uogonek -50 KPX Adieresis Uring -50 KPX Adieresis V -70 KPX Adieresis W -50 KPX Adieresis Y -100 KPX Adieresis Yacute -100 KPX Adieresis Ydieresis -100 KPX Adieresis u -30 KPX Adieresis uacute -30 KPX Adieresis ucircumflex -30 KPX Adieresis udieresis -30 KPX Adieresis ugrave -30 KPX Adieresis uhungarumlaut -30 KPX Adieresis umacron -30 KPX Adieresis uogonek -30 KPX Adieresis uring -30 KPX Adieresis v -40 KPX Adieresis w -40 KPX Adieresis y -40 KPX Adieresis yacute -40 KPX Adieresis ydieresis -40 KPX Agrave C -30 KPX Agrave Cacute -30 KPX Agrave Ccaron -30 KPX Agrave Ccedilla -30 KPX Agrave G -30 KPX Agrave Gbreve -30 KPX Agrave Gcommaaccent -30 KPX Agrave O -30 KPX Agrave Oacute -30 KPX Agrave Ocircumflex -30 KPX Agrave Odieresis -30 KPX Agrave Ograve -30 KPX Agrave Ohungarumlaut -30 KPX Agrave Omacron -30 KPX Agrave Oslash -30 KPX Agrave Otilde -30 KPX Agrave Q -30 KPX Agrave T -120 KPX Agrave Tcaron -120 KPX Agrave Tcommaaccent -120 KPX Agrave U -50 KPX Agrave Uacute -50 KPX Agrave Ucircumflex -50 KPX Agrave Udieresis -50 KPX Agrave Ugrave -50 KPX Agrave Uhungarumlaut -50 KPX Agrave Umacron -50 KPX Agrave Uogonek -50 KPX Agrave Uring -50 KPX Agrave V -70 KPX Agrave W -50 KPX Agrave Y -100 KPX Agrave Yacute -100 KPX Agrave Ydieresis -100 KPX Agrave u -30 KPX Agrave uacute -30 KPX Agrave ucircumflex -30 KPX Agrave udieresis -30 KPX Agrave ugrave -30 KPX Agrave uhungarumlaut -30 KPX Agrave umacron -30 KPX Agrave uogonek -30 KPX Agrave uring -30 KPX Agrave v -40 KPX Agrave w -40 KPX Agrave y -40 KPX Agrave yacute -40 KPX Agrave ydieresis -40 KPX Amacron C -30 KPX Amacron Cacute -30 KPX Amacron Ccaron -30 KPX Amacron Ccedilla -30 KPX Amacron G -30 KPX Amacron Gbreve -30 KPX Amacron Gcommaaccent -30 KPX Amacron O -30 KPX Amacron Oacute -30 KPX Amacron Ocircumflex -30 KPX Amacron Odieresis -30 KPX Amacron Ograve -30 KPX Amacron Ohungarumlaut -30 KPX Amacron Omacron -30 KPX Amacron Oslash -30 KPX Amacron Otilde -30 KPX Amacron Q -30 KPX Amacron T -120 KPX Amacron Tcaron -120 KPX Amacron Tcommaaccent -120 KPX Amacron U -50 KPX Amacron Uacute -50 KPX Amacron Ucircumflex -50 KPX Amacron Udieresis -50 KPX Amacron Ugrave -50 KPX Amacron Uhungarumlaut -50 KPX Amacron Umacron -50 KPX Amacron Uogonek -50 KPX Amacron Uring -50 KPX Amacron V -70 KPX Amacron W -50 KPX Amacron Y -100 KPX Amacron Yacute -100 KPX Amacron Ydieresis -100 KPX Amacron u -30 KPX Amacron uacute -30 KPX Amacron ucircumflex -30 KPX Amacron udieresis -30 KPX Amacron ugrave -30 KPX Amacron uhungarumlaut -30 KPX Amacron umacron -30 KPX Amacron uogonek -30 KPX Amacron uring -30 KPX Amacron v -40 KPX Amacron w -40 KPX Amacron y -40 KPX Amacron yacute -40 KPX Amacron ydieresis -40 KPX Aogonek C -30 KPX Aogonek Cacute -30 KPX Aogonek Ccaron -30 KPX Aogonek Ccedilla -30 KPX Aogonek G -30 KPX Aogonek Gbreve -30 KPX Aogonek Gcommaaccent -30 KPX Aogonek O -30 KPX Aogonek Oacute -30 KPX Aogonek Ocircumflex -30 KPX Aogonek Odieresis -30 KPX Aogonek Ograve -30 KPX Aogonek Ohungarumlaut -30 KPX Aogonek Omacron -30 KPX Aogonek Oslash -30 KPX Aogonek Otilde -30 KPX Aogonek Q -30 KPX Aogonek T -120 KPX Aogonek Tcaron -120 KPX Aogonek Tcommaaccent -120 KPX Aogonek U -50 KPX Aogonek Uacute -50 KPX Aogonek Ucircumflex -50 KPX Aogonek Udieresis -50 KPX Aogonek Ugrave -50 KPX Aogonek Uhungarumlaut -50 KPX Aogonek Umacron -50 KPX Aogonek Uogonek -50 KPX Aogonek Uring -50 KPX Aogonek V -70 KPX Aogonek W -50 KPX Aogonek Y -100 KPX Aogonek Yacute -100 KPX Aogonek Ydieresis -100 KPX Aogonek u -30 KPX Aogonek uacute -30 KPX Aogonek ucircumflex -30 KPX Aogonek udieresis -30 KPX Aogonek ugrave -30 KPX Aogonek uhungarumlaut -30 KPX Aogonek umacron -30 KPX Aogonek uogonek -30 KPX Aogonek uring -30 KPX Aogonek v -40 KPX Aogonek w -40 KPX Aogonek y -40 KPX Aogonek yacute -40 KPX Aogonek ydieresis -40 KPX Aring C -30 KPX Aring Cacute -30 KPX Aring Ccaron -30 KPX Aring Ccedilla -30 KPX Aring G -30 KPX Aring Gbreve -30 KPX Aring Gcommaaccent -30 KPX Aring O -30 KPX Aring Oacute -30 KPX Aring Ocircumflex -30 KPX Aring Odieresis -30 KPX Aring Ograve -30 KPX Aring Ohungarumlaut -30 KPX Aring Omacron -30 KPX Aring Oslash -30 KPX Aring Otilde -30 KPX Aring Q -30 KPX Aring T -120 KPX Aring Tcaron -120 KPX Aring Tcommaaccent -120 KPX Aring U -50 KPX Aring Uacute -50 KPX Aring Ucircumflex -50 KPX Aring Udieresis -50 KPX Aring Ugrave -50 KPX Aring Uhungarumlaut -50 KPX Aring Umacron -50 KPX Aring Uogonek -50 KPX Aring Uring -50 KPX Aring V -70 KPX Aring W -50 KPX Aring Y -100 KPX Aring Yacute -100 KPX Aring Ydieresis -100 KPX Aring u -30 KPX Aring uacute -30 KPX Aring ucircumflex -30 KPX Aring udieresis -30 KPX Aring ugrave -30 KPX Aring uhungarumlaut -30 KPX Aring umacron -30 KPX Aring uogonek -30 KPX Aring uring -30 KPX Aring v -40 KPX Aring w -40 KPX Aring y -40 KPX Aring yacute -40 KPX Aring ydieresis -40 KPX Atilde C -30 KPX Atilde Cacute -30 KPX Atilde Ccaron -30 KPX Atilde Ccedilla -30 KPX Atilde G -30 KPX Atilde Gbreve -30 KPX Atilde Gcommaaccent -30 KPX Atilde O -30 KPX Atilde Oacute -30 KPX Atilde Ocircumflex -30 KPX Atilde Odieresis -30 KPX Atilde Ograve -30 KPX Atilde Ohungarumlaut -30 KPX Atilde Omacron -30 KPX Atilde Oslash -30 KPX Atilde Otilde -30 KPX Atilde Q -30 KPX Atilde T -120 KPX Atilde Tcaron -120 KPX Atilde Tcommaaccent -120 KPX Atilde U -50 KPX Atilde Uacute -50 KPX Atilde Ucircumflex -50 KPX Atilde Udieresis -50 KPX Atilde Ugrave -50 KPX Atilde Uhungarumlaut -50 KPX Atilde Umacron -50 KPX Atilde Uogonek -50 KPX Atilde Uring -50 KPX Atilde V -70 KPX Atilde W -50 KPX Atilde Y -100 KPX Atilde Yacute -100 KPX Atilde Ydieresis -100 KPX Atilde u -30 KPX Atilde uacute -30 KPX Atilde ucircumflex -30 KPX Atilde udieresis -30 KPX Atilde ugrave -30 KPX Atilde uhungarumlaut -30 KPX Atilde umacron -30 KPX Atilde uogonek -30 KPX Atilde uring -30 KPX Atilde v -40 KPX Atilde w -40 KPX Atilde y -40 KPX Atilde yacute -40 KPX Atilde ydieresis -40 KPX B U -10 KPX B Uacute -10 KPX B Ucircumflex -10 KPX B Udieresis -10 KPX B Ugrave -10 KPX B Uhungarumlaut -10 KPX B Umacron -10 KPX B Uogonek -10 KPX B Uring -10 KPX B comma -20 KPX B period -20 KPX C comma -30 KPX C period -30 KPX Cacute comma -30 KPX Cacute period -30 KPX Ccaron comma -30 KPX Ccaron period -30 KPX Ccedilla comma -30 KPX Ccedilla period -30 KPX D A -40 KPX D Aacute -40 KPX D Abreve -40 KPX D Acircumflex -40 KPX D Adieresis -40 KPX D Agrave -40 KPX D Amacron -40 KPX D Aogonek -40 KPX D Aring -40 KPX D Atilde -40 KPX D V -70 KPX D W -40 KPX D Y -90 KPX D Yacute -90 KPX D Ydieresis -90 KPX D comma -70 KPX D period -70 KPX Dcaron A -40 KPX Dcaron Aacute -40 KPX Dcaron Abreve -40 KPX Dcaron Acircumflex -40 KPX Dcaron Adieresis -40 KPX Dcaron Agrave -40 KPX Dcaron Amacron -40 KPX Dcaron Aogonek -40 KPX Dcaron Aring -40 KPX Dcaron Atilde -40 KPX Dcaron V -70 KPX Dcaron W -40 KPX Dcaron Y -90 KPX Dcaron Yacute -90 KPX Dcaron Ydieresis -90 KPX Dcaron comma -70 KPX Dcaron period -70 KPX Dcroat A -40 KPX Dcroat Aacute -40 KPX Dcroat Abreve -40 KPX Dcroat Acircumflex -40 KPX Dcroat Adieresis -40 KPX Dcroat Agrave -40 KPX Dcroat Amacron -40 KPX Dcroat Aogonek -40 KPX Dcroat Aring -40 KPX Dcroat Atilde -40 KPX Dcroat V -70 KPX Dcroat W -40 KPX Dcroat Y -90 KPX Dcroat Yacute -90 KPX Dcroat Ydieresis -90 KPX Dcroat comma -70 KPX Dcroat period -70 KPX F A -80 KPX F Aacute -80 KPX F Abreve -80 KPX F Acircumflex -80 KPX F Adieresis -80 KPX F Agrave -80 KPX F Amacron -80 KPX F Aogonek -80 KPX F Aring -80 KPX F Atilde -80 KPX F a -50 KPX F aacute -50 KPX F abreve -50 KPX F acircumflex -50 KPX F adieresis -50 KPX F agrave -50 KPX F amacron -50 KPX F aogonek -50 KPX F aring -50 KPX F atilde -50 KPX F comma -150 KPX F e -30 KPX F eacute -30 KPX F ecaron -30 KPX F ecircumflex -30 KPX F edieresis -30 KPX F edotaccent -30 KPX F egrave -30 KPX F emacron -30 KPX F eogonek -30 KPX F o -30 KPX F oacute -30 KPX F ocircumflex -30 KPX F odieresis -30 KPX F ograve -30 KPX F ohungarumlaut -30 KPX F omacron -30 KPX F oslash -30 KPX F otilde -30 KPX F period -150 KPX F r -45 KPX F racute -45 KPX F rcaron -45 KPX F rcommaaccent -45 KPX J A -20 KPX J Aacute -20 KPX J Abreve -20 KPX J Acircumflex -20 KPX J Adieresis -20 KPX J Agrave -20 KPX J Amacron -20 KPX J Aogonek -20 KPX J Aring -20 KPX J Atilde -20 KPX J a -20 KPX J aacute -20 KPX J abreve -20 KPX J acircumflex -20 KPX J adieresis -20 KPX J agrave -20 KPX J amacron -20 KPX J aogonek -20 KPX J aring -20 KPX J atilde -20 KPX J comma -30 KPX J period -30 KPX J u -20 KPX J uacute -20 KPX J ucircumflex -20 KPX J udieresis -20 KPX J ugrave -20 KPX J uhungarumlaut -20 KPX J umacron -20 KPX J uogonek -20 KPX J uring -20 KPX K O -50 KPX K Oacute -50 KPX K Ocircumflex -50 KPX K Odieresis -50 KPX K Ograve -50 KPX K Ohungarumlaut -50 KPX K Omacron -50 KPX K Oslash -50 KPX K Otilde -50 KPX K e -40 KPX K eacute -40 KPX K ecaron -40 KPX K ecircumflex -40 KPX K edieresis -40 KPX K edotaccent -40 KPX K egrave -40 KPX K emacron -40 KPX K eogonek -40 KPX K o -40 KPX K oacute -40 KPX K ocircumflex -40 KPX K odieresis -40 KPX K ograve -40 KPX K ohungarumlaut -40 KPX K omacron -40 KPX K oslash -40 KPX K otilde -40 KPX K u -30 KPX K uacute -30 KPX K ucircumflex -30 KPX K udieresis -30 KPX K ugrave -30 KPX K uhungarumlaut -30 KPX K umacron -30 KPX K uogonek -30 KPX K uring -30 KPX K y -50 KPX K yacute -50 KPX K ydieresis -50 KPX Kcommaaccent O -50 KPX Kcommaaccent Oacute -50 KPX Kcommaaccent Ocircumflex -50 KPX Kcommaaccent Odieresis -50 KPX Kcommaaccent Ograve -50 KPX Kcommaaccent Ohungarumlaut -50 KPX Kcommaaccent Omacron -50 KPX Kcommaaccent Oslash -50 KPX Kcommaaccent Otilde -50 KPX Kcommaaccent e -40 KPX Kcommaaccent eacute -40 KPX Kcommaaccent ecaron -40 KPX Kcommaaccent ecircumflex -40 KPX Kcommaaccent edieresis -40 KPX Kcommaaccent edotaccent -40 KPX Kcommaaccent egrave -40 KPX Kcommaaccent emacron -40 KPX Kcommaaccent eogonek -40 KPX Kcommaaccent o -40 KPX Kcommaaccent oacute -40 KPX Kcommaaccent ocircumflex -40 KPX Kcommaaccent odieresis -40 KPX Kcommaaccent ograve -40 KPX Kcommaaccent ohungarumlaut -40 KPX Kcommaaccent omacron -40 KPX Kcommaaccent oslash -40 KPX Kcommaaccent otilde -40 KPX Kcommaaccent u -30 KPX Kcommaaccent uacute -30 KPX Kcommaaccent ucircumflex -30 KPX Kcommaaccent udieresis -30 KPX Kcommaaccent ugrave -30 KPX Kcommaaccent uhungarumlaut -30 KPX Kcommaaccent umacron -30 KPX Kcommaaccent uogonek -30 KPX Kcommaaccent uring -30 KPX Kcommaaccent y -50 KPX Kcommaaccent yacute -50 KPX Kcommaaccent ydieresis -50 KPX L T -110 KPX L Tcaron -110 KPX L Tcommaaccent -110 KPX L V -110 KPX L W -70 KPX L Y -140 KPX L Yacute -140 KPX L Ydieresis -140 KPX L quotedblright -140 KPX L quoteright -160 KPX L y -30 KPX L yacute -30 KPX L ydieresis -30 KPX Lacute T -110 KPX Lacute Tcaron -110 KPX Lacute Tcommaaccent -110 KPX Lacute V -110 KPX Lacute W -70 KPX Lacute Y -140 KPX Lacute Yacute -140 KPX Lacute Ydieresis -140 KPX Lacute quotedblright -140 KPX Lacute quoteright -160 KPX Lacute y -30 KPX Lacute yacute -30 KPX Lacute ydieresis -30 KPX Lcaron T -110 KPX Lcaron Tcaron -110 KPX Lcaron Tcommaaccent -110 KPX Lcaron V -110 KPX Lcaron W -70 KPX Lcaron Y -140 KPX Lcaron Yacute -140 KPX Lcaron Ydieresis -140 KPX Lcaron quotedblright -140 KPX Lcaron quoteright -160 KPX Lcaron y -30 KPX Lcaron yacute -30 KPX Lcaron ydieresis -30 KPX Lcommaaccent T -110 KPX Lcommaaccent Tcaron -110 KPX Lcommaaccent Tcommaaccent -110 KPX Lcommaaccent V -110 KPX Lcommaaccent W -70 KPX Lcommaaccent Y -140 KPX Lcommaaccent Yacute -140 KPX Lcommaaccent Ydieresis -140 KPX Lcommaaccent quotedblright -140 KPX Lcommaaccent quoteright -160 KPX Lcommaaccent y -30 KPX Lcommaaccent yacute -30 KPX Lcommaaccent ydieresis -30 KPX Lslash T -110 KPX Lslash Tcaron -110 KPX Lslash Tcommaaccent -110 KPX Lslash V -110 KPX Lslash W -70 KPX Lslash Y -140 KPX Lslash Yacute -140 KPX Lslash Ydieresis -140 KPX Lslash quotedblright -140 KPX Lslash quoteright -160 KPX Lslash y -30 KPX Lslash yacute -30 KPX Lslash ydieresis -30 KPX O A -20 KPX O Aacute -20 KPX O Abreve -20 KPX O Acircumflex -20 KPX O Adieresis -20 KPX O Agrave -20 KPX O Amacron -20 KPX O Aogonek -20 KPX O Aring -20 KPX O Atilde -20 KPX O T -40 KPX O Tcaron -40 KPX O Tcommaaccent -40 KPX O V -50 KPX O W -30 KPX O X -60 KPX O Y -70 KPX O Yacute -70 KPX O Ydieresis -70 KPX O comma -40 KPX O period -40 KPX Oacute A -20 KPX Oacute Aacute -20 KPX Oacute Abreve -20 KPX Oacute Acircumflex -20 KPX Oacute Adieresis -20 KPX Oacute Agrave -20 KPX Oacute Amacron -20 KPX Oacute Aogonek -20 KPX Oacute Aring -20 KPX Oacute Atilde -20 KPX Oacute T -40 KPX Oacute Tcaron -40 KPX Oacute Tcommaaccent -40 KPX Oacute V -50 KPX Oacute W -30 KPX Oacute X -60 KPX Oacute Y -70 KPX Oacute Yacute -70 KPX Oacute Ydieresis -70 KPX Oacute comma -40 KPX Oacute period -40 KPX Ocircumflex A -20 KPX Ocircumflex Aacute -20 KPX Ocircumflex Abreve -20 KPX Ocircumflex Acircumflex -20 KPX Ocircumflex Adieresis -20 KPX Ocircumflex Agrave -20 KPX Ocircumflex Amacron -20 KPX Ocircumflex Aogonek -20 KPX Ocircumflex Aring -20 KPX Ocircumflex Atilde -20 KPX Ocircumflex T -40 KPX Ocircumflex Tcaron -40 KPX Ocircumflex Tcommaaccent -40 KPX Ocircumflex V -50 KPX Ocircumflex W -30 KPX Ocircumflex X -60 KPX Ocircumflex Y -70 KPX Ocircumflex Yacute -70 KPX Ocircumflex Ydieresis -70 KPX Ocircumflex comma -40 KPX Ocircumflex period -40 KPX Odieresis A -20 KPX Odieresis Aacute -20 KPX Odieresis Abreve -20 KPX Odieresis Acircumflex -20 KPX Odieresis Adieresis -20 KPX Odieresis Agrave -20 KPX Odieresis Amacron -20 KPX Odieresis Aogonek -20 KPX Odieresis Aring -20 KPX Odieresis Atilde -20 KPX Odieresis T -40 KPX Odieresis Tcaron -40 KPX Odieresis Tcommaaccent -40 KPX Odieresis V -50 KPX Odieresis W -30 KPX Odieresis X -60 KPX Odieresis Y -70 KPX Odieresis Yacute -70 KPX Odieresis Ydieresis -70 KPX Odieresis comma -40 KPX Odieresis period -40 KPX Ograve A -20 KPX Ograve Aacute -20 KPX Ograve Abreve -20 KPX Ograve Acircumflex -20 KPX Ograve Adieresis -20 KPX Ograve Agrave -20 KPX Ograve Amacron -20 KPX Ograve Aogonek -20 KPX Ograve Aring -20 KPX Ograve Atilde -20 KPX Ograve T -40 KPX Ograve Tcaron -40 KPX Ograve Tcommaaccent -40 KPX Ograve V -50 KPX Ograve W -30 KPX Ograve X -60 KPX Ograve Y -70 KPX Ograve Yacute -70 KPX Ograve Ydieresis -70 KPX Ograve comma -40 KPX Ograve period -40 KPX Ohungarumlaut A -20 KPX Ohungarumlaut Aacute -20 KPX Ohungarumlaut Abreve -20 KPX Ohungarumlaut Acircumflex -20 KPX Ohungarumlaut Adieresis -20 KPX Ohungarumlaut Agrave -20 KPX Ohungarumlaut Amacron -20 KPX Ohungarumlaut Aogonek -20 KPX Ohungarumlaut Aring -20 KPX Ohungarumlaut Atilde -20 KPX Ohungarumlaut T -40 KPX Ohungarumlaut Tcaron -40 KPX Ohungarumlaut Tcommaaccent -40 KPX Ohungarumlaut V -50 KPX Ohungarumlaut W -30 KPX Ohungarumlaut X -60 KPX Ohungarumlaut Y -70 KPX Ohungarumlaut Yacute -70 KPX Ohungarumlaut Ydieresis -70 KPX Ohungarumlaut comma -40 KPX Ohungarumlaut period -40 KPX Omacron A -20 KPX Omacron Aacute -20 KPX Omacron Abreve -20 KPX Omacron Acircumflex -20 KPX Omacron Adieresis -20 KPX Omacron Agrave -20 KPX Omacron Amacron -20 KPX Omacron Aogonek -20 KPX Omacron Aring -20 KPX Omacron Atilde -20 KPX Omacron T -40 KPX Omacron Tcaron -40 KPX Omacron Tcommaaccent -40 KPX Omacron V -50 KPX Omacron W -30 KPX Omacron X -60 KPX Omacron Y -70 KPX Omacron Yacute -70 KPX Omacron Ydieresis -70 KPX Omacron comma -40 KPX Omacron period -40 KPX Oslash A -20 KPX Oslash Aacute -20 KPX Oslash Abreve -20 KPX Oslash Acircumflex -20 KPX Oslash Adieresis -20 KPX Oslash Agrave -20 KPX Oslash Amacron -20 KPX Oslash Aogonek -20 KPX Oslash Aring -20 KPX Oslash Atilde -20 KPX Oslash T -40 KPX Oslash Tcaron -40 KPX Oslash Tcommaaccent -40 KPX Oslash V -50 KPX Oslash W -30 KPX Oslash X -60 KPX Oslash Y -70 KPX Oslash Yacute -70 KPX Oslash Ydieresis -70 KPX Oslash comma -40 KPX Oslash period -40 KPX Otilde A -20 KPX Otilde Aacute -20 KPX Otilde Abreve -20 KPX Otilde Acircumflex -20 KPX Otilde Adieresis -20 KPX Otilde Agrave -20 KPX Otilde Amacron -20 KPX Otilde Aogonek -20 KPX Otilde Aring -20 KPX Otilde Atilde -20 KPX Otilde T -40 KPX Otilde Tcaron -40 KPX Otilde Tcommaaccent -40 KPX Otilde V -50 KPX Otilde W -30 KPX Otilde X -60 KPX Otilde Y -70 KPX Otilde Yacute -70 KPX Otilde Ydieresis -70 KPX Otilde comma -40 KPX Otilde period -40 KPX P A -120 KPX P Aacute -120 KPX P Abreve -120 KPX P Acircumflex -120 KPX P Adieresis -120 KPX P Agrave -120 KPX P Amacron -120 KPX P Aogonek -120 KPX P Aring -120 KPX P Atilde -120 KPX P a -40 KPX P aacute -40 KPX P abreve -40 KPX P acircumflex -40 KPX P adieresis -40 KPX P agrave -40 KPX P amacron -40 KPX P aogonek -40 KPX P aring -40 KPX P atilde -40 KPX P comma -180 KPX P e -50 KPX P eacute -50 KPX P ecaron -50 KPX P ecircumflex -50 KPX P edieresis -50 KPX P edotaccent -50 KPX P egrave -50 KPX P emacron -50 KPX P eogonek -50 KPX P o -50 KPX P oacute -50 KPX P ocircumflex -50 KPX P odieresis -50 KPX P ograve -50 KPX P ohungarumlaut -50 KPX P omacron -50 KPX P oslash -50 KPX P otilde -50 KPX P period -180 KPX Q U -10 KPX Q Uacute -10 KPX Q Ucircumflex -10 KPX Q Udieresis -10 KPX Q Ugrave -10 KPX Q Uhungarumlaut -10 KPX Q Umacron -10 KPX Q Uogonek -10 KPX Q Uring -10 KPX R O -20 KPX R Oacute -20 KPX R Ocircumflex -20 KPX R Odieresis -20 KPX R Ograve -20 KPX R Ohungarumlaut -20 KPX R Omacron -20 KPX R Oslash -20 KPX R Otilde -20 KPX R T -30 KPX R Tcaron -30 KPX R Tcommaaccent -30 KPX R U -40 KPX R Uacute -40 KPX R Ucircumflex -40 KPX R Udieresis -40 KPX R Ugrave -40 KPX R Uhungarumlaut -40 KPX R Umacron -40 KPX R Uogonek -40 KPX R Uring -40 KPX R V -50 KPX R W -30 KPX R Y -50 KPX R Yacute -50 KPX R Ydieresis -50 KPX Racute O -20 KPX Racute Oacute -20 KPX Racute Ocircumflex -20 KPX Racute Odieresis -20 KPX Racute Ograve -20 KPX Racute Ohungarumlaut -20 KPX Racute Omacron -20 KPX Racute Oslash -20 KPX Racute Otilde -20 KPX Racute T -30 KPX Racute Tcaron -30 KPX Racute Tcommaaccent -30 KPX Racute U -40 KPX Racute Uacute -40 KPX Racute Ucircumflex -40 KPX Racute Udieresis -40 KPX Racute Ugrave -40 KPX Racute Uhungarumlaut -40 KPX Racute Umacron -40 KPX Racute Uogonek -40 KPX Racute Uring -40 KPX Racute V -50 KPX Racute W -30 KPX Racute Y -50 KPX Racute Yacute -50 KPX Racute Ydieresis -50 KPX Rcaron O -20 KPX Rcaron Oacute -20 KPX Rcaron Ocircumflex -20 KPX Rcaron Odieresis -20 KPX Rcaron Ograve -20 KPX Rcaron Ohungarumlaut -20 KPX Rcaron Omacron -20 KPX Rcaron Oslash -20 KPX Rcaron Otilde -20 KPX Rcaron T -30 KPX Rcaron Tcaron -30 KPX Rcaron Tcommaaccent -30 KPX Rcaron U -40 KPX Rcaron Uacute -40 KPX Rcaron Ucircumflex -40 KPX Rcaron Udieresis -40 KPX Rcaron Ugrave -40 KPX Rcaron Uhungarumlaut -40 KPX Rcaron Umacron -40 KPX Rcaron Uogonek -40 KPX Rcaron Uring -40 KPX Rcaron V -50 KPX Rcaron W -30 KPX Rcaron Y -50 KPX Rcaron Yacute -50 KPX Rcaron Ydieresis -50 KPX Rcommaaccent O -20 KPX Rcommaaccent Oacute -20 KPX Rcommaaccent Ocircumflex -20 KPX Rcommaaccent Odieresis -20 KPX Rcommaaccent Ograve -20 KPX Rcommaaccent Ohungarumlaut -20 KPX Rcommaaccent Omacron -20 KPX Rcommaaccent Oslash -20 KPX Rcommaaccent Otilde -20 KPX Rcommaaccent T -30 KPX Rcommaaccent Tcaron -30 KPX Rcommaaccent Tcommaaccent -30 KPX Rcommaaccent U -40 KPX Rcommaaccent Uacute -40 KPX Rcommaaccent Ucircumflex -40 KPX Rcommaaccent Udieresis -40 KPX Rcommaaccent Ugrave -40 KPX Rcommaaccent Uhungarumlaut -40 KPX Rcommaaccent Umacron -40 KPX Rcommaaccent Uogonek -40 KPX Rcommaaccent Uring -40 KPX Rcommaaccent V -50 KPX Rcommaaccent W -30 KPX Rcommaaccent Y -50 KPX Rcommaaccent Yacute -50 KPX Rcommaaccent Ydieresis -50 KPX S comma -20 KPX S period -20 KPX Sacute comma -20 KPX Sacute period -20 KPX Scaron comma -20 KPX Scaron period -20 KPX Scedilla comma -20 KPX Scedilla period -20 KPX Scommaaccent comma -20 KPX Scommaaccent period -20 KPX T A -120 KPX T Aacute -120 KPX T Abreve -120 KPX T Acircumflex -120 KPX T Adieresis -120 KPX T Agrave -120 KPX T Amacron -120 KPX T Aogonek -120 KPX T Aring -120 KPX T Atilde -120 KPX T O -40 KPX T Oacute -40 KPX T Ocircumflex -40 KPX T Odieresis -40 KPX T Ograve -40 KPX T Ohungarumlaut -40 KPX T Omacron -40 KPX T Oslash -40 KPX T Otilde -40 KPX T a -120 KPX T aacute -120 KPX T abreve -60 KPX T acircumflex -120 KPX T adieresis -120 KPX T agrave -120 KPX T amacron -60 KPX T aogonek -120 KPX T aring -120 KPX T atilde -60 KPX T colon -20 KPX T comma -120 KPX T e -120 KPX T eacute -120 KPX T ecaron -120 KPX T ecircumflex -120 KPX T edieresis -120 KPX T edotaccent -120 KPX T egrave -60 KPX T emacron -60 KPX T eogonek -120 KPX T hyphen -140 KPX T o -120 KPX T oacute -120 KPX T ocircumflex -120 KPX T odieresis -120 KPX T ograve -120 KPX T ohungarumlaut -120 KPX T omacron -60 KPX T oslash -120 KPX T otilde -60 KPX T period -120 KPX T r -120 KPX T racute -120 KPX T rcaron -120 KPX T rcommaaccent -120 KPX T semicolon -20 KPX T u -120 KPX T uacute -120 KPX T ucircumflex -120 KPX T udieresis -120 KPX T ugrave -120 KPX T uhungarumlaut -120 KPX T umacron -60 KPX T uogonek -120 KPX T uring -120 KPX T w -120 KPX T y -120 KPX T yacute -120 KPX T ydieresis -60 KPX Tcaron A -120 KPX Tcaron Aacute -120 KPX Tcaron Abreve -120 KPX Tcaron Acircumflex -120 KPX Tcaron Adieresis -120 KPX Tcaron Agrave -120 KPX Tcaron Amacron -120 KPX Tcaron Aogonek -120 KPX Tcaron Aring -120 KPX Tcaron Atilde -120 KPX Tcaron O -40 KPX Tcaron Oacute -40 KPX Tcaron Ocircumflex -40 KPX Tcaron Odieresis -40 KPX Tcaron Ograve -40 KPX Tcaron Ohungarumlaut -40 KPX Tcaron Omacron -40 KPX Tcaron Oslash -40 KPX Tcaron Otilde -40 KPX Tcaron a -120 KPX Tcaron aacute -120 KPX Tcaron abreve -60 KPX Tcaron acircumflex -120 KPX Tcaron adieresis -120 KPX Tcaron agrave -120 KPX Tcaron amacron -60 KPX Tcaron aogonek -120 KPX Tcaron aring -120 KPX Tcaron atilde -60 KPX Tcaron colon -20 KPX Tcaron comma -120 KPX Tcaron e -120 KPX Tcaron eacute -120 KPX Tcaron ecaron -120 KPX Tcaron ecircumflex -120 KPX Tcaron edieresis -120 KPX Tcaron edotaccent -120 KPX Tcaron egrave -60 KPX Tcaron emacron -60 KPX Tcaron eogonek -120 KPX Tcaron hyphen -140 KPX Tcaron o -120 KPX Tcaron oacute -120 KPX Tcaron ocircumflex -120 KPX Tcaron odieresis -120 KPX Tcaron ograve -120 KPX Tcaron ohungarumlaut -120 KPX Tcaron omacron -60 KPX Tcaron oslash -120 KPX Tcaron otilde -60 KPX Tcaron period -120 KPX Tcaron r -120 KPX Tcaron racute -120 KPX Tcaron rcaron -120 KPX Tcaron rcommaaccent -120 KPX Tcaron semicolon -20 KPX Tcaron u -120 KPX Tcaron uacute -120 KPX Tcaron ucircumflex -120 KPX Tcaron udieresis -120 KPX Tcaron ugrave -120 KPX Tcaron uhungarumlaut -120 KPX Tcaron umacron -60 KPX Tcaron uogonek -120 KPX Tcaron uring -120 KPX Tcaron w -120 KPX Tcaron y -120 KPX Tcaron yacute -120 KPX Tcaron ydieresis -60 KPX Tcommaaccent A -120 KPX Tcommaaccent Aacute -120 KPX Tcommaaccent Abreve -120 KPX Tcommaaccent Acircumflex -120 KPX Tcommaaccent Adieresis -120 KPX Tcommaaccent Agrave -120 KPX Tcommaaccent Amacron -120 KPX Tcommaaccent Aogonek -120 KPX Tcommaaccent Aring -120 KPX Tcommaaccent Atilde -120 KPX Tcommaaccent O -40 KPX Tcommaaccent Oacute -40 KPX Tcommaaccent Ocircumflex -40 KPX Tcommaaccent Odieresis -40 KPX Tcommaaccent Ograve -40 KPX Tcommaaccent Ohungarumlaut -40 KPX Tcommaaccent Omacron -40 KPX Tcommaaccent Oslash -40 KPX Tcommaaccent Otilde -40 KPX Tcommaaccent a -120 KPX Tcommaaccent aacute -120 KPX Tcommaaccent abreve -60 KPX Tcommaaccent acircumflex -120 KPX Tcommaaccent adieresis -120 KPX Tcommaaccent agrave -120 KPX Tcommaaccent amacron -60 KPX Tcommaaccent aogonek -120 KPX Tcommaaccent aring -120 KPX Tcommaaccent atilde -60 KPX Tcommaaccent colon -20 KPX Tcommaaccent comma -120 KPX Tcommaaccent e -120 KPX Tcommaaccent eacute -120 KPX Tcommaaccent ecaron -120 KPX Tcommaaccent ecircumflex -120 KPX Tcommaaccent edieresis -120 KPX Tcommaaccent edotaccent -120 KPX Tcommaaccent egrave -60 KPX Tcommaaccent emacron -60 KPX Tcommaaccent eogonek -120 KPX Tcommaaccent hyphen -140 KPX Tcommaaccent o -120 KPX Tcommaaccent oacute -120 KPX Tcommaaccent ocircumflex -120 KPX Tcommaaccent odieresis -120 KPX Tcommaaccent ograve -120 KPX Tcommaaccent ohungarumlaut -120 KPX Tcommaaccent omacron -60 KPX Tcommaaccent oslash -120 KPX Tcommaaccent otilde -60 KPX Tcommaaccent period -120 KPX Tcommaaccent r -120 KPX Tcommaaccent racute -120 KPX Tcommaaccent rcaron -120 KPX Tcommaaccent rcommaaccent -120 KPX Tcommaaccent semicolon -20 KPX Tcommaaccent u -120 KPX Tcommaaccent uacute -120 KPX Tcommaaccent ucircumflex -120 KPX Tcommaaccent udieresis -120 KPX Tcommaaccent ugrave -120 KPX Tcommaaccent uhungarumlaut -120 KPX Tcommaaccent umacron -60 KPX Tcommaaccent uogonek -120 KPX Tcommaaccent uring -120 KPX Tcommaaccent w -120 KPX Tcommaaccent y -120 KPX Tcommaaccent yacute -120 KPX Tcommaaccent ydieresis -60 KPX U A -40 KPX U Aacute -40 KPX U Abreve -40 KPX U Acircumflex -40 KPX U Adieresis -40 KPX U Agrave -40 KPX U Amacron -40 KPX U Aogonek -40 KPX U Aring -40 KPX U Atilde -40 KPX U comma -40 KPX U period -40 KPX Uacute A -40 KPX Uacute Aacute -40 KPX Uacute Abreve -40 KPX Uacute Acircumflex -40 KPX Uacute Adieresis -40 KPX Uacute Agrave -40 KPX Uacute Amacron -40 KPX Uacute Aogonek -40 KPX Uacute Aring -40 KPX Uacute Atilde -40 KPX Uacute comma -40 KPX Uacute period -40 KPX Ucircumflex A -40 KPX Ucircumflex Aacute -40 KPX Ucircumflex Abreve -40 KPX Ucircumflex Acircumflex -40 KPX Ucircumflex Adieresis -40 KPX Ucircumflex Agrave -40 KPX Ucircumflex Amacron -40 KPX Ucircumflex Aogonek -40 KPX Ucircumflex Aring -40 KPX Ucircumflex Atilde -40 KPX Ucircumflex comma -40 KPX Ucircumflex period -40 KPX Udieresis A -40 KPX Udieresis Aacute -40 KPX Udieresis Abreve -40 KPX Udieresis Acircumflex -40 KPX Udieresis Adieresis -40 KPX Udieresis Agrave -40 KPX Udieresis Amacron -40 KPX Udieresis Aogonek -40 KPX Udieresis Aring -40 KPX Udieresis Atilde -40 KPX Udieresis comma -40 KPX Udieresis period -40 KPX Ugrave A -40 KPX Ugrave Aacute -40 KPX Ugrave Abreve -40 KPX Ugrave Acircumflex -40 KPX Ugrave Adieresis -40 KPX Ugrave Agrave -40 KPX Ugrave Amacron -40 KPX Ugrave Aogonek -40 KPX Ugrave Aring -40 KPX Ugrave Atilde -40 KPX Ugrave comma -40 KPX Ugrave period -40 KPX Uhungarumlaut A -40 KPX Uhungarumlaut Aacute -40 KPX Uhungarumlaut Abreve -40 KPX Uhungarumlaut Acircumflex -40 KPX Uhungarumlaut Adieresis -40 KPX Uhungarumlaut Agrave -40 KPX Uhungarumlaut Amacron -40 KPX Uhungarumlaut Aogonek -40 KPX Uhungarumlaut Aring -40 KPX Uhungarumlaut Atilde -40 KPX Uhungarumlaut comma -40 KPX Uhungarumlaut period -40 KPX Umacron A -40 KPX Umacron Aacute -40 KPX Umacron Abreve -40 KPX Umacron Acircumflex -40 KPX Umacron Adieresis -40 KPX Umacron Agrave -40 KPX Umacron Amacron -40 KPX Umacron Aogonek -40 KPX Umacron Aring -40 KPX Umacron Atilde -40 KPX Umacron comma -40 KPX Umacron period -40 KPX Uogonek A -40 KPX Uogonek Aacute -40 KPX Uogonek Abreve -40 KPX Uogonek Acircumflex -40 KPX Uogonek Adieresis -40 KPX Uogonek Agrave -40 KPX Uogonek Amacron -40 KPX Uogonek Aogonek -40 KPX Uogonek Aring -40 KPX Uogonek Atilde -40 KPX Uogonek comma -40 KPX Uogonek period -40 KPX Uring A -40 KPX Uring Aacute -40 KPX Uring Abreve -40 KPX Uring Acircumflex -40 KPX Uring Adieresis -40 KPX Uring Agrave -40 KPX Uring Amacron -40 KPX Uring Aogonek -40 KPX Uring Aring -40 KPX Uring Atilde -40 KPX Uring comma -40 KPX Uring period -40 KPX V A -80 KPX V Aacute -80 KPX V Abreve -80 KPX V Acircumflex -80 KPX V Adieresis -80 KPX V Agrave -80 KPX V Amacron -80 KPX V Aogonek -80 KPX V Aring -80 KPX V Atilde -80 KPX V G -40 KPX V Gbreve -40 KPX V Gcommaaccent -40 KPX V O -40 KPX V Oacute -40 KPX V Ocircumflex -40 KPX V Odieresis -40 KPX V Ograve -40 KPX V Ohungarumlaut -40 KPX V Omacron -40 KPX V Oslash -40 KPX V Otilde -40 KPX V a -70 KPX V aacute -70 KPX V abreve -70 KPX V acircumflex -70 KPX V adieresis -70 KPX V agrave -70 KPX V amacron -70 KPX V aogonek -70 KPX V aring -70 KPX V atilde -70 KPX V colon -40 KPX V comma -125 KPX V e -80 KPX V eacute -80 KPX V ecaron -80 KPX V ecircumflex -80 KPX V edieresis -80 KPX V edotaccent -80 KPX V egrave -80 KPX V emacron -80 KPX V eogonek -80 KPX V hyphen -80 KPX V o -80 KPX V oacute -80 KPX V ocircumflex -80 KPX V odieresis -80 KPX V ograve -80 KPX V ohungarumlaut -80 KPX V omacron -80 KPX V oslash -80 KPX V otilde -80 KPX V period -125 KPX V semicolon -40 KPX V u -70 KPX V uacute -70 KPX V ucircumflex -70 KPX V udieresis -70 KPX V ugrave -70 KPX V uhungarumlaut -70 KPX V umacron -70 KPX V uogonek -70 KPX V uring -70 KPX W A -50 KPX W Aacute -50 KPX W Abreve -50 KPX W Acircumflex -50 KPX W Adieresis -50 KPX W Agrave -50 KPX W Amacron -50 KPX W Aogonek -50 KPX W Aring -50 KPX W Atilde -50 KPX W O -20 KPX W Oacute -20 KPX W Ocircumflex -20 KPX W Odieresis -20 KPX W Ograve -20 KPX W Ohungarumlaut -20 KPX W Omacron -20 KPX W Oslash -20 KPX W Otilde -20 KPX W a -40 KPX W aacute -40 KPX W abreve -40 KPX W acircumflex -40 KPX W adieresis -40 KPX W agrave -40 KPX W amacron -40 KPX W aogonek -40 KPX W aring -40 KPX W atilde -40 KPX W comma -80 KPX W e -30 KPX W eacute -30 KPX W ecaron -30 KPX W ecircumflex -30 KPX W edieresis -30 KPX W edotaccent -30 KPX W egrave -30 KPX W emacron -30 KPX W eogonek -30 KPX W hyphen -40 KPX W o -30 KPX W oacute -30 KPX W ocircumflex -30 KPX W odieresis -30 KPX W ograve -30 KPX W ohungarumlaut -30 KPX W omacron -30 KPX W oslash -30 KPX W otilde -30 KPX W period -80 KPX W u -30 KPX W uacute -30 KPX W ucircumflex -30 KPX W udieresis -30 KPX W ugrave -30 KPX W uhungarumlaut -30 KPX W umacron -30 KPX W uogonek -30 KPX W uring -30 KPX W y -20 KPX W yacute -20 KPX W ydieresis -20 KPX Y A -110 KPX Y Aacute -110 KPX Y Abreve -110 KPX Y Acircumflex -110 KPX Y Adieresis -110 KPX Y Agrave -110 KPX Y Amacron -110 KPX Y Aogonek -110 KPX Y Aring -110 KPX Y Atilde -110 KPX Y O -85 KPX Y Oacute -85 KPX Y Ocircumflex -85 KPX Y Odieresis -85 KPX Y Ograve -85 KPX Y Ohungarumlaut -85 KPX Y Omacron -85 KPX Y Oslash -85 KPX Y Otilde -85 KPX Y a -140 KPX Y aacute -140 KPX Y abreve -70 KPX Y acircumflex -140 KPX Y adieresis -140 KPX Y agrave -140 KPX Y amacron -70 KPX Y aogonek -140 KPX Y aring -140 KPX Y atilde -140 KPX Y colon -60 KPX Y comma -140 KPX Y e -140 KPX Y eacute -140 KPX Y ecaron -140 KPX Y ecircumflex -140 KPX Y edieresis -140 KPX Y edotaccent -140 KPX Y egrave -140 KPX Y emacron -70 KPX Y eogonek -140 KPX Y hyphen -140 KPX Y i -20 KPX Y iacute -20 KPX Y iogonek -20 KPX Y o -140 KPX Y oacute -140 KPX Y ocircumflex -140 KPX Y odieresis -140 KPX Y ograve -140 KPX Y ohungarumlaut -140 KPX Y omacron -140 KPX Y oslash -140 KPX Y otilde -140 KPX Y period -140 KPX Y semicolon -60 KPX Y u -110 KPX Y uacute -110 KPX Y ucircumflex -110 KPX Y udieresis -110 KPX Y ugrave -110 KPX Y uhungarumlaut -110 KPX Y umacron -110 KPX Y uogonek -110 KPX Y uring -110 KPX Yacute A -110 KPX Yacute Aacute -110 KPX Yacute Abreve -110 KPX Yacute Acircumflex -110 KPX Yacute Adieresis -110 KPX Yacute Agrave -110 KPX Yacute Amacron -110 KPX Yacute Aogonek -110 KPX Yacute Aring -110 KPX Yacute Atilde -110 KPX Yacute O -85 KPX Yacute Oacute -85 KPX Yacute Ocircumflex -85 KPX Yacute Odieresis -85 KPX Yacute Ograve -85 KPX Yacute Ohungarumlaut -85 KPX Yacute Omacron -85 KPX Yacute Oslash -85 KPX Yacute Otilde -85 KPX Yacute a -140 KPX Yacute aacute -140 KPX Yacute abreve -70 KPX Yacute acircumflex -140 KPX Yacute adieresis -140 KPX Yacute agrave -140 KPX Yacute amacron -70 KPX Yacute aogonek -140 KPX Yacute aring -140 KPX Yacute atilde -70 KPX Yacute colon -60 KPX Yacute comma -140 KPX Yacute e -140 KPX Yacute eacute -140 KPX Yacute ecaron -140 KPX Yacute ecircumflex -140 KPX Yacute edieresis -140 KPX Yacute edotaccent -140 KPX Yacute egrave -140 KPX Yacute emacron -70 KPX Yacute eogonek -140 KPX Yacute hyphen -140 KPX Yacute i -20 KPX Yacute iacute -20 KPX Yacute iogonek -20 KPX Yacute o -140 KPX Yacute oacute -140 KPX Yacute ocircumflex -140 KPX Yacute odieresis -140 KPX Yacute ograve -140 KPX Yacute ohungarumlaut -140 KPX Yacute omacron -70 KPX Yacute oslash -140 KPX Yacute otilde -140 KPX Yacute period -140 KPX Yacute semicolon -60 KPX Yacute u -110 KPX Yacute uacute -110 KPX Yacute ucircumflex -110 KPX Yacute udieresis -110 KPX Yacute ugrave -110 KPX Yacute uhungarumlaut -110 KPX Yacute umacron -110 KPX Yacute uogonek -110 KPX Yacute uring -110 KPX Ydieresis A -110 KPX Ydieresis Aacute -110 KPX Ydieresis Abreve -110 KPX Ydieresis Acircumflex -110 KPX Ydieresis Adieresis -110 KPX Ydieresis Agrave -110 KPX Ydieresis Amacron -110 KPX Ydieresis Aogonek -110 KPX Ydieresis Aring -110 KPX Ydieresis Atilde -110 KPX Ydieresis O -85 KPX Ydieresis Oacute -85 KPX Ydieresis Ocircumflex -85 KPX Ydieresis Odieresis -85 KPX Ydieresis Ograve -85 KPX Ydieresis Ohungarumlaut -85 KPX Ydieresis Omacron -85 KPX Ydieresis Oslash -85 KPX Ydieresis Otilde -85 KPX Ydieresis a -140 KPX Ydieresis aacute -140 KPX Ydieresis abreve -70 KPX Ydieresis acircumflex -140 KPX Ydieresis adieresis -140 KPX Ydieresis agrave -140 KPX Ydieresis amacron -70 KPX Ydieresis aogonek -140 KPX Ydieresis aring -140 KPX Ydieresis atilde -70 KPX Ydieresis colon -60 KPX Ydieresis comma -140 KPX Ydieresis e -140 KPX Ydieresis eacute -140 KPX Ydieresis ecaron -140 KPX Ydieresis ecircumflex -140 KPX Ydieresis edieresis -140 KPX Ydieresis edotaccent -140 KPX Ydieresis egrave -140 KPX Ydieresis emacron -70 KPX Ydieresis eogonek -140 KPX Ydieresis hyphen -140 KPX Ydieresis i -20 KPX Ydieresis iacute -20 KPX Ydieresis iogonek -20 KPX Ydieresis o -140 KPX Ydieresis oacute -140 KPX Ydieresis ocircumflex -140 KPX Ydieresis odieresis -140 KPX Ydieresis ograve -140 KPX Ydieresis ohungarumlaut -140 KPX Ydieresis omacron -140 KPX Ydieresis oslash -140 KPX Ydieresis otilde -140 KPX Ydieresis period -140 KPX Ydieresis semicolon -60 KPX Ydieresis u -110 KPX Ydieresis uacute -110 KPX Ydieresis ucircumflex -110 KPX Ydieresis udieresis -110 KPX Ydieresis ugrave -110 KPX Ydieresis uhungarumlaut -110 KPX Ydieresis umacron -110 KPX Ydieresis uogonek -110 KPX Ydieresis uring -110 KPX a v -20 KPX a w -20 KPX a y -30 KPX a yacute -30 KPX a ydieresis -30 KPX aacute v -20 KPX aacute w -20 KPX aacute y -30 KPX aacute yacute -30 KPX aacute ydieresis -30 KPX abreve v -20 KPX abreve w -20 KPX abreve y -30 KPX abreve yacute -30 KPX abreve ydieresis -30 KPX acircumflex v -20 KPX acircumflex w -20 KPX acircumflex y -30 KPX acircumflex yacute -30 KPX acircumflex ydieresis -30 KPX adieresis v -20 KPX adieresis w -20 KPX adieresis y -30 KPX adieresis yacute -30 KPX adieresis ydieresis -30 KPX agrave v -20 KPX agrave w -20 KPX agrave y -30 KPX agrave yacute -30 KPX agrave ydieresis -30 KPX amacron v -20 KPX amacron w -20 KPX amacron y -30 KPX amacron yacute -30 KPX amacron ydieresis -30 KPX aogonek v -20 KPX aogonek w -20 KPX aogonek y -30 KPX aogonek yacute -30 KPX aogonek ydieresis -30 KPX aring v -20 KPX aring w -20 KPX aring y -30 KPX aring yacute -30 KPX aring ydieresis -30 KPX atilde v -20 KPX atilde w -20 KPX atilde y -30 KPX atilde yacute -30 KPX atilde ydieresis -30 KPX b b -10 KPX b comma -40 KPX b l -20 KPX b lacute -20 KPX b lcommaaccent -20 KPX b lslash -20 KPX b period -40 KPX b u -20 KPX b uacute -20 KPX b ucircumflex -20 KPX b udieresis -20 KPX b ugrave -20 KPX b uhungarumlaut -20 KPX b umacron -20 KPX b uogonek -20 KPX b uring -20 KPX b v -20 KPX b y -20 KPX b yacute -20 KPX b ydieresis -20 KPX c comma -15 KPX c k -20 KPX c kcommaaccent -20 KPX cacute comma -15 KPX cacute k -20 KPX cacute kcommaaccent -20 KPX ccaron comma -15 KPX ccaron k -20 KPX ccaron kcommaaccent -20 KPX ccedilla comma -15 KPX ccedilla k -20 KPX ccedilla kcommaaccent -20 KPX colon space -50 KPX comma quotedblright -100 KPX comma quoteright -100 KPX e comma -15 KPX e period -15 KPX e v -30 KPX e w -20 KPX e x -30 KPX e y -20 KPX e yacute -20 KPX e ydieresis -20 KPX eacute comma -15 KPX eacute period -15 KPX eacute v -30 KPX eacute w -20 KPX eacute x -30 KPX eacute y -20 KPX eacute yacute -20 KPX eacute ydieresis -20 KPX ecaron comma -15 KPX ecaron period -15 KPX ecaron v -30 KPX ecaron w -20 KPX ecaron x -30 KPX ecaron y -20 KPX ecaron yacute -20 KPX ecaron ydieresis -20 KPX ecircumflex comma -15 KPX ecircumflex period -15 KPX ecircumflex v -30 KPX ecircumflex w -20 KPX ecircumflex x -30 KPX ecircumflex y -20 KPX ecircumflex yacute -20 KPX ecircumflex ydieresis -20 KPX edieresis comma -15 KPX edieresis period -15 KPX edieresis v -30 KPX edieresis w -20 KPX edieresis x -30 KPX edieresis y -20 KPX edieresis yacute -20 KPX edieresis ydieresis -20 KPX edotaccent comma -15 KPX edotaccent period -15 KPX edotaccent v -30 KPX edotaccent w -20 KPX edotaccent x -30 KPX edotaccent y -20 KPX edotaccent yacute -20 KPX edotaccent ydieresis -20 KPX egrave comma -15 KPX egrave period -15 KPX egrave v -30 KPX egrave w -20 KPX egrave x -30 KPX egrave y -20 KPX egrave yacute -20 KPX egrave ydieresis -20 KPX emacron comma -15 KPX emacron period -15 KPX emacron v -30 KPX emacron w -20 KPX emacron x -30 KPX emacron y -20 KPX emacron yacute -20 KPX emacron ydieresis -20 KPX eogonek comma -15 KPX eogonek period -15 KPX eogonek v -30 KPX eogonek w -20 KPX eogonek x -30 KPX eogonek y -20 KPX eogonek yacute -20 KPX eogonek ydieresis -20 KPX f a -30 KPX f aacute -30 KPX f abreve -30 KPX f acircumflex -30 KPX f adieresis -30 KPX f agrave -30 KPX f amacron -30 KPX f aogonek -30 KPX f aring -30 KPX f atilde -30 KPX f comma -30 KPX f dotlessi -28 KPX f e -30 KPX f eacute -30 KPX f ecaron -30 KPX f ecircumflex -30 KPX f edieresis -30 KPX f edotaccent -30 KPX f egrave -30 KPX f emacron -30 KPX f eogonek -30 KPX f o -30 KPX f oacute -30 KPX f ocircumflex -30 KPX f odieresis -30 KPX f ograve -30 KPX f ohungarumlaut -30 KPX f omacron -30 KPX f oslash -30 KPX f otilde -30 KPX f period -30 KPX f quotedblright 60 KPX f quoteright 50 KPX g r -10 KPX g racute -10 KPX g rcaron -10 KPX g rcommaaccent -10 KPX gbreve r -10 KPX gbreve racute -10 KPX gbreve rcaron -10 KPX gbreve rcommaaccent -10 KPX gcommaaccent r -10 KPX gcommaaccent racute -10 KPX gcommaaccent rcaron -10 KPX gcommaaccent rcommaaccent -10 KPX h y -30 KPX h yacute -30 KPX h ydieresis -30 KPX k e -20 KPX k eacute -20 KPX k ecaron -20 KPX k ecircumflex -20 KPX k edieresis -20 KPX k edotaccent -20 KPX k egrave -20 KPX k emacron -20 KPX k eogonek -20 KPX k o -20 KPX k oacute -20 KPX k ocircumflex -20 KPX k odieresis -20 KPX k ograve -20 KPX k ohungarumlaut -20 KPX k omacron -20 KPX k oslash -20 KPX k otilde -20 KPX kcommaaccent e -20 KPX kcommaaccent eacute -20 KPX kcommaaccent ecaron -20 KPX kcommaaccent ecircumflex -20 KPX kcommaaccent edieresis -20 KPX kcommaaccent edotaccent -20 KPX kcommaaccent egrave -20 KPX kcommaaccent emacron -20 KPX kcommaaccent eogonek -20 KPX kcommaaccent o -20 KPX kcommaaccent oacute -20 KPX kcommaaccent ocircumflex -20 KPX kcommaaccent odieresis -20 KPX kcommaaccent ograve -20 KPX kcommaaccent ohungarumlaut -20 KPX kcommaaccent omacron -20 KPX kcommaaccent oslash -20 KPX kcommaaccent otilde -20 KPX m u -10 KPX m uacute -10 KPX m ucircumflex -10 KPX m udieresis -10 KPX m ugrave -10 KPX m uhungarumlaut -10 KPX m umacron -10 KPX m uogonek -10 KPX m uring -10 KPX m y -15 KPX m yacute -15 KPX m ydieresis -15 KPX n u -10 KPX n uacute -10 KPX n ucircumflex -10 KPX n udieresis -10 KPX n ugrave -10 KPX n uhungarumlaut -10 KPX n umacron -10 KPX n uogonek -10 KPX n uring -10 KPX n v -20 KPX n y -15 KPX n yacute -15 KPX n ydieresis -15 KPX nacute u -10 KPX nacute uacute -10 KPX nacute ucircumflex -10 KPX nacute udieresis -10 KPX nacute ugrave -10 KPX nacute uhungarumlaut -10 KPX nacute umacron -10 KPX nacute uogonek -10 KPX nacute uring -10 KPX nacute v -20 KPX nacute y -15 KPX nacute yacute -15 KPX nacute ydieresis -15 KPX ncaron u -10 KPX ncaron uacute -10 KPX ncaron ucircumflex -10 KPX ncaron udieresis -10 KPX ncaron ugrave -10 KPX ncaron uhungarumlaut -10 KPX ncaron umacron -10 KPX ncaron uogonek -10 KPX ncaron uring -10 KPX ncaron v -20 KPX ncaron y -15 KPX ncaron yacute -15 KPX ncaron ydieresis -15 KPX ncommaaccent u -10 KPX ncommaaccent uacute -10 KPX ncommaaccent ucircumflex -10 KPX ncommaaccent udieresis -10 KPX ncommaaccent ugrave -10 KPX ncommaaccent uhungarumlaut -10 KPX ncommaaccent umacron -10 KPX ncommaaccent uogonek -10 KPX ncommaaccent uring -10 KPX ncommaaccent v -20 KPX ncommaaccent y -15 KPX ncommaaccent yacute -15 KPX ncommaaccent ydieresis -15 KPX ntilde u -10 KPX ntilde uacute -10 KPX ntilde ucircumflex -10 KPX ntilde udieresis -10 KPX ntilde ugrave -10 KPX ntilde uhungarumlaut -10 KPX ntilde umacron -10 KPX ntilde uogonek -10 KPX ntilde uring -10 KPX ntilde v -20 KPX ntilde y -15 KPX ntilde yacute -15 KPX ntilde ydieresis -15 KPX o comma -40 KPX o period -40 KPX o v -15 KPX o w -15 KPX o x -30 KPX o y -30 KPX o yacute -30 KPX o ydieresis -30 KPX oacute comma -40 KPX oacute period -40 KPX oacute v -15 KPX oacute w -15 KPX oacute x -30 KPX oacute y -30 KPX oacute yacute -30 KPX oacute ydieresis -30 KPX ocircumflex comma -40 KPX ocircumflex period -40 KPX ocircumflex v -15 KPX ocircumflex w -15 KPX ocircumflex x -30 KPX ocircumflex y -30 KPX ocircumflex yacute -30 KPX ocircumflex ydieresis -30 KPX odieresis comma -40 KPX odieresis period -40 KPX odieresis v -15 KPX odieresis w -15 KPX odieresis x -30 KPX odieresis y -30 KPX odieresis yacute -30 KPX odieresis ydieresis -30 KPX ograve comma -40 KPX ograve period -40 KPX ograve v -15 KPX ograve w -15 KPX ograve x -30 KPX ograve y -30 KPX ograve yacute -30 KPX ograve ydieresis -30 KPX ohungarumlaut comma -40 KPX ohungarumlaut period -40 KPX ohungarumlaut v -15 KPX ohungarumlaut w -15 KPX ohungarumlaut x -30 KPX ohungarumlaut y -30 KPX ohungarumlaut yacute -30 KPX ohungarumlaut ydieresis -30 KPX omacron comma -40 KPX omacron period -40 KPX omacron v -15 KPX omacron w -15 KPX omacron x -30 KPX omacron y -30 KPX omacron yacute -30 KPX omacron ydieresis -30 KPX oslash a -55 KPX oslash aacute -55 KPX oslash abreve -55 KPX oslash acircumflex -55 KPX oslash adieresis -55 KPX oslash agrave -55 KPX oslash amacron -55 KPX oslash aogonek -55 KPX oslash aring -55 KPX oslash atilde -55 KPX oslash b -55 KPX oslash c -55 KPX oslash cacute -55 KPX oslash ccaron -55 KPX oslash ccedilla -55 KPX oslash comma -95 KPX oslash d -55 KPX oslash dcroat -55 KPX oslash e -55 KPX oslash eacute -55 KPX oslash ecaron -55 KPX oslash ecircumflex -55 KPX oslash edieresis -55 KPX oslash edotaccent -55 KPX oslash egrave -55 KPX oslash emacron -55 KPX oslash eogonek -55 KPX oslash f -55 KPX oslash g -55 KPX oslash gbreve -55 KPX oslash gcommaaccent -55 KPX oslash h -55 KPX oslash i -55 KPX oslash iacute -55 KPX oslash icircumflex -55 KPX oslash idieresis -55 KPX oslash igrave -55 KPX oslash imacron -55 KPX oslash iogonek -55 KPX oslash j -55 KPX oslash k -55 KPX oslash kcommaaccent -55 KPX oslash l -55 KPX oslash lacute -55 KPX oslash lcommaaccent -55 KPX oslash lslash -55 KPX oslash m -55 KPX oslash n -55 KPX oslash nacute -55 KPX oslash ncaron -55 KPX oslash ncommaaccent -55 KPX oslash ntilde -55 KPX oslash o -55 KPX oslash oacute -55 KPX oslash ocircumflex -55 KPX oslash odieresis -55 KPX oslash ograve -55 KPX oslash ohungarumlaut -55 KPX oslash omacron -55 KPX oslash oslash -55 KPX oslash otilde -55 KPX oslash p -55 KPX oslash period -95 KPX oslash q -55 KPX oslash r -55 KPX oslash racute -55 KPX oslash rcaron -55 KPX oslash rcommaaccent -55 KPX oslash s -55 KPX oslash sacute -55 KPX oslash scaron -55 KPX oslash scedilla -55 KPX oslash scommaaccent -55 KPX oslash t -55 KPX oslash tcommaaccent -55 KPX oslash u -55 KPX oslash uacute -55 KPX oslash ucircumflex -55 KPX oslash udieresis -55 KPX oslash ugrave -55 KPX oslash uhungarumlaut -55 KPX oslash umacron -55 KPX oslash uogonek -55 KPX oslash uring -55 KPX oslash v -70 KPX oslash w -70 KPX oslash x -85 KPX oslash y -70 KPX oslash yacute -70 KPX oslash ydieresis -70 KPX oslash z -55 KPX oslash zacute -55 KPX oslash zcaron -55 KPX oslash zdotaccent -55 KPX otilde comma -40 KPX otilde period -40 KPX otilde v -15 KPX otilde w -15 KPX otilde x -30 KPX otilde y -30 KPX otilde yacute -30 KPX otilde ydieresis -30 KPX p comma -35 KPX p period -35 KPX p y -30 KPX p yacute -30 KPX p ydieresis -30 KPX period quotedblright -100 KPX period quoteright -100 KPX period space -60 KPX quotedblright space -40 KPX quoteleft quoteleft -57 KPX quoteright d -50 KPX quoteright dcroat -50 KPX quoteright quoteright -57 KPX quoteright r -50 KPX quoteright racute -50 KPX quoteright rcaron -50 KPX quoteright rcommaaccent -50 KPX quoteright s -50 KPX quoteright sacute -50 KPX quoteright scaron -50 KPX quoteright scedilla -50 KPX quoteright scommaaccent -50 KPX quoteright space -70 KPX r a -10 KPX r aacute -10 KPX r abreve -10 KPX r acircumflex -10 KPX r adieresis -10 KPX r agrave -10 KPX r amacron -10 KPX r aogonek -10 KPX r aring -10 KPX r atilde -10 KPX r colon 30 KPX r comma -50 KPX r i 15 KPX r iacute 15 KPX r icircumflex 15 KPX r idieresis 15 KPX r igrave 15 KPX r imacron 15 KPX r iogonek 15 KPX r k 15 KPX r kcommaaccent 15 KPX r l 15 KPX r lacute 15 KPX r lcommaaccent 15 KPX r lslash 15 KPX r m 25 KPX r n 25 KPX r nacute 25 KPX r ncaron 25 KPX r ncommaaccent 25 KPX r ntilde 25 KPX r p 30 KPX r period -50 KPX r semicolon 30 KPX r t 40 KPX r tcommaaccent 40 KPX r u 15 KPX r uacute 15 KPX r ucircumflex 15 KPX r udieresis 15 KPX r ugrave 15 KPX r uhungarumlaut 15 KPX r umacron 15 KPX r uogonek 15 KPX r uring 15 KPX r v 30 KPX r y 30 KPX r yacute 30 KPX r ydieresis 30 KPX racute a -10 KPX racute aacute -10 KPX racute abreve -10 KPX racute acircumflex -10 KPX racute adieresis -10 KPX racute agrave -10 KPX racute amacron -10 KPX racute aogonek -10 KPX racute aring -10 KPX racute atilde -10 KPX racute colon 30 KPX racute comma -50 KPX racute i 15 KPX racute iacute 15 KPX racute icircumflex 15 KPX racute idieresis 15 KPX racute igrave 15 KPX racute imacron 15 KPX racute iogonek 15 KPX racute k 15 KPX racute kcommaaccent 15 KPX racute l 15 KPX racute lacute 15 KPX racute lcommaaccent 15 KPX racute lslash 15 KPX racute m 25 KPX racute n 25 KPX racute nacute 25 KPX racute ncaron 25 KPX racute ncommaaccent 25 KPX racute ntilde 25 KPX racute p 30 KPX racute period -50 KPX racute semicolon 30 KPX racute t 40 KPX racute tcommaaccent 40 KPX racute u 15 KPX racute uacute 15 KPX racute ucircumflex 15 KPX racute udieresis 15 KPX racute ugrave 15 KPX racute uhungarumlaut 15 KPX racute umacron 15 KPX racute uogonek 15 KPX racute uring 15 KPX racute v 30 KPX racute y 30 KPX racute yacute 30 KPX racute ydieresis 30 KPX rcaron a -10 KPX rcaron aacute -10 KPX rcaron abreve -10 KPX rcaron acircumflex -10 KPX rcaron adieresis -10 KPX rcaron agrave -10 KPX rcaron amacron -10 KPX rcaron aogonek -10 KPX rcaron aring -10 KPX rcaron atilde -10 KPX rcaron colon 30 KPX rcaron comma -50 KPX rcaron i 15 KPX rcaron iacute 15 KPX rcaron icircumflex 15 KPX rcaron idieresis 15 KPX rcaron igrave 15 KPX rcaron imacron 15 KPX rcaron iogonek 15 KPX rcaron k 15 KPX rcaron kcommaaccent 15 KPX rcaron l 15 KPX rcaron lacute 15 KPX rcaron lcommaaccent 15 KPX rcaron lslash 15 KPX rcaron m 25 KPX rcaron n 25 KPX rcaron nacute 25 KPX rcaron ncaron 25 KPX rcaron ncommaaccent 25 KPX rcaron ntilde 25 KPX rcaron p 30 KPX rcaron period -50 KPX rcaron semicolon 30 KPX rcaron t 40 KPX rcaron tcommaaccent 40 KPX rcaron u 15 KPX rcaron uacute 15 KPX rcaron ucircumflex 15 KPX rcaron udieresis 15 KPX rcaron ugrave 15 KPX rcaron uhungarumlaut 15 KPX rcaron umacron 15 KPX rcaron uogonek 15 KPX rcaron uring 15 KPX rcaron v 30 KPX rcaron y 30 KPX rcaron yacute 30 KPX rcaron ydieresis 30 KPX rcommaaccent a -10 KPX rcommaaccent aacute -10 KPX rcommaaccent abreve -10 KPX rcommaaccent acircumflex -10 KPX rcommaaccent adieresis -10 KPX rcommaaccent agrave -10 KPX rcommaaccent amacron -10 KPX rcommaaccent aogonek -10 KPX rcommaaccent aring -10 KPX rcommaaccent atilde -10 KPX rcommaaccent colon 30 KPX rcommaaccent comma -50 KPX rcommaaccent i 15 KPX rcommaaccent iacute 15 KPX rcommaaccent icircumflex 15 KPX rcommaaccent idieresis 15 KPX rcommaaccent igrave 15 KPX rcommaaccent imacron 15 KPX rcommaaccent iogonek 15 KPX rcommaaccent k 15 KPX rcommaaccent kcommaaccent 15 KPX rcommaaccent l 15 KPX rcommaaccent lacute 15 KPX rcommaaccent lcommaaccent 15 KPX rcommaaccent lslash 15 KPX rcommaaccent m 25 KPX rcommaaccent n 25 KPX rcommaaccent nacute 25 KPX rcommaaccent ncaron 25 KPX rcommaaccent ncommaaccent 25 KPX rcommaaccent ntilde 25 KPX rcommaaccent p 30 KPX rcommaaccent period -50 KPX rcommaaccent semicolon 30 KPX rcommaaccent t 40 KPX rcommaaccent tcommaaccent 40 KPX rcommaaccent u 15 KPX rcommaaccent uacute 15 KPX rcommaaccent ucircumflex 15 KPX rcommaaccent udieresis 15 KPX rcommaaccent ugrave 15 KPX rcommaaccent uhungarumlaut 15 KPX rcommaaccent umacron 15 KPX rcommaaccent uogonek 15 KPX rcommaaccent uring 15 KPX rcommaaccent v 30 KPX rcommaaccent y 30 KPX rcommaaccent yacute 30 KPX rcommaaccent ydieresis 30 KPX s comma -15 KPX s period -15 KPX s w -30 KPX sacute comma -15 KPX sacute period -15 KPX sacute w -30 KPX scaron comma -15 KPX scaron period -15 KPX scaron w -30 KPX scedilla comma -15 KPX scedilla period -15 KPX scedilla w -30 KPX scommaaccent comma -15 KPX scommaaccent period -15 KPX scommaaccent w -30 KPX semicolon space -50 KPX space T -50 KPX space Tcaron -50 KPX space Tcommaaccent -50 KPX space V -50 KPX space W -40 KPX space Y -90 KPX space Yacute -90 KPX space Ydieresis -90 KPX space quotedblleft -30 KPX space quoteleft -60 KPX v a -25 KPX v aacute -25 KPX v abreve -25 KPX v acircumflex -25 KPX v adieresis -25 KPX v agrave -25 KPX v amacron -25 KPX v aogonek -25 KPX v aring -25 KPX v atilde -25 KPX v comma -80 KPX v e -25 KPX v eacute -25 KPX v ecaron -25 KPX v ecircumflex -25 KPX v edieresis -25 KPX v edotaccent -25 KPX v egrave -25 KPX v emacron -25 KPX v eogonek -25 KPX v o -25 KPX v oacute -25 KPX v ocircumflex -25 KPX v odieresis -25 KPX v ograve -25 KPX v ohungarumlaut -25 KPX v omacron -25 KPX v oslash -25 KPX v otilde -25 KPX v period -80 KPX w a -15 KPX w aacute -15 KPX w abreve -15 KPX w acircumflex -15 KPX w adieresis -15 KPX w agrave -15 KPX w amacron -15 KPX w aogonek -15 KPX w aring -15 KPX w atilde -15 KPX w comma -60 KPX w e -10 KPX w eacute -10 KPX w ecaron -10 KPX w ecircumflex -10 KPX w edieresis -10 KPX w edotaccent -10 KPX w egrave -10 KPX w emacron -10 KPX w eogonek -10 KPX w o -10 KPX w oacute -10 KPX w ocircumflex -10 KPX w odieresis -10 KPX w ograve -10 KPX w ohungarumlaut -10 KPX w omacron -10 KPX w oslash -10 KPX w otilde -10 KPX w period -60 KPX x e -30 KPX x eacute -30 KPX x ecaron -30 KPX x ecircumflex -30 KPX x edieresis -30 KPX x edotaccent -30 KPX x egrave -30 KPX x emacron -30 KPX x eogonek -30 KPX y a -20 KPX y aacute -20 KPX y abreve -20 KPX y acircumflex -20 KPX y adieresis -20 KPX y agrave -20 KPX y amacron -20 KPX y aogonek -20 KPX y aring -20 KPX y atilde -20 KPX y comma -100 KPX y e -20 KPX y eacute -20 KPX y ecaron -20 KPX y ecircumflex -20 KPX y edieresis -20 KPX y edotaccent -20 KPX y egrave -20 KPX y emacron -20 KPX y eogonek -20 KPX y o -20 KPX y oacute -20 KPX y ocircumflex -20 KPX y odieresis -20 KPX y ograve -20 KPX y ohungarumlaut -20 KPX y omacron -20 KPX y oslash -20 KPX y otilde -20 KPX y period -100 KPX yacute a -20 KPX yacute aacute -20 KPX yacute abreve -20 KPX yacute acircumflex -20 KPX yacute adieresis -20 KPX yacute agrave -20 KPX yacute amacron -20 KPX yacute aogonek -20 KPX yacute aring -20 KPX yacute atilde -20 KPX yacute comma -100 KPX yacute e -20 KPX yacute eacute -20 KPX yacute ecaron -20 KPX yacute ecircumflex -20 KPX yacute edieresis -20 KPX yacute edotaccent -20 KPX yacute egrave -20 KPX yacute emacron -20 KPX yacute eogonek -20 KPX yacute o -20 KPX yacute oacute -20 KPX yacute ocircumflex -20 KPX yacute odieresis -20 KPX yacute ograve -20 KPX yacute ohungarumlaut -20 KPX yacute omacron -20 KPX yacute oslash -20 KPX yacute otilde -20 KPX yacute period -100 KPX ydieresis a -20 KPX ydieresis aacute -20 KPX ydieresis abreve -20 KPX ydieresis acircumflex -20 KPX ydieresis adieresis -20 KPX ydieresis agrave -20 KPX ydieresis amacron -20 KPX ydieresis aogonek -20 KPX ydieresis aring -20 KPX ydieresis atilde -20 KPX ydieresis comma -100 KPX ydieresis e -20 KPX ydieresis eacute -20 KPX ydieresis ecaron -20 KPX ydieresis ecircumflex -20 KPX ydieresis edieresis -20 KPX ydieresis edotaccent -20 KPX ydieresis egrave -20 KPX ydieresis emacron -20 KPX ydieresis eogonek -20 KPX ydieresis o -20 KPX ydieresis oacute -20 KPX ydieresis ocircumflex -20 KPX ydieresis odieresis -20 KPX ydieresis ograve -20 KPX ydieresis ohungarumlaut -20 KPX ydieresis omacron -20 KPX ydieresis oslash -20 KPX ydieresis otilde -20 KPX ydieresis period -100 KPX z e -15 KPX z eacute -15 KPX z ecaron -15 KPX z ecircumflex -15 KPX z edieresis -15 KPX z edotaccent -15 KPX z egrave -15 KPX z emacron -15 KPX z eogonek -15 KPX z o -15 KPX z oacute -15 KPX z ocircumflex -15 KPX z odieresis -15 KPX z ograve -15 KPX z ohungarumlaut -15 KPX z omacron -15 KPX z oslash -15 KPX z otilde -15 KPX zacute e -15 KPX zacute eacute -15 KPX zacute ecaron -15 KPX zacute ecircumflex -15 KPX zacute edieresis -15 KPX zacute edotaccent -15 KPX zacute egrave -15 KPX zacute emacron -15 KPX zacute eogonek -15 KPX zacute o -15 KPX zacute oacute -15 KPX zacute ocircumflex -15 KPX zacute odieresis -15 KPX zacute ograve -15 KPX zacute ohungarumlaut -15 KPX zacute omacron -15 KPX zacute oslash -15 KPX zacute otilde -15 KPX zcaron e -15 KPX zcaron eacute -15 KPX zcaron ecaron -15 KPX zcaron ecircumflex -15 KPX zcaron edieresis -15 KPX zcaron edotaccent -15 KPX zcaron egrave -15 KPX zcaron emacron -15 KPX zcaron eogonek -15 KPX zcaron o -15 KPX zcaron oacute -15 KPX zcaron ocircumflex -15 KPX zcaron odieresis -15 KPX zcaron ograve -15 KPX zcaron ohungarumlaut -15 KPX zcaron omacron -15 KPX zcaron oslash -15 KPX zcaron otilde -15 KPX zdotaccent e -15 KPX zdotaccent eacute -15 KPX zdotaccent ecaron -15 KPX zdotaccent ecircumflex -15 KPX zdotaccent edieresis -15 KPX zdotaccent edotaccent -15 KPX zdotaccent egrave -15 KPX zdotaccent emacron -15 KPX zdotaccent eogonek -15 KPX zdotaccent o -15 KPX zdotaccent oacute -15 KPX zdotaccent ocircumflex -15 KPX zdotaccent odieresis -15 KPX zdotaccent ograve -15 KPX zdotaccent ohungarumlaut -15 KPX zdotaccent omacron -15 KPX zdotaccent oslash -15 KPX zdotaccent otilde -15 EndKernPairs EndKernData EndFontMetrics gle-graphics-4.2.4c/src/fonts/Adobe-Core35_AFMs-314/Helvetica-BoldOblique.afm0000664000000000000000000020726511405446017024702 0ustar rootrootStartFontMetrics 4.1 Comment Copyright (c) 1985, 1987, 1989, 1990, 1997 Adobe Systems Incorporated. All Rights Reserved. Comment Creation Date: Thu May 1 12:45:12 1997 Comment UniqueID 43053 Comment VMusage 14482 68586 FontName Helvetica-BoldOblique FullName Helvetica Bold Oblique FamilyName Helvetica Weight Bold ItalicAngle -12 IsFixedPitch false FontBBox -174 -228 1114 962 UnderlinePosition -100 UnderlineThickness 50 Version 002.000 Notice Copyright (c) 1985, 1987, 1989, 1990, 1997 Adobe Systems Incorporated. All Rights Reserved.Helvetica is a trademark of Linotype-Hell AG and/or its subsidiaries. EncodingScheme AdobeStandardEncoding CapHeight 718 XHeight 532 Ascender 718 Descender -207 StdHW 118 StdVW 140 StartCharMetrics 314 C 32 ; WX 278 ; N space ; B 0 0 0 0 ; C 33 ; WX 333 ; N exclam ; B 94 0 397 718 ; C 34 ; WX 474 ; N quotedbl ; B 193 447 529 718 ; C 35 ; WX 556 ; N numbersign ; B 60 0 644 698 ; C 36 ; WX 556 ; N dollar ; B 67 -115 622 775 ; C 37 ; WX 889 ; N percent ; B 136 -19 901 710 ; C 38 ; WX 722 ; N ampersand ; B 89 -19 732 718 ; C 39 ; WX 278 ; N quoteright ; B 167 445 362 718 ; C 40 ; WX 333 ; N parenleft ; B 76 -208 470 734 ; C 41 ; WX 333 ; N parenright ; B -25 -208 369 734 ; C 42 ; WX 389 ; N asterisk ; B 146 387 481 718 ; C 43 ; WX 584 ; N plus ; B 82 0 610 506 ; C 44 ; WX 278 ; N comma ; B 28 -168 245 146 ; C 45 ; WX 333 ; N hyphen ; B 73 215 379 345 ; C 46 ; WX 278 ; N period ; B 64 0 245 146 ; C 47 ; WX 278 ; N slash ; B -37 -19 468 737 ; C 48 ; WX 556 ; N zero ; B 86 -19 617 710 ; C 49 ; WX 556 ; N one ; B 173 0 529 710 ; C 50 ; WX 556 ; N two ; B 26 0 619 710 ; C 51 ; WX 556 ; N three ; B 65 -19 608 710 ; C 52 ; WX 556 ; N four ; B 60 0 598 710 ; C 53 ; WX 556 ; N five ; B 64 -19 636 698 ; C 54 ; WX 556 ; N six ; B 85 -19 619 710 ; C 55 ; WX 556 ; N seven ; B 125 0 676 698 ; C 56 ; WX 556 ; N eight ; B 69 -19 616 710 ; C 57 ; WX 556 ; N nine ; B 78 -19 615 710 ; C 58 ; WX 333 ; N colon ; B 92 0 351 512 ; C 59 ; WX 333 ; N semicolon ; B 56 -168 351 512 ; C 60 ; WX 584 ; N less ; B 82 -8 655 514 ; C 61 ; WX 584 ; N equal ; B 58 87 633 419 ; C 62 ; WX 584 ; N greater ; B 36 -8 609 514 ; C 63 ; WX 611 ; N question ; B 165 0 671 727 ; C 64 ; WX 975 ; N at ; B 186 -19 954 737 ; C 65 ; WX 722 ; N A ; B 20 0 702 718 ; C 66 ; WX 722 ; N B ; B 76 0 764 718 ; C 67 ; WX 722 ; N C ; B 107 -19 789 737 ; C 68 ; WX 722 ; N D ; B 76 0 777 718 ; C 69 ; WX 667 ; N E ; B 76 0 757 718 ; C 70 ; WX 611 ; N F ; B 76 0 740 718 ; C 71 ; WX 778 ; N G ; B 108 -19 817 737 ; C 72 ; WX 722 ; N H ; B 71 0 804 718 ; C 73 ; WX 278 ; N I ; B 64 0 367 718 ; C 74 ; WX 556 ; N J ; B 60 -18 637 718 ; C 75 ; WX 722 ; N K ; B 87 0 858 718 ; C 76 ; WX 611 ; N L ; B 76 0 611 718 ; C 77 ; WX 833 ; N M ; B 69 0 918 718 ; C 78 ; WX 722 ; N N ; B 69 0 807 718 ; C 79 ; WX 778 ; N O ; B 107 -19 823 737 ; C 80 ; WX 667 ; N P ; B 76 0 738 718 ; C 81 ; WX 778 ; N Q ; B 107 -52 823 737 ; C 82 ; WX 722 ; N R ; B 76 0 778 718 ; C 83 ; WX 667 ; N S ; B 81 -19 718 737 ; C 84 ; WX 611 ; N T ; B 140 0 751 718 ; C 85 ; WX 722 ; N U ; B 116 -19 804 718 ; C 86 ; WX 667 ; N V ; B 172 0 801 718 ; C 87 ; WX 944 ; N W ; B 169 0 1082 718 ; C 88 ; WX 667 ; N X ; B 14 0 791 718 ; C 89 ; WX 667 ; N Y ; B 168 0 806 718 ; C 90 ; WX 611 ; N Z ; B 25 0 737 718 ; C 91 ; WX 333 ; N bracketleft ; B 21 -196 462 722 ; C 92 ; WX 278 ; N backslash ; B 124 -19 307 737 ; C 93 ; WX 333 ; N bracketright ; B -18 -196 423 722 ; C 94 ; WX 584 ; N asciicircum ; B 131 323 591 698 ; C 95 ; WX 556 ; N underscore ; B -27 -125 540 -75 ; C 96 ; WX 278 ; N quoteleft ; B 165 454 361 727 ; C 97 ; WX 556 ; N a ; B 55 -14 583 546 ; C 98 ; WX 611 ; N b ; B 61 -14 645 718 ; C 99 ; WX 556 ; N c ; B 79 -14 599 546 ; C 100 ; WX 611 ; N d ; B 82 -14 704 718 ; C 101 ; WX 556 ; N e ; B 70 -14 593 546 ; C 102 ; WX 333 ; N f ; B 87 0 469 727 ; L i fi ; L l fl ; C 103 ; WX 611 ; N g ; B 38 -217 666 546 ; C 104 ; WX 611 ; N h ; B 65 0 629 718 ; C 105 ; WX 278 ; N i ; B 69 0 363 725 ; C 106 ; WX 278 ; N j ; B -42 -214 363 725 ; C 107 ; WX 556 ; N k ; B 69 0 670 718 ; C 108 ; WX 278 ; N l ; B 69 0 362 718 ; C 109 ; WX 889 ; N m ; B 64 0 909 546 ; C 110 ; WX 611 ; N n ; B 65 0 629 546 ; C 111 ; WX 611 ; N o ; B 82 -14 643 546 ; C 112 ; WX 611 ; N p ; B 18 -207 645 546 ; C 113 ; WX 611 ; N q ; B 80 -207 665 546 ; C 114 ; WX 389 ; N r ; B 64 0 489 546 ; C 115 ; WX 556 ; N s ; B 63 -14 584 546 ; C 116 ; WX 333 ; N t ; B 100 -6 422 676 ; C 117 ; WX 611 ; N u ; B 98 -14 658 532 ; C 118 ; WX 556 ; N v ; B 126 0 656 532 ; C 119 ; WX 778 ; N w ; B 123 0 882 532 ; C 120 ; WX 556 ; N x ; B 15 0 648 532 ; C 121 ; WX 556 ; N y ; B 42 -214 652 532 ; C 122 ; WX 500 ; N z ; B 20 0 583 532 ; C 123 ; WX 389 ; N braceleft ; B 94 -196 518 722 ; C 124 ; WX 280 ; N bar ; B 36 -225 361 775 ; C 125 ; WX 389 ; N braceright ; B -18 -196 407 722 ; C 126 ; WX 584 ; N asciitilde ; B 115 163 577 343 ; C 161 ; WX 333 ; N exclamdown ; B 50 -186 353 532 ; C 162 ; WX 556 ; N cent ; B 79 -118 599 628 ; C 163 ; WX 556 ; N sterling ; B 50 -16 635 718 ; C 164 ; WX 167 ; N fraction ; B -174 -19 487 710 ; C 165 ; WX 556 ; N yen ; B 60 0 713 698 ; C 166 ; WX 556 ; N florin ; B -50 -210 669 737 ; C 167 ; WX 556 ; N section ; B 61 -184 598 727 ; C 168 ; WX 556 ; N currency ; B 27 76 680 636 ; C 169 ; WX 238 ; N quotesingle ; B 165 447 321 718 ; C 170 ; WX 500 ; N quotedblleft ; B 160 454 588 727 ; C 171 ; WX 556 ; N guillemotleft ; B 135 76 571 484 ; C 172 ; WX 333 ; N guilsinglleft ; B 130 76 353 484 ; C 173 ; WX 333 ; N guilsinglright ; B 99 76 322 484 ; C 174 ; WX 611 ; N fi ; B 87 0 696 727 ; C 175 ; WX 611 ; N fl ; B 87 0 695 727 ; C 177 ; WX 556 ; N endash ; B 48 227 627 333 ; C 178 ; WX 556 ; N dagger ; B 118 -171 626 718 ; C 179 ; WX 556 ; N daggerdbl ; B 46 -171 628 718 ; C 180 ; WX 278 ; N periodcentered ; B 110 172 276 334 ; C 182 ; WX 556 ; N paragraph ; B 98 -191 688 700 ; C 183 ; WX 350 ; N bullet ; B 83 194 420 524 ; C 184 ; WX 278 ; N quotesinglbase ; B 41 -146 236 127 ; C 185 ; WX 500 ; N quotedblbase ; B 36 -146 463 127 ; C 186 ; WX 500 ; N quotedblright ; B 162 445 589 718 ; C 187 ; WX 556 ; N guillemotright ; B 104 76 540 484 ; C 188 ; WX 1000 ; N ellipsis ; B 92 0 939 146 ; C 189 ; WX 1000 ; N perthousand ; B 76 -19 1038 710 ; C 191 ; WX 611 ; N questiondown ; B 53 -195 559 532 ; C 193 ; WX 333 ; N grave ; B 136 604 353 750 ; C 194 ; WX 333 ; N acute ; B 236 604 515 750 ; C 195 ; WX 333 ; N circumflex ; B 118 604 471 750 ; C 196 ; WX 333 ; N tilde ; B 113 610 507 737 ; C 197 ; WX 333 ; N macron ; B 122 604 483 678 ; C 198 ; WX 333 ; N breve ; B 156 604 494 750 ; C 199 ; WX 333 ; N dotaccent ; B 235 614 385 729 ; C 200 ; WX 333 ; N dieresis ; B 137 614 482 729 ; C 202 ; WX 333 ; N ring ; B 200 568 420 776 ; C 203 ; WX 333 ; N cedilla ; B -37 -228 220 0 ; C 205 ; WX 333 ; N hungarumlaut ; B 137 604 645 750 ; C 206 ; WX 333 ; N ogonek ; B 41 -228 264 0 ; C 207 ; WX 333 ; N caron ; B 149 604 502 750 ; C 208 ; WX 1000 ; N emdash ; B 48 227 1071 333 ; C 225 ; WX 1000 ; N AE ; B 5 0 1100 718 ; C 227 ; WX 370 ; N ordfeminine ; B 125 401 465 737 ; C 232 ; WX 611 ; N Lslash ; B 34 0 611 718 ; C 233 ; WX 778 ; N Oslash ; B 35 -27 894 745 ; C 234 ; WX 1000 ; N OE ; B 99 -19 1114 737 ; C 235 ; WX 365 ; N ordmasculine ; B 123 401 485 737 ; C 241 ; WX 889 ; N ae ; B 56 -14 923 546 ; C 245 ; WX 278 ; N dotlessi ; B 69 0 322 532 ; C 248 ; WX 278 ; N lslash ; B 40 0 407 718 ; C 249 ; WX 611 ; N oslash ; B 22 -29 701 560 ; C 250 ; WX 944 ; N oe ; B 82 -14 977 546 ; C 251 ; WX 611 ; N germandbls ; B 69 -14 657 731 ; C -1 ; WX 278 ; N Idieresis ; B 64 0 494 915 ; C -1 ; WX 556 ; N eacute ; B 70 -14 627 750 ; C -1 ; WX 556 ; N abreve ; B 55 -14 606 750 ; C -1 ; WX 611 ; N uhungarumlaut ; B 98 -14 784 750 ; C -1 ; WX 556 ; N ecaron ; B 70 -14 614 750 ; C -1 ; WX 667 ; N Ydieresis ; B 168 0 806 915 ; C -1 ; WX 584 ; N divide ; B 82 -42 610 548 ; C -1 ; WX 667 ; N Yacute ; B 168 0 806 936 ; C -1 ; WX 722 ; N Acircumflex ; B 20 0 706 936 ; C -1 ; WX 556 ; N aacute ; B 55 -14 627 750 ; C -1 ; WX 722 ; N Ucircumflex ; B 116 -19 804 936 ; C -1 ; WX 556 ; N yacute ; B 42 -214 652 750 ; C -1 ; WX 556 ; N scommaaccent ; B 63 -228 584 546 ; C -1 ; WX 556 ; N ecircumflex ; B 70 -14 593 750 ; C -1 ; WX 722 ; N Uring ; B 116 -19 804 962 ; C -1 ; WX 722 ; N Udieresis ; B 116 -19 804 915 ; C -1 ; WX 556 ; N aogonek ; B 55 -224 583 546 ; C -1 ; WX 722 ; N Uacute ; B 116 -19 804 936 ; C -1 ; WX 611 ; N uogonek ; B 98 -228 658 532 ; C -1 ; WX 667 ; N Edieresis ; B 76 0 757 915 ; C -1 ; WX 722 ; N Dcroat ; B 62 0 777 718 ; C -1 ; WX 250 ; N commaaccent ; B 16 -228 188 -50 ; C -1 ; WX 737 ; N copyright ; B 56 -19 835 737 ; C -1 ; WX 667 ; N Emacron ; B 76 0 757 864 ; C -1 ; WX 556 ; N ccaron ; B 79 -14 614 750 ; C -1 ; WX 556 ; N aring ; B 55 -14 583 776 ; C -1 ; WX 722 ; N Ncommaaccent ; B 69 -228 807 718 ; C -1 ; WX 278 ; N lacute ; B 69 0 528 936 ; C -1 ; WX 556 ; N agrave ; B 55 -14 583 750 ; C -1 ; WX 611 ; N Tcommaaccent ; B 140 -228 751 718 ; C -1 ; WX 722 ; N Cacute ; B 107 -19 789 936 ; C -1 ; WX 556 ; N atilde ; B 55 -14 619 737 ; C -1 ; WX 667 ; N Edotaccent ; B 76 0 757 915 ; C -1 ; WX 556 ; N scaron ; B 63 -14 614 750 ; C -1 ; WX 556 ; N scedilla ; B 63 -228 584 546 ; C -1 ; WX 278 ; N iacute ; B 69 0 488 750 ; C -1 ; WX 494 ; N lozenge ; B 90 0 564 745 ; C -1 ; WX 722 ; N Rcaron ; B 76 0 778 936 ; C -1 ; WX 778 ; N Gcommaaccent ; B 108 -228 817 737 ; C -1 ; WX 611 ; N ucircumflex ; B 98 -14 658 750 ; C -1 ; WX 556 ; N acircumflex ; B 55 -14 583 750 ; C -1 ; WX 722 ; N Amacron ; B 20 0 718 864 ; C -1 ; WX 389 ; N rcaron ; B 64 0 530 750 ; C -1 ; WX 556 ; N ccedilla ; B 79 -228 599 546 ; C -1 ; WX 611 ; N Zdotaccent ; B 25 0 737 915 ; C -1 ; WX 667 ; N Thorn ; B 76 0 716 718 ; C -1 ; WX 778 ; N Omacron ; B 107 -19 823 864 ; C -1 ; WX 722 ; N Racute ; B 76 0 778 936 ; C -1 ; WX 667 ; N Sacute ; B 81 -19 722 936 ; C -1 ; WX 743 ; N dcaron ; B 82 -14 903 718 ; C -1 ; WX 722 ; N Umacron ; B 116 -19 804 864 ; C -1 ; WX 611 ; N uring ; B 98 -14 658 776 ; C -1 ; WX 333 ; N threesuperior ; B 91 271 441 710 ; C -1 ; WX 778 ; N Ograve ; B 107 -19 823 936 ; C -1 ; WX 722 ; N Agrave ; B 20 0 702 936 ; C -1 ; WX 722 ; N Abreve ; B 20 0 729 936 ; C -1 ; WX 584 ; N multiply ; B 57 1 635 505 ; C -1 ; WX 611 ; N uacute ; B 98 -14 658 750 ; C -1 ; WX 611 ; N Tcaron ; B 140 0 751 936 ; C -1 ; WX 494 ; N partialdiff ; B 43 -21 585 750 ; C -1 ; WX 556 ; N ydieresis ; B 42 -214 652 729 ; C -1 ; WX 722 ; N Nacute ; B 69 0 807 936 ; C -1 ; WX 278 ; N icircumflex ; B 69 0 444 750 ; C -1 ; WX 667 ; N Ecircumflex ; B 76 0 757 936 ; C -1 ; WX 556 ; N adieresis ; B 55 -14 594 729 ; C -1 ; WX 556 ; N edieresis ; B 70 -14 594 729 ; C -1 ; WX 556 ; N cacute ; B 79 -14 627 750 ; C -1 ; WX 611 ; N nacute ; B 65 0 654 750 ; C -1 ; WX 611 ; N umacron ; B 98 -14 658 678 ; C -1 ; WX 722 ; N Ncaron ; B 69 0 807 936 ; C -1 ; WX 278 ; N Iacute ; B 64 0 528 936 ; C -1 ; WX 584 ; N plusminus ; B 40 0 625 506 ; C -1 ; WX 280 ; N brokenbar ; B 52 -150 345 700 ; C -1 ; WX 737 ; N registered ; B 55 -19 834 737 ; C -1 ; WX 778 ; N Gbreve ; B 108 -19 817 936 ; C -1 ; WX 278 ; N Idotaccent ; B 64 0 397 915 ; C -1 ; WX 600 ; N summation ; B 14 -10 670 706 ; C -1 ; WX 667 ; N Egrave ; B 76 0 757 936 ; C -1 ; WX 389 ; N racute ; B 64 0 543 750 ; C -1 ; WX 611 ; N omacron ; B 82 -14 643 678 ; C -1 ; WX 611 ; N Zacute ; B 25 0 737 936 ; C -1 ; WX 611 ; N Zcaron ; B 25 0 737 936 ; C -1 ; WX 549 ; N greaterequal ; B 26 0 629 704 ; C -1 ; WX 722 ; N Eth ; B 62 0 777 718 ; C -1 ; WX 722 ; N Ccedilla ; B 107 -228 789 737 ; C -1 ; WX 278 ; N lcommaaccent ; B 30 -228 362 718 ; C -1 ; WX 389 ; N tcaron ; B 100 -6 608 878 ; C -1 ; WX 556 ; N eogonek ; B 70 -228 593 546 ; C -1 ; WX 722 ; N Uogonek ; B 116 -228 804 718 ; C -1 ; WX 722 ; N Aacute ; B 20 0 750 936 ; C -1 ; WX 722 ; N Adieresis ; B 20 0 716 915 ; C -1 ; WX 556 ; N egrave ; B 70 -14 593 750 ; C -1 ; WX 500 ; N zacute ; B 20 0 599 750 ; C -1 ; WX 278 ; N iogonek ; B -14 -224 363 725 ; C -1 ; WX 778 ; N Oacute ; B 107 -19 823 936 ; C -1 ; WX 611 ; N oacute ; B 82 -14 654 750 ; C -1 ; WX 556 ; N amacron ; B 55 -14 595 678 ; C -1 ; WX 556 ; N sacute ; B 63 -14 627 750 ; C -1 ; WX 278 ; N idieresis ; B 69 0 455 729 ; C -1 ; WX 778 ; N Ocircumflex ; B 107 -19 823 936 ; C -1 ; WX 722 ; N Ugrave ; B 116 -19 804 936 ; C -1 ; WX 612 ; N Delta ; B 6 0 608 688 ; C -1 ; WX 611 ; N thorn ; B 18 -208 645 718 ; C -1 ; WX 333 ; N twosuperior ; B 69 283 449 710 ; C -1 ; WX 778 ; N Odieresis ; B 107 -19 823 915 ; C -1 ; WX 611 ; N mu ; B 22 -207 658 532 ; C -1 ; WX 278 ; N igrave ; B 69 0 326 750 ; C -1 ; WX 611 ; N ohungarumlaut ; B 82 -14 784 750 ; C -1 ; WX 667 ; N Eogonek ; B 76 -224 757 718 ; C -1 ; WX 611 ; N dcroat ; B 82 -14 789 718 ; C -1 ; WX 834 ; N threequarters ; B 99 -19 839 710 ; C -1 ; WX 667 ; N Scedilla ; B 81 -228 718 737 ; C -1 ; WX 400 ; N lcaron ; B 69 0 561 718 ; C -1 ; WX 722 ; N Kcommaaccent ; B 87 -228 858 718 ; C -1 ; WX 611 ; N Lacute ; B 76 0 611 936 ; C -1 ; WX 1000 ; N trademark ; B 179 306 1109 718 ; C -1 ; WX 556 ; N edotaccent ; B 70 -14 593 729 ; C -1 ; WX 278 ; N Igrave ; B 64 0 367 936 ; C -1 ; WX 278 ; N Imacron ; B 64 0 496 864 ; C -1 ; WX 611 ; N Lcaron ; B 76 0 643 718 ; C -1 ; WX 834 ; N onehalf ; B 132 -19 858 710 ; C -1 ; WX 549 ; N lessequal ; B 29 0 676 704 ; C -1 ; WX 611 ; N ocircumflex ; B 82 -14 643 750 ; C -1 ; WX 611 ; N ntilde ; B 65 0 646 737 ; C -1 ; WX 722 ; N Uhungarumlaut ; B 116 -19 880 936 ; C -1 ; WX 667 ; N Eacute ; B 76 0 757 936 ; C -1 ; WX 556 ; N emacron ; B 70 -14 595 678 ; C -1 ; WX 611 ; N gbreve ; B 38 -217 666 750 ; C -1 ; WX 834 ; N onequarter ; B 132 -19 806 710 ; C -1 ; WX 667 ; N Scaron ; B 81 -19 718 936 ; C -1 ; WX 667 ; N Scommaaccent ; B 81 -228 718 737 ; C -1 ; WX 778 ; N Ohungarumlaut ; B 107 -19 908 936 ; C -1 ; WX 400 ; N degree ; B 175 426 467 712 ; C -1 ; WX 611 ; N ograve ; B 82 -14 643 750 ; C -1 ; WX 722 ; N Ccaron ; B 107 -19 789 936 ; C -1 ; WX 611 ; N ugrave ; B 98 -14 658 750 ; C -1 ; WX 549 ; N radical ; B 112 -46 689 850 ; C -1 ; WX 722 ; N Dcaron ; B 76 0 777 936 ; C -1 ; WX 389 ; N rcommaaccent ; B 26 -228 489 546 ; C -1 ; WX 722 ; N Ntilde ; B 69 0 807 923 ; C -1 ; WX 611 ; N otilde ; B 82 -14 646 737 ; C -1 ; WX 722 ; N Rcommaaccent ; B 76 -228 778 718 ; C -1 ; WX 611 ; N Lcommaaccent ; B 76 -228 611 718 ; C -1 ; WX 722 ; N Atilde ; B 20 0 741 923 ; C -1 ; WX 722 ; N Aogonek ; B 20 -224 702 718 ; C -1 ; WX 722 ; N Aring ; B 20 0 702 962 ; C -1 ; WX 778 ; N Otilde ; B 107 -19 823 923 ; C -1 ; WX 500 ; N zdotaccent ; B 20 0 583 729 ; C -1 ; WX 667 ; N Ecaron ; B 76 0 757 936 ; C -1 ; WX 278 ; N Iogonek ; B -41 -228 367 718 ; C -1 ; WX 556 ; N kcommaaccent ; B 69 -228 670 718 ; C -1 ; WX 584 ; N minus ; B 82 197 610 309 ; C -1 ; WX 278 ; N Icircumflex ; B 64 0 484 936 ; C -1 ; WX 611 ; N ncaron ; B 65 0 641 750 ; C -1 ; WX 333 ; N tcommaaccent ; B 58 -228 422 676 ; C -1 ; WX 584 ; N logicalnot ; B 105 108 633 419 ; C -1 ; WX 611 ; N odieresis ; B 82 -14 643 729 ; C -1 ; WX 611 ; N udieresis ; B 98 -14 658 729 ; C -1 ; WX 549 ; N notequal ; B 32 -49 630 570 ; C -1 ; WX 611 ; N gcommaaccent ; B 38 -217 666 850 ; C -1 ; WX 611 ; N eth ; B 82 -14 670 737 ; C -1 ; WX 500 ; N zcaron ; B 20 0 586 750 ; C -1 ; WX 611 ; N ncommaaccent ; B 65 -228 629 546 ; C -1 ; WX 333 ; N onesuperior ; B 148 283 388 710 ; C -1 ; WX 278 ; N imacron ; B 69 0 429 678 ; EndCharMetrics StartKernData StartKernPairs 2481 KPX A C -40 KPX A Cacute -40 KPX A Ccaron -40 KPX A Ccedilla -40 KPX A G -50 KPX A Gbreve -50 KPX A Gcommaaccent -50 KPX A O -40 KPX A Oacute -40 KPX A Ocircumflex -40 KPX A Odieresis -40 KPX A Ograve -40 KPX A Ohungarumlaut -40 KPX A Omacron -40 KPX A Oslash -40 KPX A Otilde -40 KPX A Q -40 KPX A T -90 KPX A Tcaron -90 KPX A Tcommaaccent -90 KPX A U -50 KPX A Uacute -50 KPX A Ucircumflex -50 KPX A Udieresis -50 KPX A Ugrave -50 KPX A Uhungarumlaut -50 KPX A Umacron -50 KPX A Uogonek -50 KPX A Uring -50 KPX A V -80 KPX A W -60 KPX A Y -110 KPX A Yacute -110 KPX A Ydieresis -110 KPX A u -30 KPX A uacute -30 KPX A ucircumflex -30 KPX A udieresis -30 KPX A ugrave -30 KPX A uhungarumlaut -30 KPX A umacron -30 KPX A uogonek -30 KPX A uring -30 KPX A v -40 KPX A w -30 KPX A y -30 KPX A yacute -30 KPX A ydieresis -30 KPX Aacute C -40 KPX Aacute Cacute -40 KPX Aacute Ccaron -40 KPX Aacute Ccedilla -40 KPX Aacute G -50 KPX Aacute Gbreve -50 KPX Aacute Gcommaaccent -50 KPX Aacute O -40 KPX Aacute Oacute -40 KPX Aacute Ocircumflex -40 KPX Aacute Odieresis -40 KPX Aacute Ograve -40 KPX Aacute Ohungarumlaut -40 KPX Aacute Omacron -40 KPX Aacute Oslash -40 KPX Aacute Otilde -40 KPX Aacute Q -40 KPX Aacute T -90 KPX Aacute Tcaron -90 KPX Aacute Tcommaaccent -90 KPX Aacute U -50 KPX Aacute Uacute -50 KPX Aacute Ucircumflex -50 KPX Aacute Udieresis -50 KPX Aacute Ugrave -50 KPX Aacute Uhungarumlaut -50 KPX Aacute Umacron -50 KPX Aacute Uogonek -50 KPX Aacute Uring -50 KPX Aacute V -80 KPX Aacute W -60 KPX Aacute Y -110 KPX Aacute Yacute -110 KPX Aacute Ydieresis -110 KPX Aacute u -30 KPX Aacute uacute -30 KPX Aacute ucircumflex -30 KPX Aacute udieresis -30 KPX Aacute ugrave -30 KPX Aacute uhungarumlaut -30 KPX Aacute umacron -30 KPX Aacute uogonek -30 KPX Aacute uring -30 KPX Aacute v -40 KPX Aacute w -30 KPX Aacute y -30 KPX Aacute yacute -30 KPX Aacute ydieresis -30 KPX Abreve C -40 KPX Abreve Cacute -40 KPX Abreve Ccaron -40 KPX Abreve Ccedilla -40 KPX Abreve G -50 KPX Abreve Gbreve -50 KPX Abreve Gcommaaccent -50 KPX Abreve O -40 KPX Abreve Oacute -40 KPX Abreve Ocircumflex -40 KPX Abreve Odieresis -40 KPX Abreve Ograve -40 KPX Abreve Ohungarumlaut -40 KPX Abreve Omacron -40 KPX Abreve Oslash -40 KPX Abreve Otilde -40 KPX Abreve Q -40 KPX Abreve T -90 KPX Abreve Tcaron -90 KPX Abreve Tcommaaccent -90 KPX Abreve U -50 KPX Abreve Uacute -50 KPX Abreve Ucircumflex -50 KPX Abreve Udieresis -50 KPX Abreve Ugrave -50 KPX Abreve Uhungarumlaut -50 KPX Abreve Umacron -50 KPX Abreve Uogonek -50 KPX Abreve Uring -50 KPX Abreve V -80 KPX Abreve W -60 KPX Abreve Y -110 KPX Abreve Yacute -110 KPX Abreve Ydieresis -110 KPX Abreve u -30 KPX Abreve uacute -30 KPX Abreve ucircumflex -30 KPX Abreve udieresis -30 KPX Abreve ugrave -30 KPX Abreve uhungarumlaut -30 KPX Abreve umacron -30 KPX Abreve uogonek -30 KPX Abreve uring -30 KPX Abreve v -40 KPX Abreve w -30 KPX Abreve y -30 KPX Abreve yacute -30 KPX Abreve ydieresis -30 KPX Acircumflex C -40 KPX Acircumflex Cacute -40 KPX Acircumflex Ccaron -40 KPX Acircumflex Ccedilla -40 KPX Acircumflex G -50 KPX Acircumflex Gbreve -50 KPX Acircumflex Gcommaaccent -50 KPX Acircumflex O -40 KPX Acircumflex Oacute -40 KPX Acircumflex Ocircumflex -40 KPX Acircumflex Odieresis -40 KPX Acircumflex Ograve -40 KPX Acircumflex Ohungarumlaut -40 KPX Acircumflex Omacron -40 KPX Acircumflex Oslash -40 KPX Acircumflex Otilde -40 KPX Acircumflex Q -40 KPX Acircumflex T -90 KPX Acircumflex Tcaron -90 KPX Acircumflex Tcommaaccent -90 KPX Acircumflex U -50 KPX Acircumflex Uacute -50 KPX Acircumflex Ucircumflex -50 KPX Acircumflex Udieresis -50 KPX Acircumflex Ugrave -50 KPX Acircumflex Uhungarumlaut -50 KPX Acircumflex Umacron -50 KPX Acircumflex Uogonek -50 KPX Acircumflex Uring -50 KPX Acircumflex V -80 KPX Acircumflex W -60 KPX Acircumflex Y -110 KPX Acircumflex Yacute -110 KPX Acircumflex Ydieresis -110 KPX Acircumflex u -30 KPX Acircumflex uacute -30 KPX Acircumflex ucircumflex -30 KPX Acircumflex udieresis -30 KPX Acircumflex ugrave -30 KPX Acircumflex uhungarumlaut -30 KPX Acircumflex umacron -30 KPX Acircumflex uogonek -30 KPX Acircumflex uring -30 KPX Acircumflex v -40 KPX Acircumflex w -30 KPX Acircumflex y -30 KPX Acircumflex yacute -30 KPX Acircumflex ydieresis -30 KPX Adieresis C -40 KPX Adieresis Cacute -40 KPX Adieresis Ccaron -40 KPX Adieresis Ccedilla -40 KPX Adieresis G -50 KPX Adieresis Gbreve -50 KPX Adieresis Gcommaaccent -50 KPX Adieresis O -40 KPX Adieresis Oacute -40 KPX Adieresis Ocircumflex -40 KPX Adieresis Odieresis -40 KPX Adieresis Ograve -40 KPX Adieresis Ohungarumlaut -40 KPX Adieresis Omacron -40 KPX Adieresis Oslash -40 KPX Adieresis Otilde -40 KPX Adieresis Q -40 KPX Adieresis T -90 KPX Adieresis Tcaron -90 KPX Adieresis Tcommaaccent -90 KPX Adieresis U -50 KPX Adieresis Uacute -50 KPX Adieresis Ucircumflex -50 KPX Adieresis Udieresis -50 KPX Adieresis Ugrave -50 KPX Adieresis Uhungarumlaut -50 KPX Adieresis Umacron -50 KPX Adieresis Uogonek -50 KPX Adieresis Uring -50 KPX Adieresis V -80 KPX Adieresis W -60 KPX Adieresis Y -110 KPX Adieresis Yacute -110 KPX Adieresis Ydieresis -110 KPX Adieresis u -30 KPX Adieresis uacute -30 KPX Adieresis ucircumflex -30 KPX Adieresis udieresis -30 KPX Adieresis ugrave -30 KPX Adieresis uhungarumlaut -30 KPX Adieresis umacron -30 KPX Adieresis uogonek -30 KPX Adieresis uring -30 KPX Adieresis v -40 KPX Adieresis w -30 KPX Adieresis y -30 KPX Adieresis yacute -30 KPX Adieresis ydieresis -30 KPX Agrave C -40 KPX Agrave Cacute -40 KPX Agrave Ccaron -40 KPX Agrave Ccedilla -40 KPX Agrave G -50 KPX Agrave Gbreve -50 KPX Agrave Gcommaaccent -50 KPX Agrave O -40 KPX Agrave Oacute -40 KPX Agrave Ocircumflex -40 KPX Agrave Odieresis -40 KPX Agrave Ograve -40 KPX Agrave Ohungarumlaut -40 KPX Agrave Omacron -40 KPX Agrave Oslash -40 KPX Agrave Otilde -40 KPX Agrave Q -40 KPX Agrave T -90 KPX Agrave Tcaron -90 KPX Agrave Tcommaaccent -90 KPX Agrave U -50 KPX Agrave Uacute -50 KPX Agrave Ucircumflex -50 KPX Agrave Udieresis -50 KPX Agrave Ugrave -50 KPX Agrave Uhungarumlaut -50 KPX Agrave Umacron -50 KPX Agrave Uogonek -50 KPX Agrave Uring -50 KPX Agrave V -80 KPX Agrave W -60 KPX Agrave Y -110 KPX Agrave Yacute -110 KPX Agrave Ydieresis -110 KPX Agrave u -30 KPX Agrave uacute -30 KPX Agrave ucircumflex -30 KPX Agrave udieresis -30 KPX Agrave ugrave -30 KPX Agrave uhungarumlaut -30 KPX Agrave umacron -30 KPX Agrave uogonek -30 KPX Agrave uring -30 KPX Agrave v -40 KPX Agrave w -30 KPX Agrave y -30 KPX Agrave yacute -30 KPX Agrave ydieresis -30 KPX Amacron C -40 KPX Amacron Cacute -40 KPX Amacron Ccaron -40 KPX Amacron Ccedilla -40 KPX Amacron G -50 KPX Amacron Gbreve -50 KPX Amacron Gcommaaccent -50 KPX Amacron O -40 KPX Amacron Oacute -40 KPX Amacron Ocircumflex -40 KPX Amacron Odieresis -40 KPX Amacron Ograve -40 KPX Amacron Ohungarumlaut -40 KPX Amacron Omacron -40 KPX Amacron Oslash -40 KPX Amacron Otilde -40 KPX Amacron Q -40 KPX Amacron T -90 KPX Amacron Tcaron -90 KPX Amacron Tcommaaccent -90 KPX Amacron U -50 KPX Amacron Uacute -50 KPX Amacron Ucircumflex -50 KPX Amacron Udieresis -50 KPX Amacron Ugrave -50 KPX Amacron Uhungarumlaut -50 KPX Amacron Umacron -50 KPX Amacron Uogonek -50 KPX Amacron Uring -50 KPX Amacron V -80 KPX Amacron W -60 KPX Amacron Y -110 KPX Amacron Yacute -110 KPX Amacron Ydieresis -110 KPX Amacron u -30 KPX Amacron uacute -30 KPX Amacron ucircumflex -30 KPX Amacron udieresis -30 KPX Amacron ugrave -30 KPX Amacron uhungarumlaut -30 KPX Amacron umacron -30 KPX Amacron uogonek -30 KPX Amacron uring -30 KPX Amacron v -40 KPX Amacron w -30 KPX Amacron y -30 KPX Amacron yacute -30 KPX Amacron ydieresis -30 KPX Aogonek C -40 KPX Aogonek Cacute -40 KPX Aogonek Ccaron -40 KPX Aogonek Ccedilla -40 KPX Aogonek G -50 KPX Aogonek Gbreve -50 KPX Aogonek Gcommaaccent -50 KPX Aogonek O -40 KPX Aogonek Oacute -40 KPX Aogonek Ocircumflex -40 KPX Aogonek Odieresis -40 KPX Aogonek Ograve -40 KPX Aogonek Ohungarumlaut -40 KPX Aogonek Omacron -40 KPX Aogonek Oslash -40 KPX Aogonek Otilde -40 KPX Aogonek Q -40 KPX Aogonek T -90 KPX Aogonek Tcaron -90 KPX Aogonek Tcommaaccent -90 KPX Aogonek U -50 KPX Aogonek Uacute -50 KPX Aogonek Ucircumflex -50 KPX Aogonek Udieresis -50 KPX Aogonek Ugrave -50 KPX Aogonek Uhungarumlaut -50 KPX Aogonek Umacron -50 KPX Aogonek Uogonek -50 KPX Aogonek Uring -50 KPX Aogonek V -80 KPX Aogonek W -60 KPX Aogonek Y -110 KPX Aogonek Yacute -110 KPX Aogonek Ydieresis -110 KPX Aogonek u -30 KPX Aogonek uacute -30 KPX Aogonek ucircumflex -30 KPX Aogonek udieresis -30 KPX Aogonek ugrave -30 KPX Aogonek uhungarumlaut -30 KPX Aogonek umacron -30 KPX Aogonek uogonek -30 KPX Aogonek uring -30 KPX Aogonek v -40 KPX Aogonek w -30 KPX Aogonek y -30 KPX Aogonek yacute -30 KPX Aogonek ydieresis -30 KPX Aring C -40 KPX Aring Cacute -40 KPX Aring Ccaron -40 KPX Aring Ccedilla -40 KPX Aring G -50 KPX Aring Gbreve -50 KPX Aring Gcommaaccent -50 KPX Aring O -40 KPX Aring Oacute -40 KPX Aring Ocircumflex -40 KPX Aring Odieresis -40 KPX Aring Ograve -40 KPX Aring Ohungarumlaut -40 KPX Aring Omacron -40 KPX Aring Oslash -40 KPX Aring Otilde -40 KPX Aring Q -40 KPX Aring T -90 KPX Aring Tcaron -90 KPX Aring Tcommaaccent -90 KPX Aring U -50 KPX Aring Uacute -50 KPX Aring Ucircumflex -50 KPX Aring Udieresis -50 KPX Aring Ugrave -50 KPX Aring Uhungarumlaut -50 KPX Aring Umacron -50 KPX Aring Uogonek -50 KPX Aring Uring -50 KPX Aring V -80 KPX Aring W -60 KPX Aring Y -110 KPX Aring Yacute -110 KPX Aring Ydieresis -110 KPX Aring u -30 KPX Aring uacute -30 KPX Aring ucircumflex -30 KPX Aring udieresis -30 KPX Aring ugrave -30 KPX Aring uhungarumlaut -30 KPX Aring umacron -30 KPX Aring uogonek -30 KPX Aring uring -30 KPX Aring v -40 KPX Aring w -30 KPX Aring y -30 KPX Aring yacute -30 KPX Aring ydieresis -30 KPX Atilde C -40 KPX Atilde Cacute -40 KPX Atilde Ccaron -40 KPX Atilde Ccedilla -40 KPX Atilde G -50 KPX Atilde Gbreve -50 KPX Atilde Gcommaaccent -50 KPX Atilde O -40 KPX Atilde Oacute -40 KPX Atilde Ocircumflex -40 KPX Atilde Odieresis -40 KPX Atilde Ograve -40 KPX Atilde Ohungarumlaut -40 KPX Atilde Omacron -40 KPX Atilde Oslash -40 KPX Atilde Otilde -40 KPX Atilde Q -40 KPX Atilde T -90 KPX Atilde Tcaron -90 KPX Atilde Tcommaaccent -90 KPX Atilde U -50 KPX Atilde Uacute -50 KPX Atilde Ucircumflex -50 KPX Atilde Udieresis -50 KPX Atilde Ugrave -50 KPX Atilde Uhungarumlaut -50 KPX Atilde Umacron -50 KPX Atilde Uogonek -50 KPX Atilde Uring -50 KPX Atilde V -80 KPX Atilde W -60 KPX Atilde Y -110 KPX Atilde Yacute -110 KPX Atilde Ydieresis -110 KPX Atilde u -30 KPX Atilde uacute -30 KPX Atilde ucircumflex -30 KPX Atilde udieresis -30 KPX Atilde ugrave -30 KPX Atilde uhungarumlaut -30 KPX Atilde umacron -30 KPX Atilde uogonek -30 KPX Atilde uring -30 KPX Atilde v -40 KPX Atilde w -30 KPX Atilde y -30 KPX Atilde yacute -30 KPX Atilde ydieresis -30 KPX B A -30 KPX B Aacute -30 KPX B Abreve -30 KPX B Acircumflex -30 KPX B Adieresis -30 KPX B Agrave -30 KPX B Amacron -30 KPX B Aogonek -30 KPX B Aring -30 KPX B Atilde -30 KPX B U -10 KPX B Uacute -10 KPX B Ucircumflex -10 KPX B Udieresis -10 KPX B Ugrave -10 KPX B Uhungarumlaut -10 KPX B Umacron -10 KPX B Uogonek -10 KPX B Uring -10 KPX D A -40 KPX D Aacute -40 KPX D Abreve -40 KPX D Acircumflex -40 KPX D Adieresis -40 KPX D Agrave -40 KPX D Amacron -40 KPX D Aogonek -40 KPX D Aring -40 KPX D Atilde -40 KPX D V -40 KPX D W -40 KPX D Y -70 KPX D Yacute -70 KPX D Ydieresis -70 KPX D comma -30 KPX D period -30 KPX Dcaron A -40 KPX Dcaron Aacute -40 KPX Dcaron Abreve -40 KPX Dcaron Acircumflex -40 KPX Dcaron Adieresis -40 KPX Dcaron Agrave -40 KPX Dcaron Amacron -40 KPX Dcaron Aogonek -40 KPX Dcaron Aring -40 KPX Dcaron Atilde -40 KPX Dcaron V -40 KPX Dcaron W -40 KPX Dcaron Y -70 KPX Dcaron Yacute -70 KPX Dcaron Ydieresis -70 KPX Dcaron comma -30 KPX Dcaron period -30 KPX Dcroat A -40 KPX Dcroat Aacute -40 KPX Dcroat Abreve -40 KPX Dcroat Acircumflex -40 KPX Dcroat Adieresis -40 KPX Dcroat Agrave -40 KPX Dcroat Amacron -40 KPX Dcroat Aogonek -40 KPX Dcroat Aring -40 KPX Dcroat Atilde -40 KPX Dcroat V -40 KPX Dcroat W -40 KPX Dcroat Y -70 KPX Dcroat Yacute -70 KPX Dcroat Ydieresis -70 KPX Dcroat comma -30 KPX Dcroat period -30 KPX F A -80 KPX F Aacute -80 KPX F Abreve -80 KPX F Acircumflex -80 KPX F Adieresis -80 KPX F Agrave -80 KPX F Amacron -80 KPX F Aogonek -80 KPX F Aring -80 KPX F Atilde -80 KPX F a -20 KPX F aacute -20 KPX F abreve -20 KPX F acircumflex -20 KPX F adieresis -20 KPX F agrave -20 KPX F amacron -20 KPX F aogonek -20 KPX F aring -20 KPX F atilde -20 KPX F comma -100 KPX F period -100 KPX J A -20 KPX J Aacute -20 KPX J Abreve -20 KPX J Acircumflex -20 KPX J Adieresis -20 KPX J Agrave -20 KPX J Amacron -20 KPX J Aogonek -20 KPX J Aring -20 KPX J Atilde -20 KPX J comma -20 KPX J period -20 KPX J u -20 KPX J uacute -20 KPX J ucircumflex -20 KPX J udieresis -20 KPX J ugrave -20 KPX J uhungarumlaut -20 KPX J umacron -20 KPX J uogonek -20 KPX J uring -20 KPX K O -30 KPX K Oacute -30 KPX K Ocircumflex -30 KPX K Odieresis -30 KPX K Ograve -30 KPX K Ohungarumlaut -30 KPX K Omacron -30 KPX K Oslash -30 KPX K Otilde -30 KPX K e -15 KPX K eacute -15 KPX K ecaron -15 KPX K ecircumflex -15 KPX K edieresis -15 KPX K edotaccent -15 KPX K egrave -15 KPX K emacron -15 KPX K eogonek -15 KPX K o -35 KPX K oacute -35 KPX K ocircumflex -35 KPX K odieresis -35 KPX K ograve -35 KPX K ohungarumlaut -35 KPX K omacron -35 KPX K oslash -35 KPX K otilde -35 KPX K u -30 KPX K uacute -30 KPX K ucircumflex -30 KPX K udieresis -30 KPX K ugrave -30 KPX K uhungarumlaut -30 KPX K umacron -30 KPX K uogonek -30 KPX K uring -30 KPX K y -40 KPX K yacute -40 KPX K ydieresis -40 KPX Kcommaaccent O -30 KPX Kcommaaccent Oacute -30 KPX Kcommaaccent Ocircumflex -30 KPX Kcommaaccent Odieresis -30 KPX Kcommaaccent Ograve -30 KPX Kcommaaccent Ohungarumlaut -30 KPX Kcommaaccent Omacron -30 KPX Kcommaaccent Oslash -30 KPX Kcommaaccent Otilde -30 KPX Kcommaaccent e -15 KPX Kcommaaccent eacute -15 KPX Kcommaaccent ecaron -15 KPX Kcommaaccent ecircumflex -15 KPX Kcommaaccent edieresis -15 KPX Kcommaaccent edotaccent -15 KPX Kcommaaccent egrave -15 KPX Kcommaaccent emacron -15 KPX Kcommaaccent eogonek -15 KPX Kcommaaccent o -35 KPX Kcommaaccent oacute -35 KPX Kcommaaccent ocircumflex -35 KPX Kcommaaccent odieresis -35 KPX Kcommaaccent ograve -35 KPX Kcommaaccent ohungarumlaut -35 KPX Kcommaaccent omacron -35 KPX Kcommaaccent oslash -35 KPX Kcommaaccent otilde -35 KPX Kcommaaccent u -30 KPX Kcommaaccent uacute -30 KPX Kcommaaccent ucircumflex -30 KPX Kcommaaccent udieresis -30 KPX Kcommaaccent ugrave -30 KPX Kcommaaccent uhungarumlaut -30 KPX Kcommaaccent umacron -30 KPX Kcommaaccent uogonek -30 KPX Kcommaaccent uring -30 KPX Kcommaaccent y -40 KPX Kcommaaccent yacute -40 KPX Kcommaaccent ydieresis -40 KPX L T -90 KPX L Tcaron -90 KPX L Tcommaaccent -90 KPX L V -110 KPX L W -80 KPX L Y -120 KPX L Yacute -120 KPX L Ydieresis -120 KPX L quotedblright -140 KPX L quoteright -140 KPX L y -30 KPX L yacute -30 KPX L ydieresis -30 KPX Lacute T -90 KPX Lacute Tcaron -90 KPX Lacute Tcommaaccent -90 KPX Lacute V -110 KPX Lacute W -80 KPX Lacute Y -120 KPX Lacute Yacute -120 KPX Lacute Ydieresis -120 KPX Lacute quotedblright -140 KPX Lacute quoteright -140 KPX Lacute y -30 KPX Lacute yacute -30 KPX Lacute ydieresis -30 KPX Lcommaaccent T -90 KPX Lcommaaccent Tcaron -90 KPX Lcommaaccent Tcommaaccent -90 KPX Lcommaaccent V -110 KPX Lcommaaccent W -80 KPX Lcommaaccent Y -120 KPX Lcommaaccent Yacute -120 KPX Lcommaaccent Ydieresis -120 KPX Lcommaaccent quotedblright -140 KPX Lcommaaccent quoteright -140 KPX Lcommaaccent y -30 KPX Lcommaaccent yacute -30 KPX Lcommaaccent ydieresis -30 KPX Lslash T -90 KPX Lslash Tcaron -90 KPX Lslash Tcommaaccent -90 KPX Lslash V -110 KPX Lslash W -80 KPX Lslash Y -120 KPX Lslash Yacute -120 KPX Lslash Ydieresis -120 KPX Lslash quotedblright -140 KPX Lslash quoteright -140 KPX Lslash y -30 KPX Lslash yacute -30 KPX Lslash ydieresis -30 KPX O A -50 KPX O Aacute -50 KPX O Abreve -50 KPX O Acircumflex -50 KPX O Adieresis -50 KPX O Agrave -50 KPX O Amacron -50 KPX O Aogonek -50 KPX O Aring -50 KPX O Atilde -50 KPX O T -40 KPX O Tcaron -40 KPX O Tcommaaccent -40 KPX O V -50 KPX O W -50 KPX O X -50 KPX O Y -70 KPX O Yacute -70 KPX O Ydieresis -70 KPX O comma -40 KPX O period -40 KPX Oacute A -50 KPX Oacute Aacute -50 KPX Oacute Abreve -50 KPX Oacute Acircumflex -50 KPX Oacute Adieresis -50 KPX Oacute Agrave -50 KPX Oacute Amacron -50 KPX Oacute Aogonek -50 KPX Oacute Aring -50 KPX Oacute Atilde -50 KPX Oacute T -40 KPX Oacute Tcaron -40 KPX Oacute Tcommaaccent -40 KPX Oacute V -50 KPX Oacute W -50 KPX Oacute X -50 KPX Oacute Y -70 KPX Oacute Yacute -70 KPX Oacute Ydieresis -70 KPX Oacute comma -40 KPX Oacute period -40 KPX Ocircumflex A -50 KPX Ocircumflex Aacute -50 KPX Ocircumflex Abreve -50 KPX Ocircumflex Acircumflex -50 KPX Ocircumflex Adieresis -50 KPX Ocircumflex Agrave -50 KPX Ocircumflex Amacron -50 KPX Ocircumflex Aogonek -50 KPX Ocircumflex Aring -50 KPX Ocircumflex Atilde -50 KPX Ocircumflex T -40 KPX Ocircumflex Tcaron -40 KPX Ocircumflex Tcommaaccent -40 KPX Ocircumflex V -50 KPX Ocircumflex W -50 KPX Ocircumflex X -50 KPX Ocircumflex Y -70 KPX Ocircumflex Yacute -70 KPX Ocircumflex Ydieresis -70 KPX Ocircumflex comma -40 KPX Ocircumflex period -40 KPX Odieresis A -50 KPX Odieresis Aacute -50 KPX Odieresis Abreve -50 KPX Odieresis Acircumflex -50 KPX Odieresis Adieresis -50 KPX Odieresis Agrave -50 KPX Odieresis Amacron -50 KPX Odieresis Aogonek -50 KPX Odieresis Aring -50 KPX Odieresis Atilde -50 KPX Odieresis T -40 KPX Odieresis Tcaron -40 KPX Odieresis Tcommaaccent -40 KPX Odieresis V -50 KPX Odieresis W -50 KPX Odieresis X -50 KPX Odieresis Y -70 KPX Odieresis Yacute -70 KPX Odieresis Ydieresis -70 KPX Odieresis comma -40 KPX Odieresis period -40 KPX Ograve A -50 KPX Ograve Aacute -50 KPX Ograve Abreve -50 KPX Ograve Acircumflex -50 KPX Ograve Adieresis -50 KPX Ograve Agrave -50 KPX Ograve Amacron -50 KPX Ograve Aogonek -50 KPX Ograve Aring -50 KPX Ograve Atilde -50 KPX Ograve T -40 KPX Ograve Tcaron -40 KPX Ograve Tcommaaccent -40 KPX Ograve V -50 KPX Ograve W -50 KPX Ograve X -50 KPX Ograve Y -70 KPX Ograve Yacute -70 KPX Ograve Ydieresis -70 KPX Ograve comma -40 KPX Ograve period -40 KPX Ohungarumlaut A -50 KPX Ohungarumlaut Aacute -50 KPX Ohungarumlaut Abreve -50 KPX Ohungarumlaut Acircumflex -50 KPX Ohungarumlaut Adieresis -50 KPX Ohungarumlaut Agrave -50 KPX Ohungarumlaut Amacron -50 KPX Ohungarumlaut Aogonek -50 KPX Ohungarumlaut Aring -50 KPX Ohungarumlaut Atilde -50 KPX Ohungarumlaut T -40 KPX Ohungarumlaut Tcaron -40 KPX Ohungarumlaut Tcommaaccent -40 KPX Ohungarumlaut V -50 KPX Ohungarumlaut W -50 KPX Ohungarumlaut X -50 KPX Ohungarumlaut Y -70 KPX Ohungarumlaut Yacute -70 KPX Ohungarumlaut Ydieresis -70 KPX Ohungarumlaut comma -40 KPX Ohungarumlaut period -40 KPX Omacron A -50 KPX Omacron Aacute -50 KPX Omacron Abreve -50 KPX Omacron Acircumflex -50 KPX Omacron Adieresis -50 KPX Omacron Agrave -50 KPX Omacron Amacron -50 KPX Omacron Aogonek -50 KPX Omacron Aring -50 KPX Omacron Atilde -50 KPX Omacron T -40 KPX Omacron Tcaron -40 KPX Omacron Tcommaaccent -40 KPX Omacron V -50 KPX Omacron W -50 KPX Omacron X -50 KPX Omacron Y -70 KPX Omacron Yacute -70 KPX Omacron Ydieresis -70 KPX Omacron comma -40 KPX Omacron period -40 KPX Oslash A -50 KPX Oslash Aacute -50 KPX Oslash Abreve -50 KPX Oslash Acircumflex -50 KPX Oslash Adieresis -50 KPX Oslash Agrave -50 KPX Oslash Amacron -50 KPX Oslash Aogonek -50 KPX Oslash Aring -50 KPX Oslash Atilde -50 KPX Oslash T -40 KPX Oslash Tcaron -40 KPX Oslash Tcommaaccent -40 KPX Oslash V -50 KPX Oslash W -50 KPX Oslash X -50 KPX Oslash Y -70 KPX Oslash Yacute -70 KPX Oslash Ydieresis -70 KPX Oslash comma -40 KPX Oslash period -40 KPX Otilde A -50 KPX Otilde Aacute -50 KPX Otilde Abreve -50 KPX Otilde Acircumflex -50 KPX Otilde Adieresis -50 KPX Otilde Agrave -50 KPX Otilde Amacron -50 KPX Otilde Aogonek -50 KPX Otilde Aring -50 KPX Otilde Atilde -50 KPX Otilde T -40 KPX Otilde Tcaron -40 KPX Otilde Tcommaaccent -40 KPX Otilde V -50 KPX Otilde W -50 KPX Otilde X -50 KPX Otilde Y -70 KPX Otilde Yacute -70 KPX Otilde Ydieresis -70 KPX Otilde comma -40 KPX Otilde period -40 KPX P A -100 KPX P Aacute -100 KPX P Abreve -100 KPX P Acircumflex -100 KPX P Adieresis -100 KPX P Agrave -100 KPX P Amacron -100 KPX P Aogonek -100 KPX P Aring -100 KPX P Atilde -100 KPX P a -30 KPX P aacute -30 KPX P abreve -30 KPX P acircumflex -30 KPX P adieresis -30 KPX P agrave -30 KPX P amacron -30 KPX P aogonek -30 KPX P aring -30 KPX P atilde -30 KPX P comma -120 KPX P e -30 KPX P eacute -30 KPX P ecaron -30 KPX P ecircumflex -30 KPX P edieresis -30 KPX P edotaccent -30 KPX P egrave -30 KPX P emacron -30 KPX P eogonek -30 KPX P o -40 KPX P oacute -40 KPX P ocircumflex -40 KPX P odieresis -40 KPX P ograve -40 KPX P ohungarumlaut -40 KPX P omacron -40 KPX P oslash -40 KPX P otilde -40 KPX P period -120 KPX Q U -10 KPX Q Uacute -10 KPX Q Ucircumflex -10 KPX Q Udieresis -10 KPX Q Ugrave -10 KPX Q Uhungarumlaut -10 KPX Q Umacron -10 KPX Q Uogonek -10 KPX Q Uring -10 KPX Q comma 20 KPX Q period 20 KPX R O -20 KPX R Oacute -20 KPX R Ocircumflex -20 KPX R Odieresis -20 KPX R Ograve -20 KPX R Ohungarumlaut -20 KPX R Omacron -20 KPX R Oslash -20 KPX R Otilde -20 KPX R T -20 KPX R Tcaron -20 KPX R Tcommaaccent -20 KPX R U -20 KPX R Uacute -20 KPX R Ucircumflex -20 KPX R Udieresis -20 KPX R Ugrave -20 KPX R Uhungarumlaut -20 KPX R Umacron -20 KPX R Uogonek -20 KPX R Uring -20 KPX R V -50 KPX R W -40 KPX R Y -50 KPX R Yacute -50 KPX R Ydieresis -50 KPX Racute O -20 KPX Racute Oacute -20 KPX Racute Ocircumflex -20 KPX Racute Odieresis -20 KPX Racute Ograve -20 KPX Racute Ohungarumlaut -20 KPX Racute Omacron -20 KPX Racute Oslash -20 KPX Racute Otilde -20 KPX Racute T -20 KPX Racute Tcaron -20 KPX Racute Tcommaaccent -20 KPX Racute U -20 KPX Racute Uacute -20 KPX Racute Ucircumflex -20 KPX Racute Udieresis -20 KPX Racute Ugrave -20 KPX Racute Uhungarumlaut -20 KPX Racute Umacron -20 KPX Racute Uogonek -20 KPX Racute Uring -20 KPX Racute V -50 KPX Racute W -40 KPX Racute Y -50 KPX Racute Yacute -50 KPX Racute Ydieresis -50 KPX Rcaron O -20 KPX Rcaron Oacute -20 KPX Rcaron Ocircumflex -20 KPX Rcaron Odieresis -20 KPX Rcaron Ograve -20 KPX Rcaron Ohungarumlaut -20 KPX Rcaron Omacron -20 KPX Rcaron Oslash -20 KPX Rcaron Otilde -20 KPX Rcaron T -20 KPX Rcaron Tcaron -20 KPX Rcaron Tcommaaccent -20 KPX Rcaron U -20 KPX Rcaron Uacute -20 KPX Rcaron Ucircumflex -20 KPX Rcaron Udieresis -20 KPX Rcaron Ugrave -20 KPX Rcaron Uhungarumlaut -20 KPX Rcaron Umacron -20 KPX Rcaron Uogonek -20 KPX Rcaron Uring -20 KPX Rcaron V -50 KPX Rcaron W -40 KPX Rcaron Y -50 KPX Rcaron Yacute -50 KPX Rcaron Ydieresis -50 KPX Rcommaaccent O -20 KPX Rcommaaccent Oacute -20 KPX Rcommaaccent Ocircumflex -20 KPX Rcommaaccent Odieresis -20 KPX Rcommaaccent Ograve -20 KPX Rcommaaccent Ohungarumlaut -20 KPX Rcommaaccent Omacron -20 KPX Rcommaaccent Oslash -20 KPX Rcommaaccent Otilde -20 KPX Rcommaaccent T -20 KPX Rcommaaccent Tcaron -20 KPX Rcommaaccent Tcommaaccent -20 KPX Rcommaaccent U -20 KPX Rcommaaccent Uacute -20 KPX Rcommaaccent Ucircumflex -20 KPX Rcommaaccent Udieresis -20 KPX Rcommaaccent Ugrave -20 KPX Rcommaaccent Uhungarumlaut -20 KPX Rcommaaccent Umacron -20 KPX Rcommaaccent Uogonek -20 KPX Rcommaaccent Uring -20 KPX Rcommaaccent V -50 KPX Rcommaaccent W -40 KPX Rcommaaccent Y -50 KPX Rcommaaccent Yacute -50 KPX Rcommaaccent Ydieresis -50 KPX T A -90 KPX T Aacute -90 KPX T Abreve -90 KPX T Acircumflex -90 KPX T Adieresis -90 KPX T Agrave -90 KPX T Amacron -90 KPX T Aogonek -90 KPX T Aring -90 KPX T Atilde -90 KPX T O -40 KPX T Oacute -40 KPX T Ocircumflex -40 KPX T Odieresis -40 KPX T Ograve -40 KPX T Ohungarumlaut -40 KPX T Omacron -40 KPX T Oslash -40 KPX T Otilde -40 KPX T a -80 KPX T aacute -80 KPX T abreve -80 KPX T acircumflex -80 KPX T adieresis -80 KPX T agrave -80 KPX T amacron -80 KPX T aogonek -80 KPX T aring -80 KPX T atilde -80 KPX T colon -40 KPX T comma -80 KPX T e -60 KPX T eacute -60 KPX T ecaron -60 KPX T ecircumflex -60 KPX T edieresis -60 KPX T edotaccent -60 KPX T egrave -60 KPX T emacron -60 KPX T eogonek -60 KPX T hyphen -120 KPX T o -80 KPX T oacute -80 KPX T ocircumflex -80 KPX T odieresis -80 KPX T ograve -80 KPX T ohungarumlaut -80 KPX T omacron -80 KPX T oslash -80 KPX T otilde -80 KPX T period -80 KPX T r -80 KPX T racute -80 KPX T rcommaaccent -80 KPX T semicolon -40 KPX T u -90 KPX T uacute -90 KPX T ucircumflex -90 KPX T udieresis -90 KPX T ugrave -90 KPX T uhungarumlaut -90 KPX T umacron -90 KPX T uogonek -90 KPX T uring -90 KPX T w -60 KPX T y -60 KPX T yacute -60 KPX T ydieresis -60 KPX Tcaron A -90 KPX Tcaron Aacute -90 KPX Tcaron Abreve -90 KPX Tcaron Acircumflex -90 KPX Tcaron Adieresis -90 KPX Tcaron Agrave -90 KPX Tcaron Amacron -90 KPX Tcaron Aogonek -90 KPX Tcaron Aring -90 KPX Tcaron Atilde -90 KPX Tcaron O -40 KPX Tcaron Oacute -40 KPX Tcaron Ocircumflex -40 KPX Tcaron Odieresis -40 KPX Tcaron Ograve -40 KPX Tcaron Ohungarumlaut -40 KPX Tcaron Omacron -40 KPX Tcaron Oslash -40 KPX Tcaron Otilde -40 KPX Tcaron a -80 KPX Tcaron aacute -80 KPX Tcaron abreve -80 KPX Tcaron acircumflex -80 KPX Tcaron adieresis -80 KPX Tcaron agrave -80 KPX Tcaron amacron -80 KPX Tcaron aogonek -80 KPX Tcaron aring -80 KPX Tcaron atilde -80 KPX Tcaron colon -40 KPX Tcaron comma -80 KPX Tcaron e -60 KPX Tcaron eacute -60 KPX Tcaron ecaron -60 KPX Tcaron ecircumflex -60 KPX Tcaron edieresis -60 KPX Tcaron edotaccent -60 KPX Tcaron egrave -60 KPX Tcaron emacron -60 KPX Tcaron eogonek -60 KPX Tcaron hyphen -120 KPX Tcaron o -80 KPX Tcaron oacute -80 KPX Tcaron ocircumflex -80 KPX Tcaron odieresis -80 KPX Tcaron ograve -80 KPX Tcaron ohungarumlaut -80 KPX Tcaron omacron -80 KPX Tcaron oslash -80 KPX Tcaron otilde -80 KPX Tcaron period -80 KPX Tcaron r -80 KPX Tcaron racute -80 KPX Tcaron rcommaaccent -80 KPX Tcaron semicolon -40 KPX Tcaron u -90 KPX Tcaron uacute -90 KPX Tcaron ucircumflex -90 KPX Tcaron udieresis -90 KPX Tcaron ugrave -90 KPX Tcaron uhungarumlaut -90 KPX Tcaron umacron -90 KPX Tcaron uogonek -90 KPX Tcaron uring -90 KPX Tcaron w -60 KPX Tcaron y -60 KPX Tcaron yacute -60 KPX Tcaron ydieresis -60 KPX Tcommaaccent A -90 KPX Tcommaaccent Aacute -90 KPX Tcommaaccent Abreve -90 KPX Tcommaaccent Acircumflex -90 KPX Tcommaaccent Adieresis -90 KPX Tcommaaccent Agrave -90 KPX Tcommaaccent Amacron -90 KPX Tcommaaccent Aogonek -90 KPX Tcommaaccent Aring -90 KPX Tcommaaccent Atilde -90 KPX Tcommaaccent O -40 KPX Tcommaaccent Oacute -40 KPX Tcommaaccent Ocircumflex -40 KPX Tcommaaccent Odieresis -40 KPX Tcommaaccent Ograve -40 KPX Tcommaaccent Ohungarumlaut -40 KPX Tcommaaccent Omacron -40 KPX Tcommaaccent Oslash -40 KPX Tcommaaccent Otilde -40 KPX Tcommaaccent a -80 KPX Tcommaaccent aacute -80 KPX Tcommaaccent abreve -80 KPX Tcommaaccent acircumflex -80 KPX Tcommaaccent adieresis -80 KPX Tcommaaccent agrave -80 KPX Tcommaaccent amacron -80 KPX Tcommaaccent aogonek -80 KPX Tcommaaccent aring -80 KPX Tcommaaccent atilde -80 KPX Tcommaaccent colon -40 KPX Tcommaaccent comma -80 KPX Tcommaaccent e -60 KPX Tcommaaccent eacute -60 KPX Tcommaaccent ecaron -60 KPX Tcommaaccent ecircumflex -60 KPX Tcommaaccent edieresis -60 KPX Tcommaaccent edotaccent -60 KPX Tcommaaccent egrave -60 KPX Tcommaaccent emacron -60 KPX Tcommaaccent eogonek -60 KPX Tcommaaccent hyphen -120 KPX Tcommaaccent o -80 KPX Tcommaaccent oacute -80 KPX Tcommaaccent ocircumflex -80 KPX Tcommaaccent odieresis -80 KPX Tcommaaccent ograve -80 KPX Tcommaaccent ohungarumlaut -80 KPX Tcommaaccent omacron -80 KPX Tcommaaccent oslash -80 KPX Tcommaaccent otilde -80 KPX Tcommaaccent period -80 KPX Tcommaaccent r -80 KPX Tcommaaccent racute -80 KPX Tcommaaccent rcommaaccent -80 KPX Tcommaaccent semicolon -40 KPX Tcommaaccent u -90 KPX Tcommaaccent uacute -90 KPX Tcommaaccent ucircumflex -90 KPX Tcommaaccent udieresis -90 KPX Tcommaaccent ugrave -90 KPX Tcommaaccent uhungarumlaut -90 KPX Tcommaaccent umacron -90 KPX Tcommaaccent uogonek -90 KPX Tcommaaccent uring -90 KPX Tcommaaccent w -60 KPX Tcommaaccent y -60 KPX Tcommaaccent yacute -60 KPX Tcommaaccent ydieresis -60 KPX U A -50 KPX U Aacute -50 KPX U Abreve -50 KPX U Acircumflex -50 KPX U Adieresis -50 KPX U Agrave -50 KPX U Amacron -50 KPX U Aogonek -50 KPX U Aring -50 KPX U Atilde -50 KPX U comma -30 KPX U period -30 KPX Uacute A -50 KPX Uacute Aacute -50 KPX Uacute Abreve -50 KPX Uacute Acircumflex -50 KPX Uacute Adieresis -50 KPX Uacute Agrave -50 KPX Uacute Amacron -50 KPX Uacute Aogonek -50 KPX Uacute Aring -50 KPX Uacute Atilde -50 KPX Uacute comma -30 KPX Uacute period -30 KPX Ucircumflex A -50 KPX Ucircumflex Aacute -50 KPX Ucircumflex Abreve -50 KPX Ucircumflex Acircumflex -50 KPX Ucircumflex Adieresis -50 KPX Ucircumflex Agrave -50 KPX Ucircumflex Amacron -50 KPX Ucircumflex Aogonek -50 KPX Ucircumflex Aring -50 KPX Ucircumflex Atilde -50 KPX Ucircumflex comma -30 KPX Ucircumflex period -30 KPX Udieresis A -50 KPX Udieresis Aacute -50 KPX Udieresis Abreve -50 KPX Udieresis Acircumflex -50 KPX Udieresis Adieresis -50 KPX Udieresis Agrave -50 KPX Udieresis Amacron -50 KPX Udieresis Aogonek -50 KPX Udieresis Aring -50 KPX Udieresis Atilde -50 KPX Udieresis comma -30 KPX Udieresis period -30 KPX Ugrave A -50 KPX Ugrave Aacute -50 KPX Ugrave Abreve -50 KPX Ugrave Acircumflex -50 KPX Ugrave Adieresis -50 KPX Ugrave Agrave -50 KPX Ugrave Amacron -50 KPX Ugrave Aogonek -50 KPX Ugrave Aring -50 KPX Ugrave Atilde -50 KPX Ugrave comma -30 KPX Ugrave period -30 KPX Uhungarumlaut A -50 KPX Uhungarumlaut Aacute -50 KPX Uhungarumlaut Abreve -50 KPX Uhungarumlaut Acircumflex -50 KPX Uhungarumlaut Adieresis -50 KPX Uhungarumlaut Agrave -50 KPX Uhungarumlaut Amacron -50 KPX Uhungarumlaut Aogonek -50 KPX Uhungarumlaut Aring -50 KPX Uhungarumlaut Atilde -50 KPX Uhungarumlaut comma -30 KPX Uhungarumlaut period -30 KPX Umacron A -50 KPX Umacron Aacute -50 KPX Umacron Abreve -50 KPX Umacron Acircumflex -50 KPX Umacron Adieresis -50 KPX Umacron Agrave -50 KPX Umacron Amacron -50 KPX Umacron Aogonek -50 KPX Umacron Aring -50 KPX Umacron Atilde -50 KPX Umacron comma -30 KPX Umacron period -30 KPX Uogonek A -50 KPX Uogonek Aacute -50 KPX Uogonek Abreve -50 KPX Uogonek Acircumflex -50 KPX Uogonek Adieresis -50 KPX Uogonek Agrave -50 KPX Uogonek Amacron -50 KPX Uogonek Aogonek -50 KPX Uogonek Aring -50 KPX Uogonek Atilde -50 KPX Uogonek comma -30 KPX Uogonek period -30 KPX Uring A -50 KPX Uring Aacute -50 KPX Uring Abreve -50 KPX Uring Acircumflex -50 KPX Uring Adieresis -50 KPX Uring Agrave -50 KPX Uring Amacron -50 KPX Uring Aogonek -50 KPX Uring Aring -50 KPX Uring Atilde -50 KPX Uring comma -30 KPX Uring period -30 KPX V A -80 KPX V Aacute -80 KPX V Abreve -80 KPX V Acircumflex -80 KPX V Adieresis -80 KPX V Agrave -80 KPX V Amacron -80 KPX V Aogonek -80 KPX V Aring -80 KPX V Atilde -80 KPX V G -50 KPX V Gbreve -50 KPX V Gcommaaccent -50 KPX V O -50 KPX V Oacute -50 KPX V Ocircumflex -50 KPX V Odieresis -50 KPX V Ograve -50 KPX V Ohungarumlaut -50 KPX V Omacron -50 KPX V Oslash -50 KPX V Otilde -50 KPX V a -60 KPX V aacute -60 KPX V abreve -60 KPX V acircumflex -60 KPX V adieresis -60 KPX V agrave -60 KPX V amacron -60 KPX V aogonek -60 KPX V aring -60 KPX V atilde -60 KPX V colon -40 KPX V comma -120 KPX V e -50 KPX V eacute -50 KPX V ecaron -50 KPX V ecircumflex -50 KPX V edieresis -50 KPX V edotaccent -50 KPX V egrave -50 KPX V emacron -50 KPX V eogonek -50 KPX V hyphen -80 KPX V o -90 KPX V oacute -90 KPX V ocircumflex -90 KPX V odieresis -90 KPX V ograve -90 KPX V ohungarumlaut -90 KPX V omacron -90 KPX V oslash -90 KPX V otilde -90 KPX V period -120 KPX V semicolon -40 KPX V u -60 KPX V uacute -60 KPX V ucircumflex -60 KPX V udieresis -60 KPX V ugrave -60 KPX V uhungarumlaut -60 KPX V umacron -60 KPX V uogonek -60 KPX V uring -60 KPX W A -60 KPX W Aacute -60 KPX W Abreve -60 KPX W Acircumflex -60 KPX W Adieresis -60 KPX W Agrave -60 KPX W Amacron -60 KPX W Aogonek -60 KPX W Aring -60 KPX W Atilde -60 KPX W O -20 KPX W Oacute -20 KPX W Ocircumflex -20 KPX W Odieresis -20 KPX W Ograve -20 KPX W Ohungarumlaut -20 KPX W Omacron -20 KPX W Oslash -20 KPX W Otilde -20 KPX W a -40 KPX W aacute -40 KPX W abreve -40 KPX W acircumflex -40 KPX W adieresis -40 KPX W agrave -40 KPX W amacron -40 KPX W aogonek -40 KPX W aring -40 KPX W atilde -40 KPX W colon -10 KPX W comma -80 KPX W e -35 KPX W eacute -35 KPX W ecaron -35 KPX W ecircumflex -35 KPX W edieresis -35 KPX W edotaccent -35 KPX W egrave -35 KPX W emacron -35 KPX W eogonek -35 KPX W hyphen -40 KPX W o -60 KPX W oacute -60 KPX W ocircumflex -60 KPX W odieresis -60 KPX W ograve -60 KPX W ohungarumlaut -60 KPX W omacron -60 KPX W oslash -60 KPX W otilde -60 KPX W period -80 KPX W semicolon -10 KPX W u -45 KPX W uacute -45 KPX W ucircumflex -45 KPX W udieresis -45 KPX W ugrave -45 KPX W uhungarumlaut -45 KPX W umacron -45 KPX W uogonek -45 KPX W uring -45 KPX W y -20 KPX W yacute -20 KPX W ydieresis -20 KPX Y A -110 KPX Y Aacute -110 KPX Y Abreve -110 KPX Y Acircumflex -110 KPX Y Adieresis -110 KPX Y Agrave -110 KPX Y Amacron -110 KPX Y Aogonek -110 KPX Y Aring -110 KPX Y Atilde -110 KPX Y O -70 KPX Y Oacute -70 KPX Y Ocircumflex -70 KPX Y Odieresis -70 KPX Y Ograve -70 KPX Y Ohungarumlaut -70 KPX Y Omacron -70 KPX Y Oslash -70 KPX Y Otilde -70 KPX Y a -90 KPX Y aacute -90 KPX Y abreve -90 KPX Y acircumflex -90 KPX Y adieresis -90 KPX Y agrave -90 KPX Y amacron -90 KPX Y aogonek -90 KPX Y aring -90 KPX Y atilde -90 KPX Y colon -50 KPX Y comma -100 KPX Y e -80 KPX Y eacute -80 KPX Y ecaron -80 KPX Y ecircumflex -80 KPX Y edieresis -80 KPX Y edotaccent -80 KPX Y egrave -80 KPX Y emacron -80 KPX Y eogonek -80 KPX Y o -100 KPX Y oacute -100 KPX Y ocircumflex -100 KPX Y odieresis -100 KPX Y ograve -100 KPX Y ohungarumlaut -100 KPX Y omacron -100 KPX Y oslash -100 KPX Y otilde -100 KPX Y period -100 KPX Y semicolon -50 KPX Y u -100 KPX Y uacute -100 KPX Y ucircumflex -100 KPX Y udieresis -100 KPX Y ugrave -100 KPX Y uhungarumlaut -100 KPX Y umacron -100 KPX Y uogonek -100 KPX Y uring -100 KPX Yacute A -110 KPX Yacute Aacute -110 KPX Yacute Abreve -110 KPX Yacute Acircumflex -110 KPX Yacute Adieresis -110 KPX Yacute Agrave -110 KPX Yacute Amacron -110 KPX Yacute Aogonek -110 KPX Yacute Aring -110 KPX Yacute Atilde -110 KPX Yacute O -70 KPX Yacute Oacute -70 KPX Yacute Ocircumflex -70 KPX Yacute Odieresis -70 KPX Yacute Ograve -70 KPX Yacute Ohungarumlaut -70 KPX Yacute Omacron -70 KPX Yacute Oslash -70 KPX Yacute Otilde -70 KPX Yacute a -90 KPX Yacute aacute -90 KPX Yacute abreve -90 KPX Yacute acircumflex -90 KPX Yacute adieresis -90 KPX Yacute agrave -90 KPX Yacute amacron -90 KPX Yacute aogonek -90 KPX Yacute aring -90 KPX Yacute atilde -90 KPX Yacute colon -50 KPX Yacute comma -100 KPX Yacute e -80 KPX Yacute eacute -80 KPX Yacute ecaron -80 KPX Yacute ecircumflex -80 KPX Yacute edieresis -80 KPX Yacute edotaccent -80 KPX Yacute egrave -80 KPX Yacute emacron -80 KPX Yacute eogonek -80 KPX Yacute o -100 KPX Yacute oacute -100 KPX Yacute ocircumflex -100 KPX Yacute odieresis -100 KPX Yacute ograve -100 KPX Yacute ohungarumlaut -100 KPX Yacute omacron -100 KPX Yacute oslash -100 KPX Yacute otilde -100 KPX Yacute period -100 KPX Yacute semicolon -50 KPX Yacute u -100 KPX Yacute uacute -100 KPX Yacute ucircumflex -100 KPX Yacute udieresis -100 KPX Yacute ugrave -100 KPX Yacute uhungarumlaut -100 KPX Yacute umacron -100 KPX Yacute uogonek -100 KPX Yacute uring -100 KPX Ydieresis A -110 KPX Ydieresis Aacute -110 KPX Ydieresis Abreve -110 KPX Ydieresis Acircumflex -110 KPX Ydieresis Adieresis -110 KPX Ydieresis Agrave -110 KPX Ydieresis Amacron -110 KPX Ydieresis Aogonek -110 KPX Ydieresis Aring -110 KPX Ydieresis Atilde -110 KPX Ydieresis O -70 KPX Ydieresis Oacute -70 KPX Ydieresis Ocircumflex -70 KPX Ydieresis Odieresis -70 KPX Ydieresis Ograve -70 KPX Ydieresis Ohungarumlaut -70 KPX Ydieresis Omacron -70 KPX Ydieresis Oslash -70 KPX Ydieresis Otilde -70 KPX Ydieresis a -90 KPX Ydieresis aacute -90 KPX Ydieresis abreve -90 KPX Ydieresis acircumflex -90 KPX Ydieresis adieresis -90 KPX Ydieresis agrave -90 KPX Ydieresis amacron -90 KPX Ydieresis aogonek -90 KPX Ydieresis aring -90 KPX Ydieresis atilde -90 KPX Ydieresis colon -50 KPX Ydieresis comma -100 KPX Ydieresis e -80 KPX Ydieresis eacute -80 KPX Ydieresis ecaron -80 KPX Ydieresis ecircumflex -80 KPX Ydieresis edieresis -80 KPX Ydieresis edotaccent -80 KPX Ydieresis egrave -80 KPX Ydieresis emacron -80 KPX Ydieresis eogonek -80 KPX Ydieresis o -100 KPX Ydieresis oacute -100 KPX Ydieresis ocircumflex -100 KPX Ydieresis odieresis -100 KPX Ydieresis ograve -100 KPX Ydieresis ohungarumlaut -100 KPX Ydieresis omacron -100 KPX Ydieresis oslash -100 KPX Ydieresis otilde -100 KPX Ydieresis period -100 KPX Ydieresis semicolon -50 KPX Ydieresis u -100 KPX Ydieresis uacute -100 KPX Ydieresis ucircumflex -100 KPX Ydieresis udieresis -100 KPX Ydieresis ugrave -100 KPX Ydieresis uhungarumlaut -100 KPX Ydieresis umacron -100 KPX Ydieresis uogonek -100 KPX Ydieresis uring -100 KPX a g -10 KPX a gbreve -10 KPX a gcommaaccent -10 KPX a v -15 KPX a w -15 KPX a y -20 KPX a yacute -20 KPX a ydieresis -20 KPX aacute g -10 KPX aacute gbreve -10 KPX aacute gcommaaccent -10 KPX aacute v -15 KPX aacute w -15 KPX aacute y -20 KPX aacute yacute -20 KPX aacute ydieresis -20 KPX abreve g -10 KPX abreve gbreve -10 KPX abreve gcommaaccent -10 KPX abreve v -15 KPX abreve w -15 KPX abreve y -20 KPX abreve yacute -20 KPX abreve ydieresis -20 KPX acircumflex g -10 KPX acircumflex gbreve -10 KPX acircumflex gcommaaccent -10 KPX acircumflex v -15 KPX acircumflex w -15 KPX acircumflex y -20 KPX acircumflex yacute -20 KPX acircumflex ydieresis -20 KPX adieresis g -10 KPX adieresis gbreve -10 KPX adieresis gcommaaccent -10 KPX adieresis v -15 KPX adieresis w -15 KPX adieresis y -20 KPX adieresis yacute -20 KPX adieresis ydieresis -20 KPX agrave g -10 KPX agrave gbreve -10 KPX agrave gcommaaccent -10 KPX agrave v -15 KPX agrave w -15 KPX agrave y -20 KPX agrave yacute -20 KPX agrave ydieresis -20 KPX amacron g -10 KPX amacron gbreve -10 KPX amacron gcommaaccent -10 KPX amacron v -15 KPX amacron w -15 KPX amacron y -20 KPX amacron yacute -20 KPX amacron ydieresis -20 KPX aogonek g -10 KPX aogonek gbreve -10 KPX aogonek gcommaaccent -10 KPX aogonek v -15 KPX aogonek w -15 KPX aogonek y -20 KPX aogonek yacute -20 KPX aogonek ydieresis -20 KPX aring g -10 KPX aring gbreve -10 KPX aring gcommaaccent -10 KPX aring v -15 KPX aring w -15 KPX aring y -20 KPX aring yacute -20 KPX aring ydieresis -20 KPX atilde g -10 KPX atilde gbreve -10 KPX atilde gcommaaccent -10 KPX atilde v -15 KPX atilde w -15 KPX atilde y -20 KPX atilde yacute -20 KPX atilde ydieresis -20 KPX b l -10 KPX b lacute -10 KPX b lcommaaccent -10 KPX b lslash -10 KPX b u -20 KPX b uacute -20 KPX b ucircumflex -20 KPX b udieresis -20 KPX b ugrave -20 KPX b uhungarumlaut -20 KPX b umacron -20 KPX b uogonek -20 KPX b uring -20 KPX b v -20 KPX b y -20 KPX b yacute -20 KPX b ydieresis -20 KPX c h -10 KPX c k -20 KPX c kcommaaccent -20 KPX c l -20 KPX c lacute -20 KPX c lcommaaccent -20 KPX c lslash -20 KPX c y -10 KPX c yacute -10 KPX c ydieresis -10 KPX cacute h -10 KPX cacute k -20 KPX cacute kcommaaccent -20 KPX cacute l -20 KPX cacute lacute -20 KPX cacute lcommaaccent -20 KPX cacute lslash -20 KPX cacute y -10 KPX cacute yacute -10 KPX cacute ydieresis -10 KPX ccaron h -10 KPX ccaron k -20 KPX ccaron kcommaaccent -20 KPX ccaron l -20 KPX ccaron lacute -20 KPX ccaron lcommaaccent -20 KPX ccaron lslash -20 KPX ccaron y -10 KPX ccaron yacute -10 KPX ccaron ydieresis -10 KPX ccedilla h -10 KPX ccedilla k -20 KPX ccedilla kcommaaccent -20 KPX ccedilla l -20 KPX ccedilla lacute -20 KPX ccedilla lcommaaccent -20 KPX ccedilla lslash -20 KPX ccedilla y -10 KPX ccedilla yacute -10 KPX ccedilla ydieresis -10 KPX colon space -40 KPX comma quotedblright -120 KPX comma quoteright -120 KPX comma space -40 KPX d d -10 KPX d dcroat -10 KPX d v -15 KPX d w -15 KPX d y -15 KPX d yacute -15 KPX d ydieresis -15 KPX dcroat d -10 KPX dcroat dcroat -10 KPX dcroat v -15 KPX dcroat w -15 KPX dcroat y -15 KPX dcroat yacute -15 KPX dcroat ydieresis -15 KPX e comma 10 KPX e period 20 KPX e v -15 KPX e w -15 KPX e x -15 KPX e y -15 KPX e yacute -15 KPX e ydieresis -15 KPX eacute comma 10 KPX eacute period 20 KPX eacute v -15 KPX eacute w -15 KPX eacute x -15 KPX eacute y -15 KPX eacute yacute -15 KPX eacute ydieresis -15 KPX ecaron comma 10 KPX ecaron period 20 KPX ecaron v -15 KPX ecaron w -15 KPX ecaron x -15 KPX ecaron y -15 KPX ecaron yacute -15 KPX ecaron ydieresis -15 KPX ecircumflex comma 10 KPX ecircumflex period 20 KPX ecircumflex v -15 KPX ecircumflex w -15 KPX ecircumflex x -15 KPX ecircumflex y -15 KPX ecircumflex yacute -15 KPX ecircumflex ydieresis -15 KPX edieresis comma 10 KPX edieresis period 20 KPX edieresis v -15 KPX edieresis w -15 KPX edieresis x -15 KPX edieresis y -15 KPX edieresis yacute -15 KPX edieresis ydieresis -15 KPX edotaccent comma 10 KPX edotaccent period 20 KPX edotaccent v -15 KPX edotaccent w -15 KPX edotaccent x -15 KPX edotaccent y -15 KPX edotaccent yacute -15 KPX edotaccent ydieresis -15 KPX egrave comma 10 KPX egrave period 20 KPX egrave v -15 KPX egrave w -15 KPX egrave x -15 KPX egrave y -15 KPX egrave yacute -15 KPX egrave ydieresis -15 KPX emacron comma 10 KPX emacron period 20 KPX emacron v -15 KPX emacron w -15 KPX emacron x -15 KPX emacron y -15 KPX emacron yacute -15 KPX emacron ydieresis -15 KPX eogonek comma 10 KPX eogonek period 20 KPX eogonek v -15 KPX eogonek w -15 KPX eogonek x -15 KPX eogonek y -15 KPX eogonek yacute -15 KPX eogonek ydieresis -15 KPX f comma -10 KPX f e -10 KPX f eacute -10 KPX f ecaron -10 KPX f ecircumflex -10 KPX f edieresis -10 KPX f edotaccent -10 KPX f egrave -10 KPX f emacron -10 KPX f eogonek -10 KPX f o -20 KPX f oacute -20 KPX f ocircumflex -20 KPX f odieresis -20 KPX f ograve -20 KPX f ohungarumlaut -20 KPX f omacron -20 KPX f oslash -20 KPX f otilde -20 KPX f period -10 KPX f quotedblright 30 KPX f quoteright 30 KPX g e 10 KPX g eacute 10 KPX g ecaron 10 KPX g ecircumflex 10 KPX g edieresis 10 KPX g edotaccent 10 KPX g egrave 10 KPX g emacron 10 KPX g eogonek 10 KPX g g -10 KPX g gbreve -10 KPX g gcommaaccent -10 KPX gbreve e 10 KPX gbreve eacute 10 KPX gbreve ecaron 10 KPX gbreve ecircumflex 10 KPX gbreve edieresis 10 KPX gbreve edotaccent 10 KPX gbreve egrave 10 KPX gbreve emacron 10 KPX gbreve eogonek 10 KPX gbreve g -10 KPX gbreve gbreve -10 KPX gbreve gcommaaccent -10 KPX gcommaaccent e 10 KPX gcommaaccent eacute 10 KPX gcommaaccent ecaron 10 KPX gcommaaccent ecircumflex 10 KPX gcommaaccent edieresis 10 KPX gcommaaccent edotaccent 10 KPX gcommaaccent egrave 10 KPX gcommaaccent emacron 10 KPX gcommaaccent eogonek 10 KPX gcommaaccent g -10 KPX gcommaaccent gbreve -10 KPX gcommaaccent gcommaaccent -10 KPX h y -20 KPX h yacute -20 KPX h ydieresis -20 KPX k o -15 KPX k oacute -15 KPX k ocircumflex -15 KPX k odieresis -15 KPX k ograve -15 KPX k ohungarumlaut -15 KPX k omacron -15 KPX k oslash -15 KPX k otilde -15 KPX kcommaaccent o -15 KPX kcommaaccent oacute -15 KPX kcommaaccent ocircumflex -15 KPX kcommaaccent odieresis -15 KPX kcommaaccent ograve -15 KPX kcommaaccent ohungarumlaut -15 KPX kcommaaccent omacron -15 KPX kcommaaccent oslash -15 KPX kcommaaccent otilde -15 KPX l w -15 KPX l y -15 KPX l yacute -15 KPX l ydieresis -15 KPX lacute w -15 KPX lacute y -15 KPX lacute yacute -15 KPX lacute ydieresis -15 KPX lcommaaccent w -15 KPX lcommaaccent y -15 KPX lcommaaccent yacute -15 KPX lcommaaccent ydieresis -15 KPX lslash w -15 KPX lslash y -15 KPX lslash yacute -15 KPX lslash ydieresis -15 KPX m u -20 KPX m uacute -20 KPX m ucircumflex -20 KPX m udieresis -20 KPX m ugrave -20 KPX m uhungarumlaut -20 KPX m umacron -20 KPX m uogonek -20 KPX m uring -20 KPX m y -30 KPX m yacute -30 KPX m ydieresis -30 KPX n u -10 KPX n uacute -10 KPX n ucircumflex -10 KPX n udieresis -10 KPX n ugrave -10 KPX n uhungarumlaut -10 KPX n umacron -10 KPX n uogonek -10 KPX n uring -10 KPX n v -40 KPX n y -20 KPX n yacute -20 KPX n ydieresis -20 KPX nacute u -10 KPX nacute uacute -10 KPX nacute ucircumflex -10 KPX nacute udieresis -10 KPX nacute ugrave -10 KPX nacute uhungarumlaut -10 KPX nacute umacron -10 KPX nacute uogonek -10 KPX nacute uring -10 KPX nacute v -40 KPX nacute y -20 KPX nacute yacute -20 KPX nacute ydieresis -20 KPX ncaron u -10 KPX ncaron uacute -10 KPX ncaron ucircumflex -10 KPX ncaron udieresis -10 KPX ncaron ugrave -10 KPX ncaron uhungarumlaut -10 KPX ncaron umacron -10 KPX ncaron uogonek -10 KPX ncaron uring -10 KPX ncaron v -40 KPX ncaron y -20 KPX ncaron yacute -20 KPX ncaron ydieresis -20 KPX ncommaaccent u -10 KPX ncommaaccent uacute -10 KPX ncommaaccent ucircumflex -10 KPX ncommaaccent udieresis -10 KPX ncommaaccent ugrave -10 KPX ncommaaccent uhungarumlaut -10 KPX ncommaaccent umacron -10 KPX ncommaaccent uogonek -10 KPX ncommaaccent uring -10 KPX ncommaaccent v -40 KPX ncommaaccent y -20 KPX ncommaaccent yacute -20 KPX ncommaaccent ydieresis -20 KPX ntilde u -10 KPX ntilde uacute -10 KPX ntilde ucircumflex -10 KPX ntilde udieresis -10 KPX ntilde ugrave -10 KPX ntilde uhungarumlaut -10 KPX ntilde umacron -10 KPX ntilde uogonek -10 KPX ntilde uring -10 KPX ntilde v -40 KPX ntilde y -20 KPX ntilde yacute -20 KPX ntilde ydieresis -20 KPX o v -20 KPX o w -15 KPX o x -30 KPX o y -20 KPX o yacute -20 KPX o ydieresis -20 KPX oacute v -20 KPX oacute w -15 KPX oacute x -30 KPX oacute y -20 KPX oacute yacute -20 KPX oacute ydieresis -20 KPX ocircumflex v -20 KPX ocircumflex w -15 KPX ocircumflex x -30 KPX ocircumflex y -20 KPX ocircumflex yacute -20 KPX ocircumflex ydieresis -20 KPX odieresis v -20 KPX odieresis w -15 KPX odieresis x -30 KPX odieresis y -20 KPX odieresis yacute -20 KPX odieresis ydieresis -20 KPX ograve v -20 KPX ograve w -15 KPX ograve x -30 KPX ograve y -20 KPX ograve yacute -20 KPX ograve ydieresis -20 KPX ohungarumlaut v -20 KPX ohungarumlaut w -15 KPX ohungarumlaut x -30 KPX ohungarumlaut y -20 KPX ohungarumlaut yacute -20 KPX ohungarumlaut ydieresis -20 KPX omacron v -20 KPX omacron w -15 KPX omacron x -30 KPX omacron y -20 KPX omacron yacute -20 KPX omacron ydieresis -20 KPX oslash v -20 KPX oslash w -15 KPX oslash x -30 KPX oslash y -20 KPX oslash yacute -20 KPX oslash ydieresis -20 KPX otilde v -20 KPX otilde w -15 KPX otilde x -30 KPX otilde y -20 KPX otilde yacute -20 KPX otilde ydieresis -20 KPX p y -15 KPX p yacute -15 KPX p ydieresis -15 KPX period quotedblright -120 KPX period quoteright -120 KPX period space -40 KPX quotedblright space -80 KPX quoteleft quoteleft -46 KPX quoteright d -80 KPX quoteright dcroat -80 KPX quoteright l -20 KPX quoteright lacute -20 KPX quoteright lcommaaccent -20 KPX quoteright lslash -20 KPX quoteright quoteright -46 KPX quoteright r -40 KPX quoteright racute -40 KPX quoteright rcaron -40 KPX quoteright rcommaaccent -40 KPX quoteright s -60 KPX quoteright sacute -60 KPX quoteright scaron -60 KPX quoteright scedilla -60 KPX quoteright scommaaccent -60 KPX quoteright space -80 KPX quoteright v -20 KPX r c -20 KPX r cacute -20 KPX r ccaron -20 KPX r ccedilla -20 KPX r comma -60 KPX r d -20 KPX r dcroat -20 KPX r g -15 KPX r gbreve -15 KPX r gcommaaccent -15 KPX r hyphen -20 KPX r o -20 KPX r oacute -20 KPX r ocircumflex -20 KPX r odieresis -20 KPX r ograve -20 KPX r ohungarumlaut -20 KPX r omacron -20 KPX r oslash -20 KPX r otilde -20 KPX r period -60 KPX r q -20 KPX r s -15 KPX r sacute -15 KPX r scaron -15 KPX r scedilla -15 KPX r scommaaccent -15 KPX r t 20 KPX r tcommaaccent 20 KPX r v 10 KPX r y 10 KPX r yacute 10 KPX r ydieresis 10 KPX racute c -20 KPX racute cacute -20 KPX racute ccaron -20 KPX racute ccedilla -20 KPX racute comma -60 KPX racute d -20 KPX racute dcroat -20 KPX racute g -15 KPX racute gbreve -15 KPX racute gcommaaccent -15 KPX racute hyphen -20 KPX racute o -20 KPX racute oacute -20 KPX racute ocircumflex -20 KPX racute odieresis -20 KPX racute ograve -20 KPX racute ohungarumlaut -20 KPX racute omacron -20 KPX racute oslash -20 KPX racute otilde -20 KPX racute period -60 KPX racute q -20 KPX racute s -15 KPX racute sacute -15 KPX racute scaron -15 KPX racute scedilla -15 KPX racute scommaaccent -15 KPX racute t 20 KPX racute tcommaaccent 20 KPX racute v 10 KPX racute y 10 KPX racute yacute 10 KPX racute ydieresis 10 KPX rcaron c -20 KPX rcaron cacute -20 KPX rcaron ccaron -20 KPX rcaron ccedilla -20 KPX rcaron comma -60 KPX rcaron d -20 KPX rcaron dcroat -20 KPX rcaron g -15 KPX rcaron gbreve -15 KPX rcaron gcommaaccent -15 KPX rcaron hyphen -20 KPX rcaron o -20 KPX rcaron oacute -20 KPX rcaron ocircumflex -20 KPX rcaron odieresis -20 KPX rcaron ograve -20 KPX rcaron ohungarumlaut -20 KPX rcaron omacron -20 KPX rcaron oslash -20 KPX rcaron otilde -20 KPX rcaron period -60 KPX rcaron q -20 KPX rcaron s -15 KPX rcaron sacute -15 KPX rcaron scaron -15 KPX rcaron scedilla -15 KPX rcaron scommaaccent -15 KPX rcaron t 20 KPX rcaron tcommaaccent 20 KPX rcaron v 10 KPX rcaron y 10 KPX rcaron yacute 10 KPX rcaron ydieresis 10 KPX rcommaaccent c -20 KPX rcommaaccent cacute -20 KPX rcommaaccent ccaron -20 KPX rcommaaccent ccedilla -20 KPX rcommaaccent comma -60 KPX rcommaaccent d -20 KPX rcommaaccent dcroat -20 KPX rcommaaccent g -15 KPX rcommaaccent gbreve -15 KPX rcommaaccent gcommaaccent -15 KPX rcommaaccent hyphen -20 KPX rcommaaccent o -20 KPX rcommaaccent oacute -20 KPX rcommaaccent ocircumflex -20 KPX rcommaaccent odieresis -20 KPX rcommaaccent ograve -20 KPX rcommaaccent ohungarumlaut -20 KPX rcommaaccent omacron -20 KPX rcommaaccent oslash -20 KPX rcommaaccent otilde -20 KPX rcommaaccent period -60 KPX rcommaaccent q -20 KPX rcommaaccent s -15 KPX rcommaaccent sacute -15 KPX rcommaaccent scaron -15 KPX rcommaaccent scedilla -15 KPX rcommaaccent scommaaccent -15 KPX rcommaaccent t 20 KPX rcommaaccent tcommaaccent 20 KPX rcommaaccent v 10 KPX rcommaaccent y 10 KPX rcommaaccent yacute 10 KPX rcommaaccent ydieresis 10 KPX s w -15 KPX sacute w -15 KPX scaron w -15 KPX scedilla w -15 KPX scommaaccent w -15 KPX semicolon space -40 KPX space T -100 KPX space Tcaron -100 KPX space Tcommaaccent -100 KPX space V -80 KPX space W -80 KPX space Y -120 KPX space Yacute -120 KPX space Ydieresis -120 KPX space quotedblleft -80 KPX space quoteleft -60 KPX v a -20 KPX v aacute -20 KPX v abreve -20 KPX v acircumflex -20 KPX v adieresis -20 KPX v agrave -20 KPX v amacron -20 KPX v aogonek -20 KPX v aring -20 KPX v atilde -20 KPX v comma -80 KPX v o -30 KPX v oacute -30 KPX v ocircumflex -30 KPX v odieresis -30 KPX v ograve -30 KPX v ohungarumlaut -30 KPX v omacron -30 KPX v oslash -30 KPX v otilde -30 KPX v period -80 KPX w comma -40 KPX w o -20 KPX w oacute -20 KPX w ocircumflex -20 KPX w odieresis -20 KPX w ograve -20 KPX w ohungarumlaut -20 KPX w omacron -20 KPX w oslash -20 KPX w otilde -20 KPX w period -40 KPX x e -10 KPX x eacute -10 KPX x ecaron -10 KPX x ecircumflex -10 KPX x edieresis -10 KPX x edotaccent -10 KPX x egrave -10 KPX x emacron -10 KPX x eogonek -10 KPX y a -30 KPX y aacute -30 KPX y abreve -30 KPX y acircumflex -30 KPX y adieresis -30 KPX y agrave -30 KPX y amacron -30 KPX y aogonek -30 KPX y aring -30 KPX y atilde -30 KPX y comma -80 KPX y e -10 KPX y eacute -10 KPX y ecaron -10 KPX y ecircumflex -10 KPX y edieresis -10 KPX y edotaccent -10 KPX y egrave -10 KPX y emacron -10 KPX y eogonek -10 KPX y o -25 KPX y oacute -25 KPX y ocircumflex -25 KPX y odieresis -25 KPX y ograve -25 KPX y ohungarumlaut -25 KPX y omacron -25 KPX y oslash -25 KPX y otilde -25 KPX y period -80 KPX yacute a -30 KPX yacute aacute -30 KPX yacute abreve -30 KPX yacute acircumflex -30 KPX yacute adieresis -30 KPX yacute agrave -30 KPX yacute amacron -30 KPX yacute aogonek -30 KPX yacute aring -30 KPX yacute atilde -30 KPX yacute comma -80 KPX yacute e -10 KPX yacute eacute -10 KPX yacute ecaron -10 KPX yacute ecircumflex -10 KPX yacute edieresis -10 KPX yacute edotaccent -10 KPX yacute egrave -10 KPX yacute emacron -10 KPX yacute eogonek -10 KPX yacute o -25 KPX yacute oacute -25 KPX yacute ocircumflex -25 KPX yacute odieresis -25 KPX yacute ograve -25 KPX yacute ohungarumlaut -25 KPX yacute omacron -25 KPX yacute oslash -25 KPX yacute otilde -25 KPX yacute period -80 KPX ydieresis a -30 KPX ydieresis aacute -30 KPX ydieresis abreve -30 KPX ydieresis acircumflex -30 KPX ydieresis adieresis -30 KPX ydieresis agrave -30 KPX ydieresis amacron -30 KPX ydieresis aogonek -30 KPX ydieresis aring -30 KPX ydieresis atilde -30 KPX ydieresis comma -80 KPX ydieresis e -10 KPX ydieresis eacute -10 KPX ydieresis ecaron -10 KPX ydieresis ecircumflex -10 KPX ydieresis edieresis -10 KPX ydieresis edotaccent -10 KPX ydieresis egrave -10 KPX ydieresis emacron -10 KPX ydieresis eogonek -10 KPX ydieresis o -25 KPX ydieresis oacute -25 KPX ydieresis ocircumflex -25 KPX ydieresis odieresis -25 KPX ydieresis ograve -25 KPX ydieresis ohungarumlaut -25 KPX ydieresis omacron -25 KPX ydieresis oslash -25 KPX ydieresis otilde -25 KPX ydieresis period -80 KPX z e 10 KPX z eacute 10 KPX z ecaron 10 KPX z ecircumflex 10 KPX z edieresis 10 KPX z edotaccent 10 KPX z egrave 10 KPX z emacron 10 KPX z eogonek 10 KPX zacute e 10 KPX zacute eacute 10 KPX zacute ecaron 10 KPX zacute ecircumflex 10 KPX zacute edieresis 10 KPX zacute edotaccent 10 KPX zacute egrave 10 KPX zacute emacron 10 KPX zacute eogonek 10 KPX zcaron e 10 KPX zcaron eacute 10 KPX zcaron ecaron 10 KPX zcaron ecircumflex 10 KPX zcaron edieresis 10 KPX zcaron edotaccent 10 KPX zcaron egrave 10 KPX zcaron emacron 10 KPX zcaron eogonek 10 KPX zdotaccent e 10 KPX zdotaccent eacute 10 KPX zdotaccent ecaron 10 KPX zdotaccent ecircumflex 10 KPX zdotaccent edieresis 10 KPX zdotaccent edotaccent 10 KPX zdotaccent egrave 10 KPX zdotaccent emacron 10 KPX zdotaccent eogonek 10 EndKernPairs EndKernData EndFontMetrics gle-graphics-4.2.4c/src/fonts/Adobe-Core35_AFMs-314/NewCenturySchlbk-BoldItalic.afm0000664000000000000000000021366011405446017026031 0ustar rootrootStartFontMetrics 4.1 Comment Copyright (c) 1985, 1987, 1989, 1991, 1992, 1997 Adobe Systems Incorporated. All Rights Reserved. Comment Creation Date: Thu May 1 14:34:01 1997 Comment UniqueID 43097 Comment VMusage 44127 55152 FontName NewCenturySchlbk-BoldItalic FullName New Century Schoolbook Bold Italic FamilyName New Century Schoolbook Weight Bold ItalicAngle -16 IsFixedPitch false FontBBox -205 -250 1147 991 UnderlinePosition -100 UnderlineThickness 50 Version 002.000 Notice Copyright (c) 1985, 1987, 1989, 1991, 1992, 1997 Adobe Systems Incorporated. All Rights Reserved. EncodingScheme AdobeStandardEncoding CapHeight 722 XHeight 477 Ascender 737 Descender -205 StdHW 54 StdVW 150 StartCharMetrics 314 C 32 ; WX 287 ; N space ; B 0 0 0 0 ; C 33 ; WX 333 ; N exclam ; B 0 -15 333 737 ; C 34 ; WX 400 ; N quotedbl ; B 66 388 428 737 ; C 35 ; WX 574 ; N numbersign ; B 30 0 544 690 ; C 36 ; WX 574 ; N dollar ; B 9 -120 565 810 ; C 37 ; WX 889 ; N percent ; B 54 -28 835 727 ; C 38 ; WX 889 ; N ampersand ; B 32 -15 823 737 ; C 39 ; WX 259 ; N quoteright ; B 48 388 275 737 ; C 40 ; WX 407 ; N parenleft ; B 72 -117 454 745 ; C 41 ; WX 407 ; N parenright ; B -70 -117 310 745 ; C 42 ; WX 500 ; N asterisk ; B 58 301 498 737 ; C 43 ; WX 606 ; N plus ; B 50 0 556 506 ; C 44 ; WX 287 ; N comma ; B -57 -192 170 157 ; C 45 ; WX 333 ; N hyphen ; B 2 177 263 299 ; C 46 ; WX 287 ; N period ; B -20 -15 152 157 ; C 47 ; WX 278 ; N slash ; B -41 -15 320 737 ; C 48 ; WX 574 ; N zero ; B 21 -15 553 705 ; C 49 ; WX 574 ; N one ; B 25 0 489 705 ; C 50 ; WX 574 ; N two ; B -38 -3 538 705 ; C 51 ; WX 574 ; N three ; B -7 -15 536 705 ; C 52 ; WX 574 ; N four ; B -13 0 544 705 ; C 53 ; WX 574 ; N five ; B 0 -15 574 705 ; C 54 ; WX 574 ; N six ; B 31 -15 574 705 ; C 55 ; WX 574 ; N seven ; B 64 -15 593 705 ; C 56 ; WX 574 ; N eight ; B 0 -15 552 705 ; C 57 ; WX 574 ; N nine ; B 0 -15 543 705 ; C 58 ; WX 287 ; N colon ; B -20 -15 237 477 ; C 59 ; WX 287 ; N semicolon ; B -57 -192 237 477 ; C 60 ; WX 606 ; N less ; B 50 -9 556 515 ; C 61 ; WX 606 ; N equal ; B 50 103 556 403 ; C 62 ; WX 606 ; N greater ; B 50 -8 556 514 ; C 63 ; WX 481 ; N question ; B 79 -15 451 737 ; C 64 ; WX 747 ; N at ; B -4 -15 751 737 ; C 65 ; WX 741 ; N A ; B -75 0 716 737 ; C 66 ; WX 759 ; N B ; B -50 0 721 722 ; C 67 ; WX 759 ; N C ; B 37 -15 759 737 ; C 68 ; WX 833 ; N D ; B -47 0 796 722 ; C 69 ; WX 741 ; N E ; B -41 0 730 722 ; C 70 ; WX 704 ; N F ; B -41 0 730 722 ; C 71 ; WX 815 ; N G ; B 37 -15 805 737 ; C 72 ; WX 870 ; N H ; B -41 0 911 722 ; C 73 ; WX 444 ; N I ; B -41 0 485 722 ; C 74 ; WX 667 ; N J ; B -20 -15 708 722 ; C 75 ; WX 778 ; N K ; B -41 0 832 722 ; C 76 ; WX 704 ; N L ; B -41 0 670 722 ; C 77 ; WX 944 ; N M ; B -44 0 988 722 ; C 78 ; WX 852 ; N N ; B -61 -10 913 722 ; C 79 ; WX 833 ; N O ; B 37 -15 796 737 ; C 80 ; WX 741 ; N P ; B -41 0 730 722 ; C 81 ; WX 833 ; N Q ; B 37 -189 796 737 ; C 82 ; WX 796 ; N R ; B -41 -15 749 722 ; C 83 ; WX 685 ; N S ; B 1 -15 666 737 ; C 84 ; WX 722 ; N T ; B 41 0 759 722 ; C 85 ; WX 833 ; N U ; B 88 -15 900 722 ; C 86 ; WX 741 ; N V ; B 32 -10 802 722 ; C 87 ; WX 944 ; N W ; B 40 -10 1000 722 ; C 88 ; WX 741 ; N X ; B -82 0 801 722 ; C 89 ; WX 704 ; N Y ; B 13 0 775 722 ; C 90 ; WX 704 ; N Z ; B -33 0 711 722 ; C 91 ; WX 407 ; N bracketleft ; B 1 -109 464 737 ; C 92 ; WX 606 ; N backslash ; B 161 -15 445 737 ; C 93 ; WX 407 ; N bracketright ; B -101 -109 362 737 ; C 94 ; WX 606 ; N asciicircum ; B 66 325 540 690 ; C 95 ; WX 500 ; N underscore ; B 0 -125 500 -75 ; C 96 ; WX 259 ; N quoteleft ; B 47 388 274 737 ; C 97 ; WX 667 ; N a ; B 6 -15 636 477 ; C 98 ; WX 611 ; N b ; B 29 -15 557 737 ; C 99 ; WX 537 ; N c ; B 0 -15 482 477 ; C 100 ; WX 667 ; N d ; B 0 -15 660 737 ; C 101 ; WX 519 ; N e ; B 0 -15 479 477 ; C 102 ; WX 389 ; N f ; B -48 -205 550 737 ; L i fi ; L l fl ; C 103 ; WX 611 ; N g ; B -63 -205 604 528 ; C 104 ; WX 685 ; N h ; B 0 -15 639 737 ; C 105 ; WX 389 ; N i ; B 32 -15 345 737 ; C 106 ; WX 370 ; N j ; B -205 -205 347 737 ; C 107 ; WX 648 ; N k ; B -11 -15 578 737 ; C 108 ; WX 389 ; N l ; B 32 -15 375 737 ; C 109 ; WX 944 ; N m ; B 0 -15 909 477 ; C 110 ; WX 685 ; N n ; B 0 -15 639 477 ; C 111 ; WX 574 ; N o ; B 0 -15 530 477 ; C 112 ; WX 648 ; N p ; B -119 -205 590 477 ; C 113 ; WX 630 ; N q ; B 0 -205 587 477 ; C 114 ; WX 519 ; N r ; B 0 0 527 486 ; C 115 ; WX 481 ; N s ; B 0 -15 435 477 ; C 116 ; WX 407 ; N t ; B 24 -15 403 650 ; C 117 ; WX 685 ; N u ; B 30 -15 635 477 ; C 118 ; WX 556 ; N v ; B 30 -15 496 477 ; C 119 ; WX 833 ; N w ; B 30 -15 773 477 ; C 120 ; WX 574 ; N x ; B -46 -15 574 477 ; C 121 ; WX 519 ; N y ; B -66 -205 493 477 ; C 122 ; WX 519 ; N z ; B -19 -15 473 477 ; C 123 ; WX 407 ; N braceleft ; B 52 -109 408 737 ; C 124 ; WX 606 ; N bar ; B 249 -250 357 750 ; C 125 ; WX 407 ; N braceright ; B -25 -109 331 737 ; C 126 ; WX 606 ; N asciitilde ; B 72 160 534 346 ; C 161 ; WX 333 ; N exclamdown ; B -44 -205 289 547 ; C 162 ; WX 574 ; N cent ; B 30 -144 512 578 ; C 163 ; WX 574 ; N sterling ; B -18 -15 566 705 ; C 164 ; WX 167 ; N fraction ; B -166 -15 333 705 ; C 165 ; WX 574 ; N yen ; B 17 0 629 690 ; C 166 ; WX 574 ; N florin ; B -43 -205 575 737 ; C 167 ; WX 500 ; N section ; B -30 -146 515 737 ; C 168 ; WX 574 ; N currency ; B 27 84 547 605 ; C 169 ; WX 287 ; N quotesingle ; B 112 388 250 737 ; C 170 ; WX 481 ; N quotedblleft ; B 54 388 521 737 ; C 171 ; WX 481 ; N guillemotleft ; B -35 69 449 407 ; C 172 ; WX 278 ; N guilsinglleft ; B -25 69 244 407 ; C 173 ; WX 278 ; N guilsinglright ; B -26 69 243 407 ; C 174 ; WX 685 ; N fi ; B -70 -205 641 737 ; C 175 ; WX 685 ; N fl ; B -70 -205 671 737 ; C 177 ; WX 500 ; N endash ; B -47 189 479 287 ; C 178 ; WX 500 ; N dagger ; B 48 -146 508 737 ; C 179 ; WX 500 ; N daggerdbl ; B -60 -150 508 737 ; C 180 ; WX 287 ; N periodcentered ; B 57 200 229 372 ; C 182 ; WX 650 ; N paragraph ; B 25 -131 681 722 ; C 183 ; WX 606 ; N bullet ; B 122 180 484 542 ; C 184 ; WX 259 ; N quotesinglbase ; B -57 -192 170 157 ; C 185 ; WX 481 ; N quotedblbase ; B -57 -192 412 157 ; C 186 ; WX 481 ; N quotedblright ; B 43 388 510 737 ; C 187 ; WX 481 ; N guillemotright ; B -31 69 453 407 ; C 188 ; WX 1000 ; N ellipsis ; B 81 -15 919 157 ; C 189 ; WX 1167 ; N perthousand ; B 20 -28 1147 727 ; C 191 ; WX 481 ; N questiondown ; B 0 -205 372 547 ; C 193 ; WX 333 ; N grave ; B 74 538 294 722 ; C 194 ; WX 333 ; N acute ; B 123 538 372 722 ; C 195 ; WX 333 ; N circumflex ; B 23 533 365 705 ; C 196 ; WX 333 ; N tilde ; B 28 561 398 690 ; C 197 ; WX 333 ; N macron ; B 47 573 404 649 ; C 198 ; WX 333 ; N breve ; B 67 535 390 698 ; C 199 ; WX 333 ; N dotaccent ; B 145 571 311 737 ; C 200 ; WX 333 ; N dieresis ; B 33 571 393 715 ; C 202 ; WX 333 ; N ring ; B 111 522 335 746 ; C 203 ; WX 333 ; N cedilla ; B -21 -220 225 3 ; C 205 ; WX 333 ; N hungarumlaut ; B 15 538 480 722 ; C 206 ; WX 333 ; N ogonek ; B 36 -220 338 4 ; C 207 ; WX 333 ; N caron ; B 60 531 403 705 ; C 208 ; WX 1000 ; N emdash ; B -47 189 979 287 ; C 225 ; WX 889 ; N AE ; B -86 0 915 722 ; C 227 ; WX 412 ; N ordfeminine ; B 47 407 460 705 ; C 232 ; WX 704 ; N Lslash ; B -41 0 670 722 ; C 233 ; WX 833 ; N Oslash ; B 35 -68 798 790 ; C 234 ; WX 963 ; N OE ; B 29 0 989 722 ; C 235 ; WX 356 ; N ordmasculine ; B 42 407 394 705 ; C 241 ; WX 815 ; N ae ; B -18 -15 775 477 ; C 245 ; WX 389 ; N dotlessi ; B 32 -15 345 477 ; C 248 ; WX 389 ; N lslash ; B 24 -15 387 737 ; C 249 ; WX 574 ; N oslash ; B 0 -121 530 583 ; C 250 ; WX 852 ; N oe ; B -6 -15 812 477 ; C 251 ; WX 574 ; N germandbls ; B -91 -205 540 737 ; C -1 ; WX 444 ; N Idieresis ; B -41 0 509 915 ; C -1 ; WX 519 ; N eacute ; B 0 -15 479 722 ; C -1 ; WX 667 ; N abreve ; B 6 -15 636 698 ; C -1 ; WX 685 ; N uhungarumlaut ; B 30 -15 656 722 ; C -1 ; WX 519 ; N ecaron ; B 0 -15 496 705 ; C -1 ; WX 704 ; N Ydieresis ; B 13 0 775 915 ; C -1 ; WX 606 ; N divide ; B 50 -40 556 546 ; C -1 ; WX 704 ; N Yacute ; B 13 0 775 947 ; C -1 ; WX 741 ; N Acircumflex ; B -75 0 716 930 ; C -1 ; WX 667 ; N aacute ; B 6 -15 636 722 ; C -1 ; WX 833 ; N Ucircumflex ; B 88 -15 900 930 ; C -1 ; WX 519 ; N yacute ; B -66 -205 493 722 ; C -1 ; WX 481 ; N scommaaccent ; B 0 -250 435 477 ; C -1 ; WX 519 ; N ecircumflex ; B 0 -15 479 705 ; C -1 ; WX 833 ; N Uring ; B 88 -15 900 991 ; C -1 ; WX 833 ; N Udieresis ; B 88 -15 900 915 ; C -1 ; WX 667 ; N aogonek ; B 6 -230 636 477 ; C -1 ; WX 833 ; N Uacute ; B 88 -15 900 947 ; C -1 ; WX 685 ; N uogonek ; B 30 -233 635 477 ; C -1 ; WX 741 ; N Edieresis ; B -41 0 730 915 ; C -1 ; WX 833 ; N Dcroat ; B -47 0 796 722 ; C -1 ; WX 250 ; N commaaccent ; B -25 -250 141 -50 ; C -1 ; WX 747 ; N copyright ; B -2 -15 750 737 ; C -1 ; WX 741 ; N Emacron ; B -41 0 730 874 ; C -1 ; WX 537 ; N ccaron ; B 0 -15 505 705 ; C -1 ; WX 667 ; N aring ; B 6 -15 636 746 ; C -1 ; WX 852 ; N Ncommaaccent ; B -61 -230 913 722 ; C -1 ; WX 389 ; N lacute ; B 32 -15 500 947 ; C -1 ; WX 667 ; N agrave ; B 6 -15 636 722 ; C -1 ; WX 722 ; N Tcommaaccent ; B 41 -250 759 722 ; C -1 ; WX 759 ; N Cacute ; B 37 -15 759 947 ; C -1 ; WX 667 ; N atilde ; B 6 -15 636 690 ; C -1 ; WX 741 ; N Edotaccent ; B -41 0 730 937 ; C -1 ; WX 481 ; N scaron ; B 0 -15 477 705 ; C -1 ; WX 481 ; N scedilla ; B 0 -220 435 477 ; C -1 ; WX 389 ; N iacute ; B 32 -15 370 715 ; C -1 ; WX 494 ; N lozenge ; B 10 0 484 745 ; C -1 ; WX 796 ; N Rcaron ; B -41 -15 749 930 ; C -1 ; WX 815 ; N Gcommaaccent ; B 37 -250 805 737 ; C -1 ; WX 685 ; N ucircumflex ; B 30 -15 635 705 ; C -1 ; WX 667 ; N acircumflex ; B 6 -15 636 705 ; C -1 ; WX 741 ; N Amacron ; B -75 0 716 874 ; C -1 ; WX 519 ; N rcaron ; B 0 0 527 695 ; C -1 ; WX 537 ; N ccedilla ; B 0 -220 482 477 ; C -1 ; WX 704 ; N Zdotaccent ; B -33 0 711 937 ; C -1 ; WX 741 ; N Thorn ; B -41 0 690 722 ; C -1 ; WX 833 ; N Omacron ; B 37 -15 796 874 ; C -1 ; WX 796 ; N Racute ; B -41 -15 749 947 ; C -1 ; WX 685 ; N Sacute ; B 1 -15 666 947 ; C -1 ; WX 747 ; N dcaron ; B 0 -15 826 737 ; C -1 ; WX 833 ; N Umacron ; B 88 -15 900 874 ; C -1 ; WX 685 ; N uring ; B 30 -15 635 746 ; C -1 ; WX 344 ; N threesuperior ; B 3 273 361 705 ; C -1 ; WX 833 ; N Ograve ; B 37 -15 796 947 ; C -1 ; WX 741 ; N Agrave ; B -75 0 716 947 ; C -1 ; WX 741 ; N Abreve ; B -75 0 716 923 ; C -1 ; WX 606 ; N multiply ; B 65 15 541 491 ; C -1 ; WX 685 ; N uacute ; B 30 -15 635 722 ; C -1 ; WX 722 ; N Tcaron ; B 41 0 759 930 ; C -1 ; WX 494 ; N partialdiff ; B 11 -21 494 750 ; C -1 ; WX 519 ; N ydieresis ; B -66 -205 493 690 ; C -1 ; WX 852 ; N Nacute ; B -61 -10 913 947 ; C -1 ; WX 389 ; N icircumflex ; B 21 -15 363 698 ; C -1 ; WX 741 ; N Ecircumflex ; B -41 0 730 930 ; C -1 ; WX 667 ; N adieresis ; B 6 -15 636 690 ; C -1 ; WX 519 ; N edieresis ; B 0 -15 486 690 ; C -1 ; WX 537 ; N cacute ; B 0 -15 482 722 ; C -1 ; WX 685 ; N nacute ; B 0 -15 639 722 ; C -1 ; WX 685 ; N umacron ; B 30 -15 635 649 ; C -1 ; WX 852 ; N Ncaron ; B -61 -10 913 930 ; C -1 ; WX 444 ; N Iacute ; B -41 0 488 947 ; C -1 ; WX 606 ; N plusminus ; B 50 0 556 506 ; C -1 ; WX 606 ; N brokenbar ; B 249 -175 357 675 ; C -1 ; WX 747 ; N registered ; B -2 -15 750 737 ; C -1 ; WX 815 ; N Gbreve ; B 37 -15 805 923 ; C -1 ; WX 444 ; N Idotaccent ; B -41 0 485 937 ; C -1 ; WX 600 ; N summation ; B 14 -10 585 706 ; C -1 ; WX 741 ; N Egrave ; B -41 0 730 947 ; C -1 ; WX 519 ; N racute ; B 0 0 527 722 ; C -1 ; WX 574 ; N omacron ; B 0 -15 530 649 ; C -1 ; WX 704 ; N Zacute ; B -33 0 711 947 ; C -1 ; WX 704 ; N Zcaron ; B -33 0 711 930 ; C -1 ; WX 549 ; N greaterequal ; B 26 0 523 704 ; C -1 ; WX 833 ; N Eth ; B -47 0 796 722 ; C -1 ; WX 759 ; N Ccedilla ; B 37 -220 759 737 ; C -1 ; WX 389 ; N lcommaaccent ; B 25 -250 375 737 ; C -1 ; WX 447 ; N tcaron ; B 24 -15 544 767 ; C -1 ; WX 519 ; N eogonek ; B 0 -229 479 477 ; C -1 ; WX 833 ; N Uogonek ; B 88 -230 900 722 ; C -1 ; WX 741 ; N Aacute ; B -75 0 716 947 ; C -1 ; WX 741 ; N Adieresis ; B -75 0 716 915 ; C -1 ; WX 519 ; N egrave ; B 0 -15 479 722 ; C -1 ; WX 519 ; N zacute ; B -19 -15 473 722 ; C -1 ; WX 389 ; N iogonek ; B -8 -232 345 737 ; C -1 ; WX 833 ; N Oacute ; B 37 -15 796 947 ; C -1 ; WX 574 ; N oacute ; B 0 -15 530 722 ; C -1 ; WX 667 ; N amacron ; B 6 -15 636 649 ; C -1 ; WX 481 ; N sacute ; B 0 -15 446 722 ; C -1 ; WX 389 ; N idieresis ; B 31 -15 391 690 ; C -1 ; WX 833 ; N Ocircumflex ; B 37 -15 796 930 ; C -1 ; WX 833 ; N Ugrave ; B 88 -15 900 947 ; C -1 ; WX 612 ; N Delta ; B 6 0 608 688 ; C -1 ; WX 648 ; N thorn ; B -119 -205 590 737 ; C -1 ; WX 344 ; N twosuperior ; B -17 280 362 705 ; C -1 ; WX 833 ; N Odieresis ; B 37 -15 796 915 ; C -1 ; WX 685 ; N mu ; B -89 -205 635 477 ; C -1 ; WX 389 ; N igrave ; B 32 -15 345 715 ; C -1 ; WX 574 ; N ohungarumlaut ; B 0 -15 601 722 ; C -1 ; WX 741 ; N Eogonek ; B -41 -224 730 722 ; C -1 ; WX 667 ; N dcroat ; B 0 -15 734 737 ; C -1 ; WX 861 ; N threequarters ; B 35 -15 789 705 ; C -1 ; WX 685 ; N Scedilla ; B 1 -220 666 737 ; C -1 ; WX 449 ; N lcaron ; B 32 -15 541 737 ; C -1 ; WX 778 ; N Kcommaaccent ; B -41 -250 832 722 ; C -1 ; WX 704 ; N Lacute ; B -41 0 670 947 ; C -1 ; WX 950 ; N trademark ; B 42 317 1017 722 ; C -1 ; WX 519 ; N edotaccent ; B 0 -15 479 712 ; C -1 ; WX 444 ; N Igrave ; B -41 0 485 947 ; C -1 ; WX 444 ; N Imacron ; B -41 0 520 874 ; C -1 ; WX 704 ; N Lcaron ; B -41 0 702 737 ; C -1 ; WX 861 ; N onehalf ; B 17 -15 798 705 ; C -1 ; WX 549 ; N lessequal ; B 29 0 526 704 ; C -1 ; WX 574 ; N ocircumflex ; B 0 -15 530 705 ; C -1 ; WX 685 ; N ntilde ; B 0 -15 639 690 ; C -1 ; WX 833 ; N Uhungarumlaut ; B 88 -15 900 947 ; C -1 ; WX 741 ; N Eacute ; B -41 0 730 947 ; C -1 ; WX 519 ; N emacron ; B 0 -15 497 649 ; C -1 ; WX 611 ; N gbreve ; B -63 -205 604 698 ; C -1 ; WX 861 ; N onequarter ; B 17 -15 789 705 ; C -1 ; WX 685 ; N Scaron ; B 1 -15 666 930 ; C -1 ; WX 685 ; N Scommaaccent ; B 1 -250 666 737 ; C -1 ; WX 833 ; N Ohungarumlaut ; B 37 -15 796 947 ; C -1 ; WX 400 ; N degree ; B 86 419 372 705 ; C -1 ; WX 574 ; N ograve ; B 0 -15 530 722 ; C -1 ; WX 759 ; N Ccaron ; B 37 -15 759 930 ; C -1 ; WX 685 ; N ugrave ; B 30 -15 635 722 ; C -1 ; WX 549 ; N radical ; B 10 -46 512 850 ; C -1 ; WX 833 ; N Dcaron ; B -47 0 796 930 ; C -1 ; WX 519 ; N rcommaaccent ; B -31 -250 527 486 ; C -1 ; WX 852 ; N Ntilde ; B -61 -10 913 915 ; C -1 ; WX 574 ; N otilde ; B 0 -15 530 690 ; C -1 ; WX 796 ; N Rcommaaccent ; B -41 -250 749 722 ; C -1 ; WX 704 ; N Lcommaaccent ; B -41 -250 670 722 ; C -1 ; WX 741 ; N Atilde ; B -75 0 716 915 ; C -1 ; WX 741 ; N Aogonek ; B -75 -224 744 737 ; C -1 ; WX 741 ; N Aring ; B -75 0 716 991 ; C -1 ; WX 833 ; N Otilde ; B 37 -15 796 915 ; C -1 ; WX 519 ; N zdotaccent ; B -19 -15 473 712 ; C -1 ; WX 741 ; N Ecaron ; B -41 0 730 930 ; C -1 ; WX 444 ; N Iogonek ; B -41 -220 485 722 ; C -1 ; WX 648 ; N kcommaaccent ; B -11 -250 578 737 ; C -1 ; WX 606 ; N minus ; B 50 199 556 307 ; C -1 ; WX 444 ; N Icircumflex ; B -41 0 485 930 ; C -1 ; WX 685 ; N ncaron ; B 0 -15 639 705 ; C -1 ; WX 407 ; N tcommaaccent ; B -6 -250 403 650 ; C -1 ; WX 606 ; N logicalnot ; B 50 103 556 403 ; C -1 ; WX 574 ; N odieresis ; B 0 -15 530 690 ; C -1 ; WX 685 ; N udieresis ; B 30 -15 635 690 ; C -1 ; WX 549 ; N notequal ; B 15 -49 540 570 ; C -1 ; WX 611 ; N gcommaaccent ; B -63 -205 604 822 ; C -1 ; WX 574 ; N eth ; B 0 -15 530 752 ; C -1 ; WX 519 ; N zcaron ; B -19 -15 473 695 ; C -1 ; WX 685 ; N ncommaaccent ; B 0 -250 639 477 ; C -1 ; WX 344 ; N onesuperior ; B 19 282 326 705 ; C -1 ; WX 389 ; N imacron ; B 32 -15 376 642 ; EndCharMetrics StartKernData StartKernPairs 2653 KPX A C 5 KPX A Cacute 5 KPX A Ccaron 5 KPX A Ccedilla 5 KPX A G 5 KPX A Gbreve 5 KPX A Gcommaaccent 5 KPX A O 5 KPX A Oacute 5 KPX A Ocircumflex 5 KPX A Odieresis 5 KPX A Ograve 5 KPX A Ohungarumlaut 5 KPX A Omacron 5 KPX A Oslash 5 KPX A Otilde 5 KPX A Q 5 KPX A T 5 KPX A Tcaron 5 KPX A Tcommaaccent 5 KPX A U -32 KPX A Uacute -32 KPX A Ucircumflex -32 KPX A Udieresis -32 KPX A Ugrave -32 KPX A Uhungarumlaut -32 KPX A Umacron -32 KPX A Uogonek -32 KPX A Uring -32 KPX A V -100 KPX A W -84 KPX A Y -70 KPX A Yacute -70 KPX A Ydieresis -70 KPX A quotedblright -95 KPX A quoteright -95 KPX A u -15 KPX A uacute -15 KPX A ucircumflex -15 KPX A udieresis -15 KPX A ugrave -15 KPX A uhungarumlaut -15 KPX A umacron -15 KPX A uogonek -15 KPX A uring -15 KPX A v -10 KPX A w -25 KPX A y -33 KPX A yacute -33 KPX A ydieresis -33 KPX Aacute C 5 KPX Aacute Cacute 5 KPX Aacute Ccaron 5 KPX Aacute Ccedilla 5 KPX Aacute G 5 KPX Aacute Gbreve 5 KPX Aacute Gcommaaccent 5 KPX Aacute O 5 KPX Aacute Oacute 5 KPX Aacute Ocircumflex 5 KPX Aacute Odieresis 5 KPX Aacute Ograve 5 KPX Aacute Ohungarumlaut 5 KPX Aacute Omacron 5 KPX Aacute Oslash 5 KPX Aacute Otilde 5 KPX Aacute Q 5 KPX Aacute T 5 KPX Aacute Tcaron 5 KPX Aacute Tcommaaccent 5 KPX Aacute U -32 KPX Aacute Uacute -32 KPX Aacute Ucircumflex -32 KPX Aacute Udieresis -32 KPX Aacute Ugrave -32 KPX Aacute Uhungarumlaut -32 KPX Aacute Umacron -32 KPX Aacute Uogonek -32 KPX Aacute Uring -32 KPX Aacute V -100 KPX Aacute W -84 KPX Aacute Y -70 KPX Aacute Yacute -70 KPX Aacute Ydieresis -70 KPX Aacute quotedblright -95 KPX Aacute quoteright -95 KPX Aacute u -15 KPX Aacute uacute -15 KPX Aacute ucircumflex -15 KPX Aacute udieresis -15 KPX Aacute ugrave -15 KPX Aacute uhungarumlaut -15 KPX Aacute umacron -15 KPX Aacute uogonek -15 KPX Aacute uring -15 KPX Aacute v -10 KPX Aacute w -25 KPX Aacute y -33 KPX Aacute yacute -33 KPX Aacute ydieresis -33 KPX Abreve C 5 KPX Abreve Cacute 5 KPX Abreve Ccaron 5 KPX Abreve Ccedilla 5 KPX Abreve G 5 KPX Abreve Gbreve 5 KPX Abreve Gcommaaccent 5 KPX Abreve O 5 KPX Abreve Oacute 5 KPX Abreve Ocircumflex 5 KPX Abreve Odieresis 5 KPX Abreve Ograve 5 KPX Abreve Ohungarumlaut 5 KPX Abreve Omacron 5 KPX Abreve Oslash 5 KPX Abreve Otilde 5 KPX Abreve Q 5 KPX Abreve T 5 KPX Abreve Tcaron 5 KPX Abreve Tcommaaccent 5 KPX Abreve U -32 KPX Abreve Uacute -32 KPX Abreve Ucircumflex -32 KPX Abreve Udieresis -32 KPX Abreve Ugrave -32 KPX Abreve Uhungarumlaut -32 KPX Abreve Umacron -32 KPX Abreve Uogonek -32 KPX Abreve Uring -32 KPX Abreve V -100 KPX Abreve W -84 KPX Abreve Y -70 KPX Abreve Yacute -70 KPX Abreve Ydieresis -70 KPX Abreve quotedblright -95 KPX Abreve quoteright -95 KPX Abreve u -15 KPX Abreve uacute -15 KPX Abreve ucircumflex -15 KPX Abreve udieresis -15 KPX Abreve ugrave -15 KPX Abreve uhungarumlaut -15 KPX Abreve umacron -15 KPX Abreve uogonek -15 KPX Abreve uring -15 KPX Abreve v -10 KPX Abreve w -25 KPX Abreve y -33 KPX Abreve yacute -33 KPX Abreve ydieresis -33 KPX Acircumflex C 5 KPX Acircumflex Cacute 5 KPX Acircumflex Ccaron 5 KPX Acircumflex Ccedilla 5 KPX Acircumflex G 5 KPX Acircumflex Gbreve 5 KPX Acircumflex Gcommaaccent 5 KPX Acircumflex O 5 KPX Acircumflex Oacute 5 KPX Acircumflex Ocircumflex 5 KPX Acircumflex Odieresis 5 KPX Acircumflex Ograve 5 KPX Acircumflex Ohungarumlaut 5 KPX Acircumflex Omacron 5 KPX Acircumflex Oslash 5 KPX Acircumflex Otilde 5 KPX Acircumflex Q 5 KPX Acircumflex T 5 KPX Acircumflex Tcaron 5 KPX Acircumflex Tcommaaccent 5 KPX Acircumflex U -32 KPX Acircumflex Uacute -32 KPX Acircumflex Ucircumflex -32 KPX Acircumflex Udieresis -32 KPX Acircumflex Ugrave -32 KPX Acircumflex Uhungarumlaut -32 KPX Acircumflex Umacron -32 KPX Acircumflex Uogonek -32 KPX Acircumflex Uring -32 KPX Acircumflex V -100 KPX Acircumflex W -84 KPX Acircumflex Y -70 KPX Acircumflex Yacute -70 KPX Acircumflex Ydieresis -70 KPX Acircumflex quotedblright -95 KPX Acircumflex quoteright -95 KPX Acircumflex u -15 KPX Acircumflex uacute -15 KPX Acircumflex ucircumflex -15 KPX Acircumflex udieresis -15 KPX Acircumflex ugrave -15 KPX Acircumflex uhungarumlaut -15 KPX Acircumflex umacron -15 KPX Acircumflex uogonek -15 KPX Acircumflex uring -15 KPX Acircumflex v -10 KPX Acircumflex w -25 KPX Acircumflex y -33 KPX Acircumflex yacute -33 KPX Acircumflex ydieresis -33 KPX Adieresis C 5 KPX Adieresis Cacute 5 KPX Adieresis Ccaron 5 KPX Adieresis Ccedilla 5 KPX Adieresis G 5 KPX Adieresis Gbreve 5 KPX Adieresis Gcommaaccent 5 KPX Adieresis O 5 KPX Adieresis Oacute 5 KPX Adieresis Ocircumflex 5 KPX Adieresis Odieresis 5 KPX Adieresis Ograve 5 KPX Adieresis Ohungarumlaut 5 KPX Adieresis Omacron 5 KPX Adieresis Oslash 5 KPX Adieresis Otilde 5 KPX Adieresis Q 5 KPX Adieresis T 5 KPX Adieresis Tcaron 5 KPX Adieresis Tcommaaccent 5 KPX Adieresis U -32 KPX Adieresis Uacute -32 KPX Adieresis Ucircumflex -32 KPX Adieresis Udieresis -32 KPX Adieresis Ugrave -32 KPX Adieresis Uhungarumlaut -32 KPX Adieresis Umacron -32 KPX Adieresis Uogonek -32 KPX Adieresis Uring -32 KPX Adieresis V -100 KPX Adieresis W -84 KPX Adieresis Y -70 KPX Adieresis Yacute -70 KPX Adieresis Ydieresis -70 KPX Adieresis quotedblright -95 KPX Adieresis quoteright -95 KPX Adieresis u -15 KPX Adieresis uacute -15 KPX Adieresis ucircumflex -15 KPX Adieresis udieresis -15 KPX Adieresis ugrave -15 KPX Adieresis uhungarumlaut -15 KPX Adieresis umacron -15 KPX Adieresis uogonek -15 KPX Adieresis uring -15 KPX Adieresis v -10 KPX Adieresis w -25 KPX Adieresis y -33 KPX Adieresis yacute -33 KPX Adieresis ydieresis -33 KPX Agrave C 5 KPX Agrave Cacute 5 KPX Agrave Ccaron 5 KPX Agrave Ccedilla 5 KPX Agrave G 5 KPX Agrave Gbreve 5 KPX Agrave Gcommaaccent 5 KPX Agrave O 5 KPX Agrave Oacute 5 KPX Agrave Ocircumflex 5 KPX Agrave Odieresis 5 KPX Agrave Ograve 5 KPX Agrave Ohungarumlaut 5 KPX Agrave Omacron 5 KPX Agrave Oslash 5 KPX Agrave Otilde 5 KPX Agrave Q 5 KPX Agrave T 5 KPX Agrave Tcaron 5 KPX Agrave Tcommaaccent 5 KPX Agrave U -32 KPX Agrave Uacute -32 KPX Agrave Ucircumflex -32 KPX Agrave Udieresis -32 KPX Agrave Ugrave -32 KPX Agrave Uhungarumlaut -32 KPX Agrave Umacron -32 KPX Agrave Uogonek -32 KPX Agrave Uring -32 KPX Agrave V -100 KPX Agrave W -84 KPX Agrave Y -70 KPX Agrave Yacute -70 KPX Agrave Ydieresis -70 KPX Agrave quotedblright -95 KPX Agrave quoteright -95 KPX Agrave u -15 KPX Agrave uacute -15 KPX Agrave ucircumflex -15 KPX Agrave udieresis -15 KPX Agrave ugrave -15 KPX Agrave uhungarumlaut -15 KPX Agrave umacron -15 KPX Agrave uogonek -15 KPX Agrave uring -15 KPX Agrave v -10 KPX Agrave w -25 KPX Agrave y -33 KPX Agrave yacute -33 KPX Agrave ydieresis -33 KPX Amacron C 5 KPX Amacron Cacute 5 KPX Amacron Ccaron 5 KPX Amacron Ccedilla 5 KPX Amacron G 5 KPX Amacron Gbreve 5 KPX Amacron Gcommaaccent 5 KPX Amacron O 5 KPX Amacron Oacute 5 KPX Amacron Ocircumflex 5 KPX Amacron Odieresis 5 KPX Amacron Ograve 5 KPX Amacron Ohungarumlaut 5 KPX Amacron Omacron 5 KPX Amacron Oslash 5 KPX Amacron Otilde 5 KPX Amacron Q 5 KPX Amacron T 5 KPX Amacron Tcaron 5 KPX Amacron Tcommaaccent 5 KPX Amacron U -32 KPX Amacron Uacute -32 KPX Amacron Ucircumflex -32 KPX Amacron Udieresis -32 KPX Amacron Ugrave -32 KPX Amacron Uhungarumlaut -32 KPX Amacron Umacron -32 KPX Amacron Uogonek -32 KPX Amacron Uring -32 KPX Amacron V -100 KPX Amacron W -84 KPX Amacron Y -70 KPX Amacron Yacute -70 KPX Amacron Ydieresis -70 KPX Amacron quotedblright -95 KPX Amacron quoteright -95 KPX Amacron u -15 KPX Amacron uacute -15 KPX Amacron ucircumflex -15 KPX Amacron udieresis -15 KPX Amacron ugrave -15 KPX Amacron uhungarumlaut -15 KPX Amacron umacron -15 KPX Amacron uogonek -15 KPX Amacron uring -15 KPX Amacron v -10 KPX Amacron w -25 KPX Amacron y -33 KPX Amacron yacute -33 KPX Amacron ydieresis -33 KPX Aogonek C 5 KPX Aogonek Cacute 5 KPX Aogonek Ccaron 5 KPX Aogonek Ccedilla 5 KPX Aogonek G 5 KPX Aogonek Gbreve 5 KPX Aogonek Gcommaaccent 5 KPX Aogonek O 5 KPX Aogonek Oacute 5 KPX Aogonek Ocircumflex 5 KPX Aogonek Odieresis 5 KPX Aogonek Ograve 5 KPX Aogonek Ohungarumlaut 5 KPX Aogonek Omacron 5 KPX Aogonek Oslash 5 KPX Aogonek Otilde 5 KPX Aogonek Q 5 KPX Aogonek T 5 KPX Aogonek Tcaron 5 KPX Aogonek Tcommaaccent 5 KPX Aogonek U -32 KPX Aogonek Uacute -32 KPX Aogonek Ucircumflex -32 KPX Aogonek Udieresis -32 KPX Aogonek Ugrave -32 KPX Aogonek Uhungarumlaut -32 KPX Aogonek Umacron -32 KPX Aogonek Uogonek -32 KPX Aogonek Uring -32 KPX Aogonek V -100 KPX Aogonek W -84 KPX Aogonek Y -70 KPX Aogonek Yacute -70 KPX Aogonek Ydieresis -70 KPX Aogonek quotedblright -95 KPX Aogonek quoteright -95 KPX Aogonek u -15 KPX Aogonek uacute -15 KPX Aogonek ucircumflex -15 KPX Aogonek udieresis -15 KPX Aogonek ugrave -15 KPX Aogonek uhungarumlaut -15 KPX Aogonek umacron -15 KPX Aogonek uogonek -15 KPX Aogonek uring -15 KPX Aogonek v -10 KPX Aogonek w -25 KPX Aring C 5 KPX Aring Cacute 5 KPX Aring Ccaron 5 KPX Aring Ccedilla 5 KPX Aring G 5 KPX Aring Gbreve 5 KPX Aring Gcommaaccent 5 KPX Aring O 5 KPX Aring Oacute 5 KPX Aring Ocircumflex 5 KPX Aring Odieresis 5 KPX Aring Ograve 5 KPX Aring Ohungarumlaut 5 KPX Aring Omacron 5 KPX Aring Oslash 5 KPX Aring Otilde 5 KPX Aring Q 5 KPX Aring T 5 KPX Aring Tcaron 5 KPX Aring Tcommaaccent 5 KPX Aring U -32 KPX Aring Uacute -32 KPX Aring Ucircumflex -32 KPX Aring Udieresis -32 KPX Aring Ugrave -32 KPX Aring Uhungarumlaut -32 KPX Aring Umacron -32 KPX Aring Uogonek -32 KPX Aring Uring -32 KPX Aring V -100 KPX Aring W -84 KPX Aring Y -70 KPX Aring Yacute -70 KPX Aring Ydieresis -70 KPX Aring quotedblright -95 KPX Aring quoteright -95 KPX Aring u -15 KPX Aring uacute -15 KPX Aring ucircumflex -15 KPX Aring udieresis -15 KPX Aring ugrave -15 KPX Aring uhungarumlaut -15 KPX Aring umacron -15 KPX Aring uogonek -15 KPX Aring uring -15 KPX Aring v -10 KPX Aring w -25 KPX Aring y -33 KPX Aring yacute -33 KPX Aring ydieresis -33 KPX Atilde C 5 KPX Atilde Cacute 5 KPX Atilde Ccaron 5 KPX Atilde Ccedilla 5 KPX Atilde G 5 KPX Atilde Gbreve 5 KPX Atilde Gcommaaccent 5 KPX Atilde O 5 KPX Atilde Oacute 5 KPX Atilde Ocircumflex 5 KPX Atilde Odieresis 5 KPX Atilde Ograve 5 KPX Atilde Ohungarumlaut 5 KPX Atilde Omacron 5 KPX Atilde Oslash 5 KPX Atilde Otilde 5 KPX Atilde Q 5 KPX Atilde T 5 KPX Atilde Tcaron 5 KPX Atilde Tcommaaccent 5 KPX Atilde U -32 KPX Atilde Uacute -32 KPX Atilde Ucircumflex -32 KPX Atilde Udieresis -32 KPX Atilde Ugrave -32 KPX Atilde Uhungarumlaut -32 KPX Atilde Umacron -32 KPX Atilde Uogonek -32 KPX Atilde Uring -32 KPX Atilde V -100 KPX Atilde W -84 KPX Atilde Y -70 KPX Atilde Yacute -70 KPX Atilde Ydieresis -70 KPX Atilde quotedblright -95 KPX Atilde quoteright -95 KPX Atilde u -15 KPX Atilde uacute -15 KPX Atilde ucircumflex -15 KPX Atilde udieresis -15 KPX Atilde ugrave -15 KPX Atilde uhungarumlaut -15 KPX Atilde umacron -15 KPX Atilde uogonek -15 KPX Atilde uring -15 KPX Atilde v -10 KPX Atilde w -25 KPX Atilde y -33 KPX Atilde yacute -33 KPX Atilde ydieresis -33 KPX B A -11 KPX B Aacute -11 KPX B Abreve -11 KPX B Acircumflex -11 KPX B Adieresis -11 KPX B Agrave -11 KPX B Amacron -11 KPX B Aogonek -11 KPX B Aring -11 KPX B Atilde -11 KPX B U 15 KPX B Uacute 15 KPX B Ucircumflex 15 KPX B Udieresis 15 KPX B Ugrave 15 KPX B Uhungarumlaut 15 KPX B Umacron 15 KPX B Uogonek 15 KPX B Uring 15 KPX B comma 15 KPX B period 15 KPX C A -5 KPX C Aacute -5 KPX C Abreve -5 KPX C Acircumflex -5 KPX C Adieresis -5 KPX C Agrave -5 KPX C Amacron -5 KPX C Aogonek -5 KPX C Aring -5 KPX C Atilde -5 KPX Cacute A -5 KPX Cacute Aacute -5 KPX Cacute Abreve -5 KPX Cacute Acircumflex -5 KPX Cacute Adieresis -5 KPX Cacute Agrave -5 KPX Cacute Amacron -5 KPX Cacute Aogonek -5 KPX Cacute Aring -5 KPX Cacute Atilde -5 KPX Ccaron A -5 KPX Ccaron Aacute -5 KPX Ccaron Abreve -5 KPX Ccaron Acircumflex -5 KPX Ccaron Adieresis -5 KPX Ccaron Agrave -5 KPX Ccaron Amacron -5 KPX Ccaron Aogonek -5 KPX Ccaron Aring -5 KPX Ccaron Atilde -5 KPX Ccedilla A -5 KPX Ccedilla Aacute -5 KPX Ccedilla Abreve -5 KPX Ccedilla Acircumflex -5 KPX Ccedilla Adieresis -5 KPX Ccedilla Agrave -5 KPX Ccedilla Amacron -5 KPX Ccedilla Aogonek -5 KPX Ccedilla Aring -5 KPX Ccedilla Atilde -5 KPX D V -18 KPX D W -11 KPX D Y 6 KPX D Yacute 6 KPX D Ydieresis 6 KPX D comma -11 KPX D period -11 KPX Dcaron V -18 KPX Dcaron W -11 KPX Dcaron Y 6 KPX Dcaron Yacute 6 KPX Dcaron Ydieresis 6 KPX Dcaron comma -11 KPX Dcaron period -11 KPX Dcroat V -18 KPX Dcroat W -11 KPX Dcroat Y 6 KPX Dcroat Yacute 6 KPX Dcroat Ydieresis 6 KPX Dcroat comma -11 KPX Dcroat period -11 KPX F A -79 KPX F Aacute -79 KPX F Abreve -79 KPX F Acircumflex -79 KPX F Adieresis -79 KPX F Agrave -79 KPX F Amacron -79 KPX F Aogonek -79 KPX F Aring -79 KPX F Atilde -79 KPX F a -47 KPX F aacute -47 KPX F abreve -47 KPX F acircumflex -47 KPX F adieresis -47 KPX F agrave -47 KPX F amacron -47 KPX F aogonek -47 KPX F aring -47 KPX F atilde -47 KPX F comma -91 KPX F e -41 KPX F eacute -41 KPX F ecaron -41 KPX F ecircumflex -41 KPX F edieresis -41 KPX F edotaccent -41 KPX F egrave -41 KPX F emacron -41 KPX F eogonek -41 KPX F i -41 KPX F iacute -41 KPX F icircumflex -41 KPX F idieresis -41 KPX F igrave -41 KPX F imacron -41 KPX F iogonek -41 KPX F o -47 KPX F oacute -47 KPX F ocircumflex -47 KPX F odieresis -47 KPX F ograve -47 KPX F ohungarumlaut -47 KPX F omacron -47 KPX F oslash -47 KPX F otilde -47 KPX F period -91 KPX F r -27 KPX F racute -27 KPX F rcaron -27 KPX F rcommaaccent -27 KPX J A -30 KPX J Aacute -30 KPX J Abreve -30 KPX J Acircumflex -30 KPX J Adieresis -30 KPX J Agrave -30 KPX J Amacron -30 KPX J Aogonek -30 KPX J Aring -30 KPX J Atilde -30 KPX J a -40 KPX J aacute -40 KPX J abreve -40 KPX J acircumflex -40 KPX J adieresis -40 KPX J agrave -40 KPX J amacron -40 KPX J aogonek -40 KPX J aring -40 KPX J atilde -40 KPX J comma -74 KPX J e -33 KPX J eacute -33 KPX J ecaron -33 KPX J ecircumflex -33 KPX J edieresis -33 KPX J edotaccent -33 KPX J egrave -33 KPX J emacron -33 KPX J eogonek -33 KPX J o -40 KPX J oacute -40 KPX J ocircumflex -40 KPX J odieresis -40 KPX J ograve -40 KPX J ohungarumlaut -40 KPX J omacron -40 KPX J oslash -40 KPX J otilde -40 KPX J period -74 KPX J u -39 KPX J uacute -39 KPX J ucircumflex -39 KPX J udieresis -39 KPX J ugrave -39 KPX J uhungarumlaut -39 KPX J umacron -39 KPX J uogonek -39 KPX J uring -39 KPX K e 18 KPX K eacute 18 KPX K ecaron 18 KPX K ecircumflex 18 KPX K edieresis 18 KPX K edotaccent 18 KPX K egrave 18 KPX K emacron 18 KPX K eogonek 18 KPX K o -4 KPX K oacute -4 KPX K ocircumflex -4 KPX K odieresis -4 KPX K ograve -4 KPX K ohungarumlaut -4 KPX K omacron -4 KPX K oslash -4 KPX K otilde -4 KPX K u -4 KPX K uacute -4 KPX K ucircumflex -4 KPX K udieresis -4 KPX K ugrave -4 KPX K uhungarumlaut -4 KPX K umacron -4 KPX K uogonek -4 KPX K uring -4 KPX K y -48 KPX K yacute -48 KPX K ydieresis -48 KPX Kcommaaccent e 18 KPX Kcommaaccent eacute 18 KPX Kcommaaccent ecaron 18 KPX Kcommaaccent ecircumflex 18 KPX Kcommaaccent edieresis 18 KPX Kcommaaccent edotaccent 18 KPX Kcommaaccent egrave 18 KPX Kcommaaccent emacron 18 KPX Kcommaaccent eogonek 18 KPX Kcommaaccent o -4 KPX Kcommaaccent oacute -4 KPX Kcommaaccent ocircumflex -4 KPX Kcommaaccent odieresis -4 KPX Kcommaaccent ograve -4 KPX Kcommaaccent ohungarumlaut -4 KPX Kcommaaccent omacron -4 KPX Kcommaaccent oslash -4 KPX Kcommaaccent otilde -4 KPX Kcommaaccent u -4 KPX Kcommaaccent uacute -4 KPX Kcommaaccent ucircumflex -4 KPX Kcommaaccent udieresis -4 KPX Kcommaaccent ugrave -4 KPX Kcommaaccent uhungarumlaut -4 KPX Kcommaaccent umacron -4 KPX Kcommaaccent uogonek -4 KPX Kcommaaccent uring -4 KPX Kcommaaccent y -48 KPX Kcommaaccent yacute -48 KPX Kcommaaccent ydieresis -48 KPX L T -75 KPX L Tcaron -75 KPX L Tcommaaccent -75 KPX L V -97 KPX L W -69 KPX L Y -55 KPX L Yacute -55 KPX L Ydieresis -55 KPX L quotedblright -100 KPX L quoteright -100 KPX L y -30 KPX L yacute -30 KPX L ydieresis -30 KPX Lacute T -75 KPX Lacute Tcaron -75 KPX Lacute Tcommaaccent -75 KPX Lacute V -97 KPX Lacute W -69 KPX Lacute Y -55 KPX Lacute Yacute -55 KPX Lacute Ydieresis -55 KPX Lacute quotedblright -100 KPX Lacute quoteright -100 KPX Lacute y -30 KPX Lacute yacute -30 KPX Lacute ydieresis -30 KPX Lcommaaccent T -75 KPX Lcommaaccent Tcaron -75 KPX Lcommaaccent Tcommaaccent -75 KPX Lcommaaccent V -97 KPX Lcommaaccent W -69 KPX Lcommaaccent Y -55 KPX Lcommaaccent Yacute -55 KPX Lcommaaccent Ydieresis -55 KPX Lcommaaccent quotedblright -100 KPX Lcommaaccent quoteright -100 KPX Lcommaaccent y -30 KPX Lcommaaccent yacute -30 KPX Lcommaaccent ydieresis -30 KPX Lslash T -75 KPX Lslash Tcaron -75 KPX Lslash Tcommaaccent -75 KPX Lslash V -97 KPX Lslash W -69 KPX Lslash Y -55 KPX Lslash Yacute -55 KPX Lslash Ydieresis -55 KPX Lslash quotedblright -100 KPX Lslash quoteright -100 KPX Lslash y -30 KPX Lslash yacute -30 KPX Lslash ydieresis -30 KPX N comma -49 KPX N period -49 KPX Nacute comma -49 KPX Nacute period -49 KPX Ncaron comma -49 KPX Ncaron period -49 KPX Ncommaaccent comma -49 KPX Ncommaaccent period -49 KPX Ntilde comma -49 KPX Ntilde period -49 KPX O A -5 KPX O Aacute -5 KPX O Abreve -5 KPX O Acircumflex -5 KPX O Adieresis -5 KPX O Agrave -5 KPX O Amacron -5 KPX O Aogonek -5 KPX O Aring -5 KPX O Atilde -5 KPX O V -24 KPX O W -15 KPX O X -18 KPX O comma -18 KPX O period -18 KPX Oacute A -5 KPX Oacute Aacute -5 KPX Oacute Abreve -5 KPX Oacute Acircumflex -5 KPX Oacute Adieresis -5 KPX Oacute Agrave -5 KPX Oacute Amacron -5 KPX Oacute Aogonek -5 KPX Oacute Aring -5 KPX Oacute Atilde -5 KPX Oacute V -24 KPX Oacute W -15 KPX Oacute X -18 KPX Oacute comma -18 KPX Oacute period -18 KPX Ocircumflex A -5 KPX Ocircumflex Aacute -5 KPX Ocircumflex Abreve -5 KPX Ocircumflex Acircumflex -5 KPX Ocircumflex Adieresis -5 KPX Ocircumflex Agrave -5 KPX Ocircumflex Amacron -5 KPX Ocircumflex Aogonek -5 KPX Ocircumflex Aring -5 KPX Ocircumflex Atilde -5 KPX Ocircumflex V -24 KPX Ocircumflex W -15 KPX Ocircumflex X -18 KPX Ocircumflex comma -18 KPX Ocircumflex period -18 KPX Odieresis A -5 KPX Odieresis Aacute -5 KPX Odieresis Abreve -5 KPX Odieresis Acircumflex -5 KPX Odieresis Adieresis -5 KPX Odieresis Agrave -5 KPX Odieresis Amacron -5 KPX Odieresis Aogonek -5 KPX Odieresis Aring -5 KPX Odieresis Atilde -5 KPX Odieresis V -24 KPX Odieresis W -15 KPX Odieresis X -18 KPX Odieresis comma -18 KPX Odieresis period -18 KPX Ograve A -5 KPX Ograve Aacute -5 KPX Ograve Abreve -5 KPX Ograve Acircumflex -5 KPX Ograve Adieresis -5 KPX Ograve Agrave -5 KPX Ograve Amacron -5 KPX Ograve Aogonek -5 KPX Ograve Aring -5 KPX Ograve Atilde -5 KPX Ograve V -24 KPX Ograve W -15 KPX Ograve X -18 KPX Ograve comma -18 KPX Ograve period -18 KPX Ohungarumlaut A -5 KPX Ohungarumlaut Aacute -5 KPX Ohungarumlaut Abreve -5 KPX Ohungarumlaut Acircumflex -5 KPX Ohungarumlaut Adieresis -5 KPX Ohungarumlaut Agrave -5 KPX Ohungarumlaut Amacron -5 KPX Ohungarumlaut Aogonek -5 KPX Ohungarumlaut Aring -5 KPX Ohungarumlaut Atilde -5 KPX Ohungarumlaut V -24 KPX Ohungarumlaut W -15 KPX Ohungarumlaut X -18 KPX Ohungarumlaut comma -18 KPX Ohungarumlaut period -18 KPX Omacron A -5 KPX Omacron Aacute -5 KPX Omacron Abreve -5 KPX Omacron Acircumflex -5 KPX Omacron Adieresis -5 KPX Omacron Agrave -5 KPX Omacron Amacron -5 KPX Omacron Aogonek -5 KPX Omacron Aring -5 KPX Omacron Atilde -5 KPX Omacron V -24 KPX Omacron W -15 KPX Omacron X -18 KPX Omacron comma -18 KPX Omacron period -18 KPX Oslash A -5 KPX Oslash Aacute -5 KPX Oslash Abreve -5 KPX Oslash Acircumflex -5 KPX Oslash Adieresis -5 KPX Oslash Agrave -5 KPX Oslash Amacron -5 KPX Oslash Aogonek -5 KPX Oslash Aring -5 KPX Oslash Atilde -5 KPX Oslash V -24 KPX Oslash W -15 KPX Oslash X -18 KPX Oslash comma -18 KPX Oslash period -18 KPX Otilde A -5 KPX Otilde Aacute -5 KPX Otilde Abreve -5 KPX Otilde Acircumflex -5 KPX Otilde Adieresis -5 KPX Otilde Agrave -5 KPX Otilde Amacron -5 KPX Otilde Aogonek -5 KPX Otilde Aring -5 KPX Otilde Atilde -5 KPX Otilde V -24 KPX Otilde W -15 KPX Otilde X -18 KPX Otilde comma -18 KPX Otilde period -18 KPX P A -80 KPX P Aacute -80 KPX P Abreve -80 KPX P Acircumflex -80 KPX P Adieresis -80 KPX P Agrave -80 KPX P Amacron -80 KPX P Aogonek -80 KPX P Aring -80 KPX P Atilde -80 KPX P a -40 KPX P aacute -40 KPX P abreve -40 KPX P acircumflex -40 KPX P adieresis -40 KPX P agrave -40 KPX P amacron -40 KPX P aogonek -40 KPX P aring -40 KPX P atilde -40 KPX P comma -100 KPX P e -33 KPX P eacute -33 KPX P ecaron -33 KPX P ecircumflex -33 KPX P edieresis -33 KPX P edotaccent -33 KPX P egrave -33 KPX P emacron -33 KPX P eogonek -33 KPX P o -40 KPX P oacute -40 KPX P ocircumflex -40 KPX P odieresis -40 KPX P ograve -40 KPX P ohungarumlaut -40 KPX P omacron -40 KPX P oslash -40 KPX P otilde -40 KPX P period -100 KPX R V -24 KPX R W -14 KPX Racute V -24 KPX Racute W -14 KPX Rcaron V -24 KPX Rcaron W -14 KPX Rcommaaccent V -24 KPX Rcommaaccent W -14 KPX S comma -18 KPX S period -18 KPX Sacute comma -18 KPX Sacute period -18 KPX Scaron comma -18 KPX Scaron period -18 KPX Scedilla comma -18 KPX Scedilla period -18 KPX Scommaaccent comma -18 KPX Scommaaccent period -18 KPX T A -60 KPX T Aacute -60 KPX T Abreve -60 KPX T Acircumflex -60 KPX T Adieresis -60 KPX T Agrave -60 KPX T Amacron -60 KPX T Aogonek -60 KPX T Aring -60 KPX T Atilde -60 KPX T O 11 KPX T Oacute 11 KPX T Ocircumflex 11 KPX T Odieresis 11 KPX T Ograve 11 KPX T Ohungarumlaut 11 KPX T Omacron 11 KPX T Oslash 11 KPX T Otilde 11 KPX T a -40 KPX T aacute -40 KPX T abreve -40 KPX T acircumflex -40 KPX T adieresis -40 KPX T agrave -40 KPX T amacron -40 KPX T aogonek -40 KPX T aring -40 KPX T atilde -40 KPX T comma -55 KPX T e -33 KPX T eacute -33 KPX T ecaron -33 KPX T ecircumflex -33 KPX T edieresis -33 KPX T edotaccent -33 KPX T egrave -33 KPX T emacron -33 KPX T eogonek -33 KPX T h -9 KPX T hyphen -75 KPX T i -22 KPX T iacute -22 KPX T icircumflex -22 KPX T idieresis -22 KPX T igrave -22 KPX T imacron -22 KPX T iogonek -22 KPX T o -40 KPX T oacute -40 KPX T ocircumflex -40 KPX T odieresis -40 KPX T ograve -40 KPX T ohungarumlaut -40 KPX T omacron -40 KPX T oslash -40 KPX T otilde -40 KPX T period -55 KPX T r -9 KPX T racute -9 KPX T rcaron -9 KPX T rcommaaccent -9 KPX T u -22 KPX T uacute -22 KPX T ucircumflex -22 KPX T udieresis -22 KPX T ugrave -22 KPX T uhungarumlaut -22 KPX T umacron -22 KPX T uogonek -22 KPX T uring -22 KPX T w -30 KPX T y -30 KPX T yacute -30 KPX T ydieresis -30 KPX Tcaron A -60 KPX Tcaron Aacute -60 KPX Tcaron Abreve -60 KPX Tcaron Acircumflex -60 KPX Tcaron Adieresis -60 KPX Tcaron Agrave -60 KPX Tcaron Amacron -60 KPX Tcaron Aogonek -60 KPX Tcaron Aring -60 KPX Tcaron Atilde -60 KPX Tcaron O 11 KPX Tcaron Oacute 11 KPX Tcaron Ocircumflex 11 KPX Tcaron Odieresis 11 KPX Tcaron Ograve 11 KPX Tcaron Ohungarumlaut 11 KPX Tcaron Omacron 11 KPX Tcaron Oslash 11 KPX Tcaron Otilde 11 KPX Tcaron a -40 KPX Tcaron aacute -40 KPX Tcaron abreve -40 KPX Tcaron acircumflex -40 KPX Tcaron adieresis -40 KPX Tcaron agrave -40 KPX Tcaron amacron -40 KPX Tcaron aogonek -40 KPX Tcaron aring -40 KPX Tcaron atilde -40 KPX Tcaron comma -55 KPX Tcaron e -33 KPX Tcaron eacute -33 KPX Tcaron ecaron -33 KPX Tcaron ecircumflex -33 KPX Tcaron edieresis -33 KPX Tcaron edotaccent -33 KPX Tcaron egrave -33 KPX Tcaron emacron -33 KPX Tcaron eogonek -33 KPX Tcaron h -9 KPX Tcaron hyphen -75 KPX Tcaron i -22 KPX Tcaron iacute -22 KPX Tcaron icircumflex -22 KPX Tcaron idieresis -22 KPX Tcaron igrave -22 KPX Tcaron imacron -22 KPX Tcaron iogonek -22 KPX Tcaron o -40 KPX Tcaron oacute -40 KPX Tcaron ocircumflex -40 KPX Tcaron odieresis -40 KPX Tcaron ograve -40 KPX Tcaron ohungarumlaut -40 KPX Tcaron omacron -40 KPX Tcaron oslash -40 KPX Tcaron otilde -40 KPX Tcaron period -55 KPX Tcaron r -9 KPX Tcaron racute -9 KPX Tcaron rcaron -9 KPX Tcaron rcommaaccent -9 KPX Tcaron u -22 KPX Tcaron uacute -22 KPX Tcaron ucircumflex -22 KPX Tcaron udieresis -22 KPX Tcaron ugrave -22 KPX Tcaron uhungarumlaut -22 KPX Tcaron umacron -22 KPX Tcaron uogonek -22 KPX Tcaron uring -22 KPX Tcaron w -30 KPX Tcaron y -30 KPX Tcaron yacute -30 KPX Tcaron ydieresis -30 KPX Tcommaaccent A -60 KPX Tcommaaccent Aacute -60 KPX Tcommaaccent Abreve -60 KPX Tcommaaccent Acircumflex -60 KPX Tcommaaccent Adieresis -60 KPX Tcommaaccent Agrave -60 KPX Tcommaaccent Amacron -60 KPX Tcommaaccent Aogonek -60 KPX Tcommaaccent Aring -60 KPX Tcommaaccent Atilde -60 KPX Tcommaaccent O 11 KPX Tcommaaccent Oacute 11 KPX Tcommaaccent Ocircumflex 11 KPX Tcommaaccent Odieresis 11 KPX Tcommaaccent Ograve 11 KPX Tcommaaccent Ohungarumlaut 11 KPX Tcommaaccent Omacron 11 KPX Tcommaaccent Oslash 11 KPX Tcommaaccent Otilde 11 KPX Tcommaaccent a -40 KPX Tcommaaccent aacute -40 KPX Tcommaaccent abreve -40 KPX Tcommaaccent acircumflex -40 KPX Tcommaaccent adieresis -40 KPX Tcommaaccent agrave -40 KPX Tcommaaccent amacron -40 KPX Tcommaaccent aogonek -40 KPX Tcommaaccent aring -40 KPX Tcommaaccent atilde -40 KPX Tcommaaccent comma -55 KPX Tcommaaccent e -33 KPX Tcommaaccent eacute -33 KPX Tcommaaccent ecaron -33 KPX Tcommaaccent ecircumflex -33 KPX Tcommaaccent edieresis -33 KPX Tcommaaccent edotaccent -33 KPX Tcommaaccent egrave -33 KPX Tcommaaccent emacron -33 KPX Tcommaaccent eogonek -33 KPX Tcommaaccent h -9 KPX Tcommaaccent hyphen -75 KPX Tcommaaccent i -22 KPX Tcommaaccent iacute -22 KPX Tcommaaccent icircumflex -22 KPX Tcommaaccent idieresis -22 KPX Tcommaaccent igrave -22 KPX Tcommaaccent imacron -22 KPX Tcommaaccent iogonek -22 KPX Tcommaaccent o -40 KPX Tcommaaccent oacute -40 KPX Tcommaaccent ocircumflex -40 KPX Tcommaaccent odieresis -40 KPX Tcommaaccent ograve -40 KPX Tcommaaccent ohungarumlaut -40 KPX Tcommaaccent omacron -40 KPX Tcommaaccent oslash -40 KPX Tcommaaccent otilde -40 KPX Tcommaaccent period -55 KPX Tcommaaccent r -9 KPX Tcommaaccent racute -9 KPX Tcommaaccent rcaron -9 KPX Tcommaaccent rcommaaccent -9 KPX Tcommaaccent u -22 KPX Tcommaaccent uacute -22 KPX Tcommaaccent ucircumflex -22 KPX Tcommaaccent udieresis -22 KPX Tcommaaccent ugrave -22 KPX Tcommaaccent uhungarumlaut -22 KPX Tcommaaccent umacron -22 KPX Tcommaaccent uogonek -22 KPX Tcommaaccent uring -22 KPX Tcommaaccent w -30 KPX Tcommaaccent y -30 KPX Tcommaaccent yacute -30 KPX Tcommaaccent ydieresis -30 KPX U A -42 KPX U Aacute -42 KPX U Abreve -42 KPX U Acircumflex -42 KPX U Adieresis -42 KPX U Agrave -42 KPX U Amacron -42 KPX U Aogonek -42 KPX U Aring -42 KPX U Atilde -42 KPX U comma -25 KPX U period -25 KPX Uacute A -42 KPX Uacute Aacute -42 KPX Uacute Abreve -42 KPX Uacute Acircumflex -42 KPX Uacute Adieresis -42 KPX Uacute Agrave -42 KPX Uacute Amacron -42 KPX Uacute Aogonek -42 KPX Uacute Aring -42 KPX Uacute Atilde -42 KPX Uacute comma -25 KPX Uacute period -25 KPX Ucircumflex A -42 KPX Ucircumflex Aacute -42 KPX Ucircumflex Abreve -42 KPX Ucircumflex Acircumflex -42 KPX Ucircumflex Adieresis -42 KPX Ucircumflex Agrave -42 KPX Ucircumflex Amacron -42 KPX Ucircumflex Aogonek -42 KPX Ucircumflex Aring -42 KPX Ucircumflex Atilde -42 KPX Ucircumflex comma -25 KPX Ucircumflex period -25 KPX Udieresis A -42 KPX Udieresis Aacute -42 KPX Udieresis Abreve -42 KPX Udieresis Acircumflex -42 KPX Udieresis Adieresis -42 KPX Udieresis Agrave -42 KPX Udieresis Amacron -42 KPX Udieresis Aogonek -42 KPX Udieresis Aring -42 KPX Udieresis Atilde -42 KPX Udieresis comma -25 KPX Udieresis period -25 KPX Ugrave A -42 KPX Ugrave Aacute -42 KPX Ugrave Abreve -42 KPX Ugrave Acircumflex -42 KPX Ugrave Adieresis -42 KPX Ugrave Agrave -42 KPX Ugrave Amacron -42 KPX Ugrave Aogonek -42 KPX Ugrave Aring -42 KPX Ugrave Atilde -42 KPX Ugrave comma -25 KPX Ugrave period -25 KPX Uhungarumlaut A -42 KPX Uhungarumlaut Aacute -42 KPX Uhungarumlaut Abreve -42 KPX Uhungarumlaut Acircumflex -42 KPX Uhungarumlaut Adieresis -42 KPX Uhungarumlaut Agrave -42 KPX Uhungarumlaut Amacron -42 KPX Uhungarumlaut Aogonek -42 KPX Uhungarumlaut Aring -42 KPX Uhungarumlaut Atilde -42 KPX Uhungarumlaut comma -25 KPX Uhungarumlaut period -25 KPX Umacron A -42 KPX Umacron Aacute -42 KPX Umacron Abreve -42 KPX Umacron Acircumflex -42 KPX Umacron Adieresis -42 KPX Umacron Agrave -42 KPX Umacron Amacron -42 KPX Umacron Aogonek -42 KPX Umacron Aring -42 KPX Umacron Atilde -42 KPX Umacron comma -25 KPX Umacron period -25 KPX Uogonek A -42 KPX Uogonek Aacute -42 KPX Uogonek Abreve -42 KPX Uogonek Acircumflex -42 KPX Uogonek Adieresis -42 KPX Uogonek Agrave -42 KPX Uogonek Amacron -42 KPX Uogonek Aogonek -42 KPX Uogonek Aring -42 KPX Uogonek Atilde -42 KPX Uogonek comma -25 KPX Uogonek period -25 KPX Uring A -42 KPX Uring Aacute -42 KPX Uring Abreve -42 KPX Uring Acircumflex -42 KPX Uring Adieresis -42 KPX Uring Agrave -42 KPX Uring Amacron -42 KPX Uring Aogonek -42 KPX Uring Aring -42 KPX Uring Atilde -42 KPX Uring comma -25 KPX Uring period -25 KPX V A -100 KPX V Aacute -100 KPX V Abreve -100 KPX V Acircumflex -100 KPX V Adieresis -100 KPX V Agrave -100 KPX V Amacron -100 KPX V Aogonek -100 KPX V Aring -100 KPX V Atilde -100 KPX V G -12 KPX V Gbreve -12 KPX V Gcommaaccent -12 KPX V O -19 KPX V Oacute -19 KPX V Ocircumflex -19 KPX V Odieresis -19 KPX V Ograve -19 KPX V Ohungarumlaut -19 KPX V Omacron -19 KPX V Oslash -19 KPX V Otilde -19 KPX V a -55 KPX V aacute -55 KPX V abreve -55 KPX V acircumflex -55 KPX V adieresis -55 KPX V agrave -55 KPX V amacron -55 KPX V aogonek -55 KPX V aring -55 KPX V atilde -55 KPX V colon -49 KPX V comma -94 KPX V e -66 KPX V eacute -66 KPX V ecaron -66 KPX V ecircumflex -66 KPX V edieresis -66 KPX V edotaccent -66 KPX V egrave -66 KPX V emacron -66 KPX V eogonek -66 KPX V hyphen -94 KPX V i -35 KPX V iacute -35 KPX V iogonek -35 KPX V o -71 KPX V oacute -71 KPX V ocircumflex -71 KPX V odieresis -71 KPX V ograve -71 KPX V ohungarumlaut -71 KPX V omacron -71 KPX V oslash -71 KPX V otilde -71 KPX V period -94 KPX V semicolon 6 KPX V u -70 KPX V uacute -70 KPX V ucircumflex -70 KPX V udieresis -70 KPX V ugrave -70 KPX V uhungarumlaut -70 KPX V umacron -70 KPX V uogonek -70 KPX V uring -70 KPX W A -66 KPX W Aacute -66 KPX W Abreve -66 KPX W Acircumflex -66 KPX W Adieresis -66 KPX W Agrave -66 KPX W Amacron -66 KPX W Aogonek -66 KPX W Aring -66 KPX W Atilde -66 KPX W O -11 KPX W Oacute -11 KPX W Ocircumflex -11 KPX W Odieresis -11 KPX W Ograve -11 KPX W Ohungarumlaut -11 KPX W Omacron -11 KPX W Oslash -11 KPX W Otilde -11 KPX W a -33 KPX W aacute -33 KPX W abreve -33 KPX W acircumflex -33 KPX W adieresis -33 KPX W agrave -33 KPX W amacron -33 KPX W aogonek -33 KPX W aring -33 KPX W atilde -33 KPX W colon -22 KPX W comma -86 KPX W e -39 KPX W eacute -39 KPX W ecaron -39 KPX W ecircumflex -39 KPX W edieresis -39 KPX W edotaccent -39 KPX W egrave -39 KPX W emacron -39 KPX W eogonek -39 KPX W h 5 KPX W hyphen -61 KPX W i -27 KPX W iacute -27 KPX W iogonek -27 KPX W o -33 KPX W oacute -33 KPX W ocircumflex -33 KPX W odieresis -33 KPX W ograve -33 KPX W ohungarumlaut -33 KPX W omacron -33 KPX W oslash -33 KPX W otilde -33 KPX W period -86 KPX W semicolon -22 KPX W u -25 KPX W uacute -25 KPX W ucircumflex -25 KPX W udieresis -25 KPX W ugrave -25 KPX W uhungarumlaut -25 KPX W umacron -25 KPX W uogonek -25 KPX W uring -25 KPX W y -41 KPX W yacute -41 KPX W ydieresis -41 KPX Y A -79 KPX Y Aacute -79 KPX Y Abreve -79 KPX Y Acircumflex -79 KPX Y Adieresis -79 KPX Y Agrave -79 KPX Y Amacron -79 KPX Y Aogonek -79 KPX Y Aring -79 KPX Y Atilde -79 KPX Y a -77 KPX Y aacute -77 KPX Y abreve -77 KPX Y acircumflex -77 KPX Y adieresis -77 KPX Y agrave -77 KPX Y amacron -77 KPX Y aogonek -77 KPX Y aring -77 KPX Y atilde -77 KPX Y colon -55 KPX Y comma -91 KPX Y e -71 KPX Y eacute -71 KPX Y ecaron -71 KPX Y ecircumflex -71 KPX Y edieresis -31 KPX Y edotaccent -71 KPX Y egrave -31 KPX Y emacron -71 KPX Y eogonek -71 KPX Y hyphen -91 KPX Y i -22 KPX Y iacute -22 KPX Y icircumflex -22 KPX Y iogonek -22 KPX Y o -77 KPX Y oacute -77 KPX Y ocircumflex -77 KPX Y odieresis -77 KPX Y ograve -77 KPX Y ohungarumlaut -77 KPX Y omacron -77 KPX Y oslash -77 KPX Y otilde -77 KPX Y period -91 KPX Y semicolon -55 KPX Y u -58 KPX Y uacute -58 KPX Y ucircumflex -58 KPX Y udieresis -58 KPX Y ugrave -58 KPX Y uhungarumlaut -58 KPX Y umacron -58 KPX Y uogonek -58 KPX Y uring -58 KPX Yacute A -79 KPX Yacute Aacute -79 KPX Yacute Abreve -79 KPX Yacute Acircumflex -79 KPX Yacute Adieresis -79 KPX Yacute Agrave -79 KPX Yacute Amacron -79 KPX Yacute Aogonek -79 KPX Yacute Aring -79 KPX Yacute Atilde -79 KPX Yacute a -77 KPX Yacute aacute -77 KPX Yacute abreve -77 KPX Yacute acircumflex -77 KPX Yacute adieresis -77 KPX Yacute agrave -77 KPX Yacute amacron -77 KPX Yacute aogonek -77 KPX Yacute aring -77 KPX Yacute atilde -77 KPX Yacute colon -55 KPX Yacute comma -91 KPX Yacute e -71 KPX Yacute eacute -71 KPX Yacute ecaron -71 KPX Yacute ecircumflex -71 KPX Yacute edieresis -31 KPX Yacute edotaccent -71 KPX Yacute egrave -31 KPX Yacute emacron -71 KPX Yacute eogonek -71 KPX Yacute hyphen -91 KPX Yacute i -22 KPX Yacute iacute -22 KPX Yacute icircumflex -22 KPX Yacute iogonek -22 KPX Yacute o -77 KPX Yacute oacute -77 KPX Yacute ocircumflex -77 KPX Yacute odieresis -77 KPX Yacute ograve -77 KPX Yacute ohungarumlaut -77 KPX Yacute omacron -77 KPX Yacute oslash -77 KPX Yacute otilde -77 KPX Yacute period -91 KPX Yacute semicolon -55 KPX Yacute u -58 KPX Yacute uacute -58 KPX Yacute ucircumflex -58 KPX Yacute udieresis -58 KPX Yacute ugrave -58 KPX Yacute uhungarumlaut -58 KPX Yacute umacron -58 KPX Yacute uogonek -58 KPX Yacute uring -58 KPX Ydieresis A -79 KPX Ydieresis Aacute -79 KPX Ydieresis Abreve -79 KPX Ydieresis Acircumflex -79 KPX Ydieresis Adieresis -79 KPX Ydieresis Agrave -79 KPX Ydieresis Amacron -79 KPX Ydieresis Aogonek -79 KPX Ydieresis Aring -79 KPX Ydieresis Atilde -79 KPX Ydieresis a -77 KPX Ydieresis aacute -77 KPX Ydieresis abreve -77 KPX Ydieresis acircumflex -77 KPX Ydieresis adieresis -77 KPX Ydieresis agrave -77 KPX Ydieresis amacron -77 KPX Ydieresis aogonek -77 KPX Ydieresis aring -77 KPX Ydieresis atilde -77 KPX Ydieresis colon -55 KPX Ydieresis comma -91 KPX Ydieresis e -71 KPX Ydieresis eacute -71 KPX Ydieresis ecaron -71 KPX Ydieresis ecircumflex -71 KPX Ydieresis edieresis -31 KPX Ydieresis edotaccent -71 KPX Ydieresis egrave -31 KPX Ydieresis emacron -71 KPX Ydieresis eogonek -71 KPX Ydieresis hyphen -91 KPX Ydieresis i -22 KPX Ydieresis iacute -22 KPX Ydieresis icircumflex -22 KPX Ydieresis iogonek -22 KPX Ydieresis o -77 KPX Ydieresis oacute -77 KPX Ydieresis ocircumflex -77 KPX Ydieresis odieresis -77 KPX Ydieresis ograve -77 KPX Ydieresis ohungarumlaut -77 KPX Ydieresis omacron -77 KPX Ydieresis oslash -77 KPX Ydieresis otilde -77 KPX Ydieresis period -91 KPX Ydieresis semicolon -55 KPX Ydieresis u -58 KPX Ydieresis uacute -58 KPX Ydieresis ucircumflex -58 KPX Ydieresis udieresis -58 KPX Ydieresis ugrave -58 KPX Ydieresis uhungarumlaut -58 KPX Ydieresis umacron -58 KPX Ydieresis uogonek -58 KPX Ydieresis uring -58 KPX a v 6 KPX a w -8 KPX a y -8 KPX a yacute -8 KPX a ydieresis -8 KPX aacute v 6 KPX aacute w -8 KPX aacute y -8 KPX aacute yacute -8 KPX aacute ydieresis -8 KPX abreve v 6 KPX abreve w -8 KPX abreve y -8 KPX abreve yacute -8 KPX abreve ydieresis -8 KPX acircumflex v 6 KPX acircumflex w -8 KPX acircumflex y -8 KPX acircumflex yacute -8 KPX acircumflex ydieresis -8 KPX adieresis v 6 KPX adieresis w -8 KPX adieresis y -8 KPX adieresis yacute -8 KPX adieresis ydieresis -8 KPX agrave v 6 KPX agrave w -8 KPX agrave y -8 KPX agrave yacute -8 KPX agrave ydieresis -8 KPX amacron v 6 KPX amacron w -8 KPX amacron y -8 KPX amacron yacute -8 KPX amacron ydieresis -8 KPX aogonek v 6 KPX aogonek w -8 KPX aogonek y 18 KPX aogonek yacute 18 KPX aogonek ydieresis 18 KPX aring v 6 KPX aring w -8 KPX aring y -8 KPX aring yacute -8 KPX aring ydieresis -8 KPX atilde v 6 KPX atilde w -8 KPX atilde y -8 KPX atilde yacute -8 KPX atilde ydieresis -8 KPX b comma 6 KPX b period 6 KPX b v 8 KPX b y -6 KPX b yacute -6 KPX b ydieresis -6 KPX c comma -8 KPX c h -18 KPX c k -8 KPX c kcommaaccent -8 KPX c l -13 KPX c lacute -13 KPX c lcommaaccent -13 KPX c lslash -13 KPX c period -8 KPX c y -20 KPX c yacute -20 KPX c ydieresis -20 KPX cacute comma -8 KPX cacute h -18 KPX cacute k -8 KPX cacute kcommaaccent -8 KPX cacute l -13 KPX cacute lacute -13 KPX cacute lcommaaccent -13 KPX cacute lslash -13 KPX cacute period -8 KPX cacute y -20 KPX cacute yacute -20 KPX cacute ydieresis -20 KPX ccaron comma -8 KPX ccaron h -18 KPX ccaron k -8 KPX ccaron kcommaaccent -8 KPX ccaron l -13 KPX ccaron lacute -13 KPX ccaron lcommaaccent -13 KPX ccaron lslash -13 KPX ccaron period -8 KPX ccaron y -20 KPX ccaron yacute -20 KPX ccaron ydieresis -20 KPX ccedilla comma -8 KPX ccedilla h -18 KPX ccedilla k -8 KPX ccedilla kcommaaccent -8 KPX ccedilla l -13 KPX ccedilla lacute -13 KPX ccedilla lcommaaccent -13 KPX ccedilla lslash -13 KPX ccedilla period -8 KPX ccedilla y -20 KPX ccedilla yacute -20 KPX ccedilla ydieresis -20 KPX colon space -18 KPX comma quotedblright -18 KPX comma quoteright -18 KPX comma space -18 KPX d w -15 KPX d y -15 KPX d yacute -15 KPX d ydieresis -15 KPX dcroat w -15 KPX dcroat y -15 KPX dcroat yacute -15 KPX dcroat ydieresis -15 KPX e b -8 KPX e g -4 KPX e gbreve -4 KPX e gcommaaccent -4 KPX e p -11 KPX e w -15 KPX e x -5 KPX e y -15 KPX e yacute -15 KPX e ydieresis -15 KPX eacute b -8 KPX eacute g -4 KPX eacute gbreve -4 KPX eacute gcommaaccent -4 KPX eacute p -11 KPX eacute w -15 KPX eacute x -5 KPX eacute y -15 KPX eacute yacute -15 KPX eacute ydieresis -15 KPX ecaron b -8 KPX ecaron g -4 KPX ecaron gbreve -4 KPX ecaron gcommaaccent -4 KPX ecaron p -11 KPX ecaron w -15 KPX ecaron x -5 KPX ecaron y -15 KPX ecaron yacute -15 KPX ecaron ydieresis -15 KPX ecircumflex b -8 KPX ecircumflex g -4 KPX ecircumflex gbreve -4 KPX ecircumflex gcommaaccent -4 KPX ecircumflex p -11 KPX ecircumflex w -15 KPX ecircumflex x -5 KPX ecircumflex y -15 KPX ecircumflex yacute -15 KPX ecircumflex ydieresis -15 KPX edieresis b -8 KPX edieresis g -4 KPX edieresis gbreve -4 KPX edieresis gcommaaccent -4 KPX edieresis p -11 KPX edieresis w -15 KPX edieresis x -5 KPX edieresis y -15 KPX edieresis yacute -15 KPX edieresis ydieresis -15 KPX edotaccent b -8 KPX edotaccent g -4 KPX edotaccent gbreve -4 KPX edotaccent gcommaaccent -4 KPX edotaccent p -11 KPX edotaccent w -15 KPX edotaccent x -5 KPX edotaccent y -15 KPX edotaccent yacute -15 KPX edotaccent ydieresis -15 KPX egrave b -8 KPX egrave g -4 KPX egrave gbreve -4 KPX egrave gcommaaccent -4 KPX egrave p -11 KPX egrave w -15 KPX egrave x -5 KPX egrave y -15 KPX egrave yacute -15 KPX egrave ydieresis -15 KPX emacron b -8 KPX emacron g -4 KPX emacron gbreve -4 KPX emacron gcommaaccent -4 KPX emacron p -11 KPX emacron w -15 KPX emacron x -5 KPX emacron y -15 KPX emacron yacute -15 KPX emacron ydieresis -15 KPX eogonek b -8 KPX eogonek g -4 KPX eogonek gbreve -4 KPX eogonek gcommaaccent -4 KPX eogonek p -11 KPX eogonek w -15 KPX eogonek x -5 KPX eogonek y -15 KPX eogonek yacute -15 KPX eogonek ydieresis -15 KPX f a 8 KPX f aacute 8 KPX f abreve 8 KPX f acircumflex 8 KPX f adieresis 8 KPX f agrave 8 KPX f amacron 8 KPX f aogonek 8 KPX f aring 8 KPX f atilde 8 KPX f comma -28 KPX f dotlessi 7 KPX f e 14 KPX f eacute 14 KPX f ecaron 34 KPX f ecircumflex 34 KPX f edieresis 34 KPX f edotaccent 14 KPX f egrave 34 KPX f emacron 34 KPX f eogonek 14 KPX f i 7 KPX f iacute 27 KPX f icircumflex 27 KPX f idieresis 27 KPX f igrave 27 KPX f imacron 27 KPX f iogonek 7 KPX f l 7 KPX f lacute 7 KPX f lcommaaccent 7 KPX f lslash 7 KPX f o 7 KPX f oacute 7 KPX f ocircumflex 7 KPX f odieresis 7 KPX f ograve 7 KPX f ohungarumlaut 7 KPX f omacron 7 KPX f oslash 7 KPX f otilde 7 KPX f period -28 KPX f quotedblright 105 KPX f quoteright 105 KPX g comma -5 KPX g period -5 KPX g r 11 KPX g racute 11 KPX g rcaron 11 KPX g rcommaaccent 11 KPX g y -11 KPX g yacute -11 KPX g ydieresis -11 KPX gbreve comma -5 KPX gbreve period -5 KPX gbreve r 11 KPX gbreve racute 11 KPX gbreve rcaron 11 KPX gbreve rcommaaccent 11 KPX gbreve y -11 KPX gbreve yacute -11 KPX gbreve ydieresis -11 KPX gcommaaccent comma -5 KPX gcommaaccent period -5 KPX gcommaaccent r 11 KPX gcommaaccent racute 11 KPX gcommaaccent rcaron 11 KPX gcommaaccent rcommaaccent 11 KPX gcommaaccent y -11 KPX gcommaaccent yacute -11 KPX gcommaaccent ydieresis -11 KPX h y -20 KPX h yacute -20 KPX h ydieresis -20 KPX i v 7 KPX iacute v 7 KPX icircumflex v 7 KPX idieresis v 7 KPX igrave v 7 KPX imacron v 7 KPX iogonek v 7 KPX k e -16 KPX k eacute -16 KPX k ecaron -16 KPX k ecircumflex -16 KPX k edieresis -16 KPX k edotaccent -16 KPX k egrave -16 KPX k emacron -16 KPX k eogonek -16 KPX k o -22 KPX k oacute -22 KPX k ocircumflex -22 KPX k odieresis -22 KPX k ograve -22 KPX k ohungarumlaut -22 KPX k omacron -22 KPX k oslash -22 KPX k otilde -22 KPX k y -15 KPX k yacute -15 KPX k ydieresis -15 KPX kcommaaccent e -16 KPX kcommaaccent eacute -16 KPX kcommaaccent ecaron -16 KPX kcommaaccent ecircumflex -16 KPX kcommaaccent edieresis -16 KPX kcommaaccent edotaccent -16 KPX kcommaaccent egrave -16 KPX kcommaaccent emacron -16 KPX kcommaaccent eogonek -16 KPX kcommaaccent o -22 KPX kcommaaccent oacute -22 KPX kcommaaccent ocircumflex -22 KPX kcommaaccent odieresis -22 KPX kcommaaccent ograve -22 KPX kcommaaccent ohungarumlaut -22 KPX kcommaaccent omacron -22 KPX kcommaaccent oslash -22 KPX kcommaaccent otilde -22 KPX kcommaaccent y -15 KPX kcommaaccent yacute -15 KPX kcommaaccent ydieresis -15 KPX l w -7 KPX l y -7 KPX l yacute -7 KPX l ydieresis -7 KPX lacute w -7 KPX lacute y -7 KPX lacute yacute -7 KPX lacute ydieresis -7 KPX lcommaaccent w -7 KPX lcommaaccent y -7 KPX lcommaaccent yacute -7 KPX lcommaaccent ydieresis -7 KPX lslash w -7 KPX lslash y -7 KPX lslash yacute -7 KPX lslash ydieresis -7 KPX m u -11 KPX m uacute -11 KPX m ucircumflex -11 KPX m udieresis -11 KPX m ugrave -11 KPX m uhungarumlaut -11 KPX m umacron -11 KPX m uogonek -11 KPX m uring -11 KPX m y -20 KPX m yacute -20 KPX m ydieresis -20 KPX n u -11 KPX n uacute -11 KPX n ucircumflex -11 KPX n udieresis -11 KPX n ugrave -11 KPX n uhungarumlaut -11 KPX n umacron -11 KPX n uogonek -11 KPX n uring -11 KPX n v -7 KPX n y -20 KPX n yacute -20 KPX n ydieresis -20 KPX nacute u -11 KPX nacute uacute -11 KPX nacute ucircumflex -11 KPX nacute udieresis -11 KPX nacute ugrave -11 KPX nacute uhungarumlaut -11 KPX nacute umacron -11 KPX nacute uogonek -11 KPX nacute uring -11 KPX nacute v -7 KPX nacute y -20 KPX nacute yacute -20 KPX nacute ydieresis -20 KPX ncaron u -11 KPX ncaron uacute -11 KPX ncaron ucircumflex -11 KPX ncaron udieresis -11 KPX ncaron ugrave -11 KPX ncaron uhungarumlaut -11 KPX ncaron umacron -11 KPX ncaron uogonek -11 KPX ncaron uring -11 KPX ncaron v -7 KPX ncaron y -20 KPX ncaron yacute -20 KPX ncaron ydieresis -20 KPX ncommaaccent u -11 KPX ncommaaccent uacute -11 KPX ncommaaccent ucircumflex -11 KPX ncommaaccent udieresis -11 KPX ncommaaccent ugrave -11 KPX ncommaaccent uhungarumlaut -11 KPX ncommaaccent umacron -11 KPX ncommaaccent uogonek -11 KPX ncommaaccent uring -11 KPX ncommaaccent v -7 KPX ncommaaccent y -20 KPX ncommaaccent yacute -20 KPX ncommaaccent ydieresis -20 KPX ntilde u -11 KPX ntilde uacute -11 KPX ntilde ucircumflex -11 KPX ntilde udieresis -11 KPX ntilde ugrave -11 KPX ntilde uhungarumlaut -11 KPX ntilde umacron -11 KPX ntilde uogonek -11 KPX ntilde uring -11 KPX ntilde v -7 KPX ntilde y -20 KPX ntilde yacute -20 KPX ntilde ydieresis -20 KPX o v 6 KPX o w -8 KPX o y -11 KPX o yacute -11 KPX o ydieresis -11 KPX oacute v 6 KPX oacute w -8 KPX oacute y -11 KPX oacute yacute -11 KPX oacute ydieresis -11 KPX ocircumflex v 6 KPX ocircumflex w -8 KPX ocircumflex y -11 KPX ocircumflex yacute -11 KPX ocircumflex ydieresis -11 KPX odieresis v 6 KPX odieresis w -8 KPX odieresis y -11 KPX odieresis yacute -11 KPX odieresis ydieresis -11 KPX ograve v 6 KPX ograve w -8 KPX ograve y -11 KPX ograve yacute -11 KPX ograve ydieresis -11 KPX ohungarumlaut v 6 KPX ohungarumlaut w -8 KPX ohungarumlaut y -11 KPX ohungarumlaut yacute -11 KPX ohungarumlaut ydieresis -11 KPX omacron v 6 KPX omacron w -8 KPX omacron y -11 KPX omacron yacute -11 KPX omacron ydieresis -11 KPX oslash v 6 KPX oslash w -8 KPX oslash y -11 KPX oslash yacute -11 KPX oslash ydieresis -11 KPX otilde v 6 KPX otilde w -8 KPX otilde y -11 KPX otilde yacute -11 KPX otilde ydieresis -11 KPX p comma 8 KPX p period 8 KPX p y -4 KPX p yacute -4 KPX p ydieresis -4 KPX period quotedblright -18 KPX period quoteright -18 KPX period space -18 KPX quotedblleft A -60 KPX quotedblleft Aacute -60 KPX quotedblleft Abreve -60 KPX quotedblleft Acircumflex -60 KPX quotedblleft Adieresis -60 KPX quotedblleft Agrave -60 KPX quotedblleft Amacron -60 KPX quotedblleft Aogonek -60 KPX quotedblleft Aring -60 KPX quotedblleft Atilde -60 KPX quotedblleft quoteleft 20 KPX quotedblright space -18 KPX quoteleft A -80 KPX quoteleft Aacute -80 KPX quoteleft Abreve -80 KPX quoteleft Acircumflex -80 KPX quoteleft Adieresis -80 KPX quoteleft Agrave -80 KPX quoteleft Amacron -80 KPX quoteleft Aogonek -80 KPX quoteleft Aring -80 KPX quoteleft Atilde -80 KPX quoteright d -41 KPX quoteright dcroat -41 KPX quoteright l -22 KPX quoteright lacute -22 KPX quoteright lcommaaccent -22 KPX quoteright lslash -22 KPX quoteright r -9 KPX quoteright racute -9 KPX quoteright rcaron -9 KPX quoteright rcommaaccent -9 KPX quoteright s -46 KPX quoteright sacute -46 KPX quoteright scaron -46 KPX quoteright scedilla -46 KPX quoteright scommaaccent -46 KPX quoteright t -22 KPX quoteright tcommaaccent -22 KPX quoteright v -16 KPX r a -11 KPX r aacute -11 KPX r abreve -11 KPX r acircumflex -11 KPX r adieresis -11 KPX r agrave -11 KPX r amacron -11 KPX r aogonek -11 KPX r aring -11 KPX r atilde -11 KPX r colon 9 KPX r comma -90 KPX r d -7 KPX r dcroat -7 KPX r e -7 KPX r eacute -7 KPX r ecaron -7 KPX r ecircumflex -7 KPX r edieresis -7 KPX r edotaccent -7 KPX r egrave -7 KPX r emacron -7 KPX r eogonek -7 KPX r g -11 KPX r gbreve -11 KPX r gcommaaccent -11 KPX r hyphen -16 KPX r i -14 KPX r iacute -14 KPX r icircumflex -14 KPX r idieresis -14 KPX r igrave -14 KPX r imacron -14 KPX r iogonek -14 KPX r k 9 KPX r kcommaaccent 9 KPX r l -14 KPX r lacute -14 KPX r lcommaaccent -14 KPX r lslash -14 KPX r o -11 KPX r oacute -11 KPX r ocircumflex -11 KPX r odieresis -11 KPX r ograve -11 KPX r ohungarumlaut -11 KPX r omacron -11 KPX r oslash -11 KPX r otilde -11 KPX r p -17 KPX r period -90 KPX r quoteright 9 KPX r s -20 KPX r sacute -20 KPX r scaron -20 KPX r scedilla -20 KPX r scommaaccent -20 KPX r semicolon 9 KPX r t -11 KPX r tcommaaccent -11 KPX r u -11 KPX r uacute -11 KPX r ucircumflex -11 KPX r udieresis -11 KPX r ugrave -11 KPX r uhungarumlaut -11 KPX r umacron -11 KPX r uogonek -11 KPX r uring -11 KPX r v -7 KPX r y -20 KPX r yacute -20 KPX r ydieresis -20 KPX racute a -11 KPX racute aacute -11 KPX racute abreve -11 KPX racute acircumflex -11 KPX racute adieresis -11 KPX racute agrave -11 KPX racute amacron -11 KPX racute aogonek -11 KPX racute aring -11 KPX racute atilde -11 KPX racute colon 9 KPX racute comma -90 KPX racute d -7 KPX racute dcroat -7 KPX racute e -7 KPX racute eacute -7 KPX racute ecaron -7 KPX racute ecircumflex -7 KPX racute edieresis -7 KPX racute edotaccent -7 KPX racute egrave -7 KPX racute emacron -7 KPX racute eogonek -7 KPX racute g -11 KPX racute gbreve -11 KPX racute gcommaaccent -11 KPX racute hyphen -16 KPX racute i -14 KPX racute iacute -14 KPX racute icircumflex -14 KPX racute idieresis -14 KPX racute igrave -14 KPX racute imacron -14 KPX racute iogonek -14 KPX racute k 9 KPX racute kcommaaccent 9 KPX racute l -14 KPX racute lacute -14 KPX racute lcommaaccent -14 KPX racute lslash -14 KPX racute o -11 KPX racute oacute -11 KPX racute ocircumflex -11 KPX racute odieresis -11 KPX racute ograve -11 KPX racute ohungarumlaut -11 KPX racute omacron -11 KPX racute oslash -11 KPX racute otilde -11 KPX racute p -17 KPX racute period -90 KPX racute quoteright 9 KPX racute s -20 KPX racute sacute -20 KPX racute scaron -20 KPX racute scedilla -20 KPX racute scommaaccent -20 KPX racute semicolon 9 KPX racute t -11 KPX racute tcommaaccent -11 KPX racute u -11 KPX racute uacute -11 KPX racute ucircumflex -11 KPX racute udieresis -11 KPX racute ugrave -11 KPX racute uhungarumlaut -11 KPX racute umacron -11 KPX racute uogonek -11 KPX racute uring -11 KPX racute v -7 KPX racute y -20 KPX racute yacute -20 KPX racute ydieresis -20 KPX rcaron a -11 KPX rcaron aacute -11 KPX rcaron abreve -11 KPX rcaron acircumflex -11 KPX rcaron adieresis -11 KPX rcaron agrave -11 KPX rcaron amacron -11 KPX rcaron aogonek -11 KPX rcaron aring -11 KPX rcaron atilde -11 KPX rcaron colon 9 KPX rcaron comma -90 KPX rcaron d -7 KPX rcaron dcroat -7 KPX rcaron e -7 KPX rcaron eacute -7 KPX rcaron ecaron -7 KPX rcaron ecircumflex -7 KPX rcaron edieresis -7 KPX rcaron edotaccent -7 KPX rcaron egrave -7 KPX rcaron emacron -7 KPX rcaron eogonek -7 KPX rcaron g -11 KPX rcaron gbreve -11 KPX rcaron gcommaaccent -11 KPX rcaron hyphen -16 KPX rcaron i -14 KPX rcaron iacute -14 KPX rcaron icircumflex -14 KPX rcaron idieresis -14 KPX rcaron igrave -14 KPX rcaron imacron -14 KPX rcaron iogonek -14 KPX rcaron k 9 KPX rcaron kcommaaccent 9 KPX rcaron l -14 KPX rcaron lacute -14 KPX rcaron lcommaaccent -14 KPX rcaron lslash -14 KPX rcaron o -11 KPX rcaron oacute -11 KPX rcaron ocircumflex -11 KPX rcaron odieresis -11 KPX rcaron ograve -11 KPX rcaron ohungarumlaut -11 KPX rcaron omacron -11 KPX rcaron oslash -11 KPX rcaron otilde -11 KPX rcaron p -17 KPX rcaron period -90 KPX rcaron quoteright 9 KPX rcaron s -20 KPX rcaron sacute -20 KPX rcaron scaron -20 KPX rcaron scedilla -20 KPX rcaron scommaaccent -20 KPX rcaron semicolon 9 KPX rcaron t -11 KPX rcaron tcommaaccent -11 KPX rcaron u -11 KPX rcaron uacute -11 KPX rcaron ucircumflex -11 KPX rcaron udieresis -11 KPX rcaron ugrave -11 KPX rcaron uhungarumlaut -11 KPX rcaron umacron -11 KPX rcaron uogonek -11 KPX rcaron uring -11 KPX rcaron v -7 KPX rcaron y -20 KPX rcaron yacute -20 KPX rcaron ydieresis -20 KPX rcommaaccent a -11 KPX rcommaaccent aacute -11 KPX rcommaaccent abreve -11 KPX rcommaaccent acircumflex -11 KPX rcommaaccent adieresis -11 KPX rcommaaccent agrave -11 KPX rcommaaccent amacron -11 KPX rcommaaccent aogonek -11 KPX rcommaaccent aring -11 KPX rcommaaccent atilde -11 KPX rcommaaccent colon 9 KPX rcommaaccent comma -90 KPX rcommaaccent d -7 KPX rcommaaccent dcroat -7 KPX rcommaaccent e -7 KPX rcommaaccent eacute -7 KPX rcommaaccent ecaron -7 KPX rcommaaccent ecircumflex -7 KPX rcommaaccent edieresis -7 KPX rcommaaccent edotaccent -7 KPX rcommaaccent egrave -7 KPX rcommaaccent emacron -7 KPX rcommaaccent eogonek -7 KPX rcommaaccent g -11 KPX rcommaaccent gbreve -11 KPX rcommaaccent gcommaaccent -11 KPX rcommaaccent hyphen -16 KPX rcommaaccent i -14 KPX rcommaaccent iacute -14 KPX rcommaaccent icircumflex -14 KPX rcommaaccent idieresis -14 KPX rcommaaccent igrave -14 KPX rcommaaccent imacron -14 KPX rcommaaccent iogonek -14 KPX rcommaaccent k 9 KPX rcommaaccent kcommaaccent 9 KPX rcommaaccent l -14 KPX rcommaaccent lacute -14 KPX rcommaaccent lcommaaccent -14 KPX rcommaaccent lslash -14 KPX rcommaaccent o -11 KPX rcommaaccent oacute -11 KPX rcommaaccent ocircumflex -11 KPX rcommaaccent odieresis -11 KPX rcommaaccent ograve -11 KPX rcommaaccent ohungarumlaut -11 KPX rcommaaccent omacron -11 KPX rcommaaccent oslash -11 KPX rcommaaccent otilde -11 KPX rcommaaccent p -17 KPX rcommaaccent period -90 KPX rcommaaccent quoteright 9 KPX rcommaaccent s -20 KPX rcommaaccent sacute -20 KPX rcommaaccent scaron -20 KPX rcommaaccent scedilla -20 KPX rcommaaccent scommaaccent -20 KPX rcommaaccent semicolon 9 KPX rcommaaccent t -11 KPX rcommaaccent tcommaaccent -11 KPX rcommaaccent u -11 KPX rcommaaccent uacute -11 KPX rcommaaccent ucircumflex -11 KPX rcommaaccent udieresis -11 KPX rcommaaccent ugrave -11 KPX rcommaaccent uhungarumlaut -11 KPX rcommaaccent umacron -11 KPX rcommaaccent uogonek -11 KPX rcommaaccent uring -11 KPX rcommaaccent v -7 KPX rcommaaccent y -20 KPX rcommaaccent yacute -20 KPX rcommaaccent ydieresis -20 KPX s comma 11 KPX s period 11 KPX sacute comma 11 KPX sacute period 11 KPX scaron comma 11 KPX scaron period 11 KPX scedilla comma 11 KPX scedilla period 11 KPX scommaaccent comma 11 KPX scommaaccent period 11 KPX semicolon space -18 KPX space A -22 KPX space Aacute -22 KPX space Abreve -22 KPX space Acircumflex -22 KPX space Adieresis -22 KPX space Agrave -22 KPX space Amacron -22 KPX space Aogonek -22 KPX space Aring -22 KPX space Atilde -22 KPX space T -18 KPX space Tcaron -18 KPX space Tcommaaccent -18 KPX space V -24 KPX space W -33 KPX space Y -18 KPX space Yacute -18 KPX space Ydieresis -18 KPX space quotedblleft -18 KPX v a -6 KPX v aacute -6 KPX v abreve -6 KPX v acircumflex -6 KPX v adieresis -6 KPX v agrave -6 KPX v amacron -6 KPX v aogonek -6 KPX v aring -6 KPX v atilde -6 KPX v comma -11 KPX v o -6 KPX v oacute -6 KPX v ocircumflex -6 KPX v odieresis -6 KPX v ograve -6 KPX v ohungarumlaut -6 KPX v omacron -6 KPX v oslash -6 KPX v otilde -6 KPX v period -11 KPX w a -14 KPX w aacute -14 KPX w abreve -14 KPX w acircumflex -14 KPX w adieresis -14 KPX w agrave -14 KPX w amacron -14 KPX w aogonek -14 KPX w aring -14 KPX w atilde -14 KPX w comma -17 KPX w e -8 KPX w eacute -8 KPX w ecaron -8 KPX w ecircumflex -8 KPX w edieresis -8 KPX w edotaccent -8 KPX w egrave -8 KPX w emacron -8 KPX w eogonek -8 KPX w o -14 KPX w oacute -14 KPX w ocircumflex -14 KPX w odieresis -14 KPX w ograve -14 KPX w ohungarumlaut -14 KPX w omacron -14 KPX w oslash -14 KPX w otilde -14 KPX w period -17 KPX x e 5 KPX x eacute 5 KPX x ecaron 5 KPX x ecircumflex 5 KPX x edieresis 5 KPX x edotaccent 5 KPX x egrave 5 KPX x emacron 5 KPX x eogonek 5 KPX y a 8 KPX y aacute 8 KPX y abreve 8 KPX y acircumflex 8 KPX y adieresis 8 KPX y agrave 8 KPX y amacron 8 KPX y aogonek 8 KPX y aring 8 KPX y atilde 8 KPX y comma -25 KPX y e 15 KPX y eacute 15 KPX y ecaron 15 KPX y ecircumflex 15 KPX y edieresis 15 KPX y edotaccent 15 KPX y egrave 15 KPX y emacron 15 KPX y eogonek 15 KPX y o 8 KPX y oacute 8 KPX y ocircumflex 8 KPX y odieresis 8 KPX y ograve 8 KPX y ohungarumlaut 8 KPX y omacron 8 KPX y oslash 8 KPX y otilde 8 KPX y period -25 KPX yacute a 8 KPX yacute aacute 8 KPX yacute abreve 8 KPX yacute acircumflex 8 KPX yacute adieresis 8 KPX yacute agrave 8 KPX yacute amacron 8 KPX yacute aogonek 8 KPX yacute aring 8 KPX yacute atilde 8 KPX yacute comma -25 KPX yacute e 15 KPX yacute eacute 15 KPX yacute ecaron 15 KPX yacute ecircumflex 15 KPX yacute edieresis 15 KPX yacute edotaccent 15 KPX yacute egrave 15 KPX yacute emacron 15 KPX yacute eogonek 15 KPX yacute o 8 KPX yacute oacute 8 KPX yacute ocircumflex 8 KPX yacute odieresis 8 KPX yacute ograve 8 KPX yacute ohungarumlaut 8 KPX yacute omacron 8 KPX yacute oslash 8 KPX yacute otilde 8 KPX yacute period -25 KPX ydieresis a 8 KPX ydieresis aacute 8 KPX ydieresis abreve 8 KPX ydieresis acircumflex 8 KPX ydieresis adieresis 8 KPX ydieresis agrave 8 KPX ydieresis amacron 8 KPX ydieresis aogonek 8 KPX ydieresis aring 8 KPX ydieresis atilde 8 KPX ydieresis comma -25 KPX ydieresis e 15 KPX ydieresis eacute 15 KPX ydieresis ecaron 15 KPX ydieresis ecircumflex 15 KPX ydieresis edieresis 15 KPX ydieresis edotaccent 15 KPX ydieresis egrave 15 KPX ydieresis emacron 15 KPX ydieresis eogonek 15 KPX ydieresis o 8 KPX ydieresis oacute 8 KPX ydieresis ocircumflex 8 KPX ydieresis odieresis 8 KPX ydieresis ograve 8 KPX ydieresis ohungarumlaut 8 KPX ydieresis omacron 8 KPX ydieresis oslash 8 KPX ydieresis otilde 8 KPX ydieresis period -25 KPX z e 4 KPX z eacute 4 KPX z ecaron 4 KPX z ecircumflex 4 KPX z edieresis 4 KPX z edotaccent 4 KPX z egrave 4 KPX z emacron 4 KPX z eogonek 4 KPX zacute e 4 KPX zacute eacute 4 KPX zacute ecaron 4 KPX zacute ecircumflex 4 KPX zacute edieresis 4 KPX zacute edotaccent 4 KPX zacute egrave 4 KPX zacute emacron 4 KPX zacute eogonek 4 KPX zcaron e 4 KPX zcaron eacute 4 KPX zcaron ecaron 4 KPX zcaron ecircumflex 4 KPX zcaron edieresis 4 KPX zcaron edotaccent 4 KPX zcaron egrave 4 KPX zcaron emacron 4 KPX zcaron eogonek 4 KPX zdotaccent e 4 KPX zdotaccent eacute 4 KPX zdotaccent ecaron 4 KPX zdotaccent ecircumflex 4 KPX zdotaccent edieresis 4 KPX zdotaccent edotaccent 4 KPX zdotaccent egrave 4 KPX zdotaccent emacron 4 KPX zdotaccent eogonek 4 EndKernPairs EndKernData EndFontMetrics gle-graphics-4.2.4c/src/fonts/Adobe-Core35_AFMs-314/ITCAvantGarde-Demi.afm0000664000000000000000000010454411405446017024023 0ustar rootrootStartFontMetrics 4.1 Comment Copyright (c) 1985, 1987, 1989, 1990, 1991, 1992, 1997 Adobe Systems Incorporated. All Rights Reserved. Comment Creation Date: Mon Jun 23 16:39:17 1997 Comment UniqueID 43085 Comment VMusage 35038 46063 FontName AvantGarde-Demi FullName ITC Avant Garde Gothic Demi FamilyName ITC Avant Garde Gothic Weight Demi ItalicAngle 0 IsFixedPitch false FontBBox -123 -251 1222 1021 UnderlinePosition -100 UnderlineThickness 50 Version 002.000 Notice Copyright (c) 1985, 1987, 1989, 1990, 1991, 1992, 1997 Adobe Systems Incorporated. All Rights Reserved.ITC Avant Garde Gothic is a registered trademark of International Typeface Corporation. EncodingScheme AdobeStandardEncoding CapHeight 740 XHeight 555 Ascender 740 Descender -192 StdHW 122 StdVW 133 StartCharMetrics 314 C 32 ; WX 280 ; N space ; B 0 0 0 0 ; C 33 ; WX 280 ; N exclam ; B 73 0 206 740 ; C 34 ; WX 360 ; N quotedbl ; B 19 444 341 740 ; C 35 ; WX 560 ; N numbersign ; B 29 0 525 700 ; C 36 ; WX 560 ; N dollar ; B 58 -86 501 857 ; C 37 ; WX 860 ; N percent ; B 36 -15 822 755 ; C 38 ; WX 680 ; N ampersand ; B 34 -15 665 755 ; C 39 ; WX 280 ; N quoteright ; B 72 466 205 740 ; C 40 ; WX 380 ; N parenleft ; B 74 -157 350 754 ; C 41 ; WX 380 ; N parenright ; B 37 -157 313 754 ; C 42 ; WX 440 ; N asterisk ; B 67 457 374 755 ; C 43 ; WX 600 ; N plus ; B 48 0 552 506 ; C 44 ; WX 280 ; N comma ; B 73 -141 206 133 ; C 45 ; WX 420 ; N hyphen ; B 71 230 349 348 ; C 46 ; WX 280 ; N period ; B 73 0 206 133 ; C 47 ; WX 460 ; N slash ; B 6 -100 454 740 ; C 48 ; WX 560 ; N zero ; B 32 -15 529 755 ; C 49 ; WX 560 ; N one ; B 137 0 363 740 ; C 50 ; WX 560 ; N two ; B 36 0 523 755 ; C 51 ; WX 560 ; N three ; B 28 -15 532 755 ; C 52 ; WX 560 ; N four ; B 15 0 545 740 ; C 53 ; WX 560 ; N five ; B 25 -15 535 740 ; C 54 ; WX 560 ; N six ; B 23 -15 536 739 ; C 55 ; WX 560 ; N seven ; B 62 0 498 740 ; C 56 ; WX 560 ; N eight ; B 33 -15 527 755 ; C 57 ; WX 560 ; N nine ; B 24 0 537 754 ; C 58 ; WX 280 ; N colon ; B 73 0 206 555 ; C 59 ; WX 280 ; N semicolon ; B 73 -141 206 555 ; C 60 ; WX 600 ; N less ; B 46 -8 554 514 ; C 61 ; WX 600 ; N equal ; B 48 81 552 425 ; C 62 ; WX 600 ; N greater ; B 46 -8 554 514 ; C 63 ; WX 560 ; N question ; B 38 0 491 755 ; C 64 ; WX 740 ; N at ; B 50 -12 750 712 ; C 65 ; WX 740 ; N A ; B 7 0 732 740 ; C 66 ; WX 580 ; N B ; B 70 0 551 740 ; C 67 ; WX 780 ; N C ; B 34 -15 766 755 ; C 68 ; WX 700 ; N D ; B 63 0 657 740 ; C 69 ; WX 520 ; N E ; B 61 0 459 740 ; C 70 ; WX 480 ; N F ; B 61 0 438 740 ; C 71 ; WX 840 ; N G ; B 27 -15 817 755 ; C 72 ; WX 680 ; N H ; B 71 0 610 740 ; C 73 ; WX 280 ; N I ; B 72 0 209 740 ; C 74 ; WX 480 ; N J ; B 2 -15 409 740 ; C 75 ; WX 620 ; N K ; B 89 0 620 740 ; C 76 ; WX 440 ; N L ; B 72 0 435 740 ; C 77 ; WX 900 ; N M ; B 63 0 837 740 ; C 78 ; WX 740 ; N N ; B 70 0 671 740 ; C 79 ; WX 840 ; N O ; B 33 -15 807 755 ; C 80 ; WX 560 ; N P ; B 72 0 545 740 ; C 81 ; WX 840 ; N Q ; B 32 -15 824 755 ; C 82 ; WX 580 ; N R ; B 64 0 565 740 ; C 83 ; WX 520 ; N S ; B 12 -15 493 755 ; C 84 ; WX 420 ; N T ; B 6 0 418 740 ; C 85 ; WX 640 ; N U ; B 55 -15 585 740 ; C 86 ; WX 700 ; N V ; B 8 0 695 740 ; C 87 ; WX 900 ; N W ; B 7 0 899 740 ; C 88 ; WX 680 ; N X ; B 4 0 676 740 ; C 89 ; WX 620 ; N Y ; B -2 0 622 740 ; C 90 ; WX 500 ; N Z ; B 19 0 481 740 ; C 91 ; WX 320 ; N bracketleft ; B 66 -157 284 754 ; C 92 ; WX 640 ; N backslash ; B 96 -100 544 740 ; C 93 ; WX 320 ; N bracketright ; B 36 -157 254 754 ; C 94 ; WX 600 ; N asciicircum ; B 73 375 527 740 ; C 95 ; WX 500 ; N underscore ; B 0 -125 500 -75 ; C 96 ; WX 280 ; N quoteleft ; B 72 466 205 740 ; C 97 ; WX 660 ; N a ; B 27 -18 613 574 ; C 98 ; WX 660 ; N b ; B 47 -18 632 740 ; C 99 ; WX 640 ; N c ; B 37 -18 610 574 ; C 100 ; WX 660 ; N d ; B 34 -18 618 740 ; C 101 ; WX 640 ; N e ; B 31 -18 610 574 ; C 102 ; WX 280 ; N f ; B 15 0 280 755 ; L i fi ; L l fl ; C 103 ; WX 660 ; N g ; B 32 -226 623 574 ; C 104 ; WX 600 ; N h ; B 54 0 546 740 ; C 105 ; WX 240 ; N i ; B 53 0 186 740 ; C 106 ; WX 260 ; N j ; B 16 -185 205 740 ; C 107 ; WX 580 ; N k ; B 80 0 571 740 ; C 108 ; WX 240 ; N l ; B 54 0 187 740 ; C 109 ; WX 940 ; N m ; B 54 0 887 574 ; C 110 ; WX 600 ; N n ; B 54 0 547 574 ; C 111 ; WX 640 ; N o ; B 25 -18 615 574 ; C 112 ; WX 660 ; N p ; B 47 -185 629 574 ; C 113 ; WX 660 ; N q ; B 31 -185 613 574 ; C 114 ; WX 320 ; N r ; B 63 0 317 574 ; C 115 ; WX 440 ; N s ; B 19 -18 421 574 ; C 116 ; WX 300 ; N t ; B 21 0 299 740 ; C 117 ; WX 600 ; N u ; B 50 -18 544 555 ; C 118 ; WX 560 ; N v ; B 3 0 556 555 ; C 119 ; WX 800 ; N w ; B 11 0 789 555 ; C 120 ; WX 560 ; N x ; B 3 0 556 555 ; C 121 ; WX 580 ; N y ; B 8 -185 571 555 ; C 122 ; WX 460 ; N z ; B 20 0 442 555 ; C 123 ; WX 340 ; N braceleft ; B -3 -191 317 747 ; C 124 ; WX 600 ; N bar ; B 233 -250 366 750 ; C 125 ; WX 340 ; N braceright ; B 23 -191 343 747 ; C 126 ; WX 600 ; N asciitilde ; B 67 160 533 347 ; C 161 ; WX 280 ; N exclamdown ; B 74 -185 207 555 ; C 162 ; WX 560 ; N cent ; B 43 39 517 715 ; C 163 ; WX 560 ; N sterling ; B -2 0 562 755 ; C 164 ; WX 160 ; N fraction ; B -123 0 282 740 ; C 165 ; WX 560 ; N yen ; B -10 0 570 740 ; C 166 ; WX 560 ; N florin ; B 0 -151 512 824 ; C 167 ; WX 560 ; N section ; B 28 -158 530 755 ; C 168 ; WX 560 ; N currency ; B 27 69 534 577 ; C 169 ; WX 220 ; N quotesingle ; B 44 444 177 740 ; C 170 ; WX 480 ; N quotedblleft ; B 70 466 410 740 ; C 171 ; WX 460 ; N guillemotleft ; B 61 108 400 469 ; C 172 ; WX 240 ; N guilsinglleft ; B 50 108 190 469 ; C 173 ; WX 240 ; N guilsinglright ; B 50 108 190 469 ; C 174 ; WX 520 ; N fi ; B 25 0 461 755 ; C 175 ; WX 520 ; N fl ; B 25 0 461 755 ; C 177 ; WX 500 ; N endash ; B 35 230 465 348 ; C 178 ; WX 560 ; N dagger ; B 51 -142 509 740 ; C 179 ; WX 560 ; N daggerdbl ; B 51 -142 509 740 ; C 180 ; WX 280 ; N periodcentered ; B 73 187 206 320 ; C 182 ; WX 600 ; N paragraph ; B -7 -103 607 740 ; C 183 ; WX 600 ; N bullet ; B 148 222 453 532 ; C 184 ; WX 280 ; N quotesinglbase ; B 72 -141 205 133 ; C 185 ; WX 480 ; N quotedblbase ; B 70 -141 410 133 ; C 186 ; WX 480 ; N quotedblright ; B 70 466 410 740 ; C 187 ; WX 460 ; N guillemotright ; B 61 108 400 469 ; C 188 ; WX 1000 ; N ellipsis ; B 100 0 899 133 ; C 189 ; WX 1280 ; N perthousand ; B 36 -15 1222 755 ; C 191 ; WX 560 ; N questiondown ; B 68 -200 521 555 ; C 193 ; WX 420 ; N grave ; B 50 624 329 851 ; C 194 ; WX 420 ; N acute ; B 89 624 368 851 ; C 195 ; WX 540 ; N circumflex ; B 71 636 470 774 ; C 196 ; WX 480 ; N tilde ; B 44 636 437 767 ; C 197 ; WX 420 ; N macron ; B 72 648 349 759 ; C 198 ; WX 480 ; N breve ; B 42 633 439 770 ; C 199 ; WX 280 ; N dotaccent ; B 74 636 207 769 ; C 200 ; WX 500 ; N dieresis ; B 78 636 422 769 ; C 202 ; WX 360 ; N ring ; B 73 619 288 834 ; C 203 ; WX 340 ; N cedilla ; B 98 -251 298 6 ; C 205 ; WX 700 ; N hungarumlaut ; B 120 610 626 849 ; C 206 ; WX 340 ; N ogonek ; B 79 -195 262 9 ; C 207 ; WX 540 ; N caron ; B 71 636 470 774 ; C 208 ; WX 1000 ; N emdash ; B 35 230 965 348 ; C 225 ; WX 900 ; N AE ; B -5 0 824 740 ; C 227 ; WX 360 ; N ordfeminine ; B 19 438 334 755 ; C 232 ; WX 480 ; N Lslash ; B 26 0 460 740 ; C 233 ; WX 840 ; N Oslash ; B 33 -71 807 814 ; C 234 ; WX 1060 ; N OE ; B 37 -15 1007 755 ; C 235 ; WX 360 ; N ordmasculine ; B 23 438 338 755 ; C 241 ; WX 1080 ; N ae ; B 29 -18 1049 574 ; C 245 ; WX 240 ; N dotlessi ; B 53 0 186 555 ; C 248 ; WX 320 ; N lslash ; B 34 0 305 740 ; C 249 ; WX 660 ; N oslash ; B 35 -50 625 608 ; C 250 ; WX 1080 ; N oe ; B 30 -18 1050 574 ; C 251 ; WX 600 ; N germandbls ; B 51 -18 585 755 ; C -1 ; WX 280 ; N Idieresis ; B -32 0 312 939 ; C -1 ; WX 640 ; N eacute ; B 31 -18 610 851 ; C -1 ; WX 660 ; N abreve ; B 27 -18 613 770 ; C -1 ; WX 600 ; N uhungarumlaut ; B 50 -18 576 849 ; C -1 ; WX 640 ; N ecaron ; B 31 -18 610 774 ; C -1 ; WX 620 ; N Ydieresis ; B -2 0 622 939 ; C -1 ; WX 600 ; N divide ; B 48 -20 552 526 ; C -1 ; WX 620 ; N Yacute ; B -2 0 622 1021 ; C -1 ; WX 740 ; N Acircumflex ; B 7 0 732 944 ; C -1 ; WX 660 ; N aacute ; B 27 -18 613 851 ; C -1 ; WX 640 ; N Ucircumflex ; B 55 -15 585 944 ; C -1 ; WX 580 ; N yacute ; B 8 -185 571 851 ; C -1 ; WX 440 ; N scommaaccent ; B 19 -229 421 574 ; C -1 ; WX 640 ; N ecircumflex ; B 31 -18 610 774 ; C -1 ; WX 640 ; N Uring ; B 55 -15 585 969 ; C -1 ; WX 640 ; N Udieresis ; B 55 -15 585 939 ; C -1 ; WX 660 ; N aogonek ; B 27 -195 613 574 ; C -1 ; WX 640 ; N Uacute ; B 55 -15 585 1021 ; C -1 ; WX 600 ; N uogonek ; B 50 -195 544 555 ; C -1 ; WX 520 ; N Edieresis ; B 61 0 459 939 ; C -1 ; WX 742 ; N Dcroat ; B 25 0 691 740 ; C -1 ; WX 351 ; N commaaccent ; B 48 -229 223 -54 ; C -1 ; WX 740 ; N copyright ; B -12 -12 752 752 ; C -1 ; WX 520 ; N Emacron ; B 61 0 459 944 ; C -1 ; WX 640 ; N ccaron ; B 37 -18 610 774 ; C -1 ; WX 660 ; N aring ; B 27 -18 613 834 ; C -1 ; WX 740 ; N Ncommaaccent ; B 70 -209 671 740 ; C -1 ; WX 240 ; N lacute ; B -1 0 278 1011 ; C -1 ; WX 660 ; N agrave ; B 27 -18 613 851 ; C -1 ; WX 420 ; N Tcommaaccent ; B 6 -229 418 740 ; C -1 ; WX 780 ; N Cacute ; B 34 -15 766 1021 ; C -1 ; WX 660 ; N atilde ; B 27 -18 613 767 ; C -1 ; WX 520 ; N Edotaccent ; B 61 0 459 954 ; C -1 ; WX 440 ; N scaron ; B 19 -18 421 774 ; C -1 ; WX 440 ; N scedilla ; B 19 -251 421 574 ; C -1 ; WX 240 ; N iacute ; B 24 0 303 851 ; C -1 ; WX 494 ; N lozenge ; B 10 0 484 745 ; C -1 ; WX 580 ; N Rcaron ; B 64 0 565 959 ; C -1 ; WX 840 ; N Gcommaaccent ; B 27 -229 817 755 ; C -1 ; WX 600 ; N ucircumflex ; B 50 -18 544 774 ; C -1 ; WX 660 ; N acircumflex ; B 27 -18 613 774 ; C -1 ; WX 740 ; N Amacron ; B 7 0 732 944 ; C -1 ; WX 320 ; N rcaron ; B -39 0 360 774 ; C -1 ; WX 640 ; N ccedilla ; B 37 -251 610 574 ; C -1 ; WX 500 ; N Zdotaccent ; B 19 0 481 954 ; C -1 ; WX 560 ; N Thorn ; B 72 0 545 740 ; C -1 ; WX 840 ; N Omacron ; B 33 -15 807 944 ; C -1 ; WX 580 ; N Racute ; B 64 0 565 1021 ; C -1 ; WX 520 ; N Sacute ; B 12 -15 493 1021 ; C -1 ; WX 800 ; N dcaron ; B 34 -18 828 740 ; C -1 ; WX 640 ; N Umacron ; B 55 -15 585 944 ; C -1 ; WX 600 ; N uring ; B 50 -18 544 834 ; C -1 ; WX 336 ; N threesuperior ; B 8 287 328 749 ; C -1 ; WX 840 ; N Ograve ; B 33 -15 807 1021 ; C -1 ; WX 740 ; N Agrave ; B 7 0 732 1021 ; C -1 ; WX 740 ; N Abreve ; B 7 0 732 955 ; C -1 ; WX 600 ; N multiply ; B 59 12 541 494 ; C -1 ; WX 600 ; N uacute ; B 50 -18 544 851 ; C -1 ; WX 420 ; N Tcaron ; B 6 0 418 959 ; C -1 ; WX 494 ; N partialdiff ; B 11 -21 494 750 ; C -1 ; WX 580 ; N ydieresis ; B 8 -185 571 769 ; C -1 ; WX 740 ; N Nacute ; B 70 0 671 1021 ; C -1 ; WX 240 ; N icircumflex ; B -79 0 320 774 ; C -1 ; WX 520 ; N Ecircumflex ; B 61 0 460 944 ; C -1 ; WX 660 ; N adieresis ; B 27 -18 613 769 ; C -1 ; WX 640 ; N edieresis ; B 31 -18 610 769 ; C -1 ; WX 640 ; N cacute ; B 37 -18 610 851 ; C -1 ; WX 600 ; N nacute ; B 54 0 547 851 ; C -1 ; WX 600 ; N umacron ; B 50 -18 544 759 ; C -1 ; WX 740 ; N Ncaron ; B 70 0 671 959 ; C -1 ; WX 280 ; N Iacute ; B 44 0 323 1021 ; C -1 ; WX 600 ; N plusminus ; B 48 -62 552 556 ; C -1 ; WX 600 ; N brokenbar ; B 233 -175 366 675 ; C -1 ; WX 740 ; N registered ; B -12 -12 752 752 ; C -1 ; WX 840 ; N Gbreve ; B 27 -15 817 955 ; C -1 ; WX 280 ; N Idotaccent ; B 72 0 209 954 ; C -1 ; WX 713 ; N summation ; B 14 -108 695 752 ; C -1 ; WX 520 ; N Egrave ; B 61 0 459 1021 ; C -1 ; WX 320 ; N racute ; B 63 0 348 851 ; C -1 ; WX 640 ; N omacron ; B 25 -18 615 759 ; C -1 ; WX 500 ; N Zacute ; B 19 0 481 1021 ; C -1 ; WX 500 ; N Zcaron ; B 19 0 481 944 ; C -1 ; WX 549 ; N greaterequal ; B 26 0 523 704 ; C -1 ; WX 742 ; N Eth ; B 25 0 691 740 ; C -1 ; WX 780 ; N Ccedilla ; B 34 -251 766 755 ; C -1 ; WX 240 ; N lcommaaccent ; B -7 -229 187 740 ; C -1 ; WX 400 ; N tcaron ; B 21 0 438 786 ; C -1 ; WX 640 ; N eogonek ; B 31 -195 610 574 ; C -1 ; WX 640 ; N Uogonek ; B 55 -195 585 740 ; C -1 ; WX 740 ; N Aacute ; B 7 0 732 1021 ; C -1 ; WX 740 ; N Adieresis ; B 7 0 732 939 ; C -1 ; WX 640 ; N egrave ; B 31 -18 610 851 ; C -1 ; WX 460 ; N zacute ; B 20 0 442 851 ; C -1 ; WX 240 ; N iogonek ; B -14 -195 186 740 ; C -1 ; WX 840 ; N Oacute ; B 33 -15 807 1021 ; C -1 ; WX 640 ; N oacute ; B 25 -18 615 851 ; C -1 ; WX 660 ; N amacron ; B 27 -18 613 759 ; C -1 ; WX 440 ; N sacute ; B 19 -18 421 851 ; C -1 ; WX 240 ; N idieresis ; B -52 0 292 769 ; C -1 ; WX 840 ; N Ocircumflex ; B 33 -15 807 944 ; C -1 ; WX 640 ; N Ugrave ; B 55 -15 585 1021 ; C -1 ; WX 612 ; N Delta ; B 2 0 612 692 ; C -1 ; WX 660 ; N thorn ; B 47 -185 629 740 ; C -1 ; WX 336 ; N twosuperior ; B 13 296 322 749 ; C -1 ; WX 840 ; N Odieresis ; B 33 -15 807 939 ; C -1 ; WX 576 ; N mu ; B 38 -187 539 555 ; C -1 ; WX 240 ; N igrave ; B -65 0 214 851 ; C -1 ; WX 640 ; N ohungarumlaut ; B 25 -18 615 849 ; C -1 ; WX 520 ; N Eogonek ; B 61 -195 459 740 ; C -1 ; WX 660 ; N dcroat ; B 34 -18 700 740 ; C -1 ; WX 840 ; N threequarters ; B 18 0 803 749 ; C -1 ; WX 520 ; N Scedilla ; B 12 -251 493 755 ; C -1 ; WX 380 ; N lcaron ; B 54 0 398 740 ; C -1 ; WX 620 ; N Kcommaaccent ; B 89 -209 620 740 ; C -1 ; WX 440 ; N Lacute ; B 72 0 435 1021 ; C -1 ; WX 1000 ; N trademark ; B 9 296 821 740 ; C -1 ; WX 640 ; N edotaccent ; B 31 -18 610 769 ; C -1 ; WX 280 ; N Igrave ; B -45 0 234 1021 ; C -1 ; WX 280 ; N Imacron ; B 2 0 279 944 ; C -1 ; WX 440 ; N Lcaron ; B 72 0 488 740 ; C -1 ; WX 840 ; N onehalf ; B 62 0 771 740 ; C -1 ; WX 549 ; N lessequal ; B 29 0 526 704 ; C -1 ; WX 640 ; N ocircumflex ; B 25 -18 615 774 ; C -1 ; WX 600 ; N ntilde ; B 54 0 547 767 ; C -1 ; WX 640 ; N Uhungarumlaut ; B 55 -15 596 1019 ; C -1 ; WX 520 ; N Eacute ; B 61 0 459 1021 ; C -1 ; WX 640 ; N emacron ; B 31 -18 610 759 ; C -1 ; WX 660 ; N gbreve ; B 32 -226 623 770 ; C -1 ; WX 840 ; N onequarter ; B 92 0 746 740 ; C -1 ; WX 520 ; N Scaron ; B 12 -15 493 944 ; C -1 ; WX 520 ; N Scommaaccent ; B 12 -229 493 755 ; C -1 ; WX 840 ; N Ohungarumlaut ; B 33 -15 807 1019 ; C -1 ; WX 400 ; N degree ; B 57 426 343 712 ; C -1 ; WX 640 ; N ograve ; B 25 -18 615 851 ; C -1 ; WX 780 ; N Ccaron ; B 34 -15 766 959 ; C -1 ; WX 600 ; N ugrave ; B 50 -18 544 851 ; C -1 ; WX 549 ; N radical ; B 10 -46 512 850 ; C -1 ; WX 700 ; N Dcaron ; B 63 0 657 959 ; C -1 ; WX 320 ; N rcommaaccent ; B -8 -229 317 574 ; C -1 ; WX 740 ; N Ntilde ; B 70 0 671 937 ; C -1 ; WX 640 ; N otilde ; B 25 -18 615 767 ; C -1 ; WX 580 ; N Rcommaaccent ; B 64 -209 565 740 ; C -1 ; WX 440 ; N Lcommaaccent ; B 72 -229 435 740 ; C -1 ; WX 740 ; N Atilde ; B 7 0 732 937 ; C -1 ; WX 740 ; N Aogonek ; B 7 -195 732 740 ; C -1 ; WX 740 ; N Aring ; B 7 0 732 969 ; C -1 ; WX 840 ; N Otilde ; B 33 -15 807 937 ; C -1 ; WX 460 ; N zdotaccent ; B 20 0 442 769 ; C -1 ; WX 520 ; N Ecaron ; B 61 0 460 959 ; C -1 ; WX 280 ; N Iogonek ; B 11 -195 209 740 ; C -1 ; WX 580 ; N kcommaaccent ; B 80 -209 571 740 ; C -1 ; WX 600 ; N minus ; B 48 193 552 313 ; C -1 ; WX 280 ; N Icircumflex ; B -59 0 340 944 ; C -1 ; WX 600 ; N ncaron ; B 54 0 547 774 ; C -1 ; WX 300 ; N tcommaaccent ; B 21 -229 299 740 ; C -1 ; WX 600 ; N logicalnot ; B 48 108 552 425 ; C -1 ; WX 640 ; N odieresis ; B 25 -18 615 769 ; C -1 ; WX 600 ; N udieresis ; B 50 -18 544 769 ; C -1 ; WX 549 ; N notequal ; B 15 -49 540 570 ; C -1 ; WX 660 ; N gcommaaccent ; B 32 -226 623 800 ; C -1 ; WX 640 ; N eth ; B 27 -18 616 754 ; C -1 ; WX 460 ; N zcaron ; B 20 0 455 774 ; C -1 ; WX 600 ; N ncommaaccent ; B 54 -209 547 574 ; C -1 ; WX 336 ; N onesuperior ; B 72 296 223 740 ; C -1 ; WX 240 ; N imacron ; B -18 0 259 759 ; EndCharMetrics StartKernData StartKernPairs 933 KPX A T -73 KPX A Tcaron -73 KPX A Tcommaaccent -73 KPX A V -127 KPX A W -96 KPX A Y -139 KPX A Yacute -139 KPX A Ydieresis -139 KPX A v -50 KPX A w -50 KPX A y -50 KPX A yacute -50 KPX A ydieresis -50 KPX Aacute T -73 KPX Aacute Tcaron -73 KPX Aacute Tcommaaccent -73 KPX Aacute V -127 KPX Aacute W -96 KPX Aacute Y -139 KPX Aacute Yacute -139 KPX Aacute Ydieresis -139 KPX Aacute v -50 KPX Aacute w -50 KPX Aacute y -50 KPX Aacute yacute -50 KPX Aacute ydieresis -50 KPX Abreve T -73 KPX Abreve Tcaron -73 KPX Abreve Tcommaaccent -73 KPX Abreve V -127 KPX Abreve W -96 KPX Abreve Y -139 KPX Abreve Yacute -139 KPX Abreve Ydieresis -139 KPX Abreve v -50 KPX Abreve w -50 KPX Abreve y -50 KPX Abreve yacute -50 KPX Abreve ydieresis -50 KPX Acircumflex T -73 KPX Acircumflex Tcaron -73 KPX Acircumflex Tcommaaccent -73 KPX Acircumflex V -127 KPX Acircumflex W -96 KPX Acircumflex Y -139 KPX Acircumflex Yacute -139 KPX Acircumflex Ydieresis -139 KPX Acircumflex v -50 KPX Acircumflex w -50 KPX Acircumflex y -50 KPX Acircumflex yacute -50 KPX Acircumflex ydieresis -50 KPX Adieresis T -73 KPX Adieresis Tcaron -73 KPX Adieresis Tcommaaccent -73 KPX Adieresis V -127 KPX Adieresis W -96 KPX Adieresis Y -139 KPX Adieresis Yacute -139 KPX Adieresis Ydieresis -139 KPX Adieresis v -50 KPX Adieresis w -50 KPX Adieresis y -50 KPX Adieresis yacute -50 KPX Adieresis ydieresis -50 KPX Agrave T -73 KPX Agrave Tcaron -73 KPX Agrave Tcommaaccent -73 KPX Agrave V -127 KPX Agrave W -96 KPX Agrave Y -139 KPX Agrave Yacute -139 KPX Agrave Ydieresis -139 KPX Agrave v -50 KPX Agrave w -50 KPX Agrave y -50 KPX Agrave yacute -50 KPX Agrave ydieresis -50 KPX Amacron T -73 KPX Amacron Tcaron -73 KPX Amacron Tcommaaccent -73 KPX Amacron V -127 KPX Amacron W -96 KPX Amacron Y -139 KPX Amacron Yacute -139 KPX Amacron Ydieresis -139 KPX Amacron v -50 KPX Amacron w -50 KPX Amacron y -50 KPX Amacron yacute -50 KPX Amacron ydieresis -50 KPX Aogonek T -73 KPX Aogonek Tcaron -73 KPX Aogonek Tcommaaccent -73 KPX Aogonek V -127 KPX Aogonek W -96 KPX Aogonek Y -139 KPX Aogonek Yacute -139 KPX Aogonek Ydieresis -139 KPX Aogonek v -50 KPX Aogonek w -50 KPX Aogonek y -50 KPX Aogonek yacute -50 KPX Aogonek ydieresis -50 KPX Aring T -73 KPX Aring Tcaron -73 KPX Aring Tcommaaccent -73 KPX Aring V -127 KPX Aring W -96 KPX Aring Y -139 KPX Aring Yacute -139 KPX Aring Ydieresis -139 KPX Aring v -50 KPX Aring w -50 KPX Aring y -50 KPX Aring yacute -50 KPX Aring ydieresis -50 KPX Atilde T -73 KPX Atilde Tcaron -73 KPX Atilde Tcommaaccent -73 KPX Atilde V -127 KPX Atilde W -96 KPX Atilde Y -139 KPX Atilde Yacute -139 KPX Atilde Ydieresis -139 KPX Atilde v -50 KPX Atilde w -50 KPX Atilde y -50 KPX Atilde yacute -50 KPX Atilde ydieresis -50 KPX F A -95 KPX F Aacute -95 KPX F Abreve -95 KPX F Acircumflex -95 KPX F Adieresis -95 KPX F Agrave -95 KPX F Amacron -95 KPX F Aogonek -95 KPX F Aring -95 KPX F Atilde -95 KPX F comma -42 KPX F period -42 KPX L T -50 KPX L Tcaron -50 KPX L Tcommaaccent -50 KPX L V -90 KPX L W -90 KPX L Y -90 KPX L Yacute -90 KPX L Ydieresis -90 KPX L y -75 KPX L yacute -75 KPX L ydieresis -75 KPX Lacute T -50 KPX Lacute Tcaron -50 KPX Lacute Tcommaaccent -50 KPX Lacute V -90 KPX Lacute W -90 KPX Lacute Y -90 KPX Lacute Yacute -90 KPX Lacute Ydieresis -90 KPX Lacute y -75 KPX Lacute yacute -75 KPX Lacute ydieresis -75 KPX Lcommaaccent T -50 KPX Lcommaaccent Tcaron -50 KPX Lcommaaccent Tcommaaccent -50 KPX Lcommaaccent V -90 KPX Lcommaaccent W -90 KPX Lcommaaccent Y -90 KPX Lcommaaccent Yacute -90 KPX Lcommaaccent Ydieresis -90 KPX Lcommaaccent y -75 KPX Lcommaaccent yacute -75 KPX Lcommaaccent ydieresis -75 KPX Lslash T -50 KPX Lslash Tcaron -50 KPX Lslash Tcommaaccent -50 KPX Lslash V -90 KPX Lslash W -90 KPX Lslash Y -90 KPX Lslash Yacute -90 KPX Lslash Ydieresis -90 KPX Lslash y -75 KPX Lslash yacute -75 KPX Lslash ydieresis -75 KPX P A -100 KPX P Aacute -100 KPX P Abreve -100 KPX P Acircumflex -100 KPX P Adieresis -100 KPX P Agrave -100 KPX P Amacron -100 KPX P Aogonek -100 KPX P Aring -100 KPX P Atilde -100 KPX P comma -16 KPX P period -16 KPX R T 16 KPX R Tcaron 16 KPX R Tcommaaccent 16 KPX R V -26 KPX R W -20 KPX R Y -20 KPX R Yacute -20 KPX R Ydieresis -20 KPX R y 31 KPX R yacute 31 KPX R ydieresis 31 KPX Racute T 16 KPX Racute Tcaron 16 KPX Racute Tcommaaccent 16 KPX Racute V -26 KPX Racute W -20 KPX Racute Y -20 KPX Racute Yacute -20 KPX Racute Ydieresis -20 KPX Racute y 31 KPX Racute yacute 31 KPX Racute ydieresis 31 KPX Rcaron T 16 KPX Rcaron Tcaron 16 KPX Rcaron Tcommaaccent 16 KPX Rcaron V -26 KPX Rcaron W -20 KPX Rcaron Y -20 KPX Rcaron Yacute -20 KPX Rcaron Ydieresis -20 KPX Rcaron y 31 KPX Rcaron yacute 31 KPX Rcaron ydieresis 31 KPX Rcommaaccent T 16 KPX Rcommaaccent Tcaron 16 KPX Rcommaaccent Tcommaaccent 16 KPX Rcommaaccent V -26 KPX Rcommaaccent W -20 KPX Rcommaaccent Y -20 KPX Rcommaaccent Yacute -20 KPX Rcommaaccent Ydieresis -20 KPX Rcommaaccent y 31 KPX Rcommaaccent yacute 31 KPX Rcommaaccent ydieresis 31 KPX T A -70 KPX T Aacute -70 KPX T Abreve -70 KPX T Acircumflex -70 KPX T Adieresis -70 KPX T Agrave -70 KPX T Amacron -70 KPX T Aogonek -70 KPX T Aring -70 KPX T Atilde -70 KPX T a -40 KPX T aacute -40 KPX T abreve -40 KPX T acircumflex -40 KPX T adieresis -40 KPX T agrave -40 KPX T amacron -40 KPX T aogonek -40 KPX T aring -40 KPX T atilde -40 KPX T c -50 KPX T cacute -50 KPX T ccaron -50 KPX T ccedilla -50 KPX T colon -12 KPX T comma 4 KPX T e -50 KPX T eacute -50 KPX T ecaron -50 KPX T ecircumflex -50 KPX T edieresis -50 KPX T edotaccent -50 KPX T egrave -50 KPX T emacron -50 KPX T eogonek -50 KPX T hyphen -10 KPX T i -5 KPX T iacute 10 KPX T icircumflex 10 KPX T idieresis 10 KPX T igrave 10 KPX T imacron 10 KPX T iogonek -5 KPX T o -50 KPX T oacute -50 KPX T ocircumflex -50 KPX T odieresis -50 KPX T ograve -50 KPX T ohungarumlaut -50 KPX T omacron -50 KPX T oslash -50 KPX T otilde -50 KPX T period 4 KPX T r -42 KPX T rcommaaccent -42 KPX T s -43 KPX T sacute -43 KPX T scedilla -43 KPX T scommaaccent -43 KPX T semicolon -12 KPX T u -56 KPX T uacute -56 KPX T ucircumflex -56 KPX T udieresis -56 KPX T ugrave -56 KPX T uhungarumlaut -56 KPX T umacron -56 KPX T uogonek -56 KPX T uring -56 KPX T w -15 KPX T y -12 KPX T yacute -12 KPX T ydieresis -12 KPX Tcaron A -70 KPX Tcaron Aacute -70 KPX Tcaron Abreve -70 KPX Tcaron Acircumflex -70 KPX Tcaron Adieresis -70 KPX Tcaron Agrave -70 KPX Tcaron Amacron -70 KPX Tcaron Aogonek -70 KPX Tcaron Aring -70 KPX Tcaron Atilde -70 KPX Tcaron a -40 KPX Tcaron aacute -40 KPX Tcaron abreve -40 KPX Tcaron acircumflex -40 KPX Tcaron adieresis -40 KPX Tcaron agrave -40 KPX Tcaron amacron -40 KPX Tcaron aogonek -40 KPX Tcaron aring -40 KPX Tcaron atilde -40 KPX Tcaron c -50 KPX Tcaron cacute -50 KPX Tcaron ccaron -50 KPX Tcaron ccedilla -50 KPX Tcaron colon -12 KPX Tcaron comma 4 KPX Tcaron e -50 KPX Tcaron eacute -50 KPX Tcaron ecaron -50 KPX Tcaron ecircumflex -50 KPX Tcaron edieresis -50 KPX Tcaron edotaccent -50 KPX Tcaron egrave -50 KPX Tcaron emacron -50 KPX Tcaron eogonek -50 KPX Tcaron hyphen -10 KPX Tcaron i -5 KPX Tcaron iacute 10 KPX Tcaron icircumflex 10 KPX Tcaron idieresis 10 KPX Tcaron igrave 10 KPX Tcaron imacron 10 KPX Tcaron iogonek -5 KPX Tcaron o -50 KPX Tcaron oacute -50 KPX Tcaron ocircumflex -50 KPX Tcaron odieresis -50 KPX Tcaron ograve -50 KPX Tcaron ohungarumlaut -50 KPX Tcaron omacron -50 KPX Tcaron oslash -50 KPX Tcaron otilde -50 KPX Tcaron period 4 KPX Tcaron r -42 KPX Tcaron racute -42 KPX Tcaron rcaron -42 KPX Tcaron rcommaaccent -42 KPX Tcaron s -43 KPX Tcaron sacute -43 KPX Tcaron scaron -43 KPX Tcaron scedilla -43 KPX Tcaron scommaaccent -43 KPX Tcaron semicolon -12 KPX Tcaron u -56 KPX Tcaron uacute -56 KPX Tcaron ucircumflex -56 KPX Tcaron udieresis -56 KPX Tcaron ugrave -56 KPX Tcaron uhungarumlaut -56 KPX Tcaron umacron -56 KPX Tcaron uogonek -56 KPX Tcaron uring -56 KPX Tcaron w -15 KPX Tcaron y -12 KPX Tcaron yacute -12 KPX Tcaron ydieresis -12 KPX Tcommaaccent A -70 KPX Tcommaaccent Aacute -70 KPX Tcommaaccent Abreve -70 KPX Tcommaaccent Acircumflex -70 KPX Tcommaaccent Adieresis -70 KPX Tcommaaccent Agrave -70 KPX Tcommaaccent Amacron -70 KPX Tcommaaccent Aogonek -70 KPX Tcommaaccent Aring -70 KPX Tcommaaccent Atilde -70 KPX Tcommaaccent a -40 KPX Tcommaaccent aacute -40 KPX Tcommaaccent abreve -40 KPX Tcommaaccent acircumflex -40 KPX Tcommaaccent adieresis -40 KPX Tcommaaccent agrave -40 KPX Tcommaaccent amacron -40 KPX Tcommaaccent aogonek -40 KPX Tcommaaccent aring -40 KPX Tcommaaccent atilde -40 KPX Tcommaaccent c -50 KPX Tcommaaccent cacute -50 KPX Tcommaaccent ccaron -50 KPX Tcommaaccent ccedilla -50 KPX Tcommaaccent colon -12 KPX Tcommaaccent comma 4 KPX Tcommaaccent e -50 KPX Tcommaaccent eacute -50 KPX Tcommaaccent ecaron -50 KPX Tcommaaccent ecircumflex -50 KPX Tcommaaccent edieresis -50 KPX Tcommaaccent edotaccent -50 KPX Tcommaaccent egrave -50 KPX Tcommaaccent emacron -50 KPX Tcommaaccent eogonek -50 KPX Tcommaaccent hyphen -10 KPX Tcommaaccent i -5 KPX Tcommaaccent iacute 10 KPX Tcommaaccent icircumflex 10 KPX Tcommaaccent idieresis 10 KPX Tcommaaccent igrave 10 KPX Tcommaaccent imacron 10 KPX Tcommaaccent iogonek -5 KPX Tcommaaccent o -50 KPX Tcommaaccent oacute -50 KPX Tcommaaccent ocircumflex -50 KPX Tcommaaccent odieresis -50 KPX Tcommaaccent ograve -50 KPX Tcommaaccent ohungarumlaut -50 KPX Tcommaaccent omacron -50 KPX Tcommaaccent oslash -50 KPX Tcommaaccent otilde -50 KPX Tcommaaccent period 4 KPX Tcommaaccent r -42 KPX Tcommaaccent racute -42 KPX Tcommaaccent rcaron -42 KPX Tcommaaccent rcommaaccent -42 KPX Tcommaaccent s -43 KPX Tcommaaccent sacute -43 KPX Tcommaaccent scaron -43 KPX Tcommaaccent scedilla -43 KPX Tcommaaccent scommaaccent -43 KPX Tcommaaccent semicolon -12 KPX Tcommaaccent u -56 KPX Tcommaaccent uacute -56 KPX Tcommaaccent ucircumflex -56 KPX Tcommaaccent udieresis -56 KPX Tcommaaccent ugrave -56 KPX Tcommaaccent uhungarumlaut -56 KPX Tcommaaccent umacron -56 KPX Tcommaaccent uogonek -56 KPX Tcommaaccent uring -56 KPX Tcommaaccent w -15 KPX Tcommaaccent y -12 KPX Tcommaaccent yacute -12 KPX Tcommaaccent ydieresis -12 KPX V A -125 KPX V Aacute -125 KPX V Abreve -125 KPX V Acircumflex -125 KPX V Adieresis -125 KPX V Agrave -125 KPX V Amacron -125 KPX V Aogonek -125 KPX V Aring -125 KPX V Atilde -125 KPX V a -80 KPX V aacute -80 KPX V abreve -80 KPX V acircumflex -80 KPX V adieresis -80 KPX V agrave -80 KPX V amacron -80 KPX V aogonek -80 KPX V aring -80 KPX V atilde -80 KPX V colon -13 KPX V comma -13 KPX V e -80 KPX V eacute -80 KPX V ecaron -80 KPX V ecircumflex -80 KPX V edieresis -80 KPX V edotaccent -80 KPX V egrave -80 KPX V emacron -80 KPX V eogonek -80 KPX V hyphen -20 KPX V i -9 KPX V iacute -9 KPX V iogonek -9 KPX V o -80 KPX V oacute -80 KPX V ocircumflex -80 KPX V odieresis -80 KPX V ograve -80 KPX V ohungarumlaut -80 KPX V omacron -80 KPX V oslash -80 KPX V otilde -80 KPX V period -13 KPX V r -40 KPX V racute -40 KPX V rcaron -40 KPX V rcommaaccent -40 KPX V semicolon -13 KPX V u -68 KPX V uacute -68 KPX V ucircumflex -68 KPX V udieresis -68 KPX V ugrave -68 KPX V uhungarumlaut -68 KPX V umacron -68 KPX V uogonek -68 KPX V uring -68 KPX V y -15 KPX V yacute -15 KPX V ydieresis -15 KPX W A -94 KPX W Aacute -94 KPX W Abreve -94 KPX W Acircumflex -94 KPX W Adieresis -94 KPX W Agrave -94 KPX W Amacron -94 KPX W Aogonek -94 KPX W Aring -94 KPX W Atilde -94 KPX W a -50 KPX W aacute -50 KPX W abreve -50 KPX W acircumflex -50 KPX W adieresis -50 KPX W agrave -50 KPX W amacron -50 KPX W aogonek -50 KPX W aring -50 KPX W atilde -50 KPX W colon -12 KPX W comma -12 KPX W e -50 KPX W eacute -50 KPX W ecaron -50 KPX W ecircumflex -50 KPX W edieresis -50 KPX W edotaccent -50 KPX W egrave -50 KPX W emacron -50 KPX W eogonek -50 KPX W hyphen -10 KPX W i -7 KPX W iacute 10 KPX W icircumflex 10 KPX W idieresis 10 KPX W igrave 10 KPX W imacron 10 KPX W iogonek -7 KPX W o -50 KPX W oacute -50 KPX W ocircumflex -50 KPX W odieresis -50 KPX W ograve -50 KPX W ohungarumlaut -50 KPX W omacron -50 KPX W oslash -50 KPX W otilde -50 KPX W period -12 KPX W r -39 KPX W racute -39 KPX W rcommaaccent -39 KPX W semicolon -12 KPX W u -40 KPX W uacute -40 KPX W ucircumflex -40 KPX W udieresis -40 KPX W ugrave -40 KPX W uhungarumlaut -40 KPX W umacron -40 KPX W uogonek -40 KPX W uring -40 KPX W y 1 KPX W yacute 1 KPX W ydieresis 1 KPX Y A -138 KPX Y Aacute -138 KPX Y Abreve -138 KPX Y Acircumflex -138 KPX Y Adieresis -138 KPX Y Agrave -138 KPX Y Amacron -138 KPX Y Aogonek -138 KPX Y Aring -138 KPX Y Atilde -138 KPX Y a -100 KPX Y aacute -100 KPX Y abreve -100 KPX Y acircumflex -100 KPX Y adieresis -100 KPX Y agrave -100 KPX Y amacron -100 KPX Y aogonek -100 KPX Y aring -100 KPX Y atilde -100 KPX Y colon -8 KPX Y comma -8 KPX Y e -100 KPX Y eacute -100 KPX Y ecaron -100 KPX Y ecircumflex -100 KPX Y edieresis -100 KPX Y edotaccent -100 KPX Y egrave -100 KPX Y emacron -100 KPX Y eogonek -100 KPX Y hyphen -60 KPX Y i -5 KPX Y iacute -5 KPX Y icircumflex 10 KPX Y idieresis 10 KPX Y igrave 10 KPX Y imacron 10 KPX Y iogonek -5 KPX Y o -100 KPX Y oacute -100 KPX Y ocircumflex -100 KPX Y odieresis -100 KPX Y ograve -100 KPX Y ohungarumlaut -100 KPX Y omacron -100 KPX Y oslash -100 KPX Y otilde -100 KPX Y p -60 KPX Y period -8 KPX Y q -100 KPX Y semicolon -8 KPX Y u -82 KPX Y uacute -82 KPX Y ucircumflex -82 KPX Y udieresis -82 KPX Y ugrave -82 KPX Y uhungarumlaut -82 KPX Y umacron -82 KPX Y uogonek -82 KPX Y uring -82 KPX Y v -25 KPX Yacute A -138 KPX Yacute Aacute -138 KPX Yacute Abreve -138 KPX Yacute Acircumflex -138 KPX Yacute Adieresis -138 KPX Yacute Agrave -138 KPX Yacute Amacron -138 KPX Yacute Aogonek -138 KPX Yacute Aring -138 KPX Yacute Atilde -138 KPX Yacute a -100 KPX Yacute aacute -100 KPX Yacute abreve -100 KPX Yacute acircumflex -100 KPX Yacute adieresis -100 KPX Yacute agrave -100 KPX Yacute amacron -100 KPX Yacute aogonek -100 KPX Yacute aring -100 KPX Yacute atilde -100 KPX Yacute colon -8 KPX Yacute comma -8 KPX Yacute e -100 KPX Yacute eacute -100 KPX Yacute ecaron -100 KPX Yacute ecircumflex -100 KPX Yacute edieresis -100 KPX Yacute edotaccent -100 KPX Yacute egrave -100 KPX Yacute emacron -100 KPX Yacute eogonek -100 KPX Yacute hyphen -60 KPX Yacute i -5 KPX Yacute iacute -5 KPX Yacute icircumflex 10 KPX Yacute idieresis 10 KPX Yacute igrave 10 KPX Yacute imacron 10 KPX Yacute iogonek -5 KPX Yacute o -100 KPX Yacute oacute -100 KPX Yacute ocircumflex -100 KPX Yacute odieresis -100 KPX Yacute ograve -100 KPX Yacute ohungarumlaut -100 KPX Yacute omacron -100 KPX Yacute oslash -100 KPX Yacute otilde -100 KPX Yacute p -60 KPX Yacute period -8 KPX Yacute q -100 KPX Yacute semicolon -8 KPX Yacute u -82 KPX Yacute uacute -82 KPX Yacute ucircumflex -82 KPX Yacute udieresis -82 KPX Yacute ugrave -82 KPX Yacute uhungarumlaut -82 KPX Yacute umacron -82 KPX Yacute uogonek -82 KPX Yacute uring -82 KPX Yacute v -25 KPX Ydieresis A -138 KPX Ydieresis Aacute -138 KPX Ydieresis Abreve -138 KPX Ydieresis Acircumflex -138 KPX Ydieresis Adieresis -138 KPX Ydieresis Agrave -138 KPX Ydieresis Amacron -138 KPX Ydieresis Aogonek -138 KPX Ydieresis Aring -138 KPX Ydieresis Atilde -138 KPX Ydieresis a -100 KPX Ydieresis aacute -100 KPX Ydieresis abreve -100 KPX Ydieresis acircumflex -100 KPX Ydieresis adieresis -100 KPX Ydieresis agrave -100 KPX Ydieresis amacron -100 KPX Ydieresis aogonek -100 KPX Ydieresis aring -100 KPX Ydieresis atilde -100 KPX Ydieresis colon -8 KPX Ydieresis comma -8 KPX Ydieresis e -100 KPX Ydieresis eacute -100 KPX Ydieresis ecaron -100 KPX Ydieresis ecircumflex -100 KPX Ydieresis edieresis -100 KPX Ydieresis edotaccent -100 KPX Ydieresis egrave -100 KPX Ydieresis emacron -100 KPX Ydieresis eogonek -100 KPX Ydieresis hyphen -60 KPX Ydieresis i -5 KPX Ydieresis iacute -5 KPX Ydieresis icircumflex 10 KPX Ydieresis idieresis 10 KPX Ydieresis igrave 10 KPX Ydieresis imacron 10 KPX Ydieresis iogonek -5 KPX Ydieresis o -100 KPX Ydieresis oacute -100 KPX Ydieresis ocircumflex -100 KPX Ydieresis odieresis -100 KPX Ydieresis ograve -100 KPX Ydieresis ohungarumlaut -100 KPX Ydieresis omacron -100 KPX Ydieresis oslash -100 KPX Ydieresis otilde -100 KPX Ydieresis p -60 KPX Ydieresis period -8 KPX Ydieresis q -100 KPX Ydieresis semicolon -8 KPX Ydieresis u -82 KPX Ydieresis uacute -82 KPX Ydieresis ucircumflex -82 KPX Ydieresis udieresis -82 KPX Ydieresis ugrave -82 KPX Ydieresis uhungarumlaut -82 KPX Ydieresis umacron -82 KPX Ydieresis uogonek -82 KPX Ydieresis uring -82 KPX Ydieresis v -25 KPX f f 38 KPX r c -27 KPX r cacute -27 KPX r ccaron -27 KPX r ccedilla -27 KPX r comma 9 KPX r d -8 KPX r dcroat -8 KPX r e -8 KPX r eacute -8 KPX r ecaron -8 KPX r ecircumflex -8 KPX r edieresis -8 KPX r edotaccent -8 KPX r egrave -8 KPX r emacron -8 KPX r eogonek -8 KPX r f 38 KPX r g -8 KPX r gbreve -8 KPX r gcommaaccent -8 KPX r hyphen -10 KPX r m 5 KPX r n 5 KPX r nacute 5 KPX r ncaron 5 KPX r ncommaaccent 5 KPX r ntilde 5 KPX r o -18 KPX r oacute -18 KPX r ocircumflex -18 KPX r odieresis -18 KPX r ograve -18 KPX r ohungarumlaut -18 KPX r omacron -18 KPX r oslash -18 KPX r otilde -18 KPX r period 9 KPX r q -18 KPX racute c -27 KPX racute cacute -27 KPX racute ccaron -27 KPX racute ccedilla -27 KPX racute comma 9 KPX racute d -8 KPX racute dcroat -8 KPX racute e -8 KPX racute eacute -8 KPX racute ecaron -8 KPX racute ecircumflex -8 KPX racute edieresis -8 KPX racute edotaccent -8 KPX racute egrave -8 KPX racute emacron -8 KPX racute eogonek -8 KPX racute f 38 KPX racute g -8 KPX racute gbreve -8 KPX racute gcommaaccent -8 KPX racute hyphen -10 KPX racute m 5 KPX racute n 5 KPX racute nacute 5 KPX racute ncaron 5 KPX racute ncommaaccent 5 KPX racute ntilde 5 KPX racute o -18 KPX racute oacute -18 KPX racute ocircumflex -18 KPX racute odieresis -18 KPX racute ograve -18 KPX racute ohungarumlaut -18 KPX racute omacron -18 KPX racute oslash -18 KPX racute otilde -18 KPX racute period 9 KPX racute q -18 KPX rcaron c -27 KPX rcaron cacute -27 KPX rcaron ccaron -27 KPX rcaron ccedilla -27 KPX rcaron comma 9 KPX rcaron d -8 KPX rcaron dcroat -8 KPX rcaron e -8 KPX rcaron eacute -8 KPX rcaron ecaron -8 KPX rcaron ecircumflex -8 KPX rcaron edieresis -8 KPX rcaron edotaccent -8 KPX rcaron egrave -8 KPX rcaron emacron -8 KPX rcaron eogonek -8 KPX rcaron f 38 KPX rcaron g -8 KPX rcaron gbreve -8 KPX rcaron gcommaaccent -8 KPX rcaron hyphen -10 KPX rcaron m 5 KPX rcaron n 5 KPX rcaron nacute 5 KPX rcaron ncaron 5 KPX rcaron ncommaaccent 5 KPX rcaron ntilde 5 KPX rcaron o -18 KPX rcaron oacute -18 KPX rcaron ocircumflex -18 KPX rcaron odieresis -18 KPX rcaron ograve -18 KPX rcaron ohungarumlaut -18 KPX rcaron omacron -18 KPX rcaron oslash -18 KPX rcaron otilde -18 KPX rcaron period 9 KPX rcaron q -18 KPX rcommaaccent c -27 KPX rcommaaccent cacute -27 KPX rcommaaccent ccaron -27 KPX rcommaaccent ccedilla -27 KPX rcommaaccent comma 9 KPX rcommaaccent d -8 KPX rcommaaccent dcroat -8 KPX rcommaaccent e -8 KPX rcommaaccent eacute -8 KPX rcommaaccent ecaron -8 KPX rcommaaccent ecircumflex -8 KPX rcommaaccent edieresis -8 KPX rcommaaccent edotaccent -8 KPX rcommaaccent egrave -8 KPX rcommaaccent emacron -8 KPX rcommaaccent eogonek -8 KPX rcommaaccent f 38 KPX rcommaaccent g -8 KPX rcommaaccent gbreve -8 KPX rcommaaccent gcommaaccent -8 KPX rcommaaccent hyphen -10 KPX rcommaaccent m 5 KPX rcommaaccent n 5 KPX rcommaaccent nacute 5 KPX rcommaaccent ncaron 5 KPX rcommaaccent ncommaaccent 5 KPX rcommaaccent ntilde 5 KPX rcommaaccent o -18 KPX rcommaaccent oacute -18 KPX rcommaaccent ocircumflex -18 KPX rcommaaccent odieresis -18 KPX rcommaaccent ograve -18 KPX rcommaaccent ohungarumlaut -18 KPX rcommaaccent omacron -18 KPX rcommaaccent oslash -18 KPX rcommaaccent otilde -18 KPX rcommaaccent period 9 KPX rcommaaccent q -18 EndKernPairs EndKernData EndFontMetrics gle-graphics-4.2.4c/src/fonts/Adobe-Core35_AFMs-314/Times-Italic.afm0000664000000000000000000020133011405446017023046 0ustar rootrootStartFontMetrics 4.1 Comment Copyright (c) 1985, 1987, 1989, 1990, 1993, 1997 Adobe Systems Incorporated. All Rights Reserved. Comment Creation Date: Thu May 1 12:56:55 1997 Comment UniqueID 43067 Comment VMusage 47727 58752 FontName Times-Italic FullName Times Italic FamilyName Times Weight Medium ItalicAngle -15.5 IsFixedPitch false FontBBox -169 -217 1010 883 UnderlinePosition -100 UnderlineThickness 50 Version 002.000 Notice Copyright (c) 1985, 1987, 1989, 1990, 1993, 1997 Adobe Systems Incorporated. All Rights Reserved.Times is a trademark of Linotype-Hell AG and/or its subsidiaries. EncodingScheme AdobeStandardEncoding CapHeight 653 XHeight 441 Ascender 683 Descender -217 StdHW 32 StdVW 76 StartCharMetrics 314 C 32 ; WX 250 ; N space ; B 0 0 0 0 ; C 33 ; WX 333 ; N exclam ; B 39 -11 302 667 ; C 34 ; WX 420 ; N quotedbl ; B 144 421 432 666 ; C 35 ; WX 500 ; N numbersign ; B 2 0 540 676 ; C 36 ; WX 500 ; N dollar ; B 31 -89 497 731 ; C 37 ; WX 833 ; N percent ; B 79 -13 790 676 ; C 38 ; WX 778 ; N ampersand ; B 76 -18 723 666 ; C 39 ; WX 333 ; N quoteright ; B 151 436 290 666 ; C 40 ; WX 333 ; N parenleft ; B 42 -181 315 669 ; C 41 ; WX 333 ; N parenright ; B 16 -180 289 669 ; C 42 ; WX 500 ; N asterisk ; B 128 255 492 666 ; C 43 ; WX 675 ; N plus ; B 86 0 590 506 ; C 44 ; WX 250 ; N comma ; B -4 -129 135 101 ; C 45 ; WX 333 ; N hyphen ; B 49 192 282 255 ; C 46 ; WX 250 ; N period ; B 27 -11 138 100 ; C 47 ; WX 278 ; N slash ; B -65 -18 386 666 ; C 48 ; WX 500 ; N zero ; B 32 -7 497 676 ; C 49 ; WX 500 ; N one ; B 49 0 409 676 ; C 50 ; WX 500 ; N two ; B 12 0 452 676 ; C 51 ; WX 500 ; N three ; B 15 -7 465 676 ; C 52 ; WX 500 ; N four ; B 1 0 479 676 ; C 53 ; WX 500 ; N five ; B 15 -7 491 666 ; C 54 ; WX 500 ; N six ; B 30 -7 521 686 ; C 55 ; WX 500 ; N seven ; B 75 -8 537 666 ; C 56 ; WX 500 ; N eight ; B 30 -7 493 676 ; C 57 ; WX 500 ; N nine ; B 23 -17 492 676 ; C 58 ; WX 333 ; N colon ; B 50 -11 261 441 ; C 59 ; WX 333 ; N semicolon ; B 27 -129 261 441 ; C 60 ; WX 675 ; N less ; B 84 -8 592 514 ; C 61 ; WX 675 ; N equal ; B 86 120 590 386 ; C 62 ; WX 675 ; N greater ; B 84 -8 592 514 ; C 63 ; WX 500 ; N question ; B 132 -12 472 664 ; C 64 ; WX 920 ; N at ; B 118 -18 806 666 ; C 65 ; WX 611 ; N A ; B -51 0 564 668 ; C 66 ; WX 611 ; N B ; B -8 0 588 653 ; C 67 ; WX 667 ; N C ; B 66 -18 689 666 ; C 68 ; WX 722 ; N D ; B -8 0 700 653 ; C 69 ; WX 611 ; N E ; B -1 0 634 653 ; C 70 ; WX 611 ; N F ; B 8 0 645 653 ; C 71 ; WX 722 ; N G ; B 52 -18 722 666 ; C 72 ; WX 722 ; N H ; B -8 0 767 653 ; C 73 ; WX 333 ; N I ; B -8 0 384 653 ; C 74 ; WX 444 ; N J ; B -6 -18 491 653 ; C 75 ; WX 667 ; N K ; B 7 0 722 653 ; C 76 ; WX 556 ; N L ; B -8 0 559 653 ; C 77 ; WX 833 ; N M ; B -18 0 873 653 ; C 78 ; WX 667 ; N N ; B -20 -15 727 653 ; C 79 ; WX 722 ; N O ; B 60 -18 699 666 ; C 80 ; WX 611 ; N P ; B 0 0 605 653 ; C 81 ; WX 722 ; N Q ; B 59 -182 699 666 ; C 82 ; WX 611 ; N R ; B -13 0 588 653 ; C 83 ; WX 500 ; N S ; B 17 -18 508 667 ; C 84 ; WX 556 ; N T ; B 59 0 633 653 ; C 85 ; WX 722 ; N U ; B 102 -18 765 653 ; C 86 ; WX 611 ; N V ; B 76 -18 688 653 ; C 87 ; WX 833 ; N W ; B 71 -18 906 653 ; C 88 ; WX 611 ; N X ; B -29 0 655 653 ; C 89 ; WX 556 ; N Y ; B 78 0 633 653 ; C 90 ; WX 556 ; N Z ; B -6 0 606 653 ; C 91 ; WX 389 ; N bracketleft ; B 21 -153 391 663 ; C 92 ; WX 278 ; N backslash ; B -41 -18 319 666 ; C 93 ; WX 389 ; N bracketright ; B 12 -153 382 663 ; C 94 ; WX 422 ; N asciicircum ; B 0 301 422 666 ; C 95 ; WX 500 ; N underscore ; B 0 -125 500 -75 ; C 96 ; WX 333 ; N quoteleft ; B 171 436 310 666 ; C 97 ; WX 500 ; N a ; B 17 -11 476 441 ; C 98 ; WX 500 ; N b ; B 23 -11 473 683 ; C 99 ; WX 444 ; N c ; B 30 -11 425 441 ; C 100 ; WX 500 ; N d ; B 15 -13 527 683 ; C 101 ; WX 444 ; N e ; B 31 -11 412 441 ; C 102 ; WX 278 ; N f ; B -147 -207 424 678 ; L i fi ; L l fl ; C 103 ; WX 500 ; N g ; B 8 -206 472 441 ; C 104 ; WX 500 ; N h ; B 19 -9 478 683 ; C 105 ; WX 278 ; N i ; B 49 -11 264 654 ; C 106 ; WX 278 ; N j ; B -124 -207 276 654 ; C 107 ; WX 444 ; N k ; B 14 -11 461 683 ; C 108 ; WX 278 ; N l ; B 41 -11 279 683 ; C 109 ; WX 722 ; N m ; B 12 -9 704 441 ; C 110 ; WX 500 ; N n ; B 14 -9 474 441 ; C 111 ; WX 500 ; N o ; B 27 -11 468 441 ; C 112 ; WX 500 ; N p ; B -75 -205 469 441 ; C 113 ; WX 500 ; N q ; B 25 -209 483 441 ; C 114 ; WX 389 ; N r ; B 45 0 412 441 ; C 115 ; WX 389 ; N s ; B 16 -13 366 442 ; C 116 ; WX 278 ; N t ; B 37 -11 296 546 ; C 117 ; WX 500 ; N u ; B 42 -11 475 441 ; C 118 ; WX 444 ; N v ; B 21 -18 426 441 ; C 119 ; WX 667 ; N w ; B 16 -18 648 441 ; C 120 ; WX 444 ; N x ; B -27 -11 447 441 ; C 121 ; WX 444 ; N y ; B -24 -206 426 441 ; C 122 ; WX 389 ; N z ; B -2 -81 380 428 ; C 123 ; WX 400 ; N braceleft ; B 51 -177 407 687 ; C 124 ; WX 275 ; N bar ; B 105 -217 171 783 ; C 125 ; WX 400 ; N braceright ; B -7 -177 349 687 ; C 126 ; WX 541 ; N asciitilde ; B 40 183 502 323 ; C 161 ; WX 389 ; N exclamdown ; B 59 -205 322 473 ; C 162 ; WX 500 ; N cent ; B 77 -143 472 560 ; C 163 ; WX 500 ; N sterling ; B 10 -6 517 670 ; C 164 ; WX 167 ; N fraction ; B -169 -10 337 676 ; C 165 ; WX 500 ; N yen ; B 27 0 603 653 ; C 166 ; WX 500 ; N florin ; B 25 -182 507 682 ; C 167 ; WX 500 ; N section ; B 53 -162 461 666 ; C 168 ; WX 500 ; N currency ; B -22 53 522 597 ; C 169 ; WX 214 ; N quotesingle ; B 132 421 241 666 ; C 170 ; WX 556 ; N quotedblleft ; B 166 436 514 666 ; C 171 ; WX 500 ; N guillemotleft ; B 53 37 445 403 ; C 172 ; WX 333 ; N guilsinglleft ; B 51 37 281 403 ; C 173 ; WX 333 ; N guilsinglright ; B 52 37 282 403 ; C 174 ; WX 500 ; N fi ; B -141 -207 481 681 ; C 175 ; WX 500 ; N fl ; B -141 -204 518 682 ; C 177 ; WX 500 ; N endash ; B -6 197 505 243 ; C 178 ; WX 500 ; N dagger ; B 101 -159 488 666 ; C 179 ; WX 500 ; N daggerdbl ; B 22 -143 491 666 ; C 180 ; WX 250 ; N periodcentered ; B 70 199 181 310 ; C 182 ; WX 523 ; N paragraph ; B 55 -123 616 653 ; C 183 ; WX 350 ; N bullet ; B 40 191 310 461 ; C 184 ; WX 333 ; N quotesinglbase ; B 44 -129 183 101 ; C 185 ; WX 556 ; N quotedblbase ; B 57 -129 405 101 ; C 186 ; WX 556 ; N quotedblright ; B 151 436 499 666 ; C 187 ; WX 500 ; N guillemotright ; B 55 37 447 403 ; C 188 ; WX 889 ; N ellipsis ; B 57 -11 762 100 ; C 189 ; WX 1000 ; N perthousand ; B 25 -19 1010 706 ; C 191 ; WX 500 ; N questiondown ; B 28 -205 368 471 ; C 193 ; WX 333 ; N grave ; B 121 492 311 664 ; C 194 ; WX 333 ; N acute ; B 180 494 403 664 ; C 195 ; WX 333 ; N circumflex ; B 91 492 385 661 ; C 196 ; WX 333 ; N tilde ; B 100 517 427 624 ; C 197 ; WX 333 ; N macron ; B 99 532 411 583 ; C 198 ; WX 333 ; N breve ; B 117 492 418 650 ; C 199 ; WX 333 ; N dotaccent ; B 207 548 305 646 ; C 200 ; WX 333 ; N dieresis ; B 107 548 405 646 ; C 202 ; WX 333 ; N ring ; B 155 492 355 691 ; C 203 ; WX 333 ; N cedilla ; B -30 -217 182 0 ; C 205 ; WX 333 ; N hungarumlaut ; B 93 494 486 664 ; C 206 ; WX 333 ; N ogonek ; B 20 -169 203 40 ; C 207 ; WX 333 ; N caron ; B 121 492 426 661 ; C 208 ; WX 889 ; N emdash ; B -6 197 894 243 ; C 225 ; WX 889 ; N AE ; B -27 0 911 653 ; C 227 ; WX 276 ; N ordfeminine ; B 42 406 352 676 ; C 232 ; WX 556 ; N Lslash ; B -8 0 559 653 ; C 233 ; WX 722 ; N Oslash ; B 60 -105 699 722 ; C 234 ; WX 944 ; N OE ; B 49 -8 964 666 ; C 235 ; WX 310 ; N ordmasculine ; B 67 406 362 676 ; C 241 ; WX 667 ; N ae ; B 23 -11 640 441 ; C 245 ; WX 278 ; N dotlessi ; B 49 -11 235 441 ; C 248 ; WX 278 ; N lslash ; B 41 -11 312 683 ; C 249 ; WX 500 ; N oslash ; B 28 -135 469 554 ; C 250 ; WX 667 ; N oe ; B 20 -12 646 441 ; C 251 ; WX 500 ; N germandbls ; B -168 -207 493 679 ; C -1 ; WX 333 ; N Idieresis ; B -8 0 435 818 ; C -1 ; WX 444 ; N eacute ; B 31 -11 459 664 ; C -1 ; WX 500 ; N abreve ; B 17 -11 502 650 ; C -1 ; WX 500 ; N uhungarumlaut ; B 42 -11 580 664 ; C -1 ; WX 444 ; N ecaron ; B 31 -11 482 661 ; C -1 ; WX 556 ; N Ydieresis ; B 78 0 633 818 ; C -1 ; WX 675 ; N divide ; B 86 -11 590 517 ; C -1 ; WX 556 ; N Yacute ; B 78 0 633 876 ; C -1 ; WX 611 ; N Acircumflex ; B -51 0 564 873 ; C -1 ; WX 500 ; N aacute ; B 17 -11 487 664 ; C -1 ; WX 722 ; N Ucircumflex ; B 102 -18 765 873 ; C -1 ; WX 444 ; N yacute ; B -24 -206 459 664 ; C -1 ; WX 389 ; N scommaaccent ; B 16 -217 366 442 ; C -1 ; WX 444 ; N ecircumflex ; B 31 -11 441 661 ; C -1 ; WX 722 ; N Uring ; B 102 -18 765 883 ; C -1 ; WX 722 ; N Udieresis ; B 102 -18 765 818 ; C -1 ; WX 500 ; N aogonek ; B 17 -169 476 441 ; C -1 ; WX 722 ; N Uacute ; B 102 -18 765 876 ; C -1 ; WX 500 ; N uogonek ; B 42 -169 477 441 ; C -1 ; WX 611 ; N Edieresis ; B -1 0 634 818 ; C -1 ; WX 722 ; N Dcroat ; B -8 0 700 653 ; C -1 ; WX 250 ; N commaaccent ; B 8 -217 133 -50 ; C -1 ; WX 760 ; N copyright ; B 41 -18 719 666 ; C -1 ; WX 611 ; N Emacron ; B -1 0 634 795 ; C -1 ; WX 444 ; N ccaron ; B 30 -11 482 661 ; C -1 ; WX 500 ; N aring ; B 17 -11 476 691 ; C -1 ; WX 667 ; N Ncommaaccent ; B -20 -187 727 653 ; C -1 ; WX 278 ; N lacute ; B 41 -11 395 876 ; C -1 ; WX 500 ; N agrave ; B 17 -11 476 664 ; C -1 ; WX 556 ; N Tcommaaccent ; B 59 -217 633 653 ; C -1 ; WX 667 ; N Cacute ; B 66 -18 690 876 ; C -1 ; WX 500 ; N atilde ; B 17 -11 511 624 ; C -1 ; WX 611 ; N Edotaccent ; B -1 0 634 818 ; C -1 ; WX 389 ; N scaron ; B 16 -13 454 661 ; C -1 ; WX 389 ; N scedilla ; B 16 -217 366 442 ; C -1 ; WX 278 ; N iacute ; B 49 -11 355 664 ; C -1 ; WX 471 ; N lozenge ; B 13 0 459 724 ; C -1 ; WX 611 ; N Rcaron ; B -13 0 588 873 ; C -1 ; WX 722 ; N Gcommaaccent ; B 52 -217 722 666 ; C -1 ; WX 500 ; N ucircumflex ; B 42 -11 475 661 ; C -1 ; WX 500 ; N acircumflex ; B 17 -11 476 661 ; C -1 ; WX 611 ; N Amacron ; B -51 0 564 795 ; C -1 ; WX 389 ; N rcaron ; B 45 0 434 661 ; C -1 ; WX 444 ; N ccedilla ; B 30 -217 425 441 ; C -1 ; WX 556 ; N Zdotaccent ; B -6 0 606 818 ; C -1 ; WX 611 ; N Thorn ; B 0 0 569 653 ; C -1 ; WX 722 ; N Omacron ; B 60 -18 699 795 ; C -1 ; WX 611 ; N Racute ; B -13 0 588 876 ; C -1 ; WX 500 ; N Sacute ; B 17 -18 508 876 ; C -1 ; WX 544 ; N dcaron ; B 15 -13 658 683 ; C -1 ; WX 722 ; N Umacron ; B 102 -18 765 795 ; C -1 ; WX 500 ; N uring ; B 42 -11 475 691 ; C -1 ; WX 300 ; N threesuperior ; B 43 268 339 676 ; C -1 ; WX 722 ; N Ograve ; B 60 -18 699 876 ; C -1 ; WX 611 ; N Agrave ; B -51 0 564 876 ; C -1 ; WX 611 ; N Abreve ; B -51 0 564 862 ; C -1 ; WX 675 ; N multiply ; B 93 8 582 497 ; C -1 ; WX 500 ; N uacute ; B 42 -11 477 664 ; C -1 ; WX 556 ; N Tcaron ; B 59 0 633 873 ; C -1 ; WX 476 ; N partialdiff ; B 17 -38 459 710 ; C -1 ; WX 444 ; N ydieresis ; B -24 -206 441 606 ; C -1 ; WX 667 ; N Nacute ; B -20 -15 727 876 ; C -1 ; WX 278 ; N icircumflex ; B 33 -11 327 661 ; C -1 ; WX 611 ; N Ecircumflex ; B -1 0 634 873 ; C -1 ; WX 500 ; N adieresis ; B 17 -11 489 606 ; C -1 ; WX 444 ; N edieresis ; B 31 -11 451 606 ; C -1 ; WX 444 ; N cacute ; B 30 -11 459 664 ; C -1 ; WX 500 ; N nacute ; B 14 -9 477 664 ; C -1 ; WX 500 ; N umacron ; B 42 -11 485 583 ; C -1 ; WX 667 ; N Ncaron ; B -20 -15 727 873 ; C -1 ; WX 333 ; N Iacute ; B -8 0 433 876 ; C -1 ; WX 675 ; N plusminus ; B 86 0 590 506 ; C -1 ; WX 275 ; N brokenbar ; B 105 -142 171 708 ; C -1 ; WX 760 ; N registered ; B 41 -18 719 666 ; C -1 ; WX 722 ; N Gbreve ; B 52 -18 722 862 ; C -1 ; WX 333 ; N Idotaccent ; B -8 0 384 818 ; C -1 ; WX 600 ; N summation ; B 15 -10 585 706 ; C -1 ; WX 611 ; N Egrave ; B -1 0 634 876 ; C -1 ; WX 389 ; N racute ; B 45 0 431 664 ; C -1 ; WX 500 ; N omacron ; B 27 -11 495 583 ; C -1 ; WX 556 ; N Zacute ; B -6 0 606 876 ; C -1 ; WX 556 ; N Zcaron ; B -6 0 606 873 ; C -1 ; WX 549 ; N greaterequal ; B 26 0 523 658 ; C -1 ; WX 722 ; N Eth ; B -8 0 700 653 ; C -1 ; WX 667 ; N Ccedilla ; B 66 -217 689 666 ; C -1 ; WX 278 ; N lcommaaccent ; B 22 -217 279 683 ; C -1 ; WX 300 ; N tcaron ; B 37 -11 407 681 ; C -1 ; WX 444 ; N eogonek ; B 31 -169 412 441 ; C -1 ; WX 722 ; N Uogonek ; B 102 -184 765 653 ; C -1 ; WX 611 ; N Aacute ; B -51 0 564 876 ; C -1 ; WX 611 ; N Adieresis ; B -51 0 564 818 ; C -1 ; WX 444 ; N egrave ; B 31 -11 412 664 ; C -1 ; WX 389 ; N zacute ; B -2 -81 431 664 ; C -1 ; WX 278 ; N iogonek ; B 49 -169 264 654 ; C -1 ; WX 722 ; N Oacute ; B 60 -18 699 876 ; C -1 ; WX 500 ; N oacute ; B 27 -11 487 664 ; C -1 ; WX 500 ; N amacron ; B 17 -11 495 583 ; C -1 ; WX 389 ; N sacute ; B 16 -13 431 664 ; C -1 ; WX 278 ; N idieresis ; B 49 -11 352 606 ; C -1 ; WX 722 ; N Ocircumflex ; B 60 -18 699 873 ; C -1 ; WX 722 ; N Ugrave ; B 102 -18 765 876 ; C -1 ; WX 612 ; N Delta ; B 6 0 608 688 ; C -1 ; WX 500 ; N thorn ; B -75 -205 469 683 ; C -1 ; WX 300 ; N twosuperior ; B 33 271 324 676 ; C -1 ; WX 722 ; N Odieresis ; B 60 -18 699 818 ; C -1 ; WX 500 ; N mu ; B -30 -209 497 428 ; C -1 ; WX 278 ; N igrave ; B 49 -11 284 664 ; C -1 ; WX 500 ; N ohungarumlaut ; B 27 -11 590 664 ; C -1 ; WX 611 ; N Eogonek ; B -1 -169 634 653 ; C -1 ; WX 500 ; N dcroat ; B 15 -13 572 683 ; C -1 ; WX 750 ; N threequarters ; B 23 -10 736 676 ; C -1 ; WX 500 ; N Scedilla ; B 17 -217 508 667 ; C -1 ; WX 300 ; N lcaron ; B 41 -11 407 683 ; C -1 ; WX 667 ; N Kcommaaccent ; B 7 -217 722 653 ; C -1 ; WX 556 ; N Lacute ; B -8 0 559 876 ; C -1 ; WX 980 ; N trademark ; B 30 247 957 653 ; C -1 ; WX 444 ; N edotaccent ; B 31 -11 412 606 ; C -1 ; WX 333 ; N Igrave ; B -8 0 384 876 ; C -1 ; WX 333 ; N Imacron ; B -8 0 441 795 ; C -1 ; WX 611 ; N Lcaron ; B -8 0 586 653 ; C -1 ; WX 750 ; N onehalf ; B 34 -10 749 676 ; C -1 ; WX 549 ; N lessequal ; B 26 0 523 658 ; C -1 ; WX 500 ; N ocircumflex ; B 27 -11 468 661 ; C -1 ; WX 500 ; N ntilde ; B 14 -9 476 624 ; C -1 ; WX 722 ; N Uhungarumlaut ; B 102 -18 765 876 ; C -1 ; WX 611 ; N Eacute ; B -1 0 634 876 ; C -1 ; WX 444 ; N emacron ; B 31 -11 457 583 ; C -1 ; WX 500 ; N gbreve ; B 8 -206 487 650 ; C -1 ; WX 750 ; N onequarter ; B 33 -10 736 676 ; C -1 ; WX 500 ; N Scaron ; B 17 -18 520 873 ; C -1 ; WX 500 ; N Scommaaccent ; B 17 -217 508 667 ; C -1 ; WX 722 ; N Ohungarumlaut ; B 60 -18 699 876 ; C -1 ; WX 400 ; N degree ; B 101 390 387 676 ; C -1 ; WX 500 ; N ograve ; B 27 -11 468 664 ; C -1 ; WX 667 ; N Ccaron ; B 66 -18 689 873 ; C -1 ; WX 500 ; N ugrave ; B 42 -11 475 664 ; C -1 ; WX 453 ; N radical ; B 2 -60 452 768 ; C -1 ; WX 722 ; N Dcaron ; B -8 0 700 873 ; C -1 ; WX 389 ; N rcommaaccent ; B -3 -217 412 441 ; C -1 ; WX 667 ; N Ntilde ; B -20 -15 727 836 ; C -1 ; WX 500 ; N otilde ; B 27 -11 496 624 ; C -1 ; WX 611 ; N Rcommaaccent ; B -13 -187 588 653 ; C -1 ; WX 556 ; N Lcommaaccent ; B -8 -217 559 653 ; C -1 ; WX 611 ; N Atilde ; B -51 0 566 836 ; C -1 ; WX 611 ; N Aogonek ; B -51 -169 566 668 ; C -1 ; WX 611 ; N Aring ; B -51 0 564 883 ; C -1 ; WX 722 ; N Otilde ; B 60 -18 699 836 ; C -1 ; WX 389 ; N zdotaccent ; B -2 -81 380 606 ; C -1 ; WX 611 ; N Ecaron ; B -1 0 634 873 ; C -1 ; WX 333 ; N Iogonek ; B -8 -169 384 653 ; C -1 ; WX 444 ; N kcommaaccent ; B 14 -187 461 683 ; C -1 ; WX 675 ; N minus ; B 86 220 590 286 ; C -1 ; WX 333 ; N Icircumflex ; B -8 0 425 873 ; C -1 ; WX 500 ; N ncaron ; B 14 -9 510 661 ; C -1 ; WX 278 ; N tcommaaccent ; B 2 -217 296 546 ; C -1 ; WX 675 ; N logicalnot ; B 86 108 590 386 ; C -1 ; WX 500 ; N odieresis ; B 27 -11 489 606 ; C -1 ; WX 500 ; N udieresis ; B 42 -11 479 606 ; C -1 ; WX 549 ; N notequal ; B 12 -29 537 541 ; C -1 ; WX 500 ; N gcommaaccent ; B 8 -206 472 706 ; C -1 ; WX 500 ; N eth ; B 27 -11 482 683 ; C -1 ; WX 389 ; N zcaron ; B -2 -81 434 661 ; C -1 ; WX 500 ; N ncommaaccent ; B 14 -187 474 441 ; C -1 ; WX 300 ; N onesuperior ; B 43 271 284 676 ; C -1 ; WX 278 ; N imacron ; B 46 -11 311 583 ; EndCharMetrics StartKernData StartKernPairs 2321 KPX A C -30 KPX A Cacute -30 KPX A Ccaron -30 KPX A Ccedilla -30 KPX A G -35 KPX A Gbreve -35 KPX A Gcommaaccent -35 KPX A O -40 KPX A Oacute -40 KPX A Ocircumflex -40 KPX A Odieresis -40 KPX A Ograve -40 KPX A Ohungarumlaut -40 KPX A Omacron -40 KPX A Oslash -40 KPX A Otilde -40 KPX A Q -40 KPX A T -37 KPX A Tcaron -37 KPX A Tcommaaccent -37 KPX A U -50 KPX A Uacute -50 KPX A Ucircumflex -50 KPX A Udieresis -50 KPX A Ugrave -50 KPX A Uhungarumlaut -50 KPX A Umacron -50 KPX A Uogonek -50 KPX A Uring -50 KPX A V -105 KPX A W -95 KPX A Y -55 KPX A Yacute -55 KPX A Ydieresis -55 KPX A quoteright -37 KPX A u -20 KPX A uacute -20 KPX A ucircumflex -20 KPX A udieresis -20 KPX A ugrave -20 KPX A uhungarumlaut -20 KPX A umacron -20 KPX A uogonek -20 KPX A uring -20 KPX A v -55 KPX A w -55 KPX A y -55 KPX A yacute -55 KPX A ydieresis -55 KPX Aacute C -30 KPX Aacute Cacute -30 KPX Aacute Ccaron -30 KPX Aacute Ccedilla -30 KPX Aacute G -35 KPX Aacute Gbreve -35 KPX Aacute Gcommaaccent -35 KPX Aacute O -40 KPX Aacute Oacute -40 KPX Aacute Ocircumflex -40 KPX Aacute Odieresis -40 KPX Aacute Ograve -40 KPX Aacute Ohungarumlaut -40 KPX Aacute Omacron -40 KPX Aacute Oslash -40 KPX Aacute Otilde -40 KPX Aacute Q -40 KPX Aacute T -37 KPX Aacute Tcaron -37 KPX Aacute Tcommaaccent -37 KPX Aacute U -50 KPX Aacute Uacute -50 KPX Aacute Ucircumflex -50 KPX Aacute Udieresis -50 KPX Aacute Ugrave -50 KPX Aacute Uhungarumlaut -50 KPX Aacute Umacron -50 KPX Aacute Uogonek -50 KPX Aacute Uring -50 KPX Aacute V -105 KPX Aacute W -95 KPX Aacute Y -55 KPX Aacute Yacute -55 KPX Aacute Ydieresis -55 KPX Aacute quoteright -37 KPX Aacute u -20 KPX Aacute uacute -20 KPX Aacute ucircumflex -20 KPX Aacute udieresis -20 KPX Aacute ugrave -20 KPX Aacute uhungarumlaut -20 KPX Aacute umacron -20 KPX Aacute uogonek -20 KPX Aacute uring -20 KPX Aacute v -55 KPX Aacute w -55 KPX Aacute y -55 KPX Aacute yacute -55 KPX Aacute ydieresis -55 KPX Abreve C -30 KPX Abreve Cacute -30 KPX Abreve Ccaron -30 KPX Abreve Ccedilla -30 KPX Abreve G -35 KPX Abreve Gbreve -35 KPX Abreve Gcommaaccent -35 KPX Abreve O -40 KPX Abreve Oacute -40 KPX Abreve Ocircumflex -40 KPX Abreve Odieresis -40 KPX Abreve Ograve -40 KPX Abreve Ohungarumlaut -40 KPX Abreve Omacron -40 KPX Abreve Oslash -40 KPX Abreve Otilde -40 KPX Abreve Q -40 KPX Abreve T -37 KPX Abreve Tcaron -37 KPX Abreve Tcommaaccent -37 KPX Abreve U -50 KPX Abreve Uacute -50 KPX Abreve Ucircumflex -50 KPX Abreve Udieresis -50 KPX Abreve Ugrave -50 KPX Abreve Uhungarumlaut -50 KPX Abreve Umacron -50 KPX Abreve Uogonek -50 KPX Abreve Uring -50 KPX Abreve V -105 KPX Abreve W -95 KPX Abreve Y -55 KPX Abreve Yacute -55 KPX Abreve Ydieresis -55 KPX Abreve quoteright -37 KPX Abreve u -20 KPX Abreve uacute -20 KPX Abreve ucircumflex -20 KPX Abreve udieresis -20 KPX Abreve ugrave -20 KPX Abreve uhungarumlaut -20 KPX Abreve umacron -20 KPX Abreve uogonek -20 KPX Abreve uring -20 KPX Abreve v -55 KPX Abreve w -55 KPX Abreve y -55 KPX Abreve yacute -55 KPX Abreve ydieresis -55 KPX Acircumflex C -30 KPX Acircumflex Cacute -30 KPX Acircumflex Ccaron -30 KPX Acircumflex Ccedilla -30 KPX Acircumflex G -35 KPX Acircumflex Gbreve -35 KPX Acircumflex Gcommaaccent -35 KPX Acircumflex O -40 KPX Acircumflex Oacute -40 KPX Acircumflex Ocircumflex -40 KPX Acircumflex Odieresis -40 KPX Acircumflex Ograve -40 KPX Acircumflex Ohungarumlaut -40 KPX Acircumflex Omacron -40 KPX Acircumflex Oslash -40 KPX Acircumflex Otilde -40 KPX Acircumflex Q -40 KPX Acircumflex T -37 KPX Acircumflex Tcaron -37 KPX Acircumflex Tcommaaccent -37 KPX Acircumflex U -50 KPX Acircumflex Uacute -50 KPX Acircumflex Ucircumflex -50 KPX Acircumflex Udieresis -50 KPX Acircumflex Ugrave -50 KPX Acircumflex Uhungarumlaut -50 KPX Acircumflex Umacron -50 KPX Acircumflex Uogonek -50 KPX Acircumflex Uring -50 KPX Acircumflex V -105 KPX Acircumflex W -95 KPX Acircumflex Y -55 KPX Acircumflex Yacute -55 KPX Acircumflex Ydieresis -55 KPX Acircumflex quoteright -37 KPX Acircumflex u -20 KPX Acircumflex uacute -20 KPX Acircumflex ucircumflex -20 KPX Acircumflex udieresis -20 KPX Acircumflex ugrave -20 KPX Acircumflex uhungarumlaut -20 KPX Acircumflex umacron -20 KPX Acircumflex uogonek -20 KPX Acircumflex uring -20 KPX Acircumflex v -55 KPX Acircumflex w -55 KPX Acircumflex y -55 KPX Acircumflex yacute -55 KPX Acircumflex ydieresis -55 KPX Adieresis C -30 KPX Adieresis Cacute -30 KPX Adieresis Ccaron -30 KPX Adieresis Ccedilla -30 KPX Adieresis G -35 KPX Adieresis Gbreve -35 KPX Adieresis Gcommaaccent -35 KPX Adieresis O -40 KPX Adieresis Oacute -40 KPX Adieresis Ocircumflex -40 KPX Adieresis Odieresis -40 KPX Adieresis Ograve -40 KPX Adieresis Ohungarumlaut -40 KPX Adieresis Omacron -40 KPX Adieresis Oslash -40 KPX Adieresis Otilde -40 KPX Adieresis Q -40 KPX Adieresis T -37 KPX Adieresis Tcaron -37 KPX Adieresis Tcommaaccent -37 KPX Adieresis U -50 KPX Adieresis Uacute -50 KPX Adieresis Ucircumflex -50 KPX Adieresis Udieresis -50 KPX Adieresis Ugrave -50 KPX Adieresis Uhungarumlaut -50 KPX Adieresis Umacron -50 KPX Adieresis Uogonek -50 KPX Adieresis Uring -50 KPX Adieresis V -105 KPX Adieresis W -95 KPX Adieresis Y -55 KPX Adieresis Yacute -55 KPX Adieresis Ydieresis -55 KPX Adieresis quoteright -37 KPX Adieresis u -20 KPX Adieresis uacute -20 KPX Adieresis ucircumflex -20 KPX Adieresis udieresis -20 KPX Adieresis ugrave -20 KPX Adieresis uhungarumlaut -20 KPX Adieresis umacron -20 KPX Adieresis uogonek -20 KPX Adieresis uring -20 KPX Adieresis v -55 KPX Adieresis w -55 KPX Adieresis y -55 KPX Adieresis yacute -55 KPX Adieresis ydieresis -55 KPX Agrave C -30 KPX Agrave Cacute -30 KPX Agrave Ccaron -30 KPX Agrave Ccedilla -30 KPX Agrave G -35 KPX Agrave Gbreve -35 KPX Agrave Gcommaaccent -35 KPX Agrave O -40 KPX Agrave Oacute -40 KPX Agrave Ocircumflex -40 KPX Agrave Odieresis -40 KPX Agrave Ograve -40 KPX Agrave Ohungarumlaut -40 KPX Agrave Omacron -40 KPX Agrave Oslash -40 KPX Agrave Otilde -40 KPX Agrave Q -40 KPX Agrave T -37 KPX Agrave Tcaron -37 KPX Agrave Tcommaaccent -37 KPX Agrave U -50 KPX Agrave Uacute -50 KPX Agrave Ucircumflex -50 KPX Agrave Udieresis -50 KPX Agrave Ugrave -50 KPX Agrave Uhungarumlaut -50 KPX Agrave Umacron -50 KPX Agrave Uogonek -50 KPX Agrave Uring -50 KPX Agrave V -105 KPX Agrave W -95 KPX Agrave Y -55 KPX Agrave Yacute -55 KPX Agrave Ydieresis -55 KPX Agrave quoteright -37 KPX Agrave u -20 KPX Agrave uacute -20 KPX Agrave ucircumflex -20 KPX Agrave udieresis -20 KPX Agrave ugrave -20 KPX Agrave uhungarumlaut -20 KPX Agrave umacron -20 KPX Agrave uogonek -20 KPX Agrave uring -20 KPX Agrave v -55 KPX Agrave w -55 KPX Agrave y -55 KPX Agrave yacute -55 KPX Agrave ydieresis -55 KPX Amacron C -30 KPX Amacron Cacute -30 KPX Amacron Ccaron -30 KPX Amacron Ccedilla -30 KPX Amacron G -35 KPX Amacron Gbreve -35 KPX Amacron Gcommaaccent -35 KPX Amacron O -40 KPX Amacron Oacute -40 KPX Amacron Ocircumflex -40 KPX Amacron Odieresis -40 KPX Amacron Ograve -40 KPX Amacron Ohungarumlaut -40 KPX Amacron Omacron -40 KPX Amacron Oslash -40 KPX Amacron Otilde -40 KPX Amacron Q -40 KPX Amacron T -37 KPX Amacron Tcaron -37 KPX Amacron Tcommaaccent -37 KPX Amacron U -50 KPX Amacron Uacute -50 KPX Amacron Ucircumflex -50 KPX Amacron Udieresis -50 KPX Amacron Ugrave -50 KPX Amacron Uhungarumlaut -50 KPX Amacron Umacron -50 KPX Amacron Uogonek -50 KPX Amacron Uring -50 KPX Amacron V -105 KPX Amacron W -95 KPX Amacron Y -55 KPX Amacron Yacute -55 KPX Amacron Ydieresis -55 KPX Amacron quoteright -37 KPX Amacron u -20 KPX Amacron uacute -20 KPX Amacron ucircumflex -20 KPX Amacron udieresis -20 KPX Amacron ugrave -20 KPX Amacron uhungarumlaut -20 KPX Amacron umacron -20 KPX Amacron uogonek -20 KPX Amacron uring -20 KPX Amacron v -55 KPX Amacron w -55 KPX Amacron y -55 KPX Amacron yacute -55 KPX Amacron ydieresis -55 KPX Aogonek C -30 KPX Aogonek Cacute -30 KPX Aogonek Ccaron -30 KPX Aogonek Ccedilla -30 KPX Aogonek G -35 KPX Aogonek Gbreve -35 KPX Aogonek Gcommaaccent -35 KPX Aogonek O -40 KPX Aogonek Oacute -40 KPX Aogonek Ocircumflex -40 KPX Aogonek Odieresis -40 KPX Aogonek Ograve -40 KPX Aogonek Ohungarumlaut -40 KPX Aogonek Omacron -40 KPX Aogonek Oslash -40 KPX Aogonek Otilde -40 KPX Aogonek Q -40 KPX Aogonek T -37 KPX Aogonek Tcaron -37 KPX Aogonek Tcommaaccent -37 KPX Aogonek U -50 KPX Aogonek Uacute -50 KPX Aogonek Ucircumflex -50 KPX Aogonek Udieresis -50 KPX Aogonek Ugrave -50 KPX Aogonek Uhungarumlaut -50 KPX Aogonek Umacron -50 KPX Aogonek Uogonek -50 KPX Aogonek Uring -50 KPX Aogonek V -105 KPX Aogonek W -95 KPX Aogonek Y -55 KPX Aogonek Yacute -55 KPX Aogonek Ydieresis -55 KPX Aogonek quoteright -37 KPX Aogonek u -20 KPX Aogonek uacute -20 KPX Aogonek ucircumflex -20 KPX Aogonek udieresis -20 KPX Aogonek ugrave -20 KPX Aogonek uhungarumlaut -20 KPX Aogonek umacron -20 KPX Aogonek uogonek -20 KPX Aogonek uring -20 KPX Aogonek v -55 KPX Aogonek w -55 KPX Aogonek y -55 KPX Aogonek yacute -55 KPX Aogonek ydieresis -55 KPX Aring C -30 KPX Aring Cacute -30 KPX Aring Ccaron -30 KPX Aring Ccedilla -30 KPX Aring G -35 KPX Aring Gbreve -35 KPX Aring Gcommaaccent -35 KPX Aring O -40 KPX Aring Oacute -40 KPX Aring Ocircumflex -40 KPX Aring Odieresis -40 KPX Aring Ograve -40 KPX Aring Ohungarumlaut -40 KPX Aring Omacron -40 KPX Aring Oslash -40 KPX Aring Otilde -40 KPX Aring Q -40 KPX Aring T -37 KPX Aring Tcaron -37 KPX Aring Tcommaaccent -37 KPX Aring U -50 KPX Aring Uacute -50 KPX Aring Ucircumflex -50 KPX Aring Udieresis -50 KPX Aring Ugrave -50 KPX Aring Uhungarumlaut -50 KPX Aring Umacron -50 KPX Aring Uogonek -50 KPX Aring Uring -50 KPX Aring V -105 KPX Aring W -95 KPX Aring Y -55 KPX Aring Yacute -55 KPX Aring Ydieresis -55 KPX Aring quoteright -37 KPX Aring u -20 KPX Aring uacute -20 KPX Aring ucircumflex -20 KPX Aring udieresis -20 KPX Aring ugrave -20 KPX Aring uhungarumlaut -20 KPX Aring umacron -20 KPX Aring uogonek -20 KPX Aring uring -20 KPX Aring v -55 KPX Aring w -55 KPX Aring y -55 KPX Aring yacute -55 KPX Aring ydieresis -55 KPX Atilde C -30 KPX Atilde Cacute -30 KPX Atilde Ccaron -30 KPX Atilde Ccedilla -30 KPX Atilde G -35 KPX Atilde Gbreve -35 KPX Atilde Gcommaaccent -35 KPX Atilde O -40 KPX Atilde Oacute -40 KPX Atilde Ocircumflex -40 KPX Atilde Odieresis -40 KPX Atilde Ograve -40 KPX Atilde Ohungarumlaut -40 KPX Atilde Omacron -40 KPX Atilde Oslash -40 KPX Atilde Otilde -40 KPX Atilde Q -40 KPX Atilde T -37 KPX Atilde Tcaron -37 KPX Atilde Tcommaaccent -37 KPX Atilde U -50 KPX Atilde Uacute -50 KPX Atilde Ucircumflex -50 KPX Atilde Udieresis -50 KPX Atilde Ugrave -50 KPX Atilde Uhungarumlaut -50 KPX Atilde Umacron -50 KPX Atilde Uogonek -50 KPX Atilde Uring -50 KPX Atilde V -105 KPX Atilde W -95 KPX Atilde Y -55 KPX Atilde Yacute -55 KPX Atilde Ydieresis -55 KPX Atilde quoteright -37 KPX Atilde u -20 KPX Atilde uacute -20 KPX Atilde ucircumflex -20 KPX Atilde udieresis -20 KPX Atilde ugrave -20 KPX Atilde uhungarumlaut -20 KPX Atilde umacron -20 KPX Atilde uogonek -20 KPX Atilde uring -20 KPX Atilde v -55 KPX Atilde w -55 KPX Atilde y -55 KPX Atilde yacute -55 KPX Atilde ydieresis -55 KPX B A -25 KPX B Aacute -25 KPX B Abreve -25 KPX B Acircumflex -25 KPX B Adieresis -25 KPX B Agrave -25 KPX B Amacron -25 KPX B Aogonek -25 KPX B Aring -25 KPX B Atilde -25 KPX B U -10 KPX B Uacute -10 KPX B Ucircumflex -10 KPX B Udieresis -10 KPX B Ugrave -10 KPX B Uhungarumlaut -10 KPX B Umacron -10 KPX B Uogonek -10 KPX B Uring -10 KPX D A -35 KPX D Aacute -35 KPX D Abreve -35 KPX D Acircumflex -35 KPX D Adieresis -35 KPX D Agrave -35 KPX D Amacron -35 KPX D Aogonek -35 KPX D Aring -35 KPX D Atilde -35 KPX D V -40 KPX D W -40 KPX D Y -40 KPX D Yacute -40 KPX D Ydieresis -40 KPX Dcaron A -35 KPX Dcaron Aacute -35 KPX Dcaron Abreve -35 KPX Dcaron Acircumflex -35 KPX Dcaron Adieresis -35 KPX Dcaron Agrave -35 KPX Dcaron Amacron -35 KPX Dcaron Aogonek -35 KPX Dcaron Aring -35 KPX Dcaron Atilde -35 KPX Dcaron V -40 KPX Dcaron W -40 KPX Dcaron Y -40 KPX Dcaron Yacute -40 KPX Dcaron Ydieresis -40 KPX Dcroat A -35 KPX Dcroat Aacute -35 KPX Dcroat Abreve -35 KPX Dcroat Acircumflex -35 KPX Dcroat Adieresis -35 KPX Dcroat Agrave -35 KPX Dcroat Amacron -35 KPX Dcroat Aogonek -35 KPX Dcroat Aring -35 KPX Dcroat Atilde -35 KPX Dcroat V -40 KPX Dcroat W -40 KPX Dcroat Y -40 KPX Dcroat Yacute -40 KPX Dcroat Ydieresis -40 KPX F A -115 KPX F Aacute -115 KPX F Abreve -115 KPX F Acircumflex -115 KPX F Adieresis -115 KPX F Agrave -115 KPX F Amacron -115 KPX F Aogonek -115 KPX F Aring -115 KPX F Atilde -115 KPX F a -75 KPX F aacute -75 KPX F abreve -75 KPX F acircumflex -75 KPX F adieresis -75 KPX F agrave -75 KPX F amacron -75 KPX F aogonek -75 KPX F aring -75 KPX F atilde -75 KPX F comma -135 KPX F e -75 KPX F eacute -75 KPX F ecaron -75 KPX F ecircumflex -75 KPX F edieresis -75 KPX F edotaccent -75 KPX F egrave -75 KPX F emacron -75 KPX F eogonek -75 KPX F i -45 KPX F iacute -45 KPX F icircumflex -45 KPX F idieresis -45 KPX F igrave -45 KPX F imacron -45 KPX F iogonek -45 KPX F o -105 KPX F oacute -105 KPX F ocircumflex -105 KPX F odieresis -105 KPX F ograve -105 KPX F ohungarumlaut -105 KPX F omacron -105 KPX F oslash -105 KPX F otilde -105 KPX F period -135 KPX F r -55 KPX F racute -55 KPX F rcaron -55 KPX F rcommaaccent -55 KPX J A -40 KPX J Aacute -40 KPX J Abreve -40 KPX J Acircumflex -40 KPX J Adieresis -40 KPX J Agrave -40 KPX J Amacron -40 KPX J Aogonek -40 KPX J Aring -40 KPX J Atilde -40 KPX J a -35 KPX J aacute -35 KPX J abreve -35 KPX J acircumflex -35 KPX J adieresis -35 KPX J agrave -35 KPX J amacron -35 KPX J aogonek -35 KPX J aring -35 KPX J atilde -35 KPX J comma -25 KPX J e -25 KPX J eacute -25 KPX J ecaron -25 KPX J ecircumflex -25 KPX J edieresis -25 KPX J edotaccent -25 KPX J egrave -25 KPX J emacron -25 KPX J eogonek -25 KPX J o -25 KPX J oacute -25 KPX J ocircumflex -25 KPX J odieresis -25 KPX J ograve -25 KPX J ohungarumlaut -25 KPX J omacron -25 KPX J oslash -25 KPX J otilde -25 KPX J period -25 KPX J u -35 KPX J uacute -35 KPX J ucircumflex -35 KPX J udieresis -35 KPX J ugrave -35 KPX J uhungarumlaut -35 KPX J umacron -35 KPX J uogonek -35 KPX J uring -35 KPX K O -50 KPX K Oacute -50 KPX K Ocircumflex -50 KPX K Odieresis -50 KPX K Ograve -50 KPX K Ohungarumlaut -50 KPX K Omacron -50 KPX K Oslash -50 KPX K Otilde -50 KPX K e -35 KPX K eacute -35 KPX K ecaron -35 KPX K ecircumflex -35 KPX K edieresis -35 KPX K edotaccent -35 KPX K egrave -35 KPX K emacron -35 KPX K eogonek -35 KPX K o -40 KPX K oacute -40 KPX K ocircumflex -40 KPX K odieresis -40 KPX K ograve -40 KPX K ohungarumlaut -40 KPX K omacron -40 KPX K oslash -40 KPX K otilde -40 KPX K u -40 KPX K uacute -40 KPX K ucircumflex -40 KPX K udieresis -40 KPX K ugrave -40 KPX K uhungarumlaut -40 KPX K umacron -40 KPX K uogonek -40 KPX K uring -40 KPX K y -40 KPX K yacute -40 KPX K ydieresis -40 KPX Kcommaaccent O -50 KPX Kcommaaccent Oacute -50 KPX Kcommaaccent Ocircumflex -50 KPX Kcommaaccent Odieresis -50 KPX Kcommaaccent Ograve -50 KPX Kcommaaccent Ohungarumlaut -50 KPX Kcommaaccent Omacron -50 KPX Kcommaaccent Oslash -50 KPX Kcommaaccent Otilde -50 KPX Kcommaaccent e -35 KPX Kcommaaccent eacute -35 KPX Kcommaaccent ecaron -35 KPX Kcommaaccent ecircumflex -35 KPX Kcommaaccent edieresis -35 KPX Kcommaaccent edotaccent -35 KPX Kcommaaccent egrave -35 KPX Kcommaaccent emacron -35 KPX Kcommaaccent eogonek -35 KPX Kcommaaccent o -40 KPX Kcommaaccent oacute -40 KPX Kcommaaccent ocircumflex -40 KPX Kcommaaccent odieresis -40 KPX Kcommaaccent ograve -40 KPX Kcommaaccent ohungarumlaut -40 KPX Kcommaaccent omacron -40 KPX Kcommaaccent oslash -40 KPX Kcommaaccent otilde -40 KPX Kcommaaccent u -40 KPX Kcommaaccent uacute -40 KPX Kcommaaccent ucircumflex -40 KPX Kcommaaccent udieresis -40 KPX Kcommaaccent ugrave -40 KPX Kcommaaccent uhungarumlaut -40 KPX Kcommaaccent umacron -40 KPX Kcommaaccent uogonek -40 KPX Kcommaaccent uring -40 KPX Kcommaaccent y -40 KPX Kcommaaccent yacute -40 KPX Kcommaaccent ydieresis -40 KPX L T -20 KPX L Tcaron -20 KPX L Tcommaaccent -20 KPX L V -55 KPX L W -55 KPX L Y -20 KPX L Yacute -20 KPX L Ydieresis -20 KPX L quoteright -37 KPX L y -30 KPX L yacute -30 KPX L ydieresis -30 KPX Lacute T -20 KPX Lacute Tcaron -20 KPX Lacute Tcommaaccent -20 KPX Lacute V -55 KPX Lacute W -55 KPX Lacute Y -20 KPX Lacute Yacute -20 KPX Lacute Ydieresis -20 KPX Lacute quoteright -37 KPX Lacute y -30 KPX Lacute yacute -30 KPX Lacute ydieresis -30 KPX Lcommaaccent T -20 KPX Lcommaaccent Tcaron -20 KPX Lcommaaccent Tcommaaccent -20 KPX Lcommaaccent V -55 KPX Lcommaaccent W -55 KPX Lcommaaccent Y -20 KPX Lcommaaccent Yacute -20 KPX Lcommaaccent Ydieresis -20 KPX Lcommaaccent quoteright -37 KPX Lcommaaccent y -30 KPX Lcommaaccent yacute -30 KPX Lcommaaccent ydieresis -30 KPX Lslash T -20 KPX Lslash Tcaron -20 KPX Lslash Tcommaaccent -20 KPX Lslash V -55 KPX Lslash W -55 KPX Lslash Y -20 KPX Lslash Yacute -20 KPX Lslash Ydieresis -20 KPX Lslash quoteright -37 KPX Lslash y -30 KPX Lslash yacute -30 KPX Lslash ydieresis -30 KPX N A -27 KPX N Aacute -27 KPX N Abreve -27 KPX N Acircumflex -27 KPX N Adieresis -27 KPX N Agrave -27 KPX N Amacron -27 KPX N Aogonek -27 KPX N Aring -27 KPX N Atilde -27 KPX Nacute A -27 KPX Nacute Aacute -27 KPX Nacute Abreve -27 KPX Nacute Acircumflex -27 KPX Nacute Adieresis -27 KPX Nacute Agrave -27 KPX Nacute Amacron -27 KPX Nacute Aogonek -27 KPX Nacute Aring -27 KPX Nacute Atilde -27 KPX Ncaron A -27 KPX Ncaron Aacute -27 KPX Ncaron Abreve -27 KPX Ncaron Acircumflex -27 KPX Ncaron Adieresis -27 KPX Ncaron Agrave -27 KPX Ncaron Amacron -27 KPX Ncaron Aogonek -27 KPX Ncaron Aring -27 KPX Ncaron Atilde -27 KPX Ncommaaccent A -27 KPX Ncommaaccent Aacute -27 KPX Ncommaaccent Abreve -27 KPX Ncommaaccent Acircumflex -27 KPX Ncommaaccent Adieresis -27 KPX Ncommaaccent Agrave -27 KPX Ncommaaccent Amacron -27 KPX Ncommaaccent Aogonek -27 KPX Ncommaaccent Aring -27 KPX Ncommaaccent Atilde -27 KPX Ntilde A -27 KPX Ntilde Aacute -27 KPX Ntilde Abreve -27 KPX Ntilde Acircumflex -27 KPX Ntilde Adieresis -27 KPX Ntilde Agrave -27 KPX Ntilde Amacron -27 KPX Ntilde Aogonek -27 KPX Ntilde Aring -27 KPX Ntilde Atilde -27 KPX O A -55 KPX O Aacute -55 KPX O Abreve -55 KPX O Acircumflex -55 KPX O Adieresis -55 KPX O Agrave -55 KPX O Amacron -55 KPX O Aogonek -55 KPX O Aring -55 KPX O Atilde -55 KPX O T -40 KPX O Tcaron -40 KPX O Tcommaaccent -40 KPX O V -50 KPX O W -50 KPX O X -40 KPX O Y -50 KPX O Yacute -50 KPX O Ydieresis -50 KPX Oacute A -55 KPX Oacute Aacute -55 KPX Oacute Abreve -55 KPX Oacute Acircumflex -55 KPX Oacute Adieresis -55 KPX Oacute Agrave -55 KPX Oacute Amacron -55 KPX Oacute Aogonek -55 KPX Oacute Aring -55 KPX Oacute Atilde -55 KPX Oacute T -40 KPX Oacute Tcaron -40 KPX Oacute Tcommaaccent -40 KPX Oacute V -50 KPX Oacute W -50 KPX Oacute X -40 KPX Oacute Y -50 KPX Oacute Yacute -50 KPX Oacute Ydieresis -50 KPX Ocircumflex A -55 KPX Ocircumflex Aacute -55 KPX Ocircumflex Abreve -55 KPX Ocircumflex Acircumflex -55 KPX Ocircumflex Adieresis -55 KPX Ocircumflex Agrave -55 KPX Ocircumflex Amacron -55 KPX Ocircumflex Aogonek -55 KPX Ocircumflex Aring -55 KPX Ocircumflex Atilde -55 KPX Ocircumflex T -40 KPX Ocircumflex Tcaron -40 KPX Ocircumflex Tcommaaccent -40 KPX Ocircumflex V -50 KPX Ocircumflex W -50 KPX Ocircumflex X -40 KPX Ocircumflex Y -50 KPX Ocircumflex Yacute -50 KPX Ocircumflex Ydieresis -50 KPX Odieresis A -55 KPX Odieresis Aacute -55 KPX Odieresis Abreve -55 KPX Odieresis Acircumflex -55 KPX Odieresis Adieresis -55 KPX Odieresis Agrave -55 KPX Odieresis Amacron -55 KPX Odieresis Aogonek -55 KPX Odieresis Aring -55 KPX Odieresis Atilde -55 KPX Odieresis T -40 KPX Odieresis Tcaron -40 KPX Odieresis Tcommaaccent -40 KPX Odieresis V -50 KPX Odieresis W -50 KPX Odieresis X -40 KPX Odieresis Y -50 KPX Odieresis Yacute -50 KPX Odieresis Ydieresis -50 KPX Ograve A -55 KPX Ograve Aacute -55 KPX Ograve Abreve -55 KPX Ograve Acircumflex -55 KPX Ograve Adieresis -55 KPX Ograve Agrave -55 KPX Ograve Amacron -55 KPX Ograve Aogonek -55 KPX Ograve Aring -55 KPX Ograve Atilde -55 KPX Ograve T -40 KPX Ograve Tcaron -40 KPX Ograve Tcommaaccent -40 KPX Ograve V -50 KPX Ograve W -50 KPX Ograve X -40 KPX Ograve Y -50 KPX Ograve Yacute -50 KPX Ograve Ydieresis -50 KPX Ohungarumlaut A -55 KPX Ohungarumlaut Aacute -55 KPX Ohungarumlaut Abreve -55 KPX Ohungarumlaut Acircumflex -55 KPX Ohungarumlaut Adieresis -55 KPX Ohungarumlaut Agrave -55 KPX Ohungarumlaut Amacron -55 KPX Ohungarumlaut Aogonek -55 KPX Ohungarumlaut Aring -55 KPX Ohungarumlaut Atilde -55 KPX Ohungarumlaut T -40 KPX Ohungarumlaut Tcaron -40 KPX Ohungarumlaut Tcommaaccent -40 KPX Ohungarumlaut V -50 KPX Ohungarumlaut W -50 KPX Ohungarumlaut X -40 KPX Ohungarumlaut Y -50 KPX Ohungarumlaut Yacute -50 KPX Ohungarumlaut Ydieresis -50 KPX Omacron A -55 KPX Omacron Aacute -55 KPX Omacron Abreve -55 KPX Omacron Acircumflex -55 KPX Omacron Adieresis -55 KPX Omacron Agrave -55 KPX Omacron Amacron -55 KPX Omacron Aogonek -55 KPX Omacron Aring -55 KPX Omacron Atilde -55 KPX Omacron T -40 KPX Omacron Tcaron -40 KPX Omacron Tcommaaccent -40 KPX Omacron V -50 KPX Omacron W -50 KPX Omacron X -40 KPX Omacron Y -50 KPX Omacron Yacute -50 KPX Omacron Ydieresis -50 KPX Oslash A -55 KPX Oslash Aacute -55 KPX Oslash Abreve -55 KPX Oslash Acircumflex -55 KPX Oslash Adieresis -55 KPX Oslash Agrave -55 KPX Oslash Amacron -55 KPX Oslash Aogonek -55 KPX Oslash Aring -55 KPX Oslash Atilde -55 KPX Oslash T -40 KPX Oslash Tcaron -40 KPX Oslash Tcommaaccent -40 KPX Oslash V -50 KPX Oslash W -50 KPX Oslash X -40 KPX Oslash Y -50 KPX Oslash Yacute -50 KPX Oslash Ydieresis -50 KPX Otilde A -55 KPX Otilde Aacute -55 KPX Otilde Abreve -55 KPX Otilde Acircumflex -55 KPX Otilde Adieresis -55 KPX Otilde Agrave -55 KPX Otilde Amacron -55 KPX Otilde Aogonek -55 KPX Otilde Aring -55 KPX Otilde Atilde -55 KPX Otilde T -40 KPX Otilde Tcaron -40 KPX Otilde Tcommaaccent -40 KPX Otilde V -50 KPX Otilde W -50 KPX Otilde X -40 KPX Otilde Y -50 KPX Otilde Yacute -50 KPX Otilde Ydieresis -50 KPX P A -90 KPX P Aacute -90 KPX P Abreve -90 KPX P Acircumflex -90 KPX P Adieresis -90 KPX P Agrave -90 KPX P Amacron -90 KPX P Aogonek -90 KPX P Aring -90 KPX P Atilde -90 KPX P a -80 KPX P aacute -80 KPX P abreve -80 KPX P acircumflex -80 KPX P adieresis -80 KPX P agrave -80 KPX P amacron -80 KPX P aogonek -80 KPX P aring -80 KPX P atilde -80 KPX P comma -135 KPX P e -80 KPX P eacute -80 KPX P ecaron -80 KPX P ecircumflex -80 KPX P edieresis -80 KPX P edotaccent -80 KPX P egrave -80 KPX P emacron -80 KPX P eogonek -80 KPX P o -80 KPX P oacute -80 KPX P ocircumflex -80 KPX P odieresis -80 KPX P ograve -80 KPX P ohungarumlaut -80 KPX P omacron -80 KPX P oslash -80 KPX P otilde -80 KPX P period -135 KPX Q U -10 KPX Q Uacute -10 KPX Q Ucircumflex -10 KPX Q Udieresis -10 KPX Q Ugrave -10 KPX Q Uhungarumlaut -10 KPX Q Umacron -10 KPX Q Uogonek -10 KPX Q Uring -10 KPX R O -40 KPX R Oacute -40 KPX R Ocircumflex -40 KPX R Odieresis -40 KPX R Ograve -40 KPX R Ohungarumlaut -40 KPX R Omacron -40 KPX R Oslash -40 KPX R Otilde -40 KPX R U -40 KPX R Uacute -40 KPX R Ucircumflex -40 KPX R Udieresis -40 KPX R Ugrave -40 KPX R Uhungarumlaut -40 KPX R Umacron -40 KPX R Uogonek -40 KPX R Uring -40 KPX R V -18 KPX R W -18 KPX R Y -18 KPX R Yacute -18 KPX R Ydieresis -18 KPX Racute O -40 KPX Racute Oacute -40 KPX Racute Ocircumflex -40 KPX Racute Odieresis -40 KPX Racute Ograve -40 KPX Racute Ohungarumlaut -40 KPX Racute Omacron -40 KPX Racute Oslash -40 KPX Racute Otilde -40 KPX Racute U -40 KPX Racute Uacute -40 KPX Racute Ucircumflex -40 KPX Racute Udieresis -40 KPX Racute Ugrave -40 KPX Racute Uhungarumlaut -40 KPX Racute Umacron -40 KPX Racute Uogonek -40 KPX Racute Uring -40 KPX Racute V -18 KPX Racute W -18 KPX Racute Y -18 KPX Racute Yacute -18 KPX Racute Ydieresis -18 KPX Rcaron O -40 KPX Rcaron Oacute -40 KPX Rcaron Ocircumflex -40 KPX Rcaron Odieresis -40 KPX Rcaron Ograve -40 KPX Rcaron Ohungarumlaut -40 KPX Rcaron Omacron -40 KPX Rcaron Oslash -40 KPX Rcaron Otilde -40 KPX Rcaron U -40 KPX Rcaron Uacute -40 KPX Rcaron Ucircumflex -40 KPX Rcaron Udieresis -40 KPX Rcaron Ugrave -40 KPX Rcaron Uhungarumlaut -40 KPX Rcaron Umacron -40 KPX Rcaron Uogonek -40 KPX Rcaron Uring -40 KPX Rcaron V -18 KPX Rcaron W -18 KPX Rcaron Y -18 KPX Rcaron Yacute -18 KPX Rcaron Ydieresis -18 KPX Rcommaaccent O -40 KPX Rcommaaccent Oacute -40 KPX Rcommaaccent Ocircumflex -40 KPX Rcommaaccent Odieresis -40 KPX Rcommaaccent Ograve -40 KPX Rcommaaccent Ohungarumlaut -40 KPX Rcommaaccent Omacron -40 KPX Rcommaaccent Oslash -40 KPX Rcommaaccent Otilde -40 KPX Rcommaaccent U -40 KPX Rcommaaccent Uacute -40 KPX Rcommaaccent Ucircumflex -40 KPX Rcommaaccent Udieresis -40 KPX Rcommaaccent Ugrave -40 KPX Rcommaaccent Uhungarumlaut -40 KPX Rcommaaccent Umacron -40 KPX Rcommaaccent Uogonek -40 KPX Rcommaaccent Uring -40 KPX Rcommaaccent V -18 KPX Rcommaaccent W -18 KPX Rcommaaccent Y -18 KPX Rcommaaccent Yacute -18 KPX Rcommaaccent Ydieresis -18 KPX T A -50 KPX T Aacute -50 KPX T Abreve -50 KPX T Acircumflex -50 KPX T Adieresis -50 KPX T Agrave -50 KPX T Amacron -50 KPX T Aogonek -50 KPX T Aring -50 KPX T Atilde -50 KPX T O -18 KPX T Oacute -18 KPX T Ocircumflex -18 KPX T Odieresis -18 KPX T Ograve -18 KPX T Ohungarumlaut -18 KPX T Omacron -18 KPX T Oslash -18 KPX T Otilde -18 KPX T a -92 KPX T aacute -92 KPX T abreve -92 KPX T acircumflex -92 KPX T adieresis -92 KPX T agrave -92 KPX T amacron -92 KPX T aogonek -92 KPX T aring -92 KPX T atilde -92 KPX T colon -55 KPX T comma -74 KPX T e -92 KPX T eacute -92 KPX T ecaron -92 KPX T ecircumflex -52 KPX T edieresis -52 KPX T edotaccent -92 KPX T egrave -52 KPX T emacron -52 KPX T eogonek -92 KPX T hyphen -74 KPX T i -55 KPX T iacute -55 KPX T iogonek -55 KPX T o -92 KPX T oacute -92 KPX T ocircumflex -92 KPX T odieresis -92 KPX T ograve -92 KPX T ohungarumlaut -92 KPX T omacron -92 KPX T oslash -92 KPX T otilde -92 KPX T period -74 KPX T r -55 KPX T racute -55 KPX T rcaron -55 KPX T rcommaaccent -55 KPX T semicolon -65 KPX T u -55 KPX T uacute -55 KPX T ucircumflex -55 KPX T udieresis -55 KPX T ugrave -55 KPX T uhungarumlaut -55 KPX T umacron -55 KPX T uogonek -55 KPX T uring -55 KPX T w -74 KPX T y -74 KPX T yacute -74 KPX T ydieresis -34 KPX Tcaron A -50 KPX Tcaron Aacute -50 KPX Tcaron Abreve -50 KPX Tcaron Acircumflex -50 KPX Tcaron Adieresis -50 KPX Tcaron Agrave -50 KPX Tcaron Amacron -50 KPX Tcaron Aogonek -50 KPX Tcaron Aring -50 KPX Tcaron Atilde -50 KPX Tcaron O -18 KPX Tcaron Oacute -18 KPX Tcaron Ocircumflex -18 KPX Tcaron Odieresis -18 KPX Tcaron Ograve -18 KPX Tcaron Ohungarumlaut -18 KPX Tcaron Omacron -18 KPX Tcaron Oslash -18 KPX Tcaron Otilde -18 KPX Tcaron a -92 KPX Tcaron aacute -92 KPX Tcaron abreve -92 KPX Tcaron acircumflex -92 KPX Tcaron adieresis -92 KPX Tcaron agrave -92 KPX Tcaron amacron -92 KPX Tcaron aogonek -92 KPX Tcaron aring -92 KPX Tcaron atilde -92 KPX Tcaron colon -55 KPX Tcaron comma -74 KPX Tcaron e -92 KPX Tcaron eacute -92 KPX Tcaron ecaron -92 KPX Tcaron ecircumflex -52 KPX Tcaron edieresis -52 KPX Tcaron edotaccent -92 KPX Tcaron egrave -52 KPX Tcaron emacron -52 KPX Tcaron eogonek -92 KPX Tcaron hyphen -74 KPX Tcaron i -55 KPX Tcaron iacute -55 KPX Tcaron iogonek -55 KPX Tcaron o -92 KPX Tcaron oacute -92 KPX Tcaron ocircumflex -92 KPX Tcaron odieresis -92 KPX Tcaron ograve -92 KPX Tcaron ohungarumlaut -92 KPX Tcaron omacron -92 KPX Tcaron oslash -92 KPX Tcaron otilde -92 KPX Tcaron period -74 KPX Tcaron r -55 KPX Tcaron racute -55 KPX Tcaron rcaron -55 KPX Tcaron rcommaaccent -55 KPX Tcaron semicolon -65 KPX Tcaron u -55 KPX Tcaron uacute -55 KPX Tcaron ucircumflex -55 KPX Tcaron udieresis -55 KPX Tcaron ugrave -55 KPX Tcaron uhungarumlaut -55 KPX Tcaron umacron -55 KPX Tcaron uogonek -55 KPX Tcaron uring -55 KPX Tcaron w -74 KPX Tcaron y -74 KPX Tcaron yacute -74 KPX Tcaron ydieresis -34 KPX Tcommaaccent A -50 KPX Tcommaaccent Aacute -50 KPX Tcommaaccent Abreve -50 KPX Tcommaaccent Acircumflex -50 KPX Tcommaaccent Adieresis -50 KPX Tcommaaccent Agrave -50 KPX Tcommaaccent Amacron -50 KPX Tcommaaccent Aogonek -50 KPX Tcommaaccent Aring -50 KPX Tcommaaccent Atilde -50 KPX Tcommaaccent O -18 KPX Tcommaaccent Oacute -18 KPX Tcommaaccent Ocircumflex -18 KPX Tcommaaccent Odieresis -18 KPX Tcommaaccent Ograve -18 KPX Tcommaaccent Ohungarumlaut -18 KPX Tcommaaccent Omacron -18 KPX Tcommaaccent Oslash -18 KPX Tcommaaccent Otilde -18 KPX Tcommaaccent a -92 KPX Tcommaaccent aacute -92 KPX Tcommaaccent abreve -92 KPX Tcommaaccent acircumflex -92 KPX Tcommaaccent adieresis -92 KPX Tcommaaccent agrave -92 KPX Tcommaaccent amacron -92 KPX Tcommaaccent aogonek -92 KPX Tcommaaccent aring -92 KPX Tcommaaccent atilde -92 KPX Tcommaaccent colon -55 KPX Tcommaaccent comma -74 KPX Tcommaaccent e -92 KPX Tcommaaccent eacute -92 KPX Tcommaaccent ecaron -92 KPX Tcommaaccent ecircumflex -52 KPX Tcommaaccent edieresis -52 KPX Tcommaaccent edotaccent -92 KPX Tcommaaccent egrave -52 KPX Tcommaaccent emacron -52 KPX Tcommaaccent eogonek -92 KPX Tcommaaccent hyphen -74 KPX Tcommaaccent i -55 KPX Tcommaaccent iacute -55 KPX Tcommaaccent iogonek -55 KPX Tcommaaccent o -92 KPX Tcommaaccent oacute -92 KPX Tcommaaccent ocircumflex -92 KPX Tcommaaccent odieresis -92 KPX Tcommaaccent ograve -92 KPX Tcommaaccent ohungarumlaut -92 KPX Tcommaaccent omacron -92 KPX Tcommaaccent oslash -92 KPX Tcommaaccent otilde -92 KPX Tcommaaccent period -74 KPX Tcommaaccent r -55 KPX Tcommaaccent racute -55 KPX Tcommaaccent rcaron -55 KPX Tcommaaccent rcommaaccent -55 KPX Tcommaaccent semicolon -65 KPX Tcommaaccent u -55 KPX Tcommaaccent uacute -55 KPX Tcommaaccent ucircumflex -55 KPX Tcommaaccent udieresis -55 KPX Tcommaaccent ugrave -55 KPX Tcommaaccent uhungarumlaut -55 KPX Tcommaaccent umacron -55 KPX Tcommaaccent uogonek -55 KPX Tcommaaccent uring -55 KPX Tcommaaccent w -74 KPX Tcommaaccent y -74 KPX Tcommaaccent yacute -74 KPX Tcommaaccent ydieresis -34 KPX U A -40 KPX U Aacute -40 KPX U Abreve -40 KPX U Acircumflex -40 KPX U Adieresis -40 KPX U Agrave -40 KPX U Amacron -40 KPX U Aogonek -40 KPX U Aring -40 KPX U Atilde -40 KPX U comma -25 KPX U period -25 KPX Uacute A -40 KPX Uacute Aacute -40 KPX Uacute Abreve -40 KPX Uacute Acircumflex -40 KPX Uacute Adieresis -40 KPX Uacute Agrave -40 KPX Uacute Amacron -40 KPX Uacute Aogonek -40 KPX Uacute Aring -40 KPX Uacute Atilde -40 KPX Uacute comma -25 KPX Uacute period -25 KPX Ucircumflex A -40 KPX Ucircumflex Aacute -40 KPX Ucircumflex Abreve -40 KPX Ucircumflex Acircumflex -40 KPX Ucircumflex Adieresis -40 KPX Ucircumflex Agrave -40 KPX Ucircumflex Amacron -40 KPX Ucircumflex Aogonek -40 KPX Ucircumflex Aring -40 KPX Ucircumflex Atilde -40 KPX Ucircumflex comma -25 KPX Ucircumflex period -25 KPX Udieresis A -40 KPX Udieresis Aacute -40 KPX Udieresis Abreve -40 KPX Udieresis Acircumflex -40 KPX Udieresis Adieresis -40 KPX Udieresis Agrave -40 KPX Udieresis Amacron -40 KPX Udieresis Aogonek -40 KPX Udieresis Aring -40 KPX Udieresis Atilde -40 KPX Udieresis comma -25 KPX Udieresis period -25 KPX Ugrave A -40 KPX Ugrave Aacute -40 KPX Ugrave Abreve -40 KPX Ugrave Acircumflex -40 KPX Ugrave Adieresis -40 KPX Ugrave Agrave -40 KPX Ugrave Amacron -40 KPX Ugrave Aogonek -40 KPX Ugrave Aring -40 KPX Ugrave Atilde -40 KPX Ugrave comma -25 KPX Ugrave period -25 KPX Uhungarumlaut A -40 KPX Uhungarumlaut Aacute -40 KPX Uhungarumlaut Abreve -40 KPX Uhungarumlaut Acircumflex -40 KPX Uhungarumlaut Adieresis -40 KPX Uhungarumlaut Agrave -40 KPX Uhungarumlaut Amacron -40 KPX Uhungarumlaut Aogonek -40 KPX Uhungarumlaut Aring -40 KPX Uhungarumlaut Atilde -40 KPX Uhungarumlaut comma -25 KPX Uhungarumlaut period -25 KPX Umacron A -40 KPX Umacron Aacute -40 KPX Umacron Abreve -40 KPX Umacron Acircumflex -40 KPX Umacron Adieresis -40 KPX Umacron Agrave -40 KPX Umacron Amacron -40 KPX Umacron Aogonek -40 KPX Umacron Aring -40 KPX Umacron Atilde -40 KPX Umacron comma -25 KPX Umacron period -25 KPX Uogonek A -40 KPX Uogonek Aacute -40 KPX Uogonek Abreve -40 KPX Uogonek Acircumflex -40 KPX Uogonek Adieresis -40 KPX Uogonek Agrave -40 KPX Uogonek Amacron -40 KPX Uogonek Aogonek -40 KPX Uogonek Aring -40 KPX Uogonek Atilde -40 KPX Uogonek comma -25 KPX Uogonek period -25 KPX Uring A -40 KPX Uring Aacute -40 KPX Uring Abreve -40 KPX Uring Acircumflex -40 KPX Uring Adieresis -40 KPX Uring Agrave -40 KPX Uring Amacron -40 KPX Uring Aogonek -40 KPX Uring Aring -40 KPX Uring Atilde -40 KPX Uring comma -25 KPX Uring period -25 KPX V A -60 KPX V Aacute -60 KPX V Abreve -60 KPX V Acircumflex -60 KPX V Adieresis -60 KPX V Agrave -60 KPX V Amacron -60 KPX V Aogonek -60 KPX V Aring -60 KPX V Atilde -60 KPX V O -30 KPX V Oacute -30 KPX V Ocircumflex -30 KPX V Odieresis -30 KPX V Ograve -30 KPX V Ohungarumlaut -30 KPX V Omacron -30 KPX V Oslash -30 KPX V Otilde -30 KPX V a -111 KPX V aacute -111 KPX V abreve -111 KPX V acircumflex -111 KPX V adieresis -111 KPX V agrave -111 KPX V amacron -111 KPX V aogonek -111 KPX V aring -111 KPX V atilde -111 KPX V colon -65 KPX V comma -129 KPX V e -111 KPX V eacute -111 KPX V ecaron -111 KPX V ecircumflex -111 KPX V edieresis -71 KPX V edotaccent -111 KPX V egrave -71 KPX V emacron -71 KPX V eogonek -111 KPX V hyphen -55 KPX V i -74 KPX V iacute -74 KPX V icircumflex -34 KPX V idieresis -34 KPX V igrave -34 KPX V imacron -34 KPX V iogonek -74 KPX V o -111 KPX V oacute -111 KPX V ocircumflex -111 KPX V odieresis -111 KPX V ograve -111 KPX V ohungarumlaut -111 KPX V omacron -111 KPX V oslash -111 KPX V otilde -111 KPX V period -129 KPX V semicolon -74 KPX V u -74 KPX V uacute -74 KPX V ucircumflex -74 KPX V udieresis -74 KPX V ugrave -74 KPX V uhungarumlaut -74 KPX V umacron -74 KPX V uogonek -74 KPX V uring -74 KPX W A -60 KPX W Aacute -60 KPX W Abreve -60 KPX W Acircumflex -60 KPX W Adieresis -60 KPX W Agrave -60 KPX W Amacron -60 KPX W Aogonek -60 KPX W Aring -60 KPX W Atilde -60 KPX W O -25 KPX W Oacute -25 KPX W Ocircumflex -25 KPX W Odieresis -25 KPX W Ograve -25 KPX W Ohungarumlaut -25 KPX W Omacron -25 KPX W Oslash -25 KPX W Otilde -25 KPX W a -92 KPX W aacute -92 KPX W abreve -92 KPX W acircumflex -92 KPX W adieresis -92 KPX W agrave -92 KPX W amacron -92 KPX W aogonek -92 KPX W aring -92 KPX W atilde -92 KPX W colon -65 KPX W comma -92 KPX W e -92 KPX W eacute -92 KPX W ecaron -92 KPX W ecircumflex -92 KPX W edieresis -52 KPX W edotaccent -92 KPX W egrave -52 KPX W emacron -52 KPX W eogonek -92 KPX W hyphen -37 KPX W i -55 KPX W iacute -55 KPX W iogonek -55 KPX W o -92 KPX W oacute -92 KPX W ocircumflex -92 KPX W odieresis -92 KPX W ograve -92 KPX W ohungarumlaut -92 KPX W omacron -92 KPX W oslash -92 KPX W otilde -92 KPX W period -92 KPX W semicolon -65 KPX W u -55 KPX W uacute -55 KPX W ucircumflex -55 KPX W udieresis -55 KPX W ugrave -55 KPX W uhungarumlaut -55 KPX W umacron -55 KPX W uogonek -55 KPX W uring -55 KPX W y -70 KPX W yacute -70 KPX W ydieresis -70 KPX Y A -50 KPX Y Aacute -50 KPX Y Abreve -50 KPX Y Acircumflex -50 KPX Y Adieresis -50 KPX Y Agrave -50 KPX Y Amacron -50 KPX Y Aogonek -50 KPX Y Aring -50 KPX Y Atilde -50 KPX Y O -15 KPX Y Oacute -15 KPX Y Ocircumflex -15 KPX Y Odieresis -15 KPX Y Ograve -15 KPX Y Ohungarumlaut -15 KPX Y Omacron -15 KPX Y Oslash -15 KPX Y Otilde -15 KPX Y a -92 KPX Y aacute -92 KPX Y abreve -92 KPX Y acircumflex -92 KPX Y adieresis -92 KPX Y agrave -92 KPX Y amacron -92 KPX Y aogonek -92 KPX Y aring -92 KPX Y atilde -92 KPX Y colon -65 KPX Y comma -92 KPX Y e -92 KPX Y eacute -92 KPX Y ecaron -92 KPX Y ecircumflex -92 KPX Y edieresis -52 KPX Y edotaccent -92 KPX Y egrave -52 KPX Y emacron -52 KPX Y eogonek -92 KPX Y hyphen -74 KPX Y i -74 KPX Y iacute -74 KPX Y icircumflex -34 KPX Y idieresis -34 KPX Y igrave -34 KPX Y imacron -34 KPX Y iogonek -74 KPX Y o -92 KPX Y oacute -92 KPX Y ocircumflex -92 KPX Y odieresis -92 KPX Y ograve -92 KPX Y ohungarumlaut -92 KPX Y omacron -92 KPX Y oslash -92 KPX Y otilde -92 KPX Y period -92 KPX Y semicolon -65 KPX Y u -92 KPX Y uacute -92 KPX Y ucircumflex -92 KPX Y udieresis -92 KPX Y ugrave -92 KPX Y uhungarumlaut -92 KPX Y umacron -92 KPX Y uogonek -92 KPX Y uring -92 KPX Yacute A -50 KPX Yacute Aacute -50 KPX Yacute Abreve -50 KPX Yacute Acircumflex -50 KPX Yacute Adieresis -50 KPX Yacute Agrave -50 KPX Yacute Amacron -50 KPX Yacute Aogonek -50 KPX Yacute Aring -50 KPX Yacute Atilde -50 KPX Yacute O -15 KPX Yacute Oacute -15 KPX Yacute Ocircumflex -15 KPX Yacute Odieresis -15 KPX Yacute Ograve -15 KPX Yacute Ohungarumlaut -15 KPX Yacute Omacron -15 KPX Yacute Oslash -15 KPX Yacute Otilde -15 KPX Yacute a -92 KPX Yacute aacute -92 KPX Yacute abreve -92 KPX Yacute acircumflex -92 KPX Yacute adieresis -92 KPX Yacute agrave -92 KPX Yacute amacron -92 KPX Yacute aogonek -92 KPX Yacute aring -92 KPX Yacute atilde -92 KPX Yacute colon -65 KPX Yacute comma -92 KPX Yacute e -92 KPX Yacute eacute -92 KPX Yacute ecaron -92 KPX Yacute ecircumflex -92 KPX Yacute edieresis -52 KPX Yacute edotaccent -92 KPX Yacute egrave -52 KPX Yacute emacron -52 KPX Yacute eogonek -92 KPX Yacute hyphen -74 KPX Yacute i -74 KPX Yacute iacute -74 KPX Yacute icircumflex -34 KPX Yacute idieresis -34 KPX Yacute igrave -34 KPX Yacute imacron -34 KPX Yacute iogonek -74 KPX Yacute o -92 KPX Yacute oacute -92 KPX Yacute ocircumflex -92 KPX Yacute odieresis -92 KPX Yacute ograve -92 KPX Yacute ohungarumlaut -92 KPX Yacute omacron -92 KPX Yacute oslash -92 KPX Yacute otilde -92 KPX Yacute period -92 KPX Yacute semicolon -65 KPX Yacute u -92 KPX Yacute uacute -92 KPX Yacute ucircumflex -92 KPX Yacute udieresis -92 KPX Yacute ugrave -92 KPX Yacute uhungarumlaut -92 KPX Yacute umacron -92 KPX Yacute uogonek -92 KPX Yacute uring -92 KPX Ydieresis A -50 KPX Ydieresis Aacute -50 KPX Ydieresis Abreve -50 KPX Ydieresis Acircumflex -50 KPX Ydieresis Adieresis -50 KPX Ydieresis Agrave -50 KPX Ydieresis Amacron -50 KPX Ydieresis Aogonek -50 KPX Ydieresis Aring -50 KPX Ydieresis Atilde -50 KPX Ydieresis O -15 KPX Ydieresis Oacute -15 KPX Ydieresis Ocircumflex -15 KPX Ydieresis Odieresis -15 KPX Ydieresis Ograve -15 KPX Ydieresis Ohungarumlaut -15 KPX Ydieresis Omacron -15 KPX Ydieresis Oslash -15 KPX Ydieresis Otilde -15 KPX Ydieresis a -92 KPX Ydieresis aacute -92 KPX Ydieresis abreve -92 KPX Ydieresis acircumflex -92 KPX Ydieresis adieresis -92 KPX Ydieresis agrave -92 KPX Ydieresis amacron -92 KPX Ydieresis aogonek -92 KPX Ydieresis aring -92 KPX Ydieresis atilde -92 KPX Ydieresis colon -65 KPX Ydieresis comma -92 KPX Ydieresis e -92 KPX Ydieresis eacute -92 KPX Ydieresis ecaron -92 KPX Ydieresis ecircumflex -92 KPX Ydieresis edieresis -52 KPX Ydieresis edotaccent -92 KPX Ydieresis egrave -52 KPX Ydieresis emacron -52 KPX Ydieresis eogonek -92 KPX Ydieresis hyphen -74 KPX Ydieresis i -74 KPX Ydieresis iacute -74 KPX Ydieresis icircumflex -34 KPX Ydieresis idieresis -34 KPX Ydieresis igrave -34 KPX Ydieresis imacron -34 KPX Ydieresis iogonek -74 KPX Ydieresis o -92 KPX Ydieresis oacute -92 KPX Ydieresis ocircumflex -92 KPX Ydieresis odieresis -92 KPX Ydieresis ograve -92 KPX Ydieresis ohungarumlaut -92 KPX Ydieresis omacron -92 KPX Ydieresis oslash -92 KPX Ydieresis otilde -92 KPX Ydieresis period -92 KPX Ydieresis semicolon -65 KPX Ydieresis u -92 KPX Ydieresis uacute -92 KPX Ydieresis ucircumflex -92 KPX Ydieresis udieresis -92 KPX Ydieresis ugrave -92 KPX Ydieresis uhungarumlaut -92 KPX Ydieresis umacron -92 KPX Ydieresis uogonek -92 KPX Ydieresis uring -92 KPX a g -10 KPX a gbreve -10 KPX a gcommaaccent -10 KPX aacute g -10 KPX aacute gbreve -10 KPX aacute gcommaaccent -10 KPX abreve g -10 KPX abreve gbreve -10 KPX abreve gcommaaccent -10 KPX acircumflex g -10 KPX acircumflex gbreve -10 KPX acircumflex gcommaaccent -10 KPX adieresis g -10 KPX adieresis gbreve -10 KPX adieresis gcommaaccent -10 KPX agrave g -10 KPX agrave gbreve -10 KPX agrave gcommaaccent -10 KPX amacron g -10 KPX amacron gbreve -10 KPX amacron gcommaaccent -10 KPX aogonek g -10 KPX aogonek gbreve -10 KPX aogonek gcommaaccent -10 KPX aring g -10 KPX aring gbreve -10 KPX aring gcommaaccent -10 KPX atilde g -10 KPX atilde gbreve -10 KPX atilde gcommaaccent -10 KPX b period -40 KPX b u -20 KPX b uacute -20 KPX b ucircumflex -20 KPX b udieresis -20 KPX b ugrave -20 KPX b uhungarumlaut -20 KPX b umacron -20 KPX b uogonek -20 KPX b uring -20 KPX c h -15 KPX c k -20 KPX c kcommaaccent -20 KPX cacute h -15 KPX cacute k -20 KPX cacute kcommaaccent -20 KPX ccaron h -15 KPX ccaron k -20 KPX ccaron kcommaaccent -20 KPX ccedilla h -15 KPX ccedilla k -20 KPX ccedilla kcommaaccent -20 KPX comma quotedblright -140 KPX comma quoteright -140 KPX e comma -10 KPX e g -40 KPX e gbreve -40 KPX e gcommaaccent -40 KPX e period -15 KPX e v -15 KPX e w -15 KPX e x -20 KPX e y -30 KPX e yacute -30 KPX e ydieresis -30 KPX eacute comma -10 KPX eacute g -40 KPX eacute gbreve -40 KPX eacute gcommaaccent -40 KPX eacute period -15 KPX eacute v -15 KPX eacute w -15 KPX eacute x -20 KPX eacute y -30 KPX eacute yacute -30 KPX eacute ydieresis -30 KPX ecaron comma -10 KPX ecaron g -40 KPX ecaron gbreve -40 KPX ecaron gcommaaccent -40 KPX ecaron period -15 KPX ecaron v -15 KPX ecaron w -15 KPX ecaron x -20 KPX ecaron y -30 KPX ecaron yacute -30 KPX ecaron ydieresis -30 KPX ecircumflex comma -10 KPX ecircumflex g -40 KPX ecircumflex gbreve -40 KPX ecircumflex gcommaaccent -40 KPX ecircumflex period -15 KPX ecircumflex v -15 KPX ecircumflex w -15 KPX ecircumflex x -20 KPX ecircumflex y -30 KPX ecircumflex yacute -30 KPX ecircumflex ydieresis -30 KPX edieresis comma -10 KPX edieresis g -40 KPX edieresis gbreve -40 KPX edieresis gcommaaccent -40 KPX edieresis period -15 KPX edieresis v -15 KPX edieresis w -15 KPX edieresis x -20 KPX edieresis y -30 KPX edieresis yacute -30 KPX edieresis ydieresis -30 KPX edotaccent comma -10 KPX edotaccent g -40 KPX edotaccent gbreve -40 KPX edotaccent gcommaaccent -40 KPX edotaccent period -15 KPX edotaccent v -15 KPX edotaccent w -15 KPX edotaccent x -20 KPX edotaccent y -30 KPX edotaccent yacute -30 KPX edotaccent ydieresis -30 KPX egrave comma -10 KPX egrave g -40 KPX egrave gbreve -40 KPX egrave gcommaaccent -40 KPX egrave period -15 KPX egrave v -15 KPX egrave w -15 KPX egrave x -20 KPX egrave y -30 KPX egrave yacute -30 KPX egrave ydieresis -30 KPX emacron comma -10 KPX emacron g -40 KPX emacron gbreve -40 KPX emacron gcommaaccent -40 KPX emacron period -15 KPX emacron v -15 KPX emacron w -15 KPX emacron x -20 KPX emacron y -30 KPX emacron yacute -30 KPX emacron ydieresis -30 KPX eogonek comma -10 KPX eogonek g -40 KPX eogonek gbreve -40 KPX eogonek gcommaaccent -40 KPX eogonek period -15 KPX eogonek v -15 KPX eogonek w -15 KPX eogonek x -20 KPX eogonek y -30 KPX eogonek yacute -30 KPX eogonek ydieresis -30 KPX f comma -10 KPX f dotlessi -60 KPX f f -18 KPX f i -20 KPX f iogonek -20 KPX f period -15 KPX f quoteright 92 KPX g comma -10 KPX g e -10 KPX g eacute -10 KPX g ecaron -10 KPX g ecircumflex -10 KPX g edieresis -10 KPX g edotaccent -10 KPX g egrave -10 KPX g emacron -10 KPX g eogonek -10 KPX g g -10 KPX g gbreve -10 KPX g gcommaaccent -10 KPX g period -15 KPX gbreve comma -10 KPX gbreve e -10 KPX gbreve eacute -10 KPX gbreve ecaron -10 KPX gbreve ecircumflex -10 KPX gbreve edieresis -10 KPX gbreve edotaccent -10 KPX gbreve egrave -10 KPX gbreve emacron -10 KPX gbreve eogonek -10 KPX gbreve g -10 KPX gbreve gbreve -10 KPX gbreve gcommaaccent -10 KPX gbreve period -15 KPX gcommaaccent comma -10 KPX gcommaaccent e -10 KPX gcommaaccent eacute -10 KPX gcommaaccent ecaron -10 KPX gcommaaccent ecircumflex -10 KPX gcommaaccent edieresis -10 KPX gcommaaccent edotaccent -10 KPX gcommaaccent egrave -10 KPX gcommaaccent emacron -10 KPX gcommaaccent eogonek -10 KPX gcommaaccent g -10 KPX gcommaaccent gbreve -10 KPX gcommaaccent gcommaaccent -10 KPX gcommaaccent period -15 KPX k e -10 KPX k eacute -10 KPX k ecaron -10 KPX k ecircumflex -10 KPX k edieresis -10 KPX k edotaccent -10 KPX k egrave -10 KPX k emacron -10 KPX k eogonek -10 KPX k o -10 KPX k oacute -10 KPX k ocircumflex -10 KPX k odieresis -10 KPX k ograve -10 KPX k ohungarumlaut -10 KPX k omacron -10 KPX k oslash -10 KPX k otilde -10 KPX k y -10 KPX k yacute -10 KPX k ydieresis -10 KPX kcommaaccent e -10 KPX kcommaaccent eacute -10 KPX kcommaaccent ecaron -10 KPX kcommaaccent ecircumflex -10 KPX kcommaaccent edieresis -10 KPX kcommaaccent edotaccent -10 KPX kcommaaccent egrave -10 KPX kcommaaccent emacron -10 KPX kcommaaccent eogonek -10 KPX kcommaaccent o -10 KPX kcommaaccent oacute -10 KPX kcommaaccent ocircumflex -10 KPX kcommaaccent odieresis -10 KPX kcommaaccent ograve -10 KPX kcommaaccent ohungarumlaut -10 KPX kcommaaccent omacron -10 KPX kcommaaccent oslash -10 KPX kcommaaccent otilde -10 KPX kcommaaccent y -10 KPX kcommaaccent yacute -10 KPX kcommaaccent ydieresis -10 KPX n v -40 KPX nacute v -40 KPX ncaron v -40 KPX ncommaaccent v -40 KPX ntilde v -40 KPX o g -10 KPX o gbreve -10 KPX o gcommaaccent -10 KPX o v -10 KPX oacute g -10 KPX oacute gbreve -10 KPX oacute gcommaaccent -10 KPX oacute v -10 KPX ocircumflex g -10 KPX ocircumflex gbreve -10 KPX ocircumflex gcommaaccent -10 KPX ocircumflex v -10 KPX odieresis g -10 KPX odieresis gbreve -10 KPX odieresis gcommaaccent -10 KPX odieresis v -10 KPX ograve g -10 KPX ograve gbreve -10 KPX ograve gcommaaccent -10 KPX ograve v -10 KPX ohungarumlaut g -10 KPX ohungarumlaut gbreve -10 KPX ohungarumlaut gcommaaccent -10 KPX ohungarumlaut v -10 KPX omacron g -10 KPX omacron gbreve -10 KPX omacron gcommaaccent -10 KPX omacron v -10 KPX oslash g -10 KPX oslash gbreve -10 KPX oslash gcommaaccent -10 KPX oslash v -10 KPX otilde g -10 KPX otilde gbreve -10 KPX otilde gcommaaccent -10 KPX otilde v -10 KPX period quotedblright -140 KPX period quoteright -140 KPX quoteleft quoteleft -111 KPX quoteright d -25 KPX quoteright dcroat -25 KPX quoteright quoteright -111 KPX quoteright r -25 KPX quoteright racute -25 KPX quoteright rcaron -25 KPX quoteright rcommaaccent -25 KPX quoteright s -40 KPX quoteright sacute -40 KPX quoteright scaron -40 KPX quoteright scedilla -40 KPX quoteright scommaaccent -40 KPX quoteright space -111 KPX quoteright t -30 KPX quoteright tcommaaccent -30 KPX quoteright v -10 KPX r a -15 KPX r aacute -15 KPX r abreve -15 KPX r acircumflex -15 KPX r adieresis -15 KPX r agrave -15 KPX r amacron -15 KPX r aogonek -15 KPX r aring -15 KPX r atilde -15 KPX r c -37 KPX r cacute -37 KPX r ccaron -37 KPX r ccedilla -37 KPX r comma -111 KPX r d -37 KPX r dcroat -37 KPX r e -37 KPX r eacute -37 KPX r ecaron -37 KPX r ecircumflex -37 KPX r edieresis -37 KPX r edotaccent -37 KPX r egrave -37 KPX r emacron -37 KPX r eogonek -37 KPX r g -37 KPX r gbreve -37 KPX r gcommaaccent -37 KPX r hyphen -20 KPX r o -45 KPX r oacute -45 KPX r ocircumflex -45 KPX r odieresis -45 KPX r ograve -45 KPX r ohungarumlaut -45 KPX r omacron -45 KPX r oslash -45 KPX r otilde -45 KPX r period -111 KPX r q -37 KPX r s -10 KPX r sacute -10 KPX r scaron -10 KPX r scedilla -10 KPX r scommaaccent -10 KPX racute a -15 KPX racute aacute -15 KPX racute abreve -15 KPX racute acircumflex -15 KPX racute adieresis -15 KPX racute agrave -15 KPX racute amacron -15 KPX racute aogonek -15 KPX racute aring -15 KPX racute atilde -15 KPX racute c -37 KPX racute cacute -37 KPX racute ccaron -37 KPX racute ccedilla -37 KPX racute comma -111 KPX racute d -37 KPX racute dcroat -37 KPX racute e -37 KPX racute eacute -37 KPX racute ecaron -37 KPX racute ecircumflex -37 KPX racute edieresis -37 KPX racute edotaccent -37 KPX racute egrave -37 KPX racute emacron -37 KPX racute eogonek -37 KPX racute g -37 KPX racute gbreve -37 KPX racute gcommaaccent -37 KPX racute hyphen -20 KPX racute o -45 KPX racute oacute -45 KPX racute ocircumflex -45 KPX racute odieresis -45 KPX racute ograve -45 KPX racute ohungarumlaut -45 KPX racute omacron -45 KPX racute oslash -45 KPX racute otilde -45 KPX racute period -111 KPX racute q -37 KPX racute s -10 KPX racute sacute -10 KPX racute scaron -10 KPX racute scedilla -10 KPX racute scommaaccent -10 KPX rcaron a -15 KPX rcaron aacute -15 KPX rcaron abreve -15 KPX rcaron acircumflex -15 KPX rcaron adieresis -15 KPX rcaron agrave -15 KPX rcaron amacron -15 KPX rcaron aogonek -15 KPX rcaron aring -15 KPX rcaron atilde -15 KPX rcaron c -37 KPX rcaron cacute -37 KPX rcaron ccaron -37 KPX rcaron ccedilla -37 KPX rcaron comma -111 KPX rcaron d -37 KPX rcaron dcroat -37 KPX rcaron e -37 KPX rcaron eacute -37 KPX rcaron ecaron -37 KPX rcaron ecircumflex -37 KPX rcaron edieresis -37 KPX rcaron edotaccent -37 KPX rcaron egrave -37 KPX rcaron emacron -37 KPX rcaron eogonek -37 KPX rcaron g -37 KPX rcaron gbreve -37 KPX rcaron gcommaaccent -37 KPX rcaron hyphen -20 KPX rcaron o -45 KPX rcaron oacute -45 KPX rcaron ocircumflex -45 KPX rcaron odieresis -45 KPX rcaron ograve -45 KPX rcaron ohungarumlaut -45 KPX rcaron omacron -45 KPX rcaron oslash -45 KPX rcaron otilde -45 KPX rcaron period -111 KPX rcaron q -37 KPX rcaron s -10 KPX rcaron sacute -10 KPX rcaron scaron -10 KPX rcaron scedilla -10 KPX rcaron scommaaccent -10 KPX rcommaaccent a -15 KPX rcommaaccent aacute -15 KPX rcommaaccent abreve -15 KPX rcommaaccent acircumflex -15 KPX rcommaaccent adieresis -15 KPX rcommaaccent agrave -15 KPX rcommaaccent amacron -15 KPX rcommaaccent aogonek -15 KPX rcommaaccent aring -15 KPX rcommaaccent atilde -15 KPX rcommaaccent c -37 KPX rcommaaccent cacute -37 KPX rcommaaccent ccaron -37 KPX rcommaaccent ccedilla -37 KPX rcommaaccent comma -111 KPX rcommaaccent d -37 KPX rcommaaccent dcroat -37 KPX rcommaaccent e -37 KPX rcommaaccent eacute -37 KPX rcommaaccent ecaron -37 KPX rcommaaccent ecircumflex -37 KPX rcommaaccent edieresis -37 KPX rcommaaccent edotaccent -37 KPX rcommaaccent egrave -37 KPX rcommaaccent emacron -37 KPX rcommaaccent eogonek -37 KPX rcommaaccent g -37 KPX rcommaaccent gbreve -37 KPX rcommaaccent gcommaaccent -37 KPX rcommaaccent hyphen -20 KPX rcommaaccent o -45 KPX rcommaaccent oacute -45 KPX rcommaaccent ocircumflex -45 KPX rcommaaccent odieresis -45 KPX rcommaaccent ograve -45 KPX rcommaaccent ohungarumlaut -45 KPX rcommaaccent omacron -45 KPX rcommaaccent oslash -45 KPX rcommaaccent otilde -45 KPX rcommaaccent period -111 KPX rcommaaccent q -37 KPX rcommaaccent s -10 KPX rcommaaccent sacute -10 KPX rcommaaccent scaron -10 KPX rcommaaccent scedilla -10 KPX rcommaaccent scommaaccent -10 KPX space A -18 KPX space Aacute -18 KPX space Abreve -18 KPX space Acircumflex -18 KPX space Adieresis -18 KPX space Agrave -18 KPX space Amacron -18 KPX space Aogonek -18 KPX space Aring -18 KPX space Atilde -18 KPX space T -18 KPX space Tcaron -18 KPX space Tcommaaccent -18 KPX space V -35 KPX space W -40 KPX space Y -75 KPX space Yacute -75 KPX space Ydieresis -75 KPX v comma -74 KPX v period -74 KPX w comma -74 KPX w period -74 KPX y comma -55 KPX y period -55 KPX yacute comma -55 KPX yacute period -55 KPX ydieresis comma -55 KPX ydieresis period -55 EndKernPairs EndKernData EndFontMetrics gle-graphics-4.2.4c/src/fonts/Adobe-Core35_AFMs-314/Helvetica-NarrowBold.afm0000664000000000000000000020710311405446017024541 0ustar rootrootStartFontMetrics 4.1 Comment Copyright (c) 1985, 1987, 1989, 1990, 1997 Adobe Systems Incorporated. All Rights Reserved. Comment Creation Date: Fri May 2 16:55:34 1997 Comment UniqueID 43181 Comment VMusage 14482 68586 FontName Helvetica-Narrow-Bold FullName Helvetica Narrow Bold FamilyName Helvetica Weight Bold ItalicAngle 0 IsFixedPitch false FontBBox -139 -228 822 962 UnderlinePosition -100 UnderlineThickness 50 Version 002.000 Notice Copyright (c) 1985, 1987, 1989, 1990, 1997 Adobe Systems Incorporated. All Rights Reserved.Helvetica is a trademark of Linotype-Hell AG and/or its subsidiaries. EncodingScheme AdobeStandardEncoding CapHeight 718 XHeight 532 Ascender 718 Descender -207 StdHW 118 StdVW 140 StartCharMetrics 314 C 32 ; WX 228 ; N space ; B 0 0 0 0 ; C 33 ; WX 273 ; N exclam ; B 74 0 200 718 ; C 34 ; WX 389 ; N quotedbl ; B 80 447 308 718 ; C 35 ; WX 456 ; N numbersign ; B 15 0 441 698 ; C 36 ; WX 456 ; N dollar ; B 25 -115 429 775 ; C 37 ; WX 729 ; N percent ; B 23 -19 706 710 ; C 38 ; WX 592 ; N ampersand ; B 44 -19 575 718 ; C 39 ; WX 228 ; N quoteright ; B 57 445 171 718 ; C 40 ; WX 273 ; N parenleft ; B 29 -208 257 734 ; C 41 ; WX 273 ; N parenright ; B 16 -208 244 734 ; C 42 ; WX 319 ; N asterisk ; B 22 387 297 718 ; C 43 ; WX 479 ; N plus ; B 33 0 446 506 ; C 44 ; WX 228 ; N comma ; B 52 -168 175 146 ; C 45 ; WX 273 ; N hyphen ; B 22 215 251 345 ; C 46 ; WX 228 ; N period ; B 52 0 175 146 ; C 47 ; WX 228 ; N slash ; B -27 -19 255 737 ; C 48 ; WX 456 ; N zero ; B 26 -19 430 710 ; C 49 ; WX 456 ; N one ; B 57 0 310 710 ; C 50 ; WX 456 ; N two ; B 21 0 419 710 ; C 51 ; WX 456 ; N three ; B 22 -19 423 710 ; C 52 ; WX 456 ; N four ; B 22 0 431 710 ; C 53 ; WX 456 ; N five ; B 22 -19 423 698 ; C 54 ; WX 456 ; N six ; B 25 -19 426 710 ; C 55 ; WX 456 ; N seven ; B 21 0 433 698 ; C 56 ; WX 456 ; N eight ; B 26 -19 430 710 ; C 57 ; WX 456 ; N nine ; B 25 -19 428 710 ; C 58 ; WX 273 ; N colon ; B 75 0 198 512 ; C 59 ; WX 273 ; N semicolon ; B 75 -168 198 512 ; C 60 ; WX 479 ; N less ; B 31 -8 448 514 ; C 61 ; WX 479 ; N equal ; B 33 87 446 419 ; C 62 ; WX 479 ; N greater ; B 31 -8 448 514 ; C 63 ; WX 501 ; N question ; B 49 0 456 727 ; C 64 ; WX 800 ; N at ; B 97 -19 702 737 ; C 65 ; WX 592 ; N A ; B 16 0 576 718 ; C 66 ; WX 592 ; N B ; B 62 0 549 718 ; C 67 ; WX 592 ; N C ; B 36 -19 561 737 ; C 68 ; WX 592 ; N D ; B 62 0 562 718 ; C 69 ; WX 547 ; N E ; B 62 0 509 718 ; C 70 ; WX 501 ; N F ; B 62 0 481 718 ; C 71 ; WX 638 ; N G ; B 36 -19 585 737 ; C 72 ; WX 592 ; N H ; B 58 0 534 718 ; C 73 ; WX 228 ; N I ; B 52 0 175 718 ; C 74 ; WX 456 ; N J ; B 18 -18 397 718 ; C 75 ; WX 592 ; N K ; B 71 0 592 718 ; C 76 ; WX 501 ; N L ; B 62 0 478 718 ; C 77 ; WX 683 ; N M ; B 57 0 627 718 ; C 78 ; WX 592 ; N N ; B 57 0 536 718 ; C 79 ; WX 638 ; N O ; B 36 -19 602 737 ; C 80 ; WX 547 ; N P ; B 62 0 514 718 ; C 81 ; WX 638 ; N Q ; B 36 -52 604 737 ; C 82 ; WX 592 ; N R ; B 62 0 555 718 ; C 83 ; WX 547 ; N S ; B 32 -19 516 737 ; C 84 ; WX 501 ; N T ; B 11 0 490 718 ; C 85 ; WX 592 ; N U ; B 59 -19 534 718 ; C 86 ; WX 547 ; N V ; B 16 0 531 718 ; C 87 ; WX 774 ; N W ; B 13 0 762 718 ; C 88 ; WX 547 ; N X ; B 11 0 535 718 ; C 89 ; WX 547 ; N Y ; B 12 0 535 718 ; C 90 ; WX 501 ; N Z ; B 21 0 481 718 ; C 91 ; WX 273 ; N bracketleft ; B 52 -196 253 722 ; C 92 ; WX 228 ; N backslash ; B -27 -19 255 737 ; C 93 ; WX 273 ; N bracketright ; B 20 -196 221 722 ; C 94 ; WX 479 ; N asciicircum ; B 51 323 428 698 ; C 95 ; WX 456 ; N underscore ; B 0 -125 456 -75 ; C 96 ; WX 228 ; N quoteleft ; B 57 454 171 727 ; C 97 ; WX 456 ; N a ; B 24 -14 432 546 ; C 98 ; WX 501 ; N b ; B 50 -14 474 718 ; C 99 ; WX 456 ; N c ; B 28 -14 430 546 ; C 100 ; WX 501 ; N d ; B 28 -14 452 718 ; C 101 ; WX 456 ; N e ; B 19 -14 433 546 ; C 102 ; WX 273 ; N f ; B 8 0 261 727 ; L i fi ; L l fl ; C 103 ; WX 501 ; N g ; B 33 -217 453 546 ; C 104 ; WX 501 ; N h ; B 53 0 448 718 ; C 105 ; WX 228 ; N i ; B 57 0 171 725 ; C 106 ; WX 228 ; N j ; B 2 -214 171 725 ; C 107 ; WX 456 ; N k ; B 57 0 461 718 ; C 108 ; WX 228 ; N l ; B 57 0 171 718 ; C 109 ; WX 729 ; N m ; B 52 0 677 546 ; C 110 ; WX 501 ; N n ; B 53 0 448 546 ; C 111 ; WX 501 ; N o ; B 28 -14 474 546 ; C 112 ; WX 501 ; N p ; B 51 -207 474 546 ; C 113 ; WX 501 ; N q ; B 28 -207 453 546 ; C 114 ; WX 319 ; N r ; B 52 0 306 546 ; C 115 ; WX 456 ; N s ; B 25 -14 426 546 ; C 116 ; WX 273 ; N t ; B 8 -6 253 676 ; C 117 ; WX 501 ; N u ; B 54 -14 447 532 ; C 118 ; WX 456 ; N v ; B 11 0 445 532 ; C 119 ; WX 638 ; N w ; B 8 0 631 532 ; C 120 ; WX 456 ; N x ; B 12 0 444 532 ; C 121 ; WX 456 ; N y ; B 8 -214 442 532 ; C 122 ; WX 410 ; N z ; B 16 0 394 532 ; C 123 ; WX 319 ; N braceleft ; B 39 -196 299 722 ; C 124 ; WX 230 ; N bar ; B 69 -225 161 775 ; C 125 ; WX 319 ; N braceright ; B 20 -196 280 722 ; C 126 ; WX 479 ; N asciitilde ; B 50 163 429 343 ; C 161 ; WX 273 ; N exclamdown ; B 74 -186 200 532 ; C 162 ; WX 456 ; N cent ; B 28 -118 430 628 ; C 163 ; WX 456 ; N sterling ; B 23 -16 444 718 ; C 164 ; WX 137 ; N fraction ; B -139 -19 276 710 ; C 165 ; WX 456 ; N yen ; B -7 0 463 698 ; C 166 ; WX 456 ; N florin ; B -8 -210 423 737 ; C 167 ; WX 456 ; N section ; B 28 -184 428 727 ; C 168 ; WX 456 ; N currency ; B -2 76 458 636 ; C 169 ; WX 195 ; N quotesingle ; B 57 447 138 718 ; C 170 ; WX 410 ; N quotedblleft ; B 52 454 358 727 ; C 171 ; WX 456 ; N guillemotleft ; B 72 76 384 484 ; C 172 ; WX 273 ; N guilsinglleft ; B 68 76 205 484 ; C 173 ; WX 273 ; N guilsinglright ; B 68 76 205 484 ; C 174 ; WX 501 ; N fi ; B 8 0 444 727 ; C 175 ; WX 501 ; N fl ; B 8 0 444 727 ; C 177 ; WX 456 ; N endash ; B 0 227 456 333 ; C 178 ; WX 456 ; N dagger ; B 30 -171 426 718 ; C 179 ; WX 456 ; N daggerdbl ; B 30 -171 426 718 ; C 180 ; WX 228 ; N periodcentered ; B 48 172 180 334 ; C 182 ; WX 456 ; N paragraph ; B -7 -191 442 700 ; C 183 ; WX 287 ; N bullet ; B 8 194 279 524 ; C 184 ; WX 228 ; N quotesinglbase ; B 57 -146 171 127 ; C 185 ; WX 410 ; N quotedblbase ; B 52 -146 358 127 ; C 186 ; WX 410 ; N quotedblright ; B 52 445 358 718 ; C 187 ; WX 456 ; N guillemotright ; B 72 76 384 484 ; C 188 ; WX 820 ; N ellipsis ; B 75 0 745 146 ; C 189 ; WX 820 ; N perthousand ; B -2 -19 822 710 ; C 191 ; WX 501 ; N questiondown ; B 45 -195 452 532 ; C 193 ; WX 273 ; N grave ; B -19 604 185 750 ; C 194 ; WX 273 ; N acute ; B 89 604 292 750 ; C 195 ; WX 273 ; N circumflex ; B -8 604 281 750 ; C 196 ; WX 273 ; N tilde ; B -14 610 287 737 ; C 197 ; WX 273 ; N macron ; B -5 604 278 678 ; C 198 ; WX 273 ; N breve ; B -2 604 275 750 ; C 199 ; WX 273 ; N dotaccent ; B 85 614 189 729 ; C 200 ; WX 273 ; N dieresis ; B 5 614 268 729 ; C 202 ; WX 273 ; N ring ; B 48 568 226 776 ; C 203 ; WX 273 ; N cedilla ; B 5 -228 201 0 ; C 205 ; WX 273 ; N hungarumlaut ; B 7 604 399 750 ; C 206 ; WX 273 ; N ogonek ; B 58 -228 249 0 ; C 207 ; WX 273 ; N caron ; B -8 604 281 750 ; C 208 ; WX 820 ; N emdash ; B 0 227 820 333 ; C 225 ; WX 820 ; N AE ; B 4 0 782 718 ; C 227 ; WX 303 ; N ordfeminine ; B 18 401 285 737 ; C 232 ; WX 501 ; N Lslash ; B -16 0 478 718 ; C 233 ; WX 638 ; N Oslash ; B 27 -27 610 745 ; C 234 ; WX 820 ; N OE ; B 30 -19 788 737 ; C 235 ; WX 299 ; N ordmasculine ; B 5 401 295 737 ; C 241 ; WX 729 ; N ae ; B 24 -14 704 546 ; C 245 ; WX 228 ; N dotlessi ; B 57 0 171 532 ; C 248 ; WX 228 ; N lslash ; B -15 0 243 718 ; C 249 ; WX 501 ; N oslash ; B 18 -29 483 560 ; C 250 ; WX 774 ; N oe ; B 28 -14 748 546 ; C 251 ; WX 501 ; N germandbls ; B 57 -14 475 731 ; C -1 ; WX 228 ; N Idieresis ; B -17 0 246 915 ; C -1 ; WX 456 ; N eacute ; B 19 -14 433 750 ; C -1 ; WX 456 ; N abreve ; B 24 -14 432 750 ; C -1 ; WX 501 ; N uhungarumlaut ; B 54 -14 513 750 ; C -1 ; WX 456 ; N ecaron ; B 19 -14 433 750 ; C -1 ; WX 547 ; N Ydieresis ; B 12 0 535 915 ; C -1 ; WX 479 ; N divide ; B 33 -42 446 548 ; C -1 ; WX 547 ; N Yacute ; B 12 0 535 936 ; C -1 ; WX 592 ; N Acircumflex ; B 16 0 576 936 ; C -1 ; WX 456 ; N aacute ; B 24 -14 432 750 ; C -1 ; WX 592 ; N Ucircumflex ; B 59 -19 534 936 ; C -1 ; WX 456 ; N yacute ; B 8 -214 442 750 ; C -1 ; WX 456 ; N scommaaccent ; B 25 -228 426 546 ; C -1 ; WX 456 ; N ecircumflex ; B 19 -14 433 750 ; C -1 ; WX 592 ; N Uring ; B 59 -19 534 962 ; C -1 ; WX 592 ; N Udieresis ; B 59 -19 534 915 ; C -1 ; WX 456 ; N aogonek ; B 24 -224 447 546 ; C -1 ; WX 592 ; N Uacute ; B 59 -19 534 936 ; C -1 ; WX 501 ; N uogonek ; B 54 -228 447 532 ; C -1 ; WX 547 ; N Edieresis ; B 62 0 509 915 ; C -1 ; WX 592 ; N Dcroat ; B -4 0 562 718 ; C -1 ; WX 205 ; N commaaccent ; B 52 -228 163 -50 ; C -1 ; WX 604 ; N copyright ; B -9 -19 614 737 ; C -1 ; WX 547 ; N Emacron ; B 62 0 509 864 ; C -1 ; WX 456 ; N ccaron ; B 28 -14 430 750 ; C -1 ; WX 456 ; N aring ; B 24 -14 432 776 ; C -1 ; WX 592 ; N Ncommaaccent ; B 57 -228 536 718 ; C -1 ; WX 228 ; N lacute ; B 57 0 270 936 ; C -1 ; WX 456 ; N agrave ; B 24 -14 432 750 ; C -1 ; WX 501 ; N Tcommaaccent ; B 11 -228 490 718 ; C -1 ; WX 592 ; N Cacute ; B 36 -19 561 936 ; C -1 ; WX 456 ; N atilde ; B 24 -14 432 737 ; C -1 ; WX 547 ; N Edotaccent ; B 62 0 509 915 ; C -1 ; WX 456 ; N scaron ; B 25 -14 426 750 ; C -1 ; WX 456 ; N scedilla ; B 25 -228 426 546 ; C -1 ; WX 228 ; N iacute ; B 57 0 270 750 ; C -1 ; WX 405 ; N lozenge ; B 8 0 397 745 ; C -1 ; WX 592 ; N Rcaron ; B 62 0 555 936 ; C -1 ; WX 638 ; N Gcommaaccent ; B 36 -228 585 737 ; C -1 ; WX 501 ; N ucircumflex ; B 54 -14 447 750 ; C -1 ; WX 456 ; N acircumflex ; B 24 -14 432 750 ; C -1 ; WX 592 ; N Amacron ; B 16 0 576 864 ; C -1 ; WX 319 ; N rcaron ; B 15 0 306 750 ; C -1 ; WX 456 ; N ccedilla ; B 28 -228 430 546 ; C -1 ; WX 501 ; N Zdotaccent ; B 21 0 481 915 ; C -1 ; WX 547 ; N Thorn ; B 62 0 514 718 ; C -1 ; WX 638 ; N Omacron ; B 36 -19 602 864 ; C -1 ; WX 592 ; N Racute ; B 62 0 555 936 ; C -1 ; WX 547 ; N Sacute ; B 32 -19 516 936 ; C -1 ; WX 609 ; N dcaron ; B 28 -14 615 718 ; C -1 ; WX 592 ; N Umacron ; B 59 -19 534 864 ; C -1 ; WX 501 ; N uring ; B 54 -14 447 776 ; C -1 ; WX 273 ; N threesuperior ; B 7 271 267 710 ; C -1 ; WX 638 ; N Ograve ; B 36 -19 602 936 ; C -1 ; WX 592 ; N Agrave ; B 16 0 576 936 ; C -1 ; WX 592 ; N Abreve ; B 16 0 576 936 ; C -1 ; WX 479 ; N multiply ; B 33 1 447 505 ; C -1 ; WX 501 ; N uacute ; B 54 -14 447 750 ; C -1 ; WX 501 ; N Tcaron ; B 11 0 490 936 ; C -1 ; WX 405 ; N partialdiff ; B 9 -21 405 750 ; C -1 ; WX 456 ; N ydieresis ; B 8 -214 442 729 ; C -1 ; WX 592 ; N Nacute ; B 57 0 536 936 ; C -1 ; WX 228 ; N icircumflex ; B -30 0 259 750 ; C -1 ; WX 547 ; N Ecircumflex ; B 62 0 509 936 ; C -1 ; WX 456 ; N adieresis ; B 24 -14 432 729 ; C -1 ; WX 456 ; N edieresis ; B 19 -14 433 729 ; C -1 ; WX 456 ; N cacute ; B 28 -14 430 750 ; C -1 ; WX 501 ; N nacute ; B 53 0 448 750 ; C -1 ; WX 501 ; N umacron ; B 54 -14 447 678 ; C -1 ; WX 592 ; N Ncaron ; B 57 0 536 936 ; C -1 ; WX 228 ; N Iacute ; B 52 0 270 936 ; C -1 ; WX 479 ; N plusminus ; B 33 0 446 506 ; C -1 ; WX 230 ; N brokenbar ; B 69 -150 161 700 ; C -1 ; WX 604 ; N registered ; B -9 -19 613 737 ; C -1 ; WX 638 ; N Gbreve ; B 36 -19 585 936 ; C -1 ; WX 228 ; N Idotaccent ; B 52 0 175 915 ; C -1 ; WX 492 ; N summation ; B 11 -10 480 706 ; C -1 ; WX 547 ; N Egrave ; B 62 0 509 936 ; C -1 ; WX 319 ; N racute ; B 52 0 315 750 ; C -1 ; WX 501 ; N omacron ; B 28 -14 474 678 ; C -1 ; WX 501 ; N Zacute ; B 21 0 481 936 ; C -1 ; WX 501 ; N Zcaron ; B 21 0 481 936 ; C -1 ; WX 450 ; N greaterequal ; B 21 0 429 704 ; C -1 ; WX 592 ; N Eth ; B -4 0 562 718 ; C -1 ; WX 592 ; N Ccedilla ; B 36 -228 561 737 ; C -1 ; WX 228 ; N lcommaaccent ; B 57 -228 175 718 ; C -1 ; WX 319 ; N tcaron ; B 8 -6 345 878 ; C -1 ; WX 456 ; N eogonek ; B 19 -228 433 546 ; C -1 ; WX 592 ; N Uogonek ; B 59 -228 534 718 ; C -1 ; WX 592 ; N Aacute ; B 16 0 576 936 ; C -1 ; WX 592 ; N Adieresis ; B 16 0 576 915 ; C -1 ; WX 456 ; N egrave ; B 19 -14 433 750 ; C -1 ; WX 410 ; N zacute ; B 16 0 394 750 ; C -1 ; WX 228 ; N iogonek ; B 13 -224 204 725 ; C -1 ; WX 638 ; N Oacute ; B 36 -19 602 936 ; C -1 ; WX 501 ; N oacute ; B 28 -14 474 750 ; C -1 ; WX 456 ; N amacron ; B 24 -14 432 678 ; C -1 ; WX 456 ; N sacute ; B 25 -14 426 750 ; C -1 ; WX 228 ; N idieresis ; B -17 0 246 729 ; C -1 ; WX 638 ; N Ocircumflex ; B 36 -19 602 936 ; C -1 ; WX 592 ; N Ugrave ; B 59 -19 534 936 ; C -1 ; WX 502 ; N Delta ; B 5 0 499 688 ; C -1 ; WX 501 ; N thorn ; B 51 -208 474 718 ; C -1 ; WX 273 ; N twosuperior ; B 7 283 266 710 ; C -1 ; WX 638 ; N Odieresis ; B 36 -19 602 915 ; C -1 ; WX 501 ; N mu ; B 54 -207 447 532 ; C -1 ; WX 228 ; N igrave ; B -41 0 171 750 ; C -1 ; WX 501 ; N ohungarumlaut ; B 28 -14 513 750 ; C -1 ; WX 547 ; N Eogonek ; B 62 -224 524 718 ; C -1 ; WX 501 ; N dcroat ; B 28 -14 533 718 ; C -1 ; WX 684 ; N threequarters ; B 13 -19 655 710 ; C -1 ; WX 547 ; N Scedilla ; B 32 -228 516 737 ; C -1 ; WX 328 ; N lcaron ; B 57 0 335 718 ; C -1 ; WX 592 ; N Kcommaaccent ; B 71 -228 592 718 ; C -1 ; WX 501 ; N Lacute ; B 62 0 478 936 ; C -1 ; WX 820 ; N trademark ; B 36 306 784 718 ; C -1 ; WX 456 ; N edotaccent ; B 19 -14 433 729 ; C -1 ; WX 228 ; N Igrave ; B -41 0 175 936 ; C -1 ; WX 228 ; N Imacron ; B -27 0 256 864 ; C -1 ; WX 501 ; N Lcaron ; B 62 0 478 718 ; C -1 ; WX 684 ; N onehalf ; B 21 -19 651 710 ; C -1 ; WX 450 ; N lessequal ; B 24 0 431 704 ; C -1 ; WX 501 ; N ocircumflex ; B 28 -14 474 750 ; C -1 ; WX 501 ; N ntilde ; B 53 0 448 737 ; C -1 ; WX 592 ; N Uhungarumlaut ; B 59 -19 558 936 ; C -1 ; WX 547 ; N Eacute ; B 62 0 509 936 ; C -1 ; WX 456 ; N emacron ; B 19 -14 433 678 ; C -1 ; WX 501 ; N gbreve ; B 33 -217 453 750 ; C -1 ; WX 684 ; N onequarter ; B 21 -19 628 710 ; C -1 ; WX 547 ; N Scaron ; B 32 -19 516 936 ; C -1 ; WX 547 ; N Scommaaccent ; B 32 -228 516 737 ; C -1 ; WX 638 ; N Ohungarumlaut ; B 36 -19 602 936 ; C -1 ; WX 328 ; N degree ; B 47 426 281 712 ; C -1 ; WX 501 ; N ograve ; B 28 -14 474 750 ; C -1 ; WX 592 ; N Ccaron ; B 36 -19 561 936 ; C -1 ; WX 501 ; N ugrave ; B 54 -14 447 750 ; C -1 ; WX 450 ; N radical ; B 8 -46 420 850 ; C -1 ; WX 592 ; N Dcaron ; B 62 0 562 936 ; C -1 ; WX 319 ; N rcommaaccent ; B 52 -228 306 546 ; C -1 ; WX 592 ; N Ntilde ; B 57 0 536 923 ; C -1 ; WX 501 ; N otilde ; B 28 -14 474 737 ; C -1 ; WX 592 ; N Rcommaaccent ; B 62 -228 555 718 ; C -1 ; WX 501 ; N Lcommaaccent ; B 62 -228 478 718 ; C -1 ; WX 592 ; N Atilde ; B 16 0 576 923 ; C -1 ; WX 592 ; N Aogonek ; B 16 -224 608 718 ; C -1 ; WX 592 ; N Aring ; B 16 0 576 962 ; C -1 ; WX 638 ; N Otilde ; B 36 -19 602 923 ; C -1 ; WX 410 ; N zdotaccent ; B 16 0 394 729 ; C -1 ; WX 547 ; N Ecaron ; B 62 0 509 936 ; C -1 ; WX 228 ; N Iogonek ; B -9 -228 182 718 ; C -1 ; WX 456 ; N kcommaaccent ; B 57 -228 461 718 ; C -1 ; WX 479 ; N minus ; B 33 197 446 309 ; C -1 ; WX 228 ; N Icircumflex ; B -30 0 259 936 ; C -1 ; WX 501 ; N ncaron ; B 53 0 448 750 ; C -1 ; WX 273 ; N tcommaaccent ; B 8 -228 253 676 ; C -1 ; WX 479 ; N logicalnot ; B 33 108 446 419 ; C -1 ; WX 501 ; N odieresis ; B 28 -14 474 729 ; C -1 ; WX 501 ; N udieresis ; B 54 -14 447 729 ; C -1 ; WX 450 ; N notequal ; B 12 -49 443 570 ; C -1 ; WX 501 ; N gcommaaccent ; B 33 -217 453 850 ; C -1 ; WX 501 ; N eth ; B 28 -14 474 737 ; C -1 ; WX 410 ; N zcaron ; B 16 0 394 750 ; C -1 ; WX 501 ; N ncommaaccent ; B 53 -228 448 546 ; C -1 ; WX 273 ; N onesuperior ; B 21 283 194 710 ; C -1 ; WX 228 ; N imacron ; B -7 0 234 678 ; EndCharMetrics StartKernData StartKernPairs 2481 KPX A C -40 KPX A Cacute -40 KPX A Ccaron -40 KPX A Ccedilla -40 KPX A G -50 KPX A Gbreve -50 KPX A Gcommaaccent -50 KPX A O -40 KPX A Oacute -40 KPX A Ocircumflex -40 KPX A Odieresis -40 KPX A Ograve -40 KPX A Ohungarumlaut -40 KPX A Omacron -40 KPX A Oslash -40 KPX A Otilde -40 KPX A Q -40 KPX A T -90 KPX A Tcaron -90 KPX A Tcommaaccent -90 KPX A U -50 KPX A Uacute -50 KPX A Ucircumflex -50 KPX A Udieresis -50 KPX A Ugrave -50 KPX A Uhungarumlaut -50 KPX A Umacron -50 KPX A Uogonek -50 KPX A Uring -50 KPX A V -80 KPX A W -60 KPX A Y -110 KPX A Yacute -110 KPX A Ydieresis -110 KPX A u -30 KPX A uacute -30 KPX A ucircumflex -30 KPX A udieresis -30 KPX A ugrave -30 KPX A uhungarumlaut -30 KPX A umacron -30 KPX A uogonek -30 KPX A uring -30 KPX A v -40 KPX A w -30 KPX A y -30 KPX A yacute -30 KPX A ydieresis -30 KPX Aacute C -40 KPX Aacute Cacute -40 KPX Aacute Ccaron -40 KPX Aacute Ccedilla -40 KPX Aacute G -50 KPX Aacute Gbreve -50 KPX Aacute Gcommaaccent -50 KPX Aacute O -40 KPX Aacute Oacute -40 KPX Aacute Ocircumflex -40 KPX Aacute Odieresis -40 KPX Aacute Ograve -40 KPX Aacute Ohungarumlaut -40 KPX Aacute Omacron -40 KPX Aacute Oslash -40 KPX Aacute Otilde -40 KPX Aacute Q -40 KPX Aacute T -90 KPX Aacute Tcaron -90 KPX Aacute Tcommaaccent -90 KPX Aacute U -50 KPX Aacute Uacute -50 KPX Aacute Ucircumflex -50 KPX Aacute Udieresis -50 KPX Aacute Ugrave -50 KPX Aacute Uhungarumlaut -50 KPX Aacute Umacron -50 KPX Aacute Uogonek -50 KPX Aacute Uring -50 KPX Aacute V -80 KPX Aacute W -60 KPX Aacute Y -110 KPX Aacute Yacute -110 KPX Aacute Ydieresis -110 KPX Aacute u -30 KPX Aacute uacute -30 KPX Aacute ucircumflex -30 KPX Aacute udieresis -30 KPX Aacute ugrave -30 KPX Aacute uhungarumlaut -30 KPX Aacute umacron -30 KPX Aacute uogonek -30 KPX Aacute uring -30 KPX Aacute v -40 KPX Aacute w -30 KPX Aacute y -30 KPX Aacute yacute -30 KPX Aacute ydieresis -30 KPX Abreve C -40 KPX Abreve Cacute -40 KPX Abreve Ccaron -40 KPX Abreve Ccedilla -40 KPX Abreve G -50 KPX Abreve Gbreve -50 KPX Abreve Gcommaaccent -50 KPX Abreve O -40 KPX Abreve Oacute -40 KPX Abreve Ocircumflex -40 KPX Abreve Odieresis -40 KPX Abreve Ograve -40 KPX Abreve Ohungarumlaut -40 KPX Abreve Omacron -40 KPX Abreve Oslash -40 KPX Abreve Otilde -40 KPX Abreve Q -40 KPX Abreve T -90 KPX Abreve Tcaron -90 KPX Abreve Tcommaaccent -90 KPX Abreve U -50 KPX Abreve Uacute -50 KPX Abreve Ucircumflex -50 KPX Abreve Udieresis -50 KPX Abreve Ugrave -50 KPX Abreve Uhungarumlaut -50 KPX Abreve Umacron -50 KPX Abreve Uogonek -50 KPX Abreve Uring -50 KPX Abreve V -80 KPX Abreve W -60 KPX Abreve Y -110 KPX Abreve Yacute -110 KPX Abreve Ydieresis -110 KPX Abreve u -30 KPX Abreve uacute -30 KPX Abreve ucircumflex -30 KPX Abreve udieresis -30 KPX Abreve ugrave -30 KPX Abreve uhungarumlaut -30 KPX Abreve umacron -30 KPX Abreve uogonek -30 KPX Abreve uring -30 KPX Abreve v -40 KPX Abreve w -30 KPX Abreve y -30 KPX Abreve yacute -30 KPX Abreve ydieresis -30 KPX Acircumflex C -40 KPX Acircumflex Cacute -40 KPX Acircumflex Ccaron -40 KPX Acircumflex Ccedilla -40 KPX Acircumflex G -50 KPX Acircumflex Gbreve -50 KPX Acircumflex Gcommaaccent -50 KPX Acircumflex O -40 KPX Acircumflex Oacute -40 KPX Acircumflex Ocircumflex -40 KPX Acircumflex Odieresis -40 KPX Acircumflex Ograve -40 KPX Acircumflex Ohungarumlaut -40 KPX Acircumflex Omacron -40 KPX Acircumflex Oslash -40 KPX Acircumflex Otilde -40 KPX Acircumflex Q -40 KPX Acircumflex T -90 KPX Acircumflex Tcaron -90 KPX Acircumflex Tcommaaccent -90 KPX Acircumflex U -50 KPX Acircumflex Uacute -50 KPX Acircumflex Ucircumflex -50 KPX Acircumflex Udieresis -50 KPX Acircumflex Ugrave -50 KPX Acircumflex Uhungarumlaut -50 KPX Acircumflex Umacron -50 KPX Acircumflex Uogonek -50 KPX Acircumflex Uring -50 KPX Acircumflex V -80 KPX Acircumflex W -60 KPX Acircumflex Y -110 KPX Acircumflex Yacute -110 KPX Acircumflex Ydieresis -110 KPX Acircumflex u -30 KPX Acircumflex uacute -30 KPX Acircumflex ucircumflex -30 KPX Acircumflex udieresis -30 KPX Acircumflex ugrave -30 KPX Acircumflex uhungarumlaut -30 KPX Acircumflex umacron -30 KPX Acircumflex uogonek -30 KPX Acircumflex uring -30 KPX Acircumflex v -40 KPX Acircumflex w -30 KPX Acircumflex y -30 KPX Acircumflex yacute -30 KPX Acircumflex ydieresis -30 KPX Adieresis C -40 KPX Adieresis Cacute -40 KPX Adieresis Ccaron -40 KPX Adieresis Ccedilla -40 KPX Adieresis G -50 KPX Adieresis Gbreve -50 KPX Adieresis Gcommaaccent -50 KPX Adieresis O -40 KPX Adieresis Oacute -40 KPX Adieresis Ocircumflex -40 KPX Adieresis Odieresis -40 KPX Adieresis Ograve -40 KPX Adieresis Ohungarumlaut -40 KPX Adieresis Omacron -40 KPX Adieresis Oslash -40 KPX Adieresis Otilde -40 KPX Adieresis Q -40 KPX Adieresis T -90 KPX Adieresis Tcaron -90 KPX Adieresis Tcommaaccent -90 KPX Adieresis U -50 KPX Adieresis Uacute -50 KPX Adieresis Ucircumflex -50 KPX Adieresis Udieresis -50 KPX Adieresis Ugrave -50 KPX Adieresis Uhungarumlaut -50 KPX Adieresis Umacron -50 KPX Adieresis Uogonek -50 KPX Adieresis Uring -50 KPX Adieresis V -80 KPX Adieresis W -60 KPX Adieresis Y -110 KPX Adieresis Yacute -110 KPX Adieresis Ydieresis -110 KPX Adieresis u -30 KPX Adieresis uacute -30 KPX Adieresis ucircumflex -30 KPX Adieresis udieresis -30 KPX Adieresis ugrave -30 KPX Adieresis uhungarumlaut -30 KPX Adieresis umacron -30 KPX Adieresis uogonek -30 KPX Adieresis uring -30 KPX Adieresis v -40 KPX Adieresis w -30 KPX Adieresis y -30 KPX Adieresis yacute -30 KPX Adieresis ydieresis -30 KPX Agrave C -40 KPX Agrave Cacute -40 KPX Agrave Ccaron -40 KPX Agrave Ccedilla -40 KPX Agrave G -50 KPX Agrave Gbreve -50 KPX Agrave Gcommaaccent -50 KPX Agrave O -40 KPX Agrave Oacute -40 KPX Agrave Ocircumflex -40 KPX Agrave Odieresis -40 KPX Agrave Ograve -40 KPX Agrave Ohungarumlaut -40 KPX Agrave Omacron -40 KPX Agrave Oslash -40 KPX Agrave Otilde -40 KPX Agrave Q -40 KPX Agrave T -90 KPX Agrave Tcaron -90 KPX Agrave Tcommaaccent -90 KPX Agrave U -50 KPX Agrave Uacute -50 KPX Agrave Ucircumflex -50 KPX Agrave Udieresis -50 KPX Agrave Ugrave -50 KPX Agrave Uhungarumlaut -50 KPX Agrave Umacron -50 KPX Agrave Uogonek -50 KPX Agrave Uring -50 KPX Agrave V -80 KPX Agrave W -60 KPX Agrave Y -110 KPX Agrave Yacute -110 KPX Agrave Ydieresis -110 KPX Agrave u -30 KPX Agrave uacute -30 KPX Agrave ucircumflex -30 KPX Agrave udieresis -30 KPX Agrave ugrave -30 KPX Agrave uhungarumlaut -30 KPX Agrave umacron -30 KPX Agrave uogonek -30 KPX Agrave uring -30 KPX Agrave v -40 KPX Agrave w -30 KPX Agrave y -30 KPX Agrave yacute -30 KPX Agrave ydieresis -30 KPX Amacron C -40 KPX Amacron Cacute -40 KPX Amacron Ccaron -40 KPX Amacron Ccedilla -40 KPX Amacron G -50 KPX Amacron Gbreve -50 KPX Amacron Gcommaaccent -50 KPX Amacron O -40 KPX Amacron Oacute -40 KPX Amacron Ocircumflex -40 KPX Amacron Odieresis -40 KPX Amacron Ograve -40 KPX Amacron Ohungarumlaut -40 KPX Amacron Omacron -40 KPX Amacron Oslash -40 KPX Amacron Otilde -40 KPX Amacron Q -40 KPX Amacron T -90 KPX Amacron Tcaron -90 KPX Amacron Tcommaaccent -90 KPX Amacron U -50 KPX Amacron Uacute -50 KPX Amacron Ucircumflex -50 KPX Amacron Udieresis -50 KPX Amacron Ugrave -50 KPX Amacron Uhungarumlaut -50 KPX Amacron Umacron -50 KPX Amacron Uogonek -50 KPX Amacron Uring -50 KPX Amacron V -80 KPX Amacron W -60 KPX Amacron Y -110 KPX Amacron Yacute -110 KPX Amacron Ydieresis -110 KPX Amacron u -30 KPX Amacron uacute -30 KPX Amacron ucircumflex -30 KPX Amacron udieresis -30 KPX Amacron ugrave -30 KPX Amacron uhungarumlaut -30 KPX Amacron umacron -30 KPX Amacron uogonek -30 KPX Amacron uring -30 KPX Amacron v -40 KPX Amacron w -30 KPX Amacron y -30 KPX Amacron yacute -30 KPX Amacron ydieresis -30 KPX Aogonek C -40 KPX Aogonek Cacute -40 KPX Aogonek Ccaron -40 KPX Aogonek Ccedilla -40 KPX Aogonek G -50 KPX Aogonek Gbreve -50 KPX Aogonek Gcommaaccent -50 KPX Aogonek O -40 KPX Aogonek Oacute -40 KPX Aogonek Ocircumflex -40 KPX Aogonek Odieresis -40 KPX Aogonek Ograve -40 KPX Aogonek Ohungarumlaut -40 KPX Aogonek Omacron -40 KPX Aogonek Oslash -40 KPX Aogonek Otilde -40 KPX Aogonek Q -40 KPX Aogonek T -90 KPX Aogonek Tcaron -90 KPX Aogonek Tcommaaccent -90 KPX Aogonek U -50 KPX Aogonek Uacute -50 KPX Aogonek Ucircumflex -50 KPX Aogonek Udieresis -50 KPX Aogonek Ugrave -50 KPX Aogonek Uhungarumlaut -50 KPX Aogonek Umacron -50 KPX Aogonek Uogonek -50 KPX Aogonek Uring -50 KPX Aogonek V -80 KPX Aogonek W -60 KPX Aogonek Y -110 KPX Aogonek Yacute -110 KPX Aogonek Ydieresis -110 KPX Aogonek u -30 KPX Aogonek uacute -30 KPX Aogonek ucircumflex -30 KPX Aogonek udieresis -30 KPX Aogonek ugrave -30 KPX Aogonek uhungarumlaut -30 KPX Aogonek umacron -30 KPX Aogonek uogonek -30 KPX Aogonek uring -30 KPX Aogonek v -40 KPX Aogonek w -30 KPX Aogonek y -30 KPX Aogonek yacute -30 KPX Aogonek ydieresis -30 KPX Aring C -40 KPX Aring Cacute -40 KPX Aring Ccaron -40 KPX Aring Ccedilla -40 KPX Aring G -50 KPX Aring Gbreve -50 KPX Aring Gcommaaccent -50 KPX Aring O -40 KPX Aring Oacute -40 KPX Aring Ocircumflex -40 KPX Aring Odieresis -40 KPX Aring Ograve -40 KPX Aring Ohungarumlaut -40 KPX Aring Omacron -40 KPX Aring Oslash -40 KPX Aring Otilde -40 KPX Aring Q -40 KPX Aring T -90 KPX Aring Tcaron -90 KPX Aring Tcommaaccent -90 KPX Aring U -50 KPX Aring Uacute -50 KPX Aring Ucircumflex -50 KPX Aring Udieresis -50 KPX Aring Ugrave -50 KPX Aring Uhungarumlaut -50 KPX Aring Umacron -50 KPX Aring Uogonek -50 KPX Aring Uring -50 KPX Aring V -80 KPX Aring W -60 KPX Aring Y -110 KPX Aring Yacute -110 KPX Aring Ydieresis -110 KPX Aring u -30 KPX Aring uacute -30 KPX Aring ucircumflex -30 KPX Aring udieresis -30 KPX Aring ugrave -30 KPX Aring uhungarumlaut -30 KPX Aring umacron -30 KPX Aring uogonek -30 KPX Aring uring -30 KPX Aring v -40 KPX Aring w -30 KPX Aring y -30 KPX Aring yacute -30 KPX Aring ydieresis -30 KPX Atilde C -40 KPX Atilde Cacute -40 KPX Atilde Ccaron -40 KPX Atilde Ccedilla -40 KPX Atilde G -50 KPX Atilde Gbreve -50 KPX Atilde Gcommaaccent -50 KPX Atilde O -40 KPX Atilde Oacute -40 KPX Atilde Ocircumflex -40 KPX Atilde Odieresis -40 KPX Atilde Ograve -40 KPX Atilde Ohungarumlaut -40 KPX Atilde Omacron -40 KPX Atilde Oslash -40 KPX Atilde Otilde -40 KPX Atilde Q -40 KPX Atilde T -90 KPX Atilde Tcaron -90 KPX Atilde Tcommaaccent -90 KPX Atilde U -50 KPX Atilde Uacute -50 KPX Atilde Ucircumflex -50 KPX Atilde Udieresis -50 KPX Atilde Ugrave -50 KPX Atilde Uhungarumlaut -50 KPX Atilde Umacron -50 KPX Atilde Uogonek -50 KPX Atilde Uring -50 KPX Atilde V -80 KPX Atilde W -60 KPX Atilde Y -110 KPX Atilde Yacute -110 KPX Atilde Ydieresis -110 KPX Atilde u -30 KPX Atilde uacute -30 KPX Atilde ucircumflex -30 KPX Atilde udieresis -30 KPX Atilde ugrave -30 KPX Atilde uhungarumlaut -30 KPX Atilde umacron -30 KPX Atilde uogonek -30 KPX Atilde uring -30 KPX Atilde v -40 KPX Atilde w -30 KPX Atilde y -30 KPX Atilde yacute -30 KPX Atilde ydieresis -30 KPX B A -30 KPX B Aacute -30 KPX B Abreve -30 KPX B Acircumflex -30 KPX B Adieresis -30 KPX B Agrave -30 KPX B Amacron -30 KPX B Aogonek -30 KPX B Aring -30 KPX B Atilde -30 KPX B U -10 KPX B Uacute -10 KPX B Ucircumflex -10 KPX B Udieresis -10 KPX B Ugrave -10 KPX B Uhungarumlaut -10 KPX B Umacron -10 KPX B Uogonek -10 KPX B Uring -10 KPX D A -40 KPX D Aacute -40 KPX D Abreve -40 KPX D Acircumflex -40 KPX D Adieresis -40 KPX D Agrave -40 KPX D Amacron -40 KPX D Aogonek -40 KPX D Aring -40 KPX D Atilde -40 KPX D V -40 KPX D W -40 KPX D Y -70 KPX D Yacute -70 KPX D Ydieresis -70 KPX D comma -30 KPX D period -30 KPX Dcaron A -40 KPX Dcaron Aacute -40 KPX Dcaron Abreve -40 KPX Dcaron Acircumflex -40 KPX Dcaron Adieresis -40 KPX Dcaron Agrave -40 KPX Dcaron Amacron -40 KPX Dcaron Aogonek -40 KPX Dcaron Aring -40 KPX Dcaron Atilde -40 KPX Dcaron V -40 KPX Dcaron W -40 KPX Dcaron Y -70 KPX Dcaron Yacute -70 KPX Dcaron Ydieresis -70 KPX Dcaron comma -30 KPX Dcaron period -30 KPX Dcroat A -40 KPX Dcroat Aacute -40 KPX Dcroat Abreve -40 KPX Dcroat Acircumflex -40 KPX Dcroat Adieresis -40 KPX Dcroat Agrave -40 KPX Dcroat Amacron -40 KPX Dcroat Aogonek -40 KPX Dcroat Aring -40 KPX Dcroat Atilde -40 KPX Dcroat V -40 KPX Dcroat W -40 KPX Dcroat Y -70 KPX Dcroat Yacute -70 KPX Dcroat Ydieresis -70 KPX Dcroat comma -30 KPX Dcroat period -30 KPX F A -80 KPX F Aacute -80 KPX F Abreve -80 KPX F Acircumflex -80 KPX F Adieresis -80 KPX F Agrave -80 KPX F Amacron -80 KPX F Aogonek -80 KPX F Aring -80 KPX F Atilde -80 KPX F a -20 KPX F aacute -20 KPX F abreve -20 KPX F acircumflex -20 KPX F adieresis -20 KPX F agrave -20 KPX F amacron -20 KPX F aogonek -20 KPX F aring -20 KPX F atilde -20 KPX F comma -100 KPX F period -100 KPX J A -20 KPX J Aacute -20 KPX J Abreve -20 KPX J Acircumflex -20 KPX J Adieresis -20 KPX J Agrave -20 KPX J Amacron -20 KPX J Aogonek -20 KPX J Aring -20 KPX J Atilde -20 KPX J comma -20 KPX J period -20 KPX J u -20 KPX J uacute -20 KPX J ucircumflex -20 KPX J udieresis -20 KPX J ugrave -20 KPX J uhungarumlaut -20 KPX J umacron -20 KPX J uogonek -20 KPX J uring -20 KPX K O -30 KPX K Oacute -30 KPX K Ocircumflex -30 KPX K Odieresis -30 KPX K Ograve -30 KPX K Ohungarumlaut -30 KPX K Omacron -30 KPX K Oslash -30 KPX K Otilde -30 KPX K e -15 KPX K eacute -15 KPX K ecaron -15 KPX K ecircumflex -15 KPX K edieresis -15 KPX K edotaccent -15 KPX K egrave -15 KPX K emacron -15 KPX K eogonek -15 KPX K o -35 KPX K oacute -35 KPX K ocircumflex -35 KPX K odieresis -35 KPX K ograve -35 KPX K ohungarumlaut -35 KPX K omacron -35 KPX K oslash -35 KPX K otilde -35 KPX K u -30 KPX K uacute -30 KPX K ucircumflex -30 KPX K udieresis -30 KPX K ugrave -30 KPX K uhungarumlaut -30 KPX K umacron -30 KPX K uogonek -30 KPX K uring -30 KPX K y -40 KPX K yacute -40 KPX K ydieresis -40 KPX Kcommaaccent O -30 KPX Kcommaaccent Oacute -30 KPX Kcommaaccent Ocircumflex -30 KPX Kcommaaccent Odieresis -30 KPX Kcommaaccent Ograve -30 KPX Kcommaaccent Ohungarumlaut -30 KPX Kcommaaccent Omacron -30 KPX Kcommaaccent Oslash -30 KPX Kcommaaccent Otilde -30 KPX Kcommaaccent e -15 KPX Kcommaaccent eacute -15 KPX Kcommaaccent ecaron -15 KPX Kcommaaccent ecircumflex -15 KPX Kcommaaccent edieresis -15 KPX Kcommaaccent edotaccent -15 KPX Kcommaaccent egrave -15 KPX Kcommaaccent emacron -15 KPX Kcommaaccent eogonek -15 KPX Kcommaaccent o -35 KPX Kcommaaccent oacute -35 KPX Kcommaaccent ocircumflex -35 KPX Kcommaaccent odieresis -35 KPX Kcommaaccent ograve -35 KPX Kcommaaccent ohungarumlaut -35 KPX Kcommaaccent omacron -35 KPX Kcommaaccent oslash -35 KPX Kcommaaccent otilde -35 KPX Kcommaaccent u -30 KPX Kcommaaccent uacute -30 KPX Kcommaaccent ucircumflex -30 KPX Kcommaaccent udieresis -30 KPX Kcommaaccent ugrave -30 KPX Kcommaaccent uhungarumlaut -30 KPX Kcommaaccent umacron -30 KPX Kcommaaccent uogonek -30 KPX Kcommaaccent uring -30 KPX Kcommaaccent y -40 KPX Kcommaaccent yacute -40 KPX Kcommaaccent ydieresis -40 KPX L T -90 KPX L Tcaron -90 KPX L Tcommaaccent -90 KPX L V -110 KPX L W -80 KPX L Y -120 KPX L Yacute -120 KPX L Ydieresis -120 KPX L quotedblright -140 KPX L quoteright -140 KPX L y -30 KPX L yacute -30 KPX L ydieresis -30 KPX Lacute T -90 KPX Lacute Tcaron -90 KPX Lacute Tcommaaccent -90 KPX Lacute V -110 KPX Lacute W -80 KPX Lacute Y -120 KPX Lacute Yacute -120 KPX Lacute Ydieresis -120 KPX Lacute quotedblright -140 KPX Lacute quoteright -140 KPX Lacute y -30 KPX Lacute yacute -30 KPX Lacute ydieresis -30 KPX Lcommaaccent T -90 KPX Lcommaaccent Tcaron -90 KPX Lcommaaccent Tcommaaccent -90 KPX Lcommaaccent V -110 KPX Lcommaaccent W -80 KPX Lcommaaccent Y -120 KPX Lcommaaccent Yacute -120 KPX Lcommaaccent Ydieresis -120 KPX Lcommaaccent quotedblright -140 KPX Lcommaaccent quoteright -140 KPX Lcommaaccent y -30 KPX Lcommaaccent yacute -30 KPX Lcommaaccent ydieresis -30 KPX Lslash T -90 KPX Lslash Tcaron -90 KPX Lslash Tcommaaccent -90 KPX Lslash V -110 KPX Lslash W -80 KPX Lslash Y -120 KPX Lslash Yacute -120 KPX Lslash Ydieresis -120 KPX Lslash quotedblright -140 KPX Lslash quoteright -140 KPX Lslash y -30 KPX Lslash yacute -30 KPX Lslash ydieresis -30 KPX O A -50 KPX O Aacute -50 KPX O Abreve -50 KPX O Acircumflex -50 KPX O Adieresis -50 KPX O Agrave -50 KPX O Amacron -50 KPX O Aogonek -50 KPX O Aring -50 KPX O Atilde -50 KPX O T -40 KPX O Tcaron -40 KPX O Tcommaaccent -40 KPX O V -50 KPX O W -50 KPX O X -50 KPX O Y -70 KPX O Yacute -70 KPX O Ydieresis -70 KPX O comma -40 KPX O period -40 KPX Oacute A -50 KPX Oacute Aacute -50 KPX Oacute Abreve -50 KPX Oacute Acircumflex -50 KPX Oacute Adieresis -50 KPX Oacute Agrave -50 KPX Oacute Amacron -50 KPX Oacute Aogonek -50 KPX Oacute Aring -50 KPX Oacute Atilde -50 KPX Oacute T -40 KPX Oacute Tcaron -40 KPX Oacute Tcommaaccent -40 KPX Oacute V -50 KPX Oacute W -50 KPX Oacute X -50 KPX Oacute Y -70 KPX Oacute Yacute -70 KPX Oacute Ydieresis -70 KPX Oacute comma -40 KPX Oacute period -40 KPX Ocircumflex A -50 KPX Ocircumflex Aacute -50 KPX Ocircumflex Abreve -50 KPX Ocircumflex Acircumflex -50 KPX Ocircumflex Adieresis -50 KPX Ocircumflex Agrave -50 KPX Ocircumflex Amacron -50 KPX Ocircumflex Aogonek -50 KPX Ocircumflex Aring -50 KPX Ocircumflex Atilde -50 KPX Ocircumflex T -40 KPX Ocircumflex Tcaron -40 KPX Ocircumflex Tcommaaccent -40 KPX Ocircumflex V -50 KPX Ocircumflex W -50 KPX Ocircumflex X -50 KPX Ocircumflex Y -70 KPX Ocircumflex Yacute -70 KPX Ocircumflex Ydieresis -70 KPX Ocircumflex comma -40 KPX Ocircumflex period -40 KPX Odieresis A -50 KPX Odieresis Aacute -50 KPX Odieresis Abreve -50 KPX Odieresis Acircumflex -50 KPX Odieresis Adieresis -50 KPX Odieresis Agrave -50 KPX Odieresis Amacron -50 KPX Odieresis Aogonek -50 KPX Odieresis Aring -50 KPX Odieresis Atilde -50 KPX Odieresis T -40 KPX Odieresis Tcaron -40 KPX Odieresis Tcommaaccent -40 KPX Odieresis V -50 KPX Odieresis W -50 KPX Odieresis X -50 KPX Odieresis Y -70 KPX Odieresis Yacute -70 KPX Odieresis Ydieresis -70 KPX Odieresis comma -40 KPX Odieresis period -40 KPX Ograve A -50 KPX Ograve Aacute -50 KPX Ograve Abreve -50 KPX Ograve Acircumflex -50 KPX Ograve Adieresis -50 KPX Ograve Agrave -50 KPX Ograve Amacron -50 KPX Ograve Aogonek -50 KPX Ograve Aring -50 KPX Ograve Atilde -50 KPX Ograve T -40 KPX Ograve Tcaron -40 KPX Ograve Tcommaaccent -40 KPX Ograve V -50 KPX Ograve W -50 KPX Ograve X -50 KPX Ograve Y -70 KPX Ograve Yacute -70 KPX Ograve Ydieresis -70 KPX Ograve comma -40 KPX Ograve period -40 KPX Ohungarumlaut A -50 KPX Ohungarumlaut Aacute -50 KPX Ohungarumlaut Abreve -50 KPX Ohungarumlaut Acircumflex -50 KPX Ohungarumlaut Adieresis -50 KPX Ohungarumlaut Agrave -50 KPX Ohungarumlaut Amacron -50 KPX Ohungarumlaut Aogonek -50 KPX Ohungarumlaut Aring -50 KPX Ohungarumlaut Atilde -50 KPX Ohungarumlaut T -40 KPX Ohungarumlaut Tcaron -40 KPX Ohungarumlaut Tcommaaccent -40 KPX Ohungarumlaut V -50 KPX Ohungarumlaut W -50 KPX Ohungarumlaut X -50 KPX Ohungarumlaut Y -70 KPX Ohungarumlaut Yacute -70 KPX Ohungarumlaut Ydieresis -70 KPX Ohungarumlaut comma -40 KPX Ohungarumlaut period -40 KPX Omacron A -50 KPX Omacron Aacute -50 KPX Omacron Abreve -50 KPX Omacron Acircumflex -50 KPX Omacron Adieresis -50 KPX Omacron Agrave -50 KPX Omacron Amacron -50 KPX Omacron Aogonek -50 KPX Omacron Aring -50 KPX Omacron Atilde -50 KPX Omacron T -40 KPX Omacron Tcaron -40 KPX Omacron Tcommaaccent -40 KPX Omacron V -50 KPX Omacron W -50 KPX Omacron X -50 KPX Omacron Y -70 KPX Omacron Yacute -70 KPX Omacron Ydieresis -70 KPX Omacron comma -40 KPX Omacron period -40 KPX Oslash A -50 KPX Oslash Aacute -50 KPX Oslash Abreve -50 KPX Oslash Acircumflex -50 KPX Oslash Adieresis -50 KPX Oslash Agrave -50 KPX Oslash Amacron -50 KPX Oslash Aogonek -50 KPX Oslash Aring -50 KPX Oslash Atilde -50 KPX Oslash T -40 KPX Oslash Tcaron -40 KPX Oslash Tcommaaccent -40 KPX Oslash V -50 KPX Oslash W -50 KPX Oslash X -50 KPX Oslash Y -70 KPX Oslash Yacute -70 KPX Oslash Ydieresis -70 KPX Oslash comma -40 KPX Oslash period -40 KPX Otilde A -50 KPX Otilde Aacute -50 KPX Otilde Abreve -50 KPX Otilde Acircumflex -50 KPX Otilde Adieresis -50 KPX Otilde Agrave -50 KPX Otilde Amacron -50 KPX Otilde Aogonek -50 KPX Otilde Aring -50 KPX Otilde Atilde -50 KPX Otilde T -40 KPX Otilde Tcaron -40 KPX Otilde Tcommaaccent -40 KPX Otilde V -50 KPX Otilde W -50 KPX Otilde X -50 KPX Otilde Y -70 KPX Otilde Yacute -70 KPX Otilde Ydieresis -70 KPX Otilde comma -40 KPX Otilde period -40 KPX P A -100 KPX P Aacute -100 KPX P Abreve -100 KPX P Acircumflex -100 KPX P Adieresis -100 KPX P Agrave -100 KPX P Amacron -100 KPX P Aogonek -100 KPX P Aring -100 KPX P Atilde -100 KPX P a -30 KPX P aacute -30 KPX P abreve -30 KPX P acircumflex -30 KPX P adieresis -30 KPX P agrave -30 KPX P amacron -30 KPX P aogonek -30 KPX P aring -30 KPX P atilde -30 KPX P comma -120 KPX P e -30 KPX P eacute -30 KPX P ecaron -30 KPX P ecircumflex -30 KPX P edieresis -30 KPX P edotaccent -30 KPX P egrave -30 KPX P emacron -30 KPX P eogonek -30 KPX P o -40 KPX P oacute -40 KPX P ocircumflex -40 KPX P odieresis -40 KPX P ograve -40 KPX P ohungarumlaut -40 KPX P omacron -40 KPX P oslash -40 KPX P otilde -40 KPX P period -120 KPX Q U -10 KPX Q Uacute -10 KPX Q Ucircumflex -10 KPX Q Udieresis -10 KPX Q Ugrave -10 KPX Q Uhungarumlaut -10 KPX Q Umacron -10 KPX Q Uogonek -10 KPX Q Uring -10 KPX Q comma 20 KPX Q period 20 KPX R O -20 KPX R Oacute -20 KPX R Ocircumflex -20 KPX R Odieresis -20 KPX R Ograve -20 KPX R Ohungarumlaut -20 KPX R Omacron -20 KPX R Oslash -20 KPX R Otilde -20 KPX R T -20 KPX R Tcaron -20 KPX R Tcommaaccent -20 KPX R U -20 KPX R Uacute -20 KPX R Ucircumflex -20 KPX R Udieresis -20 KPX R Ugrave -20 KPX R Uhungarumlaut -20 KPX R Umacron -20 KPX R Uogonek -20 KPX R Uring -20 KPX R V -50 KPX R W -40 KPX R Y -50 KPX R Yacute -50 KPX R Ydieresis -50 KPX Racute O -20 KPX Racute Oacute -20 KPX Racute Ocircumflex -20 KPX Racute Odieresis -20 KPX Racute Ograve -20 KPX Racute Ohungarumlaut -20 KPX Racute Omacron -20 KPX Racute Oslash -20 KPX Racute Otilde -20 KPX Racute T -20 KPX Racute Tcaron -20 KPX Racute Tcommaaccent -20 KPX Racute U -20 KPX Racute Uacute -20 KPX Racute Ucircumflex -20 KPX Racute Udieresis -20 KPX Racute Ugrave -20 KPX Racute Uhungarumlaut -20 KPX Racute Umacron -20 KPX Racute Uogonek -20 KPX Racute Uring -20 KPX Racute V -50 KPX Racute W -40 KPX Racute Y -50 KPX Racute Yacute -50 KPX Racute Ydieresis -50 KPX Rcaron O -20 KPX Rcaron Oacute -20 KPX Rcaron Ocircumflex -20 KPX Rcaron Odieresis -20 KPX Rcaron Ograve -20 KPX Rcaron Ohungarumlaut -20 KPX Rcaron Omacron -20 KPX Rcaron Oslash -20 KPX Rcaron Otilde -20 KPX Rcaron T -20 KPX Rcaron Tcaron -20 KPX Rcaron Tcommaaccent -20 KPX Rcaron U -20 KPX Rcaron Uacute -20 KPX Rcaron Ucircumflex -20 KPX Rcaron Udieresis -20 KPX Rcaron Ugrave -20 KPX Rcaron Uhungarumlaut -20 KPX Rcaron Umacron -20 KPX Rcaron Uogonek -20 KPX Rcaron Uring -20 KPX Rcaron V -50 KPX Rcaron W -40 KPX Rcaron Y -50 KPX Rcaron Yacute -50 KPX Rcaron Ydieresis -50 KPX Rcommaaccent O -20 KPX Rcommaaccent Oacute -20 KPX Rcommaaccent Ocircumflex -20 KPX Rcommaaccent Odieresis -20 KPX Rcommaaccent Ograve -20 KPX Rcommaaccent Ohungarumlaut -20 KPX Rcommaaccent Omacron -20 KPX Rcommaaccent Oslash -20 KPX Rcommaaccent Otilde -20 KPX Rcommaaccent T -20 KPX Rcommaaccent Tcaron -20 KPX Rcommaaccent Tcommaaccent -20 KPX Rcommaaccent U -20 KPX Rcommaaccent Uacute -20 KPX Rcommaaccent Ucircumflex -20 KPX Rcommaaccent Udieresis -20 KPX Rcommaaccent Ugrave -20 KPX Rcommaaccent Uhungarumlaut -20 KPX Rcommaaccent Umacron -20 KPX Rcommaaccent Uogonek -20 KPX Rcommaaccent Uring -20 KPX Rcommaaccent V -50 KPX Rcommaaccent W -40 KPX Rcommaaccent Y -50 KPX Rcommaaccent Yacute -50 KPX Rcommaaccent Ydieresis -50 KPX T A -90 KPX T Aacute -90 KPX T Abreve -90 KPX T Acircumflex -90 KPX T Adieresis -90 KPX T Agrave -90 KPX T Amacron -90 KPX T Aogonek -90 KPX T Aring -90 KPX T Atilde -90 KPX T O -40 KPX T Oacute -40 KPX T Ocircumflex -40 KPX T Odieresis -40 KPX T Ograve -40 KPX T Ohungarumlaut -40 KPX T Omacron -40 KPX T Oslash -40 KPX T Otilde -40 KPX T a -80 KPX T aacute -80 KPX T abreve -80 KPX T acircumflex -80 KPX T adieresis -80 KPX T agrave -80 KPX T amacron -80 KPX T aogonek -80 KPX T aring -80 KPX T atilde -80 KPX T colon -40 KPX T comma -80 KPX T e -60 KPX T eacute -60 KPX T ecaron -60 KPX T ecircumflex -60 KPX T edieresis -60 KPX T edotaccent -60 KPX T egrave -60 KPX T emacron -60 KPX T eogonek -60 KPX T hyphen -120 KPX T o -80 KPX T oacute -80 KPX T ocircumflex -80 KPX T odieresis -80 KPX T ograve -80 KPX T ohungarumlaut -80 KPX T omacron -80 KPX T oslash -80 KPX T otilde -80 KPX T period -80 KPX T r -80 KPX T racute -80 KPX T rcommaaccent -80 KPX T semicolon -40 KPX T u -90 KPX T uacute -90 KPX T ucircumflex -90 KPX T udieresis -90 KPX T ugrave -90 KPX T uhungarumlaut -90 KPX T umacron -90 KPX T uogonek -90 KPX T uring -90 KPX T w -60 KPX T y -60 KPX T yacute -60 KPX T ydieresis -60 KPX Tcaron A -90 KPX Tcaron Aacute -90 KPX Tcaron Abreve -90 KPX Tcaron Acircumflex -90 KPX Tcaron Adieresis -90 KPX Tcaron Agrave -90 KPX Tcaron Amacron -90 KPX Tcaron Aogonek -90 KPX Tcaron Aring -90 KPX Tcaron Atilde -90 KPX Tcaron O -40 KPX Tcaron Oacute -40 KPX Tcaron Ocircumflex -40 KPX Tcaron Odieresis -40 KPX Tcaron Ograve -40 KPX Tcaron Ohungarumlaut -40 KPX Tcaron Omacron -40 KPX Tcaron Oslash -40 KPX Tcaron Otilde -40 KPX Tcaron a -80 KPX Tcaron aacute -80 KPX Tcaron abreve -80 KPX Tcaron acircumflex -80 KPX Tcaron adieresis -80 KPX Tcaron agrave -80 KPX Tcaron amacron -80 KPX Tcaron aogonek -80 KPX Tcaron aring -80 KPX Tcaron atilde -80 KPX Tcaron colon -40 KPX Tcaron comma -80 KPX Tcaron e -60 KPX Tcaron eacute -60 KPX Tcaron ecaron -60 KPX Tcaron ecircumflex -60 KPX Tcaron edieresis -60 KPX Tcaron edotaccent -60 KPX Tcaron egrave -60 KPX Tcaron emacron -60 KPX Tcaron eogonek -60 KPX Tcaron hyphen -120 KPX Tcaron o -80 KPX Tcaron oacute -80 KPX Tcaron ocircumflex -80 KPX Tcaron odieresis -80 KPX Tcaron ograve -80 KPX Tcaron ohungarumlaut -80 KPX Tcaron omacron -80 KPX Tcaron oslash -80 KPX Tcaron otilde -80 KPX Tcaron period -80 KPX Tcaron r -80 KPX Tcaron racute -80 KPX Tcaron rcommaaccent -80 KPX Tcaron semicolon -40 KPX Tcaron u -90 KPX Tcaron uacute -90 KPX Tcaron ucircumflex -90 KPX Tcaron udieresis -90 KPX Tcaron ugrave -90 KPX Tcaron uhungarumlaut -90 KPX Tcaron umacron -90 KPX Tcaron uogonek -90 KPX Tcaron uring -90 KPX Tcaron w -60 KPX Tcaron y -60 KPX Tcaron yacute -60 KPX Tcaron ydieresis -60 KPX Tcommaaccent A -90 KPX Tcommaaccent Aacute -90 KPX Tcommaaccent Abreve -90 KPX Tcommaaccent Acircumflex -90 KPX Tcommaaccent Adieresis -90 KPX Tcommaaccent Agrave -90 KPX Tcommaaccent Amacron -90 KPX Tcommaaccent Aogonek -90 KPX Tcommaaccent Aring -90 KPX Tcommaaccent Atilde -90 KPX Tcommaaccent O -40 KPX Tcommaaccent Oacute -40 KPX Tcommaaccent Ocircumflex -40 KPX Tcommaaccent Odieresis -40 KPX Tcommaaccent Ograve -40 KPX Tcommaaccent Ohungarumlaut -40 KPX Tcommaaccent Omacron -40 KPX Tcommaaccent Oslash -40 KPX Tcommaaccent Otilde -40 KPX Tcommaaccent a -80 KPX Tcommaaccent aacute -80 KPX Tcommaaccent abreve -80 KPX Tcommaaccent acircumflex -80 KPX Tcommaaccent adieresis -80 KPX Tcommaaccent agrave -80 KPX Tcommaaccent amacron -80 KPX Tcommaaccent aogonek -80 KPX Tcommaaccent aring -80 KPX Tcommaaccent atilde -80 KPX Tcommaaccent colon -40 KPX Tcommaaccent comma -80 KPX Tcommaaccent e -60 KPX Tcommaaccent eacute -60 KPX Tcommaaccent ecaron -60 KPX Tcommaaccent ecircumflex -60 KPX Tcommaaccent edieresis -60 KPX Tcommaaccent edotaccent -60 KPX Tcommaaccent egrave -60 KPX Tcommaaccent emacron -60 KPX Tcommaaccent eogonek -60 KPX Tcommaaccent hyphen -120 KPX Tcommaaccent o -80 KPX Tcommaaccent oacute -80 KPX Tcommaaccent ocircumflex -80 KPX Tcommaaccent odieresis -80 KPX Tcommaaccent ograve -80 KPX Tcommaaccent ohungarumlaut -80 KPX Tcommaaccent omacron -80 KPX Tcommaaccent oslash -80 KPX Tcommaaccent otilde -80 KPX Tcommaaccent period -80 KPX Tcommaaccent r -80 KPX Tcommaaccent racute -80 KPX Tcommaaccent rcommaaccent -80 KPX Tcommaaccent semicolon -40 KPX Tcommaaccent u -90 KPX Tcommaaccent uacute -90 KPX Tcommaaccent ucircumflex -90 KPX Tcommaaccent udieresis -90 KPX Tcommaaccent ugrave -90 KPX Tcommaaccent uhungarumlaut -90 KPX Tcommaaccent umacron -90 KPX Tcommaaccent uogonek -90 KPX Tcommaaccent uring -90 KPX Tcommaaccent w -60 KPX Tcommaaccent y -60 KPX Tcommaaccent yacute -60 KPX Tcommaaccent ydieresis -60 KPX U A -50 KPX U Aacute -50 KPX U Abreve -50 KPX U Acircumflex -50 KPX U Adieresis -50 KPX U Agrave -50 KPX U Amacron -50 KPX U Aogonek -50 KPX U Aring -50 KPX U Atilde -50 KPX U comma -30 KPX U period -30 KPX Uacute A -50 KPX Uacute Aacute -50 KPX Uacute Abreve -50 KPX Uacute Acircumflex -50 KPX Uacute Adieresis -50 KPX Uacute Agrave -50 KPX Uacute Amacron -50 KPX Uacute Aogonek -50 KPX Uacute Aring -50 KPX Uacute Atilde -50 KPX Uacute comma -30 KPX Uacute period -30 KPX Ucircumflex A -50 KPX Ucircumflex Aacute -50 KPX Ucircumflex Abreve -50 KPX Ucircumflex Acircumflex -50 KPX Ucircumflex Adieresis -50 KPX Ucircumflex Agrave -50 KPX Ucircumflex Amacron -50 KPX Ucircumflex Aogonek -50 KPX Ucircumflex Aring -50 KPX Ucircumflex Atilde -50 KPX Ucircumflex comma -30 KPX Ucircumflex period -30 KPX Udieresis A -50 KPX Udieresis Aacute -50 KPX Udieresis Abreve -50 KPX Udieresis Acircumflex -50 KPX Udieresis Adieresis -50 KPX Udieresis Agrave -50 KPX Udieresis Amacron -50 KPX Udieresis Aogonek -50 KPX Udieresis Aring -50 KPX Udieresis Atilde -50 KPX Udieresis comma -30 KPX Udieresis period -30 KPX Ugrave A -50 KPX Ugrave Aacute -50 KPX Ugrave Abreve -50 KPX Ugrave Acircumflex -50 KPX Ugrave Adieresis -50 KPX Ugrave Agrave -50 KPX Ugrave Amacron -50 KPX Ugrave Aogonek -50 KPX Ugrave Aring -50 KPX Ugrave Atilde -50 KPX Ugrave comma -30 KPX Ugrave period -30 KPX Uhungarumlaut A -50 KPX Uhungarumlaut Aacute -50 KPX Uhungarumlaut Abreve -50 KPX Uhungarumlaut Acircumflex -50 KPX Uhungarumlaut Adieresis -50 KPX Uhungarumlaut Agrave -50 KPX Uhungarumlaut Amacron -50 KPX Uhungarumlaut Aogonek -50 KPX Uhungarumlaut Aring -50 KPX Uhungarumlaut Atilde -50 KPX Uhungarumlaut comma -30 KPX Uhungarumlaut period -30 KPX Umacron A -50 KPX Umacron Aacute -50 KPX Umacron Abreve -50 KPX Umacron Acircumflex -50 KPX Umacron Adieresis -50 KPX Umacron Agrave -50 KPX Umacron Amacron -50 KPX Umacron Aogonek -50 KPX Umacron Aring -50 KPX Umacron Atilde -50 KPX Umacron comma -30 KPX Umacron period -30 KPX Uogonek A -50 KPX Uogonek Aacute -50 KPX Uogonek Abreve -50 KPX Uogonek Acircumflex -50 KPX Uogonek Adieresis -50 KPX Uogonek Agrave -50 KPX Uogonek Amacron -50 KPX Uogonek Aogonek -50 KPX Uogonek Aring -50 KPX Uogonek Atilde -50 KPX Uogonek comma -30 KPX Uogonek period -30 KPX Uring A -50 KPX Uring Aacute -50 KPX Uring Abreve -50 KPX Uring Acircumflex -50 KPX Uring Adieresis -50 KPX Uring Agrave -50 KPX Uring Amacron -50 KPX Uring Aogonek -50 KPX Uring Aring -50 KPX Uring Atilde -50 KPX Uring comma -30 KPX Uring period -30 KPX V A -80 KPX V Aacute -80 KPX V Abreve -80 KPX V Acircumflex -80 KPX V Adieresis -80 KPX V Agrave -80 KPX V Amacron -80 KPX V Aogonek -80 KPX V Aring -80 KPX V Atilde -80 KPX V G -50 KPX V Gbreve -50 KPX V Gcommaaccent -50 KPX V O -50 KPX V Oacute -50 KPX V Ocircumflex -50 KPX V Odieresis -50 KPX V Ograve -50 KPX V Ohungarumlaut -50 KPX V Omacron -50 KPX V Oslash -50 KPX V Otilde -50 KPX V a -60 KPX V aacute -60 KPX V abreve -60 KPX V acircumflex -60 KPX V adieresis -60 KPX V agrave -60 KPX V amacron -60 KPX V aogonek -60 KPX V aring -60 KPX V atilde -60 KPX V colon -40 KPX V comma -120 KPX V e -50 KPX V eacute -50 KPX V ecaron -50 KPX V ecircumflex -50 KPX V edieresis -50 KPX V edotaccent -50 KPX V egrave -50 KPX V emacron -50 KPX V eogonek -50 KPX V hyphen -80 KPX V o -90 KPX V oacute -90 KPX V ocircumflex -90 KPX V odieresis -90 KPX V ograve -90 KPX V ohungarumlaut -90 KPX V omacron -90 KPX V oslash -90 KPX V otilde -90 KPX V period -120 KPX V semicolon -40 KPX V u -60 KPX V uacute -60 KPX V ucircumflex -60 KPX V udieresis -60 KPX V ugrave -60 KPX V uhungarumlaut -60 KPX V umacron -60 KPX V uogonek -60 KPX V uring -60 KPX W A -60 KPX W Aacute -60 KPX W Abreve -60 KPX W Acircumflex -60 KPX W Adieresis -60 KPX W Agrave -60 KPX W Amacron -60 KPX W Aogonek -60 KPX W Aring -60 KPX W Atilde -60 KPX W O -20 KPX W Oacute -20 KPX W Ocircumflex -20 KPX W Odieresis -20 KPX W Ograve -20 KPX W Ohungarumlaut -20 KPX W Omacron -20 KPX W Oslash -20 KPX W Otilde -20 KPX W a -40 KPX W aacute -40 KPX W abreve -40 KPX W acircumflex -40 KPX W adieresis -40 KPX W agrave -40 KPX W amacron -40 KPX W aogonek -40 KPX W aring -40 KPX W atilde -40 KPX W colon -10 KPX W comma -80 KPX W e -35 KPX W eacute -35 KPX W ecaron -35 KPX W ecircumflex -35 KPX W edieresis -35 KPX W edotaccent -35 KPX W egrave -35 KPX W emacron -35 KPX W eogonek -35 KPX W hyphen -40 KPX W o -60 KPX W oacute -60 KPX W ocircumflex -60 KPX W odieresis -60 KPX W ograve -60 KPX W ohungarumlaut -60 KPX W omacron -60 KPX W oslash -60 KPX W otilde -60 KPX W period -80 KPX W semicolon -10 KPX W u -45 KPX W uacute -45 KPX W ucircumflex -45 KPX W udieresis -45 KPX W ugrave -45 KPX W uhungarumlaut -45 KPX W umacron -45 KPX W uogonek -45 KPX W uring -45 KPX W y -20 KPX W yacute -20 KPX W ydieresis -20 KPX Y A -110 KPX Y Aacute -110 KPX Y Abreve -110 KPX Y Acircumflex -110 KPX Y Adieresis -110 KPX Y Agrave -110 KPX Y Amacron -110 KPX Y Aogonek -110 KPX Y Aring -110 KPX Y Atilde -110 KPX Y O -70 KPX Y Oacute -70 KPX Y Ocircumflex -70 KPX Y Odieresis -70 KPX Y Ograve -70 KPX Y Ohungarumlaut -70 KPX Y Omacron -70 KPX Y Oslash -70 KPX Y Otilde -70 KPX Y a -90 KPX Y aacute -90 KPX Y abreve -90 KPX Y acircumflex -90 KPX Y adieresis -90 KPX Y agrave -90 KPX Y amacron -90 KPX Y aogonek -90 KPX Y aring -90 KPX Y atilde -90 KPX Y colon -50 KPX Y comma -100 KPX Y e -80 KPX Y eacute -80 KPX Y ecaron -80 KPX Y ecircumflex -80 KPX Y edieresis -80 KPX Y edotaccent -80 KPX Y egrave -80 KPX Y emacron -80 KPX Y eogonek -80 KPX Y o -100 KPX Y oacute -100 KPX Y ocircumflex -100 KPX Y odieresis -100 KPX Y ograve -100 KPX Y ohungarumlaut -100 KPX Y omacron -100 KPX Y oslash -100 KPX Y otilde -100 KPX Y period -100 KPX Y semicolon -50 KPX Y u -100 KPX Y uacute -100 KPX Y ucircumflex -100 KPX Y udieresis -100 KPX Y ugrave -100 KPX Y uhungarumlaut -100 KPX Y umacron -100 KPX Y uogonek -100 KPX Y uring -100 KPX Yacute A -110 KPX Yacute Aacute -110 KPX Yacute Abreve -110 KPX Yacute Acircumflex -110 KPX Yacute Adieresis -110 KPX Yacute Agrave -110 KPX Yacute Amacron -110 KPX Yacute Aogonek -110 KPX Yacute Aring -110 KPX Yacute Atilde -110 KPX Yacute O -70 KPX Yacute Oacute -70 KPX Yacute Ocircumflex -70 KPX Yacute Odieresis -70 KPX Yacute Ograve -70 KPX Yacute Ohungarumlaut -70 KPX Yacute Omacron -70 KPX Yacute Oslash -70 KPX Yacute Otilde -70 KPX Yacute a -90 KPX Yacute aacute -90 KPX Yacute abreve -90 KPX Yacute acircumflex -90 KPX Yacute adieresis -90 KPX Yacute agrave -90 KPX Yacute amacron -90 KPX Yacute aogonek -90 KPX Yacute aring -90 KPX Yacute atilde -90 KPX Yacute colon -50 KPX Yacute comma -100 KPX Yacute e -80 KPX Yacute eacute -80 KPX Yacute ecaron -80 KPX Yacute ecircumflex -80 KPX Yacute edieresis -80 KPX Yacute edotaccent -80 KPX Yacute egrave -80 KPX Yacute emacron -80 KPX Yacute eogonek -80 KPX Yacute o -100 KPX Yacute oacute -100 KPX Yacute ocircumflex -100 KPX Yacute odieresis -100 KPX Yacute ograve -100 KPX Yacute ohungarumlaut -100 KPX Yacute omacron -100 KPX Yacute oslash -100 KPX Yacute otilde -100 KPX Yacute period -100 KPX Yacute semicolon -50 KPX Yacute u -100 KPX Yacute uacute -100 KPX Yacute ucircumflex -100 KPX Yacute udieresis -100 KPX Yacute ugrave -100 KPX Yacute uhungarumlaut -100 KPX Yacute umacron -100 KPX Yacute uogonek -100 KPX Yacute uring -100 KPX Ydieresis A -110 KPX Ydieresis Aacute -110 KPX Ydieresis Abreve -110 KPX Ydieresis Acircumflex -110 KPX Ydieresis Adieresis -110 KPX Ydieresis Agrave -110 KPX Ydieresis Amacron -110 KPX Ydieresis Aogonek -110 KPX Ydieresis Aring -110 KPX Ydieresis Atilde -110 KPX Ydieresis O -70 KPX Ydieresis Oacute -70 KPX Ydieresis Ocircumflex -70 KPX Ydieresis Odieresis -70 KPX Ydieresis Ograve -70 KPX Ydieresis Ohungarumlaut -70 KPX Ydieresis Omacron -70 KPX Ydieresis Oslash -70 KPX Ydieresis Otilde -70 KPX Ydieresis a -90 KPX Ydieresis aacute -90 KPX Ydieresis abreve -90 KPX Ydieresis acircumflex -90 KPX Ydieresis adieresis -90 KPX Ydieresis agrave -90 KPX Ydieresis amacron -90 KPX Ydieresis aogonek -90 KPX Ydieresis aring -90 KPX Ydieresis atilde -90 KPX Ydieresis colon -50 KPX Ydieresis comma -100 KPX Ydieresis e -80 KPX Ydieresis eacute -80 KPX Ydieresis ecaron -80 KPX Ydieresis ecircumflex -80 KPX Ydieresis edieresis -80 KPX Ydieresis edotaccent -80 KPX Ydieresis egrave -80 KPX Ydieresis emacron -80 KPX Ydieresis eogonek -80 KPX Ydieresis o -100 KPX Ydieresis oacute -100 KPX Ydieresis ocircumflex -100 KPX Ydieresis odieresis -100 KPX Ydieresis ograve -100 KPX Ydieresis ohungarumlaut -100 KPX Ydieresis omacron -100 KPX Ydieresis oslash -100 KPX Ydieresis otilde -100 KPX Ydieresis period -100 KPX Ydieresis semicolon -50 KPX Ydieresis u -100 KPX Ydieresis uacute -100 KPX Ydieresis ucircumflex -100 KPX Ydieresis udieresis -100 KPX Ydieresis ugrave -100 KPX Ydieresis uhungarumlaut -100 KPX Ydieresis umacron -100 KPX Ydieresis uogonek -100 KPX Ydieresis uring -100 KPX a g -10 KPX a gbreve -10 KPX a gcommaaccent -10 KPX a v -15 KPX a w -15 KPX a y -20 KPX a yacute -20 KPX a ydieresis -20 KPX aacute g -10 KPX aacute gbreve -10 KPX aacute gcommaaccent -10 KPX aacute v -15 KPX aacute w -15 KPX aacute y -20 KPX aacute yacute -20 KPX aacute ydieresis -20 KPX abreve g -10 KPX abreve gbreve -10 KPX abreve gcommaaccent -10 KPX abreve v -15 KPX abreve w -15 KPX abreve y -20 KPX abreve yacute -20 KPX abreve ydieresis -20 KPX acircumflex g -10 KPX acircumflex gbreve -10 KPX acircumflex gcommaaccent -10 KPX acircumflex v -15 KPX acircumflex w -15 KPX acircumflex y -20 KPX acircumflex yacute -20 KPX acircumflex ydieresis -20 KPX adieresis g -10 KPX adieresis gbreve -10 KPX adieresis gcommaaccent -10 KPX adieresis v -15 KPX adieresis w -15 KPX adieresis y -20 KPX adieresis yacute -20 KPX adieresis ydieresis -20 KPX agrave g -10 KPX agrave gbreve -10 KPX agrave gcommaaccent -10 KPX agrave v -15 KPX agrave w -15 KPX agrave y -20 KPX agrave yacute -20 KPX agrave ydieresis -20 KPX amacron g -10 KPX amacron gbreve -10 KPX amacron gcommaaccent -10 KPX amacron v -15 KPX amacron w -15 KPX amacron y -20 KPX amacron yacute -20 KPX amacron ydieresis -20 KPX aogonek g -10 KPX aogonek gbreve -10 KPX aogonek gcommaaccent -10 KPX aogonek v -15 KPX aogonek w -15 KPX aogonek y -20 KPX aogonek yacute -20 KPX aogonek ydieresis -20 KPX aring g -10 KPX aring gbreve -10 KPX aring gcommaaccent -10 KPX aring v -15 KPX aring w -15 KPX aring y -20 KPX aring yacute -20 KPX aring ydieresis -20 KPX atilde g -10 KPX atilde gbreve -10 KPX atilde gcommaaccent -10 KPX atilde v -15 KPX atilde w -15 KPX atilde y -20 KPX atilde yacute -20 KPX atilde ydieresis -20 KPX b l -10 KPX b lacute -10 KPX b lcommaaccent -10 KPX b lslash -10 KPX b u -20 KPX b uacute -20 KPX b ucircumflex -20 KPX b udieresis -20 KPX b ugrave -20 KPX b uhungarumlaut -20 KPX b umacron -20 KPX b uogonek -20 KPX b uring -20 KPX b v -20 KPX b y -20 KPX b yacute -20 KPX b ydieresis -20 KPX c h -10 KPX c k -20 KPX c kcommaaccent -20 KPX c l -20 KPX c lacute -20 KPX c lcommaaccent -20 KPX c lslash -20 KPX c y -10 KPX c yacute -10 KPX c ydieresis -10 KPX cacute h -10 KPX cacute k -20 KPX cacute kcommaaccent -20 KPX cacute l -20 KPX cacute lacute -20 KPX cacute lcommaaccent -20 KPX cacute lslash -20 KPX cacute y -10 KPX cacute yacute -10 KPX cacute ydieresis -10 KPX ccaron h -10 KPX ccaron k -20 KPX ccaron kcommaaccent -20 KPX ccaron l -20 KPX ccaron lacute -20 KPX ccaron lcommaaccent -20 KPX ccaron lslash -20 KPX ccaron y -10 KPX ccaron yacute -10 KPX ccaron ydieresis -10 KPX ccedilla h -10 KPX ccedilla k -20 KPX ccedilla kcommaaccent -20 KPX ccedilla l -20 KPX ccedilla lacute -20 KPX ccedilla lcommaaccent -20 KPX ccedilla lslash -20 KPX ccedilla y -10 KPX ccedilla yacute -10 KPX ccedilla ydieresis -10 KPX colon space -40 KPX comma quotedblright -120 KPX comma quoteright -120 KPX comma space -40 KPX d d -10 KPX d dcroat -10 KPX d v -15 KPX d w -15 KPX d y -15 KPX d yacute -15 KPX d ydieresis -15 KPX dcroat d -10 KPX dcroat dcroat -10 KPX dcroat v -15 KPX dcroat w -15 KPX dcroat y -15 KPX dcroat yacute -15 KPX dcroat ydieresis -15 KPX e comma 10 KPX e period 20 KPX e v -15 KPX e w -15 KPX e x -15 KPX e y -15 KPX e yacute -15 KPX e ydieresis -15 KPX eacute comma 10 KPX eacute period 20 KPX eacute v -15 KPX eacute w -15 KPX eacute x -15 KPX eacute y -15 KPX eacute yacute -15 KPX eacute ydieresis -15 KPX ecaron comma 10 KPX ecaron period 20 KPX ecaron v -15 KPX ecaron w -15 KPX ecaron x -15 KPX ecaron y -15 KPX ecaron yacute -15 KPX ecaron ydieresis -15 KPX ecircumflex comma 10 KPX ecircumflex period 20 KPX ecircumflex v -15 KPX ecircumflex w -15 KPX ecircumflex x -15 KPX ecircumflex y -15 KPX ecircumflex yacute -15 KPX ecircumflex ydieresis -15 KPX edieresis comma 10 KPX edieresis period 20 KPX edieresis v -15 KPX edieresis w -15 KPX edieresis x -15 KPX edieresis y -15 KPX edieresis yacute -15 KPX edieresis ydieresis -15 KPX edotaccent comma 10 KPX edotaccent period 20 KPX edotaccent v -15 KPX edotaccent w -15 KPX edotaccent x -15 KPX edotaccent y -15 KPX edotaccent yacute -15 KPX edotaccent ydieresis -15 KPX egrave comma 10 KPX egrave period 20 KPX egrave v -15 KPX egrave w -15 KPX egrave x -15 KPX egrave y -15 KPX egrave yacute -15 KPX egrave ydieresis -15 KPX emacron comma 10 KPX emacron period 20 KPX emacron v -15 KPX emacron w -15 KPX emacron x -15 KPX emacron y -15 KPX emacron yacute -15 KPX emacron ydieresis -15 KPX eogonek comma 10 KPX eogonek period 20 KPX eogonek v -15 KPX eogonek w -15 KPX eogonek x -15 KPX eogonek y -15 KPX eogonek yacute -15 KPX eogonek ydieresis -15 KPX f comma -10 KPX f e -10 KPX f eacute -10 KPX f ecaron -10 KPX f ecircumflex -10 KPX f edieresis -10 KPX f edotaccent -10 KPX f egrave -10 KPX f emacron -10 KPX f eogonek -10 KPX f o -20 KPX f oacute -20 KPX f ocircumflex -20 KPX f odieresis -20 KPX f ograve -20 KPX f ohungarumlaut -20 KPX f omacron -20 KPX f oslash -20 KPX f otilde -20 KPX f period -10 KPX f quotedblright 30 KPX f quoteright 30 KPX g e 10 KPX g eacute 10 KPX g ecaron 10 KPX g ecircumflex 10 KPX g edieresis 10 KPX g edotaccent 10 KPX g egrave 10 KPX g emacron 10 KPX g eogonek 10 KPX g g -10 KPX g gbreve -10 KPX g gcommaaccent -10 KPX gbreve e 10 KPX gbreve eacute 10 KPX gbreve ecaron 10 KPX gbreve ecircumflex 10 KPX gbreve edieresis 10 KPX gbreve edotaccent 10 KPX gbreve egrave 10 KPX gbreve emacron 10 KPX gbreve eogonek 10 KPX gbreve g -10 KPX gbreve gbreve -10 KPX gbreve gcommaaccent -10 KPX gcommaaccent e 10 KPX gcommaaccent eacute 10 KPX gcommaaccent ecaron 10 KPX gcommaaccent ecircumflex 10 KPX gcommaaccent edieresis 10 KPX gcommaaccent edotaccent 10 KPX gcommaaccent egrave 10 KPX gcommaaccent emacron 10 KPX gcommaaccent eogonek 10 KPX gcommaaccent g -10 KPX gcommaaccent gbreve -10 KPX gcommaaccent gcommaaccent -10 KPX h y -20 KPX h yacute -20 KPX h ydieresis -20 KPX k o -15 KPX k oacute -15 KPX k ocircumflex -15 KPX k odieresis -15 KPX k ograve -15 KPX k ohungarumlaut -15 KPX k omacron -15 KPX k oslash -15 KPX k otilde -15 KPX kcommaaccent o -15 KPX kcommaaccent oacute -15 KPX kcommaaccent ocircumflex -15 KPX kcommaaccent odieresis -15 KPX kcommaaccent ograve -15 KPX kcommaaccent ohungarumlaut -15 KPX kcommaaccent omacron -15 KPX kcommaaccent oslash -15 KPX kcommaaccent otilde -15 KPX l w -15 KPX l y -15 KPX l yacute -15 KPX l ydieresis -15 KPX lacute w -15 KPX lacute y -15 KPX lacute yacute -15 KPX lacute ydieresis -15 KPX lcommaaccent w -15 KPX lcommaaccent y -15 KPX lcommaaccent yacute -15 KPX lcommaaccent ydieresis -15 KPX lslash w -15 KPX lslash y -15 KPX lslash yacute -15 KPX lslash ydieresis -15 KPX m u -20 KPX m uacute -20 KPX m ucircumflex -20 KPX m udieresis -20 KPX m ugrave -20 KPX m uhungarumlaut -20 KPX m umacron -20 KPX m uogonek -20 KPX m uring -20 KPX m y -30 KPX m yacute -30 KPX m ydieresis -30 KPX n u -10 KPX n uacute -10 KPX n ucircumflex -10 KPX n udieresis -10 KPX n ugrave -10 KPX n uhungarumlaut -10 KPX n umacron -10 KPX n uogonek -10 KPX n uring -10 KPX n v -40 KPX n y -20 KPX n yacute -20 KPX n ydieresis -20 KPX nacute u -10 KPX nacute uacute -10 KPX nacute ucircumflex -10 KPX nacute udieresis -10 KPX nacute ugrave -10 KPX nacute uhungarumlaut -10 KPX nacute umacron -10 KPX nacute uogonek -10 KPX nacute uring -10 KPX nacute v -40 KPX nacute y -20 KPX nacute yacute -20 KPX nacute ydieresis -20 KPX ncaron u -10 KPX ncaron uacute -10 KPX ncaron ucircumflex -10 KPX ncaron udieresis -10 KPX ncaron ugrave -10 KPX ncaron uhungarumlaut -10 KPX ncaron umacron -10 KPX ncaron uogonek -10 KPX ncaron uring -10 KPX ncaron v -40 KPX ncaron y -20 KPX ncaron yacute -20 KPX ncaron ydieresis -20 KPX ncommaaccent u -10 KPX ncommaaccent uacute -10 KPX ncommaaccent ucircumflex -10 KPX ncommaaccent udieresis -10 KPX ncommaaccent ugrave -10 KPX ncommaaccent uhungarumlaut -10 KPX ncommaaccent umacron -10 KPX ncommaaccent uogonek -10 KPX ncommaaccent uring -10 KPX ncommaaccent v -40 KPX ncommaaccent y -20 KPX ncommaaccent yacute -20 KPX ncommaaccent ydieresis -20 KPX ntilde u -10 KPX ntilde uacute -10 KPX ntilde ucircumflex -10 KPX ntilde udieresis -10 KPX ntilde ugrave -10 KPX ntilde uhungarumlaut -10 KPX ntilde umacron -10 KPX ntilde uogonek -10 KPX ntilde uring -10 KPX ntilde v -40 KPX ntilde y -20 KPX ntilde yacute -20 KPX ntilde ydieresis -20 KPX o v -20 KPX o w -15 KPX o x -30 KPX o y -20 KPX o yacute -20 KPX o ydieresis -20 KPX oacute v -20 KPX oacute w -15 KPX oacute x -30 KPX oacute y -20 KPX oacute yacute -20 KPX oacute ydieresis -20 KPX ocircumflex v -20 KPX ocircumflex w -15 KPX ocircumflex x -30 KPX ocircumflex y -20 KPX ocircumflex yacute -20 KPX ocircumflex ydieresis -20 KPX odieresis v -20 KPX odieresis w -15 KPX odieresis x -30 KPX odieresis y -20 KPX odieresis yacute -20 KPX odieresis ydieresis -20 KPX ograve v -20 KPX ograve w -15 KPX ograve x -30 KPX ograve y -20 KPX ograve yacute -20 KPX ograve ydieresis -20 KPX ohungarumlaut v -20 KPX ohungarumlaut w -15 KPX ohungarumlaut x -30 KPX ohungarumlaut y -20 KPX ohungarumlaut yacute -20 KPX ohungarumlaut ydieresis -20 KPX omacron v -20 KPX omacron w -15 KPX omacron x -30 KPX omacron y -20 KPX omacron yacute -20 KPX omacron ydieresis -20 KPX oslash v -20 KPX oslash w -15 KPX oslash x -30 KPX oslash y -20 KPX oslash yacute -20 KPX oslash ydieresis -20 KPX otilde v -20 KPX otilde w -15 KPX otilde x -30 KPX otilde y -20 KPX otilde yacute -20 KPX otilde ydieresis -20 KPX p y -15 KPX p yacute -15 KPX p ydieresis -15 KPX period quotedblright -120 KPX period quoteright -120 KPX period space -40 KPX quotedblright space -80 KPX quoteleft quoteleft -46 KPX quoteright d -80 KPX quoteright dcroat -80 KPX quoteright l -20 KPX quoteright lacute -20 KPX quoteright lcommaaccent -20 KPX quoteright lslash -20 KPX quoteright quoteright -46 KPX quoteright r -40 KPX quoteright racute -40 KPX quoteright rcaron -40 KPX quoteright rcommaaccent -40 KPX quoteright s -60 KPX quoteright sacute -60 KPX quoteright scaron -60 KPX quoteright scedilla -60 KPX quoteright scommaaccent -60 KPX quoteright space -80 KPX quoteright v -20 KPX r c -20 KPX r cacute -20 KPX r ccaron -20 KPX r ccedilla -20 KPX r comma -60 KPX r d -20 KPX r dcroat -20 KPX r g -15 KPX r gbreve -15 KPX r gcommaaccent -15 KPX r hyphen -20 KPX r o -20 KPX r oacute -20 KPX r ocircumflex -20 KPX r odieresis -20 KPX r ograve -20 KPX r ohungarumlaut -20 KPX r omacron -20 KPX r oslash -20 KPX r otilde -20 KPX r period -60 KPX r q -20 KPX r s -15 KPX r sacute -15 KPX r scaron -15 KPX r scedilla -15 KPX r scommaaccent -15 KPX r t 20 KPX r tcommaaccent 20 KPX r v 10 KPX r y 10 KPX r yacute 10 KPX r ydieresis 10 KPX racute c -20 KPX racute cacute -20 KPX racute ccaron -20 KPX racute ccedilla -20 KPX racute comma -60 KPX racute d -20 KPX racute dcroat -20 KPX racute g -15 KPX racute gbreve -15 KPX racute gcommaaccent -15 KPX racute hyphen -20 KPX racute o -20 KPX racute oacute -20 KPX racute ocircumflex -20 KPX racute odieresis -20 KPX racute ograve -20 KPX racute ohungarumlaut -20 KPX racute omacron -20 KPX racute oslash -20 KPX racute otilde -20 KPX racute period -60 KPX racute q -20 KPX racute s -15 KPX racute sacute -15 KPX racute scaron -15 KPX racute scedilla -15 KPX racute scommaaccent -15 KPX racute t 20 KPX racute tcommaaccent 20 KPX racute v 10 KPX racute y 10 KPX racute yacute 10 KPX racute ydieresis 10 KPX rcaron c -20 KPX rcaron cacute -20 KPX rcaron ccaron -20 KPX rcaron ccedilla -20 KPX rcaron comma -60 KPX rcaron d -20 KPX rcaron dcroat -20 KPX rcaron g -15 KPX rcaron gbreve -15 KPX rcaron gcommaaccent -15 KPX rcaron hyphen -20 KPX rcaron o -20 KPX rcaron oacute -20 KPX rcaron ocircumflex -20 KPX rcaron odieresis -20 KPX rcaron ograve -20 KPX rcaron ohungarumlaut -20 KPX rcaron omacron -20 KPX rcaron oslash -20 KPX rcaron otilde -20 KPX rcaron period -60 KPX rcaron q -20 KPX rcaron s -15 KPX rcaron sacute -15 KPX rcaron scaron -15 KPX rcaron scedilla -15 KPX rcaron scommaaccent -15 KPX rcaron t 20 KPX rcaron tcommaaccent 20 KPX rcaron v 10 KPX rcaron y 10 KPX rcaron yacute 10 KPX rcaron ydieresis 10 KPX rcommaaccent c -20 KPX rcommaaccent cacute -20 KPX rcommaaccent ccaron -20 KPX rcommaaccent ccedilla -20 KPX rcommaaccent comma -60 KPX rcommaaccent d -20 KPX rcommaaccent dcroat -20 KPX rcommaaccent g -15 KPX rcommaaccent gbreve -15 KPX rcommaaccent gcommaaccent -15 KPX rcommaaccent hyphen -20 KPX rcommaaccent o -20 KPX rcommaaccent oacute -20 KPX rcommaaccent ocircumflex -20 KPX rcommaaccent odieresis -20 KPX rcommaaccent ograve -20 KPX rcommaaccent ohungarumlaut -20 KPX rcommaaccent omacron -20 KPX rcommaaccent oslash -20 KPX rcommaaccent otilde -20 KPX rcommaaccent period -60 KPX rcommaaccent q -20 KPX rcommaaccent s -15 KPX rcommaaccent sacute -15 KPX rcommaaccent scaron -15 KPX rcommaaccent scedilla -15 KPX rcommaaccent scommaaccent -15 KPX rcommaaccent t 20 KPX rcommaaccent tcommaaccent 20 KPX rcommaaccent v 10 KPX rcommaaccent y 10 KPX rcommaaccent yacute 10 KPX rcommaaccent ydieresis 10 KPX s w -15 KPX sacute w -15 KPX scaron w -15 KPX scedilla w -15 KPX scommaaccent w -15 KPX semicolon space -40 KPX space T -100 KPX space Tcaron -100 KPX space Tcommaaccent -100 KPX space V -80 KPX space W -80 KPX space Y -120 KPX space Yacute -120 KPX space Ydieresis -120 KPX space quotedblleft -80 KPX space quoteleft -60 KPX v a -20 KPX v aacute -20 KPX v abreve -20 KPX v acircumflex -20 KPX v adieresis -20 KPX v agrave -20 KPX v amacron -20 KPX v aogonek -20 KPX v aring -20 KPX v atilde -20 KPX v comma -80 KPX v o -30 KPX v oacute -30 KPX v ocircumflex -30 KPX v odieresis -30 KPX v ograve -30 KPX v ohungarumlaut -30 KPX v omacron -30 KPX v oslash -30 KPX v otilde -30 KPX v period -80 KPX w comma -40 KPX w o -20 KPX w oacute -20 KPX w ocircumflex -20 KPX w odieresis -20 KPX w ograve -20 KPX w ohungarumlaut -20 KPX w omacron -20 KPX w oslash -20 KPX w otilde -20 KPX w period -40 KPX x e -10 KPX x eacute -10 KPX x ecaron -10 KPX x ecircumflex -10 KPX x edieresis -10 KPX x edotaccent -10 KPX x egrave -10 KPX x emacron -10 KPX x eogonek -10 KPX y a -30 KPX y aacute -30 KPX y abreve -30 KPX y acircumflex -30 KPX y adieresis -30 KPX y agrave -30 KPX y amacron -30 KPX y aogonek -30 KPX y aring -30 KPX y atilde -30 KPX y comma -80 KPX y e -10 KPX y eacute -10 KPX y ecaron -10 KPX y ecircumflex -10 KPX y edieresis -10 KPX y edotaccent -10 KPX y egrave -10 KPX y emacron -10 KPX y eogonek -10 KPX y o -25 KPX y oacute -25 KPX y ocircumflex -25 KPX y odieresis -25 KPX y ograve -25 KPX y ohungarumlaut -25 KPX y omacron -25 KPX y oslash -25 KPX y otilde -25 KPX y period -80 KPX yacute a -30 KPX yacute aacute -30 KPX yacute abreve -30 KPX yacute acircumflex -30 KPX yacute adieresis -30 KPX yacute agrave -30 KPX yacute amacron -30 KPX yacute aogonek -30 KPX yacute aring -30 KPX yacute atilde -30 KPX yacute comma -80 KPX yacute e -10 KPX yacute eacute -10 KPX yacute ecaron -10 KPX yacute ecircumflex -10 KPX yacute edieresis -10 KPX yacute edotaccent -10 KPX yacute egrave -10 KPX yacute emacron -10 KPX yacute eogonek -10 KPX yacute o -25 KPX yacute oacute -25 KPX yacute ocircumflex -25 KPX yacute odieresis -25 KPX yacute ograve -25 KPX yacute ohungarumlaut -25 KPX yacute omacron -25 KPX yacute oslash -25 KPX yacute otilde -25 KPX yacute period -80 KPX ydieresis a -30 KPX ydieresis aacute -30 KPX ydieresis abreve -30 KPX ydieresis acircumflex -30 KPX ydieresis adieresis -30 KPX ydieresis agrave -30 KPX ydieresis amacron -30 KPX ydieresis aogonek -30 KPX ydieresis aring -30 KPX ydieresis atilde -30 KPX ydieresis comma -80 KPX ydieresis e -10 KPX ydieresis eacute -10 KPX ydieresis ecaron -10 KPX ydieresis ecircumflex -10 KPX ydieresis edieresis -10 KPX ydieresis edotaccent -10 KPX ydieresis egrave -10 KPX ydieresis emacron -10 KPX ydieresis eogonek -10 KPX ydieresis o -25 KPX ydieresis oacute -25 KPX ydieresis ocircumflex -25 KPX ydieresis odieresis -25 KPX ydieresis ograve -25 KPX ydieresis ohungarumlaut -25 KPX ydieresis omacron -25 KPX ydieresis oslash -25 KPX ydieresis otilde -25 KPX ydieresis period -80 KPX z e 10 KPX z eacute 10 KPX z ecaron 10 KPX z ecircumflex 10 KPX z edieresis 10 KPX z edotaccent 10 KPX z egrave 10 KPX z emacron 10 KPX z eogonek 10 KPX zacute e 10 KPX zacute eacute 10 KPX zacute ecaron 10 KPX zacute ecircumflex 10 KPX zacute edieresis 10 KPX zacute edotaccent 10 KPX zacute egrave 10 KPX zacute emacron 10 KPX zacute eogonek 10 KPX zcaron e 10 KPX zcaron eacute 10 KPX zcaron ecaron 10 KPX zcaron ecircumflex 10 KPX zcaron edieresis 10 KPX zcaron edotaccent 10 KPX zcaron egrave 10 KPX zcaron emacron 10 KPX zcaron eogonek 10 KPX zdotaccent e 10 KPX zdotaccent eacute 10 KPX zdotaccent ecaron 10 KPX zdotaccent ecircumflex 10 KPX zdotaccent edieresis 10 KPX zdotaccent edotaccent 10 KPX zdotaccent egrave 10 KPX zdotaccent emacron 10 KPX zdotaccent eogonek 10 EndKernPairs EndKernData EndFontMetrics gle-graphics-4.2.4c/src/fonts/Adobe-Core35_AFMs-314/ITCAvantGarde-BookOblique.afm0000664000000000000000000010404311405446017025352 0ustar rootrootStartFontMetrics 4.1 Comment Copyright (c) 1985, 1987, 1989, 1990, 1991, 1992, 1997 Adobe Systems Incorporated. All Rights Reserved. Comment Creation Date: Thu May 1 14:07:08 1997 Comment UniqueID 43084 Comment VMusage 11964 62330 FontName AvantGarde-BookOblique FullName ITC Avant Garde Gothic Book Oblique FamilyName ITC Avant Garde Gothic Weight Book ItalicAngle -10.5 IsFixedPitch false FontBBox -113 -222 1279 955 UnderlinePosition -100 UnderlineThickness 50 Version 002.000 Notice Copyright (c) 1985, 1987, 1989, 1990, 1991, 1992, 1997 Adobe Systems Incorporated. All Rights Reserved.ITC Avant Garde Gothic is a registered trademark of International Typeface Corporation. EncodingScheme AdobeStandardEncoding CapHeight 740 XHeight 547 Ascender 740 Descender -192 StdHW 63 StdVW 70 StartCharMetrics 314 C 32 ; WX 277 ; N space ; B 0 0 0 0 ; C 33 ; WX 295 ; N exclam ; B 111 0 322 740 ; C 34 ; WX 309 ; N quotedbl ; B 130 444 410 740 ; C 35 ; WX 554 ; N numbersign ; B 71 0 620 740 ; C 36 ; WX 554 ; N dollar ; B 107 -70 581 811 ; C 37 ; WX 775 ; N percent ; B 124 -13 787 751 ; C 38 ; WX 757 ; N ampersand ; B 92 -12 775 753 ; C 39 ; WX 351 ; N quoteright ; B 195 546 393 740 ; C 40 ; WX 369 ; N parenleft ; B 89 -205 495 757 ; C 41 ; WX 369 ; N parenright ; B -24 -205 382 757 ; C 42 ; WX 425 ; N asterisk ; B 170 446 479 740 ; C 43 ; WX 606 ; N plus ; B 92 0 608 506 ; C 44 ; WX 277 ; N comma ; B 2 -67 199 126 ; C 45 ; WX 332 ; N hyphen ; B 76 248 360 315 ; C 46 ; WX 277 ; N period ; B 102 0 199 126 ; C 47 ; WX 437 ; N slash ; B 25 -100 540 740 ; C 48 ; WX 554 ; N zero ; B 71 -13 622 753 ; C 49 ; WX 554 ; N one ; B 260 0 473 740 ; C 50 ; WX 554 ; N two ; B 40 0 615 753 ; C 51 ; WX 554 ; N three ; B 73 -13 565 753 ; C 52 ; WX 554 ; N four ; B 39 0 598 740 ; C 53 ; WX 554 ; N five ; B 69 -13 605 740 ; C 54 ; WX 554 ; N six ; B 65 -13 580 739 ; C 55 ; WX 554 ; N seven ; B 110 0 628 740 ; C 56 ; WX 554 ; N eight ; B 77 -13 580 753 ; C 57 ; WX 554 ; N nine ; B 111 0 626 752 ; C 58 ; WX 277 ; N colon ; B 102 0 278 548 ; C 59 ; WX 277 ; N semicolon ; B 2 -67 278 548 ; C 60 ; WX 606 ; N less ; B 87 -8 649 514 ; C 61 ; WX 606 ; N equal ; B 73 118 627 388 ; C 62 ; WX 606 ; N greater ; B 51 -8 613 514 ; C 63 ; WX 591 ; N question ; B 158 0 628 752 ; C 64 ; WX 867 ; N at ; B 126 -13 888 753 ; C 65 ; WX 740 ; N A ; B 12 0 729 740 ; C 66 ; WX 574 ; N B ; B 74 0 606 740 ; C 67 ; WX 813 ; N C ; B 105 -13 870 752 ; C 68 ; WX 744 ; N D ; B 74 0 773 740 ; C 69 ; WX 536 ; N E ; B 70 0 612 740 ; C 70 ; WX 485 ; N F ; B 70 0 581 740 ; C 71 ; WX 872 ; N G ; B 103 -13 891 753 ; C 72 ; WX 683 ; N H ; B 76 0 744 740 ; C 73 ; WX 226 ; N I ; B 76 0 287 740 ; C 74 ; WX 482 ; N J ; B 37 -13 539 740 ; C 75 ; WX 591 ; N K ; B 81 0 728 740 ; C 76 ; WX 462 ; N L ; B 82 0 474 740 ; C 77 ; WX 919 ; N M ; B 76 0 980 740 ; C 78 ; WX 740 ; N N ; B 75 0 801 740 ; C 79 ; WX 869 ; N O ; B 105 -13 901 753 ; C 80 ; WX 592 ; N P ; B 75 0 664 740 ; C 81 ; WX 871 ; N Q ; B 102 -13 912 753 ; C 82 ; WX 607 ; N R ; B 70 0 669 740 ; C 83 ; WX 498 ; N S ; B 57 -13 561 753 ; C 84 ; WX 426 ; N T ; B 131 0 556 740 ; C 85 ; WX 655 ; N U ; B 118 -13 716 740 ; C 86 ; WX 702 ; N V ; B 145 0 830 740 ; C 87 ; WX 960 ; N W ; B 148 0 1087 740 ; C 88 ; WX 609 ; N X ; B 8 0 724 740 ; C 89 ; WX 592 ; N Y ; B 138 0 729 740 ; C 90 ; WX 480 ; N Z ; B 12 0 596 740 ; C 91 ; WX 351 ; N bracketleft ; B 145 -179 477 753 ; C 92 ; WX 605 ; N backslash ; B 255 -100 458 740 ; C 93 ; WX 351 ; N bracketright ; B -19 -179 312 753 ; C 94 ; WX 606 ; N asciicircum ; B 110 307 610 740 ; C 95 ; WX 500 ; N underscore ; B -23 -125 486 -75 ; C 96 ; WX 351 ; N quoteleft ; B 232 546 358 740 ; C 97 ; WX 683 ; N a ; B 88 -13 722 561 ; C 98 ; WX 682 ; N b ; B 68 -13 703 740 ; C 99 ; WX 647 ; N c ; B 87 -13 678 561 ; C 100 ; WX 685 ; N d ; B 85 -13 755 740 ; C 101 ; WX 650 ; N e ; B 84 -13 664 561 ; C 102 ; WX 314 ; N f ; B 104 0 454 753 ; L i fi ; L l fl ; C 103 ; WX 673 ; N g ; B 56 -215 707 561 ; C 104 ; WX 610 ; N h ; B 62 0 606 740 ; C 105 ; WX 200 ; N i ; B 65 0 272 740 ; C 106 ; WX 203 ; N j ; B -80 -192 274 740 ; C 107 ; WX 502 ; N k ; B 70 0 588 740 ; C 108 ; WX 200 ; N l ; B 65 0 272 740 ; C 109 ; WX 938 ; N m ; B 66 0 938 561 ; C 110 ; WX 610 ; N n ; B 65 0 609 561 ; C 111 ; WX 655 ; N o ; B 88 -13 669 561 ; C 112 ; WX 682 ; N p ; B 28 -192 699 561 ; C 113 ; WX 682 ; N q ; B 83 -192 717 561 ; C 114 ; WX 301 ; N r ; B 65 0 395 561 ; C 115 ; WX 388 ; N s ; B 49 -13 424 561 ; C 116 ; WX 339 ; N t ; B 104 0 431 740 ; C 117 ; WX 608 ; N u ; B 100 -13 642 547 ; C 118 ; WX 554 ; N v ; B 108 0 647 547 ; C 119 ; WX 831 ; N w ; B 114 0 921 547 ; C 120 ; WX 480 ; N x ; B 12 0 569 547 ; C 121 ; WX 536 ; N y ; B 97 -192 624 547 ; C 122 ; WX 425 ; N z ; B 10 0 498 547 ; C 123 ; WX 351 ; N braceleft ; B 115 -189 468 740 ; C 124 ; WX 672 ; N bar ; B 258 -222 517 778 ; C 125 ; WX 351 ; N braceright ; B -15 -189 338 740 ; C 126 ; WX 606 ; N asciitilde ; B 114 179 584 319 ; C 161 ; WX 295 ; N exclamdown ; B 74 -192 286 548 ; C 162 ; WX 554 ; N cent ; B 115 62 596 707 ; C 163 ; WX 554 ; N sterling ; B 29 0 614 753 ; C 164 ; WX 166 ; N fraction ; B -113 0 417 740 ; C 165 ; WX 554 ; N yen ; B 75 0 687 740 ; C 166 ; WX 554 ; N florin ; B -39 -153 669 818 ; C 167 ; WX 615 ; N section ; B 118 -141 597 753 ; C 168 ; WX 554 ; N currency ; B 24 42 645 580 ; C 169 ; WX 198 ; N quotesingle ; B 153 444 277 740 ; C 170 ; WX 502 ; N quotedblleft ; B 234 546 507 740 ; C 171 ; WX 425 ; N guillemotleft ; B 92 81 469 481 ; C 172 ; WX 251 ; N guilsinglleft ; B 92 81 295 481 ; C 173 ; WX 251 ; N guilsinglright ; B 60 81 263 481 ; C 174 ; WX 487 ; N fi ; B 104 0 559 753 ; C 175 ; WX 485 ; N fl ; B 104 0 557 753 ; C 177 ; WX 500 ; N endash ; B 81 248 523 315 ; C 178 ; WX 553 ; N dagger ; B 146 -133 593 740 ; C 179 ; WX 553 ; N daggerdbl ; B 72 -133 593 740 ; C 180 ; WX 277 ; N periodcentered ; B 137 190 235 316 ; C 182 ; WX 564 ; N paragraph ; B 119 -110 688 740 ; C 183 ; WX 606 ; N bullet ; B 217 222 528 532 ; C 184 ; WX 354 ; N quotesinglbase ; B 76 -68 274 126 ; C 185 ; WX 502 ; N quotedblbase ; B 76 -68 422 126 ; C 186 ; WX 484 ; N quotedblright ; B 197 546 542 740 ; C 187 ; WX 425 ; N guillemotright ; B 60 81 437 481 ; C 188 ; WX 1000 ; N ellipsis ; B 130 0 893 126 ; C 189 ; WX 1174 ; N perthousand ; B 128 -13 1182 751 ; C 191 ; WX 591 ; N questiondown ; B 64 -205 534 548 ; C 193 ; WX 378 ; N grave ; B 204 619 425 786 ; C 194 ; WX 375 ; N acute ; B 203 619 444 786 ; C 195 ; WX 502 ; N circumflex ; B 192 639 546 764 ; C 196 ; WX 439 ; N tilde ; B 179 651 520 754 ; C 197 ; WX 485 ; N macron ; B 197 669 547 736 ; C 198 ; WX 453 ; N breve ; B 192 651 541 754 ; C 199 ; WX 222 ; N dotaccent ; B 192 639 290 765 ; C 200 ; WX 369 ; N dieresis ; B 191 639 437 765 ; C 202 ; WX 332 ; N ring ; B 191 600 401 807 ; C 203 ; WX 324 ; N cedilla ; B 52 -222 231 3 ; C 205 ; WX 552 ; N hungarumlaut ; B 230 605 623 786 ; C 206 ; WX 302 ; N ogonek ; B 53 -191 202 0 ; C 207 ; WX 502 ; N caron ; B 210 639 565 764 ; C 208 ; WX 1000 ; N emdash ; B 81 248 1023 315 ; C 225 ; WX 992 ; N AE ; B -20 0 1044 740 ; C 227 ; WX 369 ; N ordfeminine ; B 102 407 494 753 ; C 232 ; WX 517 ; N Lslash ; B 107 0 529 740 ; C 233 ; WX 868 ; N Oslash ; B 76 -83 929 819 ; C 234 ; WX 1194 ; N OE ; B 107 -13 1279 753 ; C 235 ; WX 369 ; N ordmasculine ; B 116 407 466 753 ; C 241 ; WX 1157 ; N ae ; B 80 -13 1169 561 ; C 245 ; WX 200 ; N dotlessi ; B 65 0 236 547 ; C 248 ; WX 300 ; N lslash ; B 95 0 354 740 ; C 249 ; WX 653 ; N oslash ; B 51 -64 703 614 ; C 250 ; WX 1137 ; N oe ; B 80 -13 1160 561 ; C 251 ; WX 554 ; N germandbls ; B 61 -13 578 753 ; C -1 ; WX 226 ; N Idieresis ; B 76 0 396 928 ; C -1 ; WX 650 ; N eacute ; B 84 -13 664 786 ; C -1 ; WX 683 ; N abreve ; B 88 -13 722 754 ; C -1 ; WX 608 ; N uhungarumlaut ; B 100 -13 671 786 ; C -1 ; WX 650 ; N ecaron ; B 84 -13 664 764 ; C -1 ; WX 592 ; N Ydieresis ; B 138 0 729 928 ; C -1 ; WX 606 ; N divide ; B 92 -13 608 519 ; C -1 ; WX 592 ; N Yacute ; B 138 0 729 949 ; C -1 ; WX 740 ; N Acircumflex ; B 12 0 729 927 ; C -1 ; WX 683 ; N aacute ; B 88 -13 722 786 ; C -1 ; WX 655 ; N Ucircumflex ; B 118 -13 716 927 ; C -1 ; WX 536 ; N yacute ; B 97 -192 624 786 ; C -1 ; WX 388 ; N scommaaccent ; B 49 -222 424 561 ; C -1 ; WX 650 ; N ecircumflex ; B 84 -13 664 764 ; C -1 ; WX 655 ; N Uring ; B 118 -13 716 955 ; C -1 ; WX 655 ; N Udieresis ; B 118 -13 716 928 ; C -1 ; WX 683 ; N aogonek ; B 88 -191 722 561 ; C -1 ; WX 655 ; N Uacute ; B 118 -13 716 949 ; C -1 ; WX 608 ; N uogonek ; B 100 -191 642 547 ; C -1 ; WX 536 ; N Edieresis ; B 70 0 612 928 ; C -1 ; WX 790 ; N Dcroat ; B 104 0 813 740 ; C -1 ; WX 250 ; N commaaccent ; B -18 -222 159 -54 ; C -1 ; WX 747 ; N copyright ; B 53 -12 830 752 ; C -1 ; WX 536 ; N Emacron ; B 70 0 612 899 ; C -1 ; WX 647 ; N ccaron ; B 87 -13 678 764 ; C -1 ; WX 683 ; N aring ; B 88 -13 722 807 ; C -1 ; WX 740 ; N Ncommaaccent ; B 75 -202 801 740 ; C -1 ; WX 200 ; N lacute ; B 65 0 416 949 ; C -1 ; WX 683 ; N agrave ; B 88 -13 722 786 ; C -1 ; WX 426 ; N Tcommaaccent ; B 70 -222 556 740 ; C -1 ; WX 813 ; N Cacute ; B 105 -13 870 949 ; C -1 ; WX 683 ; N atilde ; B 88 -13 722 754 ; C -1 ; WX 536 ; N Edotaccent ; B 70 0 612 928 ; C -1 ; WX 388 ; N scaron ; B 49 -13 508 764 ; C -1 ; WX 388 ; N scedilla ; B 49 -222 424 561 ; C -1 ; WX 200 ; N iacute ; B 65 0 396 786 ; C -1 ; WX 471 ; N lozenge ; B 82 0 524 719 ; C -1 ; WX 607 ; N Rcaron ; B 70 0 669 927 ; C -1 ; WX 872 ; N Gcommaaccent ; B 103 -222 891 753 ; C -1 ; WX 608 ; N ucircumflex ; B 100 -13 642 764 ; C -1 ; WX 683 ; N acircumflex ; B 88 -13 722 764 ; C -1 ; WX 740 ; N Amacron ; B 12 0 729 899 ; C -1 ; WX 301 ; N rcaron ; B 65 0 494 764 ; C -1 ; WX 647 ; N ccedilla ; B 87 -222 678 561 ; C -1 ; WX 480 ; N Zdotaccent ; B 12 0 596 928 ; C -1 ; WX 592 ; N Thorn ; B 60 0 621 740 ; C -1 ; WX 869 ; N Omacron ; B 105 -13 901 899 ; C -1 ; WX 607 ; N Racute ; B 70 0 669 949 ; C -1 ; WX 498 ; N Sacute ; B 57 -13 561 949 ; C -1 ; WX 755 ; N dcaron ; B 85 -13 929 740 ; C -1 ; WX 655 ; N Umacron ; B 118 -13 716 899 ; C -1 ; WX 608 ; N uring ; B 100 -13 642 807 ; C -1 ; WX 332 ; N threesuperior ; B 98 289 408 747 ; C -1 ; WX 869 ; N Ograve ; B 105 -13 901 949 ; C -1 ; WX 740 ; N Agrave ; B 12 0 729 949 ; C -1 ; WX 740 ; N Abreve ; B 12 0 729 917 ; C -1 ; WX 606 ; N multiply ; B 87 24 612 482 ; C -1 ; WX 608 ; N uacute ; B 100 -13 642 786 ; C -1 ; WX 426 ; N Tcaron ; B 131 0 557 927 ; C -1 ; WX 476 ; N partialdiff ; B 46 -38 529 704 ; C -1 ; WX 536 ; N ydieresis ; B 97 -192 624 765 ; C -1 ; WX 740 ; N Nacute ; B 75 0 801 949 ; C -1 ; WX 200 ; N icircumflex ; B 41 0 395 764 ; C -1 ; WX 536 ; N Ecircumflex ; B 70 0 612 927 ; C -1 ; WX 683 ; N adieresis ; B 88 -13 722 765 ; C -1 ; WX 650 ; N edieresis ; B 84 -13 664 765 ; C -1 ; WX 647 ; N cacute ; B 87 -13 678 786 ; C -1 ; WX 610 ; N nacute ; B 65 0 609 786 ; C -1 ; WX 608 ; N umacron ; B 100 -13 642 736 ; C -1 ; WX 740 ; N Ncaron ; B 75 0 801 927 ; C -1 ; WX 226 ; N Iacute ; B 76 0 439 949 ; C -1 ; WX 606 ; N plusminus ; B 47 -24 618 518 ; C -1 ; WX 672 ; N brokenbar ; B 272 -147 503 703 ; C -1 ; WX 747 ; N registered ; B 53 -12 830 752 ; C -1 ; WX 872 ; N Gbreve ; B 103 -13 891 917 ; C -1 ; WX 226 ; N Idotaccent ; B 76 0 322 928 ; C -1 ; WX 600 ; N summation ; B 15 -10 652 706 ; C -1 ; WX 536 ; N Egrave ; B 70 0 612 949 ; C -1 ; WX 301 ; N racute ; B 65 0 467 786 ; C -1 ; WX 655 ; N omacron ; B 88 -13 669 736 ; C -1 ; WX 480 ; N Zacute ; B 12 0 596 949 ; C -1 ; WX 480 ; N Zcaron ; B 12 0 596 927 ; C -1 ; WX 549 ; N greaterequal ; B 26 0 604 658 ; C -1 ; WX 790 ; N Eth ; B 104 0 813 740 ; C -1 ; WX 813 ; N Ccedilla ; B 105 -222 870 752 ; C -1 ; WX 200 ; N lcommaaccent ; B -43 -222 272 740 ; C -1 ; WX 359 ; N tcaron ; B 104 0 539 780 ; C -1 ; WX 650 ; N eogonek ; B 84 -191 664 561 ; C -1 ; WX 655 ; N Uogonek ; B 118 -191 716 740 ; C -1 ; WX 740 ; N Aacute ; B 12 0 729 949 ; C -1 ; WX 740 ; N Adieresis ; B 12 0 729 928 ; C -1 ; WX 650 ; N egrave ; B 84 -13 664 786 ; C -1 ; WX 425 ; N zacute ; B 10 0 498 786 ; C -1 ; WX 200 ; N iogonek ; B -8 -191 272 740 ; C -1 ; WX 869 ; N Oacute ; B 105 -13 901 949 ; C -1 ; WX 655 ; N oacute ; B 88 -13 669 786 ; C -1 ; WX 683 ; N amacron ; B 88 -13 722 736 ; C -1 ; WX 388 ; N sacute ; B 49 -13 451 786 ; C -1 ; WX 200 ; N idieresis ; B 65 0 353 765 ; C -1 ; WX 869 ; N Ocircumflex ; B 105 -13 901 927 ; C -1 ; WX 655 ; N Ugrave ; B 118 -13 716 949 ; C -1 ; WX 612 ; N Delta ; B 6 0 608 688 ; C -1 ; WX 682 ; N thorn ; B 28 -192 699 740 ; C -1 ; WX 332 ; N twosuperior ; B 74 296 433 747 ; C -1 ; WX 869 ; N Odieresis ; B 105 -13 901 928 ; C -1 ; WX 608 ; N mu ; B 46 -184 628 547 ; C -1 ; WX 200 ; N igrave ; B 65 0 296 786 ; C -1 ; WX 655 ; N ohungarumlaut ; B 88 -13 715 786 ; C -1 ; WX 536 ; N Eogonek ; B 70 -191 612 740 ; C -1 ; WX 685 ; N dcroat ; B 85 -13 801 740 ; C -1 ; WX 831 ; N threequarters ; B 126 0 825 747 ; C -1 ; WX 498 ; N Scedilla ; B 57 -222 561 753 ; C -1 ; WX 260 ; N lcaron ; B 65 0 446 740 ; C -1 ; WX 591 ; N Kcommaaccent ; B 81 -202 728 740 ; C -1 ; WX 462 ; N Lacute ; B 82 0 518 949 ; C -1 ; WX 1000 ; N trademark ; B 137 296 953 740 ; C -1 ; WX 650 ; N edotaccent ; B 84 -13 664 765 ; C -1 ; WX 226 ; N Igrave ; B 76 0 340 949 ; C -1 ; WX 226 ; N Imacron ; B 76 0 423 899 ; C -1 ; WX 462 ; N Lcaron ; B 82 0 592 740 ; C -1 ; WX 831 ; N onehalf ; B 164 0 810 740 ; C -1 ; WX 549 ; N lessequal ; B 26 0 645 658 ; C -1 ; WX 655 ; N ocircumflex ; B 88 -13 669 764 ; C -1 ; WX 610 ; N ntilde ; B 65 0 609 754 ; C -1 ; WX 655 ; N Uhungarumlaut ; B 118 -13 725 949 ; C -1 ; WX 536 ; N Eacute ; B 70 0 612 949 ; C -1 ; WX 650 ; N emacron ; B 84 -13 664 736 ; C -1 ; WX 673 ; N gbreve ; B 56 -215 707 754 ; C -1 ; WX 831 ; N onequarter ; B 183 0 770 740 ; C -1 ; WX 498 ; N Scaron ; B 57 -13 593 927 ; C -1 ; WX 498 ; N Scommaaccent ; B 57 -222 561 753 ; C -1 ; WX 869 ; N Ohungarumlaut ; B 105 -13 901 949 ; C -1 ; WX 400 ; N degree ; B 158 421 451 709 ; C -1 ; WX 655 ; N ograve ; B 88 -13 669 786 ; C -1 ; WX 813 ; N Ccaron ; B 105 -13 870 927 ; C -1 ; WX 608 ; N ugrave ; B 100 -13 642 786 ; C -1 ; WX 453 ; N radical ; B 78 -58 585 756 ; C -1 ; WX 744 ; N Dcaron ; B 74 0 773 927 ; C -1 ; WX 301 ; N rcommaaccent ; B -33 -222 395 561 ; C -1 ; WX 740 ; N Ntilde ; B 75 0 801 917 ; C -1 ; WX 655 ; N otilde ; B 88 -13 669 754 ; C -1 ; WX 607 ; N Rcommaaccent ; B 70 -202 669 740 ; C -1 ; WX 462 ; N Lcommaaccent ; B 82 -222 474 740 ; C -1 ; WX 740 ; N Atilde ; B 12 0 729 917 ; C -1 ; WX 740 ; N Aogonek ; B 12 -191 729 740 ; C -1 ; WX 740 ; N Aring ; B 12 0 729 955 ; C -1 ; WX 869 ; N Otilde ; B 105 -13 901 917 ; C -1 ; WX 425 ; N zdotaccent ; B 10 0 498 765 ; C -1 ; WX 536 ; N Ecaron ; B 70 0 612 927 ; C -1 ; WX 226 ; N Iogonek ; B 1 -191 287 740 ; C -1 ; WX 502 ; N kcommaaccent ; B 70 -202 588 740 ; C -1 ; WX 606 ; N minus ; B 92 219 608 287 ; C -1 ; WX 226 ; N Icircumflex ; B 76 0 439 927 ; C -1 ; WX 610 ; N ncaron ; B 65 0 619 764 ; C -1 ; WX 339 ; N tcommaaccent ; B 27 -222 431 740 ; C -1 ; WX 606 ; N logicalnot ; B 110 109 627 388 ; C -1 ; WX 655 ; N odieresis ; B 88 -13 669 765 ; C -1 ; WX 608 ; N udieresis ; B 100 -13 642 765 ; C -1 ; WX 549 ; N notequal ; B 33 -29 610 541 ; C -1 ; WX 673 ; N gcommaaccent ; B 56 -215 707 786 ; C -1 ; WX 655 ; N eth ; B 88 -12 675 753 ; C -1 ; WX 425 ; N zcaron ; B 10 0 527 764 ; C -1 ; WX 610 ; N ncommaaccent ; B 65 -202 609 561 ; C -1 ; WX 332 ; N onesuperior ; B 190 296 335 740 ; C -1 ; WX 200 ; N imacron ; B 65 0 379 736 ; EndCharMetrics StartKernData StartKernPairs 922 KPX A T -81 KPX A Tcaron -81 KPX A Tcommaaccent -81 KPX A V -122 KPX A W -95 KPX A Y -122 KPX A Yacute -122 KPX A Ydieresis -122 KPX A v -73 KPX A w -65 KPX A y -72 KPX A yacute -72 KPX A ydieresis -72 KPX Aacute T -81 KPX Aacute Tcaron -81 KPX Aacute Tcommaaccent -81 KPX Aacute V -122 KPX Aacute W -95 KPX Aacute Y -122 KPX Aacute Yacute -122 KPX Aacute Ydieresis -122 KPX Aacute v -73 KPX Aacute w -65 KPX Aacute y -72 KPX Aacute yacute -72 KPX Aacute ydieresis -72 KPX Abreve T -81 KPX Abreve Tcaron -81 KPX Abreve Tcommaaccent -81 KPX Abreve V -122 KPX Abreve W -95 KPX Abreve Y -122 KPX Abreve Yacute -122 KPX Abreve Ydieresis -122 KPX Abreve v -73 KPX Abreve w -65 KPX Abreve y -72 KPX Abreve yacute -72 KPX Abreve ydieresis -72 KPX Acircumflex T -81 KPX Acircumflex Tcaron -81 KPX Acircumflex Tcommaaccent -81 KPX Acircumflex V -122 KPX Acircumflex W -95 KPX Acircumflex Y -122 KPX Acircumflex Yacute -122 KPX Acircumflex Ydieresis -122 KPX Acircumflex v -73 KPX Acircumflex w -65 KPX Acircumflex y -72 KPX Acircumflex yacute -72 KPX Acircumflex ydieresis -72 KPX Adieresis T -81 KPX Adieresis Tcaron -81 KPX Adieresis Tcommaaccent -81 KPX Adieresis V -122 KPX Adieresis W -95 KPX Adieresis Y -122 KPX Adieresis Yacute -122 KPX Adieresis Ydieresis -122 KPX Adieresis v -73 KPX Adieresis w -65 KPX Adieresis y -72 KPX Adieresis yacute -72 KPX Adieresis ydieresis -72 KPX Agrave T -81 KPX Agrave Tcaron -81 KPX Agrave Tcommaaccent -81 KPX Agrave V -122 KPX Agrave W -95 KPX Agrave Y -122 KPX Agrave Yacute -122 KPX Agrave Ydieresis -122 KPX Agrave v -73 KPX Agrave w -65 KPX Agrave y -72 KPX Agrave yacute -72 KPX Agrave ydieresis -72 KPX Amacron T -81 KPX Amacron Tcaron -81 KPX Amacron Tcommaaccent -81 KPX Amacron V -122 KPX Amacron W -95 KPX Amacron Y -122 KPX Amacron Yacute -122 KPX Amacron Ydieresis -122 KPX Amacron v -73 KPX Amacron w -65 KPX Amacron y -72 KPX Amacron yacute -72 KPX Amacron ydieresis -72 KPX Aogonek T -81 KPX Aogonek Tcaron -81 KPX Aogonek Tcommaaccent -81 KPX Aogonek V -122 KPX Aogonek W -95 KPX Aogonek Y -122 KPX Aogonek Yacute -122 KPX Aogonek Ydieresis -122 KPX Aogonek v -73 KPX Aogonek w -65 KPX Aogonek y -72 KPX Aogonek yacute -72 KPX Aogonek ydieresis -72 KPX Aring T -81 KPX Aring Tcaron -81 KPX Aring Tcommaaccent -81 KPX Aring V -122 KPX Aring W -95 KPX Aring Y -122 KPX Aring Yacute -122 KPX Aring Ydieresis -122 KPX Aring v -73 KPX Aring w -65 KPX Aring y -72 KPX Aring yacute -72 KPX Aring ydieresis -72 KPX Atilde T -81 KPX Atilde Tcaron -81 KPX Atilde Tcommaaccent -81 KPX Atilde V -122 KPX Atilde W -95 KPX Atilde Y -122 KPX Atilde Yacute -122 KPX Atilde Ydieresis -122 KPX Atilde v -73 KPX Atilde w -65 KPX Atilde y -72 KPX Atilde yacute -72 KPX Atilde ydieresis -72 KPX F A -60 KPX F Aacute -60 KPX F Abreve -60 KPX F Acircumflex -60 KPX F Adieresis -60 KPX F Agrave -60 KPX F Amacron -60 KPX F Aogonek -60 KPX F Aring -60 KPX F Atilde -60 KPX F comma -122 KPX F period -79 KPX L T -46 KPX L Tcaron -46 KPX L Tcommaaccent -46 KPX L V -113 KPX L W -67 KPX L Y -91 KPX L Yacute -91 KPX L Ydieresis -91 KPX L y -23 KPX L yacute -23 KPX L ydieresis -23 KPX Lacute T -46 KPX Lacute Tcaron -46 KPX Lacute Tcommaaccent -46 KPX Lacute V -113 KPX Lacute W -67 KPX Lacute Y -91 KPX Lacute Yacute -91 KPX Lacute Ydieresis -91 KPX Lacute y -23 KPX Lacute yacute -23 KPX Lacute ydieresis -23 KPX Lcaron y -23 KPX Lcaron yacute -23 KPX Lcaron ydieresis -23 KPX Lcommaaccent T -46 KPX Lcommaaccent Tcaron -46 KPX Lcommaaccent Tcommaaccent -46 KPX Lcommaaccent V -113 KPX Lcommaaccent W -67 KPX Lcommaaccent Y -91 KPX Lcommaaccent Yacute -91 KPX Lcommaaccent Ydieresis -91 KPX Lcommaaccent y -23 KPX Lcommaaccent yacute -23 KPX Lcommaaccent ydieresis -23 KPX Lslash T -46 KPX Lslash Tcaron -46 KPX Lslash Tcommaaccent -46 KPX Lslash V -113 KPX Lslash W -67 KPX Lslash Y -91 KPX Lslash Yacute -91 KPX Lslash Ydieresis -91 KPX Lslash y -23 KPX Lslash yacute -23 KPX Lslash ydieresis -23 KPX P A -74 KPX P Aacute -74 KPX P Abreve -74 KPX P Acircumflex -74 KPX P Adieresis -74 KPX P Agrave -74 KPX P Amacron -74 KPX P Aogonek -74 KPX P Aring -74 KPX P Atilde -74 KPX P comma -123 KPX P period -91 KPX R T 6 KPX R Tcaron 6 KPX R Tcommaaccent 6 KPX R V -39 KPX R W 2 KPX R Y -20 KPX R Yacute -20 KPX R Ydieresis -20 KPX R y 32 KPX R yacute 32 KPX R ydieresis 32 KPX Racute T 6 KPX Racute Tcaron 6 KPX Racute Tcommaaccent 6 KPX Racute V -39 KPX Racute W 2 KPX Racute Y -20 KPX Racute Yacute -20 KPX Racute Ydieresis -20 KPX Racute y 32 KPX Racute yacute 32 KPX Racute ydieresis 32 KPX Rcaron T 6 KPX Rcaron Tcaron 6 KPX Rcaron Tcommaaccent 6 KPX Rcaron V -39 KPX Rcaron W 2 KPX Rcaron Y -20 KPX Rcaron Yacute -20 KPX Rcaron Ydieresis -20 KPX Rcaron y 32 KPX Rcaron yacute 32 KPX Rcaron ydieresis 32 KPX Rcommaaccent T 6 KPX Rcommaaccent Tcaron 6 KPX Rcommaaccent Tcommaaccent 6 KPX Rcommaaccent V -39 KPX Rcommaaccent W 2 KPX Rcommaaccent Y -20 KPX Rcommaaccent Yacute -20 KPX Rcommaaccent Ydieresis -20 KPX Rcommaaccent y 32 KPX Rcommaaccent yacute 32 KPX Rcommaaccent ydieresis 32 KPX T A -81 KPX T Aacute -81 KPX T Abreve -81 KPX T Acircumflex -81 KPX T Adieresis -81 KPX T Agrave -81 KPX T Amacron -81 KPX T Aogonek -81 KPX T Aring -81 KPX T Atilde -81 KPX T a -52 KPX T aacute -52 KPX T abreve -52 KPX T acircumflex -52 KPX T adieresis -52 KPX T agrave -52 KPX T amacron -52 KPX T aogonek -52 KPX T aring -52 KPX T atilde -52 KPX T c -51 KPX T cacute -51 KPX T ccaron -51 KPX T ccedilla -51 KPX T colon 3 KPX T comma -102 KPX T e -49 KPX T eacute -49 KPX T ecaron -49 KPX T ecircumflex -49 KPX T edieresis -49 KPX T edotaccent -49 KPX T egrave -49 KPX T emacron -49 KPX T eogonek -49 KPX T i 31 KPX T iacute 31 KPX T icircumflex 31 KPX T idieresis 31 KPX T igrave 31 KPX T imacron 31 KPX T iogonek 31 KPX T o -49 KPX T oacute -49 KPX T ocircumflex -49 KPX T odieresis -49 KPX T ograve -49 KPX T ohungarumlaut -49 KPX T omacron -49 KPX T oslash -49 KPX T otilde -49 KPX T period -71 KPX T r -30 KPX T racute -30 KPX T rcaron -30 KPX T rcommaaccent -30 KPX T s -23 KPX T sacute -23 KPX T scedilla -23 KPX T scommaaccent -23 KPX T semicolon -29 KPX T u -46 KPX T uacute -46 KPX T ucircumflex -46 KPX T udieresis -46 KPX T ugrave -46 KPX T uhungarumlaut -46 KPX T umacron -46 KPX T uogonek -46 KPX T uring -46 KPX T w 7 KPX T y 5 KPX T yacute 5 KPX T ydieresis 5 KPX Tcaron A -81 KPX Tcaron Aacute -81 KPX Tcaron Abreve -81 KPX Tcaron Acircumflex -81 KPX Tcaron Adieresis -81 KPX Tcaron Agrave -81 KPX Tcaron Amacron -81 KPX Tcaron Aogonek -81 KPX Tcaron Aring -81 KPX Tcaron Atilde -81 KPX Tcaron a -52 KPX Tcaron aacute -52 KPX Tcaron abreve -52 KPX Tcaron acircumflex -52 KPX Tcaron adieresis -52 KPX Tcaron agrave -52 KPX Tcaron amacron -52 KPX Tcaron aogonek -52 KPX Tcaron aring -52 KPX Tcaron atilde -52 KPX Tcaron c -51 KPX Tcaron cacute -51 KPX Tcaron ccaron -51 KPX Tcaron ccedilla -51 KPX Tcaron colon 3 KPX Tcaron comma -102 KPX Tcaron e -49 KPX Tcaron eacute -49 KPX Tcaron ecaron -49 KPX Tcaron ecircumflex -49 KPX Tcaron edieresis -49 KPX Tcaron edotaccent -49 KPX Tcaron egrave -49 KPX Tcaron emacron -49 KPX Tcaron eogonek -49 KPX Tcaron i 31 KPX Tcaron iacute 31 KPX Tcaron iogonek 31 KPX Tcaron o -49 KPX Tcaron oacute -49 KPX Tcaron ocircumflex -49 KPX Tcaron odieresis -49 KPX Tcaron ograve -49 KPX Tcaron ohungarumlaut -49 KPX Tcaron omacron -49 KPX Tcaron oslash -49 KPX Tcaron otilde -49 KPX Tcaron period -71 KPX Tcaron r -30 KPX Tcaron racute -30 KPX Tcaron rcaron -30 KPX Tcaron rcommaaccent -30 KPX Tcaron s -23 KPX Tcaron sacute -23 KPX Tcaron scaron -23 KPX Tcaron scedilla -23 KPX Tcaron scommaaccent -23 KPX Tcaron semicolon -29 KPX Tcaron u -46 KPX Tcaron uacute -46 KPX Tcaron ucircumflex -46 KPX Tcaron udieresis -46 KPX Tcaron ugrave -46 KPX Tcaron uhungarumlaut -46 KPX Tcaron umacron -46 KPX Tcaron uogonek -46 KPX Tcaron uring -46 KPX Tcaron w 7 KPX Tcaron y 5 KPX Tcaron yacute 5 KPX Tcaron ydieresis 5 KPX Tcommaaccent A -81 KPX Tcommaaccent Aacute -81 KPX Tcommaaccent Abreve -81 KPX Tcommaaccent Acircumflex -81 KPX Tcommaaccent Adieresis -81 KPX Tcommaaccent Agrave -81 KPX Tcommaaccent Amacron -81 KPX Tcommaaccent Aogonek -81 KPX Tcommaaccent Aring -81 KPX Tcommaaccent Atilde -81 KPX Tcommaaccent a -52 KPX Tcommaaccent aacute -52 KPX Tcommaaccent abreve -52 KPX Tcommaaccent acircumflex -52 KPX Tcommaaccent adieresis -52 KPX Tcommaaccent agrave -52 KPX Tcommaaccent amacron -52 KPX Tcommaaccent aogonek -52 KPX Tcommaaccent aring -52 KPX Tcommaaccent atilde -52 KPX Tcommaaccent c -51 KPX Tcommaaccent cacute -51 KPX Tcommaaccent ccaron -51 KPX Tcommaaccent ccedilla -51 KPX Tcommaaccent colon 3 KPX Tcommaaccent comma -102 KPX Tcommaaccent e -49 KPX Tcommaaccent eacute -49 KPX Tcommaaccent ecaron -49 KPX Tcommaaccent ecircumflex -49 KPX Tcommaaccent edieresis -49 KPX Tcommaaccent edotaccent -49 KPX Tcommaaccent egrave -49 KPX Tcommaaccent emacron -49 KPX Tcommaaccent eogonek -49 KPX Tcommaaccent i 31 KPX Tcommaaccent iacute 31 KPX Tcommaaccent iogonek 31 KPX Tcommaaccent o -49 KPX Tcommaaccent oacute -49 KPX Tcommaaccent ocircumflex -49 KPX Tcommaaccent odieresis -49 KPX Tcommaaccent ograve -49 KPX Tcommaaccent ohungarumlaut -49 KPX Tcommaaccent omacron -49 KPX Tcommaaccent oslash -49 KPX Tcommaaccent otilde -49 KPX Tcommaaccent period -71 KPX Tcommaaccent r -30 KPX Tcommaaccent racute -30 KPX Tcommaaccent rcaron -30 KPX Tcommaaccent rcommaaccent -30 KPX Tcommaaccent s -23 KPX Tcommaaccent sacute -23 KPX Tcommaaccent scedilla -23 KPX Tcommaaccent scommaaccent -23 KPX Tcommaaccent semicolon -29 KPX Tcommaaccent u -46 KPX Tcommaaccent uacute -46 KPX Tcommaaccent ucircumflex -46 KPX Tcommaaccent udieresis -46 KPX Tcommaaccent ugrave -46 KPX Tcommaaccent uhungarumlaut -46 KPX Tcommaaccent umacron -46 KPX Tcommaaccent uogonek -46 KPX Tcommaaccent uring -46 KPX Tcommaaccent w 7 KPX Tcommaaccent y 5 KPX Tcommaaccent yacute 5 KPX Tcommaaccent ydieresis 5 KPX V A -122 KPX V Aacute -122 KPX V Abreve -122 KPX V Acircumflex -122 KPX V Adieresis -122 KPX V Agrave -122 KPX V Amacron -122 KPX V Aogonek -122 KPX V Aring -122 KPX V Atilde -122 KPX V a -104 KPX V aacute -104 KPX V abreve -104 KPX V acircumflex -104 KPX V adieresis -104 KPX V agrave -104 KPX V amacron -104 KPX V aogonek -104 KPX V aring -104 KPX V atilde -104 KPX V colon -1 KPX V comma -106 KPX V e -101 KPX V eacute -101 KPX V ecaron -101 KPX V ecircumflex -101 KPX V edieresis -101 KPX V edotaccent -101 KPX V egrave -101 KPX V emacron -101 KPX V eogonek -101 KPX V i 5 KPX V iacute 5 KPX V iogonek 5 KPX V o -101 KPX V oacute -101 KPX V ocircumflex -101 KPX V odieresis -101 KPX V ograve -101 KPX V ohungarumlaut -101 KPX V omacron -101 KPX V oslash -101 KPX V otilde -101 KPX V period -75 KPX V r -40 KPX V racute -40 KPX V rcaron -40 KPX V rcommaaccent -40 KPX V semicolon -33 KPX V u -40 KPX V uacute -40 KPX V ucircumflex -40 KPX V udieresis -40 KPX V ugrave -40 KPX V uhungarumlaut -40 KPX V umacron -40 KPX V uogonek -40 KPX V uring -40 KPX V y -25 KPX V yacute -25 KPX V ydieresis -25 KPX W A -73 KPX W Aacute -73 KPX W Abreve -73 KPX W Acircumflex -73 KPX W Adieresis -73 KPX W Agrave -73 KPX W Amacron -73 KPX W Aogonek -73 KPX W Aring -73 KPX W Atilde -73 KPX W a -50 KPX W aacute -50 KPX W abreve -50 KPX W acircumflex -50 KPX W adieresis -50 KPX W agrave -50 KPX W amacron -50 KPX W aogonek -50 KPX W aring -50 KPX W atilde -50 KPX W colon -1 KPX W comma -106 KPX W e -47 KPX W eacute -47 KPX W ecaron -47 KPX W ecircumflex -47 KPX W edieresis -47 KPX W edotaccent -47 KPX W egrave -47 KPX W emacron -47 KPX W eogonek -47 KPX W i 6 KPX W iacute 6 KPX W icircumflex 16 KPX W idieresis 16 KPX W igrave 16 KPX W imacron 16 KPX W iogonek 6 KPX W o -46 KPX W oacute -46 KPX W ocircumflex -46 KPX W odieresis -46 KPX W ograve -46 KPX W ohungarumlaut -46 KPX W omacron -46 KPX W oslash -46 KPX W otilde -46 KPX W period -74 KPX W r -29 KPX W racute -29 KPX W rcaron -29 KPX W rcommaaccent -29 KPX W semicolon -33 KPX W u -30 KPX W uacute -30 KPX W ucircumflex -30 KPX W udieresis -30 KPX W ugrave -30 KPX W uhungarumlaut -30 KPX W umacron -30 KPX W uogonek -30 KPX W uring -30 KPX W y -2 KPX W yacute -2 KPX W ydieresis -2 KPX Y A -122 KPX Y Aacute -122 KPX Y Abreve -122 KPX Y Acircumflex -122 KPX Y Adieresis -122 KPX Y Agrave -122 KPX Y Amacron -122 KPX Y Aogonek -122 KPX Y Aring -122 KPX Y Atilde -122 KPX Y a -93 KPX Y aacute -93 KPX Y abreve -93 KPX Y acircumflex -93 KPX Y adieresis -93 KPX Y agrave -93 KPX Y amacron -93 KPX Y aogonek -93 KPX Y aring -93 KPX Y atilde -93 KPX Y colon 9 KPX Y comma -97 KPX Y e -89 KPX Y eacute -89 KPX Y ecaron -89 KPX Y ecircumflex -89 KPX Y edieresis -89 KPX Y edotaccent -89 KPX Y egrave -89 KPX Y emacron -89 KPX Y eogonek -89 KPX Y i 13 KPX Y iacute 13 KPX Y icircumflex 23 KPX Y idieresis 23 KPX Y igrave 23 KPX Y imacron 23 KPX Y iogonek 13 KPX Y o -89 KPX Y oacute -89 KPX Y ocircumflex -89 KPX Y odieresis -89 KPX Y ograve -89 KPX Y ohungarumlaut -89 KPX Y omacron -89 KPX Y oslash -89 KPX Y otilde -89 KPX Y p -67 KPX Y period -65 KPX Y q -93 KPX Y semicolon -23 KPX Y u -69 KPX Y uacute -69 KPX Y ucircumflex -69 KPX Y udieresis -69 KPX Y ugrave -69 KPX Y uhungarumlaut -69 KPX Y umacron -69 KPX Y uogonek -69 KPX Y uring -69 KPX Y v -17 KPX Yacute A -122 KPX Yacute Aacute -122 KPX Yacute Abreve -122 KPX Yacute Acircumflex -122 KPX Yacute Adieresis -122 KPX Yacute Agrave -122 KPX Yacute Amacron -122 KPX Yacute Aogonek -122 KPX Yacute Aring -122 KPX Yacute Atilde -122 KPX Yacute a -93 KPX Yacute aacute -93 KPX Yacute abreve -93 KPX Yacute acircumflex -93 KPX Yacute adieresis -93 KPX Yacute agrave -93 KPX Yacute amacron -93 KPX Yacute aogonek -93 KPX Yacute aring -93 KPX Yacute atilde -93 KPX Yacute colon 9 KPX Yacute comma -97 KPX Yacute e -89 KPX Yacute eacute -89 KPX Yacute ecaron -89 KPX Yacute ecircumflex -89 KPX Yacute edieresis -89 KPX Yacute edotaccent -89 KPX Yacute egrave -89 KPX Yacute emacron -89 KPX Yacute eogonek -89 KPX Yacute i 13 KPX Yacute iacute 13 KPX Yacute icircumflex 23 KPX Yacute idieresis 23 KPX Yacute igrave 23 KPX Yacute imacron 23 KPX Yacute iogonek 13 KPX Yacute o -89 KPX Yacute oacute -89 KPX Yacute ocircumflex -89 KPX Yacute odieresis -89 KPX Yacute ograve -89 KPX Yacute ohungarumlaut -89 KPX Yacute omacron -89 KPX Yacute oslash -89 KPX Yacute otilde -89 KPX Yacute p -67 KPX Yacute period -65 KPX Yacute q -93 KPX Yacute semicolon -23 KPX Yacute u -69 KPX Yacute uacute -69 KPX Yacute ucircumflex -69 KPX Yacute udieresis -69 KPX Yacute ugrave -69 KPX Yacute uhungarumlaut -69 KPX Yacute umacron -69 KPX Yacute uogonek -69 KPX Yacute uring -69 KPX Yacute v -17 KPX Ydieresis A -122 KPX Ydieresis Aacute -122 KPX Ydieresis Abreve -122 KPX Ydieresis Acircumflex -122 KPX Ydieresis Adieresis -122 KPX Ydieresis Agrave -122 KPX Ydieresis Amacron -122 KPX Ydieresis Aogonek -122 KPX Ydieresis Aring -122 KPX Ydieresis Atilde -122 KPX Ydieresis a -93 KPX Ydieresis aacute -93 KPX Ydieresis abreve -93 KPX Ydieresis acircumflex -93 KPX Ydieresis adieresis -93 KPX Ydieresis agrave -93 KPX Ydieresis amacron -93 KPX Ydieresis aogonek -93 KPX Ydieresis aring -93 KPX Ydieresis atilde -93 KPX Ydieresis colon 9 KPX Ydieresis comma -97 KPX Ydieresis e -89 KPX Ydieresis eacute -89 KPX Ydieresis ecaron -89 KPX Ydieresis ecircumflex -89 KPX Ydieresis edieresis -89 KPX Ydieresis edotaccent -89 KPX Ydieresis egrave -89 KPX Ydieresis emacron -89 KPX Ydieresis eogonek -89 KPX Ydieresis i 13 KPX Ydieresis iacute 13 KPX Ydieresis icircumflex 23 KPX Ydieresis idieresis 23 KPX Ydieresis igrave 23 KPX Ydieresis imacron 23 KPX Ydieresis iogonek 13 KPX Ydieresis o -89 KPX Ydieresis oacute -89 KPX Ydieresis ocircumflex -89 KPX Ydieresis odieresis -89 KPX Ydieresis ograve -89 KPX Ydieresis ohungarumlaut -89 KPX Ydieresis omacron -89 KPX Ydieresis oslash -89 KPX Ydieresis otilde -89 KPX Ydieresis p -67 KPX Ydieresis period -65 KPX Ydieresis q -93 KPX Ydieresis semicolon -23 KPX Ydieresis u -69 KPX Ydieresis uacute -69 KPX Ydieresis ucircumflex -69 KPX Ydieresis udieresis -69 KPX Ydieresis ugrave -69 KPX Ydieresis uhungarumlaut -69 KPX Ydieresis umacron -69 KPX Ydieresis uogonek -69 KPX Ydieresis uring -69 KPX Ydieresis v -17 KPX f f 3 KPX r c -7 KPX r cacute -7 KPX r ccaron -7 KPX r ccedilla -7 KPX r comma -105 KPX r d -6 KPX r dcroat -6 KPX r e -4 KPX r eacute -4 KPX r ecaron -4 KPX r ecircumflex -4 KPX r edieresis -4 KPX r edotaccent -4 KPX r egrave -4 KPX r emacron -4 KPX r eogonek -4 KPX r f 48 KPX r g 1 KPX r gbreve 1 KPX r gcommaaccent 1 KPX r h 29 KPX r m 28 KPX r n 21 KPX r nacute 21 KPX r ncaron 21 KPX r ncommaaccent 21 KPX r ntilde 21 KPX r o -4 KPX r oacute -4 KPX r ocircumflex -4 KPX r odieresis -4 KPX r ograve -4 KPX r ohungarumlaut -4 KPX r omacron -4 KPX r oslash -4 KPX r otilde -4 KPX r period -73 KPX r q -8 KPX racute c -7 KPX racute cacute -7 KPX racute ccaron -7 KPX racute ccedilla -7 KPX racute comma -105 KPX racute d -6 KPX racute dcroat -6 KPX racute e -4 KPX racute eacute -4 KPX racute ecaron -4 KPX racute ecircumflex -4 KPX racute edieresis -4 KPX racute edotaccent -4 KPX racute egrave -4 KPX racute emacron -4 KPX racute eogonek -4 KPX racute f 48 KPX racute g 1 KPX racute gbreve 1 KPX racute gcommaaccent 1 KPX racute h 29 KPX racute m 28 KPX racute n 21 KPX racute nacute 21 KPX racute ncaron 21 KPX racute ncommaaccent 21 KPX racute ntilde 21 KPX racute o -4 KPX racute oacute -4 KPX racute ocircumflex -4 KPX racute odieresis -4 KPX racute ograve -4 KPX racute ohungarumlaut -4 KPX racute omacron -4 KPX racute oslash -4 KPX racute otilde -4 KPX racute period -73 KPX racute q -8 KPX rcaron c -7 KPX rcaron cacute -7 KPX rcaron ccaron -7 KPX rcaron ccedilla -7 KPX rcaron comma -105 KPX rcaron d -6 KPX rcaron dcroat -6 KPX rcaron e -4 KPX rcaron eacute -4 KPX rcaron ecaron -4 KPX rcaron ecircumflex -4 KPX rcaron edieresis -4 KPX rcaron edotaccent -4 KPX rcaron egrave -4 KPX rcaron emacron -4 KPX rcaron eogonek -4 KPX rcaron f 48 KPX rcaron g 1 KPX rcaron gbreve 1 KPX rcaron gcommaaccent 1 KPX rcaron h 29 KPX rcaron m 28 KPX rcaron n 21 KPX rcaron nacute 21 KPX rcaron ncaron 21 KPX rcaron ncommaaccent 21 KPX rcaron ntilde 21 KPX rcaron o -4 KPX rcaron oacute -4 KPX rcaron ocircumflex -4 KPX rcaron odieresis -4 KPX rcaron ograve -4 KPX rcaron ohungarumlaut -4 KPX rcaron omacron -4 KPX rcaron oslash -4 KPX rcaron otilde -4 KPX rcaron period -73 KPX rcaron q -8 KPX rcommaaccent c -7 KPX rcommaaccent cacute -7 KPX rcommaaccent ccaron -7 KPX rcommaaccent ccedilla -7 KPX rcommaaccent comma -105 KPX rcommaaccent d -6 KPX rcommaaccent dcroat -6 KPX rcommaaccent e -4 KPX rcommaaccent eacute -4 KPX rcommaaccent ecaron -4 KPX rcommaaccent ecircumflex -4 KPX rcommaaccent edieresis -4 KPX rcommaaccent edotaccent -4 KPX rcommaaccent egrave -4 KPX rcommaaccent emacron -4 KPX rcommaaccent eogonek -4 KPX rcommaaccent f 48 KPX rcommaaccent g 1 KPX rcommaaccent gbreve 1 KPX rcommaaccent gcommaaccent 1 KPX rcommaaccent h 29 KPX rcommaaccent m 28 KPX rcommaaccent n 21 KPX rcommaaccent nacute 21 KPX rcommaaccent ncaron 21 KPX rcommaaccent ncommaaccent 21 KPX rcommaaccent ntilde 21 KPX rcommaaccent o -4 KPX rcommaaccent oacute -4 KPX rcommaaccent ocircumflex -4 KPX rcommaaccent odieresis -4 KPX rcommaaccent ograve -4 KPX rcommaaccent ohungarumlaut -4 KPX rcommaaccent omacron -4 KPX rcommaaccent oslash -4 KPX rcommaaccent otilde -4 KPX rcommaaccent period -73 KPX rcommaaccent q -8 EndKernPairs EndKernData EndFontMetrics gle-graphics-4.2.4c/src/fonts/Adobe-Core35_AFMs-314/ITCAvantGarde-Book.afm0000664000000000000000000010364511405446017024040 0ustar rootrootStartFontMetrics 4.1 Comment Copyright (c) 1985, 1987, 1989, 1990, 1991, 1992, 1997 Adobe Systems Incorporated. All Rights Reserved. Comment Creation Date: Thu May 1 14:01:14 1997 Comment UniqueID 43083 Comment VMusage 33801 44826 FontName AvantGarde-Book FullName ITC Avant Garde Gothic Book FamilyName ITC Avant Garde Gothic Weight Book ItalicAngle 0 IsFixedPitch false FontBBox -113 -222 1148 955 UnderlinePosition -100 UnderlineThickness 50 Version 002.000 Notice Copyright (c) 1985, 1987, 1989, 1990, 1991, 1992, 1997 Adobe Systems Incorporated. All Rights Reserved.ITC Avant Garde Gothic is a registered trademark of International Typeface Corporation. EncodingScheme AdobeStandardEncoding CapHeight 740 XHeight 547 Ascender 740 Descender -192 StdHW 63 StdVW 70 StartCharMetrics 314 C 32 ; WX 277 ; N space ; B 0 0 0 0 ; C 33 ; WX 295 ; N exclam ; B 111 0 185 740 ; C 34 ; WX 309 ; N quotedbl ; B 36 444 273 740 ; C 35 ; WX 554 ; N numbersign ; B 33 0 521 740 ; C 36 ; WX 554 ; N dollar ; B 70 -70 485 811 ; C 37 ; WX 775 ; N percent ; B 21 -13 753 751 ; C 38 ; WX 757 ; N ampersand ; B 56 -12 736 753 ; C 39 ; WX 351 ; N quoteright ; B 94 546 256 740 ; C 40 ; WX 369 ; N parenleft ; B 47 -205 355 757 ; C 41 ; WX 369 ; N parenright ; B 14 -205 322 757 ; C 42 ; WX 425 ; N asterisk ; B 58 446 367 740 ; C 43 ; WX 606 ; N plus ; B 51 0 555 506 ; C 44 ; WX 277 ; N comma ; B 14 -67 176 126 ; C 45 ; WX 332 ; N hyphen ; B 30 248 302 315 ; C 46 ; WX 277 ; N period ; B 102 0 176 126 ; C 47 ; WX 437 ; N slash ; B 44 -100 403 740 ; C 48 ; WX 554 ; N zero ; B 29 -13 525 753 ; C 49 ; WX 554 ; N one ; B 135 0 336 740 ; C 50 ; WX 554 ; N two ; B 40 0 514 753 ; C 51 ; WX 554 ; N three ; B 34 -13 506 753 ; C 52 ; WX 554 ; N four ; B 14 0 528 740 ; C 53 ; WX 554 ; N five ; B 26 -13 530 740 ; C 54 ; WX 554 ; N six ; B 24 -13 530 739 ; C 55 ; WX 554 ; N seven ; B 63 0 491 740 ; C 56 ; WX 554 ; N eight ; B 41 -13 513 753 ; C 57 ; WX 554 ; N nine ; B 24 0 530 752 ; C 58 ; WX 277 ; N colon ; B 102 0 176 548 ; C 59 ; WX 277 ; N semicolon ; B 14 -67 176 548 ; C 60 ; WX 606 ; N less ; B 46 -8 554 514 ; C 61 ; WX 606 ; N equal ; B 51 118 555 388 ; C 62 ; WX 606 ; N greater ; B 52 -8 560 514 ; C 63 ; WX 591 ; N question ; B 64 0 526 752 ; C 64 ; WX 867 ; N at ; B 65 -13 803 753 ; C 65 ; WX 740 ; N A ; B 12 0 729 740 ; C 66 ; WX 574 ; N B ; B 74 0 544 740 ; C 67 ; WX 813 ; N C ; B 43 -13 771 752 ; C 68 ; WX 744 ; N D ; B 74 0 699 740 ; C 69 ; WX 536 ; N E ; B 70 0 475 740 ; C 70 ; WX 485 ; N F ; B 70 0 444 740 ; C 71 ; WX 872 ; N G ; B 40 -13 828 753 ; C 72 ; WX 683 ; N H ; B 76 0 607 740 ; C 73 ; WX 226 ; N I ; B 76 0 150 740 ; C 74 ; WX 482 ; N J ; B 6 -13 402 740 ; C 75 ; WX 591 ; N K ; B 81 0 591 740 ; C 76 ; WX 462 ; N L ; B 82 0 462 740 ; C 77 ; WX 919 ; N M ; B 76 0 843 740 ; C 78 ; WX 740 ; N N ; B 75 0 664 740 ; C 79 ; WX 869 ; N O ; B 43 -13 826 753 ; C 80 ; WX 592 ; N P ; B 75 0 564 740 ; C 81 ; WX 871 ; N Q ; B 40 -13 837 753 ; C 82 ; WX 607 ; N R ; B 70 0 572 740 ; C 83 ; WX 498 ; N S ; B 22 -13 473 753 ; C 84 ; WX 426 ; N T ; B 6 0 419 740 ; C 85 ; WX 655 ; N U ; B 75 -13 579 740 ; C 86 ; WX 702 ; N V ; B 8 0 693 740 ; C 87 ; WX 960 ; N W ; B 11 0 950 740 ; C 88 ; WX 609 ; N X ; B 8 0 602 740 ; C 89 ; WX 592 ; N Y ; B 1 0 592 740 ; C 90 ; WX 480 ; N Z ; B 12 0 470 740 ; C 91 ; WX 351 ; N bracketleft ; B 133 -179 337 753 ; C 92 ; WX 605 ; N backslash ; B 118 -100 477 740 ; C 93 ; WX 351 ; N bracketright ; B 14 -179 218 753 ; C 94 ; WX 606 ; N asciicircum ; B 53 307 553 740 ; C 95 ; WX 500 ; N underscore ; B 0 -125 500 -75 ; C 96 ; WX 351 ; N quoteleft ; B 95 546 257 740 ; C 97 ; WX 683 ; N a ; B 42 -13 621 561 ; C 98 ; WX 682 ; N b ; B 68 -13 647 740 ; C 99 ; WX 647 ; N c ; B 41 -13 607 561 ; C 100 ; WX 685 ; N d ; B 39 -13 618 740 ; C 101 ; WX 650 ; N e ; B 38 -13 608 561 ; C 102 ; WX 314 ; N f ; B 19 0 314 753 ; L i fi ; L l fl ; C 103 ; WX 673 ; N g ; B 37 -215 606 561 ; C 104 ; WX 610 ; N h ; B 62 0 543 740 ; C 105 ; WX 200 ; N i ; B 65 0 135 740 ; C 106 ; WX 203 ; N j ; B -44 -192 137 740 ; C 107 ; WX 502 ; N k ; B 70 0 498 740 ; C 108 ; WX 200 ; N l ; B 65 0 135 740 ; C 109 ; WX 938 ; N m ; B 66 0 872 561 ; C 110 ; WX 610 ; N n ; B 65 0 546 561 ; C 111 ; WX 655 ; N o ; B 42 -13 614 561 ; C 112 ; WX 682 ; N p ; B 64 -192 643 561 ; C 113 ; WX 682 ; N q ; B 37 -192 616 561 ; C 114 ; WX 301 ; N r ; B 65 0 291 561 ; C 115 ; WX 388 ; N s ; B 24 -13 364 561 ; C 116 ; WX 339 ; N t ; B 14 0 330 740 ; C 117 ; WX 608 ; N u ; B 62 -13 541 547 ; C 118 ; WX 554 ; N v ; B 7 0 546 547 ; C 119 ; WX 831 ; N w ; B 13 0 820 547 ; C 120 ; WX 480 ; N x ; B 12 0 468 547 ; C 121 ; WX 536 ; N y ; B 15 -192 523 547 ; C 122 ; WX 425 ; N z ; B 10 0 415 547 ; C 123 ; WX 351 ; N braceleft ; B 70 -189 331 740 ; C 124 ; WX 672 ; N bar ; B 299 -222 373 778 ; C 125 ; WX 351 ; N braceright ; B 20 -189 281 740 ; C 126 ; WX 606 ; N asciitilde ; B 72 179 534 319 ; C 161 ; WX 295 ; N exclamdown ; B 110 -192 184 548 ; C 162 ; WX 554 ; N cent ; B 48 62 510 707 ; C 163 ; WX 554 ; N sterling ; B 4 0 552 753 ; C 164 ; WX 166 ; N fraction ; B -113 0 280 740 ; C 165 ; WX 554 ; N yen ; B 4 0 550 740 ; C 166 ; WX 554 ; N florin ; B -12 -153 518 818 ; C 167 ; WX 615 ; N section ; B 85 -141 529 753 ; C 168 ; WX 554 ; N currency ; B 8 42 546 580 ; C 169 ; WX 198 ; N quotesingle ; B 59 444 140 740 ; C 170 ; WX 502 ; N quotedblleft ; B 97 546 406 740 ; C 171 ; WX 425 ; N guillemotleft ; B 40 81 386 481 ; C 172 ; WX 251 ; N guilsinglleft ; B 40 81 212 481 ; C 173 ; WX 251 ; N guilsinglright ; B 39 81 211 481 ; C 174 ; WX 487 ; N fi ; B 19 0 422 753 ; C 175 ; WX 485 ; N fl ; B 19 0 420 753 ; C 177 ; WX 500 ; N endash ; B 35 248 465 315 ; C 178 ; WX 553 ; N dagger ; B 59 -133 493 740 ; C 179 ; WX 553 ; N daggerdbl ; B 59 -133 493 740 ; C 180 ; WX 277 ; N periodcentered ; B 102 190 176 316 ; C 182 ; WX 564 ; N paragraph ; B 22 -110 551 740 ; C 183 ; WX 606 ; N bullet ; B 150 222 455 532 ; C 184 ; WX 354 ; N quotesinglbase ; B 89 -68 251 126 ; C 185 ; WX 502 ; N quotedblbase ; B 89 -68 399 126 ; C 186 ; WX 484 ; N quotedblright ; B 96 546 405 740 ; C 187 ; WX 425 ; N guillemotright ; B 39 81 385 481 ; C 188 ; WX 1000 ; N ellipsis ; B 130 0 870 126 ; C 189 ; WX 1174 ; N perthousand ; B 25 -13 1148 751 ; C 191 ; WX 591 ; N questiondown ; B 65 -205 527 548 ; C 193 ; WX 378 ; N grave ; B 69 619 300 786 ; C 194 ; WX 375 ; N acute ; B 78 619 309 786 ; C 195 ; WX 502 ; N circumflex ; B 74 639 428 764 ; C 196 ; WX 439 ; N tilde ; B 47 651 392 754 ; C 197 ; WX 485 ; N macron ; B 73 669 411 736 ; C 198 ; WX 453 ; N breve ; B 52 651 401 754 ; C 199 ; WX 222 ; N dotaccent ; B 74 639 148 765 ; C 200 ; WX 369 ; N dieresis ; B 73 639 295 765 ; C 202 ; WX 332 ; N ring ; B 62 600 269 807 ; C 203 ; WX 324 ; N cedilla ; B 79 -222 254 3 ; C 205 ; WX 552 ; N hungarumlaut ; B 109 605 486 786 ; C 206 ; WX 302 ; N ogonek ; B 73 -191 228 0 ; C 207 ; WX 502 ; N caron ; B 68 639 423 764 ; C 208 ; WX 1000 ; N emdash ; B 35 248 965 315 ; C 225 ; WX 992 ; N AE ; B -20 0 907 740 ; C 227 ; WX 369 ; N ordfeminine ; B -3 407 356 753 ; C 232 ; WX 517 ; N Lslash ; B 59 0 517 740 ; C 233 ; WX 868 ; N Oslash ; B 43 -83 826 819 ; C 234 ; WX 1194 ; N OE ; B 45 -13 1142 753 ; C 235 ; WX 369 ; N ordmasculine ; B 12 407 356 753 ; C 241 ; WX 1157 ; N ae ; B 34 -13 1113 561 ; C 245 ; WX 200 ; N dotlessi ; B 65 0 135 547 ; C 248 ; WX 300 ; N lslash ; B 43 0 259 740 ; C 249 ; WX 653 ; N oslash ; B 41 -64 613 614 ; C 250 ; WX 1137 ; N oe ; B 34 -13 1104 561 ; C 251 ; WX 554 ; N germandbls ; B 61 -13 525 753 ; C -1 ; WX 226 ; N Idieresis ; B 2 0 224 928 ; C -1 ; WX 650 ; N eacute ; B 38 -13 608 786 ; C -1 ; WX 683 ; N abreve ; B 42 -13 621 754 ; C -1 ; WX 608 ; N uhungarumlaut ; B 62 -13 541 786 ; C -1 ; WX 650 ; N ecaron ; B 38 -13 608 764 ; C -1 ; WX 592 ; N Ydieresis ; B 1 0 592 928 ; C -1 ; WX 606 ; N divide ; B 51 -13 555 519 ; C -1 ; WX 592 ; N Yacute ; B 1 0 592 949 ; C -1 ; WX 740 ; N Acircumflex ; B 12 0 729 927 ; C -1 ; WX 683 ; N aacute ; B 42 -13 621 786 ; C -1 ; WX 655 ; N Ucircumflex ; B 75 -13 579 927 ; C -1 ; WX 536 ; N yacute ; B 15 -192 523 786 ; C -1 ; WX 388 ; N scommaaccent ; B 24 -222 364 561 ; C -1 ; WX 650 ; N ecircumflex ; B 38 -13 608 764 ; C -1 ; WX 655 ; N Uring ; B 75 -13 579 955 ; C -1 ; WX 655 ; N Udieresis ; B 75 -13 579 928 ; C -1 ; WX 683 ; N aogonek ; B 42 -191 634 561 ; C -1 ; WX 655 ; N Uacute ; B 75 -13 579 949 ; C -1 ; WX 608 ; N uogonek ; B 62 -191 558 547 ; C -1 ; WX 536 ; N Edieresis ; B 70 0 475 928 ; C -1 ; WX 790 ; N Dcroat ; B 40 0 739 740 ; C -1 ; WX 250 ; N commaaccent ; B 23 -222 169 -54 ; C -1 ; WX 747 ; N copyright ; B -9 -12 755 752 ; C -1 ; WX 536 ; N Emacron ; B 70 0 475 899 ; C -1 ; WX 647 ; N ccaron ; B 41 -13 607 764 ; C -1 ; WX 683 ; N aring ; B 42 -13 621 807 ; C -1 ; WX 740 ; N Ncommaaccent ; B 75 -202 664 740 ; C -1 ; WX 200 ; N lacute ; B 20 0 251 949 ; C -1 ; WX 683 ; N agrave ; B 42 -13 621 786 ; C -1 ; WX 426 ; N Tcommaaccent ; B 6 -222 419 740 ; C -1 ; WX 813 ; N Cacute ; B 43 -13 771 949 ; C -1 ; WX 683 ; N atilde ; B 42 -13 621 754 ; C -1 ; WX 536 ; N Edotaccent ; B 70 0 475 928 ; C -1 ; WX 388 ; N scaron ; B 11 -13 366 764 ; C -1 ; WX 388 ; N scedilla ; B 24 -222 364 561 ; C -1 ; WX 200 ; N iacute ; B 30 0 261 786 ; C -1 ; WX 471 ; N lozenge ; B 15 0 457 719 ; C -1 ; WX 607 ; N Rcaron ; B 70 0 572 927 ; C -1 ; WX 872 ; N Gcommaaccent ; B 40 -222 828 753 ; C -1 ; WX 608 ; N ucircumflex ; B 62 -13 541 764 ; C -1 ; WX 683 ; N acircumflex ; B 42 -13 621 764 ; C -1 ; WX 740 ; N Amacron ; B 12 0 729 899 ; C -1 ; WX 301 ; N rcaron ; B -3 0 352 764 ; C -1 ; WX 647 ; N ccedilla ; B 41 -222 607 561 ; C -1 ; WX 480 ; N Zdotaccent ; B 12 0 470 928 ; C -1 ; WX 592 ; N Thorn ; B 60 0 549 740 ; C -1 ; WX 869 ; N Omacron ; B 43 -13 826 899 ; C -1 ; WX 607 ; N Racute ; B 70 0 572 949 ; C -1 ; WX 498 ; N Sacute ; B 22 -13 473 949 ; C -1 ; WX 755 ; N dcaron ; B 39 -13 792 740 ; C -1 ; WX 655 ; N Umacron ; B 75 -13 579 899 ; C -1 ; WX 608 ; N uring ; B 62 -13 541 807 ; C -1 ; WX 332 ; N threesuperior ; B 18 289 318 747 ; C -1 ; WX 869 ; N Ograve ; B 43 -13 826 949 ; C -1 ; WX 740 ; N Agrave ; B 12 0 729 949 ; C -1 ; WX 740 ; N Abreve ; B 12 0 729 917 ; C -1 ; WX 606 ; N multiply ; B 74 24 533 482 ; C -1 ; WX 608 ; N uacute ; B 62 -13 541 786 ; C -1 ; WX 426 ; N Tcaron ; B 6 0 419 927 ; C -1 ; WX 476 ; N partialdiff ; B 22 -38 454 704 ; C -1 ; WX 536 ; N ydieresis ; B 15 -192 523 765 ; C -1 ; WX 740 ; N Nacute ; B 75 0 664 949 ; C -1 ; WX 200 ; N icircumflex ; B -77 0 277 764 ; C -1 ; WX 536 ; N Ecircumflex ; B 70 0 475 927 ; C -1 ; WX 683 ; N adieresis ; B 42 -13 621 765 ; C -1 ; WX 650 ; N edieresis ; B 38 -13 608 765 ; C -1 ; WX 647 ; N cacute ; B 41 -13 607 786 ; C -1 ; WX 610 ; N nacute ; B 65 0 546 786 ; C -1 ; WX 608 ; N umacron ; B 62 -13 541 736 ; C -1 ; WX 740 ; N Ncaron ; B 75 0 664 927 ; C -1 ; WX 226 ; N Iacute ; B 43 0 274 949 ; C -1 ; WX 606 ; N plusminus ; B 51 -24 555 518 ; C -1 ; WX 672 ; N brokenbar ; B 299 -147 373 703 ; C -1 ; WX 747 ; N registered ; B -9 -12 755 752 ; C -1 ; WX 872 ; N Gbreve ; B 40 -13 828 917 ; C -1 ; WX 226 ; N Idotaccent ; B 76 0 150 928 ; C -1 ; WX 600 ; N summation ; B 15 -10 586 706 ; C -1 ; WX 536 ; N Egrave ; B 70 0 475 949 ; C -1 ; WX 301 ; N racute ; B 65 0 332 786 ; C -1 ; WX 655 ; N omacron ; B 42 -13 614 736 ; C -1 ; WX 480 ; N Zacute ; B 12 0 470 949 ; C -1 ; WX 480 ; N Zcaron ; B 12 0 470 927 ; C -1 ; WX 549 ; N greaterequal ; B 26 0 523 658 ; C -1 ; WX 790 ; N Eth ; B 40 0 739 740 ; C -1 ; WX 813 ; N Ccedilla ; B 43 -222 771 752 ; C -1 ; WX 200 ; N lcommaaccent ; B -2 -222 144 740 ; C -1 ; WX 359 ; N tcaron ; B 14 0 394 780 ; C -1 ; WX 650 ; N eogonek ; B 38 -191 608 561 ; C -1 ; WX 655 ; N Uogonek ; B 75 -191 579 740 ; C -1 ; WX 740 ; N Aacute ; B 12 0 729 949 ; C -1 ; WX 740 ; N Adieresis ; B 12 0 729 928 ; C -1 ; WX 650 ; N egrave ; B 38 -13 608 786 ; C -1 ; WX 425 ; N zacute ; B 10 0 415 786 ; C -1 ; WX 200 ; N iogonek ; B 11 -191 166 740 ; C -1 ; WX 869 ; N Oacute ; B 43 -13 826 949 ; C -1 ; WX 655 ; N oacute ; B 42 -13 614 786 ; C -1 ; WX 683 ; N amacron ; B 42 -13 621 736 ; C -1 ; WX 388 ; N sacute ; B 24 -13 364 786 ; C -1 ; WX 200 ; N idieresis ; B -11 0 211 765 ; C -1 ; WX 869 ; N Ocircumflex ; B 43 -13 826 927 ; C -1 ; WX 655 ; N Ugrave ; B 75 -13 579 949 ; C -1 ; WX 612 ; N Delta ; B 6 0 608 688 ; C -1 ; WX 682 ; N thorn ; B 64 -192 643 740 ; C -1 ; WX 332 ; N twosuperior ; B 19 296 318 747 ; C -1 ; WX 869 ; N Odieresis ; B 43 -13 826 928 ; C -1 ; WX 608 ; N mu ; B 80 -184 527 547 ; C -1 ; WX 200 ; N igrave ; B -60 0 171 786 ; C -1 ; WX 655 ; N ohungarumlaut ; B 42 -13 614 786 ; C -1 ; WX 536 ; N Eogonek ; B 70 -191 475 740 ; C -1 ; WX 685 ; N dcroat ; B 39 -13 680 740 ; C -1 ; WX 831 ; N threequarters ; B 46 0 784 747 ; C -1 ; WX 498 ; N Scedilla ; B 22 -222 473 753 ; C -1 ; WX 260 ; N lcaron ; B 65 0 309 740 ; C -1 ; WX 591 ; N Kcommaaccent ; B 81 -202 591 740 ; C -1 ; WX 462 ; N Lacute ; B 82 0 462 949 ; C -1 ; WX 1000 ; N trademark ; B 9 296 816 740 ; C -1 ; WX 650 ; N edotaccent ; B 38 -13 608 765 ; C -1 ; WX 226 ; N Igrave ; B -47 0 184 949 ; C -1 ; WX 226 ; N Imacron ; B -31 0 256 899 ; C -1 ; WX 462 ; N Lcaron ; B 82 0 462 740 ; C -1 ; WX 831 ; N onehalf ; B 81 0 750 740 ; C -1 ; WX 549 ; N lessequal ; B 26 0 523 658 ; C -1 ; WX 655 ; N ocircumflex ; B 42 -13 614 764 ; C -1 ; WX 610 ; N ntilde ; B 65 0 546 754 ; C -1 ; WX 655 ; N Uhungarumlaut ; B 75 -13 579 949 ; C -1 ; WX 536 ; N Eacute ; B 70 0 475 949 ; C -1 ; WX 650 ; N emacron ; B 38 -13 608 736 ; C -1 ; WX 673 ; N gbreve ; B 37 -215 606 754 ; C -1 ; WX 831 ; N onequarter ; B 100 0 729 740 ; C -1 ; WX 498 ; N Scaron ; B 22 -13 473 927 ; C -1 ; WX 498 ; N Scommaaccent ; B 22 -222 473 753 ; C -1 ; WX 869 ; N Ohungarumlaut ; B 43 -13 826 949 ; C -1 ; WX 400 ; N degree ; B 56 421 344 709 ; C -1 ; WX 655 ; N ograve ; B 42 -13 614 786 ; C -1 ; WX 813 ; N Ccaron ; B 43 -13 771 927 ; C -1 ; WX 608 ; N ugrave ; B 62 -13 541 786 ; C -1 ; WX 453 ; N radical ; B 7 -58 447 756 ; C -1 ; WX 744 ; N Dcaron ; B 74 0 699 927 ; C -1 ; WX 301 ; N rcommaaccent ; B 8 -222 291 561 ; C -1 ; WX 740 ; N Ntilde ; B 75 0 664 917 ; C -1 ; WX 655 ; N otilde ; B 42 -13 614 754 ; C -1 ; WX 607 ; N Rcommaaccent ; B 70 -202 572 740 ; C -1 ; WX 462 ; N Lcommaaccent ; B 82 -222 462 740 ; C -1 ; WX 740 ; N Atilde ; B 12 0 729 917 ; C -1 ; WX 740 ; N Aogonek ; B 12 -191 751 740 ; C -1 ; WX 740 ; N Aring ; B 12 0 729 955 ; C -1 ; WX 869 ; N Otilde ; B 43 -13 826 917 ; C -1 ; WX 425 ; N zdotaccent ; B 10 0 415 765 ; C -1 ; WX 536 ; N Ecaron ; B 70 0 475 927 ; C -1 ; WX 226 ; N Iogonek ; B 21 -191 176 740 ; C -1 ; WX 502 ; N kcommaaccent ; B 70 -202 498 740 ; C -1 ; WX 606 ; N minus ; B 51 219 555 287 ; C -1 ; WX 226 ; N Icircumflex ; B -64 0 290 927 ; C -1 ; WX 610 ; N ncaron ; B 65 0 546 764 ; C -1 ; WX 339 ; N tcommaaccent ; B 14 -222 330 740 ; C -1 ; WX 606 ; N logicalnot ; B 51 109 555 388 ; C -1 ; WX 655 ; N odieresis ; B 42 -13 614 765 ; C -1 ; WX 608 ; N udieresis ; B 62 -13 541 765 ; C -1 ; WX 549 ; N notequal ; B 12 -29 537 541 ; C -1 ; WX 673 ; N gcommaaccent ; B 37 -215 606 786 ; C -1 ; WX 655 ; N eth ; B 42 -12 614 753 ; C -1 ; WX 425 ; N zcaron ; B 10 0 415 764 ; C -1 ; WX 610 ; N ncommaaccent ; B 65 -202 546 561 ; C -1 ; WX 332 ; N onesuperior ; B 63 296 198 740 ; C -1 ; WX 200 ; N imacron ; B -44 0 243 736 ; EndCharMetrics StartKernData StartKernPairs 922 KPX A T -81 KPX A Tcaron -81 KPX A Tcommaaccent -81 KPX A V -122 KPX A W -95 KPX A Y -122 KPX A Yacute -122 KPX A Ydieresis -122 KPX A v -73 KPX A w -65 KPX A y -72 KPX A yacute -72 KPX A ydieresis -72 KPX Aacute T -81 KPX Aacute Tcaron -81 KPX Aacute Tcommaaccent -81 KPX Aacute V -122 KPX Aacute W -95 KPX Aacute Y -122 KPX Aacute Yacute -122 KPX Aacute Ydieresis -122 KPX Aacute v -73 KPX Aacute w -65 KPX Aacute y -72 KPX Aacute yacute -72 KPX Aacute ydieresis -72 KPX Abreve T -81 KPX Abreve Tcaron -81 KPX Abreve Tcommaaccent -81 KPX Abreve V -122 KPX Abreve W -95 KPX Abreve Y -122 KPX Abreve Yacute -122 KPX Abreve Ydieresis -122 KPX Abreve v -73 KPX Abreve w -65 KPX Abreve y -72 KPX Abreve yacute -72 KPX Abreve ydieresis -72 KPX Acircumflex T -81 KPX Acircumflex Tcaron -81 KPX Acircumflex Tcommaaccent -81 KPX Acircumflex V -122 KPX Acircumflex W -95 KPX Acircumflex Y -122 KPX Acircumflex Yacute -122 KPX Acircumflex Ydieresis -122 KPX Acircumflex v -73 KPX Acircumflex w -65 KPX Acircumflex y -72 KPX Acircumflex yacute -72 KPX Acircumflex ydieresis -72 KPX Adieresis T -81 KPX Adieresis Tcaron -81 KPX Adieresis Tcommaaccent -81 KPX Adieresis V -122 KPX Adieresis W -95 KPX Adieresis Y -122 KPX Adieresis Yacute -122 KPX Adieresis Ydieresis -122 KPX Adieresis v -73 KPX Adieresis w -65 KPX Adieresis y -72 KPX Adieresis yacute -72 KPX Adieresis ydieresis -72 KPX Agrave T -81 KPX Agrave Tcaron -81 KPX Agrave Tcommaaccent -81 KPX Agrave V -122 KPX Agrave W -95 KPX Agrave Y -122 KPX Agrave Yacute -122 KPX Agrave Ydieresis -122 KPX Agrave v -73 KPX Agrave w -65 KPX Agrave y -72 KPX Agrave yacute -72 KPX Agrave ydieresis -72 KPX Amacron T -81 KPX Amacron Tcaron -81 KPX Amacron Tcommaaccent -81 KPX Amacron V -122 KPX Amacron W -95 KPX Amacron Y -122 KPX Amacron Yacute -122 KPX Amacron Ydieresis -122 KPX Amacron v -73 KPX Amacron w -65 KPX Amacron y -72 KPX Amacron yacute -72 KPX Amacron ydieresis -72 KPX Aogonek T -81 KPX Aogonek Tcaron -81 KPX Aogonek Tcommaaccent -81 KPX Aogonek V -122 KPX Aogonek W -95 KPX Aogonek Y -122 KPX Aogonek Yacute -122 KPX Aogonek Ydieresis -122 KPX Aogonek v -73 KPX Aogonek w -65 KPX Aogonek y -72 KPX Aogonek yacute -72 KPX Aogonek ydieresis -72 KPX Aring T -81 KPX Aring Tcaron -81 KPX Aring Tcommaaccent -81 KPX Aring V -122 KPX Aring W -95 KPX Aring Y -122 KPX Aring Yacute -122 KPX Aring Ydieresis -122 KPX Aring v -73 KPX Aring w -65 KPX Aring y -72 KPX Aring yacute -72 KPX Aring ydieresis -72 KPX Atilde T -81 KPX Atilde Tcaron -81 KPX Atilde Tcommaaccent -81 KPX Atilde V -122 KPX Atilde W -95 KPX Atilde Y -122 KPX Atilde Yacute -122 KPX Atilde Ydieresis -122 KPX Atilde v -73 KPX Atilde w -65 KPX Atilde y -72 KPX Atilde yacute -72 KPX Atilde ydieresis -72 KPX F A -60 KPX F Aacute -60 KPX F Abreve -60 KPX F Acircumflex -60 KPX F Adieresis -60 KPX F Agrave -60 KPX F Amacron -60 KPX F Aogonek -60 KPX F Aring -60 KPX F Atilde -60 KPX F comma -122 KPX F period -79 KPX L T -46 KPX L Tcaron -46 KPX L Tcommaaccent -46 KPX L V -113 KPX L W -67 KPX L Y -91 KPX L Yacute -91 KPX L Ydieresis -91 KPX L y -23 KPX L yacute -23 KPX L ydieresis -23 KPX Lacute T -46 KPX Lacute Tcaron -46 KPX Lacute Tcommaaccent -46 KPX Lacute V -113 KPX Lacute W -67 KPX Lacute Y -91 KPX Lacute Yacute -91 KPX Lacute Ydieresis -91 KPX Lacute y -23 KPX Lacute yacute -23 KPX Lacute ydieresis -23 KPX Lcaron y -23 KPX Lcaron yacute -23 KPX Lcaron ydieresis -23 KPX Lcommaaccent T -46 KPX Lcommaaccent Tcaron -46 KPX Lcommaaccent Tcommaaccent -46 KPX Lcommaaccent V -113 KPX Lcommaaccent W -67 KPX Lcommaaccent Y -91 KPX Lcommaaccent Yacute -91 KPX Lcommaaccent Ydieresis -91 KPX Lcommaaccent y -23 KPX Lcommaaccent yacute -23 KPX Lcommaaccent ydieresis -23 KPX Lslash T -46 KPX Lslash Tcaron -46 KPX Lslash Tcommaaccent -46 KPX Lslash V -113 KPX Lslash W -67 KPX Lslash Y -91 KPX Lslash Yacute -91 KPX Lslash Ydieresis -91 KPX Lslash y -23 KPX Lslash yacute -23 KPX Lslash ydieresis -23 KPX P A -74 KPX P Aacute -74 KPX P Abreve -74 KPX P Acircumflex -74 KPX P Adieresis -74 KPX P Agrave -74 KPX P Amacron -74 KPX P Aogonek -74 KPX P Aring -74 KPX P Atilde -74 KPX P comma -123 KPX P period -91 KPX R T 6 KPX R Tcaron 6 KPX R Tcommaaccent 6 KPX R V -39 KPX R W 2 KPX R Y -20 KPX R Yacute -20 KPX R Ydieresis -20 KPX R y 32 KPX R yacute 32 KPX R ydieresis 32 KPX Racute T 6 KPX Racute Tcaron 6 KPX Racute Tcommaaccent 6 KPX Racute V -39 KPX Racute W 2 KPX Racute Y -20 KPX Racute Yacute -20 KPX Racute Ydieresis -20 KPX Racute y 32 KPX Racute yacute 32 KPX Racute ydieresis 32 KPX Rcaron T 6 KPX Rcaron Tcaron 6 KPX Rcaron Tcommaaccent 6 KPX Rcaron V -39 KPX Rcaron W 2 KPX Rcaron Y -20 KPX Rcaron Yacute -20 KPX Rcaron Ydieresis -20 KPX Rcaron y 32 KPX Rcaron yacute 32 KPX Rcaron ydieresis 32 KPX Rcommaaccent T 6 KPX Rcommaaccent Tcaron 6 KPX Rcommaaccent Tcommaaccent 6 KPX Rcommaaccent V -39 KPX Rcommaaccent W 2 KPX Rcommaaccent Y -20 KPX Rcommaaccent Yacute -20 KPX Rcommaaccent Ydieresis -20 KPX Rcommaaccent y 32 KPX Rcommaaccent yacute 32 KPX Rcommaaccent ydieresis 32 KPX T A -81 KPX T Aacute -81 KPX T Abreve -81 KPX T Acircumflex -81 KPX T Adieresis -81 KPX T Agrave -81 KPX T Amacron -81 KPX T Aogonek -81 KPX T Aring -81 KPX T Atilde -81 KPX T a -52 KPX T aacute -52 KPX T abreve -52 KPX T acircumflex -52 KPX T adieresis -52 KPX T agrave -52 KPX T amacron -52 KPX T aogonek -52 KPX T aring -52 KPX T atilde -52 KPX T c -51 KPX T cacute -51 KPX T ccaron -51 KPX T ccedilla -51 KPX T colon 3 KPX T comma -102 KPX T e -49 KPX T eacute -49 KPX T ecaron -49 KPX T ecircumflex -49 KPX T edieresis -49 KPX T edotaccent -49 KPX T egrave -49 KPX T emacron -49 KPX T eogonek -49 KPX T i 31 KPX T iacute 31 KPX T icircumflex 31 KPX T idieresis 31 KPX T igrave 31 KPX T imacron 31 KPX T iogonek 31 KPX T o -49 KPX T oacute -49 KPX T ocircumflex -49 KPX T odieresis -49 KPX T ograve -49 KPX T ohungarumlaut -49 KPX T omacron -49 KPX T oslash -49 KPX T otilde -49 KPX T period -71 KPX T r -30 KPX T racute -30 KPX T rcaron -30 KPX T rcommaaccent -30 KPX T s -23 KPX T sacute -23 KPX T scedilla -23 KPX T scommaaccent -23 KPX T semicolon -29 KPX T u -46 KPX T uacute -46 KPX T ucircumflex -46 KPX T udieresis -46 KPX T ugrave -46 KPX T uhungarumlaut -46 KPX T umacron -46 KPX T uogonek -46 KPX T uring -46 KPX T w 7 KPX T y 5 KPX T yacute 5 KPX T ydieresis 5 KPX Tcaron A -81 KPX Tcaron Aacute -81 KPX Tcaron Abreve -81 KPX Tcaron Acircumflex -81 KPX Tcaron Adieresis -81 KPX Tcaron Agrave -81 KPX Tcaron Amacron -81 KPX Tcaron Aogonek -81 KPX Tcaron Aring -81 KPX Tcaron Atilde -81 KPX Tcaron a -52 KPX Tcaron aacute -52 KPX Tcaron abreve -52 KPX Tcaron acircumflex -52 KPX Tcaron adieresis -52 KPX Tcaron agrave -52 KPX Tcaron amacron -52 KPX Tcaron aogonek -52 KPX Tcaron aring -52 KPX Tcaron atilde -52 KPX Tcaron c -51 KPX Tcaron cacute -51 KPX Tcaron ccaron -51 KPX Tcaron ccedilla -51 KPX Tcaron colon 3 KPX Tcaron comma -102 KPX Tcaron e -49 KPX Tcaron eacute -49 KPX Tcaron ecaron -49 KPX Tcaron ecircumflex -49 KPX Tcaron edieresis -49 KPX Tcaron edotaccent -49 KPX Tcaron egrave -49 KPX Tcaron emacron -49 KPX Tcaron eogonek -49 KPX Tcaron i 31 KPX Tcaron iacute 31 KPX Tcaron iogonek 31 KPX Tcaron o -49 KPX Tcaron oacute -49 KPX Tcaron ocircumflex -49 KPX Tcaron odieresis -49 KPX Tcaron ograve -49 KPX Tcaron ohungarumlaut -49 KPX Tcaron omacron -49 KPX Tcaron oslash -49 KPX Tcaron otilde -49 KPX Tcaron period -71 KPX Tcaron r -30 KPX Tcaron racute -30 KPX Tcaron rcaron -30 KPX Tcaron rcommaaccent -30 KPX Tcaron s -23 KPX Tcaron sacute -23 KPX Tcaron scaron -23 KPX Tcaron scedilla -23 KPX Tcaron scommaaccent -23 KPX Tcaron semicolon -29 KPX Tcaron u -46 KPX Tcaron uacute -46 KPX Tcaron ucircumflex -46 KPX Tcaron udieresis -46 KPX Tcaron ugrave -46 KPX Tcaron uhungarumlaut -46 KPX Tcaron umacron -46 KPX Tcaron uogonek -46 KPX Tcaron uring -46 KPX Tcaron w 7 KPX Tcaron y 5 KPX Tcaron yacute 5 KPX Tcaron ydieresis 5 KPX Tcommaaccent A -81 KPX Tcommaaccent Aacute -81 KPX Tcommaaccent Abreve -81 KPX Tcommaaccent Acircumflex -81 KPX Tcommaaccent Adieresis -81 KPX Tcommaaccent Agrave -81 KPX Tcommaaccent Amacron -81 KPX Tcommaaccent Aogonek -81 KPX Tcommaaccent Aring -81 KPX Tcommaaccent Atilde -81 KPX Tcommaaccent a -52 KPX Tcommaaccent aacute -52 KPX Tcommaaccent abreve -52 KPX Tcommaaccent acircumflex -52 KPX Tcommaaccent adieresis -52 KPX Tcommaaccent agrave -52 KPX Tcommaaccent amacron -52 KPX Tcommaaccent aogonek -52 KPX Tcommaaccent aring -52 KPX Tcommaaccent atilde -52 KPX Tcommaaccent c -51 KPX Tcommaaccent cacute -51 KPX Tcommaaccent ccaron -51 KPX Tcommaaccent ccedilla -51 KPX Tcommaaccent colon 3 KPX Tcommaaccent comma -102 KPX Tcommaaccent e -49 KPX Tcommaaccent eacute -49 KPX Tcommaaccent ecaron -49 KPX Tcommaaccent ecircumflex -49 KPX Tcommaaccent edieresis -49 KPX Tcommaaccent edotaccent -49 KPX Tcommaaccent egrave -49 KPX Tcommaaccent emacron -49 KPX Tcommaaccent eogonek -49 KPX Tcommaaccent i 31 KPX Tcommaaccent iacute 31 KPX Tcommaaccent iogonek 31 KPX Tcommaaccent o -49 KPX Tcommaaccent oacute -49 KPX Tcommaaccent ocircumflex -49 KPX Tcommaaccent odieresis -49 KPX Tcommaaccent ograve -49 KPX Tcommaaccent ohungarumlaut -49 KPX Tcommaaccent omacron -49 KPX Tcommaaccent oslash -49 KPX Tcommaaccent otilde -49 KPX Tcommaaccent period -71 KPX Tcommaaccent r -30 KPX Tcommaaccent racute -30 KPX Tcommaaccent rcaron -30 KPX Tcommaaccent rcommaaccent -30 KPX Tcommaaccent s -23 KPX Tcommaaccent sacute -23 KPX Tcommaaccent scedilla -23 KPX Tcommaaccent scommaaccent -23 KPX Tcommaaccent semicolon -29 KPX Tcommaaccent u -46 KPX Tcommaaccent uacute -46 KPX Tcommaaccent ucircumflex -46 KPX Tcommaaccent udieresis -46 KPX Tcommaaccent ugrave -46 KPX Tcommaaccent uhungarumlaut -46 KPX Tcommaaccent umacron -46 KPX Tcommaaccent uogonek -46 KPX Tcommaaccent uring -46 KPX Tcommaaccent w 7 KPX Tcommaaccent y 5 KPX Tcommaaccent yacute 5 KPX Tcommaaccent ydieresis 5 KPX V A -122 KPX V Aacute -122 KPX V Abreve -122 KPX V Acircumflex -122 KPX V Adieresis -122 KPX V Agrave -122 KPX V Amacron -122 KPX V Aogonek -122 KPX V Aring -122 KPX V Atilde -122 KPX V a -104 KPX V aacute -104 KPX V abreve -104 KPX V acircumflex -104 KPX V adieresis -104 KPX V agrave -104 KPX V amacron -104 KPX V aogonek -104 KPX V aring -104 KPX V atilde -104 KPX V colon -1 KPX V comma -106 KPX V e -101 KPX V eacute -101 KPX V ecaron -101 KPX V ecircumflex -101 KPX V edieresis -101 KPX V edotaccent -101 KPX V egrave -101 KPX V emacron -101 KPX V eogonek -101 KPX V i 5 KPX V iacute 5 KPX V iogonek 5 KPX V o -101 KPX V oacute -101 KPX V ocircumflex -101 KPX V odieresis -101 KPX V ograve -101 KPX V ohungarumlaut -101 KPX V omacron -101 KPX V oslash -101 KPX V otilde -101 KPX V period -75 KPX V r -40 KPX V racute -40 KPX V rcaron -40 KPX V rcommaaccent -40 KPX V semicolon -33 KPX V u -40 KPX V uacute -40 KPX V ucircumflex -40 KPX V udieresis -40 KPX V ugrave -40 KPX V uhungarumlaut -40 KPX V umacron -40 KPX V uogonek -40 KPX V uring -40 KPX V y -25 KPX V yacute -25 KPX V ydieresis -25 KPX W A -73 KPX W Aacute -73 KPX W Abreve -73 KPX W Acircumflex -73 KPX W Adieresis -73 KPX W Agrave -73 KPX W Amacron -73 KPX W Aogonek -73 KPX W Aring -73 KPX W Atilde -73 KPX W a -50 KPX W aacute -50 KPX W abreve -50 KPX W acircumflex -50 KPX W adieresis -50 KPX W agrave -50 KPX W amacron -50 KPX W aogonek -50 KPX W aring -50 KPX W atilde -50 KPX W colon -1 KPX W comma -106 KPX W e -47 KPX W eacute -47 KPX W ecaron -47 KPX W ecircumflex -47 KPX W edieresis -47 KPX W edotaccent -47 KPX W egrave -47 KPX W emacron -47 KPX W eogonek -47 KPX W i 6 KPX W iacute 6 KPX W icircumflex 16 KPX W idieresis 16 KPX W igrave 16 KPX W imacron 16 KPX W iogonek 6 KPX W o -46 KPX W oacute -46 KPX W ocircumflex -46 KPX W odieresis -46 KPX W ograve -46 KPX W ohungarumlaut -46 KPX W omacron -46 KPX W oslash -46 KPX W otilde -46 KPX W period -74 KPX W r -29 KPX W racute -29 KPX W rcaron -29 KPX W rcommaaccent -29 KPX W semicolon -33 KPX W u -30 KPX W uacute -30 KPX W ucircumflex -30 KPX W udieresis -30 KPX W ugrave -30 KPX W uhungarumlaut -30 KPX W umacron -30 KPX W uogonek -30 KPX W uring -30 KPX W y -2 KPX W yacute -2 KPX W ydieresis -2 KPX Y A -122 KPX Y Aacute -122 KPX Y Abreve -122 KPX Y Acircumflex -122 KPX Y Adieresis -122 KPX Y Agrave -122 KPX Y Amacron -122 KPX Y Aogonek -122 KPX Y Aring -122 KPX Y Atilde -122 KPX Y a -93 KPX Y aacute -93 KPX Y abreve -93 KPX Y acircumflex -93 KPX Y adieresis -93 KPX Y agrave -93 KPX Y amacron -93 KPX Y aogonek -93 KPX Y aring -93 KPX Y atilde -93 KPX Y colon 9 KPX Y comma -97 KPX Y e -89 KPX Y eacute -89 KPX Y ecaron -89 KPX Y ecircumflex -89 KPX Y edieresis -89 KPX Y edotaccent -89 KPX Y egrave -89 KPX Y emacron -89 KPX Y eogonek -89 KPX Y i 13 KPX Y iacute 13 KPX Y icircumflex 23 KPX Y idieresis 23 KPX Y igrave 23 KPX Y imacron 23 KPX Y iogonek 13 KPX Y o -89 KPX Y oacute -89 KPX Y ocircumflex -89 KPX Y odieresis -89 KPX Y ograve -89 KPX Y ohungarumlaut -89 KPX Y omacron -89 KPX Y oslash -89 KPX Y otilde -89 KPX Y p -67 KPX Y period -65 KPX Y q -93 KPX Y semicolon -23 KPX Y u -69 KPX Y uacute -69 KPX Y ucircumflex -69 KPX Y udieresis -69 KPX Y ugrave -69 KPX Y uhungarumlaut -69 KPX Y umacron -69 KPX Y uogonek -69 KPX Y uring -69 KPX Y v -17 KPX Yacute A -122 KPX Yacute Aacute -122 KPX Yacute Abreve -122 KPX Yacute Acircumflex -122 KPX Yacute Adieresis -122 KPX Yacute Agrave -122 KPX Yacute Amacron -122 KPX Yacute Aogonek -122 KPX Yacute Aring -122 KPX Yacute Atilde -122 KPX Yacute a -93 KPX Yacute aacute -93 KPX Yacute abreve -93 KPX Yacute acircumflex -93 KPX Yacute adieresis -93 KPX Yacute agrave -93 KPX Yacute amacron -93 KPX Yacute aogonek -93 KPX Yacute aring -93 KPX Yacute atilde -93 KPX Yacute colon 9 KPX Yacute comma -97 KPX Yacute e -89 KPX Yacute eacute -89 KPX Yacute ecaron -89 KPX Yacute ecircumflex -89 KPX Yacute edieresis -89 KPX Yacute edotaccent -89 KPX Yacute egrave -89 KPX Yacute emacron -89 KPX Yacute eogonek -89 KPX Yacute i 13 KPX Yacute iacute 13 KPX Yacute icircumflex 23 KPX Yacute idieresis 23 KPX Yacute igrave 23 KPX Yacute imacron 23 KPX Yacute iogonek 13 KPX Yacute o -89 KPX Yacute oacute -89 KPX Yacute ocircumflex -89 KPX Yacute odieresis -89 KPX Yacute ograve -89 KPX Yacute ohungarumlaut -89 KPX Yacute omacron -89 KPX Yacute oslash -89 KPX Yacute otilde -89 KPX Yacute p -67 KPX Yacute period -65 KPX Yacute q -93 KPX Yacute semicolon -23 KPX Yacute u -69 KPX Yacute uacute -69 KPX Yacute ucircumflex -69 KPX Yacute udieresis -69 KPX Yacute ugrave -69 KPX Yacute uhungarumlaut -69 KPX Yacute umacron -69 KPX Yacute uogonek -69 KPX Yacute uring -69 KPX Yacute v -17 KPX Ydieresis A -122 KPX Ydieresis Aacute -122 KPX Ydieresis Abreve -122 KPX Ydieresis Acircumflex -122 KPX Ydieresis Adieresis -122 KPX Ydieresis Agrave -122 KPX Ydieresis Amacron -122 KPX Ydieresis Aogonek -122 KPX Ydieresis Aring -122 KPX Ydieresis Atilde -122 KPX Ydieresis a -93 KPX Ydieresis aacute -93 KPX Ydieresis abreve -93 KPX Ydieresis acircumflex -93 KPX Ydieresis adieresis -93 KPX Ydieresis agrave -93 KPX Ydieresis amacron -93 KPX Ydieresis aogonek -93 KPX Ydieresis aring -93 KPX Ydieresis atilde -93 KPX Ydieresis colon 9 KPX Ydieresis comma -97 KPX Ydieresis e -89 KPX Ydieresis eacute -89 KPX Ydieresis ecaron -89 KPX Ydieresis ecircumflex -89 KPX Ydieresis edieresis -89 KPX Ydieresis edotaccent -89 KPX Ydieresis egrave -89 KPX Ydieresis emacron -89 KPX Ydieresis eogonek -89 KPX Ydieresis i 13 KPX Ydieresis iacute 13 KPX Ydieresis icircumflex 23 KPX Ydieresis idieresis 23 KPX Ydieresis igrave 23 KPX Ydieresis imacron 23 KPX Ydieresis iogonek 13 KPX Ydieresis o -89 KPX Ydieresis oacute -89 KPX Ydieresis ocircumflex -89 KPX Ydieresis odieresis -89 KPX Ydieresis ograve -89 KPX Ydieresis ohungarumlaut -89 KPX Ydieresis omacron -89 KPX Ydieresis oslash -89 KPX Ydieresis otilde -89 KPX Ydieresis p -67 KPX Ydieresis period -65 KPX Ydieresis q -93 KPX Ydieresis semicolon -23 KPX Ydieresis u -69 KPX Ydieresis uacute -69 KPX Ydieresis ucircumflex -69 KPX Ydieresis udieresis -69 KPX Ydieresis ugrave -69 KPX Ydieresis uhungarumlaut -69 KPX Ydieresis umacron -69 KPX Ydieresis uogonek -69 KPX Ydieresis uring -69 KPX Ydieresis v -17 KPX f f 3 KPX r c -7 KPX r cacute -7 KPX r ccaron -7 KPX r ccedilla -7 KPX r comma -105 KPX r d -6 KPX r dcroat -6 KPX r e -4 KPX r eacute -4 KPX r ecaron -4 KPX r ecircumflex -4 KPX r edieresis -4 KPX r edotaccent -4 KPX r egrave -4 KPX r emacron -4 KPX r eogonek -4 KPX r f 48 KPX r g 1 KPX r gbreve 1 KPX r gcommaaccent 1 KPX r h 29 KPX r m 28 KPX r n 21 KPX r nacute 21 KPX r ncaron 21 KPX r ncommaaccent 21 KPX r ntilde 21 KPX r o -4 KPX r oacute -4 KPX r ocircumflex -4 KPX r odieresis -4 KPX r ograve -4 KPX r ohungarumlaut -4 KPX r omacron -4 KPX r oslash -4 KPX r otilde -4 KPX r period -73 KPX r q -8 KPX racute c -7 KPX racute cacute -7 KPX racute ccaron -7 KPX racute ccedilla -7 KPX racute comma -105 KPX racute d -6 KPX racute dcroat -6 KPX racute e -4 KPX racute eacute -4 KPX racute ecaron -4 KPX racute ecircumflex -4 KPX racute edieresis -4 KPX racute edotaccent -4 KPX racute egrave -4 KPX racute emacron -4 KPX racute eogonek -4 KPX racute f 48 KPX racute g 1 KPX racute gbreve 1 KPX racute gcommaaccent 1 KPX racute h 29 KPX racute m 28 KPX racute n 21 KPX racute nacute 21 KPX racute ncaron 21 KPX racute ncommaaccent 21 KPX racute ntilde 21 KPX racute o -4 KPX racute oacute -4 KPX racute ocircumflex -4 KPX racute odieresis -4 KPX racute ograve -4 KPX racute ohungarumlaut -4 KPX racute omacron -4 KPX racute oslash -4 KPX racute otilde -4 KPX racute period -73 KPX racute q -8 KPX rcaron c -7 KPX rcaron cacute -7 KPX rcaron ccaron -7 KPX rcaron ccedilla -7 KPX rcaron comma -105 KPX rcaron d -6 KPX rcaron dcroat -6 KPX rcaron e -4 KPX rcaron eacute -4 KPX rcaron ecaron -4 KPX rcaron ecircumflex -4 KPX rcaron edieresis -4 KPX rcaron edotaccent -4 KPX rcaron egrave -4 KPX rcaron emacron -4 KPX rcaron eogonek -4 KPX rcaron f 48 KPX rcaron g 1 KPX rcaron gbreve 1 KPX rcaron gcommaaccent 1 KPX rcaron h 29 KPX rcaron m 28 KPX rcaron n 21 KPX rcaron nacute 21 KPX rcaron ncaron 21 KPX rcaron ncommaaccent 21 KPX rcaron ntilde 21 KPX rcaron o -4 KPX rcaron oacute -4 KPX rcaron ocircumflex -4 KPX rcaron odieresis -4 KPX rcaron ograve -4 KPX rcaron ohungarumlaut -4 KPX rcaron omacron -4 KPX rcaron oslash -4 KPX rcaron otilde -4 KPX rcaron period -73 KPX rcaron q -8 KPX rcommaaccent c -7 KPX rcommaaccent cacute -7 KPX rcommaaccent ccaron -7 KPX rcommaaccent ccedilla -7 KPX rcommaaccent comma -105 KPX rcommaaccent d -6 KPX rcommaaccent dcroat -6 KPX rcommaaccent e -4 KPX rcommaaccent eacute -4 KPX rcommaaccent ecaron -4 KPX rcommaaccent ecircumflex -4 KPX rcommaaccent edieresis -4 KPX rcommaaccent edotaccent -4 KPX rcommaaccent egrave -4 KPX rcommaaccent emacron -4 KPX rcommaaccent eogonek -4 KPX rcommaaccent f 48 KPX rcommaaccent g 1 KPX rcommaaccent gbreve 1 KPX rcommaaccent gcommaaccent 1 KPX rcommaaccent h 29 KPX rcommaaccent m 28 KPX rcommaaccent n 21 KPX rcommaaccent nacute 21 KPX rcommaaccent ncaron 21 KPX rcommaaccent ncommaaccent 21 KPX rcommaaccent ntilde 21 KPX rcommaaccent o -4 KPX rcommaaccent oacute -4 KPX rcommaaccent ocircumflex -4 KPX rcommaaccent odieresis -4 KPX rcommaaccent ograve -4 KPX rcommaaccent ohungarumlaut -4 KPX rcommaaccent omacron -4 KPX rcommaaccent oslash -4 KPX rcommaaccent otilde -4 KPX rcommaaccent period -73 KPX rcommaaccent q -8 EndKernPairs EndKernData EndFontMetrics gle-graphics-4.2.4c/src/fonts/Adobe-Core35_AFMs-314/Times-Roman.afm0000664000000000000000000016575411405446017022740 0ustar rootrootStartFontMetrics 4.1 Comment Copyright (c) 1985, 1987, 1989, 1990, 1993, 1997 Adobe Systems Incorporated. All Rights Reserved. Comment Creation Date: Thu May 1 12:49:17 1997 Comment UniqueID 43068 Comment VMusage 43909 54934 FontName Times-Roman FullName Times Roman FamilyName Times Weight Roman ItalicAngle 0 IsFixedPitch false FontBBox -168 -218 1000 898 UnderlinePosition -100 UnderlineThickness 50 Version 002.000 Notice Copyright (c) 1985, 1987, 1989, 1990, 1993, 1997 Adobe Systems Incorporated. All Rights Reserved.Times is a trademark of Linotype-Hell AG and/or its subsidiaries. EncodingScheme AdobeStandardEncoding CapHeight 662 XHeight 450 Ascender 683 Descender -217 StdHW 28 StdVW 84 StartCharMetrics 314 C 32 ; WX 250 ; N space ; B 0 0 0 0 ; C 33 ; WX 333 ; N exclam ; B 130 -9 238 676 ; C 34 ; WX 408 ; N quotedbl ; B 77 431 331 676 ; C 35 ; WX 500 ; N numbersign ; B 5 0 496 662 ; C 36 ; WX 500 ; N dollar ; B 44 -87 457 727 ; C 37 ; WX 833 ; N percent ; B 61 -13 772 676 ; C 38 ; WX 778 ; N ampersand ; B 42 -13 750 676 ; C 39 ; WX 333 ; N quoteright ; B 79 433 218 676 ; C 40 ; WX 333 ; N parenleft ; B 48 -177 304 676 ; C 41 ; WX 333 ; N parenright ; B 29 -177 285 676 ; C 42 ; WX 500 ; N asterisk ; B 69 265 432 676 ; C 43 ; WX 564 ; N plus ; B 30 0 534 506 ; C 44 ; WX 250 ; N comma ; B 56 -141 195 102 ; C 45 ; WX 333 ; N hyphen ; B 39 194 285 257 ; C 46 ; WX 250 ; N period ; B 70 -11 181 100 ; C 47 ; WX 278 ; N slash ; B -9 -14 287 676 ; C 48 ; WX 500 ; N zero ; B 24 -14 476 676 ; C 49 ; WX 500 ; N one ; B 111 0 394 676 ; C 50 ; WX 500 ; N two ; B 30 0 475 676 ; C 51 ; WX 500 ; N three ; B 43 -14 431 676 ; C 52 ; WX 500 ; N four ; B 12 0 472 676 ; C 53 ; WX 500 ; N five ; B 32 -14 438 688 ; C 54 ; WX 500 ; N six ; B 34 -14 468 684 ; C 55 ; WX 500 ; N seven ; B 20 -8 449 662 ; C 56 ; WX 500 ; N eight ; B 56 -14 445 676 ; C 57 ; WX 500 ; N nine ; B 30 -22 459 676 ; C 58 ; WX 278 ; N colon ; B 81 -11 192 459 ; C 59 ; WX 278 ; N semicolon ; B 80 -141 219 459 ; C 60 ; WX 564 ; N less ; B 28 -8 536 514 ; C 61 ; WX 564 ; N equal ; B 30 120 534 386 ; C 62 ; WX 564 ; N greater ; B 28 -8 536 514 ; C 63 ; WX 444 ; N question ; B 68 -8 414 676 ; C 64 ; WX 921 ; N at ; B 116 -14 809 676 ; C 65 ; WX 722 ; N A ; B 15 0 706 674 ; C 66 ; WX 667 ; N B ; B 17 0 593 662 ; C 67 ; WX 667 ; N C ; B 28 -14 633 676 ; C 68 ; WX 722 ; N D ; B 16 0 685 662 ; C 69 ; WX 611 ; N E ; B 12 0 597 662 ; C 70 ; WX 556 ; N F ; B 12 0 546 662 ; C 71 ; WX 722 ; N G ; B 32 -14 709 676 ; C 72 ; WX 722 ; N H ; B 19 0 702 662 ; C 73 ; WX 333 ; N I ; B 18 0 315 662 ; C 74 ; WX 389 ; N J ; B 10 -14 370 662 ; C 75 ; WX 722 ; N K ; B 34 0 723 662 ; C 76 ; WX 611 ; N L ; B 12 0 598 662 ; C 77 ; WX 889 ; N M ; B 12 0 863 662 ; C 78 ; WX 722 ; N N ; B 12 -11 707 662 ; C 79 ; WX 722 ; N O ; B 34 -14 688 676 ; C 80 ; WX 556 ; N P ; B 16 0 542 662 ; C 81 ; WX 722 ; N Q ; B 34 -178 701 676 ; C 82 ; WX 667 ; N R ; B 17 0 659 662 ; C 83 ; WX 556 ; N S ; B 42 -14 491 676 ; C 84 ; WX 611 ; N T ; B 17 0 593 662 ; C 85 ; WX 722 ; N U ; B 14 -14 705 662 ; C 86 ; WX 722 ; N V ; B 16 -11 697 662 ; C 87 ; WX 944 ; N W ; B 5 -11 932 662 ; C 88 ; WX 722 ; N X ; B 10 0 704 662 ; C 89 ; WX 722 ; N Y ; B 22 0 703 662 ; C 90 ; WX 611 ; N Z ; B 9 0 597 662 ; C 91 ; WX 333 ; N bracketleft ; B 88 -156 299 662 ; C 92 ; WX 278 ; N backslash ; B -9 -14 287 676 ; C 93 ; WX 333 ; N bracketright ; B 34 -156 245 662 ; C 94 ; WX 469 ; N asciicircum ; B 24 297 446 662 ; C 95 ; WX 500 ; N underscore ; B 0 -125 500 -75 ; C 96 ; WX 333 ; N quoteleft ; B 115 433 254 676 ; C 97 ; WX 444 ; N a ; B 37 -10 442 460 ; C 98 ; WX 500 ; N b ; B 3 -10 468 683 ; C 99 ; WX 444 ; N c ; B 25 -10 412 460 ; C 100 ; WX 500 ; N d ; B 27 -10 491 683 ; C 101 ; WX 444 ; N e ; B 25 -10 424 460 ; C 102 ; WX 333 ; N f ; B 20 0 383 683 ; L i fi ; L l fl ; C 103 ; WX 500 ; N g ; B 28 -218 470 460 ; C 104 ; WX 500 ; N h ; B 9 0 487 683 ; C 105 ; WX 278 ; N i ; B 16 0 253 683 ; C 106 ; WX 278 ; N j ; B -70 -218 194 683 ; C 107 ; WX 500 ; N k ; B 7 0 505 683 ; C 108 ; WX 278 ; N l ; B 19 0 257 683 ; C 109 ; WX 778 ; N m ; B 16 0 775 460 ; C 110 ; WX 500 ; N n ; B 16 0 485 460 ; C 111 ; WX 500 ; N o ; B 29 -10 470 460 ; C 112 ; WX 500 ; N p ; B 5 -217 470 460 ; C 113 ; WX 500 ; N q ; B 24 -217 488 460 ; C 114 ; WX 333 ; N r ; B 5 0 335 460 ; C 115 ; WX 389 ; N s ; B 51 -10 348 460 ; C 116 ; WX 278 ; N t ; B 13 -10 279 579 ; C 117 ; WX 500 ; N u ; B 9 -10 479 450 ; C 118 ; WX 500 ; N v ; B 19 -14 477 450 ; C 119 ; WX 722 ; N w ; B 21 -14 694 450 ; C 120 ; WX 500 ; N x ; B 17 0 479 450 ; C 121 ; WX 500 ; N y ; B 14 -218 475 450 ; C 122 ; WX 444 ; N z ; B 27 0 418 450 ; C 123 ; WX 480 ; N braceleft ; B 100 -181 350 680 ; C 124 ; WX 200 ; N bar ; B 67 -218 133 782 ; C 125 ; WX 480 ; N braceright ; B 130 -181 380 680 ; C 126 ; WX 541 ; N asciitilde ; B 40 183 502 323 ; C 161 ; WX 333 ; N exclamdown ; B 97 -218 205 467 ; C 162 ; WX 500 ; N cent ; B 53 -138 448 579 ; C 163 ; WX 500 ; N sterling ; B 12 -8 490 676 ; C 164 ; WX 167 ; N fraction ; B -168 -14 331 676 ; C 165 ; WX 500 ; N yen ; B -53 0 512 662 ; C 166 ; WX 500 ; N florin ; B 7 -189 490 676 ; C 167 ; WX 500 ; N section ; B 70 -148 426 676 ; C 168 ; WX 500 ; N currency ; B -22 58 522 602 ; C 169 ; WX 180 ; N quotesingle ; B 48 431 133 676 ; C 170 ; WX 444 ; N quotedblleft ; B 43 433 414 676 ; C 171 ; WX 500 ; N guillemotleft ; B 42 33 456 416 ; C 172 ; WX 333 ; N guilsinglleft ; B 63 33 285 416 ; C 173 ; WX 333 ; N guilsinglright ; B 48 33 270 416 ; C 174 ; WX 556 ; N fi ; B 31 0 521 683 ; C 175 ; WX 556 ; N fl ; B 32 0 521 683 ; C 177 ; WX 500 ; N endash ; B 0 201 500 250 ; C 178 ; WX 500 ; N dagger ; B 59 -149 442 676 ; C 179 ; WX 500 ; N daggerdbl ; B 58 -153 442 676 ; C 180 ; WX 250 ; N periodcentered ; B 70 199 181 310 ; C 182 ; WX 453 ; N paragraph ; B -22 -154 450 662 ; C 183 ; WX 350 ; N bullet ; B 40 196 310 466 ; C 184 ; WX 333 ; N quotesinglbase ; B 79 -141 218 102 ; C 185 ; WX 444 ; N quotedblbase ; B 45 -141 416 102 ; C 186 ; WX 444 ; N quotedblright ; B 30 433 401 676 ; C 187 ; WX 500 ; N guillemotright ; B 44 33 458 416 ; C 188 ; WX 1000 ; N ellipsis ; B 111 -11 888 100 ; C 189 ; WX 1000 ; N perthousand ; B 7 -19 994 706 ; C 191 ; WX 444 ; N questiondown ; B 30 -218 376 466 ; C 193 ; WX 333 ; N grave ; B 19 507 242 678 ; C 194 ; WX 333 ; N acute ; B 93 507 317 678 ; C 195 ; WX 333 ; N circumflex ; B 11 507 322 674 ; C 196 ; WX 333 ; N tilde ; B 1 532 331 638 ; C 197 ; WX 333 ; N macron ; B 11 547 322 601 ; C 198 ; WX 333 ; N breve ; B 26 507 307 664 ; C 199 ; WX 333 ; N dotaccent ; B 118 581 216 681 ; C 200 ; WX 333 ; N dieresis ; B 18 581 315 681 ; C 202 ; WX 333 ; N ring ; B 67 512 266 711 ; C 203 ; WX 333 ; N cedilla ; B 52 -215 261 0 ; C 205 ; WX 333 ; N hungarumlaut ; B -3 507 377 678 ; C 206 ; WX 333 ; N ogonek ; B 62 -165 243 0 ; C 207 ; WX 333 ; N caron ; B 11 507 322 674 ; C 208 ; WX 1000 ; N emdash ; B 0 201 1000 250 ; C 225 ; WX 889 ; N AE ; B 0 0 863 662 ; C 227 ; WX 276 ; N ordfeminine ; B 4 394 270 676 ; C 232 ; WX 611 ; N Lslash ; B 12 0 598 662 ; C 233 ; WX 722 ; N Oslash ; B 34 -80 688 734 ; C 234 ; WX 889 ; N OE ; B 30 -6 885 668 ; C 235 ; WX 310 ; N ordmasculine ; B 6 394 304 676 ; C 241 ; WX 667 ; N ae ; B 38 -10 632 460 ; C 245 ; WX 278 ; N dotlessi ; B 16 0 253 460 ; C 248 ; WX 278 ; N lslash ; B 19 0 259 683 ; C 249 ; WX 500 ; N oslash ; B 29 -112 470 551 ; C 250 ; WX 722 ; N oe ; B 30 -10 690 460 ; C 251 ; WX 500 ; N germandbls ; B 12 -9 468 683 ; C -1 ; WX 333 ; N Idieresis ; B 18 0 315 835 ; C -1 ; WX 444 ; N eacute ; B 25 -10 424 678 ; C -1 ; WX 444 ; N abreve ; B 37 -10 442 664 ; C -1 ; WX 500 ; N uhungarumlaut ; B 9 -10 501 678 ; C -1 ; WX 444 ; N ecaron ; B 25 -10 424 674 ; C -1 ; WX 722 ; N Ydieresis ; B 22 0 703 835 ; C -1 ; WX 564 ; N divide ; B 30 -10 534 516 ; C -1 ; WX 722 ; N Yacute ; B 22 0 703 890 ; C -1 ; WX 722 ; N Acircumflex ; B 15 0 706 886 ; C -1 ; WX 444 ; N aacute ; B 37 -10 442 678 ; C -1 ; WX 722 ; N Ucircumflex ; B 14 -14 705 886 ; C -1 ; WX 500 ; N yacute ; B 14 -218 475 678 ; C -1 ; WX 389 ; N scommaaccent ; B 51 -218 348 460 ; C -1 ; WX 444 ; N ecircumflex ; B 25 -10 424 674 ; C -1 ; WX 722 ; N Uring ; B 14 -14 705 898 ; C -1 ; WX 722 ; N Udieresis ; B 14 -14 705 835 ; C -1 ; WX 444 ; N aogonek ; B 37 -165 469 460 ; C -1 ; WX 722 ; N Uacute ; B 14 -14 705 890 ; C -1 ; WX 500 ; N uogonek ; B 9 -155 487 450 ; C -1 ; WX 611 ; N Edieresis ; B 12 0 597 835 ; C -1 ; WX 722 ; N Dcroat ; B 16 0 685 662 ; C -1 ; WX 250 ; N commaaccent ; B 59 -218 184 -50 ; C -1 ; WX 760 ; N copyright ; B 38 -14 722 676 ; C -1 ; WX 611 ; N Emacron ; B 12 0 597 813 ; C -1 ; WX 444 ; N ccaron ; B 25 -10 412 674 ; C -1 ; WX 444 ; N aring ; B 37 -10 442 711 ; C -1 ; WX 722 ; N Ncommaaccent ; B 12 -198 707 662 ; C -1 ; WX 278 ; N lacute ; B 19 0 290 890 ; C -1 ; WX 444 ; N agrave ; B 37 -10 442 678 ; C -1 ; WX 611 ; N Tcommaaccent ; B 17 -218 593 662 ; C -1 ; WX 667 ; N Cacute ; B 28 -14 633 890 ; C -1 ; WX 444 ; N atilde ; B 37 -10 442 638 ; C -1 ; WX 611 ; N Edotaccent ; B 12 0 597 835 ; C -1 ; WX 389 ; N scaron ; B 39 -10 350 674 ; C -1 ; WX 389 ; N scedilla ; B 51 -215 348 460 ; C -1 ; WX 278 ; N iacute ; B 16 0 290 678 ; C -1 ; WX 471 ; N lozenge ; B 13 0 459 724 ; C -1 ; WX 667 ; N Rcaron ; B 17 0 659 886 ; C -1 ; WX 722 ; N Gcommaaccent ; B 32 -218 709 676 ; C -1 ; WX 500 ; N ucircumflex ; B 9 -10 479 674 ; C -1 ; WX 444 ; N acircumflex ; B 37 -10 442 674 ; C -1 ; WX 722 ; N Amacron ; B 15 0 706 813 ; C -1 ; WX 333 ; N rcaron ; B 5 0 335 674 ; C -1 ; WX 444 ; N ccedilla ; B 25 -215 412 460 ; C -1 ; WX 611 ; N Zdotaccent ; B 9 0 597 835 ; C -1 ; WX 556 ; N Thorn ; B 16 0 542 662 ; C -1 ; WX 722 ; N Omacron ; B 34 -14 688 813 ; C -1 ; WX 667 ; N Racute ; B 17 0 659 890 ; C -1 ; WX 556 ; N Sacute ; B 42 -14 491 890 ; C -1 ; WX 588 ; N dcaron ; B 27 -10 589 695 ; C -1 ; WX 722 ; N Umacron ; B 14 -14 705 813 ; C -1 ; WX 500 ; N uring ; B 9 -10 479 711 ; C -1 ; WX 300 ; N threesuperior ; B 15 262 291 676 ; C -1 ; WX 722 ; N Ograve ; B 34 -14 688 890 ; C -1 ; WX 722 ; N Agrave ; B 15 0 706 890 ; C -1 ; WX 722 ; N Abreve ; B 15 0 706 876 ; C -1 ; WX 564 ; N multiply ; B 38 8 527 497 ; C -1 ; WX 500 ; N uacute ; B 9 -10 479 678 ; C -1 ; WX 611 ; N Tcaron ; B 17 0 593 886 ; C -1 ; WX 476 ; N partialdiff ; B 17 -38 459 710 ; C -1 ; WX 500 ; N ydieresis ; B 14 -218 475 623 ; C -1 ; WX 722 ; N Nacute ; B 12 -11 707 890 ; C -1 ; WX 278 ; N icircumflex ; B -16 0 295 674 ; C -1 ; WX 611 ; N Ecircumflex ; B 12 0 597 886 ; C -1 ; WX 444 ; N adieresis ; B 37 -10 442 623 ; C -1 ; WX 444 ; N edieresis ; B 25 -10 424 623 ; C -1 ; WX 444 ; N cacute ; B 25 -10 413 678 ; C -1 ; WX 500 ; N nacute ; B 16 0 485 678 ; C -1 ; WX 500 ; N umacron ; B 9 -10 479 601 ; C -1 ; WX 722 ; N Ncaron ; B 12 -11 707 886 ; C -1 ; WX 333 ; N Iacute ; B 18 0 317 890 ; C -1 ; WX 564 ; N plusminus ; B 30 0 534 506 ; C -1 ; WX 200 ; N brokenbar ; B 67 -143 133 707 ; C -1 ; WX 760 ; N registered ; B 38 -14 722 676 ; C -1 ; WX 722 ; N Gbreve ; B 32 -14 709 876 ; C -1 ; WX 333 ; N Idotaccent ; B 18 0 315 835 ; C -1 ; WX 600 ; N summation ; B 15 -10 585 706 ; C -1 ; WX 611 ; N Egrave ; B 12 0 597 890 ; C -1 ; WX 333 ; N racute ; B 5 0 335 678 ; C -1 ; WX 500 ; N omacron ; B 29 -10 470 601 ; C -1 ; WX 611 ; N Zacute ; B 9 0 597 890 ; C -1 ; WX 611 ; N Zcaron ; B 9 0 597 886 ; C -1 ; WX 549 ; N greaterequal ; B 26 0 523 666 ; C -1 ; WX 722 ; N Eth ; B 16 0 685 662 ; C -1 ; WX 667 ; N Ccedilla ; B 28 -215 633 676 ; C -1 ; WX 278 ; N lcommaaccent ; B 19 -218 257 683 ; C -1 ; WX 326 ; N tcaron ; B 13 -10 318 722 ; C -1 ; WX 444 ; N eogonek ; B 25 -165 424 460 ; C -1 ; WX 722 ; N Uogonek ; B 14 -165 705 662 ; C -1 ; WX 722 ; N Aacute ; B 15 0 706 890 ; C -1 ; WX 722 ; N Adieresis ; B 15 0 706 835 ; C -1 ; WX 444 ; N egrave ; B 25 -10 424 678 ; C -1 ; WX 444 ; N zacute ; B 27 0 418 678 ; C -1 ; WX 278 ; N iogonek ; B 16 -165 265 683 ; C -1 ; WX 722 ; N Oacute ; B 34 -14 688 890 ; C -1 ; WX 500 ; N oacute ; B 29 -10 470 678 ; C -1 ; WX 444 ; N amacron ; B 37 -10 442 601 ; C -1 ; WX 389 ; N sacute ; B 51 -10 348 678 ; C -1 ; WX 278 ; N idieresis ; B -9 0 288 623 ; C -1 ; WX 722 ; N Ocircumflex ; B 34 -14 688 886 ; C -1 ; WX 722 ; N Ugrave ; B 14 -14 705 890 ; C -1 ; WX 612 ; N Delta ; B 6 0 608 688 ; C -1 ; WX 500 ; N thorn ; B 5 -217 470 683 ; C -1 ; WX 300 ; N twosuperior ; B 1 270 296 676 ; C -1 ; WX 722 ; N Odieresis ; B 34 -14 688 835 ; C -1 ; WX 500 ; N mu ; B 36 -218 512 450 ; C -1 ; WX 278 ; N igrave ; B -8 0 253 678 ; C -1 ; WX 500 ; N ohungarumlaut ; B 29 -10 491 678 ; C -1 ; WX 611 ; N Eogonek ; B 12 -165 597 662 ; C -1 ; WX 500 ; N dcroat ; B 27 -10 500 683 ; C -1 ; WX 750 ; N threequarters ; B 15 -14 718 676 ; C -1 ; WX 556 ; N Scedilla ; B 42 -215 491 676 ; C -1 ; WX 344 ; N lcaron ; B 19 0 347 695 ; C -1 ; WX 722 ; N Kcommaaccent ; B 34 -198 723 662 ; C -1 ; WX 611 ; N Lacute ; B 12 0 598 890 ; C -1 ; WX 980 ; N trademark ; B 30 256 957 662 ; C -1 ; WX 444 ; N edotaccent ; B 25 -10 424 623 ; C -1 ; WX 333 ; N Igrave ; B 18 0 315 890 ; C -1 ; WX 333 ; N Imacron ; B 11 0 322 813 ; C -1 ; WX 611 ; N Lcaron ; B 12 0 598 676 ; C -1 ; WX 750 ; N onehalf ; B 31 -14 746 676 ; C -1 ; WX 549 ; N lessequal ; B 26 0 523 666 ; C -1 ; WX 500 ; N ocircumflex ; B 29 -10 470 674 ; C -1 ; WX 500 ; N ntilde ; B 16 0 485 638 ; C -1 ; WX 722 ; N Uhungarumlaut ; B 14 -14 705 890 ; C -1 ; WX 611 ; N Eacute ; B 12 0 597 890 ; C -1 ; WX 444 ; N emacron ; B 25 -10 424 601 ; C -1 ; WX 500 ; N gbreve ; B 28 -218 470 664 ; C -1 ; WX 750 ; N onequarter ; B 37 -14 718 676 ; C -1 ; WX 556 ; N Scaron ; B 42 -14 491 886 ; C -1 ; WX 556 ; N Scommaaccent ; B 42 -218 491 676 ; C -1 ; WX 722 ; N Ohungarumlaut ; B 34 -14 688 890 ; C -1 ; WX 400 ; N degree ; B 57 390 343 676 ; C -1 ; WX 500 ; N ograve ; B 29 -10 470 678 ; C -1 ; WX 667 ; N Ccaron ; B 28 -14 633 886 ; C -1 ; WX 500 ; N ugrave ; B 9 -10 479 678 ; C -1 ; WX 453 ; N radical ; B 2 -60 452 768 ; C -1 ; WX 722 ; N Dcaron ; B 16 0 685 886 ; C -1 ; WX 333 ; N rcommaaccent ; B 5 -218 335 460 ; C -1 ; WX 722 ; N Ntilde ; B 12 -11 707 850 ; C -1 ; WX 500 ; N otilde ; B 29 -10 470 638 ; C -1 ; WX 667 ; N Rcommaaccent ; B 17 -198 659 662 ; C -1 ; WX 611 ; N Lcommaaccent ; B 12 -218 598 662 ; C -1 ; WX 722 ; N Atilde ; B 15 0 706 850 ; C -1 ; WX 722 ; N Aogonek ; B 15 -165 738 674 ; C -1 ; WX 722 ; N Aring ; B 15 0 706 898 ; C -1 ; WX 722 ; N Otilde ; B 34 -14 688 850 ; C -1 ; WX 444 ; N zdotaccent ; B 27 0 418 623 ; C -1 ; WX 611 ; N Ecaron ; B 12 0 597 886 ; C -1 ; WX 333 ; N Iogonek ; B 18 -165 315 662 ; C -1 ; WX 500 ; N kcommaaccent ; B 7 -218 505 683 ; C -1 ; WX 564 ; N minus ; B 30 220 534 286 ; C -1 ; WX 333 ; N Icircumflex ; B 11 0 322 886 ; C -1 ; WX 500 ; N ncaron ; B 16 0 485 674 ; C -1 ; WX 278 ; N tcommaaccent ; B 13 -218 279 579 ; C -1 ; WX 564 ; N logicalnot ; B 30 108 534 386 ; C -1 ; WX 500 ; N odieresis ; B 29 -10 470 623 ; C -1 ; WX 500 ; N udieresis ; B 9 -10 479 623 ; C -1 ; WX 549 ; N notequal ; B 12 -31 537 547 ; C -1 ; WX 500 ; N gcommaaccent ; B 28 -218 470 749 ; C -1 ; WX 500 ; N eth ; B 29 -10 471 686 ; C -1 ; WX 444 ; N zcaron ; B 27 0 418 674 ; C -1 ; WX 500 ; N ncommaaccent ; B 16 -218 485 460 ; C -1 ; WX 300 ; N onesuperior ; B 57 270 248 676 ; C -1 ; WX 278 ; N imacron ; B 6 0 271 601 ; EndCharMetrics StartKernData StartKernPairs 2073 KPX A C -40 KPX A Cacute -40 KPX A Ccaron -40 KPX A Ccedilla -40 KPX A G -40 KPX A Gbreve -40 KPX A Gcommaaccent -40 KPX A O -55 KPX A Oacute -55 KPX A Ocircumflex -55 KPX A Odieresis -55 KPX A Ograve -55 KPX A Ohungarumlaut -55 KPX A Omacron -55 KPX A Oslash -55 KPX A Otilde -55 KPX A Q -55 KPX A T -111 KPX A Tcaron -111 KPX A Tcommaaccent -111 KPX A U -55 KPX A Uacute -55 KPX A Ucircumflex -55 KPX A Udieresis -55 KPX A Ugrave -55 KPX A Uhungarumlaut -55 KPX A Umacron -55 KPX A Uogonek -55 KPX A Uring -55 KPX A V -135 KPX A W -90 KPX A Y -105 KPX A Yacute -105 KPX A Ydieresis -105 KPX A quoteright -111 KPX A v -74 KPX A w -92 KPX A y -92 KPX A yacute -92 KPX A ydieresis -92 KPX Aacute C -40 KPX Aacute Cacute -40 KPX Aacute Ccaron -40 KPX Aacute Ccedilla -40 KPX Aacute G -40 KPX Aacute Gbreve -40 KPX Aacute Gcommaaccent -40 KPX Aacute O -55 KPX Aacute Oacute -55 KPX Aacute Ocircumflex -55 KPX Aacute Odieresis -55 KPX Aacute Ograve -55 KPX Aacute Ohungarumlaut -55 KPX Aacute Omacron -55 KPX Aacute Oslash -55 KPX Aacute Otilde -55 KPX Aacute Q -55 KPX Aacute T -111 KPX Aacute Tcaron -111 KPX Aacute Tcommaaccent -111 KPX Aacute U -55 KPX Aacute Uacute -55 KPX Aacute Ucircumflex -55 KPX Aacute Udieresis -55 KPX Aacute Ugrave -55 KPX Aacute Uhungarumlaut -55 KPX Aacute Umacron -55 KPX Aacute Uogonek -55 KPX Aacute Uring -55 KPX Aacute V -135 KPX Aacute W -90 KPX Aacute Y -105 KPX Aacute Yacute -105 KPX Aacute Ydieresis -105 KPX Aacute quoteright -111 KPX Aacute v -74 KPX Aacute w -92 KPX Aacute y -92 KPX Aacute yacute -92 KPX Aacute ydieresis -92 KPX Abreve C -40 KPX Abreve Cacute -40 KPX Abreve Ccaron -40 KPX Abreve Ccedilla -40 KPX Abreve G -40 KPX Abreve Gbreve -40 KPX Abreve Gcommaaccent -40 KPX Abreve O -55 KPX Abreve Oacute -55 KPX Abreve Ocircumflex -55 KPX Abreve Odieresis -55 KPX Abreve Ograve -55 KPX Abreve Ohungarumlaut -55 KPX Abreve Omacron -55 KPX Abreve Oslash -55 KPX Abreve Otilde -55 KPX Abreve Q -55 KPX Abreve T -111 KPX Abreve Tcaron -111 KPX Abreve Tcommaaccent -111 KPX Abreve U -55 KPX Abreve Uacute -55 KPX Abreve Ucircumflex -55 KPX Abreve Udieresis -55 KPX Abreve Ugrave -55 KPX Abreve Uhungarumlaut -55 KPX Abreve Umacron -55 KPX Abreve Uogonek -55 KPX Abreve Uring -55 KPX Abreve V -135 KPX Abreve W -90 KPX Abreve Y -105 KPX Abreve Yacute -105 KPX Abreve Ydieresis -105 KPX Abreve quoteright -111 KPX Abreve v -74 KPX Abreve w -92 KPX Abreve y -92 KPX Abreve yacute -92 KPX Abreve ydieresis -92 KPX Acircumflex C -40 KPX Acircumflex Cacute -40 KPX Acircumflex Ccaron -40 KPX Acircumflex Ccedilla -40 KPX Acircumflex G -40 KPX Acircumflex Gbreve -40 KPX Acircumflex Gcommaaccent -40 KPX Acircumflex O -55 KPX Acircumflex Oacute -55 KPX Acircumflex Ocircumflex -55 KPX Acircumflex Odieresis -55 KPX Acircumflex Ograve -55 KPX Acircumflex Ohungarumlaut -55 KPX Acircumflex Omacron -55 KPX Acircumflex Oslash -55 KPX Acircumflex Otilde -55 KPX Acircumflex Q -55 KPX Acircumflex T -111 KPX Acircumflex Tcaron -111 KPX Acircumflex Tcommaaccent -111 KPX Acircumflex U -55 KPX Acircumflex Uacute -55 KPX Acircumflex Ucircumflex -55 KPX Acircumflex Udieresis -55 KPX Acircumflex Ugrave -55 KPX Acircumflex Uhungarumlaut -55 KPX Acircumflex Umacron -55 KPX Acircumflex Uogonek -55 KPX Acircumflex Uring -55 KPX Acircumflex V -135 KPX Acircumflex W -90 KPX Acircumflex Y -105 KPX Acircumflex Yacute -105 KPX Acircumflex Ydieresis -105 KPX Acircumflex quoteright -111 KPX Acircumflex v -74 KPX Acircumflex w -92 KPX Acircumflex y -92 KPX Acircumflex yacute -92 KPX Acircumflex ydieresis -92 KPX Adieresis C -40 KPX Adieresis Cacute -40 KPX Adieresis Ccaron -40 KPX Adieresis Ccedilla -40 KPX Adieresis G -40 KPX Adieresis Gbreve -40 KPX Adieresis Gcommaaccent -40 KPX Adieresis O -55 KPX Adieresis Oacute -55 KPX Adieresis Ocircumflex -55 KPX Adieresis Odieresis -55 KPX Adieresis Ograve -55 KPX Adieresis Ohungarumlaut -55 KPX Adieresis Omacron -55 KPX Adieresis Oslash -55 KPX Adieresis Otilde -55 KPX Adieresis Q -55 KPX Adieresis T -111 KPX Adieresis Tcaron -111 KPX Adieresis Tcommaaccent -111 KPX Adieresis U -55 KPX Adieresis Uacute -55 KPX Adieresis Ucircumflex -55 KPX Adieresis Udieresis -55 KPX Adieresis Ugrave -55 KPX Adieresis Uhungarumlaut -55 KPX Adieresis Umacron -55 KPX Adieresis Uogonek -55 KPX Adieresis Uring -55 KPX Adieresis V -135 KPX Adieresis W -90 KPX Adieresis Y -105 KPX Adieresis Yacute -105 KPX Adieresis Ydieresis -105 KPX Adieresis quoteright -111 KPX Adieresis v -74 KPX Adieresis w -92 KPX Adieresis y -92 KPX Adieresis yacute -92 KPX Adieresis ydieresis -92 KPX Agrave C -40 KPX Agrave Cacute -40 KPX Agrave Ccaron -40 KPX Agrave Ccedilla -40 KPX Agrave G -40 KPX Agrave Gbreve -40 KPX Agrave Gcommaaccent -40 KPX Agrave O -55 KPX Agrave Oacute -55 KPX Agrave Ocircumflex -55 KPX Agrave Odieresis -55 KPX Agrave Ograve -55 KPX Agrave Ohungarumlaut -55 KPX Agrave Omacron -55 KPX Agrave Oslash -55 KPX Agrave Otilde -55 KPX Agrave Q -55 KPX Agrave T -111 KPX Agrave Tcaron -111 KPX Agrave Tcommaaccent -111 KPX Agrave U -55 KPX Agrave Uacute -55 KPX Agrave Ucircumflex -55 KPX Agrave Udieresis -55 KPX Agrave Ugrave -55 KPX Agrave Uhungarumlaut -55 KPX Agrave Umacron -55 KPX Agrave Uogonek -55 KPX Agrave Uring -55 KPX Agrave V -135 KPX Agrave W -90 KPX Agrave Y -105 KPX Agrave Yacute -105 KPX Agrave Ydieresis -105 KPX Agrave quoteright -111 KPX Agrave v -74 KPX Agrave w -92 KPX Agrave y -92 KPX Agrave yacute -92 KPX Agrave ydieresis -92 KPX Amacron C -40 KPX Amacron Cacute -40 KPX Amacron Ccaron -40 KPX Amacron Ccedilla -40 KPX Amacron G -40 KPX Amacron Gbreve -40 KPX Amacron Gcommaaccent -40 KPX Amacron O -55 KPX Amacron Oacute -55 KPX Amacron Ocircumflex -55 KPX Amacron Odieresis -55 KPX Amacron Ograve -55 KPX Amacron Ohungarumlaut -55 KPX Amacron Omacron -55 KPX Amacron Oslash -55 KPX Amacron Otilde -55 KPX Amacron Q -55 KPX Amacron T -111 KPX Amacron Tcaron -111 KPX Amacron Tcommaaccent -111 KPX Amacron U -55 KPX Amacron Uacute -55 KPX Amacron Ucircumflex -55 KPX Amacron Udieresis -55 KPX Amacron Ugrave -55 KPX Amacron Uhungarumlaut -55 KPX Amacron Umacron -55 KPX Amacron Uogonek -55 KPX Amacron Uring -55 KPX Amacron V -135 KPX Amacron W -90 KPX Amacron Y -105 KPX Amacron Yacute -105 KPX Amacron Ydieresis -105 KPX Amacron quoteright -111 KPX Amacron v -74 KPX Amacron w -92 KPX Amacron y -92 KPX Amacron yacute -92 KPX Amacron ydieresis -92 KPX Aogonek C -40 KPX Aogonek Cacute -40 KPX Aogonek Ccaron -40 KPX Aogonek Ccedilla -40 KPX Aogonek G -40 KPX Aogonek Gbreve -40 KPX Aogonek Gcommaaccent -40 KPX Aogonek O -55 KPX Aogonek Oacute -55 KPX Aogonek Ocircumflex -55 KPX Aogonek Odieresis -55 KPX Aogonek Ograve -55 KPX Aogonek Ohungarumlaut -55 KPX Aogonek Omacron -55 KPX Aogonek Oslash -55 KPX Aogonek Otilde -55 KPX Aogonek Q -55 KPX Aogonek T -111 KPX Aogonek Tcaron -111 KPX Aogonek Tcommaaccent -111 KPX Aogonek U -55 KPX Aogonek Uacute -55 KPX Aogonek Ucircumflex -55 KPX Aogonek Udieresis -55 KPX Aogonek Ugrave -55 KPX Aogonek Uhungarumlaut -55 KPX Aogonek Umacron -55 KPX Aogonek Uogonek -55 KPX Aogonek Uring -55 KPX Aogonek V -135 KPX Aogonek W -90 KPX Aogonek Y -105 KPX Aogonek Yacute -105 KPX Aogonek Ydieresis -105 KPX Aogonek quoteright -111 KPX Aogonek v -74 KPX Aogonek w -52 KPX Aogonek y -52 KPX Aogonek yacute -52 KPX Aogonek ydieresis -52 KPX Aring C -40 KPX Aring Cacute -40 KPX Aring Ccaron -40 KPX Aring Ccedilla -40 KPX Aring G -40 KPX Aring Gbreve -40 KPX Aring Gcommaaccent -40 KPX Aring O -55 KPX Aring Oacute -55 KPX Aring Ocircumflex -55 KPX Aring Odieresis -55 KPX Aring Ograve -55 KPX Aring Ohungarumlaut -55 KPX Aring Omacron -55 KPX Aring Oslash -55 KPX Aring Otilde -55 KPX Aring Q -55 KPX Aring T -111 KPX Aring Tcaron -111 KPX Aring Tcommaaccent -111 KPX Aring U -55 KPX Aring Uacute -55 KPX Aring Ucircumflex -55 KPX Aring Udieresis -55 KPX Aring Ugrave -55 KPX Aring Uhungarumlaut -55 KPX Aring Umacron -55 KPX Aring Uogonek -55 KPX Aring Uring -55 KPX Aring V -135 KPX Aring W -90 KPX Aring Y -105 KPX Aring Yacute -105 KPX Aring Ydieresis -105 KPX Aring quoteright -111 KPX Aring v -74 KPX Aring w -92 KPX Aring y -92 KPX Aring yacute -92 KPX Aring ydieresis -92 KPX Atilde C -40 KPX Atilde Cacute -40 KPX Atilde Ccaron -40 KPX Atilde Ccedilla -40 KPX Atilde G -40 KPX Atilde Gbreve -40 KPX Atilde Gcommaaccent -40 KPX Atilde O -55 KPX Atilde Oacute -55 KPX Atilde Ocircumflex -55 KPX Atilde Odieresis -55 KPX Atilde Ograve -55 KPX Atilde Ohungarumlaut -55 KPX Atilde Omacron -55 KPX Atilde Oslash -55 KPX Atilde Otilde -55 KPX Atilde Q -55 KPX Atilde T -111 KPX Atilde Tcaron -111 KPX Atilde Tcommaaccent -111 KPX Atilde U -55 KPX Atilde Uacute -55 KPX Atilde Ucircumflex -55 KPX Atilde Udieresis -55 KPX Atilde Ugrave -55 KPX Atilde Uhungarumlaut -55 KPX Atilde Umacron -55 KPX Atilde Uogonek -55 KPX Atilde Uring -55 KPX Atilde V -135 KPX Atilde W -90 KPX Atilde Y -105 KPX Atilde Yacute -105 KPX Atilde Ydieresis -105 KPX Atilde quoteright -111 KPX Atilde v -74 KPX Atilde w -92 KPX Atilde y -92 KPX Atilde yacute -92 KPX Atilde ydieresis -92 KPX B A -35 KPX B Aacute -35 KPX B Abreve -35 KPX B Acircumflex -35 KPX B Adieresis -35 KPX B Agrave -35 KPX B Amacron -35 KPX B Aogonek -35 KPX B Aring -35 KPX B Atilde -35 KPX B U -10 KPX B Uacute -10 KPX B Ucircumflex -10 KPX B Udieresis -10 KPX B Ugrave -10 KPX B Uhungarumlaut -10 KPX B Umacron -10 KPX B Uogonek -10 KPX B Uring -10 KPX D A -40 KPX D Aacute -40 KPX D Abreve -40 KPX D Acircumflex -40 KPX D Adieresis -40 KPX D Agrave -40 KPX D Amacron -40 KPX D Aogonek -40 KPX D Aring -40 KPX D Atilde -40 KPX D V -40 KPX D W -30 KPX D Y -55 KPX D Yacute -55 KPX D Ydieresis -55 KPX Dcaron A -40 KPX Dcaron Aacute -40 KPX Dcaron Abreve -40 KPX Dcaron Acircumflex -40 KPX Dcaron Adieresis -40 KPX Dcaron Agrave -40 KPX Dcaron Amacron -40 KPX Dcaron Aogonek -40 KPX Dcaron Aring -40 KPX Dcaron Atilde -40 KPX Dcaron V -40 KPX Dcaron W -30 KPX Dcaron Y -55 KPX Dcaron Yacute -55 KPX Dcaron Ydieresis -55 KPX Dcroat A -40 KPX Dcroat Aacute -40 KPX Dcroat Abreve -40 KPX Dcroat Acircumflex -40 KPX Dcroat Adieresis -40 KPX Dcroat Agrave -40 KPX Dcroat Amacron -40 KPX Dcroat Aogonek -40 KPX Dcroat Aring -40 KPX Dcroat Atilde -40 KPX Dcroat V -40 KPX Dcroat W -30 KPX Dcroat Y -55 KPX Dcroat Yacute -55 KPX Dcroat Ydieresis -55 KPX F A -74 KPX F Aacute -74 KPX F Abreve -74 KPX F Acircumflex -74 KPX F Adieresis -74 KPX F Agrave -74 KPX F Amacron -74 KPX F Aogonek -74 KPX F Aring -74 KPX F Atilde -74 KPX F a -15 KPX F aacute -15 KPX F abreve -15 KPX F acircumflex -15 KPX F adieresis -15 KPX F agrave -15 KPX F amacron -15 KPX F aogonek -15 KPX F aring -15 KPX F atilde -15 KPX F comma -80 KPX F o -15 KPX F oacute -15 KPX F ocircumflex -15 KPX F odieresis -15 KPX F ograve -15 KPX F ohungarumlaut -15 KPX F omacron -15 KPX F oslash -15 KPX F otilde -15 KPX F period -80 KPX J A -60 KPX J Aacute -60 KPX J Abreve -60 KPX J Acircumflex -60 KPX J Adieresis -60 KPX J Agrave -60 KPX J Amacron -60 KPX J Aogonek -60 KPX J Aring -60 KPX J Atilde -60 KPX K O -30 KPX K Oacute -30 KPX K Ocircumflex -30 KPX K Odieresis -30 KPX K Ograve -30 KPX K Ohungarumlaut -30 KPX K Omacron -30 KPX K Oslash -30 KPX K Otilde -30 KPX K e -25 KPX K eacute -25 KPX K ecaron -25 KPX K ecircumflex -25 KPX K edieresis -25 KPX K edotaccent -25 KPX K egrave -25 KPX K emacron -25 KPX K eogonek -25 KPX K o -35 KPX K oacute -35 KPX K ocircumflex -35 KPX K odieresis -35 KPX K ograve -35 KPX K ohungarumlaut -35 KPX K omacron -35 KPX K oslash -35 KPX K otilde -35 KPX K u -15 KPX K uacute -15 KPX K ucircumflex -15 KPX K udieresis -15 KPX K ugrave -15 KPX K uhungarumlaut -15 KPX K umacron -15 KPX K uogonek -15 KPX K uring -15 KPX K y -25 KPX K yacute -25 KPX K ydieresis -25 KPX Kcommaaccent O -30 KPX Kcommaaccent Oacute -30 KPX Kcommaaccent Ocircumflex -30 KPX Kcommaaccent Odieresis -30 KPX Kcommaaccent Ograve -30 KPX Kcommaaccent Ohungarumlaut -30 KPX Kcommaaccent Omacron -30 KPX Kcommaaccent Oslash -30 KPX Kcommaaccent Otilde -30 KPX Kcommaaccent e -25 KPX Kcommaaccent eacute -25 KPX Kcommaaccent ecaron -25 KPX Kcommaaccent ecircumflex -25 KPX Kcommaaccent edieresis -25 KPX Kcommaaccent edotaccent -25 KPX Kcommaaccent egrave -25 KPX Kcommaaccent emacron -25 KPX Kcommaaccent eogonek -25 KPX Kcommaaccent o -35 KPX Kcommaaccent oacute -35 KPX Kcommaaccent ocircumflex -35 KPX Kcommaaccent odieresis -35 KPX Kcommaaccent ograve -35 KPX Kcommaaccent ohungarumlaut -35 KPX Kcommaaccent omacron -35 KPX Kcommaaccent oslash -35 KPX Kcommaaccent otilde -35 KPX Kcommaaccent u -15 KPX Kcommaaccent uacute -15 KPX Kcommaaccent ucircumflex -15 KPX Kcommaaccent udieresis -15 KPX Kcommaaccent ugrave -15 KPX Kcommaaccent uhungarumlaut -15 KPX Kcommaaccent umacron -15 KPX Kcommaaccent uogonek -15 KPX Kcommaaccent uring -15 KPX Kcommaaccent y -25 KPX Kcommaaccent yacute -25 KPX Kcommaaccent ydieresis -25 KPX L T -92 KPX L Tcaron -92 KPX L Tcommaaccent -92 KPX L V -100 KPX L W -74 KPX L Y -100 KPX L Yacute -100 KPX L Ydieresis -100 KPX L quoteright -92 KPX L y -55 KPX L yacute -55 KPX L ydieresis -55 KPX Lacute T -92 KPX Lacute Tcaron -92 KPX Lacute Tcommaaccent -92 KPX Lacute V -100 KPX Lacute W -74 KPX Lacute Y -100 KPX Lacute Yacute -100 KPX Lacute Ydieresis -100 KPX Lacute quoteright -92 KPX Lacute y -55 KPX Lacute yacute -55 KPX Lacute ydieresis -55 KPX Lcaron quoteright -92 KPX Lcaron y -55 KPX Lcaron yacute -55 KPX Lcaron ydieresis -55 KPX Lcommaaccent T -92 KPX Lcommaaccent Tcaron -92 KPX Lcommaaccent Tcommaaccent -92 KPX Lcommaaccent V -100 KPX Lcommaaccent W -74 KPX Lcommaaccent Y -100 KPX Lcommaaccent Yacute -100 KPX Lcommaaccent Ydieresis -100 KPX Lcommaaccent quoteright -92 KPX Lcommaaccent y -55 KPX Lcommaaccent yacute -55 KPX Lcommaaccent ydieresis -55 KPX Lslash T -92 KPX Lslash Tcaron -92 KPX Lslash Tcommaaccent -92 KPX Lslash V -100 KPX Lslash W -74 KPX Lslash Y -100 KPX Lslash Yacute -100 KPX Lslash Ydieresis -100 KPX Lslash quoteright -92 KPX Lslash y -55 KPX Lslash yacute -55 KPX Lslash ydieresis -55 KPX N A -35 KPX N Aacute -35 KPX N Abreve -35 KPX N Acircumflex -35 KPX N Adieresis -35 KPX N Agrave -35 KPX N Amacron -35 KPX N Aogonek -35 KPX N Aring -35 KPX N Atilde -35 KPX Nacute A -35 KPX Nacute Aacute -35 KPX Nacute Abreve -35 KPX Nacute Acircumflex -35 KPX Nacute Adieresis -35 KPX Nacute Agrave -35 KPX Nacute Amacron -35 KPX Nacute Aogonek -35 KPX Nacute Aring -35 KPX Nacute Atilde -35 KPX Ncaron A -35 KPX Ncaron Aacute -35 KPX Ncaron Abreve -35 KPX Ncaron Acircumflex -35 KPX Ncaron Adieresis -35 KPX Ncaron Agrave -35 KPX Ncaron Amacron -35 KPX Ncaron Aogonek -35 KPX Ncaron Aring -35 KPX Ncaron Atilde -35 KPX Ncommaaccent A -35 KPX Ncommaaccent Aacute -35 KPX Ncommaaccent Abreve -35 KPX Ncommaaccent Acircumflex -35 KPX Ncommaaccent Adieresis -35 KPX Ncommaaccent Agrave -35 KPX Ncommaaccent Amacron -35 KPX Ncommaaccent Aogonek -35 KPX Ncommaaccent Aring -35 KPX Ncommaaccent Atilde -35 KPX Ntilde A -35 KPX Ntilde Aacute -35 KPX Ntilde Abreve -35 KPX Ntilde Acircumflex -35 KPX Ntilde Adieresis -35 KPX Ntilde Agrave -35 KPX Ntilde Amacron -35 KPX Ntilde Aogonek -35 KPX Ntilde Aring -35 KPX Ntilde Atilde -35 KPX O A -35 KPX O Aacute -35 KPX O Abreve -35 KPX O Acircumflex -35 KPX O Adieresis -35 KPX O Agrave -35 KPX O Amacron -35 KPX O Aogonek -35 KPX O Aring -35 KPX O Atilde -35 KPX O T -40 KPX O Tcaron -40 KPX O Tcommaaccent -40 KPX O V -50 KPX O W -35 KPX O X -40 KPX O Y -50 KPX O Yacute -50 KPX O Ydieresis -50 KPX Oacute A -35 KPX Oacute Aacute -35 KPX Oacute Abreve -35 KPX Oacute Acircumflex -35 KPX Oacute Adieresis -35 KPX Oacute Agrave -35 KPX Oacute Amacron -35 KPX Oacute Aogonek -35 KPX Oacute Aring -35 KPX Oacute Atilde -35 KPX Oacute T -40 KPX Oacute Tcaron -40 KPX Oacute Tcommaaccent -40 KPX Oacute V -50 KPX Oacute W -35 KPX Oacute X -40 KPX Oacute Y -50 KPX Oacute Yacute -50 KPX Oacute Ydieresis -50 KPX Ocircumflex A -35 KPX Ocircumflex Aacute -35 KPX Ocircumflex Abreve -35 KPX Ocircumflex Acircumflex -35 KPX Ocircumflex Adieresis -35 KPX Ocircumflex Agrave -35 KPX Ocircumflex Amacron -35 KPX Ocircumflex Aogonek -35 KPX Ocircumflex Aring -35 KPX Ocircumflex Atilde -35 KPX Ocircumflex T -40 KPX Ocircumflex Tcaron -40 KPX Ocircumflex Tcommaaccent -40 KPX Ocircumflex V -50 KPX Ocircumflex W -35 KPX Ocircumflex X -40 KPX Ocircumflex Y -50 KPX Ocircumflex Yacute -50 KPX Ocircumflex Ydieresis -50 KPX Odieresis A -35 KPX Odieresis Aacute -35 KPX Odieresis Abreve -35 KPX Odieresis Acircumflex -35 KPX Odieresis Adieresis -35 KPX Odieresis Agrave -35 KPX Odieresis Amacron -35 KPX Odieresis Aogonek -35 KPX Odieresis Aring -35 KPX Odieresis Atilde -35 KPX Odieresis T -40 KPX Odieresis Tcaron -40 KPX Odieresis Tcommaaccent -40 KPX Odieresis V -50 KPX Odieresis W -35 KPX Odieresis X -40 KPX Odieresis Y -50 KPX Odieresis Yacute -50 KPX Odieresis Ydieresis -50 KPX Ograve A -35 KPX Ograve Aacute -35 KPX Ograve Abreve -35 KPX Ograve Acircumflex -35 KPX Ograve Adieresis -35 KPX Ograve Agrave -35 KPX Ograve Amacron -35 KPX Ograve Aogonek -35 KPX Ograve Aring -35 KPX Ograve Atilde -35 KPX Ograve T -40 KPX Ograve Tcaron -40 KPX Ograve Tcommaaccent -40 KPX Ograve V -50 KPX Ograve W -35 KPX Ograve X -40 KPX Ograve Y -50 KPX Ograve Yacute -50 KPX Ograve Ydieresis -50 KPX Ohungarumlaut A -35 KPX Ohungarumlaut Aacute -35 KPX Ohungarumlaut Abreve -35 KPX Ohungarumlaut Acircumflex -35 KPX Ohungarumlaut Adieresis -35 KPX Ohungarumlaut Agrave -35 KPX Ohungarumlaut Amacron -35 KPX Ohungarumlaut Aogonek -35 KPX Ohungarumlaut Aring -35 KPX Ohungarumlaut Atilde -35 KPX Ohungarumlaut T -40 KPX Ohungarumlaut Tcaron -40 KPX Ohungarumlaut Tcommaaccent -40 KPX Ohungarumlaut V -50 KPX Ohungarumlaut W -35 KPX Ohungarumlaut X -40 KPX Ohungarumlaut Y -50 KPX Ohungarumlaut Yacute -50 KPX Ohungarumlaut Ydieresis -50 KPX Omacron A -35 KPX Omacron Aacute -35 KPX Omacron Abreve -35 KPX Omacron Acircumflex -35 KPX Omacron Adieresis -35 KPX Omacron Agrave -35 KPX Omacron Amacron -35 KPX Omacron Aogonek -35 KPX Omacron Aring -35 KPX Omacron Atilde -35 KPX Omacron T -40 KPX Omacron Tcaron -40 KPX Omacron Tcommaaccent -40 KPX Omacron V -50 KPX Omacron W -35 KPX Omacron X -40 KPX Omacron Y -50 KPX Omacron Yacute -50 KPX Omacron Ydieresis -50 KPX Oslash A -35 KPX Oslash Aacute -35 KPX Oslash Abreve -35 KPX Oslash Acircumflex -35 KPX Oslash Adieresis -35 KPX Oslash Agrave -35 KPX Oslash Amacron -35 KPX Oslash Aogonek -35 KPX Oslash Aring -35 KPX Oslash Atilde -35 KPX Oslash T -40 KPX Oslash Tcaron -40 KPX Oslash Tcommaaccent -40 KPX Oslash V -50 KPX Oslash W -35 KPX Oslash X -40 KPX Oslash Y -50 KPX Oslash Yacute -50 KPX Oslash Ydieresis -50 KPX Otilde A -35 KPX Otilde Aacute -35 KPX Otilde Abreve -35 KPX Otilde Acircumflex -35 KPX Otilde Adieresis -35 KPX Otilde Agrave -35 KPX Otilde Amacron -35 KPX Otilde Aogonek -35 KPX Otilde Aring -35 KPX Otilde Atilde -35 KPX Otilde T -40 KPX Otilde Tcaron -40 KPX Otilde Tcommaaccent -40 KPX Otilde V -50 KPX Otilde W -35 KPX Otilde X -40 KPX Otilde Y -50 KPX Otilde Yacute -50 KPX Otilde Ydieresis -50 KPX P A -92 KPX P Aacute -92 KPX P Abreve -92 KPX P Acircumflex -92 KPX P Adieresis -92 KPX P Agrave -92 KPX P Amacron -92 KPX P Aogonek -92 KPX P Aring -92 KPX P Atilde -92 KPX P a -15 KPX P aacute -15 KPX P abreve -15 KPX P acircumflex -15 KPX P adieresis -15 KPX P agrave -15 KPX P amacron -15 KPX P aogonek -15 KPX P aring -15 KPX P atilde -15 KPX P comma -111 KPX P period -111 KPX Q U -10 KPX Q Uacute -10 KPX Q Ucircumflex -10 KPX Q Udieresis -10 KPX Q Ugrave -10 KPX Q Uhungarumlaut -10 KPX Q Umacron -10 KPX Q Uogonek -10 KPX Q Uring -10 KPX R O -40 KPX R Oacute -40 KPX R Ocircumflex -40 KPX R Odieresis -40 KPX R Ograve -40 KPX R Ohungarumlaut -40 KPX R Omacron -40 KPX R Oslash -40 KPX R Otilde -40 KPX R T -60 KPX R Tcaron -60 KPX R Tcommaaccent -60 KPX R U -40 KPX R Uacute -40 KPX R Ucircumflex -40 KPX R Udieresis -40 KPX R Ugrave -40 KPX R Uhungarumlaut -40 KPX R Umacron -40 KPX R Uogonek -40 KPX R Uring -40 KPX R V -80 KPX R W -55 KPX R Y -65 KPX R Yacute -65 KPX R Ydieresis -65 KPX Racute O -40 KPX Racute Oacute -40 KPX Racute Ocircumflex -40 KPX Racute Odieresis -40 KPX Racute Ograve -40 KPX Racute Ohungarumlaut -40 KPX Racute Omacron -40 KPX Racute Oslash -40 KPX Racute Otilde -40 KPX Racute T -60 KPX Racute Tcaron -60 KPX Racute Tcommaaccent -60 KPX Racute U -40 KPX Racute Uacute -40 KPX Racute Ucircumflex -40 KPX Racute Udieresis -40 KPX Racute Ugrave -40 KPX Racute Uhungarumlaut -40 KPX Racute Umacron -40 KPX Racute Uogonek -40 KPX Racute Uring -40 KPX Racute V -80 KPX Racute W -55 KPX Racute Y -65 KPX Racute Yacute -65 KPX Racute Ydieresis -65 KPX Rcaron O -40 KPX Rcaron Oacute -40 KPX Rcaron Ocircumflex -40 KPX Rcaron Odieresis -40 KPX Rcaron Ograve -40 KPX Rcaron Ohungarumlaut -40 KPX Rcaron Omacron -40 KPX Rcaron Oslash -40 KPX Rcaron Otilde -40 KPX Rcaron T -60 KPX Rcaron Tcaron -60 KPX Rcaron Tcommaaccent -60 KPX Rcaron U -40 KPX Rcaron Uacute -40 KPX Rcaron Ucircumflex -40 KPX Rcaron Udieresis -40 KPX Rcaron Ugrave -40 KPX Rcaron Uhungarumlaut -40 KPX Rcaron Umacron -40 KPX Rcaron Uogonek -40 KPX Rcaron Uring -40 KPX Rcaron V -80 KPX Rcaron W -55 KPX Rcaron Y -65 KPX Rcaron Yacute -65 KPX Rcaron Ydieresis -65 KPX Rcommaaccent O -40 KPX Rcommaaccent Oacute -40 KPX Rcommaaccent Ocircumflex -40 KPX Rcommaaccent Odieresis -40 KPX Rcommaaccent Ograve -40 KPX Rcommaaccent Ohungarumlaut -40 KPX Rcommaaccent Omacron -40 KPX Rcommaaccent Oslash -40 KPX Rcommaaccent Otilde -40 KPX Rcommaaccent T -60 KPX Rcommaaccent Tcaron -60 KPX Rcommaaccent Tcommaaccent -60 KPX Rcommaaccent U -40 KPX Rcommaaccent Uacute -40 KPX Rcommaaccent Ucircumflex -40 KPX Rcommaaccent Udieresis -40 KPX Rcommaaccent Ugrave -40 KPX Rcommaaccent Uhungarumlaut -40 KPX Rcommaaccent Umacron -40 KPX Rcommaaccent Uogonek -40 KPX Rcommaaccent Uring -40 KPX Rcommaaccent V -80 KPX Rcommaaccent W -55 KPX Rcommaaccent Y -65 KPX Rcommaaccent Yacute -65 KPX Rcommaaccent Ydieresis -65 KPX T A -93 KPX T Aacute -93 KPX T Abreve -93 KPX T Acircumflex -93 KPX T Adieresis -93 KPX T Agrave -93 KPX T Amacron -93 KPX T Aogonek -93 KPX T Aring -93 KPX T Atilde -93 KPX T O -18 KPX T Oacute -18 KPX T Ocircumflex -18 KPX T Odieresis -18 KPX T Ograve -18 KPX T Ohungarumlaut -18 KPX T Omacron -18 KPX T Oslash -18 KPX T Otilde -18 KPX T a -80 KPX T aacute -80 KPX T abreve -80 KPX T acircumflex -80 KPX T adieresis -40 KPX T agrave -40 KPX T amacron -40 KPX T aogonek -80 KPX T aring -80 KPX T atilde -40 KPX T colon -50 KPX T comma -74 KPX T e -70 KPX T eacute -70 KPX T ecaron -70 KPX T ecircumflex -70 KPX T edieresis -30 KPX T edotaccent -70 KPX T egrave -70 KPX T emacron -30 KPX T eogonek -70 KPX T hyphen -92 KPX T i -35 KPX T iacute -35 KPX T iogonek -35 KPX T o -80 KPX T oacute -80 KPX T ocircumflex -80 KPX T odieresis -80 KPX T ograve -80 KPX T ohungarumlaut -80 KPX T omacron -80 KPX T oslash -80 KPX T otilde -80 KPX T period -74 KPX T r -35 KPX T racute -35 KPX T rcaron -35 KPX T rcommaaccent -35 KPX T semicolon -55 KPX T u -45 KPX T uacute -45 KPX T ucircumflex -45 KPX T udieresis -45 KPX T ugrave -45 KPX T uhungarumlaut -45 KPX T umacron -45 KPX T uogonek -45 KPX T uring -45 KPX T w -80 KPX T y -80 KPX T yacute -80 KPX T ydieresis -80 KPX Tcaron A -93 KPX Tcaron Aacute -93 KPX Tcaron Abreve -93 KPX Tcaron Acircumflex -93 KPX Tcaron Adieresis -93 KPX Tcaron Agrave -93 KPX Tcaron Amacron -93 KPX Tcaron Aogonek -93 KPX Tcaron Aring -93 KPX Tcaron Atilde -93 KPX Tcaron O -18 KPX Tcaron Oacute -18 KPX Tcaron Ocircumflex -18 KPX Tcaron Odieresis -18 KPX Tcaron Ograve -18 KPX Tcaron Ohungarumlaut -18 KPX Tcaron Omacron -18 KPX Tcaron Oslash -18 KPX Tcaron Otilde -18 KPX Tcaron a -80 KPX Tcaron aacute -80 KPX Tcaron abreve -80 KPX Tcaron acircumflex -80 KPX Tcaron adieresis -40 KPX Tcaron agrave -40 KPX Tcaron amacron -40 KPX Tcaron aogonek -80 KPX Tcaron aring -80 KPX Tcaron atilde -40 KPX Tcaron colon -50 KPX Tcaron comma -74 KPX Tcaron e -70 KPX Tcaron eacute -70 KPX Tcaron ecaron -70 KPX Tcaron ecircumflex -30 KPX Tcaron edieresis -30 KPX Tcaron edotaccent -70 KPX Tcaron egrave -70 KPX Tcaron emacron -30 KPX Tcaron eogonek -70 KPX Tcaron hyphen -92 KPX Tcaron i -35 KPX Tcaron iacute -35 KPX Tcaron iogonek -35 KPX Tcaron o -80 KPX Tcaron oacute -80 KPX Tcaron ocircumflex -80 KPX Tcaron odieresis -80 KPX Tcaron ograve -80 KPX Tcaron ohungarumlaut -80 KPX Tcaron omacron -80 KPX Tcaron oslash -80 KPX Tcaron otilde -80 KPX Tcaron period -74 KPX Tcaron r -35 KPX Tcaron racute -35 KPX Tcaron rcaron -35 KPX Tcaron rcommaaccent -35 KPX Tcaron semicolon -55 KPX Tcaron u -45 KPX Tcaron uacute -45 KPX Tcaron ucircumflex -45 KPX Tcaron udieresis -45 KPX Tcaron ugrave -45 KPX Tcaron uhungarumlaut -45 KPX Tcaron umacron -45 KPX Tcaron uogonek -45 KPX Tcaron uring -45 KPX Tcaron w -80 KPX Tcaron y -80 KPX Tcaron yacute -80 KPX Tcaron ydieresis -80 KPX Tcommaaccent A -93 KPX Tcommaaccent Aacute -93 KPX Tcommaaccent Abreve -93 KPX Tcommaaccent Acircumflex -93 KPX Tcommaaccent Adieresis -93 KPX Tcommaaccent Agrave -93 KPX Tcommaaccent Amacron -93 KPX Tcommaaccent Aogonek -93 KPX Tcommaaccent Aring -93 KPX Tcommaaccent Atilde -93 KPX Tcommaaccent O -18 KPX Tcommaaccent Oacute -18 KPX Tcommaaccent Ocircumflex -18 KPX Tcommaaccent Odieresis -18 KPX Tcommaaccent Ograve -18 KPX Tcommaaccent Ohungarumlaut -18 KPX Tcommaaccent Omacron -18 KPX Tcommaaccent Oslash -18 KPX Tcommaaccent Otilde -18 KPX Tcommaaccent a -80 KPX Tcommaaccent aacute -80 KPX Tcommaaccent abreve -80 KPX Tcommaaccent acircumflex -80 KPX Tcommaaccent adieresis -40 KPX Tcommaaccent agrave -40 KPX Tcommaaccent amacron -40 KPX Tcommaaccent aogonek -80 KPX Tcommaaccent aring -80 KPX Tcommaaccent atilde -40 KPX Tcommaaccent colon -50 KPX Tcommaaccent comma -74 KPX Tcommaaccent e -70 KPX Tcommaaccent eacute -70 KPX Tcommaaccent ecaron -70 KPX Tcommaaccent ecircumflex -30 KPX Tcommaaccent edieresis -30 KPX Tcommaaccent edotaccent -70 KPX Tcommaaccent egrave -30 KPX Tcommaaccent emacron -70 KPX Tcommaaccent eogonek -70 KPX Tcommaaccent hyphen -92 KPX Tcommaaccent i -35 KPX Tcommaaccent iacute -35 KPX Tcommaaccent iogonek -35 KPX Tcommaaccent o -80 KPX Tcommaaccent oacute -80 KPX Tcommaaccent ocircumflex -80 KPX Tcommaaccent odieresis -80 KPX Tcommaaccent ograve -80 KPX Tcommaaccent ohungarumlaut -80 KPX Tcommaaccent omacron -80 KPX Tcommaaccent oslash -80 KPX Tcommaaccent otilde -80 KPX Tcommaaccent period -74 KPX Tcommaaccent r -35 KPX Tcommaaccent racute -35 KPX Tcommaaccent rcaron -35 KPX Tcommaaccent rcommaaccent -35 KPX Tcommaaccent semicolon -55 KPX Tcommaaccent u -45 KPX Tcommaaccent uacute -45 KPX Tcommaaccent ucircumflex -45 KPX Tcommaaccent udieresis -45 KPX Tcommaaccent ugrave -45 KPX Tcommaaccent uhungarumlaut -45 KPX Tcommaaccent umacron -45 KPX Tcommaaccent uogonek -45 KPX Tcommaaccent uring -45 KPX Tcommaaccent w -80 KPX Tcommaaccent y -80 KPX Tcommaaccent yacute -80 KPX Tcommaaccent ydieresis -80 KPX U A -40 KPX U Aacute -40 KPX U Abreve -40 KPX U Acircumflex -40 KPX U Adieresis -40 KPX U Agrave -40 KPX U Amacron -40 KPX U Aogonek -40 KPX U Aring -40 KPX U Atilde -40 KPX Uacute A -40 KPX Uacute Aacute -40 KPX Uacute Abreve -40 KPX Uacute Acircumflex -40 KPX Uacute Adieresis -40 KPX Uacute Agrave -40 KPX Uacute Amacron -40 KPX Uacute Aogonek -40 KPX Uacute Aring -40 KPX Uacute Atilde -40 KPX Ucircumflex A -40 KPX Ucircumflex Aacute -40 KPX Ucircumflex Abreve -40 KPX Ucircumflex Acircumflex -40 KPX Ucircumflex Adieresis -40 KPX Ucircumflex Agrave -40 KPX Ucircumflex Amacron -40 KPX Ucircumflex Aogonek -40 KPX Ucircumflex Aring -40 KPX Ucircumflex Atilde -40 KPX Udieresis A -40 KPX Udieresis Aacute -40 KPX Udieresis Abreve -40 KPX Udieresis Acircumflex -40 KPX Udieresis Adieresis -40 KPX Udieresis Agrave -40 KPX Udieresis Amacron -40 KPX Udieresis Aogonek -40 KPX Udieresis Aring -40 KPX Udieresis Atilde -40 KPX Ugrave A -40 KPX Ugrave Aacute -40 KPX Ugrave Abreve -40 KPX Ugrave Acircumflex -40 KPX Ugrave Adieresis -40 KPX Ugrave Agrave -40 KPX Ugrave Amacron -40 KPX Ugrave Aogonek -40 KPX Ugrave Aring -40 KPX Ugrave Atilde -40 KPX Uhungarumlaut A -40 KPX Uhungarumlaut Aacute -40 KPX Uhungarumlaut Abreve -40 KPX Uhungarumlaut Acircumflex -40 KPX Uhungarumlaut Adieresis -40 KPX Uhungarumlaut Agrave -40 KPX Uhungarumlaut Amacron -40 KPX Uhungarumlaut Aogonek -40 KPX Uhungarumlaut Aring -40 KPX Uhungarumlaut Atilde -40 KPX Umacron A -40 KPX Umacron Aacute -40 KPX Umacron Abreve -40 KPX Umacron Acircumflex -40 KPX Umacron Adieresis -40 KPX Umacron Agrave -40 KPX Umacron Amacron -40 KPX Umacron Aogonek -40 KPX Umacron Aring -40 KPX Umacron Atilde -40 KPX Uogonek A -40 KPX Uogonek Aacute -40 KPX Uogonek Abreve -40 KPX Uogonek Acircumflex -40 KPX Uogonek Adieresis -40 KPX Uogonek Agrave -40 KPX Uogonek Amacron -40 KPX Uogonek Aogonek -40 KPX Uogonek Aring -40 KPX Uogonek Atilde -40 KPX Uring A -40 KPX Uring Aacute -40 KPX Uring Abreve -40 KPX Uring Acircumflex -40 KPX Uring Adieresis -40 KPX Uring Agrave -40 KPX Uring Amacron -40 KPX Uring Aogonek -40 KPX Uring Aring -40 KPX Uring Atilde -40 KPX V A -135 KPX V Aacute -135 KPX V Abreve -135 KPX V Acircumflex -135 KPX V Adieresis -135 KPX V Agrave -135 KPX V Amacron -135 KPX V Aogonek -135 KPX V Aring -135 KPX V Atilde -135 KPX V G -15 KPX V Gbreve -15 KPX V Gcommaaccent -15 KPX V O -40 KPX V Oacute -40 KPX V Ocircumflex -40 KPX V Odieresis -40 KPX V Ograve -40 KPX V Ohungarumlaut -40 KPX V Omacron -40 KPX V Oslash -40 KPX V Otilde -40 KPX V a -111 KPX V aacute -111 KPX V abreve -111 KPX V acircumflex -71 KPX V adieresis -71 KPX V agrave -71 KPX V amacron -71 KPX V aogonek -111 KPX V aring -111 KPX V atilde -71 KPX V colon -74 KPX V comma -129 KPX V e -111 KPX V eacute -111 KPX V ecaron -71 KPX V ecircumflex -71 KPX V edieresis -71 KPX V edotaccent -111 KPX V egrave -71 KPX V emacron -71 KPX V eogonek -111 KPX V hyphen -100 KPX V i -60 KPX V iacute -60 KPX V icircumflex -20 KPX V idieresis -20 KPX V igrave -20 KPX V imacron -20 KPX V iogonek -60 KPX V o -129 KPX V oacute -129 KPX V ocircumflex -129 KPX V odieresis -89 KPX V ograve -89 KPX V ohungarumlaut -129 KPX V omacron -89 KPX V oslash -129 KPX V otilde -89 KPX V period -129 KPX V semicolon -74 KPX V u -75 KPX V uacute -75 KPX V ucircumflex -75 KPX V udieresis -75 KPX V ugrave -75 KPX V uhungarumlaut -75 KPX V umacron -75 KPX V uogonek -75 KPX V uring -75 KPX W A -120 KPX W Aacute -120 KPX W Abreve -120 KPX W Acircumflex -120 KPX W Adieresis -120 KPX W Agrave -120 KPX W Amacron -120 KPX W Aogonek -120 KPX W Aring -120 KPX W Atilde -120 KPX W O -10 KPX W Oacute -10 KPX W Ocircumflex -10 KPX W Odieresis -10 KPX W Ograve -10 KPX W Ohungarumlaut -10 KPX W Omacron -10 KPX W Oslash -10 KPX W Otilde -10 KPX W a -80 KPX W aacute -80 KPX W abreve -80 KPX W acircumflex -80 KPX W adieresis -80 KPX W agrave -80 KPX W amacron -80 KPX W aogonek -80 KPX W aring -80 KPX W atilde -80 KPX W colon -37 KPX W comma -92 KPX W e -80 KPX W eacute -80 KPX W ecaron -80 KPX W ecircumflex -80 KPX W edieresis -40 KPX W edotaccent -80 KPX W egrave -40 KPX W emacron -40 KPX W eogonek -80 KPX W hyphen -65 KPX W i -40 KPX W iacute -40 KPX W iogonek -40 KPX W o -80 KPX W oacute -80 KPX W ocircumflex -80 KPX W odieresis -80 KPX W ograve -80 KPX W ohungarumlaut -80 KPX W omacron -80 KPX W oslash -80 KPX W otilde -80 KPX W period -92 KPX W semicolon -37 KPX W u -50 KPX W uacute -50 KPX W ucircumflex -50 KPX W udieresis -50 KPX W ugrave -50 KPX W uhungarumlaut -50 KPX W umacron -50 KPX W uogonek -50 KPX W uring -50 KPX W y -73 KPX W yacute -73 KPX W ydieresis -73 KPX Y A -120 KPX Y Aacute -120 KPX Y Abreve -120 KPX Y Acircumflex -120 KPX Y Adieresis -120 KPX Y Agrave -120 KPX Y Amacron -120 KPX Y Aogonek -120 KPX Y Aring -120 KPX Y Atilde -120 KPX Y O -30 KPX Y Oacute -30 KPX Y Ocircumflex -30 KPX Y Odieresis -30 KPX Y Ograve -30 KPX Y Ohungarumlaut -30 KPX Y Omacron -30 KPX Y Oslash -30 KPX Y Otilde -30 KPX Y a -100 KPX Y aacute -100 KPX Y abreve -100 KPX Y acircumflex -100 KPX Y adieresis -60 KPX Y agrave -60 KPX Y amacron -60 KPX Y aogonek -100 KPX Y aring -100 KPX Y atilde -60 KPX Y colon -92 KPX Y comma -129 KPX Y e -100 KPX Y eacute -100 KPX Y ecaron -100 KPX Y ecircumflex -100 KPX Y edieresis -60 KPX Y edotaccent -100 KPX Y egrave -60 KPX Y emacron -60 KPX Y eogonek -100 KPX Y hyphen -111 KPX Y i -55 KPX Y iacute -55 KPX Y iogonek -55 KPX Y o -110 KPX Y oacute -110 KPX Y ocircumflex -110 KPX Y odieresis -70 KPX Y ograve -70 KPX Y ohungarumlaut -110 KPX Y omacron -70 KPX Y oslash -110 KPX Y otilde -70 KPX Y period -129 KPX Y semicolon -92 KPX Y u -111 KPX Y uacute -111 KPX Y ucircumflex -111 KPX Y udieresis -71 KPX Y ugrave -71 KPX Y uhungarumlaut -111 KPX Y umacron -71 KPX Y uogonek -111 KPX Y uring -111 KPX Yacute A -120 KPX Yacute Aacute -120 KPX Yacute Abreve -120 KPX Yacute Acircumflex -120 KPX Yacute Adieresis -120 KPX Yacute Agrave -120 KPX Yacute Amacron -120 KPX Yacute Aogonek -120 KPX Yacute Aring -120 KPX Yacute Atilde -120 KPX Yacute O -30 KPX Yacute Oacute -30 KPX Yacute Ocircumflex -30 KPX Yacute Odieresis -30 KPX Yacute Ograve -30 KPX Yacute Ohungarumlaut -30 KPX Yacute Omacron -30 KPX Yacute Oslash -30 KPX Yacute Otilde -30 KPX Yacute a -100 KPX Yacute aacute -100 KPX Yacute abreve -100 KPX Yacute acircumflex -100 KPX Yacute adieresis -60 KPX Yacute agrave -60 KPX Yacute amacron -60 KPX Yacute aogonek -100 KPX Yacute aring -100 KPX Yacute atilde -60 KPX Yacute colon -92 KPX Yacute comma -129 KPX Yacute e -100 KPX Yacute eacute -100 KPX Yacute ecaron -100 KPX Yacute ecircumflex -100 KPX Yacute edieresis -60 KPX Yacute edotaccent -100 KPX Yacute egrave -60 KPX Yacute emacron -60 KPX Yacute eogonek -100 KPX Yacute hyphen -111 KPX Yacute i -55 KPX Yacute iacute -55 KPX Yacute iogonek -55 KPX Yacute o -110 KPX Yacute oacute -110 KPX Yacute ocircumflex -110 KPX Yacute odieresis -70 KPX Yacute ograve -70 KPX Yacute ohungarumlaut -110 KPX Yacute omacron -70 KPX Yacute oslash -110 KPX Yacute otilde -70 KPX Yacute period -129 KPX Yacute semicolon -92 KPX Yacute u -111 KPX Yacute uacute -111 KPX Yacute ucircumflex -111 KPX Yacute udieresis -71 KPX Yacute ugrave -71 KPX Yacute uhungarumlaut -111 KPX Yacute umacron -71 KPX Yacute uogonek -111 KPX Yacute uring -111 KPX Ydieresis A -120 KPX Ydieresis Aacute -120 KPX Ydieresis Abreve -120 KPX Ydieresis Acircumflex -120 KPX Ydieresis Adieresis -120 KPX Ydieresis Agrave -120 KPX Ydieresis Amacron -120 KPX Ydieresis Aogonek -120 KPX Ydieresis Aring -120 KPX Ydieresis Atilde -120 KPX Ydieresis O -30 KPX Ydieresis Oacute -30 KPX Ydieresis Ocircumflex -30 KPX Ydieresis Odieresis -30 KPX Ydieresis Ograve -30 KPX Ydieresis Ohungarumlaut -30 KPX Ydieresis Omacron -30 KPX Ydieresis Oslash -30 KPX Ydieresis Otilde -30 KPX Ydieresis a -100 KPX Ydieresis aacute -100 KPX Ydieresis abreve -100 KPX Ydieresis acircumflex -100 KPX Ydieresis adieresis -60 KPX Ydieresis agrave -60 KPX Ydieresis amacron -60 KPX Ydieresis aogonek -100 KPX Ydieresis aring -100 KPX Ydieresis atilde -100 KPX Ydieresis colon -92 KPX Ydieresis comma -129 KPX Ydieresis e -100 KPX Ydieresis eacute -100 KPX Ydieresis ecaron -100 KPX Ydieresis ecircumflex -100 KPX Ydieresis edieresis -60 KPX Ydieresis edotaccent -100 KPX Ydieresis egrave -60 KPX Ydieresis emacron -60 KPX Ydieresis eogonek -100 KPX Ydieresis hyphen -111 KPX Ydieresis i -55 KPX Ydieresis iacute -55 KPX Ydieresis iogonek -55 KPX Ydieresis o -110 KPX Ydieresis oacute -110 KPX Ydieresis ocircumflex -110 KPX Ydieresis odieresis -70 KPX Ydieresis ograve -70 KPX Ydieresis ohungarumlaut -110 KPX Ydieresis omacron -70 KPX Ydieresis oslash -110 KPX Ydieresis otilde -70 KPX Ydieresis period -129 KPX Ydieresis semicolon -92 KPX Ydieresis u -111 KPX Ydieresis uacute -111 KPX Ydieresis ucircumflex -111 KPX Ydieresis udieresis -71 KPX Ydieresis ugrave -71 KPX Ydieresis uhungarumlaut -111 KPX Ydieresis umacron -71 KPX Ydieresis uogonek -111 KPX Ydieresis uring -111 KPX a v -20 KPX a w -15 KPX aacute v -20 KPX aacute w -15 KPX abreve v -20 KPX abreve w -15 KPX acircumflex v -20 KPX acircumflex w -15 KPX adieresis v -20 KPX adieresis w -15 KPX agrave v -20 KPX agrave w -15 KPX amacron v -20 KPX amacron w -15 KPX aogonek v -20 KPX aogonek w -15 KPX aring v -20 KPX aring w -15 KPX atilde v -20 KPX atilde w -15 KPX b period -40 KPX b u -20 KPX b uacute -20 KPX b ucircumflex -20 KPX b udieresis -20 KPX b ugrave -20 KPX b uhungarumlaut -20 KPX b umacron -20 KPX b uogonek -20 KPX b uring -20 KPX b v -15 KPX c y -15 KPX c yacute -15 KPX c ydieresis -15 KPX cacute y -15 KPX cacute yacute -15 KPX cacute ydieresis -15 KPX ccaron y -15 KPX ccaron yacute -15 KPX ccaron ydieresis -15 KPX ccedilla y -15 KPX ccedilla yacute -15 KPX ccedilla ydieresis -15 KPX comma quotedblright -70 KPX comma quoteright -70 KPX e g -15 KPX e gbreve -15 KPX e gcommaaccent -15 KPX e v -25 KPX e w -25 KPX e x -15 KPX e y -15 KPX e yacute -15 KPX e ydieresis -15 KPX eacute g -15 KPX eacute gbreve -15 KPX eacute gcommaaccent -15 KPX eacute v -25 KPX eacute w -25 KPX eacute x -15 KPX eacute y -15 KPX eacute yacute -15 KPX eacute ydieresis -15 KPX ecaron g -15 KPX ecaron gbreve -15 KPX ecaron gcommaaccent -15 KPX ecaron v -25 KPX ecaron w -25 KPX ecaron x -15 KPX ecaron y -15 KPX ecaron yacute -15 KPX ecaron ydieresis -15 KPX ecircumflex g -15 KPX ecircumflex gbreve -15 KPX ecircumflex gcommaaccent -15 KPX ecircumflex v -25 KPX ecircumflex w -25 KPX ecircumflex x -15 KPX ecircumflex y -15 KPX ecircumflex yacute -15 KPX ecircumflex ydieresis -15 KPX edieresis g -15 KPX edieresis gbreve -15 KPX edieresis gcommaaccent -15 KPX edieresis v -25 KPX edieresis w -25 KPX edieresis x -15 KPX edieresis y -15 KPX edieresis yacute -15 KPX edieresis ydieresis -15 KPX edotaccent g -15 KPX edotaccent gbreve -15 KPX edotaccent gcommaaccent -15 KPX edotaccent v -25 KPX edotaccent w -25 KPX edotaccent x -15 KPX edotaccent y -15 KPX edotaccent yacute -15 KPX edotaccent ydieresis -15 KPX egrave g -15 KPX egrave gbreve -15 KPX egrave gcommaaccent -15 KPX egrave v -25 KPX egrave w -25 KPX egrave x -15 KPX egrave y -15 KPX egrave yacute -15 KPX egrave ydieresis -15 KPX emacron g -15 KPX emacron gbreve -15 KPX emacron gcommaaccent -15 KPX emacron v -25 KPX emacron w -25 KPX emacron x -15 KPX emacron y -15 KPX emacron yacute -15 KPX emacron ydieresis -15 KPX eogonek g -15 KPX eogonek gbreve -15 KPX eogonek gcommaaccent -15 KPX eogonek v -25 KPX eogonek w -25 KPX eogonek x -15 KPX eogonek y -15 KPX eogonek yacute -15 KPX eogonek ydieresis -15 KPX f a -10 KPX f aacute -10 KPX f abreve -10 KPX f acircumflex -10 KPX f adieresis -10 KPX f agrave -10 KPX f amacron -10 KPX f aogonek -10 KPX f aring -10 KPX f atilde -10 KPX f dotlessi -50 KPX f f -25 KPX f i -20 KPX f iacute -20 KPX f quoteright 55 KPX g a -5 KPX g aacute -5 KPX g abreve -5 KPX g acircumflex -5 KPX g adieresis -5 KPX g agrave -5 KPX g amacron -5 KPX g aogonek -5 KPX g aring -5 KPX g atilde -5 KPX gbreve a -5 KPX gbreve aacute -5 KPX gbreve abreve -5 KPX gbreve acircumflex -5 KPX gbreve adieresis -5 KPX gbreve agrave -5 KPX gbreve amacron -5 KPX gbreve aogonek -5 KPX gbreve aring -5 KPX gbreve atilde -5 KPX gcommaaccent a -5 KPX gcommaaccent aacute -5 KPX gcommaaccent abreve -5 KPX gcommaaccent acircumflex -5 KPX gcommaaccent adieresis -5 KPX gcommaaccent agrave -5 KPX gcommaaccent amacron -5 KPX gcommaaccent aogonek -5 KPX gcommaaccent aring -5 KPX gcommaaccent atilde -5 KPX h y -5 KPX h yacute -5 KPX h ydieresis -5 KPX i v -25 KPX iacute v -25 KPX icircumflex v -25 KPX idieresis v -25 KPX igrave v -25 KPX imacron v -25 KPX iogonek v -25 KPX k e -10 KPX k eacute -10 KPX k ecaron -10 KPX k ecircumflex -10 KPX k edieresis -10 KPX k edotaccent -10 KPX k egrave -10 KPX k emacron -10 KPX k eogonek -10 KPX k o -10 KPX k oacute -10 KPX k ocircumflex -10 KPX k odieresis -10 KPX k ograve -10 KPX k ohungarumlaut -10 KPX k omacron -10 KPX k oslash -10 KPX k otilde -10 KPX k y -15 KPX k yacute -15 KPX k ydieresis -15 KPX kcommaaccent e -10 KPX kcommaaccent eacute -10 KPX kcommaaccent ecaron -10 KPX kcommaaccent ecircumflex -10 KPX kcommaaccent edieresis -10 KPX kcommaaccent edotaccent -10 KPX kcommaaccent egrave -10 KPX kcommaaccent emacron -10 KPX kcommaaccent eogonek -10 KPX kcommaaccent o -10 KPX kcommaaccent oacute -10 KPX kcommaaccent ocircumflex -10 KPX kcommaaccent odieresis -10 KPX kcommaaccent ograve -10 KPX kcommaaccent ohungarumlaut -10 KPX kcommaaccent omacron -10 KPX kcommaaccent oslash -10 KPX kcommaaccent otilde -10 KPX kcommaaccent y -15 KPX kcommaaccent yacute -15 KPX kcommaaccent ydieresis -15 KPX l w -10 KPX lacute w -10 KPX lcommaaccent w -10 KPX lslash w -10 KPX n v -40 KPX n y -15 KPX n yacute -15 KPX n ydieresis -15 KPX nacute v -40 KPX nacute y -15 KPX nacute yacute -15 KPX nacute ydieresis -15 KPX ncaron v -40 KPX ncaron y -15 KPX ncaron yacute -15 KPX ncaron ydieresis -15 KPX ncommaaccent v -40 KPX ncommaaccent y -15 KPX ncommaaccent yacute -15 KPX ncommaaccent ydieresis -15 KPX ntilde v -40 KPX ntilde y -15 KPX ntilde yacute -15 KPX ntilde ydieresis -15 KPX o v -15 KPX o w -25 KPX o y -10 KPX o yacute -10 KPX o ydieresis -10 KPX oacute v -15 KPX oacute w -25 KPX oacute y -10 KPX oacute yacute -10 KPX oacute ydieresis -10 KPX ocircumflex v -15 KPX ocircumflex w -25 KPX ocircumflex y -10 KPX ocircumflex yacute -10 KPX ocircumflex ydieresis -10 KPX odieresis v -15 KPX odieresis w -25 KPX odieresis y -10 KPX odieresis yacute -10 KPX odieresis ydieresis -10 KPX ograve v -15 KPX ograve w -25 KPX ograve y -10 KPX ograve yacute -10 KPX ograve ydieresis -10 KPX ohungarumlaut v -15 KPX ohungarumlaut w -25 KPX ohungarumlaut y -10 KPX ohungarumlaut yacute -10 KPX ohungarumlaut ydieresis -10 KPX omacron v -15 KPX omacron w -25 KPX omacron y -10 KPX omacron yacute -10 KPX omacron ydieresis -10 KPX oslash v -15 KPX oslash w -25 KPX oslash y -10 KPX oslash yacute -10 KPX oslash ydieresis -10 KPX otilde v -15 KPX otilde w -25 KPX otilde y -10 KPX otilde yacute -10 KPX otilde ydieresis -10 KPX p y -10 KPX p yacute -10 KPX p ydieresis -10 KPX period quotedblright -70 KPX period quoteright -70 KPX quotedblleft A -80 KPX quotedblleft Aacute -80 KPX quotedblleft Abreve -80 KPX quotedblleft Acircumflex -80 KPX quotedblleft Adieresis -80 KPX quotedblleft Agrave -80 KPX quotedblleft Amacron -80 KPX quotedblleft Aogonek -80 KPX quotedblleft Aring -80 KPX quotedblleft Atilde -80 KPX quoteleft A -80 KPX quoteleft Aacute -80 KPX quoteleft Abreve -80 KPX quoteleft Acircumflex -80 KPX quoteleft Adieresis -80 KPX quoteleft Agrave -80 KPX quoteleft Amacron -80 KPX quoteleft Aogonek -80 KPX quoteleft Aring -80 KPX quoteleft Atilde -80 KPX quoteleft quoteleft -74 KPX quoteright d -50 KPX quoteright dcroat -50 KPX quoteright l -10 KPX quoteright lacute -10 KPX quoteright lcommaaccent -10 KPX quoteright lslash -10 KPX quoteright quoteright -74 KPX quoteright r -50 KPX quoteright racute -50 KPX quoteright rcaron -50 KPX quoteright rcommaaccent -50 KPX quoteright s -55 KPX quoteright sacute -55 KPX quoteright scaron -55 KPX quoteright scedilla -55 KPX quoteright scommaaccent -55 KPX quoteright space -74 KPX quoteright t -18 KPX quoteright tcommaaccent -18 KPX quoteright v -50 KPX r comma -40 KPX r g -18 KPX r gbreve -18 KPX r gcommaaccent -18 KPX r hyphen -20 KPX r period -55 KPX racute comma -40 KPX racute g -18 KPX racute gbreve -18 KPX racute gcommaaccent -18 KPX racute hyphen -20 KPX racute period -55 KPX rcaron comma -40 KPX rcaron g -18 KPX rcaron gbreve -18 KPX rcaron gcommaaccent -18 KPX rcaron hyphen -20 KPX rcaron period -55 KPX rcommaaccent comma -40 KPX rcommaaccent g -18 KPX rcommaaccent gbreve -18 KPX rcommaaccent gcommaaccent -18 KPX rcommaaccent hyphen -20 KPX rcommaaccent period -55 KPX space A -55 KPX space Aacute -55 KPX space Abreve -55 KPX space Acircumflex -55 KPX space Adieresis -55 KPX space Agrave -55 KPX space Amacron -55 KPX space Aogonek -55 KPX space Aring -55 KPX space Atilde -55 KPX space T -18 KPX space Tcaron -18 KPX space Tcommaaccent -18 KPX space V -50 KPX space W -30 KPX space Y -90 KPX space Yacute -90 KPX space Ydieresis -90 KPX v a -25 KPX v aacute -25 KPX v abreve -25 KPX v acircumflex -25 KPX v adieresis -25 KPX v agrave -25 KPX v amacron -25 KPX v aogonek -25 KPX v aring -25 KPX v atilde -25 KPX v comma -65 KPX v e -15 KPX v eacute -15 KPX v ecaron -15 KPX v ecircumflex -15 KPX v edieresis -15 KPX v edotaccent -15 KPX v egrave -15 KPX v emacron -15 KPX v eogonek -15 KPX v o -20 KPX v oacute -20 KPX v ocircumflex -20 KPX v odieresis -20 KPX v ograve -20 KPX v ohungarumlaut -20 KPX v omacron -20 KPX v oslash -20 KPX v otilde -20 KPX v period -65 KPX w a -10 KPX w aacute -10 KPX w abreve -10 KPX w acircumflex -10 KPX w adieresis -10 KPX w agrave -10 KPX w amacron -10 KPX w aogonek -10 KPX w aring -10 KPX w atilde -10 KPX w comma -65 KPX w o -10 KPX w oacute -10 KPX w ocircumflex -10 KPX w odieresis -10 KPX w ograve -10 KPX w ohungarumlaut -10 KPX w omacron -10 KPX w oslash -10 KPX w otilde -10 KPX w period -65 KPX x e -15 KPX x eacute -15 KPX x ecaron -15 KPX x ecircumflex -15 KPX x edieresis -15 KPX x edotaccent -15 KPX x egrave -15 KPX x emacron -15 KPX x eogonek -15 KPX y comma -65 KPX y period -65 KPX yacute comma -65 KPX yacute period -65 KPX ydieresis comma -65 KPX ydieresis period -65 EndKernPairs EndKernData EndFontMetrics gle-graphics-4.2.4c/src/fonts/Adobe-Core35_AFMs-314/ITCBookman-LightItalic.afm0000664000000000000000000007740311405446017024717 0ustar rootrootStartFontMetrics 4.1 Comment Copyright (c) 1985, 1987, 1989, 1992, 1997 Adobe Systems Incorporated. All Rights Reserved. Comment Creation Date: Mon Jun 23 16:36:46 1997 Comment UniqueID 43078 Comment VMusage 44679 55704 FontName Bookman-LightItalic FullName ITC Bookman Light Italic FamilyName ITC Bookman Weight Light ItalicAngle -10 IsFixedPitch false FontBBox -228 -250 1269 883 UnderlinePosition -100 UnderlineThickness 50 Version 002.000 Notice Copyright (c) 1985, 1987, 1989, 1992, 1997 Adobe Systems Incorporated. All Rights Reserved.ITC Bookman is a registered trademark of International Typeface Corporation. EncodingScheme AdobeStandardEncoding CapHeight 681 XHeight 494 Ascender 717 Descender -228 StdHW 42 StdVW 96 StartCharMetrics 314 C 32 ; WX 300 ; N space ; B 0 0 0 0 ; C 33 ; WX 320 ; N exclam ; B 103 -8 342 698 ; C 34 ; WX 360 ; N quotedbl ; B 107 468 402 699 ; C 35 ; WX 620 ; N numbersign ; B 107 0 598 681 ; C 36 ; WX 620 ; N dollar ; B 78 -85 619 762 ; C 37 ; WX 800 ; N percent ; B 56 -8 811 691 ; C 38 ; WX 820 ; N ampersand ; B 65 -18 848 698 ; C 39 ; WX 280 ; N quoteright ; B 148 470 288 698 ; C 40 ; WX 280 ; N parenleft ; B 96 -146 383 727 ; C 41 ; WX 280 ; N parenright ; B -8 -146 279 727 ; C 42 ; WX 440 ; N asterisk ; B 139 324 505 698 ; C 43 ; WX 600 ; N plus ; B 91 43 595 548 ; C 44 ; WX 300 ; N comma ; B 88 -115 227 112 ; C 45 ; WX 320 ; N hyphen ; B 78 269 336 325 ; C 46 ; WX 300 ; N period ; B 96 -8 231 127 ; C 47 ; WX 600 ; N slash ; B 104 -149 562 717 ; C 48 ; WX 620 ; N zero ; B 86 -17 646 698 ; C 49 ; WX 620 ; N one ; B 154 0 500 681 ; C 50 ; WX 620 ; N two ; B 66 0 636 698 ; C 51 ; WX 620 ; N three ; B 55 -17 622 698 ; C 52 ; WX 620 ; N four ; B 69 0 634 681 ; C 53 ; WX 620 ; N five ; B 70 -17 614 681 ; C 54 ; WX 620 ; N six ; B 89 -17 657 698 ; C 55 ; WX 620 ; N seven ; B 143 0 672 681 ; C 56 ; WX 620 ; N eight ; B 61 -17 655 698 ; C 57 ; WX 620 ; N nine ; B 77 -17 649 698 ; C 58 ; WX 300 ; N colon ; B 96 -8 292 494 ; C 59 ; WX 300 ; N semicolon ; B 88 -114 292 494 ; C 60 ; WX 600 ; N less ; B 79 33 588 561 ; C 61 ; WX 600 ; N equal ; B 91 161 595 433 ; C 62 ; WX 600 ; N greater ; B 93 33 602 561 ; C 63 ; WX 540 ; N question ; B 114 -8 604 698 ; C 64 ; WX 780 ; N at ; B 102 -17 802 698 ; C 65 ; WX 700 ; N A ; B -25 0 720 681 ; C 66 ; WX 720 ; N B ; B 21 0 746 681 ; C 67 ; WX 720 ; N C ; B 88 -17 746 698 ; C 68 ; WX 740 ; N D ; B 21 0 782 681 ; C 69 ; WX 680 ; N E ; B 21 0 736 681 ; C 70 ; WX 620 ; N F ; B 21 0 743 681 ; C 71 ; WX 760 ; N G ; B 88 -17 813 698 ; C 72 ; WX 800 ; N H ; B 21 0 888 681 ; C 73 ; WX 320 ; N I ; B 21 0 412 681 ; C 74 ; WX 560 ; N J ; B -2 -17 666 681 ; C 75 ; WX 720 ; N K ; B 21 0 804 681 ; C 76 ; WX 580 ; N L ; B 21 0 656 681 ; C 77 ; WX 860 ; N M ; B 18 0 956 681 ; C 78 ; WX 720 ; N N ; B 18 0 823 681 ; C 79 ; WX 760 ; N O ; B 88 -17 799 698 ; C 80 ; WX 600 ; N P ; B 21 0 681 681 ; C 81 ; WX 780 ; N Q ; B 61 -191 812 698 ; C 82 ; WX 700 ; N R ; B 21 0 736 681 ; C 83 ; WX 640 ; N S ; B 61 -17 668 698 ; C 84 ; WX 600 ; N T ; B 50 0 725 681 ; C 85 ; WX 720 ; N U ; B 118 -17 842 681 ; C 86 ; WX 680 ; N V ; B 87 0 815 681 ; C 87 ; WX 960 ; N W ; B 87 0 1095 681 ; C 88 ; WX 700 ; N X ; B -25 0 815 681 ; C 89 ; WX 660 ; N Y ; B 87 0 809 681 ; C 90 ; WX 580 ; N Z ; B 8 0 695 681 ; C 91 ; WX 260 ; N bracketleft ; B 56 -136 351 717 ; C 92 ; WX 600 ; N backslash ; B 84 0 542 717 ; C 93 ; WX 260 ; N bracketright ; B 15 -136 309 717 ; C 94 ; WX 600 ; N asciicircum ; B 97 276 599 681 ; C 95 ; WX 500 ; N underscore ; B 0 -125 500 -75 ; C 96 ; WX 280 ; N quoteleft ; B 191 470 330 698 ; C 97 ; WX 620 ; N a ; B 71 -8 686 494 ; C 98 ; WX 600 ; N b ; B 88 -8 621 717 ; C 99 ; WX 480 ; N c ; B 65 -8 522 494 ; C 100 ; WX 640 ; N d ; B 65 -8 695 717 ; C 101 ; WX 540 ; N e ; B 65 -8 575 494 ; C 102 ; WX 340 ; N f ; B -160 -218 557 725 ; L i fi ; L l fl ; C 103 ; WX 560 ; N g ; B 4 -221 581 494 ; C 104 ; WX 620 ; N h ; B 88 -8 689 717 ; C 105 ; WX 280 ; N i ; B 88 -8 351 663 ; C 106 ; WX 280 ; N j ; B -200 -221 308 663 ; C 107 ; WX 600 ; N k ; B 88 -8 657 717 ; C 108 ; WX 280 ; N l ; B 100 -8 342 717 ; C 109 ; WX 880 ; N m ; B 88 -8 952 494 ; C 110 ; WX 620 ; N n ; B 88 -8 673 494 ; C 111 ; WX 540 ; N o ; B 65 -8 572 494 ; C 112 ; WX 600 ; N p ; B -24 -212 621 494 ; C 113 ; WX 560 ; N q ; B 65 -212 584 494 ; C 114 ; WX 400 ; N r ; B 88 0 481 494 ; C 115 ; WX 540 ; N s ; B 65 -8 547 494 ; C 116 ; WX 340 ; N t ; B 88 -8 411 664 ; C 117 ; WX 620 ; N u ; B 88 -8 686 484 ; C 118 ; WX 540 ; N v ; B 88 -8 562 494 ; C 119 ; WX 880 ; N w ; B 88 -8 893 494 ; C 120 ; WX 540 ; N x ; B 9 -8 626 494 ; C 121 ; WX 600 ; N y ; B 60 -221 609 484 ; C 122 ; WX 520 ; N z ; B 38 -8 561 494 ; C 123 ; WX 360 ; N braceleft ; B 122 -191 442 718 ; C 124 ; WX 600 ; N bar ; B 294 -250 372 750 ; C 125 ; WX 380 ; N braceright ; B 13 -192 333 717 ; C 126 ; WX 600 ; N asciitilde ; B 91 207 595 386 ; C 161 ; WX 320 ; N exclamdown ; B 73 -213 301 494 ; C 162 ; WX 620 ; N cent ; B 148 -29 596 715 ; C 163 ; WX 620 ; N sterling ; B 4 -17 702 698 ; C 164 ; WX 20 ; N fraction ; B -228 0 323 681 ; C 165 ; WX 620 ; N yen ; B 71 0 735 681 ; C 166 ; WX 620 ; N florin ; B -26 -218 692 725 ; C 167 ; WX 620 ; N section ; B 38 -178 638 698 ; C 168 ; WX 620 ; N currency ; B 100 89 605 591 ; C 169 ; WX 200 ; N quotesingle ; B 99 473 247 698 ; C 170 ; WX 440 ; N quotedblleft ; B 191 470 493 698 ; C 171 ; WX 300 ; N guillemotleft ; B 70 129 313 434 ; C 172 ; WX 180 ; N guilsinglleft ; B 75 129 208 434 ; C 173 ; WX 180 ; N guilsinglright ; B 70 129 203 434 ; C 174 ; WX 640 ; N fi ; B -159 -222 709 725 ; C 175 ; WX 660 ; N fl ; B -159 -218 713 725 ; C 177 ; WX 500 ; N endash ; B 33 269 561 325 ; C 178 ; WX 620 ; N dagger ; B 192 -130 570 698 ; C 179 ; WX 620 ; N daggerdbl ; B 144 -122 566 698 ; C 180 ; WX 300 ; N periodcentered ; B 137 229 272 364 ; C 182 ; WX 620 ; N paragraph ; B 112 0 718 681 ; C 183 ; WX 460 ; N bullet ; B 100 170 444 511 ; C 184 ; WX 320 ; N quotesinglbase ; B 87 -114 226 113 ; C 185 ; WX 480 ; N quotedblbase ; B 87 -114 390 113 ; C 186 ; WX 440 ; N quotedblright ; B 148 470 451 698 ; C 187 ; WX 300 ; N guillemotright ; B 60 129 303 434 ; C 188 ; WX 1000 ; N ellipsis ; B 99 -8 900 127 ; C 189 ; WX 1180 ; N perthousand ; B 56 -8 1199 691 ; C 191 ; WX 540 ; N questiondown ; B 18 -212 508 494 ; C 193 ; WX 340 ; N grave ; B 182 551 377 706 ; C 194 ; WX 320 ; N acute ; B 208 551 403 706 ; C 195 ; WX 440 ; N circumflex ; B 176 571 479 685 ; C 196 ; WX 440 ; N tilde ; B 180 586 488 671 ; C 197 ; WX 440 ; N macron ; B 178 599 484 658 ; C 198 ; WX 440 ; N breve ; B 191 577 500 680 ; C 199 ; WX 260 ; N dotaccent ; B 189 572 310 693 ; C 200 ; WX 420 ; N dieresis ; B 185 542 467 661 ; C 202 ; WX 300 ; N ring ; B 178 551 334 706 ; C 203 ; WX 320 ; N cedilla ; B 45 -178 240 0 ; C 205 ; WX 340 ; N hungarumlaut ; B 188 547 520 694 ; C 206 ; WX 260 ; N ogonek ; B 71 -153 282 0 ; C 207 ; WX 440 ; N caron ; B 218 571 521 684 ; C 208 ; WX 1000 ; N emdash ; B 33 269 1061 325 ; C 225 ; WX 1220 ; N AE ; B -45 0 1269 681 ; C 227 ; WX 440 ; N ordfeminine ; B 130 396 513 698 ; C 232 ; WX 580 ; N Lslash ; B 21 0 656 681 ; C 233 ; WX 760 ; N Oslash ; B 88 -95 799 777 ; C 234 ; WX 1180 ; N OE ; B 88 -17 1237 698 ; C 235 ; WX 400 ; N ordmasculine ; B 139 396 455 698 ; C 241 ; WX 880 ; N ae ; B 71 -8 918 494 ; C 245 ; WX 280 ; N dotlessi ; B 88 -8 351 484 ; C 248 ; WX 340 ; N lslash ; B 33 -8 373 717 ; C 249 ; WX 540 ; N oslash ; B 65 -49 571 532 ; C 250 ; WX 900 ; N oe ; B 65 -8 948 494 ; C 251 ; WX 620 ; N germandbls ; B -121 -111 653 698 ; C -1 ; WX 320 ; N Idieresis ; B 21 0 447 865 ; C -1 ; WX 540 ; N eacute ; B 65 -8 575 706 ; C -1 ; WX 620 ; N abreve ; B 71 -8 686 680 ; C -1 ; WX 620 ; N uhungarumlaut ; B 88 -8 686 694 ; C -1 ; WX 540 ; N ecaron ; B 65 -8 575 684 ; C -1 ; WX 660 ; N Ydieresis ; B 87 0 809 865 ; C -1 ; WX 600 ; N divide ; B 91 46 595 548 ; C -1 ; WX 660 ; N Yacute ; B 87 0 809 883 ; C -1 ; WX 700 ; N Acircumflex ; B -25 0 720 862 ; C -1 ; WX 620 ; N aacute ; B 71 -8 686 706 ; C -1 ; WX 720 ; N Ucircumflex ; B 118 -17 842 862 ; C -1 ; WX 600 ; N yacute ; B 60 -221 609 706 ; C -1 ; WX 540 ; N scommaaccent ; B 65 -250 547 494 ; C -1 ; WX 540 ; N ecircumflex ; B 65 -8 575 685 ; C -1 ; WX 720 ; N Uring ; B 118 -17 842 883 ; C -1 ; WX 720 ; N Udieresis ; B 118 -17 842 865 ; C -1 ; WX 620 ; N aogonek ; B 71 -153 686 494 ; C -1 ; WX 720 ; N Uacute ; B 118 -17 842 883 ; C -1 ; WX 620 ; N uogonek ; B 88 -153 686 484 ; C -1 ; WX 680 ; N Edieresis ; B 21 0 736 865 ; C -1 ; WX 740 ; N Dcroat ; B 21 0 782 681 ; C -1 ; WX 250 ; N commaaccent ; B 92 -250 217 -50 ; C -1 ; WX 740 ; N copyright ; B 84 -17 784 698 ; C -1 ; WX 680 ; N Emacron ; B 21 0 736 835 ; C -1 ; WX 480 ; N ccaron ; B 65 -8 561 684 ; C -1 ; WX 620 ; N aring ; B 71 -8 686 706 ; C -1 ; WX 720 ; N Ncommaaccent ; B 18 -250 823 681 ; C -1 ; WX 280 ; N lacute ; B 100 -8 383 883 ; C -1 ; WX 620 ; N agrave ; B 71 -8 686 706 ; C -1 ; WX 600 ; N Tcommaaccent ; B 50 -250 725 681 ; C -1 ; WX 720 ; N Cacute ; B 88 -17 746 883 ; C -1 ; WX 620 ; N atilde ; B 71 -8 686 671 ; C -1 ; WX 680 ; N Edotaccent ; B 21 0 736 883 ; C -1 ; WX 540 ; N scaron ; B 65 -8 551 684 ; C -1 ; WX 540 ; N scedilla ; B 65 -178 547 494 ; C -1 ; WX 280 ; N iacute ; B 88 -8 363 706 ; C -1 ; WX 471 ; N lozenge ; B 10 0 462 728 ; C -1 ; WX 700 ; N Rcaron ; B 21 0 736 861 ; C -1 ; WX 760 ; N Gcommaaccent ; B 88 -250 813 698 ; C -1 ; WX 620 ; N ucircumflex ; B 88 -8 686 685 ; C -1 ; WX 620 ; N acircumflex ; B 71 -8 686 685 ; C -1 ; WX 700 ; N Amacron ; B -25 0 720 835 ; C -1 ; WX 400 ; N rcaron ; B 88 0 481 684 ; C -1 ; WX 480 ; N ccedilla ; B 65 -178 522 494 ; C -1 ; WX 580 ; N Zdotaccent ; B 8 0 695 883 ; C -1 ; WX 600 ; N Thorn ; B 21 0 656 681 ; C -1 ; WX 760 ; N Omacron ; B 88 -17 799 835 ; C -1 ; WX 700 ; N Racute ; B 21 0 736 883 ; C -1 ; WX 640 ; N Sacute ; B 61 -17 668 883 ; C -1 ; WX 710 ; N dcaron ; B 65 -8 806 723 ; C -1 ; WX 720 ; N Umacron ; B 118 -17 842 835 ; C -1 ; WX 620 ; N uring ; B 88 -8 686 706 ; C -1 ; WX 372 ; N threesuperior ; B 70 269 439 698 ; C -1 ; WX 760 ; N Ograve ; B 88 -17 799 883 ; C -1 ; WX 700 ; N Agrave ; B -25 0 720 883 ; C -1 ; WX 700 ; N Abreve ; B -25 0 720 857 ; C -1 ; WX 600 ; N multiply ; B 91 44 595 548 ; C -1 ; WX 620 ; N uacute ; B 88 -8 686 706 ; C -1 ; WX 600 ; N Tcaron ; B 50 0 725 861 ; C -1 ; WX 476 ; N partialdiff ; B 17 -38 459 710 ; C -1 ; WX 600 ; N ydieresis ; B 60 -221 609 688 ; C -1 ; WX 720 ; N Nacute ; B 18 0 823 883 ; C -1 ; WX 280 ; N icircumflex ; B 76 -8 379 685 ; C -1 ; WX 680 ; N Ecircumflex ; B 21 0 736 862 ; C -1 ; WX 620 ; N adieresis ; B 71 -8 686 688 ; C -1 ; WX 540 ; N edieresis ; B 65 -8 575 688 ; C -1 ; WX 480 ; N cacute ; B 65 -8 522 706 ; C -1 ; WX 620 ; N nacute ; B 88 -8 673 706 ; C -1 ; WX 620 ; N umacron ; B 88 -8 686 658 ; C -1 ; WX 720 ; N Ncaron ; B 18 0 823 861 ; C -1 ; WX 320 ; N Iacute ; B 21 0 433 883 ; C -1 ; WX 600 ; N plusminus ; B 91 0 595 548 ; C -1 ; WX 600 ; N brokenbar ; B 294 -175 372 675 ; C -1 ; WX 740 ; N registered ; B 84 -17 784 698 ; C -1 ; WX 760 ; N Gbreve ; B 88 -17 813 857 ; C -1 ; WX 320 ; N Idotaccent ; B 21 0 412 883 ; C -1 ; WX 600 ; N summation ; B 15 -10 586 706 ; C -1 ; WX 680 ; N Egrave ; B 21 0 736 883 ; C -1 ; WX 400 ; N racute ; B 88 0 481 706 ; C -1 ; WX 540 ; N omacron ; B 65 -8 572 658 ; C -1 ; WX 580 ; N Zacute ; B 8 0 695 883 ; C -1 ; WX 580 ; N Zcaron ; B 8 0 695 861 ; C -1 ; WX 549 ; N greaterequal ; B 26 0 523 666 ; C -1 ; WX 740 ; N Eth ; B 21 0 782 681 ; C -1 ; WX 720 ; N Ccedilla ; B 88 -178 746 698 ; C -1 ; WX 280 ; N lcommaaccent ; B 100 -250 342 717 ; C -1 ; WX 370 ; N tcaron ; B 88 -8 476 737 ; C -1 ; WX 540 ; N eogonek ; B 65 -160 575 494 ; C -1 ; WX 720 ; N Uogonek ; B 118 -168 842 681 ; C -1 ; WX 700 ; N Aacute ; B -25 0 720 883 ; C -1 ; WX 700 ; N Adieresis ; B -25 0 720 865 ; C -1 ; WX 540 ; N egrave ; B 65 -8 575 706 ; C -1 ; WX 520 ; N zacute ; B 38 -8 561 706 ; C -1 ; WX 280 ; N iogonek ; B 88 -157 351 663 ; C -1 ; WX 760 ; N Oacute ; B 88 -17 799 883 ; C -1 ; WX 540 ; N oacute ; B 65 -8 572 706 ; C -1 ; WX 620 ; N amacron ; B 71 -8 686 658 ; C -1 ; WX 540 ; N sacute ; B 65 -8 547 706 ; C -1 ; WX 280 ; N idieresis ; B 88 -8 377 688 ; C -1 ; WX 760 ; N Ocircumflex ; B 88 -17 799 862 ; C -1 ; WX 720 ; N Ugrave ; B 118 -17 842 883 ; C -1 ; WX 614 ; N Delta ; B 6 0 608 688 ; C -1 ; WX 600 ; N thorn ; B -24 -212 621 717 ; C -1 ; WX 372 ; N twosuperior ; B 68 279 439 698 ; C -1 ; WX 760 ; N Odieresis ; B 88 -17 799 865 ; C -1 ; WX 620 ; N mu ; B 53 -221 686 484 ; C -1 ; WX 280 ; N igrave ; B 88 -8 351 706 ; C -1 ; WX 540 ; N ohungarumlaut ; B 65 -8 590 694 ; C -1 ; WX 680 ; N Eogonek ; B 21 -153 736 681 ; C -1 ; WX 640 ; N dcroat ; B 65 -8 725 717 ; C -1 ; WX 930 ; N threequarters ; B 99 0 913 691 ; C -1 ; WX 640 ; N Scedilla ; B 61 -178 668 698 ; C -1 ; WX 350 ; N lcaron ; B 100 -8 446 722 ; C -1 ; WX 720 ; N Kcommaaccent ; B 21 -250 804 681 ; C -1 ; WX 580 ; N Lacute ; B 21 0 656 883 ; C -1 ; WX 980 ; N trademark ; B 69 277 965 681 ; C -1 ; WX 540 ; N edotaccent ; B 65 -8 575 720 ; C -1 ; WX 320 ; N Igrave ; B 21 0 412 883 ; C -1 ; WX 320 ; N Imacron ; B 21 0 454 835 ; C -1 ; WX 580 ; N Lcaron ; B 21 0 656 698 ; C -1 ; WX 930 ; N onehalf ; B 91 0 925 681 ; C -1 ; WX 549 ; N lessequal ; B 26 0 523 666 ; C -1 ; WX 540 ; N ocircumflex ; B 65 -8 572 685 ; C -1 ; WX 620 ; N ntilde ; B 88 -8 673 671 ; C -1 ; WX 720 ; N Uhungarumlaut ; B 118 -17 842 871 ; C -1 ; WX 680 ; N Eacute ; B 21 0 736 883 ; C -1 ; WX 540 ; N emacron ; B 65 -8 594 658 ; C -1 ; WX 560 ; N gbreve ; B 4 -221 581 680 ; C -1 ; WX 930 ; N onequarter ; B 91 0 913 681 ; C -1 ; WX 640 ; N Scaron ; B 61 -17 668 861 ; C -1 ; WX 640 ; N Scommaaccent ; B 61 -250 668 698 ; C -1 ; WX 760 ; N Ohungarumlaut ; B 88 -17 799 871 ; C -1 ; WX 400 ; N degree ; B 120 398 420 698 ; C -1 ; WX 540 ; N ograve ; B 65 -8 572 706 ; C -1 ; WX 720 ; N Ccaron ; B 88 -17 746 861 ; C -1 ; WX 620 ; N ugrave ; B 88 -8 686 706 ; C -1 ; WX 453 ; N radical ; B -4 -80 458 762 ; C -1 ; WX 740 ; N Dcaron ; B 21 0 782 861 ; C -1 ; WX 400 ; N rcommaaccent ; B 67 -250 481 494 ; C -1 ; WX 720 ; N Ntilde ; B 18 0 823 848 ; C -1 ; WX 540 ; N otilde ; B 65 -8 572 671 ; C -1 ; WX 700 ; N Rcommaaccent ; B 21 -250 736 681 ; C -1 ; WX 580 ; N Lcommaaccent ; B 21 -250 656 681 ; C -1 ; WX 700 ; N Atilde ; B -25 0 720 848 ; C -1 ; WX 700 ; N Aogonek ; B -25 -153 748 681 ; C -1 ; WX 700 ; N Aring ; B -25 0 720 883 ; C -1 ; WX 760 ; N Otilde ; B 88 -17 799 848 ; C -1 ; WX 520 ; N zdotaccent ; B 38 -8 561 720 ; C -1 ; WX 680 ; N Ecaron ; B 21 0 736 861 ; C -1 ; WX 320 ; N Iogonek ; B 21 -153 412 681 ; C -1 ; WX 600 ; N kcommaaccent ; B 88 -250 657 717 ; C -1 ; WX 600 ; N minus ; B 91 259 595 335 ; C -1 ; WX 320 ; N Icircumflex ; B 21 0 449 862 ; C -1 ; WX 620 ; N ncaron ; B 88 -8 673 684 ; C -1 ; WX 340 ; N tcommaaccent ; B 88 -250 411 664 ; C -1 ; WX 600 ; N logicalnot ; B 91 163 595 433 ; C -1 ; WX 540 ; N odieresis ; B 65 -8 572 688 ; C -1 ; WX 620 ; N udieresis ; B 88 -8 686 688 ; C -1 ; WX 549 ; N notequal ; B 12 -31 537 547 ; C -1 ; WX 560 ; N gcommaaccent ; B 4 -221 581 782 ; C -1 ; WX 540 ; N eth ; B 65 -8 642 725 ; C -1 ; WX 520 ; N zcaron ; B 38 -8 561 684 ; C -1 ; WX 620 ; N ncommaaccent ; B 88 -250 673 494 ; C -1 ; WX 372 ; N onesuperior ; B 114 279 339 688 ; C -1 ; WX 280 ; N imacron ; B 88 -8 404 658 ; EndCharMetrics StartKernData StartKernPairs 828 KPX A T -5 KPX A Tcaron -5 KPX A Tcommaaccent -5 KPX A V -78 KPX A W -73 KPX A Y -62 KPX A Yacute -62 KPX A Ydieresis -62 KPX Aacute T -5 KPX Aacute Tcaron -5 KPX Aacute Tcommaaccent -5 KPX Aacute V -78 KPX Aacute W -73 KPX Aacute Y -62 KPX Aacute Yacute -62 KPX Aacute Ydieresis -62 KPX Abreve T -5 KPX Abreve Tcaron -5 KPX Abreve Tcommaaccent -5 KPX Abreve V -78 KPX Abreve W -73 KPX Abreve Y -62 KPX Abreve Yacute -62 KPX Abreve Ydieresis -62 KPX Acircumflex T -5 KPX Acircumflex Tcaron -5 KPX Acircumflex Tcommaaccent -5 KPX Acircumflex V -78 KPX Acircumflex W -73 KPX Acircumflex Y -62 KPX Acircumflex Yacute -62 KPX Acircumflex Ydieresis -62 KPX Adieresis T -5 KPX Adieresis Tcaron -5 KPX Adieresis Tcommaaccent -5 KPX Adieresis V -78 KPX Adieresis W -73 KPX Adieresis Y -62 KPX Adieresis Yacute -62 KPX Adieresis Ydieresis -62 KPX Agrave T -5 KPX Agrave Tcaron -5 KPX Agrave Tcommaaccent -5 KPX Agrave V -78 KPX Agrave W -73 KPX Agrave Y -62 KPX Agrave Yacute -62 KPX Agrave Ydieresis -62 KPX Amacron T -5 KPX Amacron Tcaron -5 KPX Amacron Tcommaaccent -5 KPX Amacron V -78 KPX Amacron W -73 KPX Amacron Y -62 KPX Amacron Yacute -62 KPX Amacron Ydieresis -62 KPX Aogonek T -5 KPX Aogonek Tcaron -5 KPX Aogonek Tcommaaccent -5 KPX Aogonek V -78 KPX Aogonek W -73 KPX Aogonek Y -62 KPX Aogonek Yacute -62 KPX Aogonek Ydieresis -62 KPX Aring T -5 KPX Aring Tcaron -5 KPX Aring Tcommaaccent -5 KPX Aring V -78 KPX Aring W -73 KPX Aring Y -62 KPX Aring Yacute -62 KPX Aring Ydieresis -62 KPX Atilde T -5 KPX Atilde Tcaron -5 KPX Atilde Tcommaaccent -5 KPX Atilde V -78 KPX Atilde W -73 KPX Atilde Y -62 KPX Atilde Yacute -62 KPX Atilde Ydieresis -62 KPX F A -16 KPX F Aacute -16 KPX F Abreve -16 KPX F Acircumflex -16 KPX F Adieresis -16 KPX F Agrave -16 KPX F Amacron -16 KPX F Aogonek -16 KPX F Aring -16 KPX F Atilde -16 KPX F comma -98 KPX F period -97 KPX L V 4 KPX L W 9 KPX L Y 7 KPX L Yacute 7 KPX L Ydieresis 7 KPX L y 20 KPX L yacute 20 KPX L ydieresis 20 KPX Lacute V 4 KPX Lacute W 9 KPX Lacute Y 7 KPX Lacute Yacute 7 KPX Lacute Ydieresis 7 KPX Lacute y 20 KPX Lacute yacute 20 KPX Lacute ydieresis 20 KPX Lcaron V 4 KPX Lcaron W 9 KPX Lcaron Y 7 KPX Lcaron Yacute 7 KPX Lcaron Ydieresis 7 KPX Lcaron y 20 KPX Lcaron yacute 20 KPX Lcaron ydieresis 20 KPX Lcommaaccent V 4 KPX Lcommaaccent W 9 KPX Lcommaaccent Y 7 KPX Lcommaaccent Yacute 7 KPX Lcommaaccent Ydieresis 7 KPX Lcommaaccent y 20 KPX Lcommaaccent yacute 20 KPX Lcommaaccent ydieresis 20 KPX Lslash V 4 KPX Lslash W 9 KPX Lslash Y 7 KPX Lslash Yacute 7 KPX Lslash Ydieresis 7 KPX Lslash y 20 KPX Lslash yacute 20 KPX Lslash ydieresis 20 KPX P A -30 KPX P Aacute -30 KPX P Abreve -30 KPX P Acircumflex -30 KPX P Adieresis -30 KPX P Agrave -30 KPX P Amacron -30 KPX P Aogonek -30 KPX P Aring -30 KPX P Atilde -30 KPX P comma -106 KPX P period -105 KPX R T 65 KPX R Tcaron 65 KPX R Tcommaaccent 65 KPX R V 2 KPX R W 2 KPX R Y 11 KPX R Yacute 11 KPX R Ydieresis 11 KPX Racute T 65 KPX Racute Tcaron 65 KPX Racute Tcommaaccent 65 KPX Racute V 2 KPX Racute W 2 KPX Racute Y 11 KPX Racute Yacute 11 KPX Racute Ydieresis 11 KPX Rcaron T 65 KPX Rcaron Tcaron 65 KPX Rcaron Tcommaaccent 65 KPX Rcaron V 2 KPX Rcaron W 2 KPX Rcaron Y 11 KPX Rcaron Yacute 11 KPX Rcaron Ydieresis 11 KPX Rcommaaccent T 65 KPX Rcommaaccent Tcaron 65 KPX Rcommaaccent Tcommaaccent 65 KPX Rcommaaccent V 2 KPX Rcommaaccent W 2 KPX Rcommaaccent Y 11 KPX Rcommaaccent Yacute 11 KPX Rcommaaccent Ydieresis 11 KPX T A -14 KPX T Aacute -14 KPX T Abreve -14 KPX T Acircumflex -14 KPX T Adieresis -14 KPX T Agrave -14 KPX T Amacron -14 KPX T Aogonek -14 KPX T Aring -14 KPX T Atilde -14 KPX T a 9 KPX T aacute 9 KPX T abreve 9 KPX T acircumflex 9 KPX T adieresis 9 KPX T agrave 9 KPX T amacron 9 KPX T aogonek 9 KPX T aring 9 KPX T atilde 9 KPX T c 16 KPX T cacute 16 KPX T ccaron 16 KPX T ccedilla 16 KPX T colon 48 KPX T comma -79 KPX T e 10 KPX T eacute 10 KPX T ecaron 10 KPX T ecircumflex 10 KPX T edieresis 10 KPX T edotaccent 10 KPX T egrave 10 KPX T emacron 10 KPX T eogonek 10 KPX T hyphen 20 KPX T i 71 KPX T iacute 71 KPX T icircumflex 71 KPX T idieresis 71 KPX T igrave 71 KPX T imacron 71 KPX T iogonek 71 KPX T o 14 KPX T oacute 14 KPX T ocircumflex 14 KPX T odieresis 14 KPX T ograve 14 KPX T ohungarumlaut 14 KPX T omacron 14 KPX T oslash 14 KPX T otilde 14 KPX T period -78 KPX T r 67 KPX T racute 67 KPX T rcaron 67 KPX T rcommaaccent 67 KPX T s -7 KPX T sacute -7 KPX T scaron -7 KPX T scedilla -7 KPX T scommaaccent -7 KPX T semicolon 48 KPX Tcaron A -14 KPX Tcaron Aacute -14 KPX Tcaron Abreve -14 KPX Tcaron Acircumflex -14 KPX Tcaron Adieresis -14 KPX Tcaron Agrave -14 KPX Tcaron Amacron -14 KPX Tcaron Aogonek -14 KPX Tcaron Aring -14 KPX Tcaron Atilde -14 KPX Tcaron a 9 KPX Tcaron aacute 9 KPX Tcaron abreve 9 KPX Tcaron acircumflex 9 KPX Tcaron adieresis 9 KPX Tcaron agrave 9 KPX Tcaron amacron 9 KPX Tcaron aogonek 9 KPX Tcaron aring 9 KPX Tcaron atilde 9 KPX Tcaron c 16 KPX Tcaron cacute 16 KPX Tcaron ccaron 16 KPX Tcaron ccedilla 16 KPX Tcaron colon 48 KPX Tcaron comma -79 KPX Tcaron e 10 KPX Tcaron eacute 10 KPX Tcaron ecaron 10 KPX Tcaron ecircumflex 10 KPX Tcaron edieresis 10 KPX Tcaron edotaccent 10 KPX Tcaron egrave 10 KPX Tcaron emacron 10 KPX Tcaron eogonek 10 KPX Tcaron hyphen 20 KPX Tcaron i 71 KPX Tcaron iacute 71 KPX Tcaron icircumflex 71 KPX Tcaron idieresis 71 KPX Tcaron igrave 71 KPX Tcaron imacron 71 KPX Tcaron iogonek 71 KPX Tcaron o 14 KPX Tcaron oacute 14 KPX Tcaron ocircumflex 14 KPX Tcaron odieresis 14 KPX Tcaron ograve 14 KPX Tcaron ohungarumlaut 14 KPX Tcaron omacron 14 KPX Tcaron oslash 14 KPX Tcaron otilde 14 KPX Tcaron period -78 KPX Tcaron r 67 KPX Tcaron racute 67 KPX Tcaron rcaron 67 KPX Tcaron rcommaaccent 67 KPX Tcaron s -7 KPX Tcaron sacute -7 KPX Tcaron scaron -7 KPX Tcaron scedilla -7 KPX Tcaron scommaaccent -7 KPX Tcaron semicolon 48 KPX Tcommaaccent A -14 KPX Tcommaaccent Aacute -14 KPX Tcommaaccent Abreve -14 KPX Tcommaaccent Acircumflex -14 KPX Tcommaaccent Adieresis -14 KPX Tcommaaccent Agrave -14 KPX Tcommaaccent Amacron -14 KPX Tcommaaccent Aogonek -14 KPX Tcommaaccent Aring -14 KPX Tcommaaccent Atilde -14 KPX Tcommaaccent a 9 KPX Tcommaaccent aacute 9 KPX Tcommaaccent abreve 9 KPX Tcommaaccent acircumflex 9 KPX Tcommaaccent adieresis 9 KPX Tcommaaccent agrave 9 KPX Tcommaaccent amacron 9 KPX Tcommaaccent aogonek 9 KPX Tcommaaccent aring 9 KPX Tcommaaccent atilde 9 KPX Tcommaaccent c 16 KPX Tcommaaccent cacute 16 KPX Tcommaaccent ccaron 16 KPX Tcommaaccent ccedilla 16 KPX Tcommaaccent colon 48 KPX Tcommaaccent comma -79 KPX Tcommaaccent e 10 KPX Tcommaaccent eacute 10 KPX Tcommaaccent ecaron 10 KPX Tcommaaccent ecircumflex 10 KPX Tcommaaccent edieresis 10 KPX Tcommaaccent edotaccent 10 KPX Tcommaaccent egrave 10 KPX Tcommaaccent emacron 10 KPX Tcommaaccent eogonek 10 KPX Tcommaaccent hyphen 20 KPX Tcommaaccent i 71 KPX Tcommaaccent iacute 71 KPX Tcommaaccent icircumflex 71 KPX Tcommaaccent idieresis 71 KPX Tcommaaccent igrave 71 KPX Tcommaaccent imacron 71 KPX Tcommaaccent iogonek 71 KPX Tcommaaccent o 14 KPX Tcommaaccent oacute 14 KPX Tcommaaccent ocircumflex 14 KPX Tcommaaccent odieresis 14 KPX Tcommaaccent ograve 14 KPX Tcommaaccent ohungarumlaut 14 KPX Tcommaaccent omacron 14 KPX Tcommaaccent oslash 14 KPX Tcommaaccent otilde 14 KPX Tcommaaccent period -78 KPX Tcommaaccent r 67 KPX Tcommaaccent racute 67 KPX Tcommaaccent rcaron 67 KPX Tcommaaccent rcommaaccent 67 KPX Tcommaaccent s -7 KPX Tcommaaccent sacute -7 KPX Tcommaaccent scaron -7 KPX Tcommaaccent scedilla -7 KPX Tcommaaccent scommaaccent -7 KPX Tcommaaccent semicolon 48 KPX V A -70 KPX V Aacute -70 KPX V Abreve -70 KPX V Acircumflex -70 KPX V Adieresis -70 KPX V Agrave -70 KPX V Amacron -70 KPX V Aogonek -70 KPX V Aring -70 KPX V Atilde -70 KPX V a -70 KPX V aacute -70 KPX V abreve -70 KPX V acircumflex -70 KPX V adieresis -70 KPX V agrave -70 KPX V amacron -70 KPX V aogonek -70 KPX V aring -70 KPX V atilde -70 KPX V colon -35 KPX V comma -109 KPX V e -70 KPX V eacute -70 KPX V ecaron -70 KPX V ecircumflex -70 KPX V edieresis -70 KPX V edotaccent -70 KPX V egrave -70 KPX V emacron -70 KPX V eogonek -70 KPX V hyphen 20 KPX V i 3 KPX V iacute 3 KPX V icircumflex 3 KPX V idieresis 13 KPX V igrave 13 KPX V imacron 13 KPX V iogonek 3 KPX V o -70 KPX V oacute -70 KPX V ocircumflex -70 KPX V odieresis -70 KPX V ograve -70 KPX V ohungarumlaut -70 KPX V omacron -70 KPX V oslash -70 KPX V otilde -70 KPX V period -100 KPX V r -20 KPX V racute -20 KPX V rcaron -20 KPX V rcommaaccent -20 KPX V semicolon -44 KPX V u -10 KPX V uacute -10 KPX V ucircumflex -10 KPX V udieresis -10 KPX V ugrave -10 KPX V uhungarumlaut -10 KPX V umacron -10 KPX V uogonek -10 KPX V uring -10 KPX V y -14 KPX V yacute -14 KPX V ydieresis -14 KPX W A -60 KPX W Aacute -60 KPX W Abreve -60 KPX W Acircumflex -60 KPX W Adieresis -60 KPX W Agrave -60 KPX W Amacron -60 KPX W Aogonek -60 KPX W Aring -60 KPX W Atilde -60 KPX W a -60 KPX W aacute -60 KPX W abreve -60 KPX W acircumflex -60 KPX W adieresis -60 KPX W agrave -60 KPX W amacron -60 KPX W aogonek -60 KPX W aring -60 KPX W atilde -60 KPX W colon -35 KPX W comma -109 KPX W e -60 KPX W eacute -60 KPX W ecaron -60 KPX W ecircumflex -60 KPX W edieresis -60 KPX W edotaccent -60 KPX W egrave -60 KPX W emacron -60 KPX W eogonek -60 KPX W hyphen 20 KPX W i 3 KPX W iacute 3 KPX W icircumflex 13 KPX W idieresis 13 KPX W igrave 13 KPX W imacron 13 KPX W iogonek 3 KPX W o -60 KPX W oacute -60 KPX W ocircumflex -60 KPX W odieresis -60 KPX W ograve -60 KPX W ohungarumlaut -60 KPX W omacron -60 KPX W oslash -60 KPX W otilde -60 KPX W period -100 KPX W r -30 KPX W racute -30 KPX W rcaron -30 KPX W rcommaaccent -30 KPX W semicolon -42 KPX W u -20 KPX W uacute -20 KPX W ucircumflex -20 KPX W udieresis -20 KPX W ugrave -20 KPX W uhungarumlaut -20 KPX W umacron -20 KPX W uogonek -20 KPX W uring -20 KPX W y -14 KPX W yacute -14 KPX W ydieresis -14 KPX Y A -82 KPX Y Aacute -82 KPX Y Abreve -82 KPX Y Acircumflex -82 KPX Y Adieresis -82 KPX Y Agrave -82 KPX Y Amacron -82 KPX Y Aogonek -82 KPX Y Aring -82 KPX Y Atilde -82 KPX Y a -79 KPX Y aacute -79 KPX Y abreve -79 KPX Y acircumflex -79 KPX Y adieresis -79 KPX Y agrave -79 KPX Y amacron -79 KPX Y aogonek -79 KPX Y aring -79 KPX Y atilde -79 KPX Y colon -35 KPX Y comma -109 KPX Y e -78 KPX Y eacute -78 KPX Y ecaron -78 KPX Y ecircumflex -78 KPX Y edieresis -78 KPX Y edotaccent -78 KPX Y egrave -78 KPX Y emacron -78 KPX Y eogonek -78 KPX Y hyphen 20 KPX Y i -11 KPX Y iacute -11 KPX Y iogonek -11 KPX Y o -75 KPX Y oacute -75 KPX Y ocircumflex -75 KPX Y odieresis -75 KPX Y ograve -75 KPX Y ohungarumlaut -75 KPX Y omacron -75 KPX Y oslash -75 KPX Y otilde -75 KPX Y p -37 KPX Y period -100 KPX Y q -72 KPX Y semicolon -40 KPX Y u -31 KPX Y uacute -31 KPX Y ucircumflex -31 KPX Y udieresis -31 KPX Y ugrave -31 KPX Y uhungarumlaut -31 KPX Y umacron -31 KPX Y uogonek -31 KPX Y uring -31 KPX Y v -19 KPX Yacute A -82 KPX Yacute Aacute -82 KPX Yacute Abreve -82 KPX Yacute Acircumflex -82 KPX Yacute Adieresis -82 KPX Yacute Agrave -82 KPX Yacute Amacron -82 KPX Yacute Aogonek -82 KPX Yacute Aring -82 KPX Yacute Atilde -82 KPX Yacute a -79 KPX Yacute aacute -79 KPX Yacute abreve -79 KPX Yacute acircumflex -79 KPX Yacute adieresis -79 KPX Yacute agrave -79 KPX Yacute amacron -79 KPX Yacute aogonek -79 KPX Yacute aring -79 KPX Yacute atilde -79 KPX Yacute colon -35 KPX Yacute comma -109 KPX Yacute e -78 KPX Yacute eacute -78 KPX Yacute ecaron -78 KPX Yacute ecircumflex -78 KPX Yacute edieresis -78 KPX Yacute edotaccent -78 KPX Yacute egrave -78 KPX Yacute emacron -78 KPX Yacute eogonek -78 KPX Yacute hyphen 20 KPX Yacute i -11 KPX Yacute iacute -11 KPX Yacute iogonek -11 KPX Yacute o -75 KPX Yacute oacute -75 KPX Yacute ocircumflex -75 KPX Yacute odieresis -75 KPX Yacute ograve -75 KPX Yacute ohungarumlaut -75 KPX Yacute omacron -75 KPX Yacute oslash -75 KPX Yacute otilde -75 KPX Yacute p -37 KPX Yacute period -100 KPX Yacute q -72 KPX Yacute semicolon -40 KPX Yacute u -31 KPX Yacute uacute -31 KPX Yacute ucircumflex -31 KPX Yacute udieresis -31 KPX Yacute ugrave -31 KPX Yacute uhungarumlaut -31 KPX Yacute umacron -31 KPX Yacute uogonek -31 KPX Yacute uring -31 KPX Yacute v -19 KPX Ydieresis A -82 KPX Ydieresis Aacute -82 KPX Ydieresis Abreve -82 KPX Ydieresis Acircumflex -82 KPX Ydieresis Adieresis -82 KPX Ydieresis Agrave -82 KPX Ydieresis Amacron -82 KPX Ydieresis Aogonek -82 KPX Ydieresis Aring -82 KPX Ydieresis Atilde -82 KPX Ydieresis a -79 KPX Ydieresis aacute -79 KPX Ydieresis abreve -79 KPX Ydieresis acircumflex -79 KPX Ydieresis adieresis -79 KPX Ydieresis agrave -79 KPX Ydieresis amacron -79 KPX Ydieresis aogonek -79 KPX Ydieresis aring -79 KPX Ydieresis atilde -79 KPX Ydieresis colon -35 KPX Ydieresis comma -109 KPX Ydieresis e -78 KPX Ydieresis eacute -78 KPX Ydieresis ecaron -78 KPX Ydieresis ecircumflex -78 KPX Ydieresis edieresis -78 KPX Ydieresis edotaccent -78 KPX Ydieresis egrave -78 KPX Ydieresis emacron -78 KPX Ydieresis eogonek -78 KPX Ydieresis hyphen 20 KPX Ydieresis i -11 KPX Ydieresis iacute -11 KPX Ydieresis iogonek -11 KPX Ydieresis o -75 KPX Ydieresis oacute -75 KPX Ydieresis ocircumflex -75 KPX Ydieresis odieresis -75 KPX Ydieresis ograve -75 KPX Ydieresis ohungarumlaut -75 KPX Ydieresis omacron -75 KPX Ydieresis oslash -75 KPX Ydieresis otilde -75 KPX Ydieresis p -37 KPX Ydieresis period -100 KPX Ydieresis q -72 KPX Ydieresis semicolon -40 KPX Ydieresis u -31 KPX Ydieresis uacute -31 KPX Ydieresis ucircumflex -31 KPX Ydieresis udieresis -31 KPX Ydieresis ugrave -31 KPX Ydieresis uhungarumlaut -31 KPX Ydieresis umacron -31 KPX Ydieresis uogonek -31 KPX Ydieresis uring -31 KPX Ydieresis v -19 KPX f f -19 KPX r c -8 KPX r cacute -8 KPX r ccaron -8 KPX r ccedilla -8 KPX r comma -143 KPX r d -9 KPX r dcroat -9 KPX r e -15 KPX r eacute -15 KPX r ecaron -15 KPX r ecircumflex -15 KPX r edieresis -15 KPX r edotaccent -15 KPX r egrave -15 KPX r emacron -15 KPX r eogonek -15 KPX r f -9 KPX r g -3 KPX r gbreve -3 KPX r gcommaaccent -3 KPX r h -20 KPX r hyphen 20 KPX r m 37 KPX r n 38 KPX r nacute 38 KPX r ncaron 38 KPX r ncommaaccent 38 KPX r ntilde 38 KPX r o -10 KPX r oacute -10 KPX r ocircumflex -10 KPX r odieresis -10 KPX r ograve -10 KPX r ohungarumlaut -10 KPX r omacron -10 KPX r oslash -10 KPX r otilde -10 KPX r period -134 KPX r q -14 KPX racute c -8 KPX racute cacute -8 KPX racute ccaron -8 KPX racute ccedilla -8 KPX racute comma -143 KPX racute d -9 KPX racute dcroat -9 KPX racute e -15 KPX racute eacute -15 KPX racute ecaron -15 KPX racute ecircumflex -15 KPX racute edieresis -15 KPX racute edotaccent -15 KPX racute egrave -15 KPX racute emacron -15 KPX racute eogonek -15 KPX racute f -9 KPX racute g -3 KPX racute gbreve -3 KPX racute gcommaaccent -3 KPX racute h -20 KPX racute hyphen 20 KPX racute m 37 KPX racute n 38 KPX racute nacute 38 KPX racute ncaron 38 KPX racute ncommaaccent 38 KPX racute ntilde 38 KPX racute o -10 KPX racute oacute -10 KPX racute ocircumflex -10 KPX racute odieresis -10 KPX racute ograve -10 KPX racute ohungarumlaut -10 KPX racute omacron -10 KPX racute oslash -10 KPX racute otilde -10 KPX racute period -134 KPX racute q -14 KPX rcaron c -8 KPX rcaron cacute -8 KPX rcaron ccaron -8 KPX rcaron ccedilla -8 KPX rcaron comma -143 KPX rcaron d -9 KPX rcaron dcroat -9 KPX rcaron e -15 KPX rcaron eacute -15 KPX rcaron ecaron -15 KPX rcaron ecircumflex -15 KPX rcaron edieresis -15 KPX rcaron edotaccent -15 KPX rcaron egrave -15 KPX rcaron emacron -15 KPX rcaron eogonek -15 KPX rcaron f -9 KPX rcaron g -3 KPX rcaron gbreve -3 KPX rcaron gcommaaccent -3 KPX rcaron h -20 KPX rcaron hyphen 20 KPX rcaron m 37 KPX rcaron n 38 KPX rcaron nacute 38 KPX rcaron ncaron 38 KPX rcaron ncommaaccent 38 KPX rcaron ntilde 38 KPX rcaron o -10 KPX rcaron oacute -10 KPX rcaron ocircumflex -10 KPX rcaron odieresis -10 KPX rcaron ograve -10 KPX rcaron ohungarumlaut -10 KPX rcaron omacron -10 KPX rcaron oslash -10 KPX rcaron otilde -10 KPX rcaron period -134 KPX rcaron q -14 KPX rcommaaccent c -8 KPX rcommaaccent cacute -8 KPX rcommaaccent ccaron -8 KPX rcommaaccent ccedilla -8 KPX rcommaaccent comma -143 KPX rcommaaccent d -9 KPX rcommaaccent dcroat -9 KPX rcommaaccent e -15 KPX rcommaaccent eacute -15 KPX rcommaaccent ecaron -15 KPX rcommaaccent ecircumflex -15 KPX rcommaaccent edieresis -15 KPX rcommaaccent edotaccent -15 KPX rcommaaccent egrave -15 KPX rcommaaccent emacron -15 KPX rcommaaccent eogonek -15 KPX rcommaaccent f -9 KPX rcommaaccent g -3 KPX rcommaaccent gbreve -3 KPX rcommaaccent gcommaaccent -3 KPX rcommaaccent h -20 KPX rcommaaccent hyphen 20 KPX rcommaaccent m 37 KPX rcommaaccent n 38 KPX rcommaaccent nacute 38 KPX rcommaaccent ncaron 38 KPX rcommaaccent ncommaaccent 38 KPX rcommaaccent ntilde 38 KPX rcommaaccent o -10 KPX rcommaaccent oacute -10 KPX rcommaaccent ocircumflex -10 KPX rcommaaccent odieresis -10 KPX rcommaaccent ograve -10 KPX rcommaaccent ohungarumlaut -10 KPX rcommaaccent omacron -10 KPX rcommaaccent oslash -10 KPX rcommaaccent otilde -10 KPX rcommaaccent period -134 KPX rcommaaccent q -14 EndKernPairs EndKernData EndFontMetrics gle-graphics-4.2.4c/src/fonts/Adobe-Core35_AFMs-314/ITCBookman-Light.afm0000664000000000000000000010070711405446017023563 0ustar rootrootStartFontMetrics 4.1 Comment Copyright (c) 1985, 1987, 1989, 1992, 1997 Adobe Systems Incorporated. All Rights Reserved. Comment Creation Date: Thu May 1 13:40:29 1997 Comment UniqueID 43077 Comment VMusage 44500 55525 FontName Bookman-Light FullName ITC Bookman Light FamilyName ITC Bookman Weight Light ItalicAngle 0 IsFixedPitch false FontBBox -188 -251 1266 908 UnderlinePosition -100 UnderlineThickness 50 Version 002.000 Notice Copyright (c) 1985, 1987, 1989, 1992, 1997 Adobe Systems Incorporated. All Rights Reserved.ITC Bookman is a registered trademark of International Typeface Corporation. EncodingScheme AdobeStandardEncoding CapHeight 681 XHeight 484 Ascender 717 Descender -228 StdHW 42 StdVW 96 StartCharMetrics 314 C 32 ; WX 320 ; N space ; B 0 0 0 0 ; C 33 ; WX 300 ; N exclam ; B 75 -8 219 698 ; C 34 ; WX 380 ; N quotedbl ; B 56 458 323 698 ; C 35 ; WX 620 ; N numbersign ; B 65 0 556 681 ; C 36 ; WX 620 ; N dollar ; B 34 -109 593 791 ; C 37 ; WX 900 ; N percent ; B 22 -8 873 698 ; C 38 ; WX 800 ; N ampersand ; B 45 -17 787 698 ; C 39 ; WX 220 ; N quoteright ; B 46 480 178 698 ; C 40 ; WX 300 ; N parenleft ; B 76 -145 278 727 ; C 41 ; WX 300 ; N parenright ; B 17 -146 219 727 ; C 42 ; WX 440 ; N asterisk ; B 54 325 391 698 ; C 43 ; WX 600 ; N plus ; B 51 8 555 513 ; C 44 ; WX 320 ; N comma ; B 90 -114 223 114 ; C 45 ; WX 400 ; N hyphen ; B 50 232 350 292 ; C 46 ; WX 320 ; N period ; B 92 -8 220 123 ; C 47 ; WX 600 ; N slash ; B 74 -149 532 717 ; C 48 ; WX 620 ; N zero ; B 40 -17 586 698 ; C 49 ; WX 620 ; N one ; B 160 0 501 681 ; C 50 ; WX 620 ; N two ; B 42 0 576 698 ; C 51 ; WX 620 ; N three ; B 40 -17 576 698 ; C 52 ; WX 620 ; N four ; B 25 0 600 681 ; C 53 ; WX 620 ; N five ; B 60 -17 584 717 ; C 54 ; WX 620 ; N six ; B 45 -17 590 698 ; C 55 ; WX 620 ; N seven ; B 60 0 586 681 ; C 56 ; WX 620 ; N eight ; B 44 -17 583 698 ; C 57 ; WX 620 ; N nine ; B 37 -17 576 698 ; C 58 ; WX 320 ; N colon ; B 92 -8 220 494 ; C 59 ; WX 320 ; N semicolon ; B 90 -114 223 494 ; C 60 ; WX 600 ; N less ; B 49 -2 558 526 ; C 61 ; WX 600 ; N equal ; B 51 126 555 398 ; C 62 ; WX 600 ; N greater ; B 48 -2 557 526 ; C 63 ; WX 540 ; N question ; B 27 -8 514 698 ; C 64 ; WX 820 ; N at ; B 55 -17 755 698 ; C 65 ; WX 680 ; N A ; B -37 0 714 681 ; C 66 ; WX 740 ; N B ; B 31 0 702 681 ; C 67 ; WX 740 ; N C ; B 44 -17 702 698 ; C 68 ; WX 800 ; N D ; B 31 0 752 681 ; C 69 ; WX 720 ; N E ; B 31 0 705 681 ; C 70 ; WX 640 ; N F ; B 31 0 654 681 ; C 71 ; WX 800 ; N G ; B 44 -17 778 698 ; C 72 ; WX 800 ; N H ; B 31 0 769 681 ; C 73 ; WX 340 ; N I ; B 31 0 301 681 ; C 74 ; WX 600 ; N J ; B -23 -17 567 681 ; C 75 ; WX 720 ; N K ; B 31 0 750 681 ; C 76 ; WX 600 ; N L ; B 31 0 629 681 ; C 77 ; WX 920 ; N M ; B 26 0 894 681 ; C 78 ; WX 740 ; N N ; B 26 0 722 681 ; C 79 ; WX 800 ; N O ; B 44 -17 758 698 ; C 80 ; WX 620 ; N P ; B 31 0 613 681 ; C 81 ; WX 820 ; N Q ; B 44 -189 769 698 ; C 82 ; WX 720 ; N R ; B 31 0 757 681 ; C 83 ; WX 660 ; N S ; B 28 -17 634 698 ; C 84 ; WX 620 ; N T ; B -37 0 656 681 ; C 85 ; WX 780 ; N U ; B 25 -17 754 681 ; C 86 ; WX 700 ; N V ; B -30 0 725 681 ; C 87 ; WX 960 ; N W ; B -30 0 984 681 ; C 88 ; WX 720 ; N X ; B -30 0 755 681 ; C 89 ; WX 640 ; N Y ; B -30 0 666 681 ; C 90 ; WX 640 ; N Z ; B 10 0 656 681 ; C 91 ; WX 300 ; N bracketleft ; B 92 -136 258 717 ; C 92 ; WX 600 ; N backslash ; B 74 0 532 717 ; C 93 ; WX 300 ; N bracketright ; B 41 -136 207 717 ; C 94 ; WX 600 ; N asciicircum ; B 52 276 554 681 ; C 95 ; WX 500 ; N underscore ; B 0 -125 500 -75 ; C 96 ; WX 220 ; N quoteleft ; B 46 479 178 698 ; C 97 ; WX 580 ; N a ; B 35 -8 587 494 ; C 98 ; WX 620 ; N b ; B -2 -8 582 717 ; C 99 ; WX 520 ; N c ; B 37 -8 498 494 ; C 100 ; WX 620 ; N d ; B 37 -8 591 717 ; C 101 ; WX 520 ; N e ; B 37 -8 491 494 ; C 102 ; WX 320 ; N f ; B 20 0 414 734 ; L i fi ; L l fl ; C 103 ; WX 540 ; N g ; B 17 -243 542 567 ; C 104 ; WX 660 ; N h ; B 20 0 643 717 ; C 105 ; WX 300 ; N i ; B 20 0 288 654 ; C 106 ; WX 300 ; N j ; B -109 -251 214 654 ; C 107 ; WX 620 ; N k ; B 20 0 628 717 ; C 108 ; WX 300 ; N l ; B 20 0 286 717 ; C 109 ; WX 940 ; N m ; B 17 0 928 494 ; C 110 ; WX 660 ; N n ; B 20 0 649 494 ; C 111 ; WX 560 ; N o ; B 37 -8 526 494 ; C 112 ; WX 620 ; N p ; B 20 -228 583 494 ; C 113 ; WX 580 ; N q ; B 37 -228 589 494 ; C 114 ; WX 440 ; N r ; B 20 0 447 494 ; C 115 ; WX 520 ; N s ; B 40 -8 487 494 ; C 116 ; WX 380 ; N t ; B 20 -8 388 667 ; C 117 ; WX 680 ; N u ; B 20 -8 653 484 ; C 118 ; WX 520 ; N v ; B -23 0 534 484 ; C 119 ; WX 780 ; N w ; B -19 0 804 484 ; C 120 ; WX 560 ; N x ; B -16 0 576 484 ; C 121 ; WX 540 ; N y ; B -23 -236 549 484 ; C 122 ; WX 480 ; N z ; B 7 0 476 484 ; C 123 ; WX 280 ; N braceleft ; B 21 -136 260 717 ; C 124 ; WX 600 ; N bar ; B 264 -250 342 750 ; C 125 ; WX 280 ; N braceright ; B 21 -136 260 717 ; C 126 ; WX 600 ; N asciitilde ; B 52 173 556 352 ; C 161 ; WX 300 ; N exclamdown ; B 75 -214 219 494 ; C 162 ; WX 620 ; N cent ; B 116 20 511 651 ; C 163 ; WX 620 ; N sterling ; B 8 -17 631 698 ; C 164 ; WX 140 ; N fraction ; B -188 0 335 681 ; C 165 ; WX 620 ; N yen ; B -22 0 647 681 ; C 166 ; WX 620 ; N florin ; B -29 -155 633 749 ; C 167 ; WX 520 ; N section ; B 33 -178 486 698 ; C 168 ; WX 620 ; N currency ; B 58 89 563 591 ; C 169 ; WX 220 ; N quotesingle ; B 67 458 153 698 ; C 170 ; WX 400 ; N quotedblleft ; B 46 479 348 698 ; C 171 ; WX 360 ; N guillemotleft ; B 51 89 312 437 ; C 172 ; WX 240 ; N guilsinglleft ; B 51 89 189 437 ; C 173 ; WX 240 ; N guilsinglright ; B 51 89 189 437 ; C 174 ; WX 620 ; N fi ; B 20 0 608 734 ; C 175 ; WX 620 ; N fl ; B 20 0 606 734 ; C 177 ; WX 500 ; N endash ; B -15 232 515 292 ; C 178 ; WX 540 ; N dagger ; B 79 -156 455 698 ; C 179 ; WX 540 ; N daggerdbl ; B 79 -156 455 698 ; C 180 ; WX 320 ; N periodcentered ; B 92 196 220 327 ; C 182 ; WX 600 ; N paragraph ; B 14 0 577 681 ; C 183 ; WX 460 ; N bullet ; B 60 170 404 511 ; C 184 ; WX 220 ; N quotesinglbase ; B 46 -108 178 110 ; C 185 ; WX 400 ; N quotedblbase ; B 46 -108 348 110 ; C 186 ; WX 400 ; N quotedblright ; B 46 480 348 698 ; C 187 ; WX 360 ; N guillemotright ; B 51 89 312 437 ; C 188 ; WX 1000 ; N ellipsis ; B 101 -8 898 123 ; C 189 ; WX 1280 ; N perthousand ; B 22 -8 1266 698 ; C 191 ; WX 540 ; N questiondown ; B 23 -217 510 494 ; C 193 ; WX 340 ; N grave ; B 68 571 274 689 ; C 194 ; WX 340 ; N acute ; B 68 571 274 689 ; C 195 ; WX 420 ; N circumflex ; B 68 567 352 685 ; C 196 ; WX 440 ; N tilde ; B 68 572 375 661 ; C 197 ; WX 440 ; N macron ; B 68 587 364 635 ; C 198 ; WX 460 ; N breve ; B 68 568 396 687 ; C 199 ; WX 260 ; N dotaccent ; B 68 564 186 684 ; C 200 ; WX 420 ; N dieresis ; B 68 533 349 655 ; C 202 ; WX 320 ; N ring ; B 68 546 252 731 ; C 203 ; WX 320 ; N cedilla ; B 68 -200 257 0 ; C 205 ; WX 380 ; N hungarumlaut ; B 68 538 311 698 ; C 206 ; WX 320 ; N ogonek ; B 38 -153 258 0 ; C 207 ; WX 420 ; N caron ; B 68 554 352 672 ; C 208 ; WX 1000 ; N emdash ; B -15 232 1015 292 ; C 225 ; WX 1260 ; N AE ; B -36 0 1250 681 ; C 227 ; WX 420 ; N ordfeminine ; B 49 395 393 698 ; C 232 ; WX 600 ; N Lslash ; B 31 0 629 681 ; C 233 ; WX 800 ; N Oslash ; B 44 -53 758 733 ; C 234 ; WX 1240 ; N OE ; B 44 -17 1214 698 ; C 235 ; WX 420 ; N ordmasculine ; B 56 394 361 698 ; C 241 ; WX 860 ; N ae ; B 35 -8 832 494 ; C 245 ; WX 300 ; N dotlessi ; B 20 0 288 484 ; C 248 ; WX 320 ; N lslash ; B 20 0 291 717 ; C 249 ; WX 560 ; N oslash ; B 37 -40 526 534 ; C 250 ; WX 900 ; N oe ; B 37 -8 876 494 ; C 251 ; WX 660 ; N germandbls ; B -109 -110 614 698 ; C -1 ; WX 340 ; N Idieresis ; B 28 0 309 851 ; C -1 ; WX 520 ; N eacute ; B 37 -8 491 689 ; C -1 ; WX 580 ; N abreve ; B 35 -8 587 687 ; C -1 ; WX 680 ; N uhungarumlaut ; B 20 -8 653 698 ; C -1 ; WX 520 ; N ecaron ; B 37 -8 491 672 ; C -1 ; WX 640 ; N Ydieresis ; B -30 0 666 851 ; C -1 ; WX 600 ; N divide ; B 51 10 555 514 ; C -1 ; WX 640 ; N Yacute ; B -30 0 666 866 ; C -1 ; WX 680 ; N Acircumflex ; B -37 0 714 862 ; C -1 ; WX 580 ; N aacute ; B 35 -8 587 689 ; C -1 ; WX 780 ; N Ucircumflex ; B 25 -17 754 862 ; C -1 ; WX 540 ; N yacute ; B -23 -236 549 689 ; C -1 ; WX 520 ; N scommaaccent ; B 40 -251 487 494 ; C -1 ; WX 520 ; N ecircumflex ; B 37 -8 491 685 ; C -1 ; WX 780 ; N Uring ; B 25 -17 754 908 ; C -1 ; WX 780 ; N Udieresis ; B 25 -17 754 851 ; C -1 ; WX 580 ; N aogonek ; B 35 -153 588 494 ; C -1 ; WX 780 ; N Uacute ; B 25 -17 754 866 ; C -1 ; WX 680 ; N uogonek ; B 20 -153 653 484 ; C -1 ; WX 720 ; N Edieresis ; B 31 0 705 851 ; C -1 ; WX 800 ; N Dcroat ; B 31 0 752 681 ; C -1 ; WX 250 ; N commaaccent ; B 66 -251 185 -50 ; C -1 ; WX 740 ; N copyright ; B 24 -17 724 698 ; C -1 ; WX 720 ; N Emacron ; B 31 0 705 812 ; C -1 ; WX 520 ; N ccaron ; B 37 -8 498 672 ; C -1 ; WX 580 ; N aring ; B 35 -8 587 731 ; C -1 ; WX 740 ; N Ncommaaccent ; B 26 -251 722 681 ; C -1 ; WX 300 ; N lacute ; B 20 0 294 866 ; C -1 ; WX 580 ; N agrave ; B 35 -8 587 689 ; C -1 ; WX 620 ; N Tcommaaccent ; B -37 -251 656 681 ; C -1 ; WX 740 ; N Cacute ; B 44 -17 702 866 ; C -1 ; WX 580 ; N atilde ; B 35 -8 587 661 ; C -1 ; WX 720 ; N Edotaccent ; B 31 0 705 880 ; C -1 ; WX 520 ; N scaron ; B 40 -8 487 672 ; C -1 ; WX 520 ; N scedilla ; B 40 -200 487 494 ; C -1 ; WX 300 ; N iacute ; B 20 0 294 689 ; C -1 ; WX 471 ; N lozenge ; B 10 0 462 728 ; C -1 ; WX 720 ; N Rcaron ; B 31 0 757 849 ; C -1 ; WX 800 ; N Gcommaaccent ; B 44 -251 778 698 ; C -1 ; WX 680 ; N ucircumflex ; B 20 -8 653 685 ; C -1 ; WX 580 ; N acircumflex ; B 35 -8 587 685 ; C -1 ; WX 680 ; N Amacron ; B -37 0 714 812 ; C -1 ; WX 440 ; N rcaron ; B 20 0 447 672 ; C -1 ; WX 520 ; N ccedilla ; B 37 -200 498 494 ; C -1 ; WX 640 ; N Zdotaccent ; B 10 0 656 880 ; C -1 ; WX 620 ; N Thorn ; B 31 0 613 681 ; C -1 ; WX 800 ; N Omacron ; B 44 -17 758 812 ; C -1 ; WX 720 ; N Racute ; B 31 0 757 866 ; C -1 ; WX 660 ; N Sacute ; B 28 -17 634 866 ; C -1 ; WX 690 ; N dcaron ; B 37 -8 701 732 ; C -1 ; WX 780 ; N Umacron ; B 25 -17 754 812 ; C -1 ; WX 680 ; N uring ; B 20 -8 653 731 ; C -1 ; WX 372 ; N threesuperior ; B 12 269 360 698 ; C -1 ; WX 800 ; N Ograve ; B 44 -17 758 866 ; C -1 ; WX 680 ; N Agrave ; B -37 0 714 866 ; C -1 ; WX 680 ; N Abreve ; B -37 0 714 864 ; C -1 ; WX 600 ; N multiply ; B 51 9 555 513 ; C -1 ; WX 680 ; N uacute ; B 20 -8 653 689 ; C -1 ; WX 620 ; N Tcaron ; B -37 0 656 849 ; C -1 ; WX 476 ; N partialdiff ; B 34 -21 442 707 ; C -1 ; WX 540 ; N ydieresis ; B -23 -236 549 674 ; C -1 ; WX 740 ; N Nacute ; B 26 0 722 866 ; C -1 ; WX 300 ; N icircumflex ; B 8 0 292 685 ; C -1 ; WX 720 ; N Ecircumflex ; B 31 0 705 862 ; C -1 ; WX 580 ; N adieresis ; B 35 -8 587 674 ; C -1 ; WX 520 ; N edieresis ; B 37 -8 491 674 ; C -1 ; WX 520 ; N cacute ; B 37 -8 498 689 ; C -1 ; WX 660 ; N nacute ; B 20 0 649 689 ; C -1 ; WX 680 ; N umacron ; B 20 -8 653 635 ; C -1 ; WX 740 ; N Ncaron ; B 26 0 722 849 ; C -1 ; WX 340 ; N Iacute ; B 31 0 301 866 ; C -1 ; WX 600 ; N plusminus ; B 51 0 555 513 ; C -1 ; WX 600 ; N brokenbar ; B 264 -175 342 675 ; C -1 ; WX 740 ; N registered ; B 23 -17 723 698 ; C -1 ; WX 800 ; N Gbreve ; B 44 -17 778 864 ; C -1 ; WX 340 ; N Idotaccent ; B 31 0 301 880 ; C -1 ; WX 600 ; N summation ; B 15 -10 586 706 ; C -1 ; WX 720 ; N Egrave ; B 31 0 705 866 ; C -1 ; WX 440 ; N racute ; B 20 0 447 689 ; C -1 ; WX 560 ; N omacron ; B 37 -8 526 635 ; C -1 ; WX 640 ; N Zacute ; B 10 0 656 866 ; C -1 ; WX 640 ; N Zcaron ; B 10 0 656 849 ; C -1 ; WX 549 ; N greaterequal ; B 29 0 526 635 ; C -1 ; WX 800 ; N Eth ; B 31 0 752 681 ; C -1 ; WX 740 ; N Ccedilla ; B 44 -200 702 698 ; C -1 ; WX 300 ; N lcommaaccent ; B 20 -251 286 717 ; C -1 ; WX 380 ; N tcaron ; B 20 -8 388 747 ; C -1 ; WX 520 ; N eogonek ; B 37 -154 491 494 ; C -1 ; WX 780 ; N Uogonek ; B 25 -153 754 681 ; C -1 ; WX 680 ; N Aacute ; B -37 0 714 866 ; C -1 ; WX 680 ; N Adieresis ; B -37 0 714 851 ; C -1 ; WX 520 ; N egrave ; B 37 -8 491 689 ; C -1 ; WX 480 ; N zacute ; B 7 0 476 689 ; C -1 ; WX 300 ; N iogonek ; B 20 -153 289 654 ; C -1 ; WX 800 ; N Oacute ; B 44 -17 758 866 ; C -1 ; WX 560 ; N oacute ; B 37 -8 526 689 ; C -1 ; WX 580 ; N amacron ; B 35 -8 587 635 ; C -1 ; WX 520 ; N sacute ; B 40 -8 487 689 ; C -1 ; WX 300 ; N idieresis ; B 8 0 289 674 ; C -1 ; WX 800 ; N Ocircumflex ; B 44 -17 758 862 ; C -1 ; WX 780 ; N Ugrave ; B 25 -17 754 866 ; C -1 ; WX 614 ; N Delta ; B 6 0 608 688 ; C -1 ; WX 620 ; N thorn ; B 20 -228 583 717 ; C -1 ; WX 372 ; N twosuperior ; B 20 279 367 698 ; C -1 ; WX 800 ; N Odieresis ; B 44 -17 758 851 ; C -1 ; WX 680 ; N mu ; B 20 -251 653 484 ; C -1 ; WX 300 ; N igrave ; B 20 0 288 689 ; C -1 ; WX 560 ; N ohungarumlaut ; B 37 -8 526 698 ; C -1 ; WX 720 ; N Eogonek ; B 31 -153 705 681 ; C -1 ; WX 620 ; N dcroat ; B 37 -8 612 717 ; C -1 ; WX 930 ; N threequarters ; B 52 0 889 691 ; C -1 ; WX 660 ; N Scedilla ; B 28 -200 634 698 ; C -1 ; WX 372 ; N lcaron ; B 20 0 383 732 ; C -1 ; WX 720 ; N Kcommaaccent ; B 31 -251 750 681 ; C -1 ; WX 600 ; N Lacute ; B 31 0 629 866 ; C -1 ; WX 980 ; N trademark ; B 34 277 930 681 ; C -1 ; WX 520 ; N edotaccent ; B 37 -8 491 703 ; C -1 ; WX 340 ; N Igrave ; B 31 0 301 866 ; C -1 ; WX 340 ; N Imacron ; B 18 0 314 812 ; C -1 ; WX 600 ; N Lcaron ; B 31 0 629 707 ; C -1 ; WX 930 ; N onehalf ; B 80 0 885 681 ; C -1 ; WX 549 ; N lessequal ; B 29 0 526 635 ; C -1 ; WX 560 ; N ocircumflex ; B 37 -8 526 685 ; C -1 ; WX 660 ; N ntilde ; B 20 0 649 661 ; C -1 ; WX 780 ; N Uhungarumlaut ; B 25 -17 754 875 ; C -1 ; WX 720 ; N Eacute ; B 31 0 705 866 ; C -1 ; WX 520 ; N emacron ; B 37 -8 491 635 ; C -1 ; WX 540 ; N gbreve ; B 17 -243 542 687 ; C -1 ; WX 930 ; N onequarter ; B 80 0 869 681 ; C -1 ; WX 660 ; N Scaron ; B 28 -17 634 849 ; C -1 ; WX 660 ; N Scommaaccent ; B 28 -251 634 698 ; C -1 ; WX 800 ; N Ohungarumlaut ; B 44 -17 758 875 ; C -1 ; WX 400 ; N degree ; B 50 398 350 698 ; C -1 ; WX 560 ; N ograve ; B 37 -8 526 689 ; C -1 ; WX 740 ; N Ccaron ; B 44 -17 702 849 ; C -1 ; WX 680 ; N ugrave ; B 20 -8 653 689 ; C -1 ; WX 453 ; N radical ; B -4 -80 458 762 ; C -1 ; WX 800 ; N Dcaron ; B 31 0 752 849 ; C -1 ; WX 440 ; N rcommaaccent ; B 20 -251 447 494 ; C -1 ; WX 740 ; N Ntilde ; B 26 0 722 838 ; C -1 ; WX 560 ; N otilde ; B 37 -8 526 661 ; C -1 ; WX 720 ; N Rcommaaccent ; B 31 -251 757 681 ; C -1 ; WX 600 ; N Lcommaaccent ; B 31 -251 629 681 ; C -1 ; WX 680 ; N Atilde ; B -37 0 714 838 ; C -1 ; WX 680 ; N Aogonek ; B -37 -153 718 681 ; C -1 ; WX 680 ; N Aring ; B -37 0 714 908 ; C -1 ; WX 800 ; N Otilde ; B 44 -17 758 838 ; C -1 ; WX 480 ; N zdotaccent ; B 7 0 476 703 ; C -1 ; WX 720 ; N Ecaron ; B 31 0 705 849 ; C -1 ; WX 340 ; N Iogonek ; B 31 -153 302 681 ; C -1 ; WX 620 ; N kcommaaccent ; B 20 -251 628 717 ; C -1 ; WX 600 ; N minus ; B 51 224 555 300 ; C -1 ; WX 340 ; N Icircumflex ; B 28 0 312 862 ; C -1 ; WX 660 ; N ncaron ; B 20 0 649 672 ; C -1 ; WX 380 ; N tcommaaccent ; B 20 -251 388 667 ; C -1 ; WX 600 ; N logicalnot ; B 51 128 555 398 ; C -1 ; WX 560 ; N odieresis ; B 37 -8 526 674 ; C -1 ; WX 680 ; N udieresis ; B 20 -8 653 674 ; C -1 ; WX 549 ; N notequal ; B 15 -16 540 529 ; C -1 ; WX 540 ; N gcommaaccent ; B 17 -243 542 765 ; C -1 ; WX 560 ; N eth ; B 37 -8 526 734 ; C -1 ; WX 480 ; N zcaron ; B 7 0 476 672 ; C -1 ; WX 660 ; N ncommaaccent ; B 20 -251 649 494 ; C -1 ; WX 372 ; N onesuperior ; B 80 279 302 688 ; C -1 ; WX 300 ; N imacron ; B -2 0 294 635 ; EndCharMetrics StartKernData StartKernPairs 882 KPX A T 1 KPX A Tcaron 1 KPX A Tcommaaccent 1 KPX A V -56 KPX A W -40 KPX A Y -35 KPX A Yacute -35 KPX A Ydieresis -35 KPX A v 7 KPX A w 4 KPX A y 32 KPX A yacute 32 KPX A ydieresis 32 KPX Aacute T 1 KPX Aacute Tcaron 1 KPX Aacute Tcommaaccent 1 KPX Aacute V -56 KPX Aacute W -40 KPX Aacute Y -35 KPX Aacute Yacute -35 KPX Aacute Ydieresis -35 KPX Aacute v 7 KPX Aacute w 4 KPX Aacute y 32 KPX Aacute yacute 32 KPX Aacute ydieresis 32 KPX Abreve T 1 KPX Abreve Tcaron 1 KPX Abreve Tcommaaccent 1 KPX Abreve V -56 KPX Abreve W -40 KPX Abreve Y -35 KPX Abreve Yacute -35 KPX Abreve Ydieresis -35 KPX Abreve v 7 KPX Abreve w 4 KPX Abreve y 32 KPX Abreve yacute 32 KPX Abreve ydieresis 32 KPX Acircumflex T 1 KPX Acircumflex Tcaron 1 KPX Acircumflex Tcommaaccent 1 KPX Acircumflex V -56 KPX Acircumflex W -40 KPX Acircumflex Y -35 KPX Acircumflex Yacute -35 KPX Acircumflex Ydieresis -35 KPX Acircumflex v 7 KPX Acircumflex w 4 KPX Acircumflex y 32 KPX Acircumflex yacute 32 KPX Acircumflex ydieresis 32 KPX Adieresis T 1 KPX Adieresis Tcaron 1 KPX Adieresis Tcommaaccent 1 KPX Adieresis V -56 KPX Adieresis W -40 KPX Adieresis Y -35 KPX Adieresis Yacute -35 KPX Adieresis Ydieresis -35 KPX Adieresis v 7 KPX Adieresis w 4 KPX Adieresis y 32 KPX Adieresis yacute 32 KPX Adieresis ydieresis 32 KPX Agrave T 1 KPX Agrave Tcaron 1 KPX Agrave Tcommaaccent 1 KPX Agrave V -56 KPX Agrave W -40 KPX Agrave Y -35 KPX Agrave Yacute -35 KPX Agrave Ydieresis -35 KPX Agrave v 7 KPX Agrave w 4 KPX Agrave y 32 KPX Agrave yacute 32 KPX Agrave ydieresis 32 KPX Amacron T 1 KPX Amacron Tcaron 1 KPX Amacron Tcommaaccent 1 KPX Amacron V -56 KPX Amacron W -40 KPX Amacron Y -35 KPX Amacron Yacute -35 KPX Amacron Ydieresis -35 KPX Amacron v 7 KPX Amacron w 4 KPX Amacron y 32 KPX Amacron yacute 32 KPX Amacron ydieresis 32 KPX Aogonek T 1 KPX Aogonek Tcaron 1 KPX Aogonek Tcommaaccent 1 KPX Aogonek V -56 KPX Aogonek W -40 KPX Aogonek Y -35 KPX Aogonek Yacute -35 KPX Aogonek Ydieresis -35 KPX Aogonek v 7 KPX Aogonek w 4 KPX Aogonek y 32 KPX Aogonek yacute 32 KPX Aogonek ydieresis 32 KPX Aring T 1 KPX Aring Tcaron 1 KPX Aring Tcommaaccent 1 KPX Aring V -56 KPX Aring W -40 KPX Aring Y -35 KPX Aring Yacute -35 KPX Aring Ydieresis -35 KPX Aring v 7 KPX Aring w 4 KPX Aring y 32 KPX Aring yacute 32 KPX Aring ydieresis 32 KPX Atilde T 1 KPX Atilde Tcaron 1 KPX Atilde Tcommaaccent 1 KPX Atilde V -56 KPX Atilde W -40 KPX Atilde Y -35 KPX Atilde Yacute -35 KPX Atilde Ydieresis -35 KPX Atilde v 7 KPX Atilde w 4 KPX Atilde y 32 KPX Atilde yacute 32 KPX Atilde ydieresis 32 KPX F A -21 KPX F Aacute -21 KPX F Abreve -21 KPX F Acircumflex -21 KPX F Adieresis -21 KPX F Agrave -21 KPX F Amacron -21 KPX F Aogonek -21 KPX F Aring -21 KPX F Atilde -21 KPX F comma -41 KPX F period -46 KPX L T 28 KPX L Tcaron 28 KPX L Tcommaaccent 28 KPX L V -4 KPX L W 1 KPX L Y 13 KPX L Yacute 13 KPX L Ydieresis 13 KPX L y 79 KPX L yacute 79 KPX L ydieresis 79 KPX Lacute T 28 KPX Lacute Tcaron 28 KPX Lacute Tcommaaccent 28 KPX Lacute V -4 KPX Lacute W 1 KPX Lacute Y 13 KPX Lacute Yacute 13 KPX Lacute Ydieresis 13 KPX Lacute y 79 KPX Lacute yacute 79 KPX Lacute ydieresis 79 KPX Lcaron T 28 KPX Lcaron Tcaron 28 KPX Lcaron Tcommaaccent 28 KPX Lcaron V -4 KPX Lcaron W 1 KPX Lcaron Y 13 KPX Lcaron Yacute 13 KPX Lcaron Ydieresis 13 KPX Lcaron y 79 KPX Lcaron yacute 79 KPX Lcaron ydieresis 79 KPX Lcommaaccent T 28 KPX Lcommaaccent Tcaron 28 KPX Lcommaaccent Tcommaaccent 28 KPX Lcommaaccent V -4 KPX Lcommaaccent W 1 KPX Lcommaaccent Y 13 KPX Lcommaaccent Yacute 13 KPX Lcommaaccent Ydieresis 13 KPX Lcommaaccent y 79 KPX Lcommaaccent yacute 79 KPX Lcommaaccent ydieresis 79 KPX Lslash T 28 KPX Lslash Tcaron 28 KPX Lslash Tcommaaccent 28 KPX Lslash V -4 KPX Lslash W 1 KPX Lslash Y 13 KPX Lslash Yacute 13 KPX Lslash Ydieresis 13 KPX Lslash y 79 KPX Lslash yacute 79 KPX Lslash ydieresis 79 KPX P A -8 KPX P Aacute -8 KPX P Abreve -8 KPX P Acircumflex -8 KPX P Adieresis -8 KPX P Agrave -8 KPX P Amacron -8 KPX P Aogonek -8 KPX P Aring -8 KPX P Atilde -8 KPX P comma -55 KPX P period -60 KPX R T 71 KPX R Tcaron 71 KPX R Tcommaaccent 71 KPX R V 8 KPX R W 13 KPX R Y 26 KPX R Yacute 26 KPX R Ydieresis 26 KPX R y 59 KPX R yacute 59 KPX R ydieresis 59 KPX Racute T 71 KPX Racute Tcaron 71 KPX Racute Tcommaaccent 71 KPX Racute V 8 KPX Racute W 13 KPX Racute Y 26 KPX Racute Yacute 26 KPX Racute Ydieresis 26 KPX Racute y 59 KPX Racute yacute 59 KPX Racute ydieresis 59 KPX Rcaron T 71 KPX Rcaron Tcaron 71 KPX Rcaron Tcommaaccent 71 KPX Rcaron V 8 KPX Rcaron W 13 KPX Rcaron Y 26 KPX Rcaron Yacute 26 KPX Rcaron Ydieresis 26 KPX Rcaron y 59 KPX Rcaron yacute 59 KPX Rcaron ydieresis 59 KPX Rcommaaccent T 71 KPX Rcommaaccent Tcaron 71 KPX Rcommaaccent Tcommaaccent 71 KPX Rcommaaccent V 8 KPX Rcommaaccent W 13 KPX Rcommaaccent Y 26 KPX Rcommaaccent Yacute 26 KPX Rcommaaccent Ydieresis 26 KPX Rcommaaccent y 59 KPX Rcommaaccent yacute 59 KPX Rcommaaccent ydieresis 59 KPX T A 1 KPX T Aacute 1 KPX T Abreve 1 KPX T Acircumflex 1 KPX T Adieresis 1 KPX T Agrave 1 KPX T Amacron 1 KPX T Aogonek 1 KPX T Aring 1 KPX T Atilde 1 KPX T a 17 KPX T aacute 17 KPX T abreve 17 KPX T acircumflex 17 KPX T adieresis 17 KPX T agrave 17 KPX T amacron 17 KPX T aogonek 17 KPX T aring 17 KPX T atilde 17 KPX T c 14 KPX T cacute 14 KPX T ccaron 14 KPX T ccedilla 14 KPX T comma -28 KPX T e 13 KPX T eacute 13 KPX T ecaron 13 KPX T ecircumflex 13 KPX T edieresis 13 KPX T edotaccent 13 KPX T egrave 13 KPX T emacron 13 KPX T eogonek 13 KPX T hyphen 90 KPX T i 42 KPX T iacute 42 KPX T icircumflex 42 KPX T idieresis 42 KPX T igrave 42 KPX T imacron 42 KPX T iogonek 42 KPX T o 15 KPX T oacute 15 KPX T ocircumflex 15 KPX T odieresis 15 KPX T ograve 15 KPX T ohungarumlaut 15 KPX T omacron 15 KPX T oslash 15 KPX T otilde 15 KPX T period -33 KPX T r 38 KPX T racute 38 KPX T rcaron 38 KPX T rcommaaccent 38 KPX T s 16 KPX T sacute 16 KPX T scaron 16 KPX T scedilla 16 KPX T scommaaccent 16 KPX Tcaron A 1 KPX Tcaron Aacute 1 KPX Tcaron Abreve 1 KPX Tcaron Acircumflex 1 KPX Tcaron Adieresis 1 KPX Tcaron Agrave 1 KPX Tcaron Amacron 1 KPX Tcaron Aogonek 1 KPX Tcaron Aring 1 KPX Tcaron Atilde 1 KPX Tcaron a 17 KPX Tcaron aacute 17 KPX Tcaron abreve 17 KPX Tcaron acircumflex 17 KPX Tcaron adieresis 17 KPX Tcaron agrave 17 KPX Tcaron amacron 17 KPX Tcaron aogonek 17 KPX Tcaron aring 17 KPX Tcaron atilde 17 KPX Tcaron c 14 KPX Tcaron cacute 14 KPX Tcaron ccaron 14 KPX Tcaron ccedilla 14 KPX Tcaron comma -28 KPX Tcaron e 13 KPX Tcaron eacute 13 KPX Tcaron ecaron 13 KPX Tcaron ecircumflex 13 KPX Tcaron edieresis 13 KPX Tcaron edotaccent 13 KPX Tcaron egrave 13 KPX Tcaron emacron 13 KPX Tcaron eogonek 13 KPX Tcaron hyphen 90 KPX Tcaron i 42 KPX Tcaron iacute 42 KPX Tcaron icircumflex 42 KPX Tcaron idieresis 42 KPX Tcaron igrave 42 KPX Tcaron imacron 42 KPX Tcaron iogonek 42 KPX Tcaron o 15 KPX Tcaron oacute 15 KPX Tcaron ocircumflex 15 KPX Tcaron odieresis 15 KPX Tcaron ograve 15 KPX Tcaron ohungarumlaut 15 KPX Tcaron omacron 15 KPX Tcaron oslash 15 KPX Tcaron otilde 15 KPX Tcaron period -33 KPX Tcaron r 38 KPX Tcaron racute 38 KPX Tcaron rcaron 38 KPX Tcaron rcommaaccent 38 KPX Tcaron s 16 KPX Tcaron sacute 16 KPX Tcaron scaron 16 KPX Tcaron scedilla 16 KPX Tcaron scommaaccent 16 KPX Tcommaaccent A 1 KPX Tcommaaccent Aacute 1 KPX Tcommaaccent Abreve 1 KPX Tcommaaccent Acircumflex 1 KPX Tcommaaccent Adieresis 1 KPX Tcommaaccent Agrave 1 KPX Tcommaaccent Amacron 1 KPX Tcommaaccent Aogonek 1 KPX Tcommaaccent Aring 1 KPX Tcommaaccent Atilde 1 KPX Tcommaaccent a 17 KPX Tcommaaccent aacute 17 KPX Tcommaaccent abreve 17 KPX Tcommaaccent acircumflex 17 KPX Tcommaaccent adieresis 17 KPX Tcommaaccent agrave 17 KPX Tcommaaccent amacron 17 KPX Tcommaaccent aogonek 17 KPX Tcommaaccent aring 17 KPX Tcommaaccent atilde 17 KPX Tcommaaccent c 14 KPX Tcommaaccent cacute 14 KPX Tcommaaccent ccaron 14 KPX Tcommaaccent ccedilla 14 KPX Tcommaaccent comma -28 KPX Tcommaaccent e 13 KPX Tcommaaccent eacute 13 KPX Tcommaaccent ecaron 13 KPX Tcommaaccent ecircumflex 13 KPX Tcommaaccent edieresis 13 KPX Tcommaaccent edotaccent 13 KPX Tcommaaccent egrave 13 KPX Tcommaaccent emacron 13 KPX Tcommaaccent eogonek 13 KPX Tcommaaccent hyphen 90 KPX Tcommaaccent i 42 KPX Tcommaaccent iacute 42 KPX Tcommaaccent icircumflex 42 KPX Tcommaaccent idieresis 42 KPX Tcommaaccent igrave 42 KPX Tcommaaccent imacron 42 KPX Tcommaaccent iogonek 42 KPX Tcommaaccent o 15 KPX Tcommaaccent oacute 15 KPX Tcommaaccent ocircumflex 15 KPX Tcommaaccent odieresis 15 KPX Tcommaaccent ograve 15 KPX Tcommaaccent ohungarumlaut 15 KPX Tcommaaccent omacron 15 KPX Tcommaaccent oslash 15 KPX Tcommaaccent otilde 15 KPX Tcommaaccent period -33 KPX Tcommaaccent r 38 KPX Tcommaaccent racute 38 KPX Tcommaaccent rcaron 38 KPX Tcommaaccent rcommaaccent 38 KPX Tcommaaccent s 16 KPX Tcommaaccent sacute 16 KPX Tcommaaccent scaron 16 KPX Tcommaaccent scedilla 16 KPX Tcommaaccent scommaaccent 16 KPX V A -66 KPX V Aacute -66 KPX V Abreve -66 KPX V Acircumflex -66 KPX V Adieresis -66 KPX V Agrave -66 KPX V Amacron -66 KPX V Aogonek -66 KPX V Aring -66 KPX V Atilde -66 KPX V a -69 KPX V aacute -69 KPX V abreve -69 KPX V acircumflex -69 KPX V adieresis -69 KPX V agrave -69 KPX V amacron -69 KPX V aogonek -69 KPX V aring -69 KPX V atilde -69 KPX V comma -34 KPX V e -72 KPX V eacute -72 KPX V ecaron -72 KPX V ecircumflex -72 KPX V edieresis -72 KPX V edotaccent -72 KPX V egrave -72 KPX V emacron -72 KPX V eogonek -72 KPX V hyphen 11 KPX V i -20 KPX V iacute -20 KPX V iogonek -20 KPX V o -71 KPX V oacute -71 KPX V ocircumflex -71 KPX V odieresis -71 KPX V ograve -71 KPX V ohungarumlaut -71 KPX V omacron -71 KPX V oslash -71 KPX V otilde -71 KPX V period -40 KPX V r -41 KPX V racute -41 KPX V rcaron -41 KPX V rcommaaccent -41 KPX V u -38 KPX V uacute -38 KPX V ucircumflex -38 KPX V udieresis -38 KPX V ugrave -38 KPX V uhungarumlaut -38 KPX V umacron -38 KPX V uogonek -38 KPX V uring -38 KPX V y 15 KPX V yacute 15 KPX V ydieresis 15 KPX W A -64 KPX W Aacute -64 KPX W Abreve -64 KPX W Acircumflex -64 KPX W Adieresis -64 KPX W Agrave -64 KPX W Amacron -64 KPX W Aogonek -64 KPX W Aring -64 KPX W Atilde -64 KPX W a -66 KPX W aacute -66 KPX W abreve -66 KPX W acircumflex -66 KPX W adieresis -66 KPX W agrave -66 KPX W amacron -66 KPX W aogonek -66 KPX W aring -66 KPX W atilde -66 KPX W comma -34 KPX W e -69 KPX W eacute -69 KPX W ecaron -69 KPX W ecircumflex -69 KPX W edieresis -69 KPX W edotaccent -69 KPX W egrave -69 KPX W emacron -69 KPX W eogonek -69 KPX W hyphen 11 KPX W i -20 KPX W iacute -20 KPX W iogonek -20 KPX W o -68 KPX W oacute -68 KPX W ocircumflex -68 KPX W odieresis -68 KPX W ograve -68 KPX W ohungarumlaut -68 KPX W omacron -68 KPX W oslash -68 KPX W otilde -68 KPX W period -40 KPX W r -41 KPX W racute -41 KPX W rcaron -41 KPX W rcommaaccent -41 KPX W u -38 KPX W uacute -38 KPX W ucircumflex -38 KPX W udieresis -38 KPX W ugrave -38 KPX W uhungarumlaut -38 KPX W umacron -38 KPX W uogonek -38 KPX W uring -38 KPX W y 15 KPX W yacute 15 KPX W ydieresis 15 KPX Y A -53 KPX Y Aacute -53 KPX Y Abreve -53 KPX Y Acircumflex -53 KPX Y Adieresis -53 KPX Y Agrave -53 KPX Y Amacron -53 KPX Y Aogonek -53 KPX Y Aring -53 KPX Y Atilde -53 KPX Y a -54 KPX Y aacute -54 KPX Y abreve -54 KPX Y acircumflex -54 KPX Y adieresis -54 KPX Y agrave -54 KPX Y amacron -54 KPX Y aogonek -54 KPX Y aring -54 KPX Y atilde -54 KPX Y comma -34 KPX Y e -58 KPX Y eacute -58 KPX Y ecaron -58 KPX Y ecircumflex -58 KPX Y edieresis -58 KPX Y edotaccent -58 KPX Y egrave -58 KPX Y emacron -58 KPX Y eogonek -58 KPX Y hyphen 11 KPX Y i -37 KPX Y iacute -37 KPX Y icircumflex -37 KPX Y iogonek -37 KPX Y o -57 KPX Y oacute -57 KPX Y ocircumflex -57 KPX Y odieresis -57 KPX Y ograve -57 KPX Y ohungarumlaut -57 KPX Y omacron -57 KPX Y oslash -57 KPX Y otilde -57 KPX Y p -31 KPX Y period -40 KPX Y q -55 KPX Y u -38 KPX Y uacute -38 KPX Y ucircumflex -38 KPX Y udieresis -38 KPX Y ugrave -38 KPX Y uhungarumlaut -38 KPX Y umacron -38 KPX Y uogonek -38 KPX Y uring -38 KPX Y v 15 KPX Yacute A -53 KPX Yacute Aacute -53 KPX Yacute Abreve -53 KPX Yacute Acircumflex -53 KPX Yacute Adieresis -53 KPX Yacute Agrave -53 KPX Yacute Amacron -53 KPX Yacute Aogonek -53 KPX Yacute Aring -53 KPX Yacute Atilde -53 KPX Yacute a -54 KPX Yacute aacute -54 KPX Yacute abreve -54 KPX Yacute acircumflex -54 KPX Yacute adieresis -54 KPX Yacute agrave -54 KPX Yacute amacron -54 KPX Yacute aogonek -54 KPX Yacute aring -54 KPX Yacute atilde -54 KPX Yacute comma -34 KPX Yacute e -58 KPX Yacute eacute -58 KPX Yacute ecaron -58 KPX Yacute ecircumflex -58 KPX Yacute edieresis -58 KPX Yacute edotaccent -58 KPX Yacute egrave -58 KPX Yacute emacron -58 KPX Yacute eogonek -58 KPX Yacute hyphen 11 KPX Yacute i -37 KPX Yacute iacute -37 KPX Yacute iogonek -37 KPX Yacute o -57 KPX Yacute oacute -57 KPX Yacute ocircumflex -57 KPX Yacute odieresis -57 KPX Yacute ograve -57 KPX Yacute ohungarumlaut -57 KPX Yacute omacron -57 KPX Yacute oslash -57 KPX Yacute otilde -57 KPX Yacute p -31 KPX Yacute period -40 KPX Yacute q -55 KPX Yacute u -38 KPX Yacute uacute -38 KPX Yacute ucircumflex -38 KPX Yacute udieresis -38 KPX Yacute ugrave -38 KPX Yacute uhungarumlaut -38 KPX Yacute umacron -38 KPX Yacute uogonek -38 KPX Yacute uring -38 KPX Yacute v 15 KPX Ydieresis A -53 KPX Ydieresis Aacute -53 KPX Ydieresis Abreve -53 KPX Ydieresis Acircumflex -53 KPX Ydieresis Adieresis -53 KPX Ydieresis Agrave -53 KPX Ydieresis Amacron -53 KPX Ydieresis Aogonek -53 KPX Ydieresis Aring -53 KPX Ydieresis Atilde -53 KPX Ydieresis a -54 KPX Ydieresis aacute -54 KPX Ydieresis abreve -54 KPX Ydieresis acircumflex -54 KPX Ydieresis adieresis -54 KPX Ydieresis agrave -54 KPX Ydieresis amacron -54 KPX Ydieresis aogonek -54 KPX Ydieresis aring -54 KPX Ydieresis atilde -54 KPX Ydieresis comma -34 KPX Ydieresis e -58 KPX Ydieresis eacute -58 KPX Ydieresis ecaron -58 KPX Ydieresis ecircumflex -58 KPX Ydieresis edieresis -58 KPX Ydieresis edotaccent -58 KPX Ydieresis egrave -58 KPX Ydieresis emacron -58 KPX Ydieresis eogonek -58 KPX Ydieresis hyphen 11 KPX Ydieresis i -37 KPX Ydieresis iacute -37 KPX Ydieresis iogonek -37 KPX Ydieresis o -57 KPX Ydieresis oacute -57 KPX Ydieresis ocircumflex -57 KPX Ydieresis odieresis -57 KPX Ydieresis ograve -57 KPX Ydieresis ohungarumlaut -57 KPX Ydieresis omacron -57 KPX Ydieresis oslash -57 KPX Ydieresis otilde -57 KPX Ydieresis p -31 KPX Ydieresis period -40 KPX Ydieresis q -55 KPX Ydieresis u -38 KPX Ydieresis uacute -38 KPX Ydieresis ucircumflex -38 KPX Ydieresis udieresis -38 KPX Ydieresis ugrave -38 KPX Ydieresis uhungarumlaut -38 KPX Ydieresis umacron -38 KPX Ydieresis uogonek -38 KPX Ydieresis uring -38 KPX Ydieresis v 15 KPX f f 29 KPX r c 7 KPX r cacute 7 KPX r ccaron 7 KPX r ccedilla 7 KPX r comma -58 KPX r d 7 KPX r dcroat 7 KPX r e 7 KPX r eacute 7 KPX r ecaron 7 KPX r ecircumflex 7 KPX r edieresis 7 KPX r edotaccent 7 KPX r egrave 7 KPX r emacron 7 KPX r eogonek 7 KPX r f 33 KPX r g -4 KPX r gbreve -4 KPX r gcommaaccent -4 KPX r h -21 KPX r hyphen 70 KPX r m 31 KPX r n 31 KPX r nacute 31 KPX r ncaron 31 KPX r ncommaaccent 31 KPX r ntilde 31 KPX r o 8 KPX r oacute 8 KPX r ocircumflex 8 KPX r odieresis 8 KPX r ograve 8 KPX r ohungarumlaut 8 KPX r omacron 8 KPX r oslash 8 KPX r otilde 8 KPX r period -64 KPX r q 9 KPX racute c 7 KPX racute cacute 7 KPX racute ccaron 7 KPX racute ccedilla 7 KPX racute comma -58 KPX racute d 7 KPX racute dcroat 7 KPX racute e 7 KPX racute eacute 7 KPX racute ecaron 7 KPX racute ecircumflex 7 KPX racute edieresis 7 KPX racute edotaccent 7 KPX racute egrave 7 KPX racute emacron 7 KPX racute eogonek 7 KPX racute f 33 KPX racute g -4 KPX racute gbreve -4 KPX racute gcommaaccent -4 KPX racute h -21 KPX racute hyphen 70 KPX racute m 31 KPX racute n 31 KPX racute nacute 31 KPX racute ncaron 31 KPX racute ncommaaccent 31 KPX racute ntilde 31 KPX racute o 8 KPX racute oacute 8 KPX racute ocircumflex 8 KPX racute odieresis 8 KPX racute ograve 8 KPX racute ohungarumlaut 8 KPX racute omacron 8 KPX racute oslash 8 KPX racute otilde 8 KPX racute period -64 KPX racute q 9 KPX rcaron c 7 KPX rcaron cacute 7 KPX rcaron ccaron 7 KPX rcaron ccedilla 7 KPX rcaron comma -58 KPX rcaron d 7 KPX rcaron dcroat 7 KPX rcaron e 7 KPX rcaron eacute 7 KPX rcaron ecaron 7 KPX rcaron ecircumflex 7 KPX rcaron edieresis 7 KPX rcaron edotaccent 7 KPX rcaron egrave 7 KPX rcaron emacron 7 KPX rcaron eogonek 7 KPX rcaron f 33 KPX rcaron g -4 KPX rcaron gbreve -4 KPX rcaron gcommaaccent -4 KPX rcaron h -21 KPX rcaron hyphen 70 KPX rcaron m 31 KPX rcaron n 31 KPX rcaron nacute 31 KPX rcaron ncaron 31 KPX rcaron ncommaaccent 31 KPX rcaron ntilde 31 KPX rcaron o 8 KPX rcaron oacute 8 KPX rcaron ocircumflex 8 KPX rcaron odieresis 8 KPX rcaron ograve 8 KPX rcaron ohungarumlaut 8 KPX rcaron omacron 8 KPX rcaron oslash 8 KPX rcaron otilde 8 KPX rcaron period -64 KPX rcaron q 9 KPX rcommaaccent c 7 KPX rcommaaccent cacute 7 KPX rcommaaccent ccaron 7 KPX rcommaaccent ccedilla 7 KPX rcommaaccent comma -58 KPX rcommaaccent d 7 KPX rcommaaccent dcroat 7 KPX rcommaaccent e 7 KPX rcommaaccent eacute 7 KPX rcommaaccent ecaron 7 KPX rcommaaccent ecircumflex 7 KPX rcommaaccent edieresis 7 KPX rcommaaccent edotaccent 7 KPX rcommaaccent egrave 7 KPX rcommaaccent emacron 7 KPX rcommaaccent eogonek 7 KPX rcommaaccent f 33 KPX rcommaaccent g -4 KPX rcommaaccent gbreve -4 KPX rcommaaccent gcommaaccent -4 KPX rcommaaccent h -21 KPX rcommaaccent hyphen 70 KPX rcommaaccent m 31 KPX rcommaaccent n 31 KPX rcommaaccent nacute 31 KPX rcommaaccent ncaron 31 KPX rcommaaccent ncommaaccent 31 KPX rcommaaccent ntilde 31 KPX rcommaaccent o 8 KPX rcommaaccent oacute 8 KPX rcommaaccent ocircumflex 8 KPX rcommaaccent odieresis 8 KPX rcommaaccent ograve 8 KPX rcommaaccent ohungarumlaut 8 KPX rcommaaccent omacron 8 KPX rcommaaccent oslash 8 KPX rcommaaccent otilde 8 KPX rcommaaccent period -64 KPX rcommaaccent q 9 EndKernPairs EndKernData EndFontMetrics gle-graphics-4.2.4c/src/fonts/Adobe-Core35_AFMs-314/ITCBookman-DemiItalic.afm0000664000000000000000000010364111405446017024520 0ustar rootrootStartFontMetrics 4.1 Comment Copyright (c) 1985, 1987, 1989, 1992, 1997 Adobe Systems Incorporated. All Rights Reserved. Comment Creation Date: Thu May 1 13:56:49 1997 Comment UniqueID 43080 Comment VMusage 43194 54219 FontName Bookman-DemiItalic FullName ITC Bookman Demi Italic FamilyName ITC Bookman Weight Demi ItalicAngle -10 IsFixedPitch false FontBBox -231 -250 1333 941 UnderlinePosition -100 UnderlineThickness 50 Version 002.000 Notice Copyright (c) 1985, 1987, 1989, 1992, 1997 Adobe Systems Incorporated. All Rights Reserved.ITC Bookman is a registered trademark of International Typeface Corporation. EncodingScheme AdobeStandardEncoding CapHeight 681 XHeight 515 Ascender 717 Descender -228 StdHW 82 StdVW 172 StartCharMetrics 314 C 32 ; WX 340 ; N space ; B 0 0 0 0 ; C 33 ; WX 320 ; N exclam ; B 86 -8 366 698 ; C 34 ; WX 380 ; N quotedbl ; B 140 371 507 697 ; C 35 ; WX 680 ; N numbersign ; B 157 0 649 681 ; C 36 ; WX 680 ; N dollar ; B 45 -164 697 790 ; C 37 ; WX 880 ; N percent ; B 106 -17 899 698 ; C 38 ; WX 980 ; N ampersand ; B 48 -17 1016 698 ; C 39 ; WX 320 ; N quoteright ; B 171 420 349 698 ; C 40 ; WX 260 ; N parenleft ; B 31 -134 388 741 ; C 41 ; WX 260 ; N parenright ; B -35 -134 322 741 ; C 42 ; WX 460 ; N asterisk ; B 126 346 508 698 ; C 43 ; WX 600 ; N plus ; B 91 9 595 514 ; C 44 ; WX 340 ; N comma ; B 100 -124 298 185 ; C 45 ; WX 280 ; N hyphen ; B 59 218 319 313 ; C 46 ; WX 340 ; N period ; B 106 -8 296 177 ; C 47 ; WX 360 ; N slash ; B 9 -106 502 742 ; C 48 ; WX 680 ; N zero ; B 87 -17 703 698 ; C 49 ; WX 680 ; N one ; B 123 0 565 681 ; C 50 ; WX 680 ; N two ; B 67 0 674 698 ; C 51 ; WX 680 ; N three ; B 72 -17 683 698 ; C 52 ; WX 680 ; N four ; B 63 0 708 681 ; C 53 ; WX 680 ; N five ; B 78 -17 669 681 ; C 54 ; WX 680 ; N six ; B 88 -17 704 698 ; C 55 ; WX 680 ; N seven ; B 123 0 739 681 ; C 56 ; WX 680 ; N eight ; B 68 -17 686 698 ; C 57 ; WX 680 ; N nine ; B 71 -17 712 698 ; C 58 ; WX 340 ; N colon ; B 106 -8 356 515 ; C 59 ; WX 340 ; N semicolon ; B 100 -124 352 515 ; C 60 ; WX 620 ; N less ; B 79 -9 588 540 ; C 61 ; WX 600 ; N equal ; B 91 109 595 421 ; C 62 ; WX 620 ; N greater ; B 89 -9 598 540 ; C 63 ; WX 620 ; N question ; B 145 -8 668 698 ; C 64 ; WX 780 ; N at ; B 80 -17 790 698 ; C 65 ; WX 720 ; N A ; B -27 0 769 681 ; C 66 ; WX 720 ; N B ; B 14 0 762 681 ; C 67 ; WX 700 ; N C ; B 78 -17 754 698 ; C 68 ; WX 760 ; N D ; B 14 0 805 681 ; C 69 ; WX 720 ; N E ; B 14 0 777 681 ; C 70 ; WX 660 ; N F ; B 14 0 763 681 ; C 71 ; WX 760 ; N G ; B 77 -17 828 698 ; C 72 ; WX 800 ; N H ; B 14 0 910 681 ; C 73 ; WX 380 ; N I ; B 14 0 485 681 ; C 74 ; WX 620 ; N J ; B 8 -17 721 681 ; C 75 ; WX 780 ; N K ; B 14 0 879 681 ; C 76 ; WX 640 ; N L ; B 14 0 725 681 ; C 77 ; WX 860 ; N M ; B 14 0 970 681 ; C 78 ; WX 740 ; N N ; B 14 0 845 681 ; C 79 ; WX 760 ; N O ; B 78 -17 806 698 ; C 80 ; WX 640 ; N P ; B -6 0 724 681 ; C 81 ; WX 760 ; N Q ; B 37 -213 805 698 ; C 82 ; WX 740 ; N R ; B 14 0 765 681 ; C 83 ; WX 700 ; N S ; B 59 -17 731 698 ; C 84 ; WX 700 ; N T ; B 70 0 802 681 ; C 85 ; WX 740 ; N U ; B 112 -17 855 681 ; C 86 ; WX 660 ; N V ; B 72 0 819 681 ; C 87 ; WX 1000 ; N W ; B 72 0 1090 681 ; C 88 ; WX 740 ; N X ; B -7 0 835 681 ; C 89 ; WX 660 ; N Y ; B 72 0 817 681 ; C 90 ; WX 680 ; N Z ; B 23 0 740 681 ; C 91 ; WX 260 ; N bracketleft ; B 9 -118 374 741 ; C 92 ; WX 580 ; N backslash ; B 73 0 575 741 ; C 93 ; WX 260 ; N bracketright ; B -18 -118 347 741 ; C 94 ; WX 620 ; N asciicircum ; B 92 281 594 681 ; C 95 ; WX 500 ; N underscore ; B 0 -125 500 -75 ; C 96 ; WX 320 ; N quoteleft ; B 155 420 333 698 ; C 97 ; WX 680 ; N a ; B 84 -8 735 515 ; C 98 ; WX 600 ; N b ; B 57 -8 633 732 ; C 99 ; WX 560 ; N c ; B 58 -8 597 515 ; C 100 ; WX 680 ; N d ; B 60 -8 714 732 ; C 101 ; WX 560 ; N e ; B 59 -8 596 515 ; C 102 ; WX 420 ; N f ; B -192 -213 641 741 ; L i fi ; L l fl ; C 103 ; WX 620 ; N g ; B 21 -213 669 515 ; C 104 ; WX 700 ; N h ; B 93 -8 736 732 ; C 105 ; WX 380 ; N i ; B 83 -8 420 755 ; C 106 ; WX 320 ; N j ; B -160 -213 392 755 ; C 107 ; WX 700 ; N k ; B 97 -8 732 732 ; C 108 ; WX 380 ; N l ; B 109 -8 410 732 ; C 109 ; WX 960 ; N m ; B 83 -8 996 515 ; C 110 ; WX 680 ; N n ; B 83 -8 715 515 ; C 111 ; WX 600 ; N o ; B 59 -8 627 515 ; C 112 ; WX 660 ; N p ; B -24 -213 682 515 ; C 113 ; WX 620 ; N q ; B 60 -213 640 515 ; C 114 ; WX 500 ; N r ; B 84 0 582 515 ; C 115 ; WX 540 ; N s ; B 32 -8 573 515 ; C 116 ; WX 440 ; N t ; B 106 -8 488 658 ; C 117 ; WX 680 ; N u ; B 83 -8 720 507 ; C 118 ; WX 540 ; N v ; B 56 -8 572 515 ; C 119 ; WX 860 ; N w ; B 56 -8 891 515 ; C 120 ; WX 620 ; N x ; B 10 -8 654 515 ; C 121 ; WX 600 ; N y ; B 25 -213 642 507 ; C 122 ; WX 560 ; N z ; B 36 -8 586 515 ; C 123 ; WX 300 ; N braceleft ; B 49 -123 413 742 ; C 124 ; WX 620 ; N bar ; B 303 -250 422 750 ; C 125 ; WX 300 ; N braceright ; B -8 -114 356 751 ; C 126 ; WX 620 ; N asciitilde ; B 101 162 605 368 ; C 161 ; WX 320 ; N exclamdown ; B 64 -191 344 515 ; C 162 ; WX 680 ; N cent ; B 161 25 616 718 ; C 163 ; WX 680 ; N sterling ; B 0 -17 787 698 ; C 164 ; WX 120 ; N fraction ; B -144 0 382 681 ; C 165 ; WX 680 ; N yen ; B 92 0 782 681 ; C 166 ; WX 680 ; N florin ; B -28 -199 743 741 ; C 167 ; WX 620 ; N section ; B 46 -137 638 698 ; C 168 ; WX 680 ; N currency ; B 148 85 637 571 ; C 169 ; WX 180 ; N quotesingle ; B 126 370 295 696 ; C 170 ; WX 520 ; N quotedblleft ; B 156 420 545 698 ; C 171 ; WX 380 ; N guillemotleft ; B 62 84 406 503 ; C 172 ; WX 220 ; N guilsinglleft ; B 62 84 249 503 ; C 173 ; WX 220 ; N guilsinglright ; B 62 84 249 503 ; C 174 ; WX 820 ; N fi ; B -191 -213 850 741 ; C 175 ; WX 820 ; N fl ; B -191 -213 850 741 ; C 177 ; WX 500 ; N endash ; B 40 219 573 311 ; C 178 ; WX 420 ; N dagger ; B 89 -137 466 698 ; C 179 ; WX 420 ; N daggerdbl ; B 79 -137 486 698 ; C 180 ; WX 340 ; N periodcentered ; B 126 173 316 358 ; C 182 ; WX 680 ; N paragraph ; B 137 0 715 681 ; C 183 ; WX 360 ; N bullet ; B 60 170 404 511 ; C 184 ; WX 300 ; N quotesinglbase ; B 106 -112 284 166 ; C 185 ; WX 520 ; N quotedblbase ; B 106 -112 495 166 ; C 186 ; WX 520 ; N quotedblright ; B 171 420 560 698 ; C 187 ; WX 380 ; N guillemotright ; B 62 84 406 503 ; C 188 ; WX 1000 ; N ellipsis ; B 86 -8 942 177 ; C 189 ; WX 1360 ; N perthousand ; B 106 -17 1333 698 ; C 191 ; WX 620 ; N questiondown ; B 83 -189 606 515 ; C 193 ; WX 380 ; N grave ; B 193 566 424 771 ; C 194 ; WX 340 ; N acute ; B 176 566 407 771 ; C 195 ; WX 480 ; N circumflex ; B 183 582 523 749 ; C 196 ; WX 480 ; N tilde ; B 178 587 533 709 ; C 197 ; WX 480 ; N macron ; B 177 603 531 691 ; C 198 ; WX 460 ; N breve ; B 177 577 516 707 ; C 199 ; WX 380 ; N dotaccent ; B 167 563 365 755 ; C 200 ; WX 520 ; N dieresis ; B 180 563 569 727 ; C 202 ; WX 360 ; N ring ; B 185 558 406 775 ; C 203 ; WX 360 ; N cedilla ; B 68 -220 289 -8 ; C 205 ; WX 560 ; N hungarumlaut ; B 181 560 616 775 ; C 206 ; WX 320 ; N ogonek ; B 58 -199 293 0 ; C 207 ; WX 480 ; N caron ; B 183 582 523 749 ; C 208 ; WX 1000 ; N emdash ; B 40 219 1073 311 ; C 225 ; WX 1140 ; N AE ; B -27 0 1207 681 ; C 227 ; WX 440 ; N ordfeminine ; B 118 400 495 685 ; C 232 ; WX 640 ; N Lslash ; B 14 0 724 681 ; C 233 ; WX 760 ; N Oslash ; B 21 -29 847 725 ; C 234 ; WX 1180 ; N OE ; B 94 -17 1245 698 ; C 235 ; WX 440 ; N ordmasculine ; B 127 400 455 685 ; C 241 ; WX 880 ; N ae ; B 39 -8 913 515 ; C 245 ; WX 380 ; N dotlessi ; B 83 -8 420 507 ; C 248 ; WX 380 ; N lslash ; B 75 -8 424 732 ; C 249 ; WX 600 ; N oslash ; B 17 -54 661 571 ; C 250 ; WX 920 ; N oe ; B 48 -8 961 515 ; C 251 ; WX 660 ; N germandbls ; B -231 -213 702 741 ; C -1 ; WX 380 ; N Idieresis ; B 14 0 499 900 ; C -1 ; WX 560 ; N eacute ; B 59 -8 596 771 ; C -1 ; WX 680 ; N abreve ; B 84 -8 735 707 ; C -1 ; WX 680 ; N uhungarumlaut ; B 83 -8 720 775 ; C -1 ; WX 560 ; N ecaron ; B 59 -8 596 749 ; C -1 ; WX 660 ; N Ydieresis ; B 72 0 817 900 ; C -1 ; WX 600 ; N divide ; B 91 9 595 521 ; C -1 ; WX 660 ; N Yacute ; B 72 0 817 937 ; C -1 ; WX 720 ; N Acircumflex ; B -27 0 769 915 ; C -1 ; WX 680 ; N aacute ; B 84 -8 735 771 ; C -1 ; WX 740 ; N Ucircumflex ; B 112 -17 855 915 ; C -1 ; WX 600 ; N yacute ; B 25 -213 642 771 ; C -1 ; WX 540 ; N scommaaccent ; B 32 -250 573 515 ; C -1 ; WX 560 ; N ecircumflex ; B 59 -8 596 749 ; C -1 ; WX 740 ; N Uring ; B 112 -17 855 941 ; C -1 ; WX 740 ; N Udieresis ; B 112 -17 855 900 ; C -1 ; WX 680 ; N aogonek ; B 84 -199 735 515 ; C -1 ; WX 740 ; N Uacute ; B 112 -17 855 937 ; C -1 ; WX 680 ; N uogonek ; B 83 -199 720 507 ; C -1 ; WX 720 ; N Edieresis ; B 14 0 777 900 ; C -1 ; WX 760 ; N Dcroat ; B 14 0 805 681 ; C -1 ; WX 250 ; N commaaccent ; B 55 -250 199 -50 ; C -1 ; WX 780 ; N copyright ; B 83 -17 783 698 ; C -1 ; WX 720 ; N Emacron ; B 14 0 777 857 ; C -1 ; WX 560 ; N ccaron ; B 58 -8 597 749 ; C -1 ; WX 680 ; N aring ; B 84 -8 735 775 ; C -1 ; WX 740 ; N Ncommaaccent ; B 14 -250 845 681 ; C -1 ; WX 380 ; N lacute ; B 109 -8 466 940 ; C -1 ; WX 680 ; N agrave ; B 84 -8 735 771 ; C -1 ; WX 700 ; N Tcommaaccent ; B 70 -250 802 681 ; C -1 ; WX 700 ; N Cacute ; B 78 -17 754 937 ; C -1 ; WX 680 ; N atilde ; B 84 -8 735 709 ; C -1 ; WX 720 ; N Edotaccent ; B 14 0 777 928 ; C -1 ; WX 540 ; N scaron ; B 32 -8 573 749 ; C -1 ; WX 540 ; N scedilla ; B 32 -220 573 515 ; C -1 ; WX 380 ; N iacute ; B 83 -8 420 771 ; C -1 ; WX 494 ; N lozenge ; B 10 0 484 745 ; C -1 ; WX 740 ; N Rcaron ; B 14 0 765 915 ; C -1 ; WX 760 ; N Gcommaaccent ; B 77 -250 828 698 ; C -1 ; WX 680 ; N ucircumflex ; B 83 -8 720 749 ; C -1 ; WX 680 ; N acircumflex ; B 84 -8 735 749 ; C -1 ; WX 720 ; N Amacron ; B -27 0 769 857 ; C -1 ; WX 500 ; N rcaron ; B 84 0 582 749 ; C -1 ; WX 560 ; N ccedilla ; B 58 -220 597 515 ; C -1 ; WX 680 ; N Zdotaccent ; B 23 0 740 928 ; C -1 ; WX 640 ; N Thorn ; B -6 0 701 681 ; C -1 ; WX 760 ; N Omacron ; B 78 -17 806 857 ; C -1 ; WX 740 ; N Racute ; B 14 0 765 937 ; C -1 ; WX 700 ; N Sacute ; B 59 -17 731 937 ; C -1 ; WX 755 ; N dcaron ; B 60 -8 874 738 ; C -1 ; WX 740 ; N Umacron ; B 112 -17 855 857 ; C -1 ; WX 680 ; N uring ; B 83 -8 720 775 ; C -1 ; WX 408 ; N threesuperior ; B 86 269 483 698 ; C -1 ; WX 760 ; N Ograve ; B 78 -17 806 937 ; C -1 ; WX 720 ; N Agrave ; B -27 0 769 937 ; C -1 ; WX 720 ; N Abreve ; B -27 0 769 873 ; C -1 ; WX 600 ; N multiply ; B 91 10 595 514 ; C -1 ; WX 680 ; N uacute ; B 83 -8 720 771 ; C -1 ; WX 700 ; N Tcaron ; B 70 0 802 915 ; C -1 ; WX 505 ; N partialdiff ; B 11 -21 494 750 ; C -1 ; WX 600 ; N ydieresis ; B 25 -213 642 734 ; C -1 ; WX 740 ; N Nacute ; B 14 0 845 937 ; C -1 ; WX 380 ; N icircumflex ; B 83 -8 433 749 ; C -1 ; WX 720 ; N Ecircumflex ; B 14 0 777 915 ; C -1 ; WX 680 ; N adieresis ; B 84 -8 735 734 ; C -1 ; WX 560 ; N edieresis ; B 59 -8 596 734 ; C -1 ; WX 560 ; N cacute ; B 58 -8 597 771 ; C -1 ; WX 680 ; N nacute ; B 83 -8 715 771 ; C -1 ; WX 680 ; N umacron ; B 83 -8 720 691 ; C -1 ; WX 740 ; N Ncaron ; B 14 0 845 915 ; C -1 ; WX 380 ; N Iacute ; B 14 0 487 937 ; C -1 ; WX 600 ; N plusminus ; B 91 0 595 514 ; C -1 ; WX 620 ; N brokenbar ; B 303 -175 422 675 ; C -1 ; WX 780 ; N registered ; B 83 -17 783 698 ; C -1 ; WX 760 ; N Gbreve ; B 77 -17 828 873 ; C -1 ; WX 380 ; N Idotaccent ; B 14 0 485 928 ; C -1 ; WX 599 ; N summation ; B 14 -10 585 706 ; C -1 ; WX 720 ; N Egrave ; B 14 0 777 937 ; C -1 ; WX 500 ; N racute ; B 84 0 582 771 ; C -1 ; WX 600 ; N omacron ; B 59 -8 627 691 ; C -1 ; WX 680 ; N Zacute ; B 23 0 740 937 ; C -1 ; WX 680 ; N Zcaron ; B 23 0 740 915 ; C -1 ; WX 549 ; N greaterequal ; B 26 0 523 704 ; C -1 ; WX 760 ; N Eth ; B 14 0 805 681 ; C -1 ; WX 700 ; N Ccedilla ; B 78 -220 754 698 ; C -1 ; WX 380 ; N lcommaaccent ; B 109 -250 410 732 ; C -1 ; WX 450 ; N tcaron ; B 106 -8 571 798 ; C -1 ; WX 560 ; N eogonek ; B 59 -199 596 515 ; C -1 ; WX 740 ; N Uogonek ; B 112 -199 855 681 ; C -1 ; WX 720 ; N Aacute ; B -27 0 769 937 ; C -1 ; WX 720 ; N Adieresis ; B -27 0 769 900 ; C -1 ; WX 560 ; N egrave ; B 59 -8 596 771 ; C -1 ; WX 560 ; N zacute ; B 36 -8 586 771 ; C -1 ; WX 380 ; N iogonek ; B 83 -199 420 755 ; C -1 ; WX 760 ; N Oacute ; B 78 -17 806 937 ; C -1 ; WX 600 ; N oacute ; B 59 -8 627 771 ; C -1 ; WX 680 ; N amacron ; B 84 -8 735 691 ; C -1 ; WX 540 ; N sacute ; B 32 -8 573 771 ; C -1 ; WX 380 ; N idieresis ; B 83 -8 479 734 ; C -1 ; WX 760 ; N Ocircumflex ; B 78 -17 806 915 ; C -1 ; WX 740 ; N Ugrave ; B 112 -17 855 937 ; C -1 ; WX 614 ; N Delta ; B 6 0 608 688 ; C -1 ; WX 660 ; N thorn ; B -24 -213 682 732 ; C -1 ; WX 408 ; N twosuperior ; B 91 279 485 698 ; C -1 ; WX 760 ; N Odieresis ; B 78 -17 806 900 ; C -1 ; WX 680 ; N mu ; B 54 -213 720 507 ; C -1 ; WX 380 ; N igrave ; B 83 -8 420 771 ; C -1 ; WX 600 ; N ohungarumlaut ; B 59 -8 636 775 ; C -1 ; WX 720 ; N Eogonek ; B 14 -199 777 681 ; C -1 ; WX 680 ; N dcroat ; B 60 -8 748 732 ; C -1 ; WX 1020 ; N threequarters ; B 86 0 1054 691 ; C -1 ; WX 700 ; N Scedilla ; B 59 -220 731 698 ; C -1 ; WX 463 ; N lcaron ; B 109 -8 573 738 ; C -1 ; WX 780 ; N Kcommaaccent ; B 14 -250 879 681 ; C -1 ; WX 640 ; N Lacute ; B 14 0 725 937 ; C -1 ; WX 940 ; N trademark ; B 42 277 982 681 ; C -1 ; WX 560 ; N edotaccent ; B 59 -8 596 762 ; C -1 ; WX 380 ; N Igrave ; B 14 0 485 937 ; C -1 ; WX 380 ; N Imacron ; B 14 0 485 857 ; C -1 ; WX 640 ; N Lcaron ; B 14 0 725 698 ; C -1 ; WX 1020 ; N onehalf ; B 118 0 1036 681 ; C -1 ; WX 549 ; N lessequal ; B 29 0 526 704 ; C -1 ; WX 600 ; N ocircumflex ; B 59 -8 627 749 ; C -1 ; WX 680 ; N ntilde ; B 83 -8 715 709 ; C -1 ; WX 740 ; N Uhungarumlaut ; B 112 -17 855 941 ; C -1 ; WX 720 ; N Eacute ; B 14 0 777 937 ; C -1 ; WX 560 ; N emacron ; B 59 -8 596 691 ; C -1 ; WX 620 ; N gbreve ; B 21 -213 669 707 ; C -1 ; WX 1020 ; N onequarter ; B 118 0 1054 681 ; C -1 ; WX 700 ; N Scaron ; B 59 -17 731 915 ; C -1 ; WX 700 ; N Scommaaccent ; B 59 -250 731 698 ; C -1 ; WX 760 ; N Ohungarumlaut ; B 78 -17 806 941 ; C -1 ; WX 400 ; N degree ; B 130 398 430 698 ; C -1 ; WX 600 ; N ograve ; B 59 -8 627 771 ; C -1 ; WX 700 ; N Ccaron ; B 78 -17 754 915 ; C -1 ; WX 680 ; N ugrave ; B 83 -8 720 771 ; C -1 ; WX 522 ; N radical ; B 10 -46 512 850 ; C -1 ; WX 760 ; N Dcaron ; B 14 0 805 915 ; C -1 ; WX 500 ; N rcommaaccent ; B 80 -250 582 515 ; C -1 ; WX 740 ; N Ntilde ; B 14 0 845 875 ; C -1 ; WX 600 ; N otilde ; B 59 -8 627 709 ; C -1 ; WX 740 ; N Rcommaaccent ; B 14 -250 765 681 ; C -1 ; WX 640 ; N Lcommaaccent ; B 14 -250 725 681 ; C -1 ; WX 720 ; N Atilde ; B -27 0 769 875 ; C -1 ; WX 720 ; N Aogonek ; B -27 -199 789 681 ; C -1 ; WX 720 ; N Aring ; B -27 0 769 941 ; C -1 ; WX 760 ; N Otilde ; B 78 -17 806 875 ; C -1 ; WX 560 ; N zdotaccent ; B 36 -8 586 762 ; C -1 ; WX 720 ; N Ecaron ; B 14 0 777 915 ; C -1 ; WX 380 ; N Iogonek ; B 14 -199 485 681 ; C -1 ; WX 700 ; N kcommaaccent ; B 97 -250 732 732 ; C -1 ; WX 600 ; N minus ; B 91 207 595 323 ; C -1 ; WX 380 ; N Icircumflex ; B 14 0 493 915 ; C -1 ; WX 680 ; N ncaron ; B 83 -8 715 749 ; C -1 ; WX 440 ; N tcommaaccent ; B 106 -250 488 658 ; C -1 ; WX 620 ; N logicalnot ; B 81 129 585 421 ; C -1 ; WX 600 ; N odieresis ; B 59 -8 627 734 ; C -1 ; WX 680 ; N udieresis ; B 83 -8 720 734 ; C -1 ; WX 555 ; N notequal ; B 15 -49 540 570 ; C -1 ; WX 620 ; N gcommaaccent ; B 21 -213 669 827 ; C -1 ; WX 600 ; N eth ; B 59 -8 662 741 ; C -1 ; WX 560 ; N zcaron ; B 36 -8 586 749 ; C -1 ; WX 680 ; N ncommaaccent ; B 83 -250 715 515 ; C -1 ; WX 408 ; N onesuperior ; B 118 279 406 688 ; C -1 ; WX 380 ; N imacron ; B 83 -8 461 691 ; EndCharMetrics StartKernData StartKernPairs 931 KPX A T -17 KPX A Tcaron -17 KPX A Tcommaaccent -17 KPX A V -40 KPX A W -35 KPX A Y -25 KPX A Yacute -25 KPX A Ydieresis -25 KPX A v 20 KPX A w 20 KPX A y 20 KPX A yacute 20 KPX A ydieresis 20 KPX Aacute T -17 KPX Aacute Tcaron -17 KPX Aacute Tcommaaccent -17 KPX Aacute V -40 KPX Aacute W -35 KPX Aacute Y -25 KPX Aacute Yacute -25 KPX Aacute Ydieresis -25 KPX Aacute v 20 KPX Aacute w 20 KPX Aacute y 20 KPX Aacute yacute 20 KPX Aacute ydieresis 20 KPX Abreve T -17 KPX Abreve Tcaron -17 KPX Abreve Tcommaaccent -17 KPX Abreve V -40 KPX Abreve W -35 KPX Abreve Y -25 KPX Abreve Yacute -25 KPX Abreve Ydieresis -25 KPX Abreve v 20 KPX Abreve w 20 KPX Abreve y 20 KPX Abreve yacute 20 KPX Abreve ydieresis 20 KPX Acircumflex T -17 KPX Acircumflex Tcaron -17 KPX Acircumflex Tcommaaccent -17 KPX Acircumflex V -40 KPX Acircumflex W -35 KPX Acircumflex Y -25 KPX Acircumflex Yacute -25 KPX Acircumflex Ydieresis -25 KPX Acircumflex v 20 KPX Acircumflex w 20 KPX Acircumflex y 20 KPX Acircumflex yacute 20 KPX Acircumflex ydieresis 20 KPX Adieresis T -17 KPX Adieresis Tcaron -17 KPX Adieresis Tcommaaccent -17 KPX Adieresis V -40 KPX Adieresis W -35 KPX Adieresis Y -25 KPX Adieresis Yacute -25 KPX Adieresis Ydieresis -25 KPX Adieresis v 20 KPX Adieresis w 20 KPX Adieresis y 20 KPX Adieresis yacute 20 KPX Adieresis ydieresis 20 KPX Agrave T -17 KPX Agrave Tcaron -17 KPX Agrave Tcommaaccent -17 KPX Agrave V -40 KPX Agrave W -35 KPX Agrave Y -25 KPX Agrave Yacute -25 KPX Agrave Ydieresis -25 KPX Agrave v 20 KPX Agrave w 20 KPX Agrave y 20 KPX Agrave yacute 20 KPX Agrave ydieresis 20 KPX Amacron T -17 KPX Amacron Tcaron -17 KPX Amacron Tcommaaccent -17 KPX Amacron V -40 KPX Amacron W -35 KPX Amacron Y -25 KPX Amacron Yacute -25 KPX Amacron Ydieresis -25 KPX Amacron v 20 KPX Amacron w 20 KPX Amacron y 20 KPX Amacron yacute 20 KPX Amacron ydieresis 20 KPX Aogonek T -17 KPX Aogonek Tcaron -17 KPX Aogonek Tcommaaccent -17 KPX Aogonek V -40 KPX Aogonek W -35 KPX Aogonek Y -25 KPX Aogonek Yacute -25 KPX Aogonek Ydieresis -25 KPX Aogonek v 20 KPX Aogonek w 20 KPX Aogonek y 20 KPX Aogonek yacute 20 KPX Aogonek ydieresis 20 KPX Aring T -17 KPX Aring Tcaron -17 KPX Aring Tcommaaccent -17 KPX Aring V -40 KPX Aring W -35 KPX Aring Y -25 KPX Aring Yacute -25 KPX Aring Ydieresis -25 KPX Aring v 20 KPX Aring w 20 KPX Aring y 20 KPX Aring yacute 20 KPX Aring ydieresis 20 KPX Atilde T -17 KPX Atilde Tcaron -17 KPX Atilde Tcommaaccent -17 KPX Atilde V -40 KPX Atilde W -35 KPX Atilde Y -25 KPX Atilde Yacute -25 KPX Atilde Ydieresis -25 KPX Atilde v 20 KPX Atilde w 20 KPX Atilde y 20 KPX Atilde yacute 20 KPX Atilde ydieresis 20 KPX F A -35 KPX F Aacute -35 KPX F Abreve -35 KPX F Acircumflex -35 KPX F Adieresis -35 KPX F Agrave -35 KPX F Amacron -35 KPX F Aogonek -35 KPX F Aring -35 KPX F Atilde -35 KPX F comma -98 KPX F period -105 KPX L T -26 KPX L Tcaron -26 KPX L Tcommaaccent -26 KPX L V -19 KPX L W -15 KPX L Y -5 KPX L Yacute -5 KPX L Ydieresis -5 KPX L y 62 KPX L yacute 62 KPX L ydieresis 62 KPX Lacute T -26 KPX Lacute Tcaron -26 KPX Lacute Tcommaaccent -26 KPX Lacute V -19 KPX Lacute W -15 KPX Lacute Y -5 KPX Lacute Yacute -5 KPX Lacute Ydieresis -5 KPX Lacute y 62 KPX Lacute yacute 62 KPX Lacute ydieresis 62 KPX Lcommaaccent T -26 KPX Lcommaaccent Tcaron -26 KPX Lcommaaccent Tcommaaccent -26 KPX Lcommaaccent V -19 KPX Lcommaaccent W -15 KPX Lcommaaccent Y -5 KPX Lcommaaccent Yacute -5 KPX Lcommaaccent Ydieresis -5 KPX Lcommaaccent y 62 KPX Lcommaaccent yacute 62 KPX Lcommaaccent ydieresis 62 KPX Lslash T -26 KPX Lslash Tcaron -26 KPX Lslash Tcommaaccent -26 KPX Lslash V -19 KPX Lslash W -15 KPX Lslash Y -5 KPX Lslash Yacute -5 KPX Lslash Ydieresis -5 KPX Lslash y 62 KPX Lslash yacute 62 KPX Lslash ydieresis 62 KPX P A -31 KPX P Aacute -31 KPX P Abreve -31 KPX P Acircumflex -31 KPX P Adieresis -31 KPX P Agrave -31 KPX P Amacron -31 KPX P Aogonek -31 KPX P Aring -31 KPX P Atilde -31 KPX P comma -98 KPX P period -105 KPX R T -3 KPX R Tcaron -3 KPX R Tcommaaccent -3 KPX R V -8 KPX R W -4 KPX R Y 4 KPX R Yacute 4 KPX R Ydieresis 4 KPX R y 27 KPX R yacute 27 KPX R ydieresis 27 KPX Racute T -3 KPX Racute Tcaron -3 KPX Racute Tcommaaccent -3 KPX Racute V -8 KPX Racute W -4 KPX Racute Y 4 KPX Racute Yacute 4 KPX Racute Ydieresis 4 KPX Racute y 27 KPX Racute yacute 27 KPX Racute ydieresis 27 KPX Rcaron T -3 KPX Rcaron Tcaron -3 KPX Rcaron Tcommaaccent -3 KPX Rcaron V -8 KPX Rcaron W -4 KPX Rcaron Y 4 KPX Rcaron Yacute 4 KPX Rcaron Ydieresis 4 KPX Rcaron y 27 KPX Rcaron yacute 27 KPX Rcaron ydieresis 27 KPX Rcommaaccent T -3 KPX Rcommaaccent Tcaron -3 KPX Rcommaaccent Tcommaaccent -3 KPX Rcommaaccent V -8 KPX Rcommaaccent W -4 KPX Rcommaaccent Y 4 KPX Rcommaaccent Yacute 4 KPX Rcommaaccent Ydieresis 4 KPX Rcommaaccent y 27 KPX Rcommaaccent yacute 27 KPX Rcommaaccent ydieresis 27 KPX T A -42 KPX T Aacute -42 KPX T Abreve -42 KPX T Acircumflex -42 KPX T Adieresis -42 KPX T Agrave -42 KPX T Amacron -42 KPX T Aogonek -42 KPX T Aring -42 KPX T Atilde -42 KPX T a -8 KPX T aacute -8 KPX T abreve -8 KPX T acircumflex -8 KPX T adieresis -8 KPX T agrave -8 KPX T amacron -8 KPX T aogonek -8 KPX T aring -8 KPX T atilde -8 KPX T c -8 KPX T cacute -8 KPX T ccaron -8 KPX T ccedilla -8 KPX T colon 26 KPX T comma -100 KPX T e -10 KPX T eacute -10 KPX T ecaron -10 KPX T ecircumflex -10 KPX T edieresis -10 KPX T edotaccent -10 KPX T egrave -10 KPX T emacron -10 KPX T eogonek -10 KPX T hyphen -20 KPX T i 42 KPX T iacute 42 KPX T icircumflex 42 KPX T idieresis 42 KPX T igrave 42 KPX T imacron 42 KPX T iogonek 42 KPX T o -5 KPX T oacute -5 KPX T ocircumflex -5 KPX T odieresis -5 KPX T ograve -5 KPX T ohungarumlaut -5 KPX T omacron -5 KPX T oslash -5 KPX T otilde -5 KPX T period -107 KPX T r 41 KPX T racute 41 KPX T rcaron 41 KPX T rcommaaccent 41 KPX T s -1 KPX T sacute -1 KPX T scaron -1 KPX T scedilla -1 KPX T scommaaccent -1 KPX T semicolon 31 KPX T u 42 KPX T uacute 42 KPX T ucircumflex 42 KPX T udieresis 42 KPX T ugrave 42 KPX T uhungarumlaut 42 KPX T umacron 42 KPX T uogonek 42 KPX T uring 42 KPX T w 69 KPX T y 56 KPX T yacute 56 KPX T ydieresis 56 KPX Tcaron A -42 KPX Tcaron Aacute -42 KPX Tcaron Abreve -42 KPX Tcaron Acircumflex -42 KPX Tcaron Adieresis -42 KPX Tcaron Agrave -42 KPX Tcaron Amacron -42 KPX Tcaron Aogonek -42 KPX Tcaron Aring -42 KPX Tcaron Atilde -42 KPX Tcaron a -8 KPX Tcaron aacute -8 KPX Tcaron abreve -8 KPX Tcaron acircumflex -8 KPX Tcaron adieresis -8 KPX Tcaron agrave -8 KPX Tcaron amacron -8 KPX Tcaron aogonek -8 KPX Tcaron aring -8 KPX Tcaron atilde -8 KPX Tcaron c -8 KPX Tcaron cacute -8 KPX Tcaron ccaron -8 KPX Tcaron ccedilla -8 KPX Tcaron colon 26 KPX Tcaron comma -100 KPX Tcaron e -10 KPX Tcaron eacute -10 KPX Tcaron ecaron -10 KPX Tcaron ecircumflex -10 KPX Tcaron edieresis -10 KPX Tcaron edotaccent -10 KPX Tcaron egrave -10 KPX Tcaron emacron -10 KPX Tcaron eogonek -10 KPX Tcaron hyphen -20 KPX Tcaron i 42 KPX Tcaron iacute 42 KPX Tcaron icircumflex 42 KPX Tcaron idieresis 42 KPX Tcaron igrave 42 KPX Tcaron imacron 42 KPX Tcaron iogonek 42 KPX Tcaron o -5 KPX Tcaron oacute -5 KPX Tcaron ocircumflex -5 KPX Tcaron odieresis -5 KPX Tcaron ograve -5 KPX Tcaron ohungarumlaut -5 KPX Tcaron omacron -5 KPX Tcaron oslash -5 KPX Tcaron otilde -5 KPX Tcaron period -107 KPX Tcaron r 41 KPX Tcaron racute 41 KPX Tcaron rcaron 41 KPX Tcaron rcommaaccent 41 KPX Tcaron s -1 KPX Tcaron sacute -1 KPX Tcaron scaron -1 KPX Tcaron scedilla -1 KPX Tcaron scommaaccent -1 KPX Tcaron semicolon 31 KPX Tcaron u 42 KPX Tcaron uacute 42 KPX Tcaron ucircumflex 42 KPX Tcaron udieresis 42 KPX Tcaron ugrave 42 KPX Tcaron uhungarumlaut 42 KPX Tcaron umacron 42 KPX Tcaron uogonek 42 KPX Tcaron uring 42 KPX Tcaron w 69 KPX Tcaron y 56 KPX Tcaron yacute 56 KPX Tcaron ydieresis 56 KPX Tcommaaccent A -42 KPX Tcommaaccent Aacute -42 KPX Tcommaaccent Abreve -42 KPX Tcommaaccent Acircumflex -42 KPX Tcommaaccent Adieresis -42 KPX Tcommaaccent Agrave -42 KPX Tcommaaccent Amacron -42 KPX Tcommaaccent Aogonek -42 KPX Tcommaaccent Aring -42 KPX Tcommaaccent Atilde -42 KPX Tcommaaccent a -8 KPX Tcommaaccent aacute -8 KPX Tcommaaccent abreve -8 KPX Tcommaaccent acircumflex -8 KPX Tcommaaccent adieresis -8 KPX Tcommaaccent agrave -8 KPX Tcommaaccent amacron -8 KPX Tcommaaccent aogonek -8 KPX Tcommaaccent aring -8 KPX Tcommaaccent atilde -8 KPX Tcommaaccent c -8 KPX Tcommaaccent cacute -8 KPX Tcommaaccent ccaron -8 KPX Tcommaaccent ccedilla -8 KPX Tcommaaccent colon 26 KPX Tcommaaccent comma -100 KPX Tcommaaccent e -10 KPX Tcommaaccent eacute -10 KPX Tcommaaccent ecaron -10 KPX Tcommaaccent ecircumflex -10 KPX Tcommaaccent edieresis -10 KPX Tcommaaccent edotaccent -10 KPX Tcommaaccent egrave -10 KPX Tcommaaccent emacron -10 KPX Tcommaaccent eogonek -10 KPX Tcommaaccent hyphen -20 KPX Tcommaaccent i 42 KPX Tcommaaccent iacute 42 KPX Tcommaaccent icircumflex 42 KPX Tcommaaccent idieresis 42 KPX Tcommaaccent igrave 42 KPX Tcommaaccent imacron 42 KPX Tcommaaccent iogonek 42 KPX Tcommaaccent o -5 KPX Tcommaaccent oacute -5 KPX Tcommaaccent ocircumflex -5 KPX Tcommaaccent odieresis -5 KPX Tcommaaccent ograve -5 KPX Tcommaaccent ohungarumlaut -5 KPX Tcommaaccent omacron -5 KPX Tcommaaccent oslash -5 KPX Tcommaaccent otilde -5 KPX Tcommaaccent period -107 KPX Tcommaaccent r 41 KPX Tcommaaccent racute 41 KPX Tcommaaccent rcaron 41 KPX Tcommaaccent rcommaaccent 41 KPX Tcommaaccent s -1 KPX Tcommaaccent sacute -1 KPX Tcommaaccent scaron -1 KPX Tcommaaccent scedilla -1 KPX Tcommaaccent scommaaccent -1 KPX Tcommaaccent semicolon 31 KPX Tcommaaccent u 42 KPX Tcommaaccent uacute 42 KPX Tcommaaccent ucircumflex 42 KPX Tcommaaccent udieresis 42 KPX Tcommaaccent ugrave 42 KPX Tcommaaccent uhungarumlaut 42 KPX Tcommaaccent umacron 42 KPX Tcommaaccent uogonek 42 KPX Tcommaaccent uring 42 KPX Tcommaaccent w 69 KPX Tcommaaccent y 56 KPX Tcommaaccent yacute 56 KPX Tcommaaccent ydieresis 56 KPX V A -50 KPX V Aacute -50 KPX V Abreve -50 KPX V Acircumflex -50 KPX V Adieresis -50 KPX V Agrave -50 KPX V Amacron -50 KPX V Aogonek -50 KPX V Aring -50 KPX V Atilde -50 KPX V a -50 KPX V aacute -50 KPX V abreve -50 KPX V acircumflex -50 KPX V adieresis -50 KPX V agrave -50 KPX V amacron -50 KPX V aogonek -50 KPX V aring -50 KPX V atilde -50 KPX V colon -28 KPX V comma -137 KPX V e -50 KPX V eacute -50 KPX V ecaron -50 KPX V ecircumflex -50 KPX V edotaccent -50 KPX V egrave -50 KPX V eogonek -50 KPX V hyphen -20 KPX V i 32 KPX V iacute 32 KPX V icircumflex 48 KPX V idieresis 48 KPX V igrave 32 KPX V imacron 48 KPX V iogonek 32 KPX V o -50 KPX V oacute -50 KPX V ocircumflex -50 KPX V odieresis -50 KPX V ograve -50 KPX V ohungarumlaut -20 KPX V omacron -52 KPX V oslash -50 KPX V otilde -20 KPX V period -115 KPX V r 2 KPX V racute 2 KPX V rcaron 2 KPX V rcommaaccent 2 KPX V semicolon -22 KPX V u -1 KPX V uacute -1 KPX V ucircumflex -1 KPX V udieresis -1 KPX V ugrave -1 KPX V uhungarumlaut -1 KPX V umacron -1 KPX V uogonek -1 KPX V uring -1 KPX V y 17 KPX V yacute 17 KPX V ydieresis 17 KPX W A -77 KPX W Aacute -77 KPX W Abreve -77 KPX W Acircumflex -77 KPX W Adieresis -77 KPX W Agrave -77 KPX W Amacron -77 KPX W Aogonek -77 KPX W Aring -77 KPX W Atilde -77 KPX W a -100 KPX W aacute -100 KPX W abreve -100 KPX W acircumflex -100 KPX W adieresis -100 KPX W agrave -100 KPX W amacron -100 KPX W aogonek -100 KPX W aring -100 KPX W atilde -100 KPX W colon -86 KPX W comma -201 KPX W e -100 KPX W eacute -100 KPX W ecaron -100 KPX W ecircumflex -100 KPX W edieresis -100 KPX W edotaccent -100 KPX W egrave -100 KPX W emacron -100 KPX W eogonek -100 KPX W hyphen -22 KPX W i -36 KPX W iacute -36 KPX W igrave -36 KPX W iogonek -36 KPX W o -100 KPX W oacute -100 KPX W ocircumflex -100 KPX W odieresis -100 KPX W ograve -100 KPX W ohungarumlaut -100 KPX W omacron -100 KPX W oslash -100 KPX W otilde -100 KPX W period -183 KPX W r -66 KPX W racute -66 KPX W rcaron -66 KPX W rcommaaccent -66 KPX W semicolon -81 KPX W u -69 KPX W uacute -69 KPX W ucircumflex -69 KPX W udieresis -69 KPX W ugrave -69 KPX W uhungarumlaut -69 KPX W umacron -69 KPX W uogonek -69 KPX W uring -69 KPX W y -51 KPX W yacute -51 KPX W ydieresis -51 KPX Y A -30 KPX Y Aacute -30 KPX Y Abreve -30 KPX Y Acircumflex -30 KPX Y Adieresis -30 KPX Y Agrave -30 KPX Y Amacron -30 KPX Y Aogonek -30 KPX Y Aring -30 KPX Y Atilde -30 KPX Y a -45 KPX Y aacute -45 KPX Y abreve -45 KPX Y acircumflex -45 KPX Y adieresis -45 KPX Y agrave -45 KPX Y amacron -45 KPX Y aogonek -45 KPX Y aring -45 KPX Y atilde -45 KPX Y colon -9 KPX Y comma -106 KPX Y e -46 KPX Y eacute -46 KPX Y ecaron -46 KPX Y ecircumflex -46 KPX Y edotaccent -46 KPX Y egrave -46 KPX Y eogonek -46 KPX Y hyphen -20 KPX Y i 20 KPX Y iacute 20 KPX Y icircumflex 40 KPX Y idieresis 40 KPX Y igrave 40 KPX Y imacron 40 KPX Y iogonek 20 KPX Y o -41 KPX Y oacute -41 KPX Y ocircumflex -41 KPX Y odieresis -21 KPX Y ograve -41 KPX Y ohungarumlaut -21 KPX Y omacron -41 KPX Y oslash -41 KPX Y otilde -41 KPX Y period -113 KPX Y q -43 KPX Y semicolon -4 KPX Y u -1 KPX Y uacute -1 KPX Y ucircumflex -1 KPX Y udieresis -1 KPX Y ugrave -1 KPX Y uhungarumlaut -1 KPX Y umacron -1 KPX Y uogonek -1 KPX Y uring -1 KPX Y v 26 KPX Yacute A -30 KPX Yacute Aacute -30 KPX Yacute Abreve -30 KPX Yacute Acircumflex -30 KPX Yacute Adieresis -30 KPX Yacute Agrave -30 KPX Yacute Amacron -30 KPX Yacute Aogonek -30 KPX Yacute Aring -30 KPX Yacute Atilde -30 KPX Yacute a -45 KPX Yacute aacute -45 KPX Yacute abreve -45 KPX Yacute acircumflex -45 KPX Yacute adieresis -45 KPX Yacute agrave -45 KPX Yacute amacron -45 KPX Yacute aogonek -45 KPX Yacute aring -45 KPX Yacute atilde -45 KPX Yacute colon -9 KPX Yacute comma -106 KPX Yacute e -46 KPX Yacute eacute -46 KPX Yacute ecaron -46 KPX Yacute ecircumflex -46 KPX Yacute edotaccent -46 KPX Yacute egrave -46 KPX Yacute eogonek -46 KPX Yacute hyphen -20 KPX Yacute i 20 KPX Yacute iacute 20 KPX Yacute icircumflex 40 KPX Yacute idieresis 40 KPX Yacute igrave 40 KPX Yacute imacron 40 KPX Yacute iogonek 20 KPX Yacute o -41 KPX Yacute oacute -41 KPX Yacute ocircumflex -41 KPX Yacute odieresis -21 KPX Yacute ograve -41 KPX Yacute ohungarumlaut -21 KPX Yacute omacron -41 KPX Yacute oslash -41 KPX Yacute otilde -41 KPX Yacute period -113 KPX Yacute q -43 KPX Yacute semicolon -4 KPX Yacute u -1 KPX Yacute uacute -1 KPX Yacute ucircumflex -1 KPX Yacute udieresis -1 KPX Yacute ugrave -1 KPX Yacute uhungarumlaut -1 KPX Yacute umacron -1 KPX Yacute uogonek -1 KPX Yacute uring -1 KPX Yacute v 26 KPX Ydieresis A -30 KPX Ydieresis Aacute -30 KPX Ydieresis Abreve -30 KPX Ydieresis Acircumflex -30 KPX Ydieresis Adieresis -30 KPX Ydieresis Agrave -30 KPX Ydieresis Amacron -30 KPX Ydieresis Aogonek -30 KPX Ydieresis Aring -30 KPX Ydieresis Atilde -30 KPX Ydieresis a -45 KPX Ydieresis aacute -45 KPX Ydieresis abreve -45 KPX Ydieresis acircumflex -45 KPX Ydieresis adieresis -45 KPX Ydieresis agrave -45 KPX Ydieresis amacron -45 KPX Ydieresis aogonek -45 KPX Ydieresis aring -45 KPX Ydieresis atilde -45 KPX Ydieresis colon -9 KPX Ydieresis comma -106 KPX Ydieresis e -46 KPX Ydieresis eacute -46 KPX Ydieresis ecaron -46 KPX Ydieresis ecircumflex -46 KPX Ydieresis edotaccent -46 KPX Ydieresis egrave -46 KPX Ydieresis eogonek -46 KPX Ydieresis hyphen -20 KPX Ydieresis i 20 KPX Ydieresis iacute 20 KPX Ydieresis icircumflex 40 KPX Ydieresis idieresis 40 KPX Ydieresis igrave 40 KPX Ydieresis imacron 40 KPX Ydieresis iogonek 20 KPX Ydieresis o -41 KPX Ydieresis oacute -41 KPX Ydieresis ocircumflex -41 KPX Ydieresis odieresis -21 KPX Ydieresis ograve -41 KPX Ydieresis ohungarumlaut -21 KPX Ydieresis omacron -41 KPX Ydieresis oslash -41 KPX Ydieresis otilde -41 KPX Ydieresis period -113 KPX Ydieresis q -43 KPX Ydieresis semicolon -4 KPX Ydieresis u -1 KPX Ydieresis uacute -1 KPX Ydieresis ucircumflex -1 KPX Ydieresis udieresis -1 KPX Ydieresis ugrave -1 KPX Ydieresis uhungarumlaut -1 KPX Ydieresis umacron -1 KPX Ydieresis uogonek -1 KPX Ydieresis uring -1 KPX Ydieresis v 26 KPX f f 10 KPX r c -5 KPX r cacute -5 KPX r ccaron -5 KPX r ccedilla -5 KPX r comma -113 KPX r d -3 KPX r dcroat -3 KPX r e -6 KPX r eacute -6 KPX r ecaron -6 KPX r ecircumflex -6 KPX r edieresis -6 KPX r edotaccent -6 KPX r egrave -6 KPX r emacron -6 KPX r eogonek -6 KPX r f 42 KPX r g -23 KPX r gbreve -23 KPX r gcommaaccent -23 KPX r h -35 KPX r hyphen -20 KPX r m 39 KPX r n 39 KPX r nacute 39 KPX r ncaron 39 KPX r ncommaaccent 39 KPX r ntilde 39 KPX r o -1 KPX r oacute -1 KPX r ocircumflex -1 KPX r odieresis -1 KPX r ograve -1 KPX r ohungarumlaut -1 KPX r omacron -1 KPX r oslash -1 KPX r otilde -1 KPX r period -120 KPX r q -3 KPX racute c -5 KPX racute cacute -5 KPX racute ccaron -5 KPX racute ccedilla -5 KPX racute comma -113 KPX racute d -3 KPX racute dcroat -3 KPX racute e -6 KPX racute eacute -6 KPX racute ecaron -6 KPX racute ecircumflex -6 KPX racute edieresis -6 KPX racute edotaccent -6 KPX racute egrave -6 KPX racute emacron -6 KPX racute eogonek -6 KPX racute f 42 KPX racute g -23 KPX racute gbreve -23 KPX racute gcommaaccent -23 KPX racute h -35 KPX racute hyphen -20 KPX racute m 39 KPX racute n 39 KPX racute nacute 39 KPX racute ncaron 39 KPX racute ncommaaccent 39 KPX racute ntilde 39 KPX racute o -1 KPX racute oacute -1 KPX racute ocircumflex -1 KPX racute odieresis -1 KPX racute ograve -1 KPX racute ohungarumlaut -1 KPX racute omacron -1 KPX racute oslash -1 KPX racute otilde -1 KPX racute period -120 KPX racute q -3 KPX rcaron c -5 KPX rcaron cacute -5 KPX rcaron ccaron -5 KPX rcaron ccedilla -5 KPX rcaron comma -113 KPX rcaron d -3 KPX rcaron dcroat -3 KPX rcaron e -6 KPX rcaron eacute -6 KPX rcaron ecaron -6 KPX rcaron ecircumflex -6 KPX rcaron edieresis -6 KPX rcaron edotaccent -6 KPX rcaron egrave -6 KPX rcaron emacron -6 KPX rcaron eogonek -6 KPX rcaron f 42 KPX rcaron g -23 KPX rcaron gbreve -23 KPX rcaron gcommaaccent -23 KPX rcaron h -35 KPX rcaron hyphen -20 KPX rcaron m 39 KPX rcaron n 39 KPX rcaron nacute 39 KPX rcaron ncaron 39 KPX rcaron ncommaaccent 39 KPX rcaron ntilde 39 KPX rcaron o -1 KPX rcaron oacute -1 KPX rcaron ocircumflex -1 KPX rcaron odieresis -1 KPX rcaron ograve -1 KPX rcaron ohungarumlaut -1 KPX rcaron omacron -1 KPX rcaron oslash -1 KPX rcaron otilde -1 KPX rcaron period -120 KPX rcaron q -3 KPX rcommaaccent c -5 KPX rcommaaccent cacute -5 KPX rcommaaccent ccaron -5 KPX rcommaaccent ccedilla -5 KPX rcommaaccent comma -113 KPX rcommaaccent d -3 KPX rcommaaccent dcroat -3 KPX rcommaaccent e -6 KPX rcommaaccent eacute -6 KPX rcommaaccent ecaron -6 KPX rcommaaccent ecircumflex -6 KPX rcommaaccent edieresis -6 KPX rcommaaccent edotaccent -6 KPX rcommaaccent egrave -6 KPX rcommaaccent emacron -6 KPX rcommaaccent eogonek -6 KPX rcommaaccent f 42 KPX rcommaaccent g -23 KPX rcommaaccent gbreve -23 KPX rcommaaccent gcommaaccent -23 KPX rcommaaccent h -35 KPX rcommaaccent hyphen -20 KPX rcommaaccent m 39 KPX rcommaaccent n 39 KPX rcommaaccent nacute 39 KPX rcommaaccent ncaron 39 KPX rcommaaccent ncommaaccent 39 KPX rcommaaccent ntilde 39 KPX rcommaaccent o -1 KPX rcommaaccent oacute -1 KPX rcommaaccent ocircumflex -1 KPX rcommaaccent odieresis -1 KPX rcommaaccent ograve -1 KPX rcommaaccent ohungarumlaut -1 KPX rcommaaccent omacron -1 KPX rcommaaccent oslash -1 KPX rcommaaccent otilde -1 KPX rcommaaccent period -120 KPX rcommaaccent q -3 EndKernPairs EndKernData EndFontMetrics gle-graphics-4.2.4c/src/fonts/Adobe-Core35_AFMs-314/MustRead.html0000664000000000000000000000174711405446017022521 0ustar rootroot Adobe Core 35 AFM Files with 314 Glyph Entries - ReadMe

Adobe Core 35 AFM Files with 314 Glyph Entries - ReadMe

This file and the 35 PostScript(R) AFM files it accompanies may be used, copied, and distributed for any purpose and without charge, with or without modification, provided that all copyright notices are retained; that the AFM files are not distributed without this file; that all modifications to this file or any of the AFM files are prominently noted in the modified file(s); and that this paragraph is not modified. Adobe Systems has no responsibility or obligation to support the use of the AFM files.
gle-graphics-4.2.4c/src/fonts/Adobe-Core35_AFMs-314/Courier-Oblique.afm0000664000000000000000000003602111405446017023573 0ustar rootrootStartFontMetrics 4.1 Comment Copyright (c) 1989, 1990, 1991, 1992, 1993, 1997 Adobe Systems Incorporated. All Rights Reserved. Comment Creation Date: Thu May 1 17:37:52 1997 Comment UniqueID 43051 Comment VMusage 16248 75829 FontName Courier-Oblique FullName Courier Oblique FamilyName Courier Weight Medium ItalicAngle -12 IsFixedPitch true FontBBox -27 -250 849 805 UnderlinePosition -100 UnderlineThickness 50 Version 003.000 Notice Copyright (c) 1989, 1990, 1991, 1992, 1993, 1997 Adobe Systems Incorporated. All Rights Reserved. EncodingScheme AdobeStandardEncoding CapHeight 562 XHeight 426 Ascender 629 Descender -157 StdHW 51 StdVW 51 StartCharMetrics 314 C 32 ; WX 600 ; N space ; B 0 0 0 0 ; C 33 ; WX 600 ; N exclam ; B 243 -15 464 572 ; C 34 ; WX 600 ; N quotedbl ; B 273 328 532 562 ; C 35 ; WX 600 ; N numbersign ; B 133 -32 596 639 ; C 36 ; WX 600 ; N dollar ; B 108 -126 596 662 ; C 37 ; WX 600 ; N percent ; B 134 -15 599 622 ; C 38 ; WX 600 ; N ampersand ; B 87 -15 580 543 ; C 39 ; WX 600 ; N quoteright ; B 283 328 495 562 ; C 40 ; WX 600 ; N parenleft ; B 313 -108 572 622 ; C 41 ; WX 600 ; N parenright ; B 137 -108 396 622 ; C 42 ; WX 600 ; N asterisk ; B 212 257 580 607 ; C 43 ; WX 600 ; N plus ; B 129 44 580 470 ; C 44 ; WX 600 ; N comma ; B 157 -112 370 122 ; C 45 ; WX 600 ; N hyphen ; B 152 231 558 285 ; C 46 ; WX 600 ; N period ; B 238 -15 382 109 ; C 47 ; WX 600 ; N slash ; B 112 -80 604 629 ; C 48 ; WX 600 ; N zero ; B 154 -15 575 622 ; C 49 ; WX 600 ; N one ; B 98 0 515 622 ; C 50 ; WX 600 ; N two ; B 70 0 568 622 ; C 51 ; WX 600 ; N three ; B 82 -15 538 622 ; C 52 ; WX 600 ; N four ; B 108 0 541 622 ; C 53 ; WX 600 ; N five ; B 99 -15 589 607 ; C 54 ; WX 600 ; N six ; B 155 -15 629 622 ; C 55 ; WX 600 ; N seven ; B 182 0 612 607 ; C 56 ; WX 600 ; N eight ; B 132 -15 588 622 ; C 57 ; WX 600 ; N nine ; B 93 -15 574 622 ; C 58 ; WX 600 ; N colon ; B 238 -15 441 385 ; C 59 ; WX 600 ; N semicolon ; B 157 -112 441 385 ; C 60 ; WX 600 ; N less ; B 96 42 610 472 ; C 61 ; WX 600 ; N equal ; B 109 138 600 376 ; C 62 ; WX 600 ; N greater ; B 85 42 599 472 ; C 63 ; WX 600 ; N question ; B 222 -15 583 572 ; C 64 ; WX 600 ; N at ; B 127 -15 582 622 ; C 65 ; WX 600 ; N A ; B 3 0 607 562 ; C 66 ; WX 600 ; N B ; B 43 0 616 562 ; C 67 ; WX 600 ; N C ; B 93 -18 655 580 ; C 68 ; WX 600 ; N D ; B 43 0 645 562 ; C 69 ; WX 600 ; N E ; B 53 0 660 562 ; C 70 ; WX 600 ; N F ; B 53 0 660 562 ; C 71 ; WX 600 ; N G ; B 83 -18 645 580 ; C 72 ; WX 600 ; N H ; B 32 0 687 562 ; C 73 ; WX 600 ; N I ; B 96 0 623 562 ; C 74 ; WX 600 ; N J ; B 52 -18 685 562 ; C 75 ; WX 600 ; N K ; B 38 0 671 562 ; C 76 ; WX 600 ; N L ; B 47 0 607 562 ; C 77 ; WX 600 ; N M ; B 4 0 715 562 ; C 78 ; WX 600 ; N N ; B 7 -13 712 562 ; C 79 ; WX 600 ; N O ; B 94 -18 625 580 ; C 80 ; WX 600 ; N P ; B 79 0 644 562 ; C 81 ; WX 600 ; N Q ; B 95 -138 625 580 ; C 82 ; WX 600 ; N R ; B 38 0 598 562 ; C 83 ; WX 600 ; N S ; B 76 -20 650 580 ; C 84 ; WX 600 ; N T ; B 108 0 665 562 ; C 85 ; WX 600 ; N U ; B 125 -18 702 562 ; C 86 ; WX 600 ; N V ; B 105 -13 723 562 ; C 87 ; WX 600 ; N W ; B 106 -13 722 562 ; C 88 ; WX 600 ; N X ; B 23 0 675 562 ; C 89 ; WX 600 ; N Y ; B 133 0 695 562 ; C 90 ; WX 600 ; N Z ; B 86 0 610 562 ; C 91 ; WX 600 ; N bracketleft ; B 246 -108 574 622 ; C 92 ; WX 600 ; N backslash ; B 249 -80 468 629 ; C 93 ; WX 600 ; N bracketright ; B 135 -108 463 622 ; C 94 ; WX 600 ; N asciicircum ; B 175 354 587 622 ; C 95 ; WX 600 ; N underscore ; B -27 -125 584 -75 ; C 96 ; WX 600 ; N quoteleft ; B 343 328 457 562 ; C 97 ; WX 600 ; N a ; B 76 -15 569 441 ; C 98 ; WX 600 ; N b ; B 29 -15 625 629 ; C 99 ; WX 600 ; N c ; B 106 -15 608 441 ; C 100 ; WX 600 ; N d ; B 85 -15 640 629 ; C 101 ; WX 600 ; N e ; B 106 -15 598 441 ; C 102 ; WX 600 ; N f ; B 114 0 662 629 ; L i fi ; L l fl ; C 103 ; WX 600 ; N g ; B 61 -157 657 441 ; C 104 ; WX 600 ; N h ; B 33 0 592 629 ; C 105 ; WX 600 ; N i ; B 95 0 515 657 ; C 106 ; WX 600 ; N j ; B 52 -157 550 657 ; C 107 ; WX 600 ; N k ; B 58 0 633 629 ; C 108 ; WX 600 ; N l ; B 95 0 515 629 ; C 109 ; WX 600 ; N m ; B -5 0 615 441 ; C 110 ; WX 600 ; N n ; B 26 0 585 441 ; C 111 ; WX 600 ; N o ; B 102 -15 588 441 ; C 112 ; WX 600 ; N p ; B -24 -157 605 441 ; C 113 ; WX 600 ; N q ; B 85 -157 682 441 ; C 114 ; WX 600 ; N r ; B 60 0 636 441 ; C 115 ; WX 600 ; N s ; B 78 -15 584 441 ; C 116 ; WX 600 ; N t ; B 167 -15 561 561 ; C 117 ; WX 600 ; N u ; B 101 -15 572 426 ; C 118 ; WX 600 ; N v ; B 90 -10 681 426 ; C 119 ; WX 600 ; N w ; B 76 -10 695 426 ; C 120 ; WX 600 ; N x ; B 20 0 655 426 ; C 121 ; WX 600 ; N y ; B -4 -157 683 426 ; C 122 ; WX 600 ; N z ; B 99 0 593 426 ; C 123 ; WX 600 ; N braceleft ; B 233 -108 569 622 ; C 124 ; WX 600 ; N bar ; B 222 -250 485 750 ; C 125 ; WX 600 ; N braceright ; B 140 -108 477 622 ; C 126 ; WX 600 ; N asciitilde ; B 116 197 600 320 ; C 161 ; WX 600 ; N exclamdown ; B 225 -157 445 430 ; C 162 ; WX 600 ; N cent ; B 151 -49 588 614 ; C 163 ; WX 600 ; N sterling ; B 124 -21 621 611 ; C 164 ; WX 600 ; N fraction ; B 84 -57 646 665 ; C 165 ; WX 600 ; N yen ; B 120 0 693 562 ; C 166 ; WX 600 ; N florin ; B -26 -143 671 622 ; C 167 ; WX 600 ; N section ; B 104 -78 590 580 ; C 168 ; WX 600 ; N currency ; B 94 58 628 506 ; C 169 ; WX 600 ; N quotesingle ; B 345 328 460 562 ; C 170 ; WX 600 ; N quotedblleft ; B 262 328 541 562 ; C 171 ; WX 600 ; N guillemotleft ; B 92 70 652 446 ; C 172 ; WX 600 ; N guilsinglleft ; B 204 70 540 446 ; C 173 ; WX 600 ; N guilsinglright ; B 170 70 506 446 ; C 174 ; WX 600 ; N fi ; B 3 0 619 629 ; C 175 ; WX 600 ; N fl ; B 3 0 619 629 ; C 177 ; WX 600 ; N endash ; B 124 231 586 285 ; C 178 ; WX 600 ; N dagger ; B 217 -78 546 580 ; C 179 ; WX 600 ; N daggerdbl ; B 163 -78 546 580 ; C 180 ; WX 600 ; N periodcentered ; B 275 189 434 327 ; C 182 ; WX 600 ; N paragraph ; B 100 -78 630 562 ; C 183 ; WX 600 ; N bullet ; B 224 130 485 383 ; C 184 ; WX 600 ; N quotesinglbase ; B 185 -134 397 100 ; C 185 ; WX 600 ; N quotedblbase ; B 115 -134 478 100 ; C 186 ; WX 600 ; N quotedblright ; B 213 328 576 562 ; C 187 ; WX 600 ; N guillemotright ; B 58 70 618 446 ; C 188 ; WX 600 ; N ellipsis ; B 46 -15 575 111 ; C 189 ; WX 600 ; N perthousand ; B 59 -15 627 622 ; C 191 ; WX 600 ; N questiondown ; B 105 -157 466 430 ; C 193 ; WX 600 ; N grave ; B 294 497 484 672 ; C 194 ; WX 600 ; N acute ; B 348 497 612 672 ; C 195 ; WX 600 ; N circumflex ; B 229 477 581 654 ; C 196 ; WX 600 ; N tilde ; B 212 489 629 606 ; C 197 ; WX 600 ; N macron ; B 232 525 600 565 ; C 198 ; WX 600 ; N breve ; B 279 501 576 609 ; C 199 ; WX 600 ; N dotaccent ; B 373 537 478 640 ; C 200 ; WX 600 ; N dieresis ; B 272 537 579 640 ; C 202 ; WX 600 ; N ring ; B 332 463 500 627 ; C 203 ; WX 600 ; N cedilla ; B 197 -151 344 10 ; C 205 ; WX 600 ; N hungarumlaut ; B 239 497 683 672 ; C 206 ; WX 600 ; N ogonek ; B 189 -172 377 4 ; C 207 ; WX 600 ; N caron ; B 262 492 614 669 ; C 208 ; WX 600 ; N emdash ; B 49 231 661 285 ; C 225 ; WX 600 ; N AE ; B 3 0 655 562 ; C 227 ; WX 600 ; N ordfeminine ; B 209 249 512 580 ; C 232 ; WX 600 ; N Lslash ; B 47 0 607 562 ; C 233 ; WX 600 ; N Oslash ; B 94 -80 625 629 ; C 234 ; WX 600 ; N OE ; B 59 0 672 562 ; C 235 ; WX 600 ; N ordmasculine ; B 210 249 535 580 ; C 241 ; WX 600 ; N ae ; B 41 -15 626 441 ; C 245 ; WX 600 ; N dotlessi ; B 95 0 515 426 ; C 248 ; WX 600 ; N lslash ; B 95 0 587 629 ; C 249 ; WX 600 ; N oslash ; B 102 -80 588 506 ; C 250 ; WX 600 ; N oe ; B 54 -15 615 441 ; C 251 ; WX 600 ; N germandbls ; B 48 -15 617 629 ; C -1 ; WX 600 ; N Idieresis ; B 96 0 623 753 ; C -1 ; WX 600 ; N eacute ; B 106 -15 612 672 ; C -1 ; WX 600 ; N abreve ; B 76 -15 576 609 ; C -1 ; WX 600 ; N uhungarumlaut ; B 101 -15 723 672 ; C -1 ; WX 600 ; N ecaron ; B 106 -15 614 669 ; C -1 ; WX 600 ; N Ydieresis ; B 133 0 695 753 ; C -1 ; WX 600 ; N divide ; B 136 48 573 467 ; C -1 ; WX 600 ; N Yacute ; B 133 0 695 805 ; C -1 ; WX 600 ; N Acircumflex ; B 3 0 607 787 ; C -1 ; WX 600 ; N aacute ; B 76 -15 612 672 ; C -1 ; WX 600 ; N Ucircumflex ; B 125 -18 702 787 ; C -1 ; WX 600 ; N yacute ; B -4 -157 683 672 ; C -1 ; WX 600 ; N scommaaccent ; B 78 -250 584 441 ; C -1 ; WX 600 ; N ecircumflex ; B 106 -15 598 654 ; C -1 ; WX 600 ; N Uring ; B 125 -18 702 760 ; C -1 ; WX 600 ; N Udieresis ; B 125 -18 702 753 ; C -1 ; WX 600 ; N aogonek ; B 76 -172 569 441 ; C -1 ; WX 600 ; N Uacute ; B 125 -18 702 805 ; C -1 ; WX 600 ; N uogonek ; B 101 -172 572 426 ; C -1 ; WX 600 ; N Edieresis ; B 53 0 660 753 ; C -1 ; WX 600 ; N Dcroat ; B 43 0 645 562 ; C -1 ; WX 600 ; N commaaccent ; B 145 -250 323 -58 ; C -1 ; WX 600 ; N copyright ; B 53 -18 667 580 ; C -1 ; WX 600 ; N Emacron ; B 53 0 660 698 ; C -1 ; WX 600 ; N ccaron ; B 106 -15 614 669 ; C -1 ; WX 600 ; N aring ; B 76 -15 569 627 ; C -1 ; WX 600 ; N Ncommaaccent ; B 7 -250 712 562 ; C -1 ; WX 600 ; N lacute ; B 95 0 640 805 ; C -1 ; WX 600 ; N agrave ; B 76 -15 569 672 ; C -1 ; WX 600 ; N Tcommaaccent ; B 108 -250 665 562 ; C -1 ; WX 600 ; N Cacute ; B 93 -18 655 805 ; C -1 ; WX 600 ; N atilde ; B 76 -15 629 606 ; C -1 ; WX 600 ; N Edotaccent ; B 53 0 660 753 ; C -1 ; WX 600 ; N scaron ; B 78 -15 614 669 ; C -1 ; WX 600 ; N scedilla ; B 78 -151 584 441 ; C -1 ; WX 600 ; N iacute ; B 95 0 612 672 ; C -1 ; WX 600 ; N lozenge ; B 94 0 519 706 ; C -1 ; WX 600 ; N Rcaron ; B 38 0 642 802 ; C -1 ; WX 600 ; N Gcommaaccent ; B 83 -250 645 580 ; C -1 ; WX 600 ; N ucircumflex ; B 101 -15 572 654 ; C -1 ; WX 600 ; N acircumflex ; B 76 -15 581 654 ; C -1 ; WX 600 ; N Amacron ; B 3 0 607 698 ; C -1 ; WX 600 ; N rcaron ; B 60 0 636 669 ; C -1 ; WX 600 ; N ccedilla ; B 106 -151 614 441 ; C -1 ; WX 600 ; N Zdotaccent ; B 86 0 610 753 ; C -1 ; WX 600 ; N Thorn ; B 79 0 606 562 ; C -1 ; WX 600 ; N Omacron ; B 94 -18 628 698 ; C -1 ; WX 600 ; N Racute ; B 38 0 670 805 ; C -1 ; WX 600 ; N Sacute ; B 76 -20 650 805 ; C -1 ; WX 600 ; N dcaron ; B 85 -15 849 629 ; C -1 ; WX 600 ; N Umacron ; B 125 -18 702 698 ; C -1 ; WX 600 ; N uring ; B 101 -15 572 627 ; C -1 ; WX 600 ; N threesuperior ; B 213 240 501 622 ; C -1 ; WX 600 ; N Ograve ; B 94 -18 625 805 ; C -1 ; WX 600 ; N Agrave ; B 3 0 607 805 ; C -1 ; WX 600 ; N Abreve ; B 3 0 607 732 ; C -1 ; WX 600 ; N multiply ; B 103 43 607 470 ; C -1 ; WX 600 ; N uacute ; B 101 -15 602 672 ; C -1 ; WX 600 ; N Tcaron ; B 108 0 665 802 ; C -1 ; WX 600 ; N partialdiff ; B 45 -38 546 710 ; C -1 ; WX 600 ; N ydieresis ; B -4 -157 683 620 ; C -1 ; WX 600 ; N Nacute ; B 7 -13 712 805 ; C -1 ; WX 600 ; N icircumflex ; B 95 0 551 654 ; C -1 ; WX 600 ; N Ecircumflex ; B 53 0 660 787 ; C -1 ; WX 600 ; N adieresis ; B 76 -15 575 620 ; C -1 ; WX 600 ; N edieresis ; B 106 -15 598 620 ; C -1 ; WX 600 ; N cacute ; B 106 -15 612 672 ; C -1 ; WX 600 ; N nacute ; B 26 0 602 672 ; C -1 ; WX 600 ; N umacron ; B 101 -15 600 565 ; C -1 ; WX 600 ; N Ncaron ; B 7 -13 712 802 ; C -1 ; WX 600 ; N Iacute ; B 96 0 640 805 ; C -1 ; WX 600 ; N plusminus ; B 96 44 594 558 ; C -1 ; WX 600 ; N brokenbar ; B 238 -175 469 675 ; C -1 ; WX 600 ; N registered ; B 53 -18 667 580 ; C -1 ; WX 600 ; N Gbreve ; B 83 -18 645 732 ; C -1 ; WX 600 ; N Idotaccent ; B 96 0 623 753 ; C -1 ; WX 600 ; N summation ; B 15 -10 670 706 ; C -1 ; WX 600 ; N Egrave ; B 53 0 660 805 ; C -1 ; WX 600 ; N racute ; B 60 0 636 672 ; C -1 ; WX 600 ; N omacron ; B 102 -15 600 565 ; C -1 ; WX 600 ; N Zacute ; B 86 0 670 805 ; C -1 ; WX 600 ; N Zcaron ; B 86 0 642 802 ; C -1 ; WX 600 ; N greaterequal ; B 98 0 594 710 ; C -1 ; WX 600 ; N Eth ; B 43 0 645 562 ; C -1 ; WX 600 ; N Ccedilla ; B 93 -151 658 580 ; C -1 ; WX 600 ; N lcommaaccent ; B 95 -250 515 629 ; C -1 ; WX 600 ; N tcaron ; B 167 -15 587 717 ; C -1 ; WX 600 ; N eogonek ; B 106 -172 598 441 ; C -1 ; WX 600 ; N Uogonek ; B 124 -172 702 562 ; C -1 ; WX 600 ; N Aacute ; B 3 0 660 805 ; C -1 ; WX 600 ; N Adieresis ; B 3 0 607 753 ; C -1 ; WX 600 ; N egrave ; B 106 -15 598 672 ; C -1 ; WX 600 ; N zacute ; B 99 0 612 672 ; C -1 ; WX 600 ; N iogonek ; B 95 -172 515 657 ; C -1 ; WX 600 ; N Oacute ; B 94 -18 640 805 ; C -1 ; WX 600 ; N oacute ; B 102 -15 612 672 ; C -1 ; WX 600 ; N amacron ; B 76 -15 600 565 ; C -1 ; WX 600 ; N sacute ; B 78 -15 612 672 ; C -1 ; WX 600 ; N idieresis ; B 95 0 545 620 ; C -1 ; WX 600 ; N Ocircumflex ; B 94 -18 625 787 ; C -1 ; WX 600 ; N Ugrave ; B 125 -18 702 805 ; C -1 ; WX 600 ; N Delta ; B 6 0 598 688 ; C -1 ; WX 600 ; N thorn ; B -24 -157 605 629 ; C -1 ; WX 600 ; N twosuperior ; B 230 249 535 622 ; C -1 ; WX 600 ; N Odieresis ; B 94 -18 625 753 ; C -1 ; WX 600 ; N mu ; B 72 -157 572 426 ; C -1 ; WX 600 ; N igrave ; B 95 0 515 672 ; C -1 ; WX 600 ; N ohungarumlaut ; B 102 -15 723 672 ; C -1 ; WX 600 ; N Eogonek ; B 53 -172 660 562 ; C -1 ; WX 600 ; N dcroat ; B 85 -15 704 629 ; C -1 ; WX 600 ; N threequarters ; B 73 -56 659 666 ; C -1 ; WX 600 ; N Scedilla ; B 76 -151 650 580 ; C -1 ; WX 600 ; N lcaron ; B 95 0 667 629 ; C -1 ; WX 600 ; N Kcommaaccent ; B 38 -250 671 562 ; C -1 ; WX 600 ; N Lacute ; B 47 0 607 805 ; C -1 ; WX 600 ; N trademark ; B 75 263 742 562 ; C -1 ; WX 600 ; N edotaccent ; B 106 -15 598 620 ; C -1 ; WX 600 ; N Igrave ; B 96 0 623 805 ; C -1 ; WX 600 ; N Imacron ; B 96 0 628 698 ; C -1 ; WX 600 ; N Lcaron ; B 47 0 632 562 ; C -1 ; WX 600 ; N onehalf ; B 65 -57 669 665 ; C -1 ; WX 600 ; N lessequal ; B 98 0 645 710 ; C -1 ; WX 600 ; N ocircumflex ; B 102 -15 588 654 ; C -1 ; WX 600 ; N ntilde ; B 26 0 629 606 ; C -1 ; WX 600 ; N Uhungarumlaut ; B 125 -18 761 805 ; C -1 ; WX 600 ; N Eacute ; B 53 0 670 805 ; C -1 ; WX 600 ; N emacron ; B 106 -15 600 565 ; C -1 ; WX 600 ; N gbreve ; B 61 -157 657 609 ; C -1 ; WX 600 ; N onequarter ; B 65 -57 674 665 ; C -1 ; WX 600 ; N Scaron ; B 76 -20 672 802 ; C -1 ; WX 600 ; N Scommaaccent ; B 76 -250 650 580 ; C -1 ; WX 600 ; N Ohungarumlaut ; B 94 -18 751 805 ; C -1 ; WX 600 ; N degree ; B 214 269 576 622 ; C -1 ; WX 600 ; N ograve ; B 102 -15 588 672 ; C -1 ; WX 600 ; N Ccaron ; B 93 -18 672 802 ; C -1 ; WX 600 ; N ugrave ; B 101 -15 572 672 ; C -1 ; WX 600 ; N radical ; B 85 -15 765 792 ; C -1 ; WX 600 ; N Dcaron ; B 43 0 645 802 ; C -1 ; WX 600 ; N rcommaaccent ; B 60 -250 636 441 ; C -1 ; WX 600 ; N Ntilde ; B 7 -13 712 729 ; C -1 ; WX 600 ; N otilde ; B 102 -15 629 606 ; C -1 ; WX 600 ; N Rcommaaccent ; B 38 -250 598 562 ; C -1 ; WX 600 ; N Lcommaaccent ; B 47 -250 607 562 ; C -1 ; WX 600 ; N Atilde ; B 3 0 655 729 ; C -1 ; WX 600 ; N Aogonek ; B 3 -172 607 562 ; C -1 ; WX 600 ; N Aring ; B 3 0 607 750 ; C -1 ; WX 600 ; N Otilde ; B 94 -18 655 729 ; C -1 ; WX 600 ; N zdotaccent ; B 99 0 593 620 ; C -1 ; WX 600 ; N Ecaron ; B 53 0 660 802 ; C -1 ; WX 600 ; N Iogonek ; B 96 -172 623 562 ; C -1 ; WX 600 ; N kcommaaccent ; B 58 -250 633 629 ; C -1 ; WX 600 ; N minus ; B 129 232 580 283 ; C -1 ; WX 600 ; N Icircumflex ; B 96 0 623 787 ; C -1 ; WX 600 ; N ncaron ; B 26 0 614 669 ; C -1 ; WX 600 ; N tcommaaccent ; B 165 -250 561 561 ; C -1 ; WX 600 ; N logicalnot ; B 155 108 591 369 ; C -1 ; WX 600 ; N odieresis ; B 102 -15 588 620 ; C -1 ; WX 600 ; N udieresis ; B 101 -15 575 620 ; C -1 ; WX 600 ; N notequal ; B 43 -16 621 529 ; C -1 ; WX 600 ; N gcommaaccent ; B 61 -157 657 708 ; C -1 ; WX 600 ; N eth ; B 102 -15 639 629 ; C -1 ; WX 600 ; N zcaron ; B 99 0 624 669 ; C -1 ; WX 600 ; N ncommaaccent ; B 26 -250 585 441 ; C -1 ; WX 600 ; N onesuperior ; B 231 249 491 622 ; C -1 ; WX 600 ; N imacron ; B 95 0 543 565 ; EndCharMetrics EndFontMetrics gle-graphics-4.2.4c/src/fonts/Adobe-Core35_AFMs-314/NewCenturySchlbk-Bold.afm0000664000000000000000000012110011405446017024666 0ustar rootrootStartFontMetrics 4.1 Comment Copyright (c) 1985, 1987, 1988, 1991, 1992, 1997 Adobe Systems Incorporated. All Rights Reserved. Comment Creation Date: Thu May 1 14:22:15 1997 Comment UniqueID 43095 Comment VMusage 44510 55535 FontName NewCenturySchlbk-Bold FullName New Century Schoolbook Bold FamilyName New Century Schoolbook Weight Bold ItalicAngle 0 IsFixedPitch false FontBBox -165 -250 1000 988 UnderlinePosition -100 UnderlineThickness 50 Version 002.000 Notice Copyright (c) 1985, 1987, 1988, 1991, 1992, 1997 Adobe Systems Incorporated. All Rights Reserved. EncodingScheme AdobeStandardEncoding CapHeight 722 XHeight 475 Ascender 737 Descender -205 StdHW 54 StdVW 154 StartCharMetrics 314 C 32 ; WX 287 ; N space ; B 0 0 0 0 ; C 33 ; WX 296 ; N exclam ; B 53 -15 243 737 ; C 34 ; WX 333 ; N quotedbl ; B 0 378 333 737 ; C 35 ; WX 574 ; N numbersign ; B 36 0 538 690 ; C 36 ; WX 574 ; N dollar ; B 25 -141 549 810 ; C 37 ; WX 833 ; N percent ; B 14 -15 819 705 ; C 38 ; WX 852 ; N ampersand ; B 34 -15 818 737 ; C 39 ; WX 241 ; N quoteright ; B 22 378 220 737 ; C 40 ; WX 389 ; N parenleft ; B 77 -117 345 745 ; C 41 ; WX 389 ; N parenright ; B 44 -117 312 745 ; C 42 ; WX 500 ; N asterisk ; B 54 302 446 737 ; C 43 ; WX 606 ; N plus ; B 50 0 556 506 ; C 44 ; WX 278 ; N comma ; B 40 -184 238 175 ; C 45 ; WX 333 ; N hyphen ; B 42 174 291 302 ; C 46 ; WX 278 ; N period ; B 44 -15 234 175 ; C 47 ; WX 278 ; N slash ; B -42 -15 320 737 ; C 48 ; WX 574 ; N zero ; B 27 -15 547 705 ; C 49 ; WX 574 ; N one ; B 83 0 491 705 ; C 50 ; WX 574 ; N two ; B 19 0 531 705 ; C 51 ; WX 574 ; N three ; B 23 -15 531 705 ; C 52 ; WX 574 ; N four ; B 19 0 547 705 ; C 53 ; WX 574 ; N five ; B 32 -15 534 705 ; C 54 ; WX 574 ; N six ; B 27 -15 547 705 ; C 55 ; WX 574 ; N seven ; B 45 -15 547 705 ; C 56 ; WX 574 ; N eight ; B 27 -15 548 705 ; C 57 ; WX 574 ; N nine ; B 27 -15 547 705 ; C 58 ; WX 278 ; N colon ; B 44 -15 234 485 ; C 59 ; WX 278 ; N semicolon ; B 40 -184 238 485 ; C 60 ; WX 606 ; N less ; B 50 -9 556 515 ; C 61 ; WX 606 ; N equal ; B 50 103 556 403 ; C 62 ; WX 606 ; N greater ; B 50 -9 556 515 ; C 63 ; WX 500 ; N question ; B 23 -15 477 737 ; C 64 ; WX 747 ; N at ; B -2 -15 750 737 ; C 65 ; WX 759 ; N A ; B -19 0 778 737 ; C 66 ; WX 778 ; N B ; B 19 0 739 722 ; C 67 ; WX 778 ; N C ; B 39 -15 723 737 ; C 68 ; WX 833 ; N D ; B 19 0 794 722 ; C 69 ; WX 759 ; N E ; B 19 0 708 722 ; C 70 ; WX 722 ; N F ; B 19 0 697 722 ; C 71 ; WX 833 ; N G ; B 39 -15 818 737 ; C 72 ; WX 870 ; N H ; B 19 0 851 722 ; C 73 ; WX 444 ; N I ; B 29 0 415 722 ; C 74 ; WX 648 ; N J ; B 6 -15 642 722 ; C 75 ; WX 815 ; N K ; B 19 0 822 722 ; C 76 ; WX 722 ; N L ; B 19 0 703 722 ; C 77 ; WX 981 ; N M ; B 10 0 971 722 ; C 78 ; WX 833 ; N N ; B 5 -10 828 722 ; C 79 ; WX 833 ; N O ; B 39 -15 794 737 ; C 80 ; WX 759 ; N P ; B 24 0 735 722 ; C 81 ; WX 833 ; N Q ; B 39 -189 808 737 ; C 82 ; WX 815 ; N R ; B 19 -15 815 722 ; C 83 ; WX 667 ; N S ; B 51 -15 634 737 ; C 84 ; WX 722 ; N T ; B 16 0 706 722 ; C 85 ; WX 833 ; N U ; B 14 -15 825 722 ; C 86 ; WX 759 ; N V ; B -19 -10 778 722 ; C 87 ; WX 981 ; N W ; B 7 -10 974 722 ; C 88 ; WX 722 ; N X ; B -12 0 734 722 ; C 89 ; WX 722 ; N Y ; B -12 0 734 722 ; C 90 ; WX 667 ; N Z ; B 28 0 639 722 ; C 91 ; WX 389 ; N bracketleft ; B 84 -109 339 737 ; C 92 ; WX 606 ; N backslash ; B 122 -15 484 737 ; C 93 ; WX 389 ; N bracketright ; B 50 -109 305 737 ; C 94 ; WX 606 ; N asciicircum ; B 66 325 540 690 ; C 95 ; WX 500 ; N underscore ; B 0 -125 500 -75 ; C 96 ; WX 241 ; N quoteleft ; B 22 378 220 737 ; C 97 ; WX 611 ; N a ; B 40 -15 601 485 ; C 98 ; WX 648 ; N b ; B 4 -15 616 737 ; C 99 ; WX 556 ; N c ; B 32 -15 524 485 ; C 100 ; WX 667 ; N d ; B 32 -15 644 737 ; C 101 ; WX 574 ; N e ; B 32 -15 542 485 ; C 102 ; WX 389 ; N f ; B 11 0 461 737 ; L i fi ; L l fl ; C 103 ; WX 611 ; N g ; B 30 -205 623 535 ; C 104 ; WX 685 ; N h ; B 17 0 662 737 ; C 105 ; WX 370 ; N i ; B 26 0 338 737 ; C 106 ; WX 352 ; N j ; B -86 -205 271 737 ; C 107 ; WX 667 ; N k ; B 17 0 662 737 ; C 108 ; WX 352 ; N l ; B 17 0 329 737 ; C 109 ; WX 963 ; N m ; B 17 0 940 485 ; C 110 ; WX 685 ; N n ; B 17 0 662 485 ; C 111 ; WX 611 ; N o ; B 32 -15 579 485 ; C 112 ; WX 667 ; N p ; B 17 -205 629 485 ; C 113 ; WX 648 ; N q ; B 32 -205 638 485 ; C 114 ; WX 519 ; N r ; B 17 0 516 485 ; C 115 ; WX 500 ; N s ; B 48 -15 476 485 ; C 116 ; WX 426 ; N t ; B 21 -15 405 675 ; C 117 ; WX 685 ; N u ; B 17 -15 668 475 ; C 118 ; WX 611 ; N v ; B 12 -10 599 475 ; C 119 ; WX 889 ; N w ; B 16 -10 873 475 ; C 120 ; WX 611 ; N x ; B 12 0 599 475 ; C 121 ; WX 611 ; N y ; B 12 -205 599 475 ; C 122 ; WX 537 ; N z ; B 38 0 499 475 ; C 123 ; WX 389 ; N braceleft ; B 36 -109 313 737 ; C 124 ; WX 606 ; N bar ; B 249 -250 357 750 ; C 125 ; WX 389 ; N braceright ; B 76 -109 353 737 ; C 126 ; WX 606 ; N asciitilde ; B 72 160 534 346 ; C 161 ; WX 296 ; N exclamdown ; B 53 -205 243 547 ; C 162 ; WX 574 ; N cent ; B 32 -102 528 572 ; C 163 ; WX 574 ; N sterling ; B 16 -15 558 705 ; C 164 ; WX 167 ; N fraction ; B -165 -15 332 705 ; C 165 ; WX 574 ; N yen ; B -10 0 584 690 ; C 166 ; WX 574 ; N florin ; B 14 -205 548 737 ; C 167 ; WX 500 ; N section ; B 62 -86 438 737 ; C 168 ; WX 574 ; N currency ; B 27 84 547 605 ; C 169 ; WX 241 ; N quotesingle ; B 53 378 189 737 ; C 170 ; WX 481 ; N quotedblleft ; B 22 378 459 737 ; C 171 ; WX 500 ; N guillemotleft ; B 46 79 454 397 ; C 172 ; WX 333 ; N guilsinglleft ; B 62 79 271 397 ; C 173 ; WX 333 ; N guilsinglright ; B 62 79 271 397 ; C 174 ; WX 685 ; N fi ; B 11 0 666 737 ; C 175 ; WX 685 ; N fl ; B 11 0 666 737 ; C 177 ; WX 500 ; N endash ; B 0 184 500 292 ; C 178 ; WX 500 ; N dagger ; B 39 -101 461 737 ; C 179 ; WX 500 ; N daggerdbl ; B 39 -89 461 737 ; C 180 ; WX 278 ; N periodcentered ; B 53 200 225 372 ; C 182 ; WX 747 ; N paragraph ; B 96 -71 631 722 ; C 183 ; WX 606 ; N bullet ; B 122 180 484 542 ; C 184 ; WX 241 ; N quotesinglbase ; B 22 -184 220 175 ; C 185 ; WX 481 ; N quotedblbase ; B 22 -184 459 175 ; C 186 ; WX 481 ; N quotedblright ; B 22 378 459 737 ; C 187 ; WX 500 ; N guillemotright ; B 46 79 454 397 ; C 188 ; WX 1000 ; N ellipsis ; B 72 -15 928 175 ; C 189 ; WX 1000 ; N perthousand ; B 7 -15 993 705 ; C 191 ; WX 500 ; N questiondown ; B 23 -205 477 547 ; C 193 ; WX 333 ; N grave ; B 2 547 249 737 ; C 194 ; WX 333 ; N acute ; B 84 547 331 737 ; C 195 ; WX 333 ; N circumflex ; B -10 547 344 725 ; C 196 ; WX 333 ; N tilde ; B -24 563 357 705 ; C 197 ; WX 333 ; N macron ; B -6 582 339 664 ; C 198 ; WX 333 ; N breve ; B 9 547 324 714 ; C 199 ; WX 333 ; N dotaccent ; B 95 565 267 737 ; C 200 ; WX 333 ; N dieresis ; B -12 565 345 707 ; C 202 ; WX 333 ; N ring ; B 58 545 274 761 ; C 203 ; WX 333 ; N cedilla ; B 17 -224 248 0 ; C 205 ; WX 333 ; N hungarumlaut ; B -16 547 431 737 ; C 206 ; WX 333 ; N ogonek ; B 72 -220 330 4 ; C 207 ; WX 333 ; N caron ; B -10 547 344 725 ; C 208 ; WX 1000 ; N emdash ; B 0 184 1000 292 ; C 225 ; WX 981 ; N AE ; B -29 0 963 722 ; C 227 ; WX 367 ; N ordfeminine ; B 1 407 393 705 ; C 232 ; WX 722 ; N Lslash ; B 19 0 703 722 ; C 233 ; WX 833 ; N Oslash ; B 39 -53 794 775 ; C 234 ; WX 1000 ; N OE ; B 0 0 982 722 ; C 235 ; WX 367 ; N ordmasculine ; B 1 407 366 705 ; C 241 ; WX 870 ; N ae ; B 32 -15 838 485 ; C 245 ; WX 370 ; N dotlessi ; B 26 0 338 475 ; C 248 ; WX 352 ; N lslash ; B 17 0 329 737 ; C 249 ; WX 611 ; N oslash ; B 32 -103 579 573 ; C 250 ; WX 907 ; N oe ; B 32 -15 875 485 ; C 251 ; WX 611 ; N germandbls ; B -2 -15 580 737 ; C -1 ; WX 444 ; N Idieresis ; B 29 0 415 921 ; C -1 ; WX 574 ; N eacute ; B 32 -15 542 737 ; C -1 ; WX 611 ; N abreve ; B 40 -15 601 714 ; C -1 ; WX 685 ; N uhungarumlaut ; B 17 -15 668 737 ; C -1 ; WX 574 ; N ecaron ; B 32 -15 542 725 ; C -1 ; WX 722 ; N Ydieresis ; B -12 0 734 921 ; C -1 ; WX 606 ; N divide ; B 50 -40 556 546 ; C -1 ; WX 722 ; N Yacute ; B -12 0 734 964 ; C -1 ; WX 759 ; N Acircumflex ; B -19 0 778 952 ; C -1 ; WX 611 ; N aacute ; B 40 -15 601 737 ; C -1 ; WX 833 ; N Ucircumflex ; B 14 -15 825 952 ; C -1 ; WX 611 ; N yacute ; B 12 -205 599 737 ; C -1 ; WX 500 ; N scommaaccent ; B 48 -250 476 485 ; C -1 ; WX 574 ; N ecircumflex ; B 32 -15 542 725 ; C -1 ; WX 833 ; N Uring ; B 14 -15 825 988 ; C -1 ; WX 833 ; N Udieresis ; B 14 -15 825 921 ; C -1 ; WX 611 ; N aogonek ; B 40 -231 628 485 ; C -1 ; WX 833 ; N Uacute ; B 14 -15 825 964 ; C -1 ; WX 685 ; N uogonek ; B 17 -220 670 475 ; C -1 ; WX 759 ; N Edieresis ; B 19 0 708 921 ; C -1 ; WX 833 ; N Dcroat ; B 19 0 794 722 ; C -1 ; WX 250 ; N commaaccent ; B 45 -250 187 -50 ; C -1 ; WX 747 ; N copyright ; B -2 -15 750 737 ; C -1 ; WX 759 ; N Emacron ; B 19 0 708 891 ; C -1 ; WX 556 ; N ccaron ; B 32 -15 524 725 ; C -1 ; WX 611 ; N aring ; B 40 -15 601 761 ; C -1 ; WX 833 ; N Ncommaaccent ; B 5 -230 828 722 ; C -1 ; WX 352 ; N lacute ; B 17 0 341 964 ; C -1 ; WX 611 ; N agrave ; B 40 -15 601 737 ; C -1 ; WX 722 ; N Tcommaaccent ; B 16 -250 706 722 ; C -1 ; WX 778 ; N Cacute ; B 39 -15 723 964 ; C -1 ; WX 611 ; N atilde ; B 40 -15 601 705 ; C -1 ; WX 759 ; N Edotaccent ; B 19 0 708 951 ; C -1 ; WX 500 ; N scaron ; B 48 -15 476 725 ; C -1 ; WX 500 ; N scedilla ; B 48 -224 476 485 ; C -1 ; WX 370 ; N iacute ; B 26 0 350 737 ; C -1 ; WX 494 ; N lozenge ; B 10 0 484 745 ; C -1 ; WX 815 ; N Rcaron ; B 19 -15 815 952 ; C -1 ; WX 833 ; N Gcommaaccent ; B 39 -250 818 737 ; C -1 ; WX 685 ; N ucircumflex ; B 17 -15 668 725 ; C -1 ; WX 611 ; N acircumflex ; B 40 -15 601 725 ; C -1 ; WX 759 ; N Amacron ; B -19 0 778 891 ; C -1 ; WX 519 ; N rcaron ; B 17 0 516 725 ; C -1 ; WX 556 ; N ccedilla ; B 32 -224 524 485 ; C -1 ; WX 667 ; N Zdotaccent ; B 28 0 639 951 ; C -1 ; WX 759 ; N Thorn ; B 24 0 735 722 ; C -1 ; WX 833 ; N Omacron ; B 39 -15 794 891 ; C -1 ; WX 815 ; N Racute ; B 19 -15 815 964 ; C -1 ; WX 667 ; N Sacute ; B 51 -15 634 964 ; C -1 ; WX 747 ; N dcaron ; B 32 -15 748 737 ; C -1 ; WX 833 ; N Umacron ; B 14 -15 825 891 ; C -1 ; WX 685 ; N uring ; B 17 -15 668 761 ; C -1 ; WX 344 ; N threesuperior ; B -3 273 355 705 ; C -1 ; WX 833 ; N Ograve ; B 39 -15 794 964 ; C -1 ; WX 759 ; N Agrave ; B -19 0 778 964 ; C -1 ; WX 759 ; N Abreve ; B -19 0 778 941 ; C -1 ; WX 606 ; N multiply ; B 65 15 541 491 ; C -1 ; WX 685 ; N uacute ; B 17 -15 668 737 ; C -1 ; WX 722 ; N Tcaron ; B 16 0 706 952 ; C -1 ; WX 494 ; N partialdiff ; B 11 -21 494 750 ; C -1 ; WX 611 ; N ydieresis ; B 12 -205 599 694 ; C -1 ; WX 833 ; N Nacute ; B 5 -10 828 964 ; C -1 ; WX 370 ; N icircumflex ; B 9 0 363 725 ; C -1 ; WX 759 ; N Ecircumflex ; B 19 0 708 952 ; C -1 ; WX 611 ; N adieresis ; B 40 -15 601 694 ; C -1 ; WX 574 ; N edieresis ; B 32 -15 542 694 ; C -1 ; WX 556 ; N cacute ; B 32 -15 524 737 ; C -1 ; WX 685 ; N nacute ; B 17 0 662 737 ; C -1 ; WX 685 ; N umacron ; B 17 -15 668 664 ; C -1 ; WX 833 ; N Ncaron ; B 5 -10 828 952 ; C -1 ; WX 444 ; N Iacute ; B 29 0 415 964 ; C -1 ; WX 606 ; N plusminus ; B 50 0 556 506 ; C -1 ; WX 606 ; N brokenbar ; B 249 -175 357 675 ; C -1 ; WX 747 ; N registered ; B -2 -15 750 737 ; C -1 ; WX 833 ; N Gbreve ; B 39 -15 818 941 ; C -1 ; WX 444 ; N Idotaccent ; B 29 0 415 951 ; C -1 ; WX 600 ; N summation ; B 14 -10 585 706 ; C -1 ; WX 759 ; N Egrave ; B 19 0 708 964 ; C -1 ; WX 519 ; N racute ; B 17 0 516 737 ; C -1 ; WX 611 ; N omacron ; B 32 -15 579 664 ; C -1 ; WX 667 ; N Zacute ; B 28 0 639 964 ; C -1 ; WX 667 ; N Zcaron ; B 28 0 639 952 ; C -1 ; WX 549 ; N greaterequal ; B 26 0 523 704 ; C -1 ; WX 833 ; N Eth ; B 19 0 794 722 ; C -1 ; WX 778 ; N Ccedilla ; B 39 -224 723 737 ; C -1 ; WX 352 ; N lcommaaccent ; B 17 -250 329 737 ; C -1 ; WX 456 ; N tcaron ; B 21 -15 450 795 ; C -1 ; WX 574 ; N eogonek ; B 32 -220 542 485 ; C -1 ; WX 833 ; N Uogonek ; B 14 -220 825 722 ; C -1 ; WX 759 ; N Aacute ; B -19 0 778 964 ; C -1 ; WX 759 ; N Adieresis ; B -19 0 778 921 ; C -1 ; WX 574 ; N egrave ; B 32 -15 542 737 ; C -1 ; WX 537 ; N zacute ; B 38 0 499 737 ; C -1 ; WX 370 ; N iogonek ; B 26 -224 353 737 ; C -1 ; WX 833 ; N Oacute ; B 39 -15 794 964 ; C -1 ; WX 611 ; N oacute ; B 32 -15 579 737 ; C -1 ; WX 611 ; N amacron ; B 40 -15 601 664 ; C -1 ; WX 500 ; N sacute ; B 48 -15 476 737 ; C -1 ; WX 370 ; N idieresis ; B 7 0 364 694 ; C -1 ; WX 833 ; N Ocircumflex ; B 39 -15 794 952 ; C -1 ; WX 833 ; N Ugrave ; B 14 -15 825 964 ; C -1 ; WX 612 ; N Delta ; B 6 0 608 688 ; C -1 ; WX 667 ; N thorn ; B 17 -205 629 737 ; C -1 ; WX 344 ; N twosuperior ; B -3 282 350 705 ; C -1 ; WX 833 ; N Odieresis ; B 39 -15 794 921 ; C -1 ; WX 685 ; N mu ; B 17 -205 668 475 ; C -1 ; WX 370 ; N igrave ; B 21 0 338 737 ; C -1 ; WX 611 ; N ohungarumlaut ; B 32 -15 579 737 ; C -1 ; WX 759 ; N Eogonek ; B 19 -224 712 722 ; C -1 ; WX 667 ; N dcroat ; B 32 -15 644 737 ; C -1 ; WX 861 ; N threequarters ; B 15 -15 838 705 ; C -1 ; WX 667 ; N Scedilla ; B 51 -224 634 737 ; C -1 ; WX 448 ; N lcaron ; B 17 0 439 737 ; C -1 ; WX 815 ; N Kcommaaccent ; B 19 -250 822 722 ; C -1 ; WX 722 ; N Lacute ; B 19 0 703 964 ; C -1 ; WX 1000 ; N trademark ; B 6 317 982 722 ; C -1 ; WX 574 ; N edotaccent ; B 32 -15 542 724 ; C -1 ; WX 444 ; N Igrave ; B 29 0 415 964 ; C -1 ; WX 444 ; N Imacron ; B 29 0 415 891 ; C -1 ; WX 722 ; N Lcaron ; B 19 0 703 737 ; C -1 ; WX 861 ; N onehalf ; B 31 -15 838 705 ; C -1 ; WX 549 ; N lessequal ; B 29 0 526 704 ; C -1 ; WX 611 ; N ocircumflex ; B 32 -15 579 725 ; C -1 ; WX 685 ; N ntilde ; B 17 0 662 705 ; C -1 ; WX 833 ; N Uhungarumlaut ; B 14 -15 825 964 ; C -1 ; WX 759 ; N Eacute ; B 19 0 708 964 ; C -1 ; WX 574 ; N emacron ; B 32 -15 542 664 ; C -1 ; WX 611 ; N gbreve ; B 30 -205 623 734 ; C -1 ; WX 861 ; N onequarter ; B 31 -15 838 705 ; C -1 ; WX 667 ; N Scaron ; B 51 -15 634 952 ; C -1 ; WX 667 ; N Scommaaccent ; B 51 -250 634 737 ; C -1 ; WX 833 ; N Ohungarumlaut ; B 39 -15 794 964 ; C -1 ; WX 400 ; N degree ; B 57 419 343 705 ; C -1 ; WX 611 ; N ograve ; B 32 -15 579 737 ; C -1 ; WX 778 ; N Ccaron ; B 39 -15 723 952 ; C -1 ; WX 685 ; N ugrave ; B 17 -15 668 737 ; C -1 ; WX 549 ; N radical ; B 10 -46 512 850 ; C -1 ; WX 833 ; N Dcaron ; B 19 0 794 952 ; C -1 ; WX 519 ; N rcommaaccent ; B 17 -250 516 485 ; C -1 ; WX 833 ; N Ntilde ; B 5 -10 828 932 ; C -1 ; WX 611 ; N otilde ; B 32 -15 579 705 ; C -1 ; WX 815 ; N Rcommaaccent ; B 19 -230 815 722 ; C -1 ; WX 722 ; N Lcommaaccent ; B 19 -250 703 722 ; C -1 ; WX 759 ; N Atilde ; B -19 0 778 932 ; C -1 ; WX 759 ; N Aogonek ; B -19 -224 793 737 ; C -1 ; WX 759 ; N Aring ; B -19 0 778 988 ; C -1 ; WX 833 ; N Otilde ; B 39 -15 794 932 ; C -1 ; WX 537 ; N zdotaccent ; B 38 0 499 724 ; C -1 ; WX 759 ; N Ecaron ; B 19 0 708 952 ; C -1 ; WX 444 ; N Iogonek ; B 29 -220 415 722 ; C -1 ; WX 667 ; N kcommaaccent ; B 17 -250 662 737 ; C -1 ; WX 606 ; N minus ; B 50 199 556 307 ; C -1 ; WX 444 ; N Icircumflex ; B 29 0 415 952 ; C -1 ; WX 685 ; N ncaron ; B 17 0 662 725 ; C -1 ; WX 426 ; N tcommaaccent ; B 21 -250 405 675 ; C -1 ; WX 606 ; N logicalnot ; B 50 103 556 403 ; C -1 ; WX 611 ; N odieresis ; B 32 -15 579 694 ; C -1 ; WX 685 ; N udieresis ; B 17 -15 668 694 ; C -1 ; WX 549 ; N notequal ; B 15 -49 540 570 ; C -1 ; WX 611 ; N gcommaaccent ; B 30 -205 623 842 ; C -1 ; WX 611 ; N eth ; B 32 -15 579 737 ; C -1 ; WX 537 ; N zcaron ; B 38 0 499 725 ; C -1 ; WX 685 ; N ncommaaccent ; B 17 -250 662 485 ; C -1 ; WX 344 ; N onesuperior ; B 31 282 309 705 ; C -1 ; WX 370 ; N imacron ; B 26 0 338 664 ; EndCharMetrics StartKernData StartKernPairs 1205 KPX A T -55 KPX A Tcaron -55 KPX A Tcommaaccent -55 KPX A U -18 KPX A Uacute -18 KPX A Ucircumflex -18 KPX A Udieresis -18 KPX A Ugrave -18 KPX A Uhungarumlaut -18 KPX A Umacron -18 KPX A Uogonek -18 KPX A Uring -18 KPX A V -74 KPX A W -74 KPX A Y -91 KPX A Yacute -91 KPX A Ydieresis -91 KPX A quotedblright -74 KPX A quoteright -74 KPX A v -18 KPX A w -18 KPX A y -18 KPX A yacute -18 KPX A ydieresis -18 KPX Aacute T -55 KPX Aacute Tcaron -55 KPX Aacute Tcommaaccent -55 KPX Aacute U -18 KPX Aacute Uacute -18 KPX Aacute Ucircumflex -18 KPX Aacute Udieresis -18 KPX Aacute Ugrave -18 KPX Aacute Uhungarumlaut -18 KPX Aacute Umacron -18 KPX Aacute Uogonek -18 KPX Aacute Uring -18 KPX Aacute V -74 KPX Aacute W -74 KPX Aacute Y -91 KPX Aacute Yacute -91 KPX Aacute Ydieresis -91 KPX Aacute quotedblright -74 KPX Aacute quoteright -74 KPX Aacute v -18 KPX Aacute w -18 KPX Aacute y -18 KPX Aacute yacute -18 KPX Aacute ydieresis -18 KPX Abreve T -55 KPX Abreve Tcaron -55 KPX Abreve Tcommaaccent -55 KPX Abreve U -18 KPX Abreve Uacute -18 KPX Abreve Ucircumflex -18 KPX Abreve Udieresis -18 KPX Abreve Ugrave -18 KPX Abreve Uhungarumlaut -18 KPX Abreve Umacron -18 KPX Abreve Uogonek -18 KPX Abreve Uring -18 KPX Abreve V -74 KPX Abreve W -74 KPX Abreve Y -91 KPX Abreve Yacute -91 KPX Abreve Ydieresis -91 KPX Abreve quotedblright -74 KPX Abreve quoteright -74 KPX Abreve v -18 KPX Abreve w -18 KPX Abreve y -18 KPX Abreve yacute -18 KPX Abreve ydieresis -18 KPX Acircumflex T -55 KPX Acircumflex Tcaron -55 KPX Acircumflex Tcommaaccent -55 KPX Acircumflex U -18 KPX Acircumflex Uacute -18 KPX Acircumflex Ucircumflex -18 KPX Acircumflex Udieresis -18 KPX Acircumflex Ugrave -18 KPX Acircumflex Uhungarumlaut -18 KPX Acircumflex Umacron -18 KPX Acircumflex Uogonek -18 KPX Acircumflex Uring -18 KPX Acircumflex V -74 KPX Acircumflex W -74 KPX Acircumflex Y -91 KPX Acircumflex Yacute -91 KPX Acircumflex Ydieresis -91 KPX Acircumflex quotedblright -74 KPX Acircumflex quoteright -74 KPX Acircumflex v -18 KPX Acircumflex w -18 KPX Acircumflex y -18 KPX Acircumflex yacute -18 KPX Acircumflex ydieresis -18 KPX Adieresis T -55 KPX Adieresis Tcaron -55 KPX Adieresis Tcommaaccent -55 KPX Adieresis U -18 KPX Adieresis Uacute -18 KPX Adieresis Ucircumflex -18 KPX Adieresis Udieresis -18 KPX Adieresis Ugrave -18 KPX Adieresis Uhungarumlaut -18 KPX Adieresis Umacron -18 KPX Adieresis Uogonek -18 KPX Adieresis Uring -18 KPX Adieresis V -74 KPX Adieresis W -74 KPX Adieresis Y -91 KPX Adieresis Yacute -91 KPX Adieresis Ydieresis -91 KPX Adieresis quotedblright -74 KPX Adieresis quoteright -74 KPX Adieresis v -18 KPX Adieresis w -18 KPX Adieresis y -18 KPX Adieresis yacute -18 KPX Adieresis ydieresis -18 KPX Agrave T -55 KPX Agrave Tcaron -55 KPX Agrave Tcommaaccent -55 KPX Agrave U -18 KPX Agrave Uacute -18 KPX Agrave Ucircumflex -18 KPX Agrave Udieresis -18 KPX Agrave Ugrave -18 KPX Agrave Uhungarumlaut -18 KPX Agrave Umacron -18 KPX Agrave Uogonek -18 KPX Agrave Uring -18 KPX Agrave V -74 KPX Agrave W -74 KPX Agrave Y -91 KPX Agrave Yacute -91 KPX Agrave Ydieresis -91 KPX Agrave quotedblright -74 KPX Agrave quoteright -74 KPX Agrave v -18 KPX Agrave w -18 KPX Agrave y -18 KPX Agrave yacute -18 KPX Agrave ydieresis -18 KPX Amacron T -55 KPX Amacron Tcaron -55 KPX Amacron Tcommaaccent -55 KPX Amacron U -18 KPX Amacron Uacute -18 KPX Amacron Ucircumflex -18 KPX Amacron Udieresis -18 KPX Amacron Ugrave -18 KPX Amacron Uhungarumlaut -18 KPX Amacron Umacron -18 KPX Amacron Uogonek -18 KPX Amacron Uring -18 KPX Amacron V -74 KPX Amacron W -74 KPX Amacron Y -91 KPX Amacron Yacute -91 KPX Amacron Ydieresis -91 KPX Amacron quotedblright -74 KPX Amacron quoteright -74 KPX Amacron v -18 KPX Amacron w -18 KPX Amacron y -18 KPX Amacron yacute -18 KPX Amacron ydieresis -18 KPX Aogonek T -55 KPX Aogonek Tcaron -55 KPX Aogonek Tcommaaccent -55 KPX Aogonek U -18 KPX Aogonek Uacute -18 KPX Aogonek Ucircumflex -18 KPX Aogonek Udieresis -18 KPX Aogonek Ugrave -18 KPX Aogonek Uhungarumlaut -18 KPX Aogonek Umacron -18 KPX Aogonek Uogonek -18 KPX Aogonek Uring -18 KPX Aogonek V -74 KPX Aogonek W -74 KPX Aogonek Y -91 KPX Aogonek Yacute -91 KPX Aogonek Ydieresis -91 KPX Aogonek quotedblright -74 KPX Aogonek quoteright -74 KPX Aogonek v -18 KPX Aogonek w -18 KPX Aring T -55 KPX Aring Tcaron -55 KPX Aring Tcommaaccent -55 KPX Aring U -18 KPX Aring Uacute -18 KPX Aring Ucircumflex -18 KPX Aring Udieresis -18 KPX Aring Ugrave -18 KPX Aring Uhungarumlaut -18 KPX Aring Umacron -18 KPX Aring Uogonek -18 KPX Aring Uring -18 KPX Aring V -74 KPX Aring W -74 KPX Aring Y -91 KPX Aring Yacute -91 KPX Aring Ydieresis -91 KPX Aring quotedblright -74 KPX Aring quoteright -74 KPX Aring v -18 KPX Aring w -18 KPX Aring y -18 KPX Aring yacute -18 KPX Aring ydieresis -18 KPX Atilde T -55 KPX Atilde Tcaron -55 KPX Atilde Tcommaaccent -55 KPX Atilde U -18 KPX Atilde Uacute -18 KPX Atilde Ucircumflex -18 KPX Atilde Udieresis -18 KPX Atilde Ugrave -18 KPX Atilde Uhungarumlaut -18 KPX Atilde Umacron -18 KPX Atilde Uogonek -18 KPX Atilde Uring -18 KPX Atilde V -74 KPX Atilde W -74 KPX Atilde Y -91 KPX Atilde Yacute -91 KPX Atilde Ydieresis -91 KPX Atilde quotedblright -74 KPX Atilde quoteright -74 KPX Atilde v -18 KPX Atilde w -18 KPX Atilde y -18 KPX Atilde yacute -18 KPX Atilde ydieresis -18 KPX C comma -18 KPX C period -18 KPX Cacute comma -18 KPX Cacute period -18 KPX Ccaron comma -18 KPX Ccaron period -18 KPX Ccedilla comma -18 KPX Ccedilla period -18 KPX D comma -25 KPX D period -25 KPX Dcaron comma -25 KPX Dcaron period -25 KPX Dcroat comma -25 KPX Dcroat period -25 KPX F a -74 KPX F aacute -74 KPX F abreve -74 KPX F acircumflex -74 KPX F adieresis -74 KPX F agrave -74 KPX F amacron -74 KPX F aogonek -74 KPX F aring -74 KPX F atilde -74 KPX F comma -125 KPX F e -55 KPX F eacute -55 KPX F ecaron -55 KPX F ecircumflex -55 KPX F edieresis -55 KPX F edotaccent -55 KPX F egrave -55 KPX F emacron -55 KPX F eogonek -55 KPX F i -18 KPX F iacute -18 KPX F icircumflex -18 KPX F idieresis -18 KPX F igrave -18 KPX F imacron -18 KPX F iogonek -18 KPX F o -55 KPX F oacute -55 KPX F ocircumflex -55 KPX F odieresis -55 KPX F ograve -55 KPX F ohungarumlaut -55 KPX F omacron -55 KPX F oslash -55 KPX F otilde -55 KPX F period -125 KPX F r -18 KPX F racute -18 KPX F rcaron -18 KPX F rcommaaccent -18 KPX J A -18 KPX J Aacute -18 KPX J Abreve -18 KPX J Acircumflex -18 KPX J Adieresis -18 KPX J Agrave -18 KPX J Amacron -18 KPX J Aogonek -18 KPX J Aring -18 KPX J Atilde -18 KPX J a -18 KPX J aacute -18 KPX J abreve -18 KPX J acircumflex -18 KPX J adieresis -18 KPX J agrave -18 KPX J amacron -18 KPX J aogonek -18 KPX J aring -18 KPX J atilde -18 KPX J comma -55 KPX J e -18 KPX J eacute -18 KPX J ecaron -18 KPX J ecircumflex -18 KPX J edieresis -18 KPX J edotaccent -18 KPX J egrave -18 KPX J emacron -18 KPX J eogonek -18 KPX J o -18 KPX J oacute -18 KPX J ocircumflex -18 KPX J odieresis -18 KPX J ograve -18 KPX J ohungarumlaut -18 KPX J omacron -18 KPX J oslash -18 KPX J otilde -18 KPX J period -55 KPX J u -18 KPX J uacute -18 KPX J ucircumflex -18 KPX J udieresis -18 KPX J ugrave -18 KPX J uhungarumlaut -18 KPX J umacron -18 KPX J uogonek -18 KPX J uring -18 KPX K u -18 KPX K uacute -18 KPX K ucircumflex -18 KPX K udieresis -18 KPX K ugrave -18 KPX K uhungarumlaut -18 KPX K umacron -18 KPX K uogonek -18 KPX K uring -18 KPX K y -25 KPX K yacute -25 KPX K ydieresis -25 KPX Kcommaaccent u -18 KPX Kcommaaccent uacute -18 KPX Kcommaaccent ucircumflex -18 KPX Kcommaaccent udieresis -18 KPX Kcommaaccent ugrave -18 KPX Kcommaaccent uhungarumlaut -18 KPX Kcommaaccent umacron -18 KPX Kcommaaccent uogonek -18 KPX Kcommaaccent uring -18 KPX Kcommaaccent y -25 KPX Kcommaaccent yacute -25 KPX Kcommaaccent ydieresis -25 KPX L T -100 KPX L Tcaron -100 KPX L Tcommaaccent -100 KPX L V -100 KPX L W -74 KPX L Y -74 KPX L Yacute -74 KPX L Ydieresis -74 KPX L quotedblright -100 KPX L quoteright -100 KPX L y -25 KPX L yacute -25 KPX L ydieresis -25 KPX Lacute T -100 KPX Lacute Tcaron -100 KPX Lacute Tcommaaccent -100 KPX Lacute V -100 KPX Lacute W -74 KPX Lacute Y -74 KPX Lacute Yacute -74 KPX Lacute Ydieresis -74 KPX Lacute quotedblright -100 KPX Lacute quoteright -100 KPX Lacute y -25 KPX Lacute yacute -25 KPX Lacute ydieresis -25 KPX Lcommaaccent T -100 KPX Lcommaaccent Tcaron -100 KPX Lcommaaccent Tcommaaccent -100 KPX Lcommaaccent V -100 KPX Lcommaaccent W -74 KPX Lcommaaccent Y -74 KPX Lcommaaccent Yacute -74 KPX Lcommaaccent Ydieresis -74 KPX Lcommaaccent quotedblright -100 KPX Lcommaaccent quoteright -100 KPX Lcommaaccent y -25 KPX Lcommaaccent yacute -25 KPX Lcommaaccent ydieresis -25 KPX Lslash T -100 KPX Lslash Tcaron -100 KPX Lslash Tcommaaccent -100 KPX Lslash V -100 KPX Lslash W -74 KPX Lslash Y -74 KPX Lslash Yacute -74 KPX Lslash Ydieresis -74 KPX Lslash quotedblright -100 KPX Lslash quoteright -100 KPX Lslash y -25 KPX Lslash yacute -25 KPX Lslash ydieresis -25 KPX N comma -18 KPX N period -18 KPX Nacute comma -18 KPX Nacute period -18 KPX Ncaron comma -18 KPX Ncaron period -18 KPX Ncommaaccent comma -18 KPX Ncommaaccent period -18 KPX Ntilde comma -18 KPX Ntilde period -18 KPX O T 10 KPX O Tcaron 10 KPX O Tcommaaccent 10 KPX O comma -25 KPX O period -25 KPX Oacute T 10 KPX Oacute Tcaron 10 KPX Oacute Tcommaaccent 10 KPX Oacute comma -25 KPX Oacute period -25 KPX Ocircumflex T 10 KPX Ocircumflex Tcaron 10 KPX Ocircumflex Tcommaaccent 10 KPX Ocircumflex comma -25 KPX Ocircumflex period -25 KPX Odieresis T 10 KPX Odieresis Tcaron 10 KPX Odieresis Tcommaaccent 10 KPX Odieresis comma -25 KPX Odieresis period -25 KPX Ograve T 10 KPX Ograve Tcaron 10 KPX Ograve Tcommaaccent 10 KPX Ograve comma -25 KPX Ograve period -25 KPX Ohungarumlaut T 10 KPX Ohungarumlaut Tcaron 10 KPX Ohungarumlaut Tcommaaccent 10 KPX Ohungarumlaut comma -25 KPX Ohungarumlaut period -25 KPX Omacron T 10 KPX Omacron Tcaron 10 KPX Omacron Tcommaaccent 10 KPX Omacron comma -25 KPX Omacron period -25 KPX Oslash T 10 KPX Oslash Tcaron 10 KPX Oslash Tcommaaccent 10 KPX Oslash comma -25 KPX Oslash period -25 KPX Otilde T 10 KPX Otilde Tcaron 10 KPX Otilde Tcommaaccent 10 KPX Otilde comma -25 KPX Otilde period -25 KPX P A -74 KPX P Aacute -74 KPX P Abreve -74 KPX P Acircumflex -74 KPX P Adieresis -74 KPX P Agrave -74 KPX P Amacron -74 KPX P Aogonek -74 KPX P Aring -74 KPX P Atilde -74 KPX P a -55 KPX P aacute -55 KPX P abreve -55 KPX P acircumflex -55 KPX P adieresis -55 KPX P agrave -55 KPX P amacron -55 KPX P aogonek -55 KPX P aring -55 KPX P atilde -55 KPX P comma -150 KPX P e -55 KPX P eacute -55 KPX P ecaron -55 KPX P ecircumflex -55 KPX P edieresis -55 KPX P edotaccent -55 KPX P egrave -55 KPX P emacron -55 KPX P eogonek -55 KPX P o -55 KPX P oacute -55 KPX P ocircumflex -55 KPX P odieresis -55 KPX P ograve -55 KPX P ohungarumlaut -55 KPX P omacron -55 KPX P oslash -55 KPX P otilde -55 KPX P period -150 KPX S comma -18 KPX S period -18 KPX Sacute comma -18 KPX Sacute period -18 KPX Scaron comma -18 KPX Scaron period -18 KPX Scedilla comma -18 KPX Scedilla period -18 KPX Scommaaccent comma -18 KPX Scommaaccent period -18 KPX T A -55 KPX T Aacute -55 KPX T Abreve -55 KPX T Acircumflex -55 KPX T Adieresis -55 KPX T Agrave -55 KPX T Amacron -55 KPX T Aogonek -55 KPX T Aring -55 KPX T Atilde -55 KPX T O 10 KPX T Oacute 10 KPX T Ocircumflex 10 KPX T Odieresis 10 KPX T Ograve 10 KPX T Ohungarumlaut 10 KPX T Omacron 10 KPX T Oslash 10 KPX T Otilde 10 KPX T a -74 KPX T aacute -74 KPX T abreve -74 KPX T acircumflex -74 KPX T adieresis -74 KPX T agrave -74 KPX T amacron -74 KPX T aogonek -74 KPX T aring -74 KPX T atilde -74 KPX T comma -100 KPX T e -74 KPX T eacute -74 KPX T ecaron -74 KPX T ecircumflex -74 KPX T edieresis -74 KPX T edotaccent -74 KPX T egrave -74 KPX T emacron -74 KPX T eogonek -74 KPX T hyphen -125 KPX T i -18 KPX T iacute -18 KPX T icircumflex -18 KPX T idieresis -18 KPX T igrave -18 KPX T imacron -18 KPX T iogonek -18 KPX T o -74 KPX T oacute -74 KPX T ocircumflex -74 KPX T odieresis -74 KPX T ograve -74 KPX T ohungarumlaut -74 KPX T omacron -74 KPX T oslash -74 KPX T otilde -74 KPX T period -100 KPX T r -18 KPX T racute -18 KPX T rcaron -18 KPX T rcommaaccent -18 KPX T u -18 KPX T uacute -18 KPX T ucircumflex -18 KPX T udieresis -18 KPX T ugrave -18 KPX T uhungarumlaut -18 KPX T umacron -18 KPX T uogonek -18 KPX T uring -18 KPX Tcaron A -55 KPX Tcaron Aacute -55 KPX Tcaron Abreve -55 KPX Tcaron Acircumflex -55 KPX Tcaron Adieresis -55 KPX Tcaron Agrave -55 KPX Tcaron Amacron -55 KPX Tcaron Aogonek -55 KPX Tcaron Aring -55 KPX Tcaron Atilde -55 KPX Tcaron O 10 KPX Tcaron Oacute 10 KPX Tcaron Ocircumflex 10 KPX Tcaron Odieresis 10 KPX Tcaron Ograve 10 KPX Tcaron Ohungarumlaut 10 KPX Tcaron Omacron 10 KPX Tcaron Oslash 10 KPX Tcaron Otilde 10 KPX Tcaron a -74 KPX Tcaron aacute -74 KPX Tcaron abreve -74 KPX Tcaron acircumflex -74 KPX Tcaron adieresis -74 KPX Tcaron agrave -74 KPX Tcaron amacron -74 KPX Tcaron aogonek -74 KPX Tcaron aring -74 KPX Tcaron atilde -74 KPX Tcaron comma -100 KPX Tcaron e -74 KPX Tcaron eacute -74 KPX Tcaron ecaron -74 KPX Tcaron ecircumflex -74 KPX Tcaron edieresis -74 KPX Tcaron edotaccent -74 KPX Tcaron egrave -74 KPX Tcaron emacron -74 KPX Tcaron eogonek -74 KPX Tcaron hyphen -125 KPX Tcaron i -18 KPX Tcaron iacute -18 KPX Tcaron icircumflex -18 KPX Tcaron idieresis -18 KPX Tcaron igrave -18 KPX Tcaron imacron -18 KPX Tcaron iogonek -18 KPX Tcaron o -74 KPX Tcaron oacute -74 KPX Tcaron ocircumflex -74 KPX Tcaron odieresis -74 KPX Tcaron ograve -74 KPX Tcaron ohungarumlaut -74 KPX Tcaron omacron -74 KPX Tcaron oslash -74 KPX Tcaron otilde -74 KPX Tcaron period -100 KPX Tcaron r -18 KPX Tcaron racute -18 KPX Tcaron rcaron -18 KPX Tcaron rcommaaccent -18 KPX Tcaron u -18 KPX Tcaron uacute -18 KPX Tcaron ucircumflex -18 KPX Tcaron udieresis -18 KPX Tcaron ugrave -18 KPX Tcaron uhungarumlaut -18 KPX Tcaron umacron -18 KPX Tcaron uogonek -18 KPX Tcaron uring -18 KPX Tcommaaccent A -55 KPX Tcommaaccent Aacute -55 KPX Tcommaaccent Abreve -55 KPX Tcommaaccent Acircumflex -55 KPX Tcommaaccent Adieresis -55 KPX Tcommaaccent Agrave -55 KPX Tcommaaccent Amacron -55 KPX Tcommaaccent Aogonek -55 KPX Tcommaaccent Aring -55 KPX Tcommaaccent Atilde -55 KPX Tcommaaccent O 10 KPX Tcommaaccent Oacute 10 KPX Tcommaaccent Ocircumflex 10 KPX Tcommaaccent Odieresis 10 KPX Tcommaaccent Ograve 10 KPX Tcommaaccent Ohungarumlaut 10 KPX Tcommaaccent Omacron 10 KPX Tcommaaccent Oslash 10 KPX Tcommaaccent Otilde 10 KPX Tcommaaccent a -74 KPX Tcommaaccent aacute -74 KPX Tcommaaccent abreve -74 KPX Tcommaaccent acircumflex -74 KPX Tcommaaccent adieresis -74 KPX Tcommaaccent agrave -74 KPX Tcommaaccent amacron -74 KPX Tcommaaccent aogonek -74 KPX Tcommaaccent aring -74 KPX Tcommaaccent atilde -74 KPX Tcommaaccent comma -100 KPX Tcommaaccent e -74 KPX Tcommaaccent eacute -74 KPX Tcommaaccent ecaron -74 KPX Tcommaaccent ecircumflex -74 KPX Tcommaaccent edieresis -74 KPX Tcommaaccent edotaccent -74 KPX Tcommaaccent egrave -74 KPX Tcommaaccent emacron -74 KPX Tcommaaccent eogonek -74 KPX Tcommaaccent hyphen -125 KPX Tcommaaccent i -18 KPX Tcommaaccent iacute -18 KPX Tcommaaccent icircumflex -18 KPX Tcommaaccent idieresis -18 KPX Tcommaaccent igrave -18 KPX Tcommaaccent imacron -18 KPX Tcommaaccent iogonek -18 KPX Tcommaaccent o -74 KPX Tcommaaccent oacute -74 KPX Tcommaaccent ocircumflex -74 KPX Tcommaaccent odieresis -74 KPX Tcommaaccent ograve -74 KPX Tcommaaccent ohungarumlaut -74 KPX Tcommaaccent omacron -74 KPX Tcommaaccent oslash -74 KPX Tcommaaccent otilde -74 KPX Tcommaaccent period -100 KPX Tcommaaccent r -18 KPX Tcommaaccent racute -18 KPX Tcommaaccent rcaron -18 KPX Tcommaaccent rcommaaccent -18 KPX Tcommaaccent u -18 KPX Tcommaaccent uacute -18 KPX Tcommaaccent ucircumflex -18 KPX Tcommaaccent udieresis -18 KPX Tcommaaccent ugrave -18 KPX Tcommaaccent uhungarumlaut -18 KPX Tcommaaccent umacron -18 KPX Tcommaaccent uogonek -18 KPX Tcommaaccent uring -18 KPX U A -18 KPX U Aacute -18 KPX U Abreve -18 KPX U Acircumflex -18 KPX U Adieresis -18 KPX U Agrave -18 KPX U Amacron -18 KPX U Aogonek -18 KPX U Aring -18 KPX U Atilde -18 KPX U comma -25 KPX U period -25 KPX Uacute A -18 KPX Uacute Aacute -18 KPX Uacute Abreve -18 KPX Uacute Acircumflex -18 KPX Uacute Adieresis -18 KPX Uacute Agrave -18 KPX Uacute Amacron -18 KPX Uacute Aogonek -18 KPX Uacute Aring -18 KPX Uacute Atilde -18 KPX Uacute comma -25 KPX Uacute period -25 KPX Ucircumflex A -18 KPX Ucircumflex Aacute -18 KPX Ucircumflex Abreve -18 KPX Ucircumflex Acircumflex -18 KPX Ucircumflex Adieresis -18 KPX Ucircumflex Agrave -18 KPX Ucircumflex Amacron -18 KPX Ucircumflex Aogonek -18 KPX Ucircumflex Aring -18 KPX Ucircumflex Atilde -18 KPX Ucircumflex comma -25 KPX Ucircumflex period -25 KPX Udieresis A -18 KPX Udieresis Aacute -18 KPX Udieresis Abreve -18 KPX Udieresis Acircumflex -18 KPX Udieresis Adieresis -18 KPX Udieresis Agrave -18 KPX Udieresis Amacron -18 KPX Udieresis Aogonek -18 KPX Udieresis Aring -18 KPX Udieresis Atilde -18 KPX Udieresis comma -25 KPX Udieresis period -25 KPX Ugrave A -18 KPX Ugrave Aacute -18 KPX Ugrave Abreve -18 KPX Ugrave Acircumflex -18 KPX Ugrave Adieresis -18 KPX Ugrave Agrave -18 KPX Ugrave Amacron -18 KPX Ugrave Aogonek -18 KPX Ugrave Aring -18 KPX Ugrave Atilde -18 KPX Ugrave comma -25 KPX Ugrave period -25 KPX Uhungarumlaut A -18 KPX Uhungarumlaut Aacute -18 KPX Uhungarumlaut Abreve -18 KPX Uhungarumlaut Acircumflex -18 KPX Uhungarumlaut Adieresis -18 KPX Uhungarumlaut Agrave -18 KPX Uhungarumlaut Amacron -18 KPX Uhungarumlaut Aogonek -18 KPX Uhungarumlaut Aring -18 KPX Uhungarumlaut Atilde -18 KPX Uhungarumlaut comma -25 KPX Uhungarumlaut period -25 KPX Umacron A -18 KPX Umacron Aacute -18 KPX Umacron Abreve -18 KPX Umacron Acircumflex -18 KPX Umacron Adieresis -18 KPX Umacron Agrave -18 KPX Umacron Amacron -18 KPX Umacron Aogonek -18 KPX Umacron Aring -18 KPX Umacron Atilde -18 KPX Umacron comma -25 KPX Umacron period -25 KPX Uogonek A -18 KPX Uogonek Aacute -18 KPX Uogonek Abreve -18 KPX Uogonek Acircumflex -18 KPX Uogonek Adieresis -18 KPX Uogonek Agrave -18 KPX Uogonek Amacron -18 KPX Uogonek Aogonek -18 KPX Uogonek Aring -18 KPX Uogonek Atilde -18 KPX Uogonek comma -25 KPX Uogonek period -25 KPX Uring A -18 KPX Uring Aacute -18 KPX Uring Abreve -18 KPX Uring Acircumflex -18 KPX Uring Adieresis -18 KPX Uring Agrave -18 KPX Uring Amacron -18 KPX Uring Aogonek -18 KPX Uring Aring -18 KPX Uring Atilde -18 KPX Uring comma -25 KPX Uring period -25 KPX V A -74 KPX V Aacute -74 KPX V Abreve -74 KPX V Acircumflex -74 KPX V Adieresis -74 KPX V Agrave -74 KPX V Amacron -74 KPX V Aogonek -74 KPX V Aring -74 KPX V Atilde -74 KPX V a -74 KPX V aacute -74 KPX V abreve -74 KPX V acircumflex -74 KPX V adieresis -74 KPX V agrave -74 KPX V amacron -74 KPX V aogonek -74 KPX V aring -74 KPX V atilde -74 KPX V colon -37 KPX V comma -125 KPX V e -74 KPX V eacute -74 KPX V ecaron -74 KPX V ecircumflex -74 KPX V edieresis -74 KPX V edotaccent -74 KPX V egrave -74 KPX V emacron -74 KPX V eogonek -74 KPX V hyphen -100 KPX V i -18 KPX V iacute -18 KPX V icircumflex -18 KPX V idieresis -18 KPX V igrave -18 KPX V imacron -18 KPX V iogonek -18 KPX V o -74 KPX V oacute -74 KPX V ocircumflex -74 KPX V odieresis -74 KPX V ograve -74 KPX V ohungarumlaut -74 KPX V omacron -74 KPX V oslash -74 KPX V otilde -74 KPX V period -125 KPX V semicolon -37 KPX V u -55 KPX V uacute -55 KPX V ucircumflex -55 KPX V udieresis -55 KPX V ugrave -55 KPX V uhungarumlaut -55 KPX V umacron -55 KPX V uogonek -55 KPX V uring -55 KPX W A -74 KPX W Aacute -74 KPX W Abreve -74 KPX W Acircumflex -74 KPX W Adieresis -74 KPX W Agrave -74 KPX W Amacron -74 KPX W Aogonek -74 KPX W Aring -74 KPX W Atilde -74 KPX W a -74 KPX W aacute -74 KPX W abreve -74 KPX W acircumflex -74 KPX W adieresis -74 KPX W agrave -74 KPX W amacron -74 KPX W aogonek -74 KPX W aring -74 KPX W atilde -74 KPX W colon -55 KPX W comma -100 KPX W e -74 KPX W eacute -74 KPX W ecaron -74 KPX W ecircumflex -74 KPX W edieresis -74 KPX W edotaccent -74 KPX W egrave -74 KPX W emacron -74 KPX W eogonek -74 KPX W hyphen -100 KPX W i -18 KPX W iacute -18 KPX W icircumflex -18 KPX W idieresis -18 KPX W igrave -18 KPX W imacron -18 KPX W iogonek -18 KPX W o -74 KPX W oacute -74 KPX W ocircumflex -74 KPX W odieresis -74 KPX W ograve -74 KPX W ohungarumlaut -74 KPX W omacron -74 KPX W oslash -74 KPX W otilde -74 KPX W period -100 KPX W semicolon -55 KPX W u -37 KPX W uacute -37 KPX W ucircumflex -37 KPX W udieresis -37 KPX W ugrave -37 KPX W uhungarumlaut -37 KPX W umacron -37 KPX W uogonek -37 KPX W uring -37 KPX W y -25 KPX W yacute -25 KPX W ydieresis -25 KPX Y A -91 KPX Y Aacute -91 KPX Y Abreve -91 KPX Y Acircumflex -91 KPX Y Adieresis -91 KPX Y Agrave -91 KPX Y Amacron -91 KPX Y Aogonek -91 KPX Y Aring -91 KPX Y Atilde -91 KPX Y a -100 KPX Y aacute -100 KPX Y abreve -100 KPX Y acircumflex -100 KPX Y adieresis -100 KPX Y agrave -100 KPX Y amacron -100 KPX Y aogonek -100 KPX Y aring -100 KPX Y atilde -100 KPX Y colon -25 KPX Y comma -100 KPX Y e -100 KPX Y eacute -100 KPX Y ecaron -40 KPX Y ecircumflex -100 KPX Y edieresis -40 KPX Y edotaccent -100 KPX Y egrave -40 KPX Y emacron -40 KPX Y eogonek -100 KPX Y hyphen -125 KPX Y i -18 KPX Y iacute -18 KPX Y icircumflex -18 KPX Y iogonek -18 KPX Y o -100 KPX Y oacute -100 KPX Y ocircumflex -100 KPX Y odieresis -40 KPX Y ograve -40 KPX Y ohungarumlaut -100 KPX Y omacron -40 KPX Y oslash -100 KPX Y otilde -100 KPX Y period -100 KPX Y semicolon -25 KPX Y u -55 KPX Y uacute -55 KPX Y ucircumflex -55 KPX Y udieresis -55 KPX Y ugrave -55 KPX Y uhungarumlaut -55 KPX Y umacron -55 KPX Y uogonek -55 KPX Y uring -55 KPX Yacute A -91 KPX Yacute Aacute -91 KPX Yacute Abreve -91 KPX Yacute Acircumflex -91 KPX Yacute Adieresis -91 KPX Yacute Agrave -91 KPX Yacute Amacron -91 KPX Yacute Aogonek -91 KPX Yacute Aring -91 KPX Yacute Atilde -91 KPX Yacute a -100 KPX Yacute aacute -100 KPX Yacute abreve -100 KPX Yacute acircumflex -100 KPX Yacute adieresis -100 KPX Yacute agrave -100 KPX Yacute amacron -100 KPX Yacute aogonek -100 KPX Yacute aring -100 KPX Yacute atilde -100 KPX Yacute colon -25 KPX Yacute comma -100 KPX Yacute e -100 KPX Yacute eacute -100 KPX Yacute ecaron -40 KPX Yacute ecircumflex -100 KPX Yacute edieresis -40 KPX Yacute edotaccent -100 KPX Yacute egrave -40 KPX Yacute emacron -40 KPX Yacute eogonek -100 KPX Yacute hyphen -125 KPX Yacute i -18 KPX Yacute iacute -18 KPX Yacute icircumflex -18 KPX Yacute iogonek -18 KPX Yacute o -100 KPX Yacute oacute -100 KPX Yacute ocircumflex -100 KPX Yacute odieresis -40 KPX Yacute ograve -40 KPX Yacute ohungarumlaut -100 KPX Yacute omacron -40 KPX Yacute oslash -100 KPX Yacute otilde -100 KPX Yacute period -100 KPX Yacute semicolon -25 KPX Yacute u -55 KPX Yacute uacute -55 KPX Yacute ucircumflex -55 KPX Yacute udieresis -55 KPX Yacute ugrave -55 KPX Yacute uhungarumlaut -55 KPX Yacute umacron -55 KPX Yacute uogonek -55 KPX Yacute uring -55 KPX Ydieresis A -91 KPX Ydieresis Aacute -91 KPX Ydieresis Abreve -91 KPX Ydieresis Acircumflex -91 KPX Ydieresis Adieresis -91 KPX Ydieresis Agrave -91 KPX Ydieresis Amacron -91 KPX Ydieresis Aogonek -91 KPX Ydieresis Aring -91 KPX Ydieresis Atilde -91 KPX Ydieresis a -100 KPX Ydieresis aacute -100 KPX Ydieresis abreve -100 KPX Ydieresis acircumflex -100 KPX Ydieresis adieresis -100 KPX Ydieresis agrave -100 KPX Ydieresis amacron -100 KPX Ydieresis aogonek -100 KPX Ydieresis aring -100 KPX Ydieresis atilde -100 KPX Ydieresis colon -25 KPX Ydieresis comma -100 KPX Ydieresis e -100 KPX Ydieresis eacute -100 KPX Ydieresis ecaron -40 KPX Ydieresis ecircumflex -100 KPX Ydieresis edieresis -40 KPX Ydieresis edotaccent -100 KPX Ydieresis egrave -40 KPX Ydieresis emacron -40 KPX Ydieresis eogonek -100 KPX Ydieresis hyphen -125 KPX Ydieresis i -18 KPX Ydieresis iacute -18 KPX Ydieresis icircumflex -18 KPX Ydieresis iogonek -18 KPX Ydieresis o -100 KPX Ydieresis oacute -100 KPX Ydieresis ocircumflex -100 KPX Ydieresis odieresis -40 KPX Ydieresis ograve -40 KPX Ydieresis ohungarumlaut -100 KPX Ydieresis omacron -40 KPX Ydieresis oslash -100 KPX Ydieresis otilde -100 KPX Ydieresis period -100 KPX Ydieresis semicolon -25 KPX Ydieresis u -55 KPX Ydieresis uacute -55 KPX Ydieresis ucircumflex -55 KPX Ydieresis udieresis -55 KPX Ydieresis ugrave -55 KPX Ydieresis uhungarumlaut -55 KPX Ydieresis umacron -55 KPX Ydieresis uogonek -55 KPX Ydieresis uring -55 KPX colon space -18 KPX comma quotedblright -18 KPX comma quoteright -18 KPX comma space -18 KPX f quotedblright 75 KPX f quoteright 75 KPX period quotedblright -18 KPX period quoteright -18 KPX period space -18 KPX quotedblleft A -74 KPX quotedblleft Aacute -74 KPX quotedblleft Abreve -74 KPX quotedblleft Acircumflex -74 KPX quotedblleft Adieresis -74 KPX quotedblleft Agrave -74 KPX quotedblleft Amacron -74 KPX quotedblleft Aogonek -74 KPX quotedblleft Aring -74 KPX quotedblleft Atilde -74 KPX quotedblright space -18 KPX quoteleft A -74 KPX quoteleft Aacute -74 KPX quoteleft Abreve -74 KPX quoteleft Acircumflex -74 KPX quoteleft Adieresis -74 KPX quoteleft Agrave -74 KPX quoteleft Amacron -74 KPX quoteleft Aogonek -74 KPX quoteleft Aring -74 KPX quoteleft Atilde -74 KPX quoteright d -25 KPX quoteright dcroat -25 KPX quoteright s -25 KPX quoteright sacute -25 KPX quoteright scaron -25 KPX quoteright scedilla -25 KPX quoteright scommaaccent -25 KPX r comma -74 KPX r period -74 KPX racute comma -74 KPX racute period -74 KPX rcaron comma -74 KPX rcaron period -74 KPX rcommaaccent comma -74 KPX rcommaaccent period -74 KPX semicolon space -18 KPX space A -18 KPX space Aacute -18 KPX space Abreve -18 KPX space Acircumflex -18 KPX space Adieresis -18 KPX space Agrave -18 KPX space Amacron -18 KPX space Aogonek -18 KPX space Aring -18 KPX space Atilde -18 KPX space T -18 KPX space Tcaron -18 KPX space Tcommaaccent -18 KPX space V -18 KPX space W -18 KPX space Y -18 KPX space Yacute -18 KPX space Ydieresis -18 KPX space quotedblleft -18 KPX space quoteleft -18 KPX v comma -100 KPX v period -100 KPX w comma -100 KPX w period -100 KPX y comma -100 KPX y period -100 KPX yacute comma -100 KPX yacute period -100 KPX ydieresis comma -100 KPX ydieresis period -100 EndKernPairs EndKernData EndFontMetrics gle-graphics-4.2.4c/src/fonts/Adobe-Core35_AFMs-314/Courier-BoldOblique.afm0000664000000000000000000003574711405446017024412 0ustar rootrootStartFontMetrics 4.1 Comment Copyright (c) 1989, 1990, 1991, 1993, 1997 Adobe Systems Incorporated. All Rights Reserved. Comment Creation Date: Mon Jun 23 16:28:46 1997 Comment UniqueID 43049 Comment VMusage 17529 79244 FontName Courier-BoldOblique FullName Courier Bold Oblique FamilyName Courier Weight Bold ItalicAngle -12 IsFixedPitch true FontBBox -57 -250 869 801 UnderlinePosition -100 UnderlineThickness 50 Version 003.000 Notice Copyright (c) 1989, 1990, 1991, 1993, 1997 Adobe Systems Incorporated. All Rights Reserved. EncodingScheme AdobeStandardEncoding CapHeight 562 XHeight 439 Ascender 629 Descender -157 StdHW 84 StdVW 106 StartCharMetrics 314 C 32 ; WX 600 ; N space ; B 0 0 0 0 ; C 33 ; WX 600 ; N exclam ; B 215 -15 495 572 ; C 34 ; WX 600 ; N quotedbl ; B 211 277 585 562 ; C 35 ; WX 600 ; N numbersign ; B 88 -45 641 651 ; C 36 ; WX 600 ; N dollar ; B 87 -126 630 666 ; C 37 ; WX 600 ; N percent ; B 101 -15 625 616 ; C 38 ; WX 600 ; N ampersand ; B 61 -15 595 543 ; C 39 ; WX 600 ; N quoteright ; B 229 277 543 562 ; C 40 ; WX 600 ; N parenleft ; B 265 -102 592 616 ; C 41 ; WX 600 ; N parenright ; B 117 -102 444 616 ; C 42 ; WX 600 ; N asterisk ; B 179 219 598 601 ; C 43 ; WX 600 ; N plus ; B 114 39 596 478 ; C 44 ; WX 600 ; N comma ; B 99 -111 430 174 ; C 45 ; WX 600 ; N hyphen ; B 143 203 567 313 ; C 46 ; WX 600 ; N period ; B 206 -15 427 171 ; C 47 ; WX 600 ; N slash ; B 90 -77 626 626 ; C 48 ; WX 600 ; N zero ; B 135 -15 593 616 ; C 49 ; WX 600 ; N one ; B 93 0 562 616 ; C 50 ; WX 600 ; N two ; B 61 0 594 616 ; C 51 ; WX 600 ; N three ; B 71 -15 571 616 ; C 52 ; WX 600 ; N four ; B 81 0 559 616 ; C 53 ; WX 600 ; N five ; B 77 -15 621 601 ; C 54 ; WX 600 ; N six ; B 135 -15 652 616 ; C 55 ; WX 600 ; N seven ; B 147 0 622 601 ; C 56 ; WX 600 ; N eight ; B 115 -15 604 616 ; C 57 ; WX 600 ; N nine ; B 75 -15 592 616 ; C 58 ; WX 600 ; N colon ; B 205 -15 480 425 ; C 59 ; WX 600 ; N semicolon ; B 99 -111 481 425 ; C 60 ; WX 600 ; N less ; B 120 15 613 501 ; C 61 ; WX 600 ; N equal ; B 96 118 614 398 ; C 62 ; WX 600 ; N greater ; B 97 15 589 501 ; C 63 ; WX 600 ; N question ; B 183 -14 592 580 ; C 64 ; WX 600 ; N at ; B 65 -15 642 616 ; C 65 ; WX 600 ; N A ; B -9 0 632 562 ; C 66 ; WX 600 ; N B ; B 30 0 630 562 ; C 67 ; WX 600 ; N C ; B 74 -18 675 580 ; C 68 ; WX 600 ; N D ; B 30 0 664 562 ; C 69 ; WX 600 ; N E ; B 25 0 670 562 ; C 70 ; WX 600 ; N F ; B 39 0 684 562 ; C 71 ; WX 600 ; N G ; B 74 -18 675 580 ; C 72 ; WX 600 ; N H ; B 20 0 700 562 ; C 73 ; WX 600 ; N I ; B 77 0 643 562 ; C 74 ; WX 600 ; N J ; B 58 -18 721 562 ; C 75 ; WX 600 ; N K ; B 21 0 692 562 ; C 76 ; WX 600 ; N L ; B 39 0 636 562 ; C 77 ; WX 600 ; N M ; B -2 0 722 562 ; C 78 ; WX 600 ; N N ; B 8 -12 730 562 ; C 79 ; WX 600 ; N O ; B 74 -18 645 580 ; C 80 ; WX 600 ; N P ; B 48 0 643 562 ; C 81 ; WX 600 ; N Q ; B 83 -138 636 580 ; C 82 ; WX 600 ; N R ; B 24 0 617 562 ; C 83 ; WX 600 ; N S ; B 54 -22 673 582 ; C 84 ; WX 600 ; N T ; B 86 0 679 562 ; C 85 ; WX 600 ; N U ; B 101 -18 716 562 ; C 86 ; WX 600 ; N V ; B 84 0 733 562 ; C 87 ; WX 600 ; N W ; B 79 0 738 562 ; C 88 ; WX 600 ; N X ; B 12 0 690 562 ; C 89 ; WX 600 ; N Y ; B 109 0 709 562 ; C 90 ; WX 600 ; N Z ; B 62 0 637 562 ; C 91 ; WX 600 ; N bracketleft ; B 223 -102 606 616 ; C 92 ; WX 600 ; N backslash ; B 222 -77 496 626 ; C 93 ; WX 600 ; N bracketright ; B 103 -102 486 616 ; C 94 ; WX 600 ; N asciicircum ; B 171 250 556 616 ; C 95 ; WX 600 ; N underscore ; B -27 -125 585 -75 ; C 96 ; WX 600 ; N quoteleft ; B 297 277 487 562 ; C 97 ; WX 600 ; N a ; B 61 -15 593 454 ; C 98 ; WX 600 ; N b ; B 13 -15 636 626 ; C 99 ; WX 600 ; N c ; B 81 -15 631 459 ; C 100 ; WX 600 ; N d ; B 60 -15 645 626 ; C 101 ; WX 600 ; N e ; B 81 -15 605 454 ; C 102 ; WX 600 ; N f ; B 83 0 677 626 ; L i fi ; L l fl ; C 103 ; WX 600 ; N g ; B 40 -146 674 454 ; C 104 ; WX 600 ; N h ; B 18 0 615 626 ; C 105 ; WX 600 ; N i ; B 77 0 546 658 ; C 106 ; WX 600 ; N j ; B 36 -146 580 658 ; C 107 ; WX 600 ; N k ; B 33 0 643 626 ; C 108 ; WX 600 ; N l ; B 77 0 546 626 ; C 109 ; WX 600 ; N m ; B -22 0 649 454 ; C 110 ; WX 600 ; N n ; B 18 0 615 454 ; C 111 ; WX 600 ; N o ; B 71 -15 622 454 ; C 112 ; WX 600 ; N p ; B -32 -142 622 454 ; C 113 ; WX 600 ; N q ; B 60 -142 685 454 ; C 114 ; WX 600 ; N r ; B 47 0 655 454 ; C 115 ; WX 600 ; N s ; B 66 -17 608 459 ; C 116 ; WX 600 ; N t ; B 118 -15 567 562 ; C 117 ; WX 600 ; N u ; B 70 -15 592 439 ; C 118 ; WX 600 ; N v ; B 70 0 695 439 ; C 119 ; WX 600 ; N w ; B 53 0 712 439 ; C 120 ; WX 600 ; N x ; B 6 0 671 439 ; C 121 ; WX 600 ; N y ; B -21 -142 695 439 ; C 122 ; WX 600 ; N z ; B 81 0 614 439 ; C 123 ; WX 600 ; N braceleft ; B 203 -102 595 616 ; C 124 ; WX 600 ; N bar ; B 201 -250 505 750 ; C 125 ; WX 600 ; N braceright ; B 114 -102 506 616 ; C 126 ; WX 600 ; N asciitilde ; B 120 153 590 356 ; C 161 ; WX 600 ; N exclamdown ; B 196 -146 477 449 ; C 162 ; WX 600 ; N cent ; B 121 -49 605 614 ; C 163 ; WX 600 ; N sterling ; B 106 -28 650 611 ; C 164 ; WX 600 ; N fraction ; B 22 -60 708 661 ; C 165 ; WX 600 ; N yen ; B 98 0 710 562 ; C 166 ; WX 600 ; N florin ; B -57 -131 702 616 ; C 167 ; WX 600 ; N section ; B 74 -70 620 580 ; C 168 ; WX 600 ; N currency ; B 77 49 644 517 ; C 169 ; WX 600 ; N quotesingle ; B 303 277 493 562 ; C 170 ; WX 600 ; N quotedblleft ; B 190 277 594 562 ; C 171 ; WX 600 ; N guillemotleft ; B 62 70 639 446 ; C 172 ; WX 600 ; N guilsinglleft ; B 195 70 545 446 ; C 173 ; WX 600 ; N guilsinglright ; B 165 70 514 446 ; C 174 ; WX 600 ; N fi ; B 12 0 644 626 ; C 175 ; WX 600 ; N fl ; B 12 0 644 626 ; C 177 ; WX 600 ; N endash ; B 108 203 602 313 ; C 178 ; WX 600 ; N dagger ; B 175 -70 586 580 ; C 179 ; WX 600 ; N daggerdbl ; B 121 -70 587 580 ; C 180 ; WX 600 ; N periodcentered ; B 248 165 461 351 ; C 182 ; WX 600 ; N paragraph ; B 61 -70 700 580 ; C 183 ; WX 600 ; N bullet ; B 196 132 523 430 ; C 184 ; WX 600 ; N quotesinglbase ; B 144 -142 458 143 ; C 185 ; WX 600 ; N quotedblbase ; B 34 -142 560 143 ; C 186 ; WX 600 ; N quotedblright ; B 119 277 645 562 ; C 187 ; WX 600 ; N guillemotright ; B 71 70 647 446 ; C 188 ; WX 600 ; N ellipsis ; B 35 -15 587 116 ; C 189 ; WX 600 ; N perthousand ; B -45 -15 743 616 ; C 191 ; WX 600 ; N questiondown ; B 100 -146 509 449 ; C 193 ; WX 600 ; N grave ; B 272 508 503 661 ; C 194 ; WX 600 ; N acute ; B 312 508 609 661 ; C 195 ; WX 600 ; N circumflex ; B 212 483 607 657 ; C 196 ; WX 600 ; N tilde ; B 199 493 643 636 ; C 197 ; WX 600 ; N macron ; B 195 505 637 585 ; C 198 ; WX 600 ; N breve ; B 217 468 652 631 ; C 199 ; WX 600 ; N dotaccent ; B 348 498 493 638 ; C 200 ; WX 600 ; N dieresis ; B 246 498 595 638 ; C 202 ; WX 600 ; N ring ; B 319 481 528 678 ; C 203 ; WX 600 ; N cedilla ; B 168 -206 368 0 ; C 205 ; WX 600 ; N hungarumlaut ; B 171 488 729 661 ; C 206 ; WX 600 ; N ogonek ; B 143 -199 367 0 ; C 207 ; WX 600 ; N caron ; B 238 493 633 667 ; C 208 ; WX 600 ; N emdash ; B 33 203 677 313 ; C 225 ; WX 600 ; N AE ; B -29 0 708 562 ; C 227 ; WX 600 ; N ordfeminine ; B 188 196 526 580 ; C 232 ; WX 600 ; N Lslash ; B 39 0 636 562 ; C 233 ; WX 600 ; N Oslash ; B 48 -22 673 584 ; C 234 ; WX 600 ; N OE ; B 26 0 701 562 ; C 235 ; WX 600 ; N ordmasculine ; B 188 196 543 580 ; C 241 ; WX 600 ; N ae ; B 21 -15 652 454 ; C 245 ; WX 600 ; N dotlessi ; B 77 0 546 439 ; C 248 ; WX 600 ; N lslash ; B 77 0 587 626 ; C 249 ; WX 600 ; N oslash ; B 54 -24 638 463 ; C 250 ; WX 600 ; N oe ; B 18 -15 662 454 ; C 251 ; WX 600 ; N germandbls ; B 22 -15 629 626 ; C -1 ; WX 600 ; N Idieresis ; B 77 0 643 761 ; C -1 ; WX 600 ; N eacute ; B 81 -15 609 661 ; C -1 ; WX 600 ; N abreve ; B 61 -15 658 661 ; C -1 ; WX 600 ; N uhungarumlaut ; B 70 -15 769 661 ; C -1 ; WX 600 ; N ecaron ; B 81 -15 633 667 ; C -1 ; WX 600 ; N Ydieresis ; B 109 0 709 761 ; C -1 ; WX 600 ; N divide ; B 114 16 596 500 ; C -1 ; WX 600 ; N Yacute ; B 109 0 709 784 ; C -1 ; WX 600 ; N Acircumflex ; B -9 0 632 780 ; C -1 ; WX 600 ; N aacute ; B 61 -15 609 661 ; C -1 ; WX 600 ; N Ucircumflex ; B 101 -18 716 780 ; C -1 ; WX 600 ; N yacute ; B -21 -142 695 661 ; C -1 ; WX 600 ; N scommaaccent ; B 66 -250 608 459 ; C -1 ; WX 600 ; N ecircumflex ; B 81 -15 607 657 ; C -1 ; WX 600 ; N Uring ; B 101 -18 716 801 ; C -1 ; WX 600 ; N Udieresis ; B 101 -18 716 761 ; C -1 ; WX 600 ; N aogonek ; B 61 -199 593 454 ; C -1 ; WX 600 ; N Uacute ; B 101 -18 716 784 ; C -1 ; WX 600 ; N uogonek ; B 70 -199 592 439 ; C -1 ; WX 600 ; N Edieresis ; B 25 0 670 761 ; C -1 ; WX 600 ; N Dcroat ; B 30 0 664 562 ; C -1 ; WX 600 ; N commaaccent ; B 151 -250 385 -57 ; C -1 ; WX 600 ; N copyright ; B 53 -18 667 580 ; C -1 ; WX 600 ; N Emacron ; B 25 0 670 708 ; C -1 ; WX 600 ; N ccaron ; B 81 -15 633 667 ; C -1 ; WX 600 ; N aring ; B 61 -15 593 678 ; C -1 ; WX 600 ; N Ncommaaccent ; B 8 -250 730 562 ; C -1 ; WX 600 ; N lacute ; B 77 0 639 801 ; C -1 ; WX 600 ; N agrave ; B 61 -15 593 661 ; C -1 ; WX 600 ; N Tcommaaccent ; B 86 -250 679 562 ; C -1 ; WX 600 ; N Cacute ; B 74 -18 675 784 ; C -1 ; WX 600 ; N atilde ; B 61 -15 643 636 ; C -1 ; WX 600 ; N Edotaccent ; B 25 0 670 761 ; C -1 ; WX 600 ; N scaron ; B 66 -17 633 667 ; C -1 ; WX 600 ; N scedilla ; B 66 -206 608 459 ; C -1 ; WX 600 ; N iacute ; B 77 0 609 661 ; C -1 ; WX 600 ; N lozenge ; B 145 0 614 740 ; C -1 ; WX 600 ; N Rcaron ; B 24 0 659 790 ; C -1 ; WX 600 ; N Gcommaaccent ; B 74 -250 675 580 ; C -1 ; WX 600 ; N ucircumflex ; B 70 -15 597 657 ; C -1 ; WX 600 ; N acircumflex ; B 61 -15 607 657 ; C -1 ; WX 600 ; N Amacron ; B -9 0 633 708 ; C -1 ; WX 600 ; N rcaron ; B 47 0 655 667 ; C -1 ; WX 600 ; N ccedilla ; B 81 -206 631 459 ; C -1 ; WX 600 ; N Zdotaccent ; B 62 0 637 761 ; C -1 ; WX 600 ; N Thorn ; B 48 0 620 562 ; C -1 ; WX 600 ; N Omacron ; B 74 -18 663 708 ; C -1 ; WX 600 ; N Racute ; B 24 0 665 784 ; C -1 ; WX 600 ; N Sacute ; B 54 -22 673 784 ; C -1 ; WX 600 ; N dcaron ; B 60 -15 861 626 ; C -1 ; WX 600 ; N Umacron ; B 101 -18 716 708 ; C -1 ; WX 600 ; N uring ; B 70 -15 592 678 ; C -1 ; WX 600 ; N threesuperior ; B 193 222 526 616 ; C -1 ; WX 600 ; N Ograve ; B 74 -18 645 784 ; C -1 ; WX 600 ; N Agrave ; B -9 0 632 784 ; C -1 ; WX 600 ; N Abreve ; B -9 0 684 784 ; C -1 ; WX 600 ; N multiply ; B 104 39 606 478 ; C -1 ; WX 600 ; N uacute ; B 70 -15 599 661 ; C -1 ; WX 600 ; N Tcaron ; B 86 0 679 790 ; C -1 ; WX 600 ; N partialdiff ; B 91 -38 627 728 ; C -1 ; WX 600 ; N ydieresis ; B -21 -142 695 638 ; C -1 ; WX 600 ; N Nacute ; B 8 -12 730 784 ; C -1 ; WX 600 ; N icircumflex ; B 77 0 577 657 ; C -1 ; WX 600 ; N Ecircumflex ; B 25 0 670 780 ; C -1 ; WX 600 ; N adieresis ; B 61 -15 595 638 ; C -1 ; WX 600 ; N edieresis ; B 81 -15 605 638 ; C -1 ; WX 600 ; N cacute ; B 81 -15 649 661 ; C -1 ; WX 600 ; N nacute ; B 18 0 639 661 ; C -1 ; WX 600 ; N umacron ; B 70 -15 637 585 ; C -1 ; WX 600 ; N Ncaron ; B 8 -12 730 790 ; C -1 ; WX 600 ; N Iacute ; B 77 0 643 784 ; C -1 ; WX 600 ; N plusminus ; B 76 24 614 515 ; C -1 ; WX 600 ; N brokenbar ; B 217 -175 489 675 ; C -1 ; WX 600 ; N registered ; B 53 -18 667 580 ; C -1 ; WX 600 ; N Gbreve ; B 74 -18 684 784 ; C -1 ; WX 600 ; N Idotaccent ; B 77 0 643 761 ; C -1 ; WX 600 ; N summation ; B 15 -10 672 706 ; C -1 ; WX 600 ; N Egrave ; B 25 0 670 784 ; C -1 ; WX 600 ; N racute ; B 47 0 655 661 ; C -1 ; WX 600 ; N omacron ; B 71 -15 637 585 ; C -1 ; WX 600 ; N Zacute ; B 62 0 665 784 ; C -1 ; WX 600 ; N Zcaron ; B 62 0 659 790 ; C -1 ; WX 600 ; N greaterequal ; B 26 0 627 696 ; C -1 ; WX 600 ; N Eth ; B 30 0 664 562 ; C -1 ; WX 600 ; N Ccedilla ; B 74 -206 675 580 ; C -1 ; WX 600 ; N lcommaaccent ; B 77 -250 546 626 ; C -1 ; WX 600 ; N tcaron ; B 118 -15 627 703 ; C -1 ; WX 600 ; N eogonek ; B 81 -199 605 454 ; C -1 ; WX 600 ; N Uogonek ; B 101 -199 716 562 ; C -1 ; WX 600 ; N Aacute ; B -9 0 655 784 ; C -1 ; WX 600 ; N Adieresis ; B -9 0 632 761 ; C -1 ; WX 600 ; N egrave ; B 81 -15 605 661 ; C -1 ; WX 600 ; N zacute ; B 81 0 614 661 ; C -1 ; WX 600 ; N iogonek ; B 77 -199 546 658 ; C -1 ; WX 600 ; N Oacute ; B 74 -18 645 784 ; C -1 ; WX 600 ; N oacute ; B 71 -15 649 661 ; C -1 ; WX 600 ; N amacron ; B 61 -15 637 585 ; C -1 ; WX 600 ; N sacute ; B 66 -17 609 661 ; C -1 ; WX 600 ; N idieresis ; B 77 0 561 618 ; C -1 ; WX 600 ; N Ocircumflex ; B 74 -18 645 780 ; C -1 ; WX 600 ; N Ugrave ; B 101 -18 716 784 ; C -1 ; WX 600 ; N Delta ; B 6 0 594 688 ; C -1 ; WX 600 ; N thorn ; B -32 -142 622 626 ; C -1 ; WX 600 ; N twosuperior ; B 191 230 542 616 ; C -1 ; WX 600 ; N Odieresis ; B 74 -18 645 761 ; C -1 ; WX 600 ; N mu ; B 49 -142 592 439 ; C -1 ; WX 600 ; N igrave ; B 77 0 546 661 ; C -1 ; WX 600 ; N ohungarumlaut ; B 71 -15 809 661 ; C -1 ; WX 600 ; N Eogonek ; B 25 -199 670 562 ; C -1 ; WX 600 ; N dcroat ; B 60 -15 712 626 ; C -1 ; WX 600 ; N threequarters ; B 8 -60 699 661 ; C -1 ; WX 600 ; N Scedilla ; B 54 -206 673 582 ; C -1 ; WX 600 ; N lcaron ; B 77 0 731 626 ; C -1 ; WX 600 ; N Kcommaaccent ; B 21 -250 692 562 ; C -1 ; WX 600 ; N Lacute ; B 39 0 636 784 ; C -1 ; WX 600 ; N trademark ; B 86 230 869 562 ; C -1 ; WX 600 ; N edotaccent ; B 81 -15 605 638 ; C -1 ; WX 600 ; N Igrave ; B 77 0 643 784 ; C -1 ; WX 600 ; N Imacron ; B 77 0 663 708 ; C -1 ; WX 600 ; N Lcaron ; B 39 0 757 562 ; C -1 ; WX 600 ; N onehalf ; B 22 -60 716 661 ; C -1 ; WX 600 ; N lessequal ; B 26 0 671 696 ; C -1 ; WX 600 ; N ocircumflex ; B 71 -15 622 657 ; C -1 ; WX 600 ; N ntilde ; B 18 0 643 636 ; C -1 ; WX 600 ; N Uhungarumlaut ; B 101 -18 805 784 ; C -1 ; WX 600 ; N Eacute ; B 25 0 670 784 ; C -1 ; WX 600 ; N emacron ; B 81 -15 637 585 ; C -1 ; WX 600 ; N gbreve ; B 40 -146 674 661 ; C -1 ; WX 600 ; N onequarter ; B 13 -60 707 661 ; C -1 ; WX 600 ; N Scaron ; B 54 -22 689 790 ; C -1 ; WX 600 ; N Scommaaccent ; B 54 -250 673 582 ; C -1 ; WX 600 ; N Ohungarumlaut ; B 74 -18 795 784 ; C -1 ; WX 600 ; N degree ; B 173 243 570 616 ; C -1 ; WX 600 ; N ograve ; B 71 -15 622 661 ; C -1 ; WX 600 ; N Ccaron ; B 74 -18 689 790 ; C -1 ; WX 600 ; N ugrave ; B 70 -15 592 661 ; C -1 ; WX 600 ; N radical ; B 67 -104 635 778 ; C -1 ; WX 600 ; N Dcaron ; B 30 0 664 790 ; C -1 ; WX 600 ; N rcommaaccent ; B 47 -250 655 454 ; C -1 ; WX 600 ; N Ntilde ; B 8 -12 730 759 ; C -1 ; WX 600 ; N otilde ; B 71 -15 643 636 ; C -1 ; WX 600 ; N Rcommaaccent ; B 24 -250 617 562 ; C -1 ; WX 600 ; N Lcommaaccent ; B 39 -250 636 562 ; C -1 ; WX 600 ; N Atilde ; B -9 0 669 759 ; C -1 ; WX 600 ; N Aogonek ; B -9 -199 632 562 ; C -1 ; WX 600 ; N Aring ; B -9 0 632 801 ; C -1 ; WX 600 ; N Otilde ; B 74 -18 669 759 ; C -1 ; WX 600 ; N zdotaccent ; B 81 0 614 638 ; C -1 ; WX 600 ; N Ecaron ; B 25 0 670 790 ; C -1 ; WX 600 ; N Iogonek ; B 77 -199 643 562 ; C -1 ; WX 600 ; N kcommaaccent ; B 33 -250 643 626 ; C -1 ; WX 600 ; N minus ; B 114 203 596 313 ; C -1 ; WX 600 ; N Icircumflex ; B 77 0 643 780 ; C -1 ; WX 600 ; N ncaron ; B 18 0 633 667 ; C -1 ; WX 600 ; N tcommaaccent ; B 118 -250 567 562 ; C -1 ; WX 600 ; N logicalnot ; B 135 103 617 413 ; C -1 ; WX 600 ; N odieresis ; B 71 -15 622 638 ; C -1 ; WX 600 ; N udieresis ; B 70 -15 595 638 ; C -1 ; WX 600 ; N notequal ; B 30 -47 626 563 ; C -1 ; WX 600 ; N gcommaaccent ; B 40 -146 674 714 ; C -1 ; WX 600 ; N eth ; B 93 -27 661 626 ; C -1 ; WX 600 ; N zcaron ; B 81 0 643 667 ; C -1 ; WX 600 ; N ncommaaccent ; B 18 -250 615 454 ; C -1 ; WX 600 ; N onesuperior ; B 212 230 514 616 ; C -1 ; WX 600 ; N imacron ; B 77 0 575 585 ; EndCharMetrics EndFontMetrics gle-graphics-4.2.4c/src/fonts/Adobe-Core35_AFMs-314/Times-BoldItalic.afm0000664000000000000000000016427211405446017023664 0ustar rootrootStartFontMetrics 4.1 Comment Copyright (c) 1985, 1987, 1989, 1990, 1993, 1997 Adobe Systems Incorporated. All Rights Reserved. Comment Creation Date: Thu May 1 13:04:06 1997 Comment UniqueID 43066 Comment VMusage 45874 56899 FontName Times-BoldItalic FullName Times Bold Italic FamilyName Times Weight Bold ItalicAngle -15 IsFixedPitch false FontBBox -200 -218 996 921 UnderlinePosition -100 UnderlineThickness 50 Version 002.000 Notice Copyright (c) 1985, 1987, 1989, 1990, 1993, 1997 Adobe Systems Incorporated. All Rights Reserved.Times is a trademark of Linotype-Hell AG and/or its subsidiaries. EncodingScheme AdobeStandardEncoding CapHeight 669 XHeight 462 Ascender 683 Descender -217 StdHW 42 StdVW 121 StartCharMetrics 314 C 32 ; WX 250 ; N space ; B 0 0 0 0 ; C 33 ; WX 389 ; N exclam ; B 67 -13 370 684 ; C 34 ; WX 555 ; N quotedbl ; B 136 398 536 685 ; C 35 ; WX 500 ; N numbersign ; B -33 0 533 700 ; C 36 ; WX 500 ; N dollar ; B -20 -100 497 733 ; C 37 ; WX 833 ; N percent ; B 39 -10 793 692 ; C 38 ; WX 778 ; N ampersand ; B 5 -19 699 682 ; C 39 ; WX 333 ; N quoteright ; B 98 369 302 685 ; C 40 ; WX 333 ; N parenleft ; B 28 -179 344 685 ; C 41 ; WX 333 ; N parenright ; B -44 -179 271 685 ; C 42 ; WX 500 ; N asterisk ; B 65 249 456 685 ; C 43 ; WX 570 ; N plus ; B 33 0 537 506 ; C 44 ; WX 250 ; N comma ; B -60 -182 144 134 ; C 45 ; WX 333 ; N hyphen ; B 2 166 271 282 ; C 46 ; WX 250 ; N period ; B -9 -13 139 135 ; C 47 ; WX 278 ; N slash ; B -64 -18 342 685 ; C 48 ; WX 500 ; N zero ; B 17 -14 477 683 ; C 49 ; WX 500 ; N one ; B 5 0 419 683 ; C 50 ; WX 500 ; N two ; B -27 0 446 683 ; C 51 ; WX 500 ; N three ; B -15 -13 450 683 ; C 52 ; WX 500 ; N four ; B -15 0 503 683 ; C 53 ; WX 500 ; N five ; B -11 -13 487 669 ; C 54 ; WX 500 ; N six ; B 23 -15 509 679 ; C 55 ; WX 500 ; N seven ; B 52 0 525 669 ; C 56 ; WX 500 ; N eight ; B 3 -13 476 683 ; C 57 ; WX 500 ; N nine ; B -12 -10 475 683 ; C 58 ; WX 333 ; N colon ; B 23 -13 264 459 ; C 59 ; WX 333 ; N semicolon ; B -25 -183 264 459 ; C 60 ; WX 570 ; N less ; B 31 -8 539 514 ; C 61 ; WX 570 ; N equal ; B 33 107 537 399 ; C 62 ; WX 570 ; N greater ; B 31 -8 539 514 ; C 63 ; WX 500 ; N question ; B 79 -13 470 684 ; C 64 ; WX 832 ; N at ; B 63 -18 770 685 ; C 65 ; WX 667 ; N A ; B -67 0 593 683 ; C 66 ; WX 667 ; N B ; B -24 0 624 669 ; C 67 ; WX 667 ; N C ; B 32 -18 677 685 ; C 68 ; WX 722 ; N D ; B -46 0 685 669 ; C 69 ; WX 667 ; N E ; B -27 0 653 669 ; C 70 ; WX 667 ; N F ; B -13 0 660 669 ; C 71 ; WX 722 ; N G ; B 21 -18 706 685 ; C 72 ; WX 778 ; N H ; B -24 0 799 669 ; C 73 ; WX 389 ; N I ; B -32 0 406 669 ; C 74 ; WX 500 ; N J ; B -46 -99 524 669 ; C 75 ; WX 667 ; N K ; B -21 0 702 669 ; C 76 ; WX 611 ; N L ; B -22 0 590 669 ; C 77 ; WX 889 ; N M ; B -29 -12 917 669 ; C 78 ; WX 722 ; N N ; B -27 -15 748 669 ; C 79 ; WX 722 ; N O ; B 27 -18 691 685 ; C 80 ; WX 611 ; N P ; B -27 0 613 669 ; C 81 ; WX 722 ; N Q ; B 27 -208 691 685 ; C 82 ; WX 667 ; N R ; B -29 0 623 669 ; C 83 ; WX 556 ; N S ; B 2 -18 526 685 ; C 84 ; WX 611 ; N T ; B 50 0 650 669 ; C 85 ; WX 722 ; N U ; B 67 -18 744 669 ; C 86 ; WX 667 ; N V ; B 65 -18 715 669 ; C 87 ; WX 889 ; N W ; B 65 -18 940 669 ; C 88 ; WX 667 ; N X ; B -24 0 694 669 ; C 89 ; WX 611 ; N Y ; B 73 0 659 669 ; C 90 ; WX 611 ; N Z ; B -11 0 590 669 ; C 91 ; WX 333 ; N bracketleft ; B -37 -159 362 674 ; C 92 ; WX 278 ; N backslash ; B -1 -18 279 685 ; C 93 ; WX 333 ; N bracketright ; B -56 -157 343 674 ; C 94 ; WX 570 ; N asciicircum ; B 67 304 503 669 ; C 95 ; WX 500 ; N underscore ; B 0 -125 500 -75 ; C 96 ; WX 333 ; N quoteleft ; B 128 369 332 685 ; C 97 ; WX 500 ; N a ; B -21 -14 455 462 ; C 98 ; WX 500 ; N b ; B -14 -13 444 699 ; C 99 ; WX 444 ; N c ; B -5 -13 392 462 ; C 100 ; WX 500 ; N d ; B -21 -13 517 699 ; C 101 ; WX 444 ; N e ; B 5 -13 398 462 ; C 102 ; WX 333 ; N f ; B -169 -205 446 698 ; L i fi ; L l fl ; C 103 ; WX 500 ; N g ; B -52 -203 478 462 ; C 104 ; WX 556 ; N h ; B -13 -9 498 699 ; C 105 ; WX 278 ; N i ; B 2 -9 263 684 ; C 106 ; WX 278 ; N j ; B -189 -207 279 684 ; C 107 ; WX 500 ; N k ; B -23 -8 483 699 ; C 108 ; WX 278 ; N l ; B 2 -9 290 699 ; C 109 ; WX 778 ; N m ; B -14 -9 722 462 ; C 110 ; WX 556 ; N n ; B -6 -9 493 462 ; C 111 ; WX 500 ; N o ; B -3 -13 441 462 ; C 112 ; WX 500 ; N p ; B -120 -205 446 462 ; C 113 ; WX 500 ; N q ; B 1 -205 471 462 ; C 114 ; WX 389 ; N r ; B -21 0 389 462 ; C 115 ; WX 389 ; N s ; B -19 -13 333 462 ; C 116 ; WX 278 ; N t ; B -11 -9 281 594 ; C 117 ; WX 556 ; N u ; B 15 -9 492 462 ; C 118 ; WX 444 ; N v ; B 16 -13 401 462 ; C 119 ; WX 667 ; N w ; B 16 -13 614 462 ; C 120 ; WX 500 ; N x ; B -46 -13 469 462 ; C 121 ; WX 444 ; N y ; B -94 -205 392 462 ; C 122 ; WX 389 ; N z ; B -43 -78 368 449 ; C 123 ; WX 348 ; N braceleft ; B 5 -187 436 686 ; C 124 ; WX 220 ; N bar ; B 66 -218 154 782 ; C 125 ; WX 348 ; N braceright ; B -129 -187 302 686 ; C 126 ; WX 570 ; N asciitilde ; B 54 173 516 333 ; C 161 ; WX 389 ; N exclamdown ; B 19 -205 322 492 ; C 162 ; WX 500 ; N cent ; B 42 -143 439 576 ; C 163 ; WX 500 ; N sterling ; B -32 -12 510 683 ; C 164 ; WX 167 ; N fraction ; B -169 -14 324 683 ; C 165 ; WX 500 ; N yen ; B 33 0 628 669 ; C 166 ; WX 500 ; N florin ; B -87 -156 537 707 ; C 167 ; WX 500 ; N section ; B 36 -143 459 685 ; C 168 ; WX 500 ; N currency ; B -26 34 526 586 ; C 169 ; WX 278 ; N quotesingle ; B 128 398 268 685 ; C 170 ; WX 500 ; N quotedblleft ; B 53 369 513 685 ; C 171 ; WX 500 ; N guillemotleft ; B 12 32 468 415 ; C 172 ; WX 333 ; N guilsinglleft ; B 32 32 303 415 ; C 173 ; WX 333 ; N guilsinglright ; B 10 32 281 415 ; C 174 ; WX 556 ; N fi ; B -188 -205 514 703 ; C 175 ; WX 556 ; N fl ; B -186 -205 553 704 ; C 177 ; WX 500 ; N endash ; B -40 178 477 269 ; C 178 ; WX 500 ; N dagger ; B 91 -145 494 685 ; C 179 ; WX 500 ; N daggerdbl ; B 10 -139 493 685 ; C 180 ; WX 250 ; N periodcentered ; B 51 257 199 405 ; C 182 ; WX 500 ; N paragraph ; B -57 -193 562 669 ; C 183 ; WX 350 ; N bullet ; B 0 175 350 525 ; C 184 ; WX 333 ; N quotesinglbase ; B -5 -182 199 134 ; C 185 ; WX 500 ; N quotedblbase ; B -57 -182 403 134 ; C 186 ; WX 500 ; N quotedblright ; B 53 369 513 685 ; C 187 ; WX 500 ; N guillemotright ; B 12 32 468 415 ; C 188 ; WX 1000 ; N ellipsis ; B 40 -13 852 135 ; C 189 ; WX 1000 ; N perthousand ; B 7 -29 996 706 ; C 191 ; WX 500 ; N questiondown ; B 30 -205 421 492 ; C 193 ; WX 333 ; N grave ; B 85 516 297 697 ; C 194 ; WX 333 ; N acute ; B 139 516 379 697 ; C 195 ; WX 333 ; N circumflex ; B 40 516 367 690 ; C 196 ; WX 333 ; N tilde ; B 48 536 407 655 ; C 197 ; WX 333 ; N macron ; B 51 553 393 623 ; C 198 ; WX 333 ; N breve ; B 71 516 387 678 ; C 199 ; WX 333 ; N dotaccent ; B 163 550 298 684 ; C 200 ; WX 333 ; N dieresis ; B 55 550 402 684 ; C 202 ; WX 333 ; N ring ; B 127 516 340 729 ; C 203 ; WX 333 ; N cedilla ; B -80 -218 156 5 ; C 205 ; WX 333 ; N hungarumlaut ; B 69 516 498 697 ; C 206 ; WX 333 ; N ogonek ; B 15 -183 244 34 ; C 207 ; WX 333 ; N caron ; B 79 516 411 690 ; C 208 ; WX 1000 ; N emdash ; B -40 178 977 269 ; C 225 ; WX 944 ; N AE ; B -64 0 918 669 ; C 227 ; WX 266 ; N ordfeminine ; B 16 399 330 685 ; C 232 ; WX 611 ; N Lslash ; B -22 0 590 669 ; C 233 ; WX 722 ; N Oslash ; B 27 -125 691 764 ; C 234 ; WX 944 ; N OE ; B 23 -8 946 677 ; C 235 ; WX 300 ; N ordmasculine ; B 56 400 347 685 ; C 241 ; WX 722 ; N ae ; B -5 -13 673 462 ; C 245 ; WX 278 ; N dotlessi ; B 2 -9 238 462 ; C 248 ; WX 278 ; N lslash ; B -7 -9 307 699 ; C 249 ; WX 500 ; N oslash ; B -3 -119 441 560 ; C 250 ; WX 722 ; N oe ; B 6 -13 674 462 ; C 251 ; WX 500 ; N germandbls ; B -200 -200 473 705 ; C -1 ; WX 389 ; N Idieresis ; B -32 0 450 862 ; C -1 ; WX 444 ; N eacute ; B 5 -13 435 697 ; C -1 ; WX 500 ; N abreve ; B -21 -14 471 678 ; C -1 ; WX 556 ; N uhungarumlaut ; B 15 -9 610 697 ; C -1 ; WX 444 ; N ecaron ; B 5 -13 467 690 ; C -1 ; WX 611 ; N Ydieresis ; B 73 0 659 862 ; C -1 ; WX 570 ; N divide ; B 33 -29 537 535 ; C -1 ; WX 611 ; N Yacute ; B 73 0 659 904 ; C -1 ; WX 667 ; N Acircumflex ; B -67 0 593 897 ; C -1 ; WX 500 ; N aacute ; B -21 -14 463 697 ; C -1 ; WX 722 ; N Ucircumflex ; B 67 -18 744 897 ; C -1 ; WX 444 ; N yacute ; B -94 -205 435 697 ; C -1 ; WX 389 ; N scommaaccent ; B -19 -218 333 462 ; C -1 ; WX 444 ; N ecircumflex ; B 5 -13 423 690 ; C -1 ; WX 722 ; N Uring ; B 67 -18 744 921 ; C -1 ; WX 722 ; N Udieresis ; B 67 -18 744 862 ; C -1 ; WX 500 ; N aogonek ; B -21 -183 455 462 ; C -1 ; WX 722 ; N Uacute ; B 67 -18 744 904 ; C -1 ; WX 556 ; N uogonek ; B 15 -183 492 462 ; C -1 ; WX 667 ; N Edieresis ; B -27 0 653 862 ; C -1 ; WX 722 ; N Dcroat ; B -31 0 700 669 ; C -1 ; WX 250 ; N commaaccent ; B -36 -218 131 -50 ; C -1 ; WX 747 ; N copyright ; B 30 -18 718 685 ; C -1 ; WX 667 ; N Emacron ; B -27 0 653 830 ; C -1 ; WX 444 ; N ccaron ; B -5 -13 467 690 ; C -1 ; WX 500 ; N aring ; B -21 -14 455 729 ; C -1 ; WX 722 ; N Ncommaaccent ; B -27 -218 748 669 ; C -1 ; WX 278 ; N lacute ; B 2 -9 392 904 ; C -1 ; WX 500 ; N agrave ; B -21 -14 455 697 ; C -1 ; WX 611 ; N Tcommaaccent ; B 50 -218 650 669 ; C -1 ; WX 667 ; N Cacute ; B 32 -18 677 904 ; C -1 ; WX 500 ; N atilde ; B -21 -14 491 655 ; C -1 ; WX 667 ; N Edotaccent ; B -27 0 653 862 ; C -1 ; WX 389 ; N scaron ; B -19 -13 424 690 ; C -1 ; WX 389 ; N scedilla ; B -19 -218 333 462 ; C -1 ; WX 278 ; N iacute ; B 2 -9 352 697 ; C -1 ; WX 494 ; N lozenge ; B 10 0 484 745 ; C -1 ; WX 667 ; N Rcaron ; B -29 0 623 897 ; C -1 ; WX 722 ; N Gcommaaccent ; B 21 -218 706 685 ; C -1 ; WX 556 ; N ucircumflex ; B 15 -9 492 690 ; C -1 ; WX 500 ; N acircumflex ; B -21 -14 455 690 ; C -1 ; WX 667 ; N Amacron ; B -67 0 593 830 ; C -1 ; WX 389 ; N rcaron ; B -21 0 424 690 ; C -1 ; WX 444 ; N ccedilla ; B -5 -218 392 462 ; C -1 ; WX 611 ; N Zdotaccent ; B -11 0 590 862 ; C -1 ; WX 611 ; N Thorn ; B -27 0 573 669 ; C -1 ; WX 722 ; N Omacron ; B 27 -18 691 830 ; C -1 ; WX 667 ; N Racute ; B -29 0 623 904 ; C -1 ; WX 556 ; N Sacute ; B 2 -18 531 904 ; C -1 ; WX 608 ; N dcaron ; B -21 -13 675 708 ; C -1 ; WX 722 ; N Umacron ; B 67 -18 744 830 ; C -1 ; WX 556 ; N uring ; B 15 -9 492 729 ; C -1 ; WX 300 ; N threesuperior ; B 17 265 321 683 ; C -1 ; WX 722 ; N Ograve ; B 27 -18 691 904 ; C -1 ; WX 667 ; N Agrave ; B -67 0 593 904 ; C -1 ; WX 667 ; N Abreve ; B -67 0 593 885 ; C -1 ; WX 570 ; N multiply ; B 48 16 522 490 ; C -1 ; WX 556 ; N uacute ; B 15 -9 492 697 ; C -1 ; WX 611 ; N Tcaron ; B 50 0 650 897 ; C -1 ; WX 494 ; N partialdiff ; B 11 -21 494 750 ; C -1 ; WX 444 ; N ydieresis ; B -94 -205 443 655 ; C -1 ; WX 722 ; N Nacute ; B -27 -15 748 904 ; C -1 ; WX 278 ; N icircumflex ; B -3 -9 324 690 ; C -1 ; WX 667 ; N Ecircumflex ; B -27 0 653 897 ; C -1 ; WX 500 ; N adieresis ; B -21 -14 476 655 ; C -1 ; WX 444 ; N edieresis ; B 5 -13 448 655 ; C -1 ; WX 444 ; N cacute ; B -5 -13 435 697 ; C -1 ; WX 556 ; N nacute ; B -6 -9 493 697 ; C -1 ; WX 556 ; N umacron ; B 15 -9 492 623 ; C -1 ; WX 722 ; N Ncaron ; B -27 -15 748 897 ; C -1 ; WX 389 ; N Iacute ; B -32 0 432 904 ; C -1 ; WX 570 ; N plusminus ; B 33 0 537 506 ; C -1 ; WX 220 ; N brokenbar ; B 66 -143 154 707 ; C -1 ; WX 747 ; N registered ; B 30 -18 718 685 ; C -1 ; WX 722 ; N Gbreve ; B 21 -18 706 885 ; C -1 ; WX 389 ; N Idotaccent ; B -32 0 406 862 ; C -1 ; WX 600 ; N summation ; B 14 -10 585 706 ; C -1 ; WX 667 ; N Egrave ; B -27 0 653 904 ; C -1 ; WX 389 ; N racute ; B -21 0 407 697 ; C -1 ; WX 500 ; N omacron ; B -3 -13 462 623 ; C -1 ; WX 611 ; N Zacute ; B -11 0 590 904 ; C -1 ; WX 611 ; N Zcaron ; B -11 0 590 897 ; C -1 ; WX 549 ; N greaterequal ; B 26 0 523 704 ; C -1 ; WX 722 ; N Eth ; B -31 0 700 669 ; C -1 ; WX 667 ; N Ccedilla ; B 32 -218 677 685 ; C -1 ; WX 278 ; N lcommaaccent ; B -42 -218 290 699 ; C -1 ; WX 366 ; N tcaron ; B -11 -9 434 754 ; C -1 ; WX 444 ; N eogonek ; B 5 -183 398 462 ; C -1 ; WX 722 ; N Uogonek ; B 67 -183 744 669 ; C -1 ; WX 667 ; N Aacute ; B -67 0 593 904 ; C -1 ; WX 667 ; N Adieresis ; B -67 0 593 862 ; C -1 ; WX 444 ; N egrave ; B 5 -13 398 697 ; C -1 ; WX 389 ; N zacute ; B -43 -78 407 697 ; C -1 ; WX 278 ; N iogonek ; B -20 -183 263 684 ; C -1 ; WX 722 ; N Oacute ; B 27 -18 691 904 ; C -1 ; WX 500 ; N oacute ; B -3 -13 463 697 ; C -1 ; WX 500 ; N amacron ; B -21 -14 467 623 ; C -1 ; WX 389 ; N sacute ; B -19 -13 407 697 ; C -1 ; WX 278 ; N idieresis ; B 2 -9 364 655 ; C -1 ; WX 722 ; N Ocircumflex ; B 27 -18 691 897 ; C -1 ; WX 722 ; N Ugrave ; B 67 -18 744 904 ; C -1 ; WX 612 ; N Delta ; B 6 0 608 688 ; C -1 ; WX 500 ; N thorn ; B -120 -205 446 699 ; C -1 ; WX 300 ; N twosuperior ; B 2 274 313 683 ; C -1 ; WX 722 ; N Odieresis ; B 27 -18 691 862 ; C -1 ; WX 576 ; N mu ; B -60 -207 516 449 ; C -1 ; WX 278 ; N igrave ; B 2 -9 259 697 ; C -1 ; WX 500 ; N ohungarumlaut ; B -3 -13 582 697 ; C -1 ; WX 667 ; N Eogonek ; B -27 -183 653 669 ; C -1 ; WX 500 ; N dcroat ; B -21 -13 552 699 ; C -1 ; WX 750 ; N threequarters ; B 7 -14 726 683 ; C -1 ; WX 556 ; N Scedilla ; B 2 -218 526 685 ; C -1 ; WX 382 ; N lcaron ; B 2 -9 448 708 ; C -1 ; WX 667 ; N Kcommaaccent ; B -21 -218 702 669 ; C -1 ; WX 611 ; N Lacute ; B -22 0 590 904 ; C -1 ; WX 1000 ; N trademark ; B 32 263 968 669 ; C -1 ; WX 444 ; N edotaccent ; B 5 -13 398 655 ; C -1 ; WX 389 ; N Igrave ; B -32 0 406 904 ; C -1 ; WX 389 ; N Imacron ; B -32 0 461 830 ; C -1 ; WX 611 ; N Lcaron ; B -22 0 671 718 ; C -1 ; WX 750 ; N onehalf ; B -9 -14 723 683 ; C -1 ; WX 549 ; N lessequal ; B 29 0 526 704 ; C -1 ; WX 500 ; N ocircumflex ; B -3 -13 451 690 ; C -1 ; WX 556 ; N ntilde ; B -6 -9 504 655 ; C -1 ; WX 722 ; N Uhungarumlaut ; B 67 -18 744 904 ; C -1 ; WX 667 ; N Eacute ; B -27 0 653 904 ; C -1 ; WX 444 ; N emacron ; B 5 -13 439 623 ; C -1 ; WX 500 ; N gbreve ; B -52 -203 478 678 ; C -1 ; WX 750 ; N onequarter ; B 7 -14 721 683 ; C -1 ; WX 556 ; N Scaron ; B 2 -18 553 897 ; C -1 ; WX 556 ; N Scommaaccent ; B 2 -218 526 685 ; C -1 ; WX 722 ; N Ohungarumlaut ; B 27 -18 723 904 ; C -1 ; WX 400 ; N degree ; B 83 397 369 683 ; C -1 ; WX 500 ; N ograve ; B -3 -13 441 697 ; C -1 ; WX 667 ; N Ccaron ; B 32 -18 677 897 ; C -1 ; WX 556 ; N ugrave ; B 15 -9 492 697 ; C -1 ; WX 549 ; N radical ; B 10 -46 512 850 ; C -1 ; WX 722 ; N Dcaron ; B -46 0 685 897 ; C -1 ; WX 389 ; N rcommaaccent ; B -67 -218 389 462 ; C -1 ; WX 722 ; N Ntilde ; B -27 -15 748 862 ; C -1 ; WX 500 ; N otilde ; B -3 -13 491 655 ; C -1 ; WX 667 ; N Rcommaaccent ; B -29 -218 623 669 ; C -1 ; WX 611 ; N Lcommaaccent ; B -22 -218 590 669 ; C -1 ; WX 667 ; N Atilde ; B -67 0 593 862 ; C -1 ; WX 667 ; N Aogonek ; B -67 -183 604 683 ; C -1 ; WX 667 ; N Aring ; B -67 0 593 921 ; C -1 ; WX 722 ; N Otilde ; B 27 -18 691 862 ; C -1 ; WX 389 ; N zdotaccent ; B -43 -78 368 655 ; C -1 ; WX 667 ; N Ecaron ; B -27 0 653 897 ; C -1 ; WX 389 ; N Iogonek ; B -32 -183 406 669 ; C -1 ; WX 500 ; N kcommaaccent ; B -23 -218 483 699 ; C -1 ; WX 606 ; N minus ; B 51 209 555 297 ; C -1 ; WX 389 ; N Icircumflex ; B -32 0 450 897 ; C -1 ; WX 556 ; N ncaron ; B -6 -9 523 690 ; C -1 ; WX 278 ; N tcommaaccent ; B -62 -218 281 594 ; C -1 ; WX 606 ; N logicalnot ; B 51 108 555 399 ; C -1 ; WX 500 ; N odieresis ; B -3 -13 471 655 ; C -1 ; WX 556 ; N udieresis ; B 15 -9 499 655 ; C -1 ; WX 549 ; N notequal ; B 15 -49 540 570 ; C -1 ; WX 500 ; N gcommaaccent ; B -52 -203 478 767 ; C -1 ; WX 500 ; N eth ; B -3 -13 454 699 ; C -1 ; WX 389 ; N zcaron ; B -43 -78 424 690 ; C -1 ; WX 556 ; N ncommaaccent ; B -6 -218 493 462 ; C -1 ; WX 300 ; N onesuperior ; B 30 274 301 683 ; C -1 ; WX 278 ; N imacron ; B 2 -9 294 623 ; EndCharMetrics StartKernData StartKernPairs 2038 KPX A C -65 KPX A Cacute -65 KPX A Ccaron -65 KPX A Ccedilla -65 KPX A G -60 KPX A Gbreve -60 KPX A Gcommaaccent -60 KPX A O -50 KPX A Oacute -50 KPX A Ocircumflex -50 KPX A Odieresis -50 KPX A Ograve -50 KPX A Ohungarumlaut -50 KPX A Omacron -50 KPX A Oslash -50 KPX A Otilde -50 KPX A Q -55 KPX A T -55 KPX A Tcaron -55 KPX A Tcommaaccent -55 KPX A U -50 KPX A Uacute -50 KPX A Ucircumflex -50 KPX A Udieresis -50 KPX A Ugrave -50 KPX A Uhungarumlaut -50 KPX A Umacron -50 KPX A Uogonek -50 KPX A Uring -50 KPX A V -95 KPX A W -100 KPX A Y -70 KPX A Yacute -70 KPX A Ydieresis -70 KPX A quoteright -74 KPX A u -30 KPX A uacute -30 KPX A ucircumflex -30 KPX A udieresis -30 KPX A ugrave -30 KPX A uhungarumlaut -30 KPX A umacron -30 KPX A uogonek -30 KPX A uring -30 KPX A v -74 KPX A w -74 KPX A y -74 KPX A yacute -74 KPX A ydieresis -74 KPX Aacute C -65 KPX Aacute Cacute -65 KPX Aacute Ccaron -65 KPX Aacute Ccedilla -65 KPX Aacute G -60 KPX Aacute Gbreve -60 KPX Aacute Gcommaaccent -60 KPX Aacute O -50 KPX Aacute Oacute -50 KPX Aacute Ocircumflex -50 KPX Aacute Odieresis -50 KPX Aacute Ograve -50 KPX Aacute Ohungarumlaut -50 KPX Aacute Omacron -50 KPX Aacute Oslash -50 KPX Aacute Otilde -50 KPX Aacute Q -55 KPX Aacute T -55 KPX Aacute Tcaron -55 KPX Aacute Tcommaaccent -55 KPX Aacute U -50 KPX Aacute Uacute -50 KPX Aacute Ucircumflex -50 KPX Aacute Udieresis -50 KPX Aacute Ugrave -50 KPX Aacute Uhungarumlaut -50 KPX Aacute Umacron -50 KPX Aacute Uogonek -50 KPX Aacute Uring -50 KPX Aacute V -95 KPX Aacute W -100 KPX Aacute Y -70 KPX Aacute Yacute -70 KPX Aacute Ydieresis -70 KPX Aacute quoteright -74 KPX Aacute u -30 KPX Aacute uacute -30 KPX Aacute ucircumflex -30 KPX Aacute udieresis -30 KPX Aacute ugrave -30 KPX Aacute uhungarumlaut -30 KPX Aacute umacron -30 KPX Aacute uogonek -30 KPX Aacute uring -30 KPX Aacute v -74 KPX Aacute w -74 KPX Aacute y -74 KPX Aacute yacute -74 KPX Aacute ydieresis -74 KPX Abreve C -65 KPX Abreve Cacute -65 KPX Abreve Ccaron -65 KPX Abreve Ccedilla -65 KPX Abreve G -60 KPX Abreve Gbreve -60 KPX Abreve Gcommaaccent -60 KPX Abreve O -50 KPX Abreve Oacute -50 KPX Abreve Ocircumflex -50 KPX Abreve Odieresis -50 KPX Abreve Ograve -50 KPX Abreve Ohungarumlaut -50 KPX Abreve Omacron -50 KPX Abreve Oslash -50 KPX Abreve Otilde -50 KPX Abreve Q -55 KPX Abreve T -55 KPX Abreve Tcaron -55 KPX Abreve Tcommaaccent -55 KPX Abreve U -50 KPX Abreve Uacute -50 KPX Abreve Ucircumflex -50 KPX Abreve Udieresis -50 KPX Abreve Ugrave -50 KPX Abreve Uhungarumlaut -50 KPX Abreve Umacron -50 KPX Abreve Uogonek -50 KPX Abreve Uring -50 KPX Abreve V -95 KPX Abreve W -100 KPX Abreve Y -70 KPX Abreve Yacute -70 KPX Abreve Ydieresis -70 KPX Abreve quoteright -74 KPX Abreve u -30 KPX Abreve uacute -30 KPX Abreve ucircumflex -30 KPX Abreve udieresis -30 KPX Abreve ugrave -30 KPX Abreve uhungarumlaut -30 KPX Abreve umacron -30 KPX Abreve uogonek -30 KPX Abreve uring -30 KPX Abreve v -74 KPX Abreve w -74 KPX Abreve y -74 KPX Abreve yacute -74 KPX Abreve ydieresis -74 KPX Acircumflex C -65 KPX Acircumflex Cacute -65 KPX Acircumflex Ccaron -65 KPX Acircumflex Ccedilla -65 KPX Acircumflex G -60 KPX Acircumflex Gbreve -60 KPX Acircumflex Gcommaaccent -60 KPX Acircumflex O -50 KPX Acircumflex Oacute -50 KPX Acircumflex Ocircumflex -50 KPX Acircumflex Odieresis -50 KPX Acircumflex Ograve -50 KPX Acircumflex Ohungarumlaut -50 KPX Acircumflex Omacron -50 KPX Acircumflex Oslash -50 KPX Acircumflex Otilde -50 KPX Acircumflex Q -55 KPX Acircumflex T -55 KPX Acircumflex Tcaron -55 KPX Acircumflex Tcommaaccent -55 KPX Acircumflex U -50 KPX Acircumflex Uacute -50 KPX Acircumflex Ucircumflex -50 KPX Acircumflex Udieresis -50 KPX Acircumflex Ugrave -50 KPX Acircumflex Uhungarumlaut -50 KPX Acircumflex Umacron -50 KPX Acircumflex Uogonek -50 KPX Acircumflex Uring -50 KPX Acircumflex V -95 KPX Acircumflex W -100 KPX Acircumflex Y -70 KPX Acircumflex Yacute -70 KPX Acircumflex Ydieresis -70 KPX Acircumflex quoteright -74 KPX Acircumflex u -30 KPX Acircumflex uacute -30 KPX Acircumflex ucircumflex -30 KPX Acircumflex udieresis -30 KPX Acircumflex ugrave -30 KPX Acircumflex uhungarumlaut -30 KPX Acircumflex umacron -30 KPX Acircumflex uogonek -30 KPX Acircumflex uring -30 KPX Acircumflex v -74 KPX Acircumflex w -74 KPX Acircumflex y -74 KPX Acircumflex yacute -74 KPX Acircumflex ydieresis -74 KPX Adieresis C -65 KPX Adieresis Cacute -65 KPX Adieresis Ccaron -65 KPX Adieresis Ccedilla -65 KPX Adieresis G -60 KPX Adieresis Gbreve -60 KPX Adieresis Gcommaaccent -60 KPX Adieresis O -50 KPX Adieresis Oacute -50 KPX Adieresis Ocircumflex -50 KPX Adieresis Odieresis -50 KPX Adieresis Ograve -50 KPX Adieresis Ohungarumlaut -50 KPX Adieresis Omacron -50 KPX Adieresis Oslash -50 KPX Adieresis Otilde -50 KPX Adieresis Q -55 KPX Adieresis T -55 KPX Adieresis Tcaron -55 KPX Adieresis Tcommaaccent -55 KPX Adieresis U -50 KPX Adieresis Uacute -50 KPX Adieresis Ucircumflex -50 KPX Adieresis Udieresis -50 KPX Adieresis Ugrave -50 KPX Adieresis Uhungarumlaut -50 KPX Adieresis Umacron -50 KPX Adieresis Uogonek -50 KPX Adieresis Uring -50 KPX Adieresis V -95 KPX Adieresis W -100 KPX Adieresis Y -70 KPX Adieresis Yacute -70 KPX Adieresis Ydieresis -70 KPX Adieresis quoteright -74 KPX Adieresis u -30 KPX Adieresis uacute -30 KPX Adieresis ucircumflex -30 KPX Adieresis udieresis -30 KPX Adieresis ugrave -30 KPX Adieresis uhungarumlaut -30 KPX Adieresis umacron -30 KPX Adieresis uogonek -30 KPX Adieresis uring -30 KPX Adieresis v -74 KPX Adieresis w -74 KPX Adieresis y -74 KPX Adieresis yacute -74 KPX Adieresis ydieresis -74 KPX Agrave C -65 KPX Agrave Cacute -65 KPX Agrave Ccaron -65 KPX Agrave Ccedilla -65 KPX Agrave G -60 KPX Agrave Gbreve -60 KPX Agrave Gcommaaccent -60 KPX Agrave O -50 KPX Agrave Oacute -50 KPX Agrave Ocircumflex -50 KPX Agrave Odieresis -50 KPX Agrave Ograve -50 KPX Agrave Ohungarumlaut -50 KPX Agrave Omacron -50 KPX Agrave Oslash -50 KPX Agrave Otilde -50 KPX Agrave Q -55 KPX Agrave T -55 KPX Agrave Tcaron -55 KPX Agrave Tcommaaccent -55 KPX Agrave U -50 KPX Agrave Uacute -50 KPX Agrave Ucircumflex -50 KPX Agrave Udieresis -50 KPX Agrave Ugrave -50 KPX Agrave Uhungarumlaut -50 KPX Agrave Umacron -50 KPX Agrave Uogonek -50 KPX Agrave Uring -50 KPX Agrave V -95 KPX Agrave W -100 KPX Agrave Y -70 KPX Agrave Yacute -70 KPX Agrave Ydieresis -70 KPX Agrave quoteright -74 KPX Agrave u -30 KPX Agrave uacute -30 KPX Agrave ucircumflex -30 KPX Agrave udieresis -30 KPX Agrave ugrave -30 KPX Agrave uhungarumlaut -30 KPX Agrave umacron -30 KPX Agrave uogonek -30 KPX Agrave uring -30 KPX Agrave v -74 KPX Agrave w -74 KPX Agrave y -74 KPX Agrave yacute -74 KPX Agrave ydieresis -74 KPX Amacron C -65 KPX Amacron Cacute -65 KPX Amacron Ccaron -65 KPX Amacron Ccedilla -65 KPX Amacron G -60 KPX Amacron Gbreve -60 KPX Amacron Gcommaaccent -60 KPX Amacron O -50 KPX Amacron Oacute -50 KPX Amacron Ocircumflex -50 KPX Amacron Odieresis -50 KPX Amacron Ograve -50 KPX Amacron Ohungarumlaut -50 KPX Amacron Omacron -50 KPX Amacron Oslash -50 KPX Amacron Otilde -50 KPX Amacron Q -55 KPX Amacron T -55 KPX Amacron Tcaron -55 KPX Amacron Tcommaaccent -55 KPX Amacron U -50 KPX Amacron Uacute -50 KPX Amacron Ucircumflex -50 KPX Amacron Udieresis -50 KPX Amacron Ugrave -50 KPX Amacron Uhungarumlaut -50 KPX Amacron Umacron -50 KPX Amacron Uogonek -50 KPX Amacron Uring -50 KPX Amacron V -95 KPX Amacron W -100 KPX Amacron Y -70 KPX Amacron Yacute -70 KPX Amacron Ydieresis -70 KPX Amacron quoteright -74 KPX Amacron u -30 KPX Amacron uacute -30 KPX Amacron ucircumflex -30 KPX Amacron udieresis -30 KPX Amacron ugrave -30 KPX Amacron uhungarumlaut -30 KPX Amacron umacron -30 KPX Amacron uogonek -30 KPX Amacron uring -30 KPX Amacron v -74 KPX Amacron w -74 KPX Amacron y -74 KPX Amacron yacute -74 KPX Amacron ydieresis -74 KPX Aogonek C -65 KPX Aogonek Cacute -65 KPX Aogonek Ccaron -65 KPX Aogonek Ccedilla -65 KPX Aogonek G -60 KPX Aogonek Gbreve -60 KPX Aogonek Gcommaaccent -60 KPX Aogonek O -50 KPX Aogonek Oacute -50 KPX Aogonek Ocircumflex -50 KPX Aogonek Odieresis -50 KPX Aogonek Ograve -50 KPX Aogonek Ohungarumlaut -50 KPX Aogonek Omacron -50 KPX Aogonek Oslash -50 KPX Aogonek Otilde -50 KPX Aogonek Q -55 KPX Aogonek T -55 KPX Aogonek Tcaron -55 KPX Aogonek Tcommaaccent -55 KPX Aogonek U -50 KPX Aogonek Uacute -50 KPX Aogonek Ucircumflex -50 KPX Aogonek Udieresis -50 KPX Aogonek Ugrave -50 KPX Aogonek Uhungarumlaut -50 KPX Aogonek Umacron -50 KPX Aogonek Uogonek -50 KPX Aogonek Uring -50 KPX Aogonek V -95 KPX Aogonek W -100 KPX Aogonek Y -70 KPX Aogonek Yacute -70 KPX Aogonek Ydieresis -70 KPX Aogonek quoteright -74 KPX Aogonek u -30 KPX Aogonek uacute -30 KPX Aogonek ucircumflex -30 KPX Aogonek udieresis -30 KPX Aogonek ugrave -30 KPX Aogonek uhungarumlaut -30 KPX Aogonek umacron -30 KPX Aogonek uogonek -30 KPX Aogonek uring -30 KPX Aogonek v -74 KPX Aogonek w -74 KPX Aogonek y -34 KPX Aogonek yacute -34 KPX Aogonek ydieresis -34 KPX Aring C -65 KPX Aring Cacute -65 KPX Aring Ccaron -65 KPX Aring Ccedilla -65 KPX Aring G -60 KPX Aring Gbreve -60 KPX Aring Gcommaaccent -60 KPX Aring O -50 KPX Aring Oacute -50 KPX Aring Ocircumflex -50 KPX Aring Odieresis -50 KPX Aring Ograve -50 KPX Aring Ohungarumlaut -50 KPX Aring Omacron -50 KPX Aring Oslash -50 KPX Aring Otilde -50 KPX Aring Q -55 KPX Aring T -55 KPX Aring Tcaron -55 KPX Aring Tcommaaccent -55 KPX Aring U -50 KPX Aring Uacute -50 KPX Aring Ucircumflex -50 KPX Aring Udieresis -50 KPX Aring Ugrave -50 KPX Aring Uhungarumlaut -50 KPX Aring Umacron -50 KPX Aring Uogonek -50 KPX Aring Uring -50 KPX Aring V -95 KPX Aring W -100 KPX Aring Y -70 KPX Aring Yacute -70 KPX Aring Ydieresis -70 KPX Aring quoteright -74 KPX Aring u -30 KPX Aring uacute -30 KPX Aring ucircumflex -30 KPX Aring udieresis -30 KPX Aring ugrave -30 KPX Aring uhungarumlaut -30 KPX Aring umacron -30 KPX Aring uogonek -30 KPX Aring uring -30 KPX Aring v -74 KPX Aring w -74 KPX Aring y -74 KPX Aring yacute -74 KPX Aring ydieresis -74 KPX Atilde C -65 KPX Atilde Cacute -65 KPX Atilde Ccaron -65 KPX Atilde Ccedilla -65 KPX Atilde G -60 KPX Atilde Gbreve -60 KPX Atilde Gcommaaccent -60 KPX Atilde O -50 KPX Atilde Oacute -50 KPX Atilde Ocircumflex -50 KPX Atilde Odieresis -50 KPX Atilde Ograve -50 KPX Atilde Ohungarumlaut -50 KPX Atilde Omacron -50 KPX Atilde Oslash -50 KPX Atilde Otilde -50 KPX Atilde Q -55 KPX Atilde T -55 KPX Atilde Tcaron -55 KPX Atilde Tcommaaccent -55 KPX Atilde U -50 KPX Atilde Uacute -50 KPX Atilde Ucircumflex -50 KPX Atilde Udieresis -50 KPX Atilde Ugrave -50 KPX Atilde Uhungarumlaut -50 KPX Atilde Umacron -50 KPX Atilde Uogonek -50 KPX Atilde Uring -50 KPX Atilde V -95 KPX Atilde W -100 KPX Atilde Y -70 KPX Atilde Yacute -70 KPX Atilde Ydieresis -70 KPX Atilde quoteright -74 KPX Atilde u -30 KPX Atilde uacute -30 KPX Atilde ucircumflex -30 KPX Atilde udieresis -30 KPX Atilde ugrave -30 KPX Atilde uhungarumlaut -30 KPX Atilde umacron -30 KPX Atilde uogonek -30 KPX Atilde uring -30 KPX Atilde v -74 KPX Atilde w -74 KPX Atilde y -74 KPX Atilde yacute -74 KPX Atilde ydieresis -74 KPX B A -25 KPX B Aacute -25 KPX B Abreve -25 KPX B Acircumflex -25 KPX B Adieresis -25 KPX B Agrave -25 KPX B Amacron -25 KPX B Aogonek -25 KPX B Aring -25 KPX B Atilde -25 KPX B U -10 KPX B Uacute -10 KPX B Ucircumflex -10 KPX B Udieresis -10 KPX B Ugrave -10 KPX B Uhungarumlaut -10 KPX B Umacron -10 KPX B Uogonek -10 KPX B Uring -10 KPX D A -25 KPX D Aacute -25 KPX D Abreve -25 KPX D Acircumflex -25 KPX D Adieresis -25 KPX D Agrave -25 KPX D Amacron -25 KPX D Aogonek -25 KPX D Aring -25 KPX D Atilde -25 KPX D V -50 KPX D W -40 KPX D Y -50 KPX D Yacute -50 KPX D Ydieresis -50 KPX Dcaron A -25 KPX Dcaron Aacute -25 KPX Dcaron Abreve -25 KPX Dcaron Acircumflex -25 KPX Dcaron Adieresis -25 KPX Dcaron Agrave -25 KPX Dcaron Amacron -25 KPX Dcaron Aogonek -25 KPX Dcaron Aring -25 KPX Dcaron Atilde -25 KPX Dcaron V -50 KPX Dcaron W -40 KPX Dcaron Y -50 KPX Dcaron Yacute -50 KPX Dcaron Ydieresis -50 KPX Dcroat A -25 KPX Dcroat Aacute -25 KPX Dcroat Abreve -25 KPX Dcroat Acircumflex -25 KPX Dcroat Adieresis -25 KPX Dcroat Agrave -25 KPX Dcroat Amacron -25 KPX Dcroat Aogonek -25 KPX Dcroat Aring -25 KPX Dcroat Atilde -25 KPX Dcroat V -50 KPX Dcroat W -40 KPX Dcroat Y -50 KPX Dcroat Yacute -50 KPX Dcroat Ydieresis -50 KPX F A -100 KPX F Aacute -100 KPX F Abreve -100 KPX F Acircumflex -100 KPX F Adieresis -100 KPX F Agrave -100 KPX F Amacron -100 KPX F Aogonek -100 KPX F Aring -100 KPX F Atilde -100 KPX F a -95 KPX F aacute -95 KPX F abreve -95 KPX F acircumflex -95 KPX F adieresis -95 KPX F agrave -95 KPX F amacron -95 KPX F aogonek -95 KPX F aring -95 KPX F atilde -95 KPX F comma -129 KPX F e -100 KPX F eacute -100 KPX F ecaron -100 KPX F ecircumflex -100 KPX F edieresis -100 KPX F edotaccent -100 KPX F egrave -100 KPX F emacron -100 KPX F eogonek -100 KPX F i -40 KPX F iacute -40 KPX F icircumflex -40 KPX F idieresis -40 KPX F igrave -40 KPX F imacron -40 KPX F iogonek -40 KPX F o -70 KPX F oacute -70 KPX F ocircumflex -70 KPX F odieresis -70 KPX F ograve -70 KPX F ohungarumlaut -70 KPX F omacron -70 KPX F oslash -70 KPX F otilde -70 KPX F period -129 KPX F r -50 KPX F racute -50 KPX F rcaron -50 KPX F rcommaaccent -50 KPX J A -25 KPX J Aacute -25 KPX J Abreve -25 KPX J Acircumflex -25 KPX J Adieresis -25 KPX J Agrave -25 KPX J Amacron -25 KPX J Aogonek -25 KPX J Aring -25 KPX J Atilde -25 KPX J a -40 KPX J aacute -40 KPX J abreve -40 KPX J acircumflex -40 KPX J adieresis -40 KPX J agrave -40 KPX J amacron -40 KPX J aogonek -40 KPX J aring -40 KPX J atilde -40 KPX J comma -10 KPX J e -40 KPX J eacute -40 KPX J ecaron -40 KPX J ecircumflex -40 KPX J edieresis -40 KPX J edotaccent -40 KPX J egrave -40 KPX J emacron -40 KPX J eogonek -40 KPX J o -40 KPX J oacute -40 KPX J ocircumflex -40 KPX J odieresis -40 KPX J ograve -40 KPX J ohungarumlaut -40 KPX J omacron -40 KPX J oslash -40 KPX J otilde -40 KPX J period -10 KPX J u -40 KPX J uacute -40 KPX J ucircumflex -40 KPX J udieresis -40 KPX J ugrave -40 KPX J uhungarumlaut -40 KPX J umacron -40 KPX J uogonek -40 KPX J uring -40 KPX K O -30 KPX K Oacute -30 KPX K Ocircumflex -30 KPX K Odieresis -30 KPX K Ograve -30 KPX K Ohungarumlaut -30 KPX K Omacron -30 KPX K Oslash -30 KPX K Otilde -30 KPX K e -25 KPX K eacute -25 KPX K ecaron -25 KPX K ecircumflex -25 KPX K edieresis -25 KPX K edotaccent -25 KPX K egrave -25 KPX K emacron -25 KPX K eogonek -25 KPX K o -25 KPX K oacute -25 KPX K ocircumflex -25 KPX K odieresis -25 KPX K ograve -25 KPX K ohungarumlaut -25 KPX K omacron -25 KPX K oslash -25 KPX K otilde -25 KPX K u -20 KPX K uacute -20 KPX K ucircumflex -20 KPX K udieresis -20 KPX K ugrave -20 KPX K uhungarumlaut -20 KPX K umacron -20 KPX K uogonek -20 KPX K uring -20 KPX K y -20 KPX K yacute -20 KPX K ydieresis -20 KPX Kcommaaccent O -30 KPX Kcommaaccent Oacute -30 KPX Kcommaaccent Ocircumflex -30 KPX Kcommaaccent Odieresis -30 KPX Kcommaaccent Ograve -30 KPX Kcommaaccent Ohungarumlaut -30 KPX Kcommaaccent Omacron -30 KPX Kcommaaccent Oslash -30 KPX Kcommaaccent Otilde -30 KPX Kcommaaccent e -25 KPX Kcommaaccent eacute -25 KPX Kcommaaccent ecaron -25 KPX Kcommaaccent ecircumflex -25 KPX Kcommaaccent edieresis -25 KPX Kcommaaccent edotaccent -25 KPX Kcommaaccent egrave -25 KPX Kcommaaccent emacron -25 KPX Kcommaaccent eogonek -25 KPX Kcommaaccent o -25 KPX Kcommaaccent oacute -25 KPX Kcommaaccent ocircumflex -25 KPX Kcommaaccent odieresis -25 KPX Kcommaaccent ograve -25 KPX Kcommaaccent ohungarumlaut -25 KPX Kcommaaccent omacron -25 KPX Kcommaaccent oslash -25 KPX Kcommaaccent otilde -25 KPX Kcommaaccent u -20 KPX Kcommaaccent uacute -20 KPX Kcommaaccent ucircumflex -20 KPX Kcommaaccent udieresis -20 KPX Kcommaaccent ugrave -20 KPX Kcommaaccent uhungarumlaut -20 KPX Kcommaaccent umacron -20 KPX Kcommaaccent uogonek -20 KPX Kcommaaccent uring -20 KPX Kcommaaccent y -20 KPX Kcommaaccent yacute -20 KPX Kcommaaccent ydieresis -20 KPX L T -18 KPX L Tcaron -18 KPX L Tcommaaccent -18 KPX L V -37 KPX L W -37 KPX L Y -37 KPX L Yacute -37 KPX L Ydieresis -37 KPX L quoteright -55 KPX L y -37 KPX L yacute -37 KPX L ydieresis -37 KPX Lacute T -18 KPX Lacute Tcaron -18 KPX Lacute Tcommaaccent -18 KPX Lacute V -37 KPX Lacute W -37 KPX Lacute Y -37 KPX Lacute Yacute -37 KPX Lacute Ydieresis -37 KPX Lacute quoteright -55 KPX Lacute y -37 KPX Lacute yacute -37 KPX Lacute ydieresis -37 KPX Lcommaaccent T -18 KPX Lcommaaccent Tcaron -18 KPX Lcommaaccent Tcommaaccent -18 KPX Lcommaaccent V -37 KPX Lcommaaccent W -37 KPX Lcommaaccent Y -37 KPX Lcommaaccent Yacute -37 KPX Lcommaaccent Ydieresis -37 KPX Lcommaaccent quoteright -55 KPX Lcommaaccent y -37 KPX Lcommaaccent yacute -37 KPX Lcommaaccent ydieresis -37 KPX Lslash T -18 KPX Lslash Tcaron -18 KPX Lslash Tcommaaccent -18 KPX Lslash V -37 KPX Lslash W -37 KPX Lslash Y -37 KPX Lslash Yacute -37 KPX Lslash Ydieresis -37 KPX Lslash quoteright -55 KPX Lslash y -37 KPX Lslash yacute -37 KPX Lslash ydieresis -37 KPX N A -30 KPX N Aacute -30 KPX N Abreve -30 KPX N Acircumflex -30 KPX N Adieresis -30 KPX N Agrave -30 KPX N Amacron -30 KPX N Aogonek -30 KPX N Aring -30 KPX N Atilde -30 KPX Nacute A -30 KPX Nacute Aacute -30 KPX Nacute Abreve -30 KPX Nacute Acircumflex -30 KPX Nacute Adieresis -30 KPX Nacute Agrave -30 KPX Nacute Amacron -30 KPX Nacute Aogonek -30 KPX Nacute Aring -30 KPX Nacute Atilde -30 KPX Ncaron A -30 KPX Ncaron Aacute -30 KPX Ncaron Abreve -30 KPX Ncaron Acircumflex -30 KPX Ncaron Adieresis -30 KPX Ncaron Agrave -30 KPX Ncaron Amacron -30 KPX Ncaron Aogonek -30 KPX Ncaron Aring -30 KPX Ncaron Atilde -30 KPX Ncommaaccent A -30 KPX Ncommaaccent Aacute -30 KPX Ncommaaccent Abreve -30 KPX Ncommaaccent Acircumflex -30 KPX Ncommaaccent Adieresis -30 KPX Ncommaaccent Agrave -30 KPX Ncommaaccent Amacron -30 KPX Ncommaaccent Aogonek -30 KPX Ncommaaccent Aring -30 KPX Ncommaaccent Atilde -30 KPX Ntilde A -30 KPX Ntilde Aacute -30 KPX Ntilde Abreve -30 KPX Ntilde Acircumflex -30 KPX Ntilde Adieresis -30 KPX Ntilde Agrave -30 KPX Ntilde Amacron -30 KPX Ntilde Aogonek -30 KPX Ntilde Aring -30 KPX Ntilde Atilde -30 KPX O A -40 KPX O Aacute -40 KPX O Abreve -40 KPX O Acircumflex -40 KPX O Adieresis -40 KPX O Agrave -40 KPX O Amacron -40 KPX O Aogonek -40 KPX O Aring -40 KPX O Atilde -40 KPX O T -40 KPX O Tcaron -40 KPX O Tcommaaccent -40 KPX O V -50 KPX O W -50 KPX O X -40 KPX O Y -50 KPX O Yacute -50 KPX O Ydieresis -50 KPX Oacute A -40 KPX Oacute Aacute -40 KPX Oacute Abreve -40 KPX Oacute Acircumflex -40 KPX Oacute Adieresis -40 KPX Oacute Agrave -40 KPX Oacute Amacron -40 KPX Oacute Aogonek -40 KPX Oacute Aring -40 KPX Oacute Atilde -40 KPX Oacute T -40 KPX Oacute Tcaron -40 KPX Oacute Tcommaaccent -40 KPX Oacute V -50 KPX Oacute W -50 KPX Oacute X -40 KPX Oacute Y -50 KPX Oacute Yacute -50 KPX Oacute Ydieresis -50 KPX Ocircumflex A -40 KPX Ocircumflex Aacute -40 KPX Ocircumflex Abreve -40 KPX Ocircumflex Acircumflex -40 KPX Ocircumflex Adieresis -40 KPX Ocircumflex Agrave -40 KPX Ocircumflex Amacron -40 KPX Ocircumflex Aogonek -40 KPX Ocircumflex Aring -40 KPX Ocircumflex Atilde -40 KPX Ocircumflex T -40 KPX Ocircumflex Tcaron -40 KPX Ocircumflex Tcommaaccent -40 KPX Ocircumflex V -50 KPX Ocircumflex W -50 KPX Ocircumflex X -40 KPX Ocircumflex Y -50 KPX Ocircumflex Yacute -50 KPX Ocircumflex Ydieresis -50 KPX Odieresis A -40 KPX Odieresis Aacute -40 KPX Odieresis Abreve -40 KPX Odieresis Acircumflex -40 KPX Odieresis Adieresis -40 KPX Odieresis Agrave -40 KPX Odieresis Amacron -40 KPX Odieresis Aogonek -40 KPX Odieresis Aring -40 KPX Odieresis Atilde -40 KPX Odieresis T -40 KPX Odieresis Tcaron -40 KPX Odieresis Tcommaaccent -40 KPX Odieresis V -50 KPX Odieresis W -50 KPX Odieresis X -40 KPX Odieresis Y -50 KPX Odieresis Yacute -50 KPX Odieresis Ydieresis -50 KPX Ograve A -40 KPX Ograve Aacute -40 KPX Ograve Abreve -40 KPX Ograve Acircumflex -40 KPX Ograve Adieresis -40 KPX Ograve Agrave -40 KPX Ograve Amacron -40 KPX Ograve Aogonek -40 KPX Ograve Aring -40 KPX Ograve Atilde -40 KPX Ograve T -40 KPX Ograve Tcaron -40 KPX Ograve Tcommaaccent -40 KPX Ograve V -50 KPX Ograve W -50 KPX Ograve X -40 KPX Ograve Y -50 KPX Ograve Yacute -50 KPX Ograve Ydieresis -50 KPX Ohungarumlaut A -40 KPX Ohungarumlaut Aacute -40 KPX Ohungarumlaut Abreve -40 KPX Ohungarumlaut Acircumflex -40 KPX Ohungarumlaut Adieresis -40 KPX Ohungarumlaut Agrave -40 KPX Ohungarumlaut Amacron -40 KPX Ohungarumlaut Aogonek -40 KPX Ohungarumlaut Aring -40 KPX Ohungarumlaut Atilde -40 KPX Ohungarumlaut T -40 KPX Ohungarumlaut Tcaron -40 KPX Ohungarumlaut Tcommaaccent -40 KPX Ohungarumlaut V -50 KPX Ohungarumlaut W -50 KPX Ohungarumlaut X -40 KPX Ohungarumlaut Y -50 KPX Ohungarumlaut Yacute -50 KPX Ohungarumlaut Ydieresis -50 KPX Omacron A -40 KPX Omacron Aacute -40 KPX Omacron Abreve -40 KPX Omacron Acircumflex -40 KPX Omacron Adieresis -40 KPX Omacron Agrave -40 KPX Omacron Amacron -40 KPX Omacron Aogonek -40 KPX Omacron Aring -40 KPX Omacron Atilde -40 KPX Omacron T -40 KPX Omacron Tcaron -40 KPX Omacron Tcommaaccent -40 KPX Omacron V -50 KPX Omacron W -50 KPX Omacron X -40 KPX Omacron Y -50 KPX Omacron Yacute -50 KPX Omacron Ydieresis -50 KPX Oslash A -40 KPX Oslash Aacute -40 KPX Oslash Abreve -40 KPX Oslash Acircumflex -40 KPX Oslash Adieresis -40 KPX Oslash Agrave -40 KPX Oslash Amacron -40 KPX Oslash Aogonek -40 KPX Oslash Aring -40 KPX Oslash Atilde -40 KPX Oslash T -40 KPX Oslash Tcaron -40 KPX Oslash Tcommaaccent -40 KPX Oslash V -50 KPX Oslash W -50 KPX Oslash X -40 KPX Oslash Y -50 KPX Oslash Yacute -50 KPX Oslash Ydieresis -50 KPX Otilde A -40 KPX Otilde Aacute -40 KPX Otilde Abreve -40 KPX Otilde Acircumflex -40 KPX Otilde Adieresis -40 KPX Otilde Agrave -40 KPX Otilde Amacron -40 KPX Otilde Aogonek -40 KPX Otilde Aring -40 KPX Otilde Atilde -40 KPX Otilde T -40 KPX Otilde Tcaron -40 KPX Otilde Tcommaaccent -40 KPX Otilde V -50 KPX Otilde W -50 KPX Otilde X -40 KPX Otilde Y -50 KPX Otilde Yacute -50 KPX Otilde Ydieresis -50 KPX P A -85 KPX P Aacute -85 KPX P Abreve -85 KPX P Acircumflex -85 KPX P Adieresis -85 KPX P Agrave -85 KPX P Amacron -85 KPX P Aogonek -85 KPX P Aring -85 KPX P Atilde -85 KPX P a -40 KPX P aacute -40 KPX P abreve -40 KPX P acircumflex -40 KPX P adieresis -40 KPX P agrave -40 KPX P amacron -40 KPX P aogonek -40 KPX P aring -40 KPX P atilde -40 KPX P comma -129 KPX P e -50 KPX P eacute -50 KPX P ecaron -50 KPX P ecircumflex -50 KPX P edieresis -50 KPX P edotaccent -50 KPX P egrave -50 KPX P emacron -50 KPX P eogonek -50 KPX P o -55 KPX P oacute -55 KPX P ocircumflex -55 KPX P odieresis -55 KPX P ograve -55 KPX P ohungarumlaut -55 KPX P omacron -55 KPX P oslash -55 KPX P otilde -55 KPX P period -129 KPX Q U -10 KPX Q Uacute -10 KPX Q Ucircumflex -10 KPX Q Udieresis -10 KPX Q Ugrave -10 KPX Q Uhungarumlaut -10 KPX Q Umacron -10 KPX Q Uogonek -10 KPX Q Uring -10 KPX R O -40 KPX R Oacute -40 KPX R Ocircumflex -40 KPX R Odieresis -40 KPX R Ograve -40 KPX R Ohungarumlaut -40 KPX R Omacron -40 KPX R Oslash -40 KPX R Otilde -40 KPX R T -30 KPX R Tcaron -30 KPX R Tcommaaccent -30 KPX R U -40 KPX R Uacute -40 KPX R Ucircumflex -40 KPX R Udieresis -40 KPX R Ugrave -40 KPX R Uhungarumlaut -40 KPX R Umacron -40 KPX R Uogonek -40 KPX R Uring -40 KPX R V -18 KPX R W -18 KPX R Y -18 KPX R Yacute -18 KPX R Ydieresis -18 KPX Racute O -40 KPX Racute Oacute -40 KPX Racute Ocircumflex -40 KPX Racute Odieresis -40 KPX Racute Ograve -40 KPX Racute Ohungarumlaut -40 KPX Racute Omacron -40 KPX Racute Oslash -40 KPX Racute Otilde -40 KPX Racute T -30 KPX Racute Tcaron -30 KPX Racute Tcommaaccent -30 KPX Racute U -40 KPX Racute Uacute -40 KPX Racute Ucircumflex -40 KPX Racute Udieresis -40 KPX Racute Ugrave -40 KPX Racute Uhungarumlaut -40 KPX Racute Umacron -40 KPX Racute Uogonek -40 KPX Racute Uring -40 KPX Racute V -18 KPX Racute W -18 KPX Racute Y -18 KPX Racute Yacute -18 KPX Racute Ydieresis -18 KPX Rcaron O -40 KPX Rcaron Oacute -40 KPX Rcaron Ocircumflex -40 KPX Rcaron Odieresis -40 KPX Rcaron Ograve -40 KPX Rcaron Ohungarumlaut -40 KPX Rcaron Omacron -40 KPX Rcaron Oslash -40 KPX Rcaron Otilde -40 KPX Rcaron T -30 KPX Rcaron Tcaron -30 KPX Rcaron Tcommaaccent -30 KPX Rcaron U -40 KPX Rcaron Uacute -40 KPX Rcaron Ucircumflex -40 KPX Rcaron Udieresis -40 KPX Rcaron Ugrave -40 KPX Rcaron Uhungarumlaut -40 KPX Rcaron Umacron -40 KPX Rcaron Uogonek -40 KPX Rcaron Uring -40 KPX Rcaron V -18 KPX Rcaron W -18 KPX Rcaron Y -18 KPX Rcaron Yacute -18 KPX Rcaron Ydieresis -18 KPX Rcommaaccent O -40 KPX Rcommaaccent Oacute -40 KPX Rcommaaccent Ocircumflex -40 KPX Rcommaaccent Odieresis -40 KPX Rcommaaccent Ograve -40 KPX Rcommaaccent Ohungarumlaut -40 KPX Rcommaaccent Omacron -40 KPX Rcommaaccent Oslash -40 KPX Rcommaaccent Otilde -40 KPX Rcommaaccent T -30 KPX Rcommaaccent Tcaron -30 KPX Rcommaaccent Tcommaaccent -30 KPX Rcommaaccent U -40 KPX Rcommaaccent Uacute -40 KPX Rcommaaccent Ucircumflex -40 KPX Rcommaaccent Udieresis -40 KPX Rcommaaccent Ugrave -40 KPX Rcommaaccent Uhungarumlaut -40 KPX Rcommaaccent Umacron -40 KPX Rcommaaccent Uogonek -40 KPX Rcommaaccent Uring -40 KPX Rcommaaccent V -18 KPX Rcommaaccent W -18 KPX Rcommaaccent Y -18 KPX Rcommaaccent Yacute -18 KPX Rcommaaccent Ydieresis -18 KPX T A -55 KPX T Aacute -55 KPX T Abreve -55 KPX T Acircumflex -55 KPX T Adieresis -55 KPX T Agrave -55 KPX T Amacron -55 KPX T Aogonek -55 KPX T Aring -55 KPX T Atilde -55 KPX T O -18 KPX T Oacute -18 KPX T Ocircumflex -18 KPX T Odieresis -18 KPX T Ograve -18 KPX T Ohungarumlaut -18 KPX T Omacron -18 KPX T Oslash -18 KPX T Otilde -18 KPX T a -92 KPX T aacute -92 KPX T abreve -92 KPX T acircumflex -92 KPX T adieresis -92 KPX T agrave -92 KPX T amacron -92 KPX T aogonek -92 KPX T aring -92 KPX T atilde -92 KPX T colon -74 KPX T comma -92 KPX T e -92 KPX T eacute -92 KPX T ecaron -92 KPX T ecircumflex -92 KPX T edieresis -52 KPX T edotaccent -92 KPX T egrave -52 KPX T emacron -52 KPX T eogonek -92 KPX T hyphen -92 KPX T i -37 KPX T iacute -37 KPX T iogonek -37 KPX T o -95 KPX T oacute -95 KPX T ocircumflex -95 KPX T odieresis -95 KPX T ograve -95 KPX T ohungarumlaut -95 KPX T omacron -95 KPX T oslash -95 KPX T otilde -95 KPX T period -92 KPX T r -37 KPX T racute -37 KPX T rcaron -37 KPX T rcommaaccent -37 KPX T semicolon -74 KPX T u -37 KPX T uacute -37 KPX T ucircumflex -37 KPX T udieresis -37 KPX T ugrave -37 KPX T uhungarumlaut -37 KPX T umacron -37 KPX T uogonek -37 KPX T uring -37 KPX T w -37 KPX T y -37 KPX T yacute -37 KPX T ydieresis -37 KPX Tcaron A -55 KPX Tcaron Aacute -55 KPX Tcaron Abreve -55 KPX Tcaron Acircumflex -55 KPX Tcaron Adieresis -55 KPX Tcaron Agrave -55 KPX Tcaron Amacron -55 KPX Tcaron Aogonek -55 KPX Tcaron Aring -55 KPX Tcaron Atilde -55 KPX Tcaron O -18 KPX Tcaron Oacute -18 KPX Tcaron Ocircumflex -18 KPX Tcaron Odieresis -18 KPX Tcaron Ograve -18 KPX Tcaron Ohungarumlaut -18 KPX Tcaron Omacron -18 KPX Tcaron Oslash -18 KPX Tcaron Otilde -18 KPX Tcaron a -92 KPX Tcaron aacute -92 KPX Tcaron abreve -92 KPX Tcaron acircumflex -92 KPX Tcaron adieresis -92 KPX Tcaron agrave -92 KPX Tcaron amacron -92 KPX Tcaron aogonek -92 KPX Tcaron aring -92 KPX Tcaron atilde -92 KPX Tcaron colon -74 KPX Tcaron comma -92 KPX Tcaron e -92 KPX Tcaron eacute -92 KPX Tcaron ecaron -92 KPX Tcaron ecircumflex -92 KPX Tcaron edieresis -52 KPX Tcaron edotaccent -92 KPX Tcaron egrave -52 KPX Tcaron emacron -52 KPX Tcaron eogonek -92 KPX Tcaron hyphen -92 KPX Tcaron i -37 KPX Tcaron iacute -37 KPX Tcaron iogonek -37 KPX Tcaron o -95 KPX Tcaron oacute -95 KPX Tcaron ocircumflex -95 KPX Tcaron odieresis -95 KPX Tcaron ograve -95 KPX Tcaron ohungarumlaut -95 KPX Tcaron omacron -95 KPX Tcaron oslash -95 KPX Tcaron otilde -95 KPX Tcaron period -92 KPX Tcaron r -37 KPX Tcaron racute -37 KPX Tcaron rcaron -37 KPX Tcaron rcommaaccent -37 KPX Tcaron semicolon -74 KPX Tcaron u -37 KPX Tcaron uacute -37 KPX Tcaron ucircumflex -37 KPX Tcaron udieresis -37 KPX Tcaron ugrave -37 KPX Tcaron uhungarumlaut -37 KPX Tcaron umacron -37 KPX Tcaron uogonek -37 KPX Tcaron uring -37 KPX Tcaron w -37 KPX Tcaron y -37 KPX Tcaron yacute -37 KPX Tcaron ydieresis -37 KPX Tcommaaccent A -55 KPX Tcommaaccent Aacute -55 KPX Tcommaaccent Abreve -55 KPX Tcommaaccent Acircumflex -55 KPX Tcommaaccent Adieresis -55 KPX Tcommaaccent Agrave -55 KPX Tcommaaccent Amacron -55 KPX Tcommaaccent Aogonek -55 KPX Tcommaaccent Aring -55 KPX Tcommaaccent Atilde -55 KPX Tcommaaccent O -18 KPX Tcommaaccent Oacute -18 KPX Tcommaaccent Ocircumflex -18 KPX Tcommaaccent Odieresis -18 KPX Tcommaaccent Ograve -18 KPX Tcommaaccent Ohungarumlaut -18 KPX Tcommaaccent Omacron -18 KPX Tcommaaccent Oslash -18 KPX Tcommaaccent Otilde -18 KPX Tcommaaccent a -92 KPX Tcommaaccent aacute -92 KPX Tcommaaccent abreve -92 KPX Tcommaaccent acircumflex -92 KPX Tcommaaccent adieresis -92 KPX Tcommaaccent agrave -92 KPX Tcommaaccent amacron -92 KPX Tcommaaccent aogonek -92 KPX Tcommaaccent aring -92 KPX Tcommaaccent atilde -92 KPX Tcommaaccent colon -74 KPX Tcommaaccent comma -92 KPX Tcommaaccent e -92 KPX Tcommaaccent eacute -92 KPX Tcommaaccent ecaron -92 KPX Tcommaaccent ecircumflex -92 KPX Tcommaaccent edieresis -52 KPX Tcommaaccent edotaccent -92 KPX Tcommaaccent egrave -52 KPX Tcommaaccent emacron -52 KPX Tcommaaccent eogonek -92 KPX Tcommaaccent hyphen -92 KPX Tcommaaccent i -37 KPX Tcommaaccent iacute -37 KPX Tcommaaccent iogonek -37 KPX Tcommaaccent o -95 KPX Tcommaaccent oacute -95 KPX Tcommaaccent ocircumflex -95 KPX Tcommaaccent odieresis -95 KPX Tcommaaccent ograve -95 KPX Tcommaaccent ohungarumlaut -95 KPX Tcommaaccent omacron -95 KPX Tcommaaccent oslash -95 KPX Tcommaaccent otilde -95 KPX Tcommaaccent period -92 KPX Tcommaaccent r -37 KPX Tcommaaccent racute -37 KPX Tcommaaccent rcaron -37 KPX Tcommaaccent rcommaaccent -37 KPX Tcommaaccent semicolon -74 KPX Tcommaaccent u -37 KPX Tcommaaccent uacute -37 KPX Tcommaaccent ucircumflex -37 KPX Tcommaaccent udieresis -37 KPX Tcommaaccent ugrave -37 KPX Tcommaaccent uhungarumlaut -37 KPX Tcommaaccent umacron -37 KPX Tcommaaccent uogonek -37 KPX Tcommaaccent uring -37 KPX Tcommaaccent w -37 KPX Tcommaaccent y -37 KPX Tcommaaccent yacute -37 KPX Tcommaaccent ydieresis -37 KPX U A -45 KPX U Aacute -45 KPX U Abreve -45 KPX U Acircumflex -45 KPX U Adieresis -45 KPX U Agrave -45 KPX U Amacron -45 KPX U Aogonek -45 KPX U Aring -45 KPX U Atilde -45 KPX Uacute A -45 KPX Uacute Aacute -45 KPX Uacute Abreve -45 KPX Uacute Acircumflex -45 KPX Uacute Adieresis -45 KPX Uacute Agrave -45 KPX Uacute Amacron -45 KPX Uacute Aogonek -45 KPX Uacute Aring -45 KPX Uacute Atilde -45 KPX Ucircumflex A -45 KPX Ucircumflex Aacute -45 KPX Ucircumflex Abreve -45 KPX Ucircumflex Acircumflex -45 KPX Ucircumflex Adieresis -45 KPX Ucircumflex Agrave -45 KPX Ucircumflex Amacron -45 KPX Ucircumflex Aogonek -45 KPX Ucircumflex Aring -45 KPX Ucircumflex Atilde -45 KPX Udieresis A -45 KPX Udieresis Aacute -45 KPX Udieresis Abreve -45 KPX Udieresis Acircumflex -45 KPX Udieresis Adieresis -45 KPX Udieresis Agrave -45 KPX Udieresis Amacron -45 KPX Udieresis Aogonek -45 KPX Udieresis Aring -45 KPX Udieresis Atilde -45 KPX Ugrave A -45 KPX Ugrave Aacute -45 KPX Ugrave Abreve -45 KPX Ugrave Acircumflex -45 KPX Ugrave Adieresis -45 KPX Ugrave Agrave -45 KPX Ugrave Amacron -45 KPX Ugrave Aogonek -45 KPX Ugrave Aring -45 KPX Ugrave Atilde -45 KPX Uhungarumlaut A -45 KPX Uhungarumlaut Aacute -45 KPX Uhungarumlaut Abreve -45 KPX Uhungarumlaut Acircumflex -45 KPX Uhungarumlaut Adieresis -45 KPX Uhungarumlaut Agrave -45 KPX Uhungarumlaut Amacron -45 KPX Uhungarumlaut Aogonek -45 KPX Uhungarumlaut Aring -45 KPX Uhungarumlaut Atilde -45 KPX Umacron A -45 KPX Umacron Aacute -45 KPX Umacron Abreve -45 KPX Umacron Acircumflex -45 KPX Umacron Adieresis -45 KPX Umacron Agrave -45 KPX Umacron Amacron -45 KPX Umacron Aogonek -45 KPX Umacron Aring -45 KPX Umacron Atilde -45 KPX Uogonek A -45 KPX Uogonek Aacute -45 KPX Uogonek Abreve -45 KPX Uogonek Acircumflex -45 KPX Uogonek Adieresis -45 KPX Uogonek Agrave -45 KPX Uogonek Amacron -45 KPX Uogonek Aogonek -45 KPX Uogonek Aring -45 KPX Uogonek Atilde -45 KPX Uring A -45 KPX Uring Aacute -45 KPX Uring Abreve -45 KPX Uring Acircumflex -45 KPX Uring Adieresis -45 KPX Uring Agrave -45 KPX Uring Amacron -45 KPX Uring Aogonek -45 KPX Uring Aring -45 KPX Uring Atilde -45 KPX V A -85 KPX V Aacute -85 KPX V Abreve -85 KPX V Acircumflex -85 KPX V Adieresis -85 KPX V Agrave -85 KPX V Amacron -85 KPX V Aogonek -85 KPX V Aring -85 KPX V Atilde -85 KPX V G -10 KPX V Gbreve -10 KPX V Gcommaaccent -10 KPX V O -30 KPX V Oacute -30 KPX V Ocircumflex -30 KPX V Odieresis -30 KPX V Ograve -30 KPX V Ohungarumlaut -30 KPX V Omacron -30 KPX V Oslash -30 KPX V Otilde -30 KPX V a -111 KPX V aacute -111 KPX V abreve -111 KPX V acircumflex -111 KPX V adieresis -111 KPX V agrave -111 KPX V amacron -111 KPX V aogonek -111 KPX V aring -111 KPX V atilde -111 KPX V colon -74 KPX V comma -129 KPX V e -111 KPX V eacute -111 KPX V ecaron -111 KPX V ecircumflex -111 KPX V edieresis -71 KPX V edotaccent -111 KPX V egrave -71 KPX V emacron -71 KPX V eogonek -111 KPX V hyphen -70 KPX V i -55 KPX V iacute -55 KPX V iogonek -55 KPX V o -111 KPX V oacute -111 KPX V ocircumflex -111 KPX V odieresis -111 KPX V ograve -111 KPX V ohungarumlaut -111 KPX V omacron -111 KPX V oslash -111 KPX V otilde -111 KPX V period -129 KPX V semicolon -74 KPX V u -55 KPX V uacute -55 KPX V ucircumflex -55 KPX V udieresis -55 KPX V ugrave -55 KPX V uhungarumlaut -55 KPX V umacron -55 KPX V uogonek -55 KPX V uring -55 KPX W A -74 KPX W Aacute -74 KPX W Abreve -74 KPX W Acircumflex -74 KPX W Adieresis -74 KPX W Agrave -74 KPX W Amacron -74 KPX W Aogonek -74 KPX W Aring -74 KPX W Atilde -74 KPX W O -15 KPX W Oacute -15 KPX W Ocircumflex -15 KPX W Odieresis -15 KPX W Ograve -15 KPX W Ohungarumlaut -15 KPX W Omacron -15 KPX W Oslash -15 KPX W Otilde -15 KPX W a -85 KPX W aacute -85 KPX W abreve -85 KPX W acircumflex -85 KPX W adieresis -85 KPX W agrave -85 KPX W amacron -85 KPX W aogonek -85 KPX W aring -85 KPX W atilde -85 KPX W colon -55 KPX W comma -74 KPX W e -90 KPX W eacute -90 KPX W ecaron -90 KPX W ecircumflex -90 KPX W edieresis -50 KPX W edotaccent -90 KPX W egrave -50 KPX W emacron -50 KPX W eogonek -90 KPX W hyphen -50 KPX W i -37 KPX W iacute -37 KPX W iogonek -37 KPX W o -80 KPX W oacute -80 KPX W ocircumflex -80 KPX W odieresis -80 KPX W ograve -80 KPX W ohungarumlaut -80 KPX W omacron -80 KPX W oslash -80 KPX W otilde -80 KPX W period -74 KPX W semicolon -55 KPX W u -55 KPX W uacute -55 KPX W ucircumflex -55 KPX W udieresis -55 KPX W ugrave -55 KPX W uhungarumlaut -55 KPX W umacron -55 KPX W uogonek -55 KPX W uring -55 KPX W y -55 KPX W yacute -55 KPX W ydieresis -55 KPX Y A -74 KPX Y Aacute -74 KPX Y Abreve -74 KPX Y Acircumflex -74 KPX Y Adieresis -74 KPX Y Agrave -74 KPX Y Amacron -74 KPX Y Aogonek -74 KPX Y Aring -74 KPX Y Atilde -74 KPX Y O -25 KPX Y Oacute -25 KPX Y Ocircumflex -25 KPX Y Odieresis -25 KPX Y Ograve -25 KPX Y Ohungarumlaut -25 KPX Y Omacron -25 KPX Y Oslash -25 KPX Y Otilde -25 KPX Y a -92 KPX Y aacute -92 KPX Y abreve -92 KPX Y acircumflex -92 KPX Y adieresis -92 KPX Y agrave -92 KPX Y amacron -92 KPX Y aogonek -92 KPX Y aring -92 KPX Y atilde -92 KPX Y colon -92 KPX Y comma -92 KPX Y e -111 KPX Y eacute -111 KPX Y ecaron -111 KPX Y ecircumflex -71 KPX Y edieresis -71 KPX Y edotaccent -111 KPX Y egrave -71 KPX Y emacron -71 KPX Y eogonek -111 KPX Y hyphen -92 KPX Y i -55 KPX Y iacute -55 KPX Y iogonek -55 KPX Y o -111 KPX Y oacute -111 KPX Y ocircumflex -111 KPX Y odieresis -111 KPX Y ograve -111 KPX Y ohungarumlaut -111 KPX Y omacron -111 KPX Y oslash -111 KPX Y otilde -111 KPX Y period -74 KPX Y semicolon -92 KPX Y u -92 KPX Y uacute -92 KPX Y ucircumflex -92 KPX Y udieresis -92 KPX Y ugrave -92 KPX Y uhungarumlaut -92 KPX Y umacron -92 KPX Y uogonek -92 KPX Y uring -92 KPX Yacute A -74 KPX Yacute Aacute -74 KPX Yacute Abreve -74 KPX Yacute Acircumflex -74 KPX Yacute Adieresis -74 KPX Yacute Agrave -74 KPX Yacute Amacron -74 KPX Yacute Aogonek -74 KPX Yacute Aring -74 KPX Yacute Atilde -74 KPX Yacute O -25 KPX Yacute Oacute -25 KPX Yacute Ocircumflex -25 KPX Yacute Odieresis -25 KPX Yacute Ograve -25 KPX Yacute Ohungarumlaut -25 KPX Yacute Omacron -25 KPX Yacute Oslash -25 KPX Yacute Otilde -25 KPX Yacute a -92 KPX Yacute aacute -92 KPX Yacute abreve -92 KPX Yacute acircumflex -92 KPX Yacute adieresis -92 KPX Yacute agrave -92 KPX Yacute amacron -92 KPX Yacute aogonek -92 KPX Yacute aring -92 KPX Yacute atilde -92 KPX Yacute colon -92 KPX Yacute comma -92 KPX Yacute e -111 KPX Yacute eacute -111 KPX Yacute ecaron -111 KPX Yacute ecircumflex -71 KPX Yacute edieresis -71 KPX Yacute edotaccent -111 KPX Yacute egrave -71 KPX Yacute emacron -71 KPX Yacute eogonek -111 KPX Yacute hyphen -92 KPX Yacute i -55 KPX Yacute iacute -55 KPX Yacute iogonek -55 KPX Yacute o -111 KPX Yacute oacute -111 KPX Yacute ocircumflex -111 KPX Yacute odieresis -111 KPX Yacute ograve -111 KPX Yacute ohungarumlaut -111 KPX Yacute omacron -111 KPX Yacute oslash -111 KPX Yacute otilde -111 KPX Yacute period -74 KPX Yacute semicolon -92 KPX Yacute u -92 KPX Yacute uacute -92 KPX Yacute ucircumflex -92 KPX Yacute udieresis -92 KPX Yacute ugrave -92 KPX Yacute uhungarumlaut -92 KPX Yacute umacron -92 KPX Yacute uogonek -92 KPX Yacute uring -92 KPX Ydieresis A -74 KPX Ydieresis Aacute -74 KPX Ydieresis Abreve -74 KPX Ydieresis Acircumflex -74 KPX Ydieresis Adieresis -74 KPX Ydieresis Agrave -74 KPX Ydieresis Amacron -74 KPX Ydieresis Aogonek -74 KPX Ydieresis Aring -74 KPX Ydieresis Atilde -74 KPX Ydieresis O -25 KPX Ydieresis Oacute -25 KPX Ydieresis Ocircumflex -25 KPX Ydieresis Odieresis -25 KPX Ydieresis Ograve -25 KPX Ydieresis Ohungarumlaut -25 KPX Ydieresis Omacron -25 KPX Ydieresis Oslash -25 KPX Ydieresis Otilde -25 KPX Ydieresis a -92 KPX Ydieresis aacute -92 KPX Ydieresis abreve -92 KPX Ydieresis acircumflex -92 KPX Ydieresis adieresis -92 KPX Ydieresis agrave -92 KPX Ydieresis amacron -92 KPX Ydieresis aogonek -92 KPX Ydieresis aring -92 KPX Ydieresis atilde -92 KPX Ydieresis colon -92 KPX Ydieresis comma -92 KPX Ydieresis e -111 KPX Ydieresis eacute -111 KPX Ydieresis ecaron -111 KPX Ydieresis ecircumflex -71 KPX Ydieresis edieresis -71 KPX Ydieresis edotaccent -111 KPX Ydieresis egrave -71 KPX Ydieresis emacron -71 KPX Ydieresis eogonek -111 KPX Ydieresis hyphen -92 KPX Ydieresis i -55 KPX Ydieresis iacute -55 KPX Ydieresis iogonek -55 KPX Ydieresis o -111 KPX Ydieresis oacute -111 KPX Ydieresis ocircumflex -111 KPX Ydieresis odieresis -111 KPX Ydieresis ograve -111 KPX Ydieresis ohungarumlaut -111 KPX Ydieresis omacron -111 KPX Ydieresis oslash -111 KPX Ydieresis otilde -111 KPX Ydieresis period -74 KPX Ydieresis semicolon -92 KPX Ydieresis u -92 KPX Ydieresis uacute -92 KPX Ydieresis ucircumflex -92 KPX Ydieresis udieresis -92 KPX Ydieresis ugrave -92 KPX Ydieresis uhungarumlaut -92 KPX Ydieresis umacron -92 KPX Ydieresis uogonek -92 KPX Ydieresis uring -92 KPX b b -10 KPX b period -40 KPX b u -20 KPX b uacute -20 KPX b ucircumflex -20 KPX b udieresis -20 KPX b ugrave -20 KPX b uhungarumlaut -20 KPX b umacron -20 KPX b uogonek -20 KPX b uring -20 KPX c h -10 KPX c k -10 KPX c kcommaaccent -10 KPX cacute h -10 KPX cacute k -10 KPX cacute kcommaaccent -10 KPX ccaron h -10 KPX ccaron k -10 KPX ccaron kcommaaccent -10 KPX ccedilla h -10 KPX ccedilla k -10 KPX ccedilla kcommaaccent -10 KPX comma quotedblright -95 KPX comma quoteright -95 KPX e b -10 KPX eacute b -10 KPX ecaron b -10 KPX ecircumflex b -10 KPX edieresis b -10 KPX edotaccent b -10 KPX egrave b -10 KPX emacron b -10 KPX eogonek b -10 KPX f comma -10 KPX f dotlessi -30 KPX f e -10 KPX f eacute -10 KPX f edotaccent -10 KPX f eogonek -10 KPX f f -18 KPX f o -10 KPX f oacute -10 KPX f ocircumflex -10 KPX f ograve -10 KPX f ohungarumlaut -10 KPX f oslash -10 KPX f otilde -10 KPX f period -10 KPX f quoteright 55 KPX k e -30 KPX k eacute -30 KPX k ecaron -30 KPX k ecircumflex -30 KPX k edieresis -30 KPX k edotaccent -30 KPX k egrave -30 KPX k emacron -30 KPX k eogonek -30 KPX k o -10 KPX k oacute -10 KPX k ocircumflex -10 KPX k odieresis -10 KPX k ograve -10 KPX k ohungarumlaut -10 KPX k omacron -10 KPX k oslash -10 KPX k otilde -10 KPX kcommaaccent e -30 KPX kcommaaccent eacute -30 KPX kcommaaccent ecaron -30 KPX kcommaaccent ecircumflex -30 KPX kcommaaccent edieresis -30 KPX kcommaaccent edotaccent -30 KPX kcommaaccent egrave -30 KPX kcommaaccent emacron -30 KPX kcommaaccent eogonek -30 KPX kcommaaccent o -10 KPX kcommaaccent oacute -10 KPX kcommaaccent ocircumflex -10 KPX kcommaaccent odieresis -10 KPX kcommaaccent ograve -10 KPX kcommaaccent ohungarumlaut -10 KPX kcommaaccent omacron -10 KPX kcommaaccent oslash -10 KPX kcommaaccent otilde -10 KPX n v -40 KPX nacute v -40 KPX ncaron v -40 KPX ncommaaccent v -40 KPX ntilde v -40 KPX o v -15 KPX o w -25 KPX o x -10 KPX o y -10 KPX o yacute -10 KPX o ydieresis -10 KPX oacute v -15 KPX oacute w -25 KPX oacute x -10 KPX oacute y -10 KPX oacute yacute -10 KPX oacute ydieresis -10 KPX ocircumflex v -15 KPX ocircumflex w -25 KPX ocircumflex x -10 KPX ocircumflex y -10 KPX ocircumflex yacute -10 KPX ocircumflex ydieresis -10 KPX odieresis v -15 KPX odieresis w -25 KPX odieresis x -10 KPX odieresis y -10 KPX odieresis yacute -10 KPX odieresis ydieresis -10 KPX ograve v -15 KPX ograve w -25 KPX ograve x -10 KPX ograve y -10 KPX ograve yacute -10 KPX ograve ydieresis -10 KPX ohungarumlaut v -15 KPX ohungarumlaut w -25 KPX ohungarumlaut x -10 KPX ohungarumlaut y -10 KPX ohungarumlaut yacute -10 KPX ohungarumlaut ydieresis -10 KPX omacron v -15 KPX omacron w -25 KPX omacron x -10 KPX omacron y -10 KPX omacron yacute -10 KPX omacron ydieresis -10 KPX oslash v -15 KPX oslash w -25 KPX oslash x -10 KPX oslash y -10 KPX oslash yacute -10 KPX oslash ydieresis -10 KPX otilde v -15 KPX otilde w -25 KPX otilde x -10 KPX otilde y -10 KPX otilde yacute -10 KPX otilde ydieresis -10 KPX period quotedblright -95 KPX period quoteright -95 KPX quoteleft quoteleft -74 KPX quoteright d -15 KPX quoteright dcroat -15 KPX quoteright quoteright -74 KPX quoteright r -15 KPX quoteright racute -15 KPX quoteright rcaron -15 KPX quoteright rcommaaccent -15 KPX quoteright s -74 KPX quoteright sacute -74 KPX quoteright scaron -74 KPX quoteright scedilla -74 KPX quoteright scommaaccent -74 KPX quoteright space -74 KPX quoteright t -37 KPX quoteright tcommaaccent -37 KPX quoteright v -15 KPX r comma -65 KPX r period -65 KPX racute comma -65 KPX racute period -65 KPX rcaron comma -65 KPX rcaron period -65 KPX rcommaaccent comma -65 KPX rcommaaccent period -65 KPX space A -37 KPX space Aacute -37 KPX space Abreve -37 KPX space Acircumflex -37 KPX space Adieresis -37 KPX space Agrave -37 KPX space Amacron -37 KPX space Aogonek -37 KPX space Aring -37 KPX space Atilde -37 KPX space V -70 KPX space W -70 KPX space Y -70 KPX space Yacute -70 KPX space Ydieresis -70 KPX v comma -37 KPX v e -15 KPX v eacute -15 KPX v ecaron -15 KPX v ecircumflex -15 KPX v edieresis -15 KPX v edotaccent -15 KPX v egrave -15 KPX v emacron -15 KPX v eogonek -15 KPX v o -15 KPX v oacute -15 KPX v ocircumflex -15 KPX v odieresis -15 KPX v ograve -15 KPX v ohungarumlaut -15 KPX v omacron -15 KPX v oslash -15 KPX v otilde -15 KPX v period -37 KPX w a -10 KPX w aacute -10 KPX w abreve -10 KPX w acircumflex -10 KPX w adieresis -10 KPX w agrave -10 KPX w amacron -10 KPX w aogonek -10 KPX w aring -10 KPX w atilde -10 KPX w comma -37 KPX w e -10 KPX w eacute -10 KPX w ecaron -10 KPX w ecircumflex -10 KPX w edieresis -10 KPX w edotaccent -10 KPX w egrave -10 KPX w emacron -10 KPX w eogonek -10 KPX w o -15 KPX w oacute -15 KPX w ocircumflex -15 KPX w odieresis -15 KPX w ograve -15 KPX w ohungarumlaut -15 KPX w omacron -15 KPX w oslash -15 KPX w otilde -15 KPX w period -37 KPX x e -10 KPX x eacute -10 KPX x ecaron -10 KPX x ecircumflex -10 KPX x edieresis -10 KPX x edotaccent -10 KPX x egrave -10 KPX x emacron -10 KPX x eogonek -10 KPX y comma -37 KPX y period -37 KPX yacute comma -37 KPX yacute period -37 KPX ydieresis comma -37 KPX ydieresis period -37 EndKernPairs EndKernData EndFontMetrics gle-graphics-4.2.4c/src/fonts/Adobe-Core35_AFMs-314/Symbol.afm0000664000000000000000000002276711405446017022046 0ustar rootrootStartFontMetrics 4.1 Comment Copyright (c) 1985, 1987, 1989, 1990, 1997 Adobe Systems Incorporated. All rights reserved. Comment Creation Date: Thu May 1 15:12:25 1997 Comment UniqueID 43064 Comment VMusage 30820 39997 FontName Symbol FullName Symbol FamilyName Symbol Weight Medium ItalicAngle 0 IsFixedPitch false FontBBox -180 -293 1090 1010 UnderlinePosition -100 UnderlineThickness 50 Version 001.008 Notice Copyright (c) 1985, 1987, 1989, 1990, 1997 Adobe Systems Incorporated. All rights reserved. EncodingScheme FontSpecific StdHW 92 StdVW 85 StartCharMetrics 190 C 32 ; WX 250 ; N space ; B 0 0 0 0 ; C 33 ; WX 333 ; N exclam ; B 128 -17 240 672 ; C 34 ; WX 713 ; N universal ; B 31 0 681 705 ; C 35 ; WX 500 ; N numbersign ; B 20 -16 481 673 ; C 36 ; WX 549 ; N existential ; B 25 0 478 707 ; C 37 ; WX 833 ; N percent ; B 63 -36 771 655 ; C 38 ; WX 778 ; N ampersand ; B 41 -18 750 661 ; C 39 ; WX 439 ; N suchthat ; B 48 -17 414 500 ; C 40 ; WX 333 ; N parenleft ; B 53 -191 300 673 ; C 41 ; WX 333 ; N parenright ; B 30 -191 277 673 ; C 42 ; WX 500 ; N asteriskmath ; B 65 134 427 551 ; C 43 ; WX 549 ; N plus ; B 10 0 539 533 ; C 44 ; WX 250 ; N comma ; B 56 -152 194 104 ; C 45 ; WX 549 ; N minus ; B 11 233 535 288 ; C 46 ; WX 250 ; N period ; B 69 -17 181 95 ; C 47 ; WX 278 ; N slash ; B 0 -18 254 646 ; C 48 ; WX 500 ; N zero ; B 24 -14 476 685 ; C 49 ; WX 500 ; N one ; B 117 0 390 673 ; C 50 ; WX 500 ; N two ; B 25 0 475 685 ; C 51 ; WX 500 ; N three ; B 43 -14 435 685 ; C 52 ; WX 500 ; N four ; B 15 0 469 685 ; C 53 ; WX 500 ; N five ; B 32 -14 445 690 ; C 54 ; WX 500 ; N six ; B 34 -14 468 685 ; C 55 ; WX 500 ; N seven ; B 24 -16 448 673 ; C 56 ; WX 500 ; N eight ; B 56 -14 445 685 ; C 57 ; WX 500 ; N nine ; B 30 -18 459 685 ; C 58 ; WX 278 ; N colon ; B 81 -17 193 460 ; C 59 ; WX 278 ; N semicolon ; B 83 -152 221 460 ; C 60 ; WX 549 ; N less ; B 26 0 523 522 ; C 61 ; WX 549 ; N equal ; B 11 141 537 390 ; C 62 ; WX 549 ; N greater ; B 26 0 523 522 ; C 63 ; WX 444 ; N question ; B 70 -17 412 686 ; C 64 ; WX 549 ; N congruent ; B 11 0 537 475 ; C 65 ; WX 722 ; N Alpha ; B 4 0 684 673 ; C 66 ; WX 667 ; N Beta ; B 29 0 592 673 ; C 67 ; WX 722 ; N Chi ; B -9 0 704 673 ; C 68 ; WX 612 ; N Delta ; B 6 0 608 688 ; C 69 ; WX 611 ; N Epsilon ; B 32 0 617 673 ; C 70 ; WX 763 ; N Phi ; B 26 0 741 673 ; C 71 ; WX 603 ; N Gamma ; B 24 0 609 673 ; C 72 ; WX 722 ; N Eta ; B 39 0 729 673 ; C 73 ; WX 333 ; N Iota ; B 32 0 316 673 ; C 74 ; WX 631 ; N theta1 ; B 18 -18 623 689 ; C 75 ; WX 722 ; N Kappa ; B 35 0 722 673 ; C 76 ; WX 686 ; N Lambda ; B 6 0 680 688 ; C 77 ; WX 889 ; N Mu ; B 28 0 887 673 ; C 78 ; WX 722 ; N Nu ; B 29 -8 720 673 ; C 79 ; WX 722 ; N Omicron ; B 41 -17 715 685 ; C 80 ; WX 768 ; N Pi ; B 25 0 745 673 ; C 81 ; WX 741 ; N Theta ; B 41 -17 715 685 ; C 82 ; WX 556 ; N Rho ; B 28 0 563 673 ; C 83 ; WX 592 ; N Sigma ; B 5 0 589 673 ; C 84 ; WX 611 ; N Tau ; B 33 0 607 673 ; C 85 ; WX 690 ; N Upsilon ; B -8 0 694 673 ; C 86 ; WX 439 ; N sigma1 ; B 40 -233 436 500 ; C 87 ; WX 768 ; N Omega ; B 34 0 736 688 ; C 88 ; WX 645 ; N Xi ; B 40 0 599 673 ; C 89 ; WX 795 ; N Psi ; B 15 0 781 684 ; C 90 ; WX 611 ; N Zeta ; B 44 0 636 673 ; C 91 ; WX 333 ; N bracketleft ; B 86 -155 299 674 ; C 92 ; WX 863 ; N therefore ; B 163 0 701 487 ; C 93 ; WX 333 ; N bracketright ; B 33 -155 246 674 ; C 94 ; WX 658 ; N perpendicular ; B 15 0 652 674 ; C 95 ; WX 500 ; N underscore ; B -2 -125 502 -75 ; C 96 ; WX 500 ; N radicalex ; B 480 881 1090 917 ; C 97 ; WX 631 ; N alpha ; B 41 -18 622 500 ; C 98 ; WX 549 ; N beta ; B 61 -223 515 741 ; C 99 ; WX 549 ; N chi ; B 12 -231 522 499 ; C 100 ; WX 494 ; N delta ; B 40 -19 481 740 ; C 101 ; WX 439 ; N epsilon ; B 22 -19 427 502 ; C 102 ; WX 521 ; N phi ; B 28 -224 492 673 ; C 103 ; WX 411 ; N gamma ; B 5 -225 484 499 ; C 104 ; WX 603 ; N eta ; B 0 -202 527 514 ; C 105 ; WX 329 ; N iota ; B 0 -17 301 503 ; C 106 ; WX 603 ; N phi1 ; B 36 -224 587 499 ; C 107 ; WX 549 ; N kappa ; B 33 0 558 501 ; C 108 ; WX 549 ; N lambda ; B 24 -17 548 739 ; C 109 ; WX 576 ; N mu ; B 33 -223 567 500 ; C 110 ; WX 521 ; N nu ; B -9 -16 475 507 ; C 111 ; WX 549 ; N omicron ; B 35 -19 501 499 ; C 112 ; WX 549 ; N pi ; B 10 -19 530 487 ; C 113 ; WX 521 ; N theta ; B 43 -17 485 690 ; C 114 ; WX 549 ; N rho ; B 50 -230 490 499 ; C 115 ; WX 603 ; N sigma ; B 30 -21 588 500 ; C 116 ; WX 439 ; N tau ; B 10 -19 418 500 ; C 117 ; WX 576 ; N upsilon ; B 7 -18 535 507 ; C 118 ; WX 713 ; N omega1 ; B 12 -18 671 583 ; C 119 ; WX 686 ; N omega ; B 42 -17 684 500 ; C 120 ; WX 493 ; N xi ; B 27 -224 469 766 ; C 121 ; WX 686 ; N psi ; B 12 -228 701 500 ; C 122 ; WX 494 ; N zeta ; B 60 -225 467 756 ; C 123 ; WX 480 ; N braceleft ; B 58 -183 397 673 ; C 124 ; WX 200 ; N bar ; B 65 -293 135 707 ; C 125 ; WX 480 ; N braceright ; B 79 -183 418 673 ; C 126 ; WX 549 ; N similar ; B 17 203 529 307 ; C 160 ; WX 750 ; N Euro ; B 20 -12 714 685 ; C 161 ; WX 620 ; N Upsilon1 ; B -2 0 610 685 ; C 162 ; WX 247 ; N minute ; B 27 459 228 735 ; C 163 ; WX 549 ; N lessequal ; B 29 0 526 639 ; C 164 ; WX 167 ; N fraction ; B -180 -12 340 677 ; C 165 ; WX 713 ; N infinity ; B 26 124 688 404 ; C 166 ; WX 500 ; N florin ; B 2 -193 494 686 ; C 167 ; WX 753 ; N club ; B 86 -26 660 533 ; C 168 ; WX 753 ; N diamond ; B 142 -36 600 550 ; C 169 ; WX 753 ; N heart ; B 117 -33 631 532 ; C 170 ; WX 753 ; N spade ; B 113 -36 629 548 ; C 171 ; WX 1042 ; N arrowboth ; B 24 -15 1024 511 ; C 172 ; WX 987 ; N arrowleft ; B 32 -15 942 511 ; C 173 ; WX 603 ; N arrowup ; B 45 0 571 910 ; C 174 ; WX 987 ; N arrowright ; B 49 -15 959 511 ; C 175 ; WX 603 ; N arrowdown ; B 45 -22 571 888 ; C 176 ; WX 400 ; N degree ; B 50 385 350 685 ; C 177 ; WX 549 ; N plusminus ; B 10 0 539 645 ; C 178 ; WX 411 ; N second ; B 20 459 413 737 ; C 179 ; WX 549 ; N greaterequal ; B 29 0 526 639 ; C 180 ; WX 549 ; N multiply ; B 17 8 533 524 ; C 181 ; WX 713 ; N proportional ; B 27 123 639 404 ; C 182 ; WX 494 ; N partialdiff ; B 26 -20 462 746 ; C 183 ; WX 460 ; N bullet ; B 50 113 410 473 ; C 184 ; WX 549 ; N divide ; B 10 71 536 456 ; C 185 ; WX 549 ; N notequal ; B 15 -25 540 549 ; C 186 ; WX 549 ; N equivalence ; B 14 82 538 443 ; C 187 ; WX 549 ; N approxequal ; B 14 135 527 394 ; C 188 ; WX 1000 ; N ellipsis ; B 111 -17 889 95 ; C 189 ; WX 603 ; N arrowvertex ; B 280 -120 336 1010 ; C 190 ; WX 1000 ; N arrowhorizex ; B -60 220 1050 276 ; C 191 ; WX 658 ; N carriagereturn ; B 15 -16 602 629 ; C 192 ; WX 823 ; N aleph ; B 175 -18 661 658 ; C 193 ; WX 686 ; N Ifraktur ; B 10 -53 578 740 ; C 194 ; WX 795 ; N Rfraktur ; B 26 -15 759 734 ; C 195 ; WX 987 ; N weierstrass ; B 159 -211 870 573 ; C 196 ; WX 768 ; N circlemultiply ; B 43 -17 733 673 ; C 197 ; WX 768 ; N circleplus ; B 43 -15 733 675 ; C 198 ; WX 823 ; N emptyset ; B 39 -24 781 719 ; C 199 ; WX 768 ; N intersection ; B 40 0 732 509 ; C 200 ; WX 768 ; N union ; B 40 -17 732 492 ; C 201 ; WX 713 ; N propersuperset ; B 20 0 673 470 ; C 202 ; WX 713 ; N reflexsuperset ; B 20 -125 673 470 ; C 203 ; WX 713 ; N notsubset ; B 36 -70 690 540 ; C 204 ; WX 713 ; N propersubset ; B 37 0 690 470 ; C 205 ; WX 713 ; N reflexsubset ; B 37 -125 690 470 ; C 206 ; WX 713 ; N element ; B 45 0 505 468 ; C 207 ; WX 713 ; N notelement ; B 45 -58 505 555 ; C 208 ; WX 768 ; N angle ; B 26 0 738 673 ; C 209 ; WX 713 ; N gradient ; B 36 -19 681 718 ; C 210 ; WX 790 ; N registerserif ; B 50 -17 740 673 ; C 211 ; WX 790 ; N copyrightserif ; B 51 -15 741 675 ; C 212 ; WX 890 ; N trademarkserif ; B 18 293 855 673 ; C 213 ; WX 823 ; N product ; B 25 -101 803 751 ; C 214 ; WX 549 ; N radical ; B 10 -38 515 917 ; C 215 ; WX 250 ; N dotmath ; B 69 210 169 310 ; C 216 ; WX 713 ; N logicalnot ; B 15 0 680 288 ; C 217 ; WX 603 ; N logicaland ; B 23 0 583 454 ; C 218 ; WX 603 ; N logicalor ; B 30 0 578 477 ; C 219 ; WX 1042 ; N arrowdblboth ; B 27 -20 1023 510 ; C 220 ; WX 987 ; N arrowdblleft ; B 30 -15 939 513 ; C 221 ; WX 603 ; N arrowdblup ; B 39 2 567 911 ; C 222 ; WX 987 ; N arrowdblright ; B 45 -20 954 508 ; C 223 ; WX 603 ; N arrowdbldown ; B 44 -19 572 890 ; C 224 ; WX 494 ; N lozenge ; B 18 0 466 745 ; C 225 ; WX 329 ; N angleleft ; B 25 -198 306 746 ; C 226 ; WX 790 ; N registersans ; B 50 -20 740 670 ; C 227 ; WX 790 ; N copyrightsans ; B 49 -15 739 675 ; C 228 ; WX 786 ; N trademarksans ; B 5 293 725 673 ; C 229 ; WX 713 ; N summation ; B 14 -108 695 752 ; C 230 ; WX 384 ; N parenlefttp ; B 24 -293 436 926 ; C 231 ; WX 384 ; N parenleftex ; B 24 -85 108 925 ; C 232 ; WX 384 ; N parenleftbt ; B 24 -293 436 926 ; C 233 ; WX 384 ; N bracketlefttp ; B 0 -80 349 926 ; C 234 ; WX 384 ; N bracketleftex ; B 0 -79 77 925 ; C 235 ; WX 384 ; N bracketleftbt ; B 0 -80 349 926 ; C 236 ; WX 494 ; N bracelefttp ; B 209 -85 445 925 ; C 237 ; WX 494 ; N braceleftmid ; B 20 -85 284 935 ; C 238 ; WX 494 ; N braceleftbt ; B 209 -75 445 935 ; C 239 ; WX 494 ; N braceex ; B 209 -85 284 935 ; C 241 ; WX 329 ; N angleright ; B 21 -198 302 746 ; C 242 ; WX 274 ; N integral ; B 2 -107 291 916 ; C 243 ; WX 686 ; N integraltp ; B 308 -88 675 920 ; C 244 ; WX 686 ; N integralex ; B 308 -88 378 975 ; C 245 ; WX 686 ; N integralbt ; B 11 -87 378 921 ; C 246 ; WX 384 ; N parenrighttp ; B 54 -293 466 926 ; C 247 ; WX 384 ; N parenrightex ; B 382 -85 466 925 ; C 248 ; WX 384 ; N parenrightbt ; B 54 -293 466 926 ; C 249 ; WX 384 ; N bracketrighttp ; B 22 -80 371 926 ; C 250 ; WX 384 ; N bracketrightex ; B 294 -79 371 925 ; C 251 ; WX 384 ; N bracketrightbt ; B 22 -80 371 926 ; C 252 ; WX 494 ; N bracerighttp ; B 48 -85 284 925 ; C 253 ; WX 494 ; N bracerightmid ; B 209 -85 473 935 ; C 254 ; WX 494 ; N bracerightbt ; B 48 -75 284 935 ; C -1 ; WX 790 ; N apple ; B 56 -3 733 808 ; EndCharMetrics EndFontMetrics gle-graphics-4.2.4c/src/fonts/plcc.afm0000664000000000000000000001227711676336540016303 0ustar rootrootStartFontMetrics 2.0 Comment Made from HERSHEY font file using SPLITFONT.BAS FontName plCC EncodingScheme TEXENCODING FullName plCC FamilyName plCC Weight Medium ItalicAngle 0 IsFixedPitch false UnderlinePosition -97 UnderlineThickness 73 FontBBox 0 -400 1001 1001 CapHeight 729 XHeight 151 Descender -219 Ascender 729 StartCharMetrics 95 C 32 ; WX 400 ; N C32 ; B 0 0 0 0 ; C 33 ; WX 318 ; N C33 ; B 133 0 199 700 ; C 34 ; WX 518 ; N C34 ; B 99 466 433 700 ; C 35 ; WX 784 ; N C35 ; B 133 0 666 566 ; C 36 ; WX 518 ; N C36 ; B 99 299 433 700 ; C 37 ; WX 784 ; N C37 ; B 99 0 700 700 ; C 38 ; WX 784 ; N C38 ; B 133 0 666 566 ; C 39 ; WX 251 ; N C39 ; B 99 466 166 700 ; C 40 ; WX 451 ; N C40 ; B 133 -233 366 833 ; C 41 ; WX 451 ; N C41 ; B 99 -233 333 833 ; C 42 ; WX 451 ; N C42 ; B 133 -233 366 833 ; C 43 ; WX 485 ; N C43 ; B 166 -233 333 833 ; C 44 ; WX 318 ; N C44 ; B 133 -133 199 66 ; C 45 ; WX 451 ; N C45 ; B 99 -233 333 833 ; C 46 ; WX 318 ; N C46 ; B 133 0 199 66 ; C 47 ; WX 718 ; N C47 ; B 66 -233 666 833 ; C 48 ; WX 651 ; N C48 ; B 99 0 566 700 ; C 49 ; WX 651 ; N C49 ; B 199 0 500 700 ; C 50 ; WX 651 ; N C50 ; B 99 0 566 700 ; C 51 ; WX 651 ; N C51 ; B 99 0 566 700 ; C 52 ; WX 651 ; N C52 ; B 66 0 600 700 ; C 53 ; WX 651 ; N C53 ; B 99 0 566 700 ; C 54 ; WX 651 ; N C54 ; B 99 0 566 700 ; C 55 ; WX 651 ; N C55 ; B 99 0 566 699 ; C 56 ; WX 651 ; N C56 ; B 99 0 566 700 ; C 57 ; WX 651 ; N C57 ; B 99 0 566 700 ; C 58 ; WX 318 ; N C58 ; B 133 0 199 466 ; C 59 ; WX 318 ; N C59 ; B 133 -133 199 466 ; C 60 ; WX 784 ; N C60 ; B 133 0 666 600 ; C 61 ; WX 485 ; N C61 ; B 166 -233 333 833 ; C 62 ; WX 784 ; N C62 ; B 133 0 666 600 ; C 63 ; WX 585 ; N C63 ; B 99 0 500 700 ; C 64 ; WX 884 ; N C64 ; B 99 0 799 700 ; C 65 ; WX 651 ; N C65 ; B 32 0 633 700 ; C 66 ; WX 718 ; N C66 ; B 66 0 633 700 ; C 67 ; WX 718 ; N C67 ; B 66 0 633 700 ; C 68 ; WX 585 ; N C68 ; B 66 0 566 700 ; C 69 ; WX 784 ; N C69 ; B 32 -233 733 700 ; C 70 ; WX 685 ; N C70 ; B 66 0 600 700 ; C 71 ; WX 1018 ; N C71 ; B 66 0 966 700 ; C 72 ; WX 651 ; N C72 ; B 99 0 566 700 ; C 73 ; WX 784 ; N C73 ; B 66 0 733 700 ; C 74 ; WX 784 ; N C74 ; B 66 0 733 933 ; C 75 ; WX 784 ; N C75 ; B 66 0 733 700 ; C 76 ; WX 818 ; N C76 ; B 66 0 766 700 ; C 77 ; WX 818 ; N C77 ; B 66 0 766 700 ; C 78 ; WX 784 ; N C78 ; B 66 0 733 700 ; C 79 ; WX 718 ; N C79 ; B 99 0 633 700 ; C 80 ; WX 784 ; N C80 ; B 66 0 733 700 ; C 81 ; WX 718 ; N C81 ; B 66 0 633 700 ; C 82 ; WX 685 ; N C82 ; B 99 0 600 700 ; C 83 ; WX 618 ; N C83 ; B 66 0 566 700 ; C 84 ; WX 685 ; N C84 ; B 32 0 666 700 ; C 85 ; WX 818 ; N C85 ; B 99 0 733 700 ; C 86 ; WX 651 ; N C86 ; B 32 0 633 700 ; C 87 ; WX 784 ; N C87 ; B 66 -233 733 700 ; C 88 ; WX 751 ; N C88 ; B 66 0 700 700 ; C 89 ; WX 1085 ; N C89 ; B 66 0 1033 700 ; C 90 ; WX 1085 ; N C90 ; B 66 -233 1033 700 ; C 91 ; WX 451 ; N C91 ; B 133 -233 366 833 ; C 92 ; WX 300 ; N C92 ; B 0 0 0 0 ; C 93 ; WX 451 ; N C93 ; B 99 -233 333 833 ; C 94 ; WX 300 ; N C94 ; B 0 0 0 0 ; C 95 ; WX 300 ; N C95 ; B 0 0 0 0 ; C 96 ; WX 318 ; N C96 ; B 133 500 199 700 ; C 97 ; WX 651 ; N C97 ; B 99 0 600 466 ; C 98 ; WX 651 ; N C98 ; B 99 0 566 700 ; C 99 ; WX 651 ; N C99 ; B 66 0 566 466 ; C 100 ; WX 585 ; N C100 ; B 66 0 532 466 ; C 101 ; WX 751 ; N C101 ; B 66 -167 700 466 ; C 102 ; WX 618 ; N C102 ; B 99 0 532 466 ; C 103 ; WX 884 ; N C103 ; B 66 0 833 466 ; C 104 ; WX 585 ; N C104 ; B 99 0 500 466 ; C 105 ; WX 718 ; N C105 ; B 66 0 666 466 ; C 106 ; WX 718 ; N C106 ; B 66 0 666 700 ; C 107 ; WX 651 ; N C107 ; B 66 0 600 466 ; C 108 ; WX 718 ; N C108 ; B 66 0 666 466 ; C 109 ; WX 751 ; N C109 ; B 66 0 700 466 ; C 110 ; WX 718 ; N C110 ; B 66 0 666 466 ; C 111 ; WX 651 ; N C111 ; B 99 0 566 466 ; C 112 ; WX 718 ; N C112 ; B 66 0 666 466 ; C 113 ; WX 685 ; N C113 ; B 66 -233 600 466 ; C 114 ; WX 618 ; N C114 ; B 99 0 532 466 ; C 115 ; WX 618 ; N C115 ; B 99 0 532 466 ; C 116 ; WX 585 ; N C116 ; B 32 -233 566 466 ; C 117 ; WX 685 ; N C117 ; B 99 -233 600 700 ; C 118 ; WX 651 ; N C118 ; B 66 0 600 466 ; C 119 ; WX 718 ; N C119 ; B 66 -167 666 466 ; C 120 ; WX 718 ; N C120 ; B 66 0 666 466 ; C 121 ; WX 1018 ; N C121 ; B 66 0 966 466 ; C 122 ; WX 1018 ; N C122 ; B 66 -167 966 466 ; C 123 ; WX 485 ; N C123 ; B 166 -233 333 833 ; C 124 ; WX 451 ; N C124 ; B 133 -233 366 833 ; C 125 ; WX 485 ; N C125 ; B 166 -233 333 833 ; C 126 ; WX 451 ; N C126 ; B 99 433 366 700 ; EndCharMetrics EndFontMetrics gle-graphics-4.2.4c/src/fonts/plsa.gle0000664000000000000000000003560411676336540016324 0ustar rootrootdfont design= 1428 dfont char=33 amove 181 0 aline 272 0 aline 272 90 aline 181 90 aline 181 0 amove 181 272 aline 272 272 aline 272 909 aline 181 909 aline 181 272 stroke dfont endchar dfont char=34 amove 90 727 aline 181 727 aline 181 909 aline 90 909 aline 90 727 amove 363 727 aline 454 727 aline 454 909 aline 363 909 aline 363 727 stroke dfont endchar dfont char=35 amove 90 181 aline 181 727 amove 454 727 aline 363 181 amove 545 363 aline 0 363 amove 0 545 aline 545 545 stroke dfont endchar dfont char=36 amove 0 181 aline 90 90 aline 454 90 aline 545 181 aline 545 363 aline 454 454 aline 90 454 aline 0 545 aline 0 727 aline 90 818 aline 454 818 aline 545 727 amove 454 818 aline 363 818 amove 363 909 aline 363 0 amove 363 90 aline 181 90 amove 181 0 aline 181 909 stroke dfont endchar dfont char=37 amove 181 818 aline 90 909 aline 0 818 aline 0 636 aline 90 545 aline 181 636 aline 181 818 aline 545 909 aline 0 0 aline 363 90 aline 363 272 aline 454 363 aline 545 272 aline 545 90 aline 454 -1 aline 363 90 stroke dfont endchar dfont char=38 amove 272 181 aline 454 363 aline 545 272 aline 545 181 aline 454 0 aline 90 0 aline 0 90 aline 0 363 aline 363 636 aline 363 818 aline 272 909 aline 181 909 aline 90 818 aline 90 636 aline 545 0 stroke dfont endchar dfont char=39 amove 181 727 aline 272 727 aline 272 909 aline 181 909 aline 181 727 stroke dfont endchar dfont char=40 amove 363 0 aline 181 181 aline 181 727 aline 363 909 stroke dfont endchar dfont char=41 amove 181 0 aline 363 181 aline 363 727 aline 181 909 stroke dfont endchar dfont char=42 amove 90 181 aline 454 727 amove 272 727 aline 272 181 amove 454 181 aline 90 727 amove 0 454 aline 545 454 stroke dfont endchar dfont char=43 amove 272 181 aline 272 727 amove 0 454 aline 545 454 stroke dfont endchar dfont char=44 amove 181 -182 aline 272 -91 aline 272 90 aline 181 90 aline 181 -1 aline 272 -1 stroke dfont endchar dfont char=45 amove 90 454 aline 454 454 stroke dfont endchar dfont char=46 amove 181 0 aline 272 0 aline 272 90 aline 181 90 aline 181 0 stroke dfont endchar dfont char=47 amove 90 0 aline 454 909 stroke dfont endchar dfont char=48 amove 181 0 aline 90 90 aline 90 818 aline 181 909 aline 363 909 aline 454 818 aline 454 90 aline 363 0 aline 181 0 stroke dfont endchar dfont char=49 amove 181 0 aline 363 0 amove 272 0 aline 272 909 aline 181 818 stroke dfont endchar dfont char=50 amove 0 818 aline 90 909 aline 363 909 aline 454 818 aline 454 545 aline 0 181 aline 0 -1 aline 545 -1 stroke dfont endchar dfont char=51 amove 0 181 aline 181 0 aline 363 0 aline 545 181 aline 545 363 aline 363 454 aline 545 545 aline 545 727 aline 363 909 aline 181 909 aline 0 727 stroke dfont endchar dfont char=52 amove 272 0 aline 454 0 amove 363 0 aline 363 909 aline 0 272 aline 454 272 stroke dfont endchar dfont char=53 amove 0 90 aline 90 0 aline 363 0 aline 545 181 aline 545 363 aline 363 545 aline 0 545 aline 0 909 aline 545 909 stroke dfont endchar dfont char=54 amove 0 363 aline 90 545 aline 454 545 aline 545 363 aline 545 90 aline 454 0 aline 90 0 aline 0 90 aline 0 818 aline 90 909 aline 454 909 aline 545 818 stroke dfont endchar dfont char=55 amove 90 0 aline 90 90 aline 545 909 aline 0 909 stroke dfont endchar dfont char=56 amove 181 454 aline 0 545 aline 0 818 aline 90 909 aline 454 909 aline 545 818 aline 545 545 aline 363 454 aline 181 454 aline 0 363 aline 0 90 aline 90 0 aline 454 0 aline 545 90 aline 545 363 aline 363 454 stroke dfont endchar dfont char=57 amove 0 90 aline 90 0 aline 454 0 aline 545 90 aline 545 818 aline 454 909 aline 90 909 aline 0 818 aline 0 545 aline 90 363 aline 454 363 aline 545 454 stroke dfont endchar dfont char=58 amove 181 0 aline 272 0 aline 272 90 aline 181 90 aline 181 0 amove 181 272 aline 272 272 aline 272 363 aline 181 363 aline 181 272 stroke dfont endchar dfont char=59 amove 181 -182 aline 272 -91 aline 272 90 aline 181 90 aline 181 -1 aline 272 -1 amove 272 272 aline 272 363 aline 181 363 aline 181 272 aline 272 272 stroke dfont endchar dfont char=60 amove 363 818 aline 0 454 aline 363 90 stroke dfont endchar dfont char=61 amove 90 363 aline 454 363 amove 454 545 aline 90 545 stroke dfont endchar dfont char=62 amove 0 90 aline 363 454 aline 0 818 stroke dfont endchar dfont char=63 amove 181 0 aline 272 0 aline 272 90 aline 181 90 aline 181 0 amove 181 181 aline 181 272 aline 454 454 aline 454 818 aline 363 909 aline 181 909 aline 90 818 aline 90 727 stroke dfont endchar dfont char=64 amove 363 363 aline 363 545 aline 272 636 aline 181 545 aline 181 363 aline 272 272 aline 363 363 aline 454 272 aline 454 727 aline 363 818 aline 181 818 aline 90 727 aline 90 181 aline 181 90 aline 363 90 aline 454 181 stroke dfont endchar dfont char=65 amove 0 0 aline 0 454 aline 545 454 amove 0 454 aline 0 727 aline 181 909 aline 363 909 aline 545 727 aline 545 0 stroke dfont endchar dfont char=66 amove 0 0 aline 0 909 aline 454 909 aline 545 818 aline 545 545 aline 454 454 aline 0 454 amove 0 0 aline 454 0 aline 545 90 aline 545 363 aline 454 454 stroke dfont endchar dfont char=67 amove 545 818 aline 454 909 aline 90 909 aline 0 727 aline 0 181 aline 90 0 aline 454 0 aline 545 90 stroke dfont endchar dfont char=68 amove 0 0 aline 363 0 aline 545 181 aline 545 727 aline 363 909 aline 0 909 aline 0 0 stroke dfont endchar dfont char=69 amove 545 909 aline 0 909 aline 0 454 aline 363 454 amove 0 454 aline 0 0 aline 545 0 stroke dfont endchar dfont char=70 amove 0 0 aline 0 454 amove 363 454 aline 0 454 aline 0 909 aline 545 909 stroke dfont endchar dfont char=71 amove 181 272 aline 181 363 aline 545 363 aline 545 181 aline 454 0 aline 90 0 aline 0 181 aline 0 727 aline 90 909 aline 454 909 aline 545 818 aline 545 727 stroke dfont endchar dfont char=72 amove 0 0 aline 0 909 amove 0 454 aline 545 454 amove 545 909 aline 545 0 stroke dfont endchar dfont char=73 amove 181 0 aline 363 0 amove 272 0 aline 272 909 amove 181 909 aline 363 909 stroke dfont endchar dfont char=74 amove 0 181 aline 90 0 aline 272 0 aline 363 181 aline 363 909 amove 272 909 aline 454 909 stroke dfont endchar dfont char=75 amove 0 0 aline 0 909 amove 0 454 aline 181 454 aline 545 909 amove 181 454 aline 545 0 stroke dfont endchar dfont char=76 amove 0 909 aline 0 0 aline 545 0 stroke dfont endchar dfont char=77 amove 0 0 aline 0 909 aline 272 454 aline 545 909 aline 545 0 stroke dfont endchar dfont char=78 amove 0 0 aline 0 909 aline 545 0 aline 545 909 stroke dfont endchar dfont char=79 amove 0 90 aline 0 818 aline 90 909 aline 454 909 aline 545 818 aline 545 90 aline 454 0 aline 90 0 aline 0 90 stroke dfont endchar dfont char=80 amove 0 0 aline 0 909 aline 454 909 aline 545 818 aline 545 545 aline 454 454 aline 0 454 stroke dfont endchar dfont char=81 amove 0 181 aline 0 727 aline 181 909 aline 363 909 aline 545 727 aline 545 181 aline 454 90 aline 363 0 aline 181 0 aline 0 181 amove 363 181 aline 545 0 stroke dfont endchar dfont char=82 amove 0 0 aline 0 909 aline 454 909 aline 545 818 aline 545 545 aline 454 454 aline 363 454 aline 545 0 amove 363 454 aline 0 454 stroke dfont endchar dfont char=83 amove 0 90 aline 90 0 aline 454 0 aline 545 90 aline 545 363 aline 454 454 aline 90 454 aline 0 545 aline 0 818 aline 90 909 aline 454 909 aline 545 818 stroke dfont endchar dfont char=84 amove 272 0 aline 272 909 amove 0 909 aline 545 909 stroke dfont endchar dfont char=85 amove 0 909 aline 0 181 aline 90 0 aline 454 0 aline 545 181 aline 545 909 stroke dfont endchar dfont char=86 amove 0 909 aline 272 0 aline 545 909 stroke dfont endchar dfont char=87 amove 0 909 aline 181 0 aline 272 545 aline 363 0 aline 545 909 stroke dfont endchar dfont char=88 amove 0 0 aline 0 90 aline 545 818 aline 545 909 amove 0 909 aline 0 818 aline 545 90 aline 545 0 stroke dfont endchar dfont char=89 amove 272 454 aline 545 818 aline 545 909 amove 0 909 aline 0 818 aline 272 454 aline 272 0 stroke dfont endchar dfont char=90 amove 0 909 aline 545 909 aline 272 454 amove 181 454 aline 363 454 amove 272 454 aline -1 0 aline 545 0 stroke dfont endchar dfont char=91 amove 363 909 aline 181 909 aline 181 0 aline 363 0 stroke dfont endchar dfont char=92 amove 0 909 aline 545 0 stroke dfont endchar dfont char=93 amove 181 0 aline 363 0 aline 363 909 aline 181 909 stroke dfont endchar dfont char=94 amove 90 454 aline 272 727 aline 454 454 stroke dfont endchar dfont char=95 amove 0 -91 aline 545 -91 stroke dfont endchar dfont char=96 amove 181 909 aline 363 818 stroke dfont endchar dfont char=97 amove 0 454 aline 90 636 aline 454 636 aline 545 454 aline 545 90 aline 454 0 aline 90 0 aline 0 90 aline 0 272 aline 90 363 aline 454 363 aline 545 272 aline 545 0 stroke dfont endchar dfont char=98 amove 0 0 aline 0 454 aline 90 636 aline 454 636 aline 545 454 aline 545 181 aline 454 -1 aline 90 -1 aline 0 181 aline 0 909 stroke dfont endchar dfont char=99 amove 545 454 aline 454 636 aline 90 636 aline 0 545 aline 0 90 aline 90 0 aline 454 0 aline 545 181 stroke dfont endchar dfont char=100 amove 545 909 aline 545 181 aline 454 0 aline 90 0 aline 0 181 aline 0 454 aline 90 636 aline 454 636 aline 545 454 aline 545 0 stroke dfont endchar dfont char=101 amove 0 363 aline 545 363 aline 545 545 aline 454 636 aline 90 636 aline 0 545 aline 0 181 aline 90 0 aline 454 0 aline 545 90 stroke dfont endchar dfont char=102 amove 181 0 aline 181 454 amove 90 454 aline 272 454 amove 181 454 aline 181 727 aline 272 909 aline 454 909 aline 545 818 stroke dfont endchar dfont char=103 amove 0 -91 aline 90 -273 aline 454 -273 aline 545 -91 aline 545 454 aline 454 636 aline 90 636 aline 0 454 aline 0 181 aline 90 0 aline 454 0 aline 545 181 aline 545 636 stroke dfont endchar dfont char=104 amove 0 0 aline 0 909 amove 0 454 aline 90 636 aline 454 636 aline 545 454 aline 545 0 stroke dfont endchar dfont char=105 amove 181 0 aline 363 0 amove 272 0 aline 272 636 aline 181 636 amove 181 727 aline 181 818 aline 272 818 aline 272 727 aline 181 727 stroke dfont endchar dfont char=106 amove 0 0 aline 90 -273 aline 272 -273 aline 363 0 aline 363 636 aline 272 636 amove 272 727 aline 272 818 aline 363 818 aline 363 727 aline 272 727 stroke dfont endchar dfont char=107 amove 0 0 aline 0 909 amove 0 454 aline 181 636 aline 363 636 aline 363 454 aline 272 363 aline 90 363 aline -1 454 aline 545 0 stroke dfont endchar dfont char=108 amove 181 0 aline 363 0 amove 272 0 aline 272 909 aline 181 909 stroke dfont endchar dfont char=109 amove 0 0 aline 0 636 amove 0 454 aline 90 636 aline 181 636 aline 272 545 aline 272 0 amove 272 545 aline 363 636 aline 454 636 aline 545 454 aline 545 0 stroke dfont endchar dfont char=110 amove 0 0 aline 0 636 amove 0 454 aline 181 636 aline 363 636 aline 545 454 aline 545 0 stroke dfont endchar dfont char=111 amove 0 181 aline 0 454 aline 90 636 aline 454 636 aline 545 454 aline 545 181 aline 454 0 aline 90 0 aline 0 181 stroke dfont endchar dfont char=112 amove 0 -273 aline 0 454 aline 90 636 aline 454 636 aline 545 454 aline 545 181 aline 454 -1 aline 90 -1 aline 0 181 aline 0 636 stroke dfont endchar dfont char=113 amove 454 90 aline 363 0 aline 90 0 aline 0 181 aline 0 454 aline 90 636 aline 363 636 aline 454 454 aline 454 -182 amove 363 -182 aline 545 -182 amove 454 -182 aline 454 -273 stroke dfont endchar dfont char=114 amove 0 0 aline 0 636 amove 0 454 aline 90 636 aline 454 636 aline 545 454 stroke dfont endchar dfont char=115 amove 0 90 aline 90 0 aline 454 0 aline 545 90 aline 545 181 aline 454 363 aline 90 363 aline 0 454 aline 0 545 aline 90 636 aline 454 636 aline 545 545 stroke dfont endchar dfont char=116 amove 272 909 aline 272 636 amove 181 636 aline 363 636 amove 272 636 aline 272 90 aline 363 0 aline 454 0 aline 545 90 aline 545 181 stroke dfont endchar dfont char=117 amove 0 0 aline 0 636 amove 0 181 aline 90 -1 aline 454 -1 aline 545 181 aline 545 636 stroke dfont endchar dfont char=118 amove 0 636 aline 272 0 aline 545 636 stroke dfont endchar dfont char=119 amove 0 636 aline 181 0 aline 272 454 aline 363 0 aline 545 636 stroke dfont endchar dfont char=120 amove 0 0 aline 0 90 aline 545 545 aline 545 636 amove 0 636 aline 0 545 aline 545 90 aline 545 -1 stroke dfont endchar dfont char=121 amove 0 -182 aline 90 -273 aline 454 -273 aline 545 -182 aline 545 636 amove 545 181 aline 454 -1 aline 90 -1 aline 0 181 aline 0 636 stroke dfont endchar dfont char=122 amove 0 636 aline 545 636 aline 0 0 aline 545 0 amove 181 363 aline 363 363 stroke dfont endchar dfont char=123 amove 363 909 aline 272 909 aline 272 545 aline 181 454 aline 272 363 aline 272 90 aline 363 0 stroke dfont endchar dfont char=124 amove 272 0 aline 272 909 stroke dfont endchar dfont char=125 amove 181 0 aline 272 90 aline 272 363 aline 363 454 aline 272 545 aline 272 818 aline 181 909 stroke dfont endchar dfont char=126 amove 90 454 aline 90 545 aline 181 636 aline 454 363 aline 545 454 aline 545 545 stroke dfont endchar dfont char=127 amove 272 272 aline 90 454 aline 272 636 amove 90 454 aline 545 454 stroke dfont endchar gle-graphics-4.2.4c/src/fonts/plci.gle0000664000000000000000000007725411676336540016323 0ustar rootrootdfont design= 1428 dfont char=33 amove 307 1000 aline 230 923 aline 307 384 aline 384 923 aline 307 1000 amove 307 923 aline 307 692 amove 307 153 aline 230 76 aline 307 0 aline 384 76 aline 307 153 stroke dfont endchar dfont char=34 amove 230 615 aline 230 1000 amove 307 1000 aline 230 615 amove 692 615 aline 692 1000 amove 769 1000 aline 692 615 stroke dfont endchar dfont char=35 amove 230 0 aline 999 0 amove 615 0 aline 615 846 amove 230 461 aline 999 461 stroke dfont endchar dfont char=36 amove 153 692 aline 615 1000 amove 384 1076 aline 384 615 amove 615 692 aline 153 1000 stroke dfont endchar dfont char=37 amove 142 0 aline 1000 1000 aline 904 952 aline 761 904 aline 619 904 aline 476 952 aline 380 1000 aline 285 1000 aline 190 952 aline 142 857 aline 142 761 aline 238 666 aline 333 666 aline 428 714 aline 476 809 aline 476 904 aline 380 1000 amove 809 333 aline 714 285 aline 666 190 aline 666 95 aline 761 0 aline 857 0 aline 952 47 aline 1000 142 aline 1000 238 aline 904 333 aline 809 333 stroke dfont endchar dfont char=38 amove 230 461 aline 999 461 amove 999 846 aline 230 846 amove 615 846 aline 615 -1 stroke dfont endchar dfont char=39 amove 230 615 aline 230 1000 amove 307 1000 aline 230 615 stroke dfont endchar dfont char=40 amove 461 -154 aline 384 0 aline 307 307 aline 307 615 aline 384 923 aline 461 1076 amove 615 1230 aline 461 1076 aline 307 846 aline 230 615 aline 230 307 aline 307 76 aline 461 -154 aline 615 -308 stroke dfont endchar dfont char=41 amove 153 -308 aline 307 -154 aline 461 76 aline 538 307 aline 538 615 aline 461 846 aline 307 1076 aline 153 1230 amove 307 1076 aline 384 923 aline 461 615 aline 461 307 aline 384 0 aline 307 -154 stroke dfont endchar dfont char=42 amove 230 -308 aline 538 461 aline 230 1230 stroke dfont endchar dfont char=43 amove 384 -77 aline 461 230 amove 384 76 aline 461 -231 amove 538 -308 aline 461 -231 aline 384 -77 aline 384 76 aline 461 230 aline 461 307 aline 307 461 aline 461 615 aline 461 692 aline 384 846 aline 384 999 aline 461 1153 aline 538 1230 amove 461 1153 aline 384 846 amove 384 999 aline 461 692 stroke dfont endchar dfont char=44 amove 230 -231 aline 384 -77 aline 384 76 aline 307 153 aline 230 76 aline 307 -1 aline 384 76 stroke dfont endchar dfont char=45 amove 153 -308 aline 538 -308 aline 538 1230 aline 153 1230 amove 461 1230 aline 461 -308 stroke dfont endchar dfont char=46 amove 307 153 aline 230 76 aline 307 -1 aline 384 76 aline 307 153 stroke dfont endchar dfont char=47 amove 153 -308 aline 1000 1230 stroke dfont endchar dfont char=48 amove 384 0 aline 307 76 aline 230 307 aline 230 692 aline 307 923 aline 384 1000 aline 615 1000 aline 769 923 aline 846 692 aline 846 307 aline 769 76 aline 615 0 aline 384 0 aline 230 76 aline 153 307 aline 153 692 aline 230 923 aline 384 1000 amove 615 1000 aline 692 923 aline 769 692 aline 769 307 aline 692 76 aline 615 0 stroke dfont endchar dfont char=49 amove 230 0 aline 769 0 amove 538 0 aline 538 1000 aline 307 769 amove 461 923 aline 461 0 stroke dfont endchar dfont char=50 amove 153 0 aline 153 230 aline 230 384 aline 384 461 aline 615 538 aline 769 615 aline 846 769 aline 769 923 aline 615 1000 aline 384 1000 aline 230 923 aline 153 846 aline 153 769 aline 230 769 aline 230 846 amove 615 1000 aline 692 923 aline 769 769 aline 692 615 aline 615 538 amove 846 230 aline 846 153 aline 769 0 aline 538 0 aline 307 153 amove 153 76 aline 230 153 aline 307 153 aline 538 76 aline 769 76 aline 846 153 stroke dfont endchar dfont char=51 amove 230 153 aline 230 230 aline 153 230 aline 153 153 aline 230 76 aline 384 -1 aline 615 -1 aline 769 76 aline 846 230 aline 846 307 aline 769 461 aline 615 538 aline 461 538 amove 615 538 aline 769 615 aline 846 769 aline 769 923 aline 615 1000 aline 384 1000 aline 230 923 aline 153 846 aline 153 769 aline 230 769 aline 230 846 amove 615 1000 aline 692 923 aline 769 769 aline 692 615 aline 615 538 aline 692 461 aline 769 307 aline 769 230 aline 692 76 aline 615 0 stroke dfont endchar dfont char=52 amove 384 0 aline 769 0 amove 615 0 aline 615 1000 aline 76 307 aline 923 307 amove 538 0 aline 538 846 stroke dfont endchar dfont char=53 amove 230 153 aline 230 230 aline 153 230 aline 153 153 aline 230 76 aline 384 -1 aline 615 -1 aline 769 76 aline 846 230 aline 846 461 aline 769 615 aline 615 692 aline 384 692 aline 230 615 aline 153 538 aline 230 1000 aline 769 1000 aline 538 923 aline 230 923 amove 615 692 aline 692 615 aline 769 461 aline 769 230 aline 692 76 aline 615 0 stroke dfont endchar dfont char=54 amove 384 0 aline 307 76 aline 230 230 aline 230 615 aline 307 846 aline 461 1000 amove 769 846 aline 769 769 aline 846 769 aline 846 846 aline 769 923 aline 615 1000 aline 461 1000 aline 307 923 aline 230 846 aline 153 615 aline 153 230 aline 230 76 aline 384 0 aline 615 0 aline 769 76 aline 846 230 aline 846 384 aline 769 538 aline 615 615 aline 384 615 aline 153 461 amove 615 615 aline 692 538 aline 769 384 aline 769 230 aline 692 76 aline 615 0 stroke dfont endchar dfont char=55 amove 307 0 aline 461 307 aline 769 846 aline 692 846 aline 461 923 aline 307 923 aline 153 846 aline 307 999 aline 461 999 aline 692 846 amove 846 1000 aline 615 538 aline 384 0 amove 153 692 aline 153 1000 stroke dfont endchar dfont char=56 amove 384 0 aline 307 76 aline 230 230 aline 230 307 aline 307 461 aline 384 538 aline 307 615 aline 230 769 aline 307 923 aline 384 1000 aline 615 1000 aline 769 923 aline 846 769 aline 769 615 aline 615 538 aline 384 538 aline 230 615 aline 153 769 aline 230 923 aline 384 1000 amove 615 1000 aline 692 923 aline 769 769 aline 692 615 aline 615 538 aline 769 461 aline 846 307 aline 846 230 aline 769 76 aline 615 0 aline 384 0 aline 230 76 aline 153 230 aline 153 307 aline 230 461 aline 384 538 amove 615 538 aline 692 461 aline 769 307 aline 769 230 aline 692 76 aline 615 0 stroke dfont endchar dfont char=57 amove 230 153 aline 230 230 aline 153 230 aline 153 153 aline 230 76 aline 384 -1 aline 538 -1 aline 692 76 aline 769 153 aline 846 384 aline 846 769 aline 769 923 aline 615 1000 aline 384 1000 aline 230 923 aline 153 769 aline 153 615 aline 230 461 aline 384 384 aline 615 384 aline 846 538 amove 384 384 aline 307 461 aline 230 615 aline 230 769 aline 307 923 aline 384 1000 amove 615 1000 aline 692 923 aline 769 769 aline 769 384 aline 692 153 aline 538 0 stroke dfont endchar dfont char=58 amove 307 692 aline 230 615 aline 307 538 aline 384 615 aline 307 692 amove 307 153 aline 230 76 aline 307 0 aline 384 76 aline 307 153 stroke dfont endchar dfont char=59 amove 230 -231 aline 384 -77 aline 384 76 aline 307 153 aline 230 76 aline 307 -1 aline 384 76 amove 307 692 aline 230 615 aline 307 538 aline 384 615 aline 307 692 stroke dfont endchar dfont char=60 amove 952 857 aline 190 428 aline 952 0 stroke dfont endchar dfont char=61 amove 307 -308 aline 384 -231 aline 461 -77 aline 461 76 aline 384 230 aline 384 307 aline 538 461 aline 384 615 aline 384 692 aline 461 846 aline 461 999 aline 384 1153 aline 307 1230 amove 384 1153 aline 461 846 amove 461 1000 aline 384 692 amove 384 230 aline 461 -77 amove 461 76 aline 384 -231 stroke dfont endchar dfont char=62 amove 190 0 aline 952 428 aline 190 857 stroke dfont endchar dfont char=63 amove 461 76 aline 461 -1 aline 538 -1 aline 538 76 aline 461 76 amove 538 307 aline 461 307 aline 461 384 aline 538 461 aline 769 538 aline 846 692 aline 846 769 aline 769 923 aline 615 1000 aline 384 1000 aline 230 923 aline 153 769 aline 153 692 aline 230 692 aline 230 769 aline 153 769 amove 538 461 aline 692 538 aline 769 615 aline 769 846 aline 615 1000 stroke dfont endchar dfont char=64 amove 523 238 aline 476 285 aline 428 380 aline 428 523 aline 476 666 aline 571 761 amove 857 761 aline 809 380 aline 809 285 aline 904 238 aline 999 238 aline 1095 333 aline 1142 476 aline 1142 571 aline 1095 714 aline 1047 809 aline 952 904 aline 857 952 aline 714 1000 aline 571 1000 aline 428 952 aline 333 904 aline 238 809 aline 190 714 aline 142 571 aline 142 428 aline 190 285 aline 238 190 aline 333 95 aline 428 47 aline 571 0 aline 714 0 aline 857 47 aline 952 95 aline 1000 142 amove 904 238 aline 857 285 aline 857 380 aline 904 761 amove 857 619 aline 809 714 aline 714 761 aline 571 761 aline 476 714 aline 428 666 aline 380 523 aline 380 380 aline 428 285 aline 523 238 aline 666 238 aline 761 285 aline 809 380 stroke dfont endchar dfont char=65 amove 0 0 aline 692 1000 aline 769 0 amove 692 0 aline 615 846 amove 692 307 aline 230 307 amove 230 0 aline -154 0 amove 538 0 aline 923 0 stroke dfont endchar dfont char=66 amove 0 0 aline 538 0 aline 769 76 aline 846 230 aline 846 384 aline 769 461 aline 615 538 aline 384 538 amove 615 538 aline 769 384 aline 769 230 aline 692 76 aline 538 0 amove 230 0 aline 538 1000 amove 461 1000 aline 153 0 amove 692 538 aline 923 615 aline 1000 769 aline 1000 923 aline 846 1000 aline 307 1000 amove 846 1000 aline 923 923 aline 923 769 aline 846 615 aline 692 538 stroke dfont endchar dfont char=67 amove 384 0 aline 230 153 aline 230 461 aline 307 692 aline 384 846 aline 538 1000 amove 846 923 aline 923 923 aline 1000 1000 aline 923 769 aline 846 923 aline 692 1000 aline 538 1000 aline 384 923 aline 307 846 aline 230 692 aline 153 461 aline 153 230 aline 230 76 aline 384 -1 aline 538 -1 aline 692 76 aline 769 230 stroke dfont endchar dfont char=68 amove 0 0 aline 538 0 aline 769 76 aline 846 153 aline 923 307 aline 1000 538 aline 1000 769 aline 923 923 aline 769 1000 aline 307 1000 amove 461 1000 aline 153 0 amove 230 0 aline 538 1000 amove 769 1000 aline 846 923 aline 923 769 aline 923 538 aline 846 307 aline 769 153 aline 692 76 aline 538 0 stroke dfont endchar dfont char=69 amove 0 0 aline 769 0 aline 846 230 aline 692 0 amove 615 384 aline 692 692 amove 615 538 aline 384 538 amove 461 1000 aline 153 0 amove 230 0 aline 538 1000 amove 307 1000 aline 1076 1000 aline 1000 769 aline 1000 1000 stroke dfont endchar dfont char=70 amove 0 0 aline 384 0 amove 230 0 aline 538 1000 amove 461 1000 aline 153 0 amove 384 538 aline 615 538 amove 615 384 aline 692 692 amove 1000 1000 aline 1000 769 aline 1076 1000 aline 307 1000 stroke dfont endchar dfont char=71 amove 384 0 aline 230 153 aline 230 461 aline 307 692 aline 384 846 aline 538 1000 amove 846 923 aline 923 923 aline 1000 1000 aline 923 769 aline 846 923 aline 692 1000 aline 538 1000 aline 384 923 aline 307 846 aline 230 692 aline 153 461 aline 153 230 aline 230 76 aline 384 -1 aline 538 -1 aline 692 76 aline 769 153 aline 846 384 amove 769 384 aline 692 153 aline 538 -1 amove 615 384 aline 1000 384 stroke dfont endchar dfont char=72 amove 0 0 aline 384 0 amove 230 0 aline 538 1000 amove 461 1000 aline 153 0 amove 615 0 aline 1000 0 amove 846 0 aline 1153 1000 amove 1076 1000 aline 769 0 amove 923 538 aline 384 538 amove 307 1000 aline 692 1000 amove 923 1000 aline 1307 1000 stroke dfont endchar dfont char=73 amove 0 0 aline 384 0 amove 230 0 aline 538 1000 amove 461 1000 aline 153 0 amove 307 1000 aline 692 1000 stroke dfont endchar dfont char=74 amove 76 153 aline 153 230 aline 76 307 aline -1 230 aline 76 76 aline 230 -1 aline 307 -1 aline 461 76 aline 538 230 aline 769 1000 amove 692 1000 aline 461 230 aline 384 76 aline 307 0 amove 538 1000 aline 923 1000 stroke dfont endchar dfont char=75 amove 0 0 aline 384 0 amove 230 0 aline 538 1000 amove 461 1000 aline 153 0 amove 615 0 aline 1000 0 amove 846 0 aline 692 615 amove 615 615 aline 769 0 amove 384 461 aline 1153 1000 amove 1307 1000 aline 923 1000 amove 692 1000 aline 307 1000 stroke dfont endchar dfont char=76 amove 0 0 aline 769 0 aline 846 230 aline 692 0 amove 230 0 aline 538 1000 amove 461 1000 aline 153 0 amove 307 1000 aline 692 1000 stroke dfont endchar dfont char=77 amove 0 0 aline 307 0 amove 153 0 aline 461 1000 amove 538 1000 aline 615 153 amove 538 -1 aline 461 846 amove 538 1000 aline 307 1000 amove 1230 1000 aline 538 0 amove 769 0 aline 1153 0 amove 1000 0 aline 1307 1000 amove 1230 1000 aline 923 0 amove 1230 1000 aline 1461 1000 stroke dfont endchar dfont char=78 amove 0 0 aline 307 0 amove 153 0 aline 461 1000 aline 769 0 aline 1076 1000 amove 923 1000 aline 1230 1000 amove 538 1000 aline 769 230 amove 538 1000 aline 307 1000 stroke dfont endchar dfont char=79 amove 384 0 aline 230 153 aline 230 461 aline 307 692 aline 384 846 aline 538 1000 aline 692 1000 aline 846 923 aline 923 769 aline 923 538 aline 846 307 aline 769 153 aline 692 76 aline 538 0 aline 384 0 aline 230 76 aline 153 230 aline 153 461 aline 230 692 aline 307 846 aline 384 923 aline 538 1000 amove 692 1000 aline 846 846 aline 846 538 aline 769 307 aline 692 153 aline 538 0 stroke dfont endchar dfont char=80 amove 0 0 aline 384 0 amove 230 0 aline 538 1000 amove 461 1000 aline 153 0 amove 384 461 aline 769 461 aline 1000 538 aline 1076 692 aline 1076 846 aline 1000 923 aline 846 1000 aline 307 1000 amove 846 1000 aline 1000 846 aline 1000 692 aline 923 538 aline 769 461 stroke dfont endchar dfont char=81 amove 307 76 aline 307 153 aline 384 230 aline 461 230 aline 538 153 aline 538 -154 aline 615 -231 aline 692 -231 aline 769 -154 amove 692 -231 aline 615 -154 aline 538 153 amove 538 -1 aline 692 153 aline 769 307 aline 846 538 aline 846 846 aline 692 999 amove 538 999 aline 692 999 aline 846 923 aline 923 769 aline 923 538 aline 846 307 aline 769 153 aline 692 76 aline 538 0 aline 384 0 aline 230 76 aline 153 230 aline 153 461 aline 230 692 aline 307 846 aline 384 923 aline 538 1000 aline 384 846 aline 307 692 aline 230 461 aline 230 153 aline 384 0 stroke dfont endchar dfont char=82 amove 0 0 aline 384 0 amove 230 0 aline 538 1000 amove 461 1000 aline 153 0 amove 384 461 aline 769 461 aline 1000 538 aline 1076 692 aline 1076 846 aline 1000 923 aline 846 1000 aline 307 1000 amove 846 1000 aline 1000 846 aline 1000 692 aline 923 538 aline 769 461 amove 692 461 aline 769 76 aline 846 0 aline 923 0 aline 1000 76 amove 923 0 aline 846 76 aline 769 384 aline 692 461 stroke dfont endchar dfont char=83 amove 230 76 aline 153 76 aline 76 -1 aline 153 230 aline 230 76 aline 384 -1 aline 615 -1 aline 769 76 aline 846 153 aline 846 384 aline 769 461 aline 384 692 aline 307 769 amove 923 923 aline 1000 923 aline 1076 1000 aline 1000 769 aline 923 923 aline 769 1000 aline 538 1000 aline 384 923 aline 307 846 aline 307 692 aline 384 615 aline 769 384 aline 846 307 stroke dfont endchar dfont char=84 amove 230 0 aline 615 0 amove 461 0 aline 769 1000 amove 692 1000 aline 384 0 amove 384 1000 aline 230 769 aline 307 1000 aline 1153 1000 aline 1076 769 aline 1076 1000 stroke dfont endchar dfont char=85 amove 384 0 aline 307 76 aline 307 230 aline 538 1000 amove 461 1000 aline 230 230 aline 230 76 aline 384 0 aline 692 0 aline 846 76 aline 923 230 aline 1153 1000 amove 999 1000 aline 1307 1000 amove 692 1000 aline 307 1000 stroke dfont endchar dfont char=86 amove 384 0 aline 307 1000 amove 384 1000 aline 461 153 amove 384 -1 aline 1076 1000 amove 1230 1000 aline 846 1000 amove 538 1000 aline 153 1000 stroke dfont endchar dfont char=87 amove 307 0 aline 384 1000 amove 461 1000 aline 384 153 amove 307 -1 aline 846 1000 aline 769 0 aline 1307 1000 amove 1153 1000 aline 1461 1000 amove 923 1000 aline 846 153 amove 615 1000 aline 230 1000 stroke dfont endchar dfont char=88 amove 76 0 aline 1076 1000 amove 1230 1000 aline 846 1000 amove 615 1000 aline 230 1000 amove 384 1000 aline 692 0 amove 769 0 aline 461 1000 amove 538 0 aline 923 0 amove 307 0 aline -77 0 stroke dfont endchar dfont char=89 amove 153 0 aline 538 0 amove 384 0 aline 538 538 aline 1000 1000 amove 1153 1000 aline 769 1000 amove 538 1000 aline 153 1000 amove 307 1000 aline 461 538 aline 307 0 amove 538 538 aline 384 1000 stroke dfont endchar dfont char=90 amove 0 0 aline 923 1000 amove 1000 1000 aline 76 0 amove -1 0 aline 692 0 aline 769 230 aline 615 0 amove 384 1000 aline 230 769 aline 307 1000 aline 1000 1000 stroke dfont endchar dfont char=91 amove 190 -334 aline 190 1190 aline 523 1190 amove 238 1190 aline 238 -334 amove 190 -334 aline 523 -334 stroke dfont endchar stroke dfont endchar dfont char=93 amove 142 -334 aline 476 -334 aline 476 1190 aline 142 1190 amove 428 1190 aline 428 -334 stroke dfont endchar stroke dfont endchar stroke dfont endchar dfont char=96 amove 238 904 aline 285 952 aline 238 1000 aline 190 952 aline 190 857 aline 238 761 aline 285 714 stroke dfont endchar dfont char=97 amove 384 0 aline 230 153 aline 230 384 aline 307 538 aline 461 692 amove 846 692 aline 692 153 aline 692 76 aline 769 -1 aline 923 -1 aline 1000 76 aline 1076 230 amove 846 -1 aline 769 76 aline 769 153 aline 923 692 amove 769 384 aline 769 538 aline 615 692 aline 461 692 aline 307 615 aline 230 538 aline 153 384 aline 153 230 aline 230 76 aline 384 0 aline 538 0 aline 692 153 stroke dfont endchar dfont char=98 amove 461 0 aline 307 153 aline 307 461 aline 461 1000 aline 230 1000 amove 384 1000 aline 230 461 aline 230 230 aline 307 76 aline 461 0 aline 615 0 aline 769 76 aline 846 153 aline 923 307 aline 923 461 aline 846 615 aline 692 692 aline 538 692 aline 384 615 aline 307 461 amove 692 692 aline 846 538 aline 846 307 aline 769 153 aline 615 0 stroke dfont endchar dfont char=99 amove 384 0 aline 230 153 aline 230 384 aline 307 538 aline 461 692 amove 769 615 aline 769 538 aline 846 538 aline 769 615 aline 615 692 aline 461 692 aline 307 615 aline 230 538 aline 153 384 aline 153 230 aline 230 76 aline 384 0 aline 538 0 aline 692 76 aline 769 153 stroke dfont endchar dfont char=100 amove 384 0 aline 230 153 aline 230 384 aline 307 538 aline 461 692 amove 769 1000 aline 1000 1000 aline 769 153 aline 769 76 aline 846 -1 amove 692 153 aline 538 -1 aline 384 -1 aline 230 76 aline 153 230 aline 153 384 aline 230 538 aline 307 615 aline 461 692 aline 615 692 aline 769 538 aline 769 384 amove 1076 230 aline 1000 76 aline 923 0 aline 769 0 aline 692 76 aline 692 153 aline 923 1000 stroke dfont endchar dfont char=101 amove 230 230 aline 538 307 aline 692 384 aline 769 461 aline 769 615 aline 615 692 aline 461 692 aline 307 615 aline 230 538 aline 153 384 aline 153 230 aline 230 76 aline 384 0 aline 538 0 aline 692 76 aline 769 153 amove 461 692 aline 307 538 aline 230 384 aline 230 153 aline 384 0 stroke dfont endchar dfont char=102 amove 0 -308 aline -77 -231 aline -77 -308 aline 76 -308 aline 230 -231 aline 307 -77 aline 538 769 aline 615 923 aline 692 1000 amove 769 1000 aline 846 923 aline 846 1000 aline 692 1000 aline 538 923 aline 461 769 aline 230 -77 aline 153 -231 aline 76 -308 amove 230 692 aline 692 692 stroke dfont endchar dfont char=103 amove 230 -308 aline 153 -231 aline 76 -231 aline 153 -308 aline 384 -308 aline 538 -231 aline 692 -77 aline 769 153 aline 923 692 amove 846 692 aline 692 153 aline 615 -77 aline 538 -231 amove 384 0 aline 230 153 aline 230 384 aline 307 538 aline 461 692 amove 769 384 aline 769 538 aline 615 692 aline 461 692 aline 307 615 aline 230 538 aline 153 384 aline 153 230 aline 230 76 aline 384 0 aline 538 0 aline 692 153 stroke dfont endchar dfont char=104 amove 76 0 aline 384 1000 amove 461 1000 aline 153 0 amove 307 538 aline 384 615 aline 538 692 aline 692 692 aline 846 615 aline 846 461 aline 769 230 aline 769 76 aline 846 0 amove 1076 230 aline 1000 76 aline 923 0 aline 769 0 aline 692 76 aline 692 230 aline 769 461 aline 769 615 aline 692 692 amove 461 1000 aline 230 1000 stroke dfont endchar dfont char=105 amove 461 0 aline 384 76 aline 384 230 aline 461 461 aline 461 615 aline 384 692 aline 230 692 aline 153 615 aline 76 461 amove 307 692 aline 384 615 aline 384 461 aline 307 230 aline 307 76 aline 384 0 aline 538 0 aline 615 76 aline 692 230 amove 461 1000 aline 461 923 aline 538 923 aline 538 1000 aline 461 1000 stroke dfont endchar dfont char=106 amove 76 -308 aline -1 -231 aline -1 -308 aline 153 -308 aline 307 -231 aline 384 -77 aline 538 461 aline 538 615 aline 461 692 aline 307 692 aline 230 615 aline 153 461 amove 384 692 aline 461 615 aline 461 461 aline 307 -77 aline 230 -231 aline 153 -308 amove 538 1000 aline 538 923 aline 615 923 aline 615 1000 aline 538 1000 stroke dfont endchar dfont char=107 amove 76 0 aline 384 1000 amove 461 1000 aline 153 0 amove 615 0 aline 538 76 aline 461 384 aline 307 461 aline 384 461 aline 538 538 aline 692 692 aline 769 692 aline 846 615 aline 846 538 aline 769 538 aline 846 615 amove 846 230 aline 769 76 aline 692 0 aline 538 0 aline 461 76 aline 384 384 aline 307 461 amove 230 1000 aline 461 1000 stroke dfont endchar dfont char=108 amove 307 0 aline 230 76 aline 230 153 aline 461 1000 aline 230 1000 amove 384 1000 aline 153 153 aline 153 76 aline 230 -1 aline 384 -1 aline 461 76 aline 538 230 stroke dfont endchar dfont char=109 amove 76 461 aline 153 615 aline 230 692 aline 384 692 aline 461 615 aline 461 538 aline 307 0 amove 307 692 aline 384 615 aline 384 538 aline 230 0 amove 461 538 aline 538 615 aline 692 692 aline 846 692 aline 1000 615 aline 1000 538 aline 846 0 amove 846 692 aline 923 615 aline 923 538 aline 769 0 amove 1000 538 aline 1076 615 aline 1230 692 aline 1384 692 aline 1538 615 aline 1538 461 aline 1461 230 aline 1461 76 aline 1538 0 amove 1384 692 aline 1461 615 aline 1461 461 aline 1384 230 aline 1384 76 aline 1461 0 aline 1615 0 aline 1692 76 aline 1769 230 stroke dfont endchar dfont char=110 amove 230 0 aline 384 538 aline 384 615 aline 307 692 amove 461 538 aline 538 615 aline 692 692 aline 846 692 aline 999 615 aline 999 461 aline 923 230 aline 923 76 aline 999 0 amove 1230 230 aline 1153 76 aline 1076 0 aline 923 0 aline 846 76 aline 846 230 aline 923 461 aline 923 615 aline 846 692 amove 76 461 aline 153 615 aline 230 692 aline 384 692 aline 461 615 aline 461 538 aline 307 0 stroke dfont endchar dfont char=111 amove 384 0 aline 230 153 aline 230 384 aline 307 538 aline 461 692 aline 615 692 aline 769 615 aline 846 461 aline 846 307 aline 769 153 aline 692 76 aline 538 0 aline 384 0 aline 230 76 aline 153 230 aline 153 384 aline 230 538 aline 307 615 aline 461 692 amove 615 692 aline 769 538 aline 769 307 aline 692 153 aline 538 0 stroke dfont endchar dfont char=112 amove 0 -308 aline 384 -308 amove 230 -308 aline 461 538 aline 461 615 aline 384 692 aline 230 692 aline 153 615 aline 76 461 amove 307 692 aline 384 615 aline 384 538 aline 153 -308 amove 692 0 aline 846 153 aline 923 307 aline 923 538 aline 769 692 amove 461 538 aline 615 692 aline 769 692 aline 923 615 aline 1000 461 aline 1000 307 aline 923 153 aline 846 76 aline 692 0 aline 538 0 aline 384 153 aline 384 307 stroke dfont endchar dfont char=113 amove 384 0 aline 230 153 aline 230 384 aline 307 538 aline 461 692 amove 846 692 aline 538 -308 amove 615 -308 aline 923 692 amove 769 384 aline 769 538 aline 615 692 aline 461 692 aline 307 615 aline 230 538 aline 153 384 aline 153 230 aline 230 76 aline 384 0 aline 538 0 aline 692 153 amove 769 -308 aline 384 -308 stroke dfont endchar dfont char=114 amove 230 0 aline 384 538 aline 384 615 aline 307 692 amove 461 538 aline 538 615 aline 692 692 aline 769 692 aline 846 615 aline 846 538 aline 769 538 aline 846 615 amove 76 461 aline 153 615 aline 230 692 aline 384 692 aline 461 615 aline 461 538 aline 307 0 stroke dfont endchar dfont char=115 amove 230 76 aline 230 153 aline 153 153 aline 230 76 aline 384 -1 aline 615 -1 aline 769 76 aline 769 307 aline 615 384 aline 384 461 aline 230 538 amove 769 615 aline 769 538 aline 846 538 aline 769 615 aline 615 692 aline 384 692 aline 230 615 aline 230 461 aline 384 384 aline 615 307 aline 769 230 stroke dfont endchar dfont char=116 amove 307 0 aline 230 76 aline 230 153 aline 461 1000 amove 384 1000 aline 153 153 aline 153 76 aline 230 -1 aline 384 -1 aline 461 76 aline 538 230 amove 538 692 aline 153 692 stroke dfont endchar dfont char=117 amove 461 0 aline 384 76 aline 384 230 aline 461 461 aline 461 615 aline 384 692 aline 230 692 aline 153 615 aline 76 461 amove 307 692 aline 384 615 aline 384 461 aline 307 230 aline 307 76 aline 461 0 aline 615 0 aline 769 76 aline 846 153 amove 1000 0 aline 923 76 aline 923 153 aline 1076 692 amove 1000 692 aline 846 153 aline 846 76 aline 923 0 aline 1076 0 aline 1153 76 aline 1230 230 stroke dfont endchar dfont char=118 amove 461 0 aline 384 76 aline 384 230 aline 461 461 aline 461 615 aline 384 692 aline 230 692 aline 153 615 aline 76 461 amove 307 692 aline 384 615 aline 384 461 aline 307 230 aline 307 76 aline 461 0 aline 538 0 aline 692 76 aline 846 230 aline 923 461 aline 923 692 aline 846 692 aline 923 615 stroke dfont endchar dfont char=119 amove 461 0 aline 384 76 aline 384 230 aline 461 461 aline 461 615 aline 384 692 aline 230 692 aline 153 615 aline 76 461 amove 307 692 aline 384 615 aline 384 461 aline 307 230 aline 307 76 aline 461 0 aline 538 0 aline 692 76 aline 769 153 amove 923 0 aline 769 76 aline 769 153 aline 923 692 amove 1000 692 aline 846 153 aline 846 76 aline 923 0 aline 1000 0 aline 1153 76 aline 1307 230 aline 1384 461 aline 1384 692 aline 1307 692 aline 1384 615 stroke dfont endchar dfont char=120 amove 153 76 aline 230 153 aline 153 153 aline 153 76 aline 230 -1 aline 307 -1 aline 461 76 aline 538 230 aline 615 461 aline 615 615 aline 538 692 amove 692 461 aline 692 615 aline 615 692 aline 461 692 aline 307 615 aline 230 461 amove 538 230 aline 538 76 aline 615 -1 aline 769 -1 aline 923 76 aline 1000 230 amove 692 -1 aline 615 76 aline 615 230 aline 692 461 aline 769 615 aline 923 692 aline 1000 692 aline 1076 615 aline 1076 538 aline 1000 538 aline 1076 615 stroke dfont endchar dfont char=121 amove 461 0 aline 384 76 aline 384 230 aline 461 461 aline 461 615 aline 384 692 aline 230 692 aline 153 615 aline 76 461 amove 307 692 aline 384 615 aline 384 461 aline 307 230 aline 307 76 aline 461 0 aline 615 0 aline 769 76 aline 846 153 amove 692 -231 aline 769 -77 aline 846 153 aline 1000 692 amove 1076 692 aline 923 153 aline 846 -77 aline 692 -231 aline 538 -308 aline 307 -308 aline 230 -231 aline 307 -231 aline 384 -308 stroke dfont endchar dfont char=122 amove 153 0 aline 153 76 aline 230 153 aline 846 538 aline 923 615 aline 923 692 amove 846 538 aline 769 538 aline 538 615 aline 307 615 amove 230 538 aline 307 692 aline 538 692 aline 769 538 amove 846 153 aline 769 0 aline 538 0 aline 307 153 amove 230 153 aline 307 153 aline 538 76 aline 769 76 stroke dfont endchar dfont char=123 amove 380 238 aline 333 95 aline 333 -96 aline 380 -239 amove 476 -334 aline 333 -191 aline 285 -48 aline 285 47 aline 333 190 aline 428 285 aline 428 333 aline 238 428 aline 428 523 aline 428 571 aline 333 666 aline 285 809 aline 285 904 aline 333 1047 aline 476 1190 amove 380 1095 aline 333 952 aline 333 761 aline 380 619 stroke dfont endchar dfont char=124 amove 230 -308 aline 230 1230 aline 615 1230 amove 307 1230 aline 307 -308 amove 230 -308 aline 615 -308 stroke dfont endchar dfont char=125 amove 238 -334 aline 380 -191 aline 428 -48 aline 428 47 aline 380 190 aline 285 285 aline 285 333 aline 476 428 aline 285 523 aline 285 571 aline 380 666 aline 428 809 aline 428 904 aline 380 1047 aline 238 1190 amove 333 1095 aline 380 952 aline 380 761 aline 333 619 amove 333 238 aline 380 95 aline 380 -96 aline 333 -239 stroke dfont endchar dfont char=126 amove 307 1000 aline 230 923 aline 230 769 aline 307 692 aline 461 692 aline 538 769 aline 538 923 aline 461 1000 aline 307 1000 stroke dfont endchar gle-graphics-4.2.4c/src/fonts/plba.afm0000664000000000000000000001224711676336540016275 0ustar rootrootStartFontMetrics 2.0 Comment Made from HERSHEY font file using SPLITFONT.BAS FontName plBA EncodingScheme TEXENCODING FullName plBA FamilyName plBA Weight Medium ItalicAngle 0 IsFixedPitch false UnderlinePosition -97 UnderlineThickness 73 FontBBox 0 -400 1001 1001 CapHeight 729 XHeight 151 Descender -219 Ascender 729 StartCharMetrics 96 C 32 ; WX 400 ; N C32 ; B 0 0 0 0 ; C 33 ; WX 430 ; N C33 ; B 126 0 254 636 ; C 34 ; WX 430 ; N C34 ; B 63 509 317 636 ; C 35 ; WX 430 ; N C35 ; B 0 63 381 572 ; C 36 ; WX 430 ; N C36 ; B 0 0 381 636 ; C 37 ; WX 430 ; N C37 ; B 0 0 445 636 ; C 38 ; WX 430 ; N C38 ; B 0 0 381 572 ; C 39 ; WX 430 ; N C39 ; B 190 445 254 636 ; C 40 ; WX 430 ; N C40 ; B 126 0 317 636 ; C 41 ; WX 430 ; N C41 ; B 63 0 254 636 ; C 42 ; WX 430 ; N C42 ; B 0 126 381 445 ; C 43 ; WX 430 ; N C43 ; B 0 126 381 509 ; C 44 ; WX 430 ; N C44 ; B 63 -63 254 126 ; C 45 ; WX 430 ; N C45 ; B 0 254 381 381 ; C 46 ; WX 430 ; N C46 ; B 126 0 254 126 ; C 47 ; WX 430 ; N C47 ; B 0 0 381 636 ; C 48 ; WX 430 ; N C48 ; B 0 0 381 636 ; C 49 ; WX 430 ; N C49 ; B 63 0 254 636 ; C 50 ; WX 430 ; N C50 ; B 0 0 381 636 ; C 51 ; WX 430 ; N C51 ; B 0 0 381 636 ; C 52 ; WX 430 ; N C52 ; B 0 0 381 636 ; C 53 ; WX 430 ; N C53 ; B 0 0 381 636 ; C 54 ; WX 430 ; N C54 ; B 0 0 381 636 ; C 55 ; WX 430 ; N C55 ; B 0 0 381 636 ; C 56 ; WX 430 ; N C56 ; B 0 0 381 636 ; C 57 ; WX 430 ; N C57 ; B 0 0 381 636 ; C 58 ; WX 430 ; N C58 ; B 126 0 254 381 ; C 59 ; WX 430 ; N C59 ; B 63 -63 254 381 ; C 60 ; WX 430 ; N C60 ; B 0 0 317 636 ; C 61 ; WX 430 ; N C61 ; B 0 190 381 445 ; C 62 ; WX 430 ; N C62 ; B 63 0 381 636 ; C 63 ; WX 430 ; N C63 ; B 0 0 381 636 ; C 64 ; WX 430 ; N C64 ; B 63 126 381 509 ; C 65 ; WX 430 ; N C65 ; B 0 0 381 636 ; C 66 ; WX 430 ; N C66 ; B 0 0 381 636 ; C 67 ; WX 430 ; N C67 ; B 0 0 381 636 ; C 68 ; WX 430 ; N C68 ; B 0 0 381 636 ; C 69 ; WX 430 ; N C69 ; B 0 0 381 636 ; C 70 ; WX 430 ; N C70 ; B 0 0 381 636 ; C 71 ; WX 430 ; N C71 ; B 0 0 381 636 ; C 72 ; WX 430 ; N C72 ; B 0 0 381 636 ; C 73 ; WX 430 ; N C73 ; B 126 0 254 636 ; C 74 ; WX 430 ; N C74 ; B 0 0 381 636 ; C 75 ; WX 430 ; N C75 ; B 0 0 381 636 ; C 76 ; WX 430 ; N C76 ; B 0 0 381 636 ; C 77 ; WX 430 ; N C77 ; B 0 0 381 636 ; C 78 ; WX 430 ; N C78 ; B 0 0 381 636 ; C 79 ; WX 430 ; N C79 ; B 0 0 381 636 ; C 80 ; WX 430 ; N C80 ; B 0 0 381 636 ; C 81 ; WX 430 ; N C81 ; B 0 -63 445 636 ; C 82 ; WX 430 ; N C82 ; B 0 0 381 636 ; C 83 ; WX 430 ; N C83 ; B 0 0 381 636 ; C 84 ; WX 430 ; N C84 ; B 0 0 381 636 ; C 85 ; WX 430 ; N C85 ; B 0 0 381 636 ; C 86 ; WX 430 ; N C86 ; B 0 0 381 636 ; C 87 ; WX 430 ; N C87 ; B 0 0 381 636 ; C 88 ; WX 430 ; N C88 ; B 0 0 381 636 ; C 89 ; WX 430 ; N C89 ; B 0 0 381 636 ; C 90 ; WX 430 ; N C90 ; B 0 0 381 636 ; C 91 ; WX 430 ; N C91 ; B 63 0 254 636 ; C 92 ; WX 430 ; N C92 ; B 0 0 381 636 ; C 93 ; WX 430 ; N C93 ; B 126 0 317 636 ; C 94 ; WX 430 ; N C94 ; B 0 190 381 445 ; C 95 ; WX 430 ; N C95 ; B 0 0 381 126 ; C 96 ; WX 430 ; N C96 ; B 63 509 254 636 ; C 97 ; WX 430 ; N C97 ; B 0 0 381 445 ; C 98 ; WX 430 ; N C98 ; B 0 0 381 636 ; C 99 ; WX 430 ; N C99 ; B 0 0 381 445 ; C 100 ; WX 430 ; N C100 ; B 0 0 381 636 ; C 101 ; WX 430 ; N C101 ; B 0 0 381 445 ; C 102 ; WX 430 ; N C102 ; B 63 0 381 636 ; C 103 ; WX 430 ; N C103 ; B 0 -191 381 445 ; C 104 ; WX 430 ; N C104 ; B 0 0 381 636 ; C 105 ; WX 430 ; N C105 ; B 126 0 254 636 ; C 106 ; WX 430 ; N C106 ; B 0 -191 381 636 ; C 107 ; WX 430 ; N C107 ; B 0 0 381 636 ; C 108 ; WX 430 ; N C108 ; B 126 0 317 636 ; C 109 ; WX 430 ; N C109 ; B 0 0 381 445 ; C 110 ; WX 430 ; N C110 ; B 0 0 381 445 ; C 111 ; WX 430 ; N C111 ; B 0 0 381 445 ; C 112 ; WX 430 ; N C112 ; B 0 -191 381 445 ; C 113 ; WX 430 ; N C113 ; B 0 -191 445 445 ; C 114 ; WX 430 ; N C114 ; B 0 0 317 445 ; C 115 ; WX 430 ; N C115 ; B 0 0 381 445 ; C 116 ; WX 430 ; N C116 ; B 63 0 317 636 ; C 117 ; WX 430 ; N C117 ; B 0 0 381 445 ; C 118 ; WX 430 ; N C118 ; B 0 0 381 445 ; C 119 ; WX 430 ; N C119 ; B 0 0 381 445 ; C 120 ; WX 430 ; N C120 ; B 0 0 381 445 ; C 121 ; WX 430 ; N C121 ; B 0 -191 381 445 ; C 122 ; WX 430 ; N C122 ; B 0 0 381 445 ; C 123 ; WX 430 ; N C123 ; B 0 0 317 636 ; C 124 ; WX 430 ; N C124 ; B 126 0 254 636 ; C 125 ; WX 430 ; N C125 ; B 63 0 381 636 ; C 126 ; WX 430 ; N C126 ; B 0 190 381 445 ; C 127 ; WX 430 ; N C127 ; B 0 126 381 509 ; EndCharMetrics EndFontMetrics gle-graphics-4.2.4c/src/fonts/texcmr.afm0000664000000000000000000002176311676336540016664 0ustar rootrootStartFontMetrics 2.0 Comment Made from TEX tfm file using TFMTOAFM.bas FontName CMR10 EncodingScheme TEXENCODING FullName CMR10 FamilyName CMR10 Weight Medium ItalicAngle 0 IsFixedPitch false UnderlinePosition -97 UnderlineThickness 73 FontBBox 0 -300 1001 1001 CapHeight 729 XHeight 151 Descender -219 Ascender 729 StartCharMetrics 127 C 1 ; WX 833 ; N C1 ; B 0 0 833 683 ; C 2 ; WX 777 ; N C2 ; B 0 0 777 683 ; C 3 ; WX 694 ; N C3 ; B 0 0 694 683 ; C 4 ; WX 666 ; N C4 ; B 0 0 666 683 ; C 5 ; WX 750 ; N C5 ; B 0 0 750 683 ; C 6 ; WX 722 ; N C6 ; B 0 0 722 683 ; C 7 ; WX 777 ; N C7 ; B 0 0 777 683 ; C 8 ; WX 722 ; N C8 ; B 0 0 722 683 ; C 9 ; WX 777 ; N C9 ; B 0 0 777 683 ; C 10 ; WX 722 ; N C10 ; B 0 0 722 683 ; C 11 ; WX 583 ; N C11 ; B 0 0 583 694 ; L i C14 L l C15 C 12 ; WX 555 ; N C12 ; B 0 0 555 694 ; C 13 ; WX 555 ; N C13 ; B 0 0 555 694 ; C 14 ; WX 833 ; N C14 ; B 0 0 833 694 ; C 15 ; WX 833 ; N C15 ; B 0 0 833 694 ; C 16 ; WX 277 ; N C16 ; B 0 0 277 430 ; C 17 ; WX 305 ; N C17 ; B 0 -194 305 430 ; C 18 ; WX 500 ; N C18 ; B 0 0 500 694 ; C 19 ; WX 500 ; N C19 ; B 0 0 500 694 ; C 20 ; WX 500 ; N C20 ; B 0 0 500 628 ; C 21 ; WX 500 ; N C21 ; B 0 0 500 694 ; C 22 ; WX 500 ; N C22 ; B 0 0 500 567 ; C 23 ; WX 750 ; N C23 ; B 0 0 750 694 ; C 24 ; WX 444 ; N C24 ; B 0 -170 444 0 ; C 25 ; WX 500 ; N C25 ; B 0 0 500 694 ; C 26 ; WX 722 ; N C26 ; B 0 0 722 430 ; C 27 ; WX 777 ; N C27 ; B 0 0 777 430 ; C 28 ; WX 500 ; N C28 ; B 0 -97 500 527 ; C 29 ; WX 902 ; N C29 ; B 0 0 902 683 ; C 30 ; WX 1013 ; N C30 ; B 0 0 1013 683 ; C 31 ; WX 777 ; N C31 ; B 0 -48 777 731 ; C 32 ; WX 234 ; N C32 ; B 0 0 234 430 ; C 33 ; WX 277 ; N C33 ; B 0 0 277 694 ; C 34 ; WX 500 ; N C34 ; B 0 0 500 694 ; C 35 ; WX 833 ; N C35 ; B 0 -194 833 694 ; C 36 ; WX 500 ; N C36 ; B 0 -55 500 750 ; C 37 ; WX 833 ; N C37 ; B 0 -55 833 750 ; C 38 ; WX 777 ; N C38 ; B 0 0 777 694 ; C 39 ; WX 277 ; N C39 ; B 0 0 277 694 ; L C39 C34 C 40 ; WX 388 ; N C40 ; B 0 -250 388 750 ; C 41 ; WX 388 ; N C41 ; B 0 -250 388 750 ; C 42 ; WX 500 ; N C42 ; B 0 0 500 750 ; C 43 ; WX 777 ; N C43 ; B 0 -83 777 583 ; C 44 ; WX 277 ; N C44 ; B 0 -194 277 105 ; C 45 ; WX 333 ; N C45 ; B 0 0 333 430 ; C 46 ; WX 277 ; N C46 ; B 0 0 277 105 ; C 47 ; WX 500 ; N C47 ; B 0 -250 500 750 ; C 48 ; WX 500 ; N C48 ; B 0 0 500 644 ; C 49 ; WX 500 ; N C49 ; B 0 0 500 644 ; C 50 ; WX 500 ; N C50 ; B 0 0 500 644 ; C 51 ; WX 500 ; N C51 ; B 0 0 500 644 ; C 52 ; WX 500 ; N C52 ; B 0 0 500 644 ; C 53 ; WX 500 ; N C53 ; B 0 0 500 644 ; C 54 ; WX 500 ; N C54 ; B 0 0 500 644 ; C 55 ; WX 500 ; N C55 ; B 0 0 500 644 ; C 56 ; WX 500 ; N C56 ; B 0 0 500 644 ; C 57 ; WX 500 ; N C57 ; B 0 0 500 644 ; C 58 ; WX 277 ; N C58 ; B 0 0 277 430 ; C 59 ; WX 277 ; N C59 ; B 0 -194 277 430 ; C 60 ; WX 277 ; N C60 ; B 0 -194 277 500 ; C 61 ; WX 777 ; N C61 ; B 0 134 777 366 ; C 62 ; WX 472 ; N C62 ; B 0 -194 472 500 ; C 63 ; WX 472 ; N C63 ; B 0 0 472 694 ; C 64 ; WX 777 ; N C64 ; B 0 0 777 694 ; C 65 ; WX 750 ; N A ; B 0 0 750 683 ; C 66 ; WX 708 ; N B ; B 0 0 708 683 ; C 67 ; WX 722 ; N C ; B 0 0 722 683 ; C 68 ; WX 763 ; N D ; B 0 0 763 683 ; C 69 ; WX 680 ; N E ; B 0 0 680 683 ; C 70 ; WX 652 ; N F ; B 0 0 652 683 ; C 71 ; WX 784 ; N G ; B 0 0 784 683 ; C 72 ; WX 750 ; N H ; B 0 0 750 683 ; C 73 ; WX 361 ; N I ; B 0 0 361 683 ; C 74 ; WX 513 ; N J ; B 0 0 513 683 ; C 75 ; WX 777 ; N K ; B 0 0 777 683 ; C 76 ; WX 625 ; N L ; B 0 0 625 683 ; C 77 ; WX 916 ; N M ; B 0 0 916 683 ; C 78 ; WX 750 ; N N ; B 0 0 750 683 ; C 79 ; WX 777 ; N O ; B 0 0 777 683 ; C 80 ; WX 680 ; N P ; B 0 0 680 683 ; C 81 ; WX 777 ; N Q ; B 0 -194 777 683 ; C 82 ; WX 736 ; N R ; B 0 0 736 683 ; C 83 ; WX 555 ; N S ; B 0 0 555 683 ; C 84 ; WX 722 ; N T ; B 0 0 722 683 ; C 85 ; WX 750 ; N U ; B 0 0 750 683 ; C 86 ; WX 750 ; N V ; B 0 0 750 683 ; C 87 ; WX 1027 ; N W ; B 0 0 1027 683 ; C 88 ; WX 750 ; N X ; B 0 0 750 683 ; C 89 ; WX 750 ; N Y ; B 0 0 750 683 ; C 90 ; WX 611 ; N Z ; B 0 0 611 683 ; C 91 ; WX 277 ; N C91 ; B 0 -250 277 750 ; C 92 ; WX 500 ; N C92 ; B 0 0 500 694 ; C 93 ; WX 277 ; N C93 ; B 0 -250 277 750 ; C 94 ; WX 500 ; N C94 ; B 0 0 500 694 ; C 95 ; WX 277 ; N C95 ; B 0 0 277 667 ; C 96 ; WX 277 ; N C96 ; B 0 0 277 694 ; C 97 ; WX 500 ; N a ; B 0 0 500 430 ; C 98 ; WX 555 ; N b ; B 0 0 555 694 ; C 99 ; WX 444 ; N c ; B 0 0 444 430 ; C 100 ; WX 555 ; N d ; B 0 0 555 694 ; C 101 ; WX 444 ; N e ; B 0 0 444 430 ; C 102 ; WX 305 ; N f ; B 0 0 305 694 ; L f C11 L i C12 L l C13 C 103 ; WX 500 ; N g ; B 0 -194 500 430 ; C 104 ; WX 555 ; N h ; B 0 0 555 694 ; C 105 ; WX 277 ; N i ; B 0 0 277 667 ; C 106 ; WX 305 ; N j ; B 0 -194 305 667 ; C 107 ; WX 527 ; N k ; B 0 0 527 694 ; C 108 ; WX 277 ; N l ; B 0 0 277 694 ; C 109 ; WX 833 ; N m ; B 0 0 833 430 ; C 110 ; WX 555 ; N n ; B 0 0 555 430 ; C 111 ; WX 500 ; N o ; B 0 0 500 430 ; C 112 ; WX 555 ; N p ; B 0 -194 555 430 ; C 113 ; WX 527 ; N q ; B 0 -194 527 430 ; C 114 ; WX 391 ; N r ; B 0 0 391 430 ; C 115 ; WX 394 ; N s ; B 0 0 394 430 ; C 116 ; WX 388 ; N t ; B 0 0 388 615 ; C 117 ; WX 555 ; N u ; B 0 0 555 430 ; C 118 ; WX 527 ; N v ; B 0 0 527 430 ; C 119 ; WX 722 ; N w ; B 0 0 722 430 ; C 120 ; WX 527 ; N x ; B 0 0 527 430 ; C 121 ; WX 527 ; N y ; B 0 -194 527 430 ; C 122 ; WX 444 ; N z ; B 0 0 444 430 ; C 123 ; WX 500 ; N C123 ; B 0 0 500 430 ; C 124 ; WX 1000 ; N C124 ; B 0 0 1000 430 ; C 125 ; WX 500 ; N C125 ; B 0 0 500 694 ; C 126 ; WX 500 ; N C126 ; B 0 0 500 667 ; C 127 ; WX 500 ; N C127 ; B 0 0 500 667 ; EndCharMetrics StartKernData StartKernPairs 181 KPX C11 C33 77 KPX C11 C39 77 KPX C11 C41 77 KPX C11 C63 77 KPX C11 C93 77 KPX C32 L -320 KPX C32 l -278 KPX C39 C33 111 KPX C39 C63 111 KPX A C -28 KPX A G -28 KPX A O -28 KPX A Q -28 KPX A T -84 KPX A U -28 KPX A V -112 KPX A W -112 KPX A Y -84 KPX A t -28 KPX D A -28 KPX D V -28 KPX D W -28 KPX D X -28 KPX D Y -28 KPX F A -112 KPX F C -28 KPX F G -28 KPX F O -28 KPX F Q -28 KPX F a -84 KPX F e -84 KPX F o -84 KPX F r -84 KPX F u -84 KPX I I 27 KPX K C -28 KPX K G -28 KPX K O -28 KPX K Q -28 KPX L T -84 KPX L V -112 KPX L W -112 KPX L Y -84 KPX O A -28 KPX O V -28 KPX O W -28 KPX O X -28 KPX O Y -28 KPX P C44 -84 KPX P C46 -84 KPX P A -84 KPX P a -28 KPX P e -28 KPX P o -28 KPX R C -28 KPX R G -28 KPX R O -28 KPX R Q -28 KPX R T -84 KPX R U -28 KPX R V -112 KPX R W -112 KPX R Y -84 KPX R t -28 KPX T A -84 KPX T a -84 KPX T e -84 KPX T o -84 KPX T r -84 KPX T u -84 KPX T y -28 KPX V A -112 KPX V C -28 KPX V G -28 KPX V O -28 KPX V Q -28 KPX V a -84 KPX V e -84 KPX V o -84 KPX V r -84 KPX V u -84 KPX W A -112 KPX W C -28 KPX W G -28 KPX W O -28 KPX W Q -28 KPX W a -84 KPX W e -84 KPX W o -84 KPX W r -84 KPX W u -84 KPX X C -28 KPX X G -28 KPX X O -28 KPX X Q -28 KPX Y A -84 KPX Y a -84 KPX Y e -84 KPX Y o -84 KPX Y r -84 KPX Y u -84 KPX a j 55 KPX a v -28 KPX a w -28 KPX a y -28 KPX b c 27 KPX b d 27 KPX b e 27 KPX b j 55 KPX b o 27 KPX b q 27 KPX b v -28 KPX b w -28 KPX b x -28 KPX b y -28 KPX c h -28 KPX c k -28 KPX f C33 77 KPX f C39 77 KPX f C41 77 KPX f C63 77 KPX f C93 77 KPX g j 27 KPX h b -28 KPX h t -28 KPX h u -28 KPX h v -28 KPX h w -28 KPX h y -28 KPX k a -56 KPX k c -28 KPX k e -28 KPX k o -28 KPX m b -28 KPX m t -28 KPX m u -28 KPX m v -28 KPX m w -28 KPX m y -28 KPX n b -28 KPX n t -28 KPX n u -28 KPX n v -28 KPX n w -28 KPX n y -28 KPX o c 27 KPX o d 27 KPX o e 27 KPX o j 55 KPX o o 27 KPX o q 27 KPX o v -28 KPX o w -28 KPX o x -28 KPX o y -28 KPX p c 27 KPX p d 27 KPX p e 27 KPX p j 55 KPX p o 27 KPX p q 27 KPX p v -28 KPX p w -28 KPX p x -28 KPX p y -28 KPX t w -28 KPX t y -28 KPX u w -28 KPX v a -56 KPX v c -28 KPX v e -28 KPX v o -28 KPX w a -28 KPX w c -28 KPX w e -28 KPX w o -28 KPX y C44 -84 KPX y C46 -84 KPX y a -28 KPX y e -28 KPX y o -28 EndKernPairs EndKernData EndFontMetrics gle-graphics-4.2.4c/src/fonts/plsg.gle0000664000000000000000000005614611676336540016336 0ustar rootrootdfont design= 1428 dfont char=33 amove 238 1000 aline 238 333 amove 238 95 aline 190 47 aline 238 0 aline 285 47 aline 238 95 stroke dfont endchar dfont char=34 amove 190 666 aline 190 1000 amove 571 1000 aline 571 666 stroke dfont endchar dfont char=35 amove 142 285 aline 809 285 amove 857 571 aline 190 571 amove 523 1190 aline 190 -334 amove 476 -334 aline 809 1190 stroke dfont endchar dfont char=36 amove 142 142 aline 238 47 aline 380 0 aline 571 0 aline 714 47 aline 809 142 aline 809 285 aline 761 380 aline 714 428 aline 619 476 aline 333 571 aline 238 619 aline 190 666 aline 142 761 aline 142 857 aline 238 952 aline 380 1000 aline 571 1000 aline 714 952 aline 809 857 amove 571 1190 aline 571 -191 amove 380 -191 aline 380 1190 stroke dfont endchar dfont char=37 amove 142 0 aline 1000 1000 aline 904 952 aline 761 904 aline 619 904 aline 476 952 aline 380 1000 aline 285 1000 aline 190 952 aline 142 857 aline 142 761 aline 238 666 aline 333 666 aline 428 714 aline 476 809 aline 476 904 aline 380 1000 amove 809 333 aline 714 285 aline 666 190 aline 666 95 aline 761 0 aline 857 0 aline 952 47 aline 1000 142 aline 1000 238 aline 904 333 aline 809 333 stroke dfont endchar dfont char=38 amove 1095 571 aline 1095 619 aline 1047 666 aline 1000 666 aline 952 619 aline 904 523 aline 809 285 aline 714 142 aline 619 47 aline 523 0 aline 333 0 aline 238 47 aline 190 95 aline 142 190 aline 142 285 aline 190 380 aline 238 428 aline 571 619 aline 619 666 aline 666 761 aline 666 857 aline 619 952 aline 523 1000 aline 428 952 aline 380 857 aline 380 761 aline 428 619 aline 523 476 aline 761 142 aline 857 47 aline 952 0 aline 1047 0 aline 1095 47 aline 1095 95 stroke dfont endchar dfont char=39 amove 190 1000 aline 190 666 stroke dfont endchar dfont char=40 amove 523 1190 aline 428 1095 aline 333 952 aline 238 761 aline 190 523 aline 190 333 aline 238 95 aline 333 -96 aline 428 -239 aline 523 -334 stroke dfont endchar dfont char=41 amove 142 -334 aline 238 -239 aline 333 -96 aline 428 95 aline 476 333 aline 476 523 aline 428 761 aline 333 952 aline 238 1095 aline 142 1190 stroke dfont endchar dfont char=42 amove 142 285 aline 619 571 amove 380 714 aline 380 142 amove 619 285 aline 142 571 stroke dfont endchar dfont char=43 amove 190 428 aline 1047 428 amove 619 857 aline 619 0 stroke dfont endchar dfont char=44 amove 190 -191 aline 238 -143 aline 285 -48 aline 285 47 aline 238 95 aline 190 47 aline 238 0 aline 285 47 stroke dfont endchar dfont char=45 amove 190 428 aline 1047 428 stroke dfont endchar dfont char=46 amove 238 95 aline 190 47 aline 238 0 aline 285 47 aline 238 95 stroke dfont endchar dfont char=47 amove 95 -334 aline 952 1190 stroke dfont endchar dfont char=48 amove 428 1000 aline 285 952 aline 190 809 aline 142 571 aline 142 428 aline 190 190 aline 285 47 aline 428 0 aline 523 0 aline 666 47 aline 761 190 aline 809 428 aline 809 571 aline 761 809 aline 666 952 aline 523 1000 aline 428 1000 stroke dfont endchar dfont char=49 amove 285 809 aline 380 857 aline 523 1000 aline 523 0 stroke dfont endchar dfont char=50 amove 190 761 aline 190 809 aline 238 904 aline 285 952 aline 380 1000 aline 571 1000 aline 666 952 aline 714 904 aline 761 809 aline 761 714 aline 714 619 aline 619 476 aline 142 0 aline 809 0 stroke dfont endchar dfont char=51 amove 142 190 aline 190 95 aline 238 47 aline 380 0 aline 523 0 aline 666 47 aline 761 142 aline 809 285 aline 809 380 aline 761 523 aline 714 571 aline 619 619 aline 476 619 aline 761 1000 aline 238 1000 stroke dfont endchar dfont char=52 amove 619 0 aline 619 1000 aline 142 333 aline 857 333 stroke dfont endchar dfont char=53 amove 142 190 aline 190 95 aline 238 47 aline 380 0 aline 523 0 aline 666 47 aline 761 142 aline 809 285 aline 809 380 aline 761 523 aline 666 619 aline 523 666 aline 380 666 aline 238 619 aline 190 571 aline 238 1000 aline 714 1000 stroke dfont endchar dfont char=54 amove 190 333 aline 238 476 aline 333 571 aline 476 619 aline 523 619 aline 666 571 aline 761 476 aline 809 333 aline 809 285 aline 761 142 aline 666 47 aline 523 -1 aline 476 -1 aline 333 47 aline 238 142 aline 190 333 aline 190 571 aline 238 809 aline 333 952 aline 476 1000 aline 571 1000 aline 714 952 aline 761 857 stroke dfont endchar dfont char=55 amove 333 0 aline 809 1000 aline 142 1000 stroke dfont endchar dfont char=56 amove 380 1000 aline 238 952 aline 190 857 aline 190 761 aline 238 666 aline 333 619 aline 523 571 aline 666 523 aline 761 428 aline 809 333 aline 809 190 aline 761 95 aline 714 47 aline 571 -1 aline 380 -1 aline 238 47 aline 190 95 aline 142 190 aline 142 333 aline 190 428 aline 285 523 aline 428 571 aline 619 619 aline 714 666 aline 761 761 aline 761 857 aline 714 952 aline 571 1000 aline 380 1000 stroke dfont endchar dfont char=57 amove 190 142 aline 238 47 aline 380 0 aline 476 0 aline 619 47 aline 714 190 aline 761 428 aline 761 666 aline 714 857 aline 619 952 aline 476 1000 aline 428 1000 aline 285 952 aline 190 857 aline 142 714 aline 142 666 aline 190 523 aline 285 428 aline 428 380 aline 476 380 aline 619 428 aline 714 523 aline 761 666 stroke dfont endchar dfont char=58 amove 238 666 aline 190 619 aline 238 571 aline 285 619 aline 238 666 amove 238 95 aline 190 47 aline 238 -1 aline 285 47 aline 238 95 stroke dfont endchar dfont char=59 amove 190 -191 aline 238 -143 aline 285 -48 aline 285 47 aline 238 95 aline 190 47 aline 238 0 aline 285 47 amove 238 666 aline 190 619 aline 238 571 aline 285 619 aline 238 666 stroke dfont endchar dfont char=60 amove 952 857 aline 190 428 aline 952 0 stroke dfont endchar dfont char=61 amove 190 285 aline 1047 285 amove 1047 571 aline 190 571 stroke dfont endchar dfont char=62 amove 190 0 aline 952 428 aline 190 857 stroke dfont endchar dfont char=63 amove 142 761 aline 142 809 aline 190 904 aline 238 952 aline 333 1000 aline 523 1000 aline 619 952 aline 666 904 aline 714 809 aline 714 714 aline 666 619 aline 619 571 aline 428 476 aline 428 333 amove 428 95 aline 380 47 aline 428 -1 aline 476 47 aline 428 95 stroke dfont endchar dfont char=64 amove 523 238 aline 476 285 aline 428 380 aline 428 523 aline 476 666 aline 571 761 amove 857 761 aline 809 380 aline 809 285 aline 904 238 aline 999 238 aline 1095 333 aline 1142 476 aline 1142 571 aline 1095 714 aline 1047 809 aline 952 904 aline 857 952 aline 714 1000 aline 571 1000 aline 428 952 aline 333 904 aline 238 809 aline 190 714 aline 142 571 aline 142 428 aline 190 285 aline 238 190 aline 333 95 aline 428 47 aline 571 0 aline 714 0 aline 857 47 aline 952 95 aline 1000 142 amove 904 238 aline 857 285 aline 857 380 aline 904 761 amove 857 619 aline 809 714 aline 714 761 aline 571 761 aline 476 714 aline 428 666 aline 380 523 aline 380 380 aline 428 285 aline 523 238 aline 666 238 aline 761 285 aline 809 380 stroke dfont endchar dfont char=65 amove 47 0 aline 428 1000 aline 809 0 amove 666 333 aline 190 333 stroke dfont endchar dfont char=66 amove 190 0 aline 190 1000 aline 619 1000 aline 761 952 aline 809 904 aline 857 809 aline 857 714 aline 809 619 aline 761 571 aline 619 523 amove 190 523 aline 619 523 aline 761 476 aline 809 428 aline 857 333 aline 857 190 aline 809 95 aline 761 47 aline 619 -1 aline 190 -1 stroke dfont endchar dfont char=67 amove 190 0 aline 190 1000 aline 761 1000 stroke dfont endchar dfont char=68 amove 47 0 aline 428 1000 aline 809 0 aline 47 0 stroke dfont endchar dfont char=69 amove 190 0 aline 190 1000 aline 809 1000 amove 571 523 aline 190 523 amove 190 0 aline 809 0 stroke dfont endchar dfont char=70 amove 142 0 aline 809 1000 aline 142 1000 amove 142 0 aline 809 0 stroke dfont endchar dfont char=71 amove 190 0 aline 190 1000 amove 190 523 aline 857 523 amove 857 1000 aline 857 0 stroke dfont endchar dfont char=72 amove 428 1000 aline 333 952 aline 238 857 aline 190 761 aline 142 619 aline 142 380 aline 190 238 aline 238 142 aline 333 47 aline 428 0 aline 619 0 aline 714 47 aline 809 142 aline 857 238 aline 904 380 aline 904 619 aline 857 761 aline 809 857 aline 714 952 aline 619 1000 aline 428 1000 amove 380 523 aline 666 523 stroke dfont endchar dfont char=73 amove 190 1000 aline 190 0 stroke dfont endchar dfont char=74 amove 190 0 aline 190 1000 amove 428 571 aline 857 0 amove 190 333 aline 857 1000 stroke dfont endchar dfont char=75 amove 47 0 aline 428 1000 aline 809 0 stroke dfont endchar dfont char=76 amove 190 0 aline 190 1000 aline 571 0 aline 952 1000 aline 952 0 stroke dfont endchar dfont char=77 amove 190 0 aline 190 1000 aline 857 0 aline 857 1000 stroke dfont endchar dfont char=78 amove 95 0 aline 761 0 amove 571 523 aline 285 523 amove 95 1000 aline 761 1000 stroke dfont endchar dfont char=79 amove 428 1000 aline 333 952 aline 238 857 aline 190 761 aline 142 619 aline 142 380 aline 190 238 aline 238 142 aline 333 47 aline 428 0 aline 619 0 aline 714 47 aline 809 142 aline 857 238 aline 904 380 aline 904 619 aline 857 761 aline 809 857 aline 714 952 aline 619 1000 aline 428 1000 stroke dfont endchar dfont char=80 amove 190 0 aline 190 1000 aline 857 1000 aline 857 0 stroke dfont endchar dfont char=81 amove 190 0 aline 190 1000 aline 619 1000 aline 761 952 aline 809 904 aline 857 809 aline 857 666 aline 809 571 aline 761 523 aline 619 476 aline 190 476 stroke dfont endchar dfont char=82 amove 95 0 aline 428 523 aline 95 1000 aline 761 1000 amove 761 0 aline 95 0 stroke dfont endchar dfont char=83 amove 380 0 aline 380 1000 amove 47 1000 aline 714 1000 stroke dfont endchar dfont char=84 amove 428 0 aline 428 666 aline 380 857 aline 333 952 aline 285 1000 aline 190 1000 aline 142 952 aline 95 857 aline 95 761 amove 428 666 aline 476 857 aline 523 952 aline 571 1000 aline 666 1000 aline 714 952 aline 761 857 aline 761 761 stroke dfont endchar dfont char=85 amove 476 0 aline 476 1000 amove 380 761 aline 238 714 aline 190 666 aline 142 571 aline 142 428 aline 190 333 aline 238 285 aline 380 238 aline 571 238 aline 714 285 aline 761 333 aline 809 428 aline 809 571 aline 761 666 aline 714 714 aline 571 761 aline 380 761 stroke dfont endchar dfont char=86 amove 142 0 aline 809 1000 amove 142 1000 aline 809 0 stroke dfont endchar dfont char=87 amove 523 0 aline 523 1000 amove 95 714 aline 142 714 aline 190 666 aline 238 476 aline 285 380 aline 333 333 aline 476 285 aline 571 285 aline 714 333 aline 761 380 aline 809 476 aline 857 666 aline 904 714 aline 952 714 stroke dfont endchar dfont char=88 amove 142 0 aline 333 0 aline 190 333 aline 142 523 aline 142 714 aline 190 857 aline 285 952 aline 428 1000 aline 523 1000 aline 666 952 aline 761 857 aline 809 714 aline 809 523 aline 761 333 aline 619 0 aline 809 0 stroke dfont endchar dfont char=89 amove 0 0 aline 95 47 aline 238 190 aline 380 380 aline 571 714 aline 714 1000 aline 714 0 aline 666 142 aline 571 285 aline 476 380 aline 333 476 aline 238 476 aline 190 428 aline 190 333 aline 238 238 aline 333 142 aline 476 47 aline 619 0 aline 857 0 stroke dfont endchar dfont char=90 amove 428 142 aline 476 47 aline 571 0 aline 714 0 aline 809 47 aline 857 95 aline 904 190 aline 904 333 aline 857 428 aline 809 476 aline 666 523 aline 619 523 amove 666 523 aline 809 571 aline 904 619 aline 952 666 aline 1000 761 aline 1000 857 aline 952 952 aline 857 1000 aline 714 1000 aline 571 952 aline 476 904 aline 380 809 aline 285 666 aline 238 571 aline 190 428 aline 142 190 aline 142 47 aline 190 0 aline 238 0 aline 333 47 aline 428 142 aline 523 285 aline 571 380 aline 619 523 aline 666 714 aline 666 857 aline 619 904 stroke dfont endchar dfont char=91 amove 190 -334 aline 190 1190 aline 523 1190 amove 238 1190 aline 238 -334 amove 190 -334 aline 523 -334 stroke dfont endchar stroke dfont endchar dfont char=93 amove 142 -334 aline 476 -334 aline 476 1190 aline 142 1190 amove 428 1190 aline 428 -334 stroke dfont endchar stroke dfont endchar stroke dfont endchar dfont char=96 amove 238 904 aline 285 952 aline 238 1000 aline 190 952 aline 190 857 aline 238 761 aline 285 714 stroke dfont endchar dfont char=97 amove 428 666 aline 333 619 aline 238 523 aline 190 428 aline 142 285 aline 142 142 aline 190 47 aline 285 -1 aline 380 -1 aline 476 47 aline 619 190 aline 714 333 aline 809 523 aline 857 666 amove 428 666 aline 523 666 aline 571 619 aline 619 523 aline 714 142 aline 761 47 aline 809 -1 aline 857 -1 stroke dfont endchar dfont char=98 amove 190 238 aline 238 95 aline 285 47 aline 380 -1 aline 476 -1 aline 571 47 aline 619 95 aline 666 190 aline 666 333 aline 619 428 aline 523 523 aline 428 571 aline 571 571 aline 666 619 aline 714 666 aline 761 761 aline 761 904 aline 666 1000 aline 571 1000 aline 476 952 aline 380 857 aline 285 666 aline 238 523 aline 190 333 aline 142 47 aline 95 -334 stroke dfont endchar dfont char=99 amove 428 0 aline 476 238 aline 476 428 aline 428 571 aline 380 619 aline 285 666 aline 238 666 aline 142 619 aline 47 523 amove 809 666 aline 761 523 aline 714 428 aline 428 0 aline 333 -191 aline 285 -334 stroke dfont endchar dfont char=100 amove 523 666 aline 380 666 aline 285 619 aline 190 523 aline 142 380 aline 142 238 aline 190 95 aline 238 47 aline 333 -1 aline 428 -1 aline 523 47 aline 619 142 aline 666 285 aline 666 428 aline 619 571 aline 523 666 aline 428 761 aline 380 857 aline 380 952 aline 428 1000 aline 523 1000 aline 619 952 aline 714 857 stroke dfont endchar dfont char=101 amove 619 571 aline 571 619 aline 476 666 aline 333 666 aline 238 619 aline 238 523 aline 285 428 aline 428 380 aline 238 333 aline 142 238 aline 142 142 aline 190 47 aline 285 0 aline 428 0 aline 523 47 aline 619 142 stroke dfont endchar dfont char=102 amove 285 -239 aline 333 -334 aline 428 -334 aline 476 -286 aline 476 -191 aline 428 -96 aline 285 0 aline 190 95 aline 142 190 aline 142 285 aline 190 428 aline 333 571 aline 476 666 aline 666 761 aline 523 761 aline 380 809 aline 333 857 aline 333 904 aline 380 952 aline 476 1000 stroke dfont endchar dfont char=103 amove 190 0 aline 285 333 aline 333 523 aline 333 619 aline 285 666 aline 190 666 aline 95 571 aline 47 476 amove 285 333 aline 380 523 aline 476 619 aline 571 666 aline 666 666 aline 761 571 aline 761 428 aline 714 190 aline 571 -334 stroke dfont endchar dfont char=104 amove 47 476 aline 95 571 aline 190 666 aline 285 666 aline 333 619 aline 333 523 aline 285 285 aline 285 142 aline 333 47 aline 380 -1 aline 476 -1 aline 571 47 aline 666 190 aline 714 285 aline 761 428 aline 809 666 aline 809 809 aline 761 952 aline 666 1000 aline 571 1000 aline 523 904 aline 523 809 aline 571 666 aline 666 523 aline 761 428 aline 904 333 stroke dfont endchar dfont char=105 amove 285 666 aline 190 333 aline 142 142 aline 142 47 aline 190 -1 aline 285 -1 aline 380 95 aline 428 190 stroke dfont endchar dfont char=106 amove 95 0 aline 285 666 amove 238 380 aline 285 380 aline 380 428 aline 571 619 aline 666 666 aline 714 666 aline 761 619 amove 238 380 aline 333 333 aline 380 285 aline 476 47 aline 523 0 aline 571 0 aline 619 47 stroke dfont endchar dfont char=107 amove 95 0 aline 380 666 amove 47 1000 aline 142 1000 aline 238 952 aline 285 904 aline 666 -1 stroke dfont endchar dfont char=108 amove 47 -334 aline 333 666 amove 285 476 aline 238 238 aline 238 95 aline 333 -1 aline 428 -1 aline 523 47 aline 619 142 aline 714 333 amove 952 190 aline 904 95 aline 809 -1 aline 714 -1 aline 666 47 aline 666 142 aline 714 333 aline 809 666 stroke dfont endchar dfont char=109 amove 142 0 aline 190 142 aline 238 380 aline 285 666 aline 142 666 amove 761 666 aline 714 523 aline 666 428 aline 571 285 aline 428 142 aline 285 47 aline 142 0 stroke dfont endchar dfont char=110 amove 285 -334 aline 380 -334 aline 476 -286 aline 476 -191 aline 428 -143 aline 238 -48 aline 142 47 aline 142 142 aline 190 238 aline 285 285 aline 476 333 amove 571 333 aline 476 333 aline 333 380 aline 238 476 aline 238 571 aline 285 666 aline 380 714 aline 523 761 amove 666 761 aline 523 761 aline 380 809 aline 333 857 aline 333 904 aline 380 952 aline 476 1000 stroke dfont endchar dfont char=111 amove 380 666 aline 285 619 aline 190 523 aline 142 380 aline 142 238 aline 190 95 aline 238 47 aline 333 -1 aline 428 -1 aline 523 47 aline 619 142 aline 666 285 aline 666 428 aline 619 571 aline 571 619 aline 476 666 aline 380 666 stroke dfont endchar dfont char=112 amove 238 0 aline 428 666 amove 666 666 aline 714 380 aline 761 142 aline 809 -1 amove 952 666 aline 333 666 aline 190 619 aline 95 523 stroke dfont endchar dfont char=113 amove 0 -334 aline 190 380 aline 238 523 aline 333 619 aline 428 666 aline 523 666 aline 619 619 aline 666 571 aline 714 428 aline 714 285 aline 666 142 aline 571 47 aline 476 -1 aline 380 -1 aline 285 47 aline 238 95 aline 190 238 aline 190 380 stroke dfont endchar dfont char=114 amove 476 666 aline 571 619 aline 619 571 aline 666 428 aline 666 285 aline 619 142 aline 523 47 aline 428 -1 aline 333 -1 aline 238 47 aline 190 95 aline 142 238 aline 142 380 aline 190 523 aline 285 619 aline 380 666 aline 857 666 stroke dfont endchar dfont char=115 amove 380 0 aline 523 666 amove 857 666 aline 333 666 aline 190 619 aline 95 523 stroke dfont endchar dfont char=116 amove 47 476 aline 95 571 aline 190 666 aline 285 666 aline 333 619 aline 333 523 aline 238 238 aline 238 95 aline 333 -1 aline 428 -1 aline 571 47 aline 666 142 aline 761 333 aline 809 523 aline 809 666 stroke dfont endchar dfont char=117 amove 285 -334 aline 428 142 aline 523 380 aline 619 571 aline 714 666 aline 809 666 aline 904 571 aline 904 428 aline 857 285 aline 761 142 aline 619 47 aline 476 0 aline 333 0 aline 238 47 aline 190 95 aline 142 190 aline 142 333 aline 190 476 aline 285 571 aline 380 619 stroke dfont endchar dfont char=118 amove 47 -334 aline 95 -239 aline 190 -96 aline 666 428 aline 761 571 aline 809 666 amove 95 666 aline 190 666 aline 285 571 aline 571 -239 aline 666 -334 aline 761 -334 stroke dfont endchar dfont char=119 amove 47 476 aline 95 571 aline 190 666 aline 285 666 aline 333 619 aline 333 523 aline 285 285 aline 285 142 aline 333 47 aline 428 -1 aline 523 -1 aline 666 47 aline 761 142 aline 857 285 aline 952 523 aline 1000 666 amove 761 1000 aline 380 -334 stroke dfont endchar dfont char=120 amove 523 190 aline 428 47 aline 333 0 aline 238 0 aline 190 47 aline 142 190 aline 142 333 aline 190 476 aline 285 619 aline 380 666 amove 571 380 aline 523 190 aline 571 47 aline 619 0 aline 714 0 aline 809 47 aline 904 190 aline 952 333 aline 952 476 aline 904 619 aline 857 666 stroke dfont endchar dfont char=121 amove 428 285 aline 380 380 aline 285 428 aline 190 428 aline 95 380 aline 47 333 aline 0 238 aline 0 142 aline 47 47 aline 142 0 aline 238 0 aline 333 47 aline 380 142 aline 476 428 aline 428 190 aline 428 47 aline 476 0 aline 523 0 aline 619 47 aline 666 95 aline 761 238 stroke dfont endchar dfont char=122 amove 0 238 aline 95 380 aline 238 619 aline 285 714 aline 333 857 aline 333 952 aline 285 1000 aline 190 952 aline 142 857 aline 95 666 aline 47 333 aline 47 47 aline 95 -1 aline 142 -1 aline 238 47 aline 333 142 aline 380 285 aline 380 428 aline 428 238 aline 476 190 aline 571 190 aline 666 238 stroke dfont endchar dfont char=123 amove 380 238 aline 333 95 aline 333 -96 aline 380 -239 amove 476 -334 aline 333 -191 aline 285 -48 aline 285 47 aline 333 190 aline 428 285 aline 428 333 aline 238 428 aline 428 523 aline 428 571 aline 333 666 aline 285 809 aline 285 904 aline 333 1047 aline 476 1190 amove 380 1095 aline 333 952 aline 333 761 aline 380 619 stroke dfont endchar dfont char=124 amove 190 1190 aline 190 -334 stroke dfont endchar dfont char=125 amove 238 -334 aline 380 -191 aline 428 -48 aline 428 47 aline 380 190 aline 285 285 aline 285 333 aline 476 428 aline 285 523 aline 285 571 aline 380 666 aline 428 809 aline 428 904 aline 380 1047 aline 238 1190 amove 333 1095 aline 380 952 aline 380 761 aline 333 619 amove 333 238 aline 380 95 aline 380 -96 aline 333 -239 stroke dfont endchar dfont char=126 amove 285 1000 aline 190 952 aline 142 857 aline 142 761 aline 190 666 aline 285 619 aline 380 619 aline 476 666 aline 523 761 aline 523 857 aline 476 952 aline 380 1000 aline 285 1000 stroke dfont endchar gle-graphics-4.2.4c/src/fonts/texcmex.afm0000664000000000000000000001464511676336540017040 0ustar rootrootStartFontMetrics 2.0 Comment Made from TEX tfm file using TFMTOAFM.bas FontName CMEX10 EncodingScheme TEXENCODING FullName CMEX10 FamilyName CMEX10 Weight Medium ItalicAngle 0 IsFixedPitch false UnderlinePosition -97 UnderlineThickness 73 FontBBox 0 -300 1001 1001 CapHeight 729 XHeight 151 Descender -219 Ascender 729 StartCharMetrics 127 C 1 ; WX 458 ; N C1 ; B 0 -1160 458 39 ; C 2 ; WX 416 ; N C2 ; B 0 -1160 416 39 ; C 3 ; WX 416 ; N C3 ; B 0 -1160 416 39 ; C 4 ; WX 472 ; N C4 ; B 0 -1160 472 39 ; C 5 ; WX 472 ; N C5 ; B 0 -1160 472 39 ; C 6 ; WX 472 ; N C6 ; B 0 -1160 472 39 ; C 7 ; WX 472 ; N C7 ; B 0 -1160 472 39 ; C 8 ; WX 583 ; N C8 ; B 0 -1160 583 39 ; C 9 ; WX 583 ; N C9 ; B 0 -1160 583 39 ; C 10 ; WX 472 ; N C10 ; B 0 -1160 472 39 ; C 11 ; WX 472 ; N C11 ; B 0 -1160 472 39 ; C 12 ; WX 333 ; N C12 ; B 0 -600 333 0 ; C 13 ; WX 555 ; N C13 ; B 0 -600 555 0 ; C 14 ; WX 577 ; N C14 ; B 0 -1160 577 39 ; C 15 ; WX 577 ; N C15 ; B 0 -1160 577 39 ; C 16 ; WX 597 ; N C16 ; B 0 -1760 597 39 ; C 17 ; WX 597 ; N C17 ; B 0 -1760 597 39 ; C 18 ; WX 736 ; N C18 ; B 0 -2360 736 39 ; C 19 ; WX 736 ; N C19 ; B 0 -2360 736 39 ; C 20 ; WX 527 ; N C20 ; B 0 -2360 527 39 ; C 21 ; WX 527 ; N C21 ; B 0 -2360 527 39 ; C 22 ; WX 583 ; N C22 ; B 0 -2360 583 39 ; C 23 ; WX 583 ; N C23 ; B 0 -2360 583 39 ; C 24 ; WX 583 ; N C24 ; B 0 -2360 583 39 ; C 25 ; WX 583 ; N C25 ; B 0 -2360 583 39 ; C 26 ; WX 750 ; N C26 ; B 0 -2360 750 39 ; C 27 ; WX 750 ; N C27 ; B 0 -2360 750 39 ; C 28 ; WX 750 ; N C28 ; B 0 -2360 750 39 ; C 29 ; WX 750 ; N C29 ; B 0 -2360 750 39 ; C 30 ; WX 1044 ; N C30 ; B 0 -2360 1044 39 ; C 31 ; WX 1044 ; N C31 ; B 0 -2360 1044 39 ; C 32 ; WX 0 ; N C32 ; B 0 -2960 0 39 ; C 33 ; WX 791 ; N C33 ; B 0 -2960 791 39 ; C 34 ; WX 583 ; N C34 ; B 0 -2960 583 39 ; C 35 ; WX 583 ; N C35 ; B 0 -2960 583 39 ; C 36 ; WX 638 ; N C36 ; B 0 -2960 638 39 ; C 37 ; WX 638 ; N C37 ; B 0 -2960 638 39 ; C 38 ; WX 638 ; N C38 ; B 0 -2960 638 39 ; C 39 ; WX 638 ; N C39 ; B 0 -2960 638 39 ; C 40 ; WX 805 ; N C40 ; B 0 -2960 805 39 ; C 41 ; WX 805 ; N C41 ; B 0 -2960 805 39 ; C 42 ; WX 805 ; N C42 ; B 0 -2960 805 39 ; C 43 ; WX 805 ; N C43 ; B 0 -2960 805 39 ; C 44 ; WX 1277 ; N C44 ; B 0 -2960 1277 39 ; C 45 ; WX 1277 ; N C45 ; B 0 -2960 1277 39 ; C 46 ; WX 811 ; N C46 ; B 0 -1760 811 39 ; C 47 ; WX 811 ; N C47 ; B 0 -1760 811 39 ; C 48 ; WX 875 ; N C48 ; B 0 -1760 875 39 ; C 49 ; WX 875 ; N C49 ; B 0 -1760 875 39 ; C 50 ; WX 666 ; N C50 ; B 0 -1760 666 39 ; C 51 ; WX 666 ; N C51 ; B 0 -1760 666 39 ; C 52 ; WX 666 ; N C52 ; B 0 -1760 666 39 ; C 53 ; WX 666 ; N C53 ; B 0 -1760 666 39 ; C 54 ; WX 666 ; N C54 ; B 0 -600 666 0 ; C 55 ; WX 666 ; N C55 ; B 0 -600 666 0 ; C 56 ; WX 888 ; N C56 ; B 0 -900 888 0 ; C 57 ; WX 888 ; N C57 ; B 0 -900 888 0 ; C 58 ; WX 888 ; N C58 ; B 0 -900 888 0 ; C 59 ; WX 888 ; N C59 ; B 0 -900 888 0 ; C 60 ; WX 888 ; N C60 ; B 0 -1800 888 0 ; C 61 ; WX 888 ; N C61 ; B 0 -1800 888 0 ; C 62 ; WX 888 ; N C62 ; B 0 -300 888 0 ; C 63 ; WX 666 ; N C63 ; B 0 -600 666 0 ; C 64 ; WX 875 ; N C64 ; B 0 -1760 875 39 ; C 65 ; WX 875 ; N A ; B 0 -1760 875 39 ; C 66 ; WX 875 ; N B ; B 0 -600 875 0 ; C 67 ; WX 875 ; N C ; B 0 -600 875 0 ; C 68 ; WX 611 ; N D ; B 0 -1760 611 39 ; C 69 ; WX 611 ; N E ; B 0 -1760 611 39 ; C 70 ; WX 833 ; N F ; B 0 -1000 833 0 ; C 71 ; WX 1111 ; N G ; B 0 -1500 1111 100 ; C 72 ; WX 472 ; N H ; B 0 -1111 472 0 ; C 73 ; WX 555 ; N I ; B 0 -2222 555 0 ; C 74 ; WX 1111 ; N J ; B 0 -1000 1111 0 ; C 75 ; WX 1511 ; N K ; B 0 -1500 1511 100 ; C 76 ; WX 1111 ; N L ; B 0 -1000 1111 0 ; C 77 ; WX 1511 ; N M ; B 0 -1500 1511 100 ; C 78 ; WX 1111 ; N N ; B 0 -1000 1111 0 ; C 79 ; WX 1511 ; N O ; B 0 -1500 1511 100 ; C 80 ; WX 1055 ; N P ; B 0 -1000 1055 0 ; C 81 ; WX 944 ; N Q ; B 0 -1000 944 0 ; C 82 ; WX 472 ; N R ; B 0 -1111 472 0 ; C 83 ; WX 833 ; N S ; B 0 -1000 833 0 ; C 84 ; WX 833 ; N T ; B 0 -1000 833 0 ; C 85 ; WX 833 ; N U ; B 0 -1000 833 0 ; C 86 ; WX 833 ; N V ; B 0 -1000 833 0 ; C 87 ; WX 833 ; N W ; B 0 -1000 833 0 ; C 88 ; WX 1444 ; N X ; B 0 -1500 1444 100 ; C 89 ; WX 1277 ; N Y ; B 0 -1500 1277 100 ; C 90 ; WX 555 ; N Z ; B 0 -2222 555 0 ; C 91 ; WX 1111 ; N C91 ; B 0 -1500 1111 100 ; C 92 ; WX 1111 ; N C92 ; B 0 -1500 1111 100 ; C 93 ; WX 1111 ; N C93 ; B 0 -1500 1111 100 ; C 94 ; WX 1111 ; N C94 ; B 0 -1500 1111 100 ; C 95 ; WX 1111 ; N C95 ; B 0 -1500 1111 100 ; C 96 ; WX 944 ; N C96 ; B 0 -1000 944 0 ; C 97 ; WX 1277 ; N a ; B 0 -1500 1277 100 ; C 98 ; WX 555 ; N b ; B 0 0 555 722 ; C 99 ; WX 1000 ; N c ; B 0 0 1000 750 ; C 100 ; WX 1444 ; N d ; B 0 0 1444 750 ; C 101 ; WX 555 ; N e ; B 0 0 555 722 ; C 102 ; WX 1000 ; N f ; B 0 0 1000 750 ; C 103 ; WX 1444 ; N g ; B 0 0 1444 750 ; C 104 ; WX 472 ; N h ; B 0 -1760 472 39 ; C 105 ; WX 472 ; N i ; B 0 -1760 472 39 ; C 106 ; WX 527 ; N j ; B 0 -1760 527 39 ; C 107 ; WX 527 ; N k ; B 0 -1760 527 39 ; C 108 ; WX 527 ; N l ; B 0 -1760 527 39 ; C 109 ; WX 527 ; N m ; B 0 -1760 527 39 ; C 110 ; WX 666 ; N n ; B 0 -1760 666 39 ; C 111 ; WX 666 ; N o ; B 0 -1760 666 39 ; C 112 ; WX 1000 ; N p ; B 0 -1160 1000 39 ; C 113 ; WX 1000 ; N q ; B 0 -1760 1000 39 ; C 114 ; WX 1000 ; N r ; B 0 -2360 1000 39 ; C 115 ; WX 1000 ; N s ; B 0 -2960 1000 39 ; C 116 ; WX 1055 ; N t ; B 0 -1800 1055 0 ; C 117 ; WX 1055 ; N u ; B 0 -600 1055 0 ; C 118 ; WX 1055 ; N v ; B 0 -560 1055 39 ; C 119 ; WX 777 ; N w ; B 0 -600 777 0 ; C 120 ; WX 666 ; N x ; B 0 -600 666 0 ; C 121 ; WX 666 ; N y ; B 0 -600 666 0 ; C 122 ; WX 450 ; N z ; B 0 0 450 119 ; C 123 ; WX 450 ; N C123 ; B 0 0 450 119 ; C 124 ; WX 450 ; N C124 ; B 0 0 450 119 ; C 125 ; WX 450 ; N C125 ; B 0 0 450 119 ; C 126 ; WX 777 ; N C126 ; B 0 -600 777 0 ; C 127 ; WX 777 ; N C127 ; B 0 -600 777 0 ; EndCharMetrics StartKernData StartKernPairs 0 EndKernPairs EndKernData EndFontMetrics gle-graphics-4.2.4c/src/fonts/plcs.gle0000664000000000000000000012522111676336540016321 0ustar rootrootdfont design= 1428 dfont char=33 amove 238 1000 aline 190 904 aline 238 333 aline 285 904 aline 238 1000 amove 238 904 aline 238 619 amove 238 95 aline 190 47 aline 238 0 aline 285 47 aline 238 95 stroke dfont endchar dfont char=34 amove 142 666 aline 190 1000 amove 238 1000 aline 142 666 amove 523 666 aline 571 1000 amove 619 1000 aline 523 666 stroke dfont endchar dfont char=35 amove 190 0 aline 952 0 amove 571 0 aline 571 809 amove 190 428 aline 952 428 stroke dfont endchar dfont char=36 amove 380 428 aline 380 1000 amove 142 857 aline 619 571 amove 619 857 aline 142 571 stroke dfont endchar dfont char=37 amove 142 0 aline 1000 1000 aline 904 952 aline 761 904 aline 619 904 aline 476 952 aline 380 1000 aline 285 1000 aline 190 952 aline 142 857 aline 142 761 aline 238 666 aline 333 666 aline 428 714 aline 476 809 aline 476 904 aline 380 1000 amove 809 333 aline 714 285 aline 666 190 aline 666 95 aline 761 0 aline 857 0 aline 952 47 aline 1000 142 aline 1000 238 aline 904 333 aline 809 333 stroke dfont endchar dfont char=38 amove 190 428 aline 952 428 amove 952 809 aline 190 809 amove 571 809 aline 571 0 stroke dfont endchar dfont char=39 amove 142 666 aline 190 1000 amove 238 1000 aline 142 666 stroke dfont endchar dfont char=40 amove 428 -239 aline 333 -48 aline 285 95 aline 238 333 aline 238 523 aline 285 761 aline 333 904 aline 428 1095 amove 523 1190 aline 428 1095 aline 333 952 aline 238 761 aline 190 523 aline 190 333 aline 238 95 aline 333 -96 aline 428 -239 aline 523 -334 stroke dfont endchar dfont char=41 amove 238 -239 aline 333 -48 aline 380 95 aline 428 333 aline 428 523 aline 380 761 aline 333 904 aline 238 1095 amove 142 1190 aline 238 1095 aline 333 952 aline 428 761 aline 476 523 aline 476 333 aline 428 95 aline 333 -96 aline 238 -239 aline 142 -334 stroke dfont endchar dfont char=42 amove 190 -334 aline 523 428 aline 190 1190 stroke dfont endchar dfont char=43 amove 380 238 aline 333 95 aline 333 -96 aline 380 -239 amove 476 -334 aline 333 -191 aline 285 -48 aline 285 47 aline 333 190 aline 428 285 aline 428 333 aline 238 428 aline 428 523 aline 428 571 aline 333 666 aline 285 809 aline 285 904 aline 333 1047 aline 476 1190 amove 380 1095 aline 333 952 aline 333 761 aline 380 619 stroke dfont endchar dfont char=44 amove 238 0 aline 190 47 aline 238 95 aline 285 47 aline 285 -48 aline 238 -143 aline 190 -191 stroke dfont endchar dfont char=45 amove 142 -334 aline 476 -334 aline 476 1190 aline 142 1190 amove 428 1190 aline 428 -334 stroke dfont endchar dfont char=46 amove 238 95 aline 190 47 aline 238 0 aline 285 47 aline 238 95 stroke dfont endchar dfont char=47 amove 95 -334 aline 952 1190 stroke dfont endchar dfont char=48 amove 428 0 aline 333 47 aline 285 95 aline 238 190 aline 190 428 aline 190 571 aline 238 809 aline 285 904 aline 333 952 aline 428 1000 aline 523 1000 aline 666 952 aline 761 809 aline 809 571 aline 809 428 aline 761 190 aline 666 47 aline 523 0 aline 428 0 aline 285 47 aline 190 190 aline 142 428 aline 142 571 aline 190 809 aline 285 952 aline 428 1000 amove 523 1000 aline 619 952 aline 666 904 aline 714 809 aline 761 571 aline 761 428 aline 714 190 aline 666 95 aline 619 47 aline 523 0 stroke dfont endchar dfont char=49 amove 285 0 aline 714 0 amove 523 0 aline 523 1000 aline 380 857 aline 285 809 amove 476 952 aline 476 0 stroke dfont endchar dfont char=50 amove 142 0 aline 142 142 aline 190 285 aline 285 380 aline 380 428 aline 619 523 aline 761 619 aline 809 714 aline 809 809 aline 761 904 aline 714 952 aline 571 1000 aline 380 1000 aline 238 952 aline 190 904 aline 142 809 aline 142 761 aline 190 714 aline 238 761 aline 190 809 amove 571 1000 aline 666 952 aline 714 904 aline 761 809 aline 761 714 aline 714 619 aline 571 523 aline 380 428 amove 285 142 aline 523 0 aline 714 0 aline 761 47 aline 809 142 aline 809 238 amove 809 142 aline 761 95 aline 666 47 aline 523 47 aline 285 142 aline 190 142 aline 142 95 stroke dfont endchar dfont char=51 amove 190 190 aline 238 238 aline 190 285 aline 142 238 aline 142 190 aline 190 95 aline 238 47 aline 380 0 aline 571 0 aline 714 47 aline 761 95 aline 809 190 aline 809 333 aline 761 428 aline 666 523 aline 571 571 aline 666 619 aline 714 714 aline 714 857 aline 666 952 aline 571 1000 amove 190 809 aline 238 761 aline 190 714 aline 142 761 aline 142 809 aline 190 904 aline 238 952 aline 380 1000 aline 571 1000 aline 714 952 aline 761 857 aline 761 714 aline 714 619 aline 571 571 aline 428 571 amove 714 476 aline 761 333 aline 761 190 aline 714 95 aline 666 47 aline 571 -1 stroke dfont endchar dfont char=52 amove 428 0 aline 761 0 amove 619 0 aline 619 1000 aline 95 285 aline 857 285 amove 571 0 aline 571 904 stroke dfont endchar dfont char=53 amove 190 190 aline 238 238 aline 190 285 aline 142 238 aline 142 190 aline 190 95 aline 238 47 aline 380 0 aline 523 0 aline 666 47 aline 761 142 aline 809 285 aline 809 380 aline 761 523 aline 666 619 aline 523 666 aline 380 666 aline 238 619 aline 142 523 aline 238 1000 aline 714 1000 aline 476 952 aline 238 952 amove 523 666 aline 619 619 aline 714 523 aline 761 380 aline 761 285 aline 714 142 aline 619 47 aline 523 0 stroke dfont endchar dfont char=54 amove 190 333 aline 238 476 aline 333 571 aline 476 619 aline 523 619 aline 666 571 aline 761 476 aline 809 333 aline 809 285 aline 761 142 aline 666 47 aline 523 -1 aline 428 -1 aline 285 47 aline 190 142 aline 142 285 aline 142 571 aline 190 761 aline 238 857 aline 333 952 aline 476 1000 aline 619 1000 aline 714 952 aline 761 857 aline 761 809 aline 714 761 aline 666 809 aline 714 857 amove 476 1000 aline 380 952 aline 285 857 aline 238 761 aline 190 571 aline 190 285 aline 238 142 aline 333 47 aline 428 0 amove 523 0 aline 619 47 aline 714 142 aline 761 285 aline 761 333 aline 714 476 aline 619 571 aline 523 619 stroke dfont endchar dfont char=55 amove 428 0 aline 428 238 aline 476 380 aline 523 476 aline 761 714 amove 619 857 aline 380 952 aline 285 952 aline 190 904 amove 142 999 aline 142 714 amove 142 809 aline 190 904 aline 285 999 aline 380 999 aline 619 857 aline 714 857 aline 761 904 aline 809 999 aline 809 857 aline 761 714 aline 571 476 aline 523 380 aline 476 238 aline 476 -1 stroke dfont endchar dfont char=56 amove 380 0 aline 285 47 aline 238 95 aline 190 190 aline 190 380 aline 238 476 aline 285 523 aline 380 571 aline 285 619 aline 238 714 aline 238 857 aline 285 952 aline 380 1000 aline 571 1000 aline 714 952 aline 761 857 aline 761 714 aline 714 619 aline 571 571 aline 380 571 aline 238 619 aline 190 714 aline 190 857 aline 238 952 aline 380 1000 amove 571 1000 aline 666 952 aline 714 857 aline 714 714 aline 666 619 aline 571 571 aline 714 523 aline 761 476 aline 809 380 aline 809 190 aline 761 95 aline 714 47 aline 571 -1 aline 380 -1 aline 238 47 aline 190 95 aline 142 190 aline 142 380 aline 190 476 aline 238 523 aline 380 571 amove 571 571 aline 666 523 aline 714 476 aline 761 380 aline 761 190 aline 714 95 aline 666 47 aline 571 -1 stroke dfont endchar dfont char=57 amove 761 666 aline 714 523 aline 619 428 aline 476 380 aline 428 380 aline 285 428 aline 190 523 aline 142 666 aline 142 714 aline 190 857 aline 285 952 aline 428 1000 aline 523 1000 aline 666 952 aline 761 857 aline 809 714 aline 809 428 aline 761 238 aline 714 142 aline 619 47 aline 476 0 aline 333 0 aline 238 47 aline 190 142 aline 190 190 aline 238 238 aline 285 190 aline 238 142 amove 428 380 aline 333 428 aline 238 523 aline 190 666 aline 190 714 aline 238 857 aline 333 952 aline 428 1000 amove 523 1000 aline 619 952 aline 714 857 aline 761 714 aline 761 428 aline 714 238 aline 666 142 aline 571 47 aline 476 0 stroke dfont endchar dfont char=58 amove 238 666 aline 190 619 aline 238 571 aline 285 619 aline 238 666 amove 238 95 aline 190 47 aline 238 -1 aline 285 47 aline 238 95 stroke dfont endchar dfont char=59 amove 238 666 aline 190 619 aline 238 571 aline 285 619 aline 238 666 amove 238 0 aline 190 47 aline 238 95 aline 285 47 aline 285 -48 aline 238 -143 aline 190 -191 stroke dfont endchar dfont char=60 amove 952 857 aline 190 428 aline 952 0 stroke dfont endchar dfont char=61 amove 238 -334 aline 380 -191 aline 428 -48 aline 428 47 aline 380 190 aline 285 285 aline 285 333 aline 476 428 aline 285 523 aline 285 571 aline 380 666 aline 428 809 aline 428 904 aline 380 1047 aline 238 1190 amove 333 1095 aline 380 952 aline 380 761 aline 333 619 amove 333 238 aline 380 95 aline 380 -96 aline 333 -239 stroke dfont endchar dfont char=62 amove 190 0 aline 952 428 aline 190 857 stroke dfont endchar dfont char=63 amove 428 95 aline 380 47 aline 428 0 aline 476 47 aline 428 95 amove 428 333 aline 428 476 aline 619 571 aline 666 619 aline 714 714 aline 714 809 aline 666 904 aline 619 952 aline 476 1000 aline 333 1000 aline 238 952 aline 190 904 aline 142 809 aline 142 761 aline 190 714 aline 238 761 aline 190 809 amove 476 1000 aline 571 952 aline 619 904 aline 666 809 aline 666 714 aline 619 619 aline 523 523 stroke dfont endchar dfont char=64 amove 523 238 aline 476 285 aline 428 380 aline 428 523 aline 476 666 aline 571 761 amove 857 761 aline 809 380 aline 809 285 aline 904 238 aline 999 238 aline 1095 333 aline 1142 476 aline 1142 571 aline 1095 714 aline 1047 809 aline 952 904 aline 857 952 aline 714 1000 aline 571 1000 aline 428 952 aline 333 904 aline 238 809 aline 190 714 aline 142 571 aline 142 428 aline 190 285 aline 238 190 aline 333 95 aline 428 47 aline 571 0 aline 714 0 aline 857 47 aline 952 95 aline 1000 142 amove 904 238 aline 857 285 aline 857 380 aline 904 761 amove 857 619 aline 809 714 aline 714 761 aline 571 761 aline 476 714 aline 428 666 aline 380 523 aline 380 380 aline 428 285 aline 523 238 aline 666 238 aline 761 285 aline 809 380 stroke dfont endchar dfont char=65 amove 0 95 aline 47 142 aline 0 190 aline -48 142 aline -48 47 aline 0 0 aline 95 0 aline 190 47 aline 333 190 aline 476 380 aline 571 523 aline 714 761 aline 809 904 aline 904 1000 aline 857 809 aline 761 333 aline 714 0 aline 714 95 aline 666 238 aline 619 333 aline 523 428 aline 428 476 aline 333 476 aline 285 428 aline 285 333 aline 333 190 aline 476 47 aline 619 0 aline 809 0 aline 904 47 amove 761 0 aline 904 1000 stroke dfont endchar dfont char=66 amove 95 95 aline 142 142 aline 95 190 aline 47 142 aline 47 47 aline 95 0 aline 190 0 aline 333 47 aline 428 142 aline 476 238 aline 523 380 aline 619 761 aline 666 904 amove 714 952 aline 666 904 aline 619 809 aline 523 571 aline 428 285 aline 380 190 aline 285 47 aline 190 0 amove 619 285 aline 571 142 aline 571 47 aline 619 0 aline 714 0 aline 809 47 aline 857 95 aline 904 238 aline 904 380 aline 857 476 aline 809 523 aline 666 571 aline 761 523 aline 809 476 aline 857 380 aline 857 238 aline 809 95 aline 714 0 amove 571 571 aline 666 571 aline 857 619 aline 952 666 aline 1000 761 aline 1000 857 aline 952 952 aline 857 1000 aline 571 1000 aline 428 952 aline 333 904 aline 238 809 aline 190 714 aline 190 619 aline 238 571 aline 333 571 aline 380 619 aline 428 714 amove 857 619 aline 904 666 aline 952 761 aline 952 857 aline 904 952 aline 857 1000 stroke dfont endchar dfont char=67 amove 380 0 aline 285 47 aline 238 142 aline 238 285 aline 285 476 aline 380 666 aline 476 809 aline 619 952 aline 714 1000 amove 142 904 aline 95 809 aline 95 714 aline 142 619 aline 285 571 aline 428 571 aline 619 619 aline 714 666 aline 809 761 aline 857 857 aline 857 952 aline 809 1000 aline 714 1000 aline 571 952 aline 428 809 aline 333 666 aline 238 476 aline 190 285 aline 190 142 aline 238 47 aline 380 0 aline 476 0 aline 619 47 aline 714 142 aline 761 238 aline 761 333 aline 714 428 aline 619 428 aline 523 380 aline 476 285 stroke dfont endchar dfont char=68 amove 190 0 aline 285 47 aline 380 190 aline 428 285 aline 523 571 aline 619 809 aline 666 904 aline 714 952 amove 666 904 aline 619 761 aline 523 380 aline 476 238 aline 428 142 aline 333 47 aline 190 0 aline 95 0 aline 47 47 aline 47 142 aline 95 190 aline 190 190 aline 285 142 aline 380 47 aline 476 0 aline 619 0 aline 714 47 aline 809 142 aline 904 333 aline 952 571 aline 952 714 aline 904 857 aline 809 952 aline 714 1000 aline 476 1000 aline 333 952 aline 238 857 aline 190 761 aline 190 666 aline 238 619 aline 333 619 aline 380 666 aline 428 761 stroke dfont endchar dfont char=69 amove 190 47 aline 142 142 aline 142 333 aline 190 428 aline 285 523 aline 380 571 amove 476 571 aline 380 619 aline 333 714 aline 333 809 aline 380 904 aline 428 952 aline 523 1000 aline 666 1000 aline 761 952 aline 809 857 aline 809 761 aline 761 666 aline 666 666 aline 619 714 aline 619 809 aline 666 857 amove 523 1000 aline 428 904 aline 380 809 aline 380 666 aline 476 571 aline 380 571 aline 238 523 aline 142 428 aline 95 333 aline 95 190 aline 142 95 aline 190 47 aline 285 0 aline 428 0 aline 571 47 aline 666 142 aline 714 238 aline 714 333 aline 666 428 aline 571 428 aline 476 380 aline 428 285 stroke dfont endchar dfont char=70 amove 95 95 aline 142 142 aline 95 190 aline 47 142 aline 47 95 aline 95 47 aline 190 0 aline 285 0 aline 428 47 aline 523 142 aline 571 238 aline 619 380 aline 714 761 aline 761 904 aline 809 952 aline 952 1000 aline 476 1000 aline 333 952 aline 238 857 aline 190 761 aline 190 666 aline 238 571 aline 333 571 aline 428 619 aline 476 714 amove 571 1000 aline 761 952 aline 809 952 amove 761 904 aline 714 809 aline 619 571 aline 523 285 aline 476 190 aline 380 47 aline 285 0 amove 380 380 aline 428 428 aline 523 476 aline 714 476 aline 809 523 aline 904 666 aline 809 333 stroke dfont endchar dfont char=71 amove 142 142 aline 190 190 aline 142 238 aline 95 190 aline 95 142 aline 142 47 aline 238 0 aline 380 0 aline 571 47 aline 666 95 aline 761 190 aline 857 380 aline 904 571 aline 857 476 aline 761 380 aline 666 333 aline 571 333 aline 476 380 aline 428 476 aline 428 619 aline 476 761 aline 523 857 aline 619 952 aline 714 1000 aline 761 1000 aline 809 952 aline 809 904 aline 761 761 aline 619 619 aline 523 571 aline 380 523 aline 238 523 aline 142 571 aline 95 666 aline 95 761 aline 142 857 amove 761 1000 aline 666 952 aline 571 857 aline 523 761 aline 476 619 aline 476 428 aline 571 333 amove 857 380 aline 761 238 aline 666 142 aline 523 47 aline 380 0 stroke dfont endchar dfont char=72 amove 47 95 aline 95 142 aline 47 190 aline 0 142 aline 0 47 aline 47 0 aline 142 0 aline 238 47 aline 285 95 aline 333 190 aline 428 476 aline 571 1000 aline 428 1000 aline 285 952 aline 238 857 aline 238 761 aline 285 714 amove 190 333 aline 238 380 aline 333 428 aline 761 571 aline 857 619 aline 1000 714 aline 1095 809 aline 1142 904 aline 1142 952 aline 1095 1000 aline 1047 1000 aline 952 952 aline 857 809 aline 809 714 aline 714 428 aline 666 238 aline 666 95 aline 761 0 aline 809 0 aline 904 47 aline 1000 142 amove 761 0 aline 714 95 aline 714 238 aline 761 428 aline 857 714 aline 952 904 aline 1047 1000 amove 571 1000 aline 428 571 aline 380 428 aline 285 190 aline 238 95 aline 142 0 stroke dfont endchar dfont char=73 amove 47 95 aline 95 142 aline 47 190 aline 0 142 aline 0 47 aline 47 0 aline 142 0 aline 285 47 aline 380 142 aline 428 238 aline 523 523 aline 619 809 aline 666 904 aline 761 1000 aline 571 1000 aline 380 952 aline 285 904 aline 238 809 aline 238 714 aline 285 619 aline 380 571 aline 523 571 aline 666 619 aline 761 714 amove 666 904 aline 571 761 aline 476 523 aline 380 285 aline 333 190 aline 238 47 aline 142 0 stroke dfont endchar dfont char=74 amove 238 -96 aline 333 95 aline 476 523 aline 571 761 aline 666 904 aline 761 1000 amove 761 666 aline 666 571 aline 523 523 aline 380 523 aline 285 571 aline 238 666 aline 238 761 aline 285 857 aline 380 952 aline 571 1000 aline 761 1000 aline 666 857 aline 619 761 aline 476 333 aline 380 142 aline 333 47 aline 238 -96 aline 190 -143 aline 95 -191 aline 47 -143 aline 47 -48 aline 95 47 aline 190 142 aline 285 190 aline 428 238 aline 619 285 stroke dfont endchar dfont char=75 amove 47 95 aline 95 142 aline 47 190 aline 0 142 aline 0 47 aline 47 0 aline 142 0 aline 238 47 aline 285 95 aline 333 190 aline 428 476 aline 571 1000 aline 476 1000 aline 333 952 aline 238 857 aline 238 761 aline 285 714 amove 476 571 aline 619 619 aline 714 666 aline 809 761 aline 952 952 amove 1095 952 aline 1047 904 aline 1095 857 aline 1142 904 aline 1142 952 aline 1095 1000 aline 1047 1000 aline 952 952 aline 809 714 aline 761 666 aline 666 619 aline 476 571 aline 619 523 aline 666 428 aline 714 95 aline 761 0 amove 1000 142 aline 904 47 aline 809 0 aline 761 0 aline 666 95 aline 619 428 aline 571 523 aline 476 571 amove 571 1000 aline 428 571 aline 380 428 aline 285 190 aline 238 95 aline 142 0 stroke dfont endchar dfont char=76 amove 95 0 aline 190 47 aline 285 190 aline 333 285 aline 523 761 aline 619 904 aline 666 952 aline 761 1000 aline 809 1000 aline 857 952 aline 857 904 aline 809 761 aline 666 619 aline 571 571 aline 428 523 aline 285 523 aline 190 571 aline 142 666 aline 142 761 aline 190 857 amove 619 904 aline 523 714 aline 428 380 aline 380 238 aline 333 142 aline 238 47 aline 95 -1 aline 0 -1 aline -48 47 aline -48 142 aline 0 190 aline 95 190 aline 190 142 aline 333 47 aline 428 -1 aline 571 -1 aline 666 47 aline 761 142 stroke dfont endchar dfont char=77 amove -48 95 aline -1 142 aline -48 190 aline -96 142 aline -96 47 aline -48 0 aline 47 0 aline 142 47 aline 238 142 aline 333 285 aline 476 571 aline 666 1000 aline 571 666 aline 523 476 aline 476 238 aline 476 47 aline 571 0 aline 523 47 aline 523 238 aline 571 571 aline 619 809 aline 666 1000 amove 1095 1000 aline 904 571 aline 666 142 aline 571 0 amove 1000 0 aline 952 47 aline 952 238 aline 1000 571 aline 1047 809 aline 1095 1000 aline 1000 666 aline 952 476 aline 904 238 aline 904 47 aline 1000 0 aline 1047 0 aline 1142 47 aline 1238 142 stroke dfont endchar dfont char=78 amove -48 95 aline -1 142 aline -48 190 aline -96 142 aline -96 47 aline -48 0 aline 47 0 aline 142 47 aline 238 190 aline 285 285 aline 380 523 aline 476 809 aline 523 1000 aline 523 761 aline 571 238 aline 619 0 aline 619 238 aline 571 761 aline 523 1000 amove 1190 952 aline 1142 904 aline 1190 857 aline 1238 904 aline 1238 952 aline 1190 1000 aline 1095 1000 aline 1000 952 aline 904 809 aline 857 714 aline 761 476 aline 666 190 aline 619 0 stroke dfont endchar dfont char=79 amove 333 0 aline 238 95 aline 190 238 aline 190 428 aline 238 619 aline 333 809 aline 428 952 amove 523 1000 aline 428 952 aline 333 857 aline 238 714 aline 190 619 aline 142 428 aline 142 238 aline 190 95 aline 238 47 aline 333 0 aline 428 0 aline 571 47 aline 666 142 aline 761 285 aline 809 380 aline 857 571 aline 857 761 aline 809 904 aline 761 952 aline 714 952 aline 619 904 aline 523 809 aline 428 619 aline 380 380 aline 380 238 stroke dfont endchar dfont char=80 amove 95 95 aline 142 142 aline 95 190 aline 47 142 aline 47 47 aline 95 0 aline 190 0 aline 333 47 aline 428 142 aline 476 238 aline 523 380 aline 619 761 aline 666 904 amove 714 952 aline 666 904 aline 619 809 aline 523 571 aline 428 285 aline 380 190 aline 285 47 aline 190 0 amove 571 523 aline 666 476 aline 761 476 aline 904 523 aline 952 571 aline 1000 666 aline 1000 809 aline 952 904 aline 904 952 aline 761 1000 aline 571 1000 aline 428 952 aline 333 904 aline 238 809 aline 190 714 aline 190 619 aline 238 571 aline 333 571 aline 380 619 aline 428 714 amove 761 476 aline 857 523 aline 904 571 aline 952 666 aline 952 809 aline 904 904 aline 857 952 aline 761 1000 stroke dfont endchar dfont char=81 amove 142 0 aline 333 95 aline 523 238 aline 666 380 aline 761 523 aline 809 666 aline 809 857 aline 761 952 aline 714 1000 amove 619 809 aline 619 714 aline 571 619 aline 523 571 aline 428 523 aline 333 523 aline 285 619 aline 285 714 aline 333 857 aline 428 952 aline 571 1000 aline 714 1000 aline 809 952 aline 857 857 aline 857 666 aline 809 523 aline 714 380 aline 523 190 aline 380 95 aline 285 47 aline 142 0 aline 47 0 aline 0 47 aline 0 142 aline 47 190 aline 142 190 aline 238 142 aline 380 47 aline 523 0 aline 666 0 aline 761 47 aline 857 142 stroke dfont endchar dfont char=82 amove 95 95 aline 142 142 aline 95 190 aline 47 142 aline 47 47 aline 95 0 aline 190 0 aline 333 47 aline 428 142 aline 476 238 aline 523 380 aline 619 761 aline 666 904 amove 714 952 aline 666 904 aline 619 809 aline 523 571 aline 428 285 aline 380 190 aline 285 47 aline 190 0 amove 857 0 aline 809 95 aline 761 428 aline 714 523 aline 571 571 aline 761 571 aline 904 619 aline 952 666 aline 1000 761 aline 1000 857 aline 952 952 aline 809 1000 aline 571 1000 aline 428 952 aline 333 904 aline 238 809 aline 190 714 aline 190 619 aline 238 571 aline 333 571 aline 380 619 aline 428 714 amove 571 571 aline 666 523 aline 714 428 aline 761 95 aline 857 0 aline 904 0 aline 1000 47 aline 1095 142 amove 761 571 aline 857 619 aline 904 666 aline 952 761 aline 952 857 aline 904 952 aline 809 1000 stroke dfont endchar dfont char=83 amove 47 142 aline 95 190 aline 47 238 aline 0 190 aline 0 142 aline 47 47 aline 142 0 aline 285 0 aline 428 47 aline 523 142 aline 571 285 aline 619 619 aline 666 809 amove 285 857 aline 238 761 aline 238 666 aline 285 571 aline 380 523 aline 523 523 aline 666 571 aline 761 619 aline 904 761 aline 952 904 aline 952 952 aline 904 1000 aline 857 1000 aline 761 952 aline 714 904 aline 666 809 aline 619 666 aline 523 333 aline 476 190 aline 380 47 aline 285 -1 stroke dfont endchar dfont char=84 amove 95 95 aline 142 142 aline 95 190 aline 47 142 aline 47 95 aline 95 47 aline 190 0 aline 285 0 aline 428 47 aline 523 142 aline 571 238 aline 619 380 aline 714 761 aline 761 904 aline 809 952 aline 904 1000 aline 476 1000 aline 333 952 aline 238 857 aline 190 761 aline 190 666 aline 238 571 aline 333 571 aline 428 619 aline 476 714 amove 571 1000 aline 761 952 aline 809 952 amove 761 904 aline 714 809 aline 619 571 aline 523 285 aline 476 190 aline 380 47 aline 285 0 stroke dfont endchar dfont char=85 amove 238 0 aline 190 95 aline 190 238 aline 333 619 aline 380 761 aline 380 904 aline 285 1000 aline 238 1000 aline 142 952 aline 47 809 amove 285 1000 aline 333 904 aline 333 761 aline 190 380 aline 142 238 aline 142 95 aline 238 0 aline 333 0 aline 428 47 aline 571 190 aline 666 333 aline 714 428 amove 1000 142 aline 904 47 aline 809 0 aline 761 0 aline 666 95 aline 666 238 aline 714 428 aline 904 1000 amove 952 1000 aline 761 428 aline 714 238 aline 714 95 aline 761 0 stroke dfont endchar dfont char=86 amove 285 0 aline 238 95 aline 238 238 aline 333 571 aline 380 761 aline 380 904 aline 285 1000 aline 238 1000 aline 142 952 aline 47 809 amove 285 1000 aline 333 904 aline 333 761 aline 238 428 aline 190 238 aline 190 95 aline 285 0 aline 333 0 aline 476 47 aline 619 190 aline 714 333 aline 809 523 aline 857 666 aline 904 857 aline 904 952 aline 857 1000 aline 809 1000 aline 761 952 aline 714 857 aline 714 714 aline 761 619 aline 857 523 aline 952 476 aline 1047 476 stroke dfont endchar dfont char=87 amove 190 0 aline 238 285 aline 285 714 aline 333 904 aline 380 1000 aline 190 1000 aline 95 952 aline 47 857 aline 47 761 aline 95 714 aline 142 714 amove 285 714 aline 285 285 aline 238 0 aline 333 95 aline 428 285 aline 571 714 aline 666 904 aline 761 1000 aline 714 904 aline 666 714 aline 619 285 aline 571 0 amove 619 0 aline 666 285 aline 666 714 amove 1238 1000 aline 1142 952 aline 1047 857 aline 952 714 aline 809 285 aline 714 95 aline 619 0 stroke dfont endchar dfont char=88 amove 0 95 aline 47 142 aline 0 190 aline -48 142 aline -48 47 aline 0 0 aline 95 0 aline 238 47 aline 333 142 aline 428 285 aline 523 523 aline 571 714 aline 571 857 aline 523 952 aline 428 1000 aline 333 1000 aline 238 952 aline 190 857 aline 190 761 aline 238 714 aline 333 714 aline 380 761 amove 428 1000 aline 476 952 aline 523 857 aline 523 714 aline 476 523 aline 380 285 aline 285 142 aline 190 47 aline 95 0 amove 809 142 aline 714 47 aline 619 0 aline 571 0 aline 523 47 aline 476 142 aline 476 285 aline 523 523 aline 619 714 aline 714 857 aline 809 952 aline 904 1000 aline 1000 1000 aline 1047 952 aline 1047 904 aline 1000 857 aline 952 904 aline 1000 952 stroke dfont endchar dfont char=89 amove 142 142 aline 190 190 aline 142 238 aline 95 190 aline 95 142 aline 142 47 aline 238 0 aline 428 0 aline 571 47 aline 666 142 aline 761 285 aline 857 476 aline 952 714 aline 1047 1000 amove 1000 1000 aline 904 714 aline 761 333 aline 666 142 amove 428 333 aline 380 428 aline 380 571 aline 476 857 aline 476 952 aline 380 1000 aline 333 1000 aline 238 952 aline 142 809 amove 380 1000 aline 428 952 aline 428 857 aline 333 571 aline 333 428 aline 428 333 aline 523 333 aline 666 380 aline 761 476 aline 857 619 aline 904 714 stroke dfont endchar dfont char=90 amove 238 0 aline 380 47 aline 476 95 aline 571 190 aline 666 333 aline 714 428 aline 761 571 aline 857 809 aline 904 904 amove 952 952 aline 904 952 aline 714 1000 amove 571 714 aline 523 619 aline 428 571 aline 333 571 aline 285 666 aline 285 761 aline 333 857 aline 428 952 aline 571 1000 aline 1047 1000 aline 952 952 aline 904 904 aline 857 761 aline 809 571 aline 714 285 aline 619 142 aline 476 47 aline 238 0 aline 47 0 aline 0 47 aline 0 142 aline 47 190 aline 142 190 aline 238 142 aline 380 47 aline 476 0 aline 619 0 aline 761 47 aline 857 142 stroke dfont endchar dfont char=91 amove 190 -334 aline 190 1190 aline 523 1190 amove 238 1190 aline 238 -334 amove 190 -334 aline 523 -334 stroke dfont endchar stroke dfont endchar dfont char=93 amove 142 -334 aline 476 -334 aline 476 1190 aline 142 1190 amove 428 1190 aline 428 -334 stroke dfont endchar stroke dfont endchar stroke dfont endchar dfont char=96 amove 238 904 aline 285 952 aline 238 1000 aline 190 952 aline 190 857 aline 238 761 aline 285 714 stroke dfont endchar dfont char=97 amove 190 0 aline 95 95 aline 95 238 aline 142 333 aline 238 428 amove 476 285 aline 428 380 aline 333 428 aline 238 428 aline 142 380 aline 95 333 aline 47 238 aline 47 142 aline 95 47 aline 190 0 aline 285 0 aline 380 47 aline 428 142 amove 523 0 aline 476 47 aline 476 142 aline 571 428 amove 523 428 aline 428 142 aline 428 47 aline 523 0 aline 619 47 aline 666 95 aline 761 238 stroke dfont endchar dfont char=98 amove 142 0 aline 95 47 aline 95 142 aline 380 1000 amove 333 1000 aline 47 142 aline 47 47 aline 142 0 aline 190 0 aline 285 47 aline 380 142 aline 428 285 aline 428 428 aline 476 238 aline 523 190 aline 571 190 aline 666 238 amove 190 571 aline 95 380 aline 0 238 stroke dfont endchar dfont char=99 amove 190 0 aline 95 95 aline 95 238 aline 142 333 aline 238 428 amove 380 380 aline 333 333 aline 380 333 aline 380 380 aline 333 428 aline 238 428 aline 142 380 aline 95 333 aline 47 238 aline 47 142 aline 95 47 aline 190 0 aline 333 0 aline 476 95 aline 571 238 stroke dfont endchar dfont char=100 amove 190 0 aline 95 95 aline 95 238 aline 142 333 aline 238 428 amove 476 285 aline 428 380 aline 333 428 aline 238 428 aline 142 380 aline 95 333 aline 47 238 aline 47 142 aline 95 47 aline 190 0 aline 285 0 aline 380 47 aline 428 142 amove 523 0 aline 476 47 aline 476 142 aline 761 1000 amove 714 1000 aline 428 142 aline 428 47 aline 523 0 aline 619 47 aline 666 95 aline 761 238 stroke dfont endchar dfont char=101 amove 142 95 aline 238 142 aline 285 190 aline 333 285 aline 333 380 aline 285 428 aline 238 428 aline 142 380 aline 95 333 aline 47 238 aline 47 142 aline 95 47 aline 190 0 aline 333 0 aline 476 95 aline 571 238 amove 238 428 aline 142 333 aline 95 238 aline 95 95 aline 190 0 stroke dfont endchar dfont char=102 amove 142 428 aline 285 571 aline 380 714 aline 428 857 aline 428 952 aline 380 1000 aline 285 952 aline 238 857 aline -191 -429 aline -191 -524 aline -143 -572 aline -48 -524 aline 0 -381 aline 47 47 aline 95 0 aline 190 0 aline 285 47 aline 333 95 aline 428 238 amove 238 857 aline 190 619 aline 142 428 aline 0 0 aline -96 -239 aline -191 -429 stroke dfont endchar dfont char=103 amove 190 0 aline 95 95 aline 95 238 aline 142 333 aline 238 428 amove 476 285 aline 428 380 aline 333 428 aline 238 428 aline 142 380 aline 95 333 aline 47 238 aline 47 142 aline 95 47 aline 190 0 aline 285 0 aline 380 47 aline 428 142 amove 523 428 aline 238 -429 amove 761 238 aline 666 95 aline 523 0 aline 333 -96 aline 190 -191 aline 95 -286 aline 47 -429 aline 47 -524 aline 95 -572 aline 190 -524 aline 238 -429 aline 333 -239 aline 428 0 aline 571 428 stroke dfont endchar dfont char=104 amove 0 0 aline 333 1000 amove 380 1000 aline 47 0 amove -1 238 aline 95 380 aline 190 571 amove 380 428 aline 428 380 aline 428 285 aline 380 142 aline 380 47 aline 476 0 aline 571 47 aline 619 95 aline 714 238 amove 476 0 aline 428 47 aline 428 142 aline 476 285 aline 476 380 aline 380 428 aline 333 428 aline 238 380 aline 142 285 stroke dfont endchar dfont char=105 amove 142 0 aline 95 47 aline 95 142 aline 190 428 amove 142 428 aline 47 142 aline 47 47 aline 142 0 aline 238 47 aline 285 95 aline 380 238 amove 238 714 aline 190 666 aline 238 619 aline 285 666 aline 238 714 stroke dfont endchar dfont char=106 amove 238 714 aline 190 666 aline 238 619 aline 285 666 aline 238 714 amove 142 428 aline -143 -429 amove 190 428 aline 47 0 aline -48 -239 aline -143 -429 aline -191 -524 aline -286 -572 aline -334 -524 aline -334 -429 aline -286 -286 aline -191 -191 aline -48 -96 aline 142 -1 aline 285 95 aline 380 238 stroke dfont endchar dfont char=107 amove 0 0 aline 333 1000 amove 380 1000 aline 47 0 amove -1 238 aline 95 380 aline 190 571 amove 428 428 aline 428 380 aline 476 380 aline 428 428 aline 380 428 aline 285 333 aline 142 285 aline 285 238 aline 333 47 aline 380 0 amove 142 285 aline 238 238 aline 285 47 aline 380 0 aline 428 0 aline 571 95 aline 666 238 stroke dfont endchar dfont char=108 amove 142 0 aline 95 47 aline 95 142 aline 380 1000 amove 333 1000 aline 47 142 aline 47 47 aline 142 0 aline 238 47 aline 285 95 aline 380 238 amove 0 238 aline 95 380 aline 190 571 stroke dfont endchar dfont char=109 amove 0 238 aline 95 380 aline 190 428 aline 285 380 aline 285 285 aline 190 0 amove 190 428 aline 238 380 aline 238 285 aline 142 0 amove 285 285 aline 380 380 aline 476 428 aline 523 428 aline 619 380 aline 619 285 aline 523 0 amove 523 428 aline 571 380 aline 571 285 aline 476 0 amove 619 285 aline 714 380 aline 809 428 aline 857 428 aline 952 380 aline 952 285 aline 904 142 aline 904 47 aline 952 0 amove 857 428 aline 904 380 aline 904 285 aline 857 142 aline 857 47 aline 952 0 aline 1047 47 aline 1095 95 aline 1190 238 stroke dfont endchar dfont char=110 amove 0 238 aline 95 380 aline 190 428 aline 285 380 aline 285 285 aline 190 0 amove 190 428 aline 238 380 aline 238 285 aline 142 0 amove 285 285 aline 380 380 aline 476 428 aline 523 428 aline 619 380 aline 619 285 aline 571 142 aline 571 47 aline 619 0 amove 523 428 aline 571 380 aline 571 285 aline 523 142 aline 523 47 aline 619 0 aline 714 47 aline 761 95 aline 857 238 stroke dfont endchar dfont char=111 amove 190 0 aline 95 95 aline 95 238 aline 142 333 aline 238 428 amove 333 428 aline 238 428 aline 142 380 aline 95 333 aline 47 238 aline 47 142 aline 95 47 aline 190 0 aline 285 0 aline 380 47 aline 428 95 aline 476 190 aline 476 285 aline 428 380 aline 333 428 aline 285 380 aline 285 285 aline 333 190 aline 428 142 aline 523 142 aline 619 190 aline 666 238 stroke dfont endchar dfont char=112 amove 0 238 aline 95 380 aline 190 571 amove 238 714 aline -191 -572 amove -143 -572 aline 285 714 amove 380 428 aline 428 380 aline 428 285 aline 380 142 aline 380 47 aline 476 0 aline 571 47 aline 619 95 aline 714 238 amove 476 0 aline 428 47 aline 428 142 aline 476 285 aline 476 380 aline 380 428 aline 333 428 aline 238 380 aline 142 285 stroke dfont endchar dfont char=113 amove 190 0 aline 95 95 aline 95 238 aline 142 333 aline 238 428 amove 476 285 aline 428 380 aline 333 428 aline 238 428 aline 142 380 aline 95 333 aline 47 238 aline 47 142 aline 95 47 aline 190 0 aline 285 0 aline 380 47 amove 523 428 aline 238 -429 aline 238 -524 aline 285 -572 aline 380 -524 aline 428 -381 aline 428 0 aline 523 0 aline 666 95 aline 761 238 amove 571 428 aline 428 0 aline 333 -239 aline 238 -429 stroke dfont endchar dfont char=114 amove 0 238 aline 95 380 aline 190 428 aline 285 380 aline 285 285 aline 190 0 amove 190 428 aline 238 380 aline 238 285 aline 142 0 amove 285 285 aline 380 380 aline 476 428 aline 523 428 aline 476 285 amove 476 428 aline 476 285 aline 523 190 aline 571 190 aline 666 238 stroke dfont endchar dfont char=115 amove 0 238 aline 95 380 aline 142 476 aline 142 380 aline 285 285 aline 333 190 aline 333 95 aline 285 47 aline 190 0 amove 142 380 aline 238 285 aline 285 190 aline 285 95 aline 190 0 amove 0 47 aline 95 0 aline 333 0 aline 476 95 aline 571 238 stroke dfont endchar dfont char=116 amove 142 0 aline 95 47 aline 95 142 aline 380 1000 amove 333 1000 aline 47 142 aline 47 47 aline 142 0 aline 238 47 aline 285 95 aline 380 238 amove 0 238 aline 95 380 aline 190 571 amove 95 619 aline 380 619 stroke dfont endchar dfont char=117 amove 142 0 aline 95 47 aline 95 142 aline 190 428 amove 142 428 aline 47 142 aline 47 47 aline 142 0 aline 190 0 aline 285 47 aline 380 142 aline 476 285 amove 523 428 aline 428 142 aline 428 47 aline 523 0 aline 619 47 aline 666 95 aline 761 238 amove 571 428 aline 476 142 aline 476 47 aline 523 0 stroke dfont endchar dfont char=118 amove 142 0 aline 95 47 aline 95 190 aline 142 333 aline 190 428 amove 142 428 aline 95 333 aline 47 190 aline 47 47 aline 142 0 aline 190 0 aline 333 47 aline 428 142 aline 476 285 aline 476 428 aline 523 238 aline 571 190 aline 619 190 aline 714 238 stroke dfont endchar dfont char=119 amove 142 0 aline 95 47 aline 95 190 aline 142 333 aline 238 428 amove 190 428 aline 95 333 aline 47 190 aline 47 47 aline 142 0 aline 190 0 aline 285 47 aline 380 142 amove 476 0 aline 428 47 aline 428 142 aline 523 428 amove 476 428 aline 380 142 aline 380 47 aline 476 0 aline 523 0 aline 619 47 aline 714 142 aline 761 285 aline 761 428 aline 809 238 aline 857 190 aline 904 190 aline 1000 238 stroke dfont endchar dfont char=120 amove 47 47 aline 95 95 aline 47 95 aline 47 47 aline 95 0 aline 142 0 aline 238 47 aline 285 142 aline 333 285 aline 333 380 aline 285 428 aline 190 428 aline 95 380 aline 0 238 amove 285 142 aline 333 47 amove 333 142 aline 238 47 amove 333 285 aline 428 380 amove 333 380 aline 380 285 amove 619 380 aline 571 333 aline 619 333 aline 619 380 aline 571 428 aline 523 428 aline 428 380 aline 380 285 aline 333 142 aline 333 47 aline 380 0 aline 523 0 aline 666 95 aline 761 238 stroke dfont endchar dfont char=121 amove 142 0 aline 95 47 aline 95 142 aline 190 428 amove 142 428 aline 47 142 aline 47 47 aline 142 0 aline 190 0 aline 285 47 aline 380 142 aline 476 285 amove 523 428 aline 238 -429 amove 761 238 aline 666 95 aline 523 -1 aline 333 -96 aline 190 -191 aline 95 -286 aline 47 -429 aline 47 -524 aline 95 -572 aline 190 -524 aline 238 -429 aline 333 -239 aline 428 -1 aline 571 428 stroke dfont endchar dfont char=122 amove 95 0 aline 190 47 aline 333 142 aline 380 238 aline 380 380 aline 285 428 aline 190 428 aline 95 380 aline 0 238 amove 95 0 aline 190 -48 aline 238 -143 aline 238 -286 aline 190 -429 aline 95 -524 aline 0 -572 aline -48 -524 aline -48 -429 aline 0 -286 aline 142 -143 aline 285 -48 aline 476 95 aline 619 238 amove 285 428 aline 333 380 aline 333 238 aline 285 142 aline 190 47 amove 95 -1 aline 142 -48 aline 190 -143 aline 190 -286 aline 142 -429 aline 95 -524 stroke dfont endchar dfont char=123 amove 380 238 aline 333 95 aline 333 -96 aline 380 -239 amove 476 -334 aline 333 -191 aline 285 -48 aline 285 47 aline 333 190 aline 428 285 aline 428 333 aline 238 428 aline 428 523 aline 428 571 aline 333 666 aline 285 809 aline 285 904 aline 333 1047 aline 476 1190 amove 380 1095 aline 333 952 aline 333 761 aline 380 619 stroke dfont endchar dfont char=124 amove 190 -334 aline 190 1190 aline 523 1190 amove 238 1190 aline 238 -334 amove 190 -334 aline 523 -334 stroke dfont endchar dfont char=125 amove 238 -334 aline 380 -191 aline 428 -48 aline 428 47 aline 380 190 aline 285 285 aline 285 333 aline 476 428 aline 285 523 aline 285 571 aline 380 666 aline 428 809 aline 428 904 aline 380 1047 aline 238 1190 amove 333 1095 aline 380 952 aline 380 761 aline 333 619 amove 333 238 aline 380 95 aline 380 -96 aline 333 -239 stroke dfont endchar dfont char=126 amove 285 1000 aline 190 952 aline 142 857 aline 142 761 aline 190 666 aline 285 619 aline 380 619 aline 476 666 aline 523 761 aline 523 857 aline 476 952 aline 380 1000 aline 285 1000 stroke dfont endchar gle-graphics-4.2.4c/src/fonts/texcmsl.afm0000664000000000000000000002177411676336540017043 0ustar rootrootStartFontMetrics 2.0 Comment Made from TEX tfm file using TFMTOAFM.bas FontName CMSL10 EncodingScheme TEXENCODING FullName CMSL10 FamilyName CMSL10 Weight Medium ItalicAngle 9.46261 IsFixedPitch false UnderlinePosition -97 UnderlineThickness 73 FontBBox 0 -300 1001 1001 CapHeight 729 XHeight 151 Descender -219 Ascender 729 StartCharMetrics 127 C 1 ; WX 833 ; N C1 ; B 0 0 833 683 ; C 2 ; WX 777 ; N C2 ; B 0 0 777 683 ; C 3 ; WX 694 ; N C3 ; B 0 0 694 683 ; C 4 ; WX 666 ; N C4 ; B 0 0 666 683 ; C 5 ; WX 750 ; N C5 ; B 0 0 750 683 ; C 6 ; WX 722 ; N C6 ; B 0 0 722 683 ; C 7 ; WX 777 ; N C7 ; B 0 0 777 683 ; C 8 ; WX 722 ; N C8 ; B 0 0 722 683 ; C 9 ; WX 777 ; N C9 ; B 0 0 777 683 ; C 10 ; WX 722 ; N C10 ; B 0 0 722 683 ; C 11 ; WX 583 ; N C11 ; B 0 0 583 694 ; L i C14 L l C15 C 12 ; WX 555 ; N C12 ; B 0 0 555 694 ; C 13 ; WX 555 ; N C13 ; B 0 0 555 694 ; C 14 ; WX 833 ; N C14 ; B 0 0 833 694 ; C 15 ; WX 833 ; N C15 ; B 0 0 833 694 ; C 16 ; WX 277 ; N C16 ; B 0 0 277 430 ; C 17 ; WX 305 ; N C17 ; B 0 -194 305 430 ; C 18 ; WX 500 ; N C18 ; B 0 0 500 694 ; C 19 ; WX 500 ; N C19 ; B 0 0 500 694 ; C 20 ; WX 500 ; N C20 ; B 0 0 500 628 ; C 21 ; WX 500 ; N C21 ; B 0 0 500 694 ; C 22 ; WX 500 ; N C22 ; B 0 0 500 567 ; C 23 ; WX 808 ; N C23 ; B 0 0 808 694 ; C 24 ; WX 444 ; N C24 ; B 0 -170 444 0 ; C 25 ; WX 500 ; N C25 ; B 0 0 500 694 ; C 26 ; WX 722 ; N C26 ; B 0 0 722 430 ; C 27 ; WX 777 ; N C27 ; B 0 0 777 430 ; C 28 ; WX 500 ; N C28 ; B 0 -97 500 527 ; C 29 ; WX 902 ; N C29 ; B 0 0 902 683 ; C 30 ; WX 1013 ; N C30 ; B 0 0 1013 683 ; C 31 ; WX 777 ; N C31 ; B 0 -48 777 731 ; C 32 ; WX 234 ; N C32 ; B 0 0 234 430 ; C 33 ; WX 277 ; N C33 ; B 0 0 277 694 ; C 34 ; WX 500 ; N C34 ; B 0 0 500 694 ; C 35 ; WX 833 ; N C35 ; B 0 -194 833 694 ; C 36 ; WX 500 ; N C36 ; B 0 -55 500 750 ; C 37 ; WX 833 ; N C37 ; B 0 -55 833 750 ; C 38 ; WX 777 ; N C38 ; B 0 0 777 694 ; C 39 ; WX 277 ; N C39 ; B 0 0 277 694 ; L C39 C34 C 40 ; WX 388 ; N C40 ; B 0 -250 388 750 ; C 41 ; WX 388 ; N C41 ; B 0 -250 388 750 ; C 42 ; WX 500 ; N C42 ; B 0 0 500 750 ; C 43 ; WX 777 ; N C43 ; B 0 -83 777 583 ; C 44 ; WX 277 ; N C44 ; B 0 -194 277 105 ; C 45 ; WX 333 ; N C45 ; B 0 0 333 430 ; C 46 ; WX 277 ; N C46 ; B 0 0 277 105 ; C 47 ; WX 500 ; N C47 ; B 0 -250 500 750 ; C 48 ; WX 500 ; N C48 ; B 0 0 500 644 ; C 49 ; WX 500 ; N C49 ; B 0 0 500 644 ; C 50 ; WX 500 ; N C50 ; B 0 0 500 644 ; C 51 ; WX 500 ; N C51 ; B 0 0 500 644 ; C 52 ; WX 500 ; N C52 ; B 0 0 500 644 ; C 53 ; WX 500 ; N C53 ; B 0 0 500 644 ; C 54 ; WX 500 ; N C54 ; B 0 0 500 644 ; C 55 ; WX 500 ; N C55 ; B 0 0 500 644 ; C 56 ; WX 500 ; N C56 ; B 0 0 500 644 ; C 57 ; WX 500 ; N C57 ; B 0 0 500 644 ; C 58 ; WX 277 ; N C58 ; B 0 0 277 430 ; C 59 ; WX 277 ; N C59 ; B 0 -194 277 430 ; C 60 ; WX 277 ; N C60 ; B 0 -194 277 500 ; C 61 ; WX 777 ; N C61 ; B 0 134 777 366 ; C 62 ; WX 472 ; N C62 ; B 0 -194 472 500 ; C 63 ; WX 472 ; N C63 ; B 0 0 472 694 ; C 64 ; WX 777 ; N C64 ; B 0 0 777 694 ; C 65 ; WX 750 ; N A ; B 0 0 750 683 ; C 66 ; WX 708 ; N B ; B 0 0 708 683 ; C 67 ; WX 722 ; N C ; B 0 0 722 683 ; C 68 ; WX 763 ; N D ; B 0 0 763 683 ; C 69 ; WX 680 ; N E ; B 0 0 680 683 ; C 70 ; WX 652 ; N F ; B 0 0 652 683 ; C 71 ; WX 784 ; N G ; B 0 0 784 683 ; C 72 ; WX 750 ; N H ; B 0 0 750 683 ; C 73 ; WX 361 ; N I ; B 0 0 361 683 ; C 74 ; WX 513 ; N J ; B 0 0 513 683 ; C 75 ; WX 777 ; N K ; B 0 0 777 683 ; C 76 ; WX 625 ; N L ; B 0 0 625 683 ; C 77 ; WX 916 ; N M ; B 0 0 916 683 ; C 78 ; WX 750 ; N N ; B 0 0 750 683 ; C 79 ; WX 777 ; N O ; B 0 0 777 683 ; C 80 ; WX 680 ; N P ; B 0 0 680 683 ; C 81 ; WX 777 ; N Q ; B 0 -194 777 683 ; C 82 ; WX 736 ; N R ; B 0 0 736 683 ; C 83 ; WX 555 ; N S ; B 0 0 555 683 ; C 84 ; WX 722 ; N T ; B 0 0 722 683 ; C 85 ; WX 750 ; N U ; B 0 0 750 683 ; C 86 ; WX 750 ; N V ; B 0 0 750 683 ; C 87 ; WX 1027 ; N W ; B 0 0 1027 683 ; C 88 ; WX 750 ; N X ; B 0 0 750 683 ; C 89 ; WX 750 ; N Y ; B 0 0 750 683 ; C 90 ; WX 611 ; N Z ; B 0 0 611 683 ; C 91 ; WX 277 ; N C91 ; B 0 -250 277 750 ; C 92 ; WX 500 ; N C92 ; B 0 0 500 694 ; C 93 ; WX 277 ; N C93 ; B 0 -250 277 750 ; C 94 ; WX 500 ; N C94 ; B 0 0 500 694 ; C 95 ; WX 277 ; N C95 ; B 0 0 277 667 ; C 96 ; WX 277 ; N C96 ; B 0 0 277 694 ; C 97 ; WX 500 ; N a ; B 0 0 500 430 ; C 98 ; WX 555 ; N b ; B 0 0 555 694 ; C 99 ; WX 444 ; N c ; B 0 0 444 430 ; C 100 ; WX 555 ; N d ; B 0 0 555 694 ; C 101 ; WX 444 ; N e ; B 0 0 444 430 ; C 102 ; WX 305 ; N f ; B 0 0 305 694 ; L f C11 L i C12 L l C13 C 103 ; WX 500 ; N g ; B 0 -194 500 430 ; C 104 ; WX 555 ; N h ; B 0 0 555 694 ; C 105 ; WX 277 ; N i ; B 0 0 277 667 ; C 106 ; WX 305 ; N j ; B 0 -194 305 667 ; C 107 ; WX 527 ; N k ; B 0 0 527 694 ; C 108 ; WX 277 ; N l ; B 0 0 277 694 ; C 109 ; WX 833 ; N m ; B 0 0 833 430 ; C 110 ; WX 555 ; N n ; B 0 0 555 430 ; C 111 ; WX 500 ; N o ; B 0 0 500 430 ; C 112 ; WX 555 ; N p ; B 0 -194 555 430 ; C 113 ; WX 527 ; N q ; B 0 -194 527 430 ; C 114 ; WX 391 ; N r ; B 0 0 391 430 ; C 115 ; WX 394 ; N s ; B 0 0 394 430 ; C 116 ; WX 388 ; N t ; B 0 0 388 615 ; C 117 ; WX 555 ; N u ; B 0 0 555 430 ; C 118 ; WX 527 ; N v ; B 0 0 527 430 ; C 119 ; WX 722 ; N w ; B 0 0 722 430 ; C 120 ; WX 527 ; N x ; B 0 0 527 430 ; C 121 ; WX 527 ; N y ; B 0 -194 527 430 ; C 122 ; WX 444 ; N z ; B 0 0 444 430 ; C 123 ; WX 500 ; N C123 ; B 0 0 500 430 ; C 124 ; WX 1000 ; N C124 ; B 0 0 1000 430 ; C 125 ; WX 500 ; N C125 ; B 0 0 500 694 ; C 126 ; WX 500 ; N C126 ; B 0 0 500 667 ; C 127 ; WX 500 ; N C127 ; B 0 0 500 667 ; EndCharMetrics StartKernData StartKernPairs 181 KPX C11 C33 77 KPX C11 C39 77 KPX C11 C41 77 KPX C11 C63 77 KPX C11 C93 77 KPX C32 L -320 KPX C32 l -278 KPX C39 C33 111 KPX C39 C63 111 KPX A C -28 KPX A G -28 KPX A O -28 KPX A Q -28 KPX A T -84 KPX A U -28 KPX A V -112 KPX A W -112 KPX A Y -84 KPX A t -28 KPX D A -28 KPX D V -28 KPX D W -28 KPX D X -28 KPX D Y -28 KPX F A -112 KPX F C -28 KPX F G -28 KPX F O -28 KPX F Q -28 KPX F a -84 KPX F e -84 KPX F o -84 KPX F r -84 KPX F u -84 KPX I I 27 KPX K C -28 KPX K G -28 KPX K O -28 KPX K Q -28 KPX L T -84 KPX L V -112 KPX L W -112 KPX L Y -84 KPX O A -28 KPX O V -28 KPX O W -28 KPX O X -28 KPX O Y -28 KPX P C44 -84 KPX P C46 -84 KPX P A -84 KPX P a -28 KPX P e -28 KPX P o -28 KPX R C -28 KPX R G -28 KPX R O -28 KPX R Q -28 KPX R T -84 KPX R U -28 KPX R V -112 KPX R W -112 KPX R Y -84 KPX R t -28 KPX T A -84 KPX T a -84 KPX T e -84 KPX T o -84 KPX T r -84 KPX T u -84 KPX T y -28 KPX V A -112 KPX V C -28 KPX V G -28 KPX V O -28 KPX V Q -28 KPX V a -84 KPX V e -84 KPX V o -84 KPX V r -84 KPX V u -84 KPX W A -112 KPX W C -28 KPX W G -28 KPX W O -28 KPX W Q -28 KPX W a -84 KPX W e -84 KPX W o -84 KPX W r -84 KPX W u -84 KPX X C -28 KPX X G -28 KPX X O -28 KPX X Q -28 KPX Y A -84 KPX Y a -84 KPX Y e -84 KPX Y o -84 KPX Y r -84 KPX Y u -84 KPX a j 55 KPX a v -28 KPX a w -28 KPX a y -28 KPX b c 27 KPX b d 27 KPX b e 27 KPX b j 55 KPX b o 27 KPX b q 27 KPX b v -28 KPX b w -28 KPX b x -28 KPX b y -28 KPX c h -28 KPX c k -28 KPX f C33 77 KPX f C39 77 KPX f C41 77 KPX f C63 77 KPX f C93 77 KPX g j 27 KPX h b -28 KPX h t -28 KPX h u -28 KPX h v -28 KPX h w -28 KPX h y -28 KPX k a -56 KPX k c -28 KPX k e -28 KPX k o -28 KPX m b -28 KPX m t -28 KPX m u -28 KPX m v -28 KPX m w -28 KPX m y -28 KPX n b -28 KPX n t -28 KPX n u -28 KPX n v -28 KPX n w -28 KPX n y -28 KPX o c 27 KPX o d 27 KPX o e 27 KPX o j 55 KPX o o 27 KPX o q 27 KPX o v -28 KPX o w -28 KPX o x -28 KPX o y -28 KPX p c 27 KPX p d 27 KPX p e 27 KPX p j 55 KPX p o 27 KPX p q 27 KPX p v -28 KPX p w -28 KPX p x -28 KPX p y -28 KPX t w -28 KPX t y -28 KPX u w -28 KPX v a -56 KPX v c -28 KPX v e -28 KPX v o -28 KPX w a -28 KPX w c -28 KPX w e -28 KPX w o -28 KPX y C44 -84 KPX y C46 -84 KPX y a -28 KPX y e -28 KPX y o -28 EndKernPairs EndKernData EndFontMetrics gle-graphics-4.2.4c/src/fonts/texcmssi.afm0000664000000000000000000002067211676336540017217 0ustar rootrootStartFontMetrics 2.0 Comment Made from TEX tfm file using TFMTOAFM.bas FontName CMSSI10 EncodingScheme TEXENCODING FullName CMSSI10 FamilyName CMSSI10 Weight Medium ItalicAngle 11.9999 IsFixedPitch false UnderlinePosition -97 UnderlineThickness 73 FontBBox 0 -300 1001 1001 CapHeight 729 XHeight 156 Descender -219 Ascender 729 StartCharMetrics 127 C 1 ; WX 833 ; N C1 ; B 0 0 833 694 ; C 2 ; WX 777 ; N C2 ; B 0 0 777 694 ; C 3 ; WX 611 ; N C3 ; B 0 0 611 694 ; C 4 ; WX 666 ; N C4 ; B 0 0 666 694 ; C 5 ; WX 708 ; N C5 ; B 0 0 708 694 ; C 6 ; WX 722 ; N C6 ; B 0 0 722 694 ; C 7 ; WX 777 ; N C7 ; B 0 0 777 694 ; C 8 ; WX 722 ; N C8 ; B 0 0 722 694 ; C 9 ; WX 777 ; N C9 ; B 0 0 777 694 ; C 10 ; WX 722 ; N C10 ; B 0 0 722 694 ; C 11 ; WX 583 ; N C11 ; B 0 0 583 694 ; L i C14 L l C15 C 12 ; WX 536 ; N C12 ; B 0 0 536 694 ; C 13 ; WX 536 ; N C13 ; B 0 0 536 694 ; C 14 ; WX 813 ; N C14 ; B 0 0 813 694 ; C 15 ; WX 813 ; N C15 ; B 0 0 813 694 ; C 16 ; WX 238 ; N C16 ; B 0 0 238 444 ; C 17 ; WX 266 ; N C17 ; B 0 -194 266 444 ; C 18 ; WX 500 ; N C18 ; B 0 0 500 694 ; C 19 ; WX 500 ; N C19 ; B 0 0 500 694 ; C 20 ; WX 500 ; N C20 ; B 0 0 500 631 ; C 21 ; WX 500 ; N C21 ; B 0 0 500 694 ; C 22 ; WX 500 ; N C22 ; B 0 0 500 608 ; C 23 ; WX 737 ; N C23 ; B 0 0 737 694 ; C 24 ; WX 444 ; N C24 ; B 0 -170 444 0 ; C 25 ; WX 480 ; N C25 ; B 0 0 480 694 ; C 26 ; WX 722 ; N C26 ; B 0 0 722 444 ; C 27 ; WX 777 ; N C27 ; B 0 0 777 444 ; C 28 ; WX 500 ; N C28 ; B 0 -97 500 541 ; C 29 ; WX 861 ; N C29 ; B 0 0 861 694 ; C 30 ; WX 972 ; N C30 ; B 0 0 972 694 ; C 31 ; WX 777 ; N C31 ; B 0 -48 777 743 ; C 32 ; WX 234 ; N C32 ; B 0 0 234 444 ; C 33 ; WX 319 ; N C33 ; B 0 0 319 694 ; C 34 ; WX 500 ; N C34 ; B 0 0 500 694 ; C 35 ; WX 833 ; N C35 ; B 0 -194 833 694 ; C 36 ; WX 500 ; N C36 ; B 0 -55 500 750 ; C 37 ; WX 833 ; N C37 ; B 0 -55 833 750 ; C 38 ; WX 758 ; N C38 ; B 0 0 758 694 ; C 39 ; WX 277 ; N C39 ; B 0 0 277 694 ; L C39 C34 C 40 ; WX 388 ; N C40 ; B 0 -250 388 750 ; C 41 ; WX 388 ; N C41 ; B 0 -250 388 750 ; C 42 ; WX 500 ; N C42 ; B 0 0 500 750 ; C 43 ; WX 777 ; N C43 ; B 0 -83 777 583 ; C 44 ; WX 277 ; N C44 ; B 0 -125 277 83 ; C 45 ; WX 333 ; N C45 ; B 0 0 333 444 ; C 46 ; WX 277 ; N C46 ; B 0 0 277 83 ; C 47 ; WX 500 ; N C47 ; B 0 -250 500 750 ; C 48 ; WX 500 ; N C48 ; B 0 0 500 655 ; C 49 ; WX 500 ; N C49 ; B 0 0 500 655 ; C 50 ; WX 500 ; N C50 ; B 0 0 500 655 ; C 51 ; WX 500 ; N C51 ; B 0 0 500 655 ; C 52 ; WX 500 ; N C52 ; B 0 0 500 655 ; C 53 ; WX 500 ; N C53 ; B 0 0 500 655 ; C 54 ; WX 500 ; N C54 ; B 0 0 500 655 ; C 55 ; WX 500 ; N C55 ; B 0 0 500 655 ; C 56 ; WX 500 ; N C56 ; B 0 0 500 655 ; C 57 ; WX 500 ; N C57 ; B 0 0 500 655 ; C 58 ; WX 277 ; N C58 ; B 0 0 277 444 ; C 59 ; WX 277 ; N C59 ; B 0 -125 277 444 ; C 60 ; WX 319 ; N C60 ; B 0 -194 319 500 ; C 61 ; WX 777 ; N C61 ; B 0 131 777 369 ; C 62 ; WX 472 ; N C62 ; B 0 -194 472 500 ; C 63 ; WX 472 ; N C63 ; B 0 0 472 694 ; C 64 ; WX 666 ; N C64 ; B 0 0 666 694 ; C 65 ; WX 666 ; N A ; B 0 0 666 694 ; C 66 ; WX 666 ; N B ; B 0 0 666 694 ; C 67 ; WX 638 ; N C ; B 0 0 638 694 ; C 68 ; WX 722 ; N D ; B 0 0 722 694 ; C 69 ; WX 597 ; N E ; B 0 0 597 694 ; C 70 ; WX 569 ; N F ; B 0 0 569 694 ; C 71 ; WX 666 ; N G ; B 0 0 666 694 ; C 72 ; WX 708 ; N H ; B 0 0 708 694 ; C 73 ; WX 277 ; N I ; B 0 0 277 694 ; C 74 ; WX 472 ; N J ; B 0 0 472 694 ; C 75 ; WX 694 ; N K ; B 0 0 694 694 ; C 76 ; WX 541 ; N L ; B 0 0 541 694 ; C 77 ; WX 875 ; N M ; B 0 0 875 694 ; C 78 ; WX 708 ; N N ; B 0 0 708 694 ; C 79 ; WX 736 ; N O ; B 0 0 736 694 ; C 80 ; WX 638 ; N P ; B 0 0 638 694 ; C 81 ; WX 736 ; N Q ; B 0 -125 736 694 ; C 82 ; WX 645 ; N R ; B 0 0 645 694 ; C 83 ; WX 555 ; N S ; B 0 0 555 694 ; C 84 ; WX 680 ; N T ; B 0 0 680 694 ; C 85 ; WX 687 ; N U ; B 0 0 687 694 ; C 86 ; WX 666 ; N V ; B 0 0 666 694 ; C 87 ; WX 944 ; N W ; B 0 0 944 694 ; C 88 ; WX 666 ; N X ; B 0 0 666 694 ; C 89 ; WX 666 ; N Y ; B 0 0 666 694 ; C 90 ; WX 611 ; N Z ; B 0 0 611 694 ; C 91 ; WX 288 ; N C91 ; B 0 -250 288 750 ; C 92 ; WX 500 ; N C92 ; B 0 0 500 694 ; C 93 ; WX 288 ; N C93 ; B 0 -250 288 750 ; C 94 ; WX 500 ; N C94 ; B 0 0 500 694 ; C 95 ; WX 277 ; N C95 ; B 0 0 277 679 ; C 96 ; WX 277 ; N C96 ; B 0 0 277 694 ; C 97 ; WX 480 ; N a ; B 0 0 480 444 ; C 98 ; WX 516 ; N b ; B 0 0 516 694 ; C 99 ; WX 444 ; N c ; B 0 0 444 444 ; C 100 ; WX 516 ; N d ; B 0 0 516 694 ; C 101 ; WX 444 ; N e ; B 0 0 444 444 ; C 102 ; WX 305 ; N f ; B 0 0 305 694 ; L f C11 L i C12 L l C13 C 103 ; WX 500 ; N g ; B 0 -194 500 444 ; C 104 ; WX 516 ; N h ; B 0 0 516 694 ; C 105 ; WX 238 ; N i ; B 0 0 238 679 ; C 106 ; WX 266 ; N j ; B 0 -194 266 679 ; C 107 ; WX 488 ; N k ; B 0 0 488 694 ; C 108 ; WX 238 ; N l ; B 0 0 238 694 ; C 109 ; WX 794 ; N m ; B 0 0 794 444 ; C 110 ; WX 516 ; N n ; B 0 0 516 444 ; C 111 ; WX 500 ; N o ; B 0 0 500 444 ; C 112 ; WX 516 ; N p ; B 0 -194 516 444 ; C 113 ; WX 516 ; N q ; B 0 -194 516 444 ; C 114 ; WX 341 ; N r ; B 0 0 341 444 ; C 115 ; WX 383 ; N s ; B 0 0 383 444 ; C 116 ; WX 361 ; N t ; B 0 0 361 571 ; C 117 ; WX 516 ; N u ; B 0 0 516 444 ; C 118 ; WX 461 ; N v ; B 0 0 461 444 ; C 119 ; WX 683 ; N w ; B 0 0 683 444 ; C 120 ; WX 461 ; N x ; B 0 0 461 444 ; C 121 ; WX 461 ; N y ; B 0 -194 461 444 ; C 122 ; WX 434 ; N z ; B 0 0 434 444 ; C 123 ; WX 500 ; N C123 ; B 0 0 500 444 ; C 124 ; WX 1000 ; N C124 ; B 0 0 1000 444 ; C 125 ; WX 500 ; N C125 ; B 0 0 500 694 ; C 126 ; WX 500 ; N C126 ; B 0 0 500 676 ; C 127 ; WX 500 ; N C127 ; B 0 0 500 679 ; EndCharMetrics StartKernData StartKernPairs 143 KPX C11 C33 69 KPX C11 C39 69 KPX C11 C41 69 KPX C11 C63 69 KPX C11 C93 69 KPX C32 L -259 KPX C32 l -239 KPX C39 C33 111 KPX C39 C63 111 KPX A C -28 KPX A G -28 KPX A O -28 KPX A Q -28 KPX A T -84 KPX A U -28 KPX A V -112 KPX A W -112 KPX A Y -84 KPX A t -28 KPX D A -28 KPX D V -28 KPX D W -28 KPX D X -28 KPX D Y -28 KPX F A -84 KPX F C -28 KPX F G -28 KPX F O -28 KPX F Q -28 KPX F a -28 KPX F e -28 KPX F o -28 KPX F r -28 KPX F u -28 KPX I I 27 KPX K C -28 KPX K G -28 KPX K O -28 KPX K Q -28 KPX L T -84 KPX L V -112 KPX L W -112 KPX L Y -84 KPX O A -28 KPX O V -28 KPX O W -28 KPX O X -28 KPX O Y -28 KPX P C44 -84 KPX P C46 -84 KPX P A -84 KPX P a -28 KPX P e -28 KPX P o -28 KPX T A -84 KPX T a -84 KPX T e -84 KPX T o -84 KPX T r -84 KPX T u -84 KPX T y -84 KPX V A -84 KPX V C -28 KPX V G -28 KPX V O -28 KPX V Q -28 KPX V a -28 KPX V e -28 KPX V o -28 KPX V r -28 KPX V u -28 KPX W A -84 KPX W C -28 KPX W G -28 KPX W O -28 KPX W Q -28 KPX W a -28 KPX W e -28 KPX W o -28 KPX W r -28 KPX W u -28 KPX X C -28 KPX X G -28 KPX X O -28 KPX X Q -28 KPX Y A -84 KPX Y a -84 KPX Y e -84 KPX Y o -84 KPX Y r -84 KPX Y u -84 KPX a r -28 KPX a w -28 KPX a y -28 KPX b c 27 KPX b d 27 KPX b e 27 KPX b o 27 KPX b q 27 KPX b r -28 KPX b w -28 KPX b x -28 KPX b y -28 KPX f C33 69 KPX f C39 69 KPX f C41 69 KPX f C63 69 KPX f C93 69 KPX g j 27 KPX k a -28 KPX k c -28 KPX k e -28 KPX k o -28 KPX o c 27 KPX o d 27 KPX o e 27 KPX o o 27 KPX o q 27 KPX o r -28 KPX o w -28 KPX o x -28 KPX o y -28 KPX p c 27 KPX p d 27 KPX p e 27 KPX p o 27 KPX p q 27 KPX p r -28 KPX p w -28 KPX p x -28 KPX p y -28 KPX t w -28 KPX t y -28 KPX u w -28 KPX w a -28 KPX w c -28 KPX w e -28 KPX w o -28 KPX y C44 -84 KPX y C46 -84 KPX y a -28 KPX y e -28 KPX y o -28 EndKernPairs EndKernData EndFontMetrics gle-graphics-4.2.4c/src/fonts/plge.afm0000664000000000000000000001223611676336540016304 0ustar rootrootStartFontMetrics 2.0 Comment Made from HERSHEY font file using SPLITFONT.BAS FontName plGE EncodingScheme TEXENCODING FullName plGE FamilyName plGE Weight Medium ItalicAngle 0 IsFixedPitch false UnderlinePosition -97 UnderlineThickness 73 FontBBox 0 -400 1001 1001 CapHeight 729 XHeight 151 Descender -219 Ascender 729 StartCharMetrics 95 C 32 ; WX 400 ; N C32 ; B 0 0 0 0 ; C 33 ; WX 384 ; N C33 ; B 99 0 299 700 ; C 34 ; WX 384 ; N C34 ; B 133 466 233 700 ; C 35 ; WX 300 ; N C35 ; B 0 0 0 0 ; C 36 ; WX 651 ; N C36 ; B 99 -133 566 833 ; C 37 ; WX 784 ; N C37 ; B 99 0 700 700 ; C 38 ; WX 300 ; N C38 ; B 0 0 0 0 ; C 39 ; WX 384 ; N C39 ; B 166 466 266 700 ; C 40 ; WX 451 ; N C40 ; B 99 -233 333 833 ; C 41 ; WX 451 ; N C41 ; B 133 -233 366 833 ; C 42 ; WX 585 ; N C42 ; B 133 466 500 700 ; C 43 ; WX 818 ; N C43 ; B 133 32 700 600 ; C 44 ; WX 384 ; N C44 ; B 133 -133 233 99 ; C 45 ; WX 818 ; N C45 ; B 133 299 700 333 ; C 46 ; WX 384 ; N C46 ; B 133 0 266 99 ; C 47 ; WX 751 ; N C47 ; B 66 -233 700 833 ; C 48 ; WX 651 ; N C48 ; B 66 0 600 700 ; C 49 ; WX 651 ; N C49 ; B 233 0 466 700 ; C 50 ; WX 651 ; N C50 ; B 99 0 600 700 ; C 51 ; WX 651 ; N C51 ; B 99 0 532 700 ; C 52 ; WX 651 ; N C52 ; B 99 0 633 700 ; C 53 ; WX 651 ; N C53 ; B 99 0 600 700 ; C 54 ; WX 651 ; N C54 ; B 66 0 600 700 ; C 55 ; WX 651 ; N C55 ; B 99 0 600 700 ; C 56 ; WX 651 ; N C56 ; B 66 0 600 700 ; C 57 ; WX 651 ; N C57 ; B 66 0 600 700 ; C 58 ; WX 384 ; N C58 ; B 133 0 266 466 ; C 59 ; WX 384 ; N C59 ; B 133 -133 266 466 ; C 60 ; WX 784 ; N C60 ; B 133 0 666 600 ; C 61 ; WX 818 ; N C61 ; B 133 166 700 466 ; C 62 ; WX 784 ; N C62 ; B 133 0 666 600 ; C 63 ; WX 585 ; N C63 ; B 99 0 500 700 ; C 64 ; WX 884 ; N C64 ; B 99 0 799 700 ; C 65 ; WX 718 ; N C65 ; B 0 0 733 700 ; C 66 ; WX 784 ; N C66 ; B 66 0 700 700 ; C 67 ; WX 784 ; N C67 ; B 99 0 733 700 ; C 68 ; WX 751 ; N C68 ; B 66 0 633 700 ; C 69 ; WX 718 ; N C69 ; B 66 0 666 700 ; C 70 ; WX 751 ; N C70 ; B 32 0 766 700 ; C 71 ; WX 818 ; N C71 ; B 99 0 733 700 ; C 72 ; WX 784 ; N C72 ; B 66 0 700 700 ; C 73 ; WX 618 ; N C73 ; B 0 0 532 700 ; C 74 ; WX 651 ; N C74 ; B 66 0 566 700 ; C 75 ; WX 784 ; N C75 ; B 66 0 733 700 ; C 76 ; WX 718 ; N C76 ; B 66 0 666 700 ; C 77 ; WX 918 ; N C77 ; B 32 0 866 700 ; C 78 ; WX 818 ; N C78 ; B 66 0 799 700 ; C 79 ; WX 851 ; N C79 ; B 99 0 766 700 ; C 80 ; WX 718 ; N C80 ; B 66 -233 600 700 ; C 81 ; WX 851 ; N C81 ; B 99 -233 766 700 ; C 82 ; WX 784 ; N C82 ; B 66 0 733 700 ; C 83 ; WX 751 ; N C83 ; B 66 0 700 700 ; C 84 ; WX 784 ; N C84 ; B 99 0 733 699 ; C 85 ; WX 784 ; N C85 ; B 66 0 733 700 ; C 86 ; WX 751 ; N C86 ; B 66 0 700 700 ; C 87 ; WX 884 ; N C87 ; B 66 0 766 700 ; C 88 ; WX 718 ; N C88 ; B 32 0 700 700 ; C 89 ; WX 751 ; N C89 ; B 66 -233 700 700 ; C 90 ; WX 651 ; N C90 ; B 66 0 600 699 ; C 91 ; WX 451 ; N C91 ; B 133 -233 366 833 ; C 92 ; WX 300 ; N C92 ; B 0 0 0 0 ; C 93 ; WX 451 ; N C93 ; B 99 -233 333 833 ; C 94 ; WX 300 ; N C94 ; B 0 0 0 0 ; C 95 ; WX 300 ; N C95 ; B 0 0 0 0 ; C 96 ; WX 318 ; N C96 ; B 133 500 199 700 ; C 97 ; WX 551 ; N C97 ; B 99 0 500 466 ; C 98 ; WX 585 ; N C98 ; B 66 0 532 700 ; C 99 ; WX 451 ; N C99 ; B 66 0 466 466 ; C 100 ; WX 551 ; N C100 ; B 66 0 466 700 ; C 101 ; WX 451 ; N C101 ; B 66 0 433 466 ; C 102 ; WX 418 ; N C102 ; B 32 0 433 700 ; C 103 ; WX 585 ; N C103 ; B 66 -233 532 466 ; C 104 ; WX 585 ; N C104 ; B 66 -233 532 699 ; C 105 ; WX 318 ; N C105 ; B 66 0 266 700 ; C 106 ; WX 318 ; N C106 ; B 66 -233 266 700 ; C 107 ; WX 551 ; N C107 ; B 66 0 500 699 ; C 108 ; WX 318 ; N C108 ; B 66 0 299 699 ; C 109 ; WX 851 ; N C109 ; B 66 0 799 466 ; C 110 ; WX 585 ; N C110 ; B 66 0 532 466 ; C 111 ; WX 585 ; N C111 ; B 66 0 532 466 ; C 112 ; WX 585 ; N C112 ; B 66 -233 532 466 ; C 113 ; WX 585 ; N C113 ; B 66 -233 532 466 ; C 114 ; WX 451 ; N C114 ; B 66 0 466 466 ; C 115 ; WX 518 ; N C115 ; B 66 0 433 466 ; C 116 ; WX 318 ; N C116 ; B 32 0 299 699 ; C 117 ; WX 585 ; N C117 ; B 66 0 532 466 ; C 118 ; WX 585 ; N C118 ; B 99 0 532 466 ; C 119 ; WX 851 ; N C119 ; B 99 0 799 466 ; C 120 ; WX 618 ; N C120 ; B 66 0 566 466 ; C 121 ; WX 585 ; N C121 ; B 66 -233 532 466 ; C 122 ; WX 585 ; N C122 ; B 99 0 500 466 ; C 123 ; WX 485 ; N C123 ; B 166 -233 333 833 ; C 124 ; WX 518 ; N C124 ; B 99 299 433 700 ; C 125 ; WX 485 ; N C125 ; B 166 -233 333 833 ; C 126 ; WX 851 ; N C126 ; B 99 0 766 700 ; EndCharMetrics EndFontMetrics gle-graphics-4.2.4c/src/fonts/plss.gle0000664000000000000000000010054511676336540016343 0ustar rootrootdfont design= 1428 dfont char=33 amove 238 1000 aline 238 333 amove 238 95 aline 190 47 aline 238 0 aline 285 47 aline 238 95 stroke dfont endchar dfont char=34 amove 190 666 aline 190 1000 amove 571 1000 aline 571 666 stroke dfont endchar dfont char=35 amove 142 285 aline 809 285 amove 857 571 aline 190 571 amove 523 1190 aline 190 -334 amove 476 -334 aline 809 1190 stroke dfont endchar dfont char=36 amove 142 142 aline 238 47 aline 380 0 aline 571 0 aline 714 47 aline 809 142 aline 809 285 aline 761 380 aline 714 428 aline 619 476 aline 333 571 aline 238 619 aline 190 666 aline 142 761 aline 142 857 aline 238 952 aline 380 1000 aline 571 1000 aline 714 952 aline 809 857 amove 571 1190 aline 571 -191 amove 380 -191 aline 380 1190 stroke dfont endchar dfont char=37 amove 142 0 aline 1000 1000 aline 904 952 aline 761 904 aline 619 904 aline 476 952 aline 380 1000 aline 285 1000 aline 190 952 aline 142 857 aline 142 761 aline 238 666 aline 333 666 aline 428 714 aline 476 809 aline 476 904 aline 380 1000 amove 809 333 aline 714 285 aline 666 190 aline 666 95 aline 761 0 aline 857 0 aline 952 47 aline 1000 142 aline 1000 238 aline 904 333 aline 809 333 stroke dfont endchar dfont char=38 amove 1095 571 aline 1095 619 aline 1047 666 aline 1000 666 aline 952 619 aline 904 523 aline 809 285 aline 714 142 aline 619 47 aline 523 0 aline 333 0 aline 238 47 aline 190 95 aline 142 190 aline 142 285 aline 190 380 aline 238 428 aline 571 619 aline 619 666 aline 666 761 aline 666 857 aline 619 952 aline 523 1000 aline 428 952 aline 380 857 aline 380 761 aline 428 619 aline 523 476 aline 761 142 aline 857 47 aline 952 0 aline 1047 0 aline 1095 47 aline 1095 95 stroke dfont endchar dfont char=39 amove 190 1000 aline 190 666 stroke dfont endchar dfont char=40 amove 523 1190 aline 428 1095 aline 333 952 aline 238 761 aline 190 523 aline 190 333 aline 238 95 aline 333 -96 aline 428 -239 aline 523 -334 stroke dfont endchar dfont char=41 amove 142 -334 aline 238 -239 aline 333 -96 aline 428 95 aline 476 333 aline 476 523 aline 428 761 aline 333 952 aline 238 1095 aline 142 1190 stroke dfont endchar dfont char=42 amove 142 285 aline 619 571 amove 380 714 aline 380 142 amove 619 285 aline 142 571 stroke dfont endchar dfont char=43 amove 190 428 aline 1047 428 amove 619 857 aline 619 0 stroke dfont endchar dfont char=44 amove 190 -191 aline 238 -143 aline 285 -48 aline 285 47 aline 238 95 aline 190 47 aline 238 0 aline 285 47 stroke dfont endchar dfont char=45 amove 190 428 aline 1047 428 stroke dfont endchar dfont char=46 amove 238 95 aline 190 47 aline 238 0 aline 285 47 aline 238 95 stroke dfont endchar dfont char=47 amove 95 -334 aline 952 1190 stroke dfont endchar dfont char=48 amove 428 1000 aline 285 952 aline 190 809 aline 142 571 aline 142 428 aline 190 190 aline 285 47 aline 428 0 aline 523 0 aline 666 47 aline 761 190 aline 809 428 aline 809 571 aline 761 809 aline 666 952 aline 523 1000 aline 428 1000 stroke dfont endchar dfont char=49 amove 285 809 aline 380 857 aline 523 1000 aline 523 0 stroke dfont endchar dfont char=50 amove 190 761 aline 190 809 aline 238 904 aline 285 952 aline 380 1000 aline 571 1000 aline 666 952 aline 714 904 aline 761 809 aline 761 714 aline 714 619 aline 619 476 aline 142 0 aline 809 0 stroke dfont endchar dfont char=51 amove 142 190 aline 190 95 aline 238 47 aline 380 0 aline 523 0 aline 666 47 aline 761 142 aline 809 285 aline 809 380 aline 761 523 aline 714 571 aline 619 619 aline 476 619 aline 761 1000 aline 238 1000 stroke dfont endchar dfont char=52 amove 619 0 aline 619 1000 aline 142 333 aline 857 333 stroke dfont endchar dfont char=53 amove 142 190 aline 190 95 aline 238 47 aline 380 0 aline 523 0 aline 666 47 aline 761 142 aline 809 285 aline 809 380 aline 761 523 aline 666 619 aline 523 666 aline 380 666 aline 238 619 aline 190 571 aline 238 1000 aline 714 1000 stroke dfont endchar dfont char=54 amove 190 333 aline 238 476 aline 333 571 aline 476 619 aline 523 619 aline 666 571 aline 761 476 aline 809 333 aline 809 285 aline 761 142 aline 666 47 aline 523 -1 aline 476 -1 aline 333 47 aline 238 142 aline 190 333 aline 190 571 aline 238 809 aline 333 952 aline 476 1000 aline 571 1000 aline 714 952 aline 761 857 stroke dfont endchar dfont char=55 amove 333 0 aline 809 1000 aline 142 1000 stroke dfont endchar dfont char=56 amove 380 1000 aline 238 952 aline 190 857 aline 190 761 aline 238 666 aline 333 619 aline 523 571 aline 666 523 aline 761 428 aline 809 333 aline 809 190 aline 761 95 aline 714 47 aline 571 -1 aline 380 -1 aline 238 47 aline 190 95 aline 142 190 aline 142 333 aline 190 428 aline 285 523 aline 428 571 aline 619 619 aline 714 666 aline 761 761 aline 761 857 aline 714 952 aline 571 1000 aline 380 1000 stroke dfont endchar dfont char=57 amove 190 142 aline 238 47 aline 380 0 aline 476 0 aline 619 47 aline 714 190 aline 761 428 aline 761 666 aline 714 857 aline 619 952 aline 476 1000 aline 428 1000 aline 285 952 aline 190 857 aline 142 714 aline 142 666 aline 190 523 aline 285 428 aline 428 380 aline 476 380 aline 619 428 aline 714 523 aline 761 666 stroke dfont endchar dfont char=58 amove 238 666 aline 190 619 aline 238 571 aline 285 619 aline 238 666 amove 238 95 aline 190 47 aline 238 -1 aline 285 47 aline 238 95 stroke dfont endchar dfont char=59 amove 190 -191 aline 238 -143 aline 285 -48 aline 285 47 aline 238 95 aline 190 47 aline 238 0 aline 285 47 amove 238 666 aline 190 619 aline 238 571 aline 285 619 aline 238 666 stroke dfont endchar dfont char=60 amove 952 857 aline 190 428 aline 952 0 stroke dfont endchar dfont char=61 amove 190 285 aline 1047 285 amove 1047 571 aline 190 571 stroke dfont endchar dfont char=62 amove 190 0 aline 952 428 aline 190 857 stroke dfont endchar dfont char=63 amove 142 761 aline 142 809 aline 190 904 aline 238 952 aline 333 1000 aline 523 1000 aline 619 952 aline 666 904 aline 714 809 aline 714 714 aline 666 619 aline 619 571 aline 428 476 aline 428 333 amove 428 95 aline 380 47 aline 428 -1 aline 476 47 aline 428 95 stroke dfont endchar dfont char=64 amove 523 238 aline 476 285 aline 428 380 aline 428 523 aline 476 666 aline 571 761 amove 857 761 aline 809 380 aline 809 285 aline 904 238 aline 999 238 aline 1095 333 aline 1142 476 aline 1142 571 aline 1095 714 aline 1047 809 aline 952 904 aline 857 952 aline 714 1000 aline 571 1000 aline 428 952 aline 333 904 aline 238 809 aline 190 714 aline 142 571 aline 142 428 aline 190 285 aline 238 190 aline 333 95 aline 428 47 aline 571 0 aline 714 0 aline 857 47 aline 952 95 aline 1000 142 amove 904 238 aline 857 285 aline 857 380 aline 904 761 amove 857 619 aline 809 714 aline 714 761 aline 571 761 aline 476 714 aline 428 666 aline 380 523 aline 380 380 aline 428 285 aline 523 238 aline 666 238 aline 761 285 aline 809 380 stroke dfont endchar dfont char=65 amove 0 0 aline 95 47 aline 238 190 aline 380 380 aline 571 714 aline 714 1000 aline 714 0 aline 666 142 aline 571 285 aline 476 380 aline 333 476 aline 238 476 aline 190 428 aline 190 333 aline 238 238 aline 333 142 aline 476 47 aline 619 0 aline 857 0 stroke dfont endchar dfont char=66 amove 428 142 aline 476 47 aline 571 0 aline 714 0 aline 809 47 aline 857 95 aline 904 190 aline 904 333 aline 857 428 aline 809 476 aline 666 523 aline 619 523 amove 666 523 aline 809 571 aline 904 619 aline 952 666 aline 1000 761 aline 1000 857 aline 952 952 aline 857 1000 aline 714 1000 aline 571 952 aline 476 904 aline 380 809 aline 285 666 aline 238 571 aline 190 428 aline 142 190 aline 142 47 aline 190 0 aline 238 0 aline 333 47 aline 428 142 aline 523 285 aline 571 380 aline 619 523 aline 666 714 aline 666 857 aline 619 904 stroke dfont endchar dfont char=67 amove 571 714 aline 571 666 aline 619 619 aline 714 619 aline 809 666 aline 857 761 aline 857 857 aline 809 952 aline 714 1000 aline 571 1000 aline 428 952 aline 333 857 aline 238 714 aline 190 619 aline 142 428 aline 142 238 aline 190 95 aline 238 47 aline 333 0 aline 428 0 aline 571 47 aline 666 142 aline 714 238 stroke dfont endchar dfont char=68 amove 619 1000 aline 523 952 aline 476 857 aline 428 666 aline 380 380 aline 333 238 aline 285 142 aline 190 47 aline 95 -1 aline 0 -1 aline -48 47 aline -48 142 aline 0 190 aline 95 190 aline 190 142 aline 285 47 aline 428 -1 aline 571 -1 aline 714 47 aline 809 142 aline 904 333 aline 952 571 aline 952 761 aline 904 904 aline 857 952 aline 761 1000 aline 619 1000 aline 523 904 aline 523 809 aline 571 666 aline 666 523 aline 761 428 aline 904 333 aline 1000 285 stroke dfont endchar dfont char=69 amove 666 809 aline 666 761 aline 714 714 aline 809 714 aline 857 761 aline 857 857 aline 809 952 aline 666 1000 aline 476 1000 aline 333 952 aline 285 857 aline 285 714 aline 333 619 aline 380 571 aline 523 523 aline 380 523 aline 238 476 aline 190 428 aline 142 333 aline 142 190 aline 190 95 aline 238 47 aline 380 -1 aline 523 -1 aline 666 47 aline 761 142 aline 809 238 stroke dfont endchar dfont char=70 amove 285 238 aline 190 285 aline 95 285 aline 47 238 aline 47 142 aline 95 47 aline 190 -1 aline 285 -1 aline 380 47 aline 476 142 aline 571 333 aline 666 619 aline 761 952 amove 1000 1000 aline 904 952 aline 761 952 aline 571 1000 aline 428 1000 aline 285 952 aline 238 857 aline 285 761 aline 380 714 aline 476 714 amove 428 523 aline 857 523 stroke dfont endchar dfont char=71 amove 0 0 aline 95 47 aline 285 238 aline 428 476 aline 476 619 aline 523 809 aline 523 952 aline 476 1000 aline 428 1000 aline 380 952 aline 333 857 aline 333 714 aline 380 619 aline 476 571 aline 666 571 aline 809 619 aline 857 666 aline 904 761 aline 904 476 aline 857 238 aline 809 142 aline 714 47 aline 571 0 aline 380 0 aline 238 47 aline 142 142 aline 95 238 aline 95 333 stroke dfont endchar dfont char=72 amove 47 142 aline 47 47 aline 95 0 aline 190 0 aline 285 95 aline 380 285 aline 476 571 aline 523 761 aline 523 857 aline 476 952 aline 380 1000 aline 333 1000 aline 238 952 aline 190 857 aline 190 809 aline 238 714 aline 333 666 amove 333 428 aline 761 571 aline 857 619 aline 1000 714 aline 1095 809 aline 1142 904 aline 1142 952 aline 1095 1000 aline 1047 1000 aline 952 904 aline 857 714 aline 761 428 aline 714 190 aline 714 47 aline 761 0 aline 809 0 aline 904 47 aline 952 95 aline 1047 238 stroke dfont endchar dfont char=73 amove 285 238 aline 190 285 aline 95 285 aline 47 238 aline 47 142 aline 95 47 aline 190 -1 aline 285 -1 aline 380 47 aline 476 142 aline 523 238 aline 619 476 aline 666 714 aline 666 857 aline 619 952 aline 571 1000 aline 476 1000 aline 428 952 aline 380 857 aline 380 714 aline 428 571 aline 476 476 aline 571 333 aline 666 238 stroke dfont endchar dfont char=74 amove 476 -143 aline 380 -1 aline 285 238 aline 238 523 aline 238 809 aline 285 952 aline 380 1000 aline 476 1000 aline 523 952 aline 571 809 aline 571 666 aline 523 428 aline 380 -1 aline 285 -286 aline 238 -429 aline 190 -524 aline 95 -572 aline 47 -524 aline 47 -429 aline 95 -286 aline 190 -143 aline 285 -48 aline 428 47 aline 619 142 stroke dfont endchar dfont char=75 amove 47 142 aline 47 47 aline 95 0 aline 190 0 aline 285 95 aline 380 285 aline 476 571 aline 523 761 aline 523 857 aline 476 952 aline 380 1000 aline 333 1000 aline 238 952 aline 190 857 aline 190 809 aline 238 714 aline 333 666 amove 476 571 aline 571 571 aline 666 619 aline 761 714 aline 857 857 aline 952 952 aline 1047 1000 aline 1095 1000 aline 1142 952 aline 1142 857 amove 1000 238 aline 904 95 aline 857 47 aline 761 -1 aline 714 -1 aline 666 47 aline 619 142 aline 619 476 aline 571 571 stroke dfont endchar dfont char=76 amove 190 428 aline 285 428 aline 476 476 aline 619 571 aline 714 666 aline 761 761 aline 761 904 aline 714 1000 aline 619 1000 aline 571 952 aline 523 857 aline 476 619 aline 428 380 aline 380 238 aline 333 142 aline 238 47 aline 142 0 aline 47 0 aline 0 47 aline 0 142 aline 47 190 aline 142 190 aline 238 142 aline 380 47 aline 523 0 aline 619 0 aline 761 47 aline 857 142 stroke dfont endchar dfont char=77 amove 238 0 aline 333 333 aline 380 523 aline 428 761 aline 428 857 aline 380 952 aline 285 1000 aline 238 1000 aline 142 952 aline 95 857 aline 95 809 aline 142 714 aline 238 666 amove 333 333 aline 476 714 aline 571 904 aline 619 952 aline 714 1000 aline 761 1000 aline 857 952 aline 904 857 aline 904 761 aline 857 523 aline 809 333 aline 714 0 amove 809 333 aline 952 714 aline 1047 904 aline 1095 952 aline 1190 1000 aline 1238 1000 aline 1333 952 aline 1380 857 aline 1380 761 aline 1333 523 aline 1238 190 aline 1238 47 aline 1285 0 aline 1333 0 aline 1428 47 aline 1476 95 aline 1571 238 stroke dfont endchar dfont char=78 amove 238 0 aline 333 333 aline 380 523 aline 428 761 aline 428 857 aline 380 952 aline 285 1000 aline 238 1000 aline 142 952 aline 95 857 aline 95 809 aline 142 714 aline 238 666 amove 333 333 aline 476 714 aline 571 904 aline 619 952 aline 714 1000 aline 809 1000 aline 904 952 aline 952 857 aline 952 761 aline 904 523 aline 809 190 aline 809 47 aline 857 0 aline 904 0 aline 1000 47 aline 1047 95 aline 1142 238 stroke dfont endchar dfont char=79 amove 571 1000 aline 428 952 aline 333 857 aline 238 714 aline 190 619 aline 142 428 aline 142 238 aline 190 95 aline 238 47 aline 333 0 aline 428 0 aline 571 47 aline 666 142 aline 761 285 aline 809 380 aline 857 571 aline 857 761 aline 809 904 aline 761 952 aline 666 1000 aline 571 1000 aline 476 904 aline 476 761 aline 523 619 aline 619 476 aline 714 380 aline 857 285 aline 952 238 stroke dfont endchar dfont char=80 amove 619 904 aline 666 857 aline 666 714 aline 619 523 aline 571 380 aline 523 285 aline 428 142 aline 333 47 aline 238 0 aline 190 0 aline 142 47 aline 142 190 aline 190 428 aline 238 571 aline 285 666 aline 380 809 aline 476 904 aline 571 952 aline 714 1000 aline 952 1000 aline 1047 952 aline 1095 904 aline 1142 809 aline 1142 666 aline 1095 571 aline 1047 523 aline 952 476 aline 809 476 aline 714 523 aline 666 571 stroke dfont endchar dfont char=81 amove 619 714 aline 571 619 aline 523 571 aline 428 523 aline 333 523 aline 285 619 aline 285 714 aline 333 857 aline 428 952 aline 571 999 aline 714 999 aline 809 952 aline 857 857 aline 857 666 aline 809 523 aline 714 380 aline 523 190 aline 380 95 aline 285 47 aline 142 -1 aline 47 -1 aline 0 47 aline 0 142 aline 47 190 aline 142 190 aline 238 142 aline 380 47 aline 523 -1 aline 666 -1 aline 809 47 aline 904 142 stroke dfont endchar dfont char=82 amove 619 904 aline 666 857 aline 666 714 aline 619 523 aline 571 380 aline 523 285 aline 428 142 aline 333 47 aline 238 0 aline 190 0 aline 142 47 aline 142 190 aline 190 428 aline 238 571 aline 285 666 aline 380 809 aline 476 904 aline 571 952 aline 714 1000 aline 904 1000 aline 1000 952 aline 1047 904 aline 1095 809 aline 1095 666 aline 1047 571 aline 1000 523 aline 904 476 aline 761 476 aline 619 523 aline 666 476 aline 714 380 aline 714 142 aline 761 47 aline 857 0 aline 952 47 aline 1000 95 aline 1095 238 stroke dfont endchar dfont char=83 amove 0 0 aline 95 47 aline 190 142 aline 333 333 aline 428 476 aline 523 666 aline 571 809 aline 571 952 aline 523 1000 aline 476 1000 aline 428 952 aline 380 857 aline 380 761 aline 428 666 aline 523 571 aline 666 476 aline 761 380 aline 809 285 aline 809 190 aline 761 95 aline 714 47 aline 571 0 aline 380 0 aline 238 47 aline 142 142 aline 95 238 aline 95 333 stroke dfont endchar dfont char=84 amove 285 238 aline 190 285 aline 95 285 aline 47 238 aline 47 142 aline 95 47 aline 190 -1 aline 285 -1 aline 380 47 aline 476 142 aline 571 333 aline 666 619 aline 761 952 amove 1000 1000 aline 904 952 aline 761 952 aline 571 1000 aline 428 1000 aline 285 952 aline 238 857 aline 285 761 aline 380 714 aline 476 714 stroke dfont endchar dfont char=85 amove 238 666 aline 142 714 aline 95 809 aline 95 857 aline 142 952 aline 238 1000 aline 285 1000 aline 380 952 aline 428 857 aline 428 761 aline 380 571 aline 333 428 aline 285 238 aline 285 142 aline 333 47 aline 428 0 aline 523 0 aline 619 47 aline 666 95 aline 761 285 aline 904 666 aline 1000 1000 amove 904 666 aline 857 476 aline 809 190 aline 809 47 aline 857 0 aline 904 0 aline 1000 47 aline 1047 95 aline 1142 238 stroke dfont endchar dfont char=86 amove 238 666 aline 142 714 aline 95 809 aline 95 857 aline 142 952 aline 238 1000 aline 285 1000 aline 380 952 aline 428 857 aline 428 761 aline 380 571 aline 333 428 aline 285 238 aline 285 95 aline 333 0 aline 428 0 aline 523 47 aline 666 190 aline 761 333 aline 857 523 aline 904 666 aline 952 857 aline 952 952 aline 904 1000 aline 857 1000 aline 809 952 aline 761 857 aline 761 761 aline 809 619 aline 904 523 aline 1000 476 stroke dfont endchar dfont char=87 amove 380 0 aline 428 714 aline 428 857 aline 380 952 aline 285 1000 aline 238 1000 aline 142 952 aline 95 857 aline 95 809 aline 142 714 aline 238 666 amove 380 0 aline 857 1000 aline 761 0 aline 904 333 aline 1047 619 aline 1190 809 aline 1333 952 aline 1428 1000 stroke dfont endchar dfont char=88 amove 47 142 aline 47 47 aline 95 0 aline 190 0 aline 285 47 aline 380 142 aline 476 285 aline 666 714 aline 761 857 aline 857 952 aline 952 1000 aline 1047 1000 aline 1095 952 aline 1095 857 amove 761 285 aline 857 285 aline 904 238 aline 904 142 aline 857 47 aline 761 0 aline 666 0 aline 571 47 aline 523 142 aline 523 285 aline 619 714 aline 619 857 aline 571 952 aline 476 1000 aline 380 1000 aline 285 952 aline 238 857 aline 238 761 aline 285 714 aline 380 714 stroke dfont endchar dfont char=89 amove 238 666 aline 142 714 aline 95 809 aline 95 857 aline 142 952 aline 238 1000 aline 285 1000 aline 380 952 aline 428 857 aline 428 761 aline 380 571 aline 333 428 aline 285 238 aline 285 142 aline 333 47 aline 380 0 aline 476 0 aline 571 47 aline 666 142 aline 761 285 aline 809 380 aline 904 666 amove 1000 1000 aline 904 666 aline 761 190 aline 666 -96 aline 571 -334 aline 476 -524 aline 380 -572 aline 333 -524 aline 333 -429 aline 380 -286 aline 476 -143 aline 619 0 aline 761 95 aline 1000 238 stroke dfont endchar dfont char=90 amove 619 714 aline 571 619 aline 523 571 aline 428 523 aline 333 523 aline 285 619 aline 285 714 aline 333 857 aline 428 952 aline 571 999 aline 714 999 aline 809 952 aline 857 857 aline 857 666 aline 809 523 aline 714 333 aline 571 190 aline 380 47 aline 285 -1 aline 142 -1 aline 95 47 aline 95 142 aline 142 190 aline 285 190 aline 380 142 aline 428 95 aline 476 -1 aline 476 -143 aline 428 -286 aline 380 -381 aline 285 -524 aline 190 -572 aline 142 -524 aline 142 -429 aline 190 -286 aline 285 -143 aline 428 -1 aline 571 95 aline 857 238 stroke dfont endchar dfont char=91 amove 190 -334 aline 190 1190 aline 523 1190 amove 238 1190 aline 238 -334 amove 190 -334 aline 523 -334 stroke dfont endchar stroke dfont endchar dfont char=93 amove 142 -334 aline 476 -334 aline 476 1190 aline 142 1190 amove 428 1190 aline 428 -334 stroke dfont endchar stroke dfont endchar stroke dfont endchar dfont char=96 amove 238 904 aline 285 952 aline 238 1000 aline 190 952 aline 190 857 aline 238 761 aline 285 714 stroke dfont endchar dfont char=97 amove 428 285 aline 380 380 aline 285 428 aline 190 428 aline 95 380 aline 47 333 aline 0 238 aline 0 142 aline 47 47 aline 142 0 aline 238 0 aline 333 47 aline 380 142 aline 476 428 aline 428 190 aline 428 47 aline 476 0 aline 523 0 aline 619 47 aline 666 95 aline 761 238 stroke dfont endchar dfont char=98 amove 0 238 aline 95 380 aline 238 619 aline 285 714 aline 333 857 aline 333 952 aline 285 1000 aline 190 952 aline 142 857 aline 95 666 aline 47 333 aline 47 47 aline 95 -1 aline 142 -1 aline 238 47 aline 333 142 aline 380 285 aline 380 428 aline 428 238 aline 476 190 aline 571 190 aline 666 238 stroke dfont endchar dfont char=99 amove 333 333 aline 333 380 aline 285 428 aline 190 428 aline 95 380 aline 47 333 aline 0 238 aline 0 142 aline 47 47 aline 142 0 aline 285 0 aline 428 95 aline 523 238 stroke dfont endchar dfont char=100 amove 428 285 aline 380 380 aline 285 428 aline 190 428 aline 95 380 aline 47 333 aline 0 238 aline 0 142 aline 47 47 aline 142 0 aline 238 0 aline 333 47 aline 380 142 aline 666 1000 amove 476 428 aline 428 190 aline 428 47 aline 476 0 aline 523 0 aline 619 47 aline 666 95 aline 761 238 stroke dfont endchar dfont char=101 amove 47 95 aline 142 142 aline 190 190 aline 238 285 aline 238 380 aline 190 428 aline 142 428 aline 47 380 aline 0 285 aline 0 142 aline 47 47 aline 142 0 aline 238 0 aline 333 47 aline 380 95 aline 476 238 stroke dfont endchar dfont char=102 amove 0 238 aline 190 476 aline 285 619 aline 333 714 aline 380 857 aline 380 952 aline 333 1000 aline 238 952 aline 190 857 aline 95 476 aline -48 47 aline -191 -286 aline -239 -429 aline -239 -524 aline -191 -572 aline -96 -524 aline -48 -381 aline 0 47 aline 47 -1 aline 142 -1 aline 238 47 aline 285 95 aline 380 238 stroke dfont endchar dfont char=103 amove 380 95 aline 333 47 aline 238 0 aline 142 0 aline 47 47 aline -1 142 aline -1 238 aline 47 333 aline 95 380 aline 190 428 aline 285 428 aline 380 380 aline 428 285 amove 476 428 aline 380 95 aline 190 -429 aline 142 -524 aline 47 -572 aline 0 -524 aline 0 -429 aline 47 -286 aline 190 -143 aline 333 -48 aline 428 0 aline 571 95 aline 714 238 stroke dfont endchar dfont char=104 amove 0 238 aline 95 380 aline 238 619 aline 285 714 aline 333 857 aline 333 952 aline 285 1000 aline 190 952 aline 142 857 aline 95 666 aline 47 380 aline 0 -1 aline 47 142 aline 95 238 aline 190 380 aline 285 428 aline 380 428 aline 428 380 aline 428 285 aline 380 142 aline 380 47 aline 428 -1 aline 476 -1 aline 571 47 aline 619 95 aline 714 238 stroke dfont endchar dfont char=105 amove 142 666 aline 142 619 aline 190 619 aline 190 666 aline 142 666 amove 0 238 aline 95 428 aline 0 142 aline 0 47 aline 47 0 aline 95 0 aline 190 47 aline 238 95 aline 333 238 stroke dfont endchar dfont char=106 amove 142 666 aline 142 619 aline 190 619 aline 190 666 aline 142 666 amove 0 238 aline 95 428 aline -191 -429 aline -239 -524 aline -334 -572 aline -381 -524 aline -381 -429 aline -334 -286 aline -191 -143 aline -48 -48 aline 47 0 aline 190 95 aline 333 238 stroke dfont endchar dfont char=107 amove 0 238 aline 95 380 aline 238 619 aline 285 714 aline 333 857 aline 333 952 aline 285 1000 aline 190 952 aline 142 857 aline 95 666 aline 47 380 aline 0 -1 aline 47 142 aline 95 238 aline 190 380 aline 285 428 aline 380 428 aline 428 380 aline 428 285 aline 333 238 aline 190 238 aline 285 190 aline 333 47 aline 380 -1 aline 428 -1 aline 523 47 aline 571 95 aline 666 238 stroke dfont endchar dfont char=108 amove 0 238 aline 95 380 aline 238 619 aline 285 714 aline 333 857 aline 333 952 aline 285 1000 aline 190 952 aline 142 857 aline 95 666 aline 47 333 aline 47 47 aline 95 -1 aline 142 -1 aline 238 47 aline 285 95 aline 380 238 stroke dfont endchar dfont char=109 amove 142 0 aline 190 142 aline 238 333 aline 238 380 aline 190 428 aline 95 380 aline 0 238 amove 190 142 aline 238 238 aline 333 380 aline 428 428 aline 523 428 aline 571 380 aline 571 333 aline 523 142 aline 476 0 amove 523 142 aline 571 238 aline 666 380 aline 761 428 aline 857 428 aline 904 380 aline 904 285 aline 857 142 aline 857 47 aline 904 0 aline 952 0 aline 1047 47 aline 1095 95 aline 1190 238 stroke dfont endchar dfont char=110 amove 142 0 aline 190 142 aline 238 333 aline 238 380 aline 190 428 aline 95 380 aline 0 238 amove 190 142 aline 238 238 aline 333 380 aline 428 428 aline 523 428 aline 571 380 aline 571 285 aline 523 142 aline 523 47 aline 571 0 aline 619 0 aline 714 47 aline 761 95 aline 857 238 stroke dfont endchar dfont char=111 amove 285 428 aline 190 428 aline 95 380 aline 47 333 aline 0 238 aline 0 142 aline 47 47 aline 142 -1 aline 238 -1 aline 333 47 aline 380 95 aline 428 190 aline 428 285 aline 380 380 aline 285 428 aline 238 380 aline 238 285 aline 285 190 aline 380 142 aline 523 142 aline 619 190 aline 666 238 stroke dfont endchar dfont char=112 amove 0 238 aline 95 380 aline 142 476 aline 95 285 aline -191 -572 amove 95 285 aline 142 380 aline 238 428 aline 333 428 aline 428 380 aline 476 285 aline 476 190 aline 428 95 aline 380 47 aline 285 0 amove 95 47 aline 190 0 aline 333 0 aline 476 47 aline 571 95 aline 714 238 stroke dfont endchar dfont char=113 amove 333 47 aline 238 0 aline 142 0 aline 47 47 aline 0 142 aline 0 238 aline 47 333 aline 95 380 aline 190 428 aline 285 428 aline 380 380 aline 428 285 amove 476 428 aline 428 285 aline 333 47 aline 190 -286 aline 142 -429 aline 142 -524 aline 190 -572 aline 285 -524 aline 333 -381 aline 333 -48 aline 428 0 aline 571 95 aline 714 238 stroke dfont endchar dfont char=114 amove 0 238 aline 95 380 aline 142 476 aline 142 380 aline 285 380 aline 333 333 aline 333 238 aline 285 95 aline 285 47 aline 333 -1 aline 380 -1 aline 476 47 aline 523 95 aline 619 238 stroke dfont endchar dfont char=115 amove 0 238 aline 95 380 aline 142 476 aline 142 380 aline 238 238 aline 285 142 aline 285 47 aline 190 -1 amove 0 47 aline 95 -1 aline 285 -1 aline 380 47 aline 428 95 aline 523 238 stroke dfont endchar dfont char=116 amove 0 238 aline 95 380 aline 190 571 amove 47 619 aline 380 619 amove 333 1000 aline 47 142 aline 47 47 aline 95 0 aline 190 0 aline 285 47 aline 333 95 aline 428 238 stroke dfont endchar dfont char=117 amove 0 238 aline 95 428 aline 0 142 aline 0 47 aline 47 0 aline 142 0 aline 238 47 aline 333 142 aline 428 285 amove 476 428 aline 380 142 aline 380 47 aline 428 0 aline 476 0 aline 571 47 aline 619 95 aline 714 238 stroke dfont endchar dfont char=118 amove 0 238 aline 95 428 aline 47 190 aline 47 47 aline 95 0 aline 142 0 aline 285 47 aline 380 142 aline 428 285 aline 428 428 aline 476 238 aline 523 190 aline 619 190 aline 714 238 stroke dfont endchar dfont char=119 amove 333 142 aline 238 47 aline 142 0 aline 47 0 aline 0 95 aline 0 190 aline 47 333 aline 142 428 amove 428 428 aline 333 142 aline 333 47 aline 380 0 aline 476 0 aline 571 47 aline 666 142 aline 714 285 aline 714 428 aline 761 238 aline 809 190 aline 904 190 aline 1000 238 stroke dfont endchar dfont char=120 amove 47 47 aline 95 0 aline 190 0 aline 238 47 aline 428 380 aline 476 428 aline 571 428 aline 619 380 amove 761 238 aline 666 95 aline 523 0 aline 380 0 aline 333 47 aline 333 380 aline 285 428 aline 190 428 aline 95 380 aline 0 238 stroke dfont endchar dfont char=121 amove 0 238 aline 95 428 aline 0 142 aline 0 47 aline 47 0 aline 142 0 aline 238 47 aline 333 142 aline 428 285 amove 476 428 aline 190 -429 aline 142 -524 aline 47 -572 aline 0 -524 aline 0 -429 aline 47 -286 aline 190 -143 aline 333 -48 aline 428 0 aline 571 95 aline 714 238 stroke dfont endchar dfont char=122 amove 0 238 aline 95 380 aline 190 428 aline 285 428 aline 380 333 aline 380 238 aline 333 142 aline 238 47 aline 95 0 aline 190 -48 aline 238 -143 aline 238 -286 aline 190 -429 aline 142 -524 aline 47 -572 aline 0 -524 aline 0 -429 aline 47 -286 aline 190 -143 aline 333 -48 aline 523 95 aline 666 238 stroke dfont endchar dfont char=123 amove 380 238 aline 333 95 aline 333 -96 aline 380 -239 amove 476 -334 aline 333 -191 aline 285 -48 aline 285 47 aline 333 190 aline 428 285 aline 428 333 aline 238 428 aline 428 523 aline 428 571 aline 333 666 aline 285 809 aline 285 904 aline 333 1047 aline 476 1190 amove 380 1095 aline 333 952 aline 333 761 aline 380 619 stroke dfont endchar dfont char=124 amove 190 1190 aline 190 -334 stroke dfont endchar dfont char=125 amove 238 -334 aline 380 -191 aline 428 -48 aline 428 47 aline 380 190 aline 285 285 aline 285 333 aline 476 428 aline 285 523 aline 285 571 aline 380 666 aline 428 809 aline 428 904 aline 380 1047 aline 238 1190 amove 333 1095 aline 380 952 aline 380 761 aline 333 619 amove 333 238 aline 380 95 aline 380 -96 aline 333 -239 stroke dfont endchar dfont char=126 amove 285 1000 aline 190 952 aline 142 857 aline 142 761 aline 190 666 aline 285 619 aline 380 619 aline 476 666 aline 523 761 aline 523 857 aline 476 952 aline 380 1000 aline 285 1000 stroke dfont endchar gle-graphics-4.2.4c/src/fonts/texstd.enc0000664000000000000000000000645511676336540016700 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 0; capital gamma 1; capital delta 2; capital theta 3; capital lambda 4; capital epsilon 5; captial pi 6; capital sigma 7; captial gamma 8; capital phi 9; capital psi 10; capital omega 11; ligature ff 12; ligature fi 13; ligature fl 14; ligature ffi 15; ligature ffl 16; dot-less i $0237, 17; dot-less j 18; accent \ 19; accent / 20; caron 21; breve 22; boriz bar 23; ring 24; ognek 25; german ss 26; ae 27; oe 28; oring 29; AE 30; OE 31; Oring 123; endash 124; emdash 125; accent // 126; accent ~ 127; accent ë $2020; dagger $2021; double dagger $2022; bullet $2030; per mille $00C6, 29; AE $00D8, 31; Oslash $0153, 27; oe $0152, 30; OE $00E6, 26; ae $00F8, 28; oslash gle-graphics-4.2.4c/src/fonts/texcmex.gle0000664000000000000000000044274311676336540017050 0ustar rootrootdfont file_name="CMEX10" dfont font_name="CMEX10" dfont design= .35146 dfont slant= 0 dfont space= 0 dfont stretch= 0 dfont shrink= 0 dfont x_hei= .151323 dfont quad= .351461 dfont extra_space= 0 dfont rulethickness= .039999 dfont bigop1= .111112 dfont bigop2= .166667 dfont bigop3= .2 dfont bigop4= .6 dfont bigop5= .1 dfont paint="FILL" !------------------ end of main parameters dfont char=0 !-------------- Beginning of new char. dfont wid=.458336 hei=.039999 dep=1.16001 italic=0 dfont next_char=16 set path ! start of curve newpath ! start of curve amove .14351 .01143 aline .14478 .01016 aline .14478 .00762 bezier .112221 -.253104E-01 .934872E-01 -.698839E-01 .08509 -.11557 aline .08382 -.11684 aline .08382 -.12319 aline .08255 -.12446 aline .08255 -.13081 aline .08128 -.13208 aline .08128 -.14097 aline .08001 -.14224 aline .08001 -.15367 aline .07874 -.15494 aline .07874 -.17145 aline .07747 -.17272 aline .07747 -.22352 aline .07874 -.22479 aline .07874 -.2413 aline .08001 -.24257 bezier .808793E-01 -.272449 .891178E-01 -.301709 .09906 -.33147 bezier .109521 -.358549 .124779 -.383166 .14478 -.40386 aline .14478 -.4064 aline .14351 -.40767 aline .13843 -.40767 bezier .840611E-01 -.363178 .573401E-01 -.289813 .05588 -.22225 aline .05461 -.22098 aline .05461 -.17526 aline .05588 -.17399 bezier .573401E-01 -.106427 .840611E-01 -.330615E-01 .13843 .01143 aline .14351 .01143 closepath ! end of curve fill dfont endchar dfont char=1 !-------------- Beginning of new char. dfont wid=.458336 hei=.039999 dep=1.16001 italic=0 dfont next_char=17 set path ! start of curve newpath ! start of curve amove .02286 .01143 bezier .772289E-01 -.330615E-01 .10395 -.106427 .10541 -.17399 aline .10668 -.17526 aline .10668 -.22098 aline .10541 -.22225 bezier .10395 -.289813 .077229 -.363179 .02286 -.40767 aline .01778 -.40767 aline .01651 -.4064 aline .01651 -.40386 bezier .490686E-01 -.37093 .678028E-01 -.326356 .0762 -.28067 aline .07747 -.2794 aline .07747 -.27305 aline .07874 -.27178 aline .07874 -.26543 aline .08001 -.26416 aline .08001 -.25527 aline .08128 -.254 aline .08128 -.24257 aline .08255 -.2413 aline .08255 -.22479 aline .08382 -.22352 aline .08382 -.17272 aline .08255 -.17145 aline .08255 -.15494 aline .08128 -.15367 bezier .804107E-01 -.123791 .721722E-01 -.094531 .06223 -.06477 bezier .517689E-01 -.376913E-01 .365112E-01 -.130745E-01 .01651 .00762 aline .01651 .01016 aline .01778 .01143 aline .02286 .01143 closepath ! end of curve fill dfont endchar dfont char=2 !-------------- Beginning of new char. dfont wid=.416669 hei=.039999 dep=1.16001 italic=0 dfont next_char="h" set path ! start of curve newpath ! start of curve amove .13716 .01143 aline .13716 -.00254 aline .08636 -.00254 aline .08509 -.00381 aline .08509 -.39243 aline .08636 -.3937 aline .13716 -.3937 aline .13716 -.40767 aline .07112 -.40767 aline .07112 .01143 aline .13716 .01143 closepath ! end of curve fill dfont endchar dfont char=3 !-------------- Beginning of new char. dfont wid=.416669 hei=.039999 dep=1.16001 italic=0 dfont next_char="i" set path ! start of curve newpath ! start of curve amove .07493 .01143 aline .07493 -.40767 aline .00889 -.40767 aline .00889 -.3937 aline .05969 -.3937 aline .06096 -.39243 aline .06096 -.00381 aline .05969 -.00254 aline .00889 -.00254 aline .00889 .01143 aline .07493 .01143 closepath ! end of curve fill dfont endchar dfont char=4 !-------------- Beginning of new char. dfont wid=.472224 hei=.039999 dep=1.16001 italic=0 dfont next_char="j" set path ! start of curve newpath ! start of curve amove .08509 .01143 aline .08509 -.39243 aline .08636 -.3937 aline .15748 -.3937 aline .15748 -.40767 aline .07112 -.40767 aline .07112 .01143 aline .08509 .01143 closepath ! end of curve fill dfont endchar dfont char=5 !-------------- Beginning of new char. dfont wid=.472224 hei=.039999 dep=1.16001 italic=0 dfont next_char="k" set path ! start of curve newpath ! start of curve amove .09525 .01143 aline .09525 -.40767 aline .00889 -.40767 aline .00889 -.3937 aline .08001 -.3937 aline .08128 -.39243 aline .08128 .01143 aline .09525 .01143 closepath ! end of curve fill dfont endchar dfont char=6 !-------------- Beginning of new char. dfont wid=.472224 hei=.039999 dep=1.16001 italic=0 dfont next_char="l" set path ! start of curve newpath ! start of curve amove .15748 .01143 aline .15748 -.00254 aline .08636 -.00254 aline .08509 -.00381 aline .08509 -.40767 aline .07112 -.40767 aline .07112 .01143 aline .15748 .01143 closepath ! end of curve fill dfont endchar dfont char=7 !-------------- Beginning of new char. dfont wid=.472224 hei=.039999 dep=1.16001 italic=0 dfont next_char="m" set path ! start of curve newpath ! start of curve amove .09525 .01143 aline .09525 -.40767 aline .08128 -.40767 aline .08128 -.00381 aline .08001 -.00254 aline .00889 -.00254 aline .00889 .01143 aline .09525 .01143 closepath ! end of curve fill dfont endchar dfont char=8 !-------------- Beginning of new char. dfont wid=.583336 hei=.039999 dep=1.16001 italic=0 dfont next_char="n" set path ! start of curve newpath ! start of curve amove .16129 .01143 aline .16256 .01016 aline .16256 .00508 bezier .143782 -.346585E-02 .120125 -.126029E-01 .11557 -.03556 aline .1143 -.03683 aline .1143 -.1524 bezier .108626 -.178806 .814177E-01 -.190065 .05842 -.19812 bezier .814177E-01 -.206175 .108626 -.217434 .1143 -.24384 aline .1143 -.35941 bezier .120173 -.381093 .140935 -.39338 .16129 -.40005 aline .16256 -.40132 aline .16256 -.4064 aline .16129 -.40767 bezier .137568 -.405256 .11361 -.394104 .09779 -.37592 aline .09271 -.36576 aline .09144 -.36068 aline .09144 -.24511 bezier .873988E-01 -.233039 .805679E-01 -.220699 .06858 -.21463 aline .06731 -.21336 aline .06477 -.21209 aline .0635 -.21082 aline .05334 -.20574 aline .04572 -.2032 aline .04318 -.20193 aline .04191 -.20066 aline .04191 -.19558 aline .04318 -.19431 bezier .632452E-01 -.187029 .858397E-01 -.175268 .09017 -.1524 aline .09144 -.15113 aline .09144 -.03556 bezier .985938E-01 -.710893E-02 .129576 .408575E-02 .15494 .01143 aline .16129 .01143 closepath ! end of curve fill dfont endchar dfont char=9 !-------------- Beginning of new char. dfont wid=.583336 hei=.039999 dep=1.16001 italic=0 dfont next_char="o" set path ! start of curve newpath ! start of curve amove .04953 .01143 bezier .752947E-01 .415885E-02 .106963 -.665241E-02 .1143 -.03556 aline .1143 -.15113 bezier .119586 -.172253 .138609 -.186575 .15875 -.19304 aline .16129 -.19431 aline .16256 -.19558 aline .16256 -.20066 bezier .143311 -.209552 .119563 -.220138 .11557 -.24384 aline .1143 -.24511 aline .1143 -.36068 bezier .106963 -.389588 .752947E-01 -.400399 .04953 -.40767 aline .04318 -.40767 aline .04191 -.4064 aline .04191 -.40132 bezier .607427E-01 -.392297 .856622E-01 -.384241 .09017 -.36068 aline .09144 -.35941 aline .09144 -.24384 bezier .973389E-01 -.217681 .123888 -.205339 .14732 -.19812 bezier .123888 -.190901 .973389E-01 -.178559 .09144 -.1524 aline .09144 -.03683 aline .09017 -.03556 bezier .856622E-01 -.119992E-01 .607427E-01 -.394333E-02 .04191 .00508 aline .04191 .01016 aline .04318 .01143 closepath ! end of curve fill dfont endchar dfont char=10 !-------------- Beginning of new char. dfont wid=.472224 hei=.039999 dep=1.16001 italic=0 dfont next_char="D" set path ! start of curve newpath ! start of curve amove .13462 .01143 aline .13843 .00762 aline .13843 .00127 bezier .109164 -.653061E-01 .791816E-01 -.131665 .512763E-01 -.198755 bezier .791816E-01 -.265845 .109164 -.332204 .13843 -.39878 aline .13843 -.40513 aline .13462 -.40894 aline .12827 -.40894 bezier .112248 -.382344 .102986 -.351723 .0889 -.32385 bezier .071457 -.28307 .536771E-01 -.24243 .03556 -.20193 aline .03556 -.19558 bezier .660384E-01 -.127598 .949745E-01 -.589772E-01 .12573 .00889 aline .12827 .01143 aline .13462 .01143 closepath ! end of curve fill dfont endchar dfont char=11 !-------------- Beginning of new char. dfont wid=.472224 hei=.039999 dep=1.16001 italic=0 dfont next_char="E" set path ! start of curve newpath ! start of curve amove .0381 .01143 bezier .541224E-01 -.151657E-01 .633837E-01 -.457868E-01 .07747 -.07366 bezier .094913 -.11444 .112693 -.15508 .13081 -.19558 aline .13081 -.20193 bezier .100332 -.269912 .713953E-01 -.338533 .04064 -.4064 aline .0381 -.40894 aline .03175 -.40894 aline .02794 -.40513 aline .02794 -.39878 bezier .572066E-01 -.332204 .087188 -.265845 .115094 -.198755 bezier .087188 -.131665 .572066E-01 -.065306 .02794 .00127 aline .02794 .00762 aline .03175 .01143 aline .0381 .01143 closepath ! end of curve fill dfont endchar dfont char=12 !-------------- Beginning of new char. dfont wid=.333334 hei=0 dep=.600006 italic=0 dfont ext_top=0 ext_mid=0 ext_bot=0 ext_rep=12 set path ! start of curve newpath ! start of curve amove .06223 .00508 aline .06604 .00127 aline .06604 -.2159 aline .06223 -.21971 aline .05842 -.22098 aline .05461 -.21971 aline .0508 -.2159 aline .0508 .00127 aline .05461 .00508 aline .05842 .00635 closepath ! end of curve fill dfont endchar dfont char=13 !-------------- Beginning of new char. dfont wid=.555557 hei=0 dep=.600006 italic=0 dfont ext_top=0 ext_mid=0 ext_bot=0 ext_rep=13 set path ! start of curve newpath ! start of curve amove .06223 .00508 aline .06604 .00127 aline .06604 -.2159 aline .06223 -.21971 aline .05842 -.22098 aline .05461 -.21971 aline .0508 -.2159 aline .0508 .00127 aline .05461 .00508 aline .05842 .00635 closepath ! end of curve ! start of curve amove .14097 .00508 aline .14478 .00127 aline .14478 -.2159 aline .14097 -.21971 aline .13716 -.22098 aline .13335 -.21971 aline .12954 -.2159 aline .12954 .00127 aline .13335 .00508 aline .13716 .00635 closepath ! end of curve fill dfont endchar dfont char=14 !-------------- Beginning of new char. dfont wid=.577779 hei=.039999 dep=1.16001 italic=0 dfont next_char="." set path ! start of curve newpath ! start of curve amove .1778 .01143 aline .18034 .01016 aline .18161 .00889 aline .18288 .00635 bezier .179005 -.158341E-01 .167699 -.366185E-01 .16129 -.05842 bezier .117854 -.174084 .777851E-01 -.291525 .03302 -.4064 aline .03048 -.40767 aline .0254 -.40767 aline .02286 -.4064 aline .02159 -.40513 aline .02032 -.40259 bezier .241949E-01 -.380406 .355008E-01 -.359621 .04191 -.33782 bezier .853465E-01 -.222156 .125415 -.104715 .17018 .01016 aline .17272 .01143 closepath ! end of curve fill dfont endchar dfont char=15 !-------------- Beginning of new char. dfont wid=.577779 hei=.039999 dep=1.16001 italic=0 dfont next_char="/" set path ! start of curve newpath ! start of curve amove .03048 .01143 aline .03302 .01016 bezier .849072E-01 -.124643 .132583 -.26181 .18288 -.39751 aline .18288 -.40259 aline .18161 -.40513 aline .18034 -.4064 aline .1778 -.40767 aline .17272 -.40767 aline .17018 -.4064 bezier .118293 -.271597 .706167E-01 -.13443 .02032 .00127 aline .02032 .00635 aline .02159 .00889 aline .02286 .01016 aline .0254 .01143 closepath ! end of curve fill dfont endchar dfont char=16 !-------------- Beginning of new char. dfont wid=.597224 hei=.039999 dep=1.76002 italic=0 dfont next_char=18 set path ! start of curve newpath ! start of curve amove .19558 .01143 aline .19685 .01016 aline .19685 .00762 bezier .176055 -.123387E-01 .159431 -.353033E-01 .14478 -.05969 aline .12954 -.09017 bezier .109044 -.137089 .986175E-01 -.188782 .09271 -.23622 aline .09271 -.25019 aline .09144 -.25146 aline .09144 -.27178 aline .09017 -.27305 aline .09017 -.33401 aline .09144 -.33528 aline .09144 -.3556 aline .09271 -.35687 aline .09271 -.37084 aline .09398 -.37211 aline .09398 -.38227 aline .09525 -.38354 aline .09525 -.39243 aline .09652 -.3937 bezier .101061 -.434451 .112964 -.477558 .12954 -.51689 aline .14478 -.54737 bezier .159431 -.571757 .176055 -.594721 .19685 -.61468 aline .19685 -.61722 aline .19558 -.61849 aline .18415 -.61849 bezier .156719 -.594749 .134783 -.56581 .11684 -.53467 aline .10287 -.50673 bezier .837178E-01 -.462489 .716478E-01 -.414141 .06858 -.3683 aline .06731 -.36703 aline .06731 -.35433 aline .06604 -.35306 aline .06604 -.33401 aline .06477 -.33274 aline .06477 -.27432 aline .06604 -.27305 aline .06604 -.254 aline .06731 -.25273 bezier .673749E-01 -.233159 .712749E-01 -.216112 .07366 -.19685 bezier .794096E-01 -.164474 .896033E-01 -.131086 .10287 -.10033 aline .11684 -.07239 bezier .134783 -.412503E-01 .156719 -.012311 .18415 .01143 aline .19558 .01143 closepath ! end of curve fill dfont endchar dfont char=17 !-------------- Beginning of new char. dfont wid=.597224 hei=.039999 dep=1.76002 italic=0 dfont next_char=19 set path ! start of curve newpath ! start of curve amove .0254 .01143 bezier .528311E-01 -.012311 .747671E-01 -.412503E-01 .09271 -.07239 aline .10668 -.10033 bezier .125832 -.144571 .137902 -.192919 .14097 -.23876 aline .14224 -.24003 aline .14224 -.25273 aline .14351 -.254 aline .14351 -.27305 aline .14478 -.27432 aline .14478 -.33274 aline .14351 -.33401 aline .14351 -.35306 aline .14224 -.35433 bezier .142175 -.373901 .138275 -.390948 .13589 -.41021 bezier .13014 -.442586 .119947 -.475974 .10668 -.50673 aline .09271 -.53467 bezier .747671E-01 -.56581 .528311E-01 -.594749 .0254 -.61849 aline .01397 -.61849 aline .0127 -.61722 aline .0127 -.61468 bezier .334946E-01 -.594721 .501188E-01 -.571757 .06477 -.54737 aline .08001 -.51689 bezier .100506 -.469971 .110932 -.418278 .11684 -.37084 aline .11684 -.35687 aline .11811 -.3556 aline .11811 -.33528 aline .11938 -.33401 aline .11938 -.27305 aline .11811 -.27178 aline .11811 -.25146 aline .11684 -.25019 aline .11684 -.23622 aline .11557 -.23495 aline .11557 -.22479 aline .1143 -.22352 aline .1143 -.21463 aline .11303 -.21336 bezier .108489 -.172609 .965863E-01 -.129502 .08001 -.09017 aline .06477 -.05969 bezier .501188E-01 -.353033E-01 .334946E-01 -.123387E-01 .0127 .00762 aline .0127 .01016 aline .01397 .01143 aline .0254 .01143 closepath ! end of curve fill dfont endchar dfont char=18 !-------------- Beginning of new char. dfont wid=.736115 hei=.039999 dep=2.36003 italic=0 dfont next_char=32 set path ! start of curve newpath ! start of curve amove .24511 .01143 aline .24638 .01016 aline .24638 .00762 bezier .199181 -.375081E-01 .165164 -.935676E-01 .14224 -.15494 aline .13208 -.18542 aline .13081 -.1905 aline .12954 -.19431 aline .12827 -.19939 aline .127 -.2032 aline .12065 -.2286 aline .1143 -.26035 aline .11303 -.26162 aline .11303 -.26797 aline .11176 -.26924 aline .11176 -.27686 aline .11049 -.27813 aline .11049 -.28448 aline .10922 -.28575 aline .10922 -.29464 aline .10795 -.29591 aline .10795 -.3048 aline .10668 -.30607 aline .10668 -.31623 aline .10541 -.3175 aline .10541 -.3302 aline .10414 -.33147 aline .10414 -.34798 aline .10287 -.34925 aline .10287 -.37338 aline .1016 -.37465 aline .1016 -.44323 aline .10287 -.4445 aline .10287 -.46863 aline .10414 -.4699 aline .10414 -.48641 aline .10541 -.48768 aline .10541 -.50038 aline .10668 -.50165 aline .10668 -.51181 aline .10795 -.51308 aline .10795 -.52197 aline .10922 -.52324 aline .10922 -.53213 aline .11049 -.5334 aline .11049 -.53975 aline .11176 -.54102 aline .11176 -.54864 aline .11303 -.54991 aline .11303 -.55626 aline .1143 -.55753 aline .12065 -.58928 aline .127 -.61468 aline .12827 -.61849 aline .12954 -.62357 aline .13081 -.62738 aline .13208 -.63246 aline .14224 -.66294 bezier .165164 -.724312 .199181 -.780372 .24638 -.8255 aline .24638 -.82804 aline .24511 -.82931 aline .23241 -.82931 aline .22733 -.82423 aline .22479 -.82296 aline .2032 -.80137 bezier .127949 -.719718 .869018E-01 -.604203 .07874 -.49657 aline .07747 -.4953 aline .07747 -.48387 aline .0762 -.4826 aline .0762 -.46736 aline .07493 -.46609 aline .07493 -.44323 aline .07366 -.44196 aline .07366 -.37592 aline .07493 -.37465 aline .07493 -.35179 aline .0762 -.35052 aline .0762 -.33528 aline .07747 -.33401 aline .07747 -.32258 aline .07874 -.32131 bezier .792591E-01 -.303203 .828745E-01 -.287295 .08509 -.26924 bezier .101107 -.17698 .139958 -.854838E-01 .2032 -.01651 aline .22479 .00508 aline .22733 .00635 aline .23241 .01143 aline .24511 .01143 closepath ! end of curve fill dfont endchar dfont char=19 !-------------- Beginning of new char. dfont wid=.736115 hei=.039999 dep=2.36003 italic=0 dfont next_char=33 set path ! start of curve newpath ! start of curve amove .02667 .01143 aline .03175 .00635 aline .03429 .00508 aline .05588 -.01651 bezier .131131 -.981623E-01 .172178 -.213677 .18034 -.32131 aline .18161 -.32258 aline .18161 -.33401 aline .18288 -.33528 aline .18288 -.35052 aline .18415 -.35179 aline .18415 -.37465 aline .18542 -.37592 aline .18542 -.44196 aline .18415 -.44323 aline .18415 -.46609 aline .18288 -.46736 aline .18288 -.4826 aline .18161 -.48387 aline .18161 -.4953 aline .18034 -.49657 bezier .179821 -.514678 .176205 -.530585 .17399 -.54864 bezier .157973 -.6409 .119122 -.732396 .05588 -.80137 aline .03429 -.82296 aline .03175 -.82423 aline .02667 -.82931 aline .01397 -.82931 aline .0127 -.82804 aline .0127 -.8255 bezier .598985E-01 -.780372 .939161E-01 -.724312 .11684 -.66294 aline .127 -.63246 aline .12827 -.62738 aline .12954 -.62357 aline .13081 -.61849 aline .13208 -.61468 aline .13843 -.58928 aline .14478 -.55753 aline .14605 -.55626 aline .14605 -.54991 aline .14732 -.54864 aline .14732 -.54102 aline .14859 -.53975 aline .14859 -.5334 aline .14986 -.53213 aline .14986 -.52324 aline .15113 -.52197 aline .15113 -.51308 aline .1524 -.51181 aline .1524 -.50165 aline .15367 -.50038 aline .15367 -.48768 aline .15494 -.48641 aline .15494 -.4699 aline .15621 -.46863 aline .15621 -.4445 aline .15748 -.44323 aline .15748 -.37465 aline .15621 -.37338 aline .15621 -.34925 aline .15494 -.34798 aline .15494 -.33147 aline .15367 -.3302 aline .15367 -.3175 aline .1524 -.31623 aline .1524 -.30607 aline .15113 -.3048 aline .15113 -.29591 aline .14986 -.29464 aline .14986 -.28575 aline .14859 -.28448 aline .14859 -.27813 aline .14732 -.27686 aline .14732 -.26924 aline .14605 -.26797 aline .14605 -.26162 aline .14478 -.26035 aline .13843 -.2286 aline .13208 -.2032 aline .13081 -.19939 aline .12954 -.19431 aline .12827 -.1905 aline .127 -.18542 aline .11684 -.15494 bezier .939163E-01 -.935675E-01 .598985E-01 -.375082E-01 .0127 .00762 aline .0127 .01016 aline .01397 .01143 aline .02667 .01143 closepath ! end of curve fill dfont endchar dfont char=20 !-------------- Beginning of new char. dfont wid=.527781 hei=.039999 dep=2.36003 italic=0 dfont next_char=34 set path ! start of curve newpath ! start of curve amove .17907 .01143 aline .17907 -.00762 aline .10795 -.00762 aline .10668 -.00889 aline .10668 -.80899 aline .10795 -.81026 aline .17907 -.81026 aline .17907 -.82931 aline .08763 -.82931 aline .08763 .01143 aline .17907 .01143 closepath ! end of curve fill dfont endchar dfont char=21 !-------------- Beginning of new char. dfont wid=.527781 hei=.039999 dep=2.36003 italic=0 dfont next_char=35 set path ! start of curve newpath ! start of curve amove .09779 .01143 aline .09779 -.82931 aline .00635 -.82931 aline .00635 -.81026 aline .07747 -.81026 aline .07874 -.80899 aline .07874 -.00889 aline .07747 -.00762 aline .00635 -.00762 aline .00635 .01143 aline .09779 .01143 closepath ! end of curve fill dfont endchar dfont char=22 !-------------- Beginning of new char. dfont wid=.583336 hei=.039999 dep=2.36003 italic=0 dfont next_char=36 set path ! start of curve newpath ! start of curve amove .10668 .01143 aline .10668 -.80899 aline .10795 -.81026 aline .19812 -.81026 aline .19812 -.82931 aline .08763 -.82931 aline .08763 .01143 aline .10668 .01143 closepath ! end of curve fill dfont endchar dfont char=23 !-------------- Beginning of new char. dfont wid=.583336 hei=.039999 dep=2.36003 italic=0 dfont next_char=37 set path ! start of curve newpath ! start of curve amove .11684 .01143 aline .11684 -.82931 aline .00635 -.82931 aline .00635 -.81026 aline .09652 -.81026 aline .09779 -.80899 aline .09779 .01143 aline .11684 .01143 closepath ! end of curve fill dfont endchar dfont char=24 !-------------- Beginning of new char. dfont wid=.583336 hei=.039999 dep=2.36003 italic=0 dfont next_char=38 set path ! start of curve newpath ! start of curve amove .19812 .01143 aline .19812 -.00762 aline .10795 -.00762 aline .10668 -.00889 aline .10668 -.82931 aline .08763 -.82931 aline .08763 .01143 aline .19812 .01143 closepath ! end of curve fill dfont endchar dfont char=25 !-------------- Beginning of new char. dfont wid=.583336 hei=.039999 dep=2.36003 italic=0 dfont next_char=39 set path ! start of curve newpath ! start of curve amove .11684 .01143 aline .11684 -.82931 aline .09779 -.82931 aline .09779 -.00889 aline .09652 -.00762 aline .00635 -.00762 aline .00635 .01143 aline .11684 .01143 closepath ! end of curve fill dfont endchar dfont char=26 !-------------- Beginning of new char. dfont wid=.750002 hei=.039999 dep=2.36003 italic=0 dfont next_char=40 set path ! start of curve newpath ! start of curve amove .2159 .01143 aline .21717 .01016 aline .21717 -.00254 bezier .186223 -.017221 .156359 -.409045E-01 .14859 -.0762 aline .14732 -.07747 aline .14732 -.08382 aline .14605 -.08509 aline .14605 -.31115 bezier .14375 -.327652 .137779 -.345813 .127 -.35941 bezier .111701 -.38102 .901568E-01 -.398344 .06604 -.40894 bezier .105437 -.426471 .141039 -.462721 .14605 -.50673 aline .14605 -.73279 bezier .151044 -.762452 .171726 -.789835 .19812 -.80518 aline .2159 -.81407 aline .21717 -.81534 aline .21717 -.82804 aline .2159 -.82931 aline .2032 -.82931 bezier .1648 -.813499 .128942 -.78397 .11938 -.74168 aline .11938 -.73533 aline .11811 -.73406 aline .11811 -.50673 bezier .112642 -.478367 .977194E-01 -.448447 .07239 -.4318 aline .06985 -.42926 aline .06731 -.42799 aline .06604 -.42672 aline .0635 -.42545 aline .06223 -.42418 aline .05969 -.42291 aline .05842 -.42164 aline .04826 -.41656 aline .04699 -.41529 aline .04699 -.40259 bezier .797296E-01 -.385903 .108619 -.357725 .11557 -.32004 aline .11684 -.31877 aline .11684 -.31242 aline .11811 -.31115 aline .11811 -.08382 bezier .122763 -.460093E-01 .151886 -.153988E-01 .18415 .00254 aline .19939 .01016 aline .2032 .01143 aline .2159 .01143 closepath ! end of curve fill dfont endchar dfont char=27 !-------------- Beginning of new char. dfont wid=.750002 hei=.039999 dep=2.36003 italic=0 dfont next_char=")" set path ! start of curve newpath ! start of curve amove .06096 .01143 bezier .993603E-01 -.43809E-02 .135218 -.339097E-01 .14478 -.0762 aline .14478 -.08255 aline .14605 -.08382 aline .14605 -.31115 bezier .151518 -.339513 .166441 -.369433 .19177 -.38608 aline .19431 -.38862 aline .19685 -.38989 aline .19812 -.39116 aline .20066 -.39243 aline .20193 -.3937 aline .20447 -.39497 aline .20574 -.39624 aline .2159 -.40132 aline .21717 -.40259 aline .21717 -.41529 bezier .18443 -.431977 .155541 -.460155 .14859 -.49784 aline .14732 -.49911 aline .14732 -.50546 aline .14605 -.50673 aline .14605 -.73406 bezier .141397 -.771871 .112274 -.802481 .08001 -.82042 aline .06477 -.82804 aline .06096 -.82931 aline .04826 -.82931 aline .04699 -.82804 aline .04699 -.81534 bezier .779367E-01 -.800659 .107801 -.776975 .11557 -.74168 aline .11684 -.74041 aline .11684 -.73406 aline .11811 -.73279 aline .11811 -.50673 bezier .12041 -.490228 .126381 -.472067 .13716 -.45847 bezier .152459 -.43686 .174003 -.419536 .19812 -.40894 bezier .158723 -.391409 .123121 -.355159 .11811 -.31115 aline .11811 -.08509 bezier .113116 -.554283E-01 .924342E-01 -.280453E-01 .06604 -.0127 aline .04826 -.00381 aline .04699 -.00254 aline .04699 .01016 aline .04826 .01143 closepath ! end of curve fill dfont endchar dfont char=28 !-------------- Beginning of new char. dfont wid=.750002 hei=.039999 dep=2.36003 italic=0 dfont next_char="*" set path ! start of curve newpath ! start of curve amove .22225 .01143 aline .22479 .01016 aline .22733 .00889 aline .2286 .00635 aline .22987 .00508 bezier .229107 -.918131E-02 .2198 -.217874E-01 .2159 -.03556 bezier .165578 -.160179 .114312 -.284485 .652462E-01 -.409575 bezier .118958 -.546099 .174755 -.681888 .22987 -.81788 aline .22987 -.82423 aline .2286 -.8255 aline .22733 -.82804 aline .22225 -.83058 aline .21844 -.83058 bezier .205822 -.822387 .205119 -.80488 .19812 -.79248 bezier .147027 -.665849 .961179E-01 -.539142 .04445 -.41275 bezier .452125E-01 -.398489 .05452 -.385883 .05842 -.37211 bezier .110067 -.246132 .159963 -.119429 .21209 .00635 aline .2159 .01016 aline .21844 .01143 closepath ! end of curve fill dfont endchar dfont char=29 !-------------- Beginning of new char. dfont wid=.750002 hei=.039999 dep=2.36003 italic=0 dfont next_char="+" set path ! start of curve newpath ! start of curve amove .04572 .01143 aline .04826 .01016 bezier .578837E-01 .856617E-03 .597147E-01 -.147728E-01 .06604 -.02667 bezier .117133 -.153301 .168042 -.280007 .21971 -.4064 bezier .218947 -.420661 .20964 -.433267 .20574 -.44704 bezier .153601 -.573836 .103815 -.701607 .0508 -.82804 aline .04572 -.83058 aline .04191 -.83058 aline .03683 -.82804 aline .03556 -.8255 aline .03429 -.82423 bezier .350525E-01 -.809969 .04436 -.797363 .04826 -.78359 bezier .985824E-01 -.658971 .149848 -.534665 .198914 -.409575 bezier .145202 -.273051 .894052E-01 -.137262 .03429 -.00127 aline .03429 .00508 aline .03556 .00635 aline .03683 .00889 aline .03937 .01016 aline .04191 .01143 closepath ! end of curve fill dfont endchar dfont char=30 !-------------- Beginning of new char. dfont wid=1.04445 hei=.039999 dep=2.36003 italic=0 dfont next_char="," set path ! start of curve newpath ! start of curve amove .34036 .01143 aline .3429 .01016 aline .34544 .00762 aline .34671 .00508 bezier .343011 -.181968E-01 .33069 -.395863E-01 .32385 -.06223 bezier .228203 -.316489 .133612 -.571185 .0381 -.8255 aline .03556 -.82804 aline .03302 -.82931 aline .02667 -.82931 aline .02413 -.82804 aline .02159 -.8255 aline .02032 -.82296 bezier .240191E-01 -.799683 .363405E-01 -.778294 .04318 -.75565 bezier .138827 -.501391 .233418 -.246695 .32893 .00762 aline .33147 .01016 aline .33401 .01143 aline .34036 .01143 closepath ! end of curve fill dfont endchar dfont char=31 !-------------- Beginning of new char. dfont wid=1.04445 hei=.039999 dep=2.36003 italic=0 dfont next_char="-" set path ! start of curve newpath ! start of curve amove .03302 .01143 aline .03556 .01016 bezier .450574E-01 -.466537E-02 .483408E-01 -.232608E-01 .05588 -.03937 bezier .152497 -.299008 .250259 -.558173 .34671 -.81788 aline .34671 -.82296 aline .34544 -.8255 aline .3429 -.82804 aline .34036 -.82931 aline .33401 -.82931 aline .33147 -.82804 bezier .321973 -.813215 .318689 -.794619 .31115 -.77851 bezier .214533 -.518872 .116771 -.259707 .02032 0 aline .02032 .00508 aline .02159 .00762 aline .02413 .01016 aline .02667 .01143 closepath ! end of curve fill dfont endchar dfont char=32 !-------------- Beginning of new char. dfont wid=.79167 hei=.039999 dep=2.96003 italic=0 dfont next_char="0" set path ! start of curve newpath ! start of curve amove .26543 .01143 aline .2667 .01016 aline .2667 .00762 bezier .243254 -.193372E-01 .223609 -.490334E-01 .20574 -.08001 aline .18669 -.11811 bezier .154111 -.189884 .136194 -.271011 .12573 -.34417 aline .12573 -.35433 aline .12446 -.3556 aline .12446 -.36576 aline .12319 -.36703 aline .12319 -.37846 aline .12192 -.37973 aline .12192 -.3937 aline .12065 -.39497 aline .12065 -.41148 aline .11938 -.41275 aline .11938 -.43307 aline .11811 -.43434 aline .11811 -.46609 aline .11684 -.46736 aline .11684 -.56134 aline .11811 -.56261 aline .11811 -.59436 aline .11938 -.59563 aline .11938 -.61595 aline .12065 -.61722 aline .12065 -.63373 aline .12192 -.635 aline .12192 -.64897 aline .12319 -.65024 aline .12319 -.66167 aline .12446 -.66294 aline .12446 -.6731 aline .12573 -.67437 aline .12573 -.68453 aline .127 -.6858 aline .127 -.69342 aline .12827 -.69469 aline .12827 -.70358 aline .12954 -.70485 aline .12954 -.7112 aline .13081 -.71247 aline .13081 -.72009 aline .13208 -.72136 bezier .141653 -.784333 .160014 -.850692 .18669 -.91059 aline .20574 -.94869 bezier .223609 -.979667 .243254 -1.00936 .2667 -1.03632 aline .2667 -1.03886 aline .26543 -1.04013 aline .25146 -1.04013 bezier .220185 -1.00819 .194836 -.971987 .17272 -.93345 aline .15113 -.89027 bezier .137561 -.859389 .126089 -.827556 .11684 -.79502 aline .10795 -.75946 bezier .10129 -.733403 .991904E-01 -.707293 .09398 -.68326 aline .09398 -.67437 aline .09271 -.6731 aline .09271 -.66421 aline .09144 -.66294 aline .09144 -.65278 aline .09017 -.65151 aline .09017 -.64008 aline .0889 -.63881 aline .0889 -.62611 aline .08763 -.62484 aline .08763 -.6096 aline .08636 -.60833 aline .08636 -.58928 aline .08509 -.58801 aline .08509 -.5588 aline .08382 -.55753 aline .08382 -.47117 aline .08509 -.4699 aline .08509 -.44069 aline .08636 -.43942 aline .08636 -.42037 aline .08763 -.4191 aline .08763 -.40386 aline .0889 -.40259 aline .0889 -.38989 aline .09017 -.38862 aline .09017 -.37719 aline .09144 -.37592 aline .09144 -.36576 aline .09271 -.36449 aline .09271 -.3556 aline .09398 -.35433 aline .09398 -.34544 aline .09525 -.34417 bezier .979774E-01 -.319738 .102117 -.294958 .10795 -.26924 aline .11684 -.23368 bezier .126089 -.201144 .137561 -.169311 .15113 -.13843 aline .17272 -.09525 bezier .194836 -.567128E-01 .220185 -.205061E-01 .25146 .01143 aline .26543 .01143 closepath ! end of curve fill dfont endchar dfont char=33 !-------------- Beginning of new char. dfont wid=.79167 hei=.039999 dep=2.96003 italic=0 dfont next_char="1" set path ! start of curve newpath ! start of curve amove .02667 .01143 bezier .579446E-01 -.205061E-01 .083294 -.567128E-01 .10541 -.09525 aline .127 -.13843 bezier .140569 -.169311 .152041 -.201144 .16129 -.23368 aline .17018 -.26924 bezier .17684 -.295297 .17894 -.321407 .18415 -.34544 aline .18415 -.35433 aline .18542 -.3556 aline .18542 -.36449 aline .18669 -.36576 aline .18669 -.37592 aline .18796 -.37719 aline .18796 -.38862 aline .18923 -.38989 aline .18923 -.40259 aline .1905 -.40386 aline .1905 -.4191 aline .19177 -.42037 aline .19177 -.43942 aline .19304 -.44069 aline .19304 -.4699 aline .19431 -.47117 aline .19431 -.55753 aline .19304 -.5588 aline .19304 -.58801 aline .19177 -.58928 aline .19177 -.60833 aline .1905 -.6096 aline .1905 -.62484 aline .18923 -.62611 aline .18923 -.63881 aline .18796 -.64008 aline .18796 -.65151 aline .18669 -.65278 aline .18669 -.66294 aline .18542 -.66421 aline .18542 -.6731 aline .18415 -.67437 aline .18415 -.68326 aline .18288 -.68453 bezier .180153 -.708962 .176013 -.733742 .17018 -.75946 aline .16129 -.79502 bezier .152041 -.827556 .140569 -.859389 .127 -.89027 aline .10541 -.93345 bezier .832939E-01 -.971987 .579446E-01 -1.00819 .02667 -1.04013 aline .0127 -1.04013 aline .01143 -1.03886 aline .01143 -1.03632 bezier .348756E-01 -1.00936 .545211E-01 -.979667 .07239 -.94869 aline .09144 -.91059 bezier .124019 -.838816 .141936 -.757689 .1524 -.68453 aline .1524 -.67437 aline .15367 -.6731 aline .15367 -.66294 aline .15494 -.66167 aline .15494 -.65024 aline .15621 -.64897 aline .15621 -.635 aline .15748 -.63373 aline .15748 -.61722 aline .15875 -.61595 aline .15875 -.59563 aline .16002 -.59436 aline .16002 -.56261 aline .16129 -.56134 aline .16129 -.46736 aline .16002 -.46609 aline .16002 -.43434 aline .15875 -.43307 aline .15875 -.41275 aline .15748 -.41148 aline .15748 -.39497 aline .15621 -.3937 aline .15621 -.37973 aline .15494 -.37846 aline .15494 -.36703 aline .15367 -.36576 aline .15367 -.3556 aline .1524 -.35433 aline .1524 -.34417 aline .15113 -.3429 aline .15113 -.33528 aline .14986 -.33401 aline .14986 -.32512 aline .14859 -.32385 aline .14859 -.3175 aline .14732 -.31623 aline .14732 -.30861 aline .14605 -.30734 bezier .136477 -.244367 .118116 -.178008 .09144 -.11811 aline .07239 -.08001 bezier .545211E-01 -.490334E-01 .348756E-01 -.193372E-01 .01143 .00762 aline .01143 .01016 aline .0127 .01143 aline .02667 .01143 closepath ! end of curve fill dfont endchar dfont char=34 !-------------- Beginning of new char. dfont wid=.583336 hei=.039999 dep=2.96003 italic=0 dfont next_char="2" set path ! start of curve newpath ! start of curve amove .19939 .01143 aline .19939 -.00889 aline .11938 -.00889 aline .11811 -.01016 aline .11811 -1.01854 aline .11938 -1.01981 aline .19939 -1.01981 aline .19939 -1.04013 aline .09779 -1.04013 aline .09779 .01143 aline .19939 .01143 closepath ! end of curve fill dfont endchar dfont char=35 !-------------- Beginning of new char. dfont wid=.583336 hei=.039999 dep=2.96003 italic=0 dfont next_char="3" set path ! start of curve newpath ! start of curve amove .10668 .01143 aline .10668 -1.04013 aline .00508 -1.04013 aline .00508 -1.01981 aline .08509 -1.01981 aline .08636 -1.01854 aline .08636 -.01016 aline .08509 -.00889 aline .00508 -.00889 aline .00508 .01143 aline .10668 .01143 closepath ! end of curve fill dfont endchar dfont char=36 !-------------- Beginning of new char. dfont wid=.638891 hei=.039999 dep=2.96003 italic=0 dfont next_char="4" set path ! start of curve newpath ! start of curve amove .11811 .01143 aline .11811 -1.01854 aline .11938 -1.01981 aline .21971 -1.01981 aline .21971 -1.04013 aline .09779 -1.04013 aline .09779 .01143 aline .11811 .01143 closepath ! end of curve fill dfont endchar dfont char=37 !-------------- Beginning of new char. dfont wid=.638891 hei=.039999 dep=2.96003 italic=0 dfont next_char="5" set path ! start of curve newpath ! start of curve amove .127 .01143 aline .127 -1.04013 aline .00508 -1.04013 aline .00508 -1.01981 aline .10541 -1.01981 aline .10668 -1.01854 aline .10668 .01143 aline .127 .01143 closepath ! end of curve fill dfont endchar dfont char=38 !-------------- Beginning of new char. dfont wid=.638891 hei=.039999 dep=2.96003 italic=0 dfont next_char="6" set path ! start of curve newpath ! start of curve amove .21971 .01143 aline .21971 -.00889 aline .11938 -.00889 aline .11811 -.01016 aline .11811 -1.04013 aline .09779 -1.04013 aline .09779 .01143 aline .21971 .01143 closepath ! end of curve fill dfont endchar dfont char=39 !-------------- Beginning of new char. dfont wid=.638891 hei=.039999 dep=2.96003 italic=0 dfont next_char="7" set path ! start of curve newpath ! start of curve amove .127 .01143 aline .127 -1.04013 aline .10668 -1.04013 aline .10668 -.01016 aline .10541 -.00889 aline .00508 -.00889 aline .00508 .01143 aline .127 .01143 closepath ! end of curve fill dfont endchar dfont char=40 !-------------- Beginning of new char. dfont wid=.80556 hei=.039999 dep=2.96003 italic=0 dfont next_char="8" set path ! start of curve newpath ! start of curve amove .23114 .01143 aline .23241 .01016 aline .23241 -.00381 bezier .196627 -.233359E-01 .16778 -.575996E-01 .16129 -.09906 aline .16002 -.10033 aline .16002 -.10795 aline .15875 -.10922 aline .15875 -.39243 bezier .153515 -.444567 .116916 -.490509 .07112 -.51435 bezier .116916 -.538191 .153515 -.584133 .15875 -.63627 aline .15875 -.91948 bezier .163247 -.943512 .171593 -.970474 .18923 -.98933 bezier .200265 -1.00488 .216799 -1.01488 .23241 -1.02489 aline .23241 -1.03886 aline .23114 -1.04013 bezier .210394 -1.04301 .194688 -1.02655 .17907 -1.016 aline .15748 -.99441 bezier .140742 -.973664 .128404 -.947094 .12573 -.92075 aline .12573 -.63754 bezier .120662 -.592799 .945538E-01 -.546133 .05334 -.52324 aline .0508 -.5207 aline .0508 -.508 bezier .858286E-01 -.486252 .113618 -.45171 .12192 -.41021 aline .12319 -.40894 aline .12319 -.40259 aline .12446 -.40132 aline .12446 -.39243 aline .12573 -.39116 aline .12573 -.10795 bezier .128404 -.816058E-01 .140742 -.550356E-01 .15748 -.03429 aline .17907 -.0127 bezier .194688 -.214517E-02 .210394 .143096E-01 .23114 .01143 closepath ! end of curve fill dfont endchar dfont char=")" !-------------- Beginning of new char. dfont wid=.80556 hei=.039999 dep=2.96003 italic=0 dfont next_char="9" set path ! start of curve newpath ! start of curve amove .06604 .01143 bezier .113376 -.103682E-01 .153135 -.551009E-01 .15875 -.10795 aline .15875 -.39243 bezier .163925 -.421432 .173704 -.454168 .19558 -.47625 bezier .205155 -.489197 .218718 -.498681 .23241 -.50673 aline .23241 -.52197 bezier .191415 -.54413 .164069 -.589002 .16002 -.635 aline .15875 -.63627 aline .15875 -.92075 bezier .155796 -.947196 .143953 -.974484 .12573 -.99441 bezier .109971 -1.01442 .088793 -1.02901 .06604 -1.04013 aline .05207 -1.04013 aline .0508 -1.03886 aline .0508 -1.02489 bezier .866336E-01 -1.0053 .116422 -.971322 .12319 -.92964 aline .12446 -.92837 aline .12446 -.92075 aline .12573 -.91948 aline .12573 -.63627 aline .127 -.635 bezier .127577 -.606373 .142732 -.578611 .16002 -.55626 aline .18161 -.53467 bezier .191346 -.527309 .201347 -.520314 .21209 -.51435 bezier .201347 -.508386 .191346 -.501391 .18161 -.49403 aline .16002 -.47244 bezier .142732 -.450089 .127577 -.422327 .127 -.3937 aline .12573 -.39243 aline .12573 -.10922 bezier .121584 -.856774E-01 .112373 -.599335E-01 .09652 -.04064 bezier .830903E-01 -.258517E-01 .679869E-01 -.133855E-01 .0508 -.00381 aline .0508 .01016 aline .05207 .01143 closepath ! end of curve fill dfont endchar dfont char="*" !-------------- Beginning of new char. dfont wid=.80556 hei=.039999 dep=2.96003 italic=0 set path ! start of curve newpath ! start of curve amove .23749 .01143 aline .24003 .01016 aline .24257 .00762 aline .24384 .00508 aline .24384 -.00254 aline .22733 -.05207 aline .22606 -.05461 aline .19177 -.15748 aline .1905 -.16002 aline .15748 -.25908 aline .15621 -.26162 aline .12319 -.36068 aline .12192 -.36322 aline .08763 -.46609 aline .08636 -.46863 aline .07239 -.51054 aline .071628 -.51435 aline .07239 -.51816 aline .08636 -.56007 aline .08763 -.56261 aline .12192 -.66548 aline .12319 -.66802 aline .15621 -.76708 aline .15748 -.76962 aline .1905 -.86868 aline .19177 -.87122 aline .22606 -.97409 aline .22733 -.97663 aline .24384 -1.02616 aline .24384 -1.03378 aline .24257 -1.03632 aline .24003 -1.03886 aline .23749 -1.04013 aline .22987 -1.04013 aline .22352 -1.03378 aline .20701 -.98425 aline .20574 -.98171 aline .17145 -.87884 aline .17018 -.8763 aline .13716 -.77724 aline .13589 -.7747 aline .10287 -.67564 aline .1016 -.6731 aline .06731 -.57023 aline .06604 -.56769 aline .04953 -.51816 aline .04953 -.51054 aline .06604 -.46101 aline .06731 -.45847 aline .1016 -.3556 aline .10287 -.35306 aline .13589 -.254 aline .13716 -.25146 aline .17018 -.1524 aline .17145 -.14986 aline .20574 -.04699 aline .20701 -.04445 aline .22352 .00508 aline .22987 .01143 closepath ! end of curve fill dfont endchar dfont char="+" !-------------- Beginning of new char. dfont wid=.80556 hei=.039999 dep=2.96003 italic=0 set path ! start of curve newpath ! start of curve amove .05334 .01143 aline .05588 .01016 aline .05715 .00889 aline .05842 .00635 aline .05969 .00508 aline .0762 -.04445 aline .07747 -.04699 aline .11176 -.14986 aline .11303 -.1524 aline .14605 -.25146 aline .14732 -.254 aline .18034 -.35306 aline .18161 -.3556 aline .2159 -.45847 aline .21717 -.46101 aline .23368 -.51054 aline .23368 -.51816 aline .21717 -.56769 aline .2159 -.57023 aline .18161 -.6731 aline .18034 -.67564 aline .14732 -.7747 aline .14605 -.77724 aline .11303 -.8763 aline .11176 -.87884 aline .07747 -.98171 aline .0762 -.98425 aline .05969 -1.03378 aline .05842 -1.03505 aline .05715 -1.03759 aline .05588 -1.03886 aline .05334 -1.04013 aline .04572 -1.04013 aline .04318 -1.03886 aline .04064 -1.03632 aline .03937 -1.03378 aline .03937 -1.02616 aline .05588 -.97663 aline .05715 -.97409 aline .09144 -.87122 aline .09271 -.86868 aline .12573 -.76962 aline .127 -.76708 aline .16002 -.66802 aline .16129 -.66548 aline .19558 -.56261 aline .19685 -.56007 aline .21082 -.51816 aline .211582 -.51435 aline .21082 -.51054 aline .19685 -.46863 aline .19558 -.46609 aline .16129 -.36322 aline .16002 -.36068 aline .127 -.26162 aline .12573 -.25908 aline .09271 -.16002 aline .09144 -.15748 aline .05715 -.05461 aline .05588 -.05207 aline .03937 -.00254 aline .03937 .00508 aline .04064 .00762 aline .04318 .01016 aline .04572 .01143 closepath ! end of curve fill dfont endchar dfont char="," !-------------- Beginning of new char. dfont wid=1.27778 hei=.039999 dep=2.96003 italic=0 set path ! start of curve newpath ! start of curve amove .42164 .01143 aline .42418 .01016 aline .42799 .00635 aline .42926 .00381 bezier .425561 -.194668E-01 .41324 -.408563E-01 .4064 -.0635 bezier .284061 -.387176 .162886 -.711335 .04064 -1.03505 aline .03683 -1.03886 aline .03429 -1.04013 aline .02794 -1.04013 aline .0254 -1.03886 aline .02159 -1.03505 aline .02032 -1.03251 bezier .240191E-01 -1.00923 .363405E-01 -.987844 .04318 -.9652 bezier .165516 -.641522 .286693 -.317364 .40894 .00635 aline .41275 .01016 aline .41529 .01143 closepath ! end of curve fill dfont endchar dfont char="-" !-------------- Beginning of new char. dfont wid=1.27778 hei=.039999 dep=2.96003 italic=0 set path ! start of curve newpath ! start of curve amove .03429 .01143 aline .03683 .01016 aline .04064 .00635 bezier .170339 -.338178 .300244 -.68262 .42926 -1.02743 aline .42926 -1.03251 aline .42799 -1.03505 aline .42418 -1.03886 aline .42164 -1.04013 aline .41529 -1.04013 aline .41275 -1.03886 aline .40894 -1.03505 bezier .279228 -.690528 .149323 -.346086 .02032 -.00127 aline .02032 .00381 aline .02159 .00635 aline .0254 .01016 aline .02794 .01143 closepath ! end of curve fill dfont endchar dfont char="." !-------------- Beginning of new char. dfont wid=.811114 hei=.039999 dep=1.76002 italic=0 dfont next_char=30 set path ! start of curve newpath ! start of curve amove .25908 .01143 aline .26162 .01016 aline .26289 .00889 aline .26416 .00635 aline .26416 0 bezier .18723 -.205566 .112767 -.412534 .03429 -.61722 aline .03175 -.61849 aline .0254 -.61849 aline .02286 -.61722 aline .02159 -.61595 aline .02032 -.61341 aline .02032 -.60706 bezier .972496E-01 -.401494 .171713 -.194526 .25019 .01016 aline .25273 .01143 closepath ! end of curve fill dfont endchar dfont char="/" !-------------- Beginning of new char. dfont wid=.811114 hei=.039999 dep=1.76002 italic=0 dfont next_char=31 set path ! start of curve newpath ! start of curve amove .03175 .01143 aline .03429 .01016 bezier .112767 -.194526 .18723 -.401494 .26416 -.60706 aline .26416 -.61341 aline .26289 -.61595 aline .26162 -.61722 aline .25908 -.61849 aline .25273 -.61849 aline .25019 -.61722 bezier .171713 -.412534 .972498E-01 -.205565 .02032 0 aline .02032 .00635 aline .02159 .00889 aline .02286 .01016 aline .0254 .01143 closepath ! end of curve fill dfont endchar dfont char="0" !-------------- Beginning of new char. dfont wid=.875003 hei=.039999 dep=1.76002 italic=0 dfont ext_top="0" ext_mid=0 ext_bot="@" ext_rep="B" set path ! start of curve newpath ! start of curve amove .29464 .01016 aline .29591 .00889 aline .29591 .00635 bezier .276799 -.187505E-01 .26078 -.460797E-01 .24511 -.07366 aline .22987 -.10414 bezier .187595 -.194523 .164628 -.297075 .1524 -.38989 aline .1524 -.40005 aline .15113 -.40132 aline .15113 -.41148 aline .14986 -.41275 aline .14986 -.42418 aline .14859 -.42545 aline .14859 -.43815 aline .14732 -.43942 aline .14732 -.45339 aline .14605 -.45466 aline .14605 -.47117 aline .14478 -.47244 aline .14478 -.49276 aline .14351 -.49403 aline .14351 -.51943 aline .14224 -.5207 aline .14224 -.56007 aline .14097 -.56134 aline .14097 -.6223 aline .13843 -.62357 aline .10541 -.62357 aline .10287 -.6223 aline .10287 -.56769 aline .10414 -.56642 aline .10414 -.52959 aline .10541 -.52832 aline .10541 -.50546 aline .10668 -.50419 aline .10668 -.48514 aline .10795 -.48387 aline .10795 -.46863 aline .10922 -.46736 aline .10922 -.45466 aline .11049 -.45339 aline .11049 -.44069 aline .11176 -.43942 aline .11176 -.42926 aline .11303 -.42799 aline .11303 -.41783 aline .1143 -.41656 aline .1143 -.40767 aline .11557 -.4064 aline .11557 -.39751 aline .11684 -.39624 bezier .11787 -.380047 .121265 -.365719 .12319 -.34925 aline .12446 -.34798 aline .12446 -.34163 aline .13081 -.30988 aline .13208 -.3048 aline .13335 -.29845 aline .14351 -.25781 bezier .154673 -.217866 .168654 -.178788 .18542 -.14097 aline .20955 -.09271 bezier .230441 -.563905E-01 .253145 -.213782E-01 .28067 .01016 aline .29464 .01016 closepath ! end of curve fill dfont endchar dfont char="1" !-------------- Beginning of new char. dfont wid=.875003 hei=.039999 dep=1.76002 italic=0 dfont ext_top="1" ext_mid=0 ext_bot="A" ext_rep="C" set path ! start of curve newpath ! start of curve amove .02667 .01016 bezier .541946E-01 -.213782E-01 .768991E-01 -.563905E-01 .09779 -.09271 aline .12192 -.14097 bezier .138686 -.178788 .152667 -.217866 .16383 -.25781 aline .17399 -.29845 aline .17526 -.3048 aline .17653 -.30988 aline .18288 -.34163 aline .18288 -.34798 aline .18415 -.34925 bezier .186075 -.365719 .18947 -.380047 .1905 -.39624 aline .19177 -.39751 aline .19177 -.4064 aline .19304 -.40767 aline .19304 -.41656 aline .19431 -.41783 aline .19431 -.42799 aline .19558 -.42926 aline .19558 -.43942 aline .19685 -.44069 aline .19685 -.45339 aline .19812 -.45466 aline .19812 -.46736 aline .19939 -.46863 aline .19939 -.48387 aline .20066 -.48514 aline .20066 -.50419 aline .20193 -.50546 aline .20193 -.52832 aline .2032 -.52959 aline .2032 -.56642 aline .20447 -.56769 aline .20447 -.6223 aline .20193 -.62357 aline .16891 -.62357 aline .16637 -.6223 aline .16637 -.56134 aline .1651 -.56007 aline .1651 -.5207 aline .16383 -.51943 aline .16383 -.49403 aline .16256 -.49276 aline .16256 -.47244 aline .16129 -.47117 aline .16129 -.45466 aline .16002 -.45339 aline .16002 -.43942 aline .15875 -.43815 aline .15875 -.42545 aline .15748 -.42418 aline .15748 -.41275 aline .15621 -.41148 aline .15621 -.40132 aline .15494 -.40005 aline .15494 -.38989 aline .15367 -.38862 aline .15367 -.37973 aline .1524 -.37846 aline .1524 -.36957 aline .15113 -.3683 aline .15113 -.36068 aline .14986 -.35941 aline .14986 -.35306 aline .14859 -.35179 aline .14859 -.34417 aline .14732 -.3429 bezier .135429 -.263496 .112224 -.179337 .07747 -.10414 aline .06223 -.07366 bezier .465597E-01 -.460797E-01 .305409E-01 -.187505E-01 .01143 .00635 aline .01143 .00889 aline .0127 .01016 aline .02667 .01016 closepath ! end of curve fill dfont endchar dfont char="2" !-------------- Beginning of new char. dfont wid=.666669 hei=.039999 dep=1.76002 italic=0 dfont ext_top="2" ext_mid=0 ext_bot="4" ext_rep="6" set path ! start of curve newpath ! start of curve amove .22987 .01016 aline .22987 -.0127 aline .1397 -.0127 aline .13843 -.01397 aline .13843 -.61976 aline .11557 -.61976 aline .11557 .01016 aline .22987 .01016 closepath ! end of curve fill dfont endchar dfont char="3" !-------------- Beginning of new char. dfont wid=.666669 hei=.039999 dep=1.76002 italic=0 dfont ext_top="3" ext_mid=0 ext_bot="5" ext_rep="7" set path ! start of curve newpath ! start of curve amove .11811 .01016 aline .11811 -.61976 aline .09525 -.61976 aline .09525 -.01397 aline .09398 -.0127 aline .00381 -.0127 aline .00381 .01016 aline .11811 .01016 closepath ! end of curve fill dfont endchar dfont char="4" !-------------- Beginning of new char. dfont wid=.666669 hei=.039999 dep=1.76002 italic=0 dfont ext_top=0 ext_mid=0 ext_bot="4" ext_rep="6" set path ! start of curve newpath ! start of curve amove .13843 .01143 aline .13843 -.59436 aline .1397 -.59563 aline .22987 -.59563 aline .22987 -.61849 aline .11557 -.61849 aline .11557 .01143 aline .13843 .01143 closepath ! end of curve fill dfont endchar dfont char="5" !-------------- Beginning of new char. dfont wid=.666669 hei=.039999 dep=1.76002 italic=0 dfont ext_top=0 ext_mid=0 ext_bot="5" ext_rep="7" set path ! start of curve newpath ! start of curve amove .11811 .01143 aline .11811 -.61849 aline .00381 -.61849 aline .00381 -.59563 aline .09398 -.59563 aline .09525 -.59436 aline .09525 .01143 aline .11811 .01143 closepath ! end of curve fill dfont endchar dfont char="6" !-------------- Beginning of new char. dfont wid=.666669 hei=0 dep=.600006 italic=0 dfont ext_top="2" ext_mid=0 ext_bot=0 ext_rep="6" set path ! start of curve newpath ! start of curve amove .13843 -.00127 aline .13843 -.21336 aline .11557 -.21336 aline .11557 -.00127 aline .13843 -.00127 closepath ! end of curve fill dfont endchar dfont char="7" !-------------- Beginning of new char. dfont wid=.666669 hei=0 dep=.600006 italic=0 dfont ext_top="3" ext_mid=0 ext_bot=0 ext_rep="7" set path ! start of curve newpath ! start of curve amove .11811 -.00127 aline .11811 -.21336 aline .09525 -.21336 aline .09525 -.00127 aline .11811 -.00127 closepath ! end of curve fill dfont endchar dfont char="8" !-------------- Beginning of new char. dfont wid=.888891 hei=0 dep=.900009 italic=0 dfont ext_top="8" ext_mid="<" ext_bot=":" ext_rep=">" set path ! start of curve newpath ! start of curve amove .25019 -.00381 aline .25146 -.00508 aline .25146 -.01905 bezier .214525 -.430454E-01 .189516 -.831672E-01 .18161 -.127 aline .18034 -.12827 aline .18034 -.13462 aline .17907 -.13589 aline .17907 -.14605 aline .1778 -.14732 aline .1778 -.32004 aline .17526 -.32131 aline .13843 -.32131 aline .13589 -.32004 aline .13589 -.14732 bezier .141365 -.864963E-01 .182415 -.313985E-01 .23622 -.00381 aline .25019 -.00381 closepath ! end of curve fill dfont endchar dfont char="9" !-------------- Beginning of new char. dfont wid=.888891 hei=0 dep=.900009 italic=0 dfont ext_top="9" ext_mid="=" ext_bot=";" ext_rep=">" set path ! start of curve newpath ! start of curve amove .0762 -.00381 bezier .08962 -.102671E-01 .101268 -.019182 .11303 -.02794 aline .13716 -.05207 bezier .158973 -.787028E-01 .174663 -.113062 .1778 -.14732 aline .1778 -.32004 aline .17526 -.32131 aline .13843 -.32131 aline .13589 -.32004 aline .13589 -.14859 aline .13462 -.14732 bezier .131703 -.972799E-01 .104314 -.462951E-01 .06096 -.01905 aline .06096 -.00508 aline .06223 -.00381 closepath ! end of curve fill dfont endchar dfont char=":" !-------------- Beginning of new char. dfont wid=.888891 hei=0 dep=.900009 italic=0 dfont ext_top="8" ext_mid=0 ext_bot=":" ext_rep=">" set path ! start of curve newpath ! start of curve amove .17526 .00127 aline .1778 0 aline .1778 -.17272 bezier .183215 -.218407 .204454 -.269181 .24511 -.29591 aline .24765 -.29845 aline .25019 -.29972 aline .25146 -.30099 aline .25146 -.31496 aline .25019 -.31623 aline .23622 -.31623 bezier .182415 -.288642 .141365 -.233544 .13589 -.17272 aline .13589 0 aline .13843 .00127 closepath ! end of curve fill dfont endchar dfont char=";" !-------------- Beginning of new char. dfont wid=.888891 hei=0 dep=.900009 italic=0 dfont ext_top="9" ext_mid=0 ext_bot=";" ext_rep=">" set path ! start of curve newpath ! start of curve amove .17526 .00127 aline .1778 0 aline .1778 -.17272 bezier .174663 -.206978 .158973 -.241337 .13716 -.26797 aline .11303 -.2921 bezier .974874E-01 -.302214 .827745E-01 -.319352 .06223 -.31623 aline .06096 -.31496 aline .06096 -.30099 bezier .986355E-01 -.276844 .124522 -.236319 .13208 -.19177 aline .13335 -.1905 aline .13335 -.18415 aline .13462 -.18288 aline .13462 -.17272 aline .13589 -.17145 aline .13589 0 aline .13843 .00127 closepath ! end of curve fill dfont endchar dfont char="<" !-------------- Beginning of new char. dfont wid=.888891 hei=0 dep=1.80002 italic=0 dfont ext_top=0 ext_mid=0 ext_bot=0 ext_rep="?" set path ! start of curve newpath ! start of curve amove .17526 .00127 aline .1778 0 aline .1778 -.16891 aline .17653 -.17018 bezier .174257 -.231629 .132661 -.287226 .815975E-01 -.318135 bezier .132661 -.349044 .174257 -.404641 .17653 -.46609 aline .1778 -.46736 aline .1778 -.63627 aline .17526 -.63754 aline .13843 -.63754 aline .13589 -.63627 aline .13589 -.46609 aline .13462 -.46482 bezier .131819 -.411685 .105915 -.356056 .06096 -.32512 aline .06096 -.31115 bezier .998492E-01 -.284127 .124303 -.239965 .13208 -.19304 aline .13335 -.19177 aline .13335 -.18415 aline .13462 -.18288 aline .13462 -.17145 aline .13589 -.17018 aline .13589 0 aline .13843 .00127 closepath ! end of curve fill dfont endchar dfont char="=" !-------------- Beginning of new char. dfont wid=.888891 hei=0 dep=1.80002 italic=0 dfont ext_top=0 ext_mid=0 ext_bot=0 ext_rep="w" set path ! start of curve newpath ! start of curve amove .17526 .00127 aline .1778 0 aline .1778 -.17018 aline .17907 -.17145 bezier .181879 -.224211 .206928 -.279714 .25146 -.31115 aline .25146 -.32512 bezier .213022 -.352559 .189161 -.396604 .18161 -.44323 aline .18034 -.4445 aline .18034 -.45212 aline .17907 -.45339 aline .17907 -.46482 aline .1778 -.46609 aline .1778 -.63627 aline .17526 -.63754 aline .13843 -.63754 aline .13589 -.63627 aline .13589 -.46736 aline .13716 -.46609 bezier .13924 -.405048 .180191 -.349278 .230823 -.318135 bezier .180191 -.286993 .13924 -.231222 .13716 -.17018 aline .13589 -.16891 aline .13589 0 aline .13843 .00127 closepath ! end of curve fill dfont endchar dfont char=">" !-------------- Beginning of new char. dfont wid=.888891 hei=0 dep=.300003 italic=0 dfont ext_top=0 ext_mid=0 ext_bot=0 ext_rep=">" set path ! start of curve newpath ! start of curve amove .17526 .00127 aline .1778 0 aline .1778 -.10922 aline .17526 -.11049 aline .13843 -.11049 aline .13589 -.10922 aline .13589 0 aline .13843 .00127 closepath ! end of curve fill dfont endchar dfont char="?" !-------------- Beginning of new char. dfont wid=.666669 hei=0 dep=.600006 italic=0 dfont ext_top="x" ext_mid=0 ext_bot="y" ext_rep="?" set path ! start of curve newpath ! start of curve amove .12446 -.00127 aline .12446 -.21336 aline .10922 -.21336 aline .10922 -.00127 aline .12446 -.00127 closepath ! end of curve fill dfont endchar dfont char="@" !-------------- Beginning of new char. dfont wid=.875003 hei=.039999 dep=1.76002 italic=0 dfont ext_top="8" ext_mid=0 ext_bot=";" ext_rep=">" set path ! start of curve newpath ! start of curve amove .13843 .01524 aline .14097 .01397 aline .14097 -.04699 aline .14224 -.04826 aline .14224 -.08763 aline .14351 -.0889 aline .14351 -.1143 aline .14478 -.11557 aline .14478 -.13589 aline .14605 -.13716 aline .14605 -.15367 aline .14732 -.15494 aline .14732 -.16891 aline .14859 -.17018 aline .14859 -.18288 aline .14986 -.18415 aline .14986 -.19558 aline .15113 -.19685 aline .15113 -.20701 aline .1524 -.20828 aline .1524 -.21844 aline .15367 -.21971 aline .15367 -.2286 aline .15494 -.22987 aline .15494 -.23876 aline .15621 -.24003 aline .15621 -.24765 aline .15748 -.24892 aline .15748 -.25527 aline .15875 -.25654 aline .15875 -.26416 aline .16002 -.26543 bezier .171911 -.344834 .195116 -.428993 .22987 -.50419 aline .24511 -.53467 bezier .26078 -.56225 .276799 -.58958 .29591 -.61468 aline .29591 -.61722 aline .29464 -.61849 aline .28067 -.61849 bezier .253145 -.586952 .230441 -.55194 .20955 -.51562 aline .18542 -.46736 bezier .168654 -.429542 .154673 -.390464 .14351 -.35052 aline .13335 -.30988 aline .13208 -.30353 aline .13081 -.29845 aline .12446 -.2667 aline .12446 -.26035 aline .12319 -.25908 bezier .121265 -.242611 .11787 -.228283 .11684 -.21209 aline .11557 -.21082 aline .11557 -.20193 aline .1143 -.20066 aline .1143 -.19177 aline .11303 -.1905 aline .11303 -.18034 aline .11176 -.17907 aline .11176 -.16891 aline .11049 -.16764 aline .11049 -.15494 aline .10922 -.15367 aline .10922 -.14097 aline .10795 -.1397 aline .10795 -.12446 aline .10668 -.12319 aline .10668 -.10414 aline .10541 -.10287 aline .10541 -.08001 aline .10414 -.07874 aline .10414 -.04191 aline .10287 -.04064 aline .10287 .01397 aline .10541 .01524 closepath ! end of curve fill dfont endchar dfont char="A" !-------------- Beginning of new char. dfont wid=.875003 hei=.039999 dep=1.76002 italic=0 dfont ext_top="9" ext_mid=0 ext_bot=":" ext_rep=">" set path ! start of curve newpath ! start of curve amove .20193 .01524 aline .20447 .01397 aline .20447 -.04064 aline .2032 -.04191 aline .2032 -.07874 aline .20193 -.08001 aline .20193 -.10287 aline .20066 -.10414 aline .20066 -.12319 aline .19939 -.12446 aline .19939 -.1397 aline .19812 -.14097 aline .19812 -.15367 aline .19685 -.15494 aline .19685 -.16764 aline .19558 -.16891 aline .19558 -.17907 aline .19431 -.18034 aline .19431 -.1905 aline .19304 -.19177 aline .19304 -.20066 aline .19177 -.20193 aline .19177 -.21082 aline .1905 -.21209 bezier .18947 -.228283 .186075 -.242611 .18415 -.25908 aline .18288 -.26035 aline .18288 -.2667 aline .17653 -.29845 aline .17526 -.30353 aline .17399 -.30988 aline .16383 -.35052 bezier .152667 -.390464 .138686 -.429542 .12192 -.46736 aline .09779 -.51562 bezier .768991E-01 -.551939 .541946E-01 -.586952 .02667 -.61849 aline .0127 -.61849 aline .01143 -.61722 aline .01143 -.61468 bezier .305409E-01 -.58958 .465597E-01 -.56225 .06223 -.53467 aline .07747 -.50419 bezier .119745 -.413807 .142712 -.311255 .15494 -.21844 aline .15494 -.20828 aline .15621 -.20701 aline .15621 -.19685 aline .15748 -.19558 aline .15748 -.18415 aline .15875 -.18288 aline .15875 -.17018 aline .16002 -.16891 aline .16002 -.15494 aline .16129 -.15367 aline .16129 -.13716 aline .16256 -.13589 aline .16256 -.11557 aline .16383 -.1143 aline .16383 -.0889 aline .1651 -.08763 aline .1651 -.04826 aline .16637 -.04699 aline .16637 .01397 aline .16891 .01524 closepath ! end of curve fill dfont endchar dfont char="B" !-------------- Beginning of new char. dfont wid=.875003 hei=0 dep=.600006 italic=0 dfont ext_top=0 ext_mid=0 ext_bot=0 ext_rep="B" set path ! start of curve newpath ! start of curve amove .13843 .00127 aline .14097 0 aline .14097 -.21463 aline .13843 -.2159 aline .10541 -.2159 aline .10287 -.21463 aline .10287 0 aline .10541 .00127 closepath ! end of curve fill dfont endchar dfont char="C" !-------------- Beginning of new char. dfont wid=.875003 hei=0 dep=.600006 italic=0 dfont ext_top=0 ext_mid=0 ext_bot=0 ext_rep="C" set path ! start of curve newpath ! start of curve amove .20193 .00127 aline .20447 0 aline .20447 -.21463 aline .20193 -.2159 aline .16891 -.2159 aline .16637 -.21463 aline .16637 0 aline .16891 .00127 closepath ! end of curve fill dfont endchar dfont char="D" !-------------- Beginning of new char. dfont wid=.611113 hei=.039999 dep=1.76002 italic=0 dfont next_char=28 set path ! start of curve newpath ! start of curve amove .17907 .01143 aline .18415 .00635 aline .18415 0 bezier .141726 -.101275 .986786E-01 -.202371 .576263E-01 -.304165 bezier .986786E-01 -.405959 .141726 -.507055 .18415 -.60833 aline .18415 -.61468 aline .17907 -.61976 aline .17272 -.61976 bezier .160749 -.605265 .157367 -.58548 .14859 -.56896 bezier .112517 -.481615 .761569E-01 -.394389 .03937 -.30734 aline .03937 -.30099 bezier .831485E-01 -.198368 .124832 -.094878 .16891 .00762 aline .17272 .01143 aline .17907 .01143 closepath ! end of curve fill dfont endchar dfont char="E" !-------------- Beginning of new char. dfont wid=.611113 hei=.039999 dep=1.76002 italic=0 dfont next_char=29 set path ! start of curve newpath ! start of curve amove .04191 .01143 bezier .538811E-01 -.306466E-02 .572631E-01 -.228496E-01 .06604 -.03937 bezier .102113 -.126715 .138473 -.213941 .17526 -.30099 aline .17526 -.30734 bezier .131482 -.409962 .897979E-01 -.513452 .04572 -.61595 aline .04191 -.61976 aline .03556 -.61976 aline .03048 -.61468 aline .03048 -.60833 bezier .729039E-01 -.507055 .115951 -.405959 .157004 -.304165 bezier .115951 -.202371 .729039E-01 -.101275 .03048 0 aline .03048 .00635 aline .03556 .01143 aline .04191 .01143 closepath ! end of curve fill dfont endchar dfont char="F" !-------------- Beginning of new char. dfont wid=.833336 hei=0 dep=1.00001 italic=0 dfont next_char="G" set path ! start of curve newpath ! start of curve amove .03556 -.00254 aline .0381 -.00381 aline .04191 -.00762 aline .04318 -.01016 aline .04318 -.32893 aline .04445 -.3302 aline .24892 -.3302 aline .25019 -.32893 aline .25019 -.01016 aline .25146 -.00762 aline .25527 -.00381 aline .25781 -.00254 aline .26543 -.00254 aline .26797 -.00381 aline .27178 -.00762 aline .27305 -.01016 aline .27305 -.34544 aline .27178 -.34798 aline .26797 -.35179 aline .26543 -.35306 aline .02921 -.35306 aline .0254 -.35179 aline .02159 -.34798 aline .02032 -.34417 aline .02032 -.01016 aline .02159 -.00762 aline .0254 -.00381 aline .02794 -.00254 closepath ! end of curve fill dfont endchar dfont char="G" !-------------- Beginning of new char. dfont wid=1.11111 hei=.100001 dep=1.50001 italic=0 set path ! start of curve newpath ! start of curve amove .0381 -.00254 aline .04064 -.00381 aline .04318 -.00508 aline .04572 -.00762 aline .04826 -.0127 aline .04826 -.46355 aline .04953 -.46482 aline .34036 -.46482 aline .34163 -.46355 aline .34163 -.0127 aline .34417 -.00762 aline .34671 -.00508 aline .35179 -.00254 aline .35941 -.00254 aline .36449 -.00508 aline .36703 -.00762 aline .36957 -.0127 aline .36957 -.4826 aline .36703 -.48768 aline .36449 -.49022 aline .35941 -.49276 aline .03048 -.49276 aline .0254 -.49022 aline .02286 -.48768 aline .02032 -.4826 aline .02032 -.0127 aline .02286 -.00762 aline .0254 -.00508 aline .02794 -.00381 aline .03048 -.00254 closepath ! end of curve fill dfont endchar dfont char="H" !-------------- Beginning of new char. dfont wid=.472223 hei=0 dep=1.11112 italic=.194446 dfont next_char="I" set path ! start of curve newpath ! start of curve amove .18415 -.00254 bezier .201588 -.433652E-02 .222238 -.222577E-01 .21209 -.04064 aline .20955 -.04318 aline .20447 -.04572 aline .19685 -.04572 aline .19177 -.04318 aline .18923 -.04064 aline .18669 -.03556 aline .18669 -.02794 aline .18923 -.02286 aline .19177 -.02032 aline .19939 -.01651 bezier .1872 -.841974E-02 .168923 -.428659E-02 .15875 -.01778 aline .15748 -.02032 aline .15621 -.02159 bezier .148599 -.040614 .144757 -.058896 .14478 -.07874 aline .14351 -.08001 aline .14351 -.09271 aline .14224 -.09398 aline .14224 -.10922 aline .14097 -.11049 aline .14097 -.12827 aline .140123 -.13081 aline .14097 -.13335 bezier .180524 -.144639 .201063 -.197048 .17653 -.23114 bezier .166631 -.248632 .147448 -.258811 .128039 -.262544 aline .127 -.2667 aline .12573 -.26797 aline .12573 -.27686 aline .12446 -.27813 bezier .122785 -.296734 .120634 -.313823 .11684 -.33274 bezier .109622 -.357809 .951289E-01 -.385601 .06731 -.39116 aline .0508 -.39116 bezier .333615E-01 -.389363 .012712 -.371442 .02286 -.35306 aline .0254 -.35052 aline .03048 -.34798 aline .0381 -.34798 aline .04318 -.35052 aline .04572 -.35306 aline .04826 -.35814 aline .04826 -.36576 aline .04572 -.37084 aline .04318 -.37338 aline .03556 -.37719 bezier .476832E-01 -.385049 .643506E-01 -.388761 .0762 -.37846 bezier .091144 -.366196 .917805E-01 -.342939 .09652 -.32639 aline .09652 -.31496 aline .09779 -.31369 aline .09779 -.30099 aline .09906 -.29972 aline .09906 -.28448 aline .10033 -.28321 aline .10033 -.26543 aline .101092 -.26162 aline .100511 -.258717 bezier .0616 -.246861 .417784E-01 -.195019 .06604 -.16129 bezier .756876E-01 -.144116 .944397E-01 -.134117 .113284 -.130048 aline .1143 -.127 aline .11557 -.12573 aline .11557 -.11684 aline .11684 -.11557 aline .11684 -.10795 aline .11811 -.10668 aline .11811 -.09779 aline .11938 -.09652 bezier .122007 -.067302 .126544 -.318595E-01 .15113 -.01016 aline .15367 -.00889 aline .15494 -.00762 aline .16002 -.00508 aline .16383 -.00381 aline .16891 -.00254 closepath ! end of curve ! start of curve amove .10668 -.14732 bezier .880609E-01 -.152569 .738285E-01 -.168765 .07112 -.18796 aline .06985 -.18923 bezier .678547E-01 -.211601 .805919E-01 -.234793 .1016 -.24384 aline .10287 -.24257 aline .10287 -.23114 aline .10414 -.22987 aline .10414 -.21717 aline .10541 -.2159 aline .10541 -.2032 aline .10668 -.20193 aline .10668 -.1905 aline .10795 -.18923 aline .10795 -.17907 aline .10922 -.1778 aline .10922 -.16764 aline .11049 -.16637 aline .11049 -.15748 aline .11176 -.15621 aline .11176 -.14732 aline .10922 -.146473 closepath ! end of curve ! start of curve amove .13843 -.14986 aline .13843 -.16256 aline .13716 -.16383 aline .13716 -.17653 aline .13589 -.1778 aline .13589 -.1905 aline .13462 -.19177 aline .13462 -.2032 aline .13335 -.20447 aline .13335 -.21463 aline .13208 -.2159 aline .13208 -.22606 aline .13081 -.22733 aline .13081 -.23622 aline .12954 -.23749 aline .12954 -.24511 bezier .150804 -.245206 .16859 -.225045 .17145 -.20447 aline .17272 -.2032 bezier .174514 -.181011 .162287 -.156812 .140335 -.148907 aline .13843 -.14986 closepath ! end of curve fill dfont endchar dfont char="I" !-------------- Beginning of new char. dfont wid=.555557 hei=0 dep=2.22225 italic=.444446 set path ! start of curve newpath ! start of curve amove .29972 -.00254 bezier .319306 -.50209E-02 .339266 -.258595E-01 .32893 -.04572 aline .32512 -.04953 aline .32258 -.0508 aline .31877 -.05207 aline .31115 -.05207 aline .30734 -.0508 aline .3048 -.04953 aline .30099 -.04572 aline .29845 -.04064 aline .29845 -.03048 aline .30099 -.0254 aline .3048 -.02159 aline .30734 -.02032 aline .31115 -.01905 aline .31623 -.01778 aline .31369 -.01651 aline .31242 -.01524 aline .3048 -.01143 aline .29972 -.01016 aline .29845 -.00889 aline .29083 -.00889 aline .28575 -.01397 aline .28448 -.01651 aline .28321 -.01778 aline .2794 -.0254 aline .27813 -.02921 aline .27686 -.03175 aline .27051 -.0508 aline .26924 -.05588 aline .26797 -.05969 aline .25908 -.09525 aline .25781 -.1016 aline .25654 -.10668 aline .25273 -.12573 aline .25146 -.13081 aline .24511 -.16256 aline .24384 -.16383 aline .24384 -.17018 aline .24003 -.18923 aline .23876 -.1905 aline .23876 -.19685 aline .23749 -.19812 aline .23749 -.20447 aline .23622 -.21082 aline .23495 -.21209 bezier .234659 -.22703 .229082 -.240623 .2286 -.25527 aline .22733 -.25654 aline .22733 -.26289 aline .22606 -.26416 aline .22606 -.27051 aline .22479 -.27178 aline .22479 -.27813 aline .22352 -.2794 aline .22352 -.28575 aline .22225 -.28702 aline .22225 -.29337 aline .22098 -.29464 aline .22098 -.30099 aline .21971 -.30226 bezier .249936 -.316303 .276819 -.344762 .27813 -.37973 bezier .287987 -.428128 .247766 -.482689 .19685 -.48514 aline .19558 -.48641 aline .18415 -.48641 bezier .176731 -.521687 .168125 -.556697 .16002 -.59182 aline .14224 -.66294 bezier .130805 -.702405 .119511 -.745436 .08763 -.77343 bezier .664332E-01 -.790143 .280531E-01 -.783655 .02032 -.75565 aline .02032 -.74422 aline .02286 -.73914 aline .02667 -.73533 aline .02921 -.73406 aline .03302 -.73279 aline .04064 -.73279 aline .04445 -.73406 aline .04699 -.73533 aline .0508 -.73914 aline .05334 -.74422 aline .05334 -.75438 aline .0508 -.75946 aline .04699 -.76327 aline .04445 -.76454 aline .04064 -.76581 aline .03556 -.76708 bezier .464052E-01 -.774551 .061195 -.78058 .07239 -.77089 bezier .099427 -.743064 .104667 -.701757 .1143 -.66548 bezier .122341 -.626825 .130243 -.589861 .13589 -.55245 aline .13716 -.55118 aline .13716 -.54483 aline .13843 -.54356 aline .13843 -.53721 aline .1397 -.53594 aline .1397 -.52959 aline .14097 -.52832 aline .14097 -.52197 aline .14224 -.5207 aline .14224 -.51435 aline .14351 -.51308 aline .14351 -.50673 aline .14478 -.50546 aline .14478 -.49911 aline .14605 -.49784 aline .14605 -.49149 aline .14732 -.49022 aline .14732 -.48387 aline .148167 -.48133 aline .147574 -.479552 bezier .109191 -.463944 .083453 -.419866 .09144 -.37973 bezier .938447E-01 -.333469 .139016 -.295377 .18415 -.29718 bezier .192098 -.262445 .200104 -.227723 .20828 -.19304 aline .22733 -.11684 aline .2286 -.11303 aline .23114 -.10287 aline .23241 -.09906 aline .23368 -.09398 aline .24511 -.05969 bezier .254408 -.380447E-01 .263711 -.120501E-01 .28702 -.00254 closepath ! end of curve ! start of curve amove .17526 -.31242 bezier .142715 -.314707 .11311 -.340741 .10668 -.37338 bezier .967953E-01 -.407471 .116325 -.449263 .14986 -.46482 aline .15113 -.46228 aline .1524 -.45593 aline .15367 -.45466 aline .15367 -.44831 aline .15494 -.44196 aline .15621 -.44069 aline .15621 -.43434 aline .16129 -.40894 aline .16256 -.40767 aline .16256 -.40132 aline .16383 -.39497 aline .1651 -.38989 aline .17399 -.34544 aline .17526 -.34036 aline .17907 -.32131 aline .18034 -.31623 aline .181187 -.31369 aline .180686 -.312189 aline .178435 -.311626 aline .17526 -.31242 closepath ! end of curve ! start of curve amove .21717 -.32258 aline .2159 -.32893 aline .21463 -.3302 aline .21463 -.33655 aline .21336 -.3429 aline .21209 -.34417 aline .21209 -.35052 aline .20701 -.37592 aline .20574 -.37719 aline .20574 -.38354 aline .20447 -.38989 aline .2032 -.39497 aline .19431 -.43942 aline .19304 -.4445 aline .18923 -.46355 aline .18796 -.46863 aline .187008 -.470535 bezier .202174 -.474086 .21888 -.465125 .23241 -.4572 bezier .262078 -.435348 .27373 -.39368 .25908 -.36068 bezier .251357 -.342521 .23697 -.325316 .218186 -.319532 closepath ! end of curve fill dfont endchar dfont char="J" !-------------- Beginning of new char. dfont wid=1.11111 hei=0 dep=1.00001 italic=0 dfont next_char="K" set path ! start of curve newpath ! start of curve amove .20955 -.00254 bezier .262415 -.69685E-02 .313831 -.037051 .34163 -.08255 bezier .358471 -.105544 .366023 -.135818 .36957 -.16256 aline .36957 -.19304 bezier .365833 -.223429 .35589 -.257316 .33528 -.28194 bezier .2853 -.355472 .175523 -.375364 .1016 -.32639 bezier .568989E-01 -.298201 .241629E-01 -.247569 .02159 -.19431 aline .02032 -.19304 aline .02032 -.16256 bezier .240566E-01 -.132171 .340003E-01 -.982838E-01 .05461 -.07366 bezier .883196E-01 -.243524E-01 .150417 .205938E-02 .20955 -.00254 closepath ! end of curve ! start of curve amove .18161 -.02667 bezier .116984 -.310367E-01 .596078E-01 -.820279E-01 .04699 -.14605 aline .04572 -.14732 aline .04572 -.15367 aline .04445 -.15494 aline .04445 -.16383 aline .04318 -.1651 bezier .392916E-01 -.222952 .700253E-01 -.284407 .12319 -.31115 bezier .148848 -.326028 .178004 -.331355 .20701 -.3302 bezier .232895 -.32641 .261584 -.317887 .28321 -.30099 bezier .334699 -.265176 .359379 -.194138 .34036 -.13589 bezier .322416 -.673181E-01 .252251 -.202933E-01 .18288 -.0254 aline .18161 -.02667 closepath ! end of curve ! start of curve amove .19812 -.15367 aline .2032 -.15494 aline .20828 -.15748 aline .21463 -.16383 aline .21844 -.17145 aline .21844 -.18415 aline .21463 -.19177 aline .20828 -.19812 aline .2032 -.20066 aline .19812 -.20193 aline .19177 -.20193 aline .18669 -.20066 aline .18161 -.19812 aline .17526 -.19177 aline .17145 -.18415 aline .17145 -.17145 aline .17526 -.16383 aline .18161 -.15748 aline .18669 -.15494 aline .19177 -.15367 closepath ! end of curve fill dfont endchar dfont char="K" !-------------- Beginning of new char. dfont wid=1.51112 hei=.100001 dep=1.50001 italic=0 set path ! start of curve newpath ! start of curve amove .28321 -.00254 aline .28448 -.00381 bezier .336317 -.513615E-02 .387406 -.294289E-01 .42672 -.06223 aline .45212 -.08763 bezier .485568 -.126751 .50673 -.179333 .51054 -.22987 aline .51054 -.26543 aline .50927 -.2667 bezier .507799 -.317801 .484399 -.368665 .45212 -.40767 aline .42672 -.43307 bezier .387406 -.465871 .336317 -.490164 .28448 -.49149 aline .28321 -.49276 aline .24765 -.49276 aline .24638 -.49149 bezier .194543 -.490164 .143454 -.465871 .10414 -.43307 aline .07874 -.40767 bezier .452921E-01 -.368549 .241299E-01 -.315967 .02032 -.26543 aline .02032 -.22987 aline .02159 -.2286 bezier .230615E-01 -.177499 .464611E-01 -.126635 .07874 -.08763 aline .10414 -.06223 bezier .143454 -.294289E-01 .194543 -.513612E-02 .24638 -.00381 aline .24765 -.00254 aline .28321 -.00254 closepath ! end of curve ! start of curve amove .24892 -.03175 bezier .205071 -.034103 .160057 -.532248E-01 .12573 -.08128 aline .1016 -.10541 bezier .764442E-01 -.134669 .589721E-01 -.170906 .05207 -.20955 aline .0508 -.21082 aline .0508 -.21844 aline .04953 -.21971 aline .04953 -.23114 aline .04826 -.23241 aline .04826 -.26289 aline .04953 -.26416 bezier .506581E-01 -.293899 .612195E-01 -.324394 .07493 -.35179 bezier .828213E-01 -.36521 .918006E-01 -.377845 .1016 -.38989 aline .12573 -.41402 bezier .154638 -.437711 .189922 -.454263 .22733 -.46101 aline .2286 -.46228 aline .23622 -.46228 aline .23749 -.46355 aline .24892 -.46355 aline .25019 -.46482 aline .28067 -.46482 aline .28194 -.46355 bezier .325789 -.461197 .370803 -.442075 .40513 -.41402 aline .42926 -.38989 bezier .454416 -.360631 .471888 -.324394 .47879 -.28575 aline .48006 -.28448 aline .48006 -.27686 aline .48133 -.27559 aline .48133 -.26416 aline .4826 -.26289 aline .4826 -.23241 aline .48133 -.23114 bezier .480202 -.201401 .46964 -.170906 .45593 -.14351 bezier .448039 -.13009 .439059 -.117455 .42926 -.10541 aline .40513 -.08128 bezier .376222 -.575889E-01 .340938 -.410372E-01 .30353 -.03429 aline .30226 -.03302 aline .29464 -.03302 aline .29337 -.03175 aline .28194 -.03175 aline .28067 -.03048 aline .25019 -.03048 aline .24892 -.03175 closepath ! end of curve ! start of curve amove .2667 -.21844 bezier .288622 -.219122 .302325 -.246176 .28956 -.26416 bezier .276629 -.284129 .242727 -.278585 .23749 -.25527 aline .23622 -.24892 aline .23622 -.24638 aline .23749 -.24003 aline .23876 -.23622 aline .2413 -.23114 aline .24892 -.22352 aline .254 -.22098 aline .25781 -.21971 aline .26416 -.21844 closepath ! end of curve fill dfont endchar dfont char="L" !-------------- Beginning of new char. dfont wid=1.11111 hei=0 dep=1.00001 italic=0 dfont next_char="M" set path ! start of curve newpath ! start of curve amove .20955 -.00254 bezier .262415 -.69685E-02 .313831 -.037051 .34163 -.08255 bezier .358471 -.105544 .366023 -.135818 .36957 -.16256 aline .36957 -.19304 bezier .365833 -.223429 .35589 -.257316 .33528 -.28194 bezier .2853 -.355472 .175523 -.375364 .1016 -.32639 bezier .568989E-01 -.298201 .241629E-01 -.247569 .02159 -.19431 aline .02032 -.19304 aline .02032 -.16256 bezier .240566E-01 -.132171 .340003E-01 -.982838E-01 .05461 -.07366 bezier .883196E-01 -.243524E-01 .150417 .205938E-02 .20955 -.00254 closepath ! end of curve ! start of curve amove .18161 -.02667 bezier .116984 -.310367E-01 .596078E-01 -.820279E-01 .04699 -.14605 aline .04572 -.14732 aline .04572 -.15367 aline .04445 -.15494 aline .04445 -.16383 aline .04318 -.1651 aline .04445 -.16637 aline .18288 -.16637 aline .18415 -.1651 aline .18415 -.02667 aline .18288 -.0254 aline .18161 -.02667 closepath ! end of curve ! start of curve amove .20701 -.02794 aline .20701 -.1651 aline .20828 -.16637 aline .34544 -.16637 bezier .346126 -.147817 .337543 -.125545 .32893 -.10668 bezier .305679 -.623357E-01 .258549 -.300535E-01 .20828 -.02667 aline .20701 -.02794 closepath ! end of curve ! start of curve amove .04318 -.1905 bezier .477442E-01 -.222425 .605691E-01 -.258026 .08509 -.28194 bezier .106809 -.305862 .137588 -.32239 .17018 -.32766 aline .17145 -.32893 aline .18161 -.32893 aline .18288 -.3302 aline .18415 -.32893 aline .18415 -.1905 aline .18288 -.18923 aline .04445 -.18923 aline .04318 -.1905 closepath ! end of curve ! start of curve amove .20701 -.1905 aline .20701 -.32766 aline .20828 -.32893 bezier .272905 -.324563 .330282 -.273572 .3429 -.20955 aline .34417 -.20828 aline .34417 -.20193 aline .34544 -.20066 aline .34544 -.19177 aline .34671 -.1905 aline .34544 -.18923 aline .20828 -.18923 aline .20701 -.1905 closepath ! end of curve fill dfont endchar dfont char="M" !-------------- Beginning of new char. dfont wid=1.51112 hei=.100001 dep=1.50001 italic=0 set path ! start of curve newpath ! start of curve amove .28321 -.00254 aline .28448 -.00381 bezier .336317 -.513615E-02 .387406 -.294289E-01 .42672 -.06223 aline .45212 -.08763 bezier .485568 -.126751 .50673 -.179333 .51054 -.22987 aline .51054 -.26543 aline .50927 -.2667 bezier .507799 -.317801 .484399 -.368665 .45212 -.40767 aline .42672 -.43307 bezier .387406 -.465871 .336317 -.490164 .28448 -.49149 aline .28321 -.49276 aline .24765 -.49276 aline .24638 -.49149 bezier .194543 -.490164 .143454 -.465871 .10414 -.43307 aline .07874 -.40767 bezier .452921E-01 -.368549 .241299E-01 -.315967 .02032 -.26543 aline .02032 -.22987 aline .02159 -.2286 bezier .230615E-01 -.177499 .464611E-01 -.126635 .07874 -.08763 aline .10414 -.06223 bezier .143454 -.294289E-01 .194543 -.513612E-02 .24638 -.00381 aline .24765 -.00254 aline .28321 -.00254 closepath ! end of curve ! start of curve amove .24892 -.03175 bezier .205071 -.034103 .160057 -.532248E-01 .12573 -.08128 aline .1016 -.10541 bezier .764442E-01 -.134669 .589721E-01 -.170906 .05207 -.20955 aline .0508 -.21082 aline .0508 -.21844 aline .04953 -.21971 aline .04953 -.23114 aline .04826 -.23241 aline .04953 -.23368 aline .25019 -.23368 aline .25146 -.23241 aline .25146 -.03175 aline .25019 -.03048 aline .24892 -.03175 closepath ! end of curve ! start of curve amove .2794 -.03175 aline .2794 -.23241 aline .28067 -.23368 aline .48133 -.23368 aline .4826 -.23241 aline .48133 -.23114 bezier .480202 -.201401 .46964 -.170906 .45593 -.14351 bezier .448039 -.13009 .439059 -.117455 .42926 -.10541 aline .40513 -.08128 bezier .376222 -.575889E-01 .340938 -.410372E-01 .30353 -.03429 aline .30226 -.03302 aline .29464 -.03302 aline .29337 -.03175 aline .28194 -.03175 aline .28067 -.03048 aline .2794 -.03175 closepath ! end of curve ! start of curve amove .04826 -.26289 aline .04953 -.26416 bezier .506581E-01 -.293899 .612195E-01 -.324394 .07493 -.35179 bezier .828213E-01 -.36521 .918006E-01 -.377845 .1016 -.38989 aline .12573 -.41402 bezier .154638 -.437711 .189922 -.454263 .22733 -.46101 aline .2286 -.46228 aline .23622 -.46228 aline .23749 -.46355 aline .24892 -.46355 aline .25019 -.46482 aline .25146 -.46355 aline .25146 -.26289 aline .25019 -.26162 aline .04953 -.26162 aline .04826 -.26289 closepath ! end of curve ! start of curve amove .2794 -.26289 aline .2794 -.46355 aline .28067 -.46482 aline .28194 -.46355 bezier .325789 -.461197 .370803 -.442075 .40513 -.41402 aline .42926 -.38989 bezier .454416 -.360631 .471888 -.324394 .47879 -.28575 aline .48006 -.28448 aline .48006 -.27686 aline .48133 -.27559 aline .48133 -.26416 aline .4826 -.26289 aline .48133 -.26162 aline .28067 -.26162 aline .2794 -.26289 closepath ! end of curve fill dfont endchar dfont char="N" !-------------- Beginning of new char. dfont wid=1.11111 hei=0 dep=1.00001 italic=0 dfont next_char="O" set path ! start of curve newpath ! start of curve amove .20955 -.00254 bezier .262415 -.69685E-02 .313831 -.037051 .34163 -.08255 bezier .358471 -.105544 .366023 -.135818 .36957 -.16256 aline .36957 -.19304 bezier .365833 -.223429 .35589 -.257316 .33528 -.28194 bezier .2853 -.355472 .175523 -.375364 .1016 -.32639 bezier .568989E-01 -.298201 .241629E-01 -.247569 .02159 -.19431 aline .02032 -.19304 aline .02032 -.16256 bezier .240566E-01 -.132171 .340003E-01 -.982838E-01 .05461 -.07366 bezier .883196E-01 -.243524E-01 .150417 .205938E-02 .20955 -.00254 closepath ! end of curve ! start of curve amove .18161 -.02667 bezier .150791 -.283082E-01 .120145 -.425394E-01 .09652 -.06223 aline .19304 -.15875 aline .194945 -.159702 aline .19685 -.15875 aline .29337 -.06223 bezier .26295 -.363519E-01 .222337 -.230958E-01 .18288 -.0254 aline .18161 -.02667 closepath ! end of curve ! start of curve amove .07747 -.08128 bezier .630994E-01 -.100285 .519763E-01 -.122223 .04699 -.14605 aline .04572 -.14732 aline .04572 -.15367 aline .04445 -.15494 aline .04445 -.16383 aline .04318 -.1651 bezier .407351E-01 -.205057 .538905E-01 -.245711 .08001 -.27686 aline .17907 -.1778 aline .08001 -.07874 aline .07747 -.08128 closepath ! end of curve ! start of curve amove .21082 -.1778 aline .30988 -.27686 bezier .342394 -.237889 .355849 -.183233 .34036 -.13589 bezier .334298 -.11476 .323786 -.952872E-01 .30988 -.07874 aline .21082 -.1778 closepath ! end of curve ! start of curve amove .09652 -.29337 bezier .136263 -.326982 .19243 -.339694 .2413 -.32258 bezier .260547 -.31637 .278001 -.305929 .29337 -.29337 aline .19685 -.19685 aline .194945 -.195898 aline .19304 -.19685 aline .09652 -.29337 closepath ! end of curve fill dfont endchar dfont char="O" !-------------- Beginning of new char. dfont wid=1.51112 hei=.100001 dep=1.50001 italic=0 set path ! start of curve newpath ! start of curve amove .28321 -.00254 aline .28448 -.00381 bezier .336317 -.513615E-02 .387406 -.294289E-01 .42672 -.06223 aline .45212 -.08763 bezier .485568 -.126751 .50673 -.179333 .51054 -.22987 aline .51054 -.26543 aline .50927 -.2667 bezier .507799 -.317801 .484399 -.368665 .45212 -.40767 aline .42672 -.43307 bezier .387406 -.465871 .336317 -.490164 .28448 -.49149 aline .28321 -.49276 aline .24765 -.49276 aline .24638 -.49149 bezier .194543 -.490164 .143454 -.465871 .10414 -.43307 aline .07874 -.40767 bezier .452921E-01 -.368549 .241299E-01 -.315967 .02032 -.26543 aline .02032 -.22987 aline .02159 -.2286 bezier .230615E-01 -.177499 .464611E-01 -.126635 .07874 -.08763 aline .10414 -.06223 bezier .143454 -.294289E-01 .194543 -.513612E-02 .24638 -.00381 aline .24765 -.00254 aline .28321 -.00254 closepath ! end of curve ! start of curve amove .24892 -.03175 bezier .204525 -.342209E-01 .158794 -.053545 .12446 -.08255 aline .123507 -.084455 aline .12446 -.08636 aline .26543 -.22733 aline .4064 -.08636 aline .407353 -.084455 bezier .377382 -.549832E-01 .333559 -.394757E-01 .29337 -.03175 aline .28194 -.03175 aline .28067 -.03048 aline .25019 -.03048 aline .24892 -.03175 closepath ! end of curve ! start of curve amove .10033 -.10795 bezier .692145E-01 -.141326 .533466E-01 -.189127 .04826 -.23241 aline .04826 -.26289 aline .04953 -.26416 bezier .506581E-01 -.293899 .612195E-01 -.324394 .07493 -.35179 bezier .831517E-01 -.364971 .912892E-01 -.3786 .102235 -.389573 aline .10414 -.38862 aline .24511 -.24765 aline .10414 -.10668 aline .102235 -.105728 aline .101177 -.106257 aline .10033 -.10795 closepath ! end of curve ! start of curve amove .28575 -.24765 aline .42672 -.38862 aline .428625 -.389573 bezier .460702 -.356051 .477521 -.307156 .4826 -.26289 aline .4826 -.23241 aline .48133 -.23114 bezier .480202 -.201401 .46964 -.170906 .45593 -.14351 bezier .447708 -.13033 .439571 -.116699 .428625 -.105728 aline .42672 -.10668 aline .28575 -.24765 closepath ! end of curve ! start of curve amove .12446 -.40894 aline .123507 -.410845 bezier .153478 -.440317 .197301 -.455824 .23749 -.46355 aline .24892 -.46355 aline .25019 -.46482 aline .28067 -.46482 aline .28194 -.46355 bezier .326335 -.461079 .372066 -.441755 .4064 -.41275 aline .407353 -.410845 aline .4064 -.40894 aline .26543 -.26797 aline .12446 -.40894 aline .123507 -.410845 closepath ! end of curve fill dfont endchar dfont char="P" !-------------- Beginning of new char. dfont wid=1.05556 hei=0 dep=1.00001 italic=0 dfont next_char="X" set path ! start of curve newpath ! start of curve amove .32004 -.00254 bezier .331167 -.293707E-01 .340486 -.575683E-01 .35052 -.08509 aline .3429 -.08509 bezier .327846 -.467952E-01 .287111 -.237107E-01 .24765 -.02032 aline .24638 -.01905 aline .23749 -.01905 aline .23622 -.01778 aline .21844 -.01778 aline .21717 -.01651 aline .05969 -.01651 aline .587375E-01 -.018415 bezier .967926E-01 -.713812E-01 .135737 -.123707 .17399 -.17653 aline .17399 -.17907 bezier .133655 -.230225 .925389E-01 -.280817 .523875E-01 -.332105 aline .05334 -.33401 aline .21971 -.33401 aline .22098 -.33274 bezier .248131 -.333169 .274455 -.327201 .29972 -.31496 bezier .319072 -.303747 .334729 -.286411 .3429 -.26543 aline .35052 -.26543 aline .33655 -.30734 aline .33528 -.30988 aline .32131 -.35179 aline .32004 -.35306 aline .02286 -.35306 aline .02032 -.35179 aline .02032 -.34798 bezier .624737E-01 -.294798 .105225 -.242048 .147003 -.188595 bezier .104772 -.130812 .625499E-01 -.730234E-01 .02032 -.01524 aline .02032 -.00381 aline .02286 -.00254 aline .32004 -.00254 closepath ! end of curve fill dfont endchar dfont char="Q" !-------------- Beginning of new char. dfont wid=.944448 hei=0 dep=1.00001 italic=0 dfont next_char="Y" set path ! start of curve newpath ! start of curve amove .31115 -.00254 aline .31115 -.01651 aline .30099 -.01651 aline .29972 -.01778 aline .29337 -.01905 aline .28956 -.02032 aline .28448 -.02286 aline .2794 -.02794 aline .27813 -.03048 aline .27686 -.03429 aline .27559 -.03556 aline .27559 -.32004 aline .27686 -.32131 aline .27813 -.32512 aline .2794 -.32766 aline .28448 -.33274 aline .28956 -.33528 aline .29337 -.33655 aline .29972 -.33782 aline .30099 -.33909 aline .31115 -.33909 aline .31115 -.35306 aline .20701 -.35306 aline .20701 -.33909 aline .21717 -.33909 aline .21844 -.33782 aline .22479 -.33655 aline .2286 -.33528 aline .23368 -.33274 aline .23876 -.32766 aline .24003 -.32512 aline .2413 -.32131 aline .24257 -.32004 aline .24257 -.01778 aline .2413 -.01651 aline .09017 -.01651 aline .0889 -.01778 aline .0889 -.32004 aline .09017 -.32131 aline .09144 -.32512 aline .09271 -.32766 aline .09779 -.33274 aline .10287 -.33528 aline .10668 -.33655 aline .11303 -.33782 aline .1143 -.33909 aline .12446 -.33909 aline .12446 -.35306 aline .02032 -.35306 aline .02032 -.33909 aline .03048 -.33909 aline .03175 -.33782 aline .0381 -.33655 aline .04191 -.33528 aline .04699 -.33274 aline .05207 -.32766 aline .05334 -.32512 aline .05461 -.32131 aline .05588 -.32004 aline .05588 -.03556 aline .05461 -.03429 aline .05334 -.03048 aline .05207 -.02794 aline .04699 -.02286 aline .04191 -.02032 aline .0381 -.01905 aline .03175 -.01778 aline .03048 -.01651 aline .02032 -.01651 aline .02032 -.00254 aline .31115 -.00254 closepath ! end of curve fill dfont endchar dfont char="R" !-------------- Beginning of new char. dfont wid=.472223 hei=0 dep=1.11112 italic=.194446 dfont next_char="Z" set path ! start of curve newpath ! start of curve amove .18415 -.00254 bezier .201588 -.433652E-02 .222238 -.222577E-01 .21209 -.04064 aline .20955 -.04318 aline .20447 -.04572 aline .19685 -.04572 aline .19177 -.04318 aline .18923 -.04064 aline .18669 -.03556 aline .18669 -.02794 aline .18923 -.02286 aline .19177 -.02032 aline .19939 -.01651 bezier .1872 -.841974E-02 .168923 -.428659E-02 .15875 -.01778 aline .15748 -.02032 aline .15621 -.02159 bezier .148599 -.040614 .144757 -.058896 .14478 -.07874 aline .14351 -.08001 aline .14351 -.09271 aline .14224 -.09398 aline .14224 -.10922 aline .14097 -.11049 aline .14097 -.12827 aline .1397 -.12954 aline .1397 -.14605 aline .13843 -.14732 aline .13843 -.16256 aline .13716 -.16383 aline .13716 -.17653 aline .13589 -.1778 aline .13589 -.1905 aline .13462 -.19177 aline .13462 -.2032 aline .13335 -.20447 aline .13335 -.21463 aline .13208 -.2159 aline .13208 -.22606 aline .13081 -.22733 aline .13081 -.23622 aline .12954 -.23749 aline .12954 -.24765 aline .12827 -.24892 aline .12827 -.25781 aline .127 -.25908 aline .127 -.2667 aline .12573 -.26797 aline .12573 -.27686 aline .12446 -.27813 bezier .122785 -.296734 .120634 -.313823 .11684 -.33274 bezier .109622 -.357809 .951289E-01 -.385601 .06731 -.39116 aline .0508 -.39116 bezier .333615E-01 -.389363 .012712 -.371442 .02286 -.35306 aline .0254 -.35052 aline .03048 -.34798 aline .0381 -.34798 aline .04318 -.35052 aline .04572 -.35306 aline .04826 -.35814 aline .04826 -.36576 aline .04572 -.37084 aline .04318 -.37338 aline .03556 -.37719 bezier .476832E-01 -.385049 .643506E-01 -.388761 .0762 -.37846 bezier .091144 -.366196 .917805E-01 -.342939 .09652 -.32639 aline .09652 -.31496 aline .09779 -.31369 aline .09779 -.30099 aline .09906 -.29972 aline .09906 -.28448 aline .10033 -.28321 aline .10033 -.26543 aline .1016 -.26416 aline .1016 -.24765 aline .10287 -.24638 aline .10287 -.23114 aline .10414 -.22987 aline .10414 -.21717 aline .10541 -.2159 aline .10541 -.2032 aline .10668 -.20193 aline .10668 -.1905 aline .10795 -.18923 aline .10795 -.17907 aline .10922 -.1778 aline .10922 -.16764 aline .11049 -.16637 aline .11049 -.15748 aline .11176 -.15621 aline .11176 -.14605 aline .11303 -.14478 aline .11303 -.13589 aline .1143 -.13462 aline .1143 -.127 aline .11557 -.12573 aline .11557 -.11684 aline .11684 -.11557 aline .11684 -.10795 aline .11811 -.10668 aline .11811 -.09779 aline .11938 -.09652 bezier .122007 -.067302 .126544 -.318595E-01 .15113 -.01016 aline .15367 -.00889 aline .15494 -.00762 aline .16002 -.00508 aline .16383 -.00381 aline .16891 -.00254 closepath ! end of curve fill dfont endchar dfont char="S" !-------------- Beginning of new char. dfont wid=.833336 hei=0 dep=1.00001 italic=0 dfont next_char="[" set path ! start of curve newpath ! start of curve amove .03556 -.00254 aline .0381 -.00381 aline .04191 -.00762 aline .04318 -.01016 aline .04318 -.24257 bezier .480384E-01 -.27207 .066433 -.301589 .09398 -.31623 bezier .131384 -.337421 .178287 -.334193 .21209 -.30734 bezier .233608 -.292569 .245558 -.266577 .25019 -.24257 aline .25019 -.01016 aline .25146 -.00762 aline .25527 -.00381 aline .25781 -.00254 aline .26543 -.00254 aline .26797 -.00381 aline .27178 -.00762 aline .27305 -.01016 aline .27305 -.24511 bezier .270427 -.266675 .261323 -.288759 .24765 -.30607 bezier .225953 -.331442 .195299 -.350399 .16129 -.35179 bezier .099453 -.36232 .317767E-01 -.316349 .02159 -.25273 aline .02159 -.24638 aline .02032 -.24511 aline .02032 -.01016 aline .02159 -.00762 aline .0254 -.00381 aline .02794 -.00254 closepath ! end of curve fill dfont endchar dfont char="T" !-------------- Beginning of new char. dfont wid=.833336 hei=0 dep=1.00001 italic=0 dfont next_char="\" set path ! start of curve newpath ! start of curve amove .16002 -.00254 bezier .213142 -.737457E-02 .262857 -.488454E-01 .27178 -.10287 aline .27178 -.10922 aline .27305 -.11049 aline .27305 -.34544 aline .27178 -.34798 aline .26797 -.35179 aline .26543 -.35306 aline .25781 -.35306 aline .25527 -.35179 aline .25146 -.34798 aline .25019 -.34544 aline .25019 -.11303 bezier .245332 -.835304E-01 .226937 -.540111E-01 .19939 -.03937 bezier .161986 -.181788E-01 .115083 -.214068E-01 .08128 -.04826 bezier .597623E-01 -.063031 .478122E-01 -.890231E-01 .04318 -.11303 aline .04318 -.34544 aline .04191 -.34798 aline .0381 -.35179 aline .03556 -.35306 aline .02794 -.35306 aline .0254 -.35179 aline .02159 -.34798 aline .02032 -.34544 aline .02032 -.11049 bezier .229428E-01 -.889245E-01 .320465E-01 -.668413E-01 .04572 -.04953 bezier .674174E-01 -.241585E-01 .980707E-01 -.520053E-02 .13208 -.00381 aline .13335 -.00254 aline .16002 -.00254 closepath ! end of curve fill dfont endchar dfont char="U" !-------------- Beginning of new char. dfont wid=.833336 hei=0 dep=1.00001 italic=0 dfont next_char="]" set path ! start of curve newpath ! start of curve amove .03556 -.00254 aline .0381 -.00381 aline .04191 -.00762 aline .04318 -.01016 aline .04318 -.24257 bezier .480384E-01 -.27207 .066433 -.301589 .09398 -.31623 bezier .131384 -.337421 .178287 -.334193 .21209 -.30734 bezier .233608 -.292569 .245558 -.266577 .25019 -.24257 aline .25019 -.01016 aline .25146 -.00762 aline .25527 -.00381 aline .25781 -.00254 aline .26543 -.00254 aline .26797 -.00381 aline .27178 -.00762 aline .27305 -.01016 aline .27305 -.24511 bezier .270427 -.266675 .261323 -.288759 .24765 -.30607 bezier .225953 -.331442 .195299 -.350399 .16129 -.35179 bezier .099453 -.36232 .317767E-01 -.316349 .02159 -.25273 aline .02159 -.24638 aline .02032 -.24511 aline .02032 -.01016 aline .02159 -.00762 aline .0254 -.00381 aline .02794 -.00254 closepath ! end of curve ! start of curve amove .15113 -.09017 aline .15367 -.09144 aline .15621 -.09398 aline .15748 -.09652 aline .15875 -.10033 aline .15875 -.15494 aline .16002 -.15621 aline .21463 -.15621 aline .21844 -.15748 aline .22098 -.15875 aline .22225 -.16002 aline .22479 -.1651 aline .22479 -.17145 aline .22352 -.17399 aline .21971 -.1778 aline .21717 -.17907 aline .16002 -.17907 aline .15875 -.18034 aline .15875 -.23495 aline .15748 -.24003 aline .1524 -.24511 aline .14859 -.24638 aline .14478 -.24638 aline .14097 -.24511 aline .13589 -.24003 aline .13589 -.18034 aline .13462 -.17907 aline .0762 -.17907 aline .07366 -.1778 aline .06985 -.17399 aline .06858 -.17145 aline .06858 -.1651 aline .07112 -.16002 aline .07239 -.15875 aline .07493 -.15748 aline .07874 -.15621 aline .13462 -.15621 aline .13589 -.15494 aline .13589 -.09652 aline .13716 -.09398 aline .1397 -.09144 aline .14224 -.09017 closepath ! end of curve fill dfont endchar dfont char="V" !-------------- Beginning of new char. dfont wid=.833336 hei=0 dep=1.00001 italic=0 dfont next_char="^" set path ! start of curve newpath ! start of curve amove .14986 -.00254 aline .15367 -.00381 aline .15494 -.00508 bezier .19638 -.11485 .233019 -.227228 .27305 -.33782 aline .27305 -.34544 aline .27178 -.34798 aline .26797 -.35179 aline .26543 -.35306 aline .25781 -.35306 aline .25527 -.35179 aline .25146 -.34798 bezier .216 -.249757 .183053 -.1498 .146685 -.523875E-01 bezier .110317 -.1498 .773703E-01 -.249757 .04191 -.34798 aline .0381 -.35179 aline .03556 -.35306 aline .02794 -.35306 aline .0254 -.35179 aline .02159 -.34798 aline .02032 -.34544 aline .02032 -.33782 bezier .591661E-01 -.22831 .973132E-01 -.118511 .13589 -.00889 aline .14097 -.00381 aline .14351 -.00254 closepath ! end of curve fill dfont endchar dfont char="W" !-------------- Beginning of new char. dfont wid=.833336 hei=0 dep=1.00001 italic=0 dfont next_char="_" set path ! start of curve newpath ! start of curve amove .03556 -.00254 aline .0381 -.00381 aline .04191 -.00762 bezier .773705E-01 -.105842 .110317 -.2058 .146685 -.303212 bezier .183053 -.2058 .215999 -.105842 .25146 -.00762 aline .25527 -.00381 aline .25781 -.00254 aline .26543 -.00254 aline .26797 -.00381 aline .27178 -.00762 aline .27305 -.01016 aline .27305 -.01778 bezier .233019 -.128372 .19638 -.24075 .15494 -.35052 aline .15367 -.35179 aline .14986 -.35306 aline .14351 -.35306 aline .14097 -.35179 aline .13589 -.34671 bezier .973133E-01 -.237089 .591661E-01 -.12729 .02032 -.01778 aline .02032 -.01016 aline .02159 -.00762 aline .0254 -.00381 aline .02794 -.00254 closepath ! end of curve fill dfont endchar dfont char="X" !-------------- Beginning of new char. dfont wid=1.44445 hei=.100001 dep=1.50001 italic=0 set path ! start of curve newpath ! start of curve amove .4445 -.00254 bezier .460021 -.034807 .473101 -.687042E-01 .48768 -.1016 aline .48006 -.1016 bezier .459583 -.581153E-01 .41298 -.346533E-01 .36703 -.02667 aline .36576 -.0254 aline .35941 -.0254 aline .35814 -.02413 aline .35052 -.02413 aline .34925 -.02286 aline .34036 -.02286 aline .33909 -.02159 aline .32512 -.02159 aline .32385 -.02032 aline .30099 -.02032 aline .29972 -.01905 aline .08382 -.01905 aline .08255 -.02032 bezier .137492 -.953157E-01 .192252 -.170443 .24765 -.24511 aline .24765 -.25019 bezier .186937 -.320454 .128125 -.392089 .06731 -.46228 aline .06858 -.46355 aline .30353 -.46355 aline .3048 -.46228 aline .32766 -.46228 aline .32893 -.46101 bezier .366017 -.460038 .40469 -.450662 .43815 -.43053 bezier .456365 -.418217 .471287 -.401252 .48006 -.381 aline .48768 -.381 bezier .473352 -.418233 .459878 -.456201 .4445 -.49276 aline .02286 -.49276 aline .02032 -.49149 aline .02032 -.48768 bezier .081271 -.414692 .144356 -.342957 .204047 -.26924 bezier .143961 -.184801 .813591E-01 -.101711 .02032 -.01778 aline .02032 -.00381 aline .02286 -.00254 aline .4445 -.00254 closepath ! end of curve fill dfont endchar dfont char="Y" !-------------- Beginning of new char. dfont wid=1.27778 hei=.100001 dep=1.50001 italic=0 set path ! start of curve newpath ! start of curve amove .42926 -.00254 aline .42926 -.02159 bezier .410814 -.211433E-01 .390838 -.239701E-01 .37719 -.0381 aline .37338 -.04572 aline .37211 -.0508 aline .37084 -.05207 aline .37084 -.44323 aline .37211 -.4445 bezier .374826 -.46498 .398127 -.470638 .41402 -.47371 aline .42926 -.47371 aline .42926 -.49276 aline .26035 -.49276 aline .26035 -.47371 bezier .278796 -.474157 .298772 -.47133 .31242 -.4572 aline .31623 -.44958 aline .3175 -.4445 aline .31877 -.44323 aline .31877 -.02286 aline .3175 -.02159 aline .13208 -.02159 aline .13081 -.02286 aline .13081 -.44323 aline .13208 -.4445 bezier .134796 -.46498 .158097 -.470638 .17399 -.47371 aline .18923 -.47371 aline .18923 -.49276 aline .02032 -.49276 aline .02032 -.47371 bezier .038766 -.474157 .058742 -.47133 .07239 -.4572 aline .0762 -.44958 aline .07747 -.4445 aline .07874 -.44323 aline .07874 -.05207 aline .07747 -.0508 bezier .747541E-01 -.303196E-01 .514532E-01 -.246616E-01 .03556 -.02159 aline .02032 -.02159 aline .02032 -.00254 aline .42926 -.00254 closepath ! end of curve fill dfont endchar dfont char="Z" !-------------- Beginning of new char. dfont wid=.555557 hei=0 dep=2.22225 italic=.444446 set path ! start of curve newpath ! start of curve amove .29972 -.00254 bezier .319306 -.50209E-02 .339266 -.258595E-01 .32893 -.04572 aline .32512 -.04953 aline .32258 -.0508 aline .31877 -.05207 aline .31115 -.05207 aline .30734 -.0508 aline .3048 -.04953 aline .30099 -.04572 aline .29845 -.04064 aline .29845 -.03048 aline .30099 -.0254 aline .3048 -.02159 aline .30734 -.02032 aline .31115 -.01905 aline .31623 -.01778 aline .31369 -.01651 aline .31242 -.01524 aline .3048 -.01143 aline .29972 -.01016 aline .29845 -.00889 aline .29083 -.00889 aline .28575 -.01397 aline .28448 -.01651 aline .28321 -.01778 aline .2794 -.0254 aline .27813 -.02921 aline .27686 -.03175 aline .27051 -.0508 aline .26924 -.05588 aline .26797 -.05969 aline .25908 -.09525 aline .25781 -.1016 aline .25654 -.10668 aline .25273 -.12573 aline .25146 -.13081 aline .24511 -.16256 aline .24384 -.16383 aline .24384 -.17018 aline .24003 -.18923 aline .23876 -.1905 aline .23876 -.19685 aline .23749 -.19812 aline .23749 -.20447 aline .23622 -.21082 aline .23495 -.21209 bezier .234659 -.22703 .229082 -.240623 .2286 -.25527 aline .22733 -.25654 aline .22733 -.26289 aline .22606 -.26416 bezier .224858 -.279005 .22144 -.29207 .21971 -.30734 aline .21844 -.30861 aline .21844 -.31496 aline .21717 -.31623 aline .21717 -.32258 aline .2159 -.32893 aline .21463 -.3302 aline .21463 -.33655 aline .21336 -.3429 aline .21209 -.34417 aline .21209 -.35052 aline .20701 -.37592 aline .20574 -.37719 aline .20574 -.38354 aline .20447 -.38989 aline .2032 -.39497 aline .19431 -.43942 bezier .183628 -.490388 .172052 -.541155 .16002 -.59182 aline .14224 -.66294 bezier .130805 -.702405 .119511 -.745436 .08763 -.77343 bezier .664332E-01 -.790143 .280531E-01 -.783655 .02032 -.75565 aline .02032 -.74422 aline .02286 -.73914 aline .02667 -.73533 aline .02921 -.73406 aline .03302 -.73279 aline .04064 -.73279 aline .04445 -.73406 aline .04699 -.73533 aline .0508 -.73914 aline .05334 -.74422 aline .05334 -.75438 aline .0508 -.75946 aline .04699 -.76327 aline .04445 -.76454 aline .04064 -.76581 aline .03556 -.76708 bezier .464052E-01 -.774551 .061195 -.78058 .07239 -.77089 bezier .099427 -.743064 .104667 -.701757 .1143 -.66548 bezier .122341 -.626825 .130243 -.589861 .13589 -.55245 aline .13716 -.55118 aline .13716 -.54483 aline .13843 -.54356 aline .13843 -.53721 aline .1397 -.53594 aline .1397 -.52959 aline .14097 -.52832 aline .14097 -.52197 aline .14224 -.5207 bezier .143442 -.505855 .14686 -.49279 .14859 -.47752 aline .14986 -.47625 aline .14986 -.4699 aline .15113 -.46863 aline .15113 -.46228 aline .1524 -.45593 aline .15367 -.45466 aline .15367 -.44831 aline .15494 -.44196 aline .15621 -.44069 aline .15621 -.43434 aline .16129 -.40894 aline .16256 -.40767 aline .16256 -.40132 aline .16383 -.39497 aline .1651 -.38989 aline .17399 -.34544 bezier .184672 -.294472 .196248 -.243705 .20828 -.19304 aline .22733 -.11684 aline .2286 -.11303 aline .23114 -.10287 aline .23241 -.09906 aline .23368 -.09398 aline .24511 -.05969 bezier .254408 -.380447E-01 .263711 -.120501E-01 .28702 -.00254 closepath ! end of curve fill dfont endchar dfont char="[" !-------------- Beginning of new char. dfont wid=1.11111 hei=.100001 dep=1.50001 italic=0 set path ! start of curve newpath ! start of curve amove .0381 -.00254 aline .04064 -.00381 aline .04318 -.00508 aline .04572 -.00762 aline .04826 -.0127 aline .04826 -.33655 bezier .522095E-01 -.362459 .622264E-01 -.390723 .08001 -.41148 bezier .10149 -.436478 .130173 -.454006 .16256 -.46101 aline .16383 -.46228 aline .17018 -.46228 aline .17145 -.46355 aline .18034 -.46355 aline .18161 -.46482 bezier .220062 -.467419 .258444 -.455441 .28956 -.4318 bezier .314557 -.409889 .333976 -.381487 .33909 -.34798 aline .34036 -.34671 aline .34036 -.33782 aline .34163 -.33655 aline .34163 -.0127 aline .34417 -.00762 aline .34671 -.00508 aline .35179 -.00254 aline .35941 -.00254 aline .36449 -.00508 aline .36703 -.00762 aline .36957 -.0127 aline .36957 -.33909 aline .3683 -.34036 bezier .367792 -.37302 .351669 -.403941 .33274 -.42926 aline .31115 -.45085 bezier .28342 -.473139 .248054 -.490602 .21209 -.49149 aline .21082 -.49276 aline .17907 -.49276 bezier .163854 -.489921 .146119 -.488555 .13081 -.48133 bezier .111646 -.474249 .944905E-01 -.463302 .07874 -.45085 aline .05715 -.42926 bezier .370618E-01 -.403829 .231467E-01 -.371175 .02032 -.33909 aline .02032 -.0127 aline .02286 -.00762 aline .0254 -.00508 aline .02794 -.00381 aline .03048 -.00254 closepath ! end of curve fill dfont endchar dfont char="\" !-------------- Beginning of new char. dfont wid=1.11111 hei=.100001 dep=1.50001 italic=0 set path ! start of curve newpath ! start of curve amove .21082 -.00254 bezier .226036 -.537887E-02 .243771 -.674519E-02 .25908 -.01397 bezier .278244 -.210505E-01 .2954 -.319981E-01 .31115 -.04445 aline .33274 -.06604 bezier .352828 -.914708E-01 .366743 -.124125 .36957 -.15621 aline .36957 -.4826 aline .36703 -.48768 aline .36449 -.49022 aline .35941 -.49276 aline .35179 -.49276 aline .34671 -.49022 aline .34417 -.48768 aline .34163 -.4826 aline .34163 -.15875 bezier .33768 -.132841 .327664 -.104577 .30988 -.08382 bezier .2884 -.588224E-01 .259717 -.412944E-01 .22733 -.03429 aline .22606 -.03302 aline .21971 -.03302 aline .21844 -.03175 aline .20955 -.03175 aline .20828 -.03048 bezier .169828 -.278812E-01 .131446 -.398589E-01 .10033 -.0635 bezier .075333 -.854105E-01 .559145E-01 -.113813 .0508 -.14732 aline .04953 -.14859 aline .04953 -.15748 aline .04826 -.15875 aline .04826 -.4826 aline .04572 -.48768 aline .04318 -.49022 aline .0381 -.49276 aline .03048 -.49276 aline .0254 -.49022 aline .02286 -.48768 aline .02032 -.4826 aline .02032 -.15621 aline .02159 -.15494 bezier .220979E-01 -.12228 .382209E-01 -.913587E-01 .05715 -.06604 aline .07874 -.04445 bezier .10647 -.022161 .141836 -.469761E-02 .1778 -.00381 aline .17907 -.00254 aline .21082 -.00254 closepath ! end of curve fill dfont endchar dfont char="]" !-------------- Beginning of new char. dfont wid=1.11111 hei=.100001 dep=1.50001 italic=0 set path ! start of curve newpath ! start of curve amove .0381 -.00254 aline .04064 -.00381 aline .04318 -.00508 aline .04572 -.00762 aline .04826 -.0127 aline .04826 -.33655 bezier .522095E-01 -.362459 .622264E-01 -.390723 .08001 -.41148 bezier .10149 -.436478 .130173 -.454006 .16256 -.46101 aline .16383 -.46228 aline .17018 -.46228 aline .17145 -.46355 aline .18034 -.46355 aline .18161 -.46482 bezier .220062 -.467419 .258444 -.455441 .28956 -.4318 bezier .314557 -.409889 .333976 -.381487 .33909 -.34798 aline .34036 -.34671 aline .34036 -.33782 aline .34163 -.33655 aline .34163 -.0127 aline .34417 -.00762 aline .34671 -.00508 aline .35179 -.00254 aline .35941 -.00254 aline .36449 -.00508 aline .36703 -.00762 aline .36957 -.0127 aline .36957 -.33909 aline .3683 -.34036 bezier .367792 -.37302 .351669 -.403941 .33274 -.42926 aline .31115 -.45085 bezier .28342 -.473139 .248054 -.490602 .21209 -.49149 aline .21082 -.49276 aline .17907 -.49276 bezier .163854 -.489921 .146119 -.488555 .13081 -.48133 bezier .111646 -.474249 .944905E-01 -.463302 .07874 -.45085 aline .05715 -.42926 bezier .370618E-01 -.403829 .231467E-01 -.371175 .02032 -.33909 aline .02032 -.0127 aline .02286 -.00762 aline .0254 -.00508 aline .02794 -.00381 aline .03048 -.00254 closepath ! end of curve ! start of curve amove .19939 -.11811 aline .20193 -.11938 aline .20447 -.12065 aline .20574 -.12192 aline .20828 -.127 aline .20955 -.13081 aline .20955 -.21844 aline .21082 -.21971 aline .30099 -.21971 aline .30607 -.22225 aline .30861 -.22479 aline .31115 -.22987 aline .31115 -.23749 aline .30861 -.24257 aline .30607 -.24511 aline .30099 -.24765 aline .21082 -.24765 aline .20955 -.24892 aline .20955 -.33655 bezier .209348 -.351404 .186861 -.355534 .18161 -.34163 aline .18161 -.24892 aline .18034 -.24765 aline .0889 -.24765 aline .08382 -.24511 aline .08128 -.24257 aline .07874 -.23749 aline .07874 -.22987 aline .08128 -.22479 aline .08382 -.22225 aline .0889 -.21971 aline .18034 -.21971 aline .18161 -.21844 aline .18161 -.127 aline .18415 -.12192 aline .18542 -.12065 aline .18796 -.11938 aline .1905 -.11811 closepath ! end of curve fill dfont endchar dfont char="^" !-------------- Beginning of new char. dfont wid=1.11111 hei=.100001 dep=1.50001 italic=0 set path ! start of curve newpath ! start of curve amove .19939 -.00254 aline .20193 -.00381 aline .20701 -.00889 aline .20955 -.01397 aline .21844 -.04064 aline .21971 -.04318 aline .2286 -.06985 aline .22987 -.07239 aline .23876 -.09906 aline .24003 -.1016 aline .25019 -.13208 bezier .267956 -.18144 .284494 -.23131 .30226 -.28067 aline .31242 -.31115 bezier .3318 -.365623 .350513 -.420373 .36957 -.47498 aline .36957 -.4826 aline .36703 -.48768 aline .36449 -.49022 aline .35941 -.49276 aline .35179 -.49276 aline .34671 -.49022 aline .34417 -.48768 bezier .322927 -.431934 .304921 -.374848 .28448 -.31877 aline .27432 -.28829 bezier .256554 -.23893 .240016 -.18906 .22225 -.1397 aline .21209 -.10922 aline .21082 -.10668 aline .20193 -.08001 aline .20066 -.07747 aline .195834 -.062992 aline .194945 -.625475E-01 aline .194056 -.062992 aline .18923 -.07747 aline .18796 -.08001 aline .17907 -.10668 aline .1778 -.10922 aline .16764 -.1397 bezier .149874 -.18906 .133336 -.23893 .11557 -.28829 aline .10541 -.31877 bezier .849689E-01 -.374848 .669625E-01 -.431934 .04572 -.48768 aline .04318 -.49022 aline .0381 -.49276 aline .03048 -.49276 aline .0254 -.49022 aline .02286 -.48768 aline .02032 -.4826 aline .02032 -.47498 bezier .393772E-01 -.420373 .580895E-01 -.365623 .07747 -.31115 aline .08763 -.28067 bezier .105396 -.23131 .121934 -.18144 .1397 -.13208 aline .14986 -.1016 aline .15113 -.09906 aline .16002 -.07239 aline .16129 -.06985 aline .17018 -.04318 aline .17145 -.04064 aline .18034 -.01397 aline .18288 -.00889 aline .18669 -.00508 aline .18923 -.00381 aline .19177 -.00254 closepath ! end of curve fill dfont endchar dfont char="_" !-------------- Beginning of new char. dfont wid=1.11111 hei=.100001 dep=1.50001 italic=0 set path ! start of curve newpath ! start of curve amove .0381 -.00254 aline .04064 -.00381 aline .04318 -.00508 aline .04572 -.00762 bezier .669625E-01 -.633659E-01 .849689E-01 -.120452 .10541 -.17653 aline .11557 -.20701 bezier .133336 -.25637 .149874 -.30624 .16764 -.3556 aline .1778 -.38608 aline .17907 -.38862 aline .18796 -.41529 aline .18923 -.41783 aline .194056 -.432308 aline .194945 -.432752 aline .195834 -.432308 aline .20066 -.41783 aline .20193 -.41529 aline .21082 -.38862 aline .21209 -.38608 aline .22225 -.3556 bezier .240016 -.30624 .256554 -.25637 .27432 -.20701 aline .28448 -.17653 bezier .304921 -.120452 .322928 -.633659E-01 .34417 -.00762 aline .34671 -.00508 aline .35179 -.00254 aline .35941 -.00254 aline .36449 -.00508 aline .36703 -.00762 aline .36957 -.0127 aline .36957 -.02032 bezier .350513 -.074927 .3318 -.129677 .31242 -.18415 aline .30226 -.21463 bezier .284494 -.26399 .267956 -.313859 .25019 -.36322 aline .24003 -.3937 aline .23876 -.39624 aline .22987 -.42291 aline .2286 -.42545 aline .21971 -.45212 aline .21844 -.45466 aline .20955 -.48133 aline .20701 -.48641 aline .20193 -.49149 aline .19939 -.49276 aline .19177 -.49276 aline .18669 -.49022 aline .18288 -.48641 aline .18034 -.48133 aline .17145 -.45466 aline .17018 -.45212 aline .16129 -.42545 aline .16002 -.42291 aline .15113 -.39624 aline .14986 -.3937 aline .1397 -.36322 bezier .121934 -.31386 .105396 -.26399 .08763 -.21463 aline .07747 -.18415 bezier .580896E-01 -.129677 .393771E-01 -.074927 .02032 -.02032 aline .02032 -.0127 aline .02286 -.00762 aline .0254 -.00508 aline .02794 -.00381 aline .03048 -.00254 closepath ! end of curve fill dfont endchar dfont char="`" !-------------- Beginning of new char. dfont wid=.944448 hei=0 dep=1.00001 italic=0 dfont next_char="a" set path ! start of curve newpath ! start of curve amove .12446 -.00254 aline .12446 -.01651 aline .1143 -.01651 aline .11303 -.01778 aline .10668 -.01905 aline .10287 -.02032 aline .09779 -.02286 aline .09271 -.02794 aline .09144 -.03048 aline .09017 -.03429 aline .0889 -.03556 aline .0889 -.33782 aline .09017 -.33909 aline .2413 -.33909 aline .24257 -.33782 aline .24257 -.03556 aline .2413 -.03429 aline .24003 -.03048 aline .23876 -.02794 aline .23368 -.02286 aline .2286 -.02032 aline .22479 -.01905 aline .21844 -.01778 aline .21717 -.01651 aline .20701 -.01651 aline .20701 -.00254 aline .31115 -.00254 aline .31115 -.01651 aline .30099 -.01651 aline .29972 -.01778 aline .29337 -.01905 aline .28956 -.02032 aline .28448 -.02286 aline .2794 -.02794 aline .27813 -.03048 aline .27686 -.03429 aline .27559 -.03556 aline .27559 -.32004 aline .27686 -.32131 aline .27813 -.32512 aline .2794 -.32766 aline .28448 -.33274 aline .28956 -.33528 aline .29337 -.33655 aline .29972 -.33782 aline .30099 -.33909 aline .31115 -.33909 aline .31115 -.35306 aline .02032 -.35306 aline .02032 -.33909 aline .03048 -.33909 aline .03175 -.33782 aline .0381 -.33655 aline .04191 -.33528 aline .04699 -.33274 aline .05207 -.32766 aline .05334 -.32512 aline .05461 -.32131 aline .05588 -.32004 aline .05588 -.03556 aline .05461 -.03429 aline .05334 -.03048 aline .05207 -.02794 aline .04699 -.02286 aline .04191 -.02032 aline .0381 -.01905 aline .03175 -.01778 aline .03048 -.01651 aline .02032 -.01651 aline .02032 -.00254 aline .12446 -.00254 closepath ! end of curve fill dfont endchar dfont char="a" !-------------- Beginning of new char. dfont wid=1.27778 hei=.100001 dep=1.50001 italic=0 set path ! start of curve newpath ! start of curve amove .14351 -.00254 aline .14351 -.02159 bezier .12785 -.209458E-01 .110341 -.308322E-01 .10922 -.04826 aline .10795 -.04953 aline .10795 -.47244 aline .10922 -.47371 aline .34036 -.47371 aline .34163 -.47244 aline .34163 -.04953 aline .34036 -.04826 bezier .339239 -.308322E-01 .32173 -.209458E-01 .30607 -.02159 aline .30607 -.00254 aline .42926 -.00254 aline .42926 -.02159 bezier .413599 -.209458E-01 .396091 -.308322E-01 .39497 -.04826 aline .3937 -.04953 aline .3937 -.44577 aline .39497 -.44704 bezier .396091 -.464468 .4136 -.474354 .42926 -.47371 aline .42926 -.49276 aline .02032 -.49276 aline .02032 -.47371 bezier .359805E-01 -.474354 .534888E-01 -.464468 .05461 -.44704 aline .05588 -.44577 aline .05588 -.04953 aline .05461 -.04826 bezier .534888E-01 -.308322E-01 .359805E-01 -.209458E-01 .02032 -.02159 aline .02032 -.00254 aline .14351 -.00254 closepath ! end of curve fill dfont endchar dfont char="b" !-------------- Beginning of new char. dfont wid=.555557 hei=.722223 dep=0 italic=0 dfont next_char="c" set path ! start of curve newpath ! start of curve amove .10033 .25781 bezier .132646 .239805 .164463 .221108 .19685 .2032 aline .19431 .19812 aline .19304 .19685 bezier .161168 .208529 .13054 .225321 .09906 .23876 aline .09779 .24003 bezier .675255E-01 .224784 .359422E-01 .211228 .00508 .19685 aline .00254 .19685 aline .00127 .19812 aline -.00127 .2032 bezier .319931E-01 .221489 .644478E-01 .2409 .09779 .25908 closepath ! end of curve fill dfont endchar dfont char="c" !-------------- Beginning of new char. dfont wid=1 hei=.75 dep=0 italic=0 dfont next_char="d" set path ! start of curve newpath ! start of curve amove .17653 .26924 aline .18034 .26797 aline .20701 .25908 aline .20955 .25781 aline .23622 .24892 aline .23876 .24765 aline .26924 .23749 aline .27178 .23622 aline .30226 .22606 aline .3048 .22479 aline .33147 .2159 aline .33401 .21463 aline .34925 .20955 aline .35179 .20828 aline .35179 .20701 aline .35052 .2032 aline .34925 .20066 bezier .291419 .216867 .233424 .232825 .175895 .249873 bezier .118366 .232825 .603711E-01 .216867 .00254 .20066 aline .00127 .2032 aline 0 .20701 aline 0 .20828 aline .00254 .20955 aline .01778 .21463 aline .02032 .2159 aline .04699 .22479 aline .04953 .22606 aline .08001 .23622 aline .08255 .23749 aline .11303 .24765 aline .11557 .24892 aline .14224 .25781 aline .14478 .25908 aline .17145 .26797 aline .17526 .26924 closepath ! end of curve fill dfont endchar dfont char="d" !-------------- Beginning of new char. dfont wid=1.44445 hei=.75 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .25654 .26924 aline .26162 .26797 aline .28194 .26289 aline .28829 .26162 aline .31369 .25527 aline .32004 .254 aline .35052 .24638 aline .35687 .24511 aline .38227 .23876 aline .38862 .23749 aline .41402 .23114 aline .42037 .22987 aline .44577 .22352 aline .45212 .22225 aline .4826 .21463 aline .48895 .21336 aline .50419 .20955 aline .508 .20828 aline .50673 .20193 aline .50546 .20066 aline .50419 .20066 aline .49149 .2032 aline .49022 .20447 aline .48387 .20447 aline .43942 .21336 aline .43815 .21463 aline .4318 .21463 aline .38735 .22352 aline .38608 .22479 aline .37973 .22479 aline .33528 .23368 aline .33401 .23495 aline .32766 .23495 aline .28321 .24384 aline .28194 .24511 aline .27559 .24511 aline .25654 .24892 aline .254 .249767 aline .25146 .24892 aline .23241 .24511 aline .22606 .24511 aline .22479 .24384 aline .18034 .23495 aline .17399 .23495 aline .17272 .23368 aline .12827 .22479 aline .12192 .22479 aline .12065 .22352 aline .0762 .21463 aline .06985 .21463 aline .06858 .21336 aline .02413 .20447 aline .01778 .20447 aline .01651 .2032 aline .00381 .20066 aline .00254 .20066 aline .00127 .20193 aline 0 .20828 aline .00381 .20955 aline .01905 .21336 aline .0254 .21463 aline .05588 .22225 aline .06223 .22352 aline .08763 .22987 aline .09398 .23114 aline .11938 .23749 aline .12573 .23876 aline .15113 .24511 aline .15748 .24638 aline .18796 .254 aline .19431 .25527 aline .21971 .26162 aline .22606 .26289 aline .24638 .26797 aline .25146 .26924 closepath ! end of curve fill dfont endchar dfont char="e" !-------------- Beginning of new char. dfont wid=.555557 hei=.722223 dep=0 italic=0 dfont next_char="f" set path ! start of curve newpath ! start of curve amove .07239 .25146 bezier .981741E-01 .246366 .116939 .221186 .14478 .22606 bezier .160354 .231324 .175654 .239057 .18796 .25019 aline .1905 .25146 aline .19177 .24892 aline .19431 .24638 bezier .172074 .226873 .142284 .202245 .11049 .2159 bezier .913637E-01 .225446 .735719E-01 .24113 .0508 .23749 bezier .035226 .232226 .199264E-01 .224493 .00762 .21336 aline .00508 .21209 aline .00381 .21463 aline .00127 .21717 bezier .181195E-01 .231696 .358379E-01 .246656 .05842 .25146 closepath ! end of curve fill dfont endchar dfont char="f" !-------------- Beginning of new char. dfont wid=1 hei=.75 dep=0 italic=0 dfont next_char="g" set path ! start of curve newpath ! start of curve amove .13081 .26162 aline .13208 .26035 bezier .16428 .259651 .190699 .237019 .22225 .23241 aline .22352 .23114 aline .23495 .23114 aline .23622 .22987 bezier .274574 .229471 .312528 .245416 .34798 .26162 aline .35052 .25654 aline .35052 .25527 bezier .297829 .228146 .234489 .202003 .1778 .23114 bezier .158085 .238712 .137988 .249124 .11684 .24892 aline .11557 .25019 bezier .772164E-01 .250589 .039262 .234645 .00381 .21844 aline .00127 .22352 aline .00127 .22479 bezier .416726E-01 .244947 .085064 .264901 .13081 .26162 closepath ! end of curve fill dfont endchar dfont char="g" !-------------- Beginning of new char. dfont wid=1.44445 hei=.75 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .18923 .26162 aline .1905 .26035 bezier .239727 .259865 .286381 .229367 .33528 .22987 aline .33655 .2286 aline .35814 .2286 aline .35941 .22987 aline .37592 .22987 aline .37719 .23114 aline .38608 .23114 aline .38735 .23241 bezier .425768 .23677 .465802 .249405 .50419 .26162 aline .50546 .26035 aline .50673 .25654 aline .50673 .25527 aline .50419 .254 aline .47371 .24384 bezier .434744 .232319 .394732 .220848 .3556 .21971 aline .35433 .21844 aline .31877 .21844 aline .3175 .21971 bezier .268273 .220195 .221619 .250693 .17272 .25019 aline .17145 .25146 aline .14986 .25146 aline .14859 .25019 aline .13208 .25019 aline .13081 .24892 aline .12192 .24892 aline .12065 .24765 bezier .822316E-01 .24329 .421976E-01 .230655 .00381 .21844 aline .00254 .21971 aline .00127 .22352 aline .00127 .22479 aline .00381 .22606 aline .03429 .23622 bezier .073256 .247741 .113268 .259212 .1524 .26035 aline .15367 .26162 aline .18923 .26162 closepath ! end of curve fill dfont endchar dfont char="h" !-------------- Beginning of new char. dfont wid=.472224 hei=.039999 dep=1.76002 italic=0 dfont next_char=20 set path ! start of curve newpath ! start of curve amove .15875 .01143 aline .15875 -.00508 aline .09779 -.00508 aline .09652 -.00635 aline .09652 -.60071 aline .09779 -.60198 aline .15875 -.60198 aline .15875 -.61849 aline .08001 -.61849 aline .08001 .01143 aline .15875 .01143 closepath ! end of curve fill dfont endchar dfont char="i" !-------------- Beginning of new char. dfont wid=.472224 hei=.039999 dep=1.76002 italic=0 dfont next_char=21 set path ! start of curve newpath ! start of curve amove .08636 .01143 aline .08636 -.61849 aline .00762 -.61849 aline .00762 -.60198 aline .06858 -.60198 aline .06985 -.60071 aline .06985 -.00635 aline .06858 -.00508 aline .00762 -.00508 aline .00762 .01143 aline .08636 .01143 closepath ! end of curve fill dfont endchar dfont char="j" !-------------- Beginning of new char. dfont wid=.527781 hei=.039999 dep=1.76002 italic=0 dfont next_char=22 set path ! start of curve newpath ! start of curve amove .09652 .01143 aline .09652 -.60071 aline .09779 -.60198 aline .1778 -.60198 aline .1778 -.61849 aline .08001 -.61849 aline .08001 .01143 aline .09652 .01143 closepath ! end of curve fill dfont endchar dfont char="k" !-------------- Beginning of new char. dfont wid=.527781 hei=.039999 dep=1.76002 italic=0 dfont next_char=23 set path ! start of curve newpath ! start of curve amove .10541 .01143 aline .10541 -.61849 aline .00762 -.61849 aline .00762 -.60198 aline .08763 -.60198 aline .0889 -.60071 aline .0889 .01143 aline .10541 .01143 closepath ! end of curve fill dfont endchar dfont char="l" !-------------- Beginning of new char. dfont wid=.527781 hei=.039999 dep=1.76002 italic=0 dfont next_char=24 set path ! start of curve newpath ! start of curve amove .1778 .01143 aline .1778 -.00508 aline .09779 -.00508 aline .09652 -.00635 aline .09652 -.61849 aline .08001 -.61849 aline .08001 .01143 aline .1778 .01143 closepath ! end of curve fill dfont endchar dfont char="m" !-------------- Beginning of new char. dfont wid=.527781 hei=.039999 dep=1.76002 italic=0 dfont next_char=25 set path ! start of curve newpath ! start of curve amove .10541 .01143 aline .10541 -.61849 aline .0889 -.61849 aline .0889 -.00635 aline .08763 -.00508 aline .00762 -.00508 aline .00762 .01143 aline .10541 .01143 closepath ! end of curve fill dfont endchar dfont char="n" !-------------- Beginning of new char. dfont wid=.666669 hei=.039999 dep=1.76002 italic=0 dfont next_char=26 set path ! start of curve newpath ! start of curve amove .1905 .01143 aline .19177 .01016 aline .19177 -.00127 bezier .165642 -.125172E-01 .135868 -.285902E-01 .13081 -.05969 aline .12954 -.06096 aline .12954 -.23114 bezier .123774 -.266767 .926722E-01 -.290934 .06096 -.30353 bezier .926722E-01 -.316126 .123774 -.340293 .12954 -.37592 aline .12954 -.5461 bezier .134678 -.567001 .149377 -.585011 .16891 -.59436 aline .17018 -.59563 aline .1778 -.59944 aline .18161 -.60071 aline .18415 -.60198 aline .18796 -.60325 aline .1905 -.60452 aline .19177 -.60579 aline .19177 -.61722 aline .1905 -.61849 bezier .168902 -.619814 .150239 -.605568 .13335 -.59436 aline .11811 -.57912 aline .11684 -.57658 aline .1143 -.57404 aline .10795 -.56134 aline .10541 -.55372 aline .10414 -.54737 aline .10414 -.37719 aline .10287 -.37592 bezier .986504E-01 -.344613 .718324E-01 -.32257 .04445 -.31115 aline .04191 -.30861 aline .04191 -.29845 bezier .669456E-01 -.285187 .950131E-01 -.267737 .1016 -.23749 aline .10287 -.23114 aline .10414 -.22987 aline .10414 -.05969 bezier .110792 -.225651E-01 .145809 .131119E-03 .17907 .01143 aline .1905 .01143 closepath ! end of curve fill dfont endchar dfont char="o" !-------------- Beginning of new char. dfont wid=.666669 hei=.039999 dep=1.76002 italic=0 dfont next_char=27 set path ! start of curve newpath ! start of curve amove .05461 .01143 bezier .878714E-01 .131294E-03 .122888 -.225652E-01 .12954 -.05969 aline .12954 -.22987 aline .13081 -.23114 bezier .135178 -.263579 .163478 -.285545 .19177 -.29718 aline .19177 -.30988 bezier .163478 -.321515 .135178 -.343481 .13081 -.37592 aline .12954 -.37719 aline .12954 -.54737 bezier .122889 -.584495 .878715E-01 -.607191 .05461 -.61849 aline .04318 -.61849 aline .04191 -.61722 aline .04191 -.60579 bezier .680377E-01 -.594543 .978124E-01 -.57847 .10287 -.54737 aline .10414 -.5461 aline .10414 -.37592 bezier .109906 -.340293 .141008 -.316126 .17272 -.30353 bezier .141008 -.290934 .109906 -.266767 .10414 -.23114 aline .10414 -.06096 bezier .990024E-01 -.400586E-01 .084303 -.220493E-01 .06477 -.0127 aline .0635 -.01143 aline .05588 -.00762 aline .05207 -.00635 aline .04953 -.00508 aline .04572 -.00381 aline .04318 -.00254 aline .04191 -.00127 aline .04191 .01016 aline .04318 .01143 closepath ! end of curve fill dfont endchar dfont char="p" !-------------- Beginning of new char. dfont wid=1 hei=.039999 dep=1.16001 italic=0 dfont next_char="q" set path ! start of curve newpath ! start of curve amove .3556 .0127 aline .35941 .00889 aline .35941 .00254 aline .34544 -.0254 aline .34417 -.02921 aline .3302 -.05715 aline .32893 -.06096 aline .31496 -.0889 aline .31369 -.09271 aline .29972 -.12065 aline .29845 -.12446 aline .28448 -.1524 aline .28321 -.15621 aline .26924 -.18415 aline .26797 -.18796 aline .25527 -.21336 aline .254 -.21717 aline .24003 -.24511 aline .23876 -.24892 aline .22479 -.27686 aline .22352 -.28067 aline .20955 -.30861 aline .20828 -.31242 aline .19431 -.34036 aline .19304 -.34417 aline .17907 -.37211 aline .1778 -.37592 aline .1651 -.40132 aline .16383 -.40513 aline .16002 -.40894 aline .14986 -.40894 bezier .121915 -.347628 .969334E-01 -.283777 .069215 -.222567 bezier .608265E-01 -.227616 .535604E-01 -.234221 .04572 -.24003 aline .04064 -.23495 bezier .566868E-01 -.223629 .716597E-01 -.210817 .08763 -.19939 bezier .113996 -.256525 .137612 -.315419 .16256 -.37338 aline .16383 -.37084 aline .1651 -.36703 aline .17907 -.33909 aline .18034 -.33528 aline .19431 -.30734 aline .19558 -.30353 aline .20955 -.27559 aline .21082 -.27178 aline .22479 -.24384 aline .22606 -.24003 aline .24003 -.21209 aline .2413 -.20828 aline .254 -.18288 aline .25527 -.17907 aline .26924 -.15113 aline .27051 -.14732 aline .28448 -.11938 aline .28575 -.11557 aline .29972 -.08763 aline .30099 -.08382 aline .31496 -.05588 aline .31623 -.05207 aline .3302 -.02413 aline .33147 -.02032 aline .34671 .01016 aline .34798 .01143 aline .35052 .0127 aline .3556 .0127 closepath ! end of curve fill dfont endchar dfont char="q" !-------------- Beginning of new char. dfont wid=1 hei=.039999 dep=1.76002 italic=0 dfont next_char="r" set path ! start of curve newpath ! start of curve amove .3556 .0127 aline .35941 .00889 aline .35941 .00254 bezier .293982 -.203555 .228753 -.409708 .16383 -.61595 aline .16002 -.61976 aline .14986 -.61976 bezier .121484 -.52626 .096597 -.431424 .06858 -.33782 aline .06477 -.34163 aline .0635 -.34417 aline .05715 -.35052 aline .05588 -.35306 aline .04953 -.35941 aline .04826 -.36195 aline .04572 -.36449 aline .04064 -.35941 bezier .569221E-01 -.341653 .071848 -.322918 .08763 -.3048 bezier .114648 -.391001 .136642 -.480269 .16383 -.56642 bezier .224735 -.374226 .284541 -.18159 .34671 .01016 aline .34798 .01143 aline .35052 .0127 aline .3556 .0127 closepath ! end of curve fill dfont endchar dfont char="r" !-------------- Beginning of new char. dfont wid=1 hei=.039999 dep=2.36003 italic=0 dfont next_char="s" set path ! start of curve newpath ! start of curve amove .3556 .0127 aline .35941 .00889 bezier .352726 -.350906E-01 .339191 -.781982E-01 .3302 -.12192 bezier .274517 -.356819 .219399 -.591845 .16383 -.82677 aline .16002 -.83058 aline .14986 -.83058 bezier .121554 -.705291 .960622E-01 -.579005 .06858 -.45339 bezier .06004 -.464683 .536973E-01 -.479214 .04445 -.48895 aline .04064 -.48514 bezier .553777E-01 -.460046 .724324E-01 -.435431 .08763 -.41021 bezier .114632 -.526515 .137099 -.644257 .16383 -.76073 bezier .225199 -.503893 .283901 -.24618 .34671 .01016 aline .34798 .01143 aline .35052 .0127 aline .3556 .0127 closepath ! end of curve fill dfont endchar dfont char="s" !-------------- Beginning of new char. dfont wid=1 hei=.039999 dep=2.96003 italic=0 dfont next_char="t" set path ! start of curve newpath ! start of curve amove .3556 .0127 aline .35941 .00889 aline .35941 .00127 bezier .353676 -.255267E-01 .349466 -.515193E-01 .34417 -.07874 aline .3429 -.08001 aline .3429 -.08636 bezier .337673 -.111071 .333528 -.135049 .32893 -.16002 aline .32766 -.16129 aline .32766 -.16764 bezier .322102 -.194327 .317484 -.22066 .31242 -.24765 aline .31115 -.24892 aline .31115 -.25527 bezier .305923 -.279981 .301778 -.303959 .29718 -.32893 aline .29591 -.3302 aline .29591 -.33655 bezier .290418 -.363363 .285539 -.389587 .28067 -.41656 aline .2794 -.41783 aline .2794 -.42418 bezier .274173 -.448891 .270028 -.472869 .26543 -.49784 aline .26416 -.49911 aline .26416 -.50546 bezier .258456 -.532512 .253868 -.558348 .24892 -.58547 aline .24765 -.58674 aline .24765 -.59309 bezier .241916 -.619887 .237706 -.645879 .23241 -.6731 aline .23114 -.67437 aline .23114 -.68072 bezier .225913 -.705431 .221768 -.729409 .21717 -.75438 aline .2159 -.75565 aline .2159 -.762 bezier .210342 -.788687 .205724 -.81502 .20066 -.84201 aline .19939 -.84328 aline .19939 -.84963 bezier .194163 -.874341 .190018 -.898319 .18542 -.92329 aline .18415 -.92456 aline .18415 -.93091 bezier .178658 -.957723 .173779 -.983947 .16891 -1.01092 aline .16764 -1.01219 aline .16764 -1.01854 aline .16383 -1.03759 aline .16002 -1.0414 aline .14986 -1.0414 aline .14859 -1.03759 aline .14859 -1.03124 aline .14732 -1.02997 aline .14732 -1.02362 aline .14605 -1.02235 bezier .14432 -1.00708 .140902 -.994015 .1397 -.97917 aline .13843 -.9779 aline .13843 -.97155 aline .13716 -.97028 bezier .13543 -.95501 .132012 -.941945 .13081 -.9271 aline .12954 -.92583 aline .12954 -.91948 aline .12827 -.91821 bezier .12654 -.90294 .123122 -.889875 .12192 -.87503 aline .12065 -.87376 aline .12065 -.86741 aline .11938 -.86614 bezier .11765 -.85087 .114232 -.837805 .11303 -.82296 aline .11176 -.82169 bezier .11003 -.80642 .106612 -.793355 .10541 -.77851 aline .10414 -.77724 aline .10414 -.77089 aline .10287 -.76962 bezier .10114 -.75435 .977224E-01 -.741285 .09652 -.72644 aline .09525 -.72517 aline .09525 -.71882 aline .09398 -.71755 bezier .922501E-01 -.70228 .888324E-01 -.689215 .08763 -.67437 aline .08636 -.6731 aline .08636 -.66675 aline .08509 -.66548 bezier .833601E-01 -.65021 .799424E-01 -.637145 .07874 -.6223 aline .07747 -.62103 bezier .757401E-01 -.60576 .723224E-01 -.592695 .07112 -.57785 aline .06985 -.57658 aline .06985 -.57023 aline .06858 -.56896 aline .06477 -.57658 aline .0635 -.57785 aline .04572 -.61341 aline .04445 -.61341 aline .04064 -.6096 aline .04064 -.60833 aline .04699 -.59563 aline .04826 -.59436 aline .08763 -.51562 aline .0889 -.51816 aline .0889 -.52451 aline .09017 -.52578 aline .09017 -.53213 aline .09144 -.5334 aline .09144 -.53975 aline .09271 -.54102 bezier .931916E-01 -.555667 .098769 -.56926 .09906 -.5842 aline .10033 -.58547 aline .10033 -.59182 aline .1016 -.59309 bezier .102082 -.607737 .107659 -.62133 .10795 -.63627 aline .10922 -.63754 bezier .109702 -.652187 .115279 -.66578 .11557 -.68072 aline .11684 -.68199 aline .11684 -.68834 aline .11811 -.68961 bezier .118592 -.704257 .124169 -.71785 .12446 -.73279 aline .12573 -.73406 aline .12573 -.74041 aline .127 -.74168 bezier .127482 -.756327 .133059 -.76992 .13335 -.78486 aline .13462 -.78613 aline .13462 -.79248 aline .13589 -.79375 bezier .136372 -.808397 .141949 -.82199 .14224 -.83693 aline .14351 -.8382 bezier .143992 -.852847 .149569 -.86644 .14986 -.88138 aline .15113 -.88265 aline .15113 -.889 aline .1524 -.89027 bezier .152882 -.904917 .158459 -.91851 .15875 -.93345 aline .16002 -.93472 aline .16002 -.94107 aline .16129 -.94234 aline .16129 -.94869 aline .16256 -.94996 aline .16383 -.95631 aline .1651 -.94996 aline .16637 -.94869 aline .16637 -.94234 bezier .171597 -.917629 .175742 -.893651 .18034 -.86868 aline .18161 -.86741 aline .18161 -.86106 bezier .187168 -.834373 .191786 -.80804 .19685 -.78105 aline .19812 -.77978 aline .19812 -.77343 bezier .203347 -.748719 .207492 -.724741 .21209 -.69977 aline .21336 -.6985 aline .21336 -.69215 bezier .218852 -.665337 .223731 -.639113 .2286 -.61214 aline .22987 -.61087 aline .22987 -.60452 bezier .235097 -.579809 .239242 -.555831 .24384 -.53086 aline .24511 -.52959 aline .24511 -.52324 bezier .250814 -.496188 .255402 -.470352 .26035 -.44323 aline .26162 -.44196 aline .26162 -.43561 bezier .267354 -.408813 .271564 -.382821 .27686 -.3556 aline .27813 -.35433 aline .27813 -.34798 bezier .283357 -.323269 .287502 -.299291 .2921 -.27432 aline .29337 -.27305 aline .29337 -.2667 bezier .298928 -.240013 .303546 -.21368 .30861 -.18669 aline .30988 -.18542 aline .30988 -.17907 bezier .315107 -.154359 .319252 -.130381 .32385 -.10541 aline .32512 -.10414 aline .32512 -.09779 bezier .330612 -.709775E-01 .335491 -.447527E-01 .34036 -.01778 aline .34163 -.01651 aline .34163 -.01016 aline .34417 .00254 aline .34544 .00762 aline .34671 .01016 aline .34798 .01143 aline .35052 .0127 aline .3556 .0127 closepath ! end of curve fill dfont endchar dfont char="t" !-------------- Beginning of new char. dfont wid=1.05556 hei=0 dep=1.80002 italic=0 dfont ext_top="v" ext_mid=0 ext_bot="t" ext_rep="u" set path ! start of curve newpath ! start of curve amove .25654 .00508 aline .26035 .00127 aline .26035 -.62865 aline .25654 -.63246 aline .25273 -.63373 aline .24638 -.63373 aline .24511 -.63119 aline .22225 -.56261 aline .22098 -.55753 aline .19939 -.49276 aline .19812 -.48768 aline .17526 -.4191 aline .17399 -.41402 aline .1524 -.34925 aline .15113 -.34417 aline .12827 -.27559 aline .127 -.27051 aline .10414 -.20193 aline .10287 -.19685 aline .08128 -.13208 aline .08001 -.127 aline .07366 -.10795 aline .04572 -.16383 aline .04445 -.16383 aline .04064 -.16002 aline .04064 -.15875 aline .05334 -.13335 aline .05461 -.13208 aline .08763 -.06604 aline .0889 -.06731 aline .10922 -.12827 aline .11049 -.13335 aline .13208 -.19812 aline .13335 -.2032 aline .15621 -.27178 aline .15748 -.27686 aline .18034 -.34544 aline .18161 -.35052 aline .2032 -.41529 aline .20447 -.42037 aline .22733 -.48895 aline .2286 -.49403 aline .24511 -.54356 aline .24638 -.54229 aline .24638 .00127 aline .25019 .00508 aline .25654 .00508 closepath ! end of curve fill dfont endchar dfont char="u" !-------------- Beginning of new char. dfont wid=1.05556 hei=0 dep=.600006 italic=0 set path ! start of curve newpath ! start of curve amove .25654 .00508 aline .26035 .00127 aline .26035 -.2159 aline .25654 -.21971 aline .25019 -.21971 aline .24638 -.2159 aline .24638 .00127 aline .25019 .00508 aline .25654 .00508 closepath ! end of curve fill dfont endchar dfont char="v" !-------------- Beginning of new char. dfont wid=1.05556 hei=.039999 dep=.560007 italic=0 set path ! start of curve newpath ! start of curve amove .37465 .0127 aline .37846 .00889 aline .37846 .00254 aline .37465 -.00127 aline .26162 -.00127 aline .26035 -.00254 aline .26035 -.20193 aline .25654 -.20574 aline .25019 -.20574 aline .24638 -.20193 aline .24638 .00762 aline .24765 .01016 aline .24892 .01143 aline .25146 .0127 aline .37465 .0127 closepath ! end of curve fill dfont endchar dfont char="w" !-------------- Beginning of new char. dfont wid=.777781 hei=0 dep=.600006 italic=0 dfont ext_top="~" ext_mid=0 ext_bot=127 ext_rep="w" set path ! start of curve newpath ! start of curve amove .10541 -.00127 aline .10541 -.21336 aline .09017 -.21336 aline .09017 -.00127 aline .10541 -.00127 closepath ! end of curve ! start of curve amove .18288 -.00127 aline .18288 -.21336 aline .16764 -.21336 aline .16764 -.00127 aline .18288 -.00127 closepath ! end of curve fill dfont endchar dfont char="x" !-------------- Beginning of new char. dfont wid=.666669 hei=0 dep=.600006 italic=0 dfont ext_top="x" ext_mid=0 ext_bot=0 ext_rep="?" set path ! start of curve newpath ! start of curve amove .11811 -.00508 bezier .135818 -.331878E-01 .162984 -.545625E-01 .19431 -.06604 aline .19431 -.07874 bezier .167998 -.701929E-01 .144587 -.545091E-01 .12573 -.03429 aline .12446 -.03556 aline .12446 -.21209 aline .10922 -.21209 aline .10922 -.03556 aline .10795 -.03429 bezier .890933E-01 -.545091E-01 .656818E-01 -.701929E-01 .03937 -.07874 aline .03937 -.06604 bezier .714599E-01 -.541661E-01 .996334E-01 -.320883E-01 .11684 -.00254 aline .11811 -.00508 closepath ! end of curve fill dfont endchar dfont char="y" !-------------- Beginning of new char. dfont wid=.666669 hei=0 dep=.600006 italic=0 dfont ext_top=0 ext_mid=0 ext_bot="y" ext_rep="?" set path ! start of curve newpath ! start of curve amove .12446 -.00254 aline .12446 -.17907 aline .12573 -.18034 bezier .144587 -.160121 .167998 -.144437 .19431 -.13589 aline .19431 -.14859 bezier .16222 -.160464 .134047 -.182542 .11684 -.21209 bezier .996335E-01 -.182542 .714599E-01 -.160464 .03937 -.14859 aline .03937 -.13589 bezier .656818E-01 -.144437 .890933E-01 -.160121 .10795 -.18034 aline .10922 -.17907 aline .10922 -.00254 aline .12446 -.00254 closepath ! end of curve fill dfont endchar dfont char="z" !-------------- Beginning of new char. dfont wid=.450005 hei=.119998 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .16129 .04064 aline .16256 .0381 aline .16256 .00127 aline .16129 -.00127 bezier .126233 -.938642E-03 .920463E-01 -.866703E-02 .05969 -.0254 bezier .382511E-01 -.374545E-01 .203628E-01 -.552295E-01 .00762 -.0762 aline -.00635 -.0762 aline -.00762 -.07493 aline -.00762 -.06096 bezier .220424E-01 -.626363E-02 .802905E-01 .366667E-01 .14351 .03937 aline .14478 .04064 closepath ! end of curve fill dfont endchar dfont char="{" !-------------- Beginning of new char. dfont wid=.450005 hei=.119998 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .01524 .04064 aline .01651 .03937 bezier .797295E-01 .366667E-01 .137978 -.626374E-02 .16764 -.06096 aline .16764 -.07493 aline .16637 -.0762 aline .1524 -.0762 bezier .130448 -.382398E-01 .899792E-01 -.145135E-01 .04699 -.00635 aline .04572 -.00508 aline .03937 -.00508 aline .0381 -.00381 aline .03048 -.00381 aline .02921 -.00254 aline .01778 -.00254 aline .01651 -.00127 aline -.00127 -.00127 aline -.00254 .00127 aline -.00254 .0381 aline -.00127 .04064 aline .01524 .04064 closepath ! end of curve fill dfont endchar dfont char="|" !-------------- Beginning of new char. dfont wid=.450005 hei=.119998 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .00762 .11557 bezier .295721E-01 .776098E-01 .700408E-01 .538836E-01 .11303 .04572 aline .1143 .04445 aline .12065 .04445 aline .12192 .04318 aline .12954 .04318 aline .13081 .04191 aline .14224 .04191 aline .14351 .04064 aline .16129 .04064 aline .16256 .0381 aline .16256 .00127 aline .16129 -.00127 bezier .923623E-01 -.369561E-02 .245748E-01 .396255E-01 -.00762 .10033 aline -.00762 .1143 aline -.00635 .11557 aline .00762 .11557 closepath ! end of curve fill dfont endchar dfont char="}" !-------------- Beginning of new char. dfont wid=.450005 hei=.119998 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .16637 .11557 aline .16764 .1143 aline .16764 .10033 bezier .137978 .456337E-01 .797295E-01 .270328E-02 .01651 0 aline .01524 -.00127 aline -.00127 -.00127 aline -.00254 .00127 aline -.00254 .0381 aline -.00127 .04064 bezier .337872E-01 .403086E-01 .679737E-01 .048037 .10033 .06477 bezier .121769 .768245E-01 .139657 .945995E-01 .1524 .11557 aline .16637 .11557 closepath ! end of curve fill dfont endchar dfont char="~" !-------------- Beginning of new char. dfont wid=.777781 hei=0 dep=.600006 italic=0 dfont ext_top="~" ext_mid=0 ext_bot=0 ext_rep="w" set path ! start of curve newpath ! start of curve amove .13716 -.00381 bezier .160073 -.526748E-01 .201859 -.916838E-01 .25273 -.11049 aline .25273 -.12573 bezier .227426 -.117899 .20458 -.102579 .18415 -.08636 aline .18288 -.08763 aline .18288 -.21209 aline .16764 -.21209 aline .16764 -.07112 bezier .155878 -.595761E-01 .146176 -.461581E-01 .136525 -.333375E-01 bezier .126874 -.461581E-01 .117172 -.595761E-01 .10541 -.07112 aline .10541 -.21209 aline .09017 -.21209 aline .09017 -.08763 aline .0889 -.08636 bezier .684697E-01 -.102579 .456245E-01 -.117899 .02032 -.12573 aline .02032 -.11049 bezier .711908E-01 -.916837E-01 .112977 -.526748E-01 .13589 -.00381 closepath ! end of curve fill dfont endchar dfont char=127 !-------------- Beginning of new char. dfont wid=.777781 hei=0 dep=.600006 italic=0 dfont ext_top=0 ext_mid=0 ext_bot=127 ext_rep="w" set path ! start of curve newpath ! start of curve amove .10541 -.00254 aline .10541 -.14351 bezier .117172 -.155054 .126875 -.168471 .136525 -.181293 bezier .146175 -.168471 .155878 -.155054 .16764 -.14351 aline .16764 -.00254 aline .18288 -.00254 aline .18288 -.127 aline .18415 -.12827 bezier .204679 -.112188 .227366 -.966484E-01 .25273 -.0889 aline .25273 -.10414 bezier .201859 -.122946 .160073 -.161955 .13716 -.21082 aline .13589 -.21082 bezier .112977 -.161955 .711908E-01 -.122946 .02032 -.10414 aline .02032 -.0889 bezier .045684 -.966484E-01 .683712E-01 -.112188 .0889 -.12827 aline .09017 -.127 aline .09017 -.00254 aline .10541 -.00254 closepath ! end of curve fill dfont endchar gle-graphics-4.2.4c/src/fonts/plcg.gle0000664000000000000000000007531311676336540016313 0ustar rootrootdfont design= 1428 dfont char=33 amove 307 1000 aline 230 923 aline 307 384 aline 384 923 aline 307 1000 amove 307 923 aline 307 692 amove 307 153 aline 230 76 aline 307 0 aline 384 76 aline 307 153 stroke dfont endchar dfont char=34 amove 230 615 aline 230 1000 amove 307 1000 aline 230 615 amove 692 615 aline 692 1000 amove 769 1000 aline 692 615 stroke dfont endchar dfont char=35 amove 230 0 aline 999 0 amove 615 0 aline 615 846 amove 230 461 aline 999 461 stroke dfont endchar dfont char=36 amove 153 692 aline 615 1000 amove 384 1076 aline 384 615 amove 615 692 aline 153 1000 stroke dfont endchar dfont char=37 amove 142 0 aline 1000 1000 aline 904 952 aline 761 904 aline 619 904 aline 476 952 aline 380 1000 aline 285 1000 aline 190 952 aline 142 857 aline 142 761 aline 238 666 aline 333 666 aline 428 714 aline 476 809 aline 476 904 aline 380 1000 amove 809 333 aline 714 285 aline 666 190 aline 666 95 aline 761 0 aline 857 0 aline 952 47 aline 1000 142 aline 1000 238 aline 904 333 aline 809 333 stroke dfont endchar dfont char=38 amove 230 461 aline 999 461 amove 999 846 aline 230 846 amove 615 846 aline 615 -1 stroke dfont endchar dfont char=39 amove 230 615 aline 230 1000 amove 307 1000 aline 230 615 stroke dfont endchar dfont char=40 amove 461 -154 aline 384 0 aline 307 307 aline 307 615 aline 384 923 aline 461 1076 amove 615 1230 aline 461 1076 aline 307 846 aline 230 615 aline 230 307 aline 307 76 aline 461 -154 aline 615 -308 stroke dfont endchar dfont char=41 amove 153 -308 aline 307 -154 aline 461 76 aline 538 307 aline 538 615 aline 461 846 aline 307 1076 aline 153 1230 amove 307 1076 aline 384 923 aline 461 615 aline 461 307 aline 384 0 aline 307 -154 stroke dfont endchar dfont char=42 amove 230 -308 aline 538 461 aline 230 1230 stroke dfont endchar dfont char=43 amove 384 -77 aline 461 230 amove 384 76 aline 461 -231 amove 538 -308 aline 461 -231 aline 384 -77 aline 384 76 aline 461 230 aline 461 307 aline 307 461 aline 461 615 aline 461 692 aline 384 846 aline 384 999 aline 461 1153 aline 538 1230 amove 461 1153 aline 384 846 amove 384 999 aline 461 692 stroke dfont endchar dfont char=44 amove 230 -231 aline 384 -77 aline 384 76 aline 307 153 aline 230 76 aline 307 -1 aline 384 76 stroke dfont endchar dfont char=45 amove 153 -308 aline 538 -308 aline 538 1230 aline 153 1230 amove 461 1230 aline 461 -308 stroke dfont endchar dfont char=46 amove 307 153 aline 230 76 aline 307 -1 aline 384 76 aline 307 153 stroke dfont endchar dfont char=47 amove 153 -308 aline 1000 1230 stroke dfont endchar dfont char=48 amove 384 0 aline 307 76 aline 230 307 aline 230 692 aline 307 923 aline 384 1000 aline 615 1000 aline 769 923 aline 846 692 aline 846 307 aline 769 76 aline 615 0 aline 384 0 aline 230 76 aline 153 307 aline 153 692 aline 230 923 aline 384 1000 amove 615 1000 aline 692 923 aline 769 692 aline 769 307 aline 692 76 aline 615 0 stroke dfont endchar dfont char=49 amove 230 0 aline 769 0 amove 538 0 aline 538 1000 aline 307 769 amove 461 923 aline 461 0 stroke dfont endchar dfont char=50 amove 153 0 aline 153 230 aline 230 384 aline 384 461 aline 615 538 aline 769 615 aline 846 769 aline 769 923 aline 615 1000 aline 384 1000 aline 230 923 aline 153 846 aline 153 769 aline 230 769 aline 230 846 amove 615 1000 aline 692 923 aline 769 769 aline 692 615 aline 615 538 amove 846 230 aline 846 153 aline 769 0 aline 538 0 aline 307 153 amove 153 76 aline 230 153 aline 307 153 aline 538 76 aline 769 76 aline 846 153 stroke dfont endchar dfont char=51 amove 230 153 aline 230 230 aline 153 230 aline 153 153 aline 230 76 aline 384 -1 aline 615 -1 aline 769 76 aline 846 230 aline 846 307 aline 769 461 aline 615 538 aline 461 538 amove 615 538 aline 769 615 aline 846 769 aline 769 923 aline 615 1000 aline 384 1000 aline 230 923 aline 153 846 aline 153 769 aline 230 769 aline 230 846 amove 615 1000 aline 692 923 aline 769 769 aline 692 615 aline 615 538 aline 692 461 aline 769 307 aline 769 230 aline 692 76 aline 615 0 stroke dfont endchar dfont char=52 amove 384 0 aline 769 0 amove 615 0 aline 615 1000 aline 76 307 aline 923 307 amove 538 0 aline 538 846 stroke dfont endchar dfont char=53 amove 230 153 aline 230 230 aline 153 230 aline 153 153 aline 230 76 aline 384 -1 aline 615 -1 aline 769 76 aline 846 230 aline 846 461 aline 769 615 aline 615 692 aline 384 692 aline 230 615 aline 153 538 aline 230 1000 aline 769 1000 aline 538 923 aline 230 923 amove 615 692 aline 692 615 aline 769 461 aline 769 230 aline 692 76 aline 615 0 stroke dfont endchar dfont char=54 amove 384 0 aline 307 76 aline 230 230 aline 230 615 aline 307 846 aline 461 1000 amove 769 846 aline 769 769 aline 846 769 aline 846 846 aline 769 923 aline 615 1000 aline 461 1000 aline 307 923 aline 230 846 aline 153 615 aline 153 230 aline 230 76 aline 384 0 aline 615 0 aline 769 76 aline 846 230 aline 846 384 aline 769 538 aline 615 615 aline 384 615 aline 153 461 amove 615 615 aline 692 538 aline 769 384 aline 769 230 aline 692 76 aline 615 0 stroke dfont endchar dfont char=55 amove 307 0 aline 461 307 aline 769 846 aline 692 846 aline 461 923 aline 307 923 aline 153 846 aline 307 999 aline 461 999 aline 692 846 amove 846 1000 aline 615 538 aline 384 0 amove 153 692 aline 153 1000 stroke dfont endchar dfont char=56 amove 384 0 aline 307 76 aline 230 230 aline 230 307 aline 307 461 aline 384 538 aline 307 615 aline 230 769 aline 307 923 aline 384 1000 aline 615 1000 aline 769 923 aline 846 769 aline 769 615 aline 615 538 aline 384 538 aline 230 615 aline 153 769 aline 230 923 aline 384 1000 amove 615 1000 aline 692 923 aline 769 769 aline 692 615 aline 615 538 aline 769 461 aline 846 307 aline 846 230 aline 769 76 aline 615 0 aline 384 0 aline 230 76 aline 153 230 aline 153 307 aline 230 461 aline 384 538 amove 615 538 aline 692 461 aline 769 307 aline 769 230 aline 692 76 aline 615 0 stroke dfont endchar dfont char=57 amove 230 153 aline 230 230 aline 153 230 aline 153 153 aline 230 76 aline 384 -1 aline 538 -1 aline 692 76 aline 769 153 aline 846 384 aline 846 769 aline 769 923 aline 615 1000 aline 384 1000 aline 230 923 aline 153 769 aline 153 615 aline 230 461 aline 384 384 aline 615 384 aline 846 538 amove 384 384 aline 307 461 aline 230 615 aline 230 769 aline 307 923 aline 384 1000 amove 615 1000 aline 692 923 aline 769 769 aline 769 384 aline 692 153 aline 538 0 stroke dfont endchar dfont char=58 amove 307 692 aline 230 615 aline 307 538 aline 384 615 aline 307 692 amove 307 153 aline 230 76 aline 307 0 aline 384 76 aline 307 153 stroke dfont endchar dfont char=59 amove 230 -231 aline 384 -77 aline 384 76 aline 307 153 aline 230 76 aline 307 -1 aline 384 76 amove 307 692 aline 230 615 aline 307 538 aline 384 615 aline 307 692 stroke dfont endchar dfont char=60 amove 952 857 aline 190 428 aline 952 0 stroke dfont endchar dfont char=61 amove 307 -308 aline 384 -231 aline 461 -77 aline 461 76 aline 384 230 aline 384 307 aline 538 461 aline 384 615 aline 384 692 aline 461 846 aline 461 999 aline 384 1153 aline 307 1230 amove 384 1153 aline 461 846 amove 461 1000 aline 384 692 amove 384 230 aline 461 -77 amove 461 76 aline 384 -231 stroke dfont endchar dfont char=62 amove 190 0 aline 952 428 aline 190 857 stroke dfont endchar dfont char=63 amove 461 76 aline 461 -1 aline 538 -1 aline 538 76 aline 461 76 amove 538 307 aline 461 307 aline 461 384 aline 538 461 aline 769 538 aline 846 692 aline 846 769 aline 769 923 aline 615 1000 aline 384 1000 aline 230 923 aline 153 769 aline 153 692 aline 230 692 aline 230 769 aline 153 769 amove 538 461 aline 692 538 aline 769 615 aline 769 846 aline 615 1000 stroke dfont endchar dfont char=64 amove 523 238 aline 476 285 aline 428 380 aline 428 523 aline 476 666 aline 571 761 amove 857 761 aline 809 380 aline 809 285 aline 904 238 aline 999 238 aline 1095 333 aline 1142 476 aline 1142 571 aline 1095 714 aline 1047 809 aline 952 904 aline 857 952 aline 714 1000 aline 571 1000 aline 428 952 aline 333 904 aline 238 809 aline 190 714 aline 142 571 aline 142 428 aline 190 285 aline 238 190 aline 333 95 aline 428 47 aline 571 0 aline 714 0 aline 857 47 aline 952 95 aline 1000 142 amove 904 238 aline 857 285 aline 857 380 aline 904 761 amove 857 619 aline 809 714 aline 714 761 aline 571 761 aline 476 714 aline 428 666 aline 380 523 aline 380 380 aline 428 285 aline 523 238 aline 666 238 aline 761 285 aline 809 380 stroke dfont endchar dfont char=65 amove 0 0 aline 384 0 amove 153 0 aline 538 1000 aline 923 0 amove 846 0 aline 538 769 amove 692 307 aline 307 307 amove 692 0 aline 1076 0 stroke dfont endchar dfont char=66 amove 153 0 aline 692 0 aline 923 76 aline 1000 230 aline 1000 307 aline 923 461 aline 692 538 aline 384 538 amove 692 538 aline 923 615 aline 1000 769 aline 923 923 aline 692 1000 aline 153 1000 amove 307 1000 aline 307 0 amove 384 0 aline 384 1000 amove 692 1000 aline 846 923 aline 923 769 aline 846 615 aline 692 538 aline 846 461 aline 923 307 aline 923 230 aline 846 76 aline 692 0 stroke dfont endchar dfont char=67 amove 153 0 aline 538 0 amove 384 0 aline 384 1000 amove 307 1000 aline 307 0 amove 153 1000 aline 923 1000 aline 923 692 aline 846 1000 stroke dfont endchar dfont char=68 amove 76 0 aline 538 1000 aline 1000 0 aline 76 0 amove 153 76 aline 846 76 amove 923 0 aline 538 846 stroke dfont endchar dfont char=69 amove 153 0 aline 923 0 aline 923 307 aline 846 0 amove 692 384 aline 692 692 amove 692 538 aline 384 538 amove 384 1000 aline 384 0 amove 307 0 aline 307 1000 amove 153 1000 aline 923 1000 aline 923 692 aline 846 1000 stroke dfont endchar dfont char=70 amove 153 0 aline 769 1000 amove 846 1000 aline 230 0 amove 153 0 aline 846 0 aline 846 307 aline 769 0 amove 846 1000 aline 153 1000 aline 153 692 aline 230 1000 stroke dfont endchar dfont char=71 amove 153 0 aline 538 0 amove 384 0 aline 384 1000 amove 307 1000 aline 307 0 amove 769 0 aline 1153 0 amove 1000 0 aline 1000 1000 amove 923 1000 aline 923 0 amove 923 538 aline 384 538 amove 538 1000 aline 153 1000 amove 769 1000 aline 1153 1000 stroke dfont endchar dfont char=72 amove 461 0 aline 307 153 aline 230 384 aline 230 615 aline 307 846 aline 461 1000 aline 692 1000 aline 846 923 aline 923 846 aline 1000 615 aline 1000 384 aline 923 153 aline 846 76 aline 692 -1 aline 461 -1 aline 307 76 aline 230 153 aline 153 384 aline 153 615 aline 230 846 aline 307 923 aline 461 1000 amove 692 1000 aline 846 846 aline 923 615 aline 923 384 aline 846 153 aline 692 0 amove 692 307 aline 692 692 amove 692 538 aline 461 538 amove 461 461 aline 692 461 amove 461 307 aline 461 692 stroke dfont endchar dfont char=73 amove 153 0 aline 538 0 amove 384 0 aline 384 1000 amove 307 1000 aline 307 0 amove 153 1000 aline 538 1000 stroke dfont endchar dfont char=74 amove 153 0 aline 538 0 amove 384 0 aline 384 1000 amove 307 1000 aline 307 0 amove 384 384 aline 1000 1000 amove 1153 1000 aline 769 1000 amove 538 1000 aline 153 1000 amove 538 538 aline 923 0 amove 1000 0 aline 615 538 amove 769 0 aline 1153 0 stroke dfont endchar dfont char=75 amove 0 0 aline 384 0 amove 153 0 aline 538 1000 aline 923 0 amove 846 0 aline 538 769 amove 692 0 aline 1076 0 stroke dfont endchar dfont char=76 amove 153 0 aline 461 0 amove 307 0 aline 307 1000 amove 384 1000 aline 692 230 amove 692 0 aline 384 769 amove 384 1000 aline 153 1000 amove 1076 1000 aline 692 0 amove 923 0 aline 1307 0 amove 1153 0 aline 1153 1000 amove 1076 1000 aline 1076 0 amove 1076 1000 aline 1307 1000 stroke dfont endchar dfont char=77 amove 153 0 aline 461 0 amove 307 0 aline 307 1000 amove 384 1000 aline 923 153 amove 923 -1 aline 384 846 amove 384 1000 aline 153 1000 amove 769 1000 aline 1076 1000 amove 923 1000 aline 923 0 stroke dfont endchar dfont char=78 amove 153 -77 aline 230 153 amove 230 76 aline 1000 76 amove 1000 0 aline 230 0 amove 384 384 aline 461 615 amove 461 538 aline 769 538 amove 769 461 aline 461 461 amove 769 384 aline 846 615 amove 1000 846 aline 1076 1076 amove 1000 1000 aline 230 1000 amove 230 1076 aline 153 846 amove 230 923 aline 1000 923 amove 1076 153 aline 1000 -77 stroke dfont endchar dfont char=79 amove 461 0 aline 307 153 aline 230 384 aline 230 615 aline 307 846 aline 461 1000 aline 692 1000 aline 846 923 aline 923 846 aline 1000 615 aline 1000 384 aline 923 153 aline 846 76 aline 692 -1 aline 461 -1 aline 307 76 aline 230 153 aline 153 384 aline 153 615 aline 230 846 aline 307 923 aline 461 1000 amove 692 1000 aline 846 846 aline 923 615 aline 923 384 aline 846 153 aline 692 0 stroke dfont endchar dfont char=80 amove 153 0 aline 538 0 amove 384 0 aline 384 1000 amove 307 1000 aline 307 0 amove 769 0 aline 1153 0 amove 1000 0 aline 1000 1000 amove 923 1000 aline 923 0 amove 1153 1000 aline 153 1000 stroke dfont endchar dfont char=81 amove 153 0 aline 538 0 amove 384 0 aline 384 1000 amove 307 1000 aline 307 0 amove 384 461 aline 692 461 aline 923 538 aline 1000 692 aline 1000 769 aline 923 923 aline 692 1000 aline 153 1000 amove 692 1000 aline 846 923 aline 923 769 aline 923 692 aline 846 538 aline 692 461 stroke dfont endchar dfont char=82 amove 153 0 aline 615 538 aline 230 1000 amove 153 1000 aline 538 538 amove 846 1000 aline 1000 692 aline 923 1000 aline 153 1000 amove 230 76 aline 923 76 amove 846 -1 aline 1000 307 aline 923 -1 aline 153 -1 stroke dfont endchar dfont char=83 amove 384 0 aline 769 0 amove 615 0 aline 615 1000 amove 538 1000 aline 538 0 amove 230 1000 aline 153 692 aline 153 1000 aline 999 1000 aline 999 692 aline 923 1000 stroke dfont endchar dfont char=84 amove 384 0 aline 769 0 amove 615 0 aline 615 692 aline 692 923 aline 769 1000 aline 846 1000 aline 923 923 aline 1000 692 aline 923 846 aline 846 923 aline 769 923 aline 692 846 aline 615 692 amove 538 692 aline 461 846 aline 384 923 aline 307 923 aline 230 846 aline 153 692 aline 230 923 aline 307 1000 aline 384 1000 aline 461 923 aline 538 692 aline 538 0 stroke dfont endchar dfont char=85 amove 384 0 aline 769 0 amove 615 0 aline 615 1000 amove 538 1000 aline 538 0 amove 461 230 aline 307 307 aline 230 461 aline 230 538 aline 307 692 aline 461 769 aline 692 769 aline 923 692 aline 1000 538 aline 1000 461 aline 923 307 aline 692 230 aline 461 230 aline 230 307 aline 153 461 aline 153 538 aline 230 692 aline 461 769 amove 692 769 aline 846 692 aline 923 538 aline 923 461 aline 846 307 aline 692 230 amove 769 1000 aline 384 1000 stroke dfont endchar dfont char=86 amove 76 0 aline 461 0 amove 230 0 aline 923 1000 amove 1076 1000 aline 692 1000 amove 461 1000 aline 76 1000 amove 230 1000 aline 846 0 amove 923 0 aline 307 1000 amove 692 0 aline 1076 0 stroke dfont endchar dfont char=87 amove 461 0 aline 846 0 amove 692 0 aline 692 1000 amove 615 1000 aline 615 0 amove 538 230 aline 384 384 aline 307 692 aline 230 692 aline 153 615 amove 230 692 aline 307 461 aline 384 307 aline 538 230 aline 769 230 aline 923 307 aline 1000 461 aline 1076 692 amove 1153 615 aline 1076 692 aline 1000 692 aline 923 384 aline 769 230 amove 846 1000 aline 461 1000 stroke dfont endchar dfont char=88 amove 153 153 aline 230 -1 aline 461 -1 aline 153 461 aline 153 692 aline 230 846 aline 307 923 aline 461 1000 aline 692 1000 aline 846 923 aline 923 846 aline 1000 692 aline 1000 461 aline 692 0 aline 923 0 aline 1000 153 amove 923 76 aline 769 76 amove 846 230 aline 923 461 aline 923 692 aline 846 846 aline 692 1000 amove 461 1000 aline 307 846 aline 230 692 aline 230 461 aline 307 230 amove 230 76 aline 384 76 stroke dfont endchar dfont char=89 amove 0 0 aline 692 1000 aline 769 0 amove 692 0 aline 615 846 amove 692 307 aline 230 307 amove 230 0 aline -154 0 amove 538 0 aline 923 0 stroke dfont endchar dfont char=90 amove 0 0 aline 538 0 aline 769 76 aline 846 230 aline 846 384 aline 769 461 aline 615 538 aline 384 538 amove 615 538 aline 769 384 aline 769 230 aline 692 76 aline 538 0 amove 230 0 aline 538 1000 amove 461 1000 aline 153 0 amove 692 538 aline 923 615 aline 1000 769 aline 1000 923 aline 846 1000 aline 307 1000 amove 846 1000 aline 923 923 aline 923 769 aline 846 615 aline 692 538 stroke dfont endchar dfont char=91 amove 190 -334 aline 190 1190 aline 523 1190 amove 238 1190 aline 238 -334 amove 190 -334 aline 523 -334 stroke dfont endchar stroke dfont endchar dfont char=93 amove 142 -334 aline 476 -334 aline 476 1190 aline 142 1190 amove 428 1190 aline 428 -334 stroke dfont endchar stroke dfont endchar stroke dfont endchar dfont char=96 amove 238 904 aline 285 952 aline 238 1000 aline 190 952 aline 190 857 aline 238 761 aline 285 714 stroke dfont endchar dfont char=97 amove 384 0 aline 307 76 aline 230 230 aline 230 384 aline 307 538 aline 461 692 aline 307 615 aline 230 538 aline 153 384 aline 153 230 aline 230 76 aline 384 0 aline 461 0 aline 615 76 aline 769 230 aline 923 461 aline 1000 692 amove 615 692 aline 692 615 aline 846 76 aline 999 0 aline 1076 0 amove 1000 0 aline 923 76 aline 769 615 aline 615 692 aline 461 692 stroke dfont endchar dfont char=98 amove 0 -308 aline 153 230 aline 307 692 aline 384 846 aline 538 1000 aline 692 1000 aline 846 923 aline 846 769 aline 769 615 aline 538 538 aline 692 615 aline 769 769 aline 769 923 aline 692 1000 amove 461 923 aline 384 769 aline 230 307 aline 76 -308 amove 538 0 aline 692 153 aline 692 307 aline 615 461 aline 538 538 aline 692 461 aline 769 307 aline 769 153 aline 692 76 aline 538 0 aline 461 0 aline 307 76 aline 230 307 stroke dfont endchar dfont char=99 amove 76 538 aline 230 692 aline 384 692 aline 538 615 aline 615 384 aline 615 0 aline 538 -308 amove 461 -308 aline 615 0 aline 846 461 aline 923 692 amove 615 384 aline 538 538 aline 384 615 aline 230 615 aline 76 538 stroke dfont endchar dfont char=100 amove 384 0 aline 230 153 aline 230 384 aline 307 538 aline 461 692 amove 615 692 aline 769 538 aline 769 307 aline 692 153 aline 538 0 amove 615 692 aline 461 692 aline 307 615 aline 230 538 aline 153 384 aline 153 230 aline 230 76 aline 384 0 aline 538 0 aline 692 76 aline 769 153 aline 846 307 aline 846 461 aline 769 615 aline 538 769 aline 461 923 aline 461 1000 aline 538 1076 aline 692 1076 aline 769 1000 aline 846 846 aline 692 1000 aline 538 1000 aline 461 923 stroke dfont endchar dfont char=101 amove 307 0 aline 230 76 aline 230 230 aline 307 307 aline 461 384 aline 307 461 aline 230 538 aline 230 615 aline 384 692 aline 615 692 aline 769 615 amove 461 384 aline 307 538 aline 307 615 aline 384 692 amove 461 384 aline 230 307 aline 153 230 aline 153 76 aline 307 0 aline 538 0 aline 692 76 stroke dfont endchar dfont char=102 amove 230 -231 aline 307 -308 aline 461 -308 aline 538 -231 aline 538 -77 aline 461 -1 aline 307 76 aline 230 153 aline 153 307 aline 153 461 aline 230 615 aline 307 692 aline 538 769 aline 769 846 aline 769 769 aline 538 769 aline 384 846 aline 384 923 aline 461 1000 amove 538 769 aline 384 692 aline 307 615 aline 230 461 aline 230 307 aline 307 153 aline 461 0 stroke dfont endchar dfont char=103 amove 230 0 aline 384 538 aline 384 615 aline 307 692 amove 461 538 aline 538 615 aline 692 692 aline 846 692 aline 999 615 aline 999 461 aline 769 -308 amove 692 -308 aline 923 461 aline 923 615 aline 846 692 amove 76 461 aline 153 615 aline 230 692 aline 384 692 aline 461 615 aline 461 538 aline 307 0 stroke dfont endchar dfont char=104 amove 76 384 aline 153 538 aline 230 615 aline 384 615 aline 461 538 aline 461 153 aline 538 -1 amove 615 -1 aline 769 153 aline 846 307 aline 923 538 aline 923 769 aline 846 999 amove 1076 384 aline 923 461 aline 692 615 aline 615 769 aline 615 923 aline 692 1000 aline 846 1000 aline 923 923 aline 1000 769 aline 1000 538 aline 923 307 aline 846 153 aline 769 76 aline 615 0 aline 538 0 aline 461 76 aline 384 230 aline 384 538 aline 307 615 stroke dfont endchar dfont char=105 amove 307 0 aline 230 76 aline 230 153 aline 384 692 amove 307 692 aline 153 153 aline 153 76 aline 230 -1 aline 384 -1 aline 538 76 aline 615 230 stroke dfont endchar dfont char=106 amove 76 0 aline 307 692 amove 384 692 aline 153 0 amove 307 461 aline 538 538 aline 692 692 aline 846 692 aline 923 615 aline 846 615 aline 769 692 amove 923 230 aline 846 76 aline 692 -1 aline 538 76 aline 384 384 aline 307 461 aline 461 384 aline 615 76 aline 692 0 stroke dfont endchar dfont char=107 amove 76 0 aline 461 615 aline 153 0 amove 769 0 aline 230 923 aline 153 1000 amove 0 1000 aline 153 1000 aline 307 923 aline 846 0 stroke dfont endchar dfont char=108 amove 0 -308 aline 307 692 amove 384 692 aline 76 -308 amove 230 230 aline 230 76 aline 307 -1 aline 461 -1 aline 615 76 aline 692 153 amove 846 -1 aline 769 76 aline 769 153 aline 923 692 amove 846 692 aline 692 153 aline 692 76 aline 769 -1 aline 923 -1 aline 1000 76 aline 1076 230 stroke dfont endchar dfont char=109 amove 230 0 aline 307 692 amove 384 692 aline 307 230 aline 230 -1 aline 307 -1 aline 538 76 aline 769 230 aline 923 461 aline 1000 692 aline 923 692 aline 923 461 amove 384 692 aline 153 692 stroke dfont endchar dfont char=110 amove 307 0 aline 230 76 aline 230 230 aline 307 307 aline 461 384 aline 230 307 aline 153 230 aline 153 76 aline 307 0 aline 461 -77 aline 538 -154 aline 538 -231 aline 461 -308 aline 307 -308 amove 384 384 aline 307 461 aline 307 615 aline 384 692 aline 538 769 aline 307 692 aline 230 615 aline 230 461 aline 384 384 aline 615 384 amove 692 769 aline 461 769 aline 307 846 aline 307 923 aline 384 1000 stroke dfont endchar dfont char=111 amove 384 0 aline 230 153 aline 230 384 aline 307 538 aline 461 692 aline 615 692 aline 769 615 aline 846 461 aline 846 307 aline 769 153 aline 692 76 aline 538 0 aline 384 0 aline 230 76 aline 153 230 aline 153 384 aline 230 538 aline 307 615 aline 461 692 amove 615 692 aline 769 538 aline 769 307 aline 692 153 aline 538 0 stroke dfont endchar dfont char=112 amove 307 0 aline 538 615 aline 384 0 amove 769 0 aline 846 615 aline 846 0 amove 1153 615 aline 307 615 aline 153 538 aline 307 692 aline 1153 692 stroke dfont endchar dfont char=113 amove 0 -308 aline 230 384 aline 307 538 aline 384 615 aline 538 692 aline 692 692 aline 846 615 aline 923 461 aline 923 307 aline 846 153 aline 769 76 aline 615 0 aline 461 0 aline 307 76 aline 230 230 amove 615 0 aline 769 153 aline 846 307 aline 846 538 aline 692 692 amove 538 692 aline 384 538 aline 307 384 aline 76 -308 stroke dfont endchar dfont char=114 amove 384 0 aline 230 153 aline 230 384 aline 307 538 aline 461 692 amove 615 692 aline 769 538 aline 769 307 aline 692 153 aline 538 0 amove 1076 615 aline 769 615 aline 846 461 aline 846 307 aline 769 153 aline 692 76 aline 538 0 aline 384 0 aline 230 76 aline 153 230 aline 153 384 aline 230 538 aline 307 615 aline 461 692 aline 1076 692 stroke dfont endchar dfont char=115 amove 461 0 aline 615 615 aline 538 0 amove 153 538 aline 307 692 aline 999 692 amove 999 615 aline 307 615 aline 153 538 stroke dfont endchar dfont char=116 amove 461 0 aline 384 76 aline 384 230 aline 461 461 aline 461 615 aline 384 692 aline 230 692 aline 153 615 aline 76 461 amove 307 692 aline 384 615 aline 384 461 aline 307 230 aline 307 76 aline 461 0 aline 538 0 aline 692 76 aline 846 230 aline 923 461 aline 923 692 aline 846 692 aline 923 615 stroke dfont endchar dfont char=117 amove 153 230 aline 230 153 aline 384 76 aline 538 76 aline 769 153 aline 923 307 aline 1000 461 amove 1000 538 aline 923 615 aline 769 615 aline 615 461 amove 538 230 aline 461 0 aline 384 -308 amove 307 -308 aline 538 230 aline 615 461 aline 692 615 aline 769 692 aline 923 692 aline 1000 615 aline 1000 461 aline 923 230 aline 769 76 aline 538 0 aline 384 0 aline 230 76 aline 153 230 aline 153 384 aline 230 538 aline 307 615 stroke dfont endchar dfont char=118 amove 76 -308 aline 230 -77 aline 692 461 aline 846 692 amove 230 692 aline 307 615 aline 538 -231 aline 692 -308 aline 769 -308 amove 692 -308 aline 615 -231 aline 384 615 aline 230 692 aline 153 692 stroke dfont endchar dfont char=119 amove 76 461 aline 153 615 aline 230 692 aline 384 692 aline 461 615 aline 461 153 aline 538 76 aline 769 76 aline 923 153 aline 1076 307 amove 1230 692 aline 1153 461 aline 1076 307 aline 923 76 aline 769 -1 aline 538 -1 aline 461 76 aline 384 307 aline 384 615 aline 307 692 amove 846 1000 aline 615 -308 amove 538 -308 aline 923 1000 stroke dfont endchar dfont char=120 amove 153 230 aline 307 76 aline 461 76 aline 615 230 aline 692 76 aline 846 76 aline 999 153 amove 692 461 aline 615 230 aline 538 76 aline 461 -1 aline 307 -1 aline 230 76 aline 153 230 aline 153 384 aline 230 538 aline 307 615 aline 461 692 aline 461 615 aline 307 615 amove 615 461 aline 615 76 aline 692 0 aline 846 0 aline 999 153 aline 1076 307 aline 1076 461 aline 999 615 aline 923 692 aline 923 615 aline 999 615 stroke dfont endchar dfont char=121 amove 384 0 aline 230 153 aline 230 384 aline 307 538 aline 461 692 amove 846 692 aline 692 153 aline 692 76 aline 769 -1 aline 923 -1 aline 1000 76 aline 1076 230 amove 846 -1 aline 769 76 aline 769 153 aline 923 692 amove 769 384 aline 769 538 aline 615 692 aline 461 692 aline 307 615 aline 230 538 aline 153 384 aline 153 230 aline 230 76 aline 384 0 aline 538 0 aline 692 153 stroke dfont endchar dfont char=122 amove 461 0 aline 307 153 aline 307 461 aline 461 1000 aline 230 1000 amove 384 1000 aline 230 461 aline 230 230 aline 307 76 aline 461 0 aline 615 0 aline 769 76 aline 846 153 aline 923 307 aline 923 461 aline 846 615 aline 692 692 aline 538 692 aline 384 615 aline 307 461 amove 692 692 aline 846 538 aline 846 307 aline 769 153 aline 615 0 stroke dfont endchar dfont char=123 amove 380 238 aline 333 95 aline 333 -96 aline 380 -239 amove 476 -334 aline 333 -191 aline 285 -48 aline 285 47 aline 333 190 aline 428 285 aline 428 333 aline 238 428 aline 428 523 aline 428 571 aline 333 666 aline 285 809 aline 285 904 aline 333 1047 aline 476 1190 amove 380 1095 aline 333 952 aline 333 761 aline 380 619 stroke dfont endchar dfont char=124 amove 230 -308 aline 230 1230 aline 615 1230 amove 307 1230 aline 307 -308 amove 230 -308 aline 615 -308 stroke dfont endchar dfont char=125 amove 238 -334 aline 380 -191 aline 428 -48 aline 428 47 aline 380 190 aline 285 285 aline 285 333 aline 476 428 aline 285 523 aline 285 571 aline 380 666 aline 428 809 aline 428 904 aline 380 1047 aline 238 1190 amove 333 1095 aline 380 952 aline 380 761 aline 333 619 amove 333 238 aline 380 95 aline 380 -96 aline 333 -239 stroke dfont endchar dfont char=126 amove 307 1000 aline 230 923 aline 230 769 aline 307 692 aline 461 692 aline 538 769 aline 538 923 aline 461 1000 aline 307 1000 stroke dfont endchar gle-graphics-4.2.4c/src/fonts/plsr.gle0000664000000000000000000005006711676336540016345 0ustar rootrootdfont design= 1428 dfont char=33 amove 238 1000 aline 238 333 amove 238 95 aline 190 47 aline 238 0 aline 285 47 aline 238 95 stroke dfont endchar dfont char=34 amove 190 666 aline 190 1000 amove 571 1000 aline 571 666 stroke dfont endchar dfont char=35 amove 142 285 aline 809 285 amove 857 571 aline 190 571 amove 523 1190 aline 190 -334 amove 476 -334 aline 809 1190 stroke dfont endchar dfont char=36 amove 142 142 aline 238 47 aline 380 0 aline 571 0 aline 714 47 aline 809 142 aline 809 285 aline 761 380 aline 714 428 aline 619 476 aline 333 571 aline 238 619 aline 190 666 aline 142 761 aline 142 857 aline 238 952 aline 380 1000 aline 571 1000 aline 714 952 aline 809 857 amove 571 1190 aline 571 -191 amove 380 -191 aline 380 1190 stroke dfont endchar dfont char=37 amove 142 0 aline 1000 1000 aline 904 952 aline 761 904 aline 619 904 aline 476 952 aline 380 1000 aline 285 1000 aline 190 952 aline 142 857 aline 142 761 aline 238 666 aline 333 666 aline 428 714 aline 476 809 aline 476 904 aline 380 1000 amove 809 333 aline 714 285 aline 666 190 aline 666 95 aline 761 0 aline 857 0 aline 952 47 aline 1000 142 aline 1000 238 aline 904 333 aline 809 333 stroke dfont endchar dfont char=38 amove 1095 571 aline 1095 619 aline 1047 666 aline 1000 666 aline 952 619 aline 904 523 aline 809 285 aline 714 142 aline 619 47 aline 523 0 aline 333 0 aline 238 47 aline 190 95 aline 142 190 aline 142 285 aline 190 380 aline 238 428 aline 571 619 aline 619 666 aline 666 761 aline 666 857 aline 619 952 aline 523 1000 aline 428 952 aline 380 857 aline 380 761 aline 428 619 aline 523 476 aline 761 142 aline 857 47 aline 952 0 aline 1047 0 aline 1095 47 aline 1095 95 stroke dfont endchar dfont char=39 amove 190 1000 aline 190 666 stroke dfont endchar dfont char=40 amove 523 1190 aline 428 1095 aline 333 952 aline 238 761 aline 190 523 aline 190 333 aline 238 95 aline 333 -96 aline 428 -239 aline 523 -334 stroke dfont endchar dfont char=41 amove 142 -334 aline 238 -239 aline 333 -96 aline 428 95 aline 476 333 aline 476 523 aline 428 761 aline 333 952 aline 238 1095 aline 142 1190 stroke dfont endchar dfont char=42 amove 142 285 aline 619 571 amove 380 714 aline 380 142 amove 619 285 aline 142 571 stroke dfont endchar dfont char=43 amove 190 428 aline 1047 428 amove 619 857 aline 619 0 stroke dfont endchar dfont char=44 amove 190 -191 aline 238 -143 aline 285 -48 aline 285 47 aline 238 95 aline 190 47 aline 238 0 aline 285 47 stroke dfont endchar dfont char=45 amove 190 428 aline 1047 428 stroke dfont endchar dfont char=46 amove 238 95 aline 190 47 aline 238 0 aline 285 47 aline 238 95 stroke dfont endchar dfont char=47 amove 95 -334 aline 952 1190 stroke dfont endchar dfont char=48 amove 428 1000 aline 285 952 aline 190 809 aline 142 571 aline 142 428 aline 190 190 aline 285 47 aline 428 0 aline 523 0 aline 666 47 aline 761 190 aline 809 428 aline 809 571 aline 761 809 aline 666 952 aline 523 1000 aline 428 1000 stroke dfont endchar dfont char=49 amove 285 809 aline 380 857 aline 523 1000 aline 523 0 stroke dfont endchar dfont char=50 amove 190 761 aline 190 809 aline 238 904 aline 285 952 aline 380 1000 aline 571 1000 aline 666 952 aline 714 904 aline 761 809 aline 761 714 aline 714 619 aline 619 476 aline 142 0 aline 809 0 stroke dfont endchar dfont char=51 amove 142 190 aline 190 95 aline 238 47 aline 380 0 aline 523 0 aline 666 47 aline 761 142 aline 809 285 aline 809 380 aline 761 523 aline 714 571 aline 619 619 aline 476 619 aline 761 1000 aline 238 1000 stroke dfont endchar dfont char=52 amove 619 0 aline 619 1000 aline 142 333 aline 857 333 stroke dfont endchar dfont char=53 amove 142 190 aline 190 95 aline 238 47 aline 380 0 aline 523 0 aline 666 47 aline 761 142 aline 809 285 aline 809 380 aline 761 523 aline 666 619 aline 523 666 aline 380 666 aline 238 619 aline 190 571 aline 238 1000 aline 714 1000 stroke dfont endchar dfont char=54 amove 190 333 aline 238 476 aline 333 571 aline 476 619 aline 523 619 aline 666 571 aline 761 476 aline 809 333 aline 809 285 aline 761 142 aline 666 47 aline 523 -1 aline 476 -1 aline 333 47 aline 238 142 aline 190 333 aline 190 571 aline 238 809 aline 333 952 aline 476 1000 aline 571 1000 aline 714 952 aline 761 857 stroke dfont endchar dfont char=55 amove 333 0 aline 809 1000 aline 142 1000 stroke dfont endchar dfont char=56 amove 380 1000 aline 238 952 aline 190 857 aline 190 761 aline 238 666 aline 333 619 aline 523 571 aline 666 523 aline 761 428 aline 809 333 aline 809 190 aline 761 95 aline 714 47 aline 571 -1 aline 380 -1 aline 238 47 aline 190 95 aline 142 190 aline 142 333 aline 190 428 aline 285 523 aline 428 571 aline 619 619 aline 714 666 aline 761 761 aline 761 857 aline 714 952 aline 571 1000 aline 380 1000 stroke dfont endchar dfont char=57 amove 190 142 aline 238 47 aline 380 0 aline 476 0 aline 619 47 aline 714 190 aline 761 428 aline 761 666 aline 714 857 aline 619 952 aline 476 1000 aline 428 1000 aline 285 952 aline 190 857 aline 142 714 aline 142 666 aline 190 523 aline 285 428 aline 428 380 aline 476 380 aline 619 428 aline 714 523 aline 761 666 stroke dfont endchar dfont char=58 amove 238 666 aline 190 619 aline 238 571 aline 285 619 aline 238 666 amove 238 95 aline 190 47 aline 238 -1 aline 285 47 aline 238 95 stroke dfont endchar dfont char=59 amove 190 -191 aline 238 -143 aline 285 -48 aline 285 47 aline 238 95 aline 190 47 aline 238 0 aline 285 47 amove 238 666 aline 190 619 aline 238 571 aline 285 619 aline 238 666 stroke dfont endchar dfont char=60 amove 952 857 aline 190 428 aline 952 0 stroke dfont endchar dfont char=61 amove 190 285 aline 1047 285 amove 1047 571 aline 190 571 stroke dfont endchar dfont char=62 amove 190 0 aline 952 428 aline 190 857 stroke dfont endchar dfont char=63 amove 142 761 aline 142 809 aline 190 904 aline 238 952 aline 333 1000 aline 523 1000 aline 619 952 aline 666 904 aline 714 809 aline 714 714 aline 666 619 aline 619 571 aline 428 476 aline 428 333 amove 428 95 aline 380 47 aline 428 -1 aline 476 47 aline 428 95 stroke dfont endchar dfont char=64 amove 523 238 aline 476 285 aline 428 380 aline 428 523 aline 476 666 aline 571 761 amove 857 761 aline 809 380 aline 809 285 aline 904 238 aline 999 238 aline 1095 333 aline 1142 476 aline 1142 571 aline 1095 714 aline 1047 809 aline 952 904 aline 857 952 aline 714 1000 aline 571 1000 aline 428 952 aline 333 904 aline 238 809 aline 190 714 aline 142 571 aline 142 428 aline 190 285 aline 238 190 aline 333 95 aline 428 47 aline 571 0 aline 714 0 aline 857 47 aline 952 95 aline 1000 142 amove 904 238 aline 857 285 aline 857 380 aline 904 761 amove 857 619 aline 809 714 aline 714 761 aline 571 761 aline 476 714 aline 428 666 aline 380 523 aline 380 380 aline 428 285 aline 523 238 aline 666 238 aline 761 285 aline 809 380 stroke dfont endchar dfont char=65 amove 47 0 aline 428 1000 aline 809 0 amove 666 333 aline 190 333 stroke dfont endchar dfont char=66 amove 190 0 aline 190 1000 aline 619 1000 aline 761 952 aline 809 904 aline 857 809 aline 857 714 aline 809 619 aline 761 571 aline 619 523 amove 190 523 aline 619 523 aline 761 476 aline 809 428 aline 857 333 aline 857 190 aline 809 95 aline 761 47 aline 619 -1 aline 190 -1 stroke dfont endchar dfont char=67 amove 857 761 aline 809 857 aline 714 952 aline 619 1000 aline 428 1000 aline 333 952 aline 238 857 aline 190 761 aline 142 619 aline 142 380 aline 190 238 aline 238 142 aline 333 47 aline 428 0 aline 619 0 aline 714 47 aline 809 142 aline 857 238 stroke dfont endchar dfont char=68 amove 190 0 aline 190 1000 aline 523 1000 aline 666 952 aline 761 857 aline 809 761 aline 857 619 aline 857 380 aline 809 238 aline 761 142 aline 666 47 aline 523 0 aline 190 0 stroke dfont endchar dfont char=69 amove 190 0 aline 190 1000 aline 809 1000 amove 571 523 aline 190 523 amove 190 0 aline 809 0 stroke dfont endchar dfont char=70 amove 190 0 aline 190 1000 aline 809 1000 amove 571 523 aline 190 523 stroke dfont endchar dfont char=71 amove 619 380 aline 857 380 aline 857 238 aline 809 142 aline 714 47 aline 619 -1 aline 428 -1 aline 333 47 aline 238 142 aline 190 238 aline 142 380 aline 142 619 aline 190 761 aline 238 857 aline 333 952 aline 428 1000 aline 619 1000 aline 714 952 aline 809 857 aline 857 761 stroke dfont endchar dfont char=72 amove 190 0 aline 190 1000 amove 190 523 aline 857 523 amove 857 1000 aline 857 0 stroke dfont endchar dfont char=73 amove 190 1000 aline 190 0 stroke dfont endchar dfont char=74 amove 95 333 aline 95 238 aline 142 95 aline 190 47 aline 285 0 aline 380 0 aline 476 47 aline 523 95 aline 571 238 aline 571 1000 stroke dfont endchar dfont char=75 amove 190 0 aline 190 1000 amove 428 571 aline 857 0 amove 190 333 aline 857 1000 stroke dfont endchar dfont char=76 amove 190 1000 aline 190 0 aline 761 0 stroke dfont endchar dfont char=77 amove 190 0 aline 190 1000 aline 571 0 aline 952 1000 aline 952 0 stroke dfont endchar dfont char=78 amove 190 0 aline 190 1000 aline 857 0 aline 857 1000 stroke dfont endchar dfont char=79 amove 428 1000 aline 333 952 aline 238 857 aline 190 761 aline 142 619 aline 142 380 aline 190 238 aline 238 142 aline 333 47 aline 428 0 aline 619 0 aline 714 47 aline 809 142 aline 857 238 aline 904 380 aline 904 619 aline 857 761 aline 809 857 aline 714 952 aline 619 1000 aline 428 1000 stroke dfont endchar dfont char=80 amove 190 0 aline 190 1000 aline 619 1000 aline 761 952 aline 809 904 aline 857 809 aline 857 666 aline 809 571 aline 761 523 aline 619 476 aline 190 476 stroke dfont endchar dfont char=81 amove 428 1000 aline 333 952 aline 238 857 aline 190 761 aline 142 619 aline 142 380 aline 190 238 aline 238 142 aline 333 47 aline 428 0 aline 619 0 aline 714 47 aline 809 142 aline 857 238 aline 904 380 aline 904 619 aline 857 761 aline 809 857 aline 714 952 aline 619 1000 aline 428 1000 amove 571 190 aline 857 -96 stroke dfont endchar dfont char=82 amove 190 0 aline 190 1000 aline 619 1000 aline 761 952 aline 809 904 aline 857 809 aline 857 714 aline 809 619 aline 761 571 aline 619 523 aline 190 523 amove 523 523 aline 857 0 stroke dfont endchar dfont char=83 amove 142 142 aline 238 47 aline 380 0 aline 571 0 aline 714 47 aline 809 142 aline 809 285 aline 761 380 aline 714 428 aline 619 476 aline 333 571 aline 238 619 aline 190 666 aline 142 761 aline 142 857 aline 238 952 aline 380 1000 aline 571 1000 aline 714 952 aline 809 857 stroke dfont endchar dfont char=84 amove 380 0 aline 380 1000 amove 47 1000 aline 714 1000 stroke dfont endchar dfont char=85 amove 190 1000 aline 190 285 aline 238 142 aline 333 47 aline 476 0 aline 571 0 aline 714 47 aline 809 142 aline 857 285 aline 857 1000 stroke dfont endchar dfont char=86 amove 428 0 aline 47 1000 amove 809 1000 aline 428 0 stroke dfont endchar dfont char=87 amove 333 0 aline 95 1000 amove 571 1000 aline 333 0 amove 809 0 aline 571 1000 amove 1047 1000 aline 809 0 stroke dfont endchar dfont char=88 amove 142 0 aline 809 1000 amove 142 1000 aline 809 0 stroke dfont endchar dfont char=89 amove 428 0 aline 428 523 aline 47 1000 amove 428 523 aline 809 1000 stroke dfont endchar dfont char=90 amove 142 0 aline 809 1000 aline 142 1000 amove 142 0 aline 809 0 stroke dfont endchar dfont char=91 amove 190 -334 aline 190 1190 aline 523 1190 amove 238 1190 aline 238 -334 amove 190 -334 aline 523 -334 stroke dfont endchar stroke dfont endchar dfont char=93 amove 142 -334 aline 476 -334 aline 476 1190 aline 142 1190 amove 428 1190 aline 428 -334 stroke dfont endchar stroke dfont endchar stroke dfont endchar dfont char=96 amove 238 904 aline 285 952 aline 238 1000 aline 190 952 aline 190 857 aline 238 761 aline 285 714 stroke dfont endchar dfont char=97 amove 714 0 aline 714 666 amove 714 523 aline 619 619 aline 523 666 aline 380 666 aline 285 619 aline 190 523 aline 142 380 aline 142 285 aline 190 142 aline 285 47 aline 380 0 aline 523 0 aline 619 47 aline 714 142 stroke dfont endchar dfont char=98 amove 190 0 aline 190 1000 amove 190 523 aline 285 619 aline 380 666 aline 523 666 aline 619 619 aline 714 523 aline 761 380 aline 761 285 aline 714 142 aline 619 47 aline 523 0 aline 380 0 aline 285 47 aline 190 142 stroke dfont endchar dfont char=99 amove 714 523 aline 619 619 aline 523 666 aline 380 666 aline 285 619 aline 190 523 aline 142 380 aline 142 285 aline 190 142 aline 285 47 aline 380 0 aline 523 0 aline 619 47 aline 714 142 stroke dfont endchar dfont char=100 amove 714 0 aline 714 1000 amove 714 523 aline 619 619 aline 523 666 aline 380 666 aline 285 619 aline 190 523 aline 142 380 aline 142 285 aline 190 142 aline 285 47 aline 380 0 aline 523 0 aline 619 47 aline 714 142 stroke dfont endchar dfont char=101 amove 142 380 aline 714 380 aline 714 476 aline 666 571 aline 619 619 aline 523 666 aline 380 666 aline 285 619 aline 190 523 aline 142 380 aline 142 285 aline 190 142 aline 285 47 aline 380 0 aline 523 0 aline 619 47 aline 714 142 stroke dfont endchar dfont char=102 amove 238 0 aline 238 809 aline 285 952 aline 380 1000 aline 476 1000 amove 428 666 aline 95 666 stroke dfont endchar dfont char=103 amove 285 -286 aline 380 -334 aline 523 -334 aline 619 -286 aline 666 -239 aline 714 -96 aline 714 666 amove 714 523 aline 619 619 aline 523 666 aline 380 666 aline 285 619 aline 190 523 aline 142 380 aline 142 285 aline 190 142 aline 285 47 aline 380 0 aline 523 0 aline 619 47 aline 714 142 stroke dfont endchar dfont char=104 amove 190 0 aline 190 1000 amove 190 476 aline 333 619 aline 428 666 aline 571 666 aline 666 619 aline 714 476 aline 714 0 stroke dfont endchar dfont char=105 amove 142 1000 aline 190 952 aline 238 1000 aline 190 1047 aline 142 1000 amove 190 666 aline 190 0 stroke dfont endchar dfont char=106 amove 47 -334 aline 142 -334 aline 238 -286 aline 285 -143 aline 285 666 amove 238 1000 aline 285 952 aline 333 1000 aline 285 1047 aline 238 1000 stroke dfont endchar dfont char=107 amove 190 0 aline 190 1000 amove 666 666 aline 190 190 amove 380 380 aline 714 0 stroke dfont endchar dfont char=108 amove 190 1000 aline 190 0 stroke dfont endchar dfont char=109 amove 190 0 aline 190 666 amove 190 476 aline 333 619 aline 428 666 aline 571 666 aline 666 619 aline 714 476 aline 714 0 amove 714 476 aline 857 619 aline 952 666 aline 1095 666 aline 1190 619 aline 1238 476 aline 1238 0 stroke dfont endchar dfont char=110 amove 190 0 aline 190 666 amove 190 476 aline 333 619 aline 428 666 aline 571 666 aline 666 619 aline 714 476 aline 714 0 stroke dfont endchar dfont char=111 amove 380 666 aline 285 619 aline 190 523 aline 142 380 aline 142 285 aline 190 142 aline 285 47 aline 380 0 aline 523 0 aline 619 47 aline 714 142 aline 761 285 aline 761 380 aline 714 523 aline 619 619 aline 523 666 aline 380 666 stroke dfont endchar dfont char=112 amove 190 142 aline 285 47 aline 380 0 aline 523 0 aline 619 47 aline 714 142 aline 761 285 aline 761 380 aline 714 523 aline 619 619 aline 523 666 aline 380 666 aline 285 619 aline 190 523 amove 190 666 aline 190 -334 stroke dfont endchar dfont char=113 amove 714 142 aline 619 47 aline 523 0 aline 380 0 aline 285 47 aline 190 142 aline 142 285 aline 142 380 aline 190 523 aline 285 619 aline 380 666 aline 523 666 aline 619 619 aline 714 523 amove 714 666 aline 714 -334 stroke dfont endchar dfont char=114 amove 190 0 aline 190 666 amove 190 380 aline 238 523 aline 333 619 aline 428 666 aline 571 666 stroke dfont endchar dfont char=115 amove 142 142 aline 190 47 aline 333 0 aline 476 0 aline 619 47 aline 666 142 aline 666 190 aline 619 285 aline 523 333 aline 285 380 aline 190 428 aline 142 523 aline 190 619 aline 333 666 aline 476 666 aline 619 619 aline 666 523 stroke dfont endchar dfont char=116 amove 476 0 aline 380 0 aline 285 47 aline 238 190 aline 238 1000 amove 95 666 aline 428 666 stroke dfont endchar dfont char=117 amove 190 666 aline 190 190 aline 238 47 aline 333 -1 aline 476 -1 aline 571 47 aline 714 190 amove 714 666 aline 714 0 stroke dfont endchar dfont char=118 amove 380 0 aline 95 666 amove 666 666 aline 380 0 stroke dfont endchar dfont char=119 amove 333 0 aline 142 666 amove 523 666 aline 333 0 amove 714 0 aline 523 666 amove 904 666 aline 714 0 stroke dfont endchar dfont char=120 amove 142 0 aline 666 666 amove 142 666 aline 666 0 stroke dfont endchar dfont char=121 amove 47 -334 aline 95 -334 aline 190 -286 aline 285 -191 aline 380 -1 aline 666 666 amove 95 666 aline 380 0 stroke dfont endchar dfont char=122 amove 142 0 aline 666 666 aline 142 666 amove 142 0 aline 666 0 stroke dfont endchar dfont char=123 amove 380 238 aline 333 95 aline 333 -96 aline 380 -239 amove 476 -334 aline 333 -191 aline 285 -48 aline 285 47 aline 333 190 aline 428 285 aline 428 333 aline 238 428 aline 428 523 aline 428 571 aline 333 666 aline 285 809 aline 285 904 aline 333 1047 aline 476 1190 amove 380 1095 aline 333 952 aline 333 761 aline 380 619 stroke dfont endchar dfont char=124 amove 190 1190 aline 190 -334 stroke dfont endchar dfont char=125 amove 238 -334 aline 380 -191 aline 428 -48 aline 428 47 aline 380 190 aline 285 285 aline 285 333 aline 476 428 aline 285 523 aline 285 571 aline 380 666 aline 428 809 aline 428 904 aline 380 1047 aline 238 1190 amove 333 1095 aline 380 952 aline 380 761 aline 333 619 amove 333 238 aline 380 95 aline 380 -96 aline 333 -239 stroke dfont endchar dfont char=126 amove 285 1000 aline 190 952 aline 142 857 aline 142 761 aline 190 666 aline 285 619 aline 380 619 aline 476 666 aline 523 761 aline 523 857 aline 476 952 aline 380 1000 aline 285 1000 stroke dfont endchar gle-graphics-4.2.4c/src/fonts/plsym2.gle0000664000000000000000000017252211676336540016614 0ustar rootrootdfont design= 1428 dfont char=1 amove 1000 846 aline 538 846 aline 384 769 aline 307 692 aline 230 538 aline 230 384 aline 307 230 aline 384 153 aline 538 76 aline 1000 76 stroke dfont endchar dfont char=2 amove 230 846 aline 230 384 aline 307 230 aline 384 153 aline 538 76 aline 692 76 aline 846 153 aline 923 230 aline 1000 384 aline 1000 846 stroke dfont endchar dfont char=3 amove 230 76 aline 692 76 aline 846 153 aline 923 230 aline 1000 384 aline 1000 538 aline 923 692 aline 846 769 aline 692 846 aline 230 846 stroke dfont endchar dfont char=4 amove 230 76 aline 230 538 aline 307 692 aline 384 769 aline 538 846 aline 692 846 aline 846 769 aline 923 692 aline 1000 538 aline 1000 76 stroke dfont endchar dfont char=5 amove 230 461 aline 846 461 amove 1000 846 aline 538 846 aline 384 769 aline 307 692 aline 230 538 aline 230 384 aline 307 230 aline 384 153 aline 538 76 aline 1000 76 stroke dfont endchar dfont char=6 amove 230 461 aline 1076 461 amove 923 615 aline 1076 461 aline 923 307 amove 846 230 aline 923 307 aline 1153 461 aline 923 615 aline 846 692 stroke dfont endchar dfont char=7 amove 384 0 aline 384 846 amove 230 692 aline 384 846 aline 538 692 amove 615 615 aline 538 692 aline 384 923 aline 230 692 aline 153 615 stroke dfont endchar dfont char=8 amove 461 307 aline 307 461 aline 461 615 amove 538 692 aline 461 615 aline 230 461 aline 461 307 aline 538 230 amove 307 461 aline 1153 461 stroke dfont endchar dfont char=9 amove 230 230 aline 384 76 aline 538 230 amove 615 307 aline 538 230 aline 384 -1 aline 230 230 aline 153 307 amove 384 76 aline 384 923 stroke dfont endchar dfont char=10 amove 384 0 aline 230 153 aline 230 384 aline 307 538 aline 461 692 amove 538 1000 aline 461 923 aline 384 923 aline 461 1000 aline 692 1000 aline 846 923 aline 923 769 aline 923 538 aline 846 307 aline 769 153 aline 692 76 aline 538 0 aline 384 0 aline 230 76 aline 153 230 aline 153 384 aline 230 538 aline 307 615 aline 461 692 aline 615 692 aline 769 615 aline 846 384 amove 538 0 aline 692 153 aline 769 307 aline 846 538 aline 846 769 aline 769 923 aline 692 1000 stroke dfont endchar dfont char=11 amove 615 0 aline 1076 1000 aline 153 1000 aline 615 0 amove 615 153 aline 230 1000 amove 307 923 aline 1000 923 stroke dfont endchar dfont char=12 amove 153 692 aline 384 692 aline 846 76 amove 846 -1 aline 307 692 amove 846 -1 aline 1538 1384 stroke dfont endchar dfont char=13 amove 230 -231 aline 230 -154 aline 153 -154 aline 153 -231 aline 230 -308 aline 384 -308 aline 538 -154 aline 615 -1 aline 692 230 aline 769 692 aline 846 1000 aline 923 1153 amove 1153 1153 aline 1153 1076 aline 1230 1076 aline 1230 1153 aline 1153 1230 aline 1000 1230 aline 846 1076 aline 769 923 aline 692 692 aline 615 230 aline 538 -77 aline 461 -231 stroke dfont endchar dfont char=14 amove 230 -231 aline 230 -154 aline 153 -154 aline 153 -231 aline 230 -308 aline 384 -308 aline 538 -154 aline 615 -1 aline 692 230 aline 769 692 aline 846 1000 aline 923 1153 amove 1153 1153 aline 1153 1076 aline 1230 1076 aline 1230 1153 aline 1153 1230 aline 1000 1230 aline 846 1076 aline 769 923 aline 692 692 aline 615 230 aline 538 -77 aline 461 -231 amove 615 769 aline 461 692 aline 384 538 aline 384 384 aline 461 230 aline 615 153 aline 769 153 aline 923 230 aline 1000 384 aline 1000 538 aline 923 692 aline 769 769 aline 615 769 stroke dfont endchar dfont char=15 amove 1384 461 aline 1307 307 aline 1153 230 aline 1076 230 aline 923 307 aline 846 384 aline 692 615 aline 615 692 aline 461 769 aline 384 769 aline 230 692 aline 153 538 aline 153 461 aline 230 307 aline 384 230 aline 461 230 aline 615 307 aline 692 384 aline 846 615 aline 923 692 aline 1076 769 aline 1153 769 aline 1307 692 aline 1384 538 aline 1384 461 stroke dfont endchar dfont char=16 amove 153 0 aline 1076 1000 aline 923 923 aline 692 923 aline 384 1000 aline 230 1000 aline 153 923 aline 153 769 aline 230 692 aline 384 692 aline 461 769 aline 461 923 aline 384 1000 amove 846 307 aline 769 230 aline 769 76 aline 846 0 aline 1000 0 aline 1076 76 aline 1076 230 aline 1000 307 aline 846 307 stroke dfont endchar dfont char=17 amove 384 0 aline 230 153 aline 230 307 aline 384 461 amove 384 769 aline 461 615 aline 923 76 aline 1000 -1 amove 1153 76 aline 1076 -1 aline 1000 -1 aline 846 76 aline 461 538 aline 384 769 aline 384 923 aline 461 1000 aline 615 1000 aline 692 923 aline 692 769 aline 615 615 aline 384 461 aline 230 384 aline 153 307 aline 153 153 aline 230 76 aline 384 0 aline 538 0 aline 692 76 aline 769 153 aline 846 307 aline 923 615 aline 1000 692 aline 1076 692 aline 1153 615 aline 1153 538 aline 1076 538 aline 1076 615 aline 1153 615 stroke dfont endchar dfont char=18 amove 923 76 aline 692 -1 aline 615 -1 aline 384 76 aline 230 230 aline 153 461 aline 153 538 aline 230 769 aline 384 923 aline 615 1000 aline 692 1000 aline 923 923 aline 1076 769 aline 1153 538 aline 1153 461 aline 1076 307 aline 923 307 aline 846 384 aline 846 692 amove 846 615 aline 692 692 aline 538 692 aline 461 538 aline 461 461 aline 538 307 aline 692 307 aline 846 384 stroke dfont endchar dfont char=19 amove 230 153 aline 307 153 aline 307 230 aline 230 230 aline 230 153 aline 307 76 aline 461 -1 aline 692 -1 aline 846 76 aline 923 153 aline 923 307 aline 846 461 aline 307 692 aline 230 769 amove 461 1230 aline 461 -308 amove 692 -308 aline 692 1230 amove 923 923 aline 846 923 aline 846 846 aline 923 846 aline 923 923 aline 769 1000 aline 384 1000 aline 230 923 aline 230 769 aline 307 615 aline 846 384 aline 923 307 stroke dfont endchar dfont char=20 amove 153 153 aline 846 153 amove 923 538 aline 230 538 amove 538 1000 aline 230 -308 amove 538 -308 aline 846 1000 stroke dfont endchar dfont char=21 amove 230 307 aline 307 230 aline 538 76 aline 615 -77 aline 615 -231 aline 538 -308 aline 384 -308 aline 307 -231 aline 307 -154 aline 384 -154 aline 384 -231 aline 307 -231 amove 615 -77 aline 538 0 aline 307 153 aline 230 307 aline 230 461 aline 384 615 amove 307 769 aline 384 692 aline 615 538 aline 692 384 aline 692 230 aline 538 76 amove 692 384 aline 615 461 aline 384 615 aline 307 769 aline 307 923 aline 384 1000 aline 538 1000 aline 615 923 aline 615 846 aline 538 846 aline 538 923 aline 615 923 stroke dfont endchar dfont char=22 amove 461 153 aline 461 -308 amove 461 538 aline 461 846 amove 461 1000 aline 384 923 aline 461 846 aline 538 923 aline 461 1000 amove 307 692 aline 230 769 aline 153 692 aline 230 615 aline 307 692 aline 615 692 aline 692 769 aline 769 692 aline 692 615 aline 615 692 amove 461 538 aline 384 384 aline 461 153 aline 538 384 aline 461 538 stroke dfont endchar dfont char=23 amove 307 0 aline 230 76 aline 153 0 aline 230 -77 aline 307 0 aline 615 0 aline 692 76 aline 769 0 aline 692 -77 aline 615 0 amove 461 153 aline 538 230 aline 384 461 aline 461 538 aline 461 846 aline 384 923 aline 461 1000 aline 538 923 aline 461 846 amove 307 692 aline 230 769 aline 153 692 aline 230 615 aline 307 692 aline 615 692 aline 692 769 aline 769 692 aline 692 615 aline 615 692 amove 461 538 aline 538 461 aline 384 230 aline 461 153 aline 461 -154 aline 384 -231 aline 461 -308 aline 538 -231 aline 461 -154 stroke dfont endchar dfont char=24 amove 153 0 aline 769 0 aline 769 1000 aline 153 1000 amove 384 538 aline 769 538 stroke dfont endchar dfont char=25 amove 692 1000 aline 461 923 aline 307 769 aline 230 538 aline 230 384 aline 307 153 aline 461 0 aline 692 -77 aline 846 -77 aline 1076 0 aline 1230 153 aline 1307 384 aline 1307 538 aline 1230 769 aline 1076 923 aline 846 1000 aline 692 1000 amove 769 538 aline 692 461 aline 769 384 aline 846 461 aline 769 538 stroke dfont endchar dfont char=26 amove 230 76 aline 769 76 amove 538 230 aline 538 -77 amove 461 -77 aline 461 230 amove 461 769 aline 307 692 aline 230 538 aline 230 461 aline 307 307 aline 461 230 aline 538 230 aline 692 307 aline 769 461 aline 769 538 aline 692 692 aline 538 769 aline 461 769 amove 384 769 aline 307 846 aline 307 923 aline 384 1000 amove 615 1000 aline 692 923 aline 692 846 aline 615 769 stroke dfont endchar dfont char=27 amove 230 230 aline 769 230 amove 538 461 aline 538 -1 amove 461 -1 aline 461 461 amove 461 999 aline 307 923 aline 230 769 aline 230 692 aline 307 538 aline 461 461 aline 538 461 aline 692 538 aline 769 692 aline 769 769 aline 692 923 aline 538 1000 aline 461 1000 stroke dfont endchar dfont char=28 amove 692 1000 aline 461 923 aline 307 769 aline 230 538 aline 230 384 aline 307 153 aline 461 0 aline 692 -77 aline 846 -77 aline 1076 0 aline 1230 153 aline 1307 384 aline 1307 538 aline 1230 769 aline 1076 923 aline 846 1000 aline 692 1000 amove 769 1000 aline 769 -77 amove 230 461 aline 1307 461 stroke dfont endchar dfont char=29 amove 615 461 aline 692 307 aline 692 230 aline 615 76 aline 461 -1 aline 384 -1 aline 230 76 aline 153 230 aline 153 307 aline 230 461 aline 384 538 aline 461 538 aline 615 461 aline 1000 846 amove 1000 461 aline 1000 846 aline 615 846 aline 923 769 aline 1000 461 stroke dfont endchar dfont char=30 amove 307 307 aline 461 384 aline 538 461 aline 615 615 aline 615 769 aline 538 923 aline 384 1000 aline 230 1000 aline 153 923 amove 384 1000 aline 461 923 aline 538 769 aline 538 538 aline 461 384 amove 307 307 aline 1076 307 amove 846 0 aline 923 1000 amove 1000 1000 aline 769 0 stroke dfont endchar dfont char=31 amove 307 230 aline 307 999 amove 384 999 aline 307 461 aline 384 615 aline 538 692 aline 692 692 aline 846 615 aline 923 538 aline 923 307 aline 769 153 aline 769 0 aline 846 -77 aline 923 -77 aline 1000 0 amove 769 153 aline 846 307 aline 846 538 aline 692 692 amove 384 1000 aline 153 1000 stroke dfont endchar dfont char=32 amove 461 307 aline 461 230 aline 538 230 aline 538 307 aline 461 307 amove 461 538 aline 461 1000 aline 230 769 amove 461 538 aline 307 461 aline 230 307 aline 230 230 aline 307 76 aline 461 -1 aline 538 -1 aline 692 76 aline 769 230 aline 769 307 aline 692 461 aline 538 538 aline 538 1000 aline 769 769 stroke dfont endchar dfont char=33 amove 384 153 aline 846 153 amove 615 -77 aline 615 999 amove 538 846 aline 615 1000 aline 692 846 amove 923 846 aline 1000 1000 aline 1076 846 amove 1000 1000 aline 1000 615 aline 923 461 aline 769 384 aline 461 384 aline 307 461 aline 230 615 aline 230 1000 amove 153 846 aline 230 1000 aline 307 846 stroke dfont endchar dfont char=34 amove 153 0 aline 923 0 aline 923 230 aline 846 0 amove 384 0 aline 384 1000 amove 307 1000 aline 307 0 amove 384 461 aline 692 461 aline 923 538 aline 999 692 aline 999 769 aline 923 923 aline 692 1000 aline 153 1000 amove 692 1000 aline 846 923 aline 923 769 aline 923 692 aline 846 538 aline 692 461 stroke dfont endchar dfont char=35 amove 846 -77 aline 615 -77 aline 384 0 aline 230 153 aline 153 384 aline 153 538 aline 230 769 aline 384 923 aline 615 1000 aline 846 1000 aline 615 923 aline 461 769 aline 384 538 aline 384 384 aline 461 153 aline 615 0 aline 846 -77 stroke dfont endchar dfont char=36 amove 538 538 aline 692 923 amove 1000 846 aline 615 461 aline 692 307 aline 692 230 aline 615 76 aline 461 -1 aline 384 -1 aline 230 76 aline 153 230 aline 153 307 aline 230 461 aline 384 538 aline 461 538 aline 615 461 amove 692 384 aline 1076 538 stroke dfont endchar dfont char=37 amove 153 307 aline 923 615 amove 923 307 aline 153 615 amove 384 846 aline 692 76 amove 384 76 aline 692 846 stroke dfont endchar dfont char=38 amove 384 230 aline 230 230 aline 153 153 aline 153 -1 aline 230 -77 aline 384 -77 aline 461 -1 aline 461 153 aline 307 307 aline 230 461 aline 230 692 aline 307 846 aline 384 923 aline 538 1000 aline 769 1000 aline 923 923 aline 1000 846 aline 1076 692 aline 1076 461 aline 1000 307 aline 846 153 aline 846 0 aline 923 -77 aline 1076 -77 aline 1153 0 aline 1153 153 aline 1076 230 aline 923 230 amove 307 846 aline 461 923 aline 846 923 aline 1000 846 stroke dfont endchar dfont char=39 amove 384 692 aline 230 692 aline 153 769 aline 153 923 aline 230 1000 aline 384 1000 aline 461 923 aline 461 769 aline 307 615 aline 230 461 aline 230 230 aline 307 76 aline 384 0 aline 538 -77 aline 769 -77 aline 923 0 aline 1000 76 aline 1076 230 aline 1076 461 aline 1000 615 aline 846 769 aline 846 923 aline 923 1000 aline 1076 1000 aline 1153 923 aline 1153 769 aline 1076 692 aline 923 692 amove 307 76 aline 461 0 aline 846 0 aline 1000 76 stroke dfont endchar dfont char=40 amove 153 -308 aline 692 -308 amove 461 -308 aline 461 1230 amove 384 1230 aline 384 -308 amove 1153 -308 aline 1692 -308 amove 1461 -308 aline 1461 1230 amove 1384 1230 aline 1384 -308 amove 1692 1230 aline 153 1230 stroke dfont endchar dfont char=41 amove 230 -231 aline 1230 -231 amove 1230 -308 aline 1384 76 aline 1307 -308 aline 153 -308 aline 769 538 aline 230 1230 amove 153 1230 aline 692 538 amove 153 1230 aline 1307 1230 aline 1384 846 aline 1230 1230 stroke dfont endchar dfont char=42 amove 692 -616 aline 538 -308 aline 461 -77 aline 384 307 aline 384 615 aline 461 1000 aline 538 1230 aline 692 1538 amove 846 1692 aline 692 1538 aline 538 1307 aline 384 1000 aline 307 615 aline 307 307 aline 384 -77 aline 538 -385 aline 692 -616 aline 846 -770 stroke dfont endchar dfont char=43 amove 384 -616 aline 538 -308 aline 615 -77 aline 692 307 aline 692 615 aline 615 1000 aline 538 1230 aline 384 1538 amove 230 1692 aline 384 1538 aline 538 1307 aline 692 1000 aline 769 615 aline 769 307 aline 692 -77 aline 538 -385 aline 384 -616 aline 230 -770 stroke dfont endchar dfont char=44 amove 307 -770 aline 307 1692 aline 846 1692 amove 384 1692 aline 384 -770 amove 307 -770 aline 846 -770 stroke dfont endchar dfont char=45 amove 230 -770 aline 769 -770 aline 769 1692 aline 230 1692 amove 692 1692 aline 692 -770 stroke dfont endchar dfont char=46 amove 615 153 aline 538 -77 aline 538 -385 aline 615 -616 amove 769 -770 aline 538 -539 aline 461 -308 aline 461 -154 aline 538 76 aline 692 230 aline 692 307 aline 384 461 aline 692 615 aline 692 692 aline 538 846 aline 461 1076 aline 461 1230 aline 538 1461 aline 769 1692 amove 615 1538 aline 538 1307 aline 538 1000 aline 615 769 stroke dfont endchar dfont char=47 amove 538 153 aline 615 -77 aline 615 -385 aline 538 -616 amove 384 -770 aline 615 -539 aline 692 -308 aline 692 -154 aline 615 76 aline 461 230 aline 461 307 aline 769 461 aline 461 615 aline 461 692 aline 615 846 aline 692 1076 aline 692 1230 aline 615 1461 aline 384 1692 amove 538 1538 aline 615 1307 aline 615 1000 aline 538 769 stroke dfont endchar dfont char=48 amove 538 -693 aline 615 -539 aline 692 -308 aline 692 -77 aline 615 153 aline 384 692 aline 307 923 aline 307 1153 aline 384 1384 aline 538 1615 aline 769 1846 amove 538 1615 aline 461 1461 aline 384 1230 aline 384 999 aline 461 769 aline 692 230 aline 769 -1 aline 769 -231 aline 692 -462 aline 538 -693 aline 307 -924 stroke dfont endchar dfont char=49 amove 538 -693 aline 461 -539 aline 384 -308 aline 384 -77 aline 461 153 aline 692 692 aline 769 923 aline 769 1153 aline 692 1384 aline 538 1615 aline 307 1846 amove 538 1615 aline 615 1461 aline 692 1230 aline 692 999 aline 615 769 aline 384 230 aline 307 -1 aline 307 -231 aline 384 -462 aline 538 -693 aline 769 -924 stroke dfont endchar dfont char=50 amove 153 461 aline 461 461 aline 1307 -616 amove 1307 -693 aline 461 384 amove 384 384 aline 1307 -770 aline 1769 2307 stroke dfont endchar dfont char=51 amove 230 -693 aline 307 -616 aline 230 -539 aline 153 -616 aline 153 -693 aline 230 -770 aline 384 -770 aline 538 -693 aline 692 -539 aline 769 -385 aline 846 -154 aline 923 153 aline 1076 1076 aline 1153 1384 aline 1230 1538 amove 1615 1615 aline 1538 1538 aline 1615 1461 aline 1692 1538 aline 1692 1615 aline 1615 1692 aline 1461 1692 aline 1307 1615 aline 1153 1461 aline 1076 1307 aline 1000 1076 aline 923 769 aline 769 -154 aline 692 -462 aline 615 -616 stroke dfont endchar dfont char=52 amove 190 428 aline 1000 428 amove 904 523 aline 1047 428 aline 904 333 amove 761 190 aline 1000 428 aline 761 666 stroke dfont endchar dfont char=53 amove 380 0 aline 380 809 amove 285 714 aline 380 857 aline 476 714 amove 619 571 aline 380 809 aline 142 571 stroke dfont endchar dfont char=54 amove 333 523 aline 190 428 aline 333 333 amove 476 666 aline 238 428 aline 476 190 amove 238 428 aline 1047 428 stroke dfont endchar dfont char=55 amove 285 142 aline 380 0 aline 476 142 amove 380 47 aline 380 857 amove 142 285 aline 380 47 aline 619 285 stroke dfont endchar dfont char=56 amove 238 47 aline 190 142 aline 190 333 aline 238 476 aline 333 619 aline 428 666 amove 333 904 aline 333 857 aline 285 857 aline 285 904 aline 333 952 aline 428 1000 aline 571 1000 aline 666 952 aline 714 904 aline 761 761 aline 761 523 aline 714 285 aline 666 142 aline 571 47 aline 428 0 aline 333 0 aline 238 47 aline 190 95 aline 142 190 aline 142 333 aline 190 476 aline 285 619 aline 428 666 aline 523 666 aline 619 619 aline 666 571 aline 714 428 amove 428 0 aline 523 47 aline 619 142 aline 666 285 aline 714 523 aline 714 761 aline 666 904 aline 571 1000 stroke dfont endchar dfont char=57 amove 476 0 aline 857 1000 aline 95 1000 aline 476 0 amove 476 95 aline 142 1000 amove 142 952 aline 809 952 stroke dfont endchar dfont char=58 amove 142 666 aline 380 666 aline 809 95 amove 809 -1 aline 333 619 amove 809 0 aline 1571 1571 stroke dfont endchar dfont char=59 amove 142 -286 aline 190 -239 aline 142 -191 aline 95 -239 aline 95 -286 aline 142 -334 aline 238 -334 aline 333 -286 aline 428 -191 aline 476 -96 aline 523 47 aline 571 238 aline 666 809 aline 714 1000 aline 761 1095 amove 1000 1142 aline 952 1095 aline 1000 1047 aline 1047 1095 aline 1047 1142 aline 1000 1190 aline 904 1190 aline 809 1142 aline 714 1047 aline 666 952 aline 619 809 aline 571 619 aline 476 47 aline 428 -143 aline 380 -239 stroke dfont endchar dfont char=60 amove 142 -286 aline 190 -239 aline 142 -191 aline 95 -239 aline 95 -286 aline 142 -334 aline 238 -334 aline 333 -286 aline 428 -191 aline 476 -96 aline 523 47 aline 571 238 aline 666 809 aline 714 1000 aline 761 1095 amove 1000 1142 aline 952 1095 aline 1000 1047 aline 1047 1095 aline 1047 1142 aline 1000 1190 aline 904 1190 aline 809 1142 aline 714 1047 aline 666 952 aline 619 809 aline 571 619 aline 476 47 aline 428 -143 aline 380 -239 amove 523 761 aline 380 714 aline 285 619 aline 238 476 aline 238 380 aline 285 238 aline 380 142 aline 523 95 aline 619 95 aline 761 142 aline 857 238 aline 904 380 aline 904 476 aline 857 619 aline 761 714 aline 619 761 aline 523 761 stroke dfont endchar dfont char=61 amove 1047 380 aline 1000 285 aline 904 238 aline 809 238 aline 714 285 aline 666 333 aline 523 523 aline 476 571 aline 380 619 aline 285 619 aline 190 571 aline 142 476 aline 142 380 aline 190 285 aline 285 238 aline 380 238 aline 476 285 aline 523 333 aline 666 523 aline 714 571 aline 809 619 aline 904 619 aline 1000 571 aline 1047 476 aline 1047 380 stroke dfont endchar dfont char=62 amove 142 0 aline 1000 1000 aline 904 952 aline 761 904 aline 619 904 aline 476 952 aline 380 1000 aline 285 1000 aline 190 952 aline 142 857 aline 142 761 aline 238 666 aline 333 666 aline 428 714 aline 476 809 aline 476 904 aline 380 1000 amove 809 333 aline 714 285 aline 666 190 aline 666 95 aline 761 0 aline 857 0 aline 952 47 aline 1000 142 aline 1000 238 aline 904 333 aline 809 333 stroke dfont endchar dfont char=63 amove 333 0 aline 238 47 aline 190 142 aline 190 285 aline 238 380 aline 333 476 amove 333 761 aline 380 666 aline 761 142 aline 857 47 aline 952 0 amove 1047 95 aline 1047 47 aline 1000 0 aline 952 0 aline 809 47 aline 714 142 aline 476 476 aline 380 619 aline 333 761 aline 333 857 aline 380 952 aline 476 1000 aline 571 952 aline 619 857 aline 619 761 aline 571 666 aline 476 571 aline 190 380 aline 142 285 aline 142 142 aline 190 47 aline 333 0 aline 476 0 aline 571 47 aline 666 142 aline 761 285 aline 857 523 aline 904 619 aline 952 666 aline 1000 666 aline 1047 619 aline 1047 571 aline 1000 523 aline 952 571 aline 1000 619 stroke dfont endchar dfont char=64 amove 523 238 aline 476 285 aline 428 380 aline 428 523 aline 476 666 aline 571 761 amove 857 761 aline 809 380 aline 809 285 aline 904 238 aline 999 238 aline 1095 333 aline 1142 476 aline 1142 571 aline 1095 714 aline 1047 809 aline 952 904 aline 857 952 aline 714 1000 aline 571 1000 aline 428 952 aline 333 904 aline 238 809 aline 190 714 aline 142 571 aline 142 428 aline 190 285 aline 238 190 aline 333 95 aline 428 47 aline 571 0 aline 714 0 aline 857 47 aline 952 95 aline 1000 142 amove 904 238 aline 857 285 aline 857 380 aline 904 761 amove 857 619 aline 809 714 aline 714 761 aline 571 761 aline 476 714 aline 428 666 aline 380 523 aline 380 380 aline 428 285 aline 523 238 aline 666 238 aline 761 285 aline 809 380 stroke dfont endchar dfont char=65 amove 190 142 aline 238 190 aline 190 238 aline 142 190 aline 142 142 aline 238 47 aline 380 0 aline 571 0 aline 714 47 aline 809 142 aline 809 333 aline 761 428 aline 714 476 aline 619 523 aline 333 619 aline 238 666 aline 142 761 amove 380 1190 aline 380 -191 amove 571 -191 aline 571 1190 amove 761 857 aline 714 809 aline 761 761 aline 809 809 aline 809 857 aline 714 952 aline 571 1000 aline 380 1000 aline 238 952 aline 142 857 aline 142 761 aline 190 666 aline 238 619 aline 333 571 aline 619 476 aline 714 428 aline 809 333 stroke dfont endchar dfont char=66 amove 142 190 aline 809 190 amove 857 476 aline 190 476 amove 523 1000 aline 190 -334 amove 476 -334 aline 809 1000 stroke dfont endchar dfont char=67 amove 190 238 aline 428 95 aline 523 -1 aline 571 -96 aline 571 -191 aline 523 -286 aline 428 -334 aline 333 -334 aline 238 -286 aline 190 -191 aline 190 -143 aline 238 -96 aline 285 -143 aline 238 -191 amove 476 47 aline 571 142 aline 619 238 aline 619 333 aline 571 428 aline 476 523 aline 238 666 amove 285 619 aline 190 523 aline 142 428 aline 142 333 aline 190 238 aline 285 142 aline 523 0 amove 571 428 aline 333 571 aline 238 666 aline 190 761 aline 190 857 aline 238 952 aline 333 1000 aline 428 1000 aline 523 952 aline 571 857 aline 571 809 aline 523 761 aline 476 809 aline 523 857 stroke dfont endchar dfont char=68 amove 380 -334 aline 380 1000 aline 428 904 aline 380 809 aline 333 904 aline 380 1000 amove 476 666 aline 571 619 aline 666 666 aline 571 714 aline 476 666 amove 666 666 aline 95 666 aline 190 714 aline 285 666 aline 190 619 aline 95 666 amove 380 476 aline 333 333 aline 380 -334 aline 428 333 aline 380 476 stroke dfont endchar dfont char=69 amove 95 0 aline 190 47 aline 285 0 aline 190 -48 aline 95 0 aline 666 0 amove 476 0 aline 571 -48 aline 666 0 aline 571 47 aline 476 0 amove 380 -143 aline 333 -239 aline 380 -334 aline 428 -239 aline 380 -143 amove 380 -334 aline 380 333 aline 380 999 aline 428 904 aline 380 809 aline 333 904 aline 380 999 amove 476 666 aline 571 619 aline 666 666 aline 571 714 aline 476 666 amove 380 523 aline 333 428 aline 428 238 aline 380 142 aline 333 238 aline 428 428 aline 380 523 amove 95 666 aline 190 714 aline 285 666 aline 190 619 aline 95 666 aline 666 666 stroke dfont endchar dfont char=70 amove 95 0 aline 714 0 aline 714 1000 aline 95 1000 amove 333 523 aline 714 523 stroke dfont endchar dfont char=71 amove 571 1000 aline 428 952 aline 285 857 aline 190 714 aline 142 571 aline 142 428 aline 190 285 aline 285 142 aline 428 47 aline 571 0 aline 714 0 aline 857 47 aline 1000 142 aline 1095 285 aline 1142 428 aline 1142 571 aline 1095 714 aline 1000 857 aline 857 952 aline 714 1000 aline 571 1000 amove 619 571 aline 571 523 aline 571 476 aline 619 428 aline 666 428 aline 714 476 aline 714 523 aline 666 571 aline 619 571 amove 619 523 aline 619 476 aline 666 476 aline 666 523 aline 619 523 stroke dfont endchar dfont char=72 amove 190 142 aline 619 142 amove 428 285 aline 428 0 amove 380 0 aline 380 285 amove 333 809 aline 238 857 aline 190 952 aline 285 1000 aline 238 952 aline 238 857 amove 333 809 aline 238 761 aline 190 714 aline 142 619 aline 142 476 aline 190 380 aline 238 333 aline 333 285 aline 476 285 aline 571 333 aline 619 380 aline 666 476 aline 666 619 aline 619 714 aline 571 761 aline 476 809 aline 333 809 amove 476 809 aline 571 857 aline 619 952 aline 523 1000 aline 571 952 aline 571 857 stroke dfont endchar dfont char=73 amove 238 190 aline 666 190 amove 476 380 aline 476 0 amove 428 0 aline 428 380 amove 428 1000 aline 285 952 aline 190 857 aline 142 714 aline 142 666 aline 190 523 aline 285 428 aline 428 380 aline 476 380 aline 619 428 aline 714 523 aline 761 666 aline 761 714 aline 714 857 aline 619 952 aline 476 1000 aline 428 1000 stroke dfont endchar dfont char=74 amove 571 1000 aline 428 952 aline 285 857 aline 190 714 aline 142 571 aline 142 380 aline 190 238 aline 285 95 aline 428 0 aline 571 -48 aline 761 -48 aline 904 0 aline 1047 95 aline 1142 238 aline 1190 380 aline 1190 571 aline 1142 714 aline 1047 857 aline 904 952 aline 761 1000 aline 571 1000 amove 666 1000 aline 666 -48 amove 142 476 aline 1190 476 stroke dfont endchar dfont char=75 amove 428 666 aline 285 619 aline 190 523 aline 142 380 aline 142 333 aline 190 190 aline 285 95 aline 428 47 aline 476 47 aline 619 95 aline 714 190 aline 761 333 aline 761 380 aline 714 523 aline 619 619 aline 476 666 aline 428 666 amove 666 619 aline 952 904 aline 761 952 aline 1047 952 aline 1047 666 aline 1000 857 aline 714 571 amove 714 619 aline 1000 904 stroke dfont endchar dfont char=76 amove 238 285 aline 380 380 aline 476 476 aline 523 571 aline 571 714 aline 571 857 aline 523 952 aline 428 1000 aline 285 1000 aline 190 952 aline 142 857 amove 428 1000 aline 476 952 aline 523 857 aline 523 666 aline 476 523 aline 380 380 amove 238 285 aline 904 285 amove 666 -1 aline 761 999 amove 809 999 aline 619 -1 stroke dfont endchar dfont char=77 amove 190 285 aline 190 1000 amove 238 1000 aline 190 476 aline 238 571 aline 285 619 aline 380 666 aline 523 666 aline 666 619 aline 714 523 aline 714 428 aline 666 333 aline 571 238 amove 761 95 aline 666 0 aline 571 0 aline 523 47 aline 523 142 aline 666 428 aline 666 523 aline 619 619 aline 523 666 amove 238 1000 aline 95 1000 stroke dfont endchar dfont char=78 amove 428 333 aline 428 285 aline 476 285 aline 476 333 aline 428 333 amove 428 380 aline 380 333 aline 380 285 aline 428 238 aline 476 238 aline 523 285 aline 523 333 aline 476 380 aline 428 380 amove 428 619 aline 476 619 aline 619 571 aline 714 476 aline 761 333 aline 761 285 aline 714 142 aline 619 47 aline 476 -1 aline 428 -1 aline 285 47 aline 190 142 aline 142 285 aline 142 333 aline 190 476 aline 285 571 aline 428 619 aline 428 1000 aline 238 809 aline 428 904 amove 476 904 aline 666 809 aline 476 1000 aline 476 619 stroke dfont endchar dfont char=79 amove 333 190 aline 761 190 amove 571 0 aline 571 1000 aline 619 904 amove 476 904 aline 523 1000 aline 523 0 amove 523 380 aline 476 380 aline 333 428 aline 238 523 aline 190 666 aline 190 1000 aline 142 904 amove 285 904 aline 238 1000 aline 238 619 aline 285 476 amove 571 380 aline 619 380 aline 761 428 aline 857 523 aline 904 666 aline 904 1000 aline 952 904 amove 809 904 aline 857 1000 aline 857 619 aline 809 476 stroke dfont endchar dfont char=80 amove 95 0 aline 857 0 aline 857 238 aline 809 0 amove 666 476 aline 761 523 aline 809 571 aline 857 666 aline 857 809 aline 809 904 aline 761 952 aline 666 1000 amove 285 1000 aline 285 0 amove 238 0 aline 238 1000 amove 95 1000 aline 666 1000 aline 809 952 aline 857 904 aline 904 809 aline 904 666 aline 857 571 aline 809 523 aline 666 476 aline 285 476 stroke dfont endchar dfont char=81 amove 809 -48 aline 619 -48 aline 428 -1 aline 285 95 aline 190 238 aline 142 380 aline 142 523 aline 190 666 aline 285 809 aline 428 904 aline 619 952 aline 809 952 aline 666 904 aline 523 809 aline 428 666 aline 380 523 aline 380 380 aline 428 238 aline 523 95 aline 666 -1 aline 809 -48 stroke dfont endchar dfont char=82 amove 428 476 aline 333 476 aline 238 428 aline 190 380 aline 142 285 aline 142 190 aline 190 95 aline 238 47 aline 333 0 aline 428 0 aline 523 47 aline 571 95 aline 619 190 aline 619 285 aline 571 380 aline 523 428 aline 428 476 amove 476 476 aline 619 904 amove 952 809 aline 571 428 amove 619 333 aline 1047 476 stroke dfont endchar dfont char=83 amove 142 285 aline 809 571 amove 619 761 aline 333 95 amove 619 95 aline 333 761 amove 142 571 aline 809 285 stroke dfont endchar dfont char=84 amove 380 238 aline 285 285 aline 238 285 aline 142 238 aline 95 142 aline 95 95 aline 142 -1 aline 238 -48 aline 285 -48 aline 380 -1 aline 428 95 aline 428 142 aline 380 238 aline 238 428 aline 190 571 aline 190 666 aline 238 809 aline 333 904 aline 476 952 aline 666 952 aline 809 904 aline 904 809 aline 952 666 aline 952 571 aline 904 428 aline 761 238 aline 714 142 aline 714 95 aline 761 0 aline 857 -48 aline 904 -48 aline 1000 0 aline 1047 95 aline 1047 142 aline 1000 238 aline 904 285 aline 857 285 aline 761 238 amove 190 666 aline 238 761 aline 333 857 aline 476 904 aline 666 904 aline 809 857 aline 904 761 aline 952 666 stroke dfont endchar dfont char=85 amove 190 238 aline 238 142 aline 333 47 aline 476 -1 aline 666 -1 aline 809 47 aline 904 142 aline 952 238 amove 761 666 aline 857 619 aline 904 619 aline 1000 666 aline 1047 761 aline 1047 809 aline 1000 904 aline 904 952 aline 857 952 aline 761 904 aline 714 809 aline 714 761 aline 761 666 aline 904 476 aline 952 333 aline 952 238 aline 904 95 aline 809 0 aline 666 -48 aline 476 -48 aline 333 0 aline 238 95 aline 190 238 aline 190 333 aline 238 476 aline 380 666 aline 428 761 aline 428 809 aline 380 904 aline 285 952 aline 238 952 aline 142 904 aline 95 809 aline 95 761 aline 142 666 aline 238 619 aline 285 619 aline 380 666 stroke dfont endchar dfont char=86 amove 95 95 aline 761 761 amove 571 714 aline 714 714 aline 714 571 amove 714 380 aline 714 571 aline 761 761 aline 571 714 aline 380 714 stroke dfont endchar dfont char=87 amove 95 95 aline 761 761 amove 142 476 aline 142 285 aline 95 95 aline 285 142 aline 476 142 amove 285 142 aline 142 142 aline 142 285 stroke dfont endchar dfont char=88 amove 142 380 aline 142 571 aline 95 761 aline 285 714 aline 476 714 amove 285 714 aline 142 714 aline 142 571 amove 95 761 aline 761 95 stroke dfont endchar dfont char=89 amove 95 761 aline 761 95 amove 380 142 aline 571 142 aline 761 95 aline 714 285 aline 714 476 amove 571 142 aline 714 142 aline 714 285 stroke dfont endchar dfont char=90 amove 571 0 aline 571 523 aline 523 714 aline 476 809 aline 428 857 aline 333 904 aline 238 904 aline 142 809 amove 190 666 aline 142 714 aline 142 809 aline 190 904 aline 285 952 aline 380 952 aline 476 904 aline 523 857 aline 571 761 aline 619 523 amove 571 523 aline 619 761 aline 666 857 aline 714 904 aline 809 952 aline 904 952 aline 1000 904 aline 1047 809 aline 1047 714 aline 1000 666 amove 1047 809 aline 952 904 aline 857 904 aline 761 857 aline 714 809 aline 666 714 aline 619 523 aline 619 0 stroke dfont endchar dfont char=91 amove 380 95 aline 333 238 aline 333 380 aline 380 476 aline 476 523 amove 476 571 aline 380 523 aline 333 476 aline 285 380 aline 285 238 aline 333 142 aline 428 47 aline 523 0 aline 619 0 aline 714 47 aline 809 142 aline 857 238 aline 857 380 aline 809 476 aline 761 523 aline 666 571 amove 666 523 aline 761 476 aline 809 380 aline 809 238 aline 761 95 amove 1000 952 aline 952 761 aline 904 666 aline 809 571 aline 666 523 aline 476 523 aline 333 571 aline 238 666 aline 190 761 aline 142 952 aline 190 809 aline 238 714 aline 333 619 aline 476 571 aline 666 571 aline 809 619 aline 904 714 aline 952 809 aline 1000 952 stroke dfont endchar dfont char=92 amove 142 95 aline 238 190 aline 333 238 aline 476 285 aline 666 285 aline 809 238 aline 904 190 aline 1000 95 amove 809 238 aline 809 809 amove 761 761 aline 761 285 amove 380 285 aline 380 761 amove 333 809 aline 333 238 amove 142 952 aline 238 857 aline 333 809 aline 476 761 aline 666 761 aline 809 809 aline 904 857 aline 1000 952 stroke dfont endchar dfont char=93 amove 142 142 aline 857 142 aline 952 190 aline 1000 285 aline 1000 380 aline 952 476 aline 857 523 aline 761 523 aline 666 476 aline 619 380 aline 619 285 aline 666 190 aline 142 190 amove 333 476 aline 238 523 aline 190 571 aline 142 666 amove 333 857 aline 428 809 aline 476 761 aline 523 666 amove 809 523 aline 904 476 aline 952 428 aline 1000 333 amove 809 142 aline 714 190 aline 666 238 aline 619 333 amove 1000 809 aline 476 809 aline 523 714 aline 523 619 aline 476 523 aline 380 476 aline 285 476 aline 190 523 aline 142 619 aline 142 714 aline 190 809 aline 285 857 aline 1000 857 stroke dfont endchar dfont char=94 amove 333 380 aline 238 523 aline 190 619 aline 190 761 aline 238 857 aline 285 904 amove 619 952 aline 761 904 aline 857 809 aline 904 714 aline 904 571 aline 857 428 aline 761 285 amove 952 142 aline 904 47 aline 857 0 aline 761 0 aline 714 95 aline 714 190 aline 761 285 aline 904 428 aline 952 571 aline 952 714 aline 904 809 aline 809 904 aline 619 952 aline 428 952 aline 285 904 aline 190 857 aline 142 761 aline 142 619 aline 190 523 aline 428 285 aline 476 190 aline 476 142 aline 428 47 aline 333 0 aline 285 0 aline 190 47 aline 142 142 aline 142 190 aline 190 285 aline 285 333 aline 333 333 aline 428 285 stroke dfont endchar dfont char=95 amove 238 238 aline 238 714 aline 142 857 amove 47 761 aline 190 904 aline 285 761 aline 285 238 amove 476 285 aline 476 714 aline 380 857 amove 285 761 aline 428 904 aline 523 761 aline 523 285 amove 428 0 aline 666 95 aline 809 190 aline 904 285 aline 952 380 aline 1000 523 aline 1000 666 aline 952 809 aline 904 904 aline 761 761 amove 857 857 aline 904 809 aline 952 666 aline 952 523 aline 904 380 aline 857 285 aline 761 190 aline 619 95 aline 428 0 amove 714 0 aline 714 714 aline 619 857 amove 523 761 aline 666 904 aline 761 761 aline 761 0 stroke dfont endchar dfont char=96 amove 238 95 aline 904 95 amove 904 142 aline 238 142 amove 142 333 aline 428 333 aline 333 428 aline 285 571 aline 285 666 aline 333 809 aline 428 904 aline 523 952 amove 619 952 aline 714 904 aline 809 809 aline 857 666 aline 857 571 aline 809 428 aline 714 333 aline 1000 333 amove 1000 380 aline 809 380 aline 857 428 aline 904 571 aline 904 666 aline 857 809 aline 761 904 aline 619 952 aline 523 952 aline 380 904 aline 285 809 aline 238 666 aline 238 571 aline 285 428 aline 333 380 aline 142 380 stroke dfont endchar dfont char=97 amove 285 142 aline 285 666 aline 142 809 amove 47 714 aline 190 857 aline 333 714 aline 333 142 amove 571 142 aline 571 666 aline 428 809 amove 333 714 aline 476 857 aline 619 714 aline 619 142 amove 1000 95 aline 904 190 aline 904 714 aline 761 857 aline 619 714 amove 714 809 aline 857 666 aline 857 142 aline 952 47 aline 1095 190 stroke dfont endchar dfont char=98 amove 142 95 aline 904 857 aline 761 809 aline 476 809 aline 666 761 aline 809 761 aline 809 619 aline 857 428 aline 857 714 aline 904 857 amove 476 428 aline 476 95 aline 428 238 aline 428 380 aline 285 380 aline 142 428 aline 476 428 stroke dfont endchar dfont char=99 amove 428 285 aline 190 761 aline 95 571 amove 190 666 aline 428 190 aline 571 523 aline 809 523 aline 952 571 aline 1000 666 aline 1000 761 aline 952 857 aline 857 904 aline 809 904 aline 714 857 aline 666 761 aline 666 666 aline 714 523 aline 761 428 aline 809 285 aline 809 142 aline 714 47 aline 809 95 aline 857 190 aline 857 333 aline 809 476 aline 714 666 aline 714 761 aline 761 857 aline 809 904 stroke dfont endchar dfont char=100 amove 142 285 aline 285 428 aline 476 333 amove 523 380 aline 666 285 aline 809 428 aline 904 333 amove 1000 428 aline 857 285 aline 761 380 amove 714 333 aline 571 428 aline 428 285 aline 238 380 amove 142 571 aline 285 714 aline 476 619 amove 523 666 aline 666 571 aline 809 714 aline 904 619 amove 1000 714 aline 857 571 aline 761 666 amove 714 619 aline 571 714 aline 428 571 aline 238 666 stroke dfont endchar dfont char=101 amove 190 95 aline 333 142 aline 428 190 aline 523 285 aline 571 428 aline 619 285 aline 714 190 aline 809 142 aline 952 95 aline 761 190 aline 666 285 aline 619 428 aline 619 571 aline 666 714 aline 761 809 aline 952 904 aline 809 857 aline 714 809 aline 619 714 aline 571 571 aline 523 714 aline 428 809 aline 333 857 aline 190 904 aline 380 809 aline 476 714 aline 523 571 aline 523 428 aline 476 285 aline 380 190 aline 190 95 amove 142 476 aline 1000 476 amove 1000 523 aline 142 523 stroke dfont endchar dfont char=102 amove 142 380 aline 238 476 amove 142 476 aline 238 476 aline 238 380 aline 142 380 aline 142 476 aline 238 380 stroke dfont endchar dfont char=103 amove 142 428 aline 285 380 aline 476 285 aline 571 190 aline 619 95 amove 523 -143 aline 571 -96 aline 619 -1 aline 619 95 aline 571 238 aline 476 333 aline 333 428 aline 142 523 amove 142 476 aline 428 333 stroke dfont endchar dfont char=104 amove 142 333 aline 333 428 aline 476 523 aline 571 619 aline 619 761 aline 619 857 aline 571 952 aline 523 1000 amove 619 761 aline 571 666 aline 476 571 aline 285 476 aline 142 428 amove 142 380 aline 428 523 stroke dfont endchar dfont char=105 amove 190 238 aline 428 190 amove 285 190 aline 523 238 aline 761 333 amove 809 428 aline 619 238 amove 761 619 aline 523 666 aline 666 666 aline 761 619 aline 809 523 aline 809 428 aline 761 333 aline 619 238 aline 428 190 aline 285 190 aline 190 238 aline 142 333 aline 142 428 aline 190 523 aline 333 619 aline 523 666 amove 666 666 aline 428 619 aline 190 523 amove 142 428 aline 333 619 stroke dfont endchar dfont char=106 amove 190 238 aline 428 190 amove 285 190 aline 523 238 aline 761 333 amove 809 428 aline 619 238 amove 761 619 aline 523 666 aline 666 666 aline 761 619 aline 809 523 aline 809 428 aline 761 333 aline 619 238 aline 428 190 aline 285 190 aline 190 238 aline 142 333 aline 142 428 aline 190 523 aline 333 619 aline 523 666 amove 666 666 aline 428 619 aline 190 523 amove 142 428 aline 333 619 stroke dfont endchar dfont char=107 amove 238 238 aline 619 428 amove 666 523 aline 190 285 amove 142 333 aline 619 571 amove 571 619 aline 190 428 amove 238 523 aline 523 666 amove 428 666 aline 285 619 aline 190 523 aline 142 428 aline 142 333 aline 190 238 aline 285 190 aline 380 190 aline 523 238 aline 619 333 aline 666 428 aline 666 523 aline 619 619 aline 523 666 aline 428 666 amove 571 333 aline 285 190 stroke dfont endchar dfont char=108 amove 142 142 aline 619 238 amove 619 285 aline 142 190 amove 238 -143 aline 238 952 amove 523 1000 aline 523 -96 amove 142 571 aline 619 666 amove 619 714 aline 142 619 stroke dfont endchar dfont char=109 amove 190 142 aline 190 1000 amove 190 619 aline 571 714 aline 571 -143 amove 571 238 aline 190 142 amove 190 190 aline 571 285 amove 571 666 aline 190 571 stroke dfont endchar dfont char=110 amove 190 190 aline 190 1190 amove 190 619 aline 333 714 aline 476 714 aline 571 666 aline 619 571 aline 619 476 aline 571 380 aline 428 285 aline 333 238 aline 190 190 amove 428 285 aline 523 380 aline 571 476 aline 571 571 aline 523 666 amove 571 619 aline 476 666 aline 333 666 aline 190 619 stroke dfont endchar dfont char=111 amove 142 714 aline 142 857 aline 1095 857 aline 1095 714 aline 142 714 amove 142 761 aline 1095 761 amove 1095 809 aline 142 809 stroke dfont endchar dfont char=112 amove 142 476 aline 142 619 aline 619 619 aline 619 476 aline 142 476 amove 142 523 aline 619 523 amove 619 571 aline 142 571 stroke dfont endchar dfont char=113 amove 142 142 aline 238 142 amove 190 95 aline 190 238 amove 142 190 aline 428 285 amove 523 238 aline 285 285 aline 238 190 aline 238 95 aline 142 95 aline 142 190 aline 190 238 aline 285 285 aline 428 285 aline 523 238 aline 619 142 aline 142 714 aline 238 619 aline 333 571 aline 476 571 aline 571 619 aline 619 666 aline 619 761 aline 523 761 aline 523 666 aline 476 571 aline 238 619 amove 333 571 aline 619 666 amove 619 714 aline 523 714 amove 571 761 aline 571 619 stroke dfont endchar dfont char=114 amove 619 95 aline 619 714 aline 523 619 aline 428 571 aline 285 571 aline 190 619 aline 142 666 aline 142 761 aline 238 761 aline 238 666 aline 285 571 aline 523 619 amove 428 571 aline 142 666 amove 142 714 aline 238 714 amove 190 761 aline 190 619 stroke dfont endchar dfont char=115 amove 428 0 aline 285 142 aline 238 238 aline 190 428 aline 190 619 aline 238 761 aline 285 857 aline 380 1000 aline 523 1142 aline 761 1333 aline 952 1523 amove 904 904 aline 1000 857 aline 1095 761 aline 1142 666 aline 1190 523 aline 1190 333 aline 1142 190 aline 1047 47 aline 952 0 aline 809 -48 amove 571 190 aline 476 285 aline 428 428 aline 428 619 aline 476 761 aline 571 857 aline 714 904 aline 904 904 aline 1047 857 aline 1142 761 aline 1190 666 aline 1238 523 aline 1238 333 aline 1190 190 aline 1095 47 aline 1000 0 aline 809 -48 aline 619 -48 aline 428 0 aline 285 95 aline 190 238 aline 142 428 aline 142 619 aline 190 809 aline 238 904 aline 333 1047 aline 428 1142 aline 714 1333 aline 952 1523 aline 1047 1666 aline 1095 1761 aline 1142 1904 aline 1142 2095 aline 1095 2190 aline 1000 2238 aline 952 2238 aline 857 2190 aline 809 2095 aline 761 1857 aline 761 1523 aline 809 285 aline 809 -239 aline 761 -429 aline 714 -524 aline 619 -620 aline 476 -667 aline 380 -667 aline 285 -620 aline 238 -524 aline 238 -429 aline 285 -381 aline 333 -381 aline 380 -429 aline 380 -477 aline 333 -524 aline 285 -524 amove 285 -429 aline 285 -477 aline 333 -477 aline 333 -429 aline 285 -429 stroke dfont endchar dfont char=116 amove 428 380 aline 476 285 aline 571 238 aline 666 238 aline 761 285 aline 809 380 aline 809 476 aline 761 571 aline 666 619 aline 571 619 aline 476 571 aline 428 523 aline 380 380 aline 380 238 aline 428 95 aline 523 -1 aline 666 -48 aline 809 -48 aline 952 -1 aline 1047 95 aline 1095 190 aline 1142 333 aline 1142 523 aline 1095 666 aline 1000 809 aline 904 857 aline 761 904 aline 619 904 aline 476 857 aline 380 809 aline 285 714 aline 190 571 aline 142 380 aline 142 142 aline 190 -96 aline 285 -286 aline 380 -381 aline 523 -477 aline 714 -524 aline 952 -524 aline 1142 -477 aline 1285 -381 aline 1380 -286 aline 1238 -381 aline 1142 -429 aline 952 -477 aline 761 -477 aline 571 -429 aline 428 -334 aline 333 -239 aline 238 -48 aline 190 142 aline 190 428 aline 238 619 aline 285 714 amove 476 523 aline 761 523 amove 714 571 aline 523 571 amove 428 476 aline 809 476 amove 809 428 aline 428 428 amove 428 380 aline 809 380 amove 761 333 aline 476 333 amove 523 285 aline 714 285 amove 1333 238 aline 1333 142 aline 1428 142 aline 1428 238 aline 1333 238 amove 1380 238 aline 1380 142 amove 1333 190 aline 1428 190 amove 1380 619 aline 1380 714 amove 1333 714 aline 1333 619 aline 1428 619 aline 1428 714 aline 1333 714 amove 1333 666 aline 1428 666 stroke dfont endchar dfont char=117 amove 428 95 aline 904 190 amove 904 238 aline 428 142 amove 428 190 aline 904 285 amove 904 666 aline 428 571 amove 428 619 aline 904 714 amove 904 761 aline 428 666 amove 428 1285 aline 428 -429 amove 190 -429 aline 190 1285 amove 904 1285 aline 904 -429 amove 1142 -429 aline 1142 1285 stroke dfont endchar dfont char=118 amove 380 190 aline 285 238 aline 238 285 aline 190 380 aline 190 523 aline 238 619 amove 380 666 aline 238 619 aline 190 571 aline 142 476 aline 142 380 aline 190 285 aline 238 238 aline 380 190 aline 571 190 aline 714 238 aline 761 285 aline 809 380 aline 809 476 aline 761 571 aline 714 619 aline 571 666 aline 380 666 amove 571 666 aline 666 619 aline 714 571 aline 761 476 aline 761 333 aline 714 238 stroke dfont endchar dfont char=119 amove 190 238 aline 428 190 amove 285 190 aline 523 238 aline 761 333 amove 809 428 aline 619 238 amove 761 619 aline 523 666 aline 666 666 aline 761 619 aline 809 523 aline 809 428 aline 761 333 aline 619 238 aline 428 190 aline 285 190 aline 190 238 aline 142 333 aline 142 428 aline 190 523 aline 333 619 aline 523 666 amove 666 666 aline 428 619 aline 190 523 amove 142 428 aline 333 619 stroke dfont endchar dfont char=120 amove 238 238 aline 619 428 amove 666 523 aline 190 285 amove 142 333 aline 619 571 amove 571 619 aline 190 428 amove 238 523 aline 523 666 amove 428 666 aline 285 619 aline 190 523 aline 142 428 aline 142 333 aline 190 238 aline 285 190 aline 380 190 aline 523 238 aline 619 333 aline 666 428 aline 666 523 aline 619 619 aline 523 666 aline 428 666 amove 571 333 aline 285 190 stroke dfont endchar dfont char=121 amove 142 142 aline 619 238 amove 619 285 aline 142 190 amove 238 -143 aline 238 952 amove 523 1000 aline 523 -96 amove 142 571 aline 619 666 amove 619 714 aline 142 619 stroke dfont endchar dfont char=122 amove 190 142 aline 190 1000 amove 190 619 aline 571 714 aline 571 -143 amove 571 238 aline 190 142 amove 190 190 aline 571 285 amove 571 666 aline 190 571 stroke dfont endchar dfont char=123 amove 190 190 aline 190 1190 amove 190 619 aline 333 714 aline 476 714 aline 571 666 aline 619 571 aline 619 476 aline 571 380 aline 428 285 aline 333 238 aline 190 190 amove 428 285 aline 523 380 aline 571 476 aline 571 571 aline 523 666 amove 571 619 aline 476 666 aline 333 666 aline 190 619 stroke dfont endchar dfont char=124 amove 142 714 aline 142 857 aline 1095 857 aline 1095 714 aline 142 714 amove 142 761 aline 1095 761 amove 1095 809 aline 142 809 stroke dfont endchar dfont char=125 amove 142 476 aline 142 619 aline 619 619 aline 619 476 aline 142 476 amove 142 523 aline 619 523 amove 619 571 aline 142 571 stroke dfont endchar dfont char=126 amove 190 -96 aline 285 47 aline 428 142 amove 523 95 aline 380 285 aline 285 428 aline 476 761 aline 476 857 amove 523 714 aline 333 380 amove 380 285 aline 380 333 aline 571 666 aline 333 1142 amove 619 -48 aline 523 95 aline 428 142 aline 333 142 aline 238 95 aline 190 0 aline 190 -96 aline 238 -191 aline 380 -286 aline 285 -191 aline 238 -96 aline 238 95 aline 428 95 aline 523 47 aline 619 -48 stroke dfont endchar dfont char=127 amove 428 95 aline 619 714 aline 523 619 aline 428 571 aline 285 571 aline 190 619 aline 142 666 aline 142 761 aline 238 761 aline 238 666 aline 285 571 aline 523 619 amove 428 571 aline 142 666 amove 142 714 aline 238 714 amove 190 761 aline 190 619 stroke dfont endchar dfont char=128 amove 285 333 aline 571 333 amove 619 380 aline 238 380 amove 238 428 aline 619 428 amove 619 476 aline 238 476 aline 285 571 aline 380 619 aline 476 619 aline 571 571 aline 619 476 aline 619 380 aline 571 285 aline 476 238 aline 380 238 aline 285 285 aline 238 333 aline 190 476 aline 190 619 aline 238 761 aline 333 857 aline 476 904 aline 666 904 aline 857 857 aline 1000 761 aline 1095 619 aline 1142 428 aline 1142 190 aline 1095 0 aline 1047 -96 aline 952 -239 aline 809 -381 aline 619 -524 aline 380 -667 aline 190 -762 amove 380 -667 aline 523 -572 aline 761 -381 aline 904 -239 aline 1000 -96 aline 1047 -1 aline 1095 190 aline 1095 428 aline 1047 619 aline 952 761 aline 809 857 aline 666 904 amove 523 571 aline 333 571 amove 285 523 aline 571 523 amove 523 285 aline 333 285 amove 1333 238 aline 1333 142 aline 1428 142 aline 1428 238 aline 1333 238 amove 1380 238 aline 1380 142 amove 1333 190 aline 1428 190 amove 1380 619 aline 1380 714 amove 1333 714 aline 1333 619 aline 1428 619 aline 1428 714 aline 1333 714 amove 1333 666 aline 1428 666 stroke dfont endchar dfont char=129 amove 190 -524 aline 190 1380 amove 238 1380 aline 238 -524 amove 428 -524 aline 428 1380 amove 619 1190 aline 714 1190 aline 714 1095 aline 619 1095 aline 619 1238 aline 666 1333 aline 761 1380 aline 904 1380 aline 1000 1333 aline 1095 1238 aline 1142 1095 aline 1142 857 aline 1095 714 aline 1000 619 aline 904 571 aline 809 571 aline 714 619 aline 666 714 aline 619 619 aline 523 476 aline 476 428 aline 523 380 aline 619 238 aline 666 142 aline 714 238 aline 809 285 aline 904 285 aline 1000 238 aline 1095 142 aline 1142 0 aline 1142 -239 aline 1095 -381 aline 1000 -477 aline 904 -524 aline 761 -524 aline 666 -477 aline 619 -381 aline 619 -239 aline 714 -239 aline 714 -334 aline 619 -334 amove 666 -334 aline 666 -239 amove 619 -286 aline 714 -286 amove 1000 -477 aline 1047 -381 aline 1095 -239 aline 1095 0 aline 1047 142 aline 1000 238 amove 666 142 aline 666 238 aline 571 380 aline 476 428 aline 571 476 aline 666 619 aline 666 714 amove 1000 619 aline 1047 714 aline 1095 857 aline 1095 1095 aline 1047 1238 aline 1000 1333 amove 714 1142 aline 619 1142 amove 666 1190 aline 666 1095 stroke dfont endchar dfont char=130 amove 142 -334 aline 571 -334 amove 380 -334 aline 380 1190 amove 333 1190 aline 333 -334 amove 1047 -334 aline 1476 -334 amove 1285 -334 aline 1285 1190 amove 1238 1190 aline 1238 -334 amove 1476 1190 aline 142 1190 stroke dfont endchar dfont char=131 amove 238 -286 aline 1238 -286 amove 1190 -334 aline 1333 0 aline 1238 -334 aline 190 -334 aline 714 523 aline 238 1190 amove 190 1190 aline 666 523 amove 666 476 aline 142 1190 aline 1238 1190 aline 1333 857 aline 1190 1190 stroke dfont endchar dfont char=132 amove 571 -1143 aline 476 -905 aline 380 -620 aline 333 -429 aline 285 -143 aline 238 238 aline 238 619 aline 285 1000 aline 333 1285 aline 380 1476 aline 476 1761 aline 571 2000 amove 714 2285 aline 571 2000 aline 428 1666 aline 333 1428 aline 285 1238 aline 238 1000 aline 190 619 aline 190 238 aline 238 -143 aline 285 -381 aline 333 -572 aline 428 -810 aline 571 -1143 aline 714 -1429 stroke dfont endchar dfont char=133 amove 285 -1143 aline 380 -905 aline 476 -620 aline 523 -429 aline 571 -143 aline 619 238 aline 619 619 aline 571 1000 aline 523 1285 aline 476 1476 aline 380 1761 aline 285 2000 amove 142 2285 aline 285 2000 aline 428 1666 aline 523 1428 aline 571 1238 aline 619 1000 aline 666 619 aline 666 238 aline 619 -143 aline 571 -381 aline 523 -572 aline 428 -810 aline 285 -1143 aline 142 -1429 stroke dfont endchar dfont char=134 amove 190 -1429 aline 190 428 aline 190 2285 aline 714 2285 amove 238 2285 aline 238 428 aline 238 -1429 amove 190 -1429 aline 714 -1429 stroke dfont endchar dfont char=135 amove 142 -1429 aline 666 -1429 aline 666 428 aline 666 2285 aline 142 2285 amove 619 2285 aline 619 428 aline 619 -1429 stroke dfont endchar dfont char=136 amove 476 -143 aline 428 -286 aline 380 -524 aline 380 -715 aline 428 -953 aline 476 -1096 aline 571 -1286 amove 666 -1429 aline 476 -1143 aline 380 -953 aline 333 -715 aline 333 -524 aline 380 -334 aline 571 47 aline 571 142 aline 523 238 aline 476 285 aline 238 428 aline 476 571 aline 523 619 aline 571 714 aline 571 809 aline 380 1190 aline 333 1380 aline 333 1571 aline 380 1809 aline 476 2000 aline 666 2285 amove 571 2142 aline 476 1952 aline 428 1809 aline 380 1571 aline 380 1380 aline 428 1142 aline 476 999 stroke dfont endchar dfont char=137 amove 428 -143 aline 476 -286 aline 523 -524 aline 523 -715 aline 476 -953 aline 428 -1096 aline 333 -1286 amove 238 -1429 aline 428 -1143 aline 523 -953 aline 571 -715 aline 571 -524 aline 523 -334 aline 333 47 aline 333 142 aline 380 238 aline 428 285 aline 666 428 aline 428 571 aline 380 619 aline 333 714 aline 333 809 aline 523 1190 aline 571 1380 aline 571 1571 aline 523 1809 aline 428 2000 aline 238 2285 amove 333 2142 aline 428 1952 aline 476 1809 aline 523 1571 aline 523 1380 aline 476 1142 aline 428 999 stroke dfont endchar dfont char=138 amove 380 -1143 aline 476 -953 aline 523 -810 aline 571 -572 aline 571 -334 aline 523 -48 aline 476 142 aline 333 666 aline 285 857 aline 238 1142 aline 238 1428 aline 285 1666 aline 380 1857 aline 476 2000 aline 619 2142 amove 476 2000 aline 380 1809 aline 333 1666 aline 285 1428 aline 285 1190 aline 333 904 aline 380 714 aline 523 190 aline 571 0 aline 619 -286 aline 619 -572 aline 571 -810 aline 476 -1000 aline 380 -1143 aline 238 -1286 stroke dfont endchar dfont char=139 amove 476 -1143 aline 380 -953 aline 333 -810 aline 285 -572 aline 285 -334 aline 333 -48 aline 380 142 aline 523 666 aline 571 857 aline 619 1142 aline 619 1428 aline 571 1666 aline 476 1857 aline 380 2000 aline 238 2142 amove 380 2000 aline 476 1809 aline 523 1666 aline 571 1428 aline 571 1190 aline 523 904 aline 476 714 aline 333 190 aline 285 0 aline 238 -286 aline 238 -572 aline 285 -810 aline 380 -1000 aline 476 -1143 aline 619 -1286 stroke dfont endchar dfont char=140 amove 142 428 aline 476 428 aline 1285 -953 amove 1238 -953 aline 428 428 amove 380 428 aline 1285 -1096 aline 1476 809 aline 1666 2714 stroke dfont endchar dfont char=141 amove 714 -715 aline 714 1571 amove 857 2142 aline 809 2000 aline 761 1571 aline 761 47 aline 714 -715 aline 666 -1048 aline 619 -1191 aline 571 -1286 aline 476 -1381 aline 380 -1429 aline 285 -1429 aline 190 -1381 aline 142 -1286 aline 142 -1191 aline 190 -1143 aline 238 -1143 aline 285 -1191 aline 285 -1239 aline 238 -1286 aline 190 -1286 amove 190 -1191 aline 190 -1239 aline 238 -1239 aline 238 -1191 aline 190 -1191 amove 571 -1286 aline 619 -1143 aline 666 -715 aline 666 809 aline 714 1571 aline 761 1904 aline 809 2047 aline 857 2142 aline 952 2238 aline 1047 2285 aline 1142 2285 aline 1238 2238 aline 1285 2142 aline 1285 2047 aline 1238 2000 aline 1190 2000 aline 1142 2047 aline 1142 2095 aline 1190 2142 aline 1238 2142 amove 1190 2095 aline 1190 2047 aline 1238 2047 aline 1238 2095 aline 1190 2095 stroke dfont endchar gle-graphics-4.2.4c/src/fonts/plti.gle0000664000000000000000000012344111676336540016332 0ustar rootrootdfont design= 1428 dfont char=33 amove 142 95 aline 142 47 aline 190 47 aline 190 95 aline 142 95 amove 142 142 aline 95 95 aline 95 47 aline 142 0 aline 190 0 aline 238 47 aline 238 95 aline 190 142 aline 142 142 amove 238 333 aline 428 904 aline 428 952 aline 380 952 aline 238 333 aline 333 952 aline 380 1000 aline 428 1000 aline 476 952 aline 476 904 aline 238 333 stroke dfont endchar dfont char=34 amove 285 666 aline 380 714 aline 428 761 aline 476 857 aline 476 952 aline 428 1000 aline 380 1000 aline 333 952 aline 333 904 aline 380 857 aline 428 857 aline 428 809 aline 380 714 amove 380 952 aline 380 904 aline 428 904 aline 428 952 aline 380 952 stroke dfont endchar stroke dfont endchar dfont char=36 amove 190 -191 aline 571 1190 amove 809 1190 aline 428 -191 amove 666 47 aline 714 142 aline 714 285 aline 666 380 aline 380 523 aline 285 619 aline 238 714 aline 238 857 aline 333 952 aline 476 1000 aline 666 1000 aline 809 952 aline 857 904 aline 904 809 aline 904 714 aline 809 714 aline 809 809 aline 857 809 aline 857 761 amove 714 333 aline 666 428 aline 333 619 aline 285 714 amove 333 952 aline 285 857 aline 285 761 aline 333 666 aline 619 523 aline 714 428 aline 761 333 aline 761 190 aline 714 95 aline 666 47 aline 523 0 aline 333 0 aline 190 47 aline 142 95 aline 95 190 aline 95 285 aline 190 285 aline 190 190 aline 142 190 aline 142 238 stroke dfont endchar dfont char=37 amove 142 0 aline 1000 1000 aline 904 952 aline 761 904 aline 619 904 aline 476 952 aline 380 1000 aline 285 1000 aline 190 952 aline 142 857 aline 142 761 aline 238 666 aline 333 666 aline 428 714 aline 476 809 aline 476 904 aline 380 1000 amove 809 333 aline 714 285 aline 666 190 aline 666 95 aline 761 0 aline 857 0 aline 952 47 aline 1000 142 aline 1000 238 aline 904 333 aline 809 333 stroke dfont endchar stroke dfont endchar dfont char=39 amove 333 761 aline 333 714 aline 380 714 aline 380 761 aline 333 761 amove 333 809 aline 380 809 aline 428 761 aline 428 714 aline 380 666 aline 333 666 aline 285 714 aline 285 809 aline 333 904 aline 380 952 aline 476 1000 amove 380 952 aline 333 857 aline 333 809 stroke dfont endchar dfont char=40 amove 190 -48 aline 190 333 aline 238 571 aline 333 761 aline 428 904 amove 761 1190 aline 619 1095 aline 476 952 aline 380 809 aline 333 714 aline 285 571 aline 238 380 aline 190 -48 amove 333 -334 aline 238 -191 aline 190 -48 aline 142 142 aline 142 380 aline 190 571 aline 285 761 aline 380 904 aline 523 1047 aline 666 1142 aline 761 1190 amove 190 333 aline 238 -96 aline 285 -239 aline 333 -334 stroke dfont endchar dfont char=41 amove 0 -334 aline 95 -286 aline 238 -191 aline 380 -48 aline 476 95 aline 571 285 aline 619 476 aline 619 714 aline 571 904 aline 523 1047 aline 428 1190 aline 476 1095 aline 523 952 aline 571 523 amove 571 904 aline 523 476 aline 476 285 aline 428 142 aline 380 47 aline 285 -96 aline 142 -239 aline -1 -334 amove 333 -48 aline 428 95 aline 523 285 aline 571 523 aline 571 904 stroke dfont endchar dfont char=42 amove 238 666 aline 380 952 amove 380 1000 aline 333 952 aline 238 666 aline 428 952 aline 380 1000 amove 714 666 aline 857 952 amove 857 1000 aline 809 952 aline 714 666 aline 904 952 aline 857 1000 stroke dfont endchar dfont char=43 amove 190 476 aline 1000 476 aline 1000 428 aline 190 428 aline 190 476 amove 571 857 aline 571 47 aline 619 47 aline 619 857 aline 571 857 stroke dfont endchar dfont char=44 amove 142 95 aline 142 47 aline 190 47 aline 190 95 aline 142 95 amove 190 0 aline 142 0 aline 95 47 aline 95 95 aline 142 142 aline 190 142 aline 238 95 aline 238 0 aline 190 -96 aline 142 -143 aline 47 -191 amove 142 -143 aline 190 -48 aline 190 0 stroke dfont endchar dfont char=45 amove 190 476 aline 1000 476 aline 1000 428 aline 190 428 aline 190 476 stroke dfont endchar dfont char=46 amove 142 95 aline 142 47 aline 190 47 aline 190 95 aline 142 95 amove 142 142 aline 95 95 aline 95 47 aline 142 0 aline 190 0 aline 238 47 aline 238 95 aline 190 142 aline 142 142 stroke dfont endchar dfont char=47 amove -48 -334 aline -96 -334 aline 1142 1190 aline 1190 1190 aline -48 -334 stroke dfont endchar dfont char=48 amove 238 95 aline 190 190 aline 190 380 aline 238 571 aline 285 714 aline 333 809 aline 428 904 amove 571 1000 aline 666 1000 aline 761 952 aline 809 904 aline 857 761 aline 857 619 aline 809 428 aline 761 285 aline 666 142 aline 571 47 aline 428 0 aline 333 0 aline 238 47 aline 190 95 aline 142 238 aline 142 380 aline 190 571 aline 238 714 aline 333 857 aline 428 952 aline 571 1000 aline 476 952 aline 380 809 aline 333 714 aline 285 571 aline 238 380 aline 238 142 aline 285 47 aline 333 0 amove 428 0 aline 523 47 aline 619 190 aline 666 285 aline 714 428 aline 761 619 aline 761 857 aline 714 952 aline 666 1000 amove 761 904 aline 809 809 aline 809 619 aline 761 428 aline 714 285 aline 666 190 aline 571 95 stroke dfont endchar dfont char=49 amove 380 0 aline 619 809 aline 714 1000 aline 428 0 aline 333 0 aline 571 809 aline 476 761 aline 333 714 aline 428 761 aline 571 857 aline 714 1000 stroke dfont endchar dfont char=50 amove 47 0 aline 142 190 aline 238 285 aline 714 571 aline 809 666 aline 857 761 aline 857 857 aline 809 952 aline 666 1000 aline 523 1000 aline 380 952 aline 333 904 aline 285 809 aline 285 714 aline 380 714 aline 380 809 aline 333 809 aline 333 761 amove 523 476 aline 666 571 aline 761 666 aline 809 761 aline 809 857 aline 761 952 amove 666 1000 aline 714 952 aline 761 857 aline 761 761 aline 714 666 aline 619 571 aline 238 285 amove 238 142 aline 476 47 aline 714 47 amove 761 142 aline 714 95 aline 476 95 aline 238 142 aline 142 142 aline 95 95 amove 238 142 aline 476 0 aline 619 0 aline 714 47 aline 761 142 aline 761 190 stroke dfont endchar dfont char=51 amove 142 238 aline 142 190 aline 190 190 aline 190 285 aline 95 285 aline 95 190 aline 142 95 aline 190 47 aline 333 0 aline 476 0 aline 619 47 aline 714 95 aline 761 190 aline 761 333 aline 714 428 aline 666 476 aline 523 523 aline 428 523 amove 523 523 aline 666 571 aline 761 619 aline 809 666 aline 857 761 aline 857 857 aline 809 952 aline 666 1000 aline 523 1000 aline 380 952 aline 333 904 aline 285 809 aline 285 714 aline 380 714 aline 380 809 aline 333 809 aline 333 761 amove 523 523 aline 619 571 aline 714 666 aline 761 761 aline 761 857 aline 714 952 aline 666 1000 amove 761 952 aline 809 857 aline 809 761 aline 761 666 aline 714 619 amove 666 428 aline 714 333 aline 714 190 aline 666 95 amove 476 0 aline 571 47 aline 619 95 aline 666 190 aline 666 380 aline 619 476 aline 523 523 stroke dfont endchar dfont char=52 amove 523 0 aline 761 809 aline 857 1000 aline 571 0 aline 476 0 aline 714 809 amove 857 1000 aline 95 285 aline 857 285 stroke dfont endchar dfont char=53 amove 142 238 aline 142 190 aline 190 190 aline 190 285 aline 95 285 aline 95 190 aline 142 95 aline 190 47 aline 285 0 aline 428 0 aline 619 47 aline 714 142 aline 761 285 aline 761 428 aline 714 523 aline 666 571 aline 523 619 aline 380 619 aline 238 571 aline 190 523 aline 428 1000 aline 904 1000 aline 809 952 aline 619 904 aline 380 904 amove 428 952 aline 809 952 amove 523 619 aline 619 571 aline 666 476 aline 666 285 aline 619 142 aline 523 47 aline 428 0 amove 571 47 aline 666 142 aline 714 285 aline 714 428 aline 666 523 stroke dfont endchar dfont char=54 amove 238 95 aline 190 190 aline 190 380 aline 238 571 aline 285 714 aline 380 857 amove 571 1000 aline 476 952 aline 380 809 aline 333 714 aline 285 571 aline 238 380 aline 238 142 aline 285 47 aline 333 0 amove 476 0 aline 571 47 aline 619 95 aline 666 238 aline 666 428 aline 619 523 aline 571 571 amove 666 476 aline 714 380 aline 714 238 aline 666 142 amove 238 380 aline 285 476 aline 333 523 aline 428 571 aline 571 571 aline 666 523 aline 714 476 aline 761 380 aline 761 238 aline 714 142 aline 619 47 aline 476 0 aline 333 0 aline 238 47 aline 190 95 aline 142 238 aline 142 380 aline 190 571 aline 238 714 aline 333 857 aline 428 952 aline 571 1000 aline 714 1000 aline 809 952 aline 857 857 aline 857 761 aline 761 761 aline 761 857 aline 809 857 aline 809 809 stroke dfont endchar dfont char=55 amove 333 0 aline 380 190 aline 476 380 amove 380 0 aline 285 0 aline 333 190 aline 380 285 aline 476 428 aline 761 714 amove 714 857 aline 476 1000 aline 380 1000 aline 238 857 aline 333 904 aline 476 904 aline 714 857 aline 809 857 aline 857 904 aline 904 999 aline 857 857 aline 761 714 aline 571 476 aline 476 333 aline 428 190 aline 380 -1 amove 190 714 aline 285 999 amove 333 952 aline 476 952 aline 714 857 stroke dfont endchar dfont char=56 amove 142 47 aline 380 0 aline 666 47 amove 666 95 aline 714 190 aline 714 333 aline 666 428 amove 666 476 aline 523 523 aline 714 571 amove 761 619 aline 809 714 aline 809 857 aline 761 952 amove 809 952 aline 619 1000 aline 380 952 amove 380 904 aline 333 809 aline 333 619 aline 380 571 amove 333 571 aline 476 523 aline 238 476 amove 285 476 aline 190 380 aline 142 285 aline 142 142 aline 190 47 amove 285 -1 aline 238 47 aline 190 142 aline 190 285 aline 238 380 aline 333 476 aline 428 523 aline 380 619 aline 380 809 aline 428 904 aline 523 999 aline 714 999 aline 809 952 aline 857 857 aline 857 714 aline 809 619 aline 714 571 aline 571 523 aline 428 523 aline 333 571 aline 285 666 aline 285 809 aline 333 904 aline 380 952 aline 523 1000 amove 714 1000 aline 761 904 aline 761 714 aline 714 619 aline 666 571 aline 571 523 aline 666 476 aline 714 428 aline 761 333 aline 761 190 aline 714 95 aline 666 47 aline 476 -1 aline 285 -1 aline 142 47 aline 95 142 aline 95 285 aline 142 380 aline 238 476 aline 428 523 amove 571 523 aline 619 476 aline 666 380 aline 666 190 aline 619 95 aline 571 47 aline 476 0 stroke dfont endchar dfont char=57 amove 190 190 aline 190 142 aline 238 142 aline 238 238 aline 142 238 aline 142 142 aline 190 47 aline 285 0 aline 428 0 aline 571 47 aline 666 142 aline 761 285 aline 809 428 aline 857 619 aline 857 761 aline 809 904 aline 761 952 aline 666 1000 aline 523 1000 aline 380 952 aline 285 857 aline 238 761 aline 238 619 aline 285 523 aline 333 476 aline 428 428 aline 571 428 aline 666 476 aline 714 523 aline 761 619 amove 761 904 aline 809 809 aline 809 619 aline 761 428 aline 714 285 aline 619 142 amove 428 0 aline 523 47 aline 619 190 aline 666 285 aline 714 428 aline 761 619 aline 761 857 aline 714 952 aline 666 1000 amove 523 1000 aline 428 952 aline 380 904 aline 333 761 aline 333 571 aline 380 476 aline 428 428 amove 333 523 aline 285 619 aline 285 761 aline 333 857 stroke dfont endchar dfont char=58 amove 142 95 aline 142 47 aline 190 47 aline 190 95 aline 142 95 amove 142 142 aline 95 95 aline 95 47 aline 142 0 aline 190 0 aline 238 47 aline 238 95 aline 190 142 aline 142 142 amove 285 619 aline 285 571 aline 333 571 aline 333 619 aline 285 619 amove 285 666 aline 238 619 aline 238 571 aline 285 523 aline 333 523 aline 380 571 aline 380 619 aline 333 666 aline 285 666 stroke dfont endchar dfont char=59 amove 142 95 aline 142 47 aline 190 47 aline 190 95 aline 142 95 amove 190 0 aline 142 0 aline 95 47 aline 95 95 aline 142 142 aline 190 142 aline 238 95 aline 238 0 aline 190 -96 aline 142 -143 aline 47 -191 amove 142 -143 aline 190 -48 aline 190 0 amove 285 619 aline 285 571 aline 333 571 aline 333 619 aline 285 619 amove 285 666 aline 238 619 aline 238 571 aline 285 523 aline 333 523 aline 380 571 aline 380 619 aline 333 666 aline 285 666 stroke dfont endchar dfont char=60 amove 952 857 aline 190 428 aline 952 0 stroke dfont endchar dfont char=61 amove 190 285 aline 1000 285 aline 1000 238 aline 190 238 aline 190 285 amove 190 666 aline 1000 666 aline 1000 619 aline 190 619 aline 190 666 stroke dfont endchar dfont char=62 amove 190 0 aline 952 428 aline 190 857 stroke dfont endchar dfont char=63 amove 380 95 aline 380 47 aline 428 47 aline 428 95 aline 380 95 amove 380 142 aline 333 95 aline 333 47 aline 380 0 aline 428 0 aline 476 47 aline 476 95 aline 428 142 aline 380 142 amove 523 333 aline 476 380 aline 476 476 aline 523 523 aline 714 619 aline 761 666 aline 809 761 aline 809 857 aline 761 952 aline 714 1000 amove 619 1000 aline 857 952 amove 809 952 aline 857 857 aline 857 761 aline 809 666 aline 761 619 aline 666 571 amove 571 333 aline 523 333 aline 428 380 aline 428 476 aline 523 523 aline 714 571 aline 809 619 aline 857 666 aline 904 761 aline 904 857 aline 857 952 aline 714 1000 aline 523 1000 aline 380 952 aline 333 904 aline 285 809 aline 285 714 aline 380 714 aline 380 809 aline 333 809 aline 333 761 stroke dfont endchar dfont char=64 amove 523 238 aline 476 285 aline 428 380 aline 428 523 aline 476 666 aline 571 761 amove 857 761 aline 809 380 aline 809 285 aline 904 238 aline 999 238 aline 1095 333 aline 1142 476 aline 1142 571 aline 1095 714 aline 1047 809 aline 952 904 aline 857 952 aline 714 1000 aline 571 1000 aline 428 952 aline 333 904 aline 238 809 aline 190 714 aline 142 571 aline 142 428 aline 190 285 aline 238 190 aline 333 95 aline 428 47 aline 571 0 aline 714 0 aline 857 47 aline 952 95 aline 1000 142 amove 904 238 aline 857 285 aline 857 380 aline 904 761 amove 857 619 aline 809 714 aline 714 761 aline 571 761 aline 476 714 aline 428 666 aline 380 523 aline 380 380 aline 428 285 aline 523 238 aline 666 238 aline 761 285 aline 809 380 stroke dfont endchar dfont char=65 amove 0 0 aline 619 1000 aline 666 0 amove 619 0 aline 571 904 amove 619 285 aline 190 285 amove 190 0 aline -96 0 amove 476 0 aline 761 0 stroke dfont endchar dfont char=66 amove 0 0 aline 571 0 aline 761 47 aline 857 142 aline 904 285 aline 904 380 aline 857 476 aline 761 523 aline 333 523 amove 761 523 aline 904 571 aline 952 619 aline 1000 761 aline 1000 857 aline 952 952 aline 809 1000 aline 285 1000 amove 428 1000 aline 142 0 amove 190 0 aline 476 1000 amove 809 1000 aline 904 952 aline 952 857 aline 952 761 aline 904 619 aline 857 571 aline 761 523 aline 809 476 aline 857 380 aline 857 285 aline 809 142 aline 714 47 aline 571 0 stroke dfont endchar dfont char=67 amove 380 0 aline 285 47 aline 238 95 aline 190 238 aline 190 380 aline 238 571 aline 285 714 aline 380 857 aline 476 952 aline 571 1000 amove 857 904 aline 904 904 aline 952 1000 aline 904 714 aline 904 809 aline 857 904 aline 809 952 aline 714 1000 aline 571 1000 aline 428 952 aline 333 857 aline 238 714 aline 190 571 aline 142 380 aline 142 238 aline 190 95 aline 238 47 aline 380 0 aline 523 0 aline 619 47 aline 714 142 aline 761 238 stroke dfont endchar dfont char=68 amove 0 0 aline 428 0 aline 619 47 aline 714 95 aline 809 190 aline 904 380 aline 952 571 aline 952 761 aline 904 904 aline 857 952 aline 714 1000 aline 285 1000 amove 428 1000 aline 142 0 amove 190 0 aline 476 1000 amove 714 1000 aline 809 952 aline 857 904 aline 904 761 aline 904 571 aline 857 380 aline 761 190 aline 666 95 aline 571 47 aline 428 -1 stroke dfont endchar dfont char=69 amove 0 0 aline 714 0 aline 809 238 aline 666 0 amove 571 333 aline 666 714 amove 619 523 aline 333 523 amove 285 1000 aline 999 1000 aline 952 714 aline 952 1000 amove 476 1000 aline 190 0 amove 142 0 aline 428 1000 stroke dfont endchar dfont char=70 amove 0 0 aline 333 0 amove 190 0 aline 476 1000 amove 428 1000 aline 142 0 amove 571 333 aline 666 714 amove 619 523 aline 333 523 amove 285 1000 aline 999 1000 aline 952 714 aline 952 1000 stroke dfont endchar dfont char=71 amove 380 0 aline 285 47 aline 238 95 aline 190 238 aline 190 380 aline 238 571 aline 285 714 aline 380 857 aline 476 952 aline 571 1000 amove 857 904 aline 904 904 aline 952 1000 aline 904 714 aline 904 809 aline 857 904 aline 809 952 aline 714 1000 aline 571 1000 aline 428 952 aline 333 857 aline 238 714 aline 190 571 aline 142 380 aline 142 238 aline 190 95 aline 238 47 aline 380 0 aline 476 0 aline 619 47 aline 714 142 aline 809 333 amove 761 333 aline 666 142 aline 571 47 aline 476 0 amove 619 333 aline 952 333 stroke dfont endchar dfont char=72 amove 0 0 aline 333 0 amove 190 0 aline 476 1000 amove 428 1000 aline 142 0 amove 619 0 aline 952 0 amove 809 0 aline 1095 1000 amove 1047 1000 aline 761 0 amove 904 523 aline 333 523 amove 285 1000 aline 619 1000 amove 904 1000 aline 1238 1000 stroke dfont endchar dfont char=73 amove 0 0 aline 333 0 amove 190 0 aline 476 1000 amove 428 1000 aline 142 0 amove 285 1000 aline 619 1000 stroke dfont endchar dfont char=74 amove 95 190 aline 142 238 aline 95 285 aline 47 238 aline 47 142 aline 95 47 aline 190 0 aline 285 0 aline 380 47 aline 428 95 aline 476 190 aline 714 1000 amove 666 1000 aline 428 190 aline 380 95 aline 285 0 amove 523 1000 aline 857 1000 stroke dfont endchar dfont char=75 amove 0 0 aline 333 0 amove 190 0 aline 476 1000 amove 428 1000 aline 142 0 amove 285 380 aline 1095 1000 amove 1190 1000 aline 904 1000 amove 619 1000 aline 285 1000 amove 571 571 aline 761 0 amove 809 0 aline 619 571 amove 619 0 aline 904 0 stroke dfont endchar dfont char=76 amove 0 0 aline 714 0 aline 809 285 aline 666 0 amove 190 0 aline 476 1000 amove 428 1000 aline 142 0 amove 285 1000 aline 619 1000 stroke dfont endchar dfont char=77 amove 0 0 aline 285 0 amove 142 0 aline 428 1000 aline 476 0 aline 1095 1000 aline 809 0 amove 857 0 aline 1142 1000 amove 1095 1000 aline 1285 1000 amove 476 1000 aline 523 95 amove 666 -1 aline 1000 -1 amove 476 1000 aline 285 1000 stroke dfont endchar dfont char=78 amove 0 0 aline 285 0 amove 142 0 aline 428 1000 aline 761 142 amove 761 0 aline 428 857 amove 428 1000 aline 285 1000 amove 904 1000 aline 1190 1000 amove 1047 1000 aline 761 0 stroke dfont endchar dfont char=79 amove 333 0 aline 238 95 aline 190 238 aline 190 380 aline 238 571 aline 285 714 aline 380 857 aline 476 952 aline 571 1000 aline 714 1000 aline 809 952 aline 857 904 aline 904 761 aline 904 619 aline 857 428 aline 809 285 aline 714 142 aline 619 47 aline 476 -1 aline 333 -1 aline 238 47 aline 190 95 aline 142 238 aline 142 380 aline 190 571 aline 238 714 aline 333 857 aline 428 952 aline 571 1000 amove 714 1000 aline 809 904 aline 857 761 aline 857 619 aline 809 428 aline 761 285 aline 666 142 aline 571 47 aline 476 0 stroke dfont endchar dfont char=80 amove 0 0 aline 333 0 amove 190 0 aline 476 1000 amove 428 1000 aline 142 0 amove 333 476 aline 714 476 aline 904 523 aline 1000 619 aline 1047 761 aline 1047 857 aline 1000 952 aline 857 1000 aline 285 1000 amove 857 1000 aline 952 952 aline 1000 857 aline 1000 761 aline 952 619 aline 857 523 aline 714 476 stroke dfont endchar dfont char=81 amove 238 95 aline 238 142 aline 285 238 aline 380 285 aline 428 285 aline 523 238 aline 571 142 aline 571 -191 aline 619 -239 aline 714 -239 aline 761 -143 aline 761 -96 amove 761 -143 aline 714 -191 aline 666 -191 aline 619 -143 aline 571 142 amove 476 0 aline 571 47 aline 666 142 aline 761 285 aline 809 428 aline 857 619 aline 857 761 aline 809 904 aline 714 1000 amove 571 1000 aline 714 1000 aline 809 952 aline 857 904 aline 904 761 aline 904 619 aline 857 428 aline 809 285 aline 714 142 aline 619 47 aline 476 -1 aline 333 -1 aline 238 47 aline 190 95 aline 142 238 aline 142 380 aline 190 571 aline 238 714 aline 333 857 aline 428 952 aline 571 1000 aline 476 952 aline 380 857 aline 285 714 aline 238 571 aline 190 380 aline 190 238 aline 238 95 aline 333 0 stroke dfont endchar dfont char=82 amove 0 0 aline 333 0 amove 190 0 aline 476 1000 amove 428 1000 aline 142 0 amove 333 523 aline 761 523 aline 904 571 aline 952 619 aline 1000 761 aline 1000 857 aline 952 952 aline 809 1000 aline 285 1000 amove 809 1000 aline 904 952 aline 952 857 aline 952 761 aline 904 619 aline 857 571 aline 761 523 amove 714 428 aline 809 95 aline 857 47 aline 904 47 aline 952 95 amove 952 142 aline 952 95 aline 904 -1 aline 809 -1 aline 761 47 aline 714 428 aline 666 476 aline 571 523 stroke dfont endchar dfont char=83 amove 190 95 aline 142 95 aline 95 0 aline 142 285 aline 142 190 aline 190 95 aline 238 47 aline 380 0 aline 571 0 aline 714 47 aline 761 95 aline 809 190 aline 809 333 aline 761 428 aline 714 476 aline 380 666 aline 285 761 amove 904 904 aline 952 904 aline 1000 1000 aline 952 714 aline 952 809 aline 904 904 aline 857 952 aline 714 1000 aline 523 1000 aline 380 952 aline 285 857 aline 285 761 aline 333 666 aline 380 619 aline 714 428 aline 809 333 stroke dfont endchar dfont char=84 amove 190 0 aline 523 0 amove 380 0 aline 666 1000 amove 619 1000 aline 333 0 amove 333 1000 aline 190 714 aline 285 1000 aline 1000 1000 aline 952 714 aline 952 1000 stroke dfont endchar dfont char=85 amove 380 0 aline 285 47 aline 238 142 aline 238 285 aline 285 476 aline 428 1000 amove 380 1000 aline 238 476 aline 190 285 aline 190 142 aline 238 47 aline 380 0 aline 571 0 aline 714 47 aline 809 142 aline 857 285 aline 1047 1000 amove 904 1000 aline 1190 1000 amove 571 1000 aline 238 1000 stroke dfont endchar dfont char=86 amove 333 0 aline 285 1000 amove 333 1000 aline 380 95 amove 333 -1 aline 952 1000 amove 1047 1000 aline 761 1000 amove 476 1000 aline 190 1000 stroke dfont endchar dfont char=87 amove 285 0 aline 380 1000 amove 428 1000 aline 333 95 amove 285 -1 aline 761 1000 aline 666 0 aline 1142 1000 amove 1000 1000 aline 1285 1000 amove 809 1000 aline 714 95 amove 571 1000 aline 238 1000 stroke dfont endchar dfont char=88 amove 47 0 aline 1000 1000 amove 1095 1000 aline 809 1000 amove 523 1000 aline 238 1000 amove 333 1000 aline 666 0 amove 714 0 aline 380 1000 amove 238 0 aline -48 0 amove 523 0 aline 809 0 stroke dfont endchar dfont char=89 amove 190 0 aline 523 0 amove 380 0 aline 523 523 aline 333 1000 amove 285 1000 aline 476 523 aline 333 0 amove 523 523 aline 1000 1000 amove 1095 1000 aline 809 1000 amove 476 1000 aline 190 1000 stroke dfont endchar dfont char=90 amove 47 0 aline 952 1000 amove 1000 1000 aline 95 0 amove 47 0 aline 714 0 aline 809 285 aline 666 0 amove 380 1000 aline 238 714 aline 333 1000 aline 999 1000 stroke dfont endchar dfont char=91 amove 190 -334 aline 190 1190 aline 523 1190 amove 238 1190 aline 238 -334 amove 190 -334 aline 523 -334 stroke dfont endchar stroke dfont endchar dfont char=93 amove 142 -334 aline 476 -334 aline 476 1190 aline 142 1190 amove 428 1190 aline 428 -334 stroke dfont endchar stroke dfont endchar stroke dfont endchar dfont char=96 amove 238 904 aline 285 952 aline 238 1000 aline 190 952 aline 190 857 aline 238 761 aline 285 714 stroke dfont endchar dfont char=97 amove 238 47 aline 190 142 aline 190 333 aline 238 476 aline 333 619 aline 428 666 amove 761 666 aline 666 333 aline 619 142 aline 619 47 aline 666 0 aline 809 0 aline 904 95 aline 952 190 amove 714 0 aline 666 47 aline 666 142 aline 714 333 aline 809 666 amove 666 333 aline 666 476 aline 619 619 aline 523 666 aline 428 666 aline 285 619 aline 190 476 aline 142 333 aline 142 190 aline 190 95 aline 238 47 aline 333 0 aline 428 0 aline 523 47 aline 619 190 aline 666 333 stroke dfont endchar dfont char=98 amove 285 47 aline 238 95 aline 190 238 aline 190 380 aline 380 1000 amove 428 1000 aline 238 380 aline 238 190 aline 285 47 aline 380 0 aline 476 0 aline 619 47 aline 714 190 aline 761 333 aline 761 476 aline 714 571 aline 666 619 aline 571 666 aline 476 666 aline 380 619 aline 285 523 aline 238 380 amove 476 0 aline 571 47 aline 666 190 aline 714 333 aline 714 523 aline 666 619 amove 428 1000 aline 238 1000 stroke dfont endchar dfont char=99 amove 238 47 aline 190 142 aline 190 333 aline 238 476 aline 333 619 aline 428 666 amove 666 523 aline 666 476 aline 714 476 aline 714 523 aline 666 619 aline 571 666 aline 428 666 aline 285 619 aline 190 476 aline 142 333 aline 142 190 aline 190 95 aline 238 47 aline 333 0 aline 428 0 aline 571 47 aline 666 190 stroke dfont endchar dfont char=100 amove 238 47 aline 190 142 aline 190 333 aline 238 476 aline 333 619 aline 428 666 amove 666 333 aline 666 476 aline 619 619 aline 523 666 aline 428 666 aline 285 619 aline 190 476 aline 142 333 aline 142 190 aline 190 95 aline 238 47 aline 333 0 aline 428 0 aline 523 47 aline 619 190 aline 666 333 amove 952 190 aline 904 95 aline 809 0 aline 666 0 aline 619 47 aline 619 142 aline 666 333 aline 857 1000 amove 904 1000 aline 714 333 aline 666 142 aline 666 47 aline 714 0 amove 714 1000 aline 904 1000 stroke dfont endchar dfont char=101 amove 238 47 aline 190 142 aline 190 333 aline 238 476 aline 333 619 aline 428 666 amove 190 238 aline 380 285 aline 523 333 aline 666 428 aline 714 523 aline 666 619 aline 571 666 aline 428 666 aline 285 619 aline 190 476 aline 142 333 aline 142 190 aline 190 95 aline 238 47 aline 333 0 aline 428 0 aline 571 47 aline 666 142 stroke dfont endchar dfont char=102 amove -48 -286 aline -1 -239 aline -48 -191 aline -96 -239 aline -96 -286 aline -48 -334 aline 47 -334 aline 142 -286 aline 190 -239 aline 238 -143 aline 285 0 aline 333 190 aline 428 619 aline 476 809 aline 523 904 aline 619 1000 amove 714 952 aline 666 904 aline 714 857 aline 761 904 aline 761 952 aline 714 1000 aline 619 1000 aline 523 952 aline 476 904 aline 428 809 aline 380 666 aline 238 0 aline 190 -191 aline 142 -286 amove 190 666 aline 666 666 stroke dfont endchar dfont char=103 amove 238 47 aline 190 142 aline 190 333 aline 238 476 aline 333 619 aline 428 666 amove 761 666 aline 571 0 aline 523 -143 aline 428 -286 aline 333 -334 amove 95 -239 aline 142 -191 aline 95 -143 aline 47 -191 aline 47 -239 aline 95 -286 aline 190 -334 aline 333 -334 aline 476 -286 aline 571 -143 aline 619 -1 aline 809 666 amove 666 333 aline 666 476 aline 619 619 aline 523 666 aline 428 666 aline 285 619 aline 190 476 aline 142 333 aline 142 190 aline 190 95 aline 238 47 aline 333 -1 aline 428 -1 aline 523 47 aline 619 190 aline 666 333 stroke dfont endchar dfont char=104 amove 95 0 aline 380 1000 amove 428 1000 aline 142 0 amove 238 333 aline 333 523 aline 428 619 aline 523 666 aline 619 666 aline 714 619 aline 761 571 aline 761 476 aline 666 190 aline 666 47 aline 714 -1 amove 952 190 aline 904 95 aline 809 -1 aline 666 -1 aline 619 47 aline 619 190 aline 714 476 aline 714 571 aline 619 666 amove 428 999 aline 238 999 stroke dfont endchar dfont char=105 amove 333 0 aline 285 47 aline 285 190 aline 380 476 aline 380 619 aline 333 666 aline 190 666 aline 95 571 aline 47 476 amove 285 666 aline 333 619 aline 333 476 aline 238 190 aline 238 47 aline 285 0 aline 428 0 aline 523 95 aline 571 190 amove 428 1000 aline 380 952 aline 428 904 aline 476 952 aline 428 1000 stroke dfont endchar dfont char=106 amove -48 -286 aline -1 -239 aline -48 -191 aline -96 -239 aline -96 -286 aline -48 -334 aline 47 -334 aline 142 -286 aline 190 -239 aline 238 -143 aline 285 0 aline 428 476 aline 428 619 aline 380 666 aline 238 666 aline 142 571 aline 95 476 amove 333 666 aline 380 619 aline 380 476 aline 238 0 aline 190 -143 aline 142 -239 aline 47 -334 amove 476 1000 aline 428 952 aline 476 904 aline 523 952 aline 476 1000 stroke dfont endchar dfont char=107 amove 95 0 aline 380 1000 amove 428 1000 aline 142 0 amove 238 380 aline 333 380 aline 428 428 aline 619 619 aline 714 666 aline 761 666 aline 809 619 aline 809 571 aline 761 523 aline 714 571 aline 761 619 amove 809 190 aline 714 47 aline 619 0 aline 523 0 aline 476 47 aline 380 333 aline 333 380 aline 428 333 aline 523 47 aline 571 0 amove 428 1000 aline 238 1000 stroke dfont endchar dfont char=108 amove 238 0 aline 190 47 aline 190 142 aline 238 333 aline 428 1000 aline 238 1000 amove 380 1000 aline 190 333 aline 142 142 aline 142 47 aline 190 0 aline 333 0 aline 428 95 aline 476 190 stroke dfont endchar dfont char=109 amove 190 0 aline 285 333 aline 333 523 aline 333 619 aline 285 666 amove 47 476 aline 95 571 aline 190 666 aline 333 666 aline 380 619 aline 380 523 aline 333 333 aline 238 0 amove 333 333 aline 428 523 aline 523 619 aline 619 666 aline 714 666 aline 809 619 aline 857 571 aline 857 476 aline 714 -1 amove 666 -1 aline 809 476 aline 809 571 aline 714 666 amove 809 333 aline 904 523 aline 1000 619 aline 1095 666 aline 1190 666 aline 1285 619 aline 1333 571 aline 1333 476 aline 1238 190 aline 1238 47 aline 1285 -1 amove 1523 190 aline 1476 95 aline 1380 -1 aline 1238 -1 aline 1190 47 aline 1190 190 aline 1285 476 aline 1285 571 aline 1190 666 stroke dfont endchar dfont char=110 amove 190 0 aline 285 333 aline 333 523 aline 333 619 aline 285 666 amove 47 476 aline 95 571 aline 190 666 aline 333 666 aline 380 619 aline 380 523 aline 333 333 aline 238 0 amove 333 333 aline 428 523 aline 523 619 aline 619 666 aline 714 666 aline 809 619 aline 857 571 aline 857 476 aline 761 190 aline 761 47 aline 809 -1 amove 1047 190 aline 1000 95 aline 904 -1 aline 761 -1 aline 714 47 aline 714 190 aline 809 476 aline 809 571 aline 714 666 stroke dfont endchar dfont char=111 amove 238 47 aline 190 142 aline 190 333 aline 238 476 aline 333 619 aline 428 666 aline 523 666 aline 619 619 aline 666 571 aline 714 476 aline 714 333 aline 666 190 aline 571 47 aline 428 -1 aline 333 -1 aline 238 47 aline 190 95 aline 142 190 aline 142 333 aline 190 476 aline 285 619 aline 428 666 amove 619 619 aline 666 523 aline 666 333 aline 619 190 aline 523 47 aline 428 0 stroke dfont endchar dfont char=112 amove -48 -334 aline 285 -334 amove 142 -334 aline 333 333 aline 380 523 aline 380 619 aline 333 666 aline 190 666 aline 95 571 aline 47 476 amove 285 666 aline 333 619 aline 333 523 aline 285 333 aline 95 -334 amove 571 0 aline 666 47 aline 761 190 aline 809 333 aline 809 523 aline 761 619 amove 333 333 aline 380 476 aline 476 619 aline 571 666 aline 666 666 aline 761 619 aline 809 571 aline 857 476 aline 857 333 aline 809 190 aline 714 47 aline 571 -1 aline 476 -1 aline 380 47 aline 333 190 aline 333 333 stroke dfont endchar dfont char=113 amove 238 47 aline 190 142 aline 190 333 aline 238 476 aline 333 619 aline 428 666 amove 761 666 aline 476 -334 amove 523 -334 aline 809 666 amove 666 333 aline 666 476 aline 619 619 aline 523 666 aline 428 666 aline 285 619 aline 190 476 aline 142 333 aline 142 190 aline 190 95 aline 238 47 aline 333 0 aline 428 0 aline 523 47 aline 619 190 aline 666 333 amove 666 -334 aline 333 -334 stroke dfont endchar dfont char=114 amove 190 0 aline 285 333 aline 333 523 aline 333 619 aline 285 666 amove 47 476 aline 95 571 aline 190 666 aline 333 666 aline 380 619 aline 380 523 aline 333 333 aline 238 0 amove 333 333 aline 428 523 aline 523 619 aline 619 666 aline 714 666 aline 761 619 aline 761 571 aline 714 523 aline 666 571 aline 714 619 stroke dfont endchar dfont char=115 amove 142 95 aline 142 142 aline 95 142 aline 95 95 aline 142 47 aline 285 0 aline 428 0 aline 571 47 aline 619 95 aline 619 238 aline 571 285 aline 238 476 aline 190 523 amove 666 571 aline 666 523 aline 714 523 aline 714 571 aline 666 619 aline 523 666 aline 380 666 aline 238 619 aline 190 571 aline 190 476 aline 238 428 aline 571 238 aline 619 190 stroke dfont endchar dfont char=116 amove 285 0 aline 238 47 aline 238 142 aline 285 333 aline 476 1000 amove 428 1000 aline 238 333 aline 190 142 aline 190 47 aline 238 0 aline 380 0 aline 476 95 aline 523 190 amove 571 666 aline 142 666 stroke dfont endchar dfont char=117 amove 380 0 aline 285 95 aline 285 190 aline 380 476 aline 380 619 aline 333 666 aline 190 666 aline 95 571 aline 47 476 amove 285 666 aline 333 619 aline 333 476 aline 238 190 aline 238 95 aline 285 47 aline 380 0 aline 476 0 aline 571 47 aline 666 142 aline 761 333 amove 1047 190 aline 1000 95 aline 904 0 aline 761 0 aline 714 47 aline 714 142 aline 761 333 aline 857 666 amove 904 666 aline 809 333 aline 761 142 aline 761 47 aline 809 0 stroke dfont endchar dfont char=118 amove 380 0 aline 285 95 aline 285 190 aline 380 476 aline 380 619 aline 333 666 aline 190 666 aline 95 571 aline 47 476 amove 285 666 aline 333 619 aline 333 476 aline 238 190 aline 238 95 aline 285 47 aline 380 0 aline 428 0 aline 571 47 aline 666 142 aline 761 285 aline 809 476 aline 809 666 aline 761 666 aline 809 571 stroke dfont endchar dfont char=119 amove 380 0 aline 285 95 aline 285 190 aline 380 476 aline 380 619 aline 333 666 aline 190 666 aline 95 571 aline 47 476 amove 285 666 aline 333 619 aline 333 476 aline 238 190 aline 238 95 aline 285 47 aline 380 0 aline 476 0 aline 571 47 aline 666 142 aline 714 238 amove 857 0 aline 761 95 aline 761 238 aline 857 666 amove 809 666 aline 714 238 aline 714 95 aline 761 47 aline 857 0 aline 952 0 aline 1047 47 aline 1142 142 aline 1190 238 aline 1238 428 aline 1238 666 aline 1190 666 aline 1238 571 stroke dfont endchar dfont char=120 amove 142 47 aline 190 95 aline 142 142 aline 95 95 aline 95 47 aline 142 0 aline 190 0 aline 285 47 aline 380 142 aline 428 238 aline 476 428 aline 476 571 aline 428 666 amove 523 428 aline 523 571 aline 476 666 aline 333 666 aline 238 619 aline 142 476 amove 428 238 aline 428 95 aline 476 0 aline 619 0 aline 714 47 aline 809 190 amove 523 0 aline 476 95 aline 476 238 aline 523 428 aline 571 523 aline 666 619 aline 761 666 aline 809 666 aline 857 619 aline 857 571 aline 809 523 aline 761 571 aline 809 619 stroke dfont endchar dfont char=121 amove 190 -239 aline 238 -191 aline 190 -143 aline 142 -191 aline 142 -239 aline 190 -286 aline 285 -334 aline 428 -334 aline 571 -286 aline 666 -143 aline 714 0 aline 904 666 amove 857 666 aline 666 0 aline 619 -143 aline 523 -286 aline 428 -334 amove 380 -1 aline 285 95 aline 285 190 aline 380 476 aline 380 619 aline 333 666 aline 190 666 aline 95 571 aline 47 476 amove 285 666 aline 333 619 aline 333 476 aline 238 190 aline 238 95 aline 285 47 aline 380 -1 aline 476 -1 aline 571 47 aline 666 142 aline 761 333 stroke dfont endchar dfont char=122 amove 142 0 aline 190 95 aline 285 190 aline 666 476 aline 761 571 aline 809 666 amove 761 571 aline 666 571 aline 476 619 aline 333 619 aline 238 571 amove 190 476 aline 238 571 aline 333 666 aline 476 666 aline 666 571 amove 761 190 aline 714 95 aline 619 -1 aline 476 -1 aline 285 95 amove 190 95 aline 285 95 aline 476 47 aline 619 47 aline 714 95 stroke dfont endchar dfont char=123 amove 380 238 aline 333 95 aline 333 -96 aline 380 -239 amove 476 -334 aline 333 -191 aline 285 -48 aline 285 47 aline 333 190 aline 428 285 aline 428 333 aline 238 428 aline 428 523 aline 428 571 aline 333 666 aline 285 809 aline 285 904 aline 333 1047 aline 476 1190 amove 380 1095 aline 333 952 aline 333 761 aline 380 619 stroke dfont endchar dfont char=124 amove 238 571 aline 714 857 aline 666 857 aline 285 571 aline 238 571 aline 238 619 aline 714 809 aline 714 857 amove 476 1000 aline 476 428 aline 523 476 aline 428 952 aline 476 1000 aline 523 952 aline 428 476 aline 476 428 amove 714 571 aline 238 857 aline 285 857 aline 666 571 aline 714 571 aline 714 619 aline 238 809 aline 238 857 stroke dfont endchar dfont char=125 amove 238 -334 aline 380 -191 aline 428 -48 aline 428 47 aline 380 190 aline 285 285 aline 285 333 aline 476 428 aline 285 523 aline 285 571 aline 380 666 aline 428 809 aline 428 904 aline 380 1047 aline 238 1190 amove 333 1095 aline 380 952 aline 380 761 aline 333 619 amove 333 238 aline 380 95 aline 380 -96 aline 333 -239 stroke dfont endchar dfont char=126 amove 142 47 aline 333 0 amove 285 0 aline 238 47 aline 190 142 aline 190 238 aline 238 333 aline 285 380 aline 380 428 aline 619 571 amove 523 523 aline 571 380 aline 714 95 aline 809 47 amove 952 95 aline 904 47 aline 857 47 aline 761 95 aline 666 238 aline 571 428 aline 523 571 aline 476 714 amove 333 428 aline 238 380 aline 190 333 aline 142 238 aline 142 142 aline 190 47 amove 952 142 aline 952 95 aline 904 0 aline 809 0 aline 714 47 aline 619 190 aline 571 285 aline 523 428 aline 476 714 aline 476 857 aline 523 952 aline 619 1000 aline 714 952 aline 761 857 aline 761 761 aline 714 666 aline 619 571 aline 523 523 aline 285 428 aline 190 380 aline 142 333 aline 95 238 aline 95 142 aline 142 47 aline 285 0 aline 428 0 aline 523 47 aline 619 142 aline 857 523 aline 952 619 aline 1047 666 aline 1095 666 aline 1142 619 aline 1142 523 aline 1047 523 aline 1047 619 aline 1095 619 aline 1095 571 stroke dfont endchar gle-graphics-4.2.4c/src/fonts/glemark.afm0000664000000000000000000000172211676336540016775 0ustar rootrootStartFontMetrics 2.0 FontName GleMarkers EncodingScheme GLEMARK FullName Gle Markers FamilyName GLE Weight Roman ItalicAngle 0.0 IsFixedPitch false UnderlinePosition -109 UnderlineThickness 49 Version 001.002 Notice The GLE marker font is licensed under the Modified BSD license. FontBBox -170 -223 1024 896 CapHeight 662 XHeight 448 Descender -217 Ascender 682 StartCharMetrics 14 C 1; WX 1000; N C1 ; B 0 0 1000 1000 ; C 2; WX 1000; N C2 ; B 0 0 1000 1000 ; C 3; WX 1000; N C3 ; B 0 0 1000 1000 ; C 4; WX 1000; N C4 ; B 0 0 1000 1000 ; C 5; WX 1000; N C5 ; B 0 0 1000 1000 ; C 6; WX 1000; N C6 ; B 0 0 1000 1000 ; C 7; WX 1000; N C7 ; B 0 0 1000 1000 ; C 8; WX 1000; N C8 ; B 0 0 1000 1000 ; C 9; WX 1000; N C9 ; B 0 0 1000 1000 ; C 10; WX 1000; N C10 ; B 0 0 1000 1000 ; C 11; WX 1000; N C11 ; B 0 0 1000 1000 ; C 12; WX 1000; N C12 ; B 0 0 1000 1000 ; C 13; WX 1000; N C13 ; B 0 0 1000 1000 ; C 14; WX 1000; N C14 ; B 0 0 1000 1000 ; EndCharMetrics EndFontMetrics gle-graphics-4.2.4c/src/fonts/plsg.afm0000664000000000000000000001230011676336540016312 0ustar rootrootStartFontMetrics 2.0 Comment Made from HERSHEY font file using SPLITFONT.BAS FontName plSG EncodingScheme TEXENCODING FullName plSG FamilyName plSG Weight Medium ItalicAngle 0 IsFixedPitch false UnderlinePosition -97 UnderlineThickness 73 FontBBox 0 -400 1001 1001 CapHeight 729 XHeight 151 Descender -219 Ascender 729 StartCharMetrics 95 C 32 ; WX 400 ; N C32 ; B 0 0 0 0 ; C 33 ; WX 318 ; N C33 ; B 133 0 199 700 ; C 34 ; WX 518 ; N C34 ; B 133 466 399 700 ; C 35 ; WX 685 ; N C35 ; B 99 -233 600 833 ; C 36 ; WX 651 ; N C36 ; B 99 -133 566 833 ; C 37 ; WX 784 ; N C37 ; B 99 0 700 700 ; C 38 ; WX 851 ; N C38 ; B 99 0 766 700 ; C 39 ; WX 251 ; N C39 ; B 133 466 133 700 ; C 40 ; WX 451 ; N C40 ; B 133 -233 366 833 ; C 41 ; WX 451 ; N C41 ; B 99 -233 333 833 ; C 42 ; WX 518 ; N C42 ; B 99 99 433 500 ; C 43 ; WX 851 ; N C43 ; B 133 0 733 600 ; C 44 ; WX 318 ; N C44 ; B 133 -133 199 66 ; C 45 ; WX 851 ; N C45 ; B 133 299 733 299 ; C 46 ; WX 318 ; N C46 ; B 133 0 199 66 ; C 47 ; WX 718 ; N C47 ; B 66 -233 666 833 ; C 48 ; WX 651 ; N C48 ; B 99 0 566 700 ; C 49 ; WX 651 ; N C49 ; B 199 0 366 700 ; C 50 ; WX 651 ; N C50 ; B 99 0 566 700 ; C 51 ; WX 651 ; N C51 ; B 99 0 566 700 ; C 52 ; WX 651 ; N C52 ; B 99 0 600 700 ; C 53 ; WX 651 ; N C53 ; B 99 0 566 700 ; C 54 ; WX 651 ; N C54 ; B 133 0 566 700 ; C 55 ; WX 651 ; N C55 ; B 99 0 566 700 ; C 56 ; WX 651 ; N C56 ; B 99 0 566 700 ; C 57 ; WX 651 ; N C57 ; B 99 0 532 700 ; C 58 ; WX 318 ; N C58 ; B 133 0 199 466 ; C 59 ; WX 318 ; N C59 ; B 133 -133 199 466 ; C 60 ; WX 784 ; N C60 ; B 133 0 666 600 ; C 61 ; WX 851 ; N C61 ; B 133 199 733 399 ; C 62 ; WX 784 ; N C62 ; B 133 0 666 600 ; C 63 ; WX 585 ; N C63 ; B 99 0 500 700 ; C 64 ; WX 884 ; N C64 ; B 99 0 799 700 ; C 65 ; WX 585 ; N C65 ; B 32 0 566 700 ; C 66 ; WX 685 ; N C66 ; B 133 0 600 700 ; C 67 ; WX 551 ; N C67 ; B 133 0 532 700 ; C 68 ; WX 585 ; N C68 ; B 32 0 566 700 ; C 69 ; WX 618 ; N C69 ; B 133 0 566 700 ; C 70 ; WX 651 ; N C70 ; B 99 0 566 700 ; C 71 ; WX 718 ; N C71 ; B 133 0 600 700 ; C 72 ; WX 718 ; N C72 ; B 99 0 633 700 ; C 73 ; WX 251 ; N C73 ; B 133 0 133 700 ; C 74 ; WX 685 ; N C74 ; B 133 0 600 700 ; C 75 ; WX 585 ; N C75 ; B 32 0 566 700 ; C 76 ; WX 784 ; N C76 ; B 133 0 666 700 ; C 77 ; WX 718 ; N C77 ; B 133 0 600 700 ; C 78 ; WX 585 ; N C78 ; B 66 0 532 700 ; C 79 ; WX 718 ; N C79 ; B 99 0 633 700 ; C 80 ; WX 718 ; N C80 ; B 133 0 600 700 ; C 81 ; WX 685 ; N C81 ; B 133 0 600 700 ; C 82 ; WX 585 ; N C82 ; B 66 0 532 700 ; C 83 ; WX 518 ; N C83 ; B 32 0 500 700 ; C 84 ; WX 585 ; N C84 ; B 66 0 532 700 ; C 85 ; WX 651 ; N C85 ; B 99 0 566 700 ; C 86 ; WX 651 ; N C86 ; B 99 0 566 700 ; C 87 ; WX 718 ; N C87 ; B 66 0 666 700 ; C 88 ; WX 651 ; N C88 ; B 99 0 566 700 ; C 89 ; WX 651 ; N C89 ; B 0 0 600 700 ; C 90 ; WX 751 ; N C90 ; B 99 0 700 700 ; C 91 ; WX 451 ; N C91 ; B 133 -233 366 833 ; C 92 ; WX 300 ; N C92 ; B 0 0 0 0 ; C 93 ; WX 451 ; N C93 ; B 99 -233 333 833 ; C 94 ; WX 300 ; N C94 ; B 0 0 0 0 ; C 95 ; WX 300 ; N C95 ; B 0 0 0 0 ; C 96 ; WX 318 ; N C96 ; B 133 500 199 700 ; C 97 ; WX 685 ; N C97 ; B 99 0 600 466 ; C 98 ; WX 618 ; N C98 ; B 66 -233 532 700 ; C 99 ; WX 618 ; N C99 ; B 32 -233 566 466 ; C 100 ; WX 585 ; N C100 ; B 99 0 500 700 ; C 101 ; WX 518 ; N C101 ; B 99 0 433 466 ; C 102 ; WX 485 ; N C102 ; B 99 -233 466 700 ; C 103 ; WX 651 ; N C103 ; B 32 -233 532 466 ; C 104 ; WX 685 ; N C104 ; B 32 0 633 700 ; C 105 ; WX 351 ; N C105 ; B 99 0 299 466 ; C 106 ; WX 585 ; N C106 ; B 66 0 532 466 ; C 107 ; WX 518 ; N C107 ; B 32 0 466 700 ; C 108 ; WX 685 ; N C108 ; B 32 -233 666 466 ; C 109 ; WX 585 ; N C109 ; B 99 0 532 466 ; C 110 ; WX 518 ; N C110 ; B 99 -233 466 700 ; C 111 ; WX 551 ; N C111 ; B 99 0 466 466 ; C 112 ; WX 718 ; N C112 ; B 66 0 666 466 ; C 113 ; WX 585 ; N C113 ; B 0 -233 500 466 ; C 114 ; WX 651 ; N C114 ; B 99 0 600 466 ; C 115 ; WX 651 ; N C115 ; B 66 0 600 466 ; C 116 ; WX 651 ; N C116 ; B 32 0 566 466 ; C 117 ; WX 718 ; N C117 ; B 99 -233 633 466 ; C 118 ; WX 585 ; N C118 ; B 32 -233 566 466 ; C 119 ; WX 751 ; N C119 ; B 32 -233 700 700 ; C 120 ; WX 751 ; N C120 ; B 99 0 666 466 ; C 121 ; WX 518 ; N C121 ; B 0 0 532 299 ; C 122 ; WX 451 ; N C122 ; B 0 0 466 700 ; C 123 ; WX 485 ; N C123 ; B 166 -233 333 833 ; C 124 ; WX 251 ; N C124 ; B 133 -233 133 833 ; C 125 ; WX 485 ; N C125 ; B 166 -233 333 833 ; C 126 ; WX 451 ; N C126 ; B 99 433 366 700 ; EndCharMetrics EndFontMetrics gle-graphics-4.2.4c/src/fonts/plsr.afm0000664000000000000000000001230711676336540016334 0ustar rootrootStartFontMetrics 2.0 Comment Made from HERSHEY font file using SPLITFONT.BAS FontName plSR EncodingScheme TEXENCODING FullName plSR FamilyName plSR Weight Medium ItalicAngle 0 IsFixedPitch false UnderlinePosition -97 UnderlineThickness 73 FontBBox 0 -400 1001 1001 CapHeight 729 XHeight 151 Descender -219 Ascender 729 StartCharMetrics 95 C 32 ; WX 400 ; N C32 ; B 0 0 0 0 ; C 33 ; WX 318 ; N C33 ; B 133 0 199 700 ; C 34 ; WX 518 ; N C34 ; B 133 466 399 700 ; C 35 ; WX 685 ; N C35 ; B 99 -233 600 833 ; C 36 ; WX 651 ; N C36 ; B 99 -133 566 833 ; C 37 ; WX 784 ; N C37 ; B 99 0 700 700 ; C 38 ; WX 851 ; N C38 ; B 99 0 766 700 ; C 39 ; WX 251 ; N C39 ; B 133 466 133 700 ; C 40 ; WX 451 ; N C40 ; B 133 -233 366 833 ; C 41 ; WX 451 ; N C41 ; B 99 -233 333 833 ; C 42 ; WX 518 ; N C42 ; B 99 99 433 500 ; C 43 ; WX 851 ; N C43 ; B 133 0 733 600 ; C 44 ; WX 318 ; N C44 ; B 133 -133 199 66 ; C 45 ; WX 851 ; N C45 ; B 133 299 733 299 ; C 46 ; WX 318 ; N C46 ; B 133 0 199 66 ; C 47 ; WX 718 ; N C47 ; B 66 -233 666 833 ; C 48 ; WX 651 ; N C48 ; B 99 0 566 700 ; C 49 ; WX 651 ; N C49 ; B 199 0 366 700 ; C 50 ; WX 651 ; N C50 ; B 99 0 566 700 ; C 51 ; WX 651 ; N C51 ; B 99 0 566 700 ; C 52 ; WX 651 ; N C52 ; B 99 0 600 700 ; C 53 ; WX 651 ; N C53 ; B 99 0 566 700 ; C 54 ; WX 651 ; N C54 ; B 133 0 566 700 ; C 55 ; WX 651 ; N C55 ; B 99 0 566 700 ; C 56 ; WX 651 ; N C56 ; B 99 0 566 700 ; C 57 ; WX 651 ; N C57 ; B 99 0 532 700 ; C 58 ; WX 318 ; N C58 ; B 133 0 199 466 ; C 59 ; WX 318 ; N C59 ; B 133 -133 199 466 ; C 60 ; WX 784 ; N C60 ; B 133 0 666 600 ; C 61 ; WX 851 ; N C61 ; B 133 199 733 399 ; C 62 ; WX 784 ; N C62 ; B 133 0 666 600 ; C 63 ; WX 585 ; N C63 ; B 99 0 500 700 ; C 64 ; WX 884 ; N C64 ; B 99 0 799 700 ; C 65 ; WX 585 ; N C65 ; B 32 0 566 700 ; C 66 ; WX 685 ; N C66 ; B 133 0 600 700 ; C 67 ; WX 685 ; N C67 ; B 99 0 600 700 ; C 68 ; WX 685 ; N C68 ; B 133 0 600 700 ; C 69 ; WX 618 ; N C69 ; B 133 0 566 700 ; C 70 ; WX 585 ; N C70 ; B 133 0 566 700 ; C 71 ; WX 685 ; N C71 ; B 99 0 600 700 ; C 72 ; WX 718 ; N C72 ; B 133 0 600 700 ; C 73 ; WX 251 ; N C73 ; B 133 0 133 700 ; C 74 ; WX 518 ; N C74 ; B 66 0 399 700 ; C 75 ; WX 685 ; N C75 ; B 133 0 600 700 ; C 76 ; WX 551 ; N C76 ; B 133 0 532 700 ; C 77 ; WX 784 ; N C77 ; B 133 0 666 700 ; C 78 ; WX 718 ; N C78 ; B 133 0 600 700 ; C 79 ; WX 718 ; N C79 ; B 99 0 633 700 ; C 80 ; WX 685 ; N C80 ; B 133 0 600 700 ; C 81 ; WX 718 ; N C81 ; B 99 -67 633 700 ; C 82 ; WX 685 ; N C82 ; B 133 0 600 700 ; C 83 ; WX 651 ; N C83 ; B 99 0 566 700 ; C 84 ; WX 518 ; N C84 ; B 32 0 500 700 ; C 85 ; WX 718 ; N C85 ; B 133 0 600 700 ; C 86 ; WX 585 ; N C86 ; B 32 0 566 700 ; C 87 ; WX 784 ; N C87 ; B 66 0 733 700 ; C 88 ; WX 651 ; N C88 ; B 99 0 566 700 ; C 89 ; WX 585 ; N C89 ; B 32 0 566 700 ; C 90 ; WX 651 ; N C90 ; B 99 0 566 700 ; C 91 ; WX 451 ; N C91 ; B 133 -233 366 833 ; C 92 ; WX 300 ; N C92 ; B 0 0 0 0 ; C 93 ; WX 451 ; N C93 ; B 99 -233 333 833 ; C 94 ; WX 300 ; N C94 ; B 0 0 0 0 ; C 95 ; WX 300 ; N C95 ; B 0 0 0 0 ; C 96 ; WX 318 ; N C96 ; B 133 500 199 700 ; C 97 ; WX 618 ; N C97 ; B 99 0 500 466 ; C 98 ; WX 618 ; N C98 ; B 133 0 532 700 ; C 99 ; WX 585 ; N C99 ; B 99 0 500 466 ; C 100 ; WX 618 ; N C100 ; B 99 0 500 700 ; C 101 ; WX 585 ; N C101 ; B 99 0 500 466 ; C 102 ; WX 384 ; N C102 ; B 66 0 333 700 ; C 103 ; WX 618 ; N C103 ; B 99 -233 500 466 ; C 104 ; WX 618 ; N C104 ; B 133 0 500 700 ; C 105 ; WX 251 ; N C105 ; B 99 0 166 733 ; C 106 ; WX 318 ; N C106 ; B 32 -233 233 733 ; C 107 ; WX 551 ; N C107 ; B 133 0 500 700 ; C 108 ; WX 251 ; N C108 ; B 133 0 133 700 ; C 109 ; WX 985 ; N C109 ; B 133 0 866 466 ; C 110 ; WX 618 ; N C110 ; B 133 0 500 466 ; C 111 ; WX 618 ; N C111 ; B 99 0 532 466 ; C 112 ; WX 618 ; N C112 ; B 133 -233 532 466 ; C 113 ; WX 618 ; N C113 ; B 99 -233 500 466 ; C 114 ; WX 418 ; N C114 ; B 133 0 399 466 ; C 115 ; WX 551 ; N C115 ; B 99 0 466 466 ; C 116 ; WX 384 ; N C116 ; B 66 0 333 700 ; C 117 ; WX 618 ; N C117 ; B 133 0 500 466 ; C 118 ; WX 518 ; N C118 ; B 66 0 466 466 ; C 119 ; WX 718 ; N C119 ; B 99 0 633 466 ; C 120 ; WX 551 ; N C120 ; B 99 0 466 466 ; C 121 ; WX 518 ; N C121 ; B 32 -233 466 466 ; C 122 ; WX 551 ; N C122 ; B 99 0 466 466 ; C 123 ; WX 485 ; N C123 ; B 166 -233 333 833 ; C 124 ; WX 251 ; N C124 ; B 133 -233 133 833 ; C 125 ; WX 485 ; N C125 ; B 166 -233 333 833 ; C 126 ; WX 451 ; N C126 ; B 99 433 366 700 ; EndCharMetrics EndFontMetrics gle-graphics-4.2.4c/src/fonts/plsa.afm0000664000000000000000000001227111676336540016313 0ustar rootrootStartFontMetrics 2.0 Comment Made from HERSHEY font file using SPLITFONT.BAS FontName plSA EncodingScheme TEXENCODING FullName plSA FamilyName plSA Weight Medium ItalicAngle 0 IsFixedPitch false UnderlinePosition -97 UnderlineThickness 73 FontBBox 0 -400 1001 1001 CapHeight 729 XHeight 151 Descender -219 Ascender 729 StartCharMetrics 96 C 32 ; WX 400 ; N C32 ; B 0 0 0 0 ; C 33 ; WX 430 ; N C33 ; B 126 0 190 636 ; C 34 ; WX 430 ; N C34 ; B 63 509 317 636 ; C 35 ; WX 430 ; N C35 ; B 0 126 381 509 ; C 36 ; WX 430 ; N C36 ; B 0 0 381 636 ; C 37 ; WX 430 ; N C37 ; B 0 0 381 636 ; C 38 ; WX 430 ; N C38 ; B 0 0 381 636 ; C 39 ; WX 430 ; N C39 ; B 126 509 190 636 ; C 40 ; WX 430 ; N C40 ; B 126 0 254 636 ; C 41 ; WX 430 ; N C41 ; B 126 0 254 636 ; C 42 ; WX 430 ; N C42 ; B 0 126 381 509 ; C 43 ; WX 430 ; N C43 ; B 0 126 381 509 ; C 44 ; WX 430 ; N C44 ; B 126 -127 190 63 ; C 45 ; WX 430 ; N C45 ; B 63 317 317 317 ; C 46 ; WX 430 ; N C46 ; B 126 0 190 63 ; C 47 ; WX 430 ; N C47 ; B 63 0 317 636 ; C 48 ; WX 430 ; N C48 ; B 63 0 317 636 ; C 49 ; WX 430 ; N C49 ; B 126 0 254 636 ; C 50 ; WX 430 ; N C50 ; B 0 0 381 636 ; C 51 ; WX 430 ; N C51 ; B 0 0 381 636 ; C 52 ; WX 430 ; N C52 ; B 0 0 317 636 ; C 53 ; WX 430 ; N C53 ; B 0 0 381 636 ; C 54 ; WX 430 ; N C54 ; B 0 0 381 636 ; C 55 ; WX 430 ; N C55 ; B 0 0 381 636 ; C 56 ; WX 430 ; N C56 ; B 0 0 381 636 ; C 57 ; WX 430 ; N C57 ; B 0 0 381 636 ; C 58 ; WX 430 ; N C58 ; B 126 0 190 254 ; C 59 ; WX 430 ; N C59 ; B 126 -127 190 254 ; C 60 ; WX 430 ; N C60 ; B 0 63 254 572 ; C 61 ; WX 430 ; N C61 ; B 63 254 317 381 ; C 62 ; WX 430 ; N C62 ; B 0 63 254 572 ; C 63 ; WX 430 ; N C63 ; B 63 0 317 636 ; C 64 ; WX 430 ; N C64 ; B 63 63 317 572 ; C 65 ; WX 430 ; N C65 ; B 0 0 381 636 ; C 66 ; WX 430 ; N C66 ; B 0 0 381 636 ; C 67 ; WX 430 ; N C67 ; B 0 0 381 636 ; C 68 ; WX 430 ; N C68 ; B 0 0 381 636 ; C 69 ; WX 430 ; N C69 ; B 0 0 381 636 ; C 70 ; WX 430 ; N C70 ; B 0 0 381 636 ; C 71 ; WX 430 ; N C71 ; B 0 0 381 636 ; C 72 ; WX 430 ; N C72 ; B 0 0 381 636 ; C 73 ; WX 430 ; N C73 ; B 126 0 254 636 ; C 74 ; WX 430 ; N C74 ; B 0 0 317 636 ; C 75 ; WX 430 ; N C75 ; B 0 0 381 636 ; C 76 ; WX 430 ; N C76 ; B 0 0 381 636 ; C 77 ; WX 430 ; N C77 ; B 0 0 381 636 ; C 78 ; WX 430 ; N C78 ; B 0 0 381 636 ; C 79 ; WX 430 ; N C79 ; B 0 0 381 636 ; C 80 ; WX 430 ; N C80 ; B 0 0 381 636 ; C 81 ; WX 430 ; N C81 ; B 0 0 381 636 ; C 82 ; WX 430 ; N C82 ; B 0 0 381 636 ; C 83 ; WX 430 ; N C83 ; B 0 0 381 636 ; C 84 ; WX 430 ; N C84 ; B 0 0 381 636 ; C 85 ; WX 430 ; N C85 ; B 0 0 381 636 ; C 86 ; WX 430 ; N C86 ; B 0 0 381 636 ; C 87 ; WX 430 ; N C87 ; B 0 0 381 636 ; C 88 ; WX 430 ; N C88 ; B 0 0 381 636 ; C 89 ; WX 430 ; N C89 ; B 0 0 381 636 ; C 90 ; WX 430 ; N C90 ; B 0 0 381 636 ; C 91 ; WX 430 ; N C91 ; B 126 0 254 636 ; C 92 ; WX 430 ; N C92 ; B 0 0 381 636 ; C 93 ; WX 430 ; N C93 ; B 126 0 254 636 ; C 94 ; WX 430 ; N C94 ; B 63 317 317 509 ; C 95 ; WX 430 ; N C95 ; B 0 -63 381 -63 ; C 96 ; WX 430 ; N C96 ; B 126 572 254 636 ; C 97 ; WX 430 ; N C97 ; B 0 0 381 445 ; C 98 ; WX 430 ; N C98 ; B 0 0 381 636 ; C 99 ; WX 430 ; N C99 ; B 0 0 381 445 ; C 100 ; WX 430 ; N C100 ; B 0 0 381 636 ; C 101 ; WX 430 ; N C101 ; B 0 0 381 445 ; C 102 ; WX 430 ; N C102 ; B 63 0 381 636 ; C 103 ; WX 430 ; N C103 ; B 0 -191 381 445 ; C 104 ; WX 430 ; N C104 ; B 0 0 381 636 ; C 105 ; WX 430 ; N C105 ; B 126 0 254 572 ; C 106 ; WX 430 ; N C106 ; B 0 -191 254 572 ; C 107 ; WX 430 ; N C107 ; B 0 0 381 636 ; C 108 ; WX 430 ; N C108 ; B 126 0 254 636 ; C 109 ; WX 430 ; N C109 ; B 0 0 381 445 ; C 110 ; WX 430 ; N C110 ; B 0 0 381 445 ; C 111 ; WX 430 ; N C111 ; B 0 0 381 445 ; C 112 ; WX 430 ; N C112 ; B 0 -191 381 445 ; C 113 ; WX 430 ; N C113 ; B 0 -191 381 445 ; C 114 ; WX 430 ; N C114 ; B 0 0 381 445 ; C 115 ; WX 430 ; N C115 ; B 0 0 381 445 ; C 116 ; WX 430 ; N C116 ; B 126 0 381 636 ; C 117 ; WX 430 ; N C117 ; B 0 0 381 445 ; C 118 ; WX 430 ; N C118 ; B 0 0 381 445 ; C 119 ; WX 430 ; N C119 ; B 0 0 381 445 ; C 120 ; WX 430 ; N C120 ; B 0 0 381 445 ; C 121 ; WX 430 ; N C121 ; B 0 -191 381 445 ; C 122 ; WX 430 ; N C122 ; B 0 0 381 445 ; C 123 ; WX 430 ; N C123 ; B 126 0 254 636 ; C 124 ; WX 430 ; N C124 ; B 190 0 190 636 ; C 125 ; WX 430 ; N C125 ; B 126 0 254 636 ; C 126 ; WX 430 ; N C126 ; B 63 254 381 445 ; C 127 ; WX 430 ; N C127 ; B 63 190 381 445 ; EndCharMetrics EndFontMetrics gle-graphics-4.2.4c/src/fonts/pshcbo.afm0000664000000000000000000003641711676336540016642 0ustar rootrootStartFontMetrics 2.0 Comment Copyright (c) 1985, 1987 Adobe Systems Incorporated. All rights reserved. Comment Creation Date:Thu Aug 13 17:42:03 PDT 1987 FontName Helvetica-Condensed-BoldObl EncodingScheme AdobeStandardEncoding FullName Helvetica.Condensed Bold Oblique FamilyName Helvetica Weight BoldCondensed ItalicAngle -12.0 IsFixedPitch false UnderlinePosition -90 UnderlineThickness 58 Version 001.002 Notice Copyright (c) 1985, 1987 Adobe Systems Incorporated. All rights reserved. Helvetica is a trademark of Allied Corporation. FontBBox -169 -228 1141 971 CapHeight 750 XHeight 564 Descender -189 Ascender 750 StartCharMetrics 228 C 32 ; WX 250 ; N space ; B 0 0 0 0 ; C 33 ; WX 333 ; N exclam ; B 102 0 390 750 ; C 34 ; WX 333 ; N quotedbl ; B 115 468 475 739 ; C 35 ; WX 500 ; N numbersign ; B 81 0 580 738 ; C 36 ; WX 500 ; N dollar ; B 67 -124 575 803 ; C 37 ; WX 833 ; N percent ; B 138 -15 853 750 ; C 38 ; WX 667 ; N ampersand ; B 101 -18 676 768 ; C 39 ; WX 278 ; N quoteright ; B 183 479 361 750 ; C 40 ; WX 333 ; N parenleft ; B 91 -198 442 768 ; C 41 ; WX 333 ; N parenright ; B 12 -198 363 768 ; C 42 ; WX 500 ; N asterisk ; B 203 412 546 738 ; C 43 ; WX 500 ; N plus ; B 67 0 540 492 ; C 44 ; WX 333 ; N comma ; B 70 -145 261 132 ; C 45 ; WX 333 ; N hyphen ; B 102 255 365 370 ; C 46 ; WX 333 ; N period ; B 101 0 261 132 ; C 47 ; WX 278 ; N slash ; B -31 -94 471 750 ; C 48 ; WX 500 ; N zero ; B 82 -15 576 753 ; C 49 ; WX 500 ; N one ; B 155 0 512 750 ; C 50 ; WX 500 ; N two ; B 32 0 577 753 ; C 51 ; WX 500 ; N three ; B 61 -15 563 753 ; C 52 ; WX 500 ; N four ; B 55 0 563 738 ; C 53 ; WX 500 ; N five ; B 72 -15 581 738 ; C 54 ; WX 500 ; N six ; B 83 -15 575 753 ; C 55 ; WX 500 ; N seven ; B 126 0 611 738 ; C 56 ; WX 500 ; N eight ; B 76 -15 570 753 ; C 57 ; WX 500 ; N nine ; B 84 -15 575 753 ; C 58 ; WX 278 ; N colon ; B 73 0 323 556 ; C 59 ; WX 278 ; N semicolon ; B 42 -145 323 556 ; C 60 ; WX 500 ; N less ; B 85 -24 571 527 ; C 61 ; WX 500 ; N equal ; B 46 96 560 401 ; C 62 ; WX 500 ; N greater ; B 37 -24 523 527 ; C 63 ; WX 500 ; N question ; B 147 0 569 768 ; C 64 ; WX 833 ; N at ; B 109 -18 897 768 ; C 65 ; WX 556 ; N A ; B 9 0 547 750 ; C 66 ; WX 556 ; N B ; B 65 0 615 750 ; C 67 ; WX 556 ; N C ; B 99 -18 630 768 ; C 68 ; WX 611 ; N D ; B 72 0 662 750 ; C 69 ; WX 500 ; N E ; B 64 0 617 750 ; C 70 ; WX 500 ; N F ; B 73 0 629 750 ; C 71 ; WX 611 ; N G ; B 99 -18 664 768 ; C 72 ; WX 611 ; N H ; B 68 0 703 750 ; C 73 ; WX 278 ; N I ; B 69 0 368 750 ; C 74 ; WX 444 ; N J ; B 36 -18 543 750 ; C 75 ; WX 556 ; N K ; B 68 0 697 750 ; C 76 ; WX 500 ; N L ; B 68 0 491 750 ; C 77 ; WX 778 ; N M ; B 67 0 871 750 ; C 78 ; WX 611 ; N N ; B 68 0 702 750 ; C 79 ; WX 611 ; N O ; B 105 -18 664 768 ; C 80 ; WX 556 ; N P ; B 68 0 651 750 ; C 81 ; WX 611 ; N Q ; B 105 -71 664 768 ; C 82 ; WX 611 ; N R ; B 66 0 671 750 ; C 83 ; WX 556 ; N S ; B 85 -18 613 768 ; C 84 ; WX 500 ; N T ; B 153 0 643 750 ; C 85 ; WX 611 ; N U ; B 105 -18 703 750 ; C 86 ; WX 556 ; N V ; B 180 0 695 750 ; C 87 ; WX 833 ; N W ; B 167 0 969 750 ; C 88 ; WX 556 ; N X ; B 11 0 698 750 ; C 89 ; WX 556 ; N Y ; B 171 0 704 750 ; C 90 ; WX 500 ; N Z ; B 33 0 618 750 ; C 91 ; WX 333 ; N bracketleft ; B 61 -94 439 750 ; C 92 ; WX 250 ; N backslash ; B 70 0 340 750 ; C 93 ; WX 333 ; N bracketright ; B 33 -94 411 750 ; C 94 ; WX 500 ; N asciicircum ; B 89 326 569 750 ; C 95 ; WX 500 ; N underscore ; B -25 -119 487 -61 ; C 96 ; WX 278 ; N quoteleft ; B 181 495 360 766 ; C 97 ; WX 500 ; N a ; B 68 -15 525 579 ; C 98 ; WX 500 ; N b ; B 64 -15 534 750 ; C 99 ; WX 444 ; N c ; B 78 -15 494 579 ; C 100 ; WX 500 ; N d ; B 83 -15 592 750 ; C 101 ; WX 500 ; N e ; B 87 -15 529 579 ; C 102 ; WX 278 ; N f ; B 71 0 416 750 ; L i fi ; L l fl ; C 103 ; WX 500 ; N g ; B 44 -190 553 579 ; C 104 ; WX 500 ; N h ; B 61 0 539 750 ; C 105 ; WX 278 ; N i ; B 74 0 363 750 ; C 106 ; WX 278 ; N j ; B -9 -192 368 750 ; C 107 ; WX 444 ; N k ; B 48 0 563 750 ; C 108 ; WX 278 ; N l ; B 74 0 363 750 ; C 109 ; WX 778 ; N m ; B 66 0 812 579 ; C 110 ; WX 500 ; N n ; B 61 0 539 579 ; C 111 ; WX 500 ; N o ; B 88 -15 531 579 ; C 112 ; WX 500 ; N p ; B 18 -189 528 579 ; C 113 ; WX 500 ; N q ; B 80 -188 550 579 ; C 114 ; WX 333 ; N r ; B 60 0 441 574 ; C 115 ; WX 444 ; N s ; B 55 -15 497 579 ; C 116 ; WX 278 ; N t ; B 83 -7 372 719 ; C 117 ; WX 500 ; N u ; B 78 -15 551 564 ; C 118 ; WX 444 ; N v ; B 130 0 554 564 ; C 119 ; WX 667 ; N w ; B 127 0 765 564 ; C 120 ; WX 444 ; N x ; B 8 0 553 564 ; C 121 ; WX 444 ; N y ; B 36 -195 549 564 ; C 122 ; WX 389 ; N z ; B 23 0 487 564 ; C 123 ; WX 274 ; N braceleft ; B 37 -92 399 750 ; C 124 ; WX 250 ; N bar ; B 75 0 334 750 ; C 125 ; WX 274 ; N braceright ; B 14 -94 375 750 ; C 126 ; WX 500 ; N asciitilde ; B 74 153 536 359 ; C 161 ; WX 333 ; N exclamdown ; B 66 -170 355 579 ; C 162 ; WX 500 ; N cent ; B 103 -122 521 671 ; C 163 ; WX 500 ; N sterling ; B 52 -15 603 768 ; C 164 ; WX 167 ; N fraction ; B -169 0 488 738 ; C 165 ; WX 500 ; N yen ; B 89 0 677 750 ; C 166 ; WX 500 ; N florin ; B -28 -185 651 763 ; C 167 ; WX 500 ; N section ; B 48 -183 572 768 ; C 168 ; WX 500 ; N currency ; B 38 58 594 560 ; C 169 ; WX 250 ; N quotesingle ; B 165 468 342 739 ; C 170 ; WX 500 ; N quotedblleft ; B 192 495 568 766 ; C 171 ; WX 500 ; N guillemotleft ; B 117 62 514 447 ; C 172 ; WX 278 ; N guilsinglleft ; B 101 62 310 447 ; C 173 ; WX 278 ; N guilsinglright ; B 76 62 285 447 ; C 174 ; WX 500 ; N fi ; B 60 0 605 750 ; C 175 ; WX 500 ; N fl ; B 60 0 602 750 ; C 177 ; WX 500 ; N endash ; B 55 259 578 369 ; C 178 ; WX 500 ; N dagger ; B 127 -155 577 768 ; C 179 ; WX 500 ; N daggerdbl ; B 51 -161 579 768 ; C 180 ; WX 333 ; N periodcentered ; B 140 183 300 315 ; C 182 ; WX 550 ; N paragraph ; B 139 -116 685 750 ; C 183 ; WX 420 ; N bullet ; B 97 186 482 562 ; C 184 ; WX 278 ; N quotesinglbase ; B 58 -138 235 132 ; C 185 ; WX 500 ; N quotedblbase ; B 67 -138 441 132 ; C 186 ; WX 500 ; N quotedblright ; B 197 479 572 750 ; C 187 ; WX 500 ; N guillemotright ; B 94 62 491 447 ; C 188 ; WX 1000 ; N ellipsis ; B 101 0 927 132 ; C 189 ; WX 1111 ; N perthousand ; B 128 -18 1141 748 ; C 191 ; WX 500 ; N questiondown ; B 54 -190 476 579 ; C 193 ; WX 333 ; N grave ; B 166 629 384 775 ; C 194 ; WX 333 ; N acute ; B 217 629 497 775 ; C 195 ; WX 333 ; N circumflex ; B 127 644 480 790 ; C 196 ; WX 333 ; N tilde ; B 119 636 512 764 ; C 197 ; WX 333 ; N macron ; B 136 666 497 740 ; C 198 ; WX 333 ; N breve ; B 161 635 501 780 ; C 199 ; WX 333 ; N dotaccent ; B 240 644 391 759 ; C 200 ; WX 333 ; N dieresis ; B 142 644 489 759 ; C 202 ; WX 333 ; N ring ; B 215 632 432 845 ; C 203 ; WX 333 ; N cedilla ; B -4 -228 248 0 ; C 205 ; WX 333 ; N hungarumlaut ; B 118 634 613 780 ; C 206 ; WX 333 ; N ogonek ; B 63 -205 256 0 ; C 207 ; WX 333 ; N caron ; B 156 634 509 780 ; C 208 ; WX 1000 ; N emdash ; B 55 259 1078 369 ; C 225 ; WX 778 ; N AE ; B -22 0 909 750 ; C 227 ; WX 300 ; N ordfeminine ; B 82 291 421 768 ; C 232 ; WX 500 ; N Lslash ; B 49 0 497 750 ; C 233 ; WX 611 ; N Oslash ; B 34 -38 736 779 ; C 234 ; WX 833 ; N OE ; B 110 -18 950 768 ; C 235 ; WX 300 ; N ordmasculine ; B 84 291 417 768 ; C 241 ; WX 722 ; N ae ; B 69 -15 762 579 ; C 245 ; WX 278 ; N dotlessi ; B 74 0 324 564 ; C 248 ; WX 278 ; N lslash ; B 68 0 391 750 ; C 249 ; WX 500 ; N oslash ; B 2 -58 616 617 ; C 250 ; WX 722 ; N oe ; B 81 -15 763 579 ; C 251 ; WX 500 ; N germandbls ; B 60 -15 561 768 ; C -1 ; WX 556 ; N Aacute ; B 9 0 649 961 ; C -1 ; WX 556 ; N Acircumflex ; B 9 0 617 956 ; C -1 ; WX 556 ; N Adieresis ; B 9 0 641 945 ; C -1 ; WX 556 ; N Agrave ; B 9 0 547 961 ; C -1 ; WX 556 ; N Aring ; B 9 0 571 971 ; C -1 ; WX 556 ; N Atilde ; B 9 0 659 930 ; C -1 ; WX 556 ; N Ccedilla ; B 99 -228 630 768 ; C -1 ; WX 500 ; N Eacute ; B 64 0 621 961 ; C -1 ; WX 500 ; N Ecircumflex ; B 64 0 617 956 ; C -1 ; WX 500 ; N Edieresis ; B 64 0 617 945 ; C -1 ; WX 500 ; N Egrave ; B 64 0 617 961 ; C -1 ; WX 611 ; N Eth ; B 64 0 662 750 ; C -1 ; WX 278 ; N Iacute ; B 69 0 510 961 ; C -1 ; WX 278 ; N Icircumflex ; B 69 0 488 956 ; C -1 ; WX 278 ; N Idieresis ; B 69 0 502 945 ; C -1 ; WX 278 ; N Igrave ; B 69 0 397 961 ; C -1 ; WX 611 ; N Ntilde ; B 68 0 702 930 ; C -1 ; WX 611 ; N Oacute ; B 105 -18 676 961 ; C -1 ; WX 611 ; N Ocircumflex ; B 105 -18 664 956 ; C -1 ; WX 611 ; N Odieresis ; B 105 -18 668 945 ; C -1 ; WX 611 ; N Ograve ; B 105 -18 664 961 ; C -1 ; WX 611 ; N Otilde ; B 105 -18 686 930 ; C -1 ; WX 556 ; N Scaron ; B 85 -18 656 946 ; C -1 ; WX 556 ; N Thorn ; B 68 0 618 750 ; C -1 ; WX 611 ; N Uacute ; B 105 -18 703 961 ; C -1 ; WX 611 ; N Ucircumflex ; B 105 -18 703 956 ; C -1 ; WX 611 ; N Udieresis ; B 105 -18 703 945 ; C -1 ; WX 611 ; N Ugrave ; B 105 -18 703 961 ; C -1 ; WX 556 ; N Yacute ; B 171 0 704 961 ; C -1 ; WX 556 ; N Ydieresis ; B 171 0 704 945 ; C -1 ; WX 500 ; N Zcaron ; B 33 0 628 946 ; C -1 ; WX 500 ; N aacute ; B 68 -15 581 775 ; C -1 ; WX 500 ; N acircumflex ; B 68 -15 560 770 ; C -1 ; WX 500 ; N adieresis ; B 68 -15 573 759 ; C -1 ; WX 500 ; N agrave ; B 68 -15 525 775 ; C -1 ; WX 500 ; N aring ; B 68 -15 525 845 ; C -1 ; WX 500 ; N atilde ; B 68 -15 592 744 ; C -1 ; WX 250 ; N brokenbar ; B 75 0 334 750 ; C -1 ; WX 444 ; N ccedilla ; B 52 -228 494 579 ; C -1 ; WX 830 ; N copyright ; B 93 -18 897 768 ; C -1 ; WX 400 ; N degree ; B 174 450 481 750 ; C -1 ; WX 500 ; N divide ; B 67 6 540 492 ; C -1 ; WX 500 ; N eacute ; B 87 -15 581 775 ; C -1 ; WX 500 ; N ecircumflex ; B 87 -15 560 770 ; C -1 ; WX 500 ; N edieresis ; B 87 -15 573 759 ; C -1 ; WX 500 ; N egrave ; B 87 -15 529 775 ; C -1 ; WX 500 ; N eth ; B 81 -15 538 777 ; C -1 ; WX 278 ; N iacute ; B 74 0 470 775 ; C -1 ; WX 278 ; N icircumflex ; B 74 0 439 770 ; C -1 ; WX 278 ; N idieresis ; B 74 0 462 759 ; C -1 ; WX 278 ; N igrave ; B 74 0 357 775 ; C -1 ; WX 500 ; N logicalnot ; B 88 105 560 401 ; C -1 ; WX 500 ; N minus ; B 67 194 540 304 ; C -1 ; WX 500 ; N mu ; B 18 -189 551 564 ; C -1 ; WX 500 ; N multiply ; B 48 22 560 476 ; C -1 ; WX 500 ; N ntilde ; B 61 0 592 744 ; C -1 ; WX 500 ; N oacute ; B 88 -15 581 775 ; C -1 ; WX 500 ; N ocircumflex ; B 88 -15 560 770 ; C -1 ; WX 500 ; N odieresis ; B 88 -15 573 759 ; C -1 ; WX 500 ; N ograve ; B 88 -15 531 775 ; C -1 ; WX 750 ; N onehalf ; B 108 0 813 750 ; C -1 ; WX 750 ; N onequarter ; B 131 0 788 750 ; C -1 ; WX 300 ; N onesuperior ; B 180 300 410 750 ; C -1 ; WX 500 ; N otilde ; B 88 -15 592 744 ; C -1 ; WX 500 ; N plusminus ; B 23 -15 556 513 ; C -1 ; WX 830 ; N registered ; B 93 -18 897 768 ; C -1 ; WX 444 ; N scaron ; B 55 -15 551 760 ; C -1 ; WX 500 ; N thorn ; B 18 -189 528 750 ; C -1 ; WX 750 ; N threequarters ; B 96 0 816 750 ; C -1 ; WX 300 ; N threesuperior ; B 96 290 416 750 ; C -1 ; WX 860 ; N trademark ; B 144 346 933 750 ; C -1 ; WX 300 ; N twosuperior ; B 77 300 425 752 ; C -1 ; WX 500 ; N uacute ; B 78 -15 581 775 ; C -1 ; WX 500 ; N ucircumflex ; B 78 -15 562 780 ; C -1 ; WX 500 ; N udieresis ; B 78 -15 573 759 ; C -1 ; WX 500 ; N ugrave ; B 78 -15 551 775 ; C -1 ; WX 444 ; N yacute ; B 36 -195 553 775 ; C -1 ; WX 444 ; N ydieresis ; B 36 -195 549 759 ; C -1 ; WX 389 ; N zcaron ; B 23 0 533 760 ; EndCharMetrics StartKernData StartKernPairs 115 KPX A y -18 KPX A w -18 KPX A v -18 KPX A quoteright -55 KPX A Y -55 KPX A W -37 KPX A V -37 KPX A T -55 KPX F period -111 KPX F comma -111 KPX F A -37 KPX L y -37 KPX L quoteright -92 KPX L Y -92 KPX L W -74 KPX L V -74 KPX L T -74 KPX P period -129 KPX P comma -129 KPX P A -37 KPX R y 0 KPX R Y -18 KPX R W 0 KPX R V 0 KPX R T -18 KPX T y -55 KPX T w -74 KPX T u -74 KPX T semicolon -74 KPX T s -74 KPX T r -74 KPX T period -92 KPX T o -74 KPX T i -18 KPX T hyphen -55 KPX T e -74 KPX T comma -92 KPX T colon -74 KPX T c -74 KPX T a -74 KPX T A -55 KPX V y 0 KPX V u -18 KPX V semicolon -18 KPX V r -18 KPX V period -92 KPX V o -18 KPX V i 0 KPX V hyphen -18 KPX V e -18 KPX V comma -92 KPX V colon -18 KPX V a -18 KPX V A -37 KPX W y 0 KPX W u 0 KPX W semicolon 0 KPX W r 0 KPX W period -74 KPX W o -18 KPX W i 0 KPX W hyphen -18 KPX W e -18 KPX W comma -74 KPX W colon 0 KPX W a -18 KPX W A -18 KPX Y v -18 KPX Y u -37 KPX Y semicolon -37 KPX Y q -55 KPX Y period -111 KPX Y p -37 KPX Y o -55 KPX Y i -18 KPX Y hyphen -74 KPX Y e -55 KPX Y comma -111 KPX Y colon -37 KPX Y a -55 KPX Y A -55 KPX f quoteright 18 KPX f f 0 KPX quoteleft quoteleft -18 KPX quoteright t 0 KPX quoteright s -55 KPX quoteright quoteright -18 KPX r z 20 KPX r y 18 KPX r x 20 KPX r w 18 KPX r v 18 KPX r u 0 KPX r t 0 KPX r r 0 KPX r quoteright 0 KPX r q 0 KPX r period -74 KPX r o 0 KPX r n 0 KPX r m 0 KPX r hyphen -37 KPX r h 0 KPX r g 0 KPX r f 0 KPX r e 0 KPX r d 0 KPX r comma -74 KPX r c 0 KPX v period -55 KPX v comma -55 KPX w period -37 KPX w comma -37 KPX y period -55 KPX y comma -55 EndKernPairs EndKernData StartComposites 58 CC Zcaron 2 ; PCC Z 0 0 ; PCC caron 83 190 ; CC zcaron 2 ; PCC z 0 0 ; PCC caron 28 0 ; CC Scaron 2 ; PCC S 0 0 ; PCC caron 111 190 ; CC scaron 2 ; PCC s 0 0 ; PCC caron 55 0 ; CC Ccedilla 2 ; PCC C 0 0 ; PCC cedilla 124 0 ; CC ccedilla 2 ; PCC c 0 0 ; PCC cedilla 61 0 ; CC Yacute 2 ; PCC Y 0 0 ; PCC acute 111 186 ; CC yacute 2 ; PCC y 0 0 ; PCC acute 55 0 ; CC Ydieresis 2 ; PCC Y 0 0 ; PCC dieresis 111 190 ; CC ydieresis 2 ; PCC y 0 0 ; PCC dieresis 55 0 ; CC Uacute 2 ; PCC U 0 0 ; PCC acute 142 190 ; CC Ucircumflex 2 ; PCC U 0 0 ; PCC circumflex 142 190 ; CC Udieresis 2 ; PCC U 0 0 ; PCC dieresis 142 190 ; CC Ugrave 2 ; PCC U 0 0 ; PCC grave 142 190 ; CC uacute 2 ; PCC u 0 0 ; PCC acute 83 0 ; CC ucircumflex 2 ; PCC u 0 0 ; PCC circumflex 83 0 ; CC udieresis 2 ; PCC u 0 0 ; PCC dieresis 83 0 ; CC ugrave 2 ; PCC u 0 0 ; PCC grave 83 0 ; CC Iacute 2 ; PCC I 0 0 ; PCC acute -27 190 ; CC Icircumflex 2 ; PCC I 0 0 ; PCC circumflex -27 190 ; CC Idieresis 2 ; PCC I 0 0 ; PCC dieresis -27 190 ; CC Igrave 2 ; PCC I 0 0 ; PCC grave -27 190 ; CC iacute 2 ; PCC dotlessi 0 0 ; PCC acute -27 0 ; CC icircumflex 2 ; PCC dotlessi 0 0 ; PCC circumflex -27 0 ; CC idieresis 2 ; PCC dotlessi 0 0 ; PCC dieresis -27 0 ; CC igrave 2 ; PCC dotlessi 0 0 ; PCC grave -27 0 ; CC Eacute 2 ; PCC E 0 0 ; PCC acute 104 190 ; CC Ecircumflex 2 ; PCC E 0 0 ; PCC circumflex 104 190 ; CC Edieresis 2 ; PCC E 0 0 ; PCC dieresis 104 190 ; CC Egrave 2 ; PCC E 0 0 ; PCC grave 104 190 ; CC eacute 2 ; PCC e 0 0 ; PCC acute 83 0 ; CC ecircumflex 2 ; PCC e 0 0 ; PCC circumflex 83 0 ; CC edieresis 2 ; PCC e 0 0 ; PCC dieresis 83 0 ; CC egrave 2 ; PCC e 0 0 ; PCC grave 83 0 ; CC Aacute 2 ; PCC A 0 0 ; PCC acute 114 190 ; CC Acircumflex 2 ; PCC A 0 0 ; PCC circumflex 114 190 ; CC Adieresis 2 ; PCC A 0 0 ; PCC dieresis 114 190 ; CC Agrave 2 ; PCC A 0 0 ; PCC grave 114 190 ; CC aacute 2 ; PCC a 0 0 ; PCC acute 83 0 ; CC acircumflex 2 ; PCC a 0 0 ; PCC circumflex 83 0 ; CC adieresis 2 ; PCC a 0 0 ; PCC dieresis 83 0 ; CC agrave 2 ; PCC a 0 0 ; PCC grave 83 0 ; CC Oacute 2 ; PCC O 0 0 ; PCC acute 139 190 ; CC Ocircumflex 2 ; PCC O 0 0 ; PCC circumflex 139 190 ; CC Odieresis 2 ; PCC O 0 0 ; PCC dieresis 139 190 ; CC Ograve 2 ; PCC O 0 0 ; PCC grave 139 190 ; CC oacute 2 ; PCC o 0 0 ; PCC acute 83 0 ; CC ocircumflex 2 ; PCC o 0 0 ; PCC circumflex 83 0 ; CC odieresis 2 ; PCC o 0 0 ; PCC dieresis 83 0 ; CC ograve 2 ; PCC o 0 0 ; PCC grave 83 0 ; CC Atilde 2 ; PCC A 0 0 ; PCC tilde 114 190 ; CC atilde 2 ; PCC a 0 0 ; PCC tilde 83 0 ; CC Ntilde 2 ; PCC N 0 0 ; PCC tilde 145 190 ; CC ntilde 2 ; PCC n 0 0 ; PCC tilde 90 0 ; CC Otilde 2 ; PCC O 0 0 ; PCC tilde 139 190 ; CC otilde 2 ; PCC o 0 0 ; PCC tilde 83 0 ; CC Aring 2 ; PCC A 0 0 ; PCC ring 114 190 ; CC aring 2 ; PCC a 0 0 ; PCC ring 83 0 ; EndComposites EndFontMetrics gle-graphics-4.2.4c/src/fonts/texcmtt.afm0000664000000000000000000001433011676336540017042 0ustar rootrootStartFontMetrics 2.0 Comment Made from TEX tfm file using TFMTOAFM.bas FontName CMTT10 EncodingScheme TEXENCODING FullName CMTT10 FamilyName CMTT10 Weight Medium ItalicAngle 0 IsFixedPitch false UnderlinePosition -97 UnderlineThickness 73 FontBBox 0 -300 1001 1001 CapHeight 729 XHeight 151 Descender -219 Ascender 729 StartCharMetrics 127 C 1 ; WX 524 ; N C1 ; B 0 0 524 611 ; C 2 ; WX 524 ; N C2 ; B 0 0 524 611 ; C 3 ; WX 524 ; N C3 ; B 0 0 524 611 ; C 4 ; WX 524 ; N C4 ; B 0 0 524 611 ; C 5 ; WX 524 ; N C5 ; B 0 0 524 611 ; C 6 ; WX 524 ; N C6 ; B 0 0 524 611 ; C 7 ; WX 524 ; N C7 ; B 0 0 524 611 ; C 8 ; WX 524 ; N C8 ; B 0 0 524 611 ; C 9 ; WX 524 ; N C9 ; B 0 0 524 611 ; C 10 ; WX 524 ; N C10 ; B 0 0 524 611 ; C 11 ; WX 524 ; N C11 ; B 0 0 524 611 ; C 12 ; WX 524 ; N C12 ; B 0 0 524 611 ; C 13 ; WX 524 ; N C13 ; B 0 0 524 611 ; C 14 ; WX 524 ; N C14 ; B 0 -222 524 388 ; C 15 ; WX 524 ; N C15 ; B 0 -222 524 388 ; C 16 ; WX 524 ; N C16 ; B 0 0 524 430 ; C 17 ; WX 524 ; N C17 ; B 0 -222 524 430 ; C 18 ; WX 524 ; N C18 ; B 0 0 524 611 ; C 19 ; WX 524 ; N C19 ; B 0 0 524 611 ; C 20 ; WX 524 ; N C20 ; B 0 0 524 565 ; C 21 ; WX 524 ; N C21 ; B 0 0 524 611 ; C 22 ; WX 524 ; N C22 ; B 0 0 524 565 ; C 23 ; WX 524 ; N C23 ; B 0 0 524 611 ; C 24 ; WX 524 ; N C24 ; B 0 -194 524 0 ; C 25 ; WX 524 ; N C25 ; B 0 0 524 611 ; C 26 ; WX 524 ; N C26 ; B 0 0 524 430 ; C 27 ; WX 524 ; N C27 ; B 0 0 524 430 ; C 28 ; WX 524 ; N C28 ; B 0 -111 524 541 ; C 29 ; WX 524 ; N C29 ; B 0 0 524 611 ; C 30 ; WX 524 ; N C30 ; B 0 0 524 611 ; C 31 ; WX 524 ; N C31 ; B 0 -55 524 666 ; C 32 ; WX 369 ; N C32 ; B 0 -111 369 219 ; C 33 ; WX 524 ; N C33 ; B 0 0 524 611 ; C 34 ; WX 524 ; N C34 ; B 0 0 524 611 ; C 35 ; WX 524 ; N C35 ; B 0 0 524 611 ; C 36 ; WX 524 ; N C36 ; B 0 -83 524 694 ; C 37 ; WX 524 ; N C37 ; B 0 -83 524 694 ; C 38 ; WX 524 ; N C38 ; B 0 0 524 611 ; C 39 ; WX 524 ; N C39 ; B 0 0 524 611 ; C 40 ; WX 524 ; N C40 ; B 0 -83 524 694 ; C 41 ; WX 524 ; N C41 ; B 0 -83 524 694 ; C 42 ; WX 524 ; N C42 ; B 0 0 524 520 ; C 43 ; WX 524 ; N C43 ; B 0 81 524 530 ; C 44 ; WX 524 ; N C44 ; B 0 -138 524 125 ; C 45 ; WX 524 ; N C45 ; B 0 81 524 530 ; C 46 ; WX 524 ; N C46 ; B 0 0 524 125 ; C 47 ; WX 524 ; N C47 ; B 0 -83 524 694 ; C 48 ; WX 524 ; N C48 ; B 0 0 524 611 ; C 49 ; WX 524 ; N C49 ; B 0 0 524 611 ; C 50 ; WX 524 ; N C50 ; B 0 0 524 611 ; C 51 ; WX 524 ; N C51 ; B 0 0 524 611 ; C 52 ; WX 524 ; N C52 ; B 0 0 524 611 ; C 53 ; WX 524 ; N C53 ; B 0 0 524 611 ; C 54 ; WX 524 ; N C54 ; B 0 0 524 611 ; C 55 ; WX 524 ; N C55 ; B 0 0 524 611 ; C 56 ; WX 524 ; N C56 ; B 0 0 524 611 ; C 57 ; WX 524 ; N C57 ; B 0 0 524 611 ; C 58 ; WX 524 ; N C58 ; B 0 0 524 430 ; C 59 ; WX 524 ; N C59 ; B 0 -138 524 430 ; C 60 ; WX 524 ; N C60 ; B 0 56 524 555 ; C 61 ; WX 524 ; N C61 ; B 0 196 524 415 ; C 62 ; WX 524 ; N C62 ; B 0 56 524 555 ; C 63 ; WX 524 ; N C63 ; B 0 0 524 611 ; C 64 ; WX 524 ; N C64 ; B 0 0 524 611 ; C 65 ; WX 524 ; N A ; B 0 0 524 611 ; C 66 ; WX 524 ; N B ; B 0 0 524 611 ; C 67 ; WX 524 ; N C ; B 0 0 524 611 ; C 68 ; WX 524 ; N D ; B 0 0 524 611 ; C 69 ; WX 524 ; N E ; B 0 0 524 611 ; C 70 ; WX 524 ; N F ; B 0 0 524 611 ; C 71 ; WX 524 ; N G ; B 0 0 524 611 ; C 72 ; WX 524 ; N H ; B 0 0 524 611 ; C 73 ; WX 524 ; N I ; B 0 0 524 611 ; C 74 ; WX 524 ; N J ; B 0 0 524 611 ; C 75 ; WX 524 ; N K ; B 0 0 524 611 ; C 76 ; WX 524 ; N L ; B 0 0 524 611 ; C 77 ; WX 524 ; N M ; B 0 0 524 611 ; C 78 ; WX 524 ; N N ; B 0 0 524 611 ; C 79 ; WX 524 ; N O ; B 0 0 524 611 ; C 80 ; WX 524 ; N P ; B 0 0 524 611 ; C 81 ; WX 524 ; N Q ; B 0 -138 524 611 ; C 82 ; WX 524 ; N R ; B 0 0 524 611 ; C 83 ; WX 524 ; N S ; B 0 0 524 611 ; C 84 ; WX 524 ; N T ; B 0 0 524 611 ; C 85 ; WX 524 ; N U ; B 0 0 524 611 ; C 86 ; WX 524 ; N V ; B 0 0 524 611 ; C 87 ; WX 524 ; N W ; B 0 0 524 611 ; C 88 ; WX 524 ; N X ; B 0 0 524 611 ; C 89 ; WX 524 ; N Y ; B 0 0 524 611 ; C 90 ; WX 524 ; N Z ; B 0 0 524 611 ; C 91 ; WX 524 ; N C91 ; B 0 -83 524 694 ; C 92 ; WX 524 ; N C92 ; B 0 -83 524 694 ; C 93 ; WX 524 ; N C93 ; B 0 -83 524 694 ; C 94 ; WX 524 ; N C94 ; B 0 0 524 611 ; C 95 ; WX 524 ; N C95 ; B 0 -95 524 0 ; C 96 ; WX 524 ; N C96 ; B 0 0 524 611 ; C 97 ; WX 524 ; N a ; B 0 0 524 430 ; C 98 ; WX 524 ; N b ; B 0 0 524 611 ; C 99 ; WX 524 ; N c ; B 0 0 524 430 ; C 100 ; WX 524 ; N d ; B 0 0 524 611 ; C 101 ; WX 524 ; N e ; B 0 0 524 430 ; C 102 ; WX 524 ; N f ; B 0 0 524 611 ; C 103 ; WX 524 ; N g ; B 0 -222 524 430 ; C 104 ; WX 524 ; N h ; B 0 0 524 611 ; C 105 ; WX 524 ; N i ; B 0 0 524 611 ; C 106 ; WX 524 ; N j ; B 0 -222 524 611 ; C 107 ; WX 524 ; N k ; B 0 0 524 611 ; C 108 ; WX 524 ; N l ; B 0 0 524 611 ; C 109 ; WX 524 ; N m ; B 0 0 524 430 ; C 110 ; WX 524 ; N n ; B 0 0 524 430 ; C 111 ; WX 524 ; N o ; B 0 0 524 430 ; C 112 ; WX 524 ; N p ; B 0 -222 524 430 ; C 113 ; WX 524 ; N q ; B 0 -222 524 430 ; C 114 ; WX 524 ; N r ; B 0 0 524 430 ; C 115 ; WX 524 ; N s ; B 0 0 524 430 ; C 116 ; WX 524 ; N t ; B 0 0 524 553 ; C 117 ; WX 524 ; N u ; B 0 0 524 430 ; C 118 ; WX 524 ; N v ; B 0 0 524 430 ; C 119 ; WX 524 ; N w ; B 0 0 524 430 ; C 120 ; WX 524 ; N x ; B 0 0 524 430 ; C 121 ; WX 524 ; N y ; B 0 -222 524 430 ; C 122 ; WX 524 ; N z ; B 0 0 524 430 ; C 123 ; WX 524 ; N C123 ; B 0 -83 524 694 ; C 124 ; WX 524 ; N C124 ; B 0 -83 524 694 ; C 125 ; WX 524 ; N C125 ; B 0 -83 524 694 ; C 126 ; WX 524 ; N C126 ; B 0 0 524 611 ; C 127 ; WX 524 ; N C127 ; B 0 0 524 611 ; EndCharMetrics StartKernData StartKernPairs 0 EndKernPairs EndKernData EndFontMetrics gle-graphics-4.2.4c/src/fonts/glemark.gle0000664000000000000000000001144611676337276017014 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !1 Triangle !2 Filled Triangle !3 White Triangle !4 Square !5 Filled Square !6 White Square !7 Circle !8 Filled Circle !9 White Circle !10 Diamond !11 Filled Diamond !12 White Diamond !13 Cross !14 Plus !15 Minus dfont file_name="GLEMARK" dfont font_name="GLEMARK" dfont design= 10 dfont x_hei= 5 dfont quad= 5 dfont paint="FILL" !------------------ end of main parameters dfont char=1 dfont wid=10 hei=10 size 20 20 amove 0 0 rline 10 0 rline -5 10 closepath stroke dfont endchar dfont char=2 dfont wid=10 hei=10 size 20 20 amove 0 0 rline 10 0 rline -5 10 closepath fill stroke dfont endchar dfont char=3 dfont wid=10 hei=10 size 20 20 amove 0 0 rline 10 0 rline -5 10 closepath fillwhite stroke dfont endchar dfont char=4 dfont wid=10 hei=10 size 20 20 amove 0 0 rline 10 0 rline 0 10 rline -10 0 closepath stroke dfont endchar dfont char=5 dfont wid=10 hei=10 size 20 20 amove 0 0 rline 10 0 rline 0 10 rline -10 0 closepath fill stroke dfont endchar dfont char=6 dfont wid=10 hei=10 size 20 20 amove 0 0 rline 10 0 rline 0 10 rline -10 0 closepath fillwhite stroke dfont endchar dfont char=7 dfont wid=10 hei=10 size 20 20 asetpos 5 5 circle 5 closepath stroke dfont endchar dfont char=8 dfont wid=10 hei=10 size 20 20 asetpos 5 5 circle 5 closepath fill stroke dfont endchar dfont char=9 dfont wid=10 hei=10 size 20 20 asetpos 5 5 circle 5 closepath fillwhite stroke dfont endchar dfont char=10 dfont wid=10 hei=10 size 20 20 amove 5 0 rline 5 5 rline -5 5 rline -5 -5 closepath stroke dfont endchar dfont char=11 dfont wid=10 hei=10 size 20 20 amove 5 0 rline 5 5 rline -5 5 rline -5 -5 closepath fill stroke dfont endchar dfont char=12 dfont wid=10 hei=10 size 20 20 amove 5 0 rline 5 5 rline -5 5 rline -5 -5 closepath fillwhite stroke dfont endchar dfont char=13 dfont wid=10 hei=10 size 20 20 amove 0 0 aline 10 10 amove 0 10 aline 10 0 stroke dfont endchar dfont char=14 dfont wid=10 hei=10 size 20 20 amove 5 0 aline 5 10 amove 0 5 aline 10 5 stroke dfont endchar dfont char=15 dfont wid=10 hei=10 size 20 20 amove 0 5 rline 10 0 stroke dfont endchar gle-graphics-4.2.4c/src/fonts/texcmr.gle0000664000000000000000000057412111676336540016671 0ustar rootrootdfont file_name="CMR10" dfont font_name="CMR10" dfont design= .35146 dfont slant= 0 dfont space= .117153 dfont stretch= .585767E-01 dfont shrink= .390513E-01 dfont x_hei= .151323 dfont quad= .351461 dfont extra_space= .390513E-01 dfont paint="FILL" !------------------ end of main parameters dfont char=0 !-------------- Beginning of new char. dfont wid=.625002 hei=.683332 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .194945 .23749 bezier .198226 .21092 .201189 .185012 .20447 .15875 aline .196215 .15875 bezier .192981 .180937 .191278 .212159 .165735 .22225 aline .16002 .224155 aline .15367 .225425 aline .153035 .22606 aline .14986 .22606 aline .149225 .226695 aline .14224 .226695 aline .141605 .22733 aline .0889 .22733 aline .088265 .226695 aline .08509 .22606 aline .083185 .225425 aline .081915 .22479 aline .08128 .22352 aline .080645 .222885 aline .08001 .220345 aline .079375 .21971 aline .079375 .019685 bezier .828513E-01 .950903E-02 .946233E-01 .107478E-01 .10287 .009525 aline .12446 .009525 aline .12446 -.000635 aline .1143 -.000635 aline .113665 0 aline .07366 0 aline .073025 .000635 aline .056515 .000635 aline .05588 0 aline .022225 0 aline .02159 -.000635 aline .0127 -.000635 aline .0127 .009525 bezier .024627 .107861E-01 .395101E-01 .617012E-02 .047625 .01651 aline .04826 .01905 aline .048895 .019685 aline .048895 .21717 bezier .470266E-01 .226372 .369063E-01 .226479 .029845 .22733 aline .0127 .22733 aline .0127 .23749 aline .194945 .23749 closepath ! end of curve fill dfont endchar dfont char=1 !-------------- Beginning of new char. dfont wid=.833336 hei=.683332 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .14986 .25019 aline .15113 .249555 aline .1524 .24892 aline .15367 .24765 aline .19431 .16637 aline .207645 .1397 aline .20828 .137795 aline .24892 .056515 aline .27559 .003175 aline .27559 .000635 aline .27432 -.000635 aline .018415 -.000635 aline .017145 .000635 aline .017145 .003175 aline .057785 .084455 aline .084455 .137795 aline .08509 .1397 aline .12573 .22098 aline .139065 .24765 aline .140335 .24892 aline .141605 .249555 aline .142875 .25019 closepath ! end of curve ! start of curve amove .133985 .213995 aline .13335 .212725 aline .095885 .137795 aline .09525 .13589 aline .05461 .05461 aline .04064 .02667 aline .040005 .026035 aline .04064 .0254 aline .229235 .0254 aline .22987 .026035 aline .229235 .02667 aline .2286 .02794 aline .227965 .029845 aline .187325 .111125 aline .146685 .192405 aline .135467 .214842 aline .134938 .215106 aline .134408 .214842 closepath ! end of curve fill dfont endchar dfont char=2 !-------------- Beginning of new char. dfont wid=.777781 hei=.683332 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .144145 .24638 bezier .203945 .242778 .250391 .185202 .25273 .127635 bezier .258235 .666173E-01 .214732 -.681331E-04 .15113 -.006985 bezier .918884E-01 -.017422 .333816E-01 .313885E-01 .02286 .09017 bezier .874393E-02 .152709 .457141E-01 .22874 .112395 .24384 aline .118745 .24511 aline .12192 .24511 aline .122555 .245745 aline .12827 .245745 aline .128905 .24638 aline .144145 .24638 closepath ! end of curve ! start of curve amove .130175 .23876 bezier .830441E-01 .233834 .574213E-01 .182237 .055245 .140335 bezier .503847E-01 .961183E-01 .576358E-01 .429954E-01 .095885 .013335 bezier .124861 -.983773E-02 .16888 -.002315 .191135 .02667 bezier .221767 .064376 .22335 .117195 .21463 .16129 bezier .207479 .201713 .174556 .242384 .13081 .239395 aline .130175 .23876 closepath ! end of curve ! start of curve amove .083185 .14478 aline .083185 .13335 aline .08382 .132715 aline .18923 .132715 aline .189865 .13335 aline .189865 .14478 aline .19812 .14478 aline .19812 .094615 aline .189865 .094615 aline .189865 .106045 aline .18923 .10668 aline .08382 .10668 aline .083185 .106045 aline .083185 .094615 aline .07493 .094615 aline .07493 .14478 aline .083185 .14478 closepath ! end of curve fill dfont endchar dfont char=3 !-------------- Beginning of new char. dfont wid=.694446 hei=.683332 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .125095 .25019 aline .126365 .249555 bezier .143162 .207807 .154615 .162918 .169545 .120015 bezier .181667 .848362E-01 .190687 .479862E-01 .205105 .01397 aline .206375 .013335 aline .20701 .0127 aline .20828 .012065 aline .210185 .01143 aline .212725 .010795 aline .21336 .01016 aline .21844 .01016 aline .219075 .009525 aline .231775 .009525 aline .231775 -.000635 aline .225425 -.000635 aline .22479 0 aline .197485 0 aline .19685 .000635 aline .18288 .000635 aline .182245 0 aline .14859 0 aline .147955 -.000635 aline .139065 -.000635 aline .139065 .009525 bezier .149433 .976592E-02 .163115 .868775E-02 .16891 .01905 bezier .150703 .789768E-01 .130769 .139513 .111125 .19939 bezier .926656E-01 .143411 .754097E-01 .867761E-01 .056515 .031115 bezier .548415E-01 .164829E-01 .716333E-01 .881696E-02 .08382 .009525 aline .08382 -.000635 aline .076835 -.000635 aline .0762 0 aline .048895 0 aline .04826 .000635 aline .0381 .000635 aline .037465 0 aline .017145 0 aline .01651 -.000635 aline .012065 -.000635 aline .012065 .009525 bezier .252749E-01 .924324E-02 .402571E-01 .155725E-01 .045085 .02921 bezier .687678E-01 .101961 .918179E-01 .174957 .11557 .24765 aline .117475 .249555 aline .118745 .25019 closepath ! end of curve fill dfont endchar dfont char=4 !-------------- Beginning of new char. dfont wid=.666669 hei=.683332 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .213995 .236855 bezier .215143 .218689 .215979 .200393 .21717 .182245 aline .208915 .182245 bezier .207406 .192088 .209695 .204022 .20193 .211455 aline .198755 .211455 aline .19812 .21209 aline .18923 .21209 aline .188595 .212725 aline .04572 .212725 bezier .392714E-01 .211251 .281353E-01 .214152 .02794 .203835 aline .027305 .2032 aline .027305 .200025 aline .02667 .19939 aline .02667 .194945 aline .026035 .19431 aline .026035 .187325 aline .0254 .18669 aline .0254 .182245 aline .017145 .182245 bezier .183358E-01 .200393 .191724E-01 .218689 .02032 .236855 aline .213995 .236855 closepath ! end of curve ! start of curve amove .057785 .153035 aline .057785 .13589 aline .05842 .135255 aline .175895 .135255 aline .17653 .13589 aline .17653 .153035 aline .184785 .153035 aline .184785 .093345 aline .17653 .093345 aline .17653 .11049 aline .175895 .111125 aline .05842 .111125 aline .057785 .11049 aline .057785 .093345 aline .04953 .093345 aline .04953 .153035 aline .057785 .153035 closepath ! end of curve ! start of curve amove .023495 .057785 bezier .246819E-01 .469794E-01 .232856E-01 .356064E-01 .02921 .026035 aline .031115 .0254 aline .03175 .024765 aline .034925 .024765 aline .03556 .02413 aline .045085 .02413 aline .04572 .023495 aline .188595 .023495 aline .18923 .02413 aline .198755 .02413 bezier .209432 .240473E-01 .208533 .372513E-01 .210185 .04445 aline .210185 .05207 aline .21082 .052705 aline .21082 .057785 aline .219075 .057785 bezier .217993 .383214E-01 .216982 .188286E-01 .2159 -.000635 aline .018415 -.000635 bezier .173331E-01 .188286E-01 .163219E-01 .383214E-01 .01524 .057785 aline .023495 .057785 closepath ! end of curve fill dfont endchar dfont char=5 !-------------- Beginning of new char. dfont wid=.750002 hei=.683332 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .250825 .23749 aline .250825 .22733 bezier .238898 .226069 .224015 .230685 .2159 .220345 aline .215265 .217805 aline .21463 .21717 aline .21463 .019685 bezier .216498 .104831E-01 .226619 .103757E-01 .23368 .009525 aline .250825 .009525 aline .250825 -.000635 aline .241935 -.000635 aline .2413 0 aline .207645 0 aline .20701 .000635 aline .19177 .000635 aline .191135 0 aline .15748 0 aline .156845 -.000635 aline .147955 -.000635 aline .147955 .009525 bezier .159882 .107861E-01 .174765 .617013E-02 .18288 .01651 aline .183515 .01905 aline .18415 .019685 aline .18415 .226695 aline .183515 .22733 aline .08001 .22733 aline .079375 .226695 aline .079375 .019685 bezier .812434E-01 .104831E-01 .913637E-01 .103757E-01 .098425 .009525 aline .11557 .009525 aline .11557 -.000635 aline .10668 -.000635 aline .106045 0 aline .07239 0 aline .071755 .000635 aline .056515 .000635 aline .05588 0 aline .022225 0 aline .02159 -.000635 aline .0127 -.000635 aline .0127 .009525 bezier .024627 .107861E-01 .395101E-01 .617012E-02 .047625 .01651 aline .04826 .01905 aline .048895 .019685 aline .048895 .21717 bezier .470266E-01 .226372 .369063E-01 .226479 .029845 .22733 aline .0127 .22733 aline .0127 .23749 aline .250825 .23749 closepath ! end of curve fill dfont endchar dfont char=6 !-------------- Beginning of new char. dfont wid=.722224 hei=.683332 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .224155 .23876 bezier .227436 .21219 .230399 .186282 .23368 .16002 aline .225425 .16002 bezier .222959 .186351 .212359 .220976 .180975 .22479 bezier .171356 .227755 .16112 .227316 .15113 .2286 aline .060325 .2286 bezier .826713E-01 .192186 .10983 .156269 .133985 .120015 bezier .130414 .110781 .120579 .104309 .114935 .095885 bezier .911165E-01 .685998E-01 .648157E-01 .406685E-01 .04318 .013335 aline .150495 .013335 bezier .172442 .149665E-01 .201242 .016376 .21336 .03937 bezier .220687 .527414E-01 .223789 .675913E-01 .225425 .081915 aline .23368 .081915 bezier .230339 .544072E-01 .227499 .271791E-01 .224155 -.000635 aline .02286 -.000635 aline .02159 0 aline .020955 .000635 aline .02032 .001905 bezier .244866E-01 .123754E-01 .035457 .197021E-01 .04191 .02921 bezier .642354E-01 .539618E-01 .860626E-01 .790726E-01 .10795 .10414 bezier .078301 .145945 .498463E-01 .188611 .02032 .230505 aline .02032 .23622 aline .020955 .23749 aline .02159 .238125 aline .02286 .23876 closepath ! end of curve fill dfont endchar dfont char=7 !-------------- Beginning of new char. dfont wid=.777781 hei=.683332 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .07112 .24638 bezier .112825 .24244 .131355 .196391 .136525 .16002 bezier .141925 .194899 .157739 .238019 .19685 .245745 bezier .218604 .250959 .2411 .236691 .248285 .2159 aline .250825 .20828 aline .25146 .20574 aline .25146 .202565 aline .252095 .20193 aline .252095 .19812 aline .25273 .197485 aline .25273 .189865 aline .252095 .188595 aline .249555 .187325 aline .245745 .187325 aline .243205 .188595 bezier .243274 .214442 .210806 .226948 .189865 .2159 bezier .161963 .202764 .155946 .166667 .1524 .140335 aline .1524 .13208 aline .151765 .131445 aline .151765 .019685 bezier .155241 .950903E-02 .167013 .107478E-01 .17526 .009525 aline .19685 .009525 aline .19685 -.000635 aline .18669 -.000635 aline .186055 0 aline .14605 0 aline .145415 .000635 aline .127635 .000635 aline .127 0 aline .086995 0 aline .08636 -.000635 aline .0762 -.000635 aline .0762 .009525 aline .09779 .009525 bezier .106037 .107478E-01 .117809 .950903E-02 .121285 .019685 aline .121285 .131445 bezier .118528 .160259 .113927 .198542 .08509 .215265 bezier .646082E-01 .226675 .304271E-01 .2163 .03048 .189865 aline .029845 .188595 aline .027305 .187325 aline .023495 .187325 aline .020955 .188595 bezier .168487E-01 .216337 .396086E-01 .250788 .07112 .24638 closepath ! end of curve fill dfont endchar dfont char=8 !-------------- Beginning of new char. dfont wid=.722224 hei=.683332 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .076835 .23876 aline .07747 .238125 aline .116205 .238125 aline .11684 .23749 aline .135255 .23749 aline .13589 .238125 aline .174625 .238125 aline .17526 .23876 aline .18542 .23876 aline .18542 .2286 aline .16383 .2286 bezier .155583 .227377 .143811 .228616 .140335 .21844 aline .140335 .19177 bezier .177618 .188259 .22359 .169367 .233045 .12827 bezier .23955 .903175E-01 .203205 .610002E-01 .169545 .05207 aline .16764 .051435 aline .16002 .04953 aline .15367 .04826 aline .14986 .04826 aline .149225 .047625 aline .14478 .047625 aline .144145 .04699 aline .14097 .04699 aline .140335 .046355 aline .140335 .019685 bezier .143811 .950903E-02 .155583 .107478E-01 .16383 .009525 aline .18542 .009525 aline .18542 -.000635 aline .17526 -.000635 aline .174625 0 aline .13589 0 aline .135255 .000635 aline .11684 .000635 aline .116205 0 aline .07747 0 aline .076835 -.000635 aline .066675 -.000635 aline .066675 .009525 aline .088265 .009525 bezier .965117E-01 .107478E-01 .108284 .950903E-02 .11176 .019685 aline .11176 .046355 bezier .748177E-01 .507239E-01 .302523E-01 .693703E-01 .020955 .109855 bezier .144497E-01 .147808 .507948E-01 .177125 .084455 .186055 aline .08636 .18669 aline .09398 .188595 aline .10033 .189865 aline .10414 .189865 aline .104775 .1905 aline .10922 .1905 aline .109855 .191135 aline .11176 .19177 aline .11176 .21844 bezier .108284 .228616 .965117E-01 .227377 .088265 .2286 aline .066675 .2286 aline .066675 .23876 aline .076835 .23876 closepath ! end of curve ! start of curve amove .140335 .183515 aline .140335 .05461 bezier .16555 .557187E-01 .193999 .730727E-01 .197485 .100965 bezier .204593 .129515 .194704 .168214 .16256 .178435 aline .15494 .180975 aline .14986 .182245 aline .149225 .18288 aline .14605 .18288 aline .145415 .183515 aline .14224 .183515 aline .141288 .183991 aline .140335 .183515 closepath ! end of curve ! start of curve amove .10795 .18288 bezier .823567E-01 .180018 .576997E-01 .160233 .05588 .13335 bezier .500251E-01 .105465 .608272E-01 .694027E-01 .09144 .05969 aline .09906 .05715 aline .10414 .05588 aline .104775 .055245 aline .10795 .055245 aline .109855 .054864 aline .11176 .055245 aline .11176 .18288 aline .109855 .183261 aline .10795 .18288 closepath ! end of curve fill dfont endchar dfont char=9 !-------------- Beginning of new char. dfont wid=.777781 hei=.683332 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .08636 .23876 aline .086995 .238125 aline .12573 .238125 aline .126365 .23749 aline .14478 .23749 aline .145415 .238125 aline .18415 .238125 aline .184785 .23876 aline .194945 .23876 aline .194945 .2286 aline .173355 .2286 bezier .165108 .227377 .153336 .228616 .14986 .21844 aline .14986 .05588 bezier .185289 .060863 .19863 .101977 .200025 .13208 bezier .200353 .15303 .197716 .180396 .219075 .192405 aline .22098 .19304 aline .22352 .193675 aline .250825 .193675 aline .25273 .19177 aline .25273 .188595 aline .250825 .18669 bezier .232895 .187318 .230123 .164534 .2286 .151765 bezier .231796 .113534 .216814 .686536E-01 .1778 .053975 bezier .169013 .049391 .158518 .491232E-01 .14986 .046355 aline .14986 .019685 bezier .153336 .950903E-02 .165108 .107478E-01 .173355 .009525 aline .194945 .009525 aline .194945 -.000635 aline .184785 -.000635 aline .18415 0 aline .145415 0 aline .14478 .000635 aline .126365 .000635 aline .12573 0 aline .086995 0 aline .08636 -.000635 aline .0762 -.000635 aline .0762 .009525 aline .09779 .009525 bezier .106037 .107478E-01 .117809 .950903E-02 .121285 .019685 aline .121285 .046355 bezier .920896E-01 .501919E-01 .620557E-01 .683051E-01 .05207 .09779 bezier .394044E-01 .124291 .503562E-01 .153827 .03683 .179705 aline .032385 .18415 aline .029845 .18542 aline .027305 .186055 aline .02667 .18669 aline .022225 .18669 aline .02032 .188595 aline .02032 .191135 aline .020955 .192405 aline .02159 .19304 aline .02286 .193675 aline .04953 .193675 bezier .676951E-01 .189775 .719299E-01 .168109 .073025 .153035 bezier .723688E-01 .121878 .750535E-01 .864462E-01 .100965 .06477 bezier .106877 .606254E-01 .114258 .564061E-01 .121285 .05588 aline .121285 .21844 bezier .117809 .228616 .106037 .227377 .09779 .2286 aline .0762 .2286 aline .0762 .23876 aline .08636 .23876 closepath ! end of curve fill dfont endchar dfont char=10 !-------------- Beginning of new char. dfont wid=.722224 hei=.683332 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .136525 .24638 bezier .180427 .244196 .228992 .212996 .23368 .165735 bezier .237817 .109774 .18582 .736017E-01 .171662 .02286 aline .172085 .02159 aline .207645 .02159 aline .20828 .022225 aline .21336 .022225 aline .213995 .02286 aline .21717 .023495 aline .219075 .02413 aline .220345 .024765 aline .22098 .0254 aline .221615 .02667 aline .224155 .03429 aline .22606 .04191 aline .2286 .05461 aline .229235 .05588 aline .23749 .05588 aline .23749 .055245 aline .226695 .00127 aline .22606 -.000635 aline .164465 -.000635 aline .163195 0 bezier .158661 .398959E-01 .181756 .790658E-01 .19177 .11811 bezier .202312 .15263 .201748 .194726 .173355 .221615 bezier .142342 .250605 .880569E-01 .242235 .06731 .205105 bezier .355868E-01 .146522 .793358E-01 .865382E-01 .09017 .027305 aline .09017 .02413 aline .090805 .023495 aline .090805 .019685 aline .09144 .01905 aline .09144 .0127 aline .092075 .012065 aline .092075 .00127 aline .09017 -.000635 aline .02794 -.000635 aline .027305 .000635 aline .027305 .00381 aline .02667 .004445 aline .01651 .055245 aline .01651 .05588 aline .024765 .05588 aline .0254 .05461 aline .02794 .04191 aline .029845 .03429 aline .032385 .02667 aline .03302 .0254 aline .033655 .024765 aline .034925 .02413 aline .03683 .023495 aline .040005 .02286 aline .04064 .022225 aline .04572 .022225 aline .046355 .02159 aline .081915 .02159 bezier .711742E-01 .069079 .247717E-01 .102079 .02032 .151765 bezier .153507E-01 .20446 .681849E-01 .244952 .11684 .245745 aline .117475 .24638 aline .136525 .24638 closepath ! end of curve fill dfont endchar dfont char=11 !-------------- Beginning of new char. dfont wid=.583336 hei=.694445 dep=0 italic=.0777788 dfont fby=33 kadd=.0777788 dfont fby=39 kadd=.0777788 dfont fby=")" kadd=.0777788 dfont fby="?" kadd=.0777788 dfont fby="]" kadd=.0777788 dfont fby="i" ligrep=14 dfont fby="l" ligrep=15 set path ! start of curve newpath ! start of curve amove .118745 .24638 bezier .130543 .245144 .143621 .241336 .151765 .231775 bezier .169192 .248746 .203258 .253951 .21844 .231775 aline .21971 .227965 bezier .225368 .214534 .209537 .201195 .197485 .208915 bezier .186495 .214478 .188632 .233409 .20066 .23622 bezier .181621 .247546 .16128 .226603 .158115 .207645 aline .15748 .20447 aline .156845 .203835 aline .156845 .19939 aline .15621 .198755 aline .15621 .150495 aline .156845 .14986 aline .19812 .14986 aline .19812 .1397 aline .158115 .1397 aline .15748 .139065 aline .15748 .019685 bezier .158763 .108566E-01 .168621 .105225E-01 .17526 .009525 aline .19177 .009525 aline .19177 -.000635 aline .18415 -.000635 aline .183515 0 aline .15367 0 aline .153035 .000635 aline .14097 .000635 aline .140335 0 aline .114935 0 aline .1143 -.000635 aline .10795 -.000635 aline .10795 .009525 bezier .117564 .102204E-01 .13141 .700019E-02 .135255 .018415 aline .135255 .139065 aline .13462 .1397 aline .06096 .1397 aline .060325 .139065 aline .060325 .018415 bezier .641704E-01 .700018E-02 .780158E-01 .102204E-01 .08763 .009525 aline .08763 -.000635 aline .08128 -.000635 aline .080645 0 aline .055245 0 aline .05461 .000635 aline .043815 .000635 aline .04318 0 aline .01778 0 aline .017145 -.000635 aline .010795 -.000635 aline .010795 .009525 bezier .204092E-01 .102204E-01 .342546E-01 .700019E-02 .0381 .018415 aline .0381 .139065 aline .037465 .1397 aline .009525 .1397 aline .009525 .14986 aline .037465 .14986 aline .0381 .150495 aline .0381 .197485 bezier .042403 .227762 .759583E-01 .244516 .103505 .24638 aline .118745 .24638 closepath ! end of curve ! start of curve amove .104775 .23876 bezier .826385E-01 .237299 .624699E-01 .21922 .059055 .197485 aline .059055 .150495 aline .05969 .14986 aline .13462 .14986 aline .135255 .150495 aline .135255 .19812 aline .13589 .198755 aline .13589 .202565 bezier .121573 .207308 .124026 .229785 .13843 .23241 aline .137795 .233045 aline .133985 .23495 aline .126365 .23749 aline .12573 .238125 aline .122555 .238125 aline .12192 .23876 aline .11811 .23876 aline .117475 .239395 aline .10541 .239395 aline .104775 .23876 closepath ! end of curve fill dfont endchar dfont char=12 !-------------- Beginning of new char. dfont wid=.555557 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .11811 .24638 bezier .139521 .245643 .164438 .224226 .154305 .20193 bezier .145887 .188843 .121474 .196939 .125095 .21209 bezier .12395 .221138 .133036 .226976 .14097 .227965 bezier .11404 .253565 .640991E-01 .233256 .059055 .197485 aline .059055 .150495 aline .05969 .14986 aline .10668 .14986 bezier .123196 .151626 .139963 .152786 .156845 .15367 aline .156845 .018415 bezier .16069 .700018E-02 .174536 .102204E-01 .18415 .009525 aline .18415 -.000635 aline .1778 -.000635 aline .177165 0 aline .151765 0 aline .15113 .000635 aline .140335 .000635 aline .1397 0 aline .1143 0 aline .113665 -.000635 aline .107315 -.000635 aline .107315 .009525 bezier .116929 .102204E-01 .130775 .700019E-02 .13462 .018415 aline .13462 .127635 aline .133985 .12827 aline .13335 .131445 aline .131445 .135255 aline .130175 .136525 aline .127635 .137795 aline .125095 .13843 aline .12192 .139065 aline .121285 .1397 aline .06096 .1397 aline .060325 .139065 aline .060325 .018415 bezier .641704E-01 .700018E-02 .780158E-01 .102204E-01 .08763 .009525 aline .08763 -.000635 aline .08128 -.000635 aline .080645 0 aline .055245 0 aline .05461 .000635 aline .043815 .000635 aline .04318 0 aline .01778 0 aline .017145 -.000635 aline .010795 -.000635 aline .010795 .009525 bezier .204092E-01 .102204E-01 .342546E-01 .700019E-02 .0381 .018415 aline .0381 .139065 aline .037465 .1397 aline .009525 .1397 aline .009525 .14986 aline .037465 .14986 aline .0381 .150495 aline .0381 .197485 bezier .044079 .233103 .858133E-01 .248879 .11811 .24638 closepath ! end of curve fill dfont endchar dfont char=13 !-------------- Beginning of new char. dfont wid=.555557 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .120015 .24638 aline .12065 .245745 bezier .131424 .247574 .141795 .238043 .151765 .241935 aline .15494 .241935 aline .155575 .24257 aline .156845 .24257 aline .156845 .018415 bezier .16069 .700018E-02 .174536 .102204E-01 .18415 .009525 aline .18415 -.000635 aline .1778 -.000635 aline .177165 0 aline .151765 0 aline .15113 .000635 aline .140335 .000635 aline .1397 0 aline .1143 0 aline .113665 -.000635 aline .107315 -.000635 aline .107315 .009525 bezier .116929 .102204E-01 .130775 .700019E-02 .13462 .018415 aline .13462 .139065 aline .133985 .1397 aline .06096 .1397 aline .060325 .139065 aline .060325 .018415 bezier .641704E-01 .700018E-02 .780158E-01 .102204E-01 .08763 .009525 aline .08763 -.000635 aline .08128 -.000635 aline .080645 0 aline .055245 0 aline .05461 .000635 aline .043815 .000635 aline .04318 0 aline .01778 0 aline .017145 -.000635 aline .010795 -.000635 aline .010795 .009525 bezier .204092E-01 .102204E-01 .342546E-01 .700019E-02 .0381 .018415 aline .0381 .139065 aline .037465 .1397 aline .009525 .1397 aline .009525 .14986 aline .037465 .14986 aline .0381 .150495 aline .0381 .197485 bezier .423021E-01 .227865 .758813E-01 .244481 .103505 .24638 aline .120015 .24638 closepath ! end of curve ! start of curve amove .104775 .23876 bezier .825241E-01 .237582 .625034E-01 .219122 .059055 .197485 aline .059055 .150495 aline .05969 .14986 aline .133985 .14986 aline .13462 .150495 aline .13462 .207645 bezier .122189 .212402 .123546 .230878 .133622 .236311 aline .128905 .23749 aline .12827 .238125 aline .125095 .238125 aline .12446 .23876 aline .11938 .23876 aline .118745 .239395 aline .10541 .239395 aline .104775 .23876 closepath ! end of curve fill dfont endchar dfont char=14 !-------------- Beginning of new char. dfont wid=.833336 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .11811 .24638 bezier .131255 .245011 .14449 .23836 .1524 .22733 bezier .176237 .246275 .212132 .253884 .239395 .238125 bezier .252365 .230027 .260917 .20955 .248285 .19812 bezier .237927 .190333 .219718 .199335 .222885 .21209 bezier .22174 .221138 .230826 .226976 .23876 .227965 bezier .21162 .25349 .16138 .233494 .15621 .197485 aline .15621 .150495 aline .156845 .14986 aline .20447 .14986 bezier .220986 .151626 .237753 .152786 .254635 .15367 aline .254635 .018415 bezier .25848 .700018E-02 .272326 .102204E-01 .28194 .009525 aline .28194 -.000635 aline .27559 -.000635 aline .274955 0 aline .249555 0 aline .24892 .000635 aline .238125 .000635 aline .23749 0 aline .21209 0 aline .211455 -.000635 aline .205105 -.000635 aline .205105 .009525 bezier .214719 .102204E-01 .228565 .700018E-02 .23241 .018415 aline .23241 .127635 aline .231775 .12827 aline .23114 .131445 aline .229235 .135255 aline .227965 .136525 aline .225425 .137795 aline .222885 .13843 aline .21971 .139065 aline .219075 .1397 aline .158115 .1397 aline .15748 .139065 aline .15748 .018415 bezier .161325 .700018E-02 .175171 .102204E-01 .184785 .009525 aline .184785 -.000635 aline .178435 -.000635 aline .1778 0 aline .1524 0 aline .151765 .000635 aline .14097 .000635 aline .140335 0 aline .114935 0 aline .1143 -.000635 aline .10795 -.000635 aline .10795 .009525 bezier .117564 .102204E-01 .13141 .700019E-02 .135255 .018415 aline .135255 .139065 aline .13462 .1397 aline .06096 .1397 aline .060325 .139065 aline .060325 .018415 bezier .641704E-01 .700018E-02 .780158E-01 .102204E-01 .08763 .009525 aline .08763 -.000635 aline .08128 -.000635 aline .080645 0 aline .055245 0 aline .05461 .000635 aline .043815 .000635 aline .04318 0 aline .01778 0 aline .017145 -.000635 aline .010795 -.000635 aline .010795 .009525 bezier .204092E-01 .102204E-01 .342546E-01 .700019E-02 .0381 .018415 aline .0381 .139065 aline .037465 .1397 aline .009525 .1397 aline .009525 .14986 aline .037465 .14986 aline .0381 .150495 aline .0381 .197485 bezier .440333E-01 .23312 .858003E-01 .248956 .11811 .24638 closepath ! end of curve ! start of curve amove .104775 .23876 bezier .826385E-01 .237299 .624699E-01 .21922 .059055 .197485 aline .059055 .150495 aline .05969 .14986 aline .13462 .14986 aline .135255 .150495 aline .135255 .19558 bezier .118894 .200102 .121716 .227026 .139065 .22733 aline .14097 .227965 bezier .131349 .236889 .117232 .241104 .104775 .23876 closepath ! end of curve fill dfont endchar dfont char=15 !-------------- Beginning of new char. dfont wid=.833336 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .118745 .24638 bezier .131767 .245182 .146368 .240216 .153987 .228759 bezier .179733 .249455 .215507 .249921 .24511 .240665 aline .245745 .2413 aline .24892 .2413 aline .249555 .241935 aline .25273 .241935 aline .253365 .24257 aline .254635 .24257 aline .254635 .018415 bezier .25848 .700018E-02 .272326 .102204E-01 .28194 .009525 aline .28194 -.000635 aline .27559 -.000635 aline .274955 0 aline .249555 0 aline .24892 .000635 aline .238125 .000635 aline .23749 0 aline .21209 0 aline .211455 -.000635 aline .205105 -.000635 aline .205105 .009525 bezier .214719 .102204E-01 .228565 .700018E-02 .23241 .018415 aline .23241 .139065 aline .231775 .1397 aline .158115 .1397 aline .15748 .139065 aline .15748 .018415 bezier .161325 .700018E-02 .175171 .102204E-01 .184785 .009525 aline .184785 -.000635 aline .178435 -.000635 aline .1778 0 aline .1524 0 aline .151765 .000635 aline .14097 .000635 aline .140335 0 aline .114935 0 aline .1143 -.000635 aline .10795 -.000635 aline .10795 .009525 bezier .117564 .102204E-01 .13141 .700019E-02 .135255 .018415 aline .135255 .139065 aline .13462 .1397 aline .06096 .1397 aline .060325 .139065 aline .060325 .018415 bezier .641704E-01 .700018E-02 .780158E-01 .102204E-01 .08763 .009525 aline .08763 -.000635 aline .08128 -.000635 aline .080645 0 aline .055245 0 aline .05461 .000635 aline .043815 .000635 aline .04318 0 aline .01778 0 aline .017145 -.000635 aline .010795 -.000635 aline .010795 .009525 bezier .204092E-01 .102204E-01 .342546E-01 .700019E-02 .0381 .018415 aline .0381 .139065 aline .037465 .1397 aline .009525 .1397 aline .009525 .14986 aline .037465 .14986 aline .0381 .150495 aline .0381 .197485 bezier .042403 .227762 .759583E-01 .244516 .103505 .24638 aline .118745 .24638 closepath ! end of curve ! start of curve amove .104775 .23876 bezier .826385E-01 .237299 .624699E-01 .21922 .059055 .197485 aline .059055 .150495 aline .05969 .14986 aline .13462 .14986 aline .135255 .150495 aline .135255 .197485 bezier .139626 .204466 .127495 .204476 .127 .211455 aline .126365 .213995 aline .126365 .220345 aline .127 .222885 aline .12827 .225425 aline .13208 .229235 aline .13335 .22987 aline .133985 .230505 aline .137795 .231775 aline .13843 .23241 aline .137795 .233045 aline .133985 .23495 aline .12827 .236855 aline .12573 .23749 aline .122555 .238125 aline .12192 .23876 aline .11811 .23876 aline .117475 .239395 aline .10541 .239395 aline .104775 .23876 closepath ! end of curve ! start of curve amove .20193 .23876 bezier .179794 .237299 .159625 .21922 .15621 .197485 aline .15621 .150495 aline .156845 .14986 aline .231775 .14986 aline .23241 .150495 aline .23241 .207645 bezier .219979 .212402 .221336 .230878 .231412 .236311 aline .226695 .23749 aline .22606 .238125 aline .222885 .238125 aline .22225 .23876 aline .21717 .23876 aline .216535 .239395 aline .202565 .239395 aline .20193 .23876 closepath ! end of curve fill dfont endchar dfont char=16 !-------------- Beginning of new char. dfont wid=.277779 hei=.430555 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .061595 .15367 aline .061595 .018415 bezier .064539 .756568E-02 .774217E-01 .983781E-02 .08636 .009525 aline .08636 -.000635 aline .080645 -.000635 aline .08001 0 aline .056515 0 aline .05588 .000635 aline .045085 .000635 aline .04445 0 aline .01905 0 aline .018415 -.000635 aline .012065 -.000635 aline .012065 .009525 bezier .216792E-01 .102204E-01 .355246E-01 .700019E-02 .03937 .018415 aline .03937 .127 aline .038735 .127635 bezier .379249E-01 .140592 .022969 .139946 .013335 .1397 aline .013335 .14986 bezier .029366 .151264 .455716E-01 .152247 .061595 .15367 closepath ! end of curve fill dfont endchar dfont char=17 !-------------- Beginning of new char. dfont wid=.305557 hei=.430555 dep=.194445 italic=0 set path ! start of curve newpath ! start of curve amove .07366 .15367 aline .07366 -.026035 bezier .072073 -.544231E-01 .437289E-01 -.794388E-01 .01524 -.07239 bezier -.190766E-02 -.708461E-01 -.214368E-01 -.521988E-01 -.01016 -.034925 bezier -.449389E-03 -.220667E-01 .223406E-01 -.322139E-01 .018415 -.04826 aline .01778 -.0508 aline .015875 -.05461 aline .0127 -.057785 aline .01143 -.05842 aline .010795 -.059055 aline .008255 -.060325 aline .005715 -.06096 bezier .019171 -.690429E-01 .404742E-01 -.684123E-01 .04572 -.0508 aline .046355 -.04953 aline .04826 -.043815 aline .048895 -.041275 aline .04953 -.0381 aline .050165 -.037465 aline .050165 -.03429 aline .0508 -.033655 aline .0508 -.02794 aline .051435 -.027305 aline .051435 .127 aline .0508 .127635 bezier .488352E-01 .141579 .320432E-01 .139336 .02159 .1397 aline .02159 .14986 bezier .038926 .15118 .563006E-01 .152407 .07366 .15367 closepath ! end of curve fill dfont endchar dfont char=18 !-------------- Beginning of new char. dfont wid=.500002 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .052705 .24384 bezier .064951 .237035 .708985E-01 .222612 .080645 .212725 bezier .878125E-01 .20307 .960291E-01 .193812 .10287 .18415 aline .097155 .178435 bezier .779142E-01 .194528 .056288 .209392 .038735 .22733 aline .0381 .229235 aline .0381 .234315 aline .040005 .238125 aline .043815 .241935 aline .046355 .243205 aline .047625 .24384 closepath ! end of curve fill dfont endchar dfont char=19 !-------------- Beginning of new char. dfont wid=.500002 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .12827 .24384 bezier .139296 .240747 .141068 .22545 .13081 .220345 bezier .113281 .206676 .961809E-01 .191907 .07874 .178435 aline .073025 .18415 bezier .888609E-01 .203632 .10347 .225508 .121285 .243205 aline .12319 .24384 closepath ! end of curve fill dfont endchar dfont char=20 !-------------- Beginning of new char. dfont wid=.500002 hei=.628473 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .047625 .222885 bezier .610951E-01 .214935 .742903E-01 .206604 .879475E-01 .198914 bezier .102092 .206392 .11526 .21623 .12954 .222885 aline .130175 .22225 aline .13081 .22098 aline .131445 .220345 bezier .13766 .214801 .12664 .21244 .123825 .20828 bezier .111509 .199587 .999746E-01 .18931 .08763 .180975 bezier .724354E-01 .192891 .569895E-01 .204459 .04191 .216535 aline .042545 .21717 aline .04318 .21844 aline .043815 .219075 aline .04445 .220345 aline .045085 .22098 aline .04572 .22225 aline .046355 .222885 closepath ! end of curve fill dfont endchar dfont char=21 !-------------- Beginning of new char. dfont wid=.500002 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .042545 .24257 bezier .412016E-01 .211543 .765878E-01 .184296 .10541 .198755 bezier .122576 .206006 .133172 .224717 .13335 .24257 aline .140335 .24257 bezier .142306 .21001 .112687 .175438 .07874 .18288 bezier .517937E-01 .18823 .348678E-01 .216509 .03556 .24257 aline .042545 .24257 closepath ! end of curve fill dfont endchar dfont char=22 !-------------- Beginning of new char. dfont wid=.500002 hei=.567777 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .15113 .20574 aline .15113 .19558 aline .024765 .19558 aline .024765 .20574 aline .15113 .20574 closepath ! end of curve fill dfont endchar dfont char=23 !-------------- Beginning of new char. dfont wid=.750002 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .136525 .25019 bezier .159784 .248764 .174791 .218494 .158115 .20066 bezier .14135 .179947 .102047 .188521 .098425 .2159 bezier .960986E-01 .233058 .110447 .248341 .127 .25019 closepath ! end of curve ! start of curve amove .12573 .24257 bezier .100387 .241203 .100387 .198217 .12573 .19685 bezier .138499 .193468 .155344 .200531 .156845 .215265 aline .156845 .224155 aline .15621 .22479 aline .155575 .227965 aline .154305 .231775 aline .153035 .234315 aline .14859 .23876 aline .14351 .2413 aline .14097 .241935 aline .137795 .24257 aline .13716 .243205 aline .126365 .243205 closepath ! end of curve fill dfont endchar dfont char=24 !-------------- Beginning of new char. dfont wid=.444446 hei=0 dep=.170138 italic=0 set path ! start of curve newpath ! start of curve amove .099695 -.00889 aline .099695 -.019685 bezier .114821 -.219284E-01 .133688 -.328534E-01 .12827 -.0508 bezier .121615 -.685206E-01 .987928E-01 -.688578E-01 .08382 -.07112 aline .073025 -.07112 aline .07239 -.071755 aline .04699 -.071755 aline .04699 -.06477 bezier .663783E-01 -.639793E-01 .874758E-01 -.672052E-01 .10287 -.05334 bezier .112004 -.395868E-01 .951565E-01 -.258417E-01 .081915 -.026035 aline .08128 -.0254 aline .0762 -.0254 aline .0762 -.00889 aline .099695 -.00889 closepath ! end of curve fill dfont endchar dfont char=25 !-------------- Beginning of new char. dfont wid=.500003 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .10287 .24638 bezier .131702 .244887 .161634 .218344 .15494 .18796 bezier .151014 .165577 .127228 .151993 .109855 .145415 bezier .162401 .127062 .187471 .480608E-01 .142875 .009525 bezier .123779 -.006808 .877581E-01 -.125951E-01 .073025 .012065 aline .071755 .015875 bezier .066862 .269533E-01 .782925E-01 .396919E-01 .089535 .033655 bezier .10028 .282799E-01 .965695E-01 .110665E-01 .08509 .009525 bezier .102217 -.618023E-02 .128074 .743863E-02 .13462 .027305 bezier .146787 .624773E-01 .140458 .106203 .11176 .132715 bezier .102739 .140054 .909807E-01 .14198 .080645 .144145 aline .080645 .147955 aline .08255 .14986 bezier .110775 .147518 .135571 .176593 .12954 .203835 bezier .129565 .226055 .105167 .247225 .08382 .236855 bezier .694475E-01 .231793 .06242 .21608 .060325 .202565 aline .060325 -.000635 aline .059055 -.000635 aline .05842 0 aline .051435 0 aline .0508 .000635 aline .043815 .000635 aline .04318 0 aline .01778 0 aline .017145 -.000635 aline .010795 -.000635 aline .010795 .009525 bezier .204092E-01 .102204E-01 .342546E-01 .700019E-02 .0381 .018415 aline .0381 .139065 aline .037465 .1397 aline .010795 .1397 aline .010795 .14986 aline .037465 .14986 aline .0381 .150495 aline .0381 .201295 bezier .412336E-01 .231501 .744948E-01 .24966 .10287 .24638 closepath ! end of curve fill dfont endchar dfont char=26 !-------------- Beginning of new char. dfont wid=.722224 hei=.430555 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .08509 .155575 bezier .103486 .154007 .122234 .144637 .132715 .128905 bezier .15521 .16114 .210316 .166629 .23241 .131445 bezier .241998 .116769 .244109 .993317E-01 .24384 .08255 aline .241935 .080645 aline .1397 .080645 bezier .135837 .050058 .151277 .830623E-02 .18669 .004445 bezier .20925 .634005E-03 .231482 .201074E-01 .235585 .042545 aline .23749 .04445 aline .241935 .04445 bezier .246866 .376351E-01 .239138 .283395E-01 .23622 .02159 bezier .217279 -.107874E-01 .169929 -.118705E-01 .144145 .0127 aline .142875 .013335 aline .135255 .020955 aline .13462 .022225 aline .132715 .02413 aline .13208 .0254 aline .131128 .258763E-01 bezier .110367 -.843414E-02 .588269E-01 -.135419E-01 .027305 .008255 bezier .582276E-02 .256212E-01 .191032E-01 .059218 .04064 .06985 bezier .634226E-01 .841196E-01 .907966E-01 .855451E-01 .11557 .08763 bezier .117484 .109229 .114102 .135279 .092075 .145415 bezier .744266E-01 .152566 .533329E-01 .147052 .040005 .13335 bezier .544701E-01 .134115 .629193E-01 .115954 .05334 .10541 bezier .447989E-01 .968174E-01 .267703E-01 .10067 .0254 .113665 bezier .224891E-01 .139268 .498757E-01 .154325 .071755 .155575 aline .08509 .155575 closepath ! end of curve ! start of curve amove .18034 .147955 bezier .152867 .143629 .139176 .111536 .140335 .08763 aline .220345 .08763 bezier .221371 .10679 .217324 .131458 .200025 .144145 aline .196215 .14605 aline .192405 .14732 aline .18923 .147955 aline .188595 .14859 aline .180975 .14859 closepath ! end of curve ! start of curve amove .107315 .079375 bezier .811151E-01 .078389 .476256E-01 .651974E-01 .04318 .03556 bezier .400614E-01 .128199E-01 .066674 -.399918E-02 .08636 .004445 bezier .109648 .980507E-02 .12616 .365327E-01 .11684 .059055 aline .11684 .06223 aline .116205 .062865 aline .116205 .06731 aline .11557 .067945 aline .11557 .079375 aline .114935 .08001 aline .10795 .08001 aline .107315 .079375 closepath ! end of curve fill dfont endchar dfont char=27 !-------------- Beginning of new char. dfont wid=.777781 hei=.430555 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .09144 .155575 bezier .113707 .153453 .134111 .139361 .14605 .12065 bezier .163848 .1533 .211567 .168382 .2413 .142875 bezier .25883 .128455 .263561 .103911 .26289 .08255 aline .260985 .080645 aline .15875 .080645 bezier .154887 .050058 .170327 .830623E-02 .20574 .004445 bezier .2283 .634008E-03 .250532 .201074E-01 .254635 .042545 aline .25654 .04445 aline .260985 .04445 bezier .265916 .376351E-01 .258188 .283395E-01 .25527 .02159 bezier .236329 -.107873E-01 .188979 -.118705E-01 .163195 .0127 bezier .156099 .017115 .1509 .268892E-01 .14605 .031115 bezier .125469 -.656954E-02 .694383E-01 -.017023 .0381 .013335 bezier -.654635E-02 .489492E-01 .38406E-02 .129068 .057785 .150495 aline .065405 .153035 aline .070485 .154305 aline .07366 .15494 aline .078105 .15494 aline .07874 .155575 aline .09144 .155575 closepath ! end of curve ! start of curve amove .08001 .147955 bezier .516151E-01 .144788 .379198E-01 .112965 .03683 .088265 bezier .357275E-01 .599777E-01 .384794E-01 .265098E-01 .064135 .00889 bezier .884653E-01 -.786918E-02 .120336 .113775E-01 .12827 .037465 bezier .138706 .702588E-01 .13927 .111363 .11303 .137795 bezier .103576 .144712 .915502E-01 .150654 .08001 .147955 closepath ! end of curve ! start of curve amove .19939 .147955 bezier .171917 .143629 .158226 .111536 .159385 .08763 aline .239395 .08763 bezier .240421 .10679 .236374 .131458 .219075 .144145 aline .215265 .14605 aline .211455 .14732 aline .20828 .147955 aline .207645 .14859 aline .200025 .14859 closepath ! end of curve fill dfont endchar dfont char=28 !-------------- Beginning of new char. dfont wid=.500002 hei=.527779 dep=.0972233 italic=0 set path ! start of curve newpath ! start of curve amove .149225 .18542 aline .150495 .184785 aline .153035 .183515 aline .154305 .182245 bezier .147082 .168252 .13719 .15482 .131318 .140716 bezier .175854 .108234 .173572 .320177E-01 .12446 .00508 bezier .101807 -.831153E-02 .734762E-01 -.66646E-02 .051435 .004445 bezier .043531 -.941378E-02 .359458E-01 -.235023E-01 .027305 -.03683 aline .02667 -.036195 aline .02286 -.03429 aline .02159 -.03302 bezier .289529E-01 -.187229E-01 .392868E-01 -.475773E-02 .045085 .009525 bezier -.510325E-02 .429406E-01 .545408E-02 .128906 .061595 .150495 bezier .821703E-01 .159609 .106063 .155636 .125095 .14605 bezier .132994 .159336 .140094 .173199 .14859 .186055 aline .149225 .18542 closepath ! end of curve ! start of curve amove .081915 .147955 bezier .523667E-01 .145053 .360035E-01 .112923 .03683 .08636 bezier .350169E-01 .634549E-01 .357971E-01 .03782 .051435 .01905 bezier .737667E-01 .582678E-01 .984357E-01 .976281E-01 .118745 .13716 bezier .10825 .144953 .947456E-01 .150758 .081915 .147955 closepath ! end of curve ! start of curve amove .123825 .12954 bezier .102198 .905832E-01 .777906E-01 .522507E-01 .057658 .013081 bezier .849415E-01 -.010217 .130703 .772945E-02 .136525 .04318 bezier .141735 .071691 .14305 .104189 .12573 .12954 aline .124778 .130016 aline .123825 .12954 closepath ! end of curve fill dfont endchar dfont char=29 !-------------- Beginning of new char. dfont wid=.902781 hei=.683332 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .287655 .23876 bezier .290936 .21219 .293899 .186282 .29718 .16002 aline .288925 .16002 bezier .28549 .181687 .284623 .212091 .26035 .222885 bezier .251982 .226372 .243276 .227552 .23495 .2286 aline .18415 .2286 aline .183515 .227965 aline .18034 .22733 aline .178435 .226695 aline .177165 .22606 aline .17653 .22479 aline .175895 .224155 aline .17526 .221615 aline .174625 .22098 aline .174625 .120015 aline .17526 .11938 aline .21336 .11938 bezier .225697 .119929 .240174 .126938 .240665 .141605 aline .2413 .14224 aline .2413 .14732 aline .241935 .147955 aline .241935 .160655 aline .25019 .160655 aline .25019 .067945 aline .241935 .067945 bezier .242511 .082726 .241294 .10413 .222885 .107315 aline .21971 .10795 aline .219075 .108585 aline .213995 .108585 aline .21336 .10922 aline .17526 .10922 aline .174625 .108585 aline .174625 .017145 aline .17526 .01651 aline .175895 .01397 aline .17653 .013335 aline .177165 .012065 aline .178435 .01143 aline .18034 .010795 aline .183515 .01016 aline .18415 .009525 aline .23495 .009525 bezier .255263 .107871E-01 .280897 .187041E-01 .287655 .041275 bezier .293457 .572341E-01 .296542 .738312E-01 .299085 .089535 aline .30734 .089535 bezier .302385 .594612E-01 .297698 .297019E-01 .292735 -.000635 aline .11938 -.000635 aline .11938 .009525 bezier .128994 .102204E-01 .14284 .700018E-02 .146685 .018415 aline .146685 .108585 aline .14605 .10922 aline .09017 .10922 bezier .800634E-01 .823714E-01 .698198E-01 .550851E-01 .611981E-01 .276225E-01 bezier .622979E-01 .147504E-01 .766999E-01 .903966E-02 .08763 .009525 aline .08763 -.000635 aline .080645 -.000635 aline .08001 0 aline .052705 0 aline .05207 .000635 aline .041275 .000635 aline .04064 0 aline .018415 0 aline .01778 -.000635 aline .012065 -.000635 aline .012065 .009525 bezier .293515E-01 .855055E-02 .049021 .180945E-01 .052705 .03683 bezier .755383E-01 .100317 .976953E-01 .164275 .121285 .22733 aline .11811 .227965 aline .117475 .2286 aline .090805 .2286 aline .090805 .23876 closepath ! end of curve ! start of curve amove .131445 .225425 bezier .11907 .190252 .105096 .15396 .09398 .11938 aline .14605 .11938 aline .146685 .120015 aline .146685 .217805 aline .14605 .21844 aline .145415 .220345 aline .14478 .221615 aline .14224 .224155 aline .1397 .225425 aline .137795 .22606 aline .13462 .226695 aline .133033 .227092 aline .131907 .22681 closepath ! end of curve fill dfont endchar dfont char=30 !-------------- Beginning of new char. dfont wid=1.01389 hei=.683332 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .147955 .24638 bezier .160971 .244724 .175367 .240701 .18796 .23876 aline .32639 .23876 bezier .329671 .21219 .332634 .186282 .335915 .16002 aline .32766 .16002 bezier .324506 .182719 .322256 .215218 .295275 .224155 aline .29337 .22479 aline .28829 .22606 aline .285115 .226695 aline .28448 .22733 aline .28067 .22733 aline .280035 .227965 aline .273685 .227965 aline .27305 .2286 aline .216535 .2286 aline .2159 .227965 aline .212725 .22733 aline .21082 .226695 aline .20955 .22606 aline .208915 .22479 aline .20828 .224155 aline .207645 .221615 aline .20701 .22098 aline .20701 .12954 aline .207645 .128905 aline .253365 .128905 bezier .266672 .128929 .283159 .136368 .283845 .1524 aline .28448 .153035 aline .28448 .15748 aline .285115 .158115 aline .285115 .17018 aline .29337 .17018 aline .29337 .07747 aline .285115 .07747 bezier .286172 .092759 .283034 .114234 .26416 .11684 aline .263525 .117475 aline .26035 .117475 aline .259715 .11811 aline .254 .11811 aline .253365 .118745 aline .207645 .118745 aline .20701 .11811 aline .20701 .017145 aline .207645 .01651 aline .20828 .01397 aline .208915 .013335 aline .20955 .012065 aline .21082 .01143 aline .212725 .010795 aline .2159 .01016 aline .216535 .009525 aline .272415 .009525 bezier .294343 .103902E-01 .321634 .201484E-01 .32766 .045085 bezier .332669 .599436E-01 .335473 .750302E-01 .33782 .089535 aline .346075 .089535 bezier .34112 .594612E-01 .336433 .297019E-01 .33147 -.000635 aline .18796 -.000635 bezier .160179 -.695962E-02 .129541 -.135154E-01 .1016 -.000635 bezier .363239E-01 .247614E-01 .871479E-02 .107452 .034925 .169545 bezier .519304E-01 .215187 .985912E-01 .249883 .147955 .24638 closepath ! end of curve ! start of curve amove .135255 .23876 bezier .863404E-01 .232163 .626107E-01 .177134 .05969 .133985 bezier .580897E-01 .897891E-01 .06965 .398467E-01 .10668 .010795 bezier .125484 -.285666E-02 .154476 -.766792E-02 .172085 .01016 bezier .179704 .241535E-01 .179474 .391671E-01 .180975 .053975 aline .180975 .18415 bezier .178657 .200674 .181091 .221837 .165735 .23368 aline .160655 .23622 aline .15875 .236855 aline .15621 .23749 aline .153035 .238125 aline .1524 .23876 aline .14859 .23876 aline .147955 .239395 aline .13589 .239395 aline .135255 .23876 closepath ! end of curve fill dfont endchar dfont char=31 !-------------- Beginning of new char. dfont wid=.777781 hei=.731944 dep=.0486116 italic=0 set path ! start of curve newpath ! start of curve amove .22733 .25781 bezier .230216 .255851 .235505 .253881 .23114 .25019 bezier .223285 .239928 .216888 .228617 .208915 .21844 bezier .272162 .164944 .266339 .526558E-01 .194945 .00889 bezier .157161 -.015933 .106316 -.134536E-01 .070485 .01397 bezier .623017E-01 .279345E-02 .546799E-01 -.878784E-02 .04699 -.02032 bezier .042783 -.179727E-01 .372368E-01 -.149434E-01 .04318 -.010795 bezier .490882E-01 -.16955E-03 .587652E-01 .953147E-02 .062865 .02032 bezier -.159513E-02 .755238E-01 .877621E-02 .191405 .08382 .23241 bezier .120684 .254117 .16926 .250304 .202565 .22352 bezier .210231 .235281 .21844 .246651 .22606 .258445 closepath ! end of curve ! start of curve amove .12954 .23876 bezier .882314E-01 .235563 .589821E-01 .196942 .053975 .15748 bezier .481468E-01 .11663 .475609E-01 .697096E-01 .07239 .03302 bezier .113839 .922796E-01 .153653 .152717 .194945 .21209 bezier .17878 .230286 .153362 .241912 .12954 .23876 closepath ! end of curve ! start of curve amove .198755 .2032 bezier .159382 .143494 .116446 .845282E-01 .07874 .024765 bezier .106935 -.700215E-02 .157507 -.980595E-02 .188595 .01905 bezier .225553 .054929 .225694 .111499 .219075 .15748 bezier .215963 .173976 .210932 .191388 .200343 .204311 aline .19939 .203835 aline .198755 .2032 closepath ! end of curve fill dfont endchar dfont char=32 !-------------- Beginning of new char. dfont wid=.277779 hei=.430555 dep=0 italic=0 dfont fby="L" kadd=-.319446 dfont fby="l" kadd=-.277779 set path ! start of curve newpath ! start of curve amove .0889 .13462 aline .089535 .13335 aline .09144 .127635 bezier .823798E-01 .121291 .681118E-01 .118807 .05715 .113665 bezier .424516E-01 .108599 .280184E-01 .102892 .013335 .09779 aline .0127 .099695 aline .012065 .100965 aline .010795 .104775 aline .01016 .106045 aline .01016 .107315 bezier .035722 .117849 .623434E-01 .126572 .088265 .136525 closepath ! end of curve fill dfont endchar dfont char=33 !-------------- Beginning of new char. dfont wid=.277779 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .052705 .25019 aline .055245 .249555 bezier .682672E-01 .245752 .068926 .230705 .06604 .220345 bezier .619886E-01 .168747 .057971 .117135 .052705 .06604 aline .051435 .065405 aline .04699 .065405 aline .04572 .06604 bezier .400015E-01 .122414 .354758E-01 .179283 .031115 .23622 aline .03175 .23876 aline .032385 .240665 aline .03302 .2413 aline .033655 .24257 aline .0381 .247015 aline .04318 .249555 aline .04572 .25019 closepath ! end of curve ! start of curve amove .052705 .03556 bezier .697695E-01 .326979E-01 .726319E-01 .697633E-02 .056515 .000635 bezier .398275E-01 -.763559E-02 .221957E-01 .016007 .03556 .02921 aline .036195 .03048 aline .037465 .031115 aline .038735 .032385 aline .040005 .03302 aline .04064 .033655 aline .04191 .03429 aline .043815 .034925 aline .04572 .03556 closepath ! end of curve fill dfont endchar dfont char=34 !-------------- Beginning of new char. dfont wid=.500002 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .033655 .24257 bezier .558799E-01 .23598 .545813E-01 .207607 .05207 .189865 bezier .484531E-01 .169467 .037785 .150558 .02159 .137795 aline .01905 .137795 aline .017145 .1397 aline .017145 .142875 bezier .036212 .16045 .499133E-01 .188232 .045085 .21336 bezier .364368E-01 .200981 .139196E-01 .205497 .012065 .22098 aline .012065 .227965 aline .0127 .230505 aline .013335 .23241 aline .014605 .23495 aline .01905 .239395 aline .02032 .24003 aline .020955 .240665 aline .022225 .2413 aline .02413 .241935 aline .02667 .24257 closepath ! end of curve ! start of curve amove .102235 .24257 bezier .12446 .23598 .123161 .207607 .12065 .189865 bezier .117033 .169467 .106365 .150558 .09017 .137795 aline .08763 .137795 aline .085725 .1397 aline .085725 .142875 bezier .104792 .16045 .118493 .188232 .113665 .21336 bezier .105017 .200981 .824996E-01 .205497 .080645 .22098 aline .080645 .227965 aline .08128 .230505 aline .081915 .23241 aline .083185 .23495 aline .08763 .239395 aline .0889 .24003 aline .089535 .240665 aline .090805 .2413 aline .09271 .241935 aline .09525 .24257 closepath ! end of curve fill dfont endchar dfont char=35 !-------------- Beginning of new char. dfont wid=.833336 hei=.694445 dep=.194443 italic=0 set path ! start of curve newpath ! start of curve amove .147955 .24257 aline .149225 .241935 aline .150495 .2413 aline .151765 .24003 aline .153035 .23749 bezier .146117 .200832 .132875 .164734 .12573 .12827 aline .1905 .12827 bezier .200961 .165421 .209689 .203197 .22098 .24003 aline .22225 .2413 aline .22479 .24257 aline .2286 .24257 aline .23114 .2413 aline .23241 .24003 aline .23368 .23749 bezier .226762 .200832 .21352 .164734 .206375 .12827 aline .267335 .12827 aline .269875 .127 aline .271145 .12573 aline .272415 .12319 aline .272415 .11938 aline .271145 .11684 aline .269875 .11557 aline .267335 .1143 aline .201295 .1143 aline .20066 .11176 aline .200025 .109855 aline .196215 .094615 aline .19558 .09271 aline .19177 .07747 aline .191135 .075565 aline .187563 .612775E-01 aline .18796 .05969 aline .267335 .05969 aline .269875 .05842 aline .271145 .05715 aline .272415 .05461 aline .272415 .0508 aline .271145 .04826 aline .269875 .04699 aline .267335 .04572 aline .18288 .04572 bezier .172396 .836429E-02 .163675 -.296257E-01 .1524 -.066675 aline .15113 -.067945 aline .14859 -.069215 aline .14478 -.069215 aline .14224 -.067945 aline .14097 -.066675 aline .1397 -.064135 bezier .146602 -.027261 .159847 .904754E-02 .167005 .04572 aline .102235 .04572 bezier .917511E-01 .836429E-02 .830296E-01 -.296257E-01 .071755 -.066675 aline .070485 -.067945 aline .067945 -.069215 aline .064135 -.069215 aline .061595 -.067945 aline .060325 -.066675 aline .059055 -.064135 bezier .659565E-01 -.027261 .792022E-01 .904745E-02 .08636 .04572 aline .0254 .04572 aline .02286 .04699 aline .02159 .04826 aline .02032 .0508 aline .02032 .05461 aline .02159 .05715 aline .02286 .05842 aline .0254 .05969 aline .09144 .05969 aline .092075 .06223 aline .09271 .064135 aline .09652 .079375 aline .097155 .08128 aline .100965 .09652 aline .1016 .098425 aline .105172 .112713 aline .104775 .1143 aline .0254 .1143 aline .02286 .11557 aline .02159 .11684 aline .02032 .11938 aline .02032 .12319 aline .02159 .12573 aline .02286 .127 aline .0254 .12827 aline .109855 .12827 bezier .120316 .165421 .129044 .203197 .140335 .24003 aline .141605 .2413 aline .142875 .241935 aline .144145 .24257 closepath ! end of curve ! start of curve amove .120015 .11176 aline .11938 .109855 aline .11557 .094615 aline .114935 .09271 aline .111125 .07747 aline .11049 .075565 aline .106918 .612775E-01 aline .107315 .05969 aline .172085 .05969 aline .17272 .06223 aline .173355 .064135 aline .177165 .079375 aline .1778 .08128 aline .18161 .09652 aline .182245 .098425 aline .185817 .112713 aline .18542 .1143 aline .12065 .1143 closepath ! end of curve fill dfont endchar dfont char=36 !-------------- Beginning of new char. dfont wid=.500002 hei=.75 dep=.0555553 italic=0 set path ! start of curve newpath ! start of curve amove .093345 .262255 aline .093345 .247015 bezier .121958 .245614 .151965 .226382 .15494 .19558 bezier .156277 .185805 .157295 .171468 .14478 .168275 bezier .130633 .163131 .118109 .17988 .12573 .192405 aline .130175 .19685 aline .133985 .198755 aline .136525 .19939 aline .142875 .19939 aline .144145 .198967 bezier .14466 .205835 .137345 .216916 .13081 .22225 bezier .120482 .230914 .106264 .235869 .093345 .235585 aline .093345 .14097 bezier .125376 .135576 .154171 .108773 .15494 .07493 bezier .160743 .390944E-01 .132797 -.15963E-02 .094615 -.00381 aline .093345 -.00508 aline .093345 -.02032 aline .083185 -.02032 aline .083185 -.00508 bezier .554214E-01 -.358057E-02 .273231E-01 .147963E-01 .022225 .043815 bezier .201995E-01 .556545E-01 .159255E-01 .074515 .03175 .07874 bezier .474729E-01 .841608E-01 .594249E-01 .622957E-01 .047625 .051435 aline .046355 .0508 aline .045085 .04953 aline .042545 .04826 aline .040005 .047625 aline .032385 .047625 aline .314325E-01 .481013E-01 bezier .327527E-01 .267269E-01 .536644E-01 .951153E-02 .07493 .006985 aline .075565 .00635 aline .080645 .00635 aline .081915 .592665E-02 aline .083185 .00635 aline .083185 .111125 bezier .467025E-01 .115167 .160215E-01 .148162 .02032 .18542 bezier .223548E-01 .217856 .515571E-01 .244224 .083185 .247015 aline .083185 .262255 aline .093345 .262255 closepath ! end of curve ! start of curve amove .081915 .235585 bezier .488088E-01 .234438 .239032E-01 .192261 .04572 .1651 bezier .536202E-01 .152311 .688906E-01 .145045 .083185 .14351 aline .083185 .235585 aline .08255 .23622 aline .081915 .235585 closepath ! end of curve ! start of curve amove .093345 .10795 aline .093345 .006985 bezier .125765 .752108E-02 .148638 .487921E-01 .133985 .07747 bezier .12719 .939539E-01 .111175 .106564 .093345 .10795 closepath ! end of curve fill dfont endchar dfont char=37 !-------------- Beginning of new char. dfont wid=.833336 hei=.75 dep=.0555553 italic=0 set path ! start of curve newpath ! start of curve amove .075565 .262255 bezier .954683E-01 .258819 .105232 .237893 .12446 .23241 bezier .16079 .21427 .209529 .225708 .231775 .260985 bezier .240166 .266936 .247733 .253902 .24003 .248285 bezier .180349 .159167 .12131 .695857E-01 .06096 -.01905 bezier .525695E-01 -.250007E-01 .045002 -.119674E-01 .052705 -.00635 bezier .104117 .724246E-01 .159132 .15043 .208915 .229235 bezier .178976 .210826 .139922 .214357 .110278 .230717 bezier .121687 .19676 .120867 .15157 .09017 .127 bezier .649215E-01 .110041 .342572E-01 .133091 .026035 .158115 bezier .014349 .191286 .190065E-01 .235249 .0508 .25654 aline .05715 .259715 aline .06096 .260985 aline .0635 .26162 aline .066675 .26162 aline .06731 .262255 aline .075565 .262255 closepath ! end of curve ! start of curve amove .067945 .254635 bezier .474951E-01 .247893 .430306E-01 .22237 .041275 .20447 bezier .411052E-01 .178997 .396747E-01 .149063 .061595 .131445 bezier .796835E-01 .120796 .966937E-01 .140902 .102235 .156845 bezier .113759 .187731 .111045 .22749 .08509 .250825 aline .08001 .253365 aline .078105 .254 aline .075565 .254635 aline .07493 .25527 aline .06858 .25527 closepath ! end of curve ! start of curve amove .10922 .23114 aline .109855 .230505 aline .11049 .23114 aline .109855 .231775 aline .10922 .23114 closepath ! end of curve ! start of curve amove .208915 .229235 aline .20955 .2286 aline .210185 .229235 aline .20955 .22987 aline .208915 .229235 closepath ! end of curve ! start of curve amove .23114 .12065 bezier .258937 .115339 .270626 .835663E-01 .272415 .059055 bezier .274195 .295698E-01 .266283 -.915768E-02 .234315 -.019685 bezier .20062 -.255913E-01 .176591 .115949E-01 .17653 .041275 bezier .172563 .071609 .185731 .111052 .219075 .120015 aline .22225 .120015 aline .222885 .12065 closepath ! end of curve ! start of curve amove .22352 .11303 bezier .20307 .106288 .198606 .807653E-01 .19685 .062865 bezier .19668 .373922E-01 .19525 .745769E-02 .21717 -.01016 bezier .235258 -.208095E-01 .252269 -.703499E-03 .25781 .01524 bezier .269334 .461257E-01 .26662 .858849E-01 .240665 .10922 aline .235585 .11176 aline .23368 .112395 aline .23114 .11303 aline .230505 .113665 aline .224155 .113665 closepath ! end of curve fill dfont endchar dfont char=38 !-------------- Beginning of new char. dfont wid=.777781 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .109855 .25019 bezier .13268 .244447 .137273 .216174 .13462 .196215 bezier .127192 .171532 .10849 .153355 .929217E-01 .133985 bezier .106204 .989446E-01 .128704 .693925E-01 .150495 .040005 bezier .171526 .647653E-01 .187551 .935477E-01 .2032 .12192 bezier .204049 .135129 .188369 .140222 .1778 .1397 aline .1778 .14986 aline .18542 .14986 aline .186055 .149225 aline .2159 .149225 aline .216535 .14859 aline .227965 .14859 aline .2286 .149225 aline .24892 .149225 aline .249555 .14986 aline .254635 .14986 aline .254635 .1397 bezier .233323 .140954 .213004 .127332 .205105 .107315 bezier .190469 .818069E-01 .173857 .552908E-01 .156845 .03302 bezier .17182 .150796E-01 .195278 -.598524E-02 .21971 .00508 bezier .23436 .107814E-01 .244589 .026044 .244475 .041275 aline .25273 .041275 bezier .254229 .123194E-01 .224612 -.013955 .196215 -.00762 bezier .174809 -.769284E-02 .156797 .740326E-02 .14097 .01778 bezier .110254 -.147926E-01 .480984E-01 -.200062E-01 .02159 .02032 bezier .812882E-02 .418338E-01 .168967E-01 .695178E-01 .036195 .084455 aline .03683 .085725 aline .046355 .09525 aline .04699 .09652 aline .056515 .106045 aline .05715 .107315 aline .066675 .11684 aline .06731 .11811 aline .07112 .12192 bezier .062206 .153066 .519097E-01 .185808 .061595 .217805 bezier .678145E-01 .234141 .828729E-01 .248012 .10033 .25019 closepath ! end of curve ! start of curve amove .102235 .24257 bezier .875406E-01 .240632 .818857E-01 .224106 .079375 .21209 bezier .783324E-01 .187596 .818432E-01 .165484 .09017 .14224 bezier .109067 .164509 .135298 .191999 .12446 .22352 bezier .122655 .234091 .11443 .244768 .10287 .243205 closepath ! end of curve ! start of curve amove .073025 .113665 bezier .589917E-01 .996771E-01 .444308E-01 .831877E-01 .04445 .06223 bezier .416627E-01 .394994E-01 .506217E-01 .715253E-02 .076835 .001905 bezier .979042E-01 .104403E-02 .119803 .997959E-02 .135096 .244475E-01 bezier .111075 .517265E-01 .902539E-01 .817143E-01 .746125E-01 .114776 aline .07366 .1143 aline .073025 .113665 closepath ! end of curve fill dfont endchar dfont char=39 !-------------- Beginning of new char. dfont wid=.277779 hei=.694445 dep=0 italic=0 dfont fby=33 kadd=.111112 dfont fby=39 ligrep=34 dfont fby="?" kadd=.111112 set path ! start of curve newpath ! start of curve amove .052705 .24257 bezier .749299E-01 .23598 .736314E-01 .207607 .07112 .189865 bezier .675031E-01 .169467 .056835 .150558 .04064 .137795 aline .0381 .137795 aline .036195 .1397 aline .036195 .142875 bezier .055262 .16045 .689633E-01 .188232 .064135 .21336 bezier .554868E-01 .200981 .329696E-01 .205497 .031115 .22098 aline .031115 .227965 aline .03175 .230505 aline .032385 .23241 aline .033655 .23495 aline .0381 .239395 aline .03937 .24003 aline .040005 .240665 aline .041275 .2413 aline .04318 .241935 aline .04572 .24257 closepath ! end of curve fill dfont endchar dfont char=40 !-------------- Beginning of new char. dfont wid=.38889 hei=.75 dep=.25 italic=0 set path ! start of curve newpath ! start of curve amove .1143 .262255 aline .114935 .26162 aline .116205 .260985 aline .116205 .25781 bezier .734519E-01 .218132 .569796E-01 .156693 .05461 .102235 aline .05461 .071755 bezier .571699E-01 .176727E-01 .730011E-01 -.443858E-01 .116205 -.083185 aline .116205 -.086995 aline .114935 -.08763 bezier .106691 -.893241E-01 .101409 -.782218E-01 .094615 -.074295 bezier .397469E-01 -.200791E-01 .273239E-01 .641349E-01 .038735 .135255 bezier .469981E-01 .184695 .709492E-01 .232283 .111125 .262255 aline .1143 .262255 closepath ! end of curve fill dfont endchar dfont char=")" !-------------- Beginning of new char. dfont wid=.38889 hei=.75 dep=.25 italic=0 set path ! start of curve newpath ! start of curve amove .0254 .262255 bezier .758703E-01 .225461 .099176 .159526 .1016 .10033 bezier .104517 .335801E-01 .848224E-01 -.040313 .03048 -.084455 aline .02921 -.08509 aline .027305 -.086995 aline .026035 -.08763 aline .0254 -.088265 aline .022225 -.088265 aline .02032 -.08636 aline .02032 -.08382 bezier .630731E-01 -.441424E-01 .795454E-01 .172973E-01 .081915 .071755 aline .081915 .102235 bezier .795454E-01 .156693 .630731E-01 .218132 .02032 .25781 aline .02032 .26035 aline .022225 .262255 aline .0254 .262255 closepath ! end of curve fill dfont endchar dfont char="*" !-------------- Beginning of new char. dfont wid=.500002 hei=.75 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .09017 .262255 aline .092075 .26162 aline .093345 .260985 aline .095885 .258445 bezier .989771E-01 .246514 .939208E-01 .234548 .094615 .22225 aline .09398 .221615 aline .09398 .215265 aline .093345 .21463 aline .093345 .20828 aline .09271 .207645 aline .09271 .201295 aline .092075 .20066 aline .092075 .194945 bezier .10808 .204253 .124181 .2189 .14097 .229235 bezier .153168 .232267 .157037 .212536 .14478 .210185 bezier .129075 .202362 .110756 .195497 .969433E-01 .186478 bezier .114763 .177069 .13441 .170306 .15113 .159385 bezier .157637 .149452 .142304 .13864 .135255 .14859 bezier .120717 .158137 .106125 .170961 .092075 .17907 bezier .932413E-01 .158532 .959887E-01 .138648 .097155 .11811 bezier .936637E-01 .105931 .736161E-01 .113095 .079375 .12446 bezier .797372E-01 .14308 .083912 .16151 .083185 .179705 bezier .672198E-01 .167895 .515424E-01 .155685 .034925 .14478 bezier .227268E-01 .141748 .188584E-01 .161479 .031115 .16383 bezier .468205E-01 .171653 .651388E-01 .178518 .789517E-01 .187537 bezier .611321E-01 .196946 .414851E-01 .203709 .024765 .21463 bezier .182581E-01 .224563 .335913E-01 .235375 .04064 .225425 bezier .551776E-01 .215878 .697697E-01 .203054 .08382 .194945 bezier .826537E-01 .215483 .799063E-01 .235367 .07874 .255905 aline .08001 .258445 aline .08255 .260985 aline .08382 .26162 aline .085725 .262255 closepath ! end of curve fill dfont endchar dfont char="+" !-------------- Beginning of new char. dfont wid=.777781 hei=.583334 dep=.083334 italic=0 set path ! start of curve newpath ! start of curve amove .13843 .203835 aline .1397 .2032 aline .14097 .202565 aline .14224 .201295 aline .14351 .198755 aline .14351 .094615 aline .144145 .09398 aline .24765 .09398 aline .25019 .09271 aline .25146 .09144 aline .25273 .0889 aline .25273 .08509 aline .25146 .08255 aline .25019 .08128 aline .24765 .08001 aline .144145 .08001 aline .14351 .079375 aline .14351 -.024765 aline .14224 -.027305 aline .14097 -.028575 aline .13843 -.029845 aline .13462 -.029845 aline .13208 -.028575 aline .13081 -.027305 aline .12954 -.024765 aline .12954 .079375 aline .128905 .08001 aline .0254 .08001 aline .02286 .08128 aline .02159 .08255 aline .02032 .08509 aline .02032 .0889 aline .02159 .09144 aline .02286 .09271 aline .0254 .09398 aline .128905 .09398 aline .12954 .094615 aline .12954 .198755 aline .13081 .201295 aline .13208 .202565 aline .13335 .2032 aline .13462 .203835 closepath ! end of curve fill dfont endchar dfont char="," !-------------- Beginning of new char. dfont wid=.277779 hei=.105556 dep=.194445 italic=0 set path ! start of curve newpath ! start of curve amove .052705 .03556 bezier .744693E-01 .286338E-01 .719298E-01 .35721E-03 .06985 -.017145 bezier .06628 -.372217E-01 .563972E-01 -.563946E-01 .04064 -.069215 aline .0381 -.069215 aline .036195 -.06731 bezier .038064 -.588526E-01 .476945E-01 -.533093E-01 .051435 -.045085 bezier .600433E-01 -.294045E-01 .660684E-01 -.116185E-01 .0635 .005715 bezier .525706E-01 -.884516E-02 .265468E-01 .276842E-02 .031115 .020955 aline .03175 .023495 aline .032385 .0254 aline .033655 .02794 aline .0381 .032385 aline .03937 .03302 aline .040005 .033655 aline .041275 .03429 aline .04318 .034925 aline .04572 .03556 closepath ! end of curve fill dfont endchar dfont char="-" !-------------- Beginning of new char. dfont wid=.333334 hei=.430555 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .09652 .084455 aline .09652 .06477 aline .004445 .06477 aline .004445 .084455 aline .09652 .084455 closepath ! end of curve fill dfont endchar dfont char="." !-------------- Beginning of new char. dfont wid=.277779 hei=.105556 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .05207 .03556 bezier .707024E-01 .033691 .728738E-01 .436431E-02 .05461 0 bezier .370705E-01 -.636072E-02 .226261E-01 .181321E-01 .036195 .03048 aline .037465 .031115 aline .03937 .03302 aline .04191 .03429 aline .043815 .034925 aline .046355 .03556 closepath ! end of curve fill dfont endchar dfont char="/" !-------------- Beginning of new char. dfont wid=.500002 hei=.75 dep=.25 italic=0 set path ! start of curve newpath ! start of curve amove .150495 .262255 aline .151765 .26162 aline .153035 .260985 aline .154305 .259715 aline .155575 .257175 bezier .13148 .181361 .101704 .106588 .075565 .031115 bezier .604949E-01 -.801486E-02 .483176E-01 -.487238E-01 .03175 -.086995 aline .02921 -.088265 aline .0254 -.088265 aline .02286 -.086995 aline .02159 -.085725 aline .02032 -.083185 bezier .444152E-01 -.737131E-02 .741909E-01 .674023E-01 .10033 .142875 bezier .1154 .182005 .127577 .222714 .144145 .260985 aline .145415 .26162 aline .146685 .262255 closepath ! end of curve fill dfont endchar dfont char="0" !-------------- Beginning of new char. dfont wid=.500002 hei=.644444 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .09398 .233045 bezier .133692 .230449 .156689 .189171 .15875 .153035 aline .159385 .1524 aline .159385 .14732 aline .16002 .146685 aline .16002 .14097 aline .160655 .140335 aline .160655 .12954 aline .16129 .128905 aline .16129 .09398 bezier .159898 .579694E-01 .150442 .966101E-02 .11049 -.004445 bezier .763621E-01 -.180143E-01 .356555E-01 .309333E-02 .024765 .0381 bezier .174801E-01 .565307E-01 .161282E-01 .753836E-01 .014605 .09398 aline .014605 .128905 bezier .161011E-01 .164943 .245434E-01 .212661 .0635 .2286 aline .07112 .23114 aline .07366 .231775 aline .076835 .23241 aline .08128 .23241 aline .081915 .233045 aline .09398 .233045 closepath ! end of curve ! start of curve amove .08255 .225425 bezier .554326E-01 .22189 .460235E-01 .191852 .04445 .169545 aline .04445 .161925 aline .043815 .16129 aline .043815 .147955 aline .04318 .14732 aline .04318 .08382 bezier .454991E-01 .573397E-01 .431303E-01 .025907 .06604 .00635 bezier .880447E-01 -.119819E-01 .120727 .551077E-02 .126365 .03175 bezier .131485 .488626E-01 .131326 .660718E-01 .132715 .08382 aline .132715 .14732 bezier .130646 .172107 .131982 .203129 .108585 .21971 aline .100965 .22352 aline .09906 .224155 aline .09652 .22479 aline .093345 .225425 aline .09271 .22606 aline .083185 .22606 aline .08255 .225425 closepath ! end of curve fill dfont endchar dfont char="1" !-------------- Beginning of new char. dfont wid=.500002 hei=.644444 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .100965 .233045 aline .10287 .23114 aline .10287 .019685 bezier .106079 .961816E-02 .1178 .108627E-01 .12573 .009525 aline .146685 .009525 aline .146685 -.000635 aline .13716 -.000635 aline .136525 0 aline .099695 0 aline .09906 .000635 aline .081915 .000635 aline .08128 0 aline .04445 0 aline .043815 -.000635 aline .03429 -.000635 aline .03429 .009525 aline .055245 .009525 bezier .631752E-01 .108627E-01 .748957E-01 .961816E-02 .078105 .019685 aline .078105 .208915 bezier .637256E-01 .203353 .477358E-01 .200103 .032385 .200025 aline .032385 .210185 bezier .542257E-01 .210766 .791067E-01 .215849 .09525 .233045 aline .100965 .233045 closepath ! end of curve fill dfont endchar dfont char="2" !-------------- Beginning of new char. dfont wid=.500002 hei=.644444 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .090805 .233045 bezier .123156 .231686 .155629 .206131 .15748 .172085 bezier .161783 .127708 .122322 .983985E-01 .09271 .07239 aline .08128 .06096 aline .08001 .060325 aline .05969 .040005 aline .05842 .03937 aline .045085 .026035 aline .04572 .0254 aline .121285 .0254 aline .12192 .026035 aline .135255 .026035 aline .13589 .02667 aline .1397 .02667 bezier .146557 .036467 .146884 .488981E-01 .149225 .05969 aline .15748 .05969 bezier .153975 .039666 .151467 .196523E-01 .147955 -.000635 aline .018415 -.000635 aline .018415 .00762 bezier .515094E-01 .487822E-01 .936715E-01 .834089E-01 .11811 .13081 bezier .131388 .158659 .129166 .195442 .103505 .2159 bezier .777929E-01 .23358 .386173E-01 .215712 .032385 .186055 bezier .478656E-01 .191488 .610748E-01 .171371 .05207 .158115 bezier .435764E-01 .145179 .020431 .149228 .018415 .1651 bezier .145182E-01 .204096 .525404E-01 .238146 .090805 .233045 closepath ! end of curve fill dfont endchar dfont char="3" !-------------- Beginning of new char. dfont wid=.500002 hei=.644444 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .09398 .233045 bezier .121103 .231751 .156629 .210355 .150495 .17907 bezier .149319 .151935 .126416 .131511 .102235 .12319 bezier .140005 .117761 .171035 .782231E-01 .158115 .04064 bezier .140293 -.159153E-01 .055501 -.251883E-01 .022225 .02159 bezier .139742E-01 .350676E-01 .925045E-02 .598608E-01 .028575 .06604 bezier .437191E-01 .711926E-01 .588536E-01 .557393E-01 .05334 .04064 bezier .050512 .310836E-01 .398596E-01 .273451E-01 .031115 .027305 bezier .450606E-01 .646421E-02 .742866E-01 -.404775E-02 .09779 .003175 bezier .126322 .166464E-01 .12789 .053919 .12319 .08001 bezier .120166 .975957E-01 .108306 .114571 .09017 .11811 aline .06096 .11811 aline .060325 .118745 aline .059055 .11938 aline .059055 .123825 bezier .740442E-01 .128001 .942148E-01 .123313 .104775 .139065 bezier .120803 .161421 .127368 .196377 .10668 .217805 bezier .857602E-01 .231835 .560438E-01 .223226 .040005 .205105 aline .03937 .203835 aline .038735 .2032 bezier .483045E-01 .203746 .612709E-01 .197866 .05969 .186055 bezier .063148 .171419 .414178E-01 .161257 .03048 .17145 bezier .170226E-01 .186474 .285823E-01 .210904 .043815 .220345 bezier .583198E-01 .231264 .765012E-01 .233729 .09398 .233045 closepath ! end of curve fill dfont endchar dfont char="4" !-------------- Beginning of new char. dfont wid=.500002 hei=.644444 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .127635 .236855 aline .128905 .23622 aline .12954 .235585 aline .130175 .234315 aline .130175 .06858 aline .13081 .067945 aline .165735 .067945 aline .165735 .057785 aline .13081 .057785 aline .130175 .05715 aline .130175 .019685 bezier .131458 .108566E-01 .141316 .105225E-01 .147955 .009525 aline .164465 .009525 aline .164465 -.000635 aline .15621 -.000635 aline .155575 0 aline .125095 0 aline .12446 .000635 aline .109855 .000635 aline .10922 0 aline .07874 0 aline .078105 -.000635 aline .06985 -.000635 aline .06985 .009525 aline .08636 .009525 bezier .929987E-01 .105225E-01 .102857 .108566E-01 .10414 .019685 aline .10414 .05715 aline .103505 .057785 aline .01016 .057785 bezier .76743E-02 .726746E-01 .212238E-01 .824405E-01 .027305 .094615 bezier .590423E-01 .141826 .089039 .190764 .12192 .236855 closepath ! end of curve ! start of curve amove .104775 .19812 bezier .07692 .154743 .462453E-01 .111569 .02032 .067945 aline .10541 .067945 aline .106045 .06858 aline .106045 .198755 aline .10541 .19939 aline .104775 .19812 closepath ! end of curve fill dfont endchar dfont char="5" !-------------- Beginning of new char. dfont wid=.500002 hei=.644444 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .04064 .233045 bezier .724086E-01 .217835 .107931 .217835 .1397 .233045 aline .14224 .233045 aline .142875 .23241 aline .144145 .231775 bezier .143781 .22128 .131988 .215136 .125095 .20828 bezier .102627 .191002 .714045E-01 .190033 .046355 .197485 aline .046355 .12954 bezier .563104E-01 .136877 .703793E-01 .146198 .084455 .146685 bezier .123703 .151526 .155946 .114068 .15748 .07747 bezier .162518 .362089E-01 .1295 -.533006E-02 .08763 -.008255 bezier .478801E-01 -.138722E-01 .855705E-02 .286528E-01 .020955 .06731 bezier .030607 .812163E-01 .558402E-01 .727591E-01 .052705 .055245 bezier .528361E-01 .431227E-01 .377739E-01 .379986E-01 .293688E-01 .403225E-01 bezier .378604E-01 .870953E-02 .789064E-01 -.119408E-01 .106045 .009525 bezier .132398 .331584E-01 .128388 .728821E-01 .12446 .103505 bezier .121172 .122209 .105939 .143872 .08509 .139065 bezier .672519E-01 .138257 .518241E-01 .126023 .042545 .11176 aline .038735 .11176 aline .037465 .112395 aline .03683 .11303 aline .036195 .1143 aline .036195 .23114 aline .0381 .233045 closepath ! end of curve fill dfont endchar dfont char="6" !-------------- Beginning of new char. dfont wid=.500002 hei=.644444 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .1143 .233045 bezier .137564 .232881 .160071 .207671 .149225 .184785 bezier .139647 .172225 .115989 .180804 .120015 .197485 bezier .120702 .207185 .131126 .211179 .139065 .21082 bezier .118295 .236805 .763746E-01 .223412 .062865 .196215 bezier .481267E-01 .171566 .453389E-01 .142951 .04699 .11557 bezier .537115E-01 .133698 .718522E-01 .150223 .09144 .147955 bezier .128145 .149889 .158713 .113787 .160655 .079375 bezier .163902 .500085E-01 .151521 .196206E-01 .126365 .003175 bezier .968359E-01 -.191429E-01 .504478E-01 -.797223E-02 .03302 .024765 bezier .128575E-01 .633217E-01 .012186 .107275 .01905 .14859 bezier .281635E-01 .19309 .661614E-01 .237024 .1143 .233045 closepath ! end of curve ! start of curve amove .08255 .140335 bezier .538268E-01 .132618 .460566E-01 .979168E-01 .04699 .07239 bezier .476386E-01 .480452E-01 .504143E-01 .113447E-01 .08001 .001905 bezier .103069 -.542679E-02 .125057 .160998E-01 .127635 .038735 aline .12827 .03937 aline .12827 .04318 aline .128905 .043815 aline .128905 .051435 aline .12954 .05207 aline .12954 .089535 bezier .128949 .109648 .119962 .135647 .097155 .14097 aline .083185 .14097 closepath ! end of curve fill dfont endchar dfont char="7" !-------------- Beginning of new char. dfont wid=.500002 hei=.644444 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .040005 .236855 bezier .412613E-01 .22676 .538925E-01 .227513 .06096 .22606 aline .073025 .22606 aline .07366 .225425 aline .17018 .225425 bezier .171665 .212204 .158411 .204048 .153035 .19304 bezier .131039 .161886 .103731 .1317 .09906 .09144 bezier .954683E-01 .075293 .952744E-01 .577386E-01 .09398 .04064 aline .09398 .004445 bezier .917711E-01 -.124101E-01 .644389E-01 -.124101E-01 .06223 .004445 bezier .598421E-01 .682332E-01 .919423E-01 .129885 .13081 .17907 bezier .134882 .18591 .141877 .192383 .144145 .19939 aline .05842 .19939 bezier .504177E-01 .196856 .365345E-01 .203002 .03429 .191135 bezier .315176E-01 .182172 .299496E-01 .173886 .028575 .1651 aline .02032 .1651 bezier .244281E-01 .188932 .276091E-01 .212848 .03175 .236855 closepath ! end of curve fill dfont endchar dfont char="8" !-------------- Beginning of new char. dfont wid=.500002 hei=.644444 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .094615 .233045 bezier .123377 .231832 .15682 .207057 .150495 .17526 bezier .149088 .151538 .127042 .13704 .108585 .126365 bezier .131827 .112861 .159241 .951368E-01 .16002 .06477 bezier .166504 .271084E-01 .130428 -.649493E-02 .094615 -.008255 bezier .602871E-01 -.115566E-01 .191562E-01 .933489E-02 .01524 .046355 bezier .114291E-01 .790669E-01 .385047E-01 .104578 .06604 .11684 bezier .467315E-01 .128408 .262671E-01 .144496 .024765 .16891 bezier .199988E-01 .206916 .584097E-01 .237617 .094615 .233045 closepath ! end of curve ! start of curve amove .08128 .224155 bezier .586894E-01 .224099 .03104 .201614 .04191 .177165 bezier .051429 .157203 .746128E-01 .150846 .090805 .137795 bezier .960046E-01 .135469 .100736 .128603 .106045 .13462 bezier .130146 .147842 .147705 .181816 .127635 .20574 bezier .117208 .219917 .978407E-01 .226788 .08128 .224155 closepath ! end of curve ! start of curve amove .073025 .111125 bezier .400958E-01 .964834E-01 .181325E-01 .511645E-01 .043815 .020955 bezier .698322E-01 -.116515E-01 .130347 -.378416E-02 .142875 .037465 bezier .147609 .596177E-01 .129822 .790515E-01 .111125 .088265 bezier .098755 .958725E-01 .868348E-01 .1043 .074295 .111548 closepath ! end of curve fill dfont endchar dfont char="9" !-------------- Beginning of new char. dfont wid=.500002 hei=.644444 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .095885 .233045 bezier .13708 .228318 .157209 .182713 .15875 .14605 bezier .16612 .956365E-01 .156428 .033511 .109855 .00254 bezier .085446 -.012839 .482205E-01 -.139265E-01 .02921 .01016 bezier .223055E-01 .208689E-01 .200056E-01 .415404E-01 .03556 .04572 aline .04445 .04572 bezier .617291E-01 .424768E-01 .586365E-01 .127346E-01 .04064 .014605 bezier .034188 .145724E-01 .432889E-01 .796203E-02 .046355 .00635 bezier .704568E-01 -.68699E-02 .102649 .33519E-02 .1143 .028575 bezier .128704 .536964E-01 .130424 .822223E-01 .128905 .109855 bezier .122669 .913679E-01 .104166 .745883E-01 .084455 .076835 bezier .475563E-01 .749348E-01 .168559E-01 .11138 .01524 .14605 bezier .116311E-01 .176306 .261653E-01 .206938 .05207 .222885 bezier .647699E-01 .232027 .807892E-01 .233571 .095885 .233045 closepath ! end of curve ! start of curve amove .08382 .224155 bezier .589215E-01 .222104 .471223E-01 .194071 .046355 .17272 aline .046355 .135255 bezier .469095E-01 .115112 .560343E-01 .892219E-01 .07874 .08382 bezier .10418 .079196 .122648 .102759 .126365 .12573 bezier .131096 .150319 .129653 .176727 .121285 .20066 bezier .115262 .215045 .997806E-01 .227985 .08382 .224155 closepath ! end of curve fill dfont endchar dfont char=":" !-------------- Beginning of new char. dfont wid=.277779 hei=.430555 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .05207 .14986 bezier .707024E-01 .147991 .728738E-01 .118664 .05461 .1143 bezier .370706E-01 .107939 .226261E-01 .132432 .036195 .14478 aline .037465 .145415 aline .03937 .14732 aline .04191 .14859 aline .043815 .149225 aline .046355 .14986 closepath ! end of curve ! start of curve amove .05207 .03556 bezier .707024E-01 .033691 .728738E-01 .436431E-02 .05461 0 bezier .370705E-01 -.636072E-02 .226261E-01 .181321E-01 .036195 .03048 aline .037465 .031115 aline .03937 .03302 aline .04191 .03429 aline .043815 .034925 aline .046355 .03556 closepath ! end of curve fill dfont endchar dfont char=";" !-------------- Beginning of new char. dfont wid=.277779 hei=.430555 dep=.194445 italic=0 set path ! start of curve newpath ! start of curve amove .05207 .14986 bezier .707024E-01 .147991 .728738E-01 .118664 .05461 .1143 bezier .370706E-01 .107939 .226261E-01 .132432 .036195 .14478 aline .037465 .145415 aline .03937 .14732 aline .04191 .14859 aline .043815 .149225 aline .046355 .14986 closepath ! end of curve ! start of curve amove .05207 .03556 bezier .649477E-01 .334058E-01 .674632E-01 .018348 .06858 .008255 bezier .702026E-01 -.019554 .618839E-01 -.500217E-01 .04064 -.069215 aline .0381 -.069215 bezier .032094 -.627987E-01 .439244E-01 -.575774E-01 .04572 -.051435 bezier .562612E-01 -.353676E-01 .631732E-01 -.153587E-01 .06096 .003175 bezier .486239E-01 -.761208E-02 .270741E-01 .441234E-02 .031115 .020955 aline .03175 .023495 aline .032385 .0254 aline .033655 .02794 aline .0381 .032385 aline .03937 .03302 aline .040005 .033655 aline .041275 .03429 aline .04318 .034925 aline .04572 .03556 closepath ! end of curve fill dfont endchar dfont char="<" !-------------- Beginning of new char. dfont wid=.277779 hei=.5 dep=.194445 italic=0 set path ! start of curve newpath ! start of curve amove .052705 .174625 bezier .697695E-01 .171763 .726319E-01 .146041 .056515 .1397 bezier .398275E-01 .131429 .221957E-01 .155072 .03556 .168275 aline .036195 .169545 aline .037465 .17018 aline .038735 .17145 aline .040005 .172085 aline .04064 .17272 aline .04191 .173355 aline .043815 .17399 aline .04572 .174625 closepath ! end of curve ! start of curve amove .051435 .108585 aline .052705 .10795 bezier .584331E-01 .513678E-01 .629476E-01 -.571709E-02 .06731 -.062865 bezier .644204E-01 -.813704E-01 .340046E-01 -.813704E-01 .031115 -.062865 bezier .354774E-01 -.571711E-02 .399919E-01 .513678E-01 .04572 .10795 aline .04699 .108585 closepath ! end of curve fill dfont endchar dfont char="=" !-------------- Beginning of new char. dfont wid=.777781 hei=.366875 dep=-.133125 italic=0 set path ! start of curve newpath ! start of curve amove .24765 .12827 aline .24892 .127635 aline .25019 .127 aline .25146 .12573 aline .25273 .12319 aline .25273 .11938 aline .25146 .11684 aline .25019 .11557 aline .24765 .1143 aline .0254 .1143 aline .02286 .11557 aline .02159 .11684 aline .02032 .11938 aline .02032 .12319 aline .02159 .12573 aline .02286 .127 aline .02413 .127635 aline .0254 .12827 closepath ! end of curve ! start of curve amove .24765 .05969 aline .24892 .059055 aline .25019 .05842 aline .25146 .05715 aline .25273 .05461 aline .25273 .0508 aline .25146 .04826 aline .25019 .04699 aline .24765 .04572 aline .0254 .04572 aline .02286 .04699 aline .02159 .04826 aline .02032 .0508 aline .02032 .05461 aline .02159 .05715 aline .02286 .05842 aline .02413 .059055 aline .0254 .05969 closepath ! end of curve fill dfont endchar dfont char=">" !-------------- Beginning of new char. dfont wid=.472224 hei=.5 dep=.194445 italic=0 set path ! start of curve newpath ! start of curve amove .08128 .174625 bezier .983445E-01 .171763 .101207 .146041 .08509 .1397 bezier .684025E-01 .131429 .507707E-01 .155072 .064135 .168275 aline .06477 .169545 aline .06604 .17018 aline .06731 .17145 aline .06858 .172085 aline .069215 .17272 aline .070485 .173355 aline .07239 .17399 aline .074295 .174625 closepath ! end of curve ! start of curve amove .08001 .108585 aline .08128 .10795 bezier .850948E-01 .697267E-01 .772729E-01 .296131E-01 .05334 -.001905 bezier .472753E-01 -.191783E-01 .459649E-01 -.399539E-01 .05461 -.056515 bezier .724725E-01 -.736102E-01 .995436E-01 -.651629E-01 .11938 -.055245 bezier .123813 -.519772E-01 .132312 -.455795E-01 .131445 -.414867E-01 bezier .116405 -.452669E-01 .106406 -.219557E-01 .11938 -.013335 bezier .127834 -.592196E-02 .14451 -.108021E-01 .145415 -.02286 bezier .148291 -.546663E-01 .112544 -.721097E-01 .085725 -.073025 bezier .604774E-01 -.754337E-01 .280765E-01 -.670032E-01 .02159 -.038735 bezier .181004E-01 -.216546E-01 .211045E-01 -.545914E-03 .03683 .01016 bezier .651057E-01 .341065E-01 .077192 .071295 .07366 .107315 aline .074295 .10795 aline .075565 .108585 closepath ! end of curve fill dfont endchar dfont char="?" !-------------- Beginning of new char. dfont wid=.472224 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .088265 .24638 bezier .112268 .245863 .143126 .232276 .145415 .20447 bezier .14767 .18619 .13756 .168331 .121285 .16002 bezier .100355 .143487 .851066E-01 .118602 .081915 .09271 aline .081915 .066675 aline .08128 .06604 aline .08001 .065405 aline .075565 .065405 aline .074295 .06604 bezier .699894E-01 .103683 .800546E-01 .144967 .108585 .172085 bezier .119695 .189231 .120888 .21408 .10795 .230505 bezier .848823E-01 .246803 .481776E-01 .240639 .03302 .2159 bezier .435348E-01 .216616 .547538E-01 .207962 .05207 .196215 bezier .502162E-01 .179258 .221738E-01 .179258 .02032 .196215 bezier .017392 .224575 .457684E-01 .244675 .07112 .24638 aline .088265 .24638 closepath ! end of curve ! start of curve amove .08128 .03556 bezier .983445E-01 .326979E-01 .101207 .697633E-02 .08509 .000635 bezier .684025E-01 -.763559E-02 .507708E-01 .160069E-01 .064135 .02921 aline .06477 .03048 aline .06604 .031115 aline .06731 .032385 aline .06858 .03302 aline .069215 .033655 aline .070485 .03429 aline .07239 .034925 aline .074295 .03556 closepath ! end of curve fill dfont endchar dfont char="@" !-------------- Beginning of new char. dfont wid=.777781 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .14478 .24638 bezier .202295 .242675 .251207 .188204 .252095 .13081 bezier .252933 .10612 .254462 .797652E-01 .241935 .05715 bezier .227126 .341612E-01 .187579 .445236E-01 .181398 .681567E-01 bezier .162113 .039661 .119596 .372548E-01 .094615 .05969 bezier .498464E-01 .955267E-01 .615728E-01 .17782 .11811 .194945 bezier .143457 .203759 .172004 .190904 .18542 .168275 aline .202565 .168275 aline .20447 .16764 aline .20574 .16637 aline .20574 .06731 bezier .207515 .596602E-01 .212427 .477642E-01 .22225 .05207 bezier .239419 .557038E-01 .241541 .772909E-01 .24384 .090805 bezier .247527 .129455 .24206 .170884 .215265 .201295 bezier .182023 .243662 .116607 .25223 .07493 .217805 bezier .020117 .175834 .135122E-01 .907125E-01 .05842 .03937 bezier .838549E-01 .898883E-02 .126128 -.31827E-02 .163195 .004445 bezier .187177 .704409E-02 .212621 .147025E-01 .23495 .026035 aline .250825 .026035 bezier .257392 .208256E-01 .24613 .176476E-01 .241935 .015875 bezier .198186 -.732497E-03 .152445 -.995888E-02 .107315 -.000635 bezier .467786E-01 .015387 .103423E-01 .838303E-01 .022225 .14224 bezier .284675E-01 .201765 .085194 .251552 .14478 .24638 closepath ! end of curve ! start of curve amove .13208 .189865 bezier .10461 .184478 .936419E-01 .152692 .090805 .128905 bezier .895645E-01 .101314 .977341E-01 .669863E-01 .125095 .053975 bezier .148573 .446488E-01 .172672 .641527E-01 .182245 .08509 aline .182245 .156845 bezier .173293 .17578 .154501 .192197 .132715 .1905 closepath ! end of curve fill dfont endchar dfont char="A" !-------------- Beginning of new char. dfont wid=.750002 hei=.683332 dep=0 italic=0 dfont fby="C" kadd=-.0277786 dfont fby="G" kadd=-.0277786 dfont fby="O" kadd=-.0277786 dfont fby="Q" kadd=-.0277786 dfont fby="T" kadd=-.083334 dfont fby="U" kadd=-.0277786 dfont fby="V" kadd=-.111112 dfont fby="W" kadd=-.111112 dfont fby="Y" kadd=-.083334 dfont fby="t" kadd=-.0277786 set path ! start of curve newpath ! start of curve amove .135255 .25019 aline .136525 .249555 bezier .166188 .173048 .190063 .935248E-01 .219075 .01651 aline .22225 .013335 aline .22479 .012065 aline .226695 .01143 aline .22987 .010795 aline .230505 .01016 aline .23622 .01016 aline .236855 .009525 aline .25146 .009525 aline .25146 -.000635 aline .244475 -.000635 aline .24384 0 aline .21463 0 aline .213995 .000635 aline .19939 .000635 aline .198755 0 aline .1651 0 aline .164465 -.000635 aline .155575 -.000635 aline .155575 .009525 aline .16637 .009525 bezier .173503 .105601E-01 .188477 .131141E-01 .18415 .02413 bezier .177313 .424075E-01 .171883 .614571E-01 .164465 .079375 aline .078105 .079375 aline .075565 .071755 aline .07493 .070485 aline .06985 .055245 aline .069215 .053975 bezier .663353E-01 .412721E-01 .536309E-01 .250057E-01 .067945 .01524 aline .06858 .014605 aline .07366 .012065 aline .075565 .01143 aline .078105 .010795 aline .07874 .01016 aline .081915 .01016 aline .08255 .009525 aline .086995 .009525 aline .086995 -.000635 aline .080645 -.000635 aline .08001 0 aline .052705 0 aline .05207 .000635 aline .041275 .000635 aline .04064 0 aline .01778 0 aline .017145 -.000635 aline .012065 -.000635 aline .012065 .009525 bezier .299055E-01 .824771E-02 .492499E-01 .190848E-01 .052705 .0381 bezier .776166E-01 .108477 .100326 .180147 .127 .249555 aline .12827 .25019 closepath ! end of curve ! start of curve amove .12065 .20193 bezier .108069 .164532 .093425 .127055 .08255 .089535 aline .160655 .089535 bezier .149141 .127461 .134785 .166073 .121603 .203676 aline .121158 .203454 closepath ! end of curve fill dfont endchar dfont char="B" !-------------- Beginning of new char. dfont wid=.708336 hei=.683332 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .149225 .23876 bezier .182508 .237551 .222229 .212059 .219075 .174625 bezier .214901 .146819 .186996 .129072 .160655 .12446 bezier .195712 .122765 .235285 .924123E-01 .227965 .053975 bezier .221995 .217926E-01 .18923 .134136E-02 .15875 -.000635 aline .013335 -.000635 aline .013335 .009525 bezier .025262 .107861E-01 .401451E-01 .617013E-02 .04826 .01651 aline .048895 .01905 aline .04953 .019685 aline .04953 .21844 bezier .476616E-01 .227642 .375413E-01 .227749 .03048 .2286 aline .013335 .2286 aline .013335 .23876 aline .149225 .23876 closepath ! end of curve ! start of curve amove .086995 .227965 aline .08382 .22733 aline .081915 .226695 aline .080645 .22606 aline .08001 .22479 aline .079375 .224155 aline .07874 .221615 aline .078105 .22098 aline .078105 .12827 aline .07874 .127635 aline .1397 .127635 bezier .172373 .132074 .195282 .169185 .18161 .19939 bezier .175917 .214669 .16162 .226133 .14605 .2286 aline .08763 .2286 aline .086995 .227965 closepath ! end of curve ! start of curve amove .078105 .120015 aline .078105 .017145 aline .07874 .01651 aline .079375 .01397 aline .08001 .013335 aline .080645 .012065 aline .081915 .01143 aline .08382 .010795 aline .086995 .01016 aline .08763 .009525 aline .146685 .009525 bezier .179265 .125428E-01 .201917 .496219E-01 .19177 .08001 bezier .187254 .101032 .169193 .118937 .147955 .12065 aline .07874 .12065 aline .078105 .120015 closepath ! end of curve fill dfont endchar dfont char="C" !-------------- Beginning of new char. dfont wid=.722224 hei=.683332 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .14986 .24638 bezier .171263 .244655 .192063 .233128 .206375 .216535 bezier .214056 .226134 .219924 .23704 .227965 .24638 aline .231775 .24638 aline .23241 .245745 aline .23368 .24511 aline .23368 .147955 aline .23241 .14732 aline .231775 .146685 aline .225425 .146685 aline .22479 .14732 bezier .219666 .182788 .199513 .227901 .158115 .23495 bezier .115826 .242876 .722575E-01 .210246 .06223 .168275 bezier .511436E-01 .123518 .517999E-01 .718228E-01 .08128 .03302 bezier .108594 -.613529E-03 .160917 -.904824E-02 .194945 .01905 bezier .214222 .356003E-01 .226047 .609059E-01 .225425 .085725 aline .226695 .08636 aline .22733 .086995 aline .231775 .086995 aline .23241 .08636 bezier .236529 .654909E-01 .226047 .405309E-01 .21209 .023495 bezier .174505 -.216998E-01 .103335 -.152286E-01 .062865 .022225 bezier .147317E-02 .744548E-01 .740209E-02 .181731 .075565 .225425 bezier .968772E-01 .240977 .123995 .247561 .14986 .24638 closepath ! end of curve fill dfont endchar dfont char="D" !-------------- Beginning of new char. dfont wid=.763891 hei=.683332 dep=0 italic=0 dfont fby="A" kadd=-.0277786 dfont fby="V" kadd=-.0277786 dfont fby="W" kadd=-.0277786 dfont fby="X" kadd=-.0277786 dfont fby="Y" kadd=-.0277786 set path ! start of curve newpath ! start of curve amove .149225 .23876 bezier .204986 .234542 .246513 .179019 .248285 .12573 bezier .253817 .675656E-01 .211032 .340006E-02 .14986 0 aline .149225 -.000635 aline .013335 -.000635 aline .013335 .009525 bezier .025262 .107861E-01 .401451E-01 .617013E-02 .04826 .01651 aline .048895 .01905 aline .04953 .019685 aline .04953 .21844 bezier .476616E-01 .227642 .375413E-01 .227749 .03048 .2286 aline .013335 .2286 aline .013335 .23876 aline .149225 .23876 closepath ! end of curve ! start of curve amove .08763 .227965 aline .084455 .22733 aline .08255 .226695 aline .08128 .22606 aline .080645 .22479 aline .08001 .224155 aline .079375 .221615 aline .07874 .22098 aline .07874 .017145 aline .079375 .01651 aline .08001 .01397 aline .080645 .013335 aline .08128 .012065 aline .08255 .01143 aline .084455 .010795 aline .08763 .01016 aline .088265 .009525 aline .1397 .009525 bezier .173576 .126767E-01 .203659 .392853E-01 .20955 .07366 bezier .215869 .107661 .216188 .143691 .205105 .177165 bezier .195475 .205656 .16785 .225698 .139065 .2286 aline .088265 .2286 aline .08763 .227965 closepath ! end of curve fill dfont endchar dfont char="E" !-------------- Beginning of new char. dfont wid=.680557 hei=.683332 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .20955 .23749 bezier .212831 .21092 .215794 .185012 .219075 .15875 aline .21082 .15875 bezier .207942 .181045 .204852 .211686 .179705 .221615 aline .17399 .22352 aline .17145 .224155 aline .1651 .225425 aline .164465 .22606 aline .16002 .22606 aline .159385 .226695 aline .151765 .226695 aline .15113 .22733 aline .0889 .22733 aline .088265 .226695 aline .08509 .22606 aline .083185 .225425 aline .081915 .22479 aline .08128 .22352 aline .080645 .222885 aline .08001 .220345 aline .079375 .21971 aline .079375 .128905 aline .08001 .12827 aline .11938 .12827 bezier .131982 .128514 .147528 .135809 .147955 .15113 aline .14859 .151765 aline .14859 .156845 aline .149225 .15748 aline .149225 .169545 aline .15748 .169545 aline .15748 .076835 aline .149225 .076835 bezier .150005 .917847E-01 .148037 .113075 .12954 .116205 aline .128905 .11684 aline .12573 .11684 aline .125095 .117475 aline .120015 .117475 aline .11938 .11811 aline .08001 .11811 aline .079375 .117475 aline .079375 .017145 aline .08001 .01651 aline .080645 .01397 aline .08128 .013335 aline .081915 .012065 aline .083185 .01143 aline .08509 .010795 aline .088265 .01016 aline .0889 .009525 aline .153035 .009525 bezier .176045 .100243E-01 .204287 .205945E-01 .21082 .046355 bezier .216166 .060669 .218414 .754136E-01 .22098 .089535 aline .229235 .089535 bezier .22428 .594612E-01 .219593 .297019E-01 .21463 -.000635 aline .0127 -.000635 aline .0127 .009525 bezier .024627 .107861E-01 .395101E-01 .617012E-02 .047625 .01651 aline .04826 .01905 aline .048895 .019685 aline .048895 .21717 bezier .470266E-01 .226372 .369063E-01 .226479 .029845 .22733 aline .0127 .22733 aline .0127 .23749 closepath ! end of curve fill dfont endchar dfont char="F" !-------------- Beginning of new char. dfont wid=.652781 hei=.683332 dep=0 italic=0 dfont fby="A" kadd=-.111112 dfont fby="C" kadd=-.0277786 dfont fby="G" kadd=-.0277786 dfont fby="O" kadd=-.0277786 dfont fby="Q" kadd=-.0277786 dfont fby="a" kadd=-.083334 dfont fby="e" kadd=-.083334 dfont fby="o" kadd=-.083334 dfont fby="r" kadd=-.083334 dfont fby="u" kadd=-.083334 set path ! start of curve newpath ! start of curve amove .20447 .23749 bezier .207751 .21092 .210714 .185012 .213995 .15875 aline .20574 .15875 bezier .202931 .18251 .198745 .216866 .169545 .22352 aline .16764 .224155 aline .16129 .225425 aline .160655 .22606 aline .156845 .22606 aline .15621 .226695 aline .14859 .226695 aline .147955 .22733 aline .0889 .22733 aline .088265 .226695 aline .08509 .22606 aline .083185 .225425 aline .081915 .22479 aline .08128 .22352 aline .080645 .222885 aline .08001 .220345 aline .079375 .21971 aline .079375 .12446 aline .08001 .123825 aline .11811 .123825 bezier .129131 .124706 .143472 .129879 .14478 .14351 aline .145415 .146685 aline .14605 .14732 aline .14605 .1524 aline .146685 .153035 aline .146685 .1651 aline .15494 .1651 aline .15494 .07239 aline .146685 .07239 bezier .147244 .872638E-01 .145842 .108299 .127635 .11176 aline .127 .112395 aline .123825 .112395 aline .12319 .11303 aline .118745 .11303 aline .11811 .113665 aline .08001 .113665 aline .079375 .11303 aline .079375 .019685 bezier .828513E-01 .950903E-02 .946233E-01 .107478E-01 .10287 .009525 aline .12446 .009525 aline .12446 -.000635 aline .1143 -.000635 aline .113665 0 aline .07366 0 aline .073025 .000635 aline .056515 .000635 aline .05588 0 aline .022225 0 aline .02159 -.000635 aline .0127 -.000635 aline .0127 .009525 bezier .024627 .107861E-01 .395101E-01 .617012E-02 .047625 .01651 aline .04826 .01905 aline .048895 .019685 aline .048895 .21717 bezier .470266E-01 .226372 .369063E-01 .226479 .029845 .22733 aline .0127 .22733 aline .0127 .23749 aline .20447 .23749 closepath ! end of curve fill dfont endchar dfont char="G" !-------------- Beginning of new char. dfont wid=.784724 hei=.683332 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .14986 .24638 bezier .171263 .244655 .192063 .233128 .206375 .216535 bezier .214056 .226134 .219924 .23704 .227965 .24638 aline .231775 .24638 aline .23241 .245745 aline .23368 .24511 aline .23368 .147955 aline .23241 .14732 aline .231775 .146685 aline .225425 .146685 aline .22479 .14732 bezier .219666 .182788 .199513 .227901 .158115 .23495 bezier .115826 .242876 .722575E-01 .210246 .06223 .168275 bezier .511445E-01 .124142 .518954E-01 .729076E-01 .080645 .03429 bezier .107902 -.464813E-04 .166929 -.124476E-01 .197485 .023495 aline .20066 .029845 aline .20193 .033655 aline .202565 .03683 aline .2032 .037465 aline .2032 .074295 bezier .199991 .843619E-01 .18827 .831173E-01 .18034 .084455 aline .159385 .084455 aline .159385 .094615 aline .169545 .094615 aline .17018 .09398 aline .208915 .09398 aline .20955 .093345 aline .224155 .093345 aline .22479 .09398 aline .250825 .09398 aline .25146 .094615 aline .25781 .094615 aline .25781 .084455 bezier .249064 .841762E-01 .236494 .086216 .23368 .075565 aline .23368 .000635 aline .23241 0 aline .231775 -.000635 bezier .221719 .198377E-02 .214773 .141215E-01 .208068 .205317E-01 bezier .186367 -.103319E-01 .143118 -.127448E-01 .109855 -.00381 bezier .491817E-01 .126052E-01 .100588E-01 .802307E-01 .022225 .1397 bezier .288379E-01 .201355 .884748E-01 .250958 .14986 .24638 closepath ! end of curve fill dfont endchar dfont char="H" !-------------- Beginning of new char. dfont wid=.750002 hei=.683332 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .02159 .23876 aline .022225 .238125 aline .05588 .238125 aline .056515 .23749 aline .071755 .23749 aline .07239 .238125 aline .106045 .238125 aline .10668 .23876 aline .11557 .23876 aline .11557 .2286 bezier .103643 .227339 .887599E-01 .231955 .080645 .221615 aline .08001 .219075 aline .079375 .21844 aline .079375 .12954 aline .08001 .128905 aline .183515 .128905 aline .18415 .12954 aline .18415 .21844 bezier .182282 .227642 .172161 .227749 .1651 .2286 aline .147955 .2286 aline .147955 .23876 aline .156845 .23876 aline .15748 .238125 aline .191135 .238125 aline .19177 .23749 aline .20701 .23749 aline .207645 .238125 aline .2413 .238125 aline .241935 .23876 aline .250825 .23876 aline .250825 .2286 bezier .238898 .227339 .224015 .231955 .2159 .221615 aline .215265 .219075 aline .21463 .21844 aline .21463 .019685 bezier .216498 .104831E-01 .226619 .103757E-01 .23368 .009525 aline .250825 .009525 aline .250825 -.000635 aline .241935 -.000635 aline .2413 0 aline .207645 0 aline .20701 .000635 aline .19177 .000635 aline .191135 0 aline .15748 0 aline .156845 -.000635 aline .147955 -.000635 aline .147955 .009525 bezier .159882 .107861E-01 .174765 .617013E-02 .18288 .01651 aline .183515 .01905 aline .18415 .019685 aline .18415 .11811 aline .183515 .118745 aline .08001 .118745 aline .079375 .11811 aline .079375 .019685 bezier .812434E-01 .104831E-01 .913637E-01 .103757E-01 .098425 .009525 aline .11557 .009525 aline .11557 -.000635 aline .10668 -.000635 aline .106045 0 aline .07239 0 aline .071755 .000635 aline .056515 .000635 aline .05588 0 aline .022225 0 aline .02159 -.000635 aline .0127 -.000635 aline .0127 .009525 bezier .024627 .107861E-01 .395101E-01 .617012E-02 .047625 .01651 aline .04826 .01905 aline .048895 .019685 aline .048895 .21844 bezier .470266E-01 .227642 .369063E-01 .227749 .029845 .2286 aline .0127 .2286 aline .0127 .23876 aline .02159 .23876 closepath ! end of curve fill dfont endchar dfont char="I" !-------------- Beginning of new char. dfont wid=.361112 hei=.683332 dep=0 italic=0 dfont fby="I" kadd=.0277786 set path ! start of curve newpath ! start of curve amove .01905 .23876 aline .019685 .238125 aline .05461 .238125 aline .055245 .23749 aline .071755 .23749 aline .07239 .238125 aline .107315 .238125 aline .10795 .23876 aline .11684 .23876 aline .11684 .2286 aline .098425 .2286 bezier .911321E-01 .227657 .809868E-01 .227847 .07874 .21844 aline .07874 .019685 bezier .809868E-01 .102776E-01 .911321E-01 .104677E-01 .098425 .009525 aline .11684 .009525 aline .11684 -.000635 aline .10795 -.000635 aline .107315 0 aline .07239 0 aline .071755 .000635 aline .055245 .000635 aline .05461 0 aline .019685 0 aline .01905 -.000635 aline .01016 -.000635 aline .01016 .009525 aline .028575 .009525 bezier .358679E-01 .104677E-01 .460132E-01 .102776E-01 .04826 .019685 aline .04826 .21844 bezier .460131E-01 .227847 .358679E-01 .227657 .028575 .2286 aline .01016 .2286 aline .01016 .23876 aline .01905 .23876 closepath ! end of curve fill dfont endchar dfont char="J" !-------------- Beginning of new char. dfont wid=.51389 hei=.683332 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .06985 .23876 aline .070485 .238125 aline .111125 .238125 aline .11176 .23749 aline .127635 .23749 aline .12827 .238125 aline .155575 .238125 aline .15621 .23876 aline .163195 .23876 aline .163195 .2286 bezier .153581 .227905 .139735 .231125 .13589 .21971 aline .13589 .043815 bezier .130288 -.836878E-02 .052005 -.276283E-01 .022225 .01524 bezier .124055E-01 .284277E-01 .106496E-01 .546554E-01 .031115 .05842 bezier .485587E-01 .623084E-01 .611669E-01 .400852E-01 .050165 .02667 aline .04699 .023495 aline .04572 .02286 aline .045085 .022225 aline .042545 .020955 aline .04064 .02032 aline .0381 .019685 aline .03175 .019685 bezier .427069E-01 -.140239E-02 .808907E-01 -.108585E-01 .095885 .013335 bezier .102221 .219713E-01 .104828 .333381E-01 .10668 .04318 aline .10668 .217805 bezier .103537 .228977 .090563 .227235 .081915 .2286 aline .05969 .2286 aline .05969 .23876 aline .06985 .23876 closepath ! end of curve fill dfont endchar dfont char="K" !-------------- Beginning of new char. dfont wid=.777781 hei=.683332 dep=0 italic=0 dfont fby="C" kadd=-.0277786 dfont fby="G" kadd=-.0277786 dfont fby="O" kadd=-.0277786 dfont fby="Q" kadd=-.0277786 set path ! start of curve newpath ! start of curve amove .02159 .23876 aline .022225 .238125 aline .05588 .238125 aline .056515 .23749 aline .071755 .23749 aline .07239 .238125 aline .106045 .238125 aline .10668 .23876 aline .11557 .23876 aline .11557 .2286 bezier .103643 .227339 .887599E-01 .231955 .080645 .221615 aline .08001 .219075 aline .079375 .21844 aline .079375 .100965 aline .08001 .10033 bezier .117758 .137194 .157391 .172743 .193675 .21082 bezier .199307 .220494 .188238 .229249 .17907 .2286 aline .17907 .23876 aline .18669 .23876 aline .187325 .238125 aline .219075 .238125 aline .21971 .23749 aline .230505 .23749 aline .23114 .238125 aline .248285 .238125 aline .24892 .23876 aline .25273 .23876 aline .25273 .2286 bezier .218412 .229059 .196233 .198774 .17272 .1778 aline .15748 .16256 aline .15621 .161925 aline .141605 .14732 bezier .140732 .14366 .147607 .137417 .14986 .132715 bezier .174802 .956485E-01 .199463 .583789E-01 .22479 .02159 bezier .232643 .110414E-01 .245666 .880817E-02 .25781 .009525 aline .25781 -.000635 aline .25146 -.000635 aline .250825 0 aline .226695 0 aline .22606 .000635 aline .212725 .000635 aline .21209 0 aline .1778 0 aline .177165 -.000635 aline .168275 -.000635 aline .168275 .009525 bezier .17731 .806678E-02 .192555 .126835E-01 .18796 .024765 bezier .166498 .596983E-01 .142664 .929225E-01 .120015 .127 aline .10922 .116205 aline .10795 .11557 aline .093345 .100965 aline .092075 .10033 aline .079375 .08763 aline .079375 .019685 bezier .812434E-01 .104831E-01 .913637E-01 .103757E-01 .098425 .009525 aline .11557 .009525 aline .11557 -.000635 aline .10668 -.000635 aline .106045 0 aline .07239 0 aline .071755 .000635 aline .056515 .000635 aline .05588 0 aline .022225 0 aline .02159 -.000635 aline .0127 -.000635 aline .0127 .009525 bezier .024627 .107861E-01 .395101E-01 .617012E-02 .047625 .01651 aline .04826 .01905 aline .048895 .019685 aline .048895 .21844 bezier .470266E-01 .227642 .369063E-01 .227749 .029845 .2286 aline .0127 .2286 aline .0127 .23876 aline .02159 .23876 closepath ! end of curve fill dfont endchar dfont char="L" !-------------- Beginning of new char. dfont wid=.625002 hei=.683332 dep=0 italic=0 dfont fby="T" kadd=-.083334 dfont fby="V" kadd=-.111112 dfont fby="W" kadd=-.111112 dfont fby="Y" kadd=-.083334 set path ! start of curve newpath ! start of curve amove .02159 .23876 aline .022225 .238125 aline .05588 .238125 aline .056515 .23749 aline .073025 .23749 aline .07366 .238125 aline .113665 .238125 aline .1143 .23876 aline .12446 .23876 aline .12446 .2286 aline .10287 .2286 bezier .946233E-01 .227377 .828513E-01 .228616 .079375 .21844 aline .079375 .017145 aline .08001 .01651 aline .080645 .01397 aline .08128 .013335 aline .081915 .012065 aline .083185 .01143 aline .08509 .010795 aline .088265 .01016 aline .0889 .009525 aline .133985 .009525 bezier .158344 .110355E-01 .184467 .264304E-01 .189865 .052705 bezier .193448 .653826E-01 .194969 .768067E-01 .196215 .089535 aline .20447 .089535 bezier .201257 .594297E-01 .198266 .297582E-01 .194945 -.000635 aline .0127 -.000635 aline .0127 .009525 bezier .024627 .107861E-01 .395101E-01 .617012E-02 .047625 .01651 aline .04826 .01905 aline .048895 .019685 aline .048895 .21844 bezier .470266E-01 .227642 .369063E-01 .227749 .029845 .2286 aline .0127 .2286 aline .0127 .23876 aline .02159 .23876 closepath ! end of curve fill dfont endchar dfont char="M" !-------------- Beginning of new char. dfont wid=.916669 hei=.683332 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .08001 .23876 bezier .881712E-01 .230659 .890909E-01 .217166 .094615 .20701 bezier .116641 .149354 .138981 .918284E-01 .16129 .03429 bezier .188422 .101972 .212683 .171416 .2413 .238125 aline .24257 .23876 aline .307975 .23876 aline .307975 .2286 bezier .296048 .227339 .281165 .231955 .27305 .221615 aline .272415 .219075 aline .27178 .21844 aline .27178 .019685 bezier .273648 .104831E-01 .283769 .103757E-01 .29083 .009525 aline .307975 .009525 aline .307975 -.000635 aline .29972 -.000635 aline .299085 0 aline .266065 0 aline .26543 .000635 aline .250825 .000635 aline .25019 0 aline .21717 0 aline .216535 -.000635 aline .20828 -.000635 aline .20828 .009525 bezier .220207 .107861E-01 .23509 .617013E-02 .243205 .01651 aline .24384 .01905 aline .244475 .019685 aline .244475 .227965 bezier .239777 .221364 .236685 .208392 .23241 .19939 bezier .206247 .133051 .182219 .652561E-01 .154305 0 bezier .144592 -.340278E-02 .144507 .107492E-01 .14097 .01651 bezier .114169 .861818E-01 .871919E-01 .155781 .060325 .225425 aline .05969 .22479 aline .05969 .028575 bezier .634374E-01 .126883E-01 .819372E-01 .901146E-02 .095885 .009525 aline .095885 -.000635 aline .0889 -.000635 aline .088265 0 aline .061595 0 aline .06096 .000635 aline .048895 .000635 aline .04826 0 aline .02159 0 aline .020955 -.000635 aline .01397 -.000635 aline .01397 .009525 bezier .279178E-01 .901146E-02 .464176E-01 .126883E-01 .050165 .028575 aline .050165 .21844 bezier .482966E-01 .227642 .381763E-01 .227749 .031115 .2286 aline .01397 .2286 aline .01397 .23876 closepath ! end of curve fill dfont endchar dfont char="N" !-------------- Beginning of new char. dfont wid=.750002 hei=.683332 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .07874 .23876 bezier .121176 .176909 .16271 .114408 .20447 .05207 aline .205105 .052705 aline .205105 .20955 bezier .201358 .225437 .182858 .229114 .16891 .2286 aline .16891 .23876 aline .175895 .23876 aline .17653 .238125 aline .2032 .238125 aline .203835 .23749 aline .2159 .23749 aline .216535 .238125 aline .243205 .238125 aline .24384 .23876 aline .250825 .23876 aline .250825 .2286 bezier .236877 .229114 .218377 .225437 .21463 .20955 aline .21463 .00127 bezier .208491 -.496167E-02 .202791 .364241E-02 .200025 .00889 bezier .153211 .788669E-01 .106386 .148836 .059055 .21844 aline .05842 .217805 aline .05842 .028575 bezier .621674E-01 .126883E-01 .806672E-01 .901146E-02 .094615 .009525 aline .094615 -.000635 aline .08763 -.000635 aline .086995 0 aline .060325 0 aline .05969 .000635 aline .047625 .000635 aline .04699 0 aline .02032 0 aline .019685 -.000635 aline .0127 -.000635 aline .0127 .009525 bezier .266478E-01 .901146E-02 .451476E-01 .126883E-01 .048895 .028575 aline .048895 .225425 aline .04826 .22606 aline .045085 .226695 aline .04445 .22733 aline .041275 .22733 aline .04064 .227965 aline .03302 .227965 aline .032385 .2286 aline .0127 .2286 aline .0127 .23876 aline .07874 .23876 closepath ! end of curve fill dfont endchar dfont char="O" !-------------- Beginning of new char. dfont wid=.777781 hei=.683332 dep=0 italic=0 dfont fby="A" kadd=-.0277786 dfont fby="V" kadd=-.0277786 dfont fby="W" kadd=-.0277786 dfont fby="X" kadd=-.0277786 dfont fby="Y" kadd=-.0277786 set path ! start of curve newpath ! start of curve amove .144145 .24638 bezier .203945 .242778 .250391 .185202 .25273 .127635 bezier .258235 .666173E-01 .214732 -.681331E-04 .15113 -.006985 bezier .918884E-01 -.017422 .333816E-01 .313885E-01 .02286 .09017 bezier .874393E-02 .152709 .457141E-01 .22874 .112395 .24384 aline .118745 .24511 aline .12192 .24511 aline .122555 .245745 aline .12827 .245745 aline .128905 .24638 aline .144145 .24638 closepath ! end of curve ! start of curve amove .130175 .23749 bezier .085183 .233257 .591533E-01 .18544 .05715 .14478 bezier .528067E-01 .100459 .586617E-01 .492229E-01 .09398 .01651 bezier .117877 -.505281E-02 .155173 -.505281E-02 .17907 .01651 bezier .217912 .527723E-01 .220934 .110128 .21463 .158115 bezier .208136 .194984 .182956 .233812 .142875 .23749 aline .14224 .238125 aline .13081 .238125 aline .130175 .23749 closepath ! end of curve fill dfont endchar dfont char="P" !-------------- Beginning of new char. dfont wid=.680557 hei=.683332 dep=0 italic=0 dfont fby="," kadd=-.083334 dfont fby="." kadd=-.083334 dfont fby="A" kadd=-.083334 dfont fby="a" kadd=-.0277786 dfont fby="e" kadd=-.0277786 dfont fby="o" kadd=-.0277786 set path ! start of curve newpath ! start of curve amove .14478 .23876 bezier .181087 .23735 .222777 .208569 .219075 .168275 bezier .214753 .134621 .179841 .113368 .14859 .11049 aline .080645 .11049 aline .08001 .109855 aline .08001 .019685 bezier .818784E-01 .104831E-01 .919987E-01 .103757E-01 .09906 .009525 aline .116205 .009525 aline .116205 -.000635 aline .107315 -.000635 aline .10668 0 aline .073025 0 aline .07239 .000635 aline .05715 .000635 aline .056515 0 aline .02286 0 aline .022225 -.000635 aline .013335 -.000635 aline .013335 .009525 bezier .025262 .107861E-01 .401451E-01 .617013E-02 .04826 .01651 aline .048895 .01905 aline .04953 .019685 aline .04953 .21844 bezier .476616E-01 .227642 .375413E-01 .227749 .03048 .2286 aline .013335 .2286 aline .013335 .23876 aline .14478 .23876 closepath ! end of curve ! start of curve amove .08763 .227965 aline .084455 .22733 aline .08255 .226695 aline .08128 .22606 aline .080645 .22479 aline .08001 .224155 aline .079375 .221615 aline .07874 .22098 aline .07874 .11938 aline .079375 .118745 aline .135255 .118745 bezier .155871 .120206 .180852 .132602 .182245 .156845 bezier .185839 .180174 .184737 .212578 .158115 .222885 bezier .150822 .226101 .143003 .227228 .13589 .2286 aline .088265 .2286 aline .08763 .227965 closepath ! end of curve fill dfont endchar dfont char="Q" !-------------- Beginning of new char. dfont wid=.777781 hei=.683332 dep=.194445 italic=0 set path ! start of curve newpath ! start of curve amove .144145 .24638 bezier .203945 .242778 .250391 .185202 .25273 .127635 bezier .256586 .767524E-01 .228987 .221951E-01 .180975 .00127 bezier .187461 -.126288E-01 .193916 -.302307E-01 .21082 -.033655 bezier .230435 -.364027E-01 .248817 -.189165E-01 .24765 .000635 aline .249555 .00254 aline .25273 .00254 aline .254635 .000635 bezier .25528 -.256463E-01 .248684 -.629856E-01 .217805 -.069215 bezier .197703 -.726491E-01 .180479 -.566144E-01 .17653 -.037465 bezier .172334 -.259058E-01 .173767 -.132446E-01 .16891 -.338667E-02 bezier .113148 -.225223E-01 .484123E-01 .135373E-01 .02921 .069215 bezier .26529E-02 .134027 .352449E-01 .220567 .10541 .241935 aline .10795 .24257 aline .109855 .243205 aline .112395 .24384 aline .118745 .24511 aline .12192 .24511 aline .122555 .245745 aline .12827 .245745 aline .128905 .24638 aline .144145 .24638 closepath ! end of curve ! start of curve amove .130175 .23749 bezier .833269E-01 .232712 .577513E-01 .181354 .05588 .1397 bezier .513701E-01 .979605E-01 .574068E-01 .505306E-01 .089535 .01905 bezier .967251E-01 .134998E-01 .104879 .68384E-02 .113665 .00508 bezier .985512E-01 .241916E-01 .117306 .558099E-01 .141605 .0508 bezier .160611 .482496E-01 .169804 .294538E-01 .176848 .141288E-01 bezier .205955 .346861E-01 .216365 .735507E-01 .21844 .106045 bezier .21982 .146833 .213343 .191701 .180975 .22098 bezier .166903 .23225 .147943 .240402 .130175 .23749 closepath ! end of curve ! start of curve amove .132715 .04318 bezier .111072 .395649E-01 .110332 .598727E-02 .13081 0 aline .14224 0 aline .142875 .000635 aline .14732 .000635 aline .147955 .00127 aline .15113 .001905 aline .15367 .00254 aline .16129 .00508 aline .16764 .008255 bezier .165565 .232342E-01 .158071 .041535 .14097 .043815 aline .13335 .043815 closepath ! end of curve fill dfont endchar dfont char="R" !-------------- Beginning of new char. dfont wid=.736113 hei=.683332 dep=0 italic=0 dfont fby="C" kadd=-.0277786 dfont fby="G" kadd=-.0277786 dfont fby="O" kadd=-.0277786 dfont fby="Q" kadd=-.0277786 dfont fby="T" kadd=-.083334 dfont fby="U" kadd=-.0277786 dfont fby="V" kadd=-.111112 dfont fby="W" kadd=-.111112 dfont fby="Y" kadd=-.083334 dfont fby="t" kadd=-.0277786 set path ! start of curve newpath ! start of curve amove .131445 .23876 bezier .165308 .236799 .208069 .218051 .213995 .18034 bezier .21667 .146478 .182125 .125489 .153194 .118428 bezier .176708 .110928 .197883 .896314E-01 .197485 .064135 bezier .201883 .451589E-01 .201728 .239092E-01 .21209 .00508 bezier .223665 -.909563E-02 .244467 .32042E-02 .24638 .01905 aline .247015 .022225 aline .24765 .02286 aline .24765 .02667 aline .248285 .027305 aline .248285 .03302 aline .24892 .03429 aline .249555 .034925 aline .250825 .03556 aline .254 .03556 aline .25527 .034925 bezier .259695 .180601E-01 .248464 -.467039E-02 .22987 -.008255 bezier .202583 -.113001E-01 .167644 .378706E-02 .16637 .034925 aline .165735 .03556 aline .165735 .076835 bezier .16358 .096585 .146007 .113505 .126365 .11557 aline .079375 .11557 aline .07874 .114935 aline .07874 .019685 bezier .806084E-01 .104831E-01 .907287E-01 .103757E-01 .09779 .009525 aline .114935 .009525 aline .114935 -.000635 aline .10668 -.000635 aline .106045 0 aline .07239 0 aline .071755 .000635 aline .056515 .000635 aline .05588 0 aline .022225 0 aline .02159 -.000635 aline .013335 -.000635 aline .013335 .009525 bezier .025262 .107861E-01 .401451E-01 .617013E-02 .04826 .01651 aline .048895 .01905 aline .04953 .019685 aline .04953 .21844 bezier .476616E-01 .227642 .375413E-01 .227749 .03048 .2286 aline .013335 .2286 aline .013335 .23876 aline .131445 .23876 closepath ! end of curve ! start of curve amove .08763 .227965 aline .084455 .22733 aline .08255 .226695 aline .08128 .22606 aline .080645 .22479 aline .08001 .224155 aline .079375 .221615 aline .07874 .22098 aline .07874 .12319 aline .079375 .122555 aline .12573 .122555 bezier .147581 .123978 .175466 .135874 .177165 .161925 bezier .182226 .184895 .17542 .215631 .149225 .22352 aline .145415 .22479 aline .140335 .22606 aline .13716 .226695 aline .136525 .22733 aline .13335 .22733 aline .132715 .227965 aline .127 .227965 aline .126365 .2286 aline .088265 .2286 aline .08763 .227965 closepath ! end of curve fill dfont endchar dfont char="S" !-------------- Beginning of new char. dfont wid=.555557 hei=.683332 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .09525 .24638 bezier .113359 .24502 .131962 .23665 .14351 .22225 bezier .149078 .230094 .152966 .23915 .159385 .24638 aline .163195 .24638 aline .16383 .245745 aline .1651 .24511 aline .1651 .16129 aline .16383 .160655 aline .163195 .16002 aline .15875 .16002 aline .158115 .160655 bezier .153843 .187216 .143395 .222983 .11303 .233045 bezier .890245E-01 .243682 .559481E-01 .235707 .04572 .208915 bezier .343906E-01 .185146 .495707E-01 .153372 .075565 .146685 bezier .106631 .137894 .14547 .136358 .163195 .10541 bezier .190293 .651069E-01 .168236 .666941E-03 .11811 -.00762 bezier .915386E-01 -.106157E-01 .614636E-01 -.426005E-02 .04191 .015875 bezier .036342 .803085E-02 .324544E-01 -.10245E-02 .026035 -.008255 aline .022225 -.008255 aline .02159 -.00762 aline .02032 -.006985 aline .02032 .0762 aline .022225 .078105 aline .02667 .078105 aline .027305 .07747 aline .028575 .076835 bezier .260169E-01 .423409E-01 .518474E-01 .789178E-02 .08763 .00381 bezier .110023 -.304118E-02 .139131 .62428E-02 .147955 .03048 bezier .161971 .573846E-01 .145822 .968141E-01 .1143 .102235 aline .07874 .111125 bezier .391247E-01 .115947 .113624E-01 .158407 .022225 .196215 bezier .300993E-01 .22815 .062982 .249914 .09525 .24638 closepath ! end of curve fill dfont endchar dfont char="T" !-------------- Beginning of new char. dfont wid=.722224 hei=.683332 dep=0 italic=0 dfont fby="A" kadd=-.083334 dfont fby="a" kadd=-.083334 dfont fby="e" kadd=-.083334 dfont fby="o" kadd=-.083334 dfont fby="r" kadd=-.083334 dfont fby="u" kadd=-.083334 dfont fby="y" kadd=-.0277786 set path ! start of curve newpath ! start of curve amove .23368 .236855 bezier .236028 .210616 .238288 .184341 .240665 .158115 aline .23241 .158115 bezier .229594 .177833 .231125 .201886 .21463 .21717 bezier .206336 .223442 .195347 .22512 .186055 .226695 aline .151765 .226695 aline .15113 .22606 aline .147955 .225425 aline .14605 .22479 aline .14478 .224155 aline .144145 .222885 aline .14351 .22225 aline .142875 .21971 aline .14224 .219075 aline .14224 .02032 bezier .145872 .869008E-02 .15983 .111701E-01 .16891 .009525 aline .19304 .009525 aline .19304 -.000635 aline .182245 -.000635 aline .18161 0 aline .137795 0 aline .13716 .000635 aline .11684 .000635 aline .116205 0 aline .07239 0 aline .071755 -.000635 aline .06096 -.000635 aline .06096 .009525 bezier .772244E-01 .104219E-01 .941485E-01 .712792E-02 .108585 .014605 aline .10922 .015875 aline .109855 .01651 aline .11049 .01778 aline .111125 .019685 aline .11176 .02032 aline .11176 .219075 aline .111125 .21971 aline .11049 .22225 aline .109855 .222885 aline .10922 .224155 aline .10795 .22479 aline .106045 .225425 aline .10287 .22606 aline .102235 .226695 aline .067945 .226695 bezier .051765 .225259 .312745E-01 .217825 .02794 .198755 bezier .238319E-01 .185118 .229734E-01 .172014 .02159 .158115 aline .013335 .158115 bezier .157124E-01 .184341 .179721E-01 .210616 .02032 .236855 aline .23368 .236855 closepath ! end of curve fill dfont endchar dfont char="U" !-------------- Beginning of new char. dfont wid=.750002 hei=.683332 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .02159 .23876 aline .022225 .238125 aline .05588 .238125 aline .056515 .23749 aline .071755 .23749 aline .07239 .238125 aline .106045 .238125 aline .10668 .23876 aline .11557 .23876 aline .11557 .2286 bezier .103643 .227339 .887599E-01 .231955 .080645 .221615 aline .08001 .219075 aline .079375 .21844 aline .079375 .069215 bezier .801852E-01 .416065E-01 .095444 .781671E-02 .127 .003175 bezier .163631 -.495337E-02 .200124 .288533E-01 .2032 .065405 aline .203835 .06604 aline .203835 .07112 aline .20447 .071755 aline .20447 .20955 bezier .200723 .225437 .182223 .229114 .168275 .2286 aline .168275 .23876 aline .17526 .23876 aline .175895 .238125 aline .202565 .238125 aline .2032 .23749 aline .2159 .23749 aline .216535 .238125 aline .243205 .238125 aline .24384 .23876 aline .250825 .23876 aline .250825 .2286 bezier .236877 .229114 .218377 .225437 .21463 .20955 aline .21463 .07112 bezier .212882 .284196E-01 .17308 -.148415E-01 .12827 -.00762 bezier .873517E-01 -.549617E-02 .517682E-01 .311502E-01 .048895 .071755 aline .048895 .21844 bezier .470266E-01 .227642 .369063E-01 .227749 .029845 .2286 aline .0127 .2286 aline .0127 .23876 aline .02159 .23876 closepath ! end of curve fill dfont endchar dfont char="V" !-------------- Beginning of new char. dfont wid=.750002 hei=.683332 dep=0 italic=.0138884 dfont fby="A" kadd=-.111112 dfont fby="C" kadd=-.0277786 dfont fby="G" kadd=-.0277786 dfont fby="O" kadd=-.0277786 dfont fby="Q" kadd=-.0277786 dfont fby="a" kadd=-.083334 dfont fby="e" kadd=-.083334 dfont fby="o" kadd=-.083334 dfont fby="r" kadd=-.083334 dfont fby="u" kadd=-.083334 set path ! start of curve newpath ! start of curve amove .01397 .23876 aline .014605 .238125 aline .042545 .238125 aline .04318 .23749 aline .057785 .23749 aline .05842 .238125 aline .092075 .238125 aline .09271 .23876 aline .1016 .23876 aline .1016 .2286 bezier .915028E-01 .228236 .761305E-01 .229814 .726017E-01 .217805 bezier .956171E-01 .156575 .118521 .951089E-01 .14224 .03429 bezier .164517 .091942 .185674 .150249 .20828 .207645 bezier .210205 .221471 .194461 .229296 .18288 .2286 aline .18288 .23876 aline .18923 .23876 aline .189865 .238125 aline .21717 .238125 aline .217805 .23749 aline .2286 .23749 aline .229235 .238125 aline .25019 .238125 aline .250825 .23876 aline .25654 .23876 aline .25654 .2286 bezier .23814 .230053 .219473 .217812 .2159 .198755 bezier .189048 .130198 .164984 .059914 .136525 -.00762 aline .135255 -.008255 aline .12827 -.008255 bezier .120765 -.161149E-02 .120348 .103188E-01 .11557 .01905 bezier .894127E-01 .869206E-01 .652789E-01 .15582 .037465 .222885 bezier .028947 .230059 .175298E-01 .228152 .006985 .2286 aline .006985 .23876 aline .01397 .23876 closepath ! end of curve fill dfont endchar dfont char="W" !-------------- Beginning of new char. dfont wid=1.02778 hei=.683332 dep=0 italic=.0138884 dfont fby="A" kadd=-.111112 dfont fby="C" kadd=-.0277786 dfont fby="G" kadd=-.0277786 dfont fby="O" kadd=-.0277786 dfont fby="Q" kadd=-.0277786 dfont fby="a" kadd=-.083334 dfont fby="e" kadd=-.083334 dfont fby="o" kadd=-.083334 dfont fby="r" kadd=-.083334 dfont fby="u" kadd=-.083334 set path ! start of curve newpath ! start of curve amove .013335 .23876 aline .01397 .238125 aline .04064 .238125 aline .041275 .23749 aline .055245 .23749 aline .05588 .238125 aline .089535 .238125 aline .09017 .23876 aline .09906 .23876 aline .09906 .2286 bezier .886432E-01 .228461 .759305E-01 .229229 .069215 .21971 bezier .865284E-01 .160052 .107743 .100367 .126365 .04064 bezier .143529 .090821 .160379 .143186 .175895 .19304 aline .17145 .206375 bezier .169549 .216939 .163914 .229912 .15113 .227965 aline .150495 .2286 aline .13716 .2286 aline .13716 .23876 aline .144145 .23876 aline .14478 .238125 aline .17145 .238125 aline .172085 .23749 aline .18542 .23749 aline .186055 .238125 aline .220345 .238125 aline .22098 .23876 aline .229235 .23876 aline .229235 .2286 aline .21844 .2286 bezier .211099 .227583 .195875 .224728 .20066 .21336 bezier .219791 .15591 .237678 .977923E-01 .257175 .04064 bezier .275186 .975549E-01 .295227 .154523 .311785 .211455 bezier .308072 .22428 .29298 .228554 .281305 .2286 aline .281305 .23876 aline .28829 .23876 aline .288925 .238125 aline .3175 .238125 aline .318135 .23749 aline .32893 .23749 aline .329565 .238125 aline .34925 .238125 aline .349885 .23876 aline .35433 .23876 aline .35433 .2286 bezier .338353 .229572 .321369 .219004 .31877 .20193 bezier .295197 .13231 .274623 .611445E-01 .249555 -.00762 aline .248285 -.008255 aline .24384 -.008255 aline .2413 -.006985 bezier .219743 .535743E-01 .201976 .117501 .180213 .176784 bezier .159911 .115612 .141082 .538885E-01 .120015 -.006985 aline .117475 -.008255 aline .11303 -.008255 aline .11176 -.00762 bezier .839071E-01 .680281E-01 .624908E-01 .146885 .034925 .222885 aline .03302 .22479 aline .02921 .226695 aline .026035 .22733 aline .0254 .227965 aline .02032 .227965 aline .019685 .2286 aline .006985 .2286 aline .006985 .23876 aline .013335 .23876 closepath ! end of curve fill dfont endchar dfont char="X" !-------------- Beginning of new char. dfont wid=.750002 hei=.683332 dep=0 italic=0 dfont fby="C" kadd=-.0277786 dfont fby="G" kadd=-.0277786 dfont fby="O" kadd=-.0277786 dfont fby="Q" kadd=-.0277786 set path ! start of curve newpath ! start of curve amove .020955 .23876 aline .02159 .238125 aline .050165 .238125 aline .0508 .23749 aline .06477 .23749 aline .065405 .238125 aline .10033 .238125 aline .100965 .23876 aline .109855 .23876 aline .109855 .2286 bezier .101815 .228634 .885557E-01 .225771 .086995 .21717 bezier .102457 .192539 .118707 .168127 .135255 .144145 bezier .148949 .167291 .167578 .187802 .178858 .21209 bezier .177875 .222933 .16638 .228416 .156845 .2286 aline .156845 .23876 aline .164465 .23876 aline .1651 .238125 aline .19558 .238125 aline .196215 .23749 aline .20828 .23749 aline .208915 .238125 aline .233045 .238125 aline .23368 .23876 aline .24003 .23876 aline .24003 .2286 bezier .218004 .229659 .194303 .219008 .18415 .19812 bezier .170266 .176829 .153828 .154949 .141605 .133985 bezier .168781 .094404 .193357 .529483E-01 .22225 .014605 bezier .231972 .842584E-02 .243302 .984874E-02 .254635 .009525 aline .254635 -.000635 aline .24765 -.000635 aline .247015 0 aline .21844 0 aline .217805 .000635 aline .2032 .000635 aline .202565 0 aline .168275 0 aline .16764 -.000635 aline .15875 -.000635 aline .15875 .009525 bezier .1666 .010002 .178461 .114251E-01 .181356 .02032 bezier .163785 .505315E-01 .142721 .079022 .123825 .108585 bezier .106203 .081651 .863769E-01 .558083E-01 .070485 .02794 bezier .688302E-01 .161702E-01 .822758E-01 .951502E-02 .092075 .009525 aline .092075 -.000635 aline .084455 -.000635 aline .08382 0 aline .05334 0 aline .052705 .000635 aline .04064 .000635 aline .040005 0 aline .01524 0 aline .014605 -.000635 aline .00889 -.000635 aline .00889 .009525 bezier .314056E-01 .840671E-02 .555362E-01 .196701E-01 .065405 .041275 bezier .829526E-01 .666803E-01 .100212 .924363E-01 .117263 .11811 bezier .939974E-01 .153042 .718726E-01 .189029 .04699 .222885 bezier .372021E-01 .229785 .255864E-01 .228294 .01397 .2286 aline .01397 .23876 aline .020955 .23876 closepath ! end of curve fill dfont endchar dfont char="Y" !-------------- Beginning of new char. dfont wid=.750002 hei=.683332 dep=0 italic=.0249996 dfont fby="A" kadd=-.083334 dfont fby="a" kadd=-.083334 dfont fby="e" kadd=-.083334 dfont fby="o" kadd=-.083334 dfont fby="r" kadd=-.083334 dfont fby="u" kadd=-.083334 set path ! start of curve newpath ! start of curve amove .012065 .23876 aline .0127 .238125 aline .041275 .238125 aline .04191 .23749 aline .056515 .23749 aline .05715 .238125 aline .09144 .238125 aline .092075 .23876 aline .100965 .23876 aline .100965 .2286 bezier .924924E-01 .22853 .828923E-01 .228918 .076835 .22225 bezier .780577E-01 .209426 .894728E-01 .199736 .094615 .18796 bezier .110959 .161899 .1269 .135547 .142875 .10922 bezier .163424 .14359 .185846 .177103 .205105 .21209 bezier .206682 .223142 .194115 .229158 .184785 .2286 aline .184785 .23876 aline .19177 .23876 aline .192405 .238125 aline .21971 .238125 aline .220345 .23749 aline .23114 .23749 aline .231775 .238125 aline .253365 .238125 aline .254 .23876 aline .25908 .23876 aline .25908 .2286 bezier .237327 .229891 .216793 .215617 .20828 .19558 bezier .187431 .162001 .166994 .128125 .14605 .094615 aline .14605 .02159 bezier .146732 .122694E-01 .15645 .939469E-02 .164465 .01016 aline .1651 .009525 aline .182245 .009525 aline .182245 -.000635 aline .17399 -.000635 aline .173355 0 aline .1397 0 aline .139065 .000635 aline .123825 .000635 aline .12319 0 aline .09017 0 aline .089535 -.000635 aline .080645 -.000635 aline .080645 .009525 bezier .092572 .107861E-01 .107455 .617012E-02 .11557 .01651 aline .116205 .01905 aline .11684 .019685 aline .11684 .09525 bezier .898132E-01 .137385 .653977E-01 .181403 .037465 .222885 bezier .277998E-01 .229821 .160413E-01 .228256 .004445 .2286 aline .004445 .23876 aline .012065 .23876 closepath ! end of curve fill dfont endchar dfont char="Z" !-------------- Beginning of new char. dfont wid=.611113 hei=.683332 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .19177 .23876 bezier .199129 .232568 .189323 .223856 .186055 .217805 bezier .143421 .148636 .976194E-01 .799223E-01 .056515 .010795 aline .122555 .010795 bezier .144869 .117914E-01 .172954 .208393E-01 .18034 .04572 bezier .18582 .615129E-01 .187165 .766502E-01 .18796 .09271 aline .196215 .09271 bezier .1944 .615578E-01 .192315 .305172E-01 .1905 -.000635 aline .02286 -.000635 bezier .153096E-01 .625778E-02 .256435E-01 .156176E-01 .02921 .022225 bezier .719578E-01 .091024 .117316 .16038 .15875 .2286 aline .09525 .2286 bezier .735394E-01 .227708 .468661E-01 .218089 .03937 .19431 aline .037465 .188595 aline .036195 .183515 aline .034925 .177165 aline .03429 .17653 aline .03429 .172085 aline .033655 .17145 aline .033655 .1651 aline .03302 .164465 aline .03302 .16002 aline .024765 .16002 bezier .260907E-01 .186244 .272493E-01 .212536 .028575 .23876 closepath ! end of curve fill dfont endchar dfont char="[" !-------------- Beginning of new char. dfont wid=.277779 hei=.75 dep=.25 italic=0 set path ! start of curve newpath ! start of curve amove .089535 .262255 aline .089535 .248285 aline .05588 .248285 aline .055245 .24765 aline .055245 -.07366 aline .05588 -.074295 aline .089535 -.074295 aline .089535 -.088265 aline .041275 -.088265 aline .041275 .262255 aline .089535 .262255 closepath ! end of curve fill dfont endchar dfont char="\" !-------------- Beginning of new char. dfont wid=.500002 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .088265 .24257 aline .09017 .240665 aline .09017 .23749 bezier .071103 .219915 .574017E-01 .192133 .06223 .167005 bezier .708782E-01 .179384 .933954E-01 .174868 .09525 .159385 bezier .990506E-01 .143191 .789229E-01 .13133 .06604 .14097 bezier .484139E-01 .157609 .531543E-01 .18437 .059055 .205105 bezier .645027E-01 .219742 .734113E-01 .232922 .085725 .24257 aline .088265 .24257 closepath ! end of curve ! start of curve amove .156845 .24257 aline .15875 .240665 aline .15875 .23749 bezier .139683 .219915 .125982 .192133 .13081 .167005 bezier .139458 .179384 .161975 .174868 .16383 .159385 bezier .167631 .143191 .147503 .13133 .13462 .14097 bezier .116994 .157609 .121734 .18437 .127635 .205105 bezier .133083 .219742 .141991 .232922 .154305 .24257 aline .156845 .24257 closepath ! end of curve fill dfont endchar dfont char="]" !-------------- Beginning of new char. dfont wid=.277779 hei=.75 dep=.25 italic=0 set path ! start of curve newpath ! start of curve amove .056515 .262255 aline .056515 -.088265 aline .008255 -.088265 aline .008255 -.074295 aline .04191 -.074295 aline .042545 -.07366 aline .042545 .24765 aline .04191 .248285 aline .008255 .248285 aline .008255 .262255 aline .056515 .262255 closepath ! end of curve fill dfont endchar dfont char="^" !-------------- Beginning of new char. dfont wid=.500002 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .088265 .241935 aline .122555 .207645 aline .12319 .206375 aline .13462 .194945 aline .128905 .18923 bezier .114635 .199765 .101449 .215142 .086995 .224155 bezier .738208E-01 .212352 .605133E-01 .200231 .04699 .18923 aline .041275 .194945 aline .052705 .206375 aline .05334 .207645 aline .08763 .241935 aline .088265 .241935 closepath ! end of curve fill dfont endchar dfont char="_" !-------------- Beginning of new char. dfont wid=.277779 hei=.667859 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .05207 .234315 bezier .703003E-01 .23144 .722613E-01 .20412 .05461 .198755 bezier .378702E-01 .192864 .236103E-01 .214344 .03429 .22733 aline .037465 .230505 aline .038735 .23114 aline .03937 .231775 aline .04318 .23368 aline .04572 .234315 closepath ! end of curve fill dfont endchar dfont char="`" !-------------- Beginning of new char. dfont wid=.277779 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .060325 .24257 aline .06223 .240665 aline .06223 .23749 bezier .043163 .219915 .294617E-01 .192133 .03429 .167005 bezier .429382E-01 .179384 .654554E-01 .174868 .06731 .159385 bezier .711106E-01 .143191 .509829E-01 .13133 .0381 .14097 bezier .204739E-01 .157609 .252143E-01 .18437 .031115 .205105 bezier .365627E-01 .219742 .454713E-01 .232922 .057785 .24257 aline .060325 .24257 closepath ! end of curve fill dfont endchar dfont char="a" !-------------- Beginning of new char. dfont wid=.500002 hei=.430555 dep=0 italic=0 dfont fby="j" kadd=.0555553 dfont fby="v" kadd=-.0277786 dfont fby="w" kadd=-.0277786 dfont fby="y" kadd=-.0277786 set path ! start of curve newpath ! start of curve amove .08509 .155575 bezier .108773 .153644 .135234 .137021 .13843 .111125 aline .13843 .023495 bezier .139309 .143963E-01 .148779 .236898E-02 .158115 .01016 aline .159385 .010795 aline .16002 .01143 aline .160655 .0127 aline .16129 .013335 aline .163195 .017145 aline .16383 .019685 aline .164465 .02286 aline .1651 .023495 aline .1651 .04953 aline .173355 .04953 bezier .1736 .322091E-01 .176404 .93762E-02 .15748 .000635 bezier .139689 -.102175E-01 .118177 .610385E-02 .117475 .0254 bezier .10841 .20035E-02 .806338E-01 -.922766E-02 .057785 -.003175 bezier .364999E-01 -.231232E-02 .111571E-01 .013173 .01524 .037465 bezier .216653E-01 .762967E-01 .677495E-01 .876261E-01 .10033 .09017 aline .11049 .09017 aline .111125 .090805 aline .1143 .090805 bezier .119286 .114052 .107803 .144433 .081915 .14859 bezier .066972 .149096 .505328E-01 .145077 .040005 .13335 bezier .544701E-01 .134115 .629193E-01 .115954 .05334 .10541 bezier .447989E-01 .968174E-01 .267703E-01 .10067 .0254 .113665 bezier .224304E-01 .139151 .497521E-01 .15421 .07112 .155575 aline .08509 .155575 closepath ! end of curve ! start of curve amove .10795 .083185 bezier .810619E-01 .823246E-01 .045912 .684984E-01 .042545 .037465 bezier .373512E-01 .135296E-01 .677761E-01 -.613086E-02 .088265 .005715 bezier .103021 .010936 .112121 .026381 .114935 .04064 aline .114935 .083185 aline .1143 .08382 aline .108585 .08382 aline .10795 .083185 closepath ! end of curve fill dfont endchar dfont char="b" !-------------- Beginning of new char. dfont wid=.555557 hei=.694445 dep=0 italic=0 dfont fby="c" kadd=.0277786 dfont fby="d" kadd=.0277786 dfont fby="e" kadd=.0277786 dfont fby="j" kadd=.0555553 dfont fby="o" kadd=.0277786 dfont fby="q" kadd=.0277786 dfont fby="v" kadd=-.0277786 dfont fby="w" kadd=-.0277786 dfont fby="x" kadd=-.0277786 dfont fby="y" kadd=-.0277786 set path ! start of curve newpath ! start of curve amove .060325 .24257 aline .060325 .13208 bezier .708442E-01 .140786 .846584E-01 .153404 .100965 .153035 bezier .141494 .159243 .180518 .121907 .182245 .081915 bezier .187231 .039835 .152581 -.185973E-02 .11049 -.004445 bezier .902219E-01 -.671148E-02 .696533E-01 .353774E-02 .059055 .020955 bezier .549064E-01 .136973E-01 .509212E-01 .632172E-02 .046355 -.000635 aline .0381 -.000635 aline .0381 .2159 bezier .363966E-01 .229263 .212244E-01 .228888 .010795 .2286 aline .010795 .23876 bezier .272545E-01 .240152 .438655E-01 .241178 .060325 .24257 closepath ! end of curve ! start of curve amove .1016 .14605 bezier .843097E-01 .144615 .691054E-01 .132273 .061595 .11684 aline .061595 .03302 bezier .707719E-01 .102614E-01 .976942E-01 -.513128E-02 .12065 .00635 bezier .143312 .158167E-01 .152368 .424284E-01 .15367 .064135 bezier .154897 .925874E-01 .152018 .128415 .12319 .142875 aline .121285 .14351 aline .120015 .144145 aline .11811 .14478 aline .11557 .145415 aline .112395 .14605 aline .11176 .146685 aline .102235 .146685 aline .1016 .14605 closepath ! end of curve fill dfont endchar dfont char="c" !-------------- Beginning of new char. dfont wid=.444446 hei=.430555 dep=0 italic=0 dfont fby="h" kadd=-.0277786 dfont fby="k" kadd=-.0277786 set path ! start of curve newpath ! start of curve amove .09525 .155575 bezier .117487 .154946 .147115 .139343 .14097 .11303 bezier .13594 .988256E-01 .111399 .100745 .109855 .116205 bezier .107646 .126438 .115863 .135081 .12573 .13589 bezier .103361 .15283 .663781E-01 .152105 .052705 .12446 bezier .368076E-01 .944818E-01 .370626E-01 .05764 .052705 .027305 bezier .657045E-01 .325373E-02 .985493E-01 -.363684E-02 .120015 .013335 bezier .129825 .020786 .134394 .032942 .139065 .04318 aline .1397 .043815 aline .144145 .043815 aline .14478 .04318 aline .14605 .042545 bezier .142658 .841202E-02 .103638 -.110675E-01 .073025 -.003175 bezier .278452E-01 .575718E-02 .240789E-02 .573614E-01 .015875 .09906 bezier .249556E-01 .133601 .594707E-01 .159181 .09525 .155575 closepath ! end of curve fill dfont endchar dfont char="d" !-------------- Beginning of new char. dfont wid=.555557 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .156845 .24257 aline .156845 .022225 bezier .158548 .886187E-02 .173721 .923737E-02 .18415 .009525 aline .18415 -.000635 bezier .167271 -.203548E-02 .150229 -.304452E-02 .13335 -.004445 aline .13335 .017145 bezier .123314 .85089E-02 .109467 -.437448E-02 .093345 -.00381 bezier .476694E-01 -.106068E-01 .583453E-02 .375614E-01 .013335 .081915 bezier .138428E-01 .133957 .820822E-01 .175254 .125095 .141605 aline .133985 .132715 aline .13462 .13335 aline .13462 .2159 bezier .132917 .229263 .117744 .228888 .107315 .2286 aline .107315 .23876 bezier .123775 .240152 .140385 .241178 .156845 .24257 closepath ! end of curve ! start of curve amove .08636 .14605 bezier .569582E-01 .143152 .419082E-01 .110659 .041275 .08509 bezier .400481E-01 .566376E-01 .042927 .208104E-01 .071755 .00635 bezier .956448E-01 -.53411E-02 .123309 .115434E-01 .13335 .03429 aline .13335 .11811 bezier .125249 .135646 .105618 .149668 .08636 .14605 closepath ! end of curve fill dfont endchar dfont char="e" !-------------- Beginning of new char. dfont wid=.444446 hei=.430555 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .09017 .155575 bezier .121653 .154516 .146234 .124692 .145415 .09398 aline .14605 .093345 aline .14605 .08255 aline .144145 .080645 aline .03937 .080645 bezier .361632E-01 .524047E-01 .456583E-01 .147839E-01 .07747 .005715 bezier .102429 -.230878E-02 .132464 .162401E-01 .137795 .042545 aline .1397 .04445 aline .144145 .04445 bezier .149138 .375296E-01 .141047 .281702E-01 .137795 .02159 bezier .116078 -.113539E-01 .676189E-01 -.114828E-01 .03937 .0127 bezier -.371811E-02 .467587E-01 .187458E-02 .120967 .050165 .14732 aline .055245 .14986 aline .05715 .150495 aline .05842 .15113 aline .06604 .15367 aline .06858 .154305 aline .071755 .15494 aline .075565 .15494 aline .0762 .155575 aline .09017 .155575 closepath ! end of curve ! start of curve amove .07874 .147955 bezier .514933E-01 .144273 .378616E-01 .111446 .040005 .08763 aline .122555 .08763 bezier .124551 .110413 .115616 .14415 .08763 .147955 aline .086995 .14859 aline .079375 .14859 aline .07874 .147955 closepath ! end of curve fill dfont endchar dfont char="f" !-------------- Beginning of new char. dfont wid=.305557 hei=.694445 dep=0 italic=.0777788 dfont fby=33 kadd=.0777788 dfont fby=39 kadd=.0777788 dfont fby=")" kadd=.0777788 dfont fby="?" kadd=.0777788 dfont fby="]" kadd=.0777788 dfont fby="f" ligrep=11 dfont fby="i" ligrep=12 dfont fby="l" ligrep=13 set path ! start of curve newpath ! start of curve amove .098425 .24638 bezier .114299 .245511 .13063 .229584 .122555 .21336 bezier .114001 .200176 .905909E-01 .208675 .094615 .22479 bezier .946717E-01 .230897 .101122 .234216 .104394 .236982 bezier .831829E-01 .247008 .646318E-01 .224204 .06223 .20447 aline .061595 .203835 aline .061595 .19939 aline .06096 .198755 aline .06096 .150495 aline .061595 .14986 aline .102235 .14986 aline .102235 .1397 aline .062865 .1397 aline .06223 .139065 aline .06223 .019685 bezier .635128E-01 .108566E-01 .733713E-01 .105225E-01 .08001 .009525 aline .09652 .009525 aline .09652 -.000635 aline .0889 -.000635 aline .088265 0 aline .05842 0 aline .057785 .000635 aline .04572 .000635 aline .045085 0 aline .019685 0 aline .01905 -.000635 aline .0127 -.000635 aline .0127 .009525 bezier .223142E-01 .102204E-01 .361596E-01 .700019E-02 .040005 .018415 aline .040005 .139065 aline .03937 .1397 aline .01143 .1397 aline .01143 .14986 aline .03937 .14986 aline .040005 .150495 aline .040005 .19812 bezier .415942E-01 .222718 .063359 .243939 .08763 .24638 closepath ! end of curve fill dfont endchar dfont char="g" !-------------- Beginning of new char. dfont wid=.500002 hei=.430555 dep=.194445 italic=.0138884 dfont fby="j" kadd=.0277786 set path ! start of curve newpath ! start of curve amove .15621 .15748 bezier .169454 .156861 .177097 .134001 .161925 .130175 bezier .150162 .128212 .145856 .144797 .155575 .14986 bezier .143451 .151817 .129547 .145616 .12065 .136525 bezier .144622 .11439 .136204 .721143E-01 .107315 .05842 bezier .872175E-01 .479219E-01 .616853E-01 .488138E-01 .04318 .06223 bezier .317893E-01 .048848 .382558E-01 .253898E-01 .05588 .02159 aline .10287 .02159 bezier .127732 .210963E-01 .161026 .104945E-01 .1651 -.01905 bezier .170008 -.369318E-01 .157648 -.543627E-01 .141605 -.061595 bezier .1083 -.782427E-01 .686142E-01 -.778328E-01 .034925 -.06223 bezier .176277E-01 -.542505E-01 .293515E-02 -.337447E-01 .013335 -.014605 bezier .195173E-01 -.38767E-02 .305893E-01 .277478E-02 .04191 .006985 bezier .226717E-01 .201175E-01 .232437E-01 .497752E-01 .373062E-01 .663575E-01 bezier .123446E-01 .880147E-01 .182585E-01 .131941 .04826 .14605 bezier .688439E-01 .157997 .959276E-01 .155859 .114935 .141817 bezier .124508 .149078 .135532 .156727 .147955 .15748 closepath ! end of curve ! start of curve amove .07366 .145415 bezier .466942E-01 .141029 .441803E-01 .10791 .04826 .086995 bezier .499827E-01 .644583E-01 .782756E-01 .503372E-01 .095885 .065405 bezier .112891 .805776E-01 .111485 .1071 .10541 .127 bezier .100824 .139643 .872976E-01 .147101 .074295 .14605 closepath ! end of curve ! start of curve amove .05461 .00127 bezier .316016E-01 -.879658E-03 .018771 -.323809E-01 .03683 -.04826 bezier .065441 -.072291 .110454 -.072291 .139065 -.04826 bezier .153422 -.356855E-01 .148802 -.109811E-01 .13081 -.004445 bezier .121486 -.373231E-03 .11161 .841854E-03 .102235 .001905 aline .055245 .001905 closepath ! end of curve fill dfont endchar dfont char="h" !-------------- Beginning of new char. dfont wid=.555557 hei=.694445 dep=0 italic=0 dfont fby="b" kadd=-.0277786 dfont fby="t" kadd=-.0277786 dfont fby="u" kadd=-.0277786 dfont fby="v" kadd=-.0277786 dfont fby="w" kadd=-.0277786 dfont fby="y" kadd=-.0277786 set path ! start of curve newpath ! start of curve amove .061595 .24257 aline .061595 .121285 bezier .700228E-01 .134937 .857348E-01 .152994 .10541 .153035 bezier .128035 .157774 .157128 .14501 .15875 .118745 aline .15875 .1143 aline .159385 .113665 aline .159385 .018415 bezier .16323 .700018E-02 .177076 .102204E-01 .18669 .009525 aline .18669 -.000635 aline .18034 -.000635 aline .179705 0 aline .154305 0 aline .15367 .000635 aline .141605 .000635 aline .14097 0 aline .11557 0 aline .114935 -.000635 aline .108585 -.000635 aline .108585 .009525 bezier .118199 .102204E-01 .132045 .700018E-02 .13589 .018415 aline .13589 .116205 bezier .134599 .128433 .129534 .144383 .114935 .146685 bezier .872265E-01 .149552 .654122E-01 .12335 .062865 .09779 aline .062865 .018415 bezier .667104E-01 .700018E-02 .805558E-01 .102204E-01 .09017 .009525 aline .09017 -.000635 aline .08382 -.000635 aline .083185 0 aline .057785 0 aline .05715 .000635 aline .045085 .000635 aline .04445 0 aline .01905 0 aline .018415 -.000635 aline .012065 -.000635 aline .012065 .009525 bezier .216792E-01 .102204E-01 .355246E-01 .700019E-02 .03937 .018415 aline .03937 .2159 bezier .376666E-01 .229263 .224944E-01 .228888 .012065 .2286 aline .012065 .23876 bezier .285245E-01 .240152 .451355E-01 .241178 .061595 .24257 closepath ! end of curve fill dfont endchar dfont char="i" !-------------- Beginning of new char. dfont wid=.277779 hei=.667859 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .04826 .234315 bezier .676841E-01 .231725 .676841E-01 .20071 .04826 .19812 bezier .299414E-01 .194125 .185288E-01 .220729 .03429 .23114 aline .03683 .23241 aline .037465 .233045 aline .03937 .23368 aline .04191 .234315 closepath ! end of curve ! start of curve amove .061595 .15367 aline .061595 .018415 bezier .064539 .756568E-02 .774217E-01 .983781E-02 .08636 .009525 aline .08636 -.000635 aline .080645 -.000635 aline .08001 0 aline .056515 0 aline .05588 .000635 aline .045085 .000635 aline .04445 0 aline .01905 0 aline .018415 -.000635 aline .012065 -.000635 aline .012065 .009525 bezier .216792E-01 .102204E-01 .355246E-01 .700019E-02 .03937 .018415 aline .03937 .127 aline .038735 .127635 bezier .379249E-01 .140592 .022969 .139946 .013335 .1397 aline .013335 .14986 bezier .029366 .151264 .455716E-01 .152247 .061595 .15367 closepath ! end of curve fill dfont endchar dfont char="j" !-------------- Beginning of new char. dfont wid=.305557 hei=.667859 dep=.194445 italic=0 set path ! start of curve newpath ! start of curve amove .059055 .234315 bezier .761195E-01 .231453 .789819E-01 .205731 .062865 .19939 bezier .461774E-01 .191119 .285457E-01 .214762 .04191 .227965 aline .042545 .229235 aline .043815 .22987 aline .045085 .23114 aline .046355 .231775 aline .04699 .23241 aline .04826 .233045 aline .050165 .23368 aline .05207 .234315 closepath ! end of curve ! start of curve amove .07366 .15367 aline .07366 -.026035 bezier .072073 -.544231E-01 .437289E-01 -.794388E-01 .01524 -.07239 bezier -.190766E-02 -.708461E-01 -.214368E-01 -.521988E-01 -.01016 -.034925 bezier -.449389E-03 -.220667E-01 .223406E-01 -.322139E-01 .018415 -.04826 aline .01778 -.0508 aline .015875 -.05461 aline .0127 -.057785 aline .01143 -.05842 aline .010795 -.059055 aline .008255 -.060325 aline .005715 -.06096 bezier .019171 -.690429E-01 .404742E-01 -.684123E-01 .04572 -.0508 aline .046355 -.04953 aline .04826 -.043815 aline .048895 -.041275 aline .04953 -.0381 aline .050165 -.037465 aline .050165 -.03429 aline .0508 -.033655 aline .0508 -.02794 aline .051435 -.027305 aline .051435 .127 aline .0508 .127635 bezier .488352E-01 .141579 .320432E-01 .139336 .02159 .1397 aline .02159 .14986 bezier .038926 .15118 .563006E-01 .152407 .07366 .15367 closepath ! end of curve fill dfont endchar dfont char="k" !-------------- Beginning of new char. dfont wid=.527781 hei=.694445 dep=0 italic=0 dfont fby="a" kadd=-.0555553 dfont fby="c" kadd=-.0277786 dfont fby="e" kadd=-.0277786 dfont fby="o" kadd=-.0277786 set path ! start of curve newpath ! start of curve amove .060325 .24257 aline .060325 .07493 bezier .759149E-01 .856252E-01 .914841E-01 .101825 .107315 .1143 aline .114935 .12192 bezier .120996 .128666 .117625 .139402 .10795 .1397 aline .10795 .14986 aline .114935 .14986 aline .11557 .149225 aline .14351 .149225 aline .144145 .14859 aline .15367 .14859 aline .154305 .149225 aline .16764 .149225 aline .168275 .14986 aline .17145 .14986 aline .17145 .1397 bezier .141134 .13856 .119931 .112996 .09779 .09525 bezier .118337 .068837 .134741 .394384E-01 .15748 .014605 aline .15875 .01397 aline .159385 .013335 aline .161925 .012065 aline .16383 .01143 aline .16637 .010795 aline .167005 .01016 aline .17018 .01016 aline .170815 .009525 aline .17907 .009525 aline .17907 -.000635 aline .174625 -.000635 aline .17399 0 aline .155575 0 aline .15494 .000635 aline .145415 .000635 aline .14478 0 aline .118745 0 aline .11811 -.000635 aline .11176 -.000635 aline .11176 .009525 bezier .120252 .783813E-02 .128393 .016329 .122555 .02413 bezier .109798 .435766E-01 .962632E-01 .628145E-01 .822325E-01 .811213E-01 bezier .074311 .753894E-01 .675172E-01 .680928E-01 .05969 .06223 aline .05969 .018415 bezier .635354E-01 .700018E-02 .773808E-01 .102204E-01 .086995 .009525 aline .086995 -.000635 aline .080645 -.000635 aline .08001 0 aline .055245 0 aline .05461 .000635 aline .04318 .000635 aline .042545 0 aline .01778 0 aline .017145 -.000635 aline .010795 -.000635 aline .010795 .009525 bezier .204092E-01 .102204E-01 .342546E-01 .700019E-02 .0381 .018415 aline .0381 .2159 bezier .363966E-01 .229263 .212244E-01 .228888 .010795 .2286 aline .010795 .23876 bezier .272545E-01 .240152 .438655E-01 .241178 .060325 .24257 closepath ! end of curve fill dfont endchar dfont char="l" !-------------- Beginning of new char. dfont wid=.277779 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .061595 .24257 aline .061595 .018415 bezier .654404E-01 .700018E-02 .792858E-01 .102204E-01 .0889 .009525 aline .0889 -.000635 aline .08255 -.000635 aline .081915 0 aline .056515 0 aline .05588 .000635 aline .045085 .000635 aline .04445 0 aline .01905 0 aline .018415 -.000635 aline .012065 -.000635 aline .012065 .009525 bezier .216792E-01 .102204E-01 .355246E-01 .700019E-02 .03937 .018415 aline .03937 .2159 bezier .376666E-01 .229263 .224944E-01 .228888 .012065 .2286 aline .012065 .23876 bezier .285245E-01 .240152 .451355E-01 .241178 .061595 .24257 closepath ! end of curve fill dfont endchar dfont char="m" !-------------- Beginning of new char. dfont wid=.833336 hei=.430555 dep=0 italic=0 dfont fby="b" kadd=-.0277786 dfont fby="t" kadd=-.0277786 dfont fby="u" kadd=-.0277786 dfont fby="v" kadd=-.0277786 dfont fby="w" kadd=-.0277786 dfont fby="y" kadd=-.0277786 set path ! start of curve newpath ! start of curve amove .06096 .15367 aline .06096 .11938 bezier .068772 .134097 .851101E-01 .152664 .10541 .153035 bezier .127611 .157493 .15608 .146029 .159385 .12065 bezier .173086 .15493 .223752 .166165 .24892 .13843 aline .249555 .13716 aline .25019 .136525 aline .250825 .135255 aline .25146 .13462 aline .253365 .13081 aline .25527 .125095 aline .25654 .118745 aline .25654 .1143 aline .257175 .113665 aline .257175 .018415 bezier .26102 .700018E-02 .274866 .102204E-01 .28448 .009525 aline .28448 -.000635 aline .27813 -.000635 aline .277495 0 aline .252095 0 aline .25146 .000635 aline .239395 .000635 aline .23876 0 aline .21336 0 aline .212725 -.000635 aline .206375 -.000635 aline .206375 .009525 bezier .215989 .102204E-01 .229835 .700018E-02 .23368 .018415 aline .23368 .116205 bezier .23244 .128614 .22691 .144824 .21209 .146685 bezier .184476 .149354 .162708 .123299 .16002 .09779 aline .16002 .018415 bezier .163865 .700018E-02 .177711 .102204E-01 .187325 .009525 aline .187325 -.000635 aline .180975 -.000635 aline .18034 0 aline .15494 0 aline .154305 .000635 aline .14224 .000635 aline .141605 0 aline .116205 0 aline .11557 -.000635 aline .10922 -.000635 aline .10922 .009525 bezier .118834 .102204E-01 .13268 .700018E-02 .136525 .018415 aline .136525 .116205 bezier .135285 .128614 .129755 .144824 .114935 .146685 bezier .873205E-01 .149354 .655532E-01 .123299 .062865 .09779 aline .062865 .018415 bezier .667104E-01 .700018E-02 .805558E-01 .102204E-01 .09017 .009525 aline .09017 -.000635 aline .08382 -.000635 aline .083185 0 aline .057785 0 aline .05715 .000635 aline .045085 .000635 aline .04445 0 aline .01905 0 aline .018415 -.000635 aline .012065 -.000635 aline .012065 .009525 bezier .216792E-01 .102204E-01 .355246E-01 .700019E-02 .03937 .018415 aline .03937 .127 bezier .376666E-01 .140363 .224944E-01 .139988 .012065 .1397 aline .012065 .14986 bezier .283008E-01 .151281 .447148E-01 .152272 .06096 .15367 closepath ! end of curve fill dfont endchar dfont char="n" !-------------- Beginning of new char. dfont wid=.555557 hei=.430555 dep=0 italic=0 dfont fby="b" kadd=-.0277786 dfont fby="t" kadd=-.0277786 dfont fby="u" kadd=-.0277786 dfont fby="v" kadd=-.0277786 dfont fby="w" kadd=-.0277786 dfont fby="y" kadd=-.0277786 set path ! start of curve newpath ! start of curve amove .06096 .15367 aline .06096 .120015 bezier .661314E-01 .126795 .0724 .138959 .081915 .144145 bezier .10386 .160189 .142878 .157584 .155575 .13081 aline .15748 .125095 aline .15875 .118745 aline .15875 .1143 aline .159385 .113665 aline .159385 .018415 bezier .16323 .700018E-02 .177076 .102204E-01 .18669 .009525 aline .18669 -.000635 aline .18034 -.000635 aline .179705 0 aline .154305 0 aline .15367 .000635 aline .141605 .000635 aline .14097 0 aline .11557 0 aline .114935 -.000635 aline .108585 -.000635 aline .108585 .009525 bezier .118199 .102204E-01 .132045 .700018E-02 .13589 .018415 aline .13589 .116205 bezier .134599 .128433 .129534 .144383 .114935 .146685 bezier .872265E-01 .149552 .654122E-01 .12335 .062865 .09779 aline .062865 .018415 bezier .667104E-01 .700018E-02 .805558E-01 .102204E-01 .09017 .009525 aline .09017 -.000635 aline .08382 -.000635 aline .083185 0 aline .057785 0 aline .05715 .000635 aline .045085 .000635 aline .04445 0 aline .01905 0 aline .018415 -.000635 aline .012065 -.000635 aline .012065 .009525 bezier .216792E-01 .102204E-01 .355246E-01 .700019E-02 .03937 .018415 aline .03937 .127 bezier .376666E-01 .140363 .224944E-01 .139988 .012065 .1397 aline .012065 .14986 bezier .283008E-01 .151281 .447148E-01 .152272 .06096 .15367 closepath ! end of curve fill dfont endchar dfont char="o" !-------------- Beginning of new char. dfont wid=.500002 hei=.430555 dep=0 italic=0 dfont fby="c" kadd=.0277786 dfont fby="d" kadd=.0277786 dfont fby="e" kadd=.0277786 dfont fby="j" kadd=.0555553 dfont fby="o" kadd=.0277786 dfont fby="q" kadd=.0277786 dfont fby="v" kadd=-.0277786 dfont fby="w" kadd=-.0277786 dfont fby="x" kadd=-.0277786 dfont fby="y" kadd=-.0277786 set path ! start of curve newpath ! start of curve amove .094615 .155575 bezier .147902 .151615 .181788 .878467E-01 .15875 .04064 bezier .13893 -.495178E-02 .752415E-01 -.193551E-01 .0381 .013335 bezier -.568824E-02 .480097E-01 .434736E-02 .122977 .05334 .14732 aline .05588 .14859 aline .057785 .149225 aline .060325 .150495 aline .067945 .153035 aline .073025 .154305 aline .0762 .15494 aline .080645 .15494 aline .08128 .155575 aline .094615 .155575 closepath ! end of curve ! start of curve amove .08255 .147955 bezier .551996E-01 .146056 .384159E-01 .117249 .03937 .092075 bezier .375518E-01 .637613E-01 .369337E-01 .028888 .0635 .010795 bezier .893416E-01 -.649387E-02 .127082 .010047 .13335 .04064 bezier .138973 .659787E-01 .139785 .094809 .13081 .120015 bezier .123186 .138568 .101922 .15132 .08255 .147955 closepath ! end of curve fill dfont endchar dfont char="p" !-------------- Beginning of new char. dfont wid=.555557 hei=.430555 dep=.194445 italic=0 dfont fby="c" kadd=.0277786 dfont fby="d" kadd=.0277786 dfont fby="e" kadd=.0277786 dfont fby="j" kadd=.0555553 dfont fby="o" kadd=.0277786 dfont fby="q" kadd=.0277786 dfont fby="v" kadd=-.0277786 dfont fby="w" kadd=-.0277786 dfont fby="x" kadd=-.0277786 dfont fby="y" kadd=-.0277786 set path ! start of curve newpath ! start of curve amove .060325 .15367 aline .060325 .131445 bezier .732401E-01 .145002 .956564E-01 .157449 .116205 .153035 bezier .165652 .149454 .194718 .09094 .1778 .047625 bezier .164457 .542279E-02 .106151 -.219177E-01 .06985 .008255 aline .062865 .01524 aline .06223 .01651 aline .061595 .015875 aline .061595 -.050165 bezier .654404E-01 -.615798E-01 .792858E-01 -.583596E-01 .0889 -.059055 aline .0889 -.069215 aline .08255 -.069215 aline .081915 -.06858 aline .056515 -.06858 aline .05588 -.067945 aline .043815 -.067945 aline .04318 -.06858 aline .01778 -.06858 aline .017145 -.069215 aline .010795 -.069215 aline .010795 -.059055 bezier .204092E-01 -.583596E-01 .342546E-01 -.615798E-01 .0381 -.050165 aline .0381 .128905 bezier .357456E-01 .141502 .207341E-01 .139458 .010795 .1397 aline .010795 .14986 bezier .272545E-01 .151252 .438655E-01 .152278 .060325 .15367 closepath ! end of curve ! start of curve amove .1016 .14478 bezier .844975E-01 .143495 .692246E-01 .131343 .061595 .116205 aline .061595 .03302 bezier .707664E-01 .939339E-02 .10084 -.722464E-02 .12319 .00889 bezier .154247 .310227E-01 .160355 .757545E-01 .14732 .10922 bezier .141 .12841 .123178 .148658 .1016 .14478 closepath ! end of curve fill dfont endchar dfont char="q" !-------------- Beginning of new char. dfont wid=.527779 hei=.430555 dep=.194445 italic=0 set path ! start of curve newpath ! start of curve amove .09525 .15367 bezier .113385 .151852 .128889 .138143 .136525 .12192 bezier .140973 .132479 .144978 .143409 .14986 .15367 aline .156845 .15367 aline .156845 -.050165 bezier .16069 -.615798E-01 .174536 -.583596E-01 .18415 -.059055 aline .18415 -.069215 aline .1778 -.069215 aline .177165 -.06858 aline .151765 -.06858 aline .15113 -.067945 aline .139065 -.067945 aline .13843 -.06858 aline .11303 -.06858 aline .112395 -.069215 aline .106045 -.069215 aline .106045 -.059055 bezier .115659 -.583596E-01 .129505 -.615798E-01 .13335 -.050165 aline .13335 .01905 bezier .12328 .992048E-02 .109991 -.43422E-02 .093345 -.00381 bezier .470479E-01 -.105583E-01 .570272E-02 .381133E-01 .013335 .08255 bezier .014842 .123782 .552268E-01 .157131 .09525 .15367 closepath ! end of curve ! start of curve amove .086995 .14478 bezier .581765E-01 .14047 .440886E-01 .107839 .041275 .08255 bezier .401355E-01 .054132 .481638E-01 .188803E-01 .0762 .00508 bezier .101736 -.516842E-02 .126873 .178183E-01 .13462 .041275 aline .13462 .1016 bezier .129667 .123794 .112824 .148125 .08763 .145415 aline .086995 .14478 closepath ! end of curve fill dfont endchar dfont char="r" !-------------- Beginning of new char. dfont wid=.391668 hei=.430555 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .05842 .15367 aline .05842 .11684 bezier .061557 .121931 .651411E-01 .132444 .070485 .13843 bezier .831821E-01 .15635 .117008 .161212 .127 .13843 bezier .129623 .12995 .126155 .119559 .11684 .117475 bezier .10385 .114041 .931761E-01 .127806 .09906 .1397 aline .099695 .140335 aline .10033 .141605 aline .1016 .142875 aline .10287 .14351 aline .10414 .14478 aline .10541 .145415 aline .106045 .14605 bezier .821323E-01 .150238 .663841E-01 .124559 .062865 .103505 aline .06223 .10033 aline .061595 .099695 aline .061595 .095885 aline .06096 .09525 aline .06096 .089535 aline .060325 .0889 aline .060325 .019685 bezier .616078E-01 .108566E-01 .714663E-01 .105225E-01 .078105 .009525 aline .094615 .009525 aline .094615 -.000635 aline .086995 -.000635 aline .08636 0 aline .056515 0 aline .05588 .000635 aline .043815 .000635 aline .04318 0 aline .01778 0 aline .017145 -.000635 aline .010795 -.000635 aline .010795 .009525 bezier .204092E-01 .102204E-01 .342546E-01 .700019E-02 .0381 .018415 aline .0381 .127 bezier .363966E-01 .140363 .212244E-01 .139988 .010795 .1397 aline .010795 .14986 bezier .266587E-01 .151157 .425563E-01 .152373 .05842 .15367 closepath ! end of curve fill dfont endchar dfont char="s" !-------------- Beginning of new char. dfont wid=.394445 hei=.430555 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .075565 .155575 bezier .842498E-01 .154328 .941871E-01 .151778 .100965 .145415 aline .10795 .1524 aline .10922 .153035 aline .11176 .155575 aline .11557 .155575 aline .116205 .15494 aline .117475 .154305 aline .117475 .104775 aline .116205 .10414 aline .11557 .103505 aline .111125 .103505 aline .11049 .10414 aline .10922 .104775 bezier .110791 .124832 .970074E-01 .148185 .07493 .14859 bezier .576223E-01 .151327 .330088E-01 .146133 .028575 .12573 bezier .269021E-01 .103579 .528225E-01 .956968E-01 .070485 .09398 bezier .957651E-01 .916537E-01 .123679 .759705E-01 .126365 .048895 bezier .129562 .252596E-01 .113484 .172389E-02 .089535 -.00254 bezier .069783 -.66203E-02 .461427E-01 -.567808E-02 .03175 .010795 aline .028575 .00762 aline .02794 .00635 aline .023495 .001905 aline .02286 .000635 aline .01778 -.004445 aline .01397 -.004445 aline .013335 -.00381 aline .012065 -.003175 aline .012065 .056515 aline .01397 .05842 aline .018415 .05842 bezier .239437E-01 .480648E-01 .247101E-01 .325204E-01 .03302 .022225 bezier .474739E-01 -.279242E-02 .886761E-01 -.468716E-02 .10541 .018415 bezier .117915 .374461E-01 .102196 .061848 .08128 .065405 bezier .561153E-01 .06987 .227885E-01 .739083E-01 .013335 .102235 bezier .522765E-02 .128095 .277326E-01 .154126 .053975 .154305 aline .05461 .15494 aline .05969 .15494 aline .060325 .155575 aline .075565 .155575 closepath ! end of curve fill dfont endchar dfont char="t" !-------------- Beginning of new char. dfont wid=.38889 hei=.61508 dep=0 italic=0 dfont fby="w" kadd=-.0277786 dfont fby="y" kadd=-.0277786 set path ! start of curve newpath ! start of curve amove .06096 .21463 aline .06096 .150495 aline .061595 .14986 aline .11049 .14986 aline .11049 .1397 aline .061595 .1397 aline .06096 .139065 aline .06096 .033655 bezier .620376E-01 .200678E-01 .714774E-01 -.167436E-04 .088265 .004445 bezier .102005 .769492E-02 .105781 .241562E-01 .10795 .03556 aline .10795 .06223 aline .116205 .06223 bezier .116861 .391908E-01 .118187 .934658E-02 .09398 -.00254 bezier .687568E-01 -.114472E-01 .376399E-01 .733651E-02 .037465 .034925 aline .037465 .139065 aline .03683 .1397 aline .006985 .1397 aline .006985 .146685 bezier .375732E-01 .147082 .508315E-01 .18208 .052705 .20701 aline .052705 .21463 aline .06096 .21463 closepath ! end of curve fill dfont endchar dfont char="u" !-------------- Beginning of new char. dfont wid=.555557 hei=.430555 dep=0 italic=0 dfont fby="w" kadd=-.0277786 set path ! start of curve newpath ! start of curve amove .062865 .15367 aline .062865 .02921 bezier .063526 .017981 .698907E-01 .477774E-02 .083185 .00381 bezier .106758 -.371007E-02 .130202 .171891E-01 .133985 .04064 aline .13462 .043815 aline .135255 .04445 aline .135255 .048895 aline .13589 .04953 aline .13589 .127 bezier .134187 .140363 .119014 .139988 .108585 .1397 aline .108585 .14986 bezier .125464 .15126 .142506 .15227 .159385 .15367 aline .159385 .022225 bezier .161088 .886187E-02 .176261 .923737E-02 .18669 .009525 aline .18669 -.000635 bezier .17023 -.202685E-02 .15362 -.305315E-02 .13716 -.004445 aline .13716 .0254 bezier .132904 .206281E-01 .128754 .997974E-02 .121285 .005715 bezier .103845 -.929627E-02 .780247E-01 -.628199E-02 .05842 .00254 bezier .046534 .875211E-02 .403162E-01 .221968E-01 .03937 .034925 aline .03937 .127 bezier .376666E-01 .140363 .224944E-01 .139988 .012065 .1397 aline .012065 .14986 bezier .289443E-01 .15126 .459857E-01 .15227 .062865 .15367 closepath ! end of curve fill dfont endchar dfont char="v" !-------------- Beginning of new char. dfont wid=.527781 hei=.430555 dep=0 italic=.0138884 dfont fby="a" kadd=-.0555553 dfont fby="c" kadd=-.0277786 dfont fby="e" kadd=-.0277786 dfont fby="o" kadd=-.0277786 set path ! start of curve newpath ! start of curve amove .0127 .14986 aline .013335 .149225 aline .03429 .149225 aline .034925 .14859 aline .04572 .14859 aline .046355 .149225 aline .071755 .149225 aline .07239 .14986 aline .07874 .14986 aline .07874 .1397 bezier .704951E-01 .140812 .544936E-01 .136823 .060325 .12573 bezier .736658E-01 .925007E-01 .870616E-01 .592943E-01 .10033 .026035 bezier .113177 .574811E-01 .125747 .892944E-01 .13843 .12065 bezier .140703 .130871 .131812 .139974 .12192 .1397 aline .12192 .14986 aline .127 .14986 aline .127635 .149225 aline .147955 .149225 aline .14859 .14859 aline .156845 .14859 aline .15748 .149225 aline .173355 .149225 aline .17399 .14986 aline .1778 .14986 aline .1778 .1397 bezier .159693 .14051 .14719 .124889 .142875 .108585 bezier .12707 .713366E-01 .113986 .323929E-01 .09652 -.00381 bezier .847264E-01 -.822533E-02 .842435E-01 .817571E-02 .08001 .01524 bezier .628466E-01 .552035E-01 .493324E-01 .972463E-01 .029845 .13589 aline .026035 .137795 aline .023495 .13843 aline .02286 .139065 aline .01905 .139065 aline .018415 .1397 aline .00762 .1397 aline .00762 .14986 aline .0127 .14986 closepath ! end of curve fill dfont endchar dfont char="w" !-------------- Beginning of new char. dfont wid=.722224 hei=.430555 dep=0 italic=.0138884 dfont fby="a" kadd=-.0277786 dfont fby="c" kadd=-.0277786 dfont fby="e" kadd=-.0277786 dfont fby="o" kadd=-.0277786 set path ! start of curve newpath ! start of curve amove .012065 .14986 aline .0127 .149225 aline .03302 .149225 aline .033655 .14859 aline .043815 .14859 aline .04445 .149225 aline .06985 .149225 aline .070485 .14986 aline .076835 .14986 aline .076835 .1397 bezier .687801E-01 .140605 .537812E-01 .137826 .05715 .127 bezier .687638E-01 .946271E-01 .798756E-01 .618561E-01 .092075 .029845 bezier .102107 .582319E-01 .112279 .865614E-01 .122343 .114935 bezier .118989 .125181 .115799 .139645 .10287 .1397 aline .09271 .1397 aline .09271 .14986 aline .097155 .14986 aline .09779 .149225 aline .11684 .149225 aline .117475 .14859 aline .127635 .14859 aline .12827 .149225 aline .1524 .149225 aline .153035 .14986 aline .159385 .14986 aline .159385 .1397 bezier .15106 .140654 .135739 .137869 .1397 .126365 bezier .151636 .926804E-01 .163401 .587345E-01 .175895 .0254 bezier .187102 .567004E-01 .198044 .883623E-01 .20955 .11938 bezier .211911 .131286 .200061 .14014 .18923 .1397 aline .18923 .14986 aline .194945 .14986 aline .19558 .149225 aline .217805 .149225 aline .21844 .14859 aline .226695 .14859 aline .22733 .149225 aline .24257 .149225 aline .243205 .14986 aline .247015 .14986 aline .247015 .1397 bezier .229352 .140554 .218311 .124289 .21463 .108585 bezier .200701 .712611E-01 .189187 .323683E-01 .173355 -.00381 aline .172085 -.004445 aline .16764 -.004445 aline .1651 -.003175 bezier .151484 .314398E-01 .139741 .671386E-01 .127 .102235 bezier .114259 .671386E-01 .102516 .314398E-01 .0889 -.003175 aline .08636 -.004445 aline .081915 -.004445 bezier .738189E-01 .380603E-02 .073199 .175488E-01 .067945 .02794 bezier .05433 .637613E-01 .439124E-01 .101283 .02794 .13589 aline .02667 .136525 aline .026035 .13716 aline .024765 .137795 aline .022225 .13843 aline .02159 .139065 aline .01778 .139065 aline .017145 .1397 aline .006985 .1397 aline .006985 .14986 aline .012065 .14986 closepath ! end of curve fill dfont endchar dfont char="x" !-------------- Beginning of new char. dfont wid=.527781 hei=.430555 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .01143 .14986 aline .012065 .149225 aline .03302 .149225 aline .033655 .14859 aline .04445 .14859 aline .045085 .149225 aline .070485 .149225 aline .07112 .14986 aline .07747 .14986 aline .07747 .1397 bezier .695229E-01 .140769 .059678 .131104 .067945 .12446 bezier .770476E-01 .112627 .859878E-01 .100327 .955675E-01 .890587E-01 bezier .104711 .100466 .115505 .111455 .122555 .12446 bezier .124013 .131675 .120304 .139134 .112395 .1397 aline .112395 .14986 aline .11811 .14986 aline .118745 .149225 aline .141605 .149225 aline .14224 .14859 aline .15113 .14859 aline .151765 .149225 aline .169545 .149225 aline .17018 .14986 aline .174625 .14986 aline .174625 .1397 bezier .151606 .140458 .131914 .124085 .120015 .10541 bezier .114009 .972715E-01 .105154 .894131E-01 .1016 .080645 bezier .119372 .585997E-01 .135073 .347676E-01 .154305 .01397 aline .158115 .012065 aline .16002 .01143 aline .163195 .010795 aline .16383 .01016 aline .168275 .01016 aline .16891 .009525 aline .180975 .009525 aline .180975 -.000635 aline .175895 -.000635 aline .17526 0 aline .154305 0 aline .15367 .000635 aline .142875 .000635 aline .14224 0 aline .11684 0 aline .116205 -.000635 aline .109855 -.000635 aline .109855 .009525 bezier .117716 .835007E-02 .12789 .184025E-01 .11938 .024765 bezier .108867 .380334E-01 .987442E-01 .535239E-01 .874183E-01 .649817E-01 bezier .775294E-01 .504977E-01 .630197E-01 .387096E-01 .056515 .022225 aline .056515 .01905 aline .05715 .018415 aline .057785 .015875 aline .059055 .013335 aline .060325 .012065 aline .064135 .01016 aline .066675 .009525 aline .066675 -.000635 aline .061595 -.000635 aline .06096 0 aline .0381 0 aline .037465 .000635 aline .028575 .000635 aline .02794 0 aline .009525 0 aline .00889 -.000635 aline .004445 -.000635 aline .004445 .009525 bezier .273772E-01 .848693E-02 .472127E-01 .245805E-01 .059055 .04318 bezier .665242E-01 .532303E-01 .770492E-01 .628739E-01 .081915 .07366 bezier .653809E-01 .939703E-01 .509366E-01 .116234 .03302 .135255 aline .02921 .13716 aline .027305 .137795 aline .02413 .13843 aline .023495 .139065 aline .01905 .139065 aline .018415 .1397 aline .00635 .1397 aline .00635 .14986 aline .01143 .14986 closepath ! end of curve fill dfont endchar dfont char="y" !-------------- Beginning of new char. dfont wid=.527781 hei=.430555 dep=.194445 italic=.0138884 dfont fby="," kadd=-.083334 dfont fby="." kadd=-.083334 dfont fby="a" kadd=-.0277786 dfont fby="e" kadd=-.0277786 dfont fby="o" kadd=-.0277786 set path ! start of curve newpath ! start of curve amove .0127 .14986 aline .013335 .149225 aline .03429 .149225 aline .034925 .14859 aline .04572 .14859 aline .046355 .149225 aline .071755 .149225 aline .07239 .14986 aline .07874 .14986 aline .07874 .1397 bezier .706936E-01 .140551 .558686E-01 .137532 .060325 .126365 bezier .737686E-01 .094025 .871001E-01 .616385E-01 .10033 .02921 bezier .113174 .600224E-01 .126063 .910687E-01 .13843 .12192 bezier .139848 .131507 .131223 .13994 .12192 .1397 aline .12192 .14986 aline .127 .14986 aline .127635 .149225 aline .147955 .149225 aline .14859 .14859 aline .156845 .14859 aline .15748 .149225 aline .173355 .149225 aline .17399 .14986 aline .1778 .14986 aline .1778 .1397 bezier .158035 .140923 .145763 .122073 .14097 .104775 bezier .118603 .536187E-01 .100328 .396611E-03 .075565 -.04953 bezier .651607E-01 -.068566 .392759E-01 -.812182E-01 .019685 -.06731 bezier .716891E-02 -.601583E-01 .733207E-03 -.354145E-01 .018415 -.03048 bezier .033561 -.261358E-01 .431986E-01 -.047944 .03048 -.056515 aline .02921 -.05715 aline .028575 -.057785 aline .02667 -.05842 aline .02413 -.059055 aline .02286 -.05969 bezier .379972E-01 -.736538E-01 .607315E-01 -.620756E-01 .06858 -.04572 bezier .763612E-01 -.314382E-01 .814682E-01 -.158186E-01 .881063E-01 -.9525E-03 bezier .689828E-01 .043863 .518038E-01 .089674 .03175 .133985 aline .029845 .13589 aline .028575 .136525 aline .02794 .13716 aline .026035 .137795 aline .023495 .13843 aline .02286 .139065 aline .01905 .139065 aline .018415 .1397 aline .00762 .1397 aline .00762 .14986 aline .0127 .14986 closepath ! end of curve fill dfont endchar dfont char="z" !-------------- Beginning of new char. dfont wid=.444446 hei=.430555 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .13716 .14986 bezier .144558 .144187 .133053 .137163 .13081 .131445 bezier .10033 .904744E-01 .068059 .483564E-01 .03937 .00762 aline .089535 .00762 bezier .105061 .837487E-02 .124038 .158306E-01 .127635 .033655 bezier .131105 .440978E-01 .131637 .541654E-01 .132715 .06477 aline .14097 .06477 bezier .138897 .430379E-01 .137328 .210971E-01 .135255 -.000635 aline .0127 -.000635 bezier .498079E-02 .609555E-02 .176204E-01 .137395E-01 .02032 .02032 bezier .502861E-01 .609327E-01 .826484E-01 .102256 .11049 .142875 aline .06223 .142875 bezier .481371E-01 .142123 .304334E-01 .135963 .027305 .11938 aline .026035 .1143 aline .0254 .113665 aline .0254 .11049 aline .024765 .109855 aline .024765 .10541 aline .02413 .104775 aline .02413 .098425 aline .023495 .09779 aline .023495 .09398 aline .01524 .09398 bezier .166192E-01 .112561 .176708E-01 .131279 .01905 .14986 closepath ! end of curve fill dfont endchar dfont char="{" !-------------- Beginning of new char. dfont wid=.500002 hei=.430555 dep=0 italic=.0277786 set path ! start of curve newpath ! start of curve amove .17526 .095885 aline .17526 .0889 aline .000635 .0889 aline .000635 .095885 aline .17526 .095885 closepath ! end of curve fill dfont endchar dfont char="|" !-------------- Beginning of new char. dfont wid=1 hei=.430555 dep=0 italic=.0277786 set path ! start of curve newpath ! start of curve amove .35052 .095885 aline .35052 .0889 aline .000635 .0889 aline .000635 .095885 aline .35052 .095885 closepath ! end of curve fill dfont endchar dfont char="}" !-------------- Beginning of new char. dfont wid=.500002 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .07747 .244475 bezier .880736E-01 .243715 .093133 .229632 .084455 .222885 bezier .073737 .208641 .639343E-01 .192074 .05207 .179705 aline .04699 .182245 aline .04572 .183515 bezier .523212E-01 .2022 .593598E-01 .220922 .066675 .239395 aline .06985 .24257 aline .07239 .24384 aline .074295 .244475 aline .07747 .244475 closepath ! end of curve ! start of curve amove .13589 .244475 bezier .146494 .243715 .151553 .229632 .142875 .222885 bezier .132157 .208641 .122354 .192074 .11049 .179705 aline .10541 .182245 aline .10414 .183515 bezier .110741 .2022 .11778 .220922 .125095 .239395 aline .12827 .24257 aline .13081 .24384 aline .132715 .244475 aline .13589 .244475 closepath ! end of curve fill dfont endchar dfont char="~" !-------------- Beginning of new char. dfont wid=.500002 hei=.667859 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .07112 .23368 bezier .883774E-01 .230298 .10272 .210379 .121285 .21844 aline .126365 .22098 aline .127 .221615 aline .12827 .22225 aline .128905 .222885 aline .130175 .22352 aline .13208 .225425 aline .13335 .22606 aline .14097 .23368 aline .14478 .22987 aline .14605 .229235 bezier .134698 .214987 .117919 .193683 .097155 .203835 bezier .825042E-01 .211265 .649888E-01 .226165 .048895 .21336 aline .047625 .212725 aline .04699 .21209 aline .04572 .211455 aline .043815 .20955 aline .042545 .208915 aline .034925 .201295 aline .031115 .205105 aline .029845 .20574 bezier .393545E-01 .216776 .488028E-01 .230611 .064135 .23368 closepath ! end of curve fill dfont endchar dfont char=127 !-------------- Beginning of new char. dfont wid=.500002 hei=.667859 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .05715 .234315 bezier .740998E-01 .231684 .760944E-01 .205867 .05969 .20066 bezier .445563E-01 .194933 .297165E-01 .214647 .040005 .22733 aline .043815 .23114 aline .045085 .231775 aline .04572 .23241 aline .04699 .233045 aline .048895 .23368 aline .0508 .234315 closepath ! end of curve ! start of curve amove .125095 .234315 bezier .141265 .23164 .14418 .20748 .128905 .201295 bezier .114052 .193886 .976645E-01 .213192 .107315 .226695 aline .112395 .231775 aline .116205 .23368 aline .118745 .234315 closepath ! end of curve fill dfont endchar gle-graphics-4.2.4c/src/fonts/texcmb.gle0000664000000000000000000060247711676336540016657 0ustar rootrootdfont file_name="CMB10" dfont font_name="CMB10" dfont design= .35146 dfont slant= 0 dfont space= .117153 dfont stretch= .585767E-01 dfont shrink= .390513E-01 dfont x_hei= .156204 dfont quad= .351461 dfont extra_space= .390513E-01 dfont paint="FILL" !------------------ end of main parameters dfont char=0 !-------------- Beginning of new char. dfont wid=.600003 hei=.686111 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .184785 .238125 bezier .188533 .209668 .191873 .181837 .19558 .15367 aline .179705 .15367 bezier .176329 .175441 .174891 .205841 .150495 .216535 aline .14859 .21717 aline .14732 .217805 aline .14351 .219075 aline .13843 .220345 aline .137795 .22098 aline .13462 .22098 aline .133985 .221615 aline .128905 .221615 aline .12827 .22225 aline .094615 .22225 aline .09398 .221615 aline .09398 .015875 aline .094615 .01524 aline .135255 .01524 aline .135255 -.000635 aline .12446 -.000635 aline .123825 0 aline .08001 0 aline .079375 .000635 aline .06096 .000635 aline .060325 0 aline .022225 0 aline .02159 -.000635 aline .012065 -.000635 aline .012065 .01524 aline .04445 .01524 aline .045085 .015875 aline .045085 .221615 aline .04445 .22225 aline .012065 .22225 aline .012065 .238125 aline .184785 .238125 closepath ! end of curve fill dfont endchar dfont char=1 !-------------- Beginning of new char. dfont wid=.833336 hei=.686111 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .151765 .244475 aline .15367 .24384 aline .15621 .24257 aline .15875 .24003 aline .174625 .20828 aline .17526 .206375 aline .19685 .163195 aline .197485 .16129 aline .219075 .11811 aline .21971 .116205 aline .2413 .073025 aline .241935 .07112 aline .263525 .02794 aline .26416 .026035 aline .274955 .004445 aline .274955 .00254 aline .27432 .00127 aline .27305 0 aline .27178 -.000635 aline .020955 -.000635 aline .019685 0 aline .018415 .00127 aline .01778 .00254 aline .01778 .004445 aline .028575 .026035 aline .02921 .02794 aline .0508 .07112 aline .051435 .073025 aline .073025 .116205 aline .07366 .11811 aline .09525 .16129 aline .095885 .163195 aline .117475 .206375 aline .11811 .20828 aline .133985 .24003 aline .136525 .24257 aline .139065 .24384 aline .14097 .244475 closepath ! end of curve ! start of curve amove .12827 .187325 aline .127635 .186055 aline .108585 .147955 aline .10795 .14605 aline .08636 .10287 aline .085725 .100965 aline .064135 .057785 aline .0635 .05588 aline .056515 .04191 aline .05588 .041275 aline .056515 .04064 aline .201295 .04064 aline .201771 .415925E-01 aline .188595 .067945 aline .18796 .06985 aline .16637 .11303 aline .165735 .114935 aline .144145 .158115 aline .14351 .16002 aline .12954 .18796 aline .128905 .188595 closepath ! end of curve fill dfont endchar dfont char=2 !-------------- Beginning of new char. dfont wid=.777781 hei=.686111 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .145415 .24384 bezier .191579 .242292 .23606 .208937 .247015 .16256 bezier .260303 .112819 .252527 .515453E-01 .208915 .01778 bezier .15669 -.198473E-01 .725122E-01 -.010447 .0381 .04699 bezier .134625E-01 .918691E-01 .141189E-01 .14742 .038735 .192405 bezier .600919E-01 .229006 .104473 .246915 .145415 .24384 closepath ! end of curve ! start of curve amove .130175 .23114 bezier .932229E-01 .227681 .737376E-01 .187663 .071755 .15494 aline .07112 .154305 aline .07112 .147955 aline .070485 .14732 aline .070485 .137795 aline .06985 .13716 aline .06985 .10033 bezier .709243E-01 .665934E-01 .820983E-01 .214749E-01 .12065 .010795 bezier .154893 -.893961E-03 .190999 .278425E-01 .197485 .06223 bezier .201478 .749662E-01 .201783 .874041E-01 .2032 .10033 aline .2032 .13716 bezier .201851 .171432 .191448 .217659 .1524 .229235 aline .14986 .22987 aline .146685 .230505 aline .14605 .23114 aline .142875 .23114 aline .14224 .231775 aline .13081 .231775 aline .130175 .23114 closepath ! end of curve ! start of curve amove .10668 .153035 aline .10668 .141605 aline .107315 .14097 aline .165735 .14097 aline .16637 .141605 aline .16637 .153035 aline .182245 .153035 aline .182245 .08763 aline .16637 .08763 aline .16637 .09906 aline .165735 .099695 aline .107315 .099695 aline .10668 .09906 aline .10668 .08763 aline .090805 .08763 aline .090805 .153035 aline .10668 .153035 closepath ! end of curve fill dfont endchar dfont char=3 !-------------- Beginning of new char. dfont wid=.700003 hei=.686111 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .12827 .244475 aline .12954 .24384 aline .13081 .243205 aline .13335 .240665 bezier .158671 .165838 .182418 .903551E-01 .20701 .01524 aline .233045 .01524 aline .233045 -.000635 aline .22479 -.000635 aline .224155 0 aline .192405 0 aline .19177 .000635 aline .17526 .000635 aline .174625 0 aline .136525 0 aline .13589 -.000635 aline .12573 -.000635 aline .12573 .01524 aline .154305 .01524 bezier .140217 .650097E-01 .122244 .114715 .10668 .164465 bezier .907142E-01 .116414 .741186E-01 .672202E-01 .05969 .01905 aline .060325 .018415 aline .06223 .01778 aline .065405 .017145 aline .06604 .01651 aline .06985 .01651 aline .070485 .015875 aline .0762 .015875 aline .076835 .01524 aline .086995 .01524 aline .086995 -.000635 aline .080645 -.000635 aline .08001 0 aline .05207 0 aline .051435 .000635 aline .040005 .000635 aline .03937 0 aline .018415 0 aline .01778 -.000635 aline .0127 -.000635 aline .0127 .01524 aline .024765 .01524 aline .0254 .015875 aline .031115 .015875 aline .03175 .01651 aline .034925 .01651 aline .03556 .017145 aline .03937 .018415 bezier .644139E-01 .920493E-01 .871759E-01 .166967 .112395 .240665 aline .114935 .243205 aline .116205 .24384 aline .117475 .244475 closepath ! end of curve fill dfont endchar dfont char=4 !-------------- Beginning of new char. dfont wid=.666669 hei=.686111 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .213995 .23622 bezier .215068 .213155 .216097 .19007 .21717 .167005 aline .201295 .167005 bezier .199861 .176751 .202513 .189088 .19431 .196215 aline .191135 .196215 aline .1905 .19685 aline .182245 .19685 aline .18161 .197485 aline .052705 .197485 aline .05207 .19685 aline .043815 .19685 bezier .329937E-01 .195862 .341064E-01 .181688 .033655 .173355 aline .03302 .17272 aline .03302 .167005 aline .017145 .167005 bezier .182183E-01 .19007 .192468E-01 .213155 .02032 .23622 aline .213995 .23622 closepath ! end of curve ! start of curve amove .065405 .158115 aline .065405 .14224 aline .06604 .141605 aline .168275 .141605 aline .16891 .14224 aline .16891 .158115 aline .184785 .158115 aline .184785 .08636 aline .16891 .08636 aline .16891 .102235 aline .168275 .10287 aline .06604 .10287 aline .065405 .102235 aline .065405 .08636 aline .04953 .08636 aline .04953 .158115 aline .065405 .158115 closepath ! end of curve ! start of curve amove .031115 .07239 bezier .323048E-01 .615719E-01 .303724E-01 .497252E-01 .03683 .04064 aline .038735 .040005 aline .03937 .03937 aline .042545 .03937 aline .04318 .038735 aline .051435 .038735 aline .05207 .0381 aline .182245 .0381 aline .18288 .038735 aline .191135 .038735 bezier .201075 .385175E-01 .201375 .501171E-01 .202565 .05715 aline .202565 .065405 aline .2032 .06604 aline .2032 .07239 aline .219075 .07239 bezier .218101 .480135E-01 .216874 .237415E-01 .2159 -.000635 aline .018415 -.000635 bezier .174408E-01 .237415E-01 .162142E-01 .480135E-01 .01524 .07239 aline .031115 .07239 closepath ! end of curve fill dfont endchar dfont char=5 !-------------- Beginning of new char. dfont wid=.783336 hei=.686111 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .263525 .238125 aline .263525 .22225 aline .23114 .22225 aline .230505 .221615 aline .230505 .015875 aline .23114 .01524 aline .263525 .01524 aline .263525 -.000635 aline .254 -.000635 aline .253365 0 aline .215265 0 aline .21463 .000635 aline .197485 .000635 aline .19685 0 aline .15875 0 aline .158115 -.000635 aline .14859 -.000635 aline .14859 .01524 aline .180975 .01524 aline .18161 .015875 aline .18161 .221615 aline .180975 .22225 aline .094615 .22225 aline .09398 .221615 aline .09398 .015875 aline .094615 .01524 aline .127 .01524 aline .127 -.000635 aline .117475 -.000635 aline .11684 0 aline .07874 0 aline .078105 .000635 aline .06096 .000635 aline .060325 0 aline .022225 0 aline .02159 -.000635 aline .012065 -.000635 aline .012065 .01524 aline .04445 .01524 aline .045085 .015875 aline .045085 .221615 aline .04445 .22225 aline .012065 .22225 aline .012065 .238125 aline .263525 .238125 closepath ! end of curve fill dfont endchar dfont char=6 !-------------- Beginning of new char. dfont wid=.722224 hei=.686111 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .222885 .24003 bezier .226633 .211573 .229973 .183742 .23368 .155575 aline .217805 .155575 bezier .215055 .181109 .205012 .213325 .175895 .21971 aline .170815 .22098 aline .16764 .221615 aline .167005 .22225 aline .16383 .22225 aline .163195 .222885 aline .158115 .222885 aline .15748 .22352 aline .149225 .22352 aline .14859 .224155 aline .084455 .224155 bezier .105727 .189297 .133183 .15571 .155575 .12065 aline .155575 .118745 aline .15494 .11684 aline .06731 .02921 aline .06604 .028575 aline .05969 .022225 aline .060325 .02159 aline .14732 .02159 bezier .17099 .222254E-01 .201081 .301688E-01 .20955 .056515 bezier .214292 .675763E-01 .216241 .078885 .217805 .09017 aline .23368 .09017 bezier .230043 .598574E-01 .226548 .299744E-01 .222885 -.000635 aline .024765 -.000635 aline .023495 0 aline .020955 .00254 aline .02032 .00381 aline .02032 .006985 aline .020955 .008255 aline .11049 .09779 bezier .103855 .112842 .907891E-01 .126339 .081915 .14097 bezier .612084E-01 .170054 .404099E-01 .199072 .02032 .2286 aline .02032 .235585 aline .020955 .236855 aline .023495 .239395 aline .024765 .24003 closepath ! end of curve fill dfont endchar dfont char=7 !-------------- Beginning of new char. dfont wid=.777781 hei=.686111 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .07239 .24384 bezier .109524 .240682 .129754 .202806 .136525 .169545 bezier .144391 .201515 .162547 .240844 .200025 .243205 bezier .229563 .249835 .259324 .215354 .250825 .187325 aline .248285 .186055 aline .239395 .186055 bezier .232186 .188554 .236831 .199247 .2286 .201295 bezier .210019 .207631 .18467 .204256 .174625 .184785 bezier .16542 .16796 .162726 .149211 .16129 .131445 aline .16129 .015875 aline .161925 .01524 aline .202565 .01524 aline .202565 -.000635 aline .19177 -.000635 aline .191135 0 aline .14732 0 aline .146685 .000635 aline .127 .000635 aline .126365 0 aline .08255 0 aline .081915 -.000635 aline .07112 -.000635 aline .07112 .01524 aline .11176 .01524 aline .112395 .015875 aline .112395 .131445 bezier .109815 .156418 .105637 .193214 .0762 .202565 bezier .642431E-01 .204296 .482673E-01 .206631 .03937 .19685 aline .038735 .194945 aline .0381 .19431 aline .0381 .1905 aline .03683 .18796 aline .036195 .187325 aline .033655 .186055 aline .024765 .186055 aline .022225 .187325 bezier .149018E-01 .211537 .363015E-01 .241226 .061595 .24384 aline .07239 .24384 closepath ! end of curve fill dfont endchar dfont char=8 !-------------- Beginning of new char. dfont wid=.722224 hei=.686111 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .07239 .24003 aline .073025 .239395 aline .114935 .239395 aline .11557 .23876 aline .135255 .23876 aline .13589 .239395 aline .1778 .239395 aline .178435 .24003 aline .18923 .24003 aline .18923 .224155 aline .14859 .224155 aline .147955 .22352 aline .147955 .187325 bezier .179978 .183341 .22106 .170234 .231775 .13462 bezier .241751 .102352 .21636 .070708 .186055 .06096 bezier .173719 .557187E-01 .159727 .549785E-01 .147955 .05207 aline .147955 .015875 aline .14859 .01524 aline .18923 .01524 aline .18923 -.000635 aline .178435 -.000635 aline .1778 0 aline .13589 0 aline .135255 .000635 aline .11557 .000635 aline .114935 0 aline .073025 0 aline .07239 -.000635 aline .061595 -.000635 aline .061595 .01524 aline .102235 .01524 aline .10287 .015875 aline .10287 .052705 bezier .06875 .564214E-01 .247601E-01 .741264E-01 .020955 .113665 bezier .154389E-01 .148263 .048515 .175324 .08001 .182245 aline .08509 .183515 aline .09144 .184785 aline .094615 .184785 aline .09525 .18542 aline .09906 .18542 aline .099695 .186055 aline .10287 .18669 aline .10287 .22352 aline .102235 .224155 aline .061595 .224155 aline .061595 .24003 aline .07239 .24003 closepath ! end of curve ! start of curve amove .147955 .17272 aline .147955 .066675 bezier .167045 .679805E-01 .183007 .864501E-01 .18161 .10541 bezier .182758 .126639 .185677 .154033 .164465 .167005 aline .158115 .17018 aline .1524 .172085 aline .14986 .17272 aline .148908 .173196 aline .147955 .17272 closepath ! end of curve ! start of curve amove .1016 .172085 bezier .832027E-01 .168471 .718039E-01 .150482 .071755 .13335 bezier .720507E-01 .111811 .681957E-01 .853213E-01 .089535 .07239 aline .095885 .069215 aline .1016 .06731 aline .102235 .066675 aline .10287 .06731 aline .10287 .172085 aline .102235 .17272 aline .1016 .172085 closepath ! end of curve fill dfont endchar dfont char=9 !-------------- Beginning of new char. dfont wid=.777781 hei=.686111 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .081915 .24003 aline .08255 .239395 aline .12446 .239395 aline .125095 .23876 aline .14478 .23876 aline .145415 .239395 aline .187325 .239395 aline .18796 .24003 aline .198755 .24003 aline .198755 .224155 aline .158115 .224155 aline .15748 .22352 aline .15748 .069215 bezier .181978 .764639E-01 .190864 .108318 .191135 .131445 bezier .194089 .150875 .185841 .177239 .20574 .189865 aline .207645 .1905 aline .210185 .191135 aline .248285 .191135 aline .250825 .189865 aline .25146 .18923 aline .25273 .18669 bezier .254644 .176951 .241976 .181309 .24003 .17399 bezier .233376 .150496 .240793 .12425 .229235 .100965 bezier .217691 .719308E-01 .187042 .561961E-01 .15748 .052705 aline .15748 .015875 aline .158115 .01524 aline .198755 .01524 aline .198755 -.000635 aline .18796 -.000635 aline .187325 0 aline .145415 0 aline .14478 .000635 aline .125095 .000635 aline .12446 0 aline .08255 0 aline .081915 -.000635 aline .07112 -.000635 aline .07112 .01524 aline .11176 .01524 aline .112395 .015875 aline .112395 .052705 bezier .789662E-01 .566172E-01 .463469E-01 .07894 .03937 .113665 bezier .032452 .134551 .414495E-01 .158622 .03048 .1778 aline .028575 .178435 aline .02794 .17907 aline .024765 .17907 aline .022225 .18034 aline .02159 .180975 aline .02032 .183515 aline .02032 .18669 aline .020955 .18796 aline .023495 .1905 aline .024765 .191135 aline .062865 .191135 bezier .07734 .188591 .805712E-01 .171679 .08128 .16002 bezier .811646E-01 .129886 .797095E-01 .966908E-01 .103505 .074295 aline .104775 .07366 aline .10541 .073025 aline .10668 .07239 aline .107315 .071755 aline .111125 .06985 aline .11176 .069215 aline .112395 .06985 aline .112395 .22352 aline .11176 .224155 aline .07112 .224155 aline .07112 .24003 aline .081915 .24003 closepath ! end of curve fill dfont endchar dfont char=10 !-------------- Beginning of new char. dfont wid=.722224 hei=.686111 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .13843 .24384 bezier .178816 .243063 .22745 .218001 .23241 .17272 bezier .240618 .130958 .210149 .941563E-01 .18923 .06096 bezier .184641 .525663E-01 .178454 .428667E-01 .17653 .03429 aline .20193 .03429 aline .202565 .034925 aline .20701 .034925 bezier .218264 .372302E-01 .217227 .516934E-01 .21971 .060325 aline .22098 .066675 aline .221615 .06858 aline .23749 .06858 bezier .233299 .453962E-01 .229373 .226191E-01 .22479 -.000635 aline .16256 -.000635 aline .16129 0 aline .15875 .00254 bezier .154705 .686869E-01 .195719 .135108 .17399 .20066 bezier .160602 .237713 .104954 .242332 .084455 .20955 bezier .657507E-01 .173257 .748488E-01 .132703 .08255 .09525 bezier .891647E-01 .638824E-01 .962024E-01 .349834E-01 .095885 .00381 aline .094615 .00127 aline .09398 .000635 aline .09144 -.000635 aline .02921 -.000635 bezier .246265E-01 .226191E-01 .207014E-01 .453962E-01 .01651 .06858 aline .032385 .06858 aline .03302 .066675 aline .03429 .060325 bezier .367732E-01 .516934E-01 .357359E-01 .372304E-01 .04699 .034925 aline .051435 .034925 aline .05207 .03429 aline .07747 .03429 bezier .615858E-01 .787823E-01 .153054E-01 .115316 .02032 .16764 bezier .233105E-01 .208474 .626956E-01 .239293 .102235 .241935 aline .10287 .24257 aline .107315 .24257 aline .10795 .243205 aline .114935 .243205 aline .11557 .24384 aline .13843 .24384 closepath ! end of curve fill dfont endchar dfont char=11 !-------------- Beginning of new char. dfont wid=.583336 hei=.694445 dep=0 italic=.111112 dfont fby=33 kadd=.111112 dfont fby=39 kadd=.111112 dfont fby=")" kadd=.111112 dfont fby="?" kadd=.111112 dfont fby="]" kadd=.111112 dfont fby="i" ligrep=14 dfont fby="l" ligrep=15 set path ! start of curve newpath ! start of curve amove .12319 .244475 bezier .133263 .244044 .143628 .237811 .151765 .23368 bezier .171508 .244367 .195969 .248787 .21717 .24003 bezier .232883 .232194 .240131 .207654 .224155 .196215 bezier .208868 .185753 .186233 .199891 .1905 .21844 aline .191135 .22098 aline .19177 .222885 aline .19304 .225425 aline .193675 .22606 aline .19431 .22733 aline .198755 .231775 bezier .180356 .235517 .163742 .21734 .16383 .19939 aline .163195 .198755 aline .163195 .155575 aline .16383 .15494 aline .19812 .15494 aline .19812 .139065 aline .165735 .139065 aline .1651 .13843 aline .1651 .015875 aline .165735 .01524 aline .19558 .01524 aline .19558 -.000635 aline .187325 -.000635 aline .18669 0 aline .154305 0 aline .15367 .000635 aline .1397 .000635 aline .139065 0 aline .111125 0 aline .11049 -.000635 aline .103505 -.000635 aline .103505 .01524 aline .127 .01524 aline .127635 .015875 aline .127635 .13843 aline .127 .139065 aline .06858 .139065 aline .067945 .13843 aline .067945 .015875 aline .06858 .01524 aline .092075 .01524 aline .092075 -.000635 aline .08509 -.000635 aline .084455 0 aline .056515 0 aline .05588 .000635 aline .042545 .000635 aline .04191 0 aline .01397 0 aline .013335 -.000635 aline .00635 -.000635 aline .00635 .01524 aline .029845 .01524 aline .03048 .015875 aline .03048 .13843 aline .029845 .139065 aline .009525 .139065 aline .009525 .15494 aline .029845 .15494 aline .03048 .155575 aline .03048 .197485 bezier .363559E-01 .231524 .758723E-01 .243122 .104775 .244475 aline .12319 .244475 closepath ! end of curve ! start of curve amove .10668 .231775 bezier .087526 .231979 .680903E-01 .21705 .06604 .197485 aline .06604 .155575 aline .066675 .15494 aline .127 .15494 aline .127635 .155575 aline .127635 .19177 bezier .114668 .200585 .116026 .221745 .12954 .229235 aline .12573 .230505 aline .12319 .23114 aline .122555 .231775 aline .118745 .231775 aline .11811 .23241 aline .107315 .23241 aline .10668 .231775 closepath ! end of curve fill dfont endchar dfont char=12 !-------------- Beginning of new char. dfont wid=.555557 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .123825 .244475 bezier .14932 .243189 .173627 .212536 .158115 .18923 bezier .145515 .173286 .116126 .183427 .117475 .203835 aline .117475 .20447 aline .11811 .205105 aline .11811 .20955 aline .118745 .21209 aline .121285 .21717 aline .127 .222885 aline .13208 .225425 aline .13462 .22606 bezier .110905 .241472 .694717E-01 .228239 .066675 .197485 aline .06604 .19685 aline .06604 .155575 aline .066675 .15494 aline .102235 .15494 aline .10287 .156845 aline .122555 .156845 aline .12319 .15748 aline .14351 .15748 aline .144145 .158115 aline .164465 .158115 aline .164465 .015875 aline .1651 .01524 aline .188595 .01524 aline .188595 -.000635 aline .18161 -.000635 aline .180975 0 aline .153035 0 aline .1524 .000635 aline .139065 .000635 aline .13843 0 aline .11049 0 aline .109855 -.000635 aline .10287 -.000635 aline .10287 .01524 aline .126365 .01524 aline .127 .015875 aline .127 .13335 aline .126365 .133985 aline .12573 .13589 aline .125095 .13716 aline .12319 .139065 aline .06858 .139065 aline .067945 .13843 aline .067945 .015875 aline .06858 .01524 aline .092075 .01524 aline .092075 -.000635 aline .08509 -.000635 aline .084455 0 aline .056515 0 aline .05588 .000635 aline .042545 .000635 aline .04191 0 aline .01397 0 aline .013335 -.000635 aline .00635 -.000635 aline .00635 .01524 aline .029845 .01524 aline .03048 .015875 aline .03048 .13843 aline .029845 .139065 aline .009525 .139065 aline .009525 .15494 aline .029845 .15494 aline .03048 .155575 aline .03048 .197485 bezier .365782E-01 .231941 .768268E-01 .243102 .106045 .244475 aline .123825 .244475 closepath ! end of curve fill dfont endchar dfont char=13 !-------------- Beginning of new char. dfont wid=.555557 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .123825 .244475 aline .12446 .24384 aline .128905 .24384 aline .13208 .243205 bezier .142673 .238377 .153621 .242414 .164465 .24257 aline .164465 .015875 aline .1651 .01524 aline .188595 .01524 aline .188595 -.000635 aline .18161 -.000635 aline .180975 0 aline .153035 0 aline .1524 .000635 aline .139065 .000635 aline .13843 0 aline .11049 0 aline .109855 -.000635 aline .10287 -.000635 aline .10287 .01524 aline .126365 .01524 aline .127 .015875 aline .127 .13843 aline .126365 .139065 aline .06858 .139065 aline .067945 .13843 aline .067945 .015875 aline .06858 .01524 aline .092075 .01524 aline .092075 -.000635 aline .08509 -.000635 aline .084455 0 aline .056515 0 aline .05588 .000635 aline .042545 .000635 aline .04191 0 aline .01397 0 aline .013335 -.000635 aline .00635 -.000635 aline .00635 .01524 aline .029845 .01524 aline .03048 .015875 aline .03048 .13843 aline .029845 .139065 aline .009525 .139065 aline .009525 .15494 aline .029845 .15494 aline .03048 .155575 aline .03048 .197485 bezier .362676E-01 .231432 .758412E-01 .243231 .104775 .244475 aline .123825 .244475 closepath ! end of curve ! start of curve amove .106045 .231775 bezier .868606E-01 .231496 .680343E-01 .21687 .06604 .197485 aline .06604 .155575 aline .066675 .15494 aline .126365 .15494 aline .127 .155575 aline .127 .196215 bezier .11614 .204458 .115156 .221318 .125095 .230505 aline .123825 .231775 aline .11938 .231775 aline .118745 .23241 aline .10668 .23241 aline .106045 .231775 closepath ! end of curve fill dfont endchar dfont char=14 !-------------- Beginning of new char. dfont wid=.833336 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .12319 .244475 bezier .133484 .243149 .143828 .237921 .151448 .230664 bezier .175297 .24359 .201977 .246401 .227965 .243205 bezier .252458 .238831 .272537 .205559 .25273 .186055 bezier .238524 .17452 .214199 .185348 .215265 .203835 aline .215265 .20447 aline .2159 .205105 aline .2159 .20955 aline .216535 .21209 aline .219075 .21717 aline .22479 .222885 aline .22987 .225425 aline .23241 .22606 bezier .207922 .24162 .16662 .227833 .163195 .19685 aline .163195 .155575 aline .16383 .15494 aline .200025 .15494 aline .20066 .156845 aline .220345 .156845 aline .22098 .15748 aline .2413 .15748 aline .241935 .158115 aline .262255 .158115 aline .262255 .015875 aline .26289 .01524 aline .286385 .01524 aline .286385 -.000635 aline .2794 -.000635 aline .278765 0 aline .250825 0 aline .25019 .000635 aline .236855 .000635 aline .23622 0 aline .20828 0 aline .207645 -.000635 aline .20066 -.000635 aline .20066 .01524 aline .224155 .01524 aline .22479 .015875 aline .22479 .13335 aline .224155 .133985 aline .22352 .13589 aline .222885 .13716 aline .22098 .139065 aline .165735 .139065 aline .1651 .13843 aline .1651 .015875 aline .165735 .01524 aline .18923 .01524 aline .18923 -.000635 aline .182245 -.000635 aline .18161 0 aline .15367 0 aline .153035 .000635 aline .1397 .000635 aline .139065 0 aline .111125 0 aline .11049 -.000635 aline .103505 -.000635 aline .103505 .01524 aline .127 .01524 aline .127635 .015875 aline .127635 .13843 aline .127 .139065 aline .06858 .139065 aline .067945 .13843 aline .067945 .015875 aline .06858 .01524 aline .092075 .01524 aline .092075 -.000635 aline .08509 -.000635 aline .084455 0 aline .056515 0 aline .05588 .000635 aline .042545 .000635 aline .04191 0 aline .01397 0 aline .013335 -.000635 aline .00635 -.000635 aline .00635 .01524 aline .029845 .01524 aline .03048 .015875 aline .03048 .13843 aline .029845 .139065 aline .009525 .139065 aline .009525 .15494 aline .029845 .15494 aline .03048 .155575 aline .03048 .197485 bezier .363972E-01 .231505 .758727E-01 .243073 .104775 .244475 aline .12319 .244475 closepath ! end of curve ! start of curve amove .10668 .231775 bezier .087302 .231631 .680926E-01 .217124 .06604 .197485 aline .06604 .155575 aline .066675 .15494 aline .127 .15494 aline .127635 .155575 aline .127635 .18415 bezier .110105 .193178 .114005 .221187 .132556 .226378 aline .132292 .226907 aline .126365 .22987 aline .12446 .230505 aline .12192 .23114 aline .121285 .231775 aline .11811 .231775 aline .117475 .23241 aline .107315 .23241 aline .10668 .231775 closepath ! end of curve fill dfont endchar dfont char=15 !-------------- Beginning of new char. dfont wid=.833336 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .12319 .244475 bezier .133878 .243527 .144542 .23852 .153035 .231987 bezier .179129 .244379 .20842 .248056 .23622 .2413 aline .236855 .240665 aline .243205 .240665 aline .24384 .2413 aline .250825 .2413 aline .25146 .241935 aline .258445 .241935 aline .25908 .24257 aline .262255 .24257 aline .262255 .015875 aline .26289 .01524 aline .286385 .01524 aline .286385 -.000635 aline .2794 -.000635 aline .278765 0 aline .250825 0 aline .25019 .000635 aline .236855 .000635 aline .23622 0 aline .20828 0 aline .207645 -.000635 aline .20066 -.000635 aline .20066 .01524 aline .224155 .01524 aline .22479 .015875 aline .22479 .13843 aline .224155 .139065 aline .165735 .139065 aline .1651 .13843 aline .1651 .015875 aline .165735 .01524 aline .18923 .01524 aline .18923 -.000635 aline .182245 -.000635 aline .18161 0 aline .15367 0 aline .153035 .000635 aline .1397 .000635 aline .139065 0 aline .111125 0 aline .11049 -.000635 aline .103505 -.000635 aline .103505 .01524 aline .127 .01524 aline .127635 .015875 aline .127635 .13843 aline .127 .139065 aline .06858 .139065 aline .067945 .13843 aline .067945 .015875 aline .06858 .01524 aline .092075 .01524 aline .092075 -.000635 aline .08509 -.000635 aline .084455 0 aline .056515 0 aline .05588 .000635 aline .042545 .000635 aline .04191 0 aline .01397 0 aline .013335 -.000635 aline .00635 -.000635 aline .00635 .01524 aline .029845 .01524 aline .03048 .015875 aline .03048 .13843 aline .029845 .139065 aline .009525 .139065 aline .009525 .15494 aline .029845 .15494 aline .03048 .155575 aline .03048 .197485 bezier .363972E-01 .231505 .758727E-01 .243073 .104775 .244475 aline .12319 .244475 closepath ! end of curve ! start of curve amove .10668 .231775 bezier .087302 .231631 .680926E-01 .217124 .06604 .197485 aline .06604 .155575 aline .066675 .15494 aline .127 .15494 aline .127635 .155575 aline .127635 .19177 bezier .11519 .200995 .116252 .221111 .129381 .228918 aline .129117 .229447 aline .12827 .22987 aline .12319 .23114 aline .122555 .231775 aline .118745 .231775 aline .11811 .23241 aline .107315 .23241 aline .10668 .231775 closepath ! end of curve ! start of curve amove .203835 .231775 bezier .184457 .231631 .165248 .217124 .163195 .197485 aline .163195 .155575 aline .16383 .15494 aline .224155 .15494 aline .22479 .155575 aline .22479 .196215 bezier .21393 .204458 .212946 .221318 .222885 .230505 aline .221615 .23114 aline .22098 .231775 aline .21717 .231775 aline .216535 .23241 aline .20447 .23241 aline .203835 .231775 closepath ! end of curve fill dfont endchar dfont char=16 !-------------- Beginning of new char. dfont wid=.277779 hei=.444445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .07112 .156845 aline .07112 .015875 aline .071755 .01524 aline .093345 .01524 aline .093345 -.000635 aline .08636 -.000635 aline .085725 0 aline .059055 0 aline .05842 .000635 aline .04572 .000635 aline .045085 0 aline .017145 0 aline .01651 -.000635 aline .009525 -.000635 aline .009525 .01524 aline .03302 .01524 aline .033655 .015875 aline .033655 .13081 bezier .300035E-01 .140014 .183886E-01 .137192 .01016 .137795 aline .01016 .15367 bezier .304434E-01 .154817 .508366E-01 .155698 .07112 .156845 closepath ! end of curve fill dfont endchar dfont char=17 !-------------- Beginning of new char. dfont wid=.305557 hei=.444445 dep=.194445 italic=0 set path ! start of curve newpath ! start of curve amove .08509 .156845 aline .08509 -.023495 bezier .797119E-01 -.069003 .136792E-01 -.087991 -.01651 -.05461 bezier -.262001E-01 -.419392E-01 -.202401E-01 -.199059E-01 -.003175 -.01778 bezier .163139E-01 -.135618E-01 .302654E-01 -.385963E-01 .01778 -.05334 aline .014605 -.056515 aline .013335 -.05715 bezier .240753E-01 -.618603E-01 .387581E-01 -.584335E-01 .042545 -.04572 aline .04445 -.040005 aline .045085 -.037465 aline .04572 -.03429 aline .046355 -.033655 aline .046355 -.03048 aline .04699 -.029845 aline .04699 -.024765 aline .047625 -.02413 aline .047625 .130175 bezier .043431 .140692 .301892E-01 .13695 .020955 .137795 aline .020955 .15367 bezier .422675E-01 .154887 .637539E-01 .155685 .08509 .156845 closepath ! end of curve fill dfont endchar dfont char=18 !-------------- Beginning of new char. dfont wid=.500002 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .05842 .247015 bezier .748909E-01 .24334 .790862E-01 .22409 .0889 .212725 bezier .931858E-01 .20492 .991964E-01 .197655 .10287 .189865 aline .092075 .17907 bezier .740975E-01 .190708 .541323E-01 .201014 .0381 .215265 bezier .290265E-01 .227788 .407545E-01 .24526 .05461 .247015 closepath ! end of curve fill dfont endchar dfont char=19 !-------------- Beginning of new char. dfont wid=.500002 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .121285 .247015 bezier .137487 .245536 .148794 .222007 .133985 .211455 bezier .117761 .200032 .100774 .189162 .08382 .17907 aline .073025 .189865 bezier .843721E-01 .207826 .949322E-01 .227541 .10922 .24384 aline .11049 .244475 aline .111125 .24511 aline .112395 .245745 aline .1143 .24638 aline .117475 .247015 closepath ! end of curve fill dfont endchar dfont char=20 !-------------- Beginning of new char. dfont wid=.500002 hei=.631945 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .048895 .227965 bezier .619339E-01 .221931 .749782E-01 .215911 .879475E-01 .209709 bezier .101147 .215826 .114266 .222459 .127635 .227965 bezier .129626 .223141 .135306 .218168 .13462 .21336 bezier .118758 .203114 .103671 .19129 .08763 .18161 bezier .072186 .192847 .542234E-01 .202901 .04064 .215265 aline .041275 .2159 aline .042545 .21844 aline .04318 .219075 aline .045085 .222885 aline .04572 .22352 aline .04699 .22606 aline .047625 .226695 aline .04826 .227965 closepath ! end of curve fill dfont endchar dfont char=21 !-------------- Beginning of new char. dfont wid=.500002 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .045085 .24257 bezier .439232E-01 .213876 .770345E-01 .189495 .103505 .20193 bezier .120015 .208202 .130742 .225631 .13081 .24257 aline .142875 .24257 bezier .144778 .210231 .117073 .172244 .081915 .178435 bezier .510624E-01 .181108 .322219E-01 .214434 .03302 .24257 aline .045085 .24257 closepath ! end of curve fill dfont endchar dfont char=22 !-------------- Beginning of new char. dfont wid=.500002 hei=.596109 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .15113 .21209 aline .15113 .19431 aline .024765 .19431 aline .024765 .21209 aline .15113 .21209 closepath ! end of curve fill dfont endchar dfont char=23 !-------------- Beginning of new char. dfont wid=.755559 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .139065 .245745 bezier .158218 .245806 .177211 .225964 .168275 .206375 bezier .156937 .183965 .124337 .183256 .10541 .19558 bezier .871056E-01 .208814 .951741E-01 .239673 .11684 .24384 aline .12192 .24511 aline .12573 .24511 aline .126365 .245745 aline .139065 .245745 closepath ! end of curve ! start of curve amove .123825 .233045 bezier .106403 .232619 .106403 .201086 .123825 .20066 bezier .134368 .19916 .152073 .198057 .154305 .21209 aline .154305 .221615 aline .15367 .22225 aline .153035 .225425 aline .15113 .229235 aline .150495 .22987 aline .146685 .231775 aline .14478 .23241 aline .141605 .233045 aline .14097 .23368 aline .12446 .23368 closepath ! end of curve fill dfont endchar dfont char=24 !-------------- Beginning of new char. dfont wid=.444446 hei=0 dep=.170138 italic=0 set path ! start of curve newpath ! start of curve amove .107315 -.00508 aline .107315 -.012065 bezier .119521 -.148888E-01 .133614 -.207268E-01 .136525 -.03429 bezier .140289 -.507765E-01 .12576 -.623879E-01 .111125 -.065405 bezier .873879E-01 -.706419E-01 .637032E-01 -.705102E-01 .038735 -.070485 aline .038735 -.05842 bezier .580959E-01 -.576465E-01 .785725E-01 -.607335E-01 .094615 -.04826 bezier .103092 -.365716E-01 .905264E-01 -.023483 .078105 -.02286 aline .07747 -.022225 aline .074295 -.022225 aline .07366 -.02159 aline .067945 -.02159 aline .067945 -.00508 aline .107315 -.00508 closepath ! end of curve fill dfont endchar dfont char=25 !-------------- Beginning of new char. dfont wid=.559723 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .11303 .244475 bezier .138394 .243333 .171795 .231481 .17653 .20193 bezier .179653 .175656 .157404 .154338 .13335 .147955 bezier .179856 .129843 .202449 .661056E-01 .17526 .02413 bezier .15666 .202754E-03 .120684 -.946224E-02 .093345 .00254 bezier .782019E-01 .968174E-02 .712102E-01 .370492E-01 .09017 .043815 bezier .106129 .499622E-01 .120127 .295313E-01 .109855 .01651 aline .10668 .013335 aline .10541 .0127 bezier .108363 .820007E-02 .11906 .878874E-02 .12446 .012065 bezier .139791 .177725E-01 .144141 .362776E-01 .145415 .050165 bezier .145894 .798207E-01 .145376 .113609 .120015 .133985 bezier .110989 .140167 .100412 .142609 .09017 .14351 aline .088265 .145415 aline .088265 .151765 aline .0889 .153035 bezier .967946E-01 .156822 .106548 .154718 .114935 .159385 bezier .137799 .169902 .139867 .20114 .12954 .22098 bezier .112345 .241794 .690014E-01 .233778 .06858 .203835 aline .067945 .2032 aline .067945 -.000635 aline .065405 -.000635 aline .06477 0 aline .052705 0 aline .05207 .000635 aline .042545 .000635 aline .04191 0 aline .01397 0 aline .013335 -.000635 aline .00635 -.000635 aline .00635 .01524 aline .029845 .01524 aline .03048 .015875 aline .03048 .13843 aline .029845 .139065 aline .00635 .139065 aline .00635 .15494 aline .029845 .15494 aline .03048 .155575 aline .03048 .20193 bezier .347251E-01 .231012 .671143E-01 .243249 .092075 .244475 aline .11303 .244475 closepath ! end of curve fill dfont endchar dfont char=26 !-------------- Beginning of new char. dfont wid=.722224 hei=.444445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .08763 .158115 bezier .102903 .156653 .120767 .152335 .13208 .140335 bezier .162374 .168367 .222981 .164938 .238125 .12192 bezier .242476 .107457 .245651 .928198E-01 .24257 .078105 aline .241935 .07747 aline .239395 .0762 aline .14732 .0762 bezier .145039 .523822E-01 .151756 .017955 .18034 .012065 bezier .201109 .598934E-02 .224222 .226067E-01 .229235 .043815 aline .22987 .04445 aline .23241 .04572 aline .239395 .04572 bezier .249035 .408329E-01 .240184 .283939E-01 .23622 .022225 bezier .212074 -.012731 .158535 -.817815E-02 .129858 .182563E-01 bezier .10453 -.539687E-02 .663278E-01 -.691825E-02 .034925 .003175 bezier .137885E-01 .938777E-02 .209809E-02 .361212E-01 .015875 .05461 bezier .340363E-01 .799681E-01 .696708E-01 .082938 .097155 .085725 aline .10668 .085725 bezier .108416 .106256 .109771 .136265 .085725 .14478 bezier .760253E-01 .147285 .650038E-01 .146108 .560388E-01 .143193 bezier .705511E-01 .131978 .630811E-01 .104205 .043815 .104775 bezier .283067E-01 .101398 .148977E-01 .120479 .02159 .135255 bezier .289796E-01 .153628 .516085E-01 .156364 .067945 .158115 aline .08763 .158115 closepath ! end of curve ! start of curve amove .178435 .145415 bezier .154654 .142713 .147368 .114604 .146685 .09525 aline .146685 .08763 aline .14732 .086995 aline .210185 .086995 bezier .21109 .105007 .209018 .126424 .19558 .14097 aline .19431 .141605 aline .193675 .14224 aline .188595 .14478 aline .18542 .145415 aline .184785 .14605 aline .17907 .14605 aline .178435 .145415 closepath ! end of curve ! start of curve amove .10033 .07366 bezier .777245E-01 .725582E-01 .484262E-01 .587042E-01 .0508 .03175 bezier .527407E-01 .187516E-01 .652705E-01 .631411E-02 .07874 .01016 bezier .982988E-01 .108258E-01 .121562 .319435E-01 .11049 .05207 aline .10922 .05715 aline .108585 .060325 aline .108585 .0635 aline .10795 .064135 aline .10795 .069215 aline .107315 .06985 aline .107315 .07366 aline .10668 .074295 aline .100965 .074295 aline .10033 .07366 closepath ! end of curve fill dfont endchar dfont char=27 !-------------- Beginning of new char. dfont wid=.777781 hei=.444445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .095885 .158115 bezier .11381 .156535 .133026 .149248 .145733 .135414 bezier .17396 .1667 .235949 .168229 .25527 .126365 bezier .261438 .110781 .264709 .943009E-01 .26162 .078105 aline .260985 .07747 aline .258445 .0762 aline .16637 .0762 bezier .164089 .523822E-01 .170806 .017955 .19939 .012065 bezier .220159 .598934E-02 .243272 .226067E-01 .248285 .043815 aline .24892 .04445 aline .25146 .04572 aline .258445 .04572 bezier .268085 .408329E-01 .259234 .283939E-01 .25527 .022225 bezier .230338 -.013701 .1745 -.803978E-02 .146368 .207963E-01 bezier .110104 -.177819E-01 .346914E-01 -.82877E-02 .015875 .043815 bezier .146551E-02 .082209 .126131E-01 .134675 .053975 .151765 aline .065405 .155575 aline .067945 .15621 aline .07112 .156845 aline .074295 .156845 aline .07493 .15748 aline .079375 .15748 aline .08001 .158115 aline .095885 .158115 closepath ! end of curve ! start of curve amove .08382 .145415 bezier .609028E-01 .143538 .504302E-01 .117582 .051435 .09779 aline .0508 .097155 aline .0508 .06223 bezier .515568E-01 .424869E-01 .577475E-01 .163271E-01 .080645 .01016 bezier .101498 .529072E-02 .121758 .232673E-01 .123825 .04445 aline .12446 .045085 aline .12446 .04826 aline .125095 .048895 aline .125095 .05334 aline .12573 .053975 aline .12573 .061595 aline .126365 .06223 aline .126365 .097155 bezier .125688 .11615 .117897 .140578 .095885 .145415 aline .09271 .145415 aline .092075 .14605 aline .084455 .14605 aline .08382 .145415 closepath ! end of curve ! start of curve amove .197485 .145415 bezier .173704 .142713 .166418 .114604 .165735 .09525 aline .165735 .08763 aline .16637 .086995 aline .229235 .086995 bezier .23014 .105007 .228068 .126424 .21463 .14097 aline .21336 .141605 aline .212725 .14224 aline .207645 .14478 aline .20447 .145415 aline .203835 .14605 aline .19812 .14605 aline .197485 .145415 closepath ! end of curve fill dfont endchar dfont char=28 !-------------- Beginning of new char. dfont wid=.500002 hei=.541667 dep=.0972233 italic=0 set path ! start of curve newpath ! start of curve amove .141605 .19177 aline .142875 .191135 aline .145415 .189865 aline .14605 .18923 aline .15113 .18669 aline .15113 .186055 aline .14351 .170815 aline .142875 .17018 aline .133985 .1524 aline .13335 .151765 aline .131445 .147955 bezier .137733 .140956 .149634 .13298 .154305 .122555 bezier .172596 .887449E-01 .170568 .416004E-01 .140335 .014605 bezier .116633 -.506619E-02 .837265E-01 -.560607E-02 .05588 .001905 aline .04699 -.015875 aline .046355 -.01651 aline .037465 -.03429 aline .03683 -.034925 aline .03556 -.037465 aline .03429 -.037465 aline .03048 -.03556 aline .029845 -.034925 aline .024765 -.032385 aline .024765 -.03175 aline .032385 -.01651 aline .03302 -.015875 aline .04191 .001905 aline .042545 .00254 bezier .482819E-01 .867884E-02 .393564E-01 .011022 .03556 .014605 bezier .275415E-02 .442783E-01 .248622E-02 .980652E-01 .02794 .13208 bezier .502862E-01 .159336 .892597E-01 .163252 .120269 .152908 aline .128905 .17018 aline .12954 .170815 aline .13843 .188595 aline .139065 .18923 aline .1397 .1905 aline .140335 .19177 closepath ! end of curve ! start of curve amove .08255 .145415 bezier .583764E-01 .143188 .488686E-01 .117032 .050165 .09652 aline .04953 .095885 aline .04953 .05715 bezier .507877E-01 .475693E-01 .508139E-01 .375888E-01 .05588 .028575 bezier .738751E-01 .650466E-01 .949931E-01 .101176 .111125 .137795 aline .109855 .139065 aline .108585 .1397 aline .10795 .140335 aline .10287 .142875 aline .09906 .144145 aline .09652 .14478 aline .093345 .145415 aline .09271 .14605 aline .083185 .14605 closepath ! end of curve ! start of curve amove .11938 .12446 bezier .101479 .886984E-01 .812018E-01 .528221E-01 .06477 .017145 bezier .849664E-01 .907311E-03 .120643 .116817E-01 .123825 .03937 aline .12446 .040005 aline .12446 .04318 aline .125095 .043815 aline .125095 .047625 aline .12573 .04826 aline .12573 .056515 aline .126365 .05715 aline .126365 .095885 bezier .12503 .105863 .125211 .116314 .120015 .12573 closepath ! end of curve fill dfont endchar dfont char=29 !-------------- Beginning of new char. dfont wid=.905559 hei=.686111 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .28702 .24003 bezier .290768 .211573 .294108 .183742 .297815 .155575 aline .28194 .155575 bezier .278536 .178268 .276198 .211528 .24892 .21971 aline .24765 .220345 aline .24511 .22098 aline .243205 .221615 aline .24003 .22225 aline .239395 .222885 aline .23622 .222885 aline .235585 .22352 aline .230505 .22352 aline .22987 .224155 aline .193675 .224155 aline .19304 .22352 aline .19304 .123825 bezier .208679 .1218 .233021 .122284 .236855 .14224 aline .23749 .145415 aline .238125 .14605 aline .238125 .15113 aline .23876 .151765 aline .23876 .164465 aline .254635 .164465 aline .254635 .06604 aline .23876 .06604 bezier .239929 .818267E-01 .237098 .10419 .21717 .106045 aline .216535 .10668 aline .212725 .10668 aline .21209 .107315 aline .193675 .107315 aline .19304 .10668 aline .19304 .015875 aline .193675 .01524 aline .231775 .01524 bezier .251937 .169945E-01 .275194 .276772E-01 .281305 .04953 bezier .28669 .645094E-01 .289435 .804733E-01 .2921 .09525 aline .307975 .09525 bezier .302669 .632412E-01 .297447 .316234E-01 .2921 -.000635 aline .122555 -.000635 aline .122555 .01524 aline .146685 .01524 aline .14732 .015875 aline .14732 .10668 aline .146685 .107315 aline .09525 .107315 bezier .851842E-01 .777456E-01 .729667E-01 .484151E-01 .064008 .018796 aline .06477 .018415 aline .066675 .01778 aline .06985 .017145 aline .070485 .01651 aline .07366 .01651 aline .074295 .015875 aline .08001 .015875 aline .080645 .01524 aline .090805 .01524 aline .090805 -.000635 aline .08382 -.000635 aline .083185 0 aline .05588 0 aline .055245 .000635 aline .04318 .000635 aline .042545 0 aline .019685 0 aline .01905 -.000635 aline .013335 -.000635 aline .013335 .01524 bezier .240241E-01 .015901 .361736E-01 .136368E-01 .04445 .02032 bezier .685415E-01 .882521E-01 .947504E-01 .156241 .117475 .224155 aline .094615 .224155 aline .094615 .24003 closepath ! end of curve ! start of curve amove .13716 .222885 bezier .125541 .189778 .11212 .155637 .1016 .12319 aline .146685 .12319 aline .14732 .123825 aline .14732 .22352 aline .146685 .224155 aline .137795 .224155 closepath ! end of curve fill dfont endchar dfont char=30 !-------------- Beginning of new char. dfont wid=1.01667 hei=.686111 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .153035 .24384 bezier .166227 .242225 .179848 .241645 .19304 .24003 aline .32639 .24003 bezier .330138 .211573 .333478 .183742 .337185 .155575 aline .32131 .155575 bezier .318088 .178012 .315405 .209546 .28956 .219075 aline .283845 .22098 aline .281305 .221615 aline .27813 .22225 aline .277495 .222885 aline .27432 .222885 aline .273685 .22352 aline .26797 .22352 aline .267335 .224155 aline .225425 .224155 aline .22479 .22352 aline .22479 .132715 bezier .24285 .132307 .268308 .127442 .278765 .146685 aline .2794 .14859 aline .280035 .14986 aline .28067 .1524 aline .281305 .155575 aline .28194 .15621 aline .28194 .16129 aline .282575 .161925 aline .282575 .173355 aline .29845 .173355 aline .29845 .07493 aline .282575 .07493 bezier .284032 .910609E-01 .279475 .112938 .259715 .114935 aline .25908 .11557 aline .254 .11557 aline .253365 .116205 aline .225425 .116205 aline .22479 .11557 aline .22479 .015875 aline .225425 .01524 aline .26924 .01524 bezier .290786 .168903E-01 .3156 .284035E-01 .32131 .05207 bezier .326598 .661547E-01 .328819 .813255E-01 .33147 .09525 aline .347345 .09525 bezier .342039 .632412E-01 .336817 .316234E-01 .33147 -.000635 aline .19304 -.000635 bezier .152759 -.552177E-02 .105839 -.100807E-01 .070485 .01778 bezier .279703E-01 .490571E-01 .195704E-01 .107739 .029845 .155575 bezier .390638E-01 .204086 .835968E-01 .242845 .132715 .243205 aline .13335 .24384 aline .153035 .24384 closepath ! end of curve ! start of curve amove .136525 .23114 bezier .096927 .225801 .813777E-01 .179996 .078105 .146685 bezier .760105E-01 .105318 .077635 .612441E-01 .10414 .02667 bezier .120803 .635487E-02 .156467 -.125236E-02 .174625 .02032 bezier .18371 .391498E-01 .180507 .597878E-01 .182245 .08001 aline .182245 .159385 bezier .179653 .181644 .186022 .207663 .16891 .225425 aline .16764 .22606 aline .167005 .226695 aline .164465 .227965 aline .15875 .22987 aline .155575 .230505 aline .15494 .23114 aline .150495 .23114 aline .14986 .231775 aline .13716 .231775 aline .136525 .23114 closepath ! end of curve fill dfont endchar dfont char=31 !-------------- Beginning of new char. dfont wid=.777781 hei=.734723 dep=.0486116 italic=0 set path ! start of curve newpath ! start of curve amove .210185 .26035 aline .211455 .259715 aline .212725 .25908 aline .21336 .258445 aline .21717 .25654 aline .217805 .255905 aline .221615 .254 bezier .216217 .243979 .208478 .23386 .205105 .22352 bezier .251245 .191358 .260363 .127122 .24765 .076835 bezier .23666 .307608E-01 .192721 -.354135E-02 .14605 -.00381 bezier .123852 -.640886E-02 .999657E-01 -.124779E-02 .08001 .00762 bezier .742106E-01 -.174604E-02 .695095E-01 -.127207E-01 .062865 -.020955 aline .060325 -.019685 aline .05969 -.01905 aline .05588 -.017145 aline .055245 -.01651 aline .051435 -.014605 bezier .574074E-01 -.505383E-02 .625749E-01 .507741E-02 .06858 .014605 bezier .023275 .452804E-01 .133106E-01 .106185 .02413 .155575 bezier .333101E-01 .204217 .777597E-01 .242883 .127 .243205 bezier .149291 .245957 .172427 .240372 .19304 .231775 bezier .198535 .241306 .203748 .251041 .20955 .26035 closepath ! end of curve ! start of curve amove .12954 .23114 bezier .982673E-01 .228966 .755054E-01 .200467 .07239 .17018 aline .071755 .169545 aline .071755 .16637 aline .07112 .165735 aline .07112 .16129 aline .070485 .160655 aline .070485 .154305 aline .06985 .15367 aline .06985 .14351 aline .069215 .142875 aline .069215 .09398 bezier .705289E-01 .754861E-01 .725995E-01 .562734E-01 .081915 .038735 bezier .11541 .962613E-01 .148588 .15416 .181398 .21209 bezier .169369 .22673 .14767 .233719 .12954 .23114 closepath ! end of curve ! start of curve amove .189865 .198755 bezier .156628 .14155 .124174 .837802E-01 .090805 .02667 bezier .120794 -.589873E-02 .18137 .540439E-02 .19558 .04826 bezier .201175 .635838E-01 .202751 .785514E-01 .203835 .09398 aline .203835 .142875 bezier .202303 .161925 .200885 .18233 .1905 .200025 closepath ! end of curve fill dfont endchar dfont char=32 !-------------- Beginning of new char. dfont wid=.277779 hei=.444445 dep=0 italic=0 dfont fby="L" kadd=-.337503 dfont fby="l" kadd=-.277779 set path ! start of curve newpath ! start of curve amove .09779 .1397 aline .098425 .137795 aline .09906 .135255 aline .099695 .13335 aline .10033 .13081 aline .100965 .128905 aline .1016 .126365 aline .102235 .12446 bezier .706768E-01 .115427 .391999E-01 .106114 .00762 .097155 aline .006985 .099695 aline .00635 .1016 aline .005715 .10414 aline .00508 .106045 aline .004445 .108585 aline .00381 .11049 aline .00381 .11303 bezier .351828E-01 .121673 .663296E-01 .131802 .09779 .1397 closepath ! end of curve fill dfont endchar dfont char=33 !-------------- Beginning of new char. dfont wid=.305555 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .057785 .24638 bezier .746695E-01 .24495 .853706E-01 .226381 .079375 .211455 bezier .735929E-01 .167603 .677528E-01 .1246 .06096 .080645 aline .05969 .079375 aline .05842 .07874 aline .048895 .07874 bezier .424459E-01 .833225E-01 .459369E-01 .928866E-01 .04318 .09906 bezier .384748E-01 .141936 .300285E-01 .183262 .02667 .226695 bezier .291753E-01 .237387 .389007E-01 .244826 .04953 .24638 closepath ! end of curve ! start of curve amove .057785 .05334 bezier .814791E-01 .506557E-01 .893029E-01 .158582E-01 .06858 .00381 bezier .04954 -.106106E-01 .202531E-01 .102563E-01 .027305 .03302 aline .028575 .03683 aline .03048 .04064 aline .031115 .041275 aline .03175 .042545 aline .037465 .04826 aline .038735 .048895 aline .03937 .04953 aline .04318 .051435 aline .04699 .052705 aline .04953 .05334 closepath ! end of curve fill dfont endchar dfont char=34 !-------------- Beginning of new char. dfont wid=.544446 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .04318 .24257 bezier .683164E-01 .237347 .747374E-01 .206255 .06985 .18542 bezier .675523E-01 .159341 .521829E-01 .135567 .03175 .120015 aline .02921 .120015 aline .02794 .12065 aline .02413 .12446 aline .023495 .12573 aline .023495 .127635 bezier .431338E-01 .144741 .589787E-01 .169713 .05842 .196215 bezier .441879E-01 .180568 .138132E-01 .189663 .012065 .211455 bezier .984302E-02 .225767 .196989E-01 .240624 .03429 .24257 closepath ! end of curve ! start of curve amove .127 .24257 bezier .152136 .237347 .158557 .206255 .15367 .18542 bezier .151372 .159341 .136003 .135567 .11557 .120015 aline .11303 .120015 aline .11176 .12065 aline .10795 .12446 aline .107315 .12573 aline .107315 .127635 bezier .126954 .144741 .142799 .169713 .14224 .196215 bezier .128008 .180568 .976332E-01 .189663 .095885 .211455 bezier .093663 .225767 .103519 .240624 .11811 .24257 closepath ! end of curve fill dfont endchar dfont char=35 !-------------- Beginning of new char. dfont wid=.833336 hei=.694445 dep=.194443 italic=0 set path ! start of curve newpath ! start of curve amove .14859 .24257 aline .150495 .241935 aline .153035 .240665 aline .154305 .239395 aline .15494 .238125 aline .155575 .23749 aline .156845 .23495 bezier .15148 .202193 .140386 .170224 .132715 .137795 aline .13208 .13716 aline .132715 .136525 aline .18669 .136525 bezier .19706 .170465 .203379 .206164 .215265 .239395 bezier .222168 .247202 .236248 .240096 .23368 .22987 bezier .225938 .198865 .216702 .166703 .20955 .136525 aline .26289 .136525 bezier .273984 .135748 .276125 .118866 .26543 .11557 aline .2032 .11557 aline .19558 .08509 aline .194945 .083185 aline .18923 .060325 aline .188807 .059055 aline .18923 .057785 aline .26543 .057785 bezier .276125 .544892E-01 .273984 .376074E-01 .26289 .03683 aline .18288 .03683 bezier .17251 .289037E-02 .166191 -.328087E-01 .154305 -.06604 bezier .147403 -.738469E-01 .133322 -.667406E-01 .13589 -.056515 bezier .143632 -.255104E-01 .152868 .665201E-02 .16002 .03683 aline .106045 .03683 bezier .956754E-01 .289038E-02 .893563E-01 -.328087E-01 .07747 -.06604 bezier .705675E-01 -.738469E-01 .564867E-01 -.667406E-01 .059055 -.056515 bezier .667966E-01 -.255104E-01 .076033 .665201E-02 .083185 .03683 aline .029845 .03683 bezier .187505E-01 .376074E-01 .166104E-01 .544892E-01 .027305 .057785 aline .089535 .057785 aline .097155 .088265 aline .09779 .09017 aline .103505 .11303 aline .103928 .1143 aline .103505 .11557 aline .027305 .11557 bezier .166104E-01 .118866 .187505E-01 .135748 .029845 .136525 aline .109855 .136525 bezier .120225 .170465 .126544 .206164 .13843 .239395 aline .1397 .240665 aline .14224 .241935 aline .144145 .24257 closepath ! end of curve ! start of curve amove .12573 .11303 aline .125095 .11049 aline .118745 .08509 aline .11811 .083185 aline .112395 .060325 aline .111972 .059055 aline .112395 .057785 aline .16637 .057785 aline .17399 .088265 aline .174625 .09017 aline .18034 .11303 aline .180763 .1143 aline .18034 .11557 aline .126365 .11557 closepath ! end of curve fill dfont endchar dfont char=36 !-------------- Beginning of new char. dfont wid=.500002 hei=.75 dep=.0555553 italic=0 set path ! start of curve newpath ! start of curve amove .095885 .262255 aline .095885 .244475 bezier .125433 .243734 .154542 .219464 .155575 .188595 bezier .158971 .17357 .147803 .157035 .131445 .159385 bezier .10985 .160365 .105079 .193837 .125095 .201295 aline .128905 .202565 aline .13462 .202565 bezier .130281 .217171 .110884 .227918 .095885 .22733 aline .095885 .14986 bezier .128826 .143809 .153653 .113579 .155575 .080645 bezier .15894 .476489E-01 .142804 .908103E-02 .10795 0 aline .10287 -.00127 aline .099695 -.001905 aline .09652 -.001905 aline .095885 -.00254 aline .095885 -.02032 aline .08001 -.02032 aline .08001 -.00254 bezier .494031E-01 -.148379E-02 .207067E-01 .256461E-01 .020955 .05715 bezier .173795E-01 .690444E-01 .233735E-01 .844275E-01 .03683 .086995 bezier .053802 .911794E-01 .692004E-01 .732249E-01 .06223 .05715 bezier .590111E-01 .047786 .488691E-01 .437081E-01 .040005 .04318 bezier .460653E-01 .269223E-01 .624758E-01 .147301E-01 .08001 .014605 aline .08001 .102235 bezier .424417E-01 .107501 .148584E-01 .145906 .020955 .182245 bezier .208878E-01 .214082 .483957E-01 .242554 .08001 .244475 aline .08001 .262255 aline .095885 .262255 closepath ! end of curve ! start of curve amove .07747 .22733 bezier .455637E-01 .223439 .372442E-01 .176987 .0635 .160655 aline .06477 .159385 aline .06858 .15748 aline .069215 .156845 aline .07112 .15621 aline .07366 .15494 aline .07874 .15367 aline .079375 .153035 aline .08001 .15367 aline .08001 .22733 aline .07874 .227753 aline .07747 .22733 closepath ! end of curve ! start of curve amove .095885 .09779 aline .095885 .014605 bezier .123374 .168748E-01 .135095 .518947E-01 .12446 .074295 bezier .119566 .859988E-01 .108637 .965252E-01 .095885 .09779 closepath ! end of curve fill dfont endchar dfont char=37 !-------------- Beginning of new char. dfont wid=.833336 hei=.75 dep=.0555553 italic=0 set path ! start of curve newpath ! start of curve amove .078105 .262255 bezier .965322E-01 .258942 .106399 .240679 .123825 .23495 bezier .156704 .21802 .202308 .224693 .22352 .257175 bezier .229543 .267705 .246473 .26053 .243205 .24892 bezier .184826 .159474 .126018 .703362E-01 .066675 -.018415 bezier .559093E-01 -.264992E-01 .431672E-01 -.010288 .052705 -.00127 bezier .101871 .724066E-01 .150224 .146668 .19939 .220345 bezier .171619 .210406 .140489 .212484 .113574 .225697 bezier .118719 .193586 .121631 .153754 .09525 .128905 bezier .701608E-01 .109462 .335669E-01 .129465 .0254 .15748 bezier .163093E-01 .188372 .169091E-01 .226891 .04191 .250825 bezier .517745E-01 .259492 .652391E-01 .263115 .078105 .262255 closepath ! end of curve ! start of curve amove .070485 .249555 bezier .566069E-01 .243018 .575255E-01 .225652 .05588 .21336 aline .05588 .17018 bezier .057282 .157446 .570024E-01 .140099 .07112 .13335 bezier .919083E-01 .133088 .974779E-01 .158738 .10033 .174625 bezier .101525 .198967 .102793 .227849 .08382 .24638 aline .08255 .247015 aline .081915 .24765 aline .079375 .24892 aline .076835 .249555 aline .0762 .25019 aline .07112 .25019 aline .070485 .249555 closepath ! end of curve ! start of curve amove .112395 .22606 aline .11303 .225425 aline .113665 .22606 aline .11303 .226695 aline .112395 .22606 closepath ! end of curve ! start of curve amove .198755 .22098 aline .19939 .220345 aline .200025 .22098 aline .19939 .221615 aline .198755 .22098 closepath ! end of curve ! start of curve amove .23368 .12065 bezier .260954 .115854 .27116 .845731E-01 .272415 .06096 bezier .273447 .331158E-01 .271022 -.16946E-02 .24384 -.017145 bezier .213597 -.301832E-01 .181722 -.291739E-02 .1778 .027305 bezier .172199 .587384E-01 .176361 .101158 .20955 .11684 aline .21717 .11938 aline .21971 .120015 aline .222885 .120015 aline .22352 .12065 closepath ! end of curve ! start of curve amove .22606 .10795 bezier .212182 .101413 .213101 .840473E-01 .211455 .071755 aline .211455 .028575 bezier .212857 .158407E-01 .212577 -.150608E-02 .226695 -.008255 bezier .247483 -.85166E-02 .253053 .171334E-01 .255905 .03302 bezier .2571 .573619E-01 .258368 .862439E-01 .239395 .104775 aline .238125 .10541 aline .23749 .106045 aline .23495 .107315 aline .23241 .10795 aline .231775 .108585 aline .226695 .108585 aline .22606 .10795 closepath ! end of curve fill dfont endchar dfont char=38 !-------------- Beginning of new char. dfont wid=.777781 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .113665 .24638 bezier .143069 .239532 .15102 .197747 .13462 .17526 bezier .12575 .159377 .112026 .146993 .100489 .133033 bezier .113311 .102817 .133402 .775099E-01 .153035 .05207 bezier .173047 .777276E-01 .189752 .106781 .204682 .135467 aline .202565 .136525 aline .19939 .13716 aline .198755 .137795 aline .194945 .137795 aline .19431 .13843 aline .188595 .13843 aline .18796 .139065 aline .1778 .139065 aline .1778 .15494 aline .18542 .15494 aline .186055 .154305 aline .215265 .154305 aline .2159 .15367 aline .22733 .15367 aline .227965 .154305 aline .24892 .154305 aline .249555 .15494 aline .254635 .15494 aline .254635 .139065 bezier .243516 .138275 .230758 .140902 .22225 .13335 bezier .204149 .101237 .186289 .689506E-01 .163354 .403225E-01 bezier .176888 .236927E-01 .199097 .267823E-02 .221615 .015875 bezier .230386 .206457E-01 .236383 .301455E-01 .236855 .040005 aline .25273 .040005 bezier .253572 .114955E-01 .22194 -.960581E-02 .19558 -.00381 bezier .175033 -.399793E-02 .155386 .836559E-02 .13843 .017145 bezier .105774 -.112412E-01 .466016E-01 -.148388E-01 .020955 .024765 bezier .925783E-02 .446487E-01 .158867E-01 .716831E-01 .03429 .08509 aline .064135 .114935 bezier .602034E-01 .131834 .522422E-01 .149587 .05207 .167005 bezier .453172E-01 .195474 .057762 .229697 .08636 .241935 aline .095885 .24511 aline .09906 .245745 aline .102235 .245745 aline .10287 .24638 closepath ! end of curve ! start of curve amove .106045 .23368 bezier .892354E-01 .22931 .851525E-01 .207329 .086995 .19304 bezier .871687E-01 .177298 .904431E-01 .16196 .095885 .146685 bezier .113702 .165666 .134419 .191059 .12446 .21844 aline .12319 .22225 aline .120015 .2286 aline .11684 .231775 aline .1143 .233045 aline .112395 .23368 aline .11176 .234315 aline .10668 .234315 aline .106045 .23368 closepath ! end of curve ! start of curve amove .06985 .10287 bezier .558182E-01 .792783E-01 .577598E-01 .501871E-01 .06477 .024765 bezier .067351 .147226E-01 .078203 .891143E-02 .08763 .012065 bezier .101453 .131293E-01 .116118 .188723E-01 .126841 .276225E-01 bezier .103875 .495857E-01 .845472E-01 .748387E-01 .070485 .103505 aline .06985 .10287 closepath ! end of curve fill dfont endchar dfont char=39 !-------------- Beginning of new char. dfont wid=.277779 hei=.694445 dep=0 italic=0 dfont fby=33 kadd=.111112 dfont fby=39 ligrep=34 dfont fby="?" kadd=.111112 set path ! start of curve newpath ! start of curve amove .05334 .24257 bezier .784765E-01 .237347 .848974E-01 .206255 .08001 .18542 bezier .777123E-01 .159341 .623429E-01 .135567 .04191 .120015 aline .03937 .120015 aline .0381 .12065 aline .03429 .12446 aline .033655 .12573 aline .033655 .127635 bezier .532938E-01 .144741 .691387E-01 .169713 .06858 .196215 bezier .543479E-01 .180568 .239732E-01 .189663 .022225 .211455 bezier .020003 .225767 .298589E-01 .240624 .04445 .24257 closepath ! end of curve fill dfont endchar dfont char=40 !-------------- Beginning of new char. dfont wid=.38889 hei=.75 dep=.25 italic=0 set path ! start of curve newpath ! start of curve amove .11303 .262255 bezier .12154 .257097 .109611 .249786 .10668 .244475 bezier .777676E-01 .204779 .685149E-01 .154471 .06604 .108585 aline .06604 .06477 bezier .686287E-01 .144762E-01 .798793E-01 -.424546E-01 .116205 -.08255 aline .116205 -.08636 aline .1143 -.088265 aline .11303 -.0889 aline .107315 -.0889 bezier .573033E-01 -.518587E-01 .349235E-01 .013956 .032385 .07239 bezier .304417E-01 .127177 .411213E-01 .184286 .07493 .22987 bezier .844788E-01 .241508 .949671E-01 .253469 .107315 .262255 closepath ! end of curve fill dfont endchar dfont char=")" !-------------- Beginning of new char. dfont wid=.38889 hei=.75 dep=.25 italic=0 set path ! start of curve newpath ! start of curve amove .02921 .262255 bezier .792217E-01 .225214 .101602 .159399 .10414 .100965 bezier .106083 .461781E-01 .954037E-01 -.010931 .061595 -.056515 bezier .520462E-01 -.068153 .415579E-01 -.801135E-01 .02921 -.0889 aline .023495 -.0889 bezier .151658E-01 -.841361E-01 .261049E-01 -.773516E-01 .028575 -.07239 bezier .587649E-01 -.329163E-01 .678682E-01 .184509E-01 .070485 .06477 aline .070485 .108585 bezier .681279E-01 .159203 .560967E-01 .215853 .02032 .25654 aline .02032 .25908 aline .020955 .26035 aline .022225 .26162 aline .023495 .262255 closepath ! end of curve fill dfont endchar dfont char="*" !-------------- Beginning of new char. dfont wid=.500002 hei=.75 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .090805 .262255 bezier .102198 .261298 .106228 .248041 .1016 .239395 bezier .100151 .225004 .960755E-01 .211136 .09525 .19685 bezier .108357 .208303 .120314 .221351 .13462 .23114 bezier .151852 .235529 .162292 .206465 .144145 .201295 bezier .130388 .195476 .113872 .190994 .102023 .183938 bezier .118169 .176644 .136225 .172624 .15113 .163195 bezier .160533 .150981 .144448 .130873 .13081 .1397 bezier .119065 .150645 .106895 .161001 .09525 .172085 bezier .965891E-01 .153937 .101767 .136571 .103505 .11811 bezier .100895 .100622 .691214E-01 .104405 .073025 .12192 bezier .747042E-01 .138756 .794263E-01 .155277 .080645 .172085 bezier .675381E-01 .160632 .555814E-01 .147584 .041275 .137795 bezier .024043 .133406 .136033E-01 .16247 .03175 .16764 bezier .455063E-01 .173459 .620239E-01 .177941 .738717E-01 .184997 bezier .577262E-01 .192291 .396703E-01 .196311 .024765 .20574 bezier .015362 .217954 .314468E-01 .238062 .045085 .229235 bezier .568305E-01 .21829 .689999E-01 .207934 .080645 .19685 bezier .792145E-01 .214939 .742169E-01 .232742 .07239 .250825 aline .07366 .254635 aline .074295 .25527 aline .07493 .25654 aline .07747 .25908 aline .07874 .259715 aline .079375 .26035 aline .080645 .260985 aline .08255 .26162 aline .08509 .262255 closepath ! end of curve fill dfont endchar dfont char="+" !-------------- Beginning of new char. dfont wid=.777781 hei=.583334 dep=.083334 italic=0 set path ! start of curve newpath ! start of curve amove .139065 .203835 aline .14097 .2032 aline .14351 .20193 aline .14478 .20066 aline .145415 .19939 aline .14605 .198755 aline .14732 .196215 aline .14732 .09779 aline .147955 .097155 aline .244475 .097155 bezier .255487 .955195E-01 .255487 .778354E-01 .244475 .0762 aline .147955 .0762 aline .14732 .075565 aline .14732 -.02286 bezier .144704 -.329683E-01 .128981 -.329683E-01 .126365 -.02286 aline .126365 .075565 aline .12573 .0762 aline .028575 .0762 bezier .175626E-01 .778354E-01 .175626E-01 .955195E-01 .028575 .097155 aline .12573 .097155 aline .126365 .09779 aline .126365 .196215 aline .127635 .198755 aline .12827 .19939 aline .128905 .20066 aline .130175 .20193 aline .132715 .2032 aline .13462 .203835 closepath ! end of curve fill dfont endchar dfont char="," !-------------- Beginning of new char. dfont wid=.277779 hei=.155556 dep=.194445 italic=0 set path ! start of curve newpath ! start of curve amove .05334 .05334 bezier .799179E-01 .469771E-01 .827695E-01 .140048E-01 .07874 -.00762 bezier .742245E-01 -.318291E-01 .613707E-01 -.544106E-01 .04191 -.069215 aline .03937 -.069215 aline .0381 -.06858 aline .03429 -.06477 aline .033655 -.0635 aline .033655 -.061595 bezier .052587 -.446682E-01 .671559E-01 -.197832E-01 .06731 .005715 bezier .524954E-01 -.82227E-02 .239695E-01 .114251E-02 .022225 .022225 bezier .190755E-01 .04003 .354887E-01 .566721E-01 .05334 .05334 closepath ! end of curve fill dfont endchar dfont char="-" !-------------- Beginning of new char. dfont wid=.333334 hei=.444445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .09652 .09398 aline .09652 .060325 aline .004445 .060325 aline .004445 .09398 aline .09652 .09398 closepath ! end of curve fill dfont endchar dfont char="." !-------------- Beginning of new char. dfont wid=.277779 hei=.155556 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .05334 .05334 bezier .770409E-01 .506488E-01 .849186E-01 .158493E-01 .064135 .00381 bezier .045972 -.982129E-02 .179452E-01 .830744E-02 .022225 .03048 aline .023495 .03556 aline .026035 .04064 aline .02667 .041275 aline .027305 .042545 aline .03302 .04826 aline .03429 .048895 aline .034925 .04953 aline .038735 .051435 aline .042545 .052705 aline .045085 .05334 closepath ! end of curve fill dfont endchar dfont char="/" !-------------- Beginning of new char. dfont wid=.500002 hei=.75 dep=.25 italic=0 set path ! start of curve newpath ! start of curve amove .14732 .262255 aline .149225 .26162 aline .151765 .26035 aline .153035 .25908 aline .15367 .25781 aline .154305 .257175 aline .155575 .254635 bezier .151571 .23103 .140423 .208503 .13335 .18542 bezier .101733 .953065E-01 .717542E-01 .432363E-02 .038735 -.08509 bezier .311266E-01 -.937709E-01 .160104E-01 -.840792E-01 .020955 -.07366 bezier .591797E-01 .366543E-01 .097135 .14708 .13589 .257175 aline .1397 .260985 aline .14097 .26162 aline .142875 .262255 closepath ! end of curve fill dfont endchar dfont char="0" !-------------- Beginning of new char. dfont wid=.500002 hei=.644444 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .094615 .229235 bezier .125388 .227775 .149656 .20243 .155575 .17272 bezier .15969 .158585 .159751 .144901 .16129 .13081 aline .16129 .092075 bezier .160093 .588015E-01 .152139 .151123E-01 .116205 .000635 bezier .825477E-01 -.133075E-01 .372894E-01 .5111E-03 .024765 .037465 bezier .170704E-01 .551617E-01 .161458E-01 .740667E-01 .014605 .092075 aline .014605 .13081 bezier .159858E-01 .164538 .236073E-01 .209576 .060325 .224155 aline .06223 .22479 aline .0635 .225425 aline .065405 .22606 aline .067945 .226695 aline .06985 .22733 aline .0762 .2286 aline .080645 .2286 aline .08128 .229235 aline .094615 .229235 closepath ! end of curve ! start of curve amove .08382 .216535 bezier .662406E-01 .213163 .059852 .193486 .05969 .178435 aline .05969 .16129 aline .059055 .160655 aline .059055 .069215 bezier .607635E-01 .494562E-01 .570182E-01 .250666E-01 .075565 .01143 bezier .923056E-01 -.415749E-04 .112099 .016559 .1143 .03429 aline .114935 .034925 aline .114935 .03937 aline .11557 .040005 aline .11557 .048895 aline .116205 .04953 aline .116205 .06858 aline .11684 .069215 aline .11684 .160655 bezier .115358 .178594 .118244 .200333 .1016 .212725 aline .09652 .215265 aline .094615 .2159 aline .092075 .216535 aline .09144 .21717 aline .084455 .21717 aline .08382 .216535 closepath ! end of curve fill dfont endchar dfont char="1" !-------------- Beginning of new char. dfont wid=.500002 hei=.644444 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .106045 .229235 aline .107315 .2286 aline .108585 .227965 aline .10922 .22733 aline .11049 .22479 aline .11049 .015875 aline .111125 .01524 aline .15113 .01524 aline .15113 -.000635 aline .140335 -.000635 aline .1397 0 aline .099695 0 aline .09906 .000635 aline .080645 .000635 aline .08001 0 aline .04064 0 aline .040005 -.000635 aline .029845 -.000635 aline .029845 .01524 aline .06858 .01524 aline .069215 .015875 aline .069215 .196215 bezier .545745E-01 .192657 .399877E-01 .190653 .024765 .1905 aline .024765 .206375 bezier .498385E-01 .206663 .773685E-01 .211223 .097155 .229235 closepath ! end of curve fill dfont endchar dfont char="2" !-------------- Beginning of new char. dfont wid=.500002 hei=.644444 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .09144 .229235 bezier .123133 .22772 .155293 .202902 .15748 .169545 bezier .161703 .130496 .12674 .104793 .10033 .08255 aline .094615 .076835 aline .093345 .0762 aline .079375 .06223 aline .078105 .061595 aline .0635 .04699 aline .06223 .046355 aline .059055 .04318 aline .05969 .042545 aline .1143 .042545 aline .114935 .04318 aline .127 .04318 bezier .138604 .429059E-01 .137276 .589799E-01 .140335 .066675 aline .140335 .06985 aline .14097 .070485 aline .14097 .074295 aline .141605 .076835 aline .15748 .076835 bezier .153857 .509622E-01 .150306 .255461E-01 .146685 -.000635 aline .018415 -.000635 aline .018415 .012065 bezier .047635 .544679E-01 .890473E-01 .894077E-01 .106045 .1397 bezier .112031 .162554 .111535 .192763 .09144 .208915 bezier .772157E-01 .217993 .055743 .212046 .04699 .200025 bezier .709929E-01 .198216 .758594E-01 .161215 .053975 .1524 bezier .395792E-01 .145903 .204594E-01 .154579 .018415 .170815 bezier .146789E-01 .203158 .467809E-01 .227725 .0762 .229235 aline .09144 .229235 closepath ! end of curve fill dfont endchar dfont char="3" !-------------- Beginning of new char. dfont wid=.500002 hei=.644444 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .09144 .229235 bezier .116346 .228345 .147092 .214898 .15113 .18669 bezier .154413 .157618 .131975 .131558 .10541 .122555 bezier .137408 .118429 .16632 .088065 .16002 .055245 bezier .158788 .198287E-01 .122747 -.372376E-02 .090805 -.004445 bezier .594638E-01 -.776959E-02 .196377E-01 .837024E-02 .01524 .04318 bezier .113842E-01 .605394E-01 .281778E-01 .785369E-01 .045085 .074295 bezier .711248E-01 .740049E-01 .766447E-01 .325218E-01 .052705 .02413 aline .051435 .023495 aline .04953 .02286 aline .473529E-01 .223157E-01 bezier .574121E-01 .127809E-01 .745309E-01 .798488E-02 .088265 .01143 bezier .103405 .016624 .105905 .346731E-01 .107315 .047625 aline .107315 .078105 bezier .106275 .923873E-01 .101662 .112195 .084455 .11557 aline .06223 .11557 aline .06096 .116205 aline .059055 .11811 aline .059055 .125095 bezier .689505E-01 .131649 .844043E-01 .124829 .09271 .136525 bezier .104711 .1572 .105991 .181936 .10033 .20447 bezier .910277E-01 .224837 .605128E-01 .215909 .0508 .202565 bezier .750217E-01 .202736 .807472E-01 .16643 .05969 .156845 bezier .456938E-01 .150445 .266168E-01 .158549 .024765 .174625 bezier .214861E-01 .203359 .483563E-01 .227487 .075565 .229235 aline .09144 .229235 closepath ! end of curve fill dfont endchar dfont char="4" !-------------- Beginning of new char. dfont wid=.500002 hei=.644444 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .133985 .22987 aline .135255 .229235 aline .136525 .2286 aline .13716 .227965 aline .13843 .225425 aline .13843 .07112 aline .139065 .070485 aline .165735 .070485 aline .165735 .05461 aline .139065 .05461 aline .13843 .053975 aline .13843 .015875 aline .139065 .01524 aline .165735 .01524 aline .165735 -.000635 aline .15748 -.000635 aline .156845 0 aline .12446 0 aline .123825 .000635 aline .108585 .000635 aline .10795 0 aline .07112 0 aline .070485 -.000635 aline .06096 -.000635 aline .06096 .01524 aline .094615 .01524 aline .09525 .015875 aline .09525 .053975 aline .094615 .05461 aline .01016 .05461 bezier .967684E-02 .064241 .924806E-02 .739444E-01 .017145 .080645 bezier .521138E-01 .130084 .857687E-01 .180943 .12192 .229235 aline .12319 .22987 closepath ! end of curve ! start of curve amove .09779 .172085 bezier .749632E-01 .138117 .04897 .104604 .02794 .070485 aline .098425 .070485 aline .09906 .07112 aline .09906 .172085 aline .098425 .17272 aline .09779 .172085 closepath ! end of curve fill dfont endchar dfont char="5" !-------------- Beginning of new char. dfont wid=.500002 hei=.644444 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .0381 .229235 bezier .703482E-01 .214118 .106189 .21401 .13843 .229235 bezier .148005 .229517 .144055 .216912 .1397 .212725 bezier .121125 .183907 .841349E-01 .169491 .517525E-01 .176292 aline .050165 .175895 aline .050165 .132715 bezier .589105E-01 .136609 .696162E-01 .142494 .08001 .142875 bezier .115631 .14754 .154107 .121547 .15621 .08382 bezier .164272 .489459E-01 .142427 .828723E-02 .106045 -.000635 bezier .790454E-01 -.927936E-02 .444656E-01 -.487298E-02 .028575 .02159 bezier .181498E-01 .373194E-01 .107673E-01 .651863E-01 .03048 .076835 bezier .437089E-01 .831512E-01 .623507E-01 .763126E-01 .06477 .060325 bezier .676487E-01 .461058E-01 .559905E-01 .320735E-01 .04191 .032385 bezier .041076 .280759E-01 .488798E-01 .212882E-01 .05334 .01778 bezier .708182E-01 .327459E-02 .102549 .101814E-01 .106045 .034925 aline .10668 .0381 aline .107315 .038735 aline .107315 .04318 aline .10795 .043815 aline .10795 .051435 aline .108585 .05207 aline .108585 .093345 bezier .107862 .107099 .10637 .126609 .089535 .13081 bezier .071705 .131965 .539848E-01 .122637 .04445 .107315 aline .04318 .10668 aline .03683 .10668 aline .03556 .107315 aline .03302 .109855 aline .032385 .111125 aline .032385 .22606 aline .03302 .22733 aline .03429 .2286 aline .03556 .229235 closepath ! end of curve fill dfont endchar dfont char="6" !-------------- Beginning of new char. dfont wid=.500002 hei=.644444 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .113665 .229235 bezier .140247 .228379 .160345 .196899 .14859 .17272 bezier .138492 .157454 .111165 .162232 .108585 .180975 bezier .105897 .194084 .116715 .206956 .12954 .20701 bezier .107833 .230189 .705665E-01 .207141 .06731 .17907 bezier .637123E-01 .163093 .624958E-01 .145582 .0635 .128905 bezier .688462E-01 .139416 .813996E-01 .147421 .09271 .145415 bezier .128543 .149036 .159811 .115412 .160655 .08128 bezier .161744 .594961E-01 .159509 .365049E-01 .144145 .019685 bezier .115296 -.169011E-01 .501414E-01 -.117682E-01 .029845 .031115 bezier .128043E-01 .660364E-01 .138213E-01 .105156 .017145 .14224 bezier .221042E-01 .18421 .543519E-01 .226771 .09906 .2286 aline .099695 .229235 aline .113665 .229235 closepath ! end of curve ! start of curve amove .084455 .132715 bezier .676553E-01 .127829 .659814E-01 .106384 .0635 .09271 aline .0635 .083185 aline .062865 .08255 aline .062865 .06223 bezier .640496E-01 .457242E-01 .616375E-01 .254589E-01 .076835 .01397 bezier .915683E-01 .322026E-02 .112843 .165579E-01 .112395 .033655 aline .112395 .043815 aline .11303 .04445 aline .11303 .1016 bezier .113 .113542 .110587 .129776 .095885 .132715 aline .09525 .13335 aline .08509 .13335 aline .084455 .132715 closepath ! end of curve fill dfont endchar dfont char="7" !-------------- Beginning of new char. dfont wid=.500002 hei=.644444 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .04826 .236855 bezier .508014E-01 .226363 .640013E-01 .227839 .071755 .22606 aline .08255 .22606 aline .083185 .225425 aline .17018 .225425 aline .17018 .213995 bezier .151691 .185158 .127102 .160512 .11176 .12954 bezier .102231 .103297 .101236 .776587E-01 .099695 .0508 aline .099695 .013335 bezier .974842E-01 -.87296E-02 .619135E-01 -.107614E-01 .05715 .010795 bezier .524063E-01 .729287E-01 .859474E-01 .132767 .12446 .179705 aline .125095 .180975 aline .12573 .18161 aline .125095 .182245 aline .065405 .182245 aline .06477 .18161 aline .051435 .18161 bezier .396342E-01 .182022 .404717E-01 .165959 .037465 .158115 aline .037465 .15494 aline .03683 .154305 aline .03683 .150495 aline .036195 .147955 aline .02032 .147955 bezier .242835E-01 .177612 .288432E-01 .207023 .032385 .236855 closepath ! end of curve fill dfont endchar dfont char="8" !-------------- Beginning of new char. dfont wid=.500002 hei=.644444 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .09652 .229235 bezier .121495 .228227 .149512 .210865 .15113 .183515 bezier .154276 .160993 .139662 .140429 .120809 .129858 bezier .146069 .116258 .165187 .869822E-01 .16002 .057785 bezier .159904 .237473E-01 .128135 -.345663E-02 .095885 -.004445 bezier .063764 -.738005E-02 .237693E-01 .634637E-02 .01651 .04191 bezier .938626E-02 .06954 .251364E-01 .988529E-01 .050165 .11176 aline .0508 .112395 aline .529167E-01 .113453 bezier .401218E-01 .124712 .025467 .14064 .0254 .16002 bezier .191687E-01 .192599 .452293E-01 .228655 .08001 .2286 aline .080645 .229235 aline .09652 .229235 closepath ! end of curve ! start of curve amove .08128 .2159 bezier .637857E-01 .216365 .448361E-01 .199812 .051435 .18161 bezier .585498E-01 .163787 .794459E-01 .15862 .093345 .14732 bezier .983115E-01 .145292 .103132 .1381 .108585 .140335 bezier .132419 .159151 .132728 .205015 .10033 .21463 aline .09779 .215265 aline .097155 .2159 aline .093345 .2159 aline .09271 .216535 aline .081915 .216535 aline .08128 .2159 closepath ! end of curve ! start of curve amove .067945 .10414 bezier .394968E-01 .837444E-01 .348556E-01 .308763E-01 .069215 .01397 bezier .921089E-01 .352878E-02 .127466 .013962 .13081 .04191 bezier .133627 .626271E-01 .115064 .761853E-01 .09906 .08509 bezier .886467E-01 .909804E-01 .778955E-01 .997168E-01 .067945 .10414 closepath ! end of curve fill dfont endchar dfont char="9" !-------------- Beginning of new char. dfont wid=.500002 hei=.644444 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .09652 .229235 bezier .133623 .226095 .155861 .187807 .158115 .15367 aline .15875 .153035 aline .15875 .14859 aline .159385 .147955 aline .159385 .141605 aline .16002 .14097 aline .16002 .131445 aline .160655 .13081 aline .160655 .10033 bezier .159597 .574329E-01 .136578 .57239E-02 .0889 -.003175 bezier .653913E-01 -.841316E-02 .342123E-01 -.116784E-02 .026035 .024765 bezier .211821E-01 .381392E-01 .239968E-01 .576285E-01 .04064 .06096 aline .0508 .06096 bezier .727734E-01 .572213E-01 .726591E-01 .022054 .0508 .018415 aline .04953 .01778 bezier .684223E-01 .214724E-02 .979374E-01 .01206 .106045 .034925 bezier .112667 .546514E-01 .113141 .753392E-01 .112395 .095885 bezier .107078 .853345E-01 .944973E-01 .773662E-01 .083185 .079375 bezier .471599E-01 .758143E-01 .158421E-01 .109817 .01524 .144145 bezier .143055E-01 .164661 .160594E-01 .186138 .029845 .202565 bezier .423331E-01 .21806 .612253E-01 .228546 .080645 .229235 aline .09652 .229235 closepath ! end of curve ! start of curve amove .08509 .2159 bezier .677484E-01 .214749 .061803 .195057 .0635 .18034 aline .062865 .179705 aline .062865 .123825 bezier .630176E-01 .111851 .065123 .950494E-01 .08001 .092075 bezier .947489E-01 .870841E-01 .106884 .101131 .10922 .114935 bezier .114842 .14028 .113496 .168518 .111125 .19431 bezier .10858 .206134 .980761E-01 .219738 .08509 .2159 closepath ! end of curve fill dfont endchar dfont char=":" !-------------- Beginning of new char. dfont wid=.277779 hei=.444445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .05334 .15494 bezier .770409E-01 .152249 .849186E-01 .117449 .064135 .10541 bezier .459719E-01 .917788E-01 .179451E-01 .109908 .022225 .13208 aline .023495 .13716 aline .026035 .14224 aline .02667 .142875 aline .027305 .144145 aline .03302 .14986 aline .03429 .150495 aline .034925 .15113 aline .038735 .153035 aline .042545 .154305 aline .045085 .15494 closepath ! end of curve ! start of curve amove .05334 .05334 bezier .770409E-01 .506488E-01 .849186E-01 .158493E-01 .064135 .00381 bezier .045972 -.982129E-02 .179452E-01 .830744E-02 .022225 .03048 aline .023495 .03556 aline .026035 .04064 aline .02667 .041275 aline .027305 .042545 aline .03302 .04826 aline .03429 .048895 aline .034925 .04953 aline .038735 .051435 aline .042545 .052705 aline .045085 .05334 closepath ! end of curve fill dfont endchar dfont char=";" !-------------- Beginning of new char. dfont wid=.277779 hei=.444445 dep=.194445 italic=0 set path ! start of curve newpath ! start of curve amove .05334 .15494 bezier .770409E-01 .152249 .849186E-01 .117449 .064135 .10541 bezier .459719E-01 .917788E-01 .179451E-01 .109908 .022225 .13208 aline .023495 .13716 aline .026035 .14224 aline .02667 .142875 aline .027305 .144145 aline .03302 .14986 aline .03429 .150495 aline .034925 .15113 aline .038735 .153035 aline .042545 .154305 aline .045085 .15494 closepath ! end of curve ! start of curve amove .05334 .05334 bezier .777064E-01 .468942E-01 .798007E-01 .154784E-01 .0762 -.004445 bezier .738788E-01 -.294697E-01 .607157E-01 -.530992E-01 .04191 -.069215 aline .03937 -.069215 aline .0381 -.06858 aline .03429 -.06477 aline .033655 -.0635 bezier .372713E-01 -.543919E-01 .475585E-01 -.483403E-01 .051435 -.038735 bezier .584409E-01 -.262993E-01 .656491E-01 -.101382E-01 .638175E-01 .301625E-02 bezier .480683E-01 -.691842E-02 .239977E-01 .285771E-02 .022225 .022225 bezier .020003 .365366E-01 .298589E-01 .513937E-01 .04445 .05334 closepath ! end of curve ! start of curve amove .064135 .003175 aline .06477 .00254 aline .065405 .003175 aline .06477 .00381 aline .064135 .003175 closepath ! end of curve fill dfont endchar dfont char="<" !-------------- Beginning of new char. dfont wid=.305555 hei=.5 dep=.194445 italic=0 set path ! start of curve newpath ! start of curve amove .057785 .174625 bezier .814791E-01 .171941 .893029E-01 .137143 .06858 .125095 bezier .495399E-01 .110674 .202531E-01 .131541 .027305 .154305 aline .028575 .158115 aline .03048 .161925 aline .031115 .16256 aline .03175 .16383 aline .037465 .169545 aline .038735 .17018 aline .03937 .170815 aline .04318 .17272 aline .04699 .17399 aline .04953 .174625 closepath ! end of curve ! start of curve amove .05842 .09525 bezier .648691E-01 .906675E-01 .613781E-01 .811034E-01 .064135 .07493 bezier .688432E-01 .031844 .772571E-01 -.970708E-02 .080645 -.05334 bezier .748989E-01 -.07942 .324161E-01 -.07942 .02667 -.05334 bezier .312892E-01 -.353842E-02 .393032E-01 .440297E-01 .046355 .093345 aline .047625 .094615 aline .048895 .09525 closepath ! end of curve fill dfont endchar dfont char="=" !-------------- Beginning of new char. dfont wid=.777781 hei=.391111 dep=-.108889 italic=0 set path ! start of curve newpath ! start of curve amove .243205 .136525 bezier .254299 .135748 .25644 .118866 .245745 .11557 aline .027305 .11557 aline .024765 .11684 aline .02159 .120015 aline .020955 .121285 aline .02032 .12319 aline .02032 .12827 aline .020955 .130175 aline .02159 .131445 aline .024765 .13462 aline .027305 .13589 aline .029845 .136525 closepath ! end of curve ! start of curve amove .245745 .057785 bezier .25644 .544892E-01 .254299 .376074E-01 .243205 .03683 aline .029845 .03683 bezier .187505E-01 .376074E-01 .166104E-01 .544892E-01 .027305 .057785 closepath ! end of curve fill dfont endchar dfont char=">" !-------------- Beginning of new char. dfont wid=.472224 hei=.5 dep=.194445 italic=0 set path ! start of curve newpath ! start of curve amove .081915 .174625 bezier .105609 .171941 .113433 .137143 .09271 .125095 bezier .736699E-01 .110674 .443831E-01 .131541 .051435 .154305 aline .052705 .158115 aline .05461 .161925 aline .055245 .16256 aline .05588 .16383 aline .061595 .169545 aline .062865 .17018 aline .0635 .170815 aline .06731 .17272 aline .07112 .17399 aline .07366 .174625 closepath ! end of curve ! start of curve amove .08255 .09525 aline .08382 .094615 aline .08509 .093345 bezier .886776E-01 .587602E-01 .809424E-01 .251157E-01 .066675 -.006985 aline .06604 -.01016 aline .065405 -.010795 aline .065405 -.015875 aline .06477 -.01651 aline .06477 -.04699 aline .065405 -.047625 bezier .635118E-01 -.581064E-01 .777563E-01 -.606838E-01 .08509 -.05842 bezier .958027E-01 -.579743E-01 .110775 -.541614E-01 .117475 -.04699 bezier .954749E-01 -.421935E-01 .981053E-01 -.610557E-02 .12065 -.004445 bezier .138619 -.138435E-02 .15057 -.021091 .144145 -.03683 bezier .136424 -.606783E-01 .108363 -.694726E-01 .08636 -.07112 bezier .626669E-01 -.072576 .324773E-01 -.688764E-01 .02286 -.04318 bezier .163679E-01 -.238716E-01 .213437E-01 .376733E-03 .040005 .01143 bezier .633093E-01 .315141E-01 .727066E-01 .622611E-01 .06985 .092075 aline .070485 .093345 aline .071755 .094615 aline .073025 .09525 closepath ! end of curve fill dfont endchar dfont char="?" !-------------- Beginning of new char. dfont wid=.472224 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .09017 .244475 bezier .113105 .243927 .142795 .232307 .145415 .205105 bezier .148411 .185474 .135465 .168059 .118745 .159385 bezier .943458E-01 .141862 .822545E-01 .111468 .085725 .081915 aline .08509 .080645 aline .08382 .079375 aline .08255 .07874 aline .073025 .07874 aline .071755 .079375 aline .070485 .080645 bezier .662734E-01 .115126 .757877E-01 .150619 .097155 .178435 bezier .102336 .193291 .102807 .210607 .09779 .225425 bezier .835881E-01 .237854 .605534E-01 .23271 .471488E-01 .221298 bezier .665831E-01 .217291 .697902E-01 .186768 .0508 .179705 bezier .354998E-01 .171769 .151556E-01 .188153 .020955 .205105 bezier .230566E-01 .229139 .049306 .242599 .070485 .244475 aline .09017 .244475 closepath ! end of curve ! start of curve amove .081915 .05334 bezier .105609 .506557E-01 .113433 .158581E-01 .09271 .00381 bezier .736699E-01 -.106106E-01 .443831E-01 .102563E-01 .051435 .03302 aline .052705 .03683 aline .05461 .04064 aline .055245 .041275 aline .05588 .042545 aline .061595 .04826 aline .062865 .048895 aline .0635 .04953 aline .06731 .051435 aline .07112 .052705 aline .07366 .05334 closepath ! end of curve fill dfont endchar dfont char="@" !-------------- Beginning of new char. dfont wid=.777781 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .14605 .244475 bezier .192702 .242819 .236733 .209022 .24765 .16256 bezier .254856 .131789 .255127 .991158E-01 .245745 .06858 bezier .240163 .520376E-01 .222228 .403574E-01 .205105 .045085 aline .200025 .045085 aline .19939 .04572 aline .196215 .04572 aline .191135 .04699 aline .18542 .048895 aline .17907 .05207 aline .178435 .052705 aline .177165 .05334 aline .172085 .05842 bezier .138307 .266684E-01 .774585E-01 .520652E-01 .06985 .09652 bezier .614009E-01 .131512 .713101E-01 .177302 .108585 .192405 bezier .135614 .20449 .171123 .195739 .18415 .16764 aline .202565 .16764 aline .203835 .167005 aline .20574 .1651 aline .20574 .06985 bezier .206216 .624886E-01 .21238 .526436E-01 .22098 .057785 bezier .233499 .631769E-01 .233881 .794699E-01 .23622 .09017 aline .23622 .09906 aline .236855 .099695 aline .236855 .130175 bezier .23514 .170632 .211839 .216364 .16891 .22733 bezier .122194 .24369 .619047E-01 .221199 .045085 .17145 bezier .028505 .125092 .334514E-01 .671597E-01 .071755 .03175 bezier .107271 .300923E-02 .154948 .62928E-02 .19558 .018415 bezier .206788 .02154 .217533 .260214E-01 .227965 .031115 aline .249555 .031115 aline .250825 .03048 aline .25273 .028575 bezier .252888 .192262E-01 .239483 .019151 .233045 .01524 bezier .189499 -.595613E-03 .144077 -.852965E-02 .09906 .00254 bezier .511515E-01 .148059E-01 .214675E-01 .641817E-01 .02032 .11049 bezier .170668E-01 .155733 .340885E-01 .20674 .0762 .22987 bezier .977818E-01 .241856 .122005 .245492 .14605 .244475 closepath ! end of curve ! start of curve amove .13335 .184785 bezier .111774 .1781 .109315 .150126 .10668 .13208 bezier .106474 .107077 .106305 .788531E-01 .12573 .060325 bezier .139644 .508899E-01 .157992 .610271E-01 .16637 .07366 aline .16637 .1651 bezier .168095 .169615 .160544 .175084 .156845 .178435 aline .155575 .17907 aline .15494 .179705 aline .14859 .18288 aline .14478 .18415 aline .144145 .184785 aline .14097 .184785 aline .140335 .18542 aline .133985 .18542 aline .13335 .184785 closepath ! end of curve fill dfont endchar dfont char="A" !-------------- Beginning of new char. dfont wid=.755559 hei=.686111 dep=0 italic=0 dfont fby="C" kadd=-.0277786 dfont fby="G" kadd=-.0277786 dfont fby="O" kadd=-.0277786 dfont fby="Q" kadd=-.0277786 dfont fby="T" kadd=-.083334 dfont fby="U" kadd=-.0277786 dfont fby="V" kadd=-.111112 dfont fby="W" kadd=-.111112 dfont fby="Y" kadd=-.083334 dfont fby="t" kadd=-.0277786 set path ! start of curve newpath ! start of curve amove .137795 .244475 aline .1397 .24384 aline .14097 .243205 bezier .150886 .227708 .153925 .208162 .16129 .191135 bezier .181638 .132427 .202587 .739686E-01 .222885 .01524 aline .25273 .01524 aline .25273 -.000635 aline .24384 -.000635 aline .243205 0 aline .20955 0 aline .208915 .000635 aline .192405 .000635 aline .19177 0 aline .154305 0 aline .15367 -.000635 aline .14351 -.000635 aline .14351 .01524 aline .172085 .01524 bezier .16797 .031118 .161292 .476294E-01 .155575 .0635 aline .07874 .0635 bezier .732505E-01 .049 .068877 .338496E-01 .062865 .019685 aline .064135 .018415 aline .06604 .01778 aline .069215 .017145 aline .06985 .01651 aline .07366 .01651 aline .074295 .015875 aline .08001 .015875 aline .080645 .01524 aline .090805 .01524 aline .090805 -.000635 aline .08382 -.000635 aline .083185 0 aline .055245 0 aline .05461 .000635 aline .04318 .000635 aline .042545 0 aline .019685 0 aline .01905 -.000635 aline .0127 -.000635 aline .0127 .01524 aline .027305 .01524 aline .02794 .015875 aline .033655 .015875 aline .03429 .01651 aline .0381 .01651 aline .038735 .017145 aline .041275 .01778 aline .043815 .01905 bezier .698468E-01 .092923 .953892E-01 .166999 .12192 .240665 aline .12446 .243205 aline .12573 .24384 aline .127635 .244475 closepath ! end of curve ! start of curve amove .11684 .172085 bezier .106503 .141196 .094001 .110271 .08509 .079375 aline .14986 .079375 bezier .140197 .109623 .12808 .141748 .117475 .17272 aline .11684 .172085 closepath ! end of curve fill dfont endchar dfont char="B" !-------------- Beginning of new char. dfont wid=.711115 hei=.686111 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .153035 .24003 bezier .18358 .23958 .218148 .218769 .220345 .18542 bezier .224306 .154812 .198102 .130301 .169545 .125095 bezier .198566 .122847 .227921 .10105 .22987 .070485 bezier .234369 .349891E-01 .204496 .17178E-02 .16891 .000635 aline .168275 0 aline .163195 0 aline .16256 -.000635 aline .012065 -.000635 aline .012065 .01524 aline .04445 .01524 aline .045085 .015875 aline .045085 .22352 aline .04445 .224155 aline .012065 .224155 aline .012065 .24003 aline .153035 .24003 closepath ! end of curve ! start of curve amove .09017 .22352 aline .09017 .131445 aline .090805 .13081 aline .140335 .13081 bezier .165835 .136621 .173829 .166905 .17018 .18923 bezier .169375 .203348 .162582 .220493 .14732 .224155 aline .090805 .224155 aline .09017 .22352 closepath ! end of curve ! start of curve amove .09017 .11811 aline .09017 .015875 aline .090805 .01524 aline .147955 .01524 bezier .167599 .183067E-01 .176872 .394778E-01 .178435 .056515 bezier .178776 .775566E-01 .177975 .103667 .158115 .116205 aline .154305 .117475 aline .15113 .11811 aline .150495 .118745 aline .090805 .118745 aline .09017 .11811 closepath ! end of curve fill dfont endchar dfont char="C" !-------------- Beginning of new char. dfont wid=.722224 hei=.686111 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .1524 .24384 bezier .169811 .242131 .187363 .234296 .200343 .222409 bezier .209103 .228999 .216482 .237505 .225425 .24384 aline .230505 .24384 aline .231775 .243205 aline .23368 .2413 aline .23368 .151765 aline .231775 .14986 aline .230505 .149225 aline .219075 .149225 aline .217805 .14986 bezier .214005 .156362 .215407 .164636 .21209 .172085 bezier .205029 .202975 .176553 .232829 .14351 .22733 bezier .109313 .226155 .080424 .197984 .076835 .16383 aline .0762 .163195 aline .0762 .16002 aline .075565 .159385 aline .075565 .155575 aline .07493 .15494 aline .07493 .149225 aline .074295 .14859 aline .074295 .139065 aline .07366 .13843 aline .07366 .1016 bezier .074309 .698649E-01 .853683E-01 .304641E-01 .11938 .01778 bezier .149639 .379292E-02 .189439 .132981E-01 .20701 .04318 aline .21209 .05334 aline .215265 .062865 aline .216535 .069215 aline .21717 .06985 aline .21717 .074295 aline .217805 .07493 aline .217805 .083185 aline .21971 .08509 aline .22098 .085725 aline .230505 .085725 aline .231775 .08509 aline .23368 .083185 bezier .23637 .380516E-01 .196021 -.183149E-02 .1524 -.004445 bezier .104957 -.799339E-02 .521115E-01 .148979E-01 .032385 .06096 bezier .954297E-02 .112892 .174942E-01 .180995 .0635 .21844 bezier .889374E-01 .238088 .121284 .245166 .1524 .24384 closepath ! end of curve fill dfont endchar dfont char="D" !-------------- Beginning of new char. dfont wid=.76667 hei=.686111 dep=0 italic=0 dfont fby="A" kadd=-.0277786 dfont fby="V" kadd=-.0277786 dfont fby="W" kadd=-.0277786 dfont fby="X" kadd=-.0277786 dfont fby="Y" kadd=-.0277786 set path ! start of curve newpath ! start of curve amove .150495 .24003 bezier .196627 .238408 .2368 .201102 .24511 .155575 bezier .255105 .107956 .247832 .484135E-01 .20447 .01778 bezier .189037 .663919E-02 .169144 .91642E-03 .15113 -.000635 aline .012065 -.000635 aline .012065 .01524 aline .04445 .01524 aline .045085 .015875 aline .045085 .22352 aline .04445 .224155 aline .012065 .224155 aline .012065 .24003 aline .150495 .24003 closepath ! end of curve ! start of curve amove .092075 .22352 aline .092075 .015875 aline .09271 .01524 aline .13589 .01524 bezier .160839 .174222E-01 .186989 .343235E-01 .192405 .06096 bezier .195918 .718277E-01 .196276 .823736E-01 .197485 .093345 aline .197485 .14224 bezier .196716 .171131 .18775 .208459 .155575 .219075 aline .14986 .22098 aline .14478 .22225 aline .144145 .222885 aline .14097 .222885 aline .140335 .22352 aline .13589 .22352 aline .135255 .224155 aline .09271 .224155 aline .092075 .22352 closepath ! end of curve fill dfont endchar dfont char="E" !-------------- Beginning of new char. dfont wid=.655559 hei=.686111 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .19939 .238125 bezier .203138 .209668 .206478 .181837 .210185 .15367 aline .19431 .15367 bezier .191436 .176506 .187486 .208118 .16129 .21717 aline .155575 .219075 aline .149225 .220345 aline .14859 .22098 aline .145415 .22098 aline .14478 .221615 aline .13843 .221615 aline .137795 .22225 aline .094615 .22225 aline .09398 .221615 aline .09398 .13208 bezier .109874 .129007 .133976 .133081 .135255 .15367 aline .13589 .154305 aline .13589 .159385 aline .136525 .16002 aline .136525 .17272 aline .1524 .17272 aline .1524 .074295 aline .136525 .074295 bezier .137035 .889867E-01 .136117 .109816 .11811 .113665 aline .11557 .1143 aline .114935 .114935 aline .111125 .114935 aline .11049 .11557 aline .094615 .11557 aline .09398 .114935 aline .09398 .015875 aline .094615 .01524 aline .1397 .01524 bezier .161779 .164696E-01 .187624 .279508E-01 .19431 .05207 bezier .199236 .662982E-01 .202007 .812739E-01 .20447 .09525 aline .220345 .09525 bezier .215039 .632412E-01 .209817 .316234E-01 .20447 -.000635 aline .012065 -.000635 aline .012065 .01524 aline .04445 .01524 aline .045085 .015875 aline .045085 .221615 aline .04445 .22225 aline .012065 .22225 aline .012065 .238125 closepath ! end of curve fill dfont endchar dfont char="F" !-------------- Beginning of new char. dfont wid=.627782 hei=.686111 dep=0 italic=0 dfont fby="A" kadd=-.111112 dfont fby="C" kadd=-.0277786 dfont fby="G" kadd=-.0277786 dfont fby="O" kadd=-.0277786 dfont fby="Q" kadd=-.0277786 dfont fby="a" kadd=-.083334 dfont fby="e" kadd=-.083334 dfont fby="o" kadd=-.083334 dfont fby="r" kadd=-.083334 dfont fby="u" kadd=-.083334 set path ! start of curve newpath ! start of curve amove .19431 .238125 bezier .198058 .209668 .201398 .181837 .205105 .15367 aline .18923 .15367 bezier .186128 .175812 .183284 .206249 .15875 .216535 aline .15113 .219075 aline .14859 .21971 aline .145415 .220345 aline .14478 .22098 aline .141605 .22098 aline .14097 .221615 aline .135255 .221615 aline .13462 .22225 aline .094615 .22225 aline .09398 .221615 aline .09398 .127635 bezier .109298 .124172 .132217 .129995 .132715 .149225 aline .13335 .14986 aline .13335 .15494 aline .133985 .155575 aline .133985 .168275 aline .14986 .168275 aline .14986 .06985 aline .133985 .06985 bezier .134823 .853755E-01 .133156 .107021 .113665 .109855 aline .11303 .11049 aline .10922 .11049 aline .108585 .111125 aline .094615 .111125 aline .09398 .11049 aline .09398 .015875 aline .094615 .01524 aline .135255 .01524 aline .135255 -.000635 aline .12446 -.000635 aline .123825 0 aline .08001 0 aline .079375 .000635 aline .06096 .000635 aline .060325 0 aline .022225 0 aline .02159 -.000635 aline .012065 -.000635 aline .012065 .01524 aline .04445 .01524 aline .045085 .015875 aline .045085 .221615 aline .04445 .22225 aline .012065 .22225 aline .012065 .238125 aline .19431 .238125 closepath ! end of curve fill dfont endchar dfont char="G" !-------------- Beginning of new char. dfont wid=.786115 hei=.686111 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .1524 .24384 bezier .169811 .242131 .187363 .234296 .200343 .222409 bezier .209103 .228999 .216482 .237505 .225425 .24384 aline .230505 .24384 aline .231775 .243205 aline .23368 .2413 aline .23368 .151765 aline .231775 .14986 aline .230505 .149225 aline .219075 .149225 aline .217805 .14986 bezier .214005 .156362 .215407 .164636 .21209 .172085 bezier .205029 .202975 .176553 .232829 .14351 .22733 bezier .109313 .226155 .080424 .197984 .076835 .16383 aline .0762 .163195 aline .0762 .16002 aline .075565 .159385 aline .075565 .155575 aline .07493 .15494 aline .07493 .149225 aline .074295 .14859 aline .074295 .139065 aline .07366 .13843 aline .07366 .1016 bezier .748853E-01 .734327E-01 .822882E-01 .388509E-01 .109855 .02286 bezier .13121 .111916E-01 .161879 .361979E-02 .179705 .024765 aline .18288 .031115 aline .183515 .03302 aline .18415 .036195 aline .184785 .03683 aline .184785 .079375 aline .18415 .08001 aline .14097 .08001 aline .14097 .095885 aline .1524 .095885 aline .153035 .09525 aline .19812 .09525 aline .198755 .094615 aline .216535 .094615 aline .21717 .09525 aline .249555 .09525 aline .25019 .095885 aline .25781 .095885 aline .25781 .08001 aline .234315 .08001 aline .23368 .079375 aline .23368 .001905 aline .231775 0 aline .230505 -.000635 bezier .217897 .244457E-02 .205342 .919413E-02 .19558 .01778 bezier .173838 -.973189E-02 .134565 -.702413E-02 .104775 .000635 bezier .553171E-01 .120634E-01 .021819 .607217E-01 .02032 .10922 bezier .159575E-01 .159269 .040493 .215076 .09017 .23368 bezier .110487 .242352 .13076 .244264 .1524 .24384 closepath ! end of curve fill dfont endchar dfont char="H" !-------------- Beginning of new char. dfont wid=.783336 hei=.686111 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .02159 .24003 aline .022225 .239395 aline .060325 .239395 aline .06096 .23876 aline .078105 .23876 aline .07874 .239395 aline .11684 .239395 aline .117475 .24003 aline .127 .24003 aline .127 .224155 aline .094615 .224155 aline .09398 .22352 aline .09398 .13335 aline .094615 .132715 aline .180975 .132715 aline .18161 .13335 aline .18161 .22352 aline .180975 .224155 aline .14859 .224155 aline .14859 .24003 aline .158115 .24003 aline .15875 .239395 aline .19685 .239395 aline .197485 .23876 aline .21463 .23876 aline .215265 .239395 aline .253365 .239395 aline .254 .24003 aline .263525 .24003 aline .263525 .224155 aline .23114 .224155 aline .230505 .22352 aline .230505 .015875 aline .23114 .01524 aline .263525 .01524 aline .263525 -.000635 aline .254 -.000635 aline .253365 0 aline .215265 0 aline .21463 .000635 aline .197485 .000635 aline .19685 0 aline .15875 0 aline .158115 -.000635 aline .14859 -.000635 aline .14859 .01524 aline .180975 .01524 aline .18161 .015875 aline .18161 .116205 aline .180975 .11684 aline .094615 .11684 aline .09398 .116205 aline .09398 .015875 aline .094615 .01524 aline .127 .01524 aline .127 -.000635 aline .117475 -.000635 aline .11684 0 aline .07874 0 aline .078105 .000635 aline .06096 .000635 aline .060325 0 aline .022225 0 aline .02159 -.000635 aline .012065 -.000635 aline .012065 .01524 aline .04445 .01524 aline .045085 .015875 aline .045085 .22352 aline .04445 .224155 aline .012065 .224155 aline .012065 .24003 aline .02159 .24003 closepath ! end of curve fill dfont endchar dfont char="I" !-------------- Beginning of new char. dfont wid=.397224 hei=.686111 dep=0 italic=0 dfont fby="I" kadd=.0277786 set path ! start of curve newpath ! start of curve amove .020955 .24003 aline .02159 .239395 aline .060325 .239395 aline .06096 .23876 aline .079375 .23876 aline .08001 .239395 aline .118745 .239395 aline .11938 .24003 aline .12954 .24003 aline .12954 .224155 aline .09525 .224155 aline .094615 .22352 aline .094615 .015875 aline .09525 .01524 aline .12954 .01524 aline .12954 -.000635 aline .11938 -.000635 aline .118745 0 aline .08001 0 aline .079375 .000635 aline .06096 .000635 aline .060325 0 aline .02159 0 aline .020955 -.000635 aline .010795 -.000635 aline .010795 .01524 aline .045085 .01524 aline .04572 .015875 aline .04572 .22352 aline .045085 .224155 aline .010795 .224155 aline .010795 .24003 aline .020955 .24003 closepath ! end of curve fill dfont endchar dfont char="J" !-------------- Beginning of new char. dfont wid=.516668 hei=.686111 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .057785 .24003 aline .05842 .239395 aline .102235 .239395 aline .10287 .23876 aline .120015 .23876 aline .12065 .239395 aline .153035 .239395 aline .15367 .24003 aline .16129 .24003 aline .16129 .224155 aline .13716 .224155 aline .136525 .22352 aline .136525 .043815 bezier .132669 .126538E-01 .995445E-01 -.339899E-02 .071755 -.004445 bezier .450271E-01 -.662634E-02 .100156E-01 .154643E-02 .001905 .031115 bezier -.211066E-02 .458126E-01 .662133E-02 .628421E-01 .022225 .065405 bezier .414967E-01 .696873E-01 .590457E-01 .505728E-01 .05334 .03175 aline .05207 .02794 aline .0508 .0254 aline .050165 .024765 aline .04953 .023495 aline .043815 .01778 aline .042545 .017145 aline .04191 .01651 aline .0381 .014605 aline .036195 .01397 bezier .050689 .646865E-02 .715991E-01 .319041E-02 .081915 .01905 aline .085725 .02667 aline .08636 .028575 aline .08763 .033655 aline .088265 .03683 aline .0889 .037465 aline .0889 .042545 aline .089535 .04318 aline .089535 .22352 aline .0889 .224155 aline .046355 .224155 aline .046355 .24003 aline .057785 .24003 closepath ! end of curve fill dfont endchar dfont char="K" !-------------- Beginning of new char. dfont wid=.783338 hei=.686111 dep=0 italic=0 dfont fby="C" kadd=-.0277786 dfont fby="G" kadd=-.0277786 dfont fby="O" kadd=-.0277786 dfont fby="Q" kadd=-.0277786 set path ! start of curve newpath ! start of curve amove .02159 .24003 aline .022225 .239395 aline .060325 .239395 aline .06096 .23876 aline .078105 .23876 aline .07874 .239395 aline .11684 .239395 aline .117475 .24003 aline .127 .24003 aline .127 .224155 aline .094615 .224155 aline .09398 .22352 aline .09398 .116205 aline .094615 .11557 aline .09652 .117475 aline .09779 .11811 aline .132715 .153035 aline .133985 .15367 aline .168275 .18796 aline .169545 .188595 aline .200025 .219075 aline .200501 .220028 aline .200025 .22098 aline .19812 .221615 aline .19177 .222885 aline .191135 .22352 aline .186055 .22352 aline .18542 .224155 aline .178435 .224155 aline .178435 .24003 aline .186055 .24003 aline .18669 .239395 aline .219075 .239395 aline .21971 .23876 aline .23114 .23876 aline .231775 .239395 aline .25019 .239395 aline .250825 .24003 aline .25527 .24003 aline .25527 .224155 aline .24257 .224155 aline .241935 .22352 aline .235585 .22352 aline .23495 .222885 aline .23114 .222885 aline .230505 .22225 aline .227965 .221615 aline .22606 .22098 aline .22352 .21971 aline .19812 .19431 aline .19685 .193675 aline .161925 .15875 aline .160655 .158115 aline .15113 .14859 bezier .176638 .105122 .206398 .617481E-01 .23368 .018415 aline .23622 .017145 aline .238125 .01651 aline .23876 .015875 aline .243205 .015875 aline .24384 .01524 aline .26035 .01524 aline .26035 -.000635 aline .253365 -.000635 aline .25273 0 aline .22352 0 aline .222885 .000635 aline .207645 .000635 aline .20701 0 aline .16891 0 aline .168275 -.000635 aline .15875 -.000635 aline .15875 .01524 aline .17018 .01524 aline .170815 .015875 aline .17526 .015875 aline .175895 .01651 aline .17907 .017145 bezier .184439 .203011E-01 .175933 .025855 .174625 .029845 bezier .156239 .590166E-01 .137599 .880056E-01 .118745 .11684 aline .09398 .092075 aline .09398 .015875 aline .094615 .01524 aline .127 .01524 aline .127 -.000635 aline .117475 -.000635 aline .11684 0 aline .07874 0 aline .078105 .000635 aline .06096 .000635 aline .060325 0 aline .022225 0 aline .02159 -.000635 aline .012065 -.000635 aline .012065 .01524 aline .04445 .01524 aline .045085 .015875 aline .045085 .22352 aline .04445 .224155 aline .012065 .224155 aline .012065 .24003 aline .02159 .24003 closepath ! end of curve fill dfont endchar dfont char="L" !-------------- Beginning of new char. dfont wid=.600003 hei=.686111 dep=0 italic=0 dfont fby="T" kadd=-.083334 dfont fby="V" kadd=-.111112 dfont fby="W" kadd=-.111112 dfont fby="Y" kadd=-.083334 set path ! start of curve newpath ! start of curve amove .02159 .24003 aline .022225 .239395 aline .060325 .239395 aline .06096 .23876 aline .079375 .23876 aline .08001 .239395 aline .123825 .239395 aline .12446 .24003 aline .135255 .24003 aline .135255 .224155 aline .094615 .224155 aline .09398 .22352 aline .09398 .015875 aline .094615 .01524 aline .125095 .01524 bezier .152435 .181008E-01 .172347 .430369E-01 .175895 .06985 bezier .178169 .779418E-01 .178338 .864593E-01 .179705 .09525 aline .19558 .09525 bezier .191915 .632554E-01 .188516 .316396E-01 .184785 -.000635 aline .012065 -.000635 aline .012065 .01524 aline .04445 .01524 aline .045085 .015875 aline .045085 .22352 aline .04445 .224155 aline .012065 .224155 aline .012065 .24003 aline .02159 .24003 closepath ! end of curve fill dfont endchar dfont char="M" !-------------- Beginning of new char. dfont wid=.950003 hei=.686111 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .09144 .24003 bezier .10223 .234664 .101744 .219825 .107315 .210185 bezier .127106 .15786 .147322 .10571 .167005 .05334 bezier .191149 .114771 .212599 .177887 .23876 .238125 aline .24257 .24003 aline .321945 .24003 aline .321945 .224155 aline .28956 .224155 aline .288925 .22352 aline .288925 .015875 aline .28956 .01524 aline .321945 .01524 aline .321945 -.000635 aline .313055 -.000635 aline .31242 0 aline .276225 0 aline .27559 .000635 aline .25908 .000635 aline .258445 0 aline .22225 0 aline .221615 -.000635 aline .212725 -.000635 aline .212725 .01524 aline .24511 .01524 aline .245745 .015875 aline .245745 .220345 bezier .240005 .210068 .235369 .193582 .22987 .180975 bezier .206369 .121234 .185484 .598407E-01 .16002 .00127 aline .15621 -.000635 bezier .141819 -.293321E-02 .141491 .149574E-01 .136525 .02413 bezier .112363 .881275E-01 .876625E-01 .151902 .0635 .2159 aline .062865 .215265 aline .062865 .019685 aline .064135 .018415 aline .065405 .01778 aline .067945 .017145 aline .06858 .01651 aline .07239 .01651 aline .073025 .015875 aline .08001 .015875 aline .080645 .01524 aline .095885 .01524 aline .095885 -.000635 aline .0889 -.000635 aline .088265 0 aline .06096 0 aline .060325 .000635 aline .047625 .000635 aline .04699 0 aline .019685 0 aline .01905 -.000635 aline .012065 -.000635 aline .012065 .01524 aline .027305 .01524 aline .02794 .015875 aline .034925 .015875 aline .03556 .01651 aline .03937 .01651 aline .040005 .017145 aline .042545 .01778 aline .043815 .018415 aline .045085 .019685 aline .045085 .22352 aline .04445 .224155 aline .012065 .224155 aline .012065 .24003 closepath ! end of curve fill dfont endchar dfont char="N" !-------------- Beginning of new char. dfont wid=.783336 hei=.686111 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .090805 .24003 bezier .103718 .228664 .111849 .211979 .12319 .198755 bezier .152644 .158198 .182341 .117815 .21209 .07747 aline .212725 .078105 aline .212725 .21971 aline .211455 .22098 aline .210185 .221615 aline .207645 .22225 aline .20701 .222885 aline .2032 .222885 aline .202565 .22352 aline .19558 .22352 aline .194945 .224155 aline .179705 .224155 aline .179705 .24003 aline .18669 .24003 aline .187325 .239395 aline .21463 .239395 aline .215265 .23876 aline .227965 .23876 aline .2286 .239395 aline .255905 .239395 aline .25654 .24003 aline .263525 .24003 aline .263525 .224155 aline .248285 .224155 aline .24765 .22352 aline .240665 .22352 aline .24003 .222885 aline .23622 .222885 aline .235585 .22225 aline .233045 .221615 aline .231775 .22098 aline .230505 .21971 aline .230505 .00381 aline .229235 .00127 bezier .22232 -.342299E-02 .212398 -.422742E-03 .20955 .00762 bezier .160704 .737543E-01 .112485 .140341 .0635 .206375 aline .062865 .20574 aline .062865 .019685 aline .064135 .018415 aline .065405 .01778 aline .067945 .017145 aline .06858 .01651 aline .07239 .01651 aline .073025 .015875 aline .08001 .015875 aline .080645 .01524 aline .095885 .01524 aline .095885 -.000635 aline .0889 -.000635 aline .088265 0 aline .06096 0 aline .060325 .000635 aline .047625 .000635 aline .04699 0 aline .019685 0 aline .01905 -.000635 aline .012065 -.000635 aline .012065 .01524 aline .027305 .01524 aline .02794 .015875 aline .034925 .015875 aline .03556 .01651 aline .03937 .01651 aline .040005 .017145 aline .042545 .01778 aline .043815 .018415 aline .045085 .019685 aline .045085 .22352 aline .04445 .224155 aline .012065 .224155 aline .012065 .24003 closepath ! end of curve fill dfont endchar dfont char="O" !-------------- Beginning of new char. dfont wid=.750003 hei=.686111 dep=0 italic=0 dfont fby="A" kadd=-.0277786 dfont fby="V" kadd=-.0277786 dfont fby="W" kadd=-.0277786 dfont fby="X" kadd=-.0277786 dfont fby="Y" kadd=-.0277786 set path ! start of curve newpath ! start of curve amove .140335 .24384 bezier .183602 .242088 .224884 .21061 .23622 .16764 bezier .25022 .118701 .245589 .587566E-01 .20574 .02159 bezier .154119 -.237174E-01 .601019E-01 -.927484E-02 .032385 .056515 bezier .143016E-01 .101327 .153768E-01 .153083 .040005 .19558 bezier .603281E-01 .22976 .1019 .24676 .140335 .24384 closepath ! end of curve ! start of curve amove .126365 .22987 bezier .915218E-01 .226105 .758236E-01 .186452 .07493 .15621 aline .074295 .155575 aline .074295 .14605 aline .07366 .145415 aline .07366 .100965 bezier .755603E-01 .699557E-01 .814593E-01 .028699 .1143 .013335 bezier .142092 .160402E-03 .173182 .230804E-01 .180975 .0508 bezier .186913 .677207E-01 .188703 .839231E-01 .189865 .100965 aline .189865 .145415 bezier .188653 .176964 .178827 .220674 .141605 .229235 aline .14097 .22987 aline .13716 .22987 aline .136525 .230505 aline .127 .230505 aline .126365 .22987 closepath ! end of curve fill dfont endchar dfont char="P" !-------------- Beginning of new char. dfont wid=.683336 hei=.686111 dep=0 italic=0 dfont fby="," kadd=-.083334 dfont fby="." kadd=-.083334 dfont fby="A" kadd=-.083334 dfont fby="a" kadd=-.0277786 dfont fby="e" kadd=-.0277786 dfont fby="o" kadd=-.0277786 set path ! start of curve newpath ! start of curve amove .146685 .24003 bezier .179752 .239352 .217903 .21607 .219075 .17907 bezier .225117 .145547 .197479 .113393 .164465 .10795 aline .158115 .10668 aline .154305 .10668 aline .15367 .106045 aline .14732 .106045 aline .146685 .10541 aline .094615 .10541 aline .09398 .104775 aline .09398 .015875 aline .094615 .01524 aline .127 .01524 aline .127 -.000635 aline .117475 -.000635 aline .11684 0 aline .07874 0 aline .078105 .000635 aline .06096 .000635 aline .060325 0 aline .022225 0 aline .02159 -.000635 aline .012065 -.000635 aline .012065 .01524 aline .04445 .01524 aline .045085 .015875 aline .045085 .22352 aline .04445 .224155 aline .012065 .224155 aline .012065 .24003 aline .146685 .24003 closepath ! end of curve ! start of curve amove .092075 .22352 aline .092075 .120015 aline .09271 .11938 aline .131445 .11938 bezier .146609 .120621 .165892 .12981 .1651 .147955 aline .165735 .14859 aline .165735 .15494 aline .16637 .155575 aline .16637 .18796 bezier .165729 .200411 .161819 .216173 .14732 .220345 aline .14351 .221615 aline .14097 .22225 aline .137795 .222885 aline .13716 .22352 aline .13208 .22352 aline .131445 .224155 aline .09271 .224155 aline .092075 .22352 closepath ! end of curve fill dfont endchar dfont char="Q" !-------------- Beginning of new char. dfont wid=.750003 hei=.686111 dep=.194445 italic=0 set path ! start of curve newpath ! start of curve amove .140335 .24384 bezier .183602 .242088 .224884 .21061 .23622 .16764 bezier .25022 .118701 .245589 .587566E-01 .20574 .02159 bezier .198187 .148436E-01 .188897 .100306E-01 .180499 .47625E-02 bezier .186593 -.925699E-02 .202136 -.205783E-01 .21717 -.014605 aline .21971 -.01397 aline .22352 -.0127 aline .22733 -.010795 aline .23114 -.006985 aline .231775 -.005715 aline .23241 -.00381 aline .233045 -.003175 aline .233045 .000635 aline .234315 .003175 aline .23495 .00381 aline .23749 .00508 aline .240665 .00508 aline .243205 .00381 bezier .247841 -.762985E-02 .243317 -.199737E-01 .241935 -.03175 bezier .237849 -.537358E-01 .218341 -.748414E-01 .19431 -.06858 bezier .165747 -.616972E-01 .164116 -.268019E-01 .160655 -.004445 aline .160111 -.172362E-02 bezier .114509 -.122989E-01 .589251E-01 .479106E-02 .036195 .048895 bezier .143563E-01 .930931E-01 .148047E-01 .144951 .036195 .18923 bezier .553832E-01 .226994 .992945E-01 .247245 .140335 .24384 closepath ! end of curve ! start of curve amove .126365 .22987 bezier .893978E-01 .225592 .742429E-01 .182984 .073025 .15113 aline .07239 .150495 aline .07239 .140335 aline .071755 .1397 aline .071755 .09779 bezier .736909E-01 .713827E-01 .077823 .390901E-01 .100648 .204788E-01 aline .1016 .020955 bezier .974911E-01 .476543E-01 .132846 .632353E-01 .1524 .04699 bezier .159103 .410803E-01 .164566 .340869E-01 .169228 .268288E-01 bezier .186743 .458286E-01 .189949 .740173E-01 .19177 .09779 aline .19177 .1397 bezier .190172 .172368 .181708 .217561 .144145 .2286 aline .141605 .229235 aline .14097 .22987 aline .13716 .22987 aline .136525 .230505 aline .127 .230505 aline .126365 .22987 closepath ! end of curve ! start of curve amove .12827 .04064 bezier .111086 .039294 .10878 .132953E-01 .12573 .009525 bezier .136557 .705594E-02 .14774 .111391E-01 .15748 .01651 bezier .15438 .027569 .147921 .403984E-01 .135255 .041275 aline .128905 .041275 closepath ! end of curve fill dfont endchar dfont char="R" !-------------- Beginning of new char. dfont wid=.759725 hei=.686111 dep=0 italic=0 dfont fby="C" kadd=-.0277786 dfont fby="G" kadd=-.0277786 dfont fby="O" kadd=-.0277786 dfont fby="Q" kadd=-.0277786 dfont fby="T" kadd=-.083334 dfont fby="U" kadd=-.0277786 dfont fby="V" kadd=-.111112 dfont fby="W" kadd=-.111112 dfont fby="Y" kadd=-.083334 dfont fby="t" kadd=-.0277786 set path ! start of curve newpath ! start of curve amove .137795 .24003 bezier .171282 .238854 .21441 .223156 .221615 .184785 bezier .228284 .152816 .200003 .125224 .17018 .118745 aline .168275 .11811 bezier .190646 .110143 .207166 .876042E-01 .206375 .064135 bezier .210669 .469781E-01 .208537 .026359 .22098 .010795 bezier .232238 .213868E-02 .246611 .125338E-01 .24765 .0254 aline .248285 .026035 aline .248285 .02921 aline .24892 .029845 aline .24892 .03556 aline .25019 .0381 aline .250825 .038735 aline .253365 .040005 aline .26035 .040005 aline .26289 .038735 bezier .269718 .211492E-01 .25438 -.155656E-02 .235585 -.004445 bezier .209755 -.463456E-02 .178351 -.335309E-02 .161925 .02032 aline .159385 .0254 aline .15748 .031115 aline .156845 .033655 aline .156845 .03683 aline .15621 .037465 aline .15621 .07874 bezier .154361 .093409 .146012 .110812 .12954 .113665 aline .09271 .113665 aline .092075 .11303 aline .092075 .015875 aline .09271 .01524 aline .125095 .01524 aline .125095 -.000635 aline .11557 -.000635 aline .114935 0 aline .07747 0 aline .076835 .000635 aline .060325 .000635 aline .05969 0 aline .022225 0 aline .02159 -.000635 aline .012065 -.000635 aline .012065 .01524 aline .04445 .01524 aline .045085 .015875 aline .045085 .22352 aline .04445 .224155 aline .012065 .224155 aline .012065 .24003 aline .137795 .24003 closepath ! end of curve ! start of curve amove .092075 .22352 aline .092075 .126365 aline .09271 .12573 aline .128905 .12573 bezier .145244 .126774 .167135 .135366 .16764 .15494 bezier .169332 .173145 .171757 .194249 .161925 .21082 bezier .153684 .220017 .140649 .222969 .12954 .224155 aline .09271 .224155 aline .092075 .22352 closepath ! end of curve fill dfont endchar dfont char="S" !-------------- Beginning of new char. dfont wid=.555557 hei=.686111 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .095885 .24384 bezier .110743 .242273 .127073 .236867 .13843 .22606 aline .155575 .243205 aline .156845 .24384 aline .161925 .24384 aline .163195 .243205 aline .1651 .2413 aline .1651 .163195 aline .163195 .16129 aline .161925 .160655 aline .1524 .160655 aline .15113 .16129 aline .149225 .163195 bezier .148046 .191253 .131287 .224289 .099695 .227965 bezier .814633E-01 .233759 .577543E-01 .223124 .055245 .20193 bezier .502726E-01 .184349 .595458E-01 .161246 .07874 .155575 bezier .108489 .147487 .145258 .145228 .161925 .11557 bezier .18554 .790539E-01 .177471 .194716E-01 .13462 .000635 bezier .106044 -.960871E-02 .725074E-01 -.450755E-02 .473075E-01 .131763E-01 aline .046355 .0127 aline .029845 -.00381 aline .028575 -.004445 aline .023495 -.004445 aline .022225 -.00381 aline .02032 -.001905 aline .02032 .075565 aline .020955 .076835 aline .022225 .078105 aline .023495 .07874 aline .03302 .07874 aline .03429 .078105 aline .036195 .0762 bezier .339198E-01 .471657E-01 .552404E-01 .185881E-01 .08509 .01397 bezier .10303 .84413E-02 .129857 .102659E-01 .13716 .032385 bezier .147929 .566573E-01 .136499 .935981E-01 .106045 .095885 aline .070485 .104775 bezier .156412E-01 .118451 .237621E-02 .199656 .04699 .231775 bezier .611651E-01 .242402 .788048E-01 .244549 .095885 .24384 closepath ! end of curve fill dfont endchar dfont char="T" !-------------- Beginning of new char. dfont wid=.694448 hei=.686111 dep=0 italic=0 dfont fby="A" kadd=-.083334 dfont fby="a" kadd=-.083334 dfont fby="e" kadd=-.083334 dfont fby="o" kadd=-.083334 dfont fby="r" kadd=-.083334 dfont fby="u" kadd=-.083334 dfont fby="y" kadd=-.0277786 set path ! start of curve newpath ! start of curve amove .222885 .23622 bezier .225478 .20809 .227912 .179895 .230505 .151765 aline .21463 .151765 bezier .211799 .171544 .213039 .196661 .19558 .211455 bezier .181119 .221328 .1632 .221396 .146685 .21971 aline .146685 .015875 aline .14732 .01524 aline .193675 .01524 aline .193675 -.000635 aline .18161 -.000635 aline .180975 0 aline .133985 0 aline .13335 .000635 aline .111125 .000635 aline .11049 0 aline .0635 0 aline .062865 -.000635 aline .0508 -.000635 aline .0508 .01524 aline .097155 .01524 aline .09779 .015875 aline .09779 .21971 bezier .759467E-01 .22243 .454985E-01 .22027 .03683 .19558 bezier .317525E-01 .180757 .306453E-01 .166608 .02921 .151765 aline .013335 .151765 bezier .159284E-01 .179895 .183616E-01 .20809 .020955 .23622 aline .222885 .23622 closepath ! end of curve fill dfont endchar dfont char="U" !-------------- Beginning of new char. dfont wid=.769447 hei=.686111 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .02159 .24003 aline .022225 .239395 aline .060325 .239395 aline .06096 .23876 aline .078105 .23876 aline .07874 .239395 aline .11684 .239395 aline .117475 .24003 aline .127 .24003 aline .127 .224155 aline .094615 .224155 aline .09398 .22352 aline .09398 .06477 bezier .942283E-01 .433689E-01 .104963 .171398E-01 .12954 .013335 bezier .160504 .487917E-02 .199819 .236337E-01 .205105 .05842 aline .20574 .061595 aline .206375 .06223 aline .206375 .065405 aline .20701 .06604 aline .20701 .071755 aline .207645 .07239 aline .207645 .21971 aline .206375 .22098 aline .205105 .221615 aline .202565 .22225 aline .20193 .222885 aline .19812 .222885 aline .197485 .22352 aline .1905 .22352 aline .189865 .224155 aline .174625 .224155 aline .174625 .24003 aline .18161 .24003 aline .182245 .239395 aline .20955 .239395 aline .210185 .23876 aline .222885 .23876 aline .22352 .239395 aline .250825 .239395 aline .25146 .24003 aline .258445 .24003 aline .258445 .224155 aline .243205 .224155 aline .24257 .22352 aline .235585 .22352 aline .23495 .222885 aline .23114 .222885 aline .230505 .22225 aline .227965 .221615 aline .226695 .22098 aline .225425 .21971 aline .225425 .070485 bezier .223948 .345184E-01 .19513 -.612162E-03 .15748 -.003175 bezier .114247 -.108416E-01 .587227E-01 .994717E-02 .047625 .057785 aline .04699 .05969 aline .046355 .062865 aline .046355 .06604 aline .04572 .066675 aline .04572 .07112 aline .045085 .071755 aline .045085 .22352 aline .04445 .224155 aline .012065 .224155 aline .012065 .24003 aline .02159 .24003 closepath ! end of curve fill dfont endchar dfont char="V" !-------------- Beginning of new char. dfont wid=.755559 hei=.686111 dep=0 italic=.0138884 dfont fby="A" kadd=-.111112 dfont fby="C" kadd=-.0277786 dfont fby="G" kadd=-.0277786 dfont fby="O" kadd=-.0277786 dfont fby="Q" kadd=-.0277786 dfont fby="a" kadd=-.083334 dfont fby="e" kadd=-.083334 dfont fby="o" kadd=-.083334 dfont fby="r" kadd=-.083334 dfont fby="u" kadd=-.083334 set path ! start of curve newpath ! start of curve amove .01651 .24003 aline .017145 .239395 aline .050165 .239395 aline .0508 .23876 aline .066675 .23876 aline .06731 .239395 aline .10541 .239395 aline .106045 .24003 aline .11557 .24003 aline .11557 .224155 aline .08763 .224155 bezier .106621 .170981 .127721 .116626 .148273 .636588E-01 bezier .169008 .115039 .187624 .168158 .20828 .21971 aline .20701 .22098 aline .205105 .221615 aline .20193 .22225 aline .201295 .222885 aline .19812 .222885 aline .197485 .22352 aline .191135 .22352 aline .1905 .224155 aline .180975 .224155 aline .180975 .24003 aline .18796 .24003 aline .188595 .239395 aline .2159 .239395 aline .216535 .23876 aline .227965 .23876 aline .2286 .239395 aline .250825 .239395 aline .25146 .24003 aline .257175 .24003 aline .257175 .224155 aline .24384 .224155 bezier .237912 .222483 .228247 .22461 .22606 .216535 bezier .198925 .144498 .171591 .725433E-01 .144145 .000635 bezier .13797 -.702725E-02 .121544 -.583633E-02 .11938 .00508 bezier .918133E-01 .781719E-01 .641787E-01 .151236 .036195 .224155 aline .008255 .224155 aline .008255 .24003 aline .01651 .24003 closepath ! end of curve fill dfont endchar dfont char="W" !-------------- Beginning of new char. dfont wid=1.03334 hei=.686111 dep=0 italic=.0138884 dfont fby="A" kadd=-.111112 dfont fby="C" kadd=-.0277786 dfont fby="G" kadd=-.0277786 dfont fby="O" kadd=-.0277786 dfont fby="Q" kadd=-.0277786 dfont fby="a" kadd=-.083334 dfont fby="e" kadd=-.083334 dfont fby="o" kadd=-.083334 dfont fby="r" kadd=-.083334 dfont fby="u" kadd=-.083334 set path ! start of curve newpath ! start of curve amove .015875 .24003 aline .01651 .239395 aline .047625 .239395 aline .04826 .23876 aline .064135 .23876 aline .06477 .239395 aline .10287 .239395 aline .103505 .24003 aline .11303 .24003 aline .11303 .224155 aline .084455 .224155 aline .08382 .22352 aline .084455 .222885 aline .10033 .17526 aline .100965 .17399 aline .123825 .10541 aline .12446 .10414 aline .135255 .071755 aline .13589 .070485 aline .149225 .11049 aline .14986 .11176 aline .17272 .18034 aline .173355 .180975 aline .17272 .18161 aline .15875 .22352 aline .158115 .224155 aline .132715 .224155 aline .132715 .24003 aline .140335 .24003 aline .14097 .239395 aline .172085 .239395 aline .17272 .23876 aline .188595 .23876 aline .18923 .239395 aline .22733 .239395 aline .227965 .24003 aline .23749 .24003 aline .23749 .224155 aline .208915 .224155 aline .20828 .22352 aline .208915 .222885 aline .22479 .17526 aline .225425 .17399 aline .248285 .10541 aline .24892 .10414 aline .259715 .071755 aline .26035 .070485 aline .273685 .11049 aline .27432 .11176 aline .29718 .18034 aline .297815 .18161 aline .30988 .217805 aline .310277 .219393 bezier .305805 .224568 .297026 .222184 .29083 .224155 aline .2794 .224155 aline .2794 .24003 aline .28702 .24003 aline .287655 .239395 aline .316865 .239395 aline .3175 .23876 aline .328295 .23876 aline .32893 .239395 aline .349885 .239395 aline .35052 .24003 aline .354965 .24003 aline .354965 .224155 aline .3429 .224155 aline .342265 .22352 aline .33655 .22352 aline .335915 .222885 aline .33274 .22225 aline .3302 .221615 aline .32893 .22098 aline .32766 .21971 aline .307975 .160655 aline .30734 .159385 aline .28448 .090805 aline .283845 .089535 aline .260985 .020955 aline .26035 .019685 aline .254635 .00254 aline .253365 0 aline .250825 -.00254 aline .249555 -.003175 aline .24765 -.00381 aline .24003 -.00381 aline .238125 -.003175 aline .236855 -.00254 aline .234315 0 aline .233045 .00254 aline .22733 .019685 aline .226695 .020955 aline .203835 .089535 aline .2032 .090805 aline .18161 .155575 aline .16002 .090805 aline .159385 .089535 aline .136525 .020955 aline .13589 .019685 aline .130175 .00254 aline .128905 0 aline .126365 -.00254 aline .125095 -.003175 aline .12319 -.00381 aline .11557 -.00381 aline .113665 -.003175 aline .112395 -.00254 aline .109855 0 aline .108585 .00254 aline .10287 .019685 aline .102235 .020955 aline .079375 .089535 aline .07874 .090805 aline .05588 .159385 aline .055245 .160655 aline .03429 .22352 aline .033655 .224155 aline .008255 .224155 aline .008255 .24003 aline .015875 .24003 closepath ! end of curve fill dfont endchar dfont char="X" !-------------- Beginning of new char. dfont wid=.755559 hei=.686111 dep=0 italic=0 dfont fby="C" kadd=-.0277786 dfont fby="G" kadd=-.0277786 dfont fby="O" kadd=-.0277786 dfont fby="Q" kadd=-.0277786 set path ! start of curve newpath ! start of curve amove .023495 .24003 aline .02413 .239395 aline .05715 .239395 aline .057785 .23876 aline .074295 .23876 aline .07493 .239395 aline .113665 .239395 aline .1143 .24003 aline .123825 .24003 aline .123825 .224155 aline .09906 .224155 bezier .110525 .201951 .125526 .179332 .139065 .15748 bezier .151765 .178439 .167303 .19978 .178435 .220345 bezier .169066 .223812 .159447 .223909 .149225 .224155 aline .149225 .24003 aline .15748 .24003 aline .158115 .239395 aline .1905 .239395 aline .191135 .23876 aline .205105 .23876 aline .20574 .239395 aline .23241 .239395 aline .233045 .24003 aline .24003 .24003 aline .24003 .224155 bezier .226282 .22346 .211942 .22593 .200025 .219075 bezier .183153 .192716 .165949 .166597 .149384 .140018 bezier .174632 .098354 .199891 .566981E-01 .225425 .01524 aline .25527 .01524 aline .25527 -.000635 aline .24638 -.000635 aline .245745 0 aline .212725 0 aline .21209 .000635 aline .196215 .000635 aline .19558 0 aline .156845 0 aline .15621 -.000635 aline .14605 -.000635 aline .14605 .01524 aline .17145 .01524 bezier .156812 .422781E-01 .138198 .070409 .12192 .09779 bezier .105853 .715269E-01 .868102E-01 .449753E-01 .07239 .01905 bezier .817591E-01 .155829E-01 .913783E-01 .154857E-01 .1016 .01524 aline .1016 -.000635 aline .093345 -.000635 aline .09271 0 aline .05969 0 aline .059055 .000635 aline .04572 .000635 aline .045085 0 aline .018415 0 aline .01778 -.000635 aline .010795 -.000635 aline .010795 .01524 bezier .245429E-01 .015935 .388833E-01 .134646E-01 .0508 .02032 bezier .706466E-01 .519551E-01 .929133E-01 .842815E-01 .111125 .11557 bezier .891648E-01 .151803 .670301E-01 .187911 .045085 .224155 aline .01524 .224155 aline .01524 .24003 aline .023495 .24003 closepath ! end of curve fill dfont endchar dfont char="Y" !-------------- Beginning of new char. dfont wid=.755559 hei=.686111 dep=0 italic=.0249996 dfont fby="A" kadd=-.083334 dfont fby="a" kadd=-.083334 dfont fby="e" kadd=-.083334 dfont fby="o" kadd=-.083334 dfont fby="r" kadd=-.083334 dfont fby="u" kadd=-.083334 set path ! start of curve newpath ! start of curve amove .014605 .24003 aline .01524 .239395 aline .048895 .239395 aline .04953 .23876 aline .06604 .23876 aline .066675 .239395 aline .106045 .239395 aline .10668 .24003 aline .11684 .24003 aline .11684 .224155 aline .090805 .224155 bezier .10865 .19031 .129685 .154604 .149543 .120809 bezier .168802 .153332 .187622 .186636 .206163 .21971 aline .20574 .22098 aline .203835 .221615 aline .201295 .22225 aline .19812 .222885 aline .197485 .22352 aline .192405 .22352 aline .19177 .224155 aline .182245 .224155 aline .182245 .24003 aline .18923 .24003 aline .189865 .239395 aline .217805 .239395 aline .21844 .23876 aline .22987 .23876 aline .230505 .239395 aline .253365 .239395 aline .254 .24003 aline .25908 .24003 aline .25908 .224155 aline .24511 .224155 bezier .237079 .22309 .226491 .223354 .22352 .21336 bezier .201205 .174114 .17906 .134745 .15621 .095885 aline .15621 .015875 aline .156845 .01524 aline .18923 .01524 aline .18923 -.000635 aline .179705 -.000635 aline .17907 0 aline .141605 0 aline .14097 .000635 aline .12446 .000635 aline .123825 0 aline .08636 0 aline .085725 -.000635 aline .0762 -.000635 aline .0762 .01524 aline .108585 .01524 aline .10922 .015875 aline .10922 .095885 bezier .842067E-01 .13831 .602521E-01 .181498 .03556 .224155 aline .00635 .224155 aline .00635 .24003 aline .014605 .24003 closepath ! end of curve fill dfont endchar dfont char="Z" !-------------- Beginning of new char. dfont wid=.611113 hei=.686111 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .189865 .24003 aline .191135 .239395 bezier .198975 .232814 .191657 .22198 .187325 .215265 bezier .150552 .148971 .110959 .822722E-01 .075565 .01651 aline .118745 .01651 bezier .142764 .178709E-01 .169533 .032259 .174625 .05842 bezier .178882 .716885E-01 .179384 .846433E-01 .18034 .098425 aline .196215 .098425 bezier .194114 .653987E-01 .191966 .323913E-01 .189865 -.000635 aline .024765 -.000635 aline .022225 .000635 bezier .152142E-01 .133847E-01 .287727E-01 .250506E-01 .033655 .036195 bezier .06828 .989891E-01 .105939 .161424 .139065 .224155 aline .09906 .224155 bezier .758049E-01 .222963 .503079E-01 .20863 .045085 .183515 aline .043815 .178435 aline .042545 .172085 aline .04191 .17145 aline .04191 .167005 aline .041275 .16637 aline .041275 .160655 aline .04064 .16002 aline .04064 .155575 aline .024765 .155575 bezier .262534E-01 .183724 .277216E-01 .211881 .02921 .24003 closepath ! end of curve fill dfont endchar dfont char="[" !-------------- Beginning of new char. dfont wid=.280002 hei=.75 dep=.25 italic=0 set path ! start of curve newpath ! start of curve amove .09017 .262255 aline .09017 .2413 aline .05969 .2413 aline .059055 .240665 aline .059055 -.066675 aline .05969 -.06731 aline .09017 -.06731 aline .09017 -.088265 aline .0381 -.088265 aline .0381 .262255 aline .09017 .262255 closepath ! end of curve fill dfont endchar dfont char="\" !-------------- Beginning of new char. dfont wid=.544446 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .078105 .24257 aline .079375 .241935 aline .083185 .238125 aline .08382 .236855 aline .08382 .23495 bezier .641812E-01 .217844 .483363E-01 .192872 .048895 .16637 bezier .631271E-01 .182017 .935017E-01 .172922 .09525 .15113 bezier .992144E-01 .130619 .766177E-01 .113158 .057785 .12192 bezier .324914E-01 .134814 .333716E-01 .1679 .040005 .191135 bezier .457634E-01 .211715 .586297E-01 .229831 .075565 .24257 closepath ! end of curve ! start of curve amove .161925 .24257 aline .163195 .241935 aline .167005 .238125 aline .16764 .236855 aline .16764 .23495 bezier .148001 .217844 .132156 .192872 .132715 .16637 bezier .146947 .182017 .177322 .172922 .17907 .15113 bezier .183034 .130619 .160438 .113158 .141605 .12192 bezier .116311 .134814 .117192 .1679 .123825 .191135 bezier .129583 .211715 .14245 .229831 .159385 .24257 closepath ! end of curve fill dfont endchar dfont char="]" !-------------- Beginning of new char. dfont wid=.280002 hei=.75 dep=.25 italic=0 set path ! start of curve newpath ! start of curve amove .060325 .262255 aline .060325 -.088265 aline .008255 -.088265 aline .008255 -.06731 aline .038735 -.06731 aline .03937 -.066675 aline .03937 .240665 aline .038735 .2413 aline .008255 .2413 aline .008255 .262255 aline .060325 .262255 closepath ! end of curve fill dfont endchar dfont char="^" !-------------- Beginning of new char. dfont wid=.500002 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .088265 .24257 bezier .104097 .2274 .120693 .21329 .136525 .19812 bezier .132353 .194344 .127845 .181769 .12192 .18923 bezier .110421 .19719 .996806E-01 .206201 .879475E-01 .213836 bezier .747387E-01 .205135 .626046E-01 .194942 .04953 .186055 aline .046355 .18923 aline .04572 .1905 aline .04318 .19304 aline .042545 .19431 aline .040005 .19685 aline .03937 .19812 bezier .055483 .213131 .718754E-01 .228261 .088265 .24257 closepath ! end of curve fill dfont endchar dfont char="_" !-------------- Beginning of new char. dfont wid=.277779 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .05334 .243205 bezier .781244E-01 .239726 .841801E-01 .203845 .06223 .192405 bezier .445296E-01 .181258 .188738E-01 .198185 .022225 .217805 bezier .217271E-01 .230335 .325661E-01 .241029 .04445 .243205 closepath ! end of curve fill dfont endchar dfont char="`" !-------------- Beginning of new char. dfont wid=.277779 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .059055 .24257 aline .060325 .241935 aline .064135 .238125 aline .06477 .236855 aline .06477 .23495 bezier .451312E-01 .217844 .292863E-01 .192872 .029845 .16637 bezier .440771E-01 .182017 .744517E-01 .172922 .0762 .15113 bezier .801644E-01 .130619 .575677E-01 .113158 .038735 .12192 bezier .134414E-01 .134814 .143216E-01 .1679 .020955 .191135 bezier .267134E-01 .211715 .395797E-01 .229831 .056515 .24257 closepath ! end of curve fill dfont endchar dfont char="a" !-------------- Beginning of new char. dfont wid=.486113 hei=.444445 dep=0 italic=0 dfont fby="j" kadd=.0555553 dfont fby="v" kadd=-.0277786 dfont fby="w" kadd=-.0277786 dfont fby="y" kadd=-.0277786 set path ! start of curve newpath ! start of curve amove .08763 .158115 bezier .113587 .157279 .144103 .140391 .146685 .11176 aline .146685 .022225 bezier .151486 .138875E-01 .161979 .172256E-01 .16891 .013335 aline .17018 .010795 aline .17018 .00381 aline .16891 .00127 aline .168275 .000635 aline .165735 -.000635 bezier .148155 .10832E-03 .124478 -.532892E-02 .1143 .013335 aline .11303 .017145 aline .11303 .024765 bezier .107669 .167917E-01 .990665E-01 .459897E-02 .08763 .000635 bezier .063546 -.666958E-02 .328373E-01 -.190427E-02 .015875 .018415 bezier -.104288E-02 .433205E-01 .212872E-01 .743737E-01 .04699 .08128 bezier .666851E-01 .895455E-01 .874659E-01 .089983 .107315 .092075 bezier .108176 .111292 .107576 .137421 .085725 .14478 bezier .760253E-01 .147285 .650038E-01 .146108 .560388E-01 .143193 bezier .705511E-01 .131978 .630811E-01 .104205 .043815 .104775 bezier .283067E-01 .101398 .148977E-01 .120479 .02159 .135255 bezier .287949E-01 .153229 .509728E-01 .156516 .06731 .158115 aline .08763 .158115 closepath ! end of curve ! start of curve amove .104775 .080645 bezier .824822E-01 .795682E-01 .531612E-01 .678701E-01 .051435 .04191 bezier .471605E-01 .255997E-01 .631893E-01 .33291E-02 .08128 .010795 bezier .956628E-01 .135915E-01 .105015 .274554E-01 .107315 .04064 aline .107315 .080645 aline .106045 .810684E-01 aline .104775 .080645 closepath ! end of curve fill dfont endchar dfont char="b" !-------------- Beginning of new char. dfont wid=.555557 hei=.694445 dep=0 italic=0 dfont fby="c" kadd=.0277786 dfont fby="d" kadd=.0277786 dfont fby="e" kadd=.0277786 dfont fby="j" kadd=.0555553 dfont fby="o" kadd=.0277786 dfont fby="q" kadd=.0277786 dfont fby="v" kadd=-.0277786 dfont fby="w" kadd=-.0277786 dfont fby="x" kadd=-.0277786 dfont fby="y" kadd=-.0277786 set path ! start of curve newpath ! start of curve amove .067945 .24257 aline .067945 .142875 bezier .097599 .16616 .149476 .160254 .17018 .12573 bezier .192728 .884301E-01 .186796 .316399E-01 .14732 .00762 bezier .120988 -.670755E-02 .852766E-01 -.779596E-02 .638175E-01 .157163E-01 aline .062865 .01524 aline .04699 -.000635 aline .03048 -.000635 aline .03048 .2159 aline .029845 .216535 aline .02921 .219075 aline .027305 .22098 aline .026035 .221615 aline .02413 .22225 aline .023495 .222885 aline .01905 .222885 aline .018415 .22352 aline .00635 .22352 aline .00635 .239395 bezier .268337E-01 .240569 .474571E-01 .241406 .067945 .24257 closepath ! end of curve ! start of curve amove .102235 .144145 bezier .893283E-01 .143122 .773816E-01 .134734 .06985 .12446 aline .06985 .03048 bezier .08073 .936776E-02 .111291 .146251E-02 .127635 .020955 bezier .136138 .318459E-01 .13708 .045888 .13843 .05842 aline .13843 .097155 bezier .13776 .114956 .133479 .140599 .111125 .144145 aline .11049 .14478 aline .10287 .14478 aline .102235 .144145 closepath ! end of curve fill dfont endchar dfont char="c" !-------------- Beginning of new char. dfont wid=.444446 hei=.444445 dep=0 italic=0 dfont fby="h" kadd=-.0277786 dfont fby="k" kadd=-.0277786 set path ! start of curve newpath ! start of curve amove .097155 .158115 bezier .114187 .156685 .13817 .150733 .141605 .130175 bezier .145792 .110981 .122285 .971749E-01 .107315 .10795 bezier .960101E-01 .115699 .952542E-01 .133577 .105251 .142558 bezier .901799E-01 .149 .675697E-01 .142853 .06223 .12446 bezier .583667E-01 .114681 .575981E-01 .10506 .056515 .09525 aline .056515 .062865 bezier .573158E-01 .424916E-01 .652723E-01 .148994E-01 .089535 .010795 bezier .108464 .87129E-02 .126541 .229846E-01 .130175 .04191 aline .13208 .043815 aline .13335 .04445 aline .142875 .04445 bezier .150596 .391013E-01 .141665 .283088E-01 .13843 .022225 bezier .108089 -.211804E-01 .323585E-01 -.475652E-02 .017145 .04445 bezier .382147E-02 .830907E-01 .014837 .135824 .056515 .1524 aline .06604 .155575 aline .07112 .156845 aline .074295 .156845 aline .07493 .15748 aline .079375 .15748 aline .08001 .158115 aline .097155 .158115 closepath ! end of curve fill dfont endchar dfont char="d" !-------------- Beginning of new char. dfont wid=.555557 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .164465 .24257 aline .164465 .02286 aline .1651 .022225 aline .165735 .019685 aline .16764 .01778 aline .16891 .017145 aline .170815 .01651 aline .17145 .015875 aline .175895 .015875 aline .17653 .01524 aline .188595 .01524 aline .188595 -.000635 aline .17907 -.000635 aline .178435 -.00127 aline .15748 -.00127 aline .156845 -.001905 aline .13589 -.001905 aline .135255 -.00254 aline .125095 -.00254 aline .125095 .010795 bezier .115907 .553851E-02 .103436 -.199209E-02 .09144 -.00254 bezier .533793E-01 -.722371E-02 .154143E-01 .227268E-01 .013335 .061595 bezier .572101E-02 .982203E-01 .245207E-01 .14371 .064135 .15367 bezier .846686E-01 .159269 .108529 .158456 .126048 .144304 aline .127 .14478 aline .127 .2159 aline .126365 .216535 aline .12573 .219075 aline .123825 .22098 aline .122555 .221615 aline .12065 .22225 aline .120015 .222885 aline .11557 .222885 aline .114935 .22352 aline .10287 .22352 aline .10287 .239395 bezier .123354 .240569 .143977 .241406 .164465 .24257 closepath ! end of curve ! start of curve amove .086995 .144145 bezier .641927E-01 .141164 .563637E-01 .115742 .05715 .09652 aline .056515 .095885 aline .056515 .05715 bezier .057209 .393762E-01 .614859E-01 .136904E-01 .08382 .01016 bezier .099898 .718833E-02 .116715 .185216E-01 .125095 .032385 aline .125095 .12573 bezier .117019 .137944 .101325 .147082 .086995 .144145 closepath ! end of curve fill dfont endchar dfont char="e" !-------------- Beginning of new char. dfont wid=.466667 hei=.444445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .09525 .158115 bezier .125539 .15717 .151575 .130898 .1524 .10033 aline .153035 .099695 aline .153035 .093345 aline .15367 .09271 aline .15367 .080645 aline .1524 .078105 aline .151765 .07747 aline .149225 .0762 aline .055245 .0762 bezier .532426E-01 .535146E-01 .562373E-01 .212052E-01 .08255 .0127 bezier .105491 .535381E-02 .132846 .207321E-01 .1397 .04445 aline .14224 .04572 aline .149225 .04572 bezier .159253 .404783E-01 .149262 .028053 .145415 .02159 bezier .108617 -.232575E-01 .245194E-01 -.303839E-02 .0127 .05461 bezier .309229E-02 .915401E-01 .171968E-01 .138903 .056515 .153035 aline .06223 .15494 aline .06477 .155575 aline .066675 .15621 aline .06985 .156845 aline .073025 .156845 aline .07366 .15748 aline .078105 .15748 aline .07874 .158115 aline .09525 .158115 closepath ! end of curve ! start of curve amove .083185 .145415 bezier .600298E-01 .141889 .556278E-01 .114778 .05461 .09652 aline .05461 .08763 aline .055245 .086995 aline .120015 .086995 bezier .121413 .105202 .118275 .128079 .10287 .14097 aline .09652 .144145 aline .09398 .14478 aline .090805 .145415 aline .09017 .14605 aline .08382 .14605 aline .083185 .145415 closepath ! end of curve fill dfont endchar dfont char="f" !-------------- Beginning of new char. dfont wid=.305557 hei=.694445 dep=0 italic=.111112 dfont fby=33 kadd=.111112 dfont fby=39 kadd=.111112 dfont fby=")" kadd=.111112 dfont fby="?" kadd=.111112 dfont fby="]" kadd=.111112 dfont fby="f" ligrep=11 dfont fby="i" ligrep=12 dfont fby="l" ligrep=13 set path ! start of curve newpath ! start of curve amove .10922 .244475 bezier .128792 .243508 .147875 .21978 .135255 .201295 bezier .12508 .186572 .989513E-01 .192201 .09652 .210185 aline .09652 .21844 aline .097155 .22098 aline .09779 .222885 aline .09906 .225425 aline .099695 .22606 aline .10033 .22733 aline .104775 .231775 bezier .866626E-01 .235764 .703501E-01 .2171 .070485 .19939 aline .06985 .198755 aline .06985 .155575 aline .070485 .15494 aline .10414 .15494 aline .10414 .139065 aline .07239 .139065 aline .071755 .13843 aline .071755 .015875 aline .07239 .01524 aline .102235 .01524 aline .102235 -.000635 aline .09398 -.000635 aline .093345 0 aline .06096 0 aline .060325 .000635 aline .046355 .000635 aline .04572 0 aline .01778 0 aline .017145 -.000635 aline .01016 -.000635 aline .01016 .01524 aline .033655 .01524 aline .03429 .015875 aline .03429 .13843 aline .033655 .139065 aline .013335 .139065 aline .013335 .15494 aline .033655 .15494 aline .03429 .155575 aline .03429 .19812 bezier .372167E-01 .22717 .682962E-01 .243656 .094615 .244475 aline .10922 .244475 closepath ! end of curve fill dfont endchar dfont char="g" !-------------- Beginning of new char. dfont wid=.500002 hei=.444445 dep=.194445 italic=.0138884 dfont fby="j" kadd=.0277786 set path ! start of curve newpath ! start of curve amove .15494 .15875 bezier .171474 .156179 .177224 .127899 .15875 .123825 bezier .146628 .120922 .137079 .133607 .141393 .144145 aline .141097 .145034 aline .140653 .145256 aline .1397 .14478 aline .13589 .14351 aline .12954 .140335 aline .128905 .1397 aline .127635 .139065 bezier .152305 .115218 .141361 .690175E-01 .108585 .05842 bezier .861515E-01 .050063 .615387E-01 .522658E-01 .039751 .061087 bezier .320645E-01 .488778E-01 .395544E-01 .305603E-01 .053975 .02794 aline .104775 .02794 bezier .128295 .273101E-01 .15855 .175106E-01 .164465 -.009525 bezier .169587 -.262878E-01 .165794 -.466472E-01 .14986 -.056515 bezier .120493 -.758593E-01 .834214E-01 -.737701E-01 .0508 -.067945 bezier .280374E-01 -.632092E-01 .180463E-02 -.042227 .01143 -.01651 bezier .159511E-01 -.712055E-02 .248261E-01 -.901161E-04 .034925 .00254 bezier .159229E-01 .186525E-01 .160878E-01 .494249E-01 .032385 .06731 bezier .421619E-02 .895458E-01 .012153 .138545 .04572 .15113 bezier .697591E-01 .159652 .981349E-01 .160137 .120015 .145415 aline .12446 .14986 aline .12573 .150495 aline .126365 .15113 aline .127635 .151765 aline .12827 .1524 aline .13462 .155575 aline .140335 .15748 aline .142875 .158115 aline .14605 .158115 aline .146685 .15875 closepath ! end of curve ! start of curve amove .07366 .144145 bezier .600229E-01 .143211 .543898E-01 .129227 .053975 .11811 bezier .551543E-01 .100424 .488859E-01 .760693E-01 .06858 .06731 bezier .824849E-01 .607597E-01 .100856 .709078E-01 .1016 .08636 bezier .10123 .104277 .107143 .12676 .09271 .140335 aline .08763 .142875 aline .085725 .14351 aline .08255 .144145 aline .081915 .14478 aline .074295 .14478 closepath ! end of curve ! start of curve amove .05334 -.005715 bezier .318149E-01 -.012429 .037484 -.452411E-01 .05588 -.052705 bezier .797382E-01 -.634065E-01 .111441 -.636242E-01 .13081 -.043815 bezier .140121 -.324787E-01 .137793 -.127509E-01 .12192 -.00889 aline .120015 -.008255 aline .117475 -.00762 aline .1143 -.006985 aline .113665 -.00635 aline .11049 -.00635 aline .109855 -.005715 aline .103505 -.005715 aline .10287 -.00508 aline .053975 -.00508 closepath ! end of curve fill dfont endchar dfont char="h" !-------------- Beginning of new char. dfont wid=.555557 hei=.694445 dep=0 italic=0 dfont fby="b" kadd=-.0277786 dfont fby="t" kadd=-.0277786 dfont fby="u" kadd=-.0277786 dfont fby="v" kadd=-.0277786 dfont fby="w" kadd=-.0277786 dfont fby="y" kadd=-.0277786 set path ! start of curve newpath ! start of curve amove .070485 .24257 aline .070485 .125095 bezier .775885E-01 .134443 .873402E-01 .148414 .100965 .153035 bezier .124122 .161862 .159346 .157525 .167005 .12954 aline .16764 .127635 aline .168275 .125095 aline .168275 .12192 aline .16891 .121285 aline .16891 .11684 aline .169545 .116205 aline .169545 .015875 aline .17018 .01524 aline .193675 .01524 aline .193675 -.000635 aline .18669 -.000635 aline .186055 0 aline .156845 0 aline .15621 .000635 aline .14351 .000635 aline .142875 0 aline .11557 0 aline .114935 -.000635 aline .10795 -.000635 aline .10795 .01524 aline .12954 .01524 aline .130175 .015875 aline .130175 .12065 bezier .128814 .129545 .127919 .146865 .1143 .14478 bezier .908506E-01 .142186 .745135E-01 .118678 .07239 .09652 aline .07239 .015875 aline .073025 .01524 aline .09652 .01524 aline .09652 -.000635 aline .089535 -.000635 aline .0889 0 aline .05969 0 aline .059055 .000635 aline .046355 .000635 aline .04572 0 aline .01651 0 aline .015875 -.000635 aline .00889 -.000635 aline .00889 .01524 aline .032385 .01524 aline .03302 .015875 aline .03302 .2159 aline .032385 .216535 aline .03175 .219075 aline .029845 .22098 aline .028575 .221615 aline .02667 .22225 aline .026035 .222885 aline .02159 .222885 aline .020955 .22352 aline .00889 .22352 aline .00889 .239395 bezier .293737E-01 .240569 .499971E-01 .241406 .070485 .24257 closepath ! end of curve fill dfont endchar dfont char="i" !-------------- Beginning of new char. dfont wid=.277779 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .05207 .243205 bezier .709024E-01 .240223 .812516E-01 .21616 .06985 .20066 bezier .574887E-01 .181409 .251073E-01 .187888 .020955 .210185 bezier .171817E-01 .225066 .282497E-01 .240806 .04318 .243205 closepath ! end of curve ! start of curve amove .07112 .156845 aline .07112 .015875 aline .071755 .01524 aline .093345 .01524 aline .093345 -.000635 aline .08636 -.000635 aline .085725 0 aline .059055 0 aline .05842 .000635 aline .04572 .000635 aline .045085 0 aline .017145 0 aline .01651 -.000635 aline .009525 -.000635 aline .009525 .01524 aline .03302 .01524 aline .033655 .015875 aline .033655 .13081 bezier .300035E-01 .140014 .183886E-01 .137192 .01016 .137795 aline .01016 .15367 bezier .304434E-01 .154817 .508366E-01 .155698 .07112 .156845 closepath ! end of curve fill dfont endchar dfont char="j" !-------------- Beginning of new char. dfont wid=.305557 hei=.694445 dep=.194445 italic=0 set path ! start of curve newpath ! start of curve amove .06223 .243205 bezier .859241E-01 .240521 .937479E-01 .205723 .073025 .193675 bezier .053985 .179254 .246981E-01 .200121 .03175 .222885 aline .03302 .226695 aline .034925 .230505 aline .03556 .23114 aline .036195 .23241 aline .04191 .238125 aline .04318 .23876 aline .043815 .239395 aline .047625 .2413 aline .051435 .24257 aline .053975 .243205 closepath ! end of curve ! start of curve amove .08509 .156845 aline .08509 -.023495 bezier .797119E-01 -.069003 .136792E-01 -.087991 -.01651 -.05461 bezier -.262001E-01 -.419392E-01 -.202401E-01 -.199059E-01 -.003175 -.01778 bezier .163139E-01 -.135618E-01 .302654E-01 -.385963E-01 .01778 -.05334 aline .014605 -.056515 aline .013335 -.05715 bezier .240753E-01 -.618603E-01 .387581E-01 -.584335E-01 .042545 -.04572 aline .04445 -.040005 aline .045085 -.037465 aline .04572 -.03429 aline .046355 -.033655 aline .046355 -.03048 aline .04699 -.029845 aline .04699 -.024765 aline .047625 -.02413 aline .047625 .130175 bezier .043431 .140692 .301892E-01 .13695 .020955 .137795 aline .020955 .15367 bezier .422675E-01 .154887 .637539E-01 .155685 .08509 .156845 closepath ! end of curve fill dfont endchar dfont char="k" !-------------- Beginning of new char. dfont wid=.527781 hei=.694445 dep=0 italic=0 dfont fby="a" kadd=-.0555553 dfont fby="c" kadd=-.0277786 dfont fby="e" kadd=-.0277786 dfont fby="o" kadd=-.0277786 set path ! start of curve newpath ! start of curve amove .067945 .24257 aline .067945 .086995 aline .06858 .08636 bezier .856364E-01 .102407 .103821 .118165 .119777 .134937 aline .119471 .136162 aline .118745 .136525 aline .11684 .13716 aline .1143 .137795 aline .113665 .13843 aline .11049 .13843 aline .109855 .139065 aline .10414 .139065 aline .10414 .15494 aline .11176 .15494 aline .112395 .154305 aline .140335 .154305 aline .14097 .15367 aline .150495 .15367 aline .15113 .154305 aline .16637 .154305 aline .167005 .15494 aline .170815 .15494 aline .170815 .139065 bezier .157183 .139695 .143194 .138057 .13462 .12573 aline .13335 .125095 aline .125095 .11684 aline .123825 .116205 aline .11557 .10795 aline .1143 .107315 aline .10541 .098425 bezier .104093 .933541E-01 .112019 .878596E-01 .1143 .08255 bezier .12867 .607908E-01 .142925 .389481E-01 .158115 .01778 aline .160655 .01651 aline .16129 .015875 aline .1651 .015875 aline .165735 .01524 aline .17907 .01524 aline .17907 -.000635 aline .17399 -.000635 aline .173355 0 aline .15113 0 aline .150495 .000635 aline .139065 .000635 aline .13843 0 aline .109855 0 aline .10922 -.000635 aline .102235 -.000635 aline .102235 .01524 aline .10922 .01524 aline .109855 .015875 aline .11303 .01651 bezier .118683 .204417E-01 .109475 .266063E-01 .10795 .031115 bezier .980867E-01 .450522E-01 .889256E-01 .596905E-01 .790575E-01 .735013E-01 aline .078105 .073025 aline .0762 .07112 aline .07493 .070485 aline .06604 .061595 aline .06604 .015875 aline .066675 .01524 aline .09017 .01524 aline .09017 -.000635 aline .083185 -.000635 aline .08255 0 aline .055245 0 aline .05461 .000635 aline .04191 .000635 aline .041275 0 aline .01397 0 aline .013335 -.000635 aline .00635 -.000635 aline .00635 .01524 aline .029845 .01524 aline .03048 .015875 aline .03048 .2159 aline .029845 .216535 aline .02921 .219075 aline .027305 .22098 aline .026035 .221615 aline .02413 .22225 aline .023495 .222885 aline .01905 .222885 aline .018415 .22352 aline .00635 .22352 aline .00635 .239395 bezier .268337E-01 .240569 .474571E-01 .241406 .067945 .24257 closepath ! end of curve fill dfont endchar dfont char="l" !-------------- Beginning of new char. dfont wid=.277779 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .07112 .24257 aline .07112 .015875 aline .071755 .01524 aline .09525 .01524 aline .09525 -.000635 aline .088265 -.000635 aline .08763 0 aline .05969 0 aline .059055 .000635 aline .04572 .000635 aline .045085 0 aline .017145 0 aline .01651 -.000635 aline .009525 -.000635 aline .009525 .01524 aline .03302 .01524 aline .033655 .015875 aline .033655 .2159 aline .03302 .216535 aline .032385 .219075 aline .03048 .22098 aline .02921 .221615 aline .027305 .22225 aline .02667 .222885 aline .022225 .222885 aline .02159 .22352 aline .009525 .22352 aline .009525 .239395 bezier .300087E-01 .240569 .506321E-01 .241406 .07112 .24257 closepath ! end of curve fill dfont endchar dfont char="m" !-------------- Beginning of new char. dfont wid=.833336 hei=.444445 dep=0 italic=0 dfont fby="b" kadd=-.0277786 dfont fby="t" kadd=-.0277786 dfont fby="u" kadd=-.0277786 dfont fby="v" kadd=-.0277786 dfont fby="w" kadd=-.0277786 dfont fby="y" kadd=-.0277786 set path ! start of curve newpath ! start of curve amove .06858 .156845 aline .06858 .121285 bezier .741076E-01 .128451 .805465E-01 .140896 .09017 .146685 bezier .10865 .160302 .13563 .160436 .15494 .14859 aline .16129 .14224 aline .161925 .14097 aline .16256 .140335 aline .163195 .139065 aline .16383 .13843 aline .16637 .13335 aline .168275 .127635 aline .16891 .125095 bezier .18022 .146117 .204575 .161232 .2286 .15621 bezier .250908 .157697 .267973 .136652 .26797 .116205 aline .26797 .015875 aline .268605 .01524 aline .2921 .01524 aline .2921 -.000635 aline .285115 -.000635 aline .28448 0 aline .25527 0 aline .254635 .000635 aline .241935 .000635 aline .2413 0 aline .21336 0 aline .212725 -.000635 aline .20574 -.000635 aline .20574 .01524 aline .227965 .01524 aline .2286 .015875 aline .2286 .120015 bezier .227418 .129254 .22623 .147303 .21209 .14478 bezier .188734 .141973 .172343 .118755 .17018 .09652 aline .17018 .015875 aline .170815 .01524 aline .19431 .01524 aline .19431 -.000635 aline .187325 -.000635 aline .18669 0 aline .15748 0 aline .156845 .000635 aline .144145 .000635 aline .14351 0 aline .11557 0 aline .114935 -.000635 aline .10795 -.000635 aline .10795 .01524 aline .130175 .01524 aline .13081 .015875 aline .13081 .120015 bezier .129628 .129254 .12844 .147303 .1143 .14478 bezier .090944 .141973 .745528E-01 .118755 .07239 .09652 aline .07239 .015875 aline .073025 .01524 aline .09652 .01524 aline .09652 -.000635 aline .089535 -.000635 aline .0889 0 aline .05969 0 aline .059055 .000635 aline .046355 .000635 aline .04572 0 aline .01651 0 aline .015875 -.000635 aline .00889 -.000635 aline .00889 .01524 aline .032385 .01524 aline .03302 .015875 aline .03302 .130175 aline .032385 .13081 aline .03175 .13335 aline .029845 .135255 aline .028575 .13589 aline .02667 .136525 aline .026035 .13716 aline .02159 .13716 aline .020955 .137795 aline .00889 .137795 aline .00889 .15367 bezier .287642E-01 .154783 .486867E-01 .155779 .06858 .156845 closepath ! end of curve fill dfont endchar dfont char="n" !-------------- Beginning of new char. dfont wid=.555557 hei=.444445 dep=0 italic=0 dfont fby="b" kadd=-.0277786 dfont fby="t" kadd=-.0277786 dfont fby="u" kadd=-.0277786 dfont fby="v" kadd=-.0277786 dfont fby="w" kadd=-.0277786 dfont fby="y" kadd=-.0277786 set path ! start of curve newpath ! start of curve amove .06858 .156845 aline .06858 .121285 bezier .745586E-01 .129748 .822936E-01 .143097 .093345 .149225 bezier .114016 .160628 .144084 .16114 .160655 .14224 bezier .166748 .134879 .168275 .124763 .169545 .116205 aline .169545 .015875 aline .17018 .01524 aline .193675 .01524 aline .193675 -.000635 aline .18669 -.000635 aline .186055 0 aline .156845 0 aline .15621 .000635 aline .14351 .000635 aline .142875 0 aline .11557 0 aline .114935 -.000635 aline .10795 -.000635 aline .10795 .01524 aline .12954 .01524 aline .130175 .015875 aline .130175 .12065 bezier .128814 .129545 .127919 .146865 .1143 .14478 bezier .908506E-01 .142186 .745135E-01 .118678 .07239 .09652 aline .07239 .015875 aline .073025 .01524 aline .09652 .01524 aline .09652 -.000635 aline .089535 -.000635 aline .0889 0 aline .05969 0 aline .059055 .000635 aline .046355 .000635 aline .04572 0 aline .01651 0 aline .015875 -.000635 aline .00889 -.000635 aline .00889 .01524 aline .032385 .01524 aline .03302 .015875 aline .03302 .130175 aline .032385 .13081 aline .03175 .13335 aline .029845 .135255 aline .028575 .13589 aline .02667 .136525 aline .026035 .13716 aline .02159 .13716 aline .020955 .137795 aline .00889 .137795 aline .00889 .15367 bezier .287642E-01 .154783 .486867E-01 .155779 .06858 .156845 closepath ! end of curve fill dfont endchar dfont char="o" !-------------- Beginning of new char. dfont wid=.500002 hei=.444445 dep=0 italic=0 dfont fby="c" kadd=.0277786 dfont fby="d" kadd=.0277786 dfont fby="e" kadd=.0277786 dfont fby="j" kadd=.0555553 dfont fby="o" kadd=.0277786 dfont fby="q" kadd=.0277786 dfont fby="v" kadd=-.0277786 dfont fby="w" kadd=-.0277786 dfont fby="x" kadd=-.0277786 dfont fby="y" kadd=-.0277786 set path ! start of curve newpath ! start of curve amove .09525 .158115 bezier .130437 .157141 .162867 .126542 .164465 .090805 bezier .172371 .537964E-01 .151592 .825272E-02 .111125 0 bezier .747944E-01 -.969592E-02 .277633E-01 .507691E-02 .01524 .04445 bezier .15877E-02 .832999E-01 .013893 .135928 .05588 .1524 bezier .687113E-01 .157694 .816226E-01 .158347 .09525 .158115 closepath ! end of curve ! start of curve amove .083185 .145415 bezier .617539E-01 .143346 .536945E-01 .120434 .055245 .102235 aline .05461 .1016 aline .05461 .057785 bezier .055348 .041206 .057696 .186011E-01 .07747 .0127 bezier .970443E-01 .461586E-02 .119344 .217159E-01 .120015 .04191 aline .120015 .04699 aline .12065 .047625 aline .12065 .05715 aline .121285 .057785 aline .121285 .1016 bezier .120717 .117616 .117365 .138855 .098425 .144145 aline .095885 .14478 aline .09271 .145415 aline .092075 .14605 aline .08382 .14605 aline .083185 .145415 closepath ! end of curve fill dfont endchar dfont char="p" !-------------- Beginning of new char. dfont wid=.555557 hei=.444445 dep=.194445 italic=0 dfont fby="c" kadd=.0277786 dfont fby="d" kadd=.0277786 dfont fby="e" kadd=.0277786 dfont fby="j" kadd=.0555553 dfont fby="o" kadd=.0277786 dfont fby="q" kadd=.0277786 dfont fby="v" kadd=-.0277786 dfont fby="w" kadd=-.0277786 dfont fby="x" kadd=-.0277786 dfont fby="y" kadd=-.0277786 set path ! start of curve newpath ! start of curve amove .067945 .156845 aline .067945 .142875 bezier .818709E-01 .151796 .101745 .159782 .11938 .15621 bezier .155937 .155339 .182158 .119678 .18288 .085725 bezier .18618 .527338E-01 .170799 .01544 .137795 .003175 bezier .115965 -.487218E-02 .890026E-01 -.643711E-02 .070485 .01016 aline .06985 .009525 aline .06985 -.052705 aline .070485 -.05334 aline .09398 -.05334 aline .09398 -.069215 aline .086995 -.069215 aline .08636 -.06858 aline .05715 -.06858 aline .056515 -.067945 aline .043815 -.067945 aline .04318 -.06858 aline .01397 -.06858 aline .013335 -.069215 aline .00635 -.069215 aline .00635 -.05334 aline .029845 -.05334 aline .03048 -.052705 aline .03048 .132715 aline .029845 .13335 aline .02921 .13462 aline .02794 .13589 aline .026035 .136525 aline .0254 .13716 aline .020955 .13716 aline .02032 .137795 aline .00635 .137795 aline .00635 .15367 bezier .268337E-01 .154844 .474571E-01 .155681 .067945 .156845 closepath ! end of curve ! start of curve amove .102235 .142875 bezier .893977E-01 .142064 .077691 .133863 .06985 .123825 aline .06985 .03048 bezier .797742E-01 .106901E-01 .110375 .383055E-03 .12446 .02159 bezier .141904 .049029 .140954 .083756 .133985 .113665 bezier .130319 .128188 .119151 .146795 .102235 .142875 closepath ! end of curve fill dfont endchar dfont char="q" !-------------- Beginning of new char. dfont wid=.527779 hei=.444445 dep=.194445 italic=0 set path ! start of curve newpath ! start of curve amove .094615 .156845 bezier .109858 .155109 .123276 .145126 .13208 .132715 bezier .138255 .140732 .143966 .149084 .150495 .156845 aline .164465 .156845 aline .164465 -.052705 aline .1651 -.05334 aline .188595 -.05334 aline .188595 -.069215 aline .18161 -.069215 aline .180975 -.06858 aline .151765 -.06858 aline .15113 -.067945 aline .13843 -.067945 aline .137795 -.06858 aline .108585 -.06858 aline .10795 -.069215 aline .100965 -.069215 aline .100965 -.05334 aline .12446 -.05334 aline .125095 -.052705 aline .125095 .012065 bezier .1163 .594874E-02 .103641 -.185515E-02 .09144 -.00254 bezier .534515E-01 -.716484E-02 .149872E-01 .229659E-01 .013335 .06223 bezier .574832E-02 .986399E-01 .247243E-01 .143878 .064135 .15367 aline .071755 .155575 aline .07493 .155575 aline .075565 .15621 aline .08001 .15621 aline .080645 .156845 aline .094615 .156845 closepath ! end of curve ! start of curve amove .08763 .142875 bezier .637136E-01 .136823 .587067E-01 .107444 .056515 .08763 bezier .056294 .622018E-01 .563952E-01 .344369E-01 .07493 .014605 bezier .094473 .567153E-03 .11933 .193068E-01 .127 .038735 aline .127 .108585 bezier .122113 .126332 .108731 .145855 .088265 .14351 closepath ! end of curve fill dfont endchar dfont char="r" !-------------- Beginning of new char. dfont wid=.42778 hei=.444445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .064135 .156845 aline .064135 .125095 bezier .670816E-01 .128869 .697793E-01 .138465 .074295 .14351 bezier .907395E-01 .165804 .133667 .159744 .140335 .13208 bezier .144153 .113547 .122324 .100297 .107315 .109855 bezier .945617E-01 .11692 .096076 .13595 .103505 .14478 bezier .778892E-01 .145484 .711398E-01 .1145 .06858 .09525 aline .06858 .088265 aline .067945 .08763 aline .067945 .015875 aline .06858 .01524 aline .098425 .01524 aline .098425 -.000635 aline .09017 -.000635 aline .089535 0 aline .05715 0 aline .056515 .000635 aline .042545 .000635 aline .04191 0 aline .01397 0 aline .013335 -.000635 aline .00635 -.000635 aline .00635 .01524 aline .029845 .01524 aline .03048 .015875 aline .03048 .130175 aline .029845 .13081 aline .02921 .13335 aline .027305 .135255 aline .026035 .13589 aline .02413 .136525 aline .023495 .13716 aline .01905 .13716 aline .018415 .137795 aline .00635 .137795 aline .00635 .15367 bezier .255708E-01 .154827 .448854E-01 .155757 .064135 .156845 closepath ! end of curve fill dfont endchar dfont char="s" !-------------- Beginning of new char. dfont wid=.394445 hei=.444445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .0762 .158115 bezier .831986E-01 .157669 .917896E-01 .15417 .09779 .1524 aline .10287 .15494 aline .103505 .155575 aline .107315 .15748 aline .10922 .158115 aline .1143 .158115 aline .11557 .15748 aline .117475 .155575 aline .117475 .113665 aline .11557 .11176 aline .1143 .111125 aline .104775 .111125 aline .103505 .11176 aline .1016 .113665 bezier .103527 .130251 .902334E-01 .146276 .07366 .14732 bezier .591977E-01 .148298 .391453E-01 .14565 .036195 .12827 bezier .345013E-01 .115862 .460494E-01 .106698 .05715 .10414 bezier .829123E-01 .100564 .112561 .932392E-01 .12319 .066675 bezier .133621 .401207E-01 .12033 .463799E-02 .09017 -.000635 bezier .719336E-01 -.476942E-02 .505781E-01 -.296216E-02 .03556 .006985 bezier .286003E-01 .351201E-02 .197764E-01 -.752415E-02 .012065 0 aline .012065 .05207 aline .0127 .05334 aline .01397 .05461 aline .01524 .055245 aline .024765 .055245 aline .026035 .05461 bezier .322474E-01 .039688 .358725E-01 .194631E-01 .05334 .0127 bezier .069808 .617535E-02 .957841E-01 .834068E-02 .1016 .028575 bezier .105848 .438137E-01 .935486E-01 .596583E-01 .078105 .06223 bezier .526045E-01 .658284E-01 .021735 .731784E-01 .013335 .100965 bezier .546231E-02 .127053 .252937E-01 .156712 .05334 .156845 aline .053975 .15748 aline .059055 .15748 aline .05969 .158115 aline .0762 .158115 closepath ! end of curve fill dfont endchar dfont char="t" !-------------- Beginning of new char. dfont wid=.390279 hei=.634921 dep=0 italic=0 dfont fby="w" kadd=-.0277786 dfont fby="y" kadd=-.0277786 set path ! start of curve newpath ! start of curve amove .06858 .221615 aline .06858 .155575 aline .069215 .15494 aline .111125 .15494 aline .111125 .139065 aline .069215 .139065 aline .06858 .13843 aline .06858 .03302 bezier .691051E-01 .233765E-01 .753568E-01 .784675E-02 .08763 .01143 aline .089535 .012065 aline .092075 .013335 aline .094615 .015875 aline .09779 .022225 aline .098425 .02413 aline .099695 .02921 aline .10033 .029845 aline .10033 .03429 aline .100965 .034925 aline .100965 .06096 aline .11684 .06096 bezier .117715 .039871 .118246 .149229E-01 .098425 .001905 bezier .807754E-01 -.677226E-02 .591116E-01 -.272877E-02 .04318 .00762 bezier .035119 .144346E-01 .300778E-01 .247496E-01 .02921 .034925 aline .02921 .13843 aline .028575 .139065 aline .006985 .139065 aline .006985 .15113 bezier .383294E-01 .151647 .507527E-01 .188195 .052705 .21336 aline .052705 .221615 aline .06858 .221615 closepath ! end of curve fill dfont endchar dfont char="u" !-------------- Beginning of new char. dfont wid=.555557 hei=.444445 dep=0 italic=0 dfont fby="w" kadd=-.0277786 set path ! start of curve newpath ! start of curve amove .07239 .156845 aline .07239 .027305 bezier .729021E-01 .203731E-01 .754435E-01 .112219E-01 .084455 .010795 bezier .104174 .386205E-02 .125461 .200319E-01 .12827 .04064 aline .128905 .043815 aline .12954 .04445 aline .12954 .04826 aline .130175 .048895 aline .130175 .130175 aline .12954 .13081 aline .128905 .13335 aline .127 .135255 aline .12573 .13589 aline .123825 .136525 aline .12319 .13716 aline .118745 .13716 aline .11811 .137795 aline .106045 .137795 aline .106045 .15367 bezier .127138 .154906 .148436 .155647 .169545 .156845 aline .169545 .02286 aline .17018 .022225 aline .170815 .019685 aline .17272 .01778 aline .17399 .017145 aline .175895 .01651 aline .17653 .015875 aline .180975 .015875 aline .18161 .01524 aline .193675 .01524 aline .193675 -.000635 aline .18415 -.000635 aline .183515 -.00127 aline .163195 -.00127 aline .16256 -.001905 aline .14224 -.001905 aline .141605 -.00254 aline .13208 -.00254 aline .13208 .020955 bezier .125394 .012784 .115691 -.13623E-03 .102235 -.001905 bezier .787711E-01 -.389599E-02 .477735E-01 -.003282 .036195 .02159 aline .034925 .0254 aline .033655 .03048 aline .033655 .033655 aline .03302 .03429 aline .03302 .130175 aline .032385 .13081 aline .03175 .13335 aline .029845 .135255 aline .028575 .13589 aline .02667 .136525 aline .026035 .13716 aline .02159 .13716 aline .020955 .137795 aline .00889 .137795 aline .00889 .15367 bezier .299832E-01 .154906 .512813E-01 .155647 .07239 .156845 closepath ! end of curve fill dfont endchar dfont char="v" !-------------- Beginning of new char. dfont wid=.527781 hei=.444445 dep=0 italic=.0138884 dfont fby="a" kadd=-.0555553 dfont fby="c" kadd=-.0277786 dfont fby="e" kadd=-.0277786 dfont fby="o" kadd=-.0277786 set path ! start of curve newpath ! start of curve amove .014605 .15494 aline .01524 .154305 aline .040005 .154305 aline .04064 .15367 aline .052705 .15367 aline .05334 .154305 aline .08255 .154305 aline .083185 .15494 aline .09017 .15494 aline .09017 .139065 aline .07112 .139065 bezier .805104E-01 .109761 .934485E-01 .802217E-01 .10414 .0508 bezier .114707 .790542E-01 .127275 .107411 .13589 .13589 aline .13462 .136525 aline .132715 .13716 aline .130175 .137795 aline .12954 .13843 aline .12573 .13843 aline .125095 .139065 aline .11811 .139065 aline .11811 .15494 aline .12319 .15494 aline .123825 .154305 aline .145415 .154305 aline .14605 .15367 aline .154305 .15367 aline .15494 .154305 aline .172085 .154305 aline .17272 .15494 aline .177165 .15494 aline .177165 .139065 bezier .16739 .13885 .153054 .14045 .15113 .127635 bezier .134194 .852492E-01 .119776 .041252 .100965 0 aline .097155 -.001905 aline .088265 -.001905 bezier .775167E-01 .34785E-02 .780089E-01 .183202E-01 .07239 .02794 bezier .582855E-01 .650136E-01 .439962E-01 .102011 .029845 .139065 aline .008255 .139065 aline .008255 .15494 aline .014605 .15494 closepath ! end of curve fill dfont endchar dfont char="w" !-------------- Beginning of new char. dfont wid=.722224 hei=.444445 dep=0 italic=.0138884 dfont fby="a" kadd=-.0277786 dfont fby="c" kadd=-.0277786 dfont fby="e" kadd=-.0277786 dfont fby="o" kadd=-.0277786 set path ! start of curve newpath ! start of curve amove .01397 .15494 aline .014605 .154305 aline .038735 .154305 aline .03937 .15367 aline .050165 .15367 aline .0508 .154305 aline .0762 .154305 aline .076835 .15494 aline .083185 .15494 aline .083185 .139065 aline .06858 .139065 bezier .769149E-01 .112179 .878335E-01 .834716E-01 .097155 .05588 bezier .104631 .075423 .112315 .969607E-01 .11811 .116205 aline .116205 .12192 aline .11557 .12319 aline .11176 .13462 aline .111125 .13589 aline .11049 .137795 aline .109855 .139065 aline .09398 .139065 aline .09398 .15494 aline .09906 .15494 aline .099695 .154305 aline .118745 .154305 aline .11938 .15367 aline .12954 .15367 aline .130175 .154305 aline .156845 .154305 aline .15748 .15494 aline .164465 .15494 aline .164465 .139065 aline .14478 .139065 bezier .153898 .108577 .165548 .772433E-01 .17653 .04699 bezier .186184 .076627 .198717 .106024 .206375 .13589 aline .205105 .136525 aline .202565 .13716 aline .19939 .137795 aline .198755 .13843 aline .19431 .13843 aline .193675 .139065 aline .186055 .139065 aline .186055 .15494 aline .19177 .15494 aline .192405 .154305 aline .215265 .154305 aline .2159 .15367 aline .224155 .15367 aline .22479 .154305 aline .2413 .154305 aline .241935 .15494 aline .245745 .15494 aline .245745 .139065 aline .236855 .139065 aline .23622 .13843 aline .231775 .13843 aline .23114 .137795 aline .227965 .13716 aline .225425 .13589 bezier .208502 .918056E-01 .194373 .462539E-01 .1778 .001905 bezier .173014 -.388495E-02 .161149 -.385219E-02 .15748 .003175 bezier .147427 .324294E-01 .137053 .615506E-01 .127 .090805 bezier .115717 .607203E-01 .107234 .289115E-01 .09398 0 aline .09271 -.000635 aline .092075 -.00127 aline .09017 -.001905 aline .081915 -.001905 aline .08001 -.00127 aline .07874 -.000635 aline .0762 .001905 bezier .595259E-01 .473817E-01 .443104E-01 .934625E-01 .02794 .139065 aline .008255 .139065 aline .008255 .15494 aline .01397 .15494 closepath ! end of curve fill dfont endchar dfont char="x" !-------------- Beginning of new char. dfont wid=.527781 hei=.444445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .01397 .15494 aline .014605 .154305 aline .038735 .154305 aline .03937 .15367 aline .0508 .15367 aline .051435 .154305 aline .079375 .154305 aline .08001 .15494 aline .086995 .15494 aline .086995 .139065 aline .071755 .139065 bezier .077837 .126162 .885931E-01 .113487 .968375E-01 .101124 bezier .105101 .112146 .115468 .124025 .121285 .13589 aline .117475 .13716 aline .114935 .137795 aline .1143 .13843 aline .111125 .13843 aline .11049 .139065 aline .10541 .139065 aline .10541 .15494 aline .111125 .15494 aline .11176 .154305 aline .13589 .154305 aline .136525 .15367 aline .146685 .15367 aline .14732 .154305 aline .167005 .154305 aline .16764 .15494 aline .17272 .15494 aline .17272 .139065 bezier .15927 .138624 .142161 .141297 .13589 .126365 bezier .125991 .113291 .116372 .100015 .106839 .866775E-01 bezier .122581 .625021E-01 .139287 .390219E-01 .155575 .01524 aline .17907 .01524 aline .17907 -.000635 aline .173355 -.000635 aline .17272 0 aline .14859 0 aline .147955 .000635 aline .136525 .000635 aline .13589 0 aline .10795 0 aline .107315 -.000635 aline .100965 -.000635 aline .100965 .01524 aline .116205 .01524 bezier .107819 .288395E-01 .965032E-01 .460545E-01 .861484E-01 .586317E-01 bezier .774875E-01 .450291E-01 .650181E-01 .323624E-01 .05842 .018415 aline .05969 .01778 aline .06477 .01651 aline .065405 .015875 aline .06858 .015875 aline .069215 .01524 aline .074295 .01524 aline .074295 -.000635 aline .067945 -.000635 aline .06731 0 aline .04318 0 aline .042545 .000635 aline .03302 .000635 aline .032385 0 aline .012065 0 aline .01143 -.000635 aline .006985 -.000635 aline .006985 .01524 bezier .200771E-01 .015923 .369465E-01 .128061E-01 .04318 .027305 bezier .545518E-01 .425021E-01 .659262E-01 .576973E-01 .766763E-01 .733425E-01 bezier .062077 .955211E-01 .468797E-01 .117269 .03175 .139065 aline .008255 .139065 aline .008255 .15494 aline .01397 .15494 closepath ! end of curve fill dfont endchar dfont char="y" !-------------- Beginning of new char. dfont wid=.527781 hei=.444445 dep=.194445 italic=.0138884 dfont fby="," kadd=-.083334 dfont fby="." kadd=-.083334 dfont fby="a" kadd=-.0277786 dfont fby="e" kadd=-.0277786 dfont fby="o" kadd=-.0277786 set path ! start of curve newpath ! start of curve amove .014605 .15494 aline .01524 .154305 aline .040005 .154305 aline .04064 .15367 aline .052705 .15367 aline .05334 .154305 aline .08255 .154305 aline .083185 .15494 aline .09017 .15494 aline .09017 .139065 aline .07112 .139065 bezier .806995E-01 .110263 .931984E-01 .809648E-01 .10414 .05207 bezier .114932 .796649E-01 .127118 .107923 .13589 .13589 aline .13462 .136525 aline .132715 .13716 aline .12954 .137795 aline .128905 .13843 aline .12573 .13843 aline .125095 .139065 aline .11811 .139065 aline .11811 .15494 aline .12319 .15494 aline .123825 .154305 aline .145415 .154305 aline .14605 .15367 aline .154305 .15367 aline .15494 .154305 aline .172085 .154305 aline .17272 .15494 aline .177165 .15494 aline .177165 .139065 bezier .168143 .138493 .154572 .140891 .151765 .12954 bezier .128637 .718897E-01 .108802 .012685 .083185 -.043815 bezier .711474E-01 -.653569E-01 .400734E-01 -.08147 .018415 -.0635 bezier .004119 -.525149E-01 .217139E-02 -.228609E-01 .023495 -.01905 bezier .392996E-01 -.154146E-01 .528978E-01 -.322488E-01 .046355 -.04699 aline .04445 -.0508 aline .040005 -.055245 aline .038735 -.05588 aline .0381 -.056515 aline .03556 -.057785 bezier .480808E-01 -.622288E-01 .061601 -.506983E-01 .067945 -.040005 bezier .074268 -.269709E-01 .08005 -.129242E-01 .08382 .000635 bezier .650904E-01 .463297E-01 .480321E-01 .930264E-01 .029845 .139065 aline .008255 .139065 aline .008255 .15494 aline .014605 .15494 closepath ! end of curve ! start of curve amove .02921 -.05461 aline .029845 -.055245 aline .03048 -.05461 aline .029845 -.053975 aline .02921 -.05461 closepath ! end of curve ! start of curve amove .03048 -.05461 aline .029845 -.055245 aline .03048 -.05588 aline .031115 -.055245 aline .03048 -.05461 closepath ! end of curve ! start of curve amove .031115 -.05588 aline .03175 -.056515 aline .032385 -.05588 aline .03175 -.055245 aline .031115 -.05588 closepath ! end of curve ! start of curve amove .032385 -.05588 aline .03175 -.056515 aline .032385 -.05715 aline .03302 -.056515 aline .032385 -.05588 closepath ! end of curve ! start of curve amove .03302 -.05715 aline .033655 -.057785 aline .03429 -.05715 aline .033655 -.056515 aline .03302 -.05715 closepath ! end of curve fill dfont endchar dfont char="z" !-------------- Beginning of new char. dfont wid=.444446 hei=.444445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .135255 .15494 bezier .145634 .149542 .135685 .138317 .131445 .13208 bezier .107058 .920894E-01 .793918E-01 .052635 .056515 .0127 bezier .783323E-01 .124209E-01 .107307 .101079E-01 .11811 .033655 bezier .122672 .457448E-01 .124132 .577205E-01 .125095 .06985 aline .14097 .06985 bezier .138776 .463871E-01 .136814 .022828 .13462 -.000635 aline .014605 -.000635 bezier .594376E-02 .317248E-02 .111641E-01 .141069E-01 .015875 .01905 bezier .413314E-01 .604379E-01 .697602E-01 .102121 .09398 .142875 bezier .738625E-01 .142814 .472071E-01 .146103 .03683 .12446 bezier .327509E-01 .114301 .317885E-01 .104444 .031115 .09398 aline .01524 .09398 bezier .166348E-01 .114336 .182902E-01 .134584 .019685 .15494 closepath ! end of curve fill dfont endchar dfont char="{" !-------------- Beginning of new char. dfont wid=.500002 hei=.444445 dep=0 italic=.0277786 set path ! start of curve newpath ! start of curve amove .17526 .1016 aline .17526 .089535 aline .000635 .089535 aline .000635 .1016 aline .17526 .1016 closepath ! end of curve fill dfont endchar dfont char="|" !-------------- Beginning of new char. dfont wid=1 hei=.444445 dep=0 italic=.0277786 set path ! start of curve newpath ! start of curve amove .35052 .1016 aline .35052 .089535 aline .000635 .089535 aline .000635 .1016 aline .35052 .1016 closepath ! end of curve fill dfont endchar dfont char="}" !-------------- Beginning of new char. dfont wid=.500002 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .070485 .24892 bezier .863024E-01 .248515 .992382E-01 .228591 .086995 .2159 bezier .771467E-01 .204034 .664705E-01 .192764 .056515 .180975 aline .042545 .18796 bezier .441274E-01 .203612 .480847E-01 .220633 .051435 .236855 aline .05334 .240665 aline .05461 .241935 aline .055245 .243205 aline .056515 .244475 aline .057785 .24511 aline .059055 .24638 aline .061595 .24765 aline .0635 .248285 aline .066675 .24892 aline .070485 .24892 closepath ! end of curve ! start of curve amove .128905 .24892 bezier .144722 .248515 .157658 .228591 .145415 .2159 bezier .135567 .204034 .124891 .192764 .114935 .180975 aline .100965 .18796 bezier .102547 .203612 .106505 .220633 .109855 .236855 aline .11176 .240665 aline .11303 .241935 aline .113665 .243205 aline .114935 .244475 aline .116205 .24511 aline .117475 .24638 aline .120015 .24765 aline .12192 .248285 aline .125095 .24892 aline .128905 .24892 closepath ! end of curve fill dfont endchar dfont char="~" !-------------- Beginning of new char. dfont wid=.500002 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .070485 .24257 bezier .901844E-01 .24026 .11179 .223447 .13081 .236855 aline .136525 .24257 bezier .139613 .23889 .149907 .235931 .142875 .23114 bezier .133854 .219135 .122449 .201235 .104775 .206375 bezier .848434E-01 .207793 .639514E-01 .225028 .045085 .211455 aline .03937 .20574 bezier .362824E-01 .20942 .025988 .212379 .03302 .21717 bezier .421172E-01 .229219 .525571E-01 .245905 .070485 .24257 closepath ! end of curve fill dfont endchar dfont char=127 !-------------- Beginning of new char. dfont wid=.500002 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .05842 .243205 bezier .080425 .239483 .870531E-01 .207904 .06731 .19685 bezier .049749 .184272 .241172E-01 .20277 .02921 .22352 aline .03048 .22733 aline .032385 .23114 aline .03302 .231775 aline .033655 .233045 aline .03937 .23876 aline .04064 .239395 aline .041275 .24003 aline .043815 .2413 aline .047625 .24257 aline .050165 .243205 closepath ! end of curve ! start of curve amove .12573 .243205 bezier .148397 .240458 .154753 .207045 .13462 .196215 bezier .115007 .183591 .887446E-01 .207072 .098425 .22733 aline .09906 .229235 aline .099695 .230505 aline .10033 .23114 aline .100965 .23241 aline .107315 .23876 aline .108585 .239395 aline .10922 .24003 aline .11176 .2413 aline .11557 .24257 aline .117475 .243205 closepath ! end of curve fill dfont endchar gle-graphics-4.2.4c/src/fonts/texcmsy.afm0000664000000000000000000001543111676336540017051 0ustar rootrootStartFontMetrics 2.0 Comment Made from TEX tfm file using TFMTOAFM.bas FontName CMSY10 EncodingScheme TEXENCODING FullName CMSY10 FamilyName CMSY10 Weight Medium ItalicAngle 14.0363 IsFixedPitch false UnderlinePosition -97 UnderlineThickness 73 FontBBox 0 -300 1001 1001 CapHeight 729 XHeight 151 Descender -219 Ascender 729 StartCharMetrics 127 C 1 ; WX 277 ; N C1 ; B 0 56 277 444 ; C 2 ; WX 777 ; N C2 ; B 0 -83 777 583 ; C 3 ; WX 500 ; N C3 ; B 0 35 500 465 ; C 4 ; WX 777 ; N C4 ; B 0 -83 777 583 ; C 5 ; WX 500 ; N C5 ; B 0 56 500 444 ; C 6 ; WX 777 ; N C6 ; B 0 -83 777 583 ; C 7 ; WX 777 ; N C7 ; B 0 -83 777 583 ; C 8 ; WX 777 ; N C8 ; B 0 -83 777 583 ; C 9 ; WX 777 ; N C9 ; B 0 -83 777 583 ; C 10 ; WX 777 ; N C10 ; B 0 -83 777 583 ; C 11 ; WX 777 ; N C11 ; B 0 -83 777 583 ; C 12 ; WX 777 ; N C12 ; B 0 -83 777 583 ; C 13 ; WX 1000 ; N C13 ; B 0 -194 1000 694 ; C 14 ; WX 500 ; N C14 ; B 0 56 500 444 ; C 15 ; WX 500 ; N C15 ; B 0 56 500 444 ; C 16 ; WX 777 ; N C16 ; B 0 37 777 463 ; C 17 ; WX 777 ; N C17 ; B 0 37 777 463 ; C 18 ; WX 777 ; N C18 ; B 0 -135 777 635 ; C 19 ; WX 777 ; N C19 ; B 0 -135 777 635 ; C 20 ; WX 777 ; N C20 ; B 0 -135 777 635 ; C 21 ; WX 777 ; N C21 ; B 0 -135 777 635 ; C 22 ; WX 777 ; N C22 ; B 0 -135 777 635 ; C 23 ; WX 777 ; N C23 ; B 0 -135 777 635 ; C 24 ; WX 777 ; N C24 ; B 0 134 777 366 ; C 25 ; WX 777 ; N C25 ; B 0 17 777 483 ; C 26 ; WX 777 ; N C26 ; B 0 -39 777 539 ; C 27 ; WX 777 ; N C27 ; B 0 -39 777 539 ; C 28 ; WX 1000 ; N C28 ; B 0 -39 1000 539 ; C 29 ; WX 1000 ; N C29 ; B 0 -39 1000 539 ; C 30 ; WX 777 ; N C30 ; B 0 -39 777 539 ; C 31 ; WX 777 ; N C31 ; B 0 -39 777 539 ; C 32 ; WX 1000 ; N C32 ; B 0 134 1000 366 ; C 33 ; WX 1000 ; N C33 ; B 0 134 1000 366 ; C 34 ; WX 500 ; N C34 ; B 0 -194 500 694 ; C 35 ; WX 500 ; N C35 ; B 0 -194 500 694 ; C 36 ; WX 1000 ; N C36 ; B 0 134 1000 366 ; C 37 ; WX 1000 ; N C37 ; B 0 -194 1000 694 ; C 38 ; WX 1000 ; N C38 ; B 0 -194 1000 694 ; C 39 ; WX 777 ; N C39 ; B 0 37 777 463 ; C 40 ; WX 1000 ; N C40 ; B 0 134 1000 366 ; C 41 ; WX 1000 ; N C41 ; B 0 134 1000 366 ; C 42 ; WX 611 ; N C42 ; B 0 -194 611 694 ; C 43 ; WX 611 ; N C43 ; B 0 -194 611 694 ; C 44 ; WX 1000 ; N C44 ; B 0 134 1000 366 ; C 45 ; WX 1000 ; N C45 ; B 0 -194 1000 694 ; C 46 ; WX 1000 ; N C46 ; B 0 -194 1000 694 ; C 47 ; WX 777 ; N C47 ; B 0 0 777 430 ; C 48 ; WX 274 ; N C48 ; B 0 0 274 555 ; C 49 ; WX 1000 ; N C49 ; B 0 0 1000 430 ; C 50 ; WX 666 ; N C50 ; B 0 -39 666 539 ; C 51 ; WX 666 ; N C51 ; B 0 -39 666 539 ; C 52 ; WX 888 ; N C52 ; B 0 -194 888 694 ; C 53 ; WX 888 ; N C53 ; B 0 -194 888 694 ; C 54 ; WX 0 ; N C54 ; B 0 -194 0 694 ; C 55 ; WX 0 ; N C55 ; B 0 134 0 366 ; C 56 ; WX 555 ; N C56 ; B 0 0 555 694 ; C 57 ; WX 555 ; N C57 ; B 0 0 555 694 ; C 58 ; WX 666 ; N C58 ; B 0 0 666 430 ; C 59 ; WX 500 ; N C59 ; B 0 -55 500 750 ; C 60 ; WX 722 ; N C60 ; B 0 0 722 694 ; C 61 ; WX 722 ; N C61 ; B 0 0 722 694 ; C 62 ; WX 777 ; N C62 ; B 0 0 777 694 ; C 63 ; WX 777 ; N C63 ; B 0 0 777 694 ; C 64 ; WX 611 ; N C64 ; B 0 0 611 694 ; C 65 ; WX 798 ; N A ; B 0 0 798 683 ; C 66 ; WX 656 ; N B ; B 0 0 656 683 ; C 67 ; WX 526 ; N C ; B 0 0 526 683 ; C 68 ; WX 771 ; N D ; B 0 0 771 683 ; C 69 ; WX 527 ; N E ; B 0 0 527 683 ; C 70 ; WX 718 ; N F ; B 0 0 718 683 ; C 71 ; WX 594 ; N G ; B 0 -97 594 683 ; C 72 ; WX 844 ; N H ; B 0 0 844 683 ; C 73 ; WX 544 ; N I ; B 0 0 544 683 ; C 74 ; WX 677 ; N J ; B 0 -97 677 683 ; C 75 ; WX 761 ; N K ; B 0 0 761 683 ; C 76 ; WX 689 ; N L ; B 0 0 689 683 ; C 77 ; WX 1200 ; N M ; B 0 0 1200 683 ; C 78 ; WX 820 ; N N ; B 0 0 820 683 ; C 79 ; WX 796 ; N O ; B 0 0 796 683 ; C 80 ; WX 695 ; N P ; B 0 0 695 683 ; C 81 ; WX 816 ; N Q ; B 0 -97 816 683 ; C 82 ; WX 847 ; N R ; B 0 0 847 683 ; C 83 ; WX 605 ; N S ; B 0 0 605 683 ; C 84 ; WX 544 ; N T ; B 0 0 544 683 ; C 85 ; WX 625 ; N U ; B 0 0 625 683 ; C 86 ; WX 612 ; N V ; B 0 0 612 683 ; C 87 ; WX 987 ; N W ; B 0 0 987 683 ; C 88 ; WX 713 ; N X ; B 0 0 713 683 ; C 89 ; WX 668 ; N Y ; B 0 -97 668 683 ; C 90 ; WX 724 ; N Z ; B 0 0 724 683 ; C 91 ; WX 666 ; N C91 ; B 0 0 666 555 ; C 92 ; WX 666 ; N C92 ; B 0 0 666 555 ; C 93 ; WX 666 ; N C93 ; B 0 0 666 555 ; C 94 ; WX 666 ; N C94 ; B 0 0 666 555 ; C 95 ; WX 666 ; N C95 ; B 0 0 666 555 ; C 96 ; WX 611 ; N C96 ; B 0 0 611 694 ; C 97 ; WX 611 ; N a ; B 0 0 611 694 ; C 98 ; WX 444 ; N b ; B 0 -250 444 750 ; C 99 ; WX 444 ; N c ; B 0 -250 444 750 ; C 100 ; WX 444 ; N d ; B 0 -250 444 750 ; C 101 ; WX 444 ; N e ; B 0 -250 444 750 ; C 102 ; WX 500 ; N f ; B 0 -250 500 750 ; C 103 ; WX 500 ; N g ; B 0 -250 500 750 ; C 104 ; WX 388 ; N h ; B 0 -250 388 750 ; C 105 ; WX 388 ; N i ; B 0 -250 388 750 ; C 106 ; WX 277 ; N j ; B 0 -250 277 750 ; C 107 ; WX 500 ; N k ; B 0 -250 500 750 ; C 108 ; WX 500 ; N l ; B 0 -250 500 750 ; C 109 ; WX 611 ; N m ; B 0 -250 611 750 ; C 110 ; WX 500 ; N n ; B 0 -250 500 750 ; C 111 ; WX 277 ; N o ; B 0 -194 277 694 ; C 112 ; WX 833 ; N p ; B 0 -960 833 39 ; C 113 ; WX 750 ; N q ; B 0 0 750 683 ; C 114 ; WX 833 ; N r ; B 0 0 833 683 ; C 115 ; WX 416 ; N s ; B 0 -194 416 694 ; C 116 ; WX 666 ; N t ; B 0 0 666 555 ; C 117 ; WX 666 ; N u ; B 0 0 666 555 ; C 118 ; WX 777 ; N v ; B 0 -135 777 635 ; C 119 ; WX 777 ; N w ; B 0 -135 777 635 ; C 120 ; WX 444 ; N x ; B 0 -194 444 694 ; C 121 ; WX 444 ; N y ; B 0 -194 444 694 ; C 122 ; WX 444 ; N z ; B 0 -194 444 694 ; C 123 ; WX 611 ; N C123 ; B 0 -194 611 694 ; C 124 ; WX 777 ; N C124 ; B 0 -129 777 694 ; C 125 ; WX 777 ; N C125 ; B 0 -129 777 694 ; C 126 ; WX 777 ; N C126 ; B 0 -129 777 694 ; C 127 ; WX 777 ; N C127 ; B 0 -129 777 694 ; EndCharMetrics StartKernData StartKernPairs 26 KPX A C48 194 KPX B C48 138 KPX C C48 138 KPX D C48 83 KPX E C48 111 KPX F C48 111 KPX G C48 111 KPX H C48 111 KPX I C48 27 KPX J C48 166 KPX K C48 55 KPX L C48 138 KPX M C48 138 KPX N C48 83 KPX O C48 111 KPX P C48 83 KPX Q C48 111 KPX R C48 83 KPX S C48 138 KPX T C48 27 KPX U C48 83 KPX V C48 27 KPX W C48 83 KPX X C48 138 KPX Y C48 83 KPX Z C48 138 EndKernPairs EndKernData EndFontMetrics gle-graphics-4.2.4c/src/fonts/plci.afm0000664000000000000000000001232211676336540016300 0ustar rootrootStartFontMetrics 2.0 Comment Made from HERSHEY font file using SPLITFONT.BAS FontName plCI EncodingScheme TEXENCODING FullName plCI FamilyName plCI Weight Medium ItalicAngle 0 IsFixedPitch false UnderlinePosition -97 UnderlineThickness 73 FontBBox 0 -400 1001 1001 CapHeight 729 XHeight 151 Descender -219 Ascender 729 StartCharMetrics 95 C 32 ; WX 400 ; N C32 ; B 0 0 0 0 ; C 33 ; WX 415 ; N C33 ; B 161 0 268 700 ; C 34 ; WX 631 ; N C34 ; B 161 430 538 700 ; C 35 ; WX 846 ; N C35 ; B 161 0 699 592 ; C 36 ; WX 523 ; N C36 ; B 107 430 430 753 ; C 37 ; WX 784 ; N C37 ; B 99 0 700 700 ; C 38 ; WX 846 ; N C38 ; B 161 0 699 592 ; C 39 ; WX 361 ; N C39 ; B 161 430 214 700 ; C 40 ; WX 523 ; N C40 ; B 161 -215 430 861 ; C 41 ; WX 523 ; N C41 ; B 107 -215 376 861 ; C 42 ; WX 523 ; N C42 ; B 161 -215 376 861 ; C 43 ; WX 577 ; N C43 ; B 214 -215 376 861 ; C 44 ; WX 415 ; N C44 ; B 161 -161 268 107 ; C 45 ; WX 523 ; N C45 ; B 107 -215 376 861 ; C 46 ; WX 415 ; N C46 ; B 161 0 268 107 ; C 47 ; WX 792 ; N C47 ; B 107 -215 700 861 ; C 48 ; WX 685 ; N C48 ; B 107 0 592 700 ; C 49 ; WX 685 ; N C49 ; B 161 0 538 700 ; C 50 ; WX 685 ; N C50 ; B 107 0 592 700 ; C 51 ; WX 685 ; N C51 ; B 107 0 592 700 ; C 52 ; WX 685 ; N C52 ; B 53 0 646 700 ; C 53 ; WX 685 ; N C53 ; B 107 0 592 700 ; C 54 ; WX 685 ; N C54 ; B 107 0 592 700 ; C 55 ; WX 685 ; N C55 ; B 107 0 592 700 ; C 56 ; WX 685 ; N C56 ; B 107 0 592 700 ; C 57 ; WX 685 ; N C57 ; B 107 0 592 700 ; C 58 ; WX 415 ; N C58 ; B 161 0 268 484 ; C 59 ; WX 415 ; N C59 ; B 161 -161 268 484 ; C 60 ; WX 784 ; N C60 ; B 133 0 666 600 ; C 61 ; WX 577 ; N C61 ; B 214 -215 376 861 ; C 62 ; WX 784 ; N C62 ; B 133 0 666 600 ; C 63 ; WX 685 ; N C63 ; B 107 0 592 700 ; C 64 ; WX 884 ; N C64 ; B 99 0 799 700 ; C 65 ; WX 739 ; N C65 ; B -107 0 646 700 ; C 66 ; WX 792 ; N C66 ; B 0 0 700 700 ; C 67 ; WX 685 ; N C67 ; B 107 0 700 700 ; C 68 ; WX 792 ; N C68 ; B 0 0 700 700 ; C 69 ; WX 792 ; N C69 ; B 0 0 753 700 ; C 70 ; WX 739 ; N C70 ; B 0 0 753 700 ; C 71 ; WX 739 ; N C71 ; B 107 0 700 700 ; C 72 ; WX 900 ; N C72 ; B 0 0 915 700 ; C 73 ; WX 469 ; N C73 ; B 0 0 484 700 ; C 74 ; WX 631 ; N C74 ; B 0 0 646 700 ; C 75 ; WX 846 ; N C75 ; B 0 0 915 700 ; C 76 ; WX 685 ; N C76 ; B 0 0 592 700 ; C 77 ; WX 1008 ; N C77 ; B 0 0 1023 700 ; C 78 ; WX 846 ; N C78 ; B 0 0 861 700 ; C 79 ; WX 739 ; N C79 ; B 107 0 646 700 ; C 80 ; WX 792 ; N C80 ; B 0 0 753 700 ; C 81 ; WX 739 ; N C81 ; B 107 -161 646 700 ; C 82 ; WX 846 ; N C82 ; B 0 0 753 700 ; C 83 ; WX 792 ; N C83 ; B 53 0 753 700 ; C 84 ; WX 792 ; N C84 ; B 161 0 807 700 ; C 85 ; WX 900 ; N C85 ; B 161 0 915 700 ; C 86 ; WX 739 ; N C86 ; B 107 0 861 700 ; C 87 ; WX 954 ; N C87 ; B 161 0 1023 700 ; C 88 ; WX 792 ; N C88 ; B -53 0 861 700 ; C 89 ; WX 685 ; N C89 ; B 107 0 807 700 ; C 90 ; WX 685 ; N C90 ; B 0 0 700 700 ; C 91 ; WX 451 ; N C91 ; B 133 -233 366 833 ; C 92 ; WX 300 ; N C92 ; B 0 0 0 0 ; C 93 ; WX 451 ; N C93 ; B 99 -233 333 833 ; C 94 ; WX 300 ; N C94 ; B 0 0 0 0 ; C 95 ; WX 300 ; N C95 ; B 0 0 0 0 ; C 96 ; WX 318 ; N C96 ; B 133 500 199 700 ; C 97 ; WX 792 ; N C97 ; B 107 0 753 484 ; C 98 ; WX 739 ; N C98 ; B 161 0 646 700 ; C 99 ; WX 685 ; N C99 ; B 107 0 592 484 ; C 100 ; WX 792 ; N C100 ; B 107 0 753 700 ; C 101 ; WX 631 ; N C101 ; B 107 0 538 484 ; C 102 ; WX 577 ; N C102 ; B -53 -215 592 700 ; C 103 ; WX 739 ; N C103 ; B 53 -215 646 484 ; C 104 ; WX 792 ; N C104 ; B 53 0 753 700 ; C 105 ; WX 523 ; N C105 ; B 53 0 484 700 ; C 106 ; WX 523 ; N C106 ; B 0 -215 430 700 ; C 107 ; WX 685 ; N C107 ; B 53 0 592 700 ; C 108 ; WX 415 ; N C108 ; B 107 0 376 700 ; C 109 ; WX 1277 ; N C109 ; B 53 0 1238 484 ; C 110 ; WX 900 ; N C110 ; B 53 0 861 484 ; C 111 ; WX 685 ; N C111 ; B 107 0 592 484 ; C 112 ; WX 792 ; N C112 ; B 0 -215 700 484 ; C 113 ; WX 739 ; N C113 ; B 107 -215 646 484 ; C 114 ; WX 631 ; N C114 ; B 53 0 592 484 ; C 115 ; WX 685 ; N C115 ; B 107 0 592 484 ; C 116 ; WX 469 ; N C116 ; B 107 0 376 700 ; C 117 ; WX 900 ; N C117 ; B 53 0 861 484 ; C 118 ; WX 739 ; N C118 ; B 53 0 646 484 ; C 119 ; WX 1062 ; N C119 ; B 53 0 969 484 ; C 120 ; WX 846 ; N C120 ; B 107 0 753 484 ; C 121 ; WX 846 ; N C121 ; B 53 -215 753 484 ; C 122 ; WX 739 ; N C122 ; B 107 0 646 484 ; C 123 ; WX 485 ; N C123 ; B 166 -233 333 833 ; C 124 ; WX 523 ; N C124 ; B 161 -215 430 861 ; C 125 ; WX 485 ; N C125 ; B 166 -233 333 833 ; C 126 ; WX 523 ; N C126 ; B 161 484 376 700 ; EndCharMetrics EndFontMetrics gle-graphics-4.2.4c/src/fonts/texcmssb.afm0000664000000000000000000002067711676336540017215 0ustar rootrootStartFontMetrics 2.0 Comment Made from TEX tfm file using TFMTOAFM.bas FontName CMSSBX10 EncodingScheme TEXENCODING FullName CMSSBX10 FamilyName CMSSBX10 Weight Medium ItalicAngle 0 IsFixedPitch false UnderlinePosition -97 UnderlineThickness 73 FontBBox 0 -300 1001 1001 CapHeight 729 XHeight 161 Descender -219 Ascender 729 StartCharMetrics 127 C 1 ; WX 916 ; N C1 ; B 0 0 916 694 ; C 2 ; WX 855 ; N C2 ; B 0 0 855 694 ; C 3 ; WX 672 ; N C3 ; B 0 0 672 694 ; C 4 ; WX 733 ; N C4 ; B 0 0 733 694 ; C 5 ; WX 794 ; N C5 ; B 0 0 794 694 ; C 6 ; WX 794 ; N C6 ; B 0 0 794 694 ; C 7 ; WX 855 ; N C7 ; B 0 0 855 694 ; C 8 ; WX 794 ; N C8 ; B 0 0 794 694 ; C 9 ; WX 855 ; N C9 ; B 0 0 855 694 ; C 10 ; WX 794 ; N C10 ; B 0 0 794 694 ; C 11 ; WX 641 ; N C11 ; B 0 0 641 694 ; L i C14 L l C15 C 12 ; WX 586 ; N C12 ; B 0 0 586 694 ; C 13 ; WX 586 ; N C13 ; B 0 0 586 694 ; C 14 ; WX 891 ; N C14 ; B 0 0 891 694 ; C 15 ; WX 891 ; N C15 ; B 0 0 891 694 ; C 16 ; WX 255 ; N C16 ; B 0 0 255 458 ; C 17 ; WX 286 ; N C17 ; B 0 -194 286 458 ; C 18 ; WX 550 ; N C18 ; B 0 0 550 694 ; C 19 ; WX 550 ; N C19 ; B 0 0 550 694 ; C 20 ; WX 550 ; N C20 ; B 0 0 550 635 ; C 21 ; WX 550 ; N C21 ; B 0 0 550 694 ; C 22 ; WX 550 ; N C22 ; B 0 0 550 637 ; C 23 ; WX 733 ; N C23 ; B 0 0 733 694 ; C 24 ; WX 488 ; N C24 ; B 0 -170 488 0 ; C 25 ; WX 565 ; N C25 ; B 0 0 565 694 ; C 26 ; WX 794 ; N C26 ; B 0 0 794 458 ; C 27 ; WX 855 ; N C27 ; B 0 0 855 458 ; C 28 ; WX 550 ; N C28 ; B 0 -97 550 555 ; C 29 ; WX 947 ; N C29 ; B 0 0 947 694 ; C 30 ; WX 1069 ; N C30 ; B 0 0 1069 694 ; C 31 ; WX 855 ; N C31 ; B 0 -48 855 743 ; C 32 ; WX 257 ; N C32 ; B 0 0 257 458 ; C 33 ; WX 366 ; N C33 ; B 0 0 366 694 ; C 34 ; WX 558 ; N C34 ; B 0 0 558 694 ; C 35 ; WX 916 ; N C35 ; B 0 -194 916 694 ; C 36 ; WX 550 ; N C36 ; B 0 -55 550 750 ; C 37 ; WX 1029 ; N C37 ; B 0 -55 1029 750 ; C 38 ; WX 830 ; N C38 ; B 0 0 830 694 ; C 39 ; WX 305 ; N C39 ; B 0 0 305 694 ; L C39 C34 C 40 ; WX 427 ; N C40 ; B 0 -250 427 750 ; C 41 ; WX 427 ; N C41 ; B 0 -250 427 750 ; C 42 ; WX 550 ; N C42 ; B 0 0 550 750 ; C 43 ; WX 855 ; N C43 ; B 0 -116 855 616 ; C 44 ; WX 305 ; N C44 ; B 0 -105 305 130 ; C 45 ; WX 366 ; N C45 ; B 0 0 366 458 ; C 46 ; WX 305 ; N C46 ; B 0 0 305 130 ; C 47 ; WX 550 ; N C47 ; B 0 -250 550 750 ; C 48 ; WX 550 ; N C48 ; B 0 0 550 694 ; C 49 ; WX 550 ; N C49 ; B 0 0 550 694 ; C 50 ; WX 550 ; N C50 ; B 0 0 550 694 ; C 51 ; WX 550 ; N C51 ; B 0 0 550 694 ; C 52 ; WX 550 ; N C52 ; B 0 0 550 694 ; C 53 ; WX 550 ; N C53 ; B 0 0 550 694 ; C 54 ; WX 550 ; N C54 ; B 0 0 550 694 ; C 55 ; WX 550 ; N C55 ; B 0 0 550 694 ; C 56 ; WX 550 ; N C56 ; B 0 0 550 694 ; C 57 ; WX 550 ; N C57 ; B 0 0 550 694 ; C 58 ; WX 305 ; N C58 ; B 0 0 305 458 ; C 59 ; WX 305 ; N C59 ; B 0 -105 305 458 ; C 60 ; WX 366 ; N C60 ; B 0 -194 366 500 ; C 61 ; WX 855 ; N C61 ; B 0 94 855 406 ; C 62 ; WX 519 ; N C62 ; B 0 -194 519 500 ; C 63 ; WX 519 ; N C63 ; B 0 0 519 694 ; C 64 ; WX 733 ; N C64 ; B 0 0 733 694 ; C 65 ; WX 733 ; N A ; B 0 0 733 694 ; C 66 ; WX 733 ; N B ; B 0 0 733 694 ; C 67 ; WX 702 ; N C ; B 0 0 702 694 ; C 68 ; WX 794 ; N D ; B 0 0 794 694 ; C 69 ; WX 641 ; N E ; B 0 0 641 694 ; C 70 ; WX 611 ; N F ; B 0 0 611 694 ; C 71 ; WX 733 ; N G ; B 0 0 733 694 ; C 72 ; WX 794 ; N H ; B 0 0 794 694 ; C 73 ; WX 330 ; N I ; B 0 0 330 694 ; C 74 ; WX 519 ; N J ; B 0 0 519 694 ; C 75 ; WX 763 ; N K ; B 0 0 763 694 ; C 76 ; WX 580 ; N L ; B 0 0 580 694 ; C 77 ; WX 977 ; N M ; B 0 0 977 694 ; C 78 ; WX 794 ; N N ; B 0 0 794 694 ; C 79 ; WX 794 ; N O ; B 0 0 794 694 ; C 80 ; WX 702 ; N P ; B 0 0 702 694 ; C 81 ; WX 794 ; N Q ; B 0 -105 794 694 ; C 82 ; WX 702 ; N R ; B 0 0 702 694 ; C 83 ; WX 611 ; N S ; B 0 0 611 694 ; C 84 ; WX 733 ; N T ; B 0 0 733 694 ; C 85 ; WX 763 ; N U ; B 0 0 763 694 ; C 86 ; WX 733 ; N V ; B 0 0 733 694 ; C 87 ; WX 1038 ; N W ; B 0 0 1038 694 ; C 88 ; WX 733 ; N X ; B 0 0 733 694 ; C 89 ; WX 733 ; N Y ; B 0 0 733 694 ; C 90 ; WX 672 ; N Z ; B 0 0 672 694 ; C 91 ; WX 343 ; N C91 ; B 0 -250 343 750 ; C 92 ; WX 558 ; N C92 ; B 0 0 558 694 ; C 93 ; WX 343 ; N C93 ; B 0 -250 343 750 ; C 94 ; WX 550 ; N C94 ; B 0 0 550 694 ; C 95 ; WX 305 ; N C95 ; B 0 0 305 694 ; C 96 ; WX 305 ; N C96 ; B 0 0 305 694 ; C 97 ; WX 525 ; N a ; B 0 0 525 458 ; C 98 ; WX 561 ; N b ; B 0 0 561 694 ; C 99 ; WX 488 ; N c ; B 0 0 488 458 ; C 100 ; WX 561 ; N d ; B 0 0 561 694 ; C 101 ; WX 511 ; N e ; B 0 0 511 458 ; C 102 ; WX 336 ; N f ; B 0 0 336 694 ; L f C11 L i C12 L l C13 C 103 ; WX 550 ; N g ; B 0 -194 550 458 ; C 104 ; WX 561 ; N h ; B 0 0 561 694 ; C 105 ; WX 255 ; N i ; B 0 0 255 694 ; C 106 ; WX 286 ; N j ; B 0 -194 286 694 ; C 107 ; WX 530 ; N k ; B 0 0 530 694 ; C 108 ; WX 255 ; N l ; B 0 0 255 694 ; C 109 ; WX 866 ; N m ; B 0 0 866 458 ; C 110 ; WX 561 ; N n ; B 0 0 561 458 ; C 111 ; WX 550 ; N o ; B 0 0 550 458 ; C 112 ; WX 561 ; N p ; B 0 -194 561 458 ; C 113 ; WX 561 ; N q ; B 0 -194 561 458 ; C 114 ; WX 372 ; N r ; B 0 0 372 458 ; C 115 ; WX 421 ; N s ; B 0 0 421 458 ; C 116 ; WX 404 ; N t ; B 0 0 404 589 ; C 117 ; WX 561 ; N u ; B 0 0 561 458 ; C 118 ; WX 500 ; N v ; B 0 0 500 458 ; C 119 ; WX 744 ; N w ; B 0 0 744 458 ; C 120 ; WX 500 ; N x ; B 0 0 500 458 ; C 121 ; WX 500 ; N y ; B 0 -194 500 458 ; C 122 ; WX 476 ; N z ; B 0 0 476 458 ; C 123 ; WX 550 ; N C123 ; B 0 0 550 458 ; C 124 ; WX 1100 ; N C124 ; B 0 0 1100 458 ; C 125 ; WX 550 ; N C125 ; B 0 0 550 694 ; C 126 ; WX 550 ; N C126 ; B 0 0 550 694 ; C 127 ; WX 550 ; N C127 ; B 0 0 550 694 ; EndCharMetrics StartKernData StartKernPairs 143 KPX C11 C33 76 KPX C11 C39 76 KPX C11 C41 76 KPX C11 C63 76 KPX C11 C93 76 KPX C32 L -294 KPX C32 l -256 KPX C39 C33 122 KPX C39 C63 122 KPX A C -31 KPX A G -31 KPX A O -31 KPX A Q -31 KPX A T -92 KPX A U -31 KPX A V -123 KPX A W -123 KPX A Y -92 KPX A t -31 KPX D A -31 KPX D V -31 KPX D W -31 KPX D X -31 KPX D Y -31 KPX F A -92 KPX F C -31 KPX F G -31 KPX F O -31 KPX F Q -31 KPX F a -31 KPX F e -31 KPX F o -31 KPX F r -31 KPX F u -31 KPX I I 30 KPX K C -31 KPX K G -31 KPX K O -31 KPX K Q -31 KPX L T -92 KPX L V -123 KPX L W -123 KPX L Y -92 KPX O A -31 KPX O V -31 KPX O W -31 KPX O X -31 KPX O Y -31 KPX P C44 -92 KPX P C46 -92 KPX P A -92 KPX P a -31 KPX P e -31 KPX P o -31 KPX T A -92 KPX T a -92 KPX T e -92 KPX T o -92 KPX T r -92 KPX T u -92 KPX T y -92 KPX V A -92 KPX V C -31 KPX V G -31 KPX V O -31 KPX V Q -31 KPX V a -31 KPX V e -31 KPX V o -31 KPX V r -31 KPX V u -31 KPX W A -92 KPX W C -31 KPX W G -31 KPX W O -31 KPX W Q -31 KPX W a -31 KPX W e -31 KPX W o -31 KPX W r -31 KPX W u -31 KPX X C -31 KPX X G -31 KPX X O -31 KPX X Q -31 KPX Y A -92 KPX Y a -92 KPX Y e -92 KPX Y o -92 KPX Y r -92 KPX Y u -92 KPX a r -31 KPX a w -31 KPX a y -31 KPX b c 30 KPX b d 30 KPX b e 30 KPX b o 30 KPX b q 30 KPX b r -31 KPX b w -31 KPX b x -31 KPX b y -31 KPX f C33 76 KPX f C39 76 KPX f C41 76 KPX f C63 76 KPX f C93 76 KPX g j 30 KPX k a -31 KPX k c -31 KPX k e -31 KPX k o -31 KPX o c 30 KPX o d 30 KPX o e 30 KPX o o 30 KPX o q 30 KPX o r -31 KPX o w -31 KPX o x -31 KPX o y -31 KPX p c 30 KPX p d 30 KPX p e 30 KPX p o 30 KPX p q 30 KPX p r -31 KPX p w -31 KPX p x -31 KPX p y -31 KPX t w -31 KPX t y -31 KPX u w -31 KPX w a -31 KPX w c -31 KPX w e -31 KPX w o -31 KPX y C44 -92 KPX y C46 -92 KPX y a -31 KPX y e -31 KPX y o -31 EndKernPairs EndKernData EndFontMetrics gle-graphics-4.2.4c/src/fonts/texcmb.afm0000664000000000000000000002177511676336540016647 0ustar rootrootStartFontMetrics 2.0 Comment Made from TEX tfm file using TFMTOAFM.bas FontName CMB10 EncodingScheme TEXENCODING FullName CMB10 FamilyName CMB10 Weight Medium ItalicAngle 0 IsFixedPitch false UnderlinePosition -97 UnderlineThickness 73 FontBBox 0 -300 1001 1001 CapHeight 729 XHeight 156 Descender -219 Ascender 729 StartCharMetrics 127 C 1 ; WX 833 ; N C1 ; B 0 0 833 686 ; C 2 ; WX 777 ; N C2 ; B 0 0 777 686 ; C 3 ; WX 700 ; N C3 ; B 0 0 700 686 ; C 4 ; WX 666 ; N C4 ; B 0 0 666 686 ; C 5 ; WX 783 ; N C5 ; B 0 0 783 686 ; C 6 ; WX 722 ; N C6 ; B 0 0 722 686 ; C 7 ; WX 777 ; N C7 ; B 0 0 777 686 ; C 8 ; WX 722 ; N C8 ; B 0 0 722 686 ; C 9 ; WX 777 ; N C9 ; B 0 0 777 686 ; C 10 ; WX 722 ; N C10 ; B 0 0 722 686 ; C 11 ; WX 583 ; N C11 ; B 0 0 583 694 ; L i C14 L l C15 C 12 ; WX 555 ; N C12 ; B 0 0 555 694 ; C 13 ; WX 555 ; N C13 ; B 0 0 555 694 ; C 14 ; WX 833 ; N C14 ; B 0 0 833 694 ; C 15 ; WX 833 ; N C15 ; B 0 0 833 694 ; C 16 ; WX 277 ; N C16 ; B 0 0 277 444 ; C 17 ; WX 305 ; N C17 ; B 0 -194 305 444 ; C 18 ; WX 500 ; N C18 ; B 0 0 500 694 ; C 19 ; WX 500 ; N C19 ; B 0 0 500 694 ; C 20 ; WX 500 ; N C20 ; B 0 0 500 631 ; C 21 ; WX 500 ; N C21 ; B 0 0 500 694 ; C 22 ; WX 500 ; N C22 ; B 0 0 500 596 ; C 23 ; WX 755 ; N C23 ; B 0 0 755 694 ; C 24 ; WX 444 ; N C24 ; B 0 -170 444 0 ; C 25 ; WX 559 ; N C25 ; B 0 0 559 694 ; C 26 ; WX 722 ; N C26 ; B 0 0 722 444 ; C 27 ; WX 777 ; N C27 ; B 0 0 777 444 ; C 28 ; WX 500 ; N C28 ; B 0 -97 500 541 ; C 29 ; WX 905 ; N C29 ; B 0 0 905 686 ; C 30 ; WX 1016 ; N C30 ; B 0 0 1016 686 ; C 31 ; WX 777 ; N C31 ; B 0 -48 777 734 ; C 32 ; WX 234 ; N C32 ; B 0 0 234 444 ; C 33 ; WX 305 ; N C33 ; B 0 0 305 694 ; C 34 ; WX 544 ; N C34 ; B 0 0 544 694 ; C 35 ; WX 833 ; N C35 ; B 0 -194 833 694 ; C 36 ; WX 500 ; N C36 ; B 0 -55 500 750 ; C 37 ; WX 833 ; N C37 ; B 0 -55 833 750 ; C 38 ; WX 777 ; N C38 ; B 0 0 777 694 ; C 39 ; WX 277 ; N C39 ; B 0 0 277 694 ; L C39 C34 C 40 ; WX 388 ; N C40 ; B 0 -250 388 750 ; C 41 ; WX 388 ; N C41 ; B 0 -250 388 750 ; C 42 ; WX 500 ; N C42 ; B 0 0 500 750 ; C 43 ; WX 777 ; N C43 ; B 0 -83 777 583 ; C 44 ; WX 277 ; N C44 ; B 0 -194 277 155 ; C 45 ; WX 333 ; N C45 ; B 0 0 333 444 ; C 46 ; WX 277 ; N C46 ; B 0 0 277 155 ; C 47 ; WX 500 ; N C47 ; B 0 -250 500 750 ; C 48 ; WX 500 ; N C48 ; B 0 0 500 644 ; C 49 ; WX 500 ; N C49 ; B 0 0 500 644 ; C 50 ; WX 500 ; N C50 ; B 0 0 500 644 ; C 51 ; WX 500 ; N C51 ; B 0 0 500 644 ; C 52 ; WX 500 ; N C52 ; B 0 0 500 644 ; C 53 ; WX 500 ; N C53 ; B 0 0 500 644 ; C 54 ; WX 500 ; N C54 ; B 0 0 500 644 ; C 55 ; WX 500 ; N C55 ; B 0 0 500 644 ; C 56 ; WX 500 ; N C56 ; B 0 0 500 644 ; C 57 ; WX 500 ; N C57 ; B 0 0 500 644 ; C 58 ; WX 277 ; N C58 ; B 0 0 277 444 ; C 59 ; WX 277 ; N C59 ; B 0 -194 277 444 ; C 60 ; WX 305 ; N C60 ; B 0 -194 305 500 ; C 61 ; WX 777 ; N C61 ; B 0 109 777 391 ; C 62 ; WX 472 ; N C62 ; B 0 -194 472 500 ; C 63 ; WX 472 ; N C63 ; B 0 0 472 694 ; C 64 ; WX 777 ; N C64 ; B 0 0 777 694 ; C 65 ; WX 755 ; N A ; B 0 0 755 686 ; C 66 ; WX 711 ; N B ; B 0 0 711 686 ; C 67 ; WX 722 ; N C ; B 0 0 722 686 ; C 68 ; WX 766 ; N D ; B 0 0 766 686 ; C 69 ; WX 655 ; N E ; B 0 0 655 686 ; C 70 ; WX 627 ; N F ; B 0 0 627 686 ; C 71 ; WX 786 ; N G ; B 0 0 786 686 ; C 72 ; WX 783 ; N H ; B 0 0 783 686 ; C 73 ; WX 397 ; N I ; B 0 0 397 686 ; C 74 ; WX 516 ; N J ; B 0 0 516 686 ; C 75 ; WX 783 ; N K ; B 0 0 783 686 ; C 76 ; WX 600 ; N L ; B 0 0 600 686 ; C 77 ; WX 950 ; N M ; B 0 0 950 686 ; C 78 ; WX 783 ; N N ; B 0 0 783 686 ; C 79 ; WX 750 ; N O ; B 0 0 750 686 ; C 80 ; WX 683 ; N P ; B 0 0 683 686 ; C 81 ; WX 750 ; N Q ; B 0 -194 750 686 ; C 82 ; WX 759 ; N R ; B 0 0 759 686 ; C 83 ; WX 555 ; N S ; B 0 0 555 686 ; C 84 ; WX 694 ; N T ; B 0 0 694 686 ; C 85 ; WX 769 ; N U ; B 0 0 769 686 ; C 86 ; WX 755 ; N V ; B 0 0 755 686 ; C 87 ; WX 1033 ; N W ; B 0 0 1033 686 ; C 88 ; WX 755 ; N X ; B 0 0 755 686 ; C 89 ; WX 755 ; N Y ; B 0 0 755 686 ; C 90 ; WX 611 ; N Z ; B 0 0 611 686 ; C 91 ; WX 280 ; N C91 ; B 0 -250 280 750 ; C 92 ; WX 544 ; N C92 ; B 0 0 544 694 ; C 93 ; WX 280 ; N C93 ; B 0 -250 280 750 ; C 94 ; WX 500 ; N C94 ; B 0 0 500 694 ; C 95 ; WX 277 ; N C95 ; B 0 0 277 694 ; C 96 ; WX 277 ; N C96 ; B 0 0 277 694 ; C 97 ; WX 486 ; N a ; B 0 0 486 444 ; C 98 ; WX 555 ; N b ; B 0 0 555 694 ; C 99 ; WX 444 ; N c ; B 0 0 444 444 ; C 100 ; WX 555 ; N d ; B 0 0 555 694 ; C 101 ; WX 466 ; N e ; B 0 0 466 444 ; C 102 ; WX 305 ; N f ; B 0 0 305 694 ; L f C11 L i C12 L l C13 C 103 ; WX 500 ; N g ; B 0 -194 500 444 ; C 104 ; WX 555 ; N h ; B 0 0 555 694 ; C 105 ; WX 277 ; N i ; B 0 0 277 694 ; C 106 ; WX 305 ; N j ; B 0 -194 305 694 ; C 107 ; WX 527 ; N k ; B 0 0 527 694 ; C 108 ; WX 277 ; N l ; B 0 0 277 694 ; C 109 ; WX 833 ; N m ; B 0 0 833 444 ; C 110 ; WX 555 ; N n ; B 0 0 555 444 ; C 111 ; WX 500 ; N o ; B 0 0 500 444 ; C 112 ; WX 555 ; N p ; B 0 -194 555 444 ; C 113 ; WX 527 ; N q ; B 0 -194 527 444 ; C 114 ; WX 427 ; N r ; B 0 0 427 444 ; C 115 ; WX 394 ; N s ; B 0 0 394 444 ; C 116 ; WX 390 ; N t ; B 0 0 390 634 ; C 117 ; WX 555 ; N u ; B 0 0 555 444 ; C 118 ; WX 527 ; N v ; B 0 0 527 444 ; C 119 ; WX 722 ; N w ; B 0 0 722 444 ; C 120 ; WX 527 ; N x ; B 0 0 527 444 ; C 121 ; WX 527 ; N y ; B 0 -194 527 444 ; C 122 ; WX 444 ; N z ; B 0 0 444 444 ; C 123 ; WX 500 ; N C123 ; B 0 0 500 444 ; C 124 ; WX 1000 ; N C124 ; B 0 0 1000 444 ; C 125 ; WX 500 ; N C125 ; B 0 0 500 694 ; C 126 ; WX 500 ; N C126 ; B 0 0 500 694 ; C 127 ; WX 500 ; N C127 ; B 0 0 500 694 ; EndCharMetrics StartKernData StartKernPairs 181 KPX C11 C33 111 KPX C11 C39 111 KPX C11 C41 111 KPX C11 C63 111 KPX C11 C93 111 KPX C32 L -338 KPX C32 l -278 KPX C39 C33 111 KPX C39 C63 111 KPX A C -28 KPX A G -28 KPX A O -28 KPX A Q -28 KPX A T -84 KPX A U -28 KPX A V -112 KPX A W -112 KPX A Y -84 KPX A t -28 KPX D A -28 KPX D V -28 KPX D W -28 KPX D X -28 KPX D Y -28 KPX F A -112 KPX F C -28 KPX F G -28 KPX F O -28 KPX F Q -28 KPX F a -84 KPX F e -84 KPX F o -84 KPX F r -84 KPX F u -84 KPX I I 27 KPX K C -28 KPX K G -28 KPX K O -28 KPX K Q -28 KPX L T -84 KPX L V -112 KPX L W -112 KPX L Y -84 KPX O A -28 KPX O V -28 KPX O W -28 KPX O X -28 KPX O Y -28 KPX P C44 -84 KPX P C46 -84 KPX P A -84 KPX P a -28 KPX P e -28 KPX P o -28 KPX R C -28 KPX R G -28 KPX R O -28 KPX R Q -28 KPX R T -84 KPX R U -28 KPX R V -112 KPX R W -112 KPX R Y -84 KPX R t -28 KPX T A -84 KPX T a -84 KPX T e -84 KPX T o -84 KPX T r -84 KPX T u -84 KPX T y -28 KPX V A -112 KPX V C -28 KPX V G -28 KPX V O -28 KPX V Q -28 KPX V a -84 KPX V e -84 KPX V o -84 KPX V r -84 KPX V u -84 KPX W A -112 KPX W C -28 KPX W G -28 KPX W O -28 KPX W Q -28 KPX W a -84 KPX W e -84 KPX W o -84 KPX W r -84 KPX W u -84 KPX X C -28 KPX X G -28 KPX X O -28 KPX X Q -28 KPX Y A -84 KPX Y a -84 KPX Y e -84 KPX Y o -84 KPX Y r -84 KPX Y u -84 KPX a j 55 KPX a v -28 KPX a w -28 KPX a y -28 KPX b c 27 KPX b d 27 KPX b e 27 KPX b j 55 KPX b o 27 KPX b q 27 KPX b v -28 KPX b w -28 KPX b x -28 KPX b y -28 KPX c h -28 KPX c k -28 KPX f C33 111 KPX f C39 111 KPX f C41 111 KPX f C63 111 KPX f C93 111 KPX g j 27 KPX h b -28 KPX h t -28 KPX h u -28 KPX h v -28 KPX h w -28 KPX h y -28 KPX k a -56 KPX k c -28 KPX k e -28 KPX k o -28 KPX m b -28 KPX m t -28 KPX m u -28 KPX m v -28 KPX m w -28 KPX m y -28 KPX n b -28 KPX n t -28 KPX n u -28 KPX n v -28 KPX n w -28 KPX n y -28 KPX o c 27 KPX o d 27 KPX o e 27 KPX o j 55 KPX o o 27 KPX o q 27 KPX o v -28 KPX o w -28 KPX o x -28 KPX o y -28 KPX p c 27 KPX p d 27 KPX p e 27 KPX p j 55 KPX p o 27 KPX p q 27 KPX p v -28 KPX p w -28 KPX p x -28 KPX p y -28 KPX t w -28 KPX t y -28 KPX u w -28 KPX v a -56 KPX v c -28 KPX v e -28 KPX v o -28 KPX w a -28 KPX w c -28 KPX w e -28 KPX w o -28 KPX y C44 -84 KPX y C46 -84 KPX y a -28 KPX y e -28 KPX y o -28 EndKernPairs EndKernData EndFontMetrics gle-graphics-4.2.4c/src/fonts/texcmitt.afm0000664000000000000000000001435011676336540017215 0ustar rootrootStartFontMetrics 2.0 Comment Made from TEX tfm file using TFMTOAFM.bas FontName CMITT10 EncodingScheme TEXENCODING FullName CMITT10 FamilyName CMITT10 Weight Medium ItalicAngle 14.0363 IsFixedPitch false UnderlinePosition -97 UnderlineThickness 73 FontBBox 0 -300 1001 1001 CapHeight 729 XHeight 151 Descender -219 Ascender 729 StartCharMetrics 127 C 1 ; WX 524 ; N C1 ; B 0 0 524 611 ; C 2 ; WX 524 ; N C2 ; B 0 0 524 611 ; C 3 ; WX 524 ; N C3 ; B 0 0 524 611 ; C 4 ; WX 524 ; N C4 ; B 0 0 524 611 ; C 5 ; WX 524 ; N C5 ; B 0 0 524 611 ; C 6 ; WX 524 ; N C6 ; B 0 0 524 611 ; C 7 ; WX 524 ; N C7 ; B 0 0 524 611 ; C 8 ; WX 524 ; N C8 ; B 0 0 524 611 ; C 9 ; WX 524 ; N C9 ; B 0 0 524 611 ; C 10 ; WX 524 ; N C10 ; B 0 0 524 611 ; C 11 ; WX 524 ; N C11 ; B 0 0 524 611 ; C 12 ; WX 524 ; N C12 ; B 0 0 524 611 ; C 13 ; WX 524 ; N C13 ; B 0 0 524 611 ; C 14 ; WX 524 ; N C14 ; B 0 -222 524 388 ; C 15 ; WX 524 ; N C15 ; B 0 -222 524 388 ; C 16 ; WX 524 ; N C16 ; B 0 0 524 430 ; C 17 ; WX 524 ; N C17 ; B 0 -222 524 430 ; C 18 ; WX 524 ; N C18 ; B 0 0 524 611 ; C 19 ; WX 524 ; N C19 ; B 0 0 524 611 ; C 20 ; WX 524 ; N C20 ; B 0 0 524 565 ; C 21 ; WX 524 ; N C21 ; B 0 0 524 611 ; C 22 ; WX 524 ; N C22 ; B 0 0 524 565 ; C 23 ; WX 524 ; N C23 ; B 0 0 524 611 ; C 24 ; WX 524 ; N C24 ; B 0 -194 524 0 ; C 25 ; WX 524 ; N C25 ; B 0 -222 524 611 ; C 26 ; WX 524 ; N C26 ; B 0 0 524 430 ; C 27 ; WX 524 ; N C27 ; B 0 0 524 430 ; C 28 ; WX 524 ; N C28 ; B 0 -111 524 541 ; C 29 ; WX 524 ; N C29 ; B 0 0 524 611 ; C 30 ; WX 524 ; N C30 ; B 0 0 524 611 ; C 31 ; WX 524 ; N C31 ; B 0 -55 524 666 ; C 32 ; WX 369 ; N C32 ; B 0 -111 369 219 ; C 33 ; WX 524 ; N C33 ; B 0 0 524 611 ; C 34 ; WX 524 ; N C34 ; B 0 0 524 611 ; C 35 ; WX 524 ; N C35 ; B 0 0 524 611 ; C 36 ; WX 524 ; N C36 ; B 0 0 524 611 ; C 37 ; WX 524 ; N C37 ; B 0 -83 524 694 ; C 38 ; WX 524 ; N C38 ; B 0 0 524 611 ; C 39 ; WX 524 ; N C39 ; B 0 0 524 611 ; C 40 ; WX 524 ; N C40 ; B 0 -83 524 694 ; C 41 ; WX 524 ; N C41 ; B 0 -83 524 694 ; C 42 ; WX 524 ; N C42 ; B 0 0 524 520 ; C 43 ; WX 524 ; N C43 ; B 0 81 524 530 ; C 44 ; WX 524 ; N C44 ; B 0 -138 524 125 ; C 45 ; WX 524 ; N C45 ; B 0 81 524 530 ; C 46 ; WX 524 ; N C46 ; B 0 0 524 125 ; C 47 ; WX 524 ; N C47 ; B 0 -83 524 694 ; C 48 ; WX 524 ; N C48 ; B 0 0 524 611 ; C 49 ; WX 524 ; N C49 ; B 0 0 524 611 ; C 50 ; WX 524 ; N C50 ; B 0 0 524 611 ; C 51 ; WX 524 ; N C51 ; B 0 0 524 611 ; C 52 ; WX 524 ; N C52 ; B 0 -222 524 611 ; C 53 ; WX 524 ; N C53 ; B 0 0 524 611 ; C 54 ; WX 524 ; N C54 ; B 0 0 524 611 ; C 55 ; WX 524 ; N C55 ; B 0 -222 524 611 ; C 56 ; WX 524 ; N C56 ; B 0 0 524 611 ; C 57 ; WX 524 ; N C57 ; B 0 0 524 611 ; C 58 ; WX 524 ; N C58 ; B 0 0 524 430 ; C 59 ; WX 524 ; N C59 ; B 0 -138 524 430 ; C 60 ; WX 524 ; N C60 ; B 0 56 524 555 ; C 61 ; WX 524 ; N C61 ; B 0 196 524 415 ; C 62 ; WX 524 ; N C62 ; B 0 56 524 555 ; C 63 ; WX 524 ; N C63 ; B 0 0 524 611 ; C 64 ; WX 524 ; N C64 ; B 0 0 524 611 ; C 65 ; WX 524 ; N A ; B 0 0 524 611 ; C 66 ; WX 524 ; N B ; B 0 0 524 611 ; C 67 ; WX 524 ; N C ; B 0 0 524 611 ; C 68 ; WX 524 ; N D ; B 0 0 524 611 ; C 69 ; WX 524 ; N E ; B 0 0 524 611 ; C 70 ; WX 524 ; N F ; B 0 0 524 611 ; C 71 ; WX 524 ; N G ; B 0 0 524 611 ; C 72 ; WX 524 ; N H ; B 0 0 524 611 ; C 73 ; WX 524 ; N I ; B 0 0 524 611 ; C 74 ; WX 524 ; N J ; B 0 0 524 611 ; C 75 ; WX 524 ; N K ; B 0 0 524 611 ; C 76 ; WX 524 ; N L ; B 0 0 524 611 ; C 77 ; WX 524 ; N M ; B 0 0 524 611 ; C 78 ; WX 524 ; N N ; B 0 0 524 611 ; C 79 ; WX 524 ; N O ; B 0 0 524 611 ; C 80 ; WX 524 ; N P ; B 0 0 524 611 ; C 81 ; WX 524 ; N Q ; B 0 -138 524 611 ; C 82 ; WX 524 ; N R ; B 0 0 524 611 ; C 83 ; WX 524 ; N S ; B 0 0 524 611 ; C 84 ; WX 524 ; N T ; B 0 0 524 611 ; C 85 ; WX 524 ; N U ; B 0 0 524 611 ; C 86 ; WX 524 ; N V ; B 0 0 524 611 ; C 87 ; WX 524 ; N W ; B 0 0 524 611 ; C 88 ; WX 524 ; N X ; B 0 0 524 611 ; C 89 ; WX 524 ; N Y ; B 0 0 524 611 ; C 90 ; WX 524 ; N Z ; B 0 0 524 611 ; C 91 ; WX 524 ; N C91 ; B 0 -83 524 694 ; C 92 ; WX 524 ; N C92 ; B 0 -83 524 694 ; C 93 ; WX 524 ; N C93 ; B 0 -83 524 694 ; C 94 ; WX 524 ; N C94 ; B 0 0 524 611 ; C 95 ; WX 524 ; N C95 ; B 0 -95 524 0 ; C 96 ; WX 524 ; N C96 ; B 0 0 524 611 ; C 97 ; WX 524 ; N a ; B 0 0 524 430 ; C 98 ; WX 524 ; N b ; B 0 0 524 611 ; C 99 ; WX 524 ; N c ; B 0 0 524 430 ; C 100 ; WX 524 ; N d ; B 0 0 524 611 ; C 101 ; WX 524 ; N e ; B 0 0 524 430 ; C 102 ; WX 524 ; N f ; B 0 -222 524 611 ; C 103 ; WX 524 ; N g ; B 0 -222 524 430 ; C 104 ; WX 524 ; N h ; B 0 0 524 611 ; C 105 ; WX 524 ; N i ; B 0 0 524 611 ; C 106 ; WX 524 ; N j ; B 0 -222 524 611 ; C 107 ; WX 524 ; N k ; B 0 0 524 611 ; C 108 ; WX 524 ; N l ; B 0 0 524 611 ; C 109 ; WX 524 ; N m ; B 0 0 524 430 ; C 110 ; WX 524 ; N n ; B 0 0 524 430 ; C 111 ; WX 524 ; N o ; B 0 0 524 430 ; C 112 ; WX 524 ; N p ; B 0 -222 524 430 ; C 113 ; WX 524 ; N q ; B 0 -222 524 430 ; C 114 ; WX 524 ; N r ; B 0 0 524 430 ; C 115 ; WX 524 ; N s ; B 0 0 524 430 ; C 116 ; WX 524 ; N t ; B 0 0 524 611 ; C 117 ; WX 524 ; N u ; B 0 0 524 430 ; C 118 ; WX 524 ; N v ; B 0 0 524 430 ; C 119 ; WX 524 ; N w ; B 0 0 524 430 ; C 120 ; WX 524 ; N x ; B 0 0 524 430 ; C 121 ; WX 524 ; N y ; B 0 -222 524 430 ; C 122 ; WX 524 ; N z ; B 0 0 524 430 ; C 123 ; WX 524 ; N C123 ; B 0 -83 524 694 ; C 124 ; WX 524 ; N C124 ; B 0 -83 524 694 ; C 125 ; WX 524 ; N C125 ; B 0 -83 524 694 ; C 126 ; WX 524 ; N C126 ; B 0 0 524 611 ; C 127 ; WX 524 ; N C127 ; B 0 0 524 611 ; EndCharMetrics StartKernData StartKernPairs 0 EndKernPairs EndKernData EndFontMetrics gle-graphics-4.2.4c/src/fonts/plcc.gle0000664000000000000000000010704211676336540016302 0ustar rootrootdfont design= 1428 dfont char=33 amove 238 1000 aline 190 904 aline 238 333 aline 285 904 aline 238 1000 amove 238 904 aline 238 619 amove 238 95 aline 190 47 aline 238 0 aline 285 47 aline 238 95 stroke dfont endchar dfont char=34 amove 142 666 aline 190 1000 amove 238 1000 aline 142 666 amove 523 666 aline 571 1000 amove 619 1000 aline 523 666 stroke dfont endchar dfont char=35 amove 190 0 aline 952 0 amove 571 0 aline 571 809 amove 190 428 aline 952 428 stroke dfont endchar dfont char=36 amove 380 428 aline 380 1000 amove 142 857 aline 619 571 amove 619 857 aline 142 571 stroke dfont endchar dfont char=37 amove 142 0 aline 1000 1000 aline 904 952 aline 761 904 aline 619 904 aline 476 952 aline 380 1000 aline 285 1000 aline 190 952 aline 142 857 aline 142 761 aline 238 666 aline 333 666 aline 428 714 aline 476 809 aline 476 904 aline 380 1000 amove 809 333 aline 714 285 aline 666 190 aline 666 95 aline 761 0 aline 857 0 aline 952 47 aline 1000 142 aline 1000 238 aline 904 333 aline 809 333 stroke dfont endchar dfont char=38 amove 190 428 aline 952 428 amove 952 809 aline 190 809 amove 571 809 aline 571 0 stroke dfont endchar dfont char=39 amove 142 666 aline 190 1000 amove 238 1000 aline 142 666 stroke dfont endchar dfont char=40 amove 428 -239 aline 333 -48 aline 285 95 aline 238 333 aline 238 523 aline 285 761 aline 333 904 aline 428 1095 amove 523 1190 aline 428 1095 aline 333 952 aline 238 761 aline 190 523 aline 190 333 aline 238 95 aline 333 -96 aline 428 -239 aline 523 -334 stroke dfont endchar dfont char=41 amove 238 -239 aline 333 -48 aline 380 95 aline 428 333 aline 428 523 aline 380 761 aline 333 904 aline 238 1095 amove 142 1190 aline 238 1095 aline 333 952 aline 428 761 aline 476 523 aline 476 333 aline 428 95 aline 333 -96 aline 238 -239 aline 142 -334 stroke dfont endchar dfont char=42 amove 190 -334 aline 523 428 aline 190 1190 stroke dfont endchar dfont char=43 amove 380 238 aline 333 95 aline 333 -96 aline 380 -239 amove 476 -334 aline 333 -191 aline 285 -48 aline 285 47 aline 333 190 aline 428 285 aline 428 333 aline 238 428 aline 428 523 aline 428 571 aline 333 666 aline 285 809 aline 285 904 aline 333 1047 aline 476 1190 amove 380 1095 aline 333 952 aline 333 761 aline 380 619 stroke dfont endchar dfont char=44 amove 238 0 aline 190 47 aline 238 95 aline 285 47 aline 285 -48 aline 238 -143 aline 190 -191 stroke dfont endchar dfont char=45 amove 142 -334 aline 476 -334 aline 476 1190 aline 142 1190 amove 428 1190 aline 428 -334 stroke dfont endchar dfont char=46 amove 238 95 aline 190 47 aline 238 0 aline 285 47 aline 238 95 stroke dfont endchar dfont char=47 amove 95 -334 aline 952 1190 stroke dfont endchar dfont char=48 amove 428 0 aline 333 47 aline 285 95 aline 238 190 aline 190 428 aline 190 571 aline 238 809 aline 285 904 aline 333 952 aline 428 1000 aline 523 1000 aline 666 952 aline 761 809 aline 809 571 aline 809 428 aline 761 190 aline 666 47 aline 523 0 aline 428 0 aline 285 47 aline 190 190 aline 142 428 aline 142 571 aline 190 809 aline 285 952 aline 428 1000 amove 523 1000 aline 619 952 aline 666 904 aline 714 809 aline 761 571 aline 761 428 aline 714 190 aline 666 95 aline 619 47 aline 523 0 stroke dfont endchar dfont char=49 amove 285 0 aline 714 0 amove 523 0 aline 523 1000 aline 380 857 aline 285 809 amove 476 952 aline 476 0 stroke dfont endchar dfont char=50 amove 142 0 aline 142 142 aline 190 285 aline 285 380 aline 380 428 aline 619 523 aline 761 619 aline 809 714 aline 809 809 aline 761 904 aline 714 952 aline 571 1000 aline 380 1000 aline 238 952 aline 190 904 aline 142 809 aline 142 761 aline 190 714 aline 238 761 aline 190 809 amove 571 1000 aline 666 952 aline 714 904 aline 761 809 aline 761 714 aline 714 619 aline 571 523 aline 380 428 amove 285 142 aline 523 0 aline 714 0 aline 761 47 aline 809 142 aline 809 238 amove 809 142 aline 761 95 aline 666 47 aline 523 47 aline 285 142 aline 190 142 aline 142 95 stroke dfont endchar dfont char=51 amove 190 190 aline 238 238 aline 190 285 aline 142 238 aline 142 190 aline 190 95 aline 238 47 aline 380 0 aline 571 0 aline 714 47 aline 761 95 aline 809 190 aline 809 333 aline 761 428 aline 666 523 aline 571 571 aline 666 619 aline 714 714 aline 714 857 aline 666 952 aline 571 1000 amove 190 809 aline 238 761 aline 190 714 aline 142 761 aline 142 809 aline 190 904 aline 238 952 aline 380 1000 aline 571 1000 aline 714 952 aline 761 857 aline 761 714 aline 714 619 aline 571 571 aline 428 571 amove 714 476 aline 761 333 aline 761 190 aline 714 95 aline 666 47 aline 571 -1 stroke dfont endchar dfont char=52 amove 428 0 aline 761 0 amove 619 0 aline 619 1000 aline 95 285 aline 857 285 amove 571 0 aline 571 904 stroke dfont endchar dfont char=53 amove 190 190 aline 238 238 aline 190 285 aline 142 238 aline 142 190 aline 190 95 aline 238 47 aline 380 0 aline 523 0 aline 666 47 aline 761 142 aline 809 285 aline 809 380 aline 761 523 aline 666 619 aline 523 666 aline 380 666 aline 238 619 aline 142 523 aline 238 1000 aline 714 1000 aline 476 952 aline 238 952 amove 523 666 aline 619 619 aline 714 523 aline 761 380 aline 761 285 aline 714 142 aline 619 47 aline 523 0 stroke dfont endchar dfont char=54 amove 190 333 aline 238 476 aline 333 571 aline 476 619 aline 523 619 aline 666 571 aline 761 476 aline 809 333 aline 809 285 aline 761 142 aline 666 47 aline 523 -1 aline 428 -1 aline 285 47 aline 190 142 aline 142 285 aline 142 571 aline 190 761 aline 238 857 aline 333 952 aline 476 1000 aline 619 1000 aline 714 952 aline 761 857 aline 761 809 aline 714 761 aline 666 809 aline 714 857 amove 476 1000 aline 380 952 aline 285 857 aline 238 761 aline 190 571 aline 190 285 aline 238 142 aline 333 47 aline 428 0 amove 523 0 aline 619 47 aline 714 142 aline 761 285 aline 761 333 aline 714 476 aline 619 571 aline 523 619 stroke dfont endchar dfont char=55 amove 428 0 aline 428 238 aline 476 380 aline 523 476 aline 761 714 amove 619 857 aline 380 952 aline 285 952 aline 190 904 amove 142 999 aline 142 714 amove 142 809 aline 190 904 aline 285 999 aline 380 999 aline 619 857 aline 714 857 aline 761 904 aline 809 999 aline 809 857 aline 761 714 aline 571 476 aline 523 380 aline 476 238 aline 476 -1 stroke dfont endchar dfont char=56 amove 380 0 aline 285 47 aline 238 95 aline 190 190 aline 190 380 aline 238 476 aline 285 523 aline 380 571 aline 285 619 aline 238 714 aline 238 857 aline 285 952 aline 380 1000 aline 571 1000 aline 714 952 aline 761 857 aline 761 714 aline 714 619 aline 571 571 aline 380 571 aline 238 619 aline 190 714 aline 190 857 aline 238 952 aline 380 1000 amove 571 1000 aline 666 952 aline 714 857 aline 714 714 aline 666 619 aline 571 571 aline 714 523 aline 761 476 aline 809 380 aline 809 190 aline 761 95 aline 714 47 aline 571 -1 aline 380 -1 aline 238 47 aline 190 95 aline 142 190 aline 142 380 aline 190 476 aline 238 523 aline 380 571 amove 571 571 aline 666 523 aline 714 476 aline 761 380 aline 761 190 aline 714 95 aline 666 47 aline 571 -1 stroke dfont endchar dfont char=57 amove 761 666 aline 714 523 aline 619 428 aline 476 380 aline 428 380 aline 285 428 aline 190 523 aline 142 666 aline 142 714 aline 190 857 aline 285 952 aline 428 1000 aline 523 1000 aline 666 952 aline 761 857 aline 809 714 aline 809 428 aline 761 238 aline 714 142 aline 619 47 aline 476 0 aline 333 0 aline 238 47 aline 190 142 aline 190 190 aline 238 238 aline 285 190 aline 238 142 amove 428 380 aline 333 428 aline 238 523 aline 190 666 aline 190 714 aline 238 857 aline 333 952 aline 428 1000 amove 523 1000 aline 619 952 aline 714 857 aline 761 714 aline 761 428 aline 714 238 aline 666 142 aline 571 47 aline 476 0 stroke dfont endchar dfont char=58 amove 238 666 aline 190 619 aline 238 571 aline 285 619 aline 238 666 amove 238 95 aline 190 47 aline 238 -1 aline 285 47 aline 238 95 stroke dfont endchar dfont char=59 amove 238 666 aline 190 619 aline 238 571 aline 285 619 aline 238 666 amove 238 0 aline 190 47 aline 238 95 aline 285 47 aline 285 -48 aline 238 -143 aline 190 -191 stroke dfont endchar dfont char=60 amove 952 857 aline 190 428 aline 952 0 stroke dfont endchar dfont char=61 amove 238 -334 aline 380 -191 aline 428 -48 aline 428 47 aline 380 190 aline 285 285 aline 285 333 aline 476 428 aline 285 523 aline 285 571 aline 380 666 aline 428 809 aline 428 904 aline 380 1047 aline 238 1190 amove 333 1095 aline 380 952 aline 380 761 aline 333 619 amove 333 238 aline 380 95 aline 380 -96 aline 333 -239 stroke dfont endchar dfont char=62 amove 190 0 aline 952 428 aline 190 857 stroke dfont endchar dfont char=63 amove 428 95 aline 380 47 aline 428 0 aline 476 47 aline 428 95 amove 428 333 aline 428 476 aline 619 571 aline 666 619 aline 714 714 aline 714 809 aline 666 904 aline 619 952 aline 476 1000 aline 333 1000 aline 238 952 aline 190 904 aline 142 809 aline 142 761 aline 190 714 aline 238 761 aline 190 809 amove 476 1000 aline 571 952 aline 619 904 aline 666 809 aline 666 714 aline 619 619 aline 523 523 stroke dfont endchar dfont char=64 amove 523 238 aline 476 285 aline 428 380 aline 428 523 aline 476 666 aline 571 761 amove 857 761 aline 809 380 aline 809 285 aline 904 238 aline 999 238 aline 1095 333 aline 1142 476 aline 1142 571 aline 1095 714 aline 1047 809 aline 952 904 aline 857 952 aline 714 1000 aline 571 1000 aline 428 952 aline 333 904 aline 238 809 aline 190 714 aline 142 571 aline 142 428 aline 190 285 aline 238 190 aline 333 95 aline 428 47 aline 571 0 aline 714 0 aline 857 47 aline 952 95 aline 1000 142 amove 904 238 aline 857 285 aline 857 380 aline 904 761 amove 857 619 aline 809 714 aline 714 761 aline 571 761 aline 476 714 aline 428 666 aline 380 523 aline 380 380 aline 428 285 aline 523 238 aline 666 238 aline 761 285 aline 809 380 stroke dfont endchar dfont char=65 amove 47 0 aline 333 0 amove 142 0 aline 476 1000 aline 809 0 amove 761 0 aline 476 857 amove 666 285 aline 238 285 amove 619 0 aline 904 0 stroke dfont endchar dfont char=66 amove 95 0 aline 666 0 aline 809 47 aline 857 95 aline 904 190 aline 904 333 aline 857 428 aline 809 476 aline 666 523 aline 285 523 amove 666 523 aline 761 476 aline 809 428 aline 857 333 aline 857 190 aline 809 95 aline 761 47 aline 666 0 amove 285 0 aline 285 1000 amove 238 1000 aline 238 0 amove 95 1000 aline 857 1000 aline 857 714 aline 809 1000 stroke dfont endchar dfont char=67 amove 95 0 aline 666 0 aline 809 47 aline 857 95 aline 904 190 aline 904 333 aline 857 428 aline 809 476 aline 666 523 aline 285 523 amove 666 523 aline 809 571 aline 857 619 aline 904 714 aline 904 809 aline 857 904 aline 809 952 aline 666 1000 aline 95 1000 amove 238 1000 aline 238 0 amove 285 0 aline 285 1000 amove 666 1000 aline 761 952 aline 809 904 aline 857 809 aline 857 714 aline 809 619 aline 761 571 aline 666 523 aline 761 476 aline 809 428 aline 857 333 aline 857 190 aline 809 95 aline 761 47 aline 666 0 stroke dfont endchar dfont char=68 amove 95 0 aline 428 0 amove 285 0 aline 285 1000 amove 238 1000 aline 238 0 amove 95 1000 aline 809 1000 aline 809 714 aline 761 1000 stroke dfont endchar dfont char=69 amove 47 0 aline 47 -334 aline 95 0 amove 47 0 aline 1047 0 aline 1047 -334 aline 1000 0 amove 904 0 aline 904 1000 amove 857 1000 aline 857 0 amove 190 0 aline 238 47 aline 285 142 aline 333 333 aline 380 714 aline 380 1000 amove 238 1000 aline 1047 1000 stroke dfont endchar dfont char=70 amove 95 0 aline 857 0 aline 857 285 aline 809 0 amove 571 333 aline 571 714 amove 571 523 aline 285 523 amove 285 1000 aline 285 0 amove 238 0 aline 238 1000 amove 95 1000 aline 857 1000 aline 857 714 aline 809 1000 stroke dfont endchar dfont char=71 amove 95 142 aline 142 47 aline 190 0 aline 285 0 aline 333 47 aline 380 142 aline 428 380 aline 476 476 aline 523 523 aline 428 476 aline 380 380 aline 333 142 aline 285 47 aline 238 0 amove 571 0 aline 904 0 amove 761 0 aline 761 1000 amove 714 1000 aline 714 0 amove 1238 0 aline 1190 47 aline 1142 142 aline 1095 380 aline 1047 476 aline 952 523 aline 1000 476 aline 1047 380 aline 1095 142 aline 1142 47 aline 1190 0 aline 1285 0 aline 1333 47 aline 1380 142 amove 1285 952 aline 1238 904 aline 1285 857 aline 1333 904 aline 1333 952 aline 1285 1000 aline 1238 1000 aline 1190 952 aline 1142 857 aline 1095 666 aline 1047 571 aline 952 523 aline 523 523 aline 428 571 aline 380 666 aline 333 857 aline 285 952 aline 238 1000 aline 190 1000 aline 142 952 aline 142 904 aline 190 857 aline 238 904 aline 190 952 amove 571 1000 aline 904 1000 stroke dfont endchar dfont char=72 amove 190 190 aline 238 238 aline 190 285 aline 142 238 aline 142 190 aline 190 95 aline 238 47 aline 333 0 aline 571 0 aline 714 47 aline 761 95 aline 809 190 aline 809 333 aline 761 428 aline 666 523 aline 571 571 aline 666 619 aline 714 714 aline 714 857 aline 666 952 aline 571 1000 amove 190 857 aline 142 1000 aline 142 714 aline 190 857 aline 285 952 aline 380 1000 aline 571 1000 aline 714 952 aline 761 857 aline 761 714 aline 714 619 aline 571 571 aline 428 571 amove 714 476 aline 761 333 aline 761 190 aline 714 95 aline 666 47 aline 571 -1 stroke dfont endchar dfont char=73 amove 95 0 aline 428 0 amove 285 0 aline 285 1000 amove 238 1000 aline 238 0 amove 285 95 aline 857 904 amove 857 1000 aline 857 0 amove 904 0 aline 904 1000 amove 1047 1000 aline 714 1000 amove 428 1000 aline 95 1000 amove 714 0 aline 1047 0 stroke dfont endchar dfont char=74 amove 95 0 aline 428 0 amove 285 0 aline 285 1000 amove 238 1000 aline 238 0 amove 285 95 aline 857 904 amove 857 1000 aline 857 0 amove 904 0 aline 904 1000 amove 1047 1000 aline 714 1000 amove 428 1000 aline 95 1000 amove 380 1285 aline 380 1333 aline 333 1333 aline 333 1285 aline 380 1190 aline 476 1142 aline 666 1142 aline 761 1190 aline 809 1285 amove 714 0 aline 1047 0 stroke dfont endchar dfont char=75 amove 95 0 aline 428 0 amove 285 0 aline 285 1000 amove 238 1000 aline 238 0 amove 285 523 aline 619 523 aline 714 571 aline 761 666 aline 809 857 aline 857 952 aline 904 1000 aline 952 1000 aline 1000 952 aline 1000 904 aline 952 857 aline 904 904 aline 952 952 amove 428 1000 aline 95 1000 amove 619 523 aline 714 476 aline 761 380 aline 809 142 aline 857 47 aline 904 0 amove 1047 142 aline 1000 47 aline 952 0 aline 857 0 aline 809 47 aline 761 142 aline 714 380 aline 666 476 aline 619 523 stroke dfont endchar dfont char=76 amove 142 47 aline 190 95 aline 142 142 aline 95 95 aline 95 47 aline 142 0 aline 190 0 aline 238 47 aline 285 142 aline 333 333 aline 380 714 aline 380 1000 amove 238 1000 aline 1095 1000 amove 952 1000 aline 952 0 amove 904 0 aline 904 1000 amove 761 0 aline 1095 0 stroke dfont endchar dfont char=77 amove 95 0 aline 380 0 amove 238 0 aline 238 1000 aline 571 0 aline 904 1000 aline 904 0 amove 952 0 aline 952 1000 amove 904 1000 aline 1095 1000 amove 285 1000 aline 571 142 amove 761 0 aline 1095 0 amove 285 1000 aline 95 1000 stroke dfont endchar dfont char=78 amove 95 0 aline 428 0 amove 285 0 aline 285 1000 amove 238 1000 aline 238 0 amove 714 0 aline 1047 0 amove 904 0 aline 904 1000 amove 857 1000 aline 857 0 amove 857 523 aline 285 523 amove 428 1000 aline 95 1000 amove 714 1000 aline 1047 1000 stroke dfont endchar dfont char=79 amove 476 0 aline 380 47 aline 285 142 aline 238 238 aline 190 428 aline 190 571 aline 238 761 aline 285 857 aline 380 952 aline 476 1000 aline 571 1000 aline 714 952 aline 809 857 aline 857 761 aline 904 571 aline 904 428 aline 857 238 aline 809 142 aline 714 47 aline 571 0 aline 476 0 aline 333 47 aline 238 142 aline 190 238 aline 142 428 aline 142 571 aline 190 761 aline 238 857 aline 333 952 aline 476 1000 amove 571 1000 aline 666 952 aline 761 857 aline 809 761 aline 857 571 aline 857 428 aline 809 238 aline 761 142 aline 666 47 aline 571 0 stroke dfont endchar dfont char=80 amove 95 0 aline 428 0 amove 285 0 aline 285 1000 amove 238 1000 aline 238 0 amove 714 0 aline 1047 0 amove 904 0 aline 904 1000 amove 857 1000 aline 857 0 amove 1047 1000 aline 95 1000 stroke dfont endchar dfont char=81 amove 95 0 aline 428 0 amove 285 0 aline 285 1000 amove 238 1000 aline 238 0 amove 285 476 aline 666 476 aline 809 523 aline 857 571 aline 904 666 aline 904 809 aline 857 904 aline 809 952 aline 666 1000 aline 95 1000 amove 666 1000 aline 761 952 aline 809 904 aline 857 809 aline 857 666 aline 809 571 aline 761 523 aline 666 476 stroke dfont endchar dfont char=82 amove 476 0 aline 380 47 aline 285 142 aline 238 238 aline 190 380 aline 190 619 aline 238 761 aline 285 857 aline 380 952 aline 476 1000 amove 809 857 aline 857 714 aline 857 1000 aline 809 857 aline 714 952 aline 571 1000 aline 476 1000 aline 333 952 aline 238 857 aline 190 761 aline 142 619 aline 142 380 aline 190 238 aline 238 142 aline 333 47 aline 476 0 aline 571 0 aline 714 47 aline 809 142 aline 857 238 stroke dfont endchar dfont char=83 amove 285 0 aline 619 0 amove 476 0 aline 476 1000 amove 428 1000 aline 428 0 amove 142 1000 aline 95 714 aline 95 1000 aline 809 1000 aline 809 714 aline 761 1000 stroke dfont endchar dfont char=84 amove 238 47 aline 285 95 aline 238 142 aline 190 95 aline 190 47 aline 238 0 aline 285 0 aline 380 47 aline 428 95 aline 523 238 aline 857 1000 amove 952 1000 aline 666 1000 amove 333 1000 aline 47 1000 amove 142 1000 aline 476 238 amove 523 238 aline 190 1000 stroke dfont endchar dfont char=85 amove 428 0 aline 761 0 amove 619 0 aline 619 1000 amove 571 1000 aline 571 0 amove 476 142 aline 333 190 aline 238 285 aline 190 428 aline 190 571 aline 238 714 aline 333 809 aline 476 857 aline 714 857 aline 904 809 aline 1000 714 aline 1047 571 aline 1047 428 aline 1000 285 aline 904 190 aline 714 142 aline 476 142 aline 285 190 aline 190 285 aline 142 428 aline 142 571 aline 190 714 aline 285 809 aline 476 857 amove 428 1000 aline 761 1000 amove 714 857 aline 857 809 aline 952 714 aline 1000 571 aline 1000 428 aline 952 285 aline 857 190 aline 714 142 stroke dfont endchar dfont char=86 amove 47 0 aline 333 0 amove 142 0 aline 809 1000 amove 904 1000 aline 619 1000 amove 333 1000 aline 47 1000 amove 142 1000 aline 761 0 amove 809 0 aline 190 1000 amove 619 0 aline 904 0 stroke dfont endchar dfont char=87 amove 95 0 aline 1047 0 aline 1047 -334 aline 1000 0 amove 904 0 aline 904 1000 amove 857 1000 aline 857 0 amove 285 0 aline 285 1000 amove 238 1000 aline 238 0 amove 95 1000 aline 428 1000 amove 714 1000 aline 1047 1000 stroke dfont endchar dfont char=88 amove 428 333 aline 333 380 aline 285 476 aline 285 1000 amove 238 1000 aline 238 476 aline 285 380 aline 428 333 aline 571 333 aline 714 380 aline 809 476 amove 809 0 aline 809 1000 amove 857 1000 aline 857 0 amove 1000 0 aline 666 0 amove 666 1000 aline 1000 1000 amove 428 1000 aline 95 1000 stroke dfont endchar dfont char=89 amove 95 0 aline 1476 0 amove 1333 0 aline 1333 1000 amove 1285 1000 aline 1285 0 amove 809 0 aline 809 1000 amove 761 1000 aline 761 0 amove 285 0 aline 285 1000 amove 238 1000 aline 238 0 amove 95 1000 aline 428 1000 amove 619 1000 aline 952 1000 amove 1142 1000 aline 1476 1000 stroke dfont endchar dfont char=90 amove 95 0 aline 1476 0 aline 1476 -334 aline 1428 0 amove 1333 0 aline 1333 1000 amove 1285 1000 aline 1285 0 amove 809 0 aline 809 1000 amove 761 1000 aline 761 0 amove 285 0 aline 285 1000 amove 238 1000 aline 238 0 amove 95 1000 aline 428 1000 amove 619 1000 aline 952 1000 amove 1142 1000 aline 1476 1000 stroke dfont endchar dfont char=91 amove 190 -334 aline 190 1190 aline 523 1190 amove 238 1190 aline 238 -334 amove 190 -334 aline 523 -334 stroke dfont endchar stroke dfont endchar dfont char=93 amove 142 -334 aline 476 -334 aline 476 1190 aline 142 1190 amove 428 1190 aline 428 -334 stroke dfont endchar stroke dfont endchar stroke dfont endchar dfont char=96 amove 238 904 aline 285 952 aline 238 1000 aline 190 952 aline 190 857 aline 238 761 aline 285 714 stroke dfont endchar dfont char=97 amove 333 0 aline 238 47 aline 190 142 aline 190 238 aline 238 333 aline 333 380 amove 238 571 aline 238 523 aline 190 523 aline 190 571 aline 238 619 aline 333 666 aline 523 666 aline 619 619 aline 666 571 aline 714 476 aline 714 142 aline 761 47 aline 809 0 amove 857 0 aline 809 0 aline 714 47 aline 666 142 aline 666 571 amove 666 476 aline 619 428 aline 333 380 aline 190 333 aline 142 238 aline 142 142 aline 190 47 aline 333 -1 aline 476 -1 aline 571 47 aline 666 142 stroke dfont endchar dfont char=98 amove 142 380 aline 190 523 aline 285 619 aline 428 666 aline 523 666 aline 666 619 aline 761 523 aline 809 380 aline 809 285 aline 761 142 aline 666 47 aline 523 0 aline 428 0 aline 285 47 aline 190 142 aline 142 285 aline 142 476 aline 190 619 aline 285 761 aline 428 857 aline 714 952 aline 761 1000 aline 714 904 aline 619 857 aline 428 809 aline 285 714 aline 190 619 amove 428 666 aline 333 619 aline 238 523 aline 190 380 aline 190 285 aline 238 142 aline 333 47 aline 428 0 amove 523 0 aline 619 47 aline 714 142 aline 761 285 aline 761 380 aline 714 523 aline 619 619 aline 523 666 stroke dfont endchar dfont char=99 amove 95 0 aline 619 0 aline 761 47 aline 809 142 aline 809 190 aline 761 285 aline 619 333 aline 285 333 amove 285 666 aline 285 0 amove 238 0 aline 238 666 amove 95 666 aline 619 666 aline 761 619 aline 809 523 aline 809 476 aline 761 380 aline 619 333 aline 714 380 aline 761 476 aline 761 523 aline 714 619 aline 619 666 amove 619 333 aline 714 285 aline 761 190 aline 761 142 aline 714 47 aline 619 0 stroke dfont endchar dfont char=100 amove 95 0 aline 428 0 amove 285 0 aline 285 666 amove 238 666 aline 238 0 amove 95 666 aline 761 666 aline 761 428 aline 714 666 stroke dfont endchar dfont char=101 amove 142 0 aline 95 -239 aline 95 0 aline 1000 0 aline 1000 -239 aline 952 0 amove 857 0 aline 857 666 amove 809 666 aline 809 0 amove 238 0 aline 285 47 aline 333 190 aline 380 476 aline 380 666 amove 238 666 aline 999 666 stroke dfont endchar dfont char=102 amove 190 380 aline 761 380 aline 761 476 aline 714 571 aline 666 619 aline 571 666 aline 428 666 aline 285 619 aline 190 523 aline 142 380 aline 142 285 aline 190 142 aline 285 47 aline 428 0 aline 523 0 aline 666 47 aline 761 142 amove 714 380 aline 714 523 aline 666 619 amove 428 666 aline 333 619 aline 238 523 aline 190 380 aline 190 285 aline 238 142 aline 333 47 aline 428 0 stroke dfont endchar dfont char=103 amove 95 142 aline 142 47 aline 190 0 aline 285 0 aline 333 47 aline 428 238 aline 523 333 aline 428 285 aline 380 238 aline 285 47 aline 238 0 amove 476 0 aline 809 0 amove 666 0 aline 666 666 amove 619 666 aline 619 0 amove 761 333 aline 857 285 aline 904 238 aline 999 47 aline 1047 -1 amove 1190 142 aline 1142 47 aline 1095 -1 aline 999 -1 aline 952 47 aline 857 238 aline 761 333 amove 809 666 aline 476 666 amove 238 619 aline 190 571 aline 142 619 aline 190 666 aline 238 666 aline 285 619 aline 380 428 aline 428 380 aline 523 333 aline 761 333 aline 857 380 aline 904 428 aline 1000 619 aline 1047 666 aline 1095 666 aline 1142 619 aline 1095 571 aline 1047 619 stroke dfont endchar dfont char=104 amove 190 142 aline 238 190 aline 190 238 aline 142 190 aline 142 142 aline 190 47 aline 333 0 aline 523 0 aline 666 47 aline 714 142 aline 714 190 aline 666 285 aline 523 333 aline 380 333 amove 523 333 aline 666 380 aline 714 476 aline 714 523 aline 666 619 aline 523 666 aline 333 666 aline 238 619 aline 190 571 aline 142 476 aline 142 666 aline 190 571 amove 523 666 aline 619 619 aline 666 523 aline 666 476 aline 619 380 aline 523 333 aline 619 285 aline 666 190 aline 666 142 aline 619 47 aline 523 -1 stroke dfont endchar dfont char=105 amove 95 0 aline 428 0 amove 285 0 aline 285 666 amove 238 666 aline 238 0 amove 285 47 aline 761 619 amove 761 666 aline 761 0 amove 809 0 aline 809 666 amove 952 666 aline 619 666 amove 428 666 aline 95 666 amove 619 0 aline 952 0 stroke dfont endchar dfont char=106 amove 95 0 aline 428 0 amove 285 0 aline 285 666 amove 238 666 aline 238 0 amove 285 47 aline 761 619 amove 761 666 aline 761 0 amove 809 0 aline 809 666 amove 952 666 aline 619 666 amove 428 666 aline 95 666 amove 380 952 aline 380 1000 aline 333 1000 aline 333 952 aline 380 857 aline 476 809 aline 571 809 aline 666 857 aline 714 952 amove 619 0 aline 952 0 stroke dfont endchar dfont char=107 amove 95 0 aline 428 0 amove 285 0 aline 285 666 amove 238 666 aline 238 0 amove 285 333 aline 380 333 aline 523 380 aline 571 428 aline 666 619 aline 714 666 aline 761 666 aline 809 619 aline 761 571 aline 714 619 amove 428 666 aline 95 666 amove 380 333 aline 523 285 aline 571 238 aline 666 47 aline 714 0 amove 857 142 aline 809 47 aline 761 0 aline 666 0 aline 619 47 aline 523 238 aline 476 285 aline 380 333 stroke dfont endchar dfont char=108 amove 190 47 aline 142 95 aline 95 47 aline 142 0 aline 190 0 aline 238 47 aline 285 190 aline 333 476 aline 333 666 amove 190 666 aline 952 666 amove 809 666 aline 809 0 amove 761 0 aline 761 666 amove 619 0 aline 952 0 stroke dfont endchar dfont char=109 amove 95 0 aline 380 0 amove 238 0 aline 238 666 aline 523 0 aline 809 666 aline 809 0 amove 857 0 aline 857 666 amove 809 666 aline 1000 666 amove 1000 0 aline 666 0 amove 523 95 aline 285 666 aline 95 666 stroke dfont endchar dfont char=110 amove 95 0 aline 428 0 amove 285 0 aline 285 666 amove 238 666 aline 238 0 amove 285 333 aline 761 333 amove 761 666 aline 761 0 amove 809 0 aline 809 666 amove 952 666 aline 619 666 amove 428 666 aline 95 666 amove 619 0 aline 952 0 stroke dfont endchar dfont char=111 amove 428 0 aline 333 47 aline 238 142 aline 190 285 aline 190 380 aline 238 523 aline 333 619 aline 428 666 aline 523 666 aline 666 619 aline 761 523 aline 809 380 aline 809 285 aline 761 142 aline 666 47 aline 523 0 aline 428 0 aline 285 47 aline 190 142 aline 142 285 aline 142 380 aline 190 523 aline 285 619 aline 428 666 amove 523 666 aline 619 619 aline 714 523 aline 761 380 aline 761 285 aline 714 142 aline 619 47 aline 523 0 stroke dfont endchar dfont char=112 amove 95 0 aline 428 0 amove 285 0 aline 285 666 amove 238 666 aline 238 0 amove 619 0 aline 952 0 amove 809 0 aline 809 666 amove 761 666 aline 761 0 amove 952 666 aline 95 666 stroke dfont endchar dfont char=113 amove 285 142 aline 380 47 aline 476 0 aline 571 0 aline 714 47 aline 809 142 aline 857 285 aline 857 380 aline 809 523 aline 714 619 aline 571 666 aline 476 666 aline 380 619 aline 285 523 amove 285 666 aline 285 -334 amove 238 -334 aline 238 666 amove 285 666 aline 95 666 amove 571 666 aline 666 619 aline 761 523 aline 809 380 aline 809 285 aline 761 142 aline 666 47 aline 571 0 amove 428 -334 aline 95 -334 stroke dfont endchar dfont char=114 amove 428 0 aline 333 47 aline 238 142 aline 190 285 aline 190 380 aline 238 523 aline 333 619 aline 428 666 amove 714 523 aline 666 476 aline 714 428 aline 761 476 aline 761 523 aline 666 619 aline 571 666 aline 428 666 aline 285 619 aline 190 523 aline 142 380 aline 142 285 aline 190 142 aline 285 47 aline 428 0 aline 523 0 aline 666 47 aline 761 142 stroke dfont endchar dfont char=115 amove 285 0 aline 619 0 amove 476 0 aline 476 666 amove 428 666 aline 428 0 amove 190 666 aline 142 428 aline 142 666 aline 761 666 aline 761 428 aline 714 666 stroke dfont endchar dfont char=116 amove 142 -286 aline 95 -239 aline 47 -286 aline 95 -334 aline 142 -334 aline 238 -286 aline 333 -191 aline 428 0 aline 714 666 amove 809 666 aline 523 666 amove 333 666 aline 47 666 amove 142 666 aline 428 0 amove 428 95 aline 190 666 stroke dfont endchar dfont char=117 amove 285 0 aline 238 47 aline 190 190 aline 190 476 aline 238 619 aline 285 666 amove 476 523 aline 428 619 aline 380 666 aline 285 666 aline 190 619 aline 142 476 aline 142 190 aline 190 47 aline 285 0 aline 380 0 aline 428 47 aline 476 142 amove 523 142 aline 571 47 aline 619 0 aline 714 0 aline 809 47 aline 857 190 aline 857 476 aline 809 619 aline 714 666 aline 619 666 aline 571 619 aline 523 523 amove 714 666 aline 761 619 aline 809 476 aline 809 190 aline 761 47 aline 714 0 amove 666 -334 aline 333 -334 amove 476 -334 aline 476 1000 amove 523 1000 aline 523 -334 amove 523 1000 aline 333 1000 stroke dfont endchar dfont char=118 amove 95 0 aline 380 0 amove 190 0 aline 761 666 amove 857 666 aline 571 666 amove 380 666 aline 95 666 amove 190 666 aline 714 0 amove 761 0 aline 238 666 amove 571 0 aline 857 0 stroke dfont endchar dfont char=119 amove 95 0 aline 952 0 aline 952 -239 aline 904 0 amove 809 0 aline 809 666 amove 761 666 aline 761 0 amove 285 0 aline 285 666 amove 238 666 aline 238 0 amove 95 666 aline 428 666 amove 619 666 aline 952 666 stroke dfont endchar dfont char=120 amove 428 190 aline 333 238 aline 285 333 aline 285 666 amove 238 666 aline 238 333 aline 285 238 aline 428 190 aline 523 190 aline 666 238 aline 761 333 amove 761 666 aline 761 0 amove 809 0 aline 809 666 amove 952 666 aline 619 666 amove 428 666 aline 95 666 amove 619 0 aline 952 0 stroke dfont endchar dfont char=121 amove 95 0 aline 1380 0 amove 1238 0 aline 1238 666 amove 1190 666 aline 1190 0 amove 761 0 aline 761 666 amove 714 666 aline 714 0 amove 285 0 aline 285 666 amove 238 666 aline 238 0 amove 95 666 aline 428 666 amove 571 666 aline 904 666 amove 1047 666 aline 1380 666 stroke dfont endchar dfont char=122 amove 95 0 aline 1380 0 aline 1380 -239 aline 1333 0 amove 1238 0 aline 1238 666 amove 1190 666 aline 1190 0 amove 761 0 aline 761 666 amove 714 666 aline 714 0 amove 285 0 aline 285 666 amove 238 666 aline 238 0 amove 95 666 aline 428 666 amove 571 666 aline 904 666 amove 1047 666 aline 1380 666 stroke dfont endchar dfont char=123 amove 380 238 aline 333 95 aline 333 -96 aline 380 -239 amove 476 -334 aline 333 -191 aline 285 -48 aline 285 47 aline 333 190 aline 428 285 aline 428 333 aline 238 428 aline 428 523 aline 428 571 aline 333 666 aline 285 809 aline 285 904 aline 333 1047 aline 476 1190 amove 380 1095 aline 333 952 aline 333 761 aline 380 619 stroke dfont endchar dfont char=124 amove 190 -334 aline 190 1190 aline 523 1190 amove 238 1190 aline 238 -334 amove 190 -334 aline 523 -334 stroke dfont endchar dfont char=125 amove 238 -334 aline 380 -191 aline 428 -48 aline 428 47 aline 380 190 aline 285 285 aline 285 333 aline 476 428 aline 285 523 aline 285 571 aline 380 666 aline 428 809 aline 428 904 aline 380 1047 aline 238 1190 amove 333 1095 aline 380 952 aline 380 761 aline 333 619 amove 333 238 aline 380 95 aline 380 -96 aline 333 -239 stroke dfont endchar dfont char=126 amove 285 1000 aline 190 952 aline 142 857 aline 142 761 aline 190 666 aline 285 619 aline 380 619 aline 476 666 aline 523 761 aline 523 857 aline 476 952 aline 380 1000 aline 285 1000 stroke dfont endchar gle-graphics-4.2.4c/src/fonts/psfont.dat0000664000000000000000000000106411676336540016670 0ustar rootrootPSHC Helvetica-Condensed PSHCB Helvetica-Condensed-Bold PSHCBO Helvetica-Condensed-BoldObl PSHCDO Helvetica-Condensed-Oblique PSHN Helvetica-Narrow PSHNB Helvetica-Narrow-Bold PSHNBO Helvetica-Narrow-BoldOblique PSHNO Helvetica-Narrow-Oblique ARIAL8 ArialCyrMT ARIAL8B ArialCyrMT-Bold ARIAL8I ArialCyrMT-Italic ARIAL8BI ArialCyrMT-BoldItalic COUR8 ERKurierKOI8RRegular COUR8B ERKurierKOI8RBold COUR8I ERKurierKOI8RItalic COUR8BI ERKurierKOI8RBoldItalic TIMES8 TimesNRCyrMT TIMES8B TimesNRCyrMT-Bold TIMES8I TimesNRCyrMT-Inclined TIMES8BI TimesNRCyrMT-BoldInclined gle-graphics-4.2.4c/src/fonts/LICENSE-FONTS.txt0000664000000000000000000000674311676336540017410 0ustar rootroot######################################################################## # # # GLE - Graphics Layout Engine # # # # Modified BSD License # # # # Copyright (C) 2009 GLE. # # # # Redistribution and use in source and binary forms, with or without # # modification, are permitted provided that the following conditions # # are met: # # # # 1. Redistributions of source code must retain the above copyright # # notice, this list of conditions and the following disclaimer. # # # # 2. Redistributions in binary form must reproduce the above # # copyright notice, this list of conditions and the following # # disclaimer in the documentation and/or other materials provided with # # the distribution. # # # # 3. The name of the author may not be used to endorse or promote # # products derived from this software without specific prior written # # permission. # # # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR # # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY # # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE # # GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER # # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN # # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # # ######################################################################## Missing: texcmsl texcmsl -> remove this? it has nog GLE file! Total: 68 1 Marker Font ------------- glemark -> License OK: AFM file says: "Gle Markers are free for all". GLE file is Modified BSD 11 TeX Fonts ------------ texcmb texcmex texcmitt texcmmi texcmr texcmss texcmssb texcmssi texcmsy texcmti texcmtt -> Created from TeX TFM files 18 Plotter Fonts ---------------- plba plcc plcg plci plcr plcs pldr plge plgg plgi plsa plsg plsr plss plsym1 plsym2 plti pltr -> HERSHEY font file using SPLITFONT.BAS 38 PostScript Fonts ------------------- psagb psagbo psagd psagdo psbd psbdi psbli psc pscb pscbo psco psh pshb pshbo pshc pshcb pshcbo pshcdo pshn pshnb pshnbo pshno psho psncsb psncsbi psncsi psncsr pspb pspbi pspi pspr pssym pstb pstbi psti pstr pszcmi pszd -> Copyright (c) 1984 Adobe Systems Incorporated. gle-graphics-4.2.4c/src/fonts/texcmtt.gle0000664000000000000000000052351211676336540017055 0ustar rootrootdfont file_name="CMTT10" dfont font_name="CMTT10" dfont design= .35146 dfont slant= 0 dfont space= .184515 dfont stretch= 0 dfont shrink= 0 dfont x_hei= .151323 dfont quad= .369029 dfont extra_space= .184515 dfont paint="FILL" !------------------ end of main parameters dfont char=0 !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .164465 .21336 aline .165735 .212725 aline .167005 .21209 aline .16764 .211455 aline .16891 .21082 aline .169545 .20955 aline .17018 .208915 aline .17145 .206375 aline .17145 .16637 bezier .168234 .156536 .151171 .156536 .147955 .16637 aline .147955 .19177 aline .14732 .192405 aline .062865 .192405 aline .06223 .19177 aline .06223 .020955 aline .062865 .02032 aline .0889 .02032 aline .09271 .018415 aline .094615 .01651 aline .095885 .01397 aline .095885 .005715 aline .094615 .003175 aline .09271 .00127 aline .0889 -.000635 aline .01905 -.000635 bezier .879278E-02 .143465E-02 .879278E-02 .182503E-01 .01905 .02032 aline .0381 .02032 aline .038735 .020955 aline .038735 .19177 aline .0381 .192405 aline .01905 .192405 bezier .879278E-02 .194475 .879278E-02 .21129 .01905 .21336 closepath ! end of curve fill dfont endchar dfont char=1 !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .10033 .217805 bezier .114953 .213239 .112984 .194517 .118745 .18288 bezier .135959 .123296 .156994 .643454E-01 .172085 .004445 aline .170815 .001905 aline .169545 .000635 aline .167005 -.000635 aline .01778 -.000635 aline .01524 .000635 aline .01397 .001905 bezier .105518E-01 .139323E-01 .196826E-01 .260592E-01 .02159 .0381 bezier .401473E-01 .961521E-01 .563889E-01 .155305 .0762 .212725 aline .07874 .215265 aline .08255 .21717 aline .084455 .217805 closepath ! end of curve ! start of curve amove .09144 .18669 bezier .762252E-01 .131635 .574926E-01 .769473E-01 .042545 .022225 aline .14224 .022225 bezier .126724 .776251E-01 .108222 .135049 .920045E-01 .189512 closepath ! end of curve fill dfont endchar dfont char=2 !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .11049 .21717 bezier .127632 .216411 .150527 .21194 .156845 .192405 bezier .163354 .174055 .162735 .155715 .164465 .13716 aline .164465 .075565 bezier .161598 .526144E-01 .165403 .249584E-01 .14732 .00635 bezier .136876 -.235565E-02 .122714 -.312107E-02 .11049 -.004445 aline .074295 -.004445 bezier .571528E-01 -.368601E-02 .342577E-01 .78462E-03 .02794 .02032 bezier .214311E-01 .386695E-01 .220499E-01 .570095E-01 .02032 .075565 aline .02032 .13716 bezier .231865E-01 .160111 .193821E-01 .187767 .037465 .206375 bezier .047909 .215081 .620708E-01 .215846 .074295 .21717 aline .11049 .21717 closepath ! end of curve ! start of curve amove .08001 .19558 bezier .660501E-01 .196121 .501166E-01 .187642 .04826 .172085 bezier .448599E-01 .159702 .450111E-01 .147281 .043815 .13462 aline .043815 .078105 bezier .460419E-01 .600686E-01 .434761E-01 .390061E-01 .05715 .02413 bezier .748507E-01 .133717E-01 .977061E-01 .154484E-01 .11684 .01905 bezier .137841 .236346E-01 .138233 .486857E-01 .140335 .06477 aline .140335 .07747 aline .14097 .078105 aline .14097 .13462 bezier .138743 .152656 .141309 .173719 .127635 .188595 bezier .113501 .197914 .960967E-01 .196743 .08001 .19558 closepath ! end of curve ! start of curve amove .073025 .128905 aline .075565 .12827 aline .078105 .127 aline .080645 .12446 aline .08128 .12319 aline .081915 .121285 aline .08255 .11811 aline .102235 .11811 bezier .10186 .131043 .123298 .133156 .126365 .121285 aline .126365 .09144 bezier .123298 .795686E-01 .10186 .816822E-01 .102235 .094615 aline .08255 .094615 bezier .829248E-01 .816822E-01 .614866E-01 .795686E-01 .05842 .09144 aline .05842 .121285 aline .059055 .12319 aline .05969 .12446 aline .06223 .127 aline .06477 .12827 aline .06731 .128905 closepath ! end of curve fill dfont endchar dfont char=3 !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .100965 .217805 bezier .114619 .213099 .111971 .195418 .116205 .18415 bezier .129007 .129563 .141644 .749388E-01 .154305 .02032 aline .16637 .02032 bezier .176677 .182331E-01 .176677 .145194E-02 .16637 -.000635 aline .11557 -.000635 bezier .105263 .145194E-02 .105263 .182331E-01 .11557 .02032 aline .128905 .02032 bezier .11782 .765535E-01 .102508 .134208 .092075 .189865 bezier .830209E-01 .133694 .665511E-01 .766405E-01 .05588 .02032 aline .069215 .02032 bezier .795224E-01 .182331E-01 .795224E-01 .145194E-02 .069215 -.000635 aline .018415 -.000635 bezier .810756E-02 .145194E-02 .810756E-02 .182331E-01 .018415 .02032 aline .03048 .02032 bezier .459744E-01 .843563E-01 .590575E-01 .14927 .0762 .212725 aline .079375 .2159 aline .081915 .21717 aline .08382 .217805 closepath ! end of curve fill dfont endchar dfont char=4 !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .16383 .21336 aline .1651 .212725 aline .16637 .21209 aline .167005 .211455 aline .168275 .21082 aline .16891 .20955 aline .169545 .208915 aline .170815 .206375 aline .170815 .186055 bezier .167599 .176221 .150536 .176221 .14732 .186055 aline .14732 .19304 aline .146685 .193675 aline .0381 .193675 aline .037465 .19304 aline .037465 .186055 bezier .342486E-01 .176221 .171864E-01 .176221 .01397 .186055 aline .01397 .20574 aline .014605 .207645 aline .01524 .208915 aline .018415 .21209 aline .019685 .212725 aline .02159 .21336 closepath ! end of curve ! start of curve amove .05461 .13335 aline .056515 .132715 aline .059055 .131445 aline .061595 .128905 aline .06223 .127635 aline .062865 .12573 aline .062865 .121285 aline .0635 .12065 aline .121285 .12065 aline .12192 .121285 bezier .118885 .135075 .142436 .138195 .145415 .12573 aline .145415 .095885 bezier .142436 .834197E-01 .118885 .865405E-01 .12192 .10033 aline .121285 .100965 aline .0635 .100965 aline .062865 .10033 bezier .659004E-01 .865405E-01 .423492E-01 .834197E-01 .03937 .095885 aline .03937 .12573 aline .040005 .127635 aline .04064 .128905 aline .04318 .131445 aline .04572 .132715 aline .047625 .13335 closepath ! end of curve ! start of curve amove .028575 .03556 aline .029845 .034925 aline .031115 .03429 aline .03175 .033655 aline .03302 .03302 aline .033655 .03175 aline .03429 .031115 aline .03556 .028575 aline .03556 .019685 aline .036195 .01905 aline .14859 .01905 aline .149225 .019685 aline .149225 .028575 bezier .152441 .384087E-01 .169504 .384087E-01 .17272 .028575 aline .17272 .00635 aline .17145 .00381 aline .170815 .003175 aline .17018 .001905 aline .16891 .00127 aline .168275 .000635 aline .165735 -.000635 aline .019685 -.000635 aline .01778 0 aline .01651 .000635 aline .013335 .00381 aline .0127 .00508 aline .012065 .006985 aline .012065 .028575 aline .013335 .031115 aline .01397 .03175 aline .014605 .03302 aline .015875 .033655 aline .01651 .03429 aline .01778 .034925 aline .01905 .03556 closepath ! end of curve fill dfont endchar dfont char=5 !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .169545 .21336 aline .170815 .212725 aline .173355 .211455 aline .174625 .210185 aline .17653 .206375 aline .17653 .19939 aline .174625 .19558 aline .173355 .19431 aline .169545 .192405 aline .154305 .192405 aline .15367 .19177 aline .15367 .020955 aline .154305 .02032 aline .169545 .02032 aline .173355 .018415 aline .174625 .017145 aline .17653 .013335 aline .17653 .00635 aline .174625 .00254 aline .173355 .00127 aline .169545 -.000635 aline .1143 -.000635 aline .11049 .00127 aline .10922 .00254 aline .107315 .00635 aline .107315 .013335 aline .10922 .017145 aline .11049 .018415 aline .1143 .02032 aline .12954 .02032 aline .130175 .020955 aline .130175 .19177 aline .12954 .192405 aline .055245 .192405 aline .05461 .19177 aline .05461 .020955 aline .055245 .02032 aline .070485 .02032 aline .074295 .018415 aline .075565 .017145 aline .07747 .013335 aline .07747 .00635 aline .075565 .00254 aline .074295 .00127 aline .070485 -.000635 aline .01524 -.000635 aline .01143 .00127 aline .01016 .00254 aline .008255 .00635 aline .008255 .013335 aline .01016 .017145 aline .01143 .018415 aline .01524 .02032 aline .03048 .02032 aline .031115 .020955 aline .031115 .19177 aline .03048 .192405 aline .01524 .192405 aline .01143 .19431 aline .01016 .19558 aline .008255 .19939 aline .008255 .206375 aline .01016 .210185 aline .01143 .211455 aline .01397 .212725 aline .01524 .21336 closepath ! end of curve fill dfont endchar dfont char=6 !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .163195 .21336 aline .164465 .212725 aline .165735 .21209 aline .16637 .211455 aline .16764 .21082 aline .168275 .20955 aline .16891 .208915 aline .17018 .206375 aline .17018 .16637 bezier .166964 .156536 .149901 .156536 .146685 .16637 aline .146685 .19177 aline .14605 .192405 aline .04699 .192405 bezier .611282E-01 .1651 .079853 .137143 .09525 .10922 bezier .945778E-01 .948143E-01 .821368E-01 .841847E-01 .076835 .07112 bezier .674027E-01 .546304E-01 .559474E-01 .371787E-01 .04826 .020955 aline .14605 .020955 aline .146685 .02159 aline .146685 .04699 bezier .149901 .568237E-01 .166964 .568237E-01 .17018 .04699 aline .17018 .00635 aline .16891 .00381 aline .168275 .003175 aline .16764 .001905 aline .16637 .00127 aline .165735 .000635 aline .163195 -.000635 aline .022225 -.000635 bezier .118799E-01 .18658E-02 .136827E-01 .143471E-01 .019685 .02032 bezier .357518E-01 .491231E-01 .542799E-01 .785862E-01 .069215 .10668 bezier .512143E-01 .137729 .324672E-01 .168241 .014605 .19939 aline .014605 .20574 aline .01524 .207645 aline .015875 .208915 aline .01905 .21209 aline .02032 .212725 aline .022225 .21336 closepath ! end of curve fill dfont endchar dfont char=7 !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .05842 .21717 bezier .817527E-01 .214761 .893195E-01 .186962 .923925E-01 .168434 bezier .954655E-01 .186962 .103032 .214761 .126365 .21717 bezier .153621 .221201 .178166 .188398 .168275 .16383 bezier .162001 .159284 .15003 .159782 .14732 .168275 bezier .147943 .180276 .145069 .198159 .13081 .200025 bezier .112415 .198514 .108656 .17546 .106045 .16129 aline .106045 .15621 aline .10541 .155575 aline .10541 .149225 aline .104775 .14859 aline .104775 .13589 aline .10414 .135255 aline .10414 .020955 aline .104775 .02032 aline .123825 .02032 bezier .133349 .175997E-01 .133349 .208533E-02 .123825 -.000635 aline .06096 -.000635 bezier .514359E-01 .208533E-02 .514359E-01 .175997E-01 .06096 .02032 aline .08001 .02032 aline .080645 .020955 aline .080645 .135255 bezier .784434E-01 .155562 .800761E-01 .178562 .065405 .19558 bezier .566447E-01 .203261 .425705E-01 .19945 .040005 .187325 aline .038735 .182245 bezier .362844E-01 .175467 .401726E-01 .164164 .03048 .16129 aline .020955 .16129 bezier .91648E-02 .166462 .146708E-01 .181735 .01778 .191135 bezier .241757E-01 .207344 .407637E-01 .219424 .05842 .21717 closepath ! end of curve fill dfont endchar dfont char=8 !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .12573 .21336 aline .127 .212725 aline .12954 .211455 aline .13081 .210185 aline .132715 .206375 aline .132715 .19939 aline .13081 .19558 aline .12954 .19431 aline .12573 .192405 aline .104775 .192405 aline .10414 .19177 aline .10414 .159385 bezier .133722 .156229 .172845 .137082 .17018 .1016 bezier .164569 .071167 .13128 .567555E-01 .10414 .05334 aline .10414 .020955 aline .104775 .02032 aline .12573 .02032 aline .12954 .018415 aline .13081 .017145 aline .132715 .013335 aline .132715 .00635 aline .13081 .00254 aline .12954 .00127 aline .12573 -.000635 aline .059055 -.000635 aline .055245 .00127 aline .053975 .00254 aline .05207 .00635 aline .05207 .013335 aline .053975 .017145 aline .055245 .018415 aline .059055 .02032 aline .08001 .02032 aline .080645 .020955 aline .080645 .05334 bezier .510631E-01 .564964E-01 .119402E-01 .756433E-01 .014605 .111125 bezier .202159E-01 .141558 .053505 .155969 .080645 .159385 aline .080645 .19177 aline .08001 .192405 aline .059055 .192405 aline .055245 .19431 aline .053975 .19558 aline .05207 .19939 aline .05207 .206375 aline .053975 .210185 aline .055245 .211455 aline .057785 .212725 aline .059055 .21336 closepath ! end of curve ! start of curve amove .07874 .13716 bezier .613172E-01 .1351 .035762 .123701 .038735 .10287 bezier .429782E-01 .084689 .646801E-01 .770513E-01 .080645 .075565 aline .080645 .13716 aline .796925E-01 .137636 aline .07874 .13716 closepath ! end of curve ! start of curve amove .10414 .13716 aline .10414 .075565 bezier .121749 .076582 .149036 .883927E-01 .14605 .109855 bezier .141807 .128036 .120105 .135674 .10414 .13716 closepath ! end of curve fill dfont endchar dfont char=9 !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .123825 .21336 bezier .133349 .21064 .133349 .195125 .123825 .192405 aline .104775 .192405 aline .10414 .19177 aline .10414 .076835 bezier .124208 .792573E-01 .132085 .10319 .13335 .120015 bezier .133352 .137009 .131416 .159924 .150495 .16764 aline .153035 .168275 aline .16383 .168275 bezier .175362 .164838 .171909 .145732 .16002 .146685 bezier .153637 .128551 .159558 .10834 .150495 .09017 bezier .142657 .710197E-01 .12476 .570019E-01 .10414 .053975 aline .10414 .020955 aline .104775 .02032 aline .123825 .02032 bezier .133349 .175997E-01 .133349 .208533E-02 .123825 -.000635 aline .06096 -.000635 bezier .514359E-01 .208533E-02 .514359E-01 .175997E-01 .06096 .02032 aline .08001 .02032 aline .080645 .020955 aline .080645 .053975 bezier .049047 .576183E-01 .028611 .887043E-01 .02794 .11811 aline .02794 .13462 aline .027305 .135255 aline .027305 .140335 aline .02667 .14097 aline .026035 .14351 aline .0254 .145415 aline .024765 .146685 bezier .126312E-01 .145597 .937461E-02 .16552 .02159 .168275 bezier .390912E-01 .172307 .524039E-01 .155045 .0508 .139065 bezier .516793E-01 .118844 .051091 .942084E-01 .06985 .080645 aline .0762 .07747 aline .079375 .764117E-01 aline .080645 .076835 aline .080645 .19177 aline .08001 .192405 aline .06096 .192405 bezier .514359E-01 .195125 .514359E-01 .21064 .06096 .21336 aline .123825 .21336 closepath ! end of curve fill dfont endchar dfont char=10 !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .099695 .21717 bezier .140606 .214714 .176268 .174336 .169545 .13335 bezier .167952 .934888E-01 .136023 .592448E-01 .13208 .02032 aline .153035 .02032 aline .15367 .020955 aline .15367 .029845 bezier .156079 .390938E-01 .170311 .390938E-01 .17272 .029845 aline .17272 .00635 aline .17145 .00381 aline .170815 .003175 aline .17018 .001905 aline .16891 .00127 aline .168275 .000635 aline .165735 -.000635 aline .11684 -.000635 bezier .104668 .319507E-02 .110391 .179104E-01 .11049 .02667 bezier .117213 .709352E-01 .154001 .110561 .14478 .155575 bezier .136352 .193814 .842572E-01 .209746 .056515 .182245 bezier .351409E-01 .164521 .349269E-01 .134492 .043815 .11049 bezier .548722E-01 .754847E-01 .797249E-01 .411531E-01 .074295 .00381 aline .07366 .003175 aline .073025 .001905 aline .071755 .00127 aline .07112 .000635 aline .06858 -.000635 aline .019685 -.000635 aline .01778 0 aline .01651 .000635 aline .013335 .00381 aline .0127 .00508 aline .012065 .006985 aline .012065 .029845 bezier .144737E-01 .390938E-01 .287063E-01 .390938E-01 .031115 .029845 aline .031115 .020955 aline .03175 .02032 aline .052705 .02032 bezier .487618E-01 .592448E-01 .168331E-01 .934888E-01 .01524 .13335 bezier .851701E-02 .174336 .441786E-01 .214714 .08509 .21717 aline .099695 .21717 closepath ! end of curve fill dfont endchar dfont char=11 !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .09525 .21336 bezier .104133 .208268 .106734 .196748 .1143 .189865 bezier .126745 .175851 .143412 .167225 .160655 .160655 bezier .169542 .152856 .159589 .136382 .14859 .142875 bezier .132211 .147937 .117369 .159558 .104775 .168275 aline .104775 .00889 bezier .102579 -.367765E-02 .828405E-01 -.367765E-02 .080645 .00889 aline .080645 .168275 bezier .664224E-01 .158578 .049553 .144695 .03048 .141605 bezier .176248E-01 .143025 .193452E-01 .163137 .03175 .16383 bezier .056426 .171575 .740682E-01 .191297 .08763 .21209 aline .0889 .212725 aline .090805 .21336 closepath ! end of curve fill dfont endchar dfont char=12 !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .09525 .21336 aline .097155 .212725 aline .099695 .211455 aline .10287 .20828 aline .10414 .20574 aline .104775 .203835 aline .104775 .04445 bezier .118998 .054147 .135867 .680305E-01 .15494 .07112 bezier .167795 .696998E-01 .166075 .495883E-01 .15367 .048895 bezier .128971 .041235 .111212 .021172 .09779 .000635 bezier .853337E-01 -.549138E-02 .813326E-01 .115882E-01 .07493 .018415 bezier .620343E-01 .345823E-01 .439199E-01 .450055E-01 .024765 .05207 bezier .158783E-01 .598687E-01 .258308E-01 .076343 .03683 .06985 bezier .532085E-01 .647884E-01 .680514E-01 .531668E-01 .080645 .04445 aline .080645 .203835 aline .08128 .20574 aline .08255 .20828 aline .085725 .211455 aline .088265 .212725 aline .09017 .21336 closepath ! end of curve fill dfont endchar dfont char=13 !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .09525 .21717 bezier .102937 .216057 .109697 .207416 .107315 .200025 bezier .105694 .172728 .105327 .145623 .1016 .118745 bezier .952388E-01 .108996 .783956E-01 .11601 .081915 .127635 bezier .800965E-01 .153639 .776887E-01 .18025 .07747 .206375 aline .078105 .20828 aline .07874 .20955 aline .079375 .210185 aline .08001 .211455 aline .083185 .21463 aline .086995 .216535 aline .089535 .21717 closepath ! end of curve fill dfont endchar dfont char=14 !-------------- Beginning of new char. dfont wid=.524996 hei=.388888 dep=.222223 italic=0 set path ! start of curve newpath ! start of curve amove .095885 .135255 bezier .112086 .13272 .114994 .108291 .099695 .102235 bezier .848295E-01 .949145E-01 .685549E-01 .114073 .078105 .127635 aline .083185 .132715 aline .085725 .133985 aline .08763 .13462 aline .089535 .135255 closepath ! end of curve ! start of curve amove .099695 .070485 aline .100965 .06985 aline .102235 .069215 aline .104775 .066675 aline .106045 .064135 bezier .107365 .189022E-01 .109717 -.260106E-01 .10922 -.07112 bezier .104297 -.875265E-01 .779238E-01 -.085605 .075565 -.06858 bezier .767046E-01 -.242267E-01 .776031E-01 .197358E-01 .079375 .064135 aline .080645 .066675 aline .083185 .069215 aline .084455 .06985 aline .085725 .070485 closepath ! end of curve fill dfont endchar dfont char=15 !-------------- Beginning of new char. dfont wid=.524996 hei=.388888 dep=.222223 italic=0 set path ! start of curve newpath ! start of curve amove .09017 .135255 bezier .106371 .13272 .109279 .108291 .09398 .102235 bezier .791145E-01 .949145E-01 .628399E-01 .114073 .07239 .127635 aline .07747 .132715 aline .08001 .133985 aline .081915 .13462 aline .08382 .135255 closepath ! end of curve ! start of curve amove .09398 .070485 aline .09525 .06985 aline .09652 .069215 aline .09906 .066675 bezier .108673 .315581E-01 .854279E-01 -.435938E-02 .055245 -.02159 bezier .407597E-01 -.292323E-01 .442806E-01 -.510771E-01 .05969 -.055245 bezier .829833E-01 -.062609 .109016 -.613973E-01 .131445 -.0508 aline .132715 -.04953 aline .133985 -.048895 aline .13462 -.04826 bezier .131295 -.040812 .130226 -.290695E-01 .139065 -.02413 bezier .15134 -.167008E-01 .16626 -.289702E-01 .16256 -.042545 bezier .158103 -.721609E-01 .123098 -.793391E-01 .09906 -.080645 bezier .072229 -.817548E-01 .372495E-01 -.799295E-01 .024765 -.051435 bezier .160682E-01 -.315052E-01 .287939E-01 -.855492E-02 .047625 0 bezier .681521E-01 .148198E-01 .759428E-01 .399911E-01 .07366 .064135 aline .07493 .066675 aline .07747 .069215 aline .08001 .070485 aline .09398 .070485 closepath ! end of curve fill dfont endchar dfont char=16 !-------------- Beginning of new char. dfont wid=.524996 hei=.430555 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .1016 .14986 aline .10287 .149225 aline .10414 .14859 aline .104775 .147955 aline .106045 .14732 aline .10668 .14605 aline .107315 .145415 aline .108585 .142875 aline .108585 .020955 aline .10922 .02032 aline .1524 .02032 bezier .162534 .181709E-01 .162534 .151407E-02 .1524 -.000635 aline .03556 -.000635 bezier .254261E-01 .151407E-02 .254261E-01 .181709E-01 .03556 .02032 aline .084455 .02032 aline .08509 .020955 aline .08509 .12827 aline .084455 .128905 aline .0381 .128905 bezier .285295E-01 .131508 .285295E-01 .147257 .0381 .14986 closepath ! end of curve fill dfont endchar dfont char=17 !-------------- Beginning of new char. dfont wid=.524996 hei=.430555 dep=.222223 italic=0 set path ! start of curve newpath ! start of curve amove .12192 .14986 aline .12319 .149225 aline .12446 .14859 aline .125095 .147955 aline .126365 .14732 aline .127 .14605 aline .127635 .145415 aline .128905 .142875 aline .128905 -.02413 bezier .126545 -.515824E-01 .104356 -.07794 .0762 -.080645 bezier .569533E-01 -.799211E-01 .335113E-01 -.839554E-01 .02032 -.066675 bezier .112413E-01 -.549411E-01 .211029E-01 -.341785E-01 .03683 -.03937 aline .038735 -.040005 aline .041275 -.041275 aline .045085 -.045085 aline .04699 -.048895 aline .047625 -.051435 aline .047625 -.05715 aline .04699 -.057785 bezier .645338E-01 -.619843E-01 .886465E-01 -.618066E-01 .098425 -.04318 aline .100965 -.0381 aline .1016 -.036195 aline .102235 -.034925 aline .10287 -.032385 aline .103505 -.03048 aline .10414 -.027305 aline .104775 -.02667 aline .104775 -.02286 aline .10541 -.022225 aline .10541 .12827 aline .104775 .128905 aline .052705 .128905 bezier .431809E-01 .131625 .431809E-01 .14714 .052705 .14986 closepath ! end of curve fill dfont endchar dfont char=18 !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .05588 .21336 bezier .745412E-01 .205699 .926631E-01 .196737 .111125 .188595 bezier .122501 .181407 .110282 .159645 .098425 .168275 bezier .806246E-01 .177077 .606358E-01 .183389 .04445 .19431 aline .043815 .194945 aline .04191 .198755 aline .04191 .203835 aline .042545 .20574 aline .043815 .20828 aline .04699 .211455 aline .04953 .212725 aline .0508 .21336 closepath ! end of curve fill dfont endchar dfont char=19 !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .133985 .21336 bezier .143496 .210932 .146368 .196856 .137795 .19177 bezier .118385 .183306 .994349E-01 .172453 .079375 .16637 bezier .685883E-01 .167891 .064494 .187052 .076835 .189865 bezier .941127E-01 .197887 .111327 .206063 .128905 .21336 aline .133985 .21336 closepath ! end of curve fill dfont endchar dfont char=20 !-------------- Beginning of new char. dfont wid=.524996 hei=.565973 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .050165 .19939 bezier .641441E-01 .193283 .784825E-01 .188043 .923925E-01 .181769 bezier .106303 .188043 .120641 .193283 .13462 .19939 bezier .149564 .202934 .154734 .176182 .13843 .17526 bezier .122322 .170044 .106806 .161286 .09017 .15875 bezier .728629E-01 .166373 .532851E-01 .170269 .037465 .18034 aline .036195 .18288 aline .036195 .188595 aline .03683 .1905 aline .037465 .19177 aline .0381 .193675 aline .038735 .194945 aline .04191 .19812 aline .04318 .198755 aline .04445 .19939 closepath ! end of curve fill dfont endchar dfont char=21 !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .045085 .21336 bezier .523763E-01 .211918 .505365E-01 .203638 .05461 .200025 aline .05588 .19939 aline .05969 .19812 aline .062865 .197485 aline .0635 .19685 aline .06731 .19685 aline .067945 .196215 aline .07493 .196215 aline .075565 .19558 aline .10922 .19558 bezier .116807 .197238 .126777 .195945 .132715 .202565 bezier .130547 .21496 .150702 .217583 .15367 .206375 bezier .156615 .186288 .135227 .175207 .118745 .174625 aline .11176 .174625 aline .111125 .17399 aline .07366 .17399 bezier .575518E-01 .174928 .342673E-01 .179135 .031115 .19939 aline .031115 .20574 aline .03175 .207645 aline .032385 .208915 aline .03556 .21209 aline .03683 .212725 aline .038735 .21336 closepath ! end of curve fill dfont endchar dfont char=22 !-------------- Beginning of new char. dfont wid=.524996 hei=.565555 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .151765 .201295 bezier .161368 .198402 .161368 .182598 .151765 .179705 aline .033655 .179705 bezier .234385E-01 .181953 .232416E-01 .198466 .03302 .201295 closepath ! end of curve fill dfont endchar dfont char=23 !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .097155 .216535 bezier .111504 .216152 .127909 .199811 .117475 .18542 bezier .103948 .168692 .706223E-01 .17074 .064135 .19304 bezier .06264 .210399 .827527E-01 .218557 .097155 .216535 closepath ! end of curve ! start of curve amove .0889 .20574 bezier .784792E-01 .205299 .739773E-01 .191047 .084455 .18669 bezier .933459E-01 .18056 .112076 .189238 .104775 .20066 aline .1016 .203835 aline .10033 .20447 aline .098425 .205105 aline .095885 .20574 aline .09525 .206375 aline .089535 .206375 closepath ! end of curve fill dfont endchar dfont char=24 !-------------- Beginning of new char. dfont wid=.524996 hei=0 dep=.194446 italic=0 set path ! start of curve newpath ! start of curve amove .108585 .014605 aline .109855 .01397 aline .111125 .013335 aline .11176 .0127 aline .11303 .012065 aline .113665 .01143 aline .11557 .00762 aline .11557 -.00381 bezier .135061 -.712226E-02 .154858 -.242338E-01 .14986 -.045085 bezier .144627 -.682905E-01 .116653 -.720703E-01 .09779 -.07366 aline .07112 -.07366 bezier .587581E-01 -.078939 .515587E-01 -.574208E-01 .064135 -.05334 bezier .084555 -.510762E-01 .107229 -.563229E-01 .125095 -.043815 bezier .131408 -.316395E-01 .115156 -.249774E-01 .106045 -.02413 aline .099695 -.02413 aline .09779 -.023495 aline .09652 -.02286 aline .093345 -.019685 aline .09271 -.018415 aline .092075 -.01651 aline .092075 .006985 aline .09271 .00889 aline .093345 .01016 aline .09652 .013335 aline .09779 .01397 aline .099695 .014605 closepath ! end of curve fill dfont endchar dfont char=25 !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .111125 .215265 bezier .133557 .213634 .166761 .200988 .16383 .17272 bezier .161581 .156569 .14844 .145135 .135414 .137478 bezier .173601 .110818 .191059 .465088E-01 .1524 .0127 bezier .132444 -.382364E-02 .973585E-01 -.010971 .07874 .010795 bezier .070339 .209898E-01 .758583E-01 .400096E-01 .090805 .0381 aline .093345 .037465 aline .097155 .03556 aline .10033 .032385 aline .102235 .028575 aline .10287 .026035 bezier .099811 .162765E-01 .113255 .177855E-01 .118745 .019685 bezier .146788 .252753E-01 .156566 .058467 .14732 .081915 bezier .140971 .107284 .118242 .130035 .09144 .128905 bezier .08172 .131633 .081975 .147709 .092075 .14986 bezier .110114 .14947 .133227 .155729 .140335 .174625 bezier .14067 .187876 .123203 .190757 .113665 .193675 bezier .963943E-01 .19527 .748605E-01 .194551 .0635 .17907 aline .0635 .00635 aline .06223 .00381 aline .061595 .003175 aline .06096 .001905 aline .05969 .00127 aline .059055 .000635 aline .056515 -.000635 aline .01397 -.000635 bezier .431464E-02 .178964E-02 .431464E-02 .178954E-01 .01397 .02032 aline .03937 .02032 aline .040005 .020955 aline .040005 .12827 aline .03937 .128905 aline .01397 .128905 bezier .431464E-02 .13133 .431464E-02 .147435 .01397 .14986 aline .03937 .14986 aline .040005 .150495 aline .040005 .18161 bezier .454585E-01 .204668 .072401 .213264 .09271 .215265 aline .111125 .215265 closepath ! end of curve fill dfont endchar dfont char=26 !-------------- Beginning of new char. dfont wid=.524996 hei=.430555 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .06223 .153035 bezier .768134E-01 .150671 .897134E-01 .140903 .095885 .127635 bezier .106241 .148887 .135432 .162351 .155575 .145415 bezier .1755 .12677 .179238 .962766E-01 .175895 .07112 aline .17526 .070485 aline .174625 .069215 aline .173355 .06858 aline .17272 .067945 aline .17018 .066675 aline .103505 .066675 bezier .103319 .463153E-01 .117967 .176197E-01 .14224 .018415 bezier .153871 .021749 .156238 .343653E-01 .160655 .043815 bezier .168648 .514777E-01 .181267 .415536E-01 .17653 .03175 bezier .171683 .756493E-02 .144681 -.108432E-01 .121285 .000635 bezier .111236 .437466E-02 .103321 .149599E-01 .097155 .020955 bezier .816754E-01 -.529662E-02 .361052E-01 -.131818E-01 .01905 .015875 bezier .542407E-02 .357769E-01 .121294E-01 .651177E-01 .03429 .075565 bezier .495849E-01 .841245E-01 .672539E-01 .850107E-01 .083185 .086995 bezier .851117E-01 .104377 .811101E-01 .127107 .06096 .131445 aline .060325 .13208 aline .047625 .13208 aline .04699 .131445 aline .04445 .13081 bezier .501354E-01 .115446 .260443E-01 .104208 .017145 .11811 bezier .714409E-02 .135183 .026336 .152123 .042545 .1524 aline .04699 .1524 aline .047625 .153035 closepath ! end of curve ! start of curve amove .13081 .131445 bezier .112522 .126121 .104893 .103803 .103505 .086995 aline .15748 .086995 bezier .157295 .102132 .153986 .125267 .136525 .13208 aline .131445 .13208 closepath ! end of curve ! start of curve amove .080645 .065405 bezier .064745 .649744E-01 .463507E-01 .623846E-01 .03429 .050165 bezier .227621E-01 .333839E-01 .454847E-01 .120055E-01 .06223 .019685 bezier .715336E-01 .217579E-01 .797048E-01 .283921E-01 .08255 .037465 aline .08255 .055245 aline .083185 .05588 aline .083185 .065405 aline .081915 .658283E-01 aline .080645 .065405 closepath ! end of curve fill dfont endchar dfont char=27 !-------------- Beginning of new char. dfont wid=.524996 hei=.430555 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .06223 .153035 bezier .079509 .151436 .916405E-01 .134883 .09906 .12319 bezier .106991 .144054 .132835 .162612 .154305 .147955 bezier .176795 .130368 .177841 .995182E-01 .1778 .07366 aline .17653 .07112 aline .175895 .070485 aline .17526 .069215 aline .17399 .06858 aline .173355 .067945 aline .170815 .066675 aline .109855 .066675 bezier .109627 .474544E-01 .121522 .018512 .14478 .018415 bezier .155644 .223558E-01 .156705 .349726E-01 .16129 .043815 bezier .168071 .504993E-01 .180219 .435705E-01 .1778 .03429 bezier .174605 .111327E-01 .150863 -.108119E-01 .127 0 bezier .113974 .519281E-02 .104907 .167684E-01 .09906 .02921 bezier .906288E-01 .652455E-02 .624373E-01 -.122952E-01 .03937 .00254 bezier .744578E-02 .234106E-01 .292555E-02 .676102E-01 .009525 .1016 bezier .149532E-01 .12419 .285071E-01 .148931 .05334 .153035 closepath ! end of curve ! start of curve amove .05461 .131445 bezier .345921E-01 .126038 .283698E-01 .101807 .026035 .084455 bezier .255911E-01 .613475E-01 .295868E-01 .321296E-01 .05207 .019685 bezier .700047E-01 .142801E-01 .818283E-01 .358309E-01 .085725 .0508 bezier .093195 .768384E-01 .911647E-01 .110673 .067945 .128905 aline .065405 .130175 aline .0635 .13081 aline .06096 .131445 aline .060325 .13208 aline .055245 .13208 closepath ! end of curve ! start of curve amove .133985 .131445 bezier .117269 .124698 .110919 .103393 .109855 .086995 aline .158115 .086995 bezier .157715 .101728 .155868 .121565 .141605 .13081 aline .1397 .131445 aline .139065 .13208 aline .13462 .13208 closepath ! end of curve fill dfont endchar dfont char=28 !-------------- Beginning of new char. dfont wid=.524996 hei=.541667 dep=.111112 italic=0 set path ! start of curve newpath ! start of curve amove .160655 .19939 bezier .170734 .197056 .170895 .184664 .164465 .178435 bezier .156342 .164158 .148297 .149825 .1397 .13589 bezier .181366 .104134 .176434 .324427E-01 .130175 .00762 bezier .109919 -.005153 .843583E-01 -.475127E-02 .062865 .00254 bezier .523316E-01 -.141242E-01 .439419E-01 -.323335E-01 .032385 -.04826 bezier .232408E-01 -.541466E-01 .104228E-01 -.419052E-01 .01778 -.03302 bezier .266913E-01 -.172195E-01 .356555E-01 -.145702E-02 .045085 .01397 bezier .358313E-02 .455597E-01 .836957E-02 .116636 .053975 .14224 bezier .745438E-01 .155903 .100318 .155002 .122555 .147955 bezier .132465 .164705 .141153 .182334 .1524 .19812 aline .15494 .19939 aline .160655 .19939 closepath ! end of curve ! start of curve amove .08636 .131445 bezier .456454E-01 .129001 .020877 .764664E-01 .045085 .043815 aline .04572 .042545 aline .04699 .041275 aline .047625 .040005 aline .050165 .037465 aline .0508 .036195 aline .05334 .033655 aline .05461 .03302 bezier .610136E-01 .391223E-01 .657792E-01 .518071E-01 .071755 .060325 bezier .842011E-01 .832188E-01 .995745E-01 .106433 .11049 .128905 aline .108585 .12954 aline .106045 .130175 aline .10287 .13081 aline .102235 .131445 aline .098425 .131445 aline .09779 .13208 aline .086995 .13208 aline .08636 .131445 closepath ! end of curve ! start of curve amove .128905 .11684 bezier .111224 .849301E-01 .909149E-01 .536682E-01 .747712E-01 .214313E-01 bezier .107101 .889494E-02 .14631 .348848E-01 .149225 .069215 bezier .150491 .872304E-01 .14317 .105816 .12954 .11811 closepath ! end of curve fill dfont endchar dfont char=29 !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .165735 .21336 aline .167005 .212725 aline .168275 .21209 aline .16891 .211455 aline .17018 .21082 aline .170815 .20955 aline .17145 .208915 aline .17272 .206375 aline .17272 .16637 bezier .170311 .157121 .156079 .157121 .15367 .16637 aline .15367 .19177 aline .153035 .192405 aline .11303 .192405 aline .112395 .19177 aline .112395 .121285 aline .11303 .12065 aline .16002 .12065 bezier .169544 .11793 .169544 .102415 .16002 .099695 aline .11303 .099695 aline .112395 .09906 aline .112395 .020955 aline .11303 .02032 aline .155575 .02032 aline .15621 .020955 aline .15621 .05207 bezier .158619 .613188E-01 .172851 .613188E-01 .17526 .05207 aline .17526 .00635 aline .17399 .00381 aline .173355 .003175 aline .17272 .001905 aline .17145 .00127 aline .170815 .000635 aline .168275 -.000635 aline .08636 -.000635 bezier .737441E-01 .320462E-02 .792732E-01 .02456 .09271 .02032 aline .093345 .020955 aline .093345 .062865 aline .09271 .0635 aline .053975 .0635 aline .04572 .022225 aline .452438E-01 .212725E-01 aline .04572 .02032 aline .053975 .02032 aline .057785 .018415 aline .05969 .01651 aline .06096 .01397 aline .06096 .005715 aline .05969 .003175 aline .057785 .00127 aline .053975 -.000635 aline .015875 -.000635 aline .012065 .00127 aline .01016 .003175 aline .00889 .005715 aline .00889 .01397 aline .01016 .01651 aline .012065 .018415 aline .015875 .02032 aline .0254 .02032 aline .037465 .080645 aline .0381 .083185 aline .053975 .16256 aline .05461 .1651 aline .05969 .1905 aline .601663E-01 .191453 aline .05969 .192405 bezier .482805E-01 .188947 .414428E-01 .2042 .04953 .211455 aline .05207 .212725 aline .05334 .21336 closepath ! end of curve ! start of curve amove .079375 .18923 aline .07874 .186055 aline .073025 .15748 aline .07239 .15494 aline .058674 .08636 aline .059055 .084455 aline .09271 .084455 aline .093345 .08509 aline .093345 .19177 aline .09271 .192405 aline .08001 .192405 closepath ! end of curve fill dfont endchar dfont char=30 !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .076835 .21717 bezier .834137E-01 .215893 .906377E-01 .214752 .097155 .21336 aline .167005 .21336 aline .169545 .21209 aline .17018 .211455 aline .17145 .21082 aline .172085 .20955 aline .17272 .208915 aline .17399 .206375 aline .17399 .16637 bezier .171581 .157121 .157349 .157121 .15494 .16637 aline .15494 .19177 aline .154305 .192405 aline .112395 .192405 aline .11176 .19177 aline .11176 .121285 aline .112395 .12065 aline .161925 .12065 bezier .171449 .11793 .171449 .102415 .161925 .099695 aline .112395 .099695 aline .11176 .09906 aline .11176 .020955 aline .112395 .02032 aline .156845 .02032 aline .15748 .020955 aline .15748 .05207 bezier .159889 .613188E-01 .174121 .613188E-01 .17653 .05207 aline .17653 .00635 aline .17526 .00381 aline .174625 .003175 aline .17399 .001905 aline .17272 .00127 aline .172085 .000635 aline .169545 -.000635 aline .097155 -.000635 bezier .075003 -.51557E-02 .474293E-01 -.876872E-02 .02667 .00508 bezier .121713E-01 .195805E-01 .141473E-01 .412661E-01 .01143 .059055 aline .01143 .073025 aline .010795 .07366 aline .010795 .139065 bezier .013277 .161071 .104918E-01 .184575 .023495 .20447 bezier .374296E-01 .219058 .584279E-01 .216792 .076835 .21717 closepath ! end of curve ! start of curve amove .06223 .19558 bezier .489327E-01 .195961 .03452 .187379 .033655 .17272 bezier .305355E-01 .161889 .312222E-01 .15029 .029845 .139065 aline .029845 .079375 bezier .318952E-01 .612907E-01 .296792E-01 .415478E-01 .04064 .0254 bezier .536793E-01 .163802E-01 .740073E-01 .114957E-01 .086995 .02286 bezier .919388E-01 .313283E-01 .913527E-01 .405376E-01 .09271 .04953 aline .09271 .163195 bezier .911721E-01 .174725 .923329E-01 .193371 .0762 .19558 aline .075565 .196215 aline .062865 .196215 aline .06223 .19558 closepath ! end of curve fill dfont endchar dfont char=31 !-------------- Beginning of new char. dfont wid=.524996 hei=.666667 dep=.0555553 italic=0 set path ! start of curve newpath ! start of curve amove .13462 .243205 aline .136525 .24257 bezier .150733 .237437 .138947 .221546 .138303 .211836 bezier .161988 .201938 .161209 .172201 .16383 .151765 aline .16383 .137795 aline .164465 .13716 aline .164465 .075565 bezier .161598 .526144E-01 .165403 .249584E-01 .14732 .00635 bezier .136876 -.235565E-02 .122714 -.312107E-02 .11049 -.004445 aline .074295 -.004445 aline .07366 -.00381 aline .06858 -.00381 aline .067945 -.004445 aline .0635 -.01778 aline .062865 -.02032 bezier .622584E-01 -.320121E-01 .451359E-01 -.340528E-01 .041275 -.023495 aline .041275 -.017145 aline .04572 -.00381 aline .046355 -.00127 aline .467783E-01 0 bezier .272779E-01 .882857E-02 .227794E-01 .330443E-01 .022225 .05207 aline .02159 .052705 aline .02159 .060325 aline .020955 .06096 aline .020955 .07493 aline .02032 .075565 aline .02032 .13716 bezier .231865E-01 .160111 .193821E-01 .187767 .037465 .206375 bezier .047909 .215081 .620708E-01 .215846 .074295 .21717 aline .11049 .21717 aline .111125 .216535 aline .116205 .216535 aline .11684 .21717 aline .121285 .230505 aline .12192 .233045 aline .12319 .236855 aline .12446 .239395 aline .126365 .2413 aline .128905 .24257 aline .130175 .243205 closepath ! end of curve ! start of curve amove .07747 .19558 bezier .611678E-01 .196543 .443258E-01 .185402 .04318 .16764 bezier .400605E-01 .156809 .407472E-01 .14521 .03937 .133985 aline .03937 .07874 bezier .415868E-01 .060775 .039209 .390385E-01 .05334 .024765 aline .542925E-01 .242887E-01 bezier .073194 .08068 .915524E-01 .138327 .109492 .195036 aline .107315 .19558 aline .10668 .196215 aline .078105 .196215 aline .07747 .19558 closepath ! end of curve ! start of curve amove .12954 .18669 bezier .111571 .130371 .928127E-01 .0739 .752929E-01 .176893E-01 bezier .946952E-01 .158949E-01 .116967 .135552E-01 .13335 .026035 bezier .144905 .415395E-01 .143553 .610534E-01 .145415 .07874 aline .145415 .133985 bezier .143198 .15195 .145576 .173686 .131445 .18796 aline .130492 .188436 aline .130048 .188214 closepath ! end of curve fill dfont endchar dfont char=32 !-------------- Beginning of new char. dfont wid=.524996 hei=.219444 dep=.111112 italic=0 set path ! start of curve newpath ! start of curve amove .0254 .083185 aline .02667 .08255 aline .02794 .081915 aline .02921 .080645 aline .03048 .078105 aline .03048 -.03175 aline .031115 -.032385 aline .15367 -.032385 aline .154305 -.03175 aline .154305 .078105 aline .155575 .080645 aline .156845 .081915 aline .159385 .083185 aline .16383 .083185 aline .16637 .081915 aline .16764 .080645 aline .16891 .078105 aline .16891 -.041275 aline .168275 -.04318 aline .1651 -.046355 aline .163195 -.04699 aline .02159 -.04699 aline .019685 -.046355 aline .01651 -.04318 aline .015875 -.041275 aline .015875 .078105 aline .017145 .080645 aline .018415 .081915 aline .019685 .08255 aline .020955 .083185 closepath ! end of curve fill dfont endchar dfont char=33 !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .095885 .21717 bezier .109925 .214899 .111816 .198439 .10922 .187325 bezier .108641 .148119 .107589 .109599 .106045 .070485 aline .104775 .067945 aline .102235 .065405 aline .099695 .064135 aline .085725 .064135 aline .083185 .065405 aline .080645 .067945 aline .079375 .070485 bezier .780548E-01 .115718 .757031E-01 .160631 .0762 .20574 aline .078105 .20955 aline .079375 .21082 aline .08001 .21209 aline .080645 .212725 aline .081915 .21336 aline .083185 .21463 aline .086995 .216535 aline .089535 .21717 closepath ! end of curve ! start of curve amove .095885 .033655 bezier .112086 .311197E-01 .114994 .669062E-02 .099695 .000635 bezier .848295E-01 -.668551E-02 .685549E-01 .124734E-01 .078105 .026035 aline .083185 .031115 aline .085725 .032385 aline .08763 .03302 aline .089535 .033655 closepath ! end of curve fill dfont endchar dfont char=34 !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .064135 .21717 bezier .747536E-01 .215499 .784421E-01 .203205 .075565 .19431 bezier .745117E-01 .16952 .730217E-01 .145396 .07112 .12065 bezier .067629 .110583 .502721E-01 .112904 .050165 .123825 bezier .497775E-01 .151798 .456537E-01 .179196 .046355 .20701 aline .04826 .21082 aline .048895 .211455 aline .04953 .212725 aline .050165 .21336 aline .051435 .213995 aline .05207 .21463 aline .05588 .216535 aline .057785 .21717 closepath ! end of curve ! start of curve amove .127 .21717 bezier .136374 .215392 .141428 .204633 .13843 .196215 bezier .137054 .170376 .136402 .145043 .13335 .11938 bezier .128947 .111018 .113756 .113141 .11303 .12319 bezier .112675 .15161 .108233 .179237 .10922 .207645 aline .11049 .210185 aline .111125 .21082 aline .11176 .21209 aline .11303 .21336 aline .1143 .213995 aline .11557 .215265 aline .11684 .2159 aline .118745 .216535 aline .12065 .21717 closepath ! end of curve fill dfont endchar dfont char=35 !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .0762 .21336 aline .078105 .212725 bezier .907018E-01 .206976 .839837E-01 .191852 .083185 .182245 bezier .834351E-01 .17357 .799777E-01 .165086 .08128 .156845 aline .11684 .156845 bezier .12139 .173572 .119837 .1914 .125095 .20828 bezier .132365 .219966 .152129 .209886 .146685 .197485 bezier .146232 .183768 .142162 .17017 .142875 .156845 aline .16256 .156845 bezier .175128 .154649 .175128 .13491 .16256 .132715 aline .139065 .132715 bezier .135762 .115743 .134464 .986292E-01 .132715 .08128 aline .13335 .080645 aline .16256 .080645 bezier .175128 .784495E-01 .175128 .587105E-01 .16256 .056515 aline .12954 .056515 bezier .125025 .395606E-01 .126552 .215335E-01 .121285 .004445 bezier .114015 -.72406E-02 .942513E-01 .283923E-02 .099695 .01524 bezier .100126 .291772E-01 .104251 .429649E-01 .103505 .056515 aline .067945 .056515 bezier .634305E-01 .395606E-01 .649572E-01 .215335E-01 .05969 .004445 bezier .524197E-01 -.72406E-02 .326563E-01 .283922E-02 .0381 .01524 bezier .385306E-01 .291772E-01 .426563E-01 .429649E-01 .04191 .056515 aline .022225 .056515 bezier .965736E-02 .587105E-01 .965736E-02 .784495E-01 .022225 .080645 aline .04572 .080645 bezier .049023 .976169E-01 .503206E-01 .114731 .05207 .13208 aline .051435 .132715 aline .022225 .132715 bezier .965736E-02 .13491 .965736E-02 .154649 .022225 .156845 aline .055245 .156845 bezier .597952E-01 .173572 .058242 .1914 .0635 .20828 aline .066675 .211455 aline .069215 .212725 aline .07112 .21336 closepath ! end of curve ! start of curve amove .076835 .13081 bezier .749554E-01 .114336 .715216E-01 .971187E-01 .071755 .080645 aline .107315 .080645 bezier .110618 .976169E-01 .111916 .114731 .113665 .13208 aline .11303 .132715 aline .07747 .132715 closepath ! end of curve fill dfont endchar dfont char=36 !-------------- Beginning of new char. dfont wid=.524996 hei=.694445 dep=.083333 italic=0 set path ! start of curve newpath ! start of curve amove .095885 .24257 aline .097155 .241935 aline .098425 .2413 aline .09906 .240665 aline .10033 .24003 aline .100965 .23876 aline .1016 .238125 aline .10287 .235585 aline .10287 .215265 bezier .130066 .213787 .162115 .195927 .163195 .1651 bezier .168728 .152176 .154262 .136229 .14097 .144145 bezier .131326 .149237 .131265 .162978 .138218 .17018 bezier .133726 .184946 .11696 .192652 .10287 .19304 aline .10287 .121285 bezier .131492 .116284 .160404 .959701E-01 .16383 .065405 bezier .167923 .301927E-01 .135757 .138093E-02 .10287 -.00254 aline .10287 -.02286 bezier .100142 -.03258 .840664E-01 -.032325 .081915 -.022225 aline .081915 -.00254 bezier .534983E-01 -.711652E-03 .224301E-01 .200327E-01 .02159 .051435 bezier .188616E-01 .600946E-01 .221343E-01 .721676E-01 .032385 .074295 bezier .459942E-01 .778831E-01 .571246E-01 .615437E-01 .048895 .050165 aline .04572 .04699 bezier .501721E-01 .311135E-01 .660493E-01 .203784E-01 .081915 .019685 aline .081915 .10033 bezier .050554 .104453 .171718E-01 .128626 .020955 .163195 bezier .245298E-01 .192767 .542115E-01 .211761 .081915 .215265 aline .081915 .23495 aline .08255 .236855 aline .083185 .238125 aline .08636 .2413 aline .08763 .241935 aline .089535 .24257 closepath ! end of curve ! start of curve amove .080645 .19304 bezier .060165 .19088 .359323E-01 .172052 .04445 .14986 bezier .508325E-01 .135472 .667949E-01 .126828 .081915 .12573 aline .081915 .19304 aline .08128 .193675 closepath ! end of curve ! start of curve amove .10287 .095885 aline .10287 .02032 bezier .12999 .203401E-01 .154586 .546138E-01 .135255 .07747 bezier .127949 .878088E-01 .114529 .946671E-01 .10287 .095885 closepath ! end of curve fill dfont endchar dfont char=37 !-------------- Beginning of new char. dfont wid=.524996 hei=.694445 dep=.083333 italic=0 set path ! start of curve newpath ! start of curve amove .046355 .24257 bezier .712461E-01 .236276 .766926E-01 .204458 .07239 .183515 bezier .719745E-01 .163862 .517288E-01 .140139 .031115 .1524 bezier .830155E-02 .170815 .785527E-02 .205984 .02159 .22987 aline .02286 .23114 aline .023495 .23241 aline .028575 .23749 aline .029845 .238125 aline .031115 .239395 aline .034925 .2413 aline .03683 .241935 aline .040005 .24257 closepath ! end of curve ! start of curve amove .144145 .24257 bezier .156684 .239662 .154595 .224913 .149225 .216535 bezier .117247 .136108 .857497E-01 .554828E-01 .05334 -.024765 bezier .463662E-01 -.356237E-01 .028078 -.277826E-01 .031115 -.01524 bezier .644336E-01 .069055 .975762E-01 .153423 .131445 .23749 aline .13462 .240665 aline .13716 .241935 aline .139065 .24257 closepath ! end of curve ! start of curve amove .04064 .220345 bezier .282456E-01 .207417 .285229E-01 .183445 .041275 .170815 bezier .509941E-01 .170062 .525072E-01 .183796 .05461 .1905 bezier .548065E-01 .201348 .540519E-01 .216158 .04318 .221361 aline .041275 .22098 aline .04064 .220345 closepath ! end of curve ! start of curve amove .14478 .062865 bezier .171463 .557277E-01 .175571 .214263E-01 .17018 -.00127 bezier .166969 -.019085 .14799 -.379212E-01 .12954 -.02667 bezier .106265 -.810902E-02 .105633 .294453E-01 .12192 .052705 aline .127 .057785 aline .12827 .05842 aline .12954 .05969 aline .13335 .061595 aline .135255 .06223 aline .13843 .062865 closepath ! end of curve ! start of curve amove .139065 .04064 bezier .126623 .279918E-01 .126906 .410082E-02 .1397 -.008255 bezier .149324 -.899682E-02 .151292 .463659E-02 .153035 .01143 bezier .153205 .220663E-01 .152467 .366648E-01 .141605 .041656 aline .1397 .041275 aline .139065 .04064 closepath ! end of curve fill dfont endchar dfont char=38 !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .07747 .21717 bezier .103561 .212137 .107362 .179993 .104775 .15875 bezier .1002 .136157 .833059E-01 .119804 .700881E-01 .102553 bezier .766172E-01 .854489E-01 .867864E-01 .701847E-01 .095885 .05461 bezier .107862 .784047E-01 .118065 .103981 .12573 .128905 bezier .112328 .124744 .106838 .146742 .120015 .14986 aline .1651 .14986 bezier .174624 .14714 .174624 .131625 .1651 .128905 aline .14732 .128905 bezier .135513 .978971E-01 .124943 .662208E-01 .108744 .371475E-01 bezier .116475 .267262E-01 .130192 .122238E-01 .144145 .018415 bezier .153099 .250231E-01 .149017 .373677E-01 .15494 .045085 aline .15875 .04699 aline .16383 .04699 bezier .175944 .418075E-01 .169925 .259897E-01 .167005 .01651 bezier .160379 -.448107E-02 .132924 -.108548E-01 .116205 .00254 bezier .108742 .679555E-02 .102744 .134915E-01 .968375E-01 .195263E-01 bezier .818275E-01 -.507855E-03 .510612E-01 -.014155 .02921 .00381 bezier .212518E-02 .027472 .561225E-02 .736404E-01 .033655 .09525 aline .03429 .09652 aline .041275 .103505 aline .04191 .104775 aline .04572 .108585 bezier .394752E-01 .138702 .291134E-01 .171381 .045085 .20066 aline .04572 .201295 aline .046355 .202565 aline .047625 .203835 aline .04826 .205105 aline .05334 .210185 aline .05461 .21082 aline .05588 .21209 aline .06223 .215265 aline .06604 .216535 aline .069215 .21717 closepath ! end of curve ! start of curve amove .070485 .19558 bezier .535915E-01 .188228 .547297E-01 .165899 .05715 .15113 aline .05715 .146685 aline .057785 .14605 aline .057785 .14224 aline .05842 .141605 aline .060325 .13208 aline .615043E-01 .127363 bezier .778374E-01 .141665 .938563E-01 .166253 .08255 .188595 aline .08128 .191135 aline .080645 .19177 aline .08001 .19304 aline .07874 .19431 aline .0762 .19558 aline .075565 .196215 aline .07112 .196215 aline .070485 .19558 closepath ! end of curve ! start of curve amove .05207 .084455 bezier .346439E-01 .700899E-01 .286516E-01 .449936E-01 .040005 .0254 bezier .046657 .113671E-01 .642461E-01 .167736E-01 .07366 .024765 aline .08128 .032385 bezier .878014E-01 .378191E-01 .0783 .438538E-01 .0762 .04953 bezier .689372E-01 .620298E-01 .614632E-01 .743773E-01 .055245 .08763 aline .05207 .084455 closepath ! end of curve fill dfont endchar dfont char=39 !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .09652 .21336 bezier .12146 .20724 .122682 .175886 .11811 .155575 bezier .112631 .133859 .975247E-01 .115063 .07747 .10541 bezier .656849E-01 .102695 .583099E-01 .121294 .070485 .12573 bezier .897439E-01 .135621 .100516 .158106 .09906 .17907 bezier .867949E-01 .176224 .728345E-01 .185747 .075565 .19939 aline .0762 .20193 aline .078105 .20574 aline .07874 .206375 aline .079375 .207645 aline .08128 .20955 aline .08255 .210185 aline .083185 .21082 aline .086995 .212725 aline .089535 .21336 closepath ! end of curve fill dfont endchar dfont char=40 !-------------- Beginning of new char. dfont wid=.524996 hei=.694445 dep=.0833311 italic=0 set path ! start of curve newpath ! start of curve amove .146685 .24257 bezier .157015 .239472 .154974 .224942 .145415 .22225 bezier .765351E-01 .177482 .651833E-01 .732304E-01 .120015 .013335 bezier .128696 .165276E-02 .141759 -.564021E-02 .1524 -.014605 bezier .158955 -.252183E-01 .143247 -.344032E-01 .135255 -.02667 bezier .063693 .154502E-01 .396755E-01 .116517 .083185 .18669 bezier .964307E-01 .209743 .1164 .22969 .1397 .24257 closepath ! end of curve fill dfont endchar dfont char=")" !-------------- Beginning of new char. dfont wid=.524996 hei=.694445 dep=.0833311 italic=0 set path ! start of curve newpath ! start of curve amove .045085 .24257 bezier .11768 .203285 .14504 .103676 .104775 .032385 bezier .915174E-01 .676974E-02 .702852E-01 -.152095E-01 .045085 -.02921 bezier .343822E-01 -.03286 .025335 -.178787E-01 .03556 -.01143 bezier .104299 .300839E-01 .12008 .130282 .07112 .192405 bezier .612069E-01 .207904 .446856E-01 .21721 .03175 .229235 aline .031115 .23114 aline .031115 .23495 aline .03175 .236855 aline .032385 .238125 aline .03556 .2413 aline .03683 .241935 aline .038735 .24257 closepath ! end of curve fill dfont endchar dfont char="*" !-------------- Beginning of new char. dfont wid=.524996 hei=.520834 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .094615 .18161 aline .09652 .180975 aline .09906 .179705 aline .1016 .177165 aline .103505 .173355 aline .103505 .15494 aline .10287 .154305 aline .10287 .125095 bezier .117399 .131188 .131975 .142973 .14732 .14986 bezier .160612 .152249 .165297 .131166 .1524 .127635 bezier .140063 .120068 .124937 .113904 .114088 .105833 bezier .128836 .971098E-01 .14583 .908608E-01 .15875 .08001 bezier .16553 .692295E-01 .149993 .056756 .14097 .06604 bezier .128168 .726876E-01 .115237 .824904E-01 .10287 .08763 aline .10287 .05842 aline .103505 .057785 aline .103505 .03937 aline .1016 .03556 aline .09906 .03302 aline .09652 .03175 aline .094615 .031115 aline .09017 .031115 aline .088265 .03175 aline .085725 .03302 aline .083185 .03556 aline .08128 .03937 aline .08128 .057785 aline .081915 .05842 aline .081915 .08763 bezier .673863E-01 .815372E-01 .528102E-01 .697519E-01 .037465 .062865 bezier .241725E-01 .604765E-01 .194878E-01 .815592E-01 .032385 .08509 bezier .447221E-01 .926572E-01 .598486E-01 .988212E-01 .706967E-01 .106892 bezier .559489E-01 .115615 .389551E-01 .121864 .026035 .132715 bezier .192553E-01 .143495 .347925E-01 .155969 .043815 .146685 bezier .566169E-01 .140037 .069548 .130235 .081915 .125095 aline .081915 .154305 aline .08128 .15494 aline .08128 .173355 aline .083185 .177165 aline .085725 .179705 aline .088265 .180975 aline .09017 .18161 closepath ! end of curve fill dfont endchar dfont char="+" !-------------- Beginning of new char. dfont wid=.524996 hei=.530554 dep=-.0805569 italic=0 set path ! start of curve newpath ! start of curve amove .09525 .18542 aline .097155 .184785 aline .099695 .183515 aline .10287 .18034 aline .10414 .1778 aline .104775 .175895 aline .104775 .11938 aline .10541 .118745 aline .16129 .118745 bezier .173858 .116549 .173858 .968105E-01 .16129 .094615 aline .10541 .094615 aline .104775 .09398 aline .104775 .037465 bezier .102579 .248974E-01 .828405E-01 .248974E-01 .080645 .037465 aline .080645 .09398 aline .08001 .094615 aline .023495 .094615 bezier .109274E-01 .968105E-01 .109274E-01 .116549 .023495 .118745 aline .08001 .118745 aline .080645 .11938 aline .080645 .175895 aline .08128 .1778 aline .08255 .18034 aline .085725 .183515 aline .088265 .184785 aline .09017 .18542 closepath ! end of curve fill dfont endchar dfont char="," !-------------- Beginning of new char. dfont wid=.524996 hei=.125 dep=.138888 italic=0 set path ! start of curve newpath ! start of curve amove .09652 .042545 bezier .124296 .372084E-01 .12774 .763791E-03 .114935 -.019685 bezier .106574 -.351915E-01 .896164E-01 -.502377E-01 .07112 -.048895 aline .06985 -.04826 aline .065405 -.043815 aline .064135 -.041275 bezier .618533E-01 -.271662E-01 .799623E-01 -.291349E-01 .086995 -.02159 bezier .929572E-01 -.160193E-01 .985867E-01 -.877952E-02 .099187 -.508002E-03 bezier .829993E-01 -.475319E-02 .663792E-01 .107553E-01 .071755 .027305 aline .07239 .02921 aline .074295 .03302 aline .075565 .03429 aline .0762 .03556 aline .07874 .0381 aline .08001 .038735 aline .080645 .03937 aline .084455 .041275 aline .08636 .04191 aline .0889 .042545 closepath ! end of curve ! start of curve amove .09906 0 aline .099695 -.000635 aline .10033 0 aline .099695 .000635 aline .09906 0 closepath ! end of curve fill dfont endchar dfont char="-" !-------------- Beginning of new char. dfont wid=.524996 hei=.530554 dep=-.0805569 italic=0 set path ! start of curve newpath ! start of curve amove .15494 .118745 bezier .167508 .116549 .167508 .968105E-01 .15494 .094615 aline .029845 .094615 bezier .172774E-01 .968105E-01 .172774E-01 .116549 .029845 .118745 closepath ! end of curve fill dfont endchar dfont char="." !-------------- Beginning of new char. dfont wid=.524996 hei=.125 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .095885 .042545 aline .09906 .04191 aline .10541 .038735 aline .11049 .033655 bezier .122718 .177978E-01 .105252 -.636978E-02 .08636 0 aline .08001 .003175 aline .07493 .008255 aline .071755 .014605 aline .07112 .01778 aline .07112 .02413 aline .071755 .027305 aline .07493 .033655 aline .08001 .038735 aline .08636 .04191 aline .089535 .042545 closepath ! end of curve fill dfont endchar dfont char="/" !-------------- Beginning of new char. dfont wid=.524996 hei=.694445 dep=.0833311 italic=0 set path ! start of curve newpath ! start of curve amove .154305 .24257 aline .15621 .241935 aline .15875 .240665 aline .161925 .23749 aline .163195 .23495 aline .16383 .233045 aline .16383 .227965 bezier .124103 .143519 .833809E-01 .594848E-01 .04318 -.024765 bezier .356434E-01 -.365753E-01 .159538E-01 -.261976E-01 .02159 -.013335 bezier .616277E-01 .702598E-01 .101488 .153928 .141605 .23749 aline .14478 .240665 aline .14732 .241935 aline .149225 .24257 aline .154305 .24257 closepath ! end of curve fill dfont endchar dfont char="0" !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .09779 .21717 bezier .143197 .209618 .1642 .15741 .16637 .11684 bezier .168713 .073156 .155043 .203378E-01 .112395 -.000635 bezier .08251 -.138612E-01 .503313E-01 .730869E-02 .036195 .033655 bezier .109018E-01 .810978E-01 .117126E-01 .140384 .04064 .186055 bezier .533688E-01 .204465 .744047E-01 .219726 .09779 .21717 closepath ! end of curve ! start of curve amove .08763 .19558 bezier .550689E-01 .187932 .450965E-01 .148522 .04191 .12065 bezier .409401E-01 .863987E-01 .464097E-01 .484892E-01 .073025 .023495 bezier .898403E-01 .904613E-02 .114434 .194833E-01 .123825 .037465 bezier .147718 .779515E-01 .149876 .128803 .12827 .170815 bezier .120297 .185095 .105529 .197764 .088265 .196215 closepath ! end of curve fill dfont endchar dfont char="1" !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .102235 .21717 aline .103505 .216535 aline .104775 .2159 aline .10541 .215265 aline .10668 .21463 aline .107315 .21336 aline .10795 .212725 aline .10922 .210185 aline .10922 .020955 aline .109855 .02032 aline .147955 .02032 bezier .158089 .181709E-01 .158089 .151407E-02 .147955 -.000635 aline .04699 -.000635 bezier .368561E-01 .151407E-02 .368561E-01 .181709E-01 .04699 .02032 aline .08509 .02032 aline .085725 .020955 aline .085725 .168275 bezier .745371E-01 .160302 .566148E-01 .148861 .041275 .15494 bezier .331243E-01 .161431 .385528E-01 .176096 .048895 .174625 bezier .069986 .175703 .833536E-01 .195409 .090805 .21336 aline .093345 .2159 aline .094615 .216535 aline .09652 .21717 closepath ! end of curve fill dfont endchar dfont char="2" !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .095885 .21717 bezier .12876 .215673 .16306 .191107 .165735 .15621 bezier .16992 .111336 .131518 .797651E-01 .099695 .055245 bezier .867857E-01 .432924E-01 .699592E-01 .321225E-01 .059055 .02032 aline .141605 .02032 aline .14224 .020955 aline .14224 .029845 bezier .145456 .396787E-01 .162519 .396787E-01 .165735 .029845 aline .165735 .00635 aline .164465 .00381 aline .16383 .003175 aline .163195 .001905 aline .161925 .00127 aline .16129 .000635 aline .15875 -.000635 aline .02667 -.000635 bezier .156999E-01 .20773E-02 .172391E-01 .177903E-01 .02667 .02159 bezier .602815E-01 .523261E-01 .993004E-01 .773048E-01 .128905 .112395 bezier .147138 .134264 .147729 .171077 .121285 .18669 bezier .972837E-01 .201568 .594886E-01 .200563 .04572 .172085 aline .045085 .17018 bezier .506178E-01 .16381 .522135E-01 .149106 .04191 .144145 bezier .330922E-01 .138934 .020475 .144692 .01905 .15494 bezier .161836E-01 .194828 .059309 .222057 .095885 .21717 closepath ! end of curve fill dfont endchar dfont char="3" !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .102235 .21717 bezier .130122 .215577 .163948 .193405 .158115 .161925 bezier .157393 .143076 .144491 .12697 .12954 .11684 bezier .1586 .104481 .178059 .697306E-01 .1651 .03937 bezier .150791 .339508E-02 .107737 -.993364E-02 .073025 -.003175 bezier .452081E-01 .411446E-04 .131149E-01 .019493 .015875 .0508 bezier .179931E-01 .669282E-01 .442369E-01 .669282E-01 .046355 .0508 aline .046355 .045085 aline .04572 .042545 aline .043815 .038735 aline .04191 .03683 bezier .573923E-01 .175931E-01 .857551E-01 .013747 .10795 .018415 bezier .138069 .231117E-01 .158 .619832E-01 .13589 .085725 bezier .127518 .971475E-01 .112788 .102522 .099695 .104775 aline .069215 .104775 bezier .569436E-01 .108398 .617275E-01 .12947 .07493 .12573 bezier .092905 .1271 .115337 .127156 .127 .14478 bezier .138614 .158063 .138525 .181206 .12065 .18923 bezier .100517 .200117 .757081E-01 .197979 .05588 .187325 aline .05334 .184785 bezier .634313E-01 .17371 .496503E-01 .156014 .03683 .160655 bezier .215145E-01 .165699 .245523E-01 .185904 .032385 .196215 bezier .498233E-01 .216534 .778288E-01 .217423 .102235 .21717 closepath ! end of curve fill dfont endchar dfont char="4" !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .125095 .217805 aline .127 .21717 aline .12827 .216535 aline .131445 .21336 aline .13208 .21209 aline .132715 .210185 aline .132715 .080645 aline .13335 .08001 aline .167005 .08001 bezier .176529 .772897E-01 .176529 .617753E-01 .167005 .059055 aline .13335 .059055 aline .132715 .05842 aline .132715 .020955 aline .13335 .02032 aline .16129 .02032 bezier .17139 .181959E-01 .17139 .148909E-02 .16129 -.000635 aline .08509 -.000635 bezier .07499 .148909E-02 .07499 .181959E-01 .08509 .02032 aline .11303 .02032 aline .113665 .020955 aline .113665 .05842 aline .11303 .059055 aline .01778 .059055 bezier .770962E-02 .630776E-01 .930216E-02 .780164E-01 .01397 .085725 bezier .428158E-01 .128922 .690208E-01 .174494 .09906 .216535 aline .10033 .21717 aline .102235 .217805 closepath ! end of curve ! start of curve amove .112395 .201295 bezier .868852E-01 .161097 .594125E-01 .119877 .03556 .08001 aline .11303 .08001 aline .113665 .080645 aline .113665 .20193 aline .11303 .202565 closepath ! end of curve fill dfont endchar dfont char="5" !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .146685 .21336 bezier .156209 .21064 .156209 .195125 .146685 .192405 aline .05588 .192405 aline .055245 .19177 aline .055245 .12573 bezier .846757E-01 .140595 .128173 .140078 .14986 .11049 bezier .176788 .800478E-01 .168317 .281807E-01 .132715 .008255 bezier .975767E-01 -.145265E-01 .396774E-01 -.784977E-02 .02159 .033655 bezier .171597E-01 .448156E-01 .016823 .633119E-01 .032385 .065405 bezier .469304E-01 .677345E-01 .552707E-01 .482487E-01 .452438E-01 .384175E-01 bezier .068077 -.184422E-03 .137243 .015637 .141605 .060325 bezier .146846 .880772E-01 .119945 .12002 .090805 .113665 bezier .743013E-01 .113848 .058974 .104363 .04826 .092075 aline .046355 .09144 aline .038735 .09144 aline .034925 .093345 aline .033655 .094615 aline .03175 .098425 aline .03175 .206375 aline .033655 .210185 aline .034925 .211455 aline .037465 .212725 aline .038735 .21336 closepath ! end of curve fill dfont endchar dfont char="6" !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .12065 .21717 bezier .141799 .21694 .164456 .198302 .15875 .17526 bezier .1542 .16117 .130856 .162916 .128905 .1778 aline .128905 .183515 aline .12954 .186055 aline .13081 .188595 aline .131445 .18923 bezier .131024 .194487 .12199 .194539 .11811 .196215 bezier .076212 .199024 .446981E-01 .156028 .043815 .117475 bezier .741575E-01 .146072 .128446 .145036 .1524 .108585 bezier .177305 .772481E-01 .166944 .263359E-01 .13208 .00635 bezier .10053 -.150235E-01 .526303E-01 -.438291E-02 .034925 .029845 bezier .168942E-01 .645784E-01 .154738E-01 .104303 .023495 .141605 bezier .347378E-01 .184592 .748295E-01 .22158 .12065 .21717 closepath ! end of curve ! start of curve amove .085725 .11557 bezier .620444E-01 .11355 .393859E-01 .896451E-01 .047625 .065405 bezier .484005E-01 .404683E-01 .717685E-01 .114368E-01 .09906 .017145 bezier .136298 .019961 .156368 .701014E-01 .131445 .09779 bezier .121456 .112426 .102549 .119144 .085725 .11557 closepath ! end of curve fill dfont endchar dfont char="7" !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .032385 .219075 aline .033655 .21844 aline .034925 .217805 aline .03556 .21717 aline .03683 .216535 aline .037465 .215265 aline .0381 .21463 aline .038735 .21336 aline .161925 .21336 bezier .169852 .211122 .171758 .198826 .1651 .19431 bezier .112268 .145782 .832124E-01 .729661E-01 .083185 .003175 bezier .797511E-01 -.778957E-02 .620173E-01 -.638656E-02 .060325 .00508 bezier .058939 .719511E-01 .858915E-01 .141864 .132556 .191453 aline .13208 .192405 aline .040005 .192405 aline .03937 .19177 aline .03937 .18288 bezier .361536E-01 .173046 .190914E-01 .173046 .015875 .18288 aline .015875 .21209 aline .017145 .21463 aline .01778 .215265 aline .018415 .216535 aline .019685 .21717 aline .02032 .217805 aline .02159 .21844 aline .02286 .219075 closepath ! end of curve fill dfont endchar dfont char="8" !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .099695 .21717 bezier .133164 .216318 .173265 .185763 .161925 .14859 bezier .154679 .13108 .137661 .120143 .120015 .114935 bezier .150128 .107426 .177351 .769792E-01 .167005 .045085 bezier .14755 -.153022E-01 .547571E-01 -.021463 .023495 .03175 bezier .702132E-02 .057319 .184085E-01 .09197 .04445 .106045 aline .04953 .108585 aline .050165 .10922 aline .05207 .109855 aline .05588 .11176 aline .057785 .112395 aline .059055 .11303 aline .06477 .114935 bezier .408772E-01 .121081 .155514E-01 .14268 .02159 .169545 bezier .293881E-01 .203674 .677425E-01 .220014 .099695 .21717 closepath ! end of curve ! start of curve amove .085725 .19558 bezier .635571E-01 .195387 .361658E-01 .173651 .04699 .14986 bezier .644714E-01 .117163 .120314 .117163 .137795 .14986 bezier .148619 .173651 .121228 .195387 .09906 .19558 aline .098425 .196215 aline .08636 .196215 aline .085725 .19558 closepath ! end of curve ! start of curve amove .090805 .10414 bezier .610203E-01 .106236 .278878E-01 .745379E-01 .04318 .04445 bezier .635055E-01 .290927E-02 .136233 .907903E-02 .145415 .05588 bezier .148368 .848651E-01 .117384 .106551 .090805 .10414 closepath ! end of curve fill dfont endchar dfont char="9" !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .100965 .21717 bezier .141992 .21296 .163579 .168361 .164465 .131445 bezier .172547 .814299E-01 .153085 .186332E-01 .100965 -.000635 bezier .077528 -.727629E-02 .470284E-01 -.763669E-02 .03048 .013335 bezier .235684E-01 .235113E-01 .217404E-01 .422667E-01 .036195 .04699 bezier .499006E-01 .512485E-01 .062426 .337624E-01 .052705 .02286 bezier .831217E-01 .387525E-02 .121822 .293644E-01 .132715 .060325 bezier .137196 .071544 .141892 .840804E-01 .14097 .09525 bezier .110627 .666532E-01 .563385E-01 .676886E-01 .032385 .10414 bezier .844823E-02 .1343 .168391E-01 .183586 .050165 .203835 bezier .645434E-01 .215471 .832054E-01 .217949 .100965 .21717 closepath ! end of curve ! start of curve amove .08763 .19558 bezier .548391E-01 .193665 .032465 .155007 .046355 .12573 bezier .056781 .100458 .883564E-01 .887848E-01 .112395 .100965 bezier .129181 .107019 .143099 .126302 .137795 .14351 bezier .138303 .168953 .116189 .20146 .08763 .19558 closepath ! end of curve fill dfont endchar dfont char=":" !-------------- Beginning of new char. dfont wid=.524996 hei=.430555 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .095885 .14986 aline .09906 .149225 aline .10541 .14605 aline .11049 .14097 bezier .122718 .125113 .105252 .100945 .08636 .107315 aline .08001 .11049 aline .07493 .11557 aline .071755 .12192 aline .07112 .125095 aline .07112 .131445 aline .071755 .13462 aline .07493 .14097 aline .08001 .14605 aline .08636 .149225 aline .089535 .14986 closepath ! end of curve ! start of curve amove .095885 .042545 aline .09906 .04191 aline .10541 .038735 aline .11049 .033655 bezier .122718 .177978E-01 .105252 -.636978E-02 .08636 0 aline .08001 .003175 aline .07493 .008255 aline .071755 .014605 aline .07112 .01778 aline .07112 .02413 aline .071755 .027305 aline .07493 .033655 aline .08001 .038735 aline .08636 .04191 aline .089535 .042545 closepath ! end of curve fill dfont endchar dfont char=";" !-------------- Beginning of new char. dfont wid=.524996 hei=.430555 dep=.138888 italic=0 set path ! start of curve newpath ! start of curve amove .095885 .14986 aline .09906 .149225 aline .10541 .14605 aline .11049 .14097 bezier .122718 .125113 .105252 .100945 .08636 .107315 aline .08001 .11049 aline .07493 .11557 aline .071755 .12192 aline .07112 .125095 aline .07112 .131445 aline .071755 .13462 aline .07493 .14097 aline .08001 .14605 aline .08636 .149225 aline .089535 .14986 closepath ! end of curve ! start of curve amove .095885 .042545 bezier .118019 .373843E-01 .118528 .942451E-02 .1143 -.008255 bezier .108531 -.274066E-01 .933909E-01 -.464001E-01 .073025 -.04953 aline .07112 -.048895 aline .06985 -.04826 aline .065405 -.043815 aline .064135 -.041275 bezier .061965 -.277341E-01 .802424E-01 -.283151E-01 .08509 -.018415 aline .086995 -.01651 aline .08763 -.01524 aline .088265 -.014605 aline .0889 -.013335 aline .089535 -.0127 aline .09144 -.00889 aline .937683E-01 -.001905 aline .093345 -.000635 bezier .718745E-01 -.325078E-02 .626219E-01 .0289 .080645 .03937 aline .084455 .041275 aline .08636 .04191 aline .0889 .042545 closepath ! end of curve fill dfont endchar dfont char="<" !-------------- Beginning of new char. dfont wid=.524996 hei=.555555 dep=-.0555553 italic=0 set path ! start of curve newpath ! start of curve amove .153035 .194945 bezier .16687 .194493 .168439 .173764 .155575 .17018 bezier .122209 .148906 .886683E-01 .127874 .055245 .10668 bezier .907571E-01 .833299E-01 .128379 .622514E-01 .16256 .037465 bezier .170647 .272272E-01 .155435 .122225E-01 .145415 .020955 bezier .104313 .471482E-01 .622988E-01 .720755E-01 .022225 .099695 bezier .149192E-01 .111205 .279862E-01 .119513 .03683 .123825 bezier .739963E-01 .147441 .111063 .171194 .14859 .19431 aline .151765 .194945 closepath ! end of curve fill dfont endchar dfont char="=" !-------------- Beginning of new char. dfont wid=.524996 hei=.415624 dep=-.195488 italic=0 set path ! start of curve newpath ! start of curve amove .16129 .145415 bezier .173858 .143219 .173858 .12348 .16129 .121285 aline .023495 .121285 bezier .109274E-01 .12348 .109274E-01 .143219 .023495 .145415 closepath ! end of curve ! start of curve amove .16129 .092075 bezier .173858 .898795E-01 .173858 .701405E-01 .16129 .067945 aline .023495 .067945 bezier .109274E-01 .701405E-01 .109274E-01 .898795E-01 .023495 .092075 closepath ! end of curve fill dfont endchar dfont char=">" !-------------- Beginning of new char. dfont wid=.524996 hei=.555555 dep=-.0555553 italic=0 set path ! start of curve newpath ! start of curve amove .03302 .194945 bezier .763939E-01 .171497 .116935 .14228 .159385 .11684 bezier .169476 .109767 .163188 .956637E-01 .153035 .09271 bezier .114136 .680911E-01 .754228E-01 .432133E-01 .036195 .01905 bezier .221228E-01 .137333E-01 .133954E-01 .365737E-01 .027305 .04191 bezier .612435E-01 .063694 .954893E-01 .850516E-01 .12954 .10668 bezier .940279E-01 .13003 .564064E-01 .151109 .022225 .175895 bezier .163936E-01 .183578 .232981E-01 .195814 .03302 .194945 closepath ! end of curve fill dfont endchar dfont char="?" !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .10033 .215265 bezier .12458 .214146 .157602 .204995 .16256 .17653 bezier .165642 .155168 .1474 .140492 .130175 .132715 bezier .116166 .123711 .104489 .109932 .100965 .093345 aline .100965 .073025 aline .10033 .070485 aline .09906 .067945 aline .09652 .065405 aline .09398 .064135 aline .08001 .064135 aline .07747 .065405 aline .07493 .067945 bezier .705969E-01 .088368 .744446E-01 .111792 .0889 .127635 bezier .101667 .143507 .120306 .151232 .13589 .163195 bezier .145358 .175602 .130975 .18832 .118745 .1905 bezier .963175E-01 .195795 .696123E-01 .19818 .050165 .18288 bezier .534898E-01 .175432 .054559 .163689 .04572 .15875 bezier .334448E-01 .151321 .185251E-01 .16359 .022225 .177165 bezier .261774E-01 .203368 .555348E-01 .213846 .078105 .215265 aline .10033 .215265 closepath ! end of curve ! start of curve amove .09017 .033655 bezier .106371 .311197E-01 .109279 .669062E-02 .09398 .000635 bezier .791145E-01 -.668551E-02 .628399E-01 .124733E-01 .07239 .026035 aline .07747 .031115 aline .08001 .032385 aline .081915 .03302 aline .08382 .033655 closepath ! end of curve fill dfont endchar dfont char="@" !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .113665 .215265 bezier .14755 .211826 .165191 .175431 .16637 .14478 bezier .170501 .110561 .172304 .658898E-01 .1397 .04318 bezier .117967 .278075E-01 .887073E-01 .417594E-01 .078105 .0635 bezier .605707E-01 .974643E-01 .641571E-01 .145512 .09652 .169545 bezier .109456 .178493 .126907 .177544 .139827 .169926 bezier .135528 .189178 .111356 .198967 .09398 .192405 bezier .431032E-01 .179296 .235424E-01 .115666 .041275 .07112 bezier .526445E-01 .313201E-01 .103805 .180819E-02 .1397 .02921 aline .14097 .03048 aline .14224 .031115 bezier .148487 .410288E-01 .170845 .391744E-01 .168275 .024765 bezier .140062 -.108958E-01 .817335E-01 -.108941E-01 .050165 .020955 bezier -.121055E-02 .704007E-01 .509599E-02 .166831 .06731 .20447 aline .0762 .208915 aline .078105 .20955 aline .079375 .210185 aline .086995 .212725 aline .092075 .213995 aline .09525 .213995 aline .095885 .21463 aline .099695 .21463 aline .10033 .215265 aline .113665 .215265 closepath ! end of curve ! start of curve amove .140335 .17018 aline .1397 .169545 aline .140335 .16891 aline .14097 .169545 aline .140335 .17018 closepath ! end of curve ! start of curve amove .1143 .154305 bezier .893645E-01 .145932 .834507E-01 .113034 .0889 .090805 bezier .914707E-01 .730008E-01 .109175 .497799E-01 .12827 .06096 bezier .153765 .079038 .15475 .118161 .13843 .142875 bezier .132824 .150011 .124417 .156001 .114935 .15494 closepath ! end of curve fill dfont endchar dfont char="A" !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .10033 .217805 bezier .114046 .214324 .111327 .196721 .11557 .186055 bezier .128498 .130828 .140799 .753472E-01 .154305 .02032 aline .167005 .02032 bezier .177312 .182331E-01 .177312 .145194E-02 .167005 -.000635 aline .11684 -.000635 bezier .10674 .148909E-02 .10674 .181959E-01 .11684 .02032 aline .128905 .02032 bezier .127025 .322416E-01 .123629 .450316E-01 .12065 .05715 aline .064135 .05715 bezier .611559E-01 .450316E-01 .577595E-01 .322412E-01 .05588 .02032 aline .067945 .02032 bezier .078045 .181959E-01 .078045 .148909E-02 .067945 -.000635 aline .01778 -.000635 bezier .747256E-02 .145194E-02 .747256E-02 .182331E-01 .01778 .02032 aline .03048 .02032 bezier .469034E-01 .842963E-01 .590295E-01 .149964 .076835 .21336 aline .07874 .215265 aline .08001 .2159 aline .080645 .216535 aline .081915 .21717 aline .084455 .217805 closepath ! end of curve ! start of curve amove .09144 .188595 bezier .872564E-01 .152153 .757839E-01 .114445 .069215 .078105 aline .11557 .078105 bezier .108591 .114787 .978556E-01 .153462 .09271 .189865 aline .09144 .188595 closepath ! end of curve fill dfont endchar dfont char="B" !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .109855 .21336 bezier .14669 .211853 .177141 .166211 .154305 .133985 bezier .147441 .123638 .137055 .115748 .125095 .11176 bezier .156956 .105049 .178707 .693121E-01 .16637 .038735 bezier .159412 .173975E-01 .138781 .156916E-02 .11684 -.000635 aline .01651 -.000635 bezier .637608E-02 .151407E-02 .637608E-02 .181709E-01 .01651 .02032 aline .032385 .02032 aline .03302 .020955 aline .03302 .19177 aline .032385 .192405 aline .01651 .192405 bezier .637608E-02 .194554 .637608E-02 .211211 .01651 .21336 aline .109855 .21336 closepath ! end of curve ! start of curve amove .056515 .19177 aline .056515 .12192 aline .05715 .121285 aline .102235 .121285 bezier .126197 .123408 .148193 .151864 .133985 .174625 bezier .12924 .184731 .117978 .190385 .10795 .192405 aline .05715 .192405 aline .056515 .19177 closepath ! end of curve ! start of curve amove .056515 .099695 aline .056515 .020955 aline .05715 .02032 aline .108585 .02032 bezier .131939 .220463E-01 .153147 .473596E-01 .144145 .070485 bezier .14031 .862662E-01 .12585 .098114 .11049 .10033 aline .05715 .10033 aline .056515 .099695 closepath ! end of curve fill dfont endchar dfont char="C" !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .106045 .21717 bezier .120227 .216361 .134811 .207596 .145415 .20066 bezier .148326 .209437 .154713 .221944 .165735 .2159 aline .16637 .215265 aline .16764 .21463 aline .168275 .21336 aline .16891 .212725 aline .17018 .210185 aline .17018 .146685 bezier .166146 .134801 .144774 .138158 .14605 .15113 bezier .143946 .181105 .110121 .207267 .081915 .19177 bezier .423538E-01 .170701 .319914E-01 .118065 .041275 .07874 bezier .474851E-01 .464923E-01 .743885E-01 .112599E-01 .109855 .017145 bezier .130812 .213227E-01 .148301 .041363 .146685 .062865 bezier .149901 .726987E-01 .166964 .726987E-01 .17018 .062865 bezier .173784 .103772E-01 .105322 -.227896E-01 .0635 .005715 bezier .171025E-01 .354506E-01 .586313E-02 .986144E-01 .02032 .147955 bezier .030998 .185457 .644813E-01 .221173 .106045 .21717 closepath ! end of curve fill dfont endchar dfont char="D" !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .100965 .21336 bezier .146308 .206546 .16824 .154802 .17018 .1143 bezier .173091 .701083E-01 .155519 .151839E-01 .108585 .000635 aline .10541 0 aline .1016 0 aline .100965 -.000635 aline .01524 -.000635 bezier .493256E-02 .145194E-02 .493256E-02 .182331E-01 .01524 .02032 aline .02921 .02032 aline .029845 .020955 aline .029845 .19177 aline .02921 .192405 aline .01524 .192405 bezier .493256E-02 .194492 .493256E-02 .211273 .01524 .21336 aline .100965 .21336 closepath ! end of curve ! start of curve amove .05334 .19177 aline .05334 .020955 aline .053975 .02032 aline .094615 .02032 bezier .128622 .270756E-01 .143808 .649008E-01 .146685 .09525 bezier .148113 .129368 .138838 .170892 .106045 .188595 aline .10414 .18923 aline .10287 .189865 aline .100965 .1905 aline .098425 .191135 aline .09779 .19177 aline .094615 .19177 aline .09398 .192405 aline .053975 .192405 aline .05334 .19177 closepath ! end of curve fill dfont endchar dfont char="E" !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .161925 .21336 aline .163195 .212725 aline .164465 .21209 aline .1651 .211455 aline .16637 .21082 aline .167005 .20955 aline .16764 .208915 aline .16891 .206375 aline .16891 .16637 bezier .165694 .156536 .148631 .156536 .145415 .16637 aline .145415 .19177 aline .14478 .192405 aline .059055 .192405 aline .05842 .19177 aline .05842 .121285 aline .059055 .12065 aline .10414 .12065 aline .104775 .121285 aline .104775 .13335 bezier .107991 .143184 .125054 .143184 .12827 .13335 aline .12827 .086995 bezier .125054 .771613E-01 .107991 .771613E-01 .104775 .086995 aline .104775 .09906 aline .10414 .099695 aline .059055 .099695 aline .05842 .09906 aline .05842 .020955 aline .059055 .02032 aline .1524 .02032 aline .153035 .020955 aline .153035 .05207 bezier .156251 .619037E-01 .173314 .619037E-01 .17653 .05207 aline .17653 .00635 aline .17526 .00381 aline .174625 .003175 aline .17399 .001905 aline .17272 .00127 aline .172085 .000635 aline .169545 -.000635 aline .017145 -.000635 aline .013335 .00127 aline .012065 .00254 aline .01016 .00635 aline .01016 .013335 aline .012065 .017145 aline .013335 .018415 aline .017145 .02032 aline .03429 .02032 aline .034925 .020955 aline .034925 .19177 aline .03429 .192405 aline .017145 .192405 aline .013335 .19431 aline .012065 .19558 aline .01016 .19939 aline .01016 .206375 aline .012065 .210185 aline .013335 .211455 aline .015875 .212725 aline .017145 .21336 closepath ! end of curve fill dfont endchar dfont char="F" !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .1651 .21336 aline .16637 .212725 aline .16764 .21209 aline .168275 .211455 aline .169545 .21082 aline .17018 .20955 aline .170815 .208915 aline .172085 .206375 aline .172085 .16637 bezier .168869 .156536 .151806 .156536 .14859 .16637 aline .14859 .19177 aline .147955 .192405 aline .06096 .192405 aline .060325 .19177 aline .060325 .117475 aline .06096 .11684 aline .10795 .11684 aline .108585 .117475 aline .108585 .12954 bezier .111801 .139374 .128864 .139374 .13208 .12954 aline .13208 .083185 bezier .128864 .733513E-01 .111801 .733513E-01 .108585 .083185 aline .108585 .09525 aline .10795 .095885 aline .06096 .095885 aline .060325 .09525 aline .060325 .020955 aline .06096 .02032 aline .085725 .02032 bezier .952955E-01 .177169E-01 .952955E-01 .196808E-02 .085725 -.000635 aline .018415 -.000635 bezier .810756E-02 .145194E-02 .810756E-02 .182331E-01 .018415 .02032 aline .036195 .02032 aline .03683 .020955 aline .03683 .19177 aline .036195 .192405 aline .018415 .192405 bezier .810756E-02 .194492 .810756E-02 .211273 .018415 .21336 closepath ! end of curve fill dfont endchar dfont char="G" !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .09779 .21717 bezier .110663 .216651 .1239 .208131 .13335 .20193 bezier .135844 .210571 .142779 .221667 .153035 .2159 aline .15367 .215265 aline .15494 .21463 aline .155575 .21336 aline .15621 .212725 aline .15748 .210185 aline .15748 .146685 bezier .153446 .134801 .132074 .138158 .13335 .15113 bezier .131994 .174896 .110423 .202489 .08509 .194945 bezier .522051E-01 .184505 .040346 .1454 .037465 .11557 bezier .036211 .809877E-01 .449302E-01 .392038E-01 .07747 .02032 bezier .977106E-01 .893655E-02 .120984 .245089E-01 .127 .045085 aline .12954 .052705 aline .13081 .057785 aline .131445 .06096 aline .13208 .061595 aline .13208 .06477 aline .132715 .065405 aline .132715 .069215 aline .133096 .07112 aline .132715 .073025 aline .11176 .073025 bezier .101626 .751741E-01 .101626 .918309E-01 .11176 .09398 aline .16637 .09398 bezier .176677 .918931E-01 .176677 .751119E-01 .16637 .073025 aline .158115 .073025 aline .15748 .07239 aline .15748 .00635 bezier .154264 -.348374E-02 .137201 -.348374E-02 .133985 .00635 aline .133985 .013335 bezier .124756 .578638E-02 .111443 -.374488E-02 .09779 -.004445 bezier .543833E-01 -.79351E-02 .247723E-01 .343716E-01 .017145 .073025 bezier .758755E-02 .120333 .175834E-01 .180294 .061595 .208915 aline .069215 .212725 aline .07112 .21336 aline .07239 .213995 aline .0762 .215265 aline .07874 .2159 aline .081915 .216535 aline .08509 .216535 aline .085725 .21717 aline .09779 .21717 closepath ! end of curve fill dfont endchar dfont char="H" !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .070485 .21336 aline .071755 .212725 aline .074295 .211455 aline .075565 .210185 aline .07747 .206375 aline .07747 .19939 aline .075565 .19558 aline .074295 .19431 aline .070485 .192405 aline .055245 .192405 aline .05461 .19177 aline .05461 .12192 aline .055245 .121285 aline .12954 .121285 aline .130175 .12192 aline .130175 .19177 aline .12954 .192405 aline .1143 .192405 aline .11049 .19431 aline .10922 .19558 aline .107315 .19939 aline .107315 .206375 aline .10922 .210185 aline .11049 .211455 aline .1143 .21336 aline .169545 .21336 aline .173355 .211455 aline .174625 .210185 aline .17653 .206375 aline .17653 .19939 aline .174625 .19558 aline .173355 .19431 aline .169545 .192405 aline .154305 .192405 aline .15367 .19177 aline .15367 .020955 aline .154305 .02032 aline .169545 .02032 aline .173355 .018415 aline .174625 .017145 aline .17653 .013335 aline .17653 .00635 aline .174625 .00254 aline .173355 .00127 aline .169545 -.000635 aline .1143 -.000635 aline .11049 .00127 aline .10922 .00254 aline .107315 .00635 aline .107315 .013335 aline .10922 .017145 aline .11049 .018415 aline .1143 .02032 aline .12954 .02032 aline .130175 .020955 aline .130175 .099695 aline .12954 .10033 aline .055245 .10033 aline .05461 .099695 aline .05461 .020955 aline .055245 .02032 aline .070485 .02032 aline .074295 .018415 aline .075565 .017145 aline .07747 .013335 aline .07747 .00635 aline .075565 .00254 aline .074295 .00127 aline .070485 -.000635 aline .01524 -.000635 aline .01143 .00127 aline .01016 .00254 aline .008255 .00635 aline .008255 .013335 aline .01016 .017145 aline .01143 .018415 aline .01524 .02032 aline .03048 .02032 aline .031115 .020955 aline .031115 .19177 aline .03048 .192405 aline .01524 .192405 aline .01143 .19431 aline .01016 .19558 aline .008255 .19939 aline .008255 .206375 aline .01016 .210185 aline .01143 .211455 aline .01397 .212725 aline .01524 .21336 closepath ! end of curve fill dfont endchar dfont char="I" !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .149225 .21336 bezier .15888 .210935 .15888 .19483 .149225 .192405 aline .104775 .192405 aline .10414 .19177 aline .10414 .020955 aline .104775 .02032 aline .149225 .02032 bezier .15888 .178954E-01 .15888 .178964E-02 .149225 -.000635 aline .03556 -.000635 bezier .259046E-01 .178964E-02 .259046E-01 .178954E-01 .03556 .02032 aline .08001 .02032 aline .080645 .020955 aline .080645 .19177 aline .08001 .192405 aline .03556 .192405 bezier .259046E-01 .19483 .259046E-01 .210935 .03556 .21336 closepath ! end of curve fill dfont endchar dfont char="J" !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .160655 .21336 aline .161925 .212725 aline .164465 .211455 aline .165735 .210185 aline .16764 .206375 aline .16764 .19939 aline .165735 .19558 aline .164465 .19431 aline .160655 .192405 aline .14351 .192405 aline .142875 .19177 aline .142875 .03937 bezier .138485 .641454E-02 .992514E-01 -.103873E-01 .06985 -.003175 bezier .475102E-01 -.256336E-02 .213475E-01 .154298E-01 .02667 .040005 bezier .311158E-01 .547085E-01 .546433E-01 .527222E-01 .056515 .037465 aline .056515 .03175 aline .055245 .02794 aline .541338E-01 .257175E-01 bezier .727833E-01 .011011 .108115 .126674E-01 .11811 .037465 aline .118745 .04064 aline .11938 .041275 aline .11938 .19177 aline .118745 .192405 aline .08382 .192405 bezier .735126E-01 .194492 .735126E-01 .211273 .08382 .21336 closepath ! end of curve fill dfont endchar dfont char="K" !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .065405 .21336 bezier .757124E-01 .211273 .757124E-01 .194492 .065405 .192405 aline .051435 .192405 aline .0508 .19177 aline .0508 .099695 bezier .606771E-01 .108139 .696124E-01 .122712 .079375 .13335 bezier .939806E-01 .153266 .112271 .172347 .125095 .192405 bezier .112708 .188596 .106125 .207584 .117475 .212725 aline .11938 .21336 aline .163195 .21336 bezier .173502 .211273 .173502 .194492 .163195 .192405 aline .15113 .192405 bezier .133402 .169635 .114557 .147528 .973667E-01 .12446 bezier .116697 .896495E-01 .136075 .546404E-01 .15621 .02032 aline .16637 .02032 bezier .176677 .182331E-01 .176677 .145194E-02 .16637 -.000635 aline .127 -.000635 bezier .116693 .145194E-02 .116693 .182331E-01 .127 .02032 aline .132715 .02032 bezier .118274 .049041 .100335 .791991E-01 .08382 .10795 bezier .724449E-01 .946689E-01 .620724E-01 .806651E-01 .0508 .06731 aline .0508 .020955 aline .051435 .02032 aline .065405 .02032 bezier .757124E-01 .182331E-01 .757124E-01 .145194E-02 .065405 -.000635 aline .017145 -.000635 bezier .683756E-02 .145194E-02 .683756E-02 .182331E-01 .017145 .02032 aline .031115 .02032 aline .03175 .020955 aline .03175 .19177 aline .031115 .192405 aline .017145 .192405 bezier .683756E-02 .194492 .683756E-02 .211273 .017145 .21336 closepath ! end of curve fill dfont endchar dfont char="L" !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .0889 .21336 aline .09017 .212725 aline .09271 .211455 aline .094615 .20955 aline .095885 .20701 aline .095885 .198755 aline .094615 .196215 aline .09271 .19431 aline .0889 .192405 aline .062865 .192405 aline .06223 .19177 aline .06223 .020955 aline .062865 .02032 aline .14732 .02032 aline .147955 .020955 aline .147955 .051435 bezier .150453 .620869E-01 .168952 .620869E-01 .17145 .051435 aline .17145 .00635 aline .17018 .00381 aline .169545 .003175 aline .16891 .001905 aline .16764 .00127 aline .167005 .000635 aline .164465 -.000635 aline .01905 -.000635 bezier .879278E-02 .143465E-02 .879278E-02 .182503E-01 .01905 .02032 aline .0381 .02032 aline .038735 .020955 aline .038735 .19177 aline .0381 .192405 aline .01905 .192405 bezier .879278E-02 .194475 .879278E-02 .21129 .01905 .21336 closepath ! end of curve fill dfont endchar dfont char="M" !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .04699 .21336 aline .048895 .212725 aline .0508 .21209 aline .051435 .211455 aline .052705 .21082 aline .05588 .207645 aline .057785 .203835 aline .07366 .15621 bezier .797399E-01 .135737 .877344E-01 .11519 .092075 .094615 bezier .978276E-01 .115073 .104651 .135755 .111125 .15621 aline .127 .203835 aline .128905 .207645 aline .13208 .21082 aline .13335 .211455 aline .133985 .21209 aline .137795 .21336 aline .170815 .21336 aline .174625 .211455 aline .17653 .20955 aline .1778 .20701 aline .1778 .198755 aline .17653 .196215 aline .174625 .19431 aline .170815 .192405 aline .16002 .192405 aline .159385 .19177 aline .159385 .020955 aline .16002 .02032 aline .170815 .02032 aline .174625 .018415 aline .17653 .01651 aline .1778 .01397 aline .1778 .005715 aline .17653 .003175 aline .174625 .00127 aline .170815 -.000635 aline .128905 -.000635 aline .125095 .00127 aline .12319 .003175 aline .12192 .005715 aline .12192 .01397 aline .12319 .01651 aline .125095 .018415 aline .128905 .02032 aline .1397 .02032 aline .140335 .020955 aline .140335 .18923 bezier .137062 .182531 .134969 .169591 .131445 .160655 aline .13081 .158115 aline .127635 .14859 aline .127 .14605 aline .121285 .128905 aline .12065 .126365 aline .10541 .080645 bezier .101933 .681457E-01 .828517E-01 .681457E-01 .079375 .080645 aline .064135 .126365 bezier .577033E-01 .147506 .500924E-01 .168326 .045085 .189865 aline .04445 .18923 aline .04445 .020955 aline .045085 .02032 aline .05588 .02032 aline .05969 .018415 aline .061595 .01651 aline .062865 .01397 aline .062865 .005715 aline .061595 .003175 aline .05969 .00127 aline .05588 -.000635 aline .01397 -.000635 aline .01016 .00127 aline .008255 .003175 aline .006985 .005715 aline .006985 .01397 aline .008255 .01651 aline .01016 .018415 aline .01397 .02032 aline .024765 .02032 aline .0254 .020955 aline .0254 .19177 aline .024765 .192405 aline .01397 .192405 aline .01016 .19431 aline .008255 .196215 aline .006985 .198755 aline .006985 .20701 aline .008255 .20955 aline .01016 .211455 aline .0127 .212725 aline .01397 .21336 closepath ! end of curve fill dfont endchar dfont char="N" !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .055245 .21336 bezier .703006E-01 .208521 .695942E-01 .189177 .0762 .177165 bezier .946894E-01 .125761 .114111 .747428E-01 .131445 .02286 aline .13208 .023495 aline .13208 .19177 aline .131445 .192405 aline .116205 .192405 aline .112395 .19431 aline .111125 .19558 aline .10922 .19939 aline .10922 .206375 aline .111125 .210185 aline .112395 .211455 aline .116205 .21336 aline .167005 .21336 aline .170815 .211455 aline .172085 .210185 aline .17399 .206375 aline .17399 .19939 aline .172085 .19558 aline .170815 .19431 aline .167005 .192405 aline .151765 .192405 aline .15113 .19177 aline .15113 .00635 aline .14986 .00381 aline .149225 .003175 aline .14859 .001905 aline .14732 .00127 aline .146685 .000635 aline .144145 -.000635 aline .12954 -.000635 bezier .114484 .420364E-02 .115191 .235483E-01 .108585 .03556 bezier .900956E-01 .869642E-01 .070674 .137982 .05334 .189865 aline .052705 .18923 aline .052705 .020955 aline .05334 .02032 aline .06858 .02032 aline .07239 .018415 aline .07366 .017145 aline .075565 .013335 aline .075565 .00635 aline .07366 .00254 aline .07239 .00127 aline .06858 -.000635 aline .01778 -.000635 aline .01397 .00127 aline .0127 .00254 aline .010795 .00635 aline .010795 .013335 aline .0127 .017145 aline .01397 .018415 aline .01778 .02032 aline .03302 .02032 aline .033655 .020955 aline .033655 .19177 aline .03302 .192405 aline .01778 .192405 aline .01397 .19431 aline .0127 .19558 aline .010795 .19939 aline .010795 .206375 aline .0127 .210185 aline .01397 .211455 aline .01651 .212725 aline .01778 .21336 closepath ! end of curve fill dfont endchar dfont char="O" !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .11049 .21717 bezier .127632 .216411 .150527 .21194 .156845 .192405 bezier .163354 .174055 .162735 .155715 .164465 .13716 aline .164465 .075565 bezier .161598 .526144E-01 .165403 .249584E-01 .14732 .00635 bezier .136876 -.235565E-02 .122714 -.312107E-02 .11049 -.004445 aline .074295 -.004445 bezier .571528E-01 -.368601E-02 .342577E-01 .78462E-03 .02794 .02032 bezier .214311E-01 .386695E-01 .220499E-01 .570095E-01 .02032 .075565 aline .02032 .13716 bezier .231865E-01 .160111 .193821E-01 .187767 .037465 .206375 bezier .047909 .215081 .620708E-01 .215846 .074295 .21717 aline .11049 .21717 closepath ! end of curve ! start of curve amove .079375 .19558 bezier .657885E-01 .195874 .502521E-01 .188414 .04826 .173355 bezier .044923 .161592 .450939E-01 .149779 .043815 .137795 aline .043815 .080645 bezier .461835E-01 .618152E-01 .431512E-01 .394646E-01 .057785 .02413 bezier .765709E-01 .133819E-01 .998972E-01 .148993E-01 .120015 .02032 bezier .138965 .276978E-01 .137875 .514857E-01 .140335 .06731 aline .140335 .08001 aline .14097 .080645 aline .14097 .137795 bezier .138522 .155093 .141444 .176906 .126365 .189865 aline .120015 .19304 aline .114935 .19431 aline .11176 .194945 aline .111125 .19558 aline .10541 .19558 aline .104775 .196215 aline .08001 .196215 aline .079375 .19558 closepath ! end of curve fill dfont endchar dfont char="P" !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .109855 .21336 bezier .15136 .211139 .181508 .163402 .164465 .125095 bezier .155353 .103001 .133428 .870875E-01 .109855 .08509 aline .059055 .08509 aline .05842 .084455 aline .05842 .020955 aline .059055 .02032 aline .0762 .02032 aline .08001 .018415 aline .08128 .017145 aline .083185 .013335 aline .083185 .00635 aline .08128 .00254 aline .08001 .00127 aline .0762 -.000635 aline .017145 -.000635 aline .013335 .00127 aline .012065 .00254 aline .01016 .00635 aline .01016 .013335 aline .012065 .017145 aline .013335 .018415 aline .017145 .02032 aline .03429 .02032 aline .034925 .020955 aline .034925 .19177 aline .03429 .192405 aline .017145 .192405 aline .013335 .19431 aline .012065 .19558 aline .01016 .19939 aline .01016 .206375 aline .012065 .210185 aline .013335 .211455 aline .017145 .21336 aline .109855 .21336 closepath ! end of curve ! start of curve amove .05842 .19177 aline .05842 .10668 aline .059055 .106045 aline .103505 .106045 bezier .130551 .10825 .154554 .138305 .14224 .164465 bezier .135988 .180465 .119351 .189852 .103505 .192405 aline .059055 .192405 aline .05842 .19177 closepath ! end of curve fill dfont endchar dfont char="Q" !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=.138888 italic=0 set path ! start of curve newpath ! start of curve amove .11049 .21717 bezier .127632 .216411 .150527 .21194 .156845 .192405 bezier .163354 .174055 .162735 .155715 .164465 .13716 aline .164465 .075565 bezier .161598 .526144E-01 .165403 .249584E-01 .14732 .00635 aline .14605 .005715 aline .14478 .004445 aline .14351 .00381 aline .142875 .003175 aline .138303 .888996E-03 bezier .143359 -.014565 .155937 -.285702E-01 .16002 -.04445 aline .159385 -.046355 aline .156845 -.048895 aline .155575 -.04953 aline .139065 -.04953 aline .136525 -.04826 aline .13335 -.045085 aline .127 -.032385 aline .126365 -.03175 aline .120015 -.01905 aline .11938 -.018415 aline .112395 -.004445 aline .111442 -.396875E-02 aline .11049 -.004445 aline .074295 -.004445 bezier .571528E-01 -.368601E-02 .342577E-01 .78462E-03 .02794 .02032 bezier .214311E-01 .386695E-01 .220499E-01 .570095E-01 .02032 .075565 aline .02032 .13716 bezier .231865E-01 .160111 .193821E-01 .187767 .037465 .206375 bezier .047909 .215081 .620708E-01 .215846 .074295 .21717 aline .11049 .21717 closepath ! end of curve ! start of curve amove .08001 .19558 bezier .660501E-01 .196121 .501166E-01 .187642 .04826 .172085 bezier .448599E-01 .159702 .450111E-01 .147281 .043815 .13462 aline .043815 .078105 bezier .460419E-01 .600686E-01 .434761E-01 .390061E-01 .05715 .02413 bezier .700381E-01 .156963E-01 .866559E-01 .153456E-01 .100806 .174625E-01 aline .098425 .022225 aline .09779 .02286 aline .09144 .03556 aline .090805 .036195 aline .083185 .051435 aline .083185 .05334 aline .08382 .055245 aline .084455 .056515 aline .08636 .05842 aline .088265 .059055 aline .104775 .059055 bezier .113529 .486168E-01 .118251 .345121E-01 .12573 .02286 bezier .13887 .325653E-01 .138018 .510422E-01 .140335 .06477 aline .140335 .07747 aline .14097 .078105 aline .14097 .13462 bezier .138743 .152656 .141309 .173719 .127635 .188595 bezier .113501 .197914 .960967E-01 .196743 .08001 .19558 closepath ! end of curve fill dfont endchar dfont char="R" !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .092075 .21336 bezier .128911 .212162 .164093 .173236 .149225 .136525 bezier .144526 .123257 .134123 .112808 .122555 .10541 bezier .133355 .098104 .140925 .861193E-01 .142875 .073025 aline .142875 .03429 bezier .1443 .277972E-01 .145007 .152293E-01 .15494 .01651 bezier .163052 .023681 .155548 .377163E-01 .16637 .042545 aline .177165 .042545 aline .179705 .041275 bezier .188074 .314441E-01 .181627 .168686E-01 .175895 .006985 bezier .162385 -.127046E-01 .12979 -.538749E-02 .12319 .01651 aline .121285 .022225 aline .120015 .028575 aline .120015 .03302 aline .11938 .033655 aline .11938 .07112 bezier .116541 .0852 .102598 .094058 .089535 .095885 aline .055245 .095885 aline .05461 .09525 aline .05461 .020955 aline .055245 .02032 aline .070485 .02032 aline .074295 .018415 aline .075565 .017145 aline .07747 .013335 aline .07747 .00635 aline .075565 .00254 aline .074295 .00127 aline .070485 -.000635 aline .01524 -.000635 aline .01143 .00127 aline .01016 .00254 aline .008255 .00635 aline .008255 .013335 aline .01016 .017145 aline .01143 .018415 aline .01524 .02032 aline .03048 .02032 aline .031115 .020955 aline .031115 .19177 aline .03048 .192405 aline .01524 .192405 aline .01143 .19431 aline .01016 .19558 aline .008255 .19939 aline .008255 .206375 aline .01016 .210185 aline .01143 .211455 aline .01524 .21336 aline .092075 .21336 closepath ! end of curve ! start of curve amove .05461 .19177 aline .05461 .117475 aline .055245 .11684 aline .088265 .11684 bezier .10977 .118655 .134662 .138932 .127635 .16256 bezier .123068 .18029 .10463 .189967 .088265 .192405 aline .055245 .192405 aline .05461 .19177 closepath ! end of curve fill dfont endchar dfont char="S" !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .09144 .21717 bezier .105919 .215801 .121746 .210945 .132715 .20066 bezier .134839 .208797 .138464 .219894 .149225 .21717 aline .151765 .2159 aline .1524 .215265 aline .15367 .21463 aline .154305 .21336 aline .15494 .212725 aline .15621 .210185 aline .15621 .14986 bezier .152176 .137976 .130804 .141333 .13208 .154305 bezier .130502 .1761 .11178 .19545 .089535 .19558 bezier .065102 .201478 .319601E-01 .176608 .043815 .14986 bezier .554872E-01 .12342 .892907E-01 .126079 .11303 .11811 bezier .150385 .112707 .176637 .706677E-01 .161925 .03556 bezier .151287 .762679E-02 .119438 -.896906E-02 .090805 -.00381 bezier .737685E-01 -.441473E-02 .560448E-01 .316191E-02 .04191 .010795 bezier .411314E-01 .157175E-02 .333881E-01 -.878052E-02 .023495 -.003175 aline .02286 -.00254 aline .02159 -.001905 aline .020955 -.000635 aline .02032 0 aline .01905 .00254 aline .01905 .06223 bezier .216161E-01 .727288E-01 .039389 .728338E-01 .042545 .062865 bezier .399891E-01 .397596E-01 .599469E-01 .206684E-01 .08255 .018415 bezier .106033 .108937E-01 .139467 .222925E-01 .142875 .0508 bezier .147083 .072388 .12729 .934798E-01 .10541 .09525 bezier .769526E-01 .10241 .417862E-01 .104993 .026035 .13335 bezier .622076E-02 .165365 .300232E-01 .208086 .065405 .215265 aline .071755 .216535 aline .075565 .216535 aline .0762 .21717 aline .09144 .21717 closepath ! end of curve fill dfont endchar dfont char="T" !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .16764 .21336 aline .16891 .212725 aline .17018 .21209 aline .170815 .211455 aline .172085 .21082 aline .17272 .20955 aline .173355 .208915 aline .174625 .206375 aline .174625 .16637 bezier .171409 .156536 .154346 .156536 .15113 .16637 aline .15113 .19177 aline .150495 .192405 aline .104775 .192405 aline .10414 .19177 aline .10414 .020955 aline .104775 .02032 aline .12954 .02032 aline .13335 .018415 aline .13462 .017145 aline .136525 .013335 aline .136525 .00635 aline .13462 .00254 aline .13335 .00127 aline .12954 -.000635 aline .055245 -.000635 aline .051435 .00127 aline .050165 .00254 aline .04826 .00635 aline .04826 .013335 aline .050165 .017145 aline .051435 .018415 aline .055245 .02032 aline .08001 .02032 aline .080645 .020955 aline .080645 .19177 aline .08001 .192405 aline .03429 .192405 aline .033655 .19177 aline .033655 .16637 bezier .304386E-01 .156536 .133764E-01 .156536 .01016 .16637 aline .01016 .20574 aline .010795 .207645 aline .01143 .208915 aline .014605 .21209 aline .015875 .212725 aline .01778 .21336 closepath ! end of curve fill dfont endchar dfont char="U" !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .06858 .21336 aline .06985 .212725 aline .07239 .211455 aline .07366 .210185 aline .075565 .206375 aline .075565 .19939 aline .07366 .19558 aline .07239 .19431 aline .06858 .192405 aline .051435 .192405 aline .0508 .19177 aline .0508 .06477 bezier .522388E-01 .409313E-01 .726659E-01 .114119E-01 .099695 .017145 bezier .120453 .230925E-01 .131965 .452973E-01 .133985 .06477 aline .133985 .19177 aline .13335 .192405 aline .116205 .192405 aline .112395 .19431 aline .111125 .19558 aline .10922 .19939 aline .10922 .206375 aline .111125 .210185 aline .112395 .211455 aline .116205 .21336 aline .17526 .21336 aline .17907 .211455 aline .18034 .210185 aline .182245 .206375 aline .182245 .19939 aline .18034 .19558 aline .17907 .19431 aline .17526 .192405 aline .158115 .192405 aline .15748 .19177 aline .15748 .062865 bezier .155788 .260736E-01 .12134 -.112633E-01 .08255 -.00381 bezier .508823E-01 .160396E-02 .296579E-01 .032896 .027305 .062865 aline .027305 .19177 aline .02667 .192405 aline .009525 .192405 aline .005715 .19431 aline .004445 .19558 aline .00254 .19939 aline .00254 .206375 aline .004445 .210185 aline .005715 .211455 aline .008255 .212725 aline .009525 .21336 closepath ! end of curve fill dfont endchar dfont char="V" !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .0635 .21336 bezier .0736 .211236 .0736 .194529 .0635 .192405 aline .05207 .192405 aline .516731E-01 .190818 aline .05207 .18923 aline .052705 .187325 aline .064135 .141605 aline .06477 .1397 aline .074295 .1016 bezier .802266E-01 .754327E-01 .879244E-01 .490097E-01 .092075 .02286 bezier .976009E-01 .484961E-01 .104145 .755193E-01 .11049 .1016 aline .120015 .1397 aline .12065 .141605 aline .13208 .187325 aline .132715 .18923 aline .133112 .190818 aline .132715 .192405 aline .121285 .192405 bezier .111185 .194529 .111185 .211236 .121285 .21336 aline .17018 .21336 bezier .180487 .211273 .180487 .194492 .17018 .192405 aline .158115 .192405 aline .150495 .161925 aline .14986 .16002 aline .141605 .127 aline .14097 .125095 aline .132715 .092075 aline .13208 .09017 aline .123825 .05715 aline .12319 .055245 aline .11557 .024765 aline .114935 .02286 aline .11049 .00508 aline .108585 .00127 aline .106045 -.00127 aline .104775 -.001905 aline .10414 -.00254 aline .10287 -.003175 aline .10033 -.00381 aline .084455 -.00381 aline .081915 -.003175 aline .080645 -.00254 aline .08001 -.001905 aline .07874 -.00127 aline .0762 .00127 aline .074295 .00508 aline .06985 .02286 aline .069215 .024765 aline .061595 .055245 aline .06096 .05715 aline .052705 .09017 aline .05207 .092075 aline .043815 .125095 aline .04318 .127 aline .034925 .16002 aline .03429 .161925 aline .02667 .192405 aline .014605 .192405 bezier .429756E-02 .194492 .429756E-02 .211273 .014605 .21336 closepath ! end of curve fill dfont endchar dfont char="W" !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .052705 .21336 bezier .630124E-01 .211273 .630124E-01 .194492 .052705 .192405 aline .037465 .192405 bezier .441585E-01 .136733 .052846 .796093E-01 .059055 .02286 bezier .635354E-01 .548457E-01 .697828E-01 .904389E-01 .08001 .122555 bezier .861393E-01 .130716 .103036 .129809 .10668 .11938 bezier .114185 .873755E-01 .122097 .539512E-01 .12573 .02286 bezier .131939 .796093E-01 .140626 .136733 .14732 .192405 aline .13208 .192405 bezier .121773 .194492 .121773 .211273 .13208 .21336 aline .17272 .21336 bezier .185514 .210482 .180807 .18873 .16764 .192405 bezier .156829 .128841 .150801 .652346E-01 .1397 .00127 bezier .132404 -.861981E-02 .112542 -.467096E-02 .112395 .00889 bezier .105021 .403458E-01 .976413E-01 .736472E-01 .092075 .10414 bezier .869027E-01 .709263E-01 .793258E-01 .349941E-01 .06985 .001905 bezier .638303E-01 -.805875E-02 .433343E-01 -.579809E-02 .04318 .00762 bezier .348108E-01 .693962E-01 .269462E-01 .130955 .017145 .192405 bezier .397839E-02 .18873 -.728656E-03 .210482 .012065 .21336 closepath ! end of curve fill dfont endchar dfont char="X" !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .07112 .21336 aline .07239 .212725 aline .07493 .211455 aline .076835 .20955 aline .078105 .20701 aline .078105 .198755 aline .076835 .196215 aline .07493 .19431 aline .07112 .192405 aline .0635 .192405 bezier .713676E-01 .176504 .811934E-01 .156282 .910167E-01 .141393 aline .094615 .14859 aline .09525 .150495 aline .10922 .178435 aline .109855 .18034 aline .115411 .191453 aline .114935 .192405 aline .107315 .192405 bezier .970076E-01 .194492 .970076E-01 .211273 .107315 .21336 aline .156845 .21336 bezier .1665 .210935 .1665 .19483 .156845 .192405 aline .14224 .192405 aline .12573 .159385 aline .125095 .15875 aline .102394 .113348 bezier .119172 .824174E-01 .135394 .510862E-01 .1524 .02032 aline .167005 .02032 bezier .176715 .178785E-01 .176715 .180649E-02 .167005 -.000635 aline .117475 -.000635 bezier .107168 .145194E-02 .107168 .182331E-01 .117475 .02032 aline .125095 .02032 bezier .115047 .421376E-01 .10244 .06626 .904875E-01 .881063E-01 bezier .794643E-01 .661787E-01 .678209E-01 .420634E-01 .05842 .02032 aline .06731 .02032 bezier .768341E-01 .175997E-01 .768341E-01 .208533E-02 .06731 -.000635 aline .017145 -.000635 bezier .762092E-02 .208533E-02 .762092E-02 .175997E-01 .017145 .02032 aline .03175 .02032 aline .032385 .020955 aline .073025 .102235 aline .785813E-01 .113348 bezier .644743E-01 .139716 .503683E-01 .166085 .036195 .192405 aline .02159 .192405 bezier .113328E-01 .194475 .113328E-01 .21129 .02159 .21336 closepath ! end of curve fill dfont endchar dfont char="Y" !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .064135 .21336 aline .065405 .212725 aline .067945 .211455 aline .06985 .20955 aline .07112 .20701 aline .07112 .198755 aline .06985 .196215 aline .067945 .19431 aline .064135 .192405 aline .05588 .192405 bezier .669842E-01 .165856 .824694E-01 .136455 .928007E-01 .109583 bezier .101921 .138136 .11827 .165561 .128905 .192405 aline .12065 .192405 aline .11684 .19431 aline .114935 .196215 aline .113665 .198755 aline .113665 .20701 aline .114935 .20955 aline .11684 .211455 aline .12065 .21336 aline .17018 .21336 bezier .180314 .211211 .180314 .194554 .17018 .192405 aline .15621 .192405 bezier .138633 .156748 .121888 .120556 .10414 .08509 aline .10414 .020955 aline .104775 .02032 aline .120015 .02032 aline .123825 .018415 aline .125095 .017145 aline .127 .013335 aline .127 .00635 aline .125095 .00254 aline .123825 .00127 aline .120015 -.000635 aline .06477 -.000635 aline .06096 .00127 aline .05969 .00254 aline .057785 .00635 aline .057785 .013335 aline .05969 .017145 aline .06096 .018415 aline .06477 .02032 aline .08001 .02032 aline .080645 .020955 aline .080645 .08509 bezier .628966E-01 .120556 .461524E-01 .156748 .028575 .192405 aline .014605 .192405 bezier .447108E-02 .194554 .447108E-02 .211211 .014605 .21336 closepath ! end of curve fill dfont endchar dfont char="Z" !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .16002 .21336 bezier .172324 .209363 .168307 .192697 .160655 .186055 bezier .124005 .130679 .838563E-01 .753875E-01 .048895 .02032 aline .14478 .02032 aline .145415 .020955 aline .145415 .05334 bezier .148631 .631737E-01 .165694 .631737E-01 .16891 .05334 aline .16891 .00635 aline .16764 .00381 aline .167005 .003175 aline .16637 .001905 aline .1651 .00127 aline .164465 .000635 aline .161925 -.000635 aline .024765 -.000635 bezier .124612E-01 .336242E-02 .164778E-01 .200284E-01 .02413 .02667 bezier .607797E-01 .820459E-01 .100929 .137337 .13589 .192405 aline .04572 .192405 aline .045085 .19177 aline .045085 .16637 bezier .418686E-01 .156536 .248064E-01 .156536 .02159 .16637 aline .02159 .20574 aline .022225 .207645 aline .02286 .208915 aline .026035 .21209 aline .027305 .212725 aline .02921 .21336 closepath ! end of curve fill dfont endchar dfont char="[" !-------------- Beginning of new char. dfont wid=.524996 hei=.694445 dep=.0833311 italic=0 set path ! start of curve newpath ! start of curve amove .163195 .24257 bezier .172719 .23985 .172719 .224335 .163195 .221615 aline .10287 .221615 aline .102235 .22098 aline .102235 -.008255 aline .10287 -.00889 aline .163195 -.00889 bezier .172719 -.116103E-01 .172719 -.271247E-01 .163195 -.029845 aline .085725 -.029845 aline .083185 -.028575 aline .08255 -.02794 aline .08128 -.027305 aline .080645 -.026035 aline .08001 -.0254 aline .07874 -.02286 aline .07874 .235585 aline .08001 .238125 aline .080645 .23876 aline .08128 .24003 aline .08255 .240665 aline .083185 .2413 aline .084455 .241935 aline .085725 .24257 closepath ! end of curve fill dfont endchar dfont char="\" !-------------- Beginning of new char. dfont wid=.524996 hei=.694445 dep=.0833311 italic=0 set path ! start of curve newpath ! start of curve amove .03556 .24257 aline .037465 .241935 aline .040005 .240665 bezier .544309E-01 .218938 .630796E-01 .193304 .075565 .17018 bezier .104683 .108248 .134905 .467724E-01 .16383 -.01524 bezier .166867 -.277826E-01 .148579 -.356237E-01 .141605 -.024765 bezier .101404 .594849E-01 .606817E-01 .143519 .020955 .227965 aline .020955 .233045 aline .02159 .23495 aline .02286 .23749 aline .026035 .240665 aline .028575 .241935 aline .03048 .24257 closepath ! end of curve fill dfont endchar dfont char="]" !-------------- Beginning of new char. dfont wid=.524996 hei=.694445 dep=.0833311 italic=0 set path ! start of curve newpath ! start of curve amove .09906 .24257 aline .10033 .241935 aline .1016 .2413 aline .102235 .240665 aline .103505 .24003 aline .10414 .23876 aline .104775 .238125 aline .106045 .235585 aline .106045 -.02286 aline .104775 -.0254 aline .10414 -.026035 aline .103505 -.027305 aline .102235 -.02794 aline .1016 -.028575 aline .09906 -.029845 aline .02159 -.029845 bezier .120659E-01 -.271247E-01 .120659E-01 -.116103E-01 .02159 -.00889 aline .081915 -.00889 aline .08255 -.008255 aline .08255 .22098 aline .081915 .221615 aline .02159 .221615 bezier .120659E-01 .224335 .120659E-01 .23985 .02159 .24257 closepath ! end of curve fill dfont endchar dfont char="^" !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .094615 .21336 bezier .11227 .203966 .130512 .194905 .14732 .18415 bezier .154157 .17485 .140555 .158319 .13081 .167005 bezier .117268 .173566 .104762 .184467 .090805 .188595 bezier .759173E-01 .180897 .623771E-01 .169211 .046355 .164465 bezier .348358E-01 .166856 .030993 .185744 .04445 .188595 bezier .595717E-01 .197014 .074657 .205484 .09017 .21336 aline .094615 .21336 closepath ! end of curve fill dfont endchar dfont char="_" !-------------- Beginning of new char. dfont wid=.524996 hei=0 dep=.0951357 italic=0 set path ! start of curve newpath ! start of curve amove .15494 -.01016 bezier .167508 -.123555E-01 .167508 -.320945E-01 .15494 -.03429 aline .029845 -.03429 bezier .172773E-01 -.320945E-01 .172773E-01 -.123555E-01 .029845 -.01016 closepath ! end of curve fill dfont endchar dfont char="`" !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .112395 .238125 aline .1143 .23749 aline .11557 .236855 aline .120015 .23241 bezier .125358 .223386 .115361 .217463 .108585 .213995 bezier .093327 .202549 .851153E-01 .183091 .08636 .164465 bezier .986251E-01 .167311 .112586 .157788 .109855 .144145 bezier .106515 .125048 .788548E-01 .12687 .071755 .14224 bezier .541491E-01 .176692 .735969E-01 .222267 .10795 .238125 closepath ! end of curve fill dfont endchar dfont char="a" !-------------- Beginning of new char. dfont wid=.524996 hei=.430555 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .092075 .153035 bezier .117221 .150883 .144898 .133405 .14859 .106045 aline .14859 .023495 bezier .158822 .177089E-01 .171535 .234525E-01 .18161 .01778 bezier .186426 .120934E-01 .184795 .165783E-02 .177165 -.000635 bezier .160251 -.189673E-03 .140456 -.340048E-02 .127953 .106363E-01 bezier .102453 -.458707E-02 .692971E-01 -.81934E-02 .042545 .00635 bezier .219418E-01 .176993E-01 .120024E-01 .483309E-01 .028575 .06731 bezier .537315E-01 .933791E-01 .926344E-01 .940537E-01 .125095 .09652 bezier .127416 .116538 .107005 .130291 .089535 .13208 aline .06985 .13208 aline .069215 .131445 aline .062865 .131445 aline .06223 .13081 aline .05969 .130175 bezier .633343E-01 .114466 .406659E-01 .104783 .03175 .11811 bezier .217153E-01 .135379 .413517E-01 .153019 .05842 .151765 aline .059055 .1524 aline .06604 .1524 aline .066675 .153035 aline .092075 .153035 closepath ! end of curve ! start of curve amove .11049 .07493 bezier .891666E-01 .073713 .646628E-01 .702121E-01 .047625 .05461 bezier .362161E-01 .397112E-01 .053479 .214763E-01 .069215 .019685 bezier .867316E-01 .016597 .108043 .190648E-01 .12192 .032385 aline .123825 .036195 aline .12446 .038735 aline .125095 .03937 aline .125095 .07493 aline .12446 .075565 aline .111125 .075565 aline .11049 .07493 closepath ! end of curve fill dfont endchar dfont char="b" !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .051435 .21336 aline .052705 .212725 aline .053975 .21209 aline .05461 .211455 aline .05588 .21082 aline .056515 .20955 aline .05715 .208915 aline .05842 .206375 aline .05842 .135255 bezier .761772E-01 .149783 .104098 .15744 .127 .14732 bezier .182283 .124316 .186811 .370303E-01 .135255 .00762 bezier .111889 -.762511E-02 .780893E-01 -.644632E-02 .059055 .01524 aline .05842 .014605 aline .05842 .00635 bezier .055264 -.361877E-02 .374911E-01 -.351377E-02 .034925 .006985 aline .034925 .19177 aline .03429 .192405 aline .012065 .192405 bezier .254092E-02 .195125 .254092E-02 .21064 .012065 .21336 closepath ! end of curve ! start of curve amove .09652 .130175 bezier .786295E-01 .128923 .637501E-01 .114464 .05842 .09779 aline .05842 .05969 bezier .628177E-01 .388644E-01 .785104E-01 .156781E-01 .102235 .018415 bezier .139392 .022821 .15855 .693012E-01 .14224 .100965 bezier .13536 .11895 .115593 .133614 .09652 .130175 closepath ! end of curve fill dfont endchar dfont char="c" !-------------- Beginning of new char. dfont wid=.524996 hei=.430555 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .121285 .153035 bezier .135519 .152113 .15644 .148666 .159385 .13081 bezier .163494 .114877 .140614 .104506 .131445 .11811 aline .12954 .12192 aline .128905 .12446 aline .128905 .130175 bezier .103612 .136455 .718935E-01 .130684 .05842 .10541 bezier .382246E-01 .737193E-01 .056897 .260031E-01 .09525 .019685 bezier .113097 .147707E-01 .136369 .228269E-01 .14224 .042545 bezier .148615 .513958E-01 .168529 .454434E-01 .163195 .03302 bezier .150096 -.302946E-02 .103262 -.995559E-02 .071755 .00381 bezier .248834E-01 .236036E-01 .011809 .897459E-01 .04572 .127 bezier .584672E-01 .141423 .768807E-01 .151241 .095885 .153035 aline .121285 .153035 closepath ! end of curve fill dfont endchar dfont char="d" !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .142875 .21336 aline .144145 .212725 aline .145415 .21209 aline .14605 .211455 aline .14732 .21082 aline .147955 .20955 aline .14859 .208915 aline .14986 .206375 aline .14986 .020955 aline .150495 .02032 aline .17272 .02032 bezier .182244 .175997E-01 .182244 .208533E-02 .17272 -.000635 aline .13335 -.000635 aline .13081 .000635 aline .130175 .00127 aline .128905 .001905 aline .12827 .003175 aline .127635 .00381 aline .126365 .00635 aline .126365 .01651 bezier .116537 .820124E-02 .102251 -.188521E-02 .08763 -.00254 bezier .425691E-01 -.732441E-02 .709407E-02 .405278E-01 .01397 .08255 bezier .144972E-01 .129903 .713926E-01 .169482 .1143 .144145 aline .11684 .142875 aline .117475 .14224 aline .118745 .141605 aline .11938 .14097 aline .12065 .140335 aline .12192 .139065 aline .12319 .13843 aline .12573 .13589 aline .126365 .136525 aline .126365 .19177 aline .12573 .192405 aline .103505 .192405 bezier .939809E-01 .195125 .939809E-01 .21064 .103505 .21336 closepath ! end of curve ! start of curve amove .081915 .130175 bezier .437897E-01 .126032 .263372E-01 .778338E-01 .04318 .046355 bezier .533405E-01 .219762E-01 .861959E-01 .869154E-02 .107315 .027305 bezier .117442 .357241E-01 .122552 .482028E-01 .126365 .060325 aline .126365 .098425 bezier .121068 .117351 .101675 .134079 .081915 .130175 closepath ! end of curve fill dfont endchar dfont char="e" !-------------- Beginning of new char. dfont wid=.524996 hei=.430555 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .102235 .153035 bezier .133548 .151528 .159983 .124197 .16129 .09271 bezier .162126 .845494E-01 .166332 .070655 .155575 .066675 aline .045085 .066675 bezier .486475E-01 .254766E-01 .110648 -.165738E-03 .13716 .034925 bezier .138838 .449076E-01 .1494 .493743E-01 .158115 .045085 bezier .168232 .378451E-01 .158499 .024893 .153035 .01778 bezier .113617 -.225122E-01 .364598E-01 -.683345E-04 .02286 .05461 bezier .972724E-02 .979128E-01 .416985E-01 .149177 .08763 .153035 aline .102235 .153035 closepath ! end of curve ! start of curve amove .089535 .131445 bezier .673093E-01 .129317 .047908 .109077 .04572 .086995 aline .137795 .086995 bezier .138824 .108749 .12199 .130855 .099695 .13208 aline .09017 .13208 aline .089535 .131445 closepath ! end of curve fill dfont endchar dfont char="f" !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .128905 .215265 bezier .142025 .215342 .158555 .204413 .15367 .18923 bezier .148862 .173686 .124319 .178244 .12446 .19431 bezier .109905 .19613 .927447E-01 .189435 .0889 .17399 aline .0889 .150495 aline .089535 .14986 aline .1397 .14986 bezier .149224 .14714 .149224 .131625 .1397 .128905 aline .089535 .128905 aline .0889 .12827 aline .0889 .020955 aline .089535 .02032 aline .131445 .02032 aline .135255 .018415 aline .13716 .01651 aline .13843 .01397 aline .13843 .005715 aline .13716 .003175 aline .135255 .00127 aline .131445 -.000635 aline .02286 -.000635 aline .01905 .00127 aline .017145 .003175 aline .015875 .005715 aline .015875 .01397 aline .017145 .01651 aline .01905 .018415 aline .02286 .02032 aline .06477 .02032 aline .065405 .020955 aline .065405 .12827 aline .06477 .128905 aline .022225 .128905 bezier .012505 .131633 .01276 .147709 .02286 .14986 aline .06477 .14986 bezier .663215E-01 .165956 .621801E-01 .186215 .076835 .19812 bezier .896053E-01 .21255 .110298 .216642 .128905 .215265 closepath ! end of curve fill dfont endchar dfont char="g" !-------------- Beginning of new char. dfont wid=.524996 hei=.430555 dep=.222223 italic=0 set path ! start of curve newpath ! start of curve amove .159385 .15367 bezier .174143 .153594 .187114 .133616 .173355 .12319 bezier .165369 .118121 .153415 .122434 .151938 .132195 aline .150813 .132477 aline .149225 .13208 aline .145415 .13208 aline .14478 .131445 aline .141605 .13081 aline .13589 .128905 aline .13462 .12827 aline .132715 .127635 aline .130175 .126365 bezier .155026 .942993E-01 .129308 .420185E-01 .0889 .04064 bezier .762089E-01 .378033E-01 .613744E-01 .428532E-01 .0508 .04826 bezier .435873E-01 .368036E-01 .530051E-01 .185861E-01 .06731 .02032 aline .108585 .02032 bezier .134202 .196676E-01 .168163 .91972E-02 .173355 -.020955 bezier .179879 -.493624E-01 .152375 -.703367E-01 .127635 -.076835 bezier .909505E-01 -.859719E-01 .451936E-01 -.832173E-01 .018415 -.052705 bezier .133045E-02 -.306624E-01 .148409E-01 .152307E-02 .366713E-01 .142875E-01 bezier .259071E-01 .285422E-01 .026531 .477536E-01 .353483E-01 .062865 bezier .011813 .092768 .293756E-01 .141497 .066675 .14986 bezier .832214E-01 .154262 .101278 .151354 .115888 .141764 bezier .125433 .148 .136812 .152547 .147955 .15367 closepath ! end of curve ! start of curve amove .07747 .13081 bezier .463285E-01 .127032 .379531E-01 .817524E-01 .064135 .06604 bezier .084376 .509357E-01 .113935 .680171E-01 .116205 .09144 bezier .118976 .112663 .100047 .133943 .078105 .131445 closepath ! end of curve ! start of curve amove .05969 0 bezier .389622E-01 -.394363E-03 .193166E-01 -.298806E-01 .038735 -.045085 bezier .704115E-01 -.666388E-01 .114373 -.666388E-01 .14605 -.045085 bezier .162966 -.326172E-01 .150545 -.694651E-02 .13208 -.00381 aline .12446 -.001905 aline .123825 -.00127 aline .12065 -.00127 aline .120015 -.000635 aline .11557 -.000635 aline .114935 0 aline .107315 0 aline .10668 .000635 aline .060325 .000635 aline .05969 0 closepath ! end of curve fill dfont endchar dfont char="h" !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .051435 .21336 aline .052705 .212725 aline .053975 .21209 aline .05461 .211455 aline .05588 .21082 aline .056515 .20955 aline .05715 .208915 aline .05842 .206375 aline .05842 .133985 bezier .078845 .152295 .118093 .161481 .1397 .137795 aline .140335 .136525 aline .141605 .135255 aline .14224 .133985 aline .142875 .13335 aline .14605 .127 aline .147955 .121285 aline .149225 .114935 aline .149225 .11049 aline .14986 .109855 aline .14986 .020955 aline .150495 .02032 aline .17272 .02032 bezier .182244 .175997E-01 .182244 .208533E-02 .17272 -.000635 aline .106045 -.000635 aline .102235 .00127 aline .10033 .003175 aline .09906 .005715 aline .09906 .01397 aline .10033 .01651 aline .102235 .018415 aline .106045 .02032 aline .12573 .02032 aline .126365 .020955 aline .126365 .10795 bezier .125558 .117712 .119867 .130621 .10795 .130175 bezier .844502E-01 .134692 .606784E-01 .113438 .05842 .09017 aline .05842 .020955 aline .059055 .02032 aline .08128 .02032 bezier .908041E-01 .175997E-01 .908041E-01 .208533E-02 .08128 -.000635 aline .012065 -.000635 bezier .254092E-02 .208533E-02 .254092E-02 .175997E-01 .012065 .02032 aline .03429 .02032 aline .034925 .020955 aline .034925 .19177 aline .03429 .192405 aline .012065 .192405 bezier .254092E-02 .195125 .254092E-02 .21064 .012065 .21336 closepath ! end of curve fill dfont endchar dfont char="i" !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .094615 .213995 bezier .110816 .21146 .113724 .187031 .098425 .180975 bezier .835595E-01 .173654 .672849E-01 .192813 .076835 .206375 aline .081915 .211455 aline .084455 .212725 aline .08636 .21336 aline .088265 .213995 closepath ! end of curve ! start of curve amove .1016 .14986 aline .10287 .149225 aline .10414 .14859 aline .104775 .147955 aline .106045 .14732 aline .10668 .14605 aline .107315 .145415 aline .108585 .142875 aline .108585 .020955 aline .10922 .02032 aline .1524 .02032 bezier .162534 .181709E-01 .162534 .151407E-02 .1524 -.000635 aline .03556 -.000635 bezier .254261E-01 .151407E-02 .254261E-01 .181709E-01 .03556 .02032 aline .084455 .02032 aline .08509 .020955 aline .08509 .12827 aline .084455 .128905 aline .0381 .128905 bezier .285295E-01 .131508 .285295E-01 .147257 .0381 .14986 closepath ! end of curve fill dfont endchar dfont char="j" !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=.222223 italic=0 set path ! start of curve newpath ! start of curve amove .114935 .213995 bezier .131136 .21146 .134044 .187031 .118745 .180975 bezier .10388 .173654 .876049E-01 .192813 .097155 .206375 aline .102235 .211455 aline .104775 .212725 aline .10668 .21336 aline .108585 .213995 closepath ! end of curve ! start of curve amove .12192 .14986 aline .12319 .149225 aline .12446 .14859 aline .125095 .147955 aline .126365 .14732 aline .127 .14605 aline .127635 .145415 aline .128905 .142875 aline .128905 -.02413 bezier .126545 -.515824E-01 .104356 -.07794 .0762 -.080645 bezier .569533E-01 -.799211E-01 .335113E-01 -.839554E-01 .02032 -.066675 bezier .112413E-01 -.549411E-01 .211029E-01 -.341785E-01 .03683 -.03937 aline .038735 -.040005 aline .041275 -.041275 aline .045085 -.045085 aline .04699 -.048895 aline .047625 -.051435 aline .047625 -.05715 aline .04699 -.057785 bezier .645338E-01 -.619843E-01 .886465E-01 -.618066E-01 .098425 -.04318 aline .100965 -.0381 aline .1016 -.036195 aline .102235 -.034925 aline .10287 -.032385 aline .103505 -.03048 aline .10414 -.027305 aline .104775 -.02667 aline .104775 -.02286 aline .10541 -.022225 aline .10541 .12827 aline .104775 .128905 aline .052705 .128905 bezier .431809E-01 .131625 .431809E-01 .14714 .052705 .14986 closepath ! end of curve fill dfont endchar dfont char="k" !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .051435 .21336 aline .052705 .212725 aline .053975 .21209 aline .05461 .211455 aline .05588 .21082 aline .056515 .20955 aline .05715 .208915 aline .05842 .206375 aline .05842 .0762 bezier .770195E-01 .913546E-01 .963218E-01 .111019 .114935 .12827 aline .1143 .128905 aline .095885 .128905 bezier .862296E-01 .13133 .862296E-01 .147435 .095885 .14986 aline .163195 .14986 bezier .173329 .147711 .173329 .131054 .163195 .128905 aline .144145 .128905 aline .1397 .12446 aline .13843 .123825 aline .12954 .114935 aline .12827 .1143 aline .120015 .106045 aline .118745 .10541 aline .109855 .09652 aline .108585 .095885 aline .100965 .088265 bezier .118385 .656621E-01 .135969 .431782E-01 .153035 .02032 aline .170815 .02032 bezier .180949 .181709E-01 .180949 .151407E-02 .170815 -.000635 aline .116205 -.000635 bezier .106105 .148909E-02 .106105 .181959E-01 .116205 .02032 aline .127635 .02032 bezier .116237 .386836E-01 .100328 .05711 .866775E-01 .747712E-01 aline .085725 .074295 aline .080645 .069215 aline .079375 .06858 aline .070485 .05969 aline .069215 .059055 aline .06096 .0508 aline .05969 .050165 aline .05842 .048895 aline .05842 .020955 aline .059055 .02032 aline .08255 .02032 bezier .09265 .181959E-01 .09265 .148909E-02 .08255 -.000635 aline .01524 -.000635 bezier .513996E-02 .148909E-02 .513996E-02 .181959E-01 .01524 .02032 aline .038735 .02032 aline .03937 .020955 aline .03937 .19177 aline .038735 .192405 aline .01524 .192405 bezier .513996E-02 .194529 .513996E-02 .211236 .01524 .21336 aline .051435 .21336 closepath ! end of curve fill dfont endchar dfont char="l" !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .097155 .21336 aline .098425 .212725 aline .099695 .21209 aline .10033 .211455 aline .1016 .21082 aline .102235 .20955 aline .10287 .208915 aline .10414 .206375 aline .10414 .020955 aline .104775 .02032 aline .156845 .02032 bezier .166369 .175997E-01 .166369 .208533E-02 .156845 -.000635 aline .02794 -.000635 bezier .184159E-01 .208533E-02 .184159E-01 .175997E-01 .02794 .02032 aline .08001 .02032 aline .080645 .020955 aline .080645 .19177 aline .08001 .192405 aline .02794 .192405 bezier .184159E-01 .195125 .184159E-01 .21064 .02794 .21336 closepath ! end of curve fill dfont endchar dfont char="m" !-------------- Beginning of new char. dfont wid=.524996 hei=.430555 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .073025 .151765 aline .0762 .15113 aline .078105 .150495 aline .084455 .14732 aline .085725 .14605 aline .086995 .145415 aline .09017 .14224 aline .090805 .14097 aline .092075 .1397 aline .09525 .13335 bezier .10747 .152124 .139318 .160378 .15367 .1397 aline .15748 .13208 aline .15875 .12827 aline .159385 .12573 aline .160655 .11938 aline .160655 .1143 aline .16129 .113665 aline .16129 .020955 aline .161925 .02032 aline .17399 .02032 bezier .1837 .178785E-01 .1837 .180649E-02 .17399 -.000635 aline .13462 -.000635 bezier .124313 .145194E-02 .124313 .182331E-01 .13462 .02032 aline .141605 .02032 aline .14224 .020955 aline .14224 .11049 bezier .141728 .11893 .137332 .134256 .12573 .130175 bezier .107804 .127202 .101873 .106085 .099695 .09144 aline .099695 .020955 aline .10033 .02032 aline .112395 .02032 bezier .122105 .178785E-01 .122105 .180649E-02 .112395 -.000635 aline .073025 -.000635 bezier .627176E-01 .145194E-02 .627176E-01 .182331E-01 .073025 .02032 aline .08001 .02032 aline .080645 .020955 aline .080645 .11049 bezier .801334E-01 .11893 .757369E-01 .134256 .064135 .130175 bezier .462091E-01 .127202 .402781E-01 .106085 .0381 .09144 aline .0381 .020955 aline .038735 .02032 aline .0508 .02032 bezier .605097E-01 .178785E-01 .605097E-01 .180649E-02 .0508 -.000635 aline .00635 -.000635 bezier -.335975E-02 .180649E-02 -.335975E-02 .178785E-01 .00635 .02032 aline .018415 .02032 aline .01905 .020955 aline .01905 .12827 aline .018415 .128905 aline .00635 .128905 bezier -.335975E-02 .131346 -.335975E-02 .147419 .00635 .14986 aline .031115 .14986 aline .033655 .14859 aline .03429 .147955 aline .03556 .14732 aline .036195 .14605 aline .03683 .145415 aline .0381 .142875 aline .0381 .1397 bezier .446635E-01 .144371 .546129E-01 .151242 .064135 .151765 closepath ! end of curve fill dfont endchar dfont char="n" !-------------- Beginning of new char. dfont wid=.524996 hei=.430555 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .111125 .151765 bezier .132796 .151108 .149729 .130925 .14986 .109855 aline .14986 .020955 aline .150495 .02032 aline .17272 .02032 bezier .182244 .175997E-01 .182244 .208533E-02 .17272 -.000635 aline .106045 -.000635 aline .102235 .00127 aline .10033 .003175 aline .09906 .005715 aline .09906 .01397 aline .10033 .01651 aline .102235 .018415 aline .106045 .02032 aline .12573 .02032 aline .126365 .020955 aline .126365 .10795 bezier .125558 .117712 .119867 .130621 .10795 .130175 bezier .844502E-01 .134692 .606784E-01 .113438 .05842 .09017 aline .05842 .020955 aline .059055 .02032 aline .08128 .02032 bezier .908041E-01 .175997E-01 .908041E-01 .208533E-02 .08128 -.000635 aline .012065 -.000635 bezier .254092E-02 .208533E-02 .254092E-02 .175997E-01 .012065 .02032 aline .03429 .02032 aline .034925 .020955 aline .034925 .12827 aline .03429 .128905 aline .012065 .128905 bezier .254092E-02 .131625 .254092E-02 .14714 .012065 .14986 aline .051435 .14986 aline .053975 .14859 aline .05461 .147955 aline .05588 .14732 aline .056515 .14605 aline .05715 .145415 aline .05842 .142875 aline .05842 .133985 bezier .685674E-01 .141814 .834116E-01 .150901 .09779 .151765 aline .111125 .151765 closepath ! end of curve fill dfont endchar dfont char="o" !-------------- Beginning of new char. dfont wid=.524996 hei=.430555 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .098425 .153035 bezier .14313 .149263 .171836 .994346E-01 .16256 .05842 bezier .155795 .147057E-01 .105718 -.165308E-01 .06477 .003175 bezier .106245E-01 .268453E-01 .597072E-02 .110353 .055245 .141605 aline .05588 .14224 aline .05715 .142875 aline .057785 .14351 aline .067945 .14859 aline .075565 .15113 aline .081915 .1524 aline .085725 .1524 aline .08636 .153035 aline .098425 .153035 closepath ! end of curve ! start of curve amove .086995 .131445 bezier .504581E-01 .126688 .348237E-01 .805516E-01 .050165 .050165 bezier .590352E-01 .02378 .935112E-01 .825655E-02 .11684 .02667 bezier .151314 .522281E-01 .148051 .116657 .10414 .130175 aline .1016 .13081 aline .100965 .131445 aline .09779 .131445 aline .097155 .13208 aline .08763 .13208 aline .086995 .131445 closepath ! end of curve fill dfont endchar dfont char="p" !-------------- Beginning of new char. dfont wid=.524996 hei=.430555 dep=.222223 italic=0 set path ! start of curve newpath ! start of curve amove .109855 .151765 bezier .164651 .145486 .189129 .724049E-01 .158115 .029845 bezier .138539 -.315724E-02 .862096E-01 -.157708E-01 .059055 .01524 aline .05842 .014605 aline .05842 -.05715 aline .059055 -.057785 aline .08128 -.057785 bezier .908041E-01 -.605053E-01 .908041E-01 -.760197E-01 .08128 -.07874 aline .012065 -.07874 bezier .254092E-02 -.760197E-01 .254092E-02 -.605053E-01 .012065 -.057785 aline .03429 -.057785 aline .034925 -.05715 aline .034925 .12827 aline .03429 .128905 aline .012065 .128905 bezier .254092E-02 .131625 .254092E-02 .14714 .012065 .14986 aline .051435 .14986 aline .053975 .14859 aline .05461 .147955 aline .05588 .14732 aline .056515 .14605 aline .05715 .145415 aline .05842 .142875 aline .05842 .135255 bezier .717748E-01 .145628 .912996E-01 .154074 .109855 .151765 closepath ! end of curve ! start of curve amove .09652 .130175 bezier .786295E-01 .128923 .637501E-01 .114464 .05842 .09779 aline .05842 .05969 bezier .628177E-01 .388644E-01 .785104E-01 .156781E-01 .102235 .018415 bezier .139392 .022821 .15855 .693012E-01 .14224 .100965 bezier .13536 .11895 .115593 .133614 .09652 .130175 closepath ! end of curve fill dfont endchar dfont char="q" !-------------- Beginning of new char. dfont wid=.524996 hei=.430555 dep=.222223 italic=0 set path ! start of curve newpath ! start of curve amove .095885 .151765 bezier .110075 .150893 .124206 .141154 .133985 .13335 aline .133985 .14478 bezier .137201 .154614 .154264 .154614 .15748 .14478 aline .15748 -.05715 aline .158115 -.057785 aline .18161 -.057785 bezier .19171 -.599091E-01 .19171 -.766159E-01 .18161 -.07874 aline .109855 -.07874 bezier .099755 -.766159E-01 .099755 -.599091E-01 .109855 -.057785 aline .13335 -.057785 aline .133985 -.05715 aline .133985 .01778 bezier .123325 .873412E-02 .107783 -.166756E-02 .092075 -.00254 bezier .046418 -.773869E-02 .813491E-02 .395678E-01 .01524 .08255 bezier .172016E-01 .122699 .561341E-01 .155743 .095885 .151765 closepath ! end of curve ! start of curve amove .085725 .130175 bezier .487651E-01 .12699 .274799E-01 .820163E-01 .04318 .050165 bezier .535028E-01 .021843 .915169E-01 .76077E-02 .114935 .028575 bezier .142944 .529428E-01 .141119 .105067 .109855 .12573 aline .106045 .127635 aline .102235 .128905 aline .099695 .12954 aline .09906 .130175 aline .095885 .130175 aline .09525 .13081 aline .08636 .13081 aline .085725 .130175 closepath ! end of curve fill dfont endchar dfont char="r" !-------------- Beginning of new char. dfont wid=.524996 hei=.430555 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .145415 .151765 bezier .159965 .152058 .178006 .13774 .169545 .12192 bezier .162706 .109255 .140386 .115435 .14224 .130175 bezier .109873 .134569 .805842E-01 .103634 .078105 .07239 aline .078105 .020955 aline .07874 .02032 aline .12446 .02032 bezier .133984 .175997E-01 .133984 .208533E-02 .12446 -.000635 aline .01905 -.000635 aline .01524 .00127 aline .01397 .00254 aline .012065 .00635 aline .012065 .013335 aline .01397 .017145 aline .01524 .018415 aline .01905 .02032 aline .053975 .02032 aline .05461 .020955 aline .05461 .12827 aline .053975 .128905 aline .01905 .128905 aline .01524 .13081 aline .01397 .13208 aline .012065 .13589 aline .012065 .142875 aline .01397 .146685 aline .01524 .147955 aline .01905 .14986 aline .07112 .14986 aline .07366 .14859 aline .074295 .147955 aline .075565 .14732 aline .0762 .14605 aline .076835 .145415 aline .078105 .142875 aline .078105 .12446 bezier .085009 .128882 .923094E-01 .138142 .100965 .14224 aline .108585 .14605 aline .11049 .146685 aline .11176 .14732 aline .11557 .14859 aline .11811 .149225 aline .120015 .14986 aline .126365 .15113 aline .13081 .15113 aline .131445 .151765 aline .145415 .151765 closepath ! end of curve fill dfont endchar dfont char="s" !-------------- Beginning of new char. dfont wid=.524996 hei=.430555 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .102235 .153035 bezier .111112 .152147 .12233 .149451 .130175 .14605 bezier .132839 .155476 .147831 .155476 .150495 .14605 aline .150495 .10795 bezier .146345 .095415 .122813 .999004E-01 .127 .1143 bezier .124797 .127122 .110116 .130479 .099695 .13208 bezier .818065E-01 .131836 .596469E-01 .133322 .04826 .11684 bezier .042375 .102751 .613861E-01 .961211E-01 .07239 .09398 bezier .992239E-01 .875244E-01 .134432 .089925 .154305 .064135 bezier .16995 .042376 .155511 .010928 .131445 .003175 bezier .104442 -.564497E-02 .726932E-01 -.595071E-02 .048768 .010414 bezier .475297E-01 .809298E-03 .370655E-01 -.719559E-02 .028575 0 aline .02794 .00127 aline .027305 .001905 aline .026035 .004445 aline .026035 .051435 bezier .289655E-01 .629841E-01 .492672E-01 .616932E-01 .050165 .04953 bezier .551279E-01 .259104E-01 .814561E-01 .146448E-01 .10287 .01905 bezier .118487 .188404E-01 .141379 .268348E-01 .1397 .046355 bezier .131219 .667783E-01 .104615 .662642E-01 .08763 .070485 bezier .644085E-01 .724995E-01 .312677E-01 .796109E-01 .026035 .107315 bezier .225177E-01 .136972 .554423E-01 .153324 .080645 .1524 aline .08128 .153035 aline .102235 .153035 closepath ! end of curve fill dfont endchar dfont char="t" !-------------- Beginning of new char. dfont wid=.524996 hei=.553576 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .07112 .19304 aline .07239 .192405 aline .07366 .19177 aline .074295 .191135 aline .075565 .1905 aline .0762 .18923 aline .076835 .188595 aline .078105 .186055 aline .078105 .150495 aline .07874 .14986 aline .142875 .14986 bezier .152399 .14714 .152399 .131625 .142875 .128905 aline .07874 .128905 aline .078105 .12827 aline .078105 .0381 bezier .829034E-01 .102756E-01 .128989 .127405E-01 .133985 .03937 aline .133985 .04953 bezier .137201 .593637E-01 .154264 .593637E-01 .15748 .04953 bezier .162184 .215863E-01 .136312 -.948613E-03 .11049 -.00254 bezier .086132 -.588929E-02 .561093E-01 .802914E-02 .055245 .03556 aline .05461 .036195 aline .05461 .12827 aline .053975 .128905 aline .01651 .128905 bezier .678997E-02 .131633 .704497E-02 .147709 .017145 .14986 aline .053975 .14986 aline .05461 .150495 aline .05461 .18542 aline .055245 .187325 aline .05588 .188595 aline .059055 .19177 aline .060325 .192405 aline .06223 .19304 closepath ! end of curve fill dfont endchar dfont char="u" !-------------- Beginning of new char. dfont wid=.524996 hei=.430555 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .051435 .14986 aline .052705 .149225 aline .053975 .14859 aline .05461 .147955 aline .05588 .14732 aline .056515 .14605 aline .05715 .145415 aline .05842 .142875 aline .05842 .03429 bezier .609367E-01 .181669E-01 .808319E-01 .171993E-01 .093345 .01905 bezier .108642 .202344E-01 .12356 .313639E-01 .126365 .04699 aline .126365 .12827 aline .12573 .128905 aline .103505 .128905 bezier .939809E-01 .131625 .939809E-01 .14714 .103505 .14986 aline .142875 .14986 aline .145415 .14859 aline .14605 .147955 aline .14732 .14732 aline .147955 .14605 aline .14859 .145415 aline .14986 .142875 aline .14986 .020955 aline .150495 .02032 aline .17272 .02032 bezier .182244 .175997E-01 .182244 .208533E-02 .17272 -.000635 aline .13335 -.000635 aline .13081 .000635 aline .130175 .00127 aline .128905 .001905 aline .12827 .003175 aline .127635 .00381 aline .126365 .00635 aline .126365 .01016 bezier .117228 .45653E-02 .104005 -.19349E-02 .092075 -.00254 bezier .704172E-01 -.435366E-02 .424119E-01 .625047E-03 .036195 .0254 aline .034925 .03175 aline .034925 .12827 aline .03429 .128905 aline .012065 .128905 bezier .254092E-02 .131625 .254092E-02 .14714 .012065 .14986 closepath ! end of curve fill dfont endchar dfont char="v" !-------------- Beginning of new char. dfont wid=.524996 hei=.430555 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .070485 .14986 aline .071755 .149225 aline .074295 .147955 aline .0762 .14605 aline .07747 .14351 aline .07747 .135255 aline .0762 .132715 aline .074295 .13081 aline .070485 .128905 aline .05461 .128905 aline .541338E-01 .127953 aline .05461 .127 aline .060325 .109855 aline .06096 .108585 aline .071755 .0762 aline .07239 .07493 aline .083185 .042545 aline .08382 .041275 aline .091948 .016891 aline .923925E-01 .166687E-01 aline .092837 .016891 aline .100965 .041275 aline .1016 .042545 aline .112395 .07493 aline .11303 .0762 aline .123825 .108585 aline .12446 .109855 aline .130175 .127 aline .130651 .127953 aline .130175 .128905 aline .1143 .128905 aline .11049 .13081 aline .108585 .132715 aline .107315 .135255 aline .107315 .14351 aline .108585 .14605 aline .11049 .147955 aline .1143 .14986 aline .168275 .14986 bezier .178582 .147773 .178582 .130992 .168275 .128905 aline .151765 .128905 aline .15113 .12827 aline .142875 .103505 aline .14224 .102235 aline .131445 .06985 aline .13081 .06858 aline .120015 .036195 bezier .113135 .237204E-01 .114865 .289267E-02 .09906 -.001905 aline .085725 -.001905 bezier .699199E-01 .289267E-02 .07165 .237204E-01 .06477 .036195 aline .053975 .06858 aline .05334 .06985 aline .042545 .102235 aline .04191 .103505 aline .033655 .12827 aline .03302 .128905 aline .01651 .128905 bezier .620256E-02 .130992 .620256E-02 .147773 .01651 .14986 closepath ! end of curve fill dfont endchar dfont char="w" !-------------- Beginning of new char. dfont wid=.524996 hei=.430555 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .06858 .14986 aline .06985 .149225 aline .07239 .147955 aline .07366 .146685 aline .075565 .142875 aline .075565 .13589 aline .07366 .13208 aline .07239 .13081 aline .06858 .128905 aline .04445 .128905 bezier .476383E-01 .973228E-01 .559009E-01 .065149 .05969 .033655 aline .060325 .03302 aline .060325 .029845 aline .06096 .02921 aline .06096 .0254 aline .061595 .024765 aline .06223 .02286 bezier .674063E-01 .433349E-01 .726077E-01 .642055E-01 .08001 .08382 bezier .884308E-01 .950897E-01 .109489 .898976E-01 .109855 .07493 bezier .114844 .578061E-01 .120524 .401858E-01 .12319 .02286 bezier .129102 .579901E-01 .134933 .925855E-01 .14097 .12827 aline .140335 .128905 aline .116205 .128905 aline .112395 .13081 aline .111125 .13208 aline .10922 .13589 aline .10922 .142875 aline .111125 .146685 aline .112395 .147955 aline .116205 .14986 aline .17145 .14986 aline .17526 .147955 aline .177165 .14605 aline .178435 .14351 aline .178435 .135255 aline .177165 .132715 aline .17526 .13081 aline .17145 .128905 aline .16129 .128905 bezier .151938 .869849E-01 .147618 .441504E-01 .13716 .00254 bezier .12864 -.625229E-02 .108639 -.311908E-02 .107315 .010795 bezier .101951 .289159E-01 .960259E-01 .479766E-01 .093345 .06604 bezier .08899 .449598E-01 .842728E-01 .022489 .075565 .00254 aline .07366 .000635 bezier .644744E-01 -.404405E-02 .467689E-01 -.449092E-02 .045085 .00889 bezier .03816 .048859 .316036E-01 .890452E-01 .023495 .128905 aline .013335 .128905 aline .009525 .13081 aline .00762 .132715 aline .00635 .135255 aline .00635 .14351 aline .00762 .14605 aline .009525 .147955 aline .012065 .149225 aline .013335 .14986 closepath ! end of curve fill dfont endchar dfont char="x" !-------------- Beginning of new char. dfont wid=.524996 hei=.430555 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .07366 .14986 bezier .839674E-01 .147773 .839674E-01 .130992 .07366 .128905 aline .065405 .128905 bezier .718259E-01 .116787 .830649E-01 .105196 .09144 .093345 bezier .997735E-01 .104999 .110561 .117292 .11684 .128905 aline .10795 .128905 bezier .976426E-01 .130992 .976426E-01 .147773 .10795 .14986 aline .161925 .14986 aline .165735 .147955 aline .16764 .14605 aline .16891 .14351 aline .16891 .135255 aline .16764 .132715 aline .165735 .13081 aline .161925 .128905 aline .14097 .128905 bezier .127933 .111333 .114186 .942736E-01 .100965 .076835 bezier .11617 .058124 .130898 .390689E-01 .14605 .02032 aline .167005 .02032 aline .170815 .018415 aline .172085 .017145 aline .17399 .013335 aline .17399 .00635 aline .172085 .00254 aline .170815 .00127 aline .167005 -.000635 aline .112395 -.000635 aline .108585 .00127 aline .107315 .00254 aline .10541 .00635 aline .10541 .013335 aline .107315 .017145 aline .108585 .018415 aline .112395 .02032 aline .12192 .02032 bezier .114155 .352858E-01 .101144 .494245E-01 .09144 .064135 bezier .820242E-01 .494441E-01 .069595 .345083E-01 .061595 .02032 aline .071755 .02032 bezier .818889E-01 .181709E-01 .818889E-01 .151407E-02 .071755 -.000635 aline .01778 -.000635 bezier .752278E-02 .143465E-02 .752278E-02 .182503E-01 .01778 .02032 aline .0381 .02032 bezier .528528E-01 .391195E-01 .675746E-01 .579414E-01 .817562E-01 .771525E-01 bezier .681236E-01 .944558E-01 .542926E-01 .111616 .04064 .128905 aline .019685 .128905 aline .015875 .13081 aline .01397 .132715 aline .0127 .135255 aline .0127 .14351 aline .01397 .14605 aline .015875 .147955 aline .018415 .149225 aline .019685 .14986 closepath ! end of curve fill dfont endchar dfont char="y" !-------------- Beginning of new char. dfont wid=.524996 hei=.430555 dep=.222223 italic=0 set path ! start of curve newpath ! start of curve amove .07112 .14986 bezier .812539E-01 .147711 .812539E-01 .131054 .07112 .128905 aline .056515 .128905 bezier .679941E-01 .935839E-01 .847774E-01 .588797E-01 .095885 .02286 aline .09652 .024765 aline .097155 .027305 aline .09779 .02921 aline .098425 .03175 aline .10033 .037465 aline .100965 .040005 aline .123825 .108585 aline .12446 .109855 aline .130175 .127 aline .130651 .127953 aline .130175 .128905 aline .1143 .128905 bezier .1042 .131029 .1042 .147736 .1143 .14986 aline .168275 .14986 bezier .178582 .147773 .178582 .130992 .168275 .128905 aline .151765 .128905 bezier .129177 .696472E-01 .112751 .752754E-02 .08763 -.0508 bezier .770323E-01 -.721066E-01 .481823E-01 -.911494E-01 .026035 -.074295 bezier .148003E-01 -.658344E-01 .98753E-02 -.423553E-01 .02667 -.037465 bezier .359703E-01 -.353922E-01 .468187E-01 -.417513E-01 .04572 -.05207 aline .040005 -.05207 bezier .381374E-01 -.592038E-01 .464355E-01 -.616004E-01 .051435 -.05842 bezier .752141E-01 -.502144E-01 .780892E-01 -.215714E-01 .861219E-01 -.9525E-03 bezier .690592E-01 .423688E-01 .520797E-01 .859793E-01 .03429 .128905 aline .017145 .128905 bezier .701108E-02 .131054 .701108E-02 .147711 .017145 .14986 closepath ! end of curve fill dfont endchar dfont char="z" !-------------- Beginning of new char. dfont wid=.524996 hei=.430555 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .158115 .14986 aline .16002 .149225 aline .16129 .14859 aline .164465 .145415 aline .1651 .144145 aline .165735 .14224 aline .165735 .13335 bezier .140077 .104555 .109227 .797966E-01 .081915 .05207 aline .080645 .051435 aline .07112 .04191 aline .06985 .041275 aline .05969 .031115 aline .05842 .03048 aline .048895 .020955 aline .04953 .02032 aline .142875 .02032 aline .14351 .020955 aline .14351 .041275 bezier .146726 .511087E-01 .163789 .511087E-01 .167005 .041275 aline .167005 .00635 aline .165735 .00381 aline .1651 .003175 aline .164465 .001905 aline .163195 .00127 aline .16256 .000635 aline .16002 -.000635 aline .019685 -.000635 aline .01778 0 aline .01651 .000635 aline .013335 .00381 aline .0127 .00508 aline .012065 .006985 aline .012065 .015875 bezier .377229E-01 .446696E-01 .685728E-01 .694284E-01 .095885 .097155 aline .097155 .09779 aline .10668 .107315 aline .10795 .10795 aline .11811 .11811 aline .11938 .118745 aline .128905 .12827 aline .12827 .128905 aline .04191 .128905 aline .041275 .12827 aline .041275 .112395 bezier .380586E-01 .102561 .209964E-01 .102561 .01778 .112395 aline .01778 .14224 aline .018415 .144145 aline .01905 .145415 aline .022225 .14859 aline .023495 .149225 aline .0254 .14986 closepath ! end of curve fill dfont endchar dfont char="{" !-------------- Beginning of new char. dfont wid=.524996 hei=.694445 dep=.0833311 italic=0 set path ! start of curve newpath ! start of curve amove .15748 .24257 bezier .167004 .23985 .167004 .224335 .15748 .221615 bezier .139897 .221038 .120701 .222213 .10668 .20955 aline .10541 .20701 aline .104775 .205105 aline .10414 .20447 aline .10414 .133985 bezier .102713 .121956 .941879E-01 .112401 .846137E-01 .106362 bezier .941892E-01 .100324 .102713 .907686E-01 .10414 .07874 aline .10414 .008255 bezier .11073 -.72592E-02 .130785 -.670205E-02 .144145 -.00889 aline .15748 -.00889 bezier .167004 -.116103E-01 .167004 -.271247E-01 .15748 -.029845 bezier .13256 -.297118E-01 .102631 -.296328E-01 .085725 -.00762 aline .08255 -.00127 aline .081915 .000635 aline .08128 .003175 aline .080645 .00635 aline .080645 .076835 bezier .746566E-01 .934059E-01 .532257E-01 .093613 .03937 .095885 aline .027305 .095885 bezier .177809E-01 .986053E-01 .177809E-01 .11412 .027305 .11684 bezier .449402E-01 .117254 .643388E-01 .117008 .078105 .130175 aline .079375 .132715 aline .08001 .135255 aline .080645 .13589 aline .080645 .206375 bezier .846957E-01 .234439 .117675 .241378 .140335 .24257 closepath ! end of curve fill dfont endchar dfont char="|" !-------------- Beginning of new char. dfont wid=.524996 hei=.694445 dep=.0833311 italic=0 set path ! start of curve newpath ! start of curve amove .09525 .24257 aline .097155 .241935 aline .099695 .240665 aline .10287 .23749 aline .10414 .23495 aline .104775 .233045 aline .104775 -.02032 bezier .102579 -.328877E-01 .828405E-01 -.328877E-01 .080645 -.02032 aline .080645 .233045 aline .08128 .23495 aline .08255 .23749 aline .085725 .240665 aline .088265 .241935 aline .09017 .24257 closepath ! end of curve fill dfont endchar dfont char="}" !-------------- Beginning of new char. dfont wid=.524996 hei=.694445 dep=.0833311 italic=0 set path ! start of curve newpath ! start of curve amove .04445 .24257 bezier .671105E-01 .241378 .100089 .234439 .10414 .206375 aline .10414 .13589 bezier .110128 .119319 .131559 .119112 .145415 .11684 aline .15748 .11684 bezier .167004 .11412 .167004 .986053E-01 .15748 .095885 bezier .139845 .954712E-01 .120446 .957168E-01 .10668 .08255 aline .10541 .08001 aline .104775 .07747 aline .10414 .076835 aline .10414 .00635 bezier .100089 -.217137E-01 .671104E-01 -.286527E-01 .04445 -.029845 aline .02794 -.029845 bezier .01784 -.276936E-01 .017585 -.116176E-01 .027305 -.00889 bezier .448885E-01 -.831341E-02 .640844E-01 -.948803E-02 .078105 .003175 aline .079375 .005715 aline .08001 .00762 aline .080645 .008255 aline .080645 .07874 bezier .820721E-01 .907686E-01 .905959E-01 .100324 .100171 .106362 bezier .905973E-01 .112401 .820717E-01 .121956 .080645 .133985 aline .080645 .20447 bezier .740545E-01 .219984 .539998E-01 .219427 .04064 .221615 aline .027305 .221615 bezier .017585 .224343 .01784 .240419 .02794 .24257 aline .04445 .24257 closepath ! end of curve fill dfont endchar dfont char="~" !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .08001 .21336 bezier .935214E-01 .212387 .987738E-01 .195672 .111125 .19431 bezier .123196 .19673 .13029 .207523 .140335 .21336 bezier .15182 .215989 .159347 .198242 .147955 .19304 bezier .134203 .178669 .110384 .162122 .09144 .1778 aline .081915 .187325 bezier .722379E-01 .195964 .612056E-01 .183945 .05334 .178435 aline .048895 .17399 bezier .385073E-01 .164171 .233847E-01 .183225 .03556 .191135 bezier .462853E-01 .200341 .572331E-01 .210603 .071755 .21336 closepath ! end of curve fill dfont endchar dfont char=127 !-------------- Beginning of new char. dfont wid=.524996 hei=.611112 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .05969 .213995 bezier .781392E-01 .2116 .781392E-01 .1821 .05969 .179705 bezier .417905E-01 .175758 .031286 .202757 .047625 .211455 aline .04826 .21209 aline .04953 .212725 aline .051435 .21336 aline .053975 .213995 closepath ! end of curve ! start of curve amove .13081 .213995 bezier .148334 .212078 .150412 .18481 .13335 .18034 bezier .115998 .17391 .102816 .198918 .11684 .210185 aline .11811 .21082 aline .118745 .211455 aline .122555 .21336 aline .125095 .213995 closepath ! end of curve fill dfont endchar gle-graphics-4.2.4c/src/fonts/texcmssb.gle0000664000000000000000000064534511676336540017226 0ustar rootrootdfont file_name="CMSSBX10" dfont font_name="CMSSBX10" dfont design= .35146 dfont slant= 0 dfont space= .128869 dfont stretch= .644347E-01 dfont shrink= .429564E-01 dfont x_hei= .161086 dfont quad= .386608 dfont extra_space= .429564E-01 dfont paint="FILL" !------------------ end of main parameters dfont char=0 !-------------- Beginning of new char. dfont wid=.580559 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .178659 .24114 aline .180611 .240164 aline .182564 .239188 aline .185493 .236259 aline .187445 .232354 aline .187445 .213805 aline .185493 .2099 aline .182564 .206971 aline .178659 .205018 aline .145465 .205018 aline .144489 .205994 aline .868887E-01 .205994 aline .854243E-01 .206727 aline .839598E-01 .205994 aline .839598E-01 .781022E-02 aline .820073E-01 .390511E-02 aline .790785E-01 .976277E-03 aline .751733E-01 -.976277E-03 aline .429562E-01 -.976277E-03 aline .400274E-01 0 aline .380748E-01 .976277E-03 aline .035146 .390511E-02 aline .341697E-01 .585766E-02 aline .331934E-01 .878649E-02 aline .331934E-01 .231378 aline .341697E-01 .234307 aline .035146 .236259 aline .380748E-01 .239188 aline .400274E-01 .240164 aline .429562E-01 .24114 closepath ! end of curve fill dfont endchar dfont char=1 !-------------- Beginning of new char. dfont wid=.916672 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .185493 .242117 bezier .202117 .237718 .204639 .21819 .211852 .205018 bezier .241684 .140349 .271154 .755295E-01 .300693 .010739 aline .300693 .390511E-02 aline .299717 .292883E-02 aline .298741 .976277E-03 aline .294836 -.976277E-03 aline .028312 -.976277E-03 aline .244069E-01 .976277E-03 aline .234307E-01 .292883E-02 aline .224544E-01 .390511E-02 aline .224544E-01 .010739 bezier .571125E-01 .854831E-01 .899325E-01 .161281 .12594 .235283 aline .127892 .237235 aline .129845 .238212 aline .130821 .239188 aline .134726 .24114 aline .137655 .242117 closepath ! end of curve ! start of curve amove .156204 .196232 bezier .132749 .146298 .110775 .954578E-01 .868887E-01 .045885 aline .878649E-01 .449088E-01 aline .227473 .449088E-01 aline .228205 .463732E-01 bezier .204242 .096955 .182195 .148965 .157669 .198916 aline .156985 .198575 closepath ! end of curve fill dfont endchar dfont char=2 !-------------- Beginning of new char. dfont wid=.85556 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .164991 .249927 bezier .199883 .247982 .241007 .234354 .25969 .201113 bezier .27365 .181389 .276788 .155877 .279215 .13375 aline .279215 .103485 bezier .277386 .678642E-01 .262397 .276593E-01 .229425 .878649E-02 bezier .209989 -.309171E-02 .186814 -.654389E-02 .165967 -.878649E-02 aline .135703 -.878649E-02 bezier .100826 -.677251E-02 .059678 .67489E-02 .410036E-01 .400274E-01 bezier .284013E-01 .587117E-01 .245801E-01 .825459E-01 .224544E-01 .103485 aline .224544E-01 .13375 bezier .245853E-01 .166919 .354377E-01 .206174 .654106E-01 .226496 bezier .941088E-01 .248758 .130476 .250439 .164991 .249927 closepath ! end of curve ! start of curve amove .140584 .224544 bezier .110698 .223842 .838082E-01 .20124 .771259E-01 .171825 aline .761496E-01 .16792 aline .741971E-01 .158157 aline .732208E-01 .157181 aline .732208E-01 .150347 aline .722445E-01 .14937 aline .722445E-01 .139608 aline .712682E-01 .138631 aline .712682E-01 .100557 bezier .073178 .709443E-01 .084604 .331971E-01 .117153 .224544E-01 bezier .148772 .112714E-01 .188512 .014904 .211852 .419799E-01 bezier .224225 .591072E-01 .228524 .810541E-01 .230401 .100557 aline .230401 .138631 bezier .22821 .169173 .217216 .208383 .18354 .219662 aline .180611 .220639 aline .176706 .221615 aline .173777 .222591 aline .168896 .223567 aline .16792 .224544 aline .161086 .224544 aline .160109 .22552 aline .14156 .22552 aline .140584 .224544 closepath ! end of curve ! start of curve amove .196232 .144489 aline .199161 .143513 aline .201113 .142536 aline .202089 .14156 aline .204042 .140584 aline .205018 .138631 aline .205994 .137655 aline .206971 .134726 aline .206971 .10739 aline .205994 .104462 aline .205018 .103485 aline .204042 .101533 aline .202089 .100557 aline .201113 .995803E-01 aline .199161 .098604 aline .196232 .976277E-01 aline .105438 .976277E-01 aline .102509 .098604 aline .100557 .995803E-01 aline .995803E-01 .100557 aline .976277E-01 .101533 aline .966514E-01 .103485 aline .956752E-01 .104462 aline .946989E-01 .10739 aline .946989E-01 .134726 aline .956752E-01 .137655 aline .966514E-01 .138631 aline .976277E-01 .140584 aline .995803E-01 .14156 aline .100557 .142536 aline .102509 .143513 aline .105438 .144489 closepath ! end of curve fill dfont endchar dfont char=3 !-------------- Beginning of new char. dfont wid=.672226 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .14156 .242117 bezier .158383 .237291 .156754 .216375 .163038 .203066 bezier .182392 .139558 .201917 .760996E-01 .221615 .126916E-01 aline .221615 .488139E-02 aline .220639 .292883E-02 aline .21771 0 aline .215757 -.976277E-03 aline .181588 -.976277E-03 aline .178659 0 aline .174754 .195255E-02 aline .170849 .585766E-02 bezier .150726 .641285E-01 .133491 .123733 .11813 .18354 aline .116177 .193303 aline .116177 .198184 aline .115201 .199161 bezier .101261 .134906 .802585E-01 .709677E-01 .605292E-01 .781022E-02 aline .595529E-01 .683394E-02 aline .585766E-01 .488139E-02 aline .566241E-01 .292883E-02 aline .546715E-01 .195255E-02 aline .536952E-01 .976277E-03 aline .517427E-01 0 aline .488139E-01 -.976277E-03 aline .214781E-01 -.976277E-03 aline .195255E-01 0 aline .165967E-01 .292883E-02 aline .156204E-01 .488139E-02 aline .156204E-01 .126916E-01 bezier .039644 .869602E-01 .600512E-01 .162936 .859124E-01 .236259 aline .878649E-01 .238212 aline .898175E-01 .239188 aline .907938E-01 .240164 aline .927463E-01 .24114 aline .956752E-01 .242117 closepath ! end of curve fill dfont endchar dfont char=4 !-------------- Beginning of new char. dfont wid=.733337 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .230401 .240164 aline .232354 .239188 aline .234307 .238212 aline .237235 .235283 aline .239188 .231378 aline .239188 .206971 aline .237235 .203066 aline .234307 .200137 aline .230401 .198184 aline .176706 .198184 aline .17573 .199161 aline .829836E-01 .199161 aline .820073E-01 .198184 aline .028312 .198184 aline .244069E-01 .200137 aline .214781E-01 .203066 aline .195255E-01 .206971 aline .195255E-01 .230401 aline .205018E-01 .23333 aline .214781E-01 .235283 aline .244069E-01 .238212 aline .263595E-01 .239188 aline .292883E-01 .240164 closepath ! end of curve ! start of curve amove .205994 .144489 aline .207947 .143513 aline .2099 .142536 aline .212828 .139608 aline .214781 .135703 aline .214781 .112272 aline .212828 .108367 aline .2099 .105438 aline .205994 .103485 aline .052719 .103485 aline .488139E-01 .105438 aline .045885 .108367 aline .439325E-01 .112272 aline .439325E-01 .134726 aline .449088E-01 .137655 aline .045885 .139608 aline .488139E-01 .142536 aline .507664E-01 .143513 aline .536952E-01 .144489 closepath ! end of curve ! start of curve amove .081031 .410036E-01 aline .820073E-01 .400274E-01 aline .176706 .400274E-01 aline .177682 .410036E-01 aline .232354 .410036E-01 aline .236259 .390511E-01 aline .239188 .361223E-01 aline .24114 .322171E-01 aline .24114 .781022E-02 aline .239188 .390511E-02 aline .236259 .976277E-03 aline .232354 -.976277E-03 aline .273358E-01 -.976277E-03 aline .244069E-01 0 aline .224544E-01 .976277E-03 aline .195255E-01 .390511E-02 aline .185493E-01 .585766E-02 aline .017573 .878649E-02 aline .017573 .322171E-01 aline .195255E-01 .361223E-01 aline .224544E-01 .390511E-01 aline .263595E-01 .410036E-01 aline .081031 .410036E-01 closepath ! end of curve fill dfont endchar dfont char=5 !-------------- Beginning of new char. dfont wid=.794449 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .238212 .24114 aline .240164 .240164 aline .242117 .239188 aline .245046 .236259 aline .246998 .232354 aline .246998 .781022E-02 aline .245046 .390511E-02 aline .242117 .976277E-03 aline .238212 -.976277E-03 aline .205018 -.976277E-03 aline .201113 .976277E-03 aline .198184 .390511E-02 aline .196232 .781022E-02 aline .196232 .207947 aline .195255 .208923 aline .849361E-01 .208923 aline .839598E-01 .207947 aline .839598E-01 .781022E-02 aline .820073E-01 .390511E-02 aline .790785E-01 .976277E-03 aline .751733E-01 -.976277E-03 aline .429562E-01 -.976277E-03 aline .400274E-01 0 aline .380748E-01 .976277E-03 aline .035146 .390511E-02 aline .341697E-01 .585766E-02 aline .331934E-01 .878649E-02 aline .331934E-01 .231378 aline .341697E-01 .234307 aline .035146 .236259 aline .380748E-01 .239188 aline .400274E-01 .240164 aline .429562E-01 .24114 closepath ! end of curve fill dfont endchar dfont char=6 !-------------- Beginning of new char. dfont wid=.794449 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .248951 .242117 aline .250903 .24114 aline .252856 .240164 aline .255785 .237235 aline .257737 .23333 aline .257737 .214781 aline .255785 .210876 aline .252856 .207947 aline .248951 .205994 aline .196232 .205994 aline .195255 .206971 aline .995803E-01 .206971 aline .098604 .207947 aline .978718E-01 .206483 bezier .120444 .178984 .145304 .153134 .166943 .124963 bezier .170892 .112033 .15558 .104653 .150347 .946989E-01 bezier .133457 .759449E-01 .118272 .559613E-01 .101533 .370985E-01 aline .103485 .364477E-01 aline .105438 .370985E-01 aline .197208 .370985E-01 aline .198184 .380748E-01 aline .248951 .380748E-01 aline .252856 .361223E-01 aline .255785 .331934E-01 aline .257737 .292883E-01 aline .257737 .781022E-02 aline .255785 .390511E-02 aline .252856 .976277E-03 aline .248951 -.976277E-03 aline .322171E-01 -.976277E-03 bezier .202074E-01 .115648E-02 .200335E-01 .169478E-01 .028312 .234307E-01 bezier .551833E-01 .543025E-01 .080519 .862808E-01 .10739 .117153 bezier .789409E-01 .150248 .492537E-01 .18245 .224544E-01 .216734 aline .224544E-01 .232354 aline .234307E-01 .235283 aline .244069E-01 .237235 aline .273358E-01 .240164 aline .292883E-01 .24114 aline .322171E-01 .242117 closepath ! end of curve fill dfont endchar dfont char=7 !-------------- Beginning of new char. dfont wid=.85556 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .098604 .249927 bezier .131061 .245339 .145858 .211394 .151323 .182564 bezier .156309 .211266 .170675 .245497 .203066 .249927 bezier .235222 .253152 .274189 .235252 .279215 .200137 aline .279215 .190374 aline .277263 .186469 aline .274334 .18354 aline .270429 .181588 aline .24114 .181588 aline .237235 .18354 aline .234307 .186469 aline .232354 .190374 bezier .234812 .209489 .208218 .218521 .195255 .206971 bezier .182207 .197435 .180876 .178518 .177682 .164991 aline .177682 .152299 aline .176706 .151323 aline .176706 .781022E-02 aline .174754 .390511E-02 aline .171825 .976277E-03 aline .16792 -.976277E-03 aline .135703 -.976277E-03 aline .132774 0 aline .130821 .976277E-03 aline .127892 .390511E-02 aline .126916 .585766E-02 aline .12594 .878649E-02 aline .12594 .151323 bezier .123441 .169962 .123541 .192669 .10739 .206971 bezier .940486E-01 .218111 .669641E-01 .210152 .693157E-01 .190374 aline .673631E-01 .186469 aline .644343E-01 .18354 aline .605292E-01 .181588 aline .312409E-01 .181588 aline .273358E-01 .18354 aline .244069E-01 .186469 bezier .170065E-01 .206422 .317484E-01 .227522 .478376E-01 .238212 aline .615055E-01 .245046 aline .673631E-01 .246998 aline .712682E-01 .247974 aline .761496E-01 .248951 aline .081031 .248951 aline .820073E-01 .249927 closepath ! end of curve fill dfont endchar dfont char=8 !-------------- Beginning of new char. dfont wid=.794449 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .155228 .242117 aline .157181 .24114 aline .159133 .240164 aline .162062 .237235 aline .164015 .23333 aline .164015 .205994 bezier .193181 .202682 .228904 .194056 .246022 .165967 bezier .269344 .12682 .258545 .677023E-01 .214781 .478376E-01 bezier .198723 .397257E-01 .180106 .381158E-01 .164015 .035146 aline .164015 .781022E-02 aline .162062 .390511E-02 aline .159133 .976277E-03 aline .155228 -.976277E-03 aline .124963 -.976277E-03 aline .122035 0 aline .120082 .976277E-03 aline .117153 .390511E-02 aline .116177 .585766E-02 aline .115201 .878649E-02 aline .115201 .035146 bezier .869544E-01 .388143E-01 .517816E-01 .467677E-01 .035146 .741971E-01 bezier .967332E-02 .113575 .219914E-01 .176424 .683394E-01 .194279 bezier .830661E-01 .202129 .100534 .2027 .115201 .205994 aline .115201 .232354 aline .116177 .235283 aline .117153 .237235 aline .120082 .240164 aline .122035 .24114 aline .124963 .242117 closepath ! end of curve ! start of curve amove .111296 .178659 bezier .919851E-01 .175893 .759856E-01 .160315 .741971E-01 .140584 bezier .700601E-01 .11818 .703527E-01 .896202E-01 .888412E-01 .722445E-01 bezier .964717E-01 .671008E-01 .105921 .062057 .115201 .624817E-01 aline .115201 .178659 aline .113248 .17931 aline .111296 .178659 closepath ! end of curve ! start of curve amove .164015 .178659 aline .164015 .624817E-01 bezier .184889 .620854E-01 .204262 .793195E-01 .205994 .100557 bezier .210132 .122961 .209839 .151521 .19135 .168896 aline .189398 .169872 aline .188421 .170849 aline .186469 .171825 aline .185493 .172801 aline .181588 .174754 aline .178659 .17573 aline .176706 .176706 aline .166455 .179269 aline .164015 .178659 closepath ! end of curve fill dfont endchar dfont char=9 !-------------- Beginning of new char. dfont wid=.85556 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .165967 .242117 aline .16792 .24114 aline .169872 .240164 aline .172801 .237235 aline .174754 .23333 aline .174754 .644343E-01 bezier .197199 .684225E-01 .208182 .953508E-01 .2099 .116177 aline .210876 .117153 aline .210876 .126916 aline .211852 .127892 aline .211852 .169872 bezier .213073 .187073 .217183 .211954 .238212 .215757 aline .270429 .215757 aline .274334 .213805 aline .277263 .210876 aline .279215 .206971 aline .279215 .200137 aline .277263 .196232 aline .274334 .193303 aline .270429 .19135 aline .26609 .190483 aline .264571 .187445 aline .263595 .18354 aline .262619 .178659 aline .261642 .177682 aline .261642 .16792 aline .260666 .166943 aline .260666 .129845 bezier .259036 .990665E-01 .245759 .634831E-01 .215757 .488139E-01 bezier .204074 .421589E-01 .190351 .372827E-01 .176706 .370985E-01 aline .174754 .035146 aline .174754 .781022E-02 aline .172801 .390511E-02 aline .169872 .976277E-03 aline .165967 -.976277E-03 aline .135703 -.976277E-03 aline .132774 0 aline .130821 .976277E-03 aline .127892 .390511E-02 aline .126916 .585766E-02 aline .12594 .878649E-02 aline .12594 .035146 aline .123987 .370985E-01 bezier .811217E-01 .386232E-01 .445538E-01 .753232E-01 .429562E-01 .11813 aline .419799E-01 .119106 aline .419799E-01 .127892 aline .410036E-01 .128869 aline .410036E-01 .166943 aline .400274E-01 .16792 aline .400274E-01 .177682 aline .390511E-01 .178659 aline .380748E-01 .18354 aline .370985E-01 .187445 aline .355799E-01 .190483 bezier .206968E-01 .189733 .172634E-01 .21324 .322171E-01 .215757 aline .063458 .215757 bezier .844875E-01 .211954 .885959E-01 .187073 .898175E-01 .169872 aline .898175E-01 .127892 bezier .922547E-01 .105049 .976674E-01 .731902E-01 .123987 .644343E-01 aline .124963 .063458 aline .12594 .644343E-01 aline .12594 .232354 aline .126916 .235283 aline .127892 .237235 aline .130821 .240164 aline .132774 .24114 aline .135703 .242117 closepath ! end of curve fill dfont endchar dfont char=10 !-------------- Beginning of new char. dfont wid=.794449 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .159133 .249927 bezier .191094 .247846 .230485 .236844 .246998 .205018 bezier .26735 .170012 .257552 .124973 .231378 .956752E-01 bezier .217646 .758917E-01 .199449 .590175E-01 .189642 .366104E-01 aline .190374 .035146 aline .208923 .035146 aline .2099 .361223E-01 aline .252856 .361223E-01 aline .256761 .341697E-01 aline .25969 .312409E-01 aline .261642 .273358E-01 aline .261642 .781022E-02 aline .25969 .390511E-02 aline .256761 .976277E-03 aline .252856 -.976277E-03 aline .168896 -.976277E-03 aline .165967 0 aline .164015 .976277E-03 aline .161086 .390511E-02 aline .160109 .585766E-02 bezier .156382 .303014E-01 .166645 .545025E-01 .176706 .771259E-01 aline .192327 .108367 bezier .207012 .138521 .214421 .174116 .196232 .204042 bezier .178515 .226677 .146748 .226852 .121058 .224544 bezier .102004 .220888 .817247E-01 .21014 .771259E-01 .189398 bezier .680428E-01 .16231 .757595E-01 .134049 .878649E-01 .108367 aline .103485 .771259E-01 bezier .113781 .550721E-01 .122237 .317974E-01 .121058 .781022E-02 aline .119106 .390511E-02 aline .116177 .976277E-03 aline .112272 -.976277E-03 aline .028312 -.976277E-03 aline .253832E-01 0 aline .234307E-01 .976277E-03 aline .205018E-01 .390511E-02 aline .195255E-01 .585766E-02 aline .185493E-01 .878649E-02 aline .185493E-01 .273358E-01 aline .205018E-01 .312409E-01 aline .234307E-01 .341697E-01 aline .273358E-01 .361223E-01 aline .070292 .361223E-01 aline .712682E-01 .035146 aline .898175E-01 .035146 bezier .883623E-01 .470183E-01 .776042E-01 .570668E-01 .712682E-01 .673631E-01 bezier .463721E-01 .966284E-01 .175118E-01 .130323 .224544E-01 .171825 bezier .251647E-01 .201778 .454973E-01 .229447 .741971E-01 .240164 aline .888412E-01 .245046 aline .927463E-01 .246022 aline .976277E-01 .246998 aline .102509 .246998 aline .103485 .247974 aline .109343 .247974 aline .110319 .248951 aline .120082 .248951 aline .121058 .249927 aline .159133 .249927 closepath ! end of curve fill dfont endchar dfont char=11 !-------------- Beginning of new char. dfont wid=.64167 hei=.694445 dep=0 italic=.0763903 dfont fby=33 kadd=.0763903 dfont fby=39 kadd=.0763903 dfont fby=")" kadd=.0763903 dfont fby="?" kadd=.0763903 dfont fby="]" kadd=.0763903 dfont fby="i" ligrep=14 dfont fby="l" ligrep=15 set path ! start of curve newpath ! start of curve amove .112272 .246022 aline .113248 .245046 aline .120082 .245046 aline .129845 .243093 aline .132774 .242117 aline .134726 .240164 aline .134726 .2099 aline .132774 .207947 aline .128869 .207947 bezier .117268 .222432 .918194E-01 .227695 .790785E-01 .212828 aline .781022E-01 .2099 aline .771259E-01 .205994 aline .761496E-01 .205018 aline .761496E-01 .160109 aline .771259E-01 .159133 aline .102509 .159133 aline .106414 .157181 aline .109343 .154252 aline .111296 .150347 aline .111296 .143513 aline .109343 .139608 aline .106414 .136679 aline .102509 .134726 aline .781022E-01 .134726 aline .771259E-01 .13375 aline .771259E-01 .781022E-02 aline .751733E-01 .390511E-02 aline .722445E-01 .976277E-03 aline .683394E-01 -.976277E-03 aline .410036E-01 -.976277E-03 aline .380748E-01 0 aline .361223E-01 .976277E-03 aline .331934E-01 .390511E-02 aline .322171E-01 .585766E-02 aline .312409E-01 .878649E-02 aline .312409E-01 .13375 aline .302646E-01 .134726 aline .195255E-01 .134726 aline .156204E-01 .136679 aline .126916E-01 .139608 aline .010739 .143513 aline .010739 .14937 aline .117153E-01 .152299 aline .126916E-01 .154252 aline .156204E-01 .157181 aline .017573 .158157 aline .205018E-01 .159133 aline .302646E-01 .159133 aline .312409E-01 .160109 aline .312409E-01 .197208 bezier .329518E-01 .220079 .510998E-01 .240041 .741971E-01 .244069 aline .790785E-01 .245046 aline .859124E-01 .245046 aline .868887E-01 .246022 aline .112272 .246022 closepath ! end of curve ! start of curve amove .219662 .246022 aline .220639 .245046 aline .227473 .245046 aline .237235 .243093 aline .240164 .242117 aline .242117 .240164 aline .242117 .2099 aline .240164 .207947 aline .236259 .207947 bezier .224658 .222433 .199209 .227695 .186469 .212828 aline .185493 .2099 aline .184516 .205994 aline .18354 .205018 aline .18354 .160109 aline .184516 .159133 aline .2099 .159133 aline .213805 .157181 aline .216734 .154252 aline .218686 .150347 aline .218686 .143513 aline .216734 .139608 aline .213805 .136679 aline .2099 .134726 aline .185493 .134726 aline .184516 .13375 aline .184516 .781022E-02 aline .182564 .390511E-02 aline .179635 .976277E-03 aline .17573 -.976277E-03 aline .147418 -.976277E-03 aline .143513 .976277E-03 aline .140584 .390511E-02 aline .138631 .781022E-02 aline .138631 .197208 bezier .140342 .220078 .15849 .240042 .181588 .244069 aline .186469 .245046 aline .193303 .245046 aline .194279 .246022 aline .219662 .246022 closepath ! end of curve fill dfont endchar dfont char=12 !-------------- Beginning of new char. dfont wid=.586115 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .966514E-01 .246022 aline .976277E-01 .245046 aline .102509 .245046 aline .106414 .244069 aline .112272 .242117 aline .114224 .240164 aline .114224 .207947 aline .112272 .205994 aline .108367 .205994 bezier .104416 .21197 .101347 .220082 .927463E-01 .220639 aline .917701E-01 .221615 aline .849361E-01 .221615 aline .839598E-01 .220639 aline .820073E-01 .219662 aline .800547E-01 .21771 aline .781022E-01 .213805 aline .771259E-01 .208923 aline .761496E-01 .207947 aline .761496E-01 .160109 aline .771259E-01 .159133 aline .105438 .159133 aline .109343 .157181 aline .112272 .154252 aline .114224 .150347 aline .114224 .143513 aline .112272 .139608 aline .109343 .136679 aline .105438 .134726 aline .781022E-01 .134726 aline .771259E-01 .13375 aline .771259E-01 .781022E-02 aline .751733E-01 .390511E-02 aline .722445E-01 .976277E-03 aline .683394E-01 -.976277E-03 aline .410036E-01 -.976277E-03 aline .380748E-01 0 aline .361223E-01 .976277E-03 aline .331934E-01 .390511E-02 aline .322171E-01 .585766E-02 aline .312409E-01 .878649E-02 aline .312409E-01 .13375 aline .302646E-01 .134726 aline .195255E-01 .134726 aline .156204E-01 .136679 aline .126916E-01 .139608 aline .010739 .143513 aline .010739 .14937 aline .117153E-01 .152299 aline .126916E-01 .154252 aline .156204E-01 .157181 aline .017573 .158157 aline .205018E-01 .159133 aline .302646E-01 .159133 aline .312409E-01 .160109 aline .312409E-01 .199161 bezier .326824E-01 .219348 .463254E-01 .239522 .673631E-01 .244069 aline .712682E-01 .245046 aline .771259E-01 .245046 aline .781022E-01 .246022 aline .966514E-01 .246022 closepath ! end of curve ! start of curve amove .17573 .243093 aline .177682 .242117 aline .179635 .24114 aline .182564 .238212 aline .184516 .234307 aline .184516 .205018 aline .182564 .201113 aline .179635 .198184 aline .17573 .196232 aline .146442 .196232 aline .142536 .198184 aline .139608 .201113 aline .137655 .205018 aline .137655 .234307 aline .139608 .238212 aline .142536 .24114 aline .144489 .242117 aline .146442 .243093 closepath ! end of curve ! start of curve amove .17573 .159133 aline .177682 .158157 aline .179635 .157181 aline .182564 .154252 aline .184516 .150347 aline .184516 .781022E-02 aline .182564 .390511E-02 aline .179635 .976277E-03 aline .17573 -.976277E-03 aline .147418 -.976277E-03 aline .143513 .976277E-03 aline .140584 .390511E-02 aline .138631 .781022E-02 aline .138631 .150347 aline .140584 .154252 aline .143513 .157181 aline .145465 .158157 aline .147418 .159133 closepath ! end of curve fill dfont endchar dfont char=13 !-------------- Beginning of new char. dfont wid=.586115 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .966514E-01 .246022 aline .976277E-01 .245046 aline .102509 .245046 aline .106414 .244069 aline .112272 .242117 aline .114224 .240164 aline .114224 .2099 aline .112272 .207947 aline .108367 .207947 bezier .103604 .217648 .089076 .227305 .800547E-01 .21771 aline .781022E-01 .213805 aline .771259E-01 .208923 aline .761496E-01 .207947 aline .761496E-01 .160109 aline .771259E-01 .159133 aline .105438 .159133 aline .109343 .157181 aline .112272 .154252 aline .114224 .150347 aline .114224 .143513 aline .112272 .139608 aline .109343 .136679 aline .105438 .134726 aline .781022E-01 .134726 aline .771259E-01 .13375 aline .771259E-01 .781022E-02 aline .751733E-01 .390511E-02 aline .722445E-01 .976277E-03 aline .683394E-01 -.976277E-03 aline .410036E-01 -.976277E-03 aline .380748E-01 0 aline .361223E-01 .976277E-03 aline .331934E-01 .390511E-02 aline .322171E-01 .585766E-02 aline .312409E-01 .878649E-02 aline .312409E-01 .13375 aline .302646E-01 .134726 aline .195255E-01 .134726 aline .156204E-01 .136679 aline .126916E-01 .139608 aline .010739 .143513 aline .010739 .14937 aline .117153E-01 .152299 aline .126916E-01 .154252 aline .156204E-01 .157181 aline .017573 .158157 aline .205018E-01 .159133 aline .302646E-01 .159133 aline .312409E-01 .160109 aline .312409E-01 .199161 bezier .326824E-01 .219348 .463254E-01 .239522 .673631E-01 .244069 aline .712682E-01 .245046 aline .771259E-01 .245046 aline .781022E-01 .246022 aline .966514E-01 .246022 closepath ! end of curve ! start of curve amove .17573 .242117 aline .177682 .24114 aline .179635 .240164 aline .182564 .237235 aline .184516 .23333 aline .184516 .781022E-02 aline .182564 .390511E-02 aline .179635 .976277E-03 aline .17573 -.976277E-03 aline .147418 -.976277E-03 aline .143513 .976277E-03 aline .140584 .390511E-02 aline .138631 .781022E-02 aline .138631 .23333 aline .140584 .237235 aline .143513 .240164 aline .145465 .24114 aline .147418 .242117 closepath ! end of curve fill dfont endchar dfont char=14 !-------------- Beginning of new char. dfont wid=.891672 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .104462 .246022 aline .105438 .245046 aline .111296 .245046 aline .119106 .243093 aline .122035 .242117 aline .123987 .240164 aline .123987 .2099 aline .122035 .207947 aline .11813 .207947 bezier .110353 .221432 .085964 .228663 .781022E-01 .211852 aline .771259E-01 .206971 aline .761496E-01 .205994 aline .761496E-01 .160109 aline .771259E-01 .159133 aline .105438 .159133 aline .109343 .157181 aline .112272 .154252 aline .114224 .150347 aline .114224 .143513 aline .112272 .139608 aline .109343 .136679 aline .105438 .134726 aline .781022E-01 .134726 aline .771259E-01 .13375 aline .771259E-01 .781022E-02 aline .751733E-01 .390511E-02 aline .722445E-01 .976277E-03 aline .683394E-01 -.976277E-03 aline .410036E-01 -.976277E-03 aline .380748E-01 0 aline .361223E-01 .976277E-03 aline .331934E-01 .390511E-02 aline .322171E-01 .585766E-02 aline .312409E-01 .878649E-02 aline .312409E-01 .13375 aline .302646E-01 .134726 aline .195255E-01 .134726 aline .156204E-01 .136679 aline .126916E-01 .139608 aline .010739 .143513 aline .010739 .14937 aline .117153E-01 .152299 aline .126916E-01 .154252 aline .156204E-01 .157181 aline .017573 .158157 aline .205018E-01 .159133 aline .302646E-01 .159133 aline .312409E-01 .160109 aline .312409E-01 .198184 bezier .032571 .223118 .054968 .246056 .081031 .245046 aline .820073E-01 .246022 aline .104462 .246022 closepath ! end of curve ! start of curve amove .205994 .246022 aline .206971 .245046 aline .211852 .245046 aline .216734 .244069 aline .219662 .243093 aline .221615 .24114 aline .221615 .208923 aline .219662 .206971 aline .215757 .206971 aline .213805 .208923 bezier .210792 .220849 .190219 .227876 .185493 .213805 aline .184516 .208923 aline .18354 .207947 aline .18354 .160109 aline .184516 .159133 aline .212828 .159133 aline .216734 .157181 aline .219662 .154252 aline .221615 .150347 aline .221615 .143513 aline .219662 .139608 aline .216734 .136679 aline .212828 .134726 aline .185493 .134726 aline .184516 .13375 aline .184516 .781022E-02 aline .182564 .390511E-02 aline .179635 .976277E-03 aline .17573 -.976277E-03 aline .148394 -.976277E-03 aline .145465 0 aline .143513 .976277E-03 aline .140584 .390511E-02 aline .139608 .585766E-02 aline .138631 .878649E-02 aline .138631 .199161 bezier .140073 .219347 .153716 .239523 .174754 .244069 aline .178659 .245046 aline .184516 .245046 aline .185493 .246022 aline .205994 .246022 closepath ! end of curve ! start of curve amove .28312 .243093 aline .285073 .242117 aline .287025 .24114 aline .289954 .238212 aline .291907 .234307 aline .291907 .205018 aline .289954 .201113 aline .287025 .198184 aline .28312 .196232 aline .253832 .196232 aline .249927 .198184 aline .246998 .201113 aline .245046 .205018 aline .245046 .234307 aline .246998 .238212 aline .249927 .24114 aline .25188 .242117 aline .253832 .243093 closepath ! end of curve ! start of curve amove .28312 .159133 aline .285073 .158157 aline .287025 .157181 aline .289954 .154252 aline .291907 .150347 aline .291907 .781022E-02 aline .289954 .390511E-02 aline .287025 .976277E-03 aline .28312 -.976277E-03 aline .254808 -.976277E-03 aline .250903 .976277E-03 aline .247974 .390511E-02 aline .246022 .781022E-02 aline .246022 .150347 aline .247974 .154252 aline .250903 .157181 aline .252856 .158157 aline .254808 .159133 closepath ! end of curve fill dfont endchar dfont char=15 !-------------- Beginning of new char. dfont wid=.891672 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .104462 .246022 aline .105438 .245046 aline .111296 .245046 aline .119106 .243093 aline .122035 .242117 aline .123987 .240164 aline .123987 .2099 aline .122035 .207947 aline .11813 .207947 bezier .110353 .221432 .085964 .228663 .781022E-01 .211852 aline .771259E-01 .206971 aline .761496E-01 .205994 aline .761496E-01 .160109 aline .771259E-01 .159133 aline .105438 .159133 aline .109343 .157181 aline .112272 .154252 aline .114224 .150347 aline .114224 .143513 aline .112272 .139608 aline .109343 .136679 aline .105438 .134726 aline .781022E-01 .134726 aline .771259E-01 .13375 aline .771259E-01 .781022E-02 aline .751733E-01 .390511E-02 aline .722445E-01 .976277E-03 aline .683394E-01 -.976277E-03 aline .410036E-01 -.976277E-03 aline .380748E-01 0 aline .361223E-01 .976277E-03 aline .331934E-01 .390511E-02 aline .322171E-01 .585766E-02 aline .312409E-01 .878649E-02 aline .312409E-01 .13375 aline .302646E-01 .134726 aline .195255E-01 .134726 aline .156204E-01 .136679 aline .126916E-01 .139608 aline .010739 .143513 aline .010739 .14937 aline .117153E-01 .152299 aline .126916E-01 .154252 aline .156204E-01 .157181 aline .017573 .158157 aline .205018E-01 .159133 aline .302646E-01 .159133 aline .312409E-01 .160109 aline .312409E-01 .198184 bezier .032571 .223118 .054968 .246056 .081031 .245046 aline .820073E-01 .246022 aline .104462 .246022 closepath ! end of curve ! start of curve amove .204042 .246022 aline .205018 .245046 aline .2099 .245046 aline .213805 .244069 aline .219662 .242117 aline .221615 .240164 aline .221615 .2099 aline .219662 .207947 aline .215757 .207947 bezier .210994 .217649 .196467 .227305 .187445 .21771 aline .185493 .213805 aline .184516 .208923 aline .18354 .207947 aline .18354 .160109 aline .184516 .159133 aline .212828 .159133 aline .216734 .157181 aline .219662 .154252 aline .221615 .150347 aline .221615 .143513 aline .219662 .139608 aline .216734 .136679 aline .212828 .134726 aline .185493 .134726 aline .184516 .13375 aline .184516 .781022E-02 aline .182564 .390511E-02 aline .179635 .976277E-03 aline .17573 -.976277E-03 aline .148394 -.976277E-03 aline .145465 0 aline .143513 .976277E-03 aline .140584 .390511E-02 aline .139608 .585766E-02 aline .138631 .878649E-02 aline .138631 .199161 bezier .140073 .219347 .153716 .239523 .174754 .244069 aline .178659 .245046 aline .184516 .245046 aline .185493 .246022 aline .204042 .246022 closepath ! end of curve ! start of curve amove .28312 .242117 aline .285073 .24114 aline .287025 .240164 aline .289954 .237235 aline .291907 .23333 aline .291907 .781022E-02 aline .289954 .390511E-02 aline .287025 .976277E-03 aline .28312 -.976277E-03 aline .254808 -.976277E-03 aline .250903 .976277E-03 aline .247974 .390511E-02 aline .246022 .781022E-02 aline .246022 .23333 aline .247974 .237235 aline .250903 .240164 aline .252856 .24114 aline .254808 .242117 closepath ! end of curve fill dfont endchar dfont char=16 !-------------- Beginning of new char. dfont wid=.255557 hei=.458333 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .595529E-01 .159133 aline .615055E-01 .158157 aline .063458 .157181 aline .663868E-01 .154252 aline .683394E-01 .150347 aline .683394E-01 .781022E-02 aline .663868E-01 .390511E-02 aline .063458 .976277E-03 aline .595529E-01 -.976277E-03 aline .322171E-01 -.976277E-03 aline .292883E-01 0 aline .273358E-01 .976277E-03 aline .244069E-01 .390511E-02 aline .234307E-01 .585766E-02 aline .224544E-01 .878649E-02 aline .224544E-01 .14937 aline .234307E-01 .152299 aline .244069E-01 .154252 aline .273358E-01 .157181 aline .292883E-01 .158157 aline .322171E-01 .159133 closepath ! end of curve fill dfont endchar dfont char=17 !-------------- Beginning of new char. dfont wid=.286113 hei=.458333 dep=.194445 italic=0 set path ! start of curve newpath ! start of curve amove .070292 .159133 aline .722445E-01 .158157 aline .741971E-01 .157181 aline .771259E-01 .154252 aline .790785E-01 .150347 aline .790785E-01 -.234307E-01 bezier .782746E-01 -.450623E-01 .642313E-01 -.685073E-01 .410036E-01 -.722445E-01 bezier .190062E-01 -.752822E-01 -.401723E-02 -.718935E-01 -.234307E-01 -.605292E-01 aline -.244069E-01 -.585766E-01 aline -.244069E-01 -.556478E-01 aline -.224544E-01 -.497901E-01 aline -.214781E-01 -.478376E-01 aline -.185493E-01 -.390511E-01 aline -.165967E-01 -.370985E-01 bezier -.227397E-02 -.415204E-01 .146447E-01 -.497536E-01 .028312 -.390511E-01 aline .292883E-01 -.370985E-01 aline .302646E-01 -.361223E-01 aline .312409E-01 -.341697E-01 aline .322171E-01 -.292883E-01 aline .331934E-01 -.028312 aline .331934E-01 .150347 aline .035146 .154252 aline .380748E-01 .157181 aline .400274E-01 .158157 aline .419799E-01 .159133 closepath ! end of curve fill dfont endchar dfont char=18 !-------------- Beginning of new char. dfont wid=.550003 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .781022E-01 .242117 bezier .910974E-01 .2263 .102731 .209499 .115201 .193303 aline .115201 .189398 aline .113248 .187445 aline .927463E-01 .187445 bezier .732593E-01 .204422 .515176E-01 .219274 .331934E-01 .237235 aline .331934E-01 .239188 aline .341697E-01 .24114 aline .361223E-01 .242117 aline .781022E-01 .242117 closepath ! end of curve fill dfont endchar dfont char=19 !-------------- Beginning of new char. dfont wid=.550003 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .159133 .242117 aline .161086 .240164 aline .161086 .236259 bezier .141533 .219574 .121223 .203938 .101533 .187445 aline .820073E-01 .187445 aline .800547E-01 .188421 aline .790785E-01 .190374 bezier .833613E-01 .202907 .948295E-01 .212074 .101533 .223567 aline .103485 .22552 aline .104462 .227473 aline .106414 .229425 aline .10739 .231378 aline .109343 .23333 aline .110319 .235283 aline .112272 .237235 aline .113248 .239188 aline .116177 .242117 aline .159133 .242117 closepath ! end of curve fill dfont endchar dfont char=20 !-------------- Beginning of new char. dfont wid=.550003 hei=.635417 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .615055E-01 .229425 bezier .733859E-01 .219747 .849889E-01 .209684 .971396E-01 .200381 bezier .10929 .209684 .120893 .219747 .132774 .229425 aline .153276 .229425 aline .155228 .227473 bezier .154124 .217894 .143908 .212353 .139608 .204042 bezier .13093 .19467 .123741 .184225 .115201 .174754 aline .800547E-01 .174754 bezier .652715E-01 .190003 .520829E-01 .207579 .390511E-01 .224544 aline .390511E-01 .227473 aline .410036E-01 .229425 aline .615055E-01 .229425 aline .063458 .227473 closepath ! end of curve fill dfont endchar dfont char=21 !-------------- Beginning of new char. dfont wid=.550003 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .468613E-01 .242117 aline .488139E-01 .24114 aline .507664E-01 .240164 aline .536952E-01 .237235 aline .556478E-01 .23333 aline .564846E-01 .229983 aline .576004E-01 .229425 aline .605292E-01 .228449 aline .654106E-01 .227473 aline .663868E-01 .226496 aline .751733E-01 .226496 aline .761496E-01 .22552 aline .11813 .22552 aline .119106 .226496 aline .127892 .226496 aline .128869 .227473 aline .13375 .228449 aline .136679 .229425 aline .137795 .229983 aline .138631 .23333 aline .140584 .237235 aline .143513 .240164 aline .147418 .242117 aline .154252 .242117 aline .158157 .240164 bezier .17123 .226433 .156784 .204446 .14156 .199161 aline .132774 .196232 aline .128869 .195255 aline .123987 .195255 aline .123011 .194279 aline .115201 .194279 aline .114224 .193303 aline .800547E-01 .193303 bezier .624942E-01 .194929 .381423E-01 .199977 .322171E-01 .220639 aline .312409E-01 .224544 aline .312409E-01 .232354 aline .322171E-01 .235283 aline .331934E-01 .237235 aline .361223E-01 .240164 aline .380748E-01 .24114 aline .410036E-01 .242117 closepath ! end of curve fill dfont endchar dfont char=22 !-------------- Beginning of new char. dfont wid=.550003 hei=.637776 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .164015 .230401 aline .165967 .228449 aline .165967 .203066 aline .164015 .201113 aline .312409E-01 .201113 aline .292883E-01 .202089 aline .028312 .204042 aline .028312 .228449 aline .302646E-01 .230401 aline .164015 .230401 closepath ! end of curve fill dfont endchar dfont char=23 !-------------- Beginning of new char. dfont wid=.733337 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .140584 .242117 bezier .153657 .241004 .170258 .234975 .172801 .219662 bezier .176453 .201453 .158812 .186851 .14156 .188421 bezier .124846 .186517 .103732 .185508 .907938E-01 .199161 bezier .790849E-01 .213909 .887124E-01 .237504 .10739 .240164 aline .111296 .24114 aline .117153 .24114 aline .11813 .242117 aline .140584 .242117 closepath ! end of curve ! start of curve amove .11813 .227473 bezier .103783 .226594 .103783 .202968 .11813 .202089 aline .119106 .201113 aline .139608 .201113 bezier .151901 .202589 .156311 .220949 .144489 .226496 aline .140584 .227473 aline .139608 .228449 aline .119106 .228449 closepath ! end of curve fill dfont endchar dfont char=24 !-------------- Beginning of new char. dfont wid=.488892 hei=0 dep=.170138 italic=0 set path ! start of curve newpath ! start of curve amove .106414 -.117153E-01 aline .108367 -.126916E-01 aline .109343 -.136679E-01 bezier .104958 -.317853E-01 .947606E-01 -.487956E-01 .878649E-01 -.663868E-01 aline .859124E-01 -.683394E-01 aline .546715E-01 -.683394E-01 bezier .485716E-01 -.617342E-01 .592887E-01 -.550891E-01 .615055E-01 -.488139E-01 bezier .707881E-01 -.368931E-01 .773278E-01 -.222787E-01 .878649E-01 -.117153E-01 closepath ! end of curve fill dfont endchar dfont char=25 !-------------- Beginning of new char. dfont wid=.56528 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .117153 .246022 bezier .138483 .24423 .166036 .237113 .174754 .213805 bezier .183224 .189689 .174142 .159156 .151323 .146442 bezier .173986 .131838 .187602 .104555 .187445 .781022E-01 bezier .192706 .049289 .183329 .012006 .152299 .976277E-03 bezier .129637 -.657081E-02 .104056 -.831403E-02 .820073E-01 .195255E-02 aline .081031 .390511E-02 aline .081031 .683394E-02 aline .820073E-01 .976277E-02 aline .829836E-01 .117153E-01 aline .849361E-01 .017573 aline .878649E-01 .234307E-01 aline .898175E-01 .244069E-01 bezier .102932 .210692E-01 .11738 .154028E-01 .129845 .244069E-01 aline .131797 .253832E-01 aline .13375 .273358E-01 aline .134726 .292883E-01 aline .135703 .302646E-01 aline .137655 .341697E-01 aline .139608 .419799E-01 aline .140584 .429562E-01 aline .140584 .488139E-01 aline .14156 .497901E-01 aline .14156 .800547E-01 bezier .139168 .975252E-01 .135035 .121027 .116177 .129845 aline .10739 .132774 aline .106414 .13375 aline .101533 .13375 aline .100557 .134726 aline .927463E-01 .134726 aline .907938E-01 .136679 aline .907938E-01 .156204 aline .917701E-01 .158157 aline .937226E-01 .159133 aline .102509 .159133 aline .103485 .160109 aline .108367 .160109 aline .109343 .161086 bezier .131307 .166032 .134481 .193332 .127892 .210876 bezier .11813 .224375 .979556E-01 .222833 .839598E-01 .219662 aline .781022E-01 .21771 aline .771259E-01 .216734 aline .751733E-01 .215757 aline .732208E-01 .213805 aline .722445E-01 .211852 aline .712682E-01 .210876 aline .070292 .207947 aline .693157E-01 .203066 aline .683394E-01 .202089 aline .683394E-01 .781022E-02 aline .663868E-01 .390511E-02 aline .063458 .976277E-03 aline .595529E-01 -.976277E-03 aline .322171E-01 -.976277E-03 aline .292883E-01 0 aline .273358E-01 .976277E-03 aline .244069E-01 .390511E-02 aline .234307E-01 .585766E-02 aline .224544E-01 .878649E-02 aline .224544E-01 .204042 bezier .266923E-01 .231862 .567926E-01 .245989 .820073E-01 .245046 aline .829836E-01 .246022 aline .117153 .246022 closepath ! end of curve fill dfont endchar dfont char=26 !-------------- Beginning of new char. dfont wid=.794449 hei=.458333 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .10739 .164991 aline .108367 .164015 aline .115201 .164015 aline .116177 .163038 aline .121058 .163038 aline .124963 .162062 aline .130821 .160109 aline .142536 .154252 aline .143513 .153276 aline .145465 .152299 aline .147418 .151648 bezier .175007 .167646 .210434 .170418 .239188 .156204 bezier .264017 .141203 .270056 .109738 .268476 .829836E-01 aline .266524 .790785E-01 aline .263595 .761496E-01 aline .25969 .741971E-01 aline .164991 .741971E-01 aline .164015 .732208E-01 bezier .164748 .537456E-01 .170028 .265922E-01 .193303 .214781E-01 bezier .216461 .147053E-01 .24254 .270163E-01 .25969 .439325E-01 aline .262619 .439325E-01 aline .264571 .419799E-01 aline .264571 .035146 aline .265547 .341697E-01 aline .265547 .234307E-01 aline .266524 .224544E-01 aline .266524 .146442E-01 bezier .236167 -.838074E-02 .194453 -.100212E-01 .160109 .292883E-02 aline .152299 .683394E-02 aline .151323 .781022E-02 aline .14937 .878649E-02 aline .148394 .976277E-02 aline .146442 .010739 aline .144489 .126916E-01 aline .142536 .136679E-01 aline .14156 .146442E-01 bezier .123858 -.113921E-02 .982474E-01 -.219369E-02 .771259E-01 -.488139E-02 aline .052719 -.488139E-02 bezier .235696E-01 -.177094E-02 -.295293E-04 .345531E-01 .017573 .605292E-01 bezier .391431E-01 .840168E-01 .744948E-01 .835973E-01 .102509 .868887E-01 aline .116177 .868887E-01 aline .117153 .878649E-01 aline .117153 .11813 bezier .115543 .127687 .110894 .140804 .098604 .14156 bezier .761055E-01 .145652 .051305 .135205 .361223E-01 .117153 aline .341697E-01 .116177 aline .322171E-01 .116177 aline .302646E-01 .117153 aline .292883E-01 .119106 aline .292883E-01 .124963 aline .028312 .12594 aline .028312 .138631 aline .273358E-01 .139608 aline .273358E-01 .147418 aline .028312 .14937 bezier .525372E-01 .163947 .798715E-01 .166038 .10739 .164991 closepath ! end of curve ! start of curve amove .194279 .139608 bezier .1715 .137109 .164275 .109968 .164991 .917701E-01 aline .228449 .917701E-01 aline .229425 .927463E-01 bezier .229021 .10742 .227858 .122765 .21771 .134726 aline .215757 .135703 aline .214781 .136679 aline .212828 .137655 aline .2099 .138631 aline .205994 .139608 aline .205018 .140584 aline .195255 .140584 closepath ! end of curve ! start of curve amove .115201 .683394E-01 bezier .975891E-01 .681868E-01 .791145E-01 .065146 .063458 .556478E-01 bezier .493789E-01 .445897E-01 .600886E-01 .224083E-01 .761496E-01 .205018E-01 aline .771259E-01 .195255E-01 bezier .938081E-01 .019159 .113909 .231377E-01 .123011 .390511E-01 aline .123011 .439325E-01 aline .122035 .449088E-01 aline .121058 .478376E-01 aline .119106 .556478E-01 aline .11813 .605292E-01 aline .11813 .673631E-01 aline .116177 .693157E-01 aline .115201 .683394E-01 closepath ! end of curve fill dfont endchar dfont char=27 !-------------- Beginning of new char. dfont wid=.85556 hei=.458333 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .111296 .164991 bezier .128892 .163416 .148441 .157864 .162062 .145465 bezier .186116 .166992 .222488 .169513 .25188 .160109 bezier .283095 .149243 .292199 .112481 .289954 .829836E-01 aline .288002 .790785E-01 aline .285073 .761496E-01 aline .281168 .741971E-01 aline .186469 .741971E-01 aline .185493 .732208E-01 bezier .186226 .537456E-01 .191506 .265922E-01 .214781 .214781E-01 bezier .237939 .147054E-01 .264018 .270159E-01 .281168 .439325E-01 aline .284097 .439325E-01 aline .286049 .419799E-01 aline .286049 .035146 aline .287025 .341697E-01 aline .287025 .234307E-01 aline .288002 .224544E-01 aline .288002 .146442E-01 bezier .257646 -.838051E-02 .215932 -.100214E-01 .181588 .292883E-02 aline .173777 .683394E-02 aline .172801 .781022E-02 aline .170849 .878649E-02 aline .169872 .976277E-02 aline .16792 .010739 aline .165967 .126916E-01 aline .16255 .144001E-01 bezier .134678 -.800731E-02 .960462E-01 -.80315E-02 .063458 -.976277E-03 bezier .335479E-01 .661668E-02 .122937E-01 .362611E-01 .126916E-01 .663868E-01 bezier .821227E-02 .098012 .159436E-01 .138174 .478376E-01 .154252 bezier .06736 .165749 .892674E-01 .165132 .111296 .164991 closepath ! end of curve ! start of curve amove .907938E-01 .139608 bezier .740829E-01 .139658 .601597E-01 .125016 .585766E-01 .108367 aline .576004E-01 .10739 aline .576004E-01 .995803E-01 aline .566241E-01 .098604 aline .566241E-01 .644343E-01 bezier .584543E-01 .475773E-01 .649219E-01 .241526E-01 .859124E-01 .214781E-01 bezier .105843 .145645E-01 .132728 .256233E-01 .135703 .488139E-01 aline .136679 .497901E-01 aline .136679 .546715E-01 aline .137655 .556478E-01 aline .137655 .624817E-01 aline .138631 .063458 aline .138631 .995803E-01 bezier .136757 .115277 .130294 .135802 .111296 .138631 aline .110319 .139608 aline .105438 .139608 aline .104462 .140584 aline .917701E-01 .140584 aline .907938E-01 .139608 closepath ! end of curve ! start of curve amove .215757 .139608 bezier .192978 .137109 .185753 .109968 .186469 .917701E-01 aline .249927 .917701E-01 aline .250903 .927463E-01 bezier .250499 .10742 .249337 .122765 .239188 .134726 aline .237235 .135703 aline .236259 .136679 aline .234307 .137655 aline .231378 .138631 aline .227473 .139608 aline .226496 .140584 aline .216734 .140584 closepath ! end of curve fill dfont endchar dfont char=28 !-------------- Beginning of new char. dfont wid=.550003 hei=.555555 dep=.0972233 italic=0 set path ! start of curve newpath ! start of curve amove .164991 .205994 bezier .175589 .203586 .177333 .189613 .169872 .182564 bezier .165013 .171674 .155935 .161068 .153276 .150347 bezier .184648 .126516 .186076 .829962E-01 .179635 .478376E-01 bezier .173005 .162947E-01 .141216 -.485201E-02 .110319 -.390511E-02 aline .109343 -.488139E-02 aline .849361E-01 -.488139E-02 aline .839598E-01 -.390511E-02 aline .761496E-01 -.390511E-02 aline .751733E-01 -.292883E-02 aline .070292 -.292883E-02 aline .673631E-01 -.234307E-02 aline .649767E-01 -.282037E-02 bezier .558628E-01 -.017322 .495789E-01 -.345303E-01 .380748E-01 -.468613E-01 bezier .283498E-01 -.518765E-01 .160049E-01 -.415242E-01 .205018E-01 -.312409E-01 bezier .279012E-01 -.181623E-01 .347916E-01 -.471684E-02 .429562E-01 .781022E-02 bezier .120224E-01 .264693E-01 .797445E-02 .683006E-01 .136679E-01 .995803E-01 bezier .149003E-01 .135852 .486958E-01 .165148 .839598E-01 .164015 aline .849361E-01 .164991 aline .109343 .164991 aline .110319 .164015 aline .117153 .164015 aline .11813 .163038 aline .123011 .163038 aline .126916 .162062 aline .12838 .16133 bezier .139227 .174278 .144154 .193043 .156204 .205018 aline .159133 .205994 closepath ! end of curve ! start of curve amove .888412E-01 .139608 bezier .706632E-01 .139302 .562952E-01 .123536 .546715E-01 .105438 aline .536952E-01 .104462 aline .536952E-01 .966514E-01 aline .052719 .956752E-01 aline .052719 .605292E-01 aline .536952E-01 .595529E-01 aline .536952E-01 .052719 aline .546715E-01 .517427E-01 aline .556478E-01 .468613E-01 aline .576004E-01 .410036E-01 aline .585766E-01 .390511E-01 aline .595529E-01 .380748E-01 bezier .779153E-01 .709717E-01 .097259 .103381 .114875 .136679 aline .114491 .137833 aline .111296 .138631 aline .110319 .139608 aline .105438 .139608 aline .104462 .140584 aline .898175E-01 .140584 aline .888412E-01 .139608 closepath ! end of curve ! start of curve amove .13375 .11813 bezier .115201 .864721E-01 .097823 .539713E-01 .790785E-01 .224544E-01 bezier .100083 .147513E-01 .133065 .203969E-01 .138631 .468613E-01 aline .139608 .517427E-01 aline .140584 .052719 aline .140584 .595529E-01 aline .14156 .605292E-01 aline .14156 .956752E-01 aline .140584 .966514E-01 aline .140584 .104462 aline .139608 .105438 aline .138631 .110319 aline .135703 .119106 aline .134726 .120082 closepath ! end of curve fill dfont endchar dfont char=29 !-------------- Beginning of new char. dfont wid=.947227 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .302646 .242117 aline .304598 .24114 aline .306551 .240164 aline .30948 .237235 aline .311432 .23333 aline .311432 .214781 aline .30948 .210876 aline .306551 .207947 aline .302646 .205994 aline .270429 .205994 aline .269453 .206971 aline .214781 .206971 aline .213805 .205994 aline .213805 .14156 aline .214781 .140584 aline .291907 .140584 aline .295812 .138631 aline .298741 .135703 aline .300693 .131797 aline .300693 .117153 aline .298741 .113248 aline .295812 .110319 aline .291907 .108367 aline .214781 .108367 aline .213805 .10739 aline .213805 .361223E-01 aline .215269 .03539 aline .216734 .361223E-01 aline .273358 .361223E-01 aline .274334 .370985E-01 aline .307527 .370985E-01 aline .311432 .035146 aline .314361 .322171E-01 aline .316314 .028312 aline .316314 .781022E-02 aline .314361 .390511E-02 aline .311432 .976277E-03 aline .307527 -.976277E-03 aline .172801 -.976277E-03 aline .169872 0 aline .16792 .976277E-03 aline .164991 .390511E-02 aline .164015 .585766E-02 aline .163038 .878649E-02 aline .163038 .654106E-01 aline .162062 .663868E-01 aline .878649E-01 .663868E-01 bezier .788074E-01 .467829E-01 .071929 .262764E-01 .624817E-01 .683394E-02 aline .585766E-01 .292883E-02 aline .566241E-01 .195255E-02 aline .556478E-01 .976277E-03 aline .497901E-01 -.976277E-03 aline .224544E-01 -.976277E-03 bezier .938126E-02 .595446E-02 .219189E-01 .205099E-01 .244069E-01 .302646E-01 bezier .530767E-01 .980944E-01 .799551E-01 .166958 .109343 .234307 aline .113248 .238212 aline .115201 .239188 aline .116177 .240164 aline .11813 .24114 aline .122035 .242117 closepath ! end of curve ! start of curve amove .145465 .206971 bezier .131101 .169962 .113239 .131666 .100557 .956752E-01 aline .162062 .956752E-01 aline .163038 .966514E-01 aline .163038 .206971 aline .162062 .207947 aline .146442 .207947 aline .145465 .206971 closepath ! end of curve fill dfont endchar dfont char=30 !-------------- Beginning of new char. dfont wid=1.06945 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .150347 .249927 bezier .166188 .247071 .182343 .244972 .198184 .242117 aline .345602 .242117 aline .349507 .240164 aline .352436 .237235 aline .354389 .23333 aline .354389 .214781 aline .352436 .210876 aline .349507 .207947 aline .345602 .205994 aline .307527 .205994 aline .306551 .206971 aline .24114 .206971 aline .240164 .207947 aline .234307 .207947 aline .23333 .206971 aline .23333 .14156 aline .234307 .140584 aline .334863 .140584 aline .338768 .138631 aline .341697 .135703 aline .34365 .131797 aline .34365 .117153 aline .341697 .113248 aline .338768 .110319 aline .334863 .108367 aline .234307 .108367 aline .23333 .10739 aline .23333 .361223E-01 aline .234307 .035146 aline .24114 .035146 aline .242117 .361223E-01 aline .310456 .361223E-01 aline .311432 .370985E-01 aline .350484 .370985E-01 aline .354389 .035146 aline .357317 .322171E-01 aline .35927 .028312 aline .35927 .781022E-02 aline .357317 .390511E-02 aline .354389 .976277E-03 aline .350484 -.976277E-03 aline .198184 -.976277E-03 bezier .174203 -.46082E-02 .151047 -.01023 .124963 -.878649E-02 bezier .900877E-01 -.677245E-02 .489387E-01 .674907E-02 .302646E-01 .400274E-01 bezier .176622E-01 .587116E-01 .138411E-01 .825459E-01 .117153E-01 .103485 aline .117153E-01 .13375 bezier .138463E-01 .166919 .246986E-01 .206174 .546715E-01 .226496 bezier .821893E-01 .247912 .117251 .250337 .150347 .249927 closepath ! end of curve ! start of curve amove .129845 .224544 bezier .989471E-01 .223386 .722811E-01 .199431 .663868E-01 .168896 aline .644343E-01 .159133 aline .063458 .158157 aline .063458 .152299 aline .624817E-01 .151323 aline .624817E-01 .142536 aline .615055E-01 .14156 aline .615055E-01 .10739 bezier .638376E-01 .747262E-01 .756035E-01 .319978E-01 .112272 .205018E-01 bezier .130938 .146328E-01 .151875 .123727E-01 .169872 .214781E-01 aline .17573 .273358E-01 aline .177682 .312409E-01 aline .179635 .370985E-01 aline .180611 .410036E-01 aline .181588 .419799E-01 aline .181588 .468613E-01 aline .182564 .478376E-01 aline .182564 .566241E-01 aline .18354 .576004E-01 aline .18354 .18354 bezier .181401 .197138 .180341 .217852 .163038 .222591 aline .159133 .223567 aline .158157 .224544 aline .153276 .224544 aline .152299 .22552 aline .130821 .22552 aline .129845 .224544 closepath ! end of curve fill dfont endchar dfont char=31 !-------------- Beginning of new char. dfont wid=.85556 hei=.743055 dep=.0486116 italic=0 set path ! start of curve newpath ! start of curve amove .235283 .272381 aline .237235 .271405 aline .238212 .270429 aline .240164 .269453 aline .242117 .2675 bezier .250257 .253868 .232469 .242425 .231378 .230401 bezier .263066 .210236 .278268 .170577 .278239 .134726 aline .279215 .13375 aline .279215 .103485 bezier .277386 .678642E-01 .262397 .276593E-01 .229425 .878649E-02 bezier .209989 -.309171E-02 .186814 -.654389E-02 .165967 -.878649E-02 aline .135703 -.878649E-02 bezier .123314 -.675056E-02 .110557 -.622251E-02 .976277E-01 -.234306E-02 aline .952413E-01 -.282035E-02 bezier .881305E-01 -.118689E-01 .858827E-01 -.256718E-01 .751733E-01 -.312409E-01 aline .663868E-01 -.312409E-01 aline .644343E-01 -.302646E-01 aline .063458 -.292883E-01 aline .615055E-01 -.028312 aline .595529E-01 -.263595E-01 bezier .518705E-01 -.129792E-01 .679898E-01 -.16633E-02 .706174E-01 .100882E-01 bezier .383886E-01 .028834 .244279E-01 .068705 .224544E-01 .103485 aline .224544E-01 .13375 bezier .245853E-01 .166919 .354377E-01 .206174 .654106E-01 .226496 bezier .972062E-01 .250786 .138172 .251313 .17573 .248951 aline .176706 .247974 aline .182564 .247974 aline .18354 .246998 aline .188421 .246998 aline .193303 .246022 aline .197208 .245046 aline .200137 .244069 aline .204042 .243093 aline .205018 .242117 bezier .213144 .25138 .215162 .266318 .226496 .272381 closepath ! end of curve ! start of curve amove .138631 .224544 bezier .112131 .223282 .852439E-01 .207792 .761496E-01 .181588 aline .732208E-01 .172801 aline .712682E-01 .164991 aline .070292 .164015 aline .070292 .159133 aline .693157E-01 .158157 aline .693157E-01 .152299 aline .683394E-01 .151323 aline .683394E-01 .140584 aline .673631E-01 .139608 aline .673631E-01 .098604 bezier .695504E-01 .787334E-01 .731993E-01 .552515E-01 .878649E-01 .390511E-01 bezier .122504 .982623E-01 .157753 .158343 .190765 .217905 aline .188421 .218686 aline .186469 .219662 aline .18354 .220639 aline .17573 .222591 aline .170849 .223567 aline .169872 .224544 aline .163038 .224544 aline .162062 .22552 aline .139608 .22552 aline .138631 .224544 closepath ! end of curve ! start of curve amove .211852 .199161 bezier .178304 .140612 .14295 .081808 .11097 .231052E-01 bezier .141554 .010991 .177745 .125703E-01 .205994 .312409E-01 bezier .226415 .474717E-01 .232119 .752414E-01 .234307 .098604 aline .234307 .139608 bezier .232092 .160039 .22884 .184501 .213317 .200869 aline .212503 .200462 closepath ! end of curve fill dfont endchar dfont char=32 !-------------- Beginning of new char. dfont wid=.255557 hei=.458333 dep=0 italic=0 dfont fby="L" kadd=-.293057 dfont fby="l" kadd=-.255557 set path ! start of curve newpath ! start of curve amove .102509 .144489 aline .104462 .143513 aline .106414 .142536 aline .110319 .138631 aline .111296 .135703 aline .111296 .128869 bezier .106507 .115589 .896348E-01 .12035 .800547E-01 .116177 bezier .489073E-01 .111917 .194255E-01 .104724 -.117153E-01 .101533 aline -.156204E-01 .103485 aline -.195255E-01 .10739 aline -.205018E-01 .110319 aline -.205018E-01 .117153 bezier -.157143E-01 .130433 .115938E-02 .125672 .010739 .129845 bezier .394936E-01 .134424 .675824E-01 .139152 .956752E-01 .144489 closepath ! end of curve fill dfont endchar dfont char=33 !-------------- Beginning of new char. dfont wid=.366669 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .859124E-01 .242117 aline .878649E-01 .240164 aline .878649E-01 .219662 aline .868887E-01 .218686 aline .868887E-01 .182564 aline .859124E-01 .181588 aline .859124E-01 .145465 aline .849361E-01 .144489 aline .849361E-01 .108367 aline .839598E-01 .10739 aline .839598E-01 .722445E-01 aline .829836E-01 .070292 aline .081031 .683394E-01 aline .497901E-01 .683394E-01 aline .478376E-01 .070292 aline .468613E-01 .722445E-01 aline .468613E-01 .10739 aline .045885 .108367 aline .045885 .144489 aline .449088E-01 .145465 aline .449088E-01 .181588 aline .439325E-01 .182564 aline .439325E-01 .218686 aline .429562E-01 .219662 aline .429562E-01 .239188 aline .439325E-01 .24114 aline .045885 .242117 aline .859124E-01 .242117 closepath ! end of curve ! start of curve amove .790785E-01 .439325E-01 aline .081031 .429562E-01 aline .829836E-01 .419799E-01 aline .859124E-01 .390511E-01 aline .878649E-01 .035146 aline .878649E-01 .781022E-02 aline .859124E-01 .390511E-02 aline .829836E-01 .976277E-03 aline .790785E-01 -.976277E-03 aline .052719 -.976277E-03 aline .497901E-01 0 aline .478376E-01 .976277E-03 aline .449088E-01 .390511E-02 aline .439325E-01 .585766E-02 aline .429562E-01 .878649E-02 aline .429562E-01 .035146 aline .449088E-01 .390511E-01 aline .478376E-01 .419799E-01 aline .497901E-01 .429562E-01 aline .517427E-01 .439325E-01 closepath ! end of curve fill dfont endchar dfont char=34 !-------------- Beginning of new char. dfont wid=.558336 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .566241E-01 .242117 aline .585766E-01 .240164 aline .585766E-01 .199161 bezier .049633 .186579 .429256E-01 .17167 .331934E-01 .160109 aline .165967E-01 .160109 aline .146442E-01 .161086 aline .136679E-01 .163038 bezier .016109 .174409 .237543E-01 .186948 .253832E-01 .197208 aline .156204E-01 .197208 aline .136679E-01 .199161 aline .136679E-01 .240164 aline .156204E-01 .242117 aline .566241E-01 .242117 closepath ! end of curve ! start of curve amove .134726 .242117 aline .136679 .240164 aline .136679 .199161 bezier .127735 .186579 .121028 .171671 .111296 .160109 aline .946989E-01 .160109 aline .927463E-01 .161086 aline .917701E-01 .163038 bezier .942108E-01 .174409 .101858 .186949 .103485 .197208 aline .937226E-01 .197208 aline .917701E-01 .199161 aline .917701E-01 .240164 aline .937226E-01 .242117 aline .134726 .242117 closepath ! end of curve fill dfont endchar dfont char=35 !-------------- Beginning of new char. dfont wid=.916672 hei=.694445 dep=.194443 italic=0 set path ! start of curve newpath ! start of curve amove .164991 .242117 bezier .177491 .23915 .177497 .224386 .172801 .214781 bezier .166823 .190377 .157908 .165557 .153276 .14156 aline .204042 .14156 bezier .214327 .173139 .220661 .206417 .232354 .237235 bezier .241432 .248764 .261605 .238987 .257737 .224544 bezier .250406 .196995 .240964 .168791 .235283 .14156 aline .288002 .14156 bezier .302876 .140388 .30546 .117116 .290931 .113248 aline .22552 .113248 bezier .220694 .954881E-01 .213811 .770668E-01 .210876 .595529E-01 aline .290931 .595529E-01 bezier .30546 .556842E-01 .302876 .324134E-01 .288002 .312409E-01 aline .201113 .312409E-01 bezier .190828 -.338434E-03 .184494 -.033616 .172801 -.644343E-01 bezier .163723 -.759629E-01 .14355 -.661862E-01 .147418 -.517427E-01 bezier .154749 -.241945E-01 .164191 .400969E-02 .169872 .312409E-01 aline .119106 .312409E-01 bezier .10882 -.338384E-03 .102487 -.336155E-01 .907938E-01 -.644343E-01 bezier .817154E-01 -.759629E-01 .615428E-01 -.661861E-01 .654106E-01 -.517427E-01 bezier .727422E-01 -.241945E-01 .821833E-01 .401039E-02 .878649E-01 .312409E-01 aline .035146 .312409E-01 bezier .203524E-01 .324666E-01 .175956E-01 .554717E-01 .322171E-01 .595529E-01 aline .976277E-01 .595529E-01 bezier .102454 .773126E-01 .109337 .957344E-01 .112272 .113248 aline .322171E-01 .113248 bezier .175958E-01 .11733 .203523E-01 .140335 .035146 .14156 aline .122035 .14156 bezier .13232 .17314 .138654 .206417 .150347 .237235 aline .152299 .239188 aline .154252 .240164 aline .155228 .24114 aline .158157 .242117 closepath ! end of curve ! start of curve amove .142536 .110319 bezier .138243 .934748E-01 .131468 .760923E-01 .128869 .595529E-01 aline .179635 .595529E-01 bezier .184461 .773128E-01 .191344 .957341E-01 .194279 .113248 aline .143513 .113248 closepath ! end of curve fill dfont endchar dfont char=36 !-------------- Beginning of new char. dfont wid=.550003 hei=.75 dep=.0555553 italic=0 set path ! start of curve newpath ! start of curve amove .100557 .261642 aline .102509 .260666 aline .104462 .25969 aline .10739 .256761 aline .109343 .252856 aline .109343 .246998 aline .111296 .245046 aline .11813 .245046 aline .127892 .243093 aline .139608 .239188 aline .155228 .231378 aline .156204 .230401 aline .160109 .228449 aline .161086 .227473 aline .163038 .226496 aline .164991 .224544 aline .164991 .219662 aline .164015 .218686 aline .164015 .213805 aline .163038 .212828 aline .163038 .207947 aline .162062 .203066 aline .161086 .202089 aline .161086 .197208 aline .160109 .193303 aline .159133 .19135 aline .157181 .190374 aline .154252 .190374 bezier .141902 .200757 .126174 .210556 .109343 .2099 aline .109343 .14937 bezier .142476 .143385 .168719 .113816 .171825 .081031 bezier .173915 .524906E-01 .167141 .186232E-01 .139608 .390511E-02 aline .135703 .195255E-02 aline .132774 .976277E-03 aline .130821 0 aline .124963 -.195255E-02 aline .121058 -.292883E-02 aline .116177 -.390511E-02 aline .110319 -.390511E-02 aline .109343 -.488139E-02 aline .109343 -.117153E-01 aline .10739 -.156204E-01 aline .104462 -.185493E-01 aline .100557 -.205018E-01 aline .946989E-01 -.205018E-01 aline .917701E-01 -.195255E-01 aline .898175E-01 -.185493E-01 aline .868887E-01 -.156204E-01 aline .859124E-01 -.136679E-01 aline .849361E-01 -.010739 aline .849361E-01 -.488139E-02 bezier .615778E-01 -.238524E-02 .037086 .639585E-02 .185493E-01 .214781E-01 bezier .197611E-01 .328794E-01 .212799E-01 .442093E-01 .244069E-01 .556478E-01 aline .253832E-01 .566241E-01 aline .273358E-01 .576004E-01 bezier .427014E-01 .460961E-01 .597856E-01 .339648E-01 .800547E-01 .312409E-01 aline .824954E-01 .306307E-01 aline .849361E-01 .312409E-01 aline .849361E-01 .101533 bezier .461823E-01 .107525 .151239E-01 .147156 .234307E-01 .185493 bezier .224001E-01 .217836 .519034E-01 .246072 .839598E-01 .245046 aline .849361E-01 .246022 aline .849361E-01 .25188 aline .859124E-01 .254808 aline .868887E-01 .256761 aline .898175E-01 .25969 aline .917701E-01 .260666 aline .946989E-01 .261642 closepath ! end of curve ! start of curve amove .829836E-01 .2099 bezier .589681E-01 .205946 .558117E-01 .170147 .761496E-01 .159133 aline .771259E-01 .158157 aline .081031 .156204 aline .829836E-01 .155553 aline .849361E-01 .156204 aline .849361E-01 .2099 aline .839598E-01 .210876 closepath ! end of curve ! start of curve amove .109343 .946989E-01 aline .109343 .322171E-01 aline .111296 .315663E-01 bezier .140087 .399062E-01 .137266 .854216E-01 .110807 .954311E-01 aline .109343 .946989E-01 closepath ! end of curve fill dfont endchar dfont char=37 !-------------- Beginning of new char. dfont wid=1.02912 hei=.75 dep=.0555553 italic=0 set path ! start of curve newpath ! start of curve amove .956752E-01 .261642 bezier .119986 .260296 .142063 .241404 .146442 .216734 bezier .150701 .187505 .151265 .150133 .123987 .130821 bezier .101367 .117317 .719618E-01 .117533 .488139E-01 .129845 bezier .198382E-01 .148097 .199146E-01 .186987 .244069E-01 .216734 bezier .289555E-01 .241729 .051575 .260292 .761496E-01 .261642 aline .956752E-01 .261642 closepath ! end of curve ! start of curve amove .280192 .261642 bezier .292855 .258738 .29405 .241949 .285073 .234307 bezier .220699 .150537 .159192 .639757E-01 .937226E-01 -.185493E-01 aline .927463E-01 -.195255E-01 aline .898175E-01 -.205018E-01 aline .829836E-01 -.205018E-01 aline .790785E-01 -.185493E-01 aline .741971E-01 -.136679E-01 bezier .665544E-01 .750163E-03 .841217E-01 .110274E-01 .898175E-01 .224544E-01 bezier .150324 .10108 .207629 .182012 .269453 .25969 aline .271405 .260666 aline .273358 .261642 closepath ! end of curve ! start of curve amove .081031 .236259 bezier .670267E-01 .234543 .654577E-01 .218232 .063458 .207947 aline .063458 .174754 bezier .654578E-01 .164469 .670262E-01 .148158 .081031 .146442 bezier .948396E-01 .141673 .106333 .156662 .10739 .169872 bezier .110841 .188428 .110943 .209591 .102509 .227473 aline .100557 .229425 aline .995803E-01 .231378 aline .098604 .232354 aline .966514E-01 .23333 aline .956752E-01 .234307 aline .937226E-01 .235283 aline .898175E-01 .236259 aline .888412E-01 .237235 aline .820073E-01 .237235 aline .081031 .236259 closepath ! end of curve ! start of curve amove .287025 .120082 bezier .311337 .118737 .333414 .998434E-01 .337792 .751733E-01 bezier .342051 .459447E-01 .342615 .85733E-02 .315338 -.010739 bezier .292719 -.242433E-01 .263312 -.240267E-01 .240164 -.117153E-01 bezier .211188 .653711E-02 .211266 .454252E-01 .215757 .751733E-01 bezier .220306 .100168 .242925 .118732 .2675 .120082 aline .287025 .120082 closepath ! end of curve ! start of curve amove .272381 .946989E-01 bezier .258376 .929821E-01 .256809 .766705E-01 .254808 .663868E-01 aline .254808 .331934E-01 bezier .256809 .229097E-01 .258376 .659813E-02 .272381 .488139E-02 bezier .286192 .113595E-03 .297683 .151026E-01 .298741 .028312 bezier .30219 .468675E-01 .302294 .680312E-01 .293859 .859124E-01 aline .291907 .878649E-01 aline .290931 .898175E-01 aline .289954 .907938E-01 aline .288002 .917701E-01 aline .287025 .927463E-01 aline .285073 .937226E-01 aline .281168 .946989E-01 aline .280192 .956752E-01 aline .273358 .956752E-01 aline .272381 .946989E-01 closepath ! end of curve fill dfont endchar dfont char=38 !-------------- Beginning of new char. dfont wid=.830561 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .128869 .249927 bezier .165992 .246615 .194243 .20035 .171825 .16792 bezier .157857 .14784 .137502 .133379 .11813 .119106 bezier .117335 .112634 .124491 .107486 .126916 .101533 bezier .139419 .862237E-01 .151086 .697718E-01 .166455 .568681E-01 bezier .196061 .802684E-01 .213025 .115706 .224544 .151323 aline .226496 .152299 aline .229425 .152299 aline .252856 .146442 aline .255785 .145465 aline .257737 .143513 bezier .248802 .10152 .224718 .063758 .194279 .341697E-01 bezier .216438 .213276E-01 .241528 .242333E-01 .264571 .331934E-01 aline .268476 .331934E-01 aline .270429 .312409E-01 aline .270429 -.976277E-03 aline .268476 -.292883E-02 bezier .233118 -.135503E-01 .193454 -.106296E-01 .161574 .010495 bezier .12605 -.78593E-02 .824148E-01 -.182516E-01 .045885 .195255E-02 bezier .162671E-01 .176012E-01 .669737E-02 .629147E-01 .322171E-01 .868887E-01 bezier .429663E-01 .099372 .058964 .106199 .712682E-01 .117153 bezier .058752 .144613 .523862E-01 .175329 .595529E-01 .205018 bezier .674376E-01 .228574 .885295E-01 .246441 .113248 .249927 closepath ! end of curve ! start of curve amove .116177 .224544 bezier .940923E-01 .217449 .929849E-01 .189024 .976277E-01 .170849 aline .995803E-01 .161086 aline .101533 .153276 aline .105243 .142146 bezier .126486 .153962 .147577 .180955 .138631 .205994 aline .135703 .214781 aline .134726 .215757 aline .132774 .219662 aline .129845 .222591 aline .12594 .224544 aline .124963 .22552 aline .117153 .22552 closepath ! end of curve ! start of curve amove .081031 .927463E-01 bezier .633772E-01 .828079E-01 .609397E-01 .575737E-01 .683394E-01 .410036E-01 bezier .713666E-01 .287073E-01 .854628E-01 .219903E-01 .966514E-01 .263595E-01 aline .103485 .263595E-01 aline .104462 .273358E-01 aline .109343 .273358E-01 aline .110319 .028312 aline .122035 .312409E-01 aline .127892 .331934E-01 aline .129194 .338443E-01 aline .129601 .346578E-01 bezier .112309 .530811E-01 .958884E-01 .072434 .824954E-01 .934785E-01 aline .081031 .927463E-01 closepath ! end of curve fill dfont endchar dfont char=39 !-------------- Beginning of new char. dfont wid=.305557 hei=.694445 dep=0 italic=0 dfont fby=33 kadd=.122223 dfont fby=39 ligrep=34 dfont fby="?" kadd=.122223 set path ! start of curve newpath ! start of curve amove .751733E-01 .242117 aline .771259E-01 .240164 aline .771259E-01 .199161 bezier .681822E-01 .186579 .614749E-01 .17167 .517427E-01 .160109 aline .035146 .160109 aline .331934E-01 .161086 aline .322171E-01 .163038 bezier .346584E-01 .174409 .423035E-01 .186948 .439325E-01 .197208 aline .341697E-01 .197208 aline .322171E-01 .199161 aline .322171E-01 .240164 aline .341697E-01 .242117 aline .751733E-01 .242117 closepath ! end of curve fill dfont endchar dfont char=40 !-------------- Beginning of new char. dfont wid=.42778 hei=.75 dep=.25 italic=0 set path ! start of curve newpath ! start of curve amove .126916 .261642 aline .128869 .25969 bezier .127877 .250907 .11845 .245044 .114224 .237235 bezier .917048E-01 .203141 .830872E-01 .160775 .790785E-01 .123011 aline .790785E-01 .108367 aline .781022E-01 .10739 aline .781022E-01 .654106E-01 aline .790785E-01 .644343E-01 bezier .797556E-01 .215182E-01 .892507E-01 -.022832 .112272 -.615055E-01 bezier .117543 -.688529E-01 .122687 -.762924E-01 .128869 -.829836E-01 aline .128869 -.868887E-01 aline .126916 -.888412E-01 aline .106414 -.888412E-01 bezier .576996E-01 -.522656E-01 .343255E-01 .116042E-01 .312409E-01 .693157E-01 aline .312409E-01 .103485 bezier .343254E-01 .161196 .057699 .225066 .106414 .261642 aline .126916 .261642 closepath ! end of curve fill dfont endchar dfont char=")" !-------------- Beginning of new char. dfont wid=.42778 hei=.75 dep=.25 italic=0 set path ! start of curve newpath ! start of curve amove .449088E-01 .261642 bezier .936241E-01 .225066 .116997 .161196 .120082 .103485 aline .120082 .693157E-01 bezier .116997 .116042E-01 .936235E-01 -.522658E-01 .449088E-01 -.888412E-01 aline .253832E-01 -.888412E-01 aline .234307E-01 -.878649E-01 aline .224544E-01 -.859124E-01 bezier .025999 -.075409 .366175E-01 -.681998E-01 .410036E-01 -.576004E-01 bezier .611217E-01 -.250142E-01 .683063E-01 .145018E-01 .722445E-01 .497901E-01 aline .722445E-01 .644343E-01 aline .732208E-01 .654106E-01 aline .732208E-01 .10739 aline .722445E-01 .108367 bezier .715674E-01 .151283 .620718E-01 .195634 .390511E-01 .234307 bezier .343109E-01 .242883 .253508E-01 .24951 .224544E-01 .258713 aline .234307E-01 .260666 aline .253832E-01 .261642 aline .449088E-01 .261642 closepath ! end of curve fill dfont endchar dfont char="*" !-------------- Beginning of new char. dfont wid=.550003 hei=.75 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .101533 .261642 aline .104462 .260666 aline .108367 .258713 bezier .122208 .248524 .110318 .231128 .109343 .21771 aline .108367 .213805 aline .106414 .204042 aline .105438 .200137 aline .104852 .197208 aline .105438 .194279 aline .112272 .201113 aline .114224 .202089 aline .123987 .211852 aline .12594 .212828 aline .134726 .221615 aline .136679 .222591 bezier .14301 .233862 .160106 .234353 .165967 .222591 aline .166943 .221615 aline .16792 .219662 aline .168896 .216734 aline .168896 .205994 aline .166943 .202089 aline .164015 .199161 aline .160109 .197208 aline .157181 .196232 aline .153276 .195255 aline .135703 .189398 aline .131797 .188421 aline .114224 .182564 aline .110319 .181588 aline .114224 .180611 aline .131797 .174754 aline .135703 .173777 aline .153276 .16792 aline .157181 .166943 bezier .178658 .162736 .168465 .12771 .148394 .131797 aline .145465 .132774 aline .143513 .13375 aline .136679 .140584 aline .134726 .14156 aline .12594 .150347 aline .123987 .151323 aline .114224 .161086 aline .112272 .162062 aline .105438 .168896 bezier .105941 .150602 .114179 .13264 .115201 .114224 bezier .111114 .953273E-01 .778059E-01 .981356E-01 .790785E-01 .11813 bezier .817861E-01 .135096 .879623E-01 .151955 .888412E-01 .168896 aline .820073E-01 .162062 aline .800547E-01 .161086 aline .070292 .151323 aline .683394E-01 .150347 aline .595529E-01 .14156 aline .576004E-01 .140584 bezier .512691E-01 .129313 .341739E-01 .128822 .028312 .140584 aline .273358E-01 .14156 aline .263595E-01 .143513 aline .253832E-01 .146442 aline .253832E-01 .157181 aline .273358E-01 .161086 aline .302646E-01 .164015 aline .341697E-01 .165967 aline .370985E-01 .166943 aline .410036E-01 .16792 aline .585766E-01 .173777 aline .624817E-01 .174754 aline .800547E-01 .180611 aline .839598E-01 .181588 aline .800547E-01 .182564 aline .624817E-01 .188421 aline .585766E-01 .189398 aline .410036E-01 .195255 aline .370985E-01 .196232 bezier .156215E-01 .200439 .258141E-01 .235465 .045885 .231378 aline .488139E-01 .230401 aline .507664E-01 .229425 aline .576004E-01 .222591 aline .595529E-01 .221615 aline .683394E-01 .212828 aline .070292 .211852 aline .800547E-01 .202089 aline .820073E-01 .201113 aline .888412E-01 .194279 bezier .881902E-01 .212544 .801958E-01 .230514 .790785E-01 .248951 aline .800547E-01 .25188 aline .081031 .253832 aline .859124E-01 .258713 aline .898175E-01 .260666 aline .927463E-01 .261642 closepath ! end of curve ! start of curve amove .898175E-01 .195255 aline .888412E-01 .194279 aline .898175E-01 .193303 aline .907938E-01 .194279 aline .898175E-01 .195255 closepath ! end of curve ! start of curve amove .104462 .193303 aline .105438 .194279 aline .104462 .195255 aline .103485 .194279 aline .104462 .193303 closepath ! end of curve ! start of curve amove .888412E-01 .168896 aline .898175E-01 .16792 aline .907938E-01 .168896 aline .898175E-01 .169872 aline .888412E-01 .168896 closepath ! end of curve ! start of curve amove .103485 .168896 aline .104462 .16792 aline .105438 .168896 aline .104462 .169872 aline .103485 .168896 closepath ! end of curve fill dfont endchar dfont char="+" !-------------- Beginning of new char. dfont wid=.85556 hei=.616669 dep=.116669 italic=0 set path ! start of curve newpath ! start of curve amove .154252 .214781 aline .157181 .213805 aline .158157 .212828 aline .160109 .211852 aline .162062 .2099 aline .163038 .207947 aline .164015 .206971 aline .164991 .204042 aline .164991 .101533 aline .165967 .100557 aline .268476 .100557 bezier .282783 .977243E-01 .282784 .750766E-01 .268476 .722445E-01 aline .165967 .722445E-01 aline .164991 .712682E-01 aline .164991 -.312409E-01 bezier .162159 -.455479E-01 .139511 -.455489E-01 .136679 -.312409E-01 aline .136679 .712682E-01 aline .135703 .722445E-01 aline .331934E-01 .722445E-01 bezier .188857E-01 .075077 .188861E-01 .097724 .331934E-01 .100557 aline .135703 .100557 aline .136679 .101533 aline .136679 .204042 aline .137655 .206971 aline .138631 .207947 aline .139608 .2099 aline .14156 .211852 aline .143513 .212828 aline .144489 .213805 aline .147418 .214781 closepath ! end of curve fill dfont endchar dfont char="," !-------------- Beginning of new char. dfont wid=.305557 hei=.130556 dep=.105556 italic=0 set path ! start of curve newpath ! start of curve amove .751733E-01 .439325E-01 aline .771259E-01 .419799E-01 aline .771259E-01 .976277E-03 bezier .681818E-01 -.116049E-01 .614751E-01 -.265149E-01 .517427E-01 -.380748E-01 aline .035146 -.380748E-01 aline .331934E-01 -.370985E-01 aline .322171E-01 -.035146 bezier .346585E-01 -.237752E-01 .423035E-01 -.112362E-01 .439325E-01 -.976277E-03 aline .341697E-01 -.976277E-03 aline .322171E-01 .976277E-03 aline .322171E-01 .419799E-01 aline .341697E-01 .439325E-01 aline .751733E-01 .439325E-01 closepath ! end of curve fill dfont endchar dfont char="-" !-------------- Beginning of new char. dfont wid=.366669 hei=.458333 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .098604 .917701E-01 aline .100557 .907938E-01 aline .102509 .898175E-01 aline .105438 .868887E-01 aline .10739 .829836E-01 aline .10739 .761496E-01 aline .105438 .722445E-01 aline .102509 .693157E-01 aline .098604 .673631E-01 aline .136679E-01 .673631E-01 aline .976277E-02 .693157E-01 aline .683394E-02 .722445E-01 aline .488139E-02 .761496E-01 aline .488139E-02 .829836E-01 aline .683394E-02 .868887E-01 aline .976277E-02 .898175E-01 aline .117153E-01 .907938E-01 aline .136679E-01 .917701E-01 closepath ! end of curve fill dfont endchar dfont char="." !-------------- Beginning of new char. dfont wid=.305557 hei=.130556 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .751733E-01 .439325E-01 aline .771259E-01 .419799E-01 aline .771259E-01 .976277E-03 aline .751733E-01 -.976277E-03 aline .035146 -.976277E-03 aline .331934E-01 0 aline .322171E-01 .195255E-02 aline .322171E-01 .419799E-01 aline .341697E-01 .439325E-01 aline .751733E-01 .439325E-01 closepath ! end of curve fill dfont endchar dfont char="/" !-------------- Beginning of new char. dfont wid=.550003 hei=.75 dep=.25 italic=0 set path ! start of curve newpath ! start of curve amove .161086 .261642 bezier .170756 .259468 .174911 .247472 .169872 .239188 bezier .129267 .131442 .898408E-01 .232074E-01 .478376E-01 -.839598E-01 bezier .387592E-01 -.954884E-01 .185866E-01 -.857116E-01 .224544E-01 -.712682E-01 bezier .635174E-01 .373993E-01 .10352 .146506 .145465 .254808 aline .151323 .260666 aline .154252 .261642 aline .161086 .261642 closepath ! end of curve fill dfont endchar dfont char="0" !-------------- Beginning of new char. dfont wid=.550003 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .106414 .249927 bezier .134104 .248236 .160735 .229608 .168896 .202089 bezier .176314 .184361 .176247 .166196 .178659 .148394 aline .178659 .898175E-01 bezier .176375 .593064E-01 .170937 .194419E-01 .140584 .195255E-02 bezier .117851 -.115437E-01 .899751E-01 -.113809E-01 .654106E-01 -.390511E-02 bezier .278244E-01 .900698E-02 .162078E-01 .538338E-01 .165967E-01 .888412E-01 aline .156204E-01 .898175E-01 aline .156204E-01 .148394 bezier .180677E-01 .178874 .224202E-01 .216941 .507664E-01 .237235 aline .052719 .238212 aline .536952E-01 .239188 aline .063458 .244069 aline .722445E-01 .246998 aline .761496E-01 .247974 aline .081031 .248951 aline .868887E-01 .248951 aline .878649E-01 .249927 aline .106414 .249927 closepath ! end of curve ! start of curve amove .917701E-01 .224544 bezier .697565E-01 .2208 .652564E-01 .194941 .063458 .177682 aline .063458 .163038 aline .624817E-01 .162062 aline .624817E-01 .849361E-01 aline .063458 .839598E-01 bezier .637386E-01 .632629E-01 .639253E-01 .417426E-01 .771259E-01 .244069E-01 bezier .087496 .014213 .104764 .121367E-01 .115201 .234307E-01 bezier .127982 .034017 .128236 .530467E-01 .130821 .673631E-01 aline .130821 .839598E-01 aline .131797 .849361E-01 aline .131797 .162062 bezier .129185 .181451 .131517 .204999 .114224 .219662 aline .112272 .220639 aline .111296 .221615 aline .109343 .222591 aline .106414 .223567 aline .102509 .224544 aline .101533 .22552 aline .927463E-01 .22552 aline .917701E-01 .224544 closepath ! end of curve fill dfont endchar dfont char="1" !-------------- Beginning of new char. dfont wid=.550003 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .117153 .249927 aline .119106 .248951 aline .121058 .247974 aline .123987 .245046 aline .12594 .24114 aline .12594 .244069E-01 aline .126916 .234307E-01 aline .157181 .234307E-01 bezier .16916 .205527E-01 .169169 .137175E-02 .157181 -.976277E-03 aline .419799E-01 -.976277E-03 bezier .298924E-01 .204365E-02 .030451 .216433E-01 .429562E-01 .234307E-01 aline .771259E-01 .234307E-01 aline .781022E-01 .244069E-01 aline .781022E-01 .205018 aline .766378E-01 .20575 aline .751733E-01 .205018 aline .673631E-01 .203066 aline .624817E-01 .203066 aline .615055E-01 .202089 aline .536952E-01 .202089 aline .052719 .201113 aline .370985E-01 .201113 bezier .251106E-01 .20346 .251189E-01 .222642 .370985E-01 .22552 bezier .606406E-01 .224718 .854889E-01 .230898 .102509 .248951 aline .105438 .249927 closepath ! end of curve fill dfont endchar dfont char="2" !-------------- Beginning of new char. dfont wid=.550003 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .101533 .249927 bezier .13744 .247481 .171379 .216879 .172801 .179635 bezier .180215 .143646 .151504 .112686 .124963 .917701E-01 aline .120082 .868887E-01 aline .11813 .859124E-01 aline .112272 .800547E-01 aline .110319 .790785E-01 aline .995803E-01 .683394E-01 aline .976277E-01 .673631E-01 aline .820073E-01 .517427E-01 aline .800547E-01 .507664E-01 aline .654106E-01 .361223E-01 aline .663868E-01 .035146 aline .946989E-01 .035146 aline .956752E-01 .361223E-01 aline .164991 .361223E-01 aline .168896 .341697E-01 aline .171825 .312409E-01 aline .173777 .273358E-01 aline .173777 .781022E-02 aline .171825 .390511E-02 aline .168896 .976277E-03 aline .164991 -.976277E-03 aline .302646E-01 -.976277E-03 aline .273358E-01 0 aline .253832E-01 .976277E-03 aline .224544E-01 .390511E-02 aline .214781E-01 .585766E-02 aline .205018E-01 .878649E-02 aline .205018E-01 .244069E-01 bezier .502857E-01 .594831E-01 .859218E-01 .09034 .112272 .127892 bezier .128541 .152327 .131969 .190618 .106414 .2099 bezier .890483E-01 .221162 .639532E-01 .215226 .536952E-01 .197208 aline .488139E-01 .187445 aline .045885 .178659 aline .449088E-01 .174754 aline .439325E-01 .171825 aline .419799E-01 .169872 aline .390511E-01 .169872 bezier .306005E-01 .177191 .242437E-01 .187178 .017573 .196232 bezier .239279E-01 .225437 .516854E-01 .247817 .081031 .249927 aline .101533 .249927 closepath ! end of curve fill dfont endchar dfont char="3" !-------------- Beginning of new char. dfont wid=.550003 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .105438 .249927 bezier .131794 .249109 .161078 .232762 .164991 .204042 bezier .17057 .178364 .158879 .149695 .135703 .135703 aline .134726 .134726 aline .132774 .13375 aline .131797 .132774 aline .127892 .130821 bezier .1533 .125924 .174724 .104919 .176706 .790785E-01 bezier .179515 .481193E-01 .168754 .119459E-01 .137655 -.976277E-03 bezier .980291E-01 -.164345E-01 .483927E-01 -.102468E-01 .017573 .214781E-01 aline .017573 .273358E-01 aline .185493E-01 .028312 aline .185493E-01 .331934E-01 aline .195255E-01 .341697E-01 aline .195255E-01 .390511E-01 aline .205018E-01 .400274E-01 aline .205018E-01 .449088E-01 aline .214781E-01 .488139E-01 aline .224544E-01 .507664E-01 aline .244069E-01 .517427E-01 aline .263595E-01 .517427E-01 bezier .475222E-01 .318441E-01 .078781 .173795E-01 .10739 .263595E-01 bezier .120613 .308445E-01 .123697 .464183E-01 .12594 .576004E-01 bezier .125868 .07754 .128583 .102342 .109343 .114224 aline .103485 .116177 aline .098604 .117153 aline .976277E-01 .11813 aline .673631E-01 .11813 aline .654106E-01 .120082 aline .654106E-01 .140584 aline .673631E-01 .142536 bezier .823059E-01 .143039 .101465 .143332 .109343 .159133 bezier .118574 .176096 .122094 .197096 .111296 .213805 bezier .877993E-01 .228387 .563392E-01 .213452 .429562E-01 .19135 bezier .356879E-01 .187415 .335754E-01 .198533 .292883E-01 .202089 aline .028312 .204042 aline .273358E-01 .205018 aline .263595E-01 .206971 aline .244069E-01 .208923 aline .224544E-01 .212828 bezier .253196E-01 .223604 .373319E-01 .230535 .045885 .237235 aline .595529E-01 .244069 aline .624817E-01 .245046 aline .644343E-01 .246022 aline .683394E-01 .246998 aline .712682E-01 .247974 aline .761496E-01 .248951 aline .820073E-01 .248951 aline .829836E-01 .249927 aline .105438 .249927 closepath ! end of curve fill dfont endchar dfont char="4" !-------------- Beginning of new char. dfont wid=.550003 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .14156 .242117 aline .143513 .24114 aline .145465 .240164 aline .148394 .237235 aline .150347 .23333 aline .150347 .859124E-01 aline .151323 .849361E-01 aline .173777 .849361E-01 aline .177682 .829836E-01 aline .180611 .800547E-01 aline .182564 .761496E-01 aline .182564 .615055E-01 aline .180611 .576004E-01 aline .177682 .546715E-01 aline .173777 .052719 aline .151323 .052719 aline .150347 .517427E-01 aline .150347 .781022E-02 aline .148394 .390511E-02 aline .145465 .976277E-03 aline .14156 -.976277E-03 aline .116177 -.976277E-03 aline .112272 .976277E-03 aline .109343 .390511E-02 aline .10739 .781022E-02 aline .10739 .517427E-01 aline .106414 .052719 aline .205018E-01 .052719 aline .165967E-01 .546715E-01 aline .136679E-01 .576004E-01 aline .117153E-01 .615055E-01 aline .117153E-01 .849361E-01 bezier .390105E-01 .136603 .671571E-01 .188195 .956752E-01 .239188 aline .976277E-01 .240164 aline .098604 .24114 aline .101533 .242117 closepath ! end of curve ! start of curve amove .10739 .204042 aline .106414 .201113 aline .105438 .198184 aline .104462 .196232 aline .103485 .193303 aline .995803E-01 .185493 aline .098604 .182564 aline .829836E-01 .151323 bezier .712756E-01 .129736 .597409E-01 .108023 .480817E-01 .864005E-01 aline .488139E-01 .849361E-01 aline .108367 .849361E-01 aline .109343 .859124E-01 aline .109343 .205994 aline .108367 .206971 closepath ! end of curve fill dfont endchar dfont char="5" !-------------- Beginning of new char. dfont wid=.550003 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .152299 .242117 aline .154252 .24114 aline .156204 .240164 aline .159133 .237235 aline .161086 .23333 aline .161086 .216734 aline .159133 .212828 aline .156204 .2099 aline .152299 .207947 aline .761496E-01 .207947 aline .751733E-01 .206971 aline .751733E-01 .153276 aline .761496E-01 .152299 bezier .937739E-01 .160631 .114694 .157765 .132774 .152299 bezier .159015 .143352 .17224 .114962 .173777 .898175E-01 bezier .175696 .595601E-01 .170938 .238341E-01 .143513 .585766E-02 bezier .11683 -.113722E-01 .821137E-01 -.129291E-01 .052719 -.292883E-02 bezier .369247E-01 .389458E-02 .233871E-01 .152174E-01 .136679E-01 .292883E-01 bezier .152657E-01 .395663E-01 .236086E-01 .475454E-01 .028312 .566241E-01 aline .302646E-01 .576004E-01 aline .331934E-01 .576004E-01 bezier .462819E-01 .293783E-01 .832858E-01 .133839E-01 .110319 .302646E-01 aline .115201 .035146 aline .119106 .429562E-01 aline .121058 .507664E-01 aline .122035 .517427E-01 aline .122035 .585766E-01 aline .123011 .595529E-01 aline .123011 .976277E-01 bezier .121037 .109673 .120766 .128937 .104462 .131797 bezier .877164E-01 .135664 .693569E-01 .123156 .624817E-01 .10739 aline .595529E-01 .104462 aline .556478E-01 .102509 aline .390511E-01 .102509 aline .035146 .104462 aline .312409E-01 .108367 aline .302646E-01 .111296 aline .302646E-01 .23333 aline .312409E-01 .236259 aline .035146 .240164 aline .370985E-01 .24114 aline .390511E-01 .242117 closepath ! end of curve fill dfont endchar dfont char="6" !-------------- Beginning of new char. dfont wid=.550003 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .127892 .249927 aline .128869 .248951 aline .13375 .248951 aline .137655 .247974 aline .140584 .246998 aline .146442 .244069 aline .14937 .243093 aline .151323 .24114 aline .151323 .213805 aline .14937 .211852 aline .146442 .211852 bezier .119491 .229448 .772877E-01 .216237 .712682E-01 .182564 bezier .066419 .167513 .06592 .152649 .654106E-01 .136679 aline .663868E-01 .135703 bezier .073271 .152906 .898286E-01 .166962 .108367 .166943 aline .109343 .166943 aline .110319 .165967 bezier .147113 .170978 .176882 .13467 .17573 .100557 aline .176706 .995803E-01 aline .176706 .063458 bezier .176114 .288904E-01 .14878 -.847014E-02 .111296 -.781022E-02 bezier .785517E-01 -.146642E-01 .409595E-01 .314899E-02 .292883E-01 .361223E-01 bezier .205415E-01 .054961 .197511E-01 .755839E-01 .017573 .946989E-01 aline .017573 .140584 bezier .195133E-01 .17511 .308226E-01 .216654 .063458 .236259 aline .751733E-01 .242117 aline .781022E-01 .243093 aline .800547E-01 .244069 aline .859124E-01 .246022 aline .937226E-01 .247974 aline .098604 .247974 aline .995803E-01 .248951 aline .106414 .248951 aline .10739 .249927 aline .127892 .249927 closepath ! end of curve ! start of curve amove .917701E-01 .140584 bezier .074428 .135667 .699391E-01 .115152 .663868E-01 .100557 aline .663868E-01 .693157E-01 bezier .686817E-01 .531523E-01 .714136E-01 .277625E-01 .927463E-01 .244069E-01 bezier .106144 .203851E-01 .123833 .283464E-01 .12594 .439325E-01 aline .126916 .449088E-01 aline .126916 .497901E-01 aline .127892 .507664E-01 aline .127892 .585766E-01 aline .128869 .595529E-01 aline .128869 .104462 bezier .127097 .117399 .125385 .137422 .108367 .140584 aline .10739 .14156 aline .927463E-01 .14156 aline .917701E-01 .140584 closepath ! end of curve fill dfont endchar dfont char="7" !-------------- Beginning of new char. dfont wid=.550003 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .16792 .242117 aline .169872 .24114 aline .171825 .240164 aline .174754 .237235 aline .176706 .23333 aline .176706 .216734 bezier .133302 .162936 .103439 .926168E-01 .101533 .244069E-01 aline .100557 .234307E-01 aline .100557 .390511E-02 aline .098604 0 aline .956752E-01 -.292883E-02 aline .917701E-01 -.488139E-02 aline .605292E-01 -.488139E-02 aline .566241E-01 -.292883E-02 aline .536952E-01 0 aline .517427E-01 .390511E-02 bezier .497363E-01 .764972E-01 .794113E-01 .151715 .129845 .205018 aline .128869 .205994 aline .995803E-01 .205994 aline .098604 .205018 aline .263595E-01 .205018 aline .224544E-01 .206971 aline .195255E-01 .2099 aline .017573 .213805 aline .017573 .23333 aline .195255E-01 .237235 aline .224544E-01 .240164 aline .244069E-01 .24114 aline .263595E-01 .242117 closepath ! end of curve fill dfont endchar dfont char="8" !-------------- Beginning of new char. dfont wid=.550003 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .109343 .249927 bezier .132269 .248505 .158547 .23683 .166943 .212828 bezier .175323 .187899 .175462 .155115 .151323 .138631 aline .147418 .136679 aline .146442 .135703 aline .144489 .134726 aline .14156 .13375 aline .139608 .132774 aline .134336 .131016 aline .133994 .130333 bezier .155869 .123895 .176044 .1044 .17573 .800547E-01 bezier .180937 .486497E-01 .168746 .902309E-02 .135703 -.292883E-02 bezier .106709 -.117695E-01 .741375E-01 -.122019E-01 .468613E-01 .292883E-02 bezier .189671E-01 .215059E-01 .137549E-01 .595899E-01 .195255E-01 .898175E-01 bezier .239663E-01 .110144 .414595E-01 .124427 .602851E-01 .130333 bezier .419591E-01 .136201 .234271E-01 .151706 .234307E-01 .172801 bezier .183841E-01 .199938 .301997E-01 .233826 .585766E-01 .244069 aline .673631E-01 .246998 aline .712682E-01 .247974 aline .761496E-01 .247974 aline .771259E-01 .248951 aline .839598E-01 .248951 aline .849361E-01 .249927 aline .109343 .249927 closepath ! end of curve ! start of curve amove .878649E-01 .218686 aline .829836E-01 .21771 aline .800547E-01 .216734 aline .761496E-01 .214781 aline .712682E-01 .2099 bezier .640118E-01 .193846 .065029 .173734 .693157E-01 .157181 bezier .763504E-01 .140626 .988009E-01 .140052 .113248 .145465 aline .119106 .148394 aline .122035 .151323 aline .124963 .157181 bezier .12925 .173734 .130267 .193846 .123011 .2099 aline .11813 .214781 aline .114224 .216734 aline .111296 .21771 aline .106414 .218686 aline .105438 .219662 aline .888412E-01 .219662 closepath ! end of curve ! start of curve amove .898175E-01 .117153 aline .849361E-01 .116177 bezier .710355E-01 .113476 .669548E-01 .981494E-01 .654106E-01 .868887E-01 aline .654106E-01 .536952E-01 bezier .067249 .429914E-01 .705997E-01 .281354E-01 .839598E-01 .253832E-01 bezier .100128 .195792E-01 .125467 .250475E-01 .126916 .045885 aline .127892 .468613E-01 aline .127892 .052719 aline .128869 .536952E-01 aline .128869 .868887E-01 bezier .127323 .981485E-01 .123244 .113476 .109343 .116177 aline .104462 .117153 aline .103485 .11813 aline .907938E-01 .11813 closepath ! end of curve fill dfont endchar dfont char="9" !-------------- Beginning of new char. dfont wid=.550003 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .108367 .249927 bezier .134126 .247214 .157175 .228835 .165967 .204042 aline .170849 .189398 aline .171825 .185493 aline .173777 .17573 aline .173777 .170849 aline .174754 .169872 aline .174754 .162062 aline .17573 .161086 aline .17573 .148394 aline .176706 .147418 aline .176706 .100557 bezier .174618 .669869E-01 .165175 .260313E-01 .13375 .585766E-02 bezier .102637 -.141333E-01 .571152E-01 -.160074E-01 .292883E-01 .010739 aline .292883E-01 .136679E-01 aline .331934E-01 .214781E-01 aline .341697E-01 .224544E-01 aline .361223E-01 .263595E-01 aline .370985E-01 .273358E-01 aline .400274E-01 .331934E-01 aline .410036E-01 .341697E-01 aline .419799E-01 .361223E-01 aline .439325E-01 .380748E-01 aline .478376E-01 .380748E-01 bezier .069314 .118485E-01 .117916 .230692E-01 .123011 .576004E-01 bezier .127989 .072927 .128263 .882041E-01 .128869 .104462 aline .127892 .105438 bezier .120904 .883094E-01 .104519 .741289E-01 .859124E-01 .741971E-01 aline .849361E-01 .741971E-01 aline .839598E-01 .751733E-01 bezier .047334 .703346E-01 .176473E-01 .106 .185493E-01 .140584 aline .017573 .14156 aline .017573 .177682 aline .185493E-01 .178659 bezier .173478E-01 .214434 .489129E-01 .248927 .849361E-01 .249927 aline .108367 .249927 closepath ! end of curve ! start of curve amove .907938E-01 .218686 bezier .768044E-01 .217954 .684651E-01 .205301 .673631E-01 .192327 aline .663868E-01 .19135 aline .663868E-01 .182564 aline .654106E-01 .181588 aline .654106E-01 .137655 bezier .674172E-01 .124542 .685856E-01 .1036 .859124E-01 .100557 bezier .103245 .094426 .120335 .10879 .123987 .12594 aline .124963 .129845 bezier .130285 .147709 .127484 .165774 .126916 .184516 bezier .124147 .197325 .119757 .216112 .103485 .218686 aline .102509 .219662 aline .917701E-01 .219662 aline .907938E-01 .218686 closepath ! end of curve fill dfont endchar dfont char=":" !-------------- Beginning of new char. dfont wid=.305557 hei=.458333 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .751733E-01 .159133 aline .771259E-01 .157181 aline .771259E-01 .116177 aline .751733E-01 .114224 aline .341697E-01 .114224 aline .322171E-01 .116177 aline .322171E-01 .156204 aline .331934E-01 .158157 aline .035146 .159133 aline .751733E-01 .159133 closepath ! end of curve ! start of curve amove .751733E-01 .439325E-01 aline .771259E-01 .419799E-01 aline .771259E-01 .976277E-03 aline .751733E-01 -.976277E-03 aline .035146 -.976277E-03 aline .331934E-01 0 aline .322171E-01 .195255E-02 aline .322171E-01 .419799E-01 aline .341697E-01 .439325E-01 aline .751733E-01 .439325E-01 closepath ! end of curve fill dfont endchar dfont char=";" !-------------- Beginning of new char. dfont wid=.305557 hei=.458333 dep=.105556 italic=0 set path ! start of curve newpath ! start of curve amove .751733E-01 .159133 aline .771259E-01 .157181 aline .771259E-01 .116177 aline .751733E-01 .114224 aline .341697E-01 .114224 aline .322171E-01 .116177 aline .322171E-01 .156204 aline .331934E-01 .158157 aline .035146 .159133 aline .751733E-01 .159133 closepath ! end of curve ! start of curve amove .751733E-01 .439325E-01 aline .771259E-01 .419799E-01 aline .771259E-01 .976277E-03 bezier .681818E-01 -.116049E-01 .614751E-01 -.265149E-01 .517427E-01 -.380748E-01 aline .035146 -.380748E-01 aline .331934E-01 -.370985E-01 aline .322171E-01 -.035146 bezier .346585E-01 -.237752E-01 .423035E-01 -.112362E-01 .439325E-01 -.976277E-03 aline .341697E-01 -.976277E-03 aline .322171E-01 .976277E-03 aline .322171E-01 .419799E-01 aline .341697E-01 .439325E-01 aline .751733E-01 .439325E-01 closepath ! end of curve fill dfont endchar dfont char="<" !-------------- Beginning of new char. dfont wid=.366669 hei=.5 dep=.194445 italic=0 set path ! start of curve newpath ! start of curve amove .790785E-01 .173777 aline .081031 .172801 aline .829836E-01 .171825 aline .859124E-01 .168896 aline .878649E-01 .164991 aline .878649E-01 .137655 aline .859124E-01 .13375 aline .829836E-01 .130821 aline .790785E-01 .128869 aline .517427E-01 .128869 aline .478376E-01 .130821 aline .449088E-01 .13375 aline .429562E-01 .137655 aline .429562E-01 .164015 aline .439325E-01 .166943 aline .449088E-01 .168896 aline .478376E-01 .171825 aline .497901E-01 .172801 aline .052719 .173777 closepath ! end of curve ! start of curve amove .081031 .104462 aline .829836E-01 .102509 aline .839598E-01 .100557 aline .839598E-01 .654106E-01 aline .849361E-01 .644343E-01 aline .849361E-01 .028312 aline .859124E-01 .273358E-01 aline .859124E-01 -.878649E-02 aline .868887E-01 -.976277E-02 aline .868887E-01 -.045885 aline .878649E-01 -.468613E-01 aline .878649E-01 -.673631E-01 aline .859124E-01 -.693157E-01 aline .045885 -.693157E-01 aline .439325E-01 -.683394E-01 aline .429562E-01 -.663868E-01 aline .429562E-01 -.468613E-01 aline .439325E-01 -.045885 aline .439325E-01 -.976277E-02 aline .449088E-01 -.878649E-02 aline .449088E-01 .273358E-01 aline .045885 .028312 aline .045885 .644343E-01 aline .468613E-01 .654106E-01 aline .468613E-01 .100557 aline .478376E-01 .102509 aline .497901E-01 .104462 aline .081031 .104462 closepath ! end of curve fill dfont endchar dfont char="=" !-------------- Beginning of new char. dfont wid=.85556 hei=.40625 dep=-.09375 italic=0 set path ! start of curve newpath ! start of curve amove .266524 .14156 bezier .281398 .140388 .283982 .117116 .269453 .113248 aline .322171E-01 .113248 aline .028312 .115201 aline .244069E-01 .119106 aline .234307E-01 .121058 aline .224544E-01 .123987 aline .224544E-01 .129845 aline .234307E-01 .132774 aline .244069E-01 .134726 aline .292883E-01 .139608 aline .312409E-01 .140584 aline .035146 .14156 closepath ! end of curve ! start of curve amove .269453 .595529E-01 bezier .283982 .556842E-01 .281398 .324134E-01 .266524 .312409E-01 aline .035146 .312409E-01 bezier .203524E-01 .324666E-01 .175956E-01 .554717E-01 .322171E-01 .595529E-01 closepath ! end of curve fill dfont endchar dfont char=">" !-------------- Beginning of new char. dfont wid=.519447 hei=.5 dep=.194445 italic=0 set path ! start of curve newpath ! start of curve amove .995803E-01 .173777 aline .101533 .172801 aline .103485 .171825 aline .106414 .168896 aline .108367 .164991 aline .108367 .137655 aline .106414 .13375 aline .103485 .130821 aline .995803E-01 .128869 aline .722445E-01 .128869 aline .683394E-01 .130821 aline .654106E-01 .13375 aline .063458 .137655 aline .063458 .164015 aline .644343E-01 .166943 aline .654106E-01 .168896 aline .683394E-01 .171825 aline .070292 .172801 aline .732208E-01 .173777 closepath ! end of curve ! start of curve amove .101533 .104462 aline .103485 .102509 aline .104462 .100557 bezier .104643 .781068E-01 .10313 .055942 .927463E-01 .035146 bezier .863931E-01 .206921E-01 .771855E-01 .80045E-02 .070292 -.585766E-02 aline .070292 -.010739 aline .693157E-01 -.117153E-01 aline .693157E-01 -.341697E-01 aline .070292 -.035146 aline .070292 -.400274E-01 bezier .753163E-01 -.520539E-01 .918908E-01 -.493174E-01 .101533 -.468613E-01 bezier .118815 -.441449E-01 .133936 -.349404E-01 .146442 -.234307E-01 aline .150347 -.234307E-01 aline .151323 -.244069E-01 aline .153276 -.028312 aline .155228 -.341697E-01 aline .156204 -.361223E-01 aline .159133 -.449088E-01 aline .160109 -.468613E-01 aline .161086 -.497901E-01 aline .161086 -.536952E-01 bezier .128582 -.730477E-01 .888699E-01 -.779001E-01 .052719 -.693157E-01 aline .410036E-01 -.063458 bezier .200058E-01 -.482432E-01 .190796E-01 -.185536E-01 .263595E-01 .390511E-02 bezier .356373E-01 .220957E-01 .564632E-01 .317789E-01 .615055E-01 .052719 aline .624817E-01 .546715E-01 aline .063458 .576004E-01 aline .654106E-01 .654106E-01 aline .663868E-01 .663868E-01 aline .663868E-01 .712682E-01 aline .673631E-01 .722445E-01 aline .673631E-01 .849361E-01 aline .683394E-01 .859124E-01 aline .683394E-01 .102509 aline .070292 .104462 aline .101533 .104462 closepath ! end of curve fill dfont endchar dfont char="?" !-------------- Beginning of new char. dfont wid=.519447 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .103485 .246022 bezier .1234 .244458 .148559 .23703 .157181 .215757 bezier .166639 .192126 .160113 .16068 .135703 .148394 bezier .120349 .135508 .108757 .118231 .104462 .098604 aline .104462 .722445E-01 aline .103485 .070292 aline .101533 .683394E-01 aline .070292 .683394E-01 aline .683394E-01 .070292 aline .683394E-01 .101533 bezier .723583E-01 .130258 .905841E-01 .155248 .110319 .17573 bezier .115815 .188281 .116326 .203788 .109343 .215757 bezier .849839E-01 .230207 .533957E-01 .216919 .370985E-01 .196232 aline .331934E-01 .196232 aline .322171E-01 .197208 aline .302646E-01 .201113 aline .028312 .206971 aline .273358E-01 .208923 aline .244069E-01 .21771 aline .234307E-01 .219662 aline .224544E-01 .222591 aline .224544E-01 .22552 bezier .339855E-01 .236782 .515529E-01 .241604 .673631E-01 .245046 aline .741971E-01 .245046 aline .751733E-01 .246022 aline .103485 .246022 closepath ! end of curve ! start of curve amove .995803E-01 .439325E-01 aline .101533 .429562E-01 aline .103485 .419799E-01 aline .106414 .390511E-01 aline .108367 .035146 aline .108367 .781022E-02 aline .106414 .390511E-02 aline .103485 .976277E-03 aline .995803E-01 -.976277E-03 aline .732208E-01 -.976277E-03 aline .070292 0 aline .683394E-01 .976277E-03 aline .654106E-01 .390511E-02 aline .644343E-01 .585766E-02 aline .063458 .878649E-02 aline .063458 .035146 aline .654106E-01 .390511E-01 aline .683394E-01 .419799E-01 aline .070292 .429562E-01 aline .722445E-01 .439325E-01 closepath ! end of curve fill dfont endchar dfont char="@" !-------------- Beginning of new char. dfont wid=.733337 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .163038 .246022 bezier .185065 .244168 .209398 .23426 .220639 .213805 bezier .232328 .194555 .23419 .17188 .236259 .151323 aline .236259 .10739 bezier .234951 .820811E-01 .220878 .533023E-01 .194279 .449088E-01 bezier .169885 .372839E-01 .142252 .373552E-01 .119106 .497901E-01 bezier .098822 .615217E-01 .894125E-01 .858926E-01 .878649E-01 .10739 bezier .867186E-01 .136015 .887005E-01 .168004 .113248 .187445 bezier .134103 .203585 .161394 .201649 .185493 .200137 bezier .177662 .216974 .156626 .224891 .139608 .220639 bezier .107807 .22027 .759885E-01 .197756 .693157E-01 .164991 bezier .597049E-01 .127907 .600353E-01 .862754E-01 .800547E-01 .517427E-01 bezier .100718 .209564E-01 .143382 .148392E-01 .17573 .224544E-01 aline .187445 .253832E-01 aline .196232 .028312 aline .198184 .292883E-01 aline .201113 .302646E-01 aline .206971 .331934E-01 aline .234307 .331934E-01 aline .236259 .312409E-01 bezier .235831 .214494E-01 .22292 .188185E-01 .216734 .126916E-01 bezier .178181 -.998786E-02 .131876 -.904718E-02 .907938E-01 .390511E-02 bezier .485224E-01 .176157E-01 .229804E-01 .622399E-01 .234307E-01 .104462 aline .224544E-01 .105438 aline .224544E-01 .135703 bezier .0244 .170376 .393912E-01 .210133 .722445E-01 .228449 bezier .100217 .244887 .131793 .24673 .163038 .246022 closepath ! end of curve ! start of curve amove .157181 .17573 bezier .136442 .173603 .130864 .149705 .128869 .13375 bezier .128986 .111297 .126864 .869114E-01 .144489 .070292 bezier .161439 .569808E-01 .188195 .068427 .19135 .898175E-01 aline .192327 .927463E-01 bezier .197004 .1159 .197946 .143298 .185493 .164991 aline .179635 .170849 aline .177682 .171825 aline .176706 .172801 aline .174754 .173777 aline .171825 .174754 aline .166943 .17573 aline .165967 .176706 aline .158157 .176706 aline .157181 .17573 closepath ! end of curve fill dfont endchar dfont char="A" !-------------- Beginning of new char. dfont wid=.733337 hei=.694445 dep=0 italic=0 dfont fby="C" kadd=-.0305557 dfont fby="G" kadd=-.0305557 dfont fby="O" kadd=-.0305557 dfont fby="Q" kadd=-.0305557 dfont fby="T" kadd=-.0916672 dfont fby="U" kadd=-.0305557 dfont fby="V" kadd=-.122223 dfont fby="W" kadd=-.122223 dfont fby="Y" kadd=-.0916672 dfont fby="t" kadd=-.0305557 set path ! start of curve newpath ! start of curve amove .152299 .242117 aline .155228 .24114 aline .159133 .239188 aline .164015 .234307 bezier .19155 .160272 .216434 .851374E-01 .243093 .010739 aline .243093 .585766E-02 aline .24114 .195255E-02 aline .240164 .976277E-03 aline .236259 -.976277E-03 aline .203066 -.976277E-03 bezier .187636 .295117E-02 .18736 .210945E-01 .181588 .331934E-01 aline .17573 .507664E-01 aline .174754 .517427E-01 aline .771259E-01 .517427E-01 aline .712682E-01 .341697E-01 bezier .065266 .216933E-01 .649963E-01 .241878E-02 .488139E-01 -.976277E-03 aline .224544E-01 -.976277E-03 aline .185493E-01 .976277E-03 aline .017573 .195255E-02 aline .156204E-01 .585766E-02 bezier .218868E-01 .035045 .352889E-01 .062923 .439325E-01 .917701E-01 bezier .612987E-01 .139098 .765863E-01 .187288 .946989E-01 .234307 aline .995803E-01 .239188 aline .103485 .24114 aline .106414 .242117 closepath ! end of curve ! start of curve amove .124963 .195255 aline .123987 .19135 aline .123011 .187445 aline .121058 .181588 aline .120082 .177682 aline .946989E-01 .101533 aline .937226E-01 .995803E-01 aline .881904E-01 .829836E-01 aline .888412E-01 .081031 aline .164015 .081031 aline .164747 .824954E-01 aline .164015 .839598E-01 aline .159133 .098604 aline .158157 .100557 aline .143513 .144489 aline .142536 .146442 aline .14156 .14937 aline .140584 .153276 aline .131797 .179635 aline .130821 .18354 aline .128869 .189398 aline .126916 .197208 aline .12594 .199161 closepath ! end of curve fill dfont endchar dfont char="B" !-------------- Beginning of new char. dfont wid=.733337 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .148394 .242117 bezier .175687 .240528 .210387 .231336 .221615 .202089 bezier .230343 .179728 .225125 .151669 .204042 .137655 aline .190374 .130821 aline .181588 .127892 aline .17824 .127055 aline .177927 .126428 bezier .203868 .121732 .234493 .10518 .235283 .751733E-01 bezier .24127 .465632E-01 .223124 .146638E-01 .194279 .585766E-02 aline .188421 .390511E-02 aline .180611 .195255E-02 aline .17573 .976277E-03 aline .169872 .976277E-03 aline .168896 0 aline .159133 0 aline .158157 -.976277E-03 aline .429562E-01 -.976277E-03 aline .400274E-01 0 aline .380748E-01 .976277E-03 aline .035146 .390511E-02 aline .341697E-01 .585766E-02 aline .331934E-01 .878649E-02 aline .331934E-01 .232354 aline .341697E-01 .235283 aline .035146 .237235 aline .380748E-01 .240164 aline .400274E-01 .24114 aline .429562E-01 .242117 aline .148394 .242117 closepath ! end of curve ! start of curve amove .820073E-01 .211852 aline .820073E-01 .138631 aline .829836E-01 .137655 aline .132774 .137655 bezier .151439 .139707 .176048 .149033 .177682 .171825 bezier .183037 .189926 .166738 .207785 .148394 .2099 aline .143513 .210876 aline .142536 .211852 aline .135703 .211852 aline .134726 .212828 aline .829836E-01 .212828 aline .820073E-01 .211852 closepath ! end of curve ! start of curve amove .820073E-01 .112272 aline .820073E-01 .292883E-01 aline .829836E-01 .028312 aline .143513 .028312 bezier .161342 .305018E-01 .185574 .038356 .187445 .605292E-01 bezier .192784 .825185E-01 .175668 .107326 .152299 .110319 aline .147418 .111296 aline .146442 .112272 aline .139608 .112272 aline .138631 .113248 aline .829836E-01 .113248 aline .820073E-01 .112272 closepath ! end of curve fill dfont endchar dfont char="C" !-------------- Beginning of new char. dfont wid=.702782 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .166943 .249927 bezier .185232 .247677 .206746 .245258 .223567 .235283 bezier .222691 .222388 .219295 .210304 .21771 .197208 aline .216734 .194279 aline .215757 .192327 bezier .206323 .192154 .200839 .202578 .192327 .205994 bezier .160455 .221846 .118145 .219459 .927463E-01 .192327 bezier .708912E-01 .162677 .713226E-01 .124123 .751733E-01 .898175E-01 bezier .802582E-01 .645407E-01 .940241E-01 .374963E-01 .121058 .302646E-01 bezier .153469 .198671E-01 .191041 .250901E-01 .21771 .478376E-01 aline .219662 .488139E-01 aline .222591 .488139E-01 aline .224544 .468613E-01 aline .224544 .410036E-01 aline .22552 .400274E-01 aline .22552 .312409E-01 aline .226496 .302646E-01 aline .226496 .214781E-01 aline .227473 .205018E-01 aline .227473 .126916E-01 bezier .210225 .199515E-03 .188284 -.745828E-02 .16792 -.878649E-02 aline .135703 -.878649E-02 bezier .100661 -.677557E-02 .595873E-01 .756128E-02 .410036E-01 .410036E-01 bezier .284013E-01 .596883E-01 .02458 .083522 .224544E-01 .104462 aline .224544E-01 .136679 bezier .242947E-01 .172722 .397261E-01 .213419 .732208E-01 .232354 bezier .924021E-01 .243995 .11511 .247875 .135703 .249927 aline .166943 .249927 closepath ! end of curve fill dfont endchar dfont char="D" !-------------- Beginning of new char. dfont wid=.794449 hei=.694445 dep=0 italic=0 dfont fby="A" kadd=-.0305557 dfont fby="V" kadd=-.0305557 dfont fby="W" kadd=-.0305557 dfont fby="X" kadd=-.0305557 dfont fby="Y" kadd=-.0305557 set path ! start of curve newpath ! start of curve amove .153276 .242117 bezier .175542 .24011 .20085 .234693 .219662 .219662 bezier .244849 .199048 .256783 .165793 .256761 .134726 aline .257737 .13375 aline .257737 .103485 bezier .255344 .789375E-01 .249528 .501209E-01 .230401 .312409E-01 bezier .212268 .916898E-02 .180919 .120402E-02 .154252 -.976277E-03 aline .429562E-01 -.976277E-03 aline .400274E-01 0 aline .380748E-01 .976277E-03 aline .035146 .390511E-02 aline .341697E-01 .585766E-02 aline .331934E-01 .878649E-02 aline .331934E-01 .232354 aline .341697E-01 .235283 aline .035146 .237235 aline .380748E-01 .240164 aline .400274E-01 .24114 aline .429562E-01 .242117 aline .153276 .242117 closepath ! end of curve ! start of curve amove .829836E-01 .211852 aline .829836E-01 .292883E-01 aline .839598E-01 .028312 aline .139608 .028312 bezier .162144 .305087E-01 .19031 .401736E-01 .199161 .644343E-01 aline .201113 .683394E-01 aline .203066 .741971E-01 aline .204042 .781022E-01 aline .205018 .829836E-01 aline .205994 .839598E-01 aline .205994 .888412E-01 aline .206971 .898175E-01 aline .206971 .995803E-01 aline .207947 .100557 aline .207947 .137655 bezier .206071 .163716 .195958 .196972 .166943 .205994 aline .164991 .206971 aline .162062 .207947 aline .154252 .2099 aline .153276 .210876 aline .148394 .210876 aline .147418 .211852 aline .140584 .211852 aline .139608 .212828 aline .839598E-01 .212828 aline .829836E-01 .211852 closepath ! end of curve fill dfont endchar dfont char="E" !-------------- Beginning of new char. dfont wid=.64167 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .195255 .24114 aline .197208 .240164 aline .199161 .239188 aline .202089 .236259 aline .204042 .232354 aline .204042 .213805 aline .202089 .2099 aline .199161 .206971 aline .195255 .205018 aline .157181 .205018 aline .156204 .205994 aline .907938E-01 .205994 aline .898175E-01 .206971 aline .849361E-01 .206971 aline .839598E-01 .205994 aline .839598E-01 .14156 aline .849361E-01 .140584 aline .184516 .140584 aline .188421 .138631 aline .19135 .135703 aline .193303 .131797 aline .193303 .117153 aline .19135 .113248 aline .188421 .110319 aline .184516 .108367 aline .849361E-01 .108367 aline .839598E-01 .10739 aline .839598E-01 .361223E-01 aline .849361E-01 .035146 aline .907938E-01 .035146 aline .917701E-01 .361223E-01 aline .160109 .361223E-01 aline .161086 .370985E-01 aline .200137 .370985E-01 aline .204042 .035146 aline .206971 .322171E-01 aline .208923 .028312 aline .208923 .781022E-02 aline .206971 .390511E-02 aline .204042 .976277E-03 aline .200137 -.976277E-03 aline .429562E-01 -.976277E-03 aline .400274E-01 0 aline .380748E-01 .976277E-03 aline .035146 .390511E-02 aline .341697E-01 .585766E-02 aline .331934E-01 .878649E-02 aline .331934E-01 .231378 aline .341697E-01 .234307 aline .035146 .236259 aline .380748E-01 .239188 aline .400274E-01 .240164 aline .429562E-01 .24114 closepath ! end of curve fill dfont endchar dfont char="F" !-------------- Beginning of new char. dfont wid=.611115 hei=.694445 dep=0 italic=0 dfont fby="A" kadd=-.0916672 dfont fby="C" kadd=-.0305557 dfont fby="G" kadd=-.0305557 dfont fby="O" kadd=-.0305557 dfont fby="Q" kadd=-.0305557 dfont fby="a" kadd=-.0305557 dfont fby="e" kadd=-.0305557 dfont fby="o" kadd=-.0305557 dfont fby="r" kadd=-.0305557 dfont fby="u" kadd=-.0305557 set path ! start of curve newpath ! start of curve amove .189398 .24114 aline .19135 .240164 aline .193303 .239188 aline .196232 .236259 aline .198184 .232354 aline .198184 .213805 aline .196232 .2099 aline .193303 .206971 aline .189398 .205018 aline .153276 .205018 aline .152299 .205994 aline .898175E-01 .205994 aline .868887E-01 .20658 aline .839598E-01 .205994 aline .839598E-01 .137655 aline .849361E-01 .136679 aline .173777 .136679 aline .177682 .134726 aline .180611 .131797 aline .182564 .127892 aline .182564 .113248 aline .180611 .109343 aline .177682 .106414 aline .173777 .104462 aline .849361E-01 .104462 aline .839598E-01 .103485 aline .839598E-01 .781022E-02 aline .820073E-01 .390511E-02 aline .790785E-01 .976277E-03 aline .751733E-01 -.976277E-03 aline .429562E-01 -.976277E-03 aline .400274E-01 0 aline .380748E-01 .976277E-03 aline .035146 .390511E-02 aline .341697E-01 .585766E-02 aline .331934E-01 .878649E-02 aline .331934E-01 .231378 aline .341697E-01 .234307 aline .035146 .236259 aline .380748E-01 .239188 aline .400274E-01 .240164 aline .429562E-01 .24114 closepath ! end of curve fill dfont endchar dfont char="G" !-------------- Beginning of new char. dfont wid=.733337 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .165967 .249927 bezier .186756 .247952 .210063 .242386 .228449 .230401 bezier .227572 .217507 .224177 .205423 .222591 .192327 aline .221615 .189398 aline .220639 .187445 aline .215757 .187445 bezier .185051 .222445 .125313 .226529 .927463E-01 .192327 bezier .708912E-01 .162677 .713226E-01 .124123 .751733E-01 .898175E-01 bezier .802582E-01 .645407E-01 .940241E-01 .374963E-01 .121058 .302646E-01 bezier .142234 .233542E-01 .164653 .240278E-01 .185493 .302646E-01 aline .185493 .790785E-01 aline .184516 .800547E-01 aline .153276 .800547E-01 aline .151323 .820073E-01 aline .151323 .109343 aline .152299 .111296 aline .154252 .112272 aline .230401 .112272 aline .232354 .110319 aline .232354 .010739 bezier .202668 -.645338E-02 .16912 -.971846E-02 .135703 -.878649E-02 bezier .100661 -.677557E-02 .595873E-01 .756128E-02 .410036E-01 .410036E-01 bezier .284013E-01 .596883E-01 .02458 .083522 .224544E-01 .104462 aline .224544E-01 .136679 bezier .242947E-01 .172722 .397261E-01 .213419 .732208E-01 .232354 bezier .924021E-01 .243995 .11511 .247875 .135703 .249927 aline .165967 .249927 closepath ! end of curve fill dfont endchar dfont char="H" !-------------- Beginning of new char. dfont wid=.794449 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .751733E-01 .242117 aline .771259E-01 .24114 aline .790785E-01 .240164 aline .820073E-01 .237235 aline .839598E-01 .23333 aline .839598E-01 .142536 aline .849361E-01 .14156 aline .195255 .14156 aline .196232 .142536 aline .196232 .23333 aline .198184 .237235 aline .201113 .240164 aline .205018 .242117 aline .238212 .242117 aline .242117 .240164 aline .245046 .237235 aline .246998 .23333 aline .246998 .781022E-02 aline .245046 .390511E-02 aline .242117 .976277E-03 aline .238212 -.976277E-03 aline .205018 -.976277E-03 aline .201113 .976277E-03 aline .198184 .390511E-02 aline .196232 .781022E-02 aline .196232 .108367 aline .195255 .109343 aline .849361E-01 .109343 aline .839598E-01 .108367 aline .839598E-01 .781022E-02 aline .820073E-01 .390511E-02 aline .790785E-01 .976277E-03 aline .751733E-01 -.976277E-03 aline .429562E-01 -.976277E-03 aline .400274E-01 0 aline .380748E-01 .976277E-03 aline .035146 .390511E-02 aline .341697E-01 .585766E-02 aline .331934E-01 .878649E-02 aline .331934E-01 .232354 aline .341697E-01 .235283 aline .035146 .237235 aline .380748E-01 .240164 aline .400274E-01 .24114 aline .429562E-01 .242117 closepath ! end of curve fill dfont endchar dfont char="I" !-------------- Beginning of new char. dfont wid=.330557 hei=.694445 dep=0 italic=0 dfont fby="I" kadd=.0305557 set path ! start of curve newpath ! start of curve amove .751733E-01 .242117 aline .771259E-01 .24114 aline .790785E-01 .240164 aline .820073E-01 .237235 aline .839598E-01 .23333 aline .839598E-01 .781022E-02 aline .820073E-01 .390511E-02 aline .790785E-01 .976277E-03 aline .751733E-01 -.976277E-03 aline .429562E-01 -.976277E-03 aline .400274E-01 0 aline .380748E-01 .976277E-03 aline .035146 .390511E-02 aline .341697E-01 .585766E-02 aline .331934E-01 .878649E-02 aline .331934E-01 .232354 aline .341697E-01 .235283 aline .035146 .237235 aline .380748E-01 .240164 aline .400274E-01 .24114 aline .429562E-01 .242117 closepath ! end of curve fill dfont endchar dfont char="J" !-------------- Beginning of new char. dfont wid=.519447 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .14156 .242117 aline .143513 .24114 aline .145465 .240164 aline .148394 .237235 aline .150347 .23333 aline .150347 .410036E-01 bezier .147903 .144324E-01 .122697 -.77876E-02 .956752E-01 -.781022E-02 bezier .069557 -.109416E-01 .409965E-01 -.607789E-02 .017573 .781022E-02 bezier .184855E-01 .203611E-01 .216955E-01 .032214 .234307E-01 .449088E-01 aline .253832E-01 .468613E-01 aline .302646E-01 .468613E-01 bezier .043294 .244937E-01 .807073E-01 .01625 .976277E-01 .380748E-01 aline .098604 .410036E-01 aline .995803E-01 .449088E-01 aline .100557 .045885 aline .100557 .23333 aline .102509 .237235 aline .105438 .240164 aline .10739 .24114 aline .109343 .242117 closepath ! end of curve fill dfont endchar dfont char="K" !-------------- Beginning of new char. dfont wid=.763893 hei=.694445 dep=0 italic=0 dfont fby="C" kadd=-.0305557 dfont fby="G" kadd=-.0305557 dfont fby="O" kadd=-.0305557 dfont fby="Q" kadd=-.0305557 set path ! start of curve newpath ! start of curve amove .693157E-01 .242117 aline .712682E-01 .24114 aline .732208E-01 .240164 aline .761496E-01 .237235 aline .781022E-01 .23333 aline .781022E-01 .129845 aline .795666E-01 .129113 bezier .119012 .165483 .157667 .202951 .197208 .239188 aline .201113 .24114 aline .205018 .242117 aline .24114 .242117 aline .242117 .24114 aline .244069 .240164 aline .245046 .238212 aline .245046 .232354 bezier .213749 .201242 .180331 .171437 .148394 .140584 bezier .181737 .969956E-01 .214319 .528543E-01 .246998 .878649E-02 aline .246998 .488139E-02 aline .245046 .976277E-03 aline .243093 0 aline .242117 -.976277E-03 aline .205994 -.976277E-03 bezier .192959 .45419E-02 .188256 .197621E-01 .178659 .292883E-01 bezier .158908 .569296E-01 .138033 .840624E-01 .117641 .111052 aline .116177 .110319 aline .110319 .104462 aline .108367 .103485 aline .937226E-01 .888412E-01 aline .917701E-01 .878649E-01 aline .781022E-01 .741971E-01 aline .781022E-01 .781022E-02 aline .761496E-01 .390511E-02 aline .732208E-01 .976277E-03 aline .693157E-01 -.976277E-03 aline .429562E-01 -.976277E-03 aline .400274E-01 0 aline .380748E-01 .976277E-03 aline .035146 .390511E-02 aline .341697E-01 .585766E-02 aline .331934E-01 .878649E-02 aline .331934E-01 .232354 aline .341697E-01 .235283 aline .035146 .237235 aline .380748E-01 .240164 aline .400274E-01 .24114 aline .429562E-01 .242117 aline .693157E-01 .242117 closepath ! end of curve fill dfont endchar dfont char="L" !-------------- Beginning of new char. dfont wid=.580559 hei=.694445 dep=0 italic=0 dfont fby="T" kadd=-.0916672 dfont fby="V" kadd=-.122223 dfont fby="W" kadd=-.122223 dfont fby="Y" kadd=-.0916672 set path ! start of curve newpath ! start of curve amove .751733E-01 .242117 aline .771259E-01 .24114 aline .790785E-01 .240164 aline .820073E-01 .237235 aline .839598E-01 .23333 aline .839598E-01 .341697E-01 aline .849361E-01 .331934E-01 aline .898175E-01 .331934E-01 aline .907938E-01 .341697E-01 aline .156204 .341697E-01 aline .157181 .035146 aline .177682 .035146 aline .180611 .341697E-01 aline .181588 .331934E-01 aline .18354 .322171E-01 aline .184516 .312409E-01 aline .185493 .292883E-01 aline .186469 .028312 aline .187445 .253832E-01 aline .187445 .781022E-02 aline .185493 .390511E-02 aline .182564 .976277E-03 aline .178659 -.976277E-03 aline .429562E-01 -.976277E-03 aline .400274E-01 0 aline .380748E-01 .976277E-03 aline .035146 .390511E-02 aline .341697E-01 .585766E-02 aline .331934E-01 .878649E-02 aline .331934E-01 .232354 aline .341697E-01 .235283 aline .035146 .237235 aline .380748E-01 .240164 aline .400274E-01 .24114 aline .429562E-01 .242117 closepath ! end of curve fill dfont endchar dfont char="M" !-------------- Beginning of new char. dfont wid=.977783 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .868887E-01 .242117 bezier .104046 .237167 .104755 .216451 .112272 .203066 bezier .132985 .152714 .15429 .997823E-01 .172941 .050348 bezier .193577 .112616 .220418 .172603 .245046 .23333 aline .250903 .239188 aline .254808 .24114 aline .257737 .242117 aline .302646 .242117 aline .306551 .240164 aline .30948 .237235 aline .311432 .23333 aline .311432 .781022E-02 aline .30948 .390511E-02 aline .306551 .976277E-03 aline .302646 -.976277E-03 aline .278239 -.976277E-03 aline .274334 .976277E-03 aline .271405 .390511E-02 aline .269453 .781022E-02 aline .269453 .198184 aline .268476 .199161 bezier .246133 .136377 .220817 .745315E-01 .194279 .136679E-01 aline .192327 .117153E-01 aline .190374 .010739 aline .189398 .976277E-02 aline .185493 .781022E-02 bezier .171435 .561028E-02 .150059 .392068E-02 .145465 .214781E-01 bezier .121571 .803677E-01 .957341E-01 .138547 .761496E-01 .199161 aline .751733E-01 .198184 aline .751733E-01 .781022E-02 aline .732208E-01 .390511E-02 aline .070292 .976277E-03 aline .663868E-01 -.976277E-03 aline .429562E-01 -.976277E-03 aline .400274E-01 0 aline .380748E-01 .976277E-03 aline .035146 .390511E-02 aline .341697E-01 .585766E-02 aline .331934E-01 .878649E-02 aline .331934E-01 .232354 aline .341697E-01 .235283 aline .035146 .237235 aline .380748E-01 .240164 aline .400274E-01 .24114 aline .429562E-01 .242117 closepath ! end of curve fill dfont endchar dfont char="N" !-------------- Beginning of new char. dfont wid=.794449 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .898175E-01 .242117 aline .937226E-01 .24114 aline .976277E-01 .239188 aline .098604 .238212 aline .100557 .237235 aline .104462 .23333 aline .10739 .227473 aline .108367 .226496 aline .123011 .197208 aline .123987 .196232 aline .138631 .166943 aline .139608 .165967 aline .154252 .136679 aline .155228 .135703 aline .170849 .104462 aline .171825 .103485 aline .186469 .741971E-01 aline .187445 .732208E-01 aline .202089 .439325E-01 aline .203066 .429562E-01 aline .204042 .410036E-01 aline .205018 .419799E-01 aline .205018 .23333 aline .206971 .237235 aline .2099 .240164 aline .213805 .242117 aline .238212 .242117 aline .242117 .240164 aline .245046 .237235 aline .246998 .23333 aline .246998 .781022E-02 aline .245046 .390511E-02 aline .242117 .976277E-03 aline .238212 -.976277E-03 aline .190374 -.976277E-03 aline .186469 0 aline .182564 .195255E-02 aline .181588 .292883E-02 aline .179635 .390511E-02 aline .17573 .781022E-02 aline .172801 .136679E-01 aline .171825 .146442E-01 aline .157181 .439325E-01 aline .156204 .449088E-01 aline .14156 .741971E-01 aline .140584 .751733E-01 aline .12594 .104462 aline .124963 .105438 aline .109343 .136679 aline .108367 .137655 aline .937226E-01 .166943 aline .927463E-01 .16792 aline .781022E-01 .197208 aline .771259E-01 .198184 aline .761496E-01 .200137 aline .751733E-01 .199161 aline .751733E-01 .781022E-02 aline .732208E-01 .390511E-02 aline .070292 .976277E-03 aline .663868E-01 -.976277E-03 aline .429562E-01 -.976277E-03 aline .400274E-01 0 aline .380748E-01 .976277E-03 aline .035146 .390511E-02 aline .341697E-01 .585766E-02 aline .331934E-01 .878649E-02 aline .331934E-01 .232354 aline .341697E-01 .235283 aline .035146 .237235 aline .380748E-01 .240164 aline .400274E-01 .24114 aline .429562E-01 .242117 aline .898175E-01 .242117 closepath ! end of curve fill dfont endchar dfont char="O" !-------------- Beginning of new char. dfont wid=.794449 hei=.694445 dep=0 italic=0 dfont fby="A" kadd=-.0305557 dfont fby="V" kadd=-.0305557 dfont fby="W" kadd=-.0305557 dfont fby="X" kadd=-.0305557 dfont fby="Y" kadd=-.0305557 set path ! start of curve newpath ! start of curve amove .153276 .249927 bezier .187259 .247971 .225321 .231923 .24114 .199161 bezier .253158 .17965 .255371 .155751 .257737 .134726 aline .257737 .102509 bezier .255848 .667954E-01 .242284 .247905E-01 .207947 .683394E-02 bezier .174143 -.012227 .13406 -.116956E-01 .976277E-01 -.390511E-02 bezier .546329E-01 .592832E-02 .025614 .475694E-01 .244069E-01 .907938E-01 aline .234307E-01 .917701E-01 aline .234307E-01 .101533 aline .224544E-01 .102509 aline .224544E-01 .134726 bezier .243408E-01 .170746 .367514E-01 .213856 .712682E-01 .23333 bezier .960719E-01 .249034 .125028 .250497 .153276 .249927 closepath ! end of curve ! start of curve amove .130821 .222591 bezier .104863 .221316 .833658E-01 .200131 .781022E-01 .174754 aline .761496E-01 .164991 aline .751733E-01 .164015 aline .751733E-01 .158157 aline .741971E-01 .157181 aline .741971E-01 .147418 aline .732208E-01 .146442 aline .732208E-01 .101533 bezier .756759E-01 .732134E-01 .834518E-01 .351163E-01 .115201 .234307E-01 bezier .145987 .972534E-02 .18825 .249334E-01 .198184 .595529E-01 bezier .203999 .735326E-01 .205133 .875231E-01 .206971 .101533 aline .206971 .146442 bezier .204585 .173134 .196025 .208755 .165967 .218686 aline .160109 .220639 aline .155228 .221615 aline .154252 .222591 aline .14937 .222591 aline .148394 .223567 aline .131797 .223567 aline .130821 .222591 closepath ! end of curve fill dfont endchar dfont char="P" !-------------- Beginning of new char. dfont wid=.702782 hei=.694445 dep=0 italic=0 dfont fby="," kadd=-.0916672 dfont fby="." kadd=-.0916672 dfont fby="A" kadd=-.0916672 dfont fby="a" kadd=-.0305557 dfont fby="e" kadd=-.0305557 dfont fby="o" kadd=-.0305557 set path ! start of curve newpath ! start of curve amove .14937 .242117 bezier .175803 .240601 .207938 .229542 .218686 .202089 bezier .228776 .177837 .22849 .149365 .215757 .12594 bezier .203354 .105162 .177842 .959902E-01 .155228 .937226E-01 aline .849361E-01 .937226E-01 aline .839598E-01 .927463E-01 aline .839598E-01 .781022E-02 aline .820073E-01 .390511E-02 aline .790785E-01 .976277E-03 aline .751733E-01 -.976277E-03 aline .429562E-01 -.976277E-03 aline .400274E-01 0 aline .380748E-01 .976277E-03 aline .035146 .390511E-02 aline .341697E-01 .585766E-02 aline .331934E-01 .878649E-02 aline .331934E-01 .232354 aline .341697E-01 .235283 aline .035146 .237235 aline .380748E-01 .240164 aline .400274E-01 .24114 aline .429562E-01 .242117 aline .14937 .242117 closepath ! end of curve ! start of curve amove .829836E-01 .211852 aline .829836E-01 .121058 aline .839598E-01 .120082 aline .136679 .120082 bezier .152452 .121866 .173224 .129297 .17573 .148394 bezier .180113 .168521 .179929 .198692 .156204 .207947 aline .150347 .2099 aline .145465 .210876 aline .144489 .211852 aline .138631 .211852 aline .137655 .212828 aline .839598E-01 .212828 aline .829836E-01 .211852 closepath ! end of curve fill dfont endchar dfont char="Q" !-------------- Beginning of new char. dfont wid=.794449 hei=.694445 dep=.105556 italic=0 set path ! start of curve newpath ! start of curve amove .153276 .249927 bezier .187259 .247971 .225321 .231923 .24114 .199161 bezier .253158 .17965 .255371 .155751 .257737 .134726 aline .257737 .102509 bezier .255766 .686144E-01 .243925 .289685E-01 .212828 .976277E-02 aline .210876 .781022E-02 bezier .220029 -.531166E-02 .232711 -.167468E-01 .239188 -.312409E-01 aline .238212 -.341697E-01 aline .235283 -.370985E-01 aline .23333 -.380748E-01 aline .19135 -.380748E-01 bezier .177738 -.329142E-01 .174783 -.015832 .164503 -.707801E-02 bezier .121837 -.131677E-01 .06856 -.563341E-02 .429562E-01 .341697E-01 bezier .286245E-01 .538391E-01 .246351E-01 .798528E-01 .224544E-01 .102509 aline .224544E-01 .134726 bezier .243408E-01 .170746 .367514E-01 .213856 .712682E-01 .23333 bezier .960719E-01 .249034 .125028 .250497 .153276 .249927 closepath ! end of curve ! start of curve amove .130821 .222591 bezier .108553 .220718 .881161E-01 .205133 .081031 .18354 aline .781022E-01 .174754 aline .771259E-01 .170849 aline .751733E-01 .161086 aline .741971E-01 .160109 aline .741971E-01 .154252 aline .732208E-01 .153276 aline .732208E-01 .14156 aline .722445E-01 .140584 aline .722445E-01 .976277E-01 bezier .744974E-01 .697437E-01 .829929E-01 .327139E-01 .114224 .224544E-01 aline .120082 .205018E-01 aline .124963 .195255E-01 aline .12594 .185493E-01 aline .130821 .185493E-01 aline .131797 .017573 aline .147418 .017573 bezier .145707 .243579E-01 .137602 .324572E-01 .13375 .400274E-01 bezier .129228 .472748E-01 .117423 .568871E-01 .12594 .654106E-01 aline .127892 .663868E-01 aline .164015 .663868E-01 bezier .173457 .058654 .178966 .464964E-01 .187933 .383189E-01 bezier .200616 .502578E-01 .203237 .070355 .206971 .859124E-01 aline .206971 .966514E-01 aline .207947 .976277E-01 aline .207947 .140584 bezier .205452 .168446 .198357 .205565 .16792 .21771 aline .159133 .220639 aline .155228 .221615 aline .154252 .222591 aline .14937 .222591 aline .148394 .223567 aline .131797 .223567 aline .130821 .222591 closepath ! end of curve fill dfont endchar dfont char="R" !-------------- Beginning of new char. dfont wid=.702782 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .146442 .242117 bezier .175292 .240545 .211238 .229383 .221615 .198184 bezier .230859 .171988 .22494 .139131 .200137 .123011 aline .186469 .116177 aline .177682 .113248 aline .169872 .111296 bezier .190098 .766207E-01 .212086 .423277E-01 .230401 .683394E-02 aline .229425 .390511E-02 aline .228449 .195255E-02 aline .226496 0 aline .224544 -.976277E-03 aline .189398 -.976277E-03 bezier .177431 .492227E-02 .174826 .203214E-01 .166943 .302646E-01 bezier .152159 .564316E-01 .137641 .827924E-01 .122035 .108367 aline .839598E-01 .108367 aline .829836E-01 .10739 aline .829836E-01 .781022E-02 aline .081031 .390511E-02 aline .781022E-01 .976277E-03 aline .741971E-01 -.976277E-03 aline .429562E-01 -.976277E-03 aline .400274E-01 0 aline .380748E-01 .976277E-03 aline .035146 .390511E-02 aline .341697E-01 .585766E-02 aline .331934E-01 .878649E-02 aline .331934E-01 .232354 aline .341697E-01 .235283 aline .035146 .237235 aline .380748E-01 .240164 aline .400274E-01 .24114 aline .429562E-01 .242117 aline .146442 .242117 closepath ! end of curve ! start of curve amove .829836E-01 .211852 aline .829836E-01 .13375 aline .839598E-01 .132774 aline .139608 .132774 aline .140584 .13375 aline .147418 .13375 aline .148394 .134726 aline .152299 .135703 aline .158157 .137655 bezier .179328 .145625 .180777 .173101 .174754 .19135 bezier .170478 .206735 .152475 .210619 .139608 .212828 aline .839598E-01 .212828 aline .829836E-01 .211852 closepath ! end of curve fill dfont endchar dfont char="S" !-------------- Beginning of new char. dfont wid=.611115 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .122035 .249927 bezier .141577 .247891 .163611 .242444 .180611 .230401 bezier .179734 .217507 .176339 .205423 .174754 .192327 aline .173777 .189398 aline .172801 .187445 aline .16792 .187445 bezier .145934 .213796 .105924 .223367 .761496E-01 .206971 bezier .604781E-01 .194935 .628452E-01 .169315 .800547E-01 .160109 bezier .106507 .146505 .141086 .150109 .164015 .128869 bezier .201804 .101202 .203762 .387596E-01 .168896 .781022E-02 bezier .141445 -.126005E-01 .10566 -.104184E-01 .741971E-01 -.585766E-02 aline .624817E-01 -.292883E-02 aline .478376E-01 .195255E-02 aline .439325E-01 .390511E-02 aline .410036E-01 .488139E-02 aline .253832E-01 .126916E-01 aline .244069E-01 .136679E-01 aline .205018E-01 .156204E-01 aline .185493E-01 .017573 bezier .194265E-01 .304672E-01 .228211E-01 .425521E-01 .244069E-01 .556478E-01 aline .253832E-01 .585766E-01 aline .263595E-01 .605292E-01 aline .312409E-01 .605292E-01 bezier .583995E-01 .034404 .1003 .193196E-01 .135703 .341697E-01 bezier .156694 .476016E-01 .154231 .818936E-01 .131797 .927463E-01 bezier .103489 .104383 .683022E-01 .102478 .045885 .12594 bezier .261722E-01 .141438 .187905E-01 .169443 .234307E-01 .193303 bezier .272842E-01 .227134 .060545 .249996 .927463E-01 .248951 aline .937226E-01 .249927 aline .122035 .249927 closepath ! end of curve fill dfont endchar dfont char="T" !-------------- Beginning of new char. dfont wid=.733337 hei=.694445 dep=0 italic=0 dfont fby="A" kadd=-.0916672 dfont fby="a" kadd=-.0916672 dfont fby="e" kadd=-.0916672 dfont fby="o" kadd=-.0916672 dfont fby="r" kadd=-.0916672 dfont fby="u" kadd=-.0916672 dfont fby="y" kadd=-.0916672 set path ! start of curve newpath ! start of curve amove .235283 .240164 aline .237235 .239188 aline .239188 .238212 aline .242117 .235283 aline .244069 .231378 aline .244069 .212828 aline .242117 .208923 aline .239188 .205994 aline .235283 .204042 aline .205018 .204042 aline .204042 .205018 aline .156204 .205018 aline .155228 .204042 aline .155228 .781022E-02 aline .153276 .390511E-02 aline .150347 .976277E-03 aline .146442 -.976277E-03 aline .114224 -.976277E-03 aline .111296 0 aline .109343 .976277E-03 aline .106414 .390511E-02 aline .105438 .585766E-02 aline .104462 .878649E-02 aline .104462 .204042 aline .103485 .205018 aline .546715E-01 .205018 aline .536952E-01 .204042 aline .234307E-01 .204042 aline .195255E-01 .205994 aline .165967E-01 .208923 aline .146442E-01 .212828 aline .146442E-01 .230401 aline .156204E-01 .23333 aline .165967E-01 .235283 aline .195255E-01 .238212 aline .214781E-01 .239188 aline .244069E-01 .240164 closepath ! end of curve fill dfont endchar dfont char="U" !-------------- Beginning of new char. dfont wid=.763893 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .751733E-01 .242117 aline .771259E-01 .24114 aline .790785E-01 .240164 aline .820073E-01 .237235 aline .839598E-01 .23333 aline .839598E-01 .673631E-01 bezier .855742E-01 .509123E-01 .921911E-01 .295913E-01 .111296 .244069E-01 bezier .133368 .175436E-01 .161216 .182251E-01 .178659 .361223E-01 aline .179635 .380748E-01 aline .180611 .390511E-01 aline .184516 .468613E-01 aline .185493 .497901E-01 aline .186469 .536952E-01 aline .187445 .585766E-01 aline .188421 .595529E-01 aline .188421 .673631E-01 aline .189398 .683394E-01 aline .189398 .23333 aline .19135 .237235 aline .194279 .240164 aline .198184 .242117 aline .227473 .242117 aline .231378 .240164 aline .234307 .237235 aline .236259 .23333 aline .236259 .683394E-01 bezier .234275 .353381E-01 .211123 .350139E-02 .177682 -.390511E-02 aline .174754 -.488139E-02 aline .170849 -.585766E-02 aline .165967 -.683394E-02 aline .161086 -.683394E-02 aline .160109 -.781022E-02 aline .152299 -.781022E-02 aline .151323 -.878649E-02 aline .120082 -.878649E-02 bezier .891734E-01 -.708246E-02 .530831E-01 .751979E-02 .410036E-01 .390511E-01 aline .390511E-01 .429562E-01 aline .370985E-01 .488139E-01 aline .035146 .566241E-01 aline .341697E-01 .615055E-01 aline .341697E-01 .673631E-01 aline .331934E-01 .683394E-01 aline .331934E-01 .232354 aline .341697E-01 .235283 aline .035146 .237235 aline .380748E-01 .240164 aline .400274E-01 .24114 aline .429562E-01 .242117 closepath ! end of curve fill dfont endchar dfont char="V" !-------------- Beginning of new char. dfont wid=.733337 hei=.694445 dep=0 italic=.0152788 dfont fby="A" kadd=-.0916672 dfont fby="C" kadd=-.0305557 dfont fby="G" kadd=-.0305557 dfont fby="O" kadd=-.0305557 dfont fby="Q" kadd=-.0305557 dfont fby="a" kadd=-.0305557 dfont fby="e" kadd=-.0305557 dfont fby="o" kadd=-.0305557 dfont fby="r" kadd=-.0305557 dfont fby="u" kadd=-.0305557 set path ! start of curve newpath ! start of curve amove .507664E-01 .242117 bezier .673996E-01 .237339 .672959E-01 .217112 .741971E-01 .204042 bezier .934307E-01 .150047 .114514 .967225E-01 .131797 .419799E-01 bezier .153442 .106295 .176936 .170002 .201113 .23333 aline .206971 .239188 aline .210876 .24114 aline .213805 .242117 aline .242117 .242117 aline .244069 .24114 aline .246998 .238212 aline .247974 .236259 bezier .246851 .21928 .236953 .203862 .232354 .187445 bezier .209628 .127353 .188333 .666702E-01 .164991 .683394E-02 aline .161086 .292883E-02 aline .159133 .195255E-02 aline .158157 .976277E-03 aline .156204 0 aline .153276 -.976277E-03 aline .105438 -.976277E-03 bezier .873049E-01 .482303E-02 .880766E-01 .276289E-01 .800547E-01 .419799E-01 bezier .572033E-01 .104567 .034098 .167048 .010739 .229425 aline .010739 .236259 aline .117153E-01 .238212 aline .146442E-01 .24114 aline .165967E-01 .242117 closepath ! end of curve fill dfont endchar dfont char="W" !-------------- Beginning of new char. dfont wid=1.03889 hei=.694445 dep=0 italic=.0152788 dfont fby="A" kadd=-.0916672 dfont fby="C" kadd=-.0305557 dfont fby="G" kadd=-.0305557 dfont fby="O" kadd=-.0305557 dfont fby="Q" kadd=-.0305557 dfont fby="a" kadd=-.0305557 dfont fby="e" kadd=-.0305557 dfont fby="o" kadd=-.0305557 dfont fby="r" kadd=-.0305557 dfont fby="u" kadd=-.0305557 set path ! start of curve newpath ! start of curve amove .429562E-01 .242117 aline .045885 .24114 aline .478376E-01 .240164 aline .536952E-01 .234307 bezier .664172E-01 .194576 .755718E-01 .153505 .868887E-01 .113248 aline .098604 .663868E-01 aline .995803E-01 .615055E-01 aline .100557 .576004E-01 aline .102509 .478376E-01 aline .102509 .429562E-01 aline .103485 .419799E-01 aline .104462 .439325E-01 aline .105438 .449088E-01 aline .105438 .497901E-01 aline .106414 .546715E-01 aline .10739 .585766E-01 aline .108367 .063458 aline .122035 .11813 bezier .133473 .15732 .141244 .19822 .155228 .236259 aline .158157 .239188 aline .162062 .24114 aline .164991 .242117 aline .204042 .242117 aline .206971 .24114 aline .210876 .239188 aline .214781 .235283 bezier .229404 .189775 .239957 .142779 .252856 .966514E-01 aline .263595 .536952E-01 aline .265547 .439325E-01 aline .266524 .419799E-01 bezier .281782 .106504 .299011 .17067 .31729 .234307 aline .323148 .240164 aline .3251 .24114 aline .328029 .242117 aline .349507 .242117 aline .353412 .240164 aline .355365 .238212 aline .356341 .236259 bezier .354213 .211688 .344348 .1881 .338768 .164015 bezier .324505 .111617 .311256 .05883 .295812 .683394E-02 aline .289954 .976277E-03 aline .288002 0 aline .285073 -.976277E-03 aline .245046 -.976277E-03 bezier .230142 .225091E-02 .230837 .196963E-01 .226496 .312409E-01 bezier .215196 .738978E-01 .203694 .116496 .192327 .159133 aline .18354 .194279 aline .182672 .198618 aline .182076 .198916 aline .181479 .198618 aline .180611 .194279 aline .172801 .163038 bezier .157759 .110504 .146328 .563602E-01 .128869 .488139E-02 aline .126916 .292883E-02 aline .124963 .195255E-02 aline .123987 .976277E-03 aline .122035 0 aline .119106 -.976277E-03 aline .081031 -.976277E-03 aline .781022E-01 0 bezier .635407E-01 .921091E-02 .065704 .294377E-01 .595529E-01 .439325E-01 bezier .430868E-01 .105476 .264269E-01 .166963 .976277E-02 .228449 aline .976277E-02 .236259 aline .010739 .238212 aline .126916E-01 .240164 aline .146442E-01 .24114 aline .165967E-01 .242117 closepath ! end of curve fill dfont endchar dfont char="X" !-------------- Beginning of new char. dfont wid=.733337 hei=.694445 dep=0 italic=0 dfont fby="C" kadd=-.0305557 dfont fby="G" kadd=-.0305557 dfont fby="O" kadd=-.0305557 dfont fby="Q" kadd=-.0305557 set path ! start of curve newpath ! start of curve amove .683394E-01 .242117 bezier .081149 .236988 .856348E-01 .222185 .946989E-01 .212828 bezier .10516 .198574 .115164 .183451 .126428 .170116 bezier .144348 .191896 .158974 .216932 .176706 .239188 aline .178659 .240164 aline .179635 .24114 aline .182564 .242117 aline .223567 .242117 bezier .233109 .238049 .226555 .227526 .221615 .222591 bezier .198644 .190929 .175584 .159331 .152299 .127892 bezier .183205 .884178E-01 .214064 .489095E-01 .244069 .878649E-02 aline .244069 .390511E-02 aline .243093 .195255E-02 aline .24114 0 aline .239188 -.976277E-03 aline .195255 -.976277E-03 bezier .18367 .377409E-02 .179887 .175724E-01 .171825 .263595E-01 bezier .157009 .479479E-01 .141732 .692048E-01 .126916 .907938E-01 bezier .104946 .616782E-01 .871558E-01 .02955 .644343E-01 .976277E-03 aline .624817E-01 0 aline .595529E-01 -.976277E-03 aline .195255E-01 -.976277E-03 aline .017573 0 bezier .794899E-02 .709944E-02 .199523E-01 .157024E-01 .234307E-01 .224544E-01 bezier .494179E-01 .573996E-01 .746909E-01 .928608E-01 .100557 .127892 bezier .740287E-01 .163671 .445118E-01 .197623 .195255E-01 .234307 aline .195255E-01 .235283 aline .205018E-01 .238212 aline .234307E-01 .24114 aline .253832E-01 .242117 closepath ! end of curve fill dfont endchar dfont char="Y" !-------------- Beginning of new char. dfont wid=.733337 hei=.694445 dep=0 italic=.0274992 dfont fby="A" kadd=-.0916672 dfont fby="a" kadd=-.0916672 dfont fby="e" kadd=-.0916672 dfont fby="o" kadd=-.0916672 dfont fby="r" kadd=-.0916672 dfont fby="u" kadd=-.0916672 set path ! start of curve newpath ! start of curve amove .052719 .242117 bezier .074326 .237691 .804516E-01 .213598 .937226E-01 .199161 bezier .106885 .17988 .120769 .15855 .132969 .140193 bezier .151953 .173444 .174583 .204492 .197208 .235283 aline .199161 .236259 aline .201113 .238212 aline .205018 .240164 aline .207947 .24114 aline .211852 .242117 aline .244069 .242117 aline .246022 .24114 bezier .255147 .231204 .239915 .221861 .236259 .212828 bezier .208385 .174489 .182373 .134811 .154252 .966514E-01 aline .154252 .781022E-02 aline .152299 .390511E-02 aline .14937 .976277E-03 aline .145465 -.976277E-03 aline .113248 -.976277E-03 aline .109343 .976277E-03 aline .106414 .390511E-02 aline .104462 .781022E-02 aline .104462 .966514E-01 bezier .721787E-01 .141044 .415046E-01 .186596 .976277E-02 .231378 aline .976277E-02 .237235 aline .010739 .239188 aline .126916E-01 .24114 aline .146442E-01 .242117 closepath ! end of curve fill dfont endchar dfont char="Z" !-------------- Beginning of new char. dfont wid=.672226 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .205994 .242117 aline .207947 .24114 aline .2099 .240164 aline .212828 .237235 aline .214781 .23333 aline .214781 .21771 bezier .172983 .156036 .128428 .958053E-01 .849361E-01 .035146 aline .859124E-01 .341697E-01 aline .163038 .341697E-01 aline .164015 .035146 aline .207947 .035146 aline .211852 .331934E-01 aline .214781 .302646E-01 aline .216734 .263595E-01 aline .216734 .781022E-02 aline .214781 .390511E-02 aline .211852 .976277E-03 aline .207947 -.976277E-03 aline .312409E-01 -.976277E-03 aline .273358E-01 .976277E-03 aline .244069E-01 .390511E-02 aline .224544E-01 .781022E-02 aline .224544E-01 .253832E-01 bezier .648748E-01 .866366E-01 .108938 .146706 .152055 .207459 aline .151323 .208923 aline .800547E-01 .208923 aline .790785E-01 .207947 aline .370985E-01 .207947 aline .331934E-01 .2099 aline .302646E-01 .212828 aline .028312 .216734 aline .028312 .232354 aline .292883E-01 .235283 aline .302646E-01 .237235 aline .331934E-01 .240164 aline .035146 .24114 aline .380748E-01 .242117 closepath ! end of curve fill dfont endchar dfont char="[" !-------------- Beginning of new char. dfont wid=.343058 hei=.75 dep=.25 italic=0 set path ! start of curve newpath ! start of curve amove .104462 .261642 aline .106414 .260666 aline .108367 .25969 aline .111296 .256761 aline .113248 .252856 aline .113248 .246022 aline .111296 .242117 aline .108367 .239188 aline .104462 .237235 aline .771259E-01 .237235 aline .761496E-01 .236259 aline .761496E-01 -.063458 aline .771259E-01 -.644343E-01 aline .104462 -.644343E-01 aline .108367 -.663868E-01 aline .111296 -.693157E-01 aline .113248 -.732208E-01 aline .113248 -.800547E-01 aline .111296 -.839598E-01 aline .108367 -.868887E-01 aline .104462 -.888412E-01 aline .400274E-01 -.888412E-01 aline .361223E-01 -.868887E-01 aline .331934E-01 -.839598E-01 aline .312409E-01 -.800547E-01 aline .312409E-01 .252856 aline .331934E-01 .256761 aline .361223E-01 .25969 aline .380748E-01 .260666 aline .400274E-01 .261642 closepath ! end of curve fill dfont endchar dfont char="\" !-------------- Beginning of new char. dfont wid=.558336 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .102509 .242117 aline .104462 .24114 aline .105438 .239188 bezier .102997 .227817 .953514E-01 .215278 .937226E-01 .205018 aline .103485 .205018 aline .105438 .203066 aline .105438 .162062 aline .103485 .160109 aline .624817E-01 .160109 aline .605292E-01 .162062 aline .605292E-01 .203066 bezier .694736E-01 .215647 .761801E-01 .230557 .859124E-01 .242117 closepath ! end of curve ! start of curve amove .180611 .242117 aline .182564 .24114 aline .18354 .239188 bezier .181099 .227817 .173453 .215279 .171825 .205018 aline .181588 .205018 aline .18354 .203066 aline .18354 .162062 aline .181588 .160109 aline .140584 .160109 aline .138631 .162062 aline .138631 .203066 bezier .147576 .215646 .154282 .230558 .164015 .242117 closepath ! end of curve fill dfont endchar dfont char="]" !-------------- Beginning of new char. dfont wid=.343058 hei=.75 dep=.25 italic=0 set path ! start of curve newpath ! start of curve amove .820073E-01 .261642 aline .839598E-01 .260666 aline .859124E-01 .25969 aline .888412E-01 .256761 aline .907938E-01 .252856 aline .907938E-01 -.800547E-01 aline .888412E-01 -.839598E-01 aline .859124E-01 -.868887E-01 aline .820073E-01 -.888412E-01 aline .017573 -.888412E-01 aline .136679E-01 -.868887E-01 aline .010739 -.839598E-01 aline .878649E-02 -.800547E-01 aline .878649E-02 -.732208E-01 aline .010739 -.693157E-01 aline .136679E-01 -.663868E-01 aline .017573 -.644343E-01 aline .449088E-01 -.644343E-01 aline .045885 -.063458 aline .045885 .236259 aline .449088E-01 .237235 aline .017573 .237235 aline .136679E-01 .239188 aline .010739 .242117 aline .878649E-02 .246022 aline .878649E-02 .252856 aline .010739 .256761 aline .136679E-01 .25969 aline .156204E-01 .260666 aline .017573 .261642 closepath ! end of curve fill dfont endchar dfont char="^" !-------------- Beginning of new char. dfont wid=.550003 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .115201 .242117 bezier .128708 .225639 .142677 .209494 .155228 .192327 aline .155228 .189398 aline .153276 .187445 aline .132774 .187445 bezier .120894 .197123 .10929 .207186 .971396E-01 .216489 bezier .849889E-01 .207186 .733852E-01 .197124 .615055E-01 .187445 aline .410036E-01 .187445 aline .390511E-01 .189398 bezier .401559E-01 .198976 .503708E-01 .204518 .546715E-01 .212828 bezier .638165E-01 .222012 .702615E-01 .233853 .800547E-01 .242117 aline .115201 .242117 closepath ! end of curve fill dfont endchar dfont char="_" !-------------- Beginning of new char. dfont wid=.305557 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .070292 .243093 aline .732208E-01 .242117 aline .741971E-01 .24114 aline .761496E-01 .240164 aline .771259E-01 .238212 aline .781022E-01 .237235 aline .790785E-01 .235283 aline .800547E-01 .232354 aline .800547E-01 .213805 aline .790785E-01 .210876 aline .781022E-01 .208923 aline .741971E-01 .205018 aline .070292 .203066 aline .380748E-01 .203066 aline .341697E-01 .205018 aline .302646E-01 .208923 aline .292883E-01 .210876 aline .028312 .213805 aline .028312 .232354 aline .292883E-01 .235283 aline .302646E-01 .237235 aline .312409E-01 .238212 aline .322171E-01 .240164 aline .341697E-01 .24114 aline .035146 .242117 aline .380748E-01 .243093 closepath ! end of curve fill dfont endchar dfont char="`" !-------------- Beginning of new char. dfont wid=.305557 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .741971E-01 .242117 aline .761496E-01 .24114 aline .771259E-01 .239188 bezier .746849E-01 .227817 .670393E-01 .215278 .654106E-01 .205018 aline .751733E-01 .205018 aline .771259E-01 .203066 aline .771259E-01 .162062 aline .751733E-01 .160109 aline .341697E-01 .160109 aline .322171E-01 .162062 aline .322171E-01 .203066 bezier .411616E-01 .215647 .047868 .230557 .576004E-01 .242117 closepath ! end of curve fill dfont endchar dfont char="a" !-------------- Beginning of new char. dfont wid=.525003 hei=.458333 dep=0 italic=0 dfont fby="r" kadd=-.0305557 dfont fby="w" kadd=-.0305557 dfont fby="y" kadd=-.0305557 set path ! start of curve newpath ! start of curve amove .106414 .164991 bezier .130368 .164038 .158003 .150469 .162062 .123987 aline .163038 .119106 aline .163038 .781022E-02 aline .161086 .390511E-02 aline .158157 .976277E-03 aline .154252 -.976277E-03 aline .12594 -.976277E-03 aline .122035 .976277E-03 aline .119106 .390511E-02 aline .117153 .781022E-02 aline .117153 .214781E-01 aline .116177 .224544E-01 bezier .959583E-01 -.105234E-01 .391123E-01 -.164929E-01 .185493E-01 .195255E-01 bezier .617627E-02 .387423E-01 .101958E-01 .676403E-01 .312409E-01 .790785E-01 bezier .570564E-01 .957331E-01 .879302E-01 .950716E-01 .116177 .976277E-01 aline .116177 .119106 aline .115201 .120082 aline .114224 .124963 bezier .112694 .140359 .943508E-01 .145558 .820073E-01 .14156 bezier .631898E-01 .141042 .472179E-01 .128877 .341697E-01 .116177 aline .322171E-01 .116177 aline .302646E-01 .117153 aline .292883E-01 .119106 aline .292883E-01 .124963 aline .028312 .12594 aline .028312 .138631 aline .273358E-01 .139608 aline .273358E-01 .147418 aline .028312 .14937 bezier .522385E-01 .163752 .792369E-01 .16605 .106414 .164991 closepath ! end of curve ! start of curve amove .110319 .829836E-01 bezier .09028 .816737E-01 .612351E-01 .751278E-01 .576004E-01 .507664E-01 bezier .525681E-01 .351164E-01 .070485 .146623E-01 .868887E-01 .205018E-01 aline .917701E-01 .214781E-01 aline .956752E-01 .224544E-01 aline .103485 .263595E-01 aline .111296 .341697E-01 aline .114224 .400274E-01 aline .115201 .439325E-01 aline .116177 .449088E-01 aline .116177 .829836E-01 aline .113248 .835693E-01 aline .110319 .829836E-01 closepath ! end of curve fill dfont endchar dfont char="b" !-------------- Beginning of new char. dfont wid=.561114 hei=.694445 dep=0 italic=0 dfont fby="c" kadd=.0305557 dfont fby="d" kadd=.0305557 dfont fby="e" kadd=.0305557 dfont fby="o" kadd=.0305557 dfont fby="q" kadd=.0305557 dfont fby="r" kadd=-.0305557 dfont fby="w" kadd=-.0305557 dfont fby="x" kadd=-.0305557 dfont fby="y" kadd=-.0305557 set path ! start of curve newpath ! start of curve amove .595529E-01 .242117 aline .615055E-01 .24114 aline .063458 .240164 aline .663868E-01 .237235 aline .683394E-01 .23333 aline .683394E-01 .144489 aline .693157E-01 .143513 bezier .998594E-01 .17591 .164545 .168422 .178659 .123011 bezier .186378 .983876E-01 .186011 .722629E-01 .181588 .468613E-01 bezier .175486 .185147E-01 .149538 -.434449E-02 .120082 -.390511E-02 bezier .102488 -.812906E-02 .819422E-01 -.195133E-02 .070292 .126916E-01 aline .693157E-01 .781022E-02 aline .673631E-01 .390511E-02 aline .644343E-01 .976277E-03 aline .605292E-01 -.976277E-03 aline .322171E-01 -.976277E-03 aline .292883E-01 0 aline .273358E-01 .976277E-03 aline .244069E-01 .390511E-02 aline .234307E-01 .585766E-02 aline .224544E-01 .878649E-02 aline .224544E-01 .232354 aline .234307E-01 .235283 aline .244069E-01 .237235 aline .273358E-01 .240164 aline .292883E-01 .24114 aline .322171E-01 .242117 closepath ! end of curve ! start of curve amove .946989E-01 .137655 aline .898175E-01 .136679 aline .859124E-01 .135703 aline .829836E-01 .134726 aline .771259E-01 .131797 aline .761496E-01 .130821 aline .741971E-01 .129845 aline .722445E-01 .127892 aline .070292 .126916 aline .693157E-01 .12594 aline .693157E-01 .341697E-01 bezier .085107 .111472E-01 .126405 .016361 .13375 .439325E-01 aline .134726 .478376E-01 aline .135703 .052719 aline .136679 .536952E-01 aline .136679 .605292E-01 aline .137655 .615055E-01 aline .137655 .976277E-01 bezier .13581 .112571 .131072 .133861 .112272 .136679 aline .10739 .137655 aline .106414 .138631 aline .956752E-01 .138631 aline .946989E-01 .137655 closepath ! end of curve fill dfont endchar dfont char="c" !-------------- Beginning of new char. dfont wid=.488892 hei=.458333 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .113248 .164991 aline .114224 .164015 aline .121058 .164015 aline .12594 .163038 aline .129845 .162062 aline .138631 .159133 aline .140584 .158157 aline .143513 .157181 aline .157181 .150347 aline .159133 .148394 aline .159133 .143513 aline .158157 .142536 aline .158157 .137655 aline .157181 .136679 aline .157181 .131797 aline .156204 .126916 aline .155228 .12594 aline .155228 .121058 aline .154252 .119106 aline .153276 .11813 aline .148394 .11813 bezier .130075 .13782 .988546E-01 .145746 .751733E-01 .131797 bezier .644607E-01 .123334 .631277E-01 .10823 .605292E-01 .966514E-01 aline .605292E-01 .063458 bezier .629223E-01 .484536E-01 .673308E-01 .270994E-01 .859124E-01 .234307E-01 bezier .109843 .169772E-01 .135666 .281931E-01 .154252 .439325E-01 aline .157181 .439325E-01 aline .159133 .419799E-01 aline .159133 .035146 aline .160109 .341697E-01 aline .160109 .224544E-01 aline .161086 .214781E-01 aline .161086 .126916E-01 bezier .131609 -.703292E-02 .937397E-01 -.902878E-02 .605292E-01 0 bezier .328157E-01 .871515E-02 .142224E-01 .372209E-01 .146442E-01 .654106E-01 bezier .934156E-02 .997809E-01 .198937E-01 .144798 .566241E-01 .158157 aline .585766E-01 .159133 aline .673631E-01 .162062 aline .712682E-01 .163038 aline .761496E-01 .163038 aline .771259E-01 .164015 aline .839598E-01 .164015 aline .849361E-01 .164991 aline .113248 .164991 closepath ! end of curve fill dfont endchar dfont char="d" !-------------- Beginning of new char. dfont wid=.561114 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .166943 .242117 aline .168896 .24114 aline .170849 .240164 aline .173777 .237235 aline .17573 .23333 aline .17573 .781022E-02 aline .173777 .390511E-02 aline .170849 .976277E-03 aline .166943 -.976277E-03 aline .137655 -.976277E-03 aline .13375 .976277E-03 aline .130821 .390511E-02 aline .128869 .781022E-02 aline .128869 .136679E-01 aline .127892 .146442E-01 bezier .979885E-01 -.194892E-01 .335828E-01 -.782301E-02 .195255E-01 .361223E-01 bezier .114727E-01 .629456E-01 .115256E-01 .917009E-01 .185493E-01 .119106 bezier .318638E-01 .164535 .967675E-01 .178125 .128869 .145465 aline .129845 .146442 aline .129845 .23333 aline .131797 .237235 aline .134726 .240164 aline .136679 .24114 aline .138631 .242117 closepath ! end of curve ! start of curve amove .937226E-01 .137655 bezier .076739 .13672 .639254E-01 .123047 .624817E-01 .106414 aline .615055E-01 .105438 aline .615055E-01 .976277E-01 aline .605292E-01 .966514E-01 aline .605292E-01 .605292E-01 bezier .623747E-01 .455858E-01 .671116E-01 .024296 .859124E-01 .214781E-01 bezier .101224 .156816E-01 .118769 .235197E-01 .128869 .361223E-01 aline .128869 .126916 aline .12594 .129845 aline .123987 .130821 aline .123011 .131797 aline .121058 .132774 aline .120082 .13375 aline .11813 .134726 aline .112272 .136679 aline .10739 .137655 aline .106414 .138631 aline .946989E-01 .138631 closepath ! end of curve fill dfont endchar dfont char="e" !-------------- Beginning of new char. dfont wid=.511114 hei=.458333 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .10739 .164991 bezier .132853 .16346 .158178 .146932 .164991 .121058 aline .166943 .113248 aline .16792 .108367 aline .16792 .101533 aline .168896 .100557 aline .168896 .829836E-01 aline .166943 .790785E-01 aline .164015 .761496E-01 aline .160109 .741971E-01 aline .566241E-01 .741971E-01 bezier .547975E-01 .610235E-01 .596555E-01 .452953E-01 .673631E-01 .331934E-01 bezier .928608E-01 .825244E-02 .13458 .207843E-01 .158157 .429562E-01 aline .160109 .439325E-01 aline .163038 .439325E-01 aline .164991 .419799E-01 aline .164991 .035146 aline .165967 .341697E-01 aline .165967 .234307E-01 aline .166943 .224544E-01 aline .166943 .146442E-01 bezier .13529 -.736266E-02 .093399 -.102147E-01 .576004E-01 .195255E-02 bezier .299869E-01 .118778E-01 .135426E-01 .403761E-01 .117153E-01 .683394E-01 bezier .948303E-02 .995766E-01 .161835E-01 .13665 .045885 .153276 aline .468613E-01 .154252 aline .052719 .157181 aline .556478E-01 .158157 aline .576004E-01 .159133 aline .063458 .161086 aline .712682E-01 .163038 aline .761496E-01 .164015 aline .820073E-01 .164015 aline .829836E-01 .164991 aline .10739 .164991 closepath ! end of curve ! start of curve amove .888412E-01 .139608 bezier .660961E-01 .137931 .563605E-01 .112873 .566241E-01 .937226E-01 aline .556478E-01 .927463E-01 aline .566241E-01 .917701E-01 aline .129845 .917701E-01 aline .130821 .927463E-01 bezier .130026 .108186 .128625 .127796 .113248 .136679 aline .10739 .138631 aline .102509 .139608 aline .101533 .140584 aline .898175E-01 .140584 closepath ! end of curve fill dfont endchar dfont char="f" !-------------- Beginning of new char. dfont wid=.336113 hei=.694445 dep=0 italic=.0763903 dfont fby=33 kadd=.0763903 dfont fby=39 kadd=.0763903 dfont fby=")" kadd=.0763903 dfont fby="?" kadd=.0763903 dfont fby="]" kadd=.0763903 dfont fby="f" ligrep=11 dfont fby="i" ligrep=12 dfont fby="l" ligrep=13 set path ! start of curve newpath ! start of curve amove .112272 .246022 aline .113248 .245046 aline .120082 .245046 aline .129845 .243093 aline .132774 .242117 aline .134726 .240164 aline .134726 .2099 aline .132774 .207947 aline .128869 .207947 bezier .117268 .222432 .918194E-01 .227695 .790785E-01 .212828 aline .781022E-01 .2099 aline .771259E-01 .205994 aline .761496E-01 .205018 aline .761496E-01 .160109 aline .771259E-01 .159133 aline .102509 .159133 aline .106414 .157181 aline .109343 .154252 aline .111296 .150347 aline .111296 .143513 aline .109343 .139608 aline .106414 .136679 aline .102509 .134726 aline .781022E-01 .134726 aline .771259E-01 .13375 aline .771259E-01 .781022E-02 aline .751733E-01 .390511E-02 aline .722445E-01 .976277E-03 aline .683394E-01 -.976277E-03 aline .410036E-01 -.976277E-03 aline .380748E-01 0 aline .361223E-01 .976277E-03 aline .331934E-01 .390511E-02 aline .322171E-01 .585766E-02 aline .312409E-01 .878649E-02 aline .312409E-01 .13375 aline .302646E-01 .134726 aline .195255E-01 .134726 aline .156204E-01 .136679 aline .126916E-01 .139608 aline .010739 .143513 aline .010739 .14937 aline .117153E-01 .152299 aline .126916E-01 .154252 aline .156204E-01 .157181 aline .017573 .158157 aline .205018E-01 .159133 aline .302646E-01 .159133 aline .312409E-01 .160109 aline .312409E-01 .197208 bezier .329518E-01 .220079 .510998E-01 .240041 .741971E-01 .244069 aline .790785E-01 .245046 aline .859124E-01 .245046 aline .868887E-01 .246022 aline .112272 .246022 closepath ! end of curve fill dfont endchar dfont char="g" !-------------- Beginning of new char. dfont wid=.550003 hei=.458333 dep=.194445 italic=.0152788 dfont fby="j" kadd=.0305557 set path ! start of curve newpath ! start of curve amove .995803E-01 .163038 aline .100557 .162062 aline .10739 .162062 aline .112272 .161086 aline .120082 .159133 aline .122035 .158157 aline .124963 .157181 aline .132774 .153276 aline .13375 .152299 aline .136191 .151689 bezier .15103 .158429 .167377 .165722 .18354 .162062 aline .184516 .160109 aline .185493 .155228 aline .185493 .150347 aline .186469 .14937 aline .186469 .144489 aline .187445 .143513 aline .187445 .138631 aline .185493 .136679 aline .181588 .136679 aline .169872 .139608 aline .168896 .140584 aline .164015 .140584 aline .163038 .14156 aline .154252 .14156 aline .153276 .142536 aline .146442 .142536 aline .145465 .14156 bezier .165966 .113531 .158312 .640002E-01 .122035 .052719 bezier .099607 .456037E-01 .754608E-01 .463554E-01 .052719 .517427E-01 aline .507664E-01 .052719 aline .478376E-01 .536952E-01 aline .424681E-01 .05638 bezier .374744E-01 .473248E-01 .456262E-01 .329653E-01 .566241E-01 .312409E-01 aline .576004E-01 .302646E-01 aline .122035 .302646E-01 bezier .143375 .285723E-01 .171933 .228843E-01 .180611 -.976277E-03 bezier .188664 -.212766E-01 .185571 -.487799E-01 .164991 -.605292E-01 bezier .150982 -.705073E-01 .132812 -.723673E-01 .117153 -.741971E-01 aline .771259E-01 -.741971E-01 bezier .521278E-01 -.725842E-01 .189331E-01 -.644573E-01 .010739 -.361223E-01 aline .976277E-02 -.312409E-01 aline .976277E-02 -.195255E-01 aline .010739 -.156204E-01 aline .117153E-01 -.126916E-01 aline .136679E-01 -.878649E-02 aline .146442E-01 -.781022E-02 aline .156204E-01 -.585766E-02 aline .224544E-01 .976277E-03 aline .322171E-01 .585766E-02 aline .331934E-01 .683394E-02 bezier .205414E-01 .222225E-01 .216688E-01 .461191E-01 .329494E-01 .619936E-01 bezier .110147E-01 .851387E-01 .101097E-01 .125662 .331934E-01 .148394 bezier .518701E-01 .163869 .766186E-01 .16351 .995803E-01 .163038 closepath ! end of curve ! start of curve amove .790785E-01 .137655 aline .741971E-01 .136679 aline .712682E-01 .135703 bezier .559081E-01 .12516 .609514E-01 .103648 .615055E-01 .878649E-01 aline .624817E-01 .868887E-01 bezier .673352E-01 .694618E-01 .901699E-01 .696638E-01 .103485 .761496E-01 aline .10739 .800547E-01 aline .109343 .839598E-01 aline .110319 .868887E-01 aline .111296 .878649E-01 bezier .11185 .103649 .116893 .12516 .101533 .135703 aline .098604 .136679 aline .937226E-01 .137655 aline .927463E-01 .138631 aline .800547E-01 .138631 closepath ! end of curve ! start of curve amove .566241E-01 -.781022E-02 bezier .438782E-01 -.983382E-02 .042039 -.272561E-01 .488139E-01 -.361223E-01 aline .536952E-01 -.410036E-01 bezier .759168E-01 -.524795E-01 .102488 -.515283E-01 .12594 -.468613E-01 bezier .14036 -.453797E-01 .15664 -.290292E-01 .145465 -.156204E-01 bezier .137326 -.86864E-02 .126477 -.875051E-02 .117153 -.683394E-02 aline .576004E-01 -.683394E-02 closepath ! end of curve fill dfont endchar dfont char="h" !-------------- Beginning of new char. dfont wid=.561114 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .595529E-01 .242117 aline .615055E-01 .24114 aline .063458 .240164 aline .663868E-01 .237235 aline .683394E-01 .23333 aline .683394E-01 .129845 aline .693157E-01 .128869 bezier .080594 .154189 .111167 .168331 .137655 .162062 bezier .158663 .163268 .175209 .14341 .17573 .123987 aline .17573 .781022E-02 aline .173777 .390511E-02 aline .170849 .976277E-03 aline .166943 -.976277E-03 aline .137655 -.976277E-03 aline .13375 .976277E-03 aline .130821 .390511E-02 aline .128869 .781022E-02 aline .128869 .121058 aline .127892 .122035 bezier .127782 .137655 .10921 .141765 .976277E-01 .136679 bezier .081519 .132252 .728512E-01 .116455 .693157E-01 .101533 aline .693157E-01 .781022E-02 aline .673631E-01 .390511E-02 aline .644343E-01 .976277E-03 aline .605292E-01 -.976277E-03 aline .322171E-01 -.976277E-03 aline .292883E-01 0 aline .273358E-01 .976277E-03 aline .244069E-01 .390511E-02 aline .234307E-01 .585766E-02 aline .224544E-01 .878649E-02 aline .224544E-01 .232354 aline .234307E-01 .235283 aline .244069E-01 .237235 aline .273358E-01 .240164 aline .292883E-01 .24114 aline .322171E-01 .242117 aline .595529E-01 .242117 closepath ! end of curve fill dfont endchar dfont char="i" !-------------- Beginning of new char. dfont wid=.255557 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .615055E-01 .243093 aline .063458 .242117 aline .654106E-01 .24114 aline .683394E-01 .238212 aline .070292 .234307 aline .070292 .204042 aline .683394E-01 .200137 aline .654106E-01 .197208 aline .615055E-01 .195255 aline .028312 .195255 aline .244069E-01 .197208 aline .214781E-01 .200137 aline .195255E-01 .204042 aline .195255E-01 .23333 aline .205018E-01 .236259 aline .214781E-01 .238212 aline .244069E-01 .24114 aline .263595E-01 .242117 aline .292883E-01 .243093 closepath ! end of curve ! start of curve amove .595529E-01 .159133 aline .615055E-01 .158157 aline .063458 .157181 aline .663868E-01 .154252 aline .683394E-01 .150347 aline .683394E-01 .781022E-02 aline .663868E-01 .390511E-02 aline .063458 .976277E-03 aline .595529E-01 -.976277E-03 aline .322171E-01 -.976277E-03 aline .292883E-01 0 aline .273358E-01 .976277E-03 aline .244069E-01 .390511E-02 aline .234307E-01 .585766E-02 aline .224544E-01 .878649E-02 aline .224544E-01 .14937 aline .234307E-01 .152299 aline .244069E-01 .154252 aline .273358E-01 .157181 aline .292883E-01 .158157 aline .322171E-01 .159133 closepath ! end of curve fill dfont endchar dfont char="j" !-------------- Beginning of new char. dfont wid=.286113 hei=.694445 dep=.194445 italic=0 set path ! start of curve newpath ! start of curve amove .070292 .243093 aline .722445E-01 .242117 aline .741971E-01 .24114 aline .771259E-01 .238212 aline .790785E-01 .234307 aline .790785E-01 .204042 aline .771259E-01 .200137 aline .741971E-01 .197208 aline .070292 .195255 aline .370985E-01 .195255 aline .331934E-01 .197208 aline .302646E-01 .200137 aline .028312 .204042 aline .028312 .234307 aline .302646E-01 .238212 aline .331934E-01 .24114 aline .035146 .242117 aline .370985E-01 .243093 closepath ! end of curve ! start of curve amove .070292 .159133 aline .722445E-01 .158157 aline .741971E-01 .157181 aline .771259E-01 .154252 aline .790785E-01 .150347 aline .790785E-01 -.234307E-01 bezier .782746E-01 -.450623E-01 .642313E-01 -.685073E-01 .410036E-01 -.722445E-01 bezier .190062E-01 -.752822E-01 -.401723E-02 -.718935E-01 -.234307E-01 -.605292E-01 aline -.244069E-01 -.585766E-01 aline -.244069E-01 -.556478E-01 aline -.214781E-01 -.439325E-01 aline -.205018E-01 -.410036E-01 aline -.195255E-01 -.390511E-01 aline -.017573 -.370985E-01 aline -.146442E-01 -.370985E-01 bezier -.104538E-02 -.044346 .189203E-01 -.495648E-01 .302646E-01 -.361223E-01 aline .312409E-01 -.331934E-01 aline .322171E-01 -.292883E-01 aline .331934E-01 -.028312 aline .331934E-01 .150347 aline .035146 .154252 aline .380748E-01 .157181 aline .400274E-01 .158157 aline .419799E-01 .159133 closepath ! end of curve fill dfont endchar dfont char="k" !-------------- Beginning of new char. dfont wid=.530559 hei=.694445 dep=0 italic=0 dfont fby="a" kadd=-.0305557 dfont fby="c" kadd=-.0305557 dfont fby="e" kadd=-.0305557 dfont fby="o" kadd=-.0305557 set path ! start of curve newpath ! start of curve amove .566241E-01 .242117 aline .585766E-01 .24114 aline .605292E-01 .240164 aline .063458 .237235 aline .654106E-01 .23333 aline .654106E-01 .105438 aline .663868E-01 .104462 bezier .853144E-01 .122413 .103956 .140761 .123987 .157181 aline .129845 .159133 aline .164991 .159133 aline .166943 .158157 aline .168896 .156204 aline .169872 .153276 aline .169872 .151323 aline .168896 .148394 bezier .149503 .130355 .129457 .11247 .110563 .942107E-01 bezier .131043 .650744E-01 .153972 .377044E-01 .174754 .878649E-02 aline .174754 .390511E-02 aline .173777 .195255E-02 aline .171825 0 aline .169872 -.976277E-03 aline .138631 -.976277E-03 bezier .126027 .398085E-02 .121531 .184416E-01 .112272 .273358E-01 bezier .102334 .407558E-01 .922593E-01 .546169E-01 .815191E-01 .671191E-01 aline .800547E-01 .663868E-01 aline .751733E-01 .615055E-01 aline .732208E-01 .605292E-01 aline .644343E-01 .517427E-01 aline .644343E-01 .781022E-02 aline .624817E-01 .390511E-02 aline .595529E-01 .976277E-03 aline .556478E-01 -.976277E-03 aline .035146 -.976277E-03 aline .322171E-01 0 aline .302646E-01 .976277E-03 aline .273358E-01 .390511E-02 aline .263595E-01 .585766E-02 aline .253832E-01 .878649E-02 aline .253832E-01 .232354 aline .263595E-01 .235283 aline .273358E-01 .237235 aline .302646E-01 .240164 aline .322171E-01 .24114 aline .035146 .242117 aline .566241E-01 .242117 closepath ! end of curve fill dfont endchar dfont char="l" !-------------- Beginning of new char. dfont wid=.255557 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .595529E-01 .242117 aline .615055E-01 .24114 aline .063458 .240164 aline .663868E-01 .237235 aline .683394E-01 .23333 aline .683394E-01 .781022E-02 aline .663868E-01 .390511E-02 aline .063458 .976277E-03 aline .595529E-01 -.976277E-03 aline .322171E-01 -.976277E-03 aline .292883E-01 0 aline .273358E-01 .976277E-03 aline .244069E-01 .390511E-02 aline .234307E-01 .585766E-02 aline .224544E-01 .878649E-02 aline .224544E-01 .232354 aline .234307E-01 .235283 aline .244069E-01 .237235 aline .273358E-01 .240164 aline .292883E-01 .24114 aline .322171E-01 .242117 closepath ! end of curve fill dfont endchar dfont char="m" !-------------- Beginning of new char. dfont wid=.866672 hei=.458333 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .136679 .163038 bezier .154829 .162351 .17363 .149432 .17573 .129845 aline .176706 .128869 bezier .18543 .14667 .202757 .159813 .222591 .163038 bezier .241993 .16358 .265471 .163932 .277263 .145465 aline .281168 .137655 aline .282144 .134726 aline .28312 .129845 aline .28312 .124963 aline .284097 .123987 aline .284097 .781022E-02 aline .282144 .390511E-02 aline .279215 .976277E-03 aline .27531 -.976277E-03 aline .246998 -.976277E-03 aline .244069 0 aline .242117 .976277E-03 aline .239188 .390511E-02 aline .238212 .585766E-02 aline .237235 .878649E-02 aline .237235 .121058 aline .236259 .122035 bezier .236082 .138111 .216811 .141709 .205018 .136679 bezier .188909 .132252 .180243 .116455 .176706 .101533 aline .176706 .781022E-02 aline .174754 .390511E-02 aline .171825 .976277E-03 aline .16792 -.976277E-03 aline .139608 -.976277E-03 aline .136679 0 aline .134726 .976277E-03 aline .131797 .390511E-02 aline .130821 .585766E-02 aline .129845 .878649E-02 aline .129845 .121058 aline .128869 .122035 bezier .128691 .138111 .109421 .141709 .976277E-01 .136679 bezier .081519 .132252 .728512E-01 .116455 .693157E-01 .101533 aline .693157E-01 .781022E-02 aline .673631E-01 .390511E-02 aline .644343E-01 .976277E-03 aline .605292E-01 -.976277E-03 aline .322171E-01 -.976277E-03 aline .292883E-01 0 aline .273358E-01 .976277E-03 aline .244069E-01 .390511E-02 aline .234307E-01 .585766E-02 aline .224544E-01 .878649E-02 aline .224544E-01 .151323 aline .234307E-01 .154252 aline .244069E-01 .156204 aline .273358E-01 .159133 aline .292883E-01 .160109 aline .322171E-01 .161086 aline .585766E-01 .161086 aline .624817E-01 .159133 aline .654106E-01 .156204 aline .673631E-01 .152299 aline .673631E-01 .127892 aline .683394E-01 .126916 bezier .768608E-01 .145672 .945983E-01 .159709 .115201 .163038 aline .136679 .163038 closepath ! end of curve fill dfont endchar dfont char="n" !-------------- Beginning of new char. dfont wid=.561114 hei=.458333 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .136679 .163038 bezier .156037 .162382 .176103 .146025 .174754 .124963 aline .17573 .123987 aline .17573 .781022E-02 aline .173777 .390511E-02 aline .170849 .976277E-03 aline .166943 -.976277E-03 aline .137655 -.976277E-03 aline .13375 .976277E-03 aline .130821 .390511E-02 aline .128869 .781022E-02 aline .128869 .121058 aline .127892 .122035 bezier .127782 .137655 .10921 .141765 .976277E-01 .136679 bezier .081519 .132252 .728512E-01 .116455 .693157E-01 .101533 aline .693157E-01 .781022E-02 aline .673631E-01 .390511E-02 aline .644343E-01 .976277E-03 aline .605292E-01 -.976277E-03 aline .322171E-01 -.976277E-03 aline .292883E-01 0 aline .273358E-01 .976277E-03 aline .244069E-01 .390511E-02 aline .234307E-01 .585766E-02 aline .224544E-01 .878649E-02 aline .224544E-01 .151323 aline .234307E-01 .154252 aline .244069E-01 .156204 aline .273358E-01 .159133 aline .292883E-01 .160109 aline .322171E-01 .161086 aline .585766E-01 .161086 aline .624817E-01 .159133 aline .654106E-01 .156204 aline .673631E-01 .152299 aline .673631E-01 .127892 aline .683394E-01 .126916 bezier .765615E-01 .14586 .947138E-01 .159716 .115201 .163038 aline .136679 .163038 closepath ! end of curve fill dfont endchar dfont char="o" !-------------- Beginning of new char. dfont wid=.550003 hei=.458333 dep=0 italic=0 dfont fby="c" kadd=.0305557 dfont fby="d" kadd=.0305557 dfont fby="e" kadd=.0305557 dfont fby="o" kadd=.0305557 dfont fby="q" kadd=.0305557 dfont fby="r" kadd=-.0305557 dfont fby="w" kadd=-.0305557 dfont fby="x" kadd=-.0305557 dfont fby="y" kadd=-.0305557 set path ! start of curve newpath ! start of curve amove .109343 .164991 bezier .131843 .163209 .157224 .153605 .169872 .132774 bezier .185871 .102979 .18634 .677742E-01 .17573 .361223E-01 bezier .165043 .106811E-01 .136899 -.441705E-02 .110319 -.390511E-02 bezier .801876E-01 -.765522E-02 .434427E-01 -.223237E-02 .244069E-01 .253832E-01 bezier .824984E-02 .516046E-01 .972858E-02 .839289E-01 .156204E-01 .112272 bezier .228256E-01 .143173 .532217E-01 .164595 .839598E-01 .164015 aline .849361E-01 .164991 aline .109343 .164991 closepath ! end of curve ! start of curve amove .888412E-01 .139608 bezier .732049E-01 .138545 .619907E-01 .125473 .605292E-01 .110319 aline .595529E-01 .109343 aline .595529E-01 .101533 aline .585766E-01 .100557 aline .585766E-01 .624817E-01 bezier .601531E-01 .475166E-01 .656736E-01 .272221E-01 .839598E-01 .234307E-01 bezier .102371 .169159E-01 .129077 .252299E-01 .132774 .478376E-01 aline .13375 .488139E-01 aline .13375 .536952E-01 aline .134726 .546715E-01 aline .134726 .615055E-01 aline .135703 .624817E-01 aline .135703 .100557 bezier .134019 .115387 .128531 .135632 .110319 .138631 aline .105438 .139608 aline .104462 .140584 aline .898175E-01 .140584 aline .888412E-01 .139608 closepath ! end of curve fill dfont endchar dfont char="p" !-------------- Beginning of new char. dfont wid=.561114 hei=.458333 dep=.194445 italic=0 dfont fby="c" kadd=.0305557 dfont fby="d" kadd=.0305557 dfont fby="e" kadd=.0305557 dfont fby="o" kadd=.0305557 dfont fby="q" kadd=.0305557 dfont fby="r" kadd=-.0305557 dfont fby="w" kadd=-.0305557 dfont fby="x" kadd=-.0305557 dfont fby="y" kadd=-.0305557 set path ! start of curve newpath ! start of curve amove .129845 .163038 bezier .153945 .160795 .175068 .142134 .180611 .11813 bezier .186314 .869684E-01 .188916 .510855E-01 .170849 .224544E-01 bezier .153247 -.219521E-02 .11884 -.102144E-01 .907938E-01 -.195255E-02 aline .081031 .292883E-02 aline .800547E-01 .390511E-02 aline .781022E-01 .488139E-02 aline .070292 .126916E-01 aline .693157E-01 .117153E-01 aline .693157E-01 -.605292E-01 aline .673631E-01 -.644343E-01 aline .644343E-01 -.673631E-01 aline .605292E-01 -.693157E-01 aline .322171E-01 -.693157E-01 aline .292883E-01 -.683394E-01 aline .273358E-01 -.673631E-01 aline .244069E-01 -.644343E-01 aline .234307E-01 -.624817E-01 aline .224544E-01 -.595529E-01 aline .224544E-01 .14937 aline .234307E-01 .152299 aline .244069E-01 .154252 aline .273358E-01 .157181 aline .292883E-01 .158157 aline .322171E-01 .159133 aline .595529E-01 .159133 aline .063458 .157181 aline .663868E-01 .154252 aline .683394E-01 .150347 aline .683394E-01 .144489 aline .693157E-01 .143513 bezier .856804E-01 .15842 .108028 .165024 .129845 .163038 closepath ! end of curve ! start of curve amove .946989E-01 .135703 bezier .855326E-01 .135073 .760547E-01 .130545 .693157E-01 .123987 aline .693157E-01 .341697E-01 bezier .845575E-01 .114304E-01 .123217 .167299E-01 .131797 .429562E-01 bezier .140165 .680146E-01 .140598 .959459E-01 .129845 .120082 bezier .1234 .132191 .107405 .139048 .946989E-01 .135703 closepath ! end of curve fill dfont endchar dfont char="q" !-------------- Beginning of new char. dfont wid=.561114 hei=.458333 dep=.194445 italic=0 set path ! start of curve newpath ! start of curve amove .956752E-01 .163038 aline .995803E-01 .162062 aline .103485 .161086 aline .113248 .156204 aline .114224 .155228 aline .116177 .154252 aline .12594 .144489 aline .126916 .142536 aline .128869 .140584 aline .129845 .14156 aline .129845 .154252 aline .131797 .158157 aline .134726 .161086 aline .138631 .163038 aline .166943 .163038 aline .170849 .161086 aline .173777 .158157 aline .17573 .154252 aline .17573 -.605292E-01 aline .173777 -.644343E-01 aline .170849 -.673631E-01 aline .166943 -.693157E-01 aline .137655 -.693157E-01 aline .13375 -.673631E-01 aline .130821 -.644343E-01 aline .128869 -.605292E-01 aline .128869 .146442E-01 aline .127892 .156204E-01 bezier .107343 -.120013E-01 .648975E-01 -.997758E-02 .390511E-01 .878649E-02 bezier .102231E-01 .032879 .011684 .745653E-01 .156204E-01 .10739 bezier .203483E-01 .137998 .477844E-01 .16207 .781022E-01 .163038 closepath ! end of curve ! start of curve amove .946989E-01 .135703 bezier .760233E-01 .134313 .642209E-01 .117026 .624817E-01 .995803E-01 bezier .058783 .784651E-01 .590499E-01 .549777E-01 .693157E-01 .035146 bezier .796896E-01 .179081E-01 .104068 .149427E-01 .119106 .273358E-01 aline .126916 .035146 aline .127892 .370985E-01 aline .129845 .390511E-01 aline .129845 .115201 bezier .124012 .128436 .109264 .140372 .946989E-01 .135703 closepath ! end of curve fill dfont endchar dfont char="r" !-------------- Beginning of new char. dfont wid=.372225 hei=.458333 dep=0 italic=.0152788 set path ! start of curve newpath ! start of curve amove .123011 .163038 aline .124963 .161086 aline .124963 .129845 aline .123011 .127892 bezier .994875E-01 .128344 .724006E-01 .113497 .693157E-01 .878649E-01 aline .683394E-01 .868887E-01 aline .683394E-01 .781022E-02 aline .663868E-01 .390511E-02 aline .063458 .976277E-03 aline .595529E-01 -.976277E-03 aline .322171E-01 -.976277E-03 aline .292883E-01 0 aline .273358E-01 .976277E-03 aline .244069E-01 .390511E-02 aline .234307E-01 .585766E-02 aline .224544E-01 .878649E-02 aline .224544E-01 .151323 aline .234307E-01 .154252 aline .244069E-01 .156204 aline .273358E-01 .159133 aline .292883E-01 .160109 aline .322171E-01 .161086 aline .576004E-01 .161086 aline .615055E-01 .159133 aline .644343E-01 .156204 aline .663868E-01 .152299 aline .663868E-01 .122035 aline .673631E-01 .121058 bezier .755477E-01 .144025 .968589E-01 .16545 .123011 .163038 closepath ! end of curve fill dfont endchar dfont char="s" !-------------- Beginning of new char. dfont wid=.421669 hei=.458333 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .898175E-01 .164991 bezier .103765 .162892 .120318 .160077 .132774 .151323 aline .132774 .146442 aline .131797 .145465 aline .131797 .140584 aline .130821 .139608 aline .130821 .134726 aline .129845 .129845 aline .128869 .128869 aline .128869 .123987 aline .127892 .122035 aline .126916 .121058 aline .122035 .121058 bezier .103993 .139298 .737188E-01 .147611 .507664E-01 .134726 aline .488139E-01 .130821 aline .478376E-01 .127892 aline .468613E-01 .126916 aline .468613E-01 .120082 bezier .546001E-01 .103475 .757136E-01 .105457 .907938E-01 .101533 bezier .113977 .967984E-01 .135866 .800443E-01 .139608 .556478E-01 bezier .142049 .336707E-01 .134058 .826127E-02 .111296 0 bezier .782805E-01 -.993588E-02 .410562E-01 -.560012E-02 .117153E-01 .136679E-01 bezier .129274E-01 .025069 .144458E-01 .363992E-01 .017573 .478376E-01 aline .185493E-01 .488139E-01 aline .205018E-01 .497901E-01 bezier .286081E-01 .452851E-01 .033692 .350778E-01 .429562E-01 .312409E-01 bezier .601102E-01 .212866E-01 .812212E-01 .174455E-01 .995803E-01 .263595E-01 aline .103485 .302646E-01 aline .105438 .361223E-01 aline .106414 .370985E-01 bezier .108714 .535708E-01 .892531E-01 .608896E-01 .761496E-01 .615055E-01 bezier .491722E-01 .643245E-01 .190254E-01 .781573E-01 .136679E-01 .10739 bezier .011257 .128331 .194001E-01 .152348 .410036E-01 .160109 aline .497901E-01 .163038 aline .546715E-01 .164015 aline .615055E-01 .164015 aline .624817E-01 .164991 aline .898175E-01 .164991 closepath ! end of curve fill dfont endchar dfont char="t" !-------------- Beginning of new char. dfont wid=.404169 hei=.589289 dep=0 italic=0 dfont fby="w" kadd=-.0305557 dfont fby="y" kadd=-.0305557 set path ! start of curve newpath ! start of curve amove .683394E-01 .205018 aline .070292 .204042 aline .722445E-01 .203066 aline .751733E-01 .200137 aline .771259E-01 .196232 aline .771259E-01 .160109 aline .781022E-01 .159133 aline .116177 .159133 aline .120082 .157181 aline .123011 .154252 aline .124963 .150347 aline .124963 .143513 aline .123011 .139608 aline .120082 .136679 aline .116177 .134726 aline .781022E-01 .134726 aline .771259E-01 .13375 aline .771259E-01 .419799E-01 aline .781022E-01 .410036E-01 aline .781022E-01 .361223E-01 aline .790785E-01 .035146 aline .800547E-01 .312409E-01 aline .081031 .028312 bezier .877189E-01 .156879E-01 .103146 .235705E-01 .113248 .273358E-01 aline .114224 .028312 aline .116177 .292883E-01 aline .11813 .312409E-01 aline .120082 .322171E-01 aline .121058 .331934E-01 aline .123011 .341697E-01 aline .12594 .341697E-01 aline .127892 .322171E-01 aline .131797 .165967E-01 aline .131797 .126916E-01 bezier .109717 -.242377E-02 .824412E-01 -.691099E-02 .566241E-01 -.390511E-02 bezier .040066 .572389E-03 .033559 .193325E-01 .322171E-01 .341697E-01 aline .322171E-01 .13375 aline .312409E-01 .134726 aline .165967E-01 .134726 aline .126916E-01 .136679 aline .976277E-02 .139608 aline .781022E-02 .143513 aline .781022E-02 .14937 aline .878649E-02 .152299 aline .976277E-02 .154252 aline .126916E-01 .157181 aline .146442E-01 .158157 aline .017573 .159133 aline .322171E-01 .159133 aline .331934E-01 .160109 aline .331934E-01 .195255 aline .341697E-01 .198184 aline .035146 .200137 aline .380748E-01 .203066 aline .400274E-01 .204042 aline .429562E-01 .205018 closepath ! end of curve fill dfont endchar dfont char="u" !-------------- Beginning of new char. dfont wid=.561114 hei=.458333 dep=0 italic=0 dfont fby="w" kadd=-.0305557 set path ! start of curve newpath ! start of curve amove .605292E-01 .159133 aline .624817E-01 .158157 aline .644343E-01 .157181 aline .673631E-01 .154252 aline .693157E-01 .150347 aline .693157E-01 .302646E-01 aline .070292 .292883E-01 aline .712682E-01 .244069E-01 aline .722445E-01 .214781E-01 bezier .916975E-01 .633985E-02 .122998 .206752E-01 .126916 .449088E-01 aline .127892 .045885 aline .127892 .507664E-01 aline .128869 .517427E-01 aline .128869 .150347 aline .130821 .154252 aline .13375 .157181 aline .137655 .159133 aline .166943 .159133 aline .170849 .157181 aline .173777 .154252 aline .17573 .150347 aline .17573 .781022E-02 aline .173777 .390511E-02 aline .170849 .976277E-03 aline .166943 -.976277E-03 aline .138631 -.976277E-03 aline .134726 .976277E-03 aline .131797 .390511E-02 aline .129845 .781022E-02 aline .129845 .234307E-01 aline .128869 .244069E-01 bezier .12138 .932777E-02 .106693 -.212124E-02 .898175E-01 -.488139E-02 bezier .687092E-01 -.496361E-02 .428859E-01 -.686195E-02 .292883E-01 .126916E-01 aline .253832E-01 .205018E-01 aline .234307E-01 .263595E-01 aline .234307E-01 .312409E-01 aline .224544E-01 .322171E-01 aline .224544E-01 .14937 aline .234307E-01 .152299 aline .244069E-01 .154252 aline .273358E-01 .157181 aline .292883E-01 .158157 aline .322171E-01 .159133 closepath ! end of curve fill dfont endchar dfont char="v" !-------------- Beginning of new char. dfont wid=.500003 hei=.458333 dep=0 italic=.0152788 set path ! start of curve newpath ! start of curve amove .390511E-01 .159133 aline .419799E-01 .158157 aline .045885 .156204 aline .507664E-01 .151323 aline .052719 .147418 aline .663868E-01 .106414 aline .673631E-01 .102509 aline .820073E-01 .585766E-01 aline .829836E-01 .546715E-01 aline .888412E-01 .370985E-01 aline .966514E-01 .605292E-01 aline .976277E-01 .644343E-01 aline .113248 .111296 aline .114224 .115201 aline .124963 .147418 aline .126916 .151323 aline .131797 .156204 aline .135703 .158157 aline .138631 .159133 aline .160109 .159133 aline .162062 .158157 aline .165967 .154252 aline .166943 .151323 aline .166943 .148394 aline .163038 .136679 aline .162062 .132774 aline .146442 .859124E-01 aline .145465 .820073E-01 aline .129845 .035146 aline .128869 .312409E-01 aline .122035 .010739 aline .120082 .683394E-02 aline .115201 .195255E-02 aline .111296 0 aline .108367 -.976277E-03 aline .683394E-01 -.976277E-03 aline .654106E-01 0 aline .615055E-01 .195255E-02 aline .566241E-01 .683394E-02 aline .546715E-01 .010739 aline .478376E-01 .312409E-01 aline .468613E-01 .035146 aline .312409E-01 .820073E-01 aline .302646E-01 .859124E-01 aline .146442E-01 .132774 aline .136679E-01 .136679 aline .976277E-02 .148394 aline .976277E-02 .151323 aline .010739 .154252 aline .146442E-01 .158157 aline .165967E-01 .159133 closepath ! end of curve fill dfont endchar dfont char="w" !-------------- Beginning of new char. dfont wid=.744449 hei=.458333 dep=0 italic=.0152788 dfont fby="a" kadd=-.0305557 dfont fby="c" kadd=-.0305557 dfont fby="e" kadd=-.0305557 dfont fby="o" kadd=-.0305557 set path ! start of curve newpath ! start of curve amove .390511E-01 .159133 bezier .564809E-01 .152871 .541848E-01 .130608 .605292E-01 .116177 bezier .672507E-01 .920743E-01 .734115E-01 .677151E-01 .081031 .439325E-01 bezier .919222E-01 .079893 .100156 .116812 .112272 .152299 aline .116177 .156204 bezier .128058 .162485 .149085 .16078 .151323 .144489 bezier .161844 .109527 .170131 .734457E-01 .181588 .390511E-01 bezier .192805 .763133E-01 .201589 .114469 .213805 .151323 aline .219662 .157181 aline .221615 .158157 aline .224544 .159133 aline .246022 .159133 aline .249927 .157181 bezier .257546 .146823 .247801 .133362 .246022 .122035 bezier .234954 .833329E-01 .225504 .439745E-01 .212828 .585766E-02 aline .208923 .195255E-02 aline .205018 0 aline .202089 -.976277E-03 aline .162062 -.976277E-03 bezier .14542 .459296E-02 .147205 .253973E-01 .14156 .390511E-01 bezier .135894 .626347E-01 .12725 .865187E-01 .12594 .110319 aline .123987 .112272 bezier .118849 .776714E-01 .108498 .410843E-01 .976277E-01 .683394E-02 aline .917701E-01 .976277E-03 aline .898175E-01 0 aline .868887E-01 -.976277E-03 aline .605292E-01 -.976277E-03 bezier .043618 .330984E-02 .458139E-01 .241192E-01 .400274E-01 .370985E-01 bezier .302348E-01 .736324E-01 .196234E-01 .109928 .976277E-02 .146442 aline .976277E-02 .153276 aline .010739 .154252 aline .117153E-01 .156204 aline .126916E-01 .157181 aline .146442E-01 .158157 aline .165967E-01 .159133 closepath ! end of curve fill dfont endchar dfont char="x" !-------------- Beginning of new char. dfont wid=.500003 hei=.458333 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .045885 .159133 bezier .583209E-01 .155558 .06232 .14174 .712682E-01 .13375 bezier .759053E-01 .126506 .820188E-01 .120325 .868887E-01 .113248 bezier .994622E-01 .127198 .108772 .144176 .122035 .157181 aline .123987 .158157 aline .126916 .159133 aline .155228 .159133 aline .157181 .158157 bezier .167308 .150198 .153008 .141887 .14937 .134726 bezier .134995 .117299 .119959 .10013 .10674 .820073E-01 bezier .125525 .568425E-01 .147385 .335334E-01 .166943 .878649E-02 aline .166943 .390511E-02 aline .165967 .195255E-02 aline .164015 0 aline .162062 -.976277E-03 aline .132774 -.976277E-03 bezier .119681 .426821E-02 .115765 .198167E-01 .106414 .292883E-01 bezier .100443 .385534E-01 .939875E-01 .477644E-01 .873768E-01 .05638 bezier .727038E-01 .387354E-01 .628861E-01 .164086E-01 .468613E-01 0 aline .439325E-01 -.976277E-03 aline .146442E-01 -.976277E-03 aline .126916E-01 0 bezier .366019E-02 .920432E-02 .183409E-01 .176554E-01 .224544E-01 .253832E-01 bezier .379743E-01 .438744E-01 .530227E-01 .627055E-01 .680953E-01 .815191E-01 bezier .504795E-01 .105311 .292542E-01 .1265 .117153E-01 .150347 aline .117153E-01 .153276 aline .136679E-01 .157181 aline .156204E-01 .158157 aline .165967E-01 .159133 closepath ! end of curve fill dfont endchar dfont char="y" !-------------- Beginning of new char. dfont wid=.500003 hei=.458333 dep=.194445 italic=.0152788 dfont fby="," kadd=-.0916672 dfont fby="." kadd=-.0916672 dfont fby="a" kadd=-.0305557 dfont fby="e" kadd=-.0305557 dfont fby="o" kadd=-.0305557 set path ! start of curve newpath ! start of curve amove .410036E-01 .159133 bezier .586365E-01 .154862 .608121E-01 .133804 .683394E-01 .120082 bezier .787568E-01 .961514E-01 .908381E-01 .714316E-01 .946989E-01 .045885 aline .956752E-01 .488139E-01 aline .966514E-01 .497901E-01 aline .966514E-01 .556478E-01 aline .976277E-01 .605292E-01 aline .995803E-01 .683394E-01 aline .100557 .712682E-01 aline .102509 .790785E-01 aline .104462 .849361E-01 aline .105438 .888412E-01 aline .124963 .147418 aline .126916 .151323 aline .132774 .157181 aline .134726 .158157 aline .137655 .159133 aline .160109 .159133 aline .162062 .158157 aline .165967 .154252 aline .166943 .150347 aline .166943 .14937 aline .157181 .120082 bezier .137938 .683379E-01 .122736 .146269E-01 .101533 -.361223E-01 bezier .895153E-01 -.608299E-01 .607762E-01 -.789611E-01 .331934E-01 -.722445E-01 aline .273358E-01 -.722445E-01 aline .263595E-01 -.712682E-01 aline .214781E-01 -.712682E-01 aline .185493E-01 -.070292 aline .165967E-01 -.693157E-01 aline .156204E-01 -.673631E-01 aline .156204E-01 -.576004E-01 aline .146442E-01 -.566241E-01 aline .146442E-01 -.045885 aline .136679E-01 -.449088E-01 aline .136679E-01 -.380748E-01 aline .146442E-01 -.361223E-01 aline .165967E-01 -.035146 aline .195255E-01 -.035146 bezier .336538E-01 -.045785 .558643E-01 -.482682E-01 .673631E-01 -.322171E-01 aline .712682E-01 -.244069E-01 aline .741971E-01 -.156204E-01 aline .751733E-01 -.136679E-01 aline .781022E-01 -.488139E-02 aline .786879E-01 -.195255E-02 bezier .578223E-01 .483354E-01 .336672E-01 .974912E-01 .117153E-01 .147418 aline .117153E-01 .154252 aline .126916E-01 .155228 aline .136679E-01 .157181 aline .156204E-01 .158157 aline .017573 .159133 closepath ! end of curve fill dfont endchar dfont char="z" !-------------- Beginning of new char. dfont wid=.476392 hei=.458333 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .145465 .159133 aline .147418 .158157 aline .14937 .157181 aline .152299 .154252 bezier .159772 .141003 .147792 .129284 .139608 .120082 bezier .115142 .087984 .892638E-01 .569065E-01 .646784E-01 .248951E-01 aline .654106E-01 .234307E-01 aline .859124E-01 .234307E-01 aline .868887E-01 .244069E-01 aline .146442 .244069E-01 aline .150347 .224544E-01 aline .153276 .195255E-01 aline .155228 .156204E-01 aline .155228 .781022E-02 aline .153276 .390511E-02 aline .150347 .976277E-03 aline .146442 -.976277E-03 aline .205018E-01 -.976277E-03 aline .165967E-01 .976277E-03 aline .136679E-01 .390511E-02 bezier .61958E-02 .171543E-01 .181757E-01 .288729E-01 .263595E-01 .380748E-01 bezier .050824 .701729E-01 .076704 .101251 .101289 .133262 aline .100557 .134726 aline .839598E-01 .134726 aline .829836E-01 .13375 aline .263595E-01 .13375 aline .224544E-01 .135703 aline .195255E-01 .138631 aline .017573 .142536 aline .017573 .14937 aline .185493E-01 .152299 aline .195255E-01 .154252 aline .224544E-01 .157181 aline .244069E-01 .158157 aline .273358E-01 .159133 closepath ! end of curve fill dfont endchar dfont char="{" !-------------- Beginning of new char. dfont wid=.550003 hei=.458333 dep=0 italic=.0305557 set path ! start of curve newpath ! start of curve amove .184516 .110319 aline .186469 .109343 aline .188421 .108367 aline .19135 .105438 aline .193303 .101533 aline .193303 .946989E-01 aline .19135 .907938E-01 aline .188421 .878649E-01 aline .184516 .859124E-01 aline .976277E-02 .859124E-01 aline .585766E-02 .878649E-01 aline .292883E-02 .907938E-01 aline .976277E-03 .946989E-01 aline .976277E-03 .101533 aline .292883E-02 .105438 aline .585766E-02 .108367 aline .781022E-02 .109343 aline .976277E-02 .110319 closepath ! end of curve fill dfont endchar dfont char="|" !-------------- Beginning of new char. dfont wid=1.10001 hei=.458333 dep=0 italic=.0305557 set path ! start of curve newpath ! start of curve amove .377819 .110319 aline .379772 .109343 aline .381724 .108367 aline .384653 .105438 aline .386606 .101533 aline .386606 .946989E-01 aline .384653 .907938E-01 aline .381724 .878649E-01 aline .377819 .859124E-01 aline .976277E-02 .859124E-01 aline .585766E-02 .878649E-01 aline .292883E-02 .907938E-01 aline .976277E-03 .946989E-01 aline .976277E-03 .101533 aline .292883E-02 .105438 aline .585766E-02 .108367 aline .781022E-02 .109343 aline .976277E-02 .110319 closepath ! end of curve fill dfont endchar dfont char="}" !-------------- Beginning of new char. dfont wid=.550003 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .946989E-01 .242117 bezier .100628 .235634 .897904E-01 .229076 .878649E-01 .222591 bezier .079663 .211158 .073027 .198597 .644343E-01 .187445 aline .449088E-01 .187445 aline .429562E-01 .188421 bezier .404174E-01 .198717 .462609E-01 .208233 .045885 .218686 aline .468613E-01 .219662 aline .468613E-01 .224544 aline .478376E-01 .22552 aline .478376E-01 .230401 aline .488139E-01 .231378 aline .488139E-01 .236259 aline .497901E-01 .240164 aline .517427E-01 .242117 aline .946989E-01 .242117 closepath ! end of curve ! start of curve amove .159133 .242117 bezier .165063 .235635 .154225 .229076 .152299 .222591 bezier .144098 .211158 .137461 .198597 .128869 .187445 aline .109343 .187445 aline .10739 .188421 bezier .104852 .198717 .110695 .208233 .110319 .218686 aline .111296 .219662 aline .111296 .224544 aline .112272 .22552 aline .112272 .230401 aline .113248 .231378 aline .113248 .236259 aline .114224 .240164 aline .116177 .242117 aline .159133 .242117 closepath ! end of curve fill dfont endchar dfont char="~" !-------------- Beginning of new char. dfont wid=.550003 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .781022E-01 .242117 bezier .966937E-01 .24098 .108098 .222213 .12594 .221615 aline .126916 .222591 aline .130821 .224544 aline .131797 .22552 aline .132774 .227473 aline .13375 .228449 aline .134726 .230401 aline .135703 .234307 aline .136679 .235283 aline .136679 .240164 aline .138631 .242117 aline .159133 .242117 aline .161086 .240164 bezier .164271 .213642 .137078 .190297 .111296 .198184 bezier .950524E-01 .201021 .847369E-01 .217597 .683394E-01 .21771 aline .673631E-01 .216734 aline .063458 .214781 aline .624817E-01 .213805 aline .615055E-01 .211852 aline .605292E-01 .210876 aline .595529E-01 .208923 aline .585766E-01 .205018 aline .576004E-01 .204042 aline .576004E-01 .199161 aline .556478E-01 .197208 aline .361223E-01 .197208 aline .341697E-01 .198184 bezier .294956E-01 .217911 .458803E-01 .238686 .654106E-01 .242117 closepath ! end of curve fill dfont endchar dfont char=127 !-------------- Beginning of new char. dfont wid=.550003 hei=.694445 dep=0 italic=0 set path ! start of curve newpath ! start of curve amove .751733E-01 .243093 aline .771259E-01 .242117 aline .790785E-01 .24114 aline .820073E-01 .238212 aline .839598E-01 .234307 aline .839598E-01 .211852 aline .820073E-01 .207947 aline .790785E-01 .205018 aline .771259E-01 .204042 aline .741971E-01 .203066 aline .449088E-01 .203066 aline .419799E-01 .204042 aline .400274E-01 .205018 aline .370985E-01 .207947 aline .361223E-01 .2099 aline .035146 .212828 aline .035146 .23333 aline .361223E-01 .236259 aline .370985E-01 .238212 aline .400274E-01 .24114 aline .419799E-01 .242117 aline .449088E-01 .243093 closepath ! end of curve ! start of curve amove .14937 .243093 aline .152299 .242117 aline .154252 .24114 aline .157181 .238212 aline .158157 .236259 aline .159133 .23333 aline .159133 .212828 aline .158157 .2099 aline .157181 .207947 aline .154252 .205018 aline .152299 .204042 aline .14937 .203066 aline .120082 .203066 aline .117153 .204042 aline .115201 .205018 aline .112272 .207947 aline .110319 .211852 aline .110319 .234307 aline .112272 .238212 aline .115201 .24114 aline .117153 .242117 aline .119106 .243093 closepath ! end of curve fill dfont endchar gle-graphics-4.2.4c/src/fonts/pltr.gle0000664000000000000000000015311311676336540016342 0ustar rootrootdfont design= 1428 dfont char=33 amove 238 95 aline 238 47 aline 285 47 aline 285 95 aline 238 95 amove 238 142 aline 190 95 aline 190 47 aline 238 0 aline 285 0 aline 333 47 aline 333 95 aline 285 142 aline 238 142 amove 285 333 aline 238 333 aline 238 1000 aline 190 952 aline 190 857 aline 238 476 amove 285 476 aline 333 857 aline 333 952 aline 285 1000 amove 238 1000 aline 285 1000 aline 285 333 stroke dfont endchar dfont char=34 amove 190 666 aline 285 714 aline 333 809 aline 333 952 aline 285 1000 aline 238 1000 aline 190 952 aline 190 904 aline 238 857 aline 285 857 aline 333 904 aline 285 714 amove 333 809 aline 285 857 amove 238 952 aline 238 904 aline 285 904 aline 285 952 aline 238 952 stroke dfont endchar stroke dfont endchar dfont char=36 amove 190 238 aline 190 190 aline 238 190 aline 238 285 aline 142 285 aline 142 190 aline 190 95 aline 238 47 aline 380 0 aline 571 0 aline 714 47 aline 761 95 aline 809 190 aline 809 333 aline 761 428 aline 619 523 aline 333 619 aline 238 666 aline 190 761 aline 190 857 aline 238 952 amove 190 714 aline 238 619 aline 333 571 aline 619 476 aline 714 428 aline 761 333 amove 714 47 aline 761 142 aline 761 285 aline 714 380 aline 619 428 aline 333 523 aline 190 619 aline 142 714 aline 142 857 aline 238 952 aline 380 1000 aline 571 1000 aline 714 952 aline 761 904 aline 809 809 aline 809 714 aline 714 714 aline 714 809 aline 761 809 aline 761 761 amove 571 1190 aline 571 -191 amove 380 -191 aline 380 1190 stroke dfont endchar dfont char=37 amove 142 0 aline 1000 1000 aline 904 952 aline 761 904 aline 619 904 aline 476 952 aline 380 1000 aline 285 1000 aline 190 952 aline 142 857 aline 142 761 aline 238 666 aline 333 666 aline 428 714 aline 476 809 aline 476 904 aline 380 1000 amove 809 333 aline 714 285 aline 666 190 aline 666 95 aline 761 0 aline 857 0 aline 952 47 aline 1000 142 aline 1000 238 aline 904 333 aline 809 333 stroke dfont endchar stroke dfont endchar dfont char=39 amove 190 761 aline 238 809 aline 285 809 aline 333 761 aline 333 714 aline 285 666 aline 238 666 aline 190 714 aline 190 857 aline 238 952 aline 333 1000 amove 238 952 aline 190 761 amove 238 761 aline 238 714 aline 285 714 aline 285 761 aline 238 761 amove 238 809 aline 190 857 stroke dfont endchar dfont char=40 amove 285 -48 aline 238 95 aline 190 285 aline 190 571 aline 238 761 aline 285 904 amove 380 1095 aline 333 1000 aline 285 857 aline 238 571 aline 238 285 aline 285 0 aline 333 -143 aline 380 -239 amove 476 -334 aline 380 -239 aline 285 -96 aline 190 95 aline 142 333 aline 142 523 aline 190 761 aline 285 952 aline 380 1095 aline 476 1190 stroke dfont endchar dfont char=41 amove 285 -239 aline 333 -143 aline 380 0 aline 428 285 aline 428 571 aline 380 857 aline 333 1000 aline 285 1095 amove 190 1190 aline 285 1095 aline 380 952 aline 476 761 aline 523 523 aline 523 333 aline 476 95 aline 380 -96 aline 285 -239 aline 190 -334 amove 380 -48 aline 428 95 aline 476 285 aline 476 571 aline 428 761 aline 380 904 stroke dfont endchar dfont char=42 amove 190 666 aline 238 952 amove 238 1000 aline 190 952 aline 190 666 aline 285 952 aline 238 1000 amove 666 1000 aline 619 952 aline 619 666 aline 666 952 amove 666 1000 aline 714 952 aline 619 666 stroke dfont endchar dfont char=43 amove 190 476 aline 1000 476 aline 1000 428 aline 190 428 aline 190 476 amove 571 857 aline 571 47 aline 619 47 aline 619 857 aline 571 857 stroke dfont endchar dfont char=44 amove 238 95 aline 238 47 aline 285 47 aline 285 95 aline 238 95 amove 333 47 aline 285 0 aline 238 0 aline 190 47 aline 190 95 aline 238 142 aline 285 142 aline 333 95 aline 333 -48 aline 285 -143 aline 190 -191 amove 285 -143 aline 333 47 amove 285 0 aline 333 -48 stroke dfont endchar dfont char=45 amove 190 476 aline 1000 476 aline 1000 428 aline 190 428 aline 190 476 stroke dfont endchar dfont char=46 amove 238 95 aline 238 47 aline 285 47 aline 285 95 aline 238 95 amove 238 142 aline 190 95 aline 190 47 aline 238 0 aline 285 0 aline 333 47 aline 333 95 aline 285 142 aline 238 142 stroke dfont endchar dfont char=47 amove 142 -334 aline 95 -334 aline 952 1190 aline 1000 1190 aline 142 -334 stroke dfont endchar dfont char=48 amove 285 95 aline 238 190 aline 190 380 aline 190 619 aline 238 809 aline 285 904 amove 428 1000 aline 523 1000 aline 666 952 aline 761 809 aline 809 571 aline 809 428 aline 761 190 aline 666 47 aline 523 0 aline 428 0 aline 285 47 aline 190 190 aline 142 428 aline 142 571 aline 190 809 aline 285 952 aline 428 1000 aline 333 952 aline 285 857 aline 238 619 aline 238 380 aline 285 142 aline 333 47 aline 428 0 amove 523 0 aline 619 47 aline 666 142 aline 714 380 aline 714 619 aline 666 857 aline 619 952 aline 523 1000 amove 666 904 aline 714 809 aline 761 619 aline 761 380 aline 714 190 aline 666 95 stroke dfont endchar dfont char=49 amove 238 0 aline 714 0 amove 619 0 aline 523 47 amove 476 47 aline 476 904 amove 428 904 aline 428 0 amove 428 47 aline 333 0 amove 380 0 aline 428 95 amove 523 95 aline 571 0 amove 523 0 aline 523 1000 aline 380 857 aline 285 809 stroke dfont endchar dfont char=50 amove 142 0 aline 142 142 aline 190 285 aline 285 380 aline 380 428 aline 619 523 aline 761 619 aline 809 714 aline 809 809 aline 761 904 aline 714 952 aline 571 1000 aline 380 1000 aline 238 952 aline 190 904 aline 142 809 aline 142 761 aline 190 714 aline 238 714 aline 285 761 aline 285 809 aline 238 857 aline 190 857 amove 190 809 aline 190 761 aline 238 761 aline 238 809 aline 190 809 amove 571 1000 aline 666 952 aline 714 809 aline 714 714 aline 666 619 aline 571 523 aline 380 428 amove 285 142 aline 523 47 aline 714 47 aline 761 95 amove 809 142 aline 714 95 aline 523 95 aline 285 142 aline 190 142 aline 142 95 amove 285 142 aline 523 0 aline 714 0 aline 761 47 aline 809 142 aline 809 238 amove 714 619 aline 761 714 aline 761 809 aline 714 904 stroke dfont endchar dfont char=51 amove 190 142 aline 238 142 aline 285 190 aline 285 238 aline 238 285 aline 190 285 aline 142 238 aline 142 190 aline 190 95 aline 238 47 aline 380 0 aline 571 0 aline 714 47 aline 761 95 aline 809 190 aline 809 333 aline 761 428 aline 666 523 aline 571 571 aline 428 571 amove 523 571 aline 619 619 aline 666 714 aline 666 857 aline 619 952 aline 523 1000 amove 666 952 aline 714 857 aline 714 714 aline 666 619 amove 571 571 aline 714 619 aline 761 714 aline 761 857 aline 714 952 aline 571 1000 aline 380 1000 aline 238 952 aline 190 904 aline 142 809 aline 142 761 aline 190 714 aline 238 714 aline 285 761 aline 285 809 aline 238 857 aline 190 857 amove 190 809 aline 190 761 aline 238 761 aline 238 809 aline 190 809 amove 523 571 aline 619 523 aline 666 476 aline 714 333 aline 714 190 aline 666 47 aline 571 -1 amove 714 95 aline 761 190 aline 761 333 aline 714 428 amove 190 238 aline 190 190 aline 238 190 aline 238 238 aline 190 238 stroke dfont endchar dfont char=52 amove 380 0 aline 761 0 amove 714 0 aline 619 47 amove 571 47 aline 571 904 amove 523 857 aline 523 0 amove 523 47 aline 428 0 amove 476 0 aline 523 95 amove 619 95 aline 666 0 amove 619 0 aline 619 1000 aline 95 285 aline 857 285 stroke dfont endchar dfont char=53 amove 190 142 aline 238 142 aline 285 190 aline 285 238 aline 238 285 aline 190 285 aline 142 238 aline 142 190 aline 190 95 aline 238 47 aline 380 0 aline 523 0 aline 666 47 aline 761 142 aline 809 285 aline 809 380 aline 761 523 aline 666 619 aline 523 666 aline 380 666 aline 238 619 aline 142 523 aline 238 1000 aline 714 1000 aline 619 952 aline 428 904 aline 238 904 amove 238 952 aline 619 952 amove 523 666 aline 619 619 aline 666 571 aline 714 428 aline 714 238 aline 666 95 aline 619 47 aline 523 -1 amove 714 142 aline 761 238 aline 761 428 aline 714 523 amove 190 238 aline 190 190 aline 238 190 aline 238 238 aline 190 238 stroke dfont endchar dfont char=54 amove 285 95 aline 238 142 aline 190 285 aline 190 571 aline 238 761 aline 285 857 amove 476 1000 aline 380 952 aline 333 904 aline 285 809 aline 238 619 aline 238 285 aline 285 142 aline 333 47 aline 428 0 amove 523 0 aline 619 47 aline 666 95 aline 714 238 aline 714 380 aline 666 523 aline 619 571 aline 523 619 amove 714 476 aline 761 380 aline 761 238 aline 714 142 amove 238 428 aline 285 523 aline 333 571 aline 428 619 aline 523 619 aline 666 571 aline 761 476 aline 809 333 aline 809 285 aline 761 142 aline 666 47 aline 523 0 aline 428 0 aline 285 47 aline 190 142 aline 142 285 aline 142 571 aline 190 761 aline 238 857 aline 333 952 aline 476 1000 aline 619 1000 aline 714 952 aline 761 857 aline 761 809 aline 714 761 aline 666 761 aline 619 809 aline 619 857 aline 666 904 aline 714 904 amove 666 857 aline 666 809 aline 714 809 aline 714 857 aline 666 857 stroke dfont endchar dfont char=55 amove 428 0 aline 428 190 aline 476 333 aline 523 428 amove 761 714 aline 523 476 aline 428 333 aline 380 190 aline 380 0 aline 476 0 aline 476 190 aline 523 380 aline 571 476 aline 761 714 aline 809 857 aline 809 1000 aline 761 904 aline 714 857 aline 619 857 aline 380 1000 aline 285 1000 aline 190 904 aline 142 809 aline 190 857 aline 285 904 aline 380 904 aline 619 857 amove 476 904 aline 380 952 aline 285 952 aline 238 904 amove 142 1000 aline 142 714 stroke dfont endchar dfont char=56 amove 238 95 aline 190 190 aline 190 380 aline 238 476 amove 285 619 aline 238 714 aline 238 857 aline 285 952 amove 380 1000 aline 571 1000 aline 714 952 aline 761 857 aline 761 714 aline 714 619 aline 571 571 aline 380 571 aline 238 619 aline 190 714 aline 190 857 aline 238 952 aline 380 1000 aline 333 952 aline 285 857 aline 285 714 aline 333 619 aline 380 571 aline 238 523 aline 190 476 aline 142 380 aline 142 190 aline 190 95 aline 238 47 aline 380 -1 aline 571 -1 aline 714 47 aline 761 95 aline 809 190 aline 809 380 aline 761 476 aline 714 523 aline 571 571 aline 619 619 aline 666 714 aline 666 857 aline 619 952 aline 571 1000 amove 666 952 aline 714 857 aline 714 714 aline 666 619 amove 571 571 aline 666 523 aline 714 380 aline 714 190 aline 666 47 aline 571 -1 amove 714 95 aline 761 190 aline 761 380 aline 714 476 amove 380 571 aline 285 523 aline 238 380 aline 238 190 aline 285 47 aline 380 -1 stroke dfont endchar dfont char=57 amove 238 95 aline 285 95 aline 333 142 aline 333 190 aline 285 238 aline 238 238 aline 190 190 aline 190 142 aline 238 47 aline 333 0 aline 476 0 aline 619 47 aline 714 142 aline 761 238 aline 809 428 aline 809 714 aline 761 857 aline 666 952 aline 523 1000 aline 428 1000 aline 285 952 aline 190 857 aline 142 714 aline 142 666 aline 190 523 aline 285 428 aline 428 380 aline 523 380 aline 619 428 aline 666 476 aline 714 571 amove 666 904 aline 714 857 aline 761 714 aline 761 428 aline 714 238 aline 666 142 amove 476 0 aline 571 47 aline 619 95 aline 666 190 aline 714 380 aline 714 714 aline 666 857 aline 619 952 aline 523 1000 amove 428 1000 aline 333 952 aline 285 904 aline 238 761 aline 238 619 aline 285 476 aline 333 428 aline 428 380 amove 238 523 aline 190 619 aline 190 761 aline 238 857 amove 238 190 aline 238 142 aline 285 142 aline 285 190 aline 238 190 stroke dfont endchar dfont char=58 amove 238 95 aline 238 47 aline 285 47 aline 285 95 aline 238 95 amove 238 142 aline 190 95 aline 190 47 aline 238 0 aline 285 0 aline 333 47 aline 333 95 aline 285 142 aline 238 142 amove 238 619 aline 238 571 aline 285 571 aline 285 619 aline 238 619 amove 238 666 aline 190 619 aline 190 571 aline 238 523 aline 285 523 aline 333 571 aline 333 619 aline 285 666 aline 238 666 stroke dfont endchar dfont char=59 amove 238 95 aline 238 47 aline 285 47 aline 285 95 aline 238 95 amove 333 47 aline 285 0 aline 238 0 aline 190 47 aline 190 95 aline 238 142 aline 285 142 aline 333 95 aline 333 -48 aline 285 -143 aline 190 -191 amove 285 -143 aline 333 47 amove 285 0 aline 333 -48 amove 238 619 aline 238 571 aline 285 571 aline 285 619 aline 238 619 amove 238 666 aline 190 619 aline 190 571 aline 238 523 aline 285 523 aline 333 571 aline 333 619 aline 285 666 aline 238 666 stroke dfont endchar dfont char=60 amove 952 857 aline 190 428 aline 952 0 stroke dfont endchar dfont char=61 amove 190 285 aline 1000 285 aline 1000 238 aline 190 238 aline 190 285 amove 190 666 aline 1000 666 aline 1000 619 aline 190 619 aline 190 666 stroke dfont endchar dfont char=62 amove 190 0 aline 952 428 aline 190 857 stroke dfont endchar dfont char=63 amove 428 95 aline 428 47 aline 476 47 aline 476 95 aline 428 95 amove 428 142 aline 380 95 aline 380 47 aline 428 0 aline 476 0 aline 523 47 aline 523 95 aline 476 142 aline 428 142 amove 428 476 aline 428 333 aline 476 333 aline 476 476 aline 428 476 amove 476 476 aline 666 571 aline 714 619 aline 761 714 aline 761 809 aline 714 904 aline 666 952 aline 523 1000 aline 333 1000 aline 238 952 aline 190 904 aline 142 809 aline 142 714 aline 238 714 aline 238 809 aline 190 809 aline 190 761 amove 523 1000 aline 619 952 aline 666 857 aline 666 666 aline 619 571 aline 571 523 amove 666 619 aline 714 666 aline 714 857 aline 666 904 stroke dfont endchar dfont char=64 amove 523 238 aline 476 285 aline 428 380 aline 428 523 aline 476 666 aline 571 761 amove 857 761 aline 809 380 aline 809 285 aline 904 238 aline 999 238 aline 1095 333 aline 1142 476 aline 1142 571 aline 1095 714 aline 1047 809 aline 952 904 aline 857 952 aline 714 1000 aline 571 1000 aline 428 952 aline 333 904 aline 238 809 aline 190 714 aline 142 571 aline 142 428 aline 190 285 aline 238 190 aline 333 95 aline 428 47 aline 571 0 aline 714 0 aline 857 47 aline 952 95 aline 1000 142 amove 904 238 aline 857 285 aline 857 380 aline 904 761 amove 857 619 aline 809 714 aline 714 761 aline 571 761 aline 476 714 aline 428 666 aline 380 523 aline 380 380 aline 428 285 aline 523 238 aline 666 238 aline 761 285 aline 809 380 stroke dfont endchar dfont char=65 amove 47 0 aline 333 0 amove 238 0 aline 142 47 aline 476 1000 aline 809 0 amove 761 0 aline 476 857 amove 428 857 aline 714 0 amove 714 47 aline 619 0 amove 571 0 aline 904 0 amove 857 0 aline 761 95 amove 714 95 aline 666 0 amove 666 285 aline 238 285 amove 142 47 aline 95 0 stroke dfont endchar dfont char=66 amove 95 0 aline 666 0 aline 809 47 aline 857 95 aline 904 190 aline 904 333 aline 857 428 aline 809 476 aline 666 523 aline 333 523 amove 666 523 aline 809 571 aline 857 619 aline 904 714 aline 904 809 aline 857 904 aline 809 952 aline 666 1000 aline 95 1000 amove 142 1000 aline 238 952 amove 238 1000 aline 238 0 amove 238 47 aline 142 0 amove 190 0 aline 238 95 amove 285 47 aline 285 952 amove 333 952 aline 428 1000 amove 380 1000 aline 333 904 amove 333 1000 aline 333 0 amove 380 0 aline 333 95 amove 333 47 aline 428 0 amove 666 0 aline 761 47 aline 809 142 aline 809 380 aline 761 476 aline 666 523 aline 761 571 aline 809 666 aline 809 857 aline 761 952 aline 666 1000 amove 809 904 aline 857 809 aline 857 714 aline 809 619 amove 809 428 aline 857 333 aline 857 190 aline 809 95 amove 238 904 aline 190 1000 stroke dfont endchar dfont char=67 amove 285 142 aline 238 238 aline 190 380 aline 190 619 aline 238 761 aline 285 857 amove 476 1000 aline 380 952 aline 285 809 aline 238 619 aline 238 380 aline 285 190 aline 380 47 aline 476 -1 amove 857 238 aline 809 142 aline 714 47 aline 619 -1 aline 476 -1 aline 333 47 aline 238 142 aline 190 238 aline 142 380 aline 142 619 aline 190 761 aline 238 857 aline 333 952 aline 476 1000 aline 619 1000 aline 714 952 aline 809 857 aline 857 714 aline 857 1000 aline 809 857 stroke dfont endchar dfont char=68 amove 95 0 aline 571 0 aline 714 47 aline 809 142 aline 857 238 aline 904 380 aline 904 619 aline 857 761 aline 809 857 aline 714 952 aline 571 1000 aline 95 1000 amove 142 1000 aline 238 952 amove 238 1000 aline 238 0 amove 238 47 aline 142 0 amove 190 0 aline 238 95 amove 285 47 aline 285 952 amove 333 952 aline 428 1000 amove 380 1000 aline 333 904 amove 333 1000 aline 333 0 amove 380 0 aline 333 95 amove 333 47 aline 428 0 amove 571 0 aline 666 47 aline 761 190 aline 809 380 aline 809 619 aline 761 809 aline 666 952 aline 571 1000 amove 761 857 aline 809 761 aline 857 619 aline 857 380 aline 809 238 aline 761 142 amove 238 904 aline 190 1000 stroke dfont endchar dfont char=69 amove 95 0 aline 857 0 aline 857 285 aline 809 0 amove 761 0 aline 857 142 amove 857 95 aline 714 0 amove 619 0 aline 857 47 amove 619 333 aline 619 714 aline 571 523 aline 619 333 amove 619 428 aline 523 523 aline 619 619 amove 619 571 aline 428 523 aline 619 476 amove 619 523 aline 333 523 amove 333 904 aline 380 1000 amove 333 1000 aline 333 0 amove 380 0 aline 333 95 amove 333 47 aline 428 0 amove 285 47 aline 285 952 amove 238 952 aline 142 1000 amove 95 1000 aline 857 1000 aline 857 714 aline 809 1000 amove 761 1000 aline 857 857 amove 857 904 aline 714 999 amove 619 999 aline 857 952 amove 428 999 aline 333 952 amove 238 999 aline 238 -1 amove 238 47 aline 142 -1 amove 190 -1 aline 238 95 amove 238 904 aline 190 999 stroke dfont endchar dfont char=70 amove 95 0 aline 476 0 amove 428 0 aline 333 47 amove 285 47 aline 285 952 amove 238 952 aline 142 1000 amove 95 1000 aline 857 1000 aline 857 714 aline 809 1000 amove 761 1000 aline 857 857 amove 857 904 aline 714 999 amove 619 999 aline 857 952 amove 619 714 aline 619 333 aline 571 523 aline 619 714 amove 619 619 aline 523 523 aline 619 428 amove 619 476 aline 428 523 aline 619 571 amove 619 523 aline 333 523 amove 333 904 aline 380 1000 amove 333 1000 aline 333 0 amove 380 0 aline 333 95 amove 238 95 aline 190 0 amove 238 0 aline 238 1000 amove 190 1000 aline 238 904 amove 333 952 aline 428 1000 amove 238 47 aline 142 0 stroke dfont endchar dfont char=71 amove 285 142 aline 238 238 aline 190 380 aline 190 619 aline 238 761 aline 285 857 amove 476 1000 aline 380 952 aline 285 809 aline 238 619 aline 238 380 aline 285 190 aline 380 47 aline 476 -1 amove 714 47 aline 761 95 aline 761 380 amove 761 333 aline 666 380 amove 619 380 aline 1000 380 amove 952 380 aline 857 333 amove 857 380 aline 857 -1 aline 809 47 aline 714 47 aline 619 -1 aline 476 -1 aline 333 47 aline 238 142 aline 190 238 aline 142 380 aline 142 619 aline 190 761 aline 238 857 aline 333 952 aline 476 1000 aline 619 1000 aline 714 952 aline 809 857 aline 857 714 aline 857 1000 aline 809 857 amove 714 380 aline 761 285 amove 809 333 aline 809 95 amove 857 285 aline 904 380 stroke dfont endchar dfont char=72 amove 95 0 aline 476 0 amove 428 0 aline 333 47 amove 285 47 aline 285 952 amove 238 952 aline 142 1000 amove 95 1000 aline 476 1000 amove 428 1000 aline 333 952 amove 333 1000 aline 333 0 amove 380 0 aline 333 95 amove 238 95 aline 190 0 amove 238 0 aline 238 1000 amove 190 1000 aline 238 904 amove 333 904 aline 380 1000 amove 666 1000 aline 1047 1000 amove 1000 1000 aline 904 952 amove 857 952 aline 857 47 amove 809 47 aline 714 -1 amove 666 -1 aline 1047 -1 amove 1000 -1 aline 904 47 amove 904 -1 aline 904 999 amove 952 999 aline 904 904 amove 809 904 aline 761 999 amove 809 999 aline 809 -1 amove 761 -1 aline 809 95 amove 904 95 aline 952 -1 amove 809 523 aline 333 523 amove 238 47 aline 142 -1 amove 714 999 aline 809 952 stroke dfont endchar dfont char=73 amove 95 0 aline 476 0 amove 428 0 aline 333 47 amove 285 47 aline 285 952 amove 238 952 aline 142 1000 amove 95 1000 aline 476 1000 amove 428 1000 aline 333 952 amove 333 1000 aline 333 0 amove 380 0 aline 333 95 amove 238 95 aline 190 0 amove 238 0 aline 238 1000 amove 190 1000 aline 238 904 amove 333 904 aline 380 1000 amove 238 47 aline 142 0 stroke dfont endchar dfont char=74 amove 142 142 aline 190 142 aline 238 190 aline 238 238 aline 190 285 aline 142 285 aline 95 238 aline 95 142 aline 142 47 aline 238 0 aline 333 0 aline 476 47 aline 523 190 aline 523 1000 amove 571 1000 aline 523 904 amove 523 952 aline 619 1000 amove 666 1000 aline 285 1000 amove 333 1000 aline 428 952 amove 428 1000 aline 428 190 aline 380 47 aline 333 0 amove 428 47 aline 476 190 aline 476 952 amove 428 904 aline 380 1000 amove 142 238 aline 142 190 aline 190 190 aline 190 238 aline 142 238 stroke dfont endchar dfont char=75 amove 95 0 aline 476 0 amove 428 0 aline 333 47 amove 285 47 aline 285 952 amove 238 952 aline 142 1000 amove 95 1000 aline 476 1000 amove 428 1000 aline 333 952 amove 333 1000 aline 333 0 amove 380 0 aline 333 95 amove 238 95 aline 190 0 amove 238 0 aline 238 1000 amove 190 1000 aline 238 904 amove 333 904 aline 380 1000 amove 714 1000 aline 1000 1000 amove 952 1000 aline 857 952 aline 333 428 amove 476 523 aline 809 0 amove 857 0 aline 523 523 amove 523 619 aline 904 0 amove 952 0 aline 809 95 aline 714 0 amove 666 0 aline 1000 0 amove 238 47 aline 142 0 amove 857 952 aline 809 1000 stroke dfont endchar dfont char=76 amove 95 0 aline 809 0 aline 809 285 aline 761 0 amove 714 0 aline 809 142 amove 809 95 aline 666 0 amove 571 0 aline 809 47 amove 428 0 aline 333 47 amove 285 47 aline 285 952 amove 238 952 aline 142 1000 amove 95 1000 aline 476 1000 amove 428 1000 aline 333 952 amove 333 1000 aline 333 0 amove 380 0 aline 333 95 amove 238 95 aline 190 0 amove 238 0 aline 238 1000 amove 190 1000 aline 238 904 amove 333 904 aline 380 1000 amove 238 47 aline 142 0 stroke dfont endchar dfont char=77 amove 95 0 aline 380 0 amove 333 0 aline 238 47 aline 238 1000 aline 571 0 aline 904 1000 aline 904 0 amove 904 47 aline 809 0 amove 761 0 aline 1142 0 amove 1095 0 aline 1000 47 amove 952 47 aline 952 952 amove 1000 952 aline 1095 1000 amove 1142 1000 aline 904 1000 amove 1000 1000 aline 1000 0 amove 1047 0 aline 1000 95 amove 904 95 aline 857 0 amove 619 142 aline 333 1000 aline 95 1000 amove 142 1000 aline 238 952 amove 285 1000 aline 571 142 amove 238 47 aline 142 0 amove 1000 904 aline 1047 1000 stroke dfont endchar dfont char=78 amove 95 0 aline 380 0 amove 333 0 aline 238 47 aline 238 1000 aline 904 0 aline 904 952 aline 809 1000 amove 761 1000 aline 1047 1000 amove 1000 1000 aline 904 952 amove 333 1000 aline 904 142 amove 857 142 aline 285 1000 amove 333 1000 aline 95 1000 amove 142 1000 aline 238 952 amove 238 47 aline 142 -1 stroke dfont endchar dfont char=79 amove 285 142 aline 238 238 aline 190 380 aline 190 619 aline 238 761 aline 285 857 amove 476 1000 aline 571 1000 aline 714 952 aline 809 857 aline 857 761 aline 904 571 aline 904 428 aline 857 238 aline 809 142 aline 714 47 aline 571 0 aline 476 0 aline 333 47 aline 238 142 aline 190 238 aline 142 428 aline 142 571 aline 190 761 aline 238 857 aline 333 952 aline 476 1000 aline 380 952 aline 285 809 aline 238 619 aline 238 380 aline 285 190 aline 380 47 aline 476 0 amove 571 0 aline 666 47 aline 761 190 aline 809 380 aline 809 619 aline 761 809 aline 666 952 aline 571 1000 amove 761 857 aline 809 761 aline 857 619 aline 857 380 aline 809 238 aline 761 142 stroke dfont endchar dfont char=80 amove 95 0 aline 476 0 amove 428 0 aline 333 47 amove 285 47 aline 285 952 amove 238 952 aline 142 1000 amove 95 1000 aline 666 1000 aline 809 952 aline 857 904 aline 904 809 aline 904 666 aline 857 571 aline 809 523 aline 666 476 aline 333 476 amove 666 476 aline 761 523 aline 809 619 aline 809 857 aline 761 952 aline 666 999 amove 809 904 aline 857 809 aline 857 666 aline 809 571 amove 428 999 aline 333 952 amove 333 999 aline 333 -1 amove 380 -1 aline 333 95 amove 238 95 aline 190 -1 amove 238 -1 aline 238 999 amove 190 999 aline 238 904 amove 333 904 aline 380 999 amove 238 47 aline 142 -1 stroke dfont endchar dfont char=81 amove 285 142 aline 238 238 aline 190 380 aline 190 619 aline 238 761 aline 285 857 amove 476 1000 aline 571 1000 aline 714 952 aline 809 857 aline 857 761 aline 904 571 aline 904 428 aline 857 238 aline 809 142 aline 714 47 aline 571 0 aline 476 0 aline 333 47 aline 238 142 aline 190 238 aline 142 428 aline 142 571 aline 190 761 aline 238 857 aline 333 952 aline 476 1000 aline 380 952 aline 285 809 aline 238 619 aline 238 380 aline 285 190 aline 380 47 aline 476 0 amove 571 0 aline 666 47 aline 761 190 aline 809 380 aline 809 619 aline 761 809 aline 666 952 aline 571 1000 amove 761 857 aline 809 761 aline 857 619 aline 857 380 aline 809 238 aline 761 142 amove 666 142 aline 761 -96 aline 809 -143 aline 857 -143 aline 904 -96 amove 904 -48 aline 904 -143 aline 857 -239 aline 761 -239 aline 714 -143 aline 666 142 aline 619 238 aline 523 285 aline 476 285 aline 380 238 aline 333 142 amove 714 -48 aline 761 -143 aline 809 -191 aline 857 -191 stroke dfont endchar dfont char=82 amove 95 0 aline 476 0 amove 428 0 aline 333 47 amove 285 47 aline 285 952 amove 238 952 aline 142 1000 amove 95 1000 aline 666 1000 aline 809 952 aline 857 904 aline 904 809 aline 904 714 aline 857 619 aline 809 571 aline 666 523 aline 333 523 amove 523 523 aline 619 476 aline 666 380 aline 761 95 aline 809 -1 aline 904 -1 aline 952 95 aline 952 190 amove 952 142 aline 904 95 aline 857 95 aline 809 142 aline 666 428 aline 619 476 amove 666 523 aline 761 571 aline 809 666 aline 809 857 aline 761 952 aline 666 1000 amove 809 904 aline 857 809 aline 857 714 aline 809 619 amove 761 190 aline 809 95 aline 857 47 aline 904 47 amove 380 0 aline 333 95 amove 333 0 aline 333 1000 amove 380 1000 aline 333 904 amove 333 952 aline 428 1000 amove 238 1000 aline 238 0 amove 238 47 aline 142 0 amove 190 0 aline 238 95 amove 238 904 aline 190 1000 stroke dfont endchar dfont char=83 amove 190 142 aline 142 0 aline 142 285 aline 190 142 aline 285 47 aline 428 0 aline 571 0 aline 714 47 aline 761 95 aline 809 190 aline 809 333 aline 761 428 aline 619 523 aline 333 619 aline 238 666 aline 190 761 aline 190 857 aline 238 952 amove 190 714 aline 238 619 aline 333 571 aline 619 476 aline 714 428 aline 761 333 amove 714 47 aline 761 142 aline 761 285 aline 714 380 aline 619 428 aline 333 523 aline 190 619 aline 142 714 aline 142 857 aline 238 952 aline 380 1000 aline 523 1000 aline 666 952 aline 761 857 aline 809 714 aline 809 1000 aline 761 857 stroke dfont endchar dfont char=84 amove 285 0 aline 666 0 amove 619 0 aline 523 47 amove 476 47 aline 476 952 amove 428 1000 aline 428 0 amove 428 47 aline 333 0 amove 380 0 aline 428 95 amove 523 95 aline 571 0 amove 523 0 aline 523 1000 amove 619 1000 aline 857 952 amove 857 1000 aline 95 1000 aline 95 714 aline 142 1000 amove 190 1000 aline 95 857 amove 95 904 aline 238 999 amove 333 999 aline 95 952 amove 714 999 aline 857 904 amove 857 857 aline 761 1000 amove 809 1000 aline 857 714 aline 857 1000 stroke dfont endchar dfont char=85 amove 333 142 aline 285 238 aline 285 952 amove 238 952 aline 142 1000 amove 95 1000 aline 476 1000 amove 428 1000 aline 333 952 amove 333 1000 aline 333 238 aline 380 95 aline 428 47 aline 523 0 amove 333 904 aline 380 1000 amove 238 1000 aline 238 285 aline 285 142 aline 380 47 aline 523 0 aline 619 0 aline 761 47 aline 857 142 aline 904 285 aline 904 952 aline 809 1000 amove 761 1000 aline 1047 1000 amove 1000 1000 aline 904 952 amove 238 904 aline 190 1000 stroke dfont endchar dfont char=86 amove 476 0 aline 142 1000 amove 190 1000 aline 476 142 aline 476 0 aline 809 952 aline 714 1000 amove 619 1000 aline 904 1000 amove 857 1000 aline 809 952 amove 380 1000 aline 47 1000 amove 95 1000 aline 190 904 amove 238 904 aline 285 1000 amove 238 1000 aline 523 142 amove 238 952 aline 333 1000 stroke dfont endchar dfont char=87 amove 380 0 aline 190 1000 amove 238 1000 aline 380 238 aline 380 -1 aline 428 238 aline 571 1000 aline 761 0 aline 761 238 aline 619 1000 amove 666 1000 aline 809 238 amove 761 -1 aline 809 238 aline 952 952 aline 857 1000 amove 809 1000 aline 1095 1000 amove 1047 1000 aline 952 952 amove 666 1000 aline 571 1000 amove 428 1000 aline 47 1000 amove 95 1000 aline 238 952 amove 238 904 aline 142 1000 amove 285 1000 aline 428 238 amove 285 904 aline 333 1000 amove 380 1000 aline 285 952 stroke dfont endchar dfont char=88 amove 47 0 aline 333 0 amove 285 0 aline 190 47 aline 761 952 aline 666 1000 amove 619 1000 aline 904 1000 amove 857 1000 aline 761 952 amove 380 1000 aline 47 1000 amove 95 1000 aline 238 904 aline 285 1000 amove 238 1000 aline 809 0 amove 761 0 aline 190 1000 amove 142 1000 aline 714 0 amove 714 47 aline 619 0 amove 571 0 aline 904 0 amove 857 0 aline 714 95 aline 666 0 amove 190 47 aline 95 0 amove 238 952 aline 333 1000 stroke dfont endchar dfont char=89 amove 333 0 aline 714 0 amove 666 0 aline 571 47 amove 523 47 aline 523 476 aline 190 1000 amove 142 1000 aline 476 476 aline 476 0 amove 476 47 aline 380 0 amove 428 0 aline 476 95 amove 571 95 aline 619 0 amove 571 0 aline 571 476 aline 238 1000 amove 238 952 aline 333 1000 amove 380 1000 aline 47 1000 amove 95 1000 aline 190 952 amove 714 1000 aline 1000 1000 amove 952 1000 aline 857 952 aline 571 476 amove 857 952 aline 761 1000 stroke dfont endchar dfont char=90 amove 142 0 aline 714 1000 amove 761 1000 aline 190 0 amove 238 0 aline 809 1000 aline 142 1000 aline 142 714 aline 190 1000 amove 238 1000 aline 142 857 amove 142 904 aline 285 999 amove 380 999 aline 142 952 amove 809 285 aline 809 -1 aline 142 -1 amove 571 -1 aline 809 47 amove 809 95 aline 666 -1 amove 714 -1 aline 809 142 amove 809 285 aline 761 -1 stroke dfont endchar dfont char=91 amove 190 -334 aline 190 1190 aline 523 1190 amove 238 1190 aline 238 -334 amove 190 -334 aline 523 -334 stroke dfont endchar stroke dfont endchar dfont char=93 amove 142 -334 aline 476 -334 aline 476 1190 aline 142 1190 amove 428 1190 aline 428 -334 stroke dfont endchar stroke dfont endchar stroke dfont endchar dfont char=96 amove 238 904 aline 285 952 aline 238 1000 aline 190 952 aline 190 857 aline 238 761 aline 285 714 stroke dfont endchar dfont char=97 amove 238 47 aline 190 142 aline 190 190 aline 238 285 amove 238 523 aline 238 571 aline 285 571 aline 285 476 aline 190 476 aline 190 571 aline 238 619 aline 333 666 aline 523 666 aline 619 619 aline 666 571 aline 714 476 aline 714 142 aline 761 47 aline 809 0 amove 857 0 aline 809 0 aline 666 47 aline 619 142 aline 619 523 aline 571 619 aline 523 666 amove 619 571 aline 666 476 aline 666 142 aline 714 47 amove 619 142 aline 571 47 aline 476 0 aline 333 0 aline 190 47 aline 142 142 aline 142 190 aline 190 285 aline 333 333 aline 571 380 aline 619 428 amove 571 380 aline 380 333 aline 285 285 aline 238 190 aline 238 142 aline 285 47 aline 333 0 stroke dfont endchar dfont char=98 amove 285 95 aline 285 952 amove 238 952 aline 142 1000 amove 95 1000 aline 333 1000 aline 333 47 amove 380 47 aline 285 47 aline 238 0 aline 238 1000 amove 190 1000 aline 238 904 amove 333 523 aline 380 619 aline 476 666 aline 571 666 aline 714 619 aline 809 523 aline 857 380 aline 857 285 aline 809 142 aline 714 47 aline 571 0 aline 476 0 aline 380 47 aline 333 142 amove 571 0 aline 666 47 aline 714 95 aline 761 238 aline 761 428 aline 714 571 aline 666 619 aline 571 666 amove 761 523 aline 809 428 aline 809 238 aline 761 142 stroke dfont endchar dfont char=99 amove 238 142 aline 190 238 aline 190 428 aline 238 523 amove 428 666 aline 333 619 aline 285 571 aline 238 428 aline 238 238 aline 285 95 aline 333 47 aline 428 0 amove 761 142 aline 666 47 aline 523 0 aline 428 0 aline 285 47 aline 190 142 aline 142 285 aline 142 380 aline 190 523 aline 285 619 aline 428 666 aline 571 666 aline 666 619 aline 761 523 aline 761 428 aline 666 428 aline 666 523 aline 714 523 aline 714 476 stroke dfont endchar dfont char=100 amove 238 142 aline 190 238 aline 190 428 aline 238 523 amove 428 666 aline 333 619 aline 285 571 aline 238 428 aline 238 238 aline 285 95 aline 333 47 aline 428 0 amove 666 142 aline 619 47 aline 523 0 aline 428 0 aline 285 47 aline 190 142 aline 142 285 aline 142 380 aline 190 523 aline 285 619 aline 428 666 aline 523 666 aline 619 619 aline 666 523 amove 666 904 aline 619 1000 amove 666 1000 aline 666 0 aline 904 0 amove 857 0 aline 761 47 amove 714 47 aline 714 952 amove 666 952 aline 571 1000 amove 523 1000 aline 761 1000 aline 761 0 amove 809 0 aline 761 95 stroke dfont endchar dfont char=101 amove 238 142 aline 190 238 aline 190 428 aline 238 523 amove 238 380 aline 761 380 aline 761 476 aline 714 571 aline 666 619 aline 523 666 aline 428 666 aline 285 619 aline 190 523 aline 142 380 aline 142 285 aline 190 142 aline 285 47 aline 428 0 aline 523 0 aline 666 47 aline 761 142 amove 666 380 aline 666 523 aline 619 619 aline 523 666 amove 428 666 aline 333 619 aline 285 571 aline 238 428 aline 238 238 aline 285 95 aline 333 47 aline 428 0 amove 714 428 aline 714 476 aline 666 571 stroke dfont endchar dfont char=102 amove 95 0 aline 476 0 amove 428 0 aline 333 47 amove 285 47 aline 285 761 aline 333 904 amove 428 1000 aline 380 952 aline 333 857 aline 333 0 amove 380 0 aline 333 95 amove 238 95 aline 190 0 amove 238 0 aline 238 761 aline 285 904 aline 333 952 aline 428 1000 aline 571 1000 aline 619 952 aline 619 857 aline 523 857 aline 523 952 aline 571 952 aline 571 904 amove 523 666 aline 95 666 amove 238 47 aline 142 -1 stroke dfont endchar dfont char=103 amove 142 95 aline 190 47 aline 333 0 aline 571 0 aline 714 -48 aline 761 -143 aline 761 -191 aline 714 -286 aline 571 -334 aline 285 -334 aline 142 -286 aline 95 -191 aline 95 -143 aline 142 -48 aline 285 0 aline 190 -48 aline 142 -143 aline 142 -191 aline 190 -286 aline 285 -334 amove 238 -1 aline 380 -48 aline 571 -48 aline 714 -96 amove 761 -191 aline 714 -143 aline 571 -96 aline 380 -96 aline 238 -48 aline 190 -1 aline 142 95 aline 142 142 aline 190 238 aline 238 285 amove 285 285 aline 238 380 aline 238 476 aline 285 571 amove 380 666 aline 476 666 aline 571 619 aline 619 571 aline 666 476 aline 666 380 aline 619 285 aline 571 238 aline 476 190 aline 380 190 aline 285 238 aline 238 285 aline 190 380 aline 190 476 aline 238 571 aline 285 619 aline 380 666 aline 333 619 aline 285 523 aline 285 333 aline 333 238 aline 380 190 amove 476 190 aline 523 238 aline 571 333 aline 571 523 aline 523 619 aline 476 666 amove 571 571 aline 619 619 aline 714 666 aline 761 666 aline 809 619 aline 761 571 aline 714 619 amove 571 571 aline 619 476 aline 619 380 aline 571 285 stroke dfont endchar dfont char=104 amove 95 0 aline 476 0 amove 428 0 aline 333 47 amove 285 47 aline 285 952 amove 238 952 aline 142 1000 amove 95 1000 aline 333 1000 aline 333 0 amove 380 0 aline 333 95 amove 238 95 aline 190 0 amove 238 0 aline 238 1000 amove 190 1000 aline 238 904 amove 333 476 aline 380 571 aline 428 619 aline 523 666 aline 666 666 aline 761 619 aline 809 571 aline 857 428 aline 857 0 amove 904 0 aline 857 95 amove 857 47 aline 952 0 amove 1000 0 aline 619 0 amove 666 0 aline 761 47 amove 809 47 aline 809 428 aline 761 571 amove 666 666 aline 714 619 aline 761 476 aline 761 -1 amove 714 -1 aline 761 95 amove 238 47 aline 142 -1 stroke dfont endchar dfont char=105 amove 95 0 aline 476 0 amove 428 0 aline 333 47 amove 285 47 aline 285 619 amove 238 619 aline 142 666 amove 95 666 aline 333 666 aline 333 0 amove 380 0 aline 333 95 amove 238 95 aline 190 0 amove 238 0 aline 238 666 amove 190 666 aline 238 571 amove 285 904 aline 285 1000 amove 238 1000 aline 238 904 aline 333 904 aline 333 1000 aline 238 1000 amove 238 952 aline 333 952 amove 238 47 aline 142 0 stroke dfont endchar dfont char=106 amove 95 -239 aline 95 -286 aline 142 -286 aline 142 -191 aline 47 -191 aline 47 -286 aline 95 -334 aline 238 -334 aline 333 -286 aline 380 -239 aline 428 -96 aline 428 666 aline 190 666 amove 238 666 aline 333 619 amove 333 666 aline 333 -143 aline 285 -286 aline 238 -334 amove 333 -239 aline 380 -96 aline 380 619 amove 333 571 aline 285 666 amove 380 904 aline 380 1000 amove 333 1000 aline 333 904 aline 428 904 aline 428 1000 aline 333 1000 amove 333 952 aline 428 952 stroke dfont endchar dfont char=107 amove 95 0 aline 476 0 amove 428 0 aline 333 47 amove 285 47 aline 285 952 amove 238 952 aline 142 1000 amove 95 1000 aline 333 1000 aline 333 0 amove 380 0 aline 333 95 amove 333 190 aline 761 619 aline 666 666 amove 619 666 aline 952 666 amove 904 666 aline 761 619 amove 523 380 aline 857 0 amove 809 0 aline 523 333 amove 476 333 aline 761 0 amove 761 95 aline 666 0 amove 619 0 aline 952 0 amove 904 0 aline 714 95 amove 238 95 aline 190 0 amove 238 0 aline 238 1000 amove 190 1000 aline 238 904 amove 238 47 aline 142 0 stroke dfont endchar dfont char=108 amove 95 0 aline 476 0 amove 428 0 aline 333 47 amove 285 47 aline 285 952 amove 238 952 aline 142 1000 amove 95 1000 aline 333 1000 aline 333 0 amove 380 0 aline 333 95 amove 238 95 aline 190 0 amove 238 0 aline 238 1000 amove 190 1000 aline 238 904 amove 238 47 aline 142 0 stroke dfont endchar dfont char=109 amove 95 0 aline 476 0 amove 428 0 aline 333 47 amove 285 47 aline 285 619 amove 238 619 aline 142 666 amove 95 666 aline 333 666 aline 333 0 amove 380 0 aline 333 95 amove 238 95 aline 190 0 amove 238 0 aline 238 666 amove 190 666 aline 238 571 amove 333 476 aline 380 571 aline 428 619 aline 523 666 aline 666 666 aline 761 619 aline 809 571 aline 857 428 aline 857 0 amove 904 0 aline 857 95 amove 857 47 aline 952 0 amove 1000 0 aline 619 0 amove 666 0 aline 761 47 amove 809 47 aline 809 428 aline 761 571 amove 666 666 aline 714 619 aline 761 476 aline 761 0 amove 714 0 aline 761 95 amove 857 476 aline 904 571 aline 952 619 aline 1047 666 aline 1190 666 aline 1285 619 aline 1333 571 aline 1380 428 aline 1380 0 amove 1428 0 aline 1380 95 amove 1380 47 aline 1476 0 amove 1523 0 aline 1142 0 amove 1190 0 aline 1285 47 amove 1333 47 aline 1333 428 aline 1285 571 amove 1190 666 aline 1238 619 aline 1285 476 aline 1285 -1 amove 1238 -1 aline 1285 95 amove 238 47 aline 142 -1 stroke dfont endchar dfont char=110 amove 95 0 aline 476 0 amove 428 0 aline 333 47 amove 285 47 aline 285 619 amove 238 619 aline 142 666 amove 95 666 aline 333 666 aline 333 0 amove 380 0 aline 333 95 amove 238 95 aline 190 0 amove 238 0 aline 238 666 amove 190 666 aline 238 571 amove 333 476 aline 380 571 aline 428 619 aline 523 666 aline 666 666 aline 761 619 aline 809 571 aline 857 428 aline 857 0 amove 904 0 aline 857 95 amove 857 47 aline 952 0 amove 1000 0 aline 619 0 amove 666 0 aline 761 47 amove 809 47 aline 809 428 aline 761 571 amove 666 666 aline 714 619 aline 761 476 aline 761 0 amove 714 0 aline 761 95 amove 238 47 aline 142 0 stroke dfont endchar dfont char=111 amove 238 142 aline 190 238 aline 190 428 aline 238 523 amove 428 666 aline 523 666 aline 666 619 aline 761 523 aline 809 380 aline 809 285 aline 761 142 aline 666 47 aline 523 0 aline 428 0 aline 285 47 aline 190 142 aline 142 285 aline 142 380 aline 190 523 aline 285 619 aline 428 666 aline 333 619 aline 285 571 aline 238 428 aline 238 238 aline 285 95 aline 333 47 aline 428 0 amove 523 0 aline 619 47 aline 666 95 aline 714 238 aline 714 428 aline 666 571 aline 619 619 aline 523 666 amove 714 523 aline 761 428 aline 761 238 aline 714 142 stroke dfont endchar dfont char=112 amove 238 -239 aline 190 -334 amove 238 -334 aline 238 666 amove 238 619 aline 142 666 amove 95 666 aline 333 666 aline 333 -334 amove 380 -334 aline 333 -239 amove 333 -286 aline 428 -334 amove 476 -334 aline 95 -334 amove 142 -334 aline 238 -286 amove 285 -286 aline 285 619 amove 238 571 aline 190 666 amove 333 523 aline 380 619 aline 476 666 aline 571 666 aline 714 619 aline 809 523 aline 857 380 aline 857 285 aline 809 142 aline 714 47 aline 571 0 aline 476 0 aline 380 47 aline 333 142 amove 571 0 aline 666 47 aline 714 95 aline 761 238 aline 761 428 aline 714 571 aline 666 619 aline 571 666 amove 761 523 aline 809 428 aline 809 238 aline 761 142 stroke dfont endchar dfont char=113 amove 238 142 aline 190 238 aline 190 428 aline 238 523 amove 428 666 aline 333 619 aline 285 571 aline 238 428 aline 238 238 aline 285 95 aline 333 47 aline 428 0 amove 666 142 aline 619 47 aline 523 0 aline 428 0 aline 285 47 aline 190 142 aline 142 285 aline 142 380 aline 190 523 aline 285 619 aline 428 666 aline 523 666 aline 619 619 aline 666 523 amove 714 571 aline 714 -286 amove 666 -286 aline 571 -334 amove 523 -334 aline 904 -334 amove 857 -334 aline 761 -286 amove 761 -334 aline 761 666 aline 714 619 aline 619 619 amove 666 619 aline 666 -334 amove 619 -334 aline 666 -239 amove 761 -239 aline 809 -334 stroke dfont endchar dfont char=114 amove 95 0 aline 476 0 amove 428 0 aline 333 47 amove 285 47 aline 285 619 amove 238 619 aline 142 666 amove 95 666 aline 333 666 aline 333 0 amove 380 0 aline 333 95 amove 238 95 aline 190 0 amove 238 0 aline 238 666 amove 190 666 aline 238 571 amove 333 380 aline 380 523 aline 476 619 aline 571 666 aline 666 666 aline 714 619 aline 714 523 aline 619 523 aline 619 619 aline 666 619 aline 666 571 amove 238 47 aline 142 0 stroke dfont endchar dfont char=115 amove 190 95 aline 142 0 aline 142 190 aline 190 95 aline 238 47 aline 333 0 aline 523 0 aline 619 47 aline 666 95 aline 666 238 aline 619 333 aline 523 380 aline 285 428 aline 190 476 aline 142 571 amove 190 619 aline 142 476 amove 190 428 aline 285 380 aline 523 333 aline 619 285 amove 666 238 aline 619 47 amove 666 95 aline 619 238 aline 523 285 aline 285 333 aline 190 380 aline 142 476 aline 142 571 aline 190 619 aline 285 666 aline 476 666 aline 571 619 aline 619 571 aline 666 476 aline 666 666 aline 619 571 stroke dfont endchar dfont char=116 amove 333 95 aline 285 190 aline 285 904 amove 238 904 aline 238 238 aline 285 95 aline 333 47 aline 428 0 aline 523 0 aline 619 47 aline 666 142 amove 428 0 aline 380 47 aline 333 190 aline 333 1000 aline 238 904 amove 95 666 aline 523 666 stroke dfont endchar dfont char=117 amove 333 95 aline 285 190 aline 285 619 amove 238 619 aline 142 666 amove 95 666 aline 333 666 aline 333 190 aline 380 47 aline 428 0 amove 761 190 aline 714 95 aline 666 47 aline 571 0 aline 428 0 aline 333 47 aline 285 95 aline 238 238 aline 238 666 amove 190 666 aline 238 571 amove 619 666 aline 857 666 aline 857 0 amove 904 0 aline 857 95 amove 857 47 aline 952 0 amove 1000 0 aline 761 0 aline 761 666 amove 809 619 aline 809 47 stroke dfont endchar dfont char=118 amove 428 0 aline 142 666 amove 190 666 aline 428 95 amove 476 95 aline 238 666 amove 238 619 aline 333 666 amove 380 666 aline 47 666 amove 95 666 aline 238 571 amove 523 666 aline 809 666 amove 761 666 aline 714 619 aline 476 95 aline 428 -1 amove 714 619 aline 619 666 stroke dfont endchar dfont char=119 amove 380 0 aline 190 666 amove 238 666 aline 380 142 amove 428 142 aline 285 666 amove 285 619 aline 380 666 amove 428 666 aline 47 666 amove 95 666 aline 238 619 amove 571 666 aline 428 142 aline 380 0 amove 761 0 aline 571 666 aline 666 666 aline 809 142 amove 761 142 aline 619 666 amove 809 666 aline 1095 666 amove 1047 666 aline 952 619 aline 809 142 aline 761 -1 amove 952 619 aline 857 666 stroke dfont endchar dfont char=120 amove 95 0 aline 380 0 amove 333 0 aline 238 47 aline 714 619 aline 619 666 amove 571 666 aline 857 666 amove 809 666 aline 714 619 amove 428 666 aline 95 666 amove 142 666 aline 238 619 amove 238 666 aline 714 0 amove 666 0 aline 190 666 amove 285 666 aline 761 0 amove 809 0 aline 714 47 amove 666 47 aline 571 0 amove 523 0 aline 857 0 amove 238 47 aline 142 0 amove 285 619 aline 380 666 stroke dfont endchar dfont char=121 amove 95 -239 aline 95 -286 aline 142 -286 aline 142 -191 aline 47 -191 aline 47 -286 aline 95 -334 aline 190 -334 aline 285 -286 aline 380 -191 aline 523 95 aline 761 619 aline 666 666 amove 571 666 aline 857 666 amove 809 666 aline 761 619 amove 428 666 aline 95 666 amove 142 666 aline 285 571 amove 285 619 aline 380 666 amove 285 666 aline 523 95 amove 476 95 aline 238 666 amove 190 666 aline 476 0 stroke dfont endchar dfont char=122 amove 142 0 aline 619 666 amove 666 666 aline 190 0 amove 142 0 aline 714 0 aline 714 190 aline 666 0 amove 619 0 aline 714 142 amove 714 95 aline 571 0 amove 476 0 aline 714 47 amove 238 0 aline 714 666 aline 142 666 aline 142 476 aline 190 666 amove 238 666 aline 142 523 amove 142 571 aline 285 666 amove 380 666 aline 142 619 stroke dfont endchar dfont char=123 amove 380 238 aline 333 95 aline 333 -96 aline 380 -239 amove 476 -334 aline 333 -191 aline 285 -48 aline 285 47 aline 333 190 aline 428 285 aline 428 333 aline 238 428 aline 428 523 aline 428 571 aline 333 666 aline 285 809 aline 285 904 aline 333 1047 aline 476 1190 amove 380 1095 aline 333 952 aline 333 761 aline 380 619 stroke dfont endchar dfont char=124 amove 380 428 aline 380 1000 aline 333 952 aline 428 476 aline 380 428 aline 333 476 aline 428 952 aline 380 1000 amove 142 857 aline 619 571 aline 571 571 aline 190 857 aline 142 857 aline 142 809 aline 619 619 aline 619 571 amove 619 857 aline 142 571 aline 190 571 aline 571 857 aline 619 857 aline 619 809 aline 142 619 aline 142 571 stroke dfont endchar dfont char=125 amove 238 -334 aline 380 -191 aline 428 -48 aline 428 47 aline 380 190 aline 285 285 aline 285 333 aline 476 428 aline 285 523 aline 285 571 aline 380 666 aline 428 809 aline 428 904 aline 380 1047 aline 238 1190 amove 333 1095 aline 380 952 aline 380 761 aline 333 619 amove 333 238 aline 380 95 aline 380 -96 aline 333 -239 stroke dfont endchar dfont char=126 amove 285 47 aline 238 142 aline 238 285 aline 285 380 aline 333 428 amove 428 619 aline 523 476 aline 714 238 aline 857 95 aline 952 47 amove 1095 95 aline 1047 47 aline 1000 47 aline 904 95 aline 761 238 aline 571 476 aline 428 666 aline 380 857 amove 380 761 aline 428 952 amove 619 952 aline 666 761 amove 666 857 aline 619 666 amove 523 571 aline 333 380 aline 285 285 aline 285 142 aline 333 47 aline 428 0 amove 1095 142 aline 1095 95 aline 1047 0 aline 952 0 aline 857 47 aline 714 190 aline 523 428 aline 428 571 aline 380 714 aline 380 857 aline 428 952 aline 523 1000 aline 619 952 aline 666 857 aline 666 761 aline 619 666 aline 523 571 aline 238 380 aline 190 285 aline 190 142 aline 238 47 aline 333 0 aline 523 0 aline 619 47 aline 714 142 aline 809 285 aline 904 523 aline 952 619 aline 1000 666 aline 1047 666 aline 1095 619 aline 1095 523 aline 1000 523 aline 1000 619 aline 1047 619 aline 1047 571 stroke dfont endchar gle-graphics-4.2.4c/src/manip/mjl.h0000664000000000000000000000542411405446017015566 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ #ifndef INC_MJL_H #define INC_MJL_H void mjl_flush(); void init_logging(char *infile); #endif gle-graphics-4.2.4c/src/manip/cell.cpp0000664000000000000000000002356311405446017016262 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ #include "all.h" #include "edt.h" #define far #define huge #define farcalloc calloc #define DASHCHAR '.' #include "vaxconio.h" extern int changed; extern int data_x; extern int data_y; extern int max_x,max_y; int usefloat; #ifdef __TURBOC__ double MISS=1.7e300; #else double MISS=1e10; #endif char huge **d_strings; double huge *d_numbers; float huge *f_numbers; #define cellindex(x,y) (((x)-1)+((y)-1)* ((int32) data_x)) #define oldindex(x,y) (((x)-1)+((y)-1)* ((int32) odx)) extern char strmiss[]; void set_usefloat() { usefloat = true; #ifdef __TURBOC__ MISS = 3e38; #else MISS = 3.3e10; #endif } void data_expand(int x, int y) { int datx,daty,mx,my; /*fner("Expand %d %d, max %d %d, data %d %d ",x,y,max_x,max_y ,data_x,data_y); scr_getch();*/ mx = max_x; my = max_y; datx = data_x; daty = data_y; if (x>mx) mx = x; if (y>my) my = y; if (mx>my) { datx = mx * 2; daty = my; } else { datx = mx; daty = my * 2; } xdata_setsize(datx,daty,mx,my); } void clear_data() { int32 i,j,k; if (usefloat) { if (f_numbers!=NULL) free(f_numbers); f_numbers = NULL; } else { for (i=1;i<=max_x;i++) for (j=1;j<=max_y;j++) { k = cellindex(i,j); if (d_strings[k]!=NULL) free(d_strings[k]); } if (d_numbers!=NULL) free(d_numbers); if (d_strings!=NULL) free(d_strings); d_numbers = NULL; d_strings = NULL; } max_x = 0; max_y = 0; data_x = 0; data_y = 0; manip_refresh(); } void set_size(int x, int y) { int32 i,j,k; for (i=1;i<=max_x;i++) for (j=1;j<=max_y;j++) { if (i>x || j>y) { k = cellindex(i,j); if (usefloat) f_numbers[k] = MISS; else { d_numbers[k] = MISS; if (d_strings[k]!=NULL) {free(d_strings[k]); d_strings[k]=NULL;} } } } data_setsize(x,y); max_x = x; max_y = y; manip_refresh(); } void data_setsize(int x, int y) { xdata_setsize(x,y,max_x,max_y); } void xdata_setsize(int x, int y,int mx,int my) { /* x,y = new size of array, mx, my = new used part of array */ char huge **ds; int ox,oy,odx; int32 k; int32 i,j; double huge *dn; float huge *fn; if (x<=data_x && y<=data_y) return; ox = max_x; oy = max_y; odx = data_x; max_x = mx; max_y = my; data_x = x; data_y = y; if (usefloat) { fn = (float*)farcalloc(((int32) data_x)*data_y, sizeof(float)); if (fn==NULL) {fner("memory %d %d %ld\n",data_x,data_y,((int32) data_x)*data_y);} if (fn==NULL) gle_abort("Unable to allocate more storage\n"); for (k=0;kdata_x || y>data_y) data_expand(x,y); if (x>max_x) max_x = x; if (y>max_y) max_y = y; j = cellindex(x,y); /* fner("scell %d %d %ld \n",x,y,j); scr_getch(); */ if (usefloat) {f_numbers[j] = 0; return;} if (d_strings[j]!=NULL) free(d_strings[j]); d_strings[j] = (char *) strdup(s); d_numbers[j] = 0; changed = true; } void set_cell(int x, int y, double d) { char *s; if (x>data_x || y>data_y) data_expand(x,y); if (x>max_x) max_x = x; if (y>max_y) max_y = y; if (usefloat) {f_numbers[cellindex(x,y)] = d; return;} d_numbers[cellindex(x,y)] = d; s = d_strings[cellindex(x,y)]; if (s!=NULL) {free(s); d_strings[cellindex(x,y)] = NULL;} changed = true; } bool cell_greater(int x1,int y1, int x2, int y2) { int32 j1,j2; if (x1>max_x || y1>max_y) return false; if (x2>max_x || y2>max_y) return true; j1 = cellindex(x1,y1); j2 = cellindex(x2,y2); if (!usefloat) { if (d_strings[j1]!=NULL && d_strings[j2]!=NULL) { if (strcmp(d_strings[j1],d_strings[j2])>0) return true; else return false; } } if (vcell(x1,y1)>vcell(x2,y2)) return true; return false; } char *scell(int x, int y) { int32 j; static char buff[80]; if (x>max_x || y>max_y) return strmiss; j = cellindex(x,y); if (usefloat) { if (f_numbers[j]>=MISS) return strmiss; sprintf(buff,"%g",f_numbers[j]); return buff; } if (d_strings[j]!=NULL) { return d_strings[j]; } if (d_numbers[j]>=MISS) return strmiss; sprintf(buff,"%g",d_numbers[j]); return buff; } double vcell(int x, int y) { int32 j; if (x>max_x || y>max_y) return 0; j = cellindex(x,y); if (usefloat) { if (f_numbers[j]>=MISS) return 0; return f_numbers[j]; } if (d_strings[j]!=NULL) return 0; if (d_numbers[j]>=MISS) return 0; return d_numbers[j]; } void get_cell(int x, int y, double *v) { int32 j; *v = 0; if (x>max_x || y>max_y) return; j = cellindex(x,y); if (usefloat) { if (f_numbers[j]>=MISS) return ; *v = f_numbers[j]; return; } if (d_strings[j]!=NULL) return; if (d_numbers[j]>=MISS) return; *v = d_numbers[j]; } void copy_cell(int x, int y, int x2, int y2) { int32 j; if (x>max_x || y>max_y) {set_cell(x2,y2,MISS); return;} j = cellindex(x,y); if (usefloat) {set_cell(x2,y2,f_numbers[j]); return;} if (d_strings[j]!=NULL) {set_scell(x2,y2,d_strings[j]); return;} set_cell(x2,y2,d_numbers[j]); } void swap_cell(int x, int y, int x2, int y2) { char *s; double v; int32 j,j2; if (x>data_x || y>data_y) data_expand(x,y); if (x2>data_x || y2>data_y) data_expand(x2,y2); if (x>max_x) max_x = x; if (y>max_y) max_y = y; if (x2>max_x) max_x = x2; if (y2>max_y) max_y = y2; j = cellindex(x,y); j2 = cellindex(x2,y2); if (usefloat) { v = f_numbers[j]; f_numbers[j] = f_numbers[j2]; f_numbers[j2] = v; return; } v = d_numbers[j]; s = d_strings[j]; d_numbers[j] = d_numbers[j2]; d_strings[j] = d_strings[j2]; d_numbers[j2] = v; d_strings[j2] = s; } void clear_cell(int x, int y) { int32 j; if (x>max_x || y>max_y) {return;} j = cellindex(x,y); if (usefloat) {f_numbers[j] = MISS; return;} if (d_strings[j]!=NULL) {free(d_strings[j]); d_strings[j] = NULL;} d_numbers[j] = MISS; } void get_cellboth(int x, int y, double *v, char **s) { int32 j; *s = NULL; *v = 0; if (x>max_x || y>max_y) {*s = strmiss; return;} j = cellindex(x,y); if (usefloat) { if (f_numbers[j]>=MISS) {*s = strmiss; return;} *v = f_numbers[j]; *s = NULL; return; } if (d_strings[j]!=NULL) {*s = d_strings[j]; return;} if (d_numbers[j]>=MISS) {*s = strmiss; return;} *v = d_numbers[j]; } void trim_data() { int32 i,j,k,mx,my; mx = my = 0; for (i=1;i<=max_x;i++) for (j=1;j<=max_y;j++) { k = cellindex(i,j); if (usefloat) { if (f_numbers[k]!=MISS) { if (i>mx) mx = i; if (j>my) my = j; } } else { if (d_numbers[k]!=MISS) { if (i>mx) mx = i; if (j>my) my = j; } } } max_x = mx; max_y = my; } gle-graphics-4.2.4c/src/manip/test.dat0000664000000000000000000000526611405446017016310 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 0 2 6 1 10 16 2 3 6 3 6 3 4 5 4 5 3 7 gle-graphics-4.2.4c/src/manip/sub.cpp0000664000000000000000000001263711405446017016134 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ #include "all.h" int var_alloc_local(void); int var_free_local(void); extern int32 *(*gpcode)[]; /* gpcode is a pointer to an array of poiter to int32 */ extern int32 (*gplen)[]; /* gpcode is a pointer to an array of int32 */ extern int ngpcode; extern int gle_debug; #define dbg if ((gle_debug & 128)>0) struct sub_st {char name[40];int typ; int np ; int ptyp[20]; char *pname[20]; int start; int end ; } ; struct sub_st *sb[100]; int nsb; double return_value=0; char return_string[80]; int return_type; void sub_param(int idx,char *s) { int vi,vt; mystrcpy(&( sb[idx]->pname[ ++(sb[idx]->np) ] ) ,s); /* should be set ptype according to num/string variable */ var_add(s,&vi,&vt); sb[idx]->ptyp[ (sb[idx]->np) ] = vt; } int sub_find(char *s,int *idx,int *zret, int *np, int **plist) { int i; for (i=1;i<=nsb;i++) { if (strcmp(sb[i]->name,s)==0) { *idx = i; *zret = sb[i]->typ; *np = sb[i]->np; *plist = &(sb[i]->ptyp[1]); return i; } } return 0; } void sub_clear() { int i,j; for (i=1;i<=nsb;i++) { if (sb[i] != NULL) { for (j=1; j<= sb[i]->np; j++) { if (sb[i]->pname[j] != NULL) myfree(sb[i]->pname[j]); } } myfree(sb[i]); sb[i] = NULL; } nsb = 0; } int sub_def(char *s) { int i; for (i=1;i<=nsb;i++) { if (strcmp(sb[i]->name,s)==0) { strcpy(sb[i]->name,"^"); } } if (i>nsb) { nsb = i; sb[i] = (sub_st*)myallocz(sizeof(*sb[0])); strcpy(sb[i]->name,s); } sb[i]->np = 0; return i; } void sub_set_startend(int idx, int ss, int ee) { if (idx<0 || idx>1000) { gprint("idx is out of range \n"); return; } sb[idx]->start = ss; sb[idx]->end = ee; } void sub_get_startend(int idx, int *ss, int *ee) { *ss = sb[idx]->start; *ee = sb[idx]->end; } /* Run a user defined function */ void sub_call(int idx,double *pval,char **pstr,int *npm) { int i; double save_return_value; save_return_value = return_value; var_alloc_local(); dbg for (i=0;i<4;i++) gprint("STACK IN SUBCALL, (%d) = %f \n",i,*(pval+i)); if (*npmnp) gprint("parameters in sub_call, not enough **\n"); for (i = sb[idx]->np;i>=1;i--) { if (sb[idx]->ptyp[i] == 1) { var_set(200 + i-1,*(pval+(*npm)--)); } else { var_setstr(200 + i-1,*(pstr+(*npm)--)); } } dbg gprint("SUB CALL ----- startline %d end %d \n", sb[idx]->start,sb[idx]->end); for (i = sb[idx]->start + 1;i< (sb[idx]->end);i++) { dbg gprint("=Call do pcode, line %d ",i); // do_pcode(&i,(*gpcode)[i],(*gplen)[i],&endp); dbg gprint("AFTER DO_PCODE I = %d \n",i); } dbg gprint("FINISHED CALL ------\n"); *(pval + ++(*npm)) = return_value; return_value = save_return_value; var_free_local(); dbg for (i=0;i<=*npm;i++) gprint("STACK IN SUBCALL, (%d) = %f \n",i,*(pval+i)); } void sub_set_return(double d) { return_value = d; } gle-graphics-4.2.4c/src/manip/manip.hlp0000644000000000000000000002656711405446017016455 0ustar rootroot 3 MANIP Manip is a data manipulation package. It reads in a text file of numbers and displays them like a spreadsheet. You can then do simple operations on the columns and write them out in any format you like. Further help is available on the following toppics via the HELP command e.g. "HELP COPY" @mycmds Arrows BLANK CLEAR CLOSE COPY IF DATA DELETE IF EXIT file_name -TAB -SPACE -COMMA FIT c3 Functions GENERATE GOTO x y INSERT or LOAD filename -0 LOAD filename LOGGING mycmds.man MOVE IF NEW PARSUM PROP QUIT Range (discussion on how to specify ranges) Recover (recovering from power failure or crash) SAVE file_name -TAB -SPACE -COMMA SET SIZE ncols nrows SET BETWEEN " " SET COLTYPE SET COLWIDTH SET NCOL n SET DPOINTS n SET DIGITS n SET WIDTH n SHELL SORT on SUM SWAP CnCn | RnRn Usage (command line usage) 3 USAGE MANIP infile.dat -recover -step -commands c.log -single -size x y -recover Reads keys from the file MANIP_.J1 as if they were typed by the user. This will restore you to the point just before your pc crashed. The last three journal files are stored (.j1 .j2 .j3) simply copy the one you want to (.j1) to use it. -step Used with recover, press a space for each key you want to read from the journal file, press any other key to stop reading the journal. -commands filename.man This reads the commands in filename.man as if they were typed at the keyboard. -single This makes MANIP use single precision arithmetic and doesn't store strings at all, this enables three times as much data in the same amount of memory -size x y Sets the initial size of the spreadsheet. Use this with large datasets as it prevents the heap from becoming fragmented and thus lets you use much larger datasets. 3 RECOVER Manip logs everything you type to a file called MANIP_.J1 When you use the -RECOVER option on the manip command it then reads keys from that file as if they were typed at the keyboard. -recover Reads keys from the file MANIP_.J1 as if they were typed by the user. This will restore you to the point just before your pc crashed. The last three journal files are stored (.j1 .j2 .j3) simply copy the one you want to (.j1) to use it. -step Used with recover, press a space for each key you want to read from the journal file, press any other key to stop reading the journal. 3 RANGE Most manip commands accept a range as one or more of there parameters. A range is a rectangular section of your spreadsheet. A range can ether start with a 'c' or an 'r' and this will affect how the command operates. If your spreadsheet has 5 columns and 10 rows then. c1 == c1c1r1r10 == 1,1 1,2 1,3 1,4 1,5 1,6 ... r1 == r1r1c1c5 == 1,1 2,1 3,1 4,1 5,1 c1c2 ==c1c2r1r10 == 1,1 2,1 1,2 2,2 3,1 3,2 ... r1r2c3=r1r2c3c5 == 3,1 3,2 4,1 4,2 5,1 5,2 3 ARROWS The arrow keys normally move the data cursor, however if you are half way thru typing a command then, the left and right arrow keys allow you to edit the command. Use the PAGE-UP and PAGE-DOWN keys to recall your last command. SHIFT arrow keys will jump 7 cells at a time for fast movement. 3 COPY For copying a section to another section. "% COPY if " They do not have to be the same shape. The pointers to both rangers are increased even if the number is not coppied e.g. "% COPY r4r2 r1r2" "% COPY c1c3r6r100 c6c8 if c1 [IF ]" e.g. "% DELETE c1c3 IF r1>3.and.r2=0 "% DELETE r1" Numbers are shuffled in from the right to take the place of the deleted range. 3 DATA Data entry mode is usefull for entering data. After typing in "% DATA c1c3" or "% DATA C2" you can then enter data and pressing will move you to the next valid data position. In this mode text or numbers can be entered. Press ESC to get back to command mode. 3 FIT "FIT C3" will fit a least squares regression line to the data in columns c3 and c4 (x values taken from c3) and print out the results. 3 EXIT EXIT saves the data in your input file spec and exits to DOS. You can optionally specify an output file as well. eg. "% EXIT myfile.dat The command "EXIT myfile.dat c3c5r1r3" will write out that range of numbers to the file. By default manip will write columns seperated by spaces. The command "EXIT myfile.dat -TAB" will put a single tab between each column of numbers and "EXIT myfile.dat -COMMA" will put a comma and a space between each number. (these two options are usefull if your data file is very big and you don't want to waste diskspace with the space characters.) NOTE: The settings stay in effect for future saves and exits. You can make it line up the columns on the decimal point by typing in the command. "SET DPOINTS 3" You change the width of each column or completely remove the spaces between columns with the command. "SET WIDTH 10" (or set width 0) You can change the number of significant digits displayed with the command "SET DIGITS 4" 3 SAVE Saves all or part of your data. "SAVE myfile.dat" The command "SAVE myfile.dat c3c5r1r3" will write out that range of numbers to the file. By default manip will write columns seperated by spaces. The command "SAVE myfile.dat -TAB" will put a single tab between each column of numbers and "SAVE myfile.dat -COMMA" will put a comma and a space between each number. (these two options are usefull if your data file is very big and you don't want to waste diskspace with the space characters) NOTE: The settings stay in effect for future saves and exits. You can make it line up the columns on the decimal point by typing in the command. "SET DPOINTS 3" You change the width of each column or completely remove the spaces between columns with the command. "SET WIDTH 10" (or set width 0) You can change the number of significant digits displayed with the command "SET DIGITS 4" 3 GOTO For moving the cursor directly to a point in your array. e.g. "% GOTO x y" 3 CLEAR "% CLEAR C2C3" Clears the given range of all values 3 BLANK "% BLANK C2C3" Clears the given range of all values 3 NEW Clears the spread sheet of all data and frees memory. 3 INSERT Inserts a new column or row and shifts all others over. e.g. "% INSERT c5" or "% INSERT r2". 3 LOAD Load data into columns. eg. "% LOAD filename" loads all data into corresponding columns. "% LOAD filename c3" load first column of data into c3 etc. "LOAD myfile.dat c3 -LIST" This commmand will load the the data into a single column or range (even if it is several columns wide in the data file) 3 MOVE For copying a section to another section. "% MOVE if " They do not have to be the same shape. The pointer to the destination is only increased if the line or column is coppied e.g. "% MOVE c1 c2c3" "% MOVE r4r2 r1r2" "% MOVE c1c3r6r100 c6c8 if c1 ON e.g. "% SORT c8 on c9" "% SORT c1c8 on -c8" "% SORT c1c3 on c2 " !for sorting strings This command works out how to sort the column (or exp) specified in the ON part of the command. It then does that operation to the range specified. e.g. "SORT C1 ON C1" will sort column one. Use the additional qualifier -STRINGS if you want to sort a column with strings in it. e.g. "sort c1 on c2 -strings" 3 SWAP Swap over two columns or rows. e.g. "% SWAP c1c2" "% SWAP r3r1" 3 SET SET SIZE ncols nrows SET BETWEEN " " SET COLWIDTH SET COLTYPE [n] DECIMAL | EXP | BOTH | DPOINTS n SET NCOL n SET DPOINTS n SET DIGITS n SET WIDTH n 4 WIDTH Sets the width of padding to use for the columns when they are written to a file. The columns usually one space wider than this setting as the BETWEEN string is usually set to one space by default. 4 COLTYPE This commands allows all or individual columns to be set to different output types. If colnumber is missing then that setting is applied to all columns. SET COLTYPE Ccolnumber TYPE Where TYPE is one of: DECIMAL produces 123.456 EXP produces 1.23456e02 BOTH produces whichever is more suitable DPOINTS n produces a fixed number of decimal places. e.g. SET COLTYPE c2 DECIMAL SET COLTYPE c1 EXP SET COLTYPE c3 DPOINTS 4 Would print out: 1.2e02 1.2 1.2000 SET COLTYPE EXP (column number missed out) Would print out: 1.2e02 1.2e02 1.2e02 4 COLWIDTH Set the width of each column when displayed. e.g. "% SET COLWIDTH 12" 4 NCOL Set the number of columns to display. e.g. "% SET NCOL 3" 4 SIZE "SIZE 3 4" Truncates the spreadsheet to 3 columns and 4 rows. This also sets the values to use for default ranges. 4 BETWEEN "SET BETWEEN "##" Defines the string to be printed between each column of numbers when written to a file. This is normally set to a single space. 4 DPOINTS Sets the number of decimal places to print. This is used for producing columns which line up on the decimal point. e.g. with DPOINTS 3. 2.2 -> 2.200 234 -> 234.000 (See also SET COLTYPE) 4 DIGITS Sets the number of significat digits to be displayed, e.g. with DIGITS 3. 123456 becomes 123000 0.12345 becomes 0.123 3 LOGGING For creating command files. e.g. "% LOG sin.man" "% c2=sin(c1) "% c3=c2+2 "% close" Then type in "@sin" to execute these commands. 3 PROPAGATE This command has the same format as move. e.g "% PROPAGATE " The difference is that the source is coppied as many times as possible to fill up the destination. e.g. "% PROP c1r1r7 c2" 3 SUM Adds up all the numbers in a range and displays the total and average. "% SUM C1C3" 3 PARSUM Adds up one coloumn, putting the partial sum's into another coloumn.e.g. 1,2,3,4 becomes 1,3,6,10. "% PARSUM C1 C4" 3 GENERATE For generating a patter of data e.g. 1 1 2 2 5 5 1 1 2 2 5 5 etc. "% GEN 2(1,2,5)30 c4" !1 1 2 2 5 5 repeated 30 times "% GEN (1:100:5)5 c1" !1 to 100 step 5, 5 times "% GEN (1,2,*,3:5)5 c1" !missing values included 3 FUNCTIONS Calculations can be performed on rows or columns. eg "% C1=C2*3+R" where "R" stands for row-number and C1 and C2 are columns. They can also be performed on ROWS. eg "% r1=sin(r2)+log10(c)" c1 = cell(c+1,r)+cell(c+2,r) cell(1,3) = 33.3 Valid operators and functions: , + - ^ * / <= >= <> < > = )AND( )OR( + - ABS( ATN( COS( EXP( FIX( INT( LOG( LOG10( SGN( SIN( SQR( TAN( NOT( RND( SQRT( .NE. .EQ. .LT. .GT. .LE. .GE. .NOT. .AND. .OR. e.g. 3+4*COS(PI/180)^(3+1/30)+C1+R" 3 QUIT Abandon file. 3 SHELL Gives access to DOS. gle-graphics-4.2.4c/src/manip/eval.cpp0000664000000000000000000003221711652073235016270 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ /*---------------------------------------------------------------------------*/ #include "all.h" #include "mygraph.h" #include "eval.h" typedef union { struct {unsigned char r,g,b,f;} rgb ; int32 l; } colortyp; colortyp colvar; char *eval_str(); int pass_marker(char *s); /*---------------------------------------------------------------------------*/ /* bin = 10..29, binstr = 30..49, fn= 60...139, userfn=200..nnn */ /* pcode:, 1=exp,len 2=double,val 3=var,int32 4,string_var, 5=string,.../0 */ /*---------------------------------------------------------------------------*/ /* Input is exp-pcode, output is number or string */ const char *binop[] = { "", "+", "-", "*", "/", "^", "=", "<", "<=", ">", ">=", "<>", ".AND.", ".OR." }; struct keyw { char *word; int index; int ret,np,p[5]; } ; extern struct keyw keywfn[] ; double stk[60]; int stk_var[100]; char *stk_str[100]; int stk_strlen[100]; char sbuf[512]; char sbuf2[112]; int nstk=0; extern int gle_debug; #define dbg if ((gle_debug & 2)>0) void eval(int32 *pcode,int *cp,double *oval,char *ostr,int *otyp) { /* a pointer to the pcode to execute */ /* Current point in this line of pcode */ /* place to put result number */ /* place to put result string */ /* place to put result type, 1=num, 2=str */ union {double d; int32 l[1];} both; int plen,i,c; time_t today; double xx; dbg gprint("%%EXP-START, Current point in eval %d %d \n",*cp,(int) *(pcode+(*cp))); dbg for (i=0;i<10;i++) gprint("%ld ",*(pcode+i)); dbg gprint("\n"); dbg debug_polish(pcode,cp); if (*(pcode+(*cp))==8) { /* Single constant */ both.l[0] = *(pcode+ ++(*cp)); both.l[1] = 0; dbg gprint("Constant %ld \n",both.l[0]); memcpy(oval,&both.d,sizeof(both.d)); memcpy(&both.d,oval,sizeof(both.d)); ++(*cp); return; } if (*(pcode+(*cp)++)!=1) { gprint("PCODE, Expecting expression, v=%ld cp=%d \n",*(pcode+((*cp)-1)),*cp); return; } plen = *(pcode+*(cp)); dbg gprint(" plen = %d ",plen); if (plen>1000) gprint("Expession is suspiciously int32 %d \n",plen); for (c=(*cp)+1;c<=(plen+ *cp);c++) { switch (*(pcode+c)) { /* Special commands 1..9 ------------------------------- */ case 1: /* Start of another expression (function param) */ c++; /* skip over exp length */ break; case 2: /* doubleing point number follows */ *otyp = 1; both.l[0] = *(pcode+(++c)); both.l[1] = *(pcode+(++c)); stk[++nstk] = both.d; dbg gprint("Got double %f %d %f \n",stk[nstk],nstk,(double)*(pcode+(c))); break; case 3: /* doubleing_point variable number follows */ *otyp = 1; var_get(*(pcode+(++c)),&xx); dbg gprint("Got variable value %ld %f \n",*(pcode+(c)),xx); stk[++nstk] = xx; break; case 4: /* string variable number follows */ *otyp = 2; var_getstr(*(pcode+(++c)),sbuf); nstk++; if (stk_str[nstk]!=NULL) myfree(stk_str[nstk]); stk_str[nstk] = sdup(sbuf); break; case 5: /* Null terminated string follows (int32 alligned) */ *otyp = 2; c++;nstk++; strcpy(sbuf,eval_str(pcode,&c)); if (stk_str[nstk]!=NULL) myfree(stk_str[nstk]); stk_str[nstk] = sdup(sbuf); break; /* Numeric Binary operators 10..29 ----------------------- */ case 11: /* + */ nstk--; stk[nstk] = stk[nstk+1] + stk[nstk]; break; case 12: /* - */ stk[nstk-1] = stk[nstk-1] - stk[nstk]; nstk--; break; case 13: /* * */ stk[nstk-1] = stk[nstk-1] * stk[nstk]; nstk--; break; case 14: /* / */ if (stk[nstk]==0) { gprint("Divide by zero %g %g \n", stk[nstk-1],stk[nstk]); } else { stk[nstk-1] = stk[nstk-1] / stk[nstk]; } nstk--; break; case 15: /* ^ */ stk[nstk-1] = pow(stk[nstk-1],stk[nstk]); nstk--; break; case 16: /* = */ nstk--; if (stk[nstk] == stk[nstk+1]) stk[nstk]=true; else stk[nstk]=false; break; case 17: /* < */ nstk--; if (stk[nstk] < stk[nstk+1]) stk[nstk]=true; else stk[nstk]=false; break; case 18: /* <= */ nstk--; if (stk[nstk] <= stk[nstk+1]) stk[nstk]=true; else stk[nstk]=false; break; case 19: /* > */ nstk--; if (stk[nstk] > stk[nstk+1]) stk[nstk]=true; else stk[nstk]=false; break; case 20: /* >= */ nstk--; if (stk[nstk] >= stk[nstk+1]) stk[nstk]=true; else stk[nstk]=false; break; case 21: /* <> */ nstk--; if (stk[nstk] != stk[nstk+1]) stk[nstk]=true; else stk[nstk]=false; break; case 22: /* .AND. */ nstk--; if (stk[nstk] && stk[nstk+1]) stk[nstk]=true; else stk[nstk]=false; break; case 23: /* .OR. */ nstk--; if (stk[nstk] || stk[nstk+1]) stk[nstk]=true; else stk[nstk]=false; break; /* String Binary operators 30..49 ----------------------- */ case 31: /* + */ *otyp = 2; nstk--; if (stk_str[nstk]!=NULL) strcpy(sbuf,stk_str[nstk]); if (stk_str[nstk+1]!=NULL) strcat(sbuf,stk_str[nstk+1]); if (stk_str[nstk] != NULL) myfree(stk_str[nstk]); stk_str[nstk] = sdup(sbuf); break; case 32: /* - */ break; case 33: /* * */ break; case 34: /* / */ break; case 35: /* ^ */ break; case 36: /* = */ break; case 37: /* < */ break; case 38: /* <= */ break; case 39: /* > */ break; case 40: /* >= */ break; case 41: /* .AND. */ break; case 42: /* .OR. */ break; /* Built in functions 60..199 ----------------------------- */ case f_plus: /* unary plus */ break; case f_minus: /* unary minus */ stk[nstk] = -stk[nstk]; break; case f_abs: /* abs */ stk[nstk] = fabs(stk[nstk]); break; case f_atn: /* atn */ if (stk[nstk]<0) stk[nstk] = -atan(-stk[nstk]); else stk[nstk] = atan(stk[nstk]); break; case f_cell: /* cell(x,y) */ get_cell((int)stk[nstk-1],(int)stk[nstk],&stk[nstk-1]); nstk--; break; case f_miss: /* miss(x,y) */ nstk--; if (strcmp(scell((int)stk[nstk],(int)stk[nstk+1]),"-")==0) { stk[nstk]=true; } else { stk[nstk]=false; } break; case f_cos: /* cos */ stk[nstk] = cos(stk[nstk]); break; case f_date: /* date$ */ *otyp = 2; time(&today); strcpy(sbuf2,ctime(&today)); strcpy(sbuf,sbuf2); strcpy(sbuf+11,sbuf2+20); sbuf[strlen(sbuf)-1] = 0; setdstr(&stk_str[++nstk],sbuf); break; case f_exp: /* exp */ stk[nstk] = exp(stk[nstk]); break; case f_fix: /* fix*/ stk[nstk] = floor(stk[nstk]); break; case f_left: /* left$ */ *otyp = 2; ncpy(sbuf,stk_str[nstk-1],(int) stk[nstk]); setdstr(&stk_str[--nstk],sbuf); break; case f_len: /* len */ *otyp = 1; stk[nstk] = strlen(stk_str[nstk]); break; case f_log: /* log */ stk[nstk] = log(stk[nstk]); break; case f_log10: /* log10 */ stk[nstk] = log10(stk[nstk]); break; case f_not: /* not */ break; case f_num: /* num$ */ *otyp = 2; sprintf(sbuf,"%g ",stk[nstk]); if (stk_str[nstk] != NULL) myfree(stk_str[nstk]); stk_str[nstk] = sdup(sbuf); break; case f_num1: /* num1$ */ *otyp = 2; sprintf(sbuf,"%g",stk[nstk]); if (stk_str[nstk] != NULL) myfree(stk_str[nstk]); stk_str[nstk] = sdup(sbuf); break; case f_pos: /* pos */ break; case f_right: /* right$ */ *otyp = 2; strcpy(sbuf,stk_str[nstk-1] + (int) stk[nstk] - 1); setdstr(&stk_str[--nstk],sbuf); break; case f_rnd: /* rnd */ break; case f_seg: /* seg$ */ *otyp = 2; strcpy(sbuf,stk_str[nstk-2] + (int) stk[nstk-1] - 1); ncpy(sbuf2,sbuf,(int)(stk[nstk] - stk[nstk-1] + 1)); nstk-=2; setdstr(&stk_str[nstk],sbuf2); break; case f_sgn: /* sgn */ break; case f_sin: /* sin */ stk[nstk] = sin(stk[nstk]); break; case f_sqr: /* sqr */ stk[nstk] = pow(stk[nstk],2.0); break; case f_sqrt: /* sqrt */ stk[nstk] = sqrt(stk[nstk]); break; case f_tan: /* tan */ stk[nstk] = tan(stk[nstk]); break; case f_time: /* time$ */ *otyp = 2; time(&today); ncpy(sbuf,ctime(&today)+11,9); setdstr(&stk_str[++nstk],sbuf); break; case f_val: /* val */ break; /* User function 200..nnn , or error */ default: /* Is it a user defined function */ if (*(pcode+c)>200) { /* pass the address of some numbers */ /* pass address of variables if possible*/ sub_call(*(pcode+c)-200,stk,stk_str,&nstk); } else gprint("Unrecognezed pcode exp prim %d at position=%d \n",(int)*(pcode+c),c); break; } } dbg printf("RESULT ISa ==== %d [1] %f [nstk] %f \n",nstk,stk[1],stk[nstk]); dbg scr_getch(); memcpy( oval,&(stk[nstk]),sizeof(double)); *ostr = '\0'; if (*otyp==2) if (stk_str[nstk]!=NULL) strcpy(ostr,stk_str[nstk]); if (*otyp==2) dbg gprint("Evaluated string = {%s} \n",ostr); nstk--; if (nstk<0) { gprint("Stack stuffed up in EVAL %d \n",nstk); nstk = 0; } *cp = *cp + plen + 1; } void debug_polish(int32 *pcode,int *zcp) { int32 *cp,cpval; int plen,c,cde; cpval = *zcp; cp = &cpval; if (*(pcode+(*cp)++)!=1) { gprint("Expecting expression, v=%d \n",(int) *(pcode+--(*cp)) ); return; } plen = *(pcode+*(cp)); gprint("Expression length %d current point %d \n",plen,(int) *cp); if (plen>1000) gprint("Expession is suspiciously int %d \n",plen); for (c=(*cp)+1;(c-*cp)<=plen;c++) { cde = *(pcode+c); gprint("Code=%d ",cde); if (cde==0) { gprint("# ZERO \n"); } else if (cde==1) { gprint("# Expression, length ??? \n"); c++; } else if (cde==2) { gprint("# doubleing point number %8x \n",(int)*(pcode+(++c))); c++; /* because it's a DOUBLE which is a quad word */ } else if (cde==3) { gprint("# Variable \n"); c++; } else if (cde==4) { gprint("# String Variable \n"); c++; } else if (cde==5) { c++; gprint("# String constant {%s} \n",eval_str(pcode,&c)); } else if (cde<29) { gprint("# Binary operator {%s} \n",binop[cde-10]); } else if (cde<49) { gprint("# Binary string op {%s} \n",binop[cde-30]); } else if (cde<200) { gprint("# Built in function (with salt) {%s} \n",keywfn[cde-60].word); } else { gprint("# User defined function %d \n",cde); } } } char *eval_str(int32 *pcode,int *plen) { char *s; int sl; s = (char *) (pcode+*plen); sl = strlen(s)+1; sl = ((sl + 3) & 0xfffc); *plen = *plen + sl/4 - 1; return s; } void setdstr(char **s,char *in) { if (*s != NULL) myfree(*s); *s = sdup(in); } void eval_setxy(int x, int y) { static int xx= -1,yy= -1,type; if (xx== -1) var_findadd("C",&xx,&type); if (yy== -1) var_findadd("R",&yy,&type); var_set(xx,(double) x); var_set(yy,(double) y); } void eval_setxyd(int x, int y) { static int xx= -1,yy= -1,type; if (xx== -1) var_findadd("DC",&xx,&type); if (yy== -1) var_findadd("DR",&yy,&type); var_set(xx,(double) x); var_set(yy,(double) y); } gle-graphics-4.2.4c/src/manip/Makefile.os20000664000000000000000000000634011405446017016773 0ustar rootroot######################################################################## # # # GLE - Graphics Layout Engine # # # # Modified BSD License # # # # Copyright (C) 2009 GLE. # # # # Redistribution and use in source and binary forms, with or without # # modification, are permitted provided that the following conditions # # are met: # # # # 1. Redistributions of source code must retain the above copyright # # notice, this list of conditions and the following disclaimer. # # # # 2. Redistributions in binary form must reproduce the above # # copyright notice, this list of conditions and the following # # disclaimer in the documentation and/or other materials provided with # # the distribution. # # # # 3. The name of the author may not be used to endorse or promote # # products derived from this software without specific prior written # # permission. # # # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR # # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY # # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE # # GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER # # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN # # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # # ######################################################################## # # makefile.vc for makefmt # for compilation with MS vc++ .net # # include ../../config.i include ../../config.os2 # include files.txt all: $(OBJECTS) $(PROJECT_BINDIR)/bin/$(PROGRAM)$(EXE_SUFF) $(PROJECT_BINDIR)/manip.hlp $(OBJECTS): $(INCLUDES) $(PROJECT_BINDIR)/bin/$(PROGRAM)$(EXE_SUFF): $(OBJECTS) $(EXTRA_OBJS) $(INCLUDES) $(CC) $(LINK_OPTS) -o $(PROJECT_BINDIR)/bin/manip.exe $(OBJECTS) $(EXTRA_OBJS) -lncurses -lm $(EXTRA_LIBS) $(PROJECT_BINDIR)/manip.hlp: manip.hlp cp manip.hlp $(PROJECT_BINDIR)/manip.hlp clean: -$(RM) $(OBJECTS) $(PROJECT_BINDIR)/bin/$(PROGRAM)$(EXE_SUFF) gle-graphics-4.2.4c/src/manip/keyword.cpp0000664000000000000000000001240711405446017017022 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ #include "all.h" #include "keyword.h" /*------------------------------------------------------------------*/ /* Find the KEY WORD *cp, and return it's number */ /*------------------------------------------------------------------*/ /* You can add a function, you MUST place it in alphabetical order */ #define NKEYS (sizeof mkeywfn / sizeof(struct mkeyw)) struct mkeyw { const char *word; int index; } mkeywfn[] = { { "!", k_comment } , { "AT", k_at } , { "BLANK", k_clear } , { "CALL", k_call } , { "CLEAR", k_clear } , { "CLOSE", k_close } , { "COPY", k_copy } , { "DATA", k_data } , { "DEL", k_delete } , { "DELETE", k_delete } , { "ELSE", k_else } , { "EXIT", k_exit } , { "FIT", k_fit } , { "GEN", k_generate } , { "GENERATE", k_generate } , { "GOTO", k_goto } , { "HELP", k_help } , { "IF", k_if } , { "INPUT", k_input } , { "INSERT", k_insert } , { "LET", k_let } , { "LIST", k_list } , { "LOAD", k_load } , { "LOG", k_logging } , { "LOGG", k_logging } , { "LOGGING", k_logging } , { "MOVE", k_move } , { "NEW", k_new } , { "NEXT", k_next } , { "PARSUM", k_parsum } , { "PRINT", k_print } , { "PROP", k_prop } , { "PROPAGATE",k_prop } , { "QUIT", k_quit } , { "SAVE", k_save } , { "SET", k_set } , { "SHELL", k_shell } , { "SORT", k_sort } , { "SUM", k_sum } , { "SWAP", k_swap } }; int binsearchk(char *word, struct mkeyw tab[], int n); void cmd_name(int idx, char **cp) { static char *kp; static char fail[]="Keyword not found"; if (kp==NULL) kp = (char*)myallocz(80); for (unsigned int i=0;i 0) low = mid + 1; else return mid; } return -1; } /*-------------------------------------------------------------------------*/ /* This is for the tex primitives */ struct mkeyw tkeywfn[] = { { 0,0} }; #define NTKEYS (sizeof tkeywfn / sizeof(struct mkeyw)) int find_primcmd(char *cp) { int i; i = binsearchk(cp,tkeywfn,NTKEYS); if (i==-1) return 0; return tkeywfn[i].index; } gle-graphics-4.2.4c/src/manip/varargs.cpp0000644000000000000000000000651311405446017017002 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ /* As varargs are so difficult to make work, I've put them in this module by themselvs, on a DEC5400 it was necessary to compile this module using the native C compiler instead of GCC */ void fner_do(char *output); void printmess_do(char *output); #include "all.h" void fner(const char* fmt,...) { va_list args; char string[1024]; va_start(args,fmt); vsprintf(string, fmt, args); va_end(args); fner_do(string); } void printmess(const char* fmt,...) { va_list args; char string[1024]; va_start(args,fmt); vsprintf(string, fmt, args); va_end(args); printmess_do(string); } gle-graphics-4.2.4c/src/manip/mscreen.h0000664000000000000000000000701411405446017016435 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ #ifndef INC_MSCREEN_H #define INC_MSCREEN_H void delay(int i); void textattr(); bool abort_key(); bool kbhit(); void scr_gets(char *x); int clreol(); int cputs(const char *line); void delline(); int gotoxy(int x, int y); void insline(); void putch(int char_val); int scr_manip_refresh(); int scr_getch(); int scr_end(); void textbackground(int color_num); void textcolor(int colornum); int gettextinfo(struct text_info *r); void screen_save(); int screen_restore(); int w_message(char *s); int window(int left,int top, int right, int bottom); int clrscr(); void scr_dots(int i); int scr_left(int i); int scr_right(int i); int scr_savexy(); int scr_restorexy(); int scr_norm(); int scr_inv(); int scr_grey(); int scr_isblackwhite(); void scr_menubg(); void scr_menuval(); void scr_menuhi(); int vax_edt(char *s); void manip_scr_init(char * dummy); #endif gle-graphics-4.2.4c/src/manip/mjl.cpp0000664000000000000000000000750711405446017016125 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ #include "all.h" #include "edt.h" FILE *jouptr; extern int in_recover,single_step; void init_logging(char *infile) { FILE *jptr; unsigned char ccc; static char buff[80]; if (in_recover) { jouptr = fopen("manip_.j1","rb"); if (jouptr==NULL) fner("Unable to open/read journal file manip_.j1"); fread(&ccc,1,1,jouptr); fread(buff,1,ccc,jouptr); if (strlen(infile)==0) strcpy(infile,buff); return; } unlink("manip_.j3"); rename("manip_.j2","manip_.j3"); rename("manip_.j1","manip_.j2"); jptr = fopen("manip_.j1","wb"); fputc(strlen(infile),jptr); fwrite(infile,1,strlen(infile),jptr); if (jptr==NULL) fner("Unable to open journal file manip_.j1"); fclose(jptr); } unsigned char mjl_buff[80]; void mjl_key(int c) { int s; if (in_recover) return; if (c==0) return; s = strlen((char*)mjl_buff); mjl_buff[s] = c; mjl_buff[s+1] = 0; if (s>40) mjl_flush(); } void mjl_flush() { FILE *jptr; if (in_recover) return; if (strlen((char*)mjl_buff)<7) return; jptr = fopen("manip_.j1","ab"); if (jptr==NULL) fner("Unable to append to journal file manip_.j1"); fwrite(mjl_buff,1,strlen((char*)mjl_buff),jptr); fclose(jptr); mjl_buff[0] = 0; } gle-graphics-4.2.4c/src/manip/mygraph.h0000664000000000000000000001347011652073536016461 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ int g_get_path(int *pathonoff); int g_set_font_width(double v); int draw_key(int nkd, double koffsetx, double koffsety, char *kpos, double khei, int knobox); int font_get_encoding(int ff); int my_char(int ff, int cc); int g_get_just(int *j); int g_set_just(int j); int g_curve(int32 *pcode); int g_devcmd(char *s); int d_devcmd(char *s); int g_get_line_join(int *jj); int g_get_line_cap(int *jj); int g_postscript(char *ss,double w,double h); int g_set_font(int j); int g_marker_def(char *name, char *subname); int begin_tab(int *pln, int32 *pcode, int *cp); int begin_graph(int *pln, int32 *pcode, int *cp); int begin_key(int *pln, int32 *pcode, int *cp); int begin_text(int *pln, int32 *pcode, int *cp, double w); int g_set_line_styled(double x); int g_text(char *s); int g_jtext(int just); int g_measure(char *s, dbl *l, dbl *r, dbl *u, dbl *d); int g_arc(dbl r,dbl t1,dbl t2,dbl cx,dbl cy); int g_narc(dbl r,dbl t1,dbl t2,dbl cx,dbl cy); int g_arcto(dbl x1,dbl y1,dbl x2,dbl y2,dbl rrr); int g_beginclip(void); int g_bezier(dbl x1,dbl y1,dbl x2,dbl y2,dbl x3,dbl y3); int g_bitmap(char *bmap); int g_box_fill(dbl x1, dbl y1, dbl x2, dbl y2); int g_box_stroke(dbl x1, dbl y1, dbl x2, dbl y2); int g_char(int font, int cc); int g_circle_fill(double zr); int g_circle_stroke(double zr); int g_clear(void); int g_clip(void); int g_close(void); int g_closepath(void); int g_dbezier(dbl x1,dbl y1,dbl x2,dbl y2,dbl x3,dbl y3); int g_dev(double x, double y,double *xd,double *yd); int g_dfont(char *s); int g_dline(double x, double y); int g_dmove(double x, double y); int g_dojust(dbl *x1, dbl *y1, dbl *x2, dbl *y2, int jj); int g_dotjust(dbl *x1, dbl *y1, dbl l, dbl r, dbl u, dbl d, int jj); int g_endclip(void); int g_fill(void); int g_fill_ary(int nwk,double **wkx,double **wky); int g_flush(void); int g_get_bounds(dbl *x1,dbl *y1,dbl *x2,dbl *y2); int g_get_devsize(dbl *x,dbl *y); int g_get_end(dbl *x,dbl *y); int g_get_fill(int32 *f); int g_get_line_style(char *s); int g_get_line_styled(double *w); int g_get_line_width(double *w); int g_get_state(char *s); int g_get_type(char *t); int g_get_usersize(dbl *x,dbl *y); int g_get_xy(double *x,double *y); int g_grestore(void); int g_gsave(void); int g_init_bounds(void); int g_line(double zx,double zy); int g_line_ary(int nwk,double **wkx,double **wky); int g_message(char *s); int g_move(double zx,double zy); int g_rmove(double zx,double zy); int g_rline(double zx,double zy); int g_newpath(void); int g_open(dbl width,dbl height); int g_rdev(double x, double y,double *xd,double *yd); int g_reverse(void); int g_rotate(double ar); int g_rundev(double x, double y,double *xd,double *yd); int g_scale(double sx,double sy); int g_update_bounds(double x,double y); int g_set_color(int32 l); int g_set_end(dbl x,dbl y); int g_set_line_cap(int i); int g_set_line_join(int i); int g_set_line_miterlimit(double d); int g_set_line_style(const char *s); int g_set_line_width(double w); int g_set_matrix(double (*newmat)[3][3]); int g_set_path(int onoff); int g_set_state(char *s); int g_set_xy(double x, double y); int g_source(char *s); int g_stroke(void); int g_translate(double ztx,double zty); int g_undev(double ux,double uy, double *x,double *y); gle-graphics-4.2.4c/src/manip/unixscr.cpp0000644000000000000000000001460411405446017017030 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ #include "all.h" #include #include "vaxconio.h" #define dbg if (1==1) #define NORET (int) 0 extern int noscreenio; void delay(int i) { sleep(i); } int vx_top=1,vx_bot=24; void textattr() { } bool abort_key() { return false; } bool kbhit() { return false; } void scr_gets(char *x) { getstr(x); } int clreol() { if (noscreenio) return NORET; clrtoeol(); return 0; } int cputs(const char *line) { int x; int y; if (noscreenio) return NORET; getyx(stdscr,y,x); mvaddstr(y,x,line); return 0; } void delline() { int x; int y; getyx(stdscr,y,x); move(22,1); clrtobot(); move(y,1); deleteln(); move(y,x); } int gotoxy(int x, int y) { if (noscreenio) return NORET; if (y==25) y=24; if (y<1) y=1; move(y+vx_top-2,x); return 0; } void insline() { int x; int y; getyx(stdscr,y,x); move(y,x); insertln(); move(y,x); move(22,1); clrtobot(); move(y,x); } void putch(int char_val) { int x; int y; getyx(stdscr,y,x); mvaddch(y,x,char_val); } void scr_refresh() { if (!noscreenio) refresh(); } int scr_getch() { if (noscreenio) return getc(stdin); else return getch(); } void ctrlhandler() { fprintf(stderr,"ctrlhandler!\n"); exit(1); } void trap() { echo(); nl(); nocbreak(); endwin(); exit(1); } void manip_scr_init(char * dummy) { static int doneinit = false; #if (defined ultrix || defined aix) signal(SIGINT,trap); #endif if (doneinit) { printf("init called twice \n"); exit(0);} doneinit = true; initscr(); scrollok(stdscr,true); #ifdef __UNIX__ if (signal(SIGINT, SIG_IGN) == SIG_ERR) { fprintf(stderr,"Unable to disable ctrl-c\n"); } noecho(); nonl(); cbreak(); clear(); // The AIX R6000 goes looney if you set keypad to be true #ifndef NOKEYPAD keypad(stdscr,TRUE); #endif #endif } int scr_end(void) { if (noscreenio) return NORET; echo(); nl(); nocbreak(); endwin(); return 0; } void textbackground(int color_num) { } void textcolor(int colornum) { } int gettextinfo(struct text_info *r) { int x; int y; if (noscreenio) return NORET; getyx(stdscr,y,x); r->curx = x; r->cury = y; r->wintop = vx_top; return 0; } void screen_save() { } int screen_restore() { if (noscreenio) return NORET; scr_norm(); clrscr(); gotoxy(1,1); cputs("\n"); return 0; } int wyerr; int w_message(char *s) { wyerr++; if (noscreenio) return NORET; scr_savexy(); gotoxy(1,wyerr); clreol(); cputs(s); scr_restorexy(); return 0; } int window(int left,int top, int right, int bottom) { if (left==1 && top==1 && bottom==25) { if (noscreenio) return NORET; } vx_top = top; vx_bot = bottom; wyerr = 0; return 0; } int clrscr() { if (noscreenio) return NORET; if (vx_top==1 && vx_bot==25) { clearok(stdscr,TRUE); clear(); refresh(); clearok(stdscr,FALSE); return NORET; } clear(); return 0; } void scr_dots(int i) { } int scr_left(int i) { int y,x; if (i<=0) return NORET; getyx(stdscr,y,x); move(y,x-i); return 0; } int scr_right(int i) { int y,x; if (i<=0) return NORET; getyx(stdscr,y,x); move(y,x+i); return 0; } int vx_topsave,vx_botsave; int savex,savey; int scr_savexy() { if (noscreenio) return NORET; getyx(stdscr,savey,savex); vx_topsave = vx_top; vx_botsave = vx_bot; return 0; } int scr_restorexy() { if (noscreenio) return NORET; move(savey,savex); vx_top = vx_topsave; vx_bot = vx_botsave; return 0; } int scr_norm() { #ifndef NOATTRIB attrset(A_NORMAL); #endif return 0; } int scr_inv() { #ifndef NOATTRIB attrset(A_BOLD); #endif return 0; } int scr_grey() { #ifndef NOATTRIB attrset(A_REVERSE); #endif return 0; } int scr_isblackwhite() { return true; } void scr_menubg() { scr_norm(); } void scr_menuval() { scr_inv(); } void scr_menuhi() { scr_grey(); } int vax_edt(char *s) { return -1; } gle-graphics-4.2.4c/src/manip/polish.cpp0000664000000000000000000003063211660563604016641 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ char *un_quote(); const char *ns[3] = {"Nothing","Number","String"}; extern int gle_debug; #include "all.h" void token_norm(void); #define tok(n) tk[n] #define abort goto fatal_err /*---------------------------------------------------------------------------*/ /* bin = 10..29, binstr = 30..49, fn= 60...139, userfn=200..nnn */ #define stack_bin(i,p) stack_op(pcode,plen,stk,stkp,&nstk,i-10+(last_typ*20),p+curpri) #define stack_fn(i) stack_op(pcode,plen,stk,stkp,&nstk,i,10+curpri) #define dbg if ((gle_debug & 4)>0) /*---------------------------------------------------------------------------*/ /* Input is token array, and pointer to current point, output is pcode */ /* typedef struct op_key (*OPKEY)[100]; */ /* typedef char (*(*TOKENS)[500]); */ int zpolish(TOKENS tk,int *ntok,int *curtok,char *pcode,int *plen,int *rtype); void polish(char *expr,char *pcode,int *plen,int *rtype) { static char *tk[500]; static char tkbuff[500]; static int ntk,ct; const char *space_str=" "; static char buff[50]; static int start_token; double xxx; int idx,ret,np,*plist,saveplen,term_bracket; int curpri=0; int i,v,p,savelen,isa_string,not_string,last_typ; int nstk=0,stk[50],stkp[50]; /* stack for operators */ int unary=1; /* binary or unary operation expected */ int ln; /* length of current token */ char *cts; /* current token */ /* last_typ, 1=number,2=string */ *plen = 0; if (tk[400]==NULL) for (i=0;i<500;i++) tk[i] = (char*)space_str; isa_string = false; not_string = false; if (*rtype==1) not_string = true; /* if (*rtype==2) isa_string = true; */ *plen = *plen*4; /* change into byte count */ if (*rtype>0) term_bracket = true; last_typ = *rtype; saveplen = *plen; add_i(pcode,plen,1); /* expression follows */ savelen = *plen; /* Used to set acutal length at end */ add_i(pcode,plen,0); /* Length of expression */ dbg gprint("====Start of expression {%s} \n",expr); if (strlen(expr)==0) {gprint("Zero length expression\n"); return;} if (!start_token) { ntk = 0; ct=1; token_norm(); token(expr,tk,&ntk,tkbuff); token_space(); } for (;;) { cts = tok(ct); dbg gprint("First word token=%d via (1=unary %d) cts {%s} %d \n " ,ct,unary,cts,(int)strlen(cts)); ln = strlen(cts); switch (unary) { case 1: /* a unary operator, or function, or number or variable */ if (ln==1 && (*cts=='E')) goto notnumber; if (ln==1 && (*cts=='-')) goto notnumber; if (gle_isnumber(cts)) { evalagain: dbg gprint("Found number {%s}\n",cts); if (manip_lastchar(cts,'E')) { strcpy(buff,cts); strcat(buff,tok(++ct)); if (*tok(ct)=='-' || *tok(ct)=='+') { strcat(buff,tok(++ct)); } tok(ct) = buff; cts = tok(ct); goto evalagain; } xxx = atof(cts); add_f(pcode,plen,xxx); if (last_typ==2) gprint("Expecting string {%s} \n",cts); last_typ = 1; unary=2; break; } notnumber: /* NOT a number, Is it a built in function */ /* int idx,ret,np,*plist; */ find_un(cts,&idx,&ret,&np,&plist); /* 1,2 = +,- */ if (idx>63) { dbg gprint("Found built in function \n"); if (*tok(++ct)!='(') { gprint("Expecting left bracket after functsion name"); abort; } { char fcode[400]; int flen,vtype,nparam=0; if (*tok(ct+1)!=')') { while (*tok(ct)!=')') { nparam++; vtype = *(plist+nparam-1); flen = 0; (ct)++; start_token = true; polish((char*)"xx",fcode,&flen,&vtype); start_token = false; flen = flen * 4; if (nparam>np) {gprint("Too many parameters got=%d want=%d \n",nparam,np);abort;} if (vtype==0) abort; add_pcode(pcode,plen,fcode,&flen); } } else { ct++; } } if (last_typ==(3-ret)) { gprint("Function of wrong type Expecting {%s} \n",ns[ret]); abort; } last_typ = ret; add_fn(pcode,plen,idx); unary = 2; break; } else if (idx>0) { stack_fn(idx); unary=1; break; } /* Is it a user-defined function, identical code too above. */ sub_find(cts,&idx,&ret,&np,&plist); /* 1,2 = +,- */ if (idx>0) { dbg gprint("Found user function \n"); if (*tok(++ct)!='(') { gprint("Expecting left bracket after function name"); abort; } { char fcode[400]; int flen,vtype,nparam=0; if (*tok(ct+1)!=')') { while (*tok(ct)!=')') { ct++; nparam++; vtype = *(plist+nparam-1); flen = 0; start_token = true; polish((char*)"xx",fcode,&flen,&vtype); start_token = false; flen = flen * 4; if (nparam>np) {gprint("Too many U parameters got=%d want=%d \n",nparam,np);abort;} if (vtype==0) abort; add_pcode(pcode,plen,fcode,&flen); } } else { ct++; } } if (last_typ==(3-ret)) { gprint("Function of wrong type Expecting {%s} \n",ns[ret]); abort; } if (ret>0 && ret<3) last_typ = ret; add_fn(pcode,plen,idx+200); unary = 2; break; } else if (idx>0) { stack_fn(idx); unary=1; break; } /* Is it a 'known' variable */ var_find(cts,&v,&ret); if (v>=0) { dbg gprint("Found variable %d \n",v); if (last_typ==(3-ret)) { gprint("Expecting {%s} \n",ns[last_typ]); abort; } last_typ=ret; if (ret==2) add_strvar(pcode,plen,v); else add_var(pcode,plen,v); unary=2; break; } /* Is it a atring */ if (*cts=='"') { dbg gprint("Found string \n"); if (last_typ==1) { gprint("Expecting number {%s} \n",cts); abort; } last_typ = 2; add_string(pcode,plen,un_quote(cts)); /* remove quotes */ unary = 2; break; } if (*cts=='(') { curpri = curpri + 100; break; } if (*cts==')') { if (curpri>0) { curpri = curpri - 100; unary = 2; break; } gprint("Too many right brackets found in exp \n"); } /* must be unquoted string, unless a binary operator was found, in which case it is an undelcared variable */ if (not_string) { dbg gprint("Found un-initialized variable {%s} /n",cts); var_add(cts,&v,&ret); last_typ=ret; add_var(pcode,plen,v) ; unary=2; break; } last_typ = 2; dbg printf("Unquoted string (%s) \n",cts); add_string(pcode,plen,un_quote(cts)); /* remove quotes */ isa_string = true; unary = 2; break; isa_string = true; add_string(pcode,plen,cts); unary = 2; /* Expecting end of expression next !! */ break; case 2: /* a binary operator, or space, or end of line */ if (ct>ntk || *cts==' ' || *cts==',' ) { goto end_expression; } if (*cts==')' && curpri==0) { goto end_expression; } /* MIGHT (gives error with a$ = b$+c$) */ if (isa_string) { gprint("Expression contained unquoted string\n"); abort; } not_string = true; /* Binary operators, +,-,*,/,^,<,>,<=,>=,.and.,.or. */ switch (*cts) { case '+' : v = 1; p=2; break; case '-' : v = 2; p=2; break; case '*' : v = 3; p=3; break; case '/' : v = 4; p=3; break; case '^' : v = 5; p=4; break; case '=' : v = 6; p=1; break; case '<' : v = 7; p=1; if (*tok(ct+1)=='=') {v=8;++ct;} break; case '>' : v = 9;p=1; if (*tok(ct+1)=='=') {v=10;++ct;} break; case '.' : p=1; if (strcmp(cts,".AND.")) {v=11;} break; if (strcmp(cts,".OR.")) {v=12;} break; default : v = 0 ; break; } if (v>0) { if (last_typ<1 || last_typ > 3) last_typ = 1; stack_bin(v,p); dbg gprint("Found binary operator \n"); unary=1; break; } if (*cts==')') { if (curpri>0) { curpri = curpri - 100; unary = 2; break; } if (term_bracket!=true) { gprint("Too many right brackets, expecting binary operator \n"); abort; } goto end_expression; } } if (++ct>ntk) { goto end_expression; } /* gprint("Next token is {%s} \n",tok(ct)); */ } end_expression: if (*tok(ct)==' ') (ct)++; dbg gprint("Got expression , curtok=%d {%s} \n",ct,tok(ct)); *rtype = last_typ; dbg gprint("Found END OF EXPRESSION \n"); if (!start_token) if (curpri!=0) {gprint((char*)"Missing right brackets");} /* Pop everything off the stack */ for (i=nstk;i>0;i--) { dbg gprint("Adding left over operators I = %d op=%d \n",i,stk[i]); add_i(pcode,plen,stk[i]); } * ((int32 *) (pcode+savelen)) = (*plen - savelen)/4-1; /* Set length of expression */ *plen = *plen/4; /* change back to int count */ return; fatal_err: gprint("Aborting expression parsing. \n"); *plen = saveplen; *rtype = 0; } /*------------------------------------------------------------------*/ /* append fcode to pcode */ void add_pcode(char *pcode,int *plen,char *fcode,int *flen) { char *p; p = pcode + *plen; memcpy(p,fcode,*flen); *plen = *plen + *flen; } void add_i(char *pcode,int *plen,int32 i) { int32 *p; p = (int32 *) (pcode + *plen); *p = i; *plen += 4; } void add_f(char *pcode,int *plen,double f) { union { double d ; int32 l[2]; short s[4]; } both; both.d = f; add_i(pcode,plen,2); add_i(pcode,plen,both.l[0]); add_i(pcode,plen,both.l[1]); } void add_var(char *pcode,int *plen,int i) { add_i(pcode,plen,3); add_i(pcode,plen,i); } void add_strvar(char *pcode,int *plen,int i) { add_i(pcode,plen,4); add_i(pcode,plen,i); } void add_fn(char *pcode, int *plen, int i) { add_i(pcode,plen,i); dbg gprint(" add Function %d \n",i); } void add_string(char *pcode, int *plen, char *s) { char *p; int sl; dbg gprint("adding string {%s} \n",s); add_i(pcode,plen,5); sl = strlen(s)+1; p = pcode + *plen; sl = ((sl + 3) & 0xfffc); strncpy(p,s,sl); *plen = *plen + sl; } void stack_op(char *pcode, int *plen, int stk[], int stkp[], int *nstk, int i, int p) { dbg gprint("Stack oper %d priority %d \n",i,p); while (p<=stkp[*nstk] &&(*nstk)>0) { dbg gprint("ADDING oper stack = %d oper=%d \n",*nstk,stk[(*nstk)]); add_i(pcode,plen,stk[(*nstk)--]); } stk[++(*nstk)] = i; stkp[*nstk] = p; } bool gle_isnumber(char *s) { while (*s!='\0') { if (isdigit(*s) || *s=='.' || *s=='E' ) s++; else return false; } return true; } char manip_lastchar(const char *s, char c) { while ((*s)!='\0') {s++;} return *(--s)==c; } gle-graphics-4.2.4c/src/manip/all.h0000664000000000000000000001611311505673123015552 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ #ifdef HAVE_CONFIG_H #include "../config.h" #else #include "../config_noauto.h" #endif #ifdef INT32 typedef int int32; typedef unsigned int uint32; #else typedef long int32; typedef unsigned long uint32; #endif #include #if HAVE_SYS_TYPES_H #include #endif #if HAVE_SYS_STAT_H #include #endif #if STDC_HEADERS #include #include #else #if HAVE_STDLIB_H #include #endif #endif #if HAVE_STRING_H #if !STDC_HEADERS && HAVE_MEMORY_H #include #endif #include #endif #if HAVE_STRINGS_H #include #endif #if HAVE_UNISTD_H #include #endif #include #include #include #ifdef __UNIX__ #include #endif #if defined(__OS2__) && defined(__EMX__) #include #undef wprintf #define wprintf printf #endif struct s_range {int col,row,c1,r1,c2,r2,colfirst; }; typedef struct s_range RANGE; #include #include #include #include using namespace std; #ifdef HAVE_NCURSES_H #include #endif #ifdef HAVE_CURSES_H #include #endif #include "manip.h" #include "cell.h" #include "cmd.h" #include "filemenu.h" #include "mjl.h" #include "eval.h" #include "mscreen.h" #include "../gle/cutils.h" /* #if defined(__OS2__) && defined(__EMX__) #define delline v_delline #define clreol v_clreol #define putch v_putc #define cputs v_puts #endif */ #define far #define farcalloc calloc #define DASHCHAR '.' #define gprint printf #define myfree free struct GLEMemoryCell; char *range_int(char *s, int *v); void find_mkey(char *cp, int *idx); extern int gle_debug; typedef char (*(*TOKENS)[500]); typedef unsigned char uchar; typedef double dbl; char *unquote(char *s); const char *gledir(const char *s); int set_missing(int x, int y); double vcell(int x, int y); void var_find_rc(int *idx, int *var, int *nd, int c); void var_getstr(int v, char *s); int alloc_temp(int n); void gle_abort(const char *s); void d_tidyup(void); int text_inkey(void); void ncpy(char *d, const char *s, int n); void token_space(void); char *sdup(const char *s); /* void myfree(void *p); */ void myfrees(void *p, char *s); void *myallocn(int32 nitems,int32 size); void *myalloc(int32 size); void *myallocz(int32 size); int showpcode(int32 *p); void add_fn(char *pcode, int *plen, int i); void add_i(char *pcode,int *plen,int32 i); void add_f(char *pcode,int *plen,double f); void add_pcode(char *pcode,int *plen,char *fcode,int *flen); void add_string(char *pcode, int *plen, char *s); void add_strvar(char *pcode,int *plen,int i); void add_var(char *pcode,int *plen,int i); char *eval_str(int32 *pcode,int *plen); char *find_non_space(char *cp); char *find_term(char *cp); char *un_quote(char *ct); void find_un(char *cp, int *idx,int *ret,int *np,int **plist); bool gle_isnumber(char *s); char manip_lastchar(const char *s, char c); void mystrcpy(char **d, const char *s); void polish(char *expr,char *pcode,int *plen,int *rtype); int scheck(int v); int spop(int v); int spush(int v); void stack_op(char *pcode, int *plen, int stk[] ,int stkp[], int *nstk, int i, int p); void token(char *lin,char *tok[],int *ntok,char *outbuff); void var_add(const char *name, int *idx, int *type); /* Add a variable to the list */ void var_find(const char *name, int *idx, int *type); /* Find a variable in the list */ void var_findadd(const char *name, int *idx, int *type); /* Add a variable to the list */ void var_get(int jj, double *v); void var_nlocal(int *l); void var_set(int jj, double v); void var_set(int jj, GLEMemoryCell* value); void var_setstr(int jj, char *s); void xy_polar(double dx,double dy,double *radius,double *angle); void sub_clear(void); int sub_def(char *s); void sub_call(int idx,double *pval,char **pstr,int *npm); int sub_find(char *s,int *idx,int *zret, int *np, int **plist); void sub_get_startend(int idx, int *ss, int *ee); void sub_param(int idx,char *s); void sub_set_return(double d); void sub_set_startend(int idx, int ss, int ee); void show_cell(int x, int y); void show_ifcell(int x, int y); char *scell(int x, int y); void fner_clear(void); void show_cellwide(int x, int y); int read_command(int *cmd,char *ans,const char *ques); void do_arrow(int k); void hi_cell(int x,int y); void fix_cur(void); void gotocell(int x, int y); int read_str(int *cmd, char *s); int32 coreleft(void); void manip_refresh(); const char *function_bar(); void scr_refresh(); gle-graphics-4.2.4c/src/manip/ffblk_def.h0000644000000000000000000000544511405446017016707 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ // // // ffblk_def.h // #ifndef INCLUDE_FFBLCK #define INCLUDE_FFBLCK struct ffblk{ char *ff_name; }; #endif gle-graphics-4.2.4c/src/manip/edt.h0000664000000000000000000000611711405446017015560 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ enum {eup=129,edown,eleft,eright,epagedown,epageup,edelline ,edeleol,eescape,eendoffile,etopoffile,edelright ,eselect,ecut,ecopy,emark,epaste,emove ,eeol,ebol,eword,ebword,ereturn,etrace ,eblockread,eblockwrite ,ehelp,edelete,eundelline,esearch,esearchreplace,efindnext ,esaveas,esave,eload,equit,edrawit,egraphmenu,eshowerror,egold ,eundeleol,eexitnow,eshell,eedt,efast,ebackline,ebigleft,ebigright}; gle-graphics-4.2.4c/src/manip/cmd.h0000664000000000000000000001071611405446017015547 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ #ifndef INC_CMD_H #define INC_CMD_H void do_command(char *cmd); void passcmd(char *source,char *tk[],int *ntok); void do_assign(char *t1, char *t2); void evaluate(char *exp, double *v); bool range_next(RANGE *r); bool range_def(const char *sxx, RANGE *r); char *range_int(char *s, int *v); void swapint(int *a, int *b); void cmd_load(char *fname, const char *range, int ntok); void m_tokinit(const char *termset); char *m_tokend(char *s); void cmd_load_list(RANGE *r, char *inbuff); void cmd_load_line(int x, int y, char *inbuff); void load_str(int x, int y, char *s); void cmd_save(char *fname, const char *range, const char *format, int ntok); int strcpydecimal(char *dest, char *src, int wid, int dpoints); int strcpywidth(char *dest, char *src, int wid); void set_outwidth(char *s); char *unquote(char *s); void cmd_copy(char *src, char *dest, char *ifexp, int ntok, int always); void cmd_generate(char *patx, char *dest, int ntok); bool gen_next(char *pat, double *v); void cmd_polish(char *exp); void cmd_eval(int x1, int y1, double *v); void cmd_delete(char *range, char *ifexp, int ntok); void cmd_sort(char *range, char *ifexp, int ntok); void sort_shuffle(int i, int r1, int *pnt); void cmd_insert(char *range); void cmd_data(char *range); bool swap_def(char *s, RANGE *r); void cmd_swap(char *range); void log_open(char *fname); void log_write(char *s); void log_close(); void add_dotman(char *s); void at_open(char *fname); bool at_read(char *s); void strip_colon(char *s); void cmd_parsum(char *range, char *dest); void cmd_sum(char *range); void rangestd(RANGE *rr, double mean, int32 numrow, double *variance, double *stddev); void cmd_clear(char *range); void cmd_fit(char *range); void fitlsq(RANGE *rrr,int ndata, double *a, double *b, double *siga, double *sigb, double *chi2, double *q); #endif gle-graphics-4.2.4c/src/manip/keyword.h0000664000000000000000000000575611405446017016500 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ enum { k_save=1, k_load, k_quit, k_exit, k_if, k_for, k_next, k_end , k_call, k_else, k_print, k_input, k_generate, k_at, k_comment , k_let, k_copy, k_move, k_set ,k_delete ,k_data ,k_insert ,k_goto ,k_logging ,k_prop ,k_sort ,k_swap, k_close, k_clear ,k_help, k_list, k_sum, k_parsum, k_shell, k_new, k_fit}; gle-graphics-4.2.4c/src/manip/cursesscr.cpp0000664000000000000000000001204211405446017017345 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ #include "all.h" delay(int i) {} int vx_top=1,vx_bot=24; textattr() {} kbhit() {} scr_gets(char *x) { getstr(x); } clreol() { clrtoeol(); } cputs(const char *line) { int x; int y; getyx(stdscr,y,x); mvaddstr(y,x,line); } delline() { int x; int y; getyx(stdscr,y,x); move(22,1); clrtobot(); move(y,1); deleteln(); move(y,x); } gotoxy(int x, int y) { if (y==25) y=24; move(y+vx_top-2,x); } insline() { int x; int y; getyx(stdscr,y,x); move(y,x); insertln(); move(y,x); move(22,1); clrtobot(); move(y,x); } putch(int char_val) { int x; int y; getyx(stdscr,y,x); mvaddch(y,x,char_val); } int scr_manip_refresh() { manip_refresh(); } int scr_getch() { return getch(); } manip_scr_init() { initscr(); scrollok(stdscr,true); } scr_end() { endwin(); } textbackground(int color_num) {} textcolor(int colornum) {} gettextinfo(struct text_info *r) { int x; int y; getyx(stdscr,y,x); r->curx = x; r->cury = y; r->wintop = vx_top; } screen_save() {} screen_restore() { scr_norm(); clrscr(); gotoxy(1,1); cputs("\n"); } int wyerr; w_message(char *s) { wyerr++; scr_savexy(); gotoxy(1,wyerr); clreol(); cputs(s); scr_restorexy(); } window(int left,int top, int right, int bottom) { if (left==1 && top==1 && bottom==25) { printf("\x1b[%d;%dr",1,24); } vx_top = top; vx_bot = bottom; wyerr = 0; } clrscr() { if (vx_top==1 && vx_bot==25) { clearok(stdscr,TRUE); clear(); manip_refresh(); clearok(stdscr,FALSE); return; } clear(); } scr_dots(int i) { } scr_left(int i) { int y,x; if (i<=0) return; getyx(stdscr,y,x); move(y,x-i); } scr_right(int i) { int y,x; if (i<=0) return; getyx(stdscr,y,x); move(y,x+i); } int vx_topsave,vx_botsave; int savex,savey; scr_savexy() { getyx(stdscr,savey,savex); vx_topsave = vx_top; vx_botsave = vx_bot; } scr_restorexy() { move(savey,savex); vx_top = vx_topsave; vx_bot = vx_botsave; } scr_norm() /* yellow on blue */ { clrattr(_BOLD | _REVERSE); } scr_inv() /* black on white */ { clrattr(_REVERSE); setattr(_BOLD); } scr_grey() /* black on grey */ { clrattr(_BOLD); setattr(_REVERSE); } scr_isblackwhite() { return true; } scr_menubg() { scr_norm(); } scr_menuval() { scr_inv(); } scr_menuhi() { scr_grey(); } #include vax_edt(char *s) /* call the vax EDT editor */ { $DESCRIPTOR(sdesc,""); sdesc.dsc$a_pointer = s; sdesc.dsc$w_length = strlen(s); edt$edit(&sdesc,&sdesc); } gle-graphics-4.2.4c/src/manip/Makefile.in0000664000000000000000000000710111405446017016672 0ustar rootroot######################################################################## # # # GLE - Graphics Layout Engine # # # # Modified BSD License # # # # Copyright (C) 2009 GLE. # # # # Redistribution and use in source and binary forms, with or without # # modification, are permitted provided that the following conditions # # are met: # # # # 1. Redistributions of source code must retain the above copyright # # notice, this list of conditions and the following disclaimer. # # # # 2. Redistributions in binary form must reproduce the above # # copyright notice, this list of conditions and the following # # disclaimer in the documentation and/or other materials provided with # # the distribution. # # # # 3. The name of the author may not be used to endorse or promote # # products derived from this software without specific prior written # # permission. # # # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR # # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY # # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE # # GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER # # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN # # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # # ######################################################################## # # makefile.vc for makefmt # for compilation with MS vc++ .net # include ../../config.i include ../../config.aconf include files.txt CXX=@CXX@ CPPFLAGS=@CPPFLAGS@ MANIP_LIBS=@MANIP_LIBS@ MANIP_LDFLAGS=@MANIP_LDFLAGS@ CPPFLAGS := $(strip $(CPPFLAGS)) ifeq (@HAVE_LIBGLE_CPPFLAGS@,1) EXTRA_OBJS := ../gle/cutils.static.$(OBJ_SUFF) ../gle/file_io.static.$(OBJ_SUFF) endif ifeq (@MAKE_MANIP@,1) TOBUILD := $(OBJECTS) $(PROJECT_BINDIR)/bin/$(PROGRAM)$(EXE_SUFF) $(PROJECT_BINDIR)/manip.hlp endif all: $(TOBUILD) $(OBJECTS): %.o: %.cpp $(INCLUDES) $(CXX) $(CPPFLAGS) -c $< -o $@ $(PROJECT_BINDIR)/bin/$(PROGRAM)$(EXE_SUFF): $(OBJECTS) $(EXTRA_OBJS) $(INCLUDES) $(CXX) $(CPPFLAGS) $(MANIP_LDFLAGS) $(OBJECTS) $(EXTRA_OBJS) -o $(PROJECT_BINDIR)/bin/$(PROGRAM)$(EXE_SUFF) $(MANIP_LIBS) $(PROJECT_BINDIR)/manip.hlp: manip.hlp cp -p manip.hlp $(PROJECT_BINDIR)/manip.hlp clean: -$(RM) $(OBJECTS) $(PROJECT_BINDIR)/bin/$(PROGRAM)$(EXE_SUFF) gle-graphics-4.2.4c/src/manip/color.h0000664000000000000000000000603711405446017016123 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ /* colors are defined by ncurses library */ /* #ifndef HAVE_NCURSES_H */ #if !defined(__UNIX__) && !( defined(__OS2__) && defined(__EMX__) ) #define COLOR_CLEAR 0XFF000000 #define COLOR_BLACK 0X01000000 #define COLOR_WHITE 0X01FFFFFF #define COLOR_RED 0X01FF0000 #define COLOR_GREEN 0X0100FF00 #define COLOR_BLUE 0X010000FF #define COLOR_GREY 0X017F7F7F #endif gle-graphics-4.2.4c/src/manip/manip.h0000664000000000000000000000666211405446017016115 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ #ifndef INC_MANIP_H #define INC_MANIP_H void top_line(); void set_newxy(int x, int y); void window_norm(); void window_exit(); void set_colwidth(int n); void set_ncol(int n); void gle_abort(char *s); bool text_changed(); void text_save(void); void command_scroll_up(); int read_command(int *cmd,char *ans,char *ques); void fner_clear(void); void fnerx(char *s); void fnerxx(char *s); #if defined(__NOCYGWIN__) #include #endif #if defined(__UNIX__) || ( defined(__OS2__) && defined(__EMX__) ) void fner(const char* arg_list, ...); void printmess(const char* arg_list, ...); void wprintf(const char* arg_list, ...); #else void fner(va_list arg_list, ...); void printmess(va_list arg_list, ...); void wprintf(va_list arg_list, ...); #endif #endif gle-graphics-4.2.4c/src/manip/Makefile.gcc0000644000000000000000000000631211405446017017021 0ustar rootroot######################################################################## # # # GLE - Graphics Layout Engine # # # # Modified BSD License # # # # Copyright (C) 2009 GLE. # # # # Redistribution and use in source and binary forms, with or without # # modification, are permitted provided that the following conditions # # are met: # # # # 1. Redistributions of source code must retain the above copyright # # notice, this list of conditions and the following disclaimer. # # # # 2. Redistributions in binary form must reproduce the above # # copyright notice, this list of conditions and the following # # disclaimer in the documentation and/or other materials provided with # # the distribution. # # # # 3. The name of the author may not be used to endorse or promote # # products derived from this software without specific prior written # # permission. # # # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR # # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY # # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE # # GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER # # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN # # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # # ######################################################################## # # makefile.vc for makefmt # for compilation with MS vc++ .net # # include ../../config.gcc # include files.txt all: $(OBJECTS) $(PROJECT_BINDIR)/bin/$(PROGRAM)$(EXE_SUFF) $(PROJECT_BINDIR)/manip.hlp $(OBJECTS): $(INCLUDES) $(PROJECT_BINDIR)/bin/$(PROGRAM)$(EXE_SUFF): $(OBJECTS) $(EXTRA_OBJS) $(INCLUDES) $(CXX) $(CXXFLAGS) $(OBJECTS) $(EXTRA_OBJS) -o $(PROJECT_BINDIR)/bin/$(PROGRAM)$(EXE_SUFF) -lncurses -lm $(PROJECT_BINDIR)/manip.hlp: manip.hlp cp -p manip.hlp $(PROJECT_BINDIR)/manip.hlp clean: -$(RM) $(OBJECTS) $(PROJECT_BINDIR)/bin/$(PROGRAM)$(EXE_SUFF) gle-graphics-4.2.4c/src/manip/files.txt0000664000000000000000000000645011405446017016476 0ustar rootroot######################################################################## # # # GLE - Graphics Layout Engine # # # # Modified BSD License # # # # Copyright (C) 2009 GLE. # # # # Redistribution and use in source and binary forms, with or without # # modification, are permitted provided that the following conditions # # are met: # # # # 1. Redistributions of source code must retain the above copyright # # notice, this list of conditions and the following disclaimer. # # # # 2. Redistributions in binary form must reproduce the above # # copyright notice, this list of conditions and the following # # disclaimer in the documentation and/or other materials provided with # # the distribution. # # # # 3. The name of the author may not be used to endorse or promote # # products derived from this software without specific prior written # # permission. # # # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR # # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY # # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE # # GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER # # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN # # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # # ######################################################################## # # files list for GLE to be included by the makefiles # PROGRAM = \ manip INCLUDES = \ all.h \ cell.h \ cmd.h \ color.h \ edt.h \ eval.h \ ffblk_def.h \ filemenu.h \ keyword.h \ manip.h \ mjl.h \ mscreen.h \ mygraph.h \ nofnkeys.h \ unix_extra.h \ vaxconio.h OBJECTS = \ cell.$(OBJ_SUFF) cmd.$(OBJ_SUFF) eval.$(OBJ_SUFF) filemenu.$(OBJ_SUFF) \ fn.$(OBJ_SUFF) general.$(OBJ_SUFF) keyword.$(OBJ_SUFF) \ manip.$(OBJ_SUFF) mjl.$(OBJ_SUFF) polish.$(OBJ_SUFF) sub.$(OBJ_SUFF) token.$(OBJ_SUFF) \ var.$(OBJ_SUFF) unix_extra.$(OBJ_SUFF) unixinkey.$(OBJ_SUFF) varargs.$(OBJ_SUFF) unixscr.$(OBJ_SUFF) EXTRA_OBJS = \ ../gle/cutils.$(OBJ_SUFF) \ ../gle/file_io.$(OBJ_SUFF) gle-graphics-4.2.4c/src/manip/Makefile.dj0000664000000000000000000000702111447671544016675 0ustar rootroot######################################################################## # # # GLE - Graphics Layout Engine # # # # Modified BSD License # # # # Copyright (C) 2009 GLE. # # # # Redistribution and use in source and binary forms, with or without # # modification, are permitted provided that the following conditions # # are met: # # # # 1. Redistributions of source code must retain the above copyright # # notice, this list of conditions and the following disclaimer. # # # # 2. Redistributions in binary form must reproduce the above # # copyright notice, this list of conditions and the following # # disclaimer in the documentation and/or other materials provided with # # the distribution. # # # # 3. The name of the author may not be used to endorse or promote # # products derived from this software without specific prior written # # permission. # # # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR # # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY # # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE # # GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER # # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN # # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # # ######################################################################## # manip Makefile for MS-DOS and DJGPP by Axel Rohde include ../../config.i # object files OBJS = cell.o cmd.o eval.o filemenu.o \ fn.o general.o keyword.o \ manip.o polish.o sub.o token.o \ var.o turbo.o turboscr.o inkey.o # varargs.o # mjl.o HEADS = all.h color.h edt.h eval.h keyword.h mygraph.h vaxconio.h # rules to build manip manip: $(OBJS) $(HEADS) $(CC) -o manip $(CFLAGS) $(OBJS) $(LIBS) manip.o: manip.c $(HEADS) $(CC) -c -DGLEPATH=\"$(GLE_PATH)/\" $(CFLAGS) manip.c $(OBJS): $(HEADS) # On DEC 5400 GCC wouldn't create working varargs so CC is used. varargs.o: varargs.c gcc -g -c varargs.c turbo.o: ../../turbo.c ../../all.h $(CC) -c -DMANIP $(CFLAGS) ../../turbo.c -o turbo.o turboscr.o: ../../turboscr.c ../../all.h $(CC) -c -DMANIP $(CFLAGS) ../../turboscr.c -o turboscr.o inkey.o: ../../inkey.c ../../all.h $(CC) -c -DMANIP $(CFLAGS) ../../inkey.c -o inkey.o gle-graphics-4.2.4c/src/manip/filemenu.h0000664000000000000000000000555211405446017016612 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ #ifndef INC_FILEMENU_H #define INC_FILEMENU_H void do_help(const char *k1, const char *k2 = NULL); void init_menucolor(void); int pick_file(char *result, const char *wld); #endif gle-graphics-4.2.4c/src/manip/filemenu.cpp0000664000000000000000000005513411405446017017146 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ #include "all.h" #include "color.h" #include "edt.h" #define WHITE 15 #define BLACK 0 #define BEGINDEF extern #define BCOLOR BLUE #define FCOLOR MAGENTA #define HBCOLOR h_bcolor #define HVCOLOR h_fcolor #define VCOLOR WHITE int h_bcolor; int h_fcolor; int getsize(void); char *tabtospace(char *s); void printdash(int i); int gle_redraw(void); int text_showerror(void); char *strfile(char *s); int vdelete(int i); int vinsert(int y, char *s); void m_ifsend(char *s); void m_sendline(void); int minit_extras(void); int minit_extras(void); void initmenu(void); int mystrlen(const char *s); int pick_file(char *d, const char *w); void setvstr(char **d, const char *s); int text_inkey(void); struct menu_struct { int x; int y; char *title; int width; int typ; int typ2; char *val; char *help; }; typedef struct menu_struct menutype; struct pmenu_struct {int ci; menutype *menu; }; typedef struct pmenu_struct pmenutype; pmenutype pmenu[17]; void setmenu(menutype *m,int x, int y, int typ, int typ2, int width, const char *title, const char *val, const char *help); bool do_menu(pmenutype *p); int extractmenu(void); void add_unrecognized(char *s); int fillinmenu(int nbegin); int nunrec; #define PTXT 0 enum {MEND,MTEXT,MFILE,MTOGON,MTOGOFF,MSUB,MRETURN,MNULL}; enum {SNORM,SROL,SNEXTS,SNEXT,SSTR,STOG,SS,SSIZE,SNOBOX,SAMOVE,SSOFF,SSNULL}; void manip_refresh_menu(struct menu_struct *m); void menu_hilight(struct menu_struct *m); void menu_norm(struct menu_struct *m); /* menu's topmenu title,xtitle,ytitle min max dist on off, ticks dticks (2) let d = exp Data files Dn marker ,color, lwidth, lstyle, err, xnamesmenu ynamesmenu fillmenu barmenu axismenu's */ int read_default(char *result, char *ques, char *dflt) { char s[200]; int r = 0; strcpy(s,ques); strcat(s," ["); strcat(s,dflt); strcat(s,"] "); /* r = read_input(result,s);*/ if (strlen(result)==0) strcpy(result,dflt); return r; } extern int changed; void addline(char *s) { changed = true; } const char *mark_names[] = { "dot", "square", "fcircle", "club", "diamond", "triangle", "snake", "otimes", "odot", ""}; int m_gstart,m_gend; /* Getkey/command arrowkeys normal left and right arrow if editing delete insert normal character enter, change to new menu escape exit. F1, help key */ char mbuff[255]; extern int iserr; int hcx,cx,hcy; /* HIlighted current x,y */ bool do_menu(pmenutype *ppmenu) { menutype *cm,*cmi,*si=NULL,*mi; int citem,emode=false; int c; cm = ppmenu->menu; citem = ppmenu->ci; cmi = cm+citem; manip_refresh_menu(cm); menu_hilight(cmi); for (;;) { c = text_inkey(); if (iserr) {fner_clear(); window(1,1,80,24);} switch (c) { case eescape: /* ESCAPE */ case equit: /* control c */ return true; case eleft: /* left */ if (emode) { if (cx>0) cx--; gotoxy(hcx+cx,hcy); } else { for (si=NULL,mi=cm;mi->typ!=0;mi++) { if (mi->y==cmi->y && mi->x < cmi->x) { if (si!=NULL) { if (mi->x > si->x) si = mi; } else { si = mi; } } } } break; case eright: /* right */ if (emode) { if (cx < (int)strlen(cmi->val)) cx++; gotoxy(hcx+cx,hcy); } else { for (si=NULL,mi=cm;mi->typ!=0;mi++) { if (mi->y==cmi->y && mi->x > cmi->x) { if (si!=NULL) { if (mi->x < si->x) si = mi; } else { si = mi; } } } } break; case eup: /* arrow up */ emode = false; for (si=NULL,mi=cm;mi->typ!=0;mi++) { if (mi->typy==si->y) if (abs(mi->x - cmi->x) < abs(si->x - cmi->x)) si = mi; if (mi->y < cmi->y) { if (si!=NULL) { if (mi->y > si->y) si = mi; } else { si = mi; } } } } break; case edown: /* arrow down */ emode = false; for (si=NULL,mi=cm;mi->typ!=0;mi++) { if (mi->typy==si->y) if (abs(mi->x - cmi->x) < abs(si->x - cmi->x)) si = mi; if (mi->y > cmi->y) { if (si!=NULL) { if (mi->y < si->y) si = mi; } else { si = mi; } } } } break; case ehelp: /* f1 help */ do_help(cmi->help); manip_refresh_menu(cm); menu_hilight(cmi); break; case ereturn: /* carriage return */ if (emode==true && cmi->typ==MFILE) { emode = false; break; } emode = false; switch (cmi->typ) { case MTEXT: /* if (emode) emode = false; else emode = true; */ break; case MTOGON: cmi->typ = MTOGOFF; menu_hilight(cmi); break; case MTOGOFF: cmi->typ = MTOGON; menu_hilight(cmi); break; case MRETURN: goto exit_menu; case MFILE: if (mystrlen(cmi->val)==0) cmi->val = (char*)calloc(20,1); pick_file(cmi->val,"*.dat"); manip_refresh_menu(cm); menu_hilight(cmi); break; case MSUB: /* SUB MENU */ if (cmi->typ2>99) do_menu(&pmenu[cmi->typ2 - 100]); manip_refresh_menu(cm); menu_hilight(cmi); } for (si=NULL,mi=cm;mi->typ!=0;mi++) { if (mi->y==cmi->y && mi->x > cmi->x) { if (si!=NULL) { if (mi->x < si->x) si = mi; } else { si = mi; } } } break; case edelete: /* delete */ emode = true; if (cmi->val==NULL) break; if (strlen(cmi->val)==0) break; if (cx<1) break; ncpy(mbuff,cmi->val,cx-1); strcat(mbuff,cmi->val + cx); setvstr(&cmi->val,mbuff); cx--; gotoxy(hcx+cx,hcy); cputs(cmi->val + cx); putch(DASHCHAR); gotoxy(hcx+cx,hcy); break; case edrawit: break; case eshowerror: break; case esave: /* save file */ break; default: /* normal key */ if (c<26 && c!=9) {fner("Key has no affect"); break;} if (c>200) fner("Unimplemented command"); else { /* if (cmi->typ!=MTEXT && cmi->typ!=MFILE) goto doreturn; */ emode = true; if (cmi->val==NULL) setvstr(&cmi->val,""); ncpy(mbuff,cmi->val,cx); mbuff[cx] = c; mbuff[cx+1] = 0; strcat(mbuff,cmi->val + cx); setvstr(&cmi->val,mbuff); gotoxy(hcx+cx,hcy); cputs(cmi->val + cx); cx++; gotoxy(hcx+cx,hcy); } break; } if (si!=NULL) { menu_norm(cmi); cmi = si; menu_hilight(cmi); si = NULL; } } exit_menu:; /* save current point */ { int i; for (i=0,mi=cm;mi->typ!=0;mi++,i++) { if (mi==cmi) ppmenu->ci = i; } } return false; /* normal exit */ } void setvstr(char **d, const char *s) { if ((*d) != 0) myfree(*d); *d = sdup(s); } int mystrlen(const char *s) { if (s==NULL) return 0; else return strlen(s); } void menu_hilight(struct menu_struct *mm) { int j; struct menu_struct *m=mm; scr_menuhi(); hcx = m->x + mystrlen(m->title); hcy = m->y; gotoxy(hcx,hcy); if (m->typ==MTOGON || m->typ==MTOGOFF) { if (m->val==NULL) m->val = (char*)malloc(4); if (m->typ==MTOGON) strcpy(m->val,"ON "); if (m->typ==MTOGOFF) strcpy(m->val,"OFF"); } if (m->val==NULL) setvstr(&m->val,""); cputs(m->val); j = m->width - mystrlen(m->val); printdash(j); cx = mystrlen(m->val); gotoxy(hcx+cx,hcy); } void printdash(int j) { int i; for (i=0;i0) cputs(mbuff); } void menu_norm(struct menu_struct *mm) { int j; struct menu_struct *m=mm; gotoxy(m->x + mystrlen(m->title),m->y); if (m->typ==MTOGON || m->typ==MTOGOFF) { if (m->val==NULL) m->val = (char*)malloc(4); if (m->typ==MTOGON) strcpy(m->val,"ON "); if (m->typ==MTOGOFF) strcpy(m->val,"OFF"); } if (m->val != NULL) { scr_menuval(); if (m->width>0) cputs(m->val); scr_menubg(); } j = m->width - mystrlen(m->val); printdash(j); } void manip_refresh_menu(struct menu_struct *mm) { struct menu_struct *m=mm; window(1,1,80,24); scr_menubg(); clrscr(); for (;m->typ!=0;m++) { if (m->title != NULL) if (strlen(m->title)>0) { gotoxy(m->x,m->y); cputs(m->title); } menu_norm(m); } } void do_help(const char *k1, const char *k2) { FILE *hfile; int yy; char hbuff[90]; const char *hfilename="manip.hlp"; char fk1[20],fk2[20]; scr_menuval(); clrscr(); if (strcmp(k2," ")==0) k2 = ""; gotoxy(1,1); wprintf("Manip help on topic {%s}, sub topic {%s}",k1,k2); scr_menubg(); hfile = fopen(gledir(hfilename),"r"); if (hfile==NULL) { gotoxy(1,3); wprintf("Unable to open {%s} \n",gledir(hfilename)); text_inkey(); return; } for (;!feof(hfile);) { if (fgets(hbuff,90,hfile)!=NULL) { if (hbuff[0]=='3') { strtok(hbuff," \n"); strcpy(fk1,strtok(NULL," \n")); if (strcmp(fk1,k1)==0 && strlen(k2)==0) goto help_type; } if (hbuff[0]=='4') { strtok(hbuff," \n"); strcpy(fk2,strtok(NULL," \n")); if (strlen(k2)>0) if (strcmp(fk1,k1)==0 && strcmp(fk2,k2)==0) goto help_type; } } } fclose(hfile); scr_menuval(); gotoxy(1,9); wprintf("help text not found sorry ??? \n"); text_inkey(); return; help_type:; yy = 3; for (;!feof(hfile);) { if (fgets(hbuff,90,hfile)!=NULL) { if (isdigit(hbuff[0])) { goto end_help; } gotoxy(1,yy++); cputs(tabtospace(hbuff)); } if (yy==22) { scr_menuval(); gotoxy(2,24); wprintf("Press any key for next screen of help"); text_inkey(); clrscr(); gotoxy(1,1); wprintf("Graph help on topic {%s}, sub topic {%s}",k1,k2); scr_menubg(); yy = 3; } } end_help:; scr_menuval(); gotoxy(1,yy+1); wprintf("Press any key to continue"); text_inkey(); fclose(hfile); } void add_unrecognized(char *s) { if (nunrec>6) return; } void vunquote(char **ss) { char *s = *ss; if (*s=='\"') { s[strlen(s)-1] = 0; *ss = sdup(s+1); myfree(s); } } int initmenudone; menutype *m_pnt[20]; menutype *m_end[20]; char *m_val[20]; char m_tog[50]; void initmenu() { menutype *mi; int nt=0,z; static int nv; if (!initmenudone) { initmenudone = true; for (z=0;z<=10;z++) { for (mi=pmenu[z].menu; mi->typ!=0; mi++) { if (mi->typ==MTOGON || mi->typ==MTOGOFF) { m_tog[nt++] = mi->typ; } if (mi->val!=NULL) { m_val[nv] = sdup(mi->val); mi->val = sdup(mi->val); m_pnt[nv++] = mi; } } } } else { for (z=0;z<=10;z++) { for (mi=pmenu[z].menu; mi->typ!=0; mi++) { if (mi->typ==MTOGON || mi->typ==MTOGOFF) { mi->typ = m_tog[nt++]; } else { if (mi->val!=0) { myfree(mi->val); } mi->val = 0; } } } for (z=0;zval = sdup(m_val[z]); } } } char msend[200]; #define mss msend+strlen(msend) char cs[80]="xyz"; int gstartend; void m_sendline() { msend[0] = 0; strcpy(cs,"xyz"); } void m_ifsend(char *s) { if (strcmp(s,cs)!=0) { m_sendline(); sprintf(msend,"\t%s ",s); strcpy(cs,s); } } void setmenu(menutype *m,int x, int y, int typ, int typ2, int width, const char *title, const char *val, const char *help) { m->x = x; m->y = y; m->typ = typ; m->typ2 = typ2; m->width = width; m->title = sdup(title); if (val!=0) m->val = sdup(val); m->help = sdup(help); } void init_menucolor() { h_bcolor = WHITE; h_fcolor = BLACK; } int pick_file(char *result, const char *wld) { pmenutype ask; char wild[80]; char *f[80]; char *swap; menutype *m,*mi,*mwild; #ifdef SOMEOS /* a.r. */ struct ffblk ffblk; #endif #ifdef DOS HDIR hdir = HDIR_SYSTEM; FILEFINDBUF3 FFbufr; unsigned long SearchCnt = 1; #endif int i,x,y,nf,rval,adddir=false; strcpy(wild,wld); ask.ci = 0; pick_again:; x=0; y=0; nf=0; init_menucolor(); #ifdef SOMEOS /* a.r. */ done = findfirst(wild,&ffblk,0); for (nf=0;nf<70 && !done;nf++) { f[nf] = sdup(ffblk.ff_name); done = findnext(&ffblk); } #endif #ifdef DOS done = DosFindFirst( wild, &hdir, 0, &FFbufr, sizeof(FFbufr), &SearchCnt, FIL_STANDARD); for (nf=0;nf<70 && !done;nf++) { f[nf] = sdup(FFbufr.achName); done = DosFindNext( hdir, &FFbufr, sizeof(FFbufr), &SearchCnt); } #endif sortagain:; swap = NULL; for (i=0;i<(nf-1);i++) { if (strcmp(f[i],f[i+1])>0) { swap = f[i]; f[i] = f[i+1]; f[i+1] = swap; } } if (swap != NULL) goto sortagain; m = (menutype*)calloc(3+nf,sizeof(*m)); ask.menu = m; ask.ci = 0; if (nf==0) ask.ci = 1; if (m==0) wprintf("memory allocation error"); for (mi=m,i=0;ityp = 0; rval = do_menu(&ask); strcpy(result,((ask.menu)[ask.ci]).val); if (strcmp(wild,mwild->val)!=0) { strcpy(wild,mwild->val); if (strstr(wild,"*")==NULL) { if (wild[strlen(wild)-1] == '\\') strcat(wild,"*.dat"); else strcat(wild,"\\*.dat"); } adddir = true; goto pick_again; } for (i=0;i * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ #include "all.h" #include "edt.h" int fner(char *s); int scr_manip_refresh(void); int scr_getch(void); char *function_bar() { return "F11-Help F12-Save F13-Load F14-Save as F9-Graph Form F10-Drawit"; } struct escape_struct {char *str; int val;}; struct escape_struct gold[] = { "v", epaste, "R", esearch, "S", eundeleol, NULL, }; struct escape_struct eseq[] = { "4~", eselect, "1~", esearch, "2~", epaste, "3~", ecut, "4~", eselect, "5~", epageup, "6~", epagedown, "A", eup, "B", edown, "C", eright, "D", eleft, "20~", egraphmenu, "21~", edrawit, "23~", ehelp, "24~", esave, "25~", eload, "26~", esaveas, "P", egold, "Q", ehelp, "R", efindnext, "S", edeleol, "n", eselect, "v", ecut, "l", edelright, NULL, }; int gold_fn[] = { edrawit,ehelp,esave,eload,esaveas,eshowerror,0,0,0,egraphmenu,edrawit }; struct keymatch {int m; int val;}; /* Normal key and ^ commands commands */ struct keymatch kmatch2[] = { 13, ereturn, 3, equit, 4, eword, 5, eedt, 6, efast, 7, edrawit, 18, eshowerror, 8, ehelp, 20, etrace, 12, efindnext, 21, eundelline, 25, edelline, 26, eescape, 27, eescape, 127, edelete, 0,0 }; /* Control K commands */ struct keymatch kmatch3[] = { 'b', eselect, 'v', emove, 'k', emark, 'c', ecopy, 'y', ecut, 'u', epaste, 'p', epaste, 'r', eblockread, 'w', eblockwrite, 'm', egraphmenu, 'l', eload, 'd', edrawit, 's', esave, 'x', equit, 0,0 }; /* Control Q commands */ struct keymatch kmatch4[] = { 'f', esearch, 'c', eendoffile, 'r', etopoffile, 0,0 }; text_inkey() { int cc,i,c1,c2; scr_manip_refresh(); loop1: cc = tt_inkey(); c2 = (cc & 0xff); switch(c2) { default: for (i=0;kmatch2[i].m!=0;i++) if (kmatch2[i].m==c2) return kmatch2[i].val; break; case 27: c2 = tt_inkey(); /* throw away next char (unless escape) */ if (c2==27) return eescape; case -101: case -113: c2 = escape_seq(); if (c2==egold) { c2 = tt_inkey(); if (c2==27) { tt_inkey(); return escape_seq_gold(); } else if (isdigit(c2)) { return gold_fn[c2-'0']; } } return c2; break; case 17: fner("^Q F=Find string, R=Top of file"); cc = tt_inkey(); c2 = (cc & 0xff); if (c2<32) c2 = c2 + 'a' - 1; c2 = tolower(c2); for (i=0;kmatch4[i].m!=0;i++) if (kmatch4[i].m==c2) return kmatch4[i].val; fner("Unrecognized Quick movement command"); goto loop1; case 11: fner("^K B=begin block, P=Paste, (use KP6 for Cut), K=End block"); cc = tt_inkey(); c2 = (cc & 0xff); if (c2<32) c2 = c2 + 'a' - 1; c2 = tolower(c2); for (i=0;kmatch3[i].m!=0;i++) if (kmatch3[i].m==c2) return kmatch3[i].val; fner("Unrecognized block command"); goto loop1; } return c2; } escape_seq() { int cc,i; unsigned char esq[10]; char *s; s = &esq[0]; *s++ = cc = tt_inkey(); while (cc<65) *s++ = cc = tt_inkey(); *s++ = 0; for (i=0;eseq[i].str!=NULL;i++) if (strcmp(eseq[i].str,esq)==0) break; if (eseq[i].str!=NULL) return eseq[i].val; else return 0; } escape_seq_gold() { int cc,i; unsigned char esq[10]; char *s; s = &esq[0]; *s++ = cc = tt_inkey(); while (cc<65) *s++ = cc = tt_inkey(); *s++ = 0; for (i=0;gold[i].str!=NULL;i++) if (strcmp(gold[i].str,esq)==0) break; if (gold[i].str!=NULL) return gold[i].val; else return 0; } #include #include int tt_chan; short tt_iosb[4]; int tt_inkey(); key_open() { int st; static $DESCRIPTOR(tt_desc,"tt"); st = SYS$ASSIGN(&tt_desc,&tt_chan,0,0); } int tt_inkey() { int read_mask,st; unsigned char inbuff[9]; static int key_isopen; if (!key_isopen) {key_open(); key_isopen=true;} read_mask = IO$_READLBLK | IO$M_NOFILTR | IO$M_NOECHO; st = SYS$QIOW(0,tt_chan,read_mask,tt_iosb,0,0,inbuff,1,0,0,0,0); if ((st & 1) != 1) LIB$SIGNAL(st); if ((tt_iosb[0] & 1) != 1) LIB$SIGNAL(tt_iosb[0]); return inbuff[0]; } gle-graphics-4.2.4c/src/manip/general.cpp0000664000000000000000000001047011405446017016751 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ #define pi 3.14159265 #define farcalloc calloc #include "all.h" void polar_xy(double r, double angle, double *dx, double *dy) { *dx = r*cos(angle*3.14159265/180); *dy = r*sin(angle*3.14159265/180); } void xy_polar(double dx,double dy,double *radius,double *angle) { if (dx==0 && dy==0) { printf("Cannot work out angle of zero length vector\n"); return; } if (dx==0) { *angle = 90; if (dy<0) *angle = -90; } else { *angle = atan2(dy,dx)*180/pi; } *radius = sqrt(pow(dx,2)+pow(dy,2)); } void ncpy(char *d, const char *s, int n) { strncpy(d,s,n); *(d+n) = 0; } void ncat(char *d, char *s, int n) { int i; i = strlen(d); strncat(d,s,n); *(d+i+n) = 0; } char *sdup(const char *s) { char *v; v = (char*)malloc(strlen(s)+1); strcpy(v,s); return v; } /* var_getstr(int varnum,char *s){} sub_clear(void){} int sub_def(char *s){} sub_call(int idx,double *pval,char **pstr,int *npm){} sub_find(char *s,int *idx,int *zret, int *np, int **plist){*idx = 0;} sub_get_startend(int idx, int *ss, int *ee){} sub_param(int idx,char *s){} sub_set_return(double d){} sub_set_startend(int idx, int ss, int ee){} var_add(char *name,int *idx,int *type){} var_find(char *name,int *idx,int *type){*idx = 0;} var_findadd(char *name,int *idx,int *type){} var_get(int jj, double *v){} var_nlocal(int *l){} var_set(int jj, double v){} var_setstr(int jj, char *s){} */ void *myallocz(int32 size) { static void *p; p = farcalloc(1,size); return p; } void mystrcpy(char **d, const char *s) { if (*d!=0) free(*d); *d = 0; *d = (char*)malloc(strlen(s)+1); if (d==NULL) gle_abort("Memory gone\n"); strcpy(*d,s); } void do_pcode() { } int gpcode; int gplen; gle-graphics-4.2.4c/src/manip/fn.cpp0000664000000000000000000001253711660563604015752 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ #include "all.h" #include "eval.h" /*------------------------------------------------------------------*/ /* Find the function callped *cp, and return it's number */ /*------------------------------------------------------------------*/ /* You can add a function, you MUST place it in alphabetical order */ /* and give it the next unused index number */ /* ret = Type of returned value, 1=number, 2=string */ /* np = number of parameters expected */ /* Parameters p0...p4 == 1=number, 2=string, 0=none (e.g. height()) . */ #define NKEYS (sizeof keywfn / sizeof(struct keyw)) struct keyw { const char *word; int index; int ret,np,p[5]; } keywfn[] = { /* r np p1p2p3p4p5 */ { " ",0 ,1 ,0 ,{ 0,0,0,0,0 } } ,{ "+",f_plus ,1 ,0 ,{ 0,0,0,0,0 } } ,{ "-",f_minus ,1 ,0 ,{ 0,0,0,0,0 } } ,{ "ABS",f_abs ,1 ,1 ,{ 1,0,0,0,0 } } ,{ "ATN",f_atn ,1 ,1 ,{ 1,0,0,0,0 } } ,{ "CELL",f_cell ,1 ,2 ,{ 1,1,0,0,0 } } ,{ "COS",f_cos ,1 ,1 ,{ 1,0,0,0,0 } } ,{ "DATE$",f_date ,2 ,0 ,{ 0,0,0,0,0 } } ,{ "EXP",f_exp ,1 ,1 ,{ 1,0,0,0,0 } } ,{ "FIX",f_fix ,1 ,1 ,{ 1,0,0,0,0 } } ,{ "INT",f_int ,1 ,1 ,{ 1,0,0,0,0 } } ,{ "LEFT$",f_left ,2 ,2 ,{ 2,1,0,0,0 } } ,{ "LEN",f_len ,1 ,1 ,{ 2,0,0,0,0 } } ,{ "LOG",f_log ,1 ,1 ,{ 1,0,0,0,0 } } ,{ "LOG10",f_log10 ,1 ,1 ,{ 1,0,0,0,0 } } ,{ "MISS",f_miss ,1 ,2 ,{ 1,1,0,0,0 } } ,{ "NOT",f_not ,1 ,1 ,{ 1,0,0,0,0 } } ,{ "NUM$",f_num ,2 ,1 ,{ 1,0,0,0,0 } } ,{ "NUM1$",f_num1 ,2 ,1 ,{ 1,0,0,0,0 } } ,{ "POS",f_pos ,1 ,2 ,{ 2,1,0,0,0 } } ,{ "RIGHT$",f_right,2 ,2 ,{ 2,1,0,0,0 } } ,{ "RND",f_rnd ,1 ,1 ,{ 1,0,0,0,0 } } ,{ "SEG$",f_seg ,2 ,3 ,{ 2,1,1,0,0 } } ,{ "SGN",f_sgn ,1 ,1 ,{ 1,0,0,0,0 } } ,{ "SIN",f_sin ,1 ,1 ,{ 1,0,0,0,0 } } ,{ "SQR",f_sqr ,1 ,1 ,{ 1,0,0,0,0 } } ,{ "SQRT",f_sqrt ,1 ,1 ,{ 1,0,0,0,0 } } ,{ "TAN",f_tan ,1 ,1 ,{ 1,0,0,0,0 } } ,{ "TIME$",f_time ,2 ,0 ,{ 0,0,0,0,0 } } ,{ "VAL",f_val ,1 ,1 ,{ 2,0,0,0,0 } } } ; int binsearch(char *word, struct keyw tab[], int n); void find_un(char *cp, int *idx,int *ret,int *np,int **plist) { int i; i = binsearch(cp,keywfn,NKEYS); *idx = keywfn[i].index; *ret = keywfn[i].ret; *np = keywfn[i].np; *plist = &keywfn[i].p[0]; } /*------------------------------------------------------------------*/ /* Simple binary search */ /*------------------------------------------------------------------*/ int binsearch(char *word, struct keyw tab[], int n) { int cond,low,high,mid; low = 0; high = n-1; while (low <= high) { mid = (low+high) / 2; if ((cond = strcmp(word,tab[mid].word)) < 0) high = mid - 1; else if (cond > 0) low = mid + 1; else return mid; } return 0; } gle-graphics-4.2.4c/src/manip/unix_extra.h0000644000000000000000000000557111405446017017173 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ // // unix_extra.h // #ifndef INCLUDE_UNIX_EXTRA #define INCLUDE_UNIX_EXTRA #include "ffblk_def.h" int findfirst(char *wild, struct ffblk *ffblk, int zz); int findnext(struct ffblk *ffblk); #endif gle-graphics-4.2.4c/src/manip/cmd.cpp0000664000000000000000000007420711575345035016115 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ /* number - put it in current cell and move in current dir 'string - put string in cell and move in current direction range = expression - evaluate exp for each cell in range cell(exp,exp) = expression - evaluate exp and put in cell cmd - exectue command, if then else next for save load generate print, input & = continued on next line. load b.dat range c3r3 width 10.3 between ", " save b.c c3c4 set outwidth 0 set outwidth 10.3 set between ", " copy c1 c2 */ #include "all.h" #include "edt.h" #include "keyword.h" extern int in_recover; extern int curx; extern int cury; extern int max_x,max_y; #define tok(j) (tk[j]) #define dbg if (gle_debug>0) extern char file_name[]; extern int iserr; extern int gle_debug,changed; extern int trace_on; extern int exit_manip; int isating; int islogging; int load_list; int dpoints[200]; int coltype[200]; int outwidth1=8,outwidth2=8; const char *between=" "; char strmiss[40]; void do_command(char *cmd) { static char inbuff[200]; static char *tk[500]; static char tkbuff[500]; int i,al,ntok; static char space_str[] = " "; if (islogging) log_write(cmd); token_space(); strcat(inbuff,cmd); al = strlen(inbuff); if (inbuff[al-1]=='&') { inbuff[al-1] = 0; return; } token(inbuff,tk,&ntok,tkbuff); for (i=ntok+1;i< ntok+5;i++) tk[i] = space_str; /* for (i=1;i<=ntok;i++) printf("token{%s} ",tk[i]); printf("\n"); */ passcmd(inbuff,tk,&ntok); inbuff[0] = 0; } extern int moving_x, moving_y; void passcmd(char *source,char *tk[],int *ntok) { int j,i,ix,vidx,vtype=1; double v; char *sp; find_mkey(tok(1),&ix); if (strcmp(tok(2),"=")==0) { do_assign(tok(1),tok(3)); return; } sp = strchr(tok(1),'='); if (sp!=NULL) { *sp = 0; do_assign(tok(1),sp+1); return; } if (gle_isnumber(tok(1)) || *tok(1)=='-') { set_cell(curx,cury,atof(tok(1))); set_newxy(curx+moving_x,cury+moving_y); return; } if ((*tok(1))=='"') { *(tok(1)+strlen(tok(1))-1) = 0; set_scell(curx,cury,tok(1)+1); set_newxy(curx+moving_x,cury+moving_y); return; } if ((*tok(1))=='@') { at_open(tok(1)+1); return; } switch (ix) { case k_data: /* data */ cmd_data(tok(2)); break; case k_help:/* help load */ if (*ntok==1) do_help("MANIP",""); else do_help(tok(2),tok(3)); manip_refresh(); break; case k_list: /* list a.a [range] , reads a list of numbers */ load_list = true; cmd_load(tok(2),tok(3),*ntok); load_list = false; break; case k_load: /* LOAD A.A [range] -LIST */ if (*ntok>3) if (strcmp(tok(4),"-LIST")==0) load_list = true; cmd_load(tok(2),tok(3),*ntok); load_list = false; break; case k_save: /* SAVE [a.a] [range] [format-string] */ changed = false; cmd_save(tok(2),tok(3),tok(4),*ntok); break; case k_set: /* set outwidth, set width, set between, */ if (strcmp(tok(2),"OUTWIDTH")==0) set_outwidth(tok(3)); else if (strcmp(tok(2),"WIDTH")==0) set_outwidth(tok(3)); else if (strcmp(tok(2),"BETWEEN")==0) between = unquote(tok(3)); else if (strcmp(tok(2),"MISSING")==0) strcpy(strmiss,unquote(tok(3))); else if (strcmp(tok(2),"DIGITS")==0) outwidth2 = atoi(tok(3)); else if (strcmp(tok(2),"DPOINTS")==0) { i = atoi(tok(3)); if (*ntok>3) dpoints[atoi(tok(4))] = i; else for (j=0;j<200;j++) dpoints[j] = i; } else if (strcmp(tok(2),"COLTYPE")==0) { i = atoi(tok(3)); if (*tok(3)=='C') i = atoi(tok(3)+1); if (strcmp(tok(4),"BOTH")==0) j = 0; if (strcmp(tok(4),"DECIMAL")==0) j = 1; if (strcmp(tok(4),"EXP")==0) j = 2; if (strcmp(tok(4),"DPOINTS")==0) { j = atoi(tok(5)); if (i==0) for (i=0;i<200;i++) dpoints[i] = j; else dpoints[i] = j; } else { if (i==0) for (i=0;i<200;i++) coltype[i] = j; else coltype[i] = j; } } else if (strcmp(tok(2),"COLUMNS")==0) set_ncol(atoi(tok(3))); else if (strcmp(tok(2),"NCOL")==0) set_ncol(atoi(tok(3))); else if (strcmp(tok(2),"COLWIDTH")==0) set_colwidth(atoi(tok(3))); else if (strcmp(tok(2),"PRECISION")==0) outwidth2 = atoi(tok(3)); else if (strcmp(tok(2),"SIZE")==0) { set_size(atoi(tok(3)),atoi(tok(4))); } else fner("Invalid SET command, Use (width,between,digits,dpoints,ncol,colwidth)\n"); break; case k_new: /* clears the spreadsheet and free's memory */ clear_data(); break; case k_clear: /* clear part of the spread sheet */ cmd_clear(tok(2)); break; case k_delete: /* delete [if ] */ cmd_delete(tok(2),tok(4),*ntok); trim_data(); break; case k_insert: /* insert */ cmd_insert(tok(2)); break; case k_exit: cmd_save(tok(2),tok(3),tok(4),*ntok); changed = false; exit_manip = true; break; case k_quit: exit_manip = true; break; case k_logging: /* log filename */ if (islogging) log_close(); log_open(tk[2]); break; case k_close: log_close(); break; case k_at: /* execute file of manip commands */ at_open(tk[2]); break; case k_call: manip_refresh(); break; case k_sort: /* sort on */ cmd_sort(tk[2],tk[4],*ntok); break; case k_swap: /* swap CaCb || swap RaRb */ cmd_swap(tk[2]); break; case k_shell: window(1,1,80,25); scr_norm(); clrscr(); printf("Type in EXIT to return to MANIP\n\n"); #ifndef DJ /* a.r. */ system(""); #else system(getenv("COMSPEC")); #endif manip_refresh(); break; case k_sum: cmd_sum(tk[2]); break; case k_fit: cmd_fit(tk[2]); break; case k_parsum: cmd_parsum(tk[2],tk[3]); break; case k_if: case k_else: case k_end: case k_for: case k_next: case k_print: case k_input: /* input "prompt" variable */ case k_copy: /* copy range1 range2 [if exp] (doesn't) */ cmd_copy(tk[2],tk[3],tk[5],*ntok,true); break; case k_move: /* move range1 range2 [if exp] (leaves gaps) */ cmd_copy(tk[2],tk[3],tk[5],*ntok,false); break; case k_prop: /* prop range1 range2 (cycle thru range1) */ cmd_copy(tk[2],tk[3],tk[5],*ntok,2); break; case k_generate: /* gen 2(1,2:4)3 c1 (1 1 2 2 3 3 4 4) 3 times*/ cmd_generate(tk[2],tk[3],*ntok); break; case k_let: /* let variable = expression */ var_findadd(tk[2],&vidx,&vtype); evaluate(tk[4],&v); var_set(vidx,v); break; case k_goto: /* should really use eval, not atoi so var's work */ set_newxy(atoi(tk[2]),atoi(tk[3])); break; default: fner("No such command {%s} {%s}\n",tk[1],tk[2]); } } struct op_key { char *name; int typ; int pos; int32 idx; } ; typedef struct op_key (*OPKEY)[100]; void do_assign(char *t1, char *t2) { RANGE rr; int cp,vtype; double v; static int32 pcode[200]; static char outstr[80]; int plen; vtype = 1; /* ------------------ */ /* variable = expression */ /* cell(exp,exp) = exp */ /* range = exp */ /* ------------------ */ if (strncmp(t1,"CELL(",5)==0) { /* cell(exp,exp) = exp */ { char s1[80],s2[80],*s; int x,y; s = strchr(t1,','); if (s==NULL) { fner("Expecting CELL(EXP,EXP) = EXP \n"); return; } strcpy(s1,t1+5); strcpy(s2,s+1); *strchr(s1,',') = 0; if (strchr(s2,')')!=NULL) *strchr(s2,')') = 0; evaluate(s1,&v); x = (int)v; evaluate(s2,&v); y = (int)v; evaluate(t2,&v); set_cell(x,y,v); show_ifcell(x,y); } return; } if (range_def(t1,&rr)) { /* range = exp */ { int c_idx[20], c_val[20], nc, j; int r_idx[20], r_val[20], nr; polish(t2,(char *) pcode,&plen,&vtype); var_find_rc(c_idx,c_val,&nc,'C'); var_find_rc(r_idx,r_val,&nr,'R'); for (;range_next(&rr);) { cp = 0; eval_setxy(rr.col,rr.row); for (j=0;j150) fner("pcode too int32, report bug to Chris\n"); cp = 0; eval(pcode,&cp,v,outstr,&vtype); } int new_line; bool range_next(RANGE *r) { new_line = false; if (r->row==0) { r->row = r->r1; r->col = r->c1; return true; } if (r->colfirst) { r->col++; if (r->col > r->c2) { new_line = true; r->col = r->c1; r->row++; if (r->row > r->r2) return false; } } else { r->row++; if (r->row > r->r2) { new_line = true; r->row = r->r1; r->col++; if (r->col > r->c2) return false; } } return true; } bool range_def(const char *sxx, RANGE *r) { char s[80]; char *s1; char rr,cc; strcpy(s,sxx); strip_colon(s); r->c1 = r->c2 = r->r1 = r->r2 = r->row = r->col = 0; if (*s=='C') {cc='C'; rr='R'; r->colfirst = true;} else if (*s=='R') {cc='R'; rr='C'; r->colfirst = false;} else return false; /* c1 c1r1r10 c3c4r7 c3r7 c3c4r1r2 | r1r2c1c3 c3r7 r2*/ s1 = range_int(s,&(r->c1)); if (*s1==cc) { s1 = range_int(s1,&r->c2); } if (*s1==rr) { s1 = range_int(s1,&r->r1); if (*s1==cc) { s1 = range_int(s1,&r->c2); } if (*s1==rr) { s1 = range_int(s1,&r->r2); } if (*s1==cc) { s1 = range_int(s1,&r->c2); } } if (!r->colfirst) { swapint(&r->c1,&r->r1); swapint(&r->c2,&r->r2); } if (r->c1 == 0) r->c1 = 1; if (r->c2 == 0) { if (!r->colfirst) { if (r->c1 > max_x) r->c2 = r->c1; else r->c2 = max_x; } else { r->c2 = r->c1; } } if (r->r1 == 0) r->r1 = 1; if (r->r2 == 0) {if (r->colfirst) { if (r->r1>max_y) r->r2 = r->r1; else r->r2 = max_y;} else r->r2 = r->r1;} /* printf("range def %d %d %d %d | \n",r->c1,r->r1,r->c2,r->r2); getch();*/ data_expand(r->c2,r->r2); if (*s1!=0) return false; return true; } char *range_int(char *s, int *v) { static char buff[40],*b; b = buff; for (s++;*s!=0 && isdigit(*s);) *b++ = *s++; *b++ = 0; *v = atoi(buff); return s; } void swapint(int *a, int *b) { int c; c = *a; *a = *b; *b = c; } const char *sep_chars=", \t\n"; void cmd_load(char *fname, const char *range, int ntok) { RANGE rr; static char inbuff[8001]; FILE *fptr; m_tokinit(sep_chars); if (ntok<2) fname = file_name; strcpy(file_name,fname); if (ntok>2) { if (range_def(range,&rr)) range_next(&rr); else { /* range = exp */ fner("Invalid load range given (%s) \n",range); return; } } else { rr.col = 1; rr.row = 1; } gle_strlwr(fname); fptr = fopen(fname,"r"); if (fptr==NULL) { fner("Could not open (%s) \n",fname); return; } for (;!feof(fptr);) { if (fgets(inbuff,7000,fptr)!=NULL) { if (load_list) cmd_load_list(&rr,inbuff); else cmd_load_line(rr.col,rr.row++,inbuff); } } fclose(fptr); } static char term_table[256]; void m_tokinit(const char *termset) { int i; for (i=0;i<=255;i++) { if (strchr(termset,i)!=NULL) term_table[i]=true; else term_table[i]=false; } } char *m_tokend(char *s) { static char *p1,*p2,*p,savechar; if (s!=NULL) { p1 = s; } else { *p2 = savechar; if (*p2 == 0) return NULL; p1 = p2+1; } for (p=p1; *p != 0; p++) { /* find a non space */ if (term_table[(unsigned int)*p]==false) break; } if (*p==0) return NULL; p1 = p; if (*p=='"') { p2 = strchr(p+1,'"'); if (p2==NULL) p2 = p; p = ++p2; } else { for (; *p != 0; p++) { /* find next space */ if (term_table[(unsigned int)*p]==true) break; } } p2 = p; savechar = *p2; *p2 = 0; return p1; } void cmd_load_list(RANGE *r, char *inbuff) { char *s; s = m_tokend(inbuff); for (;s!=NULL;) { load_str(r->col,r->row,s); s = m_tokend(NULL); range_next(r); } } void cmd_load_line(int x, int y, char *inbuff) { char *s; s = m_tokend(inbuff); for (;s!=NULL;) { load_str(x,y,s); s = m_tokend(NULL); x++; } } void load_str(int x, int y, char *s) { static char bb[88]; if (strcmp(s,".")==0 || strcmp(s,"-")==0 || strcmp(s,"*")==0) clear_cell(x,y); else if (isdigit(*s) || *s=='-' || *s=='+' || *s=='.') set_cell(x,y,atof(s)); else { if (strlen(s)>80) { strncpy(bb,s,80); bb[80] = 0; set_scell(x,y,bb); } else set_scell(x,y,s); } show_ifcell(x,y); } void cmd_save(char *fname, const char *range, const char *format, int ntok) { RANGE rr; static char inbuff[2001]; static char fmtg[80],buff1[80],savefmtg[80]; FILE *fptr; int lcount=0; int i,inlen=0,thelot,k; double v; char *s; gle_strlwr(fname); trim_data(); thelot = false; if (*range=='-') { const char* tmp = range; range = format; format = tmp; } if (strcmp(format,"-COMMA")==0) { set_outwidth(0); between = strdup(", "); } if (strcmp(format,"-TAB")==0) { set_outwidth(0); between = strdup("\t"); } if (strcmp(format,"-SPACE")==0) { set_outwidth(0); between = strdup(" "); } sprintf(fmtg,"%%.%dg",outwidth2); if (outwidth1==0 && outwidth2==0) strcpy(fmtg,"%g"); strcpy(savefmtg,fmtg); if (ntok<2) fname = file_name; if (strcmp(fname,"*")==0) fname = file_name; strcpy(file_name,fname); /* format strings "%2.3f, " */ if (ntok<4) format = (char*)"%g "; if (ntok<3 || strcmp(range," ")==0) thelot = true; if (thelot) range = (char*)"C1R1"; if (range_def(range,&rr)) ; else { /* range = exp */ fner("Invalid range given (%s)%d \n",range,strlen(range)); return; } if (thelot) rr.c2 = max_x; unlink("manip_.bak"); unlink("manip_.tmp"); fptr = fopen("manip_.tmp","w"); if (fptr==NULL) { fner("Could not open (%s) \n",fname); return; } for (;range_next(&rr);) { if (new_line==true) { if (fprintf(fptr,"%s\n",inbuff) <0) printf("Error writing output file\n"); inbuff[50] = 0; if (++lcount==1) fner("{%s} W=%d D=%d {%s}",fname,outwidth1,outwidth2,inbuff); inlen = 0; } if (inlen>0) { strcpy(inbuff+inlen,between); inlen +=strlen(between);} get_cellboth(rr.col,rr.row,&v,&s); k = rr.col; if (k>199) k = 199; if (coltype[k]==0) strcpy(fmtg,savefmtg); if (coltype[k]==1) strcpy(fmtg,"%f"); if (coltype[k]==2) strcpy(fmtg,"%e"); if (s==NULL) { i = sprintf(buff1,fmtg,vcell(rr.col,rr.row)); if (dpoints[k]>0) i = strcpydecimal(inbuff+inlen,buff1,outwidth1,dpoints[k]); else i = strcpywidth(inbuff+inlen,buff1,outwidth1); } else { i = strcpywidth(inbuff+inlen,s,outwidth1); } inlen += i; } if (new_line==true) { if (fprintf(fptr,"%s\n",inbuff)<0) { fner("Error writing output file"); return; } inbuff[50] = 0; if (++lcount==1) fner("Width=%d Precision=%d {%s}",outwidth1,outwidth2,inbuff); inlen = 0; } fclose(fptr); if (rename(fname,"manip_.bak")!=0); if (rename("manip_.tmp",fname)!=0) fner("Unable to rename manip_.tmp"); } int strcpydecimal(char *dest, char *src, int wid, int dpoints) { /* 123 , 12.031, 0.0003321 */ /* dpoints 2 goes too */ /* 123.00 12.03 0.00 */ static char buff[80]; strcpy(buff,src); if (strchr(buff,'.')==NULL) strcat(buff,"."); strcat(buff,"0000000000000000000000000000000000"); *(strchr(buff,'.')+dpoints+1) = 0; strcpywidth(dest,buff,wid); return strlen(dest); } int strcpywidth(char *dest, char *src, int wid) { static char buff[80]; int i; i = wid-strlen(src); if (i<0) i = 0; memset(buff,' ',i); buff[i] = 0; strcpy(dest,buff); strcat(dest,src); return strlen(dest); } void set_outwidth(char *s) { char *ss; ss = strchr(s,'.'); if (ss==NULL) { outwidth1 = atoi(s); outwidth2 = 8; } else { *ss++ = 0; outwidth1 = atoi(s); outwidth2 = atoi(ss); } } char *unquote(char *s) { char ss[80]; strcpy(ss,s); if (*s=='"') { ss[strlen(ss)-1] = 0; return strdup(ss+1); } else return strdup(ss); } void cmd_copy(char *src, char *dest, char *ifexp, int ntok, int always) { RANGE ss,dd,savess; int c_idx[20], c_val[20], nc, j, isif=false; int r_idx[20], r_val[20], nr; int cp,vtype,ddok,ssok; double v; char outstr[30]; int32 pcode[200]; int plen; vtype = 1; if (ntok>4) isif = true; if (!range_def(src,&ss)) { fner("Error in source range {%s} \n",src); return;} if (!range_def(dest,&dd)) { fner("Error in destination range {%s} \n",dest); return;} if (isif) { polish(ifexp,(char *) pcode,&plen,&vtype); var_find_rc(c_idx,c_val,&nc,'C'); var_find_rc(r_idx,r_val,&nr,'R'); } ddok = range_next(&dd); ssok = range_next(&ss); savess = ss; for (;ssok && ddok;) { if (isif) { cp = 0; eval_setxy(ss.col,ss.row); eval_setxyd(dd.col,dd.row); for (j=0;jv2) return false; return true; } int c_idx[20], c_val[20], ncc; int r_idx[20], r_val[20], nrr; int32 cpcode[200]; void cmd_polish(char *exp) { int vtype; int plen; vtype = 1; polish(exp,(char *) cpcode,&plen,&vtype); var_find_rc(c_idx,c_val,&ncc,'C'); var_find_rc(r_idx,r_val,&nrr,'R'); } void cmd_eval(int x1, int y1, double *v) { int cp,vtype,j; char outstr[30]; vtype = 1; cp = 0; eval_setxy(x1,y1); eval_setxyd(x1,y1); for (j=0;j2) isif = true; else isif = false; if (!range_def(range,&rr)) { fner("Error in range {%s} \n",range); return;} if (isif) cmd_polish(ifexp); range_next(&rr); if (rr.colfirst) { w = rr.c2-rr.c1+1; wid = max_x-rr.c1; } else { w = rr.r2-rr.r1+1; wid = max_y-rr.r1; } for (;;) { if (rr.colfirst) { if (isif) cmd_eval(rr.col,rr.row,&v); if (v==true || !isif) { for (j=0;jrr.r2) break; } else { if (isif) cmd_eval(rr.col,rr.row,&v); if (v==true || !isif) { for (j=0;jrr.c2) break; } } } int oncol; void cmd_sort(char *range, char *ifexp, int ntok) { RANGE rr; double v; int *pnt; int i,j,c,savemax; if (ntok<3) {fner("Expecting SORT c1c2 ON "); return; } if (!range_def(range,&rr)) { fner("Error in range {%s} \n",range); return;} savemax = max_x; oncol = max_x + 1; cmd_polish(ifexp); range_next(&rr); if (ntok==5) { for (i=rr.r1;i<=rr.r2;i++) { copy_cell(rr.c1,i,oncol,i); } } else { for (i=rr.r1;i<=rr.r2;i++) { cmd_eval(rr.c1,i,&v); set_cell(oncol,i,v); } } pnt = (int*)calloc(max_y+2,sizeof(int)); if (pnt==NULL) {fner("Not enough memory to sort"); return;} for (i=0;i<=max_y+1;i++) pnt[i] = i; for (i=rr.r1+1;i<=rr.r2;i++) { if (cell_greater(oncol,pnt[i-1],oncol,pnt[i])) { sort_shuffle(i,rr.r1,pnt); } } for (c=rr.c1; c<=rr.c2; c++) { for (j=rr.r1;j<=rr.r2;j++) { copy_cell(c,pnt[j],oncol,j); } for (j=rr.r1;j<=rr.r2;j++) { copy_cell(oncol,j,c,j); show_ifcell(c,j); } } for (j=1;j<=max_y;j++) clear_cell(oncol,j); max_x = savemax; } void sort_shuffle(int i, int r1, int *pnt) { int ins,j,x; ins = r1; for (j=i-1;j>=r1;j--) { if (cell_greater(oncol,pnt[i],oncol,pnt[j])) { ins = j + 1; break; } } x = pnt[i]; for (j=i;j>=ins;j--) pnt[j] = pnt[j-1]; pnt[ins] = x; } void cmd_insert(char *range) { RANGE rr; int j,cwid,cw,rwid,rw; if (!range_def(range,&rr)) { fner("Error in range {%s} \n",range); return;} range_next(&rr); cw = rr.c2-rr.c1+1; cwid = max_x-rr.c1+1; rw = rr.r2-rr.r1+1; rwid = max_y-rr.r1+1; for (;;) { if (rr.colfirst) { for (j=cwid-1;j>=0; j--) { copy_cell(rr.col+j,rr.row,rr.col+j+cw,rr.row); show_ifcell(rr.col+j+cw,rr.row); } for (j=0;jrr.r2) break; } else { for (j=rwid-1;j>=0; j--) { copy_cell(rr.col,rr.row+j,rr.col,rr.row+j+rw); show_ifcell(rr.col,rr.row+j+rw); } for (j=0;jrr.c2) break; } } } void cmd_data(char *range) { RANGE rr; static char ans[155]; int cmd; if (!range_def(range,&rr)) { fner("Invalid range given (%s)%d \n",range,strlen(range)); return; } for (;;) { range_next(&rr); mjl_flush(); xxx: set_newxy(rr.col,rr.row); if (!iserr) fner("Press ^Z or ESC when data entry finished\n"); read_command(&cmd,ans,"DATA% "); if (cmd==eescape || cmd==equit) break; if (cmd!=0) { do_arrow(cmd); rr.col = curx; rr.row = cury; goto xxx; } else { if (gle_isnumber(ans)) { set_cell(curx,cury,atof(ans)); } else { set_scell(curx,cury,ans); } show_cellwide(curx,cury); } } } bool swap_def(char *s, RANGE *r) { char *s1; char rr,cc; strip_colon(s); r->c1 = r->c2 = r->r1 = r->r2 = r->row = r->col = 0; if (*s=='C') {cc='C'; rr='R'; r->colfirst = true;} else if (*s=='R') {cc='R'; rr='C'; r->colfirst = false;} else return false; /* c1 c1r1r10 c3c4r7 c3r7 c3c4r1r2 | r1r2c1c3 c3r7 r2*/ s1 = range_int(s,&(r->c1)); if (*s1==cc) { s1 = range_int(s1,&r->c2); } if (*s1==rr) { s1 = range_int(s1,&r->r1); if (*s1==cc) { s1 = range_int(s1,&r->c2); } if (*s1==rr) { s1 = range_int(s1,&r->r2); } if (*s1==cc) { s1 = range_int(s1,&r->c2); } } if (!r->colfirst) { swapint(&r->c1,&r->r1); swapint(&r->c2,&r->r2); } if (*s1!=0) return false; return true; } void cmd_swap(char *range) { RANGE rr; int i; if (!swap_def(range,&rr)) { fner("Invalid range given (%s) expecting c1c2 or r1r2 \n",range); return; } if (rr.colfirst) { if (rr.c1==0 || rr.c2==0) {fner("Invalid range, expected c1c2\n"); return;} for (i=1;i<=max_y;i++) { swap_cell(rr.c1,i,rr.c2,i); show_ifcell(rr.c1,i); show_ifcell(rr.c2,i); } } else { if (rr.r1==0 || rr.r2==0) {fner("Invalid range, expected r1r2\n"); return;} for (i=1;i<=max_x;i++) { swap_cell(i,rr.r1,i,rr.r2); show_ifcell(i,rr.r1); show_ifcell(i,rr.r2); } } } FILE *logfile; void log_open(char *fname) { add_dotman(fname); gle_strlwr(fname); logfile = fopen(fname,"w"); if (logfile==NULL) { fner("Could not open (%s) \n",fname); return; } islogging = true; } void log_write(char *s) { fprintf(logfile,"%s\n",s); } void log_close() { if (islogging) fclose(logfile); islogging = false; } void add_dotman(char *s) { if (strstr(s,".")==0) strcat(s,".man"); } FILE *atfile; void at_open(char *fname) { add_dotman(fname); gle_strlwr(fname); atfile = fopen(fname,"r"); if (atfile==NULL) { fner("Could not open (%s) \n",fname); return; } isating = true; } bool at_read(char *s) { s[0] = 0; if (feof(atfile)) { fclose(atfile); atfile = NULL; isating = false; return false; } s[0] = 0; if (fgets(s,200,atfile)==NULL) return false; return true; } void strip_colon(char *s) { char *ss; ss = s; for (;*s!=0;s++) { if (*s!=':') *ss++ = *s; } *ss++ = 0; } void cmd_parsum(char *range, char *dest) { RANGE rr,dd; double total=0; if (!range_def(range,&rr)) { fner("Invalid range given (%s) \n",range); return;} if (!range_def(dest,&dd)) { fner("Invalid destination given (%s) \n",range); return;} for (;range_next(&rr);) { range_next(&dd); total = total + vcell(rr.col,rr.row); set_cell(dd.col,dd.row,total); show_ifcell(dd.col,dd.row); } } void cmd_sum(char *range) { RANGE rr,rrsave; double v,var,stddev; char *s; double total=0; int32 ntot=0; if (!range_def(range,&rr)) { fner("Invalid range given (%s) \n",range); return;} rrsave = rr; for (;range_next(&rr);) { get_cellboth(rr.col,rr.row,&v,&s); if (s==NULL) { total = total + v; ntot++; } } if (ntot>0) { rangestd(&rrsave,total/ntot,ntot,&var,&stddev); printmess("Total %g, Avg %g, sd %g, var %g, Cells %ld \n",total,total/ntot,stddev,var,ntot); } else fner("No values in range\n"); } void rangestd(RANGE *rr, double mean, int32 numrow, double *variance, double *stddev) { char *s; double xsqr,v; xsqr = 0.0; if (numrow<2) return; for (;range_next(rr);) { get_cellboth(rr->col,rr->row,&v,&s); if (s==NULL) { xsqr = xsqr + v*v; } } (*variance) = (xsqr - numrow * mean*mean) / (numrow - 1); (*stddev) = sqrt(fabs((*variance))); } void cmd_clear(char *range) { RANGE rr; if (!range_def(range,&rr)) { fner("Invalid range given (%s) \n",range); return;} for (;range_next(&rr);) { clear_cell(rr.col,rr.row); show_ifcell(rr.col,rr.row); } } void cmd_fit(char *range) { RANGE rr,rrsave; char *s; double v,a,b,siga,sigb,chi2,q; if (!range_def(range,&rr)) { fner("Invalid range given (%s) \n",range); return;} rr.c2 = rr.c1; rrsave = rr; int ntot = 0; for (;range_next(&rr);) { get_cellboth(rr.col,rr.row,&v,&s); if (s==NULL) { ntot++; } } if (ntot>0) { fitlsq(&rrsave,ntot,&a,&b,&siga,&sigb,&chi2,&q); printmess("y = %g + b*%g siga=%g sigb=%g chi2=%g\n",a,b,siga,sigb,chi2); } else fner("No values in range\n"); } static double sqrarg; #define SQR(a) (sqrarg=(a),sqrarg*sqrarg) void fitlsq(RANGE *rrr,int ndata, double *a, double *b, double *siga, double *sigb, double *chi2, double *q) { RANGE rr; double x,y,sx=0,sy=0,st2=0,t,ss,sigdat,sxoss; char *s; *b = 0.0; for (rr = *rrr;range_next(&rr);) { get_cellboth(rr.col,rr.row,&x,&s); get_cellboth(rr.col+1,rr.row,&y,&s); if (s==NULL) { sx += x; sy += y; } } ss = ndata; sxoss = sx/ss; for (rr = *rrr;range_next(&rr);) { get_cellboth(rr.col,rr.row,&x,&s); get_cellboth(rr.col+1,rr.row,&y,&s); if (s==NULL) { t=x-sxoss; st2 += t*t; *b += t*y; } } *b /= st2; *a = (sy-sx*(*b))/ss; *siga = sqrt((1.0+sx*sx/(ss*st2))/ss); *sigb = sqrt(1.0/st2); *chi2=0.0; for (rr = *rrr;range_next(&rr);) { get_cellboth(rr.col,rr.row,&x,&s); get_cellboth(rr.col+1,rr.row,&y,&s); if (s==NULL) { *chi2 += SQR(y-(*a)-(*b)*x); } } *q = 1.0; sigdat = sqrt((*chi2)/(ndata-2)); *siga *= sigdat; *sigb *= sigdat; } gle-graphics-4.2.4c/src/manip/cell.h0000664000000000000000000000640411405446017015722 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ #ifndef INC_CELL_H #define INC_CELL_H void data_setsize(int x, int y); void xdata_setsize(int x, int y,int mx,int my); void set_cell(int x, int y, double d); void set_scell(int x, int y, char *s); void get_cell(int x, int y, double *v); void get_cellboth(int x, int y, double *v, char **s); bool cell_greater(int x1,int y1, int x2, int y2); void copy_cell(int x, int y, int x2, int y2); void swap_cell(int x, int y, int x2, int y2); void clear_cell(int x, int y); void set_size(int x, int y); void clear_data(); void trim_data(); void data_expand(int x, int y); void set_usefloat(); #endif gle-graphics-4.2.4c/src/manip/var.cpp0000664000000000000000000001447011505673520016132 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ #include "all.h" int var_local; /* 0 = global, 1 = local */ char *var_names[100]; /* Global variables */ int var_type[100]; int nvar; char *lvar_names[100]; /* Local variables */ int lvar_type[100]; int nlvar; static int ndp; static double (*lvar_val)[100]; static char *(*lvar_str)[100]; static double var_val[100]; static char *var_str[100]; void var_check(int *j) { if (*j<0 || *j>400) { gprint("Variable index is wrong %d \n",*j); *j = 1; } if (lvar_val == NULL && *j>=200) { *j = 0; gprint("No local variables assigned \n"); } } void var_alloc_local() { /* dp_stack[++ndp] = lvar_val; dp_stackstr[ndp] = lvar_str; lvar_val = (double* (*)[100])myallocz(sizeof(*lvar_val)); lvar_str = (char* (*)[100])myallocz(sizeof(*lvar_str)); */ } void var_free_local() { if (ndp==0) {gprint("Cannot free local as none saved \n"); return;} /* myfree(lvar_val); myfree(lvar_str); lvar_val = dp_stack[ndp]; lvar_str = dp_stackstr[ndp--];*/ } void var_set(int jj, double v) { var_check(&jj); if (jj<200) var_val[jj] = v; else (*lvar_val)[jj-200] = v; } void var_setstr(int jj, char *s) { var_check(&jj); if (jj<200) mystrcpy(&var_str[jj],s); else mystrcpy(&(*lvar_str)[jj-200],s); } void var_getstr(int jj, char *s) { var_check(&jj); if (jj<200) { if (var_str[jj]!=NULL) strcpy(s,var_str[jj]); else { strcpy(s,""); gprint("String Variable not defined %d \n",jj); } } else { if ((*lvar_str)[jj-200]!=NULL) strcpy(s,(*lvar_str)[jj-200]); if ((*lvar_str)[jj-200]==NULL) gprint("ERROR, variable not defined\n"); } } void var_get(int jj, double *v) { var_check(&jj); if (jj<200) *v = var_val[jj]; else *v = (*lvar_val)[jj-200]; } void var_nlocal(int *l) { *l = nlvar; } void var_clear_global() { nvar = 0; } void var_set_local() { var_local = true; nlvar = 0; } void var_set_global() { var_local = false; } void var_clear_local() { nlvar = 0; } /* Add a variable to the list */ void var_findadd(const char *name,int *idx,int *type) { var_find(name,idx,type); if (*idx==-1) var_add(name,idx,type); } /* Add a variable to the list */ void var_add(const char *name,int *idx,int *type) { if (var_local==0) { if (nvar>90) gprint("Too many global variables \n"); mystrcpy(&var_names[nvar],name); *idx = nvar; if (manip_lastchar(name,'$')) *type=2; else *type=1; var_type[nvar++] = *type; } else { if (nlvar>90) gprint("Too many local variables \n"); mystrcpy(&lvar_names[nlvar],name); *idx = nlvar+200; if (manip_lastchar(name,'$')) *type=2; else *type=1; lvar_type[nlvar++] = *type; } } /* Find a variable in the list */ void var_find(const char *name,int *idx,int *type) { int i; for (i=0;i0 && d<100) { ++*nd; *idx++ = i+200; *var++ = d; } } } } void var_find_rc(int *idx, int *var, int *nd, int c) { int i,d; *nd = 0; for (i=0;i0) { ++*nd; *idx++ = i+200; *var++ = d; } } } for (i=0;i0) { ++*nd; *idx++ = i; *var++ = d; } } } } bool str_var(char* s) { int i; i = strlen(s); if (*(s+i-1)=='$') return true; else return false; } bool valid_var(const char *s) { return true; } gle-graphics-4.2.4c/src/manip/vaxconio.h0000664000000000000000000000563111405446017016632 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ #define YELLOW 1 #define BLACK 0 #define BLUE 0 #define LIGHTGRAY 0 #define WHITE 1 #define MAGENTA 1 struct text_info { int normattr,winleft,wintop,winright,winbottom,curx,cury;}; struct ffblk {char *ff_name;}; gle-graphics-4.2.4c/src/manip/unix_extra.cpp0000644000000000000000000001024611405446017017521 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ #include "all.h" #include "unix_extra.h" int trimcr(char *s); int32 coreleft(void) { return 4000000l; } int trim_file(char *s) { char *t; t = strchr(s,']'); if (t!=NULL) memcpy(s,t+1,strlen(t)); t = strchr(s,';'); if (s!=NULL) *t = 0; return 0; } char *getsymbol(char *sym) { static char mystr[200]; const char *s; s = getenv(sym); if (s==NULL) s = ""; strcpy(mystr,s); return mystr; } FILE *wilddir; /*struct ffblk {char *ff_name;};*/ int findfirst(char *wild, struct ffblk *ffblk, int zz) { static char buff[200]; int op=0; #ifdef aix /* AIX with xlc != POSIX */ union wait *status; int p; #else int status; pid_t p; #endif unlink("gledir.tmp"); p = fork(); if (p==-1) {perror("Unable to fork ls command \n"); return true;} if (p==0) { strcpy(buff,"ls "); strcat(buff,wild); strcat(buff,">gledir.tmp"); execlp("sh","sh","-c", buff, NULL); exit(1); } #ifdef aix waitpid(p,status,op); #else waitpid(p,&status,op); #endif wilddir = fopen("gledir.tmp","r"); if (wilddir==NULL) {printf("Fork ls failed \n"); return true;} if (feof(wilddir)) { fclose(wilddir); return true;} fgets(buff,100,wilddir); trimcr(buff); ffblk->ff_name = buff; return false; } int findnext(struct ffblk *ffblk) { static char buff[200]; if (feof(wilddir)) { fclose(wilddir); return true;} fgets(buff,100,wilddir); trimcr(buff); ffblk->ff_name = buff; return false; } int trimcr(char *s) { s = strchr(s,'\n'); if (s!=NULL) *s = 0; return 0; } gle-graphics-4.2.4c/src/manip/token.cpp0000664000000000000000000001305311405446017016454 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ #include "all.h" void token_init(void); void subscript(void); #define true (!false) #define false 0 #define add_tok(pp1,n) \ (*ntok)++; \ tok[*ntok] = outbuff; \ for (tj=0;tj280) subscript(); } endofline:; if (*ntok>0) { if ( (*tok[*ntok])=='\n' ) (*ntok)--; if (strcmp(tok[*ntok]," ")==0) (*ntok)--; if (*ntok>0) p2 = tok[*ntok] + strlen(tok[*ntok]) - 1; if (*p2==10) *p2 = 0; } } char *find_non_space(char *cp) { for ( ; *cp!=0 ; cp++ ) { if (*cp!=' ' && *cp!=' ') break; } return cp; } char *find_term(char *cp) { char *start; start = cp; /* if (*cp=='"') { cp++; for (; *cp!=0 ; cp++ ) { if (*cp=='"') break; } return cp; } */ for (; *cp!=0 ; cp++ ) { if (*cp == '"') { cp++; for (; *cp!=0 ; cp++ ) { if (*cp=='"') break; } } if (term_table[(int)*cp]==true) break; } if (cp>start) return cp-1; if (*cp==' ' || *cp==' ') return cp-1; if (*cp==0) return cp-1; return cp; } void subscript() { gprint("Subscript out of range in tokenizer (use shorter lines) \n"); } gle-graphics-4.2.4c/src/manip/eval.h0000664000000000000000000000630711405446017015734 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ #ifndef INC_EVAL_H #define INC_EVAL_H void eval_setxyd(int x, int y); void eval_setxy(int x, int y); void eval(int32 *pcode,int *cp,double *oval,char *ostr,int *otyp); void debug_polish(int32 *pcode,int *zcp); char *eval_str(int32 *pcode,int *plen); void setdstr(char **s,char *in); enum {f_plus=61 ,f_minus ,f_abs ,f_atn ,f_cos , f_date ,f_exp ,f_fix ,f_int ,f_left ,f_len ,f_log ,f_log10 ,f_not ,f_num ,f_num1 ,f_pos ,f_right ,f_rnd ,f_seg ,f_sgn ,f_sin ,f_sqr ,f_sqrt ,f_tan ,f_time ,f_val ,f_cell,f_miss }; #endif gle-graphics-4.2.4c/src/manip/unixinkey.cpp0000644000000000000000000002175411405446017017364 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ #include "all.h" #include "edt.h" #ifdef NOKEYPAD #include "nofnkeys.h" #endif int do_fnkey(void); int do_gold(void); int escape_seq(void); int fner(char *s); int scr_getch(void); const char *function_bar() { static int ab; if (ab==0) ab=1; ab = 3-ab; if (ab==1) { #ifndef LINUXFKEY /* a.r.: only F1-F10 on AT keyboards */ return "F11-Help F12-Save F13-Load F14-Saveas F9-Graphmenu F10-Drawit ^x=Exit"; #else return "F1-Help F2-Save F3-Load F4-Saveas F9-Graphmenu F10-Drawit ^x=Exit"; #endif } else { return "^F 1 =Help, ^F 2 = Save, ^F 3 = Load, ^F 9 Graphmenu ^F 0 Drawit"; } } struct escape_struct {const char *str; int val;}; struct escape_struct gold[] = { { "v", epaste }, { "R", esearch }, { "S", eundeleol }, { NULL, 0 } }; #ifndef LINUXFKEY struct escape_struct eseq[] = { { "4~", eselect }, { "1~", esearch }, { "2~", epaste }, { "3~", ecut }, { "4~", eselect }, { "5~", epageup }, { "6~", epagedown }, { "A", eup }, { "B", edown }, { "C", eright }, { "D", eleft }, { "20~", egraphmenu }, { "21~", edrawit }, { "23~", ehelp }, { "24~", esave }, { "25~", eload }, { "26~", esaveas }, { "P", egold }, { "Q", ehelp }, { "R", efindnext }, { "S", edeleol }, { "n", eselect }, { "v", ecut }, { "l", edelright }, { NULL, 0} }; #else /* a.r.: X11 escape sequences for F-keys were added */ struct escape_struct eseq[] = { { "2~", epaste }, { "5~", epageup }, { "6~", epagedown }, { "A", eup }, { "B", edown }, { "C", eright }, { "D", eleft }, { "20~", egraphmenu }, { "21~", edrawit }, { "23~", ehelp }, { "11~", ehelp }, { "24~", esave }, { "12~", esave }, { "25~", eload }, { "13~", eload }, { "26~", esaveas }, { "14~", esaveas }, #ifndef MANIP { "15~", eshowerror }, #endif { "P", egold }, { "Q", ehelp }, { "R", efindnext }, { "S", edeleol }, { "n", eselect }, { "v", ecut }, { "l", edelright }, { "3~", edelright }, { "1~", ebol }, { "4~", eeol }, { NULL, 0 } }; #endif int gold_fn[] = { edrawit,ehelp,esave,eload,esaveas,eshowerror,0,0,0,egraphmenu,edrawit }; struct keymatch {int m; int val;}; /* Normal key and ^ commands commands */ #ifndef LINUXFKEY /* a.r. */ struct keymatch kmatch2[] = { { 13, ereturn }, { 3, equit }, { 4, eword }, { 5, eedt }, { 6, efast }, { 7, edrawit }, { 8, edelete }, { 18, eshowerror }, { 8, ehelp }, { 20, etrace }, { 12, efindnext }, { 21, eundelline }, { 24, eescape }, { 25, edelline }, { 26, eescape }, { 27, eescape }, { 127, edelete }, { 0,0 } }; #else struct keymatch kmatch2[] = { { 13, ereturn }, { 3, equit }, /* 23, eword, eword does not exist! */ { 1, ebol }, /* a.r. bol and eol like EMACS and Joe */ { 5, eeol }, { 4, edelright, /* delete the char at the cursor-position */ { 6, efast }, { 7, edrawit }, { 8, edelete }, { 18, eshowerror }, { 8, ehelp }, { 20, etrace }, { 12, efindnext }, { 21, eundelline }, { 24, eescape }, { 25, edelline }, { 26, eescape }, { 27, eescape }, { 127, edelete }, { 0,0 } }; #endif struct keymatch kmatchx[] = { { KEY_DOWN, edown }, { KEY_UP, eup }, { KEY_F0+4, edeleol }, { KEY_LEFT, eleft }, { KEY_RIGHT, eright }, { KEY_NPAGE, epagedown }, { KEY_PPAGE, epageup }, { 0,0 } }; /* Control K commands */ #ifndef LINUXFKEY /* a.r. */ struct keymatch kmatch3[] = { { 'b', eselect }, { 'v', emove }, { 'k', emark }, { 'c', ecopy }, { 'y', ecut }, { 'u', epaste }, { 'p', epaste }, { 'r', eblockread }, { 'w', eblockwrite }, { 'm', egraphmenu }, { 'l', eload }, { 'd', edrawit }, { 's', esave }, { 'x', equit }, { 0,0 } }; #else struct keymatch kmatch3[] = { 'b', eselect, 'v', emove, 'k', emark, 'c', ecopy, 'y', ecut, 'u', epaste, 'p', epaste, 'r', eblockread, 'w', eblockwrite, 'm', egraphmenu, 'l', eload, 'd', edrawit, 's', esave, 'x', equit, 'f', esearch, /* like Joe's Own Editor */ 0,0 }; #endif /* Control Q commands */ struct keymatch kmatch4[] = { { 'f', esearch }, { 'c', eendoffile }, { 'r', etopoffile }, { 0,0 } }; extern int noscreenio; int tt_inkey() { int i; if (noscreenio) return getc(stdin); else { i = getch(); /* printw("{%d} ",i); */ return i; } } int text_inkey() { int cc,i,c2; scr_refresh(); loop1: cc = tt_inkey(); c2 = cc; if (c2==6) return do_fnkey(); if (c2==KEY_F(1)) return do_gold(); if (cc>KEY_BREAK) { for (i=0;kmatchx[i].m!=0;i++) if (kmatchx[i].m==c2) return kmatchx[i].val; } switch(c2) { default: for (i=0;kmatch2[i].m!=0;i++) if (kmatch2[i].m==c2) return kmatch2[i].val; break; case 27: c2 = tt_inkey(); /* throw away next char (unless escape) */ if (c2==27) return eescape; case -101: case -113: c2 = escape_seq(); if (c2==egold) return do_gold(); return c2; break; case 17: fner("^Q F=Find string, R=Top of file"); cc = tt_inkey(); c2 = (cc & 0xff); if (c2<32) c2 = c2 + 'a' - 1; c2 = tolower(c2); for (i=0;kmatch4[i].m!=0;i++) if (kmatch4[i].m==c2) return kmatch4[i].val; fner("Unrecognized Quick movement command"); goto loop1; case 11: fner("^K B=begin block, P=Paste, (use KP6 for Cut), K=End block"); cc = tt_inkey(); c2 = (cc & 0xff); if (c2<32) c2 = c2 + 'a' - 1; c2 = tolower(c2); for (i=0;kmatch3[i].m!=0;i++) if (kmatch3[i].m==c2) return kmatch3[i].val; fner("Unrecognized block command"); goto loop1; } return c2; } int escape_seq(void) { int cc,i; unsigned char esq[10]; unsigned char *s; s = &esq[0]; *s++ = cc = tt_inkey(); while (cc<65) *s++ = cc = tt_inkey(); *s++ = 0; for (i=0;eseq[i].str!=NULL;i++) if (strcmp(eseq[i].str,(char*)esq)==0) break; if (eseq[i].str!=NULL) return eseq[i].val; else return 0; } int escape_seq_gold() { int cc,i; unsigned char esq[10]; unsigned char *s; s = &esq[0]; *s++ = cc = tt_inkey(); while (cc<65) *s++ = cc = tt_inkey(); *s++ = 0; for (i=0;gold[i].str!=NULL;i++) if (strcmp(gold[i].str,(char*)esq)==0) break; if (gold[i].str!=NULL) return gold[i].val; else return 0; } int do_fnkey(void) { int c2; fner("1=Help 2=Save 3=Load 4=Saveas 9=Graph_menu 0=Drawit"); c2 = tt_inkey(); if (isdigit(c2)) { return gold_fn[c2-'0']; } return -1; } int do_gold(void) { int c2; c2 = tt_inkey(); if (c2==KEY_F(4)) return eundeleol; if (c2==27) { tt_inkey(); return escape_seq_gold(); } else if (isdigit(c2)) { return gold_fn[c2-'0']; } return -1; } gle-graphics-4.2.4c/src/manip/nofnkeys.h0000664000000000000000000000556211405446017016643 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ #define KEY_UP 999 #define KEY_DOWN 999 #define KEY_LEFT 999 #define KEY_RIGHT 999 #define KEY_F0 999 #define KEY_PPAGE 999 #define KEY_NPAGE 999 #define KEY_BREAK 999 #define KEY_F(n) 999 gle-graphics-4.2.4c/src/manip/manip.cpp0000664000000000000000000004313311575345057016454 0ustar rootroot/************************************************************************ * * * GLE - Graphics Layout Engine * * * * Modified BSD License * * * * Copyright (C) 2009 GLE. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above * * copyright notice, this list of conditions and the following * * disclaimer in the documentation and/or other materials provided with * * the distribution. * * * * 3. The name of the author may not be used to endorse or promote * * products derived from this software without specific prior written * * permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * ************************************************************************/ #include "all.h" #include "edt.h" #define WLEN 4 #define WEND 24 #define BCOLOR BLUE #define FCOLOR MAGENTA #include "../gle/file_io.h" /* function prototypes */ /* manip /com=a.a manip_refresh screen. edit cell mode, command mode. arrow keys scroll screen. data cell:range cell:range = expression expressions, c,r,x,y,c1..cn,r1..rn,sum(range), c(x-1,y) = c(x,y) */ /* global stuff */ int noscreenio; int gle_debug; int moving_x,moving_y; int data_x; int data_y; int changed; extern int islogging; extern int isating; /* local stuff */ int iserr,dont_clear; int scr_frow=1,scr_fcol=1; int scr_width=76,scr_colwidth=8; int scr_ncol; int scr_nrow=18; int curx,cury; int max_x=0,max_y=0; /* change to 1,1 */ int scr_blackwhite; int exit_manip; char file_name[80]; int in_recover,single_step; extern char strmiss[]; void init_gle_top(char **argv); int main(int argc, char **argv) { int i; char ans[90]; int cmd; static char atfile[80]; init_gle_top(argv); manip_scr_init(NULL); if (strmiss[0]==0) strcpy(strmiss,"-"); for (i=1;i0) cmd_load(file_name,"",2); xx1: if (strlen(file_name)==0) strcpy(file_name,"mtest.dat"); set_colwidth(10); changed = false; for (;exit_manip==false;) { top_line(); hi_cell(curx,cury); mjl_flush(); read_command(&cmd,ans,"% "); if (cmd==eescape || cmd==equit) break; if (cmd==0) do_command(ans); else if (cmd==eload) { pick_file(ans,"*.dat"); manip_refresh(); clear_data(); cmd_load(ans,"",2); } else if (cmd==ehelp) { do_help("MANIP",""); manip_refresh(); } else if (cmd==esave) { text_save(); manip_refresh(); } else if (cmd==eload) { manip_refresh(); } else do_arrow(cmd); } if (cmd==eescape) if (text_changed()) { exit_manip = false; goto xx1;} window_exit(); if (islogging) log_close(); scr_end(); return 0; } bool text_changed() { int c; if (!changed) return false; for (;;) { fner("Save in {%s} ? (Y,N)",file_name); c = text_inkey(); fner_clear(); if (c==eescape) return true; if (tolower(c)=='n') return false; if (tolower(c)=='y') {text_save(); return false;} } } void text_save() { cmd_save(file_name,"","",2); changed = false; } void fix_cur() { if (curx<1) curx = 1; if (cury<1) cury = 1; } void shift_window() { int doit=false; fix_cur(); if (curx= scr_fcol + scr_ncol) { scr_fcol = curx - scr_ncol/2; if (scr_fcol<1) scr_fcol = 1; doit = true; } if (cury= scr_frow + scr_nrow) { scr_frow = cury - scr_nrow/2; if (scr_frow<1) scr_frow = 1; doit = true; } if (doit) manip_refresh(); } void do_arrow(int k) { char buff[280]; show_cellwide(curx,cury); moving_x = moving_y = 0; switch (k) { case eup: cury--; moving_y = -1; break; case edown: cury++; moving_y = 1; break; case eright: curx++; moving_x = 1; break; case eleft: curx--; moving_x = -1; break; case edelline: cury+=12; break; case esearch: cury-=12; break; case ebigright: curx+=6; break; case ebigleft: curx-=6; break; } fix_cur(); sprintf(buff,"goto %d %d ",curx,cury); if (islogging) log_write(buff); shift_window(); hi_cell(curx,cury); } void set_newxy(int x, int y) { show_cellwide(curx,cury); curx = x; cury = y; shift_window(); hi_cell(curx,cury); } void window_norm() { window(1,1,80,25); } void window_exit() { window(1,1,80,25); gotoxy(1,25); scr_norm(); printf("\n");clreol(); } void set_colwidth(int n) { scr_colwidth = n; scr_ncol = scr_width/scr_colwidth; shift_window(); manip_refresh(); } void set_ncol(int n) { scr_ncol = n; scr_colwidth = scr_width/scr_ncol; shift_window(); manip_refresh(); } void top_line() { gotoxy(1,1); clreol(); #ifdef MANIPCURPOS /* a.r.: to see, which cell is edited, if -DNOATTRIB */ wprintf("Free=%ld Current Cell( c = %d, r = %d ) MANIP 3.3 File={%s}" ,coreleft(),curx,cury,file_name); #else wprintf("Free=%ld Used(%d,%d) MANIP 3.3 Current file={%s}" ,coreleft(),max_x,max_y,file_name); #endif } void manip_refresh() { int i,j; fix_cur(); window_norm(); scr_norm(); clrscr(); top_line(); fner_clear(); scr_menuhi(); for (i=1;i<=scr_ncol;i++) { gotocell(i+scr_fcol-1,scr_frow-1); wprintf("c%d",i+scr_fcol-1); } for (i=1;i<=scr_nrow;i++) { gotocell(scr_fcol-1,i+scr_frow-1); wprintf("r%d",i+scr_frow-1); } scr_norm(); for (j=0;j=scr_fcol && x<(scr_fcol+scr_ncol)) { if (y>=scr_frow && y<(scr_frow+scr_nrow)) { show_cellwide(x,y); } } } void show_cell(int x, int y) { gotocell(x,y); cputs(scell(x,y)); } void show_cellwide(int x, int y) { char buff[280]; gotocell(x,y); strcpy(buff,scell(x,y)); if ((int)strlen(buff)<(scr_colwidth-1)) ncpy(buff+strlen(buff)," ", scr_colwidth-strlen(buff)-1); cputs(buff); } #ifdef __UNIX__ void wprintf_do(char *s) { printw("%s",s); } void fner_do(char *output) { if (strchr(output,'\n')!=NULL) *strchr(output,'\n') = 0; fnerx(output); } void printmess_do(char *output) { if (strchr(output,'\n')!=NULL) *strchr(output,'\n') = 0; fnerxx(output); } #endif /* Prints to the window */ #ifdef __UNIX__ void wprintf(const char* arg_list, ...) { #else void wprintf(va_list arg_list, ...) { #endif va_list arg_ptr; char *format; char output[200]; va_start(arg_ptr, arg_list); format = (char*)arg_list; vsprintf(output, format, arg_ptr); #ifdef __TURBOC__ printf(output); #else cputs(output); #endif } void d_tidyup() { } void gle_abort(const char *s) { fner("ABORT {%s}\n",s); exit(1); } void fner_clear(void) { if (iserr==false) return; if (dont_clear) return; scr_savexy(); window_norm(); gotoxy(1,25); scr_grey(); clreol(); gotoxy(2,25); cputs(function_bar()); scr_norm(); iserr = false; window_norm(); scr_restorexy(); } void fnerx(char *s) { if (dont_clear) return; scr_savexy(); iserr = true; window_norm(); gotoxy(1,25); scr_inv(); clreol(); gotoxy(2,25); cputs(s); scr_norm(); scr_restorexy(); scr_refresh(); } void fnerxx(char *s) { scr_savexy(); command_scroll_up(); iserr = true; window_norm(); gotoxy(1,23); scr_inv(); clreol(); gotoxy(2,23); cputs(s); scr_norm(); scr_restorexy(); scr_refresh(); } int read_command(int *cmd,char *ans,const char *ques) { static char *lastline[22]; int cl=0; int rr,i; int direc=0; if (isating) { if (!at_read(ans)) goto contxx; window(1,21,80,WEND); gotoxy(1,WLEN); scr_inv(); clreol(); gotoxy(2,WLEN); clreol(); *cmd = 0; cputs(ques); cputs(ans); rr = false; goto xxend; } contxx:; *ans = 0; iserr = true; window(1,21,80,WEND); gotoxy(1,WLEN); scr_inv(); clreol(); xxxx: #ifndef EMXOS2 /* cause EMX has not really a function window() a.r. */ gotoxy(2,WLEN); #else gotoxy(1,24); #endif clreol(); cputs(ques); rr = read_str(cmd,ans); if (*cmd == epageup) { if (direc==-1) cl++; if (lastline[cl]!=NULL) { strcpy(ans,lastline[cl]); cl++; } if (cl>18) cl = 0; direc = 1; goto xxxx; } if (*cmd == epagedown) { if (direc==1) cl--; cl--; direc = -1; if (cl<0) {cl = -1; *ans = 0; goto xxxx;} if (lastline[cl]!=NULL) strcpy(ans,lastline[cl]); goto xxxx; } xxend: gotoxy(1,WLEN); if (strlen(ans)>0) { if (lastline[20]!=NULL) free(lastline[20]); for (i=20;i>0;i--) lastline[i] = lastline[i-1]; lastline[0] = sdup(ans); command_scroll_up(); } scr_norm(); #ifndef EMXOS2 /* a.r. */ clreol(); #endif window_norm(); return rr; } int read_str(int *cmd, char *s) { int c,cx=0; char mbuff[280]; *cmd = 0; cputs(s); cx = strlen(s); for (;;) { c = text_inkey(); if (iserr) fner_clear(); if (strlen(s)==0) { switch (c) { case edelline: case esearch: case ebigright: case ebigleft: case eup: case edown: case eleft: case eright: case equit: case eescape: case eload: case esave: case ehelp: *cmd = c; return false; } } switch (c) { case ebackline: c = epageup; case eload: case esave: case ehelp: case epagedown: case epageup: *cmd = c; return false; case eescape: /* ESCAPE */ *cmd = c; case equit: /* control c */ return true; case eleft: /* left */ if (cx <= 0) break; cx--; scr_left(1); break; case eright: /* right */ if (cx >= (int)strlen(s)) break; cx++; scr_right(1); break; case edelline: case esearch: case ebigright: case ebigleft: case eup: /* arrow up */ case edown: /* arrow down */ break; case ereturn: /* carriage return */ return false; case edelete: /* delete */ if (strlen(s)==0) break; if (cx<1) break; ncpy(mbuff,s,cx-1); strcat(mbuff,s + cx); strcpy(s,mbuff); cx--; scr_left(1); cputs(s + cx); putch(' '); scr_left(strlen(s+cx)+1); break; case eshowerror: case edrawit: break; default: /* normal key */ if (c<26 && c!=9) {fner("Key has no affect"); break;} if (c>200) fner("Unimplemented command"); else { ncpy(mbuff,s,cx); mbuff[cx] = c; mbuff[cx+1] = 0; strcat(mbuff,s + cx); strcpy(s,mbuff); cputs(s + cx); cx++; scr_left(strlen(s+cx)); } break; } } } void command_scroll_up() { window(1,21,80,WEND); gotoxy(1,1); delline(); } extern string GLE_TOP_DIR; void init_gle_top(char** argv) { const char* top = getenv("GLE_TOP"); if (top == NULL || top[0] == 0) { string exe_name; bool has_exe_name = GetExeName("manip", argv, exe_name); if (has_exe_name) { #ifdef GLETOP_CD GLE_TOP_DIR = exe_name; StripPathComponents(&GLE_TOP_DIR, GLETOP_CD+1); AddDirSep(GLE_TOP_DIR); GLE_TOP_DIR += GLETOP_REL; StripDirSep(GLE_TOP_DIR); string hlp_name = GLE_TOP_DIR + DIR_SEP + "manip.hlp"; if (!GLEFileExists(hlp_name)) { GLE_TOP_DIR = exe_name; StripPathComponents(&GLE_TOP_DIR, 2); } #else GLE_TOP_DIR = exe_name; StripPathComponents(&GLE_TOP_DIR, 2); #endif } else { // The user will see as error messege: "$GLE_TOP/some_file" not found. GLE_TOP_DIR = "$GLE_TOP"; } } else { GLE_TOP_DIR = top; } StripDirSep(GLE_TOP_DIR); } char *gle_top() { return (char*)GLE_TOP_DIR.c_str(); } gle-graphics-4.2.4c/src/samples/Makefile.os20000664000000000000000000000612111405446017017330 0ustar rootroot######################################################################## # # # GLE - Graphics Layout Engine # # # # Modified BSD License # # # # Copyright (C) 2009 GLE. # # # # Redistribution and use in source and binary forms, with or without # # modification, are permitted provided that the following conditions # # are met: # # # # 1. Redistributions of source code must retain the above copyright # # notice, this list of conditions and the following disclaimer. # # # # 2. Redistributions in binary form must reproduce the above # # copyright notice, this list of conditions and the following # # disclaimer in the documentation and/or other materials provided with # # the distribution. # # # # 3. The name of the author may not be used to endorse or promote # # products derived from this software without specific prior written # # permission. # # # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR # # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY # # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE # # GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER # # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN # # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # # ######################################################################## #makefile for building sample.eps include ../../config.os2 all: -$(PROJECT_BINDIR)/gle.exe sample.gle -$(PROJECT_BINDIR)/gle.exe IncludeTest.gle -$(PROJECT_BINDIR)/gle.exe MathTest.gle -$(PROJECT_BINDIR)/gle.exe Graph.gle -$(PROJECT_BINDIR)/gle.exe sine.gle -$(PROJECT_BINDIR)/gle.exe hubble.gle -$(PROJECT_BINDIR)/gle.exe CommentTest.gle clean: -rm.exe sample.eps IncludeTest.eps MathTest.eps Graph.eps sine.eps hubble.eps CommentTest.eps gle-graphics-4.2.4c/src/samples/Makefile.vc0000664000000000000000000000611111447671544017247 0ustar rootroot######################################################################## # # # GLE - Graphics Layout Engine # # # # Modified BSD License # # # # Copyright (C) 2009 GLE. # # # # Redistribution and use in source and binary forms, with or without # # modification, are permitted provided that the following conditions # # are met: # # # # 1. Redistributions of source code must retain the above copyright # # notice, this list of conditions and the following disclaimer. # # # # 2. Redistributions in binary form must reproduce the above # # copyright notice, this list of conditions and the following # # disclaimer in the documentation and/or other materials provided with # # the distribution. # # # # 3. The name of the author may not be used to endorse or promote # # products derived from this software without specific prior written # # permission. # # # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR # # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY # # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE # # GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER # # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN # # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # # ######################################################################## #makefile for building sample.eps # RUN_GLE = $(PROJECT_BINDIR)\bin\gle !include ..\..\config.vc all: set GLE_TOP=$(PROJECT_BINDIR) -$(RUN_GLE) sample.gle -$(RUN_GLE) IncludeTest.gle -$(RUN_GLE) MathTest.gle -$(RUN_GLE) Graph.gle -$(RUN_GLE) sine.gle -$(RUN_GLE) hubble.gle -$(RUN_GLE) CommentTest.gle -$(RUN_GLE) logo.gle clean: -del sample.eps IncludeTest.eps MathTest.eps Graph.eps sine.eps hubble.eps CommentTest.eps logo.eps gle-graphics-4.2.4c/src/samples/qgle_keyboard.gle0000664000000000000000000001100611405446017020465 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! QGLE/AutoCAD Keyboard layout ! CONFIGURATION: keys$ = "QGLE" ! AutoCAD or QGLE tbh = 2 ! The height of the text box in centimetres boxsize = 1.9 ! The width of a single function key boxheight = 2 ! The height of a single function key lb = 1 ! The left border rb = 0.5 ! The right border bb = 0.5 ! The bottom border tb = 0 ! The top border mb = 1.025 ! The border between f4 & f5 ! Everything else is automatic, so nothing ! needs to be changed from here on (unless you want ! to define keys for a different program. ! Set up the QGLE keys f1$ = "ABOUT" f2$ = "" f3$ = "OSNAP" f4$ = "" f5$ = "" f6$ = "COORD" f7$ = "GRID" f8$ = "ORTHO" f9$ = "SNAP" f10$ = "POLAR" f11$ = "" f12$ = "" ! Page size (4.5 by 26.35): size bb+boxheight+tbh+tb lb+3*4*boxsize+2*mb+rb ! If we're doing an AutoCAD layout, then ! change the keys that differ if keys$ = "AutoCAD" then f1$ = "HELP" f2$ = "TEXTSCR" f4$ = "TABLET" f5$ = "ISOPLANE" f11$ = "OTRACK" end if ! Create a box for the key text sub fblock f$ box boxsize tbh rmove boxsize/2 boxheight/2 write f$ rmove boxsize/2 -boxheight/2 end sub ! Rotate the page so that it fits ! on a portrait A4 sheet amove pagewidth()/2 pagewidth()/2 begin rotate 90 ! Draw the outside box amove 0 0 rline pageheight() 0 rline 0 pagewidth() rline -pageheight() 0 rline 0 -pagewidth() ! Now back at 0 0 set just cc ! Draw the F1-F4 boxes amove lb bb box boxsize*4 boxheight rmove 0 boxheight fblock f1$ fblock f2$ fblock f3$ fblock f4$ ! Draw the F5-F8 boxes rmove mb -boxheight box boxsize*4 boxheight rmove 0 boxheight fblock f5$ fblock f6$ fblock f7$ fblock f8$ ! Draw the F9-F12 boxes rmove mb -boxheight box boxsize*4 boxheight rmove 0 boxheight fblock f9$ fblock f10$ fblock f11$ fblock f12$ end rotate gle-graphics-4.2.4c/src/samples/Makefile.gcc0000664000000000000000000000614111447671544017376 0ustar rootroot######################################################################## # # # GLE - Graphics Layout Engine # # # # Modified BSD License # # # # Copyright (C) 2009 GLE. # # # # Redistribution and use in source and binary forms, with or without # # modification, are permitted provided that the following conditions # # are met: # # # # 1. Redistributions of source code must retain the above copyright # # notice, this list of conditions and the following disclaimer. # # # # 2. Redistributions in binary form must reproduce the above # # copyright notice, this list of conditions and the following # # disclaimer in the documentation and/or other materials provided with # # the distribution. # # # # 3. The name of the author may not be used to endorse or promote # # products derived from this software without specific prior written # # permission. # # # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR # # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY # # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE # # GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER # # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN # # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # # ######################################################################## #makefile for building sample.eps include ../../config.gcc all: -$(PROJECT_BINDIR)/gle -d eps sample.gle -$(PROJECT_BINDIR)/gle -d eps IncludeTest.gle -$(PROJECT_BINDIR)/gle -d eps MathTest.gle -$(PROJECT_BINDIR)/gle -d eps Graph.gle -$(PROJECT_BINDIR)/gle -d eps sine.gle -$(PROJECT_BINDIR)/gle -d eps hubble.gle -$(PROJECT_BINDIR)/gle -d eps CommentTest.gle clean: rm sample.eps IncludeTest.eps MathTest.eps Graph.eps sine.eps hubble.eps CommentTest.eps gle-graphics-4.2.4c/src/samples/sample_compare.eps0000664000000000000000000001053411405446017020671 0ustar rootroot%!PS-Adobe-2.0 EPSF-2.0 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% % %% GLE - Graphics Layout Engine % %% % %% Modified BSD License % %% % %% Copyright (C) 2009 GLE. % %% % %% Redistribution and use in source and binary forms, with or without % %% modification, are permitted provided that the following conditions % %% are met: % %% % %% 1. Redistributions of source code must retain the above copyright % %% notice, this list of conditions and the following disclaimer. % %% % %% 2. Redistributions in binary form must reproduce the above % %% copyright notice, this list of conditions and the following % %% disclaimer in the documentation and/or other materials provided with % %% the distribution. % %% % %% 3. The name of the author may not be used to endorse or promote % %% products derived from this software without specific prior written % %% permission. % %% % %% THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR % %% IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED % %% WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE % %% ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY % %% DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL % %% DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE % %% GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS % %% INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER % %% IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR % %% OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN % %% IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. % %% % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% %% %% Created By: GLE v4.0.11 %% %% www.gle-graphics.org %% %% %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%CreationDate: Sat Dec 31 11:58:40 2005 %%SourceFile: sample.gle %%BoundingBox: 0 0 285 285 %%EndComments %%EndProlog gsave /f {findfont exch scalefont setfont} bind def /s {show} bind def /ps {true charpath} bind def /l {lineto} bind def /m {newpath moveto} bind def matrix currentmatrix /originmat exch def /umatrix {originmat matrix concatmatrix setmatrix} def [28.3465 0 0 28.3465 0 0] umatrix [28.3465 0 0 28.3465 1 1] umatrix [] 0 setdash 0.02 setlinewidth 0 0 0 setrgbcolor 0 0 m 1 1 m newpath 1 1 moveto 4 1 l 4 3 l 1 3 l closepath 1 0 0 setrgbcolor fill 0 0 0 setrgbcolor newpath 1 1 m newpath 1 1 moveto 4 1 l 4 3 l 1 3 l closepath stroke 1 1 m 1 1 m 0 0 1 setrgbcolor 4 4 m newpath 4 4 moveto 6 4 l 6 6 l 4 6 l closepath 0 0 1 setrgbcolor fill 0 0 1 setrgbcolor newpath 4 4 m newpath 4 4 moveto 6 4 l 6 6 l 4 6 l closepath stroke 4 4 m 4 4 m 0 0 0 setrgbcolor 5 7 m 2.425 6.666 m 2.425 6.666 m 1.000000 /Times-Roman f (H) s 3.147 6.666 m (e) s 3.591 6.666 m (l) s 3.869 6.666 m (l) s 4.147 6.666 m (o) s 4.897 6.666 m (W) s 5.761 6.666 m (o) s 6.261 6.666 m (r) s 6.594 6.666 m (l) s 6.872 6.666 m (d) s 7.372 6.666 m (\56) s 5 7 m showpage grestore %%Trailer gle-graphics-4.2.4c/src/samples/sample.gle0000664000000000000000000000656611405446017017155 0ustar rootroot!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! GLE - Graphics Layout Engine ! ! ! ! Modified BSD License ! ! ! ! Copyright (C) 2009 GLE. ! ! ! ! Redistribution and use in source and binary forms, with or without ! ! modification, are permitted provided that the following conditions ! ! are met: ! ! ! ! 1. Redistributions of source code must retain the above copyright ! ! notice, this list of conditions and the following disclaimer. ! ! ! ! 2. Redistributions in binary form must reproduce the above ! ! copyright notice, this list of conditions and the following ! ! disclaimer in the documentation and/or other materials provided with ! ! the distribution. ! ! ! ! 3. The name of the author may not be used to endorse or promote ! ! products derived from this software without specific prior written ! ! permission. ! ! ! ! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR ! ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! ! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ! ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! ! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ! ! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER ! ! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ! ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ! ! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! size 10 10 ! size of drawing area is 10 cm x 10 cm amove 0 0 aline 10 10 amove 1 1 ! move to position 1,1 in cm box 3 2 fill red ! draw a box that is 3cm by 2cm and fill it red ! note: the outline of the box is the current ! drawing color which is black by default set color blue ! sets drawing color to blue amove 4 4 ! moves to 4,4 in cm box 2 2 fill blue ! draws a box that is 2x2 cm filled in blue ! and outlined in blue set color black ! set color back to black set just cc ! set text justification to center center amove 5 7 ! move to (5,7)cm and draw some text set hei 1 set font texcmr text Hello World.